From d9f6366a90acd6d2e7942c85e99e190b2b8fb633 Mon Sep 17 00:00:00 2001 From: Ben Keen Date: Tue, 1 Oct 2019 20:58:57 -0700 Subject: [PATCH] auto publishing 3.0.17 --- LICENSE.txt | 280 + admin/account/index.php | 89 + admin/clients/add.php | 94 + admin/clients/edit.php | 63 + admin/clients/index.php | 89 + admin/clients/page_forms.php | 102 + admin/clients/page_main.php | 80 + admin/clients/page_settings.php | 74 + admin/forms/add/index.php | 65 + admin/forms/add/internal.php | 59 + admin/forms/add/step1.php | 58 + admin/forms/add/step2.php | 141 + admin/forms/add/step3.php | 127 + admin/forms/add/step4.php | 150 + admin/forms/add/step5.php | 130 + admin/forms/add/step6.php | 50 + admin/forms/delete_form.php | 83 + admin/forms/edit/index.php | 126 + admin/forms/edit/page_edit_email.php | 164 + admin/forms/edit/page_edit_view.php | 307 + admin/forms/edit/page_email_settings.php | 60 + admin/forms/edit/page_emails.php | 79 + admin/forms/edit/page_fields.php | 144 + admin/forms/edit/page_main.php | 114 + .../forms/edit/page_public_form_omit_list.php | 40 + .../forms/edit/page_public_view_omit_list.php | 43 + admin/forms/edit/page_views.php | 61 + admin/forms/edit_submission.php | 188 + admin/forms/index.php | 62 + admin/forms/option_lists/edit.php | 60 + admin/forms/option_lists/index.php | 104 + admin/forms/option_lists/page_form_fields.php | 35 + admin/forms/option_lists/page_main.php | 151 + admin/forms/submissions.php | 374 + admin/index.php | 5 + admin/modules/about.php | 32 + admin/modules/index.php | 121 + admin/redirect.php | 19 + admin/settings/index.php | 76 + admin/settings/page_accounts.php | 57 + admin/settings/page_edit_admin_menu.php | 47 + admin/settings/page_edit_client_menu.php | 85 + admin/settings/page_files.php | 49 + admin/settings/page_main.php | 52 + admin/settings/page_menus.php | 68 + admin/themes/about.php | 33 + admin/themes/index.php | 99 + cache/index.html | 1 + clients/account/index.php | 34 + clients/account/page_main.php | 73 + clients/account/page_settings.php | 70 + clients/forms/edit_submission.php | 206 + clients/forms/index.php | 381 + clients/index.php | 59 + error.php | 24 + forget_password.php | 52 + global/api/index.html | 1 + global/code/Accounts.class.php | 428 + global/code/Administrator.class.php | 724 ++ global/code/Clients.class.php | 643 ++ global/code/Constants.class.php | 9 + global/code/Core.class.php | 857 ++ global/code/CoreFieldTypes.class.php | 253 + global/code/Database.class.php | 255 + global/code/DatabaseSessions.class.php | 132 + global/code/Emails.class.php | 1708 +++ global/code/Errors.class.php | 158 + global/code/FieldOptions.class.php | 41 + global/code/FieldSettings.class.php | 56 + global/code/FieldSizes.class.php | 96 + global/code/FieldTypes.class.php | 1972 ++++ global/code/FieldValidation.class.php | 325 + global/code/Fields.class.php | 1553 +++ global/code/Files.class.php | 490 + global/code/Forms.class.php | 1948 ++++ global/code/General.class.php | 1491 +++ global/code/Hooks.class.php | 552 + global/code/Installation.class.php | 1373 +++ global/code/ListGroups.class.php | 91 + global/code/Menus.class.php | 1046 ++ global/code/Module.abstract.class.php | 274 + global/code/ModuleMenu.class.php | 130 + global/code/Modules.class.php | 923 ++ global/code/OmitLists.class.php | 96 + global/code/OptionLists.class.php | 782 ++ global/code/Pages.class.php | 216 + global/code/Schemas.class.php | 36 + global/code/SecureSmarty.class.php | 19 + global/code/Sessions.class.php | 169 + global/code/Settings.class.php | 543 + global/code/Submissions.class.php | 2077 ++++ global/code/Templates.class.php | 157 + global/code/Themes.class.php | 433 + global/code/Translations.class.php | 115 + global/code/Upgrade.class.php | 226 + global/code/User.class.php | 439 + global/code/ViewColumns.class.php | 113 + global/code/ViewFields.class.php | 521 + global/code/ViewFilters.class.php | 468 + global/code/ViewTabs.class.php | 126 + global/code/Views.class.php | 1295 +++ global/code/actions-react.php | 41 + global/code/actions.php | 513 + global/code/field_types/Checkbox.class.php | 172 + global/code/field_types/Code.class.php | 238 + global/code/field_types/Date.class.php | 385 + global/code/field_types/Dropdown.class.php | 111 + global/code/field_types/MultiSelect.class.php | 129 + global/code/field_types/Password.class.php | 68 + global/code/field_types/Phone.class.php | 116 + global/code/field_types/Radio.class.php | 157 + global/code/field_types/Textarea.class.php | 295 + global/code/field_types/Textbox.class.php | 219 + global/code/field_types/Time.class.php | 151 + global/code/index.php | 3 + global/code/polyfills.php | 167 + global/code/validation.php | 476 + global/codemirror/AUTHORS | 689 ++ global/codemirror/CHANGELOG.md | 1234 +++ global/codemirror/CONTRIBUTING.md | 92 + global/codemirror/LICENSE | 21 + global/codemirror/README.md | 35 + global/codemirror/addon/comment/comment.js | 213 + .../addon/comment/continuecomment.js | 83 + global/codemirror/addon/dialog/dialog.css | 32 + global/codemirror/addon/dialog/dialog.js | 157 + .../codemirror/addon/display/autorefresh.js | 47 + .../codemirror/addon/display/fullscreen.css | 6 + global/codemirror/addon/display/fullscreen.js | 41 + global/codemirror/addon/display/panel.js | 123 + .../codemirror/addon/display/placeholder.js | 62 + global/codemirror/addon/display/rulers.js | 51 + global/codemirror/addon/edit/closebrackets.js | 207 + global/codemirror/addon/edit/closetag.js | 169 + global/codemirror/addon/edit/continuelist.js | 51 + global/codemirror/addon/edit/matchbrackets.js | 140 + global/codemirror/addon/edit/matchtags.js | 66 + global/codemirror/addon/edit/trailingspace.js | 27 + global/codemirror/addon/fold/brace-fold.js | 105 + global/codemirror/addon/fold/comment-fold.js | 59 + global/codemirror/addon/fold/foldcode.js | 152 + global/codemirror/addon/fold/foldgutter.css | 20 + global/codemirror/addon/fold/foldgutter.js | 146 + global/codemirror/addon/fold/indent-fold.js | 48 + global/codemirror/addon/fold/markdown-fold.js | 49 + global/codemirror/addon/fold/xml-fold.js | 182 + global/codemirror/addon/hint/anyword-hint.js | 41 + global/codemirror/addon/hint/css-hint.js | 60 + global/codemirror/addon/hint/html-hint.js | 348 + .../codemirror/addon/hint/javascript-hint.js | 155 + global/codemirror/addon/hint/show-hint.css | 36 + global/codemirror/addon/hint/show-hint.js | 438 + global/codemirror/addon/hint/sql-hint.js | 284 + global/codemirror/addon/hint/xml-hint.js | 110 + .../addon/lint/coffeescript-lint.js | 47 + global/codemirror/addon/lint/css-lint.js | 40 + global/codemirror/addon/lint/html-lint.js | 53 + .../codemirror/addon/lint/javascript-lint.js | 141 + global/codemirror/addon/lint/json-lint.js | 37 + global/codemirror/addon/lint/lint.css | 73 + global/codemirror/addon/lint/lint.js | 252 + global/codemirror/addon/lint/yaml-lint.js | 41 + global/codemirror/addon/merge/merge.css | 113 + global/codemirror/addon/merge/merge.js | 998 ++ global/codemirror/addon/mode/loadmode.js | 64 + global/codemirror/addon/mode/multiplex.js | 123 + .../codemirror/addon/mode/multiplex_test.js | 33 + global/codemirror/addon/mode/overlay.js | 90 + global/codemirror/addon/mode/simple.js | 216 + global/codemirror/addon/runmode/colorize.js | 40 + .../addon/runmode/runmode-standalone.js | 158 + global/codemirror/addon/runmode/runmode.js | 72 + .../codemirror/addon/runmode/runmode.node.js | 185 + .../addon/scroll/annotatescrollbar.js | 122 + .../codemirror/addon/scroll/scrollpastend.js | 48 + .../addon/scroll/simplescrollbars.css | 66 + .../addon/scroll/simplescrollbars.js | 152 + .../codemirror/addon/search/jump-to-line.js | 49 + .../addon/search/match-highlighter.js | 165 + .../addon/search/matchesonscrollbar.css | 8 + .../addon/search/matchesonscrollbar.js | 97 + global/codemirror/addon/search/search.js | 252 + .../codemirror/addon/search/searchcursor.js | 289 + .../codemirror/addon/selection/active-line.js | 72 + .../addon/selection/mark-selection.js | 119 + .../addon/selection/selection-pointer.js | 98 + global/codemirror/addon/tern/tern.css | 87 + global/codemirror/addon/tern/tern.js | 717 ++ global/codemirror/addon/tern/worker.js | 44 + global/codemirror/addon/wrap/hardwrap.js | 144 + global/codemirror/bin/authors.sh | 6 + global/codemirror/bin/compress | 92 + global/codemirror/bin/lint | 3 + global/codemirror/bin/release | 38 + global/codemirror/bin/source-highlight | 48 + global/codemirror/bin/upload-release.js | 35 + global/codemirror/demo/activeline.html | 88 + global/codemirror/demo/anywordhint.html | 79 + global/codemirror/demo/bidi.html | 106 + global/codemirror/demo/btree.html | 83 + global/codemirror/demo/buffers.html | 109 + global/codemirror/demo/changemode.html | 58 + global/codemirror/demo/closebrackets.html | 52 + global/codemirror/demo/closetag.html | 41 + global/codemirror/demo/complete.html | 126 + global/codemirror/demo/emacs.html | 75 + global/codemirror/demo/folding.html | 133 + global/codemirror/demo/fullscreen.html | 83 + global/codemirror/demo/hardwrap.html | 75 + global/codemirror/demo/html5complete.html | 56 + global/codemirror/demo/indentwrap.html | 59 + global/codemirror/demo/lint.html | 171 + global/codemirror/demo/loadmode.html | 72 + global/codemirror/demo/marker.html | 52 + global/codemirror/demo/markselection.html | 52 + global/codemirror/demo/matchhighlighter.html | 103 + global/codemirror/demo/matchtags.html | 48 + global/codemirror/demo/merge.html | 123 + global/codemirror/demo/multiplex.html | 75 + global/codemirror/demo/mustache.html | 69 + global/codemirror/demo/panel.html | 136 + global/codemirror/demo/placeholder.html | 45 + global/codemirror/demo/preview.html | 87 + global/codemirror/demo/requirejs.html | 70 + global/codemirror/demo/resize.html | 51 + global/codemirror/demo/rulers.html | 49 + global/codemirror/demo/runmode.html | 62 + global/codemirror/demo/search.html | 99 + global/codemirror/demo/simplemode.html | 185 + global/codemirror/demo/simplescrollbars.html | 82 + .../demo/spanaffectswrapping_shim.html | 85 + global/codemirror/demo/sublime.html | 77 + global/codemirror/demo/tern.html | 133 + global/codemirror/demo/theme.html | 168 + global/codemirror/demo/trailingspace.html | 48 + global/codemirror/demo/variableheight.html | 67 + global/codemirror/demo/vim.html | 112 + global/codemirror/demo/visibletabs.html | 62 + global/codemirror/demo/widget.html | 85 + global/codemirror/demo/xmlcomplete.html | 119 + global/codemirror/doc/activebookmark.js | 57 + global/codemirror/doc/docs.css | 271 + global/codemirror/doc/internals.html | 504 + global/codemirror/doc/logo.png | Bin 0 -> 9310 bytes global/codemirror/doc/logo.svg | 19 + global/codemirror/doc/manual.html | 3521 ++++++ global/codemirror/doc/realworld.html | 196 + global/codemirror/doc/releases.html | 1534 +++ global/codemirror/doc/reporting.html | 60 + global/codemirror/doc/upgrade_v2.2.html | 96 + global/codemirror/doc/upgrade_v3.html | 230 + global/codemirror/doc/upgrade_v4.html | 144 + global/codemirror/doc/yinyang.png | Bin 0 -> 4633 bytes global/codemirror/index.html | 196 + global/codemirror/keymap/emacs.js | 416 + global/codemirror/keymap/sublime.js | 613 ++ global/codemirror/keymap/vim.js | 5154 +++++++++ global/codemirror/lib/codemirror.css | 341 + global/codemirror/lib/codemirror.js | 9622 +++++++++++++++++ global/codemirror/mode/apl/apl.js | 174 + global/codemirror/mode/apl/index.html | 72 + .../codemirror/mode/asciiarmor/asciiarmor.js | 74 + global/codemirror/mode/asciiarmor/index.html | 46 + global/codemirror/mode/asn.1/asn.1.js | 204 + global/codemirror/mode/asn.1/index.html | 77 + global/codemirror/mode/asterisk/asterisk.js | 196 + global/codemirror/mode/asterisk/index.html | 154 + global/codemirror/mode/brainfuck/brainfuck.js | 85 + global/codemirror/mode/brainfuck/index.html | 85 + global/codemirror/mode/clike/clike.js | 789 ++ global/codemirror/mode/clike/index.html | 360 + global/codemirror/mode/clike/scala.html | 767 ++ global/codemirror/mode/clike/test.js | 59 + global/codemirror/mode/clojure/clojure.js | 306 + global/codemirror/mode/clojure/index.html | 91 + global/codemirror/mode/cmake/cmake.js | 97 + global/codemirror/mode/cmake/index.html | 129 + global/codemirror/mode/cobol/cobol.js | 255 + global/codemirror/mode/cobol/index.html | 210 + .../mode/coffeescript/coffeescript.js | 359 + .../codemirror/mode/coffeescript/index.html | 740 ++ .../codemirror/mode/commonlisp/commonlisp.js | 124 + global/codemirror/mode/commonlisp/index.html | 177 + global/codemirror/mode/crystal/crystal.js | 433 + global/codemirror/mode/crystal/index.html | 116 + global/codemirror/mode/css/css.js | 831 ++ global/codemirror/mode/css/gss.html | 103 + global/codemirror/mode/css/gss_test.js | 17 + global/codemirror/mode/css/index.html | 75 + global/codemirror/mode/css/less.html | 152 + global/codemirror/mode/css/less_test.js | 54 + global/codemirror/mode/css/scss.html | 157 + global/codemirror/mode/css/scss_test.js | 110 + global/codemirror/mode/css/test.js | 206 + global/codemirror/mode/cypher/cypher.js | 150 + global/codemirror/mode/cypher/index.html | 63 + global/codemirror/mode/cypher/test.js | 37 + global/codemirror/mode/d/d.js | 218 + global/codemirror/mode/d/index.html | 273 + global/codemirror/mode/d/test.js | 11 + global/codemirror/mode/dart/dart.js | 157 + global/codemirror/mode/dart/index.html | 71 + global/codemirror/mode/diff/diff.js | 47 + global/codemirror/mode/diff/index.html | 117 + global/codemirror/mode/django/django.js | 356 + global/codemirror/mode/django/index.html | 73 + .../codemirror/mode/dockerfile/dockerfile.js | 79 + global/codemirror/mode/dockerfile/index.html | 73 + global/codemirror/mode/dtd/dtd.js | 142 + global/codemirror/mode/dtd/index.html | 89 + global/codemirror/mode/dylan/dylan.js | 352 + global/codemirror/mode/dylan/index.html | 407 + global/codemirror/mode/dylan/test.js | 88 + global/codemirror/mode/ebnf/ebnf.js | 195 + global/codemirror/mode/ebnf/index.html | 102 + global/codemirror/mode/ecl/ecl.js | 206 + global/codemirror/mode/ecl/index.html | 52 + global/codemirror/mode/eiffel/eiffel.js | 160 + global/codemirror/mode/eiffel/index.html | 429 + global/codemirror/mode/elm/elm.js | 205 + global/codemirror/mode/elm/index.html | 61 + global/codemirror/mode/erlang/erlang.js | 619 ++ global/codemirror/mode/erlang/index.html | 76 + global/codemirror/mode/factor/factor.js | 85 + global/codemirror/mode/factor/index.html | 77 + global/codemirror/mode/fcl/fcl.js | 173 + global/codemirror/mode/fcl/index.html | 108 + global/codemirror/mode/forth/forth.js | 180 + global/codemirror/mode/forth/index.html | 75 + global/codemirror/mode/fortran/fortran.js | 188 + global/codemirror/mode/fortran/index.html | 81 + global/codemirror/mode/gas/gas.js | 345 + global/codemirror/mode/gas/index.html | 68 + global/codemirror/mode/gfm/gfm.js | 129 + global/codemirror/mode/gfm/index.html | 136 + global/codemirror/mode/gfm/test.js | 198 + global/codemirror/mode/gherkin/gherkin.js | 178 + global/codemirror/mode/gherkin/index.html | 48 + global/codemirror/mode/go/go.js | 187 + global/codemirror/mode/go/index.html | 85 + global/codemirror/mode/groovy/groovy.js | 230 + global/codemirror/mode/groovy/index.html | 84 + global/codemirror/mode/haml/haml.js | 161 + global/codemirror/mode/haml/index.html | 79 + global/codemirror/mode/haml/test.js | 97 + .../codemirror/mode/handlebars/handlebars.js | 62 + global/codemirror/mode/handlebars/index.html | 79 + .../mode/haskell-literate/haskell-literate.js | 43 + .../mode/haskell-literate/index.html | 282 + global/codemirror/mode/haskell/haskell.js | 267 + global/codemirror/mode/haskell/index.html | 73 + global/codemirror/mode/haxe/haxe.js | 515 + global/codemirror/mode/haxe/index.html | 124 + .../mode/htmlembedded/htmlembedded.js | 28 + .../codemirror/mode/htmlembedded/index.html | 60 + global/codemirror/mode/htmlmixed/htmlmixed.js | 152 + global/codemirror/mode/htmlmixed/index.html | 100 + global/codemirror/mode/http/http.js | 113 + global/codemirror/mode/http/index.html | 45 + global/codemirror/mode/idl/idl.js | 290 + global/codemirror/mode/idl/index.html | 64 + global/codemirror/mode/index.html | 165 + global/codemirror/mode/javascript/index.html | 114 + .../codemirror/mode/javascript/javascript.js | 847 ++ .../codemirror/mode/javascript/json-ld.html | 72 + global/codemirror/mode/javascript/test.js | 404 + .../mode/javascript/typescript.html | 61 + global/codemirror/mode/jinja2/index.html | 54 + global/codemirror/mode/jinja2/jinja2.js | 142 + global/codemirror/mode/jsx/index.html | 89 + global/codemirror/mode/jsx/jsx.js | 148 + global/codemirror/mode/jsx/test.js | 88 + global/codemirror/mode/julia/index.html | 195 + global/codemirror/mode/julia/julia.js | 418 + global/codemirror/mode/livescript/index.html | 459 + .../codemirror/mode/livescript/livescript.js | 280 + global/codemirror/mode/lua/index.html | 85 + global/codemirror/mode/lua/lua.js | 159 + global/codemirror/mode/markdown/index.html | 405 + global/codemirror/mode/markdown/markdown.js | 859 ++ global/codemirror/mode/markdown/test.js | 1289 +++ global/codemirror/mode/mathematica/index.html | 72 + .../mode/mathematica/mathematica.js | 176 + global/codemirror/mode/mbox/index.html | 44 + global/codemirror/mode/mbox/mbox.js | 129 + global/codemirror/mode/meta.js | 216 + global/codemirror/mode/mirc/index.html | 160 + global/codemirror/mode/mirc/mirc.js | 193 + global/codemirror/mode/mllike/index.html | 179 + global/codemirror/mode/mllike/mllike.js | 208 + global/codemirror/mode/modelica/index.html | 67 + global/codemirror/mode/modelica/modelica.js | 245 + global/codemirror/mode/mscgen/index.html | 151 + global/codemirror/mode/mscgen/mscgen.js | 175 + global/codemirror/mode/mscgen/mscgen_test.js | 83 + global/codemirror/mode/mscgen/msgenny_test.js | 76 + global/codemirror/mode/mscgen/xu_test.js | 86 + global/codemirror/mode/mumps/index.html | 85 + global/codemirror/mode/mumps/mumps.js | 148 + global/codemirror/mode/nginx/index.html | 181 + global/codemirror/mode/nginx/nginx.js | 178 + global/codemirror/mode/nsis/index.html | 80 + global/codemirror/mode/nsis/nsis.js | 95 + global/codemirror/mode/ntriples/index.html | 70 + global/codemirror/mode/ntriples/ntriples.js | 195 + global/codemirror/mode/octave/index.html | 83 + global/codemirror/mode/octave/octave.js | 139 + global/codemirror/mode/oz/index.html | 59 + global/codemirror/mode/oz/oz.js | 252 + global/codemirror/mode/pascal/index.html | 61 + global/codemirror/mode/pascal/pascal.js | 109 + global/codemirror/mode/pegjs/index.html | 66 + global/codemirror/mode/pegjs/pegjs.js | 114 + global/codemirror/mode/perl/index.html | 75 + global/codemirror/mode/perl/perl.js | 837 ++ global/codemirror/mode/php/index.html | 64 + global/codemirror/mode/php/php.js | 234 + global/codemirror/mode/php/test.js | 154 + global/codemirror/mode/pig/index.html | 53 + global/codemirror/mode/pig/pig.js | 178 + global/codemirror/mode/powershell/index.html | 204 + .../codemirror/mode/powershell/powershell.js | 398 + global/codemirror/mode/powershell/test.js | 74 + global/codemirror/mode/properties/index.html | 53 + .../codemirror/mode/properties/properties.js | 78 + global/codemirror/mode/protobuf/index.html | 64 + global/codemirror/mode/protobuf/protobuf.js | 68 + global/codemirror/mode/pug/index.html | 70 + global/codemirror/mode/pug/pug.js | 591 + global/codemirror/mode/puppet/index.html | 121 + global/codemirror/mode/puppet/puppet.js | 220 + global/codemirror/mode/python/index.html | 198 + global/codemirror/mode/python/python.js | 334 + global/codemirror/mode/python/test.js | 35 + global/codemirror/mode/q/index.html | 144 + global/codemirror/mode/q/q.js | 139 + global/codemirror/mode/r/index.html | 88 + global/codemirror/mode/r/r.js | 183 + global/codemirror/mode/rpm/changes/index.html | 66 + global/codemirror/mode/rpm/index.html | 149 + global/codemirror/mode/rpm/rpm.js | 109 + global/codemirror/mode/rst/index.html | 535 + global/codemirror/mode/rst/rst.js | 557 + global/codemirror/mode/ruby/index.html | 183 + global/codemirror/mode/ruby/ruby.js | 296 + global/codemirror/mode/ruby/test.js | 16 + global/codemirror/mode/rust/index.html | 64 + global/codemirror/mode/rust/rust.js | 72 + global/codemirror/mode/rust/test.js | 39 + global/codemirror/mode/sas/index.html | 81 + global/codemirror/mode/sas/sas.js | 303 + global/codemirror/mode/sass/index.html | 68 + global/codemirror/mode/sass/sass.js | 454 + global/codemirror/mode/sass/test.js | 122 + global/codemirror/mode/scheme/index.html | 77 + global/codemirror/mode/scheme/scheme.js | 249 + global/codemirror/mode/shell/index.html | 66 + global/codemirror/mode/shell/shell.js | 142 + global/codemirror/mode/shell/test.js | 64 + global/codemirror/mode/sieve/index.html | 93 + global/codemirror/mode/sieve/sieve.js | 193 + global/codemirror/mode/slim/index.html | 96 + global/codemirror/mode/slim/slim.js | 575 + global/codemirror/mode/slim/test.js | 96 + global/codemirror/mode/smalltalk/index.html | 68 + global/codemirror/mode/smalltalk/smalltalk.js | 168 + global/codemirror/mode/smarty/index.html | 138 + global/codemirror/mode/smarty/smarty.js | 225 + global/codemirror/mode/solr/index.html | 57 + global/codemirror/mode/solr/solr.js | 104 + global/codemirror/mode/soy/index.html | 68 + global/codemirror/mode/soy/soy.js | 356 + global/codemirror/mode/soy/test.js | 114 + global/codemirror/mode/sparql/index.html | 61 + global/codemirror/mode/sparql/sparql.js | 180 + global/codemirror/mode/spreadsheet/index.html | 42 + .../mode/spreadsheet/spreadsheet.js | 112 + global/codemirror/mode/sql/index.html | 88 + global/codemirror/mode/sql/sql.js | 488 + global/codemirror/mode/stex/index.html | 110 + global/codemirror/mode/stex/stex.js | 251 + global/codemirror/mode/stex/test.js | 123 + global/codemirror/mode/stylus/index.html | 106 + global/codemirror/mode/stylus/stylus.js | 771 ++ global/codemirror/mode/swift/index.html | 88 + global/codemirror/mode/swift/swift.js | 210 + global/codemirror/mode/swift/test.js | 149 + global/codemirror/mode/tcl/index.html | 142 + global/codemirror/mode/tcl/tcl.js | 139 + global/codemirror/mode/textile/index.html | 191 + global/codemirror/mode/textile/test.js | 417 + global/codemirror/mode/textile/textile.js | 469 + global/codemirror/mode/tiddlywiki/index.html | 154 + .../codemirror/mode/tiddlywiki/tiddlywiki.css | 14 + .../codemirror/mode/tiddlywiki/tiddlywiki.js | 308 + global/codemirror/mode/tiki/index.html | 95 + global/codemirror/mode/tiki/tiki.css | 26 + global/codemirror/mode/tiki/tiki.js | 312 + global/codemirror/mode/toml/index.html | 73 + global/codemirror/mode/toml/toml.js | 88 + global/codemirror/mode/tornado/index.html | 63 + global/codemirror/mode/tornado/tornado.js | 68 + global/codemirror/mode/troff/index.html | 146 + global/codemirror/mode/troff/troff.js | 84 + global/codemirror/mode/ttcn-cfg/index.html | 115 + global/codemirror/mode/ttcn-cfg/ttcn-cfg.js | 214 + global/codemirror/mode/ttcn/index.html | 118 + global/codemirror/mode/ttcn/ttcn.js | 283 + global/codemirror/mode/turtle/index.html | 50 + global/codemirror/mode/turtle/turtle.js | 162 + global/codemirror/mode/twig/index.html | 45 + global/codemirror/mode/twig/twig.js | 141 + global/codemirror/mode/vb/index.html | 49 + global/codemirror/mode/vb/vb.js | 275 + global/codemirror/mode/vbscript/index.html | 55 + global/codemirror/mode/vbscript/vbscript.js | 350 + global/codemirror/mode/velocity/index.html | 120 + global/codemirror/mode/velocity/velocity.js | 201 + global/codemirror/mode/verilog/index.html | 120 + global/codemirror/mode/verilog/test.js | 273 + global/codemirror/mode/verilog/verilog.js | 675 ++ global/codemirror/mode/vhdl/index.html | 95 + global/codemirror/mode/vhdl/vhdl.js | 189 + global/codemirror/mode/vue/index.html | 69 + global/codemirror/mode/vue/vue.js | 77 + global/codemirror/mode/webidl/index.html | 71 + global/codemirror/mode/webidl/webidl.js | 195 + global/codemirror/mode/xml/index.html | 61 + global/codemirror/mode/xml/test.js | 51 + global/codemirror/mode/xml/xml.js | 394 + global/codemirror/mode/xquery/index.html | 210 + global/codemirror/mode/xquery/test.js | 67 + global/codemirror/mode/xquery/xquery.js | 448 + global/codemirror/mode/yacas/index.html | 87 + global/codemirror/mode/yacas/yacas.js | 204 + .../mode/yaml-frontmatter/index.html | 121 + .../mode/yaml-frontmatter/yaml-frontmatter.js | 68 + global/codemirror/mode/yaml/index.html | 80 + global/codemirror/mode/yaml/yaml.js | 118 + global/codemirror/mode/z80/index.html | 53 + global/codemirror/mode/z80/z80.js | 116 + global/codemirror/package.json | 49 + global/codemirror/rollup.config.js | 18 + global/codemirror/src/codemirror.js | 3 + global/codemirror/src/display/Display.js | 106 + global/codemirror/src/display/focus.js | 47 + global/codemirror/src/display/gutters.js | 34 + .../src/display/highlight_worker.js | 55 + global/codemirror/src/display/line_numbers.js | 48 + global/codemirror/src/display/mode_state.js | 22 + global/codemirror/src/display/operations.js | 205 + .../codemirror/src/display/scroll_events.js | 115 + global/codemirror/src/display/scrollbars.js | 192 + global/codemirror/src/display/scrolling.js | 184 + global/codemirror/src/display/selection.js | 156 + .../codemirror/src/display/update_display.js | 260 + global/codemirror/src/display/update_line.js | 188 + global/codemirror/src/display/update_lines.js | 62 + .../codemirror/src/display/view_tracking.js | 153 + global/codemirror/src/edit/CodeMirror.js | 214 + global/codemirror/src/edit/commands.js | 178 + .../src/edit/deleteNearSelection.js | 30 + global/codemirror/src/edit/drop_events.js | 119 + global/codemirror/src/edit/fromTextArea.js | 61 + global/codemirror/src/edit/global_events.js | 44 + global/codemirror/src/edit/key_events.js | 155 + global/codemirror/src/edit/legacy.js | 62 + global/codemirror/src/edit/main.js | 69 + global/codemirror/src/edit/methods.js | 539 + global/codemirror/src/edit/mouse_events.js | 407 + global/codemirror/src/edit/options.js | 190 + global/codemirror/src/edit/utils.js | 7 + .../src/input/ContentEditableInput.js | 517 + global/codemirror/src/input/TextareaInput.js | 350 + global/codemirror/src/input/indent.js | 71 + global/codemirror/src/input/input.js | 135 + global/codemirror/src/input/keymap.js | 145 + global/codemirror/src/input/keynames.js | 17 + global/codemirror/src/input/movement.js | 110 + global/codemirror/src/line/highlight.js | 270 + global/codemirror/src/line/line_data.js | 337 + global/codemirror/src/line/pos.js | 40 + .../codemirror/src/line/saw_special_spans.js | 10 + global/codemirror/src/line/spans.js | 372 + global/codemirror/src/line/utils_line.js | 85 + .../src/measurement/position_measurement.js | 699 ++ global/codemirror/src/measurement/widgets.js | 26 + global/codemirror/src/model/Doc.js | 432 + .../src/model/change_measurement.js | 61 + global/codemirror/src/model/changes.js | 330 + global/codemirror/src/model/chunk.js | 167 + global/codemirror/src/model/document_data.js | 111 + global/codemirror/src/model/history.js | 228 + global/codemirror/src/model/line_widget.js | 78 + global/codemirror/src/model/mark_text.js | 292 + global/codemirror/src/model/selection.js | 82 + .../codemirror/src/model/selection_updates.js | 208 + global/codemirror/src/modes.js | 96 + global/codemirror/src/util/StringStream.js | 86 + global/codemirror/src/util/bidi.js | 212 + global/codemirror/src/util/browser.js | 33 + global/codemirror/src/util/dom.js | 97 + global/codemirror/src/util/event.js | 103 + .../codemirror/src/util/feature_detection.js | 84 + global/codemirror/src/util/misc.js | 150 + global/codemirror/src/util/operation_group.js | 72 + global/codemirror/test/comment_test.js | 114 + .../codemirror/test/contenteditable_test.js | 110 + global/codemirror/test/doc_test.js | 371 + global/codemirror/test/driver.js | 142 + global/codemirror/test/emacs_test.js | 147 + global/codemirror/test/index.html | 269 + global/codemirror/test/lint.js | 20 + global/codemirror/test/mode_test.css | 23 + global/codemirror/test/mode_test.js | 193 + global/codemirror/test/multi_test.js | 285 + global/codemirror/test/phantom_driver.js | 31 + global/codemirror/test/run.js | 31 + global/codemirror/test/scroll_test.js | 126 + global/codemirror/test/search_test.js | 85 + global/codemirror/test/sql-hint-test.js | 238 + global/codemirror/test/sublime_test.js | 307 + global/codemirror/test/test.js | 2527 +++++ global/codemirror/test/vim_test.js | 4215 ++++++++ global/codemirror/theme/3024-day.css | 41 + global/codemirror/theme/3024-night.css | 39 + global/codemirror/theme/abcdef.css | 32 + global/codemirror/theme/ambiance-mobile.css | 5 + global/codemirror/theme/ambiance.css | 74 + global/codemirror/theme/base16-dark.css | 38 + global/codemirror/theme/base16-light.css | 38 + global/codemirror/theme/bespin.css | 34 + global/codemirror/theme/blackboard.css | 32 + global/codemirror/theme/cobalt.css | 25 + global/codemirror/theme/colorforth.css | 33 + global/codemirror/theme/dracula.css | 40 + global/codemirror/theme/duotone-dark.css | 35 + global/codemirror/theme/duotone-light.css | 36 + global/codemirror/theme/eclipse.css | 23 + global/codemirror/theme/elegant.css | 13 + global/codemirror/theme/erlang-dark.css | 34 + global/codemirror/theme/hopscotch.css | 34 + global/codemirror/theme/icecoder.css | 43 + global/codemirror/theme/isotope.css | 34 + global/codemirror/theme/lesser-dark.css | 47 + global/codemirror/theme/liquibyte.css | 95 + global/codemirror/theme/material.css | 53 + global/codemirror/theme/mbo.css | 37 + global/codemirror/theme/mdn-like.css | 46 + global/codemirror/theme/midnight.css | 43 + global/codemirror/theme/monokai.css | 36 + global/codemirror/theme/neat.css | 12 + global/codemirror/theme/neo.css | 43 + global/codemirror/theme/night.css | 27 + global/codemirror/theme/panda-syntax.css | 85 + global/codemirror/theme/paraiso-dark.css | 38 + global/codemirror/theme/paraiso-light.css | 38 + global/codemirror/theme/pastel-on-dark.css | 52 + global/codemirror/theme/railscasts.css | 34 + global/codemirror/theme/rubyblue.css | 25 + global/codemirror/theme/seti.css | 44 + global/codemirror/theme/solarized.css | 169 + global/codemirror/theme/the-matrix.css | 30 + .../theme/tomorrow-night-bright.css | 35 + .../theme/tomorrow-night-eighties.css | 38 + global/codemirror/theme/ttcn.css | 64 + global/codemirror/theme/twilight.css | 32 + global/codemirror/theme/vibrant-ink.css | 34 + global/codemirror/theme/xq-dark.css | 53 + global/codemirror/theme/xq-light.css | 43 + global/codemirror/theme/yeti.css | 44 + global/codemirror/theme/zenburn.css | 37 + global/css/field_types.php | 13 + global/css/main.css | 295 + global/css/ui.daterangepicker.css | 123 + global/emails/forget_password.tpl | 20 + global/emails/forget_password_subject.tpl | 1 + global/emails/installed.tpl | 20 + global/emails/installed_subject.tpl | 1 + global/emails/patterns/html_admin.tpl | 42 + global/emails/patterns/html_admin_loop.tpl | 25 + .../patterns/html_admin_loop_omit_empty.tpl | 25 + .../patterns/html_admin_notification.tpl | 7 + .../emails/patterns/html_admin_omit_empty.tpl | 44 + .../patterns/html_programming_example.tpl | 59 + global/emails/patterns/html_user.tpl | 40 + global/emails/patterns/html_user_loop.tpl | 25 + .../patterns/html_user_loop_omit_empty.tpl | 25 + .../patterns/html_user_notification.tpl | 7 + .../emails/patterns/html_user_omit_empty.tpl | 44 + global/emails/patterns/index.php | 4 + global/emails/patterns/patterns.ini | 100 + global/emails/patterns/text_admin.tpl | 19 + global/emails/patterns/text_admin_loop.tpl | 12 + .../patterns/text_admin_loop_omit_empty.tpl | 12 + .../patterns/text_admin_notification.tpl | 3 + .../emails/patterns/text_admin_omit_empty.tpl | 21 + .../patterns/text_programming_example.tpl | 24 + global/emails/patterns/text_user.tpl | 20 + global/emails/patterns/text_user_loop.tpl | 12 + .../patterns/text_user_loop_omit_empty.tpl | 11 + .../patterns/text_user_notification.tpl | 3 + .../emails/patterns/text_user_omit_empty.tpl | 21 + global/fancybox/blank.gif | Bin 0 -> 43 bytes global/fancybox/fancy_close.png | Bin 0 -> 1517 bytes global/fancybox/fancy_loading.png | Bin 0 -> 10195 bytes global/fancybox/fancy_nav_left.png | Bin 0 -> 1446 bytes global/fancybox/fancy_nav_right.png | Bin 0 -> 1454 bytes global/fancybox/fancy_shadow_e.png | Bin 0 -> 107 bytes global/fancybox/fancy_shadow_n.png | Bin 0 -> 106 bytes global/fancybox/fancy_shadow_ne.png | Bin 0 -> 347 bytes global/fancybox/fancy_shadow_nw.png | Bin 0 -> 324 bytes global/fancybox/fancy_shadow_s.png | Bin 0 -> 111 bytes global/fancybox/fancy_shadow_se.png | Bin 0 -> 352 bytes global/fancybox/fancy_shadow_sw.png | Bin 0 -> 340 bytes global/fancybox/fancy_shadow_w.png | Bin 0 -> 103 bytes global/fancybox/fancy_title_left.png | Bin 0 -> 503 bytes global/fancybox/fancy_title_main.png | Bin 0 -> 96 bytes global/fancybox/fancy_title_over.png | Bin 0 -> 70 bytes global/fancybox/fancy_title_right.png | Bin 0 -> 506 bytes global/fancybox/fancybox-x.png | Bin 0 -> 203 bytes global/fancybox/fancybox-y.png | Bin 0 -> 176 bytes global/fancybox/fancybox.png | Bin 0 -> 15287 bytes global/fancybox/jquery.easing-1.3.pack.js | 72 + global/fancybox/jquery.fancybox-1.3.4.css | 359 + global/fancybox/jquery.fancybox-1.3.4.pack.js | 46 + .../fancybox/jquery.mousewheel-3.0.4.pack.js | 14 + global/images/alert.png | Bin 0 -> 4117 bytes global/images/calendar.png | Bin 0 -> 404 bytes global/images/clock.png | Bin 0 -> 1730 bytes global/images/error.png | Bin 0 -> 5655 bytes global/images/group_block.png | Bin 0 -> 1131 bytes global/images/group_block_connect.png | Bin 0 -> 131 bytes global/images/group_block_disconnect.png | Bin 0 -> 2814 bytes global/images/index.php | 4 + global/images/info.png | Bin 0 -> 4682 bytes global/images/info_small.png | Bin 0 -> 1829 bytes global/images/lang_placeholder_field_icon.gif | Bin 0 -> 402 bytes global/images/lang_placeholder_field_icon.png | Bin 0 -> 1625 bytes global/images/loading.gif | Bin 0 -> 2767 bytes global/images/loading_small.gif | Bin 0 -> 1849 bytes global/images/open_new_window.png | Bin 0 -> 1142 bytes global/index.php | 3 + global/lang/README.md | 70 + global/lang/af.php | 1219 +++ global/lang/ar.php | 1219 +++ global/lang/az.php | 1219 +++ global/lang/be.php | 1219 +++ global/lang/bg.php | 1219 +++ global/lang/ca.php | 1219 +++ global/lang/cs.php | 1219 +++ global/lang/cy.php | 1219 +++ global/lang/da.php | 1219 +++ global/lang/de.php | 1219 +++ global/lang/el.php | 1219 +++ global/lang/en_us.php | 1219 +++ global/lang/es.php | 1219 +++ global/lang/et.php | 1219 +++ global/lang/fa.php | 1219 +++ global/lang/fi.php | 1219 +++ global/lang/fr.php | 1219 +++ global/lang/ga.php | 1219 +++ global/lang/gl.php | 1219 +++ global/lang/hi.php | 1219 +++ global/lang/hr.php | 1219 +++ global/lang/hu.php | 1219 +++ global/lang/id.php | 1219 +++ global/lang/index.html | 1 + global/lang/is.php | 1219 +++ global/lang/it.php | 1219 +++ global/lang/ja.php | 1219 +++ global/lang/ko.php | 1219 +++ global/lang/la.php | 1219 +++ global/lang/lt.php | 1219 +++ global/lang/manifest.json | 57 + global/lang/mk.php | 1219 +++ global/lang/ms.php | 1219 +++ global/lang/mt.php | 1219 +++ global/lang/nl.php | 1219 +++ global/lang/no.php | 1219 +++ global/lang/pl.php | 1219 +++ global/lang/pt.php | 1219 +++ global/lang/pt_br.php | 1219 +++ global/lang/pt_eu.php | 1219 +++ global/lang/ro.php | 1219 +++ global/lang/ru.php | 1219 +++ global/lang/sk.php | 1219 +++ global/lang/sl.php | 1219 +++ global/lang/sr.php | 1219 +++ global/lang/sv.php | 1219 +++ global/lang/sw.php | 1219 +++ global/lang/th.php | 1219 +++ global/lang/tl.php | 1219 +++ global/lang/tr.php | 1219 +++ global/lang/uk.php | 1219 +++ global/lang/vi.php | 1219 +++ global/lang/yi.php | 1219 +++ global/lang/zh_cn.php | 1219 +++ global/lang/zh_tw.php | 1219 +++ global/library.php | 65 + global/misc/config_core.php | 3318 ++++++ global/misc/index.php | 6 + global/scripts/daterangepicker.jquery.js | 734 ++ global/scripts/external_form_smart_fill.js | 1299 +++ global/scripts/field_types.php | 13 + global/scripts/general.js | 1006 ++ global/scripts/index.html | 5 + global/scripts/jquery-ui-timepicker-addon.js | 911 ++ global/scripts/jquery.js | 16 + global/scripts/manage_client_forms.js | 173 + global/scripts/manage_email_templates.js | 505 + global/scripts/manage_fields.js | 1929 ++++ global/scripts/manage_fields.min.js | 1 + global/scripts/manage_forms.js | 73 + global/scripts/manage_menus.js | 155 + global/scripts/manage_modules.js | 37 + global/scripts/manage_option_lists.js | 461 + global/scripts/manage_submissions.js | 619 ++ global/scripts/manage_views.js | 1103 ++ global/scripts/rsv.js | 796 ++ global/scripts/sortable.js | 646 ++ global/smarty_plugins/eval.tpl | 1 + .../function.clients_dropdown.php | 115 + global/smarty_plugins/function.css_files.php | 10 + .../function.display_account_name.php | 35 + .../function.display_custom_field.php | 24 + ....display_edit_submission_view_dropdown.php | 56 + ...nction.display_email_template_dropdown.php | 51 + .../function.display_field_type_name.php | 25 + ...n.display_field_type_settings_dropdown.php | 42 + .../function.display_field_types_dropdown.php | 60 + .../function.display_file_field.php | 45 + .../smarty_plugins/function.display_files.php | 39 + .../function.display_form_name.php | 24 + ...tion.display_multi_select_field_values.php | 46 + .../function.display_num_form_submissions.php | 14 + .../function.display_option_list.php | 127 + .../function.display_view_name.php | 23 + global/smarty_plugins/function.dropdown.php | 43 + .../function.edit_custom_field.php | 116 + .../function.edit_phone_field.php | 32 + .../function.email_patterns_dropdown.php | 68 + .../function.eval_smarty_string.php | 32 + .../function.field_sizes_dropdown.php | 76 + .../function.form_fields_dropdown.php | 64 + .../function.form_view_fields_dropdown.php | 87 + .../function.forms_dropdown.php | 115 + global/smarty_plugins/function.ft_include.php | 32 + global/smarty_plugins/function.js_files.php | 10 + .../function.languages_dropdown.php | 54 + .../function.menus_dropdown.php | 55 + .../function.module_function.php | 24 + .../function.option_list_dropdown.php | 58 + .../function.pages_dropdown.php | 53 + .../function.show_page_load_time.php | 15 + .../function.submission_dropdown.php | 47 + .../function.submission_dropdown_multiple.php | 48 + ...function.submission_listing_quicklinks.php | 16 + .../smarty_plugins/function.template_hook.php | 23 + .../function.themes_dropdown.php | 96 + .../function.timezone_offset_dropdown.php | 85 + .../smarty_plugins/function.view_fields.php | 56 + .../function.view_phone_field.php | 29 + .../function.views_dropdown.php | 115 + .../modifier.custom_format_date.php | 19 + .../modifier.hook_call_defined.php | 16 + global/svg/github.svg | 1 + index.php | 71 + install/actions-installation.php | 281 + install/index.php | 33 + modules/index.html | 1 + process.php | 52 + react/main.bundle.js | 96 + react/main.bundle.js.map | 1 + themes/default/about/screenshot.gif | Bin 0 -> 54199 bytes themes/default/about/theme.php | 33 + themes/default/about/thumbnail.gif | Bin 0 -> 9751 bytes themes/default/admin/account/index.tpl | 90 + themes/default/admin/clients/add.tpl | 72 + themes/default/admin/clients/edit.tpl | 35 + themes/default/admin/clients/index.tpl | 227 + themes/default/admin/clients/tab_forms.tpl | 102 + themes/default/admin/clients/tab_main.tpl | 100 + themes/default/admin/clients/tab_settings.tpl | 165 + themes/default/admin/forms/add/index.tpl | 71 + themes/default/admin/forms/add/internal.tpl | 98 + themes/default/admin/forms/add/step1.tpl | 88 + themes/default/admin/forms/add/step2.tpl | 230 + themes/default/admin/forms/add/step3.tpl | 126 + themes/default/admin/forms/add/step4.tpl | 116 + themes/default/admin/forms/add/step5.tpl | 343 + themes/default/admin/forms/add/step6.tpl | 74 + themes/default/admin/forms/delete_form.tpl | 49 + themes/default/admin/forms/edit/index.tpl | 57 + .../admin/forms/edit/tab_edit_email.tpl | 44 + .../admin/forms/edit/tab_edit_email_tab1.tpl | 172 + .../admin/forms/edit/tab_edit_email_tab2.tpl | 255 + .../admin/forms/edit/tab_edit_email_tab3.tpl | 58 + .../admin/forms/edit/tab_edit_email_tab4.tpl | 62 + .../admin/forms/edit/tab_edit_view.tpl | 45 + .../forms/edit/tab_edit_view__fields.tpl | 187 + .../forms/edit/tab_edit_view__filters.tpl | 186 + .../forms/edit/tab_edit_view__list_page.tpl | 91 + .../admin/forms/edit/tab_edit_view__main.tpl | 213 + .../admin/forms/edit/tab_edit_view__tabs.tpl | 38 + .../admin/forms/edit/tab_email_settings.tpl | 55 + .../default/admin/forms/edit/tab_emails.tpl | 100 + .../default/admin/forms/edit/tab_fields.tpl | 378 + themes/default/admin/forms/edit/tab_main.tpl | 245 + .../forms/edit/tab_public_form_omit_list.tpl | 46 + .../forms/edit/tab_public_view_omit_list.tpl | 48 + themes/default/admin/forms/edit/tab_views.tpl | 232 + .../default/admin/forms/edit_submission.tpl | 159 + .../default/admin/forms/form_placeholders.tpl | 98 + themes/default/admin/forms/index.tpl | 293 + .../default/admin/forms/option_lists/edit.tpl | 24 + .../admin/forms/option_lists/index.tpl | 118 + .../forms/option_lists/tab_form_fields.tpl | 48 + .../admin/forms/option_lists/tab_main.tpl | 270 + themes/default/admin/forms/submissions.tpl | 203 + themes/default/admin/index.html | 7 + themes/default/admin/modules/about.tpl | 46 + themes/default/admin/modules/index.tpl | 195 + themes/default/admin/settings/index.tpl | 32 + .../default/admin/settings/tab_accounts.tpl | 164 + .../admin/settings/tab_edit_admin_menu.tpl | 116 + .../admin/settings/tab_edit_client_menu.tpl | 108 + themes/default/admin/settings/tab_files.tpl | 183 + themes/default/admin/settings/tab_main.tpl | 102 + themes/default/admin/settings/tab_menus.tpl | 73 + themes/default/admin/themes/about.tpl | 63 + themes/default/admin/themes/index.tpl | 81 + themes/default/clients/account/index.tpl | 22 + themes/default/clients/account/tab_main.tpl | 70 + .../default/clients/account/tab_settings.tpl | 112 + .../default/clients/forms/edit_submission.tpl | 154 + themes/default/clients/forms/index.tpl | 211 + themes/default/clients/index.tpl | 110 + themes/default/css/index.html | 6 + .../images/ui-bg_flat_0_000000_40x100.png | Bin 0 -> 942 bytes .../images/ui-bg_flat_0_444444_40x100.png | Bin 0 -> 980 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../css/smoothness/jquery-ui-1.8.6.custom.css | 481 + themes/default/css/smoothness/jquery-ui.css | 481 + themes/default/css/styles.css | 1 + themes/default/css/swatch_aquamarine.css | 1 + themes/default/css/swatch_blue.css | 1 + themes/default/css/swatch_dark_blue.css | 1 + themes/default/css/swatch_green.css | 1 + themes/default/css/swatch_grey.css | 1 + themes/default/css/swatch_light_brown.css | 1 + themes/default/css/swatch_orange.css | 1 + themes/default/css/swatch_purple.css | 1 + themes/default/css/swatch_red.css | 1 + themes/default/css/swatch_yellow.css | 1 + themes/default/error.tpl | 97 + themes/default/footer.tpl | 18 + themes/default/forget_password.tpl | 38 + themes/default/header.tpl | 71 + .../account_section_left_aquamarine2x.png | Bin 0 -> 1317 bytes .../images/account_section_left_blue2x.png | Bin 0 -> 1308 bytes .../account_section_left_dark_blue2x.png | Bin 0 -> 1322 bytes .../images/account_section_left_green2x.png | Bin 0 -> 1343 bytes .../images/account_section_left_grey2x.png | Bin 0 -> 1316 bytes .../account_section_left_light_brown2x.png | Bin 0 -> 1272 bytes .../images/account_section_left_orange2x.png | Bin 0 -> 1329 bytes .../images/account_section_left_purple2x.png | Bin 0 -> 1316 bytes .../images/account_section_left_red2x.png | Bin 0 -> 1325 bytes .../images/account_section_left_yellow2x.png | Bin 0 -> 1317 bytes .../account_section_right_aquamarine2x.png | Bin 0 -> 1277 bytes .../images/account_section_right_blue2x.png | Bin 0 -> 1269 bytes .../account_section_right_dark_blue2x.png | Bin 0 -> 1321 bytes .../images/account_section_right_green2x.png | Bin 0 -> 1276 bytes .../images/account_section_right_grey2x.png | Bin 0 -> 1298 bytes .../account_section_right_light_brown2x.png | Bin 0 -> 1261 bytes .../images/account_section_right_orange2x.png | Bin 0 -> 1325 bytes .../images/account_section_right_purple2x.png | Bin 0 -> 1274 bytes .../images/account_section_right_red2x.png | Bin 0 -> 1304 bytes .../images/account_section_right_yellow2x.png | Bin 0 -> 1319 bytes themes/default/images/admin_edit.png | Bin 0 -> 2349 bytes themes/default/images/admin_view.png | Bin 0 -> 2210 bytes themes/default/images/ajax_activity.gif | Bin 0 -> 3208 bytes themes/default/images/ajax_activity_grey.gif | Bin 0 -> 3208 bytes .../images/ajax_activity_light_grey.gif | Bin 0 -> 3208 bytes .../default/images/ajax_activity_yellow.gif | Bin 0 -> 3208 bytes themes/default/images/ajax_no_activity.gif | Bin 0 -> 248 bytes .../default/images/ajax_no_activity_grey.gif | Bin 0 -> 246 bytes .../images/ajax_no_activity_light_grey.gif | Bin 0 -> 1301 bytes .../images/ajax_no_activity_yellow.gif | Bin 0 -> 246 bytes themes/default/images/columns.png | Bin 0 -> 3298 bytes themes/default/images/delete.png | Bin 0 -> 4242 bytes themes/default/images/delete_bg.jpg | Bin 0 -> 21780 bytes themes/default/images/delete_group.png | Bin 0 -> 1694 bytes themes/default/images/edit.png | Bin 0 -> 1569 bytes themes/default/images/edit_form.png | Bin 0 -> 1850 bytes themes/default/images/edit_small.gif | Bin 0 -> 1142 bytes themes/default/images/favicon.ico | Bin 0 -> 5430 bytes themes/default/images/fields.png | Bin 0 -> 3287 bytes themes/default/images/fields_table_bg.png | Bin 0 -> 1017 bytes themes/default/images/filter.png | Bin 0 -> 3615 bytes themes/default/images/icon_accounts.gif | Bin 0 -> 1513 bytes themes/default/images/icon_forms.gif | Bin 0 -> 1765 bytes themes/default/images/icon_login.gif | Bin 0 -> 1599 bytes themes/default/images/icon_modules.gif | Bin 0 -> 1631 bytes themes/default/images/icon_option_lists.gif | Bin 0 -> 1471 bytes themes/default/images/icon_settings.gif | Bin 0 -> 1447 bytes themes/default/images/icon_themes.gif | Bin 0 -> 2736 bytes themes/default/images/index.php | 7 + themes/default/images/left_bg.jpg | Bin 0 -> 22024 bytes themes/default/images/left_nav_bg.jpg | Bin 0 -> 22833 bytes themes/default/images/list_table_heading.jpg | Bin 0 -> 21780 bytes .../images/list_table_heading_over.jpg | Bin 0 -> 1201 bytes themes/default/images/login.png | Bin 0 -> 3963 bytes themes/default/images/logo_aquamarine2x.png | Bin 0 -> 11720 bytes themes/default/images/logo_blue2x.png | Bin 0 -> 12873 bytes themes/default/images/logo_dark_blue2x.png | Bin 0 -> 12812 bytes themes/default/images/logo_green2x.png | Bin 0 -> 12034 bytes themes/default/images/logo_grey2x.png | Bin 0 -> 15972 bytes themes/default/images/logo_light_brown2x.png | Bin 0 -> 11675 bytes themes/default/images/logo_orange2x.png | Bin 0 -> 11824 bytes themes/default/images/logo_purple2x.png | Bin 0 -> 12273 bytes themes/default/images/logo_red2x.png | Bin 0 -> 12853 bytes themes/default/images/logo_yellow2x.png | Bin 0 -> 11820 bytes themes/default/images/main_bg.jpg | Bin 0 -> 22123 bytes themes/default/images/nav_down.jpg | Bin 0 -> 21256 bytes themes/default/images/nav_row_bg.jpg | Bin 0 -> 21849 bytes themes/default/images/page_content_bg.jpg | Bin 0 -> 22400 bytes themes/default/images/placeholders.png | Bin 0 -> 1655 bytes themes/default/images/popup_bg.jpg | Bin 0 -> 21989 bytes .../default/images/popup_header_bg_green.png | Bin 0 -> 994 bytes .../default/images/popup_header_bg_grey.png | Bin 0 -> 952 bytes themes/default/images/sort.png | Bin 0 -> 1076 bytes themes/default/images/sort_down.gif | Bin 0 -> 158 bytes themes/default/images/sort_up.gif | Bin 0 -> 158 bytes themes/default/images/submenu_item.gif | Bin 0 -> 52 bytes themes/default/images/tab_not_selected_bg.gif | Bin 0 -> 65 bytes themes/default/images/tabs.png | Bin 0 -> 544 bytes themes/default/images/top_banner_bg.jpg | Bin 0 -> 22290 bytes .../default/images/top_row_aquamarine2x.png | Bin 0 -> 1198 bytes themes/default/images/top_row_blue2x.png | Bin 0 -> 1195 bytes themes/default/images/top_row_dark_blue2x.png | Bin 0 -> 1181 bytes themes/default/images/top_row_green2x.png | Bin 0 -> 1180 bytes themes/default/images/top_row_grey2x.png | Bin 0 -> 1168 bytes .../default/images/top_row_light_brown2x.png | Bin 0 -> 1157 bytes themes/default/images/top_row_orange2x.png | Bin 0 -> 1154 bytes themes/default/images/top_row_purple2x.png | Bin 0 -> 1175 bytes themes/default/images/top_row_red2x.png | Bin 0 -> 1187 bytes themes/default/images/top_row_yellow2x.png | Bin 0 -> 1149 bytes themes/default/images/up.jpg | Bin 0 -> 22387 bytes themes/default/images/up_down.png | Bin 0 -> 230 bytes themes/default/images/utilities.png | Bin 0 -> 1456 bytes themes/default/images/utilities_small.png | Bin 0 -> 919 bytes themes/default/images/view.png | Bin 0 -> 1669 bytes themes/default/index.tpl | 58 + themes/default/js_pagination.tpl | 54 + themes/default/menu.tpl | 33 + themes/default/messages.tpl | 54 + themes/default/module_menu.tpl | 16 + themes/default/modules_footer.tpl | 17 + themes/default/modules_header.tpl | 91 + themes/default/pagination.tpl | 54 + .../scripts/jquery-ui-1.8.6.custom.min.js | 608 ++ themes/default/scripts/jquery-ui.js | 608 ++ themes/default/tabset_close.tpl | 1 + themes/default/tabset_open.tpl | 35 + themes/index.html | 1 + upload/index.html | 0 vendor/autoload.php | 7 + vendor/bin/validate-json | 251 + vendor/composer/ClassLoader.php | 441 + vendor/composer/LICENSE | 21 + vendor/composer/autoload_classmap.php | 9 + vendor/composer/autoload_files.php | 11 + vendor/composer/autoload_namespaces.php | 9 + vendor/composer/autoload_psr4.php | 10 + vendor/composer/autoload_real.php | 70 + vendor/composer/autoload_static.php | 36 + vendor/composer/installed.json | 172 + vendor/justinrainbow/json-schema/LICENSE | 21 + vendor/justinrainbow/json-schema/README.md | 206 + .../json-schema/bin/validate-json | 251 + .../justinrainbow/json-schema/composer.json | 65 + .../justinrainbow/json-schema/demo/README.md | 14 + .../justinrainbow/json-schema/demo/data.json | 3 + .../justinrainbow/json-schema/demo/demo.php | 18 + .../json-schema/demo/schema.json | 3 + .../dist/schema/json-schema-draft-03.json | 174 + .../dist/schema/json-schema-draft-04.json | 150 + .../json-schema/phpunit.xml.dist | 26 + .../JsonSchema/Constraints/BaseConstraint.php | 148 + .../Constraints/CollectionConstraint.php | 147 + .../src/JsonSchema/Constraints/Constraint.php | 216 + .../Constraints/ConstraintInterface.php | 65 + .../JsonSchema/Constraints/EnumConstraint.php | 54 + .../src/JsonSchema/Constraints/Factory.php | 222 + .../Constraints/FormatConstraint.php | 214 + .../Constraints/NumberConstraint.php | 86 + .../Constraints/ObjectConstraint.php | 192 + .../Constraints/SchemaConstraint.php | 95 + .../Constraints/StringConstraint.php | 60 + .../Constraints/TypeCheck/LooseTypeCheck.php | 68 + .../Constraints/TypeCheck/StrictTypeCheck.php | 36 + .../TypeCheck/TypeCheckInterface.php | 18 + .../JsonSchema/Constraints/TypeConstraint.php | 261 + .../Constraints/UndefinedConstraint.php | 411 + .../src/JsonSchema/Entity/JsonPointer.php | 161 + .../Exception/ExceptionInterface.php | 7 + .../Exception/InvalidArgumentException.php | 17 + .../Exception/InvalidConfigException.php | 17 + .../Exception/InvalidSchemaException.php | 17 + .../InvalidSchemaMediaTypeException.php | 17 + .../Exception/InvalidSourceUriException.php | 17 + .../Exception/JsonDecodingException.php | 40 + .../Exception/ResourceNotFoundException.php | 17 + .../JsonSchema/Exception/RuntimeException.php | 17 + .../UnresolvableJsonPointerException.php | 19 + .../Exception/UriResolverException.php | 17 + .../Exception/ValidationException.php | 14 + .../JsonSchema/Iterator/ObjectIterator.php | 149 + .../json-schema/src/JsonSchema/Rfc3339.php | 30 + .../src/JsonSchema/SchemaStorage.php | 169 + .../src/JsonSchema/SchemaStorageInterface.php | 41 + .../Uri/Retrievers/AbstractRetriever.php | 34 + .../src/JsonSchema/Uri/Retrievers/Curl.php | 83 + .../Uri/Retrievers/FileGetContents.php | 93 + .../Uri/Retrievers/PredefinedArray.php | 56 + .../Uri/Retrievers/UriRetrieverInterface.php | 36 + .../src/JsonSchema/Uri/UriResolver.php | 175 + .../src/JsonSchema/Uri/UriRetriever.php | 330 + .../src/JsonSchema/UriResolverInterface.php | 26 + .../src/JsonSchema/UriRetrieverInterface.php | 26 + .../json-schema/src/JsonSchema/Validator.php | 92 + vendor/ramsey/array_column/CHANGELOG.md | 37 + vendor/ramsey/array_column/LICENSE | 19 + vendor/ramsey/array_column/README.md | 91 + vendor/ramsey/array_column/composer.json | 27 + vendor/ramsey/array_column/phpunit.xml.dist | 21 + .../ramsey/array_column/src/array_column.php | 115 + .../array_column/tests/ArrayColumnTest.php | 422 + .../ramsey/array_column/tests/bootstrap.php | 5 + .../smarty/smarty/COMPOSER_RELEASE_NOTES.txt | 29 + .../smarty/INHERITANCE_RELEASE_NOTES.txt | 87 + vendor/smarty/smarty/LICENSE | 179 + vendor/smarty/smarty/NEW_FEATURES.txt | 239 + vendor/smarty/smarty/README | 575 + vendor/smarty/smarty/README.md | 65 + vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt | 109 + vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt | 24 + vendor/smarty/smarty/SMARTY_3.1_NOTES.txt | 306 + vendor/smarty/smarty/change_log.txt | 3201 ++++++ vendor/smarty/smarty/demo/configs/test.conf | 5 + vendor/smarty/smarty/demo/index.php | 30 + .../smarty/demo/plugins/cacheresource.apc.php | 83 + .../demo/plugins/cacheresource.memcache.php | 101 + .../demo/plugins/cacheresource.mysql.php | 160 + .../smarty/demo/plugins/cacheresource.pdo.php | 327 + .../demo/plugins/cacheresource.pdo_gzip.php | 43 + .../demo/plugins/resource.extendsall.php | 65 + .../smarty/demo/plugins/resource.mysql.php | 83 + .../smarty/demo/plugins/resource.mysqls.php | 63 + .../smarty/smarty/demo/templates/footer.tpl | 2 + .../smarty/smarty/demo/templates/header.tpl | 5 + vendor/smarty/smarty/demo/templates/index.tpl | 87 + vendor/smarty/smarty/libs/Autoloader.php | 110 + vendor/smarty/smarty/libs/Smarty.class.php | 1549 +++ vendor/smarty/smarty/libs/SmartyBC.class.php | 455 + vendor/smarty/smarty/libs/bootstrap.php | 17 + vendor/smarty/smarty/libs/debug.tpl | 160 + .../smarty/libs/plugins/block.textformat.php | 114 + .../smarty/libs/plugins/function.counter.php | 73 + .../smarty/libs/plugins/function.cycle.php | 105 + .../smarty/libs/plugins/function.fetch.php | 221 + .../libs/plugins/function.html_checkboxes.php | 251 + .../libs/plugins/function.html_image.php | 166 + .../libs/plugins/function.html_options.php | 206 + .../libs/plugins/function.html_radios.php | 234 + .../plugins/function.html_select_date.php | 388 + .../plugins/function.html_select_time.php | 363 + .../libs/plugins/function.html_table.php | 176 + .../smarty/libs/plugins/function.mailto.php | 153 + .../smarty/libs/plugins/function.math.php | 109 + .../libs/plugins/modifier.capitalize.php | 101 + .../libs/plugins/modifier.date_format.php | 67 + .../libs/plugins/modifier.debug_print_var.php | 112 + .../smarty/libs/plugins/modifier.escape.php | 207 + .../libs/plugins/modifier.regex_replace.php | 58 + .../smarty/libs/plugins/modifier.replace.php | 35 + .../smarty/libs/plugins/modifier.spacify.php | 27 + .../smarty/libs/plugins/modifier.truncate.php | 66 + .../libs/plugins/modifiercompiler.cat.php | 29 + .../modifiercompiler.count_characters.php | 32 + .../modifiercompiler.count_paragraphs.php | 27 + .../modifiercompiler.count_sentences.php | 27 + .../plugins/modifiercompiler.count_words.php | 32 + .../libs/plugins/modifiercompiler.default.php | 35 + .../libs/plugins/modifiercompiler.escape.php | 115 + .../plugins/modifiercompiler.from_charset.php | 33 + .../libs/plugins/modifiercompiler.indent.php | 33 + .../libs/plugins/modifiercompiler.lower.php | 31 + .../libs/plugins/modifiercompiler.noprint.php | 21 + .../modifiercompiler.string_format.php | 25 + .../libs/plugins/modifiercompiler.strip.php | 33 + .../plugins/modifiercompiler.strip_tags.php | 29 + .../plugins/modifiercompiler.to_charset.php | 33 + .../plugins/modifiercompiler.unescape.php | 50 + .../libs/plugins/modifiercompiler.upper.php | 29 + .../plugins/modifiercompiler.wordwrap.php | 51 + .../plugins/outputfilter.trimwhitespace.php | 89 + .../plugins/shared.escape_special_chars.php | 34 + .../plugins/shared.literal_compiler_param.php | 36 + .../libs/plugins/shared.make_timestamp.php | 45 + .../libs/plugins/shared.mb_str_replace.php | 55 + .../smarty/libs/plugins/shared.mb_unicode.php | 54 + .../libs/plugins/shared.mb_wordwrap.php | 75 + .../variablefilter.htmlspecialchars.php | 19 + .../libs/sysplugins/smarty_cacheresource.php | 220 + .../smarty_cacheresource_custom.php | 275 + .../smarty_cacheresource_keyvaluestore.php | 507 + .../smarty/libs/sysplugins/smarty_data.php | 68 + .../libs/sysplugins/smarty_internal_block.php | 90 + .../smarty_internal_cacheresource_file.php | 220 + .../smarty_internal_compile_append.php | 51 + .../smarty_internal_compile_assign.php | 94 + .../smarty_internal_compile_block.php | 202 + .../smarty_internal_compile_block_child.php | 54 + .../smarty_internal_compile_block_parent.php | 73 + .../smarty_internal_compile_break.php | 110 + .../smarty_internal_compile_call.php | 89 + .../smarty_internal_compile_capture.php | 112 + .../smarty_internal_compile_config_load.php | 98 + .../smarty_internal_compile_continue.php | 42 + .../smarty_internal_compile_debug.php | 42 + .../smarty_internal_compile_eval.php | 72 + .../smarty_internal_compile_extends.php | 144 + .../smarty_internal_compile_for.php | 170 + .../smarty_internal_compile_foreach.php | 344 + .../smarty_internal_compile_function.php | 216 + .../sysplugins/smarty_internal_compile_if.php | 211 + .../smarty_internal_compile_include.php | 344 + .../smarty_internal_compile_include_php.php | 111 + .../smarty_internal_compile_insert.php | 155 + .../smarty_internal_compile_ldelim.php | 40 + .../smarty_internal_compile_make_nocache.php | 64 + .../smarty_internal_compile_nocache.php | 75 + ..._internal_compile_private_block_plugin.php | 122 + ...nternal_compile_private_foreachsection.php | 221 + ...ternal_compile_private_function_plugin.php | 74 + ...arty_internal_compile_private_modifier.php | 157 + ..._compile_private_object_block_function.php | 42 + ...ternal_compile_private_object_function.php | 86 + .../smarty_internal_compile_private_php.php | 216 + ...ernal_compile_private_print_expression.php | 162 + ...ernal_compile_private_registered_block.php | 72 + ...al_compile_private_registered_function.php | 82 + ...ernal_compile_private_special_variable.php | 126 + .../smarty_internal_compile_rdelim.php | 40 + .../smarty_internal_compile_section.php | 469 + .../smarty_internal_compile_setfilter.php | 70 + ...ty_internal_compile_shared_inheritance.php | 46 + .../smarty_internal_compile_while.php | 100 + .../smarty_internal_compilebase.php | 196 + .../smarty_internal_config_file_compiler.php | 197 + .../smarty_internal_configfilelexer.php | 732 ++ .../smarty_internal_configfileparser.php | 1022 ++ .../libs/sysplugins/smarty_internal_data.php | 285 + .../libs/sysplugins/smarty_internal_debug.php | 426 + .../smarty_internal_extension_handler.php | 171 + ...rty_internal_method_addautoloadfilters.php | 52 + ...ty_internal_method_adddefaultmodifiers.php | 42 + .../smarty_internal_method_append.php | 74 + .../smarty_internal_method_appendbyref.php | 50 + .../smarty_internal_method_assignbyref.php | 36 + .../smarty_internal_method_assignglobal.php | 43 + .../smarty_internal_method_clearallassign.php | 37 + .../smarty_internal_method_clearallcache.php | 40 + .../smarty_internal_method_clearassign.php | 44 + .../smarty_internal_method_clearcache.php | 44 + ..._internal_method_clearcompiledtemplate.php | 122 + .../smarty_internal_method_clearconfig.php | 41 + ...marty_internal_method_compileallconfig.php | 33 + ...ty_internal_method_compilealltemplates.php | 119 + .../smarty_internal_method_configload.php | 183 + .../smarty_internal_method_createdata.php | 44 + ...rty_internal_method_getautoloadfilters.php | 37 + ...arty_internal_method_getconfigvariable.php | 34 + .../smarty_internal_method_getconfigvars.php | 58 + ...marty_internal_method_getdebugtemplate.php | 35 + ...ty_internal_method_getdefaultmodifiers.php | 35 + .../smarty_internal_method_getglobal.php | 47 + ...ty_internal_method_getregisteredobject.php | 44 + ...arty_internal_method_getstreamvariable.php | 51 + .../smarty_internal_method_gettags.php | 62 + ...smarty_internal_method_gettemplatevars.php | 116 + .../smarty_internal_method_loadfilter.php | 77 + .../smarty_internal_method_loadplugin.php | 111 + .../smarty_internal_method_mustcompile.php | 51 + ..._internal_method_registercacheresource.php | 40 + .../smarty_internal_method_registerclass.php | 46 + ...al_method_registerdefaultconfighandler.php | 42 + ...al_method_registerdefaultpluginhandler.php | 43 + ..._method_registerdefaulttemplatehandler.php | 82 + .../smarty_internal_method_registerfilter.php | 88 + .../smarty_internal_method_registerobject.php | 72 + .../smarty_internal_method_registerplugin.php | 51 + ...marty_internal_method_registerresource.php | 44 + ...rty_internal_method_setautoloadfilters.php | 70 + ...marty_internal_method_setdebugtemplate.php | 41 + ...ty_internal_method_setdefaultmodifiers.php | 38 + .../smarty_internal_method_unloadfilter.php | 42 + ...nternal_method_unregistercacheresource.php | 40 + ...marty_internal_method_unregisterfilter.php | 42 + ...marty_internal_method_unregisterobject.php | 40 + ...marty_internal_method_unregisterplugin.php | 41 + ...rty_internal_method_unregisterresource.php | 40 + .../smarty_internal_nocache_insert.php | 53 + .../sysplugins/smarty_internal_parsetree.php | 54 + .../smarty_internal_parsetree_code.php | 42 + .../smarty_internal_parsetree_dq.php | 95 + .../smarty_internal_parsetree_dqcontent.php | 42 + .../smarty_internal_parsetree_tag.php | 69 + .../smarty_internal_parsetree_template.php | 128 + .../smarty_internal_parsetree_text.php | 40 + .../smarty_internal_resource_eval.php | 95 + .../smarty_internal_resource_extends.php | 125 + .../smarty_internal_resource_file.php | 176 + .../smarty_internal_resource_php.php | 106 + .../smarty_internal_resource_registered.php | 99 + .../smarty_internal_resource_stream.php | 80 + .../smarty_internal_resource_string.php | 107 + .../smarty_internal_runtime_cachemodify.php | 68 + ...rty_internal_runtime_cacheresourcefile.php | 136 + .../smarty_internal_runtime_capture.php | 161 + .../smarty_internal_runtime_codeframe.php | 98 + .../smarty_internal_runtime_filterhandler.php | 69 + .../smarty_internal_runtime_foreach.php | 149 + ...smarty_internal_runtime_getincludepath.php | 182 + .../smarty_internal_runtime_inheritance.php | 241 + .../smarty_internal_runtime_make_nocache.php | 56 + .../smarty_internal_runtime_tplfunction.php | 171 + .../smarty_internal_runtime_updatecache.php | 165 + .../smarty_internal_runtime_updatescope.php | 115 + .../smarty_internal_runtime_writefile.php | 91 + ...smarty_internal_smartytemplatecompiler.php | 170 + .../sysplugins/smarty_internal_template.php | 692 ++ .../smarty_internal_templatebase.php | 355 + .../smarty_internal_templatecompilerbase.php | 1365 +++ .../smarty_internal_templatelexer.php | 1169 ++ .../smarty_internal_templateparser.php | 2831 +++++ .../smarty_internal_testinstall.php | 598 + .../sysplugins/smarty_internal_undefined.php | 68 + .../libs/sysplugins/smarty_resource.php | 254 + .../sysplugins/smarty_resource_custom.php | 95 + .../sysplugins/smarty_resource_recompiled.php | 92 + .../sysplugins/smarty_resource_uncompiled.php | 49 + .../libs/sysplugins/smarty_security.php | 730 ++ .../sysplugins/smarty_template_cached.php | 256 + .../sysplugins/smarty_template_compiled.php | 255 + .../sysplugins/smarty_template_config.php | 99 + .../smarty_template_resource_base.php | 158 + .../sysplugins/smarty_template_source.php | 210 + .../sysplugins/smarty_undefined_variable.php | 37 + .../libs/sysplugins/smarty_variable.php | 48 + .../sysplugins/smartycompilerexception.php | 42 + .../libs/sysplugins/smartyexception.php | 16 + 1376 files changed, 281629 insertions(+) create mode 100644 LICENSE.txt create mode 100644 admin/account/index.php create mode 100644 admin/clients/add.php create mode 100644 admin/clients/edit.php create mode 100644 admin/clients/index.php create mode 100644 admin/clients/page_forms.php create mode 100644 admin/clients/page_main.php create mode 100644 admin/clients/page_settings.php create mode 100644 admin/forms/add/index.php create mode 100644 admin/forms/add/internal.php create mode 100644 admin/forms/add/step1.php create mode 100644 admin/forms/add/step2.php create mode 100644 admin/forms/add/step3.php create mode 100644 admin/forms/add/step4.php create mode 100644 admin/forms/add/step5.php create mode 100644 admin/forms/add/step6.php create mode 100644 admin/forms/delete_form.php create mode 100644 admin/forms/edit/index.php create mode 100644 admin/forms/edit/page_edit_email.php create mode 100644 admin/forms/edit/page_edit_view.php create mode 100644 admin/forms/edit/page_email_settings.php create mode 100644 admin/forms/edit/page_emails.php create mode 100644 admin/forms/edit/page_fields.php create mode 100644 admin/forms/edit/page_main.php create mode 100644 admin/forms/edit/page_public_form_omit_list.php create mode 100644 admin/forms/edit/page_public_view_omit_list.php create mode 100644 admin/forms/edit/page_views.php create mode 100644 admin/forms/edit_submission.php create mode 100644 admin/forms/index.php create mode 100644 admin/forms/option_lists/edit.php create mode 100644 admin/forms/option_lists/index.php create mode 100644 admin/forms/option_lists/page_form_fields.php create mode 100644 admin/forms/option_lists/page_main.php create mode 100644 admin/forms/submissions.php create mode 100644 admin/index.php create mode 100644 admin/modules/about.php create mode 100644 admin/modules/index.php create mode 100644 admin/redirect.php create mode 100644 admin/settings/index.php create mode 100644 admin/settings/page_accounts.php create mode 100644 admin/settings/page_edit_admin_menu.php create mode 100644 admin/settings/page_edit_client_menu.php create mode 100644 admin/settings/page_files.php create mode 100644 admin/settings/page_main.php create mode 100644 admin/settings/page_menus.php create mode 100644 admin/themes/about.php create mode 100644 admin/themes/index.php create mode 100644 cache/index.html create mode 100644 clients/account/index.php create mode 100644 clients/account/page_main.php create mode 100644 clients/account/page_settings.php create mode 100644 clients/forms/edit_submission.php create mode 100644 clients/forms/index.php create mode 100644 clients/index.php create mode 100644 error.php create mode 100644 forget_password.php create mode 100644 global/api/index.html create mode 100644 global/code/Accounts.class.php create mode 100644 global/code/Administrator.class.php create mode 100644 global/code/Clients.class.php create mode 100644 global/code/Constants.class.php create mode 100644 global/code/Core.class.php create mode 100644 global/code/CoreFieldTypes.class.php create mode 100644 global/code/Database.class.php create mode 100644 global/code/DatabaseSessions.class.php create mode 100644 global/code/Emails.class.php create mode 100644 global/code/Errors.class.php create mode 100644 global/code/FieldOptions.class.php create mode 100644 global/code/FieldSettings.class.php create mode 100644 global/code/FieldSizes.class.php create mode 100644 global/code/FieldTypes.class.php create mode 100644 global/code/FieldValidation.class.php create mode 100644 global/code/Fields.class.php create mode 100644 global/code/Files.class.php create mode 100644 global/code/Forms.class.php create mode 100644 global/code/General.class.php create mode 100644 global/code/Hooks.class.php create mode 100644 global/code/Installation.class.php create mode 100644 global/code/ListGroups.class.php create mode 100644 global/code/Menus.class.php create mode 100644 global/code/Module.abstract.class.php create mode 100644 global/code/ModuleMenu.class.php create mode 100644 global/code/Modules.class.php create mode 100644 global/code/OmitLists.class.php create mode 100644 global/code/OptionLists.class.php create mode 100644 global/code/Pages.class.php create mode 100644 global/code/Schemas.class.php create mode 100644 global/code/SecureSmarty.class.php create mode 100644 global/code/Sessions.class.php create mode 100644 global/code/Settings.class.php create mode 100644 global/code/Submissions.class.php create mode 100644 global/code/Templates.class.php create mode 100644 global/code/Themes.class.php create mode 100644 global/code/Translations.class.php create mode 100644 global/code/Upgrade.class.php create mode 100644 global/code/User.class.php create mode 100644 global/code/ViewColumns.class.php create mode 100644 global/code/ViewFields.class.php create mode 100644 global/code/ViewFilters.class.php create mode 100644 global/code/ViewTabs.class.php create mode 100644 global/code/Views.class.php create mode 100644 global/code/actions-react.php create mode 100644 global/code/actions.php create mode 100644 global/code/field_types/Checkbox.class.php create mode 100644 global/code/field_types/Code.class.php create mode 100644 global/code/field_types/Date.class.php create mode 100644 global/code/field_types/Dropdown.class.php create mode 100644 global/code/field_types/MultiSelect.class.php create mode 100644 global/code/field_types/Password.class.php create mode 100644 global/code/field_types/Phone.class.php create mode 100644 global/code/field_types/Radio.class.php create mode 100644 global/code/field_types/Textarea.class.php create mode 100644 global/code/field_types/Textbox.class.php create mode 100644 global/code/field_types/Time.class.php create mode 100644 global/code/index.php create mode 100644 global/code/polyfills.php create mode 100644 global/code/validation.php create mode 100644 global/codemirror/AUTHORS create mode 100644 global/codemirror/CHANGELOG.md create mode 100644 global/codemirror/CONTRIBUTING.md create mode 100644 global/codemirror/LICENSE create mode 100644 global/codemirror/README.md create mode 100644 global/codemirror/addon/comment/comment.js create mode 100644 global/codemirror/addon/comment/continuecomment.js create mode 100644 global/codemirror/addon/dialog/dialog.css create mode 100644 global/codemirror/addon/dialog/dialog.js create mode 100644 global/codemirror/addon/display/autorefresh.js create mode 100644 global/codemirror/addon/display/fullscreen.css create mode 100644 global/codemirror/addon/display/fullscreen.js create mode 100644 global/codemirror/addon/display/panel.js create mode 100644 global/codemirror/addon/display/placeholder.js create mode 100644 global/codemirror/addon/display/rulers.js create mode 100644 global/codemirror/addon/edit/closebrackets.js create mode 100644 global/codemirror/addon/edit/closetag.js create mode 100644 global/codemirror/addon/edit/continuelist.js create mode 100644 global/codemirror/addon/edit/matchbrackets.js create mode 100644 global/codemirror/addon/edit/matchtags.js create mode 100644 global/codemirror/addon/edit/trailingspace.js create mode 100644 global/codemirror/addon/fold/brace-fold.js create mode 100644 global/codemirror/addon/fold/comment-fold.js create mode 100644 global/codemirror/addon/fold/foldcode.js create mode 100644 global/codemirror/addon/fold/foldgutter.css create mode 100644 global/codemirror/addon/fold/foldgutter.js create mode 100644 global/codemirror/addon/fold/indent-fold.js create mode 100644 global/codemirror/addon/fold/markdown-fold.js create mode 100644 global/codemirror/addon/fold/xml-fold.js create mode 100644 global/codemirror/addon/hint/anyword-hint.js create mode 100644 global/codemirror/addon/hint/css-hint.js create mode 100644 global/codemirror/addon/hint/html-hint.js create mode 100644 global/codemirror/addon/hint/javascript-hint.js create mode 100644 global/codemirror/addon/hint/show-hint.css create mode 100644 global/codemirror/addon/hint/show-hint.js create mode 100644 global/codemirror/addon/hint/sql-hint.js create mode 100644 global/codemirror/addon/hint/xml-hint.js create mode 100644 global/codemirror/addon/lint/coffeescript-lint.js create mode 100644 global/codemirror/addon/lint/css-lint.js create mode 100644 global/codemirror/addon/lint/html-lint.js create mode 100644 global/codemirror/addon/lint/javascript-lint.js create mode 100644 global/codemirror/addon/lint/json-lint.js create mode 100644 global/codemirror/addon/lint/lint.css create mode 100644 global/codemirror/addon/lint/lint.js create mode 100644 global/codemirror/addon/lint/yaml-lint.js create mode 100644 global/codemirror/addon/merge/merge.css create mode 100644 global/codemirror/addon/merge/merge.js create mode 100644 global/codemirror/addon/mode/loadmode.js create mode 100644 global/codemirror/addon/mode/multiplex.js create mode 100644 global/codemirror/addon/mode/multiplex_test.js create mode 100644 global/codemirror/addon/mode/overlay.js create mode 100644 global/codemirror/addon/mode/simple.js create mode 100644 global/codemirror/addon/runmode/colorize.js create mode 100644 global/codemirror/addon/runmode/runmode-standalone.js create mode 100644 global/codemirror/addon/runmode/runmode.js create mode 100644 global/codemirror/addon/runmode/runmode.node.js create mode 100644 global/codemirror/addon/scroll/annotatescrollbar.js create mode 100644 global/codemirror/addon/scroll/scrollpastend.js create mode 100644 global/codemirror/addon/scroll/simplescrollbars.css create mode 100644 global/codemirror/addon/scroll/simplescrollbars.js create mode 100644 global/codemirror/addon/search/jump-to-line.js create mode 100644 global/codemirror/addon/search/match-highlighter.js create mode 100644 global/codemirror/addon/search/matchesonscrollbar.css create mode 100644 global/codemirror/addon/search/matchesonscrollbar.js create mode 100644 global/codemirror/addon/search/search.js create mode 100644 global/codemirror/addon/search/searchcursor.js create mode 100644 global/codemirror/addon/selection/active-line.js create mode 100644 global/codemirror/addon/selection/mark-selection.js create mode 100644 global/codemirror/addon/selection/selection-pointer.js create mode 100644 global/codemirror/addon/tern/tern.css create mode 100644 global/codemirror/addon/tern/tern.js create mode 100644 global/codemirror/addon/tern/worker.js create mode 100644 global/codemirror/addon/wrap/hardwrap.js create mode 100644 global/codemirror/bin/authors.sh create mode 100644 global/codemirror/bin/compress create mode 100644 global/codemirror/bin/lint create mode 100644 global/codemirror/bin/release create mode 100644 global/codemirror/bin/source-highlight create mode 100644 global/codemirror/bin/upload-release.js create mode 100644 global/codemirror/demo/activeline.html create mode 100644 global/codemirror/demo/anywordhint.html create mode 100644 global/codemirror/demo/bidi.html create mode 100644 global/codemirror/demo/btree.html create mode 100644 global/codemirror/demo/buffers.html create mode 100644 global/codemirror/demo/changemode.html create mode 100644 global/codemirror/demo/closebrackets.html create mode 100644 global/codemirror/demo/closetag.html create mode 100644 global/codemirror/demo/complete.html create mode 100644 global/codemirror/demo/emacs.html create mode 100644 global/codemirror/demo/folding.html create mode 100644 global/codemirror/demo/fullscreen.html create mode 100644 global/codemirror/demo/hardwrap.html create mode 100644 global/codemirror/demo/html5complete.html create mode 100644 global/codemirror/demo/indentwrap.html create mode 100644 global/codemirror/demo/lint.html create mode 100644 global/codemirror/demo/loadmode.html create mode 100644 global/codemirror/demo/marker.html create mode 100644 global/codemirror/demo/markselection.html create mode 100644 global/codemirror/demo/matchhighlighter.html create mode 100644 global/codemirror/demo/matchtags.html create mode 100644 global/codemirror/demo/merge.html create mode 100644 global/codemirror/demo/multiplex.html create mode 100644 global/codemirror/demo/mustache.html create mode 100644 global/codemirror/demo/panel.html create mode 100644 global/codemirror/demo/placeholder.html create mode 100644 global/codemirror/demo/preview.html create mode 100644 global/codemirror/demo/requirejs.html create mode 100644 global/codemirror/demo/resize.html create mode 100644 global/codemirror/demo/rulers.html create mode 100644 global/codemirror/demo/runmode.html create mode 100644 global/codemirror/demo/search.html create mode 100644 global/codemirror/demo/simplemode.html create mode 100644 global/codemirror/demo/simplescrollbars.html create mode 100644 global/codemirror/demo/spanaffectswrapping_shim.html create mode 100644 global/codemirror/demo/sublime.html create mode 100644 global/codemirror/demo/tern.html create mode 100644 global/codemirror/demo/theme.html create mode 100644 global/codemirror/demo/trailingspace.html create mode 100644 global/codemirror/demo/variableheight.html create mode 100644 global/codemirror/demo/vim.html create mode 100644 global/codemirror/demo/visibletabs.html create mode 100644 global/codemirror/demo/widget.html create mode 100644 global/codemirror/demo/xmlcomplete.html create mode 100644 global/codemirror/doc/activebookmark.js create mode 100644 global/codemirror/doc/docs.css create mode 100644 global/codemirror/doc/internals.html create mode 100644 global/codemirror/doc/logo.png create mode 100644 global/codemirror/doc/logo.svg create mode 100644 global/codemirror/doc/manual.html create mode 100644 global/codemirror/doc/realworld.html create mode 100644 global/codemirror/doc/releases.html create mode 100644 global/codemirror/doc/reporting.html create mode 100644 global/codemirror/doc/upgrade_v2.2.html create mode 100644 global/codemirror/doc/upgrade_v3.html create mode 100644 global/codemirror/doc/upgrade_v4.html create mode 100644 global/codemirror/doc/yinyang.png create mode 100644 global/codemirror/index.html create mode 100644 global/codemirror/keymap/emacs.js create mode 100644 global/codemirror/keymap/sublime.js create mode 100644 global/codemirror/keymap/vim.js create mode 100644 global/codemirror/lib/codemirror.css create mode 100644 global/codemirror/lib/codemirror.js create mode 100644 global/codemirror/mode/apl/apl.js create mode 100644 global/codemirror/mode/apl/index.html create mode 100644 global/codemirror/mode/asciiarmor/asciiarmor.js create mode 100644 global/codemirror/mode/asciiarmor/index.html create mode 100644 global/codemirror/mode/asn.1/asn.1.js create mode 100644 global/codemirror/mode/asn.1/index.html create mode 100644 global/codemirror/mode/asterisk/asterisk.js create mode 100644 global/codemirror/mode/asterisk/index.html create mode 100644 global/codemirror/mode/brainfuck/brainfuck.js create mode 100644 global/codemirror/mode/brainfuck/index.html create mode 100644 global/codemirror/mode/clike/clike.js create mode 100644 global/codemirror/mode/clike/index.html create mode 100644 global/codemirror/mode/clike/scala.html create mode 100644 global/codemirror/mode/clike/test.js create mode 100644 global/codemirror/mode/clojure/clojure.js create mode 100644 global/codemirror/mode/clojure/index.html create mode 100644 global/codemirror/mode/cmake/cmake.js create mode 100644 global/codemirror/mode/cmake/index.html create mode 100644 global/codemirror/mode/cobol/cobol.js create mode 100644 global/codemirror/mode/cobol/index.html create mode 100644 global/codemirror/mode/coffeescript/coffeescript.js create mode 100644 global/codemirror/mode/coffeescript/index.html create mode 100644 global/codemirror/mode/commonlisp/commonlisp.js create mode 100644 global/codemirror/mode/commonlisp/index.html create mode 100644 global/codemirror/mode/crystal/crystal.js create mode 100644 global/codemirror/mode/crystal/index.html create mode 100644 global/codemirror/mode/css/css.js create mode 100644 global/codemirror/mode/css/gss.html create mode 100644 global/codemirror/mode/css/gss_test.js create mode 100644 global/codemirror/mode/css/index.html create mode 100644 global/codemirror/mode/css/less.html create mode 100644 global/codemirror/mode/css/less_test.js create mode 100644 global/codemirror/mode/css/scss.html create mode 100644 global/codemirror/mode/css/scss_test.js create mode 100644 global/codemirror/mode/css/test.js create mode 100644 global/codemirror/mode/cypher/cypher.js create mode 100644 global/codemirror/mode/cypher/index.html create mode 100644 global/codemirror/mode/cypher/test.js create mode 100644 global/codemirror/mode/d/d.js create mode 100644 global/codemirror/mode/d/index.html create mode 100644 global/codemirror/mode/d/test.js create mode 100644 global/codemirror/mode/dart/dart.js create mode 100644 global/codemirror/mode/dart/index.html create mode 100644 global/codemirror/mode/diff/diff.js create mode 100644 global/codemirror/mode/diff/index.html create mode 100644 global/codemirror/mode/django/django.js create mode 100644 global/codemirror/mode/django/index.html create mode 100644 global/codemirror/mode/dockerfile/dockerfile.js create mode 100644 global/codemirror/mode/dockerfile/index.html create mode 100644 global/codemirror/mode/dtd/dtd.js create mode 100644 global/codemirror/mode/dtd/index.html create mode 100644 global/codemirror/mode/dylan/dylan.js create mode 100644 global/codemirror/mode/dylan/index.html create mode 100644 global/codemirror/mode/dylan/test.js create mode 100644 global/codemirror/mode/ebnf/ebnf.js create mode 100644 global/codemirror/mode/ebnf/index.html create mode 100644 global/codemirror/mode/ecl/ecl.js create mode 100644 global/codemirror/mode/ecl/index.html create mode 100644 global/codemirror/mode/eiffel/eiffel.js create mode 100644 global/codemirror/mode/eiffel/index.html create mode 100644 global/codemirror/mode/elm/elm.js create mode 100644 global/codemirror/mode/elm/index.html create mode 100644 global/codemirror/mode/erlang/erlang.js create mode 100644 global/codemirror/mode/erlang/index.html create mode 100644 global/codemirror/mode/factor/factor.js create mode 100644 global/codemirror/mode/factor/index.html create mode 100644 global/codemirror/mode/fcl/fcl.js create mode 100644 global/codemirror/mode/fcl/index.html create mode 100644 global/codemirror/mode/forth/forth.js create mode 100644 global/codemirror/mode/forth/index.html create mode 100644 global/codemirror/mode/fortran/fortran.js create mode 100644 global/codemirror/mode/fortran/index.html create mode 100644 global/codemirror/mode/gas/gas.js create mode 100644 global/codemirror/mode/gas/index.html create mode 100644 global/codemirror/mode/gfm/gfm.js create mode 100644 global/codemirror/mode/gfm/index.html create mode 100644 global/codemirror/mode/gfm/test.js create mode 100644 global/codemirror/mode/gherkin/gherkin.js create mode 100644 global/codemirror/mode/gherkin/index.html create mode 100644 global/codemirror/mode/go/go.js create mode 100644 global/codemirror/mode/go/index.html create mode 100644 global/codemirror/mode/groovy/groovy.js create mode 100644 global/codemirror/mode/groovy/index.html create mode 100644 global/codemirror/mode/haml/haml.js create mode 100644 global/codemirror/mode/haml/index.html create mode 100644 global/codemirror/mode/haml/test.js create mode 100644 global/codemirror/mode/handlebars/handlebars.js create mode 100644 global/codemirror/mode/handlebars/index.html create mode 100644 global/codemirror/mode/haskell-literate/haskell-literate.js create mode 100644 global/codemirror/mode/haskell-literate/index.html create mode 100644 global/codemirror/mode/haskell/haskell.js create mode 100644 global/codemirror/mode/haskell/index.html create mode 100644 global/codemirror/mode/haxe/haxe.js create mode 100644 global/codemirror/mode/haxe/index.html create mode 100644 global/codemirror/mode/htmlembedded/htmlembedded.js create mode 100644 global/codemirror/mode/htmlembedded/index.html create mode 100644 global/codemirror/mode/htmlmixed/htmlmixed.js create mode 100644 global/codemirror/mode/htmlmixed/index.html create mode 100644 global/codemirror/mode/http/http.js create mode 100644 global/codemirror/mode/http/index.html create mode 100644 global/codemirror/mode/idl/idl.js create mode 100644 global/codemirror/mode/idl/index.html create mode 100644 global/codemirror/mode/index.html create mode 100644 global/codemirror/mode/javascript/index.html create mode 100644 global/codemirror/mode/javascript/javascript.js create mode 100644 global/codemirror/mode/javascript/json-ld.html create mode 100644 global/codemirror/mode/javascript/test.js create mode 100644 global/codemirror/mode/javascript/typescript.html create mode 100644 global/codemirror/mode/jinja2/index.html create mode 100644 global/codemirror/mode/jinja2/jinja2.js create mode 100644 global/codemirror/mode/jsx/index.html create mode 100644 global/codemirror/mode/jsx/jsx.js create mode 100644 global/codemirror/mode/jsx/test.js create mode 100644 global/codemirror/mode/julia/index.html create mode 100644 global/codemirror/mode/julia/julia.js create mode 100644 global/codemirror/mode/livescript/index.html create mode 100644 global/codemirror/mode/livescript/livescript.js create mode 100644 global/codemirror/mode/lua/index.html create mode 100644 global/codemirror/mode/lua/lua.js create mode 100644 global/codemirror/mode/markdown/index.html create mode 100644 global/codemirror/mode/markdown/markdown.js create mode 100644 global/codemirror/mode/markdown/test.js create mode 100644 global/codemirror/mode/mathematica/index.html create mode 100644 global/codemirror/mode/mathematica/mathematica.js create mode 100644 global/codemirror/mode/mbox/index.html create mode 100644 global/codemirror/mode/mbox/mbox.js create mode 100644 global/codemirror/mode/meta.js create mode 100644 global/codemirror/mode/mirc/index.html create mode 100644 global/codemirror/mode/mirc/mirc.js create mode 100644 global/codemirror/mode/mllike/index.html create mode 100644 global/codemirror/mode/mllike/mllike.js create mode 100644 global/codemirror/mode/modelica/index.html create mode 100644 global/codemirror/mode/modelica/modelica.js create mode 100644 global/codemirror/mode/mscgen/index.html create mode 100644 global/codemirror/mode/mscgen/mscgen.js create mode 100644 global/codemirror/mode/mscgen/mscgen_test.js create mode 100644 global/codemirror/mode/mscgen/msgenny_test.js create mode 100644 global/codemirror/mode/mscgen/xu_test.js create mode 100644 global/codemirror/mode/mumps/index.html create mode 100644 global/codemirror/mode/mumps/mumps.js create mode 100644 global/codemirror/mode/nginx/index.html create mode 100644 global/codemirror/mode/nginx/nginx.js create mode 100644 global/codemirror/mode/nsis/index.html create mode 100644 global/codemirror/mode/nsis/nsis.js create mode 100644 global/codemirror/mode/ntriples/index.html create mode 100644 global/codemirror/mode/ntriples/ntriples.js create mode 100644 global/codemirror/mode/octave/index.html create mode 100644 global/codemirror/mode/octave/octave.js create mode 100644 global/codemirror/mode/oz/index.html create mode 100644 global/codemirror/mode/oz/oz.js create mode 100644 global/codemirror/mode/pascal/index.html create mode 100644 global/codemirror/mode/pascal/pascal.js create mode 100644 global/codemirror/mode/pegjs/index.html create mode 100644 global/codemirror/mode/pegjs/pegjs.js create mode 100644 global/codemirror/mode/perl/index.html create mode 100644 global/codemirror/mode/perl/perl.js create mode 100644 global/codemirror/mode/php/index.html create mode 100644 global/codemirror/mode/php/php.js create mode 100644 global/codemirror/mode/php/test.js create mode 100644 global/codemirror/mode/pig/index.html create mode 100644 global/codemirror/mode/pig/pig.js create mode 100644 global/codemirror/mode/powershell/index.html create mode 100644 global/codemirror/mode/powershell/powershell.js create mode 100644 global/codemirror/mode/powershell/test.js create mode 100644 global/codemirror/mode/properties/index.html create mode 100644 global/codemirror/mode/properties/properties.js create mode 100644 global/codemirror/mode/protobuf/index.html create mode 100644 global/codemirror/mode/protobuf/protobuf.js create mode 100644 global/codemirror/mode/pug/index.html create mode 100644 global/codemirror/mode/pug/pug.js create mode 100644 global/codemirror/mode/puppet/index.html create mode 100644 global/codemirror/mode/puppet/puppet.js create mode 100644 global/codemirror/mode/python/index.html create mode 100644 global/codemirror/mode/python/python.js create mode 100644 global/codemirror/mode/python/test.js create mode 100644 global/codemirror/mode/q/index.html create mode 100644 global/codemirror/mode/q/q.js create mode 100644 global/codemirror/mode/r/index.html create mode 100644 global/codemirror/mode/r/r.js create mode 100644 global/codemirror/mode/rpm/changes/index.html create mode 100644 global/codemirror/mode/rpm/index.html create mode 100644 global/codemirror/mode/rpm/rpm.js create mode 100644 global/codemirror/mode/rst/index.html create mode 100644 global/codemirror/mode/rst/rst.js create mode 100644 global/codemirror/mode/ruby/index.html create mode 100644 global/codemirror/mode/ruby/ruby.js create mode 100644 global/codemirror/mode/ruby/test.js create mode 100644 global/codemirror/mode/rust/index.html create mode 100644 global/codemirror/mode/rust/rust.js create mode 100644 global/codemirror/mode/rust/test.js create mode 100644 global/codemirror/mode/sas/index.html create mode 100644 global/codemirror/mode/sas/sas.js create mode 100644 global/codemirror/mode/sass/index.html create mode 100644 global/codemirror/mode/sass/sass.js create mode 100644 global/codemirror/mode/sass/test.js create mode 100644 global/codemirror/mode/scheme/index.html create mode 100644 global/codemirror/mode/scheme/scheme.js create mode 100644 global/codemirror/mode/shell/index.html create mode 100644 global/codemirror/mode/shell/shell.js create mode 100644 global/codemirror/mode/shell/test.js create mode 100644 global/codemirror/mode/sieve/index.html create mode 100644 global/codemirror/mode/sieve/sieve.js create mode 100644 global/codemirror/mode/slim/index.html create mode 100644 global/codemirror/mode/slim/slim.js create mode 100644 global/codemirror/mode/slim/test.js create mode 100644 global/codemirror/mode/smalltalk/index.html create mode 100644 global/codemirror/mode/smalltalk/smalltalk.js create mode 100644 global/codemirror/mode/smarty/index.html create mode 100644 global/codemirror/mode/smarty/smarty.js create mode 100644 global/codemirror/mode/solr/index.html create mode 100644 global/codemirror/mode/solr/solr.js create mode 100644 global/codemirror/mode/soy/index.html create mode 100644 global/codemirror/mode/soy/soy.js create mode 100644 global/codemirror/mode/soy/test.js create mode 100644 global/codemirror/mode/sparql/index.html create mode 100644 global/codemirror/mode/sparql/sparql.js create mode 100644 global/codemirror/mode/spreadsheet/index.html create mode 100644 global/codemirror/mode/spreadsheet/spreadsheet.js create mode 100644 global/codemirror/mode/sql/index.html create mode 100644 global/codemirror/mode/sql/sql.js create mode 100644 global/codemirror/mode/stex/index.html create mode 100644 global/codemirror/mode/stex/stex.js create mode 100644 global/codemirror/mode/stex/test.js create mode 100644 global/codemirror/mode/stylus/index.html create mode 100644 global/codemirror/mode/stylus/stylus.js create mode 100644 global/codemirror/mode/swift/index.html create mode 100644 global/codemirror/mode/swift/swift.js create mode 100644 global/codemirror/mode/swift/test.js create mode 100644 global/codemirror/mode/tcl/index.html create mode 100644 global/codemirror/mode/tcl/tcl.js create mode 100644 global/codemirror/mode/textile/index.html create mode 100644 global/codemirror/mode/textile/test.js create mode 100644 global/codemirror/mode/textile/textile.js create mode 100644 global/codemirror/mode/tiddlywiki/index.html create mode 100644 global/codemirror/mode/tiddlywiki/tiddlywiki.css create mode 100644 global/codemirror/mode/tiddlywiki/tiddlywiki.js create mode 100644 global/codemirror/mode/tiki/index.html create mode 100644 global/codemirror/mode/tiki/tiki.css create mode 100644 global/codemirror/mode/tiki/tiki.js create mode 100644 global/codemirror/mode/toml/index.html create mode 100644 global/codemirror/mode/toml/toml.js create mode 100644 global/codemirror/mode/tornado/index.html create mode 100644 global/codemirror/mode/tornado/tornado.js create mode 100644 global/codemirror/mode/troff/index.html create mode 100644 global/codemirror/mode/troff/troff.js create mode 100644 global/codemirror/mode/ttcn-cfg/index.html create mode 100644 global/codemirror/mode/ttcn-cfg/ttcn-cfg.js create mode 100644 global/codemirror/mode/ttcn/index.html create mode 100644 global/codemirror/mode/ttcn/ttcn.js create mode 100644 global/codemirror/mode/turtle/index.html create mode 100644 global/codemirror/mode/turtle/turtle.js create mode 100644 global/codemirror/mode/twig/index.html create mode 100644 global/codemirror/mode/twig/twig.js create mode 100644 global/codemirror/mode/vb/index.html create mode 100644 global/codemirror/mode/vb/vb.js create mode 100644 global/codemirror/mode/vbscript/index.html create mode 100644 global/codemirror/mode/vbscript/vbscript.js create mode 100644 global/codemirror/mode/velocity/index.html create mode 100644 global/codemirror/mode/velocity/velocity.js create mode 100644 global/codemirror/mode/verilog/index.html create mode 100644 global/codemirror/mode/verilog/test.js create mode 100644 global/codemirror/mode/verilog/verilog.js create mode 100644 global/codemirror/mode/vhdl/index.html create mode 100644 global/codemirror/mode/vhdl/vhdl.js create mode 100644 global/codemirror/mode/vue/index.html create mode 100644 global/codemirror/mode/vue/vue.js create mode 100644 global/codemirror/mode/webidl/index.html create mode 100644 global/codemirror/mode/webidl/webidl.js create mode 100644 global/codemirror/mode/xml/index.html create mode 100644 global/codemirror/mode/xml/test.js create mode 100644 global/codemirror/mode/xml/xml.js create mode 100644 global/codemirror/mode/xquery/index.html create mode 100644 global/codemirror/mode/xquery/test.js create mode 100644 global/codemirror/mode/xquery/xquery.js create mode 100644 global/codemirror/mode/yacas/index.html create mode 100644 global/codemirror/mode/yacas/yacas.js create mode 100644 global/codemirror/mode/yaml-frontmatter/index.html create mode 100644 global/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js create mode 100644 global/codemirror/mode/yaml/index.html create mode 100644 global/codemirror/mode/yaml/yaml.js create mode 100644 global/codemirror/mode/z80/index.html create mode 100644 global/codemirror/mode/z80/z80.js create mode 100644 global/codemirror/package.json create mode 100644 global/codemirror/rollup.config.js create mode 100644 global/codemirror/src/codemirror.js create mode 100644 global/codemirror/src/display/Display.js create mode 100644 global/codemirror/src/display/focus.js create mode 100644 global/codemirror/src/display/gutters.js create mode 100644 global/codemirror/src/display/highlight_worker.js create mode 100644 global/codemirror/src/display/line_numbers.js create mode 100644 global/codemirror/src/display/mode_state.js create mode 100644 global/codemirror/src/display/operations.js create mode 100644 global/codemirror/src/display/scroll_events.js create mode 100644 global/codemirror/src/display/scrollbars.js create mode 100644 global/codemirror/src/display/scrolling.js create mode 100644 global/codemirror/src/display/selection.js create mode 100644 global/codemirror/src/display/update_display.js create mode 100644 global/codemirror/src/display/update_line.js create mode 100644 global/codemirror/src/display/update_lines.js create mode 100644 global/codemirror/src/display/view_tracking.js create mode 100644 global/codemirror/src/edit/CodeMirror.js create mode 100644 global/codemirror/src/edit/commands.js create mode 100644 global/codemirror/src/edit/deleteNearSelection.js create mode 100644 global/codemirror/src/edit/drop_events.js create mode 100644 global/codemirror/src/edit/fromTextArea.js create mode 100644 global/codemirror/src/edit/global_events.js create mode 100644 global/codemirror/src/edit/key_events.js create mode 100644 global/codemirror/src/edit/legacy.js create mode 100644 global/codemirror/src/edit/main.js create mode 100644 global/codemirror/src/edit/methods.js create mode 100644 global/codemirror/src/edit/mouse_events.js create mode 100644 global/codemirror/src/edit/options.js create mode 100644 global/codemirror/src/edit/utils.js create mode 100644 global/codemirror/src/input/ContentEditableInput.js create mode 100644 global/codemirror/src/input/TextareaInput.js create mode 100644 global/codemirror/src/input/indent.js create mode 100644 global/codemirror/src/input/input.js create mode 100644 global/codemirror/src/input/keymap.js create mode 100644 global/codemirror/src/input/keynames.js create mode 100644 global/codemirror/src/input/movement.js create mode 100644 global/codemirror/src/line/highlight.js create mode 100644 global/codemirror/src/line/line_data.js create mode 100644 global/codemirror/src/line/pos.js create mode 100644 global/codemirror/src/line/saw_special_spans.js create mode 100644 global/codemirror/src/line/spans.js create mode 100644 global/codemirror/src/line/utils_line.js create mode 100644 global/codemirror/src/measurement/position_measurement.js create mode 100644 global/codemirror/src/measurement/widgets.js create mode 100644 global/codemirror/src/model/Doc.js create mode 100644 global/codemirror/src/model/change_measurement.js create mode 100644 global/codemirror/src/model/changes.js create mode 100644 global/codemirror/src/model/chunk.js create mode 100644 global/codemirror/src/model/document_data.js create mode 100644 global/codemirror/src/model/history.js create mode 100644 global/codemirror/src/model/line_widget.js create mode 100644 global/codemirror/src/model/mark_text.js create mode 100644 global/codemirror/src/model/selection.js create mode 100644 global/codemirror/src/model/selection_updates.js create mode 100644 global/codemirror/src/modes.js create mode 100644 global/codemirror/src/util/StringStream.js create mode 100644 global/codemirror/src/util/bidi.js create mode 100644 global/codemirror/src/util/browser.js create mode 100644 global/codemirror/src/util/dom.js create mode 100644 global/codemirror/src/util/event.js create mode 100644 global/codemirror/src/util/feature_detection.js create mode 100644 global/codemirror/src/util/misc.js create mode 100644 global/codemirror/src/util/operation_group.js create mode 100644 global/codemirror/test/comment_test.js create mode 100644 global/codemirror/test/contenteditable_test.js create mode 100644 global/codemirror/test/doc_test.js create mode 100644 global/codemirror/test/driver.js create mode 100644 global/codemirror/test/emacs_test.js create mode 100644 global/codemirror/test/index.html create mode 100644 global/codemirror/test/lint.js create mode 100644 global/codemirror/test/mode_test.css create mode 100644 global/codemirror/test/mode_test.js create mode 100644 global/codemirror/test/multi_test.js create mode 100644 global/codemirror/test/phantom_driver.js create mode 100644 global/codemirror/test/run.js create mode 100644 global/codemirror/test/scroll_test.js create mode 100644 global/codemirror/test/search_test.js create mode 100644 global/codemirror/test/sql-hint-test.js create mode 100644 global/codemirror/test/sublime_test.js create mode 100644 global/codemirror/test/test.js create mode 100644 global/codemirror/test/vim_test.js create mode 100644 global/codemirror/theme/3024-day.css create mode 100644 global/codemirror/theme/3024-night.css create mode 100644 global/codemirror/theme/abcdef.css create mode 100644 global/codemirror/theme/ambiance-mobile.css create mode 100644 global/codemirror/theme/ambiance.css create mode 100644 global/codemirror/theme/base16-dark.css create mode 100644 global/codemirror/theme/base16-light.css create mode 100644 global/codemirror/theme/bespin.css create mode 100644 global/codemirror/theme/blackboard.css create mode 100644 global/codemirror/theme/cobalt.css create mode 100644 global/codemirror/theme/colorforth.css create mode 100644 global/codemirror/theme/dracula.css create mode 100644 global/codemirror/theme/duotone-dark.css create mode 100644 global/codemirror/theme/duotone-light.css create mode 100644 global/codemirror/theme/eclipse.css create mode 100644 global/codemirror/theme/elegant.css create mode 100644 global/codemirror/theme/erlang-dark.css create mode 100644 global/codemirror/theme/hopscotch.css create mode 100644 global/codemirror/theme/icecoder.css create mode 100644 global/codemirror/theme/isotope.css create mode 100644 global/codemirror/theme/lesser-dark.css create mode 100644 global/codemirror/theme/liquibyte.css create mode 100644 global/codemirror/theme/material.css create mode 100644 global/codemirror/theme/mbo.css create mode 100644 global/codemirror/theme/mdn-like.css create mode 100644 global/codemirror/theme/midnight.css create mode 100644 global/codemirror/theme/monokai.css create mode 100644 global/codemirror/theme/neat.css create mode 100644 global/codemirror/theme/neo.css create mode 100644 global/codemirror/theme/night.css create mode 100644 global/codemirror/theme/panda-syntax.css create mode 100644 global/codemirror/theme/paraiso-dark.css create mode 100644 global/codemirror/theme/paraiso-light.css create mode 100644 global/codemirror/theme/pastel-on-dark.css create mode 100644 global/codemirror/theme/railscasts.css create mode 100644 global/codemirror/theme/rubyblue.css create mode 100644 global/codemirror/theme/seti.css create mode 100644 global/codemirror/theme/solarized.css create mode 100644 global/codemirror/theme/the-matrix.css create mode 100644 global/codemirror/theme/tomorrow-night-bright.css create mode 100644 global/codemirror/theme/tomorrow-night-eighties.css create mode 100644 global/codemirror/theme/ttcn.css create mode 100644 global/codemirror/theme/twilight.css create mode 100644 global/codemirror/theme/vibrant-ink.css create mode 100644 global/codemirror/theme/xq-dark.css create mode 100644 global/codemirror/theme/xq-light.css create mode 100644 global/codemirror/theme/yeti.css create mode 100644 global/codemirror/theme/zenburn.css create mode 100644 global/css/field_types.php create mode 100644 global/css/main.css create mode 100644 global/css/ui.daterangepicker.css create mode 100644 global/emails/forget_password.tpl create mode 100644 global/emails/forget_password_subject.tpl create mode 100644 global/emails/installed.tpl create mode 100644 global/emails/installed_subject.tpl create mode 100644 global/emails/patterns/html_admin.tpl create mode 100644 global/emails/patterns/html_admin_loop.tpl create mode 100644 global/emails/patterns/html_admin_loop_omit_empty.tpl create mode 100644 global/emails/patterns/html_admin_notification.tpl create mode 100644 global/emails/patterns/html_admin_omit_empty.tpl create mode 100644 global/emails/patterns/html_programming_example.tpl create mode 100644 global/emails/patterns/html_user.tpl create mode 100644 global/emails/patterns/html_user_loop.tpl create mode 100644 global/emails/patterns/html_user_loop_omit_empty.tpl create mode 100644 global/emails/patterns/html_user_notification.tpl create mode 100644 global/emails/patterns/html_user_omit_empty.tpl create mode 100644 global/emails/patterns/index.php create mode 100644 global/emails/patterns/patterns.ini create mode 100644 global/emails/patterns/text_admin.tpl create mode 100644 global/emails/patterns/text_admin_loop.tpl create mode 100644 global/emails/patterns/text_admin_loop_omit_empty.tpl create mode 100644 global/emails/patterns/text_admin_notification.tpl create mode 100644 global/emails/patterns/text_admin_omit_empty.tpl create mode 100644 global/emails/patterns/text_programming_example.tpl create mode 100644 global/emails/patterns/text_user.tpl create mode 100644 global/emails/patterns/text_user_loop.tpl create mode 100644 global/emails/patterns/text_user_loop_omit_empty.tpl create mode 100644 global/emails/patterns/text_user_notification.tpl create mode 100644 global/emails/patterns/text_user_omit_empty.tpl create mode 100644 global/fancybox/blank.gif create mode 100644 global/fancybox/fancy_close.png create mode 100644 global/fancybox/fancy_loading.png create mode 100644 global/fancybox/fancy_nav_left.png create mode 100644 global/fancybox/fancy_nav_right.png create mode 100644 global/fancybox/fancy_shadow_e.png create mode 100644 global/fancybox/fancy_shadow_n.png create mode 100644 global/fancybox/fancy_shadow_ne.png create mode 100644 global/fancybox/fancy_shadow_nw.png create mode 100644 global/fancybox/fancy_shadow_s.png create mode 100644 global/fancybox/fancy_shadow_se.png create mode 100644 global/fancybox/fancy_shadow_sw.png create mode 100644 global/fancybox/fancy_shadow_w.png create mode 100644 global/fancybox/fancy_title_left.png create mode 100644 global/fancybox/fancy_title_main.png create mode 100644 global/fancybox/fancy_title_over.png create mode 100644 global/fancybox/fancy_title_right.png create mode 100644 global/fancybox/fancybox-x.png create mode 100644 global/fancybox/fancybox-y.png create mode 100644 global/fancybox/fancybox.png create mode 100644 global/fancybox/jquery.easing-1.3.pack.js create mode 100644 global/fancybox/jquery.fancybox-1.3.4.css create mode 100644 global/fancybox/jquery.fancybox-1.3.4.pack.js create mode 100644 global/fancybox/jquery.mousewheel-3.0.4.pack.js create mode 100644 global/images/alert.png create mode 100644 global/images/calendar.png create mode 100644 global/images/clock.png create mode 100644 global/images/error.png create mode 100644 global/images/group_block.png create mode 100644 global/images/group_block_connect.png create mode 100644 global/images/group_block_disconnect.png create mode 100644 global/images/index.php create mode 100644 global/images/info.png create mode 100644 global/images/info_small.png create mode 100644 global/images/lang_placeholder_field_icon.gif create mode 100644 global/images/lang_placeholder_field_icon.png create mode 100644 global/images/loading.gif create mode 100644 global/images/loading_small.gif create mode 100644 global/images/open_new_window.png create mode 100644 global/index.php create mode 100644 global/lang/README.md create mode 100644 global/lang/af.php create mode 100644 global/lang/ar.php create mode 100644 global/lang/az.php create mode 100644 global/lang/be.php create mode 100644 global/lang/bg.php create mode 100644 global/lang/ca.php create mode 100644 global/lang/cs.php create mode 100644 global/lang/cy.php create mode 100644 global/lang/da.php create mode 100644 global/lang/de.php create mode 100644 global/lang/el.php create mode 100644 global/lang/en_us.php create mode 100644 global/lang/es.php create mode 100644 global/lang/et.php create mode 100644 global/lang/fa.php create mode 100644 global/lang/fi.php create mode 100644 global/lang/fr.php create mode 100644 global/lang/ga.php create mode 100644 global/lang/gl.php create mode 100644 global/lang/hi.php create mode 100644 global/lang/hr.php create mode 100644 global/lang/hu.php create mode 100644 global/lang/id.php create mode 100644 global/lang/index.html create mode 100644 global/lang/is.php create mode 100644 global/lang/it.php create mode 100644 global/lang/ja.php create mode 100644 global/lang/ko.php create mode 100644 global/lang/la.php create mode 100644 global/lang/lt.php create mode 100644 global/lang/manifest.json create mode 100644 global/lang/mk.php create mode 100644 global/lang/ms.php create mode 100644 global/lang/mt.php create mode 100644 global/lang/nl.php create mode 100644 global/lang/no.php create mode 100644 global/lang/pl.php create mode 100644 global/lang/pt.php create mode 100644 global/lang/pt_br.php create mode 100644 global/lang/pt_eu.php create mode 100644 global/lang/ro.php create mode 100644 global/lang/ru.php create mode 100644 global/lang/sk.php create mode 100644 global/lang/sl.php create mode 100644 global/lang/sr.php create mode 100644 global/lang/sv.php create mode 100644 global/lang/sw.php create mode 100644 global/lang/th.php create mode 100644 global/lang/tl.php create mode 100644 global/lang/tr.php create mode 100644 global/lang/uk.php create mode 100644 global/lang/vi.php create mode 100644 global/lang/yi.php create mode 100644 global/lang/zh_cn.php create mode 100644 global/lang/zh_tw.php create mode 100644 global/library.php create mode 100644 global/misc/config_core.php create mode 100644 global/misc/index.php create mode 100644 global/scripts/daterangepicker.jquery.js create mode 100644 global/scripts/external_form_smart_fill.js create mode 100644 global/scripts/field_types.php create mode 100644 global/scripts/general.js create mode 100644 global/scripts/index.html create mode 100644 global/scripts/jquery-ui-timepicker-addon.js create mode 100644 global/scripts/jquery.js create mode 100644 global/scripts/manage_client_forms.js create mode 100644 global/scripts/manage_email_templates.js create mode 100644 global/scripts/manage_fields.js create mode 100644 global/scripts/manage_fields.min.js create mode 100644 global/scripts/manage_forms.js create mode 100644 global/scripts/manage_menus.js create mode 100644 global/scripts/manage_modules.js create mode 100644 global/scripts/manage_option_lists.js create mode 100644 global/scripts/manage_submissions.js create mode 100644 global/scripts/manage_views.js create mode 100644 global/scripts/rsv.js create mode 100644 global/scripts/sortable.js create mode 100644 global/smarty_plugins/eval.tpl create mode 100644 global/smarty_plugins/function.clients_dropdown.php create mode 100644 global/smarty_plugins/function.css_files.php create mode 100644 global/smarty_plugins/function.display_account_name.php create mode 100644 global/smarty_plugins/function.display_custom_field.php create mode 100644 global/smarty_plugins/function.display_edit_submission_view_dropdown.php create mode 100644 global/smarty_plugins/function.display_email_template_dropdown.php create mode 100644 global/smarty_plugins/function.display_field_type_name.php create mode 100644 global/smarty_plugins/function.display_field_type_settings_dropdown.php create mode 100644 global/smarty_plugins/function.display_field_types_dropdown.php create mode 100644 global/smarty_plugins/function.display_file_field.php create mode 100644 global/smarty_plugins/function.display_files.php create mode 100644 global/smarty_plugins/function.display_form_name.php create mode 100644 global/smarty_plugins/function.display_multi_select_field_values.php create mode 100644 global/smarty_plugins/function.display_num_form_submissions.php create mode 100644 global/smarty_plugins/function.display_option_list.php create mode 100644 global/smarty_plugins/function.display_view_name.php create mode 100644 global/smarty_plugins/function.dropdown.php create mode 100644 global/smarty_plugins/function.edit_custom_field.php create mode 100644 global/smarty_plugins/function.edit_phone_field.php create mode 100644 global/smarty_plugins/function.email_patterns_dropdown.php create mode 100644 global/smarty_plugins/function.eval_smarty_string.php create mode 100644 global/smarty_plugins/function.field_sizes_dropdown.php create mode 100644 global/smarty_plugins/function.form_fields_dropdown.php create mode 100644 global/smarty_plugins/function.form_view_fields_dropdown.php create mode 100644 global/smarty_plugins/function.forms_dropdown.php create mode 100644 global/smarty_plugins/function.ft_include.php create mode 100644 global/smarty_plugins/function.js_files.php create mode 100644 global/smarty_plugins/function.languages_dropdown.php create mode 100644 global/smarty_plugins/function.menus_dropdown.php create mode 100644 global/smarty_plugins/function.module_function.php create mode 100644 global/smarty_plugins/function.option_list_dropdown.php create mode 100644 global/smarty_plugins/function.pages_dropdown.php create mode 100644 global/smarty_plugins/function.show_page_load_time.php create mode 100644 global/smarty_plugins/function.submission_dropdown.php create mode 100644 global/smarty_plugins/function.submission_dropdown_multiple.php create mode 100644 global/smarty_plugins/function.submission_listing_quicklinks.php create mode 100644 global/smarty_plugins/function.template_hook.php create mode 100644 global/smarty_plugins/function.themes_dropdown.php create mode 100644 global/smarty_plugins/function.timezone_offset_dropdown.php create mode 100644 global/smarty_plugins/function.view_fields.php create mode 100644 global/smarty_plugins/function.view_phone_field.php create mode 100644 global/smarty_plugins/function.views_dropdown.php create mode 100644 global/smarty_plugins/modifier.custom_format_date.php create mode 100644 global/smarty_plugins/modifier.hook_call_defined.php create mode 100644 global/svg/github.svg create mode 100644 index.php create mode 100644 install/actions-installation.php create mode 100644 install/index.php create mode 100644 modules/index.html create mode 100644 process.php create mode 100644 react/main.bundle.js create mode 100644 react/main.bundle.js.map create mode 100644 themes/default/about/screenshot.gif create mode 100644 themes/default/about/theme.php create mode 100644 themes/default/about/thumbnail.gif create mode 100644 themes/default/admin/account/index.tpl create mode 100644 themes/default/admin/clients/add.tpl create mode 100644 themes/default/admin/clients/edit.tpl create mode 100644 themes/default/admin/clients/index.tpl create mode 100644 themes/default/admin/clients/tab_forms.tpl create mode 100644 themes/default/admin/clients/tab_main.tpl create mode 100644 themes/default/admin/clients/tab_settings.tpl create mode 100644 themes/default/admin/forms/add/index.tpl create mode 100644 themes/default/admin/forms/add/internal.tpl create mode 100644 themes/default/admin/forms/add/step1.tpl create mode 100644 themes/default/admin/forms/add/step2.tpl create mode 100644 themes/default/admin/forms/add/step3.tpl create mode 100644 themes/default/admin/forms/add/step4.tpl create mode 100644 themes/default/admin/forms/add/step5.tpl create mode 100644 themes/default/admin/forms/add/step6.tpl create mode 100644 themes/default/admin/forms/delete_form.tpl create mode 100644 themes/default/admin/forms/edit/index.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_email.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_email_tab1.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_email_tab2.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_email_tab3.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_email_tab4.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_view.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_view__fields.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_view__filters.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_view__list_page.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_view__main.tpl create mode 100644 themes/default/admin/forms/edit/tab_edit_view__tabs.tpl create mode 100644 themes/default/admin/forms/edit/tab_email_settings.tpl create mode 100644 themes/default/admin/forms/edit/tab_emails.tpl create mode 100644 themes/default/admin/forms/edit/tab_fields.tpl create mode 100644 themes/default/admin/forms/edit/tab_main.tpl create mode 100644 themes/default/admin/forms/edit/tab_public_form_omit_list.tpl create mode 100644 themes/default/admin/forms/edit/tab_public_view_omit_list.tpl create mode 100644 themes/default/admin/forms/edit/tab_views.tpl create mode 100644 themes/default/admin/forms/edit_submission.tpl create mode 100644 themes/default/admin/forms/form_placeholders.tpl create mode 100644 themes/default/admin/forms/index.tpl create mode 100644 themes/default/admin/forms/option_lists/edit.tpl create mode 100644 themes/default/admin/forms/option_lists/index.tpl create mode 100644 themes/default/admin/forms/option_lists/tab_form_fields.tpl create mode 100644 themes/default/admin/forms/option_lists/tab_main.tpl create mode 100644 themes/default/admin/forms/submissions.tpl create mode 100644 themes/default/admin/index.html create mode 100644 themes/default/admin/modules/about.tpl create mode 100644 themes/default/admin/modules/index.tpl create mode 100644 themes/default/admin/settings/index.tpl create mode 100644 themes/default/admin/settings/tab_accounts.tpl create mode 100644 themes/default/admin/settings/tab_edit_admin_menu.tpl create mode 100644 themes/default/admin/settings/tab_edit_client_menu.tpl create mode 100644 themes/default/admin/settings/tab_files.tpl create mode 100644 themes/default/admin/settings/tab_main.tpl create mode 100644 themes/default/admin/settings/tab_menus.tpl create mode 100644 themes/default/admin/themes/about.tpl create mode 100644 themes/default/admin/themes/index.tpl create mode 100644 themes/default/clients/account/index.tpl create mode 100644 themes/default/clients/account/tab_main.tpl create mode 100644 themes/default/clients/account/tab_settings.tpl create mode 100644 themes/default/clients/forms/edit_submission.tpl create mode 100644 themes/default/clients/forms/index.tpl create mode 100644 themes/default/clients/index.tpl create mode 100644 themes/default/css/index.html create mode 100644 themes/default/css/smoothness/images/ui-bg_flat_0_000000_40x100.png create mode 100644 themes/default/css/smoothness/images/ui-bg_flat_0_444444_40x100.png create mode 100644 themes/default/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 themes/default/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 themes/default/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 themes/default/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 themes/default/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 themes/default/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 themes/default/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 themes/default/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 themes/default/css/smoothness/images/ui-icons_222222_256x240.png create mode 100644 themes/default/css/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100644 themes/default/css/smoothness/images/ui-icons_454545_256x240.png create mode 100644 themes/default/css/smoothness/images/ui-icons_888888_256x240.png create mode 100644 themes/default/css/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100644 themes/default/css/smoothness/jquery-ui-1.8.6.custom.css create mode 100644 themes/default/css/smoothness/jquery-ui.css create mode 100644 themes/default/css/styles.css create mode 100644 themes/default/css/swatch_aquamarine.css create mode 100644 themes/default/css/swatch_blue.css create mode 100644 themes/default/css/swatch_dark_blue.css create mode 100644 themes/default/css/swatch_green.css create mode 100644 themes/default/css/swatch_grey.css create mode 100644 themes/default/css/swatch_light_brown.css create mode 100644 themes/default/css/swatch_orange.css create mode 100644 themes/default/css/swatch_purple.css create mode 100644 themes/default/css/swatch_red.css create mode 100644 themes/default/css/swatch_yellow.css create mode 100644 themes/default/error.tpl create mode 100644 themes/default/footer.tpl create mode 100644 themes/default/forget_password.tpl create mode 100644 themes/default/header.tpl create mode 100644 themes/default/images/account_section_left_aquamarine2x.png create mode 100644 themes/default/images/account_section_left_blue2x.png create mode 100644 themes/default/images/account_section_left_dark_blue2x.png create mode 100644 themes/default/images/account_section_left_green2x.png create mode 100644 themes/default/images/account_section_left_grey2x.png create mode 100644 themes/default/images/account_section_left_light_brown2x.png create mode 100644 themes/default/images/account_section_left_orange2x.png create mode 100644 themes/default/images/account_section_left_purple2x.png create mode 100644 themes/default/images/account_section_left_red2x.png create mode 100644 themes/default/images/account_section_left_yellow2x.png create mode 100644 themes/default/images/account_section_right_aquamarine2x.png create mode 100644 themes/default/images/account_section_right_blue2x.png create mode 100644 themes/default/images/account_section_right_dark_blue2x.png create mode 100644 themes/default/images/account_section_right_green2x.png create mode 100644 themes/default/images/account_section_right_grey2x.png create mode 100644 themes/default/images/account_section_right_light_brown2x.png create mode 100644 themes/default/images/account_section_right_orange2x.png create mode 100644 themes/default/images/account_section_right_purple2x.png create mode 100644 themes/default/images/account_section_right_red2x.png create mode 100644 themes/default/images/account_section_right_yellow2x.png create mode 100644 themes/default/images/admin_edit.png create mode 100644 themes/default/images/admin_view.png create mode 100644 themes/default/images/ajax_activity.gif create mode 100644 themes/default/images/ajax_activity_grey.gif create mode 100644 themes/default/images/ajax_activity_light_grey.gif create mode 100644 themes/default/images/ajax_activity_yellow.gif create mode 100644 themes/default/images/ajax_no_activity.gif create mode 100644 themes/default/images/ajax_no_activity_grey.gif create mode 100644 themes/default/images/ajax_no_activity_light_grey.gif create mode 100644 themes/default/images/ajax_no_activity_yellow.gif create mode 100644 themes/default/images/columns.png create mode 100644 themes/default/images/delete.png create mode 100644 themes/default/images/delete_bg.jpg create mode 100644 themes/default/images/delete_group.png create mode 100644 themes/default/images/edit.png create mode 100644 themes/default/images/edit_form.png create mode 100644 themes/default/images/edit_small.gif create mode 100644 themes/default/images/favicon.ico create mode 100644 themes/default/images/fields.png create mode 100644 themes/default/images/fields_table_bg.png create mode 100644 themes/default/images/filter.png create mode 100644 themes/default/images/icon_accounts.gif create mode 100644 themes/default/images/icon_forms.gif create mode 100644 themes/default/images/icon_login.gif create mode 100644 themes/default/images/icon_modules.gif create mode 100644 themes/default/images/icon_option_lists.gif create mode 100644 themes/default/images/icon_settings.gif create mode 100644 themes/default/images/icon_themes.gif create mode 100644 themes/default/images/index.php create mode 100644 themes/default/images/left_bg.jpg create mode 100644 themes/default/images/left_nav_bg.jpg create mode 100644 themes/default/images/list_table_heading.jpg create mode 100644 themes/default/images/list_table_heading_over.jpg create mode 100644 themes/default/images/login.png create mode 100644 themes/default/images/logo_aquamarine2x.png create mode 100644 themes/default/images/logo_blue2x.png create mode 100644 themes/default/images/logo_dark_blue2x.png create mode 100644 themes/default/images/logo_green2x.png create mode 100644 themes/default/images/logo_grey2x.png create mode 100644 themes/default/images/logo_light_brown2x.png create mode 100644 themes/default/images/logo_orange2x.png create mode 100644 themes/default/images/logo_purple2x.png create mode 100644 themes/default/images/logo_red2x.png create mode 100644 themes/default/images/logo_yellow2x.png create mode 100644 themes/default/images/main_bg.jpg create mode 100644 themes/default/images/nav_down.jpg create mode 100644 themes/default/images/nav_row_bg.jpg create mode 100644 themes/default/images/page_content_bg.jpg create mode 100644 themes/default/images/placeholders.png create mode 100644 themes/default/images/popup_bg.jpg create mode 100644 themes/default/images/popup_header_bg_green.png create mode 100644 themes/default/images/popup_header_bg_grey.png create mode 100644 themes/default/images/sort.png create mode 100644 themes/default/images/sort_down.gif create mode 100644 themes/default/images/sort_up.gif create mode 100644 themes/default/images/submenu_item.gif create mode 100644 themes/default/images/tab_not_selected_bg.gif create mode 100644 themes/default/images/tabs.png create mode 100644 themes/default/images/top_banner_bg.jpg create mode 100644 themes/default/images/top_row_aquamarine2x.png create mode 100644 themes/default/images/top_row_blue2x.png create mode 100644 themes/default/images/top_row_dark_blue2x.png create mode 100644 themes/default/images/top_row_green2x.png create mode 100644 themes/default/images/top_row_grey2x.png create mode 100644 themes/default/images/top_row_light_brown2x.png create mode 100644 themes/default/images/top_row_orange2x.png create mode 100644 themes/default/images/top_row_purple2x.png create mode 100644 themes/default/images/top_row_red2x.png create mode 100644 themes/default/images/top_row_yellow2x.png create mode 100644 themes/default/images/up.jpg create mode 100644 themes/default/images/up_down.png create mode 100644 themes/default/images/utilities.png create mode 100644 themes/default/images/utilities_small.png create mode 100644 themes/default/images/view.png create mode 100644 themes/default/index.tpl create mode 100644 themes/default/js_pagination.tpl create mode 100644 themes/default/menu.tpl create mode 100644 themes/default/messages.tpl create mode 100644 themes/default/module_menu.tpl create mode 100644 themes/default/modules_footer.tpl create mode 100644 themes/default/modules_header.tpl create mode 100644 themes/default/pagination.tpl create mode 100644 themes/default/scripts/jquery-ui-1.8.6.custom.min.js create mode 100644 themes/default/scripts/jquery-ui.js create mode 100644 themes/default/tabset_close.tpl create mode 100644 themes/default/tabset_open.tpl create mode 100644 themes/index.html create mode 100644 upload/index.html create mode 100644 vendor/autoload.php create mode 100644 vendor/bin/validate-json create mode 100644 vendor/composer/ClassLoader.php create mode 100644 vendor/composer/LICENSE create mode 100644 vendor/composer/autoload_classmap.php create mode 100644 vendor/composer/autoload_files.php create mode 100644 vendor/composer/autoload_namespaces.php create mode 100644 vendor/composer/autoload_psr4.php create mode 100644 vendor/composer/autoload_real.php create mode 100644 vendor/composer/autoload_static.php create mode 100644 vendor/composer/installed.json create mode 100644 vendor/justinrainbow/json-schema/LICENSE create mode 100644 vendor/justinrainbow/json-schema/README.md create mode 100644 vendor/justinrainbow/json-schema/bin/validate-json create mode 100644 vendor/justinrainbow/json-schema/composer.json create mode 100644 vendor/justinrainbow/json-schema/demo/README.md create mode 100644 vendor/justinrainbow/json-schema/demo/data.json create mode 100644 vendor/justinrainbow/json-schema/demo/demo.php create mode 100644 vendor/justinrainbow/json-schema/demo/schema.json create mode 100644 vendor/justinrainbow/json-schema/dist/schema/json-schema-draft-03.json create mode 100644 vendor/justinrainbow/json-schema/dist/schema/json-schema-draft-04.json create mode 100644 vendor/justinrainbow/json-schema/phpunit.xml.dist create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php create mode 100644 vendor/justinrainbow/json-schema/src/JsonSchema/Validator.php create mode 100644 vendor/ramsey/array_column/CHANGELOG.md create mode 100644 vendor/ramsey/array_column/LICENSE create mode 100644 vendor/ramsey/array_column/README.md create mode 100644 vendor/ramsey/array_column/composer.json create mode 100644 vendor/ramsey/array_column/phpunit.xml.dist create mode 100644 vendor/ramsey/array_column/src/array_column.php create mode 100644 vendor/ramsey/array_column/tests/ArrayColumnTest.php create mode 100644 vendor/ramsey/array_column/tests/bootstrap.php create mode 100644 vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt create mode 100644 vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt create mode 100644 vendor/smarty/smarty/LICENSE create mode 100644 vendor/smarty/smarty/NEW_FEATURES.txt create mode 100644 vendor/smarty/smarty/README create mode 100644 vendor/smarty/smarty/README.md create mode 100644 vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt create mode 100644 vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt create mode 100644 vendor/smarty/smarty/SMARTY_3.1_NOTES.txt create mode 100644 vendor/smarty/smarty/change_log.txt create mode 100644 vendor/smarty/smarty/demo/configs/test.conf create mode 100644 vendor/smarty/smarty/demo/index.php create mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.apc.php create mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php create mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php create mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php create mode 100644 vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php create mode 100644 vendor/smarty/smarty/demo/plugins/resource.extendsall.php create mode 100644 vendor/smarty/smarty/demo/plugins/resource.mysql.php create mode 100644 vendor/smarty/smarty/demo/plugins/resource.mysqls.php create mode 100644 vendor/smarty/smarty/demo/templates/footer.tpl create mode 100644 vendor/smarty/smarty/demo/templates/header.tpl create mode 100644 vendor/smarty/smarty/demo/templates/index.tpl create mode 100644 vendor/smarty/smarty/libs/Autoloader.php create mode 100644 vendor/smarty/smarty/libs/Smarty.class.php create mode 100644 vendor/smarty/smarty/libs/SmartyBC.class.php create mode 100644 vendor/smarty/smarty/libs/bootstrap.php create mode 100644 vendor/smarty/smarty/libs/debug.tpl create mode 100644 vendor/smarty/smarty/libs/plugins/block.textformat.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.counter.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.cycle.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.fetch.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.html_image.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.html_options.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.html_radios.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.html_select_date.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.html_select_time.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.html_table.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.mailto.php create mode 100644 vendor/smarty/smarty/libs/plugins/function.math.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifier.capitalize.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifier.date_format.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifier.escape.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifier.replace.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifier.spacify.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifier.truncate.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php create mode 100644 vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php create mode 100644 vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php create mode 100644 vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php create mode 100644 vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php create mode 100644 vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php create mode 100644 vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php create mode 100644 vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php create mode 100644 vendor/smarty/smarty/libs/plugins/shared.mb_wordwrap.php create mode 100644 vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_data.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include_php.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_registered.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_resource.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_security.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smarty_variable.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php create mode 100644 vendor/smarty/smarty/libs/sysplugins/smartyexception.php diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..8f20e7c9 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, 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 Library 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 \ No newline at end of file diff --git a/admin/account/index.php b/admin/account/index.php new file mode 100644 index 00000000..fbc3564b --- /dev/null +++ b/admin/account/index.php @@ -0,0 +1,89 @@ +checkAuth("admin"); + +$LANG = Core::$L; + +// update the administrator's account +$success = true; +$message = ""; +if (isset($_POST) && !empty($_POST)) { + list($success, $message) = Administrator::updateAdminAccount($_POST, Core::$user->getAccountId()); + + // if the user just changed their language file, reset the value in sessions and refresh the page + if ($success && ($_POST["old_ui_language"] != $_POST["ui_language"])) { + Sessions::set("ui_language", $_POST["ui_language"]); + General::redirect("index.php?updated"); + } +} + +// here, the user has just changed their ui language +if (isset($_GET["updated"])) { + $success = true; + $message = $LANG["notify_account_updated"]; +} + +$admin_info = Administrator::getAdminInfo(); + +$replacement_info = array("datefunctionlink" => 'date()'); +$LANG = Core::$L; + +// compile the theme variables +$page_vars = array( + "page" => "your_account", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("your_account"), + "head_title" => $LANG["phrase_your_account"], + "admin_info" => $admin_info, + "text_date_formatting_link" => General::evalSmartyString($LANG["text_date_formatting_link"], $replacement_info) +); + +$page_vars["head_js"] =<< 0 && $(swatch_id).val() == "") { + return [[$(swatch_id)[0], "{$LANG["validation_no_theme_swatch"]}"]]; + } + return true; + } + + function validate_username() { + var username = $("input[name=username]").val(); + if (username.match(/[^\.@a-zA-Z0-9_]/)) { + return [[$("input[name=username]")[0], "{$LANG['validation_invalid_admin_username']}"]]; + } + return true; + } + + $(function() { document.login_info.first_name.focus(); }); +END; + +Themes::displayPage("admin/account/index.tpl", $page_vars); diff --git a/admin/clients/add.php b/admin/clients/add.php new file mode 100644 index 00000000..84a7243d --- /dev/null +++ b/admin/clients/add.php @@ -0,0 +1,94 @@ +checkAuth("admin"); + +$post_values = array(); + +$success = true; +$message = ""; +if (isset($_POST) && !empty($_POST['add_client'])) { + list($success, $message, $new_account_id) = Administrator::addClient($request); + + // if added, redirect to the manage client page + if ($success) { + General::redirect("edit.php?page=main&client_id=$new_account_id"); + exit; + } else { + $post_values = $_POST; + } +} + +$LANG = Core::$L; +$settings = Settings::get(); +$conditional_validation = array(); +if (!empty($settings["min_password_length"])) { + $rule = General::evalSmartyString($LANG["validation_client_password_too_short"], array("number" => $settings["min_password_length"])); + $conditional_validation[] = "rules.push(\"if:password!=,length>={$settings["min_password_length"]},password,$rule\");"; +} + +$required_password_chars = explode(",", $settings["required_password_chars"]); +if (in_array("uppercase", $required_password_chars)) { + $conditional_validation[] = "rules.push(\"if:password!=,reg_exp,password,[A-Z],{$LANG["validation_client_password_missing_uppercase"]}\")"; +} +if (in_array("number", $required_password_chars)) { + $conditional_validation[] = "rules.push(\"if:password!=,reg_exp,password,[0-9],{$LANG["validation_client_password_missing_number"]}\")"; +} +if (in_array("special_char", $required_password_chars)) { + $error = General::evalSmartyString($LANG["validation_client_password_missing_special_char"], array("chars" => $g_password_special_chars)); + $password_special_chars = preg_quote($g_password_special_chars); + $conditional_validation[] = "rules.push(\"if:password!=,reg_exp,password,[$password_special_chars],$error\")"; +} +$conditional_rules = implode("\n", $conditional_validation); +$core_password_special_chars = Core::getRequiredPasswordSpecialChars(); + + +$head_js =<< "add_client", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("add_client"), + "head_title" => $LANG["phrase_add_client"], + "required_password_chars" => $required_password_chars, + "password_special_chars" => $core_password_special_chars, + "has_extra_password_requirements" => (!empty($settings["required_password_chars"]) || !empty($settings["min_password_length"])), + "has_min_password_length" => !empty($settings["min_password_length"]), + "password_special_char" => General::evalSmartyString($LANG["phrase_password_special_char"], array("chars" => $core_password_special_chars)), + "phrase_password_min" => General::evalSmartyString($LANG["phrase_password_min"], array("length" => $settings["min_password_length"])), + "vals" => $post_values, + "head_js" => $head_js +); + +Themes::displayPage("admin/clients/add.tpl", $page_vars); diff --git a/admin/clients/edit.php b/admin/clients/edit.php new file mode 100644 index 00000000..06096246 --- /dev/null +++ b/admin/clients/edit.php @@ -0,0 +1,63 @@ +checkAuth("admin"); + +$LANG = Core::$L; + +$client_id = General::loadField("client_id", "curr_client_id", ""); +if (empty($client_id)) { + General::redirect("index.php"); +} + +// figure out the "<< prev" and "next >>" links +$order = General::loadField("order", "client_sort_order", "last_name-ASC"); +$keyword = General::loadField("keyword", "client_search_keyword", ""); +$status = General::loadField("status", "client_search_status", ""); + +// store the current selected tab in memory +$page = General::loadField("page", "client_{$client_id}_page", "main"); + +$search_criteria = array( + "order" => $order, + "keyword" => $keyword, + "status" => $status +); + +$links = Clients::getClientPrevNextLinks($client_id, $search_criteria); + +$prev_tabset_link = (!empty($links["prev_account_id"])) ? "edit.php?page=$page&client_id={$links["prev_account_id"]}" : ""; +$next_tabset_link = (!empty($links["next_account_id"])) ? "edit.php?page=$page&client_id={$links["next_account_id"]}" : ""; + +$same_page = General::getCleanPhpSelf(); +$tabs = array( + "main" => array("tab_label" => $LANG["word_main"], "tab_link" => "{$same_page}?page=main&client_id={$client_id}"), + "settings" => array("tab_label" => $LANG["word_settings"], "tab_link" => "{$same_page}?page=settings&client_id={$client_id}"), + "forms" => array("tab_label" => $LANG["word_forms"], "tab_link" => "{$same_page}?page=forms&client_id={$client_id}") +); + +// start compiling the page vars here (save duplicate code!) +$page_vars = array(); +$page_vars["tabs"] = $tabs; +$page_vars["show_tabset_nav_links"] = true; +$page_vars["prev_tabset_link"] = $prev_tabset_link; +$page_vars["next_tabset_link"] = $next_tabset_link; +$page_vars["prev_tabset_link_label"] = $LANG["phrase_prev_client"]; +$page_vars["next_tabset_link_label"] = $LANG["phrase_next_client"]; + +$map = array( + "main" => "page_main.php", + "settings" => "page_settings.php", + "forms" => "page_forms.php" +); +if (isset($map[$page])) { + require_once($map[$page]); +} else { + require_once($map["main"]); +} diff --git a/admin/clients/index.php b/admin/clients/index.php new file mode 100644 index 00000000..dd086ebc --- /dev/null +++ b/admin/clients/index.php @@ -0,0 +1,89 @@ +checkAuth("admin"); + +$success = true; +$message = ""; +if (isset($_GET['delete']) && !empty($_GET['client_id'])) { + list($success, $message) = Clients::deleteClient($_GET['client_id']); +} +if (isset($_GET['login'])) { + Administrator::loginAsClient($_GET['login']); +} + +if (isset($_GET["reset"])) { + Sessions::set("client_sort_order", ""); + Sessions::set("client_search_keyword", ""); + Sessions::set("client_search_status", ""); +} +$order = General::loadField("order", "client_sort_order", "last_name-ASC"); +$keyword = General::loadField("keyword", "client_search_keyword", ""); +$status = General::loadField("status", "client_search_status", ""); + +$search_criteria = array( + "order" => $order, + "keyword" => $keyword, + "status" => $status +); +$num_clients = Clients::getNumClients(); + +// retrieve all client information +$clients = Clients::searchClients($search_criteria); +$LANG = Core::$L; + + +$head_js =<<< END + var page_ns = {}; + page_ns.dialog = $("
"); + page_ns.delete_client = function(account_id) { + ft.create_dialog({ + dialog: page_ns.dialog, + title: "{$LANG["phrase_please_confirm"]}", + content: "{$LANG["validation_check_delete_client"]}", + popup_type: "warning", + buttons: [ + { + text: "{$LANG["word_yes"]}", + click: function() { + window.location = "index.php?delete=1&client_id=" + account_id; + } + }, + { + text: "{$LANG["word_no"]}", + click: function() { + $(this).dialog("close"); + } + } + ] + }); + return false; + } +END; + +$page = array( + "page" => "clients", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("clients"), + "head_title" => $LANG["word_clients"], + "num_clients" => $num_clients, + "clients" => $clients, + "order" => $order, + "search_criteria" => $search_criteria, + "pagination" => General::getJsPageNav(count($clients), Sessions::get("settings.num_clients_per_page"), 1), + "js_messages" => array("phrase_delete_row"), + "head_js" => $head_js +); + +Themes::displayPage("admin/clients/index.tpl", $page); diff --git a/admin/clients/page_forms.php b/admin/clients/page_forms.php new file mode 100644 index 00000000..2f84d369 --- /dev/null +++ b/admin/clients/page_forms.php @@ -0,0 +1,102 @@ + true, + "status" => "" +)); + +$forms_js_rows = array(); +$forms_js_rows[] = "var page_ns = {}"; +$forms_js_rows[] = "page_ns.forms = []"; +$form_views_js_info = array("page_ns.form_views = []"); + +// convert ALL form and View info into Javascript, for use in the page +foreach ($forms as $form_info) { + // ignore those forms that aren't set up + if ($form_info["is_complete"] == "no") { + continue; + } + + $form_id = $form_info["form_id"]; + $form_name = htmlspecialchars($form_info["form_name"]); + $forms_js_rows[] = "page_ns.forms.push([$form_id, \"$form_name\"])"; + + $form_views = Views::getViews($form_id); + + $v = array(); + foreach ($form_views["results"] as $form_view) { + $view_id = $form_view["view_id"]; + $view_name = htmlspecialchars($form_view["view_name"]); + $v[] = "[$view_id, \"$view_name\"]"; + } + $views = implode(",", $v); + + $form_views_js_info[] = "page_ns.form_views.push([$form_id,[$views]])"; +} + +$forms_js = implode(";\n", $forms_js_rows); +$form_views_js = implode(";\n", $form_views_js_info); + +// loop through each form and add all the Views +$all_form_views = array(); +foreach ($forms as $form_info) { + $form_id = $form_info["form_id"]; + $all_form_views[$form_id] = Views::getFormViews($form_id); +} + +$client_forms = Forms::searchForms(array( + "account_id" => $client_id, + "is_admin" => true, + "status" => "" +)); + + +$updated_client_forms = array(); +foreach ($client_forms as $form_info) { + $form_id = $form_info["form_id"]; + $form_info["views"] = Views::getFormViews($form_id, $client_id); + $updated_client_forms[] = $form_info; +} + +$LANG = Core::$L; +$root_url = Core::getRootUrl(); + +// compile header information +$page_vars["page"] = "forms"; +$page_vars["g_success"] = $success; +$page_vars["g_message"] = $message; +$page_vars["page_url"] = Pages::getPageUrl("edit_client_forms", array("client_id" => $client_id)); +$page_vars["head_title"] = "{$LANG["phrase_edit_client"]} - {$LANG["word_forms"]}"; +$page_vars["client_info"] = $client_info; +$page_vars["forms"] = $forms; +$page_vars["client_forms"] = $updated_client_forms; +$page_vars["all_form_views"] = $all_form_views; +$page_vars["client_id"] = $client_id; +$page_vars["js_messages"] = array( + "word_delete", "phrase_please_select", "phrase_please_select_form", "word_add_uc_rightarrow", + "word_remove_uc_leftarrow", "phrase_form_already_selected" +); +$page_vars["head_string"] = ""; +$page_vars["head_js"] = <<< END +$forms_js +$form_views_js +END; + +Themes::displayPage("admin/clients/edit.tpl", $page_vars); diff --git a/admin/clients/page_main.php b/admin/clients/page_main.php new file mode 100644 index 00000000..d53a61f5 --- /dev/null +++ b/admin/clients/page_main.php @@ -0,0 +1,80 @@ + $client_info["settings"]["min_password_length"])); + $conditional_validation[] = "rules.push(\"if:password!=,length>={$client_info["settings"]["min_password_length"]},password,$rule\");"; +} + +$required_password_chars = explode(",", $client_info["settings"]["required_password_chars"]); +if (in_array("uppercase", $required_password_chars)) { + $conditional_validation[] = "rules.push(\"if:password!=,reg_exp,password,[A-Z],{$LANG["validation_client_password_missing_uppercase"]}\")"; +} +if (in_array("number", $required_password_chars)) { + $conditional_validation[] = "rules.push(\"if:password!=,reg_exp,password,[0-9],{$LANG["validation_client_password_missing_number"]}\")"; +} +if (in_array("special_char", $required_password_chars)) { + $error = General::evalSmartyString($LANG["validation_client_password_missing_special_char"], array("chars" => $req_password_special_chars)); + $password_special_chars = preg_quote($req_password_special_chars); + $conditional_validation[] = "rules.push(\"if:password!=,reg_exp,password,[$password_special_chars],$error\")"; +} +$conditional_rules = implode("\n", $conditional_validation); + + +// define info for template +$page_vars["page"] = "main"; +$page_vars["g_success"] = $success; +$page_vars["g_message"] = $message; +$page_vars["page_url"] = Pages::getPageUrl("edit_client_main", array("client_id" => $client_id)); +$page_vars["head_title"] = "{$LANG["phrase_edit_client"]} - {$LANG["word_main"]}"; +$page_vars["client_info"] = $client_info; +$page_vars["client_id"] = $client_id; +$page_vars["required_password_chars"] = $required_password_chars; +$page_vars["password_special_chars"] = $req_password_special_chars; +$page_vars["has_extra_password_requirements"] = (!empty($client_info["settings"]["required_password_chars"]) || !empty($client_info["settings"]["min_password_length"])); +$page_vars["has_min_password_length"] = !empty($client_info["settings"]["min_password_length"]); +$page_vars["password_special_char"] = General::evalSmartyString($LANG["phrase_password_special_char"], array("chars" => $req_password_special_chars)); +$page_vars["phrase_password_min"] = General::evalSmartyString($LANG["phrase_password_min"], array("length" => $client_info["settings"]["min_password_length"])); + +$page_vars["head_js"] =<<refreshLanguageList(); +} + +$client_info = Accounts::getAccountInfo($client_id); +$forms = Forms::searchForms(array( + "account_id" => $client_id, + "status" => "" +)); + +$replacement_info = array( + "datefunctionlink" => 'date()' +); + +// ------------------------------------------------------------------------------------------- + +// compile header information +$page_vars["page"] = "settings"; +$page_vars["g_success"] = $success; +$page_vars["g_message"] = $message; +$page_vars["page_url"] = Pages::getPageUrl("edit_client_settings", array("client_id" => $client_id)); +$page_vars["head_title"] = "{$LANG["phrase_edit_client"]} - {$LANG["word_settings"]}"; +$page_vars["phrase_one_special_char"] = General::evalSmartyString($LANG["phrase_one_special_char"], array("chars" => $req_password_special_chars)); +$page_vars["client_info"] = $client_info; +$page_vars["forms"] = $forms; +$page_vars["client_id"] = $client_id; +$page_vars["text_date_formatting_link"] = General::evalSmartyString($LANG["text_date_formatting_link"], $replacement_info); + +$page_vars["head_js"] = <<< END +var rules = []; +rules.push("required,page_titles,{$LANG["validation_no_titles"]}"); +rules.push("required,menu_id,{$LANG["validation_no_menu"]}"); +rules.push("required,theme,{$LANG["validation_no_theme"]}"); +rules.push("function,validate_swatch"); +rules.push("required,login_page,{$LANG["validation_no_client_login_page"]}"); +rules.push("required,logout_url,{$LANG["validation_no_logout_url"]}"); +rules.push("required,ui_language,{$LANG["validation_no_ui_language"]}"); +rules.push("required,sessions_timeout,{$LANG["validation_no_sessions_timeout"]}"); +rules.push("digits_only,sessions_timeout,{$LANG["validation_invalid_sessions_timeout"]}"); +rules.push("required,date_format,{$LANG["validation_no_date_format"]}"); + +function validate_swatch() { + var theme = $("#theme").val(); + var swatch_id = "#" + theme + "_theme_swatches"; + if ($(swatch_id).length > 0 && $(swatch_id).val() == "") { + return [[$(swatch_id)[0], "{$LANG["validation_no_theme_swatch"]}"]]; + } + return true; +} + +$(function() { $("#settings_form :input:visible:enabled:first").focus(); }); +END; + +Themes::displayPage("admin/clients/edit.tpl", $page_vars); diff --git a/admin/forms/add/index.php b/admin/forms/add/index.php new file mode 100644 index 00000000..7e1a06f1 --- /dev/null +++ b/admin/forms/add/index.php @@ -0,0 +1,65 @@ +checkAuth("client"); + +if (isset($request["external"])) { + General::redirect("step1.php"); +} else if (isset($request["internal"])) { + General::redirect("internal.php"); +} + +if (isset($request["new_form"])) { + Sessions::clear("add_form_form_id"); +} + +$LANG = Core::$L; +$num_forms = Forms::getFormCount(); +$max_forms = Core::getMaxForms(); + +$head_js =<<< END +$(function() { + $("#select_external").bind("click", function() { + var continue_decoded = $("
").html("{$LANG["word_continue_rightarrow"]}").text(); + ft.create_dialog({ + dialog: $("#add_external_form_dialog"), + title: "{$LANG["word_checklist"]}", + popup_type: "info", + min_width: 600, + buttons: [{ + text: continue_decoded, + click: function() { + window.location = "step1.php"; + } + }, + { + text: "{$LANG["word_cancel"]}", + click: function() { + $(this).dialog("close"); + } + }] + }); + }); +}); +END; + +$page = array( + "page" => "add_form_choose_type", + "page_url" => Pages::getPageUrl("add_form_choose_type"), + "head_title" => "{$LANG['phrase_add_form']}", + "max_forms_reached" => !empty($max_forms) && $num_forms >= $max_forms, + "max_forms" => $max_forms, + "notify_max_forms_reached" => General::evalSmartyString($LANG["notify_max_forms_reached"], array("max_forms" => $max_forms)), + "head_js" => $head_js +); + +Themes::displayPage("admin/forms/add/index.tpl", $page); diff --git a/admin/forms/add/internal.php b/admin/forms/add/internal.php new file mode 100644 index 00000000..379c5d58 --- /dev/null +++ b/admin/forms/add/internal.php @@ -0,0 +1,59 @@ +checkAuth("admin"); + +$success = true; +$message = ""; +if (isset($request["add_form"])) { + list($success, $message, $new_form_id) = Forms::createInternalForm($request); + if ($message) { + General::redirect("../edit/?form_id={$new_form_id}&message=notify_internal_form_created"); + } +} + +$LANG = Core::$L; + +$head_js =<<< END +ft.click([ + { el: "at1", targets: [{ el: "custom_clients", action: "hide" }] }, + { el: "at2", targets: [{ el: "custom_clients", action: "hide" }] }, + { el: "at3", targets: [{ el: "custom_clients", action: "show" }] } +]); + +$(function() { + $("#form_name").focus(); + $("#create_internal_form").bind("submit",function(e) { + var rules = []; + rules.push("required,form_name,{$LANG["validation_no_form_name"]}"); + rules.push("required,num_fields,{$LANG["validation_no_num_form_fields"]}"); + rules.push("digits_only,num_fields,{$LANG["validation_invalid_num_form_fields"]}"); + rules.push("range<=1000,num_fields,{$LANG["validation_internal_form_too_many_fields"]}"); + rules.push("required,access_type,{$LANG["validation_no_access_type"]}"); + if (!rsv.validate(this, rules)) { + e.preventDefault(); + } + ft.select_all("selected_client_ids[]"); + }); +}); +END; + +// compile the header information +$page = array( + "page" => "add_form_internal", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("add_form_internal"), + "head_title" => $LANG["phrase_add_form"], + "head_js" => $head_js +); + +Themes::displayPage("admin/forms/add/internal.tpl", $page); diff --git a/admin/forms/add/step1.php b/admin/forms/add/step1.php new file mode 100644 index 00000000..bf24957b --- /dev/null +++ b/admin/forms/add/step1.php @@ -0,0 +1,58 @@ +checkAuth("admin"); + +$num_forms = Forms::getFormCount(); +$max_forms = Core::getMaxForms(); +if (!empty($max_forms) && $num_forms > $max_forms) { // note it's not >= + General::redirect("../"); +} + +if (isset($request["code"]) || isset($request["direct"])) { + $type = isset($request["code"]) ? "code" : "direct"; + General::redirect("step2.php?submission_type=$type"); +} + +$form_id = General::loadField("form_id", "add_form_form_id", ""); + +$form_info = array(); +if (!empty($form_id)) { + $form_info = Forms::getForm($form_id); +} +$LANG = Core::$L; + +$head_js =<<< END +var rules = []; +var page_ns = {}; +page_ns.current_section = null; +page_ns.show_section = function(section) { + if (page_ns.current_section != null) { + $("#" + page_ns.current_section).fadeOut({ duration: 400 }); + setTimeout(function() { $("#" + section).fadeIn({ duration: 400, }); }, 410); + } else { + $("#" + section).fadeIn({ duration: 400 }); + } + page_ns.current_section = section; + return false; +} +END; + +$page = array( + "page" => "add_form1", + "page_url" => Pages::getPageUrl("add_form1"), + "has_api" => Core::isAPIAvailable(), + "head_title" => "{$LANG['phrase_add_form']} - {$LANG["phrase_step_1"]}", + "form_info" => $form_info, + "head_js" => $head_js +); + +Themes::displayPage("admin/forms/add/step1.tpl", $page); diff --git a/admin/forms/add/step2.php b/admin/forms/add/step2.php new file mode 100644 index 00000000..a027dd57 --- /dev/null +++ b/admin/forms/add/step2.php @@ -0,0 +1,141 @@ +checkAuth("admin"); + +$LANG = Core::$L; +$root_url = Core::getRootUrl(); +$form_id = General::loadField("form_id", "add_form_form_id", ""); + +$submission_type = General::loadField("submission_type", "submission_type"); + +// the form may or may not be created in the DB at this point. If a user's coming back to this page to complete +// setting up their form, update the submission_type - otherwise we have the info in sessions +if (!empty($form_id)) { + Forms::setSubmissionType($form_id, $submission_type); +} + +$page = array(); + +// start setting up the form +$success = true; +$message = ""; +if (isset($request["add_form"])) { + $request["form_type"] = "external"; + $request["submission_type"] = $submission_type; + list($success, $message, $form_id) = Forms::setupForm($request); + + // store the uploading_files value for the duration of this session + Sessions::set("uploading_files", isset($request['uploading_files']) ? $request['uploading_files'] : "no"); + + // form successfully added. Continue to step 2. + if ($success) { + General::redirect("step3.php?form_id=$form_id"); + + // error. Reload the page with the already entered form values, and display the appropriate error message. + } else { + $page = Forms::addFormGetExternalFormValues("post", "", $request); + } +} + +// update this form +else if (isset($request['update_form'])) { + + // store the uploading_files value for the duration of this session + Sessions::set("uploading_files", isset($request["uploading_files"]) ? $request["uploading_files"] : "no"); + $request["submission_type"] = $submission_type; + + list($success, $message) = Forms::setFormMainSettings($request); + if ($success) { + General::redirect("step3.php?form_id=$form_id"); + } else { + $page = Forms::addFormGetExternalFormValues("post", $form_id, $request); + } +} + +// edit existing form (used for cases where user fails to complete form building process, then returns +// later to finish the job) +else if (!empty($form_id)) { + $page = Forms::addFormGetExternalFormValues("database", $form_id); +} +// otherwise, the user is coming to this page for the first time. init the default values +else { + $page = Forms::addFormGetExternalFormValues("new_form"); +} + +if (!Sessions::exists("uploading_files")) { + Sessions::set("uploading_files", "no"); +} + +$selected_client_ids = array(); +for ($i=0; $i + +EOF; + +$page_vars["head_js"] =<<< END +ft.click([ + { el: "at1", targets: [{ el: "custom_clients", action: "hide" }] }, + { el: "at2", targets: [{ el: "custom_clients", action: "hide" }] }, + { el: "at3", targets: [{ el: "custom_clients", action: "show" }] } +]); + +var rules = []; +rules.push("required,form_name,{$LANG['validation_no_form_name']}"); +rules.push("function,mf_ns.check_first_form_url"); +rules.push("required,access_type,{$LANG["validation_no_access_type"]}"); + +rsv.onCompleteHandler = function() { + ft.select_all("selected_client_ids[]"); + return true; +} + +$(function() { + $("#form_name").focus(); + $(".is_multi_page_form").bind("click", function() { + if ($(this).val() == "yes") { + $("#form_url_single, #form_label_single").hide(); + $("#form_url_multiple, #form_label_multiple").show(); + } else { + $("#form_url_single, #form_label_single").show(); + $("#form_url_multiple, #form_label_multiple").hide(); + } + }); + ft.init_check_url_buttons(); +}); + +END; + +Themes::displayPage("admin/forms/add/step2.tpl", $page_vars); diff --git a/admin/forms/add/step3.php b/admin/forms/add/step3.php new file mode 100644 index 00000000..b365414d --- /dev/null +++ b/admin/forms/add/step3.php @@ -0,0 +1,127 @@ +checkAuth("admin"); + +$root_url = Core::getRootUrl(); +$LANG = Core::$L; + +$form_id = General::loadField("form_id", "add_form_form_id", ""); + +if (isset($_POST["submission_type"])) { + Forms::setSubmissionType($form_id, $_POST["submission_type"]); +} + +// if returning from a later stage and the user wants to resubmit the test submission, update the form +if (isset($_GET['uninitialize']) && $_GET['uninitialize'] == 1) { + Forms::uninitializeForm($form_id); +} + +// retrieve the form info +$form_info = Forms::getForm($form_id); + +// determine the input field values for cutting & pasting +$hidden_fields = '' . "\n" + . ''; +$form_tag = '
"{$form_info['form_url']}"); +$direct_form_para_2 = General::evalSmartyString($LANG["text_add_form_step_2_para_3"], $replacement_info); + +$replacement_info = array( + "varname" => "\$submission_hash", + "postvar" => "\$_POST", + "sessionvar" => "\$_SESSION" +); +$code_form_para_2 = General::evalSmartyString($LANG["text_add_form_step_2_para_6"], $replacement_info); + +$success = true; +$message = ""; +if (isset($_POST["refresh"]) && $form_info["is_initialized"] == "no") { + $success = false; + $message = $LANG["notify_no_test_submission"]; +} + +// compile the header information +$page_vars = array( + "page" => "add_form3", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("add_form3"), + "head_title" => "{$LANG['phrase_add_form']} - {$LANG["phrase_step_3"]}", + "form_id" => $form_id, + "form_tag" => $form_tag, + "form_info" => $form_info, + "hidden_fields" => $hidden_fields, + "direct_form_para_2" => $direct_form_para_2, + "code_form_para_2" => $code_form_para_2, +); + +$current_section = (!empty($form_info["submission_type"])) ? "\"{$form_info["submission_type"]}\"" : "null"; +$page_vars["head_js"] =<<< END +var rules = []; +var page_ns = {}; +page_ns.current_section = $current_section; +page_ns.show_section = function(section) { + if (page_ns.current_section != null) { + $("#" + page_ns.current_section).fadeOut({ duration: 400 }); + setTimeout(function() { $("#" + section).fadeIn({ duration: 400, }); }, 410); + } else { + $("#" + section).fadeIn({ duration: 400 }); + } + + // if the user just selected a submission type, highlight the appropriate box and store the + // type to send along to the database. This information isn't needed outside of the Add Form + // process, but it's nice to be able to re-fill the appropriate submission type box when + if (section == 'direct') { + $('#direct_box').removeClass('grey_box'); + $('#direct_box').addClass('blue_box'); + $('#code_box').removeClass('blue_box'); + $('#code_box').addClass('grey_box'); + } + if (section == 'code') { + $('#direct_box').addClass('grey_box'); + $('#direct_box').removeClass('blue_box'); + $('#code_box').addClass('blue_box'); + $('#code_box').removeClass('grey_box'); + } + if (section != 'direct' && section != 'code') { + $('#direct_box').addClass('grey_box'); + $('#direct_box').removeClass('blue_box'); + $('#code_box').addClass('grey_box'); + $('#code_box').removeClass('blue_box'); + } + page_ns.current_section = section; +} + +rsv.onCompleteHandler = function() { ft.select_all('selected_user_ids[]'); return true; } +END; + +$page_vars["head_string"] =<<< END + + + + + + + + + +END; + +Themes::displayPage("admin/forms/add/step3.tpl", $page_vars); diff --git a/admin/forms/add/step4.php b/admin/forms/add/step4.php new file mode 100644 index 00000000..18a3da21 --- /dev/null +++ b/admin/forms/add/step4.php @@ -0,0 +1,150 @@ +checkAuth("admin"); + + +$form_id = General::loadField("form_id", "add_form_form_id", ""); +$sortable_id = "add_form_step4"; + +// go to next page +if (!empty($_POST) && isset($_POST["next_step"])) { + // reorder fields and rename their column names, as per their new order + $_POST["sortable_id"] = $sortable_id; + Fields::updateFormFields($form_id, $_POST, true); + + $deleted_rows = explode(",", $_POST["{$sortable_id}_sortable__deleted_rows"]); + Fields::deleteFormFields($form_id, $deleted_rows); + + General::redirect("step5.php?form_id=$form_id"); +} + +$form_fields = Fields::getFormFields($form_id); +$form_setup = Forms::getForm($form_id); + +// build the best guesses and list of field IDs +$best_guesses = array(); +$field_ids = array(); +foreach ($form_fields as $field) { + $field_ids[] = $field["field_id"]; + + if ($field["is_system_field"] == "yes") { + continue; + } + + // best guess at generating an appropriate Display Name + $temp = preg_replace("/_/", " ", $field["field_name"]); + $display_name_guess = ucwords($temp); + $best_guesses[] = "\"{$field['field_id']}\": \"$display_name_guess\""; +} + +$best_guesses_js = implode(",\n", $best_guesses); +$field_id_str = implode(",", $field_ids); + + +// ------------------------------------------------------------------------------------------------ + +$root_url = Core::getRootUrl(); +$LANG = Core::$L; + +$page_vars = array( + "page" => "add_form4", + "page_url" => Pages::getPageUrl("add_form4"), + "sortable_id" => $sortable_id, + "form_id" => $form_id, + "form_fields" => $form_fields, + "head_title" => "{$LANG['phrase_add_form']} - {$LANG["phrase_step_4"]}", + "head_string" => "", + "js_messages" => array("phrase_delete_row") +); + +$page_vars["head_js"] =<<< END + var page_ns = {}; + page_ns.field_ids = [$field_id_str]; + page_ns.smart_fill_values = { + $best_guesses_js + }; + + page_ns.smart_fill = function() { + // if any of the fields contain a value already, inform the user + var str = ''; + var has_value = false; + for (var field_id in page_ns.smart_fill_values) { + if ($('#field_' + field_id + '_display_name').val()) { + has_value = true; + } + } + if (has_value) { + ft.create_dialog({ + title: "{$LANG["phrase_please_confirm"]}", + content: "{$LANG["confirm_smart_fill_display_names"]}", + buttons: [{ + text: "{$LANG["word_yes"]}", + click: function() { + page_ns.fill(); + $(this).dialog("close"); + } + }, + { + text: "{$LANG["word_no"]}", + click: function() { + $(this).dialog("close"); + } + } + ] + }); + } else { + page_ns.fill(); + } + } + + page_ns.fill = function() { + for (var field_id in page_ns.smart_fill_values) { + $("#field_" + field_id + "_display_name").val(page_ns.smart_fill_values[field_id]); + } + } + + // called on form submit. Confirms that all fields have a display name + page_ns.validate_fields = function() { + var all_filled = true; + for (var i=0; icheckAuth("admin"); + + +$sortable_id = "review_field_options"; +$form_id = General::loadField("form_id", "add_form_form_id", ""); +$form_info = Forms::getForm($form_id); +$form_fields = Fields::getFormFields($form_id); + +$form_urls = array(); +if ($form_info["is_multi_page_form"] == "yes") { + foreach ($form_info["multi_page_form_urls"] as $page_info) { + $form_urls[] = $page_info["form_url"]; + } +} else { + $form_urls[] = $form_info["form_url"]; +} + +$iframe_loaded_js_rows = array(); +reset($form_urls); +for ($i=1; $i<=count($form_urls); $i++) { + $iframe_loaded_js_rows[] = "page_ns.form_{$i}_url = \"{$form_urls[$i-1]}\";"; + $iframe_loaded_js_rows[] = "page_ns.form_{$i}_loaded = false;"; +} + +$iframe_loaded_js = implode("\n", $iframe_loaded_js_rows); +$num_pages = count($form_urls); + +// get the list of (non-system) field IDs +$custom_field_ids = array(); +foreach ($form_fields as $field_info) { + if ($field_info["is_system_field"] == "yes") { + continue; + } + $custom_field_ids[] = $field_info["field_id"]; +} + +$custom_field_id_str = implode(",", $custom_field_ids); + + +// this chunk of code determines what method should be used to make the form web page(s) available to +// the javascript, to let it parse and Smart Fill the field types and options +$scrape_method = General::getJsWebpageParseMethod($form_info["form_url"]); +$raw_field_types_js = FieldTypes::getRawFieldTypesJs(); +$field_size_labels_js = FieldSizes::generateFieldTypeSizeLabels(); + + +// ------------------------------------------------------------------------------------------------ + +$LANG = Core::$L; +$root_url = Core::getRootUrl(); + +// compile the header information +$page_vars = array( + "page" => "add_form5", + "page_url" => Pages::getPageUrl("add_form5"), + "head_title" => "{$LANG['phrase_add_form']} - {$LANG["phrase_step_5"]}", + "form_id" => $form_id, + "form_info" => $form_info, + "form_fields" => $form_fields, + "form_urls" => $form_urls, + "scrape_method" => $scrape_method, + "sortable_id" => $sortable_id, + "head_css" => "" +); + +$page_vars["text_add_form_field_types_multiple_fields_found8"] = General::evalSmartyString($LANG["text_add_form_field_types_multiple_fields_found8"], array("ONCLICK" => "ft.display_message('ft_message', 1, $('#upload_files_text').html())")); +$page_vars["js_messages"] = array("word_na", "word_found", "word_delete", "word_none", "notify_smart_fill_submitted", + "phrase_not_found", "word_options", "phrase_multiple_fields_found", "notify_multiple_fields_found", + "phrase_field_type", "phrase_form_page", "word_options", "word_select", "word_textbox", "word_password", "word_file", + "phrase_radio_buttons","word_checkboxes", "word_textarea", "phrase_multi_select", "word_page", "word_na", + "notify_smart_fill_field_not_found", "validation_select_field_type", "word_resolved", "notify_multi_field_updated", + "notify_field_updated", "word_skipped", "phrase_field_skipped", "notify_multi_field_selected", "notify_field_selected", + "word_horizontal", "word_vertical", "word_order", "phrase_field_value", "phrase_display_value", "notify_add_display_values", + "phrase_previous_field", "phrase_next_field", "validation_smart_fill_upload_all_pages", "notify_smart_fill_upload_fields_fail", + "notify_smart_fill_files_uploaded_successfully", "validation_upload_html_files_only", "word_okay", "word_error", + "word_yes", "word_no", "phrase_please_confirm", "confirm_refresh_page" +); +$page_vars["head_string"] =<<< END + + + +END; + +$page_vars["head_js"] =<<< END +var page_ns = {}; +page_ns.field_ids = [$custom_field_id_str]; +page_ns.num_pages = $num_pages; +$iframe_loaded_js +$raw_field_types_js +$field_size_labels_js + +$(function() { + for (var i=0; icheckAuth("admin"); +$root_url = Core::getRootUrl(); +$LANG = Core::$L; + +// delete any temporary Smart Fill uploaded files +if (Sessions::isNonEmpty("smart_fill_tmp_uploaded_files")) { + foreach (Sessions::get("smart_fill_tmp_uploaded_files") as $file) { + @unlink($file); + } +} + +Sessions::set("method", ""); +$form_id = General::loadField("form_id", "add_form_form_id", ""); +Sessions::clear("add_form_form_id"); + +$page_vars = array( + "page" => "add_form6", + "page_url" => Pages::getPageUrl("add_form6"), + "head_title" => "{$LANG['phrase_add_form']} - {$LANG["phrase_step_6"]}", + "form_id" => $form_id, + "text_add_form_step_5_para" => General::evalSmartyString($LANG["text_add_form_step_5_para_3"], array("editformlink" => "../edit.php?form_id={$form_id}")), + "text_add_form_step_5_para_4" => General::evalSmartyString($LANG["text_add_form_step_5_para_4"], array("editformlink" => "../edit.php?form_id={$form_id}")), + "uploading_files" => Sessions::get("uploading_files"), + "head_css" => "" +); + +$page_vars["head_string"] =<<< END + + + + + + + + + +END; + +Themes::displayPage("admin/forms/add/step6.tpl", $page_vars); diff --git a/admin/forms/delete_form.php b/admin/forms/delete_form.php new file mode 100644 index 00000000..78508dbd --- /dev/null +++ b/admin/forms/delete_form.php @@ -0,0 +1,83 @@ +checkAuth("admin"); + +$LANG = Core::$L; +$root_url = Core::getRootUrl(); + +$request = array_merge($_GET, $_POST); +$form_id = $request["form_id"]; +if (!isset($form_id)) { + General::redirect("$root_url/admin/forms/"); + exit; +} + +$form_info = Forms::getForm($form_id); +if (empty($form_info)) { + General::redirect("$root_url/admin/forms/"); + exit; +} +$form_name = $form_info["form_name"]; +$auto_delete_submission_files = $form_info["auto_delete_submission_files"]; + +// get the names and URLs of all uploaded files. These are displayed in the page for the user +// so there's no doubt about exactly what they're deleting +$file_field_type_ids = FieldTypes::getFileFieldTypeIds(); +$form_fields = Fields::getFormFields($form_id); +$file_field_ids = array(); +foreach ($form_fields as $field) { + if (!in_array($field["field_type_id"], $file_field_type_ids)) { + continue; + } + $file_field_ids[] = $field["field_id"]; +} +$uploaded_files = Fields::getUploadedFiles($form_id, $file_field_ids); + +// delete the form +$success = true; +$message = ""; +if (isset($_POST["delete_form"]) && $_POST["delete_form"] == "yes") { + $delete_files = (isset($_POST['delete_files']) && $_POST['delete_files'] == "yes") ? true : false; + list($success, $message) = Forms::deleteForm($form_id, $delete_files); + + // redirect back to the form list page + General::redirect("$root_url/admin/forms/?message=form_deleted"); + exit; +} + +// compile the header information +$page_vars = array( + "head_title" => $LANG["phrase_delete_form"], + "g_success" => $success, + "g_message" => $message, + "page" => "delete_form", + "page_url" => Pages::getPageUrl("delete_form"), + "form_id" => $form_id, + "form_info" => $form_info, + "uploaded_files" => $uploaded_files +); + +$page_vars["head_js"] =<<< END +var page_ns = {}; +page_ns.show_uploaded_files = function(){ + $('#uploaded_files').show(600); +} +var rules = ["required,delete_form,{$LANG["validation_delete_form_confirm"]}"]; + +$(function() { + $("#delete_form").focus(); +}); +END; + +Themes::displayPage("admin/forms/delete_form.tpl", $page_vars); diff --git a/admin/forms/edit/index.php b/admin/forms/edit/index.php new file mode 100644 index 00000000..12c317f6 --- /dev/null +++ b/admin/forms/edit/index.php @@ -0,0 +1,126 @@ +checkAuth("admin"); + +$form_id = General::loadField("form_id", "form_id", ""); + +if (!Forms::checkFormExists($form_id)) { + General::redirect("index.php"); + exit; +} + +// store the current selected tab in memory - except for pages which require additional +// query string info. For those, use the parent page +if (isset($request["page"]) && !empty($request["page"])) { + $remember_page = $request["page"]; + switch ($remember_page) { + case "field_options": + case "files": + $remember_page = "fields"; + break; + case "edit_email": + $remember_page = "emails"; + break; + } + Sessions::set("form_{$form_id}_tab", $remember_page); + $page = $request["page"]; +} else { + $page = General::loadField("page", "form_{$form_id}_tab", "edit_form_main"); +} + +if (isset($request['edit_email_user_settings'])) { + General::redirect("?page=email_settings"); + exit; +} + +$view_submissions_link = "../submissions.php?form_id={$form_id}"; +if (Sessions::exists("last_link_page_{$form_id}") && Sessions::exists("last_submission_id_{$form_id}") && + Sessions::get("last_link_page_{$form_id}") == "edit") { + $last_submission = Sessions::get("last_submission_id_{$form_id}"); + $view_submissions_link = "../edit_submission.php?form_id={$form_id}&submission_id=$last_submission"; +} + +$LANG = Core::$L; + +$same_page = General::getCleanPhpSelf(); +$tabs = array( + "main" => array( + "tab_label" => $LANG["word_main"], + "tab_link" => "{$same_page}?form_id=$form_id&page=main", + "pages" => array("main", "public_form_omit_list") + ), + "fields" => array( + "tab_label" => $LANG["word_fields"], + "tab_link" => "{$same_page}?form_id=$form_id&page=fields", + "pages" => array("fields") + ), + "views" => array( + "tab_label" => $LANG["word_views"], + "tab_link" => "{$same_page}?form_id=$form_id&page=views", + "pages" => array("edit_view", "view_tabs", "public_view_omit_list") + ), + "emails" => array( + "tab_label" => $LANG["word_emails"], + "tab_link" => "{$same_page}?form_id=$form_id&page=emails", + "pages" => array("email_settings", "edit_email") + ) +); + +$tabs = Modules::moduleOverrideData("admin_edit_form_tabs", $tabs); + +$order = General::loadField("order", "form_sort_order", "form_name-ASC"); +$keyword = General::loadField("keyword", "form_search_keyword", ""); +$status = General::loadField("status", "form_search_status", ""); +$client_id = General::loadField("client_id", "form_search_client_id", ""); +$search_criteria = array( + "order" => $order, + "keyword" => $keyword, + "status" => $status, + "account_id" => $client_id, + "is_admin" => false +); + +$links = Forms::getFormPrevNextLinks($form_id, $search_criteria); +$prev_tabset_link = (!empty($links["prev_form_id"])) ? "?page=$page&form_id={$links["prev_form_id"]}" : ""; +$next_tabset_link = (!empty($links["next_form_id"])) ? "?page=$page&form_id={$links["next_form_id"]}" : ""; + +// start compiling the page vars here, so we don't have to duplicate the shared stuff for each included code file below +$page_vars = array(); +$page_vars["tabs"] = $tabs; +$page_vars["form_id"] = $form_id; +$page_vars["view_submissions_link"] = $view_submissions_link; +$page_vars["show_tabset_nav_links"] = true; +$page_vars["prev_tabset_link"] = $prev_tabset_link; +$page_vars["next_tabset_link"] = $next_tabset_link; +$page_vars["prev_tabset_link_label"] = $LANG["phrase_prev_form"]; +$page_vars["next_tabset_link_label"] = $LANG["phrase_next_form"]; + + +// load the appropriate code page +$page_map = array( + "main" => "page_main.php", + "public_form_omit_list" => "page_public_form_omit_list.php", + "fields" => "page_fields.php", + "views" => "page_views.php", + "edit_view" => "page_edit_view.php", + "public_view_omit_list" => "page_public_view_omit_list.php", + "emails" => "page_emails.php", + "email_settings" => "page_email_settings.php", + "edit_email" => "page_edit_email.php" +); + +if (isset($page_map[$page])) { + require_once($page_map[$page]); +} else { + $vals = Modules::moduleOverrideData("admin_edit_form_page_name_include", array("page_name" => "page_main.php")); + require_once($vals["page_name"]); +} diff --git a/admin/forms/edit/page_edit_email.php b/admin/forms/edit/page_edit_email.php new file mode 100644 index 00000000..571a36a5 --- /dev/null +++ b/admin/forms/edit/page_edit_email.php @@ -0,0 +1,164 @@ + 0; +$file_field_text = ($form_has_file_upload_field) ? $LANG["text_file_field_placeholders_info"] : ""; + +// values for the test email subpage +$num_submissions = Submissions::getSubmissionCount($form_id); +$test_email_format = General::loadField("test_email_format", "test_email_format"); +$test_email_recipient = General::loadField("test_email_recipient", "test_email_recipient", $admin_info["email"]); +$test_email_data_source = General::loadField("test_email_data_source", "test_email_data_source", "random_submission"); +$test_email_submission_id = General::loadField("test_email_submission_id", "test_email_submission_id", ""); + +$views = Views::getViews($form_id); + +$filtered_views = array(); +$selected_edit_submission_views = array(); +$selected_when_sent_views = array(); +foreach ($views["results"] as $view) { + if (!empty($view["filters"])) { + $filtered_views[] = $view; + } + if (in_array($view["view_id"], $template_info["edit_submission_page_view_ids"])) { + $selected_edit_submission_views[] = $view; + } + if (in_array($view["view_id"], $template_info["when_sent_view_ids"])) { + $selected_when_sent_views[] = $view; + } +} + +$root_url = Core::getRootUrl(); + +// compile the template information +$page_vars["page"] = "edit_email"; +$page_vars["g_success"] = $success; +$page_vars["g_message"] = $message; +$page_vars["page_url"] = Pages::getPageUrl("edit_form_email_settings", array("form_id" => $form_id)); +$page_vars["email_id"] = $email_id; +$page_vars["head_title"] = "{$LANG["phrase_edit_form"]} - {$LANG["phrase_edit_email_template"]}"; +$page_vars["form_info"] = $form_info; +$page_vars["form_fields"] = $form_fields; +$page_vars["clients"] = $clients; +$page_vars["views"] = $views["results"]; +$page_vars["filtered_views"] = $filtered_views; +$page_vars["selected_edit_submission_views"] = $selected_edit_submission_views; +$page_vars["selected_when_sent_views"] = $selected_when_sent_views; +$page_vars["admin_info"] = $admin_info; +$page_vars["file_field_text"] = $file_field_text; +$page_vars["columns"] = $columns; +$page_vars["edit_email_advanced_settings"] = Sessions::getWithFallback("edit_email_advanced_settings", ""); +$page_vars["js_messages"] = array("validation_invalid_email", "validation_no_custom_recipient_email", + "validation_no_test_email_recipient", "validation_no_test_email_submission_id", "word_cc_c", "word_bcc_c", + "word_from_c", "word_reply_to_c", "word_subject_c", "phrase_form_email_field_b_c", "phrase_form_email_fields", + "validation_no_main_email_recipient", "validation_no_email_content", "validation_no_email_template_name", + "validation_no_email_template_view_mapping_value", "validation_no_email_template_view_id", + "validation_no_custom_from_email", "validation_invalid_custom_from_email", "validation_no_custom_reply_to_email", + "validation_invalid_custom_reply_to_email", "validation_no_email_from_field", "phrase_form_field_placeholders" +); + +// a little hacky, but not too bad. Override the form nav links so that it always links to the email tab +$page_vars["prev_tabset_link"] = (!empty($links["prev_form_id"])) ? "?page=emails&form_id={$links["prev_form_id"]}" : ""; +$page_vars["next_tabset_link"] = (!empty($links["next_form_id"])) ? "?page=emails&form_id={$links["next_form_id"]}" : ""; + +$page_vars["template_info"] = $template_info; +$page_vars["edit_email_tab"] = $edit_email_tab; +$page_vars["num_submissions"] = $num_submissions; +$page_vars["test_email_format"] = $test_email_format; +$page_vars["test_email_recipient"] = $test_email_recipient; +$page_vars["test_email_data_source"] = $test_email_data_source; +$page_vars["test_email_submission_id"] = $test_email_submission_id; +$page_vars["registered_form_emails"] = Emails::getEmailFields($form_id); +$page_vars["head_string"] =<<< END + + + + + +END; + +$page_vars["head_js"] =<<< END +rsv.onCompleteHandler = function() { + ft.select_all($("#selected_edit_submission_views")); + if ($("#selected_when_sent_views").length) { + ft.select_all($("#selected_when_sent_views")); + } + return true; +} + +// log the total number of recipients +$(function() { + + var onTabChange = function (tab) { + if (tab === 3) { + html_editor.refresh(); + text_editor.refresh(); + } + } + + ft.init_inner_tabs(onTabChange); + emails_ns.num_recipients = parseInt($('#num_recipients').val()); + emails_ns.recipient_num = parseInt($('#num_recipients').val()) + 1; + + // always set the select recipient field to empty + $("#recipient_options").val(""); + $("input[name=include_on_edit_submission_page]").bind("change", function() { + if (this.value == "specific_views") { + $('#include_on_edit_submission_page_views').show(); + } else { + $('#include_on_edit_submission_page_views').hide(); + } + }); + $("input[name=view_mapping_type]").bind("change", function() { + if (this.value == "specific") { + $('#when_sent_views').show(); + } else { + $('#when_sent_views').hide(); + } + }); + + $("#edit_email_template_form").bind("submit", function() { + return emails_ns.onsubmit_check_email_settings(this); + }); + + $(".placeholders_section").bind("click", function() { + ft.show_form_field_placeholders_dialog({ form_id: {$form_id} }); + }); + + $("#test_email_submission_id").bind("keyup", function() { $("#test_email_data_submission_id").attr("checked", "checked"); }); +}); +END; + +Themes::displayPage("admin/forms/edit/index.tpl", $page_vars); diff --git a/admin/forms/edit/page_edit_view.php b/admin/forms/edit/page_edit_view.php new file mode 100644 index 00000000..1329e022 --- /dev/null +++ b/admin/forms/edit/page_edit_view.php @@ -0,0 +1,307 @@ + true)); +$view_info = Views::getView($view_id); + +$form_database_column_info = Forms::getFormColumnNames($form_id); +$view_clients = Views::getViewClients($view_id); +$view_tabs = ViewTabs::getViewTabs($view_id); +$grouped_fields = ViewFields::getGroupedViewFields($view_id); +$field_types = FieldTypes::getFieldTypeNames(); + +$new_view_submission_defaults = Views::getNewViewSubmissionDefaults($view_id); + +// this returns ALL filters: standard and client map +$standard_filters = ViewFilters::getViewFilters($view_id, "standard"); +$client_map_filters = ViewFilters::getViewFilters($view_id, "client_map"); +$num_standard_filters = count($standard_filters); +$num_client_map_filters = count($client_map_filters); + +$edit_view_tab = Sessions::getWithFallback("inner_tabs.edit_view", 1); +if (isset($request["edit_view_tab"])) { + $edit_view_tab = $request["edit_view_tab"]; + Sessions::set("inner_tabs.edit_view", $edit_view_tab); +} + +$view_omit_list = Views::getPublicViewOmitList($view_id); +$num_clients_on_omit_list = count($view_omit_list); + +// assumes view_ns.all_form_fields and view_ns.view_tabs JS arrays have been defined in manage_views.js +// The form fields info is needed throughout the Edit View tabs, so stashing them in the page JS makes sense +$js_string = ""; +$all_form_fields = array(); +$date_field_ids = array(); +foreach ($form_fields as $field) { + $display_name = htmlspecialchars($field["field_title"]); + $col_name = $field["col_name"]; + $field_id = $field["field_id"]; + $is_system_field = ($field["is_system_field"] == "yes") ? "true" : "false"; + $is_date_field = ($field["is_date_field"] == "yes") ? "true" : "false"; + $field_type_id = $field["field_type_id"]; + + $all_form_fields[] = "{ field_id: $field_id, display_name: \"$display_name\", " + . "col_name: \"$col_name\", is_system_field: $is_system_field, " + . "is_date_field: $is_date_field, field_type_id: $field_type_id }"; + + if ($is_date_field == "true") { + $date_field_ids[] = $field_id; + } +} +$all_form_fields_js = "view_ns.all_form_fields = [" . implode(",\n", $all_form_fields) . "];"; + +for ($i=1; $i<=count($view_tabs); $i++) { + if (empty($view_tabs["$i"]["tab_label"])) { + continue; + } + $tab_name = addslashes($view_tabs["$i"]["tab_label"]); + $js_string .= "view_ns.view_tabs.push([\"$i\", \"$tab_name\"]);\n"; +} + +// for the filters +$js_string .= "view_ns.num_standard_filter_rows = $num_standard_filters;\n"; +$js_string .= "view_ns.num_client_map_filter_rows = $num_client_map_filters;\n"; + +// build the selected users +$selected_users_str = ""; +$selected_user_ids = array(); +for ($i=0; $i$first_name $last_name\n"; + + $selected_user_ids[] = $client_id; +} + +// build the available users . This is used to populate the Available Clients section +// of Private accessed forms +$available_users_str = ""; +foreach ($form_info["client_info"] as $client) { + if (in_array($client["account_id"], $selected_user_ids)) { + continue; + } + $available_users_str .= "\n"; +} + +// get the ID of the previous and next field options. We should probably cache this, but until I'm sure +// it's slowing things down, we'll keep it simple +$ordered_view_ids = Views::getViewIds($form_id, true); +$previous_view_link = "{$LANG["phrase_previous_view"]}"; +$next_view_link = "{$LANG["phrase_next_view"]}"; +$num_views = count($ordered_view_ids); + +$same_page = General::getCleanPhpSelf(); +for ($i=0; $i<$num_views; $i++) { + $curr_view_id = $ordered_view_ids[$i]; + if ($curr_view_id == $view_id) { + if ($i != 0) { + $previous_view_id = $ordered_view_ids[$i-1]; + $previous_view_link = "{$LANG["phrase_previous_view"]}"; + } + if ($i != $num_views - 1) { + $next_view_id = $ordered_view_ids[$i+1]; + $next_view_link = "{$LANG["phrase_next_view"]}"; + } + } +} + +// override the form nav links so that it always links to the Views page +$page_vars["prev_tabset_link"] = (!empty($links["prev_form_id"])) ? "?page=views&form_id={$links["prev_form_id"]}" : ""; +$page_vars["next_tabset_link"] = (!empty($links["next_form_id"])) ? "?page=views&form_id={$links["next_form_id"]}" : ""; + +// ----------------------------------------------------------------------------------------------- + +$root_url = Core::getRootUrl(); +$LANG = Core::$L; + +// compile the templates information +$page_vars["page"] = "edit_view"; +$page_vars["g_success"] = $success; +$page_vars["g_message"] = $message; +$page_vars["page_url"] = Pages::getPageUrl("edit_view"); +$page_vars["view_id"] = $view_id; +$page_vars["grouped_fields"] = $grouped_fields; +$page_vars["new_view_submission_defaults"] = $new_view_submission_defaults; +$page_vars["head_title"] = "{$LANG["phrase_edit_form"]} - {$LANG["phrase_edit_view"]}"; +$page_vars["standard_filters"] = $standard_filters; +$page_vars["client_map_filters"] = $client_map_filters; +$page_vars["num_standard_filters"] = $num_standard_filters; +$page_vars["num_client_map_filters"] = $num_client_map_filters; +$page_vars["edit_view_tab"] = $edit_view_tab; +$page_vars["form_info"] = $form_info; +$page_vars["view_tabs"] = $view_tabs; +$page_vars["view_info"] = $view_info; +$page_vars["form_fields"] = $form_fields; +$page_vars["field_types"] = $field_types; +$page_vars["previous_view_link"] = $previous_view_link; +$page_vars["next_view_link"] = $next_view_link; +$page_vars["selected_users"] = $selected_users_str; +$page_vars["available_users"] = $available_users_str; +$page_vars["form_database_column_info"] = $form_database_column_info; +$page_vars["selected_user_ids"] = $selected_user_ids; +$page_vars["num_clients_on_omit_list"] = $num_clients_on_omit_list; +$page_vars["date_field_ids"] = $date_field_ids; +$page_vars["view_fields_sortable_id"] = $view_fields_sortable_id; +$page_vars["submission_list_sortable_id"] = $submission_list_sortable_id; + +$page_vars["head_string"] =<<< END + + + +END; + +$replacements = array("user_doc_link" => "https://docs.formtools.org/userdoc/views/standard_filters/?page=view_filters"); +$page_vars["text_filters_tips"] = General::evalSmartyString($LANG["text_filters_tips"], $replacements); +$replacements = array("number" => ""); +$page_vars["add_standard_filter_num_rows_input_field"] = General::evalSmartyString($LANG["phrase_add_num_rows"], $replacements); +$replacements = array("number" => ""); +$page_vars["add_client_map_filter_num_rows_input_field"] = General::evalSmartyString($LANG["phrase_add_num_rows"], $replacements); +$page_vars["js_messages"] = array("word_remove", "validation_no_tabs_defined", "phrase_all_fields_displayed", + "validation_invalid_tab_assign_values", "validation_num_rows_to_add", "phrase_please_select", "word_before", + "word_after", "word_equals", "phrase_not_equal", "word_like", "phrase_not_like", "validation_no_view_name", + "validation_no_num_submissions_per_page", "validation_no_view_fields", "validation_no_column_selected", + "validation_no_view_fields_selected", "phrase_first_name", "phrase_last_name", "phrase_company_name", + "word_email", "word_notes", "word_id", "phrase_remove_row", "phrase_available_tabs", "word_close", + "phrase_add_fields", "phrase_create_group", "word_cancel", "word_yes", "word_no", "phrase_auto_size", "word_width_c"); + +$field_type_map_lines = array(); +foreach ($field_types as $field_type_id => $field_type_name) { + $field_type_map_lines[] = " \"ft{$field_type_id}\": \"$field_type_name\""; +} + +$field_type_map = implode(",\n", $field_type_map_lines); +$field_type_map_js = "view_ns.field_type_map = {\n$field_type_map\n};"; + +$page_vars["head_js"] =<<< END +$all_form_fields_js +$field_type_map_js +$js_string + +$(function() { + ft.init_inner_tabs(); + + // if there are no filters, init the form with a single, empty filter + if (view_ns.num_standard_filter_rows == 0) { + view_ns.add_standard_filters(1); + } + if (view_ns.num_client_map_filter_rows == 0) { + view_ns.add_client_map_filters("1"); + } + + $(".adding_field_ids").live("change", function() { + if (this.checked) { + $(this).closest("li").addClass("selected_row"); + } else { + $(this).closest("li").removeClass("selected_row"); + } + }); + + $(".tab_label").bind("blur", view_ns.update_tab_dropdowns); + $(".add_field_link").live("click", view_ns.add_fields_dialog); + + $("input[name=access_type]").bind("click change", function() { + $("#custom_clients").hide(); + $("#client_omit_list_button").attr("disabled", "disabled"); + + var form_type = $(this).val(); + if (form_type == "public") { + $("#client_omit_list_button").attr("disabled", ""); + } + + if (form_type == "private") { + $("#custom_clients").show(); + } + }); + + $("input[name=may_add_submissions]").bind("click change", function() { + if (this.value == "yes") { + $("#add_submission_default_values").show(); + } else { + $("#add_submission_default_values").hide(); + } + }); + + $(".custom_add_group_link").live("click", view_ns.add_field_group); + + $(".new_submission_field_id").live("change", function() { + var field_id = $(this).val(); + var option_list_id; + for (var i=0; i"); + } + }); + + $("#no_new_submission_default_values a").bind("click", function(e) { + $("#no_new_submission_default_values").addClass("hidden"); + $("#new_submission_default_values").removeClass("hidden"); + view_ns.add_default_values_for_submission(); + e.preventDefault(); + }); + + $(".auto_size").live("change", function() { + var li = $(this).parent(); + if (this.checked) { + li.find("label").addClass("black").removeClass("light_grey"); + li.addClass("light_grey"); + li.find(".custom_width").attr("disabled", "disabled").val(""); + } else { + li.find("label").addClass("light_grey").removeClass("black"); + li.removeClass("light_grey"); + li.find(".custom_width").attr("disabled", "").focus(); + } + }); +}); + +var page_ns = { + clientFields: [ + { val: "account_id", text: "{$LANG["word_id"]}", section: "{$LANG["phrase_core_fields"]}" }, + { val: "first_name", text: "{$LANG["phrase_first_name"]}", section: "{$LANG["phrase_core_fields"]}" }, + { val: "last_name", text: "{$LANG["phrase_last_name"]}", section: "{$LANG["phrase_core_fields"]}" }, + { val: "email", text: "{$LANG["word_email"]}", section: "{$LANG["phrase_core_fields"]}" }, + { val: "settings__company_name", text: "{$LANG["phrase_company_name"]}", section: "{$LANG["phrase_core_fields"]}" } + ] +} +END; + +Themes::displayPage("admin/forms/edit/index.tpl", $page_vars); diff --git a/admin/forms/edit/page_email_settings.php b/admin/forms/edit/page_email_settings.php new file mode 100644 index 00000000..23e9cc2c --- /dev/null +++ b/admin/forms/edit/page_email_settings.php @@ -0,0 +1,60 @@ + $form_id)); +$page_vars["head_title"] = "{$LANG["phrase_edit_form"]} - {$LANG["phrase_email_settings"]}"; +$page_vars["form_info"] = $form_info; +$page_vars["columns"] = $trimmed_cols; +$page_vars["registered_form_emails"] = $registered_form_emails; +$page_vars["js_messages"] = array("confirm_delete_email_field_config", "phrase_please_confirm", "word_yes", "word_no", "word_remove"); +$page_vars["head_string"] =<< +END; + +$page_vars["head_js"] =<< $form_id)); +$page_vars["form_emails"] = $form_emails; +$page_vars["all_form_emails"] = $all_form_emails; +$page_vars["num_form_emails"] = $num_form_emails; +$page_vars["head_title"] = "{$LANG["phrase_edit_form"]} - {$LANG["word_emails"]}"; +$page_vars["form_info"] = $form_info; +$page_vars["js_messages"] = array("word_edit", "word_remove"); + +// build values to pass along in nav query string +$pass_along_str = "page=emails&form_id=$form_id"; +$page_vars["pagination"] = General::getPageNav($num_form_emails, Sessions::get("settings.num_emails_per_page"), $emails_page, $pass_along_str, "emails_page"); +$page_vars["num_registered_form_emails"] = $num_registered_form_emails; + +$page_vars["head_js"] =<<< END +var page_ns = {}; +page_ns.delete_dialog = $("
"); +page_ns.delete_email = function(email_id) { + ft.create_dialog({ + title: "{$LANG["phrase_please_confirm"]}", + content: "{$LANG["confirm_delete_email_template"]}", + popup_type: "warning", + buttons: [{ + text: "{$LANG["word_yes"]}", + click: function() { + window.location = "$php_self?form_id=$form_id&page=emails&delete=" + email_id; + $(this).dialog("close"); + } + }, + { + text: "{$LANG["word_no"]}", + click: function() { + $(this).dialog("close"); + } + }] + }); + + return false; +} +END; + +Themes::displayPage("admin/forms/edit/index.tpl", $page_vars); diff --git a/admin/forms/edit/page_fields.php b/admin/forms/edit/page_fields.php new file mode 100644 index 00000000..8c093be4 --- /dev/null +++ b/admin/forms/edit/page_fields.php @@ -0,0 +1,144 @@ + $request["num_fields_per_page"])); + $_GET["fields_page"] = 1; +} else { + $saved_num_fields_per_page = Settings::get("admin_num_fields_per_page_{$form_id}"); + $num_fields_per_page = (!empty($saved_num_fields_per_page)) ? $saved_num_fields_per_page : "all"; +} + +if (empty($num_fields_per_page)) { + Settings::set(array("admin_num_fields_per_page_{$form_id}" => "all")); +} + +$fields_page = General::loadField("fields_page", "fields_page", 1); + +$form_fields = Fields::getFormFields($form_id, array("page" => $fields_page, "num_fields_per_page" => $num_fields_per_page)); +$total_form_fields = Fields::getNumFormFields($form_id); + +$reserved_words = General::getMysqlReservedWords(); +$escaped_words = array(); +foreach ($reserved_words as $word) { + $escaped_words[] = "\"$word\""; +} +$reserved_words = implode(",", $escaped_words); + +$field_type_sizes_js = FieldSizes::generateFieldTypeSizesMapJs(); +$field_sizes_js = FieldSizes::generateFieldTypeSizeLabels(); +$field_settings_js = FieldTypes::generateFieldTypeSettingsJs(); +$field_validation_js = FieldValidation::generateFieldTypeValidationJs(); + +$php_self = General::getCleanPhpSelf(); +$shared_characteristics_js = FieldTypes::getFieldTypeSettingSharedCharacteristicsJs(); + + +$LANG = Core::$L; +$root_url = Core::getRootUrl(); +$max_form_fields = Core::getMaxFormFields(); + +// compile the template fields +$page_vars["page"] = "fields"; +$page_vars["g_success"] = $success; +$page_vars["g_message"] = $message; +$page_vars["page_url"] = Pages::getPageUrl("edit_form_fields", array("form_id" => $form_id)); +$page_vars["head_title"] = "{$LANG["phrase_edit_form"]} - {$LANG["word_fields"]}"; +$page_vars["form_info"] = $form_info; +$page_vars["form_fields"] = $form_fields; +$page_vars["order_start_number"] = 1; +$page_vars["num_fields_per_page"] = "all"; +$page_vars["pagination"] = ""; +$page_vars["sortable_id"] = $sortable_id; +$page_vars["limit_fields"] = (!empty($max_form_fields)) ? true : false; + + +if ($num_fields_per_page != "all") { + $page_vars["order_start_number"] = (($fields_page - 1) * $num_fields_per_page) + 1; + $page_vars["num_fields_per_page"] = $num_fields_per_page; + $pagination_settings = array( + "show_total_results" => false, + "show_page_label" => false + ); + $page_vars["pagination"] = General::getPageNav($total_form_fields, $num_fields_per_page, $fields_page, "", "fields_page", "", + $pagination_settings); +} + +$page_vars["head_string"] =<<< END + + +END; + +$replacement_info = array("views_tab_link" => "$php_self?page=views&form_id=$form_id"); +$page_vars["text_fields_tab_summary"] = General::evalSmartyString($LANG["text_fields_tab_summary"], $replacement_info); +$page_vars["js_messages"] = array("validation_no_form_field_name", "validation_invalid_form_field_names", "word_okay", + "word_error", "validation_num_rows_to_add", "word_row", "phrase_please_confirm", "confirm_smart_fill_db_column_fields", + "confirm_smart_fill_db_column_fields_desc", "word_cancel", "phrase_smart_fill", "validation_no_display_text", + "validation_no_form_field_name", "validation_duplicate_form_field_name", "validation_no_column_name", + "validation_col_name_is_reserved_word", "validation_invalid_column_name", "validation_no_two_column_names", + "phrase_edit_field", "word_close", "phrase_save_changes", "phrase_field_specific_settings", "phrase_edit_field_c", + "notify_no_field_settings", "word_value", "word_field", "phrase_use_default_value_q", "word_setting", + "phrase_please_select", "notify_field_changes_saved", "phrase_create_new_option_list", "phrase_edit_option_list", + "word_no", "word_yes", "validation_no_display_text_single", "validation_no_form_field_single", + "validation_no_db_column_single", "notify_edit_field_new_field", "notify_edit_option_list_after_save", + "confirm_save_change_before_redirect", "notify_error_saving_fields", "phrase_select_field", "word_order", + "word_settings", "phrase_field_type_no_validation", "phrase_validation_rule", "text_error_message_to_show", + "phrase_no_option_lists_available", "phrase_available_option_lists", "phrase_form_field_contents", "word_validation" +); + +$edit_field_onload_js = ""; +$limit_fields_enabled_js = ($page_vars["limit_fields"]) ? "fields_ns.limit_fields_enabled = true;\n fields_ns.max_fields = $max_form_fields;" : ""; +if (isset($_GET["field_id"])) { + $edit_field_onload_js =<<< EOF + var row_group = $(".sr_order[value={$_GET["field_id"]}]").closest(".row_group"); + if (row_group.length) { + fields_ns.edit_field(row_group); + } +EOF; +} + +$page_vars["head_js"] =<< $form_id)); +$page_vars["head_title"] = "{$LANG["phrase_edit_form"]} - {$LANG["word_main"]}"; +$page_vars["form_info"] = $form_info; +$page_vars["selected_client_ids"] = $selected_client_ids; +$page_vars["num_clients_on_omit_list"] = $num_clients_on_omit_list; +$page_vars["sortable_id"] = $sortable_id; +$page_vars["js_messages"] = array( + "validation_no_url", "phrase_check_url", "word_page", "validation_invalid_url", + "word_close", "validation_no_form_url", "phrase_form_field_placeholders" +); + +$page_vars["head_string"] =<<< END + + +END; + +$page_vars["head_js"] =<<< END +ft.click([ + { + el: "at1", + targets: [ + { el: "custom_clients", action: "hide" }, + { el: "client_omit_list_button", action: "disable" } + ] + }, + { + el: "at2", + targets: [ + { el: "custom_clients", action: "hide" }, + { el: "client_omit_list_button", action: "enable" } + ] + }, + { + el: "at3", + targets: [ + { el: "custom_clients", action: "show" }, + { el: "client_omit_list_button", action: "disable" } + ] + } +]); + +var rules = []; +rules.push("required,form_name,{$LANG['validation_no_form_name']}"); +rules.push("function,mf_ns.check_first_form_url"); +rules.push("required,access_type,{$LANG["validation_no_access_type"]}"); +rsv.onCompleteHandler = function() { ft.select_all("selected_client_ids[]"); return true; } + +$(function() { + mf_ns.num_multi_page_form_pages = $num_pages_in_multi_page_form; + + $("#form_type").bind("change", function() { + $(".form_type_specific_options").hide(); + $("#form_settings__" + this.value).show(); + }); + + $("#submission_type").bind("change", function() { + if ($(this).val() == "direct") { + $("#redirect_url_row, #form_url_single").show(); + $("#multi_page_form_row, #form_url_multiple").hide(); + } else { + $("#redirect_url_row").hide(); + $("#multi_page_form_row").show(); + } + }); + + $(".is_multi_page_form").bind("click", function() { + if ($(this).val() == "yes") { + $("#form_url_single, #form_label_single").hide(); + $("#form_url_multiple, #form_label_multiple").show(); + } else { + $("#form_url_single, #form_label_single").show(); + $("#form_url_multiple, #form_label_multiple").hide(); + } + }); + + ft.init_check_url_buttons(); +}); +END; + +Themes::displayPage("admin/forms/edit/index.tpl", $page_vars); diff --git a/admin/forms/edit/page_public_form_omit_list.php b/admin/forms/edit/page_public_form_omit_list.php new file mode 100644 index 00000000..053fa9a0 --- /dev/null +++ b/admin/forms/edit/page_public_form_omit_list.php @@ -0,0 +1,40 @@ + $form_id)); +$page_vars["head_title"] = "{$LANG["phrase_edit_form"]} - {$LANG["phrase_public_form_omit_list"]}"; +$page_vars["form_info"] = $form_info; +$page_vars["form_omit_list"] = $form_omit_list; +$page_vars["head_js"] =<<< EOF +var page_ns = {}; +page_ns.clear_omit_list = function() { + ft.select_all('selected_client_ids[]'); + ft.move_options('selected_client_ids[]', 'available_client_ids[]'); +} +EOF; + +Themes::displayPage("admin/forms/edit/index.tpl", $page_vars); diff --git a/admin/forms/edit/page_public_view_omit_list.php b/admin/forms/edit/page_public_view_omit_list.php new file mode 100644 index 00000000..b750e884 --- /dev/null +++ b/admin/forms/edit/page_public_view_omit_list.php @@ -0,0 +1,43 @@ + $form_id, "view_id" => $view_id)); +$page_vars["view_id"] = $view_id; +$page_vars["head_title"] = $LANG["phrase_public_view_omit_list"]; +$page_vars["form_info"] = $form_info; +$page_vars["view_omit_list"] = $view_omit_list; +$page_vars["head_js"] =<<< EOF +var page_ns = {}; +page_ns.clear_omit_list = function() { + ft.select_all('selected_client_ids[]'); + ft.move_options('selected_client_ids[]', 'available_client_ids[]'); +} +EOF; + +Themes::displayPage("admin/forms/edit/index.tpl", $page_vars); diff --git a/admin/forms/edit/page_views.php b/admin/forms/edit/page_views.php new file mode 100644 index 00000000..eff1404e --- /dev/null +++ b/admin/forms/edit/page_views.php @@ -0,0 +1,61 @@ + false, "include_clients" => true)); + +// figure out how many Views we're dealing with +$num_views = 0; +foreach ($grouped_views as $curr_group) { + $num_views += count($curr_group["views"]); +} + + +$LANG = Core::$L; +$root_url = Core::getRootUrl(); + +// compile the template information +$page_vars["page"] = "views"; +$page_vars["g_success"] = $success; +$page_vars["g_message"] = $message; +$page_vars["page_url"] = Pages::getPageUrl("edit_form_views", array("form_id" => $form_id)); +$page_vars["grouped_views"] = $grouped_views; +$page_vars["head_title"] = "{$LANG["phrase_edit_form"]} - {$LANG["word_views"]}"; +$page_vars["form_info"] = $form_info; +$page_vars["sortable_id"] = $sortable_id; +$page_vars["js_messages"] = array("phrase_remove_row", "phrase_create_group", "word_cancel", "phrase_delete_view", + "word_yes", "word_no", "confirm_delete_view", "notify_view_deleted", "phrase_please_confirm", + "confirm_delete_group", "phrase_create_new_view"); +$page_vars["num_views"] = $num_views; +$page_vars["head_string"] =<<< END + + +END; + +Themes::displayPage("admin/forms/edit/index.tpl", $page_vars); diff --git a/admin/forms/edit_submission.php b/admin/forms/edit_submission.php new file mode 100644 index 00000000..8e8241b0 --- /dev/null +++ b/admin/forms/edit_submission.php @@ -0,0 +1,188 @@ +checkAuth("admin"); + +$request = array_merge($_GET, $_POST); +$form_id = General::loadField("form_id", "curr_form_id"); +$view_id = Views::getCurrentView($request, $form_id); +$root_url = Core::getRootUrl(); + +if (empty($view_id) || !Views::checkViewExists($view_id, true)) { + General::redirect("edit/?page=views&form_id=$form_id&message=no_views"); +} + +$view_info = Views::getView($view_id); +$success = true; +$message = ""; + +if ($view_info["may_copy_submissions"] == "yes" && isset($_GET["copy_submission"]) && is_numeric($_GET["copy_submission"])) { + list($success, $message, $new_submission_id) = Submissions::copySubmission($form_id, $_GET["copy_submission"]); + if ($success) { + $request["submission_id"] = $new_submission_id; + } +} + +$submission_id = isset($request["submission_id"]) ? $request["submission_id"] : ""; +if (empty($submission_id)) { + General::redirect("submissions.php"); +} + +Sessions::set("last_submission_id", $submission_id); +Sessions::set("last_submission_id_{$form_id}", $submission_id); +Sessions::set("last_link_page_{$form_id}", "edit"); + +// get a list of all editable fields in the View. This is used for security purposes for the update function and to +// determine whether the page contains any editable fields +$editable_field_ids = ViewFields::getEditableViewFields($view_id); + +$failed_validation = false; +$core_update_success = true; +$changed_fields = array(); +if (isset($_POST) && !empty($_POST)) { + list($success, $message, $changed_fields, $failed_validation, $core_update_success) = Submissions::updateSubmissionWithConflictDetection($form_id, $submission_id, $view_id, $editable_field_ids, $request); +} + +$form_info = Forms::getForm($form_id); + +$has_tabs = false; +foreach ($view_info["tabs"] as $tab_info) { + if (!empty($tab_info["tab_label"])) { + $has_tabs = true; + break; + } +} +$tab_number = $has_tabs ? General::loadField("tab", "view_{$view_id}_current_tab", 1) : ""; +$grouped_fields = ViewFields::getGroupedViewFields($view_id, $tab_number, $form_id, $submission_id); + +if ($failed_validation && !$core_update_success) { + $grouped_fields = FieldValidation::mergeFormSubmission($grouped_fields, $_POST); +} + +$reconcile_changed_fields = array(); +if (empty($changed_fields)) { + Sessions::clear("conflicted_user_values"); + Submissions::trackCurrentEditSubmissionFields($grouped_fields, $submission_id, $view_id, $tab_number); +} else { + $reconcile_changed_fields = Submissions::getChangedFieldsToReconcile($grouped_fields, $changed_fields); +} + +$page_field_ids = array(); +$page_field_type_ids = array(); +$page_has_required_fields = false; +foreach ($grouped_fields as $group) { + foreach ($group["fields"] as $field_info) { + $page_field_ids[] = $field_info["field_id"]; + if (!in_array($field_info["field_type_id"], $page_field_type_ids)) { + $page_field_type_ids[] = $field_info["field_type_id"]; + } + if ($field_info["is_required"]) { + $page_has_required_fields = true; + } + } +} +$page_field_types = FieldTypes::get(true, $page_field_type_ids); + +// construct the tab list +$view_tabs = ViewTabs::getViewTabs($view_id, true); +$tabs = array(); +$same_page = General::getCleanPhpSelf(); +foreach ($view_tabs as $key => $value) { + $tabs[$key] = array( + "tab_label" => $value["tab_label"], + "tab_link" => "{$same_page}?tab=$key&form_id=$form_id&submission_id={$submission_id}" + ); +} + +// get a list of editable fields on this tab +$editable_tab_fields = array_intersect($page_field_ids, $editable_field_ids); + +// if we're just coming here from the search results page, get a fresh list of every submission ID in this +// search result set. This is used to build the internal "<< previous next >>" nav on this details page. +// They need to exactly correspond to the ordering of the search results or they don't make sense +$search = Sessions::exists("current_search") ? Sessions::get("current_search") : array(); +if (Sessions::exists("new_search") && Sessions::get("new_search") == "yes") { + $searchable_columns = ViewFields::getViewSearchableFields("", $view_info["fields"]); + + // extract the original search settings and get the list of IDs + $submission_ids = Submissions::getSearchSubmissionIds($form_id, $view_id, $search["order"], $search["search_fields"], $searchable_columns); + Sessions::set("form_{$form_id}_view_{$view_id}_submissions", $submission_ids); + Sessions::set("new_search", "no"); +} + +list($prev_link_html, $search_results_link_html, $next_link_html) = Submissions::getPrevNextLinks($form_id, $view_id, $submission_id, "submissions.php"); + +// construct the page label +$submission_placeholders = General::getSubmissionPlaceholders($form_id, $submission_id, "edit_submission"); +$edit_submission_page_label = General::evalSmartyString($form_info["edit_submission_page_label"], $submission_placeholders); + +$validation_js = FieldValidation::generateSubmissionJsValidation($grouped_fields); + + +// get all the shared resources +$settings = Settings::get("", "core"); +$shared_resources_list = $settings["edit_submission_onload_resources"]; +$shared_resources_array = explode("|", $shared_resources_list); +$shared_resources = ""; +foreach ($shared_resources_array as $resource) { + $shared_resources .= General::evalSmartyString($resource, array("g_root_url" => $root_url)) . "\n"; +} + +// compile the header information +$page_vars = array( + "page" => "admin_edit_submission", + "page_url" => Pages::getPageUrl("admin_edit_submission"), + "g_success" => $success, + "g_message" => $message, + "head_title" => $edit_submission_page_label, + "form_info" => $form_info, + "form_id" => $form_id, + "view_id" => $view_id, + "submission_id" => $submission_id, + "tabs" => $tabs, + "settings" => $settings, + "tab_number" => $tab_number, + "grouped_fields" => $grouped_fields, + "changed_fields" => $reconcile_changed_fields, + "field_types" => $page_field_types, + "previous_link_html" => $prev_link_html, + "page_has_required_fields" => $page_has_required_fields, + "search_results_link_html" => $search_results_link_html, + "next_link_html" => $next_link_html, + "tab_has_editable_fields" => count($editable_tab_fields) > 0, + "view_info" => $view_info, + "edit_submission_page_label" => $edit_submission_page_label, + "page_field_ids" => $page_field_ids, + "page_field_ids_str" => implode(",", $page_field_ids), + "js_messages" => array( + "confirm_delete_submission", "notify_no_email_template_selected", "confirm_delete_submission_file", + "phrase_please_confirm", "word_no", "word_yes", "word_close", "phrase_validation_error" + ) +); +$page_vars["head_string"] =<<< END + + + +$shared_resources +END; +$page_vars["head_js"] =<<< END +$validation_js +END; + +Themes::displayPage("admin/forms/edit_submission.tpl", $page_vars); diff --git a/admin/forms/index.php b/admin/forms/index.php new file mode 100644 index 00000000..4a648af4 --- /dev/null +++ b/admin/forms/index.php @@ -0,0 +1,62 @@ +checkAuth("admin"); + +Forms::cacheFormStats(); + +if (isset($_GET["reset"])) { + Sessions::set("form_sort_order", ""); + Sessions::set("form_search_keyword", ""); + Sessions::set("form_search_status", ""); + Sessions::set("form_search_client_id", ""); +} +$order = General::loadField("order", "form_sort_order", "form_id-DESC"); +$keyword = General::loadField("keyword", "form_search_keyword", ""); +$status = General::loadField("status", "form_search_status", ""); +$client_id = General::loadField("client_id", "form_search_client_id", ""); + +$search_criteria = array( + "is_admin" => true, + "order" => $order, + "keyword" => $keyword, + "status" => $status, + "account_id" => $client_id +); + +$clients = Clients::getList(); +$num_forms = Forms::getFormCount(); +$forms = Forms::searchForms($search_criteria); +$max_forms = Core::getMaxForms(); +$LANG = Core::$L; + +$page = array( + "page" => "admin_forms", + "page_url" => Pages::getPageUrl("admin_forms"), + "hasInvalidCacheFolder" => Core::hasInvalidCacheFolder(), + "head_title" => $LANG["word_forms"], + "has_client" => count($clients) > 0, + "num_forms" => $num_forms, + "max_forms_reached" => !empty($max_forms) && $num_forms >= $max_forms, + "max_forms" => $max_forms, + "notify_max_forms_reached" => General::evalSmartyString($LANG["notify_max_forms_reached"], array("max_forms" => $max_forms)), + "forms" => $forms, + "order" => $order, + "clients" => $clients, + "search_criteria" => $search_criteria, + "pagination" => General::getJsPageNav(count($forms), Sessions::get("settings.num_forms_per_page"), 1), + "js_messages" => array("word_remove", "word_edit", "phrase_open_form_in_new_tab_or_win", "word_close", "phrase_show_form"), + "head_js" => "$(function() { ft.init_show_form_links(); });" +); + +Themes::displayPage("admin/forms/index.tpl", $page); diff --git a/admin/forms/option_lists/edit.php b/admin/forms/option_lists/edit.php new file mode 100644 index 00000000..4061b87a --- /dev/null +++ b/admin/forms/option_lists/edit.php @@ -0,0 +1,60 @@ +checkAuth("admin"); + +$LANG = Core::$L; + +$list_id = General::loadField("list_id", "option_list_id", ""); +$page = General::loadField("page", "field_option_groups_tab", "main"); +$order = General::loadField("order", "option_list_order"); + +// used to display the total count of fields using this option list on the Form Fields tab. +$num_fields = OptionLists::getNumFieldsUsingOptionList($list_id); + +if (empty($list_id)) { + General::redirect("index.php"); + exit; +} + +$links = OptionLists::getOptionListPrevNextLinks($list_id, $order); +$prev_tabset_link = (!empty($links["prev_option_list_id"])) ? "edit.php?page=$page&list_id={$links["prev_option_list_id"]}" : ""; +$next_tabset_link = (!empty($links["next_option_list_id"])) ? "edit.php?page=$page&list_id={$links["next_option_list_id"]}" : ""; + + +$same_page = General::getCleanPhpSelf(); +$tabs = array( + "main" => array( + "tab_label" => $LANG["word_main"], + "tab_link" => "{$same_page}?page=main" + ), + "form_fields" => array( + "tab_label" => "{$LANG["phrase_form_fields"]} ($num_fields)", + "tab_link" => "{$same_page}?page=form_fields" + ) +); + +$page_vars = array(); +$page_vars["page"] = $page; +$page_vars["unique_page_id"] = "edit_option_list_main_tab"; +$page_vars["tabs"] = $tabs; +$page_vars["show_tabset_nav_links"] = true; +$page_vars["prev_tabset_link"] = $prev_tabset_link; +$page_vars["next_tabset_link"] = $next_tabset_link; + +$page_map = array( + "main" => "page_main.php", + "form_fields" => "page_form_fields.php" +); + +if (isset($page_map[$page])) { + require_once($page_map[$page]); +} else { + require_once($page_map["main"]); +} diff --git a/admin/forms/option_lists/index.php b/admin/forms/option_lists/index.php new file mode 100644 index 00000000..490ecb57 --- /dev/null +++ b/admin/forms/option_lists/index.php @@ -0,0 +1,104 @@ +checkAuth("admin"); + +$option_list_page = General::loadField("page", "option_list_page", 1); +$num_option_lists_per_page = Sessions::get("settings.num_option_lists_per_page"); + +$order = General::loadField("order", "option_list_order"); + +$success = true; +$message = ""; +if (isset($_GET["delete"])) { + list($success, $message) = OptionLists::deleteOptionList($_GET["delete"]); +} +if (!is_numeric($option_list_page)) { + $option_list_page = 1; +} + +// creates a new option list, optionally based on an existing once +if (isset($request["add_option_list"])) { + $duplicate_list_id = ""; + if (isset($request["create_option_list_from_list_id"]) && !empty($request["create_option_list_from_list_id"])) { + $duplicate_list_id = $request["create_option_list_from_list_id"]; + } + $field_ids = array(); + if (isset($request["field_id"])) { + $field_ids[] = $request["field_id"]; + } + $list_id = OptionLists::duplicateOptionList($duplicate_list_id, $field_ids); + + General::redirect("edit.php?page=main&list_id=$list_id"); +} + +// one additional check. If a user was on page 2 and just deleted (say) option list #11 and there are 10 per page, the +// visible page should be now be 1 +$total_num_option_lists = OptionLists::getNumOptionLists(); +$total_pages = ceil($total_num_option_lists / $num_option_lists_per_page); +if ($option_list_page > $total_pages) { + $option_list_page = $total_pages; +} + +$list_info = OptionLists::getList(array( + "page" => $option_list_page, + "order" => $order, + "per_page" => Sessions::get("settings.num_option_lists_per_page") +)); + + +$num_option_lists = $list_info["num_results"]; +$option_lists = $list_info["results"]; + +$updated_field_option_groups = array(); +$updated_option_lists = array(); +foreach ($option_lists as $option_list) { + $list_id = $option_list["list_id"]; + + // add the number of fields that use this option group + $option_list["num_fields"] = OptionLists::getNumFieldsUsingOptionList($list_id); + if ($option_list["num_fields"] > 0) { + $option_list["fields"] = OptionLists::getFieldsUsingOptionList($list_id, array("group_by_form" => true)); + } + + // add the total number of options in this group + $option_list["num_option_list_options"] = OptionLists::getNumOptionsInOptionList($list_id); + $updated_option_lists[] = $option_list; +} + +$all_option_lists = OptionLists::getList(array( + "per_page" => Sessions::get("settings.num_option_lists_per_page") +)); + +$root_url = Core::getRootUrl(); +$LANG = Core::$L; + +$page = array( + "page" => "option_lists", + "g_success" => $success, + "g_message" => $message, + "text_option_list_page" => General::evalSmartyString($LANG["text_option_list_page"], array("link" => "../add/step1.php")), + "page_url" => Pages::getPageUrl("option_lists"), + "head_title" => $LANG["phrase_option_lists"], + "option_lists" => $updated_option_lists, + "num_option_lists" => $num_option_lists, + "all_option_lists" => $all_option_lists["results"], + "order" => $order, + "js_messages" => array( + "validation_delete_non_empty_option_list", "confirm_delete_option_list", "phrase_please_confirm", + "word_yes", "word_no", "word_edit", "word_remove" + ), + "pagination" => General::getPageNav($num_option_lists, $num_option_lists_per_page, $option_list_page), + "head_string" => "" +); + +Themes::displayPage("admin/forms/option_lists/index.tpl", $page); diff --git a/admin/forms/option_lists/page_form_fields.php b/admin/forms/option_lists/page_form_fields.php new file mode 100644 index 00000000..f7d1fb8b --- /dev/null +++ b/admin/forms/option_lists/page_form_fields.php @@ -0,0 +1,35 @@ + 0) { + $form_fields = OptionLists::getFieldsUsingOptionList($list_id); +} + +$forms = Forms::getForms(); +$incomplete_forms = array(); +foreach ($forms as $form_info) { + if ($form_info["is_complete"] == "no") { + $incomplete_forms[] = $form_info["form_id"]; + } +} + +$page_vars["list_info"] = $list_info; +$page_vars["page_url"] = Pages::getPageUrl("edit_option_list"); +$page_vars["head_title"] = $LANG["phrase_edit_option_list"]; +$page_vars["num_fields_using_option_list"] = $num_fields; +$page_vars["incomplete_forms"] = $incomplete_forms; +$page_vars["form_fields"] = $form_fields; + +Themes::displayPage("admin/forms/option_lists/edit.tpl", $page_vars); diff --git a/admin/forms/option_lists/page_main.php b/admin/forms/option_lists/page_main.php new file mode 100644 index 00000000..ef71536e --- /dev/null +++ b/admin/forms/option_lists/page_main.php @@ -0,0 +1,151 @@ + "?page=form_fields", + "link2" => "index.php?add_option_list=1&create_option_list_from_list_id={$list_info["list_id"]}" +); + +// get a list of all existing Option Lists; this is used to ensure the uniqueness of the option list names +// (necessary only from a user point of view) +$lists = OptionLists::getList(array( + "per_page" => Sessions::get("settings.num_option_lists_per_page") +)); +$list_names = array(); +foreach ($lists["results"] as $curr_list_info) { + if ($list_id == $curr_list_info["list_id"]) { + continue; + } + $list_names[] = "\"" . htmlspecialchars($curr_list_info["option_list_name"]) . "\""; +} + +$list_names = implode(",", $list_names); + +$existing_option_list_names_js = "page_ns.option_list_names = [$list_names];"; + + +// compile template info +$page_vars["list_info"] = $list_info; +$page_vars["g_success"] = $success; +$page_vars["g_message"] = $message; +$page_vars["text_option_list_used_by_fields"] = General::evalSmartyString($LANG["text_option_list_used_by_fields"], $placeholders); +$page_vars["tabs"] = $tabs; +$page_vars["page_url"] = Pages::getPageUrl("edit_option_list"); +$page_vars["head_title"] = $LANG["phrase_edit_option_list"]; +$page_vars["num_fields_using_option_list"] = $num_fields; +$page_vars["total_options"] = $total_options; +$page_vars["sortable_id"] = $sortable_id; +$page_vars["js_messages"] = array("word_delete", "validation_no_smart_fill_values", "validation_invalid_url", + "validation_smart_fill_no_field_found", "validation_smart_fill_cannot_fill", "validation_smart_fill_invalid_field_type", + "validation_smart_fill_upload_all_pages", "validation_upload_html_files_only", "validation_smart_fill_no_page", + "validation_no_option_list_name", "validation_option_list_name_taken", "validation_num_rows_to_add", "word_error", + "word_okay", "phrase_please_confirm", "word_yes", "word_no", "confirm_delete_group", "phrase_create_group", "word_cancel", + "notify_field_options_smart_filled" +); +$page_vars["head_string"] =<<< END + + +END; + +$page_vars["head_js"] =<<< END +var page_ns = {}; +page_ns.page_initialized = false; +page_ns.ungroup_options_dialog = $("
"); + +$existing_option_list_names_js + +$(function() { + // the main add rows button for ungrouped option lists + sf_ns.num_rows = $("#num_rows").val(); + + $("#add_rows_button").bind("click", function(e) { + sf_ns.add_field_options($("#num_rows_to_add").val(), $(".rows:first")); + e.preventDefault(); + }); + + $("#option_list_form").bind("submit", function() { + return sf_ns.submit_update_field_option_group_page(); + }); + + $("input[name=is_grouped]").bind("change", function() { + var selected = $(this).val(); + + // the user wants to group the options. No problem: just enable the grouping + if (selected == "yes") { + $(".sortable_group_header").removeClass("hidden"); + $(".sortable_group_footer").removeClass("hidden"); + $(".add_group_section").removeClass("hidden"); + $(".add_ungrouped_rows").hide(); + + // otherwise, it's a bit more fussy. Warn the user they're about to lose data, and reload the page + } else { + ft.create_dialog({ + dialog: page_ns.ungroup_options_dialog, + title: "{$LANG["phrase_please_confirm"]}", + content: "{$LANG["confirm_ungroup_option_list"]}", + popup_type: "warning", + buttons: [ + { + text: "{$LANG["word_yes"]}", + click: function() { + ft.dialog_activity_icon(this, "show"); + $("#option_list_form").trigger("submit"); + } + }, + { + text: "{$LANG["word_no"]}", + click: function() { + $("#go1").attr("checked", "checked"); + $(this).dialog("close"); + } + } + ] + }); + } + }); + + $(".num_rows_to_add_to_group").live("keypress", function(e) { + if (e.keyCode == 13) { + var rows_section = $(this).closest(".sortable_group").find(".rows"); + sf_ns.add_field_options($(this).val(), rows_section); + return false; + } + }); + + $(".add_rows_to_group_button").live("click", function() { + var num_rows = $(this).parent().find(".num_rows_to_add_to_group").val(); + var rows_section = $(this).closest(".sortable_group").find(".rows"); + sf_ns.add_field_options(num_rows, rows_section); + }); + + $("#option_lists_advanced_settings_link").bind("click", function() { return sf_ns.toggle_advanced_settings(); }); +}); +END; + + +Themes::displayPage("admin/forms/option_lists/edit.tpl", $page_vars); diff --git a/admin/forms/submissions.php b/admin/forms/submissions.php new file mode 100644 index 00000000..b9143063 --- /dev/null +++ b/admin/forms/submissions.php @@ -0,0 +1,374 @@ +checkAuth("admin"); + +$root_url = Core::getRootUrl(); +$LANG = Core::$L; + +// if the form ID is specified in GET or POST, store it in sessions as curr_form_id +$form_id = General::loadField("form_id", "curr_form_id"); +if (empty($form_id) || !is_numeric($form_id)) { + General::redirect("./"); +} + +// check this is a valid form +if (!Forms::checkFormExists($form_id)) { + Errors::handleError($LANG["notify_form_does_not_exist"]); + exit; +} + +// next, get the View. If it's not defined, the user has just arrives at the page. We grab the first View in +// (ordered) list of Views for this form. If THAT doesn't exist, the user has deleted all Views (doh!), so +// there's nothing to show. In that case, just redirect them to the Views tab, where an error / warning message +// will appear in the page +$view_id = General::loadField("view_id", "form_{$form_id}_view_id"); +$grouped_views = Views::getGroupedViews($form_id, array("omit_hidden_views" => true, "omit_empty_groups" => true)); + +if (empty($view_id) || !Views::checkViewExists($view_id, true)) { + + // no Views defined for this form! redirect to the Views page and display a message + if (count($grouped_views) == 0 || count($grouped_views[0]["views"]) == 0) { + General::redirect("edit/?page=views&form_id=$form_id&message=no_views"); + } else { + $view_id = $grouped_views[0]["views"][0]["view_id"]; + } +} + +Sessions::set("form_{$form_id}_view_id", $view_id); +Sessions::set("last_link_page_{$form_id}", "submissions"); + +$form_info = Forms::getForm($form_id); +$form_fields = Fields::getFormFields($form_id, array("include_field_type_info" => true, "include_field_settings" => true)); +$view_info = Views::getView($view_id); + +if (isset($_GET["add_submission"]) && $view_info["may_add_submissions"] == "yes") { + $account_placeholders = Core::$user->getAccountPlaceholders(); + $submission_id = Submissions::createBlankSubmission($form_id, $view_id, true, $account_placeholders); + General::redirect("edit_submission.php?form_id=$form_id&view_id=$view_id&submission_id=$submission_id&message=new_submission"); +} + +// if the View just changed (i.e. it was just selected by the user), deselect any form rows +if (isset($request["view_id"])) { + Sessions::set("form_{$form_id}_selected_submissions", array()); + Sessions::set("form_{$form_id}_all_submissions_selected_omit_list", array()); + Sessions::set("form_{$form_id}_select_all_submissions", ""); +} + +// Fix for bug #174 +$has_search_info_for_other_form = (Sessions::exists("current_search") && Sessions::get("current_search.form_id") != $form_id); +$is_resetting_search = (isset($_GET["reset"]) && $_GET["reset"] == "1"); + +if ($is_resetting_search || $has_search_info_for_other_form) { + Sessions::clear("search_field"); + Sessions::clear("search_keyword"); + Sessions::clear("search_date"); + Sessions::clear("current_search"); + + // only empty the memory of selected submission ID info if the user just reset the search + if ($is_resetting_search) { + Submissions::clearSelected($form_id); + } +} +$search_fields = array( + "search_field" => General::loadField("search_field", "search_field", ""), + "search_date" => General::loadField("search_date", "search_date", ""), + "search_keyword" => General::loadField("search_keyword", "search_keyword", "") +); + +$success = true; +$message = ""; + +if (isset($_GET["copy_submissions"]) && $view_info["may_copy_submissions"] == "yes") { + list($submissions_to_delete, $omit_list) = Submissions::getSelectedSubmissions($form_id); + if (!empty($submissions_to_delete)) { + list($success, $message) = Submissions::copySubmissions($form_id, $view_id, $submissions_to_delete, $omit_list, $search_fields); + Submissions::clearSelected($form_id); + } +} + +if (isset($_GET["delete"])) { + // if delete actually a value, it's being fed a submission ID from the edit submission page + // in order to delete it + if (!empty($_GET["delete"])) { + $ids = explode(",", $_GET["delete"]); + foreach ($ids as $id) { + list($success, $message) = Submissions::deleteSubmission($form_id, $view_id, $id, true); + } + } else { + list ($submissions_to_delete, $omit_list) = Submissions::getSelectedSubmissions($form_id); + list($success, $message) = Submissions::deleteSubmissions($form_id, $view_id, $submissions_to_delete, $omit_list, $search_fields); + } +} + +// figure out the current page +$current_page = General::loadField("page", "view_{$view_id}_page", 1); +if (isset($_POST["search"])) { + $current_page = 1; +} + +// make a map of field_id => col_name for use in determining the search cols. This contains +// all the fields in the View +$all_view_field_columns = array(); +$searchable_columns = array(); + +foreach ($view_info["fields"] as $field_info) { + $all_view_field_columns[$field_info["field_id"]] = $field_info["col_name"]; + if ($field_info["is_searchable"] == "yes") { + $searchable_columns[] = $field_info["col_name"]; + } +} +$db_columns = array_values($all_view_field_columns); // used for the search query + +// with 2.1.0, users can now assign fields to be columns on the Submission Listing page but not actually +// include them in the list of fields to appear in the View. This section tacks on those columns so +// that they're included in the Almighty Search Query +foreach ($view_info["columns"] as $column_info) { + $curr_field_id = $column_info["field_id"]; + $curr_col_name = ""; + foreach ($form_fields as $field_info) { + if ($field_info["field_id"] == $curr_field_id) { + $curr_col_name = $field_info["col_name"]; + break; + } + } + + if (!array_key_exists($curr_col_name, $db_columns) && !empty($curr_col_name)) { + $db_columns[] = $curr_col_name; + } +} + +// display_fields contains ALL the information we need for the fields in the template, i.e. a composite +// of the view column, view field and form field information. For this page it only contains fields marked +// as columns. The submissions.tpl template also needs a bunch of other stuff, but for passing to the +// {display_custom_field} smarty function, actually very field keys are needed (see description in +// FieldTypes::generateViewableField) +$display_fields = array(); +foreach ($view_info["columns"] as $col_info) { + $curr_field_id = $col_info["field_id"]; + $data_to_merge = $col_info; + foreach ($view_info["fields"] as $view_field_info) { + if ($view_field_info["field_id"] != $curr_field_id) { + continue; + } + $data_to_merge = array_merge($view_field_info, $data_to_merge); + } + + foreach ($form_fields as $form_field_info) { + if ($form_field_info["field_id"] != $curr_field_id) { + continue; + } + $data_to_merge = array_merge($form_field_info, $data_to_merge); + } + + $display_fields[] = $data_to_merge; +} + +// determine the sort order +if (isset($_GET["order"])) { + Sessions::set("view_{$view_id}_sort_order", $_GET["order"]); + $order = $_GET["order"]; +} else { + $order = Sessions::getWithFallback("view_{$view_id}_sort_order", "{$view_info['default_sort_field']}-{$view_info['default_sort_field_order']}"); +} + +$results_per_page = $view_info["num_submissions_per_page"]; + +// perform the almighty search query +$results_info = Submissions::searchSubmissions($form_id, $view_id, $results_per_page, $current_page, $order, $db_columns, + $search_fields, array(), $searchable_columns); + +$search_rows = $results_info["search_rows"]; +$search_num_results = $results_info["search_num_results"]; +$view_num_results = $results_info["view_num_results"]; + +// store the current search settings. This information is used on the item details page to provide +// "<< previous next >>" links that only apply to the CURRENT search result set +Sessions::set("new_search", "yes"); +Sessions::set("current_search", array( + "form_id" => $form_id, + "results_per_page" => $results_per_page, + "order" => $order, + "search_fields" => $search_fields +)); + +// check that the current page is stored in sessions is, in fact, a valid page. e.g. if the person +// was having 10 submissions listed per page, had 11 submissions, and was on page 2 before deleting +// the 11th, when they returned to this page, they'd have page 2 stored in sessions, although there +// is no longer a second page. So for this fringe case, we update the session and refresh the page to +// load the appropriate page +$total_pages = ceil($search_num_results / $results_per_page); +$session_key = "view_{$view_id}_page"; +if (Sessions::exists($session_key) && Sessions::get($session_key) > $total_pages) { + Sessions::set($session_key, $total_pages); + General::redirect("submissions.php"); +} + +// this sets the total number of submissions that the admin can see in this form and View in the form_X_num_submissions +// and view_X_num_submissions keys +Forms::cacheFormStats($form_id); +Views::cacheViewStats($form_id, $view_id); + +Sessions::setIfNotExists("form_{$form_id}_select_all_submissions", ""); + +// get a list of all submission IDs in this page +$submission_ids = array(); +for ($i = 0; $i < count($search_rows); $i++) { + $submission_ids[] = $search_rows[$i]["submission_id"]; +} +$submission_id_str = implode(",", $submission_ids); + +// set as STRING for used in JS below +$select_all_submissions_returned = Submissions::isAllSelected($form_id) ? "true" : "false"; + +// figure out which submissions should be selected on page load +$preselected_subids = array(); +$all_submissions_selected_omit_list_str = ""; +if ($select_all_submissions_returned == "true") { + $all_submissions_selected_omit_list = Sessions::getWithFallback("form_{$form_id}_all_submissions_selected_omit_list", array()); + $all_submissions_selected_omit_list_str = implode(",", $all_submissions_selected_omit_list); + $preselected_subids = array_diff($submission_ids, $all_submissions_selected_omit_list); +} else { + $preselected_subids = Sessions::getWithFallback("form_{$form_id}_selected_submissions", array()); +} + +$preselected_subids_str = implode(",", $preselected_subids); + +// to pass to the smarty template +$field_types = FieldTypes::get(true); + +$has_searchable_field = false; +foreach ($view_info["fields"] as $field_info) { + if ($field_info["is_searchable"] == "yes") { + $has_searchable_field = true; + break; + } +} + +$settings = Settings::get("", "core"); +$date_picker_info = FieldTypes::getDefaultDateFieldSearchValue($settings["default_date_field_search_value"]); +$default_date_field_search_value = $date_picker_info["default_date_field_search_value"]; +$date_field_search_js_format = $date_picker_info["date_field_search_js_format"]; + +// get all the shared resources +$shared_resources_list = Settings::get("edit_submission_onload_resources"); +$shared_resources_array = explode("|", $shared_resources_list); +$shared_resources = ""; +foreach ($shared_resources_array as $resource) { + $shared_resources .= General::evalSmartyString($resource, array("g_root_url" => $root_url)) . "\n"; +} + +// compile the header information +$page_vars = array( + "page" => "admin_forms", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("form_submissions", array("form_id" => $form_id)), + "head_title" => $LANG["word_submissions"], + "form_info" => $form_info, + "form_id" => $form_id, + "view_id" => $view_id, + "default_date_field_search_value" => $default_date_field_search_value, + "search_rows" => $search_rows, + "search_num_results" => $search_num_results, + "view_num_results" => $view_num_results, + "total_form_submissions" => Sessions::get("form_{$form_id}_num_submissions"), + "grouped_views" => $grouped_views, + "view_info" => $view_info, + "settings" => $settings, + "pass_along_str" => "", // TODO + "preselected_subids" => $preselected_subids, + "results_per_page" => $results_per_page, + "display_fields" => $display_fields, + "page_submission_ids" => $submission_id_str, + "order" => $order, + "field_types" => $field_types, + "has_searchable_field" => $has_searchable_field, + "notify_view_missing_columns_admin_fix" => General::evalSmartyString($LANG["notify_view_missing_columns_admin_fix"], array( + "LINK" => "edit/?form_id={$form_id}&view_id={$view_id}&page=edit_view&edit_view_tab=2" + )), + "curr_search_fields" => Sessions::get("current_search.search_fields"), + "pagination" => General::getPageNav($search_num_results, $results_per_page, $current_page, "") +); + +$page_vars["js_messages"] = array( + "validation_select_rows_to_view", "validation_select_rows_to_download", + "validation_select_submissions_to_delete", "confirm_delete_submission", "confirm_delete_submissions", + "phrase_select_all_X_results", "phrase_select_all_on_page", "phrase_all_X_results_selected", + "phrase_row_selected", "phrase_rows_selected", "confirm_delete_submissions_on_other_pages", + "confirm_delete_submissions_on_other_pages2", "word_yes", "word_no", "phrase_please_confirm", + "validation_please_enter_search_keyword", "notify_invalid_search_dates", + "validation_select_submissions_to_copy" +); +$page_vars["head_string"] = <<< END + + + + + +$shared_resources +END; + +$page_vars["head_js"] = <<< END +var rules = []; +rules.push("function,ms.check_search_keyword"); +rules.push("function,ms.check_valid_date"); +if (typeof ms == "undefined") { + ms = {}; +} + +ms.page_submission_ids = [$submission_id_str]; // the submission IDs on the current page +ms.all_submissions_on_page_selected = null; // boolean; set on page load +ms.all_submissions_in_result_set_selected = $select_all_submissions_returned; +ms.selected_submission_ids = [$preselected_subids_str]; // regardless of page; only populated if all_submissions_in_result_set_selected == false +ms.all_submissions_selected_omit_list = [$all_submissions_selected_omit_list_str]; // if all submissions in result set selected, the unselected rows (for this page only!) are stored here +ms.search_num_results = $search_num_results; // the total number of View-search results, regardless of page +ms.form_id = $form_id; +ms.view_id = $view_id; +ms.num_results_per_page = $results_per_page; + +$(function() { + ms.init_submissions_page(); + if ($("#search_field").length) { + ms.change_search_field($("#search_field").val()); + $("#search_field").bind("keyup change", function() { + ms.change_search_field(this.value); + }); + } + if ($("#search_date").length) { + $("#search_date").daterangepicker({ + dateFormat: "$date_field_search_js_format", + doneButtonText: "{$LANG["word_done"]}", + presetRanges: [ + {text: '{$LANG["word_today"]}', dateStart: 'today', dateEnd: 'today' }, + {text: '{$LANG["phrase_last_7_days"]}', dateStart: 'today-7days', dateEnd: 'today' }, + {text: '{$LANG["phrase_month_to_date"]}', dateStart: function(){ return Date.parse('today').moveToFirstDayOfMonth(); }, dateEnd: 'today' }, + {text: '{$LANG["phrase_year_to_date"]}', dateStart: function(){ var x= Date.parse('today'); x.setMonth(0); x.setDate(1); return x; }, dateEnd: 'today' }, + {text: '{$LANG["phrase_the_previous_month"]}', dateStart: function(){ return Date.parse('1 month ago').moveToFirstDayOfMonth(); }, dateEnd: function(){ return Date.parse('1 month ago').moveToLastDayOfMonth(); } } + ], + datepickerOptions: { + changeYear: true, + changeMonth: true + } + }); + } +}); +END; + + +Themes::displayPage("admin/forms/submissions.tpl", $page_vars); diff --git a/admin/index.php b/admin/index.php new file mode 100644 index 00000000..02cb5ff4 --- /dev/null +++ b/admin/index.php @@ -0,0 +1,5 @@ +checkAuth("admin"); +$LANG = Core::$L; + +$module_info = Modules::getModule($request["module_id"]); + +// Hacky patch. Longer term plan, see: https://github.com/formtools/core/issues/82 +if (Core::$user->getLang() !== "en_us") { + $module = Modules::getModuleInstance($module_info["module_folder"]); + $module_info["module_name"] = $module->getModuleName(); + $module_info["description"] = $module->getModuleDesc(); +} + + +// compile header information +$page_vars = array( + "page" => "modules_about", + "page_url" => Pages::getPageUrl("modules_about"), + "head_title" => "{$LANG["word_modules"]} - {$LANG["word_about"]}", + "module_info" => $module_info +); + +Themes::displayPage("admin/modules/about.tpl", $page_vars); diff --git a/admin/modules/index.php b/admin/modules/index.php new file mode 100644 index 00000000..73eb35e1 --- /dev/null +++ b/admin/modules/index.php @@ -0,0 +1,121 @@ +checkAuth("admin"); + +$success = true; +$message = ""; +if (isset($request["install"]) && is_numeric($request["install"])) { + list($success, $message) = Modules::installModule($request["install"]); +} +if (isset($request["enable_modules"])) { + list($success, $message) = Modules::updateEnabledModules($request); +} +if (isset($request["refresh_module_list"])) { + list($success, $message) = Modules::updateModuleList(); +} +if (isset($request["uninstall"])) { + list($success, $message) = Modules::uninstallModule($request["uninstall"]); +} +if (isset($request["upgrade"])) { + list($success, $message) = Modules::upgradeModule($request["upgrade"]); +} +if (isset($_GET["reset"])) { + Sessions::set("module_sort_order", ""); + Sessions::set("module_search_keyword", ""); + Sessions::set("module_search_status", array("enabled", "disabled")); +} + +$order = General::loadField("order", "module_sort_order", ""); +$keyword = General::loadField("keyword", "module_search_keyword", ""); +$status = General::loadField("status", "module_search_status", array("enabled", "disabled")); + +$search_criteria = array( + "order" => $order, + "keyword" => $keyword, + "status" => $status +); +$num_modules = Modules::getModuleCount(); +$modules = Modules::searchModules($search_criteria); + +// Hacky patch. Longer term plan, see: https://github.com/formtools/core/issues/82 +$localized_modules = array(); +foreach ($modules as $module_info) { + $module = Modules::getModuleInstance($module_info["module_folder"]); + $module_info["module_name"] = $module->getModuleName(); + $module_info["description"] = $module->getModuleDesc(); + $localized_modules[] = $module_info; +} +$modules = $localized_modules; + +$module_ids = array(); +foreach ($modules as $module_info) { + $module_ids[] = $module_info["module_id"]; +} +$module_ids_in_page = implode(",", $module_ids); + +// find out if any of the modules have been upgraded +$updated_modules = array(); +foreach ($modules as $module_info) { + $module_id = $module_info["module_id"]; + $module_folder = $module_info["module_folder"]; + $curr_module = $module_info; + + // wedge in a check to confirm the module is valid. The most likely scenario is that the user upgraded the Core + // to FT3, but failed to update the modules. In that case the modules won't be valid + $is_valid = Modules::isValidModule($module_folder); + $curr_module["is_valid"] = $is_valid; + if ($is_valid) { + $curr_module["needs_upgrading"] = Modules::moduleNeedsUpgrading($module_id); + } else { + $curr_module["needs_upgrading"] = false; + } + + $updated_modules[] = $curr_module; +} + +// now re-sort the list based on in_installed = no, needs_upgrading = yes, the rest +$sorted_modules = array(); +$installed_modules = array(); +foreach ($updated_modules as $module_info) { + // we can rely on these guys being returned first + if ($module_info["is_installed"] == "no") { + $sorted_modules[] = $module_info; + } else if ($module_info["needs_upgrading"]) { + $sorted_modules[] = $module_info; + } else { + $installed_modules[] = $module_info; + } +} + +$modules = array_merge($sorted_modules, $installed_modules); +$LANG = Core::$L; + +$page_vars = array( + "page" => "modules", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("modules"), + "head_title" => $LANG["word_modules"], + "modules" => $modules, + "num_modules" => $num_modules, + "order" => $order, + "search_criteria" => $search_criteria, + "module_ids_in_page" => $module_ids_in_page, + "pagination" => General::getJsPageNav(count($modules), Sessions::get("settings.num_modules_per_page"), 1), + "js_messages" => array("validation_modules_search_no_status", "phrase_please_enter_license_key", "word_yes", "word_no", + "phrase_please_confirm", "confirm_uninstall_module", "word_close", "word_verify", "notify_invalid_license_key", + "notify_license_key_no_longer_valid", "notify_unknown_error"), + "head_string" => "" +); + +Themes::displayPage("admin/modules/index.tpl", $page_vars); diff --git a/admin/redirect.php b/admin/redirect.php new file mode 100644 index 00000000..1a1cfc6b --- /dev/null +++ b/admin/redirect.php @@ -0,0 +1,19 @@ +checkAuth("admin"); + +switch ($request["page"]) +{ + case "edit_view": + Sessions::createIfNotExists("inner_tabs", array()); + Sessions::set("inner_tabs.edit_view", $request["edit_view_tab"]); + General::redirect("./forms/edit/?page=edit_view&view_id={$request["view_id"]}"); + break; +} \ No newline at end of file diff --git a/admin/settings/index.php b/admin/settings/index.php new file mode 100644 index 00000000..4ee8aff1 --- /dev/null +++ b/admin/settings/index.php @@ -0,0 +1,76 @@ +checkAuth("admin"); + +$page = General::loadField("page", "settings_page", "main"); + +// store the current selected tab in memory - except for pages which require additional +// query string info. For those, use the "parent" page +if (isset($request["page"]) && !empty($request["page"])) { + $remember_page = $request["page"]; + switch ($remember_page) { + case "edit_admin_menu": + case "edit_client_menu": + $remember_page = "menus"; + break; + } + Sessions::set("settings_tab", $remember_page); + $page = $request["page"]; +} else { + $page = General::loadField("page", "settings_tab", "main"); +} + +$LANG = Core::$L; +$same_page = General::getCleanPhpSelf(); +$tabs = array( + "main" => array( + "tab_label" => $LANG["word_main"], + "tab_link" => "{$same_page}?page=main" + ), + "accounts" => array( + "tab_label" => $LANG["word_accounts"], + "tab_link" => "{$same_page}?page=accounts" + ), + "files" => array( + "tab_label" => $LANG["word_files"], + "tab_link" => "{$same_page}?page=files" + ), + "menus" => array( + "tab_label" => $LANG["word_menus"], + "tab_link" => "{$same_page}?page=menus", + "pages" => array("edit_admin_menu", "edit_client_menu") + ) +); + + +switch ($page) { + case "main": + require("page_main.php"); + break; + case "accounts": + require("page_accounts.php"); + break; + case "files": + require("page_files.php"); + break; + case "menus": + require("page_menus.php"); + break; + case "edit_client_menu": + require("page_edit_client_menu.php"); + break; + case "edit_admin_menu": + require("page_edit_admin_menu.php"); + break; + + default: + require("page_main.php"); + break; +} diff --git a/admin/settings/page_accounts.php b/admin/settings/page_accounts.php new file mode 100644 index 00000000..f08ba891 --- /dev/null +++ b/admin/settings/page_accounts.php @@ -0,0 +1,57 @@ +refreshLanguageList(); +} +$replacement_info = array("datefunctionlink" => 'date()'); + +$LANG = Core::$L; +$password_special_chars = Core::getRequiredPasswordSpecialChars(); + +// compile the theme vars +$page_vars = array(); +$page_vars["page"] = "accounts"; +$page_vars["g_success"] = $success; +$page_vars["g_message"] = $message; +$page_vars["page_url"] = Pages::getPageUrl("settings_accounts"); +$page_vars["tabs"] = $tabs; +$page_vars["head_title"] = "{$LANG["word_settings"]} - {$LANG["word_accounts"]}"; +$page_vars["text_date_formatting_link"] = General::evalSmartyString($LANG["text_date_formatting_link"], $replacement_info); +$page_vars["phrase_one_special_char"] = General::evalSmartyString($LANG["phrase_one_special_char"], array("chars" => $password_special_chars)); +$page_vars["head_js"] =<<< END +var rules = []; +rules.push("required,default_page_titles,{$LANG["validation_no_page_titles"]}"); +rules.push("required,default_client_menu_id,{$LANG["validation_no_menu_id"]}"); +rules.push("required,default_theme,{$LANG["validation_no_theme"]}"); +rules.push("function,validate_swatch"); +rules.push("required,default_login_page,{$LANG["validation_no_login_page"]}"); +rules.push("required,default_logout_url,{$LANG["validation_no_logout_url"]}"); +rules.push("required,default_language,{$LANG["validation_no_default_language"]}"); +rules.push("required,default_sessions_timeout,{$LANG["validation_no_default_sessions_timeout"]}"); +rules.push("digits_only,default_sessions_timeout,{$LANG["validation_invalid_default_sessions_timeout"]}"); +rules.push("required,default_date_format,{$LANG["validation_no_date_format"]}"); + +function validate_swatch() { + var theme = $("#default_theme").val(); + var swatch_id = "#" + theme + "_default_theme_swatches"; + if ($(swatch_id).length > 0 && $(swatch_id).val() == "") { + return [[$(swatch_id)[0], "{$LANG["validation_no_theme_swatch"]}"]]; + } + return true; +} +END; + +Themes::displayPage("admin/settings/index.tpl", $page_vars); diff --git a/admin/settings/page_edit_admin_menu.php b/admin/settings/page_edit_admin_menu.php new file mode 100644 index 00000000..292d37a5 --- /dev/null +++ b/admin/settings/page_edit_admin_menu.php @@ -0,0 +1,47 @@ + + +END; +$page_vars["js_messages"] = array( + "word_remove", "word_na", "notify_required_admin_pages", "word_form_c", "word_client_c", + "word_url_c", "word_forms", "word_clients", "word_settings", "phrase_your_account", "word_modules", "word_logout", + "phrase_delete_row", "phrase_connect_rows", "phrase_disconnect_rows +"); + +Themes::displayPage("admin/settings/index.tpl", $page_vars); diff --git a/admin/settings/page_edit_client_menu.php b/admin/settings/page_edit_client_menu.php new file mode 100644 index 00000000..1009e455 --- /dev/null +++ b/admin/settings/page_edit_client_menu.php @@ -0,0 +1,85 @@ + "edit_client_menu", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("edit_client_menu"), + "tabs" => $tabs, + "head_title" => "$program_name - {$LANG["phrase_setup_options"]} - {$LANG["word_menus"]}", + "menu" => $menu_info, + "is_new_menu" => $is_new_menu, + "selected_client_ids" => $selected_client_ids, + "sortable_id" => $sortable_id, + "js_messages" => array( + "word_remove", "word_na", "word_form_c", "word_client_c", "word_url_c", + "validation_menu_name_taken", "phrase_delete_row", "phrase_connect_rows", "phrase_disconnect_rows" + ), + "head_js" => $js +); + +$page_vars["head_string"] =<<< END + + +END; + +Themes::displayPage("admin/settings/index.tpl", $page_vars); diff --git a/admin/settings/page_files.php b/admin/settings/page_files.php new file mode 100644 index 00000000..7c8849a6 --- /dev/null +++ b/admin/settings/page_files.php @@ -0,0 +1,49 @@ + 'date()' +)); + +$head_js =<< "main", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("settings_main"), + "tabs" => $tabs, + "cache_folder" => Core::getCacheFolder(), + "head_title" => "{$LANG["word_settings"]} - {$LANG["word_main"]}", + "text_date_formatting_link" => $text_date_formatting_link, + "head_js" => $head_js +); + +Themes::displayPage("admin/settings/index.tpl", $page_vars); diff --git a/admin/settings/page_menus.php b/admin/settings/page_menus.php new file mode 100644 index 00000000..2b6da00e --- /dev/null +++ b/admin/settings/page_menus.php @@ -0,0 +1,68 @@ +
") +} + +page_ns.delete_menu = function(menu_id) { + ft.create_dialog({ + dialog: page_ns.delete_menu_dialog, + title: "{$LANG["phrase_please_confirm"]}", + content: "{$LANG["confirm_delete_menu"]}", + popup_type: "warning", + buttons: { + "{$LANG["word_yes"]}": function() { + window.location = "index.php?page=menus&delete=" + menu_id; + $(this).dialog("close"); + }, + "{$LANG["word_no"]}": function() { + $(this).dialog("close"); + } + } + }); + + return false; +} +END; + + +$page_vars = array( + "page" => "menus", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("settings_menus"), + "tabs" => $tabs, + "head_title" => "{$LANG["word_settings"]} - {$LANG["word_menus"]}", + "menus" => $menus["results"], + "total_num_menus" => $menus["num_results"], + "pagination" => General::getPageNav($menus["num_results"], Sessions::get("settings.num_menus_per_page"), $menu_page, "page=menus", "menu_page"), + "js_messages" => array("word_remove"), + "head_js" => $head_js +); + +Themes::displayPage("admin/settings/index.tpl", $page_vars); diff --git a/admin/themes/about.php b/admin/themes/about.php new file mode 100644 index 00000000..3554c6c7 --- /dev/null +++ b/admin/themes/about.php @@ -0,0 +1,33 @@ +checkAuth("admin"); +$LANG = Core::$L; + +$theme_id = isset($request["theme_id"]) ? $request["theme_id"] : ""; + +if (empty($theme_id)) { + General::redirect("index.php"); +} +$theme_info = Themes::getTheme($theme_id); + +// if this theme uses swatches, generate a list of all available swatches +if ($theme_info["uses_swatches"] == "yes") { + $theme_info["available_swatches"] = Themes::getThemeSwatchList($theme_info["swatches"]); +} + +// compile header information +$page_vars = array(); +$page_vars["page"] = "themes_about"; +$page_vars["page_url"] = Pages::getPageUrl("themes_about"); +$page_vars["head_title"] = "{$LANG["word_themes"]} - {$LANG["word_about"]}"; +$page_vars["theme_info"] = $theme_info; + +Themes::displayPage("admin/themes/about.tpl", $page_vars); diff --git a/admin/themes/index.php b/admin/themes/index.php new file mode 100644 index 00000000..96611996 --- /dev/null +++ b/admin/themes/index.php @@ -0,0 +1,99 @@ +checkAuth("client"); + +// provides a way to manually override admin theme in case of disaster +$success = true; +$message = ""; +if (isset($request["theme_override"])) { + list($success, $message) = Themes::resetAdminTheme($request["theme_override"]); +} +if (isset($request["update"])) { + list($success, $message) = Settings::updateThemeSettings($_POST); +} +if (isset($_POST["refresh_theme_list"])) { + list($success, $message) = Themes::updateThemeList(); +} +if (isset($_GET["mass_assign"])) { + list($success, $message) = Clients::updateClientThemes($_GET["accounts"], $_GET["theme_id"]); +} + +$themes = Themes::getList(); +$root_url = Core::getRootUrl(); +$root_dir = Core::getRootDir(); +$LANG = Core::$L; + +// check permissions on all the themes +$updated_themes = array(); +foreach ($themes as $theme_info) { + + // if this theme uses swatches, generate a list + if ($theme_info["uses_swatches"] == "yes") { + $theme_info["available_swatches"] = Themes::getThemeSwatchList($theme_info["swatches"]); + } + + $updated_themes[] = $theme_info; +} + +$head_js = <<< EOF +var rules = []; +rules.push("required,admin_theme,{$LANG["validation_no_admin_theme"]}"); +rules.push("function,validate_admin_swatch"); +rules.push("required,default_client_theme,{$LANG["validation_no_default_client_theme"]}"); +rules.push("function,validate_client_swatch"); + +function validate_admin_swatch() { + var admin_theme = $("#admin_theme").val(); + var swatch_id = "#" + admin_theme + "_admin_theme_swatches"; + if ($(swatch_id).length > 0 && $(swatch_id).val() == "") { + return [[$(swatch_id)[0], "{$LANG["validation_no_admin_theme_swatch"]}"]]; + } + return true; +} +function validate_client_swatch() { + var client_theme = $("#default_client_theme").val(); + var swatch_id = "#" + client_theme + "_default_client_theme_swatches"; + if ($(swatch_id).length > 0 && $(swatch_id).val() == "") { + return [[$(swatch_id)[0], "{$LANG["validation_no_client_theme_swatch"]}"]]; + } + return true; +} + +$(function() { + $(".fancybox").fancybox(); +}); +EOF; + +$head_string = <<< END + + +END; + +$page = array( + "page" => "themes", + "g_success" => $success, + "g_message" => $message, + "page_url" => Pages::getPageUrl("settings_themes"), + "head_title" => "{$LANG["word_settings"]} - {$LANG["word_themes"]}", + "nav_page" => "program_settings", + "themes" => $updated_themes, + "js_messages" => "", + "admin_theme" => Sessions::get("account.theme"), + "admin_theme_swatch" => Sessions::get("account.swatch"), + "client_theme" => Sessions::get("settings.default_theme"), + "client_theme_swatch" => Sessions::get("settings.default_client_swatch"), + "head_js" => $head_js, + "head_string" => $head_string +); + +Themes::displayPage("admin/themes/index.tpl", $page); diff --git a/cache/index.html b/cache/index.html new file mode 100644 index 00000000..bf247f33 --- /dev/null +++ b/cache/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/clients/account/index.php b/clients/account/index.php new file mode 100644 index 00000000..c65644d0 --- /dev/null +++ b/clients/account/index.php @@ -0,0 +1,34 @@ +checkAuth("client"); + +$LANG = Core::$L; + +$account_id = Sessions::get("account.account_id"); + +// store the current selected tab in memory +$page = General::loadField("page", "account_page", "main"); + +$same_page = General::getCleanPhpSelf(); +$tabs = array( + "main" => array("tab_label" => $LANG["word_main"], "tab_link" => "{$same_page}?page=main"), + "settings" => array("tab_label" => $LANG["word_settings"], "tab_link" => "{$same_page}?page=settings") +); + +$map = array( + "main" => "page_main.php", + "settings" => "page_settings.php" +); + +if (array_key_exists($page, $map)) { + require_once($map[$page]); +} else { + require_once($map["main"]); +} diff --git a/clients/account/page_main.php b/clients/account/page_main.php new file mode 100644 index 00000000..83e21242 --- /dev/null +++ b/clients/account/page_main.php @@ -0,0 +1,73 @@ + $client_info["settings"]["min_password_length"])); + $conditional_validation[] = "rules.push(\"if:password!=,length>={$client_info["settings"]["min_password_length"]},password,$rule\");"; +} + +$required_password_chars = explode(",", $client_info["settings"]["required_password_chars"]); +if (in_array("uppercase", $required_password_chars)) { + $conditional_validation[] = "rules.push(\"if:password!=,reg_exp,password,[A-Z],{$LANG["validation_client_password_missing_uppercase"]}\")"; +} +if (in_array("number", $required_password_chars)) { + $conditional_validation[] = "rules.push(\"if:password!=,reg_exp,password,[0-9],{$LANG["validation_client_password_missing_number"]}\")"; +} +if (in_array("special_char", $required_password_chars)) { + $error = General::evalSmartyString($LANG["validation_client_password_missing_special_char"], array("chars" => $req_password_special_chars)); + $password_special_chars = preg_quote($req_password_special_chars); + $conditional_validation[] = "rules.push(\"if:password!=,reg_exp,password,[$password_special_chars],$error\")"; +} +$conditional_rules = implode("\n", $conditional_validation); + + +// compile header information +$page_vars = array(); +$page_vars["g_success"] = $g_success; +$page_vars["g_message"] = $g_message; +$page_vars["head_title"] = General::evalSmartyString(Sessions::get("account.settings.page_titles"), array("page" => $LANG["phrase_login_info"])); +$page_vars["page"] = "main"; +$page_vars["tabs"] = $tabs; +$page_vars["client_info"] = $client_info; +$page_vars["page_url"] = Pages::getPageUrl("client_account"); + +// errrr... +$page_vars["required_password_chars"] = $required_password_chars; +$page_vars["password_special_chars"] = $req_password_special_chars; + +$page_vars["has_extra_password_requirements"] = (!empty($client_info["settings"]["required_password_chars"]) || !empty($client_info["settings"]["min_password_length"])); +$page_vars["has_min_password_length"] = !empty($client_info["settings"]["min_password_length"]); +$page_vars["password_special_char"] = General::evalSmartyString($LANG["phrase_password_special_char"], array("chars" => $req_password_special_chars)); +$page_vars["phrase_password_min"] = General::evalSmartyString($LANG["phrase_password_min"], array("length" => $client_info["settings"]["min_password_length"])); +$page_vars["head_js"] =<<< END +var rules = []; +rules.push("required,first_name,{$LANG["validation_no_first_name"]}"); +rules.push("required,last_name,{$LANG["validation_no_last_name"]}"); +rules.push("required,email,{$LANG["validation_no_email"]}"); +rules.push("required,username,{$LANG["validation_no_username"]}"); +rules.push("is_alpha,username,{$LANG['validation_invalid_username']}"); +rules.push("if:password!=,required,password_2,{$LANG["validation_no_account_password_confirmed"]}"); +rules.push("if:password!=,same_as,password,password_2,{$LANG["validation_passwords_different"]}"); +$conditional_rules +END; + +Themes::displayPage("clients/account/index.tpl", $page_vars); diff --git a/clients/account/page_settings.php b/clients/account/page_settings.php new file mode 100644 index 00000000..5d6b01e7 --- /dev/null +++ b/clients/account/page_settings.php @@ -0,0 +1,70 @@ + 'date()' +)); + +$js = array("var rules = []"); +if ($client_info["settings"]["may_edit_page_titles"] == "yes") + $js[] = "rules.push(\"required,page_titles,{$LANG["validation_no_titles"]}\")"; +if ($client_info["settings"]["may_edit_theme"] == "yes") { + $js[] = "rules.push(\"required,theme,{$LANG["validation_no_theme"]}\")"; + $js[] = "rules.push(\"function,validate_swatch\")"; +} +if ($client_info["settings"]["may_edit_logout_url"] == "yes") + $js[] = "rules.push(\"required,logout_url,{$LANG["validation_no_logout_url"]}\")"; +if ($client_info["settings"]["may_edit_language"] == "yes") + $js[] = "rules.push(\"required,ui_language,{$LANG["validation_no_ui_language"]}\")"; +if ($client_info["settings"]["may_edit_timezone_offset"] == "yes") + $js[] = "rules.push(\"required,timezone_offset,{$LANG["validation_no_timezone_offset"]}\")"; +if ($client_info["settings"]["may_edit_sessions_timeout"] == "yes") { + $js[] = "rules.push(\"required,sessions_timeout,{$LANG["validation_no_sessions_timeout"]}\")"; + $js[] = "rules.push(\"digits_only,sessions_timeout,{$LANG["validation_invalid_sessions_timeout"]}\")"; +} +if ($client_info["settings"]["may_edit_date_format"] == "yes") + $js[] = "rules.push(\"required,date_format,{$LANG["validation_no_date_format"]}\")"; + +$js[] =<<< END +function validate_swatch() { + var theme = $("#theme").val(); + var swatch_id = "#" + theme + "_theme_swatches"; + if ($(swatch_id).length > 0 && $(swatch_id).val() == "") { + return [[$(swatch_id)[0], "{$LANG["validation_no_theme_swatch"]}"]]; + } + return true; +} +END; + +$page_vars = array( + "g_success" => $g_success, + "g_message" => $g_message, + "head_title" => General::evalSmartyString(Sessions::get("account.settings.page_titles"), array("page" => $LANG["phrase_account_settings"])), + "page" => "settings", + "text_date_formatting_link" => $text_date_formatting_link, + "tabs" => $tabs, + "client_info" => $client_info, + "page_url" => Pages::getPageUrl("client_account_settings"), + "head_js" => implode(";\n", $js) +); + +Themes::displayPage("clients/account/index.tpl", $page_vars); diff --git a/clients/forms/edit_submission.php b/clients/forms/edit_submission.php new file mode 100644 index 00000000..69c6af74 --- /dev/null +++ b/clients/forms/edit_submission.php @@ -0,0 +1,206 @@ +checkAuth("client"); +$root_url = Core::getRootUrl(); + +$account_id = Sessions::get("account.account_id"); + +// combine the GET and POST variables into a single variable for easy reference +$request = array_merge($_GET, $_POST); +$form_id = General::loadField("form_id", "curr_form_id"); +$view_id = General::loadField("view_id", "form_{$form_id}_view_id"); + +$tab_number = General::loadField("tab", "view_{$view_id}_current_tab", 1); +$grouped_views = Views::getGroupedViews($form_id, array( + "omit_hidden_views" => true, + "omit_empty_groups" => true, + "account_id" => $account_id +)); + +if (isset($_GET["copy_submission"]) && is_numeric($_GET["copy_submission"])) { + $submission_id = $_GET["copy_submission"]; +} else { + $submission_id = isset($request["submission_id"]) ? $request["submission_id"] : ""; +} + +if (empty($submission_id)) { + General::redirect("index.php"); +} + +// check the current client is permitted to view this information! +General::checkClientMayView($account_id, $form_id, $view_id); +if (!Submissions::checkViewContainsSubmission($form_id, $view_id, $submission_id)) { + General::redirect("index.php"); +} + +$form_info = Forms::getForm($form_id); +$view_info = Views::getView($view_id); + +$success = false; +$message = ""; + +if ($view_info["may_copy_submissions"] == "yes" && isset($_GET["copy_submission"]) && is_numeric($_GET["copy_submission"])) { + list($success, $message, $new_submission_id) = Submissions::copySubmission($form_id, $_GET["copy_submission"]); + if ($success) { + $submission_id = $new_submission_id; + } +} + + +// store this submission ID +Sessions::set("last_submission_id", $submission_id); + +// get a list of all editable fields in the View. This is used both for security purposes +// for the update function and to determine whether the page contains any editable fields +$editable_field_ids = ViewFields::getEditableViewFields($view_id); + +$failed_validation = false; +$core_update_success = true; +$changed_fields = array(); +if (isset($_POST) && !empty($_POST)) { + list($success, $message, $changed_fields, $failed_validation, $core_update_success) = Submissions::updateSubmissionWithConflictDetection($form_id, $submission_id, $view_id, $editable_field_ids, $request); +} + +// this is crumby +$has_tabs = false; +foreach ($view_info["tabs"] as $tab_info) { + if (!empty($tab_info["tab_label"])) { + $has_tabs = true; + break; + } +} +if ($has_tabs) { + $tab_number = General::loadField("tab", "view_{$view_id}_current_tab", 1); +} else { + $tab_number = ""; +} + +$grouped_fields = ViewFields::getGroupedViewFields($view_id, $tab_number, $form_id, $submission_id); +if ($failed_validation && !$core_update_success) { + $grouped_fields = FieldValidation::mergeFormSubmission($grouped_fields, $_POST); +} + +$reconcile_changed_fields = array(); +if (empty($changed_fields)) { + Sessions::clear("conflicted_user_values"); + Submissions::trackCurrentEditSubmissionFields($grouped_fields, $submission_id, $view_id, $tab_number); +} else { + $reconcile_changed_fields = Submissions::getChangedFieldsToReconcile($grouped_fields, $changed_fields); +} + +$page_field_ids = array(); +$page_field_type_ids = array(); +foreach ($grouped_fields as $group) { + foreach ($group["fields"] as $field_info) { + $page_field_ids[] = $field_info["field_id"]; + if (!in_array($field_info["field_type_id"], $page_field_type_ids)) { + $page_field_type_ids[] = $field_info["field_type_id"]; + } + } +} +$page_field_types = FieldTypes::get(true, $page_field_type_ids); + + +// construct the tab list +$view_tabs = ViewTabs::getViewTabs($view_id, true); +$same_page = General::getCleanPhpSelf(); +$tabs = array(); +foreach ($view_tabs as $key => $value) { + $tabs[$key] = array( + "tab_label" => $value["tab_label"], + "tab_link" => "{$same_page}?tab=$key&form_id=$form_id&submission_id=$submission_id" + ); +} + +// get a list of editable fields on this tab +$editable_tab_fields = array_intersect($page_field_ids, $editable_field_ids); + +$search = Sessions::exists("current_search") ? Sessions::get("current_search") : array(); + +// if we're just coming here from the search results page, get a fresh list of every submission ID in this +// search result set. This is used to build the internal "<< previous next >>" nav on this details page +if (Sessions::exists("new_search") && Sessions::get("new_search") == "yes") { + // extract the original search settings and get the list of IDs + $searchable_columns = ViewFields::getViewSearchableFields("", $view_info["fields"]); + $submission_ids = Submissions::getSearchSubmissionIds($form_id, $view_id, $search["order"], $search["search_fields"], $searchable_columns); + + // this is awful. + Sessions::set("form_{$form_id}_view_{$view_id}_submissions", $submission_ids); + Sessions::set("new_search", "no"); +} + +list($prev_link_html, $search_results_link_html, $next_link_html) = Submissions::getPrevNextLinks($form_id, $view_id, $submission_id); + +// construct the page label +$submission_placeholders = General::getSubmissionPlaceholders($form_id, $submission_id, "edit_submission"); +$edit_submission_page_label = General::evalSmartyString($form_info["edit_submission_page_label"], $submission_placeholders); + +// get all the shared resources +$settings = Settings::get("", "core"); +$shared_resources_list = $settings["edit_submission_onload_resources"]; +$shared_resources_array = explode("|", $shared_resources_list); +$shared_resources = ""; +foreach ($shared_resources_array as $resource) { + $shared_resources .= General::evalSmartyString($resource, array("g_root_url" => $root_url)) . "\n"; +} + +// ------------------------------------------------------------------------------------------------ + +$head_string =<<< EOF + + + +$shared_resources +EOF; + +$page_vars = array( + "page" => "client_edit_submission", + "page_url" => Pages::getPageUrl("client_edit_submission"), + "g_success" => $success, + "g_message" => $message, + "tabs" => $tabs, + "form_info" => $form_info, + "grouped_views" => $grouped_views, + "tab_number" => $tab_number, + "settings" => $settings, + "page_field_ids" => $page_field_ids, + "grouped_fields" => $grouped_fields, + "changed_fields" => $reconcile_changed_fields, + "field_types" => $page_field_types, + "head_title" => $edit_submission_page_label, + "submission_id" => $submission_id, + "previous_link_html" => $prev_link_html, + "search_results_link_html" => $search_results_link_html, + "next_link_html" => $next_link_html, + "tab_has_editable_fields" => count($editable_tab_fields) > 0, + "view_info" => $view_info, + "form_id" => $form_id, + "view_id" => $view_id, + "edit_submission_page_label" => $edit_submission_page_label, + "page_field_ids_str" => implode(",", $page_field_ids), + "js_messages" => array( + "confirm_delete_submission", "notify_no_email_template_selected", "confirm_delete_submission_file", + "phrase_please_confirm", "word_no", "word_yes", "word_close", "phrase_validation_error" + ), + "head_string" => $head_string, + "head_js" => FieldValidation::generateSubmissionJsValidation($grouped_fields) +); + +Themes::displayPage("clients/forms/edit_submission.tpl", $page_vars); diff --git a/clients/forms/index.php b/clients/forms/index.php new file mode 100644 index 00000000..3a28d52a --- /dev/null +++ b/clients/forms/index.php @@ -0,0 +1,381 @@ +checkAuth("client"); +$LANG = Core::$L; +$root_url = Core::getRootUrl(); +$account_id = Sessions::get("account.account_id"); + +// if the form ID is specified in GET or POST, store it in sessions as curr_form_id +$form_id = General::loadField("form_id", "curr_form_id"); +if (empty($form_id)) { + General::redirect("index.php"); +} + +$view_id = General::loadField("view_id", "form_{$form_id}_view_id"); + +// check the current client is permitted to view this information! +General::checkClientMayView($account_id, $form_id, $view_id); + +// this returns all and ONLY the Views accessible by this client +$grouped_views = Views::getGroupedViews($form_id, array( + "omit_hidden_views" => true, + "omit_empty_groups" => true, + "account_id" => $account_id +)); + +if (empty($view_id) || !Views::checkViewExists($view_id, true)) { + if (empty($grouped_views) || count($grouped_views[0]["views"]) == 0) { + // no Views defined for this client. Redirect the user back to their form list page and show an error + General::redirect("../?message=notify_no_views_assigned_to_client_form"); + exit; + } else { + $view_id = $grouped_views[0]["views"][0]["view_id"]; + } +} +Sessions::set("form_{$form_id}_view_id", $view_id); + +$form_info = Forms::getForm($form_id); +$view_info = Views::getView($view_id); + +if (isset($_GET["add_submission"]) && $view_info["may_add_submissions"] == "yes") { + $account_placeholders = Core::$user->getAccountPlaceholders(); + $submission_id = Submissions::createBlankSubmission($form_id, $view_id, true, $account_placeholders); + General::redirect("edit_submission.php?form_id=$form_id&view_id=$view_id&submission_id=$submission_id"); +} + +// if the View just changed (i.e. it was just selected by the user), deselect any items in +// this form +if (isset($request["view_id"])) { + Sessions::set("form_{$form_id}_selected_submissions", array()); + Sessions::set("form_{$form_id}_all_submissions_selected_omit_list", array()); + Sessions::set("form_{$form_id}_select_all_submissions", ""); +} + +// Fix for bug #174 +$has_search_info_for_other_form = Sessions::exists("current_search") && Sessions::get("current_search.form_id") != $form_id; +$is_resetting_search = (isset($_GET["reset"]) && $_GET["reset"] == "1"); + +if ($is_resetting_search || $has_search_info_for_other_form) { + Sessions::clear("search_field"); + Sessions::clear("search_keyword"); + Sessions::clear("search_date"); + Sessions::clear("current_search"); + + // only empty the memory of selected submission ID info if the user just reset the search + if ($is_resetting_search) { + Sessions::set("form_{$form_id}_selected_submissions", array()); + Sessions::set("form_{$form_id}_all_submissions_selected_omit_list", array()); + Sessions::set("form_{$form_id}_select_all_submissions", ""); + } +} + +$search_fields = array( + "search_field" => General::loadField("search_field", "search_field", ""), + "search_date" => General::loadField("search_date", "search_date", ""), + "search_keyword" => General::loadField("search_keyword", "search_keyword", "") +); + +$success = true; +$message = ""; + +if (isset($_GET["copy_submissions"]) && $view_info["may_copy_submissions"] == "yes") { + list($submissions_to_delete, $omit_list) = Submissions::getSelectedSubmissions($form_id); + if (!empty($submissions_to_delete)) { + list($success, $message) = Submissions::copySubmissions($form_id, $view_id, $submissions_to_delete, $omit_list, $search_fields); + Submissions::clearSelected($form_id); + } +} + +if (isset($_GET["delete"])) { + // if delete actually a value, it's being fed a submission ID from the edit submission page + // in order to delete it + if (!empty($_GET["delete"])) { + $ids = explode(",", $_GET["delete"]); + foreach ($ids as $id) { + list($success, $message) = Submissions::deleteSubmission($form_id, $view_id, $id, true); + } + } else { + $submissions_to_delete = Sessions::get("form_{$form_id}_selected_submissions"); + $omit_list = array(); + if (Submissions::isAllSelected($form_id)) { + $submissions_to_delete = "all"; + $omit_list = Sessions::get("form_{$form_id}_all_submissions_selected_omit_list"); + } + list($success, $message) = Submissions::deleteSubmissions($form_id, $view_id, $submissions_to_delete, $omit_list, $search_fields); + } +} + +// figure out the current page +$current_page = General::loadField("page", "view_{$view_id}_page", 1); +if (isset($_POST["search"])) { + $current_page = 1; +} + +$form_fields = Fields::getFormFields($form_id, array("include_field_type_info" => true, "include_field_settings" => true)); + +// make a map of field_id => col_name for use in determining the search cols ad +// make a map of field_id => col_name for use in determining the search cols. This contains +// all the fields in the View +$all_view_field_columns = array(); +$searchable_columns = array(); +foreach ($view_info["fields"] as $field_info) { + $all_view_field_columns[$field_info["field_id"]] = $field_info["col_name"]; + if ($field_info["is_searchable"] == "yes") { + $searchable_columns[] = $field_info["col_name"]; + } +} +$db_columns = array_values($all_view_field_columns); // used for the search query + +// with 2.1.0, users can now assign fields to be columns on the Submission Listing page but not actually +// include them in the list of fields to appear in the View. This section tacks on those columns so +// that they're included in the Almighty Search Query +foreach ($view_info["columns"] as $column_info) { + $curr_field_id = $column_info["field_id"]; + $curr_col_name = ""; + foreach ($form_fields as $field_info) { + if ($field_info["field_id"] == $curr_field_id) { + $curr_col_name = $field_info["col_name"]; + break; + } + } + + if (!array_key_exists($curr_col_name, $db_columns)) { + $db_columns[] = $curr_col_name; + } +} + +// display_fields contains ALL the information we need for the fields in the template +$display_fields = array(); +foreach ($view_info["columns"] as $col_info) { + $curr_field_id = $col_info["field_id"]; + $data_to_merge = $col_info; + + foreach ($view_info["fields"] as $view_field_info) { + if ($view_field_info["field_id"] != $curr_field_id) { + continue; + } + $data_to_merge = array_merge($view_field_info, $data_to_merge); + } + + foreach ($form_fields as $form_field_info) { + if ($form_field_info["field_id"] != $curr_field_id) { + continue; + } + $data_to_merge = array_merge($form_field_info, $data_to_merge); + } + + $display_fields[] = $data_to_merge; +} + + +// determine the sort order +$session_key = "view_{$view_id}_sort_order"; +if (isset($_GET["order"])) { + Sessions::set($session_key, $_GET["order"]); + $order = $_GET["order"]; +} else { + if (Sessions::exists($session_key)) { + $order = Sessions::get($session_key); + } else { + $order = "{$view_info['default_sort_field']}-{$view_info['default_sort_field_order']}"; + } +} + +$results_per_page = $view_info["num_submissions_per_page"]; + +// perform the almighty search query +$results_info = Submissions::searchSubmissions($form_id, $view_id, $results_per_page, $current_page, $order, $db_columns, $search_fields, + array(), $searchable_columns); + +$search_rows = $results_info["search_rows"]; +$search_num_results = $results_info["search_num_results"]; +$view_num_results = $results_info["view_num_results"]; + +// store the current search settings. This information is used on the item details page to provide +// "<< previous next >>" links that only apply to the CURRENT search result set +Sessions::set("new_search", "yes"); +Sessions::set("current_search", array( + "form_id" => $form_id, + "results_per_page" => $results_per_page, + "order" => $order, + "search_fields" => $search_fields +)); + +// check that the current page is stored in sessions is, in fact, a valid page. e.g. if the person +// was having 10 submissions listed per page, had 11 submissions, and was on page 2 before deleting +// the 11th, when they returned to this page, they'd have page 2 stored in sessions, although there +// is no longer a second page. So for this fringe case, we update the session and refresh the page to +// load the appropriate page +$total_pages = ceil($search_num_results / $results_per_page); +$session_key = "view_{$view_id}_page"; +if (Sessions::exists($session_key) && Sessions::get($session_key) > $total_pages) { + Sessions::set($session_key, $total_pages); + General::redirect("index.php"); +} + +// this sets the total number of submissions that the admin can see in this form and View in the form_X_num_submissions +// and view_X_num_submissions keys. It's used to generate the list of searchable dates +Forms::cacheFormStats($form_id); +Views::cacheViewStats($form_id, $view_id); + +$session_key = "form_{$form_id}_select_all_submissions"; +if (!Sessions::exists($session_key)) { + Sessions::set($session_key, ""); +} + +// get a list of all submission IDs in this page +$submission_ids = array(); +for ($i = 0; $i < count($search_rows); $i++) { + $submission_ids[] = $search_rows[$i]["submission_id"]; +} + +$submission_id_str = implode(",", $submission_ids); + +// set as STRING for used in JS below +$select_all_submissions_returned = (Sessions::get("form_{$form_id}_select_all_submissions") == "1") ? "true" : "false"; + +// figure out which submissions should be selected on page load +$preselected_subids = array(); +$all_submissions_selected_omit_list_str = ""; +if ($select_all_submissions_returned == "true") { + $all_submissions_selected_omit_list = Sessions::getWithFallback("form_{$form_id}_all_submissions_selected_omit_list", array()); + $all_submissions_selected_omit_list_str = implode(",", $all_submissions_selected_omit_list); + $preselected_subids = array_diff($submission_ids, $all_submissions_selected_omit_list); +} else { + $preselected_subids = Sessions::getWithFallback("form_{$form_id}_selected_submissions", array()); +} + +$preselected_subids_str = implode(",", $preselected_subids); +$field_types = FieldTypes::get(true); + +$has_searchable_field = false; +foreach ($view_info["fields"] as $field_info) { + if ($field_info["is_searchable"] == "yes") { + $has_searchable_field = true; + break; + } +} + +$settings = Settings::get("", "core"); + +$date_picker_info = FieldTypes::getDefaultDateFieldSearchValue($settings["default_date_field_search_value"]); +$default_date_field_search_value = $date_picker_info["default_date_field_search_value"]; +$date_field_search_js_format = $date_picker_info["date_field_search_js_format"]; + +// get all the shared resources +$shared_resources_list = Settings::get("edit_submission_onload_resources"); +$shared_resources_array = explode("|", $shared_resources_list); +$shared_resources = ""; +foreach ($shared_resources_array as $resource) { + $shared_resources .= General::evalSmartyString($resource, array("g_root_url" => $root_url)) . "\n"; +} + +$page_vars = array( + "g_success" => $success, + "g_message" => $message, + "page" => "client_forms", + "page_url" => Pages::getPageUrl("client_form_submissions", array("form_id" => $form_id)), + "head_title" => $LANG["word_submissions"], + "form_info" => $form_info, + "form_id" => $form_id, + "view_id" => $view_id, + "search_rows" => $search_rows, + "search_num_results" => $search_num_results, + "view_num_results" => $view_num_results, + "default_date_field_search_value" => $default_date_field_search_value, + "total_form_submissions" => Sessions::get("form_{$form_id}_num_submissions"), + "grouped_views" => $grouped_views, + "view_info" => $view_info, + "settings" => $settings, + "preselected_subids" => $preselected_subids, + "page_submission_ids" => $submission_id_str, + "results_per_page" => $results_per_page, + "display_fields" => $display_fields, + "order" => $order, + "field_types" => $field_types, + "has_searchable_field" => $has_searchable_field, + "curr_search_fields" => Sessions::get("current_search.search_fields"), + "pagination" => General::getPageNav($search_num_results, $results_per_page, $current_page, ""), +); + +$page_vars["js_messages"] = array( + "validation_select_rows_to_view", "validation_select_rows_to_download", "validation_select_submissions_to_delete", + "confirm_delete_submission", "confirm_delete_submissions", "phrase_select_all_X_results", + "phrase_select_all_on_page", "phrase_all_X_results_selected", "phrase_row_selected", "phrase_rows_selected", + "confirm_delete_submissions_on_other_pages", "confirm_delete_submissions_on_other_pages2", + "word_yes", "word_no", "phrase_please_confirm", "validation_please_enter_search_keyword", "notify_invalid_search_dates", + "validation_select_submissions_to_copy" +); +$page_vars["head_string"] = <<< END + + + + + +$shared_resources +END; + +$page_vars["head_js"] = <<< END +var rules = []; +rules.push("function,ms.check_search_keyword"); +rules.push("if:search_field=submission_date,required,search_date,{$LANG["validation_please_enter_search_date_range"]}"); +rules.push("function,ms.check_valid_date"); +if (typeof ms == "undefined") { + ms = {}; +} + +ms.page_submission_ids = [$submission_id_str]; // the submission IDs on the current page +ms.all_submissions_on_page_selected = null; // boolean; set on page load +ms.all_submissions_in_result_set_selected = $select_all_submissions_returned; +ms.selected_submission_ids = [$preselected_subids_str]; // regardless of page; only populated if all_submissions_in_result_set_selected == false +ms.all_submissions_selected_omit_list = [$all_submissions_selected_omit_list_str]; // if all submissions in result set selected, the unselected rows (for this page only!) are stored here +ms.search_num_results = $search_num_results; // the total number of View-search results, regardless of page +ms.form_id = $form_id; +ms.view_id = $view_id; +ms.num_results_per_page = $results_per_page; + +$(function() { + ms.init_submissions_page(); + ms.change_search_field($("#search_field").val()); + + if ($("#search_field").length) { + $("#search_field").bind("keyup change", function() { + ms.change_search_field(this.value); + }); + } + if ($("#search_date").length) { + $("#search_date").daterangepicker({ + dateFormat: "$date_field_search_js_format", + doneButtonText: "{$LANG["word_done"]}", + presetRanges: [ + {text: '{$LANG["word_today"]}', dateStart: 'today', dateEnd: 'today' }, + {text: '{$LANG["phrase_last_7_days"]}', dateStart: 'today-7days', dateEnd: 'today' }, + {text: '{$LANG["phrase_month_to_date"]}', dateStart: function(){ return Date.parse('today').moveToFirstDayOfMonth(); }, dateEnd: 'today' }, + {text: '{$LANG["phrase_year_to_date"]}', dateStart: function(){ var x= Date.parse('today'); x.setMonth(0); x.setDate(1); return x; }, dateEnd: 'today' }, + {text: '{$LANG["phrase_the_previous_month"]}', dateStart: function(){ return Date.parse('1 month ago').moveToFirstDayOfMonth(); }, dateEnd: function(){ return Date.parse('1 month ago').moveToLastDayOfMonth(); } } + ], + datepickerOptions: { + changeYear: true, + changeMonth: true + } + }); + } +}); +END; + +Themes::displayPage("clients/forms/index.tpl", $page_vars); diff --git a/clients/index.php b/clients/index.php new file mode 100644 index 00000000..52d0017b --- /dev/null +++ b/clients/index.php @@ -0,0 +1,59 @@ +checkAuth("client"); + +Forms::cacheFormStats(); + +$LANG = Core::$L; +$account_id = Sessions::get("account.account_id"); + +if (isset($_GET["reset"])) { + Sessions::clear("form_sort_order"); + Sessions::clear("form_search_keyword"); +} +$order = General::loadField("order", "form_sort_order", "form_name-ASC"); +$keyword = General::loadField("keyword", "form_search_keyword", ""); + +$search_criteria = array( + "order" => $order, + "keyword" => $keyword +); + +$num_client_forms = count(Clients::getClientForms($account_id)); +$client_info = Accounts::getAccountInfo($account_id); + +$forms_page_default_message = General::evalSmartyString($client_info["settings"]["forms_page_default_message"]); +$forms = Forms::searchForms(array( + "account_id" => $account_id, + "is_admin" => false, + "order" => $order, + "keyword" => $keyword, + "status" => "" +)); + +// compile header information +$page_vars = array( + "head_title" => General::evalSmartyString(Sessions::get("account.settings.page_titles"), array("page" => $LANG["word_forms"])), + "page" => "client_forms", + "page_url" => Pages::getPageUrl("client_forms"), + "num_client_forms" => $num_client_forms, + "forms" => $forms, + "forms_page_default_message" => $forms_page_default_message, + "search_criteria" => $search_criteria, + "js_messages" => array("phrase_open_form_in_new_tab_or_win", "word_close", "phrase_show_form"), + "head_js" => '$(function() { ft.init_show_form_links(); })' +); + +Themes::displayPage("clients/index.tpl", $page_vars); diff --git a/error.php b/error.php new file mode 100644 index 00000000..4268e84b --- /dev/null +++ b/error.php @@ -0,0 +1,24 @@ + Pages::getPageUrl("error"), + "source" => "error_page", + "message_type" => Sessions::getWithFallback("last_error_type", ""), + "message" => Sessions::getWithFallback("last_error", ""), + "error_debug" => Sessions::getWithFallback("last_error_debug", "") +); + +// TODO this method may require more things than we have available. See the installation +Themes::displayPage("error.tpl", $page_vars); diff --git a/forget_password.php b/forget_password.php new file mode 100644 index 00000000..d8a604b8 --- /dev/null +++ b/forget_password.php @@ -0,0 +1,52 @@ + "$admin_email"); + +$head_js =<< General::evalSmartyString($LANG["text_forgot_password"], $replacements), + "g_success" => $success, + "g_message" => $message, + "head_title" => $settings["program_name"], + "page" => "forgot_password", + "page_url" => Pages::getPageUrl("forgot_password"), + "settings" => $settings, + "username" => $username, + "head_js" => $head_js +); + +Themes::displayPage("forget_password.tpl", $page_vars, Core::$user->getTheme(), Core::$user->getSwatch()); diff --git a/global/api/index.html b/global/api/index.html new file mode 100644 index 00000000..30e84fdd --- /dev/null +++ b/global/api/index.html @@ -0,0 +1 @@ + diff --git a/global/code/Accounts.class.php b/global/code/Accounts.class.php new file mode 100644 index 00000000..a8cc3300 --- /dev/null +++ b/global/code/Accounts.class.php @@ -0,0 +1,428 @@ +query(" + SELECT * + FROM {PREFIX}accounts + WHERE username = :username + "); + $db->bind("username", $username); + $db->execute(); + return $db->fetch(); + } + + /** + * Returns all custom account settings for a user account. This merely queries the + * account_settings table, nothing more; it doesn't trickle up the inheritance + * chain to figure out the default settings. + * + * @param integer $account_id + * @return array + */ + public static function getAccountSettings($account_id) + { + $db = Core::$db; + + if (empty($account_id)) { + return array(); + } + + $db->query(" + SELECT setting_name, setting_value + FROM {PREFIX}account_settings + WHERE account_id = :account_id + "); + $db->bind("account_id", $account_id); + $db->execute(); + + $hash = $db->fetchAll(PDO::FETCH_KEY_PAIR); + + extract(Hooks::processHookCalls("main", compact("account_id", "hash"), array("hash")), EXTR_OVERWRITE); + + return $hash; + } + + + /** + * Updates any number of settings for a particular user account. As with the similar Settings::set() + * function, it creates the record if it doesn't already exist. + * + * @param integer $account_id + * @param array $settings a hash of setting name => setting value. + */ + public static function setAccountSettings($account_id, $settings) + { + $db = Core::$db; + + extract(Hooks::processHookCalls("start", compact("account_id", "settings"), array("settings")), EXTR_OVERWRITE); + + foreach ($settings as $setting_name => $setting_value) { + + // find out if it already exists + $db->query(" + SELECT count(*) + FROM {PREFIX}account_settings + WHERE setting_name = :setting_name AND + account_id = :account_id + "); + $db->bindAll(array( + "setting_name" => $setting_name, + "account_id" => $account_id + )); + $db->execute(); + $count = $db->fetch(PDO::FETCH_COLUMN); + + if ($count == 0) { + $db->query(" + INSERT INTO {PREFIX}account_settings (account_id, setting_name, setting_value) + VALUES (:account_id, :setting_name, :setting_value) + "); + } else { + $db->query(" + UPDATE {PREFIX}account_settings + SET setting_value = :setting_value + WHERE setting_name = :setting_name AND + account_id = :account_id + "); + } + + $db->bindAll(array( + "account_id" => $account_id, + "setting_name" => $setting_name, + "setting_value" => $setting_value + )); + $db->execute(); + } + + extract(Hooks::processHookCalls("end", compact("account_id", "settings"), array()), EXTR_OVERWRITE); + } + + + /** + * Figure out if an account exists or not. + */ + public static function accountExists($account_id) + { + $db = Core::$db; + + if (empty($account_id) || !is_numeric($account_id)) { + return false; + } + + $db->query(" + SELECT count(*) + FROM {PREFIX}accounts + WHERE account_id = :account_id + "); + $db->bind("account_id", $account_id); + $db->execute(); + + return $db->fetch(PDO::FETCH_COLUMN) === 1; + } + + + /** + * Retrieves all information about any user account (administrator or client). + * + * @param integer $user_id the unique account ID + * @return array returns a hash of all pertinent data. + */ + public static function getAccountInfo($account_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}accounts + WHERE account_id = :account_id + "); + $db->bind("account_id", $account_id); + $db->execute(); + + $account_info = $db->fetch(); + + if (empty($account_info)) { + return array(); + } + + // also extract any account-specific settings from account_settings + $db->query(" + SELECT setting_name, setting_value + FROM {PREFIX}account_settings + WHERE account_id = :account_id + "); + $db->bind("account_id", $account_id); + $db->execute(); + + $account_info["settings"] = $db->fetchAll(PDO::FETCH_KEY_PAIR); + + extract(Hooks::processHookCalls("main", compact("account_info"), array("account_info")), EXTR_OVERWRITE); + + return $account_info; + } + + + /** + * This function is called when updating a client account and the administrator has chosen to prevent them from + * choosing any password they entered in the last N times (up to 10). + * + * The password_history setting in the users' account_settings table always stores the last 10 encrypted passwords, + * comma-delimited, and ordered newest to oldest. This function just checks that log against an incoming password + * to check its validity. + * + * @param $account_id + * @param string $password (encrypted) + * @param integer the number of items to check in the history. e.g. 5 would only check the last 5 passwords. + */ + public static function passwordInPasswordHistory($account_id, $password, $num_password_history) + { + $account_settings = self::getAccountSettings($account_id); + $last_passwords = (isset($account_settings["password_history"]) && !empty($account_settings["password_history"])) ? + explode(",", $account_settings["password_history"]) : array(); + + $is_found = false; + for ($i=0; $i<$num_password_history; $i++) { + if ($password == $last_passwords[$i]) { + $is_found = true; + break; + } + } + return $is_found; + } + + + /** + * Updates the password history queue for a client account. The assumption is that passwordInPasswordHistory() + * has already been called to determine whether or not the password should be added to the list. + * + * @param integer $account_id + * @param string $password + */ + public static function addPasswordToPasswordHistory($account_id, $password) + { + $passwordHistorySize = Core::getPasswordHistorySize(); + $account_settings = self::getAccountSettings($account_id); + $last_passwords = (isset($account_settings["password_history"]) && !empty($account_settings["password_history"])) ? + explode(",", $account_settings["password_history"]) : array(); + array_unshift($last_passwords, $password); + $trimmed_list = array_splice($last_passwords, 0, $passwordHistorySize); + $new_password_history = implode(",", $trimmed_list); + self::setAccountSettings($account_id, array("password_history" => $new_password_history)); + } + + + /** + * Helper function to determine if a username is valid or not. Checks to see that it only contains a-Z, 0-9, ., _ + * and @ chars and that it's not already taken. + * + * @param string $username a prospective username + * @param integer $user_id optional paramter used when editing the username for an account + * @return array [0]: true/false (success / failure)
+ * [1]: message string + */ + public static function isValidUsername($username, $account_id = "") + { + $db = Core::$db; + $LANG = Core::$L; + + // check the username is alphanumeric + if (preg_match("/[^\.a-zA-Z0-9_@]/", $username)) { + return array(false, $LANG["validation_invalid_client_username2"]); + } + + $clause = (!empty($account_id)) ? "AND account_id != :account_id" : ""; + + // now check the username isn't already taken + try { + $db->query(" + SELECT count(*) + FROM {PREFIX}accounts + WHERE username = :username + $clause + "); + $db->bind("username", $username); + if (!empty($account_id)) { + $db->bind("account_id", $account_id); + } + + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + if ($db->fetch(PDO::FETCH_COLUMN) > 0) { + return array(false, $LANG["validation_username_taken"]); + } else { + return array(true, ""); + } + } + + + /** + * Used by the "forget password?" page to have a client's login information sent to them. + * + * @param array $info the $_POST containing a "username" key. That value is used to find the user + * account information to email them. + * @return array [0]: true/false (success / failure) + * [1]: message string + */ + public static function sendPassword($info) + { + $db = Core::$db; + $root_url = Core::getRootUrl(); + $root_dir = Core::getRootDir(); + $LANG = Core::$L; + + extract(Hooks::processHookCalls("start", compact("info"), array("info")), EXTR_OVERWRITE); + + if (!isset($info["username"]) || empty($info["username"])) { + return array(false, $LANG["validation_no_username_or_js"]); + } + $username = $info["username"]; + + $db->query(" + SELECT * + FROM {PREFIX}accounts + WHERE username = :username + "); + $db->bind("username", $username); + $db->execute(); + + // not found + if ($db->numRows() === 0) { + return array(false, $LANG["validation_account_not_recognized_info"]); + } + + $account_info = $db->fetch(); + $email = $account_info["email"]; + + // one final check: confirm the email is defined & valid + if (empty($email) || !General::isValidEmail($email)) { + return array(false, $LANG["validation_email_not_found_or_invalid"]); + } + + $account_id = $account_info["account_id"]; + $username = $account_info["username"]; + $new_password = General::generatePassword(); + $encrypted_password = General::encode($new_password); + + Accounts::setResetPassword($account_id, $encrypted_password); + + // now build and sent the email + + // 1. build the email content + $placeholders = array( + "login_url" => "$root_url/?id=$account_id", + "email" => $email, + "username" => $username, + "new_password" => $new_password + ); + $smarty_template_email_content = file_get_contents("$root_dir/global/emails/forget_password.tpl"); + $email_content = General::evalSmartyString($smarty_template_email_content, $placeholders); + + // 2. build the email subject line + $placeholders = array( + "program_name" => Settings::get("program_name") + ); + $smarty_template_email_subject = file_get_contents("$root_dir/global/emails/forget_password_subject.tpl"); + $email_subject = trim(General::evalSmartyString($smarty_template_email_subject, $placeholders)); + + $success = true; + $message = $LANG["notify_login_info_emailed"]; + + // if Swift Mailer is enabled, send the emails with that. In case there's a problem sending the message with + // Swift, it falls back the default mail() func + $swift_mail_error = false; + $swift_mail_enabled = Modules::checkModuleEnabled("swift_mailer"); + if ($swift_mail_enabled) { + $sm_settings = Modules::getModuleSettings("", "swift_mailer"); + + if ($sm_settings["swiftmailer_enabled"] == "yes") { + $swift = Modules::getModuleInstance("swift_mailer"); + + // get the admin info. We'll use that info for the "from" and "reply-to" values. Note + // that we DON'T use that info for the regular mail() function. This is because retrieving + // the password is important functionality and we don't want to cause problems that could + // prevent the email being sent. Many servers don't all the 4th headers parameter of the mail() func + $admin_info = Administrator::getAdminInfo(); + $admin_email = $admin_info["email"]; + + $email_info = array(); + $email_info["to"] = array(); + $email_info["to"][] = array("email" => $email); + $email_info["from"] = array(); + $email_info["from"]["email"] = $admin_email; + $email_info["subject"] = $email_subject; + $email_info["text_content"] = $email_content; + + list ($success, $sm_message) = $swift->sendEmail($email_info); + + // if the email couldn't be sent, display the appropriate error message. Otherwise + // the default success message is used + if (!$success) { + $swift_mail_error = true; + $message = $sm_message; + } + } + } + + // if there was an error sending with Swift, or if it wasn't installed, send it by mail() + if (!$swift_mail_enabled || $swift_mail_error) { + + // send email [note: the double quotes around the email recipient and content are intentional: some systems fail without it] + if (!@mail("$email", $email_subject, $email_content)) { + return array(false, $LANG["notify_email_not_sent"]); + } + } + + extract(Hooks::processHookCalls("end", compact("success", "message", "info"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + public static function setResetPassword($account_id, $encrypted_password) + { + $db = Core::$db; + + $db->query(" + UPDATE {PREFIX}accounts + SET temp_reset_password = :encrypted_password + WHERE account_id = :account_id + "); + $db->bindAll(array( + "encrypted_password" => $encrypted_password, + "account_id" => $account_id + )); + $db->execute(); + } + + + public static function clearResetPassword($account_id) + { + $db = Core::$db; + $db->query(" + UPDATE {PREFIX}accounts + SET temp_reset_password = NULL + WHERE account_id = :account_id + "); + $db->bind("account_id", $account_id); + $db->execute(); + } + +} + diff --git a/global/code/Administrator.class.php b/global/code/Administrator.class.php new file mode 100644 index 00000000..2e1ea7fe --- /dev/null +++ b/global/code/Administrator.class.php @@ -0,0 +1,724 @@ +query(" + SELECT * + FROM {PREFIX}accounts + WHERE account_type = 'admin' + LIMIT 1 + "); + $db->execute(); + + $admin_info = $db->fetch(); + + extract(Hooks::processHookCalls("main", compact("admin_info"), array("admin_info")), EXTR_OVERWRITE); + + return $admin_info; + } + + + /** + * Creates a new client based on first and last name, and returns the new account id. + * + * @param array $infohash This parameter should be a hash (e.g. $_POST or $_GET) containing the + * following required keys: first_name, last_name, user_name, password. + * @return array [0]: true/false (success / failure) + * [1]: message string + * [2]: the new user ID (if successful) + */ + public static function addClient($form_vals) + { + $db = Core::$db; + $LANG = Core::$L; + + extract(Hooks::processHookCalls("start", compact("form_vals"), array("form_vals")), EXTR_OVERWRITE); + + $success = true; + $message = ""; + + // validate POST fields + $rules = array(); + $rules[] = "required,first_name,{$LANG["validation_no_client_first_name"]}"; + $rules[] = "required,last_name,{$LANG["validation_no_client_last_name"]}"; + $rules[] = "required,email,{$LANG["validation_no_client_email"]}"; + $rules[] = "valid_email,email,{$LANG["validation_invalid_email"]}"; + $rules[] = "required,username,{$LANG["validation_no_client_username"]}"; + $rules[] = "is_alpha,username,{$LANG["validation_invalid_client_username"]}"; + $rules[] = "required,password,{$LANG["validation_no_client_password"]}"; + $rules[] = "same_as,password,password_2,{$LANG["validation_passwords_different"]}"; + + $settings = Settings::get(); + + if (!empty($form_vals["password"])) { + $password_special_chars = Core::getRequiredPasswordSpecialChars(); + + $required_password_chars = explode(",", $settings["required_password_chars"]); + if (in_array("uppercase", $required_password_chars)) { + $rules[] = "reg_exp,password,[A-Z],{$LANG["validation_client_password_missing_uppercase"]}"; + } + if (in_array("number", $required_password_chars)) { + $rules[] = "reg_exp,password,[0-9],{$LANG["validation_client_password_missing_number"]}"; + } + if (in_array("special_char", $required_password_chars)) { + $error = General::evalSmartyString($LANG["validation_client_password_missing_special_char"], array("chars" => $password_special_chars)); + $password_special_chars = preg_quote($password_special_chars); + $rules[] = "reg_exp,password,[$password_special_chars],$error"; + } + if (!empty($settings["min_password_length"])) { + $rule = General::evalSmartyString($LANG["validation_client_password_too_short"], array("number" => $settings["min_password_length"])); + $rules[] = "length>={$settings["min_password_length"]},password,$rule"; + } + } + + $errors = validate_fields($form_vals, $rules); + list($valid_username, $problem) = Accounts::isValidUsername($form_vals["username"]); + if (!$valid_username) { + $errors[] = $problem; + } + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors), ""); + } + + $password = General::encode($form_vals["password"]); + + // first, insert the record into the accounts table. This contains all the settings common to ALL + // accounts (including the administrator and any other future account types) + $db->query(" + INSERT INTO {PREFIX}accounts (account_type, account_status, ui_language, timezone_offset, sessions_timeout, + date_format, login_page, logout_url, theme, swatch, menu_id, first_name, last_name, email, username, password) + VALUES (:account_type, :account_status, :ui_language, :timezone_offset, :sessions_timeout, :date_format, + :login_page, :logout_url, :theme, :swatch, :menu_id, :first_name, :last_name, :email, :username, :password) + "); + $db->bindAll(array( + "account_type" => "client", + "account_status" => "active", + "ui_language" => $settings["default_language"], + "timezone_offset" => $settings["default_timezone_offset"], + "sessions_timeout" => $settings["default_sessions_timeout"], + "date_format" => $settings["default_date_format"], + "login_page" => $settings["default_login_page"], + "logout_url" => $settings["default_logout_url"], + "theme" => $settings["default_theme"], + "swatch" => $settings["default_client_swatch"], + "menu_id" => $settings["default_client_menu_id"], + "first_name" => $form_vals["first_name"], + "last_name" => $form_vals["last_name"], + "email" => $form_vals["email"], + "username" => $form_vals["username"], + "password" => $password + )); + $db->execute(); + + $new_user_id = $db->getInsertId(); + + // now create all the custom client account settings, most of which are based on the default values + // in the settings table + $account_settings = array( + "client_notes" => "", + "company_name" => "", + "page_titles" => $settings["default_page_titles"], + "footer_text" => $settings["default_footer_text"], + "may_edit_page_titles" => $settings["clients_may_edit_page_titles"], + "may_edit_footer_text" => $settings["clients_may_edit_footer_text"], + "may_edit_theme" => $settings["clients_may_edit_theme"], + "may_edit_logout_url" => $settings["clients_may_edit_logout_url"], + "may_edit_language" => $settings["clients_may_edit_ui_language"], + "may_edit_timezone_offset" => $settings["clients_may_edit_timezone_offset"], + "may_edit_sessions_timeout" => $settings["clients_may_edit_sessions_timeout"], + "may_edit_date_format" => $settings["clients_may_edit_date_format"], + "max_failed_login_attempts" => $settings["default_max_failed_login_attempts"], + "num_failed_login_attempts" => 0, + "password_history" => "", + "min_password_length" => $settings["min_password_length"], + "num_password_history" => $settings["num_password_history"], + "required_password_chars" => $settings["required_password_chars"], + "may_edit_max_failed_login_attempts" => $settings["clients_may_edit_max_failed_login_attempts"], + "forms_page_default_message" => $settings["forms_page_default_message"] + ); + + Accounts::setAccountSettings($new_user_id, $account_settings); + + // store this password in the password history queue + Accounts::addPasswordToPasswordHistory($new_user_id, $password); + + extract(Hooks::processHookCalls("end", compact("new_user_id", "account_settings"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message, $new_user_id); + } + + + /** + * Used by administrators to login as a client. This function moves the administrator's session to a temporary + * "admin" session key, and logs the administrator in under the client account. When logging out + * as a client, the logout function detects if it's really an administrator and erases the old client + * sessions, replacing them with the old administrator sessions, to enable a smooth transition + * from one account to the next. + * + * @param integer $client_id the client ID + */ + public static function loginAsClient($client_id) + { + // extract the user's login info + $client_info = Accounts::getAccountInfo($client_id); + $info = array( + "username" => $client_info["username"] + ); + + // move the session values to a separate "admin" location, so that once the administrator logs out we can + // reset the sessions + $current_values = Sessions::get(); + Sessions::clearAll(); + Sessions::set("admin", $current_values); + + Core::$user->login($info, true); + } + + /** + * Used by the administrator to logout from a client account. Resets appropriate + * sessions values and redirects back to admin pages. + */ + public static function logoutAsClient() + { + $root_url = Core::getRootUrl(); + + // empty old sessions and reload admin settings + $admin_values = Sessions::get("admin"); + $client_id = Sessions::get("account.account_id"); + + Sessions::clearAll(); + foreach ($admin_values as $key => $value) { + Sessions::set($key, $value); + } + + Sessions::clear("admin"); + + // redirect them back to the edit client page + General::redirect("$root_url/admin/clients/edit.php?client_id=$client_id"); + exit; + } + + + /** + * TODO this belongs in User. + * + * Updates the administrator account. With the addition of the "UI Language" option, this action + * gets a little more complicated. The problem is that we can't just update the UI language in + * sessions *within* this function, because by the time this function is called, the appropriate + * language file is already in memory and being used. So, to get around this problem, the login + * information form now passes along both the new and old UI languages. If it's different, AFTER + * this function is called, you need to reset sessions and refresh the page. So be aware that + * this problem is NOT handled by this function, see: + * /admin/accounts/index.php to see how it's solved. + * + * @param array $infohash This parameter should be a hash (e.g. $_POST or $_GET) containing the + * following keys: first_name, last_name, user_name, password. + * @param integer $user_id the administrator's user ID + * @return array [0]: true/false (success / failure) + * [1]: message string + */ + public static function updateAdminAccount($infohash, $account_id) + { + $db = Core::$db; + $LANG = Core::$L; + + $success = true; + $message = $LANG["notify_account_updated"]; + + extract(Hooks::processHookCalls("start", compact("infohash", "account_id"), array("infohash")), EXTR_OVERWRITE); + + $rules = array(); + $rules[] = "required,first_name,{$LANG["validation_no_first_name"]}"; + $rules[] = "required,last_name,{$LANG["validation_no_last_name"]}"; + $rules[] = "required,email,{$LANG["validation_no_email"]}"; + $rules[] = "required,theme,{$LANG["validation_no_theme"]}"; + $rules[] = "required,login_page,{$LANG["validation_no_login_page"]}"; + $rules[] = "required,logout_url,{$LANG["validation_no_account_logout_url"]}"; + $rules[] = "required,ui_language,{$LANG["validation_no_ui_language"]}"; + $rules[] = "required,sessions_timeout,{$LANG["validation_no_sessions_timeout"]}"; + $rules[] = "required,date_format,{$LANG["validation_no_date_format"]}"; + $rules[] = "required,username,{$LANG["validation_no_username"]}"; + $rules[] = "if:password!=,required,password_2,{$LANG["validation_no_account_password_confirmed"]}"; + $rules[] = "if:password!=,same_as,password,password_2,{$LANG["validation_passwords_different"]}"; + $errors = validate_fields($infohash, $rules); + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors)); + } + + $theme = $infohash["theme"]; + $username = $infohash["username"]; + $password = $infohash["password"]; + + // check to see if username is already taken + list($valid_username, $problem) = Accounts::isValidUsername($username, $account_id); + if (!$valid_username) { + return array(false, $problem); + } + + $swatch = ""; + if (isset($infohash["{$theme}_theme_swatches"])) { + $swatch = $infohash["{$theme}_theme_swatches"]; + } + + // if the password is defined, encode it + $password_clause = !empty($password) ? "password = :password, " : ""; + $enc_password = General::encode($password); + + try { + $db->query(" + UPDATE {PREFIX}accounts + SET $password_clause + first_name = :first_name, + last_name = :last_name, + email = :email, + theme = :theme, + swatch = :swatch, + login_page = :login_page, + logout_url = :logout_url, + ui_language = :ui_language, + timezone_offset = :timezone_offset, + sessions_timeout = :sessions_timeout, + date_format = :date_format, + username = :username + WHERE account_id = :account_id + "); + $db->bindAll(array( + "first_name" => $infohash["first_name"], + "last_name" => $infohash["last_name"], + "email" => $infohash["email"], + "theme" => $theme, + "swatch" => $swatch, + "login_page" => $infohash["login_page"], + "logout_url" => $infohash["logout_url"], + "ui_language" => $infohash["ui_language"], + "timezone_offset" => $infohash["timezone_offset"], + "sessions_timeout" => $infohash["sessions_timeout"], + "date_format" => $infohash["date_format"], + "username" => $username, + "account_id" => $account_id + )); + if (!empty($password)) { + $db->bind("password", $enc_password); + } + $db->execute(); + } catch (Exception $e) { + return array(false, "Error: " . $e->getMessage()); + } + + // update the settings + Sessions::set("settings", Settings::get()); + Sessions::set("account", Accounts::getAccountInfo($account_id)); + Sessions::set("account.is_logged_in", true); + + Core::$user->setTheme($theme); + Core::$user->setSwatch($swatch); + + // if the password just changed, update sessions and empty any temporary password that happens to have been + // stored + if (!empty($password)) { + Sessions::set("account.password", $enc_password); + Accounts::clearResetPassword($account_id); + } + + extract(Hooks::processHookCalls("end", compact("infohash", "account_id"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Administrator function used to update a client account. It updates one tab at a time - determined by the + * second $tab_num parameter. + * + * @param array $infohash This parameter should be a hash (e.g. $_POST or $_GET) containing keys + * named the same as the database fields. + * @param integer $tab_num the tab number (1-3: 1=main, 2=styles, 3=permissions) + * @return array [0]: true/false (success / failure) + * [1]: message string + */ + public static function adminUpdateClient($infohash, $tab_num) + { + $LANG = Core::$L; + + extract(Hooks::processHookCalls("start", compact("infohash", "tab_num"), array("infohash", "tab_num")), EXTR_OVERWRITE); + + if ($tab_num === 1) { + list($success, $message) = Administrator::adminUpdateClientAccountMainTab($infohash); + } else if ($tab_num === 2) { + list($success, $message) = Administrator::adminUpdateClientAccountSettingsTab($infohash); + } else if ($tab_num === 3) { + list($success, $message) = Administrator::adminUpdateClientAccountFormsTab($infohash); + } + + if ($success) { + $message = $LANG["notify_client_account_updated"]; + } + + extract(Hooks::processHookCalls("end", compact("infohash", "tab_num"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + // ---------------------------------------------------------------------------------------------------------------- + + + private static function adminUpdateClientAccountMainTab($form_vals) + { + $db = Core::$db; + $LANG = Core::$L; + $req_password_special_chars = Core::getRequiredPasswordSpecialChars(); + $debug_enabled = Core::isDebugEnabled(); + $account_id = $form_vals["client_id"]; + + $rules = array(); + $rules[] = "required,first_name,{$LANG["validation_no_client_first_name"]}"; + $rules[] = "required,last_name,{$LANG["validation_no_client_last_name"]}"; + $rules[] = "required,email,{$LANG["validation_no_client_email"]}"; + $rules[] = "valid_email,email,{$LANG["validation_invalid_email"]}"; + $rules[] = "required,username,{$LANG["validation_no_client_username"]}"; + $rules[] = "if:password!=,required,password_2,{$LANG["validation_no_account_password_confirmed"]}"; + $rules[] = "if:password!=,same_as,password,password_2,{$LANG["validation_passwords_different"]}"; + + $account_settings = Accounts::getAccountSettings($account_id); + if ($account_settings["min_password_length"] != "" && !General::isEmpty($form_vals["password"])) { + $rule = General::evalSmartyString($LANG["validation_client_password_too_short"], array("number" => $account_settings["min_password_length"])); + $rules[] = "length>={$account_settings["min_password_length"]},password,$rule"; + } + + if (!General::isEmpty($form_vals["password"])) { + $required_password_chars = explode(",", $account_settings["required_password_chars"]); + if (in_array("uppercase", $required_password_chars)) { + $rules[] = "reg_exp,password,[A-Z],{$LANG["validation_client_password_missing_uppercase"]}"; + } + if (in_array("number", $required_password_chars)) { + $rules[] = "reg_exp,password,[0-9],{$LANG["validation_client_password_missing_number"]}"; + } + if (in_array("special_char", $required_password_chars)) { + $error = General::evalSmartyString($LANG["validation_client_password_missing_special_char"], array("chars" => $req_password_special_chars)); + $password_special_chars = preg_quote($req_password_special_chars); + $rules[] = "reg_exp,password,[$password_special_chars],$error"; + } + } + + $errors = validate_fields($form_vals, $rules); + + // check the username isn't already taken + $username = $form_vals["username"]; + list($valid_username, $problem) = Accounts::isValidUsername($username, $account_id); + if (!$valid_username) { + $errors[] = $problem; + } + + if (!General::isEmpty($form_vals["password"])) { + // check the password isn't already in password history (if relevant) + if (!empty($account_settings["num_password_history"])) { + $encrypted_password = General::encode($form_vals["password"]); + if (Accounts::passwordInPasswordHistory($account_id, $encrypted_password, $account_settings["num_password_history"])) { + $errors[] = General::evalSmartyString($LANG["validation_password_in_password_history"], + array("history_size" => $account_settings["num_password_history"])); + } else { + Accounts::addPasswordToPasswordHistory($account_id, $encrypted_password); + } + } + } + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors)); + } + + + // if the password is defined, md5 it + $password = $form_vals['password']; + $password_sql = (!General::isEmpty($password)) ? "password = '" . General::encode($password) . "', " : ""; + + // execute the query + $db->query(" + UPDATE {PREFIX}accounts + SET $password_sql + account_status = :account_status, + first_name = :first_name, + last_name = :last_name, + email = :email, + username = :username + WHERE account_id = :account_id + "); + $db->bindAll(array( + "account_status" => $form_vals['account_status'], + "first_name" => $form_vals['first_name'], + "last_name" => $form_vals['last_name'], + "email" => $form_vals['email'], + "username" => $username, + "account_id" => $account_id + )); + try { + $db->execute(); + } catch (Exception $e) { + $message = $LANG["notify_client_account_not_updated"]; + if ($debug_enabled) { + $message .= "
Error: " . $e->getMessage(); + } + return array(false, $message); + } + + $new_account_settings = array( + "client_notes" => $form_vals["client_notes"], + "company_name" => $form_vals["company_name"] + ); + Accounts::setAccountSettings($account_id, $new_account_settings); + + return array(true, ""); + } + + + private static function adminUpdateClientAccountSettingsTab($form_vals) + { + $db = Core::$db; + $LANG = Core::$L; + $debug_enabled = Core::isDebugEnabled(); + + $rules = array(); + $rules[] = "required,page_titles,{$LANG["validation_no_titles"]}"; + $rules[] = "required,menu_id,{$LANG["validation_no_menu"]}"; + $rules[] = "required,theme,{$LANG["validation_no_theme"]}"; + $rules[] = "required,login_page,{$LANG["validation_no_client_login_page"]}"; + $rules[] = "required,logout_url,{$LANG["validation_no_logout_url"]}"; + $rules[] = "required,ui_language,{$LANG["validation_no_ui_language"]}"; + $rules[] = "required,sessions_timeout,{$LANG["validation_no_sessions_timeout"]}"; + $rules[] = "digits_only,sessions_timeout,{$LANG["validation_invalid_sessions_timeout"]}"; + $rules[] = "required,date_format,{$LANG["validation_no_date_format"]}"; + $errors = validate_fields($form_vals, $rules); + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors)); + } + + // update the main accounts table + $account_id = $form_vals["client_id"]; + $theme = $form_vals['theme']; + $swatch = (isset($form_vals["{$theme}_theme_swatches"])) ? $swatch = $form_vals["{$theme}_theme_swatches"] : ""; + + $db->query(" + UPDATE {PREFIX}accounts + SET ui_language = :ui_language, + timezone_offset = :timezone_offset, + login_page = :login_page, + logout_url = :logout_url, + menu_id = :menu_id, + theme = :theme, + swatch = :swatch, + sessions_timeout = :sessions_timeout, + date_format = :date_format + WHERE account_id = :account_id + "); + $db->bindAll(array( + "ui_language" => $form_vals['ui_language'], + "timezone_offset" => $form_vals['timezone_offset'], + "login_page" => $form_vals['login_page'], + "logout_url" => $form_vals['logout_url'], + "menu_id" => $form_vals['menu_id'], + "theme" => $theme, + "swatch" => $swatch, + "sessions_timeout" => $form_vals['sessions_timeout'], + "date_format" => $form_vals['date_format'], + "account_id" => $account_id + )); + + try { + $db->execute(); + } catch (Exception $e) { + $message = $LANG["notify_client_account_not_updated"]; + if ($debug_enabled) { + $message .= "
Error: " . $e->getMessage(); + } + return array(false, $message); + } + + $may_edit_page_titles = isset($form_vals["may_edit_page_titles"]) ? "yes" : "no"; + $may_edit_footer_text = isset($form_vals["may_edit_footer_text"]) ? "yes" : "no"; + $may_edit_theme = isset($form_vals["may_edit_theme"]) ? "yes" : "no"; + $may_edit_logout_url = isset($form_vals["may_edit_logout_url"]) ? "yes" : "no"; + $may_edit_language = isset($form_vals["may_edit_language"]) ? "yes" : "no"; + $may_edit_timezone_offset = isset($form_vals["may_edit_timezone_offset"]) ? "yes" : "no"; + $may_edit_sessions_timeout = isset($form_vals["may_edit_sessions_timeout"]) ? "yes" : "no"; + $may_edit_date_format = isset($form_vals["may_edit_date_format"]) ? "yes" : "no"; + $may_edit_max_failed_login_attempts = isset($form_vals["may_edit_max_failed_login_attempts"]) ? "yes" : "no"; + $max_failed_login_attempts = $form_vals["max_failed_login_attempts"]; + $min_password_length = $form_vals["min_password_length"]; + $num_password_history = $form_vals["num_password_history"]; + $required_password_chars = (isset($form_vals["required_password_chars"]) && is_array($form_vals["required_password_chars"])) ? implode(",", $form_vals["required_password_chars"]) : ""; + $forms_page_default_message = $form_vals["forms_page_default_message"]; + + // update the client custom account settings table + $settings = array( + "page_titles" => $form_vals["page_titles"], + "footer_text" => $form_vals["footer_text"], + "may_edit_page_titles" => $may_edit_page_titles, + "may_edit_footer_text" => $may_edit_footer_text, + "may_edit_theme" => $may_edit_theme, + "may_edit_logout_url" => $may_edit_logout_url, + "may_edit_language" => $may_edit_language, + "may_edit_timezone_offset" => $may_edit_timezone_offset, + "may_edit_sessions_timeout" => $may_edit_sessions_timeout, + "may_edit_max_failed_login_attempts" => $may_edit_max_failed_login_attempts, + "max_failed_login_attempts" => $max_failed_login_attempts, + "may_edit_date_format" => $may_edit_date_format, + "required_password_chars" => $required_password_chars, + "min_password_length" => $min_password_length, + "num_password_history" => $num_password_history, + "forms_page_default_message" => $forms_page_default_message + ); + Accounts::setAccountSettings($account_id, $settings); + + return array(true, ""); + } + + + private static function adminUpdateClientAccountFormsTab($form_vals) + { + $db = Core::$db; + + $account_id = $form_vals["client_id"]; + + // clear out the old mappings for the client-forms and client-Views. This section re-inserts everything + Forms::deleteClientFormsByAccountId($account_id); + Views::deleteClientViewsByAccountId($account_id); + OmitLists::deleteFormOmitListByAccountId($account_id); + OmitLists::deleteViewOmitListByAccountId($account_id); + + $num_form_rows = $form_vals["num_forms"]; + $client_forms = array(); // stores the form IDs of all forms this client has been added to + $client_form_views = array(); // stores the view IDs of each form this client is associated with + + for ($i=1; $i<=$num_form_rows; $i++) { + + // ignore blank and empty form rows + if (!isset($form_vals["form_row_{$i}"]) || empty($form_vals["form_row_{$i}"])) { + continue; + } + + $form_id = $form_vals["form_row_{$i}"]; + $client_forms[] = $form_id; + $client_form_views[$form_id] = array(); + + // find out a little info about this form. If it's a public form, the user is already (implicitly) assigned + // to it, so don't bother inserting a redundant record into the client_forms table + $form_info = Forms::getFormRow($form_id); + + if ($form_info["access_type"] != "public") { + $db->query("INSERT INTO {PREFIX}client_forms (account_id, form_id) VALUES (:account_id, :form_id)"); + $db->bindAll(array( + "account_id" => $account_id, + "form_id" => $form_id + )); + $db->execute(); + } + + // if this form was previously an "admin" type, it no longer is! By adding this client to the form, it's now + // changed to a "private" access type + if ($form_info["access_type"] == "admin") { + $db->query("UPDATE {PREFIX}forms SET access_type = 'private' WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + } + + // now loop through selected Views. Get View info + if (!isset($form_vals["row_{$i}_selected_views"])) { + continue; + } + + $client_form_views[$form_id] = $form_vals["row_{$i}_selected_views"]; + foreach ($form_vals["row_{$i}_selected_views"] as $view_id) { + $db->query("SELECT access_type FROM {PREFIX}views WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + + $access_type = $db->fetch(PDO::FETCH_COLUMN); + + if ($access_type != "public") { + $db->query("INSERT INTO {PREFIX}client_views (account_id, view_id) VALUES (:account_id, :view_id)"); + $db->bindAll(array( + "account_id" => $account_id, + "view_id" => $view_id + )); + $db->execute(); + } + + // if this View was previously an "admin" type, it no longer is! By adding this client to the View, it's now + // changed to a "private" access type + if ($access_type == "admin") { + $db->query("UPDATE {PREFIX}views SET access_type = 'private' WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + } + } + } + + // now all the ADDING the forms/Views is done, we look at all other public forms in the database and if this + // update request didn't include that form, add this client to its omit list. Same goes for the form Views + $db->query("SELECT form_id, access_type FROM {PREFIX}forms"); + $db->execute(); + + foreach ($db->fetchAll() as $form_info) { + $form_id = $form_info["form_id"]; + $form_is_public = ($form_info["access_type"] == "public") ? true : false; + + if ($form_is_public && !in_array($form_id, $client_forms)) { + $db->query("INSERT INTO {PREFIX}public_form_omit_list (account_id, form_id) VALUES (:account_id, :form_id)"); + $db->bindAll(array( + "account_id" => $account_id, + "form_id" => $form_id + )); + $db->execute(); + } + + if (in_array($form_id, $client_forms)) { + $db->query("SELECT view_id, access_type FROM {PREFIX}views WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + + foreach ($db->fetchAll() as $view_info) { + $view_id = $view_info["view_id"]; + $view_is_public = ($view_info["access_type"] == "public") ? true : false; + + if ($view_is_public && !in_array($view_id, $client_form_views[$form_id])) { + $db->query("INSERT INTO {PREFIX}public_view_omit_list (account_id, view_id) VALUES (:account_id, :view_id)"); + $db->bindAll(array( + "account_id" => $account_id, + "view_id" => $view_id + )); + $db->execute(); + } + } + } + } + + return array(true, ""); + } + +} diff --git a/global/code/Clients.class.php b/global/code/Clients.class.php new file mode 100644 index 00000000..763f149b --- /dev/null +++ b/global/code/Clients.class.php @@ -0,0 +1,643 @@ +query("DELETE FROM {PREFIX}accounts WHERE account_id = :account_id"); + $db->bind("account_id", $account_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}account_settings WHERE account_id = :account_id"); + $db->bind("account_id", $account_id); + $db->execute(); + + Forms::deleteClientFormsByAccountId($account_id); + + $db->query("DELETE FROM {PREFIX}email_template_recipients WHERE account_id = :account_id"); + $db->bind("account_id", $account_id); + $db->execute(); + + // not sure if this is really correct. It deletes any email templates that have this client as a from or + // reply-to field + $db->query(" + DELETE FROM {PREFIX}email_templates + WHERE email_from_account_id = :account_id1 OR + email_reply_to_account_id = :account_id2 + "); + $db->bind("account_id1", $account_id); + $db->bind("account_id2", $account_id); + $db->execute(); + + OmitLists::deleteFormOmitListByAccountId($account_id); + OmitLists::deleteViewOmitListByAccountId($account_id); + + $success = true; + $message = Core::$L["notify_account_deleted"]; + extract(Hooks::processHookCalls("end", compact("account_id"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Disables a client account. + * + * @param integer $account_id + */ + public static function disableClient($account_id) + { + $db = Core::$db; + if (empty($account_id) || !is_numeric($account_id)) { + return; + } + + $db->query(" + UPDATE {PREFIX}accounts + SET account_status = 'disabled' + WHERE account_id = :account_id + "); + $db->bind("account_id", $account_id); + $db->execute(); + + extract(Hooks::processHookCalls("end", compact("account_id"), array()), EXTR_OVERWRITE); + } + + /** + * Retrieves a list of all clients in the database ordered by last name. N.B. As of 2.0.0, this function + * no longer returns a MySQL resource. + * + * @return array $clients an array of hashes. Each hash is the client info. + */ + public static function getList() + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}accounts + WHERE account_type = 'client' + ORDER BY last_name + "); + $db->execute(); + + return $db->fetchAll(); + } + + + /** + * Returns the total number of clients in the database. + * + * @return int the number of clients + */ + public static function getNumClients() + { + $db = Core::$db; + $db->query("SELECT count(*) FROM {PREFIX}accounts WHERE account_type = 'client'"); + $db->execute(); + + return $db->fetch(PDO::FETCH_COLUMN); + } + + + /** + * @param $account_id + * @return array + */ + public static function getClientForms($account_id) + { + return Forms::searchForms(array( + "account_id" => $account_id, + "is_admin" => true, + "status" => "" + )); + } + + + /** + * This returns all forms and form Views that a client account may access. Note: an offline form may still be viewed + * + * @param array $account_id + * @return array + */ + public static function getClientFormViews($account_id) + { + $client_forms = Forms::searchForms(array( + "account_id" => $account_id, + "status" => "" + )); + + $info = array(); + foreach ($client_forms as $form_info) { + $form_id = $form_info["form_id"]; + $views = Views::getFormViews($form_id, $account_id); + $info[$form_id] = array_column($views, "view_id"); + } + + extract(Hooks::processHookCalls("end", compact("account_id", "info"), array("info")), EXTR_OVERWRITE); + + return $info; + } + + /** + * This function updates the default theme for multiple accounts simultaneously. It's called when + * an administrator disables a theme that's current used by some client accounts. They're presented with + * the option of setting the theme ID for all the clients. + * + * There's very little error checking done here... + * + * @param string $account_id_str a comma delimited list of account IDs + * @param integer $theme_id the theme ID + */ + public static function updateClientThemes($account_ids, $theme_id) + { + $db = Core::$db; + $LANG = Core::$L; + + if (empty($account_ids) || empty($theme_id)) { + return array(true, ""); + } + + $client_ids = explode(",", $account_ids); + + $theme_info = Themes::getTheme($theme_id); + $theme_name = $theme_info["theme_name"]; + $theme_folder = $theme_info["theme_folder"]; + + foreach ($client_ids as $client_id) { + $db->query(" + UPDATE {PREFIX}accounts + SET theme = :theme_folder + WHERE account_id = :account_id + "); + $db->bindAll(array( + "theme" => $theme_folder, + "account_id" => $client_id + )); + $db->execute(); + } + + $placeholders = array("theme" => $theme_name); + $message = General::evalSmartyString($LANG["notify_client_account_themes_updated"], $placeholders); + $success = true; + + return array($success, $message); + } + + + /** + * Performs a simple search of the client list, returning ALL results (not in pages). + * + * @param array $search_criteria optional search / sort criteria. Keys are: + * "order" - (string) client_id-ASC, client_id-DESC, last_name-DESC, + * last_name-ASC, email-ASC, email-DESC + * "keyword" - (string) searches the client name and email fields. + * "status" - (string) "account_status", "disabled", or empty (all) + */ + public static function searchClients($search_criteria = array()) + { + $db = Core::$db; + + extract(Hooks::processHookCalls("start", compact("search_criteria"), array("search_criteria")), EXTR_OVERWRITE); + + if (!isset($search_criteria["order"])) { + $search_criteria["order"] = "client_id-DESC"; + } + + $order_clause = self::getClientOrderClause($search_criteria["order"]); + + $status_clause = ""; + if (isset($search_criteria["status"])) { + switch ($search_criteria["status"]) { + case "active": + $status_clause = "account_status = 'active' "; + break; + case "disabled": + $status_clause = "account_status = 'disabled'"; + break; + case "pending": + $status_clause = "account_status = 'pending'"; + break; + default: + $status_clause = ""; + break; + } + } + + $keyword_clause = ""; + if (isset($search_criteria["keyword"]) && !empty($search_criteria["keyword"])) { + $string = $search_criteria["keyword"]; + $fields = array("last_name", "first_name", "email", "account_id"); + + $clauses = array(); + foreach ($fields as $field) { + $clauses[] = "$field LIKE '%$string%'"; + } + $keyword_clause = implode(" OR ", $clauses); + } + + // add up the where clauses + $where_clauses = array("account_type = 'client'"); + if (!empty($status_clause)) { + $where_clauses[] = "($status_clause)"; + } + if (!empty($keyword_clause)) { + $where_clauses[] = "($keyword_clause)"; + } + + $where_clause = "WHERE " . implode(" AND ", $where_clauses); + + // get the clients + $db->query(" + SELECT * + FROM {PREFIX}accounts + $where_clause + $order_clause + "); + $db->execute(); + + $clients = array(); + foreach ($db->fetchAll() as $row) { + $clients[] = $row; + } + + extract(Hooks::processHookCalls("end", compact("search_criteria", "clients"), array("clients")), EXTR_OVERWRITE); + + return $clients; + } + + + /** + * This returns the IDs of the previous and next client accounts, as determined by the administrators current + * search and sort. + * + * Not happy with this function! Getting this info is surprisingly tricky, once you throw in the sort clause. + * Still, the number of client accounts are liable to be quite small, so it's not such a sin. + * + * @param integer $account_id + * @param array $search_criteria + * @return array prev_account_id => the previous account ID (or empty string) + * next_account_id => the next account ID (or empty string) + */ + public static function getClientPrevNextLinks($account_id, $search_criteria = array()) + { + $db = Core::$db; + + $keyword_clause = ""; + if (isset($search_criteria["keyword"]) && !empty($search_criteria["keyword"])) { + $string = $search_criteria["keyword"]; + $fields = array("last_name", "first_name", "email", "account_id"); + + $clauses = array(); + foreach ($fields as $field) { + $clauses[] = "$field LIKE '%$string%'"; + } + $keyword_clause = implode(" OR ", $clauses); + } + + // add up the where clauses + $where_clauses = array("account_type = 'client'"); + if (!empty($status_clause)) { + $where_clauses[] = "($status_clause)"; + } + if (!empty($keyword_clause)) { + $where_clauses[] = "($keyword_clause)"; + } + + $where_clause = "WHERE " . implode(" AND ", $where_clauses); + $order_clause = self::getClientOrderClause($search_criteria["order"]); + + // get the clients + $db->query(" + SELECT account_id + FROM {PREFIX}accounts + $where_clause + $order_clause + "); + $db->execute(); + + $sorted_account_ids = $db->fetchAll(PDO::FETCH_COLUMN); + $current_index = array_search($account_id, $sorted_account_ids); + + $return_info = array( + "prev_account_id" => "", + "next_account_id" => "" + ); + if ($current_index === 0) { + if (count($sorted_account_ids) > 1) { + $return_info["next_account_id"] = $sorted_account_ids[$current_index + 1]; + } + } else if ($current_index === count($sorted_account_ids) - 1) { + if (count($sorted_account_ids) > 1) { + $return_info["prev_account_id"] = $sorted_account_ids[$current_index - 1]; + } + } else { + $return_info["prev_account_id"] = $sorted_account_ids[$current_index - 1]; + $return_info["next_account_id"] = $sorted_account_ids[$current_index + 1]; + } + + return $return_info; + } + + + // -------------------------------------------------------------------------------------------- + + + /** + * Used in a couple of places, so I stuck it here. + * + * @param string $order + * @return string the ORDER BY clause + */ + private static function getClientOrderClause($order = "") + { + $map = array( + "client_id-DESC" => "account_id DESC", + "client_id-ASC" => "account_id ASC", + "first_name-DESC" => "first_name DESC", + "first_name-ASC" => "first_name ASC", + "last_name-DESC" => "last_name DESC", + "last_name-ASC" => "last_name ASC", + "email-DESC" => "email DESC", + "email-ASC" => "email ASC", + "status-DESC" => "account_status DESC", + "status-ASC" => "account_status ASC", + "last_logged_in-DESC" => "last_logged_in DESC", + "last_logged_in-ASC" => "last_logged_in ASC" + ); + + if (isset($map[$order])) { + $order_clause = "ORDER BY {$map[$order]}"; + } else { + $order_clause = "ORDER BY account_id DESC"; + } + + return $order_clause; + } + + + private static function updateClientMainTab($account_id, $client_info, $info) + { + $db = Core::$db; + $LANG = Core::$L; + $req_password_special_chars = Core::getRequiredPasswordSpecialChars(); + + $username = $info["username"]; + $password_clause = ""; + $rules = array(); + if (!empty($info["password"])) { + $required_password_chars = explode(",", $client_info["settings"]["required_password_chars"]); + if (in_array("uppercase", $required_password_chars)) { + $rules[] = "reg_exp,password,[A-Z],{$LANG["validation_client_password_missing_uppercase"]}"; + } + if (in_array("number", $required_password_chars)) { + $rules[] = "reg_exp,password,[0-9],{$LANG["validation_client_password_missing_number"]}"; + } + if (in_array("special_char", $required_password_chars)) { + $error = General::evalSmartyString($LANG["validation_client_password_missing_special_char"], + array("chars" => $req_password_special_chars)); + $password_special_chars = preg_quote($req_password_special_chars); + $rules[] = "reg_exp,password,[$password_special_chars],$error"; + } + if (!empty($client_info["settings"]["min_password_length"])) { + $rule = General::evalSmartyString($LANG["validation_client_password_too_short"], array("number" => $client_info["settings"]["min_password_length"])); + $rules[] = "length>={$client_info["settings"]["min_password_length"]},password,$rule"; + } + + // encrypt the password on the assumption that it passes validation. It'll be used in the update query + $password = General::encode($info['password']); + $password_clause = "password = '$password',"; + } + + $errors = validate_fields($info, $rules); + + // check to see if username is already taken + list($valid_username, $problem) = Accounts::isValidUsername($username, $account_id); + if (!$valid_username) { + $errors[] = $problem; + } + + // check the password isn't already in password history (if relevant) + if (!empty($info["password"])) { + if (!empty($client_info["settings"]["num_password_history"])) { + $encrypted_password = General::encode($info["password"]); + if (Accounts::passwordInPasswordHistory($account_id, $encrypted_password, $client_info["settings"]["num_password_history"])) { + $errors[] = General::evalSmartyString($LANG["validation_password_in_password_history"], + array("history_size" => $client_info["settings"]["num_password_history"])); + } else { + Accounts::addPasswordToPasswordHistory($account_id, $encrypted_password); + } + } + } + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors)); + } + + $db->query(" + UPDATE {PREFIX}accounts + SET $password_clause + first_name = :first_name, + last_name = :last_name, + username = :username, + email = :email + WHERE account_id = :account_id + "); + + try { + $db->bindAll(array( + "first_name" => $info["first_name"], + "last_name" => $info["last_name"], + "username" => $username, + "email" => $info["email"], + "account_id" => $account_id + )); + + $db->execute(); + + // if the password wasn't empty, reset the temporary password, in case it was set + if (!empty($info["password"])) { + Accounts::clearResetPassword($account_id); + } + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + } + } + + + private static function updateClientSettingsTab($account_id, $client_info, $info) + { + $db = Core::$db; + $LANG = Core::$L; + + $rules = array(); + if ($client_info["settings"]["may_edit_page_titles"] == "yes") { + $rules[] = "required,page_titles,{$LANG["validation_no_titles"]}"; + } + if ($client_info["settings"]["may_edit_theme"] == "yes") { + $rules[] = "required,theme,{$LANG["validation_no_theme"]}"; + } + if ($client_info["settings"]["may_edit_logout_url"] == "yes") { + $rules[] = "required,logout_url,{$LANG["validation_no_logout_url"]}"; + } + if ($client_info["settings"]["may_edit_language"] == "yes") { + $rules[] = "required,ui_language,{$LANG["validation_no_ui_language"]}"; + } + if ($client_info["settings"]["may_edit_timezone_offset"] == "yes") { + $rules[] = "required,timezone_offset,{$LANG["validation_no_timezone_offset"]}"; + } + if ($client_info["settings"]["may_edit_sessions_timeout"] == "yes") { + $rules[] = "required,sessions_timeout,{$LANG["validation_no_sessions_timeout"]}"; + $rules[] = "digits_only,sessions_timeout,{$LANG["validation_invalid_sessions_timeout"]}"; + } + if ($client_info["settings"]["may_edit_date_format"] == "yes") { + $rules[] = "required,date_format,{$LANG["validation_no_date_format"]}"; + } + + $errors = validate_fields($info, $rules); + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors)); + } + + // update the main accounts table. Only update those settings they're ALLOWED to + $settings = array(); + if ($client_info["settings"]["may_edit_language"] == "yes") { + $settings["ui_language"] = $info["ui_language"]; + } + if ($client_info["settings"]["may_edit_timezone_offset"] == "yes") { + $settings["timezone_offset"] = $info["timezone_offset"]; + } + if ($client_info["settings"]["may_edit_logout_url"] == "yes") { + $settings["logout_url"] = $info["logout_url"]; + } + if ($client_info["settings"]["may_edit_sessions_timeout"] == "yes") { + $settings["sessions_timeout"] = $info["sessions_timeout"]; + } + if ($client_info["settings"]["may_edit_theme"] == "yes") { + $settings["theme"] = $info["theme"]; + $settings["swatch"] = ""; + if (isset($info["{$info["theme"]}_theme_swatches"])) { + $settings["swatch"] = $info["{$info["theme"]}_theme_swatches"]; + } + } + if ($client_info["settings"]["may_edit_date_format"] == "yes") { + $settings["date_format"] = $info["date_format"]; + } + + if (!empty($settings)) { + $sql_rows = array(); + foreach (array_keys($settings) as $col) { + $sql_rows[] = "$col = :$col"; + } + + $sql = implode(",\n", $sql_rows); + + $binding_map = $settings; + $binding_map["account_id"] = $account_id; + $db->query(" + UPDATE {PREFIX}accounts + SET $sql + WHERE account_id = :account_id + "); + $db->bindAll($binding_map); + + try { + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + } + + // always ensure the theme, swatch and language are up to date for the current user + if (isset($info["theme"])) { + Core::$user->setTheme($info["theme"]); + } + if (isset($info["{$info["theme"]}_theme_swatches"])) { + Core::$user->setSwatch($info["{$info["theme"]}_theme_swatches"]); + } + + // TODO + if ($client_info["settings"]["may_edit_language"] == "yes") { + Core::$user->setLang($info["ui_language"]); + Core::setCurrentLang($info["ui_language"]); + } + + // separate + $settings = array(); + if (isset($info["page_titles"])) { + $settings["page_titles"] = $info["page_titles"]; + } + if (isset($info["footer_text"])) { + $settings["footer_text"] = $info["footer_text"]; + } + if (isset($info["max_failed_login_attempts"])) { + $settings["max_failed_login_attempts"] = $info["max_failed_login_attempts"]; + } + + if (!empty($settings)) { + Accounts::setAccountSettings($account_id, $settings); + } + } +} diff --git a/global/code/Constants.class.php b/global/code/Constants.class.php new file mode 100644 index 00000000..18427a97 --- /dev/null +++ b/global/code/Constants.class.php @@ -0,0 +1,9 @@ + + * @version 3.0.x + * @package 3-0-x + */ + + +// ------------------------------------------------------------------------------------------------- + +namespace FormTools; + +use Smarty, SmartyBC; + + +class Core +{ + + // SECTION 1: settings you can override in your global/config.php file + + /** + * This is the base URL of the Form Tools installation on your server. e.g. + * http://www.yoursite.com/formtools. You can either supply an absolute or relative URL. Note: if + * you include the full URL, make sure that the "www." part is either included or removed + * consistently; if you try to log in at http://www.yoursite.com/admin but your $rootURL is set to + * http://yoursite.com/admin it will not work! (and vice versa). + */ + private static $rootURL = ""; + + /** + * The server directory path to your Form Tools folder. + */ + private static $rootDir = ""; + + /** + * The database hostname (most often 'localhost'). + */ + private static $dbHostname = ""; + + /** + * The name of the database. Most often, hosting providers provide you with some sort of user + * interface for creating databases and assigning user accounts to them. + */ + private static $dbName = ""; + + /** + * The DB port. + */ + private static $dbPort = ""; + + /** + * The MySQL username. Note: this user account must have privileges for adding and deleting tables, and + * adding and deleting records. + */ + private static $dbUsername = ""; + + /** + * The MySQL password. + */ + private static $dbPassword = ""; + + /** + * This value lets you define a custom database prefix for your Form Tools tables. This is handy if + * Form Tools will be added to an existing database and you want to avoid table naming conflicts. + */ + private static $dbTablePrefix = "ft_"; + + /** + * Added in 3.0.15, lets users override the default cache folder location. + */ + private static $cacheFolder; + + /** + * This controls the maximum number of pagination links that appear in the Form Tools UI (e.g. for + * viewing the submission listings page). + */ + private static $maxNavPages; + + /** + * This offers support for unicode. All form submissions will be sent as UTF-8. This is enabled for all + * new installations. + */ + private static $unicode = true; + + /** + * This is set to 1 by default (genuine errors only). Crank it up to 2047 to list every + * last error/warning/notice that occurs. + */ + private static $errorReporting; + + /** + * Various debug settings. As of 2.3.0 these are of varying degrees of being supported. + */ + private static $debugEnabled; + private static $jsDebugEnabled; + private static $smartyDebug = false; + + /** + * This tells Smarty to create the compiled templates in subdirectories, which is slightly more efficient. + * Not compatible on some systems, so it's set to false by default. + */ + private static $smartyUseSubDirs = false; + + /** + * This determines the value used to separate the content of array form submissions (e.g. checkboxes + * in your form that have the same name, or multi-select dropdowns) when submitted via a query + * string for "direct" form submissions (added in version 1.4.2). + */ + private static $queryStrMultiValSeparator; + + /** + * This setting lets you control the type of sessions the application uses. The default value is "database", + * but you can change it to "php" if you'd prefer to use PHP sessions. This applies to all users of the program. + */ + private static $sessionType = "php"; // "php" or "database" + + /** + * This lets you specify the session save path, used by PHP sessions. By default this isn't set, relying + * on the default value. But on some systems this value needs to be set. + */ + private static $sessionSavePath = ""; + + /** + * Used for the database charset. For rare cases, the utf8 character set isn't available, so this allows + * them to change it and install the script. + */ + private static $dbTableCharset = "utf8"; + + /** + * Permissible characters in a filename. All other characters are stripped out. *** including a hyphen here + * leads to problems. *** + */ + private static $filenameCharWhitelist = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789"; + + /** + * Special chars, required in password (optional setting through interface). + */ + private static $requiredPasswordSpecialChars = "~!@#$%^&"; + + /** + * The size of the password_history setting in the settings table. Form Tools keeps track of the last 10 + * passwords, to (optionally) prevent users from re-using a password that they used before. + */ + private static $passwordHistorySize = 10; + + /** + * Determines the format of the date range string when searching a date field. Note: this only accepts two + * values: d/m/y or m/d/y. This is because this value is used by both the daterangepicker element and + * on the server. I don't want to fuss around with too many formats; it's confusing enough! + */ + private static $searchFormDateFieldFormat; + + /** + * Added in 2.1.0 and enabled by default. This overrides the default SQL mode for any query, to prevent + * problems that may arise due to MySQL strict mode being on. This was deprecated in 3.0.2; use $g_sql_strict_mode + * instead + */ + private static $setSqlMode; + + /** + * Defines the SQL strict mode for queries. Added in 3.0.2; replaces the older $g_set_sql_mode setting. + * @var string "on", "off", "default" + */ + private static $sqlStrictMode; + + /** + * This hides the upgrade link in the administrator's UI. + */ + private static $hideUpgradeLink; + + /** + * Limits the number of forms that can be stored in the database. If left blank there are no limits. + */ + private static $maxForms = ""; + + /** + * Limits the number of fields that can be stored for a form. + */ + private static $maxFormFields = ""; + + + // ------------------------------------------------------------------------------------------------- + + // API settings. + + private static $apiRecaptchaSiteKey = ""; + private static $apiRecaptchaSecretKey = ""; + private static $apiRecaptchaLang = ""; + private static $apiDebug = false; + + /** + * The default sessions timeout for the API. Default is 1 hour (3600 seconds) + */ + private static $apiSessionsTimeout; + + /** + * This is used by the API::initFormPage() function when setting up the environment for the webpage; + * headers are sent with this charset. + */ + private static $apiHeaderCharset = "utf-8"; + + /** + * Added in 3.0.1, the $g_use_smarty_bc setting in the /global/config.php file makes Form Tools use the + * SmartyBC (Backward-Compatibility) class rather than Smarty. Handy if you need {php} tags within your + * Smarty content. + * @var bool + */ + private static $useSmartyBC = false; + + // ------------------------------------------------------------------------------------------------- + + // Internal settings. These can't be overridden. + + /** + * The database instance automatically instantiated by Core::init(). This allows any code to just + * reference Core::$db for any database interaction. + * @var Database + */ + public static $db; + + /** + * @var Smarty + */ + public static $smarty; + + /** + * The translations object. Used to get the current UI language and translation strings (Core::$translations->getList()) + * @var Translations + */ + public static $translations; + + public static $L; + private static $currLang; + + /** + * User-related settings. + * @var User + */ + public static $user; + private static $userInitialized = false; + + /** + * The current version of the Form Tools Core. + */ + private static $version = "3.0.17"; + + /** + * The release type: alpha, beta or main + */ + private static $releaseType = "main"; + + /** + * The release date: YYYYMMDD + */ + private static $releaseDate = "20191001"; + + /** + * The minimum required PHP version needed to run Form Tools. + */ + protected static $requiredPhpVersion = "5.3"; + + /** + * Default values. These are use during installation when we have no idea what the user wants. For non-authenticated + * people visiting the login/forget password pages, they'll get whatever theme & lang has been configured in the + * database (I figure that's a bit more flexible putting it there than hardcoded in config file). + */ + private static $defaultTheme = "default"; + private static $defaultLang = "en_us"; + + /** + * This determines the value used in the database to separate multiple field values (checkboxes and + * multi-select boxes) and image filenames (main image, main thumb, search results thumb). It's strongly + * recommended to leave this value alone. + */ + private static $multiFieldValDelimiter; + + /** + * Simple benchmarking code. When enabled, this outputs a page load time in the footer. + */ + private static $enableBenchmarking; + private static $benchmarkStart = ""; + + /** + * Tracks whether sessions have been started or not. + * @var bool + */ + private static $sessionsStarted = false; + + /** + * Added in 2.3.0 to prevent hooks being executed during in the installation process, prior to the database being + * ready. This was always an issue but the errors were swallowed up with earlier versions of PHP. + */ + private static $hooksEnabled = true; + + /** + * Added in 2.1.0 to provide better error checking on the login page. This is used to confirm that all the Core + * tables do in fact exist before letting the user log in. + */ + private static $coreTables = array( + "account_settings", + "accounts", + "client_forms", + "client_views", + "email_template_edit_submission_views", + "email_template_recipients", + "email_template_when_sent_views", + "email_templates", + "field_options", + "field_settings", + "field_type_setting_options", + "field_type_settings", + "field_types", + "field_type_validation_rules", + "field_validation", + "form_email_fields", + "form_fields", + "forms", + "hook_calls", + "hooks", + "list_groups", + "menu_items", + "menus", + "modules", + "module_menu_items", + "multi_page_form_urls", + "new_view_submission_defaults", + "option_lists", + "public_form_omit_list", + "public_view_omit_list", + "sessions", + "settings", + "themes", + "views", + "view_columns", + "view_fields", + "view_filters", + "view_tabs" + ); + + private static $upgradeUrl = "https://formtools.org/upgrade.php"; + + /** + * Simple mechanism to provide a global storage hash for pages, added for performance reasons. + */ + public static $tempCache = array(); + + /** + * Initializes the Core singleton for use throughout Form Tools. + * - sets up PDO database connection available through Core::$db + * - starts sessions + * - if a user is logged in, instantiates the User object and makes it available via Core::$user + * - The language is user-specific, but lang strings available as a convenience here: Core::$L + */ + public static function init($params = array()) + { + $options = array_merge(array( + "start_sessions" => true, + "init_user" => true, + + // if the users session has expired, or if ?logout=1 is set in the query string, this logs the user out + "auto_logout" => true + ), $params); + + self::loadConfigFile(); + + // explicitly set the error reporting value + error_reporting(self::$errorReporting); + + if (self::checkConfigFileExists()) { + self::initDatabase(); + } + + self::initSmarty(); + if ($options["start_sessions"]) { + self::startSessions(); + } + + if ($options["init_user"]) { + self::initUser(); + } + + if (self::$debugEnabled) { + self::enableDebugging(); + } + + // optionally enable benchmarking. Dev-only feature to confirm pages aren't taking too long to load + if (self::$enableBenchmarking) { + self::$benchmarkStart = General::getMicrotimeFloat(); + } + + // not thrilled with this, but it needs to be handled on all pages and this is a convenient spot + if ($options["auto_logout"]) { + if (Core::checkConfigFileExists() && isset($_GET["logout"])) { + Core::$user->logout(); + } + if (self::$user->isLoggedIn()) { + General::checkSessionsTimeout(); + } + } + } + + public static function startSessions($context = "") + { + if (self::$sessionsStarted) { + return; + } + if (self::$sessionType == "database") { + new DatabaseSessions(self::$db, self::$sessionSavePath); + } + if (!empty(self::$sessionSavePath)) { + session_save_path(self::$sessionSavePath); + } + + // Form Tools uses utf-8 for all headers; if the user is using this method in an API page they can choose to + // customize the header charset via $apiHeaderCharset + $header_charset = "utf-8"; + if ($context == "api_form") { + $header_charset = self::getAPIHeaderCharset(); + } + + session_start(); + header("Cache-control: private"); + header("Content-Type: text/html; charset=$header_charset"); + + self::$sessionsStarted = true; + } + + /** + * This can be called independently of anything else. It simply checks for the existence of the config file. + */ + public static function checkConfigFileExists() + { + return file_exists(self::getConfigFilePath()); + } + + public static function getConfigFilePath() + { + return realpath(__DIR__ . "/../config.php"); + } + + /** + * Loads the user's config file. If successful, it updates the various private member vars + * with whatever's been defined. + * @access private + */ + public static function loadConfigFile() + { + if (self::checkConfigFileExists()) { + require(self::getConfigFilePath()); + } + + self::$rootURL = (isset($g_root_url)) ? $g_root_url : null; + self::$rootDir = (isset($g_root_dir)) ? $g_root_dir : null; + self::$dbHostname = (isset($g_db_hostname)) ? $g_db_hostname : null; + self::$dbName = (isset($g_db_name)) ? $g_db_name : null; + self::$dbPort = (isset($g_db_port)) ? $g_db_port : null; + self::$dbUsername = (isset($g_db_username)) ? $g_db_username : null; + self::$dbPassword = (isset($g_db_password)) ? $g_db_password : null; + self::$dbTablePrefix = (isset($g_table_prefix)) ? $g_table_prefix : null; + self::$unicode = (isset($g_unicode)) ? $g_unicode : null; + self::$setSqlMode = (isset($g_set_sql_mode)) ? $g_set_sql_mode : null; + self::$sqlStrictMode = (isset($g_sql_strict_mode)) ? $g_sql_strict_mode : "off"; + self::$hideUpgradeLink = (isset($g_hide_upgrade_link)) ? $g_hide_upgrade_link : false; + + if (isset($g_custom_cache_folder)) { + self::$cacheFolder = $g_custom_cache_folder; + } else { + self::$cacheFolder = realpath(__DIR__ . "/../../cache/"); + } + + self::$enableBenchmarking = (isset($g_enable_benchmarking)) ? $g_enable_benchmarking : false; + self::$jsDebugEnabled = isset($g_js_debug) ? $g_js_debug : false; + self::$maxForms = isset($g_max_forms) ? $g_max_forms : ""; + self::$maxFormFields = isset($g_max_ft_form_fields) ? $g_max_ft_form_fields : ""; + self::$maxNavPages = isset($g_max_nav_pages) ? $g_max_nav_pages : 16; + self::$searchFormDateFieldFormat = isset($g_search_form_date_field_format) ? $g_search_form_date_field_format : "d/m/y"; + self::$multiFieldValDelimiter = isset($g_multi_val_delimiter) ? $g_multi_val_delimiter : ", "; + self::$queryStrMultiValSeparator = isset($g_query_str_multi_val_separator) ? $g_query_str_multi_val_separator : ","; + self::$errorReporting = isset($g_default_error_reporting) ? $g_default_error_reporting : 1; + self::$debugEnabled = isset($g_debug) ? $g_debug : false; + self::$sessionType = isset($g_session_type) && in_array($g_session_type, array("php", "database")) ? $g_session_type : "php"; + self::$sessionSavePath = isset($g_session_save_path) ? $g_session_save_path : ""; + self::$useSmartyBC = isset($g_use_smarty_bc) ? $g_use_smarty_bc : false; + + // API settings + self::$apiDebug = isset($g_api_debug) ? $g_api_debug : false; + self::$apiRecaptchaSiteKey = isset($g_api_recaptcha_site_key) ? $g_api_recaptcha_site_key : ""; + self::$apiRecaptchaSecretKey = isset($g_api_recaptcha_secret_key) ? $g_api_recaptcha_secret_key : ""; + self::$apiRecaptchaLang = isset($g_api_recaptcha_lang) ? $g_api_recaptcha_lang : "en"; + self::$apiHeaderCharset = isset($g_api_header_charset) ? $g_api_header_charset : "utf-8"; + self::$apiSessionsTimeout = isset($g_api_sessions_timeout) ? $g_api_sessions_timeout : 3600; + } + + public static function initNoSessions() + { + self::init(array("start_sessions" => false)); + } + + public static function initNoLogout() + { + self::init(array("auto_logout" => false)); + } + + public static function initSmarty() + { + self::$smarty = (self::useSmartyBC()) ? new SmartyBC() : new Smarty(); + } + + /** + * Called automatically in Core::init(). This initializes a default database connection, accessible via Core::$db + */ + public static function initDatabase() + { + self::$db = new Database(self::$dbHostname, self::$dbName, self::$dbPort, self::$dbUsername, self::$dbPassword, + self::$dbTablePrefix); + } + + public static function getRootUrl() + { + return self::$rootURL; + } + + public static function getRootDir() + { + return self::$rootDir; + } + + public static function isValidPHPVersion() + { + return version_compare(phpversion(), self::$requiredPhpVersion, ">="); + } + + public static function getCoreTables() + { + return self::$coreTables; + } + + public static function getDbTablePrefix() + { + return self::$dbTablePrefix; + } + + public static function getCoreVersion() + { + return self::$version; + } + + public static function getVersionString() + { + $version = self::getCoreVersion(); + $release_type = self::getReleaseType(); + if ($release_type === "alpha" || $release_type == "beta") { + $release_date = self::getReleaseDate(); + $version .= "-{$release_type}-{$release_date}"; + } + return $version; + } + + public static function getReleaseDate() + { + return self::$releaseDate; + } + + public static function getReleaseType() + { + return self::$releaseType; + } + + public static function getDbTableCharset() + { + return self::$dbTableCharset; + } + + public static function enableDebugging() + { + ini_set('display_errors', 1); + ini_set('display_startup_errors', 1); + error_reporting(E_ALL); + } + + public static function isUnicode() + { + return self::$unicode; + } + + public static function getSqlStrictMode() + { + if (self::$setSqlMode) { + return "off"; + } + return self::$sqlStrictMode; + } + + public static function getDefaultLang() + { + return self::$defaultLang; + } + + public static function getDefaultTheme() + { + return self::$defaultTheme; + } + + public static function setHooksEnabled($status) + { + self::$hooksEnabled = $status; + } + + public static function areHooksEnabled() + { + return self::$hooksEnabled; + } + + public static function setCurrentLang($lang) + { + self::$currLang = $lang; + self::$translations = new Translations(self::$currLang); + self::$L = self::$translations->getStrings(); + } + + public static function getCurrentLang() + { + return self::$currLang; + } + + public static function getPasswordHistorySize() + { + return self::$passwordHistorySize; + } + + public static function getDbName() + { + return self::$dbName; + } + + public static function getRequiredPasswordSpecialChars() + { + return self::$requiredPasswordSpecialChars; + } + + public static function isSmartyDebugEnabled() + { + return self::$smartyDebug; + } + + public static function isJsDebugEnabled() + { + return self::$jsDebugEnabled; + } + + public static function shouldUseSmartySubDirs() + { + return self::$smartyUseSubDirs; + } + + public static function shouldHideUpgradeLink() + { + return self::$hideUpgradeLink; + } + + public static function isBenchmarkingEnabled() + { + return self::$enableBenchmarking; + } + + public static function getBenchmarkStart() + { + return self::$benchmarkStart; + } + + public static function getMaxForms() + { + return self::$maxForms; + } + + public static function getMaxFormFields() + { + return self::$maxFormFields; + } + + public static function getMaxNavPages() + { + return self::$maxNavPages; + } + + public static function getSearchFormDateFieldFormat() + { + return self::$searchFormDateFieldFormat; + } + + public static function getMultiFieldValDelimiter() + { + return self::$multiFieldValDelimiter; + } + + public static function isDebugEnabled() + { + return self::$debugEnabled; + } + + public static function getDefaultErrorReporting() + { + return self::$errorReporting; + } + + public static function getQueryStrMultiValSeparator() + { + return self::$queryStrMultiValSeparator; + } + + public static function getSessionType() + { + return self::$sessionType; + } + + public static function getSessionSavePath() + { + return self::$sessionSavePath; + } + + public static function isUserInitialized() + { + return self::$userInitialized; + } + + public static function getFilenameCharWhitelist() + { + return self::$filenameCharWhitelist; + } + + public static function updateUser($language, $theme, $swatch) + { + self::$user->setLang($language); + self::$user->setTheme($theme); + self::$user->setSwatch($swatch); + + self::setCurrentLang($language); + } + + + // API-related + + public static function isAPIAvailable() + { + return is_file(Core::getAPIPath()); + } + + public static function getAPIPath() + { + $root_dir = Core::getRootDir(); + return "$root_dir/global/api/API.class.php"; + } + + /** + * The API debug setting is generally configured by adding a $g_api_debug=true var to your config.php file. But for + * API form integrations, users may prefer to do use it on a per-form basis. To do that, they can just add the + * same variable prior to instantiating the API/calling an old ft_api_* method. + * @return bool + */ + public static function isAPIDebugEnabled() + { + global $g_api_debug; + return (isset($g_api_debug)) ? $g_api_debug : self::$apiDebug; + } + + public static function getApiRecaptchaSiteKey() + { + return self::$apiRecaptchaSiteKey; + } + + public static function getAPIRecaptchaSecretKey() + { + return self::$apiRecaptchaSecretKey; + } + + public static function getAPIRecaptchaLang() + { + return self::$apiRecaptchaLang; + } + + public static function getAPIHeaderCharset() + { + return self::$apiHeaderCharset; + } + + public static function getAPISessionsTimeout() + { + return self::$apiSessionsTimeout; + } + + public static function getUpgradeUrl() + { + return self::$upgradeUrl; + } + + public static function useSmartyBC() + { + return self::$useSmartyBC; + } + + public static function getTempCacheHash() + { + return self::$tempCache; + } + + public static function setTempCacheHash($value) + { + self::$tempCache = $value; + } + + /** + * N.B. this returns the *available* cache folder, not whatever is defined. It checks to see if the default + * cache folder exists and is writable, otherwise + */ + public static function getCacheFolder() + { + if (is_dir(self::$cacheFolder) && is_writable(self::$cacheFolder)) { + return self::$cacheFolder; + } + + return realpath("../../themes/default/cache"); + } + + // the 3.0.15 upgrade tries to create a cache/ folder in the Form Tools root and switch the installation over to use + // that. In case of problems Form Tools downgrades to using the old default theme's cache folder. This method is + // used to notify the admin to remedy the situation + public static function hasInvalidCacheFolder() + { + return self::getCacheFolder() !== self::$cacheFolder; + } + + + // private methods + + private static function initUser() + { + self::$user = new User(); + self::$currLang = self::$user->getLang(); + self::setCurrentLang(self::$currLang); + self::$userInitialized = true; + } +} diff --git a/global/code/CoreFieldTypes.class.php b/global/code/CoreFieldTypes.class.php new file mode 100644 index 00000000..bee9e310 --- /dev/null +++ b/global/code/CoreFieldTypes.class.php @@ -0,0 +1,253 @@ + + * @version 3.0.x + * @package 3-0-x + */ + + +// ------------------------------------------------------------------------------------------------- + +namespace FormTools; + +use Exception; + +// down the road these should all extend an abstract class, with all the content standardized +use FormTools\FieldTypes\Checkbox; +use FormTools\FieldTypes\Code; +use FormTools\FieldTypes\Date; +use FormTools\FieldTypes\Dropdown; +use FormTools\FieldTypes\MultiSelect; +use FormTools\FieldTypes\Password; +use FormTools\FieldTypes\Phone; +use FormTools\FieldTypes\Radio; +use FormTools\FieldTypes\Textarea; +use FormTools\FieldTypes\Textbox; +use FormTools\FieldTypes\Time; + + +class CoreFieldTypes +{ + + /** + * This installs a single field type and all related data: settings, setting options and validation. If + * a field type with that identifier already exists, it returns false, with an appropriate error message. + * + * @param integer $field_type_identifier "textbox", "textarea", etc... TODO these should be constants. + */ + public static function installFieldType($field_type_identifier, $group_id) + { + $db = Core::$db; + + $field_type_info = FieldTypes::getFieldTypeByIdentifier($field_type_identifier); + if (!empty($field_type_info)) { + return array(false, "The database has already been populated with the $field_type_identifier field type."); + } + + $cft_field_types = CoreFieldTypes::getFieldTypes(); + $data = $cft_field_types[$field_type_identifier]; + + // Step 1: install the main field_types record + $db->query("SELECT count(*) as c FROM {PREFIX}field_types WHERE group_id = :group_id"); + $db->bind("group_id", $group_id); + $db->execute(); + $result = $db->fetch(); + + $next_list_order = $result["c"] + 1; + + $db->query(" + INSERT INTO {PREFIX}field_types (is_editable, non_editable_info, managed_by_module_id, field_type_name, + field_type_identifier, group_id, is_file_field, is_date_field, raw_field_type_map, raw_field_type_map_multi_select_id, + list_order, compatible_field_sizes, view_field_rendering_type, view_field_php_function_source, view_field_php_function, + view_field_smarty_markup, edit_field_smarty_markup, php_processing, resources_css, resources_js) + VALUES ( + :is_editable, :non_editable_info, :managed_by_module_id, :field_type_name, :field_type_identifier, + :group_id, :is_file_field, :is_date_field, :raw_field_type_map, :raw_field_type_map_multi_select_id, + :list_order, :compatible_field_sizes, :view_field_rendering_type, :view_field_php_function_source, + :view_field_php_function, :view_field_smarty_markup, :edit_field_smarty_markup, + :php_processing, :resources_css, :resources_js + ) + "); + $db->bindAll(array( + "is_editable" => $data["field_type"]["is_editable"], + "non_editable_info" => $data["field_type"]["non_editable_info"], + "managed_by_module_id" => $data["field_type"]["managed_by_module_id"], + "field_type_name" => $data["field_type"]["field_type_name"], + "field_type_identifier" => $data["field_type"]["field_type_identifier"], + "group_id" => $group_id, + "is_file_field" => $data["field_type"]["is_file_field"], + "is_date_field" => $data["field_type"]["is_date_field"], + "raw_field_type_map" => $data["field_type"]["raw_field_type_map"], + "raw_field_type_map_multi_select_id" => null, + "list_order" => $next_list_order, + "compatible_field_sizes" => $data["field_type"]["compatible_field_sizes"], + "view_field_rendering_type" => $data["field_type"]["view_field_rendering_type"], + "view_field_php_function_source" => $data["field_type"]["view_field_php_function_source"], + "view_field_php_function" => $data["field_type"]["view_field_php_function"], + "view_field_smarty_markup" => $data["field_type"]["view_field_smarty_markup"], + "edit_field_smarty_markup" => $data["field_type"]["edit_field_smarty_markup"], + "php_processing" => $data["field_type"]["php_processing"], + "resources_css" => $data["field_type"]["resources_css"], + "resources_js" => $data["field_type"]["resources_js"] + )); + + try { + $db->execute(); + } catch (Exception $e) { + CoreFieldTypes::rollbackNewInstallation(); + return array(false, "Failed to insert field type $field_type_identifier: " . $e->getMessage()); + } + + $field_type_id = $db->getInsertId(); + + // Step 2: field type settings + for ($i=1; $i<=count($data["settings"]); $i++) { + $setting_info = $data["settings"][$i-1]; + $use_for_option_list_map = isset($setting_info["use_for_option_list_map"]) ? $setting_info["use_for_option_list_map"] : false; + + $db->query(" + INSERT INTO {PREFIX}field_type_settings (field_type_id, field_label, field_setting_identifier, + field_type, field_orientation, default_value_type, default_value, list_order) + VALUES (:field_type_id, :field_label, :field_setting_identifier, :field_type, + :field_orientation, :default_value_type, :default_value, :list_order) + "); + $db->bindAll(array( + "field_type_id" => $field_type_id, + "field_label" => $setting_info["field_label"], + "field_setting_identifier" => $setting_info["field_setting_identifier"], + "field_type" => $setting_info["field_type"], + "field_orientation" => $setting_info["field_orientation"], + "default_value_type" => $setting_info["default_value_type"], + "default_value" => $setting_info["default_value"], + "list_order" => $i + )); + + try { + $db->execute(); + } catch (Exception $e) { + CoreFieldTypes::rollbackNewInstallation(); + return array(false, "Failed to insert setting {$setting_info["field_setting_identifier"]}: " . $e->getMessage()); + } + + $setting_id = $db->getInsertId(); + + // if this setting is being used for the raw field type option list, update the field type record + if ($use_for_option_list_map) { + $db->query(" + UPDATE {PREFIX}field_types + SET raw_field_type_map_multi_select_id = :raw_field_type_map_multi_select_id + WHERE field_type_id = :field_type_id + "); + $db->bind("raw_field_type_map_multi_select_id", $setting_id); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + } + + for ($j=1; $j<=count($setting_info["options"]); $j++) { + $option_info = $setting_info["options"][$j-1]; + + $db->query(" + INSERT INTO {PREFIX}field_type_setting_options (setting_id, option_text, option_value, option_order, is_new_sort_group) + VALUES (:setting_id, :option_text, :option_value, :option_order, :is_new_sort_group) + "); + $db->bindAll(array( + "setting_id" => $setting_id, + "option_text" => $option_info["option_text"], + "option_value" => $option_info["option_value"], + "option_order" => $j, + "is_new_sort_group" => $option_info["is_new_sort_group"] + )); + + try { + $db->execute(); + } catch (Exception $e) { + CoreFieldTypes::rollbackNewInstallation(); + return array(false, "Failed to insert setting option {$setting_info["field_setting_identifier"]}, {$option_info["option_text"]}: " . $e->getMessage()); + } + } + } + + // Step 4: Validation + for ($i=1; $i<=count($data["validation"]); $i++) { + $rule_info = $data["validation"][$i-1]; + + $db->query(" + INSERT INTO {PREFIX}field_type_validation_rules (field_type_id, rsv_rule, rule_label, + rsv_field_name, custom_function, custom_function_required, default_error_message, list_order) + VALUES (:field_type_id, :rsv_rule, :rule_label, :rsv_field_name, :custom_function, + :custom_function_required, :default_error_message, :list_order) + "); + $db->bindAll(array( + "field_type_id" => $field_type_id, + "rsv_rule" => $rule_info["rsv_rule"], + "rule_label" => $rule_info["rule_label"], + "rsv_field_name" => $rule_info["rsv_field_name"], + "custom_function" => $rule_info["custom_function"], + "custom_function_required" => $rule_info["custom_function_required"], + "default_error_message" => $rule_info["default_error_message"], + "list_order" => $i + )); + + try { + $db->execute(); + } catch (Exception $e) { + CoreFieldTypes::rollbackNewInstallation(); + return array(false, "Failed to insert validation rule {$rule_info["rule_label"]}: " . $e->getMessage()); + } + } + + return array(true, ""); + } + + + /** + * Used during the installation. If there are ever ANY errors adding the core fields types, it empties the + * database for a fresh try. + * + * This shouldn't ever occur, of course. However, the calling script will always return the explicit error + * that occurs, so we should be able to plug any problems that occur. + */ + public static function rollbackNewInstallation() + { + $db = Core::$db; + + ListGroups::deleteByGroupType("field_types"); + + $db->query("TRUNCATE TABLE {PREFIX}field_types"); + $db->execute(); + + $db->query("TRUNCATE TABLE {PREFIX}field_type_settings"); + $db->execute(); + + $db->query("TRUNCATE TABLE {PREFIX}field_type_setting_options"); + $db->execute(); + + $db->query("TRUNCATE TABLE {PREFIX}field_type_validation_rules"); + $db->execute(); + } + + public static function getFieldTypes() + { + return array( + "checkboxes" => Checkbox::get(), + "code_markup" => Code::get(), + "date" => Date::get(), + "dropdown" => Dropdown::get(), + "multi_select_dropdown" => MultiSelect::get(), + "password" => Password::get(), + "phone" => Phone::get(), + "radio_buttons" => Radio::get(), + "textarea" => Textarea::get(), + "textbox" => Textbox::get(), + "time" => Time::get() + ); + } +} diff --git a/global/code/Database.class.php b/global/code/Database.class.php new file mode 100644 index 00000000..076ca5cb --- /dev/null +++ b/global/code/Database.class.php @@ -0,0 +1,255 @@ + + * @package 2-3-x + * @subpackage Database + */ + + +// ------------------------------------------------------------------------------------------------- + +namespace FormTools; + +use PDO, Exception; + + +class Database +{ + private $dbh; + private $error; + private $statement; + private $table_prefix; + + public function __construct($hostname, $db_name, $port, $username, $password, $table_prefix) + { + $options = array( + PDO::ATTR_PERSISTENT => true, + PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, + PDO::ATTR_EMULATE_PREPARES => false + ); + + // if required, set all queries as UTF-8 (enabled by default). N.B. we're supporting 5.3.0 so passing charset + // in the DSN isn't sufficient, as described here: https://phpdelusions.net/pdo + $attrInitCommands = array(); + if (version_compare(PHP_VERSION, '5.3.6', '<')) { + $attrInitCommands[] = "Names utf8"; + } + + $use_strict_mode = Core::getSqlStrictMode(); + if ($use_strict_mode == "off") { + $attrInitCommands[] = "SQL_MODE=''"; + } else if ($use_strict_mode == "on") { + $attrInitCommands[] = "SQL_MODE='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'"; + } + + if (!empty($attrInitCommands)) { + $options[PDO::MYSQL_ATTR_INIT_COMMAND] = "SET " . implode(",", $attrInitCommands); + } + + try { + $dsn = sprintf("mysql:host=%s;port=%s;dbname=%s;charset=utf8", $hostname, $port, $db_name); + $this->dbh = new PDO($dsn, $username, $password, $options); + } catch (Exception $e) { + $this->error = $e->getMessage(); + } + + $this->table_prefix = $table_prefix; + } + + /** + * This is a convenience wrapper for PDO's prepare method. It replaces {PREFIX} with the database + * table prefix so you don't have to include it everywhere. + * @param $query + */ + public function query($query) + { + $query = str_replace('{PREFIX}', $this->table_prefix, $query); + $this->statement = $this->dbh->prepare($query); + } + + public static function placeholders($text, $count = 0, $separator = ",") + { + $result = array(); + if ($count > 0) { + for ($i = 0; $i < $count; $i++) { + $result[] = $text; + } + } + return implode($separator, $result); + } + + /** + * Another convenience function to abstract away PDO's awful insert-multiple syntax and actually execute the + * query as well. Does the same thing as a query() and an execute(). + * @param string $table table name (OMIT the prefix) + * @param array $cols ordered array of tables names + * @param array $data array of arrays. Each subarray is a hash of col name to value. + * @return result of executed statement + */ + public function insertQueryMultiple($table, $cols, $data) + { + $insert_values = array(); + foreach ($data as $d) { + $question_marks[] = '(' . self::placeholders('?', sizeof($d)) . ')'; + $insert_values = array_merge($insert_values, array_values($d)); + } + + $table_name = $this->table_prefix . $table; + $query = "INSERT INTO $table_name (" . implode(",", $cols) . ") VALUES " . implode(',', $question_marks); + + $this->statement = $this->dbh->prepare($query); + + return $this->statement->execute($insert_values); + } + + public function bind($param, $value, $type = null) + { + if (is_null($type)) { + switch (true) { + case is_int($value): + $type = PDO::PARAM_INT; + break; + case is_bool($value): + $type = PDO::PARAM_BOOL; + break; + case is_null($value): + $type = PDO::PARAM_NULL; + break; + default: + $type = PDO::PARAM_STR; + } + } + $this->statement->bindValue($param, $value, $type); + } + + public function bindAll(array $data) + { + foreach ($data as $k => $v) { + $this->bind($k, $v); + } + } + + public function beginTransaction() + { + return $this->dbh->beginTransaction(); + } + + public function processTransaction() + { + return $this->dbh->commit(); + } + + public function rollbackTransaction() + { + return $this->dbh->rollBack(); + } + + // method execution methods + public function execute($params = "") + { + if (!empty($params)) { + return $this->statement->execute($params); + } else { + return $this->statement->execute(); + } + } + + public function fetch($fetch_style = PDO::FETCH_ASSOC) + { + return $this->statement->fetch($fetch_style); + } + + public function fetchColumn() + { + return $this->statement->fetchColumn(); + } + + public function fetchAll($fetch_style = PDO::FETCH_ASSOC) + { + return $this->statement->fetchAll($fetch_style); + } + + public function numRows() + { + return $this->statement->rowCount(); + } + + public function getResultsArray() + { + $info = array(); + foreach ($this->fetchAll() as $row) { + $info[] = $row; + } + return $info; + } + + public function getInsertId() + { + return $this->dbh->lastInsertId(); + } + + public function getMySQLVersion() + { + $this->query("SELECT VERSION()"); + $this->execute(); + return $this->fetchColumn(); + } + + /** + * Convenience method for constructing PDO-friendly insert statements. This is passed a hash of + * column names to values and returns an array with two indexes: + * [0] a comma delimited list of col names, like "mycol1, mycol2, mycol3" + * [1] a command delimited list of placeholders for those same columns, like ":mycol1, :mycol2, :mycol3" + * + * Since PDO doesn't permit placeholder starting with numbers but MySQL DOES permit columns to do that, this method + * also takes that into account. + * + * @param $hash array of columns => values + * @return array + */ + public function getInsertStatementParams($hash) + { + $col_names = array(); + $placeholders = array(); + $clean_hash = $hash; + + foreach ($hash as $col_name => $value) { + $col_names[] = $col_name; + + $clean_col_name = $col_name; + if (preg_match('/^\d/', $col_name) === 1) { + $clean_col_name = "SAFE_{$col_name}"; + + $value = $hash[$col_name]; + unset($clean_hash[$col_name]); + $clean_hash[$clean_col_name] = $value; + } + $placeholders[] = ":{$clean_col_name}"; + } + + $cols_str = join(", ", $col_names); + $placeholders_str = join(", ", $placeholders); + + return array($cols_str, $placeholders_str, $clean_hash); + } + + /** + * Returns a string of col1 = :col1, col2 = :col2 ... for an UPDATE statement. + * @param $hash + * @return string + */ + public function getUpdateStatements($hash) + { + $col_names = array_keys($hash); + $update_statements = array(); + foreach ($col_names as $col_name) { + $update_statements[] = "$col_name = :$col_name"; + } + + return implode(", ", $update_statements); + } +} diff --git a/global/code/DatabaseSessions.class.php b/global/code/DatabaseSessions.class.php new file mode 100644 index 00000000..f9716172 --- /dev/null +++ b/global/code/DatabaseSessions.class.php @@ -0,0 +1,132 @@ +db = $db; + $this->sessionSavePath = $session_save_path; + + // register the various session handler functions + session_set_save_handler( + array(&$this, "open"), + array(&$this, "close"), + array(&$this, "read"), + array(&$this, "write"), + array(&$this, "destroy"), + array(&$this, "gc") + ); + + register_shutdown_function('session_write_close'); + } + + public function open() + { + return true; + } + + public function close() + { + return true; + } + + public function read($session_id) + { + // fetch session data from the selected database + $this->db->query(" + SELECT session_data + FROM {PREFIX}sessions + WHERE session_id = :session_id AND + expires > :expiry_time + "); + try { + $this->db->bindAll(array( + "session_id" => $session_id, + "expiry_time" => time() + )); + $this->db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $results = $this->db->fetchAll(); + $a = count($results); + + $data = ""; + + if ($a > 0) { + $row = $results[0]; + $data = $row["session_data"]; + } + + return $data; + } + + // this is only executed until after the output stream has been closed + public function write($session_id, $data) + { + $db = $this->db; + + if (Sessions::exists("account.sessions_timeout")) { + $lifeTime = Sessions::get("account.sessions_timeout") * 60; + } else { + $lifeTime = Core::getApiSessionsTimeout(); + } + + $db->query(" + REPLACE {PREFIX}sessions (session_id, session_data, expires) + VALUES (:session_id, :session_data, :expiry_time) + "); + try { + $db->bindAll(array( + "session_id" => $session_id, + "session_data" => $data, + "expiry_time" => time() + $lifeTime + )); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + return false; + } + + return true; + } + + public function destroy($id) + { + $db = $this->db; + $db->query("DELETE FROM {PREFIX}sessions WHERE session_id = :id"); + $db->bind("id", $id); + $db->execute(); + + return true; + } + + // delete all records who have passed the expiration time + public function gc() + { + $this->db->query("DELETE FROM {PREFIX}sessions WHERE expires < UNIX_TIMESTAMP()"); + return true; + } +} diff --git a/global/code/Emails.class.php b/global/code/Emails.class.php new file mode 100644 index 00000000..8b9b542e --- /dev/null +++ b/global/code/Emails.class.php @@ -0,0 +1,1708 @@ +query(" + SELECT * + FROM {PREFIX}email_templates + WHERE form_id = :form_id + ORDER BY email_template_name + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $templates = $db->fetchAll(); + + $info = array(); + foreach ($templates as $row) { + $db->query("SELECT view_id FROM {PREFIX}email_template_when_sent_views WHERE email_id = :email_id"); + $db->bind("email_id", $row["email_id"]); + $db->execute(); + + $row["when_sent_view_ids"] = $db->fetchAll(PDO::FETCH_COLUMN); + $info[] = $row; + } + + extract(Hooks::processHookCalls("end", compact("form_id", "info"), array("info")), EXTR_OVERWRITE); + + return $info; + } + + + /** + * Completely deletes an email template from the system. + * + * @param integer $email_id + * @return array [0] T/F + * [1] success / error message + */ + public static function deleteEmailTemplate($email_id) + { + $db = Core::$db; + $LANG = Core::$L; + + if (empty($email_id) || !is_numeric($email_id)) { + return array(false, $LANG["validation_invalid_email_id"]); + } + + $db->query("DELETE FROM {PREFIX}email_templates WHERE email_id = :email_id"); + $db->bind("email_id", $email_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}email_template_recipients WHERE email_template_id = :email_id"); + $db->bind("email_id", $email_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}email_template_edit_submission_views WHERE email_id = :email_id"); + $db->bind("email_id", $email_id); + $db->execute(); + + return array(true, $LANG["notify_email_template_deleted"]); + } + + + /** + * This function is called whenever the user clicks the "Create Email" button on the main email list page. + * + * @param integer $form_id + * @param integer $create_email_from_email_id this option parameter lets the user create a new email based on + * an existing one, saving them the effort of having to re-enter everything. + */ + public static function createBlankEmailTemplate($form_id, $create_email_from_email_id = "") + { + $db = Core::$db; + + if (empty($create_email_from_email_id)) { + $db->query(" + INSERT {PREFIX}email_templates (form_id, email_status, email_event_trigger) + VALUES (:form_id, 'enabled', 'on_submission') + "); + $db->bind("form_id", $form_id); + $db->execute(); + $email_id = $db->getInsertId(); + } else { + $email_template_info = self::getEmailTemplate($create_email_from_email_id); + + // WISHLIST: to have a generic "copy_table_row" function... + $db->query(" + INSERT INTO {PREFIX}email_templates (form_id, email_template_name, email_status, + view_mapping_type, limit_email_content_to_fields_in_view, email_event_trigger, + include_on_edit_submission_page, subject, email_from, email_from_account_id, custom_from_name, + custom_from_email, email_reply_to, email_reply_to_account_id, custom_reply_to_name, custom_reply_to_email, + html_template, text_template) + (SELECT form_id, email_template_name, email_status, + view_mapping_type, limit_email_content_to_fields_in_view, email_event_trigger, + include_on_edit_submission_page, subject, email_from, email_from_account_id, custom_from_name, + custom_from_email, email_reply_to, email_reply_to_account_id, custom_reply_to_name, custom_reply_to_email, + html_template, text_template + FROM {PREFIX}email_templates WHERE email_id = :email_id) + "); + $db->bind("email_id", $create_email_from_email_id); + $db->execute(); + + $email_id = $db->getInsertId(); + + foreach ($email_template_info["recipients"] as $recipient) { + $recipient_user_type = $recipient["recipient_user_type"]; + $recipient_type = $recipient["recipient_type"]; + $account_id = !empty($recipient["account_id"]) ? $recipient["account_id"] : null; + $form_email_id = !empty($recipient["form_email_id"]) ? $recipient["form_email_id"] : null; + $custom_recipient_name = $recipient["custom_recipient_name"]; + $custom_recipient_email = $recipient["custom_recipient_email"]; + + $db->query(" + INSERT INTO {PREFIX}email_template_recipients (email_template_id, recipient_user_type, + recipient_type, account_id, form_email_id, custom_recipient_name, custom_recipient_email) + VALUES (:email_id, :recipient_user_type, :recipient_type, :account_id, :form_email_id, + :custom_recipient_name, :custom_recipient_email) + "); + $db->bindAll(array( + "email_id" => $email_id, + "recipient_user_type" => $recipient_user_type, + "recipient_type" => $recipient_type, + "account_id" => $account_id, + "form_email_id" => $form_email_id, + "custom_recipient_name" => $custom_recipient_name, + "custom_recipient_email" => $custom_recipient_email + )); + try { + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + } + + foreach ($email_template_info["edit_submission_page_view_ids"] as $view_id) { + $db->query(" + INSERT INTO {PREFIX}email_template_edit_submission_views (email_id, view_id) + VALUES (:email_id, :view_id) + "); + $db->bindAll(array( + "email_id" => $email_id, + "view_id" => $view_id + )); + $db->execute(); + } + + foreach ($email_template_info["when_sent_view_ids"] as $view_id) { + $db->query(" + INSERT INTO {PREFIX}email_template_when_sent_views (email_id, view_id) + VALUES (:email_id, :view_id) + "); + $db->bindAll(array( + "email_id" => $email_id, + "view_id" => $view_id + )); + $db->execute(); + } + } + + extract(Hooks::processHookCalls("end", compact("email_id"), array()), EXTR_OVERWRITE); + + return $email_id; + } + + + /** + * Returns all information about a particular email template. + * + * @param integer $email_id + * @return array + */ + public static function getEmailTemplate($email_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}email_templates + WHERE email_id = :email_id + "); + $db->bind("email_id", $email_id); + $db->execute(); + + $email_template = $db->fetch(); + $form_id = $email_template["form_id"]; + $email_template["recipients"] = self::getEmailTemplateRecipients($form_id, $email_id); + + // get the list of Views that should show this email template on the edit submission page + $db->query("SELECT view_id FROM {PREFIX}email_template_edit_submission_views WHERE email_id = :email_id"); + $db->bind("email_id", $email_id); + $db->execute(); + + $view_ids = $db->fetchAll(PDO::FETCH_COLUMN); + $email_template["edit_submission_page_view_ids"] = $view_ids; + + // get the list of Views for which this email template is assigned to be sent + $db->query("SELECT view_id FROM {PREFIX}email_template_when_sent_views WHERE email_id = :email_id"); + $db->bind("email_id", $email_id); + $db->execute(); + + $email_template["when_sent_view_ids"] = $db->fetchAll(PDO::FETCH_COLUMN); + + extract(Hooks::processHookCalls("end", compact("email_template"), array("email_template")), EXTR_OVERWRITE); + + return $email_template; + } + + + /** + * Returns a list of all email templates for a form, in no particular order. + * + * @param integer $form_id + * @return array + */ + public static function getEmailTemplates($form_id, $page_num = 1) + { + $db = Core::$db; + + $num_emails_per_page = Sessions::getWithFallback("settings.num_emails_per_page", 10); + + // determine the LIMIT clause + if (empty($page_num)) { + $page_num = 1; + } + + $first_item = ($page_num - 1) * $num_emails_per_page; + $limit_clause = "LIMIT $first_item, $num_emails_per_page"; + + $db->query(" + SELECT * + FROM {PREFIX}email_templates + WHERE form_id = :form_id + $limit_clause + "); + $db->bind("form_id", $form_id); + $db->execute(); + $email_templates = $db->fetchAll(); + + $db->query(" + SELECT count(*) as c + FROM {PREFIX}email_templates + WHERE form_id = :form_id + "); + $db->bind("form_id", $form_id); + $db->execute(); + $count_result = $db->fetch(); + + $email_info = array(); + foreach ($email_templates as $row) { + $info = $row; + $info["recipients"] = self::getEmailTemplateRecipients($form_id, $row["email_id"]); + $email_info[] = $info; + } + + $return_hash["results"] = $email_info; + $return_hash["num_results"] = $count_result["c"]; + + extract(Hooks::processHookCalls("end", compact("form_id", "return_hash"), array("return_hash")), EXTR_OVERWRITE); + + return $return_hash; + } + + + /** + * Sends a test email to administrators as they are building their email templates - or just to + * confirm the emails are working properly. + * + * @param array $infohash This parameter should be a hash (e.g. $_POST or $_GET) containing the + * various fields from the test email form. + */ + public static function sendTestEmail($info) + { + $LANG = Core::$L; + + extract(Hooks::processHookCalls("start", compact("info"), array("info")), EXTR_OVERWRITE); + + $form_id = Sessions::get("form_id"); + $email_id = Sessions::get("email_id"); + $submission_id = (isset($info["submission_id"]) && !empty($info["submission_id"])) ? $info["submission_id"] : ""; + + list ($success, $email_info) = self::getEmailComponents($form_id, $submission_id, $email_id, true, $info); + if (!$success) { + return array(false, $email_info); + } + + $recipient = $info["test_email_recipient"]; + + // if Swift Mailer is enabled, send the emails with that + if (Modules::checkModuleEnabled("swift_mailer")) { + $sm_settings = Modules::getModuleSettings("", "swift_mailer"); + + if ($sm_settings["swiftmailer_enabled"] == "yes") { + $swift = Modules::getModuleInstance("swift_mailer"); + + // we deliberately ignore anything other than the specified recipient + $email_info["cc"] = array(); + $email_info["bcc"] = array(); + $email_info["to"] = array(); + $email_info["to"][] = array("email" => $recipient); + + return $swift->sendEmail($email_info); + } + } + + // construct the email headers + $eol = Emails::getEmailEolChar(); + + $from = ""; + if (isset($email_info["from"]["email"]) && !empty($email_info["from"]["email"])) { + $from = htmlspecialchars_decode($email_info["from"]["email"]); + } + + $reply_to = ""; + if (isset($email_info["reply_to"]["email"]) && !empty($email_info["reply_to"]["email"])) { + $reply_to = htmlspecialchars_decode($email_info["reply_to"]["email"]); + } + + // as with Swift Mailer, we deliberately ignore anything other than the specified recipient + $header_info = array( + "eol" => $eol, + "from" => $from, + "reply_to" => $reply_to, + "cc" => "", + "bcc" => "" + ); + + // construct the email headers [move to helper function] + $headers = Emails::getEmailHeaders($header_info); + + // stores the content for either text or HTML emails (but not both!) + $message = ""; + + if (!empty($email_info["html_content"]) && !empty($email_info["text_content"])) { + $headers .= Emails::getMultipartMessage($email_info["html_content"], $email_info["text_content"], $eol); + } else if (!empty($email_info["text_content"])) { + $headers .= "Content-type: text/plain; charset=UTF-8"; + $message = $email_info["text_content"]; + } else if (!empty($email_info["html_content"])) { + $headers .= "Content-type: text/html; charset=UTF-8"; + $message = $email_info["html_content"]; + } + + $subject = $email_info["subject"]; + + if (!@mail($recipient, $subject, $message, $headers)) { + return array(false, $LANG["notify_test_email_not_sent"]); + } else { + return array(true, $LANG["notify_your_email_sent"]); + } + } + + + /** + * This handy function figures out the various components of an email and returns them in a hash: + * from, reply_to, to, cc, bcc, subject, html_content and text_content + * + * This is used when sending the emails, plus testing. This should be the only place that + * email content is actually constructed. All other email functions should be using it, regardless of + * what mechanism actually sends the email. + * + * @param integer $form_id + * @param mixed $submission_id for non-test emails, this is included. For testing, it may be blank. + * @param integer $email_id + * @return array + */ + public static function getEmailComponents($form_id, $submission_id = "", $email_id, $is_test = false, $test_settings = array()) + { + $LANG = Core::$L; + $root_dir = Core::getRootDir(); + $default_theme = Core::getDefaultTheme(); + + $email_template = self::getEmailTemplate($email_id); + + // if the administrator limited the email content to fields in a particular View, pass those fields to the + // template - NOT all of the form fields (which is the default) + if (!empty($email_template["limit_email_content_to_fields_in_view"])) { + $view_fields = ViewFields::getViewFields($email_template["limit_email_content_to_fields_in_view"]); + + // here, $view_fields just contains the info from the view_fields table. We need the info from the form_fields + // table instead - since it contains presentation information likely to be needed in the email templates + $fields_for_email_template = array(); + foreach ($view_fields as $view_field_info) { + $fields_for_email_template[] = Fields::getFormField($view_field_info["field_id"], array("include_field_type_info" => true)); + } + } else { + $fields_for_email_template = Fields::getFormFields($form_id, array("include_field_type_info" => true)); + } + + // this returns a hash with three keys: html_content, text_content and submission_id + $templates = self::getEmailTemplateContent($form_id, $submission_id, $email_template, $is_test, $test_settings); + $submission_id = $templates["submission_id"]; + + // unfortunately we need this, even though it was just called in _ft_get_email_template_content() + $submission_info = Submissions::getSubmission($form_id, $submission_id); + + + // retrieve the placeholders and their substitutes. This is a hash of stuff like: + // [ADMINEMAIL] => whatever@something.com + // [FORMNAME] => Form 123 + // [FORMURL] => + // [SUBMISSIONID] => 10 + // [LOGINURL] => http://urlhere.com + $submission_placeholders = General::getSubmissionPlaceholders($form_id, $submission_id, "email_template"); + $admin_info = Administrator::getAdminInfo(); + + $updated_fields_for_email_template = array(); + foreach ($fields_for_email_template as $field_info) { + if ($field_info["is_file_field"] == "yes") { + $field_id = $field_info["field_id"]; + $field_settings = Fields::getFieldSettings($field_id); + $field_info["folder_url"] = $field_settings["folder_url"]; + $field_info["folder_path"] = $field_settings["folder_path"]; + $filename = $field_info["field_name"]; + $field_info["answer"] = $submission_placeholders["FILENAME_{$filename}"]; + } + $updated_fields_for_email_template[] = $field_info; + } + + $fields_for_email_template = $updated_fields_for_email_template; + + $updated_fields_for_email_template = array(); + foreach ($fields_for_email_template as $field_info) { + foreach ($submission_placeholders as $placeholder => $value) { + if ($placeholder != "ANSWER_{$field_info["field_name"]}") { + continue; + } + $field_info["answer"] = $value; + break; + } + reset($submission_placeholders); + $updated_fields_for_email_template[] = $field_info; + } + $fields_for_email_template = $updated_fields_for_email_template; + + // minor bug fix never noticed in FT2.x. If an email template has been mapped to a View that has a filter defined, + // and the user has selected "random submission", there may well be NO submission ID that actually fits, so "answer" + // can have no value for each field. This just ensures the "answer" key is set so the email templates don't throw a + // warning + $updated_fields_for_email_template = array(); + foreach ($fields_for_email_template as $field_info) { + if (!isset($field_info["answer"])) { + $field_info["answer"] = ""; + } + $updated_fields_for_email_template[] = $field_info; + } + $fields_for_email_template = $updated_fields_for_email_template; + + $return_info = array(); + $return_info["email_id"] = $email_id; + $return_info["attachments"] = array(); + + $smarty = Core::useSmartyBC() ? new SmartyBC() : new Smarty(); + $smarty->setTemplateDir("$root_dir/global/smarty_plugins/"); + $smarty->setCompileDir(Core::getCacheFolder()); + $smarty->addPluginsDir(array( + "$root_dir/global/smarty_plugins" + )); + $smarty->assign("LANG", $LANG); + $smarty->assign("fields", $fields_for_email_template); + + if (!empty($templates["text"])) { + list($templates["text"], $attachments) = self::extractEmailAttachmentInfo($templates["text"], $form_id, $submission_placeholders); + + foreach ($attachments as $attachment_info) { + if (!in_array($attachment_info, $return_info["attachments"])) { + $return_info["attachments"][] = $attachment_info; + } + } + + $smarty->assign("eval_str", $templates["text"]); + foreach ($submission_placeholders as $key => $value) { + $smarty->assign($key, $value); + } + reset($submission_placeholders); + + $return_info["text_content"] = $smarty->fetch("eval.tpl"); + } + + if (!empty($templates["html"])) { + list($templates["html"], $attachments) = self::extractEmailAttachmentInfo($templates["html"], $form_id, $submission_placeholders); + foreach ($attachments as $attachment_info) { + if (!in_array($attachment_info, $return_info["attachments"])) { + $return_info["attachments"][] = $attachment_info; + } + } + + $smarty->assign("eval_str", $templates["html"]); + foreach ($submission_placeholders as $key => $value) { + // convert any newlines chars to page breaks for any answer fields. Hmm... + if (strpos($key, "ANSWER_") === 0) { + $value = nl2br($value); + } + $smarty->assign($key, $value); + } + + $return_info["html_content"] = $smarty->fetch("eval.tpl"); + } + + // compile the "to" / "from" / "reply-to" recipient list, based on this form submission. Virtually + // everything is already stored in $email_template["recipients"], but needs to be extracted. + // The notable exception is the FORM EMAIL FIELD information: that has to be constructed separately + $return_info["to"] = array(); + $return_info["cc"] = array(); + $return_info["bcc"] = array(); + + foreach ($email_template["recipients"] as $recipient_info) { + $recipient_type_key = $recipient_info["recipient_type"]; + if ($recipient_info["recipient_type"] == "" || $recipient_info["recipient_type"] == "main") { + $recipient_type_key = "to"; + } + if ($recipient_info["recipient_user_type"] == "form_email_field") { + $header_info = self::getFormEmailFieldHeaders($recipient_info["form_email_id"], $submission_info); + $user_recipient = $header_info["recipient_line"]; + $user_first_name = $header_info["first_name"]; + $user_last_name = $header_info["last_name"]; + $user_email = $header_info["email"]; + + $curr_recipient_info = array( + "recipient_line" => $user_recipient, + "name" => "$user_first_name $user_last_name", + "email" => $user_email + ); + } else { + $curr_recipient_info = array( + "recipient_line" => $recipient_info["final_recipient"], + "name" => $recipient_info["final_name"], + "email" => $recipient_info["final_email"] + ); + } + + if (!empty($curr_recipient_info["email"])) { + $return_info[$recipient_type_key][] = $curr_recipient_info; + } + } + + $return_info["from"] = array(); + switch ($email_template["email_from"]) { + case "admin": + $return_info["from"] = array( + "recipient_line" => "{$admin_info["first_name"]} {$admin_info["last_name"]} <{$admin_info["email"]}>", + "name" => "{$admin_info["first_name"]} {$admin_info["last_name"]}", + "email" => $admin_info["email"] + ); + break; + + case "client": + $client_info = Accounts::getAccountInfo($email_template["email_from_account_id"]); + $return_info["from"] = array( + "recipient_line" => "{$client_info["first_name"]} {$client_info["last_name"]} <{$client_info["email"]}>", + "name" => "{$client_info["first_name"]} {$client_info["last_name"]}", + "email" => $client_info["email"] + ); + break; + + case "form_email_field": + $header_info = self::getFormEmailFieldHeaders($email_template["email_from_form_email_id"], $submission_info); + $user_recipient = $header_info["recipient_line"]; + $user_first_name = $header_info["first_name"]; + $user_last_name = $header_info["last_name"]; + $user_email = $header_info["email"]; + $return_info["from"] = array( + "recipient_line" => $user_recipient, + "name" => "$user_first_name $user_last_name", + "email" => $user_email + ); + break; + + case "custom": + $return_info["from"] = array( + "recipient_line" => "{$email_template["custom_from_name"]} <{$email_template["custom_from_email"]}>", + "name" => $email_template["custom_from_name"], + "email" => $email_template["custom_from_email"] + ); + break; + } + + $return_info["reply_to"] = array(); + switch ($email_template["email_reply_to"]) { + case "admin": + $return_info["reply_to"] = array( + "recipient_line" => "{$admin_info["first_name"]} {$admin_info["last_name"]} <{$admin_info["email"]}>", + "name" => "{$admin_info["first_name"]} {$admin_info["last_name"]}", + "email" => $admin_info["email"] + ); + break; + + case "client": + $client_info = Accounts::getAccountInfo($email_template["email_reply_to_account_id"]); + $return_info["reply_to"] = array( + "recipient_line" => "{$client_info["first_name"]} {$client_info["last_name"]} <{$client_info["email"]}>", + "name" => "{$client_info["first_name"]} {$client_info["last_name"]}", + "email" => $client_info["email"] + ); + break; + + case "form_email_field": + $form_email_id = $email_template["email_reply_to_form_email_id"]; + $header_info = self::getFormEmailFieldHeaders($form_email_id, $submission_info); + $user_recipient = $header_info["recipient_line"]; + $user_first_name = $header_info["first_name"]; + $user_last_name = $header_info["last_name"]; + $user_email = $header_info["email"]; + $return_info["reply_to"] = array( + "recipient_line" => $user_recipient, + "name" => "$user_first_name $user_last_name", + "email" => $user_email + ); + break; + + case "custom": + $return_info["reply_to"] = array( + "recipient_line" => "{$email_template["custom_reply_to_name"]} <{$email_template["custom_reply_to_email"]}>", + "name" => $email_template["custom_reply_to_name"], + "email" => $email_template["custom_reply_to_email"] + ); + break; + } + + $return_info["subject"] = General::evalSmartyString($email_template["subject"], $submission_placeholders); + + return array(true, $return_info); + } + + + /** + * Returns a record from the form_email_field table. + * + * @param integer $form_email_id + * @return array + */ + public static function getFormEmailFieldInfo($form_email_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}form_email_fields + WHERE form_email_id = :form_email_id + "); + $db->bind("form_email_id", $form_email_id); + $db->execute(); + + return $db->fetch(); + } + + + /** + * This returns a hash of all email patterns, found in the /global/email_patterns/ folder, sorted + * alphabetically by pattern name. An email pattern is just an example template used for + * quickly populating the HTML and text email content in the the email templates. [I *would* have + * called them "email templates", but that term is already being put to good use, and + * "email template template" is just plain silly]. + * + * @param integer $form_id + */ + public static function getEmailPatterns($form_id) + { + $pattern_folder = realpath(__DIR__ . "/../emails/patterns"); + $email_template_patterns = parse_ini_file("$pattern_folder/patterns.ini", true); + + $placeholders = array(); + $placeholders["fields"] = Fields::getFormFields($form_id, array("include_field_type_info" => true)); + + // get the HTML email patterns + $html_patterns = array(); + $count = 1; + while (true) { + if (!isset($email_template_patterns["html_patterns"]["pattern{$count}_name"])) { + break; + } + + $name = General::evalSmartyString($email_template_patterns["html_patterns"]["pattern{$count}_name"]); + $optgroup = General::evalSmartyString($email_template_patterns["html_patterns"]["pattern{$count}_optgroup"]); + $filename = $email_template_patterns["html_patterns"]["pattern{$count}_file"]; + $content = ""; + + if (is_readable("$pattern_folder/$filename") && is_file("$pattern_folder/$filename")) { + $content = General::evalSmartyString(file_get_contents("$pattern_folder/$filename"), $placeholders); + } + + // if this has both a name and some email content, log it + if (!empty($name) && !empty($content)) { + $html_patterns[] = array( + "pattern_name" => $name, + "optgroup" => $optgroup, + "content" => $content + ); + } + $count++; + } + + // get the text email patterns + $text_patterns = array(); + $count = 1; + while (true) { + if (!isset($email_template_patterns["text_patterns"]["pattern{$count}_name"])) { + break; + } + + $name = General::evalSmartyString($email_template_patterns["text_patterns"]["pattern{$count}_name"]); + $optgroup = General::evalSmartyString($email_template_patterns["text_patterns"]["pattern{$count}_optgroup"]); + $filename = $email_template_patterns["text_patterns"]["pattern{$count}_file"]; + $content = ""; + + if (is_readable("$pattern_folder/$filename") && is_file("$pattern_folder/$filename")) { + $content = General::evalSmartyString(file_get_contents("$pattern_folder/$filename"), $placeholders); + } + + // if this has both a name and some email content, log it + if (!empty($name) && !empty($content)) { + $text_patterns[] = array( + "pattern_name" => $name, + "optgroup" => $optgroup, + "content" => $content + ); + } + $count++; + } + + extract(Hooks::processHookCalls("end", compact("text_patterns", "html_patterns"), array("text_patterns", "html_patterns")), EXTR_OVERWRITE); + + return array("text_patterns" => $text_patterns, "html_patterns" => $html_patterns); + } + + + /** + * Returns all email field info that have been registered for this form. + * + * @param integer $form_id + */ + public static function getEmailFields($form_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}form_email_fields + WHERE form_id = :form_id + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $info = array(); + foreach ($db->fetchAll() as $row) { + $row["email_field_label"] = Fields::getFieldTitleByFieldId($row["email_field_id"]); + $row["first_name_field_label"] = Fields::getFieldTitleByFieldId($row["first_name_field_id"]); + $row["last_name_field_label"] = Fields::getFieldTitleByFieldId($row["last_name_field_id"]); + $info[] = $row; + } + + return $info; + } + + + /** + * Called by administrators; this logs the email settings for a form: namely, which form fields + * correspond to which user information (email, name). This information is used for building the + * email templates. + * + * @param integer $form_id + * @param array $infohash + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function setFieldAsEmailField($form_id, $infohash) + { + $db = Core::$db; + $LANG = Core::$L; + + $email_field_id = isset($infohash["email_field_id"]) ? $infohash["email_field_id"] : ""; + $first_name_field_id = isset($infohash["first_name_field_id"]) ? $infohash["first_name_field_id"] : ""; + $last_name_field_id = isset($infohash["last_name_field_id"]) ? $infohash["last_name_field_id"] : ""; + + $db->query(" + INSERT INTO {PREFIX}form_email_fields (form_id, email_field_id, first_name_field_id, last_name_field_id) + VALUES (:form_id, :email_field_id, :first_name_field_id, :last_name_field_id) + "); + $db->bindAll(array( + "form_id" => $form_id, + "email_field_id" => $email_field_id, + "first_name_field_id" => $first_name_field_id, + "last_name_field_id" => $last_name_field_id + )); + + try { + $db->execute(); + extract(Hooks::processHookCalls("end", compact("form_id", "infohash"), array()), EXTR_OVERWRITE); + return array(true, $LANG["notify_email_fields_updated"]); + } catch (Exception $e) { + return array(false, $LANG["notify_email_fields_not_updated"]); + } + } + + + /** + * Called by administrators on the email configuration page. This unregisters a field or group of fields associated + * with a unique user in the form submission fields. + * + * @param integer $form_email_id + */ + public static function unsetFieldAsEmailField($form_email_id) + { + $LANG = Core::$L; + $db = Core::$db; + + $db->query("DELETE FROM {PREFIX}form_email_fields WHERE form_email_id = :form_email_id"); + $db->bind("form_email_id", $form_email_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}email_template_recipients WHERE form_email_id = :form_email_id"); + $db->bind("form_email_id", $form_email_id); + $db->execute(); + + // update those email templates that reference this form email ID + $db->query(" + UPDATE {PREFIX}email_templates + SET email_from = 'none', + email_from_form_email_id = '' + WHERE email_from_form_email_id = :form_email_id + "); + $db->bind("form_email_id", $form_email_id); + $db->execute(); + + $db->query(" + UPDATE {PREFIX}email_templates + SET email_reply_to = 'none', + email_reply_to_form_email_id = '' + WHERE email_reply_to_form_email_id = :form_email_id + "); + $db->bind("form_email_id", $form_email_id); + $db->execute(); + + extract(Hooks::processHookCalls("end", compact("form_email_id"), array()), EXTR_OVERWRITE); + + return array(true, $LANG["notify_email_field_config_deleted"]); + } + + + /** + * Updates all aspects of an email template. + * + * @param integer $email_id + * @param array $info + */ + public static function updateEmailTemplate($email_id, $info) + { + $LANG = Core::$L; + $db = Core::$db; + + // neat bug. We need to trim out any trailing whitespace from the templates, otherwise they're + // escaped for DB insertion & can't be trimmed out then + $info["text_template"] = trim($info["text_template"]); + $info["html_template"] = trim($info["html_template"]); + + extract(Hooks::processHookCalls("start", compact("email_id", "info"), array("info")), EXTR_OVERWRITE); + + // "Main" tab + $email_template_name = $info["email_template_name"]; + $email_status = $info["email_status"]; + $email_event_trigger = (isset($info["email_event_trigger"]) && !empty($info["email_event_trigger"])) ? join(",", $info["email_event_trigger"]) : ""; + $view_mapping_type = (isset($info["view_mapping_type"])) ? $info["view_mapping_type"] : "all"; + $include_on_edit_submission_page = (isset($info["include_on_edit_submission_page"])) ? $info["include_on_edit_submission_page"] : "no"; + $limit_email_content_to_fields_in_view = (isset($info["limit_email_content_to_fields_in_view"]) && !empty($info["limit_email_content_to_fields_in_view"])) ? $info["limit_email_content_to_fields_in_view"] : null; + + // Recipient's tab + $email_from = $info["email_from"]; + $custom_from_name = isset($info["custom_from_name"]) ? $info["custom_from_name"] : ""; + $custom_from_email = isset($info["custom_from_email"]) ? $info["custom_from_email"] : ""; + $email_reply_to = !empty($info["email_reply_to"]) ? $info["email_reply_to"] : null; + $custom_reply_to_name = isset($info["custom_reply_to_name"]) ? $info["custom_reply_to_name"] : ""; + $custom_reply_to_email = isset($info["custom_reply_to_email"]) ? $info["custom_reply_to_email"] : ""; + $subject = $info["subject"]; + + // figure out the email_from field details + $email_from_account_id = null; + $email_from_form_email_id = null; + if (preg_match("/^client_account_id_(\d+)/", $email_from, $matches)) { + $email_from_account_id = $matches[1]; + $email_from = "client"; + } else if (preg_match("/^form_email_id_(\d+)/", $email_from, $matches)) { + $email_from_form_email_id = $matches[1]; + $email_from = "form_email_field"; + } + + // figure out the email_from field details + $email_reply_to_account_id = null; + $email_reply_to_form_email_id = null; + if (preg_match("/^client_account_id_(\d+)/", $email_reply_to, $matches)) { + $email_reply_to_account_id = $matches[1]; + $email_reply_to = "client"; + } else if (preg_match("/^form_email_id_(\d+)/", $email_reply_to, $matches)) { + $email_reply_to_form_email_id = $matches[1]; + $email_reply_to = "form_email_field"; + } + + // "Email Content" tab + $html_template = $info["html_template"]; + $text_template = $info["text_template"]; + + $db->query(" + UPDATE {PREFIX}email_templates + SET email_template_name = :email_template_name, + email_status = :email_status, + view_mapping_type = :view_mapping_type, + limit_email_content_to_fields_in_view = :limit_email_content_to_fields_in_view, + email_event_trigger = :email_event_trigger, + include_on_edit_submission_page = :include_on_edit_submission_page, + subject = :subject, + email_from = :email_from, + email_from_account_id = :email_from_account_id, + email_from_form_email_id = :email_from_form_email_id, + custom_from_name = :custom_from_name, + custom_from_email = :custom_from_email, + email_reply_to = :email_reply_to, + email_reply_to_account_id = :email_reply_to_account_id, + email_reply_to_form_email_id = :email_reply_to_form_email_id, + custom_reply_to_name = :custom_reply_to_name, + custom_reply_to_email = :custom_reply_to_email, + html_template = :html_template, + text_template = :text_template + WHERE email_id = :email_id + "); + $db->bindAll(array( + "email_template_name" => $email_template_name, + "email_status" => $email_status, + "view_mapping_type" => $view_mapping_type, + "limit_email_content_to_fields_in_view" => $limit_email_content_to_fields_in_view, + "email_event_trigger" => $email_event_trigger, + "include_on_edit_submission_page" => $include_on_edit_submission_page, + "subject" => $subject, + "email_from" => $email_from, + "email_from_account_id" => $email_from_account_id, + "email_from_form_email_id" => $email_from_form_email_id, + "custom_from_name" => $custom_from_name, + "custom_from_email" => $custom_from_email, + "email_reply_to" => $email_reply_to, + "email_reply_to_account_id" => $email_reply_to_account_id, + "email_reply_to_form_email_id" => $email_reply_to_form_email_id, + "custom_reply_to_name" => $custom_reply_to_name, + "custom_reply_to_email" => $custom_reply_to_email, + "html_template" => $html_template, + "text_template" => $text_template, + "email_id" => $email_id + )); + $db->execute(); + + // update the email template edit submission page Views + $db->query("DELETE FROM {PREFIX}email_template_edit_submission_views WHERE email_id = :email_id"); + $db->bind("email_id", $email_id); + $db->execute(); + + $selected_edit_submission_views = isset($info["selected_edit_submission_views"]) ? $info["selected_edit_submission_views"] : array(); + foreach ($selected_edit_submission_views as $view_id) { + $db->query(" + INSERT INTO {PREFIX}email_template_edit_submission_views (email_id, view_id) + VALUES (:email_id, :view_id) + "); + $db->bind("email_id", $email_id); + $db->bind("view_id", $view_id); + $db->execute(); + } + + // update the email template when sent Views + $db->query("DELETE FROM {PREFIX}email_template_when_sent_views WHERE email_id = :email_id"); + $db->bind("email_id", $email_id); + $db->execute(); + + $selected_when_sent_views = isset($info["selected_when_sent_views"]) ? $info["selected_when_sent_views"] : array(); + foreach ($selected_when_sent_views as $view_id) { + $db->query(" + INSERT INTO {PREFIX}email_template_when_sent_views (email_id, view_id) + VALUES (:email_id, :view_id) + "); + $db->bind("email_id", $email_id); + $db->bind("view_id", $view_id); + $db->execute(); + } + + // update the recipient list + $db->query("DELETE FROM {PREFIX}email_template_recipients WHERE email_template_id = :email_id"); + $db->bind("email_id", $email_id); + $db->execute(); + + $recipient_ids = $info["recipients"]; + + foreach ($recipient_ids as $recipient_id) { + $row = $recipient_id; + + // if there's no recipient user type (admin/form_email_field/client/custom), just ignore the row + if (!isset($info["recipient_{$row}_user_type"])) { + continue; + } + + // "" (main), "cc" or "bcc" + $recipient_type = (empty($info["recipient_{$row}_type"])) ? "main" : $info["recipient_{$row}_type"]; + switch ($info["recipient_{$row}_user_type"]) { + case "admin": + $db->query(" + INSERT INTO {PREFIX}email_template_recipients (email_template_id, recipient_user_type, recipient_type) + VALUES (:email_id, 'admin', :recipient_type) + "); + $db->bindAll(array( + "email_id" => $email_id, + "recipient_type" => $recipient_type + )); + $db->execute(); + break; + + case "form_email_field": + $form_email_id = $info["recipient_{$row}_form_email_id"]; + $db->query(" + INSERT INTO {PREFIX}email_template_recipients + (email_template_id, recipient_user_type, recipient_type, form_email_id) + VALUES (:email_id, 'form_email_field', :recipient_type, :form_email_id) + "); + $db->bindAll(array( + "email_id" => $email_id, + "recipient_type" => $recipient_type, + "form_email_id" => $form_email_id + )); + $db->execute(); + break; + + case "client": + $account_id = $info["recipient_{$row}_account_id"]; + $db->query(" + INSERT INTO {PREFIX}email_template_recipients + (email_template_id, recipient_user_type, recipient_type, account_id) + VALUES (:email_id, 'client', :recipient_type, :account_id) + "); + $db->bindAll(array( + "email_id" => $email_id, + "recipient_type" => $recipient_type, + "account_id" => $account_id + )); + $db->execute(); + break; + + case "custom": + $name = isset($info["recipient_{$row}_name"]) ? $info["recipient_{$row}_name"] : ""; + $email = isset($info["recipient_{$row}_email"]) ? $info["recipient_{$row}_email"] : ""; + $db->query(" + INSERT INTO {PREFIX}email_template_recipients + (email_template_id, recipient_user_type, recipient_type, custom_recipient_name, custom_recipient_email) + VALUES (:email_id, 'custom', :recipient_type, :custom_recipient_name, :email) + "); + $db->bindAll(array( + "email_id" => $email_id, + "recipient_type" => $recipient_type, + "custom_recipient_name" => $name, + "email" => $email + )); + $db->execute(); + break; + } + } + + $success = true; + $message = $LANG["notify_email_template_updated"]; + + extract(Hooks::processHookCalls("end", compact("email_id", "info"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Returns an array of hashes. Each hash contains the contents of the email_template_recipients table; i.e. + * the raw information about a particular recipient. For convenience, this function also determines the + * actual name and email of the recipients, returned in "final_name" and "final_email" keys. Also, it returns a + * "final_recipient" containing the complete recipient string, like: + * + * Tom Jones + * + * If the name doesn't exist, that key just returns the email address. ASSUMPTION: All clients and administrator + * MUST have a first name, last name and email address. For form email fields, the final recipient just contains + * the title of the email field (the display value). + * + * This is obviously used for display purposes only, whereas that value for the other recipient types is used both + * for display purposes & in the actual email construction. This seemed an adequate approach because this function + * will never be able to know the individual submission content so it can't construct it properly. + * + * The returned results are ordered by (a) recipient type (main, cc then bcc), then (b) recipient user type + * (admin, client, form_email_field then custom) + * + * @param integer $email_id + * @return array an array of hashes + */ + public static function getEmailTemplateRecipients($form_id, $email_id) + { + $db = Core::$db; + $LANG = Core::$L; + + // now add any recipients for this email template + $db->query(" + SELECT etr.*, a.first_name, a.last_name, a.email + FROM {PREFIX}email_template_recipients etr + LEFT JOIN {PREFIX}accounts a ON a.account_id = etr.account_id + WHERE etr.email_template_id = :email_id + ORDER BY etr.recipient_type, etr.recipient_user_type + "); + $db->bind("email_id", $email_id); + $db->execute(); + + $recipients = array(); + foreach ($db->fetchAll() as $recipient_info) { + + // construct and append the extra keys (final_name, final_email and final_recipient) + switch ($recipient_info["recipient_user_type"]) { + case "admin": + $admin_info = Administrator::getAdminInfo(); + $recipient_info["final_name"] = "{$admin_info["first_name"]} {$admin_info["last_name"]}"; + $recipient_info["final_email"] = $admin_info["email"]; + $recipient_info["final_recipient"] = "{$recipient_info["final_name"]} <{$recipient_info["final_email"]}>"; + break; + + case "client": + $client_info = Accounts::getAccountInfo($recipient_info["account_id"]); + $recipient_info["final_name"] = "{$client_info["first_name"]} {$client_info["last_name"]}"; + $recipient_info["final_email"] = $client_info["email"]; + $recipient_info["final_recipient"] = "{$recipient_info["final_name"]} <{$recipient_info["final_email"]}>"; + break; + + case "form_email_field": + $form_email_field_info = self::getFormEmailFieldInfo($recipient_info["form_email_id"]); + $email_field_id = $form_email_field_info["email_field_id"]; + $recipient_info["final_recipient"] = Fields::getFieldTitleByFieldId($email_field_id); + break; + + case "custom": + $recipient_info["final_name"] = $recipient_info["custom_recipient_name"]; + $recipient_info["final_email"] = $recipient_info["custom_recipient_email"]; + if (!empty($recipient_info["final_name"])) { + $recipient_info["final_recipient"] = "{$recipient_info["final_name"]} <{$recipient_info["final_email"]}>"; + } else { + $recipient_info["final_recipient"] = $recipient_info["final_email"]; + } + break; + } + + $recipients[] = $recipient_info; + } + + return $recipients; + } + + + /** + * This is used on the Edit Submission pages to show the list of email templates which can be emailed + * for the submission-View. + * + * @param integer $form_id + * @param integer $view_id + * @return array + */ + public static function getEditSubmissionEmailTemplates($form_id, $view_id) + { + $db = Core::$db; + + // a bit complicated, but all this query does is return those templates that are specified to be + // displayed for ALL views, or for those that have been mapped to this specific View + $db->query(" + SELECT et.email_id + FROM {PREFIX}email_templates et + WHERE et.email_status = 'enabled' AND + et.form_id = :form_id AND + (et.include_on_edit_submission_page = 'all_views' OR + (et.include_on_edit_submission_page = 'specific_views' + AND EXISTS + (SELECT * + FROM {PREFIX}email_template_edit_submission_views etesv + WHERE et.email_id = etesv.email_id AND + etesv.view_id = :view_id) + ) + ) + "); + $db->bindAll(array( + "form_id" => $form_id, + "view_id" => $view_id + )); + $db->execute(); + + $email_info = array(); + foreach ($db->fetchAll() as $row) { + $email_id = $row["email_id"]; + $email_info[] = self::getEmailTemplate($email_id); + } + + extract(Hooks::processHookCalls("end", compact("view_id", "email_info"), array("email_info")), EXTR_OVERWRITE); + + return $email_info; + } + + + /** + * The main email function for Form Tools. This gets executed on particular events in a submissions life: when + * first placed ("on_submission"), when edited ("on_edit") and when deleted ("on_delete"). This function does + * the horrible job of figuring out precisely what the administrator wants, and sends the email(s) to the + * appropriate recipients. + * + * @param string $event "on_submission", "on_edit", "on_delete" + * @param integer $form_id + * @param integer $submission_id + */ + public static function sendEmails($event, $form_id, $submission_id) + { + $all_form_email_templates = self::getEmailTemplateList($form_id); + + // filter out those templates that aren't for this event + $email_templates = array(); + foreach ($all_form_email_templates as $template_info) { + $events = explode(",", $template_info["email_event_trigger"]); + + if (!in_array($event, $events)) { + continue; + } + + if ($template_info["email_status"] == "disabled") { + continue; + } + + // if this email template has been mapped to or more particular View, make sure the View ID is + // valid & that the submission can be seen in at least one of the Views + if ($template_info["view_mapping_type"] == "specific") { + $view_ids = $template_info["when_sent_view_ids"]; + + $found = false; + foreach ($view_ids as $view_id) { + if (Submissions::checkViewContainsSubmission($form_id, $view_id, $submission_id)) { + $found = true; + break; + } + } + + if (!$found) { + continue; + } + } + + $email_templates[] = $template_info; + } + + // now process each template individually + foreach ($email_templates as $template_info) { + $email_id = $template_info["email_id"]; + Emails::processEmailTemplate($form_id, $submission_id, $email_id); + } + } + + + /** + * This constructs and sends the email from an individual email template for a single form + * submission. + * + * @param integer $form_id + * @param integer $submission_id + * @param integer $email_id + */ + public static function processEmailTemplate($form_id, $submission_id, $email_id) + { + list($success, $email_components) = self::getEmailComponents($form_id, $submission_id, $email_id); + + if (!$success) { + return array(false, "Email components not returned properly (Emails::getEmailComponents)."); + } + + extract(Hooks::processHookCalls("start", compact("form_id", "submission_id", "email_id", "email_components"), array("email_components")), EXTR_OVERWRITE); + + // if Swift Mailer is enabled, send the emails with that + $continue = true; + if (Modules::checkModuleEnabled("swift_mailer")) { + $sm_settings = Modules::getModuleSettings("", "swift_mailer"); + + if (isset($sm_settings["swiftmailer_enabled"]) && $sm_settings["swiftmailer_enabled"] == "yes") { + $swift = Modules::getModuleInstance("swift_mailer"); + list ($success, $message) = $swift->sendEmail($email_components); + $continue = false; + } + } + + // if it was sent (or was attempted to have been sent) by the Swift Mailer module, stop here + if (!$continue) { + return array($success, $message); + } + + $eol = Emails::getEmailEolChar(); + + $recipient_list = array_column($email_components["to"], "recipient_line"); + + $to = join(", ", $recipient_list); + $to = htmlspecialchars_decode($to); + + if (empty($to)) { + return array(false, "No main recipient specified."); + } + + $headers = "MIME-Version: 1.0$eol"; + + if (!empty($email_components["from"])) { + $from = htmlspecialchars_decode($email_components["from"]["recipient_line"]); + $headers .= "From: {$from}$eol"; + } + if (!empty($email_components["reply_to"])) { + $reply_to = htmlspecialchars_decode($email_components["reply_to"]["recipient_line"]); + $headers .= "Reply-to: {$reply_to}$eol"; + } + if (!empty($email_components["cc"])) { + $cc_list = array_column($email_components["cc"], "recipient_line"); + $cc = join(", ", $cc_list); + $cc = htmlspecialchars_decode($cc); + $headers .= "Cc: {$cc}$eol"; + } + if (!empty($email_components["bcc"])) { + $bcc_list = array_column($email_components["bcc"], "recipient_line"); + $bcc = join(", ", $bcc_list); + $bcc = htmlspecialchars_decode($bcc); + $headers .= "Bcc: {$bcc}$eol"; + } + + $message = ""; + $html_content = isset($email_components["html_content"]) ? $email_components["html_content"] : ""; + $text_content = isset($email_components["text_content"]) ? $email_components["text_content"] : ""; + $html_content = trim($html_content); + $text_content = trim($text_content); + + // if there's no TO line or there's no email content for either types, we can't send the email + if (empty($html_content) && empty($text_content)) { + return array(false, "No text or HTML email content specified"); + } + if (!empty($html_content) && !empty($text_content)) { + $headers .= Emails::getMultipartMessage($html_content, $text_content, $eol); + } else if (!empty($html_content)) { + $message = $html_content; + $headers .= "Content-type: text/html; charset=UTF-8"; + } else if (!empty($text_content)) { + $message = $text_content; + $headers .= "Content-type: text/plain; charset=UTF-8"; + } + + $subject = $email_components["subject"]; + + // send the email + $email_sent = @mail("$to", $subject, $message, $headers); + if ($email_sent) { + return array(true, ""); + } else { + return array(false, "The mail() function failed to send the email."); + } + } + + + // ----------------------------------------------------------------------------------------------------------------- + + + /** + * Pieces together the main email content from the text and HTML content, generated separately by + * {@link https://formtools.org/developerdoc/1-4-6/Emails/_code---emails.php.html#function_parse_template + * _parse_template}. + * + * @param string $HTML_content The HTML section of the email. + * @param string $text_content The text section of the email. + * @param string $eol_content The end-of-line character for this system. + */ + private static function getMultipartMessage($HTML_content, $text_content, $eol) + { + $boundary = md5(time()); + + $content = "Content-Type: multipart/alternative; boundary = $boundary$eol" + . "\n--$boundary$eol" + . "Content-type: text/plain; charset=UTF-8$eol" + . $text_content + . "\n--$boundary$eol" + . "Content-type: text/html; charset=UTF-8$eol" + . $HTML_content; + + return $content; + } + + + /** + * Helper function to return the newline character for emails, appropriate for this user's system. + * + * @return string A string of the appropriate end-of-line character. + */ + private static function getEmailEolChar() + { + $eol = "\n"; + if (strtoupper(substr(PHP_OS, 0, 3) == 'WIN')) { + $eol = "\r\n"; + } else if (strtoupper(substr(PHP_OS, 0, 3) == 'MAC')) { + $eol = "\r"; + } + return $eol; + } + + + /** + * Returns the email headers, constructed from the contents of the $info parameter. Note: this just + * handles the From, Reply-to, cc and bcc headers: the encoding type (multipart, etc) is handled elsewhere. + * + * @param array $info a hash of values: + * eol - the end of line character (required) + * from, reply_to, cc, bcc + */ + private static function getEmailHeaders($info) + { + $eol = $info["eol"]; + + $headers = "MIME-Version: 1.0"; + + if (isset($info["from"]) && !empty($info["from"])) + $headers .= "{$eol}From: {$info["from"]}"; + if (isset($info["reply_to"]) && !empty($info["reply_to"])) + $headers .= "{$eol}Reply-to: {$info["reply_to"]}"; + if (isset($info["cc"]) && !empty($info["cc"])) + $headers .= "{$eol}Cc: {$info["cc"]}"; + if (isset($info["bcc"]) && !empty($info["bcc"])) + $headers .= "{$eol}Bcc: {$info["bcc"]}"; + + $headers .= $eol; + + return $headers; + } + + + /** + * Determines the first name, last name and email address used the email headers based on the + * form and submission info. This can be used for the "from", "reply-to", or "to" fields. + * + * @param array $form_info A hash containing all the form information. + * @param array $submission_info A hash containing all the submission information. + * @return array string the email header + */ + private static function getFormEmailFieldHeaders($form_email_id, $submission_info) + { + $form_email_field_info = self::getFormEmailFieldInfo($form_email_id); + + // retrieve the user's name and email address from the form submission + $first_name_field_id = $form_email_field_info["first_name_field_id"]; + $last_name_field_id = $form_email_field_info["last_name_field_id"]; + $email_field_id = $form_email_field_info["email_field_id"]; + + $submission_first_name = ""; + $submission_last_name = ""; + $submission_email = ""; + + foreach ($submission_info as $row) { + if (!empty($first_name_field_id)) { + if ($row["field_id"] == $first_name_field_id) { + $submission_first_name = trim($row["content"]); + } + } + if (!empty($last_name_field_id)) { + if ($row["field_id"] == $last_name_field_id) { + $submission_last_name = trim($row["content"]); + } + } + // email + if ($row["field_id"] == $email_field_id) { + $submission_email = trim($row["content"]); + } + } + + // now build the header string + $name = array(); + if (!empty($submission_first_name)) { + $name[] = $submission_first_name; + } + if (!empty($submission_last_name)) { + $name[] = $submission_last_name; + } + + $recipient_line = join(" ", $name); + + if (empty($recipient_line) && !empty($submission_email)) { + $recipient_line = $submission_email; + } else if (!empty($submission_email)) { + $recipient_line .= " <$submission_email>"; + } + + // return EVERYTHING + return array( + "recipient_line" => $recipient_line, + "first_name" => $submission_first_name, + "last_name" => $submission_last_name, + "email" => $submission_email + ); + } + + + /** + * This function is tightly coupled with Emails::getEmailComponents and has gotten increasingly more awful as + * time passed. It examines the content of an email template and detects any field and file attachments. + * Field attachments are files that have been uploaded through a form field; file attachments are just files + * on the server that want to be sent out. It then returns the updated email template (i.e. minus the + * attachment string) and information about the attachment (file name, location, mimetype) for use by the + * emailing function (only Swift Mailer module at this time). + * + * @param string $template_str the email template (HTML or text) + * @param integer $form_id + * @param array $submission_placeholders + * @return array + */ + private static function extractEmailAttachmentInfo($template_str, $form_id, $submission_placeholders) + { + $root_dir = Core::getRootDir(); + + // see if there are any filename placeholders (i.e. uploaded files in this submission) + $file_field_name_to_filename_hash = array(); + foreach ($submission_placeholders as $placeholder => $value) { + if (!preg_match("/^FILENAME_/", $placeholder)) { + continue; + } + $field_name = preg_replace("/^FILENAME_/", "", $placeholder); + $file_field_name_to_filename_hash[$field_name] = $value; + } + + $attachment_info = array(); + if (!empty($file_field_name_to_filename_hash)) { + // if there are any fields marked as attachments, store them and remove the attachment string + $field_attachments_regexp = '/\{\$attachment\s+field=("|\')(.+)("|\')\}/'; + + if (preg_match_all($field_attachments_regexp, $template_str, $matches)) { + foreach ($matches[2] as $field_name) { + $field_id = Fields::getFormFieldIdByFieldName($field_name, $form_id); + if (!empty($field_name) && array_key_exists($field_name, $file_field_name_to_filename_hash)) { + $field_settings = Fields::getFieldSettings($field_id); + $file_upload_dir = $field_settings["folder_path"]; + $file_and_path = "$file_upload_dir/{$file_field_name_to_filename_hash[$field_name]}"; + + if (is_file($file_and_path)) { + $info = array( + "field_name" => $field_name, + "file_and_path" => $file_and_path, + "filename" => $file_field_name_to_filename_hash[$field_name], + "mimetype" => mime_content_type($file_and_path) + ); + $attachment_info[] = $info; + } + } + } + + $template_str = preg_replace($field_attachments_regexp, "", $template_str); + } + } + + $file_attachments_regexp = '/\{\$attachment\s+file=("|\')(.+)("|\')\}/'; + if (preg_match_all($file_attachments_regexp, $template_str, $matches)) { + foreach ($matches[2] as $file_and_relative_path) { + if (is_file("$root_dir/$file_and_relative_path")) { + $pathinfo = pathinfo($file_and_relative_path); + $file_name = $pathinfo["basename"]; + + $info = array( + "file_and_path" => "$root_dir/$file_and_relative_path", + "filename" => $file_name + ); + $attachment_info[] = $info; + } + } + $template_str = preg_replace($file_attachments_regexp, "", $template_str); + } + + $file_attachments_regexp = '/\{\$attachment\s+fieldvalue=("|\')(.+)("|\')\}/'; + if (preg_match_all($file_attachments_regexp, $template_str, $matches)) { + foreach ($matches[2] as $file_and_relative_path) { + $file_and_relative_path = General::evalSmartyString("{\$" . $file_and_relative_path . "}", $submission_placeholders); + + if (is_file("$root_dir/$file_and_relative_path")) { + $pathinfo = pathinfo($file_and_relative_path); + $file_name = $pathinfo["basename"]; + + $info = array( + "file_and_path" => "$root_dir/$file_and_relative_path", + "filename" => $file_name + ); + $attachment_info[] = $info; + } + } + $template_str = preg_replace($file_attachments_regexp, "", $template_str); + } + + return array($template_str, $attachment_info); + } + + + /** + * Strongly coupled with the Emails::getEmailComponents method, this does the legwork to find out exactly what + * text and HTML (Smarty) content should be in the emails. Returns BOTH, regardless of whether the template is + * only using one. + * + * @param integer $form_id + * @param integer $submission_id + * @param array $email_template + * @param boolean $is_test + * @param array $test_settings + * @return array + */ + private static function getEmailTemplateContent($form_id, $submission_id, $email_template, $is_test, $test_settings) + { + $db = Core::$db; + $LANG = Core::$L; + + // if this is a test, find out what information the administrator wants + $templates = array( + "text" => "", + "html" => "", + "submission_id" => $submission_id + ); + + if ($is_test) { + $test_email_format = $test_settings["test_email_format"]; + $test_email_data_source = $test_settings["test_email_data_source"]; + $test_email_submission_id = $test_settings["test_email_submission_id"]; + + + // get the submission ID + switch ($test_email_data_source) { + case "random_submission": + // if this email template has been mapped to only be sent for one or more Views, + // find a submission that fits into the first in the list + $where_clause = ""; + if (!empty($email_template["when_sent_view_ids"])) { + $sql_clauses = ViewFilters::getViewFilterSql($email_template["when_sent_view_ids"][0]); + if (!empty($sql_clauses)) { + $where_clause = "WHERE (" . join(" AND ", $sql_clauses) . ") "; + } + } + + $db->query(" + SELECT submission_id + FROM {PREFIX}form_$form_id + $where_clause + ORDER BY rand() LIMIT 1 + "); + $db->execute(); + $submission_id = $db->fetch(PDO::FETCH_COLUMN); + break; + + case "submission_id": + $db->query(" + SELECT count(*) + FROM {PREFIX}form_$form_id + WHERE submission_id = :submission_id + "); + $db->bind("submission_id", $test_email_submission_id); + $db->execute(); + + $count = $db->fetch(PDO::FETCH_COLUMN); + if ($count != 1) { + return array(false, $LANG["notify_submission_id_not_found"]); + } else { + $submission_id = $test_email_submission_id; + } + break; + } + + $templates["submission_id"] = $submission_id; + + // determine what templates to display + switch ($test_email_format) { + case "both": + $templates["html"] = $email_template["html_template"]; + $templates["text"] = $email_template["text_template"]; + break; + case "text": + $templates["text"] = $email_template["text_template"]; + break; + case "html": + $templates["html"] = $email_template["html_template"]; + break; + } + + // for non-test submissions, always grab both the HTML and text templates + } else { + $templates["html"] = $email_template["html_template"]; + $templates["text"] = $email_template["text_template"]; + } + + return $templates; + } + +} + diff --git a/global/code/Errors.class.php b/global/code/Errors.class.php new file mode 100644 index 00000000..c7cf9482 --- /dev/null +++ b/global/code/Errors.class.php @@ -0,0 +1,158 @@ + 100, + "101" => 101, + // 102, 103, 104, 105 removed in Form Tools 3 + "106" => 106 + ); + + public static $headerHTML =<<< END + + + + Error + + + +
+END; + public static $footerHTML = "
"; + + + /** + * This should be used on all database queries that we think should _always_ work. It completely halts the + * process and shows an Uh-oh page. This was added in Form Tools 3. Before that, the vast majority of database + * queries weren't error handled. + */ + public static function queryError($class, $file, $line, $error) + { + $header = self::$headerHTML; + $footer = self::$footerHTML; + + echo <<< END + {$header} +

Uh-oh.

+

+ The system encountered a serious database error. This should not occur. Please report these details + on github. +

+
    +
  • Class: {$class}
  • +
  • File: {$file}
  • +
  • Line: {$line}
  • +
  • Error: {$error}
  • +
+{$footer} +END; + exit; + } + + /** + * This is used for major errors, like no DB connection. All it does is output the error string with no other + * dependencies - not even language strings. + * + * @param string $error + */ + public static function majorError($error) { + $header = self::$headerHTML; + $footer = self::$footerHTML; + + echo <<< END + {$header} +

Uh-oh.

+ {$error} + {$footer} +END; + } + + + public static function showErrorCode($error_code, $debugging = "") + { + Themes::displayPage("error.tpl", array( + "message_type" => "error", + "error_code" => $error_code, + "debugging" => !empty($debugging) ? $debugging : "No further information" + )); + exit; + } + + + /** + * This function was added in 1.4.7 to handle serious, show-stopper errors instead of the former + * hardcoded die() function calls. This stores the error in sessions and redirects to error.php, which + * decides how the error is displayed based on the error_type ("notify": for "softer" + * errors like the install folder hasn't been deleted; "error" for more serious problems) and on + * whether or not the global $g_debug option is enabled. If it is, the error.php page displays + * the nitty-gritty errors returned by the server / database. + * + * @param string $error_message the user-friendly version of the error. + * @param string $debug_details the error message returned by the server / database. + * @param string $error_type either "error" or "notify" + */ + public static function handleError($error_message, $debug_details = "", $error_type = "error") + { + $root_url = Core::getRootUrl(); + + // this is for NEW installations. For new installations the $g_root_url isn't set, so we want to + // redirect to the error page in the current form tools folder +// if (!empty($root_url)) { +// $root_url = "$root_url/"; +// } + + Sessions::set("last_error", $error_message); + Sessions::set("last_error_debug", $debug_details); + Sessions::set("last_error_type", $error_type); + + General::redirect("$root_url/error.php"); + } + +} diff --git a/global/code/FieldOptions.class.php b/global/code/FieldOptions.class.php new file mode 100644 index 00000000..cf56d801 --- /dev/null +++ b/global/code/FieldOptions.class.php @@ -0,0 +1,41 @@ +query(" + INSERT INTO {PREFIX}field_options (list_id, list_group_id, option_order, + option_value, option_name, is_new_sort_group) + VALUES (:list_id, :list_group_id, :option_order, :option_value, :option_name, :is_new_sort_group) + "); + $db->bindAll(array( + "list_id" => $list_id, + "list_group_id" => $list_group_id, + "option_order" => $order, + "option_value" => $value, + "option_name" => $name, + "is_new_sort_group" => $is_new_sort_group + )); + $db->execute(); + } + + public static function deleteByListId($list_id) + { + Core::$db->query(" + DELETE FROM {PREFIX}field_options + WHERE list_id = :list_id + "); + Core::$db->bind("list_id", $list_id); + Core::$db->execute(); + } + +} diff --git a/global/code/FieldSettings.class.php b/global/code/FieldSettings.class.php new file mode 100644 index 00000000..91525afe --- /dev/null +++ b/global/code/FieldSettings.class.php @@ -0,0 +1,56 @@ +query(" + SELECT setting_value + FROM {PREFIX}field_settings + WHERE field_id = :field_id AND + setting_id = :setting_id + "); + $db->bindAll(array( + "field_id" => $field_id, + "setting_id" => $setting_id + )); + $db->execute(); + + return $db->fetch(PDO::FETCH_COLUMN); + } + + public static function addSetting($field_id, $setting_id, $setting_value) + { + $db = Core::$db; + + $db->query(" + INSERT INTO {PREFIX}field_settings (field_id, setting_id, setting_value) + VALUES (:field_id, :setting_id, :setting_value) + "); + $db->bindAll(array( + "field_id" => $field_id, + "setting_id" => $setting_id, + "setting_value" => $setting_value + )); + $db->execute(); + } + + + public static function deleteSettings($field_id) + { + $db = Core::$db; + + $db->query("DELETE FROM {PREFIX}field_settings WHERE field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + } + +} diff --git a/global/code/FieldSizes.class.php b/global/code/FieldSizes.class.php new file mode 100644 index 00000000..1eb48262 --- /dev/null +++ b/global/code/FieldSizes.class.php @@ -0,0 +1,96 @@ + array("lang_key" => "phrase_1char", "sql" => "VARCHAR(1)"), + "2chars" => array("lang_key" => "phrase_2chars", "sql" => "VARCHAR(2)"), + "tiny" => array("lang_key" => "phrase_size_tiny", "sql" => "VARCHAR(5)"), + "small" => array("lang_key" => "phrase_size_small", "sql" => "VARCHAR(20)"), + "medium" => array("lang_key" => "phrase_size_medium", "sql" => "VARCHAR(255)"), + "large" => array("lang_key" => "phrase_size_large", "sql" => "TEXT"), + "very_large" => array("lang_key" => "phrase_size_very_large", "sql" => "MEDIUMTEXT"), + ); + + + public static function get() { + return self::$fieldSizes; + } + + /** + * Returns an array of available database column sizes for a field type. + * + * @param integer $field_type_id + */ + public static function getFieldTypeSizes($field_type_id) + { + $db = Core::$db; + $db->query(" + SELECT compatible_field_sizes + FROM {PREFIX}field_types + WHERE field_type_id = :field_type_id + "); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + $result = $db->fetch(PDO::FETCH_COLUMN); + + return explode(",", $result); + } + + + /** + * Helper function to output an object containing the acceptable field sizes for all field types. This + * assumes the object namespace is already defined. + * + * @param string $namespace the object namespace + */ + public static function generateFieldTypeSizesMapJs($namespace = "page_ns") + { + $db = Core::$db; + + $db->query(" + SELECT field_type_id, compatible_field_sizes + FROM {PREFIX}field_types + "); + $db->execute(); + + $js_rows = array($namespace . ".field_types = {}"); + foreach ($db->fetchAll() as $row) { + $js_rows[] = "$namespace" . ".field_types[\"field_type_{$row["field_type_id"]}\"] = \"" . $row["compatible_field_sizes"] . "\""; + } + + return implode(";\n", $js_rows); + } + + + /** + * The counterpart function to FieldSizes::generateFieldTypeSizesMapJs: this generate a hash of field size keys (1char, tiny, etc) + * to their label (in the appropriate language). + * + * @param string $namespace + * @return string + */ + public static function generateFieldTypeSizeLabels($namespace = "page_ns") + { + $LANG = Core::$L; + + $js_rows = array(); + foreach (self::$fieldSizes as $key => $info) { + $js_rows[] = " \"$key\": \"" . $LANG[$info["lang_key"]] . "\""; + } + reset(self::$fieldSizes); + + return $namespace . ".field_sizes = {\n" . implode(",\n", $js_rows) . "\n}"; + } + +} diff --git a/global/code/FieldTypes.class.php b/global/code/FieldTypes.class.php new file mode 100644 index 00000000..22a09936 --- /dev/null +++ b/global/code/FieldTypes.class.php @@ -0,0 +1,1972 @@ + + * @package 3-0-x + */ + + +namespace FormTools; + +use PDO, Exception; + + +class FieldTypes +{ + + /** + * Web browsers have built-in support various field types - inputs, dropdowns, radios etc. The semantics of + * the field markup is "hardcoded" - i.e. they require you to enter certain characters to create something that + * has meaning to the browser - to signify that you want an input field. Form Tools field types are a totally + * separate layer above this: you can create field types for any old thing - google maps fields, date fields, + * plain text fields etc. These may or may not map to "actual" form field types understood natively by the + * browser. But in order for the Add Form process to intelligently map the raw form field types to a Form + * Tools field type, we need to provide a mapping between the two. + * + * For instance, if you create a Date field type within Form Tools, it's really just a + * field in your original form that's enhanced with the jQuery calendar within FT. However, in order to + * provide the user with the option of *choosing* the Date field type for an input field during the Add + * External Form process, this mapping is necessary. + */ + public static $rawFieldTypes = array( + "textbox" => "word_textbox", + "textarea" => "word_textarea", + "password" => "word_password", + "radio-buttons" => "phrase_radio_buttons", + "checkboxes" => "word_checkboxes", + "select" => "word_dropdown", + "multi-select" => "phrase_multi_select_dropdown", + "file" => "word_file" + ); + + // pity this has to be hardcoded... but right now the field setting options don't have their own unique + // identifiers + public static $defaultDatetimeFormat = "datetime:yy-mm-dd|h:mm TT|ampm`true"; + + + /** + * Returns a hash of field_type_id => field type name. + * @return array + */ + public static function getFieldTypeNames() + { + Core::$db->query(" + SELECT field_type_id, field_type_name + FROM {PREFIX}field_types + WHERE is_enabled = 'yes' + "); + Core::$db->execute(); + + $info = array(); + foreach (Core::$db->fetchAll() as $row) { + $info[$row["field_type_id"]] = General::evalSmartyString($row["field_type_name"]); + } + + return $info; + } + + + /** + * Returns an array used for populating Field Type dropdowns. This returns an array with the following + * structure: + * + * [ + * [ + * "group": [ ... ] + * "field_types": [ ... ] + * ], + * ... + * ] + */ + public static function getGroupedFieldTypes($enabled_only = true) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}list_groups + WHERE group_type = 'field_types' + ORDER BY list_order + "); + $db->execute(); + + $info = array(); + foreach ($db->fetchAll() as $row) { + $group_id = $row["group_id"]; + $enabled_clause = ($enabled_only) ? "AND is_enabled = 'yes'" : ""; + $db->query(" + SELECT * + FROM {PREFIX}field_types + WHERE group_id = :group_id + $enabled_clause + ORDER BY list_order + "); + $db->bind("group_id", $group_id); + $db->execute(); + + $field_types = array(); + $list = $db->fetchAll(); + foreach ($list as $field_type_info) { + $field_type_id = $field_type_info["field_type_id"]; + $field_type_info["settings"] = FieldTypes::getFieldTypeSettingsList($field_type_id); + + $db->query(" + SELECT * + FROM {PREFIX}field_type_validation_rules + WHERE field_type_id = :field_type_id + ORDER BY list_order + "); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + + $field_type_info["validation"] = $db->fetchAll(); + $field_types[] = $field_type_info; + } + $curr_group = array( + "group" => $row, + "field_types" => $field_types + ); + $info[] = $curr_group; + } + + return $info; + } + + + /** + * Returns all field type groups in the database (including ones with no field types in them). It + * also returns a num_field_types key containing the number of field types in each group. + * @return array [group ID] => group name + */ + public static function getFieldTypeGroups() + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}list_groups + WHERE group_type = 'field_types' + ORDER BY list_order + "); + $db->execute(); + $rows = $db->fetchAll(); + + // inefficient + $info = array(); + foreach ($rows as $row) { + $db->query("SELECT count(*) FROM {PREFIX}field_types WHERE group_id = :group_id"); + $db->bind("group_id", $row["group_id"]); + $db->execute(); + + $row["num_field_types"] = $db->fetch(PDO::FETCH_COLUMN); + $info[] = $row; + } + + return $info; + } + + + /** + * Returns info about a field type. + * @param integer $field_type_id + * @param boolean $return_all_info + */ + public static function getFieldType($field_type_id, $return_all_info = false) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}field_types + WHERE field_type_id = :field_type_id + "); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + $info = $db->fetch(); + + if ($return_all_info) { + $info["settings"] = self::getFieldTypeSettings($field_type_id, true); + $info["validation"] = self::getFieldTypeValidationRules($field_type_id); + } + + return $info; + } + + + // TODO memoize this! Easy win. + public static function getFieldTypeIdByIdentifier($identifier) + { + $db = Core::$db; + + $db->query(" + SELECT field_type_id + FROM {PREFIX}field_types + WHERE field_type_identifier = :identifier + "); + $db->bind("identifier", $identifier); + $db->execute(); + + return $db->fetch(PDO::FETCH_COLUMN); + } + + + /** + * This finds out the field type ID for a particular field. + * @param integer $field_id + * @return integer the field type ID + */ + public static function getFieldTypeId($field_id) + { + Core::$db->query(" + SELECT field_type_id + FROM {PREFIX}form_fields + WHERE field_id = :field_id + "); + Core::$db->bind("field_id", $field_id); + Core::$db->execute(); + + $result = Core::$db->fetch(); + + return $result["field_type_id"]; + } + + + /** + * Returns all information about a field type settings for a field type, as identified by its + * field type identifier string. + * + * @param integer $field_type_id + * @param string $field_type_setting_identifier + * @return array + */ + public static function getFieldTypeSettingByIdentifier($field_type_id, $field_type_setting_identifier) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}field_type_settings + WHERE field_type_id = :field_type_id AND + field_setting_identifier = :field_type_setting_identifier + "); + $db->bindAll(array( + "field_type_id" => $field_type_id, + "field_type_setting_identifier" => $field_type_setting_identifier + )); + $db->execute(); + + $field_setting_info = $db->fetch(); + + if (!empty($field_setting_info)) { + $db->query(" + SELECT * + FROM {PREFIX}field_type_setting_options + WHERE setting_id = :setting_id + ORDER BY option_order + "); + $db->bind("setting_id", $field_setting_info["setting_id"]); + $db->execute(); + + $options = array(); + foreach ($db->fetchAll() as $row) { + $options[] = array( + "option_text" => $row["option_text"], + "option_value" => $row["option_value"], + "option_order" => $row["option_order"], + "is_new_sort_group" => $row["is_new_sort_group"] + ); + } + $field_setting_info["options"] = $options; + } + + return $field_setting_info; + } + + + /** + * Returns the setting ID by its identifier. + * + * @param integer $field_type_id + * @param string $field_type_setting_identifier + * @return integer + */ + public static function getFieldTypeSettingIdByIdentifier($field_type_id, $field_type_setting_identifier) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}field_type_settings + WHERE field_type_id = :field_type_id AND + field_setting_identifier = :field_type_setting_identifier + "); + $db->bindAll(array( + "field_type_id" => $field_type_id, + "field_type_setting_identifier" => $field_type_setting_identifier + )); + $db->execute(); + + $field_setting_info = $db->fetch(); + + return (!empty($field_setting_info)) ? $field_setting_info["setting_id"] : ""; + } + + + /** + * Returns all settings for a field type, including the options - if requested. + * + * The previous function should be deprecated in favour of this. + * + * @param mixed $field_type_id_or_ids the integer or array + * @param boolean $return_options + */ + public static function getFieldTypeSettings($field_type_id_or_ids, $return_options = false) + { + $db = Core::$db; + if (empty($field_type_id_or_ids)) { + return array(); + } + + if (is_array($field_type_id_or_ids)) { + $field_type_id_str = implode(",", $field_type_id_or_ids); + $return_one_field_type = false; + } else { + $field_type_id_str = $field_type_id_or_ids; + $return_one_field_type = true; + } + + $db->query(" + SELECT * + FROM {PREFIX}field_type_settings + WHERE field_type_id IN ($field_type_id_str) + ORDER BY list_order + "); + $db->execute(); + + $info = array(); + foreach ($db->fetchAll() as $row) { + $field_type_id = $row["field_type_id"]; + $setting_id = $row["setting_id"]; + + if ($return_options) { + $db->query(" + SELECT * + FROM {PREFIX}field_type_setting_options + WHERE setting_id = :setting_id + ORDER BY option_order + "); + $db->bind("setting_id", $setting_id); + $db->execute(); + + $options = array(); + foreach ($db->fetchAll() as $option_row) { + $options[] = array( + "option_text" => $option_row["option_text"], + "option_value" => $option_row["option_value"], + "option_order" => $option_row["option_order"], + "is_new_sort_group" => $option_row["is_new_sort_group"] + ); + } + $row["options"] = $options; + } + + // for backward compatibility + if ($return_one_field_type) { + $info[] = $row; + } else { + if (!array_key_exists($field_type_id, $info)) { + $info[$field_type_id] = array(); + } + $info[$field_type_id][] = $row; + } + } + + return $info; + } + + + public static function getFieldTypeSetting($setting_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}field_type_settings + WHERE setting_id = :setting_id + "); + $db->bind("setting_id", $setting_id); + $db->execute(); + + $setting = $db->fetch(); + + $db->query(" + SELECT * + FROM {PREFIX}field_type_setting_options + WHERE setting_id = :setting_id + ORDER BY option_order ASC + "); + $db->bind("setting_id", $setting_id); + $db->execute(); + + $setting["options"] = $db->fetchAll(); + + return $setting; + } + + + /** + * Used on the Edit Fields page to generate the list of settings & setting-options for all field types. This + * is used to actual create the appropriate markup in the Edit Fields dialog window. Generates the following + * data structure: + * + * TODO how many queries?! This should be refactored. + * + * page_ns.field_settings["field_type_X"] = [ + * { + * setting_id: X, + * field_label: "", + * field_type: "textbox", + * field_orientation: "", + * options: [ + * { + * value: "", + * text: "" + * }, + * ... + * ] + * }, + * ... + * ] + */ + public static function generateFieldTypeSettingsJs($params = array()) + { + $db = Core::$db; + + $options = array_merge(array( + "namespace" => "page_ns", + "js_key" => "field_type_id" + ), $params); + + $namespace = $options["namespace"]; + $js_key = $options["js_key"]; + + $minimize = true; + $delimiter = "\n"; + if ($minimize) { + $delimiter = ""; + } + + $db->query(" + SELECT DISTINCT field_type_id + FROM {PREFIX}field_type_settings + "); + $db->execute(); + $field_type_ids = $db->fetchAll(PDO::FETCH_COLUMN); + + $field_type_id_to_identifier_map = self::getFieldTypeIdToIdentifierMap(); + $curr_js = array("{$options["namespace"]}.field_settings = {};"); + + $field_setting_rows = array(); + foreach ($field_type_ids as $field_type_id) { + $settings = FieldTypes::getFieldTypeSettingsList($field_type_id); + + $settings_js = array(); + foreach ($settings as $settings_row) { + $setting_id = $settings_row["setting_id"]; + $field_label = General::evalSmartyString($settings_row["field_label"]); + $field_setting_identifier = $settings_row["field_setting_identifier"]; + $field_type = $settings_row["field_type"]; + $default_value = $settings_row["default_value"]; + $field_orientation = $settings_row["field_orientation"]; + + // now one more nested query (!!) to get all the options for this field type setting + $db->query(" + SELECT option_text, option_value + FROM {PREFIX}field_type_setting_options + WHERE setting_id = :setting_id + ORDER BY option_order + "); + $db->bind("setting_id", $setting_id); + $db->execute(); + + $options = array(); + foreach ($db->fetchAll() as $options_row) { + $value = $options_row["option_value"]; + $text = General::evalSmartyString($options_row["option_text"]); + $options[] = "{ value: \"$value\", text: \"$text\" }"; + } + + $options_js = implode(",$delimiter", $options); + if (!empty($options_js)) { + $options_js = "\n$options_js\n "; + } + + $settings_js[] = <<< END + { setting_id: $setting_id, field_label: "$field_label", field_setting_identifier: "$field_setting_identifier", field_type: "$field_type", default_value: "$default_value", field_orientation: "$field_orientation", options: [$options_js] } +END; + } + + if ($js_key == "field_type_id") { + $curr_js[] = "{$namespace}.field_settings[\"field_type_$field_type_id\"] = ["; + } else { + $field_type_identifier = $field_type_id_to_identifier_map[$field_type_id]; + $curr_js[] = "{$namespace}.field_settings[\"$field_type_identifier\"] = ["; + } + + $curr_js[] = implode(",$delimiter", $settings_js); + $curr_js[] = "];"; + } + + $field_setting_rows[] = implode("$delimiter", $curr_js); + + return implode("$delimiter", $field_setting_rows); + } + + + /** + * This function returns a hash containing usage information about a field type. The hash is + * structured like so: + * + * "total_num_fields" => X (the number + * "usage_by_form" => array ( + * array("form_name" => "...", form_id => X, "num_fields" => Y), + * array("form_name" => "...", form_id => X, "num_fields" => Z) + * ) + * + * @param integer $field_type + * @return array + * + * Not used. + */ + public static function getFieldTypeUsage($field_type_id) + { + $db = Core::$db; + + // grr! This should be a single query as the next + $db->query("SELECT DISTINCT form_id FROM {PREFIX}form_fields WHERE field_type_id = :field_type_id"); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + $form_ids = $db->fetchAll(PDO::FETCH_COLUMN); + + $info = array(); + foreach ($form_ids as $form_id) { + $db->query(" + SELECT count(*) + FROM {PREFIX}form_fields + WHERE form_id = :form_id AND + field_type_id = :field_type_id + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_type_id" => $field_type_id + )); + $db->execute(); + + $info[] = array( + "form_id" => $form_id, + "form_name" => Forms::getFormName($form_id), + "num_fields" => $db->fetch(PDO::FETCH_COLUMN) + ); + } + + return $info; + } + + + /** + * Used in the Add External Form process. This generates a JS object that maps "raw" field types to those + * field types specified in the Custom Field module. This allows the script to provide a list of appropriate + * field types for each form field, from which the user can choose. + * + * Any fields that aren't mapped to a "raw" field won't get listed here. They can be used when editing forms, + * but not when initially adding them. Also, for Option List fields (checkboxes, radios, dropdowns, multi-selects), + * this function ONLY returns those custom fields that specify an Option List. Without it, the user wouldn't be + * able to map the options in their form to an Option List associated with a field type. + * + * @return string a JS object + */ + public static function getRawFieldTypesJs($namespace = "page_ns") + { + $field_types = FieldTypes::get(); + + $mapped = array(); + foreach (self::$rawFieldTypes as $raw_field_type => $field_type_label) { + $curr_mapped_field_types = array(); + + foreach ($field_types as $field_type_info) { + if ($field_type_info["raw_field_type_map"] != $raw_field_type) { + continue; + } + + if (in_array($raw_field_type, array("radio-buttons", "checkboxes", "select", "multi-select"))) { + if (empty($field_type_info["raw_field_type_map_multi_select_id"])) { + continue; + } + } + + $curr_mapped_field_types[] = array( + "field_type_id" => $field_type_info["field_type_id"], + "field_type_name" => General::evalSmartyString($field_type_info["field_type_name"]), + "compatible_field_sizes" => $field_type_info["compatible_field_sizes"], + "raw_field_type_map_multi_select_id" => $field_type_info["raw_field_type_map_multi_select_id"] + ); + } + + $mapped[$raw_field_type] = $curr_mapped_field_types; + } + reset(self::$rawFieldTypes); + + $js = $namespace . ".raw_field_types = " . json_encode($mapped); + return $js; + } + + + /** + * Helper function to return a hash of field type ID => field type identifier. + * + * @return array + */ + public static function getFieldTypeIdToIdentifierMap() + { + $field_types = FieldTypes::get(); + $map = array(); + foreach ($field_types as $field_type_info) { + $map[$field_type_info["field_type_id"]] = $field_type_info["field_type_identifier"]; + } + return $map; + } + + + /** + * Returns all CSS or javascript defined for all fields types. Note: this does NOT include external files uploaded + * through the Resources section of the Custom Fields module. That's + * + * @param $resource_type + */ + public static function getFieldTypeResources($resource_type) + { + $db = Core::$db; + + if ($resource_type == "css") { + $setting_name = "edit_submission_shared_resources_css"; + $db_column = "resources_css"; + } else { + $setting_name = "edit_submission_shared_resources_js"; + $db_column = "resources_js"; + } + + $str = Settings::get($setting_name); + $db->query(" + SELECT $db_column + FROM {PREFIX}field_types + "); + $db->execute(); + + foreach ($db->fetchAll() as $row) { + $str .= $row[$db_column] . "\n"; + } + + return $str; + } + + + /** + * A simple function to return a hash of field_type_id => hash of information that's needed + * for processing the field type and storing it in the database. Namely: the PHP processing + * code for the field type and whether it's a date or file field. + * + * @return array + */ + public static function getFieldTypeProcessingInfo() + { + $db = Core::$db; + + $db->query(" + SELECT field_type_id, php_processing, is_date_field, is_file_field + FROM {PREFIX}field_types + "); + $db->execute(); + + $result = array(); + foreach ($db->fetchAll() as $row) { + $result[$row["field_type_id"]] = array( + "php_processing" => trim($row["php_processing"]), + "is_date_field" => $row["is_date_field"], + "is_file_field" => $row["is_file_field"] + ); + } + + return $result; + } + + + /** + * This retrieves all setting information for a field - including the field type settings that weren't overridden. + * + * @param $field_ids + * @return array a hash of [field_id][identifier] = values + */ + public static function getFormFieldFieldTypeSettings($field_ids = array(), $form_fields) + { + $db = Core::$db; + + if (empty($field_ids)) { + return array(); + } + + $field_id_str = implode(",", $field_ids); + + // get the overridden settings + $db->query(" + SELECT fts.field_type_id, fs.field_id, fts.field_setting_identifier, fs.setting_value + FROM {PREFIX}field_type_settings fts, {PREFIX}field_settings fs + WHERE fts.setting_id = fs.setting_id AND + fs.field_id IN ($field_id_str) + ORDER BY fs.field_id + "); + $db->execute(); + + $overridden_settings = array(); + foreach ($db->fetchAll() as $row) { + $overridden_settings[$row["field_id"]][$row["field_setting_identifier"]] = $row["setting_value"]; + } + + // now figure out what field_type_ids we're concerned about + $relevant_field_type_ids = array(); + $field_id_to_field_type_id_map = array(); + foreach ($form_fields as $field_info) { + if (!in_array($field_info["field_id"], $field_ids)) { + continue; + } + if (!in_array($field_info["field_type_id"], $relevant_field_type_ids)) { + $relevant_field_type_ids[] = $field_info["field_type_id"]; + } + + $field_id_to_field_type_id_map[$field_info["field_id"]] = $field_info["field_type_id"]; + } + + // this returns ALL the default field type settings. The function is "dumb": it doesn't evaluate + // any of the dynamic default values - that's done below + $default_field_type_settings = FieldTypes::getFieldTypeSettings($relevant_field_type_ids); + + // now overlay the two and return all field settings for all fields + $results = array(); + foreach ($field_ids as $field_id) { + $results[$field_id] = array(); + + if (!isset($field_id_to_field_type_id_map[$field_id]) || !isset($default_field_type_settings[$field_id_to_field_type_id_map[$field_id]])) { + continue; + } + + $field_type_settings = $default_field_type_settings[$field_id_to_field_type_id_map[$field_id]]; + foreach ($field_type_settings as $setting_info) { + $identifier = $setting_info["field_setting_identifier"]; + $default_value_type = $setting_info["default_value_type"]; + if ($default_value_type == "static") { + $value = $setting_info["default_value"]; + } else { + $parts = explode(",", $setting_info["default_value"]); + + // dynamic setting values should ALWAYS be of the form "setting_name,module_folder/'core'". If they're + // not, just ignore it + if (count($parts) != 2) { + $value = ""; + } else { + $value = Settings::get($parts[0], $parts[1]); + } + } + + if (isset($overridden_settings[$field_id]) && isset($overridden_settings[$field_id][$identifier])) { + $value = $overridden_settings[$field_id][$identifier]; + } + + $results[$field_id][$identifier] = $value; + } + } + + return $results; + } + + + /** + * This is used on the Submission Listing page to provide the default value for the date range field, which + * appears when a user chooses a date to search on. + * + * @param string $choice + * @return array a hash with the two keys: + * "default_date_field_search_value": the default value to show. This depends on what they + * selected on the Settings -> Main tab field. + * "date_field_search_js_format": the format to pass to the jQuery date range picker + */ + public static function getDefaultDateFieldSearchValue($choice) + { + $LANG = Core::$L; + $searchFormDateFieldFormat = Core::getSearchFormDateFieldFormat(); + + if ($searchFormDateFieldFormat == "d/m/y") { + $php_date_format = "j/n/Y"; + $date_field_search_js_format = "d/m/yy"; + } else { + $php_date_format = "n/j/Y"; + $date_field_search_js_format = "m/d/yy"; + } + + $value = ""; + switch ($choice) { + case "none": + $value = $LANG["phrase_select_date"]; + break; + case "today": + $value = date($php_date_format); + break; + case "last_7_days": + $now = date("U"); + $then = $now - (60 * 60 * 24 * 7); + $value = date($php_date_format, $then) . " - " . date($php_date_format, $now); + break; + case "month_to_date": + $current_month = date("n"); + $current_year = date("Y"); + if ($searchFormDateFieldFormat == "d/m/y") { + $value = "1/$current_month/$current_year - " . date($php_date_format); + } else { + $value = "$current_month/1/$current_year - " . date($php_date_format); + } + break; + case "year_to_date": + $current_year = date("Y"); + $value = "1/1/$current_year - " . date($php_date_format); + break; + case "previous_month": + $current_month = date("n"); + $previous_month = ($current_month == 1) ? 12 : $current_month - 1; + $current_year = date("Y"); + $mid_previous_month = mktime(0, 0, 0, $previous_month, 15, $current_year); + $num_days_in_last_month = date("t", $mid_previous_month); + if ($searchFormDateFieldFormat == "d/m/y") { + $value = "1/$previous_month/$current_year - $num_days_in_last_month/$previous_month/$current_year"; + } else { + $value = "$previous_month/1/$current_year - $previous_month/$num_days_in_last_month/$current_year"; + } + break; + } + + return array( + "default_date_field_search_value" => $value, + "date_field_search_js_format" => $date_field_search_js_format + ); + } + + + /** + * Returns a list of field type IDs for file fields. + * @return array $field_type_ids + */ + public static function getFileFieldTypeIds() + { + $db = Core::$db; + + $db->query(" + SELECT field_type_id + FROM {PREFIX}field_types + WHERE is_file_field = 'yes' + "); + $db->execute(); + + $field_type_ids = array(); + foreach ($db->fetchAll() as $row) { + $field_type_ids[] = $row["field_type_id"]; + } + + return $field_type_ids; + } + + + /** + * TODO this method is far too complicated & it's central to the application. Refactor. + * + * This should be the one and only place that actually generates the content for a field for it + * to be viewed. This is used on the Submission Listing page, Edit Submission page (for viewable, + * non-editable fields), in the Export Manager, in the Email Templates, and anywhere else that needs + * to output the content of a field. + * + * This function is the main source of slowness in 2.1.0. I'll be investigating ways to speed it up + * in the Beta. + * + * @param array $params a hash with the following: + * REQUIRED VALUES: + * form_id + * submission_id + * field_info - a hash containing details of the field: + * REQUIRED: + * field_id + * field_type_id + * col_name + * field_name + * settings - all extended settings defined for the field + * OPTIONAL: + * anything else you want + * field_types - all, or any that are relevant. But it should be an array, anyway + * value - the actual value stored in the field + * settings - (from Settings::get()) + * @return string + */ + public static function generateViewableField($params) + { + $multi_val_delimiter = Core::getMultiFieldValDelimiter(); + $root_url = Core::getRootUrl(); + $root_dir = Core::getRootUrl(); + + // REQUIRED + $form_id = $params["form_id"]; + $submission_id = $params["submission_id"]; + $field_info = $params["field_info"]; + $field_types = $params["field_types"]; + $value = $params["value"]; + $settings = $params["settings"]; + $context = isset($params["context"]) ? $params["context"] : ""; + + // loop through the field types and store the one we're interested in in $field_type_info + $field_type_info = array(); + foreach ($field_types as $curr_field_type) { + if ($field_info["field_type_id"] == $curr_field_type["field_type_id"]) { + $field_type_info = $curr_field_type; + break; + } + } + + $markup_with_placeholders = trim($field_type_info["view_field_smarty_markup"]); + + $output = ""; + if ($field_type_info["view_field_rendering_type"] == "none" || empty($markup_with_placeholders)) { + $output = $value; + } else { + $placeholders = array( + "FORM_ID" => $form_id, + "SUBMISSION_ID" => $submission_id, + "FIELD_ID" => $field_info["field_id"], + "NAME" => $field_info["field_name"], + "COLNAME" => $field_info["col_name"], + "VALUE" => $value, + "SETTINGS" => $settings, + "CONTEXTPAGE" => $context, + "ACCOUNT_INFO" => Sessions::getWithFallback("account", array()), + "g_root_url" => $root_url, + "g_root_dir" => $root_dir, + "g_multi_val_delimiter" => $multi_val_delimiter + ); + + // Field Types have an arbitrary number of settings specific to themselves. Get them and add the to the $placeholder hash + $setting_placeholders = self::getFieldTypeSettingPlaceholders($field_type_info["settings"], $field_info); + $placeholders = array_merge($placeholders, $setting_placeholders); + + if ($field_type_info["view_field_rendering_type"] == "php") { + list ($class_plus_namespace, $method) = explode("::", $field_type_info["view_field_php_function"]); + + // TODO instantiate the module instead + if ($field_type_info["view_field_php_function_source"] != "core" && is_numeric($field_type_info["view_field_php_function_source"])) { + $module_folder = Modules::getModuleFolderFromModuleId($field_type_info["view_field_php_function_source"]); + @include_once("$root_dir/modules/$module_folder/library.php"); + } + + if (class_exists($class_plus_namespace) && method_exists($class_plus_namespace, $method)) { + $output = call_user_func($field_type_info["view_field_php_function"], $placeholders); + } + } else { + $output = General::evalSmartyString($markup_with_placeholders, $placeholders); + } + } + + return $output; + } + + + public static function displayFieldTypeDate($placeholders) + { + if (empty($placeholders["VALUE"])) { + return ""; + } + + $tzo = ""; + if ($placeholders["apply_timezone_offset"] == "yes" && isset($placeholders["ACCOUNT_INFO"]["timezone_offset"])) { + $tzo = $placeholders["ACCOUNT_INFO"]["timezone_offset"]; + } + + switch ($placeholders["display_format"]) { + case "yy-mm-dd": + $php_format = "Y-m-d"; + break; + case "dd/mm/yy": + $php_format = "d/m/Y"; + break; + case "mm/dd/yy": + $php_format = "m/d/Y"; + break; + case "M d, yy": + $php_format = "M j, Y"; + break; + case "MM d, yy": + $php_format = "F j, Y"; + break; + case "D M d, yy": + $php_format = "D M j, Y"; + break; + case "DD, MM d, yy": + $php_format = "l M j, Y"; + break; + case "dd. mm. yy": + $php_format = "d. m. Y"; + break; + case "datetime:dd/mm/yy|h:mm TT|ampm`true": + $php_format = "d/m/Y g:i A"; + break; + case "datetime:mm/dd/yy|h:mm TT|ampm`true": + $php_format = "m/d/Y g:i A"; + break; + case "datetime:yy-mm-dd|h:mm TT|ampm`true": + $php_format = "Y-m-d g:i A"; + break; + case "datetime:yy-mm-dd|hh:mm": + $php_format = "Y-m-d H:i"; + break; + case "datetime:yy-mm-dd|hh:mm:ss|showSecond`true": + $php_format = "Y-m-d H:i:s"; + break; + case "datetime:dd. mm. yy|hh:mm": + $php_format = "d. m. Y H:i"; + break; + + default: + $php_format = ""; + break; + } + + return General::getDate($tzo, $placeholders["VALUE"], $php_format); + } + + + public static function displayFieldTypeRadios($placeholders) + { + // if this isn't assigned to an Option List / form field, ignore the sucker + if (empty($placeholders["contents"])) { + return ""; + } + + $output = ""; + foreach ($placeholders["contents"]["options"] as $curr_group_info) { + $options = $curr_group_info["options"]; + + foreach ($options as $option_info) { + if ($placeholders["VALUE"] == $option_info["option_value"]) { + $output = $option_info["option_name"]; + break; + } + } + } + + return $output; + } + + + public static function displayFieldTypeCheckboxes($placeholders) + { + // if this isn't assigned to an Option List / form field, ignore it! + if (empty($placeholders["contents"])) { + return ""; + } + + $multi_val_delimiter = $placeholders["g_multi_val_delimiter"]; + $vals = explode($multi_val_delimiter, $placeholders["VALUE"]); + + $output = ""; + $is_first = true; + foreach ($placeholders["contents"]["options"] as $curr_group_info) { + $options = $curr_group_info["options"]; + foreach ($options as $option_info) { + if (in_array($option_info["option_value"], $vals)) { + if (!$is_first) { + $output .= $multi_val_delimiter; + } + $output .= $option_info["option_name"]; + $is_first = false; + } + } + } + + return $output; + } + + + public static function displayFieldTypeDropdown($placeholders) + { + if (empty($placeholders["contents"])) { + return ""; + } + + $output = ""; + foreach ($placeholders["contents"]["options"] as $curr_group_info) { + $options = $curr_group_info["options"]; + foreach ($options as $option_info) { + if ($placeholders["VALUE"] == $option_info["option_value"]) { + // the extra check for $option_info not being empty was added in 2.2.7. This is because + // there was an old bug preventing the value being displayed properly. But by fixing it, + // default dropdown values like "please select" suddenly got shown. I think it's reasonable + // to equate an empty string value with nothing... + if (!empty($option_info["option_value"])) { + $output = $option_info["option_name"]; + } + break; + } + } + } + + return $output; + } + + + public static function displayFieldTypeMultiSelectDropdown($placeholders) + { + // if this isn't assigned to an Option List / form field, ignore it! + if (empty($placeholders["contents"])) { + return ""; + } + + $multi_val_delimiter = $placeholders["g_multi_val_delimiter"]; + $vals = explode($multi_val_delimiter, $placeholders["VALUE"]); + + $output = ""; + $is_first = true; + foreach ($placeholders["contents"]["options"] as $curr_group_info) { + $options = $curr_group_info["options"]; + + foreach ($options as $option_info) { + if (in_array($option_info["option_value"], $vals)) { + if (!$is_first) { + $output .= $multi_val_delimiter; + } + $output .= $option_info["option_name"]; + $is_first = false; + } + } + } + + return $output; + } + + + public static function displayFieldTypePhoneNumber($placeholders) + { + $phone_number_format = $placeholders["phone_number_format"]; + $values = explode("|", $placeholders["VALUE"]); + + $pieces = preg_split("/(x+)/", $phone_number_format, 0, PREG_SPLIT_DELIM_CAPTURE); + $counter = 1; + $output = ""; + $has_content = false; + foreach ($pieces as $piece) { + if (empty($piece)) { + continue; + } + if ($piece[0] == "x") { + $value = (isset($values[$counter - 1])) ? $values[$counter - 1] : ""; + $output .= $value; + if (!empty($value)) { + $has_content = true; + } + $counter++; + } else { + $output .= $piece; + } + } + + if (!empty($output) && $has_content) { + return $output; + } else { + return ""; + } + } + + + public static function displayFieldTypeCodeMarkup($placeholders) + { + if ($placeholders["CONTEXTPAGE"] == "edit_submission") { + $code_markup = $placeholders["code_markup"]; + $value = $placeholders["VALUE"]; + $name = $placeholders["NAME"]; + $height = $placeholders["height"]; + + $output = <<< END +
+ + +
+END; + } else { + $output = strip_tags($placeholders["VALUE"]); + } + + return $output; + } + + + /** + * Used when updating a field. This is passed those field that have just had their field type changed. It figures + * out what values + * + * @param array $field_type_map + * @param string $field_type_settings_shared_characteristics + * @param integer $field_id + * @param integer $new_field_type_id + * @param integer $old_field_type_id + */ + public static function getSharedFieldSettingInfo($field_type_map, $field_type_settings_shared_characteristics, $field_id, $new_field_type_id, $old_field_type_id) + { + $new_field_type_identifier = $field_type_map[$new_field_type_id]; + $old_field_type_identifier = $field_type_map[$old_field_type_id]; + + $groups = explode("|", $field_type_settings_shared_characteristics); + $return_info = array(); + foreach ($groups as $group_info) { + list($group_name, $vals) = explode(":", $group_info); + + $pairs = explode("`", $vals); + $settings = array(); + foreach ($pairs as $str) { + list($field_type_identifier, $setting_identifier) = explode(",", $str); + $settings[$field_type_identifier] = $setting_identifier; + } + + $shared_field_types = array_keys($settings); + if (!in_array($new_field_type_identifier, $shared_field_types) || !in_array($old_field_type_identifier, $shared_field_types)) { + continue; + } + + $old_setting_id = self::getFieldTypeSettingIdByIdentifier($old_field_type_id, $settings[$new_field_type_identifier]); + $new_setting_id = self::getFieldTypeSettingIdByIdentifier($new_field_type_id, $settings[$old_field_type_identifier]); + + $old_setting_value = FieldSettings::getFieldSetting($field_id, $old_setting_id); + $return_info[] = array( + "field_id" => $field_id, + "old_setting_id" => $old_setting_id, + "new_setting_id" => $new_setting_id, + "setting_value" => $old_setting_value + ); + } + + return $return_info; + } + + + /** + * This is used exclusively on the Edit Forms -> fields tab. It returns a JS version of the shared characteristics + * information for use by the page. The JS it returns in an anonymous JS object of the following form: + * { + * s(setting ID): array(characteristic IDs), + * ... + * } + * + * "Characteristic ID" is a made-up number for the sake of the use-case. We just need a way to recognize the shared + * characteristics - that's what it does. + * + * @return string + */ + public static function getFieldTypeSettingSharedCharacteristicsJs() + { + $field_type_settings_shared_characteristics = Settings::get("field_type_settings_shared_characteristics"); + $info = FieldTypes::getFieldTypeAndSettingInfo(); + $field_type_id_to_identifier = $info["field_type_id_to_identifier"]; + $field_identifier_to_id = array_flip($field_type_id_to_identifier); + + $groups = explode("|", $field_type_settings_shared_characteristics); + $return_info = array(); + + // this is what we're trying to generate: a hash of setting id => array( characteristic IDs ) + // The �characteristic ID� is a new (temporary) number for characteristic. In every situation that I can + // think of, the value array will contain a single entry (why would a setting be mapped to multiple + // characteristics?). However, the interface doesn't limit it. To be safe, I�ll stash it in an array. + $setting_ids_to_characteristic_ids = array(); + + $characteristic_id = 1; + foreach ($groups as $group_info) { + list($group_name, $vals) = explode(":", $group_info); + + $pairs = explode("`", $vals); + $settings = array(); + foreach ($pairs as $str) { + // we need to do a little legwork here to actually find the setting ID. The problem is that many + // field types reference fields with the same setting identifier (it's only required to be unique within the + // field type - not ALL field types). + list($field_type_identifier, $setting_identifier) = explode(",", $str); + + // the shared characteristic settings may reference uninstalled modules + if (!array_key_exists($field_type_identifier, $field_identifier_to_id)) { + continue; + } + + $field_type_id = $field_identifier_to_id[$field_type_identifier]; + $all_field_type_setting_ids = $info["field_type_ids_to_setting_ids"][$field_type_id]; + + // loop through all the settings for this field type and locate the one we're interested in + foreach ($all_field_type_setting_ids as $setting_id) { + if ($info["setting_id_to_identifier"][$setting_id] != $setting_identifier) { + continue; + } + if (!array_key_exists($setting_id, $setting_ids_to_characteristic_ids)) { + $setting_ids_to_characteristic_ids[$setting_id] = array(); + } + $setting_ids_to_characteristic_ids[$setting_id][] = $characteristic_id; + } + } + + $characteristic_id++; + } + + // now convert the info into a simple JS object. We could have done it above, but this keeps it simple. + $js_lines = array(); + foreach ($setting_ids_to_characteristic_ids as $setting_id => $characteristic_ids) { + $js_lines[] = "s{$setting_id}:[" . implode(",", $characteristic_ids) . "]"; + } + $js = "{" . implode(",", $js_lines) . "}"; + + return $js; + } + + + /** + * A little tricky to name. We often need the key info about the field type and their settings (i.e. IDs and names) + * in different ways. This function returns the info in different data structures. The top level structure returned + * is a hash. You can pick and choose what info you want. Since it's all generated with a single SQL query, it's much + * faster to use this than separate functions. + * + * Note: this function returns a superset of getFieldTypeIdToIdentifierMap(). If you need to access the settings + * as well as the field type info, chances are this will be a better candidate. + * + * @return array + */ + public static function getFieldTypeAndSettingInfo() + { + $db = Core::$db; + + $db->query(" + SELECT ft.field_type_id, ft.field_type_name, ft.field_type_identifier, fts.* + FROM {PREFIX}field_types ft + LEFT JOIN {PREFIX}field_type_settings fts ON (ft.field_type_id = fts.field_type_id) + "); + $db->execute(); + + $field_type_id_to_identifier = array(); + $field_type_ids_to_setting_ids = array(); + $setting_id_to_identifier = array(); + foreach ($db->fetchAll() as $row) { + $field_type_id = $row["field_type_id"]; + $setting_id = $row["setting_id"]; + + if (!array_key_exists($field_type_id, $field_type_id_to_identifier)) { + $field_type_id_to_identifier[$field_type_id] = $row["field_type_identifier"]; + } + if (!array_key_exists($field_type_id, $field_type_ids_to_setting_ids)) { + $field_type_ids_to_setting_ids[$field_type_id] = array(); + } + $field_type_ids_to_setting_ids[$field_type_id][] = $setting_id; + + if (!array_key_exists($setting_id, $setting_id_to_identifier)) { + $setting_id_to_identifier[$setting_id] = $row["field_setting_identifier"]; + } + } + + return array( + "field_type_id_to_identifier" => $field_type_id_to_identifier, + "field_type_ids_to_setting_ids" => $field_type_ids_to_setting_ids, + "setting_id_to_identifier" => $setting_id_to_identifier + ); + } + + + /** + * Returns all validation rules for a field type. + * + * @param $field_type_id + */ + public static function getFieldTypeValidationRules($field_type_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}field_type_validation_rules + WHERE field_type_id = :field_type_id + ORDER BY list_order + "); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + + return $db->fetchAll(); + } + + + /** + * Return information about the field types in the database. To provide a little re-usability, the two + * params let you choose whether or not to return the field types AND their settings or just + * the field types, and whether or not you want to limit the results to specific field type IDs. + * + * @param array $return_settings + * @param array $field_type_ids + * @return array + */ + public static function get($return_settings = false, $field_type_ids = array()) + { + $db = Core::$db; + + if (!empty($field_type_ids)) { + $field_type_id_str = implode(",", $field_type_ids); + $db->query(" + SELECT *, g.list_order as group_list_order, ft.list_order as field_type_list_order + FROM {PREFIX}field_types ft, {PREFIX}list_groups g + WHERE g.group_type = :field_types AND + ft.group_id = g.group_id AND + ft.field_type_id IN ($field_type_id_str) + ORDER BY g.list_order, ft.list_order + "); + } else { + $db->query(" + SELECT *, g.list_order as group_list_order, ft.list_order as field_type_list_order + FROM {PREFIX}field_types ft, {PREFIX}list_groups g + WHERE g.group_type = :field_types AND + ft.group_id = g.group_id + ORDER BY g.list_order, ft.list_order + "); + } + $db->bind("field_types", "field_types"); + $db->execute(); + $results = $db->fetchAll(); + + $field_types = array(); + foreach ($results as $row) { + if ($return_settings) { + $row["settings"] = FieldTypes::getFieldTypeSettings($row["field_type_id"], false); + } + $field_types[] = $row; + } + + return $field_types; + } + + + public static function getFieldTypeByIdentifier($identifier) + { + $db = Core::$db; + $db->query(" + SELECT * + FROM {PREFIX}field_types + WHERE field_type_identifier = :identifier + "); + $db->bind("identifier", $identifier); + $db->execute(); + $info = $db->fetch(); + + if (!empty($info)) { + $field_type_id = $info["field_type_id"]; + $info["settings"] = FieldTypes::getFieldTypeSettings($field_type_id); + } + + return $info; + } + + + public static function getFieldTypeSettingsList($field_type_id) + { + $db = Core::$db; + $db->query(" + SELECT * + FROM {PREFIX}field_type_settings + WHERE field_type_id = :field_type_id + ORDER BY list_order + "); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + + return $db->fetchAll(); + } + + public static function addFieldTypeSetting($field_type_id, $field_label, $field_setting_identifier, $field_type, + $field_orientation, $default_value_type, $default_value, $list_order) + { + $db = Core::$db; + + $db->query(" + INSERT INTO {PREFIX}field_type_settings (field_type_id, field_label, field_setting_identifier, + field_type, field_orientation, default_value_type, default_value, list_order) + VALUES (:field_type_id, :field_label, :field_setting_identifier, :field_type, + :field_orientation, :default_value_type, :default_value, :list_order) + "); + $db->bindAll(array( + "field_type_id" => $field_type_id, + "field_label" => $field_label, + "field_setting_identifier" => $field_setting_identifier, + "field_type" => $field_type, + "field_orientation" => $field_orientation, + "default_value_type" => $default_value_type, + "default_value" => $default_value, + "list_order" => $list_order + )); + $db->execute(); + + return $db->getInsertId(); + } + + public static function addFieldTypeSettingOptions($options) + { + $db = Core::$db; + + $query = "INSERT INTO {PREFIX}field_type_setting_options (setting_id, option_text, option_value, option_order, + is_new_sort_group) VALUES (:setting_id, :option_text, :option_value, :option_order, :is_new_sort_group)"; + + foreach ($options as $option) { + $db->query($query); + $db->bindAll(array( + "setting_id" => $option["setting_id"], + "option_text" => $option["option_text"], + "option_value" => $option["option_value"], + "option_order" => $option["option_order"], + "is_new_sort_group" => $option["is_new_sort_group"] + )); + $db->execute(); + } + } + + + public static function deleteFieldTypeSettingsByFieldTypeId($field_type_id) + { + $db = Core::$db; + + $db->query(" + SELECT setting_id + FROM {PREFIX}field_type_settings + WHERE field_type_id = :field_type_id + "); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + $setting_ids = $db->fetchAll(PDO::FETCH_COLUMN); + + self::deleteFieldTypeSettings($setting_ids); + } + + + /** + * Deletes a field type setting. It also updates all existing form fields that were referencing + * this setting to remove the dependant data. + * @param array $setting_ids + */ + public static function deleteFieldTypeSettings($setting_ids = array()) + { + $db = Core::$db; + + foreach ($setting_ids as $setting_id) { + if (empty($setting_id) || !is_numeric($setting_id)) { + continue; + } + + $db->query("DELETE FROM {PREFIX}field_settings WHERE setting_id = :setting_id"); + $db->bind("setting_id", $setting_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}field_type_settings WHERE setting_id = :setting_id"); + $db->bind("setting_id", $setting_id); + $db->execute(); + + self::deleteFieldTypeSettingOptions($setting_id); + } + } + + + /** + * Deletes a field type and resets any fields that were set to that type to a different one. + * @param $field_type_identifier_to_delete + * @param $field_type_identifier_replacement + * @return bool + */ + public static function deleteFieldType($field_type_identifier_to_delete, $field_type_identifier_replacement) + { + $db = Core::$db; + + $field_type_info = FieldTypes::getFieldTypeByIdentifier($field_type_identifier_to_delete); + + if (!$field_type_info) { + return false; + } + + $field_type_id = $field_type_info["field_type_id"]; + + $db->query("DELETE FROM {PREFIX}field_types WHERE field_type_id = :field_type_id"); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + + self::deleteFieldTypeSettingsByFieldTypeId($field_type_id); + + $setting_ids = array(); + foreach ($field_type_info["settings"] as $setting_info) { + $setting_ids[] = $setting_info["setting_id"]; + } + + $setting_id_str = implode(",", $setting_ids); + $db->query("DELETE FROM {PREFIX}field_type_setting_options WHERE setting_id IN ($setting_id_str)"); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}field_settings WHERE setting_id IN ($setting_id_str)"); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}field_type_validation_rules WHERE field_type_id = :field_type_id"); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + + // delete all uses of this field's validation + $db->query("SELECT field_id FROM {PREFIX}form_fields WHERE field_type_id = :field_type_id"); + $db->bind("field_type_id", $field_type_id); + $db->execute(); + $field_ids = $db->fetchAll(PDO::FETCH_COLUMN); + + if (!empty($field_ids)) { + $field_id_str = implode(",", $field_ids); + $db->query("DELETE FROM {PREFIX}field_validation WHERE field_id IN ($field_id_str)"); + $db->execute(); + } + + $input_field_type_info = FieldTypes::getFieldTypeByIdentifier($field_type_identifier_replacement); + $input_field_type_id = $input_field_type_info["field_type_id"]; + + $db->query(" + UPDATE {PREFIX}form_fields + SET field_type_id = :input_field_type_id + WHERE field_type_id = :field_type_id + "); + $db->bindAll(array( + "input_field_type_id" => $input_field_type_id, + "field_type_id" => $field_type_id + )); + $db->execute(); + + return true; + } + + + /** + * Used in generating the field for view/editing. Retrieves a hash of placeholder i + */ + private static function getFieldTypeSettingPlaceholders($settings, $field_info) + { + $cache = Core::getTempCacheHash(); + $placeholders = array(); + + foreach ($settings as $setting_info) { + $curr_setting_id = $setting_info["setting_id"]; + $curr_setting_field_type = $setting_info["field_type"]; + $default_value_type = $setting_info["default_value_type"]; + $value = $setting_info["default_value"]; + $identifier = $setting_info["field_setting_identifier"]; + + if (isset($field_info["settings"]) && !empty($field_info["settings"])) { + foreach ($field_info["settings"] as $setting_id => $setting_value) { + if ($setting_id == $curr_setting_id) { + $value = $setting_value; + break; + } + } + } + + // if the setting is dynamic, convert the stored value + if ($default_value_type == "dynamic") { + // dynamic setting values should ALWAYS be of the form "setting_name,module_folder/'core'". If they're not, just ignore it + $parts = explode(",", $value); + if (count($parts) == 2) { + $dynamic_setting_str = $value; // "setting_name,module_folder/'core'" + if (!array_key_exists("dynamic_settings", $cache)) { + $cache["dynamic_settings"] = array(); + Core::setTempCacheHash($cache); + } + if (array_key_exists($dynamic_setting_str, $cache["dynamic_settings"])) { + $value = $cache["dynamic_settings"][$dynamic_setting_str]; + } else { + $value = Settings::get($parts[0], $parts[1]); + $cache["dynamic_settings"][$dynamic_setting_str] = $value; + Core::setTempCacheHash($cache); + } + } + } + + // if this setting type is a dropdown list and $value is non-empty, get the option list + if ($curr_setting_field_type == "option_list_or_form_field" && !empty($value)) { + + if (preg_match("/form_field:/", $value)) { + $value = Submissions::getMappedFormFieldData($value); + } else { + $option_list_id = $value; + + if (!array_key_exists("option_lists", $cache)) { + $cache["option_lists"] = array(); + Core::setTempCacheHash($cache); + } + if (array_key_exists($option_list_id, $cache["option_lists"])) { + $value = $cache["option_lists"][$option_list_id]; + } else { + $value = OptionLists::getOptionList($option_list_id); + $cache["option_lists"][$option_list_id] = $value; + Core::setTempCacheHash($cache); + } + } + } + + $placeholders[$identifier] = $value; + } + + return $placeholders; + } + + + /** + * Returns the field type ID by the field ID. + * + * @param integer $field_id + * @return integer the field ID + */ + public static function getFieldTypeIdByFieldId($field_id) + { + $db = Core::$db; + + $db->query(" + SELECT field_type_id + FROM {PREFIX}form_fields + WHERE field_id = :field_id + "); + $db->bind("field_id", $field_id); + $db->execute(); + + $field_type_id = $db->fetch(PDO::FETCH_COLUMN); + + return (isset($field_type_id)) ? $field_type_id : ""; + } + + + public static function resetFieldTypes() + { + self::resetFieldTypeByIdentifier("checkboxes"); + self::resetFieldTypeByIdentifier("code_markup"); + self::resetFieldTypeByIdentifier("date"); + self::resetFieldTypeByIdentifier("dropdown"); + self::resetFieldTypeByIdentifier("multi_select_dropdown"); + self::resetFieldTypeByIdentifier("password"); + self::resetFieldTypeByIdentifier("phone"); + self::resetFieldTypeByIdentifier("radio_buttons"); + self::resetFieldTypeByIdentifier("textarea"); + self::resetFieldTypeByIdentifier("textbox"); + self::resetFieldTypeByIdentifier("time"); + } + + /** + * Used in upgrading/Custom Fields module to ensure a field type has the latest and greatest settings. + * @param $identifier + */ + public static function resetFieldTypeByIdentifier($identifier) + { + $db = Core::$db; + + $id_to_class_map = array( + "checkboxes" => "Checkbox", + "code_markup" => "Code", + "date" => "Date", + "dropdown" => "Dropdown", + "multi_select_dropdown" => "MultiSelect", + "password" => "Password", + "phone" => "Phone", + "radio_buttons" => "Radio", + "textarea" => "Textarea", + "textbox" => "Textbox", + "time" => "Time" + ); + + $class_name = $id_to_class_map[$identifier]; + $module_class = "FormTools\\FieldTypes\\$class_name"; + + $field_type_data = $module_class::get(); + $field_type = $field_type_data["field_type"]; + + $db->query(" + UPDATE {PREFIX}field_types + SET is_editable = :is_editable, + is_enabled = :is_enabled, + non_editable_info = :non_editable_info, + managed_by_module_id = :managed_by_module_id, + field_type_name = :field_type_name, + is_file_field = :is_file_field, + is_date_field = :is_date_field, + raw_field_type_map = :raw_field_type_map, + compatible_field_sizes = :compatible_field_sizes, + view_field_rendering_type = :view_field_rendering_type, + view_field_php_function_source = :view_field_php_function_source, + view_field_php_function = :view_field_php_function, + view_field_smarty_markup = :view_field_smarty_markup, + edit_field_smarty_markup = :edit_field_smarty_markup, + php_processing = :php_processing, + resources_css = :resources_css, + resources_js = :resources_js + WHERE field_type_identifier = :field_type_identifier + "); + $db->bindAll(array( + "is_editable" => $field_type["is_editable"], + "is_enabled" => $field_type["is_enabled"], + "non_editable_info" => $field_type["non_editable_info"], + "managed_by_module_id" => $field_type["managed_by_module_id"], + "field_type_name" => $field_type["field_type_name"], + "is_file_field" => $field_type["is_file_field"], + "is_date_field" => $field_type["is_date_field"], + "raw_field_type_map" => $field_type["raw_field_type_map"], + "compatible_field_sizes" => $field_type["compatible_field_sizes"], + "view_field_rendering_type" => $field_type["view_field_rendering_type"], + "view_field_php_function_source" => $field_type["view_field_php_function_source"], + "view_field_php_function" => $field_type["view_field_php_function"], + "view_field_smarty_markup" => $field_type["view_field_smarty_markup"], + "edit_field_smarty_markup" => $field_type["edit_field_smarty_markup"], + "php_processing" => $field_type["php_processing"], + "resources_css" => $field_type["resources_css"], + "resources_js" => $field_type["resources_js"], + "field_type_identifier" => $identifier + )); + $db->execute(); + + self::resetFieldTypeSettings($field_type_data); + } + + + public static function resetFieldTypeSettings ($field_type_data) + { + $db = Core::$db; + + $existing_field_type = self::getFieldTypeByIdentifier($field_type_data["field_type"]["field_type_identifier"]); + $existing_settings = $existing_field_type["settings"]; + + // a field types' settings are referenced by ID in the database (e.g. field_settings table) so we can't just + // wipe them out and recreate them. Instead, update each in place + + $setting_order = 1; + $new_setting_ids = array(); + foreach ($field_type_data["settings"] as $clean_setting_info) { + $setting_identifier = $clean_setting_info["field_setting_identifier"]; + + $found_setting = null; + foreach ($existing_settings as $existing_setting_info) { + if ($existing_setting_info["field_setting_identifier"] == $setting_identifier) { + $found_setting = $existing_setting_info; + break; + } + } + + // here, this is a new setting added to the field type that the users installation doesn't have + if ($found_setting === null) { + $db->query(" + INSERT INTO {PREFIX}field_type_settings (field_label, field_type, field_orientation, default_value_type, + default_value, list_order) + VALUES (:field_label, :field_type, :field_orientation, :default_value_type, :default_value, :list_order) + "); + $db->bindAll(array( + "field_label" => $clean_setting_info["field_label"], + "field_type" => $clean_setting_info["field_type"], + "field_orientation" => $clean_setting_info["field_orientation"], + "default_value_type" => $clean_setting_info["default_value_type"], + "default_value" => $clean_setting_info["default_value"], + "list_order" => $setting_order, + "setting_id" => $found_setting["setting_id"] + )); + $db->execute(); + $setting_id = $db->getInsertId(); + } else { + $db->query(" + UPDATE {PREFIX}field_type_settings + SET field_label = :field_label, + field_type = :field_type, + field_orientation = :field_orientation, + default_value_type = :default_value_type, + default_value = :default_value, + list_order = :list_order + WHERE setting_id = :setting_id + "); + $db->bindAll(array( + "field_label" => $clean_setting_info["field_label"], + "field_type" => $clean_setting_info["field_type"], + "field_orientation" => $clean_setting_info["field_orientation"], + "default_value_type" => $clean_setting_info["default_value_type"], + "default_value" => $clean_setting_info["default_value"], + "list_order" => $setting_order, + "setting_id" => $found_setting["setting_id"] + )); + $db->execute(); + + $setting_id = $found_setting["setting_id"]; + } + + // wipe out the setting options. Options are only ever referred to in the field_settings table, storing their + // exact value. So technically a new set of option settings may orphan data in the field_settings table. But + // I don't think it's the end of the world - nor do I think we can ward against it. All that would happen is + // the form field referring to a particular field type setting would no longer work until they updated it + self::deleteFieldTypeSettingOptions($setting_id); + + $option_order = 1; + foreach ($clean_setting_info["options"] as $option_info) { + self::addFieldTypeSettingOption($setting_id, $option_info["option_text"], $option_info["option_value"], + $option_order, $option_info["is_new_sort_group"]); + $option_order++; + } + + $setting_order++; + $new_setting_ids[] = $setting_id; + } + + // if any settings have been removed, clean up the database to remove any fields associated with that setting + $existing_setting_ids = array_column($existing_settings, "setting_id"); + $old_setting_ids = array_diff($existing_setting_ids, $new_setting_ids); + self::deleteFieldTypeSettings($old_setting_ids); + } + + + public static function deleteFieldTypeSettingOptions ($setting_id) + { + $db = Core::$db; + + $db->query("DELETE FROM {PREFIX}field_type_setting_options WHERE setting_id = :setting_id"); + $db->bind("setting_id", $setting_id); + $db->execute(); + } + + + public static function addFieldTypeSettingOption($setting_id, $option_text, $option_value, $option_order, $is_new_sort_group) + { + $db = Core::$db; + + $db->query(" + INSERT INTO {PREFIX}field_type_setting_options (setting_id, option_text, option_value, option_order, is_new_sort_group) + VALUES (:setting_id, :option_text, :option_value, :option_order, :is_new_sort_group) + "); + $db->bindAll(array( + "setting_id" => $setting_id, + "option_text" => $option_text, + "option_value" => $option_value, + "option_order" => $option_order, + "is_new_sort_group" => $is_new_sort_group + )); + $db->execute(); + } +} diff --git a/global/code/FieldValidation.class.php b/global/code/FieldValidation.class.php new file mode 100644 index 00000000..fd9ee500 --- /dev/null +++ b/global/code/FieldValidation.class.php @@ -0,0 +1,325 @@ +query(" + SELECT * + FROM {PREFIX}field_validation fv, {PREFIX}field_type_validation_rules ftvr + WHERE fv.field_id = :field_id AND + ftvr.rule_id = fv.rule_id + "); + $db->bind("field_id", $field_id); + $db->execute(); + + return $db->fetchAll(); + } + + /** + * Deletes any validation defined for a particular field. This is called on the main Edit Form -> Fields tab, after a + * field has it's field type changed. + * + * @param integer $field_id + */ + public static function deleteValidation($field_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}field_validation WHERE field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + } + + public static function getPHPValidationRules($field_ids) + { + $db = Core::$db; + if (empty($field_ids)) { + return array(); + } + + $field_ids = implode(",", $field_ids); + try { + $db->query(" + SELECT * + FROM {PREFIX}field_validation fv, {PREFIX}field_type_validation_rules ftvr + WHERE fv.field_id IN ($field_ids) AND + fv.rule_id = ftvr.rule_id AND + ftvr.custom_function_required != 'yes' + ORDER BY fv.field_id, ftvr.list_order + "); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $rules = array(); + foreach ($db->fetchAll() as $row) { + $rules[] = $row; + } + + return $rules; + } + + + /** + * Called after a form submission is made, but it fails server-side validation. This merges the original content + * with whatever is in the POST request. + * + * @param array $grouped_fields + * @param array $request + */ + public static function mergeFormSubmission($grouped_fields, $request) + { + $multi_val_delimiter = Core::getMultiFieldValDelimiter(); + + $updated_grouped_fields = array(); + foreach ($grouped_fields as $group_info) { + $group = $group_info["group"]; + $fields = $group_info["fields"]; + + $updated_fields = array(); + foreach ($fields as $field_info) { + if (array_key_exists($field_info["field_name"], $request)) { + // TODO! This won't work for phone_number fields, other fields + $value = (is_array($request[$field_info["field_name"]])) ? implode($multi_val_delimiter, $request[$field_info["field_name"]]) : $request[$field_info["field_name"]]; + $field_info["submission_value"] = $value; + } + $updated_fields[] = $field_info; + } + + $updated_grouped_fields[] = array( + "group" => $group, + "fields" => $updated_fields + ); + } + + return $updated_grouped_fields; + } + + + /** + * This is the main server-side validation function, called whenever updating a submission. The current version (Core 2.1.9) + * only performs a subset of the total validation rules; namely, those non-custom ones that + * + * @param array $editable_field_ids - this contains ALL editable field IDs in the form + * @param array $request + * @return array an array of errors, or an empty array if no errors + */ + public static function validateSubmission($editable_field_ids, $request) + { + if (empty($editable_field_ids)) { + return array(); + } + + // get the validation rules for the current page. The use of $request["field_ids"] is a fix for bug #339; this should be handled + // a lot better. The calling page (edit_submission.php amongst other) should be figuring out what fields are editable on that particular + // page and passing THAT info as $editable_field_ids + $editable_field_ids_on_tab = explode(",", $request["field_ids"]); + + // return all validation rules for items on tab, including those marked as editable == "no" + $rules = FieldValidation::getPHPValidationRules($editable_field_ids_on_tab); + + // gets all form fields in this View + $form_fields = ViewFields::getViewFields($request["view_id"]); + + // reorganize $form_fields to be a hash of field_id => array(form_name => "", field_field => "") + $field_info = array(); + foreach ($form_fields as $curr_field_info) { + $field_info[$curr_field_info["field_id"]] = array( + "field_name" => $curr_field_info["field_name"], + "field_title" => $curr_field_info["field_title"], + "is_editable" => $curr_field_info["is_editable"] + ); + } + + // construct the RSV-friendly validation + $validation = array(); + foreach ($rules as $rule_info) { + $rule = $rule_info["rsv_rule"]; + $field_id = $rule_info["field_id"]; + $field_name = $field_info[$field_id]["field_name"]; + $field_title = $field_info[$field_id]["field_title"]; + $error_message = $rule_info["error_message"]; + + // if this field is marked as non-editable, ignore it. We don't need to validate it + if ($field_info[$field_id]["is_editable"] == "no") { + continue; + } + + $placeholders = array( + "field" => $field_title, + "field_name" => $field_name + ); + $error_message = General::evalSmartyString($error_message, $placeholders); + + $validation[] = "$rule,$field_name,$error_message"; + } + + $errors = array(); + if (!empty($validation)) { + $errors = validate_fields($request, $validation); + } + + return $errors; + } + + public static function getFieldTypeValidationRules() { + Core::$db->query(" + SELECT * + FROM {PREFIX}field_type_validation_rules + ORDER BY field_type_id, list_order + "); + Core::$db->execute(); + return Core::$db->fetchAll(); + } + + /** + * Added in 2.1.4 to return all field type validation information. + * + * @param $options + */ + public static function generateFieldTypeValidationJs($options = array()) + { + // for use in dev work + $minimize = false; + + $delimiter = "\n"; + if ($minimize) { + $delimiter = ""; + } + + $namespace = isset($options["page_ns"]) ? $options["page_ns"] : "page_ns"; + + $validation_rules = self::getFieldTypeValidationRules(); + $grouped_rules = array(); + foreach ($validation_rules as $row) { + $field_type_id = $row["field_type_id"]; + if (!array_key_exists($field_type_id, $grouped_rules)) { + $grouped_rules[$field_type_id] = array(); + } + + $grouped_rules[$field_type_id][] = array( + "rule_id" => $row["rule_id"], + "rule_label" => General::evalSmartyString($row["rule_label"]), + "default_error_message" => General::evalSmartyString($row["default_error_message"]) + ); + } + + $curr_js = array("{$namespace}.field_validation = {};"); + foreach ($grouped_rules as $field_type_id => $rules) { + $curr_js[] = "{$namespace}.field_validation[\"field_type_{$field_type_id}\"] = ["; + $curr_rules = array(); + foreach ($rules as $rule_info) { + $error = html_entity_decode($rule_info["default_error_message"]); + $curr_rules[] = "{ rule_id: {$rule_info["rule_id"]}, label: \"{$rule_info["rule_label"]}\", error: \"$error\" }"; + } + $curr_js[] = implode(",$delimiter", $curr_rules); + $curr_js[] = "];"; + } + + $rows[] = implode("$delimiter", $curr_js); + + return implode("$delimiter", $rows); + } + + + /** + * Used on the Edit Submission pages, Form Builder - and anywhere that's actually displaying the fields for editing. This + * generates the JS used for the RSV validation, according to whatever rules the user has specified. + * + * @param array $grouped_fields + */ + public static function generateSubmissionJsValidation($grouped_fields, $settings = array()) + { + // overridable settings + $custom_error_handler = isset($settings["custom_error_handler"]) ? $settings["custom_error_handler"] : "ms.submit_form"; + $form_element_id = isset($settings["form_element_id"]) ? $settings["form_element_id"] : "edit_submission_form"; + $omit_non_editable_fields = isset($settings["omit_non_editable_fields"]) ? $settings["omit_non_editable_fields"] : true; + + $js_lines = array(); + $custom_func_errors = array(); + foreach ($grouped_fields as $group_info) { + foreach ($group_info["fields"] as $field_info) { + if (empty($field_info["validation"])) { + continue; + } + if ($omit_non_editable_fields && $field_info["is_editable"] == "no") { + continue; + } + + $field_name = $field_info["field_name"]; + $field_title = $field_info["field_title"]; + $field_id = $field_info["field_id"]; + + foreach ($field_info["validation"] as $rule_info) { + $rsv_rule = $rule_info["rsv_rule"]; + $placeholders = array( + "field" => $field_title, + "field_name" => $field_name + ); + $message = General::evalSmartyString($rule_info["error_message"], $placeholders); + + if ($rsv_rule == "function") { + $custom_function = $rule_info["custom_function"]; + $new_rule = "rules.push(\"function,$custom_function\")"; + if (!in_array($new_rule, $js_lines)) { + $js_lines[] = $new_rule; + } + $custom_func_errors[] = "{field:\"$field_name\",field_id:$field_id,func:\"$custom_function\",err:\"$message\"}"; + } else { + $rsv_field_name = General::evalSmartyString($rule_info["rsv_field_name"], $placeholders); + $js_lines[] = "rules.push(\"$rsv_rule,$rsv_field_name,$message\")"; + } + } + } + } + + // kind of a hack, but passable. The RSV custom function string doesn't pass the error string in the rule; so + // we just store it in a JS object in the page for use by the functions + if (!empty($custom_func_errors)) { + $js_lines[] = "var rsv_custom_func_errors = []"; + foreach ($custom_func_errors as $js_obj) { + $js_lines[] = "rsv_custom_func_errors.push($js_obj)"; + } + } + + $js = ""; + if (!empty($js_lines)) { + $rules = implode(";\n", $js_lines); + $custom_error_handler_str = (!empty($custom_error_handler)) ? "rsv.customErrorHandler = $custom_error_handler;" : ""; + $js =<<< END +$(function() { + $("#{$form_element_id}").bind("submit", function() { return rsv.validate(this, rules); }); + $custom_error_handler_str +}); +var rules = []; +$rules +END; + } + + return $js; + } + + + + + +} diff --git a/global/code/Fields.class.php b/global/code/Fields.class.php new file mode 100644 index 00000000..c870b0d8 --- /dev/null +++ b/global/code/Fields.class.php @@ -0,0 +1,1553 @@ +query(" + SELECT * + FROM {PREFIX}field_settings fs, {PREFIX}field_type_settings fts + WHERE fs.setting_id = fts.setting_id AND + field_id = :field_id + "); + } else { + $db->query(" + SELECT * + FROM {PREFIX}field_settings + WHERE field_id = :field_id + "); + } + $db->bind("field_id", $field_id); + $db->execute(); + + $settings = array(); + foreach ($db->fetchAll() as $row) { + if ($evaluate_dynamic_fields && $row["default_value_type"] == "dynamic") { + $settings[$row["setting_id"]] = ""; + $parts = explode(",", $row["setting_value"]); + + // TODO this needs updating + if (count($parts) == 2) { + $settings[$row["setting_id"]] = Settings::get($parts[0], $parts[1]); + } + } else { + $settings[$row["setting_id"]] = $row["setting_value"]; + } + } + + extract(Hooks::processHookCalls("end", compact("field_id", "settings"), array("settings")), EXTR_OVERWRITE); + + return $settings; + } + + + /** + * Returns all files associated with a particular form field or fields. Different field types may store the + * files differently, so EVERY file upload module needs to add a hook to this function to return the + * appropriate information. + * + * The module functions should return an array of hashes with the following structure: + * array( + * "submission_id" => + * "field_id" => + * "field_type_id" => + * "folder_path" => + * "folder_url" => + * "filename" => + * ), + * ... + * + * @param integer $form_id the unique form ID + * @param array $field_ids an array of field IDs + */ + public static function getUploadedFiles($form_id, $field_ids) + { + $uploaded_files = array(); + extract(Hooks::processHookCalls("start", compact("form_id", "field_ids"), array("uploaded_files")), EXTR_OVERWRITE); + return $uploaded_files; + } + + + /** + * This can be called at any junction for any form. It re-orders the form field list_orders based + * on the current order. Basically, it's used whenever a form field is deleted to ensure that there + * are no gaps in the list_order. + * + * @param integer $form_id + */ + public static function autoUpdateFormFieldOrder($form_id) + { + $db = Core::$db; + + // we rely on this function returning the field by list_order + $form_fields = self::getFormFields($form_id); + + $count = 1; + foreach ($form_fields as $field_info) { + $db->query(" + UPDATE {PREFIX}form_fields + SET list_order = :count + WHERE form_id = :form_id AND + field_id = :field_id + "); + $db->bindAll(array( + "count" => $count, + "form_id" => $form_id, + "field_id" => $field_info["field_id"] + )); + $db->execute(); + $count++; + } + } + + + /** + * Retrieves all field information about a form, ordered by list_order. The 2nd and 3rd optional + * parameters let you return a subset of the fields for a particular page. This function is purely + * concerned with the raw fields themselves: not how they are arbitrarily grouped in a View. To + * retrieve the grouped fields list for a View, use ViewsFields::getViewFields(). + * + * @param integer $form_id the unique form ID + * @param array $custom_settings optional settings + * @return array an array of hash information + */ + public static function getFormFields($form_id, $custom_params = array()) + { + $db = Core::$db; + + $params = array_merge(array( + "page" => 1, + "num_fields_per_page" => "all", + "include_field_type_info" => false, + "include_field_settings" => false, + "evaluate_dynamic_settings" => false, + "field_ids" => "all" + ), $custom_params); + + $limit_clause = General::getQueryPageLimitClause($params["page"], $params["num_fields_per_page"]); + + if ($params["include_field_type_info"]) { + $db->query(" + SELECT ff.*, ft.field_type_name, ft.is_file_field, ft.is_date_field + FROM {PREFIX}form_fields ff, {PREFIX}field_types ft + WHERE ff.form_id = :form_id AND + ff.field_type_id = ft.field_type_id + ORDER BY ff.list_order + $limit_clause + "); + } else { + $field_id_clause = ""; + if ($params["field_ids"] != "all") { + $field_id_clause = "AND field_id IN (" . implode(",", $params["field_ids"]) . ")"; + } + $db->query(" + SELECT * + FROM {PREFIX}form_fields + WHERE form_id = :form_id + $field_id_clause + ORDER BY list_order + $limit_clause + "); + } + $db->bind("form_id", $form_id); + $db->execute(); + + $infohash = array(); + foreach ($db->fetchAll() as $row) { + if ($params["include_field_settings"]) { + $row["settings"] = Fields::getFormFieldSettings($row["field_id"], $params["evaluate_dynamic_settings"]); + } + $infohash[] = $row; + } + + extract(Hooks::processHookCalls("end", compact("form_id", "infohash"), array("infohash")), EXTR_OVERWRITE); + + return $infohash; + } + + + public static function clearFormFields($form_id) { + $db = Core::$db; + + $in_clause = ""; + $in_params = array(); + $form_fields = self::getFormFields($form_id); + for ($i=0; $ibeginTransaction(); + try { + Fields::deleteAllFormFields($form_id); + + $db->query("DELETE FROM {PREFIX}field_settings WHERE field_id IN ($in_clause)"); + $db->bindAll($in_params); + $db->execute(); + $db->processTransaction(); + + } catch (Exception $e) { + $db->rollbackTransaction(); + } + } + + + + /** + * Every form configuration contains a Submission ID, placed first. + */ + public static function addSubmissionIdSystemField($form_id, $textbox_field_type_id) + { + $db = Core::$db; + $LANG = Core::$L; + + $db->query(" + INSERT INTO {PREFIX}form_fields (form_id, field_name, field_test_value, field_type_id, is_system_field, + data_type, field_title, col_name, list_order, is_new_sort_group) + VALUES (:form_id, 'core__submission_id', '', :field_type_id, 'yes', 'number', :id, 'submission_id', '1', 'yes') + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_type_id" => $textbox_field_type_id, + "id" => $LANG["word_id"] + )); + + $db->execute(); + } + + + /** + * Used during the add form process. This populates the form_fields table with the custom fields in the user's form. + * @param $form_id + * @param $form_data + * @return array + */ + public static function addFormFields($form_id, $form_data, $order) + { + $db = Core::$db; + $multi_val_delimiter = Core::getMultiFieldValDelimiter(); + + foreach ($form_data as $key => $value) { + + // if the value is an array, it's either a checkbox field or a multi-select field. Separate the values + // with the delimiter + if (is_array($value)) { + $value = join("$multi_val_delimiter", $value); + } + + $db->query(" + INSERT INTO {PREFIX}form_fields (form_id, field_name, field_type_id, is_system_field, + field_test_value, data_type, list_order, is_new_sort_group) + VALUES (:form_id, :field_key, 1, 'no', :field_value, 'string', :field_order, 'yes') + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_key" => $key, + "field_value" => $value, + "field_order" => $order + )); + $db->execute(); + $order++; + } + + return $order; + } + + + public static function addFormFileFields($form_id, $file_data, $order) + { + $db = Core::$db; + $LANG = Core::$L; + + // TODO: "8" is very magical + foreach ($file_data as $key => $value) { + $db->query(" + INSERT INTO {PREFIX}form_fields (form_id, field_name, field_type_id, is_system_field, + field_test_value, data_type, list_order) + VALUES (:form_id, :field_key, 8, 'no', :field_label, 'string', :field_order) + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_key" => $key, + "field_label" => $LANG["word_file_b_uc"], + "field_order" => $order + )); + $db->execute(); + $order++; + } + + return $order; + } + + + /** + * Add the Submission Date, Last Modified Date and IP Address system fields. For the date fields, we also add in + * a custom formatting to display the full datetime. This is because the default date formatting is date only - + * I think that's probably going to be more useful as a default than a datetime - hence the extra work here. + */ + public static function addSystemFields($form_id, $textbox_field_type_id, $order) + { + $db = Core::$db; + $LANG = Core::$L; + + $date_field_type_id = FieldTypes::getFieldTypeIdByIdentifier("date"); + $date_field_type_datetime_setting_id = FieldTypes::getFieldTypeSettingIdByIdentifier($date_field_type_id, "display_format"); + $date_field_type_timezone_setting_id = FieldTypes::getFieldTypeSettingIdByIdentifier($date_field_type_id, "apply_timezone_offset"); + + // submission date field + $db->query(" + INSERT INTO {PREFIX}form_fields (form_id, field_name, field_test_value, field_type_id, is_system_field, + field_title, data_type, col_name, list_order) + VALUES (:form_id, 'core__submission_date', '', :field_type_id, 'yes', :field_title, + 'date', 'submission_date', :field_order) + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_type_id" => $date_field_type_id, + "field_title" => $LANG["word_date"], + "field_order" => $order + )); + $db->execute(); + $submission_date_field_id = $db->getInsertId(); + + FieldSettings::addSetting($submission_date_field_id, $date_field_type_datetime_setting_id, FieldTypes::$defaultDatetimeFormat); + FieldSettings::addSetting($submission_date_field_id, $date_field_type_timezone_setting_id, "yes"); + + // last modified date + $db->query(" + INSERT INTO {PREFIX}form_fields (form_id, field_name, field_test_value, field_type_id, is_system_field, + field_title, data_type, col_name, list_order) + VALUES (:form_id, 'core__last_modified', '', :field_type_id, 'yes', :field_title, 'date', + 'last_modified_date', :field_order) + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_type_id" => $date_field_type_id, + "field_title" => $LANG["phrase_last_modified"], + "field_order" => $order + 1 + )); + $db->execute(); + $last_modified_date_field_id = $db->getInsertId(); + + FieldSettings::addSetting($last_modified_date_field_id, $date_field_type_datetime_setting_id, FieldTypes::$defaultDatetimeFormat); + FieldSettings::addSetting($last_modified_date_field_id, $date_field_type_timezone_setting_id, "yes"); + + // ip address + $db->query(" + INSERT INTO {PREFIX}form_fields (form_id, field_name, field_test_value, field_type_id, is_system_field, + field_title, data_type, col_name, list_order) + VALUES (:form_id, 'core__ip_address', '', :field_type_id, 'yes', :field_title, 'number', 'ip_address', + :field_order) + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_type_id" => $textbox_field_type_id, + "field_title" => $LANG["phrase_ip_address"], + "field_order" => $order + 2 + )); + $db->execute(); + } + + + /** + * Called on the Add External Form Step 4 page. It reorders the form fields and their groupings. + * + * @param integer $form_id + * @param integer $infohash the POST data from the form + * @param boolean $set_default_form_field_names if true, this tell the function to rename the columns + */ + public static function updateFormFields($form_id, $infohash, $set_default_form_field_names = false) + { + $db = Core::$db; + + $sortable_id = $infohash["sortable_id"]; + $sortable_rows = explode(",", $infohash["{$sortable_id}_sortable__rows"]); + $sortable_new_groups = explode(",", $infohash["{$sortable_id}_sortable__new_groups"]); + + extract(Hooks::processHookCalls("start", compact("infohash", "form_id"), array("infohash")), EXTR_OVERWRITE); + + // get a list of the system fields so we don't overwrite anything special + $existing_form_field_info = Fields::getFormFields($form_id); + $system_field_ids = array(); + foreach ($existing_form_field_info as $form_field) { + if ($form_field["is_system_field"] == "yes") { + $system_field_ids[] = $form_field["field_id"]; + } + } + + $order = 1; + $custom_col_num = 1; + foreach ($sortable_rows as $field_id) { + $set_clauses = array("list_order = $order"); + if ($set_default_form_field_names && !in_array($field_id, $system_field_ids)) { + $set_clauses[] = "col_name = 'col_$custom_col_num'"; + $custom_col_num++; + } + + if (isset($infohash["field_{$field_id}_display_name"])) { + $set_clauses[] = "field_title = '" . $infohash["field_{$field_id}_display_name"] . "'"; + } + + if (isset($infohash["field_{$field_id}_size"])) { + $set_clauses[] = "field_size = '" . $infohash["field_{$field_id}_size"] . "'"; + } + + $is_new_sort_group = (in_array($field_id, $sortable_new_groups)) ? "yes" : "no"; + $set_clauses[] = "is_new_sort_group = '$is_new_sort_group'"; + + $set_clauses_str = implode(",\n", $set_clauses); + + $db->query(" + UPDATE {PREFIX}form_fields + SET $set_clauses_str + WHERE field_id = :field_id AND + form_id = :form_id + "); + $db->bindAll(array( + "field_id" => $field_id, + "form_id" => $form_id + )); + $db->execute(); + $order++; + } + } + + + /** + * Deletes unwanted form fields. Called by administrator when creating an external form and when editing a form. + * + * Note: field types that require additional functionality when deleting a field type (e.g. file fields which + * need to delete uploaded files), they need to define the appropriate hook. Generally this means the + * "delete_fields" hook in the updateFormFieldsTab() function. + */ + public static function deleteFormFields($form_id, $field_ids) + { + $LANG = Core::$L; + $removed_fields = array(); + + foreach ($field_ids as $field_id) { + $field_id = trim($field_id); + if (empty($field_id)) { + continue; + } + + // ignore brand new fields - nothing to delete! + if (preg_match("/^NEW/", $field_id)) { + continue; + } + + $field_map = Fields::getFieldColByFieldId($form_id, $field_id); + + self::deleteFormField($form_id, $field_id); + + $removed_fields[$field_id] = $field_map[$field_id]; + } + + // determine the return message + if (count($removed_fields) > 1) { + $message = $LANG["notify_form_fields_removed"]; + } else { + $message = $LANG["notify_form_field_removed"]; + } + + extract(Hooks::processHookCalls("end", compact("removed_fields", "form_id", "field_ids", "success", "message"), array("success", "message")), EXTR_OVERWRITE); + + return array(true, $message); + } + + + /** + * Retrieves all information about a specific form template field. + * + * @param integer $field_id the unique field ID + * @return array A hash of information about this field. + */ + public static function getFormField($field_id, $custom_params = array()) + { + $db = Core::$db; + + $params = array( + "include_field_type_info" => (isset($custom_params["include_field_type_info"])) ? $custom_params["include_field_type_info"] : false, + "include_field_settings" => (isset($custom_params["include_field_settings"])) ? $custom_params["include_field_settings"] : false, + "evaluate_dynamic_settings" => (isset($custom_params["evaluate_dynamic_settings"])) ? $custom_params["evaluate_dynamic_settings"] : false + ); + if ($params["include_field_type_info"]) { + $db->query(" + SELECT * + FROM {PREFIX}form_fields ff, {PREFIX}field_types ft + WHERE ff.field_id = :field_id AND + ff.field_type_id = ft.field_type_id + "); + } else { + $db->query(" + SELECT * + FROM {PREFIX}form_fields + WHERE field_id = :field_id + "); + } + $db->bind("field_id", $field_id); + $db->execute(); + + $info = $db->fetch(); + + if ($params["include_field_settings"]) { + $info["settings"] = Fields::getFormFieldSettings($field_id, $params["evaluate_dynamic_settings"]); + } + + extract(Hooks::processHookCalls("end", compact("field_id", "info"), array("info")), EXTR_OVERWRITE); + + return $info; + } + + + /** + * Adds new form field(s) to the database. + * + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function addFormFieldsAdvanced($form_id, $fields) + { + $db = Core::$db; + $LANG = Core::$L; + + $field_sizes = FieldSizes::get(); + + $success = true; + $message = ""; + + foreach ($fields as $field_info) { + $field_name = $field_info["form_field_name"]; + $field_size = $field_info["field_size"]; + $field_type_id = $field_info["field_type_id"]; + $display_name = $field_info["display_name"]; + $include_on_redirect = $field_info["include_on_redirect"]; + $list_order = $field_info["list_order"]; + $col_name = $field_info["col_name"]; + $is_new_sort_group = $field_info["is_new_sort_group"]; + + // in order for the field to be added, it needs to have the label, name, size and column name. Otherwise + // they're ignored + if (empty($display_name) || empty($field_name) || empty($field_size) || empty($col_name)) { + continue; + } + + // TODO use transaction + + // add the new field to form_fields + $db->query(" + INSERT INTO {PREFIX}form_fields (form_id, field_name, field_size, field_type_id, + data_type, field_title, col_name, list_order, is_new_sort_group, include_on_redirect) + VALUES (:form_id, :field_name, :field_size, :field_type_id, 'string', :display_name, :col_name, + :list_order, :is_new_sort_group, :include_on_redirect) + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_name" => $field_name, + "field_size" => $field_size, + "field_type_id" => $field_type_id, + "display_name" => $display_name, + "col_name" => $col_name, + "list_order" => $list_order, + "is_new_sort_group" => $is_new_sort_group, + "include_on_redirect" => $include_on_redirect + )); + $db->execute(); + $new_field_id = $db->getInsertId(); + + $new_field_size = $field_sizes[$field_size]["sql"]; + list($is_success) = General::addTableColumn("{PREFIX}form_{$form_id}", $col_name, $new_field_size); + + // if the alter table didn't work, return with an error message and remove the entry we just added to the form_fields table + if (!$is_success) { + if (!empty($new_field_id) && is_numeric($new_field_id)) { + $db->query(" + DELETE FROM {PREFIX}form_fields + WHERE field_id = :field_id + LIMIT 1 + "); + $db->bind("field_id", $new_field_id); + $db->execute(); + } + $success = false; + $replacement_info = array("fieldname" => $field_name); + $message = General::evalSmartyString($LANG["notify_form_field_not_added"], $replacement_info); + return array($success, $message); + } + } + + extract(Hooks::processHookCalls("end", compact("infohash", "form_id"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Helper function to return a field's database column name, based on its form field name. + * + * @param integer $form_id + * @param string $field_name_or_names this can be a single field name or an array of field names + * @return string the database column name, empty string if not found or an array of database column + * names if the $field_name_or_names was an array of field names + */ + public static function getFieldColByFieldName($form_id, $field_name_or_names) + { + $db = Core::$db; + + if (is_array($field_name_or_names)) { + $return_info = array(); + foreach ($field_name_or_names as $field_name) { + $db->query(" + SELECT col_name + FROM {PREFIX}form_fields + WHERE form_id = :form_id AND + field_name = :field_name + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_name" => $field_name + )); + $db->execute(); + $result = $db->fetch(); + $return_info[] = (isset($result["col_name"])) ? $result["col_name"] : ""; + } + } else { + $db->query(" + SELECT col_name + FROM {PREFIX}form_fields + WHERE form_id = :form_id AND + field_name = :field_name + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_name" => $field_name_or_names + )); + $db->execute(); + $result = $db->fetch(); + $return_info = (isset($result["col_name"])) ? $result["col_name"] : ""; + } + + return $return_info; + } + + + /** + * Another getter function. This one finds out the column name for a field or fields, + * based on their field IDs. + * + * TODO Bah! This should return a single bloody col_name string when passed a single field_id. Refactor! +2 + * + * @param integer $form_id + * @param mixed $field_id_or_ids integer or array of integers (field IDs) + * @return array a hash of field_ids to col_names (only one key-value paid if single field ID passed) + */ + public static function getFieldColByFieldId($form_id, $field_id_or_ids) + { + $db = Core::$db; + if (is_array($field_id_or_ids)) { + $field_id_str = implode(",", $field_id_or_ids); + } else { + $field_id_str = $field_id_or_ids; + } + + $db->query(" + SELECT field_id, col_name + FROM {PREFIX}form_fields + WHERE form_id = :form_id AND + field_id IN ($field_id_str) + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $return_info = array(); + foreach ($db->fetchAll() as $row) { + $return_info[$row["field_id"]] = $row["col_name"]; + } + + return $return_info; + } + + /** + * Returns the field title by the field ID. + * + * @param integer $field_id + * @return string the field title + */ + public static function getFieldTitleByFieldId($field_id) + { + $db = Core::$db; + + $db->query(" + SELECT field_title + FROM {PREFIX}form_fields + WHERE field_id = :field_id + "); + $db->bind("field_id", $field_id); + $db->execute(); + + $result = $db->fetch(); + $return_info = (isset($result["field_title"])) ? $result["field_title"] : ""; + + return $return_info; + } + + + /** + * Returns the field type ID by the field ID. + * + * @param integer $field_id + * @return integer the field ID + */ + public static function getFieldTypeIdByFieldId($field_id) + { + $db = Core::$db; + + $db->query(" + SELECT field_type_id + FROM {PREFIX}form_fields + WHERE field_id = :field_id + "); + $db->bind("field_id", $field_id); + $db->execute(); + $result = $db->fetch(); + $field_type_id = (isset($result["field_type_id"])) ? $result["field_type_id"] : ""; + + return $field_type_id; + } + + + /** + * Returns the field title by the field database column string. + * + * @param integer $form_id + * @param string $col_name + * @return string + */ + public static function getFieldTitleByFieldCol($form_id, $col_name) + { + $db = Core::$db; + + $db->query(" + SELECT field_title + FROM {PREFIX}form_fields + WHERE form_id = :form_id AND + col_name = :col_name + "); + $db->bindAll(array( + "form_id" => $form_id, + "col_name" => $col_name + )); + $db->execute(); + $result = $db->fetch(); + + return (isset($result["field_title"])) ? $result["field_title"] : ""; + } + + + /** + * Returns all the field options for a particular multi-select field. + * + * @param integer $form_id the unique field ID. + * @return array an array of field hashes + */ + public static function getFieldOptions($field_id) + { + $db = Core::$db; + + // get the field option group ID + $db->query(" + SELECT field_group_id + FROM {PREFIX}form_fields + WHERE field_id = :field_id + "); + $db->bind("field_id", $field_id); + $db->execute(); + + $result = $db->fetch(); + $group_id = $result["field_group_id"]; + + if (!$group_id) { + return array(); + } + + $db->query(" + SELECT * + FROM {PREFIX}field_options + WHERE field_group_id = :group_id + "); + $db->bind("group_id", $group_id); + $db->execute(); + + $options = $db->fetchAll(); + + extract(Hooks::processHookCalls("end", compact("field_id", "options"), array("options")), EXTR_OVERWRITE); + + return $options; + } + + + /** + * A getter function to retrieve everything about a form field from the database column name. This + * is just a wrapper for Fields::getFormField(). + * + * @param integer $form_id + * @param string $col_name + * @param array + */ + public static function getFormFieldByColname($form_id, $col_name, $params = array()) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}form_fields + WHERE form_id = :form_id AND + col_name = :col_name + LIMIT 1 + "); + $db->bindAll(array( + "form_id" => $form_id, + "col_name" => $col_name + )); + $db->execute(); + + $info = $db->fetch(); + if (empty($info)) { + return array(); + } + + $field_id = $info["field_id"]; + return Fields::getFormField($field_id, $params); + } + + + /** + * Returns the field ID. + * + * @param string $field_name + * @param integer $form_id + * @return integer $field_id + */ + public static function getFormFieldIdByFieldName($field_name, $form_id) + { + $db = Core::$db; + + $db->query(" + SELECT field_id + FROM {PREFIX}form_fields + WHERE form_id = :form_id AND + field_name = :field_name + "); + $db->bindAll(array( + "form_id" => $form_id, + "field_name" => $field_name + )); + $db->execute(); + $result = $db->fetch(); + + return (isset($result["field_id"])) ? $result["field_id"] : ""; + } + + + /** + * Returns either a string (the field name), if a single field ID is passed, or a hash of field_id => field_names + * if an array is passed. + * + * @param mixed $field_id_or_ids + * @return mixed + */ + public static function getFormFieldNameByFieldId($field_id_or_ids) + { + $db = Core::$db; + + $field_ids = array(); + if (is_array($field_id_or_ids)) { + $field_ids = $field_id_or_ids; + } else { + $field_ids[] = $field_id_or_ids; + } + + $field_id_str = implode(",", $field_ids); + + $db->query(" + SELECT field_id, field_name + FROM {PREFIX}form_fields + WHERE field_id IN ($field_id_str) + "); + $db->execute(); + + if (is_array($field_id_or_ids)) { + $result = $db->fetch(); + $return_info = $result["field_name"]; + } else { + $return_info = array(); + foreach ($db->fetchAll() as $row) { + $return_info[$row["field_id"]] = $row["field_name"]; + } + } + + return $return_info; + } + + + /** + * Returns the total number of form fields in a form. + * + * @param integer $form_id + */ + public static function getNumFormFields($form_id) + { + $db = Core::$db; + + $db->query(" + SELECT count(*) + FROM {PREFIX}form_fields + WHERE form_id = :form_id + "); + $db->bind("form_id", $form_id); + $db->execute(); + + return $db->fetch(PDO::FETCH_COLUMN); + } + + + /** + * A getter function to retrieve everything about a form field from the database column name. This is used in + * the Submissions::searchSubmissions method. + * + * @param integer $form_id + * @param string $col_name + * @return array + */ + public static function getFieldOrderInfoByColname($form_id, $col_name) + { + $db = Core::$db; + + $db->query(" + SELECT ff.data_type, ft.is_date_field + FROM {PREFIX}form_fields ff, {PREFIX}field_types ft + WHERE ff.form_id = :form_id AND + ff.col_name = :col_name AND + ff.field_type_id = ft.field_type_id + "); + $db->bindAll(array( + "form_id" => $form_id, + "col_name" => $col_name + )); + $db->execute(); + + return $db->fetch(); + } + + + /** + * This function was totally rewritten in 2.1.0 for the new field settings structure. The ft_form_fields table + * stores all the main settings for form fields which are shared across all fields, regardless of their + * type. But some field types have "extended" settings, i.e. settings that only relate to that field type; + * e.g. file upload fields allow for custom file upload URL & folders. Extended settings can now be created + * by the administrator for any form field type through the Custom Fields module. + * + * Inheritance + * ----------- + * When editing a field, the user has the option of checking the "Use Default" option for each field. If that's + * checked, it will always inherit the setting value from the "default_value" setting value, defined in the + * Custom Fields field type setting. Database-wise, if that value is checked, nothing is stored in the database: + * this keeps the DB size as trim as possible. + * + * This function always returns all extended settings for a field, even those that use the default. The format + * is: + * + * array( + * array( + * "setting_id" => X, + * "setting_value" => "...", + * "uses_default" => true/false + * ), + * ... + * ); + * + * @param integer $field_id + * @param string $setting_id (optional) + * @param boolean $convert_dynamic_values defaults to false just in case... + * @return array an array of hashes + */ + public static function getExtendedFieldSettings($field_id, $setting_id = "", $convert_dynamic_values = false) + { + // get whatever custom settings are defined for this field. These are settings that the user has overridden + // in the Edit Field dialog + $custom_settings = Fields::getFormFieldSettings($field_id); + + // now get a list of all settings defined for this field type + $field_type_id = FieldTypes::getFieldTypeId($field_id); + $field_type_settings = FieldTypes::getFieldTypeSettings($field_type_id); + + $settings = array(); + foreach ($field_type_settings as $curr_setting) { + $curr_setting_id = $curr_setting["setting_id"]; + if (!empty($setting_id) && $setting_id != $curr_setting_id) { + continue; + } + + $uses_default = true; + $setting_value_type = $curr_setting["default_value_type"]; + $setting_value = $curr_setting["default_value"]; + + // if the user's specified a custom value for this field, return that value + if (array_key_exists($curr_setting_id, $custom_settings)) { + $uses_default = false; + $setting_value = $custom_settings[$curr_setting_id]; + } else if ($convert_dynamic_values && $setting_value_type == "dynamic") { + $parts = explode(",", $setting_value); + if (count($parts) == 2) { + $setting_value = Settings::get($parts[0], $parts[1]); + } + } + + $settings[] = array( + "setting_id" => $curr_setting_id, + "setting_value" => $setting_value, + "uses_default" => $uses_default + ); + } + + extract(Hooks::processHookCalls("end", compact("field_id", "setting_name"), array("settings")), EXTR_OVERWRITE); + + return $settings; + } + + + /** + * Fields::getExtendedFieldSettings() doesn't quite do what I need, so I added this second function. It's + * similar to FieldTypes::getFormFieldFieldTypeSettings(), except for a single field. All it does is return all + * settings for a form field TAKING INTO ACCOUNT what's been overridden. + * + * Note: it returns the information as a hash of identifier => value pairs. This is fine, because no two field + * settings for a single field type may have the same identifier. + * + * @param $field_id + * @return array a hash of [identifier] = values + */ + public static function getFieldSettings($field_id) + { + $db = Core::$db; + + if (empty($field_id) || !is_numeric($field_id)) { + return array(); + } + + // get the overridden settings + $db->query(" + SELECT fts.field_type_id, fs.field_id, fts.field_setting_identifier, fs.setting_value + FROM {PREFIX}field_type_settings fts, {PREFIX}field_settings fs + WHERE fts.setting_id = fs.setting_id AND + fs.field_id = :field_id + ORDER BY fs.field_id + "); + $db->bind("field_id", $field_id); + $db->execute(); + + $overridden_settings = array(); + foreach ($db->fetchAll() as $row) { + $overridden_settings[$row["field_setting_identifier"]] = $row["setting_value"]; + } + + $field_type_id = self::getFieldTypeIdByFieldId($field_id); + $default_field_type_settings = FieldTypes::getFieldTypeSettings($field_type_id); + + // now overlay the two and return all field settings for all fields + $complete_settings = array(); + foreach ($default_field_type_settings as $setting_info) { + $identifier = $setting_info["field_setting_identifier"]; + $default_value_type = $setting_info["default_value_type"]; + if ($default_value_type == "static") { + $value = $setting_info["default_value"]; + } else { + $parts = explode(",", $setting_info["default_value"]); + + // dynamic setting values should ALWAYS be of the form "setting_name,module_folder/'core'". If they're + // not, just ignore it + if (count($parts) != 2) { + $value = ""; + } else { + $value = Settings::get($parts[0], $parts[1]); + } + } + + // if the field has been overwritten use that instead! + if (isset($overridden_settings[$identifier])) { + $value = $overridden_settings[$identifier]; + } + $complete_settings[$identifier] = $value; + } + + return $complete_settings; + } + + + /** + * Adds/updates all options for a given field. This is called when the user edits fields from the dialog + * window on the Fields tab. It updates all information about a field: including the custom settings. + * + * TODO: holy crap. Refactor. + * + * @param integer $form_id The unique form ID + * @param integer $field_id The unique field ID + * @param integer $info a hash containing tab1 and/or tab2 indexes, containing all the latest values for + * the field + * @param array [0] success/fail (boolean), [1] empty string for success, or error message + */ + public static function updateField($form_id, $field_id, $tab_info) + { + $db = Core::$db; + $LANG = Core::$L; + $FIELD_SIZES = FieldSizes::get(); + + $existing_form_field_info = Fields::getFormField($field_id); + + // TAB 1: this tab contains the standard settings shared by all fields, regardless of type: display text, + // form field name, field type, pass on, field size, data type and database col name + $db_col_name_changes = array(); + if (is_array($tab_info["tab1"])) { + $info = $tab_info["tab1"]; + $display_name = General::extractArrayVal($info, "edit_field__display_text"); + + // bit weird. this field is a checkbox, so if it's not checked it won't be in the request and + // _ft_extract_array_val returns an empty string + $include_on_redirect = General::extractArrayVal($info, "edit_field__pass_on"); + $include_on_redirect = (empty($include_on_redirect)) ? "no" : "yes"; + + if ($existing_form_field_info["is_system_field"] == "yes") { + $db->query(" + UPDATE {PREFIX}form_fields + SET field_title = :field_title, + include_on_redirect = :include_on_redirect + WHERE field_id = :field_id + "); + $db->bindAll(array( + "field_title" => $display_name, + "include_on_redirect" => $include_on_redirect, + "field_id" => $field_id + )); + + try { + $db->execute(); + } catch (Exception $e) { + return array(false, $LANG["phrase_query_problem"] . $e->getMessage()); + } + + } else { + $field_name = General::extractArrayVal($info, "edit_field__field_name"); + $field_type_id = General::extractArrayVal($info, "edit_field__field_type"); + $field_size = General::extractArrayVal($info, "edit_field__field_size"); + $data_type = General::extractArrayVal($info, "edit_field__data_type"); + $col_name = General::extractArrayVal($info, "edit_field__db_column"); + + $db->query(" + UPDATE {PREFIX}form_fields + SET field_name = :field_name, + field_type_id = :field_type_id, + field_size = :field_size, + field_title = :field_title, + data_type = :data_type, + include_on_redirect = :include_on_redirect, + col_name = :col_name + WHERE field_id = :field_id + "); + $db->bindAll(array( + "field_name" => $field_name, + "field_type_id" => $field_type_id, + "field_size" => $field_size, + "field_title" => $display_name, + "data_type" => $data_type, + "include_on_redirect" => $include_on_redirect, + "col_name" => $col_name, + "field_id" => $field_id + )); + + try { + $db->execute(); + } catch (Exception $e) { + return array(false, $LANG["phrase_query_problem"] . $e->getMessage()); + } + + // if the column name or field size just changed, we need to "physically" update the form's database table + // If this fails, we rollback both the field TYPE and the field size. + // BUG The *one* potential issue here is if the user just deleted a field type, then updated a field which - for + // whatever reason - fails. But this is very much a fringe case + $old_field_size = $existing_form_field_info["field_size"]; + $old_col_name = $existing_form_field_info["col_name"]; + $old_field_type_id = $existing_form_field_info["field_type_id"]; + + if ($old_field_size != $field_size || $old_col_name != $col_name) { + $new_field_size_sql = $FIELD_SIZES[$field_size]["sql"]; + $table_name = "{PREFIX}form_{$form_id}"; + + list($is_success, $err_message) = General::alterTableColumn($table_name, $old_col_name, $col_name, $new_field_size_sql); + if ($is_success) { + if ($old_col_name != $col_name) { + $db_col_name_changes[] = $field_id; + } + } else { + $db->query(" + UPDATE {PREFIX}form_fields + SET field_type_id = :field_type_id, + field_size = :field_size, + col_name = :col_name + WHERE field_id = :field_id + "); + $db->bindAll(array( + "field_type_id" => $old_field_type_id, + "field_size" => $old_field_size, + "col_name" => $old_col_name, + "field_id" => $field_id + )); + + try { + $db->execute(); + } catch (Exception $e) { + return array(false, $LANG["phrase_query_problem"] . $e->getMessage()); + } + + return array(false, $LANG["phrase_query_problem"] . $err_message); + } + } + + // if the field type just changed, the field-specific settings are orphaned. Drop them. In this instance, the + // client-side code ensures that the contents of the second tab are always passed so the code below will add + // any default values that are needed + if ($old_field_type_id != $field_type_id) { + FieldSettings::deleteSettings($field_id); + } + } + } + + // if any of the database column names just changed we need to update any View filters that relied on them + if (!empty($db_col_name_changes)) { + foreach ($db_col_name_changes as $field_id) { + ViewFilters::updateFieldFilters($field_id); + } + } + + // TAB 2: update the custom field settings for this field type. tab2 can be any of these values: + // 1. a string "null": indicating that the user didn't change anything on the tab) + // 2. the empty string: indicating that things DID change, but nothing is being passed on. This can happen + // when the user checked the "Use Default Value" for all fields on the tab & the tab + // doesn't contain an option list or form field + // 3. an array of values + if (isset($tab_info["tab2"]) && $tab_info["tab2"] != "null") { + $info = is_array($tab_info["tab2"]) ? $tab_info["tab2"] : array(); + + // since the second tab is being updated, we can rely on all the latest & greatest values being passed + // in the request, so clean out all old values + FieldSettings::deleteSettings($field_id); + + // convert the $info (which is an array of hashes) into a friendlier hash. This makes detecting for Option + // List fields much easier + $setting_hash = array(); + for ($i=0; $i $setting_value) { + + // ignore the additional field ID and field order rows that are custom to Option List / Form Field types. They'll + // be handled below + if (preg_match("/edit_field__setting_(\d)+_field_id/", $setting_name) || preg_match("/edit_field__setting_(\d)+_field_order/", $setting_name)) { + continue; + } + + $setting_id = preg_replace("/edit_field__setting_/", "", $setting_name); + + // if this field is being mapped to a form field, we serialize the form ID, field ID and order into a single var and + // give it a "form_field:" prefix, so we know exactly what the data contains & we can select the appropriate form ID + // and not Option List ID on re-editing. This keeps everything pretty simple, rather than spreading the data amongst + // multiple fields + // TODO the setting value starting with "ft" is special?! There can be arbitrary fields with text in them... + if (preg_match("/^ft/", $setting_value)) { + $setting_value = preg_replace("/^ft/", "", $setting_value); + $setting_value = "form_field:$setting_value|" . $setting_hash["edit_field__setting_{$setting_id}_field_id"] . "|" + . $setting_hash["edit_field__setting_{$setting_id}_field_order"]; + } + + $new_settings[] = array( + "field_id" => $field_id, + "setting_id" => $setting_id, + "setting_value" => $setting_value + ); + } + + if (!empty($new_settings)) { + try { + $cols = array("field_id", "setting_id", "setting_value"); + $db->insertQueryMultiple("field_settings", $cols, $new_settings); + } catch (Exception $e) { + return array(false, $LANG["phrase_query_problem"] . ", " . $e->getMessage()); + } + } + } + + if (isset($tab_info["tab3"]) && $tab_info["tab3"] != "null") { + $validation = is_array($tab_info["tab3"]) ? $tab_info["tab3"] : array(); + + $db->query("DELETE FROM {PREFIX}field_validation WHERE field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + + foreach ($validation as $rule_info) { + // ignore the checkboxes - we don't need 'em + if (!preg_match("/^edit_field__v_(.*)_message$/", $rule_info["name"], $matches)) { + continue; + } + + $rule_id = $matches[1]; + $error_message = $rule_info["value"]; + + $db->query(" + INSERT INTO {PREFIX}field_validation (rule_id, field_id, error_message) + VALUES (:rule_id, :field_id, :error_message) + "); + $db->bindAll(array( + "rule_id" => $rule_id, + "field_id" => $field_id, + "error_message" => $error_message + )); + $db->execute(); + } + } + + $success = true; + $message = $LANG["notify_form_field_options_updated"]; + + extract(Hooks::processHookCalls("end", compact("field_id"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * This is called when the user updates the field type on the Edit Field Options page. It deletes all old + * now-irrelevant settings, but retains values that will not change based on field type. + * + * @param integer $form_id + * @param integer $field_id + * @param string $new_field_type + */ + public static function changeFieldType($form_id, $field_id, $new_field_type) + { + $db = Core::$db; + + $field_info = Fields::getFormField($field_id); + + // if the field just changes from one multi-select field to another (radio, checkboxes, select or multi-select) + // don't delete the field_option group: it's probable that they just wanted to switch the appearance. + $old_field_type = $field_info["field_type"]; + $multi_select_types = array("select", "multi-select", "radio-buttons", "checkboxes"); + + $clauses = array("field_type = '$new_field_type'"); + if (!in_array($old_field_type, $multi_select_types) || !in_array($new_field_type, $multi_select_types)) { + $clauses[] = "field_group_id = NULL"; + } + if ($new_field_type == "file") { + $clauses[] = "field_size = 'medium'"; + } + + $clauses_str = implode(",", $clauses); + + FieldSettings::deleteSettings($field_id); + + $db->query(" + UPDATE {PREFIX}form_fields + SET $clauses_str + WHERE field_id = :field_id + "); + $db->bind("field_id", $field_id); + $db->execute(); + + // if the user just changed to a file type, ALWAYS set the database field size to "medium" + if ($old_field_type != $new_field_type && $new_field_type == "file") { + General::alterTableColumn("{PREFIX}form_{$form_id}", $field_info["col_name"], $field_info["col_name"], "VARCHAR(255)"); + } + } + + + public static function updateFormField($field) + { + $db = Core::$db; + + if ($field["is_system_field"] == "yes") { + $db->query(" + UPDATE {PREFIX}form_fields + SET field_title = :field_title, + include_on_redirect = :include_on_redirect, + list_order = :list_order, + is_new_sort_group = :is_new_sort_group + WHERE field_id = :field_id + "); + $db->bindAll(array( + "field_title" => $field["display_name"], + "include_on_redirect" => $field["include_on_redirect"], + "list_order" => $field["list_order"], + "is_new_sort_group" => $field["is_new_sort_group"], + "field_id" => $field["field_id"] + )); + } else { + $db->query(" + UPDATE {PREFIX}form_fields + SET field_name = :field_name, + field_title = :field_title, + field_size = :field_size, + col_name = :col_name, + data_type = :data_type, + field_type_id = :field_type_id, + include_on_redirect = :include_on_redirect, + list_order = :list_order, + is_new_sort_group = :is_new_sort_group + WHERE field_id = :field_id + "); + $db->bindAll(array( + "field_name" => $field["form_field_name"], + "field_title" => $field["display_name"], + "field_size" => $field["field_size"], + "data_type" => $field["data_type"], + "col_name" => $field["col_name"], + "field_type_id" => $field["field_type_id"], + "include_on_redirect" => $field["include_on_redirect"], + "list_order" => $field["list_order"], + "is_new_sort_group" => $field["is_new_sort_group"], + "field_id" => $field["field_id"] + )); + } + + try { + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + } + + + /** + * Deletes a single field from a form configuration, and any references to it in any other tables. This is + * executed as a single transaction to ensure data integrity. + */ + public static function deleteFormField($form_id, $field_id) + { + $db = Core::$db; + + // find out if the form exists and is complete + $form_info = Forms::getForm($form_id); + $form_table_exists = $form_info["is_complete"] == "yes"; + + // get the form field info before we delete it + $old_field_info = self::getFormField($field_id); + $drop_column = $old_field_info["col_name"]; + + try { + $db->beginTransaction(); + + $db->query("DELETE FROM {PREFIX}form_fields WHERE field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}field_validation WHERE field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + + if ($form_table_exists) { + $db->query("DELETE FROM {PREFIX}new_view_submission_defaults WHERE field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + + // see if this field had been flagged as an email field (either as the email field, first or last name). + // if it's the email field, delete the whole row. If it's either the first or last name, just empty the value + $db->query("SELECT form_email_id FROM {PREFIX}form_email_fields WHERE email_field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + + foreach ($db->fetchAll() as $row) { + Emails::unsetFieldAsEmailField($row["email_form_id"]); + } + + $db->query("UPDATE {PREFIX}form_email_fields SET first_name_field_id = '' WHERE first_name_field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + + $db->query("UPDATE {PREFIX}form_email_fields SET last_name_field_id = '' WHERE last_name_field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + + // get a list of any Views that referenced this form field + $db->query("SELECT view_id FROM {PREFIX}view_fields WHERE field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + + $view_ids = $db->fetchAll(PDO::FETCH_COLUMN); + foreach ($view_ids as $view_id) { + ViewFields::deleteViewField($view_id, $field_id); + } + + // now actually remove the column from the table + $db->query("ALTER TABLE {PREFIX}form_$form_id DROP $drop_column"); + $db->execute(); + + // if any Views had this field as the default sort order, reset them to having the submission_date + // field as the default sort order + $db->query(" + UPDATE {PREFIX}views + SET default_sort_field = 'submission_date', + default_sort_field_order = 'desc' + WHERE default_sort_field = :default_sort_field AND + form_id = :form_id + "); + + $db->bindAll(array( + "default_sort_field" => $drop_column, + "form_id" => $form_id + )); + $db->execute(); + } + + $db->processTransaction(); + + } catch (Exception $e) { + $db->rollbackTransaction(); + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + } + } + + public static function deleteAllFormFields($form_id) + { + $db = Core::$db; + + $db->query("DELETE FROM {PREFIX}form_fields WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + } +} + diff --git a/global/code/Files.class.php b/global/code/Files.class.php new file mode 100644 index 00000000..a95e25c8 --- /dev/null +++ b/global/code/Files.class.php @@ -0,0 +1,490 @@ + + * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function checkUploadFolder($folder) + { + $LANG = Core::$L; + + // first, check server's temporary file upload folder + $upload_tmp_dir = ini_get("upload_tmp_dir"); + + if (!empty($upload_tmp_dir)) { + if (!is_dir($upload_tmp_dir)) { + $replacement_info = array("upload_folder" => $upload_tmp_dir); + $message = General::evalSmartyString($LANG["validation_invalid_upload_folder"], $replacement_info); + return array(false, $message); + } + if (!is_writable($upload_tmp_dir)) { + return array(false, $LANG["validation_upload_folder_not_writable"]); + } + } + + // now check the folder is really a folder + if (!is_dir($folder)) { + return array(false, $LANG["validation_invalid_folder"]); + } + if (!is_writable($folder)) { + return array(false, $LANG["validation_folder_not_writable"]); + } + return array(true, $LANG["notify_folder_correct_permissions"]); + } + + /** + * This is passed all necessary information about the submission & file fields that need to be deleted. Modules + * then tie into this method via hooks to handle deletion of the actual files. + * + * Modules that extend this function should return $problems. That should be an array of hashes. Each hash + * having keys "filename" and "error". Since the calling functions will blithely delete the submissions even + * if the file deletion fails, no other info is worth returning. + * + * @param integer $form_id + * @param array $file_info an array of hashes. Each hash has the following keys (all self-explanatory): + * submission_id - + * field_id - + * filename - + * @param string $context. Just used to pass a little more info to the hook. This is the context in which this + * function is being called; i.e. the function name / action. + */ + public static function deleteSubmissionFiles($form_id, $file_field_info) + { + $success = true; + $problems = array(); + + extract(Hooks::processHookCalls("start", compact("form_id", "file_field_info"), array("success", "problems")), EXTR_OVERWRITE); + + return array($success, $problems); + } + + + /** + * This function should be called every time you try to create a file in a folder. It examines the contents of + * the folder to see if a filename already exists with that name. If so, it returns a new, "free" filename. + * + * The new filenames are of the form "x_$filename", where x is an integer starting at 1. + * + * @param string $folder The folder to examine + * @param string $filename The name of the filename to check for + * @return string The name of a free filename + */ + public static function getUniqueFilename($folder, $filename) + { + // check the supplied dir is a valid, readable directory + if (!is_dir($folder) && is_readable($folder)) { + return; + } + + // the filename string to return + $return_filename = $filename; + + // store all the filenames in the folder into an array + $filenames = array(); + if ($handle = opendir($folder)) { + while (false !== ($file = readdir($handle))) { + $filenames[] = $file; + } + } + + // if a file with the same name exists in the directory, find the next free filename of the form: + // x_$filename, where x is a number starting with 1 + if (in_array($filename, $filenames)) { + + // if it already starts with x_, strip off the prefix. + if (preg_match("/^\d+_/", $filename)) { + $filename = preg_replace("/^\d+_/", "", $filename); + } + + // now find the next available filename + $next_num = 1; + $return_filename = $next_num . "_" . $filename; + while (in_array($return_filename, $filenames)) { + $return_filename = $next_num . "_" . $filename; + $next_num++; + } + } + + extract(Hooks::processHookCalls("end", compact("return_filename"), array("return_filename")), EXTR_OVERWRITE); + + // return the appropriate filename + return $return_filename; + } + + + /** + * Confirms that a folder dir and a URL purportedly linking to that folder do, in fact, match. + * + * If the URL does point to the folder it returns true; otherwise returns false. The function works + * by creating a temporary file in $folder, then try and scrape it via file(). If it exists, the + * folder is a match for URL and it returns true. + * + * Assumption: the "allow_url_fopen" setting in php.ini is set to "1" (Checks for this). If it's + * not set it always returns false. + * + * @param string $folder a folder on this server. + * @param string $url The URL that claims to point to $folder + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function checkFolderUrlMatch($folder, $url) + { + $LANG = Core::$L; + $default_error_reporting = Core::getDefaultErrorReporting(); + $debug_enabled = Core::isDebugEnabled(); + + $folder = rtrim(trim($folder), "/\\"); + $url = rtrim(trim($url), "/\\"); + + list($success) = Files::checkUploadFolder($folder); + if (!$success) { + return array(false, $LANG["validation_folder_invalid_permissions"]); + } + if (ini_get("allow_url_fopen") != "1") { + return array(false, $LANG["notify_allow_url_fopen_not_set"]); + } + + // create the temp file + $test_file = "ft_" . date("U") . ".tmp"; + + if (($fh = fopen("$folder/$test_file", "w")) === false) { + return array(true, "Problem creating test file."); + } + + fwrite($fh, "Folder-URL match test"); + fclose($fh); + + // now try and read the file. We activate error reporting for the duration of this test so we + // can examine any error messages that occur to provide some pointers for the user + error_reporting(2047); + ob_start(); + $result = @file("$url/$test_file"); + $errors = ob_get_clean(); + error_reporting($default_error_reporting); + + // delete temp file + @unlink("$folder/$test_file"); + + // if $errors is empty, that means there was a match + if (is_array($result) && $result[0] == "Folder-URL match test") { + return array(true, $LANG["notify_folder_url_match"]); + } else { + $debug = ($debug_enabled) ? "
$errors" : ""; + + // let's take a look at the warning. [Assumption: error messages in English] + // "404 Not Found" - Not a match + if (preg_match("/404 Not Found/", $errors)) { + return array(false, $LANG["notify_folder_url_no_match"] . " $debug"); + } // "Authorization Required" - PHP isn't allowed to look at that URL (URL protected by a .htaccess probably) + else { + if (preg_match("/Authorization Required/", $errors)) { + return array(false, $LANG["notify_folder_url_no_access"] . " $debug"); + } + } + + return array(false, $LANG["notify_folder_url_unknown_error"]); + } + } + + + /** + * Return the extension of a file. Assumes it has one. + * @param string $filename + * @return string + */ + public static function getFilenameExtension($filename, $lowercase = false) + { + $sections = explode(".", $filename); + $extension = ($lowercase) ? mb_strtolower($sections[count($sections) - 1]) : $sections[count($sections) - 1]; + return $extension; + } + + + /** + * Moves all files that are associated with a particular form field. This is used whenever the path for a particular + * form field is changed. It it called automatically by the script to move all files to the correct location. This can + * be used for standard file fields or for images uploaded through the Image Manager module. + * + * @param integer $field_id + * @param string $source_folder + * @param string $target_folder + * @param string $image_type if the files being moved are images from the Image Manager, the script need to know + * what image type it is (main_image, main_thumb, search_results_thumb) to know which ones to move. + */ + public static function moveFieldFiles($field_id, $source_folder, $target_folder, $image_type = "") + { + $db = Core::$db; + $multi_val_delimiter = Core::getMultiFieldValDelimiter(); + + if ($source_folder == $target_folder) { + return; + } + + $field_info = Fields::getFormField($field_id); + $col_name = $field_info["col_name"]; + $field_type = $field_info["field_type"]; + $form_id = $field_info["form_id"]; + + if ($field_type != "file" && $field_type != "image") { + return; + } + if ($field_type == "image" && empty($image_type)) { + return; + } + + // TODO '''' correct? + $db->query(" + SELECT submission_id, $col_name + FROM {PREFIX}form_{$form_id} + WHERE $col_name != '''' + "); + $db->execute(); + + foreach ($db->fetchAll() as $row) { + $submission_id = $row["submission_id"]; + $filename = $row[$col_name]; + + // if this is an image, the field actually contains up to THREE filenames (main image, main thumb, search + // results thumb). Find the one we want to move and overwrite $filename + if ($field_type == "image") { + $image_info = ft_get_filenames_from_image_field_string($filename); + + switch ($image_type) { + case "main_image": + $filename = $image_info["main_image"]; + break; + case "main_thumb": + $filename = $image_info["main_thumb"]; + break; + case "search_results_thumb": + $filename = $image_info["search_results_thumb"]; + break; + default: + break; + } + } + + // move the file + list($success, $new_filename) = Files::moveFile($source_folder, $target_folder, $filename); + + // if the file was successfully moved but RENAMED, update the database record + if ($success && $filename != $new_filename) { + if ($image_type = "file") { + $db_field_str = $new_filename; + } else { + switch ($image_type) { + case "main_image": + $image_field_string_sections = array( + "main_image:$new_filename", + "main_thumb:{$image_info["main_thumb"]}", + "search_results_thumb:{$image_info["search_results_thumb"]}" + ); + break; + case "main_thumb": + $image_field_string_sections = array( + "main_image:{$image_info["main_image"]}", + "main_thumb:$new_filename", + "search_results_thumb:{$image_info["search_results_thumb"]}" + ); + break; + case "search_results_thumb": + $image_field_string_sections = array( + "main_image:{$image_info["main_image"]}", + "main_thumb:{$image_info["main_thumb"]}", + "search_results_thumb:$new_filename" + ); + break; + } + + $db_field_str = implode($multi_val_delimiter, $image_field_string_sections); + } + + $db->query(" + UPDATE {PREFIX}form_{$form_id} + SET $col_name = :col_name_value + WHERE submission_id = :submission_id + "); + $db->bindAll(array( + "col_name_value" => $db_field_str, + "submission_id" => $submission_id + )); + } + } + } + + + /** + * Moves a file from one folder to another. If the filename is not unique, it goes ahead and gets one that + * is. In either case it returns the filename - new or old. + * + * @param string $source + * @param string $target + * @return array [0] T/F [1] the filename (if successful), the error message if not + */ + public static function moveFile($source_folder, $target_folder, $filename) + { + $LANG = Core::$L; + + // check the folder is valid and writable + if (!is_dir($target_folder) || !is_writable($target_folder)) { + return array(false, $LANG["notify_invalid_upload_folder"]); + } + + // ensure the filename is unique + $unique_filename = Files::getUniqueFilename($target_folder, $filename); + + // copy file to the new folder and remove the old one + if (@rename("$source_folder/$filename", "$target_folder/$unique_filename")) { + @chmod("$target_folder/$unique_filename", 0777); + @unlink("$source_folder/$filename"); + return array(true, $unique_filename); + } else { + return array(false, $LANG["notify_file_not_uploaded"]); + } + } + + + /** + * A simple, no-frills file upload function. It: + * - checks the folder exists & has write permissions + * - ensures the file has a unique name & doesn't overwrite anything else + * + * @param string the folder to upload to + * @param $filename the (desired) name to call the file (will be renamed if a file with the same + * name exists) + * @param $tmp_location the location of the temporary file + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ * [2]: the unique filename (or empty, if not successful) + */ + public static function uploadFile($folder, $filename, $tmp_location) + { + $LANG = Core::$L; + + // check the folder is valid and writable + if (!is_dir($folder) || !is_writable($folder)) { + return array(false, $LANG["notify_invalid_upload_folder"], ""); + } + + // ensure the filename is unique + $unique_filename = Files::getUniqueFilename($folder, $filename); + + // copy file to uploads folder and remove temporary file + if (rename($tmp_location, "$folder/$unique_filename")) { + @chmod("$folder/$unique_filename", 0777); + return array(true, $LANG["notify_file_uploaded"], $unique_filename); + } else { + return array(false, $LANG["notify_file_not_uploaded"], ""); + } + } + + + /** + * This function deletes a folder and all containing files. If it's unable to delete ANYTHING - file or folder, + * it halts immediately and returns false. + * + * This also sucks. This has failed to properly delete module folders since 2.0.0. + * + * @param string $folder + * @return boolean + */ + public static function deleteFolder($directory) + { + if (substr($directory, -1) == '/') { + $directory = substr($directory, 0, -1); + } + if (!file_exists($directory) || !is_dir($directory)) { + return false; + } elseif (is_readable($directory)) { + $handle = opendir($directory); + while (false !== ($item = readdir($handle))) { + if ($item != '.' && $item != '..') { + $path = $directory . '/' . $item; + if (is_dir($path)) { + Files::deleteFolder($path); + } else { + unlink($path); + } + } + } + closedir($handle); + if (!rmdir($directory)) { + return false; + } + } + return true; + } + + + /** + * Deletes all files associated with any submission in the form. + */ + public static function removeFormFiles($form_id, $form_fields) + { + $db = Core::$db; + + try { + $db->query("SELECT submission_id FROM {PREFIX}form_{$form_id}"); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $file_fields_to_delete = array(); + + foreach ($db->fetchAll() as $row) { + $submission_id = $row["submission_id"]; + + foreach ($form_fields as $form_field_info) { + if ($form_field_info["is_file_field"] == "no") { + continue; + } + + // I really don't like this... what should be done is do a SINGLE query after this loop is complete + // to return a map of field_id to values. That would then update $file_fields_to_delete + // with a fraction of the cost + $submission_info = Submissions::getSubmissionInfo($form_id, $submission_id); + $filename = $submission_info[$form_field_info["col_name"]]; + + // if no filename was stored, it was empty - just continue + if (empty($filename)) { + continue; + } + + $file_fields_to_delete[] = array( + "submission_id" => $submission_id, + "field_id" => $form_field_info["field_id"], + "field_type_id" => $form_field_info["field_type_id"], + "filename" => $filename + ); + } + } + + $file_delete_problems = array(); + if (!empty($file_fields_to_delete)) { + list($success, $file_delete_problems) = Files::deleteSubmissionFiles($form_id, $file_fields_to_delete); + } + + return $file_delete_problems; + } + +} diff --git a/global/code/Forms.class.php b/global/code/Forms.class.php new file mode 100644 index 00000000..c2bfad96 --- /dev/null +++ b/global/code/Forms.class.php @@ -0,0 +1,1948 @@ + true)); + } + + + /** + * Caches the total number of (finalized) submissions in a particular form - or all forms - in the + * "form_{$form_id}_num_submissions" sessions key. That value is used on the administrator's main Forms + * page to list the form submission count. + * + * @param integer $form_id + */ + public static function cacheFormStats($form_id = "") + { + $db = Core::$db; + + $where_clause = ""; + if (!empty($form_id)) { + $where_clause = "AND form_id = :form_id"; + } + + $db->query(" + SELECT form_id + FROM {PREFIX}forms + WHERE is_complete = 'yes' + $where_clause + "); + if (!empty($form_id)) { + $db->bind("form_id", $form_id); + } + $db->execute(); + $form_ids = $db->fetchAll(PDO::FETCH_COLUMN); + + // loop through all forms, extract the submission count and first submission date + foreach ($form_ids as $form_id) { + try { + $db->query(" + SELECT count(*) + FROM {PREFIX}form_$form_id + WHERE is_finalized = 'yes' + "); + $db->execute(); + $count = $db->fetch(PDO::FETCH_COLUMN); + Sessions::set("form_{$form_id}_num_submissions", $count); + } catch (Exception $e) { + // need a softer error here. If the form table doesn't exist, we need to log the issue. +// Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); +// exit; + } + } + } + + + /** + * Retrieves information about all forms associated with a particular account. Since 2.0.0 this function lets you + * SEARCH the forms, but it still returns all results - not a page worth (the reason being: the vast majority of + * people use Form Tools for a small number of forms < 100) so the form tables are displaying via JS, with all + * results actually returned and hidden in the page ready to be displayed. + * + * @param array $search_criteria an optional hash with any of the following keys: + * "account_id" - if blank, return all finalized forms, otherwise returns the forms associated with + * this particular client. + * "is_admin" - (boolean) whether or not the user retrieving the data is an administrator or not. + * If it is, ALL forms are retrieved - even those that aren't yet finalized. + * "status" - (string) online / offline / "" (empty string = any) + * "keyword" - (any string) + * "order" - (string) form_id-DESC, form_id-ASC, form_name-DESC, form-name-ASC, + * status-DESC, status-ASC + * @return array returns an array of form hashes + */ + public static function searchForms($params = array()) + { + $db = Core::$db; + + $search_criteria = array_merge(array( + "account_id" => "", + "is_admin" => false, + "status" => "online", + "keyword" => "", + "order" => "form_id-DESC" + ), $params); + + extract(Hooks::processHookCalls("start", compact("account_id", "is_admin", "search_criteria"), array("search_criteria")), EXTR_OVERWRITE); + + $results = self::getSearchFormSqlClauses($search_criteria); + + // get the form IDs. All info about the forms will be retrieved in a separate query + $db->query(" + SELECT form_id + FROM {PREFIX}forms + {$results["where_clause"]} + {$results["order_clause"]} + "); + $db->execute(); + + // now retrieve the basic info (id, first and last name) about each client assigned to this form. This + // takes into account whether it's a public form or not and if so, what clients are in the omit list + $omitted_forms = $results["omitted_forms"]; + $form_info = array(); + foreach ($db->fetchAll() as $row) { + $form_id = $row["form_id"]; + + // if this was a search for a single client, filter out those public forms which include their account ID + // on the form omit list + if (!empty($omitted_forms) && in_array($form_id, $omitted_forms)) { + continue; + } + $form_info[] = Forms::getForm($form_id); + } + + extract(Hooks::processHookCalls("end", compact("account_id", "is_admin", "search_criteria", "form_info"), array("form_info")), EXTR_OVERWRITE); + + return $form_info; + } + + + /** + * Retrieves all information about single form; all associated client information is stored in the client_info key, + * as an array of hashes. Note: this function returns information about any form - complete or incomplete. + * + * @param integer $form_id the unique form ID + * @return array a hash of form information. If the form isn't found, it returns an empty array + */ + public static function getForm($form_id) + { + $db = Core::$db; + $form_info = Forms::getFormRow($form_id); + + if (empty($form_info)) { + return array(); + } + + $form_info["client_info"] = Forms::getFormClients($form_id); + $form_info["client_omit_list"] = ($form_info["access_type"] == "public") ? OmitLists::getPublicFormOmitList($form_id) : array(); + + $db->query("SELECT * FROM {PREFIX}multi_page_form_urls WHERE form_id = :form_id ORDER BY page_num"); + $form_info["multi_page_form_urls"] = array(); + $db->bind("form_id", $form_id); + $db->execute(); + + foreach ($db->fetchAll() as $row) { + $form_info["multi_page_form_urls"][] = $row; + } + + extract(Hooks::processHookCalls("end", compact("form_id", "form_info"), array("form_info")), EXTR_OVERWRITE); + + return $form_info; + } + + + /** + * Returns an array of account information of all clients associated with a particular form. This + * function is smart enough to return the complete list, depending on whether the form has public access + * or not. If it's a public access form, it takes into account those clients on the form omit list. + * + * @param integer $form + * @return array + */ + public static function getFormClients($form_id) + { + $db = Core::$db; + + $db->query("SELECT access_type FROM {PREFIX}forms WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + + $access_type_info = $db->fetch(); + $access_type = $access_type_info["access_type"]; + + $accounts = array(); + if ($access_type == "public") { + $client_omit_list = OmitLists::getPublicFormOmitList($form_id); + $all_clients = Clients::getList(); + + foreach ($all_clients as $client_info) { + $client_id = $client_info["account_id"]; + if (!in_array($client_id, $client_omit_list)) { + $accounts[] = $client_info; + } + } + } else { + $db->query(" + SELECT * + FROM {PREFIX}client_forms cf, {PREFIX}accounts a + WHERE cf.form_id = :form_id AND + cf.account_id = a.account_id + "); + $db->bind("form_id", $form_id); + $db->execute(); + + foreach ($db->fetchAll() as $row) { + $accounts[] = $row; + } + } + + extract(Hooks::processHookCalls("end", compact("form_id", "accounts"), array("accounts")), EXTR_OVERWRITE); + + return $accounts; + } + + + /** + * Added in 2.1.0, this creates an Internal form with a handful of custom settings. + * + * @param $request array the POST request containing the form name, number of fields and access type. + */ + public static function createInternalForm($request) + { + $db = Core::$db; + $LANG = Core::$L; + + $rules = array(); + $rules[] = "required,form_name,{$LANG["validation_no_form_name"]}"; + $rules[] = "required,num_fields,{$LANG["validation_no_num_form_fields"]}"; + $rules[] = "digits_only,num_fields,{$LANG["validation_invalid_num_form_fields"]}"; + $rules[] = "required,access_type,{$LANG["validation_no_access_type"]}"; + + $errors = validate_fields($request, $rules); + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors)); + } + + $info = $request; + $config = array( + "form_type" => "internal", + "form_name" => $info["form_name"], + "submission_type" => "direct", + "access_type" => $info["access_type"] + ); + + // set up the entry for the form + list($success, $message, $new_form_id) = Forms::setupForm($config); + if (!$success) { + return array($success, $message); + } + + $form_data = array( + "form_tools_form_id" => $new_form_id, + "form_tools_display_notification_page" => false + ); + + for ($i = 1; $i <= $info["num_fields"]; $i++) { + $form_data["field{$i}"] = $i; + } + self::initializeForm($form_data); + + $form_fields = Fields::getFormFields($new_form_id); + + $order = 1; + + // if the user just added a form with a lot of fields (over 50), the database row size will be too + // great. Varchar fields (which with utf-8 equates to 1220 bytes) in a table can have a combined row + // size of 65,535 bytes, so 53 is the max. The client-side validation limits the number of fields to + // 1000. Any more will throw an error. + $field_size_clause = ($info["num_fields"] > 50) ? ", field_size = 'small'" : ""; + + $field_name_prefix = $LANG["word_field"]; + foreach ($form_fields as $field_info) { + if (preg_match("/field(\d+)/", $field_info["field_name"], $matches)) { + $field_id = $field_info["field_id"]; + $db->query(" + UPDATE {PREFIX}form_fields + SET field_title = :field_title, + col_name = :col_name + $field_size_clause + WHERE field_id = $field_id + "); + $db->bindAll(array( + "field_title" => "$field_name_prefix $order", + "col_name" => "col_$order" + )); + $db->execute(); + $order++; + } + } + + Forms::finalizeForm($new_form_id); + + // if the form has an access type of "private" add whatever client accounts the user selected + if ($info["access_type"] == "private") { + if (isset($info["selected_client_ids"]) && is_array($info["selected_client_ids"])) { + Forms::addClientsToForm($new_form_id, $info["selected_client_ids"]); + } + } + + return array(true, $LANG["notify_internal_form_created"], $new_form_id); + } + + + public static function setSubmissionType($form_id, $submission_type) + { + if (empty($form_id) || empty($submission_type)) { + return; + } + + $db = Core::$db; + $db->query(" + UPDATE {PREFIX}forms + SET submission_type = :submission_type + WHERE form_id = :form_id + "); + $db->bindAll(array( + "form_id" => $form_id, + "submission_type" => $submission_type + )); + $db->execute(); + } + + + /** + * Used on the Add External form process. Returns appropriate values to show in step 2 based on whether the user + * just arrived, just updated the values or is returning to finish configuring a new form from earlier. + */ + public static function addFormGetExternalFormValues($source, $form_id = "", $post = array()) + { + $page_values = array(); + $page_values["client_info"] = array(); + + switch ($source) { + case "new_form": + $page_values["form_name"] = ""; + $page_values["form_url"] = ""; + $page_values["is_multi_page_form"] = "no"; + $page_values["multi_page_form_urls"] = array(); + $page_values["redirect_url"] = ""; + $page_values["access_type"] = "admin"; + $page_values["hidden_fields"] = ""; + break; + + case "post": + $page_values["form_name"] = $post["form_name"]; + $page_values["form_url"] = $post["form_url"]; + $page_values["is_multi_page_form"] = isset($post["is_multi_page_form"]) ? "yes" : "no"; + $page_values["redirect_url"] = $post["redirect_url"]; + $page_values["access_type"] = $post["access_type"]; + + if (!empty($form_id)) { + $page_values["hidden_fields"] = " + + "; + } else { + $page_values["hidden_fields"] = ""; + } + break; + + case "database": + if (empty($form_id)) { + return array(); + } + + $form_info = Forms::getForm($form_id); + $page_values["form_name"] = $form_info["form_name"]; + $page_values["form_url"] = $form_info["form_url"]; + $page_values["is_multi_page_form"] = $form_info["is_multi_page_form"]; + $page_values["multi_page_form_urls"] = $form_info["multi_page_form_urls"]; + $page_values["redirect_url"] = $form_info["redirect_url"]; + $page_values["access_type"] = $form_info["access_type"]; + $page_values["client_info"] = $form_info["client_info"]; + + $page_values["hidden_fields"] = " + + "; + break; + } + + return $page_values; + } + + + /** + * This function sets up the main form values in preparation for a test submission by the actual form. It is + * called from step 2 of the form creation page for totally new forms. + * + * @param array $info this parameter should be a hash (e.g. $_POST or $_GET) containing the various fields from + * the step 1 add form page. + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ * [2]: new form ID (success only) + */ + public static function setupForm($info) + { + $db = Core::$db; + $LANG = Core::$L; + + $success = true; + $message = ""; + + // check required $info fields. This changes depending on the form type (external / internal). Validation + // for the internal forms is handled separately [inelegant!] + $rules = array(); + if ($info["form_type"] == "external") { + $rules[] = "required,form_name,{$LANG["validation_no_form_name"]}"; + $rules[] = "required,access_type,{$LANG["validation_no_access_type"]}"; + } + $errors = validate_fields($info, $rules); + + // if there are errors, piece together an error message string and return it + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors)); + } + + $user_ids = isset($info["selected_client_ids"]) ? $info["selected_client_ids"] : array(); + $is_multi_page_form = isset($info["is_multi_page_form"]) ? $info["is_multi_page_form"] : "no"; + $redirect_url = isset($info["redirect_url"]) ? trim($info["redirect_url"]) : ""; + + if ($is_multi_page_form == "yes") { + $form_url = $info["multi_page_urls"][0]; + } else { + // this won't be defined for Internal forms + $form_url = isset($info["form_url"]) ? $info["form_url"] : ""; + } + + $db->query(" + INSERT INTO {PREFIX}forms (form_type, access_type, submission_type, date_created, is_active, is_complete, + is_multi_page_form, form_name, form_url, redirect_url, edit_submission_page_label, add_submission_button_label) + VALUES (:form_type, :access_type, :submission_type, :now, :is_active, :is_complete, :is_multi_page_form, + :form_name, :form_url, :redirect_url, :phrase_edit_submission, :phrase_add_submission) + "); + $db->bindAll(array( + "form_type" => $info["form_type"], + "access_type" => $info["access_type"], + "submission_type" => $info["submission_type"], + "now" => General::getCurrentDatetime(), + "is_active" => "no", + "is_complete" => "no", + "is_multi_page_form" => $is_multi_page_form, + "form_name" => trim($info["form_name"]), + "form_url" => $form_url, + "redirect_url" => $redirect_url, + "phrase_edit_submission" => $LANG["phrase_edit_submission"], + "phrase_add_submission" => html_entity_decode($LANG["word_add_rightarrow"]) + )); + $db->execute(); + + $new_form_id = $db->getInsertId(); + + // store which clients are assigned to this form + self::setFormClients($new_form_id, $user_ids); + + // if this is a multi-page form, add the list of pages in the form + self::setMultiPageUrls($new_form_id, $is_multi_page_form === "yes" ? $info["multi_page_urls"] : array()); + + return array($success, $message, $new_form_id); + } + + + public static function setFormClients($form_id, $client_ids) + { + $db = Core::$db; + + // remove any old mappings + Forms::deleteClientForms($form_id); + + // add the new clients (assuming there are any) + foreach ($client_ids as $client_id) { + $db->query(" + INSERT INTO {PREFIX}client_forms (account_id, form_id) + VALUES (:account_id, :form_id) + "); + $db->bindAll(array( + "account_id" => $client_id, + "form_id" => $form_id + )); + $db->execute(); + } + } + + public static function setMultiPageUrls($form_id, $urls) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}multi_page_form_urls WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + + $db->beginTransaction(); + $page_num = 1; + foreach ($urls as $url) { + if (empty($url)) { + continue; + } + $db->query(" + INSERT INTO {PREFIX}multi_page_form_urls (form_id, form_url, page_num) + VALUES (:form_id, :url, :page_num) + "); + $db->bindAll(array( + "form_id" => $form_id, + "url" => $url, + "page_num" => $page_num + )); + $page_num++; + } + $db->processTransaction(); + } + + + /** + * "Uninitializes" a form, letting the user to resend the test submission. + * @param integer $form_id The unique form ID + */ + public static function uninitializeForm($form_id) + { + Core::$db->query(" + UPDATE {PREFIX}forms + SET is_initialized = 'no' + WHERE form_id = :form_id + "); + Core::$db->bind("form_id", $form_id); + Core::$db->execute(); + } + + + /** + * Examines a form to see if it contains a file upload field. + * @param integer $form_id + * @return boolean + */ + public static function getNumFileUploadFields($form_id) + { + $db = Core::$db; + + $db->query(" + SELECT count(*) as c + FROM {PREFIX}form_fields ff, {PREFIX}field_types fft + WHERE ff.form_id = :form_id AND + ff.field_type_id = fft.field_type_id AND + fft.is_file_field = 'yes' + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $result = $db->fetch(); + $count = $result["c"]; + + return $count > 0; + } + + + /** + * This checks to see the a form exists in the database. It's just used to confirm a form ID is valid. + * @param integer $form_id + * @param boolean $allow_incompleted_forms an optional value to still return TRUE for incomplete forms + * @return boolean + */ + public static function checkFormExists($form_id, $allow_incompleted_forms = false) + { + $form = Forms::getFormRow($form_id); + + $is_valid_form_id = false; + if (($form && $allow_incompleted_forms) || ($form["is_initialized"] == "yes" && $form["is_complete"] == "yes")) { + $is_valid_form_id = true; + } + + return $is_valid_form_id; + } + + + /** + * Called by the administrator only. Updates the list of clients on a public form's omit list. + * + * @param array $info + * @param integer $form_id + * @return array [0] T/F, [1] message + */ + public static function updatePublicFormOmitList($info, $form_id) + { + $db = Core::$db; + $LANG = Core::$L; + + OmitLists::deleteFormOmitList($form_id); + + $client_ids = (isset($info["selected_client_ids"])) ? $info["selected_client_ids"] : array(); + foreach ($client_ids as $account_id) { + $db->query(" + INSERT INTO {PREFIX}public_form_omit_list (form_id, account_id) + VALUES (:form_id, :account_id) + "); + $db->bindAll(array( + "form_id" => $form_id, + "account_id" => $account_id + )); + $db->execute(); + } + + return array(true, $LANG["notify_public_form_omit_list_updated"]); + } + + + /** + * This returns the IDs of the previous and next forms, as determined by the administrators current + * search and sort. + * + * Not happy with this function! Getting this info is surprisingly tricky, once you throw in the sort clause. + * Still, the number of client accounts are liable to be quite small, so it's not such a sin. + * + * @param integer $form_id + * @param array $search_criteria + * @return array prev_form_id => the previous account ID (or empty string) + * next_form_id => the next account ID (or empty string) + */ + public static function getFormPrevNextLinks($form_id, $search_criteria = array()) + { + $db = Core::$db; + + $results = self::getSearchFormSqlClauses($search_criteria); + + $db->query(" + SELECT form_id + FROM {PREFIX}forms + {$results["where_clause"]} + {$results["order_clause"]} + "); + $db->execute(); + + $sorted_form_ids = array(); + foreach ($db->fetchAll() as $row) { + $sorted_form_ids[] = $row["form_id"]; + } + $current_index = array_search($form_id, $sorted_form_ids); + + $return_info = array("prev_form_id" => "", "next_form_id" => ""); + if ($current_index === 0) { + if (count($sorted_form_ids) > 1) { + $return_info["next_form_id"] = $sorted_form_ids[$current_index + 1]; + } + } else if ($current_index === count($sorted_form_ids) - 1) { + if (count($sorted_form_ids) > 1) { + $return_info["prev_form_id"] = $sorted_form_ids[$current_index - 1]; + } + } else { + $return_info["prev_form_id"] = $sorted_form_ids[$current_index - 1]; + $return_info["next_form_id"] = $sorted_form_ids[$current_index + 1]; + } + + return $return_info; + } + + + /** + * Returns a list of (completed, finalized) forms, ordered by form name. + * @return array + */ + public static function getFormList() + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}forms + WHERE is_complete = 'yes' AND + is_initialized = 'yes' + ORDER BY form_name ASC + "); + $db->execute(); + + return $db->fetchAll(); + } + + + /** + * Returns the name of a form. Generally used in presentation situations. + * @param integer $form_id + */ + public static function getFormName($form_id) + { + $db = Core::$db; + + $db->query("SELECT form_name FROM {PREFIX}forms WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + $result = $db->fetch(); + + return $result["form_name"]; + } + + + /** + * Returns all the column names for a particular form. The optional $view_id field lets you return + * only those columns that are associated with a particular View. The second optional setting + * lets you only return custom form fields (everything excep submission ID, submission date, + * last modified date, IP address and is_finalized) + * + * N.B. Updated in 2.0.0 to query the form_fields table instead of the actual form table and extract + * the form column names from that. This should be quicker & allows us to return the columns in the + * appropriate list_order. + * + * @param integer $form_id the unique form ID + * @param integer $view_id (optional) if supplied, returns only those columns that appear in a + * particular View + * @param boolean $omit_system_fields + * @return array A hash of form: [DB column name] => [column display name]. If the database + * column doesn't have a display name (like with submission_id) the value is set to the same + * as the key. + */ + public static function getFormColumnNames($form_id, $view_id = "", $omit_system_fields = false) + { + $db = Core::$db; + + $db->query(" + SELECT col_name, field_title, is_system_field + FROM {PREFIX}form_fields + WHERE form_id = :form_id + ORDER BY list_order + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $view_col_names = array(); + if (!empty($view_id)) { + $view_fields = ViewFields::getViewFields($view_id); + foreach ($view_fields as $field_info) { + $view_col_names[] = $field_info["col_name"]; + } + } + + $col_names = array(); + foreach ($db->fetchAll() as $col_info) { + if ($col_info["is_system_field"] == "yes" && $omit_system_fields) { + continue; + } + if (!empty($view_id) && !in_array($col_info["col_name"], $view_col_names)) { + continue; + } + $col_names[$col_info["col_name"]] = $col_info["field_title"]; + } + + return $col_names; + } + + + /** + * This function updates the main form values in preparation for a test submission by the actual + * form. It is called from step 2 of the form creation page when UPDATING an existing, incomplete + * form. + * + * @param array $infohash This parameter should be a hash (e.g. $_POST or $_GET) containing the + * various fields from the step 2 add form page. + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function setFormMainSettings($infohash) + { + $db = Core::$db; + $LANG = Core::$L; + + $success = true; + $message = ""; + + // check required infohash fields + $rules = array(); + $rules[] = "required,form_name,{$LANG["validation_no_form_name"]}"; + $errors = validate_fields($infohash, $rules); + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors), ""); + } + + // extract values + $access_type = isset($infohash['access_type']) ? $infohash['access_type'] : "public"; + $client_ids = isset($infohash['selected_client_ids']) ? $infohash['selected_client_ids'] : array(); + $form_id = $infohash["form_id"]; + $form_name = trim($infohash['form_name']); + $is_multi_page_form = isset($infohash["is_multi_page_form"]) ? $infohash["is_multi_page_form"] : "no"; + $redirect_url = isset($infohash['redirect_url']) ? trim($infohash['redirect_url']) : ""; + + if ($is_multi_page_form == "yes") + $form_url = $infohash["multi_page_urls"][0]; + else + $form_url = $infohash["form_url"]; + + + // all checks out, so update the new form + $db->query(" + UPDATE {PREFIX}forms + SET access_type = :access_type, + is_active = 'no', + is_complete = 'no', + is_multi_page_form = :is_multi_page_form, + form_name = :form_name, + form_url = :form_url, + redirect_url = :redirect_url + WHERE form_id = :form_id + "); + $db->bindAll(array( + "access_type" => $access_type, + "is_multi_page_form" => $is_multi_page_form, + "form_name" => $form_name, + "form_url" => $form_url, + "redirect_url" => $redirect_url, + "form_id" => $form_id + )); + $db->execute(); + + Forms::deleteClientForms($form_id); + + foreach ($client_ids as $client_id) { + $db->query("INSERT INTO {PREFIX}client_forms (account_id, form_id) VALUES (:client_id, :form_id)"); + $db->bindAll(array("client_id" => $client_id, "form_id" => $form_id)); + $db->execute(); + } + + // set the multi-page form URLs + $db->query("DELETE FROM {PREFIX}multi_page_form_urls WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + + if ($is_multi_page_form == "yes") { + $page_num = 1; + foreach ($infohash["multi_page_urls"] as $url) { + if (empty($url)) { + continue; + } + $db->query("INSERT INTO {PREFIX}multi_page_form_urls (form_id, form_url, page_num) VALUES (:form_id, :url, :page_num)"); + $db->bindAll(array( + "form_id" => $form_id, + "url" => $url, + "page_num" => $page_num + )); + $db->execute(); + $page_num++; + } + } + + extract(Hooks::processHookCalls("end", compact("infohash", "success", "message"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Called by test form submission during form setup procedure. This stores a complete form submission in the database + * for examination and pruning by the administrator. Error / notification messages are displayed in the language of + * the currently logged in administrator. + * + * It works with both submissions sent through process.php and the API. + * + * @param array $form_data a hash of the COMPLETE form data (i.e. all fields) + */ + public static function initializeForm($form_data) + { + $LANG = Core::$L; + $db = Core::$db; + + $textbox_field_type_id = FieldTypes::getFieldTypeIdByIdentifier("textbox"); + + $display_notification_page = isset($form_data["form_tools_display_notification_page"]) ? + $form_data["form_tools_display_notification_page"] : true; + + $form_id = $form_data["form_tools_form_id"]; + + // check the form ID is valid + if (!self::checkFormExists($form_id, true)) { + Errors::showErrorCode(Errors::$CODES["100"]); + } + + $form_info = self::getForm($form_id); + + // if this form has already been completed, exit with an error message + if ($form_info["is_complete"] == "yes") { + Errors::showErrorCode(Errors::$CODES["101"]); + } + + // since this form is still incomplete, remove any old records from form_fields concerning this form + Fields::clearFormFields($form_id); + + // remove irrelevant key-values + unset($form_data["form_tools_initialize_form"]); + unset($form_data["form_tools_submission_id"]); + unset($form_data["form_tools_form_id"]); + unset($form_data["form_tools_display_notification_page"]); + + try { + $db->beginTransaction(); + Fields::addSubmissionIdSystemField($form_id, $textbox_field_type_id); + $order = Fields::addFormFields($form_id, $form_data, 2); // 2 = the second field (we just added submission ID) + $order2 = Fields::addFormFileFields($form_id, $_FILES, $order); + Fields::addSystemFields($form_id, $textbox_field_type_id, $order2); + $db->processTransaction(); + } catch (Exception $e) { + $db->rollbackTransaction(); + Errors::showErrorCode(Errors::$CODES["103"], $e->getMessage()); + } + + // finally, set this form's "is_initialized" value to "yes", so the administrator can proceed to + // the next step of the Add Form process. + self::setFormInitialized($form_id); + + // alert a "test submission complete" message. The only time this wouldn't be outputted would be + // if this function is being called programmatically, like with the blank_form module + if ($display_notification_page) { + + // not an error! Find to re-purpose the template but rename it to notification.tpl + $page_vars = array( + "message" => $LANG["processing_init_complete"], + "message_type" => "notify", + "title" => $LANG["phrase_test_submission_received"] + ); + Themes::displayPage("error.tpl", $page_vars); + exit; + } + } + + + public static function setFormInitialized($form_id) + { + Core::$db->query(" + UPDATE {PREFIX}forms + SET is_initialized = 'yes' + WHERE form_id = :form_id + "); + Core::$db->bind("form_id", $form_id); + + try { + Core::$db->execute(); + return true; + } catch (Exception $e) { + return false; + } + } + + + /** + * This function "finalizes" the form, i.e. marks it as completed and ready to go. + * + * This is where the excitement happens. This function is called when the user has completed step + * 4 of the Add Form process, after the user is satisfied that the data that is stored is correct. + * This function does the following: + *
    + *
  • Adds a new record to the form_admin_fields table listing which of the database fields are + * to be visible in the admin interface panel for this form.
  • + *
  • Creates a new form table with the column information specified in infohash.
  • + *
+ * + * @param array $infohash This parameter should be a hash (e.g. $_POST or $_GET) containing the + * various fields from the Step 4 Add Form page. + */ + public static function finalizeForm($form_id) + { + $LANG = Core::$L; + $db = Core::$db; + $db_table_charset = Core::getDbTableCharset(); + $FIELD_SIZES = FieldSizes::get(); + + $form_fields = Fields::getFormFields($form_id); + + $query = " + CREATE TABLE {PREFIX}form_$form_id ( + submission_id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT, + PRIMARY KEY(submission_id),\n"; + + foreach ($form_fields as $field) { + if ($field["is_system_field"] == "yes") { + continue; + } + $sql_size = $FIELD_SIZES[$field["field_size"]]["sql"]; + $query .= "{$field['col_name']} $sql_size,\n"; + } + + $query .= "submission_date DATETIME NOT NULL, + last_modified_date DATETIME NOT NULL, + ip_address VARCHAR(15), + is_finalized ENUM('yes','no') default 'yes') + Engine=InnoDB DEFAULT CHARSET = $db_table_charset"; + + try { + $db->query($query); + $db->execute(); + } catch (Exception $e) { + return array( + "success" => "0", + "message" => $LANG["notify_create_form_failure"], + "sql_error" => $e->getMessage() + ); + } + + // now the form is complete. Update it as is_complete and enabled + $db->query(" + UPDATE {PREFIX}forms + SET is_initialized = 'yes', + is_complete = 'yes', + is_active = 'yes', + date_created = :now + WHERE form_id = :form_id + "); + $db->bindAll(array( + "now" => General::getCurrentDatetime(), + "form_id" => $form_id + )); + + try { + $db->execute(); + } catch (Exception $e) { + return array( + "success" => "0", + "sql_error" => $e->getMessage() + ); + } + + // finally, add the default View + Views::addDefaultView($form_id); + + extract(Hooks::processHookCalls("end", compact("form_id"), array()), EXTR_OVERWRITE); + + return array( + "success" => 1, + "message" => "" + ); + } + + + /** + * Called on step 5 of the Add Form process. It processes the Mass Smart Filled field values, add / updates the + * appropriate field types, field sizes and option lists. + */ + public static function setFormFieldTypes($form_id, $info) + { + $db = Core::$db; + + extract(Hooks::processHookCalls("start", compact("info", "form_id"), array("info")), EXTR_OVERWRITE); + + $textbox_field_type_id = FieldTypes::getFieldTypeIdByIdentifier("textbox"); + + // set a 10 minute maximum execution time for this request. For long forms it can take a long time. 10 minutes + // is extremely excessive, but what the hey + @set_time_limit(600); + + $form_fields = Fields::getFormFields($form_id); + + // update the field types and sizes + $option_lists = array(); + foreach ($form_fields as $field_info) { + if ($field_info["is_system_field"] == "yes") { + continue; + } + $field_id = $field_info["field_id"]; + + // update all the field types + $field_type_id = $textbox_field_type_id; + if (isset($info["field_{$field_id}_type"])) { + $field_type_id = $info["field_{$field_id}_type"]; + } + $field_size = "medium"; + if (isset($info["field_{$field_id}_size"])) { + $field_size = $info["field_{$field_id}_size"]; + } + + $db->query(" + UPDATE {PREFIX}form_fields + SET field_type_id = :field_type_id, + field_size = :field_size + WHERE field_id = :field_id + "); + $db->bindAll(array( + "field_type_id" => $field_type_id, + "field_size" => $field_size, + "field_id" => $field_id + )); + $db->execute(); + + // if this field is an Option List field, store all the option list info. We'll add them at the end + if (isset($info["field_{$field_id}_num_options"]) && is_numeric($info["field_{$field_id}_num_options"])) { + $num_options = $info["field_{$field_id}_num_options"]; + $options = array(); + for ($i = 1; $i <= $num_options; $i++) { + $options[] = array( + "value" => $info["field_{$field_id}_opt{$i}_val"], + "text" => $info["field_{$field_id}_opt{$i}_txt"] + ); + } + $option_lists[$field_id] = array( + "field_type_id" => $field_type_id, + "option_list_name" => $field_info["field_title"], + "options" => $options + ); + } + } + + // finally, if there were any Option List defined for any of the form field, add the info! + if (!empty($option_lists)) { + $field_types = FieldTypes::get(); + $field_type_id_to_option_list_map = array(); + foreach ($field_types as $field_type_info) { + $field_type_id_to_option_list_map[$field_type_info["field_type_id"]] = $field_type_info["raw_field_type_map_multi_select_id"]; + } + + foreach ($option_lists as $field_id => $option_list_info) { + $list_id = OptionLists::createUniqueOptionList($form_id, $option_list_info); + $raw_field_type_map_multi_select_id = $field_type_id_to_option_list_map[$option_list_info["field_type_id"]]; + if (is_numeric($list_id)) { + FieldSettings::addSetting($field_id, $raw_field_type_map_multi_select_id, $list_id); + } + } + } + } + + + /** + * Completely removes a form from the database. This includes deleting all form fields, emails, Views, + * View fields, View tabs, View filters, client-form, client-view and public omit list (form & View), + * and anything else! + * + * It also includes an optional parameter to remove all files that were uploaded through file fields in the + * form; defaulted to FALSE. + * + * @param integer $form_id the unique form ID + * @param boolean $remove_associated_files A boolean indicating whether or not all files that were + * uploaded via file fields in this form should be removed as well. + */ + public static function deleteForm($form_id, $remove_associated_files = false) + { + $db = Core::$db; + + extract(Hooks::processHookCalls("start", compact("form_id"), array()), EXTR_OVERWRITE); + $form_fields = Fields::getFormFields($form_id, array("include_field_type_info" => true)); + + $success = true; + $message = ""; + + $file_delete_problems = array(); + if ($remove_associated_files) { + $file_delete_problems = Files::removeFormFiles($form_id, $form_fields); + } + + $db->query("DROP TABLE IF EXISTS {PREFIX}form_$form_id"); + $db->execute(); + + // remove any reference to the form in form_fields + Fields::deleteAllFormFields($form_id); + + // remove any reference to the form in forms table + $db->query("DELETE FROM {PREFIX}forms WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + + Forms::deleteClientForms($form_id); + + $db->query("DELETE FROM {PREFIX}form_email_fields WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + + OmitLists::deleteFormOmitList($form_id); + + $db->query("DELETE FROM {PREFIX}multi_page_form_urls WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + + ListGroups::deleteByGroupType("form_{$form_id}_view_group"); + + // delete all email templates for the form + foreach (Emails::getEmailTemplateList($form_id) as $email_template_info) { + Emails::deleteEmailTemplate($email_template_info["email_id"]); + } + + // delete all form Views + $view_ids = Views::getViewIds($form_id); + foreach ($view_ids as $view_id) { + Views::deleteView($view_id); + } + + // remove any field settings + foreach ($form_fields as $field_info) { + FieldSettings::deleteSettings($field_info["field_id"]); + FieldValidation::deleteValidation($field_info["field_id"]); + } + + // as with many things in the script, potentially we need to return a vast range of information from this last function. But + // we'll limit it to the file delete problems + if (!$success) { + $message = $file_delete_problems; + } + + return array($success, $message); + } + + + /** + * Called by client accounts, allowing them to update the num_submissions_per_page and auto email + * settings. + * + * TODO: this used? + * + * @param array $infohash a hash containing the various form values to update. + */ + public static function clientUpdateFormSettings($infohash) + { + $db = Core::$db; + $LANG = Core::$L; + + extract(Hooks::processHookCalls("start", compact("infohash"), array("infohash")), EXTR_OVERWRITE); + + $success = true; + $message = $LANG["notify_form_settings_updated"]; + + // validate $infohash fields + $rules = array(); + $rules[] = "required,form_id,{$LANG["validation_no_form_id"]}"; + $rules[] = "required,is_active,{$LANG["validation_is_form_active"]}"; + $rules[] = "required,num_submissions_per_page,{$LANG["validation_no_num_submissions_per_page"]}"; + $rules[] = "digits_only,num_submissions_per_page,{$LANG["validation_invalid_num_submissions_per_page"]}"; + $errors = validate_fields($infohash, $rules); + + $db->query(" + UPDATE {PREFIX}forms + SET is_active = :is_active, + auto_email_admin = :auto_email_admin, + auto_email_user = :auto_email_user, + num_submissions_per_page = :num_submissions_per_page, + printer_friendly_format = :printer_friendly_format, + hide_printer_friendly_empty_fields = :hide_printer_friendly_empty_fields + WHERE form_id = :form_id + "); + $db->bindAll(array( + "is_active" => $infohash['is_active'], + "auto_email_admin" => $infohash['auto_email_admin'], + "auto_email_user" => $infohash['auto_email_user'], + "num_submissions_per_page" => $infohash['num_submissions_per_page'], + "printer_friendly_format" => $infohash['printer_friendly_format'], + "hide_printer_friendly_empty_fields" => $infohash['hide_empty_fields'], + "form_id" => $infohash['form_id'] + )); + + try { + $db->execute(); + } catch (Exception $e) { + return array(false, $LANG["notify_form_not_updated_notify_admin"]); + } + + extract(Hooks::processHookCalls("end", compact("infohash", "success", "message"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Returns a list of (completed, finalized) forms, ordered by form name, and all views, ordered + * by view_order. This is handy for any time you need to just output the list of forms & their Views. + * + * @return array + */ + public static function getFormViewList() + { + $db = Core::$db; + + $db->query(" + SELECT form_id, form_name + FROM {PREFIX}forms + WHERE is_complete = 'yes' AND + is_initialized = 'yes' + ORDER BY form_name ASC + "); + $db->execute(); + + $results = array(); + foreach ($db->fetchAll() as $row) { + $form_id = $row["form_id"]; + + $db->query(" + SELECT view_id, view_name + FROM {PREFIX}views + WHERE form_id = :form_id + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $views = array(); + foreach ($db->fetchAll() as $row2) { + $views[] = array( + "view_id" => $row2["view_id"], + "view_name" => $row2["view_name"] + ); + } + + $results[] = array( + "form_id" => $form_id, + "form_name" => $row["form_name"], + "views" => $views + ); + } + + return $results; + } + + + /** + * Called by administrators; updates the content stored on the "Main" tab in the Edit Form pages. + * + * @param integer $infohash a hash containing the contents of the Edit Form Main tab. + * @return array returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function updateFormMainTab($infohash, $form_id) + { + $db = Core::$db; + $LANG = Core::$L; + + extract(Hooks::processHookCalls("start", compact("infohash", "form_id"), array("infohash")), EXTR_OVERWRITE); + + // check required POST fields + $rules = array(); + $rules[] = "required,form_name,{$LANG["validation_no_form_name"]}"; + $rules[] = "required,edit_submission_page_label,{$LANG["validation_no_edit_submission_page_label"]}"; + $errors = validate_fields($infohash, $rules); + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors), ""); + } + + $is_active = ""; + if (!empty($infohash["active"])) { + $is_active = "is_active = '{$infohash['active']}',"; + } + + $submission_type = $infohash["submission_type"]; + $access_type = $infohash["access_type"]; + $client_ids = isset($infohash["selected_client_ids"]) ? $infohash["selected_client_ids"] : array(); + $is_multi_page_form = isset($infohash["is_multi_page_form"]) ? $infohash["is_multi_page_form"] : "no"; + + if ($submission_type == "direct") { + $is_multi_page_form = "no"; + } + + if ($is_multi_page_form == "yes") { + $form_url = $infohash["multi_page_urls"][0]; + } else { + $form_url = $infohash["form_url"]; + } + + try { + $db->query(" + UPDATE {PREFIX}forms + SET $is_active + form_type = :form_type, + submission_type = :submission_type, + is_multi_page_form = :is_multi_page_form, + form_url = :form_url, + form_name = :form_name, + redirect_url = :redirect_url, + access_type = :access_type, + auto_delete_submission_files = :auto_delete_submission_files, + submission_strip_tags = :submission_strip_tags, + edit_submission_page_label = :edit_submission_page_label, + add_submission_button_label = :add_submission_button_label + WHERE form_id = :form_id + "); + $db->bindAll(array( + "form_type" => $infohash["form_type"], + "submission_type" => $submission_type, + "is_multi_page_form" => $is_multi_page_form, + "form_url" => $form_url, + "form_name" => $infohash["form_name"], + "redirect_url" => isset($infohash["redirect_url"]) ? $infohash["redirect_url"] : "", + "access_type" => $access_type, + "auto_delete_submission_files" => $infohash["auto_delete_submission_files"], + "submission_strip_tags" => $infohash["submission_strip_tags"], + "edit_submission_page_label" => $infohash["edit_submission_page_label"], + "add_submission_button_label" => $infohash["add_submission_button_label"], + "form_id" => $form_id + )); + + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + // update the list of clients associated with this form + Forms::updateFormAccess($form_id, $access_type, $client_ids); + + // update the multi-page form URLs + $db->query("DELETE FROM {PREFIX}multi_page_form_urls WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + + // if this is a multi-page form, add the list of pages in the form. One minor thing to note: the first page in the form + // is actually stored in two locations: one in the main "form_url" value in the form, and two, here in the + // multi_page_form_urls table. It's not necessary, of course, but it makes the code a little simpler + if ($is_multi_page_form == "yes") { + $page_num = 1; + foreach ($infohash["multi_page_urls"] as $url) { + if (empty($url)) { + continue; + } + + $db->query(" + INSERT INTO {PREFIX}multi_page_form_urls (form_id, form_url, page_num) + VALUES (:form_id, :form_url, :page_num) + "); + $db->bindAll(array( + "form_id" => $form_id, + "form_url" => $url, + "page_num" => $page_num + )); + $db->execute(); + $page_num++; + } + } + + $success = true; + $message = $LANG["notify_form_updated"]; + + extract(Hooks::processHookCalls("end", compact("infohash", "form_id", "success", "message"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + public static function updateFormAccess($form_id, $access_type, $client_ids) + { + $db = Core::$db; + + Forms::deleteClientForms($form_id); + + // the omit list is for public forms only. If it ain't public, it got to go, yo. + if ($access_type !== "public") { + OmitLists::deleteFormOmitList($form_id); + } + + // delete all client_view, public_form_omit_list, and public_view_omit_list entries concerning this + // form & its Views. Since only the administrator can see the form, no client can see any of its sub-parts + if ($access_type == "admin") { + OmitLists::deleteFormOmitList($form_id); + Views::deleteClientViewsByFormId($form_id); + } + + if ($access_type == "private") { + Forms::addClientsToForm($form_id, $client_ids); + + $view_ids = Views::getViewIds($form_id); + + // there WERE clients associated with this form. Delete the ones that AREN'T associated + if (!empty($client_ids)) { + + $client_clauses = array(); + foreach ($client_ids as $client_id) { + $client_clauses[] = "account_id != $client_id"; + } + $client_id_clause = implode(" AND ", $client_clauses); + + foreach ($view_ids as $view_id) { + $db->query(" + DELETE FROM {PREFIX}client_views + WHERE view_id = :view_id AND $client_id_clause + "); + $db->bind("view_id", $view_id); + $db->execute(); + + // also delete any orphaned records in the View omit list + $db->query("DELETE FROM {PREFIX}public_view_omit_list WHERE view_id = :view_id AND $client_id_clause"); + $db->bind("view_id", $view_id); + $db->execute(); + } + + // for some reason, the administrator has assigned NO clients to this private form. So, delete all clients + // associated with the Views + } else { + foreach ($view_ids as $view_id) { + Views::deleteClientViews($view_id); + Views::deletePublicViewOmitList($view_id); + } + } + } + } + + + public static function deleteClientForms($form_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}client_forms WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + } + + + public static function deleteClientFormsByAccountId($account_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}client_forms WHERE account_id = :account_id"); + $db->bind("account_id", $account_id); + $db->execute(); + } + + + /** + * Called by administrators; updates the content stored on the "Fields" tab in the Edit Form pages. + * + * @param integer $form_id the unique form ID + * @param array $infohash a hash containing the contents of the Edit Form Display tab + * @return array returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function updateFormFieldsTab($form_id, $infohash) + { + $LANG = Core::$L; + $success = true; + $message = $LANG["notify_field_changes_saved"]; + + extract(Hooks::processHookCalls("start", compact("infohash", "form_id"), array("infohash")), EXTR_OVERWRITE); + + // JS-generated stuff from the page + $sortable_id = $infohash["sortable_id"]; + $field_ids = explode(",", $infohash["{$sortable_id}_sortable__rows"]); + $order = $infohash["sortable_row_offset"]; + $new_sort_groups = explode(",", $infohash["{$sortable_id}_sortable__new_groups"]); + + // parse the POST data to get the info in a manageable format + $field_info = Forms::editFieldsPageGetFormattedPostData($field_ids, $infohash, $order, $new_sort_groups); + + // delete any extended field settings for those fields whose field type just changed + Forms::editFieldsPageUpdateFieldSettings($field_info); + + // update database table structure + form field record + Forms::updateExistingFormsFields($form_id, $field_info); + + // okay! now add any new fields that the user just added + $new_fields = array(); + $num_existing_fields = 0; + foreach ($field_info as $curr_field) { + if ($curr_field["is_new_field"]) { + $new_fields[] = $curr_field; + } else { + $num_existing_fields++; + } + } + if (!empty($new_fields)) { + list($is_success, $error) = Fields::addFormFieldsAdvanced($form_id, $new_fields); + + // if there was a problem adding any of the new fields, inform the user + if (!$is_success) { + $success = false; + $message = $error; + } + } + + // Lastly, delete the necessary fields. Since some field types (e.g. files) may have additional functionality + // needed at this stage (e.g. deleting the actual files that had been uploaded via the form). This occurs regardless + // of whether the add fields step worked or not + $deleted_field_ids = explode(",", $infohash["{$sortable_id}_sortable__deleted_rows"]); + + extract(Hooks::processHookCalls("delete_fields", compact("deleted_field_ids", "infohash", "form_id"), array()), EXTR_OVERWRITE); + + Fields::deleteFormFields($form_id, $deleted_field_ids); + + extract(Hooks::processHookCalls("end", compact("infohash", "field_info", "form_id"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Simple function to find out how many forms are in the database, regardless of status or anything else. + * + * @return integer the number of forms. + */ + public static function getFormCount() + { + $db = Core::$db; + + $db->query("SELECT count(*) as c FROM {PREFIX}forms"); + $db->execute(); + $result = $db->fetch(); + + return $result["c"]; + } + + + // -------------------------------------------------------------------------------------------- + + // Private methods + + /** + * Used in Forms::searchForms and Forms::getFormPrevNextLinks, this function looks at the current search and figures + * out the WHERE and ORDER BY clauses so that the calling function can retrieve the appropriate form results in + * the appropriate order. + * + * @param array $search_criteria + * @return array $clauses + */ + private static function getSearchFormSqlClauses($search_criteria) + { + $order_clause = self::getOrderClause($search_criteria["order"]); + $status_clause = self::getStatusClause($search_criteria["status"]); + $keyword_clause = self::getKeywordClause($search_criteria["keyword"]); + $form_clause = self::getFormClause($search_criteria["account_id"]); + $omitted_forms = OmitLists::getPublicFormOmitListByAccountId($search_criteria["account_id"]); + $admin_clause = (!$search_criteria["is_admin"]) ? "is_complete = 'yes' AND is_initialized = 'yes'" : ""; + + // add up the where clauses + $where_clauses = array(); + if (!empty($status_clause)) { + $where_clauses[] = $status_clause; + } + if (!empty($keyword_clause)) { + $where_clauses[] = "($keyword_clause)"; + } + if (!empty($form_clause)) { + $where_clauses[] = $form_clause; + } + if (!empty($admin_clause)) { + $where_clauses[] = $admin_clause; + } + + if (!empty($where_clauses)) { + $where_clause = "WHERE " . join(" AND ", $where_clauses); + } else { + $where_clause = ""; + } + + return array( + "order_clause" => $order_clause, + "where_clause" => $where_clause, + "omitted_forms" => $omitted_forms + ); + } + + + private static function getOrderClause($order) + { + if (!isset($order) || empty($order)) { + $search_criteria["order"] = "form_id-DESC"; + } + + $order_map = array( + "form_id-ASC" => "form_id ASC", + "form_id-DESC" => "form_id DESC", + "form_name-ASC" => "form_name ASC", + "form_name-DESC" => "form_name DESC", + "form_type-ASC" => "form_type ASC", + "form_type-DESC" => "form_type DESC", + "status-ASC" => "is_active = 'yes', is_active = 'no', (is_initialized = 'no' AND is_complete = 'no')", + "status-DESC" => "(is_initialized = 'no' AND is_complete = 'no'), is_active = 'no', is_active = 'yes'", + ); + + if (isset($order_map[$order])) { + $order_clause = $order_map[$order]; + } else { + $order_clause = "form_id DESC"; + } + return "ORDER BY $order_clause"; + } + + + private static function getStatusClause($status) + { + if (!isset($status) || empty($status)) { + return ""; + } + + switch ($status) { + case "online": + $status_clause = "is_active = 'yes' "; + break; + case "offline": + $status_clause = "(is_active = 'no' AND is_complete = 'yes')"; + break; + case "incomplete": + $status_clause = "(is_initialized = 'no' OR is_complete = 'no')"; + break; + default: + $status_clause = ""; + break; + } + return $status_clause; + } + + + // TODO + private static function getKeywordClause($keyword) + { + $keyword_clause = ""; + if (isset($keyword) && !empty($keyword)) { + $search_criteria["keyword"] = trim($keyword); + $string = $search_criteria["keyword"]; + $fields = array("form_name", "form_url", "redirect_url", "form_id"); + + $clauses = array(); + foreach ($fields as $field) { + $clauses[] = "$field LIKE '%$string%'"; + } + + $keyword_clause = join(" OR ", $clauses); + } + return $keyword_clause; + } + + + /** + * Used in the search query to ensure the search limits the results to whatever forms a particular account may view. + * @param $account_id + * @return string + */ + private static function getFormClause($account_id) + { + if (empty($account_id)) { + return ""; + } + + $db = Core::$db; + + $clause = ""; + if (!empty($account_id)) { + + // a bit weird, but necessary. This adds a special clause to the query so that when it searches for a + // particular account, it also (a) returns all public forms and (b) only returns those forms that are + // completed. This is because incomplete forms are still set to access_type = "public". Note: this does NOT + // take into account the public_form_omit_list - that's handled by self::getFormOmitList + $is_public_clause = "(access_type = 'public')"; + $is_setup_clause = "is_complete = 'yes' AND is_initialized = 'yes'"; + + // first, grab all those forms that are explicitly associated with this client + $db->query(" + SELECT * + FROM {PREFIX}client_forms + WHERE account_id = :account_id + "); + $db->bind("account_id", $account_id); + $db->execute(); + + $form_clauses = array(); + foreach ($db->fetchAll() as $row) { + $form_clauses[] = "form_id = {$row['form_id']}"; + } + + if (count($form_clauses) > 1) { + $clause = "(((" . join(" OR ", $form_clauses) . ") OR $is_public_clause) AND ($is_setup_clause))"; + } else { + $clause = isset($form_clauses[0]) ? "(({$form_clauses[0]} OR $is_public_clause) AND ($is_setup_clause))" : + "($is_public_clause AND ($is_setup_clause))"; + } + } + + return $clause; + } + + + /** + * Helper method used on the Edit Form -> Fields page to clean up the POST data into a simple array. + */ + private static function editFieldsPageGetFormattedPostData($field_ids, $post, $order, $sort_groups) + { + $field_info = array(); + foreach ($field_ids as $field_id) { + $is_new_field = preg_match("/^NEW/", $field_id) ? true : false; + $display_name = (isset($post["field_{$field_id}_display_name"])) ? $post["field_{$field_id}_display_name"] : ""; + $form_field_name = (isset($post["field_{$field_id}_name"])) ? $post["field_{$field_id}_name"] : ""; + $include_on_redirect = (isset($post["field_{$field_id}_include_on_redirect"])) ? "yes" : "no"; + $field_size = (isset($post["field_{$field_id}_size"])) ? $post["field_{$field_id}_size"] : ""; + $col_name = (isset($post["col_{$field_id}_name"])) ? $post["col_{$field_id}_name"] : ""; + $old_field_size = (isset($post["old_field_{$field_id}_size"])) ? $post["old_field_{$field_id}_size"] : ""; + $old_col_name = (isset($post["old_col_{$field_id}_name"])) ? $post["old_col_{$field_id}_name"] : ""; + $data_type = (isset($post["field_{$field_id}_data_type"])) ? $post["field_{$field_id}_data_type"] : ""; + $is_system_field = (isset($post["system_fields"]) && in_array($field_id, $post["system_fields"])) ? "yes" : "no"; + + // this is only sent for non-system fields + $field_type_id = isset($post["field_{$field_id}_type_id"]) ? $post["field_{$field_id}_type_id"] : ""; + + // won't be defined for new fields + $old_field_type_id = (isset($post["old_field_{$field_id}_type_id"])) ? $post["old_field_{$field_id}_type_id"] : ""; + + $field_info[] = array( + "is_new_field" => $is_new_field, + "field_id" => $field_id, + "display_name" => $display_name, + "form_field_name" => $form_field_name, + "data_type" => $data_type, + "field_type_id" => $field_type_id, + "old_field_type_id" => $old_field_type_id, + "include_on_redirect" => $include_on_redirect, + "is_system_field" => $is_system_field, + "list_order" => $order, + "is_new_sort_group" => (in_array($field_id, $sort_groups)) ? "yes" : "no", + + // column name info + "col_name" => $col_name, + "old_col_name" => $old_col_name, + "col_name_changed" => ($col_name != $old_col_name) ? "yes" : "no", + + // field size info + "field_size" => $field_size, + "old_field_size" => $old_field_size, + "field_size_changed" => ($field_size != $old_field_size) ? "yes" : "no" + ); + $order++; + } + + return $field_info; + } + + /** + * Delete any extended field settings for those fields whose field type just changed. + * 1. this is compatible with editing the fields in the dialog window. When that happens & the user updates it, + * the code updates the old_field_type_id info in the page so this is never called. + * 2. with the addition of Shared Characteristics, this only deletes fields that aren't mapped between the two + * fields types (old and new) + */ + private static function editFieldsPageUpdateFieldSettings($field_info) + { + $changed_fields = array(); + foreach ($field_info as $curr_field_info) { + if ($curr_field_info["is_new_field"] || $curr_field_info["is_system_field"] == "yes" || + $curr_field_info["field_type_id"] == $curr_field_info["old_field_type_id"]) { + continue; + } + $changed_fields[] = $curr_field_info; + } + + if (!empty($changed_fields)) { + $field_type_settings_shared_characteristics = Settings::get("field_type_settings_shared_characteristics"); + $field_type_map = FieldTypes::getFieldTypeIdToIdentifierMap(); + + $shared_settings = array(); + foreach ($changed_fields as $changed_field_info) { + $field_id = $changed_field_info["field_id"]; + $shared_settings[] = FieldTypes::getSharedFieldSettingInfo($field_type_map, $field_type_settings_shared_characteristics, $field_id, $changed_field_info["field_type_id"], $changed_field_info["old_field_type_id"]); + FieldSettings::deleteSettings($field_id); + FieldValidation::deleteValidation($field_id); + } + + foreach ($shared_settings as $setting) { + foreach ($setting as $setting_info) { + $field_id = $setting_info["field_id"]; + $setting_id = $setting_info["new_setting_id"]; + $setting_value = $setting_info["setting_value"]; + FieldSettings::addSetting($field_id, $setting_id, $setting_value); + } + } + } + } + + /** + * Called on the Edit Form -> Fields page. This examines the list of updated fields to see if any of them has had + * the database column renamed. If so, updates it along with the corresponding form field record. + */ + private static function updateExistingFormsFields($form_id, $field_info) + { + $db = Core::$db; + $LANG = Core::$L; + $debug_enabled = Core::isDebugEnabled(); + $FIELD_SIZES = FieldSizes::get(); + + $table_name = "{PREFIX}form_{$form_id}"; + foreach ($field_info as $curr_field_info) { + if ($curr_field_info["is_new_field"]) { + continue; + } + + $field_id = $curr_field_info["field_id"]; + + try { + $old_col_name = $curr_field_info["old_col_name"]; + $new_col_name = $curr_field_info["col_name"]; + if ($curr_field_info["col_name_changed"] == "yes" || $curr_field_info["field_size_changed"] == "yes") { + $new_field_size_sql = $FIELD_SIZES[$curr_field_info["field_size"]]["sql"]; + + // first update the actual table column + General::alterTableColumn($table_name, $old_col_name, $new_col_name, $new_field_size_sql); + } + + Fields::updateFormField(array( + "field_id" => $field_id, + "col_name" => $new_col_name, + "field_size" => $curr_field_info["field_size"], + "form_field_name" => $curr_field_info["form_field_name"], + "data_type" => $curr_field_info["data_type"], + "display_name" => $curr_field_info["display_name"], + "include_on_redirect" => $curr_field_info["include_on_redirect"], + "list_order" => $curr_field_info["list_order"], + "is_system_field" => $curr_field_info["is_system_field"], + "is_new_sort_group" => $curr_field_info["is_new_sort_group"], + "field_type_id" => $curr_field_info["field_type_id"] + )); + + // if any of the database column names just changed we need to update any View filters that relied on them + if ($curr_field_info["col_name_changed"] == "yes") { + ViewFilters::updateFieldFilters($field_id); + } + + } catch (Exception $e) { + $message = $LANG["validation_db_not_updated_invalid_input"]; + if ($debug_enabled) { + $message .= " \"" . $e->getMessage() . "\""; // TODO + } + return array(false, $message); + } + } + } + + public static function addClientToForm($form_id, $client_id) + { + Forms::addClientsToForm($form_id, array($client_id)); + } + + // TODO should be moved to proper PDO query + public static function addClientsToForm($form_id, $client_ids) + { + $db = Core::$db; + + if (empty($client_ids)) { + return; + } + + $queries = array(); + foreach ($client_ids as $client_id) { + $queries[] = "($client_id, $form_id)"; + } + + $insert_values = implode(",", $queries); + $db->query(" + INSERT INTO {PREFIX}client_forms (account_id, form_id) + VALUES $insert_values + "); + $db->execute(); + } + + public static function getFormRow($form_id) + { + $db = Core::$db; + + $db->query("SELECT * FROM {PREFIX}forms WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + return $db->fetch(); + } +} diff --git a/global/code/General.class.php b/global/code/General.class.php new file mode 100644 index 00000000..d7c7dbee --- /dev/null +++ b/global/code/General.class.php @@ -0,0 +1,1491 @@ + + * @package 2-3-x + * @subpackage Database + */ + + +// ------------------------------------------------------------------------------------------------- + +namespace FormTools; + +use PDO, Exception; + + +class General +{ + /** + * Helper function that's used on Step 2 to confirm that the Core Field Types module folder exists. + * + * @param string $module_folder + * @return bool + */ + public static function checkModuleAvailable($module_folder) + { + return is_dir(realpath(__DIR__ . "/../../modules/$module_folder")); + } + + + /** + * Gets a list of known Form Tools tables in a database. + * @return array + */ + public static function getExistingTables(Database $db, array $all_tables, $table_prefix) + { + $db->query("SHOW TABLES"); + $db->execute(); + + $prefixed_tables = array(); + foreach ($all_tables as $table_name) { + $prefixed_tables[] = $table_prefix . $table_name; + } + + $existing_tables = array(); + foreach ($db->fetchAll(PDO::FETCH_NUM) as $row) { + $curr_table = $row[0]; + + if (in_array($curr_table, $prefixed_tables)) { + $existing_tables[] = $curr_table; + } + } + + return $existing_tables; + } + + + /** + * Helper method to convert an array to rows of HTML in bullet points. + * @param array $errors + * @return string + */ + public static function getErrorListHTML(array $errors) + { + $rows = array(); + + foreach ($errors as $error) { + $rows[] = "•  $error"; + } + + return join("
", $rows); + } + + + /** + * Returns a date in Y-m-d H:i:s format, generally used for inserting into a MySQL + * datetime field. + * + * @param string $timestamp an optional Unix timestamp to convert to a datetime + * @return string the current datetime in string format + * */ + public static function getCurrentDatetime($timestamp = "") + { + if (!empty($timestamp)) { + $datetime = date("Y-m-d H:i:s", $timestamp); + } else { + $datetime = date("Y-m-d H:i:s"); + } + return $datetime; + } + + + /** + * Checks to see if a database table exists. Handy for modules to check to see if they've been installed + * or not. + * + * @return boolean + */ + public static function checkDbTableExists($table) + { + $db = Core::$db; + $db_name = Core::getDbName(); + + $found = false; + $db->query("SHOW TABLES FROM `$db_name`"); + $db->execute(); + foreach ($db->fetchAll(PDO::FETCH_COLUMN) as $curr_table) { + if ($curr_table == $table) { + $found = true; + break; + } + } + return $found; + } + + + public static function checkDbTableFieldExists($table, $column) + { + $db = Core::$db; + + $db->query("SHOW COLUMNS FROM {PREFIX}$table"); + $db->execute(); + $columns = $db->fetchAll(); + + $exists = false; + foreach ($columns as $column_info) { + if ($column_info["Field"] === $column) { + $exists = true; + break; + } + } + + return $exists; + } + + + /** + * Helper function to convert a MySQL datetime to a unix timestamp. + * + * @param string $datetime + * @return string + */ + public static function convertDatetimeToTimestamp($datetime) + { + list($date, $time) = explode(" ", $datetime); + list($year, $month, $day) = explode("-", $date); + list($hours, $minutes, $seconds) = explode(":", $time); + + return mktime($hours, $minutes, $seconds, $month, $day, $year); + } + + + /** + * Helps manage long strings by adding either an ellipsis or inserts a inserts a
at the position specified, + * and returns the result. + * + * @param string $str The string to manipulate. + * @param string $length The max length of the string / place to insert
+ * @param string $flag "ellipsis" / "page_break" + * @return string The modified string. + */ + public static function trimString($str, $length, $flag = "ellipsis") + { + if (mb_strlen($str) < $length) { + $new_string = $str; + } else { + if ($flag == "ellipsis") { + $new_string = mb_substr($str, 0, $length) . "..."; + } else { + $parts = General::mbStrSplit($str, $length); + $new_string = join("
", $parts); + } + } + + return $new_string; + } + + + /** + * Checks that the currently logged in client is permitted to view a particular form View. This is called + * on the form submissions and edit submission pages, to ensure the client isn't trying to look at something + * they shouldn't. Any time it fails, it logs them out with a message informing them that they're not allowed + * to access that page. (FYI, it's possible that this scenario could happen honestly: e.g. if the administrator + * creates a client menu containing links to particular forms; then accidentally assigning a client to the menu + * that doesn't have permission to view the form). + * + * This relies on the "permissions" key being set by the login function: it contains the form and View IDs. + * + * Because of this, any time the administrator changes the permissions for a client, they'll need te re-login to + * access that new information. + * + * Very daft this function doesn't return a boolean, but oh well. The fourth param was added to get around that. + * + * @param integer $form_id The unique form ID + * @param integer $client_id The unique client ID + * @param integer $view_id + * @param boolean + */ + public static function checkClientMayView($client_id, $form_id, $view_id, $return_boolean = false) + { + $permissions = Sessions::getWithFallback("permissions", array()); + + extract(Hooks::processHookCalls("main", compact("client_id", "form_id", "view_id", "permissions"), array("permissions")), EXTR_OVERWRITE); + + $may_view = true; + if (!array_key_exists($form_id, $permissions)) { + $may_view = false; + if (!$return_boolean) { + Core::$user->logout("notify_invalid_permissions"); + } + } else { + if (!empty($view_id) && !in_array($view_id, $permissions[$form_id])) { + $may_view = false; + if (!$return_boolean) { + Core::$user->logout("notify_invalid_permissions"); + } + } + } + + return $may_view; + } + + + /** + * This invaluable little function is used for storing and overwriting the contents of a single + * form field in sessions based on a sequence of priorities. + * + * It assumes that a variable name can be found in GET, POST or SESSIONS (or all three). What this + * function does is return the value stored in the most important variable (GET first, POST second, + * SESSIONS third), and update sessions at the same time. This is extremely helpful in situations + * where you don't want to keep having to submit the same information from page to page. + * The third parameter sets a default value. + * + * @param string $field_name the field name + * @param string $session_name the session key for this field name + * @param string $default_value the default value for the field + * @return string the field value + */ + public static function loadField($field_name, $session_name, $default_value = "") + { + $field = $default_value; + + if (isset($_GET[$field_name])) { + $field = $_GET[$field_name]; + Sessions::set($session_name, $field); + } else if (isset($_POST[$field_name])) { + $field = $_POST[$field_name]; + Sessions::set($session_name, $field); + } else if (Sessions::exists($session_name)) { + $field = Sessions::get($session_name); + } + + return $field; + } + + + /** + * Used to convert language file strings into their JS-compatible counterparts, all within an + * "g" namespace. + * + * @param array keys The $LANG keys + * @param array keys The content of $L (language file array for a specific module) + * @param array keys The $L keys + * @return string $js the javascript string (WITHOUT the "; + } + + if (!isset($page_vars["head_css"])) { + $page_vars["head_css"] = ""; + } else if (!empty($page_vars["head_css"])) { + $page_vars["head_css"] = ""; + } + + // now add the custom variables for this template, as defined in $page_vars + foreach ($page_vars as $key=>$value) { + $smarty->assign($key, $value); + } + + $smarty->display(realpath(__DIR__ . "/../../install/$template")); + } + + + public static function displayUnwriteableCacheFolderPage () + { + $LANG = Core::$L; + $version = Core::getVersionString(); + + echo <<< END + + + + + + +
+ +
+
+ {$LANG["text_default_theme_cache_folder_not_writable"]} +
+
+
+ + + +END; + exit; + } + + /** + * This is sent at the very last step. It emails the administrator a short welcome email containing their + * login information, with a few links to resources on our site. + * + * Note: this is ALWAYS sent with mail(), since the Swift Mailer plugin won't have been configured yet. + * + * @param $email + * @param $username + */ + public static function sendWelcomeEmail($email, $username) + { + $root_dir = Core::getRootDir(); + $root_url = Core::getRootUrl(); + + // 1. build the email content + $placeholders = array( + "login_url" => $root_url, + "username" => $username + ); + $smarty_template_email_content = file_get_contents("$root_dir/global/emails/installed.tpl"); + $email_content = General::evalSmartyString($smarty_template_email_content, $placeholders); + + // 2. build the email subject line + $smarty_template_email_subject = file_get_contents("$root_dir/global/emails/installed_subject.tpl"); + $email_subject = trim(General::evalSmartyString($smarty_template_email_subject, array())); + + // send email [note: the double quotes around the email recipient and content are intentional: + // some systems fail without it] + @mail("$email", $email_subject, $email_content); + } + + + /** + * This is called after the database is created and all the various settings (like root URL, etc) are + * determined. It updates the database to set the various default settings. + */ + public static function updateDatabaseSettings() + { + $rootURL = Core::getRootUrl(); + $rootDir = Core::getRootDir(); + + // store the list of languages as a string in settings + $list = Core::$translations->getList(); + $lang_hash = array(); + foreach ($list as $lang_info) { + $lang_hash[$lang_info->code] = $lang_info->lang; + } + $lang_string = Translations::getLangListAsString($lang_hash); + + // we add slashes since in PC paths like c:\www\whatever the \'s get lost en route + $core_settings = array( + "default_logout_url" => $rootURL, + "file_upload_dir" => addslashes($rootDir) . "/upload", + "file_upload_url" => "$rootURL/upload", + "available_languages" => $lang_string + ); + Settings::set($core_settings, "core"); + } + + + /** + * Creates the Form Tools database tables. + */ + public static function createDatabase(Database $db) + { + $charset = Core::getDbTableCharset(); + $LANG = Core::$L; + + try { + $db->beginTransaction(); + + // suppress strict mode + $db->query("SET SQL_MODE=''"); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}account_settings ( + account_id mediumint(8) unsigned NOT NULL, + setting_name varchar(255) NOT NULL, + setting_value mediumtext NOT NULL, + PRIMARY KEY (account_id,setting_name) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}accounts ( + account_id mediumint(8) unsigned NOT NULL auto_increment, + account_type enum('admin','client') NOT NULL default 'client', + account_status enum('active','disabled','pending') NOT NULL default 'disabled', + last_logged_in datetime default NULL, + ui_language varchar(50) NOT NULL default 'en_us', + timezone_offset varchar(4) default NULL, + sessions_timeout varchar(10) NOT NULL default '30', + date_format varchar(50) NOT NULL default 'M jS, g:i A', + login_page varchar(50) NOT NULL default 'client_forms', + logout_url varchar(255) default NULL, + theme varchar(50) NOT NULL default 'default', + swatch varchar(255) NOT NULL, + menu_id mediumint(8) unsigned NOT NULL, + first_name varchar(100) default NULL, + last_name varchar(100) default NULL, + email varchar(200) default NULL, + username varchar(50) NOT NULL, + password varchar(50) NOT NULL, + temp_reset_password varchar(50) NULL, + PRIMARY KEY (account_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + INSERT INTO {PREFIX}accounts (account_id, account_type, account_status, timezone_offset, + login_page, swatch, menu_id, username, password) + VALUES (1, 'admin', 'active', '0', 'admin_forms', 'green', 1, '', '') + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}client_forms ( + account_id mediumint(8) unsigned NOT NULL, + form_id mediumint(8) unsigned NOT NULL, + PRIMARY KEY (account_id,form_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}client_views ( + account_id mediumint(8) unsigned NOT NULL, + view_id mediumint(8) unsigned NOT NULL, + PRIMARY KEY (account_id,view_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}email_template_edit_submission_views ( + email_id mediumint(8) unsigned NOT NULL, + view_id mediumint(8) unsigned NOT NULL, + PRIMARY KEY (email_id,view_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}email_template_recipients ( + recipient_id mediumint(8) unsigned NOT NULL auto_increment, + email_template_id mediumint(8) unsigned NOT NULL, + recipient_user_type enum('admin','client','form_email_field','custom') NOT NULL, + recipient_type enum('main','cc','bcc') NOT NULL default 'main', + account_id mediumint(9) default NULL, + form_email_id MEDIUMINT UNSIGNED NULL, + custom_recipient_name varchar(200) default NULL, + custom_recipient_email varchar(200) default NULL, + PRIMARY KEY (recipient_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}email_template_when_sent_views ( + email_id mediumint(9) NOT NULL, + view_id mediumint(9) NOT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}email_templates ( + email_id mediumint(8) unsigned NOT NULL auto_increment, + form_id mediumint(8) unsigned NOT NULL, + email_template_name varchar(100) default NULL, + email_status enum('enabled','disabled') NOT NULL default 'enabled', + view_mapping_type enum('all','specific') NOT NULL default 'all', + view_mapping_view_id mediumint(9) default NULL, + limit_email_content_to_fields_in_view mediumint(9) default NULL, + email_event_trigger set('on_submission','on_edit','on_delete') default NULL, + include_on_edit_submission_page enum('no','all_views','specific_views') NOT NULL default 'no', + subject varchar(255) default NULL, + email_from enum('admin','client','form_email_field','custom','none') default NULL, + email_from_account_id mediumint(8) unsigned default NULL, + email_from_form_email_id MEDIUMINT UNSIGNED default NULL, + custom_from_name varchar(100) default NULL, + custom_from_email varchar(100) default NULL, + email_reply_to enum('admin','client','form_email_field','custom','none') default NULL, + email_reply_to_account_id mediumint(8) unsigned default NULL, + email_reply_to_form_email_id MEDIUMINT UNSIGNED NULL, + custom_reply_to_name varchar(100) default NULL, + custom_reply_to_email varchar(100) default NULL, + html_template mediumtext, + text_template mediumtext, + PRIMARY KEY (email_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}field_options ( + list_id mediumint(8) unsigned NOT NULL, + list_group_id mediumint(9) NOT NULL, + option_order smallint(4) NOT NULL, + option_value varchar(255) NOT NULL, + option_name varchar(255) NOT NULL, + is_new_sort_group enum('yes', 'no') NOT NULL, + PRIMARY KEY (list_id, list_group_id, option_order) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}field_settings ( + field_id mediumint(8) unsigned NOT NULL, + setting_id mediumint(9) NOT NULL, + setting_value mediumtext, + PRIMARY KEY (field_id,setting_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}field_type_setting_options ( + setting_id mediumint(9) NOT NULL, + option_text varchar(255) default NULL, + option_value varchar(255) default NULL, + option_order smallint(6) NOT NULL, + is_new_sort_group enum('yes','no') NOT NULL, + PRIMARY KEY (setting_id,option_order) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}field_type_settings ( + setting_id mediumint(8) unsigned NOT NULL auto_increment, + field_type_id mediumint(8) unsigned NOT NULL, + field_label varchar(255) NOT NULL, + field_setting_identifier varchar(50) NOT NULL, + field_type enum('textbox','textarea','radios','checkboxes','select','multi-select','option_list_or_form_field') NOT NULL, + field_orientation enum('horizontal','vertical','na') NOT NULL default 'na', + default_value_type enum('static','dynamic') NOT NULL default 'static', + default_value varchar(255) default NULL, + list_order smallint(6) NOT NULL, + PRIMARY KEY (setting_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}field_types ( + field_type_id mediumint(8) unsigned NOT NULL auto_increment, + is_editable enum('yes','no') NOT NULL, + is_enabled enum('yes','no') NOT NULL default 'yes', + non_editable_info mediumtext, + managed_by_module_id mediumint(9) default NULL, + field_type_name varchar(255) NOT NULL, + field_type_identifier varchar(50) NOT NULL, + group_id smallint(6) NOT NULL, + is_file_field enum('yes','no') NOT NULL default 'no', + is_date_field enum('yes','no') NOT NULL default 'no', + raw_field_type_map varchar(50) default NULL, + raw_field_type_map_multi_select_id mediumint(9) default NULL, + list_order smallint(6) NOT NULL, + compatible_field_sizes varchar(255) NOT NULL, + view_field_rendering_type enum('none','php','smarty') NOT NULL default 'none', + view_field_php_function_source varchar(255) default NULL, + view_field_php_function varchar(255) default NULL, + view_field_smarty_markup mediumtext NOT NULL, + edit_field_smarty_markup mediumtext NOT NULL, + php_processing mediumtext NOT NULL, + resources_css mediumtext, + resources_js mediumtext, + PRIMARY KEY (field_type_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}field_type_validation_rules ( + rule_id mediumint(8) unsigned NOT NULL AUTO_INCREMENT, + field_type_id mediumint(9) NOT NULL, + rsv_rule varchar(50) NOT NULL, + rule_label varchar(100) NOT NULL, + rsv_field_name varchar(255) NOT NULL, + custom_function varchar(100) NOT NULL, + custom_function_required enum('yes','no','na') NOT NULL DEFAULT 'na', + default_error_message mediumtext NOT NULL, + list_order smallint(6) NOT NULL, + PRIMARY KEY (rule_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}field_validation ( + rule_id mediumint(8) unsigned NOT NULL, + field_id mediumint(9) NOT NULL, + error_message mediumtext NOT NULL, + UNIQUE KEY rule_id (rule_id,field_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}form_email_fields ( + form_email_id MEDIUMINT unsigned NOT NULL auto_increment, + form_id MEDIUMINT UNSIGNED NOT NULL, + email_field_id mediumint(9) NOT NULL, + first_name_field_id mediumint(9) NULL, + last_name_field_id mediumint(9) NULL, + PRIMARY KEY (form_email_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}form_fields ( + field_id mediumint(8) unsigned NOT NULL auto_increment, + form_id mediumint(8) unsigned NOT NULL default '0', + field_name varchar(255) NOT NULL default '', + field_test_value mediumtext, + field_size varchar(255) default 'medium', + field_type_id smallint(6) NOT NULL default '1', + is_system_field enum('yes','no') NOT NULL default 'no', + data_type enum('string','number','date') NOT NULL default 'string', + field_title varchar(100) default NULL, + col_name varchar(100) default NULL, + list_order smallint(5) unsigned default NULL, + is_new_sort_group enum('yes','no') NOT NULL default 'yes', + include_on_redirect enum('yes','no') NOT NULL default 'no', + PRIMARY KEY (field_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}forms ( + form_id mediumint(9) unsigned NOT NULL auto_increment, + form_type enum('internal','external','form_builder') NOT NULL default 'external', + access_type enum('admin','public','private') NOT NULL default 'public', + submission_type enum('code','direct') default NULL, + date_created datetime NOT NULL, + is_active enum('yes','no') NOT NULL default 'no', + is_initialized enum('yes','no') NOT NULL default 'no', + is_complete enum('yes','no') NOT NULL default 'no', + is_multi_page_form enum('yes','no') NOT NULL default 'no', + form_name varchar(255) NOT NULL default '', + form_url varchar(255) NOT NULL default '', + redirect_url varchar(255) default NULL, + auto_delete_submission_files enum('yes','no') NOT NULL default 'yes', + submission_strip_tags enum('yes','no') NOT NULL default 'yes', + edit_submission_page_label text, + add_submission_button_label varchar(255) default '', + PRIMARY KEY (form_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}hooks ( + id mediumint(8) unsigned NOT NULL auto_increment, + hook_type enum('code','template') NOT NULL, + component enum('core','api','module') NOT NULL, + filepath varchar(255) NOT NULL, + action_location varchar(255) NOT NULL, + function_name varchar(255) NOT NULL, + params mediumtext, + overridable mediumtext, + PRIMARY KEY (id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}hook_calls ( + hook_id mediumint(8) unsigned NOT NULL auto_increment, + hook_type enum('code','template') NOT NULL default 'code', + action_location varchar(100) NOT NULL, + module_folder varchar(255) NOT NULL, + function_name varchar(255) NOT NULL, + hook_function varchar(255) NOT NULL, + priority tinyint(4) NOT NULL default '50', + PRIMARY KEY (hook_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}list_groups ( + group_id mediumint(8) unsigned NOT NULL auto_increment, + group_type varchar(50) NOT NULL, + group_name varchar(255) NOT NULL, + custom_data text NOT NULL, + list_order smallint(6) NOT NULL, + PRIMARY KEY (group_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}menu_items ( + menu_item_id mediumint(8) unsigned NOT NULL auto_increment, + menu_id mediumint(8) unsigned NOT NULL, + display_text varchar(100) NOT NULL, + page_identifier varchar(50) NOT NULL, + custom_options varchar(255) NOT NULL, + url varchar(255) default NULL, + is_submenu enum('yes','no') NOT NULL default 'no', + is_new_sort_group enum('yes','no') NOT NULL default 'yes', + list_order smallint(5) unsigned default NULL, + PRIMARY KEY (menu_item_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query("INSERT INTO {PREFIX}menu_items VALUES (1, 1, 'Forms', 'admin_forms', '', '/admin/forms/', 'no', 'yes', 1)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (2, 1, 'Add Form', 'add_form_choose_type', '', '/admin/forms/add/', 'yes', 'no', 2)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (3, 1, 'Option Lists', 'option_lists', '', '/admin/forms/option_lists/', 'yes', 'no', 3)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (4, 1, 'Clients', 'clients', '', '/admin/clients/', 'no', 'yes', 4)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (5, 1, 'Modules', 'modules', '', '/admin/modules/', 'no', 'yes', 5)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (6, 1, 'Themes', 'settings_themes', '', '/admin/themes/', 'no', 'yes', 6)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (7, 1, 'Settings', 'settings', '', '/admin/settings', 'no', 'yes', 7)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (8, 1, 'Main', 'settings_main', '', '/admin/settings/index.php?page=main', 'yes', 'no', 8)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (9, 1, 'Accounts', 'settings_accounts', '', '/admin/settings/index.php?page=accounts', 'yes', 'no', 9)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (10, 1, 'Files', 'settings_files', '', '/admin/settings/index.php?page=files', 'yes', 'no', 10)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (11, 1, 'Menus', 'settings_menus', '', '/admin/settings/index.php?page=menus', 'yes', 'no', 11)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (12, 1, 'Your Account', 'your_account', '', '/admin/account', 'no', 'yes', 12)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (13, 1, 'Logout', 'logout', '', '/index.php?logout', 'no', 'yes', 13)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (14, 2, 'Forms', 'client_forms', '', '/clients/index.php', 'no', 'yes', 1)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (15, 2, 'Account', 'client_account', '', '/clients/account/index.php', 'no', 'yes', 2)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (16, 2, 'Login Info', 'client_account_login', '', '/clients/account/index.php?page=main', 'yes', 'no', 3)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (17, 2, 'Settings', 'client_account_settings', '', '/clients/account/index.php?page=settings', 'yes', 'no', 4)"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menu_items VALUES (18, 2, 'Logout', 'logout', '', '/index.php?logout', 'no', 'yes', 5)"); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}menus ( + menu_id smallint(5) unsigned NOT NULL auto_increment, + menu varchar(255) NOT NULL, + menu_type enum('admin','client') NOT NULL default 'client', + PRIMARY KEY (menu_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query("INSERT INTO {PREFIX}menus VALUES (1, 'Administrator', 'admin')"); + $db->execute(); + $db->query("INSERT INTO {PREFIX}menus VALUES (2, 'Client Menu', 'client')"); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}module_menu_items ( + menu_id mediumint(8) unsigned NOT NULL auto_increment, + module_id mediumint(8) unsigned NOT NULL, + display_text varchar(100) NOT NULL, + url varchar(255) NOT NULL, + is_submenu enum('yes','no') NOT NULL default 'no', + list_order smallint(6) NOT NULL, + PRIMARY KEY (menu_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}modules ( + module_id mediumint(8) unsigned NOT NULL auto_increment, + is_installed enum('yes','no') NOT NULL default 'no', + is_enabled enum('yes','no') NOT NULL default 'no', + origin_language varchar(50) NOT NULL, + module_name varchar(100) NOT NULL, + module_folder varchar(100) NOT NULL, + version varchar(50) default NULL, + author varchar(200) default NULL, + author_email varchar(200) default NULL, + author_link varchar(255) default NULL, + module_date datetime NOT NULL, + PRIMARY KEY (module_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}multi_page_form_urls ( + form_id mediumint(8) unsigned NOT NULL, + form_url varchar(255) NOT NULL, + page_num tinyint(4) NOT NULL default '2', + PRIMARY KEY (form_id, page_num) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}new_view_submission_defaults ( + view_id mediumint(9) NOT NULL, + field_id mediumint(9) NOT NULL, + default_value text NOT NULL, + list_order smallint(6) NOT NULL, + PRIMARY KEY (view_id,field_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}option_lists ( + list_id mediumint(8) unsigned NOT NULL auto_increment, + option_list_name varchar(100) NOT NULL, + is_grouped enum('yes','no') NOT NULL, + original_form_id mediumint(8) unsigned default NULL, + PRIMARY KEY (list_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}public_form_omit_list ( + form_id mediumint(8) unsigned NOT NULL, + account_id mediumint(8) unsigned NOT NULL, + PRIMARY KEY (form_id,account_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}public_view_omit_list ( + view_id mediumint(8) unsigned NOT NULL, + account_id mediumint(8) unsigned NOT NULL, + PRIMARY KEY (view_id,account_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}sessions ( + session_id varchar(100) NOT NULL default '', + session_data text NOT NULL, + expires int(11) NOT NULL default '0', + PRIMARY KEY (session_id) + ) ENGINE=InnoDB DEFAULT CHARSET=latin1 + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}settings ( + setting_id mediumint(9) NOT NULL auto_increment, + setting_name varchar(100) NOT NULL, + setting_value text NOT NULL, + module varchar(100) NOT NULL default 'core', + PRIMARY KEY (setting_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $edit_submission_onload_resources = self::getEditSubmissionOnloadResources(); + + $edit_submission_shared_resources_js =<<< END +$(function() { + $(".fancybox").fancybox(); +}); +END; + + $edit_submission_shared_resources_css =<<< END +/* used in the "Highlight" setting for most field types */ +.cf_colour_red { + background-color: #990000; + color: white; +} +.cf_colour_orange { + background-color: orange; +} +.cf_colour_yellow { + background-color: yellow; +} +.cf_colour_green { + background-color: green; + color: white; +} +.cf_colour_blue { + background-color: #336699; + color: white; +} +/* field comments */ +.cf_field_comments { + font-style: italic; + color: #999999; + clear: both; +} + +/* column layouts for radios & checkboxes */ +.cf_option_list_group_label { + font-weight: bold; + clear: both; + margin-left: 4px; +} +.cf_option_list_2cols, +.cf_option_list_3cols, +.cf_option_list_4cols { + clear: both; +} +.cf_option_list_2cols .column { + width: 50%; + float: left; +} +.cf_option_list_3cols .column { + width: 33%; + float: left; +} +.cf_option_list_4cols .column { + width: 25%; + float: left; +} + +/* Used for the date and time pickers */ +.cf_date_group img { + margin-bottom: -4px; + padding: 1px; +} +END; + + $core_settings = array( + array("program_version", Core::getCoreVersion()), + array("release_date", Core::getReleaseDate()), + array("release_type", Core::getReleaseType()), + array("api_version", ""), + array("available_languages", "en_us,English (US)"), + array("clients_may_edit_date_format", "no"), + array("clients_may_edit_footer_text", "no"), + array("clients_may_edit_logout_url", "yes"), + array("clients_may_edit_max_failed_login_attempts", "no"), + array("clients_may_edit_page_titles", "no"), + array("clients_may_edit_sessions_timeout", "no"), + array("clients_may_edit_theme", "yes"), + array("clients_may_edit_timezone_offset", "yes"), + array("clients_may_edit_ui_language", "yes"), + array("default_client_menu_id", 2), + array("default_client_swatch", "green"), + array("default_date_field_search_value", "none"), + array("default_date_format", "M jS y, g:i A"), + array("default_footer_text", ""), + array("default_language", "en_us"), + array("default_login_page", "client_forms"), + array("default_logout_url", ""), + array("default_max_failed_login_attempts", ""), + array("default_num_submissions_per_page", 10), + array("default_page_titles", "Form Tools - {\$page}"), + array("default_sessions_timeout", 30), + array("default_theme", "default"), + array("default_timezone_offset", 0), + array("edit_submission_shared_resources_js", $edit_submission_shared_resources_js), + array("edit_submission_shared_resources_css", $edit_submission_shared_resources_css), + array("edit_submission_onload_resources", $edit_submission_onload_resources), + array("field_type_settings_shared_characteristics", "field_comments:textbox,comments`textarea,comments`password,comments`dropdown,comments`multi_select_dropdown,comments`radio_buttons,comments`checkboxes,comments`date,comments`time,comments`phone,comments`code_markup,comments`file,comments`google_maps_field,comments`tinymce,comments|data_source:dropdown,contents`multi_select_dropdown,contents`radio_buttons,contents`checkboxes,contents|column_formatting:checkboxes,formatting`radio_buttons,formatting|maxlength_attr:textbox,maxlength|colour_highlight:textbox,highlight|folder_path:file,folder_path|folder_url:file,folder_url|permitted_file_types:file,folder_url|max_file_size:file,max_file_size|date_display_format:date,display_format|apply_timezone_offset:date,apply_timezone_offset"), + array("file_upload_dir", ""), + array("file_upload_filetypes", "bmp,gif,jpg,jpeg,png,avi,mp3,mp4,doc,txt,pdf,xml,csv,swf,fla,xls,tif"), + array("file_upload_url", ""), + array("file_upload_max_size", 500), + array("forms_page_default_message", $LANG["text_client_welcome"]), + array("logo_link", "https://formtools.org"), + array("min_password_length", ""), + array("num_clients_per_page", 10), + array("num_emails_per_page", 10), + array("num_forms_per_page", 10), + array("num_menus_per_page", 10), + array("num_modules_per_page", 10), + array("num_option_lists_per_page", 10), + array("num_password_history", ""), + array("program_name", "Form Tools"), + array("required_password_chars", ""), + array("timezone_offset", 0), + array("core_version_upgrade_track", Core::getVersionString()), + ); + + $query = "INSERT INTO {PREFIX}settings (setting_name, setting_value, module) VALUES (:setting_name, :setting_value, 'core')"; + foreach ($core_settings as $setting) { + $db->query($query); + $db->bind("setting_name", $setting[0]); + $db->bind("setting_value", $setting[1]); + $db->execute(); + } + + $db->query(" + CREATE TABLE {PREFIX}themes ( + theme_id mediumint(8) unsigned NOT NULL auto_increment, + theme_folder varchar(100) NOT NULL, + theme_name varchar(50) NOT NULL, + uses_swatches enum('yes', 'no') NOT NULL DEFAULT 'no', + swatches mediumtext NULL, + author varchar(200) default NULL, + author_email varchar(255) default NULL, + author_link varchar(255) default NULL, + theme_link varchar(255) default NULL, + description mediumtext, + is_enabled enum('yes','no') NOT NULL default 'yes', + theme_version varchar(50) default NULL, + PRIMARY KEY (theme_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query("INSERT INTO {PREFIX}themes VALUES (1, 'default', 'Default', 'yes', 'green', 'Form Tools', 'ben.keen@gmail.com', 'https://formtools.org', 'https://themes.formtools.org/', 'The default Form Tools theme for all new installations. It''s a green-coloured fixed-width theme requiring 1024 minimum width screens.', 'yes', '1.0.0')"); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}view_columns ( + view_id mediumint(9) NOT NULL, + field_id mediumint(9) NOT NULL, + list_order smallint(6) NOT NULL, + is_sortable enum('yes','no') NOT NULL, + auto_size enum('yes','no') NOT NULL default 'yes', + custom_width varchar(10) default NULL, + truncate enum('truncate','no_truncate') NOT NULL default 'truncate', + PRIMARY KEY (view_id,field_id,list_order) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}view_fields ( + view_id mediumint(8) unsigned NOT NULL, + field_id mediumint(8) unsigned NOT NULL, + group_id mediumint(9) default NULL, + is_editable enum('yes','no') NOT NULL default 'yes', + is_searchable enum('yes','no') NOT NULL default 'yes', + list_order smallint(5) unsigned default NULL, + is_new_sort_group enum('yes','no') NOT NULL, + PRIMARY KEY (view_id,field_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}view_filters ( + filter_id mediumint(8) unsigned NOT NULL auto_increment, + view_id mediumint(8) unsigned NOT NULL, + filter_type enum('standard', 'client_map') NOT NULL default 'standard', + field_id mediumint(8) unsigned NOT NULL, + operator enum('equals','not_equals','like','not_like','before','after') NOT NULL default 'equals', + filter_values mediumtext NOT NULL, + filter_sql mediumtext NOT NULL, + PRIMARY KEY (filter_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}view_tabs ( + view_id mediumint(8) unsigned NOT NULL, + tab_number tinyint(3) unsigned NOT NULL, + tab_label varchar(50) default NULL, + PRIMARY KEY (view_id,tab_number) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->query(" + CREATE TABLE {PREFIX}views ( + view_id smallint(6) NOT NULL auto_increment, + form_id mediumint(8) unsigned NOT NULL, + access_type enum('admin','public','private','hidden') NOT NULL default 'public', + view_name varchar(100) NOT NULL, + view_order smallint(6) NOT NULL default '1', + is_new_sort_group enum('yes','no') NOT NULL, + group_id smallint(6) default NULL, + num_submissions_per_page smallint(6) NOT NULL default '10', + default_sort_field varchar(255) NOT NULL default 'submission_date', + default_sort_field_order enum('asc','desc') NOT NULL default 'desc', + may_add_submissions enum('yes','no') NOT NULL DEFAULT 'yes', + may_copy_submissions enum('yes','no') NOT NULL DEFAULT 'no', + may_edit_submissions enum('yes','no') NOT NULL default 'yes', + may_delete_submissions enum('yes','no') NOT NULL default 'yes', + has_client_map_filter enum('yes','no') NOT NULL default 'no', + has_standard_filter enum('yes','no') NOT NULL default 'no', + PRIMARY KEY (view_id) + ) ENGINE=InnoDB DEFAULT CHARSET=$charset + "); + $db->execute(); + + $db->processTransaction(); + } catch (Exception $e) { + $db->rollbackTransaction(); + return array(false, $e->getMessage()); + } + + return array(true, ""); + } + + + /** + * This function generates the content of the config file and returns it. + */ + public static function getConfigFileContents() + { + $installationFolder = realpath(__DIR__ . "/../../install/"); + + // try to fix REQUEST_URI for IIS + if (empty($_SERVER['REQUEST_URI'])) { + // IIS Mod-Rewrite + if (isset($_SERVER['HTTP_X_ORIGINAL_URL'])) { + $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_ORIGINAL_URL']; + } + + // IIS Isapi_Rewrite + else if (isset($_SERVER['HTTP_X_REWRITE_URL'])) { + $_SERVER['REQUEST_URI'] = $_SERVER['HTTP_X_REWRITE_URL']; + } else { + // some IIS + PHP configurations puts the script-name in the path-info (no need to append it twice) + if ( isset($_SERVER['PATH_INFO']) ) { + if ($_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME']) { + $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO']; + } else { + $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO']; + } + } + + // append the query string if it exists and isn't null + if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) { + $_SERVER['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; + } + } + } + + $protocol = General::isSecure() ? "https" : "http"; + + $root_url = preg_replace("/\/install\/actions-installation\.php\?page=3$/", "", "$protocol://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"); + $root_dir = preg_replace("/.install$/", "", $installationFolder); + $root_dir = preg_replace("/\\\/", "\\\\\\", $root_dir); + + $_SESSION["ft_install"]["g_root_dir"] = $installationFolder; + $_SESSION["ft_install"]["g_root_url"] = $root_url; + + $username = preg_replace('/\$/', '\\\$', Sessions::get("dbSettings.dbUsername")); + $password = preg_replace('/\$/', '\\\$', Sessions::get("dbSettings.dbPassword")); + $hostname = Sessions::get("dbSettings.dbHostname"); + $port = Sessions::get("dbSettings.dbPort"); + $db_name = Sessions::get("dbSettings.dbName"); + $table_prefix = Sessions::get("dbSettings.dbTablePrefix"); + + $content = "<" . "?php\n\n" + . "// main program paths - no trailing slashes!\n" + . "\$g_root_url = \"$root_url\";\n" + . "\$g_root_dir = \"$root_dir\";\n\n" + . "// database settings\n" + . "\$g_db_hostname = \"$hostname\";\n" + . "\$g_db_port = \"$port\";\n" + . "\$g_db_name = \"$db_name\";\n" + . "\$g_db_username = \"$username\";\n" + . "\$g_db_password = \"$password\";\n" + . "\$g_table_prefix = \"$table_prefix\";\n"; + + $custom_cache_folder = Sessions::get("folderSettings.customCacheFolder"); + if ($custom_cache_folder) { + $content .= "\$g_custom_cache_folder = \"$custom_cache_folder\";\n"; + } + + $content .= "\n?" . ">"; + + return $content; + } + + + /** + * Creates the administrator account (well, updates it). Used in the installation process only. + * @param array $info + * @return array + */ + public static function setAdminAccount(array $info, $lang) + { + $db = Core::$db; + + try { + $db->query(" + UPDATE {PREFIX}accounts + SET first_name = :first_name, + last_name = :last_name, + email = :email, + username = :username, + password = :password, + logout_url = :logout_url, + ui_language = :ui_language + WHERE account_id = :account_id + "); + $db->bindAll(array( + "first_name" => $info["firstName"], + "last_name" => $info["lastName"], + "email" => $info["email"], + "username" => $info["username"], + "password" => General::encode($info["password"]), + "logout_url" => Core::getRootUrl(), + "ui_language" => $lang, + "account_id" => 1 // the admin account is always ID 1 + )); + $db->execute(); + } catch (Exception $e) { + return array(false, $e->getMessage()); + } + + return array(true, ""); + } + + /** + * Installs the core field types. From 2.1.5 up until 3.0.0, the core fields were in a separate module. As of + * 3.0.0 they were moved to the Core. + */ + public static function installCoreFieldTypes() + { + $db = Core::$db; + + // this ensures that the module contents only get installed once + $field_types = FieldTypes::get(); + if (count($field_types) > 0) { + return array(true, ""); + } + + $group_query = " + INSERT INTO {PREFIX}list_groups (group_type, group_name, custom_data, list_order) + VALUES (:group_type, :group_name, :custom_data, :list_order) + "; + + // first, insert the groups for the upcoming field types + $db->query($group_query); + $db->bindAll(array( + "group_type" => "field_types", + "group_name" => "{\$LANG.phrase_standard_fields}", + "custom_data" => "", + "list_order" => 1 + )); + try { + $db->execute(); + } catch (Exception $e) { + return array(false, "Problem inserting list group item #1: " . $e->getMessage()); + } + $group1_id = $db->getInsertId(); + + + $db->query($group_query); + $db->bindAll(array( + "group_type" => "field_types", + "group_name" => "{\$LANG.phrase_special_fields}", + "custom_data" => "", + "list_order" => 2 + )); + + try { + $db->execute(); + } catch (Exception $e) { + CoreFieldTypes::rollbackNewInstallation(); + return array(false, "Problem inserting list group item #2: " . $e->getMessage()); + } + $group2_id = $db->getInsertId(); + + + // install each field type one-by-one. If anything fails, return immediately and inform the user. This should + // NEVER occur, because the only time this code is ever executed is when first installing the module + list($success, $error) = CoreFieldTypes::installFieldType("textbox", $group1_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("textarea", $group1_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("password", $group1_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("dropdown", $group1_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("multi_select_dropdown", $group1_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("radio_buttons", $group1_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("checkboxes", $group1_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("date", $group2_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("time", $group2_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("phone", $group2_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + list($success, $error) = CoreFieldTypes::installFieldType("code_markup", $group2_id); + if (!$success) { + CoreFieldTypes::rollbackNewInstallation(); + return array($success, $error); + } + + return array(true, ""); + } + + + // changed in 3.0.0. Moved to separate method so the upgrade script can call it + public static function getEditSubmissionOnloadResources() + { + $resources = <<< END + + + + + + + + +END; + return $resources; + } + + + /** + * Helper method to determine if the installation has already been completed and (optionall) redirect to the login + * page if so. + * @param bool $redirect + * @return bool + */ + public static function checkInstallationComplete($redirect = true) + { + $config_file_exists = Core::checkConfigFileExists(); + $installation_complete = false; + + if ($config_file_exists) { + try { + include(Core::getConfigFilePath()); + $port = isset($g_db_port) ? $g_db_port : null; + $db = new Database($g_db_hostname, $g_db_name, $port, $g_db_username, $g_db_password, $g_table_prefix); + $db->query("SELECT setting_value FROM {PREFIX}settings WHERE setting_name = 'installation_complete'"); + $db->execute(); + $installation_complete = $db->fetch(PDO::FETCH_COLUMN) == "yes"; + } catch (Exception $e) {} + } + + $complete = $config_file_exists && $installation_complete; + + if ($complete && $redirect) { + header("location: ../"); + exit; + } + + return $complete; + } + + + // 3.0.15 moved to a single cache folder for all themes/usages. You can now set it via the installation UI. This + // method is used on each page of the installation script to return the selected location. For people first arriving + // on the installation script, they'll see an error thrown if the default location (../../cache) isn't writable + public static function getCacheFolder() + { + $custom_cache_folder = Sessions::get("g_custom_cache_folder"); + if (isset($custom_cache_folder) && !empty($custom_cache_folder)) { + return $custom_cache_folder; + } + + return realpath(__DIR__ . "/../../cache"); + } + + + public static function verifyCustomCacheFolder($customCacheFolder) + { + $data = array(); + $statusCode = 200; + + $customCacheFolderExists = is_dir($customCacheFolder); + if ($customCacheFolderExists) { + $customCacheFolderWritable = is_writable($customCacheFolder); + + // if the custom cache folder is writable, great - create a blank index.html file in it just to prevent + // servers configured to list the contents + if ($customCacheFolderWritable) { + $indexFile = "$customCacheFolder/index.html"; + if (!file_exists($indexFile)) { + fopen($indexFile, "w"); + } + $data["cacheFolderWritable"] = true; + Sessions::set("fti.systemCheckPassed", true); + Sessions::set("fti.folderSettings.customCacheFolder", $customCacheFolder); + } else { + $data["error"] = "invalid_custom_cache_folder_permissions"; + $data["cacheFolderWritable"] = false; + $statusCode = 400; + } + } else { + $data["cacheFolderWritable"] = false; + $data["error"] = "invalid_folder"; + $statusCode = 400; + } + + return array($data, $statusCode); + } + +} + diff --git a/global/code/ListGroups.class.php b/global/code/ListGroups.class.php new file mode 100644 index 00000000..e583b67c --- /dev/null +++ b/global/code/ListGroups.class.php @@ -0,0 +1,91 @@ +query(" + INSERT INTO {PREFIX}list_groups (group_type, group_name, custom_data, list_order) + VALUES (:group_type, :group_name, :custom_data, :list_order) + "); + $db->bindAll(array( + "group_type" => $group_type, + "group_name" => $group_name, + "custom_data" => "", + "list_order" => $next_order + )); + $db->execute(); + + return array( + "group_id" => $db->getInsertId(), + "group_name" => $group_name + ); + } + + + // list groups are ordered. This returns the next number, used when creating a new one. + public static function getNextListOrder($group_type) + { + $db = Core::$db; + + $db->query(" + SELECT list_order + FROM {PREFIX}list_groups + WHERE group_type = :group_type + ORDER BY list_order + DESC LIMIT 1 + "); + $db->bind("group_type", $group_type); + $db->execute(); + $order = $db->fetch(PDO::FETCH_COLUMN); + return !isset($order) ? 1 : $order + 1; + } + + public static function deleteListGroup($group_id) + { + Core::$db->query("DELETE FROM {PREFIX}list_groups WHERE group_id = :group_id"); + Core::$db->bind("group_id", $group_id); + Core::$db->execute(); + } + + + public static function deleteByGroupType($group_type) + { + Core::$db->query("DELETE FROM {PREFIX}list_groups WHERE group_type = :group_type"); + Core::$db->bind("group_type", $group_type); + Core::$db->execute(); + } + + public static function getByGroupType($group_type) + { + Core::$db->query(" + SELECT * + FROM {PREFIX}list_groups + WHERE group_type = :group_type + ORDER BY list_order + "); + Core::$db->bind("group_type", $group_type); + Core::$db->execute(); + + return Core::$db->fetchAll(); + } +} diff --git a/global/code/Menus.class.php b/global/code/Menus.class.php new file mode 100644 index 00000000..89075312 --- /dev/null +++ b/global/code/Menus.class.php @@ -0,0 +1,1046 @@ + $url, + "display_text" => $curr_item["display_text"], + "page_identifier" => $curr_item["page_identifier"], + "is_submenu" => $curr_item["is_submenu"] + ); + } + + Sessions::set("menu.menu_items", $menu_template_info); + } + + + /** + * Returns everything about a user's menu. + * + * @param integer $account_id + */ + public static function getMenuByAccountId($account_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}menus m, {PREFIX}accounts a + WHERE a.account_id = :account_id AND + m.menu_id = a.menu_id + "); + $db->bind("account_id", $account_id); + $db->execute(); + $menu_info = $db->fetch(); + $menu_id = $menu_info["menu_id"]; + + $db->query(" + SELECT * + FROM {PREFIX}menu_items + WHERE menu_id = :menu_id + ORDER BY list_order + "); + $db->bind("menu_id", $menu_id); + $db->execute(); + $info = $db->getResultsArray(); + + $menu_info["menu_items"] = $info; + + return $menu_info; + } + + + /** + * Returns an array of menu hashes for all menus in the database. Ordered by menu name. + * + * @return array + */ + public static function getMenuList() + { + $db = Core::$db; + $db->query(" + SELECT * + FROM {PREFIX}menus + ORDER BY menu + "); + $db->execute(); + + $menus = array(); + foreach ($db->fetchAll() as $row) { + $menus[] = $row; + } + + extract(Hooks::processHookCalls("end", compact("menus"), array("menus")), EXTR_OVERWRITE); + + return $menus; + } + + + /** + * Builds a dropdown of available pages for a client. This is used by the administrator + * to display the list of pages available for the clients menus, etc. + * + * @param string $selected + * @param array $attributes + * @param array $omit_pages + */ + public static function getClientMenuPagesDropdown($selected, $attributes, $omit_pages = array()) + { + global $LANG; + + // stores the non-option lines of the select box: and the optgroups + $select_lines = array(); + $select_lines[] = array("type" => "select_open"); + + if (!in_array("", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "", "v" => $LANG["phrase_please_select"]); + } + if (!in_array("custom_url", $omit_pages)) { + $select_lines[] = array("type" => "optgroup_open", "label" => $LANG["word_custom"]); + $select_lines[] = array("type" => "option", "k" => "custom_url", "v" => $LANG["phrase_custom_url"]); + $select_lines[] = array("type" => "optgroup_close"); + } + + $select_lines[] = array("type" => "optgroup_open", "label" => $LANG["word_main"]); + + if (!in_array("client_forms", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "client_forms", "v" => $LANG["word_forms"]); + } + if (!in_array("client_form_submissions", $omit_pages)) { + $select_lines[] = array( + "type" => "option", + "k" => "client_form_submissions", + "v" => $LANG["phrase_form_submissions"] + ); + } + if (!in_array("client_account", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "client_account", "v" => $LANG["word_account"]); + } + if (!in_array("client_account_login", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "client_account_login", "v" => $LANG["phrase_login_info"]); + } + if (!in_array("client_account_settings", $omit_pages)) { + $select_lines[] = array( + "type" => "option", + "k" => "client_account_settings", + "v" => $LANG["phrase_account_settings"] + ); + } + if (!in_array("logout", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "logout", "v" => $LANG["word_logout"]); + } + + $select_lines[] = array("type" => "optgroup_close"); + + extract(Hooks::processHookCalls("middle", compact("select_lines"), array("select_lines")), EXTR_OVERWRITE); + + $select_lines[] = array("type" => "select_close"); + + // now build the HTML + $dd = ""; + foreach ($select_lines as $line) { + switch ($line["type"]) { + case "select_open": + $attribute_str = ""; + foreach ($attributes as $key => $value) { + $attribute_str .= " $key=\"$value\""; + } + $dd .= ""; + break; + case "optgroup_open": + $dd .= ""; + break; + case "optgroup_close": + $dd .= ""; + break; + case "option": + $key = $line["k"]; + $value = $line["v"]; + $dd .= "\n"; + break; + } + } + + return $dd; + } + + + /** + * Retrieves a list of all menus. + * @return array a hash of view information + */ + public static function getList($page_num = 1, $per_page = 10) + { + $db = Core::$db; + + // determine the LIMIT clause + if (empty($page_num)) { + $page_num = 1; + } + $first_item = ($page_num - 1) * $per_page; + $limit_clause = "LIMIT $first_item, $per_page"; + + $db->query(" + SELECT * + FROM {PREFIX}menus + ORDER BY menu + $limit_clause + "); + $db->execute(); + $results = $db->fetchAll(); + + $db->query("SELECT count(*) as c FROM {PREFIX}menus"); + $db->execute(); + $count = $db->fetch(); + + // select all account associated with this menu + $info = array(); + foreach ($results as $row) { + $db->query(" + SELECT account_id, first_name, last_name, account_type + FROM {PREFIX}accounts a + WHERE menu_id = :menu_id + "); + $db->bind("menu_id", $row["menu_id"]); + $db->execute(); + + $accounts = array(); + foreach ($db->fetchAll() as $account_row) { + $accounts[] = $account_row; + } + $row["account_info"] = $accounts; + $info[] = $row; + } + + $return_hash["results"] = $info; + $return_hash["num_results"] = $count["c"]; + + extract(Hooks::processHookCalls("end", compact("return_hash"), array("return_hash")), EXTR_OVERWRITE); + + return $return_hash; + } + + + /** + * This function builds the dropdown menu that lists all available pages for an administrator account. + * + * @param string $default_value + * @param array $attributes a hash of attributes, e.g. "name" => "row1", "onchange" => "myfunc()" + * @param boolean $omit_pages this determines which fields should be OMITTED from the generated + * HTML; it's an array whose values correspond to the page names found at the top of this file. + * @return string + */ + public static function getAdminMenuPagesDropdown($selected, $attributes, $is_building_menu, $omit_pages = array()) + { + $LANG = Core::$L; + + // stores the non-option lines of the select box: and the optgroups + $select_lines = array(); + $select_lines[] = array("type" => "select_open"); + + if (!in_array("", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "", "v" => $LANG["phrase_please_select"]); + } + + if (!in_array("custom_url", $omit_pages)) { + $select_lines[] = array("type" => "optgroup_open", "label" => $LANG["word_custom"]); + $select_lines[] = array("type" => "option", "k" => "custom_url", "v" => $LANG["phrase_custom_url"]); + $select_lines[] = array("type" => "optgroup_close"); + } + + $select_lines[] = array("type" => "optgroup_open", "label" => $LANG["word_forms"]); + + if (!in_array("admin_forms", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "admin_forms", "v" => $LANG["word_forms"]); + } + if (!in_array("option_lists", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "option_lists", "v" => $LANG["phrase_option_lists"]); + } + if (!in_array("add_form", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "add_form_choose_type", "v" => $LANG["phrase_add_form"]); + } + if (!in_array("add_form_internal", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "add_form_internal", "v" => $LANG["phrase_add_form_internal"]); + } + if (!in_array("add_form1", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "add_form1", "v" => $LANG["phrase_add_form_external"]); + } + + if ($is_building_menu) { + if (!in_array("form_submissions", $omit_pages)) { + $select_lines[] = array( + "type" => "option", + "k" => "form_submissions", + "v" => $LANG["phrase_form_submissions"] + ); + } + if (!in_array("edit_form", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "edit_form", "v" => $LANG["phrase_edit_form"]); + } + if (!in_array("edit_form_main", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "edit_form_main", "v" => "{$LANG["phrase_edit_form"]} - {$LANG["word_main"]}"); + } + + if (!in_array("edit_form_fields", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "edit_form_fields", "v" => "{$LANG["phrase_edit_form"]} - {$LANG["word_fields"]}"); + } + if (!in_array("edit_form_views", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "edit_form_views", "v" => "{$LANG["phrase_edit_form"]} - {$LANG["word_views"]}"); + } + if (!in_array("edit_form_emails", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "edit_form_emails", "v" => "{$LANG["phrase_edit_form"]} - {$LANG["word_emails"]}"); + } + } + + $select_lines[] = array("type" => "optgroup_close"); + + $select_lines[] = array("type" => "optgroup_open", "label" => $LANG["word_clients"]); + if (!in_array("clients", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "clients", "v" => $LANG["word_clients"]); + } + if (!in_array("add_client", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "add_client", "v" => $LANG["phrase_add_client"]); + } + + if ($is_building_menu) { + if (!in_array("edit_client", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "edit_client", "v" => $LANG["phrase_edit_client"]); + } + if (!in_array("edit_client_main", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "edit_client_main", "v" => $LANG["word_main"]); + } + if (!in_array("edit_client_permissions", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "edit_client_permissions", "v" => $LANG["word_permissions"]); + } + } + + $select_lines[] = array("type" => "optgroup_close"); + $select_lines[] = array("type" => "optgroup_open", "label" => $LANG["word_modules"]); + if (!in_array("modules", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "modules", "v" => $LANG["word_modules"]); + } + + $modules = Modules::getList(); + for ($i=0; $i "option", "k" => "module_{$module_id}", "v" => $module); + } + $select_lines[] = array("type" => "optgroup_close"); + + extract(Hooks::processHookCalls("middle", compact("select_lines"), array("select_lines")), EXTR_OVERWRITE); + + $select_lines[] = array("type" => "optgroup_open", "label" => $LANG["word_other"]); + $select_lines[] = array("type" => "option", "k" => "your_account", "v" => $LANG["phrase_your_account"]); + $select_lines[] = array("type" => "option", "k" => "settings_themes", "v" => "{$LANG["word_themes"]}"); + $select_lines[] = array("type" => "option", "k" => "settings", "v" => $LANG["word_settings"]); + $select_lines[] = array("type" => "option", "k" => "settings_main", "v" => "{$LANG["word_settings"]} - {$LANG["word_main"]}"); + $select_lines[] = array("type" => "option", "k" => "settings_accounts", "v" => "{$LANG["word_settings"]} - {$LANG["word_accounts"]}"); + $select_lines[] = array("type" => "option", "k" => "settings_files", "v" => "{$LANG["word_settings"]} - {$LANG["word_files"]}"); + $select_lines[] = array("type" => "option", "k" => "settings_menus", "v" => "{$LANG["word_settings"]} - {$LANG["word_menus"]}"); + if (!in_array("logout", $omit_pages)) { + $select_lines[] = array("type" => "option", "k" => "logout", "v" => $LANG["word_logout"]); + } + $select_lines[] = array("type" => "optgroup_close"); + $select_lines[] = array("type" => "select_close"); + + + // now build the HTML + $dd = ""; + foreach ($select_lines as $line) { + switch ($line["type"]) { + case "select_open": + $attribute_str = ""; + foreach ($attributes as $key => $value) { + $attribute_str .= " $key=\"$value\""; + } + $dd .= ""; + break; + case "optgroup_open": + $dd .= ""; + break; + case "optgroup_close": + $dd .= ""; + break; + case "option": + $key = $line["k"]; + $value = $line["v"]; + $dd .= "\n"; + break; + } + } + + return $dd; + } + + + /** + * This function creates a blank client menu with no menu items. + * + * @return integer $menu_id + */ + public static function createBlankClientMenu() + { + $db = Core::$db; + $LANG = Core::$L; + + // to ensure that even new blank menus have unique names, query the database and find + // the next free menu name of the form "Client Menu (X)" (where "Client Menu" is in the language + // of the current user) + $menus = Menus::getMenuList(); + $menu_names = array(); + foreach ($menus as $menu_info) { + $menu_names[] = $menu_info["menu"]; + } + + $base_client_menu_name = $LANG["phrase_client_menu"]; + $new_menu_name = $base_client_menu_name; + + if (in_array($new_menu_name, $menu_names)) { + $count = 1; + $new_menu_name = "$base_client_menu_name ($count)"; + + while (in_array($new_menu_name, $menu_names)) { + $count++; + $new_menu_name = "$base_client_menu_name ($count)"; + } + } + + $db->query(" + INSERT INTO {PREFIX}menus (menu, menu_type) + VALUES (:menu, 'client') + "); + $db->bind("menu", $new_menu_name); + $db->execute(); + $menu_id = $db->getInsertId(); + + return $menu_id; + } + + + /** + * Returns the one (and only) administration menu, and all associated menu items. + * + * @return array + */ + public static function getAdminMenu() + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}menus + WHERE menu_type = 'admin' + "); + $db->execute(); + + $menu_info = $db->fetch(); + $menu_id = $menu_info["menu_id"]; + + // now get all the menu items and stash them in a "menu_items" key in $menu_info + $db->query(" + SELECT * + FROM {PREFIX}menu_items + WHERE menu_id = :menu_id + ORDER BY list_order + "); + $db->bind("menu_id", $menu_id); + $db->execute(); + + $menu_items = array(); + foreach ($db->fetchAll() as $item) { + $menu_items[] = $item; + } + + $menu_info["menu_items"] = $menu_items; + + extract(Hooks::processHookCalls("end", compact("menu_info"), array("menu_info")), EXTR_OVERWRITE); + + return $menu_info; + } + + /** + * A wrapper function for Menus::getClientMenu (and getAdminMenu). Returns all info about a menu, regardless of + * type. If it's an admin menu, it'll be returned with an empty "clients" hash key. + * + * @param integer $menu_id + * @return + */ + public static function getMenu($menu_id) + { + return self::getClientMenu($menu_id); + } + + /** + * Returns everything about a client menu. Bit of a misnomer, since it also returns the admin menu. + * + * @param integer $menu_id + * @return array + */ + public static function getClientMenu($menu_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}menus + WHERE menu_id = :menu_id + "); + $db->bind("menu_id", $menu_id); + $db->execute(); + + $menu_info = $db->fetch(); + $menu_info["menu_items"] = self::getMenuItems($menu_id); + + // get all associated client accounts + $db->query(" + SELECT * + FROM {PREFIX}accounts + WHERE menu_id = :menu_id + ORDER BY first_name + "); + $db->bind("menu_id", $menu_id); + $db->execute(); + + $menu_clients = array(); + foreach ($db->fetchAll() as $client) { + $menu_clients[] = $client; + } + $menu_info["clients"] = $menu_clients; + + extract(Hooks::processHookCalls("end", compact("menu_info"), array("menu_info")), EXTR_OVERWRITE); + + return $menu_info; + } + + + /** + * Returns all menu items for a particular menu. + * @param integer $menu_id + * @return array an array of menu hashes + */ + public static function getMenuItems($menu_id) + { + $db = Core::$db; + + // get all the menu items and stash them in a "menu_items" key in $menu_info + $db->query(" + SELECT * + FROM {PREFIX}menu_items + WHERE menu_id = :menu_id + ORDER BY list_order + "); + $db->bind("menu_id", $menu_id); + $db->execute(); + + $menu_items = array(); + foreach ($db->fetchAll() as $item) { + $menu_items[] = $item; + } + + extract(Hooks::processHookCalls("end", compact("menu_items", "menu_id"), array("menu_items")), EXTR_OVERWRITE); + + return $menu_items; + } + + + /** + * Called whenever an item is removed from a menu - OUTSIDE of the main administrator update menu + * pages (client & admin). This updates the order to ensure its consistent (i.e. no gaps). Note: + * this doesn't update the cached menu. If that's needed, you need to call the Menus::cacheAccountMenu + * function separately + * + * @param integer $menu_id + */ + public static function updateMenuOrder($menu_id) + { + $db = Core::$db; + + // this returns the menu items ordered by list order + $menu_items = self::getMenuItems($menu_id); + + // now update the list orders to ensure no gaps + $order = 1; + foreach ($menu_items as $menu_item) { + $db->query(" + UPDATE {PREFIX}menu_items + SET list_order = :list_order + WHERE menu_item_id = :menu_item_id + "); + $db->bindAll(array( + "list_order" => $order, + "menu_item_id" => $menu_item["menu_item_id"] + )); + $db->execute(); + $order++; + } + + extract(Hooks::processHookCalls("end", compact("menu_id"), array()), EXTR_OVERWRITE); + } + + + /** + * This function updates the default menu for multiple accounts simultaneously. It's called when + * an administrator tries to delete a menu that's current used by some client accounts. They're presented + * with the option of setting the menu ID for all the clients. + * + * There's very little error checking done here... + * + * @param string $account_id_str a comma delimited list of account IDs + * @param integer $theme_id the theme ID + */ + public static function updateClientMenus($account_ids, $menu_id) + { + $db = Core::$db; + $LANG = Core::$L; + + if (empty($account_ids) || empty($menu_id)) { + return array(); + } + + $client_ids = explode(",", $account_ids); + $menu_info = self::getMenu($menu_id); + $menu_name = $menu_info["menu"]; + + foreach ($client_ids as $client_id) { + $db->query(" + UPDATE {PREFIX}accounts + SET menu_id = :menu_id + WHERE account_id = :account_id + "); + + try { + $db->bindAll(array( + "menu_id" => $menu_id, + "account_id" => $client_id + )); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + } + + $placeholders = array("menu_name" => $menu_name); + $message = General::evalSmartyString($LANG["notify_client_account_menus_updated"], $placeholders); + + return array(true, $message); + } + + + /** + * Updates the (single) administration menu. + * + * @param array $info + */ + public static function updateAdminMenu($info) + { + $LANG = Core::$L; + $db = Core::$db; + + $menu_id = $info["menu_id"]; + $account_id = $info["account_id"]; + $sortable_id = $info["sortable_id"]; + + $sortable_rows = explode(",", $info["{$sortable_id}_sortable__rows"]); + $sortable_new_groups = explode(",", $info["{$sortable_id}_sortable__new_groups"]); + + $menu_items = array(); + foreach ($sortable_rows as $i) { + // if this row doesn't have a page identifier, just ignore it + if (!isset($info["page_identifier_$i"]) || empty($info["page_identifier_$i"])) { + continue; + } + $page_identifier = $info["page_identifier_$i"]; + $display_text = $info["display_text_$i"]; + $custom_options = isset($info["custom_options_$i"]) ? $info["custom_options_$i"] : ""; + $is_submenu = isset($info["submenu_$i"]) ? "yes" : "no"; + + // construct the URL for this menu item + $url = Pages::constructPageURL($page_identifier, $custom_options); + + $menu_items[] = array( + "url" => $url, + "page_identifier" => $page_identifier, + "display_text" => $display_text, + "custom_options" => $custom_options, + "is_submenu" => $is_submenu, + "is_new_sort_group" => (in_array($i, $sortable_new_groups)) ? "yes" : "no" + ); + } + + self::clearMenuItems($menu_id); + self::addMenuItems($menu_id, $menu_items); + + // update the administrator's cache, so the menu automatically updates + self::cacheAccountMenu($account_id); + + $success = true; + $message = $LANG["notify_admin_menu_updated"]; + extract(Hooks::processHookCalls("end", compact("success", "message", "info"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Updates a client menu. + * + * @param array $info + */ + public static function updateClientMenu($info) + { + $LANG = Core::$L; + $db = Core::$db; + + $menu_id = $info["menu_id"]; + $menu = trim($info["menu"]); + $sortable_id = $info["sortable_id"]; + + $db->query(" + UPDATE {PREFIX}menus + SET menu = :menu + WHERE menu_id = :menu_id + "); + $db->bindAll(array( + "menu" => $menu, + "menu_id" => $menu_id + )); + $db->execute(); + + $sortable_rows = explode(",", $info["{$sortable_id}_sortable__rows"]); + $sortable_new_groups = explode(",", $info["{$sortable_id}_sortable__new_groups"]); + + $menu_items = array(); + foreach ($sortable_rows as $i) { + + // if this row doesn't have a page identifier, just ignore it + if (!isset($info["page_identifier_$i"]) || empty($info["page_identifier_$i"])) { + continue; + } + $page_identifier = $info["page_identifier_$i"]; + $display_text = $info["display_text_$i"]; + $custom_options = isset($info["custom_options_$i"]) ? $info["custom_options_$i"] : ""; + $is_submenu = isset($info["submenu_$i"]) ? "yes" : "no"; + + // construct the URL for this menu item + $url = Pages::constructPageURL($page_identifier, $custom_options); + + $menu_items[] = array( + "url" => $url, + "page_identifier" => $page_identifier, + "display_text" => $display_text, + "custom_options" => $custom_options, + "is_submenu" => $is_submenu, + "is_new_sort_group" => (in_array($i, $sortable_new_groups)) ? "yes" : "no" + ); + } + + ksort($menu_items); + self::clearMenuItems($menu_id); + self::addMenuItems($menu_id, $menu_items); + + $success = true; + $message = $LANG["notify_client_menu_updated"]; + extract(Hooks::processHookCalls("end", compact("info"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + public static function clearMenuItems($menu_id) + { + $db = Core::$db; + + $db->query("DELETE FROM {PREFIX}menu_items WHERE menu_id = :menu_id"); + $db->bind("menu_id", $menu_id); + $db->execute(); + } + + + public static function addMenuItems($menu_id, $menu_items) + { + $db = Core::$db; + + $order = 1; + foreach ($menu_items as $hash) { + $db->query(" + INSERT INTO {PREFIX}menu_items (menu_id, display_text, page_identifier, custom_options, url, + is_submenu, list_order, is_new_sort_group) + VALUES (:menu_id, :display_text, :page_identifier, :custom_options, :url, :is_submenu, + :list_order, :is_new_sort_group) + "); + $db->bindAll(array( + "menu_id" => $menu_id, + "display_text" => $hash["display_text"], + "page_identifier" => $hash["page_identifier"], + "custom_options" => $hash["custom_options"], + "url" => $hash["url"], + "is_submenu" => $hash["is_submenu"], + "list_order" => $order, + "is_new_sort_group" => $hash["is_new_sort_group"] + )); + $db->execute(); + $order++; + } + } + + + /** + * Deletes a client menu. Since it's possible for one or more clients to already be associated with the + * menu, those clients will be orphaned by this action. In this situation, it refuses to delete the + * menu, and lists all clients that will be affected (each a link to their account). It also provides + * an option to bulk assign them to another menu. + * + * In all likelihood, however, the administrator will already be aware of this, having seen their names + * listed in the table where they chose to delete the menu. + * + * @param integer $menu_id + * @return array [0] T/F, [1] message + */ + public static function deleteClientMenu($menu_id) + { + $LANG = Core::$L; + $db = Core::$db; + $root_url = Core::getRootUrl(); + + extract(Hooks::processHookCalls("start", compact("menu_id"), array()), EXTR_OVERWRITE); + + // confirm that there are no client accounts that currently use this menu + $db->query(" + SELECT account_id, first_name, last_name + FROM {PREFIX}accounts + WHERE menu_id = :menu_id + "); + $db->bind("menu_id", $menu_id); + $db->execute(); + + $client_info = $db->fetchAll(); + + // move this! + if (!empty($client_info)) { + $message = $LANG["notify_deleted_menu_already_assigned"]; + $placeholder_str = $LANG["phrase_assign_all_listed_client_accounts_to_menu"]; + + $menus = self::getMenuList(); + $dd = ""; + + // a bit bad (hardcoded HTML!), but organize the account list in 3 columns + $client_links_table = "\n"; + $num_affected_clients = count($client_info); + for ($i=0; $i<$num_affected_clients; $i++) { + $account_info = $client_info[$i]; + $client_id = $account_info["account_id"]; + $first_name = $account_info["first_name"]; + $last_name = $account_info["last_name"]; + $client_ids[] = $client_id; + + if ($i != 0 && $i % 3 == 0) { + $client_links_table .= "\n"; + } + + $client_links_table .= "\n"; + } + $client_id_str = join(",", $client_ids); + + // close the table + if ($num_affected_clients % 3 == 1) + $client_links_table .= ""; + else if ($num_affected_clients % 3 == 2) + $client_links_table .= ""; + + $client_links_table .= "
• $first_name $last_name
"; + + $submit_button = ""; + + $placeholders = array( + "menu_dropdown" => $dd, + "submit_button" => $submit_button + ); + + $mass_assign_html = "
" . General::evalSmartyString($placeholder_str, $placeholders) . "
"; + $html = $message . $mass_assign_html . $client_links_table; + + return array(false, $html); + } + + // ------------------------------------------------------------ + + $db->query(" + SELECT account_id, first_name, last_name + FROM {PREFIX}accounts + WHERE menu_id = :menu_id + "); + $db->bind("menu_id", $menu_id); + $db->execute(); + + $client_accounts = $db->fetchAll(); + + // delete the menu + self::deleteMenu($menu_id); + + // construct the message to return to the administrator + if (empty($client_accounts)) { + $success = true; + $message = $LANG["notify_client_menu_deleted"]; + } else { + $success = false; + $message = $LANG["notify_client_menu_deleted_orphaned_accounts"]; + + $accounts_str = "
"; + foreach ($client_accounts as $account_info) { + $client_id = $account_info["account_id"]; + $first_name = $account_info["first_name"]; + $last_name = $account_info["last_name"]; + $accounts_str .= "• $first_name $last_name
\n"; + } + + $message .= $accounts_str; + } + + return array($success, $message); + } + + + public static function deleteMenu($menu_id) + { + $db = Core::$db; + + $db->query(" + DELETE FROM {PREFIX}menus + WHERE menu_id = $menu_id + "); + $db->bind("menu_id", $menu_id); + $db->execute(); + + $db->query(" + DELETE FROM {PREFIX}menu_items + WHERE menu_id = $menu_id + "); + $db->bind("menu_id", $menu_id); + $db->execute(); + } + + + public static function removeModuleFromMenus($module_id) + { + $db = Core::$db; + + $db->query(" + SELECT DISTINCT menu_id + FROM {PREFIX}menu_items + WHERE page_identifier = :page_identifier + "); + $db->bind("page_identifier", "module_$module_id"); + $db->execute(); + + $affected_menu_ids = $db->fetchAll(PDO::FETCH_COLUMN); + + if (!empty($affected_menu_ids)) { + $db->query(" + DELETE FROM {PREFIX}menu_items + WHERE page_identifier = :page_identifier + "); + $db->bind("page_identifier", "module_$module_id"); + $db->execute(); + + // now update the menu item list order + foreach ($affected_menu_ids as $menu_id) { + Menus::updateMenuOrder($menu_id); + } + + // if rows were deleted, re-cache the admin menu and update the ordering of the admin account. + // ASSUMPTION: only administrator accounts can have modules as items (will need to update at some + // point soon, no doubt). + Menus::cacheAccountMenu(Sessions::get("account.account_id")); + Menus::updateMenuOrder(Sessions::get("account.menu_id")); + } + } +} diff --git a/global/code/Module.abstract.class.php b/global/code/Module.abstract.class.php new file mode 100644 index 00000000..a9e7e213 --- /dev/null +++ b/global/code/Module.abstract.class.php @@ -0,0 +1,274 @@ + + * @package Core + * @abstract + */ +abstract class Module { + + // REQUIRED + protected $moduleName; + protected $author; + protected $authorEmail; + protected $authorLink; + protected $version; + protected $date; + + // OPTIONAL + protected $originLanguage = "en_us"; + protected $nav = array(); + + /** + * An array of JS files included for this module. Files defined here will automatically be included on all module pages. + * @var array + */ + protected $jsFiles = array(); + + /** + * An array of JS files included for this module. Files defined here will automatically be included on all module pages. + * @var array + */ + protected $cssFiles = array(); + + /** + * Contains all strings for the current language. This is populated automatically on instantiation and + * contains the strings for the currently selected language. + * @var array + */ + protected $L = array(); + + // internal + private $moduleFolder; + private $currentLang; + private $currentLangFound; + + + /** + * The default constructor. Automatically populates the $L member var with whatever language is currently being + * used. If a Module defines its own constructor, it should always call the parent constructor as well to ensure + * $L is populated. ( parent::__construct(); ) + */ + public function __construct($lang) { + $this->currentLang = $lang; + + // a little magic to find the current instantiated class's folder + $currClass = new ReflectionClass(get_class($this)); + $currClassFolder = dirname($currClass->getFileName()); + + $currentLangFile = realpath($currClassFolder . "/../lang/{$lang}.php"); + $defaultLangFile = realpath($currClassFolder . "/../lang/{$this->originLanguage}.php"); + + $this->moduleFolder = basename(realpath($currClassFolder . "/../")); + + // TODO this can't be a require_once for the install script instantiates the module multiple times + if (file_exists($currentLangFile)) { + require($currentLangFile); + $this->currentLangFound = true; + } else if (file_exists($defaultLangFile)) { + require($defaultLangFile); + $this->currentLangFound = true; + } + + if (isset($L)) { + $this->L = $L; + } + } + + /** + * This is called once during the initial installation of the script, or when the installation is reset (which is + * effectively a fresh install). It is called AFTER the Core tables are installed, and you can rely + * on Core::$db having been initialized and the database connection having been set up. + * + * @return array [0] success / error + * [1] the error message, if there was a problem + */ + public function install($module_id) { + return array(true, ""); + } + + public function uninstall($module_id) { + return array(true, ""); + } + + public function upgrade($module_id, $old_module_version) { + return array(true, ""); + } + + + // non-overridable getters + + public final function displayPage($template, $page_vars = array(), $theme = "", $swatch = "") { + + // add in the JS and CSS files + if (!isset($page_vars["js_files"])) { + $page_vars["js_files"] = array(); + } else { + if (!is_array($page_vars["js_files"])) { + echo "Developer error: if defining a js_files page_vars property, it should be set to an array."; + $page_vars["js_files"] = array(); + } + } + + // add in the JS and CSS files + if (!isset($page_vars["css_files"])) { + $page_vars["css_files"] = array(); + } else { + if (!is_array($page_vars["css_files"])) { + echo "Developer error: if defining a css_files page_vars property, it should be set to an array."; + $page_vars["css_files"] = array(); + } + } + + $page_vars["js_files"] = array_merge($page_vars["js_files"], self::getJSFiles()); + $page_vars["css_files"] = array_merge($page_vars["css_files"], self::getCSSFiles()); + + Themes::displayModulePage($this->getModuleFolder(), $template, $page_vars, $theme, $swatch); + } + + // note that this method and the following actually returns the values from the CURRENT LANG FILE, not the private + // var above. See thoughts: https://github.com/formtools/core/issues/82 + public final function getModuleName() { + return $this->L["module_name"]; + } + + public final function getModuleDesc() { + return $this->L["module_description"]; + } + + public final function getAuthor() { + return $this->author; + } + + public final function getAuthorEmail() { + return $this->authorEmail; + } + + public final function getAuthorLink() { + return $this->authorLink; + } + + public final function getDate() { + return $this->date; + } + + public final function getVersion() { + return $this->version; + } + + public final function getOriginLang() { + return $this->originLanguage; + } + + public final function getModuleNav() { + $module_folder = Core::getRootUrl() . "/modules/" . $this->getModuleFolder(); + + $nav = array(); + foreach ($this->nav as $lang_key => $nav_item) { + $nav[$lang_key] = array("$module_folder/{$nav_item[0]}", $nav_item[1]); + } + + return $nav; + } + + public final function getModuleFolder() { + return $this->moduleFolder; + } + + /** + * Returns a list of all javascript files for this module. The file paths may contain the following placeholders + * which will be replaced: + * {FTROOT} - the Form Tools root URL + * {FTVERSION} - the current Form Tools version + * {MODULEVERSION} - the module version + * {MODULEROOT} - the module root URL + * @return array + */ + public final function getJSFiles() + { + $files = array(); + $root_url = Core::getRootUrl(); + $ft_version = Core::getVersionString(); + $module_root = "$root_url/modules/" . $this->getModuleFolder(); + + foreach ($this->jsFiles as $file) { + $files[] = str_replace( + array("{FTROOT}", "{FTVERSION}", "{MODULEVERSION}", "{MODULEROOT}"), + array($root_url, $ft_version, $this->getVersion(), $module_root), + $file + ); + } + return $files; + } + + /** + * Returns a list of all javascript files for this module. + * @return array + */ + public final function getCSSFiles() + { + $files = array(); + $root_url = Core::getRootUrl(); + $ft_version = Core::getVersionString(); + $module_root = "$root_url/modules/" . $this->getModuleFolder(); + + foreach ($this->cssFiles as $file) { + $files[] = str_replace( + array("{FTROOT}", "{FTVERSION}", "{MODULEVERSION}", "{MODULEROOT}"), + array($root_url, $ft_version, $this->getVersion(), $module_root), + $file + ); + } + return $files; + } + + /** + * Returns all or specific settings for the module. + * @param mixed $settings array of settings or single setting string, or nothing (returns all) + * @return array + */ + public final function getSettings ($settings = "") + { + return Settings::get($settings, $this->moduleFolder); + } + + /** + * Returns all or specific settings for the module. + * @param mixed $settings array of settings or single setting string, or nothing (returns all) + * @return array + */ + public final function setSettings ($settings = "") + { + return Settings::set($settings, $this->moduleFolder); + } + + /** + * Returns the language strings + * @return array + */ + public final function getLangStrings() { + return $this->L; + } + + /** + * Returns the language strings + * @return bool + */ + public final function isCurrentLangFound() { + return $this->currentLangFound; + } + + /** + * Helper method to clear the current module's hooks. + */ + public final function clearHooks() { + Hooks::unregisterModuleHooks($this->moduleFolder); + } +} diff --git a/global/code/ModuleMenu.class.php b/global/code/ModuleMenu.class.php new file mode 100644 index 00000000..01616dd7 --- /dev/null +++ b/global/code/ModuleMenu.class.php @@ -0,0 +1,130 @@ +query(" + SELECT * + FROM {PREFIX}module_menu_items + WHERE module_id = :module_id + ORDER BY list_order ASC + "); + $db->bind("module_id", $module_id); + $db->execute(); + + $placeholders = array( + "module_dir" => "$root_url/modules/$module_folder" + ); + + $menu_items = array(); + foreach ($db->fetchAll() as $row) { + $row["url"] = General::evalSmartyString($row["url"], $placeholders); + $menu_items[] = $row; + } + + extract(Hooks::processHookCalls("end", compact("menu_items", "module_id", "module_folder"), array("menu_items")), EXTR_OVERWRITE); + + return $menu_items; + } + + + public static function addMenuItems($module_id, $module) + { + $LANG = Core::$L; + $L = $module->getLangStrings(); + + $order = 1; + $module_nav = $module->getModuleNav(); + + + foreach ($module_nav as $lang_key => $info) { + $url = $info[0]; + $is_submenu = ($info[1]) ? "yes" : "no"; + + if (empty($lang_key) || empty($url)) { + continue; + } + + // odd this. Why not just store the lang string in the DB? That way it'll be translated for each user... + $display_text = isset($L[$lang_key]) ? $L[$lang_key] : $LANG[$lang_key]; + + ModuleMenu::addMenuItem($module_id, $display_text, $url, $is_submenu, $order); + $order++; + } + } + + public static function addMenuItem($module_id, $display_text, $url, $is_submenu, $order) + { + $db = Core::$db; + + $db->query(" + INSERT INTO {PREFIX}module_menu_items (module_id, display_text, url, is_submenu, list_order) + VALUES (:module_id, :display_text, :url, :is_submenu, :nav_order) + "); + $db->bindAll(array( + "module_id" => $module_id, + "display_text" => $display_text, + "url" => $url, + "is_submenu" => $is_submenu, + "nav_order" => $order + )); + $db->execute(); + } + + + public static function resetModuleNav($module_id, $nav, $L) + { + $LANG = Core::$L; + + ModuleMenu::clearModuleNav($module_id); + + $order = 1; + foreach ($nav as $lang_file_key => $info) { + $url = $info[0]; + $is_submenu = ($info[1]) ? "yes" : "no"; + if (empty($lang_file_key) || empty($url)) { + continue; + } + + $display_text = isset($L[$lang_file_key]) ? $L[$lang_file_key] : $LANG[$lang_file_key]; + ModuleMenu::addMenuItem($module_id, $display_text, $url, $is_submenu, $order); + $order++; + } + } + + + public static function clearModuleNav($module_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}module_menu_items WHERE module_id = :module_id"); + $db->bind("module_id", $module_id); + $db->execute(); + } + +} + diff --git a/global/code/Modules.class.php b/global/code/Modules.class.php new file mode 100644 index 00000000..18d4596b --- /dev/null +++ b/global/code/Modules.class.php @@ -0,0 +1,923 @@ +query("SELECT * FROM {PREFIX}modules ORDER BY module_name"); + $db->execute(); + + $modules_info = array(); + foreach ($db->fetchAll(PDO::FETCH_ASSOC) as $row) { + $modules_info[] = $row; + } + + extract(Hooks::processHookCalls("start", compact("modules_info"), array("modules_info")), EXTR_OVERWRITE); + + return $modules_info; + } + + + /** + * Updates the list of modules in the database by examining the contents of the /modules folder. + */ + public static function updateModuleList() + { + $db = Core::$db; + $LANG = Core::$L; + $root_dir = Core::getRootDir(); + + $modules = self::getUninstalledModules(); + + foreach ($modules as $module_folder => $module) { + + // Abstract classes in PHP don't have the option to force properties being defined, so check for them here + if ($module->getModuleName() == "" || + $module->getAuthor() == "" || + $module->getAuthorEmail() == "" || + $module->getAuthorLink() == "" || + $module->getVersion() == "" || + $module->getDate() == "") { + continue; + } + + list($year, $month, $day) = explode("-", $module->getDate()); + $timestamp = mktime(null, null, null, $month, $day, $year); + $module_date = General::getCurrentDatetime($timestamp); + + $db->query(" + INSERT INTO {PREFIX}modules (is_installed, is_enabled, origin_language, module_name, + module_folder, version, author, author_email, author_link, module_date) + VALUES (:is_installed, :is_enabled, :origin_language, :module_name, :folder, :module_version, + :author, :author_email, :author_link, :module_date) + "); + $db->bindAll(array( + "is_installed" => "no", + "is_enabled" => "no", + "origin_language" => $module->getOriginLang(), + "module_name" => $module->getModuleName(), + "folder" => $module_folder, + "module_version" => $module->getVersion(), + "author" => $module->getAuthor(), + "author_email" => $module->getAuthorEmail(), + "author_link" => $module->getAuthorLink(), + "module_date" => $module_date + )); + $db->execute(); + } + + // also, parse the existing modules and see if any folders have been removed altogether + $modules = self::getList(); + foreach ($modules as $module_info) { + if ($module_info["is_installed"] === "yes") { + continue; + } + $module_folder = $module_info["module_folder"]; + + // here the module is NOT installed and the folder doesn't even exist. So remove it from the DB. + if (!file_exists("$root_dir/modules/$module_folder")) { + $db->query(" + DELETE FROM {PREFIX}modules + WHERE module_id = :module_id + "); + $db->bind("module_id", $module_info["module_id"]); + $db->execute(); + } + } + + return array(true, $LANG["notify_module_list_updated"]); + } + + + /** + * Examines the content of the installation's modules folder and extracts information about all + * valid uploaded modules. + * @return array + */ + private static function getUninstalledModules() + { + $root_dir = Core::getRootDir(); + + $modules_folder = "$root_dir/modules"; + $dh = opendir($modules_folder); + + // if we couldn't open the modules folder, it doesn't exist or something went wrong + if (!$dh) { + return array(false, ""); + } + + // get the list of currently installed modules + $current_modules = self::getList(); + $current_module_folders = array(); + foreach ($current_modules as $module_info) { + $current_module_folders[] = $module_info["module_folder"]; + } + + $modules = array(); + while (($folder = readdir($dh)) !== false) { + + // if this module is already in the database, ignore it + if (in_array($folder, $current_module_folders)) { + continue; + } + + if (!is_dir("$modules_folder/$folder") || $folder == "." || $folder == "..") { + continue; + } + + if (self::isValidModule($folder)) { + $modules[$folder] = self::getModuleInstance($folder); + } + + } + closedir($dh); + + return $modules; + } + + + public static function installModules() + { + // this will run the installation scripts for any module in the /modules folder. Note: the special "Core Field Types" + // module has a dummy installation function that gets called here. That ensures the module is marked as "enabled", etc. + // even though we actually installed it elsewhere. + + $modules = self::getList(); + + foreach ($modules as $module_info) { + if ($module_info["is_installed"] == "yes") { + continue; + } + self::installModule($module_info["module_id"]); + } + } + + + /** + * This is called on the main Modules listing page for each module. It checks to + * see if the module has a new upgrade available. If it has, it displays an "Upgrade + * Module" link to allow the administrator to call the upgrade script (self::upgradeModule) + * + * @param integer $module_id + */ + public static function moduleNeedsUpgrading($module_id) + { + $module_info = self::getModule($module_id); + $module_folder = $module_info["module_folder"]; + $current_db_version = $module_info["version"]; + + $module = self::getModuleInstance($module_folder); + + return $current_db_version != $module->getVersion(); + } + + + /** + * Upgrades an individual module. + */ + public static function upgradeModule($module_id) + { + $db = Core::$db; + $LANG = Core::$L; + $root_url = Core::getRootUrl(); + + $module_info = self::getModule($module_id); + $module_folder = $module_info["module_folder"]; + $old_module_version = $module_info["version"]; + + $module = self::getModuleInstance($module_folder); + + if ($old_module_version == $module->getVersion()) { + return array(false, ""); + } + + // run whatever upgrade method has been defined + $module->upgrade($module_id, $old_module_version); + + // convert the date into a MySQL datetime + list($year, $month, $day) = explode("-", $module->getDate()); + $timestamp = mktime(null, null, null, $month, $day, $year); + $module_datetime = General::getCurrentDatetime($timestamp); + + $db->query(" + UPDATE {PREFIX}modules + SET origin_language = :origin_language, + module_name = :module_name, + version = :module_version, + author = :author, + author_email = :author_email, + author_link = :author_link, + module_date = :module_datetime + WHERE module_id = :module_id + "); + $db->bindAll(array( + "origin_language" => $module->getOriginLang(), + "module_name" => $module->getModuleName(), + "module_version" => $module->getVersion(), + "author" => $module->getAuthor(), + "author_email" => $module->getAuthorEmail(), + "author_link" => $module->getAuthorLink(), + "module_datetime" => $module_datetime, + "module_id" => $module_id + )); + $db->execute(); + + // remove and update the navigation links for this module + ModuleMenu::resetModuleNav($module_id, $module->getModuleNav(), $module->getLangStrings()); + + // And we're done! inform the user that it's been upgraded + $placeholders = array( + "module" => $module->getModuleName(), + "version" => $module->getVersion(), + "link" => "$root_url/modules/$module_folder" + ); + + $message = General::evalSmartyString($LANG["notify_module_updated"], $placeholders); + + return array(true, $message); + } + + + /** + * Returns the contents of a module's language file for a particular language. + * + * TODO deprecated. This should be available via the module class itself. + * + * @param string $module_folder + * @param string $language "en_us", "fr" etc. + * @return array + */ + public static function getModuleLangFile($module_folder, $language) + { + $root_dir = Core::getRootDir(); + $lang_file_path = "$root_dir/modules/$module_folder/lang"; + $desired_lang_file = "$lang_file_path/{$language}.php"; + + // if the desired language file exists, use it. Otherwise use the default language file + $content = array(); + if (!empty($desired_lang) && is_file($desired_lang_file)) { + $content = self::getModuleLangFileContents($desired_lang_file); + } else { + $module_id = self::getModuleIdFromModuleFolder($module_folder); + $module_info = self::getModule($module_id); + $origin_lang = $module_info["origin_language"]; + + $origin_lang_file = "$lang_file_path/{$origin_lang}.php"; + if (!empty($origin_lang) && is_file($origin_lang_file)) { + $content = self::getModuleLangFileContents($origin_lang_file); + } + } + + return $content; + } + + + /** + * Added in 2.1.6, to allow for simple "inline" hook overriding from within the PHP pages. + * + * @param string $location + * @param mixed $data + */ + public static function moduleOverrideData($location, $data) + { + extract(Hooks::processHookCalls("start", compact("location", "data"), array("data")), EXTR_OVERWRITE); + return $data; + } + + + /** + * Called automatically on installation, or when the administrator clicks on the "Install" link for a module + * This function runs the module's installation script (if it exists) and returns the appropriate success + * or error message. + * + * @param integer $module_id + * @return array [0] T/F, [1] error / success message. + */ + public static function installModule($module_id) + { + $db = Core::$db; + $LANG = Core::$L; + $root_url = Core::getRootUrl(); + + $module_info = self::getModule($module_id); + $module_folder = $module_info["module_folder"]; + + $module = self::getModuleInstance($module_folder); + list ($success, $message) = $module->install($module_id); + + if ($success) { + + // now add any navigation links for this module + ModuleMenu::addMenuItems($module_id, $module); + + // get the module language file contents and store the info in the $LANG global for + // so it can be accessed by the installation script (TODO needed?) + $LANG[$module_folder] = $module->getLangStrings(); + + // if there is no custom installation message, use the default + if (empty($message)) { + $message = General::evalSmartyString($LANG["notify_module_installed"], array( + "link" => "$root_url/modules/$module_folder" + )); + } + + $db->query(" + UPDATE {PREFIX}modules + SET is_installed = :is_installed, + is_enabled = :is_enabled + WHERE module_id = :module_id + "); + $db->bindAll(array( + "is_installed" => "yes", + "is_enabled" => "yes", + "module_id" => $module_id + )); + + try { + $db->execute(); + } catch (Exception $e) { + return array(false, $e->getMessage()); + } + } else { + if (!empty($message)) { + $message = $LANG["text_error_installing"] . " $message"; + } else { + $message = $LANG["text_error_installing"]; + } + } + + return array($success, $message); + } + + + /** + * Retrieves all information about a particular module. + * + * @return array + */ + public static function getModule($module_id) + { + $db = Core::$db; + $db->query("SELECT * FROM {PREFIX}modules WHERE module_id = :module_id"); + $db->bind("module_id", $module_id); + $db->execute(); + $result = $db->fetch(); + + extract(Hooks::processHookCalls("end", compact("module_id", "result"), array("result")), EXTR_OVERWRITE); + + return $result; + } + + + /** + * Since it's often more convenient to identify modules by its unique folder name, this function is + * provided to find the module ID. If not found, returns the empty string. + * + * @param string $module_folder + */ + public static function getModuleIdFromModuleFolder($module_folder) + { + $db = Core::$db; + $db->query(" + SELECT module_id + FROM {PREFIX}modules + WHERE module_folder = :module_folder + "); + $db->bind("module_folder", $module_folder); + $db->execute(); + $info = $db->fetch(); + + return (isset($info["module_id"])) ? $info["module_id"] : ""; + } + + + /** + * Returns the total number of modules in the database (regardless of whether they're enabled or not). + * @return integer the number of modules + */ + public static function getModuleCount() + { + $db = Core::$db; + $db->query("SELECT count(*) as c FROM {PREFIX}modules"); + $db->execute(); + $info = $db->fetch(); + return $info["c"]; + } + + + /** + * This is used on the administrator Modules page. It allows for a simple search/sort mechanism. + * @param array $search_criteria + */ + public static function searchModules($search_criteria) + { + $db = Core::$db; + + if (!isset($search_criteria["order"])) { + $search_criteria["order"] = "module_name-DESC"; + } + + extract(Hooks::processHookCalls("start", compact("search_criteria"), array("search_criteria")), EXTR_OVERWRITE); + + // verbose, but at least it prevents any invalid sorting. We always return modules that aren't installed first + // so they show up on the first page of results. The calling page then sorts the ones that require upgrading next + $order_clause = "is_installed DESC"; + switch ($search_criteria["order"]) { + case "module_name-DESC": + $order_clause .= ", module_name DESC"; + break; + case "module_name-ASC": + $order_clause .= ", module_name ASC"; + break; + case "is_enabled-DESC": + $order_clause .= ", is_enabled DESC"; + break; + case "is_enabled-ASC": + $order_clause .= ", is_enabled ASC"; + break; + default: + $order_clause .= ", module_name"; + break; + } + $order_clause = "ORDER BY $order_clause"; + + $keyword_clause = ""; + if (!empty($search_criteria["keyword"])) { + $string = $search_criteria["keyword"]; + $fields = array("module_name", "module_folder"); + + $clauses = array(); + foreach ($fields as $field) { + $clauses[] = "$field LIKE '%$string%'"; + } + $keyword_clause = join(" OR ", $clauses); + } + + // status ("enabled"/"disabled") clause + $status_clause = ""; + if (count($search_criteria["status"]) < 2) { + if (in_array("enabled", $search_criteria["status"])) { + $status_clause = "is_enabled = 'yes'"; + } else { + $status_clause = "is_enabled = 'no'"; + } + } + + $where_clauses = array(); + if (!empty($keyword_clause)) $where_clauses[] = "($keyword_clause)"; + if (!empty($status_clause)) $where_clauses[] = "($status_clause)"; + if (!empty($where_clauses)) { + $where_clause = "WHERE " . join(" AND ", $where_clauses); + } else { + $where_clause = ""; + } + + $db->query(" + SELECT * + FROM {PREFIX}modules + $where_clause + $order_clause + "); + $db->execute(); + + return $db->fetchAll(); + } + + + /** + * Finds out if a module is enabled or not. If it's not even installed, just returns false. + * + * @param string $module_folder + * @return boolean + */ + public static function checkModuleEnabled($module_folder) + { + $db = Core::$db; + $db->query(" + SELECT is_enabled + FROM {PREFIX}modules + WHERE module_folder = :module_folder + "); + $db->bind("module_folder", $module_folder); + $db->execute(); + $result = $db->fetch(); + + return (!empty($result) && $result["is_enabled"] == "yes"); + } + + /** + * Finds out if a module is available. By "available", we mean: has the files uploaded to the modules + * folder and has a corresponding record in the modules table. It may not be installed/enabled. + * + * @param string $module_folder + * @return boolean + */ + public static function checkModuleAvailable($module_folder) + { + $db = Core::$db; + + $db->query(" + SELECT count(*) as c + FROM {PREFIX}modules + WHERE module_folder = :module_folder + "); + $db->bind("module_folder", $module_folder); + $db->execute(); + $result = $db->fetch(); + + return $result["c"] == 1; + } + + /** + * Convenience method. + * @param $module_folder + * @return bool + */ + public static function checkModuleUsable($module_folder) + { + return self::checkModuleAvailable($module_folder) && self::checkModuleEnabled($module_folder); + } + + + /** + * Uninstalls a module from the database. + * + * @param integer $module_id + */ + public static function uninstallModule($module_id) + { + $db = Core::$db; + $LANG = Core::$L; + + $module_info = self::getModule($module_id); + $module_folder = $module_info["module_folder"]; + + if (empty($module_info)) { + return array(false, ""); + } + + $success = true; + + // attempt to uninstall it + if (self::isValidModule($module_folder)) { + $module = self::getModuleInstance($module_folder); + list ($success, $message) = $module->uninstall($module_id); + + if (!$success) { + return array(false, $message); + } + } + + $db->query(" + UPDATE {PREFIX}modules + SET is_installed = 'no', + is_enabled = 'no' + WHERE module_id = :module_id + "); + $db->bind("module_id", $module_id); + $db->execute(); + + ModuleMenu::clearModuleNav($module_id); + + // if this module was used in any menus, update them + Menus::removeModuleFromMenus($module_id); + + // delete any hooks registered by this module + Hooks::unregisterModuleHooks($module_folder); + + // delete any module settings + Modules::deleteModuleSettings($module_info["module_folder"]); + + // now delete the entire module folder + $message = $LANG["notify_module_uninstalled"]; + + extract(Hooks::processHookCalls("end", compact("module_id", "success", "message"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Since it's often more convenient to identify modules by its unique folder name, this function is + * provided to find the module ID. If not found, returns the empty string. + * + * @param string $module_folder + */ + public static function getModuleFolderFromModuleId($module_id) + { + $db = Core::$db; + + $db->query(" + SELECT module_folder + FROM {PREFIX}modules + WHERE module_id = :module_id + "); + $db->bind("module_id", $module_id); + $db->execute(); + $info = $db->fetch(); + + return (isset($info["module_folder"])) ? $info["module_folder"] : ""; + } + + + /** + * Retrieves one or more settings for a module. This can be used in two ways: + * 1. It can be called within any module page WITHOUT the second parameter; it then figures out + * what module you're currently on, and returns those setting(s) for that module. + * 2. It's called from outside a module folder (or within a different module, trying to access the + * settings of another module). In that case, it needs to specify the second $module_folder param. + * + * To return all settings for the current module, just call the function with no parameters. + * + * @param mixed $settings a single setting name or an array of setting names + * @param string $module_folder + * @return mixed a single setting string value or an array of setting values + */ + public static function getModuleSettings($settings = "", $module_folder = "") + { + if (empty($module_folder)) { + $module_folder = self::getCurrentModuleFolder(); + } + return Settings::get($settings, $module_folder); + } + + + /** + * Expects to be called from within the modules folder; namely, within a particular module. This + * function returns the name of the current module. Assumption: no module contains a /modules folder. + * + * @return string + */ + public static function getCurrentModuleFolder() + { + $script_name = $_SERVER["SCRIPT_NAME"]; + + $module_folder = ""; + if (preg_match("/\/modules\/([^\/]*)/", $script_name, $matches)) { + $module_folder = $matches[1]; + } + + return $module_folder; + } + + + /** + * Handles initialization of a module page. + * - Core::init()'s + * - sets auth (param required for auth) + * - instantiates the module's Module class and returns it + * return Module + */ + public static function initModulePage($auth = "") + { + Core::init(); + $root_dir = Core::getRootDir(); + $module_folder = self::getCurrentModuleFolder(); + + if (!is_file("$root_dir/modules/$module_folder/library.php")) { + Errors::handleError("Error with $module_folder module. Missing library.php file."); + exit; + } + + require_once("$root_dir/modules/$module_folder/library.php"); + + if (!empty($auth)) { + Core::$user->checkAuth($auth); + } + return self::getModuleInstance($module_folder); + } + + // should only be called after isValidModule() has been called first + public static function getModuleInstance($module_folder) { + if (array_key_exists($module_folder, self::$moduleInstances)) { + return self::$moduleInstances[$module_folder]; + } else { + self::$moduleInstances[$module_folder] = self::instantiateModule($module_folder); + return self::$moduleInstances[$module_folder]; + } + } + + // should only be called after isValidModule() has been called first + public static function instantiateModule($module_folder) + { + $root_dir = Core::getRootDir(); + + require_once("$root_dir/modules/$module_folder/library.php"); + + $namespace = self::getModuleNamespace($module_folder); + $module_class = "FormTools\\Modules\\$namespace\\Module"; + + $module = false; + + // return a newly minted instance of the module + try { + if (class_exists($module_class)) { + $module = new $module_class(Core::$user->getLang()); + } + } catch (Exception $e) { + + } + + return $module; + } + + public static function isValidModule($module_folder) + { + $root_dir = Core::getRootDir(); + + // verify the library file exists + if (!is_file("$root_dir/modules/$module_folder/library.php")) { + return false; + } + + require_once("$root_dir/modules/$module_folder/library.php"); + + // verify the class exists + $namespace = self::getModuleNamespace($module_folder); + $module_class = "FormTools\\Modules\\$namespace\\Module"; + + if (!class_exists($module_class)) { + return false; + } + + return true; + } + + + public static function getModuleNamespace($module_folder) + { + $no_underscores = str_replace("_", " ", $module_folder); + $upper_case = ucwords($no_underscores); + return str_replace(" ", "", $upper_case); + } + + /** + * Sets one or more module settings. This basically acts as a wrapper function for Settings::set(), + * which ensures that the module field is set appropriately. + * + * @param array hash of "setting_name" => "setting_value" + */ + public static function setModuleSettings($settings) + { + Settings::set($settings, self::getCurrentModuleFolder()); + } + + + /** + * Updates the list of enabled & disabled modules. + * + * There seems to be a bug with the way this function is called or something. Occasionally all modules + * are no longer enabled... + * + * @param array $request + */ + public static function updateEnabledModules($request) + { + $db = Core::$db; + $LANG = Core::$L; + + $module_ids_in_page = $request["module_ids_in_page"]; // a comma-delimited string + $enabled_module_ids = isset($request["is_enabled"]) ? $request["is_enabled"] : array(); + + if (!empty($module_ids_in_page)) { + $db->query(" + UPDATE {PREFIX}modules + SET is_enabled = 'no' + WHERE module_id IN ($module_ids_in_page) + "); + $db->execute(); + } + + foreach ($enabled_module_ids as $module_id) { + $db->query(" + UPDATE {PREFIX}modules + SET is_enabled = 'yes' + WHERE module_id = :module_id + "); + $db->bind("module_id", $module_id); + $db->execute(); + } + + return array(true, $LANG["notify_enabled_module_list_updated"]); + } + + + /** + * This function is used by the Form Tools Core to include all server-side resources from a module. + * All content in the global namespace is made available to the included files. It relies on the + * modules having a certain file-folder structure, and imports the following information: + * + * - module PHP code, found in /module_root/library.php + * - Smarty plugins, modifiers etc., found in /module_root/smarty/ + * - the appropriate language file, found in /module_root/lang/ + * + * Custom module language files are added to the $LANG global for use in any of the templates, using the the + * module folder as the "namespace". For example, to access the phrase "Hello World!" in a page, you'd use: + * + * $LANG.image_manager.phrase_hello_world + * + * Or, just FYI, if you're within the module itself, you can use the shortcut: + * + * $L.phrase_hello_world + * + * @param mixed $modules either a string + */ + public static function includeModule($module_folder) + { + $smarty = Core::$smarty; + $root_dir = Core::getRootDir(); + + $module = self::getModuleInstance($module_folder); + + // include the smarty resources + if (is_dir("$root_dir/modules/$module_folder/smarty_plugins")) { + $smarty->addPluginsDir("$root_dir/modules/$module_folder/smarty_plugins"); + } + + extract(Hooks::processHookCalls("end", compact("module_folder"), array()), EXTR_OVERWRITE); + + return $module; + } + + + /** + * This if the module counterpart function of the General::loadField function. It works exactly the same + * way, except that it namespaces the variables in a $_SESSION["ft"][$module_folder] key. + * + * It assumes that a variable name can be found in GET, POST or SESSIONS (or all three). What this + * function does is return the value stored in the most important variable (GET first, POST second, + * SESSIONS third), and update sessions at the same time. This is extremely helpful in situations + * where you don't want to keep having to submit the same information from page to page. + * The fourth parameter is included as a way to set a default value. + * + * @param string $module_folder + * @param string $field_name the field name + * @param string $session_name the session key for this field name + * @param string $default_value the default value for the field + * @return string the field value + */ + public static function loadModuleField($module_folder, $field_name, $session_name, $default_value = "") + { + $field = $default_value; + + if (!isset($_SESSION["ft"][$module_folder]) || !is_array($_SESSION["ft"][$module_folder])) { + $_SESSION["ft"][$module_folder] = array(); + } + if (isset($_GET[$field_name])) { + $field = $_GET[$field_name]; + $_SESSION["ft"][$module_folder][$session_name] = $field; + } else if (isset($_POST[$field_name])) { + $field = $_POST[$field_name]; + $_SESSION["ft"][$module_folder][$session_name] = $field; + } else if (isset($_SESSION["ft"][$module_folder][$session_name])) { + $field = $_SESSION["ft"][$module_folder][$session_name]; + } + + return $field; + } + + + public static function deleteModuleSettings($module_folder) { + $db = Core::$db; + + $db->query("DELETE FROM {PREFIX}settings WHERE module = :module_folder"); + $db->bind("module_folder", $module_folder); + $db->execute(); + } + + + /** + * Loads the contents of a module language file. + * + * @param string $summary_file the full file path and filename + */ + private static function getModuleLangFileContents($lang_file) + { + @include($lang_file); + $vars = get_defined_vars(); + $lang_array = isset($vars["L"]) ? $vars["L"] : array(); + return $lang_array; + } + +} diff --git a/global/code/OmitLists.class.php b/global/code/OmitLists.class.php new file mode 100644 index 00000000..1eda8871 --- /dev/null +++ b/global/code/OmitLists.class.php @@ -0,0 +1,96 @@ + + * @package 3-0-x + * @subpackage OmitLists + */ + +// --------------------------------------------------------------------------------------------------------------------- + + +namespace FormTools; + +use PDO, Exception; + + +class OmitLists +{ + + /** + * Returns an array of account IDs of those clients in the omit list for this public form. + * + * @param integer $form_id + * @return array + */ + public static function getPublicFormOmitList($form_id) + { + $db = Core::$db; + $db->query(" + SELECT account_id + FROM {PREFIX}public_form_omit_list + WHERE form_id = :form_id + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $client_ids = array(); + foreach ($db->fetchAll() as $row) { + $client_ids[] = $row["account_id"]; + } + + extract(Hooks::processHookCalls("end", compact("clients_id", "form_id"), array("client_ids")), EXTR_OVERWRITE); + + return $client_ids; + } + + + public static function getPublicFormOmitListByAccountId($account_id) { + if (empty($account_id)) { + return array(); + } + + $db = Core::$db; + + $db->query(" + SELECT form_id + FROM {PREFIX}public_form_omit_list + WHERE account_id = :account_id + "); + $db->bind("account_id", $account_id); + $db->execute(); + + return $db->fetchAll(PDO::FETCH_COLUMN); + } + + + public static function deleteFormOmitList($form_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}public_form_omit_list WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + } + + + public static function deleteFormOmitListByAccountId($account_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}public_form_omit_list WHERE account_id = :account_id"); + $db->bind("account_id", $account_id); + $db->execute(); + } + + + public static function deleteViewOmitListByAccountId($account_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}public_view_omit_list WHERE account_id = :account_id"); + $db->bind("account_id", $account_id); + $db->execute(); + } + +} diff --git a/global/code/OptionLists.class.php b/global/code/OptionLists.class.php new file mode 100644 index 00000000..b3124d96 --- /dev/null +++ b/global/code/OptionLists.class.php @@ -0,0 +1,782 @@ + "all", // or a number for a particular page num... + "order" => "option_list_name-ASC", + "per_page" => 10 + ), $default_options); + + if ($options["page"] == "all") { + $limit_clause = ""; + } else { + $first_item = ($options["page"] - 1) * $options["per_page"]; + $limit_clause = "LIMIT $first_item, {$options["per_page"]}"; + } + + $order_clause = self::getOptionListOrderClause($options["order"]); + + $db->query(" + SELECT * + FROM {PREFIX}option_lists + $order_clause + $limit_clause + "); + $db->execute(); + $results = $db->fetchAll(); + + $option_lists = array(); + foreach ($results as $row) { + $option_lists[] = $row; + } + + $return_hash = array( + "results" => $option_lists, + "num_results" => OptionLists::getNumOptionLists() + ); + + extract(Hooks::processHookCalls("end", compact("return_hash"), array("return_hash")), EXTR_OVERWRITE); + + return $return_hash; + } + + + /** + * Returns the total number of option lists in the database. + * + * @return integer + */ + public static function getNumOptionLists() + { + $db = Core::$db; + $db->query("SELECT count(*) as c FROM {PREFIX}option_lists"); + $db->execute(); + $result = $db->fetch(); + return $result["c"]; + } + + + /** + * Creates an identical copy of an existing Option List, or creates a new blank one. This can be handy if + * the user was using a single group for multiple fields, but one of the form fields changed. They can just + * create a new copy, tweak it and re-assign the field. + * + * @param integer $list_id + * @param integer $field_id if this parameter is set, the new Option List will be assigned to whatever + * field IDs are specified. Note: this only works for Field Types that have a single + * @return mixed the list ID if successful, false if not + */ + public static function duplicateOptionList($list_id = "", $field_ids = array()) + { + $db = Core::$db; + + $new_option_list_name = self::getNextOptionListName(); + + if (empty($list_id)) { + $new_list_id = self::addOptionList($new_option_list_name, "no"); + } else { + $option_list_info = self::getOptionList($list_id); + $new_list_id = self::addOptionList($new_option_list_name, $option_list_info["is_grouped"], $option_list_info["options"]); + } + + // if we need to map this new option list to a field - or fields, loop through them and add them + // one by one. Note: field types may use multiple Option Lists, which makes this extremely difficult. But + // to make it as generic as possible, this code picks the first Option List field for the field type (as determined + // by the setting list order) + if (!empty($field_ids)) { + foreach ($field_ids as $field_id) { + $field_type_id = Fields::getFieldTypeIdByFieldId($field_id); + $field_settings = FieldTypes::getFieldTypeSettings($field_type_id); + + $option_list_setting_id = ""; + foreach ($field_settings as $field_setting_info) { + if ($field_setting_info["field_type"] == "option_list_or_form_field") { + $option_list_setting_id = $field_setting_info["setting_id"]; + break; + } + } + + // this should ALWAYS have found a setting, but just in case... + if (!empty($option_list_setting_id)) { + $db->query("DELETE FROM {PREFIX}field_settings WHERE field_id = $field_id AND setting_id = $option_list_setting_id"); + $db->query(" + INSERT INTO {PREFIX}field_settings (field_id, setting_id, setting_value) + VALUES (:field_id, :setting_id, :setting_value) + "); + $db->bindAll(array( + "field_id" => $field_id, + "setting_id" => $option_list_setting_id, + "setting_value" => $new_list_id + )); + $db->execute(); + } + } + } + + return $new_list_id; + } + + + /** + * All new option lists need a unique name. This queries the database to find a sensible default value. + * @return string + */ + public static function getNextOptionListName() + { + $all_option_lists = OptionLists::getList(); + + $list_names = array(); + foreach ($all_option_lists["results"] as $list_info) { + $list_names[] = $list_info["option_list_name"]; + } + + $base_new_option_list = Core::$L["phrase_new_option_list"]; + $new_option_list_name = $base_new_option_list; + + $count = 1; + while (in_array($new_option_list_name, $list_names)) { + $count++; + $new_option_list_name = "$base_new_option_list ($count)"; + } + + return $new_option_list_name; + } + + + /** + * Returns the number of options in an option list - regardless of whether the option list + * is grouped or not. + * + * @param integer $list_id + * @return integer the option count + */ + public static function getNumOptionsInOptionList($list_id) + { + Core::$db->query(" + SELECT count(*) as c + FROM {PREFIX}field_options + WHERE list_id = :list_id + "); + Core::$db->bind("list_id", $list_id); + Core::$db->execute(); + $result = Core::$db->fetch(); + + return $result["c"]; + } + + + /** + * Creates a new option list in the database. If the third $field_options parameter is set, it expects it + * to be an array of form: + * array( + * array( + * "group_info" => array( + * "group_type" => "", + * "group_name" => "" + * ), + * "options" => array( + * array( + * "option_value" => "", + * "option_name" => "", + * "is_new_sort_group" => "yes" | "no" + * ) + * ) + * ) + * ) + * + * Any other fields in the array are ignored. This allows us to pass the content from the getOptionList() right into + * this method & it will create a new option list with the same data. + */ + public static function addOptionList($name, $is_grouped = "no", $field_options = array()) + { + $db = Core::$db; + $db->query(" + INSERT INTO {PREFIX}option_lists (option_list_name, is_grouped) + VALUES (:option_list_name, :is_grouped) + "); + $db->bindAll(array( + "option_list_name" => $name, + "is_grouped" => $is_grouped + )); + $db->execute(); + + // now we add the groups for the option list items + $list_id = $db->getInsertId(); + + if ($is_grouped == "no") { + $new_list_group_info = ListGroups::addListGroup("option_list_{$list_id}", "", 1); + $new_list_group_id = $new_list_group_info["group_id"]; + + $option_order = 1; + foreach ($field_options[0]["options"] as $opt) { + FieldOptions::addFieldOption($list_id, $new_list_group_id, $option_order, $opt["option_value"], + $opt["option_name"], $opt["is_new_sort_group"]); + $option_order++; + } + } else { + // add the option groups and their field options + $order = 1; + foreach ($field_options as $grouped_option_info) { + $group_info = $grouped_option_info["group_info"]; + $options = $grouped_option_info["options"]; + + $group_type = "option_list_{$list_id}"; + $group_name = $group_info["group_name"]; + + $new_list_group_info = ListGroups::addListGroup($group_type, $group_name, $order); + $new_list_group_id = $new_list_group_info["group_id"]; + + $option_order = 1; + foreach ($options as $opt) { + FieldOptions::addFieldOption($list_id, $new_list_group_id, $option_order, $opt["option_value"], + $opt["option_name"], $opt["is_new_sort_group"]); + $option_order++; + } + $order++; + } + + } + + return $list_id; + } + + + /** + * Returns all info about an option list. + * @param integer $list_id + */ + public static function getOptionList($list_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}option_lists + WHERE list_id = :list_id + "); + $db->bind("list_id", $list_id); + $db->execute(); + + $info = $db->fetch(); + $info["options"] = OptionLists::getOptionListOptions($list_id); + + return $info; + } + + /** + * Awkward name, but there you go. It returns all options in an option list. If you want to get ALL + * information about the group (e.g. the group name etc), use getOptionList(). + * + * Option lists may or may not be grouped - but for consistency on the backend, even ungrouped option + * lists are stored in an "empty" group. This function returns the GROUPED option lists as an array with the + * following structure (there will only ever be a single top level array index for ungrouped option lists): + * + * [0] => array( + * "group_info" => array( + * "group_id" => X, + * "group_type" => "...", + * "group_name" => "...", + * "list_order" => Y + * ), + * "options" => array( + * - an array of the option info directly from the ft_field_options table. + * ) + * ) + * [1] => ... + * + * Whether or not the option list is grouped is found in the "is_grouped" field in the ft_option_lists + * table. That info is not returned by this function - only by OptionsLists::getOptionList(). + * + * @param integer $list_id the option list ID + * @return array + */ + public static function getOptionListOptions($list_id) + { + $db = Core::$db; + $groups = ListGroups::getByGroupType("option_list_{$list_id}"); + + $info = array(); + foreach ($groups as $row) { + $db->query(" + SELECT * + FROM {PREFIX}field_options + WHERE list_group_id = :group_id + ORDER BY option_order + "); + $db->bind("group_id", $row["group_id"]); + $db->execute(); + + $options = $db->fetchAll(); + + $curr_group = array( + "group_info" => $row, + "options" => $options + ); + $info[] = $curr_group; + } + + return $info; + } + + + /** + * Returns the number of fields that use a particular field option group. + * + * @param integer $group_id + * @return integer the number of fields + */ + public static function getNumFieldsUsingOptionList($list_id) + { + // technically it's possible for a single field to reference the same option list multiple times + Core::$db->query(" + SELECT COUNT(DISTINCT field_id) as c + FROM {PREFIX}field_settings fs, {PREFIX}field_type_settings fts + WHERE fs.setting_value = :list_id AND + fs.setting_id = fts.setting_id AND + fts.field_type = 'option_list_or_form_field' + "); + Core::$db->bind("list_id", $list_id); + Core::$db->execute(); + $result = Core::$db->fetch(); + + return $result["c"]; + } + + + /** + * This returns the IDs of the previous and next Option Lists, as determined by the administrators current + * sort. + * + * Not happy with this function! Getting this info is surprisingly tricky once you throw in the sort clause. + * Still, the number of client accounts are liable to be quite small, so it's not such a sin. + * + * @param integer $list_id + * @param array $search_criteria + * @return array prev_option_list_id => the previous account ID (or empty string) + * next_option_list_id => the next account ID (or empty string) + */ + public static function getOptionListPrevNextLinks($list_id, $order = "") + { + $db = Core::$db; + + $order_clause = self::getOptionListOrderClause($order); + + $db->query(" + SELECT list_id + FROM {PREFIX}option_lists + $order_clause + "); + $db->execute(); + + $sorted_list_ids = $db->fetchAll(PDO::FETCH_COLUMN); + $current_index = array_search($list_id, $sorted_list_ids); + + $return_info = array( + "prev_option_list_id" => "", + "next_option_list_id" => "" + ); + if ($current_index === 0) { + if (count($sorted_list_ids) > 1) { + $return_info["next_option_list_id"] = $sorted_list_ids[$current_index+1]; + } + } else if ($current_index === count($sorted_list_ids)-1) { + if (count($sorted_list_ids) > 1) { + $return_info["prev_option_list_id"] = $sorted_list_ids[$current_index - 1]; + } + } else { + $return_info["prev_option_list_id"] = $sorted_list_ids[$current_index-1]; + $return_info["next_option_list_id"] = $sorted_list_ids[$current_index+1]; + } + + return $return_info; + } + + + /** + * Updates an option list. + */ + public static function updateOptionList($list_id, $info) + { + $db = Core::$db; + $LANG = Core::$L; + + $is_grouped = isset($info["is_grouped"]) ? $info["is_grouped"] : "no"; + + $db->query(" + UPDATE {PREFIX}option_lists + SET option_list_name = :option_list_name, + is_grouped = :is_grouped + WHERE list_id = :list_id + "); + $db->bindAll(array( + "option_list_name" => $info["option_list_name"], + "is_grouped" => $is_grouped, + "list_id" => $list_id + )); + $db->execute(); + + // remove the old field options & list groups, we're going to insert new ones + FieldOptions::deleteByListId($list_id); + ListGroups::deleteByGroupType("option_list_{$list_id}"); + + // some ugliness to find out how our data is grouped and what's been removed + $sortable_id = $info["sortable_id"]; + $new_groups = explode(",", $info["{$sortable_id}_sortable__new_groups"]); + $grouped_rows = explode("~", $info["{$sortable_id}_sortable__rows"]); + $deleted_group = isset($info["{$sortable_id}_sortable__delete_group"]) ? $info["{$sortable_id}_sortable__delete_group"] : ""; + + // the logic here is a bit complex, but the general idea is that this code works for both grouped and + // ungrouped option lists. Ungrouped option lists are still grouped in a single group behind the scenes + $new_group_order = 1; + + if ($is_grouped == "no") { + $empty_group_info = ListGroups::addListGroup("option_list_{$list_id}", "", 1); + $empty_group_id = $empty_group_info["group_id"]; + } + + $order = 1; + foreach ($grouped_rows as $curr_grouped_info) { + list($curr_group_id, $ordered_row_ids_str) = explode("|", $curr_grouped_info); + + // if the user's deleting a group, we just ignore the group info so it's not re-created + if ($curr_group_id == $deleted_group) { + continue; + } + + $ordered_row_ids = explode(",", $ordered_row_ids_str); + + if ($is_grouped == "yes") { + $group_name = $info["group_name_{$curr_group_id}"]; + $new_group_info = ListGroups::addListGroup("option_list_{$list_id}", $group_name, $new_group_order); + $curr_group_id = $new_group_info["group_id"]; + $new_group_order++; + } else { + $curr_group_id = $empty_group_id; + } + + // now add the rows in this group + foreach ($ordered_row_ids as $i) { + if (!isset($info["field_option_value_{$i}"])) { + continue; + } + + $value = $info["field_option_value_{$i}"]; + $text = $info["field_option_text_{$i}"]; + $is_new_sort_group = (in_array($i, $new_groups)) ? "yes" : "no"; + + FieldOptions::addFieldOption($list_id, $curr_group_id, $order, $value, $text, $is_new_sort_group); + $order++; + } + } + + $success = true; + $message = $LANG["notify_option_list_updated"]; + extract(Hooks::processHookCalls("end", compact("list_id", "info"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Deletes an option list from the database. Note: it only deletes lists that don't have any + * form fields assigned to them; generally this is prevented from being called unless that condition is + * met, but it also checks here just in case. + * + * @param integer $list_id + * @return array [0] T/F
+ * [1] error/success message + */ + public static function deleteOptionList($list_id) + { + $db = Core::$db; + $LANG = Core::$L; + + // slight behavioural change in 2.1.0. Now you CAN delete Option Lists that are used by one or more fields. + // It just clears any references, thus leaving those fields incompletely configured (which isn't the end of + // the world!) + $fields = OptionLists::getFieldsUsingOptionList($list_id); + + foreach ($fields as $field_info) { + $field_id = $field_info["field_id"]; + $field_type_id = $field_info["field_type_id"]; + $settings = FieldTypes::getFieldTypeSettings($field_type_id); + + $setting_ids = array(); + foreach ($settings as $setting_info) { + if ($setting_info["field_type"] == "option_list_or_form_field") { + $setting_ids[] = $setting_info["setting_id"]; + } + } + if (empty($setting_ids)) { + continue; + } + + $setting_id_str = implode(",", $setting_ids); + + // now we delete any entries in the field_settings table with field_id, setting_id and a NUMERIC value for the + // setting_value column. That column is also + $db->query(" + DELETE FROM {PREFIX}field_settings + WHERE field_id = :field_id AND + setting_id IN ($setting_id_str) AND + setting_value NOT LIKE 'form_field%' + "); + $db->bind("field_id", $field_id); + $db->execute(); + } + + $db->query("DELETE FROM {PREFIX}field_options WHERE list_id = :list_id"); + $db->bind("list_id", $list_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}option_lists WHERE list_id = :list_id"); + $db->bind("list_id", $list_id); + $db->execute(); + + ListGroups::deleteByGroupType("option_list_{$list_id}"); + + $success = true; + $message = $LANG["notify_option_list_deleted"]; + + extract(Hooks::processHookCalls("end", compact("list_id"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Returns information about fields that use a particular option list. If the second parameter is set, + * it returns the information grouped by form instead. + * + * @param integer $list_id + * @param array + * @return array + */ + public static function getFieldsUsingOptionList($list_id, $custom_params = array()) + { + $db = Core::$db; + + $params = array( + "group_by_form" => (isset($custom_params["group_by_form"])) ? $custom_params["group_by_form"] : false + ); + + $db->query(" + SELECT field_id + FROM {PREFIX}field_settings fs, {PREFIX}field_type_settings fts + WHERE fs.setting_value = :list_id AND + fs.setting_id = fts.setting_id AND + fts.field_type = 'option_list_or_form_field' + "); + $db->bind("list_id", $list_id); + $db->execute(); + + $field_ids = array(); + foreach ($db->fetchAll() as $row) { + $field_ids[] = $row["field_id"]; + } + + if (empty($field_ids)) { + return array(); + } + + $field_id_str = implode(",", $field_ids); + $db->query(" + SELECT f.*, ff.* + FROM {PREFIX}form_fields ff, {PREFIX}forms f + WHERE field_id IN ($field_id_str) AND + f.form_id = ff.form_id + ORDER BY f.form_name, ff.field_title + "); + $db->execute(); + $results = $db->fetchAll(); + + if ($params["group_by_form"]) { + $grouped_results = array(); + foreach ($results as $row) { + if (!array_key_exists($row["form_id"], $grouped_results)) { + $grouped_results[$row["form_id"]] = array( + "form_name" => $row["form_name"], + "form_id" => $row["form_id"], + "fields" => array() + ); + } + $grouped_results[$row["form_id"]]["fields"][] = $row; + } + $results = $grouped_results; + } + + return $results; + } + + + /** + * This function is called whenever the user adds an option list through the Add External form process. It checks + * all existing option lists to see if an identical set already exists. If it does, it returns the existing + * option list ID and if not, creates a new one and returns that ID. + * + * @param integer $form_id + * @param array $option_list_info + * @return integer $list_id the new or existing option list ID + */ + public static function createUniqueOptionList($form_id, $option_list_info) + { + $db = Core::$db; + + $existing_option_lists = OptionLists::getList(); + + $already_exists = false; + $list_id = ""; + foreach ($existing_option_lists["results"] as $existing_option_list) { + $curr_list_id = $existing_option_list["list_id"]; + + // when comparing field groups, just compare the actual field options. The option list name & original + // form aren't considered. This may lead to a little head-shaking in the UI when they see an inappropriate + // option list name, but it's easily changed + $grouped_option_list_info = self::getOptionListOptions($curr_list_id); + + // $curr_options contains an array of hashes. Each hash contains information about the group & info about + // the options in that group. Since we're just comparing a brand new list, we know that it only has one group: + // hence, rule out those option lists with more than one group + if (count($grouped_option_list_info) > 1) { + continue; + } + + // fringe case. Technically, a user may have created an Option List then deleted all options & groups. + if (count($grouped_option_list_info) == 0) { + continue; + } + + $curr_options = $grouped_option_list_info[0]["options"]; + if (count($curr_options) != count($option_list_info["options"])) { + continue; + } + + $has_same_option_fields = true; + for ($i=0; $iquery(" + INSERT INTO {PREFIX}option_lists (option_list_name, is_grouped, original_form_id) + VALUES (:option_list_name, 'no', :original_form_id) + "); + $db->bindAll(array( + "option_list_name" => $option_list_name, + "original_form_id" => $form_id + )); + $db->execute(); + $list_id = $db->getInsertId(); + + // now add the list group entry + $db->query(" + INSERT INTO {PREFIX}list_groups (group_type, list_order) + VALUES (:group_type, 1) + "); + $db->bind("group_type", "option_list_{$list_id}"); + $db->execute(); + $list_group_id = $db->getInsertId(); + + // add the options + $order = 1; + foreach ($option_list_info["options"] as $option) { + $value = $option["value"]; + $text = $option["text"]; + + $db->query(" + INSERT INTO {PREFIX}field_options (list_id, list_group_id, option_value, option_name, option_order) + VALUES (:list_id, :list_group_id, :option_value, :option_name, :option_order) + "); + $db->bindAll(array( + "list_id" => $list_id, + "list_group_id" => $list_group_id, + "option_value" => $value, + "option_name" => $text, + "option_order" => $order + )); + $db->execute(); + $order++; + } + } + + return $list_id; + } + + + // -------------------------------------------------------------------------------------------- + + /** + * @param string $order + */ + private static function getOptionListOrderClause($order) + { + $order_clause = "option_list_name ASC"; + $map = array( + "list_id-DESC" => "list_id DESC", + "option_list_name-ASC" => "option_list_name ASC", + "option_list_name-DESC" => "option_list_name DESC" + ); + if (isset($map[$order])) { + $order_clause = $map[$order]; + } + + return "ORDER BY $order_clause"; + } + +} diff --git a/global/code/Pages.class.php b/global/code/Pages.class.php new file mode 100644 index 00000000..1f6dab68 --- /dev/null +++ b/global/code/Pages.class.php @@ -0,0 +1,216 @@ + "/index.php", + "logout" => "/index.php?logout", + "forgot_password" => "/forgot_password.php", + "error" => "/error.php", + + // ADMIN pages + "admin_forms" => "/admin/forms/", + "add_form_choose_type" => "/admin/forms/add/", + "add_form_internal" => "/admin/forms/add/internal.php", + "add_form1" => "/admin/forms/add/step1.php?add", + "add_form2" => "/admin/forms/add/step2.php", + "add_form3" => "/admin/forms/add/step3.php", + "add_form4" => "/admin/forms/add/step4.php", + "add_form5" => "/admin/forms/add/step5.php", + "add_form6" => "/admin/forms/add/step6.php", + + "form_submissions" => "/admin/forms/submissions.php", + "option_lists" => "/admin/forms/option_lists/", + "edit_option_list" => "/admin/forms/option_lists/edit.php", + + "delete_form" => "/admin/forms/delete_form.php", + "edit_form" => "/admin/forms/edit/", + "edit_form_main" => "/admin/forms/edit/?page=main", + "edit_form_public_form_omit_list" => "/admin/forms/edit/?page=public_form_omit_list", + "edit_form_fields" => "/admin/forms/edit/?page=fields", + "edit_form_views" => "/admin/forms/edit/?page=views", + "edit_form_public_view_omit_list" => "/admin/forms/edit/?page=public_view_omit_list", + "edit_form_emails" => "/admin/forms/edit/?page=emails", + "edit_form_email_settings" => "/admin/forms/edit/?page=email_settings", + + "edit_admin_menu" => "/admin/settings/index.php?page=edit_admin_menu", + "edit_client_menu" => "/admin/settings/index.php?page=edit_client_menu", + "edit_view" => "/admin/forms/edit/?page=edit_view", + "admin_edit_submission" => "/admin/forms/edit_submission.php", + "edit_form_field_options" => "/admin/forms/edit/?page=options", + "clients" => "/admin/clients/", + "add_client" => "/admin/clients/add.php", + "edit_client" => "/admin/clients/edit.php", + "edit_client_main" => "/admin/clients/edit.php?page=main", + "edit_client_settings" => "/admin/clients/edit.php?page=settings", + "edit_client_forms" => "/admin/clients/edit.php?page=forms", + "modules" => "/admin/modules/", + "modules_about" => "/admin/modules/about.php", + "your_account" => "/admin/account", + "settings" => "/admin/settings", + "settings_main" => "/admin/settings/index.php?page=main", + "settings_accounts" => "/admin/settings/index.php?page=accounts", + "settings_files" => "/admin/settings/index.php?page=files", + + // before 2.0.3, themes used to be grouped under "Settings". The settings_themes key is kept + // to minimize regression + "settings_themes" => "/admin/themes/index.php", + "themes_about" => "/admin/themes/about.php", + "settings_menus" => "/admin/settings/index.php?page=menus", + + // CLIENT pages + "client_forms" => "/clients/index.php", + "client_account" => "/clients/account/index.php", + "client_account_login" => "/clients/account/index.php?page=main", + "client_account_settings" => "/clients/account/index.php?page=settings", + "client_form_submissions" => "/clients/forms/index.php", + "client_edit_submission" => "/clients/forms/edit_submission.php" + ); + + public static function registerPage($key, $url) { + self::$pageList[$key] = $url; + } + + public static function getList () { + return self::$pageList; + } + + + /** + * This was added to solve the problem of being able to construct a valid URL for the login + * function, to redirect to whatever custom login page the admin/client has selected. The + * page identifier is stored in the login_page field (rename to login_page_identifier?). + * + * There seems to be some cross-over between this function and Pages::getPageUrl. Think about! + * + * @param string $page_identifier special strings that have meaning to Form Tools, used to identify + * pages within its interface. See the top of /global/code/menus.php for a list. + * @param string $custom_options again used by Form Tools + * @param array $args an arbitrary hash of key-value pairs to be passed in the query string + * @return string + */ + public static function constructPageURL($page_identifier, $custom_options = "", $args = array()) + { + $url = ""; + extract(Hooks::processHookCalls("start", compact("url", "page_identifier", "custom_options", "args"), array("url")), EXTR_OVERWRITE); + + if (!empty($url)) { + return $url; + } + + $pages = self::$pageList; + + switch ($page_identifier) { + case "custom_url": + $url = $custom_options; + break; + + case "client_form_submissions": + case "form_submissions": + case "edit_form": + case "edit_form_main": + case "edit_form_fields": + case "edit_form_views": + case "edit_form_emails": + $joiner = (strpos($pages[$page_identifier], "?")) ? "&" : "?"; + $url = $pages[$page_identifier] . $joiner . "form_id=" . $custom_options; + break; + + case "edit_client": + case "edit_client_main": + case "edit_client_permissions": + $joiner = (strpos($pages[$page_identifier], "?")) ? "&" : "?"; + $url = $pages[$page_identifier] . $joiner . "client_id=" . $custom_options; + break; + + default: + // modules + if (preg_match("/^module_(\d+)/", $page_identifier, $matches)) { + $moduleId = $matches[1]; + $moduleInfo = Modules::getModule($moduleId); + if (!empty($moduleInfo)) { + $moduleFolder = $moduleInfo["module_folder"]; + $url = "/modules/$moduleFolder/"; + } + + // pages (from the Pages module). This should be removed from the Core, and make it use the hook defined above + } else if (preg_match("/^page_(\d+)/", $page_identifier, $matches)) { + $pageId = $matches[1]; + $url = "/modules/pages/page.php?id=$pageId"; + } else { + $url = $pages[$page_identifier]; + } + break; + } + + if (!empty($args)) { + $params = array(); + foreach ($args as $key => $value) { + $params[] = "$key=$value"; + } + if (strpos("?", $url) === false) { + $url .= "?" . implode("&", $params); + } else { + $url .= "&" . implode("&", $params); + } + } + + return $url; + } + + + /** + * Used on every page within Form Tools, this function builds the URL for a page *as it should be*, e.g. if they're + * editing a submission, the URL would contain a submission ID and form ID, BUT the user may have added something + * extra. This function builds the "proper" URL for use by the custom menus; it lets the script know what parent + * menu to show for any given page. + * + * @param string $page_identifier + * @param array $params + * @return string + */ + public static function getPageUrl($page_identifier, $params = array()) + { + $url = self::$pageList[$page_identifier]; + + $query_pairs = array(); + foreach ($params as $key => $value) { + $query_pairs[] = "$key=$value"; + } + + $query_str = join("&", $query_pairs); + + // only include the ? if it's not already there + $full_url = $url; + if (!empty($query_str)) { + if (strpos($url, "?")) { + $full_url .= "&{$query_str}"; + } else { + $full_url .= "?{$query_str}"; + } + } + + extract(Hooks::processHookCalls("end", compact("page_identifier", "params", "full_url"), array("full_url")), EXTR_OVERWRITE); + + return $full_url; + } + + +} diff --git a/global/code/Schemas.class.php b/global/code/Schemas.class.php new file mode 100644 index 00000000..fb342ce3 --- /dev/null +++ b/global/code/Schemas.class.php @@ -0,0 +1,36 @@ +validate($json, $schema); + + $is_valid = true; + $errors = array(); + if (!$validator->isValid()) { + $is_valid = false; + foreach ($validator->getErrors() as $error) { + $errors[] = $error; + } + } + + return array( + "is_valid" => $is_valid, + "errors" => $errors + ); + } +} diff --git a/global/code/SecureSmarty.class.php b/global/code/SecureSmarty.class.php new file mode 100644 index 00000000..f555fd33 --- /dev/null +++ b/global/code/SecureSmarty.class.php @@ -0,0 +1,19 @@ +php_handling = Smarty::PHP_ALLOW; + $securityPolicy->disabled_tags = array("exec", "system"); + + $this->enableSecurity($securityPolicy); + } +} diff --git a/global/code/Sessions.class.php b/global/code/Sessions.class.php new file mode 100644 index 00000000..d3e1620e --- /dev/null +++ b/global/code/Sessions.class.php @@ -0,0 +1,169 @@ + + * @package 3-0-x + * @subpackage Templates + */ + +// --------------------------------------------------------------------------------------------------------------------- + +namespace FormTools; + + +use PDO, Exception; + + +class Settings { + + /** + * Retrieves values from the settings table. + * + * - if $settings param empty, it returns only the core settings + * - if $settings param is a string, returns only that single setting value + * - if $settings param is an array of setting names, returns only those setting values + * - if $module param is included, it filters the results to only those settings for that particular + * module + * + * Tip: to only return the core (non-module) Form Tools settings, pass "core" as the module param + * value. + * + * @param mixed $settings the setting(s) to return + * @param string $module the name of the module to which these settings belong + * @return array a hash of all settings. + */ + public static function get($settings = "", $module = "") + { + $db = Core::$db; + + $where_module_clause = (!empty($module)) ? "WHERE module = :module" : ""; + $and_module_clause = (!empty($module)) ? "AND module = :module" : ""; + + $result = ""; + if (empty($settings)) { + $db->query(" + SELECT setting_name, setting_value + FROM {PREFIX}settings + $where_module_clause + "); + if (!empty($module)) { + $db->bind("module", $module); + } + $db->execute(); + + $result = array(); + foreach ($db->fetchAll() as $row) { + $result[$row['setting_name']] = $row['setting_value']; + } + + } else if (is_string($settings)) { + $db->query(" + SELECT setting_value + FROM {PREFIX}settings + WHERE setting_name = '$settings' + $and_module_clause + "); + if (!empty($module)) { + $db->bind("module", $module); + } + $db->execute(); + $info = $db->fetch(); + $result = $info["setting_value"]; + + } else if (is_array($settings)) { + $result = array(); + + foreach ($settings as $setting_name) { + $db->query(" + SELECT setting_value + FROM {PREFIX}settings + WHERE setting_name = :setting_name + $and_module_clause + "); + $db->bind("setting_name", $setting_name); + if (!empty($module)) { + $db->bind("module", $module); + } + $db->execute(); + + $result[$setting_name] = $db->fetch(PDO::FETCH_COLUMN); + } + } + + return $result; + } + + /** + * Updates some setting values. If the setting doesn't exist, it creates it. In addition, + * it updates the value(s) in the current user's sessions. + * + * TODO this interface is pretty poor. Change this to Settings::set("key", "value") and add a Settings::setAll(array()) version. + * + * @param array $settings a hash of setting name => setting value + * @param string $module the module name + */ + public static function set(array $settings, $module = "") + { + $db = Core::$db; + $and_module_clause = (!empty($module)) ? "AND module = :module" : ""; + + if (!is_array($settings)) { + return; + } + + foreach ($settings as $setting_name => $setting_value) { + $db->query(" + SELECT count(*) + FROM {PREFIX}settings + WHERE setting_name = :setting_name + $and_module_clause + "); + $db->bind("setting_name", $setting_name); + if (!empty($module)) { + $db->bind("module", $module); + } + + try { + $db->execute(); + } catch (Exception $e) { + return array(false, $e->getMessage()); + } + + if ($db->fetch(PDO::FETCH_COLUMN) == 0) { + if (!empty($module)) { + $query = "INSERT INTO {PREFIX}settings (setting_name, setting_value, module) VALUES (:setting_name, :setting_value, :module)"; + } else { + $query = "INSERT INTO {PREFIX}settings (setting_name, setting_value) VALUES (:setting_name, :setting_value)"; + } + } else { + $query = "UPDATE {PREFIX}settings SET setting_value = :setting_value WHERE setting_name = :setting_name $and_module_clause"; + } + + $db->query($query); + if (!empty($module)) { + $db->bind("module", $module); + } + $db->bindAll(array( + "setting_value" => $setting_value, + "setting_name" => $setting_name + )); + $db->execute(); + + // TODO. This looks suspiciously like a bug... [a module could overwrite a core var] + Sessions::set("settings.{$setting_name}", $setting_value); + } + } + + + /** + * Called by administrators; updates the main settings. + * + * @param array $infohash this parameter should be a hash (e.g. $_POST or $_GET) containing the + * various fields from the main settings admin page. + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function updateMainSettings($infohash) + { + $LANG = Core::$L; + + $success = true; + $message = $LANG["notify_setup_options_updated"]; + + $rules = array(); + $rules[] = "required,program_name,{$LANG["validation_no_program_name"]}"; + $rules[] = "required,num_clients_per_page,{$LANG["validation_no_num_clients_per_page"]}"; + $rules[] = "digits_only,num_clients_per_page,{$LANG["validation_invalid_num_clients_per_page"]}"; + $rules[] = "required,num_emails_per_page,{$LANG["validation_no_num_emails_per_page"]}"; + $rules[] = "digits_only,num_emails_per_page,{$LANG["validation_invalid_num_emails_per_page"]}"; + $rules[] = "required,num_forms_per_page,{$LANG["validation_no_num_forms_per_page"]}"; + $rules[] = "digits_only,num_forms_per_page,{$LANG["validation_invalid_num_forms_per_page"]}"; + $rules[] = "required,num_option_lists_per_page,{$LANG["validation_no_num_option_lists_per_page"]}"; + $rules[] = "digits_only,num_option_lists_per_page,{$LANG["validation_invalid_num_option_lists_per_page"]}"; + $rules[] = "required,num_menus_per_page,{$LANG["validation_no_num_menus_per_page"]}"; + $rules[] = "digits_only,num_menus_per_page,{$LANG["validation_invalid_num_menus_per_page"]}"; + $rules[] = "required,num_modules_per_page,{$LANG["validation_no_num_modules_per_page"]}"; + $rules[] = "digits_only,num_modules_per_page,{$LANG["validation_invalid_num_modules_per_page"]}"; + $errors = validate_fields($infohash, $rules); + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors), ""); + } + + $settings = array( + "program_name" => trim($infohash["program_name"]), + "logo_link" => trim($infohash["logo_link"]), + "num_clients_per_page" => trim($infohash["num_clients_per_page"]), + "num_emails_per_page" => trim($infohash["num_emails_per_page"]), + "num_forms_per_page" => trim($infohash["num_forms_per_page"]), + "num_option_lists_per_page" => trim($infohash["num_option_lists_per_page"]), + "num_menus_per_page" => trim($infohash["num_menus_per_page"]), + "num_modules_per_page" => trim($infohash["num_modules_per_page"]), + "default_date_field_search_value" => $infohash["default_date_field_search_value"] + ); + + Settings::set($settings); + + extract(Hooks::processHookCalls("end", compact("settings"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Called by administrators; updates the default user account settings. + * + * @param array $infohash this parameter should be a hash (e.g. $_POST or $_GET) containing the + * various fields from the main settings admin page. + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function updateAccountSettings($infohash) + { + $LANG = Core::$L; + + $success = true; + $message = $LANG["notify_setup_options_updated"]; + + $rules = array(); + $rules[] = "required,default_page_titles,{$LANG["validation_no_page_titles"]}"; + $rules[] = "required,default_client_menu_id,{$LANG["validation_no_menu_id"]}"; + $rules[] = "required,default_theme,{$LANG["validation_no_theme"]}"; + $rules[] = "required,default_login_page,{$LANG["validation_no_login_page"]}"; + $rules[] = "required,default_logout_url,{$LANG["validation_no_logout_url"]}"; + $rules[] = "required,default_language,{$LANG["validation_no_default_language"]}"; + $rules[] = "required,default_sessions_timeout,{$LANG["validation_no_default_sessions_timeout"]}"; + $rules[] = "digits_only,default_sessions_timeout,{$LANG["validation_invalid_default_sessions_timeout"]}"; + $rules[] = "required,default_date_format,{$LANG["validation_no_date_format"]}"; + $errors = validate_fields($infohash, $rules); + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors), ""); + } + + $clients_may_edit_page_titles = isset($infohash["clients_may_edit_page_titles"]) ? "yes" : "no"; + $clients_may_edit_footer_text = isset($infohash["clients_may_edit_footer_text"]) ? "yes" : "no"; + $clients_may_edit_theme = isset($infohash["clients_may_edit_theme"]) ? "yes" : "no"; + $clients_may_edit_logout_url = isset($infohash["clients_may_edit_logout_url"]) ? "yes" : "no"; + $clients_may_edit_ui_language = isset($infohash["clients_may_edit_ui_language"]) ? "yes" : "no"; + $clients_may_edit_timezone_offset = isset($infohash["clients_may_edit_timezone_offset"]) ? "yes" : "no"; + $clients_may_edit_sessions_timeout = isset($infohash["clients_may_edit_sessions_timeout"]) ? "yes" : "no"; + $clients_may_edit_date_format = isset($infohash["clients_may_edit_date_format"]) ? "yes" : "no"; + $clients_may_edit_max_failed_login_attempts = isset($infohash["clients_may_edit_max_failed_login_attempts"]) ? "yes" : "no"; + + $required_password_chars = ""; + if (isset($infohash["required_password_chars"]) && is_array($infohash["required_password_chars"])) { + $required_password_chars = implode(",", $infohash["required_password_chars"]); + } + + $default_theme = $infohash["default_theme"]; + $default_client_swatch = ""; + if (isset($infohash["{$default_theme}_default_theme_swatches"])) { + $default_client_swatch = $infohash["{$default_theme}_default_theme_swatches"]; + } + + $settings = array( + "default_page_titles" => $infohash["default_page_titles"], + "default_footer_text" => $infohash["default_footer_text"], + "default_client_menu_id" => $infohash["default_client_menu_id"], + "default_theme" => $default_theme, + "default_client_swatch" => $default_client_swatch, + "default_login_page" => $infohash["default_login_page"], + "default_logout_url" => $infohash["default_logout_url"], + "default_language" => $infohash["default_language"], + "default_timezone_offset" => $infohash["default_timezone_offset"], + "default_sessions_timeout" => $infohash["default_sessions_timeout"], + "default_date_format" => $infohash["default_date_format"], + "forms_page_default_message" => $infohash["forms_page_default_message"], + "clients_may_edit_page_titles" => $clients_may_edit_page_titles, + "clients_may_edit_footer_text" => $clients_may_edit_footer_text, + "clients_may_edit_theme" => $clients_may_edit_theme, + "clients_may_edit_logout_url" => $clients_may_edit_logout_url, + "clients_may_edit_ui_language" => $clients_may_edit_ui_language, + "clients_may_edit_timezone_offset" => $clients_may_edit_timezone_offset, + "clients_may_edit_sessions_timeout" => $clients_may_edit_sessions_timeout, + "clients_may_edit_date_format" => $clients_may_edit_date_format, + + // security settings + "default_max_failed_login_attempts" => $infohash["default_max_failed_login_attempts"], + "min_password_length" => $infohash["min_password_length"], + "required_password_chars" => $required_password_chars, + "num_password_history" => $infohash["num_password_history"], + "clients_may_edit_max_failed_login_attempts" => $clients_may_edit_max_failed_login_attempts + ); + + Settings::set($settings); + + extract(Hooks::processHookCalls("end", compact("settings"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Called by administrators; updates the default user account settings. + * + * @param array $infohash this parameter should be a hash (e.g. $_POST or $_GET) containing the + * various fields from the main settings admin page. + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function updateFileSettings($infohash) + { + $LANG = Core::$L; + + $success = true; + $message = $LANG["notify_setup_options_updated"]; + + $file_upload_dir = rtrim(trim($infohash["file_upload_dir"]), "/\\"); + $file_upload_url = rtrim(trim($infohash["file_upload_url"]), "/\\"); + $file_upload_max_size = $infohash["file_upload_max_size"]; + + $file_upload_filetypes = (is_array($infohash["file_upload_filetypes"])) ? join(",", $infohash["file_upload_filetypes"]) : ""; + if (!empty($infohash["file_upload_filetypes_other"])) { + if (empty($file_upload_filetypes)) { + $file_upload_filetypes = $infohash["file_upload_filetypes_other"]; + } else { + $file_upload_filetypes .= ",{$infohash["file_upload_filetypes_other"]}"; + } + } + $file_upload_filetypes = mb_strtolower($file_upload_filetypes); + + $settings = array( + "file_upload_dir" => $file_upload_dir, + "file_upload_url" => $file_upload_url, + "file_upload_max_size" => $file_upload_max_size, + "file_upload_filetypes" => $file_upload_filetypes + ); + + Settings::set($settings); + + // check the folder was valid + list ($is_valid_folder, $folder_message) = Files::checkUploadFolder($file_upload_dir); + if (!$is_valid_folder) { + return array($is_valid_folder, $folder_message); + } + + extract(Hooks::processHookCalls("end", compact("infohash"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Called by the administrator from the Themes settings page. It updates the list of enabled + * themes, and which theme is assigned to the administrator and (default) client accounts. Note: + * it doesn't disable any themes that are already assigned to a user account. If that happens, + * it returns a message listing the accounts (each clickable) and an option to bulk assign them + * to a different theme. + * + * @param array $infohash this parameter should be a hash (e.g. $_POST or $_GET) containing the + * various fields from the main settings admin page. + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function updateThemeSettings($infohash) + { + $LANG = Core::$L; + $db = Core::$db; + $root_url = Core::getRootUrl(); + $root_dir = Core::getRootDir(); + + // lots to validate! First, check the default admin & client themes have been entered + $rules = array(); + $rules[] = "required,admin_theme,{$LANG["validation_no_admin_theme"]}"; + $rules[] = "required,default_client_theme,{$LANG["validation_no_default_client_theme"]}"; + $errors = validate_fields($infohash, $rules); + + if (!isset($infohash["is_enabled"])) { + $errors[] = $LANG["validation_no_enabled_themes"]; + } + + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors)); + } + + $enabled_themes = $infohash["is_enabled"]; + + // next, check that both the admin and default client themes are enabled + $admin_theme = $infohash["admin_theme"]; + $default_client_theme = $infohash["default_client_theme"]; + + if (!in_array($admin_theme, $enabled_themes) || !in_array($default_client_theme, $enabled_themes)) { + return array(false, $LANG["validation_default_admin_and_client_themes_not_enabled"]); + } + + // lastly, if there are already client accounts assigned to disabled themes, we need to sort it out. + // We handle it the same way as deleting the client menus: if anyone is assigned to this theme, + // we generate a list of their names, each a link to their account page (in a _blank link). We + // then inform the user of what's going on, and underneath the name list, give them the option of + // assigning ALL affected accounts to another (enabled) theme. + $theme_clauses = array(); + foreach ($enabled_themes as $theme) { + $theme_clauses[] = "theme != '$theme'"; + } + $theme_clause = join(" AND ", $theme_clauses); + + $db->query(" + SELECT account_id, first_name, last_name + FROM {PREFIX}accounts + WHERE $theme_clause + "); + $db->execute(); + $client_info = $db->fetch(); + + // TODO MOVE! Single responsibility, Ben! + if (!empty($client_info)) + { + $message = $LANG["notify_disabled_theme_already_assigned"]; + $placeholder_str = $LANG["phrase_assign_all_listed_client_accounts_to_theme"]; + + $themes = Themes::getList(true); + $dd = ""; + + // a bit bad (hardcoded HTML!), but organize the account list in 3 columns + $client_links_table = "\n"; + $num_affected_clients = count($client_info); + for ($i=0; $i<$num_affected_clients; $i++) { + $account_info = $client_info[$i]; + $client_id = $account_info["account_id"]; + $first_name = $account_info["first_name"]; + $last_name = $account_info["last_name"]; + $client_ids[] = $client_id; + + if ($i != 0 && $i % 3 == 0) { + $client_links_table .= "\n"; + } + + $client_links_table .= "\n"; + } + $client_id_str = join(",", $client_ids); + + // close the table + if ($num_affected_clients % 3 == 1) { + $client_links_table .= ""; + } else if ($num_affected_clients % 3 == 2) { + $client_links_table .= ""; + } + + $client_links_table .= "
• $first_name $last_name
"; + + $submit_button = ""; + + $placeholders = array( + "theme_dropdown" => $dd, + "submit_button" => $submit_button + ); + + $mass_assign_html = "
" . General::evalSmartyString($placeholder_str, $placeholders) . "
"; + $html = $message . $mass_assign_html . $client_links_table; + + return array(false, $html); + } + + // hoorah! Validation complete, let's update the bloomin' database at last + + // update the admin settings + $admin_id = Sessions::get("account.account_id"); + $admin_swatch = ""; + if (isset($infohash["{$admin_theme}_admin_theme_swatches"])) { + $admin_swatch = $infohash["{$admin_theme}_admin_theme_swatches"]; + } + + $db->query(" + UPDATE {PREFIX}accounts + SET theme = :theme, + swatch = :swatch + WHERE account_id = :account_id + "); + $db->bindAll(array( + "theme" => $admin_theme, + "swatch" => $admin_swatch, + "account_id" => $admin_id + )); + $db->execute(); + + Sessions::set("account.theme", $admin_theme); + Sessions::set("account.swatch", $admin_swatch); + Core::$user->setTheme($admin_theme); + Core::$user->setSwatch($admin_swatch); + + $default_client_swatch = ""; + if (isset($infohash["{$default_client_theme}_default_client_theme_swatches"])) { + $default_client_swatch = $infohash["{$default_client_theme}_default_client_theme_swatches"]; + } + + // update the default client theme & swatch + $new_settings = array( + "default_theme" => $default_client_theme, + "default_client_swatch" => $default_client_swatch + ); + Settings::set($new_settings); + + + // finally, update the enabled themes list + $db->query(" + UPDATE {PREFIX}themes + SET is_enabled = 'no' + "); + $db->execute(); + + foreach ($enabled_themes as $theme) { + $db->query(" + UPDATE {PREFIX}themes + SET is_enabled = 'yes' + WHERE theme_folder = :theme + "); + $db->bind("theme", $theme); + $db->execute(); + } + + // reset the settings in sessions + Sessions::set("settings", Settings::get()); + + $success = true; + $message = $LANG["notify_themes_settings_updated"]; + + extract(Hooks::processHookCalls("end", compact("infohash"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } +} diff --git a/global/code/Submissions.class.php b/global/code/Submissions.class.php new file mode 100644 index 00000000..513c36e2 --- /dev/null +++ b/global/code/Submissions.class.php @@ -0,0 +1,2077 @@ + + * @package 3-0-x + * @subpackage Submissions + */ + +// ------------------------------------------------------------------------------------------------- + +namespace FormTools; + +use Exception, PDO; + + +class Submissions +{ + + /** + * This function processes the form submissions - after the form has been set up in the database. + */ + public static function processFormSubmission($form_data) + { + $db = Core::$db; + $LANG = Core::$L; + $api_enabled = Core::isAPIAvailable(); + $multi_val_delimiter = Core::getMultiFieldValDelimiter(); + $query_str_multi_val_separator = Core::getQueryStrMultiValSeparator(); + + // ensure the incoming values are escaped + $form_id = $form_data["form_tools_form_id"]; + $form_info = Forms::getForm($form_id); + + // do we have a form for this id? + if (!Forms::checkFormExists($form_id)) { + $page_vars = array( + "message_type" => "error", + "message" => $LANG["processing_invalid_form_id"] + ); + Themes::displayPage("error.tpl", $page_vars); + exit; + } + + extract(Hooks::processHookCalls("start", compact("form_info", "form_id", "form_data"), array("form_data")), EXTR_OVERWRITE); + + // check to see if this form has been completely set up + if ($form_info["is_complete"] == "no") { + $page_vars = array( + "message_type" => "error", + "message" => $LANG["processing_form_incomplete"] + ); + Themes::displayPage("error.tpl", $page_vars); + exit; + } + + // check to see if this form has been disabled + if ($form_info["is_active"] == "no") { + if (isset($form_data["form_tools_inactive_form_redirect_url"])) { + header("location: {$form_data["form_tools_inactive_form_redirect_url"]}"); + exit; + } + $page_vars = array( + "message_type" => "error", + "message" => $LANG["processing_form_disabled"] + ); + Themes::displayPage("error.tpl", $page_vars); + exit; + } + + // do we have a form for this id? + if (!Forms::checkFormExists($form_id)) { + $page_vars = array( + "message_type" => "error", + "message" => $LANG["processing_invalid_form_id"] + ); + Themes::displayPage("error.tpl", $page_vars); + exit; + } + + // was there a reCAPTCHA response? If so, a recaptcha was just submitted. This generally implies the + // form page included the API, so check it was entered correctly. If not, return the user to the webpage + if (isset($api_enabled) && isset($form_data["g-recaptcha-response"])) { + + $api = new API(array("init_core" => false)); + $api->includeRecaptchaLib(); + $resp = $api->validateRecaptcha($form_data["g-recaptcha-response"]); + + if (!$resp->isSuccess()) { + + // since we need to pass all the info back to the form page we do it by storing the data in sessions. + // Ensure they're enabled. + Core::startSessions("api_form"); + $_SESSION["form_tools_form_data"] = $form_data; + $_SESSION["form_tools_form_data"]["api_recaptcha_error"] = $resp->getErrorCodes(); + + // if there's a form_tools_form_url specified, redirect to that + if (isset($form_data["form_tools_form_url"])) { + header("location: {$form_data["form_tools_form_url"]}"); + exit; + + // if not, see if the server has the redirect URL specified + } else if (isset($_SERVER["HTTP_REFERER"])) { + header("location: {$_SERVER["HTTP_REFERER"]}"); + exit; + + // no luck! Throw an error + } else { + $page_vars = array("message_type" => "error", "message" => $LANG["processing_no_form_url_for_recaptcha"]); + Themes::displayPage("error.tpl", $page_vars); + exit; + } + } + } + + // get a list of the custom form fields (i.e. non-system) for this form + $form_fields = Fields::getFormFields($form_id, array("include_field_type_info" => true)); + + $custom_form_fields = array(); + $file_fields = array(); + foreach ($form_fields as $field_info) { + $field_id = $field_info["field_id"]; + $is_system_field = $field_info["is_system_field"]; + $field_name = $field_info["field_name"]; + + // ignore system fields + if ($is_system_field == "yes") { + continue; + } + + if ($field_info["is_file_field"] == "no") { + $custom_form_fields[$field_name] = array( + "field_id" => $field_id, + "col_name" => $field_info["col_name"], + "field_title" => $field_info["field_title"], + "include_on_redirect" => $field_info["include_on_redirect"], + "field_type_id" => $field_info["field_type_id"], + "is_date_field" => $field_info["is_date_field"] + ); + } else { + $file_fields[] = array( + "field_id" => $field_id, + "field_info" => $field_info + ); + } + } + + // now examine the contents of the POST/GET submission and get a list of those fields + // which we're going to update + $valid_form_fields = array(); + foreach ($form_data as $field_name => $value) { + + // if this field is included, store the value for adding to DB + if (!array_key_exists($field_name, $custom_form_fields)) { + continue; + } + $curr_form_field = $custom_form_fields[$field_name]; + + $cleaned_value = $value; + if (is_array($value)) { + if ($form_info["submission_strip_tags"] == "yes") { + for ($i = 0; $i < count($value); $i++) { + $value[$i] = strip_tags($value[$i]); + } + } + $cleaned_value = implode("$multi_val_delimiter", $value); + } else { + if ($form_info["submission_strip_tags"] == "yes") { + $cleaned_value = strip_tags($value); + } + } + + $valid_form_fields[$curr_form_field["col_name"]] = $cleaned_value; + } + + $now = General::getCurrentDatetime(); + $ip_address = $_SERVER["REMOTE_ADDR"]; + + // now tack on the system fields + $valid_form_fields["submission_date"] = $now; + $valid_form_fields["last_modified_date"] = $now; + $valid_form_fields["ip_address"] = $ip_address; + $valid_form_fields["is_finalized"] = "yes"; + + list ($col_names_str, $placeholders_str, $valid_form_fields) = $db->getInsertStatementParams($valid_form_fields); + + // add the submission to the database (if form_tools_ignore_submission key isn't set by either the form or a module) + $submission_id = ""; + if (!isset($form_data["form_tools_ignore_submission"])) { + try { + $db->query(" + INSERT INTO {PREFIX}form_$form_id ($col_names_str) + VALUES ($placeholders_str) + "); + $db->bindAll($valid_form_fields); + $db->execute(); + } catch (Exception $e) { + Themes::displayPage("error.tpl", array( + "message_type" => "error", + "error_code" => 304, + "error_type" => "system", + "debugging" => "Failed query in " . __CLASS__ . ", " . __FILE__ . ", line " . __LINE__ . ", error: " . $e->getMessage() + )); + exit; + } + + $submission_id = $db->getInsertId(); + extract(Hooks::processHookCalls("end", compact("form_id", "submission_id"), array()), EXTR_OVERWRITE); + } + + + $redirect_query_params = array(); + + // build the redirect query parameter array + foreach ($form_fields as $field_info) { + if ($field_info["include_on_redirect"] == "no" || $field_info["is_file_field"] == "yes") { + continue; + } + + switch ($field_info["col_name"]) { + case "submission_id": + $redirect_query_params[] = "submission_id=$submission_id"; + break; + case "submission_date": + $settings = Settings::get(); + $submission_date_formatted = General::getDate($settings["default_timezone_offset"], $now, $settings["default_date_format"]); + $redirect_query_params[] = "submission_date=" . rawurlencode($submission_date_formatted); + break; + case "last_modified_date": + $settings = Settings::get(); + $submission_date_formatted = General::getDate($settings["default_timezone_offset"], $now, $settings["default_date_format"]); + $redirect_query_params[] = "last_modified_date=" . rawurlencode($submission_date_formatted); + break; + case "ip_address": + $redirect_query_params[] = "ip_address=$ip_address"; + break; + + default: + $field_name = $field_info["field_name"]; + + // if $value is an array, convert it to a string, separated by $g_query_str_multi_val_separator + if (isset($form_data[$field_name])) { + if (is_array($form_data[$field_name])) { + $value_str = join($query_str_multi_val_separator, $form_data[$field_name]); + $redirect_query_params[] = "$field_name=" . rawurlencode($value_str); + } else { + $redirect_query_params[] = "$field_name=" . rawurlencode($form_data[$field_name]); + } + } + break; + } + } + + // only upload files & send emails if we're not ignoring the submission + if (!isset($form_data["form_tools_ignore_submission"])) { + // now process any file fields. This is placed after the redirect query param code block above to allow whatever file upload + // module to append the filename to the query string, if needed + extract(Hooks::processHookCalls("manage_files", compact("form_id", "submission_id", "file_fields", "redirect_query_params"), array("success", "message", "redirect_query_params")), EXTR_OVERWRITE); + + // send any emails + Emails::sendEmails("on_submission", $form_id, $submission_id); + } + + // if the redirect URL has been specified either in the database or as part of the form + // submission, redirect the user [form submission form_tools_redirect_url value overrides + // database value] + if (!empty($form_info["redirect_url"]) || !empty($form_data["form_tools_redirect_url"])) { + // build redirect query string + $redirect_url = (isset($form_data["form_tools_redirect_url"]) && !empty($form_data["form_tools_redirect_url"])) + ? $form_data["form_tools_redirect_url"] : $form_info["redirect_url"]; + + $query_str = ""; + if (!empty($redirect_query_params)) { + $query_str = join("&", $redirect_query_params); + } + + if (!empty($query_str)) { + // only include the ? if it's not already there + if (strpos($redirect_url, "?")) { + $redirect_url .= "&" . $query_str; + } else { + $redirect_url .= "?" . $query_str; + } + } + + General::redirect($redirect_url); + } + + // the user should never get here! This means that the no redirect URL has been specified + $page_vars = array("message_type" => "error", "message" => $LANG["processing_no_redirect_url"]); + Themes::displayPage("error.tpl", $page_vars); + exit; + } + + + /** + * Creates a new blank submission in the database and returns the unique submission ID. If the + * operation fails for whatever reason (e.g. the form doesn't exist), it just returns the empty + * string. + * @param $form_id + * @param $view_id + * @param bool $is_finalized + * @param array $account_placeholders + * @return string + */ + public static function createBlankSubmission($form_id, $view_id, $is_finalized = false, $account_placeholders = array()) + { + $db = Core::$db; + + if (!Forms::checkFormExists($form_id)) { + return ""; + } + + $now = General::getCurrentDatetime(); + $ip = $_SERVER["REMOTE_ADDR"]; + + $default_insert_pairs = array( + array( + "placeholder" => ":submission_date", + "col_name" => "submission_date", + "value" => $now + ), + array( + "placeholder" => ":last_modified_date", + "col_name" => "last_modified_date", + "value" => $now + ), + array( + "placeholder" => ":ip_address", + "col_name" => "ip_address", + "value" => $ip + ), + array( + "placeholder" => ":is_finalized", + "col_name" => "is_finalized", + "value" => ($is_finalized) ? "yes" : "no" + ) + ); + + $special_defaults = Views::getNewViewSubmissionDefaults($view_id); + if (!empty($special_defaults)) { + + // find the field's DB column names so we can do our insert + $field_id_to_value_map = array(); + foreach ($special_defaults as $curr_default_info) { + $field_id_to_value_map[$curr_default_info["field_id"]] = $curr_default_info["default_value"]; + } + + $field_ids = array_keys($field_id_to_value_map); + $field_id_to_column_name_map = Fields::getFieldColByFieldId($form_id, $field_ids); + + foreach ($field_id_to_column_name_map as $field_id => $col_name) { + + // used to convert Client Map placeholders (user data + Extended Client Fields data) + $value = General::evalSmartyString($field_id_to_value_map[$field_id], $account_placeholders); + + $default_insert_pairs[] = array( + "placeholder" => ":{$col_name}", + "col_name" => $col_name, + "value" => $value + ); + } + } + + $col_names = implode(", ", array_column($default_insert_pairs, "col_name")); + $placeholders = implode(", ", array_column($default_insert_pairs, "placeholder")); + + // create a map of placeholder => value + $values = array(); + foreach ($default_insert_pairs as $row) { + $values[$row["placeholder"]] = $row["value"]; + } + + $db->query(" + INSERT INTO {PREFIX}form_{$form_id} ($col_names) + VALUES ($placeholders) + "); + $db->bindAll($values); + $db->execute(); + + $new_submission_id = $db->getInsertId(); + extract(Hooks::processHookCalls("end", compact("form_id", "now", "ip", "new_submission_id"), array()), EXTR_OVERWRITE); + + return $new_submission_id; + } + + + /** + * Deletes an individual submission. If the $is_admin value isn't set (or set to FALSE), it checks + * to see if the currently logged in user is allowed to delete the submission ID. + * + * @param integer $form_id + * @param integer $view_id + * @param integer $submission_id + * @param boolean $is_admin + */ + public static function deleteSubmission($form_id, $view_id, $submission_id, $is_admin = false) + { + $db = Core::$db; + $LANG = Core::$L; + + extract(Hooks::processHookCalls("start", compact("form_id", "view_id", "submission_id", "is_admin"), array()), EXTR_OVERWRITE); + + $form_info = Forms::getForm($form_id); + $form_fields = Fields::getFormFields($form_id); + $auto_delete_submission_files = $form_info["auto_delete_submission_files"]; + + // send any emails + Emails::sendEmails("on_delete", $form_id, $submission_id); + + // loop the form templates to find out if there are any file fields. If there are - and the user + // configured it - delete any associated files + $file_delete_problems = array(); + $file_fields_to_delete = array(); + if ($auto_delete_submission_files == "yes") { + $file_field_type_ids = FieldTypes::getFileFieldTypeIds(); + foreach ($form_fields as $field_info) { + $field_type_id = $field_info["field_type_id"]; + + if (!in_array($field_type_id, $file_field_type_ids)) { + continue; + } + + // I really don't like this... what should be done is do a SINGLE query after this loop is complete + // to return a map of field_id to values. That would then update $file_fields_to_delete + // with a fraction of the cost + $submission_info = Submissions::getSubmissionInfo($form_id, $submission_id); + $filename = $submission_info[$field_info['col_name']]; + + // if no filename was stored, it was empty - just continue + if (empty($filename)) + continue; + + $file_fields_to_delete[] = array( + "submission_id" => $submission_id, + "field_id" => $field_info["field_id"], + "field_type_id" => $field_type_id, + "filename" => $filename + ); + } + + if (!empty($file_fields_to_delete)) { + list($success, $file_delete_problems) = Files::deleteSubmissionFiles($form_id, $file_fields_to_delete, "Submissions::deleteSubmission"); + } + } + + // now delete the submission + $db->query(" + DELETE FROM {PREFIX}form_{$form_id} + WHERE submission_id = :submission_id + "); + $db->bind("submission_id", $submission_id); + $db->execute(); + + if ($auto_delete_submission_files == "yes") { + if (empty($file_delete_problems)) { + $success = true; + $message = ($file_fields_to_delete) ? $LANG["notify_submission_and_files_deleted"] : $LANG["notify_submission_deleted"]; + } else { + $success = false; + $message = $LANG["notify_submission_deleted_with_problems"] . "

"; + foreach ($file_delete_problems as $problem) { + $message .= "• {$problem["filename"]}: {$problem["error"]}
\n"; + } + } + } else { + $success = true; + $message = $LANG["notify_submission_deleted"]; + } + + // update sessions to ensure the first submission date and num submissions for this form View are correct + Forms::cacheFormStats($form_id); + Views::cacheViewStats($view_id); + + extract(Hooks::processHookCalls("end", compact("form_id", "view_id", "submission_id", "is_admin"), array("success", "message")), EXTR_OVERWRITE); + + // update sessions + $session_key = "form_{$form_id}_selected_submissions"; + if (Sessions::exists($session_key)) { + $selected = Sessions::get($session_key); + if (in_array($submission_id, Sessions::get($session_key))) { + + // TODO check this. Presumably need a Sessions::set() + array_splice($selected, array_search($submission_id, $selected), 1); + } + } + + return array($success, $message); + } + + + /** + * Deletes multiple form submissions at once. + * + * If required, deletes any files that were uploaded along with the original submissions. If one or + * more files associated with this submission couldn't be deleted (either because they didn't exist + * or because they didn't have permissions) the submission IS deleted, but it returns an error + * indicating which files caused problems. + * + * @param integer $form_id the unique form ID + * @param integer $view_id the unique view ID + * @param mixed $submissions_to_delete a single submission ID / an array of submission IDs / "all". This column + * determines which submissions will be deleted + * @return array returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function deleteSubmissions($form_id, $view_id, $submissions_to_delete, $omit_list, $search_fields) + { + $db = Core::$db; + $LANG = Core::$L; + + if ($submissions_to_delete == "all") { + // get the list of searchable columns for this View. This is needed to ensure that get_search_submission_ids receives + // the correct info to determine what submission IDs are appearing in this current search. + $searchable_columns = ViewFields::getViewSearchableFields($view_id); + $submission_ids = Submissions::getSearchSubmissionIds($form_id, $view_id, "submission_id-ASC", $search_fields, $searchable_columns); + $submission_ids = array_diff($submission_ids, $omit_list); + } else { + $submission_ids = $submissions_to_delete; + } + + $submissions_to_delete = $submission_ids; + + // if a user is refreshing the page after a delete request, this will be empty + if (empty($submission_ids)) { + return array(false, ""); + } + + extract(Hooks::processHookCalls("start", compact("form_id", "view_id", "submissions_to_delete", "omit_list", "search_fields", "is_admin"), array("submission_ids")), EXTR_OVERWRITE); + + $form_info = Forms::getForm($form_id); + $form_fields = Fields::getFormFields($form_id); + $auto_delete_submission_files = $form_info["auto_delete_submission_files"]; + + $submission_ids_qry = array(); + foreach ($submission_ids as $submission_id) { + $submission_ids_qry[] = "submission_id = $submission_id"; + } + + $where_clause = "WHERE " . join(" OR ", $submission_ids_qry); + + + // loop the form templates to find out if there are any file fields. If there are - and the user + // configured it - delete any associated files + $file_delete_problems = array(); + $form_has_file_field = false; + if ($auto_delete_submission_files == "yes") { + $file_field_type_ids = FieldTypes::getFileFieldTypeIds(); + $file_fields_to_delete = array(); + foreach ($submissions_to_delete as $submission_id) { + foreach ($form_fields as $field_info) { + $field_type_id = $field_info["field_type_id"]; + if (!in_array($field_type_id, $file_field_type_ids)) { + continue; + } + + $form_has_file_field = true; + $submission_info = Submissions::getSubmissionInfo($form_id, $submission_id); + $filename = $submission_info[$field_info['col_name']]; + + // if no filename was stored, it was empty - just continue + if (empty($filename)) { + continue; + } + + $file_fields_to_delete[] = array( + "submission_id" => $submission_id, + "field_id" => $field_info["field_id"], + "field_type_id" => $field_type_id, + "filename" => $filename + ); + } + } + + if (!empty($file_fields_to_delete)) { + list($success, $file_delete_problems) = Files::deleteSubmissionFiles($form_id, $file_fields_to_delete); + } + } + + // now delete the submissions + $db->query("DELETE FROM {PREFIX}form_{$form_id} $where_clause"); + $db->execute(); + + if ($auto_delete_submission_files == "yes") { + if (empty($file_delete_problems)) { + $success = true; + if (count($submission_ids) > 1) { + $message = ($form_has_file_field) ? $LANG["notify_submissions_and_files_deleted"] : $LANG["notify_submissions_deleted"]; + } else { + $message = ($form_has_file_field) ? $LANG["notify_submission_and_files_deleted"] : $LANG["notify_submission_deleted"]; + } + } else { + $success = false; + if (count($submission_ids) > 1) { + $message = $LANG["notify_submissions_deleted_with_problems"] . "

"; + } else { + $message = $LANG["notify_submission_deleted_with_problems"] . "

"; + } + foreach ($file_delete_problems as $problem) { + $message .= "• {$problem["filename"]}: {$problem["error"]}
\n"; + } + } + } else { + $success = true; + if (count($submission_ids) > 1) { + $message = $LANG["notify_submissions_deleted"]; + } else { + $message = $LANG["notify_submission_deleted"]; + } + } + + // TODO update sessions to ensure the first submission date and num submissions for this form View are correct + Forms::cacheFormStats($form_id); + Views::cacheViewStats($form_id, $view_id); + + Sessions::set("form_{$form_id}_select_all_submissions", ""); + Sessions::set("form_{$form_id}_selected_submissions", array()); + Sessions::set("form_{$form_id}_all_submissions_selected_omit_list", array()); + + // loop through all submissions deleted and send any emails + reset($submission_ids); + foreach ($submission_ids as $submission_id) { + Emails::sendEmails("on_delete", $form_id, $submission_id); + } + + $submissions_to_delete = $submission_ids; + extract(Hooks::processHookCalls("end", compact("form_id", "view_id", "submissions_to_delete", "omit_list", "search_fields", "is_admin"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + /** + * Retrieves everything about a form submission. It contains a lot of meta-information about the field, + * from the form_fields and view_tabs. If the optional view_id parameter is included, only the fields + * in the View are returned (AND all system fields, if they're not included). + * + * @param integer $form_id the unique form ID + * @param integer $submission_id the unique submission ID + * @param integer $view_id an optional view ID parameter + * @return array Returns an array of hashes. Each index is a separate form field and its value is + * a hash of information about it, such as value, field type, field size, etc. + */ + public static function getSubmission($form_id, $submission_id, $view_id = "") + { + $return_arr = array(); + + $form_fields = Fields::getFormFields($form_id); + $submission = Submissions::getSubmissionInfo($form_id, $submission_id); + + $view_fields = (!empty($view_id)) ? ViewFields::getViewFields($view_id) : array(); + + if (empty($submission)) { + return array(); + } + + $view_field_ids = array(); + foreach ($view_fields as $view_field) { + $view_field_ids[] = $view_field["field_id"]; + } + + // for each field, combine the meta form info (like field size, type, data type etc) from $form_fields + // with the info about the submission itself. Also, if there's a View specified, filter out any fields + // that aren't used in the View + foreach ($form_fields as $field_info) { + $field_id = $field_info["field_id"]; + + // if we're looking at this submission through a View, + if (!empty($view_id) && !in_array($field_id, $view_field_ids)) { + continue; + } + + // if the submission contains contents for this field, add it + if (array_key_exists($field_info['col_name'], $submission)) { + $field_info["content"] = $submission[$field_info['col_name']]; + } + + // if a view ID is specified, return the view-specific field info as well + if (!empty($view_id)) { + $field_view_info = ViewFields::getViewField($view_id, $field_id); + + if (!empty($field_view_info)) { + foreach ($field_view_info as $key => $value) { + $field_info[$key] = $value; + } + } + } + + $return_arr[] = $field_info; + } + + // finally, if a View is specified, ensure that the order in which the submission fields are returned + // is determined by the View. [NOT efficient!] + if (!empty($view_id)) { + $ordered_return_arr = array(); + + foreach ($view_fields as $view_field_info) { + $field_id = $view_field_info["field_id"]; + foreach ($return_arr as $field_info) { + if ($field_info["field_id"] == $field_id) { + $ordered_return_arr[] = $field_info; + break; + } + } + } + $return_arr = $ordered_return_arr; + } + + extract(Hooks::processHookCalls("end", compact("form_id", "submission_id", "view_id", "return_arr"), array("return_arr")), EXTR_OVERWRITE); + + return $return_arr; + } + + + /** + * Retrieves ONLY the submission data itself. If you require "meta" information about the submission + * such as it's field type, size, database table name etc, use Submissions::getSubmission(). + * + * @param integer $form_id The unique form ID. + * @param integer $submission_id The unique submission ID. + * @return array Returns a hash of submission information. + */ + public static function getSubmissionInfo($form_id, $submission_id) + { + $db = Core::$db; + + // get the form submission info + $db->query(" + SELECT * + FROM {PREFIX}form_{$form_id} + WHERE submission_id = :submission_id + "); + $db->bind("submission_id", $submission_id); + $db->execute(); + + $submission = $db->fetch(); + + extract(Hooks::processHookCalls("end", compact("form_id", "submission_id", "submission"), array("submission")), EXTR_OVERWRITE); + + return $submission; + } + + + public static function getSubmissionByField($form_id, $submission_id, $view_id) + { + $submission = self::getSubmission($form_id, $submission_id, $view_id); + $data = array(); + foreach ($submission as $field) { + $data[$field["field_name"]] = $field["content"]; + } + + return $data; + } + + + /** + * Gets the number of submissions made through a form. + * + * @param integer $form_id the form ID + * @param integer $view_id the View ID + * @return integer The number of (finalized) submissions + */ + public static function getSubmissionCount($form_id, $view_id = "") + { + $db = Core::$db; + + $filter_sql_clause = ""; + if (!empty($view_id)) { + $filter_sql = ViewFilters::getViewFilterSql($view_id); + if (!empty($filter_sql)) { + $filter_sql_clause = "AND" . join(" AND ", $filter_sql); + } + } + + // get the form submission info + $db->query(" + SELECT count(*) + FROM {PREFIX}form_{$form_id} + WHERE is_finalized = 'yes' + $filter_sql_clause + "); + $db->execute(); + + $result = $db->fetch(PDO::FETCH_NUM); + $submission_count = $result[0]; + + return $submission_count; + } + + + /** + * Returns all submission IDs in a search result set. This is used on the item details pages (admin + * and client) to build the << previous / next >> links. Since the system now properly only searches + * fields marked as "is_searchable", this function needs the final $search_columns parameter, containing + * the list of searchable fields (which is View-dependent). + * + * @param integer $form_id the unique form ID + * @param integer $view_id the unique form ID + * @param mixed $results_per_page an integer, or "all" + * @param string $order a string of form: "{db column}_{ASC|DESC}" + * @param array $search_fields an optional hash with these keys:
+ * search_field
+ * search_date
+ * search_keyword
+ * @param array $search_columns the columns that are being searched + * @return string an HTML string + */ + public static function getSearchSubmissionIds($form_id, $view_id, $order, $search_fields = array(), $search_columns = array()) + { + $db = Core::$db; + + // determine the various SQL clauses + $order_by = self::getSearchSubmissionsOrderByClause($form_id, $order); + $filter_clause = self::getSearchSubmissionsViewFilterClause($view_id); + $search_where_clause = self::getSearchSubmissionsSearchWhereClause($form_id, $search_fields, $search_columns); + + // now build our query + try { + $db->query(" + SELECT submission_id + FROM {PREFIX}form_{$form_id} + WHERE is_finalized = 'yes' + $search_where_clause + $filter_clause + ORDER BY $order_by + "); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + return $db->fetchAll(PDO::FETCH_COLUMN); + } + + + public static function isAllSelected($form_id) + { + $all_selected_key = "form_{$form_id}_select_all_submissions"; + return Sessions::exists($all_selected_key) && Sessions::get($all_selected_key) == 1; + } + + + public static function getSelectedSubmissions($form_id) + { + $submissions_to_delete = Sessions::get("form_{$form_id}_selected_submissions"); + $omit_list = array(); + + if (Submissions::isAllSelected($form_id)) { + $submissions_to_delete = "all"; + $omit_list = Sessions::get("form_{$form_id}_all_submissions_selected_omit_list"); + } + + return array($submissions_to_delete, $omit_list); + } + + + public static function clearSelected($form_id) + { + Sessions::set("form_{$form_id}_selected_submissions", array()); + Sessions::set("form_{$form_id}_all_submissions_selected_omit_list", array()); + Sessions::set("form_{$form_id}_select_all_submissions", ""); + } + + + /** + * Updates an individual form submission. + * + * @param int + * @param int + * @param array $infohash This parameter should be a hash (e.g. $_POST or $_GET) containing the + * various fields from the update submission page. The contents of it change for each + * form and form View, of course. + * @param bool + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function updateSubmission($form_id, $submission_id, $infohash, $validate = true) + { + $db = Core::$db; + $LANG = Core::$L; + + $success = true; + $message = $LANG["notify_form_submission_updated"]; + + extract(Hooks::processHookCalls("start", compact("form_id", "submission_id", "infohash"), array("infohash")), EXTR_OVERWRITE); + + $field_ids = (!empty($infohash["field_ids"])) ? explode(",", $infohash["field_ids"]) : array(); + + if ($validate) { + // perform any server-side validation + $errors = FieldValidation::validateSubmission($infohash["editable_field_ids"], $infohash); + + // if there are any problems, return right away + if (!empty($errors)) { + return array(false, General::getErrorListHTML($errors)); + } + } + + $form_fields = Fields::getFormFields($form_id); + $field_types_processing_info = FieldTypes::getFieldTypeProcessingInfo(); + + // this gets all settings for the fields, taking into account whatever has been overridden + $field_settings = FieldTypes::getFormFieldFieldTypeSettings($field_ids, $form_fields); + + $now = General::getCurrentDatetime(); + + $set_statements = array( + "last_modified_date = :last_modified_date" + ); + $bindings = array( + "submission_id" => $submission_id, + "last_modified_date" => $now + ); + + $counter = 1; + $file_fields = array(); + foreach ($form_fields as $form_field) { + + // if the field ID isn't in the page's tab, ignore it + if (!in_array($form_field["field_id"], $field_ids)) { + continue; + } + + // if the field ID isn't editable, the person's being BAD and trying to hack a field value. Ignore it. + if (!in_array($form_field["field_id"], $infohash["editable_field_ids"])) { + continue; + } + + if ($form_field["field_name"] == "core__submission_date" || $form_field["col_name"] == "core__last_modified") { + if (!isset($infohash[$form_field["field_name"]]) || empty($infohash[$form_field["field_name"]])) { + continue; + } + } + + list ($value, $file_field) = self::getSaveFieldValueFromUpdateRequest($infohash, $form_field, $field_settings, $field_types_processing_info); + if (!is_null($value)) { + $set_statements[] = "{$form_field["col_name"]} = :col_{$counter}"; + $bindings["col_{$counter}"] = $value; + $counter++; + } + if (!empty($file_field)) { + $file_fields[] = $file_field; + } + } + + $statements = join(",\n", $set_statements); + + try { + $db->query(" + UPDATE {PREFIX}form_{$form_id} + SET $statements + WHERE submission_id = :submission_id + "); + $db->bindAll($bindings); + $db->execute(); + } catch (Exception $e) { + + // if there was a problem updating the submission, don't even bother calling the file upload hook. Just exit right away + return array(false, $LANG["notify_submission_not_updated"]); + } + + // track whether the update from the core was successful + $core_update_success = $success; + + // now process any file fields + extract(Hooks::processHookCalls("manage_files", compact("form_id", "submission_id", "file_fields"), array("success", "message")), EXTR_OVERWRITE); + + // send any emails + Emails::sendEmails("on_edit", $form_id, $submission_id); + + extract(Hooks::processHookCalls("end", compact("form_id", "submission_id", "infohash"), array("success", "message")), EXTR_OVERWRITE); + + // very ugly, but refactoring was a little too impactful at this stage. The first two params are the overall success and + // error message; the third tells the calling code whether the core update action was successful. This allows the + // calling code to know if the error that occurred was a file upload / external module. This is needed due to + // this issue: https://github.com/formtools/core/issues/475 + return array( + $success, + $message, + $core_update_success + ); + } + + + /** + * For use by programmers to finalize a submission (i.e. make it appear in the client's user + * interface). + * + * @param integer $form_id The unique form ID. + * @param integer $submission_id A unique submission ID. + * @return boolean $success True on success, false otherwise. + */ + public static function finalizeSubmission($form_id, $submission_id) + { + $db = Core::$db; + + // check the form_id is valid + if (!Forms::checkFormExists($form_id)) { + return false; + } + + $db->query(" + UPDATE {PREFIX}form_$form_id + SET is_finalized = 'yes' + WHERE submission_id = $submission_id + "); + $db->bind("submission_id", $submission_id); + $db->execute(); + + Emails::sendEmails("on_submission", $form_id, $submission_id); + + return true; + } + + + /** + * Creates and returns a search for any form View, and any subset of its columns, returning results in + * any column order and for any single page subset (or all pages). The final $search_columns parameter + * was added most recently to fix bug #173. That parameter lets the caller differentiate between the + * columns being returned ($columns param) and columns to be searched ($search_columns). + * + * @param integer $form_id the unique form ID + * @param integer $view_id the unique View ID + * @param mixed $results_per_page an integer, or "all". + * @param integer $page_num The current page number - or empty string, if this function is returning all + * results in one page (e.g. printer friendly page). + * @param string $order A string of form: "{db column}_{ASC|DESC}" + * @param mixed $columns An array containing which database columns to search and return, or a string: + * "all" - which returns all columns in the form. + * @param array $search_fields an optional hash with these keys:
+ * search_field
+ * search_date
+ * search_keyword
+ * @param array submission_ids - an optional array containing a list of submission IDs to return. + * This may seem counterintuitive to pass the results that it needs to return to the function that + * figures out WHICH results to return, but it's actually kinda handy: this function returns exactly + * the field information that's needed in the order that's needed. + * @param array $submission_ids an optional array of submission IDs to return + * @param array $search_columns an optional array determining which database columns should be included + * in the search. Note: this is different from the $columns parameter which just determines which + * database columns will be returned. If it's not defined, it's just set to $columns. + * + * @return array returns a hash with these keys:
+ * ["search_query"] => an array of hashes, each index a search result row
+ * ["search_num_results"] => the number of results in the search (not just the 10 or so + * that will appear in the current page, listed in the + * "search_query" key
+ * ["view_num_results"] => the total number of results in this View, regardless of the + * current search values. + */ + public static function searchSubmissions($form_id, $view_id, $results_per_page, $page_num, $order, $columns_to_return, + $search_fields = array(), $submission_ids = array(), $searchable_columns = array()) + { + $db = Core::$db; + + // for backward compatibility + if (empty($searchable_columns)) { + $searchable_columns = $columns_to_return; + } + + // determine the various SQL clauses for the searches + $order_by = Submissions::getSearchSubmissionsOrderByClause($form_id, $order); + $limit_clause = General::getQueryPageLimitClause($page_num, $results_per_page); + $select_clause = Submissions::getSearchSubmissionsSelectClause($columns_to_return); + $filter_clause = Submissions::getSearchSubmissionsViewFilterClause($view_id); + $submission_id_clause = Submissions::getSearchSubmissionsSubmissionIdClause($submission_ids); + $search_where_clause = Submissions::getSearchSubmissionsSearchWhereClause($form_id, $search_fields, $searchable_columns); + + // (1) our main search query that returns a PAGE of submission info + try { + $db->query(" + SELECT $select_clause + FROM {PREFIX}form_{$form_id} + WHERE is_finalized = 'yes' + $search_where_clause + $filter_clause + $submission_id_clause + ORDER BY $order_by + $limit_clause + "); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $search_result_rows = $db->fetchAll(); + + // (2) find out how many results there are in this current search + try { + $db->query(" + SELECT count(*) + FROM {PREFIX}form_{$form_id} + WHERE is_finalized = 'yes' + $search_where_clause + $filter_clause + $submission_id_clause + "); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $search_num_results = $db->fetch(PDO::FETCH_COLUMN); + + // (3) find out how many results should appear in the View, regardless of the current search criteria + try { + $db->query(" + SELECT count(*) + FROM {PREFIX}form_{$form_id} + WHERE is_finalized = 'yes' + $filter_clause + "); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $view_num_results = $db->fetch(PDO::FETCH_COLUMN); + + $return_hash["search_rows"] = $search_result_rows; + $return_hash["search_num_results"] = $search_num_results; + $return_hash["view_num_results"] = $view_num_results; + + extract(Hooks::processHookCalls("end", compact("form_id", "submission_id", "view_id", "results_per_page", "page_num", "order", "columns", "search_fields", "submission_ids", "return_hash"), array("return_hash")), EXTR_OVERWRITE); + + return $return_hash; + } + + + /** + * This function is used for displaying and exporting the data. Basically it merges all information + * about a particular field from the view_fields table with the form_fields and field_options table, + * providing ALL information about a field in a single variable. + * + * It accepts the result of the Views::getViewFields() function as the first parameter and an optional + * boolean to let it know whether to return ALL results or not. + * + * TODO maybe deprecate? Only used mass_edit + * + * @param array $view_fields + * @param boolean $return_all_fields + */ + public static function getSubmissionFieldInfo($view_fields) + { + $display_fields = array(); + foreach ($view_fields as $field) { + $field_id = $field["field_id"]; + $curr_field_info = array( + "field_id" => $field_id, + "field_title" => $field["field_title"], + "col_name" => $field["col_name"], + "list_order" => $field["list_order"] + ); + $field_info = Fields::getFormField($field_id); + $curr_field_info["field_info"] = $field_info; + $display_fields[] = $curr_field_info; + } + return $display_fields; + } + + + /** + * This checks to see if a particular submission meets the criteria to belong in a particular View. + * It only applies to those Views that have one or more filters set up, but it works on all Views + * nonetheless. + * + * @param integer $view_id + * @param integer $view_id + * @param integer $submission_id + */ + public static function checkViewContainsSubmission($form_id, $view_id, $submission_id) + { + $db = Core::$db; + + $filter_sql = ViewFilters::getViewFilterSql($view_id); + + if (empty($filter_sql)) { + return true; + } + + $filter_sql_clause = join(" AND ", $filter_sql); + + try { + $db->query(" + SELECT count(*) + FROM {PREFIX}form_{$form_id} + WHERE submission_id = :submission_id AND + ($filter_sql_clause) + "); + $db->bind("submission_id", $submission_id); + $db->execute(); + } catch (Exception $e) { + return false; + } + + return $db->fetch(PDO::FETCH_COLUMN) == 1; + } + + + /** + * A helper function to find out it a submission is finalized or not. + * + * Assumption: form ID and submission ID are both valid & the form is fully set up and configured. + * + * @param integer $form_id + * @param integer $submission_id + * @return boolean + */ + public static function checkSubmissionFinalized($form_id, $submission_id) + { + $db = Core::$db; + + $db->query(" + SELECT is_finalized + FROM {PREFIX}form_$form_id + WHERE submission_id = :submission_id + "); + $db->bind("submission_id", $submission_id); + $db->execute(); + + $result = $db->fetch(); + + return $result["is_finalized"] == "yes"; + } + + + /** + * A helper function to find out it a submission is finalized or not. + * + * Assumption: form ID and submission ID are both valid & the form is fully set up and configured. + * + * @param integer $form_id + * @param integer $submission_id + * @return boolean + */ + public static function checkSubmissionExists($form_id, $submission_id) + { + $db = Core::$db; + + try { + $db->query(" + SELECT submission_id + FROM {PREFIX}form_$form_id + WHERE submission_id = :submission_id + "); + $db->bind("submission_id", $submission_id); + $db->execute(); + } catch (Exception $e) { + return null; + } + + return $db->numRows() === 1; + } + + + /** + * This generic function processes any form field with a field type that requires additional + * processing, e.g. phone number fields, date fields etc. - anything that needs a little extra PHP + * in order to convert the form data into. + * + * @param array $info + */ + public static function processFormField($vars) + { + eval($vars["code"]); + return (isset($value)) ? $value : ""; + } + + + /** + * Used for retrieving the data for a mapped form field; i.e. a dropdown, radio group or checkbox group + * field whose source contents is the contents of a different form field. + * + * @param integer $form_id + * @param array $results a complex data structure + */ + public static function getMappedFormFieldData($setting_value) + { + $db = Core::$db; + + $trimmed = preg_replace("/form_field:/", "", $setting_value); + + // this prevents anything wonky being shown if the following query fails (for whatever reason) + $formatted_results = ""; + + list($form_id, $field_id, $order) = explode("|", $trimmed); + if (!empty($form_id) && !empty($field_id) && !empty($order)) { + $map = Fields::getFieldColByFieldId($form_id, $field_id); + $col_name = $map[$field_id]; + + try { + $db->query(" + SELECT submission_id, $col_name + FROM {PREFIX}form_{$form_id} + WHERE is_finalized = 'yes' + ORDER BY $col_name $order + "); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $results = array(); + foreach ($db->fetchAll() as $row) { + if (empty($row[$col_name])) { + continue; + } + $results[] = array( + "option_value" => $row["submission_id"], + "option_name" => $row[$col_name] + ); + } + + // yuck! But we need to force the form field info into the same format as the option lists, + // so the Field Types don't need to do additional work to display both cases + $formatted_results = array( + "type" => "form_field", + "form_id" => $form_id, + "field_id" => $field_id, + "options" => array( + array( + "group_info" => array(), + "options" => $results + ) + ) + ); + } + + return $formatted_results; + } + + + /** + * Added in 2.1.0. This lets modules add icons to a "quicklink" icon row on the Submission Listing page. To add it, + * they need to define a hook call and return a $quicklinks hash with the following keys: + * icon_url + * alt_text + * + * @param $context "admin" or "client" + */ + public static function displaySubmissionListingQuicklinks($context) + { + $quicklinks = array(); + + extract(Hooks::processHookCalls("main", compact("context"), array("quicklinks"), array("quicklinks")), EXTR_OVERWRITE); + + if (empty($quicklinks)) { + return ""; + } + + echo "
    "; + + $num_quicklinks = count($quicklinks); + for ($i = 0; $i < $num_quicklinks; $i++) { + $classes = array(); + if ($i == 0) { + $classes[] = "ft_quicklinks_first"; + } + if ($i == $num_quicklinks - 1) { + $classes[] = "ft_quicklinks_last"; + } + + $class = implode(" ", $classes); + + $quicklink_info = $quicklinks[$i]; + $icon_url = isset($quicklink_info["icon_url"]) ? $quicklink_info["icon_url"] : ""; + $title_text = isset($quicklink_info["title_text"]) ? $quicklink_info["title_text"] : ""; + $onclick = isset($quicklink_info["onclick"]) ? $quicklink_info["onclick"] : ""; + $title_text = htmlspecialchars($title_text); + + if (empty($icon_url)) { + continue; + } + + echo "
  • \n"; + } + + echo "
"; + } + + + /** + * Gets the << prev, next >> etc. link HTML for the current submission. + */ + public static function getPrevNextLinks($form_id, $view_id, $submission_id, $return_page = "index.php") + { + $LANG = Core::$L; + + // defaults! As of 2.1.0, the navigation always appears + $previous_link_html = "{$LANG['word_previous_leftarrow']}"; + $next_link_html = "{$LANG['word_next_rightarrow']}"; + $search_results_link_html = "{$LANG['phrase_back_to_search_results']}"; + + $session_key = "form_{$form_id}_view_{$view_id}_submissions"; + if (Sessions::exists($session_key) && Sessions::get($session_key) != "") { + $php_self = General::getCleanPhpSelf(); + $submission_ids = Sessions::get($session_key); + $current_sub_id_index = array_search($submission_id, $submission_ids); + + if (!empty($current_sub_id_index) || $current_sub_id_index === 0) { + // PREVIOUS link + if ($submission_ids[0] != $submission_id && $current_sub_id_index != 0) { + $previous_submission_id = $submission_ids[$current_sub_id_index - 1]; + $previous_link_html = "{$LANG['word_previous_leftarrow']}"; + } + // NEXT link + if ($submission_ids[count($submission_ids) - 1] != $submission_id) { + $next_submission_id = $submission_ids[$current_sub_id_index + 1]; + $next_link_html = "{$LANG['word_next_rightarrow']}"; + } + } + } + + return array($previous_link_html, $search_results_link_html, $next_link_html); + } + + + public static function copySubmissions($form_id, $view_id, $submissions_to_copy, $omit_list, $search_fields) + { + $db = Core::$db; + $L = Core::$L; + + // construct a list of all the actual submission IDs we want to copy + if ($submissions_to_copy == "all") { + $searchable_columns = ViewFields::getViewSearchableFields($view_id); + $submission_ids = Submissions::getSearchSubmissionIds($form_id, $view_id, "submission_id-ASC", $search_fields, $searchable_columns); + $submission_ids = array_diff($submission_ids, $omit_list); + } else { + $submission_ids = $submissions_to_copy; + } + + $columns = Forms::getFormColumnNames($form_id); + $columns["is_finalized"] = true; + unset($columns["submission_id"]); + + $col_names = array_keys($columns); + + $success = true; + try { + + $submission_id_map = array(); + foreach ($submission_ids as $submission_id) { + General::copyTableRow("{PREFIX}form_{$form_id}", $col_names, "submission_id", $submission_id); + $submission_id_map[$submission_id] = $db->getInsertId(); + } + + extract(Hooks::processHookCalls("end", compact("form_id", "submission_id_map"), array()), EXTR_OVERWRITE); + + $num_submissions = count($submission_ids); + if ($num_submissions === 1) { + $submission_id = $submission_id_map[$submission_ids[0]]; + $message = "{$L["notify_submission_copied"]} {$L["notify_click_to_edit_new_submission"]}"; + } else { + $message = General::evalSmartyString($L["notify_submissions_copied"], array( + "num_submissions" => $num_submissions + )); + } + } catch (Exception $e) { + $success = false; + $message = $e->getMessage(); + } + + return array($success, $message); + } + + + public static function copySubmission($form_id, $submission_id) + { + $db = Core::$db; + $L = Core::$L; + + $columns = Forms::getFormColumnNames($form_id); + $columns["is_finalized"] = true; + unset($columns["submission_id"]); + + $col_names = array_keys($columns); + + $success = true; + $new_submission_id = ""; + try { + General::copyTableRow("{PREFIX}form_{$form_id}", $col_names, "submission_id", $submission_id); + $new_submission_id = $db->getInsertId(); + + $submission_id_map = array( + "$submission_id" => $new_submission_id + ); + + extract(Hooks::processHookCalls("end", compact("form_id", "submission_id_map"), array()), EXTR_OVERWRITE); + + $message = $L["notify_submission_copied_edit"]; + + } catch (Exception $e) { + $success = false; + $message = $e->getMessage(); + } + + return array($success, $message, $new_submission_id); + } + + + /** + * Added in 3.0.13. This is called every time a user edits a field. It tracks the current values they're about to + * edit (specific to the View) so we can detect changes that occur to those fields while they are editing and + * present them with a UI to reconcile the differences. + * + * We stash the submission, view & tab so we can do a quick check before updating the data that the info being + * updated corresponds to the actual submission. If a user had opened a new tab and edited a different submission + * this data would be incorrect if the user then updated the FIRST tab submission. For that scenario we simply + * update the submission and don't try to reconcile differences. If and when we actually properly support running + * FT in multiple tabs this can be revisited. https://github.com/formtools/core/issues/479 + * + * @param $grouped_fields + * @param $submission_id + * @param $view_id + * @param $tab_number + */ + public static function trackCurrentEditSubmissionFields($grouped_fields, $submission_id, $view_id, $tab_number) + { + $core_fields = array( + "core__submission_id", + "core__submission_date", + "core__last_modified", + "core__ip_address" + ); + $data = array(); + foreach ($grouped_fields as $group) { + foreach ($group["fields"] as $field) { + if (!in_array($field["field_name"], $core_fields)) { + $data[$field["field_name"]] = $field["submission_value"]; + } + } + } + Sessions::set("last_edit_submission_state", array( + "submission_id" => $submission_id, + "view_id" => $view_id, + "tab_number" => $tab_number, + "data" => $data + )); + } + + + public static function getChangedFieldsSinceLastRender($form_id, $view_id, $submission_id, $tab_number, $post) + { + $view_fields = Submissions::getSubmissionByField($form_id, $submission_id, $view_id); + unset($view_fields["core__submission_id"]); + unset($view_fields["core__submission_date"]); + unset($view_fields["core__last_modified"]); + unset($view_fields["core__ip_address"]); + + $last_edit_submission_state = Sessions::get("last_edit_submission_state"); + + // in case the last submission data is NOT the one being updated, just abort. This can happen if the user + // opened another tab and edited a different submission + if ($last_edit_submission_state["submission_id"] != $submission_id || + $last_edit_submission_state["view_id"] != $view_id || + $last_edit_submission_state["tab_number"] != $tab_number) { + return array(); + } + + // expensive operations, so just load them once if need by + $form_fields = array(); + $field_types_processing_info = array(); + $field_settings = array(); + + $changed = array(); + foreach ($view_fields as $field_name => $value) { + + // ignore any fields that aren't in the POST request + if (!isset($post[$field_name])) { + continue; + } + + if ($last_edit_submission_state["data"][$field_name] !== $value && $value !== $post[$field_name]) { + + if (empty($form_fields)) { + $form_fields = Fields::getFormFields($form_id); + $field_types_processing_info = FieldTypes::getFieldTypeProcessingInfo(); + + // this gets all settings for the fields, taking into account whatever has been overridden + $field_ids = (!empty($post["field_ids"])) ? explode(",", $post["field_ids"]) : array(); + $field_settings = FieldTypes::getFormFieldFieldTypeSettings($field_ids, $form_fields); + } + + $form_field = array(); + foreach ($form_fields as $row) { + if ($row["field_name"] == $field_name) { + $form_field = $row; + break; + } + } + + // currently file conflicts are ignored: the latest file is always overridden + list ($user_value, $file_field) = self::getSaveFieldValueFromUpdateRequest($post, $form_field, $field_settings, $field_types_processing_info); + + $changed[$field_name] = array( + "db_value" => $value, + "user_value" => $user_value + ); + } + } + + return $changed; + } + + + /** + * Used for clients and administrators when updating a submission. This checks the specific submission data hadn't + * changed while they were editing (i.e. the actual changed fields, not the general submission itself). If it does + * it handles returning the list of changed fields for users to reconcile the conflicts manually. + * @param $form_id + * @param $submission_id + * @param $view_id + * @param $editable_field_ids + * @param $request + * @return array + */ + public static function updateSubmissionWithConflictDetection($form_id, $submission_id, $view_id, $editable_field_ids, $request) + { + $L = Core::$L; + + $success = true; + $core_update_success = true; + $message = ""; + $changed_fields = array(); + $failed_validation = false; + + if (isset($_POST["core__reconcile_changed_fields"])) { + $state = Sessions::get("last_edit_submission_state"); + + // filter out anything with "db value" - we don't care about them any more: the user has indicated they want the + // value from the DB, so even if it's changed again, just use it + $keys = array_keys($state["data"]); + $fields_to_update = array(); + $user_values = Sessions::get("conflicted_user_values"); + + $view_fields = Submissions::getSubmissionByField($form_id, $submission_id, $view_id); + foreach ($keys as $field_name) { + if ($request[$field_name] == "user_value") { + $fields_to_update[] = $field_name; + $request[$field_name] = $user_values[$field_name]["user_value"]; + } else { + $request[$field_name] = $view_fields[$field_name]; + } + } + + if (empty($fields_to_update)) { + $success = true; + $message = $L["notify_differences_resolved"]; + } else { + $changed_fields = Submissions::getChangedFieldsSinceLastRender($form_id, $view_id, $submission_id, $request["tab"], $request); + + // now if the old DB values are the same as what they already reviewed, that's fine, we can just update the record. + // But if it changed again, display the conflict resolution page with the latest info. + $db_values_same = true; + foreach ($changed_fields as $field_name => $changes) { + if ($user_values[$field_name]["db_value"] !== $changes["db_value"]) { + $db_values_same = false; + } else { + $request[$field_name] = $changes["user_value"]; + } + } + + if ($db_values_same) { + $changed_fields = array(); + Sessions::set("new_search", "yes"); + $request["view_id"] = $view_id; + $request["editable_field_ids"] = $editable_field_ids; + list($success, $message) = Submissions::updateSubmission($form_id, $submission_id, $request, false); + } + } + + } else { + // see if any of the fields have been already updated + $changed_fields = Submissions::getChangedFieldsSinceLastRender($form_id, $view_id, $submission_id, $_POST["tab"], $_POST); + Sessions::set("new_search", "yes"); + $request["view_id"] = $view_id; + $request["editable_field_ids"] = $editable_field_ids; + + // if the DB had more up-to-date values, reset all the conflicting fields to save the last value in the DB before updating + // the database. We'll then present the conflicts to the user to choose whether to pick their new values or the existing + // ones + if (!empty($changed_fields)) { + foreach ($changed_fields as $field_name => $value) { + $request[$field_name] = $changed_fields[$field_name]["db_value"]; + } + } + list($success, $message, $core_update_success) = Submissions::updateSubmission($form_id, $submission_id, $request); + + if (!empty($changed_fields)) { + $success = false; + $message = $L["notify_conflicts_detected"]; + } + + // if there was any problem updating this submission, make a special note of it: we'll use that info to merge the + // current POST request info with the original field values to ensure the page contains the latest data (i.e. for + // cases where they fail server-side validation) + if (!$success) { + $failed_validation = true; + } + } + + return array( + $success, + $message, + $changed_fields, + $failed_validation, + $core_update_success + ); + } + + + /** + * Used on the edit submission page to figure out what field are changed and return a list of DB + user values + * to present to the user. + * @param $grouped_fields + * @param $changed_fields + * @return array + */ + public static function getChangedFieldsToReconcile($grouped_fields, $changed_fields) + { + $reconcile_changed_fields = array(); + $user_values = array(); + foreach ($changed_fields as $changed_field_name => $changed_info) { + foreach ($grouped_fields as $group) { + foreach ($group["fields"] as $field) { + if ($field["field_name"] !== $changed_field_name) { + continue; + } + + $db_value = $field; + $db_value["is_editable"] = "no"; + $db_value["submission_value"] = $changed_info["db_value"]; + + $user_value = $field; + $user_value["is_editable"] = "no"; + $user_value["submission_value"] = $changed_info["user_value"]; + + $reconcile_changed_fields[] = array( + "field_name" => $changed_field_name, + "field_id" => $field["field_id"], + "field_title" => $field["field_title"], + "db_value" => $db_value, + "user_value" => $user_value + ); + $user_values[$changed_field_name] = array( + "db_value" => $changed_info["db_value"], + "user_value" => $changed_info["user_value"] + ); + } + } + } + Sessions::set("conflicted_user_values", $user_values); + + return $reconcile_changed_fields; + } + + // ----------------------------------------------------------------------------------------------------------------- + + + /** + * Used in the searchSubmissions function to abstract away a few minor details. + * + * @param $form_id integer + * @param $order string + * @return string + */ + private static function getSearchSubmissionsOrderByClause($form_id, $order) + { + $order_by = "submission_id"; + if (empty($order)) { + return $order_by; + } + + // sorting by column, format: col_x-desc / col_y-asc + list($column, $direction) = explode("-", $order); + $field_info = Fields::getFieldOrderInfoByColname($form_id, $column); + + // no field can be found if the administrator just changed the DB field contents and then went back to the + // submissions page where they'd already done a sort - and had it cached + if (!empty($field_info)) { + if ($field_info["is_date_field"] == "yes") { + if ($column == "submission_date" || $column == "last_modified_date") { + $order_by = "$column $direction"; + } else { + $order_by = "CAST($column as DATETIME) $direction"; + } + } else { + if ($field_info["data_type"] == "number") { + $order_by = "CAST($column as SIGNED) $direction"; + } else { + $order_by = "$column $direction"; + } + } + + // important! If the ORDER BY column wasn't the submission_id, we need to add + // the submission ID as the secondary sorting column + if ($column != "submission_id") { + $order_by .= ", submission_id"; + } + } + + return $order_by; + } + + + /** + * This magical function looks at a form field in the database and if the POST request contains a value for that + * field, it determines what the actual saved value should be for the field. It takes into account how the field + * type is configured - having PHP processing applied to it, or just blankly allowing the POST request to contain + * the content & save as-is. It also takes into account how the individual FIELD has been configured - whether + * there have been overridden settings via the UI. + * + * This works for all field types. + * + * @param $request + * @param $form_field + * @param $field_settings + * @param $field_types_processing_info + * @return array + */ + private static function getSaveFieldValueFromUpdateRequest($request, $form_field, $field_settings, $field_types_processing_info) + { + $value = null; + $file_field = null; + $multi_val_delimiter = Core::getMultiFieldValDelimiter(); + + // if this is a FILE field that doesn't have any overridden PHP processing code, just store the info + // about the field. Presumably, the module / field type has registered the appropriate hooks for + // processing the file. Without it, the module wouldn't work. We pass that field + file info to the hook. + if ($field_types_processing_info[$form_field["field_type_id"]]["is_file_field"] == "yes") { + $file_data = array( + "field_id" => $form_field["field_id"], + "field_info" => $form_field, + "data" => $request, + "code" => $field_types_processing_info[$form_field["field_type_id"]]["php_processing"], + "settings" => $field_settings[$form_field["field_id"]] + ); + + if (empty($field_types_processing_info[$form_field["field_type_id"]]["php_processing"])) { + $file_field = $file_data; + + // No actual field types execute this chunk of code here, but it's possible that a user could configure + // a really lightweight file upload field to upload a file and return the value to store in the DB + } else { + $value = Submissions::processFormField($file_data); + } + + } else if (!empty($field_types_processing_info[$form_field["field_type_id"]]["php_processing"])) { + $data = array( + "field_info" => $form_field, + "data" => $request, + "code" => $field_types_processing_info[$form_field["field_type_id"]]["php_processing"], + "settings" => $field_settings[$form_field["field_id"]], + "account_info" => Sessions::getWithFallback("account", array()) + ); + $value = Submissions::processFormField($data); + } else { + if (isset($request[$form_field["field_name"]])) { + if (is_array($request[$form_field["field_name"]])) { + $value = implode("$multi_val_delimiter", $request[$form_field["field_name"]]); + } else { + $value = $request[$form_field["field_name"]]; + } + } else { + $value = ""; + } + } + + return array($value, $file_field); + } + + + /** + * Used in the searchSubmissions() method to abstract away a few minor details. + * + * @param array $columns + * @return string + */ + private static function getSearchSubmissionsSelectClause($columns) + { + if (!is_array($columns) && $columns == "all") { + $select_clause = " * "; + } else { + $columns = array_unique($columns); + + // if submission_id isn't included, add it - it'll be needed at some point + if (!in_array("submission_id", $columns)) { + $columns[] = "submission_id"; + } + + // just in case. This prevents empty column names (which shouldn't get here, but do if something + // goes wrong) getting into the column list + $columns = General::arrayRemoveEmptyEls($columns); + $select_clause = join(", ", $columns); + } + + return $select_clause; + } + + + /** + * Used in the Submissions::searchSubmissions() method to abstract away a few minor details. + * + * @param integer $view_id + * @return string + */ + private static function getSearchSubmissionsViewFilterClause($view_id) + { + $view_filters = ViewFilters::getViewFilterSql($view_id); + $filter_clause = ""; + if (!empty($view_filters)) { + $filter_clause = "AND " . join(" AND ", $view_filters); + } + + return $filter_clause; + } + + + /** + * Used in the Submissions::searchSubmissions() function. This figures out the additional SQL clauses required for + * a custom search. Note: as of the Dec 2009 build, this function properly only searches those fields + * marked as "is_searchable" in the database. + * + * @param integer $form_id + * @param array $search_fields + * @param array $searchable_columns the View columns that have been marked as "is_searchable" + * @return string + */ + private static function getSearchSubmissionsSearchWhereClause($form_id, $search_fields, $searchable_columns) + { + $search_where_clause = ""; + if (empty($search_fields)) { + return $search_where_clause; + } + + $search_form_date_field_format = Core::getSearchFormDateFieldFormat(); + + $clean_search_fields = $search_fields; + $search_field = $clean_search_fields["search_field"]; + $search_date = $clean_search_fields["search_date"]; + $search_keyword = str_replace("'", "''", $clean_search_fields["search_keyword"]); + + // search field can either be "all" or a database column name. "submission_date" and "last_modified_date" + // have special meanings, since they allow for keyword searching within specific date ranges + if ($search_field == "all") { + if (!empty($search_keyword)) { + + // if we're searching ALL columns, get all col names. This shouldn't ever get called any more - but + // I'll leave it in for regression purposes + $clauses = array(); + if (!is_array($searchable_columns) && $searchable_columns == "all") { + $col_info = Forms::getFormColumnNames($form_id); + $col_names = array_keys($col_info); + unset($col_names["is_finalized"]); + unset($col_names["submission_date"]); + unset($col_names["last_modified_date"]); + + foreach ($col_names as $col_name) { + $clauses[] = "$col_name LIKE '%$search_keyword%'"; + } + } else if (is_array($searchable_columns)) { + + // Core bug #252: only search on datetime fields if it's a numeric value; there's a MySQL bug that + // gets thrown about collations if the user enters a utf-8 char + if (preg_match("/[^0-9\:\-]/", $search_keyword)) { + $searchable_columns = General::arrayRemoveByValue($searchable_columns, "submission_date"); + $searchable_columns = General::arrayRemoveByValue($searchable_columns, "last_modified_date"); + } + + foreach ($searchable_columns as $col_name) { + $clauses[] = "$col_name LIKE '%$search_keyword%'"; + } + } + + if (!empty($clauses)) { + $search_where_clause = "AND (" . join(" OR ", $clauses) . ") "; + } + } + } + + // date field! Date fields actually take two forms: they're either the Core fields (Submission Date and + // Last Modified Date), which are real DATETIME fields, or custom date fields which are varchars + else if (preg_match("/\|date$/", $search_field)) { + $search_field = preg_replace("/\|date$/", "", $search_field); + $is_core_date_field = ($search_field == "submission_date" || $search_field == "last_modified_date") ? true : false; + if (!$is_core_date_field) { + $search_field = "CAST($search_field as DATETIME) "; + } + + if (!empty($search_date)) { + // search by date range + if (strpos($search_date, "-") !== false) { + $dates = explode(" - ", $search_date); + $start = $dates[0]; + $end = $dates[1]; + if ($search_form_date_field_format == "d/m/y") { + list($start_day, $start_month, $start_year) = explode("/", $start); + list($end_day, $end_month, $end_year) = explode("/", $end); + } else { + list($start_month, $start_day, $start_year) = explode("/", $start); + list($end_month, $end_day, $end_year) = explode("/", $end); + } + $start_day = str_pad($start_day, 2, "0", STR_PAD_LEFT); + $start_month = str_pad($start_month, 2, "0", STR_PAD_LEFT); + $end_day = str_pad($end_day, 2, "0", STR_PAD_LEFT); + $end_month = str_pad($end_month, 2, "0", STR_PAD_LEFT); + + $start_date = "{$start_year}-{$start_month}-{$start_day} 00:00:00"; + $end_date = "{$end_year}-{$end_month}-{$end_day} 23:59:59"; + $search_where_clause = "AND ($search_field >= '$start_date' AND $search_field <= '$end_date') "; + + // otherwise, return a specific day + } else { + if ($search_form_date_field_format == "d/m/y") { + list($day, $month, $year) = explode("/", $search_date); + } else { + list($month, $day, $year) = explode("/", $search_date); + } + $month = str_pad($month, 2, "0", STR_PAD_LEFT); + $day = str_pad($day, 2, "0", STR_PAD_LEFT); + + $start = "{$year}-{$month}-{$day} 00:00:00"; + $end = "{$year}-{$month}-{$day} 23:59:59"; + $search_where_clause = "AND ($search_field >= '$start' AND $search_field <= '$end') "; + } + + if (!empty($search_keyword)) { + $clauses = array(); + foreach ($searchable_columns as $col_name) { + $clauses[] = "$col_name LIKE '%$search_keyword%'"; + } + if (!empty($clauses)) { + $search_where_clause .= "AND (" . join(" OR ", $clauses) . ") "; + } + } + } + + } else { + if (!empty($search_keyword) && !empty($search_field)) { + $search_where_clause = "AND $search_field LIKE '%$search_keyword%'"; + } + } + + return $search_where_clause; + } + + + /** + * Used in the Submissions::searchSubmissions() function to abstract away a few minor details. + * + * @param array $submission_ids + * @return string + */ + private static function getSearchSubmissionsSubmissionIdClause($submission_ids) + { + $submission_id_clause = ""; + if (!empty($submission_ids)) { + $rows = array(); + foreach ($submission_ids as $submission_id) { + $rows[] = "submission_id = $submission_id"; + } + $submission_id_clause = "AND (" . join(" OR ", $rows) . ") "; + } + + return $submission_id_clause; + } + +} diff --git a/global/code/Templates.class.php b/global/code/Templates.class.php new file mode 100644 index 00000000..f4d1c8f6 --- /dev/null +++ b/global/code/Templates.class.php @@ -0,0 +1,157 @@ + + * @package 3-0-x + * @subpackage Templates + */ + +// ------------------------------------------------------------------------------------------------- + +namespace FormTools; + +use Smarty, SmartyBC; + + +class Templates +{ + + /** + * Not a great name, but this is a helper method that returns a $smarty instance all prepped with the common + * data & settings used for a page render. For any other smarty usage, you don't need all the stuff this adds: just + * use getBasicSmarty(). + */ + public static function getPageRenderSmarty($theme, $page_vars = array()) + { + $LANG = Core::$L; + $root_dir = Core::getRootDir(); + $root_url = Core::getRootUrl(); + + $smarty = Core::$smarty; + + $smarty->setTemplateDir("$root_dir/themes/$theme"); + $smarty->addPluginsDir(array("$root_dir/global/smarty_plugins")); + $smarty->setCompileDir(Core::getCacheFolder()); + + // check the compile directory has the write permissions + if (!is_writable($smarty->getCompileDir())) { + Errors::majorError("Either the theme cache folder doesn't have write-permissions, or your \$g_root_dir value is invalid. Please update the {$smarty->compile_dir} to have full read-write permissions (777 on unix)."); + exit; + } + + $smarty->assign("LANG", $LANG); + $smarty->setUseSubDirs(Core::shouldUseSmartySubDirs()); + $smarty->setDebugging(Core::isSmartyDebugEnabled()); + $smarty->setErrorReporting(Core::getDefaultErrorReporting()); + + $smarty->assign("g_debug", Core::isDebugEnabled()); + $smarty->assign("g_root_dir", $root_dir); + $smarty->assign("g_root_url", $root_url); + $smarty->assign("same_page", General::getCleanPhpSelf()); + $smarty->assign("g_js_debug", Core::isJsDebugEnabled() ? "true" : "false"); + $smarty->assign("query_string", $_SERVER["QUERY_STRING"]); + $smarty->assign("dir", $LANG["special_text_direction"]); + $smarty->assign("g_enable_benchmarking", Core::isBenchmarkingEnabled()); + $smarty->assign("is_logged_in", Core::$user->isLoggedIn()); + $smarty->assign("account_type", Core::$user->getAccountType()); + $smarty->assign("g_js_debug", Core::isJsDebugEnabled() ? "true" : "false"); + + $smarty->assign("g_hide_upgrade_link", Core::shouldHideUpgradeLink()); + $smarty->assign("images_url", "$root_url/themes/$theme/images"); + $smarty->assign("theme_url", "$root_url/themes/$theme"); + $smarty->assign("theme_dir", "$root_dir/themes/$theme"); + $smarty->assign("modules_dir", "$root_url/modules"); + + if (Core::$user->isLoggedIn()) { + $account = Sessions::get("account"); + $smarty->assign("settings", Sessions::get("settings")); + $smarty->assign("account", Sessions::get("account")); + $smarty->assign("menu_items", Sessions::get("menu.menu_items")); + $smarty->assign("footer_text", isset($account["settings"]["footer_text"]) ? $account["settings"]["footer_text"] : ""); + } else { + $smarty->assign("menu_items", array()); + $smarty->assign("footer_text", ""); + } + + // check the "required" vars are at least set so they don't produce warnings + if (!isset($page_vars["head_string"])) $page_vars["head_string"] = ""; + if (!isset($page_vars["head_title"])) $page_vars["head_title"] = ""; + if (!isset($page_vars["head_js"])) $page_vars["head_js"] = ""; + if (!isset($page_vars["page"])) $page_vars["page"] = ""; + + // if we need to include custom JS messages in the page, add it to the generated JS. Note: even if the js_messages + // key is defined but still empty, the General::generateJsMessages function is called, returning the "base" JS - like + // the JS version of g_root_url. Only if it is not defined will that info not be included. + $js_messages = (isset($page_vars["js_messages"])) ? General::generateJsMessages($page_vars["js_messages"]) : ""; + + if (!empty($page_vars["head_js"]) || !empty($js_messages)) { + $page_vars["head_js"] = ""; + } + + if (!isset($page_vars["head_css"])) { + $page_vars["head_css"] = ""; + } else if (!empty($page_vars["head_css"])) { + $page_vars["head_css"] = ""; + } + + // now add the custom variables for this template, as defined in $page_vars + foreach ($page_vars as $key => $value) { + $smarty->assign($key, $value); + } + + $success = (isset($page_vars["g_success"])) ? $page_vars["g_success"] : ""; + $message = (isset($page_vars["g_message"])) ? $page_vars["g_message"] : ""; + + // if this page has been told to display a custom message, override g_success and g_message + if (isset($_GET["message"])) { + list($found, $s, $m) = General::displayCustomPageMessage($_GET["message"]); + + if ($found) { + $success = $s; + $message = $m; + } + } + $smarty->assign("g_success", $success); + $smarty->assign("g_message", $message); + + return $smarty; + } + + public static function getBasicSmarty($theme) + { + $LANG = Core::$L; + $root_dir = Core::getRootDir(); + $root_url = Core::getRootUrl(); + + $smarty = Core::useSmartyBC() ? new SmartyBC() : new Smarty(); + $smarty->setTemplateDir("$root_dir/themes/$theme"); + $smarty->addPluginsDir(array("$root_dir/global/smarty_plugins")); + $smarty->setCompileDir(Core::getCacheFolder()); + + // check the compile directory has the write permissions + if (!is_writable($smarty->getCompileDir())) { + Errors::majorError("Either the theme cache folder doesn't have write-permissions, or your \$g_root_dir value is invalid. Please update the {$smarty->compile_dir} to have full read-write permissions (777 on unix)."); + exit; + } + + $smarty->assign("LANG", $LANG); + $smarty->assign("g_root_dir", $root_dir); + $smarty->assign("g_root_url", $root_url); + $smarty->setUseSubDirs(Core::shouldUseSmartySubDirs()); + + return $smarty; + } + + public static function hasRequiredParams($smarty, $allParams, $desiredParams) + { + foreach ($desiredParams as $param) { + if (!isset($allParams[$param]) || empty($allParams[$param])) { + echo "assign: missing '$param' parameter."; + return false; + } + } + + return true; + } +} diff --git a/global/code/Themes.class.php b/global/code/Themes.class.php new file mode 100644 index 00000000..fa666237 --- /dev/null +++ b/global/code/Themes.class.php @@ -0,0 +1,433 @@ + + * @package 3-0-x + * @subpackage Themes + */ + +namespace FormTools; + +use Exception; + + +class Themes +{ + + public static function getList($enabled_only = false) + { + $db = Core::$db; + $enabled_only_clause = ($enabled_only) ? "WHERE is_enabled = 'yes'" : ""; + + $db->query(" + SELECT * + FROM {PREFIX}themes + $enabled_only_clause + ORDER BY theme_name + "); + + $db->execute(); + $theme_info = array(); + foreach ($db->fetchAll() as $theme) { + $theme_info[] = $theme; + } + + extract(Hooks::processHookCalls("end", compact("theme_info"), array("theme_info")), EXTR_OVERWRITE); + return $theme_info; + } + + /** + * Returns all info about a particular theme. + * + * @param integer $theme_id + * @return array + */ + public static function getTheme($theme_id) + { + $db = Core::$db; + + $db->query("SELECT * FROM {PREFIX}themes WHERE theme_id = :theme_id"); + $db->bind("theme_id", $theme_id); + $db->execute(); + $theme_info = $db->fetch(); + + extract(Hooks::processHookCalls("end", compact("theme_id", "theme_info"), array("theme_info")), EXTR_OVERWRITE); + + return $theme_info; + } + + + /** + * The counterpart to getTheme. Returns everything about a theme by the theme folder instead of theme ID. + * + * @param string $theme_folder + * @return array + */ + public static function getThemeByThemeFolder($theme_folder) + { + $db = Core::$db; + + $db->query("SELECT * FROM {PREFIX}themes WHERE theme_folder = :theme_folder"); + $db->bind("theme_folder", $theme_folder); + $db->execute(); + $theme_info = $db->fetch(); + + extract(Hooks::processHookCalls("end", compact("theme_folder", "theme_info"), array("theme_info")), EXTR_OVERWRITE); + + return $theme_info; + } + + + /** + * Updates the list of themes in the database by examining the contents of the /themes folder. + */ + public static function updateThemeList() + { + $db = Core::$db; + $LANG = Core::$L; + + // empty the themes table + self::emptyThemesTable(); + + $themes = self::getUninstalledThemes(); + + try { + foreach ($themes as $theme_info) { + $db->query(" + INSERT INTO {PREFIX}themes (theme_folder, theme_name, uses_swatches, swatches, author, theme_link, + description, is_enabled, theme_version) + VALUES (:folder, :theme_name, :theme_uses_swatches, :swatches, :theme_author, :theme_link, + :theme_description, :is_enabled, :theme_version) + "); + $db->bindAll(array( + "folder" => $theme_info["theme_folder"], + "theme_name" => $theme_info["theme_name"], + "theme_uses_swatches" => $theme_info["theme_uses_swatches"], + "swatches" => $theme_info["swatches"], + "theme_author" => $theme_info["theme_author"], + "theme_link" => $theme_info["theme_link"], + "theme_description" => $theme_info["theme_description"], + "is_enabled" => "yes", + "theme_version" => $theme_info["theme_version"] + )); + $db->execute(); + } + } catch (Exception $e) { + return array(false, $e->getMessage()); + } + + extract(Hooks::processHookCalls("end", array(), array("success", "message")), EXTR_OVERWRITE); + + return array(true, $LANG["notify_theme_list_updated"]); + } + + public static function emptyThemesTable() + { + Core::$db->query("TRUNCATE {PREFIX}themes"); + Core::$db->execute(); + } + + private static function getUninstalledThemes() + { + $root_dir = Core::getRootDir(); + $themes_folder = "$root_dir/themes"; + $dh = opendir($themes_folder); +# + // if we couldn't open the themes folder, it probably doesn't exist + if (!$dh) { + return array(); // TODO + } + + $theme_data = array(); + while (($folder = readdir($dh)) !== false) { + if (!is_dir("$themes_folder/$folder") || $folder == "." || $folder == "..") { + continue; + } + + $summary_file = "$themes_folder/$folder/about/theme.php"; + $thumbnail = "$themes_folder/$folder/about/thumbnail.gif"; + + if (!is_file($summary_file) || !is_file($thumbnail)) { + continue; + } + + $info = self::getThemeInfoFileContents($summary_file); + + // if the theme name is not defined, skip it + if (empty($info["theme_name"])) { + continue; + } + + $theme_uses_swatches = $info["theme_uses_swatches"]; + $swatches = ""; + if ($theme_uses_swatches == "yes") { + $swatch_info = array(); + + foreach ($info["theme_swatches"] as $key => $value) { + $swatch_info[] = "$key,$value"; + } + $swatches = implode("|", $swatch_info); + } + + $theme_data[] = array( + "theme_folder" => $folder, + "theme_name" => $info["theme_name"], + "theme_author" => $info["theme_author"], + "theme_link" => $info["theme_link"], + "theme_description" => $info["theme_description"], + "theme_version" => $info["theme_version"], + "theme_uses_swatches" => $info["theme_uses_swatches"], + "swatches" => $swatches + ); + } + closedir($dh); + + return $theme_data; + } + + + /** + * Used by every page in the Form Tools UI to render a page. + * + * Note: if the page isn't found in the current theme, it defaults to the "default" theme. This is important (and + * handy!): it means that only the default theme needs to contain every file. Other themes can just define whatever + * pages they want to override and omit the others. + * @param $template + * @param $page_vars + * @param string $theme + * @param string $swatch + * @return string + */ + public static function displayPage($template, $page_vars, $theme = "", $swatch = "") + { + echo self::getPage($template, $page_vars, $theme, $swatch); + } + + + public static function getPage($template, $page_vars, $theme = "", $swatch = "") + { + $theme = (empty($theme) && Core::isUserInitialized()) ? Core::$user->getTheme() : $theme; + $swatch = (empty($swatch) && Core::isUserInitialized()) ? Core::$user->getSwatch() : $swatch; + + $smarty = Templates::getPageRenderSmarty($theme, $page_vars); + + $smarty->assign("swatch", $swatch); + + if (isset($page_vars["page_url"])) { + $parent_page_url = Menus::getParentPageUrl($page_vars["page_url"]); + $smarty->assign("nav_parent_page_url", $parent_page_url); + } + + extract(Hooks::processHookCalls("main", compact("smarty", "template", "page_vars"), array("smarty")), EXTR_OVERWRITE); + + return $smarty->fetch(self::getSmartyTemplateWithFallback($theme, $template)); + } + + /** + * TODO. Combine as much of this with the prev method. + * + * Loads a theme opening page for a module. This should be used loaded for every page in a + * module. It serves the same function as Themes::displayPage, except that it sets the appropriate root + * folder for the module and loads the + * + * @param array $page_vars a hash of information to display / provide to the template. + * @param string $theme + */ + public static function displayModulePage($module_folder, $template, $page_vars = array(), $theme = "", $swatch = "") + { + $root_dir = Core::getRootDir(); + + if (empty($theme) && (Sessions::exists("account.theme"))) { + $theme = Sessions::get("account.theme"); + $swatch = Sessions::getWithFallback("account.swatch", ""); + } elseif (empty($theme)) { + $settings = Settings::get(array("default_theme", "default_client_swatch")); + $theme = $settings["default_theme"]; + $swatch = $settings["default_client_swatch"]; + } + + $smarty = Templates::getPageRenderSmarty($theme, $page_vars); + Sessions::setIfNotExists("account.is_logged_in", false); + Sessions::setIfNotExists("account.account_type", ""); + + // this contains the custom language content of the module, in the language required. It's populated by + // Modules::initModulePage(), called on every module page + $module_lang_strings = Modules::getModuleLangFile($module_folder, Core::$user->getLang()); + $LANG[$module_folder] = $module_lang_strings; + $smarty->assign("L", $module_lang_strings); + + extract(Hooks::processHookCalls("end", compact("account_type", "module_folder"), array()), EXTR_OVERWRITE); + + $settings = Sessions::getWithFallback("settings", array()); + $smarty->assign("settings", $settings); + $smarty->assign("account", Sessions::get("account")); + $smarty->assign("swatch", $swatch); + + $module_id = Modules::getModuleIdFromModuleFolder($module_folder); + $module_nav = ModuleMenu::getMenuItems($module_id, $module_folder); + $smarty->assign("module_nav", $module_nav); + + // if there's no module title, display the module name. TODO not compatible with languages... + if (!isset($page_vars["head_title"])) { + $module_id = Modules::getModuleIdFromModuleFolder($module_folder); + $module_info = Modules::getModule($module_id); + $page_vars["head_title"] = $module_info["module_name"]; + } + + // if we need to include custom JS messages in the page, add it to the generated JS. Note: even if the js_messages + // key is defined but still empty, the General::generateJsMessages function is called, returning the "base" JS - like + // the JS version of g_root_url. Only if it is not defined will that info not be included. This feature was hacked + // in 2.1 to support js_messages from a single module file + $js_messages = ""; + if (isset($page_vars["js_messages"]) || isset($page_vars["module_js_messages"])) { + $core_js_messages = isset($page_vars["js_messages"]) ? $page_vars["js_messages"] : ""; + $module_js_messages = isset($page_vars["module_js_messages"]) ? $page_vars["module_js_messages"] : ""; + $js_messages = General::generateJsMessages($core_js_messages, $module_lang_strings, $module_js_messages); + } + + if ((isset($page_vars["head_js"]) && !empty($page_vars["head_js"])) || !empty($js_messages)) { + $js = ""; + $smarty->assign("head_js", $js); + } + + // if there's a Smarty folder, import any of its resources + if (is_dir("$root_dir/modules/$module_folder/smarty_plugins")) { + $smarty->addPluginsDir("$root_dir/modules/$module_folder/smarty_plugins"); + } + + if (!isset($page_vars["hide_nav_menu"])) { + $smarty->assign("hide_nav_menu", false); + } + if (!isset($page_vars["hide_header_bar"])) { + $smarty->assign("hide_header_bar", false); + } + + $smarty->assign("module_folder", $module_folder); + + extract(Hooks::processHookCalls("main", compact("g_smarty", "template", "page_vars"), array("g_smarty")), EXTR_OVERWRITE); + + $smarty->display("$root_dir/modules/$module_folder/$template"); + } + + + /** + * This function should be called in every $g_smarty->display() call. Instead of directly loading the + * desired template, it provides a simple fallback mechanism in case the template doesn't exist. Namely, + * theme developers only need + * + * @param string $theme + * @param string $template + */ + public static function getSmartyTemplateWithFallback($theme, $template) + { + $default_theme = Core::getDefaultTheme(); + $root_dir = Core::getRootDir(); + + if (is_file("$root_dir/themes/$theme/$template")) { + $file = "$root_dir/themes/$theme/$template"; + } else if (is_file("$root_dir/themes/$default_theme/$template")) { + $file = "$root_dir/themes/$default_theme/$template"; + } else { + echo "The \"$template\" template could not be located at the following locations: + $root_dir/themes/$theme/$template and $root_dir/themes/$default_theme/$template."; + exit; + } + + return $file; + } + + + /** + * TODO move to administrator... / user? + * + * This function is provided for theme developers who find themselves in a position where a theme they + * create is wonky, and prevents them seeing anything in the UI. It can only be called after having + * logged in as an administrator (which will not be affected by a dud theme - even through they may + * see nothing after logging in). To call it, they'll need to construct this URL: + * + * http://www.yourdomain.com/formtools/admin/settings/index.php?page=themes&theme_override=deepblue + * + * @param string $theme the name of the theme folder to reset to (e.g. deepblue) + */ + public static function resetAdminTheme($theme) + { + $db = Core::$db; + $LANG = Core::$L; + + $admin_id = Sessions::get("account.account_id"); + + $db->query(" + UPDATE {PREFIX}accounts + SET theme = :theme + WHERE account_id = :admin_id + "); + $db->bindAll(array( + "theme" => $theme, + "admin_id" => $admin_id + )); + $db->execute(); + + Core::$user->setTheme($theme); + + return array(true, $LANG["notify_admin_theme_overridden"]); + } + + + /** + * Returns a human-friendly string version of the available theme swatches. + * + * @param string $str the serialized swatch string found in the theme tables "swatches" field. + */ + public static function getThemeSwatchList($str) + { + $swatch_list = array(); + $pairs = explode("|", $str); + foreach ($pairs as $pair) { + list($swatch, $swatch_label) = explode(",", $pair); + $swatch_list[] = General::evalSmartyString($swatch_label); + } + $swatch_list_str = implode(", ", $swatch_list); + + return $swatch_list_str; + } + + + // -------------------------------------------------------------------------------------------- + + + /** + * Helper function to read the theme's info file (theme.php) values. The only REQUIRED + * field if the theme name. If that isn't defined, the theme won't be added to the database. + * + * @param string $summary_file the full file path and filename + */ + private static function getThemeInfoFileContents($summary_file) + { + @include($summary_file); + $vars = get_defined_vars(); + + $info["theme_name"] = isset($vars["theme_name"]) ? $vars["theme_name"] : ""; + $info["theme_author"] = isset($vars["theme_author"]) ? $vars["theme_author"] : ""; + $info["theme_author_email"] = isset($vars["theme_author_email"]) ? $vars["theme_author_email"] : ""; + $info["theme_link"] = isset($vars["theme_link"]) ? $vars["theme_link"] : ""; + $info["theme_description"] = isset($vars["theme_description"]) ? $vars["theme_description"] : ""; + $info["theme_version"] = isset($vars["theme_version"]) ? $vars["theme_version"] : ""; + $info["theme_uses_swatches"] = isset($vars["theme_uses_swatches"]) ? $vars["theme_uses_swatches"] : "no"; + $info["theme_swatches"] = isset($vars["theme_swatches"]) ? $vars["theme_swatches"] : array(); + + return $info; + } + +} diff --git a/global/code/Translations.class.php b/global/code/Translations.class.php new file mode 100644 index 00000000..3f9bd246 --- /dev/null +++ b/global/code/Translations.class.php @@ -0,0 +1,115 @@ +list = $translations->languages; + + // now load the appropriate one. This may be better with an autoloader & converting the lang files to classes. + $lang_file = $lang . ".php"; + include(realpath(__DIR__ . "/../lang/{$lang_file}")); + + if (isset($LANG)) { + $this->L = $LANG; + } + } + + // returns the list of available translations + public function getList() { + return $this->list; + } + + public function getStrings() { + return $this->L; + } + + /** + * Refreshes the list of available language files found in the /global/lang folder. This + * function parses the folder and stores the language info in the "available_languages" + * settings in the settings table. + * + * @return array [0]: true/false (success / failure) + * [1]: message string + */ + public function refreshLanguageList() + { + $LANG = Core::$L; + $root_dir = Core::getRootDir(); + + $language_folder_dir = "$root_dir/global/lang"; + + $available_language_info = array(); + if ($handle = opendir($language_folder_dir)) { + while (false !== ($filename = readdir($handle))) { + if ($filename != '.' && $filename != '..' && $filename != "index.php" && + Files::getFilenameExtension($filename, true) == "php") { + list($lang_file, $lang_display) = $this->getLanguageFileInfo("$language_folder_dir/$filename"); + $available_language_info[$lang_file] = $lang_display; + } + } + closedir($handle); + } + + $available_lang_str = Translations::getLangListAsString($available_language_info); + + Settings::set(array("available_languages" => $available_lang_str), "core"); + Sessions::set("settings.available_languages", $available_lang_str); + + return array(true, $LANG["notify_lang_list_updated"]); + } + + + // expects an hash of the form [[ar] => "Arabic", ...] + public static function getLangListAsString ($list) { + + // sort the languages alphabetically + ksort($list); + + // now piece everything together in a single delimited string + $available_languages = array(); + foreach ($list as $key => $val) { + $available_languages[] = "$key,$val"; + } + + return join("|", $available_languages); + } + + + /** + * Helper function which examines a particular language file and returns the language + * filename (en_us, fr_ca, etc) and the display name ("English (US), French (CA), etc). + * + * @param string $file the full path of the language file + * @return array [0] the language file name
+ * [1] the language display name + */ + private function getLanguageFileInfo($file) + { + @include($file); + + $defined_vars = get_defined_vars(); + $language_display = $defined_vars["LANG"]["special_language_locale"]; + + // now return the filename component, minus the .php + $pathinfo = pathinfo($file); + $lang_file = preg_replace("/\.php$/", "", $pathinfo["basename"]); + + return array($lang_file, $language_display); + } + + + +} diff --git a/global/code/Upgrade.class.php b/global/code/Upgrade.class.php new file mode 100644 index 00000000..a858e26b --- /dev/null +++ b/global/code/Upgrade.class.php @@ -0,0 +1,226 @@ + $last_version_date_in_db) { + + // always re-parse the database to get the latest list of hooks + Hooks::updateAvailableHooks(); + + if (General::isVersionEarlierThan($last_version_in_db, "3.0.1")) { + list ($success, $error_msg) = self::upgradeTo3_0_1(); + self::patchFieldTypeOptionListSettingMapping(); + self::fixEuropeanDateFormat(); + } + + if (General::isVersionEarlierThan($last_version_in_db, "3.0.4")) { + self::addCopySubmissionField(); + } + + if (General::isVersionEarlierThan($last_version_in_db, "3.0.8")) { + Settings::set(array("installation_complete" => "yes"), "core"); + } + + if (General::isVersionEarlierThan($last_version_in_db, "3.0.10")) { + self::addViewMappingViewId(); + self::setCoreFieldsAsNotEditable(); + } + + self::removeModulesTableDescCol(); + self::removeModulesTableModuleKeyCol(); + + FieldTypes::resetFieldTypes(); + + if (General::isVersionEarlierThan($last_version_in_db, "3.0.15")) { + General::createCacheFolder(); + } + + if ($success) { + Settings::set(array( + "release_date" => $current_version_date, + "program_version" => Core::getCoreVersion(), + "release_type" => Core::getReleaseType() + )); + + $is_upgraded = true; + $success = true; + } + } + + return array( + "upgraded" => $is_upgraded, + "success" => $success, + "error_msg" => $error_msg + ); + } + + + /** + * Handles upgrading from FT2 2.2.5, 2.2.6 or 2.2.7 to 3.0.0/3.0.1. + * + * These methods can safely be executed multiple times (but should still only fire once). + */ + private static function upgradeTo3_0_1() + { + $db = Core::$db; + + $success = true; + $error_msg = ""; + try { + $db->query(" + ALTER TABLE {PREFIX}forms CHANGE add_submission_button_label add_submission_button_label VARCHAR(255) + "); + $db->execute(); + + General::deleteColumnIfExists("modules", "is_premium"); + Settings::set(array( + "edit_submission_onload_resources" => Installation::getEditSubmissionOnloadResources() + ), "core"); + + // reset all core field types to their factory defaults + FieldTypes::resetFieldTypes(); + + } catch (Exception $e) { + $success = false; + $error_msg = $e->getMessage(); + } + + return array($success, $error_msg); + } + + + /** + * FT3 alpha/betas were failing to map the ID of the field type setting ID for select/checkboxes/multi-select/radios + * that houses the option list info to the original field. This caused a few minor issues in the UI including + * adding an external form. See: https://github.com/formtools/core/issues/166 (indirect issue) + */ + private static function patchFieldTypeOptionListSettingMapping () + { + $db = Core::$db; + + $field_types = FieldTypes::get(true); + foreach ($field_types as $field_type) { + if (!in_array($field_type["field_type_identifier"], array("dropdown", "multi_select_dropdown", "radio_buttons", "checkboxes"))) { + continue; + } + + // In the original data, the setting that's going to store the option list has a "use_for_option_list_map" + // boolean, but that's not available here. Luckily all 4 of these field types have a field_type value of + // "option_list_or_form_field" so we use that to locate the DB record here + $setting_id = null; + foreach ($field_type["settings"] as $setting_info) { + if ($setting_info["field_type"] == "option_list_or_form_field") { + $setting_id = $setting_info["setting_id"]; + break; + } + } + + $db->query(" + UPDATE {PREFIX}field_types + SET raw_field_type_map_multi_select_id = :raw_field_type_map_multi_select_id + WHERE field_type_id = :field_type_id + "); + $db->bind("raw_field_type_map_multi_select_id", $setting_id); + $db->bind("field_type_id", $field_type["field_type_id"]); + $db->execute(); + } + } + + private static function fixEuropeanDateFormat() + { + $db = Core::$db; + + $db->query(" + UPDATE {PREFIX}field_type_setting_options + SET option_text = '30. 08. 2011', + option_value = 'dd. mm. yy' + WHERE option_text = '30. 08. 2011.' AND option_value = 'dd. mm. yy.' + "); + $db->execute(); + } + + // fix for missing may_copy_submissions DB field in 3.0.3 + public static function addCopySubmissionField() + { + $db = Core::$db; + + if (!General::checkDbTableFieldExists("views", "may_copy_submissions")) { + try { + $db->query(" + ALTER TABLE {PREFIX}views ADD may_copy_submissions ENUM('yes','no') NOT NULL DEFAULT 'no' AFTER may_add_submissions + "); + $db->execute(); + } catch (Exception $e) { + + } + } + } + + // fix for https://github.com/formtools/core/issues/371 + public static function addViewMappingViewId() + { + $db = Core::$db; + + if (!General::checkDbTableFieldExists("email_templates", "view_mapping_view_id")) { + try { + $db->query(" + ALTER TABLE {PREFIX}email_templates + ADD view_mapping_view_id MEDIUMINT(9) AFTER view_mapping_type + "); + $db->execute(); + } catch (Exception $e) { + } + } + } + + public static function setCoreFieldsAsNotEditable() + { + $db = Core::$db; + + try { + $db->query(" + UPDATE {PREFIX}field_types + SET is_editable = 'no', + non_editable_info = '{\$LANG.text_non_deletable_fields}' + WHERE field_type_identifier IN ('textbox', 'textarea', 'password', 'dropdown', 'multi_select_dropdown', + 'radio_buttons', 'checkboxes', 'date', 'time', 'phone', 'code_markup') + "); + $db->execute(); + + $db->query(" + ALTER TABLE {PREFIX}field_types + ADD is_enabled ENUM('yes','no') NOT NULL DEFAULT 'yes' AFTER is_editable + "); + $db->execute(); + + } catch (Exception $e) { + } + } + + public static function removeModulesTableDescCol() + { + General::deleteColumnIfExists("modules", "description"); + } + + public static function removeModulesTableModuleKeyCol() + { + General::deleteColumnIfExists("modules", "module_key"); + } +} + diff --git a/global/code/User.class.php b/global/code/User.class.php new file mode 100644 index 00000000..805c4787 --- /dev/null +++ b/global/code/User.class.php @@ -0,0 +1,439 @@ + + * @package 3-0-x + * @subpackage User + */ + +// ------------------------------------------------------------------------------------------------- + +namespace FormTools; + + +class User +{ + private $lang; + private $isLoggedIn; + private $accountType; + private $accountId; + private $username; + private $email; + private $firstName; + private $lastName; + private $theme; // default from DB + private $swatch; // default from DB + + + /** + * This class is instantiated on every page load through Core::init() and available via Core::$user. A user + * object is always instantiated, even if the user isn't logged in. This provides a consistent interface to + * find out things like what theme, language etc. should be used. + * + * How should this work? We need to store details about the user in sessions (e.g. their ID) but we don't + * want to query the database for the user on each and every page load. So the constructor here relies on checking + * sessions to instantiate the user. + */ + public function __construct() + { + $account_id = Sessions::get("account.account_id"); + + // if the user isn't logged in, set the defaults + if (empty($account_id)) { + $this->isLoggedIn = false; + + $settings = Settings::get(array( + "default_language", + "default_theme", + "default_client_swatch" + )); + $this->lang = $settings["default_language"]; + $this->theme = $settings["default_theme"]; + $this->swatch = $settings["default_client_swatch"]; + } else { + $this->isLoggedIn = true; + $this->accountId = $account_id; + $this->theme = Sessions::get("account.theme"); + $this->swatch = Sessions::get("account.swatch"); + $this->lang = Sessions::get("account.ui_language"); + $this->email = Sessions::get("account.email"); + $this->username = Sessions::get("account.username"); + $this->firstName = Sessions::get("account.first_name"); + $this->lastName = Sessions::get("account.last_name"); + $this->accountType = Sessions::get("account.account_type"); + } + } + + /** + * Logs in administrators and clients. If successful, redirects them to the appropriate page, otherwise returns an + * error. + * + * @param array $info $_POST or $_GET containing both "username" and "password" keys, containing that information + * for the user trying to log in. + * @param boolean $login_as_client [optional] This optional parameter is used by administrators + * to log in as a particular client, allowing them to view how the account looks, + * even if it is disabled. + * @return string error message string (if error occurs). Otherwise it redirects the user to the + * appropriate page, based on account type. + */ + public function login($info, $login_as_client = false) + { + $LANG = Core::$L; + $root_url = Core::getRootUrl(); + + $settings = Settings::get("", "core"); + $username = $info["username"]; + + // administrators can log into client accounts to see what they see. They don't require the client's password + $password = isset($info["password"]) ? $info["password"] : ""; + + // extract info about this user's account + $account_info = Accounts::getAccountByUsername($username); + $account_settings = Accounts::getAccountSettings($account_info["account_id"]); + + if (!$login_as_client) { + if (General::isEmpty($password)) { + return $LANG["validation_no_password"]; + } + if ($account_info["account_status"] == "disabled") { + return $LANG["validation_account_disabled"]; + } + if ($account_info["account_status"] == "pending") { + return $LANG["validation_account_pending"]; + } + if (empty($username)) { + return $LANG["validation_account_not_recognized"]; + } + + $password_correct = General::encode($password) == $account_info["password"]; + $temp_password_correct = General::encode($password) == $account_info["temp_reset_password"]; + + // if this is a client account and the administrator has enabled the maximum failed login attempts feature, + // keep track of the count + if (!$password_correct && !$temp_password_correct) { + + // stores the MAXIMUM number of failed attempts permitted, before the account gets disabled. If the value + // is empty in either the user account or for the default value, that means the administrator doesn't want + // to track the failed login attempts + $max_failed_login_attempts = (isset($account_settings["max_failed_login_attempts"])) ? + $account_settings["max_failed_login_attempts"] : $settings["default_max_failed_login_attempts"]; + + if ($account_info["account_type"] == "client" && !empty($max_failed_login_attempts)) { + $num_failed_login_attempts = (isset($account_settings["num_failed_login_attempts"]) && !empty($account_settings["num_failed_login_attempts"])) ? + $account_settings["num_failed_login_attempts"] : 0; + + $num_failed_login_attempts++; + + if ($num_failed_login_attempts >= $max_failed_login_attempts) { + Clients::disableClient($account_info["account_id"]); + Accounts::setAccountSettings($account_info["account_id"], array("num_failed_login_attempts" => 0)); + return $LANG["validation_account_disabled"]; + } else { + Accounts::setAccountSettings($account_info["account_id"], array("num_failed_login_attempts" => $num_failed_login_attempts)); + } + } + return $LANG["validation_wrong_password"]; + } + } + + extract(Hooks::processHookCalls("main", compact("account_info"), array("account_info")), EXTR_OVERWRITE); + + $account_info["settings"] = $account_settings; + + // all checks out. Log them in, after populating sessions + Sessions::set("settings", $settings); + Sessions::set("account", $account_info); + Sessions::set("account.is_logged_in", true); + + if ($password) { + Sessions::set("account.password", General::encode($password)); + } + + Menus::cacheAccountMenu($account_info["account_id"]); + + // if this is an administrator, ensure the API version is up to date + if ($account_info["account_type"] == "admin") { + General::updateApiVersion(); + } else { + Accounts::setAccountSettings($account_info["account_id"], array("num_failed_login_attempts" => 0)); + } + + // for clients, store the forms & form Views that they are allowed to access + if ($account_info["account_type"] == "client") { + Sessions::set("permissions", Clients::getClientFormViews($account_info["account_id"])); + } + + // if the user just logged in with a temporary password, append some args to pass to the login page + // so that they will be prompted to changing it upon login + $reset_password_args = array(); + if (General::encode($password) == $account_info["temp_reset_password"]) { + $reset_password_args["message"] = "change_temp_password"; + } + + // redirect the user to whatever login page they specified in their settings + $login_url = Pages::constructPageURL($account_info["login_page"], "", $reset_password_args); + $login_url = "$root_url{$login_url}"; + + if (!$login_as_client) { + $this->updateLastLoggedIn($account_info["account_id"]); + } + + General::redirect($login_url); + } + + public function getLang() + { + return $this->lang; + } + + public function setLang($lang) + { + $this->lang = $lang; + } + + public function setTheme($theme) + { + $this->theme = $theme; + } + + public function getTheme() + { + return $this->theme; + } + + public function setSwatch($swatch) + { + $this->swatch = $swatch; + } + + public function getSwatch() + { + return $this->swatch; + } + + public function isLoggedIn() + { + return $this->isLoggedIn; + } + + public function getAccountId() + { + return $this->accountId; + } + + public function getAccountType() + { + return $this->accountType; + } + + public function getUsername() + { + return $this->username; + } + + public function getEmail() + { + return $this->email; + } + + public function getFirstName() + { + return $this->firstName; + } + + public function getLastName() + { + return $this->lastName; + } + + /** + * Updates the last logged in date for the currently logged in user. + * @param $account_id + */ + private function updateLastLoggedIn($account_id) + { + $db = Core::$db; + + $db->query(" + UPDATE {PREFIX}accounts + SET last_logged_in = :now + WHERE account_id = :account_id + "); + $db->bindAll(array( + "now" => General::getCurrentDatetime(), + "account_id" => $account_id + )); + $db->execute(); + } + + /** + * Redirects a logged in user to their login page. + */ + public function redirectToLoginPage() + { + $root_url = Core::getRootUrl(); + $login_page = Sessions::get("account.login_page"); + $page = Pages::constructPageURL($login_page); + General::redirect("{$root_url}$page"); + } + + + /** + * Logs a user out programmatically. This was added in 2.0.0 to replace the logout.php page. It has + * a couple of benefits: (1) it's smart enough to know what page to go when logging out. Formerly, it + * would always redirect to the account's logout URL, but there are situations where that's not always + * desirable - e.g. sessions timeout. (2) it has the option of passing a message flag via the query + * string. + * + * Internally, a user can logout by passing a "?logout" query string to any page in Form Tools. + * + * @param string $message_flag if this value is set, it ALWAYS redirects to the login page, so that the + * message is displayed. If it isn't set, it redirects to the user's custom logout URL (if defined). + */ + public function logout($message_flag = "") + { + $root_url = Core::getRootUrl(); + + extract(Hooks::processHookCalls("main", array(), array())); + + // first, if $_SESSION["ft"]["admin"] is set, it is an administrator logging out, so just redirect them + // back to the admin pages + if (Sessions::exists("admin")) { + Administrator::logoutAsClient(); + } else { + if (!empty($message_flag)) { + // empty sessions, but be nice about it. Only delete the Form Tools namespaced sessions - any other + // PHP scripts the user's running right now should be unaffected + @session_start(); + @session_destroy(); + Sessions::clearAll(); + + // redirect to the login page, passing along the appropriate message flag so the page knows what to display + $logout_url = General::constructUrl($root_url, "message=$message_flag"); + General::redirect($logout_url); + } else { + $logout_url = Sessions::getWithFallback("account.logout_url", ""); + + // empty sessions, but be nice about it. Only delete the Form Tools namespaced sessions - any other + // PHP scripts the user happens to be running right now should be unaffected + @session_start(); + @session_destroy(); + Sessions::clearAll(); + + if (empty($logout_url)) { + $logout_url = $root_url; + } + + // redirect to login page + General::redirect($logout_url); + } + } + } + + public function isAdmin() + { + return $this->accountType == "admin"; + } + + /** + * Verifies the user has permission to view the current page. It is used by feeding the minimum account type to + * view the page - "client", will let administrators and clients view it, but "admin" will only let administrators. + * If the person doesn't have permission to view the page they are logged out. + * + * Should be called on ALL Form Tools pages - including modules. + * + * @param string $account_type The account type - "admin" / "client" / "user" (for Submission Accounts module) + * @param boolean $auto_logout either automatically log the user out if they don't have permission to view the page (or + * sessions have expired), or - if set to false, just return the result as a boolean (true = has permission, + * false = doesn't have permission) + * @return array (if $auto_logout is set to false) + */ + public function checkAuth($required_account_type, $auto_logout = true) + { + $db = Core::$db; + $root_url = Core::getRootUrl(); + + $boot_out_user = false; + $message_flag = ""; + + extract(Hooks::processHookCalls("start", compact("account_type"), array("boot_out_user", "message_flag")), EXTR_OVERWRITE); + + $account_id = $this->accountId; + $account_type = $this->accountType; + + // This will all be refactored when we introduce role-based auth + // ---------------- + // some VERY complex logic here. The "user" account permission type is included so that people logged in + // via the Submission Accounts can still view certain pages, e.g. pages with the Pages module. This checks that + // IF the minimum account type of the page is a "user", it EITHER has the user account info set (i.e. the submission ID) + // or it's a regular client or admin account with the account_id set. Crumby, but it'll have to suffice for now. + if ($this->accountType == "user") { + + if ((!Sessions::exists("account.submission_id") || General::isEmpty(Sessions::get("account.submission_id"))) && + General::isEmpty(Sessions::get("account.account_id"))) { + if ($auto_logout) { + General::redirect("$root_url/modules/submission_accounts/logout.php"); + } else { + $boot_out_user = true; + $message_flag = "notify_no_account_id_in_sessions"; + } + } + } // check the user ID is in sessions + else if (!$account_id || !$account_type) { + $boot_out_user = true; + $message_flag = "notify_no_account_id_in_sessions"; + } else if ($account_type == "client" && $required_account_type == "admin") { + $boot_out_user = true; + $message_flag = "notify_invalid_permissions"; + } else { + $db->query(" + SELECT count(*) as c + FROM {PREFIX}accounts + WHERE account_id = :account_id AND (password = :password OR temp_reset_password = :temp_reset_password) + "); + $db->bindAll(array( + "account_id" => $account_id, + "password" => Sessions::get("account.password"), + "temp_reset_password" => Sessions::get("account.password") + )); + $db->execute(); + $info = $db->fetch(); + + if ($info["c"] != 1) { + $boot_out_user = true; + $message_flag = "notify_invalid_account_information_in_sessions"; + } + } + + if ($boot_out_user && $auto_logout) { + $this->logout($message_flag); + } else { + return array( + "has_permission" => !$boot_out_user, // we invert it because we want to return TRUE if they have permission + "message" => $message_flag + ); + } + } + + public function getAccountPlaceholders() + { + $account_id = $this->getAccountId(); + + $placeholders = array( + "ACCOUNT_ID" => $account_id, + "USERNAME" => $this->getUsername(), + "EMAIL" => $this->getEmail(), + "FIRST_NAME" => $this->getFirstName(), + "LAST_NAME" => $this->getLastName() + ); + + extract(Hooks::processHookCalls("main", compact("placeholders", "account_id"), array("placeholders")), EXTR_OVERWRITE); + + return $placeholders; + } + +} diff --git a/global/code/ViewColumns.class.php b/global/code/ViewColumns.class.php new file mode 100644 index 00000000..43da481d --- /dev/null +++ b/global/code/ViewColumns.class.php @@ -0,0 +1,113 @@ +query(" + SELECT * + FROM {PREFIX}view_columns + WHERE view_id = :view_id + ORDER BY list_order + "); + $db->bind("view_id", $view_id); + $db->execute(); + + return $db->fetchAll(); + } + + + // yuck! $info is a mess + public static function updateViewColumns($view_id, $info) + { + $db = Core::$db; + + // delete the old view columns + ViewColumns::deleteViewColumns($view_id); + + $sortable_id = $info["submission_list_sortable_id"]; + + // if there are no view columns, fine! We've deleted the old ones. Just return + if ($info["{$sortable_id}_sortable__rows"] === "") { + return; + } + + $sortable_rows = explode(",", $info["{$sortable_id}_sortable__rows"]); + + $list_order = 1; + $data = array(); + + foreach ($sortable_rows as $row_id) { + + // if the user didn't select a field for this row, ignore it + if (empty($info["field_id_{$row_id}"])) { + continue; + } + + $field_id = $info["field_id_{$row_id}"]; + $is_sortable = (isset($info["is_sortable_{$row_id}"])) ? "yes" : "no"; + + $custom_width = ""; + if (isset($info["auto_size_{$row_id}"])) { + $auto_size = "yes"; + } else { + $auto_size = "no"; + + // validate the custom width field + if (!isset($info["custom_width_{$row_id}"])) { + $auto_size = "yes"; + } else { + $custom_width = trim($info["custom_width_{$row_id}"]); + if (!is_numeric($custom_width)) { + $auto_size = "yes"; + $custom_width = ""; + } + } + } + + $truncate = $info["truncate_{$row_id}"]; + + $data[] = array( + "view_id" => $view_id, + "field_id" => $field_id, + "list_order" => $list_order, + "is_sortable" => $is_sortable, + "auto_size" => $auto_size, + "custom_width" => $custom_width, + "truncate" => $truncate + ); + $list_order++; + } + + try { + $cols = array("view_id", "field_id", "list_order", "is_sortable", "auto_size", "custom_width", "truncate"); + $db->insertQueryMultiple("view_columns", $cols, $data); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + } + + + public static function deleteViewColumns($view_id) + { + $db = Core::$db; + + $db->query("DELETE FROM {PREFIX}view_columns WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + } +} diff --git a/global/code/ViewFields.class.php b/global/code/ViewFields.class.php new file mode 100644 index 00000000..ae7a90b7 --- /dev/null +++ b/global/code/ViewFields.class.php @@ -0,0 +1,521 @@ + + * @package 3-0-x + * @subpackage ViewFields + */ + + +// ------------------------------------------------------------------------------------------------- + +namespace FormTools; + +use PDO, Exception; + + +class ViewFields +{ + /** + * Returns the View field values from the view_fields table, as well as a few values + * from the corresponding form_fields table. + * + * @param integer $view_id the unique View ID + * @param integer $field_id the unique field ID + * @return array a hash containing the various view field values + */ + public static function getViewField($view_id, $field_id, $custom_params = array()) + { + $db = Core::$db; + + $params = array( + "include_field_settings" => (isset($custom_params["include_field_settings"])) ? $custom_params["include_field_settings"] : false + ); + + $db->query(" + SELECT vf.*, ft.field_title, ft.col_name, ft.field_type_id, ft.field_name + FROM {PREFIX}view_fields vf, {PREFIX}form_fields ft + WHERE view_id = :view_id AND + vf.field_id = ft.field_id AND + vf.field_id = :field_id + "); + $db->bindAll(array( + "view_id" => $view_id, + "field_id" => $field_id + )); + $db->execute(); + + $result = $db->fetch(); + if ($params["include_field_settings"]) { + $result["field_settings"] = Fields::getFormFieldSettings($field_id); + } + + return $result; + } + + + /** + * Returns all fields in a View. + * + * @param integer $view_id the unique View ID + * @return array $info an array of hashes containing the various view field values. + */ + public static function getViewFields($view_id, $custom_params = array()) + { + $db = Core::$db; + + $params = array( + "include_field_settings" => (isset($custom_params["include_field_settings"])) ? $custom_params["include_field_settings"] : false + ); + + $db->query(" + SELECT vf.field_id + FROM {PREFIX}list_groups lg, {PREFIX}view_fields vf + WHERE lg.group_type = :group_type AND + lg.group_id = vf.group_id + ORDER BY lg.list_order ASC, vf.list_order ASC + "); + $db->bind("group_type", "view_fields_$view_id"); + $db->execute(); + + $fields_info = array(); + foreach ($db->fetchAll() as $field_info) { + $field_id = $field_info["field_id"]; + $fields_info[] = ViewFields::getViewField($view_id, $field_id, $params); + } + + return $fields_info; + } + + + /** + * Deletes an specific View field. Called when a field is deleted. + * + * @param integer $view_id + * @param integer $field_id + */ + public static function deleteViewField($view_id, $field_id) + { + $db = Core::$db; + + $db->query("DELETE FROM {PREFIX}view_columns WHERE view_id = :view_id AND field_id = :field_id"); + $db->bindAll(array( + "view_id" => $view_id, + "field_id" => $field_id + )); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}view_filters WHERE view_id = :view_id AND field_id = :field_id"); + $db->bindAll(array( + "view_id" => $view_id, + "field_id" => $field_id + )); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}view_fields WHERE view_id = :view_id AND field_id = :field_id"); + $db->bindAll(array( + "view_id" => $view_id, + "field_id" => $field_id + )); + $db->execute(); + + // now update the view field order to ensure there are no gaps + ViewFields::autoUpdateViewFieldOrder($view_id); + } + + /** + * This function is called any time a form field is deleted, or unassigned to the View. It ensures + * there are no gaps in the view_order + * + * @param integer $view_id + */ + public static function autoUpdateViewFieldOrder($view_id) + { + $db = Core::$db; + + // we rely on this function returning the field by list_order + $view_fields = ViewFields::getViewFields($view_id); + + $count = 1; + foreach ($view_fields as $field_info) { + $field_id = $field_info["field_id"]; + + $db->query(" + UPDATE {PREFIX}view_fields + SET list_order = :list_order + WHERE view_id = :view_id AND + field_id = :field_id + "); + $db->bindAll(array( + "list_order" => $count, + "view_id" => $view_id, + "field_id" => $field_id + )); + $db->execute(); + + $count++; + } + } + + + /** + * Called by the Views::updateView function; updates the field settings of the View. This covers things like + * which fields are included in the view, which appear as a column, which are editable and so on. + * + * @param integer $view_id + * @param array $info + */ + public static function updateViewFields($view_id, $info) + { + $db = Core::$db; + + $sortable_id = $info["view_fields_sortable_id"]; + $grouped_info = explode("~", $info["{$sortable_id}_sortable__rows"]); + $new_groups = explode(",", $info["{$sortable_id}_sortable__new_groups"]); + + // empty the old View fields; we're about to update them + ViewFields::deleteViewFields($view_id); + + // if there are any deleted groups, delete 'em! (N.B. we're not interested in deleted groups + // that were just created in the page + if (isset($info["deleted_groups"]) && !empty($info["deleted_groups"])) { + $deleted_group_ids = explode(",", $info["deleted_groups"]); + foreach ($deleted_group_ids as $group_id) { + if (preg_match("/^NEW/", $group_id)) { + continue; + } + ListGroups::deleteListGroup($group_id); + } + } + + $new_group_order = 1; + foreach ($grouped_info as $curr_grouped_info) { + if (empty($curr_grouped_info)) { + continue; + } + + list($curr_group_id, $ordered_field_ids_str) = explode("|", $curr_grouped_info); + $ordered_field_ids = explode(",", $ordered_field_ids_str); + + $group_name = $info["group_name_{$curr_group_id}"]; + $group_tab = (isset($info["group_tab_{$curr_group_id}"]) && !empty($info["group_tab_{$curr_group_id}"])) ? + $info["group_tab_{$curr_group_id}"] : ""; + + if (preg_match("/^NEW/", $curr_group_id)) { + $db->query(" + INSERT INTO {PREFIX}list_groups (group_type, group_name, custom_data, list_order) + VALUES (:group_type, :group_name, :custom_data, :list_order) + "); + $db->bindAll(array( + "group_type" => "view_fields_{$view_id}", + "group_name" => $group_name, + "custom_data" => $group_tab, + "list_order" => $new_group_order + )); + $db->execute(); + $curr_group_id = $db->getInsertId(); + } else { + $db->query(" + UPDATE {PREFIX}list_groups + SET group_name = :group_name, + custom_data = :custom_data, + list_order = :list_order + WHERE group_id = :group_id + "); + $db->bindAll(array( + "group_name" => $group_name, + "custom_data" => $group_tab, + "list_order" => $new_group_order, + "group_id" => $curr_group_id + )); + $db->execute(); + } + $new_group_order++; + + // if the user unchecked the "Allow fields to be edited" checkbox, nothing is passed for this field + $editable_fields = (isset($info["editable_fields"])) ? $info["editable_fields"] : array(); + $searchable_fields = (isset($info["searchable_fields"])) ? $info["searchable_fields"] : array(); + + $field_order = 1; + foreach ($ordered_field_ids as $field_id) { + if (empty($field_id) || !is_numeric($field_id)) { + continue; + } + $is_editable = (in_array($field_id, $editable_fields)) ? "yes" : "no"; + $is_searchable = (in_array($field_id, $searchable_fields)) ? "yes" : "no"; + $is_new_sort_group = (in_array($field_id, $new_groups)) ? "yes" : "no"; + + $db->query(" + INSERT INTO {PREFIX}view_fields (view_id, field_id, group_id, is_editable, + is_searchable, list_order, is_new_sort_group) + VALUES (:view_id, :field_id, :group_id, :is_editable, :is_searchable, + :list_order, :is_new_sort_group) + "); + $db->bindAll(array( + "view_id" => $view_id, + "field_id" => $field_id, + "group_id" => $curr_group_id, + "is_editable" => $is_editable, + "is_searchable" => $is_searchable, + "list_order" => $field_order, + "is_new_sort_group" => $is_new_sort_group + )); + $db->execute(); + + $field_order++; + } + } + } + + + /** + * This makes a copy of all field groups for a View and returns a hash of old group IDs to new group IDs. + * It's used in the create View functionality when the user wants to base the new View on an existing + * one. + * + * @param integer $source_view_id + * @param integer $target_view_id + * @return array + */ + public static function duplicateViewFieldGroups($source_view_id, $target_view_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}list_groups + WHERE group_type = :group_type + ORDER BY list_order + "); + $db->bind("group_type", "view_fields_{$source_view_id}"); + $db->execute(); + + $map = array(); + foreach ($db->fetchAll() as $row) { + $group_id = $row["group_id"]; + + try { + $db->query(" + INSERT INTO {PREFIX}list_groups (group_type, group_name, custom_data, list_order) + VALUES (:group_type, :group_name, :custom_data, :list_order) + "); + $db->bindAll(array( + "group_type" => "view_fields_{$target_view_id}", + "group_name" => $row["group_name"], + "custom_data" => $row["custom_data"], + "list_order" => $row["list_order"] + )); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $map[$group_id] = $db->getInsertId(); + } + + return $map; + } + + /** + * Return all fields in a View. If this is being on the edit submission page, the second optional + * parameter is used to limit the results to ONLY those groups on the appropriate tab. + * + * @param integer $view_id + * @param integer $tab_number + * @param integer $form_id - this is optional. If this and the next $submission_id param is defined, + * details about the actual form submission is returned as well + * @param integer $submission_id + * @return array + */ + public static function getGroupedViewFields($view_id, $tab_number = "", $form_id = "", $submission_id = "") + { + $db = Core::$db; + + if (!empty($submission_id)) { + $submission_info = Submissions::getSubmissionInfo($form_id, $submission_id); + } + + $tab_clause = (!empty($tab_number)) ? "AND custom_data = $tab_number" : ""; + + $db->query(" + SELECT * + FROM {PREFIX}list_groups + WHERE group_type = :group_type + $tab_clause + ORDER BY list_order + "); + $db->bind("group_type", "view_fields_{$view_id}"); + $db->execute(); + + $grouped_info = array(); + foreach ($db->fetchAll() as $group_info) { + $group_id = $group_info["group_id"]; + + $db->query(" + SELECT *, vf.list_order as list_order, vf.is_new_sort_group as view_field_is_new_sort_group + FROM {PREFIX}view_fields vf, {PREFIX}form_fields ff + WHERE group_id = :group_id AND + vf.field_id = ff.field_id + ORDER BY vf.list_order + "); + $db->bind("group_id", $group_id); + $db->execute(); + + $fields_info = array(); + $field_ids = array(); + foreach ($db->fetchAll() as $row) { + $field_ids[] = $row["field_id"]; + $fields_info[] = $row; + } + + // for efficiency reasons, we just do a single query to find all validation rules for the all relevant fields + $rules_by_field_id = array(); + if (!empty($field_ids)) { + $field_ids_str = implode(",", $field_ids); + $db->query(" + SELECT * + FROM {PREFIX}field_validation fv, {PREFIX}field_type_validation_rules ftvr + WHERE fv.field_id IN ($field_ids_str) AND + fv.rule_id = ftvr.rule_id + "); + $db->execute(); + + foreach ($db->fetchAll() as $rule_info) { + $field_id = $rule_info["field_id"]; + if (!array_key_exists($field_id, $rules_by_field_id)) { + $rules_by_field_id[$field_id]["is_required"] = false; + $rules_by_field_id[$field_id]["rules"] = array(); + } + + $rules_by_field_id[$field_id]["rules"][] = $rule_info; + if ($rule_info["rsv_rule"] == "required" || ($rule_info["rsv_rule"] == "function" && $rule_info["custom_function_required"] == "yes")) { + $rules_by_field_id[$field_id]["is_required"] = true; + } + } + } + + // now merge the original field info with the new validation rules. "required" is a special validation rule: that's + // used to determine whether or not an asterix should appear next to the field. As such, we pass along a + // custom "is_required" key + $updated_field_info = array(); + foreach ($fields_info as $field_info) { + $curr_field_id = $field_info["field_id"]; + $field_info["validation"] = array_key_exists($curr_field_id, $rules_by_field_id) ? $rules_by_field_id[$curr_field_id]["rules"] : array(); + $field_info["is_required"] = array_key_exists($curr_field_id, $rules_by_field_id) ? $rules_by_field_id[$curr_field_id]["is_required"] : false; + $updated_field_info[] = $field_info; + } + $fields_info = $updated_field_info; + + // now, if the submission ID is set it returns an additional submission_value key + if (!empty($field_ids)) { + // do a single query to get a list of ALL settings for any of the field IDs we're dealing with + $field_id_str = implode(",", $field_ids); + $db->query(" + SELECT * + FROM {PREFIX}field_settings + WHERE field_id IN ($field_id_str) + "); + $db->execute(); + + $field_settings = array(); + foreach ($db->fetchAll() as $row) { + $field_id = $row["field_id"]; + if (!array_key_exists($field_id, $field_settings)) { + $field_settings[$field_id] = array(); + } + $field_settings[$field_id][] = array($row["setting_id"] => $row["setting_value"]); + } + + // now append the submission info to the field info that we already have stored + $updated_fields_info = array(); + foreach ($fields_info as $curr_field_info) { + $curr_col_name = $curr_field_info["col_name"]; + $curr_field_id = $curr_field_info["field_id"]; + $curr_field_info["field_settings"] = (array_key_exists($curr_field_id, $field_settings)) ? $field_settings[$curr_field_id] : array(); + + if (!empty($submission_id)) { + $curr_field_info["submission_value"] = $submission_info[$curr_col_name]; + } + $updated_fields_info[] = $curr_field_info; + } + $fields_info = $updated_fields_info; + } + + $grouped_info[] = array( + "group" => $group_info, + "fields" => $fields_info + ); + } + + return $grouped_info; + } + + + /** + * This returns the database column names of all searchable fields in this View. To reduce the number of + * DB queries, this function allows you to pass in all field info to just extract the information from that. + * + * @param integer $view_id optional, but if not supplied, the second $fields parameter is require + * @param array $fields optional, but if not supplied, the first $view_id param is required. This should + * be the $view_info["fields"] key, returned from $view_info = Views::getView($view_id), which contains all + * View field info + * + * @return array an array of searchable database column names + */ + public static function getViewSearchableFields($view_id = "", $fields = array()) + { + if (!empty($view_id) && is_numeric($view_id)) { + $view_info = Views::getView($view_id); + $fields = $view_info["fields"]; + } + $searchable_columns = array(); + foreach ($fields as $field_info) { + if ($field_info["is_searchable"] == "yes") { + $searchable_columns[] = $field_info["col_name"]; + } + } + return $searchable_columns; + } + + + /** + * Helper function to return all editable field IDs in a View. This is used for security purposes + * to ensure that anyone editing a form submission can't hack it and send along fake values for + * fields that don't appear in the form. + * + * @param integer $view_id + * @return array a list of field IDs + */ + public static function getEditableViewFields($view_id) + { + $db = Core::$db; + + $db->query(" + SELECT field_id + FROM {PREFIX}view_fields + WHERE is_editable = 'yes' AND + view_id = :view_id + "); + $db->bind("view_id", $view_id); + $db->execute(); + + return $db->fetchAll(PDO::FETCH_COLUMN); + } + + /** + * Deletes all fields in a view. Note that View fields are *independent* of View columns and filters: a user + * is permitted to add columns or filters for fields that aren't shown in the View. + * @param $view_id + */ + public static function deleteViewFields($view_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}view_fields WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + } +} diff --git a/global/code/ViewFilters.class.php b/global/code/ViewFilters.class.php new file mode 100644 index 00000000..b325dad1 --- /dev/null +++ b/global/code/ViewFilters.class.php @@ -0,0 +1,468 @@ + + * @package 3-0-x + * @subpackage ViewFilters + */ + + +namespace FormTools; + +use Exception; + + +class ViewFilters +{ + + /** + * Retrieves all filters for a View. If you just want the SQL, use ViewFilters::getViewFilterSql instead, which + * returns an array of the SQL needed to query the form table. This function returns all info about the + * filter. + * + * @param integer $client_id The unique user ID + * @param string $filter_type "standard" or "client_map". If left blank (or set to "all") it returns all + * View filters. + * @return array This function returns an array of multi-dimensional arrays of hashes. + * Each index of the main array contains the filters for + */ + public static function getViewFilters($view_id, $filter_type = "all") + { + $db = Core::$db; + + $filter_type_clause = ""; + if ($filter_type == "standard") { + $filter_type_clause = "AND filter_type = 'standard'"; + } else if ($filter_type == "client_map") { + $filter_type_clause = "AND filter_type = 'client_map'"; + } + + $db->query(" + SELECT * + FROM {PREFIX}view_filters + WHERE view_id = :view_id + $filter_type_clause + ORDER BY filter_id + "); + $db->bind("view_id", $view_id); + $db->execute(); + + return $db->fetchAll(); + } + + + public static function deleteViewFilters($view_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}view_filters WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + } + + + /** + * Returns an array of SQL filters for a View. + * + * @param integer $view_id + * @return array + */ + public static function getViewFilterSql($view_id) + { + $db = Core::$db; + + $is_client_account = Sessions::exists("account.account_type") && Sessions::get("account.account_type") == "client"; + + $placeholders = array(); + if ($is_client_account) { + $account_info = Sessions::get("account"); + + // we escape single quotes in the placeholder strings because they're going to be located within single + // quotes, e.g. col_X = 'placeholder value here' + // PDO handles escaping the broader values but not these + $placeholders = array( + "account_id" => str_replace("'", "''", $account_info["account_id"]), + "first_name" => str_replace("'", "''", $account_info["first_name"]), + "last_name" => str_replace("'", "''", $account_info["last_name"]), + "email" => str_replace("'", "''", $account_info["email"]), + "settings__company_name" => str_replace("'", "''", $account_info["settings"]["company_name"]) + ); + } + + extract(Hooks::processHookCalls("start", compact("placeholders", "is_client_account"), array("placeholders", "is_client_account")), EXTR_OVERWRITE); + + $db->query(" + SELECT filter_type, filter_sql + FROM {PREFIX}view_filters + WHERE view_id = :view_id + ORDER BY filter_id + "); + $db->bind("view_id", $view_id); + $db->execute(); + + $infohash = array(); + foreach ($db->fetchAll() as $filter) { + if ($filter["filter_type"] == "standard") { + $infohash[] = $filter["filter_sql"]; + } else { + // if this is a client account, evaluate the Client Map placeholders + if ($is_client_account) { + $infohash[] = General::evalSmartyString($filter["filter_sql"], $placeholders); + } + } + } + + return $infohash; + } + + + /** + * Called by the Views::updateView function; updates the filters assigned to the View. + * + * @param integer $view_id + * @param array $info + * @return array + */ + public static function updateViewFilters($view_id, $info) + { + $LANG = Core::$L; + $debug_enabled = Core::isDebugEnabled(); + + // hmm... weird. + $form_id = $info["form_id"]; + + // delete all old filters for this View. The two update view filter functions that follow re-insert + // the most recent View info + ViewFilters::deleteViewFilters($view_id); + + // get a hash of field_id => col name for use in building the SQL statements + $form_fields = Fields::getFormFields($form_id, array("include_field_type_info" => true)); + $field_columns = array(); + for ($i = 0; $i < count($form_fields); $i++) { + $field_columns[$form_fields[$i]["field_id"]] = array( + "col_name" => $form_fields[$i]["col_name"], + "is_date_field" => $form_fields[$i]["is_date_field"] + ); + } + + $standard_filter_errors = ViewFilters::updateViewStandardFilters($view_id, $info, $field_columns); + $client_map_filter_errors = ViewFilters::updateViewClientMapFilters($view_id, $info, $field_columns); + + if (empty($standard_filter_errors) && empty($client_map_filter_errors)) { + return array(true, $LANG["notify_filters_updated"]); + } else { + $success = false; + $message = $LANG["notify_filters_not_updated"]; + + $errors = array_merge($standard_filter_errors, $client_map_filter_errors); + if ($debug_enabled) { + $rows = array(); + foreach ($errors as $error) { + $rows[] = "•  $error"; + } + $message .= "

" . join("
", $rows); + } + return array($success, $message); + } + } + + + public static function updateViewStandardFilters($view_id, $info, $field_columns) + { + $db = Core::$db; + + // note that we call this MAX_standard_filters, not num_standard_filters. This is because + // the value passed from the page may not be accurate. The JS doesn't reorder everything when + // the user deletes a row, so the value passed is the total number of rows that CAN be passed. Some rows + // may be empty, though + $max_standard_filters = $info["num_standard_filters"]; + $errors = array(); + + // stores the actual number of standard filters added + $num_standard_filters = 0; + + // loop through all standard filters and add each to the database + for ($i = 1; $i <= $max_standard_filters; $i++) { + + // if this filter doesn't have a field specified, just ignore the row + if (!isset($info["standard_filter_{$i}_field_id"]) || empty($info["standard_filter_{$i}_field_id"])) { + continue; + } + + $field_id = $info["standard_filter_{$i}_field_id"]; + $col_name = $field_columns[$field_id]["col_name"]; + + // date fields need special SQL + if ($field_columns[$field_id]["is_date_field"] == "yes") { + $values = $info["standard_filter_{$i}_filter_date_values"]; + $operator = $info["standard_filter_{$i}_operator_date"]; + $sql_operator = ($operator == "after") ? ">" : "<"; + $sql = "$col_name $sql_operator '$values'"; + } else { + $values = $info["standard_filter_{$i}_filter_values"]; + $operator = $info["standard_filter_{$i}_operator"]; + $sql = self::getStandardFilterSql($col_name, $values, $operator); + } + + try { + $db->query(" + INSERT INTO {PREFIX}view_filters (view_id, filter_type, field_id, operator, filter_values, filter_sql) + VALUES (:view_id, 'standard', :field_id, :operator, :filter_values, :filter_sql) + "); + $db->bindAll(array( + "view_id" => $view_id, + "field_id" => $field_id, + "operator" => $operator, + "filter_values" => $values, + "filter_sql" => "($sql)" + )); + $db->execute(); + + $num_standard_filters++; + } catch (Exception $e) { + $errors[] = $e->getMessage(); + } + } + + // keep track of whether this View has a standard filter or not + $has_standard_filter = "no"; + if ($num_standard_filters > 0) { + $has_standard_filter = "yes"; + } + + $db->query("UPDATE {PREFIX}views SET has_standard_filter = :has_standard_filter WHERE view_id = :view_id"); + $db->bindAll(array( + "has_standard_filter" => $has_standard_filter, + "view_id" => $view_id + )); + $db->execute(); + + return $errors; + } + + + public static function updateViewClientMapFilters($view_id, $info, $field_columns) + { + $db = Core::$db; + + // note that we call this MAX_client_map_filters, not num_client_map_filters. This is because + // the value passed from the page may not be accurate. The JS doesn't reorder everything when + // the user deletes a row, so the value passed is the total number of rows that CAN be passed. Some rows + // may be empty, though + $max_client_map_filters = $info["num_client_map_filters"]; + $errors = array(); + + // stores the actual number of client map filters added + $num_client_map_filters = 0; + + // loop through all client map filters and add each to the database + for ($i = 1; $i <= $max_client_map_filters; $i++) { + + // if this filter doesn't have a field or a client field specified, + if (!isset($info["client_map_filter_{$i}_field_id"]) || empty($info["client_map_filter_{$i}_field_id"]) || + !isset($info["client_map_filter_{$i}_client_field"]) || empty($info["client_map_filter_{$i}_client_field"])) { + continue; + } + + $field_id = $info["client_map_filter_{$i}_field_id"]; + $operator = $info["client_map_filter_{$i}_operator"]; + $client_field = $info["client_map_filter_{$i}_client_field"]; + $col_name = $field_columns[$field_id]["col_name"]; + $original_client_field = $client_field; + + $filter_sql = self::getClientMapFilterSql($col_name, $client_field, $operator); + + try { + $db->query(" + INSERT INTO {PREFIX}view_filters (view_id, filter_type, field_id, operator, filter_values, filter_sql) + VALUES (:view_id, 'client_map', :field_id, :operator, :filter_values, :filter_sql) + "); + + $db->bindAll(array( + "view_id" => $view_id, + "field_id" => $field_id, + "operator" => $operator, + "filter_values" => $original_client_field, + "filter_sql" => $filter_sql + )); + $db->execute(); + + $num_client_map_filters++; + } catch (Exception $e) { + $errors[] = $e->getMessage(); + } + } + + // keep track of whether this View has a client map filter or not + $has_client_map_filter = "no"; + if ($num_client_map_filters > 0) { + $has_client_map_filter = "yes"; + } + + $db->query(" + UPDATE {PREFIX}views + SET has_client_map_filter = :has_client_map_filter + WHERE view_id = :view_id + "); + $db->bindAll(array( + "has_client_map_filter" => $has_client_map_filter, + "view_id" => $view_id + )); + $db->execute(); + + return $errors; + } + + + /** + * This update any filter SQL for a single field ID. This is called whenever the administrator changes one or more + * database column names (e.g. using the "Smart Fill" option). It ensures data integrity for the View filters. + * + * @param integer $field_id + * @param array $info + */ + public static function updateFieldFilters($field_id) + { + $db = Core::$db; + + // get any filters that are associated with this field + $db->query("SELECT * FROM {PREFIX}view_filters WHERE field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + $filters = $db->fetchAll(); + + // get the latest form field info + $field_info = Fields::getFormField($field_id, array("include_field_type_info" => true)); + $col_name = $field_info["col_name"]; + + // loop through all of the affected filters & update the SQL + foreach ($filters as $filter_info) { + $filter_type = $filter_info["filter_type"]; + $filter_values = $filter_info["filter_values"]; + $operator = $filter_info["operator"]; + + if ($field_info["is_date_field"] == "yes") { + $sql_operator = ($operator == "after") ? ">" : "<"; + $sql = "$col_name $sql_operator '$filter_values'"; + } else { + if ($filter_type == "standard") { + $sql = self::getStandardFilterSql($col_name, $filter_values, $operator); + } else { + $sql = self::getClientMapFilterSql($col_name, $filter_values, $operator); + } + } + + $db->query(" + UPDATE {PREFIX}view_filters + SET filter_sql = :filter_sql + WHERE filter_id = :filter_id + "); + $db->bindAll(array( + "filter_sql" => "($sql)", + "filter_id" => $filter_info["filter_id"] + )); + $db->execute(); + } + } + + + private static function getStandardFilterSql($col_name, $values, $operator) + { + if ($operator == "equals") { + $sql_operator = "="; + $null_test = "IS NULL"; + $join = " OR "; + } else if ($operator == "not_equals") { + $sql_operator = "!="; + $null_test = "IS NOT NULL"; + $join = " AND "; + } else if ($operator == "like") { + $sql_operator = "LIKE"; + $null_test = "IS NULL"; + $join = " OR "; + } else { // not_like + $sql_operator = "NOT LIKE"; + $null_test = "IS NOT NULL"; + $join = " AND "; + } + + $sql_statements_arr = array(); + $values_arr = explode("|", $values); + + foreach ($values_arr as $value) { + + // if this is a LIKE operator (not_like, like), wrap the value in %..% + $escaped_value = str_replace("'", "''", $value); + if ($operator == "like" || $operator == "not_like") { + $escaped_value = "%$escaped_value%"; + } + + $trimmed_value = trim($value); + + // NOT LIKE and != need to be handled separately. By default, Form Tools sets new blank field values to NULL. + // But SQL queries that test for != "Yes" or NOT LIKE "Yes" should intuitively return ALL results without + // "Yes" - and that includes NULL values. So, we need to add an additional check to also return null values + if ($operator == "not_like" || $operator == "not_equals") { + // empty string being searched AGAINST; i.e. checking the field is NOT empty or LIKE empty + if (empty($trimmed_value)) { + $sql_statements_arr[] = "($col_name $sql_operator '$escaped_value' AND $col_name IS NOT NULL)"; + } else { + $sql_statements_arr[] = "($col_name $sql_operator '$escaped_value' OR $col_name IS NULL)"; + } + } else { + // if the value is EMPTY, we need to add an additional IS NULL / IS NOT NULL check + if (empty($trimmed_value)) { + $sql_statements_arr[] = "($col_name $sql_operator '$escaped_value' OR $col_name $null_test)"; + } else { + $sql_statements_arr[] = "($col_name $sql_operator '$escaped_value')"; + } + } + } + + return implode($join, $sql_statements_arr); + } + + + private static function getClientMapFilterSql($col_name, $client_field, $operator) + { + $map = array( + "equals" => "=", + "not_equals" => "!=", + "like" => "LIKE", + "not_like" => "NOT LIKE" + ); + + // should never occur + if (!array_key_exists($operator, $map)) { + return ""; + } + + $sql_operator = $map[$operator]; + + // now we're going to build the actual SQL query that contains the Smarty placeholders for the account info. + // first, convert the client field name to a Smarty variable + $sql_client_field = "{\$$client_field}"; + + // second, if this is a LIKE operator (not_like, like), wrap the value even further with a %...% + if ($operator == "like" || $operator == "not_like") { + $sql_client_field = "%$sql_client_field%"; + } + + // no escaping is needed, note + return "($col_name $sql_operator '$sql_client_field')"; + } + +} diff --git a/global/code/ViewTabs.class.php b/global/code/ViewTabs.class.php new file mode 100644 index 00000000..51f4c09e --- /dev/null +++ b/global/code/ViewTabs.class.php @@ -0,0 +1,126 @@ +query(" + SELECT * + FROM {PREFIX}view_tabs + WHERE view_id = :view_id + ORDER BY tab_number + "); + $db->bind("view_id", $view_id); + $db->execute(); + + $tab_info = array(); + foreach ($db->fetchAll() as $row) { + if ($return_non_empty_tabs_only && empty($row["tab_label"])) { + continue; + } + $tab_info[$row["tab_number"]] = array("tab_label" => $row["tab_label"]); + } + + extract(Hooks::processHookCalls("end", compact("view_id", "tab_info"), array("tab_info")), EXTR_OVERWRITE); + + return $tab_info; + } + + + public static function deleteViewTabs($view_id) { + $db = Core::$db; + + $db->query("DELETE FROM {PREFIX}view_tabs WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + } + + + /** + * Verbose name, but this function returns a hash of group_id => tab number for a particular View. In + * other words, it looks at the View field groups to find out which tab each one belongs to. + * + * @return array + */ + public static function getViewFieldGroupTabs($view_id) + { + $db = Core::$db; + + $db->query(" + SELECT group_id, custom_data + FROM {PREFIX}list_groups + WHERE group_type = :group_type + "); + $db->bind("group_type", "view_fields_{$view_id}"); + $db->execute(); + + $map = array(); + foreach ($db->fetchAll() as $row) { + $map[$row["group_id"]] = $row["custom_data"]; + } + + return $map; + } + + + /** + * Called by the Views::updateView function; updates the tabs available in the View. + * + * @param integer $view_id + * @param array $info + * @return array [0]: true/false (success / failure) + * [1]: message string + */ + public static function updateViewTabs($view_id, $info) + { + $db = Core::$db; + + for ($i=1; $i<=6; $i++) { + $db->query("UPDATE {PREFIX}view_tabs SET tab_label = :tab_label WHERE view_id = :view_id AND tab_number = :tab_number"); + $db->bindAll(array( + "tab_label" => $info["tabs"][$i-1], + "view_id" => $view_id, + "tab_number" => $i + )); + $db->execute(); + } + + return array(true, Core::$L["notify_form_tabs_updated"]); + } + + + public static function addDefaultTabs($view_id) + { + $tab_labels = array(Core::$L["phrase_default_tab_label"], "", "", "", "", ""); + ViewTabs::addTabs($view_id, $tab_labels); + } + + + public static function addTabs($view_id, $tab_labels) { + $db = Core::$db; + + for ($i=0; $i<6; $i++) { + $db->query("INSERT INTO {PREFIX}view_tabs (view_id, tab_number, tab_label) VALUES (:view_id, :tab_number, :tab_label)"); + $db->bindAll(array( + "tab_label" => $tab_labels[$i], + "view_id" => $view_id, + "tab_number" => ($i+1) + )); + $db->execute(); + } + } +} diff --git a/global/code/Views.class.php b/global/code/Views.class.php new file mode 100644 index 00000000..3e609cd6 --- /dev/null +++ b/global/code/Views.class.php @@ -0,0 +1,1295 @@ + + * @package 3-0-x + * @subpackage Views + */ + +// ------------------------------------------------------------------------------------------------- + +namespace FormTools; + +use PDO, Exception; + + +class Views +{ + /** + * Retrieves a list of all views for a form. As of 2.0.5 this function now always returns ALL Views, + * instead of the option of a single page. + * + * @param integer $form_id the unique form ID + * @return array a hash of view information + */ + public static function getViews($form_id) + { + $db = Core::$db; + + $db->query(" + SELECT view_id + FROM {PREFIX}views + WHERE form_id = :form_id + ORDER BY view_order + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $view_info = array(); + foreach ($db->fetchAll() as $row) { + $view_id = $row["view_id"]; + $view_info[] = Views::getView($view_id); + } + + $return_hash = array( + "results" => $view_info, + "num_results" => count($view_info) + ); + + extract(Hooks::processHookCalls("end", compact("return_hash"), array("return_hash")), EXTR_OVERWRITE); + + return $return_hash; + } + + + /** + * A simple, fast, no-frills function to return an array of all View IDs for a form. If you need it ordered, + * include the second parameter. The second param makes it slower, so only use when needed. + * + * @param integer $form_id + * @param boolean $order_results whether or not the results should be ordered. If so, it orders by view group, + * then view_order. + * @return array + */ + public static function getViewIds($form_id, $order_results = false) + { + $db = Core::$db; + + if ($order_results) { + $db->query(" + SELECT view_id + FROM {PREFIX}views v, {PREFIX}list_groups lg + WHERE v.group_id = lg.group_id AND + form_id = :form_id + ORDER BY lg.list_order, v.view_order + "); + } else { + $db->query("SELECT view_id FROM {PREFIX}views WHERE form_id = :form_id"); + } + $db->bind("form_id", $form_id); + $db->execute(); + + $view_ids = $db->fetchAll(PDO::FETCH_COLUMN); + + extract(Hooks::processHookCalls("end", compact("view_ids"), array("view_ids")), EXTR_OVERWRITE); + + return $view_ids; + } + + + /** + * Creates a new form View. If the $view_id parameter is set, it makes a copy of that View. + * Otherwise, it creates a new blank view has *all* fields associated with it by default, a single tab + * that is not enabled by default, no filters, and no clients assigned to it. + * + * @param integer $form_id the unique form ID + * @param integer $group_id the view group ID that we're adding this View to + * @param integer $create_from_view_id (optional) either the ID of the View from which to base this new View on, + * or "blank_view_no_fields" or "blank_view_all_fields" + * @return integer the new view ID + */ + public static function createView($form_id, $group_id, $view_name = "", $create_from_view_id = "") + { + $db = Core::$db; + $LANG = Core::$L; + + // figure out the next View order number + $db->query("SELECT count(*) as c FROM {PREFIX}views WHERE form_id = :form_id"); + $db->bind("form_id", $form_id); + $db->execute(); + + $count_hash = $db->fetch(); + $num_form_views = $count_hash["c"]; + $next_order = $num_form_views + 1; + $view_name = (empty($view_name)) ? $LANG["phrase_new_view"] : $view_name; + + if (empty($create_from_view_id) || $create_from_view_id == "blank_view_no_fields" || $create_from_view_id == "blank_view_all_fields") { + // add the View with default values + $db->query(" + INSERT INTO {PREFIX}views (form_id, view_name, view_order, is_new_sort_group, group_id) + VALUES (:form_id, :view_name, :view_order, 'yes', :group_id) + "); + $db->bindAll(array( + "form_id" => $form_id, + "view_name" => $view_name, + "view_order" => $next_order, + "group_id" => $group_id + )); + $db->execute(); + $view_id = $db->getInsertId(); + + // add the default tab + ViewTabs::addDefaultTabs($view_id); + + if (empty($create_from_view_id) || $create_from_view_id == "blank_view_all_fields") { + Views::populateNewViewFields($form_id, $view_id); + } + } else { + $view_info = Views::getView($create_from_view_id); + + // Main View Settings + $db->query(" + INSERT INTO {PREFIX}views (form_id, access_type, view_name, view_order, is_new_sort_group, group_id, + num_submissions_per_page, default_sort_field, default_sort_field_order, may_add_submissions, may_edit_submissions, + may_delete_submissions, has_client_map_filter, has_standard_filter) + VALUES (:form_id, :access_type, :view_name, :view_order, 'yes', :group_id, :num_submissions_per_page, + :default_sort_field, :default_sort_field_order, :may_add_submissions, :may_edit_submissions, + :may_delete_submissions, :has_client_map_filter, :has_standard_filter) + "); + $db->bindAll(array( + "form_id" => $form_id, + "access_type" => $view_info["access_type"], + "view_name" => $view_name, + "view_order" => $next_order, + "group_id" => $group_id, + "num_submissions_per_page" => $view_info["num_submissions_per_page"], + "default_sort_field" => $view_info["default_sort_field"], + "default_sort_field_order" => $view_info["default_sort_field_order"], + "may_add_submissions" => $view_info["may_add_submissions"], + "may_edit_submissions" => $view_info["may_edit_submissions"], + "may_delete_submissions" => $view_info["may_delete_submissions"], + "has_client_map_filter" => $view_info["has_client_map_filter"], + "has_standard_filter" => $view_info["has_standard_filter"] + )); + $db->execute(); + $view_id = $db->getInsertId(); + + foreach ($view_info["client_info"] as $client_info) { + $account_id = $client_info["account_id"]; + $db->query("INSERT INTO {PREFIX}client_views (account_id, view_id) VALUES ($account_id, $view_id)"); + } + + // View Tabs + $tab_labels = array(); + for ($i=1; $i<=6; $i++) { + $tab_labels[] = $view_info["tabs"][$i]["tab_label"]; + } + ViewTabs::addTabs($view_id, $tab_labels); + + // with 2.1.0, all View fields are now grouped. We need to duplicate all the groups as well as the fields + $group_id_map = ViewFields::duplicateViewFieldGroups($create_from_view_id, $view_id); + + $field_view_inserts = array(); + foreach ($view_info["fields"] as $field_info) { + $field_id = $field_info["field_id"]; + $new_group_id = $group_id_map[$field_info["group_id"]]; + $is_editable = $field_info["is_editable"]; + $is_searchable = $field_info["is_searchable"]; + $list_order = $field_info["list_order"]; + $is_new_sort_group = $field_info["is_new_sort_group"]; + $field_view_inserts[] = "($view_id, $field_id, $new_group_id, '$is_editable', '$is_searchable', $list_order, '$is_new_sort_group')"; + } + + if (!empty($field_view_inserts)) { + $field_view_inserts_str = implode(",\n", $field_view_inserts); + $db->query(" + INSERT INTO {PREFIX}view_fields (view_id, field_id, group_id, is_editable, is_searchable, list_order, is_new_sort_group) + VALUES $field_view_inserts_str + "); + $db->execute(); + } + + $view_column_inserts = array(); + foreach ($view_info["columns"] as $field_info) { + $field_id = $field_info["field_id"]; + $list_order = $field_info["list_order"]; + $is_sortable = $field_info["is_sortable"]; + $auto_size = $field_info["auto_size"]; + $custom_width = $field_info["custom_width"]; + $truncate = $field_info["truncate"]; + $view_column_inserts[] = "($view_id, $field_id, $list_order, '$is_sortable', '$auto_size', '$custom_width', '$truncate')"; + } + + if (!empty($view_column_inserts)) { + $view_column_insert_str = implode(",\n", $view_column_inserts); + $db->query(" + INSERT INTO {PREFIX}view_columns (view_id, field_id, list_order, is_sortable, auto_size, custom_width, truncate) + VALUES $view_column_insert_str + "); + $db->execute(); + } + + // View Filters + foreach ($view_info["filters"] as $filter_info) { + $db->query(" + INSERT INTO {PREFIX}view_filters (view_id, filter_type, field_id, operator, filter_values, filter_sql) + VALUES (:view_id, :filter_type, :field_id, :operator, :filter_values, :filter_sql) + "); + $db->bindAll(array( + "view_id" => $view_id, + "filter_type" => $filter_info["filter_type"], + "field_id" => $filter_info["field_id"], + "operator" => $filter_info["operator"], + "filter_values" => $filter_info["filter_values"], + "filter_sql" => $filter_info["filter_sql"] + )); + $db->execute(); + } + + // default submission values + $submission_defaults = Views::getNewViewSubmissionDefaults($create_from_view_id); + foreach ($submission_defaults as $row) { + $db->query(" + INSERT INTO {PREFIX}new_view_submission_defaults (view_id, field_id, default_value, list_order) + VALUES (:view_id, :field_id, :default_value, :list_order) + "); + $db->bindAll(array( + "view_id" => $view_id, + "field_id" => $row["field_id"], + "default_value" => $row["default_value"], + "list_order" => $row["list_order"] + )); + $db->execute(); + } + + // public View omit list + $client_ids = Views::getPublicViewOmitList($create_from_view_id); + foreach ($client_ids as $client_id) { + $db->query(" + INSERT INTO {PREFIX}public_view_omit_list (view_id, account_id) + VALUES (:view_id, :client_id) + "); + $db->bindAll(array( + "view_id" => $view_id, + "client_id" => $client_id + )); + $db->execute(); + } + } + + extract(Hooks::processHookCalls("end", compact("view_id"), array()), EXTR_OVERWRITE); + + return $view_id; + } + + + /** + * Finds out what Views are associated with a particular form field. Used when deleting a field. + * + * @param integer $field_id + * @return array $view_ids + */ + public static function getFieldViews($field_id) + { + $db = Core::$db; + + $db->query("SELECT view_id FROM {PREFIX}view_fields WHERE field_id = :field_id"); + $db->bind("field_id", $field_id); + $db->execute(); + + return $db->fetchAll(); + } + + + /** + * This is called by the administrator on the main Views tab. It lets them delete an entire group of Views + * in one go. + * + * @param integer $group_id + */ + public static function deleteViewGroup($group_id) + { + $db = Core::$db; + $LANG = Core::$L; + + $db->query(" + SELECT view_id + FROM {PREFIX}views + WHERE group_id = :group_id + "); + $db->bind("group_id", $group_id); + $db->execute(); + + foreach ($db->fetchAll(PDO::FETCH_COLUMN) as $view_id) { + Views::deleteView($view_id); + } + + // next, delete the group + ListGroups::deleteListGroup($group_id); + + // TODO: should update order of other View groups + + return array(true, $LANG["notify_view_group_deleted"]); + } + + + /** + * Deletes a View and updates the list order of the Views in the same View group. + * + * @param integer $view_id the unique view ID + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function deleteView($view_id) + { + $db = Core::$db; + $LANG = Core::$L; + + Views::deleteClientViews($view_id); + ViewTabs::deleteViewTabs($view_id); + ViewFields::deleteViewFields($view_id); + ViewFilters::deleteViewFilters($view_id); + ViewColumns::deleteViewColumns($view_id); + Views::deletePublicViewOmitList($view_id); + ListGroups::deleteByGroupType("view_fields_$view_id"); + + $db->query("DELETE FROM {PREFIX}email_template_edit_submission_views WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}email_template_when_sent_views WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}new_view_submission_defaults WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + + $db->query("DELETE FROM {PREFIX}views WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + + // hmm... This should be handled better: the user needs to be notified prior to deleting a View to describe + // all the dependencies + $db->query(" + UPDATE {PREFIX}email_templates + SET limit_email_content_to_fields_in_view = NULL + WHERE limit_email_content_to_fields_in_view = :view_id + "); + $db->bind("view_id", $view_id); + $db->execute(); + + $success = true; + $message = $LANG["notify_view_deleted"]; + extract(Hooks::processHookCalls("end", compact("view_id"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + public static function deletePublicViewOmitList($view_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}public_view_omit_list WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + } + + + /** + * @param $view_id + */ + public static function deleteClientViews($view_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}client_views WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + + Views::deletePublicViewOmitList($view_id); + } + + + public static function deleteClientViewsByAccountId($account_id) + { + $db = Core::$db; + $db->query("DELETE FROM {PREFIX}client_views WHERE account_id = :account_id"); + $db->bind("account_id", $account_id); + $db->execute(); + } + + public static function deleteClientViewsByFormId($form_id) + { + $view_ids = Views::getViewIds($form_id); + foreach ($view_ids as $view_id) { + Views::deleteClientViews($view_id); + } + } + + /** + * Called by the administrator only. Updates the list of clients on a public View's omit list. + * + * @param array $info + * @param integer $view_id + * @return array [0] T/F, [1] message + */ + public static function updatePublicViewOmitList($info, $view_id) + { + $db = Core::$db; + $LANG = Core::$L; + + Views::deletePublicViewOmitList($view_id); + + $client_ids = (isset($info["selected_client_ids"])) ? $info["selected_client_ids"] : array(); + foreach ($client_ids as $account_id) { + $db->query("INSERT INTO {PREFIX}public_view_omit_list (view_id, account_id) VALUES (:view_id, :account_id)"); + $db->bindAll(array( + "view_id" => $view_id, + "account_id" => $account_id + )); + $db->execute(); + } + + return array(true, $LANG["notify_public_view_omit_list_updated"]); + } + + + /** + * Caches the total number of (finalized) submissions in a particular form - or all forms - + * in the $_SESSION["ft"]["form_{$form_id}_num_submissions"] key. That value is used on the administrators + * main Forms page to list the form submission count. + * + * @param integer $form_id + */ + public static function cacheViewStats($form_id, $view_id = "") + { + $db = Core::$db; + + $view_ids = array(); + if (empty($view_id)) { + $view_ids = Views::getViewIds($form_id); + } else { + $view_ids[] = $view_id; + } + + foreach ($view_ids as $view_id) { + $filters = ViewFilters::getViewFilterSql($view_id); + + // if there aren't any filters, just set the submission count & first submission date to the same + // as the parent form + if (empty($filters)) { + Sessions::set("view_{$view_id}_num_submissions", Sessions::get("form_{$form_id}_num_submissions")); + } else { + $filter_clause = join(" AND ", $filters); + + try { + $db->query(" + SELECT count(*) as c + FROM {PREFIX}form_$form_id + WHERE is_finalized = 'yes' AND + $filter_clause + "); + $db->execute(); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $info = $db->fetch(); + Sessions::set("view_{$view_id}_num_submissions", $info["c"]); + } + } + } + + + /** + * A very simple getter function that retrieves an an ordered array of view_id => view name hashes for a + * particular form. + * + * @param integer $form_id + * @return array + */ + public static function getViewList($form_id) + { + $db = Core::$db; + + try { + $db->query(" + SELECT view_id, view_name + FROM {PREFIX}views + WHERE form_id = $form_id + ORDER BY view_order + "); + } catch (Exception $e) { + Errors::queryError(__CLASS__, __FILE__, __LINE__, $e->getMessage()); + exit; + } + + $result = $db->fetchAll(); + + extract(Hooks::processHookCalls("end", compact("form_id", "result"), array("result")), EXTR_OVERWRITE); + + return $result; + } + + + /** + * Used internally. This is called to figure out which View should be used by default. It actually + * just picks the first on in the list of Views. + * + * @param integer $form_id + * @return mixed $view_id the View ID or the empty string if no Views associated with form. + */ + public static function getDefaultView($form_id) + { + $db = Core::$db; + + $db->query(" + SELECT view_id + FROM {PREFIX}views + WHERE form_id = :form_id + ORDER BY view_order + LIMIT 1 + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $view_id = ""; + $view_info = $db->fetch(); + + if (!empty($view_info)) { + $view_id = $view_info["view_id"]; + } + + return $view_id; + } + + + /** + * This feature was added in 2.1.0 - it lets administrators define default values for all new submissions + * created with the View. This was added to solve a problem where submissions were created in a View where + * that new submission wouldn't meet the criteria for inclusion. But beyond that, this is a handy feature to + * cut down on configuration time for new data sets. + * + * N.B. The Submission Pre-Parser relies heavily on this method and the format of the data returned, so + * if refactoring check that too. + * + * @param $view_id + * @return array + */ + public static function getNewViewSubmissionDefaults($view_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}new_view_submission_defaults + WHERE view_id = :view_id + ORDER BY list_order + "); + $db->bind("view_id", $view_id); + $db->execute(); + + $results = $db->fetchAll(); + + extract(Hooks::processHookCalls("end", compact("results", "view_id"), array("results")), EXTR_OVERWRITE); + + return $results; + } + + + /** + * Returns a list of all clients associated with a particular View. + * + * @param integer $view_id the unique View ID + * @return array $info an array of arrays, each containing the user information. + */ + public static function getViewClients($view_id) + { + $db = Core::$db; + + $db->query(" + SELECT * + FROM {PREFIX}client_views cv, {PREFIX}accounts a + WHERE cv.view_id = :view_id + AND cv.account_id = a.account_id + "); + $db->bind("view_id", $view_id); + $db->execute(); + + $account_info = $db->fetchAll(); + + extract(Hooks::processHookCalls("end", compact("account_info"), array("account_info")), EXTR_OVERWRITE); + + return $account_info; + } + + + /** + * Called by administrators on the main View tab. This updates the orders and the grouping of the all form Views. + * + * @param integer $form_id the form ID + * @param array $info the form contents + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function updateViews($info) + { + $db = Core::$db; + $LANG = Core::$L; + + $sortable_id = $info["sortable_id"]; + $grouped_info = explode("~", $info["{$sortable_id}_sortable__rows"]); + $new_groups = explode(",", $info["{$sortable_id}_sortable__new_groups"]); + + $new_group_order = 1; + foreach ($grouped_info as $curr_grouped_info) { + list($curr_group_id, $ordered_view_ids_str) = explode("|", $curr_grouped_info); + $ordered_view_ids = explode(",", $ordered_view_ids_str); + $group_name = $info["group_name_{$curr_group_id}"]; + + $db->query(" + UPDATE {PREFIX}list_groups + SET group_name = :group_name, + list_order = :list_order + WHERE group_id = :group_id + "); + $db->bindAll(array( + "group_name" => $group_name, + "list_order" => $new_group_order, + "group_id" => $curr_group_id + )); + $db->execute(); + + $new_group_order++; + + $order = 1; + foreach ($ordered_view_ids as $view_id) { + $is_new_sort_group = (in_array($view_id, $new_groups)) ? "yes" : "no"; + $db->query(" + UPDATE {PREFIX}views + SET view_order = :view_order, + group_id = :group_id, + is_new_sort_group = :is_new_sort_group + WHERE view_id = :view_id + "); + $db->bindAll(array( + "view_order" => $order, + "group_id" => $curr_group_id, + "is_new_sort_group" => $is_new_sort_group, + "view_id" => $view_id + )); + $db->execute(); + + $order++; + } + } + + // return success + return array(true, $LANG["notify_form_views_updated"]); + } + + + /** + * Updates a single View, called from the Edit View page. This function updates all aspects of the + * View from the overall settings, field list and custom filters. + * + * @param integer $view_id the unique View ID + * @param array $infohash a hash containing the contents of the Edit View page + * @return array Returns array with indexes:
+ * [0]: true/false (success / failure)
+ * [1]: message string
+ */ + public static function updateView($view_id, $info) + { + // update each of the tabs + Views::updateViewMainSettings($view_id, $info); + + // remember! View cols & filters are independent of View fields, i.e. the user can choose to apply a filter + // to a field that isn't shown in the View. Same as show a different column. + ViewColumns::updateViewColumns($view_id, $info); + ViewFields::updateViewFields($view_id, $info); + ViewTabs::updateViewTabs($view_id, $info); + ViewFilters::updateViewFilters($view_id, $info); + + $success = true; + $message = Core::$L["notify_view_updated"]; + extract(Hooks::processHookCalls("end", compact("view_id", "info"), array("success", "message")), EXTR_OVERWRITE); + + return array($success, $message); + } + + + + /** + * Called by the Views::updateView function; updates the main settings of the View (found on the + * first tab). Also updates the may_edit_submissions setting found on the second tab. + * + * @param integer $view_id + * @param array $info + */ + public static function updateViewMainSettings($view_id, $info) + { + $db = Core::$db; + + $view_name = $info["view_name"]; + + $num_submissions_per_page = isset($info["num_submissions_per_page"]) ? $info["num_submissions_per_page"] : 10; + $default_sort_field = $info["default_sort_field"]; + $default_sort_field_order = $info["default_sort_field_order"]; + $access_type = $info["access_type"]; + $may_add_submissions = $info["may_add_submissions"]; + $may_copy_submissions = $info["may_copy_submissions"]; + $may_edit_submissions = isset($info["may_edit_submissions"]) ? "yes" : "no"; // (checkbox field) + $may_delete_submissions = $info["may_delete_submissions"]; + + // do a little error checking on the num submissions field. If it's invalid, just set to to 10 without + // informing them - it's not really necessary, I don't think + if (!is_numeric($num_submissions_per_page)) { + $num_submissions_per_page = 10; + } + + $db->query(" + UPDATE {PREFIX}views + SET access_type = :access_type, + view_name = :view_name, + num_submissions_per_page = :num_submissions_per_page, + default_sort_field = :default_sort_field, + default_sort_field_order = :default_sort_field_order, + may_add_submissions = :may_add_submissions, + may_copy_submissions = :may_copy_submissions, + may_edit_submissions = :may_edit_submissions, + may_delete_submissions = :may_delete_submissions + WHERE view_id = :view_id + "); + $db->bindAll(array( + "access_type" => $access_type, + "view_name" => $view_name, + "num_submissions_per_page" => $num_submissions_per_page, + "default_sort_field" => $default_sort_field, + "default_sort_field_order" => $default_sort_field_order, + "may_add_submissions" => $may_add_submissions, + "may_copy_submissions" => $may_copy_submissions, + "may_edit_submissions" => $may_edit_submissions, + "may_delete_submissions" => $may_delete_submissions, + "view_id" => $view_id + )); + $db->execute(); + + + switch ($access_type) { + case "admin": + Views::deleteClientViews($view_id); + Views::deletePublicViewOmitList($view_id); + break; + + case "public": + Views::deleteClientViews($view_id); + break; + + case "private": + $selected_user_ids = isset($info["selected_user_ids"]) ? $info["selected_user_ids"] : array(); + Views::deleteClientViews($view_id); + foreach ($selected_user_ids as $client_id) { + $db->query("INSERT INTO {PREFIX}client_views (account_id, view_id) VALUES (:account_id, :view_id)"); + $db->bindAll(array( + "account_id" => $client_id, + "view_id" => $view_id + )); + $db->execute(); + } + + Views::deletePublicViewOmitList($view_id); + break; + + case "hidden": + Views::deleteClientViews($view_id); + Views::deletePublicViewOmitList($view_id); + break; + } + + // lastly, add in any default values for new submissions + $db->query("DELETE FROM {PREFIX}new_view_submission_defaults WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + + if (!empty($info["new_submissions"]) && $may_add_submissions == "yes") { + $default_values = array_combine($info["new_submissions"], $info["new_submissions_vals"]); + + $order = 1; + foreach ($default_values as $field_id => $value) { + $db->query(" + INSERT INTO {PREFIX}new_view_submission_defaults (view_id, field_id, default_value, list_order) + VALUES (:view_id, :field_id, :default_value, :list_order) + "); + $db->bindAll(array( + "view_id" => $view_id, + "field_id" => $field_id, + "default_value" => $value, + "list_order" => $order + )); + $db->execute(); + + $order++; + } + } + } + + + /** + * This checks to see if a View exists in the database. + * + * @param integer $view_id + * @param boolean + * @return boolean + */ + public static function checkViewExists($view_id, $ignore_hidden_views = false) + { + $db = Core::$db; + + $view_clause = ($ignore_hidden_views) ? " AND access_type != 'hidden' " : ""; + + $db->query(" + SELECT count(*) as c + FROM {PREFIX}views + WHERE view_id = :view_id + $view_clause + "); + $db->bind("view_id", $view_id); + $db->execute(); + + $results = $db->fetch(); + + return $results["c"] > 0; + } + + + + /** + * Returns an ordered hash of view_id => view name, for a particular form. NOT paginated. If the + * second account ID is left blank, it's assumed that this is an administrator account doing the + * calling, and all Views are returned. + * + * @param integer $form_id the unique form ID + * @param integer $user_id the unique user ID (or empty, for administrators) + * @return array an ordered hash of view_id => view name + */ + public static function getFormViews($form_id, $account_id = "") + { + $db = Core::$db; + + $view_hash = array(); + + if (!empty($account_id)) { + $db->query(" + SELECT v.* + FROM {PREFIX}views v, {PREFIX}list_groups lg + WHERE v.form_id = :form_id AND + v.group_id = lg.group_id AND + (v.access_type = 'public' OR + v.view_id IN (SELECT cv.view_id FROM {PREFIX}client_views cv WHERE account_id = :account_id)) + ORDER BY lg.list_order, v.view_order + "); + $db->bindAll(array( + "form_id" => $form_id, + "account_id" => $account_id + )); + $db->execute(); + + // now run through the omit list, just to confirm this client isn't on it! + foreach ($db->fetchAll() as $row) { + $view_id = $row["view_id"]; + + if ($row["access_type"] == "public") { + $omit_list = Views::getPublicViewOmitList($view_id); + if (in_array($account_id, $omit_list)) { + continue; + } + } + $view_hash[] = $row; + } + } else { + $db->query(" + SELECT * + FROM {PREFIX}views v, {PREFIX}list_groups lg + WHERE v.form_id = $form_id AND + v.group_id = lg.group_id + ORDER BY lg.list_order, v.view_order + "); + $db->bind("form_id", $form_id); + $db->execute(); + + $view_hash = $db->fetchAll(); + } + + extract(Hooks::processHookCalls("end", compact("view_hash"), array("view_hash")), EXTR_OVERWRITE); + + return $view_hash; + } + + + /** + * Returns all Views for a form, grouped appropriately. This function introduces a new way of handling + * loads of optional params (should have implemented this a long time ago!). The second $custom_params + * + * @param integer $form_id + * @param array a hash with any of the following keys: + * account_id => if this is specified, the results will only return View groups + * that have Views that a client account has access to + * omit_empty_groups => (default: false) + * omit_hidden_views => (default: false) + * include_client => (default: false). If yes, returns assorted client information + * for those that are mapped to the View + * @param boolean $omit_empty_groups + */ + public static function getGroupedViews($form_id, $custom_params = array()) + { + $db = Core::$db; + + // figure out what settings + $params = array( + "account_id" => (isset($custom_params["account_id"])) ? $custom_params["account_id"] : "", + "omit_empty_groups" => (isset($custom_params["omit_empty_groups"])) ? $custom_params["omit_empty_groups"] : true, + "omit_hidden_views" => (isset($custom_params["omit_hidden_views"])) ? $custom_params["omit_hidden_views"] : false, + "include_clients" => (isset($custom_params["include_clients"])) ? $custom_params["include_clients"] : false + ); + + $db->query(" + SELECT group_id, group_name + FROM {PREFIX}list_groups lg + WHERE group_type = :group_type + ORDER BY lg.list_order + "); + $db->bind("group_type", "form_{$form_id}_view_group"); + $db->execute(); + + $info = array(); + foreach ($db->fetchAll() as $row) { + $group_id = $row["group_id"]; + + $hidden_views_clause = ($params["omit_hidden_views"]) ? " AND v.access_type != 'hidden'" : ""; + if (empty($params["account_id"])) { + $db->query(" + SELECT * + FROM {PREFIX}views v + WHERE v.group_id = :group_id + $hidden_views_clause + ORDER BY v.view_order + "); + $db->bind("group_id", $group_id); + } else { + $db->query(" + SELECT v.* + FROM {PREFIX}views v + WHERE v.form_id = :form_id AND + v.group_id = :group_id AND + (v.access_type = 'public' OR v.view_id IN ( + SELECT cv.view_id + FROM {PREFIX}client_views cv + WHERE account_id = :account_id + )) AND + v.view_id NOT IN ( + SELECT view_id + FROM {PREFIX}public_view_omit_list + WHERE account_id = :account_id2 + ) + $hidden_views_clause + ORDER BY v.view_order + "); + $db->bindAll(array( + "form_id" => $form_id, + "group_id" => $group_id, + "account_id" => $params["account_id"], + "account_id2" => $params["account_id"] + )); + } + $db->execute(); + + $views = array(); + foreach ($db->fetchAll() as $view_info) { + $view_id = $view_info["view_id"]; + if ($params["include_clients"]) { + $view_info["client_info"] = Views::getViewClients($view_id); + $view_info["client_omit_list"] = Views::getPublicViewOmitList($view_id); + } + + $view_info["columns"] = ViewColumns::getViewColumns($view_id); + $view_info["fields"] = ViewFields::getViewFields($view_id); + $view_info["tabs"] = ViewTabs::getViewTabs($view_id, true); + $view_info["filters"] = ViewFilters::getViewFilters($view_id); + $views[] = $view_info; + } + + if (count($views) > 0 || !$params["omit_empty_groups"]) { + $curr_group = array( + "group" => $row, + "views" => $views + ); + $info[] = $curr_group; + } + } + + return $info; + } + + + /** + * Retrieves all information about a View, including associated user and filter info. + * + * @param integer $view_id the unique view ID + * @return array a hash of view information + */ + public static function getView($view_id, $custom_params = array()) + { + $db = Core::$db; + + $params = array( + "include_field_settings" => (isset($custom_params["include_field_settings"])) ? $custom_params["include_field_settings"] : false + ); + + $db->query("SELECT * FROM {PREFIX}views WHERE view_id = :view_id"); + $db->bind("view_id", $view_id); + $db->execute(); + + $view_info = $db->fetch(); + $view_info["client_info"] = Views::getViewClients($view_id); + $view_info["columns"] = ViewColumns::getViewColumns($view_id); + $view_info["fields"] = ViewFields::getViewFields($view_id, $params); + $view_info["filters"] = ViewFilters::getViewFilters($view_id); + $view_info["tabs"] = ViewTabs::getViewTabs($view_id); + $view_info["client_omit_list"] = (isset($view_info["access_type"]) && $view_info["access_type"] == "public") ? + Views::getPublicViewOmitList($view_id) : array(); + + extract(Hooks::processHookCalls("end", compact("view_id", "view_info"), array("view_info")), EXTR_OVERWRITE); + + return $view_info; + } + + + /** + * This function is called after creating a new form (Forms::finalizeForm), and creates a default + * View - one containing all fields and assigned to all clients that are assigned to the form. + * + * Notes: I'm not terribly happy about the relationship between the list_groups table and whatever + * they're grouping - here, Views. The issue is that to make the entries in the list_groups table + * have additional meaning, I customize the group_type value to something like "form_X_view_group" + * where "X" is the form name. ... + * + * @param integer $form_id + */ + public static function addDefaultView($form_id) + { + $db = Core::$db; + $LANG = Core::$L; + + // 1. create the new View + $form_info = Forms::getForm($form_id); + $num_submissions_per_page = Sessions::getWithFallback("settings.num_submissions_per_page", 10); + + $db->query(" + INSERT INTO {PREFIX}views (form_id, view_name, view_order, num_submissions_per_page, + default_sort_field, default_sort_field_order) + VALUES (:form_id, :view_name, '1', :view_order, 'submission_date', 'desc') + "); + $db->bindAll(array( + "form_id" => $form_id, + "view_name" => $LANG["phrase_all_submissions"], + "view_order" => $num_submissions_per_page + )); + $db->execute(); + + $view_id = $db->getInsertId(); + + // 2. create the View group and update the view record we just created (blurgh!) + $db->query(" + INSERT INTO {PREFIX}list_groups (group_type, group_name, custom_data, list_order) + VALUES (:group_type, :group_name, :custom_data, 1) + "); + $db->bindAll(array( + "group_type" => "form_{$form_id}_view_group", + "group_name" => $LANG["word_views"], + "custom_data" => "" + )); + $db->execute(); + $group_id = $db->getInsertId(); + + $db->query(" + UPDATE {PREFIX}views + SET group_id = :group_id + WHERE view_id = :view_id + "); + $db->bindAll(array( + "group_id" => $group_id, + "view_id" => $view_id + )); + $db->execute(); + + // 3. add the default tabs [N.B. this table should eventually be dropped altogether and data moved to list_groups] + $view_tab_inserts = array( + "($view_id, 1, '{$LANG["phrase_default_tab_label"]}')", + "($view_id, 2, '')", + "($view_id, 3, '')", + "($view_id, 4, '')", + "($view_id, 5, '')", + "($view_id, 6, '')" + ); + $view_tab_insert_str = implode(",\n", $view_tab_inserts); + $db->query("INSERT INTO {PREFIX}view_tabs VALUES $view_tab_insert_str"); + $db->execute(); + + // now populate the new View fields and the View columns + self::populateNewViewFields($form_id, $view_id); + + // assign the View to all clients attached to this form + $client_info = $form_info["client_info"]; + foreach ($client_info as $user) { + $account_id = $user["account_id"]; + $db->query(" + INSERT INTO {PREFIX}client_views (account_id, view_id) + VALUES (:account_id, :view_id) + "); + $db->bindAll(array( + "account_id" => $account_id, + "view_id" => $view_id + )); + $db->execute(); + } + + return array(true, $LANG["notify_new_default_view_created"]); + } + + + // ----------------------------------------------------------------------------------------------------------------- + + /** + * Helper function that's called when creating new Views. It populates the View fields and View column + * with ALL form fields and 5 columns (Submission ID, Submission Date + 3 others). + * + * @param integer $form_id + * @param integer $view_id + */ + private static function populateNewViewFields($form_id, $view_id) + { + $db = Core::$db; + $LANG = Core::$L; + + $db->query(" + INSERT INTO {PREFIX}list_groups (group_type, group_name, custom_data, list_order) + VALUES (:group_type, :group_name, 1, 1) + "); + $db->bindAll(array( + "group_type" => "view_fields_$view_id", + "group_name" => $LANG["phrase_default_tab_label"] + )); + $db->execute(); + + $view_fields_group_id = $db->getInsertId(); + + $count = 1; + $num_custom_fields_added = 0; + $form_fields = Fields::getFormFields($form_id); + + $form_field_view_inserts = array(); + $view_column_inserts = array(); + $view_column_order = 1; + foreach ($form_fields as $field) { + $field_id = $field["field_id"]; + + // make the submission ID, submission date and the 1st 3 columns visible by default + $is_column = "no"; + if ($field["col_name"] == "submission_id" || $field["col_name"] == "submission_date") { + $is_column = "yes"; + } else { + if ($num_custom_fields_added < 3) { + $is_column = "yes"; + $num_custom_fields_added++; + } + } + + // by default, make every field editable except the system fields + $is_editable = ($field["is_system_field"] == "yes") ? "no" : "yes"; + $is_new_sort_group = $field["is_new_sort_group"]; + + $form_field_view_inserts[] = "($view_id, $field_id, $view_fields_group_id, '$is_editable', $count, '$is_new_sort_group')"; + $count++; + + // if this is a column field, add the view_columns record + if ($is_column == "yes") { + $auto_size = "yes"; + $custom_width = ""; + if ($field["col_name"] == "submission_id") { + $auto_size = "no"; + $custom_width = 50; + } else if ($field["col_name"] == "submission_date") { + $auto_size = "no"; + $custom_width = 160; + } + $view_column_inserts[] = "($view_id, $field_id, $view_column_order, 'yes', '$auto_size', '$custom_width', 'truncate')"; + $view_column_order++; + } + } + + // should NEVER be empty, but check anyway + if (!empty($form_field_view_inserts)) { + $form_field_view_insert_str = implode(",\n", $form_field_view_inserts); + $db->query(" + INSERT INTO {PREFIX}view_fields (view_id, field_id, group_id, is_editable, list_order, is_new_sort_group) + VALUES $form_field_view_insert_str + "); + $db->execute(); + } + if (!empty($view_column_inserts)) { + $view_columns_insert_str = implode(",\n", $view_column_inserts); + $db->query(" + INSERT INTO {PREFIX}view_columns (view_id, field_id, list_order, is_sortable, auto_size, custom_width, truncate) + VALUES $view_columns_insert_str + "); + $db->execute(); + } + } + + + /** + * Returns an array of account IDs of those clients in the omit list for this public View. + * + * @param integer $view_id + * @return array + */ + public static function getPublicViewOmitList($view_id) + { + $db = Core::$db; + + $db->query(" + SELECT account_id + FROM {PREFIX}public_view_omit_list + WHERE view_id = :view_id + "); + $db->bind("view_id", $view_id); + $db->execute(); + + return $db->fetchAll(PDO::FETCH_COLUMN); + } + + + /** + * This figures out what View is currently being used. + * @param array $request the POST/GET contents + * @param integer $form_id + */ + public static function getCurrentView($request, $form_id) + { + $session_key = "form_{$form_id}_view_id"; + if (isset($request["view_id"])) { + $view_id = $request["view_id"]; + Sessions::set($session_key, $view_id); + } else { + $view_id = Sessions::getWithFallback($session_key, ""); + } + + // if the View ID isn't set, here - they probably just linked to the page directly from an email, module + // or elsewhere in the script. For this case, find and use the default View + if (empty($view_id)) { + $view_id = Views::getDefaultView($form_id); + } + + return $view_id; + } + + +} diff --git a/global/code/actions-react.php b/global/code/actions-react.php new file mode 100644 index 00000000..f2227888 --- /dev/null +++ b/global/code/actions-react.php @@ -0,0 +1,41 @@ + "unknown_action" +); + +switch ($_GET["action"]) { + case "init": + $data = array( + "isAuthenticated" => Core::$user->isLoggedIn(), + "i18n" => Core::$L, + "constants" => array( + "rootDir" => Core::getRootDir(), + "rootUrl" => Core::getRootUrl(), + "dataSourceUrl" => Core::getFormToolsDataSource(), + "coreVersion" => Core::getCoreVersion() + ) + ); + if ($data["is_logged_in"]) { + $data["user"] = array( + "accountId" => Core::$user->getAccountId(), + "username" => Core::$user->getUsername() + ); + } + break; +} + + +header("Content-Type: text/javascript"); +header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); + +echo json_encode($data); diff --git a/global/code/actions.php b/global/code/actions.php new file mode 100644 index 00000000..ba7f6f25 --- /dev/null +++ b/global/code/actions.php @@ -0,0 +1,513 @@ +checkAuth("user", false); + +// check the sessions haven't time-outted +$sessions_still_valid = General::checkSessionsTimeout(false); +if (!$sessions_still_valid) { + @session_destroy(); + Sessions::clearAll(); + $permission_check["has_permission"] = false; + $permission_check["message"] = "session_expired"; +} + +// the action to take and the ID of the page where it will be displayed (allows for +// multiple calls on same page to load content in unique areas) +$request = array_merge($_GET, $_POST); +$action = $request["action"]; + + +if (!$permission_check["has_permission"]) { + echo constructReturnValue(array( + "success" => 0, + "ft_logout" => 1, + "message" => $permission_check["message"] + )); + exit; +} + +switch ($action) { + case "test_folder_permissions": + list($success, $message) = Files::checkUploadFolder($request["file_upload_dir"]); + $success = ($success) ? 1 : 0; + echo constructReturnValue(array("success" => $success, "message" => $message)); + break; + + case "test_folder_url_match": + list($success, $message) = Files::checkFolderUrlMatch($request["file_upload_dir"], $request["file_upload_url"]); + $success = ($success) ? 1 : 0; + echo constructReturnValue(array("success" => $success, "message" => $message)); + break; + + case "clear_cache_folder": + list($success, $message) = General::clearCacheFolder(); + $success = ($success) ? 1 : 0; + echo constructReturnValue(array("success" => $success, "message" => $message)); + break; + + // expects the tabset name and inner_tab to contain an alphanumeric string only + case "remember_inner_tab": + $tabset = strip_tags($request["tabset"]); + $tab = strip_tags($request["tab"]); + Sessions::createIfNotExists("inner_tabs", array()); + Sessions::set("inner_tabs.{$tabset}", $tab); + break; + + case "select_submission": + $form_id = $request["form_id"]; + $submission_id = $request["submission_id"]; + + if (Sessions::isEmpty("form_{$form_id}_select_all_submissions")) { + + $session_key = "form_{$form_id}_selected_submissions"; + Sessions::setIfNotExists($session_key, array()); + if (!in_array($submission_id, Sessions::get($session_key))) { + Sessions::appendArrayItem($session_key, $submission_id); + } + } else { + // if it's in the omit list, remove it + $omit_list = Sessions::get("form_{$form_id}_all_submissions_selected_omit_list"); + if (in_array($submission_id, $omit_list)) { + array_splice($omit_list, array_search($submission_id, $omit_list), 1); + } + } + break; + + // this unselects a submission ID from sessions. If the user had previous selected all submissions in the result + // set, it adds the submission ID to the form's submission ID omit list; otherwise it just logs the submission ID + // in the form's selected submission ID array + case "unselect_submission": + $form_id = $request["form_id"]; + $submission_id = $request["submission_id"]; + + if (Sessions::isEmpty("form_{$form_id}_select_all_submissions")) { + Sessions::setIfNotExists("form_{$form_id}_selected_submissions", array()); + Sessions::removeArrayItem("form_{$form_id}_selected_submissions", $submission_id); + } else { + Sessions::setIfNotExists("form_{$form_id}_all_submissions_selected_omit_list", array()); + if (!in_array($submission_id, Sessions::get("form_{$form_id}_all_submissions_selected_omit_list"))) { + Sessions::appendArrayItem("form_{$form_id}_all_submissions_selected_omit_list", $submission_id); + } + } + break; + + case "select_submissions": + $form_id = $request["form_id"]; + $submission_ids = explode(",", $request["submission_ids"]); + + // user HASN'T selected all submissions + if (Sessions::exists("form_{$form_id}_select_all_submissions")) { + Sessions::setIfNotExists("form_{$form_id}_selected_submissions", array()); + + $selected_submissions = Sessions::get("form_{$form_id}_selected_submissions"); + foreach ($submission_ids as $submission_id) { + if (!in_array($submission_id, $selected_submissions)) { + Sessions::appendArrayItem("form_{$form_id}_selected_submissions", $submission_id); + } + } + + // user has already selected all submissions. Here, we actually REMOVE the newly selected submissions from + // the form submission omit list + } else { + Sessions::setIfNotExists("form_{$form_id}_all_submissions_selected_omit_list", array()); + $omit_list = Sessions::get("form_{$form_id}_all_submissions_selected_omit_list"); + foreach ($submission_ids as $submission_id) { + if (in_array($submission_id, $omit_list)) { + array_splice($omit_list, array_search($submission_id, $omit_list), 1); + } + } + } + break; + + // this is called when the user has selected all submissions in a result set, regardless of page + case "select_all_submissions": + $form_id = $request["form_id"]; + Sessions::set("form_{$form_id}_select_all_submissions", "1"); + Sessions::set("form_{$form_id}_selected_submissions", array()); // empty the specific selected submission + Sessions::set("form_{$form_id}_all_submissions_selected_omit_list", array()); + break; + + case "unselect_all_submissions": + $form_id = $request["form_id"]; + Sessions::set("form_{$form_id}_select_all_submissions", ""); + Sessions::set("form_{$form_id}_selected_submissions", array()); + Sessions::set("form_{$form_id}_all_submissions_selected_omit_list", array()); + break; + + case "send_test_email": + list($success, $message) = Emails::sendTestEmail($request); + $success = ($success) ? 1 : 0; + echo constructReturnValue(array("success" => $success, "message" => $message)); + break; + + case "display_test_email": + $form_id = Sessions::get("form_id"); + $email_id = Sessions::get("email_id"); + $info = Emails::getEmailComponents($form_id, "", $email_id, true, $request); + echo returnJSON($info); + break; + + case "edit_submission_send_email": + $form_id = $request["form_id"]; + $submission_id = $request["submission_id"]; + $email_id = $request["email_id"]; + + list($success, $message) = Emails::processEmailTemplate($form_id, $submission_id, $email_id); + if ($success) { + $success = 1; + $message = $LANG["notify_email_sent"]; + } else { + $edit_email_template_link = "[edit email template]"; + $success = 0; + $message = $LANG["notify_email_not_sent_c"] . mb_strtolower($message) . " " . $edit_email_template_link; + } + $message = addslashes($message); + echo constructReturnValue(array("success" => $success, "message" => $message)); + break; + + case "remember_edit_email_advanced_settings": + Sessions::set("edit_email_advanced_settings", $request["edit_email_advanced_settings"]); + break; + + case "smart_fill": + $scrape_method = $request["scrape_method"]; + $url = $request["url"]; + switch ($scrape_method) { + case "file_get_contents": + $url = General::constructUrl($url, "ft_sessions_url_override=1"); + $html = file_get_contents($url); + header("Cache-Control: no-cache, must-revalidate"); + header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); + echo $html; + break; + + case "curl": + $url = General::constructUrl($url, "ft_sessions_url_override=1"); + $c = curl_init(); + curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($c, CURLOPT_URL, $url); + $html = curl_exec($c); + curl_close($c); + header("Cache-Control: no-cache, must-revalidate"); + header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); + echo $html; + break; + + case "redirect": + header("location: $url"); + exit; + } + break; + + case "process_smart_fill_contents": + $form_id = Sessions::get("add_form_form_id"); + Forms::setFormFieldTypes($form_id, $request); + + // finalize the form and redirect to step 6 + $form_info = Forms::getForm($form_id); + if ($form_info["is_complete"] != 'yes') { + $response = Forms::finalizeForm($form_id); + echo returnJSON($response); + } else { + echo constructReturnValue(array("success" => 1, "message" => "")); + } + break; + + case "get_js_webpage_parse_method": + $method = General::getJsWebpageParseMethod($request["url"]); + echo constructReturnValue(array("scrape_method" => $method)); + break; + + // used on the Add Form Step 5 page and Edit Field Options pages. It uploads + // the files to the /upload folder and returns the filenames (renamed & stored in sessions). + // That information is then used by the JS to load and process the page content + case "upload_scraped_pages_for_smart_fill": + $num_pages = $request["num_pages"]; + $settings = Settings::get(array("file_upload_dir", "file_upload_url"), "core"); + $file_upload_dir = $settings["file_upload_dir"]; + $file_upload_url = $settings["file_upload_url"]; + $upload_tmp_file_prefix = "ft_sf_tmp_"; + + Sessions::setIfNotExists("smart_fill_tmp_uploaded_files", array()); + + $uploaded_file_info = array(); + $error = false; + for ($i=1; $i<=$num_pages; $i++) { + if (!isset($_FILES["form_page_{$i}"])) { + continue; + } + + $filename = $upload_tmp_file_prefix . $_FILES["form_page_{$i}"]["name"]; + $tmp_location = $_FILES["form_page_{$i}"]["tmp_name"]; + + list($g_success, $g_message, $final_filename) = Files::uploadFile($file_upload_dir, $filename, $tmp_location); + if ($g_success) { + $uploaded_file_info[] = "$file_upload_url/$final_filename"; + $filenames = Sessions::get("smart_fill_tmp_uploaded_files"); + $filenames[] = "$file_upload_dir/$final_filename"; + Sessions::set("smart_fill_tmp_uploaded_files", $filenames); + } else { + $error = true; + break; + } + } + + if ($error) { + echo constructReturnValue(array("success" => 0, "message" => $LANG["notify_smart_fill_upload_fields_fail"])); + } else { + $params = array("success" => 1); + $count = 1; + foreach ($uploaded_file_info as $url) { + $params["url_{$count}"] = $url; + $count++; + } + echo constructReturnValue($params); + } + break; + + // used on Edit Field Options pages. It uploads the files to the /upload folder and returns the filenames (renamed + // & stored in sessions). That information is then used by the JS to load and process the page content + case "upload_scraped_page_for_smart_fill": + $settings = Settings::get(array("file_upload_dir", "file_upload_url"), "core"); + $file_upload_dir = $settings["file_upload_dir"]; + $file_upload_url = $settings["file_upload_url"]; + $upload_tmp_file_prefix = "ft_sf_tmp_"; + + Sessions::setIfNotExists("smart_fill_tmp_uploaded_files", array()); + + $uploaded_file_info = array(); + $error = false; + + if (!isset($_FILES["form_page_1"])) { + exit; + } + + $filename = $upload_tmp_file_prefix . $_FILES["form_page_1"]["name"]; + $tmp_location = $_FILES["form_page_1"]["tmp_name"]; + + list($g_success, $g_message, $final_filename) = Files::uploadFile($file_upload_dir, $filename, $tmp_location); + if ($g_success) { + Sessions::appendArrayItem("smart_fill_tmp_uploaded_files", "$file_upload_dir/$final_filename"); + header("location: $file_upload_url/$final_filename"); + exit; + } else { + echo constructReturnValue(array("success" => 0, "message" => $LANG["notify_smart_fill_upload_fields_fail"])); + exit; + } + break; + + case "get_upgrade_form_html": + $upgrade_url = Core::getUpgradeUrl(); + $components = General::getFormtoolsInstalledComponents(); + echo ""; + foreach ($components as $key => $value) { + echo "\n"; + } + echo ""; + break; + + case "get_extended_field_settings": + $field_id = $request["field_id"]; + $field_type_id = $request["field_type_id"]; + $settings = Fields::getExtendedFieldSettings($field_id, "", true); + $validation = FieldValidation::get($field_id); + echo constructReturnValue(array( + "field_id" => $field_id, + "field_type_id" => $field_type_id, + "settings" => $settings, + "validation" => $validation + )); + break; + + case "get_option_lists": + $option_lists = OptionLists::getList(array( + "per_page" => Sessions::get("settings.num_option_lists_per_page") + )); + $option_list_info = array(); + foreach ($option_lists["results"] as $option_list) { + $option_list_info[$option_list["list_id"]] = $option_list["option_list_name"]; + } + echo constructReturnValue($option_list_info); + break; + + // used on the Edit Form -> Fields tab + case "get_form_list": + $form_list = Forms::getFormList(); + $forms = array(); + foreach ($form_list as $form_info) { + $forms[$form_info["form_id"]] = $form_info["form_name"]; + } + echo constructReturnValue($forms); + break; + + // used for the Edit Form -> fields tab. Note that any dynamic settings ARE evaluated. + case "get_form_fields": + $form_id = $request["form_id"]; + $field_id = $request["field_id"]; + $field_order = $request["field_order"]; + $form_fields = Fields::getFormFields($form_id); // array("evaluate_dynamic_settings" => true) + $fields = array(); + foreach ($form_fields as $field_info) { + $fields[$field_info["field_id"]] = $field_info["field_title"]; + } + echo constructReturnValue(array( + "form_id" => $form_id, + "field_id" => $field_id, + "field_order" => $field_order, + "fields" => $fields + )); + break; + + case "create_new_view": + $form_id = $request["form_id"]; + $group_id = $request["group_id"]; + $view_name = $request["view_name"]; + $duplicate_view_id = ""; + + // here, create_view_from_view_id either contains the ID of the View that the user wants to copy, + // or "blank_view_no_fields", meaning a totally blank View or "blank_view_all_fields" meaning + // they want all View fields added by default + if (isset($request["create_view_from_view_id"]) && !empty($request["create_view_from_view_id"])) { + $duplicate_view_id = $request["create_view_from_view_id"]; + } + + $view_id = Views::createView($form_id, $group_id, $view_name, $duplicate_view_id); + + // always set the default Edit View tab to the first one + Sessions::set("edit_view_tab", 1); + echo constructReturnValue(array("success" => 1, "view_id" => $view_id)); + break; + + case "create_new_view_group": + $form_id = Sessions::get("form_id"); + $group_type = "form_{$form_id}_view_group"; + $group_name = $request["group_name"]; + $info = ListGroups::addListGroup($group_type, $group_name); + echo constructReturnValue($info); + break; + + case "delete_view": + $view_id = $request["view_id"]; + Views::deleteView($view_id); + echo constructReturnValue(array("success" => "1", "view_id" => $view_id)); + break; + + // this is called when the user clicks on the "Save Changes" button on the Edit Field dialog on the + // Fields tab + case "update_form_fields": + $form_id = $request["form_id"]; + $changed_field_ids = $request["data"]["changed_field_ids"]; + + // update whatever information has been included in the request + $problems = array(); + $count = 1; + $new_field_map = array(); + foreach ($changed_field_ids as $field_id) { + if (!isset($request["data"]["field_$field_id"])) { + continue; + } + + // if this is a NEW field, we just ignore it here. New fields are only added by updating the main page, not + // via the Edit Field dialog + if (preg_match("/^NEW/", $field_id)) { + continue; + } + + list($success, $message) = Fields::updateField($form_id, $field_id, $request["data"]["field_$field_id"]); + if (!$success) { + $problems[] = array("field_id" => $field_id, "error" => $message); + } + } + + if (!empty($problems)) { + echo constructReturnValue(array("success" => 0, "problems" => $problems)); + } else { + echo constructReturnValue(array("success" => 1)); + } + break; + + // used to return a page outlining all the form field placeholders available + case "get_form_field_placeholders": + $form_id = $request["form_id"]; + + $text_reference_tab_info = General::evalSmartyString($LANG["text_reference_tab_info"], array("g_root_url" => $root_url)); + + $page_vars = array(); + $page_vars["form_id"] = $form_id; + $page_vars["form_fields"] = Fields::getFormFields($form_id, array("include_field_type_info" => true)); + $page_vars["text_reference_tab_info"] = $text_reference_tab_info; + + echo constructReturnValue(array( + "success" => true, + "html" => Themes::getPage("admin/forms/form_placeholders.tpl", $page_vars) + )); + break; +} + + +/** + * There are two ways to pass data to be returned by these requests in this file: + * - pass a return_vals string with a `:` delimited key/value pairs + * - pass a return_vars object + */ +function constructReturnValue($data) +{ + global $request; + + $data_to_return = array(); + if (isset($request["return_vals"])) { + foreach ($request["return_vals"] as $pair) { + list($key, $value) = explode(":", $pair); + $data_to_return[$key] = $value; + } + } + + $obj_data_to_return = array(); + if (isset($request["return_vars"]) && is_array($request["return_vars"])) { + $obj_data_to_return = $request["return_vars"]; + } + + $return_info = array_merge($data_to_return, $obj_data_to_return); + + // this is because if $data has numbers as the keys, array_merge appends them to the end and the keys are lost (sigh). + foreach ($data as $key => $value) { + $return_info[$key] = $value; + } + + return returnJSON($return_info); +} + + +function returnJSON($php) +{ + header("Content-Type: application/json"); + return json_encode($php); +} diff --git a/global/code/field_types/Checkbox.class.php b/global/code/field_types/Checkbox.class.php new file mode 100644 index 00000000..6e0470e0 --- /dev/null +++ b/global/code/field_types/Checkbox.class.php @@ -0,0 +1,172 @@ +{\$LANG.phrase_not_assigned_to_option_list} +{else} + {assign var=vals value="`\$g_multi_val_delimiter`"|explode:\$VALUE} + {assign var=is_in_columns value=false} + {if \$formatting == "cf_option_list_2cols" || + \$formatting == "cf_option_list_3cols" || + \$formatting == "cf_option_list_4cols"} + {assign var=is_in_columns value=true} + {/if} + + {assign var=counter value="1"} + {foreach from=\$contents.options item=curr_group_info name=group} + {assign var=group_info value=\$curr_group_info.group_info} + {assign var=options value=\$curr_group_info.options} + + {if array_key_exists("group_name", \$group_info) && !empty(\$group_info["group_name"])} +
{\$group_info.group_name}
+ {/if} + {if \$is_in_columns}
{/if} + + {foreach from=\$options item=option name=row} + {if \$is_in_columns}
{/if} + + + {if \$is_in_columns}
{/if} + {if \$formatting == "vertical"}
{/if} + + {assign var=counter value=\$counter+1} + {/foreach} + + {if \$is_in_columns}
{/if} + {/foreach} + + {if \$comments} +
{\$comments}
+ {/if} +{/if} +END; + + + return array( + "field_type" => array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.word_checkboxes}", + "field_type_identifier" => "checkboxes", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "checkboxes", + "compatible_field_sizes" => "1char,2chars,tiny,small,medium,large", + "view_field_rendering_type" => "php", + "view_field_php_function_source" => "core", + "view_field_php_function" => "FormTools\\FieldTypes::displayFieldTypeCheckboxes", + "view_field_smarty_markup" => $checkboxes_view_field, + "edit_field_smarty_markup" => $checkboxes_edit_field, + "php_processing" => "", + "resources_css" => "/* all CSS is found in Shared Resources */", + "resources_js" => "" + ), + + "settings" => array( + + // Option List / Contents + array( + "use_for_option_list_map" => true, + "field_label" => "{\$LANG.phrase_option_list_or_contents}", + "field_setting_identifier" => "contents", + "field_type" => "option_list_or_form_field", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ), + + // Formatting + array( + "field_label" => "{\$LANG.word_formatting}", + "field_setting_identifier" => "formatting", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "horizontal", + + "options" => array( + array( + "option_text" => "{\$LANG.word_horizontal}", + "option_value" => "horizontal", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_vertical}", + "option_value" => "vertical", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_2_columns}", + "option_value" => "cf_option_list_2cols", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_3_columns}", + "option_value" => "cf_option_list_3cols", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_4_columns}", + "option_value" => "cf_option_list_4cols", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ), + + "validation" => array( + array( + "rsv_rule" => "required", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "{\$field_name}[]", + "custom_function" => "", + "custom_function_required" => "na", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ) + ) + ); + } + +} diff --git a/global/code/field_types/Code.class.php b/global/code/field_types/Code.class.php new file mode 100644 index 00000000..4510766e --- /dev/null +++ b/global/code/field_types/Code.class.php @@ -0,0 +1,238 @@ + array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.phrase_code_markup_field}", + "field_type_identifier" => "code_markup", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "textarea", + "compatible_field_sizes" => "large,very_large", + "view_field_rendering_type" => "php", + "view_field_php_function_source" => "core", + "view_field_php_function" => "FormTools\\FieldTypes::displayFieldTypeCodeMarkup", + "view_field_smarty_markup" => self::getViewField(), + "edit_field_smarty_markup" => self::getEditField(), + "php_processing" => "", + "resources_css" => self::getCSS(), + "resources_js" => self::getJS() + ), + + "settings" => self::getSettings(), + "validation" => self::getValidation() + ); + + } + + private static function getViewField() + { + $content =<<< END +{if \$CONTEXTPAGE == "edit_submission"} +
+ + +
+ +{else} + {\$VALUE|strip_tags} +{/if} +END; + return $content; + } + + private static function getEditField() + { + $content =<<< END +
+ +
+ + + +{if \$comments} +
{\$comments}
+{/if} +END; + return $content; + } + + private static function getJS() + { + $js =<<< END +var cf_code = {}; +cf_code.check_required = function() { + var errors = []; + for (var i=0; i "{\$LANG.phrase_code_markup_type}", + "field_setting_identifier" => "code_markup", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "HTML", + + "options" => array( + array( + "option_text" => "CSS", + "option_value" => "CSS", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "HTML", + "option_value" => "HTML", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "JavaScript", + "option_value" => "JavaScript", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "XML", + "option_value" => "XML", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Height + array( + "field_label" => "{\$LANG.word_height}", + "field_setting_identifier" => "height", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "200", + + "options" => array( + array( + "option_text" => "{\$LANG.phrase_tiny_50px}", + "option_value" => "50", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_small_100px}", + "option_value" => "100", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_medium_200px}", + "option_value" => "200", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_large_400px}", + "option_value" => "400", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ); + } + + private static function getValidation() + { + return array( + array( + "rsv_rule" => "function", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "", + "custom_function" => "cf_code.check_required", + "custom_function_required" => "yes", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ) + ); + } +} diff --git a/global/code/field_types/Date.class.php b/global/code/field_types/Date.class.php new file mode 100644 index 00000000..cf923e2c --- /dev/null +++ b/global/code/field_types/Date.class.php @@ -0,0 +1,385 @@ + array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.word_date}", + "field_type_identifier" => "date", + "is_file_field" => "no", + "is_date_field" => "yes", + "raw_field_type_map" => "", + "compatible_field_sizes" => "small", + "view_field_rendering_type" => "php", + "view_field_php_function_source" => "core", + "view_field_php_function" => "FormTools\\FieldTypes::displayFieldTypeDate", + "view_field_smarty_markup" => self::getViewField(), + "edit_field_smarty_markup" => self::getEditField(), + "php_processing" => self::getPhpProcessing(), + "resources_css" => self::getCSS(), + "resources_js" => self::getJS() + ), + + "settings" => self::getSettings(), + "validation" => array( + array( + "rsv_rule" => "required", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "na", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ) + ) + ); + } + + private static function getSettings() + { + return array( + + // Custom Display Format + array( + "field_label" => "{\$LANG.phrase_custom_display_format}", + "field_setting_identifier" => "display_format", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "yy-mm-dd", + "options" => array( + array( + "option_text" => "2011-11-30", + "option_value" => "yy-mm-dd", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "30/11/2011 (dd/mm/yyyy)", + "option_value" => "dd/mm/yy", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "11/30/2011 (mm/dd/yyyy)", + "option_value" => "mm/dd/yy", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "Nov 30, 2011", + "option_value" => "M d, yy", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "November 30, 2011", + "option_value" => "MM d, yy", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "Wed Nov 30, 2011", + "option_value" => "D M d, yy", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "Wednesday, November 30, 2011", + "option_value" => "DD, MM d, yy", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "30. 08. 2011", + "option_value" => "dd. mm. yy", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "30/11/2011 8:00 PM", + "option_value" => "datetime:dd/mm/yy|h:mm TT|ampm`true", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "11/30/2011 8:00 PM", + "option_value" => "datetime:mm/dd/yy|h:mm TT|ampm`true", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "2011-11-30 8:00 PM", + "option_value" => "datetime:yy-mm-dd|h:mm TT|ampm`true", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "2011-11-30 20:00", + "option_value" => "datetime:yy-mm-dd|hh:mm", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "2011-11-30 20:00:00", + "option_value" => "datetime:yy-mm-dd|hh:mm:ss|showSecond`true", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "30. 08. 2011 20:00", + "option_value" => "datetime:dd. mm. yy|hh:mm", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Apply Timezone Offset + array( + "field_label" => "{\$LANG.phrase_apply_timezone_offset}", + "field_setting_identifier" => "apply_timezone_offset", + "field_type" => "radios", + "field_orientation" => "horizontal", + "default_value_type" => "static", + "default_value" => "no", + "options" => array( + array( + "option_text" => "{\$LANG.word_yes}", + "option_value" => "yes", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_no}", + "option_value" => "no", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ); + } + + private static function getViewField() + { + $content =<<< END +{strip} +{if \$VALUE} + {assign var=tzo value=0} + {if \$apply_timezone_offset == "yes"} + {assign var=tzo value=\$ACCOUNT_INFO.timezone_offset} + {/if} + {if \$display_format == "yy-mm-dd" || !\$display_format} + {\$VALUE|custom_format_date:\$tzo:"Y-m-d"} + {elseif \$display_format == "dd/mm/yy"} + {\$VALUE|custom_format_date:\$tzo:"d/m/Y"} + {elseif \$display_format == "mm/dd/yy"} + {\$VALUE|custom_format_date:\$tzo:"m/d/Y"} + {elseif \$display_format == "M d, yy"} + {\$VALUE|custom_format_date:\$tzo:"M j, Y"} + {elseif \$display_format == "MM d, yy"} + {\$VALUE|custom_format_date:\$tzo:"F j, Y"} + {elseif \$display_format == "D M d, yy"} + {\$VALUE|custom_format_date:\$tzo:"D M j, Y"} + {elseif \$display_format == "DD, MM d, yy"} + {\$VALUE|custom_format_date:\$tzo:"l M j, Y"} + {elseif \$display_format == "dd. mm. yy"} + {\$VALUE|custom_format_date:\$tzo:"d. m. Y"} + {elseif \$display_format == "datetime:dd/mm/yy|h:mm TT|ampm`true"} + {\$VALUE|custom_format_date:\$tzo:"d/m/Y g:i A"} + {elseif \$display_format == "datetime:mm/dd/yy|h:mm TT|ampm`true"} + {\$VALUE|custom_format_date:\$tzo:"m/d/Y g:i A"} + {elseif \$display_format == "datetime:yy-mm-dd|h:mm TT|ampm`true"} + {\$VALUE|custom_format_date:\$tzo:"Y-m-d g:i A"} + {elseif \$display_format == "datetime:yy-mm-dd|hh:mm"} + {\$VALUE|custom_format_date:\$tzo:"Y-m-d H:i"} + {elseif \$display_format == "datetime:yy-mm-dd|hh:mm:ss|showSecond`true"} + {\$VALUE|custom_format_date:\$tzo:"Y-m-d H:i:s"} + {elseif \$display_format == "datetime:dd. mm. yy|hh:mm"} + {\$VALUE|custom_format_date:\$tzo:"d. m. Y H:i"} + {/if} +{/if} +{/strip} +END; + return $content; + } + + private static function getEditField() + { + $content =<<< END +{assign var=class value="cf_datepicker"} +{if \$display_format|strpos:"datetime" === 0} + {assign var=class value="cf_datetimepicker"} +{/if} + +{assign var="val" value=""} +{if \$VALUE} + {assign var=tzo value=""} + {if \$apply_timezone_offset == "yes"} + {assign var=tzo value=\$ACCOUNT_INFO.timezone_offset} + {/if} + {if \$display_format == "yy-mm-dd"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"Y-m-d"} + {elseif \$display_format == "dd/mm/yy"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"d/m/Y"} + {elseif \$display_format == "mm/dd/yy"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"m/d/Y"} + {elseif \$display_format == "M d, yy"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"M j, Y"} + {elseif \$display_format == "MM d, yy"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"F j, Y"} + {elseif \$display_format == "D M d, yy"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"D M j, Y"} + {elseif \$display_format == "DD, MM d, yy"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"l M j, Y"} + {elseif \$display_format == "dd. mm. yy"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"d. m. Y"} + {elseif \$display_format == "datetime:dd/mm/yy|h:mm TT|ampm`true"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"d/m/Y g:i A"} + {elseif \$display_format == "datetime:mm/dd/yy|h:mm TT|ampm`true"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"m/d/Y g:i A"} + {elseif \$display_format == "datetime:yy-mm-dd|h:mm TT|ampm`true"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"Y-m-d g:i A"} + {elseif \$display_format == "datetime:yy-mm-dd|hh:mm"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"Y-m-d H:i"} + {elseif \$display_format == "datetime:yy-mm-dd|hh:mm:ss|showSecond`true"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"Y-m-d H:i:s"} + {elseif \$display_format == "datetime:dd. mm. yy|hh:mm"} + {assign var=val value=\$VALUE|custom_format_date:\$tzo:"d. m. Y H:i"} + {/if} +{/if} + +
+ + + {if \$comments} +
{\$comments}
+ {/if} +
+END; + return $content; + } + + private static function getPhpProcessing() + { + $content =<<< END +\$field_name = \$vars["field_info"]["field_name"]; +\$date = \$vars["data"][\$field_name]; +\$display_format = \$vars["settings"]["display_format"]; +\$atzo = \$vars["settings"]["apply_timezone_offset"]; +\$account_info = isset(\$vars["account_info"]) ? \$vars["account_info"] : array(); + +if (empty(\$date)) { + \$value = ""; +} else { + if (strpos(\$display_format, "datetime:") === 0) { + \$parts = explode(" ", \$date); + switch (\$display_format) { + case "datetime:dd/mm/yy|h:mm TT|ampm`true": + \$date = substr(\$date, 3, 2) . "/" . substr(\$date, 0, 2) . "/" . substr(\$date, 6); + break; + case "datetime:dd. mm. yy|hh:mm": + \$date = substr(\$date, 4, 2) . "/" . substr(\$date, 0, 2) . "/" . substr(\$date, 8, 4) . " " . substr(\$date, 14); + break; + } + } else { + if (\$display_format == "dd/mm/yy") { + \$date = substr(\$date, 3, 2) . "/" . substr(\$date, 0, 2) . "/" . substr(\$date, 6); + } else if (\$display_format == "dd. mm. yy") { + \$parts = explode(" ", \$date); + \$date = trim(\$parts[1], ".") . "/" . trim(\$parts[0], ".") . "/" . trim(\$parts[2], "."); + } + } + \$time = strtotime(\$date); + + // lastly, if this field has a timezone offset being applied to it, do the + // appropriate math on the date + if (\$atzo == "yes" && !isset(\$account_info["timezone_offset"])) { + \$seconds_offset = \$account_info["timezone_offset"] * 60 * 60; + \$time += \$seconds_offset; + } + \$value = date("Y-m-d H:i:s", \$time); +} +END; + return $content; + } + + private static function getCSS() + { + $css =<<< END +.cf_datepicker { + width: 160px; +} +.cf_datetimepicker { + width: 160px; +} +.ui-datepicker-trigger { + cursor: pointer; +} +END; + return $css; + } + + + private static function getJS() + { + $js =<<< END +$(function() { + // the datetimepicker has a bug that prevents the icon from appearing. So + // instead, we add the image manually into the page and assign the open event + // handler to the image + var default_settings = { + changeYear: true, + changeMonth: true + } + $(".cf_datepicker").each(function() { + var field_name = $(this).attr("name"); + var settings = default_settings; + if ($("#" + field_name + "_id").length) { + settings.dateFormat = $("#" + field_name + "_format").val(); + } + $(this).datepicker(settings); + $("#" + field_name + "_icon_id").bind("click", { field_id: "#" + field_name + "_id" }, function(e) { + $.datepicker._showDatepicker($(e.data.field_id)[0]); + }); + }); + + $(".cf_datetimepicker").each(function() { + var field_name = $(this).attr("name"); + var settings = default_settings; + + if ($("#" + field_name + "_id").length) { + var settings_str = $("#" + field_name + "_format").val(); + settings_str = settings_str.replace(/datetime:/, ""); + var settings_list = settings_str.split("|"); + var settings = {}; + settings.dateFormat = settings_list[0]; + settings.timeFormat = settings_list[1]; + for (var i=2; i + {\$LANG.phrase_not_assigned_to_option_list} + +{else} + +{/if} +{if \$comments} +
{\$comments}
+{/if} +END; + + return array( + "field_type" => array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.word_dropdown}", + "field_type_identifier" => "dropdown", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "select", + "compatible_field_sizes" => "1char,2chars,tiny,small,medium,large", + "view_field_rendering_type" => "smarty", + "view_field_php_function_source" => "core", + "view_field_php_function" => "FormTools\\FieldTypes::displayFieldTypeDropdown", + "view_field_smarty_markup" => $dropdown_view_field, + "edit_field_smarty_markup" => $dropdown_edit_field, + "php_processing" => "", + "resources_css" => "", + "resources_js" => "" + ), + + "settings" => array( + + // Option List / Contents + array( + "use_for_option_list_map" => true, + "field_label" => "{\$LANG.phrase_option_list_or_contents}", + "field_setting_identifier" => "contents", + "field_type" => "option_list_or_form_field", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ), + + "validation" => array( + array( + "rsv_rule" => "required", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "na", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ) + ) + ); + } + +} diff --git a/global/code/field_types/MultiSelect.class.php b/global/code/field_types/MultiSelect.class.php new file mode 100644 index 00000000..677fe838 --- /dev/null +++ b/global/code/field_types/MultiSelect.class.php @@ -0,0 +1,129 @@ +{\$LANG.phrase_not_assigned_to_option_list} +{else} + {assign var=vals value="`\$g_multi_val_delimiter`"|explode:\$VALUE} + +{/if} + +{if \$comments} +
{\$comments}
+{/if} +END; + + return array( + "field_type" => array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.phrase_multi_select_dropdown}", + "field_type_identifier" => "multi_select_dropdown", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "multi-select", + "compatible_field_sizes" => "1char,2chars,tiny,small,medium,large", + "view_field_rendering_type" => "php", + "view_field_php_function_source" => "core", + "view_field_php_function" => "FormTools\\FieldTypes::displayFieldTypeMultiSelectDropdown", + "view_field_smarty_markup" => $multi_select_view_field, + "edit_field_smarty_markup" => $multi_select_edit_field, + "php_processing" => "", + "resources_css" => "", + "resources_js" => "" + ), + + "settings" => array( + + // Option List / Contents + array( + "use_for_option_list_map" => true, + "field_label" => "{\$LANG.phrase_option_list_or_contents}", + "field_setting_identifier" => "contents", + "field_type" => "option_list_or_form_field", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ), + + // Num Rows + array( + "field_label" => "{\$LANG.phrase_num_rows}", + "field_setting_identifier" => "num_rows", + "field_type" => "textbox", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "5", + "options" => array() + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ), + + "validation" => array( + array( + "rsv_rule" => "required", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "{\$field_name}[]", + "custom_function" => "", + "custom_function_required" => "na", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ) + ) + ); + } + +} diff --git a/global/code/field_types/Password.class.php b/global/code/field_types/Password.class.php new file mode 100644 index 00000000..a84db695 --- /dev/null +++ b/global/code/field_types/Password.class.php @@ -0,0 +1,68 @@ + +{if \$comments} +
{\$comments}
+{/if} +END; + + return array( + "field_type" => array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.word_password}", + "field_type_identifier" => "password", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "password", + "compatible_field_sizes" => "1char,2chars,tiny,small,medium", + "view_field_rendering_type" => "none", + "view_field_php_function_source" => "core", + "view_field_php_function" => "", + "view_field_smarty_markup" => "", + "edit_field_smarty_markup" => $password_edit_field, + "php_processing" => "", + "resources_css" => "input.cf_password {\r\n width: 120px;\r\n}", + "resources_js" => "" + ), + + "settings" => array( + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ), + + "validation" => array( + array( + "rsv_rule" => "required", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "na", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ) + ) + ); + } + +} diff --git a/global/code/field_types/Phone.class.php b/global/code/field_types/Phone.class.php new file mode 100644 index 00000000..98129bfa --- /dev/null +++ b/global/code/field_types/Phone.class.php @@ -0,0 +1,116 @@ + array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.phrase_phone_number}", + "field_type_identifier" => "phone", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "", + "compatible_field_sizes" => "small,medium", + "view_field_rendering_type" => "smarty", + "view_field_php_function_source" => "core", + "view_field_php_function" => "FormTools\\FieldTypes::displayFieldTypePhoneNumber", + "view_field_smarty_markup" => "{view_phone_field}", + "edit_field_smarty_markup" => "{edit_phone_field}", + "php_processing" => $phone_php_processing, + "resources_css" => "", + "resources_js" => $phone_js + ), + + "settings" => array( + + // Phone Number Format + array( + "field_label" => "{\$LANG.phrase_phone_number_format}", + "field_setting_identifier" => "phone_number_format", + "field_type" => "textbox", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "(xxx) xxx-xxxx", + "options" => array() + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ), + + "validation" => array( + array( + "rsv_rule" => "function", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "", + "custom_function" => "cf_phone.check_required", + "custom_function_required" => "yes", + "default_error_message" => "{\$LANG.validation_default_phone_num_required}" + ) + ) + ); + } + +} diff --git a/global/code/field_types/Radio.class.php b/global/code/field_types/Radio.class.php new file mode 100644 index 00000000..78791b2d --- /dev/null +++ b/global/code/field_types/Radio.class.php @@ -0,0 +1,157 @@ +{\$LANG.phrase_not_assigned_to_option_list} +{else} + {assign var=is_in_columns value=false} + {if \$formatting == "cf_option_list_2cols" || + \$formatting == "cf_option_list_3cols" || + \$formatting == "cf_option_list_4cols"} + {assign var=is_in_columns value=true} + {/if} + + {assign var=counter value="1"} + {foreach from=\$contents.options item=curr_group_info name=group} + {assign var=group_info value=\$curr_group_info.group_info} + {assign var=options value=\$curr_group_info.options} + {if array_key_exists("group_name", \$group_info) && !empty(\$group_info["group_name"])} +
{\$group_info.group_name}
+ {/if} + {if \$is_in_columns}
{/if} + + {foreach from=\$options item=option name=row} + {if \$is_in_columns}
{/if} + + + {if \$is_in_columns}
{/if} + {if \$formatting == "vertical"}
{/if} + + {assign var=counter value=\$counter+1} + {/foreach} + + {if \$is_in_columns}
{/if} + {/foreach} + {if \$comments}
{\$comments}
{/if} +{/if} +END; + + return array( + "field_type" => array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.phrase_radio_buttons}", + "field_type_identifier" => "radio_buttons", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "radio-buttons", + "compatible_field_sizes" => "1char,2chars,tiny,small,medium,large", + "view_field_rendering_type" => "php", + "view_field_php_function_source" => "core", + "view_field_php_function" => "FormTools\\FieldTypes::displayFieldTypeRadios", + "view_field_smarty_markup" => $radio_view_field, + "edit_field_smarty_markup" => $radio_edit_field, + "php_processing" => "", + "resources_css" => "/* All CSS styles for this field type are found in Shared Resources */", + "resources_js" => "" + ), + + "settings" => array( + + // Option List / Contents + array( + "use_for_option_list_map" => true, + "field_label" => "{\$LANG.phrase_option_list_or_contents}", + "field_setting_identifier" => "contents", + "field_type" => "option_list_or_form_field", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ), + + // Formatting + array( + "field_label" => "{\$LANG.word_formatting}", + "field_setting_identifier" => "formatting", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "horizontal", + + "options" => array( + array( + "option_text" => "{\$LANG.word_horizontal}", + "option_value" => "horizontal", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_vertical}", + "option_value" => "vertical", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_2_columns}", + "option_value" => "cf_option_list_2cols", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_3_columns}", + "option_value" => "cf_option_list_3cols", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_4_columns}", + "option_value" => "cf_option_list_4cols", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ), + + "validation" => array( + array( + "rsv_rule" => "required", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "na", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ) + ) + ); + } +} diff --git a/global/code/field_types/Textarea.class.php b/global/code/field_types/Textarea.class.php new file mode 100644 index 00000000..728ffcee --- /dev/null +++ b/global/code/field_types/Textarea.class.php @@ -0,0 +1,295 @@ +{\$VALUE} + +{if \$input_length == "words" && \$maxlength != ""} +
+ {\$maxlength} {\$LANG.phrase_word_limit_p} {\$LANG.phrase_remaining_words} +
+{elseif \$input_length == "chars" && \$maxlength != ""} +
+ {\$maxlength} {\$LANG.phrase_characters_limit_p} {\$LANG.phrase_remaining_characters} +
+{/if} + +{if \$comments} +
{\$comments|nl2br}
+{/if} +END; + + $textarea_css = <<< END +.cf_counter span { + font-weight: bold; +} +textarea { + width: 99%; +} +textarea.cf_size_tiny { + height: 30px; +} +textarea.cf_size_small { + height: 80px; +} +textarea.cf_size_medium { + height: 150px; +} +textarea.cf_size_large { + height: 300px; +} +END; + + $textarea_js = <<< END +/** + * The following code provides a simple text/word counter option for any + * textarea. It either just keeps counting up, or limits the results to a + * certain number - all depending on what the user has selected via the + * field type settings. + */ +var cf_counter = {}; +cf_counter.get_max_count = function(el) { + var classes = $(el).attr('class').split(" ").slice(-1); + var max = null; + for (var i=0; i max) { + var allowed_words = val.split(/[\s]+/, max); + truncated_str = allowed_words.join(" "); + $(this).val(truncated_str); + } else { + $("#" + field_name + "_counter").find("span").html(parseInt(max) - parseInt(num_words)); + } + }); + $(this).trigger("keydown"); + }); + $("textarea[class~='cf_textcounter']").each(function() { + var max = cf_counter.get_max_count(this); + if (max == null) { + return; + } + $(this).bind("keydown", function() { + var field_name = $(this).attr("name"); + if (this.value.length > max) { + this.value = this.value.substring(0, max); + } else { + $("#" + field_name + "_counter").find("span").html(max - this.value.length); + } + }); + $(this).trigger("keydown"); + }); +}); +END; + + return array( + "field_type" => array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.word_textarea}", + "field_type_identifier" => "textarea", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "textarea", + "compatible_field_sizes" => "medium,large,very_large", + "view_field_rendering_type" => "smarty", + "view_field_php_function_source" => "core", + "view_field_php_function" => "", + "view_field_smarty_markup" => $textarea_view_field, + "edit_field_smarty_markup" => $textarea_edit_field, + "php_processing" => "", + "resources_css" => $textarea_css, + "resources_js" => $textarea_js + ), + + "settings" => array( + + // Height + array( + "field_label" => "{\$LANG.word_height}", + "field_setting_identifier" => "height", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "cf_size_small", + + "options" => array( + array( + "option_text" => "{\$LANG.phrase_tiny_30px}", + "option_value" => "cf_size_tiny", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_small_80px}", + "option_value" => "cf_size_small", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_medium_150px}", + "option_value" => "cf_size_medium", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_large_300px}", + "option_value" => "cf_size_large", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Highlight + array( + "field_label" => "{\$LANG.phrase_highlight_colour}", + "field_setting_identifier" => "highlight_colour", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + + "options" => array( + array( + "option_text" => "{\$LANG.word_none}", + "option_value" => "", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_red}", + "option_value" => "cf_colour_red", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_orange}", + "option_value" => "cf_colour_orange", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_yellow}", + "option_value" => "cf_colour_yellow", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_green}", + "option_value" => "cf_colour_green", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_blue}", + "option_value" => "cf_colour_blue", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Input Length + array( + "field_label" => "{\$LANG.phrase_input_length}", + "field_setting_identifier" => "input_length", + "field_type" => "radios", + "field_orientation" => "horizontal", + "default_value_type" => "static", + "default_value" => "", + + "options" => array( + array( + "option_text" => "{\$LANG.phrase_no_limit}", + "option_value" => "", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_words}", + "option_value" => "words", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_characters}", + "option_value" => "chars", + "is_new_sort_group" => "yes" + ) + ) + ), + + // - Max length (words / chars) + array( + "field_label" => "{\$LANG.phrase_max_length_words_chars}", + "field_setting_identifier" => "maxlength", + "field_type" => "textbox", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ), + + "validation" => array( + array( + "rsv_rule" => "required", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "na", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ) + ) + ); + } + + +} diff --git a/global/code/field_types/Textbox.class.php b/global/code/field_types/Textbox.class.php new file mode 100644 index 00000000..85cc611e --- /dev/null +++ b/global/code/field_types/Textbox.class.php @@ -0,0 +1,219 @@ + + {if \$comments} +
{\$comments}
+ {/if} +END; + + return array( + "field_type" => array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.word_textbox}", + "field_type_identifier" => "textbox", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "textbox", + "compatible_field_sizes" => "1char,2chars,tiny,small,medium,large,very_large", + "view_field_rendering_type" => "smarty", + "view_field_php_function_source" => "core", + "view_field_php_function" => "", + "view_field_smarty_markup" => "{\$VALUE|htmlspecialchars}", + "edit_field_smarty_markup" => $textbox_edit_field, + "php_processing" => "", + "resources_css" => self::getCSS(), + "resources_js" => "" + ), + "settings" => self::getSettings(), + "validation" => self::getValidation() + ); + } + + public static function getSettings () { + return array( + + // Size + array( + "field_label" => "{\$LANG.word_size}", + "field_setting_identifier" => "size", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "cf_size_medium", + "options" => array( + array( + "option_text" => "{\$LANG.word_tiny}", + "option_value" => "cf_size_tiny", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_small}", + "option_value" => "cf_size_small", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_medium}", + "option_value" => "cf_size_medium", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_large}", + "option_value" => "cf_size_large", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.phrase_full_width}", + "option_value" => "cf_size_full_width", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Max Length + array( + "field_label" => "{\$LANG.phrase_max_length}", + "field_setting_identifier" => "maxlength", + "field_type" => "textbox", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ), + + // Highlight + array( + "field_label" => "{\$LANG.word_highlight}", + "field_setting_identifier" => "highlight", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array( + array( + "option_text" => "{\$LANG.word_none}", + "option_value" => "", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_red}", + "option_value" => "cf_colour_red", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_orange}", + "option_value" => "cf_colour_orange", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_yellow}", + "option_value" => "cf_colour_yellow", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_green}", + "option_value" => "cf_colour_green", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "{\$LANG.word_blue}", + "option_value" => "cf_colour_blue", + "is_new_sort_group" => "yes" + ) + ) + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ); + } + + + public static function getValidation() { + return array( + array( + "rsv_rule" => "required", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "no", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ), + array( + "rsv_rule" => "valid_email", + "rule_label" => "{\$LANG.phrase_valid_email}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "no", + "default_error_message" => "{\$LANG.validation_default_rule_valid_email}" + ), + array( + "rsv_rule" => "digits_only", + "rule_label" => "{\$LANG.phrase_numbers_only}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "no", + "default_error_message" => "{\$LANG.validation_default_rule_numbers_only}" + ), + array( + "rsv_rule" => "letters_only", + "rule_label" => "{\$LANG.phrase_letters_only}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "no", + "default_error_message" => "{\$LANG.validation_default_rule_letters_only}" + ), + array( + "rsv_rule" => "is_alpha", + "rule_label" => "{\$LANG.phrase_alphanumeric}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "no", + "default_error_message" => "{\$LANG.validation_default_rule_alpha}" + ) + ); + } + + public static function getCSS() { + $css =<<< END +input.cf_size_tiny { + width: 30px; +} +input.cf_size_small { + width: 80px; +} +input.cf_size_medium { + width: 150px; +} +input.cf_size_large { + width: 250px; +} +input.cf_size_full_width { + width: 99%; +} +END; + return $css; + } + +} diff --git a/global/code/field_types/Time.class.php b/global/code/field_types/Time.class.php new file mode 100644 index 00000000..60a7ee27 --- /dev/null +++ b/global/code/field_types/Time.class.php @@ -0,0 +1,151 @@ + + + + {if \$comments} +
{\$comments}
+ {/if} + +END; + + $time_css = <<< END +.cf_timepicker { + width: 60px; +} +.ui-timepicker-div .ui-widget-header { + margin-bottom: 8px; +} +.ui-timepicker-div dl { + text-align: left; +} +.ui-timepicker-div dl dt { + height: 25px; +} +.ui-timepicker-div dl dd { + margin: -25px 0 10px 65px; +} +.ui-timepicker-div td { + font-size: 90%; +} +END; + + $time_js = <<< END +$(function() { + var default_settings = { + buttonImage: g.root_url + "/global/images/clock.png", + showOn: "both", + buttonImageOnly: true + } + $(".cf_timepicker").each(function() { + var field_name = $(this).attr("name"); + var settings = default_settings; + if ($("#" + field_name + "_id").length) { + var settings_list = $("#" + field_name + "_id").val().split("|"); + if (settings_list.length > 0) { + settings.timeFormat = settings_list[0]; + for (var i=1; i array( + "is_editable" => "no", + "is_enabled" => "yes", + "non_editable_info" => "{\$LANG.text_non_deletable_fields}", + "managed_by_module_id" => null, + "field_type_name" => "{\$LANG.word_time}", + "field_type_identifier" => "time", + "is_file_field" => "no", + "is_date_field" => "no", + "raw_field_type_map" => "", + "compatible_field_sizes" => "small", + "view_field_rendering_type" => "none", + "view_field_php_function_source" => "core", + "view_field_php_function" => "", + "view_field_smarty_markup" => "", + "edit_field_smarty_markup" => $time_edit_field, + "php_processing" => "", + "resources_css" => $time_css, + "resources_js" => $time_js + ), + + "settings" => array( + + // Custom Display Format + array( + "field_label" => "{\$LANG.phrase_custom_display_format}", + "field_setting_identifier" => "display_format", + "field_type" => "select", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "h:mm TT|ampm`true", + + "options" => array( + array( + "option_text" => "8:00 AM", + "option_value" => "h:mm TT|ampm`true", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "16:00", + "option_value" => "hh:mm|ampm`false", + "is_new_sort_group" => "yes" + ), + array( + "option_text" => "16:00:00", + "option_value" => "hh:mm:ss|showSecond`true|ampm`false", + "is_new_sort_group" => "yes" + ), + ) + ), + + // Field Comments + array( + "field_label" => "{\$LANG.phrase_field_comments}", + "field_setting_identifier" => "comments", + "field_type" => "textarea", + "field_orientation" => "na", + "default_value_type" => "static", + "default_value" => "", + "options" => array() + ) + ), + + "validation" => array( + array( + "rsv_rule" => "required", + "rule_label" => "{\$LANG.word_required}", + "rsv_field_name" => "{\$field_name}", + "custom_function" => "", + "custom_function_required" => "na", + "default_error_message" => "{\$LANG.validation_default_rule_required}" + ) + ) + ); + + } + +} diff --git a/global/code/index.php b/global/code/index.php new file mode 100644 index 00000000..0e068f9e --- /dev/null +++ b/global/code/index.php @@ -0,0 +1,3 @@ + 'text/plain', + 'htm' => 'text/html', + 'html' => 'text/html', + 'php' => 'text/html', + 'css' => 'text/css', + 'js' => 'application/javascript', + 'json' => 'application/json', + 'xml' => 'application/xml', + 'swf' => 'application/x-shockwave-flash', + 'flv' => 'video/x-flv', + + // images + 'png' => 'image/png', + 'jpe' => 'image/jpeg', + 'jpeg' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'gif' => 'image/gif', + 'bmp' => 'image/bmp', + 'ico' => 'image/vnd.microsoft.icon', + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'svg' => 'image/svg+xml', + 'svgz' => 'image/svg+xml', + + // archives + 'zip' => 'application/zip', + 'rar' => 'application/x-rar-compressed', + 'exe' => 'application/x-msdownload', + 'msi' => 'application/x-msdownload', + 'cab' => 'application/vnd.ms-cab-compressed', + + // audio/video + 'mp3' => 'audio/mpeg', + 'qt' => 'video/quicktime', + 'mov' => 'video/quicktime', + + // adobe + 'pdf' => 'application/pdf', + 'psd' => 'image/vnd.adobe.photoshop', + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + + // ms office + 'doc' => 'application/msword', + 'rtf' => 'application/rtf', + 'xls' => 'application/vnd.ms-excel', + 'ppt' => 'application/vnd.ms-powerpoint', + + // open office + 'odt' => 'application/vnd.oasis.opendocument.text', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + ); + + $ext = strtolower(array_pop(explode('.', $filename))); + if (array_key_exists($ext, $mime_types)) { + return $mime_types[$ext]; + } elseif (function_exists('finfo_open')) { + $finfo = finfo_open(FILEINFO_MIME); + $mimetype = finfo_file($finfo, $filename); + finfo_close($finfo); + return $mimetype; + } else { + return 'application/octet-stream'; + } + } +} diff --git a/global/code/validation.php b/global/code/validation.php new file mode 100644 index 00000000..26175107 --- /dev/null +++ b/global/code/validation.php @@ -0,0 +1,476 @@ +X" - field has to be greater than X characters long + * "length>=X" - field has to be greater than or equal to X characters long + * "lengthX" - field must be a number greater than X + * "range>=X" - field must be a number greater than or equal to X + * "range=/", $length_requirements)) + { + $comparison_rule = "greater_than_or_equal"; + $rule_string = preg_replace("/length>=/", "", $length_requirements); + } + else if (preg_match("/length<=/", $length_requirements)) + { + $comparison_rule = "less_than_or_equal"; + $rule_string = preg_replace("/length<=/", "", $length_requirements); + } + else if (preg_match("/length>/", $length_requirements)) + { + $comparison_rule = "greater_than"; + $rule_string = preg_replace("/length>/", "", $length_requirements); + } + else if (preg_match("/length= $rule_string)) + $errors[] = $error_message; + break; + case "less_than_or_equal": + if (!(strlen($fields[$field_name]) <= $rule_string)) + $errors[] = $error_message; + break; + case "greater_than": + if (!(strlen($fields[$field_name]) > $rule_string)) + $errors[] = $error_message; + break; + case "less_than": + if (!(strlen($fields[$field_name]) < $rule_string)) + $errors[] = $error_message; + break; + case "equal": + // if the user supplied two length fields, make sure the field is within that range + if (preg_match("/-/", $rule_string)) + { + list($start, $end) = explode("-", $rule_string); + if (strlen($fields[$field_name]) < $start || strlen($fields[$field_name]) > $end) + $errors[] = $error_message; + } + // otherwise, check it's EXACTLY the size the user specified + else + { + if (strlen($fields[$field_name]) != $rule_string) + $errors[] = $error_message; + } + break; + } + break; + + case "range": + $comparison_rule = ""; + $rule_string = ""; + + if (preg_match("/range=/", $range_requirements)) + { + $comparison_rule = "equal"; + $rule_string = preg_replace("/range=/", "", $range_requirements); + } + else if (preg_match("/range>=/", $range_requirements)) + { + $comparison_rule = "greater_than_or_equal"; + $rule_string = preg_replace("/range>=/", "", $range_requirements); + } + else if (preg_match("/range<=/", $range_requirements)) + { + $comparison_rule = "less_than_or_equal"; + $rule_string = preg_replace("/range<=/", "", $range_requirements); + } + else if (preg_match("/range>/", $range_requirements)) + { + $comparison_rule = "greater_than"; + $rule_string = preg_replace("/range>/", "", $range_requirements); + } + else if (preg_match("/range $rule_string)) + $errors[] = $error_message; + break; + case "less_than": + if (!($fields[$field_name] < $rule_string)) + $errors[] = $error_message; + break; + case "greater_than_or_equal": + if (!($fields[$field_name] >= $rule_string)) + $errors[] = $error_message; + break; + case "less_than_or_equal": + if (!($fields[$field_name] <= $rule_string)) + $errors[] = $error_message; + break; + case "equal": + list($start, $end) = explode("-", $rule_string); + + if (($fields[$field_name] < $start) || ($fields[$field_name] > $end)) + $errors[] = $error_message; + break; + } + break; + + case "same_as": + if ($fields[$field_name] != $fields[$field_name2]) + $errors[] = $error_message; + break; + + case "valid_date": + // this is written for future extensibility of isValidDate function to allow + // checking for dates BEFORE today, AFTER today, IS today and ANY day. + $is_later_date = false; + if ($date_flag == "later_date") + $is_later_date = true; + else if ($date_flag == "any_date") + $is_later_date = false; + + if (!is_valid_date($fields[$field_name], $fields[$field_name2], $fields[$field_name3], $is_later_date)) + $errors[] = $error_message; + break; + + case "is_alpha": + if (!isset($fields[$field_name]) || preg_match('/[^A-Za-z0-9]/', $fields[$field_name])) + $errors[] = $error_message; + break; + + case "custom_alpha": + $chars = array(); + $chars["L"] = "[A-Z]"; + $chars["V"] = "[AEIOU]"; + $chars["l"] = "[a-z]"; + $chars["v"] = "[aeiou]"; + $chars["D"] = "[a-zA-Z]"; + $chars["F"] = "[aeiouAEIOU]"; + $chars["C"] = "[BCDFGHJKLMNPQRSTVWXYZ]"; + $chars["x"] = "[0-9]"; + $chars["c"] = "[bcdfghjklmnpqrstvwxyz]"; + $chars["X"] = "[1-9]"; + $chars["E"] = "[bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ]"; + + $reg_exp_str = ""; + for ($j=0; $j $month || $month > 12) return false; + if ($year < 0) return false; + if (1 > $day || $day > $days_in_month[$month-1]) return false; + + + // if required, verify the incoming date is LATER than the current date. + if ($is_later_date) + { + // get current date + $today = date("U"); + $date = mktime(0, 0, 0, $month, $day, $year); + if ($date < $today) + return false; + } + + return true; +} diff --git a/global/codemirror/AUTHORS b/global/codemirror/AUTHORS new file mode 100644 index 00000000..52eef0c5 --- /dev/null +++ b/global/codemirror/AUTHORS @@ -0,0 +1,689 @@ +List of CodeMirror contributors. Updated before every release. + +4r2r +Aaron Brooks +Abdelouahab +Abe Fettig +Adam Ahmed +Adam King +Adam Particka +adanlobato +Adán Lobato +Adrian Aichner +Adrian Heine +Adrien Bertrand +aeroson +Ahmad Amireh +Ahmad M. Zawawi +ahoward +Akeksandr Motsjonov +Alasdair Smith +Alberto González Palomo +Alberto Pose +Albert Xing +Alexander Pavlov +Alexander Schepanovski +Alexander Shvets +Alexander Solovyov +Alexandre Bique +alexey-k +Alex Piggott +Aliaksei Chapyzhenka +Allen Sarkisyan +Ami Fischman +Amin Shali +Amin Ullah Khan +amshali@google.com +Amsul +amuntean +Amy +Ananya Sen +anaran +AndersMad +Anders Nawroth +Anderson Mesquita +Anders Wåglund +Andrea G +Andreas Reischuck +Andres Taylor +Andre von Houck +Andrew Cheng +Andrey Fedorov +Andrey Klyuchnikov +Andrey Lushnikov +Andrey Shchekin +Andy Joslin +Andy Kimball +Andy Li +Angelo +angelozerr +angelo.zerr@gmail.com +Ankit +Ankit Ahuja +Ansel Santosa +Anthony Dugois +anthonygego +Anthony Gégo +Anthony Grimes +Anton Kovalyov +Apollo Zhu +AQNOUCH Mohammed +Aram Shatakhtsyan +areos +Arnab Bose +Arsène von Wyss +Arthur Müller +Arun Narasani +as3boyan +asolove +atelierbram +AtomicPages LLC +Atul Bhouraskar +Aurelian Oancea +Axel Lewenhaupt +Barret Rennie +Basarat Ali Syed +Bastian Müller +belhaj +Bem Jones-Bey +benbro +Beni Cherniavsky-Paskin +Benjamin DeCoste +Benjamin Young +Ben Keen +Ben Miller +Ben Mosher +Bernhard Sirlinger +Bert Chang +Bharad +BigBlueHat +Billy Moon +binny +B Krishna Chaitanya +Blaine G +blukat29 +boomyjee +borawjm +Brad Metcalf +Brandon Frohs +Brandon Wamboldt +Brett Zamir +Brian Grinstead +Brian Sletten +brrd +Bruce Mitchener +Bryan Massoth +Caitlin Potter +Calin Barbat +callodacity +Camilo Roca +Chad Jolly +Chandra Sekhar Pydi +Charles Skelton +Cheah Chu Yeow +Chris Coyier +Chris Ford +Chris Granger +Chris Houseknecht +Chris Lohfink +Chris Morgan +Chris Smith +Christian Gruen +Christian Oyarzun +Christian Petrov +Christopher Brown +Christopher Kramer +Christopher Mitchell +Christopher Pfohl +Chunliang Lyu +ciaranj +CodeAnimal +CodeBitt +coderaiser +Cole R Lawrence +ComFreek +Curtis Gagliardi +dagsta +daines +Dale Jung +Dan Bentley +Dan Heberden +Daniel, Dao Quang Minh +Daniele Di Sarli +Daniel Faust +Daniel Huigens +Daniel Kesler +Daniel KJ +Daniel Neel +Daniel Parnell +Daniel Thwaites +Danila Malyutin +Danny Yoo +darealshinji +Darius Roberts +Dave Brondsema +Dave Myers +David Barnett +David H. Bronke +David Mignot +David Pathakjee +David Vázquez +David Whittington +deebugger +Deep Thought +Devin Abbott +Devon Carew +Dick Choi +dignifiedquire +Dimage Sapelkin +Dmitry Kiselyov +domagoj412 +Dominator008 +Domizio Demichelis +Doug Wikle +Drew Bratcher +Drew Hintz +Drew Khoury +Drini Cami +Dror BG +duralog +dwelle +eborden +edsharp +ekhaled +Elisée +Emmanuel Schanzer +Enam Mijbah Noor +Eric Allam +Erik Welander +eustas +Fabien Dubosson +Fabien O'Carroll +Fabio Zendhi Nagao +Faiza Alsaied +Fauntleroy +fbuchinger +feizhang365 +Felipe Lalanne +Felix Raab +ficristo +Filip Noetzel +Filip Stollár +flack +Florian Felten +ForbesLindesay +Forbes Lindesay +Ford_Lawnmower +Forrest Oliphant +Franco Catena +Frank Wiegand +Fredrik Borg +Gabriel Gheorghian +Gabriel Horner +Gabriel Nahmias +galambalazs +Gary Sheng +Gautam Mehta +Gavin Douglas +gekkoe +Geordie Hall +George Stephanis +geowarin +Gerard Braad +Gergely Hegykozi +Giovanni Calò +Glebov Boris +Glenn Jorde +Glenn Ruehle +Golevka +Google Inc. +Gordon Smith +Grant Skinner +greengiant +Gregory Koberger +Grzegorz Mazur +Guillaume Massé +Guillaume Massé +guraga +Gustavo Rodrigues +Hakan Tunc +Hans Engel +Hardest +Harshvardhan Gupta +Hasan Karahan +Hector Oswaldo Caballero +Hendrik Wallbaum +Herculano Campos +Hiroyuki Makino +hitsthings +Hocdoc +Hugues Malphettes +Ian Beck +Ian Davies +Ian Dickinson +Ian Wehrman +Ian Wetherbee +Ice White +ICHIKAWA, Yuji +idleberg +ilvalle +Ingo Richter +Irakli Gozalishvili +Ivan Kurnosov +Ivoah +Jacob Lee +Jaimin +Jake Peyser +Jakob Miland +Jakub Vrana +Jakub Vrána +James Campos +James Howard +James Thorne +Jamie Hill +Jamie Morris +Jan Jongboom +jankeromnes +Jan Keromnes +Jan Odvarko +Jan Schär +Jan T. Sott +Jared Dean +Jared Forsyth +Jared Jacobs +Jason +Jason Barnabe +Jason Grout +Jason Johnston +Jason San Jose +Jason Siefken +Jaydeep Solanki +Jean Boussier +Jeff Blaisdell +Jeff Hanke +Jeff Jenkins +jeffkenton +Jeff Pickhardt +jem (graphite) +Jeremy Parmenter +Jim +Jim Avery +JobJob +jochenberger +Jochen Berger +Joel Einbinder +joelpinheiro +Johan Ask +John Connor +John-David Dalton +John Engler +John Lees-Miller +John Snelson +John Van Der Loo +Jon Ander Peñalba +Jonas Döbertin +Jonas Helfer +Jonathan Malmaud +Jon Gacnik +jongalloway +Jon Malmaud +Jon Sangster +Joost-Wim Boekesteijn +Joseph Pecoraro +Josh Barnes +Josh Cohen +Josh Soref +Joshua Newman +Josh Watzman +jots +jsoojeon +ju1ius +Juan Benavides Romero +Jucovschi Constantin +Juho Vuori +Julien Rebetez +Justin Andresen +Justin Hileman +jwallers@gmail.com +kaniga +karevn +Kayur Patel +Kazuhito Hokamura +Ken Newman +ken restivo +Ken Rockot +Kevin Earls +Kevin Kwok +Kevin Muret +Kevin Sawicki +Kevin Ushey +Klaus Silveira +Koh Zi Han, Cliff +komakino +Konstantin Lopuhin +koops +Kris Ciccarello +ks-ifware +kubelsmieci +KwanEsq +Kyle Kelley +KyleMcNutt +Lanfei +Lanny +Laszlo Vidacs +leaf corcoran +Leonid Khachaturov +Leon Sorokin +Leonya Khachaturov +Liam Newman +Libo Cannici +LloydMilligan +LM +lochel +Lorenzo Stoakes +Louis Mauchet +Luca Fabbri +Luciano Longo +Lu Fangjian +Luke Browning +Luke Granger-Brown +Luke Stagner +lynschinzer +M1cha +Madhura Jayaratne +Maksim Lin +Maksym Taran +Malay Majithia +Manideep +Manuel Rego Casasnovas +Marat Dreizin +Marcel Gerber +Marcelo Camargo +Marco Aurélio +Marco Munizaga +Marcus Bointon +Marek Rudnicki +Marijn Haverbeke +Mário Gonçalves +Mario Pietsch +Mark Anderson +Mark Lentczner +Marko Bonaci +Mark Peace +Markus Bordihn +Martin Balek +Martín Gaitán +Martin Hasoň +Martin Hunt +Martin Laine +Martin Zagora +Mason Malone +Mateusz Paprocki +Mathias Bynens +mats cronqvist +Matt Gaide +Matthew Bauer +Matthew Beale +matthewhayes +Matthew Rathbone +Matthias Bussonnier +Matthias BUSSONNIER +Matt McDonald +Matt Pass +Matt Sacks +mauricio +Maximilian Hils +Maxim Kraev +Max Kirsch +Max Schaefer +Max Xiantu +mbarkhau +McBrainy +mce2 +melpon +Metatheos +Micah Dubinko +Michael +Michael Goderbauer +Michael Grey +Michael Kaminsky +Michael Lehenbauer +Michael Walker +Michael Zhou +Michal Čihař +Michal Dorner +Mighty Guava +Miguel Castillo +mihailik +Mike +Mike Brevoort +Mike Diaz +Mike Ivanov +Mike Kadin +Mike Kobit +MinRK +Miraculix87 +misfo +mkaminsky11 +mloginov +Moritz Schwörer +Moshe Wajnberg +mps +ms +mtaran-google +Mu-An Chiou +mzabuawala +Narciso Jaramillo +Nathan Williams +ndr +nerbert +NetworkNode +nextrevision +ngn +nguillaumin +Ng Zhi An +Nicholas Bollweg +Nicholas Bollweg (Nick) +Nick Kreeger +Nick Small +Nicolas Kick +Nicolò Ribaudo +Niels van Groningen +nightwing +Nikita Beloglazov +Nikita Vasilyev +Nikolay Kostov +nilp0inter +Nisarg Jhaveri +nlwillia +noragrossman +Norman Rzepka +opl- +Oreoluwa Onatemowo +Oskar Segersvärd +pablo +pabloferz +Pablo Zubieta +InstallationPage +paladox +Panupong Pasupat +paris +Paris +Paris Kasidiaris +Patil Arpith +Patrick Stoica +Patrick Strawderman +Paul Garvin +Paul Ivanov +Paul Masson +Pavel +Pavel Feldman +Pavel Petržela +Pavel Strashkin +Paweł Bartkiewicz +peteguhl +peter +Peter Flynn +peterkroon +Peter Kroon +Philipp A +Philip Stadermann +Pierre Gerold +Piët Delport +Pieter Ouwerkerk +Pontus Melke +prasanthj +Prasanth J +Prayag Verma +Radek Piórkowski +Rahul +Rahul Anand +ramwin1 +Randall Mason +Randy Burden +Randy Edmunds +Rasmus Erik Voel Jensen +Rasmus Schultz +ray ratchup +Ray Ratchup +Remi Nyborg +Renaud Durlin +Richard Denton +Richard van der Meer +Richard Z.H. Wang +Rishi Goomar +Robert Brignull +Robert Crossfield +Roberto Abdelkader Martínez Pérez +robertop23 +Robert Plummer +Rrandom +Rrrandom +Ruslan Osmanov +Ryan Petrello +Ryan Prior +sabaca +Sam Lee +Sam Rawlins +Samuel Ainsworth +Sam Wilson +sandeepshetty +Sander AKA Redsandro +Sander Verweij +santec +Sarah McAlear and Wenlin Zhang +Sascha Peilicke +satamas +satchmorun +sathyamoorthi +Saul Costa +S. Chris Colbert +SCLINIC\jdecker +Scott Aikin +Scott Goodhew +Sebastian Wilzbach +Sebastian Zaha +Sergey Goder +Sergey Tselovalnikov +Se-Won Kim +shaund +shaun gilchrist +Shawn A +Shea Bunge +sheopory +Shil S +Shiv Deepak +Shmuel Englard +Shubham Jain +Siamak Mokhtari +silverwind +Simon Edwards +sinkuu +snasa +soliton4 +sonson +spastorelli +srajanpaliwal +Stanislav Oaserele +Stas Kobzar +Stefan Borsje +Steffen Beyer +Steffen Bruchmann +Steffen Kowalski +Stephen Lavelle +Steve Champagne +Steve Hoover +Steve O'Hara +stoskov +Stu Kennedy +Sungho Kim +sverweij +Taha Jahangir +takamori +Tako Schotanus +Takuji Shimokawa +Takuya Matsuyama +Tarmil +TDaglis +tel +Tentone +tfjgeorge +Thaddee Tyl +thanasis +TheHowl +themrmax +think +Thomas Dvornik +Thomas Kluyver +Thomas Schmid +Tim Alby +Tim Baumann +Timothy Farrell +Timothy Gu +Timothy Hatcher +TobiasBg +Todd Berman +Todd Kennedy +Tomas-A +Tomas Varaneckas +Tom Erik Støwer +Tom Klancer +Tom MacWright +Tony Jian +Travis Heppe +Triangle717 +Tristan Tarrant +TSUYUSATO Kitsune +twifkak +Tyler Long +VapidWorx +Vestimir Markov +vf +Victor Bocharsky +Vincent Woo +Volker Mische +Weiyan Shao +wenli +Wes Cossick +Wesley Wiser +Weston Ruter +Will Binns-Smith +Will Dean +William Jamieson +William Stein +Willy +Wojtek Ptak +Wu Cheng-Han +Xavier Mendez +Yassin N. Hassan +YNH Webdev +Yunchi Luo +Yuvi Panda +Yvonnick Esnault +Zac Anger +Zachary Dremann +Zeno Rocha +Zhang Hao +Ziv +zziuni +魏鹏刚 diff --git a/global/codemirror/CHANGELOG.md b/global/codemirror/CHANGELOG.md new file mode 100644 index 00000000..b23029ca --- /dev/null +++ b/global/codemirror/CHANGELOG.md @@ -0,0 +1,1234 @@ +## 5.30.0 (2017-09-20) + +### Bug fixes + +Fixed a number of issues with drawing right-to-left selections and mouse selection in bidirectional text. + +[search addon](http://codemirror.net/demo/search/): Fix crash when restarting search after doing empty search. + +[mark-selection addon](http://cm/doc/manual.html#addon_mark-selection): Fix off-by-one bug. + +[tern addon](http://codemirror.net/demo/tern.html): Fix bad request made when editing at the bottom of a large document. + +[javascript mode](http://codemirror.net/mode/javascript/): Improve parsing in a number of corner cases. + +[markdown mode](http://codemirror.net/mode/markdown/): Fix crash when a sub-mode doesn't support indentation, allow uppercase X in task lists. + +[gfm mode](http://codemirror.net/mode/gfm/): Don't highlight SHA1 'hashes' without numbers to avoid false positives. + +[soy mode](http://codemirror.net/mode/soy/): Support injected data and `@param` in comments. + +### New features + +[simple mode addon](http://codemirror.net/demo/simplemode.html): Allow groups in regexps when `token` isn't an array. + +## 5.29.0 (2017-08-24) + +### Bug fixes + +Fix crash in contentEditable input style when editing near a bookmark. + +Make sure change origins are preserved when splitting changes on [read-only marks](http://codemirror.net/doc/manual.html#mark_readOnly). + +[javascript mode](http://codemirror.net/mode/javascript/): More support for TypeScript syntax. + +[d mode](http://codemirror.net/mode/d/): Support nested comments. + +[python mode](http://codemirror.net/mode/python/): Improve tokenizing of operators. + +[markdown mode](http://codemirror.net/mode/markdown/): Further improve CommonMark conformance. + +[css mode](http://codemirror.net/mode/css/): Don't run comment tokens through the mode's state machine. + +[shell mode](http://codemirror.net/mode/shell/): Allow strings to span lines. + +[search addon](http://codemirror.net/demo/search/): Fix crash in persistent search when `extraKeys` is null. + +## 5.28.0 (2017-07-21) + +### Bug fixes + +Fix copying of, or replacing editor content with, a single dash character when copying a big selection in some corner cases. + +Make [`"goLineLeft"`](http://codemirror.net/doc/manual.html#command_goLineLeft)/`"goLineRight"` behave better on wrapped lines. + +[sql mode](http://codemirror.net/mode/sql/): Fix tokenizing of multi-dot operator and allow digits in subfield names. + +[searchcursor addon](http://codemirror.net/doc/manual.html#addon_searchcursor): Fix infinite loop on some composed character inputs. + +[markdown mode](http://codemirror.net/mode/markdown/): Make list parsing more CommonMark-compliant. + +[gfm mode](http://codemirror.net/mode/gfm/): Highlight colon syntax for emoji. + +### New features + +Expose [`startOperation`](http://codemirror.net/doc/manual.html#startOperation) and `endOperation` for explicit operation management. + +[sublime bindings](http://codemirror.net/demo/sublime.html): Add extend-selection (Ctrl-Alt- or Cmd-Shift-Up/Down). + +## 5.27.4 (2017-06-29) + +### Bug fixes + +Fix crash when using mode lookahead. + +[markdown mode](http://codemirror.net/mode/markdown/): Don't block inner mode's indentation support. + +## 5.27.2 (2017-06-22) + +### Bug fixes + +Fix crash in the [simple mode](http://codemirror.net/demo/simplemode.html)< addon. + +## 5.27.0 (2017-06-22) + +### Bug fixes + +Fix infinite loop in forced display update. + +Properly disable the hidden textarea when `readOnly` is `"nocursor"`. + +Calling the `Doc` constructor without `new` works again. + +[sql mode](http://codemirror.net/mode/sql/): Handle nested comments. + +[javascript mode](http://codemirror.net/mode/javascript/): Improve support for TypeScript syntax. + +[markdown mode](http://codemirror.net/mode/markdown/): Fix bug where markup was ignored on indented paragraph lines. + +[vim bindings](http://codemirror.net/demo/vim.html): Referencing invalid registers no longer causes an uncaught exception. + +[rust mode](http://codemirror.net/mode/rust/): Add the correct MIME type. + +[matchbrackets addon](http://codemirror.net/doc/manual.html#addon_matchbrackets): Document options. + +### New features + +Mouse button clicks can now be bound in keymaps by using names like `"LeftClick"` or `"Ctrl-Alt-MiddleTripleClick"`. When bound to a function, that function will be passed the position of the click as second argument. + +The behavior of mouse selection and dragging can now be customized with the [`configureMouse`](http://codemirror.net/doc/manual.html#option_configureMouse) option. + +Modes can now look ahead across line boundaries with the [`StringStream`](http://codemirror.net/doc/manual.html#StringStream)`.lookahead` method. + +Introduces a `"type"` token type, makes modes that recognize types output it, and add styling for it to the themes. + +New [`pasteLinesPerSelection`](http://codemirror.net/doc/manual.html#option_pasteLinesPerSelection) option to control the behavior of pasting multiple lines into multiple selections. + +[searchcursor addon](http://codemirror.net/doc/manual.html#addon_searchcursor): Support multi-line regular expression matches, and normalize strings when matching. + +## 5.26.0 (2017-05-22) + +### Bug fixes + +In textarea-mode, don't reset the input field during composition. + +More careful restoration of selections in widgets, during editor redraw. + +[javascript mode](http://codemirror.net/mode/javascript/): More TypeScript parsing fixes. + +[julia mode](http://codemirror.net/mode/julia/): Fix issue where the mode gets stuck. + +[markdown mode](http://codemirror.net/mode/markdown/): Understand cross-line links, parse all bracketed things as links. + +[soy mode](http://codemirror.net/mode/soy/): Support single-quoted strings. + +[go mode](http://codemirror.net/mode/go/): Don't try to indent inside strings or comments. + +### New features + +[vim bindings](http://codemirror.net/demo/vim.html): Parse line offsets in line or range specs. + +## 5.25.2 (2017-04-20) + +### Bug fixes + +Better handling of selections that cover the whole viewport in contentEditable-mode. + +No longer accidentally scroll the editor into view when calling `setValue`. + +Work around Chrome Android bug when converting screen coordinates to editor positions. + +Make sure long-clicking a selection sets a cursor and doesn't show the editor losing focus. + +Fix issue where pointer events were incorrectly disabled on Chrome's overlay scrollbars. + +[javascript mode](http://codemirror.net/mode/javascript/): Recognize annotations and TypeScript-style type parameters. + +[shell mode](http://codemirror.net/mode/shell/): Handle nested braces. + +[markdown mode](http://codemirror.net/mode/markdown/): Make parsing of strong/em delimiters CommonMark-compliant. + +## 5.25.0 (2017-03-20) + +### Bug fixes + +In contentEditable-mode, properly locate changes that repeat a character when inserted with IME. + +Fix handling of selections bigger than the viewport in contentEditable mode. + +Improve handling of changes that insert or delete lines in contentEditable mode. + +Count Unicode control characters 0x80 to 0x9F as special (non-printing) chars. + +Fix handling of shadow DOM roots when finding the active element. + +Add `role=presentation` to more DOM elements to improve screen reader support. + +[merge addon](http://codemirror.net/doc/manual.html#addon_merge): Make aligning of unchanged chunks more robust. + +[comment addon](http://codemirror.net/doc/manual.html#addon_comment): Fix comment-toggling on a block of text that starts and ends in a (differnet) block comment. + +[javascript mode](http://codemirror.net/mode/javascript/): Improve support for TypeScript syntax. + +[r mode](http://codemirror.net/mode/r/): Fix indentation after semicolon-less statements. + +[shell mode](http://codemirror.net/mode/shell/): Properly handle escaped parentheses in parenthesized expressions. + +[markdown mode](http://codemirror.net/mode/markdown/): Fix a few bugs around leaving fenced code blocks. + +[soy mode](http://codemirror.net/mode/soy/): Improve indentation. + +### New features + +[lint addon](http://codemirror.net/doc/manual.html#addon_lint): Support asynchronous linters that return promises. + +[continuelist addon](http://codemirror.net/doc/manual.html#addon_continuelist): Support continuing task lists. + +[vim bindings](http://codemirror.net/demo/vim.html): Make Y behave like yy. + +[sql mode](http://codemirror.net/mode/sql/): Support sqlite dialect. + +## 5.24.2 (2017-02-22) + +### Bug fixes + +[javascript mode](http://codemirror.net/mode/javascript/): Support computed class method names. + +[merge addon](http://codemirror.net/doc/manual.html#addon_merge): Improve aligning of unchanged code in the presence of marks and line widgets. + +## 5.24.0 (2017-02-20) + +### Bug fixes + +A cursor directly before a line-wrapping break is now drawn before or after the line break depending on which direction you arrived from. + +Visual cursor motion in line-wrapped right-to-left text should be much more correct. + +Fix bug in handling of read-only marked text. + +[shell mode](http://codemirror.net/mode/shell/): Properly tokenize nested parentheses. + +[python mode](http://codemirror.net/mode/python/): Support underscores in number literals. + +[sass mode](http://codemirror.net/mode/sass/): Uses the full list of CSS properties and keywords from the CSS mode, rather than defining its own incomplete subset. + +[css mode](http://codemirror.net/mode/css/): Expose `lineComment` property for LESS and SCSS dialects. Recognize vendor prefixes on pseudo-elements. + +[julia mode](http://codemirror.net/mode/julia/): Properly indent `elseif` lines. + +[markdown mode](http://codemirror.net/mode/markdown/): Properly recognize the end of fenced code blocks when inside other markup. + +[scala mode](http://codemirror.net/mode/clike/): Improve handling of operators containing #, @, and : chars. + +[xml mode](http://codemirror.net/mode/xml/): Allow dashes in HTML tag names. + +[javascript mode](http://codemirror.net/mode/javascript/): Improve parsing of async methods, TypeScript-style comma-separated superclass lists. + +[indent-fold addon](http://codemirror.net/demo/folding.html): Ignore comment lines. + +### New features + +Positions now support a `sticky` property which determines whether they should be associated with the character before (value `"before"`) or after (value `"after"`) them. + +[vim bindings](http://codemirror.net/demo/vim.html): Make it possible to remove built-in bindings through the API. + +[comment addon](http://codemirror.net/doc/manual.html#addon_comment): Support a per-mode useInnerComments option to optionally suppress descending to the inner modes to get comment strings. + +### Breaking changes + +The [sass mode](http://codemirror.net/mode/sass/) now depends on the [css mode](http://codemirror.net/mode/css/). + +## 5.23.0 (2017-01-19) + +### Bug fixes + +Presentation-related elements DOM elements are now marked as such to help screen readers. + +[markdown mode](http://codemirror.net/mode/markdown/): Be more picky about what HTML tags look like to avoid false positives. + +### New features + +`findModeByMIME` now understands `+json` and `+xml` MIME suffixes. + +[closebrackets addon](http://codemirror.net/doc/manual.html#addon_closebrackets): Add support for an `override` option to ignore language-specific defaults. + +[panel addon](http://codemirror.net/doc/manual.html#addon_panel): Add a `stable` option that auto-scrolls the content to keep it in the same place when inserting/removing a panel. + +## 5.22.2 (2017-01-12) + +### Bug fixes + +Include rollup.config.js in NPM package, so that it can be used to build from source. + +## 5.22.0 (2016-12-20) + +### Bug fixes + +[sublime bindings](http://codemirror.net/demo/sublime.html): Make `selectBetweenBrackets` work with multiple cursors. + +[javascript mode](http://codemirror.net/mode/javascript/): Fix issues with parsing complex TypeScript types, imports, and exports. + +A contentEditable editor instance with autofocus enabled no longer crashes during initializing. + +### New features + +[emacs bindings](http://codemirror.net/demo/emacs.html): Export `CodeMirror.emacs` to allow other addons to hook into Emacs-style functionality. + +[active-line addon](http://codemirror.net/doc/manual.html#addon_active-line): Add `nonEmpty` option. + +New event: [`optionChange`](http://codemirror.net/doc/manual.html#event_optionChange). + +## 5.21.0 (2016-11-21) + +### Bug fixes + +Tapping/clicking the editor in [contentEditable mode](http://codemirror.net/doc/manual.html#option_inputStyle) on Chrome now puts the cursor at the tapped position. + +Fix various crashes and misbehaviors when reading composition events in [contentEditable mode](http://codemirror.net/doc/manual.html#option_inputStyle). + +Catches and ignores an IE 'Unspecified Error' when creating an editor in an iframe before there is a ``. + +[merge addon](http://codemirror.net/doc/manual.html#addon_merge): Fix several issues in the chunk-aligning feature. + +[verilog mode](http://codemirror.net/mode/verilog): Rewritten to address various issues. + +[julia mode](http://codemirror.net/mode/julia): Recognize Julia 0.5 syntax. + +[swift mode](http://codemirror.net/mode/swift): Various fixes and adjustments to current syntax. + +[markdown mode](http://codemirror.net/mode/markdown): Allow lists without a blank line above them. + +### New features + +The [`setGutterMarker`](http://codemirror.net/doc/manual.html#setGutterMarker), [`clearGutter`](http://codemirror.net/doc/manual.html#clearGutter), and [`lineInfo`](http://codemirror.net/doc/manual.html#lineInfo) methods are now available on `Doc` objects. + +The [`heightAtLine`](http://codemirror.net/doc/manual.html#heightAtLine) method now takes an extra argument to allow finding the height at the top of the line's line widgets. + +[ruby mode](http://codemirror.net/mode/ruby): `else` and `elsif` are now immediately indented. + +[vim bindings](http://codemirror.net/demo/vim.html): Bind Ctrl-T and Ctrl-D to in- and dedent in insert mode. + +## 5.20.2 (2016-10-21) + +### Bug fixes + +Fix `CodeMirror.version` returning the wrong version number. + +## 5.20.0 (2016-10-20) + +### Bug fixes + +Make `newlineAndIndent` command work with multiple cursors on the same line. + +Make sure keypress events for backspace are ignored. + +Tokens styled with overlays no longer get a nonsense `cm-cm-overlay` class. + +Line endings for pasted content are now normalized to the editor's [preferred ending](http://codemirror.net/doc/manual.html#option_lineSeparator). + +[javascript mode](http://codemirror.net/mode/javascript): Improve support for class expressions. Support TypeScript optional class properties, the `abstract` keyword, and return type declarations for arrow functions. + +[css mode](http://codemirror.net/mode/css): Fix highlighting of mixed-case keywords. + +[closebrackets addon](http://codemirror.net/doc/manual.html#addon_closebrackets): Improve behavior when typing a quote before a string. + +### New features + +The core is now maintained as a number of small files, using ES6 syntax and modules, under the `src/` directory. A git checkout no longer contains a working `codemirror.js` until you `npm build` (but when installing from NPM, it is included). + +The [`refresh`](http://codemirror.net/doc/manual.html#event_refresh) event is now documented and stable. + +## 5.19.0 (2016-09-20) + +### Bugfixes + +[erlang mode](http://codemirror.net/mode/erlang): Fix mode crash when trying to read an empty context. + +[comment addon](http://codemirror.net/doc/manual.html#addon_comment): Fix broken behavior when toggling comments inside a comment. + +xml-fold addon: Fix a null-dereference bug. + +InstallationPage up and page down now do something even in single-line documents. + +Fix an issue where the cursor position could be off in really long (~8000 character) tokens. + +### New features + +[javascript mode](http://codemirror.net/mode/javascript): Better indentation when semicolons are missing. Better support for TypeScript classes, optional parameters, and the `type` keyword. + +The [`blur`](http://codemirror.net/doc/manual.html#event_blur) and [`focus`](http://codemirror.net/doc/manual.html#event_focus) events now pass the DOM event to their handlers. + +## 5.18.2 (2016-08-23) + +### Bugfixes + +[vue mode](http://codemirror.net/mode/vue): Fix outdated references to renamed Pug mode dependency. + +## 5.18.0 (2016-08-22) + +### Bugfixes + +Make sure [gutter backgrounds](http://codemirror.net/doc/manual.html#addLineClass) stick to the rest of the gutter during horizontal scrolling. + +The contenteditable [`inputStyle`](http://codemirror.net/doc/manual.html#option_inputStyle) now properly supports pasting on pre-Edge IE versions. + +[javascript mode](http://codemirror.net/mode/javascript): Fix some small parsing bugs and improve TypeScript support. + +[matchbrackets addon](http://codemirror.net/doc/manual.html#addon_matchbrackets): Fix bug where active highlighting was left in editor when the addon was disabled. + +[match-highlighter addon](http://codemirror.net/doc/manual.html#addon_match-highlighter): Only start highlighting things when the editor gains focus. + +[javascript-hint addon](http://codemirror.net/doc/manual.html#addon_javascript-hint): Also complete non-enumerable properties. + +### New features + +The [`addOverlay`](http://codemirror.net/doc/manual.html#addOverlay) method now supports a `priority` option to control the order in which overlays are applied. + +MIME types that end in `+json` now default to the JSON mode when the MIME itself is not defined. + +### Breaking changes + +The mode formerly known as Jade was renamed to [Pug](http://codemirror.net/mode/pug). + +The [Python mode](http://codemirror.net/mode/python) now defaults to Python 3 (rather than 2) syntax. + +## 5.17.0 (2016-07-19) + +### Bugfixes + +Fix problem with wrapped trailing whitespace displaying incorrectly. + +Prevent IME dialog from overlapping typed content in Chrome. + +Improve measuring of characters near a line wrap. + +[javascript mode](http://codemirror.net/mode/javascript): Improve support for `async`, allow trailing commas in `import` lists. + +[vim bindings](http://codemirror.net/demo/vim.html): Fix backspace in replace mode. + +[sublime bindings](http://codemirror.net/demo/sublime.html): Fix some key bindings on OS X to match Sublime Text. + +### New features + +[markdown mode](http://codemirror.net/mode/markdown): Add more classes to image links in highlight-formatting mode. + +## 5.16.0 (2016-06-20) + +### Bugfixes + +Fix glitches when dragging content caused by the drop indicator receiving mouse events. + +Make Control-drag work on Firefox. + +Make clicking or selection-dragging at the end of a wrapped line select the right position. + +[show-hint addon](http://codemirror.net/doc/manual.html#addon_show-hint): Prevent widget scrollbar from hiding part of the hint text. + +[rulers addon](http://codemirror.net/doc/manual.html#addon_rulers): Prevent rulers from forcing a horizontal editor scrollbar. + +### New features + +[search addon](http://codemirror.net/doc/manual.html#addon_search): Automatically bind search-related keys in persistent dialog. + +[sublime keymap](http://codemirror.net/demo/sublime.html): Add a multi-cursor aware smart backspace binding. + +## 5.15.2 (2016-05-20) + +### Bugfixes + +Fix a critical document corruption bug that occurs when a document is gradually grown. + +## 5.15.0 (2016-05-20) + +### Bugfixes + +Fix bug that caused the selection to reset when focusing the editor in contentEditable input mode. + +Fix issue where not all ASCII control characters were being replaced by placeholders. + +Remove the assumption that all modes have a `startState` method from several wrapping modes. + +Fix issue where the editor would complain about overlapping collapsed ranges when there weren't any. + +Optimize document tree building when loading or pasting huge chunks of content. + +[markdown mode](http://codemirror.net/mode/markdown/): Fix several issues in matching link targets. + +[clike mode](http://codemirror.net/mode/clike/): Improve indentation of C++ template declarations. + +### New features + +Explicitly bind Ctrl-O on OS X to make that binding (“open line”) act as expected. + +Pasting [linewise-copied](http://codemirror.net/doc/manual.html#option_lineWiseCopyCut) content when there is no selection now inserts the lines above the current line. + +[javascript mode](http://codemirror.net/mode/javascript/): Support `async`/`await` and improve support for TypeScript type syntax. + +## 5.14.2 (2016-04-20) + +### Bugfixes + +Push a new package to NPM due to an [NPM bug](https://github.com/npm/npm/issues/5082) omitting the LICENSE file in 5.14.0. + +Set `dataTransfer.effectAllowed` in `dragstart` handler to help browsers use the right drag icon. + +Add the [mbox mode](http://codemirror.net/mode/mbox/index.html) to `mode/meta.js`. + +## 5.14.0 (2016-04-20) + +### Bugfixes + +[`posFromIndex`](http://codemirror.net/doc/manual.html#posFromIndex) and [`indexFromPos`](http://codemirror.net/doc/manual.html#indexFromPos) now take [`lineSeparator`](http://codemirror.net/doc/manual.html#option_lineSeparator) into account. + +[vim bindings](http://codemirror.net/demo/vim.html): Only call `.save()` when it is actually available. + +[comment addon](http://codemirror.net/doc/manual.html#addon_comment): Be careful not to mangle multi-line strings. + +[Python mode](http://codemirror.net/mode/python/index.html): Improve distinguishing of decorators from `@` operators. + +[`findMarks`](http://codemirror.net/doc/manual.html#findMarks): No longer return marks that touch but don't overlap given range. + +### New features + +[vim bindings](http://codemirror.net/demo/vim.html): Add yank command. + +[match-highlighter addon](http://codemirror.net/doc/manual.html#addon_match-highlighter): Add `trim` option to disable ignoring of whitespace. + +[PowerShell mode](http://codemirror.net/mode/powershell/index.html): Added. + +[Yacas mode](http://codemirror.net/mode/yacas/index.html): Added. + +[Web IDL mode](http://codemirror.net/mode/webidl/index.html): Added. + +[SAS mode](http://codemirror.net/mode/sas/index.html): Added. + +[mbox mode](http://codemirror.net/mode/mbox/index.html): Added. + +## 5.13.2 (2016-03-23) + +### Bugfixes + +Solves a problem where the gutter would sometimes not extend all the way to the end of the document. + +## 5.13.0 (2016-03-21) + +### New features + +New DOM event forwarded: [`"dragleave"`](http://codemirror.net/doc/manual.html#event_dom). + +[protobuf mode](http://codemirror.net/mode/protobuf/index.html): Newly added. + +### Bugfixes + +Fix problem where [`findMarks`](http://codemirror.net/doc/manual.html#findMarks) sometimes failed to find multi-line marks. + +Fix crash that showed up when atomic ranges and bidi text were combined. + +[show-hint addon](http://codemirror.net/demo/complete.html): Completion widgets no longer close when the line indented or dedented. + +[merge addon](http://codemirror.net/demo/merge.html): Fix bug when merging chunks at the end of the file. + +[placeholder addon](http://codemirror.net/doc/manual.html#addon_placeholder): No longer gets confused by [`swapDoc`](http://codemirror.net/doc/manual.html#swapDoc). + +[simplescrollbars addon](http://codemirror.net/doc/manual.html#addon_simplescrollbars): Fix invalid state when deleting at end of document. + +[clike mode](http://codemirror.net/mode/clike/index.html): No longer gets confused when a comment starts after an operator. + +[markdown mode](http://codemirror.net/mode/markdown/index.html): Now supports CommonMark-style flexible list indentation. + +[dylan mode](http://codemirror.net/mode/dylan/index.html): Several improvements and fixes. + +## 5.12.0 (2016-02-19) + +### New features + +[Vim bindings](http://codemirror.net/demo/vim.html): Ctrl-Q is now an alias for Ctrl-V. + +[Vim bindings](http://codemirror.net/demo/vim.html): The Vim API now exposes an `unmap` method to unmap bindings. + +[active-line addon](http://codemirror.net/demo/activeline.html): This addon can now style the active line's gutter. + +[FCL mode](http://codemirror.net/mode/fcl/): Newly added. + +[SQL mode](http://codemirror.net/mode/sql/): Now has a Postgresql dialect. + +### Bugfixes + +Fix [issue](https://github.com/codemirror/CodeMirror/issues/3781) where trying to scroll to a horizontal position outside of the document's width could cause the gutter to be positioned incorrectly. + +Use absolute, rather than fixed positioning in the context-menu intercept hack, to work around a [problem](https://github.com/codemirror/CodeMirror/issues/3238) when the editor is inside a transformed parent container. + +Solve a [problem](https://github.com/codemirror/CodeMirror/issues/3821) where the horizontal scrollbar could hide text in Firefox. + +Fix a [bug](https://github.com/codemirror/CodeMirror/issues/3834) that caused phantom scroll space under the text in some situations. + +[Sublime Text bindings](http://codemirror.net/demo/sublime.html): Bind delete-line to Shift-Ctrl-K on OS X. + +[Markdown mode](http://codemirror.net/mode/markdown/): Fix [issue](https://github.com/codemirror/CodeMirror/issues/3787) where the mode would keep state related to fenced code blocks in an unsafe way, leading to occasional corrupted parses. + +[Markdown mode](http://codemirror.net/mode/markdown/): Ignore backslashes in code fragments. + +[Markdown mode](http://codemirror.net/mode/markdown/): Use whichever mode is registered as `text/html` to parse HTML. + +[Clike mode](http://codemirror.net/mode/clike/): Improve indentation of Scala `=>` functions. + +[Python mode](http://codemirror.net/mode/python/): Improve indentation of bracketed code. + +[HTMLMixed mode](http://codemirror.net/mode/htmlmixed/): Support multi-line opening tags for sub-languages (` + + + + + +
+

Active Line Demo

+
+ + + +

Styling the current cursor line.

+ + + +
diff --git a/global/codemirror/demo/anywordhint.html b/global/codemirror/demo/anywordhint.html new file mode 100644 index 00000000..0a7caece --- /dev/null +++ b/global/codemirror/demo/anywordhint.html @@ -0,0 +1,79 @@ + + +CodeMirror: Any Word Completion Demo + + + + + + + + + + + +
+

Any Word Completion Demo

+
+ +

Press ctrl-space to activate autocompletion. The +completion uses +the anyword-hint.js +module, which simply looks at nearby words in the buffer and completes +to those.

+ + +
diff --git a/global/codemirror/demo/bidi.html b/global/codemirror/demo/bidi.html new file mode 100644 index 00000000..645e648c --- /dev/null +++ b/global/codemirror/demo/bidi.html @@ -0,0 +1,106 @@ + + +CodeMirror: Bi-directional Text Demo + + + + + + + + + +
+

Bi-directional Text Demo

+
+
+ Editor default direction: + + +
+
+ HTML document direction: + + +
+
+ +
+
+ + + +

Demonstration of bi-directional text support. See + the related + blog post for more background.

+ +
diff --git a/global/codemirror/demo/btree.html b/global/codemirror/demo/btree.html new file mode 100644 index 00000000..ba07bc74 --- /dev/null +++ b/global/codemirror/demo/btree.html @@ -0,0 +1,83 @@ + + +CodeMirror: B-Tree visualization + + + + + + + + +
+

B-Tree visualization

+
+
+ + + +

+ +
diff --git a/global/codemirror/demo/buffers.html b/global/codemirror/demo/buffers.html new file mode 100644 index 00000000..16ffc7df --- /dev/null +++ b/global/codemirror/demo/buffers.html @@ -0,0 +1,109 @@ + + +CodeMirror: Multiple Buffer & Split View Demo + + + + + + + + + + +
+

Multiple Buffer & Split View Demo

+ + +
+
+ Select buffer: +     +
+
+
+ Select buffer: +     +
+ + + +

Demonstration of + using linked documents + to provide a split view on a document, and + using swapDoc + to use a single editor to display multiple documents.

+ +
diff --git a/global/codemirror/demo/changemode.html b/global/codemirror/demo/changemode.html new file mode 100644 index 00000000..9405932a --- /dev/null +++ b/global/codemirror/demo/changemode.html @@ -0,0 +1,58 @@ + + +CodeMirror: Mode-Changing Demo + + + + + + + + + + +
+

Mode-Changing Demo

+
+ +

On changes to the content of the above editor, a (crude) script +tries to auto-detect the language used, and switches the editor to +either JavaScript or Scheme mode based on that.

+ + +
diff --git a/global/codemirror/demo/closebrackets.html b/global/codemirror/demo/closebrackets.html new file mode 100644 index 00000000..d702f526 --- /dev/null +++ b/global/codemirror/demo/closebrackets.html @@ -0,0 +1,52 @@ + + +CodeMirror: Closebrackets Demo + + + + + + + + + + +
+

Closebrackets Demo

+
+ + +
diff --git a/global/codemirror/demo/closetag.html b/global/codemirror/demo/closetag.html new file mode 100644 index 00000000..79959d2c --- /dev/null +++ b/global/codemirror/demo/closetag.html @@ -0,0 +1,41 @@ + + +CodeMirror: Close-Tag Demo + + + + + + + + + + + + + + +
+

Close-Tag Demo

+
+ + +
diff --git a/global/codemirror/demo/complete.html b/global/codemirror/demo/complete.html new file mode 100644 index 00000000..0464389e --- /dev/null +++ b/global/codemirror/demo/complete.html @@ -0,0 +1,126 @@ + + +CodeMirror: Autocomplete Demo + + + + + + + + + + + + + +
+

Autocomplete Demo

+
+ +

Press ctrl-space to activate autocompletion. Built +on top of the show-hint +and javascript-hint +addons.

+ +
+ + + +
diff --git a/global/codemirror/demo/emacs.html b/global/codemirror/demo/emacs.html new file mode 100644 index 00000000..c626b8d4 --- /dev/null +++ b/global/codemirror/demo/emacs.html @@ -0,0 +1,75 @@ + + +CodeMirror: Emacs bindings demo + + + + + + + + + + + + + + + + +
+

Emacs bindings demo

+
+ +

The emacs keybindings are enabled by +including keymap/emacs.js and setting +the keyMap option to "emacs". Because +CodeMirror's internal API is quite different from Emacs, they are only +a loose approximation of actual emacs bindings, though.

+ +

Also note that a lot of browsers disallow certain keys from being +captured. For example, Chrome blocks both Ctrl-W and Ctrl-N, with the +result that idiomatic use of Emacs keys will constantly close your tab +or open a new window.

+ + + +
diff --git a/global/codemirror/demo/folding.html b/global/codemirror/demo/folding.html new file mode 100644 index 00000000..1882b7c8 --- /dev/null +++ b/global/codemirror/demo/folding.html @@ -0,0 +1,133 @@ + + + + CodeMirror: Code Folding Demo + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Code Folding Demo

+
+
JavaScript:
+
+
HTML:
+
+
Python:
+
+
Markdown:
+
+
+ +
+ diff --git a/global/codemirror/demo/fullscreen.html b/global/codemirror/demo/fullscreen.html new file mode 100644 index 00000000..1fbdc488 --- /dev/null +++ b/global/codemirror/demo/fullscreen.html @@ -0,0 +1,83 @@ + + +CodeMirror: Full Screen Editing + + + + + + + + + + + + +
+

Full Screen Editing

+
+ + +

Demonstration of + the fullscreen + addon. Press F11 when cursor is in the editor to + toggle full screen editing. Esc can also be used + to exit full screen editing.

+
diff --git a/global/codemirror/demo/hardwrap.html b/global/codemirror/demo/hardwrap.html new file mode 100644 index 00000000..84ba0cc0 --- /dev/null +++ b/global/codemirror/demo/hardwrap.html @@ -0,0 +1,75 @@ + + +CodeMirror: Hard-wrapping Demo + + + + + + + + + + +
+

Hard-wrapping Demo

+
+ +

Demonstration of +the hardwrap addon. +The above editor has its change event hooked up to +the wrapParagraphsInRange method, so that the paragraphs +are reflown as you are typing.

+ + + +
diff --git a/global/codemirror/demo/html5complete.html b/global/codemirror/demo/html5complete.html new file mode 100644 index 00000000..411baae3 --- /dev/null +++ b/global/codemirror/demo/html5complete.html @@ -0,0 +1,56 @@ + + + + CodeMirror: HTML completion demo + + + + + + + + + + + + + + + + + + + +
+

HTML completion demo

+ +

Shows the XML completer + parameterized with information about the tags in HTML. + Press ctrl-space to activate completion.

+ +
+ + +
+ diff --git a/global/codemirror/demo/indentwrap.html b/global/codemirror/demo/indentwrap.html new file mode 100644 index 00000000..3d3d0af6 --- /dev/null +++ b/global/codemirror/demo/indentwrap.html @@ -0,0 +1,59 @@ + + +CodeMirror: Indented wrapped line demo + + + + + + + + + +
+

Indented wrapped line demo

+
+ +

This page uses a hack on top of the "renderLine" + event to make wrapped text line up with the base indentation of + the line.

+ + + +
diff --git a/global/codemirror/demo/lint.html b/global/codemirror/demo/lint.html new file mode 100644 index 00000000..96009b4e --- /dev/null +++ b/global/codemirror/demo/lint.html @@ -0,0 +1,171 @@ + + +CodeMirror: Linter Demo + + + + + + + + + + + + + + + + + + +
+

Linter Demo

+ + +

+ +

+ +

+ + +
diff --git a/global/codemirror/demo/loadmode.html b/global/codemirror/demo/loadmode.html new file mode 100644 index 00000000..809cd902 --- /dev/null +++ b/global/codemirror/demo/loadmode.html @@ -0,0 +1,72 @@ + + +CodeMirror: Lazy Mode Loading Demo + + + + + + + + + + +
+

Lazy Mode Loading Demo

+

Current mode: text/plain

+
+

Filename, mime, or mode name:

+ + +
diff --git a/global/codemirror/demo/marker.html b/global/codemirror/demo/marker.html new file mode 100644 index 00000000..3a8b8500 --- /dev/null +++ b/global/codemirror/demo/marker.html @@ -0,0 +1,52 @@ + + +CodeMirror: Breakpoint Demo + + + + + + + + + +
+

Breakpoint Demo

+
+ +

Click the line-number gutter to add or remove 'breakpoints'.

+ + + +
diff --git a/global/codemirror/demo/markselection.html b/global/codemirror/demo/markselection.html new file mode 100644 index 00000000..d4c8a7a0 --- /dev/null +++ b/global/codemirror/demo/markselection.html @@ -0,0 +1,52 @@ + + +CodeMirror: Selection Marking Demo + + + + + + + + + + +
+

Selection Marking Demo

+
+ + + +

Simple addon to easily mark (and style) selected text. Docs.

+ +
diff --git a/global/codemirror/demo/matchhighlighter.html b/global/codemirror/demo/matchhighlighter.html new file mode 100644 index 00000000..893d7213 --- /dev/null +++ b/global/codemirror/demo/matchhighlighter.html @@ -0,0 +1,103 @@ + + +CodeMirror: Match Highlighter Demo + + + + + + + + + + + + +
+

Match Highlighter Demo

+
+ + + +

Search and highlight occurences of the selected text.

+ +
diff --git a/global/codemirror/demo/matchtags.html b/global/codemirror/demo/matchtags.html new file mode 100644 index 00000000..175639a3 --- /dev/null +++ b/global/codemirror/demo/matchtags.html @@ -0,0 +1,48 @@ + + +CodeMirror: Tag Matcher Demo + + + + + + + + + + + +
+

Tag Matcher Demo

+ + +
+ + + +

Put the cursor on or inside a pair of tags to highlight them. + Press Ctrl-J to jump to the tag that matches the one under the + cursor.

+
diff --git a/global/codemirror/demo/merge.html b/global/codemirror/demo/merge.html new file mode 100644 index 00000000..9e2d14ea --- /dev/null +++ b/global/codemirror/demo/merge.html @@ -0,0 +1,123 @@ + + +CodeMirror: merge view demo + + + + + + + + + + + + + + + +
+

merge view demo

+ + +
+ +

The merge +addon provides an interface for displaying and merging diffs, +either two-way +or three-way. +The left (or center) pane is editable, and the differences with the +other pane(s) are optionally shown live as you edit +it. In the two-way configuration, there are also options to pad changed +sections to align them, and to collapse unchanged +stretches of text.

+ +

This addon depends on +the google-diff-match-patch +library to compute the diffs.

+ + +
diff --git a/global/codemirror/demo/multiplex.html b/global/codemirror/demo/multiplex.html new file mode 100644 index 00000000..ca8c80ae --- /dev/null +++ b/global/codemirror/demo/multiplex.html @@ -0,0 +1,75 @@ + + +CodeMirror: Multiplexing Parser Demo + + + + + + + + + + +
+

Multiplexing Parser Demo

+
+ + + +

Demonstration of a multiplexing mode, which, at certain + boundary strings, switches to one or more inner modes. The out + (HTML) mode does not get fed the content of the << + >> blocks. See + the manual and + the source for more + information.

+ +

+ Parsing/Highlighting Tests: + normal, + verbose. +

+ +
diff --git a/global/codemirror/demo/mustache.html b/global/codemirror/demo/mustache.html new file mode 100644 index 00000000..ae4e6a89 --- /dev/null +++ b/global/codemirror/demo/mustache.html @@ -0,0 +1,69 @@ + + +CodeMirror: Overlay Parser Demo + + + + + + + + + + +
+

Overlay Parser Demo

+
+ + + +

Demonstration of a mode that parses HTML, highlighting + the Mustache templating + directives inside of it by using the code + in overlay.js. View + source to see the 15 lines of code needed to accomplish this.

+ +
diff --git a/global/codemirror/demo/panel.html b/global/codemirror/demo/panel.html new file mode 100644 index 00000000..1ce3d87c --- /dev/null +++ b/global/codemirror/demo/panel.html @@ -0,0 +1,136 @@ + + +CodeMirror: Panel Demo + + + + + + + + + + + + + +
+ +

Panel Demo

+ +
+ +
+ +

+ The panel + addon allows you to display panels above or below an editor. +
+ Click the links below to add panels at the given position: +

+ +
+

+ top + after-top + before-bottom + bottom +

+

+ You can also replace an existing panel: +

+
+ + +
+ + + +
+ +
diff --git a/global/codemirror/demo/placeholder.html b/global/codemirror/demo/placeholder.html new file mode 100644 index 00000000..432331a4 --- /dev/null +++ b/global/codemirror/demo/placeholder.html @@ -0,0 +1,45 @@ + + +CodeMirror: Placeholder demo + + + + + + + + + +
+

Placeholder demo

+
+ +

The placeholder + plug-in adds an option placeholder that can be set to + make text appear in the editor when it is empty and not focused. + If the source textarea has a placeholder attribute, + it will automatically be inherited.

+ + + +
diff --git a/global/codemirror/demo/preview.html b/global/codemirror/demo/preview.html new file mode 100644 index 00000000..19e1530b --- /dev/null +++ b/global/codemirror/demo/preview.html @@ -0,0 +1,87 @@ + + +CodeMirror: HTML5 preview + + + + + + + + + + + + +
+

HTML5 preview

+ + + + +
diff --git a/global/codemirror/demo/requirejs.html b/global/codemirror/demo/requirejs.html new file mode 100644 index 00000000..438ef9fb --- /dev/null +++ b/global/codemirror/demo/requirejs.html @@ -0,0 +1,70 @@ + + + + CodeMirror: HTML completion demo + + + + + + + + + + + + +
+

RequireJS module loading demo

+ +

This demo does the same thing as + the HTML5 completion demo, but + loads its dependencies + with Require.js, rather than + explicitly. Press ctrl-space to activate + completion.

+ +
+ + + + +
+ diff --git a/global/codemirror/demo/resize.html b/global/codemirror/demo/resize.html new file mode 100644 index 00000000..1c1ef390 --- /dev/null +++ b/global/codemirror/demo/resize.html @@ -0,0 +1,51 @@ + + +CodeMirror: Autoresize Demo + + + + + + + + + +
+

Autoresize Demo

+
+ +

By setting an editor's height style +to auto and giving +the viewportMargin +a value of Infinity, CodeMirror can be made to +automatically resize to fit its content.

+ + + +
diff --git a/global/codemirror/demo/rulers.html b/global/codemirror/demo/rulers.html new file mode 100644 index 00000000..2ac41115 --- /dev/null +++ b/global/codemirror/demo/rulers.html @@ -0,0 +1,49 @@ + + +CodeMirror: Ruler Demo + + + + + + + + + +
+

Ruler Demo

+ + + +

Demonstration of +the rulers addon, which +displays vertical lines at given column offsets.

+ +
diff --git a/global/codemirror/demo/runmode.html b/global/codemirror/demo/runmode.html new file mode 100644 index 00000000..ab8938d8 --- /dev/null +++ b/global/codemirror/demo/runmode.html @@ -0,0 +1,62 @@ + + +CodeMirror: Mode Runner Demo + + + + + + + + + +
+

Mode Runner Demo

+ + +
+ +

+
+    
+
+    

Running a CodeMirror mode outside of the editor. + The CodeMirror.runMode function, defined + in addon/runmode/runmode.js takes the following arguments:

+ +
+
text (string)
+
The document to run through the highlighter.
+
mode (mode spec)
+
The mode to use (must be loaded as normal).
+
output (function or DOM node)
+
If this is a function, it will be called for each token with + two arguments, the token's text and the token's style class (may + be null for unstyled tokens). If it is a DOM node, + the tokens will be converted to span elements as in + an editor, and inserted into the node + (through innerHTML).
+
+ +
diff --git a/global/codemirror/demo/search.html b/global/codemirror/demo/search.html new file mode 100644 index 00000000..4ca81e20 --- /dev/null +++ b/global/codemirror/demo/search.html @@ -0,0 +1,99 @@ + + +CodeMirror: Search/Replace Demo + + + + + + + + + + + + + + + + + +
+

Search/Replace Demo

+
+ + + +

Demonstration of primitive search/replace functionality. The + keybindings (which can be configured with custom keymaps) are:

+
+
Ctrl-F / Cmd-F
Start searching
+
Ctrl-G / Cmd-G
Find next
+
Shift-Ctrl-G / Shift-Cmd-G
Find previous
+
Shift-Ctrl-F / Cmd-Option-F
Replace
+
Shift-Ctrl-R / Shift-Cmd-Option-F
Replace all
+
Alt-F
Persistent search (dialog doesn't autoclose, + enter to find next, Shift-Enter to find previous)
+
Alt-G
Jump to line
+
+

Searching is enabled by + including addon/search/search.js + and addon/search/searchcursor.js. + Jump to line - including addon/search/jump-to-line.js.

+

For good-looking input dialogs, you also want to include + addon/dialog/dialog.js + and addon/dialog/dialog.css.

+
diff --git a/global/codemirror/demo/simplemode.html b/global/codemirror/demo/simplemode.html new file mode 100644 index 00000000..04c194a4 --- /dev/null +++ b/global/codemirror/demo/simplemode.html @@ -0,0 +1,185 @@ + + +CodeMirror: Simple Mode Demo + + + + + + + + + + + +
+

Simple Mode Demo

+ +

The mode/simple +addon allows CodeMirror modes to be specified using a relatively simple +declarative format. This format is not as powerful as writing code +directly against the mode +interface, but is a lot easier to get started with, and +sufficiently expressive for many simple language modes.

+ +

This interface is still in flux. It is unlikely to be scrapped or +overhauled completely, so do start writing code against it, but +details might change as it stabilizes, and you might have to tweak +your code when upgrading.

+ +

Simple modes (loosely based on +the Common +JavaScript Syntax Highlighting Specification, which never took +off), are state machines, where each state has a number of rules that +match tokens. A rule describes a type of token that may occur in the +current state, and possibly a transition to another state caused by +that token.

+ +

The CodeMirror.defineSimpleMode(name, states) method +takes a mode name and an object that describes the mode's states. The +editor below shows an example of such a mode (and is itself +highlighted by the mode shown in it).

+ +
+ +

Each state is an array of rules. A rule may have the following properties:

+ +
+
regex: string | RegExp
+
The regular expression that matches the token. May be a string + or a regex object. When a regex, the ignoreCase flag + will be taken into account when matching the token. This regex + has to capture groups when the token property is + an array. If it captures groups, it must capture all of the string + (since JS provides no way to find out where a group matched).
+
token: string | array<string> | null
+
An optional token style. Multiple styles can be specified by + separating them with dots or spaces. When this property holds an array of token styles, + the regex for this rule must capture a group for each array item. +
+
sol: boolean
+
When true, this token will only match at the start of the line. + (The ^ regexp marker doesn't work as you'd expect in + this context because of limitations in JavaScript's RegExp + API.)
+
next: string
+
When a next property is present, the mode will + transfer to the state named by the property when the token is + encountered.
+
push: string
+
Like next, but instead replacing the current state + by the new state, the current state is kept on a stack, and can be + returned to with the pop directive.
+
pop: bool
+
When true, and there is another state on the state stack, will + cause the mode to pop that state off the stack and transition to + it.
+
mode: {spec, end, persistent}
+
Can be used to embed another mode inside a mode. When present, + must hold an object with a spec property that describes + the embedded mode, and an optional end end property + that specifies the regexp that will end the extent of the mode. When + a persistent property is set (and true), the nested + mode's state will be preserved between occurrences of the mode.
+
indent: bool
+
When true, this token changes the indentation to be one unit + more than the current line's indentation.
+
dedent: bool
+
When true, this token will pop one scope off the indentation + stack.
+
dedentIfLineStart: bool
+
If a token has its dedent property set, it will, by + default, cause lines where it appears at the start to be dedented. + Set this property to false to prevent that behavior.
+
+ +

The meta property of the states object is special, and +will not be interpreted as a state. Instead, properties set on it will +be set on the mode, which is useful for properties +like lineComment, +which sets the comment style for a mode. The simple mode addon also +recognizes a few such properties:

+ +
+
dontIndentStates: array<string>
+
An array of states in which the mode's auto-indentation should + not take effect. Usually used for multi-line comment and string + states.
+
+ + + + + +
diff --git a/global/codemirror/demo/simplescrollbars.html b/global/codemirror/demo/simplescrollbars.html new file mode 100644 index 00000000..9d409326 --- /dev/null +++ b/global/codemirror/demo/simplescrollbars.html @@ -0,0 +1,82 @@ + + +CodeMirror: Simple Scrollbar Demo + + + + + + + + + + + + +
+

Simple Scrollbar Demo

+
+ +

The simplescrollbars addon defines two +styles of non-native scrollbars: "simple" and "overlay" (click to try), which can be passed to +the scrollbarStyle option. These implement +the scrollbar using DOM elements, allowing more control over +its appearance.

+ + +
diff --git a/global/codemirror/demo/spanaffectswrapping_shim.html b/global/codemirror/demo/spanaffectswrapping_shim.html new file mode 100644 index 00000000..879d99b6 --- /dev/null +++ b/global/codemirror/demo/spanaffectswrapping_shim.html @@ -0,0 +1,85 @@ + + +CodeMirror: Automatically derive odd wrapping behavior for your browser + + + + + +
+

Automatically derive odd wrapping behavior for your browser

+ + +

This is a hack to automatically derive + a spanAffectsWrapping regexp for a browser. See the + comments above that variable + in lib/codemirror.js + for some more details.

+ +
+

+
+    
+  
diff --git a/global/codemirror/demo/sublime.html b/global/codemirror/demo/sublime.html new file mode 100644 index 00000000..233dd83a --- /dev/null +++ b/global/codemirror/demo/sublime.html @@ -0,0 +1,77 @@ + + +CodeMirror: Sublime Text bindings demo + + + + + + + + + + + + + + + + + + + + + + +
+

Sublime Text bindings demo

+ +

The sublime keymap defines many Sublime Text-specific +bindings for CodeMirror. See the code below for an overview.

+ +

Enable the keymap by +loading keymap/sublime.js +and setting +the keyMap +option to "sublime".

+ +

(A lot of the search functionality is still missing.) + + + +

diff --git a/global/codemirror/demo/tern.html b/global/codemirror/demo/tern.html new file mode 100644 index 00000000..d0dee8a7 --- /dev/null +++ b/global/codemirror/demo/tern.html @@ -0,0 +1,133 @@ + + +CodeMirror: Tern Demo + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Tern Demo

+
+ +

Demonstrates integration of Tern +and CodeMirror. The following keys are bound:

+ +
+
Ctrl-Space
Autocomplete
+
Ctrl-O
Find docs for the expression at the cursor
+
Ctrl-I
Find type at cursor
+
Alt-.
Jump to definition (Alt-, to jump back)
+
Ctrl-Q
Rename variable
+
Ctrl-.
Select all occurrences of a variable
+
+ +

Documentation is sparse for now. See the top of +the script for a rough API +overview.

+ + + +
diff --git a/global/codemirror/demo/theme.html b/global/codemirror/demo/theme.html new file mode 100644 index 00000000..9194dcea --- /dev/null +++ b/global/codemirror/demo/theme.html @@ -0,0 +1,168 @@ + + +CodeMirror: Theme Demo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

Theme Demo

+
+ +

Select a theme: +

+ + +
diff --git a/global/codemirror/demo/trailingspace.html b/global/codemirror/demo/trailingspace.html new file mode 100644 index 00000000..1992ba3f --- /dev/null +++ b/global/codemirror/demo/trailingspace.html @@ -0,0 +1,48 @@ + + +CodeMirror: Trailing Whitespace Demo + + + + + + + + + +
+

Trailing Whitespace Demo

+
+ + + +

Uses +the trailingspace +addon to highlight trailing whitespace.

+ +
diff --git a/global/codemirror/demo/variableheight.html b/global/codemirror/demo/variableheight.html new file mode 100644 index 00000000..d4994286 --- /dev/null +++ b/global/codemirror/demo/variableheight.html @@ -0,0 +1,67 @@ + + +CodeMirror: Variable Height Demo + + + + + + + + + + +
+

Variable Height Demo

+
+ +
diff --git a/global/codemirror/demo/vim.html b/global/codemirror/demo/vim.html new file mode 100644 index 00000000..f27b8b8e --- /dev/null +++ b/global/codemirror/demo/vim.html @@ -0,0 +1,112 @@ + + +CodeMirror: Vim bindings demo + + + + + + + + + + + + + + + + +
+

Vim bindings demo

+ +

Note: The CodeMirror vim bindings do not have an +active maintainer. That means that if you report bugs in it, they are +likely to go unanswered. It also means that if you want to help, you +are very welcome to look +at the +open issues and see which ones you can solve.

+ +
+
Key buffer:
+ +

The vim keybindings are enabled by including keymap/vim.js and setting the +keyMap option to vim.

+ +

Features

+ +
    +
  • All common motions and operators, including text objects
  • +
  • Operator motion orthogonality
  • +
  • Visual mode - characterwise, linewise, blockwise
  • +
  • Full macro support (q, @)
  • +
  • Incremental highlighted search (/, ?, #, *, g#, g*)
  • +
  • Search/replace with confirm (:substitute, :%s)
  • +
  • Search history
  • +
  • Jump lists (Ctrl-o, Ctrl-i)
  • +
  • Key/command mapping with API (:map, :nmap, :vmap)
  • +
  • Sort (:sort)
  • +
  • Marks (`, ')
  • +
  • :global
  • +
  • Insert mode behaves identical to base CodeMirror
  • +
  • Cross-buffer yank/paste
  • +
+ +

For the full list of key mappings and Ex commands, refer to the +defaultKeymap and defaultExCommandMap at the +top of keymap/vim.js. + +

Note that while the vim mode tries to emulate the most useful +features of vim as faithfully as possible, it does not strive to +become a complete vim implementation

+ + + +
diff --git a/global/codemirror/demo/visibletabs.html b/global/codemirror/demo/visibletabs.html new file mode 100644 index 00000000..2eec337e --- /dev/null +++ b/global/codemirror/demo/visibletabs.html @@ -0,0 +1,62 @@ + + +CodeMirror: Visible tabs demo + + + + + + + + + +
+

Visible tabs demo

+
+ +

Tabs inside the editor are spans with the +class cm-tab, and can be styled.

+ + + +
diff --git a/global/codemirror/demo/widget.html b/global/codemirror/demo/widget.html new file mode 100644 index 00000000..da39a929 --- /dev/null +++ b/global/codemirror/demo/widget.html @@ -0,0 +1,85 @@ + + +CodeMirror: Inline Widget Demo + + + + + + + + + + +
+

Inline Widget Demo

+ + +
+ +

This demo runs JSHint over the code +in the editor (which is the script used on this page), and +inserts line widgets to +display the warnings that JSHint comes up with.

+
diff --git a/global/codemirror/demo/xmlcomplete.html b/global/codemirror/demo/xmlcomplete.html new file mode 100644 index 00000000..043f0c42 --- /dev/null +++ b/global/codemirror/demo/xmlcomplete.html @@ -0,0 +1,119 @@ + + +CodeMirror: XML Autocomplete Demo + + + + + + + + + + + + +
+

XML Autocomplete Demo

+
+ +

Press ctrl-space, or type a '<' character to + activate autocompletion. This demo defines a simple schema that + guides completion. The schema can be customized—see + the manual.

+ +

Development of the xml-hint addon was kindly + sponsored + by www.xperiment.mobi.

+ + +
diff --git a/global/codemirror/doc/activebookmark.js b/global/codemirror/doc/activebookmark.js new file mode 100644 index 00000000..407282d0 --- /dev/null +++ b/global/codemirror/doc/activebookmark.js @@ -0,0 +1,57 @@ +// Kludge in HTML5 tag recognition in IE8 +document.createElement("section"); +document.createElement("article"); + +(function() { + if (!window.addEventListener) return; + var pending = false, prevVal = null; + + function updateSoon() { + if (!pending) { + pending = true; + setTimeout(update, 250); + } + } + + function update() { + pending = false; + var marks = document.getElementById("nav").getElementsByTagName("a"), found; + for (var i = 0; i < marks.length; ++i) { + var mark = marks[i], m; + if (mark.getAttribute("data-default")) { + if (found == null) found = i; + } else if (m = mark.href.match(/#(.*)/)) { + var ref = document.getElementById(m[1]); + if (ref && ref.getBoundingClientRect().top < 50) + found = i; + } + } + if (found != null && found != prevVal) { + prevVal = found; + var lis = document.getElementById("nav").getElementsByTagName("li"); + for (var i = 0; i < lis.length; ++i) lis[i].className = ""; + for (var i = 0; i < marks.length; ++i) { + if (found == i) { + marks[i].className = "active"; + for (var n = marks[i]; n; n = n.parentNode) + if (n.nodeName == "LI") n.className = "active"; + } else { + marks[i].className = ""; + } + } + } + } + + window.addEventListener("scroll", updateSoon); + window.addEventListener("load", updateSoon); + window.addEventListener("hashchange", function() { + setTimeout(function() { + var hash = document.location.hash, found = null, m; + var marks = document.getElementById("nav").getElementsByTagName("a"); + for (var i = 0; i < marks.length; i++) + if ((m = marks[i].href.match(/(#.*)/)) && m[1] == hash) { found = i; break; } + if (found != null) for (var i = 0; i < marks.length; i++) + marks[i].className = i == found ? "active" : ""; + }, 300); + }); +})(); diff --git a/global/codemirror/doc/docs.css b/global/codemirror/doc/docs.css new file mode 100644 index 00000000..881d2aa4 --- /dev/null +++ b/global/codemirror/doc/docs.css @@ -0,0 +1,271 @@ +@font-face { + font-family: 'Source Sans Pro'; + font-style: normal; + font-weight: 400; + src: local('Source Sans Pro'), local('SourceSansPro-Regular'), url(//themes.googleusercontent.com/static/fonts/sourcesanspro/v5/ODelI1aHBYDBqgeIAH2zlBM0YzuT7MdOe03otPbuUS0.woff) format('woff'); +} + +body, html { margin: 0; padding: 0; height: 100%; } +section, article { display: block; padding: 0; } + +body { + background: #f8f8f8; + font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; + line-height: 1.5; +} + +p { margin-top: 0; } + +h2, h3, h1 { + font-weight: normal; + margin-bottom: .7em; +} +h1 { font-size: 140%; } +h2 { font-size: 120%; } +h3 { font-size: 110%; } +article > h2:first-child, section:first-child > h2 { margin-top: 0; } + +#nav h1 { + margin-right: 12px; + margin-top: 0; + margin-bottom: 2px; + color: #d30707; + letter-spacing: .5px; +} + +a, a:visited, a:link, .quasilink { + color: #A21313; + text-decoration: none; +} + +em { + padding-right: 2px; +} + +.quasilink { + cursor: pointer; +} + +article { + max-width: 700px; + margin: 0 0 0 160px; + border-left: 2px solid #E30808; + border-right: 1px solid #ddd; + padding: 30px 50px 100px 50px; + background: white; + z-index: 2; + position: relative; + min-height: 100%; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +#nav { + position: fixed; + padding-top: 30px; + max-height: 100%; + box-sizing: -moz-border-box; + box-sizing: border-box; + overflow-y: auto; + left: 0; right: none; + width: 160px; + text-align: right; + z-index: 1; +} + +@media screen and (min-width: 1000px) { + article { + margin: 0 auto; + } + #nav { + right: 50%; + width: auto; + border-right: 349px solid transparent; + } +} + +#nav ul { + display: block; + margin: 0; padding: 0; + margin-bottom: 32px; +} + +#nav li { + display: block; + margin-bottom: 4px; +} + +#nav li ul { + font-size: 80%; + margin-bottom: 0; + display: none; +} + +#nav li.active ul { + display: block; +} + +#nav li li a { + padding-right: 20px; + display: inline-block; +} + +#nav ul a { + color: black; + padding: 0 7px 1px 11px; +} + +#nav ul a.active, #nav ul a:hover { + border-bottom: 1px solid #E30808; + margin-bottom: -1px; + color: #E30808; +} + +#logo { + border: 0; + margin-right: 12px; + margin-bottom: 25px; +} + +section { + border-top: 1px solid #E30808; + margin: 1.5em 0; +} + +section.first { + border: none; + margin-top: 0; +} + +#demo { + position: relative; +} + +#demolist { + position: absolute; + right: 5px; + top: 5px; + z-index: 25; +} + +.yinyang { + position: absolute; + top: -10px; + left: 0; right: 0; + margin: auto; + display: block; + height: 120px; +} + +.actions { + margin: 1em 0 0; + min-height: 100px; + position: relative; +} + +.actionspicture { + pointer-events: none; + position: absolute; + height: 100px; + top: 0; left: 0; right: 0; +} + +.actionlink { + pointer-events: auto; + font-family: arial; + font-size: 80%; + font-weight: bold; + position: absolute; + top: 0; bottom: 0; + line-height: 1; + height: 1em; + margin: auto; +} + +.actionlink.download { + color: white; + right: 50%; + margin-right: 13px; + text-shadow: -1px 1px 3px #b00, -1px -1px 3px #b00, 1px 0px 3px #b00; +} + +.actionlink.fund { + color: #b00; + left: 50%; + margin-left: 15px; +} + +.actionlink:hover { + text-decoration: underline; +} + +.actionlink a { + color: inherit; +} + +.actionsleft { + float: left; +} + +.actionsright { + float: right; + text-align: right; +} + +@media screen and (max-width: 800px) { + .actions { + padding-top: 120px; + } + .actionsleft, .actionsright { + float: none; + text-align: left; + margin-bottom: 1em; + } +} + +th { + text-decoration: underline; + font-weight: normal; + text-align: left; +} + +#features ul { + list-style: none; + margin: 0 0 1em; + padding: 0 0 0 1.2em; +} + +#features li:before { + content: "-"; + width: 1em; + display: inline-block; + padding: 0; + margin: 0; + margin-left: -1em; +} + +.rel { + margin-bottom: 0; +} +.rel-note { + margin-top: 0; + color: #555; +} + +pre { + padding-left: 15px; + border-left: 2px solid #ddd; +} + +code { + padding: 0 2px; +} + +strong { + text-decoration: underline; + font-weight: normal; +} + +.field { + border: 1px solid #A21313; +} diff --git a/global/codemirror/doc/internals.html b/global/codemirror/doc/internals.html new file mode 100644 index 00000000..079466f6 --- /dev/null +++ b/global/codemirror/doc/internals.html @@ -0,0 +1,504 @@ + + +CodeMirror: Internals + + + + + + + +
+ +

(Re-) Implementing A Syntax-Highlighting Editor in JavaScript

+ +

+ Topic: JavaScript, code editor implementation
+ Author: Marijn Haverbeke
+ Date: March 2nd 2011 (updated November 13th 2011) +

+ +

Caution: this text was written briefly after +version 2 was initially written. It no longer (even including the +update at the bottom) fully represents the current implementation. I'm +leaving it here as a historic document. For more up-to-date +information, look at the entries +tagged cm-internals +on my blog.

+ +

This is a followup to +my Brutal Odyssey to the +Dark Side of the DOM Tree story. That one describes the +mind-bending process of implementing (what would become) CodeMirror 1. +This one describes the internals of CodeMirror 2, a complete rewrite +and rethink of the old code base. I wanted to give this piece another +Hunter Thompson copycat subtitle, but somehow that would be out of +place—the process this time around was one of straightforward +engineering, requiring no serious mind-bending whatsoever.

+ +

So, what is wrong with CodeMirror 1? I'd estimate, by mailing list +activity and general search-engine presence, that it has been +integrated into about a thousand systems by now. The most prominent +one, since a few weeks, +being Google +code's project hosting. It works, and it's being used widely.

+ +

Still, I did not start replacing it because I was bored. CodeMirror +1 was heavily reliant on designMode +or contentEditable (depending on the browser). Neither of +these are well specified (HTML5 tries +to specify +their basics), and, more importantly, they tend to be one of the more +obscure and buggy areas of browser functionality—CodeMirror, by using +this functionality in a non-typical way, was constantly running up +against browser bugs. WebKit wouldn't show an empty line at the end of +the document, and in some releases would suddenly get unbearably slow. +Firefox would show the cursor in the wrong place. Internet Explorer +would insist on linkifying everything that looked like a URL or email +address, a behaviour that can't be turned off. Some bugs I managed to +work around (which was often a frustrating, painful process), others, +such as the Firefox cursor placement, I gave up on, and had to tell +user after user that they were known problems, but not something I +could help.

+ +

Also, there is the fact that designMode (which seemed +to be less buggy than contentEditable in Webkit and +Firefox, and was thus used by CodeMirror 1 in those browsers) requires +a frame. Frames are another tricky area. It takes some effort to +prevent getting tripped up by domain restrictions, they don't +initialize synchronously, behave strangely in response to the back +button, and, on several browsers, can't be moved around the DOM +without having them re-initialize. They did provide a very nice way to +namespace the library, though—CodeMirror 1 could freely pollute the +namespace inside the frame.

+ +

Finally, working with an editable document means working with +selection in arbitrary DOM structures. Internet Explorer (8 and +before) has an utterly different (and awkward) selection API than all +of the other browsers, and even among the different implementations of +document.selection, details about how exactly a selection +is represented vary quite a bit. Add to that the fact that Opera's +selection support tended to be very buggy until recently, and you can +imagine why CodeMirror 1 contains 700 lines of selection-handling +code.

+ +

And that brings us to the main issue with the CodeMirror 1 +code base: The proportion of browser-bug-workarounds to real +application code was getting dangerously high. By building on top of a +few dodgy features, I put the system in a vulnerable position—any +incompatibility and bugginess in these features, I had to paper over +with my own code. Not only did I have to do some serious stunt-work to +get it to work on older browsers (as detailed in the +previous story), things +also kept breaking in newly released versions, requiring me to come up +with new scary hacks in order to keep up. This was starting +to lose its appeal.

+ +
+

General Approach

+ +

What CodeMirror 2 does is try to sidestep most of the hairy hacks +that came up in version 1. I owe a lot to the +ACE editor for inspiration on how to +approach this.

+ +

I absolutely did not want to be completely reliant on key events to +generate my input. Every JavaScript programmer knows that key event +information is horrible and incomplete. Some people (most awesomely +Mihai Bazon with Ymacs) have been able +to build more or less functioning editors by directly reading key +events, but it takes a lot of work (the kind of never-ending, fragile +work I described earlier), and will never be able to properly support +things like multi-keystoke international character +input. [see below for caveat]

+ +

So what I do is focus a hidden textarea, and let the browser +believe that the user is typing into that. What we show to the user is +a DOM structure we built to represent his document. If this is updated +quickly enough, and shows some kind of believable cursor, it feels +like a real text-input control.

+ +

Another big win is that this DOM representation does not have to +span the whole document. Some CodeMirror 1 users insisted that they +needed to put a 30 thousand line XML document into CodeMirror. Putting +all that into the DOM takes a while, especially since, for some +reason, an editable DOM tree is slower than a normal one on most +browsers. If we have full control over what we show, we must only +ensure that the visible part of the document has been added, and can +do the rest only when needed. (Fortunately, the onscroll +event works almost the same on all browsers, and lends itself well to +displaying things only as they are scrolled into view.)

+
+
+

Input

+ +

ACE uses its hidden textarea only as a text input shim, and does +all cursor movement and things like text deletion itself by directly +handling key events. CodeMirror's way is to let the browser do its +thing as much as possible, and not, for example, define its own set of +key bindings. One way to do this would have been to have the whole +document inside the hidden textarea, and after each key event update +the display DOM to reflect what's in that textarea.

+ +

That'd be simple, but it is not realistic. For even medium-sized +document the editor would be constantly munging huge strings, and get +terribly slow. What CodeMirror 2 does is put the current selection, +along with an extra line on the top and on the bottom, into the +textarea.

+ +

This means that the arrow keys (and their ctrl-variations), home, +end, etcetera, do not have to be handled specially. We just read the +cursor position in the textarea, and update our cursor to match it. +Also, copy and paste work pretty much for free, and people get their +native key bindings, without any special work on my part. For example, +I have emacs key bindings configured for Chrome and Firefox. There is +no way for a script to detect this. [no longer the case]

+ +

Of course, since only a small part of the document sits in the +textarea, keys like page up and ctrl-end won't do the right thing. +CodeMirror is catching those events and handling them itself.

+
+
+

Selection

+ +

Getting and setting the selection range of a textarea in modern +browsers is trivial—you just use the selectionStart +and selectionEnd properties. On IE you have to do some +insane stuff with temporary ranges and compensating for the fact that +moving the selection by a 'character' will treat \r\n as a single +character, but even there it is possible to build functions that +reliably set and get the selection range.

+ +

But consider this typical case: When I'm somewhere in my document, +press shift, and press the up arrow, something gets selected. Then, if +I, still holding shift, press the up arrow again, the top of my +selection is adjusted. The selection remembers where its head +and its anchor are, and moves the head when we shift-move. +This is a generally accepted property of selections, and done right by +every editing component built in the past twenty years.

+ +

But not something that the browser selection APIs expose.

+ +

Great. So when someone creates an 'upside-down' selection, the next +time CodeMirror has to update the textarea, it'll re-create the +selection as an 'upside-up' selection, with the anchor at the top, and +the next cursor motion will behave in an unexpected way—our second +up-arrow press in the example above will not do anything, since it is +interpreted in exactly the same way as the first.

+ +

No problem. We'll just, ehm, detect that the selection is +upside-down (you can tell by the way it was created), and then, when +an upside-down selection is present, and a cursor-moving key is +pressed in combination with shift, we quickly collapse the selection +in the textarea to its start, allow the key to take effect, and then +combine its new head with its old anchor to get the real +selection.

+ +

In short, scary hacks could not be avoided entirely in CodeMirror +2.

+ +

And, the observant reader might ask, how do you even know that a +key combo is a cursor-moving combo, if you claim you support any +native key bindings? Well, we don't, but we can learn. The editor +keeps a set known cursor-movement combos (initialized to the +predictable defaults), and updates this set when it observes that +pressing a certain key had (only) the effect of moving the cursor. +This, of course, doesn't work if the first time the key is used was +for extending an inverted selection, but it works most of the +time.

+
+
+

Intelligent Updating

+ +

One thing that always comes up when you have a complicated internal +state that's reflected in some user-visible external representation +(in this case, the displayed code and the textarea's content) is +keeping the two in sync. The naive way is to just update the display +every time you change your state, but this is not only error prone +(you'll forget), it also easily leads to duplicate work on big, +composite operations. Then you start passing around flags indicating +whether the display should be updated in an attempt to be efficient +again and, well, at that point you might as well give up completely.

+ +

I did go down that road, but then switched to a much simpler model: +simply keep track of all the things that have been changed during an +action, and then, only at the end, use this information to update the +user-visible display.

+ +

CodeMirror uses a concept of operations, which start by +calling a specific set-up function that clears the state and end by +calling another function that reads this state and does the required +updating. Most event handlers, and all the user-visible methods that +change state are wrapped like this. There's a method +called operation that accepts a function, and returns +another function that wraps the given function as an operation.

+ +

It's trivial to extend this (as CodeMirror does) to detect nesting, +and, when an operation is started inside an operation, simply +increment the nesting count, and only do the updating when this count +reaches zero again.

+ +

If we have a set of changed ranges and know the currently shown +range, we can (with some awkward code to deal with the fact that +changes can add and remove lines, so we're dealing with a changing +coordinate system) construct a map of the ranges that were left +intact. We can then compare this map with the part of the document +that's currently visible (based on scroll offset and editor height) to +determine whether something needs to be updated.

+ +

CodeMirror uses two update algorithms—a full refresh, where it just +discards the whole part of the DOM that contains the edited text and +rebuilds it, and a patch algorithm, where it uses the information +about changed and intact ranges to update only the out-of-date parts +of the DOM. When more than 30 percent (which is the current heuristic, +might change) of the lines need to be updated, the full refresh is +chosen (since it's faster to do than painstakingly finding and +updating all the changed lines), in the other case it does the +patching (so that, if you scroll a line or select another character, +the whole screen doesn't have to be +re-rendered). [the full-refresh +algorithm was dropped, it wasn't really faster than the patching +one]

+ +

All updating uses innerHTML rather than direct DOM +manipulation, since that still seems to be by far the fastest way to +build documents. There's a per-line function that combines the +highlighting, marking, and +selection info for that line into a snippet of HTML. The patch updater +uses this to reset individual lines, the refresh updater builds an +HTML chunk for the whole visible document at once, and then uses a +single innerHTML update to do the refresh.

+
+
+

Parsers can be Simple

+ +

When I wrote CodeMirror 1, I +thought interruptable +parsers were a hugely scary and complicated thing, and I used a +bunch of heavyweight abstractions to keep this supposed complexity +under control: parsers +were iterators +that consumed input from another iterator, and used funny +closure-resetting tricks to copy and resume themselves.

+ +

This made for a rather nice system, in that parsers formed strictly +separate modules, and could be composed in predictable ways. +Unfortunately, it was quite slow (stacking three or four iterators on +top of each other), and extremely intimidating to people not used to a +functional programming style.

+ +

With a few small changes, however, we can keep all those +advantages, but simplify the API and make the whole thing less +indirect and inefficient. CodeMirror +2's mode API uses explicit state +objects, and makes the parser/tokenizer a function that simply takes a +state and a character stream abstraction, advances the stream one +token, and returns the way the token should be styled. This state may +be copied, optionally in a mode-defined way, in order to be able to +continue a parse at a given point. Even someone who's never touched a +lambda in his life can understand this approach. Additionally, far +fewer objects are allocated in the course of parsing now.

+ +

The biggest speedup comes from the fact that the parsing no longer +has to touch the DOM though. In CodeMirror 1, on an older browser, you +could see the parser work its way through the document, +managing some twenty lines in each 50-millisecond time slice it got. It +was reading its input from the DOM, and updating the DOM as it went +along, which any experienced JavaScript programmer will immediately +spot as a recipe for slowness. In CodeMirror 2, the parser usually +finishes the whole document in a single 100-millisecond time slice—it +manages some 1500 lines during that time on Chrome. All it has to do +is munge strings, so there is no real reason for it to be slow +anymore.

+
+
+

What Gives?

+ +

Given all this, what can you expect from CodeMirror 2?

+ +
    + +
  • Small. the base library is +some 45k when minified +now, 17k when gzipped. It's smaller than +its own logo.
  • + +
  • Lightweight. CodeMirror 2 initializes very +quickly, and does almost no work when it is not focused. This means +you can treat it almost like a textarea, have multiple instances on a +page without trouble.
  • + +
  • Huge document support. Since highlighting is +really fast, and no DOM structure is being built for non-visible +content, you don't have to worry about locking up your browser when a +user enters a megabyte-sized document.
  • + +
  • Extended API. Some things kept coming up in the +mailing list, such as marking pieces of text or lines, which were +extremely hard to do with CodeMirror 1. The new version has proper +support for these built in.
  • + +
  • Tab support. Tabs inside editable documents were, +for some reason, a no-go. At least six different people announced they +were going to add tab support to CodeMirror 1, none survived (I mean, +none delivered a working version). CodeMirror 2 no longer removes tabs +from your document.
  • + +
  • Sane styling. iframe nodes aren't +really known for respecting document flow. Now that an editor instance +is a plain div element, it is much easier to size it to +fit the surrounding elements. You don't even have to make it scroll if +you do not want to.
  • + +
+ +

On the downside, a CodeMirror 2 instance is not a native +editable component. Though it does its best to emulate such a +component as much as possible, there is functionality that browsers +just do not allow us to hook into. Doing select-all from the context +menu, for example, is not currently detected by CodeMirror.

+ +

[Updates from November 13th 2011] Recently, I've made +some changes to the codebase that cause some of the text above to no +longer be current. I've left the text intact, but added markers at the +passages that are now inaccurate. The new situation is described +below.

+
+
+

Content Representation

+ +

The original implementation of CodeMirror 2 represented the +document as a flat array of line objects. This worked well—splicing +arrays will require the part of the array after the splice to be +moved, but this is basically just a simple memmove of a +bunch of pointers, so it is cheap even for huge documents.

+ +

However, I recently added line wrapping and code folding (line +collapsing, basically). Once lines start taking up a non-constant +amount of vertical space, looking up a line by vertical position +(which is needed when someone clicks the document, and to determine +the visible part of the document during scrolling) can only be done +with a linear scan through the whole array, summing up line heights as +you go. Seeing how I've been going out of my way to make big documents +fast, this is not acceptable.

+ +

The new representation is based on a B-tree. The leaves of the tree +contain arrays of line objects, with a fixed minimum and maximum size, +and the non-leaf nodes simply hold arrays of child nodes. Each node +stores both the amount of lines that live below them and the vertical +space taken up by these lines. This allows the tree to be indexed both +by line number and by vertical position, and all access has +logarithmic complexity in relation to the document size.

+ +

I gave line objects and tree nodes parent pointers, to the node +above them. When a line has to update its height, it can simply walk +these pointers to the top of the tree, adding or subtracting the +difference in height from each node it encounters. The parent pointers +also make it cheaper (in complexity terms, the difference is probably +tiny in normal-sized documents) to find the current line number when +given a line object. In the old approach, the whole document array had +to be searched. Now, we can just walk up the tree and count the sizes +of the nodes coming before us at each level.

+ +

I chose B-trees, not regular binary trees, mostly because they +allow for very fast bulk insertions and deletions. When there is a big +change to a document, it typically involves adding, deleting, or +replacing a chunk of subsequent lines. In a regular balanced tree, all +these inserts or deletes would have to be done separately, which could +be really expensive. In a B-tree, to insert a chunk, you just walk +down the tree once to find where it should go, insert them all in one +shot, and then break up the node if needed. This breaking up might +involve breaking up nodes further up, but only requires a single pass +back up the tree. For deletion, I'm somewhat lax in keeping things +balanced—I just collapse nodes into a leaf when their child count goes +below a given number. This means that there are some weird editing +patterns that may result in a seriously unbalanced tree, but even such +an unbalanced tree will perform well, unless you spend a day making +strangely repeating edits to a really big document.

+
+
+

Keymaps

+ +

Above, I claimed that directly catching key +events for things like cursor movement is impractical because it +requires some browser-specific kludges. I then proceeded to explain +some awful hacks that were needed to make it +possible for the selection changes to be detected through the +textarea. In fact, the second hack is about as bad as the first.

+ +

On top of that, in the presence of user-configurable tab sizes and +collapsed and wrapped lines, lining up cursor movement in the textarea +with what's visible on the screen becomes a nightmare. Thus, I've +decided to move to a model where the textarea's selection is no longer +depended on.

+ +

So I moved to a model where all cursor movement is handled by my +own code. This adds support for a goal column, proper interaction of +cursor movement with collapsed lines, and makes it possible for +vertical movement to move through wrapped lines properly, instead of +just treating them like non-wrapped lines.

+ +

The key event handlers now translate the key event into a string, +something like Ctrl-Home or Shift-Cmd-R, and +use that string to look up an action to perform. To make keybinding +customizable, this lookup goes through +a table, using a scheme that +allows such tables to be chained together (for example, the default +Mac bindings fall through to a table named 'emacsy', which defines +basic Emacs-style bindings like Ctrl-F, and which is also +used by the custom Emacs bindings).

+ +

A new +option extraKeys +allows ad-hoc keybindings to be defined in a much nicer way than what +was possible with the +old onKeyEvent +callback. You simply provide an object mapping key identifiers to +functions, instead of painstakingly looking at raw key events.

+ +

Built-in commands map to strings, rather than functions, for +example "goLineUp" is the default action bound to the up +arrow key. This allows new keymaps to refer to them without +duplicating any code. New commands can be defined by assigning to +the CodeMirror.commands object, which maps such commands +to functions.

+ +

The hidden textarea now only holds the current selection, with no +extra characters around it. This has a nice advantage: polling for +input becomes much, much faster. If there's a big selection, this text +does not have to be read from the textarea every time—when we poll, +just noticing that something is still selected is enough to tell us +that no new text was typed.

+ +

The reason that cheap polling is important is that many browsers do +not fire useful events on IME (input method engine) input, which is +the thing where people inputting a language like Japanese or Chinese +use multiple keystrokes to create a character or sequence of +characters. Most modern browsers fire input when the +composing is finished, but many don't fire anything when the character +is updated during composition. So we poll, whenever the +editor is focused, to provide immediate updates of the display.

+ +
+
diff --git a/global/codemirror/doc/logo.png b/global/codemirror/doc/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9aabda1d709f565bb115fa083cc16b6d52db64cf GIT binary patch literal 9310 zcmWk!Wl$VV6g=D|1b25!aEIUyhr7GGTL{5|1$PMU!Gb&FaCaxTyW6*4U2W~w{MehF z_g=s5o{3aZl14)&LC@FTctEwWVDw?~{3&X8ah!PRD9*tQT8757ES=R=O zZIdr2ugtx4l6@a%-%CqPVF44eaQ%2fx0Jpla6f)NKFVjM^Z_h)hKuzjB4sSI@ekEg z@U#NrAp>;|c$0x9hg?WZTdZG(0VD4>#GX6z>|wuiM$CS;G$FUC%`Yu#T3S`2xx9Q% z&L>hk-l%{+T9H<*SA=}sbo%%o@Lho^HR{1J(LU%?j7M6P@vF0Z0pn zRg3c$bb5L^PunUDMRKYs2Bi84p?^h2s-wqmdrz@zp~k4I#jPdj=S+$6^$1(n#c@vV zQV@AYWo0F0iuwG?$(^c;iwoWx)a709!-19&TMi)>)^tO&r)EX+#@$=$u6%0kebYPc zJhdwF-;A+6Nv~cvrd5Mk9vYf~d&?L>K|$|Ad8<9vw25-A3Z(NDgczyq)xxNFX3irt z5&W3H!9k+!9`(QJE||;POE|miR+~Sm6)TtkQ-cj}VANhC(QrgTL%V&q;;Zro-FDY} zLEOj{mjZVGgd>u4m z9zF7e&^@tyDqDe64B@zwmmb{Zn8=9D0EkzmV(u^0Er>Me3Q1W@zsY6$umA0>sVZm? zf(GAr5tO2~04nkJ@wvUbz0JP5-v~N(8$pml|2M|7;cjEJKc2naVlq*V$ErUVu%xCc zfs#1n{*MfE1l}<8>Gn8IRz?OtB`Ikq$e{Y8Acr;iHY83OaqB8@B8#tYMp?M1xTHiN zI7wa+cO)-Jl$p=D%D=t+`FM2=o|c+=mO*=?NKfnSwkBw*RJ8!PBhEop&nIA&$mb;v z`(VuSI$`*;(y|?=VesS!rUgt{Jdt*)`0hZ?G z7usFYr+DK=vmmf4*I#j$aOU?KF(7dFFyg^IqOV_XZ;56L^zPYvdwU(1ez>LJ;p|HN z4VWobRPeX^YQ|=%QMp8X`Hn78u&x4ka1N?5=y}S^Blo>WDpAfA7QE<&X|fPi*P!91 zP1%g!{BoS*|03)2@?Zo#sF~owf;%$sj_3DF)yW$ZALRySHTxJ?p2Ot=fq#BIgX)5|XO;LcR_79G0BHnqmaV{@z-l*0V&*FitQ+$n$GKK~(Sm8!dKL(9qB_GBTi@yf$25rWcs(1P9>X)ru?O`26nlrz=f0 zm@U<-rU~O=l$e1aj>uh@$@ff@7IHbdSS0=;!NwcMhud z53gSK=5Ft3eehCzt=I&`DimK+)jCpbx;}m$z19HbQtn`d)!hQVW?ChL; zbyKo%9MIsH(Q>--r@-OVua@MI!wIa-jBE9Yw#B6Hdl@SfkOB%&hU2fK`1pfgB~cEi z>K7acZUFF41c0jUSTU1(EXAar0TlOu9ixo!E{YZ*$|c}u>+__hBK&*hRIDa8Af}Q; zWDit2MeZN4SZfyUHj}GWt#8A|6Cu@MLU~bqjhe+}#m%DI(CommzwUQ#@%IP8XxgXH zkyN(SV_iLNCzH9TWd7jqj-)r0;Kso}!idX{4~*c?b&}V(1|!o(&NG`&2I&`ADZUIJ|pBJ69gpMjxo{`=IqPIR49;HZJ)o;WIDAx4o8- z1j5nrhNlg>pzELyfsea#kffV~rD%Ax^X=p*GhV+t=9NEE zwGMXJptrZT*>W|aY^89`irs&YC|M#w!f}@{7kC*bUPqjh!Uwy0bsC~_hGjab`^uy} ztltpI_08Dvm(#}fwt2E&myYl$E+P(Q!cUqD3UxVZSM03`xg;(xj3F4~&-sfCMd~A{ zKqcWr3+}cf1UzhoH@&vk(EDzNAZT}ZqK%}mY#-Nj(O&AtR+xan;967_CN{F;l|~|8 zbv4eSqnd;^x`NQ7i^pBJQWXuEPbA(AiyNG_JNvs^k2SQ48Kr?Gew5?MKFwqKY(F(DdQVId#=h;KNtK-Z_T*+|&{hTo_Dmm~TmWj5{v?&Y`#Q-Eb zTz&kT>byP|t@F$QR+V?o4xQ)xp3Ohpq{U`hSM0{j5y}#&wUnJ=k1^XyQfGGV`7zm0 zE56Y;?0&vKmsggnf@JGdGPs5f1=AO!H`mBk5|vl*z}R z*lpQn=>%|W7C2x6OuNW6mFZ4#aq$jO;SZRY@s{oHf#++f@5Odiy7Y#IuOBOL;sdb5rDr#wo^`On0`NwfaORizU;5S`T|a`{+m2KhV!OF2ne zn)5u+*B7c3=iXT%Iyyc+&gM;Z1*+9%ehzt68mX~f`BMd1@9^Uoo+;_u?+Wkg3K|X| zjHx*~QxY;V!iLQ-hH3LW{Wn{t=CjfuRg$i^ESx3gzuNLkZD0E0=BB+uR50L5z2_I@ z0CYH%y42$a@fVdzp$8SB%r$@50Z3+R&bl?>tn~Idgp!Uc6LT~!GE$bg@oDPt9dgA| z)Zx3K0a~`_w(`&$?;ANGV>IlkAOtPLHeJ=_4)Imh6kAU=Ael_$2x%+q9s8$9adapc z@ZR;|^71uWa}qB9aq`j%@do6JI#;g5gO~kkLO@fV9hIo_EwQ|kO+AI6P%VPG$x%=- z@5C!jI64WxmL(<%YY`eDXQg`aZFOF5&|6FJU=Oa3e0$`#p1wY+f@)TXyJT_UFBF@h zm&fbunEXn@wzIX*%ASx7e`1A#zcI}#*00OAaA}0x8_-MYP#IkIi|jhGU7Z~{*Y~X5 z3Bz%wvHe+$Y!UGLy#h-+zuEcix%UM~Ky`&lIGtqNPV4$8-t%@U8wSgDQ_X&PC>YzX z3~E{1JN?fOkI56WeWg6J@KEE%i6B9%?8D(U|25<-TDdbvw=dRGJ=x+Pzw*;ZBPnm%Q1e{g)fvam7XWvnY_ z`y0C)y*qsiC%B2!CtHWE!`L|+|AvSX;yDQyy+nYrR3nwpYQ zJZH@bm2-AR0s{?ADlac$ zkx01)laBkr=%@l^j&DXHo$?;5U6S;#=JU>H{Ll9EfOHzrZG8vU#$Rw({7!P;`l4{N zG@f%v$3a!h-uc>@$S^BZL8p1fpBpb(buJ}6eJJIeClz0mfySxp)sr;X(9p1*+mZQx z!-#)MRuy}>As`~X-m2E~m7g@|Z z=1NnAGf&Ig$rmUc%eOqeCP(*^Mb*c>Os6!yZIt|SaB{C9#pri-&IJgJk7N6HT&Wah z9k2~ZFz|&pG>2etaRG99GsCkF10?k5H=YgX&BM13?U#Rv!fbO-JOx}*c;EOh@qo|r z_Ve35Jynb$;s zfuT&*mrEAvtLK5Y$;_@8VTK)M0G9rk15iwC*`mH_Y zTr=PfTv5ukYR1Rc+8hNU>Mh4i*R!&&r!1IK@N6nQwpM*`S>B?G6*I9&NzcFo9czwO z+kaz5b9qwTtS0c5r3$9l*|Ip zP^-oekWvM_v054$w@z9d+*6_vZd-3KQ%$?{!;VcH9!Kh$%pCUVqFY}MjCIzeeTz#*Hqqwvp81OK z>w5Tar|?+{)Wdf5+Gqw>w8+~-A3=L)=`d4m%3^!p;98rP6--6QoNvdQA%%n&g@t^# zv?^zShDMby`x6Kd;J*Q$ddy?Eu)?a{5OH(kUWM&y!3RQx>x5e!j9k36&nKs)rb*V7 z)*tK&p$qH(8g{oIsgfK-Ay%0yB$zKClk&(7fSgmtC+!^t&zphF<=^r zfXnT$+)%DLg|4o_l^Z!y6#b|*7LCUyC#i}xW~t`$c_3g1#GXpZgxxO^OImgjKMJ^H zmAZ{lZ2Mzgux)N&UT>c(K)z^Lzdzrdn(h5y<8?n!>49^J`K9qU>96{ik|{+vzF)>Z z#*Hte5ISXIWgtS3I$dl)FX)PvKo8v8g{Z+1L5QP@lsBZA%r7c6nV2*yjW2)IH2dD# z<~!6?rt7ymcVe1tTyZeBd7bWLI(1R)b@zOIg1CA1pjg%)K7-GTzPwRW^8`QiMpIqC z#Vxl==J5M0*HfRZ45$P-az3C>LU-ZX`_S*@jr5ER4i3VcFE`rpkes|L)bIQnjfWEVseduN~aJG0f7S$^cFb@LBvA6KZ`~dpI%eGT+_{$sb$t%P3(UDByT#lH|WYvjN*cf z0b`D{*oIX|&b=(W1r zq&JVJ8U?0r+~GQsY#yJAzl%+t2IhB1iR0GGTTlUx9YO?z zAu95t;&6Z;IzQoVSbIa-C^2`YjU#(fc^`)GL!Jug_2mVhllLc(c$sI7RMN53%*;Q0 zuJ>yF_F1QA8YuB;<+S$H+w=aFE1GqWv-6dM6UO1yLjF9Q1{2P1}rE3j*P*0 zIVlSY36*KpkV=K-?D_U7D!(UUVI52t+2xpS%_x^lHTbBJp5JSeUQ@v)0*N}L4*mHE zEvFkP&(fq7i+qxxpM3KNhjh`Db;Og2UM;f0zL5Jv{lsod+@U)^CH#%m&R_y8ta|m2 zYQXBXI=osepS; zW2_+-c5}5$jVv_v1(TM&0^HglgzAQI>w21-jw`3oc#pYtZj@9xB8BCd@u z@Wngwe$o@ezzdf@fR+wc%iNrL0^KVGv%iv?f?{Ib60{b=6IJ>LDz`T#1kV!caeBDQ zuq6u5&^upyC6mKy+de=Tj*`R?) z(kA$|$GF>?bDh)pXFZf_@hSgBP3IFM(Az5wTaX!w1_wuV0ZCD^@G~(H(%;{|8Y@1( z@61ojEV_}wyvM;4Y+aZ3ZZ}I5NCUCswZf24b4epXE?H@-NM zHNT2_@l_*jG#{IUTs~6Q58po2Ea+KWNEtwD{`cLk+VPw^ZgDr9mb2nU0$gU_F$oAF zHTCYOp>Y!<2M2pf0s9NuNtsQvN>3c1!O{9?uBk>E8aep`jd?G0K{BiN&;glP)!{V|1@J_|hJ&i%FZv@t`iu~WCNpYixA@}peMe)$3kJHL zLK-iHvItWVHJ4D#f}vlPOg;AgtJ_9rK&4(=acTBlb{%{z3n-6`y(^8@E*pv&OCoU~ z3wG6*i0|h#`a#7K$5OdY zijMc=q<&g*+<5S+cd<776F!~5CbT=Dqu>?e&lnD! z(G94TE2LprS-{rGMuubO<4ad0;@%55pRTgYx4Dp$|Gzsg{VW=H-K1l*wUSKc0QmqR z$su4@Ia~KBAR8{35!pSMqUt?t(!pb_<Ww zfah;*u-#flq}%R!tb6?#V;`Au<>vt&jL&cYeWmW|TKE5+1eMf}L96O5?Bka@Z1-5M z%sz|(k|&l8L%Z6S@*Yw{bWkRUDO$Cr1DIJ5n>$5UdQq^dlQq%_+?AjMu!Z*UwBlq9 zl*bV7*ek-|+bL)XL9tZwL?~mqanj?w{~O85VyBx`4(h{7=f;Q!d%MLoE?}Y2*Vore zj>FUsVp|cYPD=ceO{DE~)NR5bvBc#M_PsrtVQj#0N$Ep}VdOIkOC=%guEwUbg?=xJ zZ)iu?wW>?Yr3as}M7D&hIz>=JdKt;YuXlUl2B2-aoD+WVMgJya)d}{%IdJ>O&VUZp zu38{fsnhglG_)S*%8!pX6InT`{$|4Vfq$CgNAqLIN-f;nf@I|=qZc!=M4532FAV{$ zN`nVFfH{HE#TnR#sv`E6TM~13zvJVBdXa-Id|maKrVR{MU}&-Px0hmM8!!@SKU+Ch zrB!C_Abonc+*ZgDMGJVV#GJUM$TtIRpd=dS_-4-2BiKwnDn#b5>v&tpX z+AB6&%40nwtEH|!`;R#sFZg_0@pIMA0D>}r1)bRUL!VA1!$C@>_lm3!W%A?-AB&Xm)~uFywT%$n#=8W zSc4QS2PcF5l_!JKZn>6P^~$N%R1aX07$IAdoU(Afnaq1wHX(A^zt&25yg|nd@i)^x zHj23&m@DH#MXhJimqE_F+fQ3gRl1EpTUt>JyWbs29RXB@d2vaxk3JdbvPG)ov0p>@ zk`;cE=mDNSO0@<4=CjTy4Z4oz(F-DN^pc!X`E6C$*dUqLsZ`46@R`5;c8?&~gLSG( z?T#bBLq|kGsSkL%r0a#s!`b1i%B;>GGR;tzg{nk(0iy=v1;-Xa{Z`R*o54ryh)BRaz z5J?M`5b%%LpmMR>W#POLL;o^>KrkEsp9SF0-QH7?$QrD>3h1@?Lt{WyhUvn> z&K{4J$-V9@)oe9ED%EvUmjvdw%!^3)a`!oNO!Dao@JqYcXOdE5 zP~Xs{v8`s31Z?}sq-tuke#*lT#l*Mx?Y7jopM}}thh+oM+9gUPdjWj!@E|D9)8#OZ zV9-*$YhO1(Og11yY8g!l`2PNZbCCNgDjdcb#DR~x&4}1;T(JH-F-s*&5(*#gzyQkF zChYYmC>>VN;NeR5;m7^$ZP7aijQ3U;Ues(tjz~~vo)HYPX+ZQIiu#**o zL!i(O2=(@h-sqdNnYP8gb-?Gx`(yebn_n#fr(qrCD+?ypH)5%_B1HTNeoDv46gar` z<-rTyM`(v@2M>-;KvJP50NSBeP3ojN^&u(7R~!!^O_ISI2^slcx)_YlQCSHxm+$cC zXrbSN@KF#`XZ_8wjuK;H8}<)^djB7KXf{L8ZE{pRp0B#Lpcoq* z)Ltp}I5x)&b@}|y^%qsCX#>M}LqX{=kKOzUY4)T?Lht&pdF>CDJ~wY(Y?2A+HK$%R zeOO_bJ)oH*qsh9;i!$et<0~rJc4Zdx)?nd_0vk>F`S~q*o=!`3MLHo+rTAgpdXm)g z6a}kmYdn(D(kqOcIYiI~B)OzC&F5XjFWsg9IQcOBy-oRgz{&o$WqhRTkk?NFCCr^lDm1lJD@v#Qli~ZnEZ$Xji^p29BteJ3I(;JX2>ye%XjYfT!8qfs zA%}?qr2)g~1wkjqECv7o literal 0 HcmV?d00001 diff --git a/global/codemirror/doc/logo.svg b/global/codemirror/doc/logo.svg new file mode 100644 index 00000000..b39b24c8 --- /dev/null +++ b/global/codemirror/doc/logo.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/global/codemirror/doc/manual.html b/global/codemirror/doc/manual.html new file mode 100644 index 00000000..67d5e425 --- /dev/null +++ b/global/codemirror/doc/manual.html @@ -0,0 +1,3521 @@ + + +CodeMirror: User Manual + + + + + + + + + + + + + + + + +
+ +
+

+ User manual and reference guide + version 5.30.0 +

+ +

CodeMirror is a code-editor component that can be embedded in + Web pages. The core library provides only the editor + component, no accompanying buttons, auto-completion, or other IDE + functionality. It does provide a rich API on top of which such + functionality can be straightforwardly implemented. See + the addons included in the distribution, + and the list + of externally hosted addons, for reusable + implementations of extra features.

+ +

CodeMirror works with language-specific modes. Modes are + JavaScript programs that help color (and optionally indent) text + written in a given language. The distribution comes with a number + of modes (see the mode/ + directory), and it isn't hard to write new + ones for other languages.

+
+ +
+

Basic Usage

+ +

The easiest way to use CodeMirror is to simply load the script + and style sheet found under lib/ in the distribution, + plus a mode script from one of the mode/ directories. + For example:

+ +
<script src="lib/codemirror.js"></script>
+<link rel="stylesheet" href="lib/codemirror.css">
+<script src="mode/javascript/javascript.js"></script>
+ +

(Alternatively, use a module loader. More + about that later.)

+ +

Having done this, an editor instance can be created like + this:

+ +
var myCodeMirror = CodeMirror(document.body);
+ +

The editor will be appended to the document body, will start + empty, and will use the mode that we loaded. To have more control + over the new editor, a configuration object can be passed + to CodeMirror as a second + argument:

+ +
var myCodeMirror = CodeMirror(document.body, {
+  value: "function myScript(){return 100;}\n",
+  mode:  "javascript"
+});
+ +

This will initialize the editor with a piece of code already in + it, and explicitly tell it to use the JavaScript mode (which is + useful when multiple modes are loaded). + See below for a full discussion of the + configuration options that CodeMirror accepts.

+ +

In cases where you don't want to append the editor to an + element, and need more control over the way it is inserted, the + first argument to the CodeMirror function can also + be a function that, when given a DOM element, inserts it into the + document somewhere. This could be used to, for example, replace a + textarea with a real editor:

+ +
var myCodeMirror = CodeMirror(function(elt) {
+  myTextArea.parentNode.replaceChild(elt, myTextArea);
+}, {value: myTextArea.value});
+ +

However, for this use case, which is a common way to use + CodeMirror, the library provides a much more powerful + shortcut:

+ +
var myCodeMirror = CodeMirror.fromTextArea(myTextArea);
+ +

This will, among other things, ensure that the textarea's value + is updated with the editor's contents when the form (if it is part + of a form) is submitted. See the API + reference for a full description of this method.

+ +

Module loaders

+ +

The files in the CodeMirror distribution contain shims for + loading them (and their dependencies) in AMD or CommonJS + environments. If the variables exports + and module exist and have type object, CommonJS-style + require will be used. If not, but there is a + function define with an amd property + present, AMD-style (RequireJS) will be used.

+ +

It is possible to + use Browserify or similar + tools to statically build modules using CodeMirror. Alternatively, + use RequireJS to dynamically + load dependencies at runtime. Both of these approaches have the + advantage that they don't use the global namespace and can, thus, + do things like load multiple versions of CodeMirror alongside each + other.

+ +

Here's a simple example of using RequireJS to load CodeMirror:

+ +
require([
+  "cm/lib/codemirror", "cm/mode/htmlmixed/htmlmixed"
+], function(CodeMirror) {
+  CodeMirror.fromTextArea(document.getElementById("code"), {
+    lineNumbers: true,
+    mode: "htmlmixed"
+  });
+});
+ +

It will automatically load the modes that the mixed HTML mode + depends on (XML, JavaScript, and CSS). Do not use + RequireJS' paths option to configure the path to + CodeMirror, since it will break loading submodules through + relative paths. Use + the packages + configuration option instead, as in:

+ +
require.config({
+  packages: [{
+    name: "codemirror",
+    location: "../path/to/codemirror",
+    main: "lib/codemirror"
+  }]
+});
+ +
+ +
+

Configuration

+ +

Both the CodeMirror + function and its fromTextArea method take as second + (optional) argument an object containing configuration options. + Any option not supplied like this will be taken + from CodeMirror.defaults, an + object containing the default options. You can update this object + to change the defaults on your page.

+ +

Options are not checked in any way, so setting bogus option + values is bound to lead to odd errors.

+ +

These are the supported options:

+ +
+
value: string|CodeMirror.Doc
+
The starting value of the editor. Can be a string, or + a document object.
+ +
mode: string|object
+
The mode to use. When not given, this will default to the + first mode that was loaded. It may be a string, which either + simply names the mode or is + a MIME type + associated with the mode. Alternatively, it may be an object + containing configuration options for the mode, with + a name property that names the mode (for + example {name: "javascript", json: true}). The demo + pages for each mode contain information about what configuration + parameters the mode supports. You can ask CodeMirror which modes + and MIME types have been defined by inspecting + the CodeMirror.modes + and CodeMirror.mimeModes objects. The first maps + mode names to their constructors, and the second maps MIME types + to mode specs.
+ +
lineSeparator: string|null
+
Explicitly set the line separator for the editor. By default + (value null), the document will be split on CRLFs + as well as lone CRs and LFs, and a single LF will be used as + line separator in all output (such + as getValue). When a + specific string is given, lines will only be split on that + string, and output will, by default, use that same + separator.
+ +
theme: string
+
The theme to style the editor with. You must make sure the + CSS file defining the corresponding .cm-s-[name] + styles is loaded (see + the theme directory in the + distribution). The default is "default", for which + colors are included in codemirror.css. It is + possible to use multiple theming classes at once—for + example "foo bar" will assign both + the cm-s-foo and the cm-s-bar classes + to the editor.
+ +
indentUnit: integer
+
How many spaces a block (whatever that means in the edited + language) should be indented. The default is 2.
+ +
smartIndent: boolean
+
Whether to use the context-sensitive indentation that the + mode provides (or just indent the same as the line before). + Defaults to true.
+ +
tabSize: integer
+
The width of a tab character. Defaults to 4.
+ +
indentWithTabs: boolean
+
Whether, when indenting, the first N*tabSize + spaces should be replaced by N tabs. Default is false.
+ +
electricChars: boolean
+
Configures whether the editor should re-indent the current + line when a character is typed that might change its proper + indentation (only works if the mode supports indentation). + Default is true.
+ +
specialChars: RegExp
+
A regular expression used to determine which characters + should be replaced by a + special placeholder. + Mostly useful for non-printing special characters. The default + is /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/.
+
specialCharPlaceholder: function(char) → Element
+
A function that, given a special character identified by + the specialChars + option, produces a DOM node that is used to represent the + character. By default, a red dot () + is shown, with a title tooltip to indicate the character code.
+ +
rtlMoveVisually: boolean
+
Determines whether horizontal cursor movement through + right-to-left (Arabic, Hebrew) text is visual (pressing the left + arrow moves the cursor left) or logical (pressing the left arrow + moves to the next lower index in the string, which is visually + right in right-to-left text). The default is false + on Windows, and true on other platforms.
+ +
keyMap: string
+
Configures the key map to use. The default + is "default", which is the only key map defined + in codemirror.js itself. Extra key maps are found in + the key map directory. See + the section on key maps for more + information.
+ +
extraKeys: object
+
Can be used to specify extra key bindings for the editor, + alongside the ones defined + by keyMap. Should be + either null, or a valid key map value.
+ +
configureMouse: fn(cm: CodeMirror, repeat: "single" | "double" | "triple", event: Event) → Object
+
Allows you to configure the behavior of mouse selection and + dragging. The function is called when the left mouse button is + pressed. The returned object may have the following properties: +
+
unit: "char" | "word" | "line" | "rectangle" | fn(CodeMirror, Pos) → {from: Pos, to: Pos}
+
The unit by which to select. May be one of the built-in + units, or a function that takes a position and returns a + range around that, for a custom unit.
+
extend: bool
+
Whether to extend the existing selection range or start a new one.
+
addNew: bool
+
When enabled, this adds a new range to the existing selection, rather than replacing it.
+
moveOnDrag: bool
+
When the mouse even drags content around inside the + editor, this controls whether it is copied (false) or moved + (true). +
+
+ +
lineWrapping: boolean
+
Whether CodeMirror should scroll or wrap for long lines. + Defaults to false (scroll).
+ +
lineNumbers: boolean
+
Whether to show line numbers to the left of the editor.
+ +
firstLineNumber: integer
+
At which number to start counting lines. Default is 1.
+ +
lineNumberFormatter: function(line: integer) → string
+
A function used to format line numbers. The function is + passed the line number, and should return a string that will be + shown in the gutter.
+ +
gutters: array<string>
+
Can be used to add extra gutters (beyond or instead of the + line number gutter). Should be an array of CSS class names, each + of which defines a width (and optionally a + background), and which will be used to draw the background of + the gutters. May include + the CodeMirror-linenumbers class, in order to + explicitly set the position of the line number gutter (it will + default to be to the right of all other gutters). These class + names are the keys passed + to setGutterMarker.
+ +
fixedGutter: boolean
+
Determines whether the gutter scrolls along with the content + horizontally (false) or whether it stays fixed during horizontal + scrolling (true, the default).
+ +
scrollbarStyle: string
+
Chooses a scrollbar implementation. The default + is "native", showing native scrollbars. The core + library also provides the "null" style, which + completely hides the + scrollbars. Addons can + implement additional scrollbar models.
+ +
coverGutterNextToScrollbar: boolean
+
When fixedGutter + is on, and there is a horizontal scrollbar, by default the + gutter will be visible to the left of this scrollbar. If this + option is set to true, it will be covered by an element with + class CodeMirror-gutter-filler.
+ +
inputStyle: string
+
Selects the way CodeMirror handles input and focus. The core + library defines the "textarea" + and "contenteditable" input models. On mobile + browsers, the default is "contenteditable". On + desktop browsers, the default is "textarea". + Support for IME and screen readers is better in + the "contenteditable" model. The intention is to + make it the default on modern desktop browsers in the + future.
+ +
readOnly: boolean|string
+
This disables editing of the editor content by the user. If + the special value "nocursor" is given (instead of + simply true), focusing of the editor is also + disallowed.
+ +
showCursorWhenSelecting: boolean
+
Whether the cursor should be drawn when a selection is + active. Defaults to false.
+ +
lineWiseCopyCut: boolean
+
When enabled, which is the default, doing copy or cut when + there is no selection will copy or cut the whole lines that have + cursors on them.
+ +
pasteLinesPerSelection: boolean
+
When pasting something from an external source (not from the + editor itself), if the number of lines matches the number of + selection, CodeMirror will by default insert one line per + selection. You can set this to false to disable + that behavior.
+ +
undoDepth: integer
+
The maximum number of undo levels that the editor stores. + Note that this includes selection change events. Defaults to + 200.
+ +
historyEventDelay: integer
+
The period of inactivity (in milliseconds) that will cause a + new history event to be started when typing or deleting. + Defaults to 1250.
+ +
tabindex: integer
+
The tab + index to assign to the editor. If not given, no tab index + will be assigned.
+ +
autofocus: boolean
+
Can be used to make CodeMirror focus itself on + initialization. Defaults to off. + When fromTextArea is + used, and no explicit value is given for this option, it will be + set to true when either the source textarea is focused, or it + has an autofocus attribute and no other element is + focused.
+
+ +

Below this a few more specialized, low-level options are + listed. These are only useful in very specific situations, you + might want to skip them the first time you read this manual.

+ +
+
dragDrop: boolean
+
Controls whether drag-and-drop is enabled. On by default.
+ +
allowDropFileTypes: array<string>
+
When set (default is null) only files whose + type is in the array can be dropped into the editor. The strings + should be MIME types, and will be checked against + the type + of the File object as reported by the browser.
+ +
cursorBlinkRate: number
+
Half-period in milliseconds used for cursor blinking. The default blink + rate is 530ms. By setting this to zero, blinking can be disabled. A + negative value hides the cursor entirely.
+ +
cursorScrollMargin: number
+
How much extra space to always keep above and below the + cursor when approaching the top or bottom of the visible view in + a scrollable document. Default is 0.
+ +
cursorHeight: number
+
Determines the height of the cursor. Default is 1, meaning + it spans the whole height of the line. For some fonts (and by + some tastes) a smaller height (for example 0.85), + which causes the cursor to not reach all the way to the bottom + of the line, looks better
+ +
resetSelectionOnContextMenu: boolean
+
Controls whether, when the context menu is opened with a + click outside of the current selection, the cursor is moved to + the point of the click. Defaults to true.
+ +
workTime, workDelay: number
+
Highlighting is done by a pseudo background-thread that will + work for workTime milliseconds, and then use + timeout to sleep for workDelay milliseconds. The + defaults are 200 and 300, you can change these options to make + the highlighting more or less aggressive.
+ +
pollInterval: number
+
Indicates how quickly CodeMirror should poll its input + textarea for changes (when focused). Most input is captured by + events, but some things, like IME input on some browsers, don't + generate events that allow CodeMirror to properly detect it. + Thus, it polls. Default is 100 milliseconds.
+ +
flattenSpans: boolean
+
By default, CodeMirror will combine adjacent tokens into a + single span if they have the same class. This will result in a + simpler DOM tree, and thus perform better. With some kinds of + styling (such as rounded corners), this will change the way the + document looks. You can set this option to false to disable this + behavior.
+ +
addModeClass: boolean
+
When enabled (off by default), an extra CSS class will be + added to each token, indicating the + (inner) mode that produced it, prefixed + with "cm-m-". For example, tokens from the XML mode + will get the cm-m-xml class.
+ +
maxHighlightLength: number
+
When highlighting long lines, in order to stay responsive, + the editor will give up and simply style the rest of the line as + plain text when it reaches a certain position. The default is + 10 000. You can set this to Infinity to turn off + this behavior.
+ +
viewportMargin: integer
+
Specifies the amount of lines that are rendered above and + below the part of the document that's currently scrolled into + view. This affects the amount of updates needed when scrolling, + and the amount of work that such an update does. You should + usually leave it at its default, 10. Can be set + to Infinity to make sure the whole document is + always rendered, and thus the browser's text search works on it. + This will have bad effects on performance of big + documents.
+
+
+ +
+

Events

+ +

Various CodeMirror-related objects emit events, which allow + client code to react to various situations. Handlers for such + events can be registered with the on + and off methods on the objects + that the event fires on. To fire your own events, + use CodeMirror.signal(target, name, args...), + where target is a non-DOM-node object.

+ +

An editor instance fires the following events. + The instance argument always refers to the editor + itself.

+ +
+
"change" (instance: CodeMirror, changeObj: object)
+
Fires every time the content of the editor is changed. + The changeObj is a {from, to, text, removed, + origin} object containing information about the changes + that occurred as second argument. from + and to are the positions (in the pre-change + coordinate system) where the change started and ended (for + example, it might be {ch:0, line:18} if the + position is at the beginning of line #19). text is + an array of strings representing the text that replaced the + changed range (split by line). removed is the text + that used to be between from and to, + which is overwritten by this change. This event is + fired before the end of + an operation, before the DOM updates + happen.
+ +
"changes" (instance: CodeMirror, changes: array<object>)
+
Like the "change" + event, but batched per operation, + passing an array containing all the changes that happened in the + operation. This event is fired after the operation finished, and + display changes it makes will trigger a new operation.
+ +
"beforeChange" (instance: CodeMirror, changeObj: object)
+
This event is fired before a change is applied, and its + handler may choose to modify or cancel the change. + The changeObj object + has from, to, and text + properties, as with + the "change" event. It + also has a cancel() method, which can be called to + cancel the change, and, if the change isn't + coming from an undo or redo event, an update(from, to, + text) method, which may be used to modify the change. + Undo or redo changes can't be modified, because they hold some + metainformation for restoring old marked ranges that is only + valid for that specific change. All three arguments + to update are optional, and can be left off to + leave the existing value for that field + intact. Note: you may not do anything from + a "beforeChange" handler that would cause changes + to the document or its visualization. Doing so will, since this + handler is called directly from the bowels of the CodeMirror + implementation, probably cause the editor to become + corrupted.
+ +
"cursorActivity" (instance: CodeMirror)
+
Will be fired when the cursor or selection moves, or any + change is made to the editor content.
+ +
"keyHandled" (instance: CodeMirror, name: string, event: Event)
+
Fired after a key is handled through a + key map. name is the name of the handled key (for + example "Ctrl-X" or "'q'"), + and event is the DOM keydown + or keypress event.
+ +
"inputRead" (instance: CodeMirror, changeObj: object)
+
Fired whenever new input is read from the hidden textarea + (typed or pasted by the user).
+ +
"electricInput" (instance: CodeMirror, line: integer)
+
Fired if text input matched the + mode's electric patterns, + and this caused the line's indentation to change.
+ +
"beforeSelectionChange" (instance: CodeMirror, obj: {ranges, origin, update})
+
This event is fired before the selection is moved. Its + handler may inspect the set of selection ranges, present as an + array of {anchor, head} objects in + the ranges property of the obj + argument, and optionally change them by calling + the update method on this object, passing an array + of ranges in the same format. The object also contains + an origin property holding the origin string passed + to the selection-changing method, if any. Handlers for this + event have the same restriction + as "beforeChange" + handlers — they should not do anything to directly update the + state of the editor.
+ +
"viewportChange" (instance: CodeMirror, from: number, to: number)
+
Fires whenever the view port of + the editor changes (due to scrolling, editing, or any other + factor). The from and to arguments + give the new start and end of the viewport.
+ +
"swapDoc" (instance: CodeMirror, oldDoc: Doc)
+
This is signalled when the editor's document is replaced + using the swapDoc + method.
+ +
"gutterClick" (instance: CodeMirror, line: integer, gutter: string, clickEvent: Event)
+
Fires when the editor gutter (the line-number area) is + clicked. Will pass the editor instance as first argument, the + (zero-based) number of the line that was clicked as second + argument, the CSS class of the gutter that was clicked as third + argument, and the raw mousedown event object as + fourth argument.
+ +
"gutterContextMenu" (instance: CodeMirror, line: integer, gutter: string, contextMenu: Event: Event)
+
Fires when the editor gutter (the line-number area) + receives a contextmenu event. Will pass the editor + instance as first argument, the (zero-based) number of the line + that was clicked as second argument, the CSS class of the + gutter that was clicked as third argument, and the raw + contextmenu mouse event object as fourth argument. + You can preventDefault the event, to signal that + CodeMirror should do no further handling.
+ +
"focus" (instance: CodeMirror, event: Event)
+
Fires whenever the editor is focused.
+ +
"blur" (instance: CodeMirror, event: Event)
+
Fires whenever the editor is unfocused.
+ +
"scroll" (instance: CodeMirror)
+
Fires when the editor is scrolled.
+ +
"refresh" (instance: CodeMirror)
+
Fires when the editor is refreshed + or resized. Mostly useful to invalidate + cached values that depend on the editor or character size.
+ +
"optionChange" (instance: CodeMirror, option: string)
+
Dispatched every time an option is changed with setOption.
+ +
"scrollCursorIntoView" (instance: CodeMirror, event: Event)
+
Fires when the editor tries to scroll its cursor into view. + Can be hooked into to take care of additional scrollable + containers around the editor. When the event object has + its preventDefault method called, CodeMirror will + not itself try to scroll the window.
+ +
"update" (instance: CodeMirror)
+
Will be fired whenever CodeMirror updates its DOM display.
+ +
"renderLine" (instance: CodeMirror, line: LineHandle, element: Element)
+
Fired whenever a line is (re-)rendered to the DOM. Fired + right after the DOM element is built, before it is + added to the document. The handler may mess with the style of + the resulting element, or add event handlers, but + should not try to change the state of the editor.
+ +
"mousedown", + "dblclick", "touchstart", "contextmenu", + "keydown", "keypress", + "keyup", "cut", "copy", "paste", + "dragstart", "dragenter", + "dragover", "dragleave", + "drop" + (instance: CodeMirror, event: Event)
+
Fired when CodeMirror is handling a DOM event of this type. + You can preventDefault the event, or give it a + truthy codemirrorIgnore property, to signal that + CodeMirror should do no further handling.
+
+ +

Document objects (instances + of CodeMirror.Doc) emit the + following events:

+ +
+
"change" (doc: CodeMirror.Doc, changeObj: object)
+
Fired whenever a change occurs to the + document. changeObj has a similar type as the + object passed to the + editor's "change" + event.
+ +
"beforeChange" (doc: CodeMirror.Doc, change: object)
+
See the description of the + same event on editor instances.
+ +
"cursorActivity" (doc: CodeMirror.Doc)
+
Fired whenever the cursor or selection in this document + changes.
+ +
"beforeSelectionChange" (doc: CodeMirror.Doc, selection: {head, anchor})
+
Equivalent to + the event by the same + name as fired on editor instances.
+
+ +

Line handles (as returned by, for + example, getLineHandle) + support these events:

+ +
+
"delete" ()
+
Will be fired when the line object is deleted. A line object + is associated with the start of the line. Mostly useful + when you need to find out when your gutter + markers on a given line are removed.
+
"change" (line: LineHandle, changeObj: object)
+
Fires when the line's text content is changed in any way + (but the line is not deleted outright). The change + object is similar to the one passed + to change event on the editor + object.
+
+ +

Marked range handles (CodeMirror.TextMarker), as returned + by markText + and setBookmark, emit the + following events:

+ +
+
"beforeCursorEnter" ()
+
Fired when the cursor enters the marked range. From this + event handler, the editor state may be inspected + but not modified, with the exception that the range on + which the event fires may be cleared.
+
"clear" (from: {line, ch}, to: {line, ch})
+
Fired when the range is cleared, either through cursor + movement in combination + with clearOnEnter + or through a call to its clear() method. Will only + be fired once per handle. Note that deleting the range through + text editing does not fire this event, because an undo action + might bring the range back into existence. from + and to give the part of the document that the range + spanned when it was cleared.
+
"hide" ()
+
Fired when the last part of the marker is removed from the + document by editing operations.
+
"unhide" ()
+
Fired when, after the marker was removed by editing, a undo + operation brought the marker back.
+
+ +

Line widgets (CodeMirror.LineWidget), returned + by addLineWidget, fire + these events:

+ +
+
"redraw" ()
+
Fired whenever the editor re-adds the widget to the DOM. + This will happen once right after the widget is added (if it is + scrolled into view), and then again whenever it is scrolled out + of view and back in again, or when changes to the editor options + or the line the widget is on require the widget to be + redrawn.
+
+
+ +
+

Key Maps

+ +

Key maps are ways to associate keys and mouse buttons with + functionality. A key map is an object mapping strings that + identify the buttons to functions that implement their + functionality.

+ +

The CodeMirror distributions comes + with Emacs, Vim, + and Sublime Text-style keymaps.

+ +

Keys are identified either by name or by character. + The CodeMirror.keyNames object defines names for + common keys and associates them with their key codes. Examples of + names defined here are Enter, F5, + and Q. These can be prefixed + with Shift-, Cmd-, Ctrl-, + and Alt- to specify a modifier. So for + example, Shift-Ctrl-Space would be a valid key + identifier.

+ +

Common example: map the Tab key to insert spaces instead of a tab + character.

+ +
+editor.setOption("extraKeys", {
+  Tab: function(cm) {
+    var spaces = Array(cm.getOption("indentUnit") + 1).join(" ");
+    cm.replaceSelection(spaces);
+  }
+});
+ +

Alternatively, a character can be specified directly by + surrounding it in single quotes, for example '$' + or 'q'. Due to limitations in the way browsers fire + key events, these may not be prefixed with modifiers.

+ +

To bind mouse buttons, use the names `LeftClick`, + `MiddleClick`, and `RightClick`. These can also be prefixed with + modifiers, and in addition, the word `Double` or `Triple` can be + put before `Click` (as in `LeftDoubleClick`) to bind a double- or + triple-click. The function for such a binding is passed the + position that was clicked as second argument.

+ +

Multi-stroke key bindings can be specified + by separating the key names by spaces in the property name, for + example Ctrl-X Ctrl-V. When a map contains + multi-stoke bindings or keys with modifiers that are not specified + in the default order (Shift-Cmd-Ctrl-Alt), you must + call CodeMirror.normalizeKeyMap on it before it can + be used. This function takes a keymap and modifies it to normalize + modifier order and properly recognize multi-stroke bindings. It + will return the keymap itself.

+ +

The CodeMirror.keyMap object associates key maps + with names. User code and key map definitions can assign extra + properties to this object. Anywhere where a key map is expected, a + string can be given, which will be looked up in this object. It + also contains the "default" key map holding the + default bindings.

+ +

The values of properties in key maps can be either functions of + a single argument (the CodeMirror instance), strings, or + false. Strings refer + to commands, which are described below. If + the property is set to false, CodeMirror leaves + handling of the key up to the browser. A key handler function may + return CodeMirror.Pass to indicate that it has + decided not to handle the key, and other handlers (or the default + behavior) should be given a turn.

+ +

Keys mapped to command names that start with the + characters "go" or to functions that have a + truthy motion property (which should be used for + cursor-movement actions) will be fired even when an + extra Shift modifier is present (i.e. "Up": + "goLineUp" matches both up and shift-up). This is used to + easily implement shift-selection.

+ +

Key maps can defer to each other by defining + a fallthrough property. This indicates that when a + key is not found in the map itself, one or more other maps should + be searched. It can hold either a single key map or an array of + key maps.

+ +

When a key map needs to set something up when it becomes + active, or tear something down when deactivated, it can + contain attach and/or detach properties, + which should hold functions that take the editor instance and the + next or previous keymap. Note that this only works for the + top-level keymap, not for fallthrough + maps or maps added + with extraKeys + or addKeyMap.

+
+ +
+

Commands

+ +

Commands are parameter-less actions that can be performed on an + editor. Their main use is for key bindings. Commands are defined by + adding properties to the CodeMirror.commands object. + A number of common commands are defined by the library itself, + most of them used by the default key bindings. The value of a + command property must be a function of one argument (an editor + instance).

+ +

Some of the commands below are referenced in the default + key map, but not defined by the core library. These are intended to + be defined by user code or addons.

+ +

Commands can also be run with + the execCommand + method.

+ +
+
selectAllCtrl-A (PC), Cmd-A (Mac)
+
Select the whole content of the editor.
+ +
singleSelectionEsc
+
When multiple selections are present, this deselects all but + the primary selection.
+ +
killLineCtrl-K (Mac)
+
Emacs-style line killing. Deletes the part of the line after + the cursor. If that consists only of whitespace, the newline at + the end of the line is also deleted.
+ +
deleteLineCtrl-D (PC), Cmd-D (Mac)
+
Deletes the whole line under the cursor, including newline at the end.
+ +
delLineLeft
+
Delete the part of the line before the cursor.
+ +
delWrappedLineLeftCmd-Backspace (Mac)
+
Delete the part of the line from the left side of the visual line the cursor is on to the cursor.
+ +
delWrappedLineRightCmd-Delete (Mac)
+
Delete the part of the line from the cursor to the right side of the visual line the cursor is on.
+ +
undoCtrl-Z (PC), Cmd-Z (Mac)
+
Undo the last change. Note that, because browsers still + don't make it possible for scripts to react to or customize the + context menu, selecting undo (or redo) from the context menu in + a CodeMirror instance does not work.
+ +
redoCtrl-Y (PC), Shift-Cmd-Z (Mac), Cmd-Y (Mac)
+
Redo the last undone change.
+ +
undoSelectionCtrl-U (PC), Cmd-U (Mac)
+
Undo the last change to the selection, or if there are no + selection-only changes at the top of the history, undo the last + change.
+ +
redoSelectionAlt-U (PC), Shift-Cmd-U (Mac)
+
Redo the last change to the selection, or the last text change if + no selection changes remain.
+ +
goDocStartCtrl-Home (PC), Cmd-Up (Mac), Cmd-Home (Mac)
+
Move the cursor to the start of the document.
+ +
goDocEndCtrl-End (PC), Cmd-End (Mac), Cmd-Down (Mac)
+
Move the cursor to the end of the document.
+ +
goLineStartAlt-Left (PC), Ctrl-A (Mac)
+
Move the cursor to the start of the line.
+ +
goLineStartSmartHome
+
Move to the start of the text on the line, or if we are + already there, to the actual start of the line (including + whitespace).
+ +
goLineEndAlt-Right (PC), Ctrl-E (Mac)
+
Move the cursor to the end of the line.
+ +
goLineRightCmd-Right (Mac)
+
Move the cursor to the right side of the visual line it is on.
+ +
goLineLeftCmd-Left (Mac)
+
Move the cursor to the left side of the visual line it is on. If + this line is wrapped, that may not be the start of the line.
+ +
goLineLeftSmart
+
Move the cursor to the left side of the visual line it is + on. If that takes it to the start of the line, behave + like goLineStartSmart.
+ +
goLineUpUp, Ctrl-P (Mac)
+
Move the cursor up one line.
+ +
goLineDownDown, Ctrl-N (Mac)
+
Move down one line.
+ +
goPageUpPageUp, Shift-Ctrl-V (Mac)
+
Move the cursor up one screen, and scroll up by the same distance.
+ +
goPageDownPageDown, Ctrl-V (Mac)
+
Move the cursor down one screen, and scroll down by the same distance.
+ +
goCharLeftLeft, Ctrl-B (Mac)
+
Move the cursor one character left, going to the previous line + when hitting the start of line.
+ +
goCharRightRight, Ctrl-F (Mac)
+
Move the cursor one character right, going to the next line + when hitting the end of line.
+ +
goColumnLeft
+
Move the cursor one character left, but don't cross line boundaries.
+ +
goColumnRight
+
Move the cursor one character right, don't cross line boundaries.
+ +
goWordLeftAlt-B (Mac)
+
Move the cursor to the start of the previous word.
+ +
goWordRightAlt-F (Mac)
+
Move the cursor to the end of the next word.
+ +
goGroupLeftCtrl-Left (PC), Alt-Left (Mac)
+
Move to the left of the group before the cursor. A group is + a stretch of word characters, a stretch of punctuation + characters, a newline, or a stretch of more than one + whitespace character.
+ +
goGroupRightCtrl-Right (PC), Alt-Right (Mac)
+
Move to the right of the group after the cursor + (see above).
+ +
delCharBeforeShift-Backspace, Ctrl-H (Mac)
+
Delete the character before the cursor.
+ +
delCharAfterDelete, Ctrl-D (Mac)
+
Delete the character after the cursor.
+ +
delWordBeforeAlt-Backspace (Mac)
+
Delete up to the start of the word before the cursor.
+ +
delWordAfterAlt-D (Mac)
+
Delete up to the end of the word after the cursor.
+ +
delGroupBeforeCtrl-Backspace (PC), Alt-Backspace (Mac)
+
Delete to the left of the group before the cursor.
+ +
delGroupAfterCtrl-Delete (PC), Ctrl-Alt-Backspace (Mac), Alt-Delete (Mac)
+
Delete to the start of the group after the cursor.
+ +
indentAutoShift-Tab
+
Auto-indent the current line or selection.
+ +
indentMoreCtrl-] (PC), Cmd-] (Mac)
+
Indent the current line or selection by one indent unit.
+ +
indentLessCtrl-[ (PC), Cmd-[ (Mac)
+
Dedent the current line or selection by one indent unit.
+ +
insertTab
+
Insert a tab character at the cursor.
+ +
insertSoftTab
+
Insert the amount of spaces that match the width a tab at + the cursor position would have.
+ +
defaultTabTab
+
If something is selected, indent it by + one indent unit. If nothing is + selected, insert a tab character.
+ +
transposeCharsCtrl-T (Mac)
+
Swap the characters before and after the cursor.
+ +
newlineAndIndentEnter
+
Insert a newline and auto-indent the new line.
+ +
toggleOverwriteInsert
+
Flip the overwrite flag.
+ +
saveCtrl-S (PC), Cmd-S (Mac)
+
Not defined by the core library, only referred to in + key maps. Intended to provide an easy way for user code to define + a save command.
+ +
findCtrl-F (PC), Cmd-F (Mac)
+
findNextCtrl-G (PC), Cmd-G (Mac)
+
findPrevShift-Ctrl-G (PC), Shift-Cmd-G (Mac)
+
replaceShift-Ctrl-F (PC), Cmd-Alt-F (Mac)
+
replaceAllShift-Ctrl-R (PC), Shift-Cmd-Alt-F (Mac)
+
Not defined by the core library, but defined in + the search addon (or custom client + addons).
+ +
+ +
+ +
+

Customized Styling

+ +

Up to a certain extent, CodeMirror's look can be changed by + modifying style sheet files. The style sheets supplied by modes + simply provide the colors for that mode, and can be adapted in a + very straightforward way. To style the editor itself, it is + possible to alter or override the styles defined + in codemirror.css.

+ +

Some care must be taken there, since a lot of the rules in this + file are necessary to have CodeMirror function properly. Adjusting + colors should be safe, of course, and with some care a lot of + other things can be changed as well. The CSS classes defined in + this file serve the following roles:

+ +
+
CodeMirror
+
The outer element of the editor. This should be used for the + editor width, height, borders and positioning. Can also be used + to set styles that should hold for everything inside the editor + (such as font and font size), or to set a background. Setting + this class' height style to auto will + make the editor resize to fit its + content (it is recommended to also set + the viewportMargin + option to Infinity when doing this.
+ +
CodeMirror-focused
+
Whenever the editor is focused, the top element gets this + class. This is used to hide the cursor and give the selection a + different color when the editor is not focused.
+ +
CodeMirror-gutters
+
This is the backdrop for all gutters. Use it to set the + default gutter background color, and optionally add a border on + the right of the gutters.
+ +
CodeMirror-linenumbers
+
Use this for giving a background or width to the line number + gutter.
+ +
CodeMirror-linenumber
+
Used to style the actual individual line numbers. These + won't be children of the CodeMirror-linenumbers + (plural) element, but rather will be absolutely positioned to + overlay it. Use this to set alignment and text properties for + the line numbers.
+ +
CodeMirror-lines
+
The visible lines. This is where you specify vertical + padding for the editor content.
+ +
CodeMirror-cursor
+
The cursor is a block element that is absolutely positioned. + You can make it look whichever way you want.
+ +
CodeMirror-selected
+
The selection is represented by span elements + with this class.
+ +
CodeMirror-matchingbracket, + CodeMirror-nonmatchingbracket
+
These are used to style matched (or unmatched) brackets.
+
+ +

If your page's style sheets do funky things to + all div or pre elements (you probably + shouldn't do that), you'll have to define rules to cancel these + effects out again for elements under the CodeMirror + class.

+ +

Themes are also simply CSS files, which define colors for + various syntactic elements. See the files in + the theme directory.

+
+ +
+

Programming API

+ +

A lot of CodeMirror features are only available through its + API. Thus, you need to write code (or + use addons) if you want to expose them to + your users.

+ +

Whenever points in the document are represented, the API uses + objects with line and ch properties. + Both are zero-based. CodeMirror makes sure to 'clip' any positions + passed by client code so that they fit inside the document, so you + shouldn't worry too much about sanitizing your coordinates. If you + give ch a value of null, or don't + specify it, it will be replaced with the length of the specified + line. Such positions may also have a sticky property + holding "before" or "after", whether the + position is associated with the character before or after it. This + influences, for example, where the cursor is drawn on a + line-break or bidi-direction boundary.

+ +

Methods prefixed with doc. can, unless otherwise + specified, be called both on CodeMirror (editor) + instances and CodeMirror.Doc instances. Methods + prefixed with cm. are only available + on CodeMirror instances.

+ +

Constructor

+ +

Constructing an editor instance is done with + the CodeMirror(place: Element|fn(Element), + ?option: object) constructor. If the place + argument is a DOM element, the editor will be appended to it. If + it is a function, it will be called, and is expected to place the + editor into the document. options may be an element + mapping option names to values. The options + that it doesn't explicitly specify (or all options, if it is not + passed) will be taken + from CodeMirror.defaults.

+ +

Note that the options object passed to the constructor will be + mutated when the instance's options + are changed, so you shouldn't share such + objects between instances.

+ +

See CodeMirror.fromTextArea + for another way to construct an editor instance.

+ +

Content manipulation methods

+ +
+
doc.getValue(?separator: string) → string
+
Get the current editor content. You can pass it an optional + argument to specify the string to be used to separate lines + (defaults to "\n").
+
doc.setValue(content: string)
+
Set the editor content.
+ +
doc.getRange(from: {line, ch}, to: {line, ch}, ?separator: string) → string
+
Get the text between the given points in the editor, which + should be {line, ch} objects. An optional third + argument can be given to indicate the line separator string to + use (defaults to "\n").
+
doc.replaceRange(replacement: string, from: {line, ch}, to: {line, ch}, ?origin: string)
+
Replace the part of the document between from + and to with the given string. from + and to must be {line, ch} + objects. to can be left off to simply insert the + string at position from. When origin + is given, it will be passed on + to "change" events, and + its first letter will be used to determine whether this change + can be merged with previous history events, in the way described + for selection origins.
+ +
doc.getLine(n: integer) → string
+
Get the content of line n.
+ +
doc.lineCount() → integer
+
Get the number of lines in the editor.
+
doc.firstLine() → integer
+
Get the first line of the editor. This will + usually be zero but for linked sub-views, + or documents instantiated with a non-zero + first line, it might return other values.
+
doc.lastLine() → integer
+
Get the last line of the editor. This will + usually be doc.lineCount() - 1, + but for linked sub-views, + it might return other values.
+ +
doc.getLineHandle(num: integer) → LineHandle
+
Fetches the line handle for the given line number.
+
doc.getLineNumber(handle: LineHandle) → integer
+
Given a line handle, returns the current position of that + line (or null when it is no longer in the + document).
+
doc.eachLine(f: (line: LineHandle))
+
doc.eachLine(start: integer, end: integer, f: (line: LineHandle))
+
Iterate over the whole document, or if start + and end line numbers are given, the range + from start up to (not including) end, + and call f for each line, passing the line handle. + This is a faster way to visit a range of line handlers than + calling getLineHandle + for each of them. Note that line handles have + a text property containing the line's content (as a + string).
+ +
doc.markClean()
+
Set the editor content as 'clean', a flag that it will + retain until it is edited, and which will be set again when such + an edit is undone again. Useful to track whether the content + needs to be saved. This function is deprecated in favor + of changeGeneration, + which allows multiple subsystems to track different notions of + cleanness without interfering.
+
doc.changeGeneration(?closeEvent: boolean) → integer
+
Returns a number that can later be passed + to isClean to test whether + any edits were made (and not undone) in the meantime. + If closeEvent is true, the current history event + will be ‘closed’, meaning it can't be combined with further + changes (rapid typing or deleting events are typically + combined).
+
doc.isClean(?generation: integer) → boolean
+
Returns whether the document is currently clean — not + modified since initialization or the last call + to markClean if no + argument is passed, or since the matching call + to changeGeneration + if a generation value is given.
+
+ +

Cursor and selection methods

+ +
+
doc.getSelection(?lineSep: string) → string
+
Get the currently selected code. Optionally pass a line + separator to put between the lines in the output. When multiple + selections are present, they are concatenated with instances + of lineSep in between.
+
doc.getSelections(?lineSep: string) → array<string>
+
Returns an array containing a string for each selection, + representing the content of the selections.
+ +
doc.replaceSelection(replacement: string, ?select: string)
+
Replace the selection(s) with the given string. By default, + the new selection ends up after the inserted text. The + optional select argument can be used to change + this—passing "around" will cause the new text to be + selected, passing "start" will collapse the + selection to the start of the inserted text.
+
doc.replaceSelections(replacements: array<string>, ?select: string)
+
The length of the given array should be the same as the + number of active selections. Replaces the content of the + selections with the strings in the array. + The select argument works the same as + in replaceSelection.
+ +
doc.getCursor(?start: string) → {line, ch}
+
Retrieve one end of the primary + selection. start is an optional string indicating + which end of the selection to return. It may + be "from", "to", "head" + (the side of the selection that moves when you press + shift+arrow), or "anchor" (the fixed side of the + selection). Omitting the argument is the same as + passing "head". A {line, ch} object + will be returned.
+
doc.listSelections() → array<{anchor, head}>
+
Retrieves a list of all current selections. These will + always be sorted, and never overlap (overlapping selections are + merged). Each object in the array contains anchor + and head properties referring to {line, + ch} objects.
+ +
doc.somethingSelected() → boolean
+
Return true if any text is selected.
+
doc.setCursor(pos: {line, ch}|number, ?ch: number, ?options: object)
+
Set the cursor position. You can either pass a + single {line, ch} object, or the line and the + character as two separate parameters. Will replace all + selections with a single, empty selection at the given position. + The supported options are the same as for setSelection.
+ +
doc.setSelection(anchor: {line, ch}, ?head: {line, ch}, ?options: object)
+
Set a single selection range. anchor + and head should be {line, ch} + objects. head defaults to anchor when + not given. These options are supported: +
+
scroll: boolean
+
Determines whether the selection head should be scrolled + into view. Defaults to true.
+
origin: string
+
Determines whether the selection history event may be + merged with the previous one. When an origin starts with the + character +, and the last recorded selection had + the same origin and was similar (close + in time, both + collapsed or both non-collapsed), the new one will replace the + old one. When it starts with *, it will always + replace the previous event (if that had the same origin). + Built-in motion uses the "+move" origin. User input uses the "+input" origin.
+
bias: number
+
Determine the direction into which the selection endpoints + should be adjusted when they fall inside + an atomic range. Can be either -1 + (backward) or 1 (forward). When not given, the bias will be + based on the relative position of the old selection—the editor + will try to move further away from that, to prevent getting + stuck.
+
+ +
doc.setSelections(ranges: array<{anchor, head}>, ?primary: integer, ?options: object)
+
Sets a new set of selections. There must be at least one + selection in the given array. When primary is a + number, it determines which selection is the primary one. When + it is not given, the primary index is taken from the previous + selection, or set to the last range if the previous selection + had less ranges than the new one. Supports the same options + as setSelection.
+
doc.addSelection(anchor: {line, ch}, ?head: {line, ch})
+
Adds a new selection to the existing set of selections, and + makes it the primary selection.
+ +
doc.extendSelection(from: {line, ch}, ?to: {line, ch}, ?options: object)
+
Similar + to setSelection, but + will, if shift is held or + the extending flag is set, move the + head of the selection while leaving the anchor at its current + place. to is optional, and can be passed to ensure + a region (for example a word or paragraph) will end up selected + (in addition to whatever lies between that region and the + current anchor). When multiple selections are present, all but + the primary selection will be dropped by this method. + Supports the same options as setSelection.
+
doc.extendSelections(heads: array<{line, ch}>, ?options: object)
+
An equivalent + of extendSelection + that acts on all selections at once.
+
doc.extendSelectionsBy(f: function(range: {anchor, head}) → {line, ch}), ?options: object)
+
Applies the given function to all existing selections, and + calls extendSelections + on the result.
+
doc.setExtending(value: boolean)
+
Sets or clears the 'extending' flag, which acts similar to + the shift key, in that it will cause cursor movement and calls + to extendSelection + to leave the selection anchor in place.
+
doc.getExtending() → boolean
+
Get the value of the 'extending' flag.
+ +
cm.hasFocus() → boolean
+
Tells you whether the editor currently has focus.
+ +
cm.findPosH(start: {line, ch}, amount: integer, unit: string, visually: boolean) → {line, ch, ?hitSide: boolean}
+
Used to find the target position for horizontal cursor + motion. start is a {line, ch} + object, amount an integer (may be negative), + and unit one of the + string "char", "column", + or "word". Will return a position that is produced + by moving amount times the distance specified + by unit. When visually is true, motion + in right-to-left text will be visual rather than logical. When + the motion was clipped by hitting the end or start of the + document, the returned value will have a hitSide + property set to true.
+
cm.findPosV(start: {line, ch}, amount: integer, unit: string) → {line, ch, ?hitSide: boolean}
+
Similar to findPosH, + but used for vertical motion. unit may + be "line" or "page". The other + arguments and the returned value have the same interpretation as + they have in findPosH.
+ +
cm.findWordAt(pos: {line, ch}) → {anchor: {line, ch}, head: {line, ch}}
+
Returns the start and end of the 'word' (the stretch of + letters, whitespace, or punctuation) at the given position.
+
+ +

Configuration methods

+ +
+
cm.setOption(option: string, value: any)
+
Change the configuration of the editor. option + should the name of an option, + and value should be a valid value for that + option.
+
cm.getOption(option: string) → any
+
Retrieves the current value of the given option for this + editor instance.
+ +
cm.addKeyMap(map: object, bottom: boolean)
+
Attach an additional key map to the + editor. This is mostly useful for addons that need to register + some key handlers without trampling on + the extraKeys + option. Maps added in this way have a higher precedence than + the extraKeys + and keyMap options, + and between them, the maps added earlier have a lower precedence + than those added later, unless the bottom argument + was passed, in which case they end up below other key maps added + with this method.
+
cm.removeKeyMap(map: object)
+
Disable a keymap added + with addKeyMap. Either + pass in the key map object itself, or a string, which will be + compared against the name property of the active + key maps.
+ +
cm.addOverlay(mode: string|object, ?options: object)
+
Enable a highlighting overlay. This is a stateless mini-mode + that can be used to add extra highlighting. For example, + the search addon uses it to + highlight the term that's currently being + searched. mode can be a mode + spec or a mode object (an object with + a token method). + The options parameter is optional. If given, it + should be an object, optionally containing the following options: +
+
opaque: bool
+
Defaults to off, but can be given to allow the overlay + styling, when not null, to override the styling of + the base mode entirely, instead of the two being applied + together.
+
priority: number
+
Determines the ordering in which the overlays are + applied. Those with high priority are applied after those + with lower priority, and able to override the opaqueness of + the ones that come before. Defaults to 0.
+
+
+ +
cm.removeOverlay(mode: string|object)
+
Pass this the exact value passed for the mode + parameter to addOverlay, + or a string that corresponds to the name property of + that value, to remove an overlay again.
+ +
cm.on(type: string, func: (...args))
+
Register an event handler for the given event type (a + string) on the editor instance. There is also + a CodeMirror.on(object, type, func) version + that allows registering of events on any object.
+
cm.off(type: string, func: (...args))
+
Remove an event handler on the editor instance. An + equivalent CodeMirror.off(object, type, + func) also exists.
+
+ +

Document management methods

+ +

Each editor is associated with an instance + of CodeMirror.Doc, its document. A document + represents the editor content, plus a selection, an undo history, + and a mode. A document can only be + associated with a single editor at a time. You can create new + documents by calling the CodeMirror.Doc(text, mode, + firstLineNumber) constructor. The last two arguments are + optional and can be used to set a mode for the document and make + it start at a line number other than 0, respectively.

+ +
+
cm.getDoc() → Doc
+
Retrieve the currently active document from an editor.
+
doc.getEditor() → CodeMirror
+
Retrieve the editor associated with a document. May + return null.
+ +
cm.swapDoc(doc: CodeMirror.Doc) → Doc
+
Attach a new document to the editor. Returns the old + document, which is now no longer associated with an editor.
+ +
doc.copy(copyHistory: boolean) → Doc
+
Create an identical copy of the given doc. + When copyHistory is true, the history will also be + copied. Can not be called directly on an editor.
+ +
doc.linkedDoc(options: object) → Doc
+
Create a new document that's linked to the target document. + Linked documents will stay in sync (changes to one are also + applied to the other) until unlinked. + These are the options that are supported: +
+
sharedHist: boolean
+
When turned on, the linked copy will share an undo + history with the original. Thus, something done in one of + the two can be undone in the other, and vice versa.
+
from: integer
+
to: integer
+
Can be given to make the new document a subview of the + original. Subviews only show a given range of lines. Note + that line coordinates inside the subview will be consistent + with those of the parent, so that for example a subview + starting at line 10 will refer to its first line as line 10, + not 0.
+
mode: string|object
+
By default, the new document inherits the mode of the + parent. This option can be set to + a mode spec to give it a + different mode.
+
+
doc.unlinkDoc(doc: CodeMirror.Doc)
+
Break the link between two documents. After calling this, + changes will no longer propagate between the documents, and, if + they had a shared history, the history will become + separate.
+
doc.iterLinkedDocs(function: (doc: CodeMirror.Doc, sharedHist: boolean))
+
Will call the given function for all documents linked to the + target document. It will be passed two arguments, the linked document + and a boolean indicating whether that document shares history + with the target.
+
+ +

History-related methods

+ +
+
doc.undo()
+
Undo one edit (if any undo events are stored).
+
doc.redo()
+
Redo one undone edit.
+ +
doc.undoSelection()
+
Undo one edit or selection change.
+
doc.redoSelection()
+
Redo one undone edit or selection change.
+ +
doc.historySize() → {undo: integer, redo: integer}
+
Returns an object with {undo, redo} properties, + both of which hold integers, indicating the amount of stored + undo and redo operations.
+
doc.clearHistory()
+
Clears the editor's undo history.
+
doc.getHistory() → object
+
Get a (JSON-serializable) representation of the undo history.
+
doc.setHistory(history: object)
+
Replace the editor's undo history with the one provided, + which must be a value as returned + by getHistory. Note that + this will have entirely undefined results if the editor content + isn't also the same as it was when getHistory was + called.
+
+ +

Text-marking methods

+ +
+
doc.markText(from: {line, ch}, to: {line, ch}, ?options: object) → TextMarker
+
Can be used to mark a range of text with a specific CSS + class name. from and to should + be {line, ch} objects. The options + parameter is optional. When given, it should be an object that + may contain the following configuration options: +
+
className: string
+
Assigns a CSS class to the marked stretch of text.
+
inclusiveLeft: boolean
+
Determines whether + text inserted on the left of the marker will end up inside + or outside of it.
+
inclusiveRight: boolean
+
Like inclusiveLeft, + but for the right side.
+
atomic: boolean
+
Atomic ranges act as a single unit when cursor movement is + concerned—i.e. it is impossible to place the cursor inside of + them. In atomic ranges, inclusiveLeft + and inclusiveRight have a different meaning—they + will prevent the cursor from being placed respectively + directly before and directly after the range.
+
collapsed: boolean
+
Collapsed ranges do not show up in the display. Setting a + range to be collapsed will automatically make it atomic.
+
clearOnEnter: boolean
+
When enabled, will cause the mark to clear itself whenever + the cursor enters its range. This is mostly useful for + text-replacement widgets that need to 'snap open' when the + user tries to edit them. The + "clear" event + fired on the range handle can be used to be notified when this + happens.
+
clearWhenEmpty: boolean
+
Determines whether the mark is automatically cleared when + it becomes empty. Default is true.
+
replacedWith: Element
+
Use a given node to display this range. Implies both + collapsed and atomic. The given DOM node must be an + inline element (as opposed to a block element).
+
handleMouseEvents: boolean
+
When replacedWith is given, this determines + whether the editor will capture mouse and drag events + occurring in this widget. Default is false—the events will be + left alone for the default browser handler, or specific + handlers on the widget, to capture.
+
readOnly: boolean
+
A read-only span can, as long as it is not cleared, not be + modified except by + calling setValue to reset + the whole document. Note: adding a read-only span + currently clears the undo history of the editor, because + existing undo events being partially nullified by read-only + spans would corrupt the history (in the current + implementation).
+
addToHistory: boolean
+
When set to true (default is false), adding this marker + will create an event in the undo history that can be + individually undone (clearing the marker).
+
startStyle: string
Can be used to specify + an extra CSS class to be applied to the leftmost span that + is part of the marker.
+
endStyle: string
Equivalent + to startStyle, but for the rightmost span.
+
css: string
+
A string of CSS to be applied to the covered text. For example "color: #fe3".
+
title: + string
When given, will give the nodes created + for this span a HTML title attribute with the + given value.
+
shared: boolean
When the + target document is linked to other + documents, you can set shared to true to make the + marker appear in all documents. By default, a marker appears + only in its target document.
+
+ The method will return an object that represents the marker + (with constructor CodeMirror.TextMarker), which + exposes three methods: + clear(), to remove the mark, + find(), which returns + a {from, to} object (both holding document + positions), indicating the current position of the marked range, + or undefined if the marker is no longer in the + document, and finally changed(), + which you can call if you've done something that might change + the size of the marker (for example changing the content of + a replacedWith + node), and want to cheaply update the display.
+ +
doc.setBookmark(pos: {line, ch}, ?options: object) → TextMarker
+
Inserts a bookmark, a handle that follows the text around it + as it is being edited, at the given position. A bookmark has two + methods find() and clear(). The first + returns the current position of the bookmark, if it is still in + the document, and the second explicitly removes the bookmark. + The options argument is optional. If given, the following + properties are recognized: +
+
widget: Element
Can be used to display a DOM + node at the current location of the bookmark (analogous to + the replacedWith + option to markText).
+
insertLeft: boolean
By default, text typed + when the cursor is on top of the bookmark will end up to the + right of the bookmark. Set this option to true to make it go + to the left instead.
+
shared: boolean
See + the corresponding option + to markText.
+
handleMouseEvents: boolean
+
As with markText, + this determines whether mouse events on the widget inserted + for this bookmark are handled by CodeMirror. The default is + false.
+
+ +
doc.findMarks(from: {line, ch}, to: {line, ch}) → array<TextMarker>
+
Returns an array of all the bookmarks and marked ranges + found between the given positions (non-inclusive).
+
doc.findMarksAt(pos: {line, ch}) → array<TextMarker>
+
Returns an array of all the bookmarks and marked ranges + present at the given position.
+
doc.getAllMarks() → array<TextMarker>
+
Returns an array containing all marked ranges in the document.
+
+ +

Widget, gutter, and decoration methods

+ +
+
doc.setGutterMarker(line: integer|LineHandle, gutterID: string, value: Element) → LineHandle
+
Sets the gutter marker for the given gutter (identified by + its CSS class, see + the gutters option) + to the given value. Value can be either null, to + clear the marker, or a DOM element, to set it. The DOM element + will be shown in the specified gutter next to the specified + line.
+ +
doc.clearGutter(gutterID: string)
+
Remove all gutter markers in + the gutter with the given ID.
+ +
doc.addLineClass(line: integer|LineHandle, where: string, class: string) → LineHandle
+
Set a CSS class name for the given line. line + can be a number or a line handle. where determines + to which element this class should be applied, can can be one + of "text" (the text element, which lies in front of + the selection), "background" (a background element + that will be behind the selection), "gutter" (the + line's gutter space), or "wrap" (the wrapper node + that wraps all of the line's elements, including gutter + elements). class should be the name of the class to + apply.
+ +
doc.removeLineClass(line: integer|LineHandle, where: string, class: string) → LineHandle
+
Remove a CSS class from a line. line can be a + line handle or number. where should be one + of "text", "background", + or "wrap" + (see addLineClass). class + can be left off to remove all classes for the specified node, or + be a string to remove only a specific class.
+ +
doc.lineInfo(line: integer|LineHandle) → object
+
Returns the line number, text content, and marker status of + the given line, which can be either a number or a line handle. + The returned object has the structure {line, handle, text, + gutterMarkers, textClass, bgClass, wrapClass, widgets}, + where gutterMarkers is an object mapping gutter IDs + to marker elements, and widgets is an array + of line widgets attached to this + line, and the various class properties refer to classes added + with addLineClass.
+ +
cm.addWidget(pos: {line, ch}, node: Element, scrollIntoView: boolean)
+
Puts node, which should be an absolutely + positioned DOM node, into the editor, positioned right below the + given {line, ch} position. + When scrollIntoView is true, the editor will ensure + that the entire node is visible (if possible). To remove the + widget again, simply use DOM methods (move it somewhere else, or + call removeChild on its parent).
+ +
doc.addLineWidget(line: integer|LineHandle, node: Element, ?options: object) → LineWidget
+
Adds a line widget, an element shown below a line, spanning + the whole of the editor's width, and moving the lines below it + downwards. line should be either an integer or a + line handle, and node should be a DOM node, which + will be displayed below the given line. options, + when given, should be an object that configures the behavior of + the widget. The following options are supported (all default to + false): +
+
coverGutter: boolean
+
Whether the widget should cover the gutter.
+
noHScroll: boolean
+
Whether the widget should stay fixed in the face of + horizontal scrolling.
+
above: boolean
+
Causes the widget to be placed above instead of below + the text of the line.
+
handleMouseEvents: boolean
+
Determines whether the editor will capture mouse and + drag events occurring in this widget. Default is false—the + events will be left alone for the default browser handler, + or specific handlers on the widget, to capture.
+
insertAt: integer
+
By default, the widget is added below other widgets for + the line. This option can be used to place it at a different + position (zero for the top, N to put it after the Nth other + widget). Note that this only has effect once, when the + widget is created. +
+ Note that the widget node will become a descendant of nodes with + CodeMirror-specific CSS classes, and those classes might in some + cases affect it. This method returns an object that represents + the widget placement. It'll have a line property + pointing at the line handle that it is associated with, and the following methods: +
+
clear()
Removes the widget.
+
changed()
Call + this if you made some change to the widget's DOM node that + might affect its height. It'll force CodeMirror to update + the height of the line that contains the widget.
+
+
+
+ +

Sizing, scrolling and positioning methods

+ +
+
cm.setSize(width: number|string, height: number|string)
+
Programmatically set the size of the editor (overriding the + applicable CSS + rules). width and height + can be either numbers (interpreted as pixels) or CSS units + ("100%", for example). You can + pass null for either of them to indicate that that + dimension should not be changed.
+ +
cm.scrollTo(x: number, y: number)
+
Scroll the editor to a given (pixel) position. Both + arguments may be left as null + or undefined to have no effect.
+
cm.getScrollInfo() → {left, top, width, height, clientWidth, clientHeight}
+
Get an {left, top, width, height, clientWidth, + clientHeight} object that represents the current scroll + position, the size of the scrollable area, and the size of the + visible area (minus scrollbars).
+
cm.scrollIntoView(what: {line, ch}|{left, top, right, bottom}|{from, to}|null, ?margin: number)
+
Scrolls the given position into view. what may + be null to scroll the cursor into view, + a {line, ch} position to scroll a character into + view, a {left, top, right, bottom} pixel range (in + editor-local coordinates), or a range {from, to} + containing either two character positions or two pixel squares. + The margin parameter is optional. When given, it + indicates the amount of vertical pixels around the given area + that should be made visible as well.
+ +
cm.cursorCoords(where: boolean|{line, ch}, mode: string) → {left, top, bottom}
+
Returns an {left, top, bottom} object + containing the coordinates of the cursor position. + If mode is "local", they will be + relative to the top-left corner of the editable document. If it + is "page" or not given, they are relative to the + top-left corner of the page. If mode + is "window", the coordinates are relative to the + top-left corner of the currently visible (scrolled) + window. where can be a boolean indicating whether + you want the start (true) or the end + (false) of the selection, or, if a {line, + ch} object is given, it specifies the precise position at + which you want to measure.
+
cm.charCoords(pos: {line, ch}, ?mode: string) → {left, right, top, bottom}
+
Returns the position and dimensions of an arbitrary + character. pos should be a {line, ch} + object. This differs from cursorCoords in that + it'll give the size of the whole character, rather than just the + position that the cursor would have when it would sit at that + position.
+
cm.coordsChar(object: {left, top}, ?mode: string) → {line, ch}
+
Given an {left, top} object (e.g. coordinates of a mouse event) returns + the {line, ch} position that corresponds to it. The + optional mode parameter determines relative to what + the coordinates are interpreted. It may + be "window", "page" (the default), + or "local".
+
cm.lineAtHeight(height: number, ?mode: string) → number
+
Computes the line at the given pixel + height. mode can be one of the same strings + that coordsChar + accepts.
+
cm.heightAtLine(line: integer|LineHandle, ?mode: string, ?includeWidgets: bool) → number
+
Computes the height of the top of a line, in the coordinate + system specified by mode + (see coordsChar), which + defaults to "page". When a line below the bottom of + the document is specified, the returned value is the bottom of + the last line in the document. By default, the position of the + actual text is returned. If `includeWidgets` is true and the + line has line widgets, the position above the first line widget + is returned.
+
cm.defaultTextHeight() → number
+
Returns the line height of the default font for the editor.
+
cm.defaultCharWidth() → number
+
Returns the pixel width of an 'x' in the default font for + the editor. (Note that for non-monospace fonts, this is mostly + useless, and even for monospace fonts, non-ascii characters + might have a different width).
+ +
cm.getViewport() → {from: number, to: number}
+
Returns a {from, to} object indicating the + start (inclusive) and end (exclusive) of the currently rendered + part of the document. In big documents, when most content is + scrolled out of view, CodeMirror will only render the visible + part, and a margin around it. See also + the viewportChange + event.
+ +
cm.refresh()
+
If your code does something to change the size of the editor + element (window resizes are already listened for), or unhides + it, you should probably follow up by calling this method to + ensure CodeMirror is still looking as intended. See also + the autorefresh addon.
+
+ +

Mode, state, and token-related methods

+ +

When writing language-aware functionality, it can often be + useful to hook into the knowledge that the CodeMirror language + mode has. See the section on modes for a + more detailed description of how these work.

+ +
+
doc.getMode() → object
+
Gets the (outer) mode object for the editor. Note that this + is distinct from getOption("mode"), which gives you + the mode specification, rather than the resolved, instantiated + mode object.
+ +
cm.getModeAt(pos: {line, ch}) → object
+
Gets the inner mode at a given position. This will return + the same as getMode for + simple modes, but will return an inner mode for nesting modes + (such as htmlmixed).
+ +
cm.getTokenAt(pos: {line, ch}, ?precise: boolean) → object
+
Retrieves information about the token the current mode found + before the given position (a {line, ch} object). The + returned object has the following properties: +
+
start
The character (on the given line) at which the token starts.
+
end
The character at which the token ends.
+
string
The token's string.
+
type
The token type the mode assigned + to the token, such as "keyword" + or "comment" (may also be null).
+
state
The mode's state at the end of this token.
+
+ If precise is true, the token will be guaranteed to be accurate based on recent edits. If false or + not specified, the token will use cached state information, which will be faster but might not be accurate if + edits were recently made and highlighting has not yet completed. +
+ +
cm.getLineTokens(line: integer, ?precise: boolean) → array<{start, end, string, type, state}>
+
This is similar + to getTokenAt, but + collects all tokens for a given line into an array. It is much + cheaper than repeatedly calling getTokenAt, which + re-parses the part of the line before the token for every call.
+ +
cm.getTokenTypeAt(pos: {line, ch}) → string
+
This is a (much) cheaper version + of getTokenAt useful for + when you just need the type of the token at a given position, + and no other information. Will return null for + unstyled tokens, and a string, potentially containing multiple + space-separated style names, otherwise.
+ +
cm.getHelpers(pos: {line, ch}, type: string) → array<helper>
+
Fetch the set of applicable helper values for the given + position. Helpers provide a way to look up functionality + appropriate for a mode. The type argument provides + the helper namespace (see + registerHelper), in + which the values will be looked up. When the mode itself has a + property that corresponds to the type, that + directly determines the keys that are used to look up the helper + values (it may be either a single string, or an array of + strings). Failing that, the mode's helperType + property and finally the mode's name are used.
+
For example, the JavaScript mode has a + property fold containing "brace". When + the brace-fold addon is loaded, that defines a + helper named brace in the fold + namespace. This is then used by + the foldcode addon to + figure out that it can use that folding function to fold + JavaScript code.
+
When any 'global' + helpers are defined for the given namespace, their predicates + are called on the current mode and editor, and all those that + declare they are applicable will also be added to the array that + is returned.
+ +
cm.getHelper(pos: {line, ch}, type: string) → helper
+
Returns the first applicable helper value. + See getHelpers.
+ +
cm.getStateAfter(?line: integer, ?precise: boolean) → object
+
Returns the mode's parser state, if any, at the end of the + given line number. If no line number is given, the state at the + end of the document is returned. This can be useful for storing + parsing errors in the state, or getting other kinds of + contextual information for a line. precise is defined + as in getTokenAt().
+
+ +

Miscellaneous methods

+ +
+
cm.operation(func: () → any) → any
+
CodeMirror internally buffers changes and only updates its + DOM structure after it has finished performing some operation. + If you need to perform a lot of operations on a CodeMirror + instance, you can call this method with a function argument. It + will call the function, buffering up all changes, and only doing + the expensive update after the function returns. This can be a + lot faster. The return value from this method will be the return + value of your function.
+ +
cm.startOperation()
+
cm.endOperation()
+
In normal circumstances, use the above operation + method. But if you want to buffer operations happening asynchronously, + or that can't all be wrapped in a callback function, you can + call startOperation to tell CodeMirror to start + buffering changes, and endOperation to actually + render all the updates. Be careful: if you use this + API and forget to call endOperation, the editor will + just never update.
+ +
cm.indentLine(line: integer, ?dir: string|integer)
+
Adjust the indentation of the given line. The second + argument (which defaults to "smart") may be one of: +
+
"prev"
+
Base indentation on the indentation of the previous line.
+
"smart"
+
Use the mode's smart indentation if available, behave + like "prev" otherwise.
+
"add"
+
Increase the indentation of the line by + one indent unit.
+
"subtract"
+
Reduce the indentation of the line.
+
<integer>
+
Add (positive number) or reduce (negative number) the + indentation by the given amount of spaces.
+
+ +
cm.toggleOverwrite(?value: boolean)
+
Switches between overwrite and normal insert mode (when not + given an argument), or sets the overwrite mode to a specific + state (when given an argument).
+ +
cm.isReadOnly() → boolean
+
Tells you whether the editor's content can be edited by the + user.
+ +
doc.lineSeparator()
+
Returns the preferred line separator string for this + document, as per the option + by the same name. When that option is null, the + string "\n" is returned.
+ +
cm.execCommand(name: string)
+
Runs the command with the given name on the editor.
+ +
doc.posFromIndex(index: integer) → {line, ch}
+
Calculates and returns a {line, ch} object for a + zero-based index who's value is relative to the start of the + editor's text. If the index is out of range of the text then + the returned object is clipped to start or end of the text + respectively.
+
doc.indexFromPos(object: {line, ch}) → integer
+
The reverse of posFromIndex.
+ +
cm.focus()
+
Give the editor focus.
+ +
cm.getInputField() → Element
+
Returns the input field for the editor. Will be a textarea + or an editable div, depending on the value of + the inputStyle + option.
+
cm.getWrapperElement() → Element
+
Returns the DOM node that represents the editor, and + controls its size. Remove this from your tree to delete an + editor instance.
+
cm.getScrollerElement() → Element
+
Returns the DOM node that is responsible for the scrolling + of the editor.
+
cm.getGutterElement() → Element
+
Fetches the DOM node that contains the editor gutters.
+
+ +

Static properties

+

The CodeMirror object itself provides + several useful properties.

+ +
+
CodeMirror.version: string
+
It contains a string that indicates the version of the + library. This is a triple of + integers "major.minor.patch", + where patch is zero for releases, and something + else (usually one) for dev snapshots.
+ +
CodeMirror.fromTextArea(textArea: TextAreaElement, ?config: object)
+
This method provides another way to initialize an editor. It + takes a textarea DOM node as first argument and an optional + configuration object as second. It will replace the textarea + with a CodeMirror instance, and wire up the form of that + textarea (if any) to make sure the editor contents are put into + the textarea when the form is submitted. The text in the + textarea will provide the content for the editor. A CodeMirror + instance created this way has three additional methods: +
+
cm.save()
+
Copy the content of the editor into the textarea.
+ +
cm.toTextArea()
+
Remove the editor, and restore the original textarea (with + the editor's current content). If you dynamically create and + destroy editors made with `fromTextArea`, without destroying + the form they are part of, you should make sure to call + `toTextArea` to remove the editor, or its `"submit"` handler + on the form will cause a memory leak.
+ +
cm.getTextArea() → TextAreaElement
+
Returns the textarea that the instance was based on.
+
+
+ +
CodeMirror.defaults: object
+
An object containing default values for + all options. You can assign to its + properties to modify defaults (though this won't affect editors + that have already been created).
+ +
CodeMirror.defineExtension(name: string, value: any)
+
If you want to define extra methods in terms of the + CodeMirror API, it is possible to + use defineExtension. This will cause the given + value (usually a method) to be added to all CodeMirror instances + created from then on.
+ +
CodeMirror.defineDocExtension(name: string, value: any)
+
Like defineExtension, + but the method will be added to the interface + for Doc objects instead.
+ +
CodeMirror.defineOption(name: string, + default: any, updateFunc: function)
+
Similarly, defineOption can be used to define new options for + CodeMirror. The updateFunc will be called with the + editor instance and the new value when an editor is initialized, + and whenever the option is modified + through setOption.
+ +
CodeMirror.defineInitHook(func: function)
+
If your extension just needs to run some + code whenever a CodeMirror instance is initialized, + use CodeMirror.defineInitHook. Give it a function as + its only argument, and from then on, that function will be called + (with the instance as argument) whenever a new CodeMirror instance + is initialized.
+ +
CodeMirror.registerHelper(type: string, name: string, value: helper)
+
Registers a helper value with the given name in + the given namespace (type). This is used to define + functionality that may be looked up by mode. Will create (if it + doesn't already exist) a property on the CodeMirror + object for the given type, pointing to an object + that maps names to values. I.e. after + doing CodeMirror.registerHelper("hint", "foo", + myFoo), the value CodeMirror.hint.foo will + point to myFoo.
+ +
CodeMirror.registerGlobalHelper(type: string, name: string, predicate: fn(mode, CodeMirror), value: helper)
+
Acts + like registerHelper, + but also registers this helper as 'global', meaning that it will + be included by getHelpers + whenever the given predicate returns true when + called with the local mode and editor.
+ +
CodeMirror.Pos(line: integer, ?ch: integer, ?sticky: string)
+
A constructor for the objects that are used to represent + positions in editor documents. sticky defaults to + null, but can be set to "before" + or "after" to make the position explicitly + associate with the character before or after it.
+ +
CodeMirror.changeEnd(change: object) → {line, ch}
+
Utility function that computes an end position from a change + (an object with from, to, + and text properties, as passed to + various event handlers). The + returned position will be the end of the changed + range, after the change is applied.
+ +
CodeMirror.countColumn(line: string, index: number, tabSize: number) → number
+
Find the column position at a given string index using a given tabsize.
+
+
+ +
+

Addons

+ +

The addon directory in the distribution contains a + number of reusable components that implement extra editor + functionality (on top of extension functions + like defineOption, defineExtension, + and registerHelper). In + brief, they are:

+ +
+
dialog/dialog.js
+
Provides a very simple way to query users for text input. + Adds the openDialog(template, callback, options) → + closeFunction method to CodeMirror instances, + which can be called with an HTML fragment or a detached DOM + node that provides the prompt (should include an input + or button tag), and a callback function that is called + when the user presses enter. It returns a function closeFunction + which, if called, will close the dialog immediately. + openDialog takes the following options: +
+
closeOnEnter: bool
+
If true, the dialog will be closed when the user presses + enter in the input. Defaults to true.
+
closeOnBlur: bool
+
Determines whether the dialog is closed when it loses focus. Defaults to true.
+
onKeyDown: fn(event: KeyboardEvent, value: string, close: fn()) → bool
+
An event handler that will be called whenever keydown fires in the + dialog's input. If your callback returns true, + the dialog will not do any further processing of the event.
+
onKeyUp: fn(event: KeyboardEvent, value: string, close: fn()) → bool
+
Same as onKeyDown but for the + keyup event.
+
onInput: fn(event: InputEvent, value: string, close: fn()) → bool
+
Same as onKeyDown but for the + input event.
+
onClose: fn(instance):
+
A callback that will be called after the dialog has been closed and + removed from the DOM. No return value.
+
+ +

Also adds an openNotification(template, options) → + closeFunction function that simply shows an HTML + fragment as a notification at the top of the editor. It takes a + single option: duration, the amount of time after + which the notification will be automatically closed. If + duration is zero, the dialog will not be closed automatically.

+ +

Depends on addon/dialog/dialog.css.

+ +
search/searchcursor.js
+
Adds the getSearchCursor(query, start, options) → + cursor method to CodeMirror instances, which can be used + to implement search/replace functionality. query + can be a regular expression or a string. start + provides the starting position of the search. It can be + a {line, ch} object, or can be left off to default + to the start of the document. options is an + optional object, which can contain the property `caseFold: + false` to disable case folding when mathing a string, or the + property `multiline: disable` to disable multi-line matching for + regular expressions (which may help performance). A search + cursor has the following methods: +
+
findNext() → boolean
+
findPrevious() → boolean
+
Search forward or backward from the current position. + The return value indicates whether a match was found. If + matching a regular expression, the return value will be the + array returned by the match method, in case you + want to extract matched groups.
+
from() → {line, ch}
+
to() → {line, ch}
+
These are only valid when the last call + to findNext or findPrevious did + not return false. They will return {line, ch} + objects pointing at the start and end of the match.
+
replace(text: string, ?origin: string)
+
Replaces the currently found match with the given text + and adjusts the cursor position to reflect the + replacement.
+
+ + +
Implements the search commands. CodeMirror has keys bound to + these by default, but will not do anything with them unless an + implementation is provided. Depends + on searchcursor.js, and will make use + of openDialog when + available to make prompting for search queries less ugly.
+ +
search/jump-to-line.js
+
Implements a jumpToLine command and binding Alt-G to it. + Accepts linenumber, +/-linenumber, line:char, + scroll% and :linenumber formats. + This will make use of openDialog + when available to make prompting for line number neater.
+ +
search/matchesonscrollbar.js
+
Adds a showMatchesOnScrollbar method to editor + instances, which should be given a query (string or regular + expression), optionally a case-fold flag (only applicable for + strings), and optionally a class name (defaults + to CodeMirror-search-match) as arguments. When + called, matches of the given query will be displayed on the + editor's vertical scrollbar. The method returns an object with + a clear method that can be called to remove the + matches. Depends on + the annotatescrollbar + addon, and + the matchesonscrollbar.css + file provides a default (transparent yellowish) definition of + the CSS class applied to the matches. Note that the matches are + only perfectly aligned if your scrollbar does not have buttons + at the top and bottom. You can use + the simplescrollbar + addon to make sure of this. If this addon is loaded, + the search addon will + automatically use it.
+ +
edit/matchbrackets.js
+
Defines an option matchBrackets which, when set + to true or an options object, causes matching brackets to be + highlighted whenever the cursor is next to them. It also adds a + method matchBrackets that forces this to happen + once, and a method findMatchingBracket that can be + used to run the bracket-finding algorithm that this uses + internally. It takes a start position and an optional config + object. By default, it will find the match to a matchable + character either before or after the cursor (preferring the one + before), but you can control its behavior with these options: +
+
afterCursor
+
Only use the character after the start position, never the one before it.
+
strict
+
Causes only matches where both brackets are at the same side of the start position to be considered.
+
maxScanLines
+
Stop after scanning this amount of lines without a successful match. Defaults to 1000.
+
maxScanLineLength
+
Ignore lines longer than this. Defaults to 10000.
+
+ +
edit/closebrackets.js
+
Defines an option autoCloseBrackets that will + auto-close brackets and quotes when typed. By default, it'll + auto-close ()[]{}''"", but you can pass it a string + similar to that (containing pairs of matching characters), or an + object with pairs and + optionally explode properties to customize + it. explode should be a similar string that gives + the pairs of characters that, when enter is pressed between + them, should have the second character also moved to its own + line. By default, if the active mode has + a closeBrackets property, that overrides the + configuration given in the option. But you can add + an override property with a truthy value to + override mode-specific + configuration. Demo + here.
+ +
edit/matchtags.js
+
Defines an option matchTags that, when enabled, + will cause the tags around the cursor to be highlighted (using + the CodeMirror-matchingtag class). Also + defines + a command toMatchingTag, + which you can bind a key to in order to jump to the tag matching + the one under the cursor. Depends on + the addon/fold/xml-fold.js + addon. Demo here.
+ +
edit/trailingspace.js
+
Adds an option showTrailingSpace which, when + enabled, adds the CSS class cm-trailingspace to + stretches of whitespace at the end of lines. + The demo has a nice + squiggly underline style for this class.
+ +
edit/closetag.js
+
Defines an autoCloseTags option that will + auto-close XML tags when '>' or '/' + is typed, and + a closeTag command that + closes the nearest open tag. Depends on + the fold/xml-fold.js addon. See + the demo.
+ +
edit/continuelist.js
+
Markdown specific. Defines + a "newlineAndIndentContinueMarkdownList" command + that can be bound to enter to automatically + insert the leading characters for continuing a list. See + the Markdown mode + demo.
+ +
comment/comment.js
+
Addon for commenting and uncommenting code. Adds four + methods to CodeMirror instances: +
+
toggleComment(from: {line, ch}, to: {line, ch}, ?options: object)
+
Tries to uncomment the current selection, and if that + fails, line-comments it.
+
lineComment(from: {line, ch}, to: {line, ch}, ?options: object)
+
Set the lines in the given range to be line comments. Will + fall back to blockComment when no line comment + style is defined for the mode.
+
blockComment(from: {line, ch}, to: {line, ch}, ?options: object)
+
Wrap the code in the given range in a block comment. Will + fall back to lineComment when no block comment + style is defined for the mode.
+
uncomment(from: {line, ch}, to: {line, ch}, ?options: object) → boolean
+
Try to uncomment the given range. + Returns true if a comment range was found and + removed, false otherwise.
+
+ The options object accepted by these methods may + have the following properties: +
+
blockCommentStart, blockCommentEnd, blockCommentLead, lineComment: string
+
Override the comment string + properties of the mode with custom comment strings.
+
padding: string
+
A string that will be inserted after opening and leading + markers, and before closing comment markers. Defaults to a + single space.
+
commentBlankLines: boolean
+
Whether, when adding line comments, to also comment lines + that contain only whitespace.
+
indent: boolean
+
When adding line comments and this is turned on, it will + align the comment block to the current indentation of the + first line of the block.
+
fullLines: boolean
+
When block commenting, this controls whether the whole + lines are indented, or only the precise range that is given. + Defaults to true.
+
+ The addon also defines + a toggleComment command, + which is a shorthand command for calling + toggleComment with no options.
+ +
fold/foldcode.js
+
Helps with code folding. Adds a foldCode method + to editor instances, which will try to do a code fold starting + at the given line, or unfold the fold that is already present. + The method takes as first argument the position that should be + folded (may be a line number or + a Pos), and as second optional + argument either a range-finder function, or an options object, + supporting the following properties: +
+
rangeFinder: fn(CodeMirror, Pos)
+
The function that is used to find + foldable ranges. If this is not directly passed, it will + default to CodeMirror.fold.auto, which + uses getHelpers with + a "fold" type to find folding functions + appropriate for the local mode. There are files in + the addon/fold/ + directory providing CodeMirror.fold.brace, which + finds blocks in brace languages (JavaScript, C, Java, + etc), CodeMirror.fold.indent, for languages where + indentation determines block structure (Python, Haskell), + and CodeMirror.fold.xml, for XML-style languages, + and CodeMirror.fold.comment, for folding comment + blocks.
+
widget: string|Element
+
The widget to show for folded ranges. Can be either a + string, in which case it'll become a span with + class CodeMirror-foldmarker, or a DOM node.
+
scanUp: boolean
+
When true (default is false), the addon will try to find + foldable ranges on the lines above the current one if there + isn't an eligible one on the given line.
+
minFoldSize: integer
+
The minimum amount of lines that a fold should span to be + accepted. Defaults to 0, which also allows single-line + folds.
+
+ See the demo for an + example.
+ +
fold/foldgutter.js
+
Provides an option foldGutter, which can be + used to create a gutter with markers indicating the blocks that + can be folded. Create a gutter using + the gutters option, + giving it the class CodeMirror-foldgutter or + something else if you configure the addon to use a different + class, and this addon will show markers next to folded and + foldable blocks, and handle clicks in this gutter. Note that + CSS styles should be applied to make the gutter, and the fold + markers within it, visible. A default set of CSS styles are + available in: + + addon/fold/foldgutter.css + . + The option + can be either set to true, or an object containing + the following optional option fields: +
+
gutter: string
+
The CSS class of the gutter. Defaults + to "CodeMirror-foldgutter". You will have to + style this yourself to give it a width (and possibly a + background). See the default gutter style rules above.
+
indicatorOpen: string | Element
+
A CSS class or DOM element to be used as the marker for + open, foldable blocks. Defaults + to "CodeMirror-foldgutter-open".
+
indicatorFolded: string | Element
+
A CSS class or DOM element to be used as the marker for + folded blocks. Defaults to "CodeMirror-foldgutter-folded".
+
rangeFinder: fn(CodeMirror, Pos)
+
The range-finder function to use when determining whether + something can be folded. When not + given, CodeMirror.fold.auto + will be used as default.
+
+ The foldOptions editor option can be set to an + object to provide an editor-wide default configuration. + Demo here.
+ +
runmode/runmode.js
+
Can be used to run a CodeMirror mode over text without + actually opening an editor instance. + See the demo for an example. + There are alternate versions of the file available for + running stand-alone + (without including all of CodeMirror) and + for running under + node.js (see bin/source-highlight for an example of using the latter).
+ +
runmode/colorize.js
+
Provides a convenient way to syntax-highlight code snippets + in a webpage. Depends on + the runmode addon (or + its standalone variant). Provides + a CodeMirror.colorize function that can be called + with an array (or other array-ish collection) of DOM nodes that + represent the code snippets. By default, it'll get + all pre tags. Will read the data-lang + attribute of these nodes to figure out their language, and + syntax-color their content using the relevant CodeMirror mode + (you'll have to load the scripts for the relevant modes + yourself). A second argument may be provided to give a default + mode, used when no language attribute is found for a node. Used + in this manual to highlight example code.
+ +
mode/overlay.js
+
Mode combinator that can be used to extend a mode with an + 'overlay' — a secondary mode is run over the stream, along with + the base mode, and can color specific pieces of text without + interfering with the base mode. + Defines CodeMirror.overlayMode, which is used to + create such a mode. See this + demo for a detailed example.
+ +
mode/multiplex.js
+
Mode combinator that can be used to easily 'multiplex' + between several modes. + Defines CodeMirror.multiplexingMode which, when + given as first argument a mode object, and as other arguments + any number of {open, close, mode [, delimStyle, innerStyle, parseDelimiters]} + objects, will return a mode object that starts parsing using the + mode passed as first argument, but will switch to another mode + as soon as it encounters a string that occurs in one of + the open fields of the passed objects. When in a + sub-mode, it will go back to the top mode again when + the close string is encountered. + Pass "\n" for open or close + if you want to switch on a blank line. +
  • When delimStyle is specified, it will be the token + style returned for the delimiter tokens (as well as + [delimStyle]-open on the opening token and + [delimStyle]-close on the closing token).
  • +
  • When innerStyle is specified, it will be the token + style added for each inner mode token.
  • +
  • When parseDelimiters is true, the content of + the delimiters will also be passed to the inner mode. + (And delimStyle is ignored.)
The outer + mode will not see the content between the delimiters. + See this demo for an + example.
+ +
hint/show-hint.js
+
Provides a framework for showing autocompletion hints. + Defines editor.showHint, which takes an optional + options object, and pops up a widget that allows the user to + select a completion. Finding hints is done with a hinting + functions (the hint option), which is a function + that take an editor instance and options object, and return + a {list, from, to} object, where list + is an array of strings or objects (the completions), + and from and to give the start and end + of the token that is being completed as {line, ch} + objects. An optional selectedHint property (an + integer) can be added to the completion object to control the + initially selected hint.
+
If no hinting function is given, the addon will + use CodeMirror.hint.auto, which + calls getHelpers with + the "hint" type to find applicable hinting + functions, and tries them one by one. If that fails, it looks + for a "hintWords" helper to fetch a list of + completable words for the mode, and + uses CodeMirror.hint.fromList to complete from + those.
+
When completions aren't simple strings, they should be + objects with the following properties: +
+
text: string
+
The completion text. This is the only required + property.
+
displayText: string
+
The text that should be displayed in the menu.
+
className: string
+
A CSS class name to apply to the completion's line in the + menu.
+
render: fn(Element, self, data)
+
A method used to create the DOM structure for showing the + completion by appending it to its first argument.
+
hint: fn(CodeMirror, self, data)
+
A method used to actually apply the completion, instead of + the default behavior.
+
from: {line, ch}
+
Optional from position that will be used by pick() instead + of the global one passed with the full list of completions.
+
to: {line, ch}
+
Optional to position that will be used by pick() instead + of the global one passed with the full list of completions.
+
+ +
The plugin understands the following options, which may be + either passed directly in the argument to showHint, + or provided by setting an hintOptions editor + option to an object (the former takes precedence). The options + object will also be passed along to the hinting function, which + may understand additional options. +
+
hint: function
+
A hinting function, as specified above. It is possible to + set the async property on a hinting function to + true, in which case it will be called with + arguments (cm, callback, ?options), and the + completion interface will only be popped up when the hinting + function calls the callback, passing it the object holding the + completions. + The hinting function can also return a promise, and the completion + interface will only be popped when the promise resolves. + By default, hinting only works when there is no + selection. You can give a hinting function + a supportsSelection property with a truthy value + to indicate that it supports selections.
+
completeSingle: boolean
+
Determines whether, when only a single completion is + available, it is completed without showing the dialog. + Defaults to true.
+
alignWithWord: boolean
+
Whether the pop-up should be horizontally aligned with the + start of the word (true, default), or with the cursor (false).
+
closeOnUnfocus: boolean
+
When enabled (which is the default), the pop-up will close + when the editor is unfocused.
+
customKeys: keymap
+
Allows you to provide a custom key map of keys to be active + when the pop-up is active. The handlers will be called with an + extra argument, a handle to the completion menu, which + has moveFocus(n), setFocus(n), pick(), + and close() methods (see the source for details), + that can be used to change the focused element, pick the + current element or close the menu. Additionally menuSize() + can give you access to the size of the current dropdown menu, + length give you the number of available completions, and + data give you full access to the completion returned by the + hinting function.
+
extraKeys: keymap
+
Like customKeys above, but the bindings will + be added to the set of default bindings, instead of replacing + them.
+
+ The following events will be fired on the completions object + during completion: +
+
"shown" ()
+
Fired when the pop-up is shown.
+
"select" (completion, Element)
+
Fired when a completion is selected. Passed the completion + value (string or object) and the DOM node that represents it + in the menu.
+
"pick" (completion)
+
Fired when a completion is picked. Passed the completion value + (string or object).
+
"close" ()
+
Fired when the completion is finished.
+
+ This addon depends on styles + from addon/hint/show-hint.css. Check + out the demo for an + example.
+ +
hint/javascript-hint.js
+
Defines a simple hinting function for JavaScript + (CodeMirror.hint.javascript) and CoffeeScript + (CodeMirror.hint.coffeescript) code. This will + simply use the JavaScript environment that the editor runs in as + a source of information about objects and their properties.
+ +
hint/xml-hint.js
+
Defines CodeMirror.hint.xml, which produces + hints for XML tagnames, attribute names, and attribute values, + guided by a schemaInfo option (a property of the + second argument passed to the hinting function, or the third + argument passed to CodeMirror.showHint).
The + schema info should be an object mapping tag names to information + about these tags, with optionally a "!top" property + containing a list of the names of valid top-level tags. The + values of the properties should be objects with optional + properties children (an array of valid child + element names, omit to simply allow all tags to appear) + and attrs (an object mapping attribute names + to null for free-form attributes, and an array of + valid values for restricted + attributes). Demo + here.
+ +
hint/html-hint.js
+
Provides schema info to + the xml-hint addon for HTML + documents. Defines a schema + object CodeMirror.htmlSchema that you can pass to + as a schemaInfo option, and + a CodeMirror.hint.html hinting function that + automatically calls CodeMirror.hint.xml with this + schema data. See + the demo.
+ +
hint/css-hint.js
+
A hinting function for CSS, SCSS, or LESS code. + Defines CodeMirror.hint.css.
+ +
hint/anyword-hint.js
+
A very simple hinting function + (CodeMirror.hint.anyword) that simply looks for + words in the nearby code and completes to those. Takes two + optional options, word, a regular expression that + matches words (sequences of one or more character), + and range, which defines how many lines the addon + should scan when completing (defaults to 500).
+ +
hint/sql-hint.js
+
A simple SQL hinter. Defines CodeMirror.hint.sql. + Takes two optional options, tables, a object with + table names as keys and array of respective column names as values, + and defaultTable, a string corresponding to a + table name in tables for autocompletion.
+ +
search/match-highlighter.js
+
Adds a highlightSelectionMatches option that + can be enabled to highlight all instances of a currently + selected word. Can be set either to true or to an object + containing the following options: minChars, for the + minimum amount of selected characters that triggers a highlight + (default 2), style, for the style to be used to + highlight the matches (default "matchhighlight", + which will correspond to CSS + class cm-matchhighlight), trim, which + controls whether whitespace is trimmed from the selection, + and showToken which can be set to true + or to a regexp matching the characters that make up a word. When + enabled, it causes the current word to be highlighted when + nothing is selected (defaults to off). + Demo here.
+ +
lint/lint.js
+
Defines an interface component for showing linting warnings, + with pluggable warning sources + (see html-lint.js, + json-lint.js, + javascript-lint.js, + coffeescript-lint.js, + and css-lint.js + in the same directory). Defines a lint option that + can be set to an annotation source (for + example CodeMirror.lint.javascript), to an options + object (in which case the getAnnotations field is + used as annotation source), or simply to true. When + no annotation source is + specified, getHelper with + type "lint" is used to find an annotation function. + An annotation source function should, when given a document + string, an options object, and an editor instance, return an + array of {message, severity, from, to} objects + representing problems. When the function has + an async property with a truthy value, it will be + called with an additional second argument, which is a callback + to pass the array to. + The linting function can also return a promise, in that case the linter + will only be executed when the promise resolves. + By default, the linter will run (debounced) whenever the document is changed. + You can pass a lintOnChange: false option to disable that. + Depends on addon/lint/lint.css. A demo can be + found here.
+ +
selection/mark-selection.js
+
Causes the selected text to be marked with the CSS class + CodeMirror-selectedtext when the styleSelectedText option + is enabled. Useful to change the colour of the selection (in addition to the background), + like in this demo.
+ +
selection/active-line.js
+
Defines a styleActiveLine option that, when + enabled, gives the wrapper of the line that contains the cursor + the class CodeMirror-activeline, adds a background + with the class CodeMirror-activeline-background, + and adds the class CodeMirror-activeline-gutter to + the line's gutter space is enabled. The option's value may be a + boolean or an object specifying the following options: +
+
nonEmpty: bool
+
Controls whether single-line selections, or just cursor + selections, are styled. Defaults to false (only cursor + selections).
+
+ See the demo.
+ +
selection/selection-pointer.js
+
Defines a selectionPointer option which you can + use to control the mouse cursor appearance when hovering over + the selection. It can be set to a string, + like "pointer", or to true, in which case + the "default" (arrow) cursor will be used. You can + see a demo here.
+ +
mode/loadmode.js
+
Defines a CodeMirror.requireMode(modename, + callback) function that will try to load a given mode and + call the callback when it succeeded. You'll have to + set CodeMirror.modeURL to a string that mode paths + can be constructed from, for + example "mode/%N/%N.js"—the %N's will + be replaced with the mode name. Also + defines CodeMirror.autoLoadMode(instance, mode), + which will ensure the given mode is loaded and cause the given + editor instance to refresh its mode when the loading + succeeded. See the demo.
+ +
mode/meta.js
+
Provides meta-information about all the modes in the + distribution in a single file. + Defines CodeMirror.modeInfo, an array of objects + with {name, mime, mode} properties, + where name is the human-readable + name, mime the MIME type, and mode the + name of the mode file that defines this MIME. There are optional + properties mimes, which holds an array of MIME + types for modes with multiple MIMEs associated, + and ext, which holds an array of file extensions + associated with this mode. Four convenience + functions, CodeMirror.findModeByMIME, + CodeMirror.findModeByExtension, + CodeMirror.findModeByFileName + and CodeMirror.findModeByName are provided, which + return such an object given a MIME, extension, file name or mode name + string. Note that, for historical reasons, this file resides in the + top-level mode directory, not + under addon. Demo.
+ +
comment/continuecomment.js
+
Adds a continueComments option, which sets whether the + editor will make the next line continue a comment when you press Enter + inside a comment block. Can be set to a boolean to enable/disable this + functionality. Set to a string, it will continue comments using a custom + shortcut. Set to an object, it will use the key property for + a custom shortcut and the boolean continueLineComment + property to determine whether single-line comments should be continued + (defaulting to true).
+ +
display/placeholder.js
+
Adds a placeholder option that can be used to + make content appear in the editor when it is empty and not + focused. It can hold either a string or a DOM node. Also gives + the editor a CodeMirror-empty CSS class whenever it + doesn't contain any text. + See the demo.
+ +
display/fullscreen.js
+
Defines an option fullScreen that, when set + to true, will make the editor full-screen (as in, + taking up the whole browser window). Depends + on fullscreen.css. Demo + here.
+ +
display/autorefresh.js
+
This addon can be useful when initializing an editor in a + hidden DOM node, in cases where it is difficult to + call refresh when the editor + becomes visible. It defines an option autoRefresh + which you can set to true to ensure that, if the editor wasn't + visible on initialization, it will be refreshed the first time + it becomes visible. This is done by polling every 250 + milliseconds (you can pass a value like {delay: + 500} as the option value to configure this). Note that + this addon will only refresh the editor once when it + first becomes visible, and won't take care of further restyling + and resizing.
+ +
scroll/simplescrollbars.js
+
Defines two additional scrollbar + models, "simple" and "overlay" + (see demo) that can + be selected with + the scrollbarStyle + option. Depends + on simplescrollbars.css, + which can be further overridden to style your own + scrollbars.
+ +
scroll/annotatescrollbar.js
+
Provides functionality for showing markers on the scrollbar + to call out certain parts of the document. Adds a + method annotateScrollbar to editor instances that + can be called, with a CSS class name as argument, to create a + set of annotations. The method returns an object + whose update method can be called with a sorted array + of {from: Pos, to: Pos} objects marking the ranges + to be highlighted. To detach the annotations, call the + object's clear method.
+ +
display/rulers.js
+
Adds a rulers option, which can be used to show + one or more vertical rulers in the editor. The option, if + defined, should be given an array of {column [, className, + color, lineStyle, width]} objects or numbers (which + indicate a column). The ruler will be displayed at the column + indicated by the number or the column property. + The className property can be used to assign a + custom style to a ruler. Demo + here.
+ +
display/panel.js
+
Defines an addPanel method for CodeMirror + instances, which places a DOM node above or below an editor, and + shrinks the editor to make room for the node. The method takes + as first argument as DOM node, and as second an optional options + object. The Panel object returned by this method + has a clear method that is used to remove the + panel, and a changed method that can be used to + notify the addon when the size of the panel's DOM node has + changed.
+ The method accepts the following options: +
+
position: string
+
Controls the position of the newly added panel. The + following values are recognized: +
+
top (default)
+
Adds the panel at the very top.
+
after-top
+
Adds the panel at the bottom of the top panels.
+
bottom
+
Adds the panel at the very bottom.
+
before-bottom
+
Adds the panel at the top of the bottom panels.
+
+
+
before: Panel
+
The new panel will be added before the given panel.
+
after: Panel
+
The new panel will be added after the given panel.
+
replace: Panel
+
The new panel will replace the given panel.
+
stable: bool
+
Whether to scroll the editor to keep the text's vertical + position stable, when adding a panel above it. Defaults to false.
+
+ When using the after, before or replace options, + if the panel doesn't exists or has been removed, + the value of the position option will be used as a fallback. +
+ A demo of the addon is available here. +
+ +
wrap/hardwrap.js
+
Addon to perform hard line wrapping/breaking for paragraphs + of text. Adds these methods to editor instances: +
+
wrapParagraph(?pos: {line, ch}, ?options: object)
+
Wraps the paragraph at the given position. + If pos is not given, it defaults to the cursor + position.
+
wrapRange(from: {line, ch}, to: {line, ch}, ?options: object)
+
Wraps the given range as one big paragraph.
+
wrapParagraphsInRange(from: {line, ch}, to: {line, ch}, ?options: object)
+
Wraps the paragraphs in (and overlapping with) the + given range individually.
+
+ The following options are recognized: +
+
paragraphStart, paragraphEnd: RegExp
+
Blank lines are always considered paragraph boundaries. + These options can be used to specify a pattern that causes + lines to be considered the start or end of a paragraph.
+
column: number
+
The column to wrap at. Defaults to 80.
+
wrapOn: RegExp
+
A regular expression that matches only those + two-character strings that allow wrapping. By default, the + addon wraps on whitespace and after dash characters.
+
killTrailingSpace: boolean
+
Whether trailing space caused by wrapping should be + preserved, or deleted. Defaults to true.
+
+ A demo of the addon is available here. +
+ +
merge/merge.js
+
Implements an interface for merging changes, using either a + 2-way or a 3-way view. The CodeMirror.MergeView + constructor takes arguments similar to + the CodeMirror + constructor, first a node to append the interface to, and then + an options object. Options are passed through to the editors + inside the view. These extra options are recognized: +
+
origLeft and origRight: string
+
If given these provide original versions of the + document, which will be shown to the left and right of the + editor in non-editable CodeMirror instances. The merge + interface will highlight changes between the editable + document and the original(s). To create a 2-way (as opposed + to 3-way) merge view, provide only one of them.
+
revertButtons: boolean
+
Determines whether buttons that allow the user to revert + changes are shown. Defaults to true.
+
revertChunk: fn(mv: MergeView, from: CodeMirror, fromStart: Pos, fromEnd: Pos, to: CodeMirror, toStart: Pos, toEnd: Pos)
+
Can be used to define custom behavior when the user + reverts a changed chunk.
+
connect: string
+
Sets the style used to connect changed chunks of code. + By default, connectors are drawn. When this is set + to "align", the smaller chunk is padded to + align with the bigger chunk instead.
+
collapseIdentical: boolean|number
+
When true (default is false), stretches of unchanged + text will be collapsed. When a number is given, this + indicates the amount of lines to leave visible around such + stretches (which defaults to 2).
+
allowEditingOriginals: boolean
+
Determines whether the original editor allows editing. + Defaults to false.
+
showDifferences: boolean
+
When true (the default), changed pieces of text are + highlighted.
+
chunkClassLocation: string|Array
+
By default the chunk highlights are added + using addLineClass + with "background". Override this to customize it to be any + valid `where` parameter or an Array of valid `where` + parameters.
+
+ The addon also defines commands "goNextDiff" + and "goPrevDiff" to quickly jump to the next + changed chunk. Demo + here.
+ +
tern/tern.js
+
Provides integration with + the Tern JavaScript analysis + engine, for completion, definition finding, and minor + refactoring help. See the demo + for a very simple integration. For more involved scenarios, see + the comments at the top of + the addon and the + implementation of the + (multi-file) demonstration + on the Tern website.
+
+
+ +
+

Writing CodeMirror Modes

+ +

Modes typically consist of a single JavaScript file. This file + defines, in the simplest case, a lexer (tokenizer) for your + language—a function that takes a character stream as input, + advances it past a token, and returns a style for that token. More + advanced modes can also handle indentation for the language.

+ +

This section describes the low-level mode interface. Many modes + are written directly against this, since it offers a lot of + control, but for a quick mode definition, you might want to use + the simple mode addon.

+ +

The mode script should + call CodeMirror.defineMode to + register itself with CodeMirror. This function takes two + arguments. The first should be the name of the mode, for which you + should use a lowercase string, preferably one that is also the + name of the files that define the mode (i.e. "xml" is + defined in xml.js). The second argument should be a + function that, given a CodeMirror configuration object (the thing + passed to the CodeMirror function) and an optional + mode configuration object (as in + the mode option), returns + a mode object.

+ +

Typically, you should use this second argument + to defineMode as your module scope function (modes + should not leak anything into the global scope!), i.e. write your + whole mode inside this function.

+ +

The main responsibility of a mode script is parsing + the content of the editor. Depending on the language and the + amount of functionality desired, this can be done in really easy + or extremely complicated ways. Some parsers can be stateless, + meaning that they look at one element (token) of the code + at a time, with no memory of what came before. Most, however, will + need to remember something. This is done by using a state + object, which is an object that is always passed when + reading a token, and which can be mutated by the tokenizer.

+ +

Modes that use a state must define + a startState method on their mode + object. This is a function of no arguments that produces a state + object to be used at the start of a document.

+ +

The most important part of a mode object is + its token(stream, state) method. All + modes must define this method. It should read one token from the + stream it is given as an argument, optionally update its state, + and return a style string, or null for tokens that do + not have to be styled. For your styles, you are encouraged to use + the 'standard' names defined in the themes (without + the cm- prefix). If that fails, it is also possible + to come up with your own and write your own CSS theme file.

+ +

A typical token string would + be "variable" or "comment". Multiple + styles can be returned (separated by spaces), for + example "string error" for a thing that looks like a + string but is invalid somehow (say, missing its closing quote). + When a style is prefixed by "line-" + or "line-background-", the style will be applied to + the whole line, analogous to what + the addLineClass method + does—styling the "text" in the simple case, and + the "background" element + when "line-background-" is prefixed.

+ +

The stream object that's passed + to token encapsulates a line of code (tokens may + never span lines) and our current position in that line. It has + the following API:

+ +
+
eol() → boolean
+
Returns true only if the stream is at the end of the + line.
+
sol() → boolean
+
Returns true only if the stream is at the start of the + line.
+ +
peek() → string
+
Returns the next character in the stream without advancing + it. Will return a null at the end of the + line.
+
next() → string
+
Returns the next character in the stream and advances it. + Also returns null when no more characters are + available.
+ +
eat(match: string|regexp|function(char: string) → boolean) → string
+
match can be a character, a regular expression, + or a function that takes a character and returns a boolean. If + the next character in the stream 'matches' the given argument, + it is consumed and returned. Otherwise, undefined + is returned.
+
eatWhile(match: string|regexp|function(char: string) → boolean) → boolean
+
Repeatedly calls eat with the given argument, + until it fails. Returns true if any characters were eaten.
+
eatSpace() → boolean
+
Shortcut for eatWhile when matching + white-space.
+
skipToEnd()
+
Moves the position to the end of the line.
+
skipTo(str: string) → boolean
+
Skips to the start of the next occurrence of the given string, if + found on the current line (doesn't advance the stream if the + string does not occur on the line). Returns true if the + string was found.
+
match(pattern: string, ?consume: boolean, ?caseFold: boolean) → boolean
+
match(pattern: regexp, ?consume: boolean) → array<string>
+
Act like a + multi-character eat—if consume is true + or not given—or a look-ahead that doesn't update the stream + position—if it is false. pattern can be either a + string or a regular expression starting with ^. + When it is a string, caseFold can be set to true to + make the match case-insensitive. When successfully matching a + regular expression, the returned value will be the array + returned by match, in case you need to extract + matched groups.
+ +
backUp(n: integer)
+
Backs up the stream n characters. Backing it up + further than the start of the current token will cause things to + break, so be careful.
+
column() → integer
+
Returns the column (taking into account tabs) at which the + current token starts.
+
indentation() → integer
+
Tells you how far the current line has been indented, in + spaces. Corrects for tab characters.
+ +
current() → string
+
Get the string between the start of the current token and + the current stream position.
+ +
lookAhead(n: number) → ?string
+
Get the line n (>0) lines after the current + one, in order to scan ahead across line boundaries. Note that + you want to do this carefully, since looking far ahead will make + mode state caching much less effective.
+
+ +

By default, blank lines are simply skipped when + tokenizing a document. For languages that have significant blank + lines, you can define + a blankLine(state) method on your + mode that will get called whenever a blank line is passed over, so + that it can update the parser state.

+ +

Because state object are mutated, and CodeMirror + needs to keep valid versions of a state around so that it can + restart a parse at any line, copies must be made of state objects. + The default algorithm used is that a new state object is created, + which gets all the properties of the old object. Any properties + which hold arrays get a copy of these arrays (since arrays tend to + be used as mutable stacks). When this is not correct, for example + because a mode mutates non-array properties of its state object, a + mode object should define + a copyState method, which is given a + state and should return a safe copy of that state.

+ +

If you want your mode to provide smart indentation + (through the indentLine + method and the indentAuto + and newlineAndIndent commands, to which keys can be + bound), you must define + an indent(state, textAfter) method + on your mode object.

+ +

The indentation method should inspect the given state object, + and optionally the textAfter string, which contains + the text on the line that is being indented, and return an + integer, the amount of spaces to indent. It should usually take + the indentUnit + option into account. An indentation method may + return CodeMirror.Pass to indicate that it + could not come up with a precise indentation.

+ +

To work well with + the commenting addon, a mode may + define lineComment (string that + starts a line + comment), blockCommentStart, blockCommentEnd + (strings that start and end block comments), + and blockCommentLead (a string to put at the start of + continued lines in a block comment). All of these are + optional.

+ +

Finally, a mode may define either + an electricChars or an electricInput + property, which are used to automatically reindent the line when + certain patterns are typed and + the electricChars + option is enabled. electricChars may be a string, and + will trigger a reindent whenever one of the characters in that + string are typed. Often, it is more appropriate to + use electricInput, which should hold a regular + expression, and will trigger indentation when the part of the + line before the cursor matches the expression. It should + usually end with a $ character, so that it only + matches when the indentation-changing pattern was just typed, not when something was + typed after the pattern.

+ +

So, to summarize, a mode must provide + a token method, and it may + provide startState, copyState, + and indent methods. For an example of a trivial mode, + see the diff mode, for a more + involved example, see the C-like + mode.

+ +

Sometimes, it is useful for modes to nest—to have one + mode delegate work to another mode. An example of this kind of + mode is the mixed-mode HTML + mode. To implement such nesting, it is usually necessary to + create mode objects and copy states yourself. To create a mode + object, there are CodeMirror.getMode(options, + parserConfig), where the first argument is a configuration + object as passed to the mode constructor function, and the second + argument is a mode specification as in + the mode option. To copy a + state object, call CodeMirror.copyState(mode, state), + where mode is the mode that created the given + state.

+ +

In a nested mode, it is recommended to add an + extra method, innerMode which, given + a state object, returns a {state, mode} object with + the inner mode and its state for the current position. These are + used by utility scripts such as the tag + closer to get context information. Use + the CodeMirror.innerMode helper function to, starting + from a mode and a state, recursively walk down to the innermost + mode and state.

+ +

To make indentation work properly in a nested parser, it is + advisable to give the startState method of modes that + are intended to be nested an optional argument that provides the + base indentation for the block of code. The JavaScript and CSS + parser do this, for example, to allow JavaScript and CSS code + inside the mixed-mode HTML mode to be properly indented.

+ +

It is possible, and encouraged, to associate + your mode, or a certain configuration of your mode, with + a MIME type. For + example, the JavaScript mode associates itself + with text/javascript, and its JSON variant + with application/json. To do this, + call CodeMirror.defineMIME(mime, + modeSpec), where modeSpec can be a string or + object specifying a mode, as in + the mode option.

+ +

If a mode specification wants to add some properties to the + resulting mode object, typically for use + with getHelpers, it may + contain a modeProps property, which holds an object. + This object's properties will be copied to the actual mode + object.

+ +

Sometimes, it is useful to add or override mode + object properties from external code. + The CodeMirror.extendMode function + can be used to add properties to mode objects produced for a + specific mode. Its first argument is the name of the mode, its + second an object that specifies the properties that should be + added. This is mostly useful to add utilities that can later be + looked up through getMode.

+
+ +
+

VIM Mode API

+ +

CodeMirror has a robust VIM mode that attempts to faithfully + emulate VIM's most useful features. It can be enabled by + including keymap/vim.js + and setting the keyMap option to + "vim".

+ +

Configuration

+ +

VIM mode accepts configuration options for customizing + behavior at run time. These methods can be called at any time + and will affect all existing CodeMirror instances unless + specified otherwise. The methods are exposed on the + CodeMirror.Vim object.

+ +
+
setOption(name: string, value: any, ?cm: CodeMirror, ?cfg: object)
+
Sets the value of a VIM option. name should + be the name of an option. If cfg.scope is not set + and cm is provided, then sets the global and + instance values of the option. Otherwise, sets either the + global or instance value of the option depending on whether + cfg.scope is global or + local.
+
getOption(name: string, ?cm: CodeMirror: ?cfg: object)
+
Gets the current value of a VIM option. If + cfg.scope is not set and cm is + provided, then gets the instance value of the option, falling + back to the global value if not set. If cfg.scope is provided, then gets the global or + local value without checking the other.
+ +
map(lhs: string, rhs: string, ?context: string)
+
Maps a key sequence to another key sequence. Implements + VIM's :map command. To map ; to : in VIM would be + :map ; :. That would translate to + CodeMirror.Vim.map(';', ':');. + The context can be normal, + visual, or insert, which correspond + to :nmap, :vmap, and + :imap + respectively.
+ +
mapCommand(keys: string, type: string, name: string, ?args: object, ?extra: object)
+
Maps a key sequence to a motion, + operator, or action type command. + The args object is passed through to the command when it is + invoked by the provided key sequence. + extras.context can be normal, + visual, or insert, to map the key + sequence only in the corresponding mode. + extras.isEdit is applicable only to actions, + determining whether it is recorded for replay for the + . single-repeat command. +
+ +

Extending VIM

+ +

CodeMirror's VIM mode implements a large subset of VIM's core + editing functionality. But since there's always more to be + desired, there is a set of APIs for extending VIM's + functionality. As with the configuration API, the methods are + exposed on CodeMirror.Vim and may + be called at any time.

+ +
+
defineOption(name: string, default: any, type: string, ?aliases: array<string>, ?callback: function (?value: any, ?cm: CodeMirror) → ?any)
+
Defines a VIM style option and makes it available to the + :set command. Type can be boolean or + string, used for validation and by + :set to determine which syntax to accept. If a + callback is passed in, VIM does not store the value of the + option itself, but instead uses the callback as a setter/getter. If the + first argument to the callback is undefined, then the + callback should return the value of the option. Otherwise, it should set + instead. Since VIM options have global and instance values, whether a + CodeMirror instance is passed in denotes whether the global + or local value should be used. Consequently, it's possible for the + callback to be called twice for a single setOption or + getOption call. Note that right now, VIM does not support + defining buffer-local options that do not have global values. If an + option should not have a global value, either always ignore the + cm parameter in the callback, or always pass in a + cfg.scope to setOption and + getOption.
+ +
defineMotion(name: string, fn: function(cm: CodeMirror, head: {line, ch}, ?motionArgs: object}) → {line, ch})
+
Defines a motion command for VIM. The motion should return + the desired result position of the cursor. head + is the current position of the cursor. It can differ from + cm.getCursor('head') if VIM is in visual mode. + motionArgs is the object passed into + mapCommand().
+ +
defineOperator(name: string, fn: function(cm: CodeMirror, ?operatorArgs: object, ranges: array<{anchor, head}>) → ?{line, ch})
+
Defines an operator command, similar to + defineMotion. ranges is the range + of text the operator should operate on. If the cursor should + be set to a certain position after the operation finishes, it + can return a cursor object.
+ +
defineAction(name: string, fn: function(cm: CodeMirror, ?actionArgs: object))
+
Defines an action command, similar to + defineMotion. Action commands + can have arbitrary behavior, making them more flexible than + motions and operators, at the loss of orthogonality.
+ +
defineEx(name: string, ?prefix: string, fn: function(cm: CodeMirror, ?params: object))
+
Defines an Ex command, and maps it to :name. + If a prefix is provided, it, and any prefixed substring of the + name beginning with the prefix can + be used to invoke the command. If the prefix is + falsy, then name is used as the prefix. + params.argString contains the part of the prompted + string after the command name. params.args is + params.argString split by whitespace. If the + command was prefixed with a + line range, + params.line and params.lineEnd will + be set. +
+ +
+ +
+ + diff --git a/global/codemirror/doc/realworld.html b/global/codemirror/doc/realworld.html new file mode 100644 index 00000000..f0a75abf --- /dev/null +++ b/global/codemirror/doc/realworld.html @@ -0,0 +1,196 @@ + + +CodeMirror: Real-world Uses + + + + + +
+ +

CodeMirror real-world uses

+ +

Create a pull + request if you'd like your project to be added to this list.

+ + + +
+ diff --git a/global/codemirror/doc/releases.html b/global/codemirror/doc/releases.html new file mode 100644 index 00000000..b97d1630 --- /dev/null +++ b/global/codemirror/doc/releases.html @@ -0,0 +1,1534 @@ + + +CodeMirror: Release History + + + + + + +
+ +

Release notes and version history

+ +
+ +

Version 5.x

+ +

20-09-2017: Version 5.30.0:

+ +
    +
  • Fixed a number of issues with drawing right-to-left selections and mouse selection in bidirectional text.
  • +
  • search addon: Fix crash when restarting search after doing empty search.
  • +
  • mark-selection addon: Fix off-by-one bug.
  • +
  • tern addon: Fix bad request made when editing at the bottom of a large document.
  • +
  • javascript mode: Improve parsing in a number of corner cases.
  • +
  • markdown mode: Fix crash when a sub-mode doesn't support indentation, allow uppercase X in task lists.
  • +
  • gfm mode: Don't highlight SHA1 'hashes' without numbers to avoid false positives.
  • +
  • soy mode: Support injected data and @param in comments.
  • +
  • simple mode addon: Allow groups in regexps when token isn't an array.
  • +
+ +

24-08-2017: Version 5.29.0:

+ +
    +
  • Fix crash in contentEditable input style when editing near a bookmark.
  • +
  • Make sure change origins are preserved when splitting changes on read-only marks.
  • +
  • javascript mode: More support for TypeScript syntax.
  • +
  • d mode: Support nested comments.
  • +
  • python mode: Improve tokenizing of operators.
  • +
  • markdown mode: Further improve CommonMark conformance.
  • +
  • css mode: Don't run comment tokens through the mode's state machine.
  • +
  • shell mode: Allow strings to span lines.
  • +
  • search addon: Fix crash in persistent search when extraKeys is null.
  • +
+ +

21-07-2017: Version 5.28.0:

+ +
    +
  • Fix copying of, or replacing editor content with, a single dash character when copying a big selection in some corner cases.
  • +
  • Make "goLineLeft"/"goLineRight" behave better on wrapped lines.
  • +
  • sql mode: Fix tokenizing of multi-dot operator and allow digits in subfield names.
  • +
  • searchcursor addon: Fix infinite loop on some composed character inputs.
  • +
  • markdown mode: Make list parsing more CommonMark-compliant.
  • +
  • gfm mode: Highlight colon syntax for emoji.
  • +
+ +

29-06-2017: Version 5.27.4:

+ +
    +
  • Fix crash when using mode lookahead.
  • +
  • markdown mode: Don't block inner mode's indentation support.
  • +
+ +

22-06-2017: Version 5.27.2:

+ + + +

22-06-2017: Version 5.27.0:

+ +
    +
  • Fix infinite loop in forced display update.
  • +
  • Properly disable the hidden textarea when readOnly is "nocursor".
  • +
  • Calling the Doc constructor without new works again.
  • +
  • sql mode: Handle nested comments.
  • +
  • javascript mode: Improve support for TypeScript syntax.
  • +
  • markdown mode: Fix bug where markup was ignored on indented paragraph lines.
  • +
  • vim bindings: Referencing invalid registers no longer causes an uncaught exception.
  • +
  • rust mode: Add the correct MIME type.
  • +
  • matchbrackets addon: Document options.
  • +
  • Mouse button clicks can now be bound in keymaps by using names like "LeftClick" or "Ctrl-Alt-MiddleTripleClick". When bound to a function, that function will be passed the position of the click as second argument.
  • +
  • The behavior of mouse selection and dragging can now be customized with the configureMouse option.
  • +
  • Modes can now look ahead across line boundaries with the StringStream.lookahead method.
  • +
  • Introduces a "type" token type, makes modes that recognize types output it, and add styling for it to the themes.
  • +
  • New pasteLinesPerSelection option to control the behavior of pasting multiple lines into multiple selections.
  • +
  • searchcursor addon: Support multi-line regular expression matches, and normalize strings when matching.
  • +
+ +

22-05-2017: Version 5.26.0:

+ +
    +
  • In textarea-mode, don't reset the input field during composition.
  • +
  • More careful restoration of selections in widgets, during editor redraw.
  • +
  • vim bindings: Parse line offsets in line or range specs.
  • +
  • javascript mode: More TypeScript parsing fixes.
  • +
  • julia mode: Fix issue where the mode gets stuck.
  • +
  • markdown mode: Understand cross-line links, parse all bracketed things as links.
  • +
  • soy mode: Support single-quoted strings.
  • +
  • go mode: Don't try to indent inside strings or comments.
  • +
+ +

20-04-2017: Version 5.25.2:

+ +
    +
  • Better handling of selections that cover the whole viewport in contentEditable-mode.
  • +
  • No longer accidentally scroll the editor into view when calling setValue.
  • +
  • Work around Chrome Android bug when converting screen coordinates to editor positions.
  • +
  • Make sure long-clicking a selection sets a cursor and doesn't show the editor losing focus.
  • +
  • Fix issue where pointer events were incorrectly disabled on Chrome's overlay scrollbars.
  • +
  • javascript mode: Recognize annotations and TypeScript-style type parameters.
  • +
  • shell mode: Handle nested braces.
  • +
  • markdown mode: Make parsing of strong/em delimiters CommonMark-compliant.
  • +
+ +

20-03-2017: Version 5.25.0:

+ +
    +
  • In contentEditable-mode, properly locate changes that repeat a character when inserted with IME.
  • +
  • Fix handling of selections bigger than the viewport in contentEditable mode.
  • +
  • Improve handling of changes that insert or delete lines in contentEditable mode.
  • +
  • Count Unicode control characters 0x80 to 0x9F as special (non-printing) chars.
  • +
  • Fix handling of shadow DOM roots when finding the active element.
  • +
  • Add role=presentation to more DOM elements to improve screen reader support.
  • +
  • merge addon: Make aligning of unchanged chunks more robust.
  • +
  • comment addon: Fix comment-toggling on a block of text that starts and ends in a (differnet) block comment.
  • +
  • javascript mode: Improve support for TypeScript syntax.
  • +
  • r mode: Fix indentation after semicolon-less statements.
  • +
  • shell mode: Properly handle escaped parentheses in parenthesized expressions.
  • +
  • markdown mode: Fix a few bugs around leaving fenced code blocks.
  • +
  • soy mode: Improve indentation.
  • +
  • lint addon: Support asynchronous linters that return promises.
  • +
  • continuelist addon: Support continuing task lists.
  • +
  • vim bindings: Make Y behave like yy.
  • +
  • sql mode: Support sqlite dialect.
  • +
+ +

22-02-2017: Version 5.24.2:

+ +
    +
  • javascript mode: Support computed class method names.
  • +
  • merge addon: Improve aligning of unchanged code in the presence of marks and line widgets.
  • +
+ +

20-02-2017: Version 5.24.0:

+ +
    +
  • Positions now support a sticky property which determines whether they should be associated with the character before (value "before") or after (value "after") them.
  • +
  • vim bindings: Make it possible to remove built-in bindings through the API.
  • +
  • comment addon: Support a per-mode useInnerComments option to optionally suppress descending to the inner modes to get comment strings.
  • +
  • A cursor directly before a line-wrapping break is now drawn before or after the line break depending on which direction you arrived from.
  • +
  • Visual cursor motion in line-wrapped right-to-left text should be much more correct.
  • +
  • Fix bug in handling of read-only marked text.
  • +
  • shell mode: Properly tokenize nested parentheses.
  • +
  • python mode: Support underscores in number literals.
  • +
  • sass mode: Uses the full list of CSS properties and keywords from the CSS mode, rather than defining its own incomplete subset. Now depends on the css mode.
  • +
  • css mode: Expose lineComment property for LESS and SCSS dialects. Recognize vendor prefixes on pseudo-elements.
  • +
  • julia mode: Properly indent elseif lines.
  • +
  • markdown mode: Properly recognize the end of fenced code blocks when inside other markup.
  • +
  • scala mode: Improve handling of operators containing #, @, and : chars.
  • +
  • xml mode: Allow dashes in HTML tag names.
  • +
  • javascript mode: Improve parsing of async methods, TypeScript-style comma-separated superclass lists.
  • +
  • indent-fold addon: Ignore comment lines.
  • +
+ +

19-01-2017: Version 5.23.0:

+ +
    +
  • Presentation-related elements DOM elements are now marked as such to help screen readers.
  • +
  • markdown mode: Be more picky about what HTML tags look like to avoid false positives.
  • +
  • findModeByMIME now understands +json and +xml MIME suffixes.
  • +
  • closebrackets addon: Add support for an override option to ignore language-specific defaults.
  • +
  • panel addon: Add a stable option that auto-scrolls the content to keep it in the same place when inserting/removing a panel.
  • +
+ +

20-12-2016: Version 5.22.0:

+ +
    +
  • sublime bindings: Make selectBetweenBrackets work with multiple cursors.
  • +
  • javascript mode: Fix issues with parsing complex TypeScript types, imports, and exports.
  • +
  • A contentEditable editor instance with autofocus enabled no longer crashes during initializing.
  • +
  • emacs bindings: Export CodeMirror.emacs to allow other addons to hook into Emacs-style functionality.
  • +
  • active-line addon: Add nonEmpty option.
  • +
  • New event: optionChange.
  • +
+ +

21-11-2016: Version 5.21.0:

+ +
    +
  • Tapping/clicking the editor in contentEditable mode on Chrome now puts the cursor at the tapped position.
  • +
  • Fix various crashes and misbehaviors when reading composition events in contentEditable mode.
  • +
  • Catches and ignores an IE 'Unspecified Error' when creating an editor in an iframe before there is a <body>.
  • +
  • merge addon: Fix several issues in the chunk-aligning feature.
  • +
  • verilog mode: Rewritten to address various issues.
  • +
  • julia mode: Recognize Julia 0.5 syntax.
  • +
  • swift mode: Various fixes and adjustments to current syntax.
  • +
  • markdown mode: Allow lists without a blank line above them.
  • +
  • The setGutterMarker, clearGutter, and lineInfo methods are now available on Doc objects.
  • +
  • The heightAtLine method now takes an extra argument to allow finding the height at the top of the line's line widgets.
  • +
  • ruby mode: else and elsif are now immediately indented.
  • +
  • vim bindings: Bind Ctrl-T and Ctrl-D to in- and dedent in insert mode.
  • +
+ +

20-10-2016: Version 5.20.0:

+ +
    +
  • Make newlineAndIndent command work with multiple cursors on the same line.
  • +
  • Make sure keypress events for backspace are ignored.
  • +
  • Tokens styled with overlays no longer get a nonsense cm-cm-overlay class.
  • +
  • Line endings for pasted content are now normalized to the editor's preferred ending.
  • +
  • javascript mode: Improve support for class expressions. Support TypeScript optional class properties, the abstract keyword, and return type declarations for arrow functions.
  • +
  • css mode: Fix highlighting of mixed-case keywords.
  • +
  • closebrackets addon: Improve behavior when typing a quote before a string.
  • +
  • The core is now maintained as a number of small files, using ES6 syntax and modules, under the src/ directory. A git checkout no longer contains a working codemirror.js until you npm build (but when installing from NPM, it is included).
  • +
  • The refresh event is now documented and stable.
  • +
+ +

20-09-2016: Version 5.19.0:

+ +
    +
  • erlang mode: Fix mode crash when trying to read an empty context.
  • +
  • comment addon: Fix broken behavior when toggling comments inside a comment.
  • +
  • xml-fold addon: Fix a null-dereference bug.
  • +
  • InstallationPage up and page down now do something even in single-line documents.
  • +
  • Fix an issue where the cursor position could be off in really long (~8000 character) tokens.
  • +
  • javascript mode: Better indentation when semicolons are missing. Better support for TypeScript classes, optional parameters, and the type keyword.
  • +
  • The blur and focus events now pass the DOM event to their handlers.
  • +
+ +

23-08-2016: Version 5.18.2:

+ +
    +
  • vue mode: Fix outdated references to renamed Pug mode dependency.
  • +
+ +

22-08-2016: Version 5.18.0:

+ +
    +
  • Make sure gutter backgrounds stick to the rest of the gutter during horizontal scrolling.
  • +
  • The contenteditable inputStyle now properly supports pasting on pre-Edge IE versions.
  • +
  • javascript mode: Fix some small parsing bugs and improve TypeScript support.
  • +
  • matchbrackets addon: Fix bug where active highlighting was left in editor when the addon was disabled.
  • +
  • match-highlighter addon: Only start highlighting things when the editor gains focus.
  • +
  • javascript-hint addon: Also complete non-enumerable properties.
  • +
  • The addOverlay method now supports a priority option to control the order in which overlays are applied.
  • +
  • MIME types that end in +json now default to the JSON mode when the MIME itself is not defined.
  • +
  • The mode formerly known as Jade was renamed to Pug.
  • +
  • The Python mode now defaults to Python 3 (rather than 2) syntax.
  • +
+ +

19-07-2016: Version 5.17.0:

+ +
    +
  • Fix problem with wrapped trailing whitespace displaying incorrectly.
  • +
  • Prevent IME dialog from overlapping typed content in Chrome.
  • +
  • Improve measuring of characters near a line wrap.
  • +
  • javascript mode: Improve support for async, allow trailing commas in import lists.
  • +
  • vim bindings: Fix backspace in replace mode.
  • +
  • sublime bindings: Fix some key bindings on OS X to match Sublime Text.
  • +
  • markdown mode: Add more classes to image links in highlight-formatting mode.
  • +
+ +

20-06-2016: Version 5.16.0:

+ +
    +
  • Fix glitches when dragging content caused by the drop indicator receiving mouse events.
  • +
  • Make Control-drag work on Firefox.
  • +
  • Make clicking or selection-dragging at the end of a wrapped line select the right position.
  • +
  • show-hint addon: Prevent widget scrollbar from hiding part of the hint text.
  • +
  • rulers addon: Prevent rulers from forcing a horizontal editor scrollbar.
  • +
  • search addon: Automatically bind search-related keys in persistent dialog.
  • +
  • sublime keymap: Add a multi-cursor aware smart backspace binding.
  • +
+ +

20-05-2016: Version 5.15.2:

+ +
    +
  • Fix a critical document corruption bug that occurs when a document is gradually grown.
  • +
+ +

20-05-2016: Version 5.15.0:

+ +
    +
  • Fix bug that caused the selection to reset when focusing the editor in contentEditable input mode.
  • +
  • Fix issue where not all ASCII control characters were being replaced by placeholders.
  • +
  • Remove the assumption that all modes have a startState method from several wrapping modes.
  • +
  • Fix issue where the editor would complain about overlapping collapsed ranges when there weren't any.
  • +
  • Optimize document tree building when loading or pasting huge chunks of content.
  • +
  • Explicitly bind Ctrl-O on OS X to make that binding (“open line”) act as expected.
  • +
  • Pasting linewise-copied content when there is no selection now inserts the lines above the current line.
  • +
  • markdown mode: Fix several issues in matching link targets.
  • +
  • clike mode: Improve indentation of C++ template declarations.
  • +
  • javascript mode: Support async/await and improve support for TypeScript type syntax.
  • +
+ +

20-04-2016: Version 5.14.0:

+ + + +

21-03-2016: Version 5.13.2:

+ +
    +
  • Solves a problem where the gutter would sometimes not extend all the way to the end of the document.
  • +
+ +

21-03-2016: Version 5.13:

+ + + +

19-02-2016: Version 5.12:

+ +
    +
  • Vim bindings: Ctrl-Q is now an alias for Ctrl-V.
  • +
  • Vim bindings: The Vim API now exposes an unmap method to unmap bindings.
  • +
  • active-line addon: This addon can now style the active line's gutter.
  • +
  • FCL mode: Newly added.
  • +
  • SQL mode: Now has a Postgresql dialect.
  • +
  • Fix issue where trying to scroll to a horizontal position outside of the document's width could cause the gutter to be positioned incorrectly.
  • +
  • Use absolute, rather than fixed positioning in the context-menu intercept hack, to work around a problem when the editor is inside a transformed parent container.
  • +
  • Solve a problem where the horizontal scrollbar could hide text in Firefox.
  • +
  • Fix a bug that caused phantom scroll space under the text in some situations.
  • +
  • Sublime Text bindings: Bind delete-line to Shift-Ctrl-K on OS X.
  • +
  • Markdown mode: Fix issue where the mode would keep state related to fenced code blocks in an unsafe way, leading to occasional corrupted parses.
  • +
  • Markdown mode: Ignore backslashes in code fragments.
  • +
  • Markdown mode: Use whichever mode is registered as text/html to parse HTML.
  • +
  • Clike mode: Improve indentation of Scala => functions.
  • +
  • Python mode: Improve indentation of bracketed code.
  • +
  • HTMLMixed mode: Support multi-line opening tags for sub-languages (<script>, <style>, etc).
  • +
  • Spreadsheet mode: Fix bug where the mode did not advance the stream when finding a backslash.
  • +
  • XML mode: The mode now takes a matchClosing option to configure whether mismatched closing tags should be highlighted as errors.
  • +
+ +

20-01-2016: Version 5.11:

+ +
    +
  • New modes: JSX, literate Haskell
  • +
  • The editor now forwards more DOM events: cut, copy, paste, and touchstart. It will also forward mousedown for drag events
  • +
  • Fixes a bug where bookmarks next to collapsed spans were not rendered
  • +
  • The Swift mode now supports auto-indentation
  • +
  • Frontmatters in the YAML frontmatter mode are now optional as intended
  • +
  • Full list of patches
  • +
+ +

21-12-2015: Version 5.10:

+ + + +

23-11-2015: Version 5.9:

+ +
    +
  • Improve the way overlay (OS X-style) scrollbars are handled
  • +
  • Make annotatescrollbar and scrollpastend addons work properly together
  • +
  • Make show-hint addon select options on single click by default, move selection to hovered item
  • +
  • Properly fold comments that include block-comment-start markers
  • +
  • Many small language mode fixes
  • +
  • Full list of patches
  • +
+ +

20-10-2015: Version 5.8:

+ + + +

20-09-2015: Version 5.7:

+ + + +

20-08-2015: Version 5.6:

+ +
    +
  • Fix bug where you could paste into a readOnly editor
  • +
  • Show a cursor at the drop location when dragging over the editor
  • +
  • The Rust mode was rewritten to handle modern Rust
  • +
  • The editor and theme CSS was cleaned up. Some selectors are now less specific than before
  • +
  • New theme: abcdef
  • +
  • Lines longer than maxHighlightLength are now less likely to mess up indentation
  • +
  • New addons: autorefresh for refreshing an editor the first time it becomes visible, and html-lint for using HTMLHint
  • +
  • The search addon now recognizes \r and \n in pattern and replacement input
  • +
  • Full list of patches
  • +
+ +

20-07-2015: Version 5.5:

+ + + +

25-06-2015: Version 5.4:

+ + + +

20-05-2015: Version 5.3:

+ + + +

20-04-2015: Version 5.2:

+ + + +

23-03-2015: Version 5.1:

+ + + +

20-02-2015: Version 5.0:

+ +
    +
  • Experimental mobile support (tested on iOS, Android Chrome, stock Android browser)
  • +
  • New option inputStyle to switch between hidden textarea and contenteditable input.
  • +
  • The getInputField + method is no longer guaranteed to return a textarea.
  • +
  • Full list of patches.
  • +
+ +
+ +
+ +

Version 4.x

+ +

20-02-2015: Version 4.13:

+ + + +

22-01-2015: Version 4.12:

+ + + +

9-01-2015: Version 4.11:

+ +

Unfortunately, 4.10 did not take care of the + Firefox scrolling issue entirely. This release adds two more patches + to address that.

+ +

29-12-2014: Version 4.10:

+ +

Emergency single-patch update to 4.9. Fixes + Firefox-specific problem where the cursor could end up behind the + horizontal scrollbar.

+ +

23-12-2014: Version 4.9:

+ + + +

22-11-2014: Version 4.8:

+ + + +

20-10-2014: Version 4.7:

+ +
    +
  • Incompatible: + The lint addon now passes the + editor's value as first argument to asynchronous lint functions, + for consistency. The editor is still passed, as fourth + argument.
  • +
  • Improved handling of unicode identifiers in modes for + languages that support them.
  • +
  • More mode + improvements: CoffeeScript + (indentation), Verilog + (indentation), Scala + (indentation, triple-quoted strings), + and PHP (interpolated + variables in heredoc strings).
  • +
  • New modes: Textile and Tornado templates.
  • +
  • Experimental new way to define modes.
  • +
  • Improvements to the Vim + bindings: Arbitrary insert mode key mappings are now possible, + and text objects are supported in visual mode.
  • +
  • The mode meta-information file + now includes information about file extensions, + and helper + functions findModeByMIME + and findModeByExtension.
  • +
  • New logo!
  • +
  • Full list of patches.
  • +
+ +

19-09-2014: Version 4.6:

+ + + +

21-08-2014: Version 4.5:

+ +
    +
  • Fix several serious bugs with horizontal scrolling
  • +
  • New mode: Slim
  • +
  • New command: goLineLeftSmart
  • +
  • More fixes and extensions for the Vim visual block mode
  • +
  • Full list of patches.
  • +
+ +

21-07-2014: Version 4.4:

+ +
    +
  • Note: Some events might now fire in slightly + different order ("change" is still guaranteed to fire + before "cursorActivity")
  • +
  • Nested operations in multiple editors are now synced (complete + at same time, reducing DOM reflows)
  • +
  • Visual block mode for vim (<C-v>) is nearly complete
  • +
  • New mode: Kotlin
  • +
  • Better multi-selection paste for text copied from multiple CodeMirror selections
  • +
  • Full list of patches.
  • +
+ +

23-06-2014: Version 4.3:

+ +
    +
  • Several vim bindings + improvements: search and exCommand history, global flag + for :substitute, :global command. +
  • Allow hiding the cursor by + setting cursorBlinkRate + to a negative value.
  • +
  • Make gutter markers themeable, use this in foldgutter.
  • +
  • Full list of patches.
  • +
+ +

19-05-2014: Version 4.2:

+ +
    +
  • Fix problem where some modes were broken by the fact that empty tokens were forbidden.
  • +
  • Several fixes to context menu handling.
  • +
  • On undo, scroll change, not cursor, into view.
  • +
  • Rewritten Jade mode.
  • +
  • Various improvements to Shell (support for more syntax) and Python (better indentation) modes.
  • +
  • New mode: Cypher.
  • +
  • New theme: Neo.
  • +
  • Support direct styling options (color, line style, width) in the rulers addon.
  • +
  • Recognize per-editor configuration for the show-hint and foldcode addons.
  • +
  • More intelligent scanning for existing close tags in closetag addon.
  • +
  • In the Vim bindings: Fix bracket matching, support case conversion in visual mode, visual paste, append action.
  • +
  • Full list of patches.
  • +
+ +

22-04-2014: Version 4.1:

+ +
    +
  • Slightly incompatible: + The "cursorActivity" + event now fires after all other events for the operation (and only + for handlers that were actually registered at the time the + activity happened).
  • +
  • New command: insertSoftTab.
  • +
  • New mode: Django.
  • +
  • Improved modes: Verilog (rewritten), Jinja2, Haxe, PHP (string interpolation highlighted), JavaScript (indentation of trailing else, template strings), LiveScript (multi-line strings).
  • +
  • Many small issues from the 3.x→4.x transition were found and fixed.
  • +
  • Full list of patches.
  • +
+ +

20-03-2014: Version 4.0:

+ +

This is a new major version of CodeMirror. There + are a few incompatible changes in the API. Upgrade + with care, and read the upgrading + guide.

+ + + +
+ +
+ +

Version 3.x

+ +

22-04-2014: Version 3.24:

+ +

Merges the improvements from 4.1 that could + easily be applied to the 3.x code. Also improves the way the editor + size is updated when line widgets change.

+ +

20-03-2014: Version 3.23:

+ +
    +
  • In the XML mode, + add brackets style to angle brackets, fix + case-sensitivity of tags for HTML.
  • +
  • New mode: Dylan.
  • +
  • Many improvements to the Vim bindings.
  • +
+ +

21-02-2014: Version 3.22:

+ + + +

16-01-2014: Version 3.21:

+ +
    +
  • Auto-indenting a block will no longer add trailing whitespace to blank lines.
  • +
  • Marking text has a new option clearWhenEmpty to control auto-removal.
  • +
  • Several bugfixes in the handling of bidirectional text.
  • +
  • The XML and CSS modes were largely rewritten. LESS support was added to the CSS mode.
  • +
  • The OCaml mode was moved to an mllike mode, F# support added.
  • +
  • Make it possible to fetch multiple applicable helper values with getHelpers, and to register helpers matched on predicates with registerGlobalHelper.
  • +
  • New theme pastel-on-dark.
  • +
  • Better ECMAScript 6 support in JavaScript mode.
  • +
  • Full list of patches.
  • +
+ +

21-11-2013: Version 3.20:

+ + + +

21-10-2013: Version 3.19:

+ + + +

23-09-2013: Version 3.18:

+ +

Emergency release to fix a problem in 3.17 + where .setOption("lineNumbers", false) would raise an + error.

+ +

23-09-2013: Version 3.17:

+ + + +

21-08-2013: Version 3.16:

+ + + +

29-07-2013: Version 3.15:

+ + + +

20-06-2013: Version 3.14:

+ + + +

20-05-2013: Version 3.13:

+ + + +

19-04-2013: Version 3.12:

+ + + +

20-03-2013: Version 3.11:

+ + + +

21-02-2013: Version 3.1:

+ + + + +

25-01-2013: Version 3.02:

+ +

Single-bugfix release. Fixes a problem that + prevents CodeMirror instances from being garbage-collected after + they become unused.

+ +

21-01-2013: Version 3.01:

+ + + +

10-12-2012: Version 3.0:

+ +

New major version. Only + partially backwards-compatible. See + the upgrading guide for more + information. Changes since release candidate 2:

+ +
    +
  • Rewritten VIM mode.
  • +
  • Fix a few minor scrolling and sizing issues.
  • +
  • Work around Safari segfault when dragging.
  • +
  • Full list of patches.
  • +
+ +

20-11-2012: Version 3.0, release candidate 2:

+ +
    +
  • New mode: HTTP.
  • +
  • Improved handling of selection anchor position.
  • +
  • Improve IE performance on longer lines.
  • +
  • Reduce gutter glitches during horiz. scrolling.
  • +
  • Add addKeyMap and removeKeyMap methods.
  • +
  • Rewrite formatting and closetag add-ons.
  • +
  • Full list of patches.
  • +
+ +

20-11-2012: Version 3.0, release candidate 1:

+ + + +

22-10-2012: Version 3.0, beta 2:

+ +
    +
  • Fix page-based coordinate computation.
  • +
  • Fix firing of gutterClick event.
  • +
  • Add cursorHeight option.
  • +
  • Fix bi-directional text regression.
  • +
  • Add viewportMargin option.
  • +
  • Directly handle mousewheel events (again, hopefully better).
  • +
  • Make vertical cursor movement more robust (through widgets, big line gaps).
  • +
  • Add flattenSpans option.
  • +
  • Many optimizations. Poor responsiveness should be fixed.
  • +
  • Initialization in hidden state works again.
  • +
  • Full list of patches.
  • +
+ +

19-09-2012: Version 3.0, beta 1:

+ +
    +
  • Bi-directional text support.
  • +
  • More powerful gutter model.
  • +
  • Support for arbitrary text/widget height.
  • +
  • In-line widgets.
  • +
  • Generalized event handling.
  • +
+ +
+ +
+ +

Version 2.x

+ +

21-01-2013: Version 2.38:

+ +

Integrate some bugfixes, enhancements to the vim keymap, and new + modes + (D, Sass, APL) + from the v3 branch.

+ +

20-12-2012: Version 2.37:

+ +
    +
  • New mode: SQL (will replace plsql and mysql modes).
  • +
  • Further work on the new VIM mode.
  • +
  • Fix Cmd/Ctrl keys on recent Operas on OS X.
  • +
  • Full list of patches.
  • +
+ +

20-11-2012: Version 2.36:

+ + + +

22-10-2012: Version 2.35:

+ +
    +
  • New (sub) mode: TypeScript.
  • +
  • Don't overwrite (insert key) when pasting.
  • +
  • Fix several bugs in markText/undo interaction.
  • +
  • Better indentation of JavaScript code without semicolons.
  • +
  • Add defineInitHook function.
  • +
  • Full list of patches.
  • +
+ +

19-09-2012: Version 2.34:

+ +
    +
  • New mode: Common Lisp.
  • +
  • Fix right-click select-all on most browsers.
  • +
  • Change the way highlighting happens:
      Saves memory and CPU cycles.
      compareStates is no longer needed.
      onHighlightComplete no longer works.
  • +
  • Integrate mode (Markdown, XQuery, CSS, sTex) tests in central testsuite.
  • +
  • Add a CodeMirror.version property.
  • +
  • More robust handling of nested modes in formatting and closetag plug-ins.
  • +
  • Un/redo now preserves marked text and bookmarks.
  • +
  • Full list of patches.
  • +
+ +

23-08-2012: Version 2.33:

+ +
    +
  • New mode: Sieve.
  • +
  • New getViewPort and onViewportChange API.
  • +
  • Configurable cursor blink rate.
  • +
  • Make binding a key to false disabling handling (again).
  • +
  • Show non-printing characters as red dots.
  • +
  • More tweaks to the scrolling model.
  • +
  • Expanded testsuite. Basic linter added.
  • +
  • Remove most uses of innerHTML. Remove CodeMirror.htmlEscape.
  • +
  • Full list of patches.
  • +
+ +

23-07-2012: Version 2.32:

+ +

Emergency fix for a bug where an editor with + line wrapping on IE will break when there is no + scrollbar.

+ +

20-07-2012: Version 2.31:

+ + + +

22-06-2012: Version 2.3:

+ +
    +
  • New scrollbar implementation. Should flicker less. Changes DOM structure of the editor.
  • +
  • New theme: vibrant-ink.
  • +
  • Many extensions to the VIM keymap (including text objects).
  • +
  • Add mode-multiplexing utility script.
  • +
  • Fix bug where right-click paste works in read-only mode.
  • +
  • Add a getScrollInfo method.
  • +
  • Lots of other fixes.
  • +
+ +

23-05-2012: Version 2.25:

+ +
    +
  • New mode: Erlang.
  • +
  • Remove xmlpure mode (use xml.js).
  • +
  • Fix line-wrapping in Opera.
  • +
  • Fix X Windows middle-click paste in Chrome.
  • +
  • Fix bug that broke pasting of huge documents.
  • +
  • Fix backspace and tab key repeat in Opera.
  • +
+ +

23-04-2012: Version 2.24:

+ +
    +
  • Drop support for Internet Explorer 6.
  • +
  • New + modes: Shell, Tiki + wiki, Pig Latin.
  • +
  • New themes: Ambiance, Blackboard.
  • +
  • More control over drag/drop + with dragDrop + and onDragEvent + options.
  • +
  • Make HTML mode a bit less pedantic.
  • +
  • Add compoundChange API method.
  • +
  • Several fixes in undo history and line hiding.
  • +
  • Remove (broken) support for catchall in key maps, + add nofallthrough boolean field instead.
  • +
+ +

26-03-2012: Version 2.23:

+ +
    +
  • Change default binding for tab [more] + +
  • +
  • New modes: XQuery and VBScript.
  • +
  • Two new themes: lesser-dark and xq-dark.
  • +
  • Differentiate between background and text styles in setLineClass.
  • +
  • Fix drag-and-drop in IE9+.
  • +
  • Extend charCoords + and cursorCoords with a mode argument.
  • +
  • Add autofocus option.
  • +
  • Add findMarksAt method.
  • +
+ +

27-02-2012: Version 2.22:

+ + + +

27-01-2012: Version 2.21:

+ +
    +
  • Added LESS, MySQL, + Go, and Verilog modes.
  • +
  • Add smartIndent + option.
  • +
  • Support a cursor in readOnly-mode.
  • +
  • Support assigning multiple styles to a token.
  • +
  • Use a new approach to drawing the selection.
  • +
  • Add scrollTo method.
  • +
  • Allow undo/redo events to span non-adjacent lines.
  • +
  • Lots and lots of bugfixes.
  • +
+ +

20-12-2011: Version 2.2:

+ + + +

21-11-2011: Version 2.18:

+

Fixes TextMarker.clear, which is broken in 2.17.

+ +

21-11-2011: Version 2.17:

+
    +
  • Add support for line + wrapping and code + folding.
  • +
  • Add Github-style Markdown mode.
  • +
  • Add Monokai + and Rubyblue themes.
  • +
  • Add setBookmark method.
  • +
  • Move some of the demo code into reusable components + under lib/util.
  • +
  • Make screen-coord-finding code faster and more reliable.
  • +
  • Fix drag-and-drop in Firefox.
  • +
  • Improve support for IME.
  • +
  • Speed up content rendering.
  • +
  • Fix browser's built-in search in Webkit.
  • +
  • Make double- and triple-click work in IE.
  • +
  • Various fixes to modes.
  • +
+ +

27-10-2011: Version 2.16:

+
    +
  • Add Perl, Rust, TiddlyWiki, and Groovy modes.
  • +
  • Dragging text inside the editor now moves, rather than copies.
  • +
  • Add a coordsFromIndex method.
  • +
  • API change: setValue now no longer clears history. Use clearHistory for that.
  • +
  • API change: markText now + returns an object with clear and find + methods. Marked text is now more robust when edited.
  • +
  • Fix editing code with tabs in Internet Explorer.
  • +
+ +

26-09-2011: Version 2.15:

+

Fix bug that snuck into 2.14: Clicking the + character that currently has the cursor didn't re-focus the + editor.

+ +

26-09-2011: Version 2.14:

+ + + +

23-08-2011: Version 2.13:

+ + +

25-07-2011: Version 2.12:

+
    +
  • Add a SPARQL mode.
  • +
  • Fix bug with cursor jumping around in an unfocused editor in IE.
  • +
  • Allow key and mouse events to bubble out of the editor. Ignore widget clicks.
  • +
  • Solve cursor flakiness after undo/redo.
  • +
  • Fix block-reindent ignoring the last few lines.
  • +
  • Fix parsing of multi-line attrs in XML mode.
  • +
  • Use innerHTML for HTML-escaping.
  • +
  • Some fixes to indentation in C-like mode.
  • +
  • Shrink horiz scrollbars when long lines removed.
  • +
  • Fix width feedback loop bug that caused the width of an inner DIV to shrink.
  • +
+ +

04-07-2011: Version 2.11:

+
    +
  • Add a Scheme mode.
  • +
  • Add a replace method to search cursors, for cursor-preserving replacements.
  • +
  • Make the C-like mode mode more customizable.
  • +
  • Update XML mode to spot mismatched tags.
  • +
  • Add getStateAfter API and compareState mode API methods for finer-grained mode magic.
  • +
  • Add a getScrollerElement API method to manipulate the scrolling DIV.
  • +
  • Fix drag-and-drop for Firefox.
  • +
  • Add a C# configuration for the C-like mode.
  • +
  • Add full-screen editing and mode-changing demos.
  • +
+ +

07-06-2011: Version 2.1:

+

Add + a theme system + (demo). Note that this is not + backwards-compatible—you'll have to update your styles and + modes!

+ +

07-06-2011: Version 2.02:

+
    +
  • Add a Lua mode.
  • +
  • Fix reverse-searching for a regexp.
  • +
  • Empty lines can no longer break highlighting.
  • +
  • Rework scrolling model (the outer wrapper no longer does the scrolling).
  • +
  • Solve horizontal jittering on long lines.
  • +
  • Add runmode.js.
  • +
  • Immediately re-highlight text when typing.
  • +
  • Fix problem with 'sticking' horizontal scrollbar.
  • +
+ +

26-05-2011: Version 2.01:

+
    +
  • Add a Smalltalk mode.
  • +
  • Add a reStructuredText mode.
  • +
  • Add a Python mode.
  • +
  • Add a PL/SQL mode.
  • +
  • coordsChar now works
  • +
  • Fix a problem where onCursorActivity interfered with onChange.
  • +
  • Fix a number of scrolling and mouse-click-position glitches.
  • +
  • Pass information about the changed lines to onChange.
  • +
  • Support cmd-up/down on OS X.
  • +
  • Add triple-click line selection.
  • +
  • Don't handle shift when changing the selection through the API.
  • +
  • Support "nocursor" mode for readOnly option.
  • +
  • Add an onHighlightComplete option.
  • +
  • Fix the context menu for Firefox.
  • +
+ +

28-03-2011: Version 2.0:

+

CodeMirror 2 is a complete rewrite that's + faster, smaller, simpler to use, and less dependent on browser + quirks. See this + and this + for more information.

+ +

22-02-2011: Version 2.0 beta 2:

+

Somewhat more mature API, lots of bugs shaken out.

+ +

17-02-2011: Version 0.94:

+
    +
  • tabMode: "spaces" was modified slightly (now indents when something is selected).
  • +
  • Fixes a bug that would cause the selection code to break on some IE versions.
  • +
  • Disabling spell-check on WebKit browsers now works.
  • +
+ +

08-02-2011: Version 2.0 beta 1:

+

CodeMirror 2 is a complete rewrite of + CodeMirror, no longer depending on an editable frame.

+ +

19-01-2011: Version 0.93:

+
    +
  • Added a Regular Expression parser.
  • +
  • Fixes to the PHP parser.
  • +
  • Support for regular expression in search/replace.
  • +
  • Add save method to instances created with fromTextArea.
  • +
  • Add support for MS T-SQL in the SQL parser.
  • +
  • Support use of CSS classes for highlighting brackets.
  • +
  • Fix yet another hang with line-numbering in hidden editors.
  • +
+
+ +
+ +

Version 0.x

+ +

28-03-2011: Version 1.0:

+
    +
  • Fix error when debug history overflows.
  • +
  • Refine handling of C# verbatim strings.
  • +
  • Fix some issues with JavaScript indentation.
  • +
+ +

17-12-2010: Version 0.92:

+
    +
  • Make CodeMirror work in XHTML documents.
  • +
  • Fix bug in handling of backslashes in Python strings.
  • +
  • The styleNumbers option is now officially + supported and documented.
  • +
  • onLineNumberClick option added.
  • +
  • More consistent names onLoad and + onCursorActivity callbacks. Old names still work, but + are deprecated.
  • +
  • Add a Freemarker mode.
  • +
+ +

11-11-2010: Version 0.91:

+
    +
  • Adds support for Java.
  • +
  • Small additions to the PHP and SQL parsers.
  • +
  • Work around various Webkit issues.
  • +
  • Fix toTextArea to update the code in the textarea.
  • +
  • Add a noScriptCaching option (hack to ease development).
  • +
  • Make sub-modes of HTML mixed mode configurable.
  • +
+ +

02-10-2010: Version 0.9:

+
    +
  • Add support for searching backwards.
  • +
  • There are now parsers for Scheme, XQuery, and OmetaJS.
  • +
  • Makes height: "dynamic" more robust.
  • +
  • Fixes bug where paste did not work on OS X.
  • +
  • Add a enterMode and electricChars options to make indentation even more customizable.
  • +
  • Add firstLineNumber option.
  • +
  • Fix bad handling of @media rules by the CSS parser.
  • +
  • Take a new, more robust approach to working around the invisible-last-line bug in WebKit.
  • +
+ +

22-07-2010: Version 0.8:

+
    +
  • Add a cursorCoords method to find the screen + coordinates of the cursor.
  • +
  • A number of fixes and support for more syntax in the PHP parser.
  • +
  • Fix indentation problem with JSON-mode JS parser in Webkit.
  • +
  • Add a minification UI.
  • +
  • Support a height: dynamic mode, where the editor's + height will adjust to the size of its content.
  • +
  • Better support for IME input mode.
  • +
  • Fix JavaScript parser getting confused when seeing a no-argument + function call.
  • +
  • Have CSS parser see the difference between selectors and other + identifiers.
  • +
  • Fix scrolling bug when pasting in a horizontally-scrolled + editor.
  • +
  • Support toTextArea method in instances created with + fromTextArea.
  • +
  • Work around new Opera cursor bug that causes the cursor to jump + when pressing backspace at the end of a line.
  • +
+ +

27-04-2010: Version + 0.67:

+

More consistent page-up/page-down behaviour + across browsers. Fix some issues with hidden editors looping forever + when line-numbers were enabled. Make PHP parser parse + "\\" correctly. Have jumpToLine work on + line handles, and add cursorLine function to fetch the + line handle where the cursor currently is. Add new + setStylesheet function to switch style-sheets in a + running editor.

+ +

01-03-2010: Version + 0.66:

+

Adds removeLine method to API. + Introduces the PLSQL parser. + Marks XML errors by adding (rather than replacing) a CSS class, so + that they can be disabled by modifying their style. Fixes several + selection bugs, and a number of small glitches.

+ +

12-11-2009: Version + 0.65:

+

Add support for having both line-wrapping and + line-numbers turned on, make paren-highlighting style customisable + (markParen and unmarkParen config + options), work around a selection bug that Opera + reintroduced in version 10.

+ +

23-10-2009: Version + 0.64:

+

Solves some issues introduced by the + paste-handling changes from the previous release. Adds + setSpellcheck, setTextWrapping, + setIndentUnit, setUndoDepth, + setTabMode, and setLineNumbers to + customise a running editor. Introduces an SQL parser. Fixes a few small + problems in the Python + parser. And, as usual, add workarounds for various newly discovered + browser incompatibilities.

+ +

31-08-2009: Version 0.63:

+

Overhaul of paste-handling (less fragile), fixes for several + serious IE8 issues (cursor jumping, end-of-document bugs) and a number + of small problems.

+ +

30-05-2009: Version 0.62:

+

Introduces Python + and Lua parsers. Add + setParser (on-the-fly mode changing) and + clearHistory methods. Make parsing passes time-based + instead of lines-based (see the passTime option).

+ +
+
diff --git a/global/codemirror/doc/reporting.html b/global/codemirror/doc/reporting.html new file mode 100644 index 00000000..1657400c --- /dev/null +++ b/global/codemirror/doc/reporting.html @@ -0,0 +1,60 @@ + + +CodeMirror: Reporting Bugs + + + + + +
+ +

Reporting bugs effectively

+ +
+ +

So you found a problem in CodeMirror. By all means, report it! Bug +reports from users are the main drive behind improvements to +CodeMirror. But first, please read over these points:

+ +
    +
  1. CodeMirror is maintained by volunteers. They don't owe you + anything, so be polite. Reports with an indignant or belligerent + tone tend to be moved to the bottom of the pile.
  2. + +
  3. Include information about the browser in which the + problem occurred. Even if you tested several browsers, and + the problem occurred in all of them, mention this fact in the bug + report. Also include browser version numbers and the operating + system that you're on.
  4. + +
  5. Mention which release of CodeMirror you're using. Preferably, + try also with the current development snapshot, to ensure the + problem has not already been fixed.
  6. + +
  7. Mention very precisely what went wrong. "X is broken" is not a + good bug report. What did you expect to happen? What happened + instead? Describe the exact steps a maintainer has to take to reproduce + the error. We can not fix something that we can not observe.
  8. + +
  9. If the problem can not be reproduced in any of the demos + included in the CodeMirror distribution, please provide an HTML + document that demonstrates the problem. The best way to do this is + to go to jsbin.com, enter + it there, press save, and include the resulting link in your bug + report.
  10. +
+ +
+ +
diff --git a/global/codemirror/doc/upgrade_v2.2.html b/global/codemirror/doc/upgrade_v2.2.html new file mode 100644 index 00000000..3948ce6e --- /dev/null +++ b/global/codemirror/doc/upgrade_v2.2.html @@ -0,0 +1,96 @@ + + +CodeMirror: Version 2.2 upgrade guide + + + + + +
+ +

Upgrading to v2.2

+ +

There are a few things in the 2.2 release that require some care +when upgrading.

+ +

No more default.css

+ +

The default theme is now included +in codemirror.css, so +you do not have to included it separately anymore. (It was tiny, so +even if you're not using it, the extra data overhead is negligible.) + +

Different key customization

+ +

CodeMirror has moved to a system +where keymaps are used to +bind behavior to keys. This means custom +bindings are now possible.

+ +

Three options that influenced key +behavior, tabMode, enterMode, +and smartHome, are no longer supported. Instead, you can +provide custom bindings to influence the way these keys act. This is +done through the +new extraKeys +option, which can hold an object mapping key names to functionality. A +simple example would be:

+ +
  extraKeys: {
+    "Ctrl-S": function(instance) { saveText(instance.getValue()); },
+    "Ctrl-/": "undo"
+  }
+ +

Keys can be mapped either to functions, which will be given the +editor instance as argument, or to strings, which are mapped through +functions through the CodeMirror.commands table, which +contains all the built-in editing commands, and can be inspected and +extended by external code.

+ +

By default, the Home key is bound to +the "goLineStartSmart" command, which moves the cursor to +the first non-whitespace character on the line. You can set do this to +make it always go to the very start instead:

+ +
  extraKeys: {"Home": "goLineStart"}
+ +

Similarly, Enter is bound +to "newlineAndIndent" by default. You can bind it to +something else to get different behavior. To disable special handling +completely and only get a newline character inserted, you can bind it +to false:

+ +
  extraKeys: {"Enter": false}
+ +

The same works for Tab. If you don't want CodeMirror +to handle it, bind it to false. The default behaviour is +to indent the current line more ("indentMore" command), +and indent it less when shift is held ("indentLess"). +There are also "indentAuto" (smart indent) +and "insertTab" commands provided for alternate +behaviors. Or you can write your own handler function to do something +different altogether.

+ +

Tabs

+ +

Handling of tabs changed completely. The display width of tabs can +now be set with the tabSize option, and tabs can +be styled by setting CSS rules +for the cm-tab class.

+ +

The default width for tabs is now 4, as opposed to the 8 that is +hard-wired into browsers. If you are relying on 8-space tabs, make +sure you explicitly set tabSize: 8 in your options.

+ +
diff --git a/global/codemirror/doc/upgrade_v3.html b/global/codemirror/doc/upgrade_v3.html new file mode 100644 index 00000000..5f94067a --- /dev/null +++ b/global/codemirror/doc/upgrade_v3.html @@ -0,0 +1,230 @@ + + +CodeMirror: Version 3 upgrade guide + + + + + + + + + + + + + + +
+ +

Upgrading to version 3

+ +

Version 3 does not depart too much from 2.x API, and sites that use +CodeMirror in a very simple way might be able to upgrade without +trouble. But it does introduce a number of incompatibilities. Please +at least skim this text before upgrading.

+ +

Note that version 3 drops full support for Internet +Explorer 7. The editor will mostly work on that browser, but +it'll be significantly glitchy.

+ +
+

DOM structure

+ +

This one is the most likely to cause problems. The internal +structure of the editor has changed quite a lot, mostly to implement a +new scrolling model.

+ +

Editor height is now set on the outer wrapper element (CSS +class CodeMirror), not on the scroller element +(CodeMirror-scroll).

+ +

Other nodes were moved, dropped, and added. If you have any code +that makes assumptions about the internal DOM structure of the editor, +you'll have to re-test it and probably update it to work with v3.

+ +

See the styling section of the +manual for more information.

+
+
+

Gutter model

+ +

In CodeMirror 2.x, there was a single gutter, and line markers +created with setMarker would have to somehow coexist with +the line numbers (if present). Version 3 allows you to specify an +array of gutters, by class +name, +use setGutterMarker +to add or remove markers in individual gutters, and clear whole +gutters +with clearGutter. +Gutter markers are now specified as DOM nodes, rather than HTML +snippets.

+ +

The gutters no longer horizontally scrolls along with the content. +The fixedGutter option was removed (since it is now the +only behavior).

+ +
+<style>
+  /* Define a gutter style */
+  .note-gutter { width: 3em; background: cyan; }
+</style>
+<script>
+  // Create an instance with two gutters -- line numbers and notes
+  var cm = new CodeMirror(document.body, {
+    gutters: ["note-gutter", "CodeMirror-linenumbers"],
+    lineNumbers: true
+  });
+  // Add a note to line 0
+  cm.setGutterMarker(0, "note-gutter", document.createTextNode("hi"));
+</script>
+
+
+
+

Event handling

+ +

Most of the onXYZ options have been removed. The same +effect is now obtained by calling +the on method with a string +identifying the event type. Multiple handlers can now be registered +(and individually unregistered) for an event, and objects such as line +handlers now also expose events. See the +full list here.

+ +

(The onKeyEvent and onDragEvent options, +which act more as hooks than as event handlers, are still there in +their old form.)

+ +
+cm.on("change", function(cm, change) {
+  console.log("something changed! (" + change.origin + ")");
+});
+
+
+
+

markText method arguments

+ +

The markText method +(which has gained some interesting new features, such as creating +atomic and read-only spans, or replacing spans with widgets) no longer +takes the CSS class name as a separate argument, but makes it an +optional field in the options object instead.

+ +
+// Style first ten lines, and forbid the cursor from entering them
+cm.markText({line: 0, ch: 0}, {line: 10, ch: 0}, {
+  className: "magic-text",
+  inclusiveLeft: true,
+  atomic: true
+});
+
+
+
+

Line folding

+ +

The interface for hiding lines has been +removed. markText can +now be used to do the same in a more flexible and powerful way.

+ +

The folding script has been +updated to use the new interface, and should now be more robust.

+ +
+// Fold a range, replacing it with the text "??"
+var range = cm.markText({line: 4, ch: 2}, {line: 8, ch: 1}, {
+  replacedWith: document.createTextNode("??"),
+  // Auto-unfold when cursor moves into the range
+  clearOnEnter: true
+});
+// Get notified when auto-unfolding
+CodeMirror.on(range, "clear", function() {
+  console.log("boom");
+});
+
+
+
+

Line CSS classes

+ +

The setLineClass method has been replaced +by addLineClass +and removeLineClass, +which allow more modular control over the classes attached to a line.

+ +
+var marked = cm.addLineClass(10, "background", "highlighted-line");
+setTimeout(function() {
+  cm.removeLineClass(marked, "background", "highlighted-line");
+});
+
+
+
+

Position properties

+ +

All methods that take or return objects that represent screen +positions now use {left, top, bottom, right} properties +(not always all of them) instead of the {x, y, yBot} used +by some methods in v2.x.

+ +

Affected methods +are cursorCoords, charCoords, coordsChar, +and getScrollInfo.

+
+
+

Bracket matching no longer in core

+ +

The matchBrackets +option is no longer defined in the core editor. +Load addon/edit/matchbrackets.js to enable it.

+
+
+

Mode management

+ +

The CodeMirror.listModes +and CodeMirror.listMIMEs functions, used for listing +defined modes, are gone. You are now encouraged to simply +inspect CodeMirror.modes (mapping mode names to mode +constructors) and CodeMirror.mimeModes (mapping MIME +strings to mode specs).

+
+
+

New features

+ +

Some more reasons to upgrade to version 3.

+ +
    +
  • Bi-directional text support. CodeMirror will now mostly do the + right thing when editing Arabic or Hebrew text.
  • +
  • Arbitrary line heights. Using fonts with different heights + inside the editor (whether off by one pixel or fifty) is now + supported and handled gracefully.
  • +
  • In-line widgets. See the demo + and the docs.
  • +
  • Defining custom options + with CodeMirror.defineOption.
  • +
+
+
+ + diff --git a/global/codemirror/doc/upgrade_v4.html b/global/codemirror/doc/upgrade_v4.html new file mode 100644 index 00000000..09df00ca --- /dev/null +++ b/global/codemirror/doc/upgrade_v4.html @@ -0,0 +1,144 @@ + + +CodeMirror: Version 4 upgrade guide + + + + + + +
+ +

Upgrading to version 4

+ +

CodeMirror 4's interface is very close version 3, but it +does fix a few awkward details in a backwards-incompatible ways. At +least skim the text below before upgrading.

+ +

Multiple selections

+ +

The main new feature in version 4 is multiple selections. The +single-selection variants of methods are still there, but now +typically act only on the primary selection (usually the last +one added).

+ +

The exception to this +is getSelection, +which will now return the content of all selections +(separated by newlines, or whatever lineSep parameter you passed +it).

+ +
+ +

The beforeSelectionChange event

+ +

This event still exists, but the object it is passed has +a completely new +interface, because such changes now concern multiple +selections.

+ +
+ +

replaceSelection's collapsing behavior

+ +

By +default, replaceSelection +would leave the newly inserted text selected. This is only rarely what +you want, and also (slightly) more expensive in the new model, so the +default was changed to "end", meaning the old behavior +must be explicitly specified by passing a second argument +of "around".

+ +
+ +

change event data

+ +

Rather than forcing client code to follow next +pointers from one change object to the next, the library will now +simply fire +multiple "change" +events. Existing code will probably continue to work unmodified.

+ +
+ +

showIfHidden option to line widgets

+ +

This option, which conceptually caused line widgets to be visible +even if their line was hidden, was never really well-defined, and was +buggy from the start. It would be a rather expensive feature, both in +code complexity and run-time performance, to implement properly. It +has been dropped entirely in 4.0.

+ +
+ +

Module loaders

+ +

All modules in the CodeMirror distribution are now wrapped in a +shim function to make them compatible with both AMD +(requirejs) and CommonJS (as used +by node +and browserify) module loaders. +When neither of these is present, they fall back to simply using the +global CodeMirror variable.

+ +

If you have a module loader present in your environment, CodeMirror +will attempt to use it, and you might need to change the way you load +CodeMirror modules.

+ +
+ +

Mutating shared data structures

+ +

Data structures produced by the library should not be mutated +unless explicitly allowed, in general. This is slightly more strict in +4.0 than it was in earlier versions, which copied the position objects +returned by getCursor +for nebulous, historic reasons. In 4.0, mutating these +objects will corrupt your editor's selection.

+ +
+ +

Deprecated interfaces dropped

+ +

A few properties and methods that have been deprecated for a while +are now gone. Most notably, the onKeyEvent +and onDragEvent options (use the +corresponding events instead).

+ +

Two silly methods, which were mostly there to stay close to the 0.x +API, setLine and removeLine are now gone. +Use the more +flexible replaceRange +method instead.

+ +

The long names for folding and completing functions +(CodeMirror.braceRangeFinder, CodeMirror.javascriptHint, +etc) are also gone +(use CodeMirror.fold.brace, CodeMirror.hint.javascript).

+ +

The className property in the return value +of getTokenAt, which +has been superseded by the type property, is also no +longer present.

+ +
+
diff --git a/global/codemirror/doc/yinyang.png b/global/codemirror/doc/yinyang.png new file mode 100644 index 0000000000000000000000000000000000000000..2eafd3f1ca137898ede8c27d0e64d99919bdc1ab GIT binary patch literal 4633 zcmV+!66WoRP)02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{01<&nL_t(|+U=cPY#Y~=$Nxhy zV#HV?X-TGS*&^w9;jhFRrrmgx#ahFz1vCy?kuL#aq!!t?6h%Z81?uLZB43geHDU@V z+Mp;vst;|SN~%ad0C~-k)9hlmSaX=zPPDc)WGqXTMTJAjrb?Oe-3N*cW$Tk1&I~CX zfUqS?^p$>dKJU5bQiKrHlFYFz0f02eVNnnYpU(;c7Gg1IX}a*adb1fCv$^nbBg0Ur zF`=pzaE9keIvT}1$05D+nvTcOcJd?uKugo8)9VXguh#2PZ#E;%afQz<#A3+AVug?I zT)vD}lL=ayhL)z$$S`Q==;%@#3>UWnOCae;gd_$BF~_o)9vj1Ms}+q511(KMV>Ux; zwTkiJV2))A4^1)jMuvgDyBivdh1v!zk|aYRB7{O14+gQ*Y=+)$hrwdXeFI?DcrCgJCeg6hO_fEbc`jSeTt%_4{{s zbQA)kyswm6vdJW70s&0ER} z6HG1_T6%gU_0>fWEG9f2EX3n5`~7IL*{CfAIK%T~!s|u+4}ZXscizEbB7s{MF084g zrAn*G1f$!XkA5Ww9dkONu~@LDzh4&6k^`Rd`N*|%=U`}RLW|3V*asg}1nf#${cK+! z_If;$KhO!k9}^xA8f`Z0zi>g)yjn8A8J;J%91cv~xPeFMv}|sn)nv+>P04-ql+TAT zpAXLk0x&onRLuaM@Oa4RyYJ%B!h&M5hXXx5*ni;y)CPkrW?S!YU~hka#kE;g;ivZ0 zXJ7w18U5MMkW~;|02mt_#Hh`NY%(e7|J!7<;V8!egy6c>I-HI~NL6ZZIuarO{qoDX zd@PeuY^7&+M+Yo^ziiR=mF{jlH!y$}my4o>KKu}ib91OBkrQ$@nZzi=Kx?(a5(tP2S+xx}CkwN);9V}s zeKG*34F()yS%45+qiK>&CQm5}a5kAdHFo9rYb4vK1)f4+1{@;td%_?{ksqC_#*WdpwU{PU!i;O71D zOR<>bIdUZ+mt~^I&YY<^xOsnk+wGQh4VJ+{WOyFD(@A6je5b#keDUFjH3zrw@c!mE z$nde&R&@_y_y=Y_@)EB{Bh{Z6+vY7CCaj&SqS!^x- zw^T|I7UlEKPBbzM+Pq#$bim1AkbH9XEVB3SOZEdb=yZ5K6xvXa)l48zG0<}7#d*o_ zJpQYr1209R8}8uTkcrMFlczp;;|)pS?xAT|S$4w>bj?mDjz%KbQ*<;%ESY0jMQE_b zV!;uw7crMhTpxVf?H-0&Eh*eX;V>FD39C-8$H8C_4LV&-0tNtMUmpk|n7VLbL#B6K z6FnOalc?P;N#9gnUgkJ7baa&b{qr1$2*Y4rB;TndKfIL5;C~qgFLKu`t~O{XIf#Q@e?tvKLzZzxY!t*5<{pMDB5KQGzh#p-(0 z+wG#RE32@Iozd+^JQzfV=Sj(cW8e9Xq#clZXc{{@JH-Lq-7TswUZ_wSR;s8Ch7AQ= zs{&5={UjxEDNvrWAflPhC=75u;L7kkX2W5!X~2{3y(ej4wJoK)v`Mdba~eDw z4wJq29p5M~Ak%X*LdBO{{1-F^JH;{CAJYDJw+hh#8FRt22; z^Pgos+F7t7PABH0(bCL(G>T8UyG31(lFjq7yx8r2!o@8EJpJomD`v5g&dyCko*5j> zeV@o119Hs#D0Q9Vs{zjNJW1TSqnO3cr&9P&nnuj!!a_X0c6yacVbbf(X?_KEeZ;P7 zS4uP%3wD~#%Nq0wo4jI0uVTxsKmfM_0X*w;LT|T2t=FT0rZLZP$O;04PzV#jU`4sWwPJc~tgwx!0&+c9>FqM%ljhmski93mq_oazEmZMT0FdUmVM?RfCig&p{^;m7)gm#=5UqC z$O;0~3$YloTey3&818Dvc&MfG(ChuXB29E=3v?c?CWn9W6CC9@)amuP`wb{+#aA)N z)&4zyM}pEsy%oW>wzuOzFoO?;9r8GIx-;cxLuwHC+U!5<^C=##lzFlW05m&x z)CAn;d_J@|omI8wN(EkbE?-8I%|=m#5c~&4k!pv#k6~~q9Inc>iyd@jcpjq+gX8fy zl?$?JU_aRG_gC%O#WvM*MKOp90G>HjdUHP0OHGMlm2(KVli+|C$3wqiW%TG8xCWq*}QCq^s<(n_9_Zk#Gae6CVTX zHzAW8hg%{JJuOFsQ0R$L?J~fI*Iuide7I4hvBP<}X}4pt#P+4zEW4?D6e<;L2}46q zJow82I~8Gp0|B4wsFT`RP9~mj@J#Ga8qR%C4h)M6}~~@cA?pD7|!+-%`-}&>{3X^xLeaif# z*9+qsx0SC7xXEUt_LO-+RW(Sn$UR(AZhp*$!^rSFT3jw_(|`fM^uY&;OqtRmo~NqQ z>tPnDg14`;Q&JNhbGg$|{C?D%Oso3dysUdU zWrpX;$48DRZcv(-BlZ^s0iz6q$uj13?&;{jQ4uZ6TDwWvWD?h{R+#<%bpfw?K3HS1 zP{-bV7ixv2O=%H_r`GB9IK;BpWipjkcxh^aMZ)}d!s9_>XXmxc7@4~9ahZ))1K=AMW~CG)+r;V{Phe(d-8x;FCl8$RK02?U^0kT0%8-M4|JaUvSU zvm4yR-`ClRLo5ra&RA!YNyJ<(bPNs_dal+JYBM_)cl!Iu&GYAxRlvm^0MIE2P>X!q zcX0t^!sEdl%jQ~{mSmU7ghqye(e197)~@D%zgTJyZXX!f@MZzE*$%$XPMjbU9H)rh zt&TtdEfV!cEiN6$ltNYloD2qW+wI0tj_cZ}_Lc-Vn@pbiTU*=kq5`JlRkANjPI(+~ z{z~_+vFsE3y`uTxLZ!xFxcK77A1lHiPsd_Nh_uzGRJhq>5;q+V9P#-!4Ywq~`2xt% z_uhk60X@kRRXUY@qe0cE&4%Wlo;AynqMGPp8GHS8a{G^els)K@(icmqy}Z*25CY5K zV96aARJn(p#$JD&O#St*vi4JJbUOS?JYKPgS}M4}SIu_3(}{E>f@9HWS?x7tPr5ts zyWdg9Z+=r&bDc@05UaA2{VQtQV{i|#Y*)GODat6r_Fw#>tEsI`R><*C2vb!$%)8h$ z=gso5Xq4JaI#f}>YJ=h8p^rY29rBI-eo<@GQkv#$GKo=!Dck2(1aKbmv8z{QHP@L` z3cS;aY=!PItQ6dZSPY{!8|qCaQQ?XTxY#GRzx5W>GEMHe%W)WG7{x=*!xcgy{0~jT z*xM^QTv4Lv)gC>{9>`W?!E1jK+DQ6NwaBpA$f45q(qq7r-M@Fbh!mYRl7fUi2B%i$T26kw* zvS{-@hJiT{ki}#ZLXeI`F#dxdfDi&pAh6;ogsRivVlg-z)W438ckMiVdedDKV#qkl z;%{a%CM3L*Fq=x@_PKMo-Peb|GYs_I-8eilLP-TzQVlMa*>ITLId=|suU^F?8S2;? zoeu3T7mRLqMKn5_O5vW*htGfdQ&1FzwwGUq=~usklwf5ATnu{rhd;#KYu9A!+BDhi z&@a8psby!E4xUZoy(U2wOUr#E5Vfa0L^qQBBw3 + +CodeMirror + + + + + + + + + + + + + + + + + +
+ +
+

CodeMirror is a versatile text editor + implemented in JavaScript for the browser. It is specialized for + editing code, and comes with a number of language modes and addons + that implement more advanced editing functionality.

+ +

A rich programming API and a + CSS theming system are + available for customizing CodeMirror to fit your application, and + extending it with new functionality.

+
+ +
+

This is CodeMirror

+
+
+ + +
+
+ + + +
+
+ Get the current version: 5.30.0.
+ You can see the code,
+ read the release notes,
+ or study the user manual. +
+
+ Software needs maintenance,
+ maintainers need to subsist.
+ Current funding status =
+ You can help per month or + once. +
+
+ +
+ +
+

Features

+ +
+ +
+

Community

+ +

CodeMirror is an open-source project shared under + an MIT license. It is the editor used in the + dev tools for + Firefox, + Chrome, + and Safari, in Light + Table, Adobe + Brackets, Bitbucket, + and many other projects.

+ +

Development and bug tracking happens + on github + (alternate git + repository). + Please read these + pointers before submitting a bug. Use pull requests to submit + patches. All contributions must be released under the same MIT + license that CodeMirror uses.

+ +

Discussion around the project is done on + a discussion forum. + Announcements related to the project, such as new versions, are + posted in the + forum's "announce" + category. If needed, you can + contact the maintainer + directly. We aim to be an inclusive, welcoming community. To make + that explicit, we have + a code of + conduct that applies to communication around the project.

+ +

A list of CodeMirror-related software that is not part of the + main distribution is maintained + on our + wiki. Feel free to add your project.

+
+ +
+

Browser support

+

The desktop versions of the following browsers, + in standards mode (HTML5 <!doctype html> + recommended) are supported:

+ + + + + + +
Firefoxversion 4 and up
Chromeany version
Safariversion 5.2 and up
Internet Explorer/Edgeversion 8 and up
Operaversion 9 and up
+

Support for modern mobile browsers is experimental. Recent + versions of the iOS browser and Chrome on Android should work + pretty well.

+
+ +
diff --git a/global/codemirror/keymap/emacs.js b/global/codemirror/keymap/emacs.js new file mode 100644 index 00000000..33db0c15 --- /dev/null +++ b/global/codemirror/keymap/emacs.js @@ -0,0 +1,416 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + var Pos = CodeMirror.Pos; + function posEq(a, b) { return a.line == b.line && a.ch == b.ch; } + + // Kill 'ring' + + var killRing = []; + function addToRing(str) { + killRing.push(str); + if (killRing.length > 50) killRing.shift(); + } + function growRingTop(str) { + if (!killRing.length) return addToRing(str); + killRing[killRing.length - 1] += str; + } + function getFromRing(n) { return killRing[killRing.length - (n ? Math.min(n, 1) : 1)] || ""; } + function popFromRing() { if (killRing.length > 1) killRing.pop(); return getFromRing(); } + + var lastKill = null; + + function kill(cm, from, to, mayGrow, text) { + if (text == null) text = cm.getRange(from, to); + + if (mayGrow && lastKill && lastKill.cm == cm && posEq(from, lastKill.pos) && cm.isClean(lastKill.gen)) + growRingTop(text); + else + addToRing(text); + cm.replaceRange("", from, to, "+delete"); + + if (mayGrow) lastKill = {cm: cm, pos: from, gen: cm.changeGeneration()}; + else lastKill = null; + } + + // Boundaries of various units + + function byChar(cm, pos, dir) { + return cm.findPosH(pos, dir, "char", true); + } + + function byWord(cm, pos, dir) { + return cm.findPosH(pos, dir, "word", true); + } + + function byLine(cm, pos, dir) { + return cm.findPosV(pos, dir, "line", cm.doc.sel.goalColumn); + } + + function byPage(cm, pos, dir) { + return cm.findPosV(pos, dir, "page", cm.doc.sel.goalColumn); + } + + function byParagraph(cm, pos, dir) { + var no = pos.line, line = cm.getLine(no); + var sawText = /\S/.test(dir < 0 ? line.slice(0, pos.ch) : line.slice(pos.ch)); + var fst = cm.firstLine(), lst = cm.lastLine(); + for (;;) { + no += dir; + if (no < fst || no > lst) + return cm.clipPos(Pos(no - dir, dir < 0 ? 0 : null)); + line = cm.getLine(no); + var hasText = /\S/.test(line); + if (hasText) sawText = true; + else if (sawText) return Pos(no, 0); + } + } + + function bySentence(cm, pos, dir) { + var line = pos.line, ch = pos.ch; + var text = cm.getLine(pos.line), sawWord = false; + for (;;) { + var next = text.charAt(ch + (dir < 0 ? -1 : 0)); + if (!next) { // End/beginning of line reached + if (line == (dir < 0 ? cm.firstLine() : cm.lastLine())) return Pos(line, ch); + text = cm.getLine(line + dir); + if (!/\S/.test(text)) return Pos(line, ch); + line += dir; + ch = dir < 0 ? text.length : 0; + continue; + } + if (sawWord && /[!?.]/.test(next)) return Pos(line, ch + (dir > 0 ? 1 : 0)); + if (!sawWord) sawWord = /\w/.test(next); + ch += dir; + } + } + + function byExpr(cm, pos, dir) { + var wrap; + if (cm.findMatchingBracket && (wrap = cm.findMatchingBracket(pos, {strict: true})) + && wrap.match && (wrap.forward ? 1 : -1) == dir) + return dir > 0 ? Pos(wrap.to.line, wrap.to.ch + 1) : wrap.to; + + for (var first = true;; first = false) { + var token = cm.getTokenAt(pos); + var after = Pos(pos.line, dir < 0 ? token.start : token.end); + if (first && dir > 0 && token.end == pos.ch || !/\w/.test(token.string)) { + var newPos = cm.findPosH(after, dir, "char"); + if (posEq(after, newPos)) return pos; + else pos = newPos; + } else { + return after; + } + } + } + + // Prefixes (only crudely supported) + + function getPrefix(cm, precise) { + var digits = cm.state.emacsPrefix; + if (!digits) return precise ? null : 1; + clearPrefix(cm); + return digits == "-" ? -1 : Number(digits); + } + + function repeated(cmd) { + var f = typeof cmd == "string" ? function(cm) { cm.execCommand(cmd); } : cmd; + return function(cm) { + var prefix = getPrefix(cm); + f(cm); + for (var i = 1; i < prefix; ++i) f(cm); + }; + } + + function findEnd(cm, pos, by, dir) { + var prefix = getPrefix(cm); + if (prefix < 0) { dir = -dir; prefix = -prefix; } + for (var i = 0; i < prefix; ++i) { + var newPos = by(cm, pos, dir); + if (posEq(newPos, pos)) break; + pos = newPos; + } + return pos; + } + + function move(by, dir) { + var f = function(cm) { + cm.extendSelection(findEnd(cm, cm.getCursor(), by, dir)); + }; + f.motion = true; + return f; + } + + function killTo(cm, by, dir) { + var selections = cm.listSelections(), cursor; + var i = selections.length; + while (i--) { + cursor = selections[i].head; + kill(cm, cursor, findEnd(cm, cursor, by, dir), true); + } + } + + function killRegion(cm) { + if (cm.somethingSelected()) { + var selections = cm.listSelections(), selection; + var i = selections.length; + while (i--) { + selection = selections[i]; + kill(cm, selection.anchor, selection.head); + } + return true; + } + } + + function addPrefix(cm, digit) { + if (cm.state.emacsPrefix) { + if (digit != "-") cm.state.emacsPrefix += digit; + return; + } + // Not active yet + cm.state.emacsPrefix = digit; + cm.on("keyHandled", maybeClearPrefix); + cm.on("inputRead", maybeDuplicateInput); + } + + var prefixPreservingKeys = {"Alt-G": true, "Ctrl-X": true, "Ctrl-Q": true, "Ctrl-U": true}; + + function maybeClearPrefix(cm, arg) { + if (!cm.state.emacsPrefixMap && !prefixPreservingKeys.hasOwnProperty(arg)) + clearPrefix(cm); + } + + function clearPrefix(cm) { + cm.state.emacsPrefix = null; + cm.off("keyHandled", maybeClearPrefix); + cm.off("inputRead", maybeDuplicateInput); + } + + function maybeDuplicateInput(cm, event) { + var dup = getPrefix(cm); + if (dup > 1 && event.origin == "+input") { + var one = event.text.join("\n"), txt = ""; + for (var i = 1; i < dup; ++i) txt += one; + cm.replaceSelection(txt); + } + } + + function addPrefixMap(cm) { + cm.state.emacsPrefixMap = true; + cm.addKeyMap(prefixMap); + cm.on("keyHandled", maybeRemovePrefixMap); + cm.on("inputRead", maybeRemovePrefixMap); + } + + function maybeRemovePrefixMap(cm, arg) { + if (typeof arg == "string" && (/^\d$/.test(arg) || arg == "Ctrl-U")) return; + cm.removeKeyMap(prefixMap); + cm.state.emacsPrefixMap = false; + cm.off("keyHandled", maybeRemovePrefixMap); + cm.off("inputRead", maybeRemovePrefixMap); + } + + // Utilities + + function setMark(cm) { + cm.setCursor(cm.getCursor()); + cm.setExtending(!cm.getExtending()); + cm.on("change", function() { cm.setExtending(false); }); + } + + function clearMark(cm) { + cm.setExtending(false); + cm.setCursor(cm.getCursor()); + } + + function getInput(cm, msg, f) { + if (cm.openDialog) + cm.openDialog(msg + ": ", f, {bottom: true}); + else + f(prompt(msg, "")); + } + + function operateOnWord(cm, op) { + var start = cm.getCursor(), end = cm.findPosH(start, 1, "word"); + cm.replaceRange(op(cm.getRange(start, end)), start, end); + cm.setCursor(end); + } + + function toEnclosingExpr(cm) { + var pos = cm.getCursor(), line = pos.line, ch = pos.ch; + var stack = []; + while (line >= cm.firstLine()) { + var text = cm.getLine(line); + for (var i = ch == null ? text.length : ch; i > 0;) { + var ch = text.charAt(--i); + if (ch == ")") + stack.push("("); + else if (ch == "]") + stack.push("["); + else if (ch == "}") + stack.push("{"); + else if (/[\(\{\[]/.test(ch) && (!stack.length || stack.pop() != ch)) + return cm.extendSelection(Pos(line, i)); + } + --line; ch = null; + } + } + + function quit(cm) { + cm.execCommand("clearSearch"); + clearMark(cm); + } + + CodeMirror.emacs = {kill: kill, killRegion: killRegion, repeated: repeated}; + + // Actual keymap + + var keyMap = CodeMirror.keyMap.emacs = CodeMirror.normalizeKeyMap({ + "Ctrl-W": function(cm) {kill(cm, cm.getCursor("start"), cm.getCursor("end"));}, + "Ctrl-K": repeated(function(cm) { + var start = cm.getCursor(), end = cm.clipPos(Pos(start.line)); + var text = cm.getRange(start, end); + if (!/\S/.test(text)) { + text += "\n"; + end = Pos(start.line + 1, 0); + } + kill(cm, start, end, true, text); + }), + "Alt-W": function(cm) { + addToRing(cm.getSelection()); + clearMark(cm); + }, + "Ctrl-Y": function(cm) { + var start = cm.getCursor(); + cm.replaceRange(getFromRing(getPrefix(cm)), start, start, "paste"); + cm.setSelection(start, cm.getCursor()); + }, + "Alt-Y": function(cm) {cm.replaceSelection(popFromRing(), "around", "paste");}, + + "Ctrl-Space": setMark, "Ctrl-Shift-2": setMark, + + "Ctrl-F": move(byChar, 1), "Ctrl-B": move(byChar, -1), + "Right": move(byChar, 1), "Left": move(byChar, -1), + "Ctrl-D": function(cm) { killTo(cm, byChar, 1); }, + "Delete": function(cm) { killRegion(cm) || killTo(cm, byChar, 1); }, + "Ctrl-H": function(cm) { killTo(cm, byChar, -1); }, + "Backspace": function(cm) { killRegion(cm) || killTo(cm, byChar, -1); }, + + "Alt-F": move(byWord, 1), "Alt-B": move(byWord, -1), + "Alt-D": function(cm) { killTo(cm, byWord, 1); }, + "Alt-Backspace": function(cm) { killTo(cm, byWord, -1); }, + + "Ctrl-N": move(byLine, 1), "Ctrl-P": move(byLine, -1), + "Down": move(byLine, 1), "Up": move(byLine, -1), + "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "End": "goLineEnd", "Home": "goLineStart", + + "Alt-V": move(byPage, -1), "Ctrl-V": move(byPage, 1), + "PageUp": move(byPage, -1), "PageDown": move(byPage, 1), + + "Ctrl-Up": move(byParagraph, -1), "Ctrl-Down": move(byParagraph, 1), + + "Alt-A": move(bySentence, -1), "Alt-E": move(bySentence, 1), + "Alt-K": function(cm) { killTo(cm, bySentence, 1); }, + + "Ctrl-Alt-K": function(cm) { killTo(cm, byExpr, 1); }, + "Ctrl-Alt-Backspace": function(cm) { killTo(cm, byExpr, -1); }, + "Ctrl-Alt-F": move(byExpr, 1), "Ctrl-Alt-B": move(byExpr, -1), + + "Shift-Ctrl-Alt-2": function(cm) { + var cursor = cm.getCursor(); + cm.setSelection(findEnd(cm, cursor, byExpr, 1), cursor); + }, + "Ctrl-Alt-T": function(cm) { + var leftStart = byExpr(cm, cm.getCursor(), -1), leftEnd = byExpr(cm, leftStart, 1); + var rightEnd = byExpr(cm, leftEnd, 1), rightStart = byExpr(cm, rightEnd, -1); + cm.replaceRange(cm.getRange(rightStart, rightEnd) + cm.getRange(leftEnd, rightStart) + + cm.getRange(leftStart, leftEnd), leftStart, rightEnd); + }, + "Ctrl-Alt-U": repeated(toEnclosingExpr), + + "Alt-Space": function(cm) { + var pos = cm.getCursor(), from = pos.ch, to = pos.ch, text = cm.getLine(pos.line); + while (from && /\s/.test(text.charAt(from - 1))) --from; + while (to < text.length && /\s/.test(text.charAt(to))) ++to; + cm.replaceRange(" ", Pos(pos.line, from), Pos(pos.line, to)); + }, + "Ctrl-O": repeated(function(cm) { cm.replaceSelection("\n", "start"); }), + "Ctrl-T": repeated(function(cm) { + cm.execCommand("transposeChars"); + }), + + "Alt-C": repeated(function(cm) { + operateOnWord(cm, function(w) { + var letter = w.search(/\w/); + if (letter == -1) return w; + return w.slice(0, letter) + w.charAt(letter).toUpperCase() + w.slice(letter + 1).toLowerCase(); + }); + }), + "Alt-U": repeated(function(cm) { + operateOnWord(cm, function(w) { return w.toUpperCase(); }); + }), + "Alt-L": repeated(function(cm) { + operateOnWord(cm, function(w) { return w.toLowerCase(); }); + }), + + "Alt-;": "toggleComment", + + "Ctrl-/": repeated("undo"), "Shift-Ctrl--": repeated("undo"), + "Ctrl-Z": repeated("undo"), "Cmd-Z": repeated("undo"), + "Shift-Alt-,": "goDocStart", "Shift-Alt-.": "goDocEnd", + "Ctrl-S": "findPersistentNext", "Ctrl-R": "findPersistentPrev", "Ctrl-G": quit, "Shift-Alt-5": "replace", + "Alt-/": "autocomplete", + "Enter": "newlineAndIndent", + "Ctrl-J": repeated(function(cm) { cm.replaceSelection("\n", "end"); }), + "Tab": "indentAuto", + + "Alt-G G": function(cm) { + var prefix = getPrefix(cm, true); + if (prefix != null && prefix > 0) return cm.setCursor(prefix - 1); + + getInput(cm, "Goto line", function(str) { + var num; + if (str && !isNaN(num = Number(str)) && num == (num|0) && num > 0) + cm.setCursor(num - 1); + }); + }, + + "Ctrl-X Tab": function(cm) { + cm.indentSelection(getPrefix(cm, true) || cm.getOption("indentUnit")); + }, + "Ctrl-X Ctrl-X": function(cm) { + cm.setSelection(cm.getCursor("head"), cm.getCursor("anchor")); + }, + "Ctrl-X Ctrl-S": "save", + "Ctrl-X Ctrl-W": "save", + "Ctrl-X S": "saveAll", + "Ctrl-X F": "open", + "Ctrl-X U": repeated("undo"), + "Ctrl-X K": "close", + "Ctrl-X Delete": function(cm) { kill(cm, cm.getCursor(), bySentence(cm, cm.getCursor(), 1), true); }, + "Ctrl-X H": "selectAll", + + "Ctrl-Q Tab": repeated("insertTab"), + "Ctrl-U": addPrefixMap + }); + + var prefixMap = {"Ctrl-G": clearPrefix}; + function regPrefix(d) { + prefixMap[d] = function(cm) { addPrefix(cm, d); }; + keyMap["Ctrl-" + d] = function(cm) { addPrefix(cm, d); }; + prefixPreservingKeys["Ctrl-" + d] = true; + } + for (var i = 0; i < 10; ++i) regPrefix(String(i)); + regPrefix("-"); +}); diff --git a/global/codemirror/keymap/sublime.js b/global/codemirror/keymap/sublime.js new file mode 100644 index 00000000..98266e44 --- /dev/null +++ b/global/codemirror/keymap/sublime.js @@ -0,0 +1,613 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// A rough approximation of Sublime Text's keybindings +// Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../lib/codemirror"), require("../addon/search/searchcursor"), require("../addon/edit/matchbrackets")); + else if (typeof define == "function" && define.amd) // AMD + define(["../lib/codemirror", "../addon/search/searchcursor", "../addon/edit/matchbrackets"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + var map = CodeMirror.keyMap.sublime = {fallthrough: "default"}; + var cmds = CodeMirror.commands; + var Pos = CodeMirror.Pos; + var mac = CodeMirror.keyMap["default"] == CodeMirror.keyMap.macDefault; + var ctrl = mac ? "Cmd-" : "Ctrl-"; + + // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that. + function findPosSubword(doc, start, dir) { + if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1)); + var line = doc.getLine(start.line); + if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0)); + var state = "start", type; + for (var pos = start.ch, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) { + var next = line.charAt(dir < 0 ? pos - 1 : pos); + var cat = next != "_" && CodeMirror.isWordChar(next) ? "w" : "o"; + if (cat == "w" && next.toUpperCase() == next) cat = "W"; + if (state == "start") { + if (cat != "o") { state = "in"; type = cat; } + } else if (state == "in") { + if (type != cat) { + if (type == "w" && cat == "W" && dir < 0) pos--; + if (type == "W" && cat == "w" && dir > 0) { type = "w"; continue; } + break; + } + } + } + return Pos(start.line, pos); + } + + function moveSubword(cm, dir) { + cm.extendSelectionsBy(function(range) { + if (cm.display.shift || cm.doc.extend || range.empty()) + return findPosSubword(cm.doc, range.head, dir); + else + return dir < 0 ? range.from() : range.to(); + }); + } + + var goSubwordCombo = mac ? "Ctrl-" : "Alt-"; + + cmds[map[goSubwordCombo + "Left"] = "goSubwordLeft"] = function(cm) { moveSubword(cm, -1); }; + cmds[map[goSubwordCombo + "Right"] = "goSubwordRight"] = function(cm) { moveSubword(cm, 1); }; + + if (mac) map["Cmd-Left"] = "goLineStartSmart"; + + var scrollLineCombo = mac ? "Ctrl-Alt-" : "Ctrl-"; + + cmds[map[scrollLineCombo + "Up"] = "scrollLineUp"] = function(cm) { + var info = cm.getScrollInfo(); + if (!cm.somethingSelected()) { + var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, "local"); + if (cm.getCursor().line >= visibleBottomLine) + cm.execCommand("goLineUp"); + } + cm.scrollTo(null, info.top - cm.defaultTextHeight()); + }; + cmds[map[scrollLineCombo + "Down"] = "scrollLineDown"] = function(cm) { + var info = cm.getScrollInfo(); + if (!cm.somethingSelected()) { + var visibleTopLine = cm.lineAtHeight(info.top, "local")+1; + if (cm.getCursor().line <= visibleTopLine) + cm.execCommand("goLineDown"); + } + cm.scrollTo(null, info.top + cm.defaultTextHeight()); + }; + + cmds[map["Shift-" + ctrl + "L"] = "splitSelectionByLine"] = function(cm) { + var ranges = cm.listSelections(), lineRanges = []; + for (var i = 0; i < ranges.length; i++) { + var from = ranges[i].from(), to = ranges[i].to(); + for (var line = from.line; line <= to.line; ++line) + if (!(to.line > from.line && line == to.line && to.ch == 0)) + lineRanges.push({anchor: line == from.line ? from : Pos(line, 0), + head: line == to.line ? to : Pos(line)}); + } + cm.setSelections(lineRanges, 0); + }; + + map["Shift-Tab"] = "indentLess"; + + cmds[map["Esc"] = "singleSelectionTop"] = function(cm) { + var range = cm.listSelections()[0]; + cm.setSelection(range.anchor, range.head, {scroll: false}); + }; + + cmds[map[ctrl + "L"] = "selectLine"] = function(cm) { + var ranges = cm.listSelections(), extended = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + extended.push({anchor: Pos(range.from().line, 0), + head: Pos(range.to().line + 1, 0)}); + } + cm.setSelections(extended); + }; + + map["Shift-Ctrl-K"] = "deleteLine"; + + function insertLine(cm, above) { + if (cm.isReadOnly()) return CodeMirror.Pass + cm.operation(function() { + var len = cm.listSelections().length, newSelection = [], last = -1; + for (var i = 0; i < len; i++) { + var head = cm.listSelections()[i].head; + if (head.line <= last) continue; + var at = Pos(head.line + (above ? 0 : 1), 0); + cm.replaceRange("\n", at, null, "+insertLine"); + cm.indentLine(at.line, null, true); + newSelection.push({head: at, anchor: at}); + last = head.line + 1; + } + cm.setSelections(newSelection); + }); + cm.execCommand("indentAuto"); + } + + cmds[map[ctrl + "Enter"] = "insertLineAfter"] = function(cm) { return insertLine(cm, false); }; + + cmds[map["Shift-" + ctrl + "Enter"] = "insertLineBefore"] = function(cm) { return insertLine(cm, true); }; + + function wordAt(cm, pos) { + var start = pos.ch, end = start, line = cm.getLine(pos.line); + while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start; + while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end; + return {from: Pos(pos.line, start), to: Pos(pos.line, end), word: line.slice(start, end)}; + } + + cmds[map[ctrl + "D"] = "selectNextOccurrence"] = function(cm) { + var from = cm.getCursor("from"), to = cm.getCursor("to"); + var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel; + if (CodeMirror.cmpPos(from, to) == 0) { + var word = wordAt(cm, from); + if (!word.word) return; + cm.setSelection(word.from, word.to); + fullWord = true; + } else { + var text = cm.getRange(from, to); + var query = fullWord ? new RegExp("\\b" + text + "\\b") : text; + var cur = cm.getSearchCursor(query, to); + var found = cur.findNext(); + if (!found) { + cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0)); + found = cur.findNext(); + } + if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) + return CodeMirror.Pass + cm.addSelection(cur.from(), cur.to()); + } + if (fullWord) + cm.state.sublimeFindFullWord = cm.doc.sel; + }; + + function addCursorToSelection(cm, dir) { + var ranges = cm.listSelections(), newRanges = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + var newAnchor = cm.findPosV(range.anchor, dir, "line"); + var newHead = cm.findPosV(range.head, dir, "line"); + var newRange = {anchor: newAnchor, head: newHead}; + newRanges.push(range); + newRanges.push(newRange); + } + cm.setSelections(newRanges); + } + + var addCursorToLineCombo = mac ? "Shift-Cmd" : 'Alt-Ctrl'; + cmds[map[addCursorToLineCombo + "Up"] = "addCursorToPrevLine"] = function(cm) { addCursorToSelection(cm, -1); }; + cmds[map[addCursorToLineCombo + "Down"] = "addCursorToNextLine"] = function(cm) { addCursorToSelection(cm, 1); }; + + function isSelectedRange(ranges, from, to) { + for (var i = 0; i < ranges.length; i++) + if (ranges[i].from() == from && ranges[i].to() == to) return true + return false + } + + var mirror = "(){}[]"; + function selectBetweenBrackets(cm) { + var ranges = cm.listSelections(), newRanges = [] + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i], pos = range.head, opening = cm.scanForBracket(pos, -1); + if (!opening) return false; + for (;;) { + var closing = cm.scanForBracket(pos, 1); + if (!closing) return false; + if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) { + newRanges.push({anchor: Pos(opening.pos.line, opening.pos.ch + 1), + head: closing.pos}); + break; + } + pos = Pos(closing.pos.line, closing.pos.ch + 1); + } + } + cm.setSelections(newRanges); + return true; + } + + cmds[map["Shift-" + ctrl + "Space"] = "selectScope"] = function(cm) { + selectBetweenBrackets(cm) || cm.execCommand("selectAll"); + }; + cmds[map["Shift-" + ctrl + "M"] = "selectBetweenBrackets"] = function(cm) { + if (!selectBetweenBrackets(cm)) return CodeMirror.Pass; + }; + + cmds[map[ctrl + "M"] = "goToBracket"] = function(cm) { + cm.extendSelectionsBy(function(range) { + var next = cm.scanForBracket(range.head, 1); + if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos; + var prev = cm.scanForBracket(range.head, -1); + return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head; + }); + }; + + var swapLineCombo = mac ? "Cmd-Ctrl-" : "Shift-Ctrl-"; + + cmds[map[swapLineCombo + "Up"] = "swapLineUp"] = function(cm) { + if (cm.isReadOnly()) return CodeMirror.Pass + var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine() - 1, newSels = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i], from = range.from().line - 1, to = range.to().line; + newSels.push({anchor: Pos(range.anchor.line - 1, range.anchor.ch), + head: Pos(range.head.line - 1, range.head.ch)}); + if (range.to().ch == 0 && !range.empty()) --to; + if (from > at) linesToMove.push(from, to); + else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to; + at = to; + } + cm.operation(function() { + for (var i = 0; i < linesToMove.length; i += 2) { + var from = linesToMove[i], to = linesToMove[i + 1]; + var line = cm.getLine(from); + cm.replaceRange("", Pos(from, 0), Pos(from + 1, 0), "+swapLine"); + if (to > cm.lastLine()) + cm.replaceRange("\n" + line, Pos(cm.lastLine()), null, "+swapLine"); + else + cm.replaceRange(line + "\n", Pos(to, 0), null, "+swapLine"); + } + cm.setSelections(newSels); + cm.scrollIntoView(); + }); + }; + + cmds[map[swapLineCombo + "Down"] = "swapLineDown"] = function(cm) { + if (cm.isReadOnly()) return CodeMirror.Pass + var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine() + 1; + for (var i = ranges.length - 1; i >= 0; i--) { + var range = ranges[i], from = range.to().line + 1, to = range.from().line; + if (range.to().ch == 0 && !range.empty()) from--; + if (from < at) linesToMove.push(from, to); + else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to; + at = to; + } + cm.operation(function() { + for (var i = linesToMove.length - 2; i >= 0; i -= 2) { + var from = linesToMove[i], to = linesToMove[i + 1]; + var line = cm.getLine(from); + if (from == cm.lastLine()) + cm.replaceRange("", Pos(from - 1), Pos(from), "+swapLine"); + else + cm.replaceRange("", Pos(from, 0), Pos(from + 1, 0), "+swapLine"); + cm.replaceRange(line + "\n", Pos(to, 0), null, "+swapLine"); + } + cm.scrollIntoView(); + }); + }; + + cmds[map[ctrl + "/"] = "toggleCommentIndented"] = function(cm) { + cm.toggleComment({ indent: true }); + } + + cmds[map[ctrl + "J"] = "joinLines"] = function(cm) { + var ranges = cm.listSelections(), joined = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i], from = range.from(); + var start = from.line, end = range.to().line; + while (i < ranges.length - 1 && ranges[i + 1].from().line == end) + end = ranges[++i].to().line; + joined.push({start: start, end: end, anchor: !range.empty() && from}); + } + cm.operation(function() { + var offset = 0, ranges = []; + for (var i = 0; i < joined.length; i++) { + var obj = joined[i]; + var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch), head; + for (var line = obj.start; line <= obj.end; line++) { + var actual = line - offset; + if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1); + if (actual < cm.lastLine()) { + cm.replaceRange(" ", Pos(actual), Pos(actual + 1, /^\s*/.exec(cm.getLine(actual + 1))[0].length)); + ++offset; + } + } + ranges.push({anchor: anchor || head, head: head}); + } + cm.setSelections(ranges, 0); + }); + }; + + cmds[map["Shift-" + ctrl + "D"] = "duplicateLine"] = function(cm) { + cm.operation(function() { + var rangeCount = cm.listSelections().length; + for (var i = 0; i < rangeCount; i++) { + var range = cm.listSelections()[i]; + if (range.empty()) + cm.replaceRange(cm.getLine(range.head.line) + "\n", Pos(range.head.line, 0)); + else + cm.replaceRange(cm.getRange(range.from(), range.to()), range.from()); + } + cm.scrollIntoView(); + }); + }; + + if (!mac) map[ctrl + "T"] = "transposeChars"; + + function sortLines(cm, caseSensitive) { + if (cm.isReadOnly()) return CodeMirror.Pass + var ranges = cm.listSelections(), toSort = [], selected; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (range.empty()) continue; + var from = range.from().line, to = range.to().line; + while (i < ranges.length - 1 && ranges[i + 1].from().line == to) + to = ranges[++i].to().line; + if (!ranges[i].to().ch) to--; + toSort.push(from, to); + } + if (toSort.length) selected = true; + else toSort.push(cm.firstLine(), cm.lastLine()); + + cm.operation(function() { + var ranges = []; + for (var i = 0; i < toSort.length; i += 2) { + var from = toSort[i], to = toSort[i + 1]; + var start = Pos(from, 0), end = Pos(to); + var lines = cm.getRange(start, end, false); + if (caseSensitive) + lines.sort(); + else + lines.sort(function(a, b) { + var au = a.toUpperCase(), bu = b.toUpperCase(); + if (au != bu) { a = au; b = bu; } + return a < b ? -1 : a == b ? 0 : 1; + }); + cm.replaceRange(lines, start, end); + if (selected) ranges.push({anchor: start, head: Pos(to + 1, 0)}); + } + if (selected) cm.setSelections(ranges, 0); + }); + } + + cmds[map["F9"] = "sortLines"] = function(cm) { sortLines(cm, true); }; + cmds[map[ctrl + "F9"] = "sortLinesInsensitive"] = function(cm) { sortLines(cm, false); }; + + cmds[map["F2"] = "nextBookmark"] = function(cm) { + var marks = cm.state.sublimeBookmarks; + if (marks) while (marks.length) { + var current = marks.shift(); + var found = current.find(); + if (found) { + marks.push(current); + return cm.setSelection(found.from, found.to); + } + } + }; + + cmds[map["Shift-F2"] = "prevBookmark"] = function(cm) { + var marks = cm.state.sublimeBookmarks; + if (marks) while (marks.length) { + marks.unshift(marks.pop()); + var found = marks[marks.length - 1].find(); + if (!found) + marks.pop(); + else + return cm.setSelection(found.from, found.to); + } + }; + + cmds[map[ctrl + "F2"] = "toggleBookmark"] = function(cm) { + var ranges = cm.listSelections(); + var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []); + for (var i = 0; i < ranges.length; i++) { + var from = ranges[i].from(), to = ranges[i].to(); + var found = cm.findMarks(from, to); + for (var j = 0; j < found.length; j++) { + if (found[j].sublimeBookmark) { + found[j].clear(); + for (var k = 0; k < marks.length; k++) + if (marks[k] == found[j]) + marks.splice(k--, 1); + break; + } + } + if (j == found.length) + marks.push(cm.markText(from, to, {sublimeBookmark: true, clearWhenEmpty: false})); + } + }; + + cmds[map["Shift-" + ctrl + "F2"] = "clearBookmarks"] = function(cm) { + var marks = cm.state.sublimeBookmarks; + if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear(); + marks.length = 0; + }; + + cmds[map["Alt-F2"] = "selectBookmarks"] = function(cm) { + var marks = cm.state.sublimeBookmarks, ranges = []; + if (marks) for (var i = 0; i < marks.length; i++) { + var found = marks[i].find(); + if (!found) + marks.splice(i--, 0); + else + ranges.push({anchor: found.from, head: found.to}); + } + if (ranges.length) + cm.setSelections(ranges, 0); + }; + + map["Alt-Q"] = "wrapLines"; + + var cK = ctrl + "K "; + + function modifyWordOrSelection(cm, mod) { + cm.operation(function() { + var ranges = cm.listSelections(), indices = [], replacements = []; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (range.empty()) { indices.push(i); replacements.push(""); } + else replacements.push(mod(cm.getRange(range.from(), range.to()))); + } + cm.replaceSelections(replacements, "around", "case"); + for (var i = indices.length - 1, at; i >= 0; i--) { + var range = ranges[indices[i]]; + if (at && CodeMirror.cmpPos(range.head, at) > 0) continue; + var word = wordAt(cm, range.head); + at = word.from; + cm.replaceRange(mod(word.word), word.from, word.to); + } + }); + } + + map[cK + ctrl + "Backspace"] = "delLineLeft"; + + cmds[map["Backspace"] = "smartBackspace"] = function(cm) { + if (cm.somethingSelected()) return CodeMirror.Pass; + + cm.operation(function() { + var cursors = cm.listSelections(); + var indentUnit = cm.getOption("indentUnit"); + + for (var i = cursors.length - 1; i >= 0; i--) { + var cursor = cursors[i].head; + var toStartOfLine = cm.getRange({line: cursor.line, ch: 0}, cursor); + var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption("tabSize")); + + // Delete by one character by default + var deletePos = cm.findPosH(cursor, -1, "char", false); + + if (toStartOfLine && !/\S/.test(toStartOfLine) && column % indentUnit == 0) { + var prevIndent = new Pos(cursor.line, + CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit)); + + // Smart delete only if we found a valid prevIndent location + if (prevIndent.ch != cursor.ch) deletePos = prevIndent; + } + + cm.replaceRange("", deletePos, cursor, "+delete"); + } + }); + }; + + cmds[map[cK + ctrl + "K"] = "delLineRight"] = function(cm) { + cm.operation(function() { + var ranges = cm.listSelections(); + for (var i = ranges.length - 1; i >= 0; i--) + cm.replaceRange("", ranges[i].anchor, Pos(ranges[i].to().line), "+delete"); + cm.scrollIntoView(); + }); + }; + + cmds[map[cK + ctrl + "U"] = "upcaseAtCursor"] = function(cm) { + modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); }); + }; + cmds[map[cK + ctrl + "L"] = "downcaseAtCursor"] = function(cm) { + modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); }); + }; + + cmds[map[cK + ctrl + "Space"] = "setSublimeMark"] = function(cm) { + if (cm.state.sublimeMark) cm.state.sublimeMark.clear(); + cm.state.sublimeMark = cm.setBookmark(cm.getCursor()); + }; + cmds[map[cK + ctrl + "A"] = "selectToSublimeMark"] = function(cm) { + var found = cm.state.sublimeMark && cm.state.sublimeMark.find(); + if (found) cm.setSelection(cm.getCursor(), found); + }; + cmds[map[cK + ctrl + "W"] = "deleteToSublimeMark"] = function(cm) { + var found = cm.state.sublimeMark && cm.state.sublimeMark.find(); + if (found) { + var from = cm.getCursor(), to = found; + if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from; from = tmp; } + cm.state.sublimeKilled = cm.getRange(from, to); + cm.replaceRange("", from, to); + } + }; + cmds[map[cK + ctrl + "X"] = "swapWithSublimeMark"] = function(cm) { + var found = cm.state.sublimeMark && cm.state.sublimeMark.find(); + if (found) { + cm.state.sublimeMark.clear(); + cm.state.sublimeMark = cm.setBookmark(cm.getCursor()); + cm.setCursor(found); + } + }; + cmds[map[cK + ctrl + "Y"] = "sublimeYank"] = function(cm) { + if (cm.state.sublimeKilled != null) + cm.replaceSelection(cm.state.sublimeKilled, null, "paste"); + }; + + map[cK + ctrl + "G"] = "clearBookmarks"; + cmds[map[cK + ctrl + "C"] = "showInCenter"] = function(cm) { + var pos = cm.cursorCoords(null, "local"); + cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2); + }; + + var selectLinesCombo = mac ? "Ctrl-Shift-" : "Ctrl-Alt-"; + cmds[map[selectLinesCombo + "Up"] = "selectLinesUpward"] = function(cm) { + cm.operation(function() { + var ranges = cm.listSelections(); + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (range.head.line > cm.firstLine()) + cm.addSelection(Pos(range.head.line - 1, range.head.ch)); + } + }); + }; + cmds[map[selectLinesCombo + "Down"] = "selectLinesDownward"] = function(cm) { + cm.operation(function() { + var ranges = cm.listSelections(); + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (range.head.line < cm.lastLine()) + cm.addSelection(Pos(range.head.line + 1, range.head.ch)); + } + }); + }; + + function getTarget(cm) { + var from = cm.getCursor("from"), to = cm.getCursor("to"); + if (CodeMirror.cmpPos(from, to) == 0) { + var word = wordAt(cm, from); + if (!word.word) return; + from = word.from; + to = word.to; + } + return {from: from, to: to, query: cm.getRange(from, to), word: word}; + } + + function findAndGoTo(cm, forward) { + var target = getTarget(cm); + if (!target) return; + var query = target.query; + var cur = cm.getSearchCursor(query, forward ? target.to : target.from); + + if (forward ? cur.findNext() : cur.findPrevious()) { + cm.setSelection(cur.from(), cur.to()); + } else { + cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0) + : cm.clipPos(Pos(cm.lastLine()))); + if (forward ? cur.findNext() : cur.findPrevious()) + cm.setSelection(cur.from(), cur.to()); + else if (target.word) + cm.setSelection(target.from, target.to); + } + }; + cmds[map[ctrl + "F3"] = "findUnder"] = function(cm) { findAndGoTo(cm, true); }; + cmds[map["Shift-" + ctrl + "F3"] = "findUnderPrevious"] = function(cm) { findAndGoTo(cm,false); }; + cmds[map["Alt-F3"] = "findAllUnder"] = function(cm) { + var target = getTarget(cm); + if (!target) return; + var cur = cm.getSearchCursor(target.query); + var matches = []; + var primaryIndex = -1; + while (cur.findNext()) { + matches.push({anchor: cur.from(), head: cur.to()}); + if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch) + primaryIndex++; + } + cm.setSelections(matches, primaryIndex); + }; + + map["Shift-" + ctrl + "["] = "fold"; + map["Shift-" + ctrl + "]"] = "unfold"; + map[cK + ctrl + "0"] = map[cK + ctrl + "J"] = "unfoldAll"; + + map[ctrl + "I"] = "findIncremental"; + map["Shift-" + ctrl + "I"] = "findIncrementalReverse"; + map[ctrl + "H"] = "replace"; + map["F3"] = "findNext"; + map["Shift-F3"] = "findPrev"; + + CodeMirror.normalizeKeyMap(map); +}); diff --git a/global/codemirror/keymap/vim.js b/global/codemirror/keymap/vim.js new file mode 100644 index 00000000..d8a2d60d --- /dev/null +++ b/global/codemirror/keymap/vim.js @@ -0,0 +1,5154 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/** + * Supported keybindings: + * Too many to list. Refer to defaultKeyMap below. + * + * Supported Ex commands: + * Refer to defaultExCommandMap below. + * + * Registers: unnamed, -, a-z, A-Z, 0-9 + * (Does not respect the special case for number registers when delete + * operator is made with these commands: %, (, ), , /, ?, n, N, {, } ) + * TODO: Implement the remaining registers. + * + * Marks: a-z, A-Z, and 0-9 + * TODO: Implement the remaining special marks. They have more complex + * behavior. + * + * Events: + * 'vim-mode-change' - raised on the editor anytime the current mode changes, + * Event object: {mode: "visual", subMode: "linewise"} + * + * Code structure: + * 1. Default keymap + * 2. Variable declarations and short basic helpers + * 3. Instance (External API) implementation + * 4. Internal state tracking objects (input state, counter) implementation + * and instantiation + * 5. Key handler (the main command dispatcher) implementation + * 6. Motion, operator, and action implementations + * 7. Helper functions for the key handler, motions, operators, and actions + * 8. Set up Vim to work as a keymap for CodeMirror. + * 9. Ex command implementations. + */ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../lib/codemirror"), require("../addon/search/searchcursor"), require("../addon/dialog/dialog"), require("../addon/edit/matchbrackets.js")); + else if (typeof define == "function" && define.amd) // AMD + define(["../lib/codemirror", "../addon/search/searchcursor", "../addon/dialog/dialog", "../addon/edit/matchbrackets"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + 'use strict'; + + var defaultKeymap = [ + // Key to key mapping. This goes first to make it possible to override + // existing mappings. + { keys: '', type: 'keyToKey', toKeys: 'h' }, + { keys: '', type: 'keyToKey', toKeys: 'l' }, + { keys: '', type: 'keyToKey', toKeys: 'k' }, + { keys: '', type: 'keyToKey', toKeys: 'j' }, + { keys: '', type: 'keyToKey', toKeys: 'l' }, + { keys: '', type: 'keyToKey', toKeys: 'h', context: 'normal'}, + { keys: '', type: 'keyToKey', toKeys: 'W' }, + { keys: '', type: 'keyToKey', toKeys: 'B', context: 'normal' }, + { keys: '', type: 'keyToKey', toKeys: 'w' }, + { keys: '', type: 'keyToKey', toKeys: 'b', context: 'normal' }, + { keys: '', type: 'keyToKey', toKeys: 'j' }, + { keys: '', type: 'keyToKey', toKeys: 'k' }, + { keys: '', type: 'keyToKey', toKeys: '' }, + { keys: '', type: 'keyToKey', toKeys: '' }, + { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, + { keys: '', type: 'keyToKey', toKeys: '', context: 'insert' }, + { keys: 's', type: 'keyToKey', toKeys: 'cl', context: 'normal' }, + { keys: 's', type: 'keyToKey', toKeys: 'c', context: 'visual'}, + { keys: 'S', type: 'keyToKey', toKeys: 'cc', context: 'normal' }, + { keys: 'S', type: 'keyToKey', toKeys: 'VdO', context: 'visual' }, + { keys: '', type: 'keyToKey', toKeys: '0' }, + { keys: '', type: 'keyToKey', toKeys: '$' }, + { keys: '', type: 'keyToKey', toKeys: '' }, + { keys: '', type: 'keyToKey', toKeys: '' }, + { keys: '', type: 'keyToKey', toKeys: 'j^', context: 'normal' }, + { keys: '', type: 'action', action: 'toggleOverwrite', context: 'insert' }, + // Motions + { keys: 'H', type: 'motion', motion: 'moveToTopLine', motionArgs: { linewise: true, toJumplist: true }}, + { keys: 'M', type: 'motion', motion: 'moveToMiddleLine', motionArgs: { linewise: true, toJumplist: true }}, + { keys: 'L', type: 'motion', motion: 'moveToBottomLine', motionArgs: { linewise: true, toJumplist: true }}, + { keys: 'h', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: false }}, + { keys: 'l', type: 'motion', motion: 'moveByCharacters', motionArgs: { forward: true }}, + { keys: 'j', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, linewise: true }}, + { keys: 'k', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, linewise: true }}, + { keys: 'gj', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: true }}, + { keys: 'gk', type: 'motion', motion: 'moveByDisplayLines', motionArgs: { forward: false }}, + { keys: 'w', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false }}, + { keys: 'W', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: false, bigWord: true }}, + { keys: 'e', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, inclusive: true }}, + { keys: 'E', type: 'motion', motion: 'moveByWords', motionArgs: { forward: true, wordEnd: true, bigWord: true, inclusive: true }}, + { keys: 'b', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }}, + { keys: 'B', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false, bigWord: true }}, + { keys: 'ge', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, inclusive: true }}, + { keys: 'gE', type: 'motion', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: true, bigWord: true, inclusive: true }}, + { keys: '{', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: false, toJumplist: true }}, + { keys: '}', type: 'motion', motion: 'moveByParagraph', motionArgs: { forward: true, toJumplist: true }}, + { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: true }}, + { keys: '', type: 'motion', motion: 'moveByPage', motionArgs: { forward: false }}, + { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: true, explicitRepeat: true }}, + { keys: '', type: 'motion', motion: 'moveByScroll', motionArgs: { forward: false, explicitRepeat: true }}, + { keys: 'gg', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: false, explicitRepeat: true, linewise: true, toJumplist: true }}, + { keys: 'G', type: 'motion', motion: 'moveToLineOrEdgeOfDocument', motionArgs: { forward: true, explicitRepeat: true, linewise: true, toJumplist: true }}, + { keys: '0', type: 'motion', motion: 'moveToStartOfLine' }, + { keys: '^', type: 'motion', motion: 'moveToFirstNonWhiteSpaceCharacter' }, + { keys: '+', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true }}, + { keys: '-', type: 'motion', motion: 'moveByLines', motionArgs: { forward: false, toFirstChar:true }}, + { keys: '_', type: 'motion', motion: 'moveByLines', motionArgs: { forward: true, toFirstChar:true, repeatOffset:-1 }}, + { keys: '$', type: 'motion', motion: 'moveToEol', motionArgs: { inclusive: true }}, + { keys: '%', type: 'motion', motion: 'moveToMatchedSymbol', motionArgs: { inclusive: true, toJumplist: true }}, + { keys: 'f', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: true , inclusive: true }}, + { keys: 'F', type: 'motion', motion: 'moveToCharacter', motionArgs: { forward: false }}, + { keys: 't', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: true, inclusive: true }}, + { keys: 'T', type: 'motion', motion: 'moveTillCharacter', motionArgs: { forward: false }}, + { keys: ';', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: true }}, + { keys: ',', type: 'motion', motion: 'repeatLastCharacterSearch', motionArgs: { forward: false }}, + { keys: '\'', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true, linewise: true}}, + { keys: '`', type: 'motion', motion: 'goToMark', motionArgs: {toJumplist: true}}, + { keys: ']`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true } }, + { keys: '[`', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false } }, + { keys: ']\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: true, linewise: true } }, + { keys: '[\'', type: 'motion', motion: 'jumpToMark', motionArgs: { forward: false, linewise: true } }, + // the next two aren't motions but must come before more general motion declarations + { keys: ']p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true, matchIndent: true}}, + { keys: '[p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true, matchIndent: true}}, + { keys: ']', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: true, toJumplist: true}}, + { keys: '[', type: 'motion', motion: 'moveToSymbol', motionArgs: { forward: false, toJumplist: true}}, + { keys: '|', type: 'motion', motion: 'moveToColumn'}, + { keys: 'o', type: 'motion', motion: 'moveToOtherHighlightedEnd', context:'visual'}, + { keys: 'O', type: 'motion', motion: 'moveToOtherHighlightedEnd', motionArgs: {sameLine: true}, context:'visual'}, + // Operators + { keys: 'd', type: 'operator', operator: 'delete' }, + { keys: 'y', type: 'operator', operator: 'yank' }, + { keys: 'c', type: 'operator', operator: 'change' }, + { keys: '>', type: 'operator', operator: 'indent', operatorArgs: { indentRight: true }}, + { keys: '<', type: 'operator', operator: 'indent', operatorArgs: { indentRight: false }}, + { keys: 'g~', type: 'operator', operator: 'changeCase' }, + { keys: 'gu', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, isEdit: true }, + { keys: 'gU', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, isEdit: true }, + { keys: 'n', type: 'motion', motion: 'findNext', motionArgs: { forward: true, toJumplist: true }}, + { keys: 'N', type: 'motion', motion: 'findNext', motionArgs: { forward: false, toJumplist: true }}, + // Operator-Motion dual commands + { keys: 'x', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorMotionArgs: { visualLine: false }}, + { keys: 'X', type: 'operatorMotion', operator: 'delete', motion: 'moveByCharacters', motionArgs: { forward: false }, operatorMotionArgs: { visualLine: true }}, + { keys: 'D', type: 'operatorMotion', operator: 'delete', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, + { keys: 'D', type: 'operator', operator: 'delete', operatorArgs: { linewise: true }, context: 'visual'}, + { keys: 'Y', type: 'operatorMotion', operator: 'yank', motion: 'expandToLine', motionArgs: { linewise: true }, context: 'normal'}, + { keys: 'Y', type: 'operator', operator: 'yank', operatorArgs: { linewise: true }, context: 'visual'}, + { keys: 'C', type: 'operatorMotion', operator: 'change', motion: 'moveToEol', motionArgs: { inclusive: true }, context: 'normal'}, + { keys: 'C', type: 'operator', operator: 'change', operatorArgs: { linewise: true }, context: 'visual'}, + { keys: '~', type: 'operatorMotion', operator: 'changeCase', motion: 'moveByCharacters', motionArgs: { forward: true }, operatorArgs: { shouldMoveCursor: true }, context: 'normal'}, + { keys: '~', type: 'operator', operator: 'changeCase', context: 'visual'}, + { keys: '', type: 'operatorMotion', operator: 'delete', motion: 'moveByWords', motionArgs: { forward: false, wordEnd: false }, context: 'insert' }, + // Actions + { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: true }}, + { keys: '', type: 'action', action: 'jumpListWalk', actionArgs: { forward: false }}, + { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: true, linewise: true }}, + { keys: '', type: 'action', action: 'scroll', actionArgs: { forward: false, linewise: true }}, + { keys: 'a', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'charAfter' }, context: 'normal' }, + { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'eol' }, context: 'normal' }, + { keys: 'A', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'endOfSelectedArea' }, context: 'visual' }, + { keys: 'i', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'inplace' }, context: 'normal' }, + { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'firstNonBlank'}, context: 'normal' }, + { keys: 'I', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { insertAt: 'startOfSelectedArea' }, context: 'visual' }, + { keys: 'o', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: true }, context: 'normal' }, + { keys: 'O', type: 'action', action: 'newLineAndEnterInsertMode', isEdit: true, interlaceInsertRepeat: true, actionArgs: { after: false }, context: 'normal' }, + { keys: 'v', type: 'action', action: 'toggleVisualMode' }, + { keys: 'V', type: 'action', action: 'toggleVisualMode', actionArgs: { linewise: true }}, + { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, + { keys: '', type: 'action', action: 'toggleVisualMode', actionArgs: { blockwise: true }}, + { keys: 'gv', type: 'action', action: 'reselectLastSelection' }, + { keys: 'J', type: 'action', action: 'joinLines', isEdit: true }, + { keys: 'p', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: true, isEdit: true }}, + { keys: 'P', type: 'action', action: 'paste', isEdit: true, actionArgs: { after: false, isEdit: true }}, + { keys: 'r', type: 'action', action: 'replace', isEdit: true }, + { keys: '@', type: 'action', action: 'replayMacro' }, + { keys: 'q', type: 'action', action: 'enterMacroRecordMode' }, + // Handle Replace-mode as a special case of insert mode. + { keys: 'R', type: 'action', action: 'enterInsertMode', isEdit: true, actionArgs: { replace: true }}, + { keys: 'u', type: 'action', action: 'undo', context: 'normal' }, + { keys: 'u', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: true}, context: 'visual', isEdit: true }, + { keys: 'U', type: 'operator', operator: 'changeCase', operatorArgs: {toLower: false}, context: 'visual', isEdit: true }, + { keys: '', type: 'action', action: 'redo' }, + { keys: 'm', type: 'action', action: 'setMark' }, + { keys: '"', type: 'action', action: 'setRegister' }, + { keys: 'zz', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }}, + { keys: 'z.', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'center' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, + { keys: 'zt', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }}, + { keys: 'z', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'top' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, + { keys: 'z-', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }}, + { keys: 'zb', type: 'action', action: 'scrollToCursor', actionArgs: { position: 'bottom' }, motion: 'moveToFirstNonWhiteSpaceCharacter' }, + { keys: '.', type: 'action', action: 'repeatLastEdit' }, + { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: true, backtrack: false}}, + { keys: '', type: 'action', action: 'incrementNumberToken', isEdit: true, actionArgs: {increase: false, backtrack: false}}, + { keys: '', type: 'action', action: 'indent', actionArgs: { indentRight: true }, context: 'insert' }, + { keys: '', type: 'action', action: 'indent', actionArgs: { indentRight: false }, context: 'insert' }, + // Text object motions + { keys: 'a', type: 'motion', motion: 'textObjectManipulation' }, + { keys: 'i', type: 'motion', motion: 'textObjectManipulation', motionArgs: { textObjectInner: true }}, + // Search + { keys: '/', type: 'search', searchArgs: { forward: true, querySrc: 'prompt', toJumplist: true }}, + { keys: '?', type: 'search', searchArgs: { forward: false, querySrc: 'prompt', toJumplist: true }}, + { keys: '*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, + { keys: '#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', wholeWordOnly: true, toJumplist: true }}, + { keys: 'g*', type: 'search', searchArgs: { forward: true, querySrc: 'wordUnderCursor', toJumplist: true }}, + { keys: 'g#', type: 'search', searchArgs: { forward: false, querySrc: 'wordUnderCursor', toJumplist: true }}, + // Ex command + { keys: ':', type: 'ex' } + ]; + + /** + * Ex commands + * Care must be taken when adding to the default Ex command map. For any + * pair of commands that have a shared prefix, at least one of their + * shortNames must not match the prefix of the other command. + */ + var defaultExCommandMap = [ + { name: 'colorscheme', shortName: 'colo' }, + { name: 'map' }, + { name: 'imap', shortName: 'im' }, + { name: 'nmap', shortName: 'nm' }, + { name: 'vmap', shortName: 'vm' }, + { name: 'unmap' }, + { name: 'write', shortName: 'w' }, + { name: 'undo', shortName: 'u' }, + { name: 'redo', shortName: 'red' }, + { name: 'set', shortName: 'se' }, + { name: 'set', shortName: 'se' }, + { name: 'setlocal', shortName: 'setl' }, + { name: 'setglobal', shortName: 'setg' }, + { name: 'sort', shortName: 'sor' }, + { name: 'substitute', shortName: 's', possiblyAsync: true }, + { name: 'nohlsearch', shortName: 'noh' }, + { name: 'yank', shortName: 'y' }, + { name: 'delmarks', shortName: 'delm' }, + { name: 'registers', shortName: 'reg', excludeFromCommandHistory: true }, + { name: 'global', shortName: 'g' } + ]; + + var Pos = CodeMirror.Pos; + + var Vim = function() { + function enterVimMode(cm) { + cm.setOption('disableInput', true); + cm.setOption('showCursorWhenSelecting', false); + CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); + cm.on('cursorActivity', onCursorActivity); + maybeInitVimState(cm); + CodeMirror.on(cm.getInputField(), 'paste', getOnPasteFn(cm)); + } + + function leaveVimMode(cm) { + cm.setOption('disableInput', false); + cm.off('cursorActivity', onCursorActivity); + CodeMirror.off(cm.getInputField(), 'paste', getOnPasteFn(cm)); + cm.state.vim = null; + } + + function detachVimMap(cm, next) { + if (this == CodeMirror.keyMap.vim) + CodeMirror.rmClass(cm.getWrapperElement(), "cm-fat-cursor"); + + if (!next || next.attach != attachVimMap) + leaveVimMode(cm); + } + function attachVimMap(cm, prev) { + if (this == CodeMirror.keyMap.vim) + CodeMirror.addClass(cm.getWrapperElement(), "cm-fat-cursor"); + + if (!prev || prev.attach != attachVimMap) + enterVimMode(cm); + } + + // Deprecated, simply setting the keymap works again. + CodeMirror.defineOption('vimMode', false, function(cm, val, prev) { + if (val && cm.getOption("keyMap") != "vim") + cm.setOption("keyMap", "vim"); + else if (!val && prev != CodeMirror.Init && /^vim/.test(cm.getOption("keyMap"))) + cm.setOption("keyMap", "default"); + }); + + function cmKey(key, cm) { + if (!cm) { return undefined; } + if (this[key]) { return this[key]; } + var vimKey = cmKeyToVimKey(key); + if (!vimKey) { + return false; + } + var cmd = CodeMirror.Vim.findKey(cm, vimKey); + if (typeof cmd == 'function') { + CodeMirror.signal(cm, 'vim-keypress', vimKey); + } + return cmd; + } + + var modifiers = {'Shift': 'S', 'Ctrl': 'C', 'Alt': 'A', 'Cmd': 'D', 'Mod': 'A'}; + var specialKeys = {Enter:'CR',Backspace:'BS',Delete:'Del',Insert:'Ins'}; + function cmKeyToVimKey(key) { + if (key.charAt(0) == '\'') { + // Keypress character binding of format "'a'" + return key.charAt(1); + } + var pieces = key.split(/-(?!$)/); + var lastPiece = pieces[pieces.length - 1]; + if (pieces.length == 1 && pieces[0].length == 1) { + // No-modifier bindings use literal character bindings above. Skip. + return false; + } else if (pieces.length == 2 && pieces[0] == 'Shift' && lastPiece.length == 1) { + // Ignore Shift+char bindings as they should be handled by literal character. + return false; + } + var hasCharacter = false; + for (var i = 0; i < pieces.length; i++) { + var piece = pieces[i]; + if (piece in modifiers) { pieces[i] = modifiers[piece]; } + else { hasCharacter = true; } + if (piece in specialKeys) { pieces[i] = specialKeys[piece]; } + } + if (!hasCharacter) { + // Vim does not support modifier only keys. + return false; + } + // TODO: Current bindings expect the character to be lower case, but + // it looks like vim key notation uses upper case. + if (isUpperCase(lastPiece)) { + pieces[pieces.length - 1] = lastPiece.toLowerCase(); + } + return '<' + pieces.join('-') + '>'; + } + + function getOnPasteFn(cm) { + var vim = cm.state.vim; + if (!vim.onPasteFn) { + vim.onPasteFn = function() { + if (!vim.insertMode) { + cm.setCursor(offsetCursor(cm.getCursor(), 0, 1)); + actions.enterInsertMode(cm, {}, vim); + } + }; + } + return vim.onPasteFn; + } + + var numberRegex = /[\d]/; + var wordCharTest = [CodeMirror.isWordChar, function(ch) { + return ch && !CodeMirror.isWordChar(ch) && !/\s/.test(ch); + }], bigWordCharTest = [function(ch) { + return /\S/.test(ch); + }]; + function makeKeyRange(start, size) { + var keys = []; + for (var i = start; i < start + size; i++) { + keys.push(String.fromCharCode(i)); + } + return keys; + } + var upperCaseAlphabet = makeKeyRange(65, 26); + var lowerCaseAlphabet = makeKeyRange(97, 26); + var numbers = makeKeyRange(48, 10); + var validMarks = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['<', '>']); + var validRegisters = [].concat(upperCaseAlphabet, lowerCaseAlphabet, numbers, ['-', '"', '.', ':', '/']); + + function isLine(cm, line) { + return line >= cm.firstLine() && line <= cm.lastLine(); + } + function isLowerCase(k) { + return (/^[a-z]$/).test(k); + } + function isMatchableSymbol(k) { + return '()[]{}'.indexOf(k) != -1; + } + function isNumber(k) { + return numberRegex.test(k); + } + function isUpperCase(k) { + return (/^[A-Z]$/).test(k); + } + function isWhiteSpaceString(k) { + return (/^\s*$/).test(k); + } + function inArray(val, arr) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] == val) { + return true; + } + } + return false; + } + + var options = {}; + function defineOption(name, defaultValue, type, aliases, callback) { + if (defaultValue === undefined && !callback) { + throw Error('defaultValue is required unless callback is provided'); + } + if (!type) { type = 'string'; } + options[name] = { + type: type, + defaultValue: defaultValue, + callback: callback + }; + if (aliases) { + for (var i = 0; i < aliases.length; i++) { + options[aliases[i]] = options[name]; + } + } + if (defaultValue) { + setOption(name, defaultValue); + } + } + + function setOption(name, value, cm, cfg) { + var option = options[name]; + cfg = cfg || {}; + var scope = cfg.scope; + if (!option) { + return new Error('Unknown option: ' + name); + } + if (option.type == 'boolean') { + if (value && value !== true) { + return new Error('Invalid argument: ' + name + '=' + value); + } else if (value !== false) { + // Boolean options are set to true if value is not defined. + value = true; + } + } + if (option.callback) { + if (scope !== 'local') { + option.callback(value, undefined); + } + if (scope !== 'global' && cm) { + option.callback(value, cm); + } + } else { + if (scope !== 'local') { + option.value = option.type == 'boolean' ? !!value : value; + } + if (scope !== 'global' && cm) { + cm.state.vim.options[name] = {value: value}; + } + } + } + + function getOption(name, cm, cfg) { + var option = options[name]; + cfg = cfg || {}; + var scope = cfg.scope; + if (!option) { + return new Error('Unknown option: ' + name); + } + if (option.callback) { + var local = cm && option.callback(undefined, cm); + if (scope !== 'global' && local !== undefined) { + return local; + } + if (scope !== 'local') { + return option.callback(); + } + return; + } else { + var local = (scope !== 'global') && (cm && cm.state.vim.options[name]); + return (local || (scope !== 'local') && option || {}).value; + } + } + + defineOption('filetype', undefined, 'string', ['ft'], function(name, cm) { + // Option is local. Do nothing for global. + if (cm === undefined) { + return; + } + // The 'filetype' option proxies to the CodeMirror 'mode' option. + if (name === undefined) { + var mode = cm.getOption('mode'); + return mode == 'null' ? '' : mode; + } else { + var mode = name == '' ? 'null' : name; + cm.setOption('mode', mode); + } + }); + + var createCircularJumpList = function() { + var size = 100; + var pointer = -1; + var head = 0; + var tail = 0; + var buffer = new Array(size); + function add(cm, oldCur, newCur) { + var current = pointer % size; + var curMark = buffer[current]; + function useNextSlot(cursor) { + var next = ++pointer % size; + var trashMark = buffer[next]; + if (trashMark) { + trashMark.clear(); + } + buffer[next] = cm.setBookmark(cursor); + } + if (curMark) { + var markPos = curMark.find(); + // avoid recording redundant cursor position + if (markPos && !cursorEqual(markPos, oldCur)) { + useNextSlot(oldCur); + } + } else { + useNextSlot(oldCur); + } + useNextSlot(newCur); + head = pointer; + tail = pointer - size + 1; + if (tail < 0) { + tail = 0; + } + } + function move(cm, offset) { + pointer += offset; + if (pointer > head) { + pointer = head; + } else if (pointer < tail) { + pointer = tail; + } + var mark = buffer[(size + pointer) % size]; + // skip marks that are temporarily removed from text buffer + if (mark && !mark.find()) { + var inc = offset > 0 ? 1 : -1; + var newCur; + var oldCur = cm.getCursor(); + do { + pointer += inc; + mark = buffer[(size + pointer) % size]; + // skip marks that are the same as current position + if (mark && + (newCur = mark.find()) && + !cursorEqual(oldCur, newCur)) { + break; + } + } while (pointer < head && pointer > tail); + } + return mark; + } + return { + cachedCursor: undefined, //used for # and * jumps + add: add, + move: move + }; + }; + + // Returns an object to track the changes associated insert mode. It + // clones the object that is passed in, or creates an empty object one if + // none is provided. + var createInsertModeChanges = function(c) { + if (c) { + // Copy construction + return { + changes: c.changes, + expectCursorActivityForChange: c.expectCursorActivityForChange + }; + } + return { + // Change list + changes: [], + // Set to true on change, false on cursorActivity. + expectCursorActivityForChange: false + }; + }; + + function MacroModeState() { + this.latestRegister = undefined; + this.isPlaying = false; + this.isRecording = false; + this.replaySearchQueries = []; + this.onRecordingDone = undefined; + this.lastInsertModeChanges = createInsertModeChanges(); + } + MacroModeState.prototype = { + exitMacroRecordMode: function() { + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.onRecordingDone) { + macroModeState.onRecordingDone(); // close dialog + } + macroModeState.onRecordingDone = undefined; + macroModeState.isRecording = false; + }, + enterMacroRecordMode: function(cm, registerName) { + var register = + vimGlobalState.registerController.getRegister(registerName); + if (register) { + register.clear(); + this.latestRegister = registerName; + if (cm.openDialog) { + this.onRecordingDone = cm.openDialog( + '(recording)['+registerName+']', null, {bottom:true}); + } + this.isRecording = true; + } + } + }; + + function maybeInitVimState(cm) { + if (!cm.state.vim) { + // Store instance state in the CodeMirror object. + cm.state.vim = { + inputState: new InputState(), + // Vim's input state that triggered the last edit, used to repeat + // motions and operators with '.'. + lastEditInputState: undefined, + // Vim's action command before the last edit, used to repeat actions + // with '.' and insert mode repeat. + lastEditActionCommand: undefined, + // When using jk for navigation, if you move from a longer line to a + // shorter line, the cursor may clip to the end of the shorter line. + // If j is pressed again and cursor goes to the next line, the + // cursor should go back to its horizontal position on the longer + // line if it can. This is to keep track of the horizontal position. + lastHPos: -1, + // Doing the same with screen-position for gj/gk + lastHSPos: -1, + // The last motion command run. Cleared if a non-motion command gets + // executed in between. + lastMotion: null, + marks: {}, + // Mark for rendering fake cursor for visual mode. + fakeCursor: null, + insertMode: false, + // Repeat count for changes made in insert mode, triggered by key + // sequences like 3,i. Only exists when insertMode is true. + insertModeRepeat: undefined, + visualMode: false, + // If we are in visual line mode. No effect if visualMode is false. + visualLine: false, + visualBlock: false, + lastSelection: null, + lastPastedText: null, + sel: {}, + // Buffer-local/window-local values of vim options. + options: {} + }; + } + return cm.state.vim; + } + var vimGlobalState; + function resetVimGlobalState() { + vimGlobalState = { + // The current search query. + searchQuery: null, + // Whether we are searching backwards. + searchIsReversed: false, + // Replace part of the last substituted pattern + lastSubstituteReplacePart: undefined, + jumpList: createCircularJumpList(), + macroModeState: new MacroModeState, + // Recording latest f, t, F or T motion command. + lastCharacterSearch: {increment:0, forward:true, selectedCharacter:''}, + registerController: new RegisterController({}), + // search history buffer + searchHistoryController: new HistoryController(), + // ex Command history buffer + exCommandHistoryController : new HistoryController() + }; + for (var optionName in options) { + var option = options[optionName]; + option.value = option.defaultValue; + } + } + + var lastInsertModeKeyTimer; + var vimApi= { + buildKeyMap: function() { + // TODO: Convert keymap into dictionary format for fast lookup. + }, + // Testing hook, though it might be useful to expose the register + // controller anyways. + getRegisterController: function() { + return vimGlobalState.registerController; + }, + // Testing hook. + resetVimGlobalState_: resetVimGlobalState, + + // Testing hook. + getVimGlobalState_: function() { + return vimGlobalState; + }, + + // Testing hook. + maybeInitVimState_: maybeInitVimState, + + suppressErrorLogging: false, + + InsertModeKey: InsertModeKey, + map: function(lhs, rhs, ctx) { + // Add user defined key bindings. + exCommandDispatcher.map(lhs, rhs, ctx); + }, + unmap: function(lhs, ctx) { + exCommandDispatcher.unmap(lhs, ctx); + }, + // TODO: Expose setOption and getOption as instance methods. Need to decide how to namespace + // them, or somehow make them work with the existing CodeMirror setOption/getOption API. + setOption: setOption, + getOption: getOption, + defineOption: defineOption, + defineEx: function(name, prefix, func){ + if (!prefix) { + prefix = name; + } else if (name.indexOf(prefix) !== 0) { + throw new Error('(Vim.defineEx) "'+prefix+'" is not a prefix of "'+name+'", command not registered'); + } + exCommands[name]=func; + exCommandDispatcher.commandMap_[prefix]={name:name, shortName:prefix, type:'api'}; + }, + handleKey: function (cm, key, origin) { + var command = this.findKey(cm, key, origin); + if (typeof command === 'function') { + return command(); + } + }, + /** + * This is the outermost function called by CodeMirror, after keys have + * been mapped to their Vim equivalents. + * + * Finds a command based on the key (and cached keys if there is a + * multi-key sequence). Returns `undefined` if no key is matched, a noop + * function if a partial match is found (multi-key), and a function to + * execute the bound command if a a key is matched. The function always + * returns true. + */ + findKey: function(cm, key, origin) { + var vim = maybeInitVimState(cm); + function handleMacroRecording() { + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isRecording) { + if (key == 'q') { + macroModeState.exitMacroRecordMode(); + clearInputState(cm); + return true; + } + if (origin != 'mapping') { + logKey(macroModeState, key); + } + } + } + function handleEsc() { + if (key == '') { + // Clear input state and get back to normal mode. + clearInputState(cm); + if (vim.visualMode) { + exitVisualMode(cm); + } else if (vim.insertMode) { + exitInsertMode(cm); + } + return true; + } + } + function doKeyToKey(keys) { + // TODO: prevent infinite recursion. + var match; + while (keys) { + // Pull off one command key, which is either a single character + // or a special sequence wrapped in '<' and '>', e.g. ''. + match = (/<\w+-.+?>|<\w+>|./).exec(keys); + key = match[0]; + keys = keys.substring(match.index + key.length); + CodeMirror.Vim.handleKey(cm, key, 'mapping'); + } + } + + function handleKeyInsertMode() { + if (handleEsc()) { return true; } + var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; + var keysAreChars = key.length == 1; + var match = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); + // Need to check all key substrings in insert mode. + while (keys.length > 1 && match.type != 'full') { + var keys = vim.inputState.keyBuffer = keys.slice(1); + var thisMatch = commandDispatcher.matchCommand(keys, defaultKeymap, vim.inputState, 'insert'); + if (thisMatch.type != 'none') { match = thisMatch; } + } + if (match.type == 'none') { clearInputState(cm); return false; } + else if (match.type == 'partial') { + if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } + lastInsertModeKeyTimer = window.setTimeout( + function() { if (vim.insertMode && vim.inputState.keyBuffer) { clearInputState(cm); } }, + getOption('insertModeEscKeysTimeout')); + return !keysAreChars; + } + + if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } + if (keysAreChars) { + var selections = cm.listSelections(); + for (var i = 0; i < selections.length; i++) { + var here = selections[i].head; + cm.replaceRange('', offsetCursor(here, 0, -(keys.length - 1)), here, '+input'); + } + vimGlobalState.macroModeState.lastInsertModeChanges.changes.pop(); + } + clearInputState(cm); + return match.command; + } + + function handleKeyNonInsertMode() { + if (handleMacroRecording() || handleEsc()) { return true; }; + + var keys = vim.inputState.keyBuffer = vim.inputState.keyBuffer + key; + if (/^[1-9]\d*$/.test(keys)) { return true; } + + var keysMatcher = /^(\d*)(.*)$/.exec(keys); + if (!keysMatcher) { clearInputState(cm); return false; } + var context = vim.visualMode ? 'visual' : + 'normal'; + var match = commandDispatcher.matchCommand(keysMatcher[2] || keysMatcher[1], defaultKeymap, vim.inputState, context); + if (match.type == 'none') { clearInputState(cm); return false; } + else if (match.type == 'partial') { return true; } + + vim.inputState.keyBuffer = ''; + var keysMatcher = /^(\d*)(.*)$/.exec(keys); + if (keysMatcher[1] && keysMatcher[1] != '0') { + vim.inputState.pushRepeatDigit(keysMatcher[1]); + } + return match.command; + } + + var command; + if (vim.insertMode) { command = handleKeyInsertMode(); } + else { command = handleKeyNonInsertMode(); } + if (command === false) { + return undefined; + } else if (command === true) { + // TODO: Look into using CodeMirror's multi-key handling. + // Return no-op since we are caching the key. Counts as handled, but + // don't want act on it just yet. + return function() { return true; }; + } else { + return function() { + return cm.operation(function() { + cm.curOp.isVimOp = true; + try { + if (command.type == 'keyToKey') { + doKeyToKey(command.toKeys); + } else { + commandDispatcher.processCommand(cm, vim, command); + } + } catch (e) { + // clear VIM state in case it's in a bad state. + cm.state.vim = undefined; + maybeInitVimState(cm); + if (!CodeMirror.Vim.suppressErrorLogging) { + console['log'](e); + } + throw e; + } + return true; + }); + }; + } + }, + handleEx: function(cm, input) { + exCommandDispatcher.processCommand(cm, input); + }, + + defineMotion: defineMotion, + defineAction: defineAction, + defineOperator: defineOperator, + mapCommand: mapCommand, + _mapCommand: _mapCommand, + + defineRegister: defineRegister, + + exitVisualMode: exitVisualMode, + exitInsertMode: exitInsertMode + }; + + // Represents the current input state. + function InputState() { + this.prefixRepeat = []; + this.motionRepeat = []; + + this.operator = null; + this.operatorArgs = null; + this.motion = null; + this.motionArgs = null; + this.keyBuffer = []; // For matching multi-key commands. + this.registerName = null; // Defaults to the unnamed register. + } + InputState.prototype.pushRepeatDigit = function(n) { + if (!this.operator) { + this.prefixRepeat = this.prefixRepeat.concat(n); + } else { + this.motionRepeat = this.motionRepeat.concat(n); + } + }; + InputState.prototype.getRepeat = function() { + var repeat = 0; + if (this.prefixRepeat.length > 0 || this.motionRepeat.length > 0) { + repeat = 1; + if (this.prefixRepeat.length > 0) { + repeat *= parseInt(this.prefixRepeat.join(''), 10); + } + if (this.motionRepeat.length > 0) { + repeat *= parseInt(this.motionRepeat.join(''), 10); + } + } + return repeat; + }; + + function clearInputState(cm, reason) { + cm.state.vim.inputState = new InputState(); + CodeMirror.signal(cm, 'vim-command-done', reason); + } + + /* + * Register stores information about copy and paste registers. Besides + * text, a register must store whether it is linewise (i.e., when it is + * pasted, should it insert itself into a new line, or should the text be + * inserted at the cursor position.) + */ + function Register(text, linewise, blockwise) { + this.clear(); + this.keyBuffer = [text || '']; + this.insertModeChanges = []; + this.searchQueries = []; + this.linewise = !!linewise; + this.blockwise = !!blockwise; + } + Register.prototype = { + setText: function(text, linewise, blockwise) { + this.keyBuffer = [text || '']; + this.linewise = !!linewise; + this.blockwise = !!blockwise; + }, + pushText: function(text, linewise) { + // if this register has ever been set to linewise, use linewise. + if (linewise) { + if (!this.linewise) { + this.keyBuffer.push('\n'); + } + this.linewise = true; + } + this.keyBuffer.push(text); + }, + pushInsertModeChanges: function(changes) { + this.insertModeChanges.push(createInsertModeChanges(changes)); + }, + pushSearchQuery: function(query) { + this.searchQueries.push(query); + }, + clear: function() { + this.keyBuffer = []; + this.insertModeChanges = []; + this.searchQueries = []; + this.linewise = false; + }, + toString: function() { + return this.keyBuffer.join(''); + } + }; + + /** + * Defines an external register. + * + * The name should be a single character that will be used to reference the register. + * The register should support setText, pushText, clear, and toString(). See Register + * for a reference implementation. + */ + function defineRegister(name, register) { + var registers = vimGlobalState.registerController.registers; + if (!name || name.length != 1) { + throw Error('Register name must be 1 character'); + } + if (registers[name]) { + throw Error('Register already defined ' + name); + } + registers[name] = register; + validRegisters.push(name); + } + + /* + * vim registers allow you to keep many independent copy and paste buffers. + * See http://usevim.com/2012/04/13/registers/ for an introduction. + * + * RegisterController keeps the state of all the registers. An initial + * state may be passed in. The unnamed register '"' will always be + * overridden. + */ + function RegisterController(registers) { + this.registers = registers; + this.unnamedRegister = registers['"'] = new Register(); + registers['.'] = new Register(); + registers[':'] = new Register(); + registers['/'] = new Register(); + } + RegisterController.prototype = { + pushText: function(registerName, operator, text, linewise, blockwise) { + if (linewise && text.charAt(text.length - 1) !== '\n'){ + text += '\n'; + } + // Lowercase and uppercase registers refer to the same register. + // Uppercase just means append. + var register = this.isValidRegister(registerName) ? + this.getRegister(registerName) : null; + // if no register/an invalid register was specified, things go to the + // default registers + if (!register) { + switch (operator) { + case 'yank': + // The 0 register contains the text from the most recent yank. + this.registers['0'] = new Register(text, linewise, blockwise); + break; + case 'delete': + case 'change': + if (text.indexOf('\n') == -1) { + // Delete less than 1 line. Update the small delete register. + this.registers['-'] = new Register(text, linewise); + } else { + // Shift down the contents of the numbered registers and put the + // deleted text into register 1. + this.shiftNumericRegisters_(); + this.registers['1'] = new Register(text, linewise); + } + break; + } + // Make sure the unnamed register is set to what just happened + this.unnamedRegister.setText(text, linewise, blockwise); + return; + } + + // If we've gotten to this point, we've actually specified a register + var append = isUpperCase(registerName); + if (append) { + register.pushText(text, linewise); + } else { + register.setText(text, linewise, blockwise); + } + // The unnamed register always has the same value as the last used + // register. + this.unnamedRegister.setText(register.toString(), linewise); + }, + // Gets the register named @name. If one of @name doesn't already exist, + // create it. If @name is invalid, return the unnamedRegister. + getRegister: function(name) { + if (!this.isValidRegister(name)) { + return this.unnamedRegister; + } + name = name.toLowerCase(); + if (!this.registers[name]) { + this.registers[name] = new Register(); + } + return this.registers[name]; + }, + isValidRegister: function(name) { + return name && inArray(name, validRegisters); + }, + shiftNumericRegisters_: function() { + for (var i = 9; i >= 2; i--) { + this.registers[i] = this.getRegister('' + (i - 1)); + } + } + }; + function HistoryController() { + this.historyBuffer = []; + this.iterator = 0; + this.initialPrefix = null; + } + HistoryController.prototype = { + // the input argument here acts a user entered prefix for a small time + // until we start autocompletion in which case it is the autocompleted. + nextMatch: function (input, up) { + var historyBuffer = this.historyBuffer; + var dir = up ? -1 : 1; + if (this.initialPrefix === null) this.initialPrefix = input; + for (var i = this.iterator + dir; up ? i >= 0 : i < historyBuffer.length; i+= dir) { + var element = historyBuffer[i]; + for (var j = 0; j <= element.length; j++) { + if (this.initialPrefix == element.substring(0, j)) { + this.iterator = i; + return element; + } + } + } + // should return the user input in case we reach the end of buffer. + if (i >= historyBuffer.length) { + this.iterator = historyBuffer.length; + return this.initialPrefix; + } + // return the last autocompleted query or exCommand as it is. + if (i < 0 ) return input; + }, + pushInput: function(input) { + var index = this.historyBuffer.indexOf(input); + if (index > -1) this.historyBuffer.splice(index, 1); + if (input.length) this.historyBuffer.push(input); + }, + reset: function() { + this.initialPrefix = null; + this.iterator = this.historyBuffer.length; + } + }; + var commandDispatcher = { + matchCommand: function(keys, keyMap, inputState, context) { + var matches = commandMatches(keys, keyMap, context, inputState); + if (!matches.full && !matches.partial) { + return {type: 'none'}; + } else if (!matches.full && matches.partial) { + return {type: 'partial'}; + } + + var bestMatch; + for (var i = 0; i < matches.full.length; i++) { + var match = matches.full[i]; + if (!bestMatch) { + bestMatch = match; + } + } + if (bestMatch.keys.slice(-11) == '') { + var character = lastChar(keys); + if (!character) return {type: 'none'}; + inputState.selectedCharacter = character; + } + return {type: 'full', command: bestMatch}; + }, + processCommand: function(cm, vim, command) { + vim.inputState.repeatOverride = command.repeatOverride; + switch (command.type) { + case 'motion': + this.processMotion(cm, vim, command); + break; + case 'operator': + this.processOperator(cm, vim, command); + break; + case 'operatorMotion': + this.processOperatorMotion(cm, vim, command); + break; + case 'action': + this.processAction(cm, vim, command); + break; + case 'search': + this.processSearch(cm, vim, command); + break; + case 'ex': + case 'keyToEx': + this.processEx(cm, vim, command); + break; + default: + break; + } + }, + processMotion: function(cm, vim, command) { + vim.inputState.motion = command.motion; + vim.inputState.motionArgs = copyArgs(command.motionArgs); + this.evalInput(cm, vim); + }, + processOperator: function(cm, vim, command) { + var inputState = vim.inputState; + if (inputState.operator) { + if (inputState.operator == command.operator) { + // Typing an operator twice like 'dd' makes the operator operate + // linewise + inputState.motion = 'expandToLine'; + inputState.motionArgs = { linewise: true }; + this.evalInput(cm, vim); + return; + } else { + // 2 different operators in a row doesn't make sense. + clearInputState(cm); + } + } + inputState.operator = command.operator; + inputState.operatorArgs = copyArgs(command.operatorArgs); + if (vim.visualMode) { + // Operating on a selection in visual mode. We don't need a motion. + this.evalInput(cm, vim); + } + }, + processOperatorMotion: function(cm, vim, command) { + var visualMode = vim.visualMode; + var operatorMotionArgs = copyArgs(command.operatorMotionArgs); + if (operatorMotionArgs) { + // Operator motions may have special behavior in visual mode. + if (visualMode && operatorMotionArgs.visualLine) { + vim.visualLine = true; + } + } + this.processOperator(cm, vim, command); + if (!visualMode) { + this.processMotion(cm, vim, command); + } + }, + processAction: function(cm, vim, command) { + var inputState = vim.inputState; + var repeat = inputState.getRepeat(); + var repeatIsExplicit = !!repeat; + var actionArgs = copyArgs(command.actionArgs) || {}; + if (inputState.selectedCharacter) { + actionArgs.selectedCharacter = inputState.selectedCharacter; + } + // Actions may or may not have motions and operators. Do these first. + if (command.operator) { + this.processOperator(cm, vim, command); + } + if (command.motion) { + this.processMotion(cm, vim, command); + } + if (command.motion || command.operator) { + this.evalInput(cm, vim); + } + actionArgs.repeat = repeat || 1; + actionArgs.repeatIsExplicit = repeatIsExplicit; + actionArgs.registerName = inputState.registerName; + clearInputState(cm); + vim.lastMotion = null; + if (command.isEdit) { + this.recordLastEdit(vim, inputState, command); + } + actions[command.action](cm, actionArgs, vim); + }, + processSearch: function(cm, vim, command) { + if (!cm.getSearchCursor) { + // Search depends on SearchCursor. + return; + } + var forward = command.searchArgs.forward; + var wholeWordOnly = command.searchArgs.wholeWordOnly; + getSearchState(cm).setReversed(!forward); + var promptPrefix = (forward) ? '/' : '?'; + var originalQuery = getSearchState(cm).getQuery(); + var originalScrollPos = cm.getScrollInfo(); + function handleQuery(query, ignoreCase, smartCase) { + vimGlobalState.searchHistoryController.pushInput(query); + vimGlobalState.searchHistoryController.reset(); + try { + updateSearchQuery(cm, query, ignoreCase, smartCase); + } catch (e) { + showConfirm(cm, 'Invalid regex: ' + query); + clearInputState(cm); + return; + } + commandDispatcher.processMotion(cm, vim, { + type: 'motion', + motion: 'findNext', + motionArgs: { forward: true, toJumplist: command.searchArgs.toJumplist } + }); + } + function onPromptClose(query) { + cm.scrollTo(originalScrollPos.left, originalScrollPos.top); + handleQuery(query, true /** ignoreCase */, true /** smartCase */); + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isRecording) { + logSearchQuery(macroModeState, query); + } + } + function onPromptKeyUp(e, query, close) { + var keyName = CodeMirror.keyName(e), up, offset; + if (keyName == 'Up' || keyName == 'Down') { + up = keyName == 'Up' ? true : false; + offset = e.target ? e.target.selectionEnd : 0; + query = vimGlobalState.searchHistoryController.nextMatch(query, up) || ''; + close(query); + if (offset && e.target) e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length); + } else { + if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') + vimGlobalState.searchHistoryController.reset(); + } + var parsedQuery; + try { + parsedQuery = updateSearchQuery(cm, query, + true /** ignoreCase */, true /** smartCase */); + } catch (e) { + // Swallow bad regexes for incremental search. + } + if (parsedQuery) { + cm.scrollIntoView(findNext(cm, !forward, parsedQuery), 30); + } else { + clearSearchHighlight(cm); + cm.scrollTo(originalScrollPos.left, originalScrollPos.top); + } + } + function onPromptKeyDown(e, query, close) { + var keyName = CodeMirror.keyName(e); + if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || + (keyName == 'Backspace' && query == '')) { + vimGlobalState.searchHistoryController.pushInput(query); + vimGlobalState.searchHistoryController.reset(); + updateSearchQuery(cm, originalQuery); + clearSearchHighlight(cm); + cm.scrollTo(originalScrollPos.left, originalScrollPos.top); + CodeMirror.e_stop(e); + clearInputState(cm); + close(); + cm.focus(); + } else if (keyName == 'Up' || keyName == 'Down') { + CodeMirror.e_stop(e); + } else if (keyName == 'Ctrl-U') { + // Ctrl-U clears input. + CodeMirror.e_stop(e); + close(''); + } + } + switch (command.searchArgs.querySrc) { + case 'prompt': + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isPlaying) { + var query = macroModeState.replaySearchQueries.shift(); + handleQuery(query, true /** ignoreCase */, false /** smartCase */); + } else { + showPrompt(cm, { + onClose: onPromptClose, + prefix: promptPrefix, + desc: searchPromptDesc, + onKeyUp: onPromptKeyUp, + onKeyDown: onPromptKeyDown + }); + } + break; + case 'wordUnderCursor': + var word = expandWordUnderCursor(cm, false /** inclusive */, + true /** forward */, false /** bigWord */, + true /** noSymbol */); + var isKeyword = true; + if (!word) { + word = expandWordUnderCursor(cm, false /** inclusive */, + true /** forward */, false /** bigWord */, + false /** noSymbol */); + isKeyword = false; + } + if (!word) { + return; + } + var query = cm.getLine(word.start.line).substring(word.start.ch, + word.end.ch); + if (isKeyword && wholeWordOnly) { + query = '\\b' + query + '\\b'; + } else { + query = escapeRegex(query); + } + + // cachedCursor is used to save the old position of the cursor + // when * or # causes vim to seek for the nearest word and shift + // the cursor before entering the motion. + vimGlobalState.jumpList.cachedCursor = cm.getCursor(); + cm.setCursor(word.start); + + handleQuery(query, true /** ignoreCase */, false /** smartCase */); + break; + } + }, + processEx: function(cm, vim, command) { + function onPromptClose(input) { + // Give the prompt some time to close so that if processCommand shows + // an error, the elements don't overlap. + vimGlobalState.exCommandHistoryController.pushInput(input); + vimGlobalState.exCommandHistoryController.reset(); + exCommandDispatcher.processCommand(cm, input); + } + function onPromptKeyDown(e, input, close) { + var keyName = CodeMirror.keyName(e), up, offset; + if (keyName == 'Esc' || keyName == 'Ctrl-C' || keyName == 'Ctrl-[' || + (keyName == 'Backspace' && input == '')) { + vimGlobalState.exCommandHistoryController.pushInput(input); + vimGlobalState.exCommandHistoryController.reset(); + CodeMirror.e_stop(e); + clearInputState(cm); + close(); + cm.focus(); + } + if (keyName == 'Up' || keyName == 'Down') { + CodeMirror.e_stop(e); + up = keyName == 'Up' ? true : false; + offset = e.target ? e.target.selectionEnd : 0; + input = vimGlobalState.exCommandHistoryController.nextMatch(input, up) || ''; + close(input); + if (offset && e.target) e.target.selectionEnd = e.target.selectionStart = Math.min(offset, e.target.value.length); + } else if (keyName == 'Ctrl-U') { + // Ctrl-U clears input. + CodeMirror.e_stop(e); + close(''); + } else { + if ( keyName != 'Left' && keyName != 'Right' && keyName != 'Ctrl' && keyName != 'Alt' && keyName != 'Shift') + vimGlobalState.exCommandHistoryController.reset(); + } + } + if (command.type == 'keyToEx') { + // Handle user defined Ex to Ex mappings + exCommandDispatcher.processCommand(cm, command.exArgs.input); + } else { + if (vim.visualMode) { + showPrompt(cm, { onClose: onPromptClose, prefix: ':', value: '\'<,\'>', + onKeyDown: onPromptKeyDown}); + } else { + showPrompt(cm, { onClose: onPromptClose, prefix: ':', + onKeyDown: onPromptKeyDown}); + } + } + }, + evalInput: function(cm, vim) { + // If the motion command is set, execute both the operator and motion. + // Otherwise return. + var inputState = vim.inputState; + var motion = inputState.motion; + var motionArgs = inputState.motionArgs || {}; + var operator = inputState.operator; + var operatorArgs = inputState.operatorArgs || {}; + var registerName = inputState.registerName; + var sel = vim.sel; + // TODO: Make sure cm and vim selections are identical outside visual mode. + var origHead = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.head): cm.getCursor('head')); + var origAnchor = copyCursor(vim.visualMode ? clipCursorToContent(cm, sel.anchor) : cm.getCursor('anchor')); + var oldHead = copyCursor(origHead); + var oldAnchor = copyCursor(origAnchor); + var newHead, newAnchor; + var repeat; + if (operator) { + this.recordLastEdit(vim, inputState); + } + if (inputState.repeatOverride !== undefined) { + // If repeatOverride is specified, that takes precedence over the + // input state's repeat. Used by Ex mode and can be user defined. + repeat = inputState.repeatOverride; + } else { + repeat = inputState.getRepeat(); + } + if (repeat > 0 && motionArgs.explicitRepeat) { + motionArgs.repeatIsExplicit = true; + } else if (motionArgs.noRepeat || + (!motionArgs.explicitRepeat && repeat === 0)) { + repeat = 1; + motionArgs.repeatIsExplicit = false; + } + if (inputState.selectedCharacter) { + // If there is a character input, stick it in all of the arg arrays. + motionArgs.selectedCharacter = operatorArgs.selectedCharacter = + inputState.selectedCharacter; + } + motionArgs.repeat = repeat; + clearInputState(cm); + if (motion) { + var motionResult = motions[motion](cm, origHead, motionArgs, vim); + vim.lastMotion = motions[motion]; + if (!motionResult) { + return; + } + if (motionArgs.toJumplist) { + var jumpList = vimGlobalState.jumpList; + // if the current motion is # or *, use cachedCursor + var cachedCursor = jumpList.cachedCursor; + if (cachedCursor) { + recordJumpPosition(cm, cachedCursor, motionResult); + delete jumpList.cachedCursor; + } else { + recordJumpPosition(cm, origHead, motionResult); + } + } + if (motionResult instanceof Array) { + newAnchor = motionResult[0]; + newHead = motionResult[1]; + } else { + newHead = motionResult; + } + // TODO: Handle null returns from motion commands better. + if (!newHead) { + newHead = copyCursor(origHead); + } + if (vim.visualMode) { + if (!(vim.visualBlock && newHead.ch === Infinity)) { + newHead = clipCursorToContent(cm, newHead, vim.visualBlock); + } + if (newAnchor) { + newAnchor = clipCursorToContent(cm, newAnchor, true); + } + newAnchor = newAnchor || oldAnchor; + sel.anchor = newAnchor; + sel.head = newHead; + updateCmSelection(cm); + updateMark(cm, vim, '<', + cursorIsBefore(newAnchor, newHead) ? newAnchor + : newHead); + updateMark(cm, vim, '>', + cursorIsBefore(newAnchor, newHead) ? newHead + : newAnchor); + } else if (!operator) { + newHead = clipCursorToContent(cm, newHead); + cm.setCursor(newHead.line, newHead.ch); + } + } + if (operator) { + if (operatorArgs.lastSel) { + // Replaying a visual mode operation + newAnchor = oldAnchor; + var lastSel = operatorArgs.lastSel; + var lineOffset = Math.abs(lastSel.head.line - lastSel.anchor.line); + var chOffset = Math.abs(lastSel.head.ch - lastSel.anchor.ch); + if (lastSel.visualLine) { + // Linewise Visual mode: The same number of lines. + newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); + } else if (lastSel.visualBlock) { + // Blockwise Visual mode: The same number of lines and columns. + newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch + chOffset); + } else if (lastSel.head.line == lastSel.anchor.line) { + // Normal Visual mode within one line: The same number of characters. + newHead = Pos(oldAnchor.line, oldAnchor.ch + chOffset); + } else { + // Normal Visual mode with several lines: The same number of lines, in the + // last line the same number of characters as in the last line the last time. + newHead = Pos(oldAnchor.line + lineOffset, oldAnchor.ch); + } + vim.visualMode = true; + vim.visualLine = lastSel.visualLine; + vim.visualBlock = lastSel.visualBlock; + sel = vim.sel = { + anchor: newAnchor, + head: newHead + }; + updateCmSelection(cm); + } else if (vim.visualMode) { + operatorArgs.lastSel = { + anchor: copyCursor(sel.anchor), + head: copyCursor(sel.head), + visualBlock: vim.visualBlock, + visualLine: vim.visualLine + }; + } + var curStart, curEnd, linewise, mode; + var cmSel; + if (vim.visualMode) { + // Init visual op + curStart = cursorMin(sel.head, sel.anchor); + curEnd = cursorMax(sel.head, sel.anchor); + linewise = vim.visualLine || operatorArgs.linewise; + mode = vim.visualBlock ? 'block' : + linewise ? 'line' : + 'char'; + cmSel = makeCmSelection(cm, { + anchor: curStart, + head: curEnd + }, mode); + if (linewise) { + var ranges = cmSel.ranges; + if (mode == 'block') { + // Linewise operators in visual block mode extend to end of line + for (var i = 0; i < ranges.length; i++) { + ranges[i].head.ch = lineLength(cm, ranges[i].head.line); + } + } else if (mode == 'line') { + ranges[0].head = Pos(ranges[0].head.line + 1, 0); + } + } + } else { + // Init motion op + curStart = copyCursor(newAnchor || oldAnchor); + curEnd = copyCursor(newHead || oldHead); + if (cursorIsBefore(curEnd, curStart)) { + var tmp = curStart; + curStart = curEnd; + curEnd = tmp; + } + linewise = motionArgs.linewise || operatorArgs.linewise; + if (linewise) { + // Expand selection to entire line. + expandSelectionToLine(cm, curStart, curEnd); + } else if (motionArgs.forward) { + // Clip to trailing newlines only if the motion goes forward. + clipToLine(cm, curStart, curEnd); + } + mode = 'char'; + var exclusive = !motionArgs.inclusive || linewise; + cmSel = makeCmSelection(cm, { + anchor: curStart, + head: curEnd + }, mode, exclusive); + } + cm.setSelections(cmSel.ranges, cmSel.primary); + vim.lastMotion = null; + operatorArgs.repeat = repeat; // For indent in visual mode. + operatorArgs.registerName = registerName; + // Keep track of linewise as it affects how paste and change behave. + operatorArgs.linewise = linewise; + var operatorMoveTo = operators[operator]( + cm, operatorArgs, cmSel.ranges, oldAnchor, newHead); + if (vim.visualMode) { + exitVisualMode(cm, operatorMoveTo != null); + } + if (operatorMoveTo) { + cm.setCursor(operatorMoveTo); + } + } + }, + recordLastEdit: function(vim, inputState, actionCommand) { + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isPlaying) { return; } + vim.lastEditInputState = inputState; + vim.lastEditActionCommand = actionCommand; + macroModeState.lastInsertModeChanges.changes = []; + macroModeState.lastInsertModeChanges.expectCursorActivityForChange = false; + } + }; + + /** + * typedef {Object{line:number,ch:number}} Cursor An object containing the + * position of the cursor. + */ + // All of the functions below return Cursor objects. + var motions = { + moveToTopLine: function(cm, _head, motionArgs) { + var line = getUserVisibleLines(cm).top + motionArgs.repeat -1; + return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + }, + moveToMiddleLine: function(cm) { + var range = getUserVisibleLines(cm); + var line = Math.floor((range.top + range.bottom) * 0.5); + return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + }, + moveToBottomLine: function(cm, _head, motionArgs) { + var line = getUserVisibleLines(cm).bottom - motionArgs.repeat +1; + return Pos(line, findFirstNonWhiteSpaceCharacter(cm.getLine(line))); + }, + expandToLine: function(_cm, head, motionArgs) { + // Expands forward to end of line, and then to next line if repeat is + // >1. Does not handle backward motion! + var cur = head; + return Pos(cur.line + motionArgs.repeat - 1, Infinity); + }, + findNext: function(cm, _head, motionArgs) { + var state = getSearchState(cm); + var query = state.getQuery(); + if (!query) { + return; + } + var prev = !motionArgs.forward; + // If search is initiated with ? instead of /, negate direction. + prev = (state.isReversed()) ? !prev : prev; + highlightSearchMatches(cm, query); + return findNext(cm, prev/** prev */, query, motionArgs.repeat); + }, + goToMark: function(cm, _head, motionArgs, vim) { + var pos = getMarkPos(cm, vim, motionArgs.selectedCharacter); + if (pos) { + return motionArgs.linewise ? { line: pos.line, ch: findFirstNonWhiteSpaceCharacter(cm.getLine(pos.line)) } : pos; + } + return null; + }, + moveToOtherHighlightedEnd: function(cm, _head, motionArgs, vim) { + if (vim.visualBlock && motionArgs.sameLine) { + var sel = vim.sel; + return [ + clipCursorToContent(cm, Pos(sel.anchor.line, sel.head.ch)), + clipCursorToContent(cm, Pos(sel.head.line, sel.anchor.ch)) + ]; + } else { + return ([vim.sel.head, vim.sel.anchor]); + } + }, + jumpToMark: function(cm, head, motionArgs, vim) { + var best = head; + for (var i = 0; i < motionArgs.repeat; i++) { + var cursor = best; + for (var key in vim.marks) { + if (!isLowerCase(key)) { + continue; + } + var mark = vim.marks[key].find(); + var isWrongDirection = (motionArgs.forward) ? + cursorIsBefore(mark, cursor) : cursorIsBefore(cursor, mark); + + if (isWrongDirection) { + continue; + } + if (motionArgs.linewise && (mark.line == cursor.line)) { + continue; + } + + var equal = cursorEqual(cursor, best); + var between = (motionArgs.forward) ? + cursorIsBetween(cursor, mark, best) : + cursorIsBetween(best, mark, cursor); + + if (equal || between) { + best = mark; + } + } + } + + if (motionArgs.linewise) { + // Vim places the cursor on the first non-whitespace character of + // the line if there is one, else it places the cursor at the end + // of the line, regardless of whether a mark was found. + best = Pos(best.line, findFirstNonWhiteSpaceCharacter(cm.getLine(best.line))); + } + return best; + }, + moveByCharacters: function(_cm, head, motionArgs) { + var cur = head; + var repeat = motionArgs.repeat; + var ch = motionArgs.forward ? cur.ch + repeat : cur.ch - repeat; + return Pos(cur.line, ch); + }, + moveByLines: function(cm, head, motionArgs, vim) { + var cur = head; + var endCh = cur.ch; + // Depending what our last motion was, we may want to do different + // things. If our last motion was moving vertically, we want to + // preserve the HPos from our last horizontal move. If our last motion + // was going to the end of a line, moving vertically we should go to + // the end of the line, etc. + switch (vim.lastMotion) { + case this.moveByLines: + case this.moveByDisplayLines: + case this.moveByScroll: + case this.moveToColumn: + case this.moveToEol: + endCh = vim.lastHPos; + break; + default: + vim.lastHPos = endCh; + } + var repeat = motionArgs.repeat+(motionArgs.repeatOffset||0); + var line = motionArgs.forward ? cur.line + repeat : cur.line - repeat; + var first = cm.firstLine(); + var last = cm.lastLine(); + // Vim go to line begin or line end when cursor at first/last line and + // move to previous/next line is triggered. + if (line < first && cur.line == first){ + return this.moveToStartOfLine(cm, head, motionArgs, vim); + }else if (line > last && cur.line == last){ + return this.moveToEol(cm, head, motionArgs, vim); + } + if (motionArgs.toFirstChar){ + endCh=findFirstNonWhiteSpaceCharacter(cm.getLine(line)); + vim.lastHPos = endCh; + } + vim.lastHSPos = cm.charCoords(Pos(line, endCh),'div').left; + return Pos(line, endCh); + }, + moveByDisplayLines: function(cm, head, motionArgs, vim) { + var cur = head; + switch (vim.lastMotion) { + case this.moveByDisplayLines: + case this.moveByScroll: + case this.moveByLines: + case this.moveToColumn: + case this.moveToEol: + break; + default: + vim.lastHSPos = cm.charCoords(cur,'div').left; + } + var repeat = motionArgs.repeat; + var res=cm.findPosV(cur,(motionArgs.forward ? repeat : -repeat),'line',vim.lastHSPos); + if (res.hitSide) { + if (motionArgs.forward) { + var lastCharCoords = cm.charCoords(res, 'div'); + var goalCoords = { top: lastCharCoords.top + 8, left: vim.lastHSPos }; + var res = cm.coordsChar(goalCoords, 'div'); + } else { + var resCoords = cm.charCoords(Pos(cm.firstLine(), 0), 'div'); + resCoords.left = vim.lastHSPos; + res = cm.coordsChar(resCoords, 'div'); + } + } + vim.lastHPos = res.ch; + return res; + }, + moveByPage: function(cm, head, motionArgs) { + // CodeMirror only exposes functions that move the cursor page down, so + // doing this bad hack to move the cursor and move it back. evalInput + // will move the cursor to where it should be in the end. + var curStart = head; + var repeat = motionArgs.repeat; + return cm.findPosV(curStart, (motionArgs.forward ? repeat : -repeat), 'page'); + }, + moveByParagraph: function(cm, head, motionArgs) { + var dir = motionArgs.forward ? 1 : -1; + return findParagraph(cm, head, motionArgs.repeat, dir); + }, + moveByScroll: function(cm, head, motionArgs, vim) { + var scrollbox = cm.getScrollInfo(); + var curEnd = null; + var repeat = motionArgs.repeat; + if (!repeat) { + repeat = scrollbox.clientHeight / (2 * cm.defaultTextHeight()); + } + var orig = cm.charCoords(head, 'local'); + motionArgs.repeat = repeat; + var curEnd = motions.moveByDisplayLines(cm, head, motionArgs, vim); + if (!curEnd) { + return null; + } + var dest = cm.charCoords(curEnd, 'local'); + cm.scrollTo(null, scrollbox.top + dest.top - orig.top); + return curEnd; + }, + moveByWords: function(cm, head, motionArgs) { + return moveToWord(cm, head, motionArgs.repeat, !!motionArgs.forward, + !!motionArgs.wordEnd, !!motionArgs.bigWord); + }, + moveTillCharacter: function(cm, _head, motionArgs) { + var repeat = motionArgs.repeat; + var curEnd = moveToCharacter(cm, repeat, motionArgs.forward, + motionArgs.selectedCharacter); + var increment = motionArgs.forward ? -1 : 1; + recordLastCharacterSearch(increment, motionArgs); + if (!curEnd) return null; + curEnd.ch += increment; + return curEnd; + }, + moveToCharacter: function(cm, head, motionArgs) { + var repeat = motionArgs.repeat; + recordLastCharacterSearch(0, motionArgs); + return moveToCharacter(cm, repeat, motionArgs.forward, + motionArgs.selectedCharacter) || head; + }, + moveToSymbol: function(cm, head, motionArgs) { + var repeat = motionArgs.repeat; + return findSymbol(cm, repeat, motionArgs.forward, + motionArgs.selectedCharacter) || head; + }, + moveToColumn: function(cm, head, motionArgs, vim) { + var repeat = motionArgs.repeat; + // repeat is equivalent to which column we want to move to! + vim.lastHPos = repeat - 1; + vim.lastHSPos = cm.charCoords(head,'div').left; + return moveToColumn(cm, repeat); + }, + moveToEol: function(cm, head, motionArgs, vim) { + var cur = head; + vim.lastHPos = Infinity; + var retval= Pos(cur.line + motionArgs.repeat - 1, Infinity); + var end=cm.clipPos(retval); + end.ch--; + vim.lastHSPos = cm.charCoords(end,'div').left; + return retval; + }, + moveToFirstNonWhiteSpaceCharacter: function(cm, head) { + // Go to the start of the line where the text begins, or the end for + // whitespace-only lines + var cursor = head; + return Pos(cursor.line, + findFirstNonWhiteSpaceCharacter(cm.getLine(cursor.line))); + }, + moveToMatchedSymbol: function(cm, head) { + var cursor = head; + var line = cursor.line; + var ch = cursor.ch; + var lineText = cm.getLine(line); + var symbol; + for (; ch < lineText.length; ch++) { + symbol = lineText.charAt(ch); + if (symbol && isMatchableSymbol(symbol)) { + var style = cm.getTokenTypeAt(Pos(line, ch + 1)); + if (style !== "string" && style !== "comment") { + break; + } + } + } + if (ch < lineText.length) { + var matched = cm.findMatchingBracket(Pos(line, ch)); + return matched.to; + } else { + return cursor; + } + }, + moveToStartOfLine: function(_cm, head) { + return Pos(head.line, 0); + }, + moveToLineOrEdgeOfDocument: function(cm, _head, motionArgs) { + var lineNum = motionArgs.forward ? cm.lastLine() : cm.firstLine(); + if (motionArgs.repeatIsExplicit) { + lineNum = motionArgs.repeat - cm.getOption('firstLineNumber'); + } + return Pos(lineNum, + findFirstNonWhiteSpaceCharacter(cm.getLine(lineNum))); + }, + textObjectManipulation: function(cm, head, motionArgs, vim) { + // TODO: lots of possible exceptions that can be thrown here. Try da( + // outside of a () block. + + // TODO: adding <> >< to this map doesn't work, presumably because + // they're operators + var mirroredPairs = {'(': ')', ')': '(', + '{': '}', '}': '{', + '[': ']', ']': '['}; + var selfPaired = {'\'': true, '"': true}; + + var character = motionArgs.selectedCharacter; + // 'b' refers to '()' block. + // 'B' refers to '{}' block. + if (character == 'b') { + character = '('; + } else if (character == 'B') { + character = '{'; + } + + // Inclusive is the difference between a and i + // TODO: Instead of using the additional text object map to perform text + // object operations, merge the map into the defaultKeyMap and use + // motionArgs to define behavior. Define separate entries for 'aw', + // 'iw', 'a[', 'i[', etc. + var inclusive = !motionArgs.textObjectInner; + + var tmp; + if (mirroredPairs[character]) { + tmp = selectCompanionObject(cm, head, character, inclusive); + } else if (selfPaired[character]) { + tmp = findBeginningAndEnd(cm, head, character, inclusive); + } else if (character === 'W') { + tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, + true /** bigWord */); + } else if (character === 'w') { + tmp = expandWordUnderCursor(cm, inclusive, true /** forward */, + false /** bigWord */); + } else if (character === 'p') { + tmp = findParagraph(cm, head, motionArgs.repeat, 0, inclusive); + motionArgs.linewise = true; + if (vim.visualMode) { + if (!vim.visualLine) { vim.visualLine = true; } + } else { + var operatorArgs = vim.inputState.operatorArgs; + if (operatorArgs) { operatorArgs.linewise = true; } + tmp.end.line--; + } + } else { + // No text object defined for this, don't move. + return null; + } + + if (!cm.state.vim.visualMode) { + return [tmp.start, tmp.end]; + } else { + return expandSelection(cm, tmp.start, tmp.end); + } + }, + + repeatLastCharacterSearch: function(cm, head, motionArgs) { + var lastSearch = vimGlobalState.lastCharacterSearch; + var repeat = motionArgs.repeat; + var forward = motionArgs.forward === lastSearch.forward; + var increment = (lastSearch.increment ? 1 : 0) * (forward ? -1 : 1); + cm.moveH(-increment, 'char'); + motionArgs.inclusive = forward ? true : false; + var curEnd = moveToCharacter(cm, repeat, forward, lastSearch.selectedCharacter); + if (!curEnd) { + cm.moveH(increment, 'char'); + return head; + } + curEnd.ch += increment; + return curEnd; + } + }; + + function defineMotion(name, fn) { + motions[name] = fn; + } + + function fillArray(val, times) { + var arr = []; + for (var i = 0; i < times; i++) { + arr.push(val); + } + return arr; + } + /** + * An operator acts on a text selection. It receives the list of selections + * as input. The corresponding CodeMirror selection is guaranteed to + * match the input selection. + */ + var operators = { + change: function(cm, args, ranges) { + var finalHead, text; + var vim = cm.state.vim; + vimGlobalState.macroModeState.lastInsertModeChanges.inVisualBlock = vim.visualBlock; + if (!vim.visualMode) { + var anchor = ranges[0].anchor, + head = ranges[0].head; + text = cm.getRange(anchor, head); + var lastState = vim.lastEditInputState || {}; + if (lastState.motion == "moveByWords" && !isWhiteSpaceString(text)) { + // Exclude trailing whitespace if the range is not all whitespace. + var match = (/\s+$/).exec(text); + if (match && lastState.motionArgs && lastState.motionArgs.forward) { + head = offsetCursor(head, 0, - match[0].length); + text = text.slice(0, - match[0].length); + } + } + var prevLineEnd = new Pos(anchor.line - 1, Number.MAX_VALUE); + var wasLastLine = cm.firstLine() == cm.lastLine(); + if (head.line > cm.lastLine() && args.linewise && !wasLastLine) { + cm.replaceRange('', prevLineEnd, head); + } else { + cm.replaceRange('', anchor, head); + } + if (args.linewise) { + // Push the next line back down, if there is a next line. + if (!wasLastLine) { + cm.setCursor(prevLineEnd); + CodeMirror.commands.newlineAndIndent(cm); + } + // make sure cursor ends up at the end of the line. + anchor.ch = Number.MAX_VALUE; + } + finalHead = anchor; + } else { + text = cm.getSelection(); + var replacement = fillArray('', ranges.length); + cm.replaceSelections(replacement); + finalHead = cursorMin(ranges[0].head, ranges[0].anchor); + } + vimGlobalState.registerController.pushText( + args.registerName, 'change', text, + args.linewise, ranges.length > 1); + actions.enterInsertMode(cm, {head: finalHead}, cm.state.vim); + }, + // delete is a javascript keyword. + 'delete': function(cm, args, ranges) { + var finalHead, text; + var vim = cm.state.vim; + if (!vim.visualBlock) { + var anchor = ranges[0].anchor, + head = ranges[0].head; + if (args.linewise && + head.line != cm.firstLine() && + anchor.line == cm.lastLine() && + anchor.line == head.line - 1) { + // Special case for dd on last line (and first line). + if (anchor.line == cm.firstLine()) { + anchor.ch = 0; + } else { + anchor = Pos(anchor.line - 1, lineLength(cm, anchor.line - 1)); + } + } + text = cm.getRange(anchor, head); + cm.replaceRange('', anchor, head); + finalHead = anchor; + if (args.linewise) { + finalHead = motions.moveToFirstNonWhiteSpaceCharacter(cm, anchor); + } + } else { + text = cm.getSelection(); + var replacement = fillArray('', ranges.length); + cm.replaceSelections(replacement); + finalHead = ranges[0].anchor; + } + vimGlobalState.registerController.pushText( + args.registerName, 'delete', text, + args.linewise, vim.visualBlock); + return clipCursorToContent(cm, finalHead); + }, + indent: function(cm, args, ranges) { + var vim = cm.state.vim; + var startLine = ranges[0].anchor.line; + var endLine = vim.visualBlock ? + ranges[ranges.length - 1].anchor.line : + ranges[0].head.line; + // In visual mode, n> shifts the selection right n times, instead of + // shifting n lines right once. + var repeat = (vim.visualMode) ? args.repeat : 1; + if (args.linewise) { + // The only way to delete a newline is to delete until the start of + // the next line, so in linewise mode evalInput will include the next + // line. We don't want this in indent, so we go back a line. + endLine--; + } + for (var i = startLine; i <= endLine; i++) { + for (var j = 0; j < repeat; j++) { + cm.indentLine(i, args.indentRight); + } + } + return motions.moveToFirstNonWhiteSpaceCharacter(cm, ranges[0].anchor); + }, + changeCase: function(cm, args, ranges, oldAnchor, newHead) { + var selections = cm.getSelections(); + var swapped = []; + var toLower = args.toLower; + for (var j = 0; j < selections.length; j++) { + var toSwap = selections[j]; + var text = ''; + if (toLower === true) { + text = toSwap.toLowerCase(); + } else if (toLower === false) { + text = toSwap.toUpperCase(); + } else { + for (var i = 0; i < toSwap.length; i++) { + var character = toSwap.charAt(i); + text += isUpperCase(character) ? character.toLowerCase() : + character.toUpperCase(); + } + } + swapped.push(text); + } + cm.replaceSelections(swapped); + if (args.shouldMoveCursor){ + return newHead; + } else if (!cm.state.vim.visualMode && args.linewise && ranges[0].anchor.line + 1 == ranges[0].head.line) { + return motions.moveToFirstNonWhiteSpaceCharacter(cm, oldAnchor); + } else if (args.linewise){ + return oldAnchor; + } else { + return cursorMin(ranges[0].anchor, ranges[0].head); + } + }, + yank: function(cm, args, ranges, oldAnchor) { + var vim = cm.state.vim; + var text = cm.getSelection(); + var endPos = vim.visualMode + ? cursorMin(vim.sel.anchor, vim.sel.head, ranges[0].head, ranges[0].anchor) + : oldAnchor; + vimGlobalState.registerController.pushText( + args.registerName, 'yank', + text, args.linewise, vim.visualBlock); + return endPos; + } + }; + + function defineOperator(name, fn) { + operators[name] = fn; + } + + var actions = { + jumpListWalk: function(cm, actionArgs, vim) { + if (vim.visualMode) { + return; + } + var repeat = actionArgs.repeat; + var forward = actionArgs.forward; + var jumpList = vimGlobalState.jumpList; + + var mark = jumpList.move(cm, forward ? repeat : -repeat); + var markPos = mark ? mark.find() : undefined; + markPos = markPos ? markPos : cm.getCursor(); + cm.setCursor(markPos); + }, + scroll: function(cm, actionArgs, vim) { + if (vim.visualMode) { + return; + } + var repeat = actionArgs.repeat || 1; + var lineHeight = cm.defaultTextHeight(); + var top = cm.getScrollInfo().top; + var delta = lineHeight * repeat; + var newPos = actionArgs.forward ? top + delta : top - delta; + var cursor = copyCursor(cm.getCursor()); + var cursorCoords = cm.charCoords(cursor, 'local'); + if (actionArgs.forward) { + if (newPos > cursorCoords.top) { + cursor.line += (newPos - cursorCoords.top) / lineHeight; + cursor.line = Math.ceil(cursor.line); + cm.setCursor(cursor); + cursorCoords = cm.charCoords(cursor, 'local'); + cm.scrollTo(null, cursorCoords.top); + } else { + // Cursor stays within bounds. Just reposition the scroll window. + cm.scrollTo(null, newPos); + } + } else { + var newBottom = newPos + cm.getScrollInfo().clientHeight; + if (newBottom < cursorCoords.bottom) { + cursor.line -= (cursorCoords.bottom - newBottom) / lineHeight; + cursor.line = Math.floor(cursor.line); + cm.setCursor(cursor); + cursorCoords = cm.charCoords(cursor, 'local'); + cm.scrollTo( + null, cursorCoords.bottom - cm.getScrollInfo().clientHeight); + } else { + // Cursor stays within bounds. Just reposition the scroll window. + cm.scrollTo(null, newPos); + } + } + }, + scrollToCursor: function(cm, actionArgs) { + var lineNum = cm.getCursor().line; + var charCoords = cm.charCoords(Pos(lineNum, 0), 'local'); + var height = cm.getScrollInfo().clientHeight; + var y = charCoords.top; + var lineHeight = charCoords.bottom - y; + switch (actionArgs.position) { + case 'center': y = y - (height / 2) + lineHeight; + break; + case 'bottom': y = y - height + lineHeight; + break; + } + cm.scrollTo(null, y); + }, + replayMacro: function(cm, actionArgs, vim) { + var registerName = actionArgs.selectedCharacter; + var repeat = actionArgs.repeat; + var macroModeState = vimGlobalState.macroModeState; + if (registerName == '@') { + registerName = macroModeState.latestRegister; + } + while(repeat--){ + executeMacroRegister(cm, vim, macroModeState, registerName); + } + }, + enterMacroRecordMode: function(cm, actionArgs) { + var macroModeState = vimGlobalState.macroModeState; + var registerName = actionArgs.selectedCharacter; + if (vimGlobalState.registerController.isValidRegister(registerName)) { + macroModeState.enterMacroRecordMode(cm, registerName); + } + }, + toggleOverwrite: function(cm) { + if (!cm.state.overwrite) { + cm.toggleOverwrite(true); + cm.setOption('keyMap', 'vim-replace'); + CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"}); + } else { + cm.toggleOverwrite(false); + cm.setOption('keyMap', 'vim-insert'); + CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"}); + } + }, + enterInsertMode: function(cm, actionArgs, vim) { + if (cm.getOption('readOnly')) { return; } + vim.insertMode = true; + vim.insertModeRepeat = actionArgs && actionArgs.repeat || 1; + var insertAt = (actionArgs) ? actionArgs.insertAt : null; + var sel = vim.sel; + var head = actionArgs.head || cm.getCursor('head'); + var height = cm.listSelections().length; + if (insertAt == 'eol') { + head = Pos(head.line, lineLength(cm, head.line)); + } else if (insertAt == 'charAfter') { + head = offsetCursor(head, 0, 1); + } else if (insertAt == 'firstNonBlank') { + head = motions.moveToFirstNonWhiteSpaceCharacter(cm, head); + } else if (insertAt == 'startOfSelectedArea') { + if (!vim.visualBlock) { + if (sel.head.line < sel.anchor.line) { + head = sel.head; + } else { + head = Pos(sel.anchor.line, 0); + } + } else { + head = Pos( + Math.min(sel.head.line, sel.anchor.line), + Math.min(sel.head.ch, sel.anchor.ch)); + height = Math.abs(sel.head.line - sel.anchor.line) + 1; + } + } else if (insertAt == 'endOfSelectedArea') { + if (!vim.visualBlock) { + if (sel.head.line >= sel.anchor.line) { + head = offsetCursor(sel.head, 0, 1); + } else { + head = Pos(sel.anchor.line, 0); + } + } else { + head = Pos( + Math.min(sel.head.line, sel.anchor.line), + Math.max(sel.head.ch + 1, sel.anchor.ch)); + height = Math.abs(sel.head.line - sel.anchor.line) + 1; + } + } else if (insertAt == 'inplace') { + if (vim.visualMode){ + return; + } + } + cm.setOption('disableInput', false); + if (actionArgs && actionArgs.replace) { + // Handle Replace-mode as a special case of insert mode. + cm.toggleOverwrite(true); + cm.setOption('keyMap', 'vim-replace'); + CodeMirror.signal(cm, "vim-mode-change", {mode: "replace"}); + } else { + cm.toggleOverwrite(false); + cm.setOption('keyMap', 'vim-insert'); + CodeMirror.signal(cm, "vim-mode-change", {mode: "insert"}); + } + if (!vimGlobalState.macroModeState.isPlaying) { + // Only record if not replaying. + cm.on('change', onChange); + CodeMirror.on(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); + } + if (vim.visualMode) { + exitVisualMode(cm); + } + selectForInsert(cm, head, height); + }, + toggleVisualMode: function(cm, actionArgs, vim) { + var repeat = actionArgs.repeat; + var anchor = cm.getCursor(); + var head; + // TODO: The repeat should actually select number of characters/lines + // equal to the repeat times the size of the previous visual + // operation. + if (!vim.visualMode) { + // Entering visual mode + vim.visualMode = true; + vim.visualLine = !!actionArgs.linewise; + vim.visualBlock = !!actionArgs.blockwise; + head = clipCursorToContent( + cm, Pos(anchor.line, anchor.ch + repeat - 1), + true /** includeLineBreak */); + vim.sel = { + anchor: anchor, + head: head + }; + CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); + updateCmSelection(cm); + updateMark(cm, vim, '<', cursorMin(anchor, head)); + updateMark(cm, vim, '>', cursorMax(anchor, head)); + } else if (vim.visualLine ^ actionArgs.linewise || + vim.visualBlock ^ actionArgs.blockwise) { + // Toggling between modes + vim.visualLine = !!actionArgs.linewise; + vim.visualBlock = !!actionArgs.blockwise; + CodeMirror.signal(cm, "vim-mode-change", {mode: "visual", subMode: vim.visualLine ? "linewise" : vim.visualBlock ? "blockwise" : ""}); + updateCmSelection(cm); + } else { + exitVisualMode(cm); + } + }, + reselectLastSelection: function(cm, _actionArgs, vim) { + var lastSelection = vim.lastSelection; + if (vim.visualMode) { + updateLastSelection(cm, vim); + } + if (lastSelection) { + var anchor = lastSelection.anchorMark.find(); + var head = lastSelection.headMark.find(); + if (!anchor || !head) { + // If the marks have been destroyed due to edits, do nothing. + return; + } + vim.sel = { + anchor: anchor, + head: head + }; + vim.visualMode = true; + vim.visualLine = lastSelection.visualLine; + vim.visualBlock = lastSelection.visualBlock; + updateCmSelection(cm); + updateMark(cm, vim, '<', cursorMin(anchor, head)); + updateMark(cm, vim, '>', cursorMax(anchor, head)); + CodeMirror.signal(cm, 'vim-mode-change', { + mode: 'visual', + subMode: vim.visualLine ? 'linewise' : + vim.visualBlock ? 'blockwise' : ''}); + } + }, + joinLines: function(cm, actionArgs, vim) { + var curStart, curEnd; + if (vim.visualMode) { + curStart = cm.getCursor('anchor'); + curEnd = cm.getCursor('head'); + if (cursorIsBefore(curEnd, curStart)) { + var tmp = curEnd; + curEnd = curStart; + curStart = tmp; + } + curEnd.ch = lineLength(cm, curEnd.line) - 1; + } else { + // Repeat is the number of lines to join. Minimum 2 lines. + var repeat = Math.max(actionArgs.repeat, 2); + curStart = cm.getCursor(); + curEnd = clipCursorToContent(cm, Pos(curStart.line + repeat - 1, + Infinity)); + } + var finalCh = 0; + for (var i = curStart.line; i < curEnd.line; i++) { + finalCh = lineLength(cm, curStart.line); + var tmp = Pos(curStart.line + 1, + lineLength(cm, curStart.line + 1)); + var text = cm.getRange(curStart, tmp); + text = text.replace(/\n\s*/g, ' '); + cm.replaceRange(text, curStart, tmp); + } + var curFinalPos = Pos(curStart.line, finalCh); + if (vim.visualMode) { + exitVisualMode(cm, false); + } + cm.setCursor(curFinalPos); + }, + newLineAndEnterInsertMode: function(cm, actionArgs, vim) { + vim.insertMode = true; + var insertAt = copyCursor(cm.getCursor()); + if (insertAt.line === cm.firstLine() && !actionArgs.after) { + // Special case for inserting newline before start of document. + cm.replaceRange('\n', Pos(cm.firstLine(), 0)); + cm.setCursor(cm.firstLine(), 0); + } else { + insertAt.line = (actionArgs.after) ? insertAt.line : + insertAt.line - 1; + insertAt.ch = lineLength(cm, insertAt.line); + cm.setCursor(insertAt); + var newlineFn = CodeMirror.commands.newlineAndIndentContinueComment || + CodeMirror.commands.newlineAndIndent; + newlineFn(cm); + } + this.enterInsertMode(cm, { repeat: actionArgs.repeat }, vim); + }, + paste: function(cm, actionArgs, vim) { + var cur = copyCursor(cm.getCursor()); + var register = vimGlobalState.registerController.getRegister( + actionArgs.registerName); + var text = register.toString(); + if (!text) { + return; + } + if (actionArgs.matchIndent) { + var tabSize = cm.getOption("tabSize"); + // length that considers tabs and tabSize + var whitespaceLength = function(str) { + var tabs = (str.split("\t").length - 1); + var spaces = (str.split(" ").length - 1); + return tabs * tabSize + spaces * 1; + }; + var currentLine = cm.getLine(cm.getCursor().line); + var indent = whitespaceLength(currentLine.match(/^\s*/)[0]); + // chomp last newline b/c don't want it to match /^\s*/gm + var chompedText = text.replace(/\n$/, ''); + var wasChomped = text !== chompedText; + var firstIndent = whitespaceLength(text.match(/^\s*/)[0]); + var text = chompedText.replace(/^\s*/gm, function(wspace) { + var newIndent = indent + (whitespaceLength(wspace) - firstIndent); + if (newIndent < 0) { + return ""; + } + else if (cm.getOption("indentWithTabs")) { + var quotient = Math.floor(newIndent / tabSize); + return Array(quotient + 1).join('\t'); + } + else { + return Array(newIndent + 1).join(' '); + } + }); + text += wasChomped ? "\n" : ""; + } + if (actionArgs.repeat > 1) { + var text = Array(actionArgs.repeat + 1).join(text); + } + var linewise = register.linewise; + var blockwise = register.blockwise; + if (linewise) { + if(vim.visualMode) { + text = vim.visualLine ? text.slice(0, -1) : '\n' + text.slice(0, text.length - 1) + '\n'; + } else if (actionArgs.after) { + // Move the newline at the end to the start instead, and paste just + // before the newline character of the line we are on right now. + text = '\n' + text.slice(0, text.length - 1); + cur.ch = lineLength(cm, cur.line); + } else { + cur.ch = 0; + } + } else { + if (blockwise) { + text = text.split('\n'); + for (var i = 0; i < text.length; i++) { + text[i] = (text[i] == '') ? ' ' : text[i]; + } + } + cur.ch += actionArgs.after ? 1 : 0; + } + var curPosFinal; + var idx; + if (vim.visualMode) { + // save the pasted text for reselection if the need arises + vim.lastPastedText = text; + var lastSelectionCurEnd; + var selectedArea = getSelectedAreaRange(cm, vim); + var selectionStart = selectedArea[0]; + var selectionEnd = selectedArea[1]; + var selectedText = cm.getSelection(); + var selections = cm.listSelections(); + var emptyStrings = new Array(selections.length).join('1').split('1'); + // save the curEnd marker before it get cleared due to cm.replaceRange. + if (vim.lastSelection) { + lastSelectionCurEnd = vim.lastSelection.headMark.find(); + } + // push the previously selected text to unnamed register + vimGlobalState.registerController.unnamedRegister.setText(selectedText); + if (blockwise) { + // first delete the selected text + cm.replaceSelections(emptyStrings); + // Set new selections as per the block length of the yanked text + selectionEnd = Pos(selectionStart.line + text.length-1, selectionStart.ch); + cm.setCursor(selectionStart); + selectBlock(cm, selectionEnd); + cm.replaceSelections(text); + curPosFinal = selectionStart; + } else if (vim.visualBlock) { + cm.replaceSelections(emptyStrings); + cm.setCursor(selectionStart); + cm.replaceRange(text, selectionStart, selectionStart); + curPosFinal = selectionStart; + } else { + cm.replaceRange(text, selectionStart, selectionEnd); + curPosFinal = cm.posFromIndex(cm.indexFromPos(selectionStart) + text.length - 1); + } + // restore the the curEnd marker + if(lastSelectionCurEnd) { + vim.lastSelection.headMark = cm.setBookmark(lastSelectionCurEnd); + } + if (linewise) { + curPosFinal.ch=0; + } + } else { + if (blockwise) { + cm.setCursor(cur); + for (var i = 0; i < text.length; i++) { + var line = cur.line+i; + if (line > cm.lastLine()) { + cm.replaceRange('\n', Pos(line, 0)); + } + var lastCh = lineLength(cm, line); + if (lastCh < cur.ch) { + extendLineToColumn(cm, line, cur.ch); + } + } + cm.setCursor(cur); + selectBlock(cm, Pos(cur.line + text.length-1, cur.ch)); + cm.replaceSelections(text); + curPosFinal = cur; + } else { + cm.replaceRange(text, cur); + // Now fine tune the cursor to where we want it. + if (linewise && actionArgs.after) { + curPosFinal = Pos( + cur.line + 1, + findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line + 1))); + } else if (linewise && !actionArgs.after) { + curPosFinal = Pos( + cur.line, + findFirstNonWhiteSpaceCharacter(cm.getLine(cur.line))); + } else if (!linewise && actionArgs.after) { + idx = cm.indexFromPos(cur); + curPosFinal = cm.posFromIndex(idx + text.length - 1); + } else { + idx = cm.indexFromPos(cur); + curPosFinal = cm.posFromIndex(idx + text.length); + } + } + } + if (vim.visualMode) { + exitVisualMode(cm, false); + } + cm.setCursor(curPosFinal); + }, + undo: function(cm, actionArgs) { + cm.operation(function() { + repeatFn(cm, CodeMirror.commands.undo, actionArgs.repeat)(); + cm.setCursor(cm.getCursor('anchor')); + }); + }, + redo: function(cm, actionArgs) { + repeatFn(cm, CodeMirror.commands.redo, actionArgs.repeat)(); + }, + setRegister: function(_cm, actionArgs, vim) { + vim.inputState.registerName = actionArgs.selectedCharacter; + }, + setMark: function(cm, actionArgs, vim) { + var markName = actionArgs.selectedCharacter; + updateMark(cm, vim, markName, cm.getCursor()); + }, + replace: function(cm, actionArgs, vim) { + var replaceWith = actionArgs.selectedCharacter; + var curStart = cm.getCursor(); + var replaceTo; + var curEnd; + var selections = cm.listSelections(); + if (vim.visualMode) { + curStart = cm.getCursor('start'); + curEnd = cm.getCursor('end'); + } else { + var line = cm.getLine(curStart.line); + replaceTo = curStart.ch + actionArgs.repeat; + if (replaceTo > line.length) { + replaceTo=line.length; + } + curEnd = Pos(curStart.line, replaceTo); + } + if (replaceWith=='\n') { + if (!vim.visualMode) cm.replaceRange('', curStart, curEnd); + // special case, where vim help says to replace by just one line-break + (CodeMirror.commands.newlineAndIndentContinueComment || CodeMirror.commands.newlineAndIndent)(cm); + } else { + var replaceWithStr = cm.getRange(curStart, curEnd); + //replace all characters in range by selected, but keep linebreaks + replaceWithStr = replaceWithStr.replace(/[^\n]/g, replaceWith); + if (vim.visualBlock) { + // Tabs are split in visua block before replacing + var spaces = new Array(cm.getOption("tabSize")+1).join(' '); + replaceWithStr = cm.getSelection(); + replaceWithStr = replaceWithStr.replace(/\t/g, spaces).replace(/[^\n]/g, replaceWith).split('\n'); + cm.replaceSelections(replaceWithStr); + } else { + cm.replaceRange(replaceWithStr, curStart, curEnd); + } + if (vim.visualMode) { + curStart = cursorIsBefore(selections[0].anchor, selections[0].head) ? + selections[0].anchor : selections[0].head; + cm.setCursor(curStart); + exitVisualMode(cm, false); + } else { + cm.setCursor(offsetCursor(curEnd, 0, -1)); + } + } + }, + incrementNumberToken: function(cm, actionArgs) { + var cur = cm.getCursor(); + var lineStr = cm.getLine(cur.line); + var re = /-?\d+/g; + var match; + var start; + var end; + var numberStr; + var token; + while ((match = re.exec(lineStr)) !== null) { + token = match[0]; + start = match.index; + end = start + token.length; + if (cur.ch < end)break; + } + if (!actionArgs.backtrack && (end <= cur.ch))return; + if (token) { + var increment = actionArgs.increase ? 1 : -1; + var number = parseInt(token) + (increment * actionArgs.repeat); + var from = Pos(cur.line, start); + var to = Pos(cur.line, end); + numberStr = number.toString(); + cm.replaceRange(numberStr, from, to); + } else { + return; + } + cm.setCursor(Pos(cur.line, start + numberStr.length - 1)); + }, + repeatLastEdit: function(cm, actionArgs, vim) { + var lastEditInputState = vim.lastEditInputState; + if (!lastEditInputState) { return; } + var repeat = actionArgs.repeat; + if (repeat && actionArgs.repeatIsExplicit) { + vim.lastEditInputState.repeatOverride = repeat; + } else { + repeat = vim.lastEditInputState.repeatOverride || repeat; + } + repeatLastEdit(cm, vim, repeat, false /** repeatForInsert */); + }, + indent: function(cm, actionArgs) { + cm.indentLine(cm.getCursor().line, actionArgs.indentRight); + }, + exitInsertMode: exitInsertMode + }; + + function defineAction(name, fn) { + actions[name] = fn; + } + + /* + * Below are miscellaneous utility functions used by vim.js + */ + + /** + * Clips cursor to ensure that line is within the buffer's range + * If includeLineBreak is true, then allow cur.ch == lineLength. + */ + function clipCursorToContent(cm, cur, includeLineBreak) { + var line = Math.min(Math.max(cm.firstLine(), cur.line), cm.lastLine() ); + var maxCh = lineLength(cm, line) - 1; + maxCh = (includeLineBreak) ? maxCh + 1 : maxCh; + var ch = Math.min(Math.max(0, cur.ch), maxCh); + return Pos(line, ch); + } + function copyArgs(args) { + var ret = {}; + for (var prop in args) { + if (args.hasOwnProperty(prop)) { + ret[prop] = args[prop]; + } + } + return ret; + } + function offsetCursor(cur, offsetLine, offsetCh) { + if (typeof offsetLine === 'object') { + offsetCh = offsetLine.ch; + offsetLine = offsetLine.line; + } + return Pos(cur.line + offsetLine, cur.ch + offsetCh); + } + function getOffset(anchor, head) { + return { + line: head.line - anchor.line, + ch: head.line - anchor.line + }; + } + function commandMatches(keys, keyMap, context, inputState) { + // Partial matches are not applied. They inform the key handler + // that the current key sequence is a subsequence of a valid key + // sequence, so that the key buffer is not cleared. + var match, partial = [], full = []; + for (var i = 0; i < keyMap.length; i++) { + var command = keyMap[i]; + if (context == 'insert' && command.context != 'insert' || + command.context && command.context != context || + inputState.operator && command.type == 'action' || + !(match = commandMatch(keys, command.keys))) { continue; } + if (match == 'partial') { partial.push(command); } + if (match == 'full') { full.push(command); } + } + return { + partial: partial.length && partial, + full: full.length && full + }; + } + function commandMatch(pressed, mapped) { + if (mapped.slice(-11) == '') { + // Last character matches anything. + var prefixLen = mapped.length - 11; + var pressedPrefix = pressed.slice(0, prefixLen); + var mappedPrefix = mapped.slice(0, prefixLen); + return pressedPrefix == mappedPrefix && pressed.length > prefixLen ? 'full' : + mappedPrefix.indexOf(pressedPrefix) == 0 ? 'partial' : false; + } else { + return pressed == mapped ? 'full' : + mapped.indexOf(pressed) == 0 ? 'partial' : false; + } + } + function lastChar(keys) { + var match = /^.*(<[^>]+>)$/.exec(keys); + var selectedCharacter = match ? match[1] : keys.slice(-1); + if (selectedCharacter.length > 1){ + switch(selectedCharacter){ + case '': + selectedCharacter='\n'; + break; + case '': + selectedCharacter=' '; + break; + default: + selectedCharacter=''; + break; + } + } + return selectedCharacter; + } + function repeatFn(cm, fn, repeat) { + return function() { + for (var i = 0; i < repeat; i++) { + fn(cm); + } + }; + } + function copyCursor(cur) { + return Pos(cur.line, cur.ch); + } + function cursorEqual(cur1, cur2) { + return cur1.ch == cur2.ch && cur1.line == cur2.line; + } + function cursorIsBefore(cur1, cur2) { + if (cur1.line < cur2.line) { + return true; + } + if (cur1.line == cur2.line && cur1.ch < cur2.ch) { + return true; + } + return false; + } + function cursorMin(cur1, cur2) { + if (arguments.length > 2) { + cur2 = cursorMin.apply(undefined, Array.prototype.slice.call(arguments, 1)); + } + return cursorIsBefore(cur1, cur2) ? cur1 : cur2; + } + function cursorMax(cur1, cur2) { + if (arguments.length > 2) { + cur2 = cursorMax.apply(undefined, Array.prototype.slice.call(arguments, 1)); + } + return cursorIsBefore(cur1, cur2) ? cur2 : cur1; + } + function cursorIsBetween(cur1, cur2, cur3) { + // returns true if cur2 is between cur1 and cur3. + var cur1before2 = cursorIsBefore(cur1, cur2); + var cur2before3 = cursorIsBefore(cur2, cur3); + return cur1before2 && cur2before3; + } + function lineLength(cm, lineNum) { + return cm.getLine(lineNum).length; + } + function trim(s) { + if (s.trim) { + return s.trim(); + } + return s.replace(/^\s+|\s+$/g, ''); + } + function escapeRegex(s) { + return s.replace(/([.?*+$\[\]\/\\(){}|\-])/g, '\\$1'); + } + function extendLineToColumn(cm, lineNum, column) { + var endCh = lineLength(cm, lineNum); + var spaces = new Array(column-endCh+1).join(' '); + cm.setCursor(Pos(lineNum, endCh)); + cm.replaceRange(spaces, cm.getCursor()); + } + // This functions selects a rectangular block + // of text with selectionEnd as any of its corner + // Height of block: + // Difference in selectionEnd.line and first/last selection.line + // Width of the block: + // Distance between selectionEnd.ch and any(first considered here) selection.ch + function selectBlock(cm, selectionEnd) { + var selections = [], ranges = cm.listSelections(); + var head = copyCursor(cm.clipPos(selectionEnd)); + var isClipped = !cursorEqual(selectionEnd, head); + var curHead = cm.getCursor('head'); + var primIndex = getIndex(ranges, curHead); + var wasClipped = cursorEqual(ranges[primIndex].head, ranges[primIndex].anchor); + var max = ranges.length - 1; + var index = max - primIndex > primIndex ? max : 0; + var base = ranges[index].anchor; + + var firstLine = Math.min(base.line, head.line); + var lastLine = Math.max(base.line, head.line); + var baseCh = base.ch, headCh = head.ch; + + var dir = ranges[index].head.ch - baseCh; + var newDir = headCh - baseCh; + if (dir > 0 && newDir <= 0) { + baseCh++; + if (!isClipped) { headCh--; } + } else if (dir < 0 && newDir >= 0) { + baseCh--; + if (!wasClipped) { headCh++; } + } else if (dir < 0 && newDir == -1) { + baseCh--; + headCh++; + } + for (var line = firstLine; line <= lastLine; line++) { + var range = {anchor: new Pos(line, baseCh), head: new Pos(line, headCh)}; + selections.push(range); + } + cm.setSelections(selections); + selectionEnd.ch = headCh; + base.ch = baseCh; + return base; + } + function selectForInsert(cm, head, height) { + var sel = []; + for (var i = 0; i < height; i++) { + var lineHead = offsetCursor(head, i, 0); + sel.push({anchor: lineHead, head: lineHead}); + } + cm.setSelections(sel, 0); + } + // getIndex returns the index of the cursor in the selections. + function getIndex(ranges, cursor, end) { + for (var i = 0; i < ranges.length; i++) { + var atAnchor = end != 'head' && cursorEqual(ranges[i].anchor, cursor); + var atHead = end != 'anchor' && cursorEqual(ranges[i].head, cursor); + if (atAnchor || atHead) { + return i; + } + } + return -1; + } + function getSelectedAreaRange(cm, vim) { + var lastSelection = vim.lastSelection; + var getCurrentSelectedAreaRange = function() { + var selections = cm.listSelections(); + var start = selections[0]; + var end = selections[selections.length-1]; + var selectionStart = cursorIsBefore(start.anchor, start.head) ? start.anchor : start.head; + var selectionEnd = cursorIsBefore(end.anchor, end.head) ? end.head : end.anchor; + return [selectionStart, selectionEnd]; + }; + var getLastSelectedAreaRange = function() { + var selectionStart = cm.getCursor(); + var selectionEnd = cm.getCursor(); + var block = lastSelection.visualBlock; + if (block) { + var width = block.width; + var height = block.height; + selectionEnd = Pos(selectionStart.line + height, selectionStart.ch + width); + var selections = []; + // selectBlock creates a 'proper' rectangular block. + // We do not want that in all cases, so we manually set selections. + for (var i = selectionStart.line; i < selectionEnd.line; i++) { + var anchor = Pos(i, selectionStart.ch); + var head = Pos(i, selectionEnd.ch); + var range = {anchor: anchor, head: head}; + selections.push(range); + } + cm.setSelections(selections); + } else { + var start = lastSelection.anchorMark.find(); + var end = lastSelection.headMark.find(); + var line = end.line - start.line; + var ch = end.ch - start.ch; + selectionEnd = {line: selectionEnd.line + line, ch: line ? selectionEnd.ch : ch + selectionEnd.ch}; + if (lastSelection.visualLine) { + selectionStart = Pos(selectionStart.line, 0); + selectionEnd = Pos(selectionEnd.line, lineLength(cm, selectionEnd.line)); + } + cm.setSelection(selectionStart, selectionEnd); + } + return [selectionStart, selectionEnd]; + }; + if (!vim.visualMode) { + // In case of replaying the action. + return getLastSelectedAreaRange(); + } else { + return getCurrentSelectedAreaRange(); + } + } + // Updates the previous selection with the current selection's values. This + // should only be called in visual mode. + function updateLastSelection(cm, vim) { + var anchor = vim.sel.anchor; + var head = vim.sel.head; + // To accommodate the effect of lastPastedText in the last selection + if (vim.lastPastedText) { + head = cm.posFromIndex(cm.indexFromPos(anchor) + vim.lastPastedText.length); + vim.lastPastedText = null; + } + vim.lastSelection = {'anchorMark': cm.setBookmark(anchor), + 'headMark': cm.setBookmark(head), + 'anchor': copyCursor(anchor), + 'head': copyCursor(head), + 'visualMode': vim.visualMode, + 'visualLine': vim.visualLine, + 'visualBlock': vim.visualBlock}; + } + function expandSelection(cm, start, end) { + var sel = cm.state.vim.sel; + var head = sel.head; + var anchor = sel.anchor; + var tmp; + if (cursorIsBefore(end, start)) { + tmp = end; + end = start; + start = tmp; + } + if (cursorIsBefore(head, anchor)) { + head = cursorMin(start, head); + anchor = cursorMax(anchor, end); + } else { + anchor = cursorMin(start, anchor); + head = cursorMax(head, end); + head = offsetCursor(head, 0, -1); + if (head.ch == -1 && head.line != cm.firstLine()) { + head = Pos(head.line - 1, lineLength(cm, head.line - 1)); + } + } + return [anchor, head]; + } + /** + * Updates the CodeMirror selection to match the provided vim selection. + * If no arguments are given, it uses the current vim selection state. + */ + function updateCmSelection(cm, sel, mode) { + var vim = cm.state.vim; + sel = sel || vim.sel; + var mode = mode || + vim.visualLine ? 'line' : vim.visualBlock ? 'block' : 'char'; + var cmSel = makeCmSelection(cm, sel, mode); + cm.setSelections(cmSel.ranges, cmSel.primary); + updateFakeCursor(cm); + } + function makeCmSelection(cm, sel, mode, exclusive) { + var head = copyCursor(sel.head); + var anchor = copyCursor(sel.anchor); + if (mode == 'char') { + var headOffset = !exclusive && !cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; + var anchorOffset = cursorIsBefore(sel.head, sel.anchor) ? 1 : 0; + head = offsetCursor(sel.head, 0, headOffset); + anchor = offsetCursor(sel.anchor, 0, anchorOffset); + return { + ranges: [{anchor: anchor, head: head}], + primary: 0 + }; + } else if (mode == 'line') { + if (!cursorIsBefore(sel.head, sel.anchor)) { + anchor.ch = 0; + + var lastLine = cm.lastLine(); + if (head.line > lastLine) { + head.line = lastLine; + } + head.ch = lineLength(cm, head.line); + } else { + head.ch = 0; + anchor.ch = lineLength(cm, anchor.line); + } + return { + ranges: [{anchor: anchor, head: head}], + primary: 0 + }; + } else if (mode == 'block') { + var top = Math.min(anchor.line, head.line), + left = Math.min(anchor.ch, head.ch), + bottom = Math.max(anchor.line, head.line), + right = Math.max(anchor.ch, head.ch) + 1; + var height = bottom - top + 1; + var primary = head.line == top ? 0 : height - 1; + var ranges = []; + for (var i = 0; i < height; i++) { + ranges.push({ + anchor: Pos(top + i, left), + head: Pos(top + i, right) + }); + } + return { + ranges: ranges, + primary: primary + }; + } + } + function getHead(cm) { + var cur = cm.getCursor('head'); + if (cm.getSelection().length == 1) { + // Small corner case when only 1 character is selected. The "real" + // head is the left of head and anchor. + cur = cursorMin(cur, cm.getCursor('anchor')); + } + return cur; + } + + /** + * If moveHead is set to false, the CodeMirror selection will not be + * touched. The caller assumes the responsibility of putting the cursor + * in the right place. + */ + function exitVisualMode(cm, moveHead) { + var vim = cm.state.vim; + if (moveHead !== false) { + cm.setCursor(clipCursorToContent(cm, vim.sel.head)); + } + updateLastSelection(cm, vim); + vim.visualMode = false; + vim.visualLine = false; + vim.visualBlock = false; + CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); + if (vim.fakeCursor) { + vim.fakeCursor.clear(); + } + } + + // Remove any trailing newlines from the selection. For + // example, with the caret at the start of the last word on the line, + // 'dw' should word, but not the newline, while 'w' should advance the + // caret to the first character of the next line. + function clipToLine(cm, curStart, curEnd) { + var selection = cm.getRange(curStart, curEnd); + // Only clip if the selection ends with trailing newline + whitespace + if (/\n\s*$/.test(selection)) { + var lines = selection.split('\n'); + // We know this is all whitespace. + lines.pop(); + + // Cases: + // 1. Last word is an empty line - do not clip the trailing '\n' + // 2. Last word is not an empty line - clip the trailing '\n' + var line; + // Find the line containing the last word, and clip all whitespace up + // to it. + for (var line = lines.pop(); lines.length > 0 && line && isWhiteSpaceString(line); line = lines.pop()) { + curEnd.line--; + curEnd.ch = 0; + } + // If the last word is not an empty line, clip an additional newline + if (line) { + curEnd.line--; + curEnd.ch = lineLength(cm, curEnd.line); + } else { + curEnd.ch = 0; + } + } + } + + // Expand the selection to line ends. + function expandSelectionToLine(_cm, curStart, curEnd) { + curStart.ch = 0; + curEnd.ch = 0; + curEnd.line++; + } + + function findFirstNonWhiteSpaceCharacter(text) { + if (!text) { + return 0; + } + var firstNonWS = text.search(/\S/); + return firstNonWS == -1 ? text.length : firstNonWS; + } + + function expandWordUnderCursor(cm, inclusive, _forward, bigWord, noSymbol) { + var cur = getHead(cm); + var line = cm.getLine(cur.line); + var idx = cur.ch; + + // Seek to first word or non-whitespace character, depending on if + // noSymbol is true. + var test = noSymbol ? wordCharTest[0] : bigWordCharTest [0]; + while (!test(line.charAt(idx))) { + idx++; + if (idx >= line.length) { return null; } + } + + if (bigWord) { + test = bigWordCharTest[0]; + } else { + test = wordCharTest[0]; + if (!test(line.charAt(idx))) { + test = wordCharTest[1]; + } + } + + var end = idx, start = idx; + while (test(line.charAt(end)) && end < line.length) { end++; } + while (test(line.charAt(start)) && start >= 0) { start--; } + start++; + + if (inclusive) { + // If present, include all whitespace after word. + // Otherwise, include all whitespace before word, except indentation. + var wordEnd = end; + while (/\s/.test(line.charAt(end)) && end < line.length) { end++; } + if (wordEnd == end) { + var wordStart = start; + while (/\s/.test(line.charAt(start - 1)) && start > 0) { start--; } + if (!start) { start = wordStart; } + } + } + return { start: Pos(cur.line, start), end: Pos(cur.line, end) }; + } + + function recordJumpPosition(cm, oldCur, newCur) { + if (!cursorEqual(oldCur, newCur)) { + vimGlobalState.jumpList.add(cm, oldCur, newCur); + } + } + + function recordLastCharacterSearch(increment, args) { + vimGlobalState.lastCharacterSearch.increment = increment; + vimGlobalState.lastCharacterSearch.forward = args.forward; + vimGlobalState.lastCharacterSearch.selectedCharacter = args.selectedCharacter; + } + + var symbolToMode = { + '(': 'bracket', ')': 'bracket', '{': 'bracket', '}': 'bracket', + '[': 'section', ']': 'section', + '*': 'comment', '/': 'comment', + 'm': 'method', 'M': 'method', + '#': 'preprocess' + }; + var findSymbolModes = { + bracket: { + isComplete: function(state) { + if (state.nextCh === state.symb) { + state.depth++; + if (state.depth >= 1)return true; + } else if (state.nextCh === state.reverseSymb) { + state.depth--; + } + return false; + } + }, + section: { + init: function(state) { + state.curMoveThrough = true; + state.symb = (state.forward ? ']' : '[') === state.symb ? '{' : '}'; + }, + isComplete: function(state) { + return state.index === 0 && state.nextCh === state.symb; + } + }, + comment: { + isComplete: function(state) { + var found = state.lastCh === '*' && state.nextCh === '/'; + state.lastCh = state.nextCh; + return found; + } + }, + // TODO: The original Vim implementation only operates on level 1 and 2. + // The current implementation doesn't check for code block level and + // therefore it operates on any levels. + method: { + init: function(state) { + state.symb = (state.symb === 'm' ? '{' : '}'); + state.reverseSymb = state.symb === '{' ? '}' : '{'; + }, + isComplete: function(state) { + if (state.nextCh === state.symb)return true; + return false; + } + }, + preprocess: { + init: function(state) { + state.index = 0; + }, + isComplete: function(state) { + if (state.nextCh === '#') { + var token = state.lineText.match(/#(\w+)/)[1]; + if (token === 'endif') { + if (state.forward && state.depth === 0) { + return true; + } + state.depth++; + } else if (token === 'if') { + if (!state.forward && state.depth === 0) { + return true; + } + state.depth--; + } + if (token === 'else' && state.depth === 0)return true; + } + return false; + } + } + }; + function findSymbol(cm, repeat, forward, symb) { + var cur = copyCursor(cm.getCursor()); + var increment = forward ? 1 : -1; + var endLine = forward ? cm.lineCount() : -1; + var curCh = cur.ch; + var line = cur.line; + var lineText = cm.getLine(line); + var state = { + lineText: lineText, + nextCh: lineText.charAt(curCh), + lastCh: null, + index: curCh, + symb: symb, + reverseSymb: (forward ? { ')': '(', '}': '{' } : { '(': ')', '{': '}' })[symb], + forward: forward, + depth: 0, + curMoveThrough: false + }; + var mode = symbolToMode[symb]; + if (!mode)return cur; + var init = findSymbolModes[mode].init; + var isComplete = findSymbolModes[mode].isComplete; + if (init) { init(state); } + while (line !== endLine && repeat) { + state.index += increment; + state.nextCh = state.lineText.charAt(state.index); + if (!state.nextCh) { + line += increment; + state.lineText = cm.getLine(line) || ''; + if (increment > 0) { + state.index = 0; + } else { + var lineLen = state.lineText.length; + state.index = (lineLen > 0) ? (lineLen-1) : 0; + } + state.nextCh = state.lineText.charAt(state.index); + } + if (isComplete(state)) { + cur.line = line; + cur.ch = state.index; + repeat--; + } + } + if (state.nextCh || state.curMoveThrough) { + return Pos(line, state.index); + } + return cur; + } + + /** + * Returns the boundaries of the next word. If the cursor in the middle of + * the word, then returns the boundaries of the current word, starting at + * the cursor. If the cursor is at the start/end of a word, and we are going + * forward/backward, respectively, find the boundaries of the next word. + * + * @param {CodeMirror} cm CodeMirror object. + * @param {Cursor} cur The cursor position. + * @param {boolean} forward True to search forward. False to search + * backward. + * @param {boolean} bigWord True if punctuation count as part of the word. + * False if only [a-zA-Z0-9] characters count as part of the word. + * @param {boolean} emptyLineIsWord True if empty lines should be treated + * as words. + * @return {Object{from:number, to:number, line: number}} The boundaries of + * the word, or null if there are no more words. + */ + function findWord(cm, cur, forward, bigWord, emptyLineIsWord) { + var lineNum = cur.line; + var pos = cur.ch; + var line = cm.getLine(lineNum); + var dir = forward ? 1 : -1; + var charTests = bigWord ? bigWordCharTest: wordCharTest; + + if (emptyLineIsWord && line == '') { + lineNum += dir; + line = cm.getLine(lineNum); + if (!isLine(cm, lineNum)) { + return null; + } + pos = (forward) ? 0 : line.length; + } + + while (true) { + if (emptyLineIsWord && line == '') { + return { from: 0, to: 0, line: lineNum }; + } + var stop = (dir > 0) ? line.length : -1; + var wordStart = stop, wordEnd = stop; + // Find bounds of next word. + while (pos != stop) { + var foundWord = false; + for (var i = 0; i < charTests.length && !foundWord; ++i) { + if (charTests[i](line.charAt(pos))) { + wordStart = pos; + // Advance to end of word. + while (pos != stop && charTests[i](line.charAt(pos))) { + pos += dir; + } + wordEnd = pos; + foundWord = wordStart != wordEnd; + if (wordStart == cur.ch && lineNum == cur.line && + wordEnd == wordStart + dir) { + // We started at the end of a word. Find the next one. + continue; + } else { + return { + from: Math.min(wordStart, wordEnd + 1), + to: Math.max(wordStart, wordEnd), + line: lineNum }; + } + } + } + if (!foundWord) { + pos += dir; + } + } + // Advance to next/prev line. + lineNum += dir; + if (!isLine(cm, lineNum)) { + return null; + } + line = cm.getLine(lineNum); + pos = (dir > 0) ? 0 : line.length; + } + } + + /** + * @param {CodeMirror} cm CodeMirror object. + * @param {Pos} cur The position to start from. + * @param {int} repeat Number of words to move past. + * @param {boolean} forward True to search forward. False to search + * backward. + * @param {boolean} wordEnd True to move to end of word. False to move to + * beginning of word. + * @param {boolean} bigWord True if punctuation count as part of the word. + * False if only alphabet characters count as part of the word. + * @return {Cursor} The position the cursor should move to. + */ + function moveToWord(cm, cur, repeat, forward, wordEnd, bigWord) { + var curStart = copyCursor(cur); + var words = []; + if (forward && !wordEnd || !forward && wordEnd) { + repeat++; + } + // For 'e', empty lines are not considered words, go figure. + var emptyLineIsWord = !(forward && wordEnd); + for (var i = 0; i < repeat; i++) { + var word = findWord(cm, cur, forward, bigWord, emptyLineIsWord); + if (!word) { + var eodCh = lineLength(cm, cm.lastLine()); + words.push(forward + ? {line: cm.lastLine(), from: eodCh, to: eodCh} + : {line: 0, from: 0, to: 0}); + break; + } + words.push(word); + cur = Pos(word.line, forward ? (word.to - 1) : word.from); + } + var shortCircuit = words.length != repeat; + var firstWord = words[0]; + var lastWord = words.pop(); + if (forward && !wordEnd) { + // w + if (!shortCircuit && (firstWord.from != curStart.ch || firstWord.line != curStart.line)) { + // We did not start in the middle of a word. Discard the extra word at the end. + lastWord = words.pop(); + } + return Pos(lastWord.line, lastWord.from); + } else if (forward && wordEnd) { + return Pos(lastWord.line, lastWord.to - 1); + } else if (!forward && wordEnd) { + // ge + if (!shortCircuit && (firstWord.to != curStart.ch || firstWord.line != curStart.line)) { + // We did not start in the middle of a word. Discard the extra word at the end. + lastWord = words.pop(); + } + return Pos(lastWord.line, lastWord.to); + } else { + // b + return Pos(lastWord.line, lastWord.from); + } + } + + function moveToCharacter(cm, repeat, forward, character) { + var cur = cm.getCursor(); + var start = cur.ch; + var idx; + for (var i = 0; i < repeat; i ++) { + var line = cm.getLine(cur.line); + idx = charIdxInLine(start, line, character, forward, true); + if (idx == -1) { + return null; + } + start = idx; + } + return Pos(cm.getCursor().line, idx); + } + + function moveToColumn(cm, repeat) { + // repeat is always >= 1, so repeat - 1 always corresponds + // to the column we want to go to. + var line = cm.getCursor().line; + return clipCursorToContent(cm, Pos(line, repeat - 1)); + } + + function updateMark(cm, vim, markName, pos) { + if (!inArray(markName, validMarks)) { + return; + } + if (vim.marks[markName]) { + vim.marks[markName].clear(); + } + vim.marks[markName] = cm.setBookmark(pos); + } + + function charIdxInLine(start, line, character, forward, includeChar) { + // Search for char in line. + // motion_options: {forward, includeChar} + // If includeChar = true, include it too. + // If forward = true, search forward, else search backwards. + // If char is not found on this line, do nothing + var idx; + if (forward) { + idx = line.indexOf(character, start + 1); + if (idx != -1 && !includeChar) { + idx -= 1; + } + } else { + idx = line.lastIndexOf(character, start - 1); + if (idx != -1 && !includeChar) { + idx += 1; + } + } + return idx; + } + + function findParagraph(cm, head, repeat, dir, inclusive) { + var line = head.line; + var min = cm.firstLine(); + var max = cm.lastLine(); + var start, end, i = line; + function isEmpty(i) { return !cm.getLine(i); } + function isBoundary(i, dir, any) { + if (any) { return isEmpty(i) != isEmpty(i + dir); } + return !isEmpty(i) && isEmpty(i + dir); + } + if (dir) { + while (min <= i && i <= max && repeat > 0) { + if (isBoundary(i, dir)) { repeat--; } + i += dir; + } + return new Pos(i, 0); + } + + var vim = cm.state.vim; + if (vim.visualLine && isBoundary(line, 1, true)) { + var anchor = vim.sel.anchor; + if (isBoundary(anchor.line, -1, true)) { + if (!inclusive || anchor.line != line) { + line += 1; + } + } + } + var startState = isEmpty(line); + for (i = line; i <= max && repeat; i++) { + if (isBoundary(i, 1, true)) { + if (!inclusive || isEmpty(i) != startState) { + repeat--; + } + } + } + end = new Pos(i, 0); + // select boundary before paragraph for the last one + if (i > max && !startState) { startState = true; } + else { inclusive = false; } + for (i = line; i > min; i--) { + if (!inclusive || isEmpty(i) == startState || i == line) { + if (isBoundary(i, -1, true)) { break; } + } + } + start = new Pos(i, 0); + return { start: start, end: end }; + } + + // TODO: perhaps this finagling of start and end positions belonds + // in codemirror/replaceRange? + function selectCompanionObject(cm, head, symb, inclusive) { + var cur = head, start, end; + + var bracketRegexp = ({ + '(': /[()]/, ')': /[()]/, + '[': /[[\]]/, ']': /[[\]]/, + '{': /[{}]/, '}': /[{}]/})[symb]; + var openSym = ({ + '(': '(', ')': '(', + '[': '[', ']': '[', + '{': '{', '}': '{'})[symb]; + var curChar = cm.getLine(cur.line).charAt(cur.ch); + // Due to the behavior of scanForBracket, we need to add an offset if the + // cursor is on a matching open bracket. + var offset = curChar === openSym ? 1 : 0; + + start = cm.scanForBracket(Pos(cur.line, cur.ch + offset), -1, null, {'bracketRegex': bracketRegexp}); + end = cm.scanForBracket(Pos(cur.line, cur.ch + offset), 1, null, {'bracketRegex': bracketRegexp}); + + if (!start || !end) { + return { start: cur, end: cur }; + } + + start = start.pos; + end = end.pos; + + if ((start.line == end.line && start.ch > end.ch) + || (start.line > end.line)) { + var tmp = start; + start = end; + end = tmp; + } + + if (inclusive) { + end.ch += 1; + } else { + start.ch += 1; + } + + return { start: start, end: end }; + } + + // Takes in a symbol and a cursor and tries to simulate text objects that + // have identical opening and closing symbols + // TODO support across multiple lines + function findBeginningAndEnd(cm, head, symb, inclusive) { + var cur = copyCursor(head); + var line = cm.getLine(cur.line); + var chars = line.split(''); + var start, end, i, len; + var firstIndex = chars.indexOf(symb); + + // the decision tree is to always look backwards for the beginning first, + // but if the cursor is in front of the first instance of the symb, + // then move the cursor forward + if (cur.ch < firstIndex) { + cur.ch = firstIndex; + // Why is this line even here??? + // cm.setCursor(cur.line, firstIndex+1); + } + // otherwise if the cursor is currently on the closing symbol + else if (firstIndex < cur.ch && chars[cur.ch] == symb) { + end = cur.ch; // assign end to the current cursor + --cur.ch; // make sure to look backwards + } + + // if we're currently on the symbol, we've got a start + if (chars[cur.ch] == symb && !end) { + start = cur.ch + 1; // assign start to ahead of the cursor + } else { + // go backwards to find the start + for (i = cur.ch; i > -1 && !start; i--) { + if (chars[i] == symb) { + start = i + 1; + } + } + } + + // look forwards for the end symbol + if (start && !end) { + for (i = start, len = chars.length; i < len && !end; i++) { + if (chars[i] == symb) { + end = i; + } + } + } + + // nothing found + if (!start || !end) { + return { start: cur, end: cur }; + } + + // include the symbols + if (inclusive) { + --start; ++end; + } + + return { + start: Pos(cur.line, start), + end: Pos(cur.line, end) + }; + } + + // Search functions + defineOption('pcre', true, 'boolean'); + function SearchState() {} + SearchState.prototype = { + getQuery: function() { + return vimGlobalState.query; + }, + setQuery: function(query) { + vimGlobalState.query = query; + }, + getOverlay: function() { + return this.searchOverlay; + }, + setOverlay: function(overlay) { + this.searchOverlay = overlay; + }, + isReversed: function() { + return vimGlobalState.isReversed; + }, + setReversed: function(reversed) { + vimGlobalState.isReversed = reversed; + }, + getScrollbarAnnotate: function() { + return this.annotate; + }, + setScrollbarAnnotate: function(annotate) { + this.annotate = annotate; + } + }; + function getSearchState(cm) { + var vim = cm.state.vim; + return vim.searchState_ || (vim.searchState_ = new SearchState()); + } + function dialog(cm, template, shortText, onClose, options) { + if (cm.openDialog) { + cm.openDialog(template, onClose, { bottom: true, value: options.value, + onKeyDown: options.onKeyDown, onKeyUp: options.onKeyUp, + selectValueOnOpen: false}); + } + else { + onClose(prompt(shortText, '')); + } + } + function splitBySlash(argString) { + var slashes = findUnescapedSlashes(argString) || []; + if (!slashes.length) return []; + var tokens = []; + // in case of strings like foo/bar + if (slashes[0] !== 0) return; + for (var i = 0; i < slashes.length; i++) { + if (typeof slashes[i] == 'number') + tokens.push(argString.substring(slashes[i] + 1, slashes[i+1])); + } + return tokens; + } + + function findUnescapedSlashes(str) { + var escapeNextChar = false; + var slashes = []; + for (var i = 0; i < str.length; i++) { + var c = str.charAt(i); + if (!escapeNextChar && c == '/') { + slashes.push(i); + } + escapeNextChar = !escapeNextChar && (c == '\\'); + } + return slashes; + } + + // Translates a search string from ex (vim) syntax into javascript form. + function translateRegex(str) { + // When these match, add a '\' if unescaped or remove one if escaped. + var specials = '|(){'; + // Remove, but never add, a '\' for these. + var unescape = '}'; + var escapeNextChar = false; + var out = []; + for (var i = -1; i < str.length; i++) { + var c = str.charAt(i) || ''; + var n = str.charAt(i+1) || ''; + var specialComesNext = (n && specials.indexOf(n) != -1); + if (escapeNextChar) { + if (c !== '\\' || !specialComesNext) { + out.push(c); + } + escapeNextChar = false; + } else { + if (c === '\\') { + escapeNextChar = true; + // Treat the unescape list as special for removing, but not adding '\'. + if (n && unescape.indexOf(n) != -1) { + specialComesNext = true; + } + // Not passing this test means removing a '\'. + if (!specialComesNext || n === '\\') { + out.push(c); + } + } else { + out.push(c); + if (specialComesNext && n !== '\\') { + out.push('\\'); + } + } + } + } + return out.join(''); + } + + // Translates the replace part of a search and replace from ex (vim) syntax into + // javascript form. Similar to translateRegex, but additionally fixes back references + // (translates '\[0..9]' to '$[0..9]') and follows different rules for escaping '$'. + var charUnescapes = {'\\n': '\n', '\\r': '\r', '\\t': '\t'}; + function translateRegexReplace(str) { + var escapeNextChar = false; + var out = []; + for (var i = -1; i < str.length; i++) { + var c = str.charAt(i) || ''; + var n = str.charAt(i+1) || ''; + if (charUnescapes[c + n]) { + out.push(charUnescapes[c+n]); + i++; + } else if (escapeNextChar) { + // At any point in the loop, escapeNextChar is true if the previous + // character was a '\' and was not escaped. + out.push(c); + escapeNextChar = false; + } else { + if (c === '\\') { + escapeNextChar = true; + if ((isNumber(n) || n === '$')) { + out.push('$'); + } else if (n !== '/' && n !== '\\') { + out.push('\\'); + } + } else { + if (c === '$') { + out.push('$'); + } + out.push(c); + if (n === '/') { + out.push('\\'); + } + } + } + } + return out.join(''); + } + + // Unescape \ and / in the replace part, for PCRE mode. + var unescapes = {'\\/': '/', '\\\\': '\\', '\\n': '\n', '\\r': '\r', '\\t': '\t'}; + function unescapeRegexReplace(str) { + var stream = new CodeMirror.StringStream(str); + var output = []; + while (!stream.eol()) { + // Search for \. + while (stream.peek() && stream.peek() != '\\') { + output.push(stream.next()); + } + var matched = false; + for (var matcher in unescapes) { + if (stream.match(matcher, true)) { + matched = true; + output.push(unescapes[matcher]); + break; + } + } + if (!matched) { + // Don't change anything + output.push(stream.next()); + } + } + return output.join(''); + } + + /** + * Extract the regular expression from the query and return a Regexp object. + * Returns null if the query is blank. + * If ignoreCase is passed in, the Regexp object will have the 'i' flag set. + * If smartCase is passed in, and the query contains upper case letters, + * then ignoreCase is overridden, and the 'i' flag will not be set. + * If the query contains the /i in the flag part of the regular expression, + * then both ignoreCase and smartCase are ignored, and 'i' will be passed + * through to the Regex object. + */ + function parseQuery(query, ignoreCase, smartCase) { + // First update the last search register + var lastSearchRegister = vimGlobalState.registerController.getRegister('/'); + lastSearchRegister.setText(query); + // Check if the query is already a regex. + if (query instanceof RegExp) { return query; } + // First try to extract regex + flags from the input. If no flags found, + // extract just the regex. IE does not accept flags directly defined in + // the regex string in the form /regex/flags + var slashes = findUnescapedSlashes(query); + var regexPart; + var forceIgnoreCase; + if (!slashes.length) { + // Query looks like 'regexp' + regexPart = query; + } else { + // Query looks like 'regexp/...' + regexPart = query.substring(0, slashes[0]); + var flagsPart = query.substring(slashes[0]); + forceIgnoreCase = (flagsPart.indexOf('i') != -1); + } + if (!regexPart) { + return null; + } + if (!getOption('pcre')) { + regexPart = translateRegex(regexPart); + } + if (smartCase) { + ignoreCase = (/^[^A-Z]*$/).test(regexPart); + } + var regexp = new RegExp(regexPart, + (ignoreCase || forceIgnoreCase) ? 'i' : undefined); + return regexp; + } + function showConfirm(cm, text) { + if (cm.openNotification) { + cm.openNotification('' + text + '', + {bottom: true, duration: 5000}); + } else { + alert(text); + } + } + function makePrompt(prefix, desc) { + var raw = '' + + (prefix || "") + ''; + if (desc) + raw += ' ' + desc + ''; + return raw; + } + var searchPromptDesc = '(Javascript regexp)'; + function showPrompt(cm, options) { + var shortText = (options.prefix || '') + ' ' + (options.desc || ''); + var prompt = makePrompt(options.prefix, options.desc); + dialog(cm, prompt, shortText, options.onClose, options); + } + function regexEqual(r1, r2) { + if (r1 instanceof RegExp && r2 instanceof RegExp) { + var props = ['global', 'multiline', 'ignoreCase', 'source']; + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + if (r1[prop] !== r2[prop]) { + return false; + } + } + return true; + } + return false; + } + // Returns true if the query is valid. + function updateSearchQuery(cm, rawQuery, ignoreCase, smartCase) { + if (!rawQuery) { + return; + } + var state = getSearchState(cm); + var query = parseQuery(rawQuery, !!ignoreCase, !!smartCase); + if (!query) { + return; + } + highlightSearchMatches(cm, query); + if (regexEqual(query, state.getQuery())) { + return query; + } + state.setQuery(query); + return query; + } + function searchOverlay(query) { + if (query.source.charAt(0) == '^') { + var matchSol = true; + } + return { + token: function(stream) { + if (matchSol && !stream.sol()) { + stream.skipToEnd(); + return; + } + var match = stream.match(query, false); + if (match) { + if (match[0].length == 0) { + // Matched empty string, skip to next. + stream.next(); + return 'searching'; + } + if (!stream.sol()) { + // Backtrack 1 to match \b + stream.backUp(1); + if (!query.exec(stream.next() + match[0])) { + stream.next(); + return null; + } + } + stream.match(query); + return 'searching'; + } + while (!stream.eol()) { + stream.next(); + if (stream.match(query, false)) break; + } + }, + query: query + }; + } + function highlightSearchMatches(cm, query) { + var searchState = getSearchState(cm); + var overlay = searchState.getOverlay(); + if (!overlay || query != overlay.query) { + if (overlay) { + cm.removeOverlay(overlay); + } + overlay = searchOverlay(query); + cm.addOverlay(overlay); + if (cm.showMatchesOnScrollbar) { + if (searchState.getScrollbarAnnotate()) { + searchState.getScrollbarAnnotate().clear(); + } + searchState.setScrollbarAnnotate(cm.showMatchesOnScrollbar(query)); + } + searchState.setOverlay(overlay); + } + } + function findNext(cm, prev, query, repeat) { + if (repeat === undefined) { repeat = 1; } + return cm.operation(function() { + var pos = cm.getCursor(); + var cursor = cm.getSearchCursor(query, pos); + for (var i = 0; i < repeat; i++) { + var found = cursor.find(prev); + if (i == 0 && found && cursorEqual(cursor.from(), pos)) { found = cursor.find(prev); } + if (!found) { + // SearchCursor may have returned null because it hit EOF, wrap + // around and try again. + cursor = cm.getSearchCursor(query, + (prev) ? Pos(cm.lastLine()) : Pos(cm.firstLine(), 0) ); + if (!cursor.find(prev)) { + return; + } + } + } + return cursor.from(); + }); + } + function clearSearchHighlight(cm) { + var state = getSearchState(cm); + cm.removeOverlay(getSearchState(cm).getOverlay()); + state.setOverlay(null); + if (state.getScrollbarAnnotate()) { + state.getScrollbarAnnotate().clear(); + state.setScrollbarAnnotate(null); + } + } + /** + * Check if pos is in the specified range, INCLUSIVE. + * Range can be specified with 1 or 2 arguments. + * If the first range argument is an array, treat it as an array of line + * numbers. Match pos against any of the lines. + * If the first range argument is a number, + * if there is only 1 range argument, check if pos has the same line + * number + * if there are 2 range arguments, then check if pos is in between the two + * range arguments. + */ + function isInRange(pos, start, end) { + if (typeof pos != 'number') { + // Assume it is a cursor position. Get the line number. + pos = pos.line; + } + if (start instanceof Array) { + return inArray(pos, start); + } else { + if (end) { + return (pos >= start && pos <= end); + } else { + return pos == start; + } + } + } + function getUserVisibleLines(cm) { + var scrollInfo = cm.getScrollInfo(); + var occludeToleranceTop = 6; + var occludeToleranceBottom = 10; + var from = cm.coordsChar({left:0, top: occludeToleranceTop + scrollInfo.top}, 'local'); + var bottomY = scrollInfo.clientHeight - occludeToleranceBottom + scrollInfo.top; + var to = cm.coordsChar({left:0, top: bottomY}, 'local'); + return {top: from.line, bottom: to.line}; + } + + function getMarkPos(cm, vim, markName) { + if (markName == '\'') { + var history = cm.doc.history.done; + var event = history[history.length - 2]; + return event && event.ranges && event.ranges[0].head; + } + + var mark = vim.marks[markName]; + return mark && mark.find(); + } + + var ExCommandDispatcher = function() { + this.buildCommandMap_(); + }; + ExCommandDispatcher.prototype = { + processCommand: function(cm, input, opt_params) { + var that = this; + cm.operation(function () { + cm.curOp.isVimOp = true; + that._processCommand(cm, input, opt_params); + }); + }, + _processCommand: function(cm, input, opt_params) { + var vim = cm.state.vim; + var commandHistoryRegister = vimGlobalState.registerController.getRegister(':'); + var previousCommand = commandHistoryRegister.toString(); + if (vim.visualMode) { + exitVisualMode(cm); + } + var inputStream = new CodeMirror.StringStream(input); + // update ": with the latest command whether valid or invalid + commandHistoryRegister.setText(input); + var params = opt_params || {}; + params.input = input; + try { + this.parseInput_(cm, inputStream, params); + } catch(e) { + showConfirm(cm, e); + throw e; + } + var command; + var commandName; + if (!params.commandName) { + // If only a line range is defined, move to the line. + if (params.line !== undefined) { + commandName = 'move'; + } + } else { + command = this.matchCommand_(params.commandName); + if (command) { + commandName = command.name; + if (command.excludeFromCommandHistory) { + commandHistoryRegister.setText(previousCommand); + } + this.parseCommandArgs_(inputStream, params, command); + if (command.type == 'exToKey') { + // Handle Ex to Key mapping. + for (var i = 0; i < command.toKeys.length; i++) { + CodeMirror.Vim.handleKey(cm, command.toKeys[i], 'mapping'); + } + return; + } else if (command.type == 'exToEx') { + // Handle Ex to Ex mapping. + this.processCommand(cm, command.toInput); + return; + } + } + } + if (!commandName) { + showConfirm(cm, 'Not an editor command ":' + input + '"'); + return; + } + try { + exCommands[commandName](cm, params); + // Possibly asynchronous commands (e.g. substitute, which might have a + // user confirmation), are responsible for calling the callback when + // done. All others have it taken care of for them here. + if ((!command || !command.possiblyAsync) && params.callback) { + params.callback(); + } + } catch(e) { + showConfirm(cm, e); + throw e; + } + }, + parseInput_: function(cm, inputStream, result) { + inputStream.eatWhile(':'); + // Parse range. + if (inputStream.eat('%')) { + result.line = cm.firstLine(); + result.lineEnd = cm.lastLine(); + } else { + result.line = this.parseLineSpec_(cm, inputStream); + if (result.line !== undefined && inputStream.eat(',')) { + result.lineEnd = this.parseLineSpec_(cm, inputStream); + } + } + + // Parse command name. + var commandMatch = inputStream.match(/^(\w+)/); + if (commandMatch) { + result.commandName = commandMatch[1]; + } else { + result.commandName = inputStream.match(/.*/)[0]; + } + + return result; + }, + parseLineSpec_: function(cm, inputStream) { + var numberMatch = inputStream.match(/^(\d+)/); + if (numberMatch) { + // Absolute line number plus offset (N+M or N-M) is probably a typo, + // not something the user actually wanted. (NB: vim does allow this.) + return parseInt(numberMatch[1], 10) - 1; + } + switch (inputStream.next()) { + case '.': + return this.parseLineSpecOffset_(inputStream, cm.getCursor().line); + case '$': + return this.parseLineSpecOffset_(inputStream, cm.lastLine()); + case '\'': + var markName = inputStream.next(); + var markPos = getMarkPos(cm, cm.state.vim, markName); + if (!markPos) throw new Error('Mark not set'); + return this.parseLineSpecOffset_(inputStream, markPos.line); + case '-': + case '+': + inputStream.backUp(1); + // Offset is relative to current line if not otherwise specified. + return this.parseLineSpecOffset_(inputStream, cm.getCursor().line); + default: + inputStream.backUp(1); + return undefined; + } + }, + parseLineSpecOffset_: function(inputStream, line) { + var offsetMatch = inputStream.match(/^([+-])?(\d+)/); + if (offsetMatch) { + var offset = parseInt(offsetMatch[2], 10); + if (offsetMatch[1] == "-") { + line -= offset; + } else { + line += offset; + } + } + return line; + }, + parseCommandArgs_: function(inputStream, params, command) { + if (inputStream.eol()) { + return; + } + params.argString = inputStream.match(/.*/)[0]; + // Parse command-line arguments + var delim = command.argDelimiter || /\s+/; + var args = trim(params.argString).split(delim); + if (args.length && args[0]) { + params.args = args; + } + }, + matchCommand_: function(commandName) { + // Return the command in the command map that matches the shortest + // prefix of the passed in command name. The match is guaranteed to be + // unambiguous if the defaultExCommandMap's shortNames are set up + // correctly. (see @code{defaultExCommandMap}). + for (var i = commandName.length; i > 0; i--) { + var prefix = commandName.substring(0, i); + if (this.commandMap_[prefix]) { + var command = this.commandMap_[prefix]; + if (command.name.indexOf(commandName) === 0) { + return command; + } + } + } + return null; + }, + buildCommandMap_: function() { + this.commandMap_ = {}; + for (var i = 0; i < defaultExCommandMap.length; i++) { + var command = defaultExCommandMap[i]; + var key = command.shortName || command.name; + this.commandMap_[key] = command; + } + }, + map: function(lhs, rhs, ctx) { + if (lhs != ':' && lhs.charAt(0) == ':') { + if (ctx) { throw Error('Mode not supported for ex mappings'); } + var commandName = lhs.substring(1); + if (rhs != ':' && rhs.charAt(0) == ':') { + // Ex to Ex mapping + this.commandMap_[commandName] = { + name: commandName, + type: 'exToEx', + toInput: rhs.substring(1), + user: true + }; + } else { + // Ex to key mapping + this.commandMap_[commandName] = { + name: commandName, + type: 'exToKey', + toKeys: rhs, + user: true + }; + } + } else { + if (rhs != ':' && rhs.charAt(0) == ':') { + // Key to Ex mapping. + var mapping = { + keys: lhs, + type: 'keyToEx', + exArgs: { input: rhs.substring(1) } + }; + if (ctx) { mapping.context = ctx; } + defaultKeymap.unshift(mapping); + } else { + // Key to key mapping + var mapping = { + keys: lhs, + type: 'keyToKey', + toKeys: rhs + }; + if (ctx) { mapping.context = ctx; } + defaultKeymap.unshift(mapping); + } + } + }, + unmap: function(lhs, ctx) { + if (lhs != ':' && lhs.charAt(0) == ':') { + // Ex to Ex or Ex to key mapping + if (ctx) { throw Error('Mode not supported for ex mappings'); } + var commandName = lhs.substring(1); + if (this.commandMap_[commandName] && this.commandMap_[commandName].user) { + delete this.commandMap_[commandName]; + return; + } + } else { + // Key to Ex or key to key mapping + var keys = lhs; + for (var i = 0; i < defaultKeymap.length; i++) { + if (keys == defaultKeymap[i].keys + && defaultKeymap[i].context === ctx) { + defaultKeymap.splice(i, 1); + return; + } + } + } + throw Error('No such mapping.'); + } + }; + + var exCommands = { + colorscheme: function(cm, params) { + if (!params.args || params.args.length < 1) { + showConfirm(cm, cm.getOption('theme')); + return; + } + cm.setOption('theme', params.args[0]); + }, + map: function(cm, params, ctx) { + var mapArgs = params.args; + if (!mapArgs || mapArgs.length < 2) { + if (cm) { + showConfirm(cm, 'Invalid mapping: ' + params.input); + } + return; + } + exCommandDispatcher.map(mapArgs[0], mapArgs[1], ctx); + }, + imap: function(cm, params) { this.map(cm, params, 'insert'); }, + nmap: function(cm, params) { this.map(cm, params, 'normal'); }, + vmap: function(cm, params) { this.map(cm, params, 'visual'); }, + unmap: function(cm, params, ctx) { + var mapArgs = params.args; + if (!mapArgs || mapArgs.length < 1) { + if (cm) { + showConfirm(cm, 'No such mapping: ' + params.input); + } + return; + } + exCommandDispatcher.unmap(mapArgs[0], ctx); + }, + move: function(cm, params) { + commandDispatcher.processCommand(cm, cm.state.vim, { + type: 'motion', + motion: 'moveToLineOrEdgeOfDocument', + motionArgs: { forward: false, explicitRepeat: true, + linewise: true }, + repeatOverride: params.line+1}); + }, + set: function(cm, params) { + var setArgs = params.args; + // Options passed through to the setOption/getOption calls. May be passed in by the + // local/global versions of the set command + var setCfg = params.setCfg || {}; + if (!setArgs || setArgs.length < 1) { + if (cm) { + showConfirm(cm, 'Invalid mapping: ' + params.input); + } + return; + } + var expr = setArgs[0].split('='); + var optionName = expr[0]; + var value = expr[1]; + var forceGet = false; + + if (optionName.charAt(optionName.length - 1) == '?') { + // If post-fixed with ?, then the set is actually a get. + if (value) { throw Error('Trailing characters: ' + params.argString); } + optionName = optionName.substring(0, optionName.length - 1); + forceGet = true; + } + if (value === undefined && optionName.substring(0, 2) == 'no') { + // To set boolean options to false, the option name is prefixed with + // 'no'. + optionName = optionName.substring(2); + value = false; + } + + var optionIsBoolean = options[optionName] && options[optionName].type == 'boolean'; + if (optionIsBoolean && value == undefined) { + // Calling set with a boolean option sets it to true. + value = true; + } + // If no value is provided, then we assume this is a get. + if (!optionIsBoolean && value === undefined || forceGet) { + var oldValue = getOption(optionName, cm, setCfg); + if (oldValue instanceof Error) { + showConfirm(cm, oldValue.message); + } else if (oldValue === true || oldValue === false) { + showConfirm(cm, ' ' + (oldValue ? '' : 'no') + optionName); + } else { + showConfirm(cm, ' ' + optionName + '=' + oldValue); + } + } else { + var setOptionReturn = setOption(optionName, value, cm, setCfg); + if (setOptionReturn instanceof Error) { + showConfirm(cm, setOptionReturn.message); + } + } + }, + setlocal: function (cm, params) { + // setCfg is passed through to setOption + params.setCfg = {scope: 'local'}; + this.set(cm, params); + }, + setglobal: function (cm, params) { + // setCfg is passed through to setOption + params.setCfg = {scope: 'global'}; + this.set(cm, params); + }, + registers: function(cm, params) { + var regArgs = params.args; + var registers = vimGlobalState.registerController.registers; + var regInfo = '----------Registers----------

'; + if (!regArgs) { + for (var registerName in registers) { + var text = registers[registerName].toString(); + if (text.length) { + regInfo += '"' + registerName + ' ' + text + '
'; + } + } + } else { + var registerName; + regArgs = regArgs.join(''); + for (var i = 0; i < regArgs.length; i++) { + registerName = regArgs.charAt(i); + if (!vimGlobalState.registerController.isValidRegister(registerName)) { + continue; + } + var register = registers[registerName] || new Register(); + regInfo += '"' + registerName + ' ' + register.toString() + '
'; + } + } + showConfirm(cm, regInfo); + }, + sort: function(cm, params) { + var reverse, ignoreCase, unique, number, pattern; + function parseArgs() { + if (params.argString) { + var args = new CodeMirror.StringStream(params.argString); + if (args.eat('!')) { reverse = true; } + if (args.eol()) { return; } + if (!args.eatSpace()) { return 'Invalid arguments'; } + var opts = args.match(/([dinuox]+)?\s*(\/.+\/)?\s*/); + if (!opts && !args.eol()) { return 'Invalid arguments'; } + if (opts[1]) { + ignoreCase = opts[1].indexOf('i') != -1; + unique = opts[1].indexOf('u') != -1; + var decimal = opts[1].indexOf('d') != -1 || opts[1].indexOf('n') != -1 && 1; + var hex = opts[1].indexOf('x') != -1 && 1; + var octal = opts[1].indexOf('o') != -1 && 1; + if (decimal + hex + octal > 1) { return 'Invalid arguments'; } + number = decimal && 'decimal' || hex && 'hex' || octal && 'octal'; + } + if (opts[2]) { + pattern = new RegExp(opts[2].substr(1, opts[2].length - 2), ignoreCase ? 'i' : ''); + } + } + } + var err = parseArgs(); + if (err) { + showConfirm(cm, err + ': ' + params.argString); + return; + } + var lineStart = params.line || cm.firstLine(); + var lineEnd = params.lineEnd || params.line || cm.lastLine(); + if (lineStart == lineEnd) { return; } + var curStart = Pos(lineStart, 0); + var curEnd = Pos(lineEnd, lineLength(cm, lineEnd)); + var text = cm.getRange(curStart, curEnd).split('\n'); + var numberRegex = pattern ? pattern : + (number == 'decimal') ? /(-?)([\d]+)/ : + (number == 'hex') ? /(-?)(?:0x)?([0-9a-f]+)/i : + (number == 'octal') ? /([0-7]+)/ : null; + var radix = (number == 'decimal') ? 10 : (number == 'hex') ? 16 : (number == 'octal') ? 8 : null; + var numPart = [], textPart = []; + if (number || pattern) { + for (var i = 0; i < text.length; i++) { + var matchPart = pattern ? text[i].match(pattern) : null; + if (matchPart && matchPart[0] != '') { + numPart.push(matchPart); + } else if (!pattern && numberRegex.exec(text[i])) { + numPart.push(text[i]); + } else { + textPart.push(text[i]); + } + } + } else { + textPart = text; + } + function compareFn(a, b) { + if (reverse) { var tmp; tmp = a; a = b; b = tmp; } + if (ignoreCase) { a = a.toLowerCase(); b = b.toLowerCase(); } + var anum = number && numberRegex.exec(a); + var bnum = number && numberRegex.exec(b); + if (!anum) { return a < b ? -1 : 1; } + anum = parseInt((anum[1] + anum[2]).toLowerCase(), radix); + bnum = parseInt((bnum[1] + bnum[2]).toLowerCase(), radix); + return anum - bnum; + } + function comparePatternFn(a, b) { + if (reverse) { var tmp; tmp = a; a = b; b = tmp; } + if (ignoreCase) { a[0] = a[0].toLowerCase(); b[0] = b[0].toLowerCase(); } + return (a[0] < b[0]) ? -1 : 1; + } + numPart.sort(pattern ? comparePatternFn : compareFn); + if (pattern) { + for (var i = 0; i < numPart.length; i++) { + numPart[i] = numPart[i].input; + } + } else if (!number) { textPart.sort(compareFn); } + text = (!reverse) ? textPart.concat(numPart) : numPart.concat(textPart); + if (unique) { // Remove duplicate lines + var textOld = text; + var lastLine; + text = []; + for (var i = 0; i < textOld.length; i++) { + if (textOld[i] != lastLine) { + text.push(textOld[i]); + } + lastLine = textOld[i]; + } + } + cm.replaceRange(text.join('\n'), curStart, curEnd); + }, + global: function(cm, params) { + // a global command is of the form + // :[range]g/pattern/[cmd] + // argString holds the string /pattern/[cmd] + var argString = params.argString; + if (!argString) { + showConfirm(cm, 'Regular Expression missing from global'); + return; + } + // range is specified here + var lineStart = (params.line !== undefined) ? params.line : cm.firstLine(); + var lineEnd = params.lineEnd || params.line || cm.lastLine(); + // get the tokens from argString + var tokens = splitBySlash(argString); + var regexPart = argString, cmd; + if (tokens.length) { + regexPart = tokens[0]; + cmd = tokens.slice(1, tokens.length).join('/'); + } + if (regexPart) { + // If regex part is empty, then use the previous query. Otherwise + // use the regex part as the new query. + try { + updateSearchQuery(cm, regexPart, true /** ignoreCase */, + true /** smartCase */); + } catch (e) { + showConfirm(cm, 'Invalid regex: ' + regexPart); + return; + } + } + // now that we have the regexPart, search for regex matches in the + // specified range of lines + var query = getSearchState(cm).getQuery(); + var matchedLines = [], content = ''; + for (var i = lineStart; i <= lineEnd; i++) { + var matched = query.test(cm.getLine(i)); + if (matched) { + matchedLines.push(i+1); + content+= cm.getLine(i) + '
'; + } + } + // if there is no [cmd], just display the list of matched lines + if (!cmd) { + showConfirm(cm, content); + return; + } + var index = 0; + var nextCommand = function() { + if (index < matchedLines.length) { + var command = matchedLines[index] + cmd; + exCommandDispatcher.processCommand(cm, command, { + callback: nextCommand + }); + } + index++; + }; + nextCommand(); + }, + substitute: function(cm, params) { + if (!cm.getSearchCursor) { + throw new Error('Search feature not available. Requires searchcursor.js or ' + + 'any other getSearchCursor implementation.'); + } + var argString = params.argString; + var tokens = argString ? splitBySlash(argString) : []; + var regexPart, replacePart = '', trailing, flagsPart, count; + var confirm = false; // Whether to confirm each replace. + var global = false; // True to replace all instances on a line, false to replace only 1. + if (tokens.length) { + regexPart = tokens[0]; + replacePart = tokens[1]; + if (regexPart && regexPart[regexPart.length - 1] === '$') { + regexPart = regexPart.slice(0, regexPart.length - 1) + '\\n'; + replacePart = replacePart ? replacePart + '\n' : '\n'; + } + if (replacePart !== undefined) { + if (getOption('pcre')) { + replacePart = unescapeRegexReplace(replacePart); + } else { + replacePart = translateRegexReplace(replacePart); + } + vimGlobalState.lastSubstituteReplacePart = replacePart; + } + trailing = tokens[2] ? tokens[2].split(' ') : []; + } else { + // either the argString is empty or its of the form ' hello/world' + // actually splitBySlash returns a list of tokens + // only if the string starts with a '/' + if (argString && argString.length) { + showConfirm(cm, 'Substitutions should be of the form ' + + ':s/pattern/replace/'); + return; + } + } + // After the 3rd slash, we can have flags followed by a space followed + // by count. + if (trailing) { + flagsPart = trailing[0]; + count = parseInt(trailing[1]); + if (flagsPart) { + if (flagsPart.indexOf('c') != -1) { + confirm = true; + flagsPart.replace('c', ''); + } + if (flagsPart.indexOf('g') != -1) { + global = true; + flagsPart.replace('g', ''); + } + regexPart = regexPart + '/' + flagsPart; + } + } + if (regexPart) { + // If regex part is empty, then use the previous query. Otherwise use + // the regex part as the new query. + try { + updateSearchQuery(cm, regexPart, true /** ignoreCase */, + true /** smartCase */); + } catch (e) { + showConfirm(cm, 'Invalid regex: ' + regexPart); + return; + } + } + replacePart = replacePart || vimGlobalState.lastSubstituteReplacePart; + if (replacePart === undefined) { + showConfirm(cm, 'No previous substitute regular expression'); + return; + } + var state = getSearchState(cm); + var query = state.getQuery(); + var lineStart = (params.line !== undefined) ? params.line : cm.getCursor().line; + var lineEnd = params.lineEnd || lineStart; + if (lineStart == cm.firstLine() && lineEnd == cm.lastLine()) { + lineEnd = Infinity; + } + if (count) { + lineStart = lineEnd; + lineEnd = lineStart + count - 1; + } + var startPos = clipCursorToContent(cm, Pos(lineStart, 0)); + var cursor = cm.getSearchCursor(query, startPos); + doReplace(cm, confirm, global, lineStart, lineEnd, cursor, query, replacePart, params.callback); + }, + redo: CodeMirror.commands.redo, + undo: CodeMirror.commands.undo, + write: function(cm) { + if (CodeMirror.commands.save) { + // If a save command is defined, call it. + CodeMirror.commands.save(cm); + } else if (cm.save) { + // Saves to text area if no save command is defined and cm.save() is available. + cm.save(); + } + }, + nohlsearch: function(cm) { + clearSearchHighlight(cm); + }, + yank: function (cm) { + var cur = copyCursor(cm.getCursor()); + var line = cur.line; + var lineText = cm.getLine(line); + vimGlobalState.registerController.pushText( + '0', 'yank', lineText, true, true); + }, + delmarks: function(cm, params) { + if (!params.argString || !trim(params.argString)) { + showConfirm(cm, 'Argument required'); + return; + } + + var state = cm.state.vim; + var stream = new CodeMirror.StringStream(trim(params.argString)); + while (!stream.eol()) { + stream.eatSpace(); + + // Record the streams position at the beginning of the loop for use + // in error messages. + var count = stream.pos; + + if (!stream.match(/[a-zA-Z]/, false)) { + showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); + return; + } + + var sym = stream.next(); + // Check if this symbol is part of a range + if (stream.match('-', true)) { + // This symbol is part of a range. + + // The range must terminate at an alphabetic character. + if (!stream.match(/[a-zA-Z]/, false)) { + showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); + return; + } + + var startMark = sym; + var finishMark = stream.next(); + // The range must terminate at an alphabetic character which + // shares the same case as the start of the range. + if (isLowerCase(startMark) && isLowerCase(finishMark) || + isUpperCase(startMark) && isUpperCase(finishMark)) { + var start = startMark.charCodeAt(0); + var finish = finishMark.charCodeAt(0); + if (start >= finish) { + showConfirm(cm, 'Invalid argument: ' + params.argString.substring(count)); + return; + } + + // Because marks are always ASCII values, and we have + // determined that they are the same case, we can use + // their char codes to iterate through the defined range. + for (var j = 0; j <= finish - start; j++) { + var mark = String.fromCharCode(start + j); + delete state.marks[mark]; + } + } else { + showConfirm(cm, 'Invalid argument: ' + startMark + '-'); + return; + } + } else { + // This symbol is a valid mark, and is not part of a range. + delete state.marks[sym]; + } + } + } + }; + + var exCommandDispatcher = new ExCommandDispatcher(); + + /** + * @param {CodeMirror} cm CodeMirror instance we are in. + * @param {boolean} confirm Whether to confirm each replace. + * @param {Cursor} lineStart Line to start replacing from. + * @param {Cursor} lineEnd Line to stop replacing at. + * @param {RegExp} query Query for performing matches with. + * @param {string} replaceWith Text to replace matches with. May contain $1, + * $2, etc for replacing captured groups using Javascript replace. + * @param {function()} callback A callback for when the replace is done. + */ + function doReplace(cm, confirm, global, lineStart, lineEnd, searchCursor, query, + replaceWith, callback) { + // Set up all the functions. + cm.state.vim.exMode = true; + var done = false; + var lastPos = searchCursor.from(); + function replaceAll() { + cm.operation(function() { + while (!done) { + replace(); + next(); + } + stop(); + }); + } + function replace() { + var text = cm.getRange(searchCursor.from(), searchCursor.to()); + var newText = text.replace(query, replaceWith); + searchCursor.replace(newText); + } + function next() { + // The below only loops to skip over multiple occurrences on the same + // line when 'global' is not true. + while(searchCursor.findNext() && + isInRange(searchCursor.from(), lineStart, lineEnd)) { + if (!global && lastPos && searchCursor.from().line == lastPos.line) { + continue; + } + cm.scrollIntoView(searchCursor.from(), 30); + cm.setSelection(searchCursor.from(), searchCursor.to()); + lastPos = searchCursor.from(); + done = false; + return; + } + done = true; + } + function stop(close) { + if (close) { close(); } + cm.focus(); + if (lastPos) { + cm.setCursor(lastPos); + var vim = cm.state.vim; + vim.exMode = false; + vim.lastHPos = vim.lastHSPos = lastPos.ch; + } + if (callback) { callback(); } + } + function onPromptKeyDown(e, _value, close) { + // Swallow all keys. + CodeMirror.e_stop(e); + var keyName = CodeMirror.keyName(e); + switch (keyName) { + case 'Y': + replace(); next(); break; + case 'N': + next(); break; + case 'A': + // replaceAll contains a call to close of its own. We don't want it + // to fire too early or multiple times. + var savedCallback = callback; + callback = undefined; + cm.operation(replaceAll); + callback = savedCallback; + break; + case 'L': + replace(); + // fall through and exit. + case 'Q': + case 'Esc': + case 'Ctrl-C': + case 'Ctrl-[': + stop(close); + break; + } + if (done) { stop(close); } + return true; + } + + // Actually do replace. + next(); + if (done) { + showConfirm(cm, 'No matches for ' + query.source); + return; + } + if (!confirm) { + replaceAll(); + if (callback) { callback(); }; + return; + } + showPrompt(cm, { + prefix: 'replace with ' + replaceWith + ' (y/n/a/q/l)', + onKeyDown: onPromptKeyDown + }); + } + + CodeMirror.keyMap.vim = { + attach: attachVimMap, + detach: detachVimMap, + call: cmKey + }; + + function exitInsertMode(cm) { + var vim = cm.state.vim; + var macroModeState = vimGlobalState.macroModeState; + var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.'); + var isPlaying = macroModeState.isPlaying; + var lastChange = macroModeState.lastInsertModeChanges; + // In case of visual block, the insertModeChanges are not saved as a + // single word, so we convert them to a single word + // so as to update the ". register as expected in real vim. + var text = []; + if (!isPlaying) { + var selLength = lastChange.inVisualBlock ? vim.lastSelection.visualBlock.height : 1; + var changes = lastChange.changes; + var text = []; + var i = 0; + // In case of multiple selections in blockwise visual, + // the inserted text, for example: 'foo', is stored as + // 'f', 'f', InsertModeKey 'o', 'o', 'o', 'o'. (if you have a block with 2 lines). + // We push the contents of the changes array as per the following: + // 1. In case of InsertModeKey, just increment by 1. + // 2. In case of a character, jump by selLength (2 in the example). + while (i < changes.length) { + // This loop will convert 'ffoooo' to 'foo'. + text.push(changes[i]); + if (changes[i] instanceof InsertModeKey) { + i++; + } else { + i+= selLength; + } + } + lastChange.changes = text; + cm.off('change', onChange); + CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown); + } + if (!isPlaying && vim.insertModeRepeat > 1) { + // Perform insert mode repeat for commands like 3,a and 3,o. + repeatLastEdit(cm, vim, vim.insertModeRepeat - 1, + true /** repeatForInsert */); + vim.lastEditInputState.repeatOverride = vim.insertModeRepeat; + } + delete vim.insertModeRepeat; + vim.insertMode = false; + cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1); + cm.setOption('keyMap', 'vim'); + cm.setOption('disableInput', true); + cm.toggleOverwrite(false); // exit replace mode if we were in it. + // update the ". register before exiting insert mode + insertModeChangeRegister.setText(lastChange.changes.join('')); + CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); + if (macroModeState.isRecording) { + logInsertModeChange(macroModeState); + } + } + + function _mapCommand(command) { + defaultKeymap.unshift(command); + } + + function mapCommand(keys, type, name, args, extra) { + var command = {keys: keys, type: type}; + command[type] = name; + command[type + "Args"] = args; + for (var key in extra) + command[key] = extra[key]; + _mapCommand(command); + } + + // The timeout in milliseconds for the two-character ESC keymap should be + // adjusted according to your typing speed to prevent false positives. + defineOption('insertModeEscKeysTimeout', 200, 'number'); + + CodeMirror.keyMap['vim-insert'] = { + // TODO: override navigation keys so that Esc will cancel automatic + // indentation from o, O, i_ + fallthrough: ['default'], + attach: attachVimMap, + detach: detachVimMap, + call: cmKey + }; + + CodeMirror.keyMap['vim-replace'] = { + 'Backspace': 'goCharLeft', + fallthrough: ['vim-insert'], + attach: attachVimMap, + detach: detachVimMap, + call: cmKey + }; + + function executeMacroRegister(cm, vim, macroModeState, registerName) { + var register = vimGlobalState.registerController.getRegister(registerName); + if (registerName == ':') { + // Read-only register containing last Ex command. + if (register.keyBuffer[0]) { + exCommandDispatcher.processCommand(cm, register.keyBuffer[0]); + } + macroModeState.isPlaying = false; + return; + } + var keyBuffer = register.keyBuffer; + var imc = 0; + macroModeState.isPlaying = true; + macroModeState.replaySearchQueries = register.searchQueries.slice(0); + for (var i = 0; i < keyBuffer.length; i++) { + var text = keyBuffer[i]; + var match, key; + while (text) { + // Pull off one command key, which is either a single character + // or a special sequence wrapped in '<' and '>', e.g. ''. + match = (/<\w+-.+?>|<\w+>|./).exec(text); + key = match[0]; + text = text.substring(match.index + key.length); + CodeMirror.Vim.handleKey(cm, key, 'macro'); + if (vim.insertMode) { + var changes = register.insertModeChanges[imc++].changes; + vimGlobalState.macroModeState.lastInsertModeChanges.changes = + changes; + repeatInsertModeChanges(cm, changes, 1); + exitInsertMode(cm); + } + } + }; + macroModeState.isPlaying = false; + } + + function logKey(macroModeState, key) { + if (macroModeState.isPlaying) { return; } + var registerName = macroModeState.latestRegister; + var register = vimGlobalState.registerController.getRegister(registerName); + if (register) { + register.pushText(key); + } + } + + function logInsertModeChange(macroModeState) { + if (macroModeState.isPlaying) { return; } + var registerName = macroModeState.latestRegister; + var register = vimGlobalState.registerController.getRegister(registerName); + if (register && register.pushInsertModeChanges) { + register.pushInsertModeChanges(macroModeState.lastInsertModeChanges); + } + } + + function logSearchQuery(macroModeState, query) { + if (macroModeState.isPlaying) { return; } + var registerName = macroModeState.latestRegister; + var register = vimGlobalState.registerController.getRegister(registerName); + if (register && register.pushSearchQuery) { + register.pushSearchQuery(query); + } + } + + /** + * Listens for changes made in insert mode. + * Should only be active in insert mode. + */ + function onChange(cm, changeObj) { + var macroModeState = vimGlobalState.macroModeState; + var lastChange = macroModeState.lastInsertModeChanges; + if (!macroModeState.isPlaying) { + while(changeObj) { + lastChange.expectCursorActivityForChange = true; + if (changeObj.origin == '+input' || changeObj.origin == 'paste' + || changeObj.origin === undefined /* only in testing */) { + var text = changeObj.text.join('\n'); + if (lastChange.maybeReset) { + lastChange.changes = []; + lastChange.maybeReset = false; + } + if (cm.state.overwrite && !/\n/.test(text)) { + lastChange.changes.push([text]); + } else { + lastChange.changes.push(text); + } + } + // Change objects may be chained with next. + changeObj = changeObj.next; + } + } + } + + /** + * Listens for any kind of cursor activity on CodeMirror. + */ + function onCursorActivity(cm) { + var vim = cm.state.vim; + if (vim.insertMode) { + // Tracking cursor activity in insert mode (for macro support). + var macroModeState = vimGlobalState.macroModeState; + if (macroModeState.isPlaying) { return; } + var lastChange = macroModeState.lastInsertModeChanges; + if (lastChange.expectCursorActivityForChange) { + lastChange.expectCursorActivityForChange = false; + } else { + // Cursor moved outside the context of an edit. Reset the change. + lastChange.maybeReset = true; + } + } else if (!cm.curOp.isVimOp) { + handleExternalSelection(cm, vim); + } + if (vim.visualMode) { + updateFakeCursor(cm); + } + } + function updateFakeCursor(cm) { + var vim = cm.state.vim; + var from = clipCursorToContent(cm, copyCursor(vim.sel.head)); + var to = offsetCursor(from, 0, 1); + if (vim.fakeCursor) { + vim.fakeCursor.clear(); + } + vim.fakeCursor = cm.markText(from, to, {className: 'cm-animate-fat-cursor'}); + } + function handleExternalSelection(cm, vim) { + var anchor = cm.getCursor('anchor'); + var head = cm.getCursor('head'); + // Enter or exit visual mode to match mouse selection. + if (vim.visualMode && !cm.somethingSelected()) { + exitVisualMode(cm, false); + } else if (!vim.visualMode && !vim.insertMode && cm.somethingSelected()) { + vim.visualMode = true; + vim.visualLine = false; + CodeMirror.signal(cm, "vim-mode-change", {mode: "visual"}); + } + if (vim.visualMode) { + // Bind CodeMirror selection model to vim selection model. + // Mouse selections are considered visual characterwise. + var headOffset = !cursorIsBefore(head, anchor) ? -1 : 0; + var anchorOffset = cursorIsBefore(head, anchor) ? -1 : 0; + head = offsetCursor(head, 0, headOffset); + anchor = offsetCursor(anchor, 0, anchorOffset); + vim.sel = { + anchor: anchor, + head: head + }; + updateMark(cm, vim, '<', cursorMin(head, anchor)); + updateMark(cm, vim, '>', cursorMax(head, anchor)); + } else if (!vim.insertMode) { + // Reset lastHPos if selection was modified by something outside of vim mode e.g. by mouse. + vim.lastHPos = cm.getCursor().ch; + } + } + + /** Wrapper for special keys pressed in insert mode */ + function InsertModeKey(keyName) { + this.keyName = keyName; + } + + /** + * Handles raw key down events from the text area. + * - Should only be active in insert mode. + * - For recording deletes in insert mode. + */ + function onKeyEventTargetKeyDown(e) { + var macroModeState = vimGlobalState.macroModeState; + var lastChange = macroModeState.lastInsertModeChanges; + var keyName = CodeMirror.keyName(e); + if (!keyName) { return; } + function onKeyFound() { + if (lastChange.maybeReset) { + lastChange.changes = []; + lastChange.maybeReset = false; + } + lastChange.changes.push(new InsertModeKey(keyName)); + return true; + } + if (keyName.indexOf('Delete') != -1 || keyName.indexOf('Backspace') != -1) { + CodeMirror.lookupKey(keyName, 'vim-insert', onKeyFound); + } + } + + /** + * Repeats the last edit, which includes exactly 1 command and at most 1 + * insert. Operator and motion commands are read from lastEditInputState, + * while action commands are read from lastEditActionCommand. + * + * If repeatForInsert is true, then the function was called by + * exitInsertMode to repeat the insert mode changes the user just made. The + * corresponding enterInsertMode call was made with a count. + */ + function repeatLastEdit(cm, vim, repeat, repeatForInsert) { + var macroModeState = vimGlobalState.macroModeState; + macroModeState.isPlaying = true; + var isAction = !!vim.lastEditActionCommand; + var cachedInputState = vim.inputState; + function repeatCommand() { + if (isAction) { + commandDispatcher.processAction(cm, vim, vim.lastEditActionCommand); + } else { + commandDispatcher.evalInput(cm, vim); + } + } + function repeatInsert(repeat) { + if (macroModeState.lastInsertModeChanges.changes.length > 0) { + // For some reason, repeat cw in desktop VIM does not repeat + // insert mode changes. Will conform to that behavior. + repeat = !vim.lastEditActionCommand ? 1 : repeat; + var changeObject = macroModeState.lastInsertModeChanges; + repeatInsertModeChanges(cm, changeObject.changes, repeat); + } + } + vim.inputState = vim.lastEditInputState; + if (isAction && vim.lastEditActionCommand.interlaceInsertRepeat) { + // o and O repeat have to be interlaced with insert repeats so that the + // insertions appear on separate lines instead of the last line. + for (var i = 0; i < repeat; i++) { + repeatCommand(); + repeatInsert(1); + } + } else { + if (!repeatForInsert) { + // Hack to get the cursor to end up at the right place. If I is + // repeated in insert mode repeat, cursor will be 1 insert + // change set left of where it should be. + repeatCommand(); + } + repeatInsert(repeat); + } + vim.inputState = cachedInputState; + if (vim.insertMode && !repeatForInsert) { + // Don't exit insert mode twice. If repeatForInsert is set, then we + // were called by an exitInsertMode call lower on the stack. + exitInsertMode(cm); + } + macroModeState.isPlaying = false; + }; + + function repeatInsertModeChanges(cm, changes, repeat) { + function keyHandler(binding) { + if (typeof binding == 'string') { + CodeMirror.commands[binding](cm); + } else { + binding(cm); + } + return true; + } + var head = cm.getCursor('head'); + var inVisualBlock = vimGlobalState.macroModeState.lastInsertModeChanges.inVisualBlock; + if (inVisualBlock) { + // Set up block selection again for repeating the changes. + var vim = cm.state.vim; + var lastSel = vim.lastSelection; + var offset = getOffset(lastSel.anchor, lastSel.head); + selectForInsert(cm, head, offset.line + 1); + repeat = cm.listSelections().length; + cm.setCursor(head); + } + for (var i = 0; i < repeat; i++) { + if (inVisualBlock) { + cm.setCursor(offsetCursor(head, i, 0)); + } + for (var j = 0; j < changes.length; j++) { + var change = changes[j]; + if (change instanceof InsertModeKey) { + CodeMirror.lookupKey(change.keyName, 'vim-insert', keyHandler); + } else if (typeof change == "string") { + var cur = cm.getCursor(); + cm.replaceRange(change, cur, cur); + } else { + var start = cm.getCursor(); + var end = offsetCursor(start, 0, change[0].length); + cm.replaceRange(change[0], start, end); + } + } + } + if (inVisualBlock) { + cm.setCursor(offsetCursor(head, 0, 1)); + } + } + + resetVimGlobalState(); + return vimApi; + }; + // Initialize Vim and make it available as an API. + CodeMirror.Vim = Vim(); +}); diff --git a/global/codemirror/lib/codemirror.css b/global/codemirror/lib/codemirror.css new file mode 100644 index 00000000..9d8ff0ce --- /dev/null +++ b/global/codemirror/lib/codemirror.css @@ -0,0 +1,341 @@ +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; + color: black; + direction: ltr; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; +} + +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } + +/* CURSOR */ + +.CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; +} +.cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; +} + +.cm-animate-fat-cursor { + width: auto; + border: 0; + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; + background-color: #7e7; +} +@-moz-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@-webkit-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} + +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror-overwrite .CodeMirror-cursor {} + +.cm-tab { display: inline-block; text-decoration: inherit; } + +.CodeMirror-rulers { + position: absolute; + left: 0; right: 0; top: -50px; bottom: -20px; + overflow: hidden; +} +.CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; bottom: 0; + position: absolute; +} + +/* DEFAULT THEME */ + +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable, +.cm-s-default .cm-punctuation, +.cm-s-default .cm-property, +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } + +/* Default styles for common addons */ + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + position: relative; + overflow: hidden; + background: white; +} + +.CodeMirror-scroll { + overflow: scroll !important; /* Things will break if this is overridden */ + /* 30px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -30px; margin-right: -30px; + padding-bottom: 30px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; +} +.CodeMirror-sizer { + position: relative; + border-right: 30px solid transparent; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + min-height: 100%; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -30px; +} +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} +.CodeMirror-gutter-background { + position: absolute; + top: 0; bottom: 0; + z-index: 4; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} +.CodeMirror-gutter-wrapper ::selection { background-color: transparent } +.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } + +.CodeMirror-lines { + cursor: text; + min-height: 1px; /* prevents collapsing before first draw */ +} +.CodeMirror pre { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; +} +.CodeMirror-wrap pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + overflow: auto; +} + +.CodeMirror-widget {} + +.CodeMirror-rtl pre { direction: rtl; } + +.CodeMirror-code { + outline: none; +} + +/* Force content-box sizing for the elements where we expect it */ +.CodeMirror-scroll, +.CodeMirror-sizer, +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber { + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.CodeMirror-cursor { + position: absolute; + pointer-events: none; +} +.CodeMirror-measure pre { position: static; } + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; +} +div.CodeMirror-dragcursors { + visibility: visible; +} + +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } + +.cm-searching { + background-color: #ffa; + background-color: rgba(255, 255, 0, .4); +} + +/* Used to force a border model for a node */ +.cm-force-border { padding-right: .1px; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} + +/* See issue #2901 */ +.cm-tab-wrap-hack:after { content: ''; } + +/* Help users use markselection to safely style text background */ +span.CodeMirror-selectedtext { background: none; } diff --git a/global/codemirror/lib/codemirror.js b/global/codemirror/lib/codemirror.js new file mode 100644 index 00000000..2f90d18d --- /dev/null +++ b/global/codemirror/lib/codemirror.js @@ -0,0 +1,9622 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// This is CodeMirror (http://codemirror.net), a code editor +// implemented in JavaScript on top of the browser's DOM. +// +// You can find some technical background for some of the code below +// at http://marijnhaverbeke.nl/blog/#cm-internals . + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.CodeMirror = factory()); +}(this, (function () { 'use strict'; + +// Kludges for bugs and behavior differences that can't be feature +// detected are enabled based on userAgent etc sniffing. +var userAgent = navigator.userAgent +var platform = navigator.platform + +var gecko = /gecko\/\d/i.test(userAgent) +var ie_upto10 = /MSIE \d/.test(userAgent) +var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent) +var edge = /Edge\/(\d+)/.exec(userAgent) +var ie = ie_upto10 || ie_11up || edge +var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]) +var webkit = !edge && /WebKit\//.test(userAgent) +var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent) +var chrome = !edge && /Chrome\//.test(userAgent) +var presto = /Opera\//.test(userAgent) +var safari = /Apple Computer/.test(navigator.vendor) +var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent) +var phantom = /PhantomJS/.test(userAgent) + +var ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent) +var android = /Android/.test(userAgent) +// This is woefully incomplete. Suggestions for alternative methods welcome. +var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent) +var mac = ios || /Mac/.test(platform) +var chromeOS = /\bCrOS\b/.test(userAgent) +var windows = /win/i.test(platform) + +var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/) +if (presto_version) { presto_version = Number(presto_version[1]) } +if (presto_version && presto_version >= 15) { presto = false; webkit = true } +// Some browsers use the wrong event properties to signal cmd/ctrl on OS X +var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)) +var captureRightClick = gecko || (ie && ie_version >= 9) + +function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") } + +var rmClass = function(node, cls) { + var current = node.className + var match = classTest(cls).exec(current) + if (match) { + var after = current.slice(match.index + match[0].length) + node.className = current.slice(0, match.index) + (after ? match[1] + after : "") + } +} + +function removeChildren(e) { + for (var count = e.childNodes.length; count > 0; --count) + { e.removeChild(e.firstChild) } + return e +} + +function removeChildrenAndAdd(parent, e) { + return removeChildren(parent).appendChild(e) +} + +function elt(tag, content, className, style) { + var e = document.createElement(tag) + if (className) { e.className = className } + if (style) { e.style.cssText = style } + if (typeof content == "string") { e.appendChild(document.createTextNode(content)) } + else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]) } } + return e +} +// wrapper for elt, which removes the elt from the accessibility tree +function eltP(tag, content, className, style) { + var e = elt(tag, content, className, style) + e.setAttribute("role", "presentation") + return e +} + +var range +if (document.createRange) { range = function(node, start, end, endNode) { + var r = document.createRange() + r.setEnd(endNode || node, end) + r.setStart(node, start) + return r +} } +else { range = function(node, start, end) { + var r = document.body.createTextRange() + try { r.moveToElementText(node.parentNode) } + catch(e) { return r } + r.collapse(true) + r.moveEnd("character", end) + r.moveStart("character", start) + return r +} } + +function contains(parent, child) { + if (child.nodeType == 3) // Android browser always returns false when child is a textnode + { child = child.parentNode } + if (parent.contains) + { return parent.contains(child) } + do { + if (child.nodeType == 11) { child = child.host } + if (child == parent) { return true } + } while (child = child.parentNode) +} + +function activeElt() { + // IE and Edge may throw an "Unspecified Error" when accessing document.activeElement. + // IE < 10 will throw when accessed while the page is loading or in an iframe. + // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable. + var activeElement + try { + activeElement = document.activeElement + } catch(e) { + activeElement = document.body || null + } + while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) + { activeElement = activeElement.shadowRoot.activeElement } + return activeElement +} + +function addClass(node, cls) { + var current = node.className + if (!classTest(cls).test(current)) { node.className += (current ? " " : "") + cls } +} +function joinClasses(a, b) { + var as = a.split(" ") + for (var i = 0; i < as.length; i++) + { if (as[i] && !classTest(as[i]).test(b)) { b += " " + as[i] } } + return b +} + +var selectInput = function(node) { node.select() } +if (ios) // Mobile Safari apparently has a bug where select() is broken. + { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length } } +else if (ie) // Suppress mysterious IE10 errors + { selectInput = function(node) { try { node.select() } catch(_e) {} } } + +function bind(f) { + var args = Array.prototype.slice.call(arguments, 1) + return function(){return f.apply(null, args)} +} + +function copyObj(obj, target, overwrite) { + if (!target) { target = {} } + for (var prop in obj) + { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) + { target[prop] = obj[prop] } } + return target +} + +// Counts the column offset in a string, taking tabs into account. +// Used mostly to find indentation. +function countColumn(string, end, tabSize, startIndex, startValue) { + if (end == null) { + end = string.search(/[^\s\u00a0]/) + if (end == -1) { end = string.length } + } + for (var i = startIndex || 0, n = startValue || 0;;) { + var nextTab = string.indexOf("\t", i) + if (nextTab < 0 || nextTab >= end) + { return n + (end - i) } + n += nextTab - i + n += tabSize - (n % tabSize) + i = nextTab + 1 + } +} + +var Delayed = function() {this.id = null}; +Delayed.prototype.set = function (ms, f) { + clearTimeout(this.id) + this.id = setTimeout(f, ms) +}; + +function indexOf(array, elt) { + for (var i = 0; i < array.length; ++i) + { if (array[i] == elt) { return i } } + return -1 +} + +// Number of pixels added to scroller and sizer to hide scrollbar +var scrollerGap = 30 + +// Returned or thrown by various protocols to signal 'I'm not +// handling this'. +var Pass = {toString: function(){return "CodeMirror.Pass"}} + +// Reused option objects for setSelection & friends +var sel_dontScroll = {scroll: false}; +var sel_mouse = {origin: "*mouse"}; +var sel_move = {origin: "+move"}; +// The inverse of countColumn -- find the offset that corresponds to +// a particular column. +function findColumn(string, goal, tabSize) { + for (var pos = 0, col = 0;;) { + var nextTab = string.indexOf("\t", pos) + if (nextTab == -1) { nextTab = string.length } + var skipped = nextTab - pos + if (nextTab == string.length || col + skipped >= goal) + { return pos + Math.min(skipped, goal - col) } + col += nextTab - pos + col += tabSize - (col % tabSize) + pos = nextTab + 1 + if (col >= goal) { return pos } + } +} + +var spaceStrs = [""] +function spaceStr(n) { + while (spaceStrs.length <= n) + { spaceStrs.push(lst(spaceStrs) + " ") } + return spaceStrs[n] +} + +function lst(arr) { return arr[arr.length-1] } + +function map(array, f) { + var out = [] + for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i) } + return out +} + +function insertSorted(array, value, score) { + var pos = 0, priority = score(value) + while (pos < array.length && score(array[pos]) <= priority) { pos++ } + array.splice(pos, 0, value) +} + +function nothing() {} + +function createObj(base, props) { + var inst + if (Object.create) { + inst = Object.create(base) + } else { + nothing.prototype = base + inst = new nothing() + } + if (props) { copyObj(props, inst) } + return inst +} + +var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/ +function isWordCharBasic(ch) { + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)) +} +function isWordChar(ch, helper) { + if (!helper) { return isWordCharBasic(ch) } + if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) { return true } + return helper.test(ch) +} + +function isEmpty(obj) { + for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } } + return true +} + +// Extending unicode characters. A series of a non-extending char + +// any number of extending chars is treated as a single unit as far +// as editing and measuring is concerned. This is not fully correct, +// since some scripts/fonts/browsers also treat other configurations +// of code points as a group. +var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/ +function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) } + +// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range. +function skipExtendingChars(str, pos, dir) { + while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir } + return pos +} + +// Returns the value from the range [`from`; `to`] that satisfies +// `pred` and is closest to `from`. Assumes that at least `to` +// satisfies `pred`. Supports `from` being greater than `to`. +function findFirst(pred, from, to) { + // At any point we are certain `to` satisfies `pred`, don't know + // whether `from` does. + var dir = from > to ? -1 : 1 + for (;;) { + if (from == to) { return from } + var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF) + if (mid == from) { return pred(mid) ? from : to } + if (pred(mid)) { to = mid } + else { from = mid + dir } + } +} + +// The display handles the DOM integration, both for input reading +// and content drawing. It holds references to DOM nodes and +// display-related state. + +function Display(place, doc, input) { + var d = this + this.input = input + + // Covers bottom-right square when both scrollbars are present. + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler") + d.scrollbarFiller.setAttribute("cm-not-content", "true") + // Covers bottom of gutter when coverGutterNextToScrollbar is on + // and h scrollbar is present. + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler") + d.gutterFiller.setAttribute("cm-not-content", "true") + // Will contain the actual code, positioned to cover the viewport. + d.lineDiv = eltP("div", null, "CodeMirror-code") + // Elements are added to these to represent selection and cursors. + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1") + d.cursorDiv = elt("div", null, "CodeMirror-cursors") + // A visibility: hidden element used to find the size of things. + d.measure = elt("div", null, "CodeMirror-measure") + // When lines outside of the viewport are measured, they are drawn in this. + d.lineMeasure = elt("div", null, "CodeMirror-measure") + // Wraps everything that needs to exist inside the vertically-padded coordinate system + d.lineSpace = eltP("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], + null, "position: relative; outline: none") + var lines = eltP("div", [d.lineSpace], "CodeMirror-lines") + // Moved around its parent to cover visible view. + d.mover = elt("div", [lines], null, "position: relative") + // Set to the height of the document, allowing scrolling. + d.sizer = elt("div", [d.mover], "CodeMirror-sizer") + d.sizerWidth = null + // Behavior of elts with overflow: auto and padding is + // inconsistent across browsers. This is used to ensure the + // scrollable area is big enough. + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;") + // Will contain the gutters, if any. + d.gutters = elt("div", null, "CodeMirror-gutters") + d.lineGutter = null + // Actual scrollable element. + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll") + d.scroller.setAttribute("tabIndex", "-1") + // The element in which the editor lives. + d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror") + + // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) + if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0 } + if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true } + + if (place) { + if (place.appendChild) { place.appendChild(d.wrapper) } + else { place(d.wrapper) } + } + + // Current rendered range (may be bigger than the view window). + d.viewFrom = d.viewTo = doc.first + d.reportedViewFrom = d.reportedViewTo = doc.first + // Information about the rendered lines. + d.view = [] + d.renderedView = null + // Holds info about a single rendered line when it was rendered + // for measurement, while not in view. + d.externalMeasured = null + // Empty space (in pixels) above the view + d.viewOffset = 0 + d.lastWrapHeight = d.lastWrapWidth = 0 + d.updateLineNumbers = null + + d.nativeBarWidth = d.barHeight = d.barWidth = 0 + d.scrollbarsClipped = false + + // Used to only resize the line number gutter when necessary (when + // the amount of lines crosses a boundary that makes its width change) + d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null + // Set to true when a non-horizontal-scrolling line widget is + // added. As an optimization, line widget aligning is skipped when + // this is false. + d.alignWidgets = false + + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null + + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + d.maxLine = null + d.maxLineLength = 0 + d.maxLineChanged = false + + // Used for measuring wheel scrolling granularity + d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null + + // True when shift is held down. + d.shift = false + + // Used to track whether anything happened since the context menu + // was opened. + d.selForContextMenu = null + + d.activeTouch = null + + input.init(d) +} + +// Find the line object corresponding to the given line number. +function getLine(doc, n) { + n -= doc.first + if (n < 0 || n >= doc.size) { throw new Error("There is no line " + (n + doc.first) + " in the document.") } + var chunk = doc + while (!chunk.lines) { + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize() + if (n < sz) { chunk = child; break } + n -= sz + } + } + return chunk.lines[n] +} + +// Get the part of a document between two positions, as an array of +// strings. +function getBetween(doc, start, end) { + var out = [], n = start.line + doc.iter(start.line, end.line + 1, function (line) { + var text = line.text + if (n == end.line) { text = text.slice(0, end.ch) } + if (n == start.line) { text = text.slice(start.ch) } + out.push(text) + ++n + }) + return out +} +// Get the lines between from and to, as array of strings. +function getLines(doc, from, to) { + var out = [] + doc.iter(from, to, function (line) { out.push(line.text) }) // iter aborts when callback returns truthy value + return out +} + +// Update the height of a line, propagating the height change +// upwards to parent nodes. +function updateLineHeight(line, height) { + var diff = height - line.height + if (diff) { for (var n = line; n; n = n.parent) { n.height += diff } } +} + +// Given a line object, find its line number by walking up through +// its parent links. +function lineNo(line) { + if (line.parent == null) { return null } + var cur = line.parent, no = indexOf(cur.lines, line) + for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (var i = 0;; ++i) { + if (chunk.children[i] == cur) { break } + no += chunk.children[i].chunkSize() + } + } + return no + cur.first +} + +// Find the line at the given vertical position, using the height +// information in the document tree. +function lineAtHeight(chunk, h) { + var n = chunk.first + outer: do { + for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) { + var child = chunk.children[i$1], ch = child.height + if (h < ch) { chunk = child; continue outer } + h -= ch + n += child.chunkSize() + } + return n + } while (!chunk.lines) + var i = 0 + for (; i < chunk.lines.length; ++i) { + var line = chunk.lines[i], lh = line.height + if (h < lh) { break } + h -= lh + } + return n + i +} + +function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size} + +function lineNumberFor(options, i) { + return String(options.lineNumberFormatter(i + options.firstLineNumber)) +} + +// A Pos instance represents a position within the text. +function Pos(line, ch, sticky) { + if ( sticky === void 0 ) sticky = null; + + if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) } + this.line = line + this.ch = ch + this.sticky = sticky +} + +// Compare two positions, return 0 if they are the same, a negative +// number when a is less, and a positive number otherwise. +function cmp(a, b) { return a.line - b.line || a.ch - b.ch } + +function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 } + +function copyPos(x) {return Pos(x.line, x.ch)} +function maxPos(a, b) { return cmp(a, b) < 0 ? b : a } +function minPos(a, b) { return cmp(a, b) < 0 ? a : b } + +// Most of the external API clips given positions to make sure they +// actually exist within the document. +function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))} +function clipPos(doc, pos) { + if (pos.line < doc.first) { return Pos(doc.first, 0) } + var last = doc.first + doc.size - 1 + if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) } + return clipToLen(pos, getLine(doc, pos.line).text.length) +} +function clipToLen(pos, linelen) { + var ch = pos.ch + if (ch == null || ch > linelen) { return Pos(pos.line, linelen) } + else if (ch < 0) { return Pos(pos.line, 0) } + else { return pos } +} +function clipPosArray(doc, array) { + var out = [] + for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]) } + return out +} + +// Optimize some code when these features are not used. +var sawReadOnlySpans = false; +var sawCollapsedSpans = false; +function seeReadOnlySpans() { + sawReadOnlySpans = true +} + +function seeCollapsedSpans() { + sawCollapsedSpans = true +} + +// TEXTMARKER SPANS + +function MarkedSpan(marker, from, to) { + this.marker = marker + this.from = from; this.to = to +} + +// Search an array of spans for a span matching the given marker. +function getMarkedSpanFor(spans, marker) { + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i] + if (span.marker == marker) { return span } + } } +} +// Remove a span from an array, returning undefined if no spans are +// left (we don't store arrays for lines without spans). +function removeMarkedSpan(spans, span) { + var r + for (var i = 0; i < spans.length; ++i) + { if (spans[i] != span) { (r || (r = [])).push(spans[i]) } } + return r +} +// Add a span to a line. +function addMarkedSpan(line, span) { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span] + span.marker.attachLine(line) +} + +// Used for the algorithm that adjusts markers for a change in the +// document. These functions cut an array of spans at a given +// character position, returning an array of remaining chunks (or +// undefined if nothing remains). +function markedSpansBefore(old, startCh, isInsert) { + var nw + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh) + if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)) + } + } } + return nw +} +function markedSpansAfter(old, endCh, isInsert) { + var nw + if (old) { for (var i = 0; i < old.length; ++i) { + var span = old[i], marker = span.marker + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh) + if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, + span.to == null ? null : span.to - endCh)) + } + } } + return nw +} + +// Given a change object, compute the new set of marker spans that +// cover the line in which the change took place. Removes spans +// entirely within the change, reconnects spans belonging to the +// same marker that appear on both sides of the change, and cuts off +// spans partially within the change. Returns an array of span +// arrays with one element for each line in (after) the change. +function stretchSpansOverChange(doc, change) { + if (change.full) { return null } + var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans + var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans + if (!oldFirst && !oldLast) { return null } + + var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0 + // Get the spans that 'stick out' on both sides + var first = markedSpansBefore(oldFirst, startCh, isInsert) + var last = markedSpansAfter(oldLast, endCh, isInsert) + + // Next, merge those two ends + var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0) + if (first) { + // Fix up .to properties of first + for (var i = 0; i < first.length; ++i) { + var span = first[i] + if (span.to == null) { + var found = getMarkedSpanFor(last, span.marker) + if (!found) { span.to = startCh } + else if (sameLine) { span.to = found.to == null ? null : found.to + offset } + } + } + } + if (last) { + // Fix up .from in last (or move them into first in case of sameLine) + for (var i$1 = 0; i$1 < last.length; ++i$1) { + var span$1 = last[i$1] + if (span$1.to != null) { span$1.to += offset } + if (span$1.from == null) { + var found$1 = getMarkedSpanFor(first, span$1.marker) + if (!found$1) { + span$1.from = offset + if (sameLine) { (first || (first = [])).push(span$1) } + } + } else { + span$1.from += offset + if (sameLine) { (first || (first = [])).push(span$1) } + } + } + } + // Make sure we didn't create any zero-length spans + if (first) { first = clearEmptySpans(first) } + if (last && last != first) { last = clearEmptySpans(last) } + + var newMarkers = [first] + if (!sameLine) { + // Fill gap with whole-line-spans + var gap = change.text.length - 2, gapMarkers + if (gap > 0 && first) + { for (var i$2 = 0; i$2 < first.length; ++i$2) + { if (first[i$2].to == null) + { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)) } } } + for (var i$3 = 0; i$3 < gap; ++i$3) + { newMarkers.push(gapMarkers) } + newMarkers.push(last) + } + return newMarkers +} + +// Remove spans that are empty and don't have a clearWhenEmpty +// option of false. +function clearEmptySpans(spans) { + for (var i = 0; i < spans.length; ++i) { + var span = spans[i] + if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) + { spans.splice(i--, 1) } + } + if (!spans.length) { return null } + return spans +} + +// Used to 'clip' out readOnly ranges when making a change. +function removeReadOnlyRanges(doc, from, to) { + var markers = null + doc.iter(from.line, to.line + 1, function (line) { + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var mark = line.markedSpans[i].marker + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + { (markers || (markers = [])).push(mark) } + } } + }) + if (!markers) { return null } + var parts = [{from: from, to: to}] + for (var i = 0; i < markers.length; ++i) { + var mk = markers[i], m = mk.find(0) + for (var j = 0; j < parts.length; ++j) { + var p = parts[j] + if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue } + var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to) + if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) + { newParts.push({from: p.from, to: m.from}) } + if (dto > 0 || !mk.inclusiveRight && !dto) + { newParts.push({from: m.to, to: p.to}) } + parts.splice.apply(parts, newParts) + j += newParts.length - 3 + } + } + return parts +} + +// Connect or disconnect spans from a line. +function detachMarkedSpans(line) { + var spans = line.markedSpans + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.detachLine(line) } + line.markedSpans = null +} +function attachMarkedSpans(line, spans) { + if (!spans) { return } + for (var i = 0; i < spans.length; ++i) + { spans[i].marker.attachLine(line) } + line.markedSpans = spans +} + +// Helpers used when computing which overlapping collapsed span +// counts as the larger one. +function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 } +function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 } + +// Returns a number indicating which of two overlapping collapsed +// spans is larger (and thus includes the other). Falls back to +// comparing ids when the spans cover exactly the same range. +function compareCollapsedMarkers(a, b) { + var lenDiff = a.lines.length - b.lines.length + if (lenDiff != 0) { return lenDiff } + var aPos = a.find(), bPos = b.find() + var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b) + if (fromCmp) { return -fromCmp } + var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b) + if (toCmp) { return toCmp } + return b.id - a.id +} + +// Find out whether a line ends or starts in a collapsed span. If +// so, return the marker for that span. +function collapsedSpanAtSide(line, start) { + var sps = sawCollapsedSpans && line.markedSpans, found + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i] + if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) + { found = sp.marker } + } } + return found +} +function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) } +function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) } + +// Test whether there exists a collapsed span that partially +// overlaps (covers the start or end, but not both) of a new span. +// Such overlap is not allowed. +function conflictingCollapsedRange(doc, lineNo, from, to, marker) { + var line = getLine(doc, lineNo) + var sps = sawCollapsedSpans && line.markedSpans + if (sps) { for (var i = 0; i < sps.length; ++i) { + var sp = sps[i] + if (!sp.marker.collapsed) { continue } + var found = sp.marker.find(0) + var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker) + var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker) + if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue } + if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || + fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) + { return true } + } } +} + +// A visual line is a line as drawn on the screen. Folding, for +// example, can cause multiple logical lines to appear on the same +// visual line. This finds the start of the visual line that the +// given line is part of (usually that is the line itself). +function visualLine(line) { + var merged + while (merged = collapsedSpanAtStart(line)) + { line = merged.find(-1, true).line } + return line +} + +function visualLineEnd(line) { + var merged + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line } + return line +} + +// Returns an array of logical lines that continue the visual line +// started by the argument, or undefined if there are no such lines. +function visualLineContinued(line) { + var merged, lines + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line + ;(lines || (lines = [])).push(line) + } + return lines +} + +// Get the line number of the start of the visual line that the +// given line number is part of. +function visualLineNo(doc, lineN) { + var line = getLine(doc, lineN), vis = visualLine(line) + if (line == vis) { return lineN } + return lineNo(vis) +} + +// Get the line number of the start of the next visual line after +// the given line. +function visualLineEndNo(doc, lineN) { + if (lineN > doc.lastLine()) { return lineN } + var line = getLine(doc, lineN), merged + if (!lineIsHidden(doc, line)) { return lineN } + while (merged = collapsedSpanAtEnd(line)) + { line = merged.find(1, true).line } + return lineNo(line) + 1 +} + +// Compute whether a line is hidden. Lines count as hidden when they +// are part of a visual line that starts with another line, or when +// they are entirely covered by collapsed, non-widget span. +function lineIsHidden(doc, line) { + var sps = sawCollapsedSpans && line.markedSpans + if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) { + sp = sps[i] + if (!sp.marker.collapsed) { continue } + if (sp.from == null) { return true } + if (sp.marker.widgetNode) { continue } + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + { return true } + } } +} +function lineIsHiddenInner(doc, line, span) { + if (span.to == null) { + var end = span.marker.find(1, true) + return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)) + } + if (span.marker.inclusiveRight && span.to == line.text.length) + { return true } + for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) { + sp = line.markedSpans[i] + if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && + (sp.to == null || sp.to != span.from) && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) { return true } + } +} + +// Find the height above the given line. +function heightAtLine(lineObj) { + lineObj = visualLine(lineObj) + + var h = 0, chunk = lineObj.parent + for (var i = 0; i < chunk.lines.length; ++i) { + var line = chunk.lines[i] + if (line == lineObj) { break } + else { h += line.height } + } + for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { + for (var i$1 = 0; i$1 < p.children.length; ++i$1) { + var cur = p.children[i$1] + if (cur == chunk) { break } + else { h += cur.height } + } + } + return h +} + +// Compute the character length of a line, taking into account +// collapsed ranges (see markText) that might hide parts, and join +// other lines onto it. +function lineLength(line) { + if (line.height == 0) { return 0 } + var len = line.text.length, merged, cur = line + while (merged = collapsedSpanAtStart(cur)) { + var found = merged.find(0, true) + cur = found.from.line + len += found.from.ch - found.to.ch + } + cur = line + while (merged = collapsedSpanAtEnd(cur)) { + var found$1 = merged.find(0, true) + len -= cur.text.length - found$1.from.ch + cur = found$1.to.line + len += cur.text.length - found$1.to.ch + } + return len +} + +// Find the longest line in the document. +function findMaxLine(cm) { + var d = cm.display, doc = cm.doc + d.maxLine = getLine(doc, doc.first) + d.maxLineLength = lineLength(d.maxLine) + d.maxLineChanged = true + doc.iter(function (line) { + var len = lineLength(line) + if (len > d.maxLineLength) { + d.maxLineLength = len + d.maxLine = line + } + }) +} + +// BIDI HELPERS + +function iterateBidiSections(order, from, to, f) { + if (!order) { return f(from, to, "ltr", 0) } + var found = false + for (var i = 0; i < order.length; ++i) { + var part = order[i] + if (part.from < to && part.to > from || from == to && part.to == from) { + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr", i) + found = true + } + } + if (!found) { f(from, to, "ltr") } +} + +var bidiOther = null +function getBidiPartAt(order, ch, sticky) { + var found + bidiOther = null + for (var i = 0; i < order.length; ++i) { + var cur = order[i] + if (cur.from < ch && cur.to > ch) { return i } + if (cur.to == ch) { + if (cur.from != cur.to && sticky == "before") { found = i } + else { bidiOther = i } + } + if (cur.from == ch) { + if (cur.from != cur.to && sticky != "before") { found = i } + else { bidiOther = i } + } + } + return found != null ? found : bidiOther +} + +// Bidirectional ordering algorithm +// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm +// that this (partially) implements. + +// One-char codes used for character types: +// L (L): Left-to-Right +// R (R): Right-to-Left +// r (AL): Right-to-Left Arabic +// 1 (EN): European Number +// + (ES): European Number Separator +// % (ET): European Number Terminator +// n (AN): Arabic Number +// , (CS): Common Number Separator +// m (NSM): Non-Spacing Mark +// b (BN): Boundary Neutral +// s (B): Paragraph Separator +// t (S): Segment Separator +// w (WS): Whitespace +// N (ON): Other Neutrals + +// Returns null if characters are ordered as they appear +// (left-to-right), or an array of sections ({from, to, level} +// objects) in the order in which they occur visually. +var bidiOrdering = (function() { + // Character types for codepoints 0 to 0xff + var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN" + // Character types for codepoints 0x600 to 0x6f9 + var arabicTypes = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111" + function charType(code) { + if (code <= 0xf7) { return lowTypes.charAt(code) } + else if (0x590 <= code && code <= 0x5f4) { return "R" } + else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) } + else if (0x6ee <= code && code <= 0x8ac) { return "r" } + else if (0x2000 <= code && code <= 0x200b) { return "w" } + else if (code == 0x200c) { return "b" } + else { return "L" } + } + + var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/ + var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/ + + function BidiSpan(level, from, to) { + this.level = level + this.from = from; this.to = to + } + + return function(str, direction) { + var outerType = direction == "ltr" ? "L" : "R" + + if (str.length == 0 || direction == "ltr" && !bidiRE.test(str)) { return false } + var len = str.length, types = [] + for (var i = 0; i < len; ++i) + { types.push(charType(str.charCodeAt(i))) } + + // W1. Examine each non-spacing mark (NSM) in the level run, and + // change the type of the NSM to the type of the previous + // character. If the NSM is at the start of the level run, it will + // get the type of sor. + for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) { + var type = types[i$1] + if (type == "m") { types[i$1] = prev } + else { prev = type } + } + + // W2. Search backwards from each instance of a European number + // until the first strong type (R, L, AL, or sor) is found. If an + // AL is found, change the type of the European number to Arabic + // number. + // W3. Change all ALs to R. + for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) { + var type$1 = types[i$2] + if (type$1 == "1" && cur == "r") { types[i$2] = "n" } + else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == "r") { types[i$2] = "R" } } + } + + // W4. A single European separator between two European numbers + // changes to a European number. A single common separator between + // two numbers of the same type changes to that type. + for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) { + var type$2 = types[i$3] + if (type$2 == "+" && prev$1 == "1" && types[i$3+1] == "1") { types[i$3] = "1" } + else if (type$2 == "," && prev$1 == types[i$3+1] && + (prev$1 == "1" || prev$1 == "n")) { types[i$3] = prev$1 } + prev$1 = type$2 + } + + // W5. A sequence of European terminators adjacent to European + // numbers changes to all European numbers. + // W6. Otherwise, separators and terminators change to Other + // Neutral. + for (var i$4 = 0; i$4 < len; ++i$4) { + var type$3 = types[i$4] + if (type$3 == ",") { types[i$4] = "N" } + else if (type$3 == "%") { + var end = (void 0) + for (end = i$4 + 1; end < len && types[end] == "%"; ++end) {} + var replace = (i$4 && types[i$4-1] == "!") || (end < len && types[end] == "1") ? "1" : "N" + for (var j = i$4; j < end; ++j) { types[j] = replace } + i$4 = end - 1 + } + } + + // W7. Search backwards from each instance of a European number + // until the first strong type (R, L, or sor) is found. If an L is + // found, then change the type of the European number to L. + for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) { + var type$4 = types[i$5] + if (cur$1 == "L" && type$4 == "1") { types[i$5] = "L" } + else if (isStrong.test(type$4)) { cur$1 = type$4 } + } + + // N1. A sequence of neutrals takes the direction of the + // surrounding strong text if the text on both sides has the same + // direction. European and Arabic numbers act as if they were R in + // terms of their influence on neutrals. Start-of-level-run (sor) + // and end-of-level-run (eor) are used at level run boundaries. + // N2. Any remaining neutrals take the embedding direction. + for (var i$6 = 0; i$6 < len; ++i$6) { + if (isNeutral.test(types[i$6])) { + var end$1 = (void 0) + for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {} + var before = (i$6 ? types[i$6-1] : outerType) == "L" + var after = (end$1 < len ? types[end$1] : outerType) == "L" + var replace$1 = before == after ? (before ? "L" : "R") : outerType + for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1 } + i$6 = end$1 - 1 + } + } + + // Here we depart from the documented algorithm, in order to avoid + // building up an actual levels array. Since there are only three + // levels (0, 1, 2) in an implementation that doesn't take + // explicit embedding into account, we can build up the order on + // the fly, without following the level-based algorithm. + var order = [], m + for (var i$7 = 0; i$7 < len;) { + if (countsAsLeft.test(types[i$7])) { + var start = i$7 + for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {} + order.push(new BidiSpan(0, start, i$7)) + } else { + var pos = i$7, at = order.length + for (++i$7; i$7 < len && types[i$7] != "L"; ++i$7) {} + for (var j$2 = pos; j$2 < i$7;) { + if (countsAsNum.test(types[j$2])) { + if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)) } + var nstart = j$2 + for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {} + order.splice(at, 0, new BidiSpan(2, nstart, j$2)) + pos = j$2 + } else { ++j$2 } + } + if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)) } + } + } + if (order[0].level == 1 && (m = str.match(/^\s+/))) { + order[0].from = m[0].length + order.unshift(new BidiSpan(0, 0, m[0].length)) + } + if (lst(order).level == 1 && (m = str.match(/\s+$/))) { + lst(order).to -= m[0].length + order.push(new BidiSpan(0, len - m[0].length, len)) + } + + return direction == "rtl" ? order.reverse() : order + } +})() + +// Get the bidi ordering for the given line (and cache it). Returns +// false for lines that are fully left-to-right, and an array of +// BidiSpan objects otherwise. +function getOrder(line, direction) { + var order = line.order + if (order == null) { order = line.order = bidiOrdering(line.text, direction) } + return order +} + +// EVENT HANDLING + +// Lightweight event framework. on/off also work on DOM nodes, +// registering native DOM handlers. + +var noHandlers = [] + +var on = function(emitter, type, f) { + if (emitter.addEventListener) { + emitter.addEventListener(type, f, false) + } else if (emitter.attachEvent) { + emitter.attachEvent("on" + type, f) + } else { + var map = emitter._handlers || (emitter._handlers = {}) + map[type] = (map[type] || noHandlers).concat(f) + } +} + +function getHandlers(emitter, type) { + return emitter._handlers && emitter._handlers[type] || noHandlers +} + +function off(emitter, type, f) { + if (emitter.removeEventListener) { + emitter.removeEventListener(type, f, false) + } else if (emitter.detachEvent) { + emitter.detachEvent("on" + type, f) + } else { + var map = emitter._handlers, arr = map && map[type] + if (arr) { + var index = indexOf(arr, f) + if (index > -1) + { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)) } + } + } +} + +function signal(emitter, type /*, values...*/) { + var handlers = getHandlers(emitter, type) + if (!handlers.length) { return } + var args = Array.prototype.slice.call(arguments, 2) + for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args) } +} + +// The DOM events that CodeMirror handles can be overridden by +// registering a (non-DOM) handler on the editor for the event name, +// and preventDefault-ing the event in that handler. +function signalDOMEvent(cm, e, override) { + if (typeof e == "string") + { e = {type: e, preventDefault: function() { this.defaultPrevented = true }} } + signal(cm, override || e.type, cm, e) + return e_defaultPrevented(e) || e.codemirrorIgnore +} + +function signalCursorActivity(cm) { + var arr = cm._handlers && cm._handlers.cursorActivity + if (!arr) { return } + var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []) + for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1) + { set.push(arr[i]) } } +} + +function hasHandler(emitter, type) { + return getHandlers(emitter, type).length > 0 +} + +// Add on and off methods to a constructor's prototype, to make +// registering events on such objects more convenient. +function eventMixin(ctor) { + ctor.prototype.on = function(type, f) {on(this, type, f)} + ctor.prototype.off = function(type, f) {off(this, type, f)} +} + +// Due to the fact that we still support jurassic IE versions, some +// compatibility wrappers are needed. + +function e_preventDefault(e) { + if (e.preventDefault) { e.preventDefault() } + else { e.returnValue = false } +} +function e_stopPropagation(e) { + if (e.stopPropagation) { e.stopPropagation() } + else { e.cancelBubble = true } +} +function e_defaultPrevented(e) { + return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false +} +function e_stop(e) {e_preventDefault(e); e_stopPropagation(e)} + +function e_target(e) {return e.target || e.srcElement} +function e_button(e) { + var b = e.which + if (b == null) { + if (e.button & 1) { b = 1 } + else if (e.button & 2) { b = 3 } + else if (e.button & 4) { b = 2 } + } + if (mac && e.ctrlKey && b == 1) { b = 3 } + return b +} + +// Detect drag-and-drop +var dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie && ie_version < 9) { return false } + var div = elt('div') + return "draggable" in div || "dragDrop" in div +}() + +var zwspSupported +function zeroWidthElement(measure) { + if (zwspSupported == null) { + var test = elt("span", "\u200b") + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])) + if (measure.firstChild.offsetHeight != 0) + { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8) } + } + var node = zwspSupported ? elt("span", "\u200b") : + elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px") + node.setAttribute("cm-text", "") + return node +} + +// Feature-detect IE's crummy client rect reporting for bidi text +var badBidiRects +function hasBadBidiRects(measure) { + if (badBidiRects != null) { return badBidiRects } + var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")) + var r0 = range(txt, 0, 1).getBoundingClientRect() + var r1 = range(txt, 1, 2).getBoundingClientRect() + removeChildren(measure) + if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780) + return badBidiRects = (r1.right - r0.right < 3) +} + +// See if "".split is the broken IE version, if so, provide an +// alternative way to split lines. +var splitLinesAuto = "\n\nb".split(/\n/).length != 3 ? function (string) { + var pos = 0, result = [], l = string.length + while (pos <= l) { + var nl = string.indexOf("\n", pos) + if (nl == -1) { nl = string.length } + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl) + var rt = line.indexOf("\r") + if (rt != -1) { + result.push(line.slice(0, rt)) + pos += rt + 1 + } else { + result.push(line) + pos = nl + 1 + } + } + return result +} : function (string) { return string.split(/\r\n?|\n/); } + +var hasSelection = window.getSelection ? function (te) { + try { return te.selectionStart != te.selectionEnd } + catch(e) { return false } +} : function (te) { + var range + try {range = te.ownerDocument.selection.createRange()} + catch(e) {} + if (!range || range.parentElement() != te) { return false } + return range.compareEndPoints("StartToEnd", range) != 0 +} + +var hasCopyEvent = (function () { + var e = elt("div") + if ("oncopy" in e) { return true } + e.setAttribute("oncopy", "return;") + return typeof e.oncopy == "function" +})() + +var badZoomedRects = null +function hasBadZoomedRects(measure) { + if (badZoomedRects != null) { return badZoomedRects } + var node = removeChildrenAndAdd(measure, elt("span", "x")) + var normal = node.getBoundingClientRect() + var fromRange = range(node, 0, 1).getBoundingClientRect() + return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1 +} + +var modes = {}; +var mimeModes = {}; +// Extra arguments are stored as the mode's dependencies, which is +// used by (legacy) mechanisms like loadmode.js to automatically +// load a mode. (Preferred mechanism is the require/define calls.) +function defineMode(name, mode) { + if (arguments.length > 2) + { mode.dependencies = Array.prototype.slice.call(arguments, 2) } + modes[name] = mode +} + +function defineMIME(mime, spec) { + mimeModes[mime] = spec +} + +// Given a MIME type, a {name, ...options} config object, or a name +// string, return a mode config object. +function resolveMode(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { + spec = mimeModes[spec] + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { + var found = mimeModes[spec.name] + if (typeof found == "string") { found = {name: found} } + spec = createObj(found, spec) + spec.name = found.name + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return resolveMode("application/xml") + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { + return resolveMode("application/json") + } + if (typeof spec == "string") { return {name: spec} } + else { return spec || {name: "null"} } +} + +// Given a mode spec (anything that resolveMode accepts), find and +// initialize an actual mode object. +function getMode(options, spec) { + spec = resolveMode(spec) + var mfactory = modes[spec.name] + if (!mfactory) { return getMode(options, "text/plain") } + var modeObj = mfactory(options, spec) + if (modeExtensions.hasOwnProperty(spec.name)) { + var exts = modeExtensions[spec.name] + for (var prop in exts) { + if (!exts.hasOwnProperty(prop)) { continue } + if (modeObj.hasOwnProperty(prop)) { modeObj["_" + prop] = modeObj[prop] } + modeObj[prop] = exts[prop] + } + } + modeObj.name = spec.name + if (spec.helperType) { modeObj.helperType = spec.helperType } + if (spec.modeProps) { for (var prop$1 in spec.modeProps) + { modeObj[prop$1] = spec.modeProps[prop$1] } } + + return modeObj +} + +// This can be used to attach properties to mode objects from +// outside the actual mode definition. +var modeExtensions = {} +function extendMode(mode, properties) { + var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}) + copyObj(properties, exts) +} + +function copyState(mode, state) { + if (state === true) { return state } + if (mode.copyState) { return mode.copyState(state) } + var nstate = {} + for (var n in state) { + var val = state[n] + if (val instanceof Array) { val = val.concat([]) } + nstate[n] = val + } + return nstate +} + +// Given a mode and a state (for that mode), find the inner mode and +// state at the position that the state refers to. +function innerMode(mode, state) { + var info + while (mode.innerMode) { + info = mode.innerMode(state) + if (!info || info.mode == mode) { break } + state = info.state + mode = info.mode + } + return info || {mode: mode, state: state} +} + +function startState(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true +} + +// STRING STREAM + +// Fed to the mode parsers, provides helper functions to make +// parsers more succinct. + +var StringStream = function(string, tabSize, lineOracle) { + this.pos = this.start = 0 + this.string = string + this.tabSize = tabSize || 8 + this.lastColumnPos = this.lastColumnValue = 0 + this.lineStart = 0 + this.lineOracle = lineOracle +}; + +StringStream.prototype.eol = function () {return this.pos >= this.string.length}; +StringStream.prototype.sol = function () {return this.pos == this.lineStart}; +StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined}; +StringStream.prototype.next = function () { + if (this.pos < this.string.length) + { return this.string.charAt(this.pos++) } +}; +StringStream.prototype.eat = function (match) { + var ch = this.string.charAt(this.pos) + var ok + if (typeof match == "string") { ok = ch == match } + else { ok = ch && (match.test ? match.test(ch) : match(ch)) } + if (ok) {++this.pos; return ch} +}; +StringStream.prototype.eatWhile = function (match) { + var start = this.pos + while (this.eat(match)){} + return this.pos > start +}; +StringStream.prototype.eatSpace = function () { + var this$1 = this; + + var start = this.pos + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) { ++this$1.pos } + return this.pos > start +}; +StringStream.prototype.skipToEnd = function () {this.pos = this.string.length}; +StringStream.prototype.skipTo = function (ch) { + var found = this.string.indexOf(ch, this.pos) + if (found > -1) {this.pos = found; return true} +}; +StringStream.prototype.backUp = function (n) {this.pos -= n}; +StringStream.prototype.column = function () { + if (this.lastColumnPos < this.start) { + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue) + this.lastColumnPos = this.start + } + return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) +}; +StringStream.prototype.indentation = function () { + return countColumn(this.string, null, this.tabSize) - + (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) +}; +StringStream.prototype.match = function (pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; } + var substr = this.string.substr(this.pos, pattern.length) + if (cased(substr) == cased(pattern)) { + if (consume !== false) { this.pos += pattern.length } + return true + } + } else { + var match = this.string.slice(this.pos).match(pattern) + if (match && match.index > 0) { return null } + if (match && consume !== false) { this.pos += match[0].length } + return match + } +}; +StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)}; +StringStream.prototype.hideFirstChars = function (n, inner) { + this.lineStart += n + try { return inner() } + finally { this.lineStart -= n } +}; +StringStream.prototype.lookAhead = function (n) { + var oracle = this.lineOracle + return oracle && oracle.lookAhead(n) +}; + +var SavedContext = function(state, lookAhead) { + this.state = state + this.lookAhead = lookAhead +}; + +var Context = function(doc, state, line, lookAhead) { + this.state = state + this.doc = doc + this.line = line + this.maxLookAhead = lookAhead || 0 +}; + +Context.prototype.lookAhead = function (n) { + var line = this.doc.getLine(this.line + n) + if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n } + return line +}; + +Context.prototype.nextLine = function () { + this.line++ + if (this.maxLookAhead > 0) { this.maxLookAhead-- } +}; + +Context.fromSaved = function (doc, saved, line) { + if (saved instanceof SavedContext) + { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) } + else + { return new Context(doc, copyState(doc.mode, saved), line) } +}; + +Context.prototype.save = function (copy) { + var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state + return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state +}; + + +// Compute a style array (an array starting with a mode generation +// -- for invalidation -- followed by pairs of end positions and +// style strings), which is used to highlight the tokens on the +// line. +function highlightLine(cm, line, context, forceToEnd) { + // A styles array always starts with a number identifying the + // mode/overlays that it is based on (for easy invalidation). + var st = [cm.state.modeGen], lineClasses = {} + // Compute the base array of styles + runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); }, + lineClasses, forceToEnd) + var state = context.state + + // Run overlays, adjust style array. + var loop = function ( o ) { + var overlay = cm.state.overlays[o], i = 1, at = 0 + context.state = true + runMode(cm, line.text, overlay.mode, context, function (end, style) { + var start = i + // Ensure there's a token end at the current position, and that i points at it + while (at < end) { + var i_end = st[i] + if (i_end > end) + { st.splice(i, 1, end, st[i+1], i_end) } + i += 2 + at = Math.min(end, i_end) + } + if (!style) { return } + if (overlay.opaque) { + st.splice(start, i - start, end, "overlay " + style) + i = start + 2 + } else { + for (; start < i; start += 2) { + var cur = st[start+1] + st[start+1] = (cur ? cur + " " : "") + "overlay " + style + } + } + }, lineClasses) + }; + + for (var o = 0; o < cm.state.overlays.length; ++o) loop( o ); + context.state = state + + return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null} +} + +function getLineStyles(cm, line, updateFrontier) { + if (!line.styles || line.styles[0] != cm.state.modeGen) { + var context = getContextBefore(cm, lineNo(line)) + var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state) + var result = highlightLine(cm, line, context) + if (resetState) { context.state = resetState } + line.stateAfter = context.save(!resetState) + line.styles = result.styles + if (result.classes) { line.styleClasses = result.classes } + else if (line.styleClasses) { line.styleClasses = null } + if (updateFrontier === cm.doc.highlightFrontier) + { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier) } + } + return line.styles +} + +function getContextBefore(cm, n, precise) { + var doc = cm.doc, display = cm.display + if (!doc.mode.startState) { return new Context(doc, true, n) } + var start = findStartLine(cm, n, precise) + var saved = start > doc.first && getLine(doc, start - 1).stateAfter + var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start) + + doc.iter(start, n, function (line) { + processLine(cm, line.text, context) + var pos = context.line + line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null + context.nextLine() + }) + if (precise) { doc.modeFrontier = context.line } + return context +} + +// Lightweight form of highlight -- proceed over this line and +// update state, but don't save a style array. Used for lines that +// aren't currently visible. +function processLine(cm, text, context, startAt) { + var mode = cm.doc.mode + var stream = new StringStream(text, cm.options.tabSize, context) + stream.start = stream.pos = startAt || 0 + if (text == "") { callBlankLine(mode, context.state) } + while (!stream.eol()) { + readToken(mode, stream, context.state) + stream.start = stream.pos + } +} + +function callBlankLine(mode, state) { + if (mode.blankLine) { return mode.blankLine(state) } + if (!mode.innerMode) { return } + var inner = innerMode(mode, state) + if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) } +} + +function readToken(mode, stream, state, inner) { + for (var i = 0; i < 10; i++) { + if (inner) { inner[0] = innerMode(mode, state).mode } + var style = mode.token(stream, state) + if (stream.pos > stream.start) { return style } + } + throw new Error("Mode " + mode.name + " failed to advance stream.") +} + +var Token = function(stream, type, state) { + this.start = stream.start; this.end = stream.pos + this.string = stream.current() + this.type = type || null + this.state = state +}; + +// Utility for getTokenAt and getLineTokens +function takeToken(cm, pos, precise, asArray) { + var doc = cm.doc, mode = doc.mode, style + pos = clipPos(doc, pos) + var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise) + var stream = new StringStream(line.text, cm.options.tabSize, context), tokens + if (asArray) { tokens = [] } + while ((asArray || stream.pos < pos.ch) && !stream.eol()) { + stream.start = stream.pos + style = readToken(mode, stream, context.state) + if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))) } + } + return asArray ? tokens : new Token(stream, style, context.state) +} + +function extractLineClasses(type, output) { + if (type) { for (;;) { + var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/) + if (!lineClass) { break } + type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length) + var prop = lineClass[1] ? "bgClass" : "textClass" + if (output[prop] == null) + { output[prop] = lineClass[2] } + else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) + { output[prop] += " " + lineClass[2] } + } } + return type +} + +// Run the given mode's parser over a line, calling f for each token. +function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) { + var flattenSpans = mode.flattenSpans + if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans } + var curStart = 0, curStyle = null + var stream = new StringStream(text, cm.options.tabSize, context), style + var inner = cm.options.addModeClass && [null] + if (text == "") { extractLineClasses(callBlankLine(mode, context.state), lineClasses) } + while (!stream.eol()) { + if (stream.pos > cm.options.maxHighlightLength) { + flattenSpans = false + if (forceToEnd) { processLine(cm, text, context, stream.pos) } + stream.pos = text.length + style = null + } else { + style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses) + } + if (inner) { + var mName = inner[0].name + if (mName) { style = "m-" + (style ? mName + " " + style : mName) } + } + if (!flattenSpans || curStyle != style) { + while (curStart < stream.start) { + curStart = Math.min(stream.start, curStart + 5000) + f(curStart, curStyle) + } + curStyle = style + } + stream.start = stream.pos + } + while (curStart < stream.pos) { + // Webkit seems to refuse to render text nodes longer than 57444 + // characters, and returns inaccurate measurements in nodes + // starting around 5000 chars. + var pos = Math.min(stream.pos, curStart + 5000) + f(pos, curStyle) + curStart = pos + } +} + +// Finds the line to start with when starting a parse. Tries to +// find a line with a stateAfter, so that it can start with a +// valid state. If that fails, it returns the line with the +// smallest indentation, which tends to need the least context to +// parse correctly. +function findStartLine(cm, n, precise) { + var minindent, minline, doc = cm.doc + var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100) + for (var search = n; search > lim; --search) { + if (search <= doc.first) { return doc.first } + var line = getLine(doc, search - 1), after = line.stateAfter + if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) + { return search } + var indented = countColumn(line.text, null, cm.options.tabSize) + if (minline == null || minindent > indented) { + minline = search - 1 + minindent = indented + } + } + return minline +} + +function retreatFrontier(doc, n) { + doc.modeFrontier = Math.min(doc.modeFrontier, n) + if (doc.highlightFrontier < n - 10) { return } + var start = doc.first + for (var line = n - 1; line > start; line--) { + var saved = getLine(doc, line).stateAfter + // change is on 3 + // state on line 1 looked ahead 2 -- so saw 3 + // test 1 + 2 < 3 should cover this + if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) { + start = line + 1 + break + } + } + doc.highlightFrontier = Math.min(doc.highlightFrontier, start) +} + +// LINE DATA STRUCTURE + +// Line objects. These hold state related to a line, including +// highlighting info (the styles array). +var Line = function(text, markedSpans, estimateHeight) { + this.text = text + attachMarkedSpans(this, markedSpans) + this.height = estimateHeight ? estimateHeight(this) : 1 +}; + +Line.prototype.lineNo = function () { return lineNo(this) }; +eventMixin(Line) + +// Change the content (text, markers) of a line. Automatically +// invalidates cached information and tries to re-estimate the +// line's height. +function updateLine(line, text, markedSpans, estimateHeight) { + line.text = text + if (line.stateAfter) { line.stateAfter = null } + if (line.styles) { line.styles = null } + if (line.order != null) { line.order = null } + detachMarkedSpans(line) + attachMarkedSpans(line, markedSpans) + var estHeight = estimateHeight ? estimateHeight(line) : 1 + if (estHeight != line.height) { updateLineHeight(line, estHeight) } +} + +// Detach a line from the document tree and its markers. +function cleanUpLine(line) { + line.parent = null + detachMarkedSpans(line) +} + +// Convert a style as returned by a mode (either null, or a string +// containing one or more styles) to a CSS style. This is cached, +// and also looks for line-wide styles. +var styleToClassCache = {}; +var styleToClassCacheWithMode = {}; +function interpretTokenStyle(style, options) { + if (!style || /^\s*$/.test(style)) { return null } + var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache + return cache[style] || + (cache[style] = style.replace(/\S+/g, "cm-$&")) +} + +// Render the DOM representation of the text of a line. Also builds +// up a 'line map', which points at the DOM nodes that represent +// specific stretches of text, and is used by the measuring code. +// The returned object contains the DOM node, this map, and +// information about line-wide styles that were set by the mode. +function buildLineContent(cm, lineView) { + // The padding-right forces the element to have a 'border', which + // is needed on Webkit to be able to get line-level bounding + // rectangles for it (in measureChar). + var content = eltP("span", null, null, webkit ? "padding-right: .1px" : null) + var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content, + col: 0, pos: 0, cm: cm, + trailingSpace: false, + splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")} + lineView.measure = {} + + // Iterate over the logical lines that make up this visual line. + for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { + var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0) + builder.pos = 0 + builder.addToken = buildToken + // Optionally wire in some hacks into the token-rendering + // algorithm, to deal with browser quirks. + if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) + { builder.addToken = buildTokenBadBidi(builder.addToken, order) } + builder.map = [] + var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line) + insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)) + if (line.styleClasses) { + if (line.styleClasses.bgClass) + { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || "") } + if (line.styleClasses.textClass) + { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || "") } + } + + // Ensure at least a single node is present, for measuring. + if (builder.map.length == 0) + { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))) } + + // Store the map and a cache object for the current logical line + if (i == 0) { + lineView.measure.map = builder.map + lineView.measure.cache = {} + } else { + ;(lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map) + ;(lineView.measure.caches || (lineView.measure.caches = [])).push({}) + } + } + + // See issue #2901 + if (webkit) { + var last = builder.content.lastChild + if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) + { builder.content.className = "cm-tab-wrap-hack" } + } + + signal(cm, "renderLine", cm, lineView.line, builder.pre) + if (builder.pre.className) + { builder.textClass = joinClasses(builder.pre.className, builder.textClass || "") } + + return builder +} + +function defaultSpecialCharPlaceholder(ch) { + var token = elt("span", "\u2022", "cm-invalidchar") + token.title = "\\u" + ch.charCodeAt(0).toString(16) + token.setAttribute("aria-label", token.title) + return token +} + +// Build up the DOM representation for a single token, and add it to +// the line map. Takes care to render special characters separately. +function buildToken(builder, text, style, startStyle, endStyle, title, css) { + if (!text) { return } + var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text + var special = builder.cm.state.specialChars, mustWrap = false + var content + if (!special.test(text)) { + builder.col += text.length + content = document.createTextNode(displayText) + builder.map.push(builder.pos, builder.pos + text.length, content) + if (ie && ie_version < 9) { mustWrap = true } + builder.pos += text.length + } else { + content = document.createDocumentFragment() + var pos = 0 + while (true) { + special.lastIndex = pos + var m = special.exec(text) + var skipped = m ? m.index - pos : text.length - pos + if (skipped) { + var txt = document.createTextNode(displayText.slice(pos, pos + skipped)) + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt])) } + else { content.appendChild(txt) } + builder.map.push(builder.pos, builder.pos + skipped, txt) + builder.col += skipped + builder.pos += skipped + } + if (!m) { break } + pos += skipped + 1 + var txt$1 = (void 0) + if (m[0] == "\t") { + var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize + txt$1 = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")) + txt$1.setAttribute("role", "presentation") + txt$1.setAttribute("cm-text", "\t") + builder.col += tabWidth + } else if (m[0] == "\r" || m[0] == "\n") { + txt$1 = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")) + txt$1.setAttribute("cm-text", m[0]) + builder.col += 1 + } else { + txt$1 = builder.cm.options.specialCharPlaceholder(m[0]) + txt$1.setAttribute("cm-text", m[0]) + if (ie && ie_version < 9) { content.appendChild(elt("span", [txt$1])) } + else { content.appendChild(txt$1) } + builder.col += 1 + } + builder.map.push(builder.pos, builder.pos + 1, txt$1) + builder.pos++ + } + } + builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32 + if (style || startStyle || endStyle || mustWrap || css) { + var fullStyle = style || "" + if (startStyle) { fullStyle += startStyle } + if (endStyle) { fullStyle += endStyle } + var token = elt("span", [content], fullStyle, css) + if (title) { token.title = title } + return builder.content.appendChild(token) + } + builder.content.appendChild(content) +} + +function splitSpaces(text, trailingBefore) { + if (text.length > 1 && !/ /.test(text)) { return text } + var spaceBefore = trailingBefore, result = "" + for (var i = 0; i < text.length; i++) { + var ch = text.charAt(i) + if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) + { ch = "\u00a0" } + result += ch + spaceBefore = ch == " " + } + return result +} + +// Work around nonsense dimensions being reported for stretches of +// right-to-left text. +function buildTokenBadBidi(inner, order) { + return function (builder, text, style, startStyle, endStyle, title, css) { + style = style ? style + " cm-force-border" : "cm-force-border" + var start = builder.pos, end = start + text.length + for (;;) { + // Find the part that overlaps with the start of this text + var part = (void 0) + for (var i = 0; i < order.length; i++) { + part = order[i] + if (part.to > start && part.from <= start) { break } + } + if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, title, css) } + inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css) + startStyle = null + text = text.slice(part.to - start) + start = part.to + } + } +} + +function buildCollapsedSpan(builder, size, marker, ignoreWidget) { + var widget = !ignoreWidget && marker.widgetNode + if (widget) { builder.map.push(builder.pos, builder.pos + size, widget) } + if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { + if (!widget) + { widget = builder.content.appendChild(document.createElement("span")) } + widget.setAttribute("cm-marker", marker.id) + } + if (widget) { + builder.cm.display.input.setUneditable(widget) + builder.content.appendChild(widget) + } + builder.pos += size + builder.trailingSpace = false +} + +// Outputs a number of spans to make up a line, taking highlighting +// and marked text into account. +function insertLineContent(line, builder, styles) { + var spans = line.markedSpans, allText = line.text, at = 0 + if (!spans) { + for (var i$1 = 1; i$1 < styles.length; i$1+=2) + { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)) } + return + } + + var len = allText.length, pos = 0, i = 1, text = "", style, css + var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed + for (;;) { + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = title = css = "" + collapsed = null; nextChange = Infinity + var foundBookmarks = [], endStyles = (void 0) + for (var j = 0; j < spans.length; ++j) { + var sp = spans[j], m = sp.marker + if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { + foundBookmarks.push(m) + } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { + if (sp.to != null && sp.to != pos && nextChange > sp.to) { + nextChange = sp.to + spanEndStyle = "" + } + if (m.className) { spanStyle += " " + m.className } + if (m.css) { css = (css ? css + ";" : "") + m.css } + if (m.startStyle && sp.from == pos) { spanStartStyle += " " + m.startStyle } + if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to) } + if (m.title && !title) { title = m.title } + if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) + { collapsed = sp } + } else if (sp.from > pos && nextChange > sp.from) { + nextChange = sp.from + } + } + if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2) + { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += " " + endStyles[j$1] } } } + + if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2) + { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]) } } + if (collapsed && (collapsed.from || 0) == pos) { + buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, + collapsed.marker, collapsed.from == null) + if (collapsed.to == null) { return } + if (collapsed.to == pos) { collapsed = false } + } + } + if (pos >= len) { break } + + var upto = Math.min(len, nextChange) + while (true) { + if (text) { + var end = pos + text.length + if (!collapsed) { + var tokenText = end > upto ? text.slice(0, upto - pos) : text + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css) + } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break} + pos = end + spanStartStyle = "" + } + text = allText.slice(at, at = styles[i++]) + style = interpretTokenStyle(styles[i++], builder.cm.options) + } + } +} + + +// These objects are used to represent the visible (currently drawn) +// part of the document. A LineView may correspond to multiple +// logical lines, if those are connected by collapsed ranges. +function LineView(doc, line, lineN) { + // The starting line + this.line = line + // Continuing lines, if any + this.rest = visualLineContinued(line) + // Number of logical lines in this visual line + this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1 + this.node = this.text = null + this.hidden = lineIsHidden(doc, line) +} + +// Create a range of LineView objects for the given lines. +function buildViewArray(cm, from, to) { + var array = [], nextPos + for (var pos = from; pos < to; pos = nextPos) { + var view = new LineView(cm.doc, getLine(cm.doc, pos), pos) + nextPos = pos + view.size + array.push(view) + } + return array +} + +var operationGroup = null + +function pushOperation(op) { + if (operationGroup) { + operationGroup.ops.push(op) + } else { + op.ownsGroup = operationGroup = { + ops: [op], + delayedCallbacks: [] + } + } +} + +function fireCallbacksForOps(group) { + // Calls delayed callbacks and cursorActivity handlers until no + // new ones appear + var callbacks = group.delayedCallbacks, i = 0 + do { + for (; i < callbacks.length; i++) + { callbacks[i].call(null) } + for (var j = 0; j < group.ops.length; j++) { + var op = group.ops[j] + if (op.cursorActivityHandlers) + { while (op.cursorActivityCalled < op.cursorActivityHandlers.length) + { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm) } } + } + } while (i < callbacks.length) +} + +function finishOperation(op, endCb) { + var group = op.ownsGroup + if (!group) { return } + + try { fireCallbacksForOps(group) } + finally { + operationGroup = null + endCb(group) + } +} + +var orphanDelayedCallbacks = null + +// Often, we want to signal events at a point where we are in the +// middle of some work, but don't want the handler to start calling +// other methods on the editor, which might be in an inconsistent +// state or simply not expect any other events to happen. +// signalLater looks whether there are any handlers, and schedules +// them to be executed when the last operation ends, or, if no +// operation is active, when a timeout fires. +function signalLater(emitter, type /*, values...*/) { + var arr = getHandlers(emitter, type) + if (!arr.length) { return } + var args = Array.prototype.slice.call(arguments, 2), list + if (operationGroup) { + list = operationGroup.delayedCallbacks + } else if (orphanDelayedCallbacks) { + list = orphanDelayedCallbacks + } else { + list = orphanDelayedCallbacks = [] + setTimeout(fireOrphanDelayed, 0) + } + var loop = function ( i ) { + list.push(function () { return arr[i].apply(null, args); }) + }; + + for (var i = 0; i < arr.length; ++i) + loop( i ); +} + +function fireOrphanDelayed() { + var delayed = orphanDelayedCallbacks + orphanDelayedCallbacks = null + for (var i = 0; i < delayed.length; ++i) { delayed[i]() } +} + +// When an aspect of a line changes, a string is added to +// lineView.changes. This updates the relevant part of the line's +// DOM structure. +function updateLineForChanges(cm, lineView, lineN, dims) { + for (var j = 0; j < lineView.changes.length; j++) { + var type = lineView.changes[j] + if (type == "text") { updateLineText(cm, lineView) } + else if (type == "gutter") { updateLineGutter(cm, lineView, lineN, dims) } + else if (type == "class") { updateLineClasses(cm, lineView) } + else if (type == "widget") { updateLineWidgets(cm, lineView, dims) } + } + lineView.changes = null +} + +// Lines with gutter elements, widgets or a background class need to +// be wrapped, and have the extra elements added to the wrapper div +function ensureLineWrapped(lineView) { + if (lineView.node == lineView.text) { + lineView.node = elt("div", null, null, "position: relative") + if (lineView.text.parentNode) + { lineView.text.parentNode.replaceChild(lineView.node, lineView.text) } + lineView.node.appendChild(lineView.text) + if (ie && ie_version < 8) { lineView.node.style.zIndex = 2 } + } + return lineView.node +} + +function updateLineBackground(cm, lineView) { + var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass + if (cls) { cls += " CodeMirror-linebackground" } + if (lineView.background) { + if (cls) { lineView.background.className = cls } + else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null } + } else if (cls) { + var wrap = ensureLineWrapped(lineView) + lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild) + cm.display.input.setUneditable(lineView.background) + } +} + +// Wrapper around buildLineContent which will reuse the structure +// in display.externalMeasured when possible. +function getLineContent(cm, lineView) { + var ext = cm.display.externalMeasured + if (ext && ext.line == lineView.line) { + cm.display.externalMeasured = null + lineView.measure = ext.measure + return ext.built + } + return buildLineContent(cm, lineView) +} + +// Redraw the line's text. Interacts with the background and text +// classes because the mode may output tokens that influence these +// classes. +function updateLineText(cm, lineView) { + var cls = lineView.text.className + var built = getLineContent(cm, lineView) + if (lineView.text == lineView.node) { lineView.node = built.pre } + lineView.text.parentNode.replaceChild(built.pre, lineView.text) + lineView.text = built.pre + if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { + lineView.bgClass = built.bgClass + lineView.textClass = built.textClass + updateLineClasses(cm, lineView) + } else if (cls) { + lineView.text.className = cls + } +} + +function updateLineClasses(cm, lineView) { + updateLineBackground(cm, lineView) + if (lineView.line.wrapClass) + { ensureLineWrapped(lineView).className = lineView.line.wrapClass } + else if (lineView.node != lineView.text) + { lineView.node.className = "" } + var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass + lineView.text.className = textClass || "" +} + +function updateLineGutter(cm, lineView, lineN, dims) { + if (lineView.gutter) { + lineView.node.removeChild(lineView.gutter) + lineView.gutter = null + } + if (lineView.gutterBackground) { + lineView.node.removeChild(lineView.gutterBackground) + lineView.gutterBackground = null + } + if (lineView.line.gutterClass) { + var wrap = ensureLineWrapped(lineView) + lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, + ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px; width: " + (dims.gutterTotalWidth) + "px")) + cm.display.input.setUneditable(lineView.gutterBackground) + wrap.insertBefore(lineView.gutterBackground, lineView.text) + } + var markers = lineView.line.gutterMarkers + if (cm.options.lineNumbers || markers) { + var wrap$1 = ensureLineWrapped(lineView) + var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", ("left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px")) + cm.display.input.setUneditable(gutterWrap) + wrap$1.insertBefore(gutterWrap, lineView.text) + if (lineView.line.gutterClass) + { gutterWrap.className += " " + lineView.line.gutterClass } + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + { lineView.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineN), + "CodeMirror-linenumber CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft["CodeMirror-linenumbers"]) + "px; width: " + (cm.display.lineNumInnerWidth) + "px"))) } + if (markers) { for (var k = 0; k < cm.options.gutters.length; ++k) { + var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id] + if (found) + { gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", + ("left: " + (dims.gutterLeft[id]) + "px; width: " + (dims.gutterWidth[id]) + "px"))) } + } } + } +} + +function updateLineWidgets(cm, lineView, dims) { + if (lineView.alignable) { lineView.alignable = null } + for (var node = lineView.node.firstChild, next = (void 0); node; node = next) { + next = node.nextSibling + if (node.className == "CodeMirror-linewidget") + { lineView.node.removeChild(node) } + } + insertLineWidgets(cm, lineView, dims) +} + +// Build a line's DOM representation from scratch +function buildLineElement(cm, lineView, lineN, dims) { + var built = getLineContent(cm, lineView) + lineView.text = lineView.node = built.pre + if (built.bgClass) { lineView.bgClass = built.bgClass } + if (built.textClass) { lineView.textClass = built.textClass } + + updateLineClasses(cm, lineView) + updateLineGutter(cm, lineView, lineN, dims) + insertLineWidgets(cm, lineView, dims) + return lineView.node +} + +// A lineView may contain multiple logical lines (when merged by +// collapsed spans). The widgets for all of them need to be drawn. +function insertLineWidgets(cm, lineView, dims) { + insertLineWidgetsFor(cm, lineView.line, lineView, dims, true) + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false) } } +} + +function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { + if (!line.widgets) { return } + var wrap = ensureLineWrapped(lineView) + for (var i = 0, ws = line.widgets; i < ws.length; ++i) { + var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget") + if (!widget.handleMouseEvents) { node.setAttribute("cm-ignore-events", "true") } + positionLineWidget(widget, node, lineView, dims) + cm.display.input.setUneditable(node) + if (allowAbove && widget.above) + { wrap.insertBefore(node, lineView.gutter || lineView.text) } + else + { wrap.appendChild(node) } + signalLater(widget, "redraw") + } +} + +function positionLineWidget(widget, node, lineView, dims) { + if (widget.noHScroll) { + ;(lineView.alignable || (lineView.alignable = [])).push(node) + var width = dims.wrapperWidth + node.style.left = dims.fixedPos + "px" + if (!widget.coverGutter) { + width -= dims.gutterTotalWidth + node.style.paddingLeft = dims.gutterTotalWidth + "px" + } + node.style.width = width + "px" + } + if (widget.coverGutter) { + node.style.zIndex = 5 + node.style.position = "relative" + if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + "px" } + } +} + +function widgetHeight(widget) { + if (widget.height != null) { return widget.height } + var cm = widget.doc.cm + if (!cm) { return 0 } + if (!contains(document.body, widget.node)) { + var parentStyle = "position: relative;" + if (widget.coverGutter) + { parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;" } + if (widget.noHScroll) + { parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;" } + removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)) + } + return widget.height = widget.node.parentNode.offsetHeight +} + +// Return true when the given mouse event happened in a widget +function eventInWidget(display, e) { + for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { + if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || + (n.parentNode == display.sizer && n != display.mover)) + { return true } + } +} + +// POSITION MEASUREMENT + +function paddingTop(display) {return display.lineSpace.offsetTop} +function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight} +function paddingH(display) { + if (display.cachedPaddingH) { return display.cachedPaddingH } + var e = removeChildrenAndAdd(display.measure, elt("pre", "x")) + var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle + var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)} + if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data } + return data +} + +function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth } +function displayWidth(cm) { + return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth +} +function displayHeight(cm) { + return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight +} + +// Ensure the lineView.wrapping.heights array is populated. This is +// an array of bottom offsets for the lines that make up a drawn +// line. When lineWrapping is on, there might be more than one +// height. +function ensureLineHeights(cm, lineView, rect) { + var wrapping = cm.options.lineWrapping + var curWidth = wrapping && displayWidth(cm) + if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { + var heights = lineView.measure.heights = [] + if (wrapping) { + lineView.measure.width = curWidth + var rects = lineView.text.firstChild.getClientRects() + for (var i = 0; i < rects.length - 1; i++) { + var cur = rects[i], next = rects[i + 1] + if (Math.abs(cur.bottom - next.bottom) > 2) + { heights.push((cur.bottom + next.top) / 2 - rect.top) } + } + } + heights.push(rect.bottom - rect.top) + } +} + +// Find a line map (mapping character offsets to text nodes) and a +// measurement cache for the given line number. (A line view might +// contain multiple lines when collapsed ranges are present.) +function mapFromLineView(lineView, line, lineN) { + if (lineView.line == line) + { return {map: lineView.measure.map, cache: lineView.measure.cache} } + for (var i = 0; i < lineView.rest.length; i++) + { if (lineView.rest[i] == line) + { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } } + for (var i$1 = 0; i$1 < lineView.rest.length; i$1++) + { if (lineNo(lineView.rest[i$1]) > lineN) + { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } } +} + +// Render a line into the hidden node display.externalMeasured. Used +// when measurement is needed for a line that's not in the viewport. +function updateExternalMeasurement(cm, line) { + line = visualLine(line) + var lineN = lineNo(line) + var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN) + view.lineN = lineN + var built = view.built = buildLineContent(cm, view) + view.text = built.pre + removeChildrenAndAdd(cm.display.lineMeasure, built.pre) + return view +} + +// Get a {top, bottom, left, right} box (in line-local coordinates) +// for a given character. +function measureChar(cm, line, ch, bias) { + return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias) +} + +// Find a line view that corresponds to the given line number. +function findViewForLine(cm, lineN) { + if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) + { return cm.display.view[findViewIndex(cm, lineN)] } + var ext = cm.display.externalMeasured + if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) + { return ext } +} + +// Measurement can be split in two steps, the set-up work that +// applies to the whole line, and the measurement of the actual +// character. Functions like coordsChar, that need to do a lot of +// measurements in a row, can thus ensure that the set-up work is +// only done once. +function prepareMeasureForLine(cm, line) { + var lineN = lineNo(line) + var view = findViewForLine(cm, lineN) + if (view && !view.text) { + view = null + } else if (view && view.changes) { + updateLineForChanges(cm, view, lineN, getDimensions(cm)) + cm.curOp.forceUpdate = true + } + if (!view) + { view = updateExternalMeasurement(cm, line) } + + var info = mapFromLineView(view, line, lineN) + return { + line: line, view: view, rect: null, + map: info.map, cache: info.cache, before: info.before, + hasHeights: false + } +} + +// Given a prepared measurement object, measures the position of an +// actual character (or fetches it from the cache). +function measureCharPrepared(cm, prepared, ch, bias, varHeight) { + if (prepared.before) { ch = -1 } + var key = ch + (bias || ""), found + if (prepared.cache.hasOwnProperty(key)) { + found = prepared.cache[key] + } else { + if (!prepared.rect) + { prepared.rect = prepared.view.text.getBoundingClientRect() } + if (!prepared.hasHeights) { + ensureLineHeights(cm, prepared.view, prepared.rect) + prepared.hasHeights = true + } + found = measureCharInner(cm, prepared, ch, bias) + if (!found.bogus) { prepared.cache[key] = found } + } + return {left: found.left, right: found.right, + top: varHeight ? found.rtop : found.top, + bottom: varHeight ? found.rbottom : found.bottom} +} + +var nullRect = {left: 0, right: 0, top: 0, bottom: 0} + +function nodeAndOffsetInLineMap(map, ch, bias) { + var node, start, end, collapse, mStart, mEnd + // First, search the line map for the text node corresponding to, + // or closest to, the target character. + for (var i = 0; i < map.length; i += 3) { + mStart = map[i] + mEnd = map[i + 1] + if (ch < mStart) { + start = 0; end = 1 + collapse = "left" + } else if (ch < mEnd) { + start = ch - mStart + end = start + 1 + } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { + end = mEnd - mStart + start = end - 1 + if (ch >= mEnd) { collapse = "right" } + } + if (start != null) { + node = map[i + 2] + if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) + { collapse = bias } + if (bias == "left" && start == 0) + { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { + node = map[(i -= 3) + 2] + collapse = "left" + } } + if (bias == "right" && start == mEnd - mStart) + { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { + node = map[(i += 3) + 2] + collapse = "right" + } } + break + } + } + return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd} +} + +function getUsefulRect(rects, bias) { + var rect = nullRect + if (bias == "left") { for (var i = 0; i < rects.length; i++) { + if ((rect = rects[i]).left != rect.right) { break } + } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) { + if ((rect = rects[i$1]).left != rect.right) { break } + } } + return rect +} + +function measureCharInner(cm, prepared, ch, bias) { + var place = nodeAndOffsetInLineMap(prepared.map, ch, bias) + var node = place.node, start = place.start, end = place.end, collapse = place.collapse + + var rect + if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. + for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned + while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start } + while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end } + if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) + { rect = node.parentNode.getBoundingClientRect() } + else + { rect = getUsefulRect(range(node, start, end).getClientRects(), bias) } + if (rect.left || rect.right || start == 0) { break } + end = start + start = start - 1 + collapse = "right" + } + if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect) } + } else { // If it is a widget, simply get the box for the whole widget. + if (start > 0) { collapse = bias = "right" } + var rects + if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) + { rect = rects[bias == "right" ? rects.length - 1 : 0] } + else + { rect = node.getBoundingClientRect() } + } + if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { + var rSpan = node.parentNode.getClientRects()[0] + if (rSpan) + { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom} } + else + { rect = nullRect } + } + + var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top + var mid = (rtop + rbot) / 2 + var heights = prepared.view.measure.heights + var i = 0 + for (; i < heights.length - 1; i++) + { if (mid < heights[i]) { break } } + var top = i ? heights[i - 1] : 0, bot = heights[i] + var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, + right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, + top: top, bottom: bot} + if (!rect.left && !rect.right) { result.bogus = true } + if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot } + + return result +} + +// Work around problem with bounding client rects on ranges being +// returned incorrectly when zoomed on IE10 and below. +function maybeUpdateRectForZooming(measure, rect) { + if (!window.screen || screen.logicalXDPI == null || + screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) + { return rect } + var scaleX = screen.logicalXDPI / screen.deviceXDPI + var scaleY = screen.logicalYDPI / screen.deviceYDPI + return {left: rect.left * scaleX, right: rect.right * scaleX, + top: rect.top * scaleY, bottom: rect.bottom * scaleY} +} + +function clearLineMeasurementCacheFor(lineView) { + if (lineView.measure) { + lineView.measure.cache = {} + lineView.measure.heights = null + if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++) + { lineView.measure.caches[i] = {} } } + } +} + +function clearLineMeasurementCache(cm) { + cm.display.externalMeasure = null + removeChildren(cm.display.lineMeasure) + for (var i = 0; i < cm.display.view.length; i++) + { clearLineMeasurementCacheFor(cm.display.view[i]) } +} + +function clearCaches(cm) { + clearLineMeasurementCache(cm) + cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null + if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true } + cm.display.lineNumChars = null +} + +function pageScrollX() { + // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206 + // which causes page_Offset and bounding client rects to use + // different reference viewports and invalidate our calculations. + if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) } + return window.pageXOffset || (document.documentElement || document.body).scrollLeft +} +function pageScrollY() { + if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) } + return window.pageYOffset || (document.documentElement || document.body).scrollTop +} + +function widgetTopHeight(lineObj) { + var height = 0 + if (lineObj.widgets) { for (var i = 0; i < lineObj.widgets.length; ++i) { if (lineObj.widgets[i].above) + { height += widgetHeight(lineObj.widgets[i]) } } } + return height +} + +// Converts a {top, bottom, left, right} box from line-local +// coordinates into another coordinate system. Context may be one of +// "line", "div" (display.lineDiv), "local"./null (editor), "window", +// or "page". +function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) { + if (!includeWidgets) { + var height = widgetTopHeight(lineObj) + rect.top += height; rect.bottom += height + } + if (context == "line") { return rect } + if (!context) { context = "local" } + var yOff = heightAtLine(lineObj) + if (context == "local") { yOff += paddingTop(cm.display) } + else { yOff -= cm.display.viewOffset } + if (context == "page" || context == "window") { + var lOff = cm.display.lineSpace.getBoundingClientRect() + yOff += lOff.top + (context == "window" ? 0 : pageScrollY()) + var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()) + rect.left += xOff; rect.right += xOff + } + rect.top += yOff; rect.bottom += yOff + return rect +} + +// Coverts a box from "div" coords to another coordinate system. +// Context may be "window", "page", "div", or "local"./null. +function fromCoordSystem(cm, coords, context) { + if (context == "div") { return coords } + var left = coords.left, top = coords.top + // First move into "page" coordinate system + if (context == "page") { + left -= pageScrollX() + top -= pageScrollY() + } else if (context == "local" || !context) { + var localBox = cm.display.sizer.getBoundingClientRect() + left += localBox.left + top += localBox.top + } + + var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect() + return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top} +} + +function charCoords(cm, pos, context, lineObj, bias) { + if (!lineObj) { lineObj = getLine(cm.doc, pos.line) } + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context) +} + +// Returns a box for a given cursor position, which may have an +// 'other' property containing the position of the secondary cursor +// on a bidi boundary. +// A cursor Pos(line, char, "before") is on the same visual line as `char - 1` +// and after `char - 1` in writing order of `char - 1` +// A cursor Pos(line, char, "after") is on the same visual line as `char` +// and before `char` in writing order of `char` +// Examples (upper-case letters are RTL, lower-case are LTR): +// Pos(0, 1, ...) +// before after +// ab a|b a|b +// aB a|B aB| +// Ab |Ab A|b +// AB B|A B|A +// Every position after the last character on a line is considered to stick +// to the last character on the line. +function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { + lineObj = lineObj || getLine(cm.doc, pos.line) + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj) } + function get(ch, right) { + var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight) + if (right) { m.left = m.right; } else { m.right = m.left } + return intoCoordSystem(cm, lineObj, m, context) + } + var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky + if (ch >= lineObj.text.length) { + ch = lineObj.text.length + sticky = "before" + } else if (ch <= 0) { + ch = 0 + sticky = "after" + } + if (!order) { return get(sticky == "before" ? ch - 1 : ch, sticky == "before") } + + function getBidi(ch, partPos, invert) { + var part = order[partPos], right = part.level == 1 + return get(invert ? ch - 1 : ch, right != invert) + } + var partPos = getBidiPartAt(order, ch, sticky) + var other = bidiOther + var val = getBidi(ch, partPos, sticky == "before") + if (other != null) { val.other = getBidi(ch, other, sticky != "before") } + return val +} + +// Used to cheaply estimate the coordinates for a position. Used for +// intermediate scroll updates. +function estimateCoords(cm, pos) { + var left = 0 + pos = clipPos(cm.doc, pos) + if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch } + var lineObj = getLine(cm.doc, pos.line) + var top = heightAtLine(lineObj) + paddingTop(cm.display) + return {left: left, right: left, top: top, bottom: top + lineObj.height} +} + +// Positions returned by coordsChar contain some extra information. +// xRel is the relative x position of the input coordinates compared +// to the found position (so xRel > 0 means the coordinates are to +// the right of the character position, for example). When outside +// is true, that means the coordinates lie outside the line's +// vertical range. +function PosWithInfo(line, ch, sticky, outside, xRel) { + var pos = Pos(line, ch, sticky) + pos.xRel = xRel + if (outside) { pos.outside = true } + return pos +} + +// Compute the character position closest to the given coordinates. +// Input must be lineSpace-local ("div" coordinate system). +function coordsChar(cm, x, y) { + var doc = cm.doc + y += cm.display.viewOffset + if (y < 0) { return PosWithInfo(doc.first, 0, null, true, -1) } + var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1 + if (lineN > last) + { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) } + if (x < 0) { x = 0 } + + var lineObj = getLine(doc, lineN) + for (;;) { + var found = coordsCharInner(cm, lineObj, lineN, x, y) + var merged = collapsedSpanAtEnd(lineObj) + var mergedPos = merged && merged.find(0, true) + if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) + { lineN = lineNo(lineObj = mergedPos.to.line) } + else + { return found } + } +} + +function wrappedLineExtent(cm, lineObj, preparedMeasure, y) { + y -= widgetTopHeight(lineObj) + var end = lineObj.text.length + var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0) + end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end) + return {begin: begin, end: end} +} + +function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) { + if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj) } + var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), "line").top + return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop) +} + +// Returns true if the given side of a box is after the given +// coordinates, in top-to-bottom, left-to-right order. +function boxIsAfter(box, x, y, left) { + return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x +} + +function coordsCharInner(cm, lineObj, lineNo, x, y) { + // Move y into line-local coordinate space + y -= heightAtLine(lineObj) + var preparedMeasure = prepareMeasureForLine(cm, lineObj) + // When directly calling `measureCharPrepared`, we have to adjust + // for the widgets at this line. + var widgetHeight = widgetTopHeight(lineObj) + var begin = 0, end = lineObj.text.length, ltr = true + + var order = getOrder(lineObj, cm.doc.direction) + // If the line isn't plain left-to-right text, first figure out + // which bidi section the coordinates fall into. + if (order) { + var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart) + (cm, lineObj, lineNo, preparedMeasure, order, x, y) + ltr = part.level != 1 + // The awkward -1 offsets are needed because findFirst (called + // on these below) will treat its first bound as inclusive, + // second as exclusive, but we want to actually address the + // characters in the part's range + begin = ltr ? part.from : part.to - 1 + end = ltr ? part.to : part.from - 1 + } + + // A binary search to find the first character whose bounding box + // starts after the coordinates. If we run across any whose box wrap + // the coordinates, store that. + var chAround = null, boxAround = null + var ch = findFirst(function (ch) { + var box = measureCharPrepared(cm, preparedMeasure, ch) + box.top += widgetHeight; box.bottom += widgetHeight + if (!boxIsAfter(box, x, y, false)) { return false } + if (box.top <= y && box.left <= x) { + chAround = ch + boxAround = box + } + return true + }, begin, end) + + var baseX, sticky, outside = false + // If a box around the coordinates was found, use that + if (boxAround) { + // Distinguish coordinates nearer to the left or right side of the box + var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr + ch = chAround + (atStart ? 0 : 1) + sticky = atStart ? "after" : "before" + baseX = atLeft ? boxAround.left : boxAround.right + } else { + // (Adjust for extended bound, if necessary.) + if (!ltr && (ch == end || ch == begin)) { ch++ } + // To determine which side to associate with, get the box to the + // left of the character and compare it's vertical position to the + // coordinates + sticky = ch == 0 ? "after" : ch == lineObj.text.length ? "before" : + (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ? + "after" : "before" + // Now get accurate coordinates for this place, in order to get a + // base X position + var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), "line", lineObj, preparedMeasure) + baseX = coords.left + outside = y < coords.top || y >= coords.bottom + } + + ch = skipExtendingChars(lineObj.text, ch, 1) + return PosWithInfo(lineNo, ch, sticky, outside, x - baseX) +} + +function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) { + // Bidi parts are sorted left-to-right, and in a non-line-wrapping + // situation, we can take this ordering to correspond to the visual + // ordering. This finds the first part whose end is after the given + // coordinates. + var index = findFirst(function (i) { + var part = order[i], ltr = part.level != 1 + return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? "before" : "after"), + "line", lineObj, preparedMeasure), x, y, true) + }, 0, order.length - 1) + var part = order[index] + // If this isn't the first part, the part's start is also after + // the coordinates, and the coordinates aren't on the same line as + // that start, move one part back. + if (index > 0) { + var ltr = part.level != 1 + var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? "after" : "before"), + "line", lineObj, preparedMeasure) + if (boxIsAfter(start, x, y, true) && start.top > y) + { part = order[index - 1] } + } + return part +} + +function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) { + // In a wrapped line, rtl text on wrapping boundaries can do things + // that don't correspond to the ordering in our `order` array at + // all, so a binary search doesn't work, and we want to return a + // part that only spans one line so that the binary search in + // coordsCharInner is safe. As such, we first find the extent of the + // wrapped line, and then do a flat search in which we discard any + // spans that aren't on the line. + var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y); + var begin = ref.begin; + var end = ref.end; + var part = null, closestDist = null + for (var i = 0; i < order.length; i++) { + var p = order[i] + if (p.from >= end || p.to <= begin) { continue } + var ltr = p.level != 1 + var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right + // Weigh against spans ending before this, so that they are only + // picked if nothing ends after + var dist = endX < x ? x - endX + 1e9 : endX - x + if (!part || closestDist > dist) { + part = p + closestDist = dist + } + } + if (!part) { part = order[order.length - 1] } + // Clip the part to the wrapped line. + if (part.from < begin) { part = {from: begin, to: part.to, level: part.level} } + if (part.to > end) { part = {from: part.from, to: end, level: part.level} } + return part +} + +var measureText +// Compute the default text height. +function textHeight(display) { + if (display.cachedTextHeight != null) { return display.cachedTextHeight } + if (measureText == null) { + measureText = elt("pre") + // Measure a bunch of lines, for browsers that compute + // fractional heights. + for (var i = 0; i < 49; ++i) { + measureText.appendChild(document.createTextNode("x")) + measureText.appendChild(elt("br")) + } + measureText.appendChild(document.createTextNode("x")) + } + removeChildrenAndAdd(display.measure, measureText) + var height = measureText.offsetHeight / 50 + if (height > 3) { display.cachedTextHeight = height } + removeChildren(display.measure) + return height || 1 +} + +// Compute the default character width. +function charWidth(display) { + if (display.cachedCharWidth != null) { return display.cachedCharWidth } + var anchor = elt("span", "xxxxxxxxxx") + var pre = elt("pre", [anchor]) + removeChildrenAndAdd(display.measure, pre) + var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10 + if (width > 2) { display.cachedCharWidth = width } + return width || 10 +} + +// Do a bulk-read of the DOM positions and sizes needed to draw the +// view, so that we don't interleave reading and writing to the DOM. +function getDimensions(cm) { + var d = cm.display, left = {}, width = {} + var gutterLeft = d.gutters.clientLeft + for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { + left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft + width[cm.options.gutters[i]] = n.clientWidth + } + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth} +} + +// Computes display.scroller.scrollLeft + display.gutters.offsetWidth, +// but using getBoundingClientRect to get a sub-pixel-accurate +// result. +function compensateForHScroll(display) { + return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left +} + +// Returns a function that estimates the height of a line, to use as +// first approximation until the line becomes visible (and is thus +// properly measurable). +function estimateHeight(cm) { + var th = textHeight(cm.display), wrapping = cm.options.lineWrapping + var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3) + return function (line) { + if (lineIsHidden(cm.doc, line)) { return 0 } + + var widgetsHeight = 0 + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) { + if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height } + } } + + if (wrapping) + { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th } + else + { return widgetsHeight + th } + } +} + +function estimateLineHeights(cm) { + var doc = cm.doc, est = estimateHeight(cm) + doc.iter(function (line) { + var estHeight = est(line) + if (estHeight != line.height) { updateLineHeight(line, estHeight) } + }) +} + +// Given a mouse event, find the corresponding position. If liberal +// is false, it checks whether a gutter or scrollbar was clicked, +// and returns null if it was. forRect is used by rectangular +// selections, and tries to estimate a character position even for +// coordinates beyond the right of the text. +function posFromMouse(cm, e, liberal, forRect) { + var display = cm.display + if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") { return null } + + var x, y, space = display.lineSpace.getBoundingClientRect() + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX - space.left; y = e.clientY - space.top } + catch (e) { return null } + var coords = coordsChar(cm, x, y), line + if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { + var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length + coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)) + } + return coords +} + +// Find the view element corresponding to a given line. Return null +// when the line isn't visible. +function findViewIndex(cm, n) { + if (n >= cm.display.viewTo) { return null } + n -= cm.display.viewFrom + if (n < 0) { return null } + var view = cm.display.view + for (var i = 0; i < view.length; i++) { + n -= view[i].size + if (n < 0) { return i } + } +} + +function updateSelection(cm) { + cm.display.input.showSelection(cm.display.input.prepareSelection()) +} + +function prepareSelection(cm, primary) { + if ( primary === void 0 ) primary = true; + + var doc = cm.doc, result = {} + var curFragment = result.cursors = document.createDocumentFragment() + var selFragment = result.selection = document.createDocumentFragment() + + for (var i = 0; i < doc.sel.ranges.length; i++) { + if (!primary && i == doc.sel.primIndex) { continue } + var range = doc.sel.ranges[i] + if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue } + var collapsed = range.empty() + if (collapsed || cm.options.showCursorWhenSelecting) + { drawSelectionCursor(cm, range.head, curFragment) } + if (!collapsed) + { drawSelectionRange(cm, range, selFragment) } + } + return result +} + +// Draws a cursor for the given range +function drawSelectionCursor(cm, head, output) { + var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine) + + var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")) + cursor.style.left = pos.left + "px" + cursor.style.top = pos.top + "px" + cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px" + + if (pos.other) { + // Secondary cursor, shown when on a 'jump' in bi-directional text + var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")) + otherCursor.style.display = "" + otherCursor.style.left = pos.other.left + "px" + otherCursor.style.top = pos.other.top + "px" + otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px" + } +} + +function cmpCoords(a, b) { return a.top - b.top || a.left - b.left } + +// Draws the given range as a highlighted selection +function drawSelectionRange(cm, range, output) { + var display = cm.display, doc = cm.doc + var fragment = document.createDocumentFragment() + var padding = paddingH(cm.display), leftSide = padding.left + var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right + + function add(left, top, width, bottom) { + if (top < 0) { top = 0 } + top = Math.round(top) + bottom = Math.round(bottom) + fragment.appendChild(elt("div", null, "CodeMirror-selected", ("position: absolute; left: " + left + "px;\n top: " + top + "px; width: " + (width == null ? rightSide - left : width) + "px;\n height: " + (bottom - top) + "px"))) + } + + function drawForLine(line, fromArg, toArg) { + var lineObj = getLine(doc, line) + var lineLen = lineObj.text.length + var start, end + function coords(ch, bias) { + return charCoords(cm, Pos(line, ch), "div", lineObj, bias) + } + + var order = getOrder(lineObj, doc.direction) + iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) { + var fromPos = coords(from, dir == "ltr" ? "left" : "right") + var toPos = coords(to - 1, dir == "ltr" ? "right" : "left") + if (dir == "ltr") { + var fromLeft = fromArg == null && from == 0 ? leftSide : fromPos.left + var toRight = toArg == null && to == lineLen ? rightSide : toPos.right + if (toPos.top - fromPos.top <= 3) { // Single line + add(fromLeft, toPos.top, toRight - fromLeft, toPos.bottom) + } else { // Multiple lines + add(fromLeft, fromPos.top, null, fromPos.bottom) + if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top) } + add(leftSide, toPos.top, toPos.right, toPos.bottom) + } + } else if (from < to) { // RTL + var fromRight = fromArg == null && from == 0 ? rightSide : fromPos.right + var toLeft = toArg == null && to == lineLen ? leftSide : toPos.left + if (toPos.top - fromPos.top <= 3) { // Single line + add(toLeft, toPos.top, fromRight - toLeft, toPos.bottom) + } else { // Multiple lines + var topLeft = leftSide + if (i) { + var topEnd = wrappedLineExtentChar(cm, lineObj, null, from).end + // The coordinates returned for an RTL wrapped space tend to + // be complete bogus, so try to skip that here. + topLeft = coords(topEnd - (/\s/.test(lineObj.text.charAt(topEnd - 1)) ? 2 : 1), "left").left + } + add(topLeft, fromPos.top, fromRight - topLeft, fromPos.bottom) + if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top) } + var botWidth = null + if (i < order.length - 1 || true) { + var botStart = wrappedLineExtentChar(cm, lineObj, null, to).begin + botWidth = coords(botStart, "right").right - toLeft + } + add(toLeft, toPos.top, botWidth, toPos.bottom) + } + } + + if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos } + if (cmpCoords(toPos, start) < 0) { start = toPos } + if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos } + if (cmpCoords(toPos, end) < 0) { end = toPos } + }) + return {start: start, end: end} + } + + var sFrom = range.from(), sTo = range.to() + if (sFrom.line == sTo.line) { + drawForLine(sFrom.line, sFrom.ch, sTo.ch) + } else { + var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line) + var singleVLine = visualLine(fromLine) == visualLine(toLine) + var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end + var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start + if (singleVLine) { + if (leftEnd.top < rightStart.top - 2) { + add(leftEnd.right, leftEnd.top, null, leftEnd.bottom) + add(leftSide, rightStart.top, rightStart.left, rightStart.bottom) + } else { + add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom) + } + } + if (leftEnd.bottom < rightStart.top) + { add(leftSide, leftEnd.bottom, null, rightStart.top) } + } + + output.appendChild(fragment) +} + +// Cursor-blinking +function restartBlink(cm) { + if (!cm.state.focused) { return } + var display = cm.display + clearInterval(display.blinker) + var on = true + display.cursorDiv.style.visibility = "" + if (cm.options.cursorBlinkRate > 0) + { display.blinker = setInterval(function () { return display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; }, + cm.options.cursorBlinkRate) } + else if (cm.options.cursorBlinkRate < 0) + { display.cursorDiv.style.visibility = "hidden" } +} + +function ensureFocus(cm) { + if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm) } +} + +function delayBlurEvent(cm) { + cm.state.delayingBlurEvent = true + setTimeout(function () { if (cm.state.delayingBlurEvent) { + cm.state.delayingBlurEvent = false + onBlur(cm) + } }, 100) +} + +function onFocus(cm, e) { + if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false } + + if (cm.options.readOnly == "nocursor") { return } + if (!cm.state.focused) { + signal(cm, "focus", cm, e) + cm.state.focused = true + addClass(cm.display.wrapper, "CodeMirror-focused") + // This test prevents this from firing when a context + // menu is closed (since the input reset would kill the + // select-all detection hack) + if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { + cm.display.input.reset() + if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20) } // Issue #1730 + } + cm.display.input.receivedFocus() + } + restartBlink(cm) +} +function onBlur(cm, e) { + if (cm.state.delayingBlurEvent) { return } + + if (cm.state.focused) { + signal(cm, "blur", cm, e) + cm.state.focused = false + rmClass(cm.display.wrapper, "CodeMirror-focused") + } + clearInterval(cm.display.blinker) + setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false } }, 150) +} + +// Read the actual heights of the rendered lines, and update their +// stored heights to match. +function updateHeightsInViewport(cm) { + var display = cm.display + var prevBottom = display.lineDiv.offsetTop + for (var i = 0; i < display.view.length; i++) { + var cur = display.view[i], height = (void 0) + if (cur.hidden) { continue } + if (ie && ie_version < 8) { + var bot = cur.node.offsetTop + cur.node.offsetHeight + height = bot - prevBottom + prevBottom = bot + } else { + var box = cur.node.getBoundingClientRect() + height = box.bottom - box.top + } + var diff = cur.line.height - height + if (height < 2) { height = textHeight(display) } + if (diff > .005 || diff < -.005) { + updateLineHeight(cur.line, height) + updateWidgetHeight(cur.line) + if (cur.rest) { for (var j = 0; j < cur.rest.length; j++) + { updateWidgetHeight(cur.rest[j]) } } + } + } +} + +// Read and store the height of line widgets associated with the +// given line. +function updateWidgetHeight(line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) + { line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight } } +} + +// Compute the lines that are visible in a given viewport (defaults +// the the current scroll position). viewport may contain top, +// height, and ensure (see op.scrollToPos) properties. +function visibleLines(display, doc, viewport) { + var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop + top = Math.floor(top - paddingTop(display)) + var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight + + var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom) + // Ensure is a {from: {line, ch}, to: {line, ch}} object, and + // forces those lines into the viewport (if possible). + if (viewport && viewport.ensure) { + var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line + if (ensureFrom < from) { + from = ensureFrom + to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight) + } else if (Math.min(ensureTo, doc.lastLine()) >= to) { + from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight) + to = ensureTo + } + } + return {from: from, to: Math.max(to, from + 1)} +} + +// Re-align line numbers and gutter marks to compensate for +// horizontal scrolling. +function alignHorizontally(cm) { + var display = cm.display, view = display.view + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return } + var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft + var gutterW = display.gutters.offsetWidth, left = comp + "px" + for (var i = 0; i < view.length; i++) { if (!view[i].hidden) { + if (cm.options.fixedGutter) { + if (view[i].gutter) + { view[i].gutter.style.left = left } + if (view[i].gutterBackground) + { view[i].gutterBackground.style.left = left } + } + var align = view[i].alignable + if (align) { for (var j = 0; j < align.length; j++) + { align[j].style.left = left } } + } } + if (cm.options.fixedGutter) + { display.gutters.style.left = (comp + gutterW) + "px" } +} + +// Used to ensure that the line number gutter is still the right +// size for the current document size. Returns true when an update +// is needed. +function maybeUpdateLineNumberWidth(cm) { + if (!cm.options.lineNumbers) { return false } + var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display + if (last.length != display.lineNumChars) { + var test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")) + var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW + display.lineGutter.style.width = "" + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1 + display.lineNumWidth = display.lineNumInnerWidth + padding + display.lineNumChars = display.lineNumInnerWidth ? last.length : -1 + display.lineGutter.style.width = display.lineNumWidth + "px" + updateGutterSpace(cm) + return true + } + return false +} + +// SCROLLING THINGS INTO VIEW + +// If an editor sits on the top or bottom of the window, partially +// scrolled out of view, this ensures that the cursor is visible. +function maybeScrollWindow(cm, rect) { + if (signalDOMEvent(cm, "scrollCursorIntoView")) { return } + + var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null + if (rect.top + box.top < 0) { doScroll = true } + else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false } + if (doScroll != null && !phantom) { + var scrollNode = elt("div", "\u200b", null, ("position: absolute;\n top: " + (rect.top - display.viewOffset - paddingTop(cm.display)) + "px;\n height: " + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + "px;\n left: " + (rect.left) + "px; width: " + (Math.max(2, rect.right - rect.left)) + "px;")) + cm.display.lineSpace.appendChild(scrollNode) + scrollNode.scrollIntoView(doScroll) + cm.display.lineSpace.removeChild(scrollNode) + } +} + +// Scroll a given position into view (immediately), verifying that +// it actually became visible (as line heights are accurately +// measured, the position of something may 'drift' during drawing). +function scrollPosIntoView(cm, pos, end, margin) { + if (margin == null) { margin = 0 } + var rect + if (!cm.options.lineWrapping && pos == end) { + // Set pos and end to the cursor positions around the character pos sticks to + // If pos.sticky == "before", that is around pos.ch - 1, otherwise around pos.ch + // If pos == Pos(_, 0, "before"), pos and end are unchanged + pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ? pos.ch - 1 : pos.ch, "after") : pos + end = pos.sticky == "before" ? Pos(pos.line, pos.ch + 1, "before") : pos + } + for (var limit = 0; limit < 5; limit++) { + var changed = false + var coords = cursorCoords(cm, pos) + var endCoords = !end || end == pos ? coords : cursorCoords(cm, end) + rect = {left: Math.min(coords.left, endCoords.left), + top: Math.min(coords.top, endCoords.top) - margin, + right: Math.max(coords.left, endCoords.left), + bottom: Math.max(coords.bottom, endCoords.bottom) + margin} + var scrollPos = calculateScrollPos(cm, rect) + var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft + if (scrollPos.scrollTop != null) { + updateScrollTop(cm, scrollPos.scrollTop) + if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true } + } + if (scrollPos.scrollLeft != null) { + setScrollLeft(cm, scrollPos.scrollLeft) + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true } + } + if (!changed) { break } + } + return rect +} + +// Scroll a given set of coordinates into view (immediately). +function scrollIntoView(cm, rect) { + var scrollPos = calculateScrollPos(cm, rect) + if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop) } + if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft) } +} + +// Calculate a new scroll position needed to scroll the given +// rectangle into view. Returns an object with scrollTop and +// scrollLeft properties. When these are undefined, the +// vertical/horizontal position does not need to be adjusted. +function calculateScrollPos(cm, rect) { + var display = cm.display, snapMargin = textHeight(cm.display) + if (rect.top < 0) { rect.top = 0 } + var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop + var screen = displayHeight(cm), result = {} + if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen } + var docBottom = cm.doc.height + paddingVert(display) + var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin + if (rect.top < screentop) { + result.scrollTop = atTop ? 0 : rect.top + } else if (rect.bottom > screentop + screen) { + var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen) + if (newTop != screentop) { result.scrollTop = newTop } + } + + var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft + var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0) + var tooWide = rect.right - rect.left > screenw + if (tooWide) { rect.right = rect.left + screenw } + if (rect.left < 10) + { result.scrollLeft = 0 } + else if (rect.left < screenleft) + { result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)) } + else if (rect.right > screenw + screenleft - 3) + { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw } + return result +} + +// Store a relative adjustment to the scroll position in the current +// operation (to be applied when the operation finishes). +function addToScrollTop(cm, top) { + if (top == null) { return } + resolveScrollToPos(cm) + cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top +} + +// Make sure that at the end of the operation the current cursor is +// shown. +function ensureCursorVisible(cm) { + resolveScrollToPos(cm) + var cur = cm.getCursor() + cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin} +} + +function scrollToCoords(cm, x, y) { + if (x != null || y != null) { resolveScrollToPos(cm) } + if (x != null) { cm.curOp.scrollLeft = x } + if (y != null) { cm.curOp.scrollTop = y } +} + +function scrollToRange(cm, range) { + resolveScrollToPos(cm) + cm.curOp.scrollToPos = range +} + +// When an operation has its scrollToPos property set, and another +// scroll action is applied before the end of the operation, this +// 'simulates' scrolling that position into view in a cheap way, so +// that the effect of intermediate scroll commands is not ignored. +function resolveScrollToPos(cm) { + var range = cm.curOp.scrollToPos + if (range) { + cm.curOp.scrollToPos = null + var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to) + scrollToCoordsRange(cm, from, to, range.margin) + } +} + +function scrollToCoordsRange(cm, from, to, margin) { + var sPos = calculateScrollPos(cm, { + left: Math.min(from.left, to.left), + top: Math.min(from.top, to.top) - margin, + right: Math.max(from.right, to.right), + bottom: Math.max(from.bottom, to.bottom) + margin + }) + scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop) +} + +// Sync the scrollable area and scrollbars, ensure the viewport +// covers the visible area. +function updateScrollTop(cm, val) { + if (Math.abs(cm.doc.scrollTop - val) < 2) { return } + if (!gecko) { updateDisplaySimple(cm, {top: val}) } + setScrollTop(cm, val, true) + if (gecko) { updateDisplaySimple(cm) } + startWorker(cm, 100) +} + +function setScrollTop(cm, val, forceScroll) { + val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val) + if (cm.display.scroller.scrollTop == val && !forceScroll) { return } + cm.doc.scrollTop = val + cm.display.scrollbars.setScrollTop(val) + if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val } +} + +// Sync scroller and scrollbar, ensure the gutter elements are +// aligned. +function setScrollLeft(cm, val, isScroller, forceScroll) { + val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth) + if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return } + cm.doc.scrollLeft = val + alignHorizontally(cm) + if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val } + cm.display.scrollbars.setScrollLeft(val) +} + +// SCROLLBARS + +// Prepare DOM reads needed to update the scrollbars. Done in one +// shot to minimize update/measure roundtrips. +function measureForScrollbars(cm) { + var d = cm.display, gutterW = d.gutters.offsetWidth + var docH = Math.round(cm.doc.height + paddingVert(cm.display)) + return { + clientHeight: d.scroller.clientHeight, + viewHeight: d.wrapper.clientHeight, + scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, + viewWidth: d.wrapper.clientWidth, + barLeft: cm.options.fixedGutter ? gutterW : 0, + docHeight: docH, + scrollHeight: docH + scrollGap(cm) + d.barHeight, + nativeBarWidth: d.nativeBarWidth, + gutterWidth: gutterW + } +} + +var NativeScrollbars = function(place, scroll, cm) { + this.cm = cm + var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar") + var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar") + place(vert); place(horiz) + + on(vert, "scroll", function () { + if (vert.clientHeight) { scroll(vert.scrollTop, "vertical") } + }) + on(horiz, "scroll", function () { + if (horiz.clientWidth) { scroll(horiz.scrollLeft, "horizontal") } + }) + + this.checkedZeroWidth = false + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = "18px" } +}; + +NativeScrollbars.prototype.update = function (measure) { + var needsH = measure.scrollWidth > measure.clientWidth + 1 + var needsV = measure.scrollHeight > measure.clientHeight + 1 + var sWidth = measure.nativeBarWidth + + if (needsV) { + this.vert.style.display = "block" + this.vert.style.bottom = needsH ? sWidth + "px" : "0" + var totalHeight = measure.viewHeight - (needsH ? sWidth : 0) + // A bug in IE8 can cause this value to be negative, so guard it. + this.vert.firstChild.style.height = + Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px" + } else { + this.vert.style.display = "" + this.vert.firstChild.style.height = "0" + } + + if (needsH) { + this.horiz.style.display = "block" + this.horiz.style.right = needsV ? sWidth + "px" : "0" + this.horiz.style.left = measure.barLeft + "px" + var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0) + this.horiz.firstChild.style.width = + Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + "px" + } else { + this.horiz.style.display = "" + this.horiz.firstChild.style.width = "0" + } + + if (!this.checkedZeroWidth && measure.clientHeight > 0) { + if (sWidth == 0) { this.zeroWidthHack() } + this.checkedZeroWidth = true + } + + return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0} +}; + +NativeScrollbars.prototype.setScrollLeft = function (pos) { + if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos } + if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz") } +}; + +NativeScrollbars.prototype.setScrollTop = function (pos) { + if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos } + if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, "vert") } +}; + +NativeScrollbars.prototype.zeroWidthHack = function () { + var w = mac && !mac_geMountainLion ? "12px" : "18px" + this.horiz.style.height = this.vert.style.width = w + this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none" + this.disableHoriz = new Delayed + this.disableVert = new Delayed +}; + +NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) { + bar.style.pointerEvents = "auto" + function maybeDisable() { + // To find out whether the scrollbar is still visible, we + // check whether the element under the pixel in the bottom + // right corner of the scrollbar box is the scrollbar box + // itself (when the bar is still visible) or its filler child + // (when the bar is hidden). If it is still visible, we keep + // it enabled, if it's hidden, we disable pointer events. + var box = bar.getBoundingClientRect() + var elt = type == "vert" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) + : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1) + if (elt != bar) { bar.style.pointerEvents = "none" } + else { delay.set(1000, maybeDisable) } + } + delay.set(1000, maybeDisable) +}; + +NativeScrollbars.prototype.clear = function () { + var parent = this.horiz.parentNode + parent.removeChild(this.horiz) + parent.removeChild(this.vert) +}; + +var NullScrollbars = function () {}; + +NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} }; +NullScrollbars.prototype.setScrollLeft = function () {}; +NullScrollbars.prototype.setScrollTop = function () {}; +NullScrollbars.prototype.clear = function () {}; + +function updateScrollbars(cm, measure) { + if (!measure) { measure = measureForScrollbars(cm) } + var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight + updateScrollbarsInner(cm, measure) + for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { + if (startWidth != cm.display.barWidth && cm.options.lineWrapping) + { updateHeightsInViewport(cm) } + updateScrollbarsInner(cm, measureForScrollbars(cm)) + startWidth = cm.display.barWidth; startHeight = cm.display.barHeight + } +} + +// Re-synchronize the fake scrollbars with the actual size of the +// content. +function updateScrollbarsInner(cm, measure) { + var d = cm.display + var sizes = d.scrollbars.update(measure) + + d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px" + d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px" + d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent" + + if (sizes.right && sizes.bottom) { + d.scrollbarFiller.style.display = "block" + d.scrollbarFiller.style.height = sizes.bottom + "px" + d.scrollbarFiller.style.width = sizes.right + "px" + } else { d.scrollbarFiller.style.display = "" } + if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block" + d.gutterFiller.style.height = sizes.bottom + "px" + d.gutterFiller.style.width = measure.gutterWidth + "px" + } else { d.gutterFiller.style.display = "" } +} + +var scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars} + +function initScrollbars(cm) { + if (cm.display.scrollbars) { + cm.display.scrollbars.clear() + if (cm.display.scrollbars.addClass) + { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass) } + } + + cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) { + cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller) + // Prevent clicks in the scrollbars from killing focus + on(node, "mousedown", function () { + if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0) } + }) + node.setAttribute("cm-not-content", "true") + }, function (pos, axis) { + if (axis == "horizontal") { setScrollLeft(cm, pos) } + else { updateScrollTop(cm, pos) } + }, cm) + if (cm.display.scrollbars.addClass) + { addClass(cm.display.wrapper, cm.display.scrollbars.addClass) } +} + +// Operations are used to wrap a series of changes to the editor +// state in such a way that each change won't have to update the +// cursor and display (which would be awkward, slow, and +// error-prone). Instead, display updates are batched and then all +// combined and executed at once. + +var nextOpId = 0 +// Start a new operation. +function startOperation(cm) { + cm.curOp = { + cm: cm, + viewChanged: false, // Flag that indicates that lines might need to be redrawn + startHeight: cm.doc.height, // Used to detect need to update scrollbar + forceUpdate: false, // Used to force a redraw + updateInput: null, // Whether to reset the input textarea + typing: false, // Whether this reset should be careful to leave existing text (for compositing) + changeObjs: null, // Accumulated changes, for firing change events + cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on + cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already + selectionChanged: false, // Whether the selection needs to be redrawn + updateMaxLine: false, // Set when the widest line needs to be determined anew + scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet + scrollToPos: null, // Used to scroll to a specific position + focus: false, + id: ++nextOpId // Unique ID + } + pushOperation(cm.curOp) +} + +// Finish an operation, updating the display and signalling delayed events +function endOperation(cm) { + var op = cm.curOp + finishOperation(op, function (group) { + for (var i = 0; i < group.ops.length; i++) + { group.ops[i].cm.curOp = null } + endOperations(group) + }) +} + +// The DOM updates done when an operation finishes are batched so +// that the minimum number of relayouts are required. +function endOperations(group) { + var ops = group.ops + for (var i = 0; i < ops.length; i++) // Read DOM + { endOperation_R1(ops[i]) } + for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe) + { endOperation_W1(ops[i$1]) } + for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM + { endOperation_R2(ops[i$2]) } + for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe) + { endOperation_W2(ops[i$3]) } + for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM + { endOperation_finish(ops[i$4]) } +} + +function endOperation_R1(op) { + var cm = op.cm, display = cm.display + maybeClipScrollbars(cm) + if (op.updateMaxLine) { findMaxLine(cm) } + + op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || + op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || + op.scrollToPos.to.line >= display.viewTo) || + display.maxLineChanged && cm.options.lineWrapping + op.update = op.mustUpdate && + new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate) +} + +function endOperation_W1(op) { + op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update) +} + +function endOperation_R2(op) { + var cm = op.cm, display = cm.display + if (op.updatedDisplay) { updateHeightsInViewport(cm) } + + op.barMeasure = measureForScrollbars(cm) + + // If the max line changed since it was last measured, measure it, + // and ensure the document's width matches it. + // updateDisplay_W2 will use these properties to do the actual resizing + if (display.maxLineChanged && !cm.options.lineWrapping) { + op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3 + cm.display.sizerWidth = op.adjustWidthTo + op.barMeasure.scrollWidth = + Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth) + op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)) + } + + if (op.updatedDisplay || op.selectionChanged) + { op.preparedSelection = display.input.prepareSelection() } +} + +function endOperation_W2(op) { + var cm = op.cm + + if (op.adjustWidthTo != null) { + cm.display.sizer.style.minWidth = op.adjustWidthTo + "px" + if (op.maxScrollLeft < cm.doc.scrollLeft) + { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true) } + cm.display.maxLineChanged = false + } + + var takeFocus = op.focus && op.focus == activeElt() + if (op.preparedSelection) + { cm.display.input.showSelection(op.preparedSelection, takeFocus) } + if (op.updatedDisplay || op.startHeight != cm.doc.height) + { updateScrollbars(cm, op.barMeasure) } + if (op.updatedDisplay) + { setDocumentHeight(cm, op.barMeasure) } + + if (op.selectionChanged) { restartBlink(cm) } + + if (cm.state.focused && op.updateInput) + { cm.display.input.reset(op.typing) } + if (takeFocus) { ensureFocus(op.cm) } +} + +function endOperation_finish(op) { + var cm = op.cm, display = cm.display, doc = cm.doc + + if (op.updatedDisplay) { postUpdateDisplay(cm, op.update) } + + // Abort mouse wheel delta measurement, when scrolling explicitly + if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) + { display.wheelStartX = display.wheelStartY = null } + + // Propagate the scroll position to the actual DOM scroller + if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll) } + + if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true) } + // If we need to scroll a specific position into view, do so. + if (op.scrollToPos) { + var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), + clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin) + maybeScrollWindow(cm, rect) + } + + // Fire events for markers that are hidden/unidden by editing or + // undoing + var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers + if (hidden) { for (var i = 0; i < hidden.length; ++i) + { if (!hidden[i].lines.length) { signal(hidden[i], "hide") } } } + if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1) + { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], "unhide") } } } + + if (display.wrapper.offsetHeight) + { doc.scrollTop = cm.display.scroller.scrollTop } + + // Fire change events, and delayed event handlers + if (op.changeObjs) + { signal(cm, "changes", cm, op.changeObjs) } + if (op.update) + { op.update.finish() } +} + +// Run the given function in an operation +function runInOp(cm, f) { + if (cm.curOp) { return f() } + startOperation(cm) + try { return f() } + finally { endOperation(cm) } +} +// Wraps a function in an operation. Returns the wrapped function. +function operation(cm, f) { + return function() { + if (cm.curOp) { return f.apply(cm, arguments) } + startOperation(cm) + try { return f.apply(cm, arguments) } + finally { endOperation(cm) } + } +} +// Used to add methods to editor and doc instances, wrapping them in +// operations. +function methodOp(f) { + return function() { + if (this.curOp) { return f.apply(this, arguments) } + startOperation(this) + try { return f.apply(this, arguments) } + finally { endOperation(this) } + } +} +function docMethodOp(f) { + return function() { + var cm = this.cm + if (!cm || cm.curOp) { return f.apply(this, arguments) } + startOperation(cm) + try { return f.apply(this, arguments) } + finally { endOperation(cm) } + } +} + +// Updates the display.view data structure for a given change to the +// document. From and to are in pre-change coordinates. Lendiff is +// the amount of lines added or subtracted by the change. This is +// used for changes that span multiple lines, or change the way +// lines are divided into visual lines. regLineChange (below) +// registers single-line changes. +function regChange(cm, from, to, lendiff) { + if (from == null) { from = cm.doc.first } + if (to == null) { to = cm.doc.first + cm.doc.size } + if (!lendiff) { lendiff = 0 } + + var display = cm.display + if (lendiff && to < display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers > from)) + { display.updateLineNumbers = from } + + cm.curOp.viewChanged = true + + if (from >= display.viewTo) { // Change after + if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) + { resetView(cm) } + } else if (to <= display.viewFrom) { // Change before + if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { + resetView(cm) + } else { + display.viewFrom += lendiff + display.viewTo += lendiff + } + } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap + resetView(cm) + } else if (from <= display.viewFrom) { // Top overlap + var cut = viewCuttingPoint(cm, to, to + lendiff, 1) + if (cut) { + display.view = display.view.slice(cut.index) + display.viewFrom = cut.lineN + display.viewTo += lendiff + } else { + resetView(cm) + } + } else if (to >= display.viewTo) { // Bottom overlap + var cut$1 = viewCuttingPoint(cm, from, from, -1) + if (cut$1) { + display.view = display.view.slice(0, cut$1.index) + display.viewTo = cut$1.lineN + } else { + resetView(cm) + } + } else { // Gap in the middle + var cutTop = viewCuttingPoint(cm, from, from, -1) + var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1) + if (cutTop && cutBot) { + display.view = display.view.slice(0, cutTop.index) + .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) + .concat(display.view.slice(cutBot.index)) + display.viewTo += lendiff + } else { + resetView(cm) + } + } + + var ext = display.externalMeasured + if (ext) { + if (to < ext.lineN) + { ext.lineN += lendiff } + else if (from < ext.lineN + ext.size) + { display.externalMeasured = null } + } +} + +// Register a change to a single line. Type must be one of "text", +// "gutter", "class", "widget" +function regLineChange(cm, line, type) { + cm.curOp.viewChanged = true + var display = cm.display, ext = cm.display.externalMeasured + if (ext && line >= ext.lineN && line < ext.lineN + ext.size) + { display.externalMeasured = null } + + if (line < display.viewFrom || line >= display.viewTo) { return } + var lineView = display.view[findViewIndex(cm, line)] + if (lineView.node == null) { return } + var arr = lineView.changes || (lineView.changes = []) + if (indexOf(arr, type) == -1) { arr.push(type) } +} + +// Clear the view. +function resetView(cm) { + cm.display.viewFrom = cm.display.viewTo = cm.doc.first + cm.display.view = [] + cm.display.viewOffset = 0 +} + +function viewCuttingPoint(cm, oldN, newN, dir) { + var index = findViewIndex(cm, oldN), diff, view = cm.display.view + if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) + { return {index: index, lineN: newN} } + var n = cm.display.viewFrom + for (var i = 0; i < index; i++) + { n += view[i].size } + if (n != oldN) { + if (dir > 0) { + if (index == view.length - 1) { return null } + diff = (n + view[index].size) - oldN + index++ + } else { + diff = n - oldN + } + oldN += diff; newN += diff + } + while (visualLineNo(cm.doc, newN) != newN) { + if (index == (dir < 0 ? 0 : view.length - 1)) { return null } + newN += dir * view[index - (dir < 0 ? 1 : 0)].size + index += dir + } + return {index: index, lineN: newN} +} + +// Force the view to cover a given range, adding empty view element +// or clipping off existing ones as needed. +function adjustView(cm, from, to) { + var display = cm.display, view = display.view + if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { + display.view = buildViewArray(cm, from, to) + display.viewFrom = from + } else { + if (display.viewFrom > from) + { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view) } + else if (display.viewFrom < from) + { display.view = display.view.slice(findViewIndex(cm, from)) } + display.viewFrom = from + if (display.viewTo < to) + { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)) } + else if (display.viewTo > to) + { display.view = display.view.slice(0, findViewIndex(cm, to)) } + } + display.viewTo = to +} + +// Count the number of lines in the view whose DOM representation is +// out of date (or nonexistent). +function countDirtyView(cm) { + var view = cm.display.view, dirty = 0 + for (var i = 0; i < view.length; i++) { + var lineView = view[i] + if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty } + } + return dirty +} + +// HIGHLIGHT WORKER + +function startWorker(cm, time) { + if (cm.doc.highlightFrontier < cm.display.viewTo) + { cm.state.highlight.set(time, bind(highlightWorker, cm)) } +} + +function highlightWorker(cm) { + var doc = cm.doc + if (doc.highlightFrontier >= cm.display.viewTo) { return } + var end = +new Date + cm.options.workTime + var context = getContextBefore(cm, doc.highlightFrontier) + var changedLines = [] + + doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) { + if (context.line >= cm.display.viewFrom) { // Visible + var oldStyles = line.styles + var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null + var highlighted = highlightLine(cm, line, context, true) + if (resetState) { context.state = resetState } + line.styles = highlighted.styles + var oldCls = line.styleClasses, newCls = highlighted.classes + if (newCls) { line.styleClasses = newCls } + else if (oldCls) { line.styleClasses = null } + var ischange = !oldStyles || oldStyles.length != line.styles.length || + oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass) + for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i] } + if (ischange) { changedLines.push(context.line) } + line.stateAfter = context.save() + context.nextLine() + } else { + if (line.text.length <= cm.options.maxHighlightLength) + { processLine(cm, line.text, context) } + line.stateAfter = context.line % 5 == 0 ? context.save() : null + context.nextLine() + } + if (+new Date > end) { + startWorker(cm, cm.options.workDelay) + return true + } + }) + doc.highlightFrontier = context.line + doc.modeFrontier = Math.max(doc.modeFrontier, context.line) + if (changedLines.length) { runInOp(cm, function () { + for (var i = 0; i < changedLines.length; i++) + { regLineChange(cm, changedLines[i], "text") } + }) } +} + +// DISPLAY DRAWING + +var DisplayUpdate = function(cm, viewport, force) { + var display = cm.display + + this.viewport = viewport + // Store some values that we'll need later (but don't want to force a relayout for) + this.visible = visibleLines(display, cm.doc, viewport) + this.editorIsHidden = !display.wrapper.offsetWidth + this.wrapperHeight = display.wrapper.clientHeight + this.wrapperWidth = display.wrapper.clientWidth + this.oldDisplayWidth = displayWidth(cm) + this.force = force + this.dims = getDimensions(cm) + this.events = [] +}; + +DisplayUpdate.prototype.signal = function (emitter, type) { + if (hasHandler(emitter, type)) + { this.events.push(arguments) } +}; +DisplayUpdate.prototype.finish = function () { + var this$1 = this; + + for (var i = 0; i < this.events.length; i++) + { signal.apply(null, this$1.events[i]) } +}; + +function maybeClipScrollbars(cm) { + var display = cm.display + if (!display.scrollbarsClipped && display.scroller.offsetWidth) { + display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth + display.heightForcer.style.height = scrollGap(cm) + "px" + display.sizer.style.marginBottom = -display.nativeBarWidth + "px" + display.sizer.style.borderRightWidth = scrollGap(cm) + "px" + display.scrollbarsClipped = true + } +} + +function selectionSnapshot(cm) { + if (cm.hasFocus()) { return null } + var active = activeElt() + if (!active || !contains(cm.display.lineDiv, active)) { return null } + var result = {activeElt: active} + if (window.getSelection) { + var sel = window.getSelection() + if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) { + result.anchorNode = sel.anchorNode + result.anchorOffset = sel.anchorOffset + result.focusNode = sel.focusNode + result.focusOffset = sel.focusOffset + } + } + return result +} + +function restoreSelection(snapshot) { + if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return } + snapshot.activeElt.focus() + if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) { + var sel = window.getSelection(), range = document.createRange() + range.setEnd(snapshot.anchorNode, snapshot.anchorOffset) + range.collapse(false) + sel.removeAllRanges() + sel.addRange(range) + sel.extend(snapshot.focusNode, snapshot.focusOffset) + } +} + +// Does the actual updating of the line display. Bails out +// (returning false) when there is nothing to be done and forced is +// false. +function updateDisplayIfNeeded(cm, update) { + var display = cm.display, doc = cm.doc + + if (update.editorIsHidden) { + resetView(cm) + return false + } + + // Bail out if the visible area is already rendered and nothing changed. + if (!update.force && + update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && + display.renderedView == display.view && countDirtyView(cm) == 0) + { return false } + + if (maybeUpdateLineNumberWidth(cm)) { + resetView(cm) + update.dims = getDimensions(cm) + } + + // Compute a suitable new viewport (from & to) + var end = doc.first + doc.size + var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first) + var to = Math.min(end, update.visible.to + cm.options.viewportMargin) + if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom) } + if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo) } + if (sawCollapsedSpans) { + from = visualLineNo(cm.doc, from) + to = visualLineEndNo(cm.doc, to) + } + + var different = from != display.viewFrom || to != display.viewTo || + display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth + adjustView(cm, from, to) + + display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)) + // Position the mover div to align with the current scroll position + cm.display.mover.style.top = display.viewOffset + "px" + + var toUpdate = countDirtyView(cm) + if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) + { return false } + + // For big changes, we hide the enclosing element during the + // update, since that speeds up the operations on most browsers. + var selSnapshot = selectionSnapshot(cm) + if (toUpdate > 4) { display.lineDiv.style.display = "none" } + patchDisplay(cm, display.updateLineNumbers, update.dims) + if (toUpdate > 4) { display.lineDiv.style.display = "" } + display.renderedView = display.view + // There might have been a widget with a focused element that got + // hidden or updated, if so re-focus it. + restoreSelection(selSnapshot) + + // Prevent selection and cursors from interfering with the scroll + // width and height. + removeChildren(display.cursorDiv) + removeChildren(display.selectionDiv) + display.gutters.style.height = display.sizer.style.minHeight = 0 + + if (different) { + display.lastWrapHeight = update.wrapperHeight + display.lastWrapWidth = update.wrapperWidth + startWorker(cm, 400) + } + + display.updateLineNumbers = null + + return true +} + +function postUpdateDisplay(cm, update) { + var viewport = update.viewport + + for (var first = true;; first = false) { + if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { + // Clip forced viewport to actual scrollable area. + if (viewport && viewport.top != null) + { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)} } + // Updated line heights might result in the drawn area not + // actually covering the viewport. Keep looping until it does. + update.visible = visibleLines(cm.display, cm.doc, viewport) + if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) + { break } + } + if (!updateDisplayIfNeeded(cm, update)) { break } + updateHeightsInViewport(cm) + var barMeasure = measureForScrollbars(cm) + updateSelection(cm) + updateScrollbars(cm, barMeasure) + setDocumentHeight(cm, barMeasure) + update.force = false + } + + update.signal(cm, "update", cm) + if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { + update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo) + cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo + } +} + +function updateDisplaySimple(cm, viewport) { + var update = new DisplayUpdate(cm, viewport) + if (updateDisplayIfNeeded(cm, update)) { + updateHeightsInViewport(cm) + postUpdateDisplay(cm, update) + var barMeasure = measureForScrollbars(cm) + updateSelection(cm) + updateScrollbars(cm, barMeasure) + setDocumentHeight(cm, barMeasure) + update.finish() + } +} + +// Sync the actual display DOM structure with display.view, removing +// nodes for lines that are no longer in view, and creating the ones +// that are not there yet, and updating the ones that are out of +// date. +function patchDisplay(cm, updateNumbersFrom, dims) { + var display = cm.display, lineNumbers = cm.options.lineNumbers + var container = display.lineDiv, cur = container.firstChild + + function rm(node) { + var next = node.nextSibling + // Works around a throw-scroll bug in OS X Webkit + if (webkit && mac && cm.display.currentWheelTarget == node) + { node.style.display = "none" } + else + { node.parentNode.removeChild(node) } + return next + } + + var view = display.view, lineN = display.viewFrom + // Loop over the elements in the view, syncing cur (the DOM nodes + // in display.lineDiv) with the view as we go. + for (var i = 0; i < view.length; i++) { + var lineView = view[i] + if (lineView.hidden) { + } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet + var node = buildLineElement(cm, lineView, lineN, dims) + container.insertBefore(node, cur) + } else { // Already drawn + while (cur != lineView.node) { cur = rm(cur) } + var updateNumber = lineNumbers && updateNumbersFrom != null && + updateNumbersFrom <= lineN && lineView.lineNumber + if (lineView.changes) { + if (indexOf(lineView.changes, "gutter") > -1) { updateNumber = false } + updateLineForChanges(cm, lineView, lineN, dims) + } + if (updateNumber) { + removeChildren(lineView.lineNumber) + lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))) + } + cur = lineView.node.nextSibling + } + lineN += lineView.size + } + while (cur) { cur = rm(cur) } +} + +function updateGutterSpace(cm) { + var width = cm.display.gutters.offsetWidth + cm.display.sizer.style.marginLeft = width + "px" +} + +function setDocumentHeight(cm, measure) { + cm.display.sizer.style.minHeight = measure.docHeight + "px" + cm.display.heightForcer.style.top = measure.docHeight + "px" + cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px" +} + +// Rebuild the gutter elements, ensure the margin to the left of the +// code matches their width. +function updateGutters(cm) { + var gutters = cm.display.gutters, specs = cm.options.gutters + removeChildren(gutters) + var i = 0 + for (; i < specs.length; ++i) { + var gutterClass = specs[i] + var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)) + if (gutterClass == "CodeMirror-linenumbers") { + cm.display.lineGutter = gElt + gElt.style.width = (cm.display.lineNumWidth || 1) + "px" + } + } + gutters.style.display = i ? "" : "none" + updateGutterSpace(cm) +} + +// Make sure the gutters options contains the element +// "CodeMirror-linenumbers" when the lineNumbers option is true. +function setGuttersForLineNumbers(options) { + var found = indexOf(options.gutters, "CodeMirror-linenumbers") + if (found == -1 && options.lineNumbers) { + options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]) + } else if (found > -1 && !options.lineNumbers) { + options.gutters = options.gutters.slice(0) + options.gutters.splice(found, 1) + } +} + +var wheelSamples = 0; +var wheelPixelsPerUnit = null; +// Fill in a browser-detected starting value on browsers where we +// know one. These don't have to be accurate -- the result of them +// being wrong would just be a slight flicker on the first wheel +// scroll (if it is large enough). +if (ie) { wheelPixelsPerUnit = -.53 } +else if (gecko) { wheelPixelsPerUnit = 15 } +else if (chrome) { wheelPixelsPerUnit = -.7 } +else if (safari) { wheelPixelsPerUnit = -1/3 } + +function wheelEventDelta(e) { + var dx = e.wheelDeltaX, dy = e.wheelDeltaY + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail } + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail } + else if (dy == null) { dy = e.wheelDelta } + return {x: dx, y: dy} +} +function wheelEventPixels(e) { + var delta = wheelEventDelta(e) + delta.x *= wheelPixelsPerUnit + delta.y *= wheelPixelsPerUnit + return delta +} + +function onScrollWheel(cm, e) { + var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y + + var display = cm.display, scroll = display.scroller + // Quit if there's nothing to scroll here + var canScrollX = scroll.scrollWidth > scroll.clientWidth + var canScrollY = scroll.scrollHeight > scroll.clientHeight + if (!(dx && canScrollX || dy && canScrollY)) { return } + + // Webkit browsers on OS X abort momentum scrolls when the target + // of the scroll event is removed from the scrollable element. + // This hack (see related code in patchDisplay) makes sure the + // element is kept around. + if (dy && mac && webkit) { + outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { + for (var i = 0; i < view.length; i++) { + if (view[i].node == cur) { + cm.display.currentWheelTarget = cur + break outer + } + } + } + } + + // On some browsers, horizontal scrolling will cause redraws to + // happen before the gutter has been realigned, causing it to + // wriggle around in a most unseemly way. When we have an + // estimated pixels/delta value, we just handle horizontal + // scrolling entirely here. It'll be slightly off from native, but + // better than glitching out. + if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { + if (dy && canScrollY) + { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)) } + setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)) + // Only prevent default scrolling if vertical scrolling is + // actually possible. Otherwise, it causes vertical scroll + // jitter on OSX trackpads when deltaX is small and deltaY + // is large (issue #3579) + if (!dy || (dy && canScrollY)) + { e_preventDefault(e) } + display.wheelStartX = null // Abort measurement, if in progress + return + } + + // 'Project' the visible viewport to cover the area that is being + // scrolled into view (if we know enough to estimate it). + if (dy && wheelPixelsPerUnit != null) { + var pixels = dy * wheelPixelsPerUnit + var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight + if (pixels < 0) { top = Math.max(0, top + pixels - 50) } + else { bot = Math.min(cm.doc.height, bot + pixels + 50) } + updateDisplaySimple(cm, {top: top, bottom: bot}) + } + + if (wheelSamples < 20) { + if (display.wheelStartX == null) { + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop + display.wheelDX = dx; display.wheelDY = dy + setTimeout(function () { + if (display.wheelStartX == null) { return } + var movedX = scroll.scrollLeft - display.wheelStartX + var movedY = scroll.scrollTop - display.wheelStartY + var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || + (movedX && display.wheelDX && movedX / display.wheelDX) + display.wheelStartX = display.wheelStartY = null + if (!sample) { return } + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1) + ++wheelSamples + }, 200) + } else { + display.wheelDX += dx; display.wheelDY += dy + } + } +} + +// Selection objects are immutable. A new one is created every time +// the selection changes. A selection is one or more non-overlapping +// (and non-touching) ranges, sorted, and an integer that indicates +// which one is the primary selection (the one that's scrolled into +// view, that getCursor returns, etc). +var Selection = function(ranges, primIndex) { + this.ranges = ranges + this.primIndex = primIndex +}; + +Selection.prototype.primary = function () { return this.ranges[this.primIndex] }; + +Selection.prototype.equals = function (other) { + var this$1 = this; + + if (other == this) { return true } + if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false } + for (var i = 0; i < this.ranges.length; i++) { + var here = this$1.ranges[i], there = other.ranges[i] + if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false } + } + return true +}; + +Selection.prototype.deepCopy = function () { + var this$1 = this; + + var out = [] + for (var i = 0; i < this.ranges.length; i++) + { out[i] = new Range(copyPos(this$1.ranges[i].anchor), copyPos(this$1.ranges[i].head)) } + return new Selection(out, this.primIndex) +}; + +Selection.prototype.somethingSelected = function () { + var this$1 = this; + + for (var i = 0; i < this.ranges.length; i++) + { if (!this$1.ranges[i].empty()) { return true } } + return false +}; + +Selection.prototype.contains = function (pos, end) { + var this$1 = this; + + if (!end) { end = pos } + for (var i = 0; i < this.ranges.length; i++) { + var range = this$1.ranges[i] + if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) + { return i } + } + return -1 +}; + +var Range = function(anchor, head) { + this.anchor = anchor; this.head = head +}; + +Range.prototype.from = function () { return minPos(this.anchor, this.head) }; +Range.prototype.to = function () { return maxPos(this.anchor, this.head) }; +Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch }; + +// Take an unsorted, potentially overlapping set of ranges, and +// build a selection out of it. 'Consumes' ranges array (modifying +// it). +function normalizeSelection(ranges, primIndex) { + var prim = ranges[primIndex] + ranges.sort(function (a, b) { return cmp(a.from(), b.from()); }) + primIndex = indexOf(ranges, prim) + for (var i = 1; i < ranges.length; i++) { + var cur = ranges[i], prev = ranges[i - 1] + if (cmp(prev.to(), cur.from()) >= 0) { + var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()) + var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head + if (i <= primIndex) { --primIndex } + ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)) + } + } + return new Selection(ranges, primIndex) +} + +function simpleSelection(anchor, head) { + return new Selection([new Range(anchor, head || anchor)], 0) +} + +// Compute the position of the end of a change (its 'to' property +// refers to the pre-change end). +function changeEnd(change) { + if (!change.text) { return change.to } + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)) +} + +// Adjust a position to refer to the post-change position of the +// same text, or the end of the change if the change covers it. +function adjustForChange(pos, change) { + if (cmp(pos, change.from) < 0) { return pos } + if (cmp(pos, change.to) <= 0) { return changeEnd(change) } + + var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch + if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch } + return Pos(line, ch) +} + +function computeSelAfterChange(doc, change) { + var out = [] + for (var i = 0; i < doc.sel.ranges.length; i++) { + var range = doc.sel.ranges[i] + out.push(new Range(adjustForChange(range.anchor, change), + adjustForChange(range.head, change))) + } + return normalizeSelection(out, doc.sel.primIndex) +} + +function offsetPos(pos, old, nw) { + if (pos.line == old.line) + { return Pos(nw.line, pos.ch - old.ch + nw.ch) } + else + { return Pos(nw.line + (pos.line - old.line), pos.ch) } +} + +// Used by replaceSelections to allow moving the selection to the +// start or around the replaced test. Hint may be "start" or "around". +function computeReplacedSel(doc, changes, hint) { + var out = [] + var oldPrev = Pos(doc.first, 0), newPrev = oldPrev + for (var i = 0; i < changes.length; i++) { + var change = changes[i] + var from = offsetPos(change.from, oldPrev, newPrev) + var to = offsetPos(changeEnd(change), oldPrev, newPrev) + oldPrev = change.to + newPrev = to + if (hint == "around") { + var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0 + out[i] = new Range(inv ? to : from, inv ? from : to) + } else { + out[i] = new Range(from, from) + } + } + return new Selection(out, doc.sel.primIndex) +} + +// Used to get the editor into a consistent state again when options change. + +function loadMode(cm) { + cm.doc.mode = getMode(cm.options, cm.doc.modeOption) + resetModeState(cm) +} + +function resetModeState(cm) { + cm.doc.iter(function (line) { + if (line.stateAfter) { line.stateAfter = null } + if (line.styles) { line.styles = null } + }) + cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first + startWorker(cm, 100) + cm.state.modeGen++ + if (cm.curOp) { regChange(cm) } +} + +// DOCUMENT DATA STRUCTURE + +// By default, updates that start and end at the beginning of a line +// are treated specially, in order to make the association of line +// widgets and marker elements with the text behave more intuitive. +function isWholeLineUpdate(doc, change) { + return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && + (!doc.cm || doc.cm.options.wholeLineUpdateBefore) +} + +// Perform a change on the document data structure. +function updateDoc(doc, change, markedSpans, estimateHeight) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null} + function update(line, text, spans) { + updateLine(line, text, spans, estimateHeight) + signalLater(line, "change", line, change) + } + function linesFor(start, end) { + var result = [] + for (var i = start; i < end; ++i) + { result.push(new Line(text[i], spansFor(i), estimateHeight)) } + return result + } + + var from = change.from, to = change.to, text = change.text + var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line) + var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line + + // Adjust the line structure + if (change.full) { + doc.insert(0, linesFor(0, text.length)) + doc.remove(text.length, doc.size - text.length) + } else if (isWholeLineUpdate(doc, change)) { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + var added = linesFor(0, text.length - 1) + update(lastLine, lastLine.text, lastSpans) + if (nlines) { doc.remove(from.line, nlines) } + if (added.length) { doc.insert(from.line, added) } + } else if (firstLine == lastLine) { + if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans) + } else { + var added$1 = linesFor(1, text.length - 1) + added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)) + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)) + doc.insert(from.line + 1, added$1) + } + } else if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)) + doc.remove(from.line + 1, nlines) + } else { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)) + update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans) + var added$2 = linesFor(1, text.length - 1) + if (nlines > 1) { doc.remove(from.line + 1, nlines - 1) } + doc.insert(from.line + 1, added$2) + } + + signalLater(doc, "change", doc, change) +} + +// Call f for all linked documents. +function linkedDocs(doc, f, sharedHistOnly) { + function propagate(doc, skip, sharedHist) { + if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) { + var rel = doc.linked[i] + if (rel.doc == skip) { continue } + var shared = sharedHist && rel.sharedHist + if (sharedHistOnly && !shared) { continue } + f(rel.doc, shared) + propagate(rel.doc, doc, shared) + } } + } + propagate(doc, null, true) +} + +// Attach a document to an editor. +function attachDoc(cm, doc) { + if (doc.cm) { throw new Error("This document is already in use.") } + cm.doc = doc + doc.cm = cm + estimateLineHeights(cm) + loadMode(cm) + setDirectionClass(cm) + if (!cm.options.lineWrapping) { findMaxLine(cm) } + cm.options.mode = doc.modeOption + regChange(cm) +} + +function setDirectionClass(cm) { + ;(cm.doc.direction == "rtl" ? addClass : rmClass)(cm.display.lineDiv, "CodeMirror-rtl") +} + +function directionChanged(cm) { + runInOp(cm, function () { + setDirectionClass(cm) + regChange(cm) + }) +} + +function History(startGen) { + // Arrays of change events and selections. Doing something adds an + // event to done and clears undo. Undoing moves events from done + // to undone, redoing moves them in the other direction. + this.done = []; this.undone = [] + this.undoDepth = Infinity + // Used to track when changes can be merged into a single undo + // event + this.lastModTime = this.lastSelTime = 0 + this.lastOp = this.lastSelOp = null + this.lastOrigin = this.lastSelOrigin = null + // Used by the isClean() method + this.generation = this.maxGeneration = startGen || 1 +} + +// Create a history change event from an updateDoc-style change +// object. +function historyChangeFromChange(doc, change) { + var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)} + attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1) + linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true) + return histChange +} + +// Pop all selection events off the end of a history array. Stop at +// a change event. +function clearSelectionEvents(array) { + while (array.length) { + var last = lst(array) + if (last.ranges) { array.pop() } + else { break } + } +} + +// Find the top change event in the history. Pop off selection +// events that are in the way. +function lastChangeEvent(hist, force) { + if (force) { + clearSelectionEvents(hist.done) + return lst(hist.done) + } else if (hist.done.length && !lst(hist.done).ranges) { + return lst(hist.done) + } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { + hist.done.pop() + return lst(hist.done) + } +} + +// Register a change in the history. Merges changes that are within +// a single operation, or are close together with an origin that +// allows merging (starting with "+") into a single event. +function addChangeToHistory(doc, change, selAfter, opId) { + var hist = doc.history + hist.undone.length = 0 + var time = +new Date, cur + var last + + if ((hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || + change.origin.charAt(0) == "*")) && + (cur = lastChangeEvent(hist, hist.lastOp == opId))) { + // Merge this change into the last event + last = lst(cur.changes) + if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { + // Optimized case for simple insertion -- don't want to add + // new changesets for every character typed + last.to = changeEnd(change) + } else { + // Add new sub-event + cur.changes.push(historyChangeFromChange(doc, change)) + } + } else { + // Can not be merged, start a new event. + var before = lst(hist.done) + if (!before || !before.ranges) + { pushSelectionToHistory(doc.sel, hist.done) } + cur = {changes: [historyChangeFromChange(doc, change)], + generation: hist.generation} + hist.done.push(cur) + while (hist.done.length > hist.undoDepth) { + hist.done.shift() + if (!hist.done[0].ranges) { hist.done.shift() } + } + } + hist.done.push(selAfter) + hist.generation = ++hist.maxGeneration + hist.lastModTime = hist.lastSelTime = time + hist.lastOp = hist.lastSelOp = opId + hist.lastOrigin = hist.lastSelOrigin = change.origin + + if (!last) { signal(doc, "historyAdded") } +} + +function selectionEventCanBeMerged(doc, origin, prev, sel) { + var ch = origin.charAt(0) + return ch == "*" || + ch == "+" && + prev.ranges.length == sel.ranges.length && + prev.somethingSelected() == sel.somethingSelected() && + new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500) +} + +// Called whenever the selection changes, sets the new selection as +// the pending selection in the history, and pushes the old pending +// selection into the 'done' array when it was significantly +// different (in number of selected ranges, emptiness, or time). +function addSelectionToHistory(doc, sel, opId, options) { + var hist = doc.history, origin = options && options.origin + + // A new event is started when the previous origin does not match + // the current, or the origins don't allow matching. Origins + // starting with * are always merged, those starting with + are + // merged when similar and close together in time. + if (opId == hist.lastSelOp || + (origin && hist.lastSelOrigin == origin && + (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || + selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) + { hist.done[hist.done.length - 1] = sel } + else + { pushSelectionToHistory(sel, hist.done) } + + hist.lastSelTime = +new Date + hist.lastSelOrigin = origin + hist.lastSelOp = opId + if (options && options.clearRedo !== false) + { clearSelectionEvents(hist.undone) } +} + +function pushSelectionToHistory(sel, dest) { + var top = lst(dest) + if (!(top && top.ranges && top.equals(sel))) + { dest.push(sel) } +} + +// Used to store marked span information in the history. +function attachLocalSpans(doc, change, from, to) { + var existing = change["spans_" + doc.id], n = 0 + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) { + if (line.markedSpans) + { (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans } + ++n + }) +} + +// When un/re-doing restores text containing marked spans, those +// that have been explicitly cleared should not be restored. +function removeClearedSpans(spans) { + if (!spans) { return null } + var out + for (var i = 0; i < spans.length; ++i) { + if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i) } } + else if (out) { out.push(spans[i]) } + } + return !out ? spans : out.length ? out : null +} + +// Retrieve and filter the old marked spans stored in a change event. +function getOldSpans(doc, change) { + var found = change["spans_" + doc.id] + if (!found) { return null } + var nw = [] + for (var i = 0; i < change.text.length; ++i) + { nw.push(removeClearedSpans(found[i])) } + return nw +} + +// Used for un/re-doing changes from the history. Combines the +// result of computing the existing spans with the set of spans that +// existed in the history (so that deleting around a span and then +// undoing brings back the span). +function mergeOldSpans(doc, change) { + var old = getOldSpans(doc, change) + var stretched = stretchSpansOverChange(doc, change) + if (!old) { return stretched } + if (!stretched) { return old } + + for (var i = 0; i < old.length; ++i) { + var oldCur = old[i], stretchCur = stretched[i] + if (oldCur && stretchCur) { + spans: for (var j = 0; j < stretchCur.length; ++j) { + var span = stretchCur[j] + for (var k = 0; k < oldCur.length; ++k) + { if (oldCur[k].marker == span.marker) { continue spans } } + oldCur.push(span) + } + } else if (stretchCur) { + old[i] = stretchCur + } + } + return old +} + +// Used both to provide a JSON-safe object in .getHistory, and, when +// detaching a document, to split the history in two +function copyHistoryArray(events, newGroup, instantiateSel) { + var copy = [] + for (var i = 0; i < events.length; ++i) { + var event = events[i] + if (event.ranges) { + copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event) + continue + } + var changes = event.changes, newChanges = [] + copy.push({changes: newChanges}) + for (var j = 0; j < changes.length; ++j) { + var change = changes[j], m = (void 0) + newChanges.push({from: change.from, to: change.to, text: change.text}) + if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop] + delete change[prop] + } + } } } + } + } + return copy +} + +// The 'scroll' parameter given to many of these indicated whether +// the new cursor position should be scrolled into view after +// modifying the selection. + +// If shift is held or the extend flag is set, extends a range to +// include a given position (and optionally a second position). +// Otherwise, simply returns the range between the given positions. +// Used for cursor motion and such. +function extendRange(range, head, other, extend) { + if (extend) { + var anchor = range.anchor + if (other) { + var posBefore = cmp(head, anchor) < 0 + if (posBefore != (cmp(other, anchor) < 0)) { + anchor = head + head = other + } else if (posBefore != (cmp(head, other) < 0)) { + head = other + } + } + return new Range(anchor, head) + } else { + return new Range(other || head, head) + } +} + +// Extend the primary selection range, discard the rest. +function extendSelection(doc, head, other, options, extend) { + if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend) } + setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options) +} + +// Extend all selections (pos is an array of selections with length +// equal the number of selections) +function extendSelections(doc, heads, options) { + var out = [] + var extend = doc.cm && (doc.cm.display.shift || doc.extend) + for (var i = 0; i < doc.sel.ranges.length; i++) + { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend) } + var newSel = normalizeSelection(out, doc.sel.primIndex) + setSelection(doc, newSel, options) +} + +// Updates a single range in the selection. +function replaceOneSelection(doc, i, range, options) { + var ranges = doc.sel.ranges.slice(0) + ranges[i] = range + setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options) +} + +// Reset the selection to a single range. +function setSimpleSelection(doc, anchor, head, options) { + setSelection(doc, simpleSelection(anchor, head), options) +} + +// Give beforeSelectionChange handlers a change to influence a +// selection update. +function filterSelectionChange(doc, sel, options) { + var obj = { + ranges: sel.ranges, + update: function(ranges) { + var this$1 = this; + + this.ranges = [] + for (var i = 0; i < ranges.length; i++) + { this$1.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), + clipPos(doc, ranges[i].head)) } + }, + origin: options && options.origin + } + signal(doc, "beforeSelectionChange", doc, obj) + if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, obj) } + if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) } + else { return sel } +} + +function setSelectionReplaceHistory(doc, sel, options) { + var done = doc.history.done, last = lst(done) + if (last && last.ranges) { + done[done.length - 1] = sel + setSelectionNoUndo(doc, sel, options) + } else { + setSelection(doc, sel, options) + } +} + +// Set a new selection. +function setSelection(doc, sel, options) { + setSelectionNoUndo(doc, sel, options) + addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options) +} + +function setSelectionNoUndo(doc, sel, options) { + if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) + { sel = filterSelectionChange(doc, sel, options) } + + var bias = options && options.bias || + (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1) + setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)) + + if (!(options && options.scroll === false) && doc.cm) + { ensureCursorVisible(doc.cm) } +} + +function setSelectionInner(doc, sel) { + if (sel.equals(doc.sel)) { return } + + doc.sel = sel + + if (doc.cm) { + doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true + signalCursorActivity(doc.cm) + } + signalLater(doc, "cursorActivity", doc) +} + +// Verify that the selection does not partially select any atomic +// marked ranges. +function reCheckSelection(doc) { + setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false)) +} + +// Return a selection that does not partially select any atomic +// ranges. +function skipAtomicInSelection(doc, sel, bias, mayClear) { + var out + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i] + var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i] + var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear) + var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear) + if (out || newAnchor != range.anchor || newHead != range.head) { + if (!out) { out = sel.ranges.slice(0, i) } + out[i] = new Range(newAnchor, newHead) + } + } + return out ? normalizeSelection(out, sel.primIndex) : sel +} + +function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { + var line = getLine(doc, pos.line) + if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) { + var sp = line.markedSpans[i], m = sp.marker + if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && + (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter") + if (m.explicitlyCleared) { + if (!line.markedSpans) { break } + else {--i; continue} + } + } + if (!m.atomic) { continue } + + if (oldPos) { + var near = m.find(dir < 0 ? 1 : -1), diff = (void 0) + if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) + { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null) } + if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) + { return skipAtomicInner(doc, near, pos, dir, mayClear) } + } + + var far = m.find(dir < 0 ? -1 : 1) + if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) + { far = movePos(doc, far, dir, far.line == pos.line ? line : null) } + return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null + } + } } + return pos +} + +// Ensure a given position is not inside an atomic range. +function skipAtomic(doc, pos, oldPos, bias, mayClear) { + var dir = bias || 1 + var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || + skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)) + if (!found) { + doc.cantEdit = true + return Pos(doc.first, 0) + } + return found +} + +function movePos(doc, pos, dir, line) { + if (dir < 0 && pos.ch == 0) { + if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) } + else { return null } + } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { + if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) } + else { return null } + } else { + return new Pos(pos.line, pos.ch + dir) + } +} + +function selectAll(cm) { + cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll) +} + +// UPDATING + +// Allow "beforeChange" event handlers to influence a change +function filterChange(doc, change, update) { + var obj = { + canceled: false, + from: change.from, + to: change.to, + text: change.text, + origin: change.origin, + cancel: function () { return obj.canceled = true; } + } + if (update) { obj.update = function (from, to, text, origin) { + if (from) { obj.from = clipPos(doc, from) } + if (to) { obj.to = clipPos(doc, to) } + if (text) { obj.text = text } + if (origin !== undefined) { obj.origin = origin } + } } + signal(doc, "beforeChange", doc, obj) + if (doc.cm) { signal(doc.cm, "beforeChange", doc.cm, obj) } + + if (obj.canceled) { return null } + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin} +} + +// Apply a change to a document, and add it to the document's +// history, and propagating it to all linked documents. +function makeChange(doc, change, ignoreReadOnly) { + if (doc.cm) { + if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) } + if (doc.cm.state.suppressEdits) { return } + } + + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { + change = filterChange(doc, change, true) + if (!change) { return } + } + + // Possibly split or suppress the update based on the presence + // of read-only spans in its range. + var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to) + if (split) { + for (var i = split.length - 1; i >= 0; --i) + { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text, origin: change.origin}) } + } else { + makeChangeInner(doc, change) + } +} + +function makeChangeInner(doc, change) { + if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) { return } + var selAfter = computeSelAfterChange(doc, change) + addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN) + + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)) + var rebased = [] + + linkedDocs(doc, function (doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change) + rebased.push(doc.history) + } + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)) + }) +} + +// Revert a change stored in a document's history. +function makeChangeFromHistory(doc, type, allowSelectionOnly) { + if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) { return } + + var hist = doc.history, event, selAfter = doc.sel + var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done + + // Verify that there is a useable event (so that ctrl-z won't + // needlessly clear selection events) + var i = 0 + for (; i < source.length; i++) { + event = source[i] + if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) + { break } + } + if (i == source.length) { return } + hist.lastOrigin = hist.lastSelOrigin = null + + for (;;) { + event = source.pop() + if (event.ranges) { + pushSelectionToHistory(event, dest) + if (allowSelectionOnly && !event.equals(doc.sel)) { + setSelection(doc, event, {clearRedo: false}) + return + } + selAfter = event + } + else { break } + } + + // Build up a reverse change object to add to the opposite history + // stack (redo when undoing, and vice versa). + var antiChanges = [] + pushSelectionToHistory(selAfter, dest) + dest.push({changes: antiChanges, generation: hist.generation}) + hist.generation = event.generation || ++hist.maxGeneration + + var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange") + + var loop = function ( i ) { + var change = event.changes[i] + change.origin = type + if (filter && !filterChange(doc, change, false)) { + source.length = 0 + return {} + } + + antiChanges.push(historyChangeFromChange(doc, change)) + + var after = i ? computeSelAfterChange(doc, change) : lst(source) + makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)) + if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}) } + var rebased = [] + + // Propagate to the linked documents + linkedDocs(doc, function (doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change) + rebased.push(doc.history) + } + makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)) + }) + }; + + for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) { + var returned = loop( i$1 ); + + if ( returned ) return returned.v; + } +} + +// Sub-views need their line numbers shifted when text is added +// above or below them in the parent document. +function shiftDoc(doc, distance) { + if (distance == 0) { return } + doc.first += distance + doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range( + Pos(range.anchor.line + distance, range.anchor.ch), + Pos(range.head.line + distance, range.head.ch) + ); }), doc.sel.primIndex) + if (doc.cm) { + regChange(doc.cm, doc.first, doc.first - distance, distance) + for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) + { regLineChange(doc.cm, l, "gutter") } + } +} + +// More lower-level change function, handling only a single document +// (not linked ones). +function makeChangeSingleDoc(doc, change, selAfter, spans) { + if (doc.cm && !doc.cm.curOp) + { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) } + + if (change.to.line < doc.first) { + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)) + return + } + if (change.from.line > doc.lastLine()) { return } + + // Clip the change to the size of this doc + if (change.from.line < doc.first) { + var shift = change.text.length - 1 - (doc.first - change.from.line) + shiftDoc(doc, shift) + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin} + } + var last = doc.lastLine() + if (change.to.line > last) { + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin} + } + + change.removed = getBetween(doc, change.from, change.to) + + if (!selAfter) { selAfter = computeSelAfterChange(doc, change) } + if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans) } + else { updateDoc(doc, change, spans) } + setSelectionNoUndo(doc, selAfter, sel_dontScroll) +} + +// Handle the interaction of a change to a document with the editor +// that this document is part of. +function makeChangeSingleDocInEditor(cm, change, spans) { + var doc = cm.doc, display = cm.display, from = change.from, to = change.to + + var recomputeMaxLength = false, checkWidthStart = from.line + if (!cm.options.lineWrapping) { + checkWidthStart = lineNo(visualLine(getLine(doc, from.line))) + doc.iter(checkWidthStart, to.line + 1, function (line) { + if (line == display.maxLine) { + recomputeMaxLength = true + return true + } + }) + } + + if (doc.sel.contains(change.from, change.to) > -1) + { signalCursorActivity(cm) } + + updateDoc(doc, change, spans, estimateHeight(cm)) + + if (!cm.options.lineWrapping) { + doc.iter(checkWidthStart, from.line + change.text.length, function (line) { + var len = lineLength(line) + if (len > display.maxLineLength) { + display.maxLine = line + display.maxLineLength = len + display.maxLineChanged = true + recomputeMaxLength = false + } + }) + if (recomputeMaxLength) { cm.curOp.updateMaxLine = true } + } + + retreatFrontier(doc, from.line) + startWorker(cm, 400) + + var lendiff = change.text.length - (to.line - from.line) - 1 + // Remember that these lines changed, for updating the display + if (change.full) + { regChange(cm) } + else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) + { regLineChange(cm, from.line, "text") } + else + { regChange(cm, from.line, to.line + 1, lendiff) } + + var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change") + if (changeHandler || changesHandler) { + var obj = { + from: from, to: to, + text: change.text, + removed: change.removed, + origin: change.origin + } + if (changeHandler) { signalLater(cm, "change", cm, obj) } + if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj) } + } + cm.display.selForContextMenu = null +} + +function replaceRange(doc, code, from, to, origin) { + if (!to) { to = from } + if (cmp(to, from) < 0) { var assign; + (assign = [to, from], from = assign[0], to = assign[1], assign) } + if (typeof code == "string") { code = doc.splitLines(code) } + makeChange(doc, {from: from, to: to, text: code, origin: origin}) +} + +// Rebasing/resetting history to deal with externally-sourced changes + +function rebaseHistSelSingle(pos, from, to, diff) { + if (to < pos.line) { + pos.line += diff + } else if (from < pos.line) { + pos.line = from + pos.ch = 0 + } +} + +// Tries to rebase an array of history events given a change in the +// document. If the change touches the same lines as the event, the +// event, and everything 'behind' it, is discarded. If the change is +// before the event, the event's positions are updated. Uses a +// copy-on-write scheme for the positions, to avoid having to +// reallocate them all on every rebase, but also avoid problems with +// shared position objects being unsafely updated. +function rebaseHistArray(array, from, to, diff) { + for (var i = 0; i < array.length; ++i) { + var sub = array[i], ok = true + if (sub.ranges) { + if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true } + for (var j = 0; j < sub.ranges.length; j++) { + rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff) + rebaseHistSelSingle(sub.ranges[j].head, from, to, diff) + } + continue + } + for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) { + var cur = sub.changes[j$1] + if (to < cur.from.line) { + cur.from = Pos(cur.from.line + diff, cur.from.ch) + cur.to = Pos(cur.to.line + diff, cur.to.ch) + } else if (from <= cur.to.line) { + ok = false + break + } + } + if (!ok) { + array.splice(0, i + 1) + i = 0 + } + } +} + +function rebaseHist(hist, change) { + var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1 + rebaseHistArray(hist.done, from, to, diff) + rebaseHistArray(hist.undone, from, to, diff) +} + +// Utility for applying a change to a line by handle or number, +// returning the number and optionally registering the line as +// changed. +function changeLine(doc, handle, changeType, op) { + var no = handle, line = handle + if (typeof handle == "number") { line = getLine(doc, clipLine(doc, handle)) } + else { no = lineNo(handle) } + if (no == null) { return null } + if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType) } + return line +} + +// The document is represented as a BTree consisting of leaves, with +// chunk of lines in them, and branches, with up to ten leaves or +// other branch nodes below them. The top node is always a branch +// node, and is the document object itself (meaning it has +// additional methods and properties). +// +// All nodes have parent links. The tree is used both to go from +// line numbers to line objects, and to go from objects to numbers. +// It also indexes by height, and is used to convert between height +// and line object, and to find the total height of the document. +// +// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html + +function LeafChunk(lines) { + var this$1 = this; + + this.lines = lines + this.parent = null + var height = 0 + for (var i = 0; i < lines.length; ++i) { + lines[i].parent = this$1 + height += lines[i].height + } + this.height = height +} + +LeafChunk.prototype = { + chunkSize: function chunkSize() { return this.lines.length }, + + // Remove the n lines at offset 'at'. + removeInner: function removeInner(at, n) { + var this$1 = this; + + for (var i = at, e = at + n; i < e; ++i) { + var line = this$1.lines[i] + this$1.height -= line.height + cleanUpLine(line) + signalLater(line, "delete") + } + this.lines.splice(at, n) + }, + + // Helper used to collapse a small branch into a single leaf. + collapse: function collapse(lines) { + lines.push.apply(lines, this.lines) + }, + + // Insert the given array of lines at offset 'at', count them as + // having the given height. + insertInner: function insertInner(at, lines, height) { + var this$1 = this; + + this.height += height + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)) + for (var i = 0; i < lines.length; ++i) { lines[i].parent = this$1 } + }, + + // Used to iterate over a part of the tree. + iterN: function iterN(at, n, op) { + var this$1 = this; + + for (var e = at + n; at < e; ++at) + { if (op(this$1.lines[at])) { return true } } + } +} + +function BranchChunk(children) { + var this$1 = this; + + this.children = children + var size = 0, height = 0 + for (var i = 0; i < children.length; ++i) { + var ch = children[i] + size += ch.chunkSize(); height += ch.height + ch.parent = this$1 + } + this.size = size + this.height = height + this.parent = null +} + +BranchChunk.prototype = { + chunkSize: function chunkSize() { return this.size }, + + removeInner: function removeInner(at, n) { + var this$1 = this; + + this.size -= n + for (var i = 0; i < this.children.length; ++i) { + var child = this$1.children[i], sz = child.chunkSize() + if (at < sz) { + var rm = Math.min(n, sz - at), oldHeight = child.height + child.removeInner(at, rm) + this$1.height -= oldHeight - child.height + if (sz == rm) { this$1.children.splice(i--, 1); child.parent = null } + if ((n -= rm) == 0) { break } + at = 0 + } else { at -= sz } + } + // If the result is smaller than 25 lines, ensure that it is a + // single leaf node. + if (this.size - n < 25 && + (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { + var lines = [] + this.collapse(lines) + this.children = [new LeafChunk(lines)] + this.children[0].parent = this + } + }, + + collapse: function collapse(lines) { + var this$1 = this; + + for (var i = 0; i < this.children.length; ++i) { this$1.children[i].collapse(lines) } + }, + + insertInner: function insertInner(at, lines, height) { + var this$1 = this; + + this.size += lines.length + this.height += height + for (var i = 0; i < this.children.length; ++i) { + var child = this$1.children[i], sz = child.chunkSize() + if (at <= sz) { + child.insertInner(at, lines, height) + if (child.lines && child.lines.length > 50) { + // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. + // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. + var remaining = child.lines.length % 25 + 25 + for (var pos = remaining; pos < child.lines.length;) { + var leaf = new LeafChunk(child.lines.slice(pos, pos += 25)) + child.height -= leaf.height + this$1.children.splice(++i, 0, leaf) + leaf.parent = this$1 + } + child.lines = child.lines.slice(0, remaining) + this$1.maybeSpill() + } + break + } + at -= sz + } + }, + + // When a node has grown, check whether it should be split. + maybeSpill: function maybeSpill() { + if (this.children.length <= 10) { return } + var me = this + do { + var spilled = me.children.splice(me.children.length - 5, 5) + var sibling = new BranchChunk(spilled) + if (!me.parent) { // Become the parent node + var copy = new BranchChunk(me.children) + copy.parent = me + me.children = [copy, sibling] + me = copy + } else { + me.size -= sibling.size + me.height -= sibling.height + var myIndex = indexOf(me.parent.children, me) + me.parent.children.splice(myIndex + 1, 0, sibling) + } + sibling.parent = me.parent + } while (me.children.length > 10) + me.parent.maybeSpill() + }, + + iterN: function iterN(at, n, op) { + var this$1 = this; + + for (var i = 0; i < this.children.length; ++i) { + var child = this$1.children[i], sz = child.chunkSize() + if (at < sz) { + var used = Math.min(n, sz - at) + if (child.iterN(at, used, op)) { return true } + if ((n -= used) == 0) { break } + at = 0 + } else { at -= sz } + } + } +} + +// Line widgets are block elements displayed above or below a line. + +var LineWidget = function(doc, node, options) { + var this$1 = this; + + if (options) { for (var opt in options) { if (options.hasOwnProperty(opt)) + { this$1[opt] = options[opt] } } } + this.doc = doc + this.node = node +}; + +LineWidget.prototype.clear = function () { + var this$1 = this; + + var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line) + if (no == null || !ws) { return } + for (var i = 0; i < ws.length; ++i) { if (ws[i] == this$1) { ws.splice(i--, 1) } } + if (!ws.length) { line.widgets = null } + var height = widgetHeight(this) + updateLineHeight(line, Math.max(0, line.height - height)) + if (cm) { + runInOp(cm, function () { + adjustScrollWhenAboveVisible(cm, line, -height) + regLineChange(cm, no, "widget") + }) + signalLater(cm, "lineWidgetCleared", cm, this, no) + } +}; + +LineWidget.prototype.changed = function () { + var this$1 = this; + + var oldH = this.height, cm = this.doc.cm, line = this.line + this.height = null + var diff = widgetHeight(this) - oldH + if (!diff) { return } + updateLineHeight(line, line.height + diff) + if (cm) { + runInOp(cm, function () { + cm.curOp.forceUpdate = true + adjustScrollWhenAboveVisible(cm, line, diff) + signalLater(cm, "lineWidgetChanged", cm, this$1, lineNo(line)) + }) + } +}; +eventMixin(LineWidget) + +function adjustScrollWhenAboveVisible(cm, line, diff) { + if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) + { addToScrollTop(cm, diff) } +} + +function addLineWidget(doc, handle, node, options) { + var widget = new LineWidget(doc, node, options) + var cm = doc.cm + if (cm && widget.noHScroll) { cm.display.alignWidgets = true } + changeLine(doc, handle, "widget", function (line) { + var widgets = line.widgets || (line.widgets = []) + if (widget.insertAt == null) { widgets.push(widget) } + else { widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget) } + widget.line = line + if (cm && !lineIsHidden(doc, line)) { + var aboveVisible = heightAtLine(line) < doc.scrollTop + updateLineHeight(line, line.height + widgetHeight(widget)) + if (aboveVisible) { addToScrollTop(cm, widget.height) } + cm.curOp.forceUpdate = true + } + return true + }) + signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle)) + return widget +} + +// TEXTMARKERS + +// Created with markText and setBookmark methods. A TextMarker is a +// handle that can be used to clear or find a marked position in the +// document. Line objects hold arrays (markedSpans) containing +// {from, to, marker} object pointing to such marker objects, and +// indicating that such a marker is present on that line. Multiple +// lines may point to the same marker when it spans across lines. +// The spans will have null for their from/to properties when the +// marker continues beyond the start/end of the line. Markers have +// links back to the lines they currently touch. + +// Collapsed markers have unique ids, in order to be able to order +// them, which is needed for uniquely determining an outer marker +// when they overlap (they may nest, but not partially overlap). +var nextMarkerId = 0 + +var TextMarker = function(doc, type) { + this.lines = [] + this.type = type + this.doc = doc + this.id = ++nextMarkerId +}; + +// Clear the marker. +TextMarker.prototype.clear = function () { + var this$1 = this; + + if (this.explicitlyCleared) { return } + var cm = this.doc.cm, withOp = cm && !cm.curOp + if (withOp) { startOperation(cm) } + if (hasHandler(this, "clear")) { + var found = this.find() + if (found) { signalLater(this, "clear", found.from, found.to) } + } + var min = null, max = null + for (var i = 0; i < this.lines.length; ++i) { + var line = this$1.lines[i] + var span = getMarkedSpanFor(line.markedSpans, this$1) + if (cm && !this$1.collapsed) { regLineChange(cm, lineNo(line), "text") } + else if (cm) { + if (span.to != null) { max = lineNo(line) } + if (span.from != null) { min = lineNo(line) } + } + line.markedSpans = removeMarkedSpan(line.markedSpans, span) + if (span.from == null && this$1.collapsed && !lineIsHidden(this$1.doc, line) && cm) + { updateLineHeight(line, textHeight(cm.display)) } + } + if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) { + var visual = visualLine(this$1.lines[i$1]), len = lineLength(visual) + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual + cm.display.maxLineLength = len + cm.display.maxLineChanged = true + } + } } + + if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1) } + this.lines.length = 0 + this.explicitlyCleared = true + if (this.atomic && this.doc.cantEdit) { + this.doc.cantEdit = false + if (cm) { reCheckSelection(cm.doc) } + } + if (cm) { signalLater(cm, "markerCleared", cm, this, min, max) } + if (withOp) { endOperation(cm) } + if (this.parent) { this.parent.clear() } +}; + +// Find the position of the marker in the document. Returns a {from, +// to} object by default. Side can be passed to get a specific side +// -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the +// Pos objects returned contain a line object, rather than a line +// number (used to prevent looking up the same line twice). +TextMarker.prototype.find = function (side, lineObj) { + var this$1 = this; + + if (side == null && this.type == "bookmark") { side = 1 } + var from, to + for (var i = 0; i < this.lines.length; ++i) { + var line = this$1.lines[i] + var span = getMarkedSpanFor(line.markedSpans, this$1) + if (span.from != null) { + from = Pos(lineObj ? line : lineNo(line), span.from) + if (side == -1) { return from } + } + if (span.to != null) { + to = Pos(lineObj ? line : lineNo(line), span.to) + if (side == 1) { return to } + } + } + return from && {from: from, to: to} +}; + +// Signals that the marker's widget changed, and surrounding layout +// should be recomputed. +TextMarker.prototype.changed = function () { + var this$1 = this; + + var pos = this.find(-1, true), widget = this, cm = this.doc.cm + if (!pos || !cm) { return } + runInOp(cm, function () { + var line = pos.line, lineN = lineNo(pos.line) + var view = findViewForLine(cm, lineN) + if (view) { + clearLineMeasurementCacheFor(view) + cm.curOp.selectionChanged = cm.curOp.forceUpdate = true + } + cm.curOp.updateMaxLine = true + if (!lineIsHidden(widget.doc, line) && widget.height != null) { + var oldHeight = widget.height + widget.height = null + var dHeight = widgetHeight(widget) - oldHeight + if (dHeight) + { updateLineHeight(line, line.height + dHeight) } + } + signalLater(cm, "markerChanged", cm, this$1) + }) +}; + +TextMarker.prototype.attachLine = function (line) { + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this) } + } + this.lines.push(line) +}; + +TextMarker.prototype.detachLine = function (line) { + this.lines.splice(indexOf(this.lines, line), 1) + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp + ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this) + } +}; +eventMixin(TextMarker) + +// Create a marker, wire it up to the right lines, and +function markText(doc, from, to, options, type) { + // Shared markers (across linked documents) are handled separately + // (markTextShared will call out to this again, once per + // document). + if (options && options.shared) { return markTextShared(doc, from, to, options, type) } + // Ensure we are in an operation. + if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) } + + var marker = new TextMarker(doc, type), diff = cmp(from, to) + if (options) { copyObj(options, marker, false) } + // Don't connect empty markers unless clearWhenEmpty is false + if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) + { return marker } + if (marker.replacedWith) { + // Showing up as a widget implies collapsed (widget replaces text) + marker.collapsed = true + marker.widgetNode = eltP("span", [marker.replacedWith], "CodeMirror-widget") + if (!options.handleMouseEvents) { marker.widgetNode.setAttribute("cm-ignore-events", "true") } + if (options.insertLeft) { marker.widgetNode.insertLeft = true } + } + if (marker.collapsed) { + if (conflictingCollapsedRange(doc, from.line, from, to, marker) || + from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) + { throw new Error("Inserting collapsed marker partially overlapping an existing one") } + seeCollapsedSpans() + } + + if (marker.addToHistory) + { addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN) } + + var curLine = from.line, cm = doc.cm, updateMaxLine + doc.iter(curLine, to.line + 1, function (line) { + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) + { updateMaxLine = true } + if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0) } + addMarkedSpan(line, new MarkedSpan(marker, + curLine == from.line ? from.ch : null, + curLine == to.line ? to.ch : null)) + ++curLine + }) + // lineIsHidden depends on the presence of the spans, so needs a second pass + if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) { + if (lineIsHidden(doc, line)) { updateLineHeight(line, 0) } + }) } + + if (marker.clearOnEnter) { on(marker, "beforeCursorEnter", function () { return marker.clear(); }) } + + if (marker.readOnly) { + seeReadOnlySpans() + if (doc.history.done.length || doc.history.undone.length) + { doc.clearHistory() } + } + if (marker.collapsed) { + marker.id = ++nextMarkerId + marker.atomic = true + } + if (cm) { + // Sync editor state + if (updateMaxLine) { cm.curOp.updateMaxLine = true } + if (marker.collapsed) + { regChange(cm, from.line, to.line + 1) } + else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css) + { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, "text") } } + if (marker.atomic) { reCheckSelection(cm.doc) } + signalLater(cm, "markerAdded", cm, marker) + } + return marker +} + +// SHARED TEXTMARKERS + +// A shared marker spans multiple linked documents. It is +// implemented as a meta-marker-object controlling multiple normal +// markers. +var SharedTextMarker = function(markers, primary) { + var this$1 = this; + + this.markers = markers + this.primary = primary + for (var i = 0; i < markers.length; ++i) + { markers[i].parent = this$1 } +}; + +SharedTextMarker.prototype.clear = function () { + var this$1 = this; + + if (this.explicitlyCleared) { return } + this.explicitlyCleared = true + for (var i = 0; i < this.markers.length; ++i) + { this$1.markers[i].clear() } + signalLater(this, "clear") +}; + +SharedTextMarker.prototype.find = function (side, lineObj) { + return this.primary.find(side, lineObj) +}; +eventMixin(SharedTextMarker) + +function markTextShared(doc, from, to, options, type) { + options = copyObj(options) + options.shared = false + var markers = [markText(doc, from, to, options, type)], primary = markers[0] + var widget = options.widgetNode + linkedDocs(doc, function (doc) { + if (widget) { options.widgetNode = widget.cloneNode(true) } + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)) + for (var i = 0; i < doc.linked.length; ++i) + { if (doc.linked[i].isParent) { return } } + primary = lst(markers) + }) + return new SharedTextMarker(markers, primary) +} + +function findSharedMarkers(doc) { + return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; }) +} + +function copySharedMarkers(doc, markers) { + for (var i = 0; i < markers.length; i++) { + var marker = markers[i], pos = marker.find() + var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to) + if (cmp(mFrom, mTo)) { + var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type) + marker.markers.push(subMark) + subMark.parent = marker + } + } +} + +function detachSharedMarkers(markers) { + var loop = function ( i ) { + var marker = markers[i], linked = [marker.primary.doc] + linkedDocs(marker.primary.doc, function (d) { return linked.push(d); }) + for (var j = 0; j < marker.markers.length; j++) { + var subMarker = marker.markers[j] + if (indexOf(linked, subMarker.doc) == -1) { + subMarker.parent = null + marker.markers.splice(j--, 1) + } + } + }; + + for (var i = 0; i < markers.length; i++) loop( i ); +} + +var nextDocId = 0 +var Doc = function(text, mode, firstLine, lineSep, direction) { + if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) } + if (firstLine == null) { firstLine = 0 } + + BranchChunk.call(this, [new LeafChunk([new Line("", null)])]) + this.first = firstLine + this.scrollTop = this.scrollLeft = 0 + this.cantEdit = false + this.cleanGeneration = 1 + this.modeFrontier = this.highlightFrontier = firstLine + var start = Pos(firstLine, 0) + this.sel = simpleSelection(start) + this.history = new History(null) + this.id = ++nextDocId + this.modeOption = mode + this.lineSep = lineSep + this.direction = (direction == "rtl") ? "rtl" : "ltr" + this.extend = false + + if (typeof text == "string") { text = this.splitLines(text) } + updateDoc(this, {from: start, to: start, text: text}) + setSelection(this, simpleSelection(start), sel_dontScroll) +} + +Doc.prototype = createObj(BranchChunk.prototype, { + constructor: Doc, + // Iterate over the document. Supports two forms -- with only one + // argument, it calls that for each line in the document. With + // three, it iterates over the range given by the first two (with + // the second being non-inclusive). + iter: function(from, to, op) { + if (op) { this.iterN(from - this.first, to - from, op) } + else { this.iterN(this.first, this.first + this.size, from) } + }, + + // Non-public interface for adding and removing lines. + insert: function(at, lines) { + var height = 0 + for (var i = 0; i < lines.length; ++i) { height += lines[i].height } + this.insertInner(at - this.first, lines, height) + }, + remove: function(at, n) { this.removeInner(at - this.first, n) }, + + // From here, the methods are part of the public interface. Most + // are also available from CodeMirror (editor) instances. + + getValue: function(lineSep) { + var lines = getLines(this, this.first, this.first + this.size) + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) + }, + setValue: docMethodOp(function(code) { + var top = Pos(this.first, 0), last = this.first + this.size - 1 + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: this.splitLines(code), origin: "setValue", full: true}, true) + if (this.cm) { scrollToCoords(this.cm, 0, 0) } + setSelection(this, simpleSelection(top), sel_dontScroll) + }), + replaceRange: function(code, from, to, origin) { + from = clipPos(this, from) + to = to ? clipPos(this, to) : from + replaceRange(this, code, from, to, origin) + }, + getRange: function(from, to, lineSep) { + var lines = getBetween(this, clipPos(this, from), clipPos(this, to)) + if (lineSep === false) { return lines } + return lines.join(lineSep || this.lineSeparator()) + }, + + getLine: function(line) {var l = this.getLineHandle(line); return l && l.text}, + + getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }}, + getLineNumber: function(line) {return lineNo(line)}, + + getLineHandleVisualStart: function(line) { + if (typeof line == "number") { line = getLine(this, line) } + return visualLine(line) + }, + + lineCount: function() {return this.size}, + firstLine: function() {return this.first}, + lastLine: function() {return this.first + this.size - 1}, + + clipPos: function(pos) {return clipPos(this, pos)}, + + getCursor: function(start) { + var range = this.sel.primary(), pos + if (start == null || start == "head") { pos = range.head } + else if (start == "anchor") { pos = range.anchor } + else if (start == "end" || start == "to" || start === false) { pos = range.to() } + else { pos = range.from() } + return pos + }, + listSelections: function() { return this.sel.ranges }, + somethingSelected: function() {return this.sel.somethingSelected()}, + + setCursor: docMethodOp(function(line, ch, options) { + setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options) + }), + setSelection: docMethodOp(function(anchor, head, options) { + setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options) + }), + extendSelection: docMethodOp(function(head, other, options) { + extendSelection(this, clipPos(this, head), other && clipPos(this, other), options) + }), + extendSelections: docMethodOp(function(heads, options) { + extendSelections(this, clipPosArray(this, heads), options) + }), + extendSelectionsBy: docMethodOp(function(f, options) { + var heads = map(this.sel.ranges, f) + extendSelections(this, clipPosArray(this, heads), options) + }), + setSelections: docMethodOp(function(ranges, primary, options) { + var this$1 = this; + + if (!ranges.length) { return } + var out = [] + for (var i = 0; i < ranges.length; i++) + { out[i] = new Range(clipPos(this$1, ranges[i].anchor), + clipPos(this$1, ranges[i].head)) } + if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex) } + setSelection(this, normalizeSelection(out, primary), options) + }), + addSelection: docMethodOp(function(anchor, head, options) { + var ranges = this.sel.ranges.slice(0) + ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))) + setSelection(this, normalizeSelection(ranges, ranges.length - 1), options) + }), + + getSelection: function(lineSep) { + var this$1 = this; + + var ranges = this.sel.ranges, lines + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()) + lines = lines ? lines.concat(sel) : sel + } + if (lineSep === false) { return lines } + else { return lines.join(lineSep || this.lineSeparator()) } + }, + getSelections: function(lineSep) { + var this$1 = this; + + var parts = [], ranges = this.sel.ranges + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this$1, ranges[i].from(), ranges[i].to()) + if (lineSep !== false) { sel = sel.join(lineSep || this$1.lineSeparator()) } + parts[i] = sel + } + return parts + }, + replaceSelection: function(code, collapse, origin) { + var dup = [] + for (var i = 0; i < this.sel.ranges.length; i++) + { dup[i] = code } + this.replaceSelections(dup, collapse, origin || "+input") + }, + replaceSelections: docMethodOp(function(code, collapse, origin) { + var this$1 = this; + + var changes = [], sel = this.sel + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i] + changes[i] = {from: range.from(), to: range.to(), text: this$1.splitLines(code[i]), origin: origin} + } + var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse) + for (var i$1 = changes.length - 1; i$1 >= 0; i$1--) + { makeChange(this$1, changes[i$1]) } + if (newSel) { setSelectionReplaceHistory(this, newSel) } + else if (this.cm) { ensureCursorVisible(this.cm) } + }), + undo: docMethodOp(function() {makeChangeFromHistory(this, "undo")}), + redo: docMethodOp(function() {makeChangeFromHistory(this, "redo")}), + undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true)}), + redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true)}), + + setExtending: function(val) {this.extend = val}, + getExtending: function() {return this.extend}, + + historySize: function() { + var hist = this.history, done = 0, undone = 0 + for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done } } + for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone } } + return {undo: done, redo: undone} + }, + clearHistory: function() {this.history = new History(this.history.maxGeneration)}, + + markClean: function() { + this.cleanGeneration = this.changeGeneration(true) + }, + changeGeneration: function(forceSplit) { + if (forceSplit) + { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null } + return this.history.generation + }, + isClean: function (gen) { + return this.history.generation == (gen || this.cleanGeneration) + }, + + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)} + }, + setHistory: function(histData) { + var hist = this.history = new History(this.history.maxGeneration) + hist.done = copyHistoryArray(histData.done.slice(0), null, true) + hist.undone = copyHistoryArray(histData.undone.slice(0), null, true) + }, + + setGutterMarker: docMethodOp(function(line, gutterID, value) { + return changeLine(this, line, "gutter", function (line) { + var markers = line.gutterMarkers || (line.gutterMarkers = {}) + markers[gutterID] = value + if (!value && isEmpty(markers)) { line.gutterMarkers = null } + return true + }) + }), + + clearGutter: docMethodOp(function(gutterID) { + var this$1 = this; + + this.iter(function (line) { + if (line.gutterMarkers && line.gutterMarkers[gutterID]) { + changeLine(this$1, line, "gutter", function () { + line.gutterMarkers[gutterID] = null + if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null } + return true + }) + } + }) + }), + + lineInfo: function(line) { + var n + if (typeof line == "number") { + if (!isLine(this, line)) { return null } + n = line + line = getLine(this, line) + if (!line) { return null } + } else { + n = lineNo(line) + if (n == null) { return null } + } + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets} + }, + + addLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass" + if (!line[prop]) { line[prop] = cls } + else if (classTest(cls).test(line[prop])) { return false } + else { line[prop] += " " + cls } + return true + }) + }), + removeLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function (line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass" + var cur = line[prop] + if (!cur) { return false } + else if (cls == null) { line[prop] = null } + else { + var found = cur.match(classTest(cls)) + if (!found) { return false } + var end = found.index + found[0].length + line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null + } + return true + }) + }), + + addLineWidget: docMethodOp(function(handle, node, options) { + return addLineWidget(this, handle, node, options) + }), + removeLineWidget: function(widget) { widget.clear() }, + + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range") + }, + setBookmark: function(pos, options) { + var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft, + clearWhenEmpty: false, shared: options && options.shared, + handleMouseEvents: options && options.handleMouseEvents} + pos = clipPos(this, pos) + return markText(this, pos, pos, realOpts, "bookmark") + }, + findMarksAt: function(pos) { + pos = clipPos(this, pos) + var markers = [], spans = getLine(this, pos.line).markedSpans + if (spans) { for (var i = 0; i < spans.length; ++i) { + var span = spans[i] + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + { markers.push(span.marker.parent || span.marker) } + } } + return markers + }, + findMarks: function(from, to, filter) { + from = clipPos(this, from); to = clipPos(this, to) + var found = [], lineNo = from.line + this.iter(from.line, to.line + 1, function (line) { + var spans = line.markedSpans + if (spans) { for (var i = 0; i < spans.length; i++) { + var span = spans[i] + if (!(span.to != null && lineNo == from.line && from.ch >= span.to || + span.from == null && lineNo != from.line || + span.from != null && lineNo == to.line && span.from >= to.ch) && + (!filter || filter(span.marker))) + { found.push(span.marker.parent || span.marker) } + } } + ++lineNo + }) + return found + }, + getAllMarks: function() { + var markers = [] + this.iter(function (line) { + var sps = line.markedSpans + if (sps) { for (var i = 0; i < sps.length; ++i) + { if (sps[i].from != null) { markers.push(sps[i].marker) } } } + }) + return markers + }, + + posFromIndex: function(off) { + var ch, lineNo = this.first, sepSize = this.lineSeparator().length + this.iter(function (line) { + var sz = line.text.length + sepSize + if (sz > off) { ch = off; return true } + off -= sz + ++lineNo + }) + return clipPos(this, Pos(lineNo, ch)) + }, + indexFromPos: function (coords) { + coords = clipPos(this, coords) + var index = coords.ch + if (coords.line < this.first || coords.ch < 0) { return 0 } + var sepSize = this.lineSeparator().length + this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value + index += line.text.length + sepSize + }) + return index + }, + + copy: function(copyHistory) { + var doc = new Doc(getLines(this, this.first, this.first + this.size), + this.modeOption, this.first, this.lineSep, this.direction) + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft + doc.sel = this.sel + doc.extend = false + if (copyHistory) { + doc.history.undoDepth = this.history.undoDepth + doc.setHistory(this.getHistory()) + } + return doc + }, + + linkedDoc: function(options) { + if (!options) { options = {} } + var from = this.first, to = this.first + this.size + if (options.from != null && options.from > from) { from = options.from } + if (options.to != null && options.to < to) { to = options.to } + var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction) + if (options.sharedHist) { copy.history = this.history + ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}) + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}] + copySharedMarkers(copy, findSharedMarkers(this)) + return copy + }, + unlinkDoc: function(other) { + var this$1 = this; + + if (other instanceof CodeMirror) { other = other.doc } + if (this.linked) { for (var i = 0; i < this.linked.length; ++i) { + var link = this$1.linked[i] + if (link.doc != other) { continue } + this$1.linked.splice(i, 1) + other.unlinkDoc(this$1) + detachSharedMarkers(findSharedMarkers(this$1)) + break + } } + // If the histories were shared, split them again + if (other.history == this.history) { + var splitIds = [other.id] + linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true) + other.history = new History(null) + other.history.done = copyHistoryArray(this.history.done, splitIds) + other.history.undone = copyHistoryArray(this.history.undone, splitIds) + } + }, + iterLinkedDocs: function(f) {linkedDocs(this, f)}, + + getMode: function() {return this.mode}, + getEditor: function() {return this.cm}, + + splitLines: function(str) { + if (this.lineSep) { return str.split(this.lineSep) } + return splitLinesAuto(str) + }, + lineSeparator: function() { return this.lineSep || "\n" }, + + setDirection: docMethodOp(function (dir) { + if (dir != "rtl") { dir = "ltr" } + if (dir == this.direction) { return } + this.direction = dir + this.iter(function (line) { return line.order = null; }) + if (this.cm) { directionChanged(this.cm) } + }) +}) + +// Public alias. +Doc.prototype.eachLine = Doc.prototype.iter + +// Kludge to work around strange IE behavior where it'll sometimes +// re-fire a series of drag-related events right after the drop (#1551) +var lastDrop = 0 + +function onDrop(e) { + var cm = this + clearDragCursor(cm) + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) + { return } + e_preventDefault(e) + if (ie) { lastDrop = +new Date } + var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files + if (!pos || cm.isReadOnly()) { return } + // Might be a file drop, in which case we simply extract the text + // and insert it. + if (files && files.length && window.FileReader && window.File) { + var n = files.length, text = Array(n), read = 0 + var loadFile = function (file, i) { + if (cm.options.allowDropFileTypes && + indexOf(cm.options.allowDropFileTypes, file.type) == -1) + { return } + + var reader = new FileReader + reader.onload = operation(cm, function () { + var content = reader.result + if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) { content = "" } + text[i] = content + if (++read == n) { + pos = clipPos(cm.doc, pos) + var change = {from: pos, to: pos, + text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())), + origin: "paste"} + makeChange(cm.doc, change) + setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))) + } + }) + reader.readAsText(file) + } + for (var i = 0; i < n; ++i) { loadFile(files[i], i) } + } else { // Normal drop + // Don't do a replace if the drop happened inside of the selected text. + if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { + cm.state.draggingText(e) + // Ensure the editor is re-focused + setTimeout(function () { return cm.display.input.focus(); }, 20) + return + } + try { + var text$1 = e.dataTransfer.getData("Text") + if (text$1) { + var selected + if (cm.state.draggingText && !cm.state.draggingText.copy) + { selected = cm.listSelections() } + setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)) + if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1) + { replaceRange(cm.doc, "", selected[i$1].anchor, selected[i$1].head, "drag") } } + cm.replaceSelection(text$1, "around", "paste") + cm.display.input.focus() + } + } + catch(e){} + } +} + +function onDragStart(cm, e) { + if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return } + + e.dataTransfer.setData("Text", cm.getSelection()) + e.dataTransfer.effectAllowed = "copyMove" + + // Use dummy image instead of default browsers image. + // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. + if (e.dataTransfer.setDragImage && !safari) { + var img = elt("img", null, null, "position: fixed; left: 0; top: 0;") + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" + if (presto) { + img.width = img.height = 1 + cm.display.wrapper.appendChild(img) + // Force a relayout, or Opera won't use our image for some obscure reason + img._top = img.offsetTop + } + e.dataTransfer.setDragImage(img, 0, 0) + if (presto) { img.parentNode.removeChild(img) } + } +} + +function onDragOver(cm, e) { + var pos = posFromMouse(cm, e) + if (!pos) { return } + var frag = document.createDocumentFragment() + drawSelectionCursor(cm, pos, frag) + if (!cm.display.dragCursor) { + cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors") + cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv) + } + removeChildrenAndAdd(cm.display.dragCursor, frag) +} + +function clearDragCursor(cm) { + if (cm.display.dragCursor) { + cm.display.lineSpace.removeChild(cm.display.dragCursor) + cm.display.dragCursor = null + } +} + +// These must be handled carefully, because naively registering a +// handler for each editor will cause the editors to never be +// garbage collected. + +function forEachCodeMirror(f) { + if (!document.getElementsByClassName) { return } + var byClass = document.getElementsByClassName("CodeMirror") + for (var i = 0; i < byClass.length; i++) { + var cm = byClass[i].CodeMirror + if (cm) { f(cm) } + } +} + +var globalsRegistered = false +function ensureGlobalHandlers() { + if (globalsRegistered) { return } + registerGlobalHandlers() + globalsRegistered = true +} +function registerGlobalHandlers() { + // When the window resizes, we need to refresh active editors. + var resizeTimer + on(window, "resize", function () { + if (resizeTimer == null) { resizeTimer = setTimeout(function () { + resizeTimer = null + forEachCodeMirror(onResize) + }, 100) } + }) + // When the window loses focus, we want to show the editor as blurred + on(window, "blur", function () { return forEachCodeMirror(onBlur); }) +} +// Called when the window resizes +function onResize(cm) { + var d = cm.display + if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth) + { return } + // Might be a text scaling operation, clear size caches. + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null + d.scrollbarsClipped = false + cm.setSize() +} + +var keyNames = { + 3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", + 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 127: "Delete", + 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", + 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" +} + +// Number keys +for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i) } +// Alphabetic keys +for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1) } +// Function keys +for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = "F" + i$2 } + +var keyMap = {} + +keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", + "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", + "Esc": "singleSelection" +} +// Note that the save and find-related commands aren't defined by +// default. User code or addons can define them. Unknown commands +// are simply ignored. +keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", + "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", + fallthrough: "basic" +} +// Very basic readline/emacs-style bindings, which are standard on Mac. +keyMap.emacsy = { + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", + "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars", + "Ctrl-O": "openLine" +} +keyMap.macDefault = { + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", + "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", + "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", + "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", + fallthrough: ["basic", "emacsy"] +} +keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault + +// KEYMAP DISPATCH + +function normalizeKeyName(name) { + var parts = name.split(/-(?!$)/) + name = parts[parts.length - 1] + var alt, ctrl, shift, cmd + for (var i = 0; i < parts.length - 1; i++) { + var mod = parts[i] + if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true } + else if (/^a(lt)?$/i.test(mod)) { alt = true } + else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true } + else if (/^s(hift)?$/i.test(mod)) { shift = true } + else { throw new Error("Unrecognized modifier name: " + mod) } + } + if (alt) { name = "Alt-" + name } + if (ctrl) { name = "Ctrl-" + name } + if (cmd) { name = "Cmd-" + name } + if (shift) { name = "Shift-" + name } + return name +} + +// This is a kludge to keep keymaps mostly working as raw objects +// (backwards compatibility) while at the same time support features +// like normalization and multi-stroke key bindings. It compiles a +// new normalized keymap, and then updates the old object to reflect +// this. +function normalizeKeyMap(keymap) { + var copy = {} + for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) { + var value = keymap[keyname] + if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue } + if (value == "...") { delete keymap[keyname]; continue } + + var keys = map(keyname.split(" "), normalizeKeyName) + for (var i = 0; i < keys.length; i++) { + var val = (void 0), name = (void 0) + if (i == keys.length - 1) { + name = keys.join(" ") + val = value + } else { + name = keys.slice(0, i + 1).join(" ") + val = "..." + } + var prev = copy[name] + if (!prev) { copy[name] = val } + else if (prev != val) { throw new Error("Inconsistent bindings for " + name) } + } + delete keymap[keyname] + } } + for (var prop in copy) { keymap[prop] = copy[prop] } + return keymap +} + +function lookupKey(key, map, handle, context) { + map = getKeyMap(map) + var found = map.call ? map.call(key, context) : map[key] + if (found === false) { return "nothing" } + if (found === "...") { return "multi" } + if (found != null && handle(found)) { return "handled" } + + if (map.fallthrough) { + if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") + { return lookupKey(key, map.fallthrough, handle, context) } + for (var i = 0; i < map.fallthrough.length; i++) { + var result = lookupKey(key, map.fallthrough[i], handle, context) + if (result) { return result } + } + } +} + +// Modifier key presses don't count as 'real' key presses for the +// purpose of keymap fallthrough. +function isModifierKey(value) { + var name = typeof value == "string" ? value : keyNames[value.keyCode] + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod" +} + +function addModifierNames(name, event, noShift) { + var base = name + if (event.altKey && base != "Alt") { name = "Alt-" + name } + if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") { name = "Ctrl-" + name } + if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") { name = "Cmd-" + name } + if (!noShift && event.shiftKey && base != "Shift") { name = "Shift-" + name } + return name +} + +// Look up the name of a key as indicated by an event object. +function keyName(event, noShift) { + if (presto && event.keyCode == 34 && event["char"]) { return false } + var name = keyNames[event.keyCode] + if (name == null || event.altGraphKey) { return false } + return addModifierNames(name, event, noShift) +} + +function getKeyMap(val) { + return typeof val == "string" ? keyMap[val] : val +} + +// Helper for deleting text near the selection(s), used to implement +// backspace, delete, and similar functionality. +function deleteNearSelection(cm, compute) { + var ranges = cm.doc.sel.ranges, kill = [] + // Build up a set of ranges to kill first, merging overlapping + // ranges. + for (var i = 0; i < ranges.length; i++) { + var toKill = compute(ranges[i]) + while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { + var replaced = kill.pop() + if (cmp(replaced.from, toKill.from) < 0) { + toKill.from = replaced.from + break + } + } + kill.push(toKill) + } + // Next, remove those actual ranges. + runInOp(cm, function () { + for (var i = kill.length - 1; i >= 0; i--) + { replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete") } + ensureCursorVisible(cm) + }) +} + +function moveCharLogically(line, ch, dir) { + var target = skipExtendingChars(line.text, ch + dir, dir) + return target < 0 || target > line.text.length ? null : target +} + +function moveLogically(line, start, dir) { + var ch = moveCharLogically(line, start.ch, dir) + return ch == null ? null : new Pos(start.line, ch, dir < 0 ? "after" : "before") +} + +function endOfLine(visually, cm, lineObj, lineNo, dir) { + if (visually) { + var order = getOrder(lineObj, cm.doc.direction) + if (order) { + var part = dir < 0 ? lst(order) : order[0] + var moveInStorageOrder = (dir < 0) == (part.level == 1) + var sticky = moveInStorageOrder ? "after" : "before" + var ch + // With a wrapped rtl chunk (possibly spanning multiple bidi parts), + // it could be that the last bidi part is not on the last visual line, + // since visual lines contain content order-consecutive chunks. + // Thus, in rtl, we are looking for the first (content-order) character + // in the rtl chunk that is on the last line (that is, the same line + // as the last (content-order) character). + if (part.level > 0) { + var prep = prepareMeasureForLine(cm, lineObj) + ch = dir < 0 ? lineObj.text.length - 1 : 0 + var targetTop = measureCharPrepared(cm, prep, ch).top + ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch) + if (sticky == "before") { ch = moveCharLogically(lineObj, ch, 1) } + } else { ch = dir < 0 ? part.to : part.from } + return new Pos(lineNo, ch, sticky) + } + } + return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? "before" : "after") +} + +function moveVisually(cm, line, start, dir) { + var bidi = getOrder(line, cm.doc.direction) + if (!bidi) { return moveLogically(line, start, dir) } + if (start.ch >= line.text.length) { + start.ch = line.text.length + start.sticky = "before" + } else if (start.ch <= 0) { + start.ch = 0 + start.sticky = "after" + } + var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos] + if (cm.doc.direction == "ltr" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) { + // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines, + // nothing interesting happens. + return moveLogically(line, start, dir) + } + + var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); } + var prep + var getWrappedLineExtent = function (ch) { + if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} } + prep = prep || prepareMeasureForLine(cm, line) + return wrappedLineExtentChar(cm, line, prep, ch) + } + var wrappedLineExtent = getWrappedLineExtent(start.sticky == "before" ? mv(start, -1) : start.ch) + + if (cm.doc.direction == "rtl" || part.level == 1) { + var moveInStorageOrder = (part.level == 1) == (dir < 0) + var ch = mv(start, moveInStorageOrder ? 1 : -1) + if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) { + // Case 2: We move within an rtl part or in an rtl editor on the same visual line + var sticky = moveInStorageOrder ? "before" : "after" + return new Pos(start.line, ch, sticky) + } + } + + // Case 3: Could not move within this bidi part in this visual line, so leave + // the current bidi part + + var searchInVisualLine = function (partPos, dir, wrappedLineExtent) { + var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder + ? new Pos(start.line, mv(ch, 1), "before") + : new Pos(start.line, ch, "after"); } + + for (; partPos >= 0 && partPos < bidi.length; partPos += dir) { + var part = bidi[partPos] + var moveInStorageOrder = (dir > 0) == (part.level != 1) + var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1) + if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) } + ch = moveInStorageOrder ? part.from : mv(part.to, -1) + if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) } + } + } + + // Case 3a: Look for other bidi parts on the same visual line + var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent) + if (res) { return res } + + // Case 3b: Look for other bidi parts on the next visual line + var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1) + if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) { + res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh)) + if (res) { return res } + } + + // Case 4: Nowhere to move + return null +} + +// Commands are parameter-less actions that can be performed on an +// editor, mostly used for keybindings. +var commands = { + selectAll: selectAll, + singleSelection: function (cm) { return cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); }, + killLine: function (cm) { return deleteNearSelection(cm, function (range) { + if (range.empty()) { + var len = getLine(cm.doc, range.head.line).text.length + if (range.head.ch == len && range.head.line < cm.lastLine()) + { return {from: range.head, to: Pos(range.head.line + 1, 0)} } + else + { return {from: range.head, to: Pos(range.head.line, len)} } + } else { + return {from: range.from(), to: range.to()} + } + }); }, + deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), + to: clipPos(cm.doc, Pos(range.to().line + 1, 0)) + }); }); }, + delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({ + from: Pos(range.from().line, 0), to: range.from() + }); }); }, + delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5 + var leftPos = cm.coordsChar({left: 0, top: top}, "div") + return {from: leftPos, to: range.from()} + }); }, + delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) { + var top = cm.charCoords(range.head, "div").top + 5 + var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + return {from: range.from(), to: rightPos } + }); }, + undo: function (cm) { return cm.undo(); }, + redo: function (cm) { return cm.redo(); }, + undoSelection: function (cm) { return cm.undoSelection(); }, + redoSelection: function (cm) { return cm.redoSelection(); }, + goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); }, + goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); }, + goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); }, + {origin: "+move", bias: 1} + ); }, + goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); }, + {origin: "+move", bias: 1} + ); }, + goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); }, + {origin: "+move", bias: -1} + ); }, + goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5 + return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + }, sel_move); }, + goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5 + return cm.coordsChar({left: 0, top: top}, "div") + }, sel_move); }, + goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) { + var top = cm.cursorCoords(range.head, "div").top + 5 + var pos = cm.coordsChar({left: 0, top: top}, "div") + if (pos.ch < cm.getLine(pos.line).search(/\S/)) { return lineStartSmart(cm, range.head) } + return pos + }, sel_move); }, + goLineUp: function (cm) { return cm.moveV(-1, "line"); }, + goLineDown: function (cm) { return cm.moveV(1, "line"); }, + goPageUp: function (cm) { return cm.moveV(-1, "page"); }, + goPageDown: function (cm) { return cm.moveV(1, "page"); }, + goCharLeft: function (cm) { return cm.moveH(-1, "char"); }, + goCharRight: function (cm) { return cm.moveH(1, "char"); }, + goColumnLeft: function (cm) { return cm.moveH(-1, "column"); }, + goColumnRight: function (cm) { return cm.moveH(1, "column"); }, + goWordLeft: function (cm) { return cm.moveH(-1, "word"); }, + goGroupRight: function (cm) { return cm.moveH(1, "group"); }, + goGroupLeft: function (cm) { return cm.moveH(-1, "group"); }, + goWordRight: function (cm) { return cm.moveH(1, "word"); }, + delCharBefore: function (cm) { return cm.deleteH(-1, "char"); }, + delCharAfter: function (cm) { return cm.deleteH(1, "char"); }, + delWordBefore: function (cm) { return cm.deleteH(-1, "word"); }, + delWordAfter: function (cm) { return cm.deleteH(1, "word"); }, + delGroupBefore: function (cm) { return cm.deleteH(-1, "group"); }, + delGroupAfter: function (cm) { return cm.deleteH(1, "group"); }, + indentAuto: function (cm) { return cm.indentSelection("smart"); }, + indentMore: function (cm) { return cm.indentSelection("add"); }, + indentLess: function (cm) { return cm.indentSelection("subtract"); }, + insertTab: function (cm) { return cm.replaceSelection("\t"); }, + insertSoftTab: function (cm) { + var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize + for (var i = 0; i < ranges.length; i++) { + var pos = ranges[i].from() + var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize) + spaces.push(spaceStr(tabSize - col % tabSize)) + } + cm.replaceSelections(spaces) + }, + defaultTab: function (cm) { + if (cm.somethingSelected()) { cm.indentSelection("add") } + else { cm.execCommand("insertTab") } + }, + // Swap the two chars left and right of each selection's head. + // Move cursor behind the two swapped characters afterwards. + // + // Doesn't consider line feeds a character. + // Doesn't scan more than one line above to find a character. + // Doesn't do anything on an empty line. + // Doesn't do anything with non-empty selections. + transposeChars: function (cm) { return runInOp(cm, function () { + var ranges = cm.listSelections(), newSel = [] + for (var i = 0; i < ranges.length; i++) { + if (!ranges[i].empty()) { continue } + var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text + if (line) { + if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1) } + if (cur.ch > 0) { + cur = new Pos(cur.line, cur.ch + 1) + cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), + Pos(cur.line, cur.ch - 2), cur, "+transpose") + } else if (cur.line > cm.doc.first) { + var prev = getLine(cm.doc, cur.line - 1).text + if (prev) { + cur = new Pos(cur.line, 1) + cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + + prev.charAt(prev.length - 1), + Pos(cur.line - 1, prev.length - 1), cur, "+transpose") + } + } + } + newSel.push(new Range(cur, cur)) + } + cm.setSelections(newSel) + }); }, + newlineAndIndent: function (cm) { return runInOp(cm, function () { + var sels = cm.listSelections() + for (var i = sels.length - 1; i >= 0; i--) + { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, "+input") } + sels = cm.listSelections() + for (var i$1 = 0; i$1 < sels.length; i$1++) + { cm.indentLine(sels[i$1].from().line, null, true) } + ensureCursorVisible(cm) + }); }, + openLine: function (cm) { return cm.replaceSelection("\n", "start"); }, + toggleOverwrite: function (cm) { return cm.toggleOverwrite(); } +} + + +function lineStart(cm, lineN) { + var line = getLine(cm.doc, lineN) + var visual = visualLine(line) + if (visual != line) { lineN = lineNo(visual) } + return endOfLine(true, cm, visual, lineN, 1) +} +function lineEnd(cm, lineN) { + var line = getLine(cm.doc, lineN) + var visual = visualLineEnd(line) + if (visual != line) { lineN = lineNo(visual) } + return endOfLine(true, cm, line, lineN, -1) +} +function lineStartSmart(cm, pos) { + var start = lineStart(cm, pos.line) + var line = getLine(cm.doc, start.line) + var order = getOrder(line, cm.doc.direction) + if (!order || order[0].level == 0) { + var firstNonWS = Math.max(0, line.text.search(/\S/)) + var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch + return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky) + } + return start +} + +// Run a handler that was bound to a key. +function doHandleBinding(cm, bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound] + if (!bound) { return false } + } + // Ensure previous input has been read, so that the handler sees a + // consistent view of the document + cm.display.input.ensurePolled() + var prevShift = cm.display.shift, done = false + try { + if (cm.isReadOnly()) { cm.state.suppressEdits = true } + if (dropShift) { cm.display.shift = false } + done = bound(cm) != Pass + } finally { + cm.display.shift = prevShift + cm.state.suppressEdits = false + } + return done +} + +function lookupKeyForEditor(cm, name, handle) { + for (var i = 0; i < cm.state.keyMaps.length; i++) { + var result = lookupKey(name, cm.state.keyMaps[i], handle, cm) + if (result) { return result } + } + return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) + || lookupKey(name, cm.options.keyMap, handle, cm) +} + +// Note that, despite the name, this function is also used to check +// for bound mouse clicks. + +var stopSeq = new Delayed +function dispatchKey(cm, name, e, handle) { + var seq = cm.state.keySeq + if (seq) { + if (isModifierKey(name)) { return "handled" } + stopSeq.set(50, function () { + if (cm.state.keySeq == seq) { + cm.state.keySeq = null + cm.display.input.reset() + } + }) + name = seq + " " + name + } + var result = lookupKeyForEditor(cm, name, handle) + + if (result == "multi") + { cm.state.keySeq = name } + if (result == "handled") + { signalLater(cm, "keyHandled", cm, name, e) } + + if (result == "handled" || result == "multi") { + e_preventDefault(e) + restartBlink(cm) + } + + if (seq && !result && /\'$/.test(name)) { + e_preventDefault(e) + return true + } + return !!result +} + +// Handle a key from the keydown event. +function handleKeyBinding(cm, e) { + var name = keyName(e, true) + if (!name) { return false } + + if (e.shiftKey && !cm.state.keySeq) { + // First try to resolve full name (including 'Shift-'). Failing + // that, see if there is a cursor-motion command (starting with + // 'go') bound to the keyname without 'Shift-'. + return dispatchKey(cm, "Shift-" + name, e, function (b) { return doHandleBinding(cm, b, true); }) + || dispatchKey(cm, name, e, function (b) { + if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) + { return doHandleBinding(cm, b) } + }) + } else { + return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); }) + } +} + +// Handle a key from the keypress event +function handleCharBinding(cm, e, ch) { + return dispatchKey(cm, "'" + ch + "'", e, function (b) { return doHandleBinding(cm, b, true); }) +} + +var lastStoppedKey = null +function onKeyDown(e) { + var cm = this + cm.curOp.focus = activeElt() + if (signalDOMEvent(cm, e)) { return } + // IE does strange things with escape. + if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false } + var code = e.keyCode + cm.display.shift = code == 16 || e.shiftKey + var handled = handleKeyBinding(cm, e) + if (presto) { + lastStoppedKey = handled ? code : null + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + { cm.replaceSelection("", null, "cut") } + } + + // Turn mouse into crosshair when Alt is held on Mac. + if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) + { showCrossHair(cm) } +} + +function showCrossHair(cm) { + var lineDiv = cm.display.lineDiv + addClass(lineDiv, "CodeMirror-crosshair") + + function up(e) { + if (e.keyCode == 18 || !e.altKey) { + rmClass(lineDiv, "CodeMirror-crosshair") + off(document, "keyup", up) + off(document, "mouseover", up) + } + } + on(document, "keyup", up) + on(document, "mouseover", up) +} + +function onKeyUp(e) { + if (e.keyCode == 16) { this.doc.sel.shift = false } + signalDOMEvent(this, e) +} + +function onKeyPress(e) { + var cm = this + if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return } + var keyCode = e.keyCode, charCode = e.charCode + if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return} + if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return } + var ch = String.fromCharCode(charCode == null ? keyCode : charCode) + // Some browsers fire keypress events for backspace + if (ch == "\x08") { return } + if (handleCharBinding(cm, e, ch)) { return } + cm.display.input.onKeyPress(e) +} + +var DOUBLECLICK_DELAY = 400 + +var PastClick = function(time, pos, button) { + this.time = time + this.pos = pos + this.button = button +}; + +PastClick.prototype.compare = function (time, pos, button) { + return this.time + DOUBLECLICK_DELAY > time && + cmp(pos, this.pos) == 0 && button == this.button +}; + +var lastClick; +var lastDoubleClick; +function clickRepeat(pos, button) { + var now = +new Date + if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) { + lastClick = lastDoubleClick = null + return "triple" + } else if (lastClick && lastClick.compare(now, pos, button)) { + lastDoubleClick = new PastClick(now, pos, button) + lastClick = null + return "double" + } else { + lastClick = new PastClick(now, pos, button) + lastDoubleClick = null + return "single" + } +} + +// A mouse down can be a single click, double click, triple click, +// start of selection drag, start of text drag, new cursor +// (ctrl-click), rectangle drag (alt-drag), or xwin +// middle-click-paste. Or it might be a click on something we should +// not interfere with, such as a scrollbar or widget. +function onMouseDown(e) { + var cm = this, display = cm.display + if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return } + display.input.ensurePolled() + display.shift = e.shiftKey + + if (eventInWidget(display, e)) { + if (!webkit) { + // Briefly turn off draggability, to allow widgets to do + // normal dragging things. + display.scroller.draggable = false + setTimeout(function () { return display.scroller.draggable = true; }, 100) + } + return + } + if (clickInGutter(cm, e)) { return } + var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : "single" + window.focus() + + // #3261: make sure, that we're not starting a second selection + if (button == 1 && cm.state.selectingText) + { cm.state.selectingText(e) } + + if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return } + + if (button == 1) { + if (pos) { leftButtonDown(cm, pos, repeat, e) } + else if (e_target(e) == display.scroller) { e_preventDefault(e) } + } else if (button == 2) { + if (pos) { extendSelection(cm.doc, pos) } + setTimeout(function () { return display.input.focus(); }, 20) + } else if (button == 3) { + if (captureRightClick) { onContextMenu(cm, e) } + else { delayBlurEvent(cm) } + } +} + +function handleMappedButton(cm, button, pos, repeat, event) { + var name = "Click" + if (repeat == "double") { name = "Double" + name } + else if (repeat == "triple") { name = "Triple" + name } + name = (button == 1 ? "Left" : button == 2 ? "Middle" : "Right") + name + + return dispatchKey(cm, addModifierNames(name, event), event, function (bound) { + if (typeof bound == "string") { bound = commands[bound] } + if (!bound) { return false } + var done = false + try { + if (cm.isReadOnly()) { cm.state.suppressEdits = true } + done = bound(cm, pos) != Pass + } finally { + cm.state.suppressEdits = false + } + return done + }) +} + +function configureMouse(cm, repeat, event) { + var option = cm.getOption("configureMouse") + var value = option ? option(cm, repeat, event) : {} + if (value.unit == null) { + var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey + value.unit = rect ? "rectangle" : repeat == "single" ? "char" : repeat == "double" ? "word" : "line" + } + if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey } + if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey } + if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey) } + return value +} + +function leftButtonDown(cm, pos, repeat, event) { + if (ie) { setTimeout(bind(ensureFocus, cm), 0) } + else { cm.curOp.focus = activeElt() } + + var behavior = configureMouse(cm, repeat, event) + + var sel = cm.doc.sel, contained + if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && + repeat == "single" && (contained = sel.contains(pos)) > -1 && + (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && + (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) + { leftButtonStartDrag(cm, event, pos, behavior) } + else + { leftButtonSelect(cm, event, pos, behavior) } +} + +// Start a text drag. When it ends, see if any dragging actually +// happen, and treat as a click if it didn't. +function leftButtonStartDrag(cm, event, pos, behavior) { + var display = cm.display, moved = false + var dragEnd = operation(cm, function (e) { + if (webkit) { display.scroller.draggable = false } + cm.state.draggingText = false + off(document, "mouseup", dragEnd) + off(document, "mousemove", mouseMove) + off(display.scroller, "dragstart", dragStart) + off(display.scroller, "drop", dragEnd) + if (!moved) { + e_preventDefault(e) + if (!behavior.addNew) + { extendSelection(cm.doc, pos, null, null, behavior.extend) } + // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) + if (webkit || ie && ie_version == 9) + { setTimeout(function () {document.body.focus(); display.input.focus()}, 20) } + else + { display.input.focus() } + } + }) + var mouseMove = function(e2) { + moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10 + } + var dragStart = function () { return moved = true; } + // Let the drag handler handle this. + if (webkit) { display.scroller.draggable = true } + cm.state.draggingText = dragEnd + dragEnd.copy = !behavior.moveOnDrag + // IE's approach to draggable + if (display.scroller.dragDrop) { display.scroller.dragDrop() } + on(document, "mouseup", dragEnd) + on(document, "mousemove", mouseMove) + on(display.scroller, "dragstart", dragStart) + on(display.scroller, "drop", dragEnd) + + delayBlurEvent(cm) + setTimeout(function () { return display.input.focus(); }, 20) +} + +function rangeForUnit(cm, pos, unit) { + if (unit == "char") { return new Range(pos, pos) } + if (unit == "word") { return cm.findWordAt(pos) } + if (unit == "line") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) } + var result = unit(cm, pos) + return new Range(result.from, result.to) +} + +// Normal selection, as opposed to text dragging. +function leftButtonSelect(cm, event, start, behavior) { + var display = cm.display, doc = cm.doc + e_preventDefault(event) + + var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges + if (behavior.addNew && !behavior.extend) { + ourIndex = doc.sel.contains(start) + if (ourIndex > -1) + { ourRange = ranges[ourIndex] } + else + { ourRange = new Range(start, start) } + } else { + ourRange = doc.sel.primary() + ourIndex = doc.sel.primIndex + } + + if (behavior.unit == "rectangle") { + if (!behavior.addNew) { ourRange = new Range(start, start) } + start = posFromMouse(cm, event, true, true) + ourIndex = -1 + } else { + var range = rangeForUnit(cm, start, behavior.unit) + if (behavior.extend) + { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend) } + else + { ourRange = range } + } + + if (!behavior.addNew) { + ourIndex = 0 + setSelection(doc, new Selection([ourRange], 0), sel_mouse) + startSel = doc.sel + } else if (ourIndex == -1) { + ourIndex = ranges.length + setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex), + {scroll: false, origin: "*mouse"}) + } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) { + setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), + {scroll: false, origin: "*mouse"}) + startSel = doc.sel + } else { + replaceOneSelection(doc, ourIndex, ourRange, sel_mouse) + } + + var lastPos = start + function extendTo(pos) { + if (cmp(lastPos, pos) == 0) { return } + lastPos = pos + + if (behavior.unit == "rectangle") { + var ranges = [], tabSize = cm.options.tabSize + var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize) + var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize) + var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol) + for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); + line <= end; line++) { + var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize) + if (left == right) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))) } + else if (text.length > leftPos) + { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))) } + } + if (!ranges.length) { ranges.push(new Range(start, start)) } + setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), + {origin: "*mouse", scroll: false}) + cm.scrollIntoView(pos) + } else { + var oldRange = ourRange + var range = rangeForUnit(cm, pos, behavior.unit) + var anchor = oldRange.anchor, head + if (cmp(range.anchor, anchor) > 0) { + head = range.head + anchor = minPos(oldRange.from(), range.anchor) + } else { + head = range.anchor + anchor = maxPos(oldRange.to(), range.head) + } + var ranges$1 = startSel.ranges.slice(0) + ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head)) + setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse) + } + } + + var editorSize = display.wrapper.getBoundingClientRect() + // Used to ensure timeout re-tries don't fire when another extend + // happened in the meantime (clearTimeout isn't reliable -- at + // least on Chrome, the timeouts still happen even when cleared, + // if the clear happens after their scheduled firing time). + var counter = 0 + + function extend(e) { + var curCount = ++counter + var cur = posFromMouse(cm, e, true, behavior.unit == "rectangle") + if (!cur) { return } + if (cmp(cur, lastPos) != 0) { + cm.curOp.focus = activeElt() + extendTo(cur) + var visible = visibleLines(display, doc) + if (cur.line >= visible.to || cur.line < visible.from) + { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e) }}), 150) } + } else { + var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0 + if (outside) { setTimeout(operation(cm, function () { + if (counter != curCount) { return } + display.scroller.scrollTop += outside + extend(e) + }), 50) } + } + } + + function done(e) { + cm.state.selectingText = false + counter = Infinity + e_preventDefault(e) + display.input.focus() + off(document, "mousemove", move) + off(document, "mouseup", up) + doc.history.lastSelOrigin = null + } + + var move = operation(cm, function (e) { + if (!e_button(e)) { done(e) } + else { extend(e) } + }) + var up = operation(cm, done) + cm.state.selectingText = up + on(document, "mousemove", move) + on(document, "mouseup", up) +} + +// Used when mouse-selecting to adjust the anchor to the proper side +// of a bidi jump depending on the visual position of the head. +function bidiSimplify(cm, range) { + var anchor = range.anchor; + var head = range.head; + var anchorLine = getLine(cm.doc, anchor.line) + if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range } + var order = getOrder(anchorLine) + if (!order) { return range } + var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index] + if (part.from != anchor.ch && part.to != anchor.ch) { return range } + var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1) + if (boundary == 0 || boundary == order.length) { return range } + + // Compute the relative visual position of the head compared to the + // anchor (<0 is to the left, >0 to the right) + var leftSide + if (head.line != anchor.line) { + leftSide = (head.line - anchor.line) * (cm.doc.direction == "ltr" ? 1 : -1) > 0 + } else { + var headIndex = getBidiPartAt(order, head.ch, head.sticky) + var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1) + if (headIndex == boundary - 1 || headIndex == boundary) + { leftSide = dir < 0 } + else + { leftSide = dir > 0 } + } + + var usePart = order[boundary + (leftSide ? -1 : 0)] + var from = leftSide == (usePart.level == 1) + var ch = from ? usePart.from : usePart.to, sticky = from ? "after" : "before" + return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head) +} + + +// Determines whether an event happened in the gutter, and fires the +// handlers for the corresponding event. +function gutterEvent(cm, e, type, prevent) { + var mX, mY + if (e.touches) { + mX = e.touches[0].clientX + mY = e.touches[0].clientY + } else { + try { mX = e.clientX; mY = e.clientY } + catch(e) { return false } + } + if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false } + if (prevent) { e_preventDefault(e) } + + var display = cm.display + var lineBox = display.lineDiv.getBoundingClientRect() + + if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) } + mY -= lineBox.top - display.viewOffset + + for (var i = 0; i < cm.options.gutters.length; ++i) { + var g = display.gutters.childNodes[i] + if (g && g.getBoundingClientRect().right >= mX) { + var line = lineAtHeight(cm.doc, mY) + var gutter = cm.options.gutters[i] + signal(cm, type, cm, line, gutter, e) + return e_defaultPrevented(e) + } + } +} + +function clickInGutter(cm, e) { + return gutterEvent(cm, e, "gutterClick", true) +} + +// CONTEXT MENU HANDLING + +// To make the context menu work, we need to briefly unhide the +// textarea (making it as unobtrusive as possible) to let the +// right-click take effect on it. +function onContextMenu(cm, e) { + if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return } + if (signalDOMEvent(cm, e, "contextmenu")) { return } + cm.display.input.onContextMenu(e) +} + +function contextMenuInGutter(cm, e) { + if (!hasHandler(cm, "gutterContextMenu")) { return false } + return gutterEvent(cm, e, "gutterContextMenu", false) +} + +function themeChanged(cm) { + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-") + clearCaches(cm) +} + +var Init = {toString: function(){return "CodeMirror.Init"}} + +var defaults = {} +var optionHandlers = {} + +function defineOptions(CodeMirror) { + var optionHandlers = CodeMirror.optionHandlers + + function option(name, deflt, handle, notOnInit) { + CodeMirror.defaults[name] = deflt + if (handle) { optionHandlers[name] = + notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old) }} : handle } + } + + CodeMirror.defineOption = option + + // Passed to option handlers when there is no old value. + CodeMirror.Init = Init + + // These two are, on init, called from the constructor because they + // have to be initialized before the editor can start at all. + option("value", "", function (cm, val) { return cm.setValue(val); }, true) + option("mode", null, function (cm, val) { + cm.doc.modeOption = val + loadMode(cm) + }, true) + + option("indentUnit", 2, loadMode, true) + option("indentWithTabs", false) + option("smartIndent", true) + option("tabSize", 4, function (cm) { + resetModeState(cm) + clearCaches(cm) + regChange(cm) + }, true) + option("lineSeparator", null, function (cm, val) { + cm.doc.lineSep = val + if (!val) { return } + var newBreaks = [], lineNo = cm.doc.first + cm.doc.iter(function (line) { + for (var pos = 0;;) { + var found = line.text.indexOf(val, pos) + if (found == -1) { break } + pos = found + val.length + newBreaks.push(Pos(lineNo, found)) + } + lineNo++ + }) + for (var i = newBreaks.length - 1; i >= 0; i--) + { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)) } + }) + option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g, function (cm, val, old) { + cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g") + if (old != Init) { cm.refresh() } + }) + option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true) + option("electricChars", true) + option("inputStyle", mobile ? "contenteditable" : "textarea", function () { + throw new Error("inputStyle can not (yet) be changed in a running editor") // FIXME + }, true) + option("spellcheck", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true) + option("rtlMoveVisually", !windows) + option("wholeLineUpdateBefore", true) + + option("theme", "default", function (cm) { + themeChanged(cm) + guttersChanged(cm) + }, true) + option("keyMap", "default", function (cm, val, old) { + var next = getKeyMap(val) + var prev = old != Init && getKeyMap(old) + if (prev && prev.detach) { prev.detach(cm, next) } + if (next.attach) { next.attach(cm, prev || null) } + }) + option("extraKeys", null) + option("configureMouse", null) + + option("lineWrapping", false, wrappingChanged, true) + option("gutters", [], function (cm) { + setGuttersForLineNumbers(cm.options) + guttersChanged(cm) + }, true) + option("fixedGutter", true, function (cm, val) { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0" + cm.refresh() + }, true) + option("coverGutterNextToScrollbar", false, function (cm) { return updateScrollbars(cm); }, true) + option("scrollbarStyle", "native", function (cm) { + initScrollbars(cm) + updateScrollbars(cm) + cm.display.scrollbars.setScrollTop(cm.doc.scrollTop) + cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft) + }, true) + option("lineNumbers", false, function (cm) { + setGuttersForLineNumbers(cm.options) + guttersChanged(cm) + }, true) + option("firstLineNumber", 1, guttersChanged, true) + option("lineNumberFormatter", function (integer) { return integer; }, guttersChanged, true) + option("showCursorWhenSelecting", false, updateSelection, true) + + option("resetSelectionOnContextMenu", true) + option("lineWiseCopyCut", true) + option("pasteLinesPerSelection", true) + + option("readOnly", false, function (cm, val) { + if (val == "nocursor") { + onBlur(cm) + cm.display.input.blur() + } + cm.display.input.readOnlyChanged(val) + }) + option("disableInput", false, function (cm, val) {if (!val) { cm.display.input.reset() }}, true) + option("dragDrop", true, dragDropChanged) + option("allowDropFileTypes", null) + + option("cursorBlinkRate", 530) + option("cursorScrollMargin", 0) + option("cursorHeight", 1, updateSelection, true) + option("singleCursorHeightPerLine", true, updateSelection, true) + option("workTime", 100) + option("workDelay", 100) + option("flattenSpans", true, resetModeState, true) + option("addModeClass", false, resetModeState, true) + option("pollInterval", 100) + option("undoDepth", 200, function (cm, val) { return cm.doc.history.undoDepth = val; }) + option("historyEventDelay", 1250) + option("viewportMargin", 10, function (cm) { return cm.refresh(); }, true) + option("maxHighlightLength", 10000, resetModeState, true) + option("moveInputWithCursor", true, function (cm, val) { + if (!val) { cm.display.input.resetPosition() } + }) + + option("tabindex", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || ""; }) + option("autofocus", null) + option("direction", "ltr", function (cm, val) { return cm.doc.setDirection(val); }, true) +} + +function guttersChanged(cm) { + updateGutters(cm) + regChange(cm) + alignHorizontally(cm) +} + +function dragDropChanged(cm, value, old) { + var wasOn = old && old != Init + if (!value != !wasOn) { + var funcs = cm.display.dragFunctions + var toggle = value ? on : off + toggle(cm.display.scroller, "dragstart", funcs.start) + toggle(cm.display.scroller, "dragenter", funcs.enter) + toggle(cm.display.scroller, "dragover", funcs.over) + toggle(cm.display.scroller, "dragleave", funcs.leave) + toggle(cm.display.scroller, "drop", funcs.drop) + } +} + +function wrappingChanged(cm) { + if (cm.options.lineWrapping) { + addClass(cm.display.wrapper, "CodeMirror-wrap") + cm.display.sizer.style.minWidth = "" + cm.display.sizerWidth = null + } else { + rmClass(cm.display.wrapper, "CodeMirror-wrap") + findMaxLine(cm) + } + estimateLineHeights(cm) + regChange(cm) + clearCaches(cm) + setTimeout(function () { return updateScrollbars(cm); }, 100) +} + +// A CodeMirror instance represents an editor. This is the object +// that user code is usually dealing with. + +function CodeMirror(place, options) { + var this$1 = this; + + if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) } + + this.options = options = options ? copyObj(options) : {} + // Determine effective options based on given values and defaults. + copyObj(defaults, options, false) + setGuttersForLineNumbers(options) + + var doc = options.value + if (typeof doc == "string") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction) } + this.doc = doc + + var input = new CodeMirror.inputStyles[options.inputStyle](this) + var display = this.display = new Display(place, doc, input) + display.wrapper.CodeMirror = this + updateGutters(this) + themeChanged(this) + if (options.lineWrapping) + { this.display.wrapper.className += " CodeMirror-wrap" } + initScrollbars(this) + + this.state = { + keyMaps: [], // stores maps added by addKeyMap + overlays: [], // highlighting overlays, as added by addOverlay + modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info + overwrite: false, + delayingBlurEvent: false, + focused: false, + suppressEdits: false, // used to disable editing during key handlers when in readOnly mode + pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll + selectingText: false, + draggingText: false, + highlight: new Delayed(), // stores highlight worker timeout + keySeq: null, // Unfinished key sequence + specialChars: null + } + + if (options.autofocus && !mobile) { display.input.focus() } + + // Override magic textarea content restore that IE sometimes does + // on our hidden textarea on reload + if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20) } + + registerEventHandlers(this) + ensureGlobalHandlers() + + startOperation(this) + this.curOp.forceUpdate = true + attachDoc(this, doc) + + if ((options.autofocus && !mobile) || this.hasFocus()) + { setTimeout(bind(onFocus, this), 20) } + else + { onBlur(this) } + + for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt)) + { optionHandlers[opt](this$1, options[opt], Init) } } + maybeUpdateLineNumberWidth(this) + if (options.finishInit) { options.finishInit(this) } + for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this$1) } + endOperation(this) + // Suppress optimizelegibility in Webkit, since it breaks text + // measuring on line wrapping boundaries. + if (webkit && options.lineWrapping && + getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") + { display.lineDiv.style.textRendering = "auto" } +} + +// The default configuration options. +CodeMirror.defaults = defaults +// Functions to run when options are changed. +CodeMirror.optionHandlers = optionHandlers + +// Attach the necessary event handlers when initializing the editor +function registerEventHandlers(cm) { + var d = cm.display + on(d.scroller, "mousedown", operation(cm, onMouseDown)) + // Older IE's will not fire a second mousedown for a double click + if (ie && ie_version < 11) + { on(d.scroller, "dblclick", operation(cm, function (e) { + if (signalDOMEvent(cm, e)) { return } + var pos = posFromMouse(cm, e) + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return } + e_preventDefault(e) + var word = cm.findWordAt(pos) + extendSelection(cm.doc, word.anchor, word.head) + })) } + else + { on(d.scroller, "dblclick", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }) } + // Some browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for these browsers. + if (!captureRightClick) { on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); }) } + + // Used to suppress mouse event handling when a touch happens + var touchFinished, prevTouch = {end: 0} + function finishTouch() { + if (d.activeTouch) { + touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000) + prevTouch = d.activeTouch + prevTouch.end = +new Date + } + } + function isMouseLikeTouchEvent(e) { + if (e.touches.length != 1) { return false } + var touch = e.touches[0] + return touch.radiusX <= 1 && touch.radiusY <= 1 + } + function farAway(touch, other) { + if (other.left == null) { return true } + var dx = other.left - touch.left, dy = other.top - touch.top + return dx * dx + dy * dy > 20 * 20 + } + on(d.scroller, "touchstart", function (e) { + if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) { + d.input.ensurePolled() + clearTimeout(touchFinished) + var now = +new Date + d.activeTouch = {start: now, moved: false, + prev: now - prevTouch.end <= 300 ? prevTouch : null} + if (e.touches.length == 1) { + d.activeTouch.left = e.touches[0].pageX + d.activeTouch.top = e.touches[0].pageY + } + } + }) + on(d.scroller, "touchmove", function () { + if (d.activeTouch) { d.activeTouch.moved = true } + }) + on(d.scroller, "touchend", function (e) { + var touch = d.activeTouch + if (touch && !eventInWidget(d, e) && touch.left != null && + !touch.moved && new Date - touch.start < 300) { + var pos = cm.coordsChar(d.activeTouch, "page"), range + if (!touch.prev || farAway(touch, touch.prev)) // Single tap + { range = new Range(pos, pos) } + else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap + { range = cm.findWordAt(pos) } + else // Triple tap + { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) } + cm.setSelection(range.anchor, range.head) + cm.focus() + e_preventDefault(e) + } + finishTouch() + }) + on(d.scroller, "touchcancel", finishTouch) + + // Sync scrolling between fake scrollbars and real scrollable + // area, ensure viewport is updated when scrolling. + on(d.scroller, "scroll", function () { + if (d.scroller.clientHeight) { + updateScrollTop(cm, d.scroller.scrollTop) + setScrollLeft(cm, d.scroller.scrollLeft, true) + signal(cm, "scroll", cm) + } + }) + + // Listen to wheel events in order to try and update the viewport on time. + on(d.scroller, "mousewheel", function (e) { return onScrollWheel(cm, e); }) + on(d.scroller, "DOMMouseScroll", function (e) { return onScrollWheel(cm, e); }) + + // Prevent wrapper from ever scrolling + on(d.wrapper, "scroll", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }) + + d.dragFunctions = { + enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e) }}, + over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e) }}, + start: function (e) { return onDragStart(cm, e); }, + drop: operation(cm, onDrop), + leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm) }} + } + + var inp = d.input.getField() + on(inp, "keyup", function (e) { return onKeyUp.call(cm, e); }) + on(inp, "keydown", operation(cm, onKeyDown)) + on(inp, "keypress", operation(cm, onKeyPress)) + on(inp, "focus", function (e) { return onFocus(cm, e); }) + on(inp, "blur", function (e) { return onBlur(cm, e); }) +} + +var initHooks = [] +CodeMirror.defineInitHook = function (f) { return initHooks.push(f); } + +// Indent the given line. The how parameter can be "smart", +// "add"/null, "subtract", or "prev". When aggressive is false +// (typically set to true for forced single-line indents), empty +// lines are not indented, and places where the mode returns Pass +// are left alone. +function indentLine(cm, n, how, aggressive) { + var doc = cm.doc, state + if (how == null) { how = "add" } + if (how == "smart") { + // Fall back to "prev" when the mode doesn't have an indentation + // method. + if (!doc.mode.indent) { how = "prev" } + else { state = getContextBefore(cm, n).state } + } + + var tabSize = cm.options.tabSize + var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize) + if (line.stateAfter) { line.stateAfter = null } + var curSpaceString = line.text.match(/^\s*/)[0], indentation + if (!aggressive && !/\S/.test(line.text)) { + indentation = 0 + how = "not" + } else if (how == "smart") { + indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text) + if (indentation == Pass || indentation > 150) { + if (!aggressive) { return } + how = "prev" + } + } + if (how == "prev") { + if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize) } + else { indentation = 0 } + } else if (how == "add") { + indentation = curSpace + cm.options.indentUnit + } else if (how == "subtract") { + indentation = curSpace - cm.options.indentUnit + } else if (typeof how == "number") { + indentation = curSpace + how + } + indentation = Math.max(0, indentation) + + var indentString = "", pos = 0 + if (cm.options.indentWithTabs) + { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t"} } + if (pos < indentation) { indentString += spaceStr(indentation - pos) } + + if (indentString != curSpaceString) { + replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input") + line.stateAfter = null + return true + } else { + // Ensure that, if the cursor was in the whitespace at the start + // of the line, it is moved to the end of that space. + for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) { + var range = doc.sel.ranges[i$1] + if (range.head.line == n && range.head.ch < curSpaceString.length) { + var pos$1 = Pos(n, curSpaceString.length) + replaceOneSelection(doc, i$1, new Range(pos$1, pos$1)) + break + } + } + } +} + +// This will be set to a {lineWise: bool, text: [string]} object, so +// that, when pasting, we know what kind of selections the copied +// text was made out of. +var lastCopied = null + +function setLastCopied(newLastCopied) { + lastCopied = newLastCopied +} + +function applyTextInput(cm, inserted, deleted, sel, origin) { + var doc = cm.doc + cm.display.shift = false + if (!sel) { sel = doc.sel } + + var paste = cm.state.pasteIncoming || origin == "paste" + var textLines = splitLinesAuto(inserted), multiPaste = null + // When pasing N lines into N selections, insert one line per selection + if (paste && sel.ranges.length > 1) { + if (lastCopied && lastCopied.text.join("\n") == inserted) { + if (sel.ranges.length % lastCopied.text.length == 0) { + multiPaste = [] + for (var i = 0; i < lastCopied.text.length; i++) + { multiPaste.push(doc.splitLines(lastCopied.text[i])) } + } + } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) { + multiPaste = map(textLines, function (l) { return [l]; }) + } + } + + var updateInput + // Normal behavior is to insert the new text into every selection + for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) { + var range = sel.ranges[i$1] + var from = range.from(), to = range.to() + if (range.empty()) { + if (deleted && deleted > 0) // Handle deletion + { from = Pos(from.line, from.ch - deleted) } + else if (cm.state.overwrite && !paste) // Handle overwrite + { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)) } + else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted) + { from = to = Pos(from.line, 0) } + } + updateInput = cm.curOp.updateInput + var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines, + origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")} + makeChange(cm.doc, changeEvent) + signalLater(cm, "inputRead", cm, changeEvent) + } + if (inserted && !paste) + { triggerElectric(cm, inserted) } + + ensureCursorVisible(cm) + cm.curOp.updateInput = updateInput + cm.curOp.typing = true + cm.state.pasteIncoming = cm.state.cutIncoming = false +} + +function handlePaste(e, cm) { + var pasted = e.clipboardData && e.clipboardData.getData("Text") + if (pasted) { + e.preventDefault() + if (!cm.isReadOnly() && !cm.options.disableInput) + { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, "paste"); }) } + return true + } +} + +function triggerElectric(cm, inserted) { + // When an 'electric' character is inserted, immediately trigger a reindent + if (!cm.options.electricChars || !cm.options.smartIndent) { return } + var sel = cm.doc.sel + + for (var i = sel.ranges.length - 1; i >= 0; i--) { + var range = sel.ranges[i] + if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue } + var mode = cm.getModeAt(range.head) + var indented = false + if (mode.electricChars) { + for (var j = 0; j < mode.electricChars.length; j++) + { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { + indented = indentLine(cm, range.head.line, "smart") + break + } } + } else if (mode.electricInput) { + if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) + { indented = indentLine(cm, range.head.line, "smart") } + } + if (indented) { signalLater(cm, "electricInput", cm, range.head.line) } + } +} + +function copyableRanges(cm) { + var text = [], ranges = [] + for (var i = 0; i < cm.doc.sel.ranges.length; i++) { + var line = cm.doc.sel.ranges[i].head.line + var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)} + ranges.push(lineRange) + text.push(cm.getRange(lineRange.anchor, lineRange.head)) + } + return {text: text, ranges: ranges} +} + +function disableBrowserMagic(field, spellcheck) { + field.setAttribute("autocorrect", "off") + field.setAttribute("autocapitalize", "off") + field.setAttribute("spellcheck", !!spellcheck) +} + +function hiddenTextarea() { + var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none") + var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;") + // The textarea is kept positioned near the cursor to prevent the + // fact that it'll be scrolled into view on input from scrolling + // our fake cursor out of view. On webkit, when wrap=off, paste is + // very slow. So make the area wide instead. + if (webkit) { te.style.width = "1000px" } + else { te.setAttribute("wrap", "off") } + // If border: 0; -- iOS fails to open keyboard (issue #1287) + if (ios) { te.style.border = "1px solid black" } + disableBrowserMagic(te) + return div +} + +// The publicly visible API. Note that methodOp(f) means +// 'wrap f in an operation, performed on its `this` parameter'. + +// This is not the complete set of editor methods. Most of the +// methods defined on the Doc type are also injected into +// CodeMirror.prototype, for backwards compatibility and +// convenience. + +function addEditorMethods(CodeMirror) { + var optionHandlers = CodeMirror.optionHandlers + + var helpers = CodeMirror.helpers = {} + + CodeMirror.prototype = { + constructor: CodeMirror, + focus: function(){window.focus(); this.display.input.focus()}, + + setOption: function(option, value) { + var options = this.options, old = options[option] + if (options[option] == value && option != "mode") { return } + options[option] = value + if (optionHandlers.hasOwnProperty(option)) + { operation(this, optionHandlers[option])(this, value, old) } + signal(this, "optionChange", this, option) + }, + + getOption: function(option) {return this.options[option]}, + getDoc: function() {return this.doc}, + + addKeyMap: function(map, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)) + }, + removeKeyMap: function(map) { + var maps = this.state.keyMaps + for (var i = 0; i < maps.length; ++i) + { if (maps[i] == map || maps[i].name == map) { + maps.splice(i, 1) + return true + } } + }, + + addOverlay: methodOp(function(spec, options) { + var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec) + if (mode.startState) { throw new Error("Overlays may not be stateful.") } + insertSorted(this.state.overlays, + {mode: mode, modeSpec: spec, opaque: options && options.opaque, + priority: (options && options.priority) || 0}, + function (overlay) { return overlay.priority; }) + this.state.modeGen++ + regChange(this) + }), + removeOverlay: methodOp(function(spec) { + var this$1 = this; + + var overlays = this.state.overlays + for (var i = 0; i < overlays.length; ++i) { + var cur = overlays[i].modeSpec + if (cur == spec || typeof spec == "string" && cur.name == spec) { + overlays.splice(i, 1) + this$1.state.modeGen++ + regChange(this$1) + return + } + } + }), + + indentLine: methodOp(function(n, dir, aggressive) { + if (typeof dir != "string" && typeof dir != "number") { + if (dir == null) { dir = this.options.smartIndent ? "smart" : "prev" } + else { dir = dir ? "add" : "subtract" } + } + if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive) } + }), + indentSelection: methodOp(function(how) { + var this$1 = this; + + var ranges = this.doc.sel.ranges, end = -1 + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i] + if (!range.empty()) { + var from = range.from(), to = range.to() + var start = Math.max(end, from.line) + end = Math.min(this$1.lastLine(), to.line - (to.ch ? 0 : 1)) + 1 + for (var j = start; j < end; ++j) + { indentLine(this$1, j, how) } + var newRanges = this$1.doc.sel.ranges + if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) + { replaceOneSelection(this$1.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll) } + } else if (range.head.line > end) { + indentLine(this$1, range.head.line, how, true) + end = range.head.line + if (i == this$1.doc.sel.primIndex) { ensureCursorVisible(this$1) } + } + } + }), + + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(pos, precise) { + return takeToken(this, pos, precise) + }, + + getLineTokens: function(line, precise) { + return takeToken(this, Pos(line), precise, true) + }, + + getTokenTypeAt: function(pos) { + pos = clipPos(this.doc, pos) + var styles = getLineStyles(this, getLine(this.doc, pos.line)) + var before = 0, after = (styles.length - 1) / 2, ch = pos.ch + var type + if (ch == 0) { type = styles[2] } + else { for (;;) { + var mid = (before + after) >> 1 + if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid } + else if (styles[mid * 2 + 1] < ch) { before = mid + 1 } + else { type = styles[mid * 2 + 2]; break } + } } + var cut = type ? type.indexOf("overlay ") : -1 + return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1) + }, + + getModeAt: function(pos) { + var mode = this.doc.mode + if (!mode.innerMode) { return mode } + return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode + }, + + getHelper: function(pos, type) { + return this.getHelpers(pos, type)[0] + }, + + getHelpers: function(pos, type) { + var this$1 = this; + + var found = [] + if (!helpers.hasOwnProperty(type)) { return found } + var help = helpers[type], mode = this.getModeAt(pos) + if (typeof mode[type] == "string") { + if (help[mode[type]]) { found.push(help[mode[type]]) } + } else if (mode[type]) { + for (var i = 0; i < mode[type].length; i++) { + var val = help[mode[type][i]] + if (val) { found.push(val) } + } + } else if (mode.helperType && help[mode.helperType]) { + found.push(help[mode.helperType]) + } else if (help[mode.name]) { + found.push(help[mode.name]) + } + for (var i$1 = 0; i$1 < help._global.length; i$1++) { + var cur = help._global[i$1] + if (cur.pred(mode, this$1) && indexOf(found, cur.val) == -1) + { found.push(cur.val) } + } + return found + }, + + getStateAfter: function(line, precise) { + var doc = this.doc + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line) + return getContextBefore(this, line + 1, precise).state + }, + + cursorCoords: function(start, mode) { + var pos, range = this.doc.sel.primary() + if (start == null) { pos = range.head } + else if (typeof start == "object") { pos = clipPos(this.doc, start) } + else { pos = start ? range.from() : range.to() } + return cursorCoords(this, pos, mode || "page") + }, + + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page") + }, + + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page") + return coordsChar(this, coords.left, coords.top) + }, + + lineAtHeight: function(height, mode) { + height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top + return lineAtHeight(this.doc, height + this.display.viewOffset) + }, + heightAtLine: function(line, mode, includeWidgets) { + var end = false, lineObj + if (typeof line == "number") { + var last = this.doc.first + this.doc.size - 1 + if (line < this.doc.first) { line = this.doc.first } + else if (line > last) { line = last; end = true } + lineObj = getLine(this.doc, line) + } else { + lineObj = line + } + return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page", includeWidgets || end).top + + (end ? this.doc.height - heightAtLine(lineObj) : 0) + }, + + defaultTextHeight: function() { return textHeight(this.display) }, + defaultCharWidth: function() { return charWidth(this.display) }, + + getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}}, + + addWidget: function(pos, node, scroll, vert, horiz) { + var display = this.display + pos = cursorCoords(this, clipPos(this.doc, pos)) + var top = pos.bottom, left = pos.left + node.style.position = "absolute" + node.setAttribute("cm-ignore-events", "true") + this.display.input.setUneditable(node) + display.sizer.appendChild(node) + if (vert == "over") { + top = pos.top + } else if (vert == "above" || vert == "near") { + var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth) + // Default to positioning above (if specified and possible); otherwise default to positioning below + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + { top = pos.top - node.offsetHeight } + else if (pos.bottom + node.offsetHeight <= vspace) + { top = pos.bottom } + if (left + node.offsetWidth > hspace) + { left = hspace - node.offsetWidth } + } + node.style.top = top + "px" + node.style.left = node.style.right = "" + if (horiz == "right") { + left = display.sizer.clientWidth - node.offsetWidth + node.style.right = "0px" + } else { + if (horiz == "left") { left = 0 } + else if (horiz == "middle") { left = (display.sizer.clientWidth - node.offsetWidth) / 2 } + node.style.left = left + "px" + } + if (scroll) + { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}) } + }, + + triggerOnKeyDown: methodOp(onKeyDown), + triggerOnKeyPress: methodOp(onKeyPress), + triggerOnKeyUp: onKeyUp, + triggerOnMouseDown: methodOp(onMouseDown), + + execCommand: function(cmd) { + if (commands.hasOwnProperty(cmd)) + { return commands[cmd].call(null, this) } + }, + + triggerElectric: methodOp(function(text) { triggerElectric(this, text) }), + + findPosH: function(from, amount, unit, visually) { + var this$1 = this; + + var dir = 1 + if (amount < 0) { dir = -1; amount = -amount } + var cur = clipPos(this.doc, from) + for (var i = 0; i < amount; ++i) { + cur = findPosH(this$1.doc, cur, dir, unit, visually) + if (cur.hitSide) { break } + } + return cur + }, + + moveH: methodOp(function(dir, unit) { + var this$1 = this; + + this.extendSelectionsBy(function (range) { + if (this$1.display.shift || this$1.doc.extend || range.empty()) + { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) } + else + { return dir < 0 ? range.from() : range.to() } + }, sel_move) + }), + + deleteH: methodOp(function(dir, unit) { + var sel = this.doc.sel, doc = this.doc + if (sel.somethingSelected()) + { doc.replaceSelection("", null, "+delete") } + else + { deleteNearSelection(this, function (range) { + var other = findPosH(doc, range.head, dir, unit, false) + return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other} + }) } + }), + + findPosV: function(from, amount, unit, goalColumn) { + var this$1 = this; + + var dir = 1, x = goalColumn + if (amount < 0) { dir = -1; amount = -amount } + var cur = clipPos(this.doc, from) + for (var i = 0; i < amount; ++i) { + var coords = cursorCoords(this$1, cur, "div") + if (x == null) { x = coords.left } + else { coords.left = x } + cur = findPosV(this$1, coords, dir, unit) + if (cur.hitSide) { break } + } + return cur + }, + + moveV: methodOp(function(dir, unit) { + var this$1 = this; + + var doc = this.doc, goals = [] + var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected() + doc.extendSelectionsBy(function (range) { + if (collapse) + { return dir < 0 ? range.from() : range.to() } + var headPos = cursorCoords(this$1, range.head, "div") + if (range.goalColumn != null) { headPos.left = range.goalColumn } + goals.push(headPos.left) + var pos = findPosV(this$1, headPos, dir, unit) + if (unit == "page" && range == doc.sel.primary()) + { addToScrollTop(this$1, charCoords(this$1, pos, "div").top - headPos.top) } + return pos + }, sel_move) + if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++) + { doc.sel.ranges[i].goalColumn = goals[i] } } + }), + + // Find the word at the given position (as returned by coordsChar). + findWordAt: function(pos) { + var doc = this.doc, line = getLine(doc, pos.line).text + var start = pos.ch, end = pos.ch + if (line) { + var helper = this.getHelper(pos, "wordChars") + if ((pos.sticky == "before" || end == line.length) && start) { --start; } else { ++end } + var startChar = line.charAt(start) + var check = isWordChar(startChar, helper) + ? function (ch) { return isWordChar(ch, helper); } + : /\s/.test(startChar) ? function (ch) { return /\s/.test(ch); } + : function (ch) { return (!/\s/.test(ch) && !isWordChar(ch)); } + while (start > 0 && check(line.charAt(start - 1))) { --start } + while (end < line.length && check(line.charAt(end))) { ++end } + } + return new Range(Pos(pos.line, start), Pos(pos.line, end)) + }, + + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) { return } + if (this.state.overwrite = !this.state.overwrite) + { addClass(this.display.cursorDiv, "CodeMirror-overwrite") } + else + { rmClass(this.display.cursorDiv, "CodeMirror-overwrite") } + + signal(this, "overwriteToggle", this, this.state.overwrite) + }, + hasFocus: function() { return this.display.input.getField() == activeElt() }, + isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) }, + + scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y) }), + getScrollInfo: function() { + var scroller = this.display.scroller + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, + width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, + clientHeight: displayHeight(this), clientWidth: displayWidth(this)} + }, + + scrollIntoView: methodOp(function(range, margin) { + if (range == null) { + range = {from: this.doc.sel.primary().head, to: null} + if (margin == null) { margin = this.options.cursorScrollMargin } + } else if (typeof range == "number") { + range = {from: Pos(range, 0), to: null} + } else if (range.from == null) { + range = {from: range, to: null} + } + if (!range.to) { range.to = range.from } + range.margin = margin || 0 + + if (range.from.line != null) { + scrollToRange(this, range) + } else { + scrollToCoordsRange(this, range.from, range.to, range.margin) + } + }), + + setSize: methodOp(function(width, height) { + var this$1 = this; + + var interpret = function (val) { return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; } + if (width != null) { this.display.wrapper.style.width = interpret(width) } + if (height != null) { this.display.wrapper.style.height = interpret(height) } + if (this.options.lineWrapping) { clearLineMeasurementCache(this) } + var lineNo = this.display.viewFrom + this.doc.iter(lineNo, this.display.viewTo, function (line) { + if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) + { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, "widget"); break } } } + ++lineNo + }) + this.curOp.forceUpdate = true + signal(this, "refresh", this) + }), + + operation: function(f){return runInOp(this, f)}, + startOperation: function(){return startOperation(this)}, + endOperation: function(){return endOperation(this)}, + + refresh: methodOp(function() { + var oldHeight = this.display.cachedTextHeight + regChange(this) + this.curOp.forceUpdate = true + clearCaches(this) + scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop) + updateGutterSpace(this) + if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) + { estimateLineHeights(this) } + signal(this, "refresh", this) + }), + + swapDoc: methodOp(function(doc) { + var old = this.doc + old.cm = null + attachDoc(this, doc) + clearCaches(this) + this.display.input.reset() + scrollToCoords(this, doc.scrollLeft, doc.scrollTop) + this.curOp.forceScroll = true + signalLater(this, "swapDoc", this, old) + return old + }), + + getInputField: function(){return this.display.input.getField()}, + getWrapperElement: function(){return this.display.wrapper}, + getScrollerElement: function(){return this.display.scroller}, + getGutterElement: function(){return this.display.gutters} + } + eventMixin(CodeMirror) + + CodeMirror.registerHelper = function(type, name, value) { + if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []} } + helpers[type][name] = value + } + CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { + CodeMirror.registerHelper(type, name, value) + helpers[type]._global.push({pred: predicate, val: value}) + } +} + +// Used for horizontal relative motion. Dir is -1 or 1 (left or +// right), unit can be "char", "column" (like char, but doesn't +// cross line boundaries), "word" (across next word), or "group" (to +// the start of next group of word or non-word-non-whitespace +// chars). The visually param controls whether, in right-to-left +// text, direction 1 means to move towards the next index in the +// string, or towards the character to the right of the current +// position. The resulting position will have a hitSide=true +// property if it reached the end of the document. +function findPosH(doc, pos, dir, unit, visually) { + var oldPos = pos + var origDir = dir + var lineObj = getLine(doc, pos.line) + function findNextLine() { + var l = pos.line + dir + if (l < doc.first || l >= doc.first + doc.size) { return false } + pos = new Pos(l, pos.ch, pos.sticky) + return lineObj = getLine(doc, l) + } + function moveOnce(boundToLine) { + var next + if (visually) { + next = moveVisually(doc.cm, lineObj, pos, dir) + } else { + next = moveLogically(lineObj, pos, dir) + } + if (next == null) { + if (!boundToLine && findNextLine()) + { pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir) } + else + { return false } + } else { + pos = next + } + return true + } + + if (unit == "char") { + moveOnce() + } else if (unit == "column") { + moveOnce(true) + } else if (unit == "word" || unit == "group") { + var sawType = null, group = unit == "group" + var helper = doc.cm && doc.cm.getHelper(pos, "wordChars") + for (var first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) { break } + var cur = lineObj.text.charAt(pos.ch) || "\n" + var type = isWordChar(cur, helper) ? "w" + : group && cur == "\n" ? "n" + : !group || /\s/.test(cur) ? null + : "p" + if (group && !first && !type) { type = "s" } + if (sawType && sawType != type) { + if (dir < 0) {dir = 1; moveOnce(); pos.sticky = "after"} + break + } + + if (type) { sawType = type } + if (dir > 0 && !moveOnce(!first)) { break } + } + } + var result = skipAtomic(doc, pos, oldPos, origDir, true) + if (equalCursorPos(oldPos, result)) { result.hitSide = true } + return result +} + +// For relative vertical movement. Dir may be -1 or 1. Unit can be +// "page" or "line". The resulting position will have a hitSide=true +// property if it reached the end of the document. +function findPosV(cm, pos, dir, unit) { + var doc = cm.doc, x = pos.left, y + if (unit == "page") { + var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight) + var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3) + y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount + + } else if (unit == "line") { + y = dir > 0 ? pos.bottom + 3 : pos.top - 3 + } + var target + for (;;) { + target = coordsChar(cm, x, y) + if (!target.outside) { break } + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break } + y += dir * 5 + } + return target +} + +// CONTENTEDITABLE INPUT STYLE + +var ContentEditableInput = function(cm) { + this.cm = cm + this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null + this.polling = new Delayed() + this.composing = null + this.gracePeriod = false + this.readDOMTimeout = null +}; + +ContentEditableInput.prototype.init = function (display) { + var this$1 = this; + + var input = this, cm = input.cm + var div = input.div = display.lineDiv + disableBrowserMagic(div, cm.options.spellcheck) + + on(div, "paste", function (e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } + // IE doesn't fire input events, so we schedule a read for the pasted content in this way + if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20) } + }) + + on(div, "compositionstart", function (e) { + this$1.composing = {data: e.data, done: false} + }) + on(div, "compositionupdate", function (e) { + if (!this$1.composing) { this$1.composing = {data: e.data, done: false} } + }) + on(div, "compositionend", function (e) { + if (this$1.composing) { + if (e.data != this$1.composing.data) { this$1.readFromDOMSoon() } + this$1.composing.done = true + } + }) + + on(div, "touchstart", function () { return input.forceCompositionEnd(); }) + + on(div, "input", function () { + if (!this$1.composing) { this$1.readFromDOMSoon() } + }) + + function onCopyCut(e) { + if (signalDOMEvent(cm, e)) { return } + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}) + if (e.type == "cut") { cm.replaceSelection("", null, "cut") } + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + var ranges = copyableRanges(cm) + setLastCopied({lineWise: true, text: ranges.text}) + if (e.type == "cut") { + cm.operation(function () { + cm.setSelections(ranges.ranges, 0, sel_dontScroll) + cm.replaceSelection("", null, "cut") + }) + } + } + if (e.clipboardData) { + e.clipboardData.clearData() + var content = lastCopied.text.join("\n") + // iOS exposes the clipboard API, but seems to discard content inserted into it + e.clipboardData.setData("Text", content) + if (e.clipboardData.getData("Text") == content) { + e.preventDefault() + return + } + } + // Old-fashioned briefly-focus-a-textarea hack + var kludge = hiddenTextarea(), te = kludge.firstChild + cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild) + te.value = lastCopied.text.join("\n") + var hadFocus = document.activeElement + selectInput(te) + setTimeout(function () { + cm.display.lineSpace.removeChild(kludge) + hadFocus.focus() + if (hadFocus == div) { input.showPrimarySelection() } + }, 50) + } + on(div, "copy", onCopyCut) + on(div, "cut", onCopyCut) +}; + +ContentEditableInput.prototype.prepareSelection = function () { + var result = prepareSelection(this.cm, false) + result.focus = this.cm.state.focused + return result +}; + +ContentEditableInput.prototype.showSelection = function (info, takeFocus) { + if (!info || !this.cm.display.view.length) { return } + if (info.focus || takeFocus) { this.showPrimarySelection() } + this.showMultipleSelections(info) +}; + +ContentEditableInput.prototype.showPrimarySelection = function () { + var sel = window.getSelection(), cm = this.cm, prim = cm.doc.sel.primary() + var from = prim.from(), to = prim.to() + + if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) { + sel.removeAllRanges() + return + } + + var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset) + var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset) + if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && + cmp(minPos(curAnchor, curFocus), from) == 0 && + cmp(maxPos(curAnchor, curFocus), to) == 0) + { return } + + var view = cm.display.view + var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) || + {node: view[0].measure.map[2], offset: 0} + var end = to.line < cm.display.viewTo && posToDOM(cm, to) + if (!end) { + var measure = view[view.length - 1].measure + var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map + end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]} + } + + if (!start || !end) { + sel.removeAllRanges() + return + } + + var old = sel.rangeCount && sel.getRangeAt(0), rng + try { rng = range(start.node, start.offset, end.offset, end.node) } + catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible + if (rng) { + if (!gecko && cm.state.focused) { + sel.collapse(start.node, start.offset) + if (!rng.collapsed) { + sel.removeAllRanges() + sel.addRange(rng) + } + } else { + sel.removeAllRanges() + sel.addRange(rng) + } + if (old && sel.anchorNode == null) { sel.addRange(old) } + else if (gecko) { this.startGracePeriod() } + } + this.rememberSelection() +}; + +ContentEditableInput.prototype.startGracePeriod = function () { + var this$1 = this; + + clearTimeout(this.gracePeriod) + this.gracePeriod = setTimeout(function () { + this$1.gracePeriod = false + if (this$1.selectionChanged()) + { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }) } + }, 20) +}; + +ContentEditableInput.prototype.showMultipleSelections = function (info) { + removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors) + removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection) +}; + +ContentEditableInput.prototype.rememberSelection = function () { + var sel = window.getSelection() + this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset + this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset +}; + +ContentEditableInput.prototype.selectionInEditor = function () { + var sel = window.getSelection() + if (!sel.rangeCount) { return false } + var node = sel.getRangeAt(0).commonAncestorContainer + return contains(this.div, node) +}; + +ContentEditableInput.prototype.focus = function () { + if (this.cm.options.readOnly != "nocursor") { + if (!this.selectionInEditor()) + { this.showSelection(this.prepareSelection(), true) } + this.div.focus() + } +}; +ContentEditableInput.prototype.blur = function () { this.div.blur() }; +ContentEditableInput.prototype.getField = function () { return this.div }; + +ContentEditableInput.prototype.supportsTouch = function () { return true }; + +ContentEditableInput.prototype.receivedFocus = function () { + var input = this + if (this.selectionInEditor()) + { this.pollSelection() } + else + { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }) } + + function poll() { + if (input.cm.state.focused) { + input.pollSelection() + input.polling.set(input.cm.options.pollInterval, poll) + } + } + this.polling.set(this.cm.options.pollInterval, poll) +}; + +ContentEditableInput.prototype.selectionChanged = function () { + var sel = window.getSelection() + return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || + sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset +}; + +ContentEditableInput.prototype.pollSelection = function () { + if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return } + var sel = window.getSelection(), cm = this.cm + // On Android Chrome (version 56, at least), backspacing into an + // uneditable block element will put the cursor in that element, + // and then, because it's not editable, hide the virtual keyboard. + // Because Android doesn't allow us to actually detect backspace + // presses in a sane way, this code checks for when that happens + // and simulates a backspace press in this case. + if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) { + this.cm.triggerOnKeyDown({type: "keydown", keyCode: 8, preventDefault: Math.abs}) + this.blur() + this.focus() + return + } + if (this.composing) { return } + this.rememberSelection() + var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset) + var head = domToPos(cm, sel.focusNode, sel.focusOffset) + if (anchor && head) { runInOp(cm, function () { + setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll) + if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true } + }) } +}; + +ContentEditableInput.prototype.pollContent = function () { + if (this.readDOMTimeout != null) { + clearTimeout(this.readDOMTimeout) + this.readDOMTimeout = null + } + + var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary() + var from = sel.from(), to = sel.to() + if (from.ch == 0 && from.line > cm.firstLine()) + { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length) } + if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) + { to = Pos(to.line + 1, 0) } + if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false } + + var fromIndex, fromLine, fromNode + if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { + fromLine = lineNo(display.view[0].line) + fromNode = display.view[0].node + } else { + fromLine = lineNo(display.view[fromIndex].line) + fromNode = display.view[fromIndex - 1].node.nextSibling + } + var toIndex = findViewIndex(cm, to.line) + var toLine, toNode + if (toIndex == display.view.length - 1) { + toLine = display.viewTo - 1 + toNode = display.lineDiv.lastChild + } else { + toLine = lineNo(display.view[toIndex + 1].line) - 1 + toNode = display.view[toIndex + 1].node.previousSibling + } + + if (!fromNode) { return false } + var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)) + var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)) + while (newText.length > 1 && oldText.length > 1) { + if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine-- } + else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++ } + else { break } + } + + var cutFront = 0, cutEnd = 0 + var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length) + while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) + { ++cutFront } + var newBot = lst(newText), oldBot = lst(oldText) + var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), + oldBot.length - (oldText.length == 1 ? cutFront : 0)) + while (cutEnd < maxCutEnd && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) + { ++cutEnd } + // Try to move start of change to start of selection if ambiguous + if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) { + while (cutFront && cutFront > from.ch && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) { + cutFront-- + cutEnd++ + } + } + + newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\u200b+/, "") + newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, "") + + var chFrom = Pos(fromLine, cutFront) + var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0) + if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { + replaceRange(cm.doc, newText, chFrom, chTo, "+input") + return true + } +}; + +ContentEditableInput.prototype.ensurePolled = function () { + this.forceCompositionEnd() +}; +ContentEditableInput.prototype.reset = function () { + this.forceCompositionEnd() +}; +ContentEditableInput.prototype.forceCompositionEnd = function () { + if (!this.composing) { return } + clearTimeout(this.readDOMTimeout) + this.composing = null + this.updateFromDOM() + this.div.blur() + this.div.focus() +}; +ContentEditableInput.prototype.readFromDOMSoon = function () { + var this$1 = this; + + if (this.readDOMTimeout != null) { return } + this.readDOMTimeout = setTimeout(function () { + this$1.readDOMTimeout = null + if (this$1.composing) { + if (this$1.composing.done) { this$1.composing = null } + else { return } + } + this$1.updateFromDOM() + }, 80) +}; + +ContentEditableInput.prototype.updateFromDOM = function () { + var this$1 = this; + + if (this.cm.isReadOnly() || !this.pollContent()) + { runInOp(this.cm, function () { return regChange(this$1.cm); }) } +}; + +ContentEditableInput.prototype.setUneditable = function (node) { + node.contentEditable = "false" +}; + +ContentEditableInput.prototype.onKeyPress = function (e) { + if (e.charCode == 0) { return } + e.preventDefault() + if (!this.cm.isReadOnly()) + { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0) } +}; + +ContentEditableInput.prototype.readOnlyChanged = function (val) { + this.div.contentEditable = String(val != "nocursor") +}; + +ContentEditableInput.prototype.onContextMenu = function () {}; +ContentEditableInput.prototype.resetPosition = function () {}; + +ContentEditableInput.prototype.needsContentAttribute = true + +function posToDOM(cm, pos) { + var view = findViewForLine(cm, pos.line) + if (!view || view.hidden) { return null } + var line = getLine(cm.doc, pos.line) + var info = mapFromLineView(view, line, pos.line) + + var order = getOrder(line, cm.doc.direction), side = "left" + if (order) { + var partPos = getBidiPartAt(order, pos.ch) + side = partPos % 2 ? "right" : "left" + } + var result = nodeAndOffsetInLineMap(info.map, pos.ch, side) + result.offset = result.collapse == "right" ? result.end : result.start + return result +} + +function isInGutter(node) { + for (var scan = node; scan; scan = scan.parentNode) + { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } } + return false +} + +function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos } + +function domTextBetween(cm, from, to, fromLine, toLine) { + var text = "", closing = false, lineSep = cm.doc.lineSeparator() + function recognizeMarker(id) { return function (marker) { return marker.id == id; } } + function close() { + if (closing) { + text += lineSep + closing = false + } + } + function addText(str) { + if (str) { + close() + text += str + } + } + function walk(node) { + if (node.nodeType == 1) { + var cmText = node.getAttribute("cm-text") + if (cmText != null) { + addText(cmText || node.textContent.replace(/\u200b/g, "")) + return + } + var markerID = node.getAttribute("cm-marker"), range + if (markerID) { + var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)) + if (found.length && (range = found[0].find(0))) + { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)) } + return + } + if (node.getAttribute("contenteditable") == "false") { return } + var isBlock = /^(pre|div|p)$/i.test(node.nodeName) + if (isBlock) { close() } + for (var i = 0; i < node.childNodes.length; i++) + { walk(node.childNodes[i]) } + if (isBlock) { closing = true } + } else if (node.nodeType == 3) { + addText(node.nodeValue) + } + } + for (;;) { + walk(from) + if (from == to) { break } + from = from.nextSibling + } + return text +} + +function domToPos(cm, node, offset) { + var lineNode + if (node == cm.display.lineDiv) { + lineNode = cm.display.lineDiv.childNodes[offset] + if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) } + node = null; offset = 0 + } else { + for (lineNode = node;; lineNode = lineNode.parentNode) { + if (!lineNode || lineNode == cm.display.lineDiv) { return null } + if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break } + } + } + for (var i = 0; i < cm.display.view.length; i++) { + var lineView = cm.display.view[i] + if (lineView.node == lineNode) + { return locateNodeInLineView(lineView, node, offset) } + } +} + +function locateNodeInLineView(lineView, node, offset) { + var wrapper = lineView.text.firstChild, bad = false + if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) } + if (node == wrapper) { + bad = true + node = wrapper.childNodes[offset] + offset = 0 + if (!node) { + var line = lineView.rest ? lst(lineView.rest) : lineView.line + return badPos(Pos(lineNo(line), line.text.length), bad) + } + } + + var textNode = node.nodeType == 3 ? node : null, topNode = node + if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { + textNode = node.firstChild + if (offset) { offset = textNode.nodeValue.length } + } + while (topNode.parentNode != wrapper) { topNode = topNode.parentNode } + var measure = lineView.measure, maps = measure.maps + + function find(textNode, topNode, offset) { + for (var i = -1; i < (maps ? maps.length : 0); i++) { + var map = i < 0 ? measure.map : maps[i] + for (var j = 0; j < map.length; j += 3) { + var curNode = map[j + 2] + if (curNode == textNode || curNode == topNode) { + var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]) + var ch = map[j] + offset + if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)] } + return Pos(line, ch) + } + } + } + } + var found = find(textNode, topNode, offset) + if (found) { return badPos(found, bad) } + + // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems + for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { + found = find(after, after.firstChild, 0) + if (found) + { return badPos(Pos(found.line, found.ch - dist), bad) } + else + { dist += after.textContent.length } + } + for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) { + found = find(before, before.firstChild, -1) + if (found) + { return badPos(Pos(found.line, found.ch + dist$1), bad) } + else + { dist$1 += before.textContent.length } + } +} + +// TEXTAREA INPUT STYLE + +var TextareaInput = function(cm) { + this.cm = cm + // See input.poll and input.reset + this.prevInput = "" + + // Flag that indicates whether we expect input to appear real soon + // now (after some event like 'keypress' or 'input') and are + // polling intensively. + this.pollingFast = false + // Self-resetting timeout for the poller + this.polling = new Delayed() + // Used to work around IE issue with selection being forgotten when focus moves away from textarea + this.hasSelection = false + this.composing = null +}; + +TextareaInput.prototype.init = function (display) { + var this$1 = this; + + var input = this, cm = this.cm + + // Wraps and hides input textarea + var div = this.wrapper = hiddenTextarea() + // The semihidden textarea that is focused when the editor is + // focused, and receives input. + var te = this.textarea = div.firstChild + display.wrapper.insertBefore(div, display.wrapper.firstChild) + + // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) + if (ios) { te.style.width = "0px" } + + on(te, "input", function () { + if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null } + input.poll() + }) + + on(te, "paste", function (e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return } + + cm.state.pasteIncoming = true + input.fastPoll() + }) + + function prepareCopyCut(e) { + if (signalDOMEvent(cm, e)) { return } + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}) + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + var ranges = copyableRanges(cm) + setLastCopied({lineWise: true, text: ranges.text}) + if (e.type == "cut") { + cm.setSelections(ranges.ranges, null, sel_dontScroll) + } else { + input.prevInput = "" + te.value = ranges.text.join("\n") + selectInput(te) + } + } + if (e.type == "cut") { cm.state.cutIncoming = true } + } + on(te, "cut", prepareCopyCut) + on(te, "copy", prepareCopyCut) + + on(display.scroller, "paste", function (e) { + if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return } + cm.state.pasteIncoming = true + input.focus() + }) + + // Prevent normal selection in the editor (we handle our own) + on(display.lineSpace, "selectstart", function (e) { + if (!eventInWidget(display, e)) { e_preventDefault(e) } + }) + + on(te, "compositionstart", function () { + var start = cm.getCursor("from") + if (input.composing) { input.composing.range.clear() } + input.composing = { + start: start, + range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) + } + }) + on(te, "compositionend", function () { + if (input.composing) { + input.poll() + input.composing.range.clear() + input.composing = null + } + }) +}; + +TextareaInput.prototype.prepareSelection = function () { + // Redraw the selection and/or cursor + var cm = this.cm, display = cm.display, doc = cm.doc + var result = prepareSelection(cm) + + // Move the hidden textarea near the cursor to prevent scrolling artifacts + if (cm.options.moveInputWithCursor) { + var headPos = cursorCoords(cm, doc.sel.primary().head, "div") + var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect() + result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)) + result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)) + } + + return result +}; + +TextareaInput.prototype.showSelection = function (drawn) { + var cm = this.cm, display = cm.display + removeChildrenAndAdd(display.cursorDiv, drawn.cursors) + removeChildrenAndAdd(display.selectionDiv, drawn.selection) + if (drawn.teTop != null) { + this.wrapper.style.top = drawn.teTop + "px" + this.wrapper.style.left = drawn.teLeft + "px" + } +}; + +// Reset the input to correspond to the selection (or to be empty, +// when not typing and nothing is selected) +TextareaInput.prototype.reset = function (typing) { + if (this.contextMenuPending || this.composing) { return } + var cm = this.cm + if (cm.somethingSelected()) { + this.prevInput = "" + var content = cm.getSelection() + this.textarea.value = content + if (cm.state.focused) { selectInput(this.textarea) } + if (ie && ie_version >= 9) { this.hasSelection = content } + } else if (!typing) { + this.prevInput = this.textarea.value = "" + if (ie && ie_version >= 9) { this.hasSelection = null } + } +}; + +TextareaInput.prototype.getField = function () { return this.textarea }; + +TextareaInput.prototype.supportsTouch = function () { return false }; + +TextareaInput.prototype.focus = function () { + if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { + try { this.textarea.focus() } + catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM + } +}; + +TextareaInput.prototype.blur = function () { this.textarea.blur() }; + +TextareaInput.prototype.resetPosition = function () { + this.wrapper.style.top = this.wrapper.style.left = 0 +}; + +TextareaInput.prototype.receivedFocus = function () { this.slowPoll() }; + +// Poll for input changes, using the normal rate of polling. This +// runs as long as the editor is focused. +TextareaInput.prototype.slowPoll = function () { + var this$1 = this; + + if (this.pollingFast) { return } + this.polling.set(this.cm.options.pollInterval, function () { + this$1.poll() + if (this$1.cm.state.focused) { this$1.slowPoll() } + }) +}; + +// When an event has just come in that is likely to add or change +// something in the input textarea, we poll faster, to ensure that +// the change appears on the screen quickly. +TextareaInput.prototype.fastPoll = function () { + var missed = false, input = this + input.pollingFast = true + function p() { + var changed = input.poll() + if (!changed && !missed) {missed = true; input.polling.set(60, p)} + else {input.pollingFast = false; input.slowPoll()} + } + input.polling.set(20, p) +}; + +// Read input from the textarea, and update the document to match. +// When something is selected, it is present in the textarea, and +// selected (unless it is huge, in which case a placeholder is +// used). When nothing is selected, the cursor sits after previously +// seen text (can be empty), which is stored in prevInput (we must +// not reset the textarea when typing, because that breaks IME). +TextareaInput.prototype.poll = function () { + var this$1 = this; + + var cm = this.cm, input = this.textarea, prevInput = this.prevInput + // Since this is called a *lot*, try to bail out as cheaply as + // possible when it is clear that nothing happened. hasSelection + // will be the case when there is a lot of text in the textarea, + // in which case reading its value would be expensive. + if (this.contextMenuPending || !cm.state.focused || + (hasSelection(input) && !prevInput && !this.composing) || + cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) + { return false } + + var text = input.value + // If nothing changed, bail. + if (text == prevInput && !cm.somethingSelected()) { return false } + // Work around nonsensical selection resetting in IE9/10, and + // inexplicable appearance of private area unicode characters on + // some key combos in Mac (#2689). + if (ie && ie_version >= 9 && this.hasSelection === text || + mac && /[\uf700-\uf7ff]/.test(text)) { + cm.display.input.reset() + return false + } + + if (cm.doc.sel == cm.display.selForContextMenu) { + var first = text.charCodeAt(0) + if (first == 0x200b && !prevInput) { prevInput = "\u200b" } + if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo") } + } + // Find the part of the input that is actually new + var same = 0, l = Math.min(prevInput.length, text.length) + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same } + + runInOp(cm, function () { + applyTextInput(cm, text.slice(same), prevInput.length - same, + null, this$1.composing ? "*compose" : null) + + // Don't leave long text in the textarea, since it makes further polling slow + if (text.length > 1000 || text.indexOf("\n") > -1) { input.value = this$1.prevInput = "" } + else { this$1.prevInput = text } + + if (this$1.composing) { + this$1.composing.range.clear() + this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor("to"), + {className: "CodeMirror-composing"}) + } + }) + return true +}; + +TextareaInput.prototype.ensurePolled = function () { + if (this.pollingFast && this.poll()) { this.pollingFast = false } +}; + +TextareaInput.prototype.onKeyPress = function () { + if (ie && ie_version >= 9) { this.hasSelection = null } + this.fastPoll() +}; + +TextareaInput.prototype.onContextMenu = function (e) { + var input = this, cm = input.cm, display = cm.display, te = input.textarea + var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop + if (!pos || presto) { return } // Opera is difficult. + + // Reset the current text selection only if the click is done outside of the selection + // and 'resetSelectionOnContextMenu' option is true. + var reset = cm.options.resetSelectionOnContextMenu + if (reset && cm.doc.sel.contains(pos) == -1) + { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll) } + + var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText + input.wrapper.style.cssText = "position: absolute" + var wrapperBox = input.wrapper.getBoundingClientRect() + te.style.cssText = "position: absolute; width: 30px; height: 30px;\n top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px;\n z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + ";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);" + var oldScrollY + if (webkit) { oldScrollY = window.scrollY } // Work around Chrome issue (#2712) + display.input.focus() + if (webkit) { window.scrollTo(null, oldScrollY) } + display.input.reset() + // Adds "Select all" to context menu in FF + if (!cm.somethingSelected()) { te.value = input.prevInput = " " } + input.contextMenuPending = true + display.selForContextMenu = cm.doc.sel + clearTimeout(display.detectingSelectAll) + + // Select-all will be greyed out if there's nothing to select, so + // this adds a zero-width space so that we can later check whether + // it got selected. + function prepareSelectAllHack() { + if (te.selectionStart != null) { + var selected = cm.somethingSelected() + var extval = "\u200b" + (selected ? te.value : "") + te.value = "\u21da" // Used to catch context-menu undo + te.value = extval + input.prevInput = selected ? "" : "\u200b" + te.selectionStart = 1; te.selectionEnd = extval.length + // Re-set this, in case some other handler touched the + // selection in the meantime. + display.selForContextMenu = cm.doc.sel + } + } + function rehide() { + input.contextMenuPending = false + input.wrapper.style.cssText = oldWrapperCSS + te.style.cssText = oldCSS + if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos) } + + // Try to detect the user choosing select-all + if (te.selectionStart != null) { + if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack() } + var i = 0, poll = function () { + if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && + te.selectionEnd > 0 && input.prevInput == "\u200b") { + operation(cm, selectAll)(cm) + } else if (i++ < 10) { + display.detectingSelectAll = setTimeout(poll, 500) + } else { + display.selForContextMenu = null + display.input.reset() + } + } + display.detectingSelectAll = setTimeout(poll, 200) + } + } + + if (ie && ie_version >= 9) { prepareSelectAllHack() } + if (captureRightClick) { + e_stop(e) + var mouseup = function () { + off(window, "mouseup", mouseup) + setTimeout(rehide, 20) + } + on(window, "mouseup", mouseup) + } else { + setTimeout(rehide, 50) + } +}; + +TextareaInput.prototype.readOnlyChanged = function (val) { + if (!val) { this.reset() } + this.textarea.disabled = val == "nocursor" +}; + +TextareaInput.prototype.setUneditable = function () {}; + +TextareaInput.prototype.needsContentAttribute = false + +function fromTextArea(textarea, options) { + options = options ? copyObj(options) : {} + options.value = textarea.value + if (!options.tabindex && textarea.tabIndex) + { options.tabindex = textarea.tabIndex } + if (!options.placeholder && textarea.placeholder) + { options.placeholder = textarea.placeholder } + // Set autofocus to true if this textarea is focused, or if it has + // autofocus and no other element is focused. + if (options.autofocus == null) { + var hasFocus = activeElt() + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body + } + + function save() {textarea.value = cm.getValue()} + + var realSubmit + if (textarea.form) { + on(textarea.form, "submit", save) + // Deplorable hack to make the submit method do the right thing. + if (!options.leaveSubmitMethodAlone) { + var form = textarea.form + realSubmit = form.submit + try { + var wrappedSubmit = form.submit = function () { + save() + form.submit = realSubmit + form.submit() + form.submit = wrappedSubmit + } + } catch(e) {} + } + } + + options.finishInit = function (cm) { + cm.save = save + cm.getTextArea = function () { return textarea; } + cm.toTextArea = function () { + cm.toTextArea = isNaN // Prevent this from being ran twice + save() + textarea.parentNode.removeChild(cm.getWrapperElement()) + textarea.style.display = "" + if (textarea.form) { + off(textarea.form, "submit", save) + if (typeof textarea.form.submit == "function") + { textarea.form.submit = realSubmit } + } + } + } + + textarea.style.display = "none" + var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); }, + options) + return cm +} + +function addLegacyProps(CodeMirror) { + CodeMirror.off = off + CodeMirror.on = on + CodeMirror.wheelEventPixels = wheelEventPixels + CodeMirror.Doc = Doc + CodeMirror.splitLines = splitLinesAuto + CodeMirror.countColumn = countColumn + CodeMirror.findColumn = findColumn + CodeMirror.isWordChar = isWordCharBasic + CodeMirror.Pass = Pass + CodeMirror.signal = signal + CodeMirror.Line = Line + CodeMirror.changeEnd = changeEnd + CodeMirror.scrollbarModel = scrollbarModel + CodeMirror.Pos = Pos + CodeMirror.cmpPos = cmp + CodeMirror.modes = modes + CodeMirror.mimeModes = mimeModes + CodeMirror.resolveMode = resolveMode + CodeMirror.getMode = getMode + CodeMirror.modeExtensions = modeExtensions + CodeMirror.extendMode = extendMode + CodeMirror.copyState = copyState + CodeMirror.startState = startState + CodeMirror.innerMode = innerMode + CodeMirror.commands = commands + CodeMirror.keyMap = keyMap + CodeMirror.keyName = keyName + CodeMirror.isModifierKey = isModifierKey + CodeMirror.lookupKey = lookupKey + CodeMirror.normalizeKeyMap = normalizeKeyMap + CodeMirror.StringStream = StringStream + CodeMirror.SharedTextMarker = SharedTextMarker + CodeMirror.TextMarker = TextMarker + CodeMirror.LineWidget = LineWidget + CodeMirror.e_preventDefault = e_preventDefault + CodeMirror.e_stopPropagation = e_stopPropagation + CodeMirror.e_stop = e_stop + CodeMirror.addClass = addClass + CodeMirror.contains = contains + CodeMirror.rmClass = rmClass + CodeMirror.keyNames = keyNames +} + +// EDITOR CONSTRUCTOR + +defineOptions(CodeMirror) + +addEditorMethods(CodeMirror) + +// Set up methods on CodeMirror's prototype to redirect to the editor's document. +var dontDelegate = "iter insert remove copy getEditor constructor".split(" ") +for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + { CodeMirror.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments)} + })(Doc.prototype[prop]) } } + +eventMixin(Doc) + +// INPUT HANDLING + +CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput} + +// MODE DEFINITION AND QUERYING + +// Extra arguments are stored as the mode's dependencies, which is +// used by (legacy) mechanisms like loadmode.js to automatically +// load a mode. (Preferred mechanism is the require/define calls.) +CodeMirror.defineMode = function(name/*, mode, …*/) { + if (!CodeMirror.defaults.mode && name != "null") { CodeMirror.defaults.mode = name } + defineMode.apply(this, arguments) +} + +CodeMirror.defineMIME = defineMIME + +// Minimal default mode. +CodeMirror.defineMode("null", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); }) +CodeMirror.defineMIME("text/plain", "null") + +// EXTENSIONS + +CodeMirror.defineExtension = function (name, func) { + CodeMirror.prototype[name] = func +} +CodeMirror.defineDocExtension = function (name, func) { + Doc.prototype[name] = func +} + +CodeMirror.fromTextArea = fromTextArea + +addLegacyProps(CodeMirror) + +CodeMirror.version = "5.30.0" + +return CodeMirror; + +}))); \ No newline at end of file diff --git a/global/codemirror/mode/apl/apl.js b/global/codemirror/mode/apl/apl.js new file mode 100644 index 00000000..caafe4e9 --- /dev/null +++ b/global/codemirror/mode/apl/apl.js @@ -0,0 +1,174 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("apl", function() { + var builtInOps = { + ".": "innerProduct", + "\\": "scan", + "/": "reduce", + "⌿": "reduce1Axis", + "⍀": "scan1Axis", + "¨": "each", + "⍣": "power" + }; + var builtInFuncs = { + "+": ["conjugate", "add"], + "−": ["negate", "subtract"], + "×": ["signOf", "multiply"], + "÷": ["reciprocal", "divide"], + "⌈": ["ceiling", "greaterOf"], + "⌊": ["floor", "lesserOf"], + "∣": ["absolute", "residue"], + "⍳": ["indexGenerate", "indexOf"], + "?": ["roll", "deal"], + "⋆": ["exponentiate", "toThePowerOf"], + "⍟": ["naturalLog", "logToTheBase"], + "○": ["piTimes", "circularFuncs"], + "!": ["factorial", "binomial"], + "⌹": ["matrixInverse", "matrixDivide"], + "<": [null, "lessThan"], + "≤": [null, "lessThanOrEqual"], + "=": [null, "equals"], + ">": [null, "greaterThan"], + "≥": [null, "greaterThanOrEqual"], + "≠": [null, "notEqual"], + "≡": ["depth", "match"], + "≢": [null, "notMatch"], + "∈": ["enlist", "membership"], + "⍷": [null, "find"], + "∪": ["unique", "union"], + "∩": [null, "intersection"], + "∼": ["not", "without"], + "∨": [null, "or"], + "∧": [null, "and"], + "⍱": [null, "nor"], + "⍲": [null, "nand"], + "⍴": ["shapeOf", "reshape"], + ",": ["ravel", "catenate"], + "⍪": [null, "firstAxisCatenate"], + "⌽": ["reverse", "rotate"], + "⊖": ["axis1Reverse", "axis1Rotate"], + "⍉": ["transpose", null], + "↑": ["first", "take"], + "↓": [null, "drop"], + "⊂": ["enclose", "partitionWithAxis"], + "⊃": ["diclose", "pick"], + "⌷": [null, "index"], + "⍋": ["gradeUp", null], + "⍒": ["gradeDown", null], + "⊤": ["encode", null], + "⊥": ["decode", null], + "⍕": ["format", "formatByExample"], + "⍎": ["execute", null], + "⊣": ["stop", "left"], + "⊢": ["pass", "right"] + }; + + var isOperator = /[\.\/⌿⍀¨⍣]/; + var isNiladic = /⍬/; + var isFunction = /[\+−×÷⌈⌊∣⍳\?⋆⍟○!⌹<≤=>≥≠≡≢∈⍷∪∩∼∨∧⍱⍲⍴,⍪⌽⊖⍉↑↓⊂⊃⌷⍋⍒⊤⊥⍕⍎⊣⊢]/; + var isArrow = /←/; + var isComment = /[⍝#].*$/; + + var stringEater = function(type) { + var prev; + prev = false; + return function(c) { + prev = c; + if (c === type) { + return prev === "\\"; + } + return true; + }; + }; + return { + startState: function() { + return { + prev: false, + func: false, + op: false, + string: false, + escape: false + }; + }, + token: function(stream, state) { + var ch, funcName; + if (stream.eatSpace()) { + return null; + } + ch = stream.next(); + if (ch === '"' || ch === "'") { + stream.eatWhile(stringEater(ch)); + stream.next(); + state.prev = true; + return "string"; + } + if (/[\[{\(]/.test(ch)) { + state.prev = false; + return null; + } + if (/[\]}\)]/.test(ch)) { + state.prev = true; + return null; + } + if (isNiladic.test(ch)) { + state.prev = false; + return "niladic"; + } + if (/[¯\d]/.test(ch)) { + if (state.func) { + state.func = false; + state.prev = false; + } else { + state.prev = true; + } + stream.eatWhile(/[\w\.]/); + return "number"; + } + if (isOperator.test(ch)) { + return "operator apl-" + builtInOps[ch]; + } + if (isArrow.test(ch)) { + return "apl-arrow"; + } + if (isFunction.test(ch)) { + funcName = "apl-"; + if (builtInFuncs[ch] != null) { + if (state.prev) { + funcName += builtInFuncs[ch][1]; + } else { + funcName += builtInFuncs[ch][0]; + } + } + state.func = true; + state.prev = false; + return "function " + funcName; + } + if (isComment.test(ch)) { + stream.skipToEnd(); + return "comment"; + } + if (ch === "∘" && stream.peek() === ".") { + stream.next(); + return "function jot-dot"; + } + stream.eatWhile(/[\w\$_]/); + state.prev = true; + return "keyword"; + } + }; +}); + +CodeMirror.defineMIME("text/apl", "apl"); + +}); diff --git a/global/codemirror/mode/apl/index.html b/global/codemirror/mode/apl/index.html new file mode 100644 index 00000000..53dda6b5 --- /dev/null +++ b/global/codemirror/mode/apl/index.html @@ -0,0 +1,72 @@ + + +CodeMirror: APL mode + + + + + + + + + + +
+

APL mode

+
+ + + +

Simple mode that tries to handle APL as well as it can.

+

It attempts to label functions/operators based upon + monadic/dyadic usage (but this is far from fully fleshed out). + This means there are meaningful classnames so hover states can + have popups etc.

+ +

MIME types defined: text/apl (APL code)

+
diff --git a/global/codemirror/mode/asciiarmor/asciiarmor.js b/global/codemirror/mode/asciiarmor/asciiarmor.js new file mode 100644 index 00000000..fa1b0f8c --- /dev/null +++ b/global/codemirror/mode/asciiarmor/asciiarmor.js @@ -0,0 +1,74 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function errorIfNotEmpty(stream) { + var nonWS = stream.match(/^\s*\S/); + stream.skipToEnd(); + return nonWS ? "error" : null; + } + + CodeMirror.defineMode("asciiarmor", function() { + return { + token: function(stream, state) { + var m; + if (state.state == "top") { + if (stream.sol() && (m = stream.match(/^-----BEGIN (.*)?-----\s*$/))) { + state.state = "headers"; + state.type = m[1]; + return "tag"; + } + return errorIfNotEmpty(stream); + } else if (state.state == "headers") { + if (stream.sol() && stream.match(/^\w+:/)) { + state.state = "header"; + return "atom"; + } else { + var result = errorIfNotEmpty(stream); + if (result) state.state = "body"; + return result; + } + } else if (state.state == "header") { + stream.skipToEnd(); + state.state = "headers"; + return "string"; + } else if (state.state == "body") { + if (stream.sol() && (m = stream.match(/^-----END (.*)?-----\s*$/))) { + if (m[1] != state.type) return "error"; + state.state = "end"; + return "tag"; + } else { + if (stream.eatWhile(/[A-Za-z0-9+\/=]/)) { + return null; + } else { + stream.next(); + return "error"; + } + } + } else if (state.state == "end") { + return errorIfNotEmpty(stream); + } + }, + blankLine: function(state) { + if (state.state == "headers") state.state = "body"; + }, + startState: function() { + return {state: "top", type: null}; + } + }; + }); + + CodeMirror.defineMIME("application/pgp", "asciiarmor"); + CodeMirror.defineMIME("application/pgp-encrypted", "asciiarmor"); + CodeMirror.defineMIME("application/pgp-keys", "asciiarmor"); + CodeMirror.defineMIME("application/pgp-signature", "asciiarmor"); +}); diff --git a/global/codemirror/mode/asciiarmor/index.html b/global/codemirror/mode/asciiarmor/index.html new file mode 100644 index 00000000..4d584efb --- /dev/null +++ b/global/codemirror/mode/asciiarmor/index.html @@ -0,0 +1,46 @@ + + +CodeMirror: ASCII Armor (PGP) mode + + + + + + + + + +
+

ASCII Armor (PGP) mode

+
+ + + +

MIME types +defined: application/pgp, application/pgp-encrypted, application/pgp-keys, application/pgp-signature

+ +
diff --git a/global/codemirror/mode/asn.1/asn.1.js b/global/codemirror/mode/asn.1/asn.1.js new file mode 100644 index 00000000..9600247e --- /dev/null +++ b/global/codemirror/mode/asn.1/asn.1.js @@ -0,0 +1,204 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("asn.1", function(config, parserConfig) { + var indentUnit = config.indentUnit, + keywords = parserConfig.keywords || {}, + cmipVerbs = parserConfig.cmipVerbs || {}, + compareTypes = parserConfig.compareTypes || {}, + status = parserConfig.status || {}, + tags = parserConfig.tags || {}, + storage = parserConfig.storage || {}, + modifier = parserConfig.modifier || {}, + accessTypes = parserConfig.accessTypes|| {}, + multiLineStrings = parserConfig.multiLineStrings, + indentStatements = parserConfig.indentStatements !== false; + var isOperatorChar = /[\|\^]/; + var curPunc; + + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + if (/[\[\]\(\){}:=,;]/.test(ch)) { + curPunc = ch; + return "punctuation"; + } + if (ch == "-"){ + if (stream.eat("-")) { + stream.skipToEnd(); + return "comment"; + } + } + if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } + if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + + stream.eatWhile(/[\w\-]/); + var cur = stream.current(); + if (keywords.propertyIsEnumerable(cur)) return "keyword"; + if (cmipVerbs.propertyIsEnumerable(cur)) return "variable cmipVerbs"; + if (compareTypes.propertyIsEnumerable(cur)) return "atom compareTypes"; + if (status.propertyIsEnumerable(cur)) return "comment status"; + if (tags.propertyIsEnumerable(cur)) return "variable-3 tags"; + if (storage.propertyIsEnumerable(cur)) return "builtin storage"; + if (modifier.propertyIsEnumerable(cur)) return "string-2 modifier"; + if (accessTypes.propertyIsEnumerable(cur)) return "atom accessTypes"; + + return "variable"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped){ + var afterNext = stream.peek(); + //look if the character if the quote is like the B in '10100010'B + if (afterNext){ + afterNext = afterNext.toLowerCase(); + if(afterNext == "b" || afterNext == "h" || afterNext == "o") + stream.next(); + } + end = true; break; + } + escaped = !escaped && next == "\\"; + } + if (end || !(escaped || multiLineStrings)) + state.tokenize = null; + return "string"; + }; + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + function pushContext(state, col, type) { + var indent = state.indented; + if (state.context && state.context.type == "statement") + indent = state.context.indented; + return state.context = new Context(indent, col, type, null, state.context); + } + function popContext(state) { + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") + state.indented = state.context.indented; + return state.context = state.context.prev; + } + + //Interface + return { + startState: function(basecolumn) { + return { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (stream.eatSpace()) return null; + curPunc = null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment") return style; + if (ctx.align == null) ctx.align = true; + + if ((curPunc == ";" || curPunc == ":" || curPunc == ",") + && ctx.type == "statement"){ + popContext(state); + } + else if (curPunc == "{") pushContext(state, stream.column(), "}"); + else if (curPunc == "[") pushContext(state, stream.column(), "]"); + else if (curPunc == "(") pushContext(state, stream.column(), ")"); + else if (curPunc == "}") { + while (ctx.type == "statement") ctx = popContext(state); + if (ctx.type == "}") ctx = popContext(state); + while (ctx.type == "statement") ctx = popContext(state); + } + else if (curPunc == ctx.type) popContext(state); + else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") + && curPunc != ';') || (ctx.type == "statement" + && curPunc == "newstatement"))) + pushContext(state, stream.column(), "statement"); + + state.startOfLine = false; + return style; + }, + + electricChars: "{}", + lineComment: "--", + fold: "brace" + }; + }); + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + CodeMirror.defineMIME("text/x-ttcn-asn", { + name: "asn.1", + keywords: words("DEFINITIONS OBJECTS IF DERIVED INFORMATION ACTION" + + " REPLY ANY NAMED CHARACTERIZED BEHAVIOUR REGISTERED" + + " WITH AS IDENTIFIED CONSTRAINED BY PRESENT BEGIN" + + " IMPORTS FROM UNITS SYNTAX MIN-ACCESS MAX-ACCESS" + + " MINACCESS MAXACCESS REVISION STATUS DESCRIPTION" + + " SEQUENCE SET COMPONENTS OF CHOICE DistinguishedName" + + " ENUMERATED SIZE MODULE END INDEX AUGMENTS EXTENSIBILITY" + + " IMPLIED EXPORTS"), + cmipVerbs: words("ACTIONS ADD GET NOTIFICATIONS REPLACE REMOVE"), + compareTypes: words("OPTIONAL DEFAULT MANAGED MODULE-TYPE MODULE_IDENTITY" + + " MODULE-COMPLIANCE OBJECT-TYPE OBJECT-IDENTITY" + + " OBJECT-COMPLIANCE MODE CONFIRMED CONDITIONAL" + + " SUBORDINATE SUPERIOR CLASS TRUE FALSE NULL" + + " TEXTUAL-CONVENTION"), + status: words("current deprecated mandatory obsolete"), + tags: words("APPLICATION AUTOMATIC EXPLICIT IMPLICIT PRIVATE TAGS" + + " UNIVERSAL"), + storage: words("BOOLEAN INTEGER OBJECT IDENTIFIER BIT OCTET STRING" + + " UTCTime InterfaceIndex IANAifType CMIP-Attribute" + + " REAL PACKAGE PACKAGES IpAddress PhysAddress" + + " NetworkAddress BITS BMPString TimeStamp TimeTicks" + + " TruthValue RowStatus DisplayString GeneralString" + + " GraphicString IA5String NumericString" + + " PrintableString SnmpAdminAtring TeletexString" + + " UTF8String VideotexString VisibleString StringStore" + + " ISO646String T61String UniversalString Unsigned32" + + " Integer32 Gauge Gauge32 Counter Counter32 Counter64"), + modifier: words("ATTRIBUTE ATTRIBUTES MANDATORY-GROUP MANDATORY-GROUPS" + + " GROUP GROUPS ELEMENTS EQUALITY ORDERING SUBSTRINGS" + + " DEFINED"), + accessTypes: words("not-accessible accessible-for-notify read-only" + + " read-create read-write"), + multiLineStrings: true + }); +}); diff --git a/global/codemirror/mode/asn.1/index.html b/global/codemirror/mode/asn.1/index.html new file mode 100644 index 00000000..699fd447 --- /dev/null +++ b/global/codemirror/mode/asn.1/index.html @@ -0,0 +1,77 @@ + + +CodeMirror: ASN.1 mode + + + + + + + + +
+

ASN.1 example

+
+ +
+ + +
+

Language: Abstract Syntax Notation One + (ASN.1) +

+

MIME types defined: text/x-ttcn-asn

+ +
+

The development of this mode has been sponsored by Ericsson + .

+

Coded by Asmelash Tsegay Gebretsadkan

+
+ diff --git a/global/codemirror/mode/asterisk/asterisk.js b/global/codemirror/mode/asterisk/asterisk.js new file mode 100644 index 00000000..b7ebfc5a --- /dev/null +++ b/global/codemirror/mode/asterisk/asterisk.js @@ -0,0 +1,196 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/* + * ===================================================================================== + * + * Filename: mode/asterisk/asterisk.js + * + * Description: CodeMirror mode for Asterisk dialplan + * + * Created: 05/17/2012 09:20:25 PM + * Revision: none + * + * Author: Stas Kobzar (stas@modulis.ca), + * Company: Modulis.ca Inc. + * + * ===================================================================================== + */ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("asterisk", function() { + var atoms = ["exten", "same", "include","ignorepat","switch"], + dpcmd = ["#include","#exec"], + apps = [ + "addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi", + "alarmreceiver","amd","answer","authenticate","background","backgrounddetect", + "bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent", + "changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge", + "congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge", + "dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility", + "datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa", + "dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy", + "externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif", + "goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete", + "ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus", + "jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme", + "meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete", + "minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode", + "mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish", + "originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce", + "parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones", + "privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten", + "readfile","receivefax","receivefax","receivefax","record","removequeuemember", + "resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun", + "saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax", + "sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags", + "setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel", + "slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground", + "speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound", + "speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor", + "stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec", + "trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate", + "vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring", + "waitforsilence","waitmusiconhold","waituntil","while","zapateller" + ]; + + function basicToken(stream,state){ + var cur = ''; + var ch = stream.next(); + // comment + if(ch == ";") { + stream.skipToEnd(); + return "comment"; + } + // context + if(ch == '[') { + stream.skipTo(']'); + stream.eat(']'); + return "header"; + } + // string + if(ch == '"') { + stream.skipTo('"'); + return "string"; + } + if(ch == "'") { + stream.skipTo("'"); + return "string-2"; + } + // dialplan commands + if(ch == '#') { + stream.eatWhile(/\w/); + cur = stream.current(); + if(dpcmd.indexOf(cur) !== -1) { + stream.skipToEnd(); + return "strong"; + } + } + // application args + if(ch == '$'){ + var ch1 = stream.peek(); + if(ch1 == '{'){ + stream.skipTo('}'); + stream.eat('}'); + return "variable-3"; + } + } + // extension + stream.eatWhile(/\w/); + cur = stream.current(); + if(atoms.indexOf(cur) !== -1) { + state.extenStart = true; + switch(cur) { + case 'same': state.extenSame = true; break; + case 'include': + case 'switch': + case 'ignorepat': + state.extenInclude = true;break; + default:break; + } + return "atom"; + } + } + + return { + startState: function() { + return { + extenStart: false, + extenSame: false, + extenInclude: false, + extenExten: false, + extenPriority: false, + extenApplication: false + }; + }, + token: function(stream, state) { + + var cur = ''; + if(stream.eatSpace()) return null; + // extension started + if(state.extenStart){ + stream.eatWhile(/[^\s]/); + cur = stream.current(); + if(/^=>?$/.test(cur)){ + state.extenExten = true; + state.extenStart = false; + return "strong"; + } else { + state.extenStart = false; + stream.skipToEnd(); + return "error"; + } + } else if(state.extenExten) { + // set exten and priority + state.extenExten = false; + state.extenPriority = true; + stream.eatWhile(/[^,]/); + if(state.extenInclude) { + stream.skipToEnd(); + state.extenPriority = false; + state.extenInclude = false; + } + if(state.extenSame) { + state.extenPriority = false; + state.extenSame = false; + state.extenApplication = true; + } + return "tag"; + } else if(state.extenPriority) { + state.extenPriority = false; + state.extenApplication = true; + stream.next(); // get comma + if(state.extenSame) return null; + stream.eatWhile(/[^,]/); + return "number"; + } else if(state.extenApplication) { + stream.eatWhile(/,/); + cur = stream.current(); + if(cur === ',') return null; + stream.eatWhile(/\w/); + cur = stream.current().toLowerCase(); + state.extenApplication = false; + if(apps.indexOf(cur) !== -1){ + return "def strong"; + } + } else{ + return basicToken(stream,state); + } + + return null; + } + }; +}); + +CodeMirror.defineMIME("text/x-asterisk", "asterisk"); + +}); diff --git a/global/codemirror/mode/asterisk/index.html b/global/codemirror/mode/asterisk/index.html new file mode 100644 index 00000000..9625668c --- /dev/null +++ b/global/codemirror/mode/asterisk/index.html @@ -0,0 +1,154 @@ + + +CodeMirror: Asterisk dialplan mode + + + + + + + + + +
+

Asterisk dialplan mode

+
+ + +

MIME types defined: text/x-asterisk.

+ +
diff --git a/global/codemirror/mode/brainfuck/brainfuck.js b/global/codemirror/mode/brainfuck/brainfuck.js new file mode 100644 index 00000000..3becf2a5 --- /dev/null +++ b/global/codemirror/mode/brainfuck/brainfuck.js @@ -0,0 +1,85 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Brainfuck mode created by Michael Kaminsky https://github.com/mkaminsky11 + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") + mod(require("../../lib/codemirror")) + else if (typeof define == "function" && define.amd) + define(["../../lib/codemirror"], mod) + else + mod(CodeMirror) +})(function(CodeMirror) { + "use strict" + var reserve = "><+-.,[]".split(""); + /* + comments can be either: + placed behind lines + + +++ this is a comment + + where reserved characters cannot be used + or in a loop + [ + this is ok to use [ ] and stuff + ] + or preceded by # + */ + CodeMirror.defineMode("brainfuck", function() { + return { + startState: function() { + return { + commentLine: false, + left: 0, + right: 0, + commentLoop: false + } + }, + token: function(stream, state) { + if (stream.eatSpace()) return null + if(stream.sol()){ + state.commentLine = false; + } + var ch = stream.next().toString(); + if(reserve.indexOf(ch) !== -1){ + if(state.commentLine === true){ + if(stream.eol()){ + state.commentLine = false; + } + return "comment"; + } + if(ch === "]" || ch === "["){ + if(ch === "["){ + state.left++; + } + else{ + state.right++; + } + return "bracket"; + } + else if(ch === "+" || ch === "-"){ + return "keyword"; + } + else if(ch === "<" || ch === ">"){ + return "atom"; + } + else if(ch === "." || ch === ","){ + return "def"; + } + } + else{ + state.commentLine = true; + if(stream.eol()){ + state.commentLine = false; + } + return "comment"; + } + if(stream.eol()){ + state.commentLine = false; + } + } + }; + }); +CodeMirror.defineMIME("text/x-brainfuck","brainfuck") +}); diff --git a/global/codemirror/mode/brainfuck/index.html b/global/codemirror/mode/brainfuck/index.html new file mode 100644 index 00000000..6048fc24 --- /dev/null +++ b/global/codemirror/mode/brainfuck/index.html @@ -0,0 +1,85 @@ + + +CodeMirror: Brainfuck mode + + + + + + + + + + +
+

Brainfuck mode

+
+ + + +

A mode for Brainfuck

+ +

MIME types defined: text/x-brainfuck

+
diff --git a/global/codemirror/mode/clike/clike.js b/global/codemirror/mode/clike/clike.js new file mode 100644 index 00000000..ef5b16fc --- /dev/null +++ b/global/codemirror/mode/clike/clike.js @@ -0,0 +1,789 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +function Context(indented, column, type, info, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.info = info; + this.align = align; + this.prev = prev; +} +function pushContext(state, col, type, info) { + var indent = state.indented; + if (state.context && state.context.type == "statement" && type != "statement") + indent = state.context.indented; + return state.context = new Context(indent, col, type, info, null, state.context); +} +function popContext(state) { + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") + state.indented = state.context.indented; + return state.context = state.context.prev; +} + +function typeBefore(stream, state, pos) { + if (state.prevToken == "variable" || state.prevToken == "type") return true; + if (/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(stream.string.slice(0, pos))) return true; + if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true; +} + +function isTopScope(context) { + for (;;) { + if (!context || context.type == "top") return true; + if (context.type == "}" && context.prev.info != "namespace") return false; + context = context.prev; + } +} + +CodeMirror.defineMode("clike", function(config, parserConfig) { + var indentUnit = config.indentUnit, + statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, + dontAlignCalls = parserConfig.dontAlignCalls, + keywords = parserConfig.keywords || {}, + types = parserConfig.types || {}, + builtin = parserConfig.builtin || {}, + blockKeywords = parserConfig.blockKeywords || {}, + defKeywords = parserConfig.defKeywords || {}, + atoms = parserConfig.atoms || {}, + hooks = parserConfig.hooks || {}, + multiLineStrings = parserConfig.multiLineStrings, + indentStatements = parserConfig.indentStatements !== false, + indentSwitch = parserConfig.indentSwitch !== false, + namespaceSeparator = parserConfig.namespaceSeparator, + isPunctuationChar = parserConfig.isPunctuationChar || /[\[\]{}\(\),;\:\.]/, + numberStart = parserConfig.numberStart || /[\d\.]/, + number = parserConfig.number || /^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i, + isOperatorChar = parserConfig.isOperatorChar || /[+\-*&%=<>!?|\/]/, + isIdentifierChar = parserConfig.isIdentifierChar || /[\w\$_\xa1-\uffff]/; + + var curPunc, isDefKeyword; + + function tokenBase(stream, state) { + var ch = stream.next(); + if (hooks[ch]) { + var result = hooks[ch](stream, state); + if (result !== false) return result; + } + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + if (isPunctuationChar.test(ch)) { + curPunc = ch; + return null; + } + if (numberStart.test(ch)) { + stream.backUp(1) + if (stream.match(number)) return "number" + stream.next() + } + if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + } + if (isOperatorChar.test(ch)) { + while (!stream.match(/^\/[\/*]/, false) && stream.eat(isOperatorChar)) {} + return "operator"; + } + stream.eatWhile(isIdentifierChar); + if (namespaceSeparator) while (stream.match(namespaceSeparator)) + stream.eatWhile(isIdentifierChar); + + var cur = stream.current(); + if (contains(keywords, cur)) { + if (contains(blockKeywords, cur)) curPunc = "newstatement"; + if (contains(defKeywords, cur)) isDefKeyword = true; + return "keyword"; + } + if (contains(types, cur)) return "type"; + if (contains(builtin, cur)) { + if (contains(blockKeywords, cur)) curPunc = "newstatement"; + return "builtin"; + } + if (contains(atoms, cur)) return "atom"; + return "variable"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) {end = true; break;} + escaped = !escaped && next == "\\"; + } + if (end || !(escaped || multiLineStrings)) + state.tokenize = null; + return "string"; + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = null; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function maybeEOL(stream, state) { + if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context)) + state.typeAtEndOfLine = typeBefore(stream, state, stream.pos) + } + + // Interface + + return { + startState: function(basecolumn) { + return { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", null, false), + indented: 0, + startOfLine: true, + prevToken: null + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (stream.eatSpace()) { maybeEOL(stream, state); return null; } + curPunc = isDefKeyword = null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment" || style == "meta") return style; + if (ctx.align == null) ctx.align = true; + + if (curPunc == ";" || curPunc == ":" || (curPunc == "," && stream.match(/^\s*(?:\/\/.*)?$/, false))) + while (state.context.type == "statement") popContext(state); + else if (curPunc == "{") pushContext(state, stream.column(), "}"); + else if (curPunc == "[") pushContext(state, stream.column(), "]"); + else if (curPunc == "(") pushContext(state, stream.column(), ")"); + else if (curPunc == "}") { + while (ctx.type == "statement") ctx = popContext(state); + if (ctx.type == "}") ctx = popContext(state); + while (ctx.type == "statement") ctx = popContext(state); + } + else if (curPunc == ctx.type) popContext(state); + else if (indentStatements && + (((ctx.type == "}" || ctx.type == "top") && curPunc != ";") || + (ctx.type == "statement" && curPunc == "newstatement"))) { + pushContext(state, stream.column(), "statement", stream.current()); + } + + if (style == "variable" && + ((state.prevToken == "def" || + (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) && + isTopScope(state.context) && stream.match(/^\s*\(/, false))))) + style = "def"; + + if (hooks.token) { + var result = hooks.token(stream, state, style); + if (result !== undefined) style = result; + } + + if (style == "def" && parserConfig.styleDefs === false) style = "variable"; + + state.startOfLine = false; + state.prevToken = isDefKeyword ? "def" : style || curPunc; + maybeEOL(stream, state); + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass; + var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); + if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; + if (parserConfig.dontIndentStatements) + while (ctx.type == "statement" && parserConfig.dontIndentStatements.test(ctx.info)) + ctx = ctx.prev + if (hooks.indent) { + var hook = hooks.indent(state, ctx, textAfter); + if (typeof hook == "number") return hook + } + var closing = firstChar == ctx.type; + var switchBlock = ctx.prev && ctx.prev.info == "switch"; + if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) { + while (ctx.type != "top" && ctx.type != "}") ctx = ctx.prev + return ctx.indented + } + if (ctx.type == "statement") + return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); + if (ctx.align && (!dontAlignCalls || ctx.type != ")")) + return ctx.column + (closing ? 0 : 1); + if (ctx.type == ")" && !closing) + return ctx.indented + statementIndentUnit; + + return ctx.indented + (closing ? 0 : indentUnit) + + (!closing && switchBlock && !/^(?:case|default)\b/.test(textAfter) ? indentUnit : 0); + }, + + electricInput: indentSwitch ? /^\s*(?:case .*?:|default:|\{\}?|\})$/ : /^\s*[{}]$/, + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//", + fold: "brace" + }; +}); + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + function contains(words, word) { + if (typeof words === "function") { + return words(word); + } else { + return words.propertyIsEnumerable(word); + } + } + var cKeywords = "auto if break case register continue return default do sizeof " + + "static else struct switch extern typedef union for goto while enum const volatile"; + var cTypes = "int long char short double float unsigned signed void size_t ptrdiff_t"; + + function cppHook(stream, state) { + if (!state.startOfLine) return false + for (var ch, next = null; ch = stream.peek();) { + if (ch == "\\" && stream.match(/^.$/)) { + next = cppHook + break + } else if (ch == "/" && stream.match(/^\/[\/\*]/, false)) { + break + } + stream.next() + } + state.tokenize = next + return "meta" + } + + function pointerHook(_stream, state) { + if (state.prevToken == "type") return "type"; + return false; + } + + function cpp14Literal(stream) { + stream.eatWhile(/[\w\.']/); + return "number"; + } + + function cpp11StringHook(stream, state) { + stream.backUp(1); + // Raw strings. + if (stream.match(/(R|u8R|uR|UR|LR)/)) { + var match = stream.match(/"([^\s\\()]{0,16})\(/); + if (!match) { + return false; + } + state.cpp11RawStringDelim = match[1]; + state.tokenize = tokenRawString; + return tokenRawString(stream, state); + } + // Unicode strings/chars. + if (stream.match(/(u8|u|U|L)/)) { + if (stream.match(/["']/, /* eat */ false)) { + return "string"; + } + return false; + } + // Ignore this hook. + stream.next(); + return false; + } + + function cppLooksLikeConstructor(word) { + var lastTwo = /(\w+)::~?(\w+)$/.exec(word); + return lastTwo && lastTwo[1] == lastTwo[2]; + } + + // C#-style strings where "" escapes a quote. + function tokenAtString(stream, state) { + var next; + while ((next = stream.next()) != null) { + if (next == '"' && !stream.eat('"')) { + state.tokenize = null; + break; + } + } + return "string"; + } + + // C++11 raw string literal is "( anything )", where + // can be a string up to 16 characters long. + function tokenRawString(stream, state) { + // Escape characters that have special regex meanings. + var delim = state.cpp11RawStringDelim.replace(/[^\w\s]/g, '\\$&'); + var match = stream.match(new RegExp(".*?\\)" + delim + '"')); + if (match) + state.tokenize = null; + else + stream.skipToEnd(); + return "string"; + } + + function def(mimes, mode) { + if (typeof mimes == "string") mimes = [mimes]; + var words = []; + function add(obj) { + if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) + words.push(prop); + } + add(mode.keywords); + add(mode.types); + add(mode.builtin); + add(mode.atoms); + if (words.length) { + mode.helperType = mimes[0]; + CodeMirror.registerHelper("hintWords", mimes[0], words); + } + + for (var i = 0; i < mimes.length; ++i) + CodeMirror.defineMIME(mimes[i], mode); + } + + def(["text/x-csrc", "text/x-c", "text/x-chdr"], { + name: "clike", + keywords: words(cKeywords), + types: words(cTypes + " bool _Complex _Bool float_t double_t intptr_t intmax_t " + + "int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t " + + "uint32_t uint64_t"), + blockKeywords: words("case do else for if switch while struct"), + defKeywords: words("struct"), + typeFirstDefinitions: true, + atoms: words("null true false"), + hooks: {"#": cppHook, "*": pointerHook}, + modeProps: {fold: ["brace", "include"]} + }); + + def(["text/x-c++src", "text/x-c++hdr"], { + name: "clike", + keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try explicit new " + + "static_cast typeid catch operator template typename class friend private " + + "this using const_cast inline public throw virtual delete mutable protected " + + "alignas alignof constexpr decltype nullptr noexcept thread_local final " + + "static_assert override"), + types: words(cTypes + " bool wchar_t"), + blockKeywords: words("catch class do else finally for if struct switch try while"), + defKeywords: words("class namespace struct enum union"), + typeFirstDefinitions: true, + atoms: words("true false null"), + dontIndentStatements: /^template$/, + isIdentifierChar: /[\w\$_~\xa1-\uffff]/, + hooks: { + "#": cppHook, + "*": pointerHook, + "u": cpp11StringHook, + "U": cpp11StringHook, + "L": cpp11StringHook, + "R": cpp11StringHook, + "0": cpp14Literal, + "1": cpp14Literal, + "2": cpp14Literal, + "3": cpp14Literal, + "4": cpp14Literal, + "5": cpp14Literal, + "6": cpp14Literal, + "7": cpp14Literal, + "8": cpp14Literal, + "9": cpp14Literal, + token: function(stream, state, style) { + if (style == "variable" && stream.peek() == "(" && + (state.prevToken == ";" || state.prevToken == null || + state.prevToken == "}") && + cppLooksLikeConstructor(stream.current())) + return "def"; + } + }, + namespaceSeparator: "::", + modeProps: {fold: ["brace", "include"]} + }); + + def("text/x-java", { + name: "clike", + keywords: words("abstract assert break case catch class const continue default " + + "do else enum extends final finally float for goto if implements import " + + "instanceof interface native new package private protected public " + + "return static strictfp super switch synchronized this throw throws transient " + + "try volatile while @interface"), + types: words("byte short int long float double boolean char void Boolean Byte Character Double Float " + + "Integer Long Number Object Short String StringBuffer StringBuilder Void"), + blockKeywords: words("catch class do else finally for if switch try while"), + defKeywords: words("class interface package enum @interface"), + typeFirstDefinitions: true, + atoms: words("true false null"), + number: /^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i, + hooks: { + "@": function(stream) { + // Don't match the @interface keyword. + if (stream.match('interface', false)) return false; + + stream.eatWhile(/[\w\$_]/); + return "meta"; + } + }, + modeProps: {fold: ["brace", "import"]} + }); + + def("text/x-csharp", { + name: "clike", + keywords: words("abstract as async await base break case catch checked class const continue" + + " default delegate do else enum event explicit extern finally fixed for" + + " foreach goto if implicit in interface internal is lock namespace new" + + " operator out override params private protected public readonly ref return sealed" + + " sizeof stackalloc static struct switch this throw try typeof unchecked" + + " unsafe using virtual void volatile while add alias ascending descending dynamic from get" + + " global group into join let orderby partial remove select set value var yield"), + types: words("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func" + + " Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32" + + " UInt64 bool byte char decimal double short int long object" + + " sbyte float string ushort uint ulong"), + blockKeywords: words("catch class do else finally for foreach if struct switch try while"), + defKeywords: words("class interface namespace struct var"), + typeFirstDefinitions: true, + atoms: words("true false null"), + hooks: { + "@": function(stream, state) { + if (stream.eat('"')) { + state.tokenize = tokenAtString; + return tokenAtString(stream, state); + } + stream.eatWhile(/[\w\$_]/); + return "meta"; + } + } + }); + + function tokenTripleString(stream, state) { + var escaped = false; + while (!stream.eol()) { + if (!escaped && stream.match('"""')) { + state.tokenize = null; + break; + } + escaped = stream.next() == "\\" && !escaped; + } + return "string"; + } + + def("text/x-scala", { + name: "clike", + keywords: words( + + /* scala */ + "abstract case catch class def do else extends final finally for forSome if " + + "implicit import lazy match new null object override package private protected return " + + "sealed super this throw trait try type val var while with yield _ " + + + /* package scala */ + "assert assume require print println printf readLine readBoolean readByte readShort " + + "readChar readInt readLong readFloat readDouble" + ), + types: words( + "AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " + + "Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable " + + "Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " + + "Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " + + "StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector " + + + /* package java.lang */ + "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + + "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + + "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + + "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" + ), + multiLineStrings: true, + blockKeywords: words("catch class enum do else finally for forSome if match switch try while"), + defKeywords: words("class enum def object package trait type val var"), + atoms: words("true false null"), + indentStatements: false, + indentSwitch: false, + isOperatorChar: /[+\-*&%=<>!?|\/#:@]/, + hooks: { + "@": function(stream) { + stream.eatWhile(/[\w\$_]/); + return "meta"; + }, + '"': function(stream, state) { + if (!stream.match('""')) return false; + state.tokenize = tokenTripleString; + return state.tokenize(stream, state); + }, + "'": function(stream) { + stream.eatWhile(/[\w\$_\xa1-\uffff]/); + return "atom"; + }, + "=": function(stream, state) { + var cx = state.context + if (cx.type == "}" && cx.align && stream.eat(">")) { + state.context = new Context(cx.indented, cx.column, cx.type, cx.info, null, cx.prev) + return "operator" + } else { + return false + } + } + }, + modeProps: {closeBrackets: {triples: '"'}} + }); + + function tokenKotlinString(tripleString){ + return function (stream, state) { + var escaped = false, next, end = false; + while (!stream.eol()) { + if (!tripleString && !escaped && stream.match('"') ) {end = true; break;} + if (tripleString && stream.match('"""')) {end = true; break;} + next = stream.next(); + if(!escaped && next == "$" && stream.match('{')) + stream.skipTo("}"); + escaped = !escaped && next == "\\" && !tripleString; + } + if (end || !tripleString) + state.tokenize = null; + return "string"; + } + } + + def("text/x-kotlin", { + name: "clike", + keywords: words( + /*keywords*/ + "package as typealias class interface this super val " + + "var fun for is in This throw return " + + "break continue object if else while do try when !in !is as? " + + + /*soft keywords*/ + "file import where by get set abstract enum open inner override private public internal " + + "protected catch finally out final vararg reified dynamic companion constructor init " + + "sealed field property receiver param sparam lateinit data inline noinline tailrec " + + "external annotation crossinline const operator infix suspend" + ), + types: words( + /* package java.lang */ + "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + + "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + + "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + + "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" + ), + intendSwitch: false, + indentStatements: false, + multiLineStrings: true, + number: /^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i, + blockKeywords: words("catch class do else finally for if where try while enum"), + defKeywords: words("class val var object package interface fun"), + atoms: words("true false null this"), + hooks: { + '"': function(stream, state) { + state.tokenize = tokenKotlinString(stream.match('""')); + return state.tokenize(stream, state); + } + }, + modeProps: {closeBrackets: {triples: '"'}} + }); + + def(["x-shader/x-vertex", "x-shader/x-fragment"], { + name: "clike", + keywords: words("sampler1D sampler2D sampler3D samplerCube " + + "sampler1DShadow sampler2DShadow " + + "const attribute uniform varying " + + "break continue discard return " + + "for while do if else struct " + + "in out inout"), + types: words("float int bool void " + + "vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " + + "mat2 mat3 mat4"), + blockKeywords: words("for while do if else struct"), + builtin: words("radians degrees sin cos tan asin acos atan " + + "pow exp log exp2 sqrt inversesqrt " + + "abs sign floor ceil fract mod min max clamp mix step smoothstep " + + "length distance dot cross normalize ftransform faceforward " + + "reflect refract matrixCompMult " + + "lessThan lessThanEqual greaterThan greaterThanEqual " + + "equal notEqual any all not " + + "texture1D texture1DProj texture1DLod texture1DProjLod " + + "texture2D texture2DProj texture2DLod texture2DProjLod " + + "texture3D texture3DProj texture3DLod texture3DProjLod " + + "textureCube textureCubeLod " + + "shadow1D shadow2D shadow1DProj shadow2DProj " + + "shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " + + "dFdx dFdy fwidth " + + "noise1 noise2 noise3 noise4"), + atoms: words("true false " + + "gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " + + "gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " + + "gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " + + "gl_FogCoord gl_PointCoord " + + "gl_Position gl_PointSize gl_ClipVertex " + + "gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " + + "gl_TexCoord gl_FogFragCoord " + + "gl_FragCoord gl_FrontFacing " + + "gl_FragData gl_FragDepth " + + "gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " + + "gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " + + "gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " + + "gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " + + "gl_ProjectionMatrixInverseTranspose " + + "gl_ModelViewProjectionMatrixInverseTranspose " + + "gl_TextureMatrixInverseTranspose " + + "gl_NormalScale gl_DepthRange gl_ClipPlane " + + "gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " + + "gl_FrontLightModelProduct gl_BackLightModelProduct " + + "gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " + + "gl_FogParameters " + + "gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " + + "gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " + + "gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " + + "gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " + + "gl_MaxDrawBuffers"), + indentSwitch: false, + hooks: {"#": cppHook}, + modeProps: {fold: ["brace", "include"]} + }); + + def("text/x-nesc", { + name: "clike", + keywords: words(cKeywords + "as atomic async call command component components configuration event generic " + + "implementation includes interface module new norace nx_struct nx_union post provides " + + "signal task uses abstract extends"), + types: words(cTypes), + blockKeywords: words("case do else for if switch while struct"), + atoms: words("null true false"), + hooks: {"#": cppHook}, + modeProps: {fold: ["brace", "include"]} + }); + + def("text/x-objectivec", { + name: "clike", + keywords: words(cKeywords + "inline restrict _Bool _Complex _Imaginary BOOL Class bycopy byref id IMP in " + + "inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"), + types: words(cTypes), + atoms: words("YES NO NULL NILL ON OFF true false"), + hooks: { + "@": function(stream) { + stream.eatWhile(/[\w\$]/); + return "keyword"; + }, + "#": cppHook, + indent: function(_state, ctx, textAfter) { + if (ctx.type == "statement" && /^@\w/.test(textAfter)) return ctx.indented + } + }, + modeProps: {fold: "brace"} + }); + + def("text/x-squirrel", { + name: "clike", + keywords: words("base break clone continue const default delete enum extends function in class" + + " foreach local resume return this throw typeof yield constructor instanceof static"), + types: words(cTypes), + blockKeywords: words("case catch class else for foreach if switch try while"), + defKeywords: words("function local class"), + typeFirstDefinitions: true, + atoms: words("true false null"), + hooks: {"#": cppHook}, + modeProps: {fold: ["brace", "include"]} + }); + + // Ceylon Strings need to deal with interpolation + var stringTokenizer = null; + function tokenCeylonString(type) { + return function(stream, state) { + var escaped = false, next, end = false; + while (!stream.eol()) { + if (!escaped && stream.match('"') && + (type == "single" || stream.match('""'))) { + end = true; + break; + } + if (!escaped && stream.match('``')) { + stringTokenizer = tokenCeylonString(type); + end = true; + break; + } + next = stream.next(); + escaped = type == "single" && !escaped && next == "\\"; + } + if (end) + state.tokenize = null; + return "string"; + } + } + + def("text/x-ceylon", { + name: "clike", + keywords: words("abstracts alias assembly assert assign break case catch class continue dynamic else" + + " exists extends finally for function given if import in interface is let module new" + + " nonempty object of out outer package return satisfies super switch then this throw" + + " try value void while"), + types: function(word) { + // In Ceylon all identifiers that start with an uppercase are types + var first = word.charAt(0); + return (first === first.toUpperCase() && first !== first.toLowerCase()); + }, + blockKeywords: words("case catch class dynamic else finally for function if interface module new object switch try while"), + defKeywords: words("class dynamic function interface module object package value"), + builtin: words("abstract actual aliased annotation by default deprecated doc final formal late license" + + " native optional sealed see serializable shared suppressWarnings tagged throws variable"), + isPunctuationChar: /[\[\]{}\(\),;\:\.`]/, + isOperatorChar: /[+\-*&%=<>!?|^~:\/]/, + numberStart: /[\d#$]/, + number: /^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i, + multiLineStrings: true, + typeFirstDefinitions: true, + atoms: words("true false null larger smaller equal empty finished"), + indentSwitch: false, + styleDefs: false, + hooks: { + "@": function(stream) { + stream.eatWhile(/[\w\$_]/); + return "meta"; + }, + '"': function(stream, state) { + state.tokenize = tokenCeylonString(stream.match('""') ? "triple" : "single"); + return state.tokenize(stream, state); + }, + '`': function(stream, state) { + if (!stringTokenizer || !stream.match('`')) return false; + state.tokenize = stringTokenizer; + stringTokenizer = null; + return state.tokenize(stream, state); + }, + "'": function(stream) { + stream.eatWhile(/[\w\$_\xa1-\uffff]/); + return "atom"; + }, + token: function(_stream, state, style) { + if ((style == "variable" || style == "type") && + state.prevToken == ".") { + return "variable-2"; + } + } + }, + modeProps: { + fold: ["brace", "import"], + closeBrackets: {triples: '"'} + } + }); + +}); diff --git a/global/codemirror/mode/clike/index.html b/global/codemirror/mode/clike/index.html new file mode 100644 index 00000000..45c670ae --- /dev/null +++ b/global/codemirror/mode/clike/index.html @@ -0,0 +1,360 @@ + + +CodeMirror: C-like mode + + + + + + + + + + + + +
+

C-like mode

+ +
+ +

C++ example

+ +
+ +

Objective-C example

+ +
+ +

Java example

+ +
+ +

Scala example

+ +
+ +

Kotlin mode

+ +
+ +

Ceylon mode

+ +
+ + + +

Simple mode that tries to handle C-like languages as well as it + can. Takes two configuration parameters: keywords, an + object whose property names are the keywords in the language, + and useCPP, which determines whether C preprocessor + directives are recognized.

+ +

MIME types defined: text/x-csrc + (C), text/x-c++src (C++), text/x-java + (Java), text/x-csharp (C#), + text/x-objectivec (Objective-C), + text/x-scala (Scala), text/x-vertex + x-shader/x-fragment (shader programs), + text/x-squirrel (Squirrel) and + text/x-ceylon (Ceylon)

+
diff --git a/global/codemirror/mode/clike/scala.html b/global/codemirror/mode/clike/scala.html new file mode 100644 index 00000000..aa04cf0f --- /dev/null +++ b/global/codemirror/mode/clike/scala.html @@ -0,0 +1,767 @@ + + +CodeMirror: Scala mode + + + + + + + + + + +
+

Scala mode

+
+ +
+ + +
diff --git a/global/codemirror/mode/clike/test.js b/global/codemirror/mode/clike/test.js new file mode 100644 index 00000000..dad2e246 --- /dev/null +++ b/global/codemirror/mode/clike/test.js @@ -0,0 +1,59 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-c"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("indent", + "[type void] [def foo]([type void*] [variable a], [type int] [variable b]) {", + " [type int] [variable c] [operator =] [variable b] [operator +]", + " [number 1];", + " [keyword return] [operator *][variable a];", + "}"); + + MT("indent_switch", + "[keyword switch] ([variable x]) {", + " [keyword case] [number 10]:", + " [keyword return] [number 20];", + " [keyword default]:", + " [variable printf]([string \"foo %c\"], [variable x]);", + "}"); + + MT("def", + "[type void] [def foo]() {}", + "[keyword struct] [def bar]{}", + "[type int] [type *][def baz]() {}"); + + MT("def_new_line", + "::[variable std]::[variable SomeTerribleType][operator <][variable T][operator >]", + "[def SomeLongMethodNameThatDoesntFitIntoOneLine]([keyword const] [variable MyType][operator &] [variable param]) {}") + + MT("double_block", + "[keyword for] (;;)", + " [keyword for] (;;)", + " [variable x][operator ++];", + "[keyword return];"); + + MT("preprocessor", + "[meta #define FOO 3]", + "[type int] [variable foo];", + "[meta #define BAR\\]", + "[meta 4]", + "[type unsigned] [type int] [variable bar] [operator =] [number 8];", + "[meta #include ][comment // comment]") + + + var mode_cpp = CodeMirror.getMode({indentUnit: 2}, "text/x-c++src"); + function MTCPP(name) { test.mode(name, mode_cpp, Array.prototype.slice.call(arguments, 1)); } + + MTCPP("cpp14_literal", + "[number 10'000];", + "[number 0b10'000];", + "[number 0x10'000];", + "[string '100000'];"); + + MTCPP("ctor_dtor", + "[def Foo::Foo]() {}", + "[def Foo::~Foo]() {}"); +})(); diff --git a/global/codemirror/mode/clojure/clojure.js b/global/codemirror/mode/clojure/clojure.js new file mode 100644 index 00000000..ed6af2c8 --- /dev/null +++ b/global/codemirror/mode/clojure/clojure.js @@ -0,0 +1,306 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/** + * Author: Hans Engel + * Branched from CodeMirror's Scheme mode (by Koh Zi Han, based on implementation by Koh Zi Chun) + */ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("clojure", function (options) { + var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", CHARACTER = "string-2", + ATOM = "atom", NUMBER = "number", BRACKET = "bracket", KEYWORD = "keyword", VAR = "variable"; + var INDENT_WORD_SKIP = options.indentUnit || 2; + var NORMAL_INDENT_UNIT = options.indentUnit || 2; + + function makeKeywords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + var atoms = makeKeywords("true false nil"); + + var keywords = makeKeywords( + "defn defn- def def- defonce defmulti defmethod defmacro defstruct deftype defprotocol defrecord defproject deftest " + + "slice defalias defhinted defmacro- defn-memo defnk defnk defonce- defunbound defunbound- defvar defvar- let letfn " + + "do case cond condp for loop recur when when-not when-let when-first if if-let if-not . .. -> ->> doto and or dosync " + + "doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars " + + "binding gen-class gen-and-load-class gen-and-save-class handler-case handle"); + + var builtins = makeKeywords( + "* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* " + + "*compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* " + + "*math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* " + + "*source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> " + + "->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor " + + "aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! " + + "alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double " + + "aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 " + + "bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set " + + "bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast " + + "byte byte-array bytes case cat cast char char-array char-escape-string char-name-string char? chars chunk chunk-append " + + "chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors " + + "clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement completing concat cond condp " + + "conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? " + + "declare dedupe default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol " + + "defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc " + + "dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last " + + "drop-while eduction empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info " + + "extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword " + + "find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? " + + "fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? " + + "gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash " + + "hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? " + + "int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep " + + "keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file " + + "load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array " + + "make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods " + + "min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty " + + "not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias " + + "ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all " + + "partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers " + + "primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str " + + "prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues " + + "quot rand rand-int rand-nth random-sample range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern " + + "re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history " + + "ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods " + + "remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest " + + "restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? " + + "seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts " + + "shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? " + + "special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol " + + "symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transduce " + + "transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec " + + "unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int " + + "unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int "+ + "unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote " + + "unquote-splicing update update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of " + + "vector? volatile! volatile? vreset! vswap! when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context " + + "with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap " + + "*default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! " + + "set-agent-send-off-executor! some-> some->>"); + + var indentKeys = makeKeywords( + // Built-ins + "ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto " + + "locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type " + + "try catch " + + + // Binding forms + "let letfn binding loop for doseq dotimes when-let if-let " + + + // Data structures + "defstruct struct-map assoc " + + + // clojure.test + "testing deftest " + + + // contrib + "handler-case handle dotrace deftrace"); + + var tests = { + digit: /\d/, + digit_or_colon: /[\d:]/, + hex: /[0-9a-f]/i, + sign: /[+-]/, + exponent: /e/i, + keyword_char: /[^\s\(\[\;\)\]]/, + symbol: /[\w*+!\-\._?:<>\/\xa1-\uffff]/, + block_indent: /^(?:def|with)[^\/]+$|\/(?:def|with)/ + }; + + function stateStack(indent, type, prev) { // represents a state stack object + this.indent = indent; + this.type = type; + this.prev = prev; + } + + function pushStack(state, indent, type) { + state.indentStack = new stateStack(indent, type, state.indentStack); + } + + function popStack(state) { + state.indentStack = state.indentStack.prev; + } + + function isNumber(ch, stream){ + // hex + if ( ch === '0' && stream.eat(/x/i) ) { + stream.eatWhile(tests.hex); + return true; + } + + // leading sign + if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { + stream.eat(tests.sign); + ch = stream.next(); + } + + if ( tests.digit.test(ch) ) { + stream.eat(ch); + stream.eatWhile(tests.digit); + + if ( '.' == stream.peek() ) { + stream.eat('.'); + stream.eatWhile(tests.digit); + } else if ('/' == stream.peek() ) { + stream.eat('/'); + stream.eatWhile(tests.digit); + } + + if ( stream.eat(tests.exponent) ) { + stream.eat(tests.sign); + stream.eatWhile(tests.digit); + } + + return true; + } + + return false; + } + + // Eat character that starts after backslash \ + function eatCharacter(stream) { + var first = stream.next(); + // Read special literals: backspace, newline, space, return. + // Just read all lowercase letters. + if (first && first.match(/[a-z]/) && stream.match(/[a-z]+/, true)) { + return; + } + // Read unicode character: \u1000 \uA0a1 + if (first === "u") { + stream.match(/[0-9a-z]{4}/i, true); + } + } + + return { + startState: function () { + return { + indentStack: null, + indentation: 0, + mode: false + }; + }, + + token: function (stream, state) { + if (state.indentStack == null && stream.sol()) { + // update indentation, but only if indentStack is empty + state.indentation = stream.indentation(); + } + + // skip spaces + if (state.mode != "string" && stream.eatSpace()) { + return null; + } + var returnType = null; + + switch(state.mode){ + case "string": // multi-line string parsing mode + var next, escaped = false; + while ((next = stream.next()) != null) { + if (next == "\"" && !escaped) { + + state.mode = false; + break; + } + escaped = !escaped && next == "\\"; + } + returnType = STRING; // continue on in string mode + break; + default: // default parsing mode + var ch = stream.next(); + + if (ch == "\"") { + state.mode = "string"; + returnType = STRING; + } else if (ch == "\\") { + eatCharacter(stream); + returnType = CHARACTER; + } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { + returnType = ATOM; + } else if (ch == ";") { // comment + stream.skipToEnd(); // rest of the line is a comment + returnType = COMMENT; + } else if (isNumber(ch,stream)){ + returnType = NUMBER; + } else if (ch == "(" || ch == "[" || ch == "{" ) { + var keyWord = '', indentTemp = stream.column(), letter; + /** + Either + (indent-word .. + (non-indent-word .. + (;something else, bracket, etc. + */ + + if (ch == "(") while ((letter = stream.eat(tests.keyword_char)) != null) { + keyWord += letter; + } + + if (keyWord.length > 0 && (indentKeys.propertyIsEnumerable(keyWord) || + tests.block_indent.test(keyWord))) { // indent-word + pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); + } else { // non-indent word + // we continue eating the spaces + stream.eatSpace(); + if (stream.eol() || stream.peek() == ";") { + // nothing significant after + // we restart indentation the user defined spaces after + pushStack(state, indentTemp + NORMAL_INDENT_UNIT, ch); + } else { + pushStack(state, indentTemp + stream.current().length, ch); // else we match + } + } + stream.backUp(stream.current().length - 1); // undo all the eating + + returnType = BRACKET; + } else if (ch == ")" || ch == "]" || ch == "}") { + returnType = BRACKET; + if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : (ch == "]" ? "[" :"{"))) { + popStack(state); + } + } else if ( ch == ":" ) { + stream.eatWhile(tests.symbol); + return ATOM; + } else { + stream.eatWhile(tests.symbol); + + if (keywords && keywords.propertyIsEnumerable(stream.current())) { + returnType = KEYWORD; + } else if (builtins && builtins.propertyIsEnumerable(stream.current())) { + returnType = BUILTIN; + } else if (atoms && atoms.propertyIsEnumerable(stream.current())) { + returnType = ATOM; + } else { + returnType = VAR; + } + } + } + + return returnType; + }, + + indent: function (state) { + if (state.indentStack == null) return state.indentation; + return state.indentStack.indent; + }, + + closeBrackets: {pairs: "()[]{}\"\""}, + lineComment: ";;" + }; +}); + +CodeMirror.defineMIME("text/x-clojure", "clojure"); +CodeMirror.defineMIME("text/x-clojurescript", "clojure"); +CodeMirror.defineMIME("application/edn", "clojure"); + +}); diff --git a/global/codemirror/mode/clojure/index.html b/global/codemirror/mode/clojure/index.html new file mode 100644 index 00000000..81294bc1 --- /dev/null +++ b/global/codemirror/mode/clojure/index.html @@ -0,0 +1,91 @@ + + +CodeMirror: Clojure mode + + + + + + + + + +
+

Clojure mode

+
+ + +

MIME types defined: text/x-clojure.

+ +
diff --git a/global/codemirror/mode/cmake/cmake.js b/global/codemirror/mode/cmake/cmake.js new file mode 100644 index 00000000..9f9eda54 --- /dev/null +++ b/global/codemirror/mode/cmake/cmake.js @@ -0,0 +1,97 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) + define(["../../lib/codemirror"], mod); + else + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("cmake", function () { + var variable_regex = /({)?[a-zA-Z0-9_]+(})?/; + + function tokenString(stream, state) { + var current, prev, found_var = false; + while (!stream.eol() && (current = stream.next()) != state.pending) { + if (current === '$' && prev != '\\' && state.pending == '"') { + found_var = true; + break; + } + prev = current; + } + if (found_var) { + stream.backUp(1); + } + if (current == state.pending) { + state.continueString = false; + } else { + state.continueString = true; + } + return "string"; + } + + function tokenize(stream, state) { + var ch = stream.next(); + + // Have we found a variable? + if (ch === '$') { + if (stream.match(variable_regex)) { + return 'variable-2'; + } + return 'variable'; + } + // Should we still be looking for the end of a string? + if (state.continueString) { + // If so, go through the loop again + stream.backUp(1); + return tokenString(stream, state); + } + // Do we just have a function on our hands? + // In 'cmake_minimum_required (VERSION 2.8.8)', 'cmake_minimum_required' is matched + if (stream.match(/(\s+)?\w+\(/) || stream.match(/(\s+)?\w+\ \(/)) { + stream.backUp(1); + return 'def'; + } + if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } + // Have we found a string? + if (ch == "'" || ch == '"') { + // Store the type (single or double) + state.pending = ch; + // Perform the looping function to find the end + return tokenString(stream, state); + } + if (ch == '(' || ch == ')') { + return 'bracket'; + } + if (ch.match(/[0-9]/)) { + return 'number'; + } + stream.eatWhile(/[\w-]/); + return null; + } + return { + startState: function () { + var state = {}; + state.inDefinition = false; + state.inInclude = false; + state.continueString = false; + state.pending = false; + return state; + }, + token: function (stream, state) { + if (stream.eatSpace()) return null; + return tokenize(stream, state); + } + }; +}); + +CodeMirror.defineMIME("text/x-cmake", "cmake"); + +}); diff --git a/global/codemirror/mode/cmake/index.html b/global/codemirror/mode/cmake/index.html new file mode 100644 index 00000000..ed114fec --- /dev/null +++ b/global/codemirror/mode/cmake/index.html @@ -0,0 +1,129 @@ + + +CodeMirror: CMake mode + + + + + + + + + + +
+

CMake mode

+
+ + +

MIME types defined: text/x-cmake.

+ +
diff --git a/global/codemirror/mode/cobol/cobol.js b/global/codemirror/mode/cobol/cobol.js new file mode 100644 index 00000000..897022b1 --- /dev/null +++ b/global/codemirror/mode/cobol/cobol.js @@ -0,0 +1,255 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/** + * Author: Gautam Mehta + * Branched from CodeMirror's Scheme mode + */ +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("cobol", function () { + var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", + ATOM = "atom", NUMBER = "number", KEYWORD = "keyword", MODTAG = "header", + COBOLLINENUM = "def", PERIOD = "link"; + function makeKeywords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + var atoms = makeKeywords("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES "); + var keywords = makeKeywords( + "ACCEPT ACCESS ACQUIRE ADD ADDRESS " + + "ADVANCING AFTER ALIAS ALL ALPHABET " + + "ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED " + + "ALSO ALTER ALTERNATE AND ANY " + + "ARE AREA AREAS ARITHMETIC ASCENDING " + + "ASSIGN AT ATTRIBUTE AUTHOR AUTO " + + "AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS " + + "B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP " + + "BEFORE BELL BINARY BIT BITS " + + "BLANK BLINK BLOCK BOOLEAN BOTTOM " + + "BY CALL CANCEL CD CF " + + "CH CHARACTER CHARACTERS CLASS CLOCK-UNITS " + + "CLOSE COBOL CODE CODE-SET COL " + + "COLLATING COLUMN COMMA COMMIT COMMITMENT " + + "COMMON COMMUNICATION COMP COMP-0 COMP-1 " + + "COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 " + + "COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 " + + "COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 " + + "COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE " + + "CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS " + + "CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS " + + "CONVERTING COPY CORR CORRESPONDING COUNT " + + "CRT CRT-UNDER CURRENCY CURRENT CURSOR " + + "DATA DATE DATE-COMPILED DATE-WRITTEN DAY " + + "DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION " + + "DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS " + + "DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE " + + "DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING " + + "DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED " + + "DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION " + + "DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 " + + "DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 " + + "DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION " + + "DOWN DROP DUPLICATE DUPLICATES DYNAMIC " + + "EBCDIC EGI EJECT ELSE EMI " + + "EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. " + + "END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY " + + "END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY " + + "END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN " + + "END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT " + + "END-UNSTRING END-WRITE END-XML ENTER ENTRY " + + "ENVIRONMENT EOP EQUAL EQUALS ERASE " + + "ERROR ESI EVALUATE EVERY EXCEEDS " + + "EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL " + + "EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL " + + "FILE-STREAM FILES FILLER FINAL FIND " + + "FINISH FIRST FOOTING FOR FOREGROUND-COLOR " + + "FOREGROUND-COLOUR FORMAT FREE FROM FULL " + + "FUNCTION GENERATE GET GIVING GLOBAL " + + "GO GOBACK GREATER GROUP HEADING " + + "HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL " + + "ID IDENTIFICATION IF IN INDEX " + + "INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 " + + "INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED " + + "INDIC INDICATE INDICATOR INDICATORS INITIAL " + + "INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT " + + "INSTALLATION INTO INVALID INVOKE IS " + + "JUST JUSTIFIED KANJI KEEP KEY " + + "LABEL LAST LD LEADING LEFT " + + "LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY " + + "LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER " + + "LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE " + + "LOCALE LOCALLY LOCK " + + "MEMBER MEMORY MERGE MESSAGE METACLASS " + + "MODE MODIFIED MODIFY MODULES MOVE " + + "MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE " + + "NEXT NO NO-ECHO NONE NOT " + + "NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER " + + "NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS " + + "OF OFF OMITTED ON ONLY " + + "OPEN OPTIONAL OR ORDER ORGANIZATION " + + "OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL " + + "PADDING PAGE PAGE-COUNTER PARSE PERFORM " + + "PF PH PIC PICTURE PLUS " + + "POINTER POSITION POSITIVE PREFIX PRESENT " + + "PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES " + + "PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID " + + "PROMPT PROTECTED PURGE QUEUE QUOTE " + + "QUOTES RANDOM RD READ READY " + + "REALM RECEIVE RECONNECT RECORD RECORD-NAME " + + "RECORDS RECURSIVE REDEFINES REEL REFERENCE " + + "REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE " + + "REMAINDER REMOVAL RENAMES REPEATED REPLACE " + + "REPLACING REPORT REPORTING REPORTS REPOSITORY " + + "REQUIRED RERUN RESERVE RESET RETAINING " + + "RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO " + + "REVERSED REWIND REWRITE RF RH " + + "RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED " + + "RUN SAME SCREEN SD SEARCH " + + "SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT " + + "SELECT SEND SENTENCE SEPARATE SEQUENCE " + + "SEQUENTIAL SET SHARED SIGN SIZE " + + "SKIP1 SKIP2 SKIP3 SORT SORT-MERGE " + + "SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL " + + "SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 " + + "START STARTING STATUS STOP STORE " + + "STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA " + + "SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS " + + "SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT " + + "TABLE TALLYING TAPE TENANT TERMINAL " + + "TERMINATE TEST TEXT THAN THEN " + + "THROUGH THRU TIME TIMES TITLE " + + "TO TOP TRAILING TRAILING-SIGN TRANSACTION " + + "TYPE TYPEDEF UNDERLINE UNEQUAL UNIT " + + "UNSTRING UNTIL UP UPDATE UPON " + + "USAGE USAGE-MODE USE USING VALID " + + "VALIDATE VALUE VALUES VARYING VLR " + + "WAIT WHEN WHEN-COMPILED WITH WITHIN " + + "WORDS WORKING-STORAGE WRITE XML XML-CODE " + + "XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL " ); + + var builtins = makeKeywords("- * ** / + < <= = > >= "); + var tests = { + digit: /\d/, + digit_or_colon: /[\d:]/, + hex: /[0-9a-f]/i, + sign: /[+-]/, + exponent: /e/i, + keyword_char: /[^\s\(\[\;\)\]]/, + symbol: /[\w*+\-]/ + }; + function isNumber(ch, stream){ + // hex + if ( ch === '0' && stream.eat(/x/i) ) { + stream.eatWhile(tests.hex); + return true; + } + // leading sign + if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { + stream.eat(tests.sign); + ch = stream.next(); + } + if ( tests.digit.test(ch) ) { + stream.eat(ch); + stream.eatWhile(tests.digit); + if ( '.' == stream.peek()) { + stream.eat('.'); + stream.eatWhile(tests.digit); + } + if ( stream.eat(tests.exponent) ) { + stream.eat(tests.sign); + stream.eatWhile(tests.digit); + } + return true; + } + return false; + } + return { + startState: function () { + return { + indentStack: null, + indentation: 0, + mode: false + }; + }, + token: function (stream, state) { + if (state.indentStack == null && stream.sol()) { + // update indentation, but only if indentStack is empty + state.indentation = 6 ; //stream.indentation(); + } + // skip spaces + if (stream.eatSpace()) { + return null; + } + var returnType = null; + switch(state.mode){ + case "string": // multi-line string parsing mode + var next = false; + while ((next = stream.next()) != null) { + if (next == "\"" || next == "\'") { + state.mode = false; + break; + } + } + returnType = STRING; // continue on in string mode + break; + default: // default parsing mode + var ch = stream.next(); + var col = stream.column(); + if (col >= 0 && col <= 5) { + returnType = COBOLLINENUM; + } else if (col >= 72 && col <= 79) { + stream.skipToEnd(); + returnType = MODTAG; + } else if (ch == "*" && col == 6) { // comment + stream.skipToEnd(); // rest of the line is a comment + returnType = COMMENT; + } else if (ch == "\"" || ch == "\'") { + state.mode = "string"; + returnType = STRING; + } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { + returnType = ATOM; + } else if (ch == ".") { + returnType = PERIOD; + } else if (isNumber(ch,stream)){ + returnType = NUMBER; + } else { + if (stream.current().match(tests.symbol)) { + while (col < 71) { + if (stream.eat(tests.symbol) === undefined) { + break; + } else { + col++; + } + } + } + if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { + returnType = KEYWORD; + } else if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) { + returnType = BUILTIN; + } else if (atoms && atoms.propertyIsEnumerable(stream.current().toUpperCase())) { + returnType = ATOM; + } else returnType = null; + } + } + return returnType; + }, + indent: function (state) { + if (state.indentStack == null) return state.indentation; + return state.indentStack.indent; + } + }; +}); + +CodeMirror.defineMIME("text/x-cobol", "cobol"); + +}); diff --git a/global/codemirror/mode/cobol/index.html b/global/codemirror/mode/cobol/index.html new file mode 100644 index 00000000..4352419a --- /dev/null +++ b/global/codemirror/mode/cobol/index.html @@ -0,0 +1,210 @@ + + +CodeMirror: COBOL mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

COBOL mode

+ +

Select Theme Select Font Size + + + + +

+ + +
diff --git a/global/codemirror/mode/coffeescript/coffeescript.js b/global/codemirror/mode/coffeescript/coffeescript.js new file mode 100644 index 00000000..ae955db3 --- /dev/null +++ b/global/codemirror/mode/coffeescript/coffeescript.js @@ -0,0 +1,359 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/** + * Link to the project's GitHub page: + * https://github.com/pickhardt/coffeescript-codemirror-mode + */ +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("coffeescript", function(conf, parserConf) { + var ERRORCLASS = "error"; + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b"); + } + + var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/; + var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/; + var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/; + var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/; + + var wordOperators = wordRegexp(["and", "or", "not", + "is", "isnt", "in", + "instanceof", "typeof"]); + var indentKeywords = ["for", "while", "loop", "if", "unless", "else", + "switch", "try", "catch", "finally", "class"]; + var commonKeywords = ["break", "by", "continue", "debugger", "delete", + "do", "in", "of", "new", "return", "then", + "this", "@", "throw", "when", "until", "extends"]; + + var keywords = wordRegexp(indentKeywords.concat(commonKeywords)); + + indentKeywords = wordRegexp(indentKeywords); + + + var stringPrefixes = /^('{3}|\"{3}|['\"])/; + var regexPrefixes = /^(\/{3}|\/)/; + var commonConstants = ["Infinity", "NaN", "undefined", "null", "true", "false", "on", "off", "yes", "no"]; + var constants = wordRegexp(commonConstants); + + // Tokenizers + function tokenBase(stream, state) { + // Handle scope changes + if (stream.sol()) { + if (state.scope.align === null) state.scope.align = false; + var scopeOffset = state.scope.offset; + if (stream.eatSpace()) { + var lineOffset = stream.indentation(); + if (lineOffset > scopeOffset && state.scope.type == "coffee") { + return "indent"; + } else if (lineOffset < scopeOffset) { + return "dedent"; + } + return null; + } else { + if (scopeOffset > 0) { + dedent(stream, state); + } + } + } + if (stream.eatSpace()) { + return null; + } + + var ch = stream.peek(); + + // Handle docco title comment (single line) + if (stream.match("####")) { + stream.skipToEnd(); + return "comment"; + } + + // Handle multi line comments + if (stream.match("###")) { + state.tokenize = longComment; + return state.tokenize(stream, state); + } + + // Single line comment + if (ch === "#") { + stream.skipToEnd(); + return "comment"; + } + + // Handle number literals + if (stream.match(/^-?[0-9\.]/, false)) { + var floatLiteral = false; + // Floats + if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) { + floatLiteral = true; + } + if (stream.match(/^-?\d+\.\d*/)) { + floatLiteral = true; + } + if (stream.match(/^-?\.\d+/)) { + floatLiteral = true; + } + + if (floatLiteral) { + // prevent from getting extra . on 1.. + if (stream.peek() == "."){ + stream.backUp(1); + } + return "number"; + } + // Integers + var intLiteral = false; + // Hex + if (stream.match(/^-?0x[0-9a-f]+/i)) { + intLiteral = true; + } + // Decimal + if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) { + intLiteral = true; + } + // Zero by itself with no other piece of number. + if (stream.match(/^-?0(?![\dx])/i)) { + intLiteral = true; + } + if (intLiteral) { + return "number"; + } + } + + // Handle strings + if (stream.match(stringPrefixes)) { + state.tokenize = tokenFactory(stream.current(), false, "string"); + return state.tokenize(stream, state); + } + // Handle regex literals + if (stream.match(regexPrefixes)) { + if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent highlight of division + state.tokenize = tokenFactory(stream.current(), true, "string-2"); + return state.tokenize(stream, state); + } else { + stream.backUp(1); + } + } + + + + // Handle operators and delimiters + if (stream.match(operators) || stream.match(wordOperators)) { + return "operator"; + } + if (stream.match(delimiters)) { + return "punctuation"; + } + + if (stream.match(constants)) { + return "atom"; + } + + if (stream.match(atProp) || state.prop && stream.match(identifiers)) { + return "property"; + } + + if (stream.match(keywords)) { + return "keyword"; + } + + if (stream.match(identifiers)) { + return "variable"; + } + + // Handle non-detected items + stream.next(); + return ERRORCLASS; + } + + function tokenFactory(delimiter, singleline, outclass) { + return function(stream, state) { + while (!stream.eol()) { + stream.eatWhile(/[^'"\/\\]/); + if (stream.eat("\\")) { + stream.next(); + if (singleline && stream.eol()) { + return outclass; + } + } else if (stream.match(delimiter)) { + state.tokenize = tokenBase; + return outclass; + } else { + stream.eat(/['"\/]/); + } + } + if (singleline) { + if (parserConf.singleLineStringErrors) { + outclass = ERRORCLASS; + } else { + state.tokenize = tokenBase; + } + } + return outclass; + }; + } + + function longComment(stream, state) { + while (!stream.eol()) { + stream.eatWhile(/[^#]/); + if (stream.match("###")) { + state.tokenize = tokenBase; + break; + } + stream.eatWhile("#"); + } + return "comment"; + } + + function indent(stream, state, type) { + type = type || "coffee"; + var offset = 0, align = false, alignOffset = null; + for (var scope = state.scope; scope; scope = scope.prev) { + if (scope.type === "coffee" || scope.type == "}") { + offset = scope.offset + conf.indentUnit; + break; + } + } + if (type !== "coffee") { + align = null; + alignOffset = stream.column() + stream.current().length; + } else if (state.scope.align) { + state.scope.align = false; + } + state.scope = { + offset: offset, + type: type, + prev: state.scope, + align: align, + alignOffset: alignOffset + }; + } + + function dedent(stream, state) { + if (!state.scope.prev) return; + if (state.scope.type === "coffee") { + var _indent = stream.indentation(); + var matched = false; + for (var scope = state.scope; scope; scope = scope.prev) { + if (_indent === scope.offset) { + matched = true; + break; + } + } + if (!matched) { + return true; + } + while (state.scope.prev && state.scope.offset !== _indent) { + state.scope = state.scope.prev; + } + return false; + } else { + state.scope = state.scope.prev; + return false; + } + } + + function tokenLexer(stream, state) { + var style = state.tokenize(stream, state); + var current = stream.current(); + + // Handle scope changes. + if (current === "return") { + state.dedent = true; + } + if (((current === "->" || current === "=>") && stream.eol()) + || style === "indent") { + indent(stream, state); + } + var delimiter_index = "[({".indexOf(current); + if (delimiter_index !== -1) { + indent(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); + } + if (indentKeywords.exec(current)){ + indent(stream, state); + } + if (current == "then"){ + dedent(stream, state); + } + + + if (style === "dedent") { + if (dedent(stream, state)) { + return ERRORCLASS; + } + } + delimiter_index = "])}".indexOf(current); + if (delimiter_index !== -1) { + while (state.scope.type == "coffee" && state.scope.prev) + state.scope = state.scope.prev; + if (state.scope.type == current) + state.scope = state.scope.prev; + } + if (state.dedent && stream.eol()) { + if (state.scope.type == "coffee" && state.scope.prev) + state.scope = state.scope.prev; + state.dedent = false; + } + + return style; + } + + var external = { + startState: function(basecolumn) { + return { + tokenize: tokenBase, + scope: {offset:basecolumn || 0, type:"coffee", prev: null, align: false}, + prop: false, + dedent: 0 + }; + }, + + token: function(stream, state) { + var fillAlign = state.scope.align === null && state.scope; + if (fillAlign && stream.sol()) fillAlign.align = false; + + var style = tokenLexer(stream, state); + if (style && style != "comment") { + if (fillAlign) fillAlign.align = true; + state.prop = style == "punctuation" && stream.current() == "." + } + + return style; + }, + + indent: function(state, text) { + if (state.tokenize != tokenBase) return 0; + var scope = state.scope; + var closer = text && "])}".indexOf(text.charAt(0)) > -1; + if (closer) while (scope.type == "coffee" && scope.prev) scope = scope.prev; + var closes = closer && scope.type === text.charAt(0); + if (scope.align) + return scope.alignOffset - (closes ? 1 : 0); + else + return (closes ? scope.prev : scope).offset; + }, + + lineComment: "#", + fold: "indent" + }; + return external; +}); + +// IANA registered media type +// https://www.iana.org/assignments/media-types/ +CodeMirror.defineMIME("application/vnd.coffeescript", "coffeescript"); + +CodeMirror.defineMIME("text/x-coffeescript", "coffeescript"); +CodeMirror.defineMIME("text/coffeescript", "coffeescript"); + +}); diff --git a/global/codemirror/mode/coffeescript/index.html b/global/codemirror/mode/coffeescript/index.html new file mode 100644 index 00000000..92d161e9 --- /dev/null +++ b/global/codemirror/mode/coffeescript/index.html @@ -0,0 +1,740 @@ + + +CodeMirror: CoffeeScript mode + + + + + + + + + +
+

CoffeeScript mode

+
+ + +

MIME types defined: application/vnd.coffeescript, text/coffeescript, text/x-coffeescript.

+ +

The CoffeeScript mode was written by Jeff Pickhardt.

+ +
diff --git a/global/codemirror/mode/commonlisp/commonlisp.js b/global/codemirror/mode/commonlisp/commonlisp.js new file mode 100644 index 00000000..8cd212d3 --- /dev/null +++ b/global/codemirror/mode/commonlisp/commonlisp.js @@ -0,0 +1,124 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("commonlisp", function (config) { + var specialForm = /^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/; + var assumeBody = /^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/; + var numLiteral = /^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/; + var symbol = /[^\s'`,@()\[\]";]/; + var type; + + function readSym(stream) { + var ch; + while (ch = stream.next()) { + if (ch == "\\") stream.next(); + else if (!symbol.test(ch)) { stream.backUp(1); break; } + } + return stream.current(); + } + + function base(stream, state) { + if (stream.eatSpace()) {type = "ws"; return null;} + if (stream.match(numLiteral)) return "number"; + var ch = stream.next(); + if (ch == "\\") ch = stream.next(); + + if (ch == '"') return (state.tokenize = inString)(stream, state); + else if (ch == "(") { type = "open"; return "bracket"; } + else if (ch == ")" || ch == "]") { type = "close"; return "bracket"; } + else if (ch == ";") { stream.skipToEnd(); type = "ws"; return "comment"; } + else if (/['`,@]/.test(ch)) return null; + else if (ch == "|") { + if (stream.skipTo("|")) { stream.next(); return "symbol"; } + else { stream.skipToEnd(); return "error"; } + } else if (ch == "#") { + var ch = stream.next(); + if (ch == "(") { type = "open"; return "bracket"; } + else if (/[+\-=\.']/.test(ch)) return null; + else if (/\d/.test(ch) && stream.match(/^\d*#/)) return null; + else if (ch == "|") return (state.tokenize = inComment)(stream, state); + else if (ch == ":") { readSym(stream); return "meta"; } + else if (ch == "\\") { stream.next(); readSym(stream); return "string-2" } + else return "error"; + } else { + var name = readSym(stream); + if (name == ".") return null; + type = "symbol"; + if (name == "nil" || name == "t" || name.charAt(0) == ":") return "atom"; + if (state.lastType == "open" && (specialForm.test(name) || assumeBody.test(name))) return "keyword"; + if (name.charAt(0) == "&") return "variable-2"; + return "variable"; + } + } + + function inString(stream, state) { + var escaped = false, next; + while (next = stream.next()) { + if (next == '"' && !escaped) { state.tokenize = base; break; } + escaped = !escaped && next == "\\"; + } + return "string"; + } + + function inComment(stream, state) { + var next, last; + while (next = stream.next()) { + if (next == "#" && last == "|") { state.tokenize = base; break; } + last = next; + } + type = "ws"; + return "comment"; + } + + return { + startState: function () { + return {ctx: {prev: null, start: 0, indentTo: 0}, lastType: null, tokenize: base}; + }, + + token: function (stream, state) { + if (stream.sol() && typeof state.ctx.indentTo != "number") + state.ctx.indentTo = state.ctx.start + 1; + + type = null; + var style = state.tokenize(stream, state); + if (type != "ws") { + if (state.ctx.indentTo == null) { + if (type == "symbol" && assumeBody.test(stream.current())) + state.ctx.indentTo = state.ctx.start + config.indentUnit; + else + state.ctx.indentTo = "next"; + } else if (state.ctx.indentTo == "next") { + state.ctx.indentTo = stream.column(); + } + state.lastType = type; + } + if (type == "open") state.ctx = {prev: state.ctx, start: stream.column(), indentTo: null}; + else if (type == "close") state.ctx = state.ctx.prev || state.ctx; + return style; + }, + + indent: function (state, _textAfter) { + var i = state.ctx.indentTo; + return typeof i == "number" ? i : state.ctx.start + 1; + }, + + closeBrackets: {pairs: "()[]{}\"\""}, + lineComment: ";;", + blockCommentStart: "#|", + blockCommentEnd: "|#" + }; +}); + +CodeMirror.defineMIME("text/x-common-lisp", "commonlisp"); + +}); diff --git a/global/codemirror/mode/commonlisp/index.html b/global/codemirror/mode/commonlisp/index.html new file mode 100644 index 00000000..f2bf4522 --- /dev/null +++ b/global/codemirror/mode/commonlisp/index.html @@ -0,0 +1,177 @@ + + +CodeMirror: Common Lisp mode + + + + + + + + + +
+

Common Lisp mode

+
+ + +

MIME types defined: text/x-common-lisp.

+ +
diff --git a/global/codemirror/mode/crystal/crystal.js b/global/codemirror/mode/crystal/crystal.js new file mode 100644 index 00000000..dada112d --- /dev/null +++ b/global/codemirror/mode/crystal/crystal.js @@ -0,0 +1,433 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("crystal", function(config) { + function wordRegExp(words, end) { + return new RegExp((end ? "" : "^") + "(?:" + words.join("|") + ")" + (end ? "$" : "\\b")); + } + + function chain(tokenize, stream, state) { + state.tokenize.push(tokenize); + return tokenize(stream, state); + } + + var operators = /^(?:[-+/%|&^]|\*\*?|[<>]{2})/; + var conditionalOperators = /^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/; + var indexingOperators = /^(?:\[\][?=]?)/; + var anotherOperators = /^(?:\.(?:\.{2})?|->|[?:])/; + var idents = /^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/; + var types = /^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/; + var keywords = wordRegExp([ + "abstract", "alias", "as", "asm", "begin", "break", "case", "class", "def", "do", + "else", "elsif", "end", "ensure", "enum", "extend", "for", "fun", "if", + "include", "instance_sizeof", "lib", "macro", "module", "next", "of", "out", "pointerof", + "private", "protected", "rescue", "return", "require", "select", "sizeof", "struct", + "super", "then", "type", "typeof", "uninitialized", "union", "unless", "until", "when", "while", "with", + "yield", "__DIR__", "__END_LINE__", "__FILE__", "__LINE__" + ]); + var atomWords = wordRegExp(["true", "false", "nil", "self"]); + var indentKeywordsArray = [ + "def", "fun", "macro", + "class", "module", "struct", "lib", "enum", "union", + "do", "for" + ]; + var indentKeywords = wordRegExp(indentKeywordsArray); + var indentExpressionKeywordsArray = ["if", "unless", "case", "while", "until", "begin", "then"]; + var indentExpressionKeywords = wordRegExp(indentExpressionKeywordsArray); + var dedentKeywordsArray = ["end", "else", "elsif", "rescue", "ensure"]; + var dedentKeywords = wordRegExp(dedentKeywordsArray); + var dedentPunctualsArray = ["\\)", "\\}", "\\]"]; + var dedentPunctuals = new RegExp("^(?:" + dedentPunctualsArray.join("|") + ")$"); + var nextTokenizer = { + "def": tokenFollowIdent, "fun": tokenFollowIdent, "macro": tokenMacroDef, + "class": tokenFollowType, "module": tokenFollowType, "struct": tokenFollowType, + "lib": tokenFollowType, "enum": tokenFollowType, "union": tokenFollowType + }; + var matching = {"[": "]", "{": "}", "(": ")", "<": ">"}; + + function tokenBase(stream, state) { + if (stream.eatSpace()) { + return null; + } + + // Macros + if (state.lastToken != "\\" && stream.match("{%", false)) { + return chain(tokenMacro("%", "%"), stream, state); + } + + if (state.lastToken != "\\" && stream.match("{{", false)) { + return chain(tokenMacro("{", "}"), stream, state); + } + + // Comments + if (stream.peek() == "#") { + stream.skipToEnd(); + return "comment"; + } + + // Variables and keywords + var matched; + if (stream.match(idents)) { + stream.eat(/[?!]/); + + matched = stream.current(); + if (stream.eat(":")) { + return "atom"; + } else if (state.lastToken == ".") { + return "property"; + } else if (keywords.test(matched)) { + if (indentKeywords.test(matched)) { + if (!(matched == "fun" && state.blocks.indexOf("lib") >= 0) && !(matched == "def" && state.lastToken == "abstract")) { + state.blocks.push(matched); + state.currentIndent += 1; + } + } else if ((state.lastStyle == "operator" || !state.lastStyle) && indentExpressionKeywords.test(matched)) { + state.blocks.push(matched); + state.currentIndent += 1; + } else if (matched == "end") { + state.blocks.pop(); + state.currentIndent -= 1; + } + + if (nextTokenizer.hasOwnProperty(matched)) { + state.tokenize.push(nextTokenizer[matched]); + } + + return "keyword"; + } else if (atomWords.test(matched)) { + return "atom"; + } + + return "variable"; + } + + // Class variables and instance variables + // or attributes + if (stream.eat("@")) { + if (stream.peek() == "[") { + return chain(tokenNest("[", "]", "meta"), stream, state); + } + + stream.eat("@"); + stream.match(idents) || stream.match(types); + return "variable-2"; + } + + // Constants and types + if (stream.match(types)) { + return "tag"; + } + + // Symbols or ':' operator + if (stream.eat(":")) { + if (stream.eat("\"")) { + return chain(tokenQuote("\"", "atom", false), stream, state); + } else if (stream.match(idents) || stream.match(types) || + stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators)) { + return "atom"; + } + stream.eat(":"); + return "operator"; + } + + // Strings + if (stream.eat("\"")) { + return chain(tokenQuote("\"", "string", true), stream, state); + } + + // Strings or regexps or macro variables or '%' operator + if (stream.peek() == "%") { + var style = "string"; + var embed = true; + var delim; + + if (stream.match("%r")) { + // Regexps + style = "string-2"; + delim = stream.next(); + } else if (stream.match("%w")) { + embed = false; + delim = stream.next(); + } else if (stream.match("%q")) { + embed = false; + delim = stream.next(); + } else { + if(delim = stream.match(/^%([^\w\s=])/)) { + delim = delim[1]; + } else if (stream.match(/^%[a-zA-Z0-9_\u009F-\uFFFF]*/)) { + // Macro variables + return "meta"; + } else { + // '%' operator + return "operator"; + } + } + + if (matching.hasOwnProperty(delim)) { + delim = matching[delim]; + } + return chain(tokenQuote(delim, style, embed), stream, state); + } + + // Here Docs + if (matched = stream.match(/^<<-('?)([A-Z]\w*)\1/)) { + return chain(tokenHereDoc(matched[2], !matched[1]), stream, state) + } + + // Characters + if (stream.eat("'")) { + stream.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/); + stream.eat("'"); + return "atom"; + } + + // Numbers + if (stream.eat("0")) { + if (stream.eat("x")) { + stream.match(/^[0-9a-fA-F]+/); + } else if (stream.eat("o")) { + stream.match(/^[0-7]+/); + } else if (stream.eat("b")) { + stream.match(/^[01]+/); + } + return "number"; + } + + if (stream.eat(/^\d/)) { + stream.match(/^\d*(?:\.\d+)?(?:[eE][+-]?\d+)?/); + return "number"; + } + + // Operators + if (stream.match(operators)) { + stream.eat("="); // Operators can follow assign symbol. + return "operator"; + } + + if (stream.match(conditionalOperators) || stream.match(anotherOperators)) { + return "operator"; + } + + // Parens and braces + if (matched = stream.match(/[({[]/, false)) { + matched = matched[0]; + return chain(tokenNest(matched, matching[matched], null), stream, state); + } + + // Escapes + if (stream.eat("\\")) { + stream.next(); + return "meta"; + } + + stream.next(); + return null; + } + + function tokenNest(begin, end, style, started) { + return function (stream, state) { + if (!started && stream.match(begin)) { + state.tokenize[state.tokenize.length - 1] = tokenNest(begin, end, style, true); + state.currentIndent += 1; + return style; + } + + var nextStyle = tokenBase(stream, state); + if (stream.current() === end) { + state.tokenize.pop(); + state.currentIndent -= 1; + nextStyle = style; + } + + return nextStyle; + }; + } + + function tokenMacro(begin, end, started) { + return function (stream, state) { + if (!started && stream.match("{" + begin)) { + state.currentIndent += 1; + state.tokenize[state.tokenize.length - 1] = tokenMacro(begin, end, true); + return "meta"; + } + + if (stream.match(end + "}")) { + state.currentIndent -= 1; + state.tokenize.pop(); + return "meta"; + } + + return tokenBase(stream, state); + }; + } + + function tokenMacroDef(stream, state) { + if (stream.eatSpace()) { + return null; + } + + var matched; + if (matched = stream.match(idents)) { + if (matched == "def") { + return "keyword"; + } + stream.eat(/[?!]/); + } + + state.tokenize.pop(); + return "def"; + } + + function tokenFollowIdent(stream, state) { + if (stream.eatSpace()) { + return null; + } + + if (stream.match(idents)) { + stream.eat(/[!?]/); + } else { + stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators); + } + state.tokenize.pop(); + return "def"; + } + + function tokenFollowType(stream, state) { + if (stream.eatSpace()) { + return null; + } + + stream.match(types); + state.tokenize.pop(); + return "def"; + } + + function tokenQuote(end, style, embed) { + return function (stream, state) { + var escaped = false; + + while (stream.peek()) { + if (!escaped) { + if (stream.match("{%", false)) { + state.tokenize.push(tokenMacro("%", "%")); + return style; + } + + if (stream.match("{{", false)) { + state.tokenize.push(tokenMacro("{", "}")); + return style; + } + + if (embed && stream.match("#{", false)) { + state.tokenize.push(tokenNest("#{", "}", "meta")); + return style; + } + + var ch = stream.next(); + + if (ch == end) { + state.tokenize.pop(); + return style; + } + + escaped = embed && ch == "\\"; + } else { + stream.next(); + escaped = false; + } + } + + return style; + }; + } + + function tokenHereDoc(phrase, embed) { + return function (stream, state) { + if (stream.sol()) { + stream.eatSpace() + if (stream.match(phrase)) { + state.tokenize.pop(); + return "string"; + } + } + + var escaped = false; + while (stream.peek()) { + if (!escaped) { + if (stream.match("{%", false)) { + state.tokenize.push(tokenMacro("%", "%")); + return "string"; + } + + if (stream.match("{{", false)) { + state.tokenize.push(tokenMacro("{", "}")); + return "string"; + } + + if (embed && stream.match("#{", false)) { + state.tokenize.push(tokenNest("#{", "}", "meta")); + return "string"; + } + + escaped = embed && stream.next() == "\\"; + } else { + stream.next(); + escaped = false; + } + } + + return "string"; + } + } + + return { + startState: function () { + return { + tokenize: [tokenBase], + currentIndent: 0, + lastToken: null, + lastStyle: null, + blocks: [] + }; + }, + + token: function (stream, state) { + var style = state.tokenize[state.tokenize.length - 1](stream, state); + var token = stream.current(); + + if (style && style != "comment") { + state.lastToken = token; + state.lastStyle = style; + } + + return style; + }, + + indent: function (state, textAfter) { + textAfter = textAfter.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g, ""); + + if (dedentKeywords.test(textAfter) || dedentPunctuals.test(textAfter)) { + return config.indentUnit * (state.currentIndent - 1); + } + + return config.indentUnit * state.currentIndent; + }, + + fold: "indent", + electricInput: wordRegExp(dedentPunctualsArray.concat(dedentKeywordsArray), true), + lineComment: '#' + }; + }); + + CodeMirror.defineMIME("text/x-crystal", "crystal"); +}); diff --git a/global/codemirror/mode/crystal/index.html b/global/codemirror/mode/crystal/index.html new file mode 100644 index 00000000..95412579 --- /dev/null +++ b/global/codemirror/mode/crystal/index.html @@ -0,0 +1,116 @@ + + +CodeMirror: Crystal mode + + + + + + + + + + + +
+

Crystal mode

+
+ + +

MIME types defined: text/x-crystal.

+
diff --git a/global/codemirror/mode/css/css.js b/global/codemirror/mode/css/css.js new file mode 100644 index 00000000..bfe11d3b --- /dev/null +++ b/global/codemirror/mode/css/css.js @@ -0,0 +1,831 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("css", function(config, parserConfig) { + var inline = parserConfig.inline + if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css"); + + var indentUnit = config.indentUnit, + tokenHooks = parserConfig.tokenHooks, + documentTypes = parserConfig.documentTypes || {}, + mediaTypes = parserConfig.mediaTypes || {}, + mediaFeatures = parserConfig.mediaFeatures || {}, + mediaValueKeywords = parserConfig.mediaValueKeywords || {}, + propertyKeywords = parserConfig.propertyKeywords || {}, + nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {}, + fontProperties = parserConfig.fontProperties || {}, + counterDescriptors = parserConfig.counterDescriptors || {}, + colorKeywords = parserConfig.colorKeywords || {}, + valueKeywords = parserConfig.valueKeywords || {}, + allowNested = parserConfig.allowNested, + lineComment = parserConfig.lineComment, + supportsAtComponent = parserConfig.supportsAtComponent === true; + + var type, override; + function ret(style, tp) { type = tp; return style; } + + // Tokenizers + + function tokenBase(stream, state) { + var ch = stream.next(); + if (tokenHooks[ch]) { + var result = tokenHooks[ch](stream, state); + if (result !== false) return result; + } + if (ch == "@") { + stream.eatWhile(/[\w\\\-]/); + return ret("def", stream.current()); + } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) { + return ret(null, "compare"); + } else if (ch == "\"" || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } else if (ch == "#") { + stream.eatWhile(/[\w\\\-]/); + return ret("atom", "hash"); + } else if (ch == "!") { + stream.match(/^\s*\w*/); + return ret("keyword", "important"); + } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) { + stream.eatWhile(/[\w.%]/); + return ret("number", "unit"); + } else if (ch === "-") { + if (/[\d.]/.test(stream.peek())) { + stream.eatWhile(/[\w.%]/); + return ret("number", "unit"); + } else if (stream.match(/^-[\w\\\-]+/)) { + stream.eatWhile(/[\w\\\-]/); + if (stream.match(/^\s*:/, false)) + return ret("variable-2", "variable-definition"); + return ret("variable-2", "variable"); + } else if (stream.match(/^\w+-/)) { + return ret("meta", "meta"); + } + } else if (/[,+>*\/]/.test(ch)) { + return ret(null, "select-op"); + } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { + return ret("qualifier", "qualifier"); + } else if (/[:;{}\[\]\(\)]/.test(ch)) { + return ret(null, ch); + } else if ((ch == "u" && stream.match(/rl(-prefix)?\(/)) || + (ch == "d" && stream.match("omain(")) || + (ch == "r" && stream.match("egexp("))) { + stream.backUp(1); + state.tokenize = tokenParenthesized; + return ret("property", "word"); + } else if (/[\w\\\-]/.test(ch)) { + stream.eatWhile(/[\w\\\-]/); + return ret("property", "word"); + } else { + return ret(null, null); + } + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) { + if (quote == ")") stream.backUp(1); + break; + } + escaped = !escaped && ch == "\\"; + } + if (ch == quote || !escaped && quote != ")") state.tokenize = null; + return ret("string", "string"); + }; + } + + function tokenParenthesized(stream, state) { + stream.next(); // Must be '(' + if (!stream.match(/\s*[\"\')]/, false)) + state.tokenize = tokenString(")"); + else + state.tokenize = null; + return ret(null, "("); + } + + // Context management + + function Context(type, indent, prev) { + this.type = type; + this.indent = indent; + this.prev = prev; + } + + function pushContext(state, stream, type, indent) { + state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context); + return type; + } + + function popContext(state) { + if (state.context.prev) + state.context = state.context.prev; + return state.context.type; + } + + function pass(type, stream, state) { + return states[state.context.type](type, stream, state); + } + function popAndPass(type, stream, state, n) { + for (var i = n || 1; i > 0; i--) + state.context = state.context.prev; + return pass(type, stream, state); + } + + // Parser + + function wordAsValue(stream) { + var word = stream.current().toLowerCase(); + if (valueKeywords.hasOwnProperty(word)) + override = "atom"; + else if (colorKeywords.hasOwnProperty(word)) + override = "keyword"; + else + override = "variable"; + } + + var states = {}; + + states.top = function(type, stream, state) { + if (type == "{") { + return pushContext(state, stream, "block"); + } else if (type == "}" && state.context.prev) { + return popContext(state); + } else if (supportsAtComponent && /@component/.test(type)) { + return pushContext(state, stream, "atComponentBlock"); + } else if (/^@(-moz-)?document$/.test(type)) { + return pushContext(state, stream, "documentTypes"); + } else if (/^@(media|supports|(-moz-)?document|import)$/.test(type)) { + return pushContext(state, stream, "atBlock"); + } else if (/^@(font-face|counter-style)/.test(type)) { + state.stateArg = type; + return "restricted_atBlock_before"; + } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { + return "keyframes"; + } else if (type && type.charAt(0) == "@") { + return pushContext(state, stream, "at"); + } else if (type == "hash") { + override = "builtin"; + } else if (type == "word") { + override = "tag"; + } else if (type == "variable-definition") { + return "maybeprop"; + } else if (type == "interpolation") { + return pushContext(state, stream, "interpolation"); + } else if (type == ":") { + return "pseudo"; + } else if (allowNested && type == "(") { + return pushContext(state, stream, "parens"); + } + return state.context.type; + }; + + states.block = function(type, stream, state) { + if (type == "word") { + var word = stream.current().toLowerCase(); + if (propertyKeywords.hasOwnProperty(word)) { + override = "property"; + return "maybeprop"; + } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) { + override = "string-2"; + return "maybeprop"; + } else if (allowNested) { + override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag"; + return "block"; + } else { + override += " error"; + return "maybeprop"; + } + } else if (type == "meta") { + return "block"; + } else if (!allowNested && (type == "hash" || type == "qualifier")) { + override = "error"; + return "block"; + } else { + return states.top(type, stream, state); + } + }; + + states.maybeprop = function(type, stream, state) { + if (type == ":") return pushContext(state, stream, "prop"); + return pass(type, stream, state); + }; + + states.prop = function(type, stream, state) { + if (type == ";") return popContext(state); + if (type == "{" && allowNested) return pushContext(state, stream, "propBlock"); + if (type == "}" || type == "{") return popAndPass(type, stream, state); + if (type == "(") return pushContext(state, stream, "parens"); + + if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) { + override += " error"; + } else if (type == "word") { + wordAsValue(stream); + } else if (type == "interpolation") { + return pushContext(state, stream, "interpolation"); + } + return "prop"; + }; + + states.propBlock = function(type, _stream, state) { + if (type == "}") return popContext(state); + if (type == "word") { override = "property"; return "maybeprop"; } + return state.context.type; + }; + + states.parens = function(type, stream, state) { + if (type == "{" || type == "}") return popAndPass(type, stream, state); + if (type == ")") return popContext(state); + if (type == "(") return pushContext(state, stream, "parens"); + if (type == "interpolation") return pushContext(state, stream, "interpolation"); + if (type == "word") wordAsValue(stream); + return "parens"; + }; + + states.pseudo = function(type, stream, state) { + if (type == "meta") return "pseudo"; + + if (type == "word") { + override = "variable-3"; + return state.context.type; + } + return pass(type, stream, state); + }; + + states.documentTypes = function(type, stream, state) { + if (type == "word" && documentTypes.hasOwnProperty(stream.current())) { + override = "tag"; + return state.context.type; + } else { + return states.atBlock(type, stream, state); + } + }; + + states.atBlock = function(type, stream, state) { + if (type == "(") return pushContext(state, stream, "atBlock_parens"); + if (type == "}" || type == ";") return popAndPass(type, stream, state); + if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top"); + + if (type == "interpolation") return pushContext(state, stream, "interpolation"); + + if (type == "word") { + var word = stream.current().toLowerCase(); + if (word == "only" || word == "not" || word == "and" || word == "or") + override = "keyword"; + else if (mediaTypes.hasOwnProperty(word)) + override = "attribute"; + else if (mediaFeatures.hasOwnProperty(word)) + override = "property"; + else if (mediaValueKeywords.hasOwnProperty(word)) + override = "keyword"; + else if (propertyKeywords.hasOwnProperty(word)) + override = "property"; + else if (nonStandardPropertyKeywords.hasOwnProperty(word)) + override = "string-2"; + else if (valueKeywords.hasOwnProperty(word)) + override = "atom"; + else if (colorKeywords.hasOwnProperty(word)) + override = "keyword"; + else + override = "error"; + } + return state.context.type; + }; + + states.atComponentBlock = function(type, stream, state) { + if (type == "}") + return popAndPass(type, stream, state); + if (type == "{") + return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false); + if (type == "word") + override = "error"; + return state.context.type; + }; + + states.atBlock_parens = function(type, stream, state) { + if (type == ")") return popContext(state); + if (type == "{" || type == "}") return popAndPass(type, stream, state, 2); + return states.atBlock(type, stream, state); + }; + + states.restricted_atBlock_before = function(type, stream, state) { + if (type == "{") + return pushContext(state, stream, "restricted_atBlock"); + if (type == "word" && state.stateArg == "@counter-style") { + override = "variable"; + return "restricted_atBlock_before"; + } + return pass(type, stream, state); + }; + + states.restricted_atBlock = function(type, stream, state) { + if (type == "}") { + state.stateArg = null; + return popContext(state); + } + if (type == "word") { + if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) || + (state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase()))) + override = "error"; + else + override = "property"; + return "maybeprop"; + } + return "restricted_atBlock"; + }; + + states.keyframes = function(type, stream, state) { + if (type == "word") { override = "variable"; return "keyframes"; } + if (type == "{") return pushContext(state, stream, "top"); + return pass(type, stream, state); + }; + + states.at = function(type, stream, state) { + if (type == ";") return popContext(state); + if (type == "{" || type == "}") return popAndPass(type, stream, state); + if (type == "word") override = "tag"; + else if (type == "hash") override = "builtin"; + return "at"; + }; + + states.interpolation = function(type, stream, state) { + if (type == "}") return popContext(state); + if (type == "{" || type == ";") return popAndPass(type, stream, state); + if (type == "word") override = "variable"; + else if (type != "variable" && type != "(" && type != ")") override = "error"; + return "interpolation"; + }; + + return { + startState: function(base) { + return {tokenize: null, + state: inline ? "block" : "top", + stateArg: null, + context: new Context(inline ? "block" : "top", base || 0, null)}; + }, + + token: function(stream, state) { + if (!state.tokenize && stream.eatSpace()) return null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style && typeof style == "object") { + type = style[1]; + style = style[0]; + } + override = style; + if (type != "comment") + state.state = states[state.state](type, stream, state); + return override; + }, + + indent: function(state, textAfter) { + var cx = state.context, ch = textAfter && textAfter.charAt(0); + var indent = cx.indent; + if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev; + if (cx.prev) { + if (ch == "}" && (cx.type == "block" || cx.type == "top" || + cx.type == "interpolation" || cx.type == "restricted_atBlock")) { + // Resume indentation from parent context. + cx = cx.prev; + indent = cx.indent; + } else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || + ch == "{" && (cx.type == "at" || cx.type == "atBlock")) { + // Dedent relative to current context. + indent = Math.max(0, cx.indent - indentUnit); + } + } + return indent; + }, + + electricChars: "}", + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: lineComment, + fold: "brace" + }; +}); + + function keySet(array) { + var keys = {}; + for (var i = 0; i < array.length; ++i) { + keys[array[i].toLowerCase()] = true; + } + return keys; + } + + var documentTypes_ = [ + "domain", "regexp", "url", "url-prefix" + ], documentTypes = keySet(documentTypes_); + + var mediaTypes_ = [ + "all", "aural", "braille", "handheld", "print", "projection", "screen", + "tty", "tv", "embossed" + ], mediaTypes = keySet(mediaTypes_); + + var mediaFeatures_ = [ + "width", "min-width", "max-width", "height", "min-height", "max-height", + "device-width", "min-device-width", "max-device-width", "device-height", + "min-device-height", "max-device-height", "aspect-ratio", + "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", + "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", + "max-color", "color-index", "min-color-index", "max-color-index", + "monochrome", "min-monochrome", "max-monochrome", "resolution", + "min-resolution", "max-resolution", "scan", "grid", "orientation", + "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio", + "pointer", "any-pointer", "hover", "any-hover" + ], mediaFeatures = keySet(mediaFeatures_); + + var mediaValueKeywords_ = [ + "landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover", + "interlace", "progressive" + ], mediaValueKeywords = keySet(mediaValueKeywords_); + + var propertyKeywords_ = [ + "align-content", "align-items", "align-self", "alignment-adjust", + "alignment-baseline", "anchor-point", "animation", "animation-delay", + "animation-direction", "animation-duration", "animation-fill-mode", + "animation-iteration-count", "animation-name", "animation-play-state", + "animation-timing-function", "appearance", "azimuth", "backface-visibility", + "background", "background-attachment", "background-blend-mode", "background-clip", + "background-color", "background-image", "background-origin", "background-position", + "background-repeat", "background-size", "baseline-shift", "binding", + "bleed", "bookmark-label", "bookmark-level", "bookmark-state", + "bookmark-target", "border", "border-bottom", "border-bottom-color", + "border-bottom-left-radius", "border-bottom-right-radius", + "border-bottom-style", "border-bottom-width", "border-collapse", + "border-color", "border-image", "border-image-outset", + "border-image-repeat", "border-image-slice", "border-image-source", + "border-image-width", "border-left", "border-left-color", + "border-left-style", "border-left-width", "border-radius", "border-right", + "border-right-color", "border-right-style", "border-right-width", + "border-spacing", "border-style", "border-top", "border-top-color", + "border-top-left-radius", "border-top-right-radius", "border-top-style", + "border-top-width", "border-width", "bottom", "box-decoration-break", + "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", + "caption-side", "caret-color", "clear", "clip", "color", "color-profile", "column-count", + "column-fill", "column-gap", "column-rule", "column-rule-color", + "column-rule-style", "column-rule-width", "column-span", "column-width", + "columns", "content", "counter-increment", "counter-reset", "crop", "cue", + "cue-after", "cue-before", "cursor", "direction", "display", + "dominant-baseline", "drop-initial-after-adjust", + "drop-initial-after-align", "drop-initial-before-adjust", + "drop-initial-before-align", "drop-initial-size", "drop-initial-value", + "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", + "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", + "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", + "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", + "font-stretch", "font-style", "font-synthesis", "font-variant", + "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", + "font-variant-ligatures", "font-variant-numeric", "font-variant-position", + "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", + "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap", + "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap", + "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns", + "grid-template-rows", "hanging-punctuation", "height", "hyphens", + "icon", "image-orientation", "image-rendering", "image-resolution", + "inline-box-align", "justify-content", "justify-items", "justify-self", "left", "letter-spacing", + "line-break", "line-height", "line-stacking", "line-stacking-ruby", + "line-stacking-shift", "line-stacking-strategy", "list-style", + "list-style-image", "list-style-position", "list-style-type", "margin", + "margin-bottom", "margin-left", "margin-right", "margin-top", + "marks", "marquee-direction", "marquee-loop", + "marquee-play-count", "marquee-speed", "marquee-style", "max-height", + "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", + "nav-left", "nav-right", "nav-up", "object-fit", "object-position", + "opacity", "order", "orphans", "outline", + "outline-color", "outline-offset", "outline-style", "outline-width", + "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", + "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", + "page", "page-break-after", "page-break-before", "page-break-inside", + "page-policy", "pause", "pause-after", "pause-before", "perspective", + "perspective-origin", "pitch", "pitch-range", "place-content", "place-items", "place-self", "play-during", "position", + "presentation-level", "punctuation-trim", "quotes", "region-break-after", + "region-break-before", "region-break-inside", "region-fragment", + "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", + "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", + "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin", + "shape-outside", "size", "speak", "speak-as", "speak-header", + "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", + "tab-size", "table-layout", "target", "target-name", "target-new", + "target-position", "text-align", "text-align-last", "text-decoration", + "text-decoration-color", "text-decoration-line", "text-decoration-skip", + "text-decoration-style", "text-emphasis", "text-emphasis-color", + "text-emphasis-position", "text-emphasis-style", "text-height", + "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", + "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", + "text-wrap", "top", "transform", "transform-origin", "transform-style", + "transition", "transition-delay", "transition-duration", + "transition-property", "transition-timing-function", "unicode-bidi", + "user-select", "vertical-align", "visibility", "voice-balance", "voice-duration", + "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", + "voice-volume", "volume", "white-space", "widows", "width", "will-change", "word-break", + "word-spacing", "word-wrap", "z-index", + // SVG-specific + "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", + "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", + "color-interpolation", "color-interpolation-filters", + "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", + "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", + "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", + "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", + "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", + "glyph-orientation-vertical", "text-anchor", "writing-mode" + ], propertyKeywords = keySet(propertyKeywords_); + + var nonStandardPropertyKeywords_ = [ + "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", + "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", + "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside", + "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", + "searchfield-results-decoration", "zoom" + ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_); + + var fontProperties_ = [ + "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", + "font-stretch", "font-weight", "font-style" + ], fontProperties = keySet(fontProperties_); + + var counterDescriptors_ = [ + "additive-symbols", "fallback", "negative", "pad", "prefix", "range", + "speak-as", "suffix", "symbols", "system" + ], counterDescriptors = keySet(counterDescriptors_); + + var colorKeywords_ = [ + "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", + "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", + "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", + "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", + "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", + "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", + "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", + "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", + "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", + "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", + "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", + "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", + "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", + "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", + "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", + "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", + "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", + "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", + "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", + "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", + "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", + "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", + "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", + "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", + "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", + "whitesmoke", "yellow", "yellowgreen" + ], colorKeywords = keySet(colorKeywords_); + + var valueKeywords_ = [ + "above", "absolute", "activeborder", "additive", "activecaption", "afar", + "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate", + "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", + "arabic-indic", "armenian", "asterisks", "attr", "auto", "auto-flow", "avoid", "avoid-column", "avoid-page", + "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", + "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", + "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel", + "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian", + "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", + "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch", + "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", + "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse", + "compact", "condensed", "contain", "content", "contents", + "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop", + "cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal", + "decimal-leading-zero", "default", "default-button", "dense", "destination-atop", + "destination-in", "destination-out", "destination-over", "devanagari", "difference", + "disc", "discard", "disclosure-closed", "disclosure-open", "document", + "dot-dash", "dot-dot-dash", + "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", + "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", + "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", + "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", + "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", + "ethiopic-halehame-gez", "ethiopic-halehame-om-et", + "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", + "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig", + "ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed", + "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes", + "forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove", + "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew", + "help", "hidden", "hide", "higher", "highlight", "highlighttext", + "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore", + "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", + "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", + "inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert", + "italic", "japanese-formal", "japanese-informal", "justify", "kannada", + "katakana", "katakana-iroha", "keep-all", "khmer", + "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal", + "landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten", + "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem", + "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", + "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", + "lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d", + "media-controls-background", "media-current-time-display", + "media-fullscreen-button", "media-mute-button", "media-play-button", + "media-return-to-realtime-button", "media-rewind-button", + "media-seek-back-button", "media-seek-forward-button", "media-slider", + "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", + "media-volume-slider-container", "media-volume-sliderthumb", "medium", + "menu", "menulist", "menulist-button", "menulist-text", + "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", + "mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize", + "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", + "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", + "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "opacity", "open-quote", + "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", + "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", + "painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter", + "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", + "progress", "push-button", "radial-gradient", "radio", "read-only", + "read-write", "read-write-plaintext-only", "rectangle", "region", + "relative", "repeat", "repeating-linear-gradient", + "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse", + "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY", + "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running", + "s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen", + "scroll", "scrollbar", "scroll-position", "se-resize", "searchfield", + "searchfield-cancel-button", "searchfield-decoration", + "searchfield-results-button", "searchfield-results-decoration", "self-start", "self-end", + "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", + "simp-chinese-formal", "simp-chinese-informal", "single", + "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal", + "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", + "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali", + "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "space-evenly", "spell-out", "square", + "square-button", "start", "static", "status-bar", "stretch", "stroke", "sub", + "subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "system-ui", "table", + "table-caption", "table-cell", "table-column", "table-column-group", + "table-footer-group", "table-header-group", "table-row", "table-row-group", + "tamil", + "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", + "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", + "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", + "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", + "trad-chinese-formal", "trad-chinese-informal", "transform", + "translate", "translate3d", "translateX", "translateY", "translateZ", + "transparent", "ultra-condensed", "ultra-expanded", "underline", "unset", "up", + "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", + "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", + "var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", + "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", + "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor", + "xx-large", "xx-small" + ], valueKeywords = keySet(valueKeywords_); + + var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_) + .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_) + .concat(valueKeywords_); + CodeMirror.registerHelper("hintWords", "css", allWords); + + function tokenCComment(stream, state) { + var maybeEnd = false, ch; + while ((ch = stream.next()) != null) { + if (maybeEnd && ch == "/") { + state.tokenize = null; + break; + } + maybeEnd = (ch == "*"); + } + return ["comment", "comment"]; + } + + CodeMirror.defineMIME("text/css", { + documentTypes: documentTypes, + mediaTypes: mediaTypes, + mediaFeatures: mediaFeatures, + mediaValueKeywords: mediaValueKeywords, + propertyKeywords: propertyKeywords, + nonStandardPropertyKeywords: nonStandardPropertyKeywords, + fontProperties: fontProperties, + counterDescriptors: counterDescriptors, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + tokenHooks: { + "/": function(stream, state) { + if (!stream.eat("*")) return false; + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } + }, + name: "css" + }); + + CodeMirror.defineMIME("text/x-scss", { + mediaTypes: mediaTypes, + mediaFeatures: mediaFeatures, + mediaValueKeywords: mediaValueKeywords, + propertyKeywords: propertyKeywords, + nonStandardPropertyKeywords: nonStandardPropertyKeywords, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + fontProperties: fontProperties, + allowNested: true, + lineComment: "//", + tokenHooks: { + "/": function(stream, state) { + if (stream.eat("/")) { + stream.skipToEnd(); + return ["comment", "comment"]; + } else if (stream.eat("*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } else { + return ["operator", "operator"]; + } + }, + ":": function(stream) { + if (stream.match(/\s*\{/, false)) + return [null, null] + return false; + }, + "$": function(stream) { + stream.match(/^[\w-]+/); + if (stream.match(/^\s*:/, false)) + return ["variable-2", "variable-definition"]; + return ["variable-2", "variable"]; + }, + "#": function(stream) { + if (!stream.eat("{")) return false; + return [null, "interpolation"]; + } + }, + name: "css", + helperType: "scss" + }); + + CodeMirror.defineMIME("text/x-less", { + mediaTypes: mediaTypes, + mediaFeatures: mediaFeatures, + mediaValueKeywords: mediaValueKeywords, + propertyKeywords: propertyKeywords, + nonStandardPropertyKeywords: nonStandardPropertyKeywords, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + fontProperties: fontProperties, + allowNested: true, + lineComment: "//", + tokenHooks: { + "/": function(stream, state) { + if (stream.eat("/")) { + stream.skipToEnd(); + return ["comment", "comment"]; + } else if (stream.eat("*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } else { + return ["operator", "operator"]; + } + }, + "@": function(stream) { + if (stream.eat("{")) return [null, "interpolation"]; + if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false; + stream.eatWhile(/[\w\\\-]/); + if (stream.match(/^\s*:/, false)) + return ["variable-2", "variable-definition"]; + return ["variable-2", "variable"]; + }, + "&": function() { + return ["atom", "atom"]; + } + }, + name: "css", + helperType: "less" + }); + + CodeMirror.defineMIME("text/x-gss", { + documentTypes: documentTypes, + mediaTypes: mediaTypes, + mediaFeatures: mediaFeatures, + propertyKeywords: propertyKeywords, + nonStandardPropertyKeywords: nonStandardPropertyKeywords, + fontProperties: fontProperties, + counterDescriptors: counterDescriptors, + colorKeywords: colorKeywords, + valueKeywords: valueKeywords, + supportsAtComponent: true, + tokenHooks: { + "/": function(stream, state) { + if (!stream.eat("*")) return false; + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } + }, + name: "css", + helperType: "gss" + }); + +}); diff --git a/global/codemirror/mode/css/gss.html b/global/codemirror/mode/css/gss.html new file mode 100644 index 00000000..232fe8c1 --- /dev/null +++ b/global/codemirror/mode/css/gss.html @@ -0,0 +1,103 @@ + + +CodeMirror: Closure Stylesheets (GSS) mode + + + + + + + + + + + + +
+

Closure Stylesheets (GSS) mode

+
+ + +

A mode for Closure Stylesheets (GSS).

+

MIME type defined: text/x-gss.

+ +

Parsing/Highlighting Tests: normal, verbose.

+ +
diff --git a/global/codemirror/mode/css/gss_test.js b/global/codemirror/mode/css/gss_test.js new file mode 100644 index 00000000..d56e5928 --- /dev/null +++ b/global/codemirror/mode/css/gss_test.js @@ -0,0 +1,17 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + "use strict"; + + var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-gss"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "gss"); } + + MT("atComponent", + "[def @component] {", + "[tag foo] {", + " [property color]: [keyword black];", + "}", + "}"); + +})(); diff --git a/global/codemirror/mode/css/index.html b/global/codemirror/mode/css/index.html new file mode 100644 index 00000000..0d85311f --- /dev/null +++ b/global/codemirror/mode/css/index.html @@ -0,0 +1,75 @@ + + +CodeMirror: CSS mode + + + + + + + + + + + + +
+

CSS mode

+
+ + +

MIME types defined: text/css, text/x-scss (demo), text/x-less (demo).

+ +

Parsing/Highlighting Tests: normal, verbose.

+ +
diff --git a/global/codemirror/mode/css/less.html b/global/codemirror/mode/css/less.html new file mode 100644 index 00000000..adf7427d --- /dev/null +++ b/global/codemirror/mode/css/less.html @@ -0,0 +1,152 @@ + + +CodeMirror: LESS mode + + + + + + + + + + +
+

LESS mode

+
+ + +

The LESS mode is a sub-mode of the CSS mode (defined in css.js).

+ +

Parsing/Highlighting Tests: normal, verbose.

+
diff --git a/global/codemirror/mode/css/less_test.js b/global/codemirror/mode/css/less_test.js new file mode 100644 index 00000000..dd821558 --- /dev/null +++ b/global/codemirror/mode/css/less_test.js @@ -0,0 +1,54 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + "use strict"; + + var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } + + MT("variable", + "[variable-2 @base]: [atom #f04615];", + "[qualifier .class] {", + " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", + " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", + "}"); + + MT("amp", + "[qualifier .child], [qualifier .sibling] {", + " [qualifier .parent] [atom &] {", + " [property color]: [keyword black];", + " }", + " [atom &] + [atom &] {", + " [property color]: [keyword red];", + " }", + "}"); + + MT("mixin", + "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", + " [property color]: [atom darken]([variable-2 @color], [number 10%]);", + "}", + "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", + " [property color]: [atom lighten]([variable-2 @color], [number 10%]);", + "}", + "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", + " [property display]: [atom block];", + "}", + "[variable-2 @switch]: [variable light];", + "[qualifier .class] {", + " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", + "}"); + + MT("nest", + "[qualifier .one] {", + " [def @media] ([property width]: [number 400px]) {", + " [property font-size]: [number 1.2em];", + " [def @media] [attribute print] [keyword and] [property color] {", + " [property color]: [keyword blue];", + " }", + " }", + "}"); + + + MT("interpolation", ".@{[variable foo]} { [property font-weight]: [atom bold]; }"); +})(); diff --git a/global/codemirror/mode/css/scss.html b/global/codemirror/mode/css/scss.html new file mode 100644 index 00000000..f8e4d373 --- /dev/null +++ b/global/codemirror/mode/css/scss.html @@ -0,0 +1,157 @@ + + +CodeMirror: SCSS mode + + + + + + + + + +
+

SCSS mode

+
+ + +

The SCSS mode is a sub-mode of the CSS mode (defined in css.js).

+ +

Parsing/Highlighting Tests: normal, verbose.

+ +
diff --git a/global/codemirror/mode/css/scss_test.js b/global/codemirror/mode/css/scss_test.js new file mode 100644 index 00000000..785921b3 --- /dev/null +++ b/global/codemirror/mode/css/scss_test.js @@ -0,0 +1,110 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); } + + MT('url_with_quotation', + "[tag foo] { [property background]:[atom url]([string test.jpg]) }"); + + MT('url_with_double_quotes', + "[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }"); + + MT('url_with_single_quotes', + "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }"); + + MT('string', + "[def @import] [string \"compass/css3\"]"); + + MT('important_keyword', + "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }"); + + MT('variable', + "[variable-2 $blue]:[atom #333]"); + + MT('variable_as_attribute', + "[tag foo] { [property color]:[variable-2 $blue] }"); + + MT('numbers', + "[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }"); + + MT('number_percentage', + "[tag foo] { [property width]:[number 80%] }"); + + MT('selector', + "[builtin #hello][qualifier .world]{}"); + + MT('singleline_comment', + "[comment // this is a comment]"); + + MT('multiline_comment', + "[comment /*foobar*/]"); + + MT('attribute_with_hyphen', + "[tag foo] { [property font-size]:[number 10px] }"); + + MT('string_after_attribute', + "[tag foo] { [property content]:[string \"::\"] }"); + + MT('directives', + "[def @include] [qualifier .mixin]"); + + MT('basic_structure', + "[tag p] { [property background]:[keyword red]; }"); + + MT('nested_structure', + "[tag p] { [tag a] { [property color]:[keyword red]; } }"); + + MT('mixin', + "[def @mixin] [tag table-base] {}"); + + MT('number_without_semicolon', + "[tag p] {[property width]:[number 12]}", + "[tag a] {[property color]:[keyword red];}"); + + MT('atom_in_nested_block', + "[tag p] { [tag a] { [property color]:[atom #000]; } }"); + + MT('interpolation_in_property', + "[tag foo] { #{[variable-2 $hello]}:[number 2]; }"); + + MT('interpolation_in_selector', + "[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }"); + + MT('interpolation_error', + "[tag foo]#{[variable foo]} { [property color]:[atom #000]; }"); + + MT("divide_operator", + "[tag foo] { [property width]:[number 4] [operator /] [number 2] }"); + + MT('nested_structure_with_id_selector', + "[tag p] { [builtin #hello] { [property color]:[keyword red]; } }"); + + MT('indent_mixin', + "[def @mixin] [tag container] (", + " [variable-2 $a]: [number 10],", + " [variable-2 $b]: [number 10])", + "{}"); + + MT('indent_nested', + "[tag foo] {", + " [tag bar] {", + " }", + "}"); + + MT('indent_parentheses', + "[tag foo] {", + " [property color]: [atom darken]([variable-2 $blue],", + " [number 9%]);", + "}"); + + MT('indent_vardef', + "[variable-2 $name]:", + " [string 'val'];", + "[tag tag] {", + " [tag inner] {", + " [property margin]: [number 3px];", + " }", + "}"); +})(); diff --git a/global/codemirror/mode/css/test.js b/global/codemirror/mode/css/test.js new file mode 100644 index 00000000..6fc6e33c --- /dev/null +++ b/global/codemirror/mode/css/test.js @@ -0,0 +1,206 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "css"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + // Error, because "foobarhello" is neither a known type or property, but + // property was expected (after "and"), and it should be in parentheses. + MT("atMediaUnknownType", + "[def @media] [attribute screen] [keyword and] [error foobarhello] { }"); + + // Soft error, because "foobarhello" is not a known property or type. + MT("atMediaUnknownProperty", + "[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }"); + + // Make sure nesting works with media queries + MT("atMediaMaxWidthNested", + "[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }"); + + MT("atMediaFeatureValueKeyword", + "[def @media] ([property orientation]: [keyword landscape]) { }"); + + MT("atMediaUnknownFeatureValueKeyword", + "[def @media] ([property orientation]: [error upsidedown]) { }"); + + MT("tagSelector", + "[tag foo] { }"); + + MT("classSelector", + "[qualifier .foo-bar_hello] { }"); + + MT("idSelector", + "[builtin #foo] { [error #foo] }"); + + MT("tagSelectorUnclosed", + "[tag foo] { [property margin]: [number 0] } [tag bar] { }"); + + MT("tagStringNoQuotes", + "[tag foo] { [property font-family]: [variable hello] [variable world]; }"); + + MT("tagStringDouble", + "[tag foo] { [property font-family]: [string \"hello world\"]; }"); + + MT("tagStringSingle", + "[tag foo] { [property font-family]: [string 'hello world']; }"); + + MT("tagColorKeyword", + "[tag foo] {", + " [property color]: [keyword black];", + " [property color]: [keyword navy];", + " [property color]: [keyword yellow];", + "}"); + + MT("tagColorHex3", + "[tag foo] { [property background]: [atom #fff]; }"); + + MT("tagColorHex4", + "[tag foo] { [property background]: [atom #ffff]; }"); + + MT("tagColorHex6", + "[tag foo] { [property background]: [atom #ffffff]; }"); + + MT("tagColorHex8", + "[tag foo] { [property background]: [atom #ffffffff]; }"); + + MT("tagColorHex5Invalid", + "[tag foo] { [property background]: [atom&error #fffff]; }"); + + MT("tagColorHexInvalid", + "[tag foo] { [property background]: [atom&error #ffg]; }"); + + MT("tagNegativeNumber", + "[tag foo] { [property margin]: [number -5px]; }"); + + MT("tagPositiveNumber", + "[tag foo] { [property padding]: [number 5px]; }"); + + MT("tagVendor", + "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }"); + + MT("tagBogusProperty", + "[tag foo] { [property&error barhelloworld]: [number 0]; }"); + + MT("tagTwoProperties", + "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }"); + + MT("tagTwoPropertiesURL", + "[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }"); + + MT("indent_tagSelector", + "[tag strong], [tag em] {", + " [property background]: [atom rgba](", + " [number 255], [number 255], [number 0], [number .2]", + " );", + "}"); + + MT("indent_atMedia", + "[def @media] {", + " [tag foo] {", + " [property color]:", + " [keyword yellow];", + " }", + "}"); + + MT("indent_comma", + "[tag foo] {", + " [property font-family]: [variable verdana],", + " [atom sans-serif];", + "}"); + + MT("indent_parentheses", + "[tag foo]:[variable-3 before] {", + " [property background]: [atom url](", + "[string blahblah]", + "[string etc]", + "[string ]) [keyword !important];", + "}"); + + MT("font_face", + "[def @font-face] {", + " [property font-family]: [string 'myfont'];", + " [error nonsense]: [string 'abc'];", + " [property src]: [atom url]([string http://blah]),", + " [atom url]([string http://foo]);", + "}"); + + MT("empty_url", + "[def @import] [atom url]() [attribute screen];"); + + MT("parens", + "[qualifier .foo] {", + " [property background-image]: [variable fade]([atom #000], [number 20%]);", + " [property border-image]: [atom linear-gradient](", + " [atom to] [atom bottom],", + " [variable fade]([atom #000], [number 20%]) [number 0%],", + " [variable fade]([atom #000], [number 20%]) [number 100%]", + " );", + "}"); + + MT("css_variable", + ":[variable-3 root] {", + " [variable-2 --main-color]: [atom #06c];", + "}", + "[tag h1][builtin #foo] {", + " [property color]: [atom var]([variable-2 --main-color]);", + "}"); + + MT("supports", + "[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {", + " [property text-align-last]: [atom justify];", + "}"); + + MT("document", + "[def @document] [tag url]([string http://blah]),", + " [tag url-prefix]([string https://]),", + " [tag domain]([string blah.com]),", + " [tag regexp]([string \".*blah.+\"]) {", + " [builtin #id] {", + " [property background-color]: [keyword white];", + " }", + " [tag foo] {", + " [property font-family]: [variable Verdana], [atom sans-serif];", + " }", + "}"); + + MT("document_url", + "[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }"); + + MT("document_urlPrefix", + "[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }"); + + MT("document_domain", + "[def @document] [tag domain]([string blah.com]) { [tag foo] { } }"); + + MT("document_regexp", + "[def @document] [tag regexp]([string \".*blah.+\"]) { [builtin #id] { } }"); + + MT("counter-style", + "[def @counter-style] [variable binary] {", + " [property system]: [atom numeric];", + " [property symbols]: [number 0] [number 1];", + " [property suffix]: [string \".\"];", + " [property range]: [atom infinite];", + " [property speak-as]: [atom numeric];", + "}"); + + MT("counter-style-additive-symbols", + "[def @counter-style] [variable simple-roman] {", + " [property system]: [atom additive];", + " [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];", + " [property range]: [number 1] [number 49];", + "}"); + + MT("counter-style-use", + "[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }"); + + MT("counter-style-symbols", + "[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }"); + + MT("comment-does-not-disrupt", + "[def @font-face] [comment /* foo */] {", + " [property src]: [atom url]([string x]);", + " [property font-family]: [variable One];", + "}") +})(); diff --git a/global/codemirror/mode/cypher/cypher.js b/global/codemirror/mode/cypher/cypher.js new file mode 100644 index 00000000..9b249001 --- /dev/null +++ b/global/codemirror/mode/cypher/cypher.js @@ -0,0 +1,150 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// By the Neo4j Team and contributors. +// https://github.com/neo4j-contrib/CodeMirror + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + var wordRegexp = function(words) { + return new RegExp("^(?:" + words.join("|") + ")$", "i"); + }; + + CodeMirror.defineMode("cypher", function(config) { + var tokenBase = function(stream/*, state*/) { + var ch = stream.next(); + if (ch ==='"') { + stream.match(/.*?"/); + return "string"; + } + if (ch === "'") { + stream.match(/.*?'/); + return "string"; + } + if (/[{}\(\),\.;\[\]]/.test(ch)) { + curPunc = ch; + return "node"; + } else if (ch === "/" && stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } else if (operatorChars.test(ch)) { + stream.eatWhile(operatorChars); + return null; + } else { + stream.eatWhile(/[_\w\d]/); + if (stream.eat(":")) { + stream.eatWhile(/[\w\d_\-]/); + return "atom"; + } + var word = stream.current(); + if (funcs.test(word)) return "builtin"; + if (preds.test(word)) return "def"; + if (keywords.test(word)) return "keyword"; + return "variable"; + } + }; + var pushContext = function(state, type, col) { + return state.context = { + prev: state.context, + indent: state.indent, + col: col, + type: type + }; + }; + var popContext = function(state) { + state.indent = state.context.indent; + return state.context = state.context.prev; + }; + var indentUnit = config.indentUnit; + var curPunc; + var funcs = wordRegexp(["abs", "acos", "allShortestPaths", "asin", "atan", "atan2", "avg", "ceil", "coalesce", "collect", "cos", "cot", "count", "degrees", "e", "endnode", "exp", "extract", "filter", "floor", "haversin", "head", "id", "keys", "labels", "last", "left", "length", "log", "log10", "lower", "ltrim", "max", "min", "node", "nodes", "percentileCont", "percentileDisc", "pi", "radians", "rand", "range", "reduce", "rel", "relationship", "relationships", "replace", "reverse", "right", "round", "rtrim", "shortestPath", "sign", "sin", "size", "split", "sqrt", "startnode", "stdev", "stdevp", "str", "substring", "sum", "tail", "tan", "timestamp", "toFloat", "toInt", "toString", "trim", "type", "upper"]); + var preds = wordRegexp(["all", "and", "any", "contains", "exists", "has", "in", "none", "not", "or", "single", "xor"]); + var keywords = wordRegexp(["as", "asc", "ascending", "assert", "by", "case", "commit", "constraint", "create", "csv", "cypher", "delete", "desc", "descending", "detach", "distinct", "drop", "else", "end", "ends", "explain", "false", "fieldterminator", "foreach", "from", "headers", "in", "index", "is", "join", "limit", "load", "match", "merge", "null", "on", "optional", "order", "periodic", "profile", "remove", "return", "scan", "set", "skip", "start", "starts", "then", "true", "union", "unique", "unwind", "using", "when", "where", "with", "call", "yield"]); + var operatorChars = /[*+\-<>=&|~%^]/; + + return { + startState: function(/*base*/) { + return { + tokenize: tokenBase, + context: null, + indent: 0, + col: 0 + }; + }, + token: function(stream, state) { + if (stream.sol()) { + if (state.context && (state.context.align == null)) { + state.context.align = false; + } + state.indent = stream.indentation(); + } + if (stream.eatSpace()) { + return null; + } + var style = state.tokenize(stream, state); + if (style !== "comment" && state.context && (state.context.align == null) && state.context.type !== "pattern") { + state.context.align = true; + } + if (curPunc === "(") { + pushContext(state, ")", stream.column()); + } else if (curPunc === "[") { + pushContext(state, "]", stream.column()); + } else if (curPunc === "{") { + pushContext(state, "}", stream.column()); + } else if (/[\]\}\)]/.test(curPunc)) { + while (state.context && state.context.type === "pattern") { + popContext(state); + } + if (state.context && curPunc === state.context.type) { + popContext(state); + } + } else if (curPunc === "." && state.context && state.context.type === "pattern") { + popContext(state); + } else if (/atom|string|variable/.test(style) && state.context) { + if (/[\}\]]/.test(state.context.type)) { + pushContext(state, "pattern", stream.column()); + } else if (state.context.type === "pattern" && !state.context.align) { + state.context.align = true; + state.context.col = stream.column(); + } + } + return style; + }, + indent: function(state, textAfter) { + var firstChar = textAfter && textAfter.charAt(0); + var context = state.context; + if (/[\]\}]/.test(firstChar)) { + while (context && context.type === "pattern") { + context = context.prev; + } + } + var closing = context && firstChar === context.type; + if (!context) return 0; + if (context.type === "keywords") return CodeMirror.commands.newlineAndIndent; + if (context.align) return context.col + (closing ? 0 : 1); + return context.indent + (closing ? 0 : indentUnit); + } + }; + }); + + CodeMirror.modeExtensions["cypher"] = { + autoFormatLineBreaks: function(text) { + var i, lines, reProcessedPortion; + var lines = text.split("\n"); + var reProcessedPortion = /\s+\b(return|where|order by|match|with|skip|limit|create|delete|set)\b\s/g; + for (var i = 0; i < lines.length; i++) + lines[i] = lines[i].replace(reProcessedPortion, " \n$1 ").trim(); + return lines.join("\n"); + } + }; + + CodeMirror.defineMIME("application/x-cypher-query", "cypher"); + +}); diff --git a/global/codemirror/mode/cypher/index.html b/global/codemirror/mode/cypher/index.html new file mode 100644 index 00000000..b8bd75c8 --- /dev/null +++ b/global/codemirror/mode/cypher/index.html @@ -0,0 +1,63 @@ + + +CodeMirror: Cypher Mode for CodeMirror + + + + + + + + + + +
+

Cypher Mode for CodeMirror

+
+ +
+

MIME types defined: + application/x-cypher-query +

+ + +
diff --git a/global/codemirror/mode/cypher/test.js b/global/codemirror/mode/cypher/test.js new file mode 100644 index 00000000..76d0d082 --- /dev/null +++ b/global/codemirror/mode/cypher/test.js @@ -0,0 +1,37 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "cypher"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("unbalancedDoubledQuotedString", + "[string \"a'b\"][variable c]"); + + MT("unbalancedSingleQuotedString", + "[string 'a\"b'][variable c]"); + + MT("doubleQuotedString", + "[string \"a\"][variable b]"); + + MT("singleQuotedString", + "[string 'a'][variable b]"); + + MT("single attribute (with content)", + "[node {][atom a:][string 'a'][node }]"); + + MT("multiple attribute, singleQuotedString (with content)", + "[node {][atom a:][string 'a'][node ,][atom b:][string 'b'][node }]"); + + MT("multiple attribute, doubleQuotedString (with content)", + "[node {][atom a:][string \"a\"][node ,][atom b:][string \"b\"][node }]"); + + MT("single attribute (without content)", + "[node {][atom a:][string 'a'][node }]"); + + MT("multiple attribute, singleQuotedString (without content)", + "[node {][atom a:][string ''][node ,][atom b:][string ''][node }]"); + + MT("multiple attribute, doubleQuotedString (without content)", + "[node {][atom a:][string \"\"][node ,][atom b:][string \"\"][node }]"); + })(); diff --git a/global/codemirror/mode/d/d.js b/global/codemirror/mode/d/d.js new file mode 100644 index 00000000..77b09c22 --- /dev/null +++ b/global/codemirror/mode/d/d.js @@ -0,0 +1,218 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("d", function(config, parserConfig) { + var indentUnit = config.indentUnit, + statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, + keywords = parserConfig.keywords || {}, + builtin = parserConfig.builtin || {}, + blockKeywords = parserConfig.blockKeywords || {}, + atoms = parserConfig.atoms || {}, + hooks = parserConfig.hooks || {}, + multiLineStrings = parserConfig.multiLineStrings; + var isOperatorChar = /[+\-*&%=<>!?|\/]/; + + var curPunc; + + function tokenBase(stream, state) { + var ch = stream.next(); + if (hooks[ch]) { + var result = hooks[ch](stream, state); + if (result !== false) return result; + } + if (ch == '"' || ch == "'" || ch == "`") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + curPunc = ch; + return null; + } + if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } + if (ch == "/") { + if (stream.eat("+")) { + state.tokenize = tokenNestedComment; + return tokenNestedComment(stream, state); + } + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + } + if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + stream.eatWhile(/[\w\$_\xa1-\uffff]/); + var cur = stream.current(); + if (keywords.propertyIsEnumerable(cur)) { + if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; + return "keyword"; + } + if (builtin.propertyIsEnumerable(cur)) { + if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; + return "builtin"; + } + if (atoms.propertyIsEnumerable(cur)) return "atom"; + return "variable"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) {end = true; break;} + escaped = !escaped && next == "\\"; + } + if (end || !(escaped || multiLineStrings)) + state.tokenize = null; + return "string"; + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = null; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function tokenNestedComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = null; + break; + } + maybeEnd = (ch == "+"); + } + return "comment"; + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + function pushContext(state, col, type) { + var indent = state.indented; + if (state.context && state.context.type == "statement") + indent = state.context.indented; + return state.context = new Context(indent, col, type, null, state.context); + } + function popContext(state) { + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") + state.indented = state.context.indented; + return state.context = state.context.prev; + } + + // Interface + + return { + startState: function(basecolumn) { + return { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (stream.eatSpace()) return null; + curPunc = null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment" || style == "meta") return style; + if (ctx.align == null) ctx.align = true; + + if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state); + else if (curPunc == "{") pushContext(state, stream.column(), "}"); + else if (curPunc == "[") pushContext(state, stream.column(), "]"); + else if (curPunc == "(") pushContext(state, stream.column(), ")"); + else if (curPunc == "}") { + while (ctx.type == "statement") ctx = popContext(state); + if (ctx.type == "}") ctx = popContext(state); + while (ctx.type == "statement") ctx = popContext(state); + } + else if (curPunc == ctx.type) popContext(state); + else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement")) + pushContext(state, stream.column(), "statement"); + state.startOfLine = false; + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; + var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); + if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; + var closing = firstChar == ctx.type; + if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); + else if (ctx.align) return ctx.column + (closing ? 0 : 1); + else return ctx.indented + (closing ? 0 : indentUnit); + }, + + electricChars: "{}" + }; +}); + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + var blockKeywords = "body catch class do else enum for foreach foreach_reverse if in interface mixin " + + "out scope struct switch try union unittest version while with"; + + CodeMirror.defineMIME("text/x-d", { + name: "d", + keywords: words("abstract alias align asm assert auto break case cast cdouble cent cfloat const continue " + + "debug default delegate delete deprecated export extern final finally function goto immutable " + + "import inout invariant is lazy macro module new nothrow override package pragma private " + + "protected public pure ref return shared short static super synchronized template this " + + "throw typedef typeid typeof volatile __FILE__ __LINE__ __gshared __traits __vector __parameters " + + blockKeywords), + blockKeywords: words(blockKeywords), + builtin: words("bool byte char creal dchar double float idouble ifloat int ireal long real short ubyte " + + "ucent uint ulong ushort wchar wstring void size_t sizediff_t"), + atoms: words("exit failure success true false null"), + hooks: { + "@": function(stream, _state) { + stream.eatWhile(/[\w\$_]/); + return "meta"; + } + } + }); + +}); diff --git a/global/codemirror/mode/d/index.html b/global/codemirror/mode/d/index.html new file mode 100644 index 00000000..08cabd8a --- /dev/null +++ b/global/codemirror/mode/d/index.html @@ -0,0 +1,273 @@ + + +CodeMirror: D mode + + + + + + + + + + +
+

D mode

+
+ + + +

Simple mode that handle D-Syntax (DLang Homepage).

+ +

MIME types defined: text/x-d + .

+
diff --git a/global/codemirror/mode/d/test.js b/global/codemirror/mode/d/test.js new file mode 100644 index 00000000..d8de4ad3 --- /dev/null +++ b/global/codemirror/mode/d/test.js @@ -0,0 +1,11 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "d"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("nested_comments", + "[comment /+]","[comment comment]","[comment +/]","[variable void] [variable main](){}"); + +})(); diff --git a/global/codemirror/mode/dart/dart.js b/global/codemirror/mode/dart/dart.js new file mode 100644 index 00000000..398f5ef3 --- /dev/null +++ b/global/codemirror/mode/dart/dart.js @@ -0,0 +1,157 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../clike/clike")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../clike/clike"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + var keywords = ("this super static final const abstract class extends external factory " + + "implements get native operator set typedef with enum throw rethrow " + + "assert break case continue default in return new deferred async await covariant " + + "try catch finally do else for if switch while import library export " + + "part of show hide is as").split(" "); + var blockKeywords = "try catch finally do else for if switch while".split(" "); + var atoms = "true false null".split(" "); + var builtins = "void bool num int double dynamic var String".split(" "); + + function set(words) { + var obj = {}; + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + function pushInterpolationStack(state) { + (state.interpolationStack || (state.interpolationStack = [])).push(state.tokenize); + } + + function popInterpolationStack(state) { + return (state.interpolationStack || (state.interpolationStack = [])).pop(); + } + + function sizeInterpolationStack(state) { + return state.interpolationStack ? state.interpolationStack.length : 0; + } + + CodeMirror.defineMIME("application/dart", { + name: "clike", + keywords: set(keywords), + blockKeywords: set(blockKeywords), + builtin: set(builtins), + atoms: set(atoms), + hooks: { + "@": function(stream) { + stream.eatWhile(/[\w\$_\.]/); + return "meta"; + }, + + // custom string handling to deal with triple-quoted strings and string interpolation + "'": function(stream, state) { + return tokenString("'", stream, state, false); + }, + "\"": function(stream, state) { + return tokenString("\"", stream, state, false); + }, + "r": function(stream, state) { + var peek = stream.peek(); + if (peek == "'" || peek == "\"") { + return tokenString(stream.next(), stream, state, true); + } + return false; + }, + + "}": function(_stream, state) { + // "}" is end of interpolation, if interpolation stack is non-empty + if (sizeInterpolationStack(state) > 0) { + state.tokenize = popInterpolationStack(state); + return null; + } + return false; + }, + + "/": function(stream, state) { + if (!stream.eat("*")) return false + state.tokenize = tokenNestedComment(1) + return state.tokenize(stream, state) + } + } + }); + + function tokenString(quote, stream, state, raw) { + var tripleQuoted = false; + if (stream.eat(quote)) { + if (stream.eat(quote)) tripleQuoted = true; + else return "string"; //empty string + } + function tokenStringHelper(stream, state) { + var escaped = false; + while (!stream.eol()) { + if (!raw && !escaped && stream.peek() == "$") { + pushInterpolationStack(state); + state.tokenize = tokenInterpolation; + return "string"; + } + var next = stream.next(); + if (next == quote && !escaped && (!tripleQuoted || stream.match(quote + quote))) { + state.tokenize = null; + break; + } + escaped = !raw && !escaped && next == "\\"; + } + return "string"; + } + state.tokenize = tokenStringHelper; + return tokenStringHelper(stream, state); + } + + function tokenInterpolation(stream, state) { + stream.eat("$"); + if (stream.eat("{")) { + // let clike handle the content of ${...}, + // we take over again when "}" appears (see hooks). + state.tokenize = null; + } else { + state.tokenize = tokenInterpolationIdentifier; + } + return null; + } + + function tokenInterpolationIdentifier(stream, state) { + stream.eatWhile(/[\w_]/); + state.tokenize = popInterpolationStack(state); + return "variable"; + } + + function tokenNestedComment(depth) { + return function (stream, state) { + var ch + while (ch = stream.next()) { + if (ch == "*" && stream.eat("/")) { + if (depth == 1) { + state.tokenize = null + break + } else { + state.tokenize = tokenNestedComment(depth - 1) + return state.tokenize(stream, state) + } + } else if (ch == "/" && stream.eat("*")) { + state.tokenize = tokenNestedComment(depth + 1) + return state.tokenize(stream, state) + } + } + return "comment" + } + } + + CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins)); + + // This is needed to make loading through meta.js work. + CodeMirror.defineMode("dart", function(conf) { + return CodeMirror.getMode(conf, "application/dart"); + }, "clike"); +}); diff --git a/global/codemirror/mode/dart/index.html b/global/codemirror/mode/dart/index.html new file mode 100644 index 00000000..e79da5a8 --- /dev/null +++ b/global/codemirror/mode/dart/index.html @@ -0,0 +1,71 @@ + + +CodeMirror: Dart mode + + + + + + + + + +
+

Dart mode

+
+ +
+ + + +
diff --git a/global/codemirror/mode/diff/diff.js b/global/codemirror/mode/diff/diff.js new file mode 100644 index 00000000..fe0305e7 --- /dev/null +++ b/global/codemirror/mode/diff/diff.js @@ -0,0 +1,47 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("diff", function() { + + var TOKEN_NAMES = { + '+': 'positive', + '-': 'negative', + '@': 'meta' + }; + + return { + token: function(stream) { + var tw_pos = stream.string.search(/[\t ]+?$/); + + if (!stream.sol() || tw_pos === 0) { + stream.skipToEnd(); + return ("error " + ( + TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); + } + + var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); + + if (tw_pos === -1) { + stream.skipToEnd(); + } else { + stream.pos = tw_pos; + } + + return token_name; + } + }; +}); + +CodeMirror.defineMIME("text/x-diff", "diff"); + +}); diff --git a/global/codemirror/mode/diff/index.html b/global/codemirror/mode/diff/index.html new file mode 100644 index 00000000..0af611fa --- /dev/null +++ b/global/codemirror/mode/diff/index.html @@ -0,0 +1,117 @@ + + +CodeMirror: Diff mode + + + + + + + + + +
+

Diff mode

+
+ + +

MIME types defined: text/x-diff.

+ +
diff --git a/global/codemirror/mode/django/django.js b/global/codemirror/mode/django/django.js new file mode 100644 index 00000000..7b4ef3b5 --- /dev/null +++ b/global/codemirror/mode/django/django.js @@ -0,0 +1,356 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), + require("../../addon/mode/overlay")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../htmlmixed/htmlmixed", + "../../addon/mode/overlay"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("django:inner", function() { + var keywords = ["block", "endblock", "for", "endfor", "true", "false", "filter", "endfilter", + "loop", "none", "self", "super", "if", "elif", "endif", "as", "else", "import", + "with", "endwith", "without", "context", "ifequal", "endifequal", "ifnotequal", + "endifnotequal", "extends", "include", "load", "comment", "endcomment", + "empty", "url", "static", "trans", "blocktrans", "endblocktrans", "now", + "regroup", "lorem", "ifchanged", "endifchanged", "firstof", "debug", "cycle", + "csrf_token", "autoescape", "endautoescape", "spaceless", "endspaceless", + "ssi", "templatetag", "verbatim", "endverbatim", "widthratio"], + filters = ["add", "addslashes", "capfirst", "center", "cut", "date", + "default", "default_if_none", "dictsort", + "dictsortreversed", "divisibleby", "escape", "escapejs", + "filesizeformat", "first", "floatformat", "force_escape", + "get_digit", "iriencode", "join", "last", "length", + "length_is", "linebreaks", "linebreaksbr", "linenumbers", + "ljust", "lower", "make_list", "phone2numeric", "pluralize", + "pprint", "random", "removetags", "rjust", "safe", + "safeseq", "slice", "slugify", "stringformat", "striptags", + "time", "timesince", "timeuntil", "title", "truncatechars", + "truncatechars_html", "truncatewords", "truncatewords_html", + "unordered_list", "upper", "urlencode", "urlize", + "urlizetrunc", "wordcount", "wordwrap", "yesno"], + operators = ["==", "!=", "<", ">", "<=", ">="], + wordOperators = ["in", "not", "or", "and"]; + + keywords = new RegExp("^\\b(" + keywords.join("|") + ")\\b"); + filters = new RegExp("^\\b(" + filters.join("|") + ")\\b"); + operators = new RegExp("^\\b(" + operators.join("|") + ")\\b"); + wordOperators = new RegExp("^\\b(" + wordOperators.join("|") + ")\\b"); + + // We have to return "null" instead of null, in order to avoid string + // styling as the default, when using Django templates inside HTML + // element attributes + function tokenBase (stream, state) { + // Attempt to identify a variable, template or comment tag respectively + if (stream.match("{{")) { + state.tokenize = inVariable; + return "tag"; + } else if (stream.match("{%")) { + state.tokenize = inTag; + return "tag"; + } else if (stream.match("{#")) { + state.tokenize = inComment; + return "comment"; + } + + // Ignore completely any stream series that do not match the + // Django template opening tags. + while (stream.next() != null && !stream.match(/\{[{%#]/, false)) {} + return null; + } + + // A string can be included in either single or double quotes (this is + // the delimiter). Mark everything as a string until the start delimiter + // occurs again. + function inString (delimiter, previousTokenizer) { + return function (stream, state) { + if (!state.escapeNext && stream.eat(delimiter)) { + state.tokenize = previousTokenizer; + } else { + if (state.escapeNext) { + state.escapeNext = false; + } + + var ch = stream.next(); + + // Take into account the backslash for escaping characters, such as + // the string delimiter. + if (ch == "\\") { + state.escapeNext = true; + } + } + + return "string"; + }; + } + + // Apply Django template variable syntax highlighting + function inVariable (stream, state) { + // Attempt to match a dot that precedes a property + if (state.waitDot) { + state.waitDot = false; + + if (stream.peek() != ".") { + return "null"; + } + + // Dot followed by a non-word character should be considered an error. + if (stream.match(/\.\W+/)) { + return "error"; + } else if (stream.eat(".")) { + state.waitProperty = true; + return "null"; + } else { + throw Error ("Unexpected error while waiting for property."); + } + } + + // Attempt to match a pipe that precedes a filter + if (state.waitPipe) { + state.waitPipe = false; + + if (stream.peek() != "|") { + return "null"; + } + + // Pipe followed by a non-word character should be considered an error. + if (stream.match(/\.\W+/)) { + return "error"; + } else if (stream.eat("|")) { + state.waitFilter = true; + return "null"; + } else { + throw Error ("Unexpected error while waiting for filter."); + } + } + + // Highlight properties + if (state.waitProperty) { + state.waitProperty = false; + if (stream.match(/\b(\w+)\b/)) { + state.waitDot = true; // A property can be followed by another property + state.waitPipe = true; // A property can be followed by a filter + return "property"; + } + } + + // Highlight filters + if (state.waitFilter) { + state.waitFilter = false; + if (stream.match(filters)) { + return "variable-2"; + } + } + + // Ignore all white spaces + if (stream.eatSpace()) { + state.waitProperty = false; + return "null"; + } + + // Identify numbers + if (stream.match(/\b\d+(\.\d+)?\b/)) { + return "number"; + } + + // Identify strings + if (stream.match("'")) { + state.tokenize = inString("'", state.tokenize); + return "string"; + } else if (stream.match('"')) { + state.tokenize = inString('"', state.tokenize); + return "string"; + } + + // Attempt to find the variable + if (stream.match(/\b(\w+)\b/) && !state.foundVariable) { + state.waitDot = true; + state.waitPipe = true; // A property can be followed by a filter + return "variable"; + } + + // If found closing tag reset + if (stream.match("}}")) { + state.waitProperty = null; + state.waitFilter = null; + state.waitDot = null; + state.waitPipe = null; + state.tokenize = tokenBase; + return "tag"; + } + + // If nothing was found, advance to the next character + stream.next(); + return "null"; + } + + function inTag (stream, state) { + // Attempt to match a dot that precedes a property + if (state.waitDot) { + state.waitDot = false; + + if (stream.peek() != ".") { + return "null"; + } + + // Dot followed by a non-word character should be considered an error. + if (stream.match(/\.\W+/)) { + return "error"; + } else if (stream.eat(".")) { + state.waitProperty = true; + return "null"; + } else { + throw Error ("Unexpected error while waiting for property."); + } + } + + // Attempt to match a pipe that precedes a filter + if (state.waitPipe) { + state.waitPipe = false; + + if (stream.peek() != "|") { + return "null"; + } + + // Pipe followed by a non-word character should be considered an error. + if (stream.match(/\.\W+/)) { + return "error"; + } else if (stream.eat("|")) { + state.waitFilter = true; + return "null"; + } else { + throw Error ("Unexpected error while waiting for filter."); + } + } + + // Highlight properties + if (state.waitProperty) { + state.waitProperty = false; + if (stream.match(/\b(\w+)\b/)) { + state.waitDot = true; // A property can be followed by another property + state.waitPipe = true; // A property can be followed by a filter + return "property"; + } + } + + // Highlight filters + if (state.waitFilter) { + state.waitFilter = false; + if (stream.match(filters)) { + return "variable-2"; + } + } + + // Ignore all white spaces + if (stream.eatSpace()) { + state.waitProperty = false; + return "null"; + } + + // Identify numbers + if (stream.match(/\b\d+(\.\d+)?\b/)) { + return "number"; + } + + // Identify strings + if (stream.match("'")) { + state.tokenize = inString("'", state.tokenize); + return "string"; + } else if (stream.match('"')) { + state.tokenize = inString('"', state.tokenize); + return "string"; + } + + // Attempt to match an operator + if (stream.match(operators)) { + return "operator"; + } + + // Attempt to match a word operator + if (stream.match(wordOperators)) { + return "keyword"; + } + + // Attempt to match a keyword + var keywordMatch = stream.match(keywords); + if (keywordMatch) { + if (keywordMatch[0] == "comment") { + state.blockCommentTag = true; + } + return "keyword"; + } + + // Attempt to match a variable + if (stream.match(/\b(\w+)\b/)) { + state.waitDot = true; + state.waitPipe = true; // A property can be followed by a filter + return "variable"; + } + + // If found closing tag reset + if (stream.match("%}")) { + state.waitProperty = null; + state.waitFilter = null; + state.waitDot = null; + state.waitPipe = null; + // If the tag that closes is a block comment tag, we want to mark the + // following code as comment, until the tag closes. + if (state.blockCommentTag) { + state.blockCommentTag = false; // Release the "lock" + state.tokenize = inBlockComment; + } else { + state.tokenize = tokenBase; + } + return "tag"; + } + + // If nothing was found, advance to the next character + stream.next(); + return "null"; + } + + // Mark everything as comment inside the tag and the tag itself. + function inComment (stream, state) { + if (stream.match(/^.*?#\}/)) state.tokenize = tokenBase + else stream.skipToEnd() + return "comment"; + } + + // Mark everything as a comment until the `blockcomment` tag closes. + function inBlockComment (stream, state) { + if (stream.match(/\{%\s*endcomment\s*%\}/, false)) { + state.tokenize = inTag; + stream.match("{%"); + return "tag"; + } else { + stream.next(); + return "comment"; + } + } + + return { + startState: function () { + return {tokenize: tokenBase}; + }, + token: function (stream, state) { + return state.tokenize(stream, state); + }, + blockCommentStart: "{% comment %}", + blockCommentEnd: "{% endcomment %}" + }; + }); + + CodeMirror.defineMode("django", function(config) { + var htmlBase = CodeMirror.getMode(config, "text/html"); + var djangoInner = CodeMirror.getMode(config, "django:inner"); + return CodeMirror.overlayMode(htmlBase, djangoInner); + }); + + CodeMirror.defineMIME("text/x-django", "django"); +}); diff --git a/global/codemirror/mode/django/index.html b/global/codemirror/mode/django/index.html new file mode 100644 index 00000000..41ea07c9 --- /dev/null +++ b/global/codemirror/mode/django/index.html @@ -0,0 +1,73 @@ + + +CodeMirror: Django template mode + + + + + + + + + + + + + +
+

Django template mode

+
+ + + +

Mode for HTML with embedded Django template markup.

+ +

MIME types defined: text/x-django

+
diff --git a/global/codemirror/mode/dockerfile/dockerfile.js b/global/codemirror/mode/dockerfile/dockerfile.js new file mode 100644 index 00000000..4419009a --- /dev/null +++ b/global/codemirror/mode/dockerfile/dockerfile.js @@ -0,0 +1,79 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../../addon/mode/simple"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + // Collect all Dockerfile directives + var instructions = ["from", "maintainer", "run", "cmd", "expose", "env", + "add", "copy", "entrypoint", "volume", "user", + "workdir", "onbuild"], + instructionRegex = "(" + instructions.join('|') + ")", + instructionOnlyLine = new RegExp(instructionRegex + "\\s*$", "i"), + instructionWithArguments = new RegExp(instructionRegex + "(\\s+)", "i"); + + CodeMirror.defineSimpleMode("dockerfile", { + start: [ + // Block comment: This is a line starting with a comment + { + regex: /#.*$/, + token: "comment" + }, + // Highlight an instruction without any arguments (for convenience) + { + regex: instructionOnlyLine, + token: "variable-2" + }, + // Highlight an instruction followed by arguments + { + regex: instructionWithArguments, + token: ["variable-2", null], + next: "arguments" + }, + { + regex: /./, + token: null + } + ], + arguments: [ + { + // Line comment without instruction arguments is an error + regex: /#.*$/, + token: "error", + next: "start" + }, + { + regex: /[^#]+\\$/, + token: null + }, + { + // Match everything except for the inline comment + regex: /[^#]+/, + token: null, + next: "start" + }, + { + regex: /$/, + token: null, + next: "start" + }, + // Fail safe return to start + { + token: null, + next: "start" + } + ], + meta: { + lineComment: "#" + } + }); + + CodeMirror.defineMIME("text/x-dockerfile", "dockerfile"); +}); diff --git a/global/codemirror/mode/dockerfile/index.html b/global/codemirror/mode/dockerfile/index.html new file mode 100644 index 00000000..a31759bc --- /dev/null +++ b/global/codemirror/mode/dockerfile/index.html @@ -0,0 +1,73 @@ + + +CodeMirror: Dockerfile mode + + + + + + + + + + +
+

Dockerfile mode

+
+ + + +

Dockerfile syntax highlighting for CodeMirror. Depends on + the simplemode addon.

+ +

MIME types defined: text/x-dockerfile

+
diff --git a/global/codemirror/mode/dtd/dtd.js b/global/codemirror/mode/dtd/dtd.js new file mode 100644 index 00000000..52d76ee1 --- /dev/null +++ b/global/codemirror/mode/dtd/dtd.js @@ -0,0 +1,142 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/* + DTD mode + Ported to CodeMirror by Peter Kroon + Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues + GitHub: @peterkroon +*/ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("dtd", function(config) { + var indentUnit = config.indentUnit, type; + function ret(style, tp) {type = tp; return style;} + + function tokenBase(stream, state) { + var ch = stream.next(); + + if (ch == "<" && stream.eat("!") ) { + if (stream.eatWhile(/[\-]/)) { + state.tokenize = tokenSGMLComment; + return tokenSGMLComment(stream, state); + } else if (stream.eatWhile(/[\w]/)) return ret("keyword", "doindent"); + } else if (ch == "<" && stream.eat("?")) { //xml declaration + state.tokenize = inBlock("meta", "?>"); + return ret("meta", ch); + } else if (ch == "#" && stream.eatWhile(/[\w]/)) return ret("atom", "tag"); + else if (ch == "|") return ret("keyword", "seperator"); + else if (ch.match(/[\(\)\[\]\-\.,\+\?>]/)) return ret(null, ch);//if(ch === ">") return ret(null, "endtag"); else + else if (ch.match(/[\[\]]/)) return ret("rule", ch); + else if (ch == "\"" || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } else if (stream.eatWhile(/[a-zA-Z\?\+\d]/)) { + var sc = stream.current(); + if( sc.substr(sc.length-1,sc.length).match(/\?|\+/) !== null )stream.backUp(1); + return ret("tag", "tag"); + } else if (ch == "%" || ch == "*" ) return ret("number", "number"); + else { + stream.eatWhile(/[\w\\\-_%.{,]/); + return ret(null, null); + } + } + + function tokenSGMLComment(stream, state) { + var dashes = 0, ch; + while ((ch = stream.next()) != null) { + if (dashes >= 2 && ch == ">") { + state.tokenize = tokenBase; + break; + } + dashes = (ch == "-") ? dashes + 1 : 0; + } + return ret("comment", "comment"); + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) { + state.tokenize = tokenBase; + break; + } + escaped = !escaped && ch == "\\"; + } + return ret("string", "tag"); + }; + } + + function inBlock(style, terminator) { + return function(stream, state) { + while (!stream.eol()) { + if (stream.match(terminator)) { + state.tokenize = tokenBase; + break; + } + stream.next(); + } + return style; + }; + } + + return { + startState: function(base) { + return {tokenize: tokenBase, + baseIndent: base || 0, + stack: []}; + }, + + token: function(stream, state) { + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + + var context = state.stack[state.stack.length-1]; + if (stream.current() == "[" || type === "doindent" || type == "[") state.stack.push("rule"); + else if (type === "endtag") state.stack[state.stack.length-1] = "endtag"; + else if (stream.current() == "]" || type == "]" || (type == ">" && context == "rule")) state.stack.pop(); + else if (type == "[") state.stack.push("["); + return style; + }, + + indent: function(state, textAfter) { + var n = state.stack.length; + + if( textAfter.match(/\]\s+|\]/) )n=n-1; + else if(textAfter.substr(textAfter.length-1, textAfter.length) === ">"){ + if(textAfter.substr(0,1) === "<") {} + else if( type == "doindent" && textAfter.length > 1 ) {} + else if( type == "doindent")n--; + else if( type == ">" && textAfter.length > 1) {} + else if( type == "tag" && textAfter !== ">") {} + else if( type == "tag" && state.stack[state.stack.length-1] == "rule")n--; + else if( type == "tag")n++; + else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule" && type === ">")n--; + else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule") {} + else if( textAfter.substr(0,1) !== "<" && textAfter.substr(0,1) === ">" )n=n-1; + else if( textAfter === ">") {} + else n=n-1; + //over rule them all + if(type == null || type == "]")n--; + } + + return state.baseIndent + n * indentUnit; + }, + + electricChars: "]>" + }; +}); + +CodeMirror.defineMIME("application/xml-dtd", "dtd"); + +}); diff --git a/global/codemirror/mode/dtd/index.html b/global/codemirror/mode/dtd/index.html new file mode 100644 index 00000000..e6798a74 --- /dev/null +++ b/global/codemirror/mode/dtd/index.html @@ -0,0 +1,89 @@ + + +CodeMirror: DTD mode + + + + + + + + + +
+

DTD mode

+
+ + +

MIME types defined: application/xml-dtd.

+
diff --git a/global/codemirror/mode/dylan/dylan.js b/global/codemirror/mode/dylan/dylan.js new file mode 100644 index 00000000..0acc1a38 --- /dev/null +++ b/global/codemirror/mode/dylan/dylan.js @@ -0,0 +1,352 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +function forEach(arr, f) { + for (var i = 0; i < arr.length; i++) f(arr[i], i) +} +function some(arr, f) { + for (var i = 0; i < arr.length; i++) if (f(arr[i], i)) return true + return false +} + +CodeMirror.defineMode("dylan", function(_config) { + // Words + var words = { + // Words that introduce unnamed definitions like "define interface" + unnamedDefinition: ["interface"], + + // Words that introduce simple named definitions like "define library" + namedDefinition: ["module", "library", "macro", + "C-struct", "C-union", + "C-function", "C-callable-wrapper" + ], + + // Words that introduce type definitions like "define class". + // These are also parameterized like "define method" and are + // appended to otherParameterizedDefinitionWords + typeParameterizedDefinition: ["class", "C-subtype", "C-mapped-subtype"], + + // Words that introduce trickier definitions like "define method". + // These require special definitions to be added to startExpressions + otherParameterizedDefinition: ["method", "function", + "C-variable", "C-address" + ], + + // Words that introduce module constant definitions. + // These must also be simple definitions and are + // appended to otherSimpleDefinitionWords + constantSimpleDefinition: ["constant"], + + // Words that introduce module variable definitions. + // These must also be simple definitions and are + // appended to otherSimpleDefinitionWords + variableSimpleDefinition: ["variable"], + + // Other words that introduce simple definitions + // (without implicit bodies). + otherSimpleDefinition: ["generic", "domain", + "C-pointer-type", + "table" + ], + + // Words that begin statements with implicit bodies. + statement: ["if", "block", "begin", "method", "case", + "for", "select", "when", "unless", "until", + "while", "iterate", "profiling", "dynamic-bind" + ], + + // Patterns that act as separators in compound statements. + // This may include any general pattern that must be indented + // specially. + separator: ["finally", "exception", "cleanup", "else", + "elseif", "afterwards" + ], + + // Keywords that do not require special indentation handling, + // but which should be highlighted + other: ["above", "below", "by", "from", "handler", "in", + "instance", "let", "local", "otherwise", "slot", + "subclass", "then", "to", "keyed-by", "virtual" + ], + + // Condition signaling function calls + signalingCalls: ["signal", "error", "cerror", + "break", "check-type", "abort" + ] + }; + + words["otherDefinition"] = + words["unnamedDefinition"] + .concat(words["namedDefinition"]) + .concat(words["otherParameterizedDefinition"]); + + words["definition"] = + words["typeParameterizedDefinition"] + .concat(words["otherDefinition"]); + + words["parameterizedDefinition"] = + words["typeParameterizedDefinition"] + .concat(words["otherParameterizedDefinition"]); + + words["simpleDefinition"] = + words["constantSimpleDefinition"] + .concat(words["variableSimpleDefinition"]) + .concat(words["otherSimpleDefinition"]); + + words["keyword"] = + words["statement"] + .concat(words["separator"]) + .concat(words["other"]); + + // Patterns + var symbolPattern = "[-_a-zA-Z?!*@<>$%]+"; + var symbol = new RegExp("^" + symbolPattern); + var patterns = { + // Symbols with special syntax + symbolKeyword: symbolPattern + ":", + symbolClass: "<" + symbolPattern + ">", + symbolGlobal: "\\*" + symbolPattern + "\\*", + symbolConstant: "\\$" + symbolPattern + }; + var patternStyles = { + symbolKeyword: "atom", + symbolClass: "tag", + symbolGlobal: "variable-2", + symbolConstant: "variable-3" + }; + + // Compile all patterns to regular expressions + for (var patternName in patterns) + if (patterns.hasOwnProperty(patternName)) + patterns[patternName] = new RegExp("^" + patterns[patternName]); + + // Names beginning "with-" and "without-" are commonly + // used as statement macro + patterns["keyword"] = [/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/]; + + var styles = {}; + styles["keyword"] = "keyword"; + styles["definition"] = "def"; + styles["simpleDefinition"] = "def"; + styles["signalingCalls"] = "builtin"; + + // protected words lookup table + var wordLookup = {}; + var styleLookup = {}; + + forEach([ + "keyword", + "definition", + "simpleDefinition", + "signalingCalls" + ], function(type) { + forEach(words[type], function(word) { + wordLookup[word] = type; + styleLookup[word] = styles[type]; + }); + }); + + + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + + function tokenBase(stream, state) { + // String + var ch = stream.peek(); + if (ch == "'" || ch == '"') { + stream.next(); + return chain(stream, state, tokenString(ch, "string")); + } + // Comment + else if (ch == "/") { + stream.next(); + if (stream.eat("*")) { + return chain(stream, state, tokenComment); + } else if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + stream.backUp(1); + } + // Decimal + else if (/[+\-\d\.]/.test(ch)) { + if (stream.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i) || + stream.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i) || + stream.match(/^[+-]?\d+/)) { + return "number"; + } + } + // Hash + else if (ch == "#") { + stream.next(); + // Symbol with string syntax + ch = stream.peek(); + if (ch == '"') { + stream.next(); + return chain(stream, state, tokenString('"', "string")); + } + // Binary number + else if (ch == "b") { + stream.next(); + stream.eatWhile(/[01]/); + return "number"; + } + // Hex number + else if (ch == "x") { + stream.next(); + stream.eatWhile(/[\da-f]/i); + return "number"; + } + // Octal number + else if (ch == "o") { + stream.next(); + stream.eatWhile(/[0-7]/); + return "number"; + } + // Token concatenation in macros + else if (ch == '#') { + stream.next(); + return "punctuation"; + } + // Sequence literals + else if ((ch == '[') || (ch == '(')) { + stream.next(); + return "bracket"; + // Hash symbol + } else if (stream.match(/f|t|all-keys|include|key|next|rest/i)) { + return "atom"; + } else { + stream.eatWhile(/[-a-zA-Z]/); + return "error"; + } + } else if (ch == "~") { + stream.next(); + ch = stream.peek(); + if (ch == "=") { + stream.next(); + ch = stream.peek(); + if (ch == "=") { + stream.next(); + return "operator"; + } + return "operator"; + } + return "operator"; + } else if (ch == ":") { + stream.next(); + ch = stream.peek(); + if (ch == "=") { + stream.next(); + return "operator"; + } else if (ch == ":") { + stream.next(); + return "punctuation"; + } + } else if ("[](){}".indexOf(ch) != -1) { + stream.next(); + return "bracket"; + } else if (".,".indexOf(ch) != -1) { + stream.next(); + return "punctuation"; + } else if (stream.match("end")) { + return "keyword"; + } + for (var name in patterns) { + if (patterns.hasOwnProperty(name)) { + var pattern = patterns[name]; + if ((pattern instanceof Array && some(pattern, function(p) { + return stream.match(p); + })) || stream.match(pattern)) + return patternStyles[name]; + } + } + if (/[+\-*\/^=<>&|]/.test(ch)) { + stream.next(); + return "operator"; + } + if (stream.match("define")) { + return "def"; + } else { + stream.eatWhile(/[\w\-]/); + // Keyword + if (wordLookup.hasOwnProperty(stream.current())) { + return styleLookup[stream.current()]; + } else if (stream.current().match(symbol)) { + return "variable"; + } else { + stream.next(); + return "variable-2"; + } + } + } + + function tokenComment(stream, state) { + var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; + while ((ch = stream.next())) { + if (ch == "/" && maybeEnd) { + if (nestedCount > 0) { + nestedCount--; + } else { + state.tokenize = tokenBase; + break; + } + } else if (ch == "*" && maybeNested) { + nestedCount++; + } + maybeEnd = (ch == "*"); + maybeNested = (ch == "/"); + } + return "comment"; + } + + function tokenString(quote, style) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) { + end = true; + break; + } + escaped = !escaped && next == "\\"; + } + if (end || !escaped) { + state.tokenize = tokenBase; + } + return style; + }; + } + + // Interface + return { + startState: function() { + return { + tokenize: tokenBase, + currentIndent: 0 + }; + }, + token: function(stream, state) { + if (stream.eatSpace()) + return null; + var style = state.tokenize(stream, state); + return style; + }, + blockCommentStart: "/*", + blockCommentEnd: "*/" + }; +}); + +CodeMirror.defineMIME("text/x-dylan", "dylan"); + +}); diff --git a/global/codemirror/mode/dylan/index.html b/global/codemirror/mode/dylan/index.html new file mode 100644 index 00000000..ddf5ad06 --- /dev/null +++ b/global/codemirror/mode/dylan/index.html @@ -0,0 +1,407 @@ + + +CodeMirror: Dylan mode + + + + + + + + + + + + +
+

Dylan mode

+ + +
+ + + +

MIME types defined: text/x-dylan.

+
diff --git a/global/codemirror/mode/dylan/test.js b/global/codemirror/mode/dylan/test.js new file mode 100644 index 00000000..bf25be27 --- /dev/null +++ b/global/codemirror/mode/dylan/test.js @@ -0,0 +1,88 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "dylan"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT('comments', + '[comment // This is a line comment]', + '[comment /* This is a block comment */]', + '[comment /* This is a multi]', + '[comment line comment]', + '[comment */]', + '[comment /* And this is a /*]', + '[comment /* nested */ comment */]'); + + MT('unary_operators', + '[operator -][variable a]', + '[operator -] [variable a]', + '[operator ~][variable a]', + '[operator ~] [variable a]'); + + MT('binary_operators', + '[variable a] [operator +] [variable b]', + '[variable a] [operator -] [variable b]', + '[variable a] [operator *] [variable b]', + '[variable a] [operator /] [variable b]', + '[variable a] [operator ^] [variable b]', + '[variable a] [operator =] [variable b]', + '[variable a] [operator ==] [variable b]', + '[variable a] [operator ~=] [variable b]', + '[variable a] [operator ~==] [variable b]', + '[variable a] [operator <] [variable b]', + '[variable a] [operator <=] [variable b]', + '[variable a] [operator >] [variable b]', + '[variable a] [operator >=] [variable b]', + '[variable a] [operator &] [variable b]', + '[variable a] [operator |] [variable b]', + '[variable a] [operator :=] [variable b]'); + + MT('integers', + '[number 1]', + '[number 123]', + '[number -123]', + '[number +456]', + '[number #b010]', + '[number #o073]', + '[number #xabcDEF123]'); + + MT('floats', + '[number .3]', + '[number -1.]', + '[number -2.335]', + '[number +3.78d1]', + '[number 3.78s-1]', + '[number -3.32e+5]'); + + MT('characters_and_strings', + "[string 'a']", + "[string '\\\\'']", + '[string ""]', + '[string "a"]', + '[string "abc def"]', + '[string "More escaped characters: \\\\\\\\ \\\\a \\\\b \\\\e \\\\f \\\\n \\\\r \\\\t \\\\0 ..."]'); + + MT('brackets', + '[bracket #[[]]]', + '[bracket #()]', + '[bracket #(][number 1][bracket )]', + '[bracket [[][number 1][punctuation ,] [number 3][bracket ]]]', + '[bracket ()]', + '[bracket {}]', + '[keyword if] [bracket (][variable foo][bracket )]', + '[bracket (][number 1][bracket )]', + '[bracket [[][number 1][bracket ]]]'); + + MT('hash_words', + '[punctuation ##]', + '[atom #f]', '[atom #F]', + '[atom #t]', '[atom #T]', + '[atom #all-keys]', + '[atom #include]', + '[atom #key]', + '[atom #next]', + '[atom #rest]', + '[string #"foo"]', + '[error #invalid]'); +})(); diff --git a/global/codemirror/mode/ebnf/ebnf.js b/global/codemirror/mode/ebnf/ebnf.js new file mode 100644 index 00000000..9618f8e4 --- /dev/null +++ b/global/codemirror/mode/ebnf/ebnf.js @@ -0,0 +1,195 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("ebnf", function (config) { + var commentType = {slash: 0, parenthesis: 1}; + var stateType = {comment: 0, _string: 1, characterClass: 2}; + var bracesMode = null; + + if (config.bracesMode) + bracesMode = CodeMirror.getMode(config, config.bracesMode); + + return { + startState: function () { + return { + stringType: null, + commentType: null, + braced: 0, + lhs: true, + localState: null, + stack: [], + inDefinition: false + }; + }, + token: function (stream, state) { + if (!stream) return; + + //check for state changes + if (state.stack.length === 0) { + //strings + if ((stream.peek() == '"') || (stream.peek() == "'")) { + state.stringType = stream.peek(); + stream.next(); // Skip quote + state.stack.unshift(stateType._string); + } else if (stream.match(/^\/\*/)) { //comments starting with /* + state.stack.unshift(stateType.comment); + state.commentType = commentType.slash; + } else if (stream.match(/^\(\*/)) { //comments starting with (* + state.stack.unshift(stateType.comment); + state.commentType = commentType.parenthesis; + } + } + + //return state + //stack has + switch (state.stack[0]) { + case stateType._string: + while (state.stack[0] === stateType._string && !stream.eol()) { + if (stream.peek() === state.stringType) { + stream.next(); // Skip quote + state.stack.shift(); // Clear flag + } else if (stream.peek() === "\\") { + stream.next(); + stream.next(); + } else { + stream.match(/^.[^\\\"\']*/); + } + } + return state.lhs ? "property string" : "string"; // Token style + + case stateType.comment: + while (state.stack[0] === stateType.comment && !stream.eol()) { + if (state.commentType === commentType.slash && stream.match(/\*\//)) { + state.stack.shift(); // Clear flag + state.commentType = null; + } else if (state.commentType === commentType.parenthesis && stream.match(/\*\)/)) { + state.stack.shift(); // Clear flag + state.commentType = null; + } else { + stream.match(/^.[^\*]*/); + } + } + return "comment"; + + case stateType.characterClass: + while (state.stack[0] === stateType.characterClass && !stream.eol()) { + if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { + state.stack.shift(); + } + } + return "operator"; + } + + var peek = stream.peek(); + + if (bracesMode !== null && (state.braced || peek === "{")) { + if (state.localState === null) + state.localState = CodeMirror.startState(bracesMode); + + var token = bracesMode.token(stream, state.localState), + text = stream.current(); + + if (!token) { + for (var i = 0; i < text.length; i++) { + if (text[i] === "{") { + if (state.braced === 0) { + token = "matchingbracket"; + } + state.braced++; + } else if (text[i] === "}") { + state.braced--; + if (state.braced === 0) { + token = "matchingbracket"; + } + } + } + } + return token; + } + + //no stack + switch (peek) { + case "[": + stream.next(); + state.stack.unshift(stateType.characterClass); + return "bracket"; + case ":": + case "|": + case ";": + stream.next(); + return "operator"; + case "%": + if (stream.match("%%")) { + return "header"; + } else if (stream.match(/[%][A-Za-z]+/)) { + return "keyword"; + } else if (stream.match(/[%][}]/)) { + return "matchingbracket"; + } + break; + case "/": + if (stream.match(/[\/][A-Za-z]+/)) { + return "keyword"; + } + case "\\": + if (stream.match(/[\][a-z]+/)) { + return "string-2"; + } + case ".": + if (stream.match(".")) { + return "atom"; + } + case "*": + case "-": + case "+": + case "^": + if (stream.match(peek)) { + return "atom"; + } + case "$": + if (stream.match("$$")) { + return "builtin"; + } else if (stream.match(/[$][0-9]+/)) { + return "variable-3"; + } + case "<": + if (stream.match(/<<[a-zA-Z_]+>>/)) { + return "builtin"; + } + } + + if (stream.match(/^\/\//)) { + stream.skipToEnd(); + return "comment"; + } else if (stream.match(/return/)) { + return "operator"; + } else if (stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)) { + if (stream.match(/(?=[\(.])/)) { + return "variable"; + } else if (stream.match(/(?=[\s\n]*[:=])/)) { + return "def"; + } + return "variable-2"; + } else if (["[", "]", "(", ")"].indexOf(stream.peek()) != -1) { + stream.next(); + return "bracket"; + } else if (!stream.eatSpace()) { + stream.next(); + } + return null; + } + }; + }); + + CodeMirror.defineMIME("text/x-ebnf", "ebnf"); +}); diff --git a/global/codemirror/mode/ebnf/index.html b/global/codemirror/mode/ebnf/index.html new file mode 100644 index 00000000..13845629 --- /dev/null +++ b/global/codemirror/mode/ebnf/index.html @@ -0,0 +1,102 @@ + + + + CodeMirror: EBNF Mode + + + + + + + + + + + + +
+

EBNF Mode (bracesMode setting = "javascript")

+
+ +

The EBNF Mode

+

Created by Robert Plummer

+
+ + diff --git a/global/codemirror/mode/ecl/ecl.js b/global/codemirror/mode/ecl/ecl.js new file mode 100644 index 00000000..8df7ebe4 --- /dev/null +++ b/global/codemirror/mode/ecl/ecl.js @@ -0,0 +1,206 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("ecl", function(config) { + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + function metaHook(stream, state) { + if (!state.startOfLine) return false; + stream.skipToEnd(); + return "meta"; + } + + var indentUnit = config.indentUnit; + var keyword = words("abs acos allnodes ascii asin asstring atan atan2 ave case choose choosen choosesets clustersize combine correlation cos cosh count covariance cron dataset dedup define denormalize distribute distributed distribution ebcdic enth error evaluate event eventextra eventname exists exp failcode failmessage fetch fromunicode getisvalid global graph group hash hash32 hash64 hashcrc hashmd5 having if index intformat isvalid iterate join keyunicode length library limit ln local log loop map matched matchlength matchposition matchtext matchunicode max merge mergejoin min nolocal nonempty normalize parse pipe power preload process project pull random range rank ranked realformat recordof regexfind regexreplace regroup rejected rollup round roundup row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder variance which workunit xmldecode xmlencode xmltext xmlunicode"); + var variable = words("apply assert build buildindex evaluate fail keydiff keypatch loadxml nothor notify output parallel sequential soapcall wait"); + var variable_2 = words("__compressed__ all and any as atmost before beginc++ best between case const counter csv descend encrypt end endc++ endmacro except exclusive expire export extend false few first flat from full function group header heading hole ifblock import in interface joined keep keyed last left limit load local locale lookup macro many maxcount maxlength min skew module named nocase noroot noscan nosort not of only opt or outer overwrite packed partition penalty physicallength pipe quote record relationship repeat return right scan self separator service shared skew skip sql store terminator thor threshold token transform trim true type unicodeorder unsorted validate virtual whole wild within xml xpath"); + var variable_3 = words("ascii big_endian boolean data decimal ebcdic integer pattern qstring real record rule set of string token udecimal unicode unsigned varstring varunicode"); + var builtin = words("checkpoint deprecated failcode failmessage failure global independent onwarning persist priority recovery stored success wait when"); + var blockKeywords = words("catch class do else finally for if switch try while"); + var atoms = words("true false null"); + var hooks = {"#": metaHook}; + var isOperatorChar = /[+\-*&%=<>!?|\/]/; + + var curPunc; + + function tokenBase(stream, state) { + var ch = stream.next(); + if (hooks[ch]) { + var result = hooks[ch](stream, state); + if (result !== false) return result; + } + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + curPunc = ch; + return null; + } + if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } + if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + } + if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + stream.eatWhile(/[\w\$_]/); + var cur = stream.current().toLowerCase(); + if (keyword.propertyIsEnumerable(cur)) { + if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; + return "keyword"; + } else if (variable.propertyIsEnumerable(cur)) { + if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; + return "variable"; + } else if (variable_2.propertyIsEnumerable(cur)) { + if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; + return "variable-2"; + } else if (variable_3.propertyIsEnumerable(cur)) { + if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; + return "variable-3"; + } else if (builtin.propertyIsEnumerable(cur)) { + if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; + return "builtin"; + } else { //Data types are of from KEYWORD## + var i = cur.length - 1; + while(i >= 0 && (!isNaN(cur[i]) || cur[i] == '_')) + --i; + + if (i > 0) { + var cur2 = cur.substr(0, i + 1); + if (variable_3.propertyIsEnumerable(cur2)) { + if (blockKeywords.propertyIsEnumerable(cur2)) curPunc = "newstatement"; + return "variable-3"; + } + } + } + if (atoms.propertyIsEnumerable(cur)) return "atom"; + return null; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) {end = true; break;} + escaped = !escaped && next == "\\"; + } + if (end || !escaped) + state.tokenize = tokenBase; + return "string"; + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + function pushContext(state, col, type) { + return state.context = new Context(state.indented, col, type, null, state.context); + } + function popContext(state) { + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") + state.indented = state.context.indented; + return state.context = state.context.prev; + } + + // Interface + + return { + startState: function(basecolumn) { + return { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (stream.eatSpace()) return null; + curPunc = null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment" || style == "meta") return style; + if (ctx.align == null) ctx.align = true; + + if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); + else if (curPunc == "{") pushContext(state, stream.column(), "}"); + else if (curPunc == "[") pushContext(state, stream.column(), "]"); + else if (curPunc == "(") pushContext(state, stream.column(), ")"); + else if (curPunc == "}") { + while (ctx.type == "statement") ctx = popContext(state); + if (ctx.type == "}") ctx = popContext(state); + while (ctx.type == "statement") ctx = popContext(state); + } + else if (curPunc == ctx.type) popContext(state); + else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) + pushContext(state, stream.column(), "statement"); + state.startOfLine = false; + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase && state.tokenize != null) return 0; + var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); + if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; + var closing = firstChar == ctx.type; + if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit); + else if (ctx.align) return ctx.column + (closing ? 0 : 1); + else return ctx.indented + (closing ? 0 : indentUnit); + }, + + electricChars: "{}" + }; +}); + +CodeMirror.defineMIME("text/x-ecl", "ecl"); + +}); diff --git a/global/codemirror/mode/ecl/index.html b/global/codemirror/mode/ecl/index.html new file mode 100644 index 00000000..2306860d --- /dev/null +++ b/global/codemirror/mode/ecl/index.html @@ -0,0 +1,52 @@ + + +CodeMirror: ECL mode + + + + + + + + + +
+

ECL mode

+
+ + +

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

+

MIME types defined: text/x-ecl.

+ +
diff --git a/global/codemirror/mode/eiffel/eiffel.js b/global/codemirror/mode/eiffel/eiffel.js new file mode 100644 index 00000000..b8b70e36 --- /dev/null +++ b/global/codemirror/mode/eiffel/eiffel.js @@ -0,0 +1,160 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("eiffel", function() { + function wordObj(words) { + var o = {}; + for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; + return o; + } + var keywords = wordObj([ + 'note', + 'across', + 'when', + 'variant', + 'until', + 'unique', + 'undefine', + 'then', + 'strip', + 'select', + 'retry', + 'rescue', + 'require', + 'rename', + 'reference', + 'redefine', + 'prefix', + 'once', + 'old', + 'obsolete', + 'loop', + 'local', + 'like', + 'is', + 'inspect', + 'infix', + 'include', + 'if', + 'frozen', + 'from', + 'external', + 'export', + 'ensure', + 'end', + 'elseif', + 'else', + 'do', + 'creation', + 'create', + 'check', + 'alias', + 'agent', + 'separate', + 'invariant', + 'inherit', + 'indexing', + 'feature', + 'expanded', + 'deferred', + 'class', + 'Void', + 'True', + 'Result', + 'Precursor', + 'False', + 'Current', + 'create', + 'attached', + 'detachable', + 'as', + 'and', + 'implies', + 'not', + 'or' + ]); + var operators = wordObj([":=", "and then","and", "or","<<",">>"]); + + function chain(newtok, stream, state) { + state.tokenize.push(newtok); + return newtok(stream, state); + } + + function tokenBase(stream, state) { + if (stream.eatSpace()) return null; + var ch = stream.next(); + if (ch == '"'||ch == "'") { + return chain(readQuoted(ch, "string"), stream, state); + } else if (ch == "-"&&stream.eat("-")) { + stream.skipToEnd(); + return "comment"; + } else if (ch == ":"&&stream.eat("=")) { + return "operator"; + } else if (/[0-9]/.test(ch)) { + stream.eatWhile(/[xXbBCc0-9\.]/); + stream.eat(/[\?\!]/); + return "ident"; + } else if (/[a-zA-Z_0-9]/.test(ch)) { + stream.eatWhile(/[a-zA-Z_0-9]/); + stream.eat(/[\?\!]/); + return "ident"; + } else if (/[=+\-\/*^%<>~]/.test(ch)) { + stream.eatWhile(/[=+\-\/*^%<>~]/); + return "operator"; + } else { + return null; + } + } + + function readQuoted(quote, style, unescaped) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && (unescaped || !escaped)) { + state.tokenize.pop(); + break; + } + escaped = !escaped && ch == "%"; + } + return style; + }; + } + + return { + startState: function() { + return {tokenize: [tokenBase]}; + }, + + token: function(stream, state) { + var style = state.tokenize[state.tokenize.length-1](stream, state); + if (style == "ident") { + var word = stream.current(); + style = keywords.propertyIsEnumerable(stream.current()) ? "keyword" + : operators.propertyIsEnumerable(stream.current()) ? "operator" + : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag" + : /^0[bB][0-1]+$/g.test(word) ? "number" + : /^0[cC][0-7]+$/g.test(word) ? "number" + : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number" + : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number" + : /^[0-9]+$/g.test(word) ? "number" + : "variable"; + } + return style; + }, + lineComment: "--" + }; +}); + +CodeMirror.defineMIME("text/x-eiffel", "eiffel"); + +}); diff --git a/global/codemirror/mode/eiffel/index.html b/global/codemirror/mode/eiffel/index.html new file mode 100644 index 00000000..108a71be --- /dev/null +++ b/global/codemirror/mode/eiffel/index.html @@ -0,0 +1,429 @@ + + +CodeMirror: Eiffel mode + + + + + + + + + + +
+

Eiffel mode

+
+ + +

MIME types defined: text/x-eiffel.

+ +

Created by YNH.

+
diff --git a/global/codemirror/mode/elm/elm.js b/global/codemirror/mode/elm/elm.js new file mode 100644 index 00000000..9fcfc883 --- /dev/null +++ b/global/codemirror/mode/elm/elm.js @@ -0,0 +1,205 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("elm", function() { + + function switchState(source, setState, f) { + setState(f); + return f(source, setState); + } + + // These should all be Unicode extended, as per the Haskell 2010 report + var smallRE = /[a-z_]/; + var largeRE = /[A-Z]/; + var digitRE = /[0-9]/; + var hexitRE = /[0-9A-Fa-f]/; + var octitRE = /[0-7]/; + var idRE = /[a-z_A-Z0-9\']/; + var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]/; + var specialRE = /[(),;[\]`{}]/; + var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer + + function normal() { + return function (source, setState) { + if (source.eatWhile(whiteCharRE)) { + return null; + } + + var ch = source.next(); + if (specialRE.test(ch)) { + if (ch == '{' && source.eat('-')) { + var t = "comment"; + if (source.eat('#')) t = "meta"; + return switchState(source, setState, ncomment(t, 1)); + } + return null; + } + + if (ch == '\'') { + if (source.eat('\\')) + source.next(); // should handle other escapes here + else + source.next(); + + if (source.eat('\'')) + return "string"; + return "error"; + } + + if (ch == '"') { + return switchState(source, setState, stringLiteral); + } + + if (largeRE.test(ch)) { + source.eatWhile(idRE); + if (source.eat('.')) + return "qualifier"; + return "variable-2"; + } + + if (smallRE.test(ch)) { + var isDef = source.pos === 1; + source.eatWhile(idRE); + return isDef ? "type" : "variable"; + } + + if (digitRE.test(ch)) { + if (ch == '0') { + if (source.eat(/[xX]/)) { + source.eatWhile(hexitRE); // should require at least 1 + return "integer"; + } + if (source.eat(/[oO]/)) { + source.eatWhile(octitRE); // should require at least 1 + return "number"; + } + } + source.eatWhile(digitRE); + var t = "number"; + if (source.eat('.')) { + t = "number"; + source.eatWhile(digitRE); // should require at least 1 + } + if (source.eat(/[eE]/)) { + t = "number"; + source.eat(/[-+]/); + source.eatWhile(digitRE); // should require at least 1 + } + return t; + } + + if (symbolRE.test(ch)) { + if (ch == '-' && source.eat(/-/)) { + source.eatWhile(/-/); + if (!source.eat(symbolRE)) { + source.skipToEnd(); + return "comment"; + } + } + source.eatWhile(symbolRE); + return "builtin"; + } + + return "error"; + } + } + + function ncomment(type, nest) { + if (nest == 0) { + return normal(); + } + return function(source, setState) { + var currNest = nest; + while (!source.eol()) { + var ch = source.next(); + if (ch == '{' && source.eat('-')) { + ++currNest; + } else if (ch == '-' && source.eat('}')) { + --currNest; + if (currNest == 0) { + setState(normal()); + return type; + } + } + } + setState(ncomment(type, currNest)); + return type; + } + } + + function stringLiteral(source, setState) { + while (!source.eol()) { + var ch = source.next(); + if (ch == '"') { + setState(normal()); + return "string"; + } + if (ch == '\\') { + if (source.eol() || source.eat(whiteCharRE)) { + setState(stringGap); + return "string"; + } + if (!source.eat('&')) source.next(); // should handle other escapes here + } + } + setState(normal()); + return "error"; + } + + function stringGap(source, setState) { + if (source.eat('\\')) { + return switchState(source, setState, stringLiteral); + } + source.next(); + setState(normal()); + return "error"; + } + + + var wellKnownWords = (function() { + var wkw = {}; + + var keywords = [ + "case", "of", "as", + "if", "then", "else", + "let", "in", + "infix", "infixl", "infixr", + "type", "alias", + "input", "output", "foreign", "loopback", + "module", "where", "import", "exposing", + "_", "..", "|", ":", "=", "\\", "\"", "->", "<-" + ]; + + for (var i = keywords.length; i--;) + wkw[keywords[i]] = "keyword"; + + return wkw; + })(); + + + + return { + startState: function () { return { f: normal() }; }, + copyState: function (s) { return { f: s.f }; }, + + token: function(stream, state) { + var t = state.f(stream, function(s) { state.f = s; }); + var w = stream.current(); + return (wellKnownWords.hasOwnProperty(w)) ? wellKnownWords[w] : t; + } + }; + + }); + + CodeMirror.defineMIME("text/x-elm", "elm"); +}); diff --git a/global/codemirror/mode/elm/index.html b/global/codemirror/mode/elm/index.html new file mode 100644 index 00000000..d5cb16ab --- /dev/null +++ b/global/codemirror/mode/elm/index.html @@ -0,0 +1,61 @@ + + +CodeMirror: Elm mode + + + + + + + + + +
+

Elm mode

+ +
+ + + +

MIME types defined: text/x-elm.

+
diff --git a/global/codemirror/mode/erlang/erlang.js b/global/codemirror/mode/erlang/erlang.js new file mode 100644 index 00000000..9528e19f --- /dev/null +++ b/global/codemirror/mode/erlang/erlang.js @@ -0,0 +1,619 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/*jshint unused:true, eqnull:true, curly:true, bitwise:true */ +/*jshint undef:true, latedef:true, trailing:true */ +/*global CodeMirror:true */ + +// erlang mode. +// tokenizer -> token types -> CodeMirror styles +// tokenizer maintains a parse stack +// indenter uses the parse stack + +// TODO indenter: +// bit syntax +// old guard/bif/conversion clashes (e.g. "float/1") +// type/spec/opaque + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMIME("text/x-erlang", "erlang"); + +CodeMirror.defineMode("erlang", function(cmCfg) { + "use strict"; + +///////////////////////////////////////////////////////////////////////////// +// constants + + var typeWords = [ + "-type", "-spec", "-export_type", "-opaque"]; + + var keywordWords = [ + "after","begin","catch","case","cond","end","fun","if", + "let","of","query","receive","try","when"]; + + var separatorRE = /[\->,;]/; + var separatorWords = [ + "->",";",","]; + + var operatorAtomWords = [ + "and","andalso","band","bnot","bor","bsl","bsr","bxor", + "div","not","or","orelse","rem","xor"]; + + var operatorSymbolRE = /[\+\-\*\/<>=\|:!]/; + var operatorSymbolWords = [ + "=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"]; + + var openParenRE = /[<\(\[\{]/; + var openParenWords = [ + "<<","(","[","{"]; + + var closeParenRE = /[>\)\]\}]/; + var closeParenWords = [ + "}","]",")",">>"]; + + var guardWords = [ + "is_atom","is_binary","is_bitstring","is_boolean","is_float", + "is_function","is_integer","is_list","is_number","is_pid", + "is_port","is_record","is_reference","is_tuple", + "atom","binary","bitstring","boolean","function","integer","list", + "number","pid","port","record","reference","tuple"]; + + var bifWords = [ + "abs","adler32","adler32_combine","alive","apply","atom_to_binary", + "atom_to_list","binary_to_atom","binary_to_existing_atom", + "binary_to_list","binary_to_term","bit_size","bitstring_to_list", + "byte_size","check_process_code","contact_binary","crc32", + "crc32_combine","date","decode_packet","delete_module", + "disconnect_node","element","erase","exit","float","float_to_list", + "garbage_collect","get","get_keys","group_leader","halt","hd", + "integer_to_list","internal_bif","iolist_size","iolist_to_binary", + "is_alive","is_atom","is_binary","is_bitstring","is_boolean", + "is_float","is_function","is_integer","is_list","is_number","is_pid", + "is_port","is_process_alive","is_record","is_reference","is_tuple", + "length","link","list_to_atom","list_to_binary","list_to_bitstring", + "list_to_existing_atom","list_to_float","list_to_integer", + "list_to_pid","list_to_tuple","load_module","make_ref","module_loaded", + "monitor_node","node","node_link","node_unlink","nodes","notalive", + "now","open_port","pid_to_list","port_close","port_command", + "port_connect","port_control","pre_loaded","process_flag", + "process_info","processes","purge_module","put","register", + "registered","round","self","setelement","size","spawn","spawn_link", + "spawn_monitor","spawn_opt","split_binary","statistics", + "term_to_binary","time","throw","tl","trunc","tuple_size", + "tuple_to_list","unlink","unregister","whereis"]; + +// upper case: [A-Z] [Ø-Þ] [À-Ö] +// lower case: [a-z] [ß-ö] [ø-ÿ] + var anumRE = /[\w@Ø-ÞÀ-Öß-öø-ÿ]/; + var escapesRE = + /[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/; + +///////////////////////////////////////////////////////////////////////////// +// tokenizer + + function tokenizer(stream,state) { + // in multi-line string + if (state.in_string) { + state.in_string = (!doubleQuote(stream)); + return rval(state,stream,"string"); + } + + // in multi-line atom + if (state.in_atom) { + state.in_atom = (!singleQuote(stream)); + return rval(state,stream,"atom"); + } + + // whitespace + if (stream.eatSpace()) { + return rval(state,stream,"whitespace"); + } + + // attributes and type specs + if (!peekToken(state) && + stream.match(/-\s*[a-zß-öø-ÿ][\wØ-ÞÀ-Öß-öø-ÿ]*/)) { + if (is_member(stream.current(),typeWords)) { + return rval(state,stream,"type"); + }else{ + return rval(state,stream,"attribute"); + } + } + + var ch = stream.next(); + + // comment + if (ch == '%') { + stream.skipToEnd(); + return rval(state,stream,"comment"); + } + + // colon + if (ch == ":") { + return rval(state,stream,"colon"); + } + + // macro + if (ch == '?') { + stream.eatSpace(); + stream.eatWhile(anumRE); + return rval(state,stream,"macro"); + } + + // record + if (ch == "#") { + stream.eatSpace(); + stream.eatWhile(anumRE); + return rval(state,stream,"record"); + } + + // dollar escape + if (ch == "$") { + if (stream.next() == "\\" && !stream.match(escapesRE)) { + return rval(state,stream,"error"); + } + return rval(state,stream,"number"); + } + + // dot + if (ch == ".") { + return rval(state,stream,"dot"); + } + + // quoted atom + if (ch == '\'') { + if (!(state.in_atom = (!singleQuote(stream)))) { + if (stream.match(/\s*\/\s*[0-9]/,false)) { + stream.match(/\s*\/\s*[0-9]/,true); + return rval(state,stream,"fun"); // 'f'/0 style fun + } + if (stream.match(/\s*\(/,false) || stream.match(/\s*:/,false)) { + return rval(state,stream,"function"); + } + } + return rval(state,stream,"atom"); + } + + // string + if (ch == '"') { + state.in_string = (!doubleQuote(stream)); + return rval(state,stream,"string"); + } + + // variable + if (/[A-Z_Ø-ÞÀ-Ö]/.test(ch)) { + stream.eatWhile(anumRE); + return rval(state,stream,"variable"); + } + + // atom/keyword/BIF/function + if (/[a-z_ß-öø-ÿ]/.test(ch)) { + stream.eatWhile(anumRE); + + if (stream.match(/\s*\/\s*[0-9]/,false)) { + stream.match(/\s*\/\s*[0-9]/,true); + return rval(state,stream,"fun"); // f/0 style fun + } + + var w = stream.current(); + + if (is_member(w,keywordWords)) { + return rval(state,stream,"keyword"); + }else if (is_member(w,operatorAtomWords)) { + return rval(state,stream,"operator"); + }else if (stream.match(/\s*\(/,false)) { + // 'put' and 'erlang:put' are bifs, 'foo:put' is not + if (is_member(w,bifWords) && + ((peekToken(state).token != ":") || + (peekToken(state,2).token == "erlang"))) { + return rval(state,stream,"builtin"); + }else if (is_member(w,guardWords)) { + return rval(state,stream,"guard"); + }else{ + return rval(state,stream,"function"); + } + }else if (lookahead(stream) == ":") { + if (w == "erlang") { + return rval(state,stream,"builtin"); + } else { + return rval(state,stream,"function"); + } + }else if (is_member(w,["true","false"])) { + return rval(state,stream,"boolean"); + }else{ + return rval(state,stream,"atom"); + } + } + + // number + var digitRE = /[0-9]/; + var radixRE = /[0-9a-zA-Z]/; // 36#zZ style int + if (digitRE.test(ch)) { + stream.eatWhile(digitRE); + if (stream.eat('#')) { // 36#aZ style integer + if (!stream.eatWhile(radixRE)) { + stream.backUp(1); //"36#" - syntax error + } + } else if (stream.eat('.')) { // float + if (!stream.eatWhile(digitRE)) { + stream.backUp(1); // "3." - probably end of function + } else { + if (stream.eat(/[eE]/)) { // float with exponent + if (stream.eat(/[-+]/)) { + if (!stream.eatWhile(digitRE)) { + stream.backUp(2); // "2e-" - syntax error + } + } else { + if (!stream.eatWhile(digitRE)) { + stream.backUp(1); // "2e" - syntax error + } + } + } + } + } + return rval(state,stream,"number"); // normal integer + } + + // open parens + if (nongreedy(stream,openParenRE,openParenWords)) { + return rval(state,stream,"open_paren"); + } + + // close parens + if (nongreedy(stream,closeParenRE,closeParenWords)) { + return rval(state,stream,"close_paren"); + } + + // separators + if (greedy(stream,separatorRE,separatorWords)) { + return rval(state,stream,"separator"); + } + + // operators + if (greedy(stream,operatorSymbolRE,operatorSymbolWords)) { + return rval(state,stream,"operator"); + } + + return rval(state,stream,null); + } + +///////////////////////////////////////////////////////////////////////////// +// utilities + function nongreedy(stream,re,words) { + if (stream.current().length == 1 && re.test(stream.current())) { + stream.backUp(1); + while (re.test(stream.peek())) { + stream.next(); + if (is_member(stream.current(),words)) { + return true; + } + } + stream.backUp(stream.current().length-1); + } + return false; + } + + function greedy(stream,re,words) { + if (stream.current().length == 1 && re.test(stream.current())) { + while (re.test(stream.peek())) { + stream.next(); + } + while (0 < stream.current().length) { + if (is_member(stream.current(),words)) { + return true; + }else{ + stream.backUp(1); + } + } + stream.next(); + } + return false; + } + + function doubleQuote(stream) { + return quote(stream, '"', '\\'); + } + + function singleQuote(stream) { + return quote(stream,'\'','\\'); + } + + function quote(stream,quoteChar,escapeChar) { + while (!stream.eol()) { + var ch = stream.next(); + if (ch == quoteChar) { + return true; + }else if (ch == escapeChar) { + stream.next(); + } + } + return false; + } + + function lookahead(stream) { + var m = stream.match(/([\n\s]+|%[^\n]*\n)*(.)/,false); + return m ? m.pop() : ""; + } + + function is_member(element,list) { + return (-1 < list.indexOf(element)); + } + + function rval(state,stream,type) { + + // parse stack + pushToken(state,realToken(type,stream)); + + // map erlang token type to CodeMirror style class + // erlang -> CodeMirror tag + switch (type) { + case "atom": return "atom"; + case "attribute": return "attribute"; + case "boolean": return "atom"; + case "builtin": return "builtin"; + case "close_paren": return null; + case "colon": return null; + case "comment": return "comment"; + case "dot": return null; + case "error": return "error"; + case "fun": return "meta"; + case "function": return "tag"; + case "guard": return "property"; + case "keyword": return "keyword"; + case "macro": return "variable-2"; + case "number": return "number"; + case "open_paren": return null; + case "operator": return "operator"; + case "record": return "bracket"; + case "separator": return null; + case "string": return "string"; + case "type": return "def"; + case "variable": return "variable"; + default: return null; + } + } + + function aToken(tok,col,ind,typ) { + return {token: tok, + column: col, + indent: ind, + type: typ}; + } + + function realToken(type,stream) { + return aToken(stream.current(), + stream.column(), + stream.indentation(), + type); + } + + function fakeToken(type) { + return aToken(type,0,0,type); + } + + function peekToken(state,depth) { + var len = state.tokenStack.length; + var dep = (depth ? depth : 1); + + if (len < dep) { + return false; + }else{ + return state.tokenStack[len-dep]; + } + } + + function pushToken(state,token) { + + if (!(token.type == "comment" || token.type == "whitespace")) { + state.tokenStack = maybe_drop_pre(state.tokenStack,token); + state.tokenStack = maybe_drop_post(state.tokenStack); + } + } + + function maybe_drop_pre(s,token) { + var last = s.length-1; + + if (0 < last && s[last].type === "record" && token.type === "dot") { + s.pop(); + }else if (0 < last && s[last].type === "group") { + s.pop(); + s.push(token); + }else{ + s.push(token); + } + return s; + } + + function maybe_drop_post(s) { + if (!s.length) return s + var last = s.length-1; + + if (s[last].type === "dot") { + return []; + } + if (last > 1 && s[last].type === "fun" && s[last-1].token === "fun") { + return s.slice(0,last-1); + } + switch (s[last].token) { + case "}": return d(s,{g:["{"]}); + case "]": return d(s,{i:["["]}); + case ")": return d(s,{i:["("]}); + case ">>": return d(s,{i:["<<"]}); + case "end": return d(s,{i:["begin","case","fun","if","receive","try"]}); + case ",": return d(s,{e:["begin","try","when","->", + ",","(","[","{","<<"]}); + case "->": return d(s,{r:["when"], + m:["try","if","case","receive"]}); + case ";": return d(s,{E:["case","fun","if","receive","try","when"]}); + case "catch":return d(s,{e:["try"]}); + case "of": return d(s,{e:["case"]}); + case "after":return d(s,{e:["receive","try"]}); + default: return s; + } + } + + function d(stack,tt) { + // stack is a stack of Token objects. + // tt is an object; {type:tokens} + // type is a char, tokens is a list of token strings. + // The function returns (possibly truncated) stack. + // It will descend the stack, looking for a Token such that Token.token + // is a member of tokens. If it does not find that, it will normally (but + // see "E" below) return stack. If it does find a match, it will remove + // all the Tokens between the top and the matched Token. + // If type is "m", that is all it does. + // If type is "i", it will also remove the matched Token and the top Token. + // If type is "g", like "i", but add a fake "group" token at the top. + // If type is "r", it will remove the matched Token, but not the top Token. + // If type is "e", it will keep the matched Token but not the top Token. + // If type is "E", it behaves as for type "e", except if there is no match, + // in which case it will return an empty stack. + + for (var type in tt) { + var len = stack.length-1; + var tokens = tt[type]; + for (var i = len-1; -1 < i ; i--) { + if (is_member(stack[i].token,tokens)) { + var ss = stack.slice(0,i); + switch (type) { + case "m": return ss.concat(stack[i]).concat(stack[len]); + case "r": return ss.concat(stack[len]); + case "i": return ss; + case "g": return ss.concat(fakeToken("group")); + case "E": return ss.concat(stack[i]); + case "e": return ss.concat(stack[i]); + } + } + } + } + return (type == "E" ? [] : stack); + } + +///////////////////////////////////////////////////////////////////////////// +// indenter + + function indenter(state,textAfter) { + var t; + var unit = cmCfg.indentUnit; + var wordAfter = wordafter(textAfter); + var currT = peekToken(state,1); + var prevT = peekToken(state,2); + + if (state.in_string || state.in_atom) { + return CodeMirror.Pass; + }else if (!prevT) { + return 0; + }else if (currT.token == "when") { + return currT.column+unit; + }else if (wordAfter === "when" && prevT.type === "function") { + return prevT.indent+unit; + }else if (wordAfter === "(" && currT.token === "fun") { + return currT.column+3; + }else if (wordAfter === "catch" && (t = getToken(state,["try"]))) { + return t.column; + }else if (is_member(wordAfter,["end","after","of"])) { + t = getToken(state,["begin","case","fun","if","receive","try"]); + return t ? t.column : CodeMirror.Pass; + }else if (is_member(wordAfter,closeParenWords)) { + t = getToken(state,openParenWords); + return t ? t.column : CodeMirror.Pass; + }else if (is_member(currT.token,[",","|","||"]) || + is_member(wordAfter,[",","|","||"])) { + t = postcommaToken(state); + return t ? t.column+t.token.length : unit; + }else if (currT.token == "->") { + if (is_member(prevT.token, ["receive","case","if","try"])) { + return prevT.column+unit+unit; + }else{ + return prevT.column+unit; + } + }else if (is_member(currT.token,openParenWords)) { + return currT.column+currT.token.length; + }else{ + t = defaultToken(state); + return truthy(t) ? t.column+unit : 0; + } + } + + function wordafter(str) { + var m = str.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/); + + return truthy(m) && (m.index === 0) ? m[0] : ""; + } + + function postcommaToken(state) { + var objs = state.tokenStack.slice(0,-1); + var i = getTokenIndex(objs,"type",["open_paren"]); + + return truthy(objs[i]) ? objs[i] : false; + } + + function defaultToken(state) { + var objs = state.tokenStack; + var stop = getTokenIndex(objs,"type",["open_paren","separator","keyword"]); + var oper = getTokenIndex(objs,"type",["operator"]); + + if (truthy(stop) && truthy(oper) && stop < oper) { + return objs[stop+1]; + } else if (truthy(stop)) { + return objs[stop]; + } else { + return false; + } + } + + function getToken(state,tokens) { + var objs = state.tokenStack; + var i = getTokenIndex(objs,"token",tokens); + + return truthy(objs[i]) ? objs[i] : false; + } + + function getTokenIndex(objs,propname,propvals) { + + for (var i = objs.length-1; -1 < i ; i--) { + if (is_member(objs[i][propname],propvals)) { + return i; + } + } + return false; + } + + function truthy(x) { + return (x !== false) && (x != null); + } + +///////////////////////////////////////////////////////////////////////////// +// this object defines the mode + + return { + startState: + function() { + return {tokenStack: [], + in_string: false, + in_atom: false}; + }, + + token: + function(stream, state) { + return tokenizer(stream, state); + }, + + indent: + function(state, textAfter) { + return indenter(state,textAfter); + }, + + lineComment: "%" + }; +}); + +}); diff --git a/global/codemirror/mode/erlang/index.html b/global/codemirror/mode/erlang/index.html new file mode 100644 index 00000000..6d06a890 --- /dev/null +++ b/global/codemirror/mode/erlang/index.html @@ -0,0 +1,76 @@ + + +CodeMirror: Erlang mode + + + + + + + + + + + +
+

Erlang mode

+
+ + + +

MIME types defined: text/x-erlang.

+
diff --git a/global/codemirror/mode/factor/factor.js b/global/codemirror/mode/factor/factor.js new file mode 100644 index 00000000..e238c5ea --- /dev/null +++ b/global/codemirror/mode/factor/factor.js @@ -0,0 +1,85 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Factor syntax highlight - simple mode +// +// by Dimage Sapelkin (https://github.com/kerabromsmu) + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../../addon/mode/simple"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineSimpleMode("factor", { + // The start state contains the rules that are intially used + start: [ + // comments + {regex: /#?!.*/, token: "comment"}, + // strings """, multiline --> state + {regex: /"""/, token: "string", next: "string3"}, + {regex: /(STRING:)(\s)/, token: ["keyword", null], next: "string2"}, + {regex: /\S*?"/, token: "string", next: "string"}, + // numbers: dec, hex, unicode, bin, fractional, complex + {regex: /(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\-?\d+.?\d*)(?=\s)/, token: "number"}, + //{regex: /[+-]?/} //fractional + // definition: defining word, defined word, etc + {regex: /((?:GENERIC)|\:?\:)(\s+)(\S+)(\s+)(\()/, token: ["keyword", null, "def", null, "bracket"], next: "stack"}, + // method definition: defining word, type, defined word, etc + {regex: /(M\:)(\s+)(\S+)(\s+)(\S+)/, token: ["keyword", null, "def", null, "tag"]}, + // vocabulary using --> state + {regex: /USING\:/, token: "keyword", next: "vocabulary"}, + // vocabulary definition/use + {regex: /(USE\:|IN\:)(\s+)(\S+)(?=\s|$)/, token: ["keyword", null, "tag"]}, + // definition: a defining word, defined word + {regex: /(\S+\:)(\s+)(\S+)(?=\s|$)/, token: ["keyword", null, "def"]}, + // "keywords", incl. ; t f . [ ] { } defining words + {regex: /(?:;|\\|t|f|if|loop|while|until|do|PRIVATE>| and the like + {regex: /\S+[\)>\.\*\?]+(?=\s|$)/, token: "builtin"}, + {regex: /[\)><]+\S+(?=\s|$)/, token: "builtin"}, + // operators + {regex: /(?:[\+\-\=\/\*<>])(?=\s|$)/, token: "keyword"}, + // any id (?) + {regex: /\S+/, token: "variable"}, + {regex: /\s+|./, token: null} + ], + vocabulary: [ + {regex: /;/, token: "keyword", next: "start"}, + {regex: /\S+/, token: "tag"}, + {regex: /\s+|./, token: null} + ], + string: [ + {regex: /(?:[^\\]|\\.)*?"/, token: "string", next: "start"}, + {regex: /.*/, token: "string"} + ], + string2: [ + {regex: /^;/, token: "keyword", next: "start"}, + {regex: /.*/, token: "string"} + ], + string3: [ + {regex: /(?:[^\\]|\\.)*?"""/, token: "string", next: "start"}, + {regex: /.*/, token: "string"} + ], + stack: [ + {regex: /\)/, token: "bracket", next: "start"}, + {regex: /--/, token: "bracket"}, + {regex: /\S+/, token: "meta"}, + {regex: /\s+|./, token: null} + ], + // The meta property contains global information about the mode. It + // can contain properties like lineComment, which are supported by + // all modes, and also directives like dontIndentStates, which are + // specific to simple modes. + meta: { + dontIndentStates: ["start", "vocabulary", "string", "string3", "stack"], + lineComment: [ "!", "#!" ] + } + }); + + CodeMirror.defineMIME("text/x-factor", "factor"); +}); diff --git a/global/codemirror/mode/factor/index.html b/global/codemirror/mode/factor/index.html new file mode 100644 index 00000000..9f154891 --- /dev/null +++ b/global/codemirror/mode/factor/index.html @@ -0,0 +1,77 @@ + + +CodeMirror: Factor mode + + + + + + + + + + + +
+ +

Factor mode

+ +
+
+ + +

+

Simple mode that handles Factor Syntax (Factor on WikiPedia).

+ +

MIME types defined: text/x-factor.

+ +
diff --git a/global/codemirror/mode/fcl/fcl.js b/global/codemirror/mode/fcl/fcl.js new file mode 100644 index 00000000..51811697 --- /dev/null +++ b/global/codemirror/mode/fcl/fcl.js @@ -0,0 +1,173 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("fcl", function(config) { + var indentUnit = config.indentUnit; + + var keywords = { + "term": true, + "method": true, "accu": true, + "rule": true, "then": true, "is": true, "and": true, "or": true, + "if": true, "default": true + }; + + var start_blocks = { + "var_input": true, + "var_output": true, + "fuzzify": true, + "defuzzify": true, + "function_block": true, + "ruleblock": true + }; + + var end_blocks = { + "end_ruleblock": true, + "end_defuzzify": true, + "end_function_block": true, + "end_fuzzify": true, + "end_var": true + }; + + var atoms = { + "true": true, "false": true, "nan": true, + "real": true, "min": true, "max": true, "cog": true, "cogs": true + }; + + var isOperatorChar = /[+\-*&^%:=<>!|\/]/; + + function tokenBase(stream, state) { + var ch = stream.next(); + + if (/[\d\.]/.test(ch)) { + if (ch == ".") { + stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); + } else if (ch == "0") { + stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); + } else { + stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); + } + return "number"; + } + + if (ch == "/" || ch == "(") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + } + if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + stream.eatWhile(/[\w\$_\xa1-\uffff]/); + + var cur = stream.current().toLowerCase(); + if (keywords.propertyIsEnumerable(cur) || + start_blocks.propertyIsEnumerable(cur) || + end_blocks.propertyIsEnumerable(cur)) { + return "keyword"; + } + if (atoms.propertyIsEnumerable(cur)) return "atom"; + return "variable"; + } + + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if ((ch == "/" || ch == ")") && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + + function pushContext(state, col, type) { + return state.context = new Context(state.indented, col, type, null, state.context); + } + + function popContext(state) { + if (!state.context.prev) return; + var t = state.context.type; + if (t == "end_block") + state.indented = state.context.indented; + return state.context = state.context.prev; + } + + // Interface + + return { + startState: function(basecolumn) { + return { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (stream.eatSpace()) return null; + + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment") return style; + if (ctx.align == null) ctx.align = true; + + var cur = stream.current().toLowerCase(); + + if (start_blocks.propertyIsEnumerable(cur)) pushContext(state, stream.column(), "end_block"); + else if (end_blocks.propertyIsEnumerable(cur)) popContext(state); + + state.startOfLine = false; + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase && state.tokenize != null) return 0; + var ctx = state.context; + + var closing = end_blocks.propertyIsEnumerable(textAfter); + if (ctx.align) return ctx.column + (closing ? 0 : 1); + else return ctx.indented + (closing ? 0 : indentUnit); + }, + + electricChars: "ryk", + fold: "brace", + blockCommentStart: "(*", + blockCommentEnd: "*)", + lineComment: "//" + }; +}); + +CodeMirror.defineMIME("text/x-fcl", "fcl"); +}); diff --git a/global/codemirror/mode/fcl/index.html b/global/codemirror/mode/fcl/index.html new file mode 100644 index 00000000..3c18d0b3 --- /dev/null +++ b/global/codemirror/mode/fcl/index.html @@ -0,0 +1,108 @@ + + +CodeMirror: FCL mode + + + + + + + + + + + +
+

FCL mode

+
+ + + +

MIME type: text/x-fcl

+
diff --git a/global/codemirror/mode/forth/forth.js b/global/codemirror/mode/forth/forth.js new file mode 100644 index 00000000..1f519d88 --- /dev/null +++ b/global/codemirror/mode/forth/forth.js @@ -0,0 +1,180 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Author: Aliaksei Chapyzhenka + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function toWordList(words) { + var ret = []; + words.split(' ').forEach(function(e){ + ret.push({name: e}); + }); + return ret; + } + + var coreWordList = toWordList( +'INVERT AND OR XOR\ + 2* 2/ LSHIFT RSHIFT\ + 0= = 0< < > U< MIN MAX\ + 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP\ + >R R> R@\ + + - 1+ 1- ABS NEGATE\ + S>D * M* UM*\ + FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD\ + HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2!\ + ALIGN ALIGNED +! ALLOT\ + CHAR [CHAR] [ ] BL\ + FIND EXECUTE IMMEDIATE COUNT LITERAL STATE\ + ; DOES> >BODY\ + EVALUATE\ + SOURCE >IN\ + <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL\ + FILL MOVE\ + . CR EMIT SPACE SPACES TYPE U. .R U.R\ + ACCEPT\ + TRUE FALSE\ + <> U> 0<> 0>\ + NIP TUCK ROLL PICK\ + 2>R 2R@ 2R>\ + WITHIN UNUSED MARKER\ + I J\ + TO\ + COMPILE, [COMPILE]\ + SAVE-INPUT RESTORE-INPUT\ + PAD ERASE\ + 2LITERAL DNEGATE\ + D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS\ + M+ M*/ D. D.R 2ROT DU<\ + CATCH THROW\ + FREE RESIZE ALLOCATE\ + CS-PICK CS-ROLL\ + GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER\ + PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER\ + -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL'); + + var immediateWordList = toWordList('IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE'); + + CodeMirror.defineMode('forth', function() { + function searchWordList (wordList, word) { + var i; + for (i = wordList.length - 1; i >= 0; i--) { + if (wordList[i].name === word.toUpperCase()) { + return wordList[i]; + } + } + return undefined; + } + return { + startState: function() { + return { + state: '', + base: 10, + coreWordList: coreWordList, + immediateWordList: immediateWordList, + wordList: [] + }; + }, + token: function (stream, stt) { + var mat; + if (stream.eatSpace()) { + return null; + } + if (stt.state === '') { // interpretation + if (stream.match(/^(\]|:NONAME)(\s|$)/i)) { + stt.state = ' compilation'; + return 'builtin compilation'; + } + mat = stream.match(/^(\:)\s+(\S+)(\s|$)+/); + if (mat) { + stt.wordList.push({name: mat[2].toUpperCase()}); + stt.state = ' compilation'; + return 'def' + stt.state; + } + mat = stream.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i); + if (mat) { + stt.wordList.push({name: mat[2].toUpperCase()}); + return 'def' + stt.state; + } + mat = stream.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/); + if (mat) { + return 'builtin' + stt.state; + } + } else { // compilation + // ; [ + if (stream.match(/^(\;|\[)(\s)/)) { + stt.state = ''; + stream.backUp(1); + return 'builtin compilation'; + } + if (stream.match(/^(\;|\[)($)/)) { + stt.state = ''; + return 'builtin compilation'; + } + if (stream.match(/^(POSTPONE)\s+\S+(\s|$)+/)) { + return 'builtin'; + } + } + + // dynamic wordlist + mat = stream.match(/^(\S+)(\s+|$)/); + if (mat) { + if (searchWordList(stt.wordList, mat[1]) !== undefined) { + return 'variable' + stt.state; + } + + // comments + if (mat[1] === '\\') { + stream.skipToEnd(); + return 'comment' + stt.state; + } + + // core words + if (searchWordList(stt.coreWordList, mat[1]) !== undefined) { + return 'builtin' + stt.state; + } + if (searchWordList(stt.immediateWordList, mat[1]) !== undefined) { + return 'keyword' + stt.state; + } + + if (mat[1] === '(') { + stream.eatWhile(function (s) { return s !== ')'; }); + stream.eat(')'); + return 'comment' + stt.state; + } + + // // strings + if (mat[1] === '.(') { + stream.eatWhile(function (s) { return s !== ')'; }); + stream.eat(')'); + return 'string' + stt.state; + } + if (mat[1] === 'S"' || mat[1] === '."' || mat[1] === 'C"') { + stream.eatWhile(function (s) { return s !== '"'; }); + stream.eat('"'); + return 'string' + stt.state; + } + + // numbers + if (mat[1] - 0xfffffffff) { + return 'number' + stt.state; + } + // if (mat[1].match(/^[-+]?[0-9]+\.[0-9]*/)) { + // return 'number' + stt.state; + // } + + return 'atom' + stt.state; + } + } + }; + }); + CodeMirror.defineMIME("text/x-forth", "forth"); +}); diff --git a/global/codemirror/mode/forth/index.html b/global/codemirror/mode/forth/index.html new file mode 100644 index 00000000..ae8cd345 --- /dev/null +++ b/global/codemirror/mode/forth/index.html @@ -0,0 +1,75 @@ + + +CodeMirror: Forth mode + + + + + + + + + + + +
+ +

Forth mode

+ +
+
+ + + +

Simple mode that handle Forth-Syntax (Forth on WikiPedia).

+ +

MIME types defined: text/x-forth.

+ +
diff --git a/global/codemirror/mode/fortran/fortran.js b/global/codemirror/mode/fortran/fortran.js new file mode 100644 index 00000000..4d88f006 --- /dev/null +++ b/global/codemirror/mode/fortran/fortran.js @@ -0,0 +1,188 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("fortran", function() { + function words(array) { + var keys = {}; + for (var i = 0; i < array.length; ++i) { + keys[array[i]] = true; + } + return keys; + } + + var keywords = words([ + "abstract", "accept", "allocatable", "allocate", + "array", "assign", "asynchronous", "backspace", + "bind", "block", "byte", "call", "case", + "class", "close", "common", "contains", + "continue", "cycle", "data", "deallocate", + "decode", "deferred", "dimension", "do", + "elemental", "else", "encode", "end", + "endif", "entry", "enumerator", "equivalence", + "exit", "external", "extrinsic", "final", + "forall", "format", "function", "generic", + "go", "goto", "if", "implicit", "import", "include", + "inquire", "intent", "interface", "intrinsic", + "module", "namelist", "non_intrinsic", + "non_overridable", "none", "nopass", + "nullify", "open", "optional", "options", + "parameter", "pass", "pause", "pointer", + "print", "private", "program", "protected", + "public", "pure", "read", "recursive", "result", + "return", "rewind", "save", "select", "sequence", + "stop", "subroutine", "target", "then", "to", "type", + "use", "value", "volatile", "where", "while", + "write"]); + var builtins = words(["abort", "abs", "access", "achar", "acos", + "adjustl", "adjustr", "aimag", "aint", "alarm", + "all", "allocated", "alog", "amax", "amin", + "amod", "and", "anint", "any", "asin", + "associated", "atan", "besj", "besjn", "besy", + "besyn", "bit_size", "btest", "cabs", "ccos", + "ceiling", "cexp", "char", "chdir", "chmod", + "clog", "cmplx", "command_argument_count", + "complex", "conjg", "cos", "cosh", "count", + "cpu_time", "cshift", "csin", "csqrt", "ctime", + "c_funloc", "c_loc", "c_associated", "c_null_ptr", + "c_null_funptr", "c_f_pointer", "c_null_char", + "c_alert", "c_backspace", "c_form_feed", + "c_new_line", "c_carriage_return", + "c_horizontal_tab", "c_vertical_tab", "dabs", + "dacos", "dasin", "datan", "date_and_time", + "dbesj", "dbesj", "dbesjn", "dbesy", "dbesy", + "dbesyn", "dble", "dcos", "dcosh", "ddim", "derf", + "derfc", "dexp", "digits", "dim", "dint", "dlog", + "dlog", "dmax", "dmin", "dmod", "dnint", + "dot_product", "dprod", "dsign", "dsinh", + "dsin", "dsqrt", "dtanh", "dtan", "dtime", + "eoshift", "epsilon", "erf", "erfc", "etime", + "exit", "exp", "exponent", "extends_type_of", + "fdate", "fget", "fgetc", "float", "floor", + "flush", "fnum", "fputc", "fput", "fraction", + "fseek", "fstat", "ftell", "gerror", "getarg", + "get_command", "get_command_argument", + "get_environment_variable", "getcwd", + "getenv", "getgid", "getlog", "getpid", + "getuid", "gmtime", "hostnm", "huge", "iabs", + "iachar", "iand", "iargc", "ibclr", "ibits", + "ibset", "ichar", "idate", "idim", "idint", + "idnint", "ieor", "ierrno", "ifix", "imag", + "imagpart", "index", "int", "ior", "irand", + "isatty", "ishft", "ishftc", "isign", + "iso_c_binding", "is_iostat_end", "is_iostat_eor", + "itime", "kill", "kind", "lbound", "len", "len_trim", + "lge", "lgt", "link", "lle", "llt", "lnblnk", "loc", + "log", "logical", "long", "lshift", "lstat", "ltime", + "matmul", "max", "maxexponent", "maxloc", "maxval", + "mclock", "merge", "move_alloc", "min", "minexponent", + "minloc", "minval", "mod", "modulo", "mvbits", + "nearest", "new_line", "nint", "not", "or", "pack", + "perror", "precision", "present", "product", "radix", + "rand", "random_number", "random_seed", "range", + "real", "realpart", "rename", "repeat", "reshape", + "rrspacing", "rshift", "same_type_as", "scale", + "scan", "second", "selected_int_kind", + "selected_real_kind", "set_exponent", "shape", + "short", "sign", "signal", "sinh", "sin", "sleep", + "sngl", "spacing", "spread", "sqrt", "srand", "stat", + "sum", "symlnk", "system", "system_clock", "tan", + "tanh", "time", "tiny", "transfer", "transpose", + "trim", "ttynam", "ubound", "umask", "unlink", + "unpack", "verify", "xor", "zabs", "zcos", "zexp", + "zlog", "zsin", "zsqrt"]); + + var dataTypes = words(["c_bool", "c_char", "c_double", "c_double_complex", + "c_float", "c_float_complex", "c_funptr", "c_int", + "c_int16_t", "c_int32_t", "c_int64_t", "c_int8_t", + "c_int_fast16_t", "c_int_fast32_t", "c_int_fast64_t", + "c_int_fast8_t", "c_int_least16_t", "c_int_least32_t", + "c_int_least64_t", "c_int_least8_t", "c_intmax_t", + "c_intptr_t", "c_long", "c_long_double", + "c_long_double_complex", "c_long_long", "c_ptr", + "c_short", "c_signed_char", "c_size_t", "character", + "complex", "double", "integer", "logical", "real"]); + var isOperatorChar = /[+\-*&=<>\/\:]/; + var litOperator = new RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)", "i"); + + function tokenBase(stream, state) { + + if (stream.match(litOperator)){ + return 'operator'; + } + + var ch = stream.next(); + if (ch == "!") { + stream.skipToEnd(); + return "comment"; + } + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + if (/[\[\]\(\),]/.test(ch)) { + return null; + } + if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } + if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + stream.eatWhile(/[\w\$_]/); + var word = stream.current().toLowerCase(); + + if (keywords.hasOwnProperty(word)){ + return 'keyword'; + } + if (builtins.hasOwnProperty(word) || dataTypes.hasOwnProperty(word)) { + return 'builtin'; + } + return "variable"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) { + end = true; + break; + } + escaped = !escaped && next == "\\"; + } + if (end || !escaped) state.tokenize = null; + return "string"; + }; + } + + // Interface + + return { + startState: function() { + return {tokenize: null}; + }, + + token: function(stream, state) { + if (stream.eatSpace()) return null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment" || style == "meta") return style; + return style; + } + }; +}); + +CodeMirror.defineMIME("text/x-fortran", "fortran"); + +}); diff --git a/global/codemirror/mode/fortran/index.html b/global/codemirror/mode/fortran/index.html new file mode 100644 index 00000000..9aed0efc --- /dev/null +++ b/global/codemirror/mode/fortran/index.html @@ -0,0 +1,81 @@ + + +CodeMirror: Fortran mode + + + + + + + + + +
+

Fortran mode

+ + +
+ + + +

MIME types defined: text/x-fortran.

+
diff --git a/global/codemirror/mode/gas/gas.js b/global/codemirror/mode/gas/gas.js new file mode 100644 index 00000000..0c74bedc --- /dev/null +++ b/global/codemirror/mode/gas/gas.js @@ -0,0 +1,345 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("gas", function(_config, parserConfig) { + 'use strict'; + + // If an architecture is specified, its initialization function may + // populate this array with custom parsing functions which will be + // tried in the event that the standard functions do not find a match. + var custom = []; + + // The symbol used to start a line comment changes based on the target + // architecture. + // If no architecture is pased in "parserConfig" then only multiline + // comments will have syntax support. + var lineCommentStartSymbol = ""; + + // These directives are architecture independent. + // Machine specific directives should go in their respective + // architecture initialization function. + // Reference: + // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops + var directives = { + ".abort" : "builtin", + ".align" : "builtin", + ".altmacro" : "builtin", + ".ascii" : "builtin", + ".asciz" : "builtin", + ".balign" : "builtin", + ".balignw" : "builtin", + ".balignl" : "builtin", + ".bundle_align_mode" : "builtin", + ".bundle_lock" : "builtin", + ".bundle_unlock" : "builtin", + ".byte" : "builtin", + ".cfi_startproc" : "builtin", + ".comm" : "builtin", + ".data" : "builtin", + ".def" : "builtin", + ".desc" : "builtin", + ".dim" : "builtin", + ".double" : "builtin", + ".eject" : "builtin", + ".else" : "builtin", + ".elseif" : "builtin", + ".end" : "builtin", + ".endef" : "builtin", + ".endfunc" : "builtin", + ".endif" : "builtin", + ".equ" : "builtin", + ".equiv" : "builtin", + ".eqv" : "builtin", + ".err" : "builtin", + ".error" : "builtin", + ".exitm" : "builtin", + ".extern" : "builtin", + ".fail" : "builtin", + ".file" : "builtin", + ".fill" : "builtin", + ".float" : "builtin", + ".func" : "builtin", + ".global" : "builtin", + ".gnu_attribute" : "builtin", + ".hidden" : "builtin", + ".hword" : "builtin", + ".ident" : "builtin", + ".if" : "builtin", + ".incbin" : "builtin", + ".include" : "builtin", + ".int" : "builtin", + ".internal" : "builtin", + ".irp" : "builtin", + ".irpc" : "builtin", + ".lcomm" : "builtin", + ".lflags" : "builtin", + ".line" : "builtin", + ".linkonce" : "builtin", + ".list" : "builtin", + ".ln" : "builtin", + ".loc" : "builtin", + ".loc_mark_labels" : "builtin", + ".local" : "builtin", + ".long" : "builtin", + ".macro" : "builtin", + ".mri" : "builtin", + ".noaltmacro" : "builtin", + ".nolist" : "builtin", + ".octa" : "builtin", + ".offset" : "builtin", + ".org" : "builtin", + ".p2align" : "builtin", + ".popsection" : "builtin", + ".previous" : "builtin", + ".print" : "builtin", + ".protected" : "builtin", + ".psize" : "builtin", + ".purgem" : "builtin", + ".pushsection" : "builtin", + ".quad" : "builtin", + ".reloc" : "builtin", + ".rept" : "builtin", + ".sbttl" : "builtin", + ".scl" : "builtin", + ".section" : "builtin", + ".set" : "builtin", + ".short" : "builtin", + ".single" : "builtin", + ".size" : "builtin", + ".skip" : "builtin", + ".sleb128" : "builtin", + ".space" : "builtin", + ".stab" : "builtin", + ".string" : "builtin", + ".struct" : "builtin", + ".subsection" : "builtin", + ".symver" : "builtin", + ".tag" : "builtin", + ".text" : "builtin", + ".title" : "builtin", + ".type" : "builtin", + ".uleb128" : "builtin", + ".val" : "builtin", + ".version" : "builtin", + ".vtable_entry" : "builtin", + ".vtable_inherit" : "builtin", + ".warning" : "builtin", + ".weak" : "builtin", + ".weakref" : "builtin", + ".word" : "builtin" + }; + + var registers = {}; + + function x86(_parserConfig) { + lineCommentStartSymbol = "#"; + + registers.ax = "variable"; + registers.eax = "variable-2"; + registers.rax = "variable-3"; + + registers.bx = "variable"; + registers.ebx = "variable-2"; + registers.rbx = "variable-3"; + + registers.cx = "variable"; + registers.ecx = "variable-2"; + registers.rcx = "variable-3"; + + registers.dx = "variable"; + registers.edx = "variable-2"; + registers.rdx = "variable-3"; + + registers.si = "variable"; + registers.esi = "variable-2"; + registers.rsi = "variable-3"; + + registers.di = "variable"; + registers.edi = "variable-2"; + registers.rdi = "variable-3"; + + registers.sp = "variable"; + registers.esp = "variable-2"; + registers.rsp = "variable-3"; + + registers.bp = "variable"; + registers.ebp = "variable-2"; + registers.rbp = "variable-3"; + + registers.ip = "variable"; + registers.eip = "variable-2"; + registers.rip = "variable-3"; + + registers.cs = "keyword"; + registers.ds = "keyword"; + registers.ss = "keyword"; + registers.es = "keyword"; + registers.fs = "keyword"; + registers.gs = "keyword"; + } + + function armv6(_parserConfig) { + // Reference: + // http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf + // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf + lineCommentStartSymbol = "@"; + directives.syntax = "builtin"; + + registers.r0 = "variable"; + registers.r1 = "variable"; + registers.r2 = "variable"; + registers.r3 = "variable"; + registers.r4 = "variable"; + registers.r5 = "variable"; + registers.r6 = "variable"; + registers.r7 = "variable"; + registers.r8 = "variable"; + registers.r9 = "variable"; + registers.r10 = "variable"; + registers.r11 = "variable"; + registers.r12 = "variable"; + + registers.sp = "variable-2"; + registers.lr = "variable-2"; + registers.pc = "variable-2"; + registers.r13 = registers.sp; + registers.r14 = registers.lr; + registers.r15 = registers.pc; + + custom.push(function(ch, stream) { + if (ch === '#') { + stream.eatWhile(/\w/); + return "number"; + } + }); + } + + var arch = (parserConfig.architecture || "x86").toLowerCase(); + if (arch === "x86") { + x86(parserConfig); + } else if (arch === "arm" || arch === "armv6") { + armv6(parserConfig); + } + + function nextUntilUnescaped(stream, end) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (next === end && !escaped) { + return false; + } + escaped = !escaped && next === "\\"; + } + return escaped; + } + + function clikeComment(stream, state) { + var maybeEnd = false, ch; + while ((ch = stream.next()) != null) { + if (ch === "/" && maybeEnd) { + state.tokenize = null; + break; + } + maybeEnd = (ch === "*"); + } + return "comment"; + } + + return { + startState: function() { + return { + tokenize: null + }; + }, + + token: function(stream, state) { + if (state.tokenize) { + return state.tokenize(stream, state); + } + + if (stream.eatSpace()) { + return null; + } + + var style, cur, ch = stream.next(); + + if (ch === "/") { + if (stream.eat("*")) { + state.tokenize = clikeComment; + return clikeComment(stream, state); + } + } + + if (ch === lineCommentStartSymbol) { + stream.skipToEnd(); + return "comment"; + } + + if (ch === '"') { + nextUntilUnescaped(stream, '"'); + return "string"; + } + + if (ch === '.') { + stream.eatWhile(/\w/); + cur = stream.current().toLowerCase(); + style = directives[cur]; + return style || null; + } + + if (ch === '=') { + stream.eatWhile(/\w/); + return "tag"; + } + + if (ch === '{') { + return "braket"; + } + + if (ch === '}') { + return "braket"; + } + + if (/\d/.test(ch)) { + if (ch === "0" && stream.eat("x")) { + stream.eatWhile(/[0-9a-fA-F]/); + return "number"; + } + stream.eatWhile(/\d/); + return "number"; + } + + if (/\w/.test(ch)) { + stream.eatWhile(/\w/); + if (stream.eat(":")) { + return 'tag'; + } + cur = stream.current().toLowerCase(); + style = registers[cur]; + return style || null; + } + + for (var i = 0; i < custom.length; i++) { + style = custom[i](ch, stream, state); + if (style) { + return style; + } + } + }, + + lineComment: lineCommentStartSymbol, + blockCommentStart: "/*", + blockCommentEnd: "*/" + }; +}); + +}); diff --git a/global/codemirror/mode/gas/index.html b/global/codemirror/mode/gas/index.html new file mode 100644 index 00000000..df75ca2d --- /dev/null +++ b/global/codemirror/mode/gas/index.html @@ -0,0 +1,68 @@ + + +CodeMirror: Gas mode + + + + + + + + + +
+

Gas mode

+
+ +
+ + + +

Handles AT&T assembler syntax (more specifically this handles + the GNU Assembler (gas) syntax.) + It takes a single optional configuration parameter: + architecture, which can be one of "ARM", + "ARMv6" or "x86". + Including the parameter adds syntax for the registers and special + directives for the supplied architecture. + +

MIME types defined: text/x-gas

+
diff --git a/global/codemirror/mode/gfm/gfm.js b/global/codemirror/mode/gfm/gfm.js new file mode 100644 index 00000000..471ae906 --- /dev/null +++ b/global/codemirror/mode/gfm/gfm.js @@ -0,0 +1,129 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +var urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i + +CodeMirror.defineMode("gfm", function(config, modeConfig) { + var codeDepth = 0; + function blankLine(state) { + state.code = false; + return null; + } + var gfmOverlay = { + startState: function() { + return { + code: false, + codeBlock: false, + ateSpace: false + }; + }, + copyState: function(s) { + return { + code: s.code, + codeBlock: s.codeBlock, + ateSpace: s.ateSpace + }; + }, + token: function(stream, state) { + state.combineTokens = null; + + // Hack to prevent formatting override inside code blocks (block and inline) + if (state.codeBlock) { + if (stream.match(/^```+/)) { + state.codeBlock = false; + return null; + } + stream.skipToEnd(); + return null; + } + if (stream.sol()) { + state.code = false; + } + if (stream.sol() && stream.match(/^```+/)) { + stream.skipToEnd(); + state.codeBlock = true; + return null; + } + // If this block is changed, it may need to be updated in Markdown mode + if (stream.peek() === '`') { + stream.next(); + var before = stream.pos; + stream.eatWhile('`'); + var difference = 1 + stream.pos - before; + if (!state.code) { + codeDepth = difference; + state.code = true; + } else { + if (difference === codeDepth) { // Must be exact + state.code = false; + } + } + return null; + } else if (state.code) { + stream.next(); + return null; + } + // Check if space. If so, links can be formatted later on + if (stream.eatSpace()) { + state.ateSpace = true; + return null; + } + if (stream.sol() || state.ateSpace) { + state.ateSpace = false; + if (modeConfig.gitHubSpice !== false) { + if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?=.{0,6}\d)(?:[a-f0-9]{7,40}\b)/)) { + // User/Project@SHA + // User@SHA + // SHA + state.combineTokens = true; + return "link"; + } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { + // User/Project#Num + // User#Num + // #Num + state.combineTokens = true; + return "link"; + } + } + } + if (stream.match(urlRE) && + stream.string.slice(stream.start - 2, stream.start) != "](" && + (stream.start == 0 || /\W/.test(stream.string.charAt(stream.start - 1)))) { + // URLs + // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls + // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine + // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL + state.combineTokens = true; + return "link"; + } + stream.next(); + return null; + }, + blankLine: blankLine + }; + + var markdownConfig = { + taskLists: true, + strikethrough: true, + emoji: true + }; + for (var attr in modeConfig) { + markdownConfig[attr] = modeConfig[attr]; + } + markdownConfig.name = "markdown"; + return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay); + +}, "markdown"); + + CodeMirror.defineMIME("text/x-gfm", "gfm"); +}); diff --git a/global/codemirror/mode/gfm/index.html b/global/codemirror/mode/gfm/index.html new file mode 100644 index 00000000..ea4bac15 --- /dev/null +++ b/global/codemirror/mode/gfm/index.html @@ -0,0 +1,136 @@ + + +CodeMirror: GFM mode + + + + + + + + + + + + + + + + + +
+

GFM mode

+
+ + + +

Optionally depends on other modes for properly highlighted code blocks.

+ +

Gfm mode supports these options (apart those from base Markdown mode):

+
    +
  • + +
    gitHubSpice: boolean
    +
    Hashes, issues... (default: true).
    +
    +
  • +
  • + +
    taskLists: boolean
    +
    - [ ] syntax (default: true).
    +
    +
  • +
  • + +
    strikethrough: boolean
    +
    ~~foo~~ syntax (default: true).
    +
    +
  • +
  • + +
    emoji: boolean
    +
    :emoji: syntax (default: true).
    +
    +
  • +
+ +

Parsing/Highlighting Tests: normal, verbose.

+ +
diff --git a/global/codemirror/mode/gfm/test.js b/global/codemirror/mode/gfm/test.js new file mode 100644 index 00000000..e7135264 --- /dev/null +++ b/global/codemirror/mode/gfm/test.js @@ -0,0 +1,198 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var config = {tabSize: 4, indentUnit: 2} + var mode = CodeMirror.getMode(config, "gfm"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + var modeHighlightFormatting = CodeMirror.getMode(config, {name: "gfm", highlightFormatting: true}); + function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } + + FT("codeBackticks", + "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); + + FT("doubleBackticks", + "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); + + FT("taskList", + "[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2 foo]", + "[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2 foo]"); + + FT("formatting_strikethrough", + "[strikethrough&formatting&formatting-strikethrough ~~][strikethrough foo][strikethrough&formatting&formatting-strikethrough ~~]"); + + FT("formatting_strikethrough", + "foo [strikethrough&formatting&formatting-strikethrough ~~][strikethrough bar][strikethrough&formatting&formatting-strikethrough ~~]"); + + FT("formatting_emoji", + "foo [builtin&formatting&formatting-emoji :smile:] foo"); + + MT("emInWordAsterisk", + "foo[em *bar*]hello"); + + MT("emInWordUnderscore", + "foo_bar_hello"); + + MT("emStrongUnderscore", + "[em&strong ___foo___] bar"); + + MT("taskListAsterisk", + "[variable-2 * ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] + "[variable-2 * ][link&variable-2 [[ ]]][variable-2 bar]", // Invalid; must have space after ] + "[variable-2 * ][link&variable-2 [[x]]][variable-2 hello]", // Invalid; must have space after ] + "[variable-2 * ][meta [ ]]][variable-2 ][link&variable-2 [[world]]]", // Valid; tests reference style links + " [variable-3 * ][property [x]]][variable-3 foo]"); // Valid; can be nested + + MT("taskListPlus", + "[variable-2 + ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] + "[variable-2 + ][link&variable-2 [[x]]][variable-2 hello]", // Invalid; must have space after ] + "[variable-2 + ][meta [ ]]][variable-2 ][link&variable-2 [[world]]]", // Valid; tests reference style links + " [variable-3 + ][property [x]]][variable-3 foo]"); // Valid; can be nested + + MT("taskListDash", + "[variable-2 - ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] + "[variable-2 - ][link&variable-2 [[x]]][variable-2 hello]", // Invalid; must have space after ] + "[variable-2 - ][meta [ ]]][variable-2 world]", // Valid; tests reference style links + " [variable-3 - ][property [x]]][variable-3 foo]"); // Valid; can be nested + + MT("taskListNumber", + "[variable-2 1. ][link&variable-2 [[]]][variable-2 foo]", // Invalid; must have space or x between [] + "[variable-2 2. ][link&variable-2 [[ ]]][variable-2 bar]", // Invalid; must have space after ] + "[variable-2 3. ][meta [ ]]][variable-2 world]", // Valid; tests reference style links + " [variable-3 1. ][property [x]]][variable-3 foo]"); // Valid; can be nested + + MT("SHA", + "foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar"); + + MT("SHAEmphasis", + "[em *foo ][em&link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); + + MT("shortSHA", + "foo [link be6a8cc] bar"); + + MT("tooShortSHA", + "foo be6a8c bar"); + + MT("longSHA", + "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar"); + + MT("badSHA", + "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar"); + + MT("userSHA", + "foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello"); + + MT("userSHAEmphasis", + "[em *foo ][em&link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); + + MT("userProjectSHA", + "foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world"); + + MT("userProjectSHAEmphasis", + "[em *foo ][em&link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); + + MT("wordSHA", + "ask for feedbac") + + MT("num", + "foo [link #1] bar"); + + MT("numEmphasis", + "[em *foo ][em&link #1][em *]"); + + MT("badNum", + "foo #1bar hello"); + + MT("userNum", + "foo [link bar#1] hello"); + + MT("userNumEmphasis", + "[em *foo ][em&link bar#1][em *]"); + + MT("userProjectNum", + "foo [link bar/hello#1] world"); + + MT("userProjectNumEmphasis", + "[em *foo ][em&link bar/hello#1][em *]"); + + MT("vanillaLink", + "foo [link http://www.example.com/] bar"); + + MT("vanillaLinkNoScheme", + "foo [link www.example.com] bar"); + + MT("vanillaLinkHttps", + "foo [link https://www.example.com/] bar"); + + MT("vanillaLinkDataSchema", + "foo [link data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==] bar"); + + MT("vanillaLinkPunctuation", + "foo [link http://www.example.com/]. bar"); + + MT("vanillaLinkExtension", + "foo [link http://www.example.com/index.html] bar"); + + MT("vanillaLinkEmphasis", + "foo [em *][em&link http://www.example.com/index.html][em *] bar"); + + MT("notALink", + "foo asfd:asdf bar"); + + MT("notALink", + "[comment ``foo `bar` http://www.example.com/``] hello"); + + MT("notALink", + "[comment `foo]", + "[comment&link http://www.example.com/]", + "[comment `] foo", + "", + "[link http://www.example.com/]"); + + MT("strikethrough", + "[strikethrough ~~foo~~]"); + + MT("strikethroughWithStartingSpace", + "~~ foo~~"); + + MT("strikethroughUnclosedStrayTildes", + "[strikethrough ~~foo~~~]"); + + MT("strikethroughUnclosedStrayTildes", + "[strikethrough ~~foo ~~]"); + + MT("strikethroughUnclosedStrayTildes", + "[strikethrough ~~foo ~~ bar]"); + + MT("strikethroughUnclosedStrayTildes", + "[strikethrough ~~foo ~~ bar~~]hello"); + + MT("strikethroughOneLetter", + "[strikethrough ~~a~~]"); + + MT("strikethroughWrapped", + "[strikethrough ~~foo]", + "[strikethrough foo~~]"); + + MT("strikethroughParagraph", + "[strikethrough ~~foo]", + "", + "foo[strikethrough ~~bar]"); + + MT("strikethroughEm", + "[strikethrough ~~foo][em&strikethrough *bar*][strikethrough ~~]"); + + MT("strikethroughEm", + "[em *][em&strikethrough ~~foo~~][em *]"); + + MT("strikethroughStrong", + "[strikethrough ~~][strong&strikethrough **foo**][strikethrough ~~]"); + + MT("strikethroughStrong", + "[strong **][strong&strikethrough ~~foo~~][strong **]"); + + MT("emoji", + "text [builtin :blush:] text [builtin :v:] text [builtin :+1:] text", + ":text text: [builtin :smiley_cat:]"); + +})(); diff --git a/global/codemirror/mode/gherkin/gherkin.js b/global/codemirror/mode/gherkin/gherkin.js new file mode 100644 index 00000000..fc2ebee1 --- /dev/null +++ b/global/codemirror/mode/gherkin/gherkin.js @@ -0,0 +1,178 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/* +Gherkin mode - http://www.cukes.info/ +Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues +*/ + +// Following Objs from Brackets implementation: https://github.com/tregusti/brackets-gherkin/blob/master/main.js +//var Quotes = { +// SINGLE: 1, +// DOUBLE: 2 +//}; + +//var regex = { +// keywords: /(Feature| {2}(Scenario|In order to|As|I)| {4}(Given|When|Then|And))/ +//}; + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("gherkin", function () { + return { + startState: function () { + return { + lineNumber: 0, + tableHeaderLine: false, + allowFeature: true, + allowBackground: false, + allowScenario: false, + allowSteps: false, + allowPlaceholders: false, + allowMultilineArgument: false, + inMultilineString: false, + inMultilineTable: false, + inKeywordLine: false + }; + }, + token: function (stream, state) { + if (stream.sol()) { + state.lineNumber++; + state.inKeywordLine = false; + if (state.inMultilineTable) { + state.tableHeaderLine = false; + if (!stream.match(/\s*\|/, false)) { + state.allowMultilineArgument = false; + state.inMultilineTable = false; + } + } + } + + stream.eatSpace(); + + if (state.allowMultilineArgument) { + + // STRING + if (state.inMultilineString) { + if (stream.match('"""')) { + state.inMultilineString = false; + state.allowMultilineArgument = false; + } else { + stream.match(/.*/); + } + return "string"; + } + + // TABLE + if (state.inMultilineTable) { + if (stream.match(/\|\s*/)) { + return "bracket"; + } else { + stream.match(/[^\|]*/); + return state.tableHeaderLine ? "header" : "string"; + } + } + + // DETECT START + if (stream.match('"""')) { + // String + state.inMultilineString = true; + return "string"; + } else if (stream.match("|")) { + // Table + state.inMultilineTable = true; + state.tableHeaderLine = true; + return "bracket"; + } + + } + + // LINE COMMENT + if (stream.match(/#.*/)) { + return "comment"; + + // TAG + } else if (!state.inKeywordLine && stream.match(/@\S+/)) { + return "tag"; + + // FEATURE + } else if (!state.inKeywordLine && state.allowFeature && stream.match(/(機能|功能|フィーチャ|기능|โครงหลัก|ความสามารถ|ความต้องการทางธุรกิจ|ಹೆಚ್ಚಳ|గుణము|ਮੁਹਾਂਦਰਾ|ਨਕਸ਼ ਨੁਹਾਰ|ਖਾਸੀਅਤ|रूप लेख|وِیژگی|خاصية|תכונה|Функціонал|Функция|Функционалност|Функционал|Үзенчәлеклелек|Свойство|Особина|Мөмкинлек|Могућност|Λειτουργία|Δυνατότητα|Właściwość|Vlastnosť|Trajto|Tính năng|Savybė|Pretty much|Požiadavka|Požadavek|Potrzeba biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Hwæt|Hwaet|Funzionalità|Funktionalitéit|Funktionalität|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|Funcţionalitate|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|Característica|Caracteristica|Business Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) { + state.allowScenario = true; + state.allowBackground = true; + state.allowPlaceholders = false; + state.allowSteps = false; + state.allowMultilineArgument = false; + state.inKeywordLine = true; + return "keyword"; + + // BACKGROUND + } else if (!state.inKeywordLine && state.allowBackground && stream.match(/(背景|배경|แนวคิด|ಹಿನ್ನೆಲೆ|నేపథ్యం|ਪਿਛੋਕੜ|पृष्ठभूमि|زمینه|الخلفية|רקע|Тарих|Предыстория|Предистория|Позадина|Передумова|Основа|Контекст|Кереш|Υπόβαθρο|Założenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|Pozadí|Osnova|Latar Belakang|Kontext|Konteksts|Kontekstas|Kontekst|Háttér|Hannergrond|Grundlage|Geçmiş|Fundo|Fono|First off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|Cenário de Fundo|Cenario de Fundo|Cefndir|Bối cảnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)) { + state.allowPlaceholders = false; + state.allowSteps = true; + state.allowBackground = false; + state.allowMultilineArgument = false; + state.inKeywordLine = true; + return "keyword"; + + // SCENARIO OUTLINE + } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景大綱|场景大纲|劇本大綱|剧本大纲|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|시나리오 개요|สรุปเหตุการณ์|โครงสร้างของเหตุการณ์|ವಿವರಣೆ|కథనం|ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ|ਪਟਕਥਾ ਢਾਂਚਾ|परिदृश्य रूपरेखा|سيناريو مخطط|الگوی سناریو|תבנית תרחיש|Сценарийның төзелеше|Сценарий структураси|Структура сценарію|Структура сценария|Структура сценарија|Скица|Рамка на сценарий|Концепт|Περιγραφή Σεναρίου|Wharrimean is|Template Situai|Template Senario|Template Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwær swa|Swa hwaer swa|Struktura scenarija|Structură scenariu|Structura scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus šablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du Scénario|Plan du scénario|Osnova scénáře|Osnova Scenára|Náčrt Scenáru|Náčrt Scénáře|Náčrt Scenára|MISHUN SRSLY|Menggariskan Senario|Lýsing Dæma|Lýsing Atburðarásar|Konturo de la scenaro|Koncept|Khung tình huống|Khung kịch bản|Forgatókönyv vázlat|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do Cenário|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract Scenario):/)) { + state.allowPlaceholders = true; + state.allowSteps = true; + state.allowMultilineArgument = false; + state.inKeywordLine = true; + return "keyword"; + + // EXAMPLES + } else if (state.allowScenario && stream.match(/(例子|例|サンプル|예|ชุดของเหตุการณ์|ชุดของตัวอย่าง|ಉದಾಹರಣೆಗಳು|ఉదాహరణలు|ਉਦਾਹਰਨਾਂ|उदाहरण|نمونه ها|امثلة|דוגמאות|Үрнәкләр|Сценарији|Примеры|Примери|Приклади|Мисоллар|Мисаллар|Σενάρια|Παραδείγματα|You'll wanna|Voorbeelden|Variantai|Tapaukset|Se þe|Se the|Se ðe|Scenarios|Scenariji|Scenarijai|Przykłady|Primjeri|Primeri|Příklady|Príklady|Piemēri|Példák|Pavyzdžiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ liệu|Dead men tell no tales|Dæmi|Contoh|Cenários|Cenarios|Beispiller|Beispiele|Atburðarásir):/)) { + state.allowPlaceholders = false; + state.allowSteps = true; + state.allowBackground = false; + state.allowMultilineArgument = true; + return "keyword"; + + // SCENARIO + } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(場景|场景|劇本|剧本|シナリオ|시나리오|เหตุการณ์|ಕಥಾಸಾರಾಂಶ|సన్నివేశం|ਪਟਕਥਾ|परिदृश्य|سيناريو|سناریو|תרחיש|Сценарій|Сценарио|Сценарий|Пример|Σενάριο|Tình huống|The thing of it is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|Scénario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|Scénář|Scenár|Primer|MISHUN|Kịch bản|Keadaan|Heave to|Forgatókönyv|Escenario|Escenari|Cenário|Cenario|Awww, look mate|Atburðarás):/)) { + state.allowPlaceholders = false; + state.allowSteps = true; + state.allowBackground = false; + state.allowMultilineArgument = false; + state.inKeywordLine = true; + return "keyword"; + + // STEPS + } else if (!state.inKeywordLine && state.allowSteps && stream.match(/(那麼|那么|而且|當|当|并且|同時|同时|前提|假设|假設|假定|假如|但是|但し|並且|もし|ならば|ただし|しかし|かつ|하지만|조건|먼저|만일|만약|단|그리고|그러면|และ |เมื่อ |แต่ |ดังนั้น |กำหนดให้ |ಸ್ಥಿತಿಯನ್ನು |ಮತ್ತು |ನೀಡಿದ |ನಂತರ |ಆದರೆ |మరియు |చెప్పబడినది |కాని |ఈ పరిస్థితిలో |అప్పుడు |ਪਰ |ਤਦ |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |ਜਦੋਂ |ਅਤੇ |यदि |परन्तु |पर |तब |तदा |तथा |जब |चूंकि |किन्तु |कदा |और |अगर |و |هنگامی |متى |لكن |عندما |ثم |بفرض |با فرض |اما |اذاً |آنگاه |כאשר |וגם |בהינתן |אזי |אז |אבל |Якщо |Һәм |Унда |Тоді |Тогда |То |Также |Та |Пусть |Припустимо, що |Припустимо |Онда |Но |Нехай |Нәтиҗәдә |Лекин |Ләкин |Коли |Когда |Когато |Када |Кад |К тому же |І |И |Задато |Задати |Задате |Если |Допустим |Дано |Дадено |Вә |Ва |Бирок |Әмма |Әйтик |Әгәр |Аммо |Али |Але |Агар |А також |А |Τότε |Όταν |Και |Δεδομένου |Αλλά |Þurh |Þegar |Þa þe |Þá |Þa |Zatati |Zakładając |Zadato |Zadate |Zadano |Zadani |Zadan |Za předpokladu |Za predpokladu |Youse know when youse got |Youse know like when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When |Wenn |WEN |wann |Ve |Và |Und |Un |ugeholl |Too right |Thurh |Thì |Then y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit |Siis |Și |Şi |Si |Sed |Se |Så |Quando |Quand |Quan |Pryd |Potom |Pokud |Pokiaľ |Però |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Niin |Nhưng |När |Når |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar |mä |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui |Kiedy |Khi |Ketika |Kemudian |Keď |Když |Kaj |Kai |Kada |Kad |Jeżeli |Jeśli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei |Gdy |Gangway! |Fakat |Étant donnés |Etant donnés |Étant données |Etant données |Étant donnée |Etant donnée |Étant donné |Etant donné |Et |És |Entonces |Entón |Então |Entao |En |Eğer ki |Ef |Eeldades |E |Ðurh |Duota |Dun |Donitaĵo |Donat |Donada |Do |Diyelim ki |Diberi |Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |Daţi fiind |Dati fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados |Dado |Dadas |Dada |Ða ðe |Ða |Cuando |Cho |Cando |Când |Cand |Cal |But y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey! |Biết |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |Atès |Apabila |Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor |Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott |Ac |Aber |A zároveň |A tiež |A taktiež |A také |A |a |7 |\* )/)) { + state.inStep = true; + state.allowPlaceholders = true; + state.allowMultilineArgument = true; + state.inKeywordLine = true; + return "keyword"; + + // INLINE STRING + } else if (stream.match(/"[^"]*"?/)) { + return "string"; + + // PLACEHOLDER + } else if (state.allowPlaceholders && stream.match(/<[^>]*>?/)) { + return "variable"; + + // Fall through + } else { + stream.next(); + stream.eatWhile(/[^@"<#]/); + return null; + } + } + }; +}); + +CodeMirror.defineMIME("text/x-feature", "gherkin"); + +}); diff --git a/global/codemirror/mode/gherkin/index.html b/global/codemirror/mode/gherkin/index.html new file mode 100644 index 00000000..af8184c9 --- /dev/null +++ b/global/codemirror/mode/gherkin/index.html @@ -0,0 +1,48 @@ + + +CodeMirror: Gherkin mode + + + + + + + + + +
+

Gherkin mode

+
+ + +

MIME types defined: text/x-feature.

+ +
diff --git a/global/codemirror/mode/go/go.js b/global/codemirror/mode/go/go.js new file mode 100644 index 00000000..36131f10 --- /dev/null +++ b/global/codemirror/mode/go/go.js @@ -0,0 +1,187 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("go", function(config) { + var indentUnit = config.indentUnit; + + var keywords = { + "break":true, "case":true, "chan":true, "const":true, "continue":true, + "default":true, "defer":true, "else":true, "fallthrough":true, "for":true, + "func":true, "go":true, "goto":true, "if":true, "import":true, + "interface":true, "map":true, "package":true, "range":true, "return":true, + "select":true, "struct":true, "switch":true, "type":true, "var":true, + "bool":true, "byte":true, "complex64":true, "complex128":true, + "float32":true, "float64":true, "int8":true, "int16":true, "int32":true, + "int64":true, "string":true, "uint8":true, "uint16":true, "uint32":true, + "uint64":true, "int":true, "uint":true, "uintptr":true, "error": true, + "rune":true + }; + + var atoms = { + "true":true, "false":true, "iota":true, "nil":true, "append":true, + "cap":true, "close":true, "complex":true, "copy":true, "delete":true, "imag":true, + "len":true, "make":true, "new":true, "panic":true, "print":true, + "println":true, "real":true, "recover":true + }; + + var isOperatorChar = /[+\-*&^%:=<>!|\/]/; + + var curPunc; + + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'" || ch == "`") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + if (/[\d\.]/.test(ch)) { + if (ch == ".") { + stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); + } else if (ch == "0") { + stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); + } else { + stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); + } + return "number"; + } + if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + curPunc = ch; + return null; + } + if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + } + if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + stream.eatWhile(/[\w\$_\xa1-\uffff]/); + var cur = stream.current(); + if (keywords.propertyIsEnumerable(cur)) { + if (cur == "case" || cur == "default") curPunc = "case"; + return "keyword"; + } + if (atoms.propertyIsEnumerable(cur)) return "atom"; + return "variable"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) {end = true; break;} + escaped = !escaped && quote != "`" && next == "\\"; + } + if (end || !(escaped || quote == "`")) + state.tokenize = tokenBase; + return "string"; + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + function pushContext(state, col, type) { + return state.context = new Context(state.indented, col, type, null, state.context); + } + function popContext(state) { + if (!state.context.prev) return; + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") + state.indented = state.context.indented; + return state.context = state.context.prev; + } + + // Interface + + return { + startState: function(basecolumn) { + return { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + if (ctx.type == "case") ctx.type = "}"; + } + if (stream.eatSpace()) return null; + curPunc = null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment") return style; + if (ctx.align == null) ctx.align = true; + + if (curPunc == "{") pushContext(state, stream.column(), "}"); + else if (curPunc == "[") pushContext(state, stream.column(), "]"); + else if (curPunc == "(") pushContext(state, stream.column(), ")"); + else if (curPunc == "case") ctx.type = "case"; + else if (curPunc == "}" && ctx.type == "}") popContext(state); + else if (curPunc == ctx.type) popContext(state); + state.startOfLine = false; + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; + var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); + if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) { + state.context.type = "}"; + return ctx.indented; + } + var closing = firstChar == ctx.type; + if (ctx.align) return ctx.column + (closing ? 0 : 1); + else return ctx.indented + (closing ? 0 : indentUnit); + }, + + electricChars: "{}):", + closeBrackets: "()[]{}''\"\"``", + fold: "brace", + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//" + }; +}); + +CodeMirror.defineMIME("text/x-go", "go"); + +}); diff --git a/global/codemirror/mode/go/index.html b/global/codemirror/mode/go/index.html new file mode 100644 index 00000000..72e3b364 --- /dev/null +++ b/global/codemirror/mode/go/index.html @@ -0,0 +1,85 @@ + + +CodeMirror: Go mode + + + + + + + + + + + +
+

Go mode

+
+ + + +

MIME type: text/x-go

+
diff --git a/global/codemirror/mode/groovy/groovy.js b/global/codemirror/mode/groovy/groovy.js new file mode 100644 index 00000000..0df97dd0 --- /dev/null +++ b/global/codemirror/mode/groovy/groovy.js @@ -0,0 +1,230 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("groovy", function(config) { + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + var keywords = words( + "abstract as assert boolean break byte case catch char class const continue def default " + + "do double else enum extends final finally float for goto if implements import in " + + "instanceof int interface long native new package private protected public return " + + "short static strictfp super switch synchronized threadsafe throw throws trait transient " + + "try void volatile while"); + var blockKeywords = words("catch class def do else enum finally for if interface switch trait try while"); + var standaloneKeywords = words("return break continue"); + var atoms = words("null true false this"); + + var curPunc; + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") { + return startString(ch, stream, state); + } + if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + curPunc = ch; + return null; + } + if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + if (stream.eat(/eE/)) { stream.eat(/\+\-/); stream.eatWhile(/\d/); } + return "number"; + } + if (ch == "/") { + if (stream.eat("*")) { + state.tokenize.push(tokenComment); + return tokenComment(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + if (expectExpression(state.lastToken, false)) { + return startString(ch, stream, state); + } + } + if (ch == "-" && stream.eat(">")) { + curPunc = "->"; + return null; + } + if (/[+\-*&%=<>!?|\/~]/.test(ch)) { + stream.eatWhile(/[+\-*&%=<>|~]/); + return "operator"; + } + stream.eatWhile(/[\w\$_]/); + if (ch == "@") { stream.eatWhile(/[\w\$_\.]/); return "meta"; } + if (state.lastToken == ".") return "property"; + if (stream.eat(":")) { curPunc = "proplabel"; return "property"; } + var cur = stream.current(); + if (atoms.propertyIsEnumerable(cur)) { return "atom"; } + if (keywords.propertyIsEnumerable(cur)) { + if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; + else if (standaloneKeywords.propertyIsEnumerable(cur)) curPunc = "standalone"; + return "keyword"; + } + return "variable"; + } + tokenBase.isBase = true; + + function startString(quote, stream, state) { + var tripleQuoted = false; + if (quote != "/" && stream.eat(quote)) { + if (stream.eat(quote)) tripleQuoted = true; + else return "string"; + } + function t(stream, state) { + var escaped = false, next, end = !tripleQuoted; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) { + if (!tripleQuoted) { break; } + if (stream.match(quote + quote)) { end = true; break; } + } + if (quote == '"' && next == "$" && !escaped && stream.eat("{")) { + state.tokenize.push(tokenBaseUntilBrace()); + return "string"; + } + escaped = !escaped && next == "\\"; + } + if (end) state.tokenize.pop(); + return "string"; + } + state.tokenize.push(t); + return t(stream, state); + } + + function tokenBaseUntilBrace() { + var depth = 1; + function t(stream, state) { + if (stream.peek() == "}") { + depth--; + if (depth == 0) { + state.tokenize.pop(); + return state.tokenize[state.tokenize.length-1](stream, state); + } + } else if (stream.peek() == "{") { + depth++; + } + return tokenBase(stream, state); + } + t.isBase = true; + return t; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize.pop(); + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function expectExpression(last, newline) { + return !last || last == "operator" || last == "->" || /[\.\[\{\(,;:]/.test(last) || + last == "newstatement" || last == "keyword" || last == "proplabel" || + (last == "standalone" && !newline); + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + function pushContext(state, col, type) { + return state.context = new Context(state.indented, col, type, null, state.context); + } + function popContext(state) { + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") + state.indented = state.context.indented; + return state.context = state.context.prev; + } + + // Interface + + return { + startState: function(basecolumn) { + return { + tokenize: [tokenBase], + context: new Context((basecolumn || 0) - config.indentUnit, 0, "top", false), + indented: 0, + startOfLine: true, + lastToken: null + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + // Automatic semicolon insertion + if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) { + popContext(state); ctx = state.context; + } + } + if (stream.eatSpace()) return null; + curPunc = null; + var style = state.tokenize[state.tokenize.length-1](stream, state); + if (style == "comment") return style; + if (ctx.align == null) ctx.align = true; + + if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); + // Handle indentation for {x -> \n ... } + else if (curPunc == "->" && ctx.type == "statement" && ctx.prev.type == "}") { + popContext(state); + state.context.align = false; + } + else if (curPunc == "{") pushContext(state, stream.column(), "}"); + else if (curPunc == "[") pushContext(state, stream.column(), "]"); + else if (curPunc == "(") pushContext(state, stream.column(), ")"); + else if (curPunc == "}") { + while (ctx.type == "statement") ctx = popContext(state); + if (ctx.type == "}") ctx = popContext(state); + while (ctx.type == "statement") ctx = popContext(state); + } + else if (curPunc == ctx.type) popContext(state); + else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) + pushContext(state, stream.column(), "statement"); + state.startOfLine = false; + state.lastToken = curPunc || style; + return style; + }, + + indent: function(state, textAfter) { + if (!state.tokenize[state.tokenize.length-1].isBase) return CodeMirror.Pass; + var firstChar = textAfter && textAfter.charAt(0), ctx = state.context; + if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) ctx = ctx.prev; + var closing = firstChar == ctx.type; + if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : config.indentUnit); + else if (ctx.align) return ctx.column + (closing ? 0 : 1); + else return ctx.indented + (closing ? 0 : config.indentUnit); + }, + + electricChars: "{}", + closeBrackets: {triples: "'\""}, + fold: "brace" + }; +}); + +CodeMirror.defineMIME("text/x-groovy", "groovy"); + +}); diff --git a/global/codemirror/mode/groovy/index.html b/global/codemirror/mode/groovy/index.html new file mode 100644 index 00000000..bb0df078 --- /dev/null +++ b/global/codemirror/mode/groovy/index.html @@ -0,0 +1,84 @@ + + +CodeMirror: Groovy mode + + + + + + + + + + +
+

Groovy mode

+
+ + + +

MIME types defined: text/x-groovy

+
diff --git a/global/codemirror/mode/haml/haml.js b/global/codemirror/mode/haml/haml.js new file mode 100644 index 00000000..20ae1e19 --- /dev/null +++ b/global/codemirror/mode/haml/haml.js @@ -0,0 +1,161 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + + // full haml mode. This handled embedded ruby and html fragments too + CodeMirror.defineMode("haml", function(config) { + var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); + var rubyMode = CodeMirror.getMode(config, "ruby"); + + function rubyInQuote(endQuote) { + return function(stream, state) { + var ch = stream.peek(); + if (ch == endQuote && state.rubyState.tokenize.length == 1) { + // step out of ruby context as it seems to complete processing all the braces + stream.next(); + state.tokenize = html; + return "closeAttributeTag"; + } else { + return ruby(stream, state); + } + }; + } + + function ruby(stream, state) { + if (stream.match("-#")) { + stream.skipToEnd(); + return "comment"; + } + return rubyMode.token(stream, state.rubyState); + } + + function html(stream, state) { + var ch = stream.peek(); + + // handle haml declarations. All declarations that cant be handled here + // will be passed to html mode + if (state.previousToken.style == "comment" ) { + if (state.indented > state.previousToken.indented) { + stream.skipToEnd(); + return "commentLine"; + } + } + + if (state.startOfLine) { + if (ch == "!" && stream.match("!!")) { + stream.skipToEnd(); + return "tag"; + } else if (stream.match(/^%[\w:#\.]+=/)) { + state.tokenize = ruby; + return "hamlTag"; + } else if (stream.match(/^%[\w:]+/)) { + return "hamlTag"; + } else if (ch == "/" ) { + stream.skipToEnd(); + return "comment"; + } + } + + if (state.startOfLine || state.previousToken.style == "hamlTag") { + if ( ch == "#" || ch == ".") { + stream.match(/[\w-#\.]*/); + return "hamlAttribute"; + } + } + + // donot handle --> as valid ruby, make it HTML close comment instead + if (state.startOfLine && !stream.match("-->", false) && (ch == "=" || ch == "-" )) { + state.tokenize = ruby; + return state.tokenize(stream, state); + } + + if (state.previousToken.style == "hamlTag" || + state.previousToken.style == "closeAttributeTag" || + state.previousToken.style == "hamlAttribute") { + if (ch == "(") { + state.tokenize = rubyInQuote(")"); + return state.tokenize(stream, state); + } else if (ch == "{") { + if (!stream.match(/^\{%.*/)) { + state.tokenize = rubyInQuote("}"); + return state.tokenize(stream, state); + } + } + } + + return htmlMode.token(stream, state.htmlState); + } + + return { + // default to html mode + startState: function() { + var htmlState = CodeMirror.startState(htmlMode); + var rubyState = CodeMirror.startState(rubyMode); + return { + htmlState: htmlState, + rubyState: rubyState, + indented: 0, + previousToken: { style: null, indented: 0}, + tokenize: html + }; + }, + + copyState: function(state) { + return { + htmlState : CodeMirror.copyState(htmlMode, state.htmlState), + rubyState: CodeMirror.copyState(rubyMode, state.rubyState), + indented: state.indented, + previousToken: state.previousToken, + tokenize: state.tokenize + }; + }, + + token: function(stream, state) { + if (stream.sol()) { + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + state.startOfLine = false; + // dont record comment line as we only want to measure comment line with + // the opening comment block + if (style && style != "commentLine") { + state.previousToken = { style: style, indented: state.indented }; + } + // if current state is ruby and the previous token is not `,` reset the + // tokenize to html + if (stream.eol() && state.tokenize == ruby) { + stream.backUp(1); + var ch = stream.peek(); + stream.next(); + if (ch && ch != ",") { + state.tokenize = html; + } + } + // reprocess some of the specific style tag when finish setting previousToken + if (style == "hamlTag") { + style = "tag"; + } else if (style == "commentLine") { + style = "comment"; + } else if (style == "hamlAttribute") { + style = "attribute"; + } else if (style == "closeAttributeTag") { + style = null; + } + return style; + } + }; + }, "htmlmixed", "ruby"); + + CodeMirror.defineMIME("text/x-haml", "haml"); +}); diff --git a/global/codemirror/mode/haml/index.html b/global/codemirror/mode/haml/index.html new file mode 100644 index 00000000..2894a938 --- /dev/null +++ b/global/codemirror/mode/haml/index.html @@ -0,0 +1,79 @@ + + +CodeMirror: HAML mode + + + + + + + + + + + + + +
+

HAML mode

+
+ + +

MIME types defined: text/x-haml.

+ +

Parsing/Highlighting Tests: normal, verbose.

+ +
diff --git a/global/codemirror/mode/haml/test.js b/global/codemirror/mode/haml/test.js new file mode 100644 index 00000000..508458a4 --- /dev/null +++ b/global/codemirror/mode/haml/test.js @@ -0,0 +1,97 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "haml"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + // Requires at least one media query + MT("elementName", + "[tag %h1] Hey There"); + + MT("oneElementPerLine", + "[tag %h1] Hey There %h2"); + + MT("idSelector", + "[tag %h1][attribute #test] Hey There"); + + MT("classSelector", + "[tag %h1][attribute .hello] Hey There"); + + MT("docType", + "[tag !!! XML]"); + + MT("comment", + "[comment / Hello WORLD]"); + + MT("notComment", + "[tag %h1] This is not a / comment "); + + MT("attributes", + "[tag %a]([variable title][operator =][string \"test\"]){[atom :title] [operator =>] [string \"test\"]}"); + + MT("htmlCode", + "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket ]"); + + MT("rubyBlock", + "[operator =][variable-2 @item]"); + + MT("selectorRubyBlock", + "[tag %a.selector=] [variable-2 @item]"); + + MT("nestedRubyBlock", + "[tag %a]", + " [operator =][variable puts] [string \"test\"]"); + + MT("multilinePlaintext", + "[tag %p]", + " Hello,", + " World"); + + MT("multilineRuby", + "[tag %p]", + " [comment -# this is a comment]", + " [comment and this is a comment too]", + " Date/Time", + " [operator -] [variable now] [operator =] [tag DateTime][operator .][property now]", + " [tag %strong=] [variable now]", + " [operator -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", + " [operator =][string \"Happy\"]", + " [operator =][string \"Belated\"]", + " [operator =][string \"Birthday\"]"); + + MT("multilineComment", + "[comment /]", + " [comment Multiline]", + " [comment Comment]"); + + MT("hamlComment", + "[comment -# this is a comment]"); + + MT("multilineHamlComment", + "[comment -# this is a comment]", + " [comment and this is a comment too]"); + + MT("multilineHTMLComment", + "[comment ]"); + + MT("hamlAfterRubyTag", + "[attribute .block]", + " [tag %strong=] [variable now]", + " [attribute .test]", + " [operator =][variable now]", + " [attribute .right]"); + + MT("stretchedRuby", + "[operator =] [variable puts] [string \"Hello\"],", + " [string \"World\"]"); + + MT("interpolationInHashAttribute", + //"[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); + "[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); + + MT("interpolationInHTMLAttribute", + "[tag %div]([variable title][operator =][string \"#{][variable test][string }_#{][variable ting]()[string }\"]) Test"); +})(); diff --git a/global/codemirror/mode/handlebars/handlebars.js b/global/codemirror/mode/handlebars/handlebars.js new file mode 100644 index 00000000..2174e538 --- /dev/null +++ b/global/codemirror/mode/handlebars/handlebars.js @@ -0,0 +1,62 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../../addon/mode/simple"), require("../../addon/mode/multiplex")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../../addon/mode/simple", "../../addon/mode/multiplex"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineSimpleMode("handlebars-tags", { + start: [ + { regex: /\{\{!--/, push: "dash_comment", token: "comment" }, + { regex: /\{\{!/, push: "comment", token: "comment" }, + { regex: /\{\{/, push: "handlebars", token: "tag" } + ], + handlebars: [ + { regex: /\}\}/, pop: true, token: "tag" }, + + // Double and single quotes + { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" }, + { regex: /'(?:[^\\']|\\.)*'?/, token: "string" }, + + // Handlebars keywords + { regex: />|[#\/]([A-Za-z_]\w*)/, token: "keyword" }, + { regex: /(?:else|this)\b/, token: "keyword" }, + + // Numeral + { regex: /\d+/i, token: "number" }, + + // Atoms like = and . + { regex: /=|~|@|true|false/, token: "atom" }, + + // Paths + { regex: /(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/, token: "variable-2" } + ], + dash_comment: [ + { regex: /--\}\}/, pop: true, token: "comment" }, + + // Commented code + { regex: /./, token: "comment"} + ], + comment: [ + { regex: /\}\}/, pop: true, token: "comment" }, + { regex: /./, token: "comment" } + ] + }); + + CodeMirror.defineMode("handlebars", function(config, parserConfig) { + var handlebars = CodeMirror.getMode(config, "handlebars-tags"); + if (!parserConfig || !parserConfig.base) return handlebars; + return CodeMirror.multiplexingMode( + CodeMirror.getMode(config, parserConfig.base), + {open: "{{", close: "}}", mode: handlebars, parseDelimiters: true} + ); + }); + + CodeMirror.defineMIME("text/x-handlebars-template", "handlebars"); +}); diff --git a/global/codemirror/mode/handlebars/index.html b/global/codemirror/mode/handlebars/index.html new file mode 100644 index 00000000..b1bfad1c --- /dev/null +++ b/global/codemirror/mode/handlebars/index.html @@ -0,0 +1,79 @@ + + +CodeMirror: Handlebars mode + + + + + + + + + + + + +
+

Handlebars

+
+ + +

Handlebars syntax highlighting for CodeMirror.

+ +

MIME types defined: text/x-handlebars-template

+ +

Supported options: base to set the mode to + wrap. For example, use

+
mode: {name: "handlebars", base: "text/html"}
+

to highlight an HTML template.

+
diff --git a/global/codemirror/mode/haskell-literate/haskell-literate.js b/global/codemirror/mode/haskell-literate/haskell-literate.js new file mode 100644 index 00000000..906415b4 --- /dev/null +++ b/global/codemirror/mode/haskell-literate/haskell-literate.js @@ -0,0 +1,43 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function (mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../haskell/haskell")) + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../haskell/haskell"], mod) + else // Plain browser env + mod(CodeMirror) +})(function (CodeMirror) { + "use strict" + + CodeMirror.defineMode("haskell-literate", function (config, parserConfig) { + var baseMode = CodeMirror.getMode(config, (parserConfig && parserConfig.base) || "haskell") + + return { + startState: function () { + return { + inCode: false, + baseState: CodeMirror.startState(baseMode) + } + }, + token: function (stream, state) { + if (stream.sol()) { + if (state.inCode = stream.eat(">")) + return "meta" + } + if (state.inCode) { + return baseMode.token(stream, state.baseState) + } else { + stream.skipToEnd() + return "comment" + } + }, + innerMode: function (state) { + return state.inCode ? {state: state.baseState, mode: baseMode} : null + } + } + }, "haskell") + + CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate") +}); diff --git a/global/codemirror/mode/haskell-literate/index.html b/global/codemirror/mode/haskell-literate/index.html new file mode 100644 index 00000000..8c9bc60d --- /dev/null +++ b/global/codemirror/mode/haskell-literate/index.html @@ -0,0 +1,282 @@ + + +CodeMirror: Haskell-literate mode + + + + + + + + + + +
+

Haskell literate mode

+
+ +
+ +

MIME types + defined: text/x-literate-haskell.

+ +

Parser configuration parameters recognized: base to + set the base mode (defaults to "haskell").

+ + + +
diff --git a/global/codemirror/mode/haskell/haskell.js b/global/codemirror/mode/haskell/haskell.js new file mode 100644 index 00000000..4197666a --- /dev/null +++ b/global/codemirror/mode/haskell/haskell.js @@ -0,0 +1,267 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("haskell", function(_config, modeConfig) { + + function switchState(source, setState, f) { + setState(f); + return f(source, setState); + } + + // These should all be Unicode extended, as per the Haskell 2010 report + var smallRE = /[a-z_]/; + var largeRE = /[A-Z]/; + var digitRE = /\d/; + var hexitRE = /[0-9A-Fa-f]/; + var octitRE = /[0-7]/; + var idRE = /[a-z_A-Z0-9'\xa1-\uffff]/; + var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/; + var specialRE = /[(),;[\]`{}]/; + var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer + + function normal(source, setState) { + if (source.eatWhile(whiteCharRE)) { + return null; + } + + var ch = source.next(); + if (specialRE.test(ch)) { + if (ch == '{' && source.eat('-')) { + var t = "comment"; + if (source.eat('#')) { + t = "meta"; + } + return switchState(source, setState, ncomment(t, 1)); + } + return null; + } + + if (ch == '\'') { + if (source.eat('\\')) { + source.next(); // should handle other escapes here + } + else { + source.next(); + } + if (source.eat('\'')) { + return "string"; + } + return "string error"; + } + + if (ch == '"') { + return switchState(source, setState, stringLiteral); + } + + if (largeRE.test(ch)) { + source.eatWhile(idRE); + if (source.eat('.')) { + return "qualifier"; + } + return "variable-2"; + } + + if (smallRE.test(ch)) { + source.eatWhile(idRE); + return "variable"; + } + + if (digitRE.test(ch)) { + if (ch == '0') { + if (source.eat(/[xX]/)) { + source.eatWhile(hexitRE); // should require at least 1 + return "integer"; + } + if (source.eat(/[oO]/)) { + source.eatWhile(octitRE); // should require at least 1 + return "number"; + } + } + source.eatWhile(digitRE); + var t = "number"; + if (source.match(/^\.\d+/)) { + t = "number"; + } + if (source.eat(/[eE]/)) { + t = "number"; + source.eat(/[-+]/); + source.eatWhile(digitRE); // should require at least 1 + } + return t; + } + + if (ch == "." && source.eat(".")) + return "keyword"; + + if (symbolRE.test(ch)) { + if (ch == '-' && source.eat(/-/)) { + source.eatWhile(/-/); + if (!source.eat(symbolRE)) { + source.skipToEnd(); + return "comment"; + } + } + var t = "variable"; + if (ch == ':') { + t = "variable-2"; + } + source.eatWhile(symbolRE); + return t; + } + + return "error"; + } + + function ncomment(type, nest) { + if (nest == 0) { + return normal; + } + return function(source, setState) { + var currNest = nest; + while (!source.eol()) { + var ch = source.next(); + if (ch == '{' && source.eat('-')) { + ++currNest; + } + else if (ch == '-' && source.eat('}')) { + --currNest; + if (currNest == 0) { + setState(normal); + return type; + } + } + } + setState(ncomment(type, currNest)); + return type; + }; + } + + function stringLiteral(source, setState) { + while (!source.eol()) { + var ch = source.next(); + if (ch == '"') { + setState(normal); + return "string"; + } + if (ch == '\\') { + if (source.eol() || source.eat(whiteCharRE)) { + setState(stringGap); + return "string"; + } + if (source.eat('&')) { + } + else { + source.next(); // should handle other escapes here + } + } + } + setState(normal); + return "string error"; + } + + function stringGap(source, setState) { + if (source.eat('\\')) { + return switchState(source, setState, stringLiteral); + } + source.next(); + setState(normal); + return "error"; + } + + + var wellKnownWords = (function() { + var wkw = {}; + function setType(t) { + return function () { + for (var i = 0; i < arguments.length; i++) + wkw[arguments[i]] = t; + }; + } + + setType("keyword")( + "case", "class", "data", "default", "deriving", "do", "else", "foreign", + "if", "import", "in", "infix", "infixl", "infixr", "instance", "let", + "module", "newtype", "of", "then", "type", "where", "_"); + + setType("keyword")( + "\.\.", ":", "::", "=", "\\", "<-", "->", "@", "~", "=>"); + + setType("builtin")( + "!!", "$!", "$", "&&", "+", "++", "-", ".", "/", "/=", "<", "<=", "=<<", + "==", ">", ">=", ">>", ">>=", "^", "^^", "||", "*", "**"); + + setType("builtin")( + "Bool", "Bounded", "Char", "Double", "EQ", "Either", "Enum", "Eq", + "False", "FilePath", "Float", "Floating", "Fractional", "Functor", "GT", + "IO", "IOError", "Int", "Integer", "Integral", "Just", "LT", "Left", + "Maybe", "Monad", "Nothing", "Num", "Ord", "Ordering", "Rational", "Read", + "ReadS", "Real", "RealFloat", "RealFrac", "Right", "Show", "ShowS", + "String", "True"); + + setType("builtin")( + "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf", + "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling", + "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", + "cycle", "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", + "elem", "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", + "enumFromTo", "error", "even", "exp", "exponent", "fail", "filter", + "flip", "floatDigits", "floatRadix", "floatRange", "floor", "fmap", + "foldl", "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", + "fromIntegral", "fromRational", "fst", "gcd", "getChar", "getContents", + "getLine", "head", "id", "init", "interact", "ioError", "isDenormalized", + "isIEEE", "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", + "lcm", "length", "lex", "lines", "log", "logBase", "lookup", "map", + "mapM", "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound", + "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or", + "otherwise", "pi", "pred", "print", "product", "properFraction", + "putChar", "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", + "readIO", "readList", "readLn", "readParen", "reads", "readsPrec", + "realToFrac", "recip", "rem", "repeat", "replicate", "return", "reverse", + "round", "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", + "sequence", "sequence_", "show", "showChar", "showList", "showParen", + "showString", "shows", "showsPrec", "significand", "signum", "sin", + "sinh", "snd", "span", "splitAt", "sqrt", "subtract", "succ", "sum", + "tail", "take", "takeWhile", "tan", "tanh", "toEnum", "toInteger", + "toRational", "truncate", "uncurry", "undefined", "unlines", "until", + "unwords", "unzip", "unzip3", "userError", "words", "writeFile", "zip", + "zip3", "zipWith", "zipWith3"); + + var override = modeConfig.overrideKeywords; + if (override) for (var word in override) if (override.hasOwnProperty(word)) + wkw[word] = override[word]; + + return wkw; + })(); + + + + return { + startState: function () { return { f: normal }; }, + copyState: function (s) { return { f: s.f }; }, + + token: function(stream, state) { + var t = state.f(stream, function(s) { state.f = s; }); + var w = stream.current(); + return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t; + }, + + blockCommentStart: "{-", + blockCommentEnd: "-}", + lineComment: "--" + }; + +}); + +CodeMirror.defineMIME("text/x-haskell", "haskell"); + +}); diff --git a/global/codemirror/mode/haskell/index.html b/global/codemirror/mode/haskell/index.html new file mode 100644 index 00000000..42240b0f --- /dev/null +++ b/global/codemirror/mode/haskell/index.html @@ -0,0 +1,73 @@ + + +CodeMirror: Haskell mode + + + + + + + + + + + +
+

Haskell mode

+
+ + + +

MIME types defined: text/x-haskell.

+
diff --git a/global/codemirror/mode/haxe/haxe.js b/global/codemirror/mode/haxe/haxe.js new file mode 100644 index 00000000..d159d082 --- /dev/null +++ b/global/codemirror/mode/haxe/haxe.js @@ -0,0 +1,515 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("haxe", function(config, parserConfig) { + var indentUnit = config.indentUnit; + + // Tokenizer + + function kw(type) {return {type: type, style: "keyword"};} + var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); + var operator = kw("operator"), atom = {type: "atom", style: "atom"}, attribute = {type:"attribute", style: "attribute"}; + var type = kw("typedef"); + var keywords = { + "if": A, "while": A, "else": B, "do": B, "try": B, + "return": C, "break": C, "continue": C, "new": C, "throw": C, + "var": kw("var"), "inline":attribute, "static": attribute, "using":kw("import"), + "public": attribute, "private": attribute, "cast": kw("cast"), "import": kw("import"), "macro": kw("macro"), + "function": kw("function"), "catch": kw("catch"), "untyped": kw("untyped"), "callback": kw("cb"), + "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), + "in": operator, "never": kw("property_access"), "trace":kw("trace"), + "class": type, "abstract":type, "enum":type, "interface":type, "typedef":type, "extends":type, "implements":type, "dynamic":type, + "true": atom, "false": atom, "null": atom + }; + + var isOperatorChar = /[+\-*&%=<>!?|]/; + + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + + function toUnescaped(stream, end) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (next == end && !escaped) + return true; + escaped = !escaped && next == "\\"; + } + } + + // Used as scratch variables to communicate multiple values without + // consing up tons of objects. + var type, content; + function ret(tp, style, cont) { + type = tp; content = cont; + return style; + } + + function haxeTokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") { + return chain(stream, state, haxeTokenString(ch)); + } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + return ret(ch); + } else if (ch == "0" && stream.eat(/x/i)) { + stream.eatWhile(/[\da-f]/i); + return ret("number", "number"); + } else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) { + stream.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/); + return ret("number", "number"); + } else if (state.reAllowed && (ch == "~" && stream.eat(/\//))) { + toUnescaped(stream, "/"); + stream.eatWhile(/[gimsu]/); + return ret("regexp", "string-2"); + } else if (ch == "/") { + if (stream.eat("*")) { + return chain(stream, state, haxeTokenComment); + } else if (stream.eat("/")) { + stream.skipToEnd(); + return ret("comment", "comment"); + } else { + stream.eatWhile(isOperatorChar); + return ret("operator", null, stream.current()); + } + } else if (ch == "#") { + stream.skipToEnd(); + return ret("conditional", "meta"); + } else if (ch == "@") { + stream.eat(/:/); + stream.eatWhile(/[\w_]/); + return ret ("metadata", "meta"); + } else if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return ret("operator", null, stream.current()); + } else { + var word; + if(/[A-Z]/.test(ch)) { + stream.eatWhile(/[\w_<>]/); + word = stream.current(); + return ret("type", "variable-3", word); + } else { + stream.eatWhile(/[\w_]/); + var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; + return (known && state.kwAllowed) ? ret(known.type, known.style, word) : + ret("variable", "variable", word); + } + } + } + + function haxeTokenString(quote) { + return function(stream, state) { + if (toUnescaped(stream, quote)) + state.tokenize = haxeTokenBase; + return ret("string", "string"); + }; + } + + function haxeTokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = haxeTokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "comment"); + } + + // Parser + + var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true}; + + function HaxeLexical(indented, column, type, align, prev, info) { + this.indented = indented; + this.column = column; + this.type = type; + this.prev = prev; + this.info = info; + if (align != null) this.align = align; + } + + function inScope(state, varname) { + for (var v = state.localVars; v; v = v.next) + if (v.name == varname) return true; + } + + function parseHaxe(state, style, type, content, stream) { + var cc = state.cc; + // Communicate our context to the combinators. + // (Less wasteful than consing up a hundred closures on every call.) + cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; + + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = true; + + while(true) { + var combinator = cc.length ? cc.pop() : statement; + if (combinator(type, content)) { + while(cc.length && cc[cc.length - 1].lex) + cc.pop()(); + if (cx.marked) return cx.marked; + if (type == "variable" && inScope(state, content)) return "variable-2"; + if (type == "variable" && imported(state, content)) return "variable-3"; + return style; + } + } + } + + function imported(state, typename) { + if (/[a-z]/.test(typename.charAt(0))) + return false; + var len = state.importedtypes.length; + for (var i = 0; i= 0; i--) cx.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + function inList(name, list) { + for (var v = list; v; v = v.next) + if (v.name == name) return true; + return false; + } + function register(varname) { + var state = cx.state; + if (state.context) { + cx.marked = "def"; + if (inList(varname, state.localVars)) return; + state.localVars = {name: varname, next: state.localVars}; + } else if (state.globalVars) { + if (inList(varname, state.globalVars)) return; + state.globalVars = {name: varname, next: state.globalVars}; + } + } + + // Combinators + + var defaultVars = {name: "this", next: null}; + function pushcontext() { + if (!cx.state.context) cx.state.localVars = defaultVars; + cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; + } + function popcontext() { + cx.state.localVars = cx.state.context.vars; + cx.state.context = cx.state.context.prev; + } + popcontext.lex = true; + function pushlex(type, info) { + var result = function() { + var state = cx.state; + state.lexical = new HaxeLexical(state.indented, cx.stream.column(), type, null, state.lexical, info); + }; + result.lex = true; + return result; + } + function poplex() { + var state = cx.state; + if (state.lexical.prev) { + if (state.lexical.type == ")") + state.indented = state.lexical.indented; + state.lexical = state.lexical.prev; + } + } + poplex.lex = true; + + function expect(wanted) { + function f(type) { + if (type == wanted) return cont(); + else if (wanted == ";") return pass(); + else return cont(f); + } + return f; + } + + function statement(type) { + if (type == "@") return cont(metadef); + if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); + if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); + if (type == "keyword b") return cont(pushlex("form"), statement, poplex); + if (type == "{") return cont(pushlex("}"), pushcontext, block, poplex, popcontext); + if (type == ";") return cont(); + if (type == "attribute") return cont(maybeattribute); + if (type == "function") return cont(functiondef); + if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), + poplex, statement, poplex); + if (type == "variable") return cont(pushlex("stat"), maybelabel); + if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), + block, poplex, poplex); + if (type == "case") return cont(expression, expect(":")); + if (type == "default") return cont(expect(":")); + if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), + statement, poplex, popcontext); + if (type == "import") return cont(importdef, expect(";")); + if (type == "typedef") return cont(typedef); + return pass(pushlex("stat"), expression, expect(";"), poplex); + } + function expression(type) { + if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator); + if (type == "type" ) return cont(maybeoperator); + if (type == "function") return cont(functiondef); + if (type == "keyword c") return cont(maybeexpression); + if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeoperator); + if (type == "operator") return cont(expression); + if (type == "[") return cont(pushlex("]"), commasep(maybeexpression, "]"), poplex, maybeoperator); + if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator); + return cont(); + } + function maybeexpression(type) { + if (type.match(/[;\}\)\],]/)) return pass(); + return pass(expression); + } + + function maybeoperator(type, value) { + if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator); + if (type == "operator" || type == ":") return cont(expression); + if (type == ";") return; + if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator); + if (type == ".") return cont(property, maybeoperator); + if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator); + } + + function maybeattribute(type) { + if (type == "attribute") return cont(maybeattribute); + if (type == "function") return cont(functiondef); + if (type == "var") return cont(vardef1); + } + + function metadef(type) { + if(type == ":") return cont(metadef); + if(type == "variable") return cont(metadef); + if(type == "(") return cont(pushlex(")"), commasep(metaargs, ")"), poplex, statement); + } + function metaargs(type) { + if(type == "variable") return cont(); + } + + function importdef (type, value) { + if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } + else if(type == "variable" || type == "property" || type == "." || value == "*") return cont(importdef); + } + + function typedef (type, value) + { + if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } + else if (type == "type" && /[A-Z]/.test(value.charAt(0))) { return cont(); } + } + + function maybelabel(type) { + if (type == ":") return cont(poplex, statement); + return pass(maybeoperator, expect(";"), poplex); + } + function property(type) { + if (type == "variable") {cx.marked = "property"; return cont();} + } + function objprop(type) { + if (type == "variable") cx.marked = "property"; + if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression); + } + function commasep(what, end) { + function proceed(type) { + if (type == ",") return cont(what, proceed); + if (type == end) return cont(); + return cont(expect(end)); + } + return function(type) { + if (type == end) return cont(); + else return pass(what, proceed); + }; + } + function block(type) { + if (type == "}") return cont(); + return pass(statement, block); + } + function vardef1(type, value) { + if (type == "variable"){register(value); return cont(typeuse, vardef2);} + return cont(); + } + function vardef2(type, value) { + if (value == "=") return cont(expression, vardef2); + if (type == ",") return cont(vardef1); + } + function forspec1(type, value) { + if (type == "variable") { + register(value); + return cont(forin, expression) + } else { + return pass() + } + } + function forin(_type, value) { + if (value == "in") return cont(); + } + function functiondef(type, value) { + //function names starting with upper-case letters are recognised as types, so cludging them together here. + if (type == "variable" || type == "type") {register(value); return cont(functiondef);} + if (value == "new") return cont(functiondef); + if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, typeuse, statement, popcontext); + } + function typeuse(type) { + if(type == ":") return cont(typestring); + } + function typestring(type) { + if(type == "type") return cont(); + if(type == "variable") return cont(); + if(type == "{") return cont(pushlex("}"), commasep(typeprop, "}"), poplex); + } + function typeprop(type) { + if(type == "variable") return cont(typeuse); + } + function funarg(type, value) { + if (type == "variable") {register(value); return cont(typeuse);} + } + + // Interface + return { + startState: function(basecolumn) { + var defaulttypes = ["Int", "Float", "String", "Void", "Std", "Bool", "Dynamic", "Array"]; + var state = { + tokenize: haxeTokenBase, + reAllowed: true, + kwAllowed: true, + cc: [], + lexical: new HaxeLexical((basecolumn || 0) - indentUnit, 0, "block", false), + localVars: parserConfig.localVars, + importedtypes: defaulttypes, + context: parserConfig.localVars && {vars: parserConfig.localVars}, + indented: 0 + }; + if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") + state.globalVars = parserConfig.globalVars; + return state; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = false; + state.indented = stream.indentation(); + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (type == "comment") return style; + state.reAllowed = !!(type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/)); + state.kwAllowed = type != '.'; + return parseHaxe(state, style, type, content, stream); + }, + + indent: function(state, textAfter) { + if (state.tokenize != haxeTokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; + if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; + var type = lexical.type, closing = firstChar == type; + if (type == "vardef") return lexical.indented + 4; + else if (type == "form" && firstChar == "{") return lexical.indented; + else if (type == "stat" || type == "form") return lexical.indented + indentUnit; + else if (lexical.info == "switch" && !closing) + return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); + else if (lexical.align) return lexical.column + (closing ? 0 : 1); + else return lexical.indented + (closing ? 0 : indentUnit); + }, + + electricChars: "{}", + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//" + }; +}); + +CodeMirror.defineMIME("text/x-haxe", "haxe"); + +CodeMirror.defineMode("hxml", function () { + + return { + startState: function () { + return { + define: false, + inString: false + }; + }, + token: function (stream, state) { + var ch = stream.peek(); + var sol = stream.sol(); + + ///* comments */ + if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } + if (sol && ch == "-") { + var style = "variable-2"; + + stream.eat(/-/); + + if (stream.peek() == "-") { + stream.eat(/-/); + style = "keyword a"; + } + + if (stream.peek() == "D") { + stream.eat(/[D]/); + style = "keyword c"; + state.define = true; + } + + stream.eatWhile(/[A-Z]/i); + return style; + } + + var ch = stream.peek(); + + if (state.inString == false && ch == "'") { + state.inString = true; + stream.next(); + } + + if (state.inString == true) { + if (stream.skipTo("'")) { + + } else { + stream.skipToEnd(); + } + + if (stream.peek() == "'") { + stream.next(); + state.inString = false; + } + + return "string"; + } + + stream.next(); + return null; + }, + lineComment: "#" + }; +}); + +CodeMirror.defineMIME("text/x-hxml", "hxml"); + +}); diff --git a/global/codemirror/mode/haxe/index.html b/global/codemirror/mode/haxe/index.html new file mode 100644 index 00000000..d415b5e1 --- /dev/null +++ b/global/codemirror/mode/haxe/index.html @@ -0,0 +1,124 @@ + + +CodeMirror: Haxe mode + + + + + + + + + +
+

Haxe mode

+ + +

+ +

Hxml mode:

+ +

+
+ + + +

MIME types defined: text/x-haxe, text/x-hxml.

+
diff --git a/global/codemirror/mode/htmlembedded/htmlembedded.js b/global/codemirror/mode/htmlembedded/htmlembedded.js new file mode 100644 index 00000000..464dc57f --- /dev/null +++ b/global/codemirror/mode/htmlembedded/htmlembedded.js @@ -0,0 +1,28 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), + require("../../addon/mode/multiplex")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../htmlmixed/htmlmixed", + "../../addon/mode/multiplex"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { + return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), { + open: parserConfig.open || parserConfig.scriptStartRegex || "<%", + close: parserConfig.close || parserConfig.scriptEndRegex || "%>", + mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec) + }); + }, "htmlmixed"); + + CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingModeSpec:"javascript"}); + CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); + CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingModeSpec:"text/x-java"}); + CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingModeSpec:"ruby"}); +}); diff --git a/global/codemirror/mode/htmlembedded/index.html b/global/codemirror/mode/htmlembedded/index.html new file mode 100644 index 00000000..9ed33cff --- /dev/null +++ b/global/codemirror/mode/htmlembedded/index.html @@ -0,0 +1,60 @@ + + +CodeMirror: Html Embedded Scripts mode + + + + + + + + + + + + + + +
+

Html Embedded Scripts mode

+
+ + + +

Mode for html embedded scripts like JSP and ASP.NET. Depends on multiplex and HtmlMixed which in turn depends on + JavaScript, CSS and XML.
Other dependencies include those of the scripting language chosen.

+ +

MIME types defined: application/x-aspx (ASP.NET), + application/x-ejs (Embedded Javascript), application/x-jsp (JavaServer Pages) + and application/x-erb

+
diff --git a/global/codemirror/mode/htmlmixed/htmlmixed.js b/global/codemirror/mode/htmlmixed/htmlmixed.js new file mode 100644 index 00000000..33398ec5 --- /dev/null +++ b/global/codemirror/mode/htmlmixed/htmlmixed.js @@ -0,0 +1,152 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + var defaultTags = { + script: [ + ["lang", /(javascript|babel)/i, "javascript"], + ["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, "javascript"], + ["type", /./, "text/plain"], + [null, null, "javascript"] + ], + style: [ + ["lang", /^css$/i, "css"], + ["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"], + ["type", /./, "text/plain"], + [null, null, "css"] + ] + }; + + function maybeBackup(stream, pat, style) { + var cur = stream.current(), close = cur.search(pat); + if (close > -1) { + stream.backUp(cur.length - close); + } else if (cur.match(/<\/?$/)) { + stream.backUp(cur.length); + if (!stream.match(pat, false)) stream.match(cur); + } + return style; + } + + var attrRegexpCache = {}; + function getAttrRegexp(attr) { + var regexp = attrRegexpCache[attr]; + if (regexp) return regexp; + return attrRegexpCache[attr] = new RegExp("\\s+" + attr + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"); + } + + function getAttrValue(text, attr) { + var match = text.match(getAttrRegexp(attr)) + return match ? /^\s*(.*?)\s*$/.exec(match[2])[1] : "" + } + + function getTagRegexp(tagName, anchored) { + return new RegExp((anchored ? "^" : "") + "<\/\s*" + tagName + "\s*>", "i"); + } + + function addTags(from, to) { + for (var tag in from) { + var dest = to[tag] || (to[tag] = []); + var source = from[tag]; + for (var i = source.length - 1; i >= 0; i--) + dest.unshift(source[i]) + } + } + + function findMatchingMode(tagInfo, tagText) { + for (var i = 0; i < tagInfo.length; i++) { + var spec = tagInfo[i]; + if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2]; + } + } + + CodeMirror.defineMode("htmlmixed", function (config, parserConfig) { + var htmlMode = CodeMirror.getMode(config, { + name: "xml", + htmlMode: true, + multilineTagIndentFactor: parserConfig.multilineTagIndentFactor, + multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag + }); + + var tags = {}; + var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes; + addTags(defaultTags, tags); + if (configTags) addTags(configTags, tags); + if (configScript) for (var i = configScript.length - 1; i >= 0; i--) + tags.script.unshift(["type", configScript[i].matches, configScript[i].mode]) + + function html(stream, state) { + var style = htmlMode.token(stream, state.htmlState), tag = /\btag\b/.test(style), tagName + if (tag && !/[<>\s\/]/.test(stream.current()) && + (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) && + tags.hasOwnProperty(tagName)) { + state.inTag = tagName + " " + } else if (state.inTag && tag && />$/.test(stream.current())) { + var inTag = /^([\S]+) (.*)/.exec(state.inTag) + state.inTag = null + var modeSpec = stream.current() == ">" && findMatchingMode(tags[inTag[1]], inTag[2]) + var mode = CodeMirror.getMode(config, modeSpec) + var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false); + state.token = function (stream, state) { + if (stream.match(endTagA, false)) { + state.token = html; + state.localState = state.localMode = null; + return null; + } + return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState)); + }; + state.localMode = mode; + state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, "")); + } else if (state.inTag) { + state.inTag += stream.current() + if (stream.eol()) state.inTag += " " + } + return style; + }; + + return { + startState: function () { + var state = CodeMirror.startState(htmlMode); + return {token: html, inTag: null, localMode: null, localState: null, htmlState: state}; + }, + + copyState: function (state) { + var local; + if (state.localState) { + local = CodeMirror.copyState(state.localMode, state.localState); + } + return {token: state.token, inTag: state.inTag, + localMode: state.localMode, localState: local, + htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; + }, + + token: function (stream, state) { + return state.token(stream, state); + }, + + indent: function (state, textAfter, line) { + if (!state.localMode || /^\s*<\//.test(textAfter)) + return htmlMode.indent(state.htmlState, textAfter); + else if (state.localMode.indent) + return state.localMode.indent(state.localState, textAfter, line); + else + return CodeMirror.Pass; + }, + + innerMode: function (state) { + return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; + } + }; + }, "xml", "javascript", "css"); + + CodeMirror.defineMIME("text/html", "htmlmixed"); +}); diff --git a/global/codemirror/mode/htmlmixed/index.html b/global/codemirror/mode/htmlmixed/index.html new file mode 100644 index 00000000..caa7546c --- /dev/null +++ b/global/codemirror/mode/htmlmixed/index.html @@ -0,0 +1,100 @@ + + +CodeMirror: HTML mixed mode + + + + + + + + + + + + + + +
+

HTML mixed mode

+
+ + +

The HTML mixed mode depends on the XML, JavaScript, and CSS modes.

+ +

It takes an optional mode configuration + option, tags, which can be used to add custom + behavior for specific tags. When given, it should be an object + mapping tag names (for example script) to arrays or + three-element arrays. Those inner arrays indicate [attributeName, + valueRegexp, modeSpec] + specifications. For example, you could use ["type", /^foo$/, + "foo"] to map the attribute type="foo" to + the foo mode. When the first two fields are null + ([null, null, "mode"]), the given mode is used for + any such tag that doesn't match any of the previously given + attributes. For example:

+ +
var myModeSpec = {
+  name: "htmlmixed",
+  tags: {
+    style: [["type", /^text/(x-)?scss$/, "text/x-scss"],
+            [null, null, "css"]],
+    custom: [[null, null, "customMode"]]
+  }
+}
+ +

MIME types defined: text/html + (redefined, only takes effect if you load this parser after the + XML parser).

+ +
diff --git a/global/codemirror/mode/http/http.js b/global/codemirror/mode/http/http.js new file mode 100644 index 00000000..9a3c5f9f --- /dev/null +++ b/global/codemirror/mode/http/http.js @@ -0,0 +1,113 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("http", function() { + function failFirstLine(stream, state) { + stream.skipToEnd(); + state.cur = header; + return "error"; + } + + function start(stream, state) { + if (stream.match(/^HTTP\/\d\.\d/)) { + state.cur = responseStatusCode; + return "keyword"; + } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) { + state.cur = requestPath; + return "keyword"; + } else { + return failFirstLine(stream, state); + } + } + + function responseStatusCode(stream, state) { + var code = stream.match(/^\d+/); + if (!code) return failFirstLine(stream, state); + + state.cur = responseStatusText; + var status = Number(code[0]); + if (status >= 100 && status < 200) { + return "positive informational"; + } else if (status >= 200 && status < 300) { + return "positive success"; + } else if (status >= 300 && status < 400) { + return "positive redirect"; + } else if (status >= 400 && status < 500) { + return "negative client-error"; + } else if (status >= 500 && status < 600) { + return "negative server-error"; + } else { + return "error"; + } + } + + function responseStatusText(stream, state) { + stream.skipToEnd(); + state.cur = header; + return null; + } + + function requestPath(stream, state) { + stream.eatWhile(/\S/); + state.cur = requestProtocol; + return "string-2"; + } + + function requestProtocol(stream, state) { + if (stream.match(/^HTTP\/\d\.\d$/)) { + state.cur = header; + return "keyword"; + } else { + return failFirstLine(stream, state); + } + } + + function header(stream) { + if (stream.sol() && !stream.eat(/[ \t]/)) { + if (stream.match(/^.*?:/)) { + return "atom"; + } else { + stream.skipToEnd(); + return "error"; + } + } else { + stream.skipToEnd(); + return "string"; + } + } + + function body(stream) { + stream.skipToEnd(); + return null; + } + + return { + token: function(stream, state) { + var cur = state.cur; + if (cur != header && cur != body && stream.eatSpace()) return null; + return cur(stream, state); + }, + + blankLine: function(state) { + state.cur = body; + }, + + startState: function() { + return {cur: start}; + } + }; +}); + +CodeMirror.defineMIME("message/http", "http"); + +}); diff --git a/global/codemirror/mode/http/index.html b/global/codemirror/mode/http/index.html new file mode 100644 index 00000000..0b8d5315 --- /dev/null +++ b/global/codemirror/mode/http/index.html @@ -0,0 +1,45 @@ + + +CodeMirror: HTTP mode + + + + + + + + + +
+

HTTP mode

+ + +
+ + + +

MIME types defined: message/http.

+
diff --git a/global/codemirror/mode/idl/idl.js b/global/codemirror/mode/idl/idl.js new file mode 100644 index 00000000..07308d71 --- /dev/null +++ b/global/codemirror/mode/idl/idl.js @@ -0,0 +1,290 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function wordRegexp(words) { + return new RegExp('^((' + words.join(')|(') + '))\\b', 'i'); + }; + + var builtinArray = [ + 'a_correlate', 'abs', 'acos', 'adapt_hist_equal', 'alog', + 'alog2', 'alog10', 'amoeba', 'annotate', 'app_user_dir', + 'app_user_dir_query', 'arg_present', 'array_equal', 'array_indices', + 'arrow', 'ascii_template', 'asin', 'assoc', 'atan', + 'axis', 'axis', 'bandpass_filter', 'bandreject_filter', 'barplot', + 'bar_plot', 'beseli', 'beselj', 'beselk', 'besely', + 'beta', 'biginteger', 'bilinear', 'bin_date', 'binary_template', + 'bindgen', 'binomial', 'bit_ffs', 'bit_population', 'blas_axpy', + 'blk_con', 'boolarr', 'boolean', 'boxplot', 'box_cursor', + 'breakpoint', 'broyden', 'bubbleplot', 'butterworth', 'bytarr', + 'byte', 'byteorder', 'bytscl', 'c_correlate', 'calendar', + 'caldat', 'call_external', 'call_function', 'call_method', + 'call_procedure', 'canny', 'catch', 'cd', 'cdf', 'ceil', + 'chebyshev', 'check_math', 'chisqr_cvf', 'chisqr_pdf', 'choldc', + 'cholsol', 'cindgen', 'cir_3pnt', 'clipboard', 'close', + 'clust_wts', 'cluster', 'cluster_tree', 'cmyk_convert', 'code_coverage', + 'color_convert', 'color_exchange', 'color_quan', 'color_range_map', + 'colorbar', 'colorize_sample', 'colormap_applicable', + 'colormap_gradient', 'colormap_rotation', 'colortable', + 'comfit', 'command_line_args', 'common', 'compile_opt', 'complex', + 'complexarr', 'complexround', 'compute_mesh_normals', 'cond', 'congrid', + 'conj', 'constrained_min', 'contour', 'contour', 'convert_coord', + 'convol', 'convol_fft', 'coord2to3', 'copy_lun', 'correlate', + 'cos', 'cosh', 'cpu', 'cramer', 'createboxplotdata', + 'create_cursor', 'create_struct', 'create_view', 'crossp', 'crvlength', + 'ct_luminance', 'cti_test', 'cursor', 'curvefit', 'cv_coord', + 'cvttobm', 'cw_animate', 'cw_animate_getp', 'cw_animate_load', + 'cw_animate_run', 'cw_arcball', 'cw_bgroup', 'cw_clr_index', + 'cw_colorsel', 'cw_defroi', 'cw_field', 'cw_filesel', 'cw_form', + 'cw_fslider', 'cw_light_editor', 'cw_light_editor_get', + 'cw_light_editor_set', 'cw_orient', 'cw_palette_editor', + 'cw_palette_editor_get', 'cw_palette_editor_set', 'cw_pdmenu', + 'cw_rgbslider', 'cw_tmpl', 'cw_zoom', 'db_exists', + 'dblarr', 'dcindgen', 'dcomplex', 'dcomplexarr', 'define_key', + 'define_msgblk', 'define_msgblk_from_file', 'defroi', 'defsysv', + 'delvar', 'dendro_plot', 'dendrogram', 'deriv', 'derivsig', + 'determ', 'device', 'dfpmin', 'diag_matrix', 'dialog_dbconnect', + 'dialog_message', 'dialog_pickfile', 'dialog_printersetup', + 'dialog_printjob', 'dialog_read_image', + 'dialog_write_image', 'dictionary', 'digital_filter', 'dilate', 'dindgen', + 'dissolve', 'dist', 'distance_measure', 'dlm_load', 'dlm_register', + 'doc_library', 'double', 'draw_roi', 'edge_dog', 'efont', + 'eigenql', 'eigenvec', 'ellipse', 'elmhes', 'emboss', + 'empty', 'enable_sysrtn', 'eof', 'eos', 'erase', + 'erf', 'erfc', 'erfcx', 'erode', 'errorplot', + 'errplot', 'estimator_filter', 'execute', 'exit', 'exp', + 'expand', 'expand_path', 'expint', 'extrac', 'extract_slice', + 'f_cvf', 'f_pdf', 'factorial', 'fft', 'file_basename', + 'file_chmod', 'file_copy', 'file_delete', 'file_dirname', + 'file_expand_path', 'file_gunzip', 'file_gzip', 'file_info', + 'file_lines', 'file_link', 'file_mkdir', 'file_move', + 'file_poll_input', 'file_readlink', 'file_same', + 'file_search', 'file_tar', 'file_test', 'file_untar', 'file_unzip', + 'file_which', 'file_zip', 'filepath', 'findgen', 'finite', + 'fix', 'flick', 'float', 'floor', 'flow3', + 'fltarr', 'flush', 'format_axis_values', 'forward_function', 'free_lun', + 'fstat', 'fulstr', 'funct', 'function', 'fv_test', + 'fx_root', 'fz_roots', 'gamma', 'gamma_ct', 'gauss_cvf', + 'gauss_pdf', 'gauss_smooth', 'gauss2dfit', 'gaussfit', + 'gaussian_function', 'gaussint', 'get_drive_list', 'get_dxf_objects', + 'get_kbrd', 'get_login_info', + 'get_lun', 'get_screen_size', 'getenv', 'getwindows', 'greg2jul', + 'grib', 'grid_input', 'grid_tps', 'grid3', 'griddata', + 'gs_iter', 'h_eq_ct', 'h_eq_int', 'hanning', 'hash', + 'hdf', 'hdf5', 'heap_free', 'heap_gc', 'heap_nosave', + 'heap_refcount', 'heap_save', 'help', 'hilbert', 'hist_2d', + 'hist_equal', 'histogram', 'hls', 'hough', 'hqr', + 'hsv', 'i18n_multibytetoutf8', + 'i18n_multibytetowidechar', 'i18n_utf8tomultibyte', + 'i18n_widechartomultibyte', + 'ibeta', 'icontour', 'iconvertcoord', 'idelete', 'identity', + 'idl_base64', 'idl_container', 'idl_validname', + 'idlexbr_assistant', 'idlitsys_createtool', + 'idlunit', 'iellipse', 'igamma', 'igetcurrent', 'igetdata', + 'igetid', 'igetproperty', 'iimage', 'image', 'image_cont', + 'image_statistics', 'image_threshold', 'imaginary', 'imap', 'indgen', + 'int_2d', 'int_3d', 'int_tabulated', 'intarr', 'interpol', + 'interpolate', 'interval_volume', 'invert', 'ioctl', 'iopen', + 'ir_filter', 'iplot', 'ipolygon', 'ipolyline', 'iputdata', + 'iregister', 'ireset', 'iresolve', 'irotate', 'isa', + 'isave', 'iscale', 'isetcurrent', 'isetproperty', 'ishft', + 'isocontour', 'isosurface', 'isurface', 'itext', 'itranslate', + 'ivector', 'ivolume', 'izoom', 'journal', 'json_parse', + 'json_serialize', 'jul2greg', 'julday', 'keyword_set', 'krig2d', + 'kurtosis', 'kw_test', 'l64indgen', 'la_choldc', 'la_cholmprove', + 'la_cholsol', 'la_determ', 'la_eigenproblem', 'la_eigenql', 'la_eigenvec', + 'la_elmhes', 'la_gm_linear_model', 'la_hqr', 'la_invert', + 'la_least_square_equality', 'la_least_squares', 'la_linear_equation', + 'la_ludc', 'la_lumprove', 'la_lusol', + 'la_svd', 'la_tridc', 'la_trimprove', 'la_triql', 'la_trired', + 'la_trisol', 'label_date', 'label_region', 'ladfit', 'laguerre', + 'lambda', 'lambdap', 'lambertw', 'laplacian', 'least_squares_filter', + 'leefilt', 'legend', 'legendre', 'linbcg', 'lindgen', + 'linfit', 'linkimage', 'list', 'll_arc_distance', 'lmfit', + 'lmgr', 'lngamma', 'lnp_test', 'loadct', 'locale_get', + 'logical_and', 'logical_or', 'logical_true', 'lon64arr', 'lonarr', + 'long', 'long64', 'lsode', 'lu_complex', 'ludc', + 'lumprove', 'lusol', 'm_correlate', 'machar', 'make_array', + 'make_dll', 'make_rt', 'map', 'mapcontinents', 'mapgrid', + 'map_2points', 'map_continents', 'map_grid', 'map_image', 'map_patch', + 'map_proj_forward', 'map_proj_image', 'map_proj_info', + 'map_proj_init', 'map_proj_inverse', + 'map_set', 'matrix_multiply', 'matrix_power', 'max', 'md_test', + 'mean', 'meanabsdev', 'mean_filter', 'median', 'memory', + 'mesh_clip', 'mesh_decimate', 'mesh_issolid', + 'mesh_merge', 'mesh_numtriangles', + 'mesh_obj', 'mesh_smooth', 'mesh_surfacearea', + 'mesh_validate', 'mesh_volume', + 'message', 'min', 'min_curve_surf', 'mk_html_help', 'modifyct', + 'moment', 'morph_close', 'morph_distance', + 'morph_gradient', 'morph_hitormiss', + 'morph_open', 'morph_thin', 'morph_tophat', 'multi', 'n_elements', + 'n_params', 'n_tags', 'ncdf', 'newton', 'noise_hurl', + 'noise_pick', 'noise_scatter', 'noise_slur', 'norm', 'obj_class', + 'obj_destroy', 'obj_hasmethod', 'obj_isa', 'obj_new', 'obj_valid', + 'objarr', 'on_error', 'on_ioerror', 'online_help', 'openr', + 'openu', 'openw', 'oplot', 'oploterr', 'orderedhash', + 'p_correlate', 'parse_url', 'particle_trace', 'path_cache', 'path_sep', + 'pcomp', 'plot', 'plot3d', 'plot', 'plot_3dbox', + 'plot_field', 'ploterr', 'plots', 'polar_contour', 'polar_surface', + 'polyfill', 'polyshade', 'pnt_line', 'point_lun', 'polarplot', + 'poly', 'poly_2d', 'poly_area', 'poly_fit', 'polyfillv', + 'polygon', 'polyline', 'polywarp', 'popd', 'powell', + 'pref_commit', 'pref_get', 'pref_set', 'prewitt', 'primes', + 'print', 'printf', 'printd', 'pro', 'product', + 'profile', 'profiler', 'profiles', 'project_vol', 'ps_show_fonts', + 'psafm', 'pseudo', 'ptr_free', 'ptr_new', 'ptr_valid', + 'ptrarr', 'pushd', 'qgrid3', 'qhull', 'qromb', + 'qromo', 'qsimp', 'query_*', 'query_ascii', 'query_bmp', + 'query_csv', 'query_dicom', 'query_gif', 'query_image', 'query_jpeg', + 'query_jpeg2000', 'query_mrsid', 'query_pict', 'query_png', 'query_ppm', + 'query_srf', 'query_tiff', 'query_video', 'query_wav', 'r_correlate', + 'r_test', 'radon', 'randomn', 'randomu', 'ranks', + 'rdpix', 'read', 'readf', 'read_ascii', 'read_binary', + 'read_bmp', 'read_csv', 'read_dicom', 'read_gif', 'read_image', + 'read_interfile', 'read_jpeg', 'read_jpeg2000', 'read_mrsid', 'read_pict', + 'read_png', 'read_ppm', 'read_spr', 'read_srf', 'read_sylk', + 'read_tiff', 'read_video', 'read_wav', 'read_wave', 'read_x11_bitmap', + 'read_xwd', 'reads', 'readu', 'real_part', 'rebin', + 'recall_commands', 'recon3', 'reduce_colors', 'reform', 'region_grow', + 'register_cursor', 'regress', 'replicate', + 'replicate_inplace', 'resolve_all', + 'resolve_routine', 'restore', 'retall', 'return', 'reverse', + 'rk4', 'roberts', 'rot', 'rotate', 'round', + 'routine_filepath', 'routine_info', 'rs_test', 's_test', 'save', + 'savgol', 'scale3', 'scale3d', 'scatterplot', 'scatterplot3d', + 'scope_level', 'scope_traceback', 'scope_varfetch', + 'scope_varname', 'search2d', + 'search3d', 'sem_create', 'sem_delete', 'sem_lock', 'sem_release', + 'set_plot', 'set_shading', 'setenv', 'sfit', 'shade_surf', + 'shade_surf_irr', 'shade_volume', 'shift', 'shift_diff', 'shmdebug', + 'shmmap', 'shmunmap', 'shmvar', 'show3', 'showfont', + 'signum', 'simplex', 'sin', 'sindgen', 'sinh', + 'size', 'skewness', 'skip_lun', 'slicer3', 'slide_image', + 'smooth', 'sobel', 'socket', 'sort', 'spawn', + 'sph_4pnt', 'sph_scat', 'spher_harm', 'spl_init', 'spl_interp', + 'spline', 'spline_p', 'sprsab', 'sprsax', 'sprsin', + 'sprstp', 'sqrt', 'standardize', 'stddev', 'stop', + 'strarr', 'strcmp', 'strcompress', 'streamline', 'streamline', + 'stregex', 'stretch', 'string', 'strjoin', 'strlen', + 'strlowcase', 'strmatch', 'strmessage', 'strmid', 'strpos', + 'strput', 'strsplit', 'strtrim', 'struct_assign', 'struct_hide', + 'strupcase', 'surface', 'surface', 'surfr', 'svdc', + 'svdfit', 'svsol', 'swap_endian', 'swap_endian_inplace', 'symbol', + 'systime', 't_cvf', 't_pdf', 't3d', 'tag_names', + 'tan', 'tanh', 'tek_color', 'temporary', 'terminal_size', + 'tetra_clip', 'tetra_surface', 'tetra_volume', 'text', 'thin', + 'thread', 'threed', 'tic', 'time_test2', 'timegen', + 'timer', 'timestamp', 'timestamptovalues', 'tm_test', 'toc', + 'total', 'trace', 'transpose', 'tri_surf', 'triangulate', + 'trigrid', 'triql', 'trired', 'trisol', 'truncate_lun', + 'ts_coef', 'ts_diff', 'ts_fcast', 'ts_smooth', 'tv', + 'tvcrs', 'tvlct', 'tvrd', 'tvscl', 'typename', + 'uindgen', 'uint', 'uintarr', 'ul64indgen', 'ulindgen', + 'ulon64arr', 'ulonarr', 'ulong', 'ulong64', 'uniq', + 'unsharp_mask', 'usersym', 'value_locate', 'variance', 'vector', + 'vector_field', 'vel', 'velovect', 'vert_t3d', 'voigt', + 'volume', 'voronoi', 'voxel_proj', 'wait', 'warp_tri', + 'watershed', 'wdelete', 'wf_draw', 'where', 'widget_base', + 'widget_button', 'widget_combobox', 'widget_control', + 'widget_displaycontextmenu', 'widget_draw', + 'widget_droplist', 'widget_event', 'widget_info', + 'widget_label', 'widget_list', + 'widget_propertysheet', 'widget_slider', 'widget_tab', + 'widget_table', 'widget_text', + 'widget_tree', 'widget_tree_move', 'widget_window', + 'wiener_filter', 'window', + 'window', 'write_bmp', 'write_csv', 'write_gif', 'write_image', + 'write_jpeg', 'write_jpeg2000', 'write_nrif', 'write_pict', 'write_png', + 'write_ppm', 'write_spr', 'write_srf', 'write_sylk', 'write_tiff', + 'write_video', 'write_wav', 'write_wave', 'writeu', 'wset', + 'wshow', 'wtn', 'wv_applet', 'wv_cwt', 'wv_cw_wavelet', + 'wv_denoise', 'wv_dwt', 'wv_fn_coiflet', + 'wv_fn_daubechies', 'wv_fn_gaussian', + 'wv_fn_haar', 'wv_fn_morlet', 'wv_fn_paul', + 'wv_fn_symlet', 'wv_import_data', + 'wv_import_wavelet', 'wv_plot3d_wps', 'wv_plot_multires', + 'wv_pwt', 'wv_tool_denoise', + 'xbm_edit', 'xdisplayfile', 'xdxf', 'xfont', 'xinteranimate', + 'xloadct', 'xmanager', 'xmng_tmpl', 'xmtool', 'xobjview', + 'xobjview_rotate', 'xobjview_write_image', + 'xpalette', 'xpcolor', 'xplot3d', + 'xregistered', 'xroi', 'xsq_test', 'xsurface', 'xvaredit', + 'xvolume', 'xvolume_rotate', 'xvolume_write_image', + 'xyouts', 'zlib_compress', 'zlib_uncompress', 'zoom', 'zoom_24' + ]; + var builtins = wordRegexp(builtinArray); + + var keywordArray = [ + 'begin', 'end', 'endcase', 'endfor', + 'endwhile', 'endif', 'endrep', 'endforeach', + 'break', 'case', 'continue', 'for', + 'foreach', 'goto', 'if', 'then', 'else', + 'repeat', 'until', 'switch', 'while', + 'do', 'pro', 'function' + ]; + var keywords = wordRegexp(keywordArray); + + CodeMirror.registerHelper("hintWords", "idl", builtinArray.concat(keywordArray)); + + var identifiers = new RegExp('^[_a-z\xa1-\uffff][_a-z0-9\xa1-\uffff]*', 'i'); + + var singleOperators = /[+\-*&=<>\/@#~$]/; + var boolOperators = new RegExp('(and|or|eq|lt|le|gt|ge|ne|not)', 'i'); + + function tokenBase(stream) { + // whitespaces + if (stream.eatSpace()) return null; + + // Handle one line Comments + if (stream.match(';')) { + stream.skipToEnd(); + return 'comment'; + } + + // Handle Number Literals + if (stream.match(/^[0-9\.+-]/, false)) { + if (stream.match(/^[+-]?0x[0-9a-fA-F]+/)) + return 'number'; + if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)) + return 'number'; + if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/)) + return 'number'; + } + + // Handle Strings + if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } + if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } + + // Handle words + if (stream.match(keywords)) { return 'keyword'; } + if (stream.match(builtins)) { return 'builtin'; } + if (stream.match(identifiers)) { return 'variable'; } + + if (stream.match(singleOperators) || stream.match(boolOperators)) { + return 'operator'; } + + // Handle non-detected items + stream.next(); + return null; + }; + + CodeMirror.defineMode('idl', function() { + return { + token: function(stream) { + return tokenBase(stream); + } + }; + }); + + CodeMirror.defineMIME('text/x-idl', 'idl'); +}); diff --git a/global/codemirror/mode/idl/index.html b/global/codemirror/mode/idl/index.html new file mode 100644 index 00000000..4c169e2d --- /dev/null +++ b/global/codemirror/mode/idl/index.html @@ -0,0 +1,64 @@ + + +CodeMirror: IDL mode + + + + + + + + + +
+

IDL mode

+ +
+ + +

MIME types defined: text/x-idl.

+
diff --git a/global/codemirror/mode/index.html b/global/codemirror/mode/index.html new file mode 100644 index 00000000..eee26fad --- /dev/null +++ b/global/codemirror/mode/index.html @@ -0,0 +1,165 @@ + + +CodeMirror: Language Modes + + + + + +
+ +

Language modes

+ +

This is a list of every mode in the distribution. Each mode lives +in a subdirectory of the mode/ directory, and typically +defines a single JavaScript file that implements the mode. Loading +such file will make the language available to CodeMirror, through +the mode +option.

+ +
+ +
+ +
diff --git a/global/codemirror/mode/javascript/index.html b/global/codemirror/mode/javascript/index.html new file mode 100644 index 00000000..592a133d --- /dev/null +++ b/global/codemirror/mode/javascript/index.html @@ -0,0 +1,114 @@ + + +CodeMirror: JavaScript mode + + + + + + + + + + + + +
+

JavaScript mode

+ + +
+ + + +

+ JavaScript mode supports several configuration options: +

    +
  • json which will set the mode to expect JSON + data rather than a JavaScript program.
  • +
  • jsonld which will set the mode to expect + JSON-LD linked data rather + than a JavaScript program (demo).
  • +
  • typescript which will activate additional + syntax highlighting and some other things for TypeScript code + (demo).
  • +
  • statementIndent which (given a number) will + determine the amount of indentation to use for statements + continued on a new line.
  • +
  • wordCharacters, a regexp that indicates which + characters should be considered part of an identifier. + Defaults to /[\w$]/, which does not handle + non-ASCII identifiers. Can be set to something more elaborate + to improve Unicode support.
  • +
+

+ +

MIME types defined: text/javascript, application/json, application/ld+json, text/typescript, application/typescript.

+
diff --git a/global/codemirror/mode/javascript/javascript.js b/global/codemirror/mode/javascript/javascript.js new file mode 100644 index 00000000..0a46dc77 --- /dev/null +++ b/global/codemirror/mode/javascript/javascript.js @@ -0,0 +1,847 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("javascript", function(config, parserConfig) { + var indentUnit = config.indentUnit; + var statementIndent = parserConfig.statementIndent; + var jsonldMode = parserConfig.jsonld; + var jsonMode = parserConfig.json || jsonldMode; + var isTS = parserConfig.typescript; + var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; + + // Tokenizer + + var keywords = function(){ + function kw(type) {return {type: type, style: "keyword"};} + var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); + var operator = kw("operator"), atom = {type: "atom", style: "atom"}; + + var jsKeywords = { + "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, + "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "void": C, "throw": C, "debugger": C, + "var": kw("var"), "const": kw("var"), "let": kw("var"), + "function": kw("function"), "catch": kw("catch"), + "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), + "in": operator, "typeof": operator, "instanceof": operator, + "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, + "this": kw("this"), "class": kw("class"), "super": kw("atom"), + "yield": C, "export": kw("export"), "import": kw("import"), "extends": C, + "await": C + }; + + // Extend the 'normal' keywords with the TypeScript language extensions + if (isTS) { + var type = {type: "variable", style: "type"}; + var tsKeywords = { + // object-like things + "interface": kw("class"), + "implements": C, + "namespace": C, + "module": kw("module"), + "enum": kw("module"), + + // scope modifiers + "public": kw("modifier"), + "private": kw("modifier"), + "protected": kw("modifier"), + "abstract": kw("modifier"), + "readonly": kw("modifier"), + + // types + "string": type, "number": type, "boolean": type, "any": type + }; + + for (var attr in tsKeywords) { + jsKeywords[attr] = tsKeywords[attr]; + } + } + + return jsKeywords; + }(); + + var isOperatorChar = /[+\-*&%=<>!?|~^@]/; + var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; + + function readRegexp(stream) { + var escaped = false, next, inSet = false; + while ((next = stream.next()) != null) { + if (!escaped) { + if (next == "/" && !inSet) return; + if (next == "[") inSet = true; + else if (inSet && next == "]") inSet = false; + } + escaped = !escaped && next == "\\"; + } + } + + // Used as scratch variables to communicate multiple values without + // consing up tons of objects. + var type, content; + function ret(tp, style, cont) { + type = tp; content = cont; + return style; + } + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) { + return ret("number", "number"); + } else if (ch == "." && stream.match("..")) { + return ret("spread", "meta"); + } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + return ret(ch); + } else if (ch == "=" && stream.eat(">")) { + return ret("=>", "operator"); + } else if (ch == "0" && stream.eat(/x/i)) { + stream.eatWhile(/[\da-f]/i); + return ret("number", "number"); + } else if (ch == "0" && stream.eat(/o/i)) { + stream.eatWhile(/[0-7]/i); + return ret("number", "number"); + } else if (ch == "0" && stream.eat(/b/i)) { + stream.eatWhile(/[01]/i); + return ret("number", "number"); + } else if (/\d/.test(ch)) { + stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); + return ret("number", "number"); + } else if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } else if (stream.eat("/")) { + stream.skipToEnd(); + return ret("comment", "comment"); + } else if (expressionAllowed(stream, state, 1)) { + readRegexp(stream); + stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/); + return ret("regexp", "string-2"); + } else { + stream.eatWhile(isOperatorChar); + return ret("operator", "operator", stream.current()); + } + } else if (ch == "`") { + state.tokenize = tokenQuasi; + return tokenQuasi(stream, state); + } else if (ch == "#") { + stream.skipToEnd(); + return ret("error", "error"); + } else if (isOperatorChar.test(ch)) { + if (ch != ">" || !state.lexical || state.lexical.type != ">") + stream.eatWhile(isOperatorChar); + return ret("operator", "operator", stream.current()); + } else if (wordRE.test(ch)) { + stream.eatWhile(wordRE); + var word = stream.current() + if (state.lastType != ".") { + if (keywords.propertyIsEnumerable(word)) { + var kw = keywords[word] + return ret(kw.type, kw.style, word) + } + if (word == "async" && stream.match(/^\s*[\(\w]/, false)) + return ret("async", "keyword", word) + } + return ret("variable", "variable", word) + } + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next; + if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ + state.tokenize = tokenBase; + return ret("jsonld-keyword", "meta"); + } + while ((next = stream.next()) != null) { + if (next == quote && !escaped) break; + escaped = !escaped && next == "\\"; + } + if (!escaped) state.tokenize = tokenBase; + return ret("string", "string"); + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "comment"); + } + + function tokenQuasi(stream, state) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { + state.tokenize = tokenBase; + break; + } + escaped = !escaped && next == "\\"; + } + return ret("quasi", "string-2", stream.current()); + } + + var brackets = "([{}])"; + // This is a crude lookahead trick to try and notice that we're + // parsing the argument patterns for a fat-arrow function before we + // actually hit the arrow token. It only works if the arrow is on + // the same line as the arguments and there's no strange noise + // (comments) in between. Fallback is to only notice when we hit the + // arrow, and not declare the arguments as locals for the arrow + // body. + function findFatArrow(stream, state) { + if (state.fatArrowAt) state.fatArrowAt = null; + var arrow = stream.string.indexOf("=>", stream.start); + if (arrow < 0) return; + + if (isTS) { // Try to skip TypeScript return type declarations after the arguments + var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start, arrow)) + if (m) arrow = m.index + } + + var depth = 0, sawSomething = false; + for (var pos = arrow - 1; pos >= 0; --pos) { + var ch = stream.string.charAt(pos); + var bracket = brackets.indexOf(ch); + if (bracket >= 0 && bracket < 3) { + if (!depth) { ++pos; break; } + if (--depth == 0) { if (ch == "(") sawSomething = true; break; } + } else if (bracket >= 3 && bracket < 6) { + ++depth; + } else if (wordRE.test(ch)) { + sawSomething = true; + } else if (/["'\/]/.test(ch)) { + return; + } else if (sawSomething && !depth) { + ++pos; + break; + } + } + if (sawSomething && !depth) state.fatArrowAt = pos; + } + + // Parser + + var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; + + function JSLexical(indented, column, type, align, prev, info) { + this.indented = indented; + this.column = column; + this.type = type; + this.prev = prev; + this.info = info; + if (align != null) this.align = align; + } + + function inScope(state, varname) { + for (var v = state.localVars; v; v = v.next) + if (v.name == varname) return true; + for (var cx = state.context; cx; cx = cx.prev) { + for (var v = cx.vars; v; v = v.next) + if (v.name == varname) return true; + } + } + + function parseJS(state, style, type, content, stream) { + var cc = state.cc; + // Communicate our context to the combinators. + // (Less wasteful than consing up a hundred closures on every call.) + cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; + + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = true; + + while(true) { + var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; + if (combinator(type, content)) { + while(cc.length && cc[cc.length - 1].lex) + cc.pop()(); + if (cx.marked) return cx.marked; + if (type == "variable" && inScope(state, content)) return "variable-2"; + return style; + } + } + } + + // Combinator utils + + var cx = {state: null, column: null, marked: null, cc: null}; + function pass() { + for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + function register(varname) { + function inList(list) { + for (var v = list; v; v = v.next) + if (v.name == varname) return true; + return false; + } + var state = cx.state; + cx.marked = "def"; + if (state.context) { + if (inList(state.localVars)) return; + state.localVars = {name: varname, next: state.localVars}; + } else { + if (inList(state.globalVars)) return; + if (parserConfig.globalVars) + state.globalVars = {name: varname, next: state.globalVars}; + } + } + + // Combinators + + var defaultVars = {name: "this", next: {name: "arguments"}}; + function pushcontext() { + cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; + cx.state.localVars = defaultVars; + } + function popcontext() { + cx.state.localVars = cx.state.context.vars; + cx.state.context = cx.state.context.prev; + } + function pushlex(type, info) { + var result = function() { + var state = cx.state, indent = state.indented; + if (state.lexical.type == "stat") indent = state.lexical.indented; + else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) + indent = outer.indented; + state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); + }; + result.lex = true; + return result; + } + function poplex() { + var state = cx.state; + if (state.lexical.prev) { + if (state.lexical.type == ")") + state.indented = state.lexical.indented; + state.lexical = state.lexical.prev; + } + } + poplex.lex = true; + + function expect(wanted) { + function exp(type) { + if (type == wanted) return cont(); + else if (wanted == ";") return pass(); + else return cont(exp); + }; + return exp; + } + + function statement(type, value) { + if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex); + if (type == "keyword a") return cont(pushlex("form"), parenExpr, statement, poplex); + if (type == "keyword b") return cont(pushlex("form"), statement, poplex); + if (type == "{") return cont(pushlex("}"), block, poplex); + if (type == ";") return cont(); + if (type == "if") { + if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) + cx.state.cc.pop()(); + return cont(pushlex("form"), parenExpr, statement, poplex, maybeelse); + } + if (type == "function") return cont(functiondef); + if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); + if (type == "variable") { + if (isTS && value == "type") { + cx.marked = "keyword" + return cont(typeexpr, expect("operator"), typeexpr, expect(";")); + } if (isTS && value == "declare") { + cx.marked = "keyword" + return cont(statement) + } else { + return cont(pushlex("stat"), maybelabel); + } + } + if (type == "switch") return cont(pushlex("form"), parenExpr, expect("{"), pushlex("}", "switch"), + block, poplex, poplex); + if (type == "case") return cont(expression, expect(":")); + if (type == "default") return cont(expect(":")); + if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), + statement, poplex, popcontext); + if (type == "class") return cont(pushlex("form"), className, poplex); + if (type == "export") return cont(pushlex("stat"), afterExport, poplex); + if (type == "import") return cont(pushlex("stat"), afterImport, poplex); + if (type == "module") return cont(pushlex("form"), pattern, expect("{"), pushlex("}"), block, poplex, poplex) + if (type == "async") return cont(statement) + if (value == "@") return cont(expression, statement) + return pass(pushlex("stat"), expression, expect(";"), poplex); + } + function expression(type) { + return expressionInner(type, false); + } + function expressionNoComma(type) { + return expressionInner(type, true); + } + function parenExpr(type) { + if (type != "(") return pass() + return cont(pushlex(")"), expression, expect(")"), poplex) + } + function expressionInner(type, noComma) { + if (cx.state.fatArrowAt == cx.stream.start) { + var body = noComma ? arrowBodyNoComma : arrowBody; + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, expect("=>"), body, popcontext); + else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); + } + + var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; + if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); + if (type == "function") return cont(functiondef, maybeop); + if (type == "class") return cont(pushlex("form"), classExpression, poplex); + if (type == "keyword c" || type == "async") return cont(noComma ? maybeexpressionNoComma : maybeexpression); + if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop); + if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); + if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); + if (type == "{") return contCommasep(objprop, "}", null, maybeop); + if (type == "quasi") return pass(quasi, maybeop); + if (type == "new") return cont(maybeTarget(noComma)); + return cont(); + } + function maybeexpression(type) { + if (type.match(/[;\}\)\],]/)) return pass(); + return pass(expression); + } + function maybeexpressionNoComma(type) { + if (type.match(/[;\}\)\],]/)) return pass(); + return pass(expressionNoComma); + } + + function maybeoperatorComma(type, value) { + if (type == ",") return cont(expression); + return maybeoperatorNoComma(type, value, false); + } + function maybeoperatorNoComma(type, value, noComma) { + var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; + var expr = noComma == false ? expression : expressionNoComma; + if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); + if (type == "operator") { + if (/\+\+|--/.test(value) || isTS && value == "!") return cont(me); + if (value == "?") return cont(expression, expect(":"), expr); + return cont(expr); + } + if (type == "quasi") { return pass(quasi, me); } + if (type == ";") return; + if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); + if (type == ".") return cont(property, me); + if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); + if (isTS && value == "as") { cx.marked = "keyword"; return cont(typeexpr, me) } + if (type == "regexp") { + cx.state.lastType = cx.marked = "operator" + cx.stream.backUp(cx.stream.pos - cx.stream.start - 1) + return cont(expr) + } + } + function quasi(type, value) { + if (type != "quasi") return pass(); + if (value.slice(value.length - 2) != "${") return cont(quasi); + return cont(expression, continueQuasi); + } + function continueQuasi(type) { + if (type == "}") { + cx.marked = "string-2"; + cx.state.tokenize = tokenQuasi; + return cont(quasi); + } + } + function arrowBody(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expression); + } + function arrowBodyNoComma(type) { + findFatArrow(cx.stream, cx.state); + return pass(type == "{" ? statement : expressionNoComma); + } + function maybeTarget(noComma) { + return function(type) { + if (type == ".") return cont(noComma ? targetNoComma : target); + else if (type == "variable" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma) + else return pass(noComma ? expressionNoComma : expression); + }; + } + function target(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); } + } + function targetNoComma(_, value) { + if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); } + } + function maybelabel(type) { + if (type == ":") return cont(poplex, statement); + return pass(maybeoperatorComma, expect(";"), poplex); + } + function property(type) { + if (type == "variable") {cx.marked = "property"; return cont();} + } + function objprop(type, value) { + if (type == "async") { + cx.marked = "property"; + return cont(objprop); + } else if (type == "variable" || cx.style == "keyword") { + cx.marked = "property"; + if (value == "get" || value == "set") return cont(getterSetter); + var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params + if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\s*:\s*/, false))) + cx.state.fatArrowAt = cx.stream.pos + m[0].length + return cont(afterprop); + } else if (type == "number" || type == "string") { + cx.marked = jsonldMode ? "property" : (cx.style + " property"); + return cont(afterprop); + } else if (type == "jsonld-keyword") { + return cont(afterprop); + } else if (type == "modifier") { + return cont(objprop) + } else if (type == "[") { + return cont(expression, expect("]"), afterprop); + } else if (type == "spread") { + return cont(expression, afterprop); + } else if (type == ":") { + return pass(afterprop) + } + } + function getterSetter(type) { + if (type != "variable") return pass(afterprop); + cx.marked = "property"; + return cont(functiondef); + } + function afterprop(type) { + if (type == ":") return cont(expressionNoComma); + if (type == "(") return pass(functiondef); + } + function commasep(what, end, sep) { + function proceed(type, value) { + if (sep ? sep.indexOf(type) > -1 : type == ",") { + var lex = cx.state.lexical; + if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; + return cont(function(type, value) { + if (type == end || value == end) return pass() + return pass(what) + }, proceed); + } + if (type == end || value == end) return cont(); + return cont(expect(end)); + } + return function(type, value) { + if (type == end || value == end) return cont(); + return pass(what, proceed); + }; + } + function contCommasep(what, end, info) { + for (var i = 3; i < arguments.length; i++) + cx.cc.push(arguments[i]); + return cont(pushlex(end, info), commasep(what, end), poplex); + } + function block(type) { + if (type == "}") return cont(); + return pass(statement, block); + } + function maybetype(type, value) { + if (isTS) { + if (type == ":") return cont(typeexpr); + if (value == "?") return cont(maybetype); + } + } + function typeexpr(type, value) { + if (type == "variable") { + if (value == "keyof") { + cx.marked = "keyword" + return cont(typeexpr) + } else { + cx.marked = "type" + return cont(afterType) + } + } + if (type == "string" || type == "number" || type == "atom") return cont(afterType); + if (type == "[") return cont(pushlex("]"), commasep(typeexpr, "]", ","), poplex, afterType) + if (type == "{") return cont(pushlex("}"), commasep(typeprop, "}", ",;"), poplex, afterType) + if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType) + } + function maybeReturnType(type) { + if (type == "=>") return cont(typeexpr) + } + function typeprop(type, value) { + if (type == "variable" || cx.style == "keyword") { + cx.marked = "property" + return cont(typeprop) + } else if (value == "?") { + return cont(typeprop) + } else if (type == ":") { + return cont(typeexpr) + } else if (type == "[") { + return cont(expression, maybetype, expect("]"), typeprop) + } + } + function typearg(type) { + if (type == "variable") return cont(typearg) + else if (type == ":") return cont(typeexpr) + } + function afterType(type, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType) + if (value == "|" || type == ".") return cont(typeexpr) + if (type == "[") return cont(expect("]"), afterType) + if (value == "extends") return cont(typeexpr) + } + function maybeTypeArgs(_, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType) + } + function vardef() { + return pass(pattern, maybetype, maybeAssign, vardefCont); + } + function pattern(type, value) { + if (type == "modifier") return cont(pattern) + if (type == "variable") { register(value); return cont(); } + if (type == "spread") return cont(pattern); + if (type == "[") return contCommasep(pattern, "]"); + if (type == "{") return contCommasep(proppattern, "}"); + } + function proppattern(type, value) { + if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { + register(value); + return cont(maybeAssign); + } + if (type == "variable") cx.marked = "property"; + if (type == "spread") return cont(pattern); + if (type == "}") return pass(); + return cont(expect(":"), pattern, maybeAssign); + } + function maybeAssign(_type, value) { + if (value == "=") return cont(expressionNoComma); + } + function vardefCont(type) { + if (type == ",") return cont(vardef); + } + function maybeelse(type, value) { + if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); + } + function forspec(type) { + if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex); + } + function forspec1(type) { + if (type == "var") return cont(vardef, expect(";"), forspec2); + if (type == ";") return cont(forspec2); + if (type == "variable") return cont(formaybeinof); + return pass(expression, expect(";"), forspec2); + } + function formaybeinof(_type, value) { + if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } + return cont(maybeoperatorComma, forspec2); + } + function forspec2(type, value) { + if (type == ";") return cont(forspec3); + if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } + return pass(expression, expect(";"), forspec3); + } + function forspec3(type) { + if (type != ")") cont(expression); + } + function functiondef(type, value) { + if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} + if (type == "variable") {register(value); return cont(functiondef);} + if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, maybetype, statement, popcontext); + if (isTS && value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, functiondef) + } + function funarg(type, value) { + if (value == "@") cont(expression, funarg) + if (type == "spread" || type == "modifier") return cont(funarg); + return pass(pattern, maybetype, maybeAssign); + } + function classExpression(type, value) { + // Class expressions may have an optional name. + if (type == "variable") return className(type, value); + return classNameAfter(type, value); + } + function className(type, value) { + if (type == "variable") {register(value); return cont(classNameAfter);} + } + function classNameAfter(type, value) { + if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, classNameAfter) + if (value == "extends" || value == "implements" || (isTS && type == ",")) + return cont(isTS ? typeexpr : expression, classNameAfter); + if (type == "{") return cont(pushlex("}"), classBody, poplex); + } + function classBody(type, value) { + if (type == "modifier" || type == "async" || + (type == "variable" && + (value == "static" || value == "get" || value == "set") && + cx.stream.match(/^\s+[\w$\xa1-\uffff]/, false))) { + cx.marked = "keyword"; + return cont(classBody); + } + if (type == "variable" || cx.style == "keyword") { + cx.marked = "property"; + return cont(isTS ? classfield : functiondef, classBody); + } + if (type == "[") + return cont(expression, expect("]"), isTS ? classfield : functiondef, classBody) + if (value == "*") { + cx.marked = "keyword"; + return cont(classBody); + } + if (type == ";") return cont(classBody); + if (type == "}") return cont(); + if (value == "@") return cont(expression, classBody) + } + function classfield(type, value) { + if (value == "?") return cont(classfield) + if (type == ":") return cont(typeexpr, maybeAssign) + if (value == "=") return cont(expressionNoComma) + return pass(functiondef) + } + function afterExport(type, value) { + if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } + if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } + if (type == "{") return cont(commasep(exportField, "}"), maybeFrom, expect(";")); + return pass(statement); + } + function exportField(type, value) { + if (value == "as") { cx.marked = "keyword"; return cont(expect("variable")); } + if (type == "variable") return pass(expressionNoComma, exportField); + } + function afterImport(type) { + if (type == "string") return cont(); + return pass(importSpec, maybeMoreImports, maybeFrom); + } + function importSpec(type, value) { + if (type == "{") return contCommasep(importSpec, "}"); + if (type == "variable") register(value); + if (value == "*") cx.marked = "keyword"; + return cont(maybeAs); + } + function maybeMoreImports(type) { + if (type == ",") return cont(importSpec, maybeMoreImports) + } + function maybeAs(_type, value) { + if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } + } + function maybeFrom(_type, value) { + if (value == "from") { cx.marked = "keyword"; return cont(expression); } + } + function arrayLiteral(type) { + if (type == "]") return cont(); + return pass(commasep(expressionNoComma, "]")); + } + + function isContinuedStatement(state, textAfter) { + return state.lastType == "operator" || state.lastType == "," || + isOperatorChar.test(textAfter.charAt(0)) || + /[,.]/.test(textAfter.charAt(0)); + } + + function expressionAllowed(stream, state, backUp) { + return state.tokenize == tokenBase && + /^(?:operator|sof|keyword [bc]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(state.lastType) || + (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) + } + + // Interface + + return { + startState: function(basecolumn) { + var state = { + tokenize: tokenBase, + lastType: "sof", + cc: [], + lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), + localVars: parserConfig.localVars, + context: parserConfig.localVars && {vars: parserConfig.localVars}, + indented: basecolumn || 0 + }; + if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") + state.globalVars = parserConfig.globalVars; + return state; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = false; + state.indented = stream.indentation(); + findFatArrow(stream, state); + } + if (state.tokenize != tokenComment && stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (type == "comment") return style; + state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; + return parseJS(state, style, type, content, stream); + }, + + indent: function(state, textAfter) { + if (state.tokenize == tokenComment) return CodeMirror.Pass; + if (state.tokenize != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top + // Kludge to prevent 'maybelse' from blocking lexical scope pops + if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { + var c = state.cc[i]; + if (c == poplex) lexical = lexical.prev; + else if (c != maybeelse) break; + } + while ((lexical.type == "stat" || lexical.type == "form") && + (firstChar == "}" || ((top = state.cc[state.cc.length - 1]) && + (top == maybeoperatorComma || top == maybeoperatorNoComma) && + !/^[,\.=+\-*:?[\(]/.test(textAfter)))) + lexical = lexical.prev; + if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") + lexical = lexical.prev; + var type = lexical.type, closing = firstChar == type; + + if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0); + else if (type == "form" && firstChar == "{") return lexical.indented; + else if (type == "form") return lexical.indented + indentUnit; + else if (type == "stat") + return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0); + else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) + return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); + else if (lexical.align) return lexical.column + (closing ? 0 : 1); + else return lexical.indented + (closing ? 0 : indentUnit); + }, + + electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, + blockCommentStart: jsonMode ? null : "/*", + blockCommentEnd: jsonMode ? null : "*/", + lineComment: jsonMode ? null : "//", + fold: "brace", + closeBrackets: "()[]{}''\"\"``", + + helperType: jsonMode ? "json" : "javascript", + jsonldMode: jsonldMode, + jsonMode: jsonMode, + + expressionAllowed: expressionAllowed, + + skipExpression: function(state) { + var top = state.cc[state.cc.length - 1] + if (top == expression || top == expressionNoComma) state.cc.pop() + } + }; +}); + +CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); + +CodeMirror.defineMIME("text/javascript", "javascript"); +CodeMirror.defineMIME("text/ecmascript", "javascript"); +CodeMirror.defineMIME("application/javascript", "javascript"); +CodeMirror.defineMIME("application/x-javascript", "javascript"); +CodeMirror.defineMIME("application/ecmascript", "javascript"); +CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); +CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); +CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); +CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); +CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); + +}); diff --git a/global/codemirror/mode/javascript/json-ld.html b/global/codemirror/mode/javascript/json-ld.html new file mode 100644 index 00000000..3a37f0bc --- /dev/null +++ b/global/codemirror/mode/javascript/json-ld.html @@ -0,0 +1,72 @@ + + +CodeMirror: JSON-LD mode + + + + + + + + + + + + +
+

JSON-LD mode

+ + +
+ + + +

This is a specialization of the JavaScript mode.

+
diff --git a/global/codemirror/mode/javascript/test.js b/global/codemirror/mode/javascript/test.js new file mode 100644 index 00000000..7b0892cf --- /dev/null +++ b/global/codemirror/mode/javascript/test.js @@ -0,0 +1,404 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "javascript"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("locals", + "[keyword function] [def foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }"); + + MT("comma-and-binop", + "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }"); + + MT("destructuring", + "([keyword function]([def a], [[[def b], [def c] ]]) {", + " [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);", + " [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];", + "})();"); + + MT("destructure_trailing_comma", + "[keyword let] {[def a], [def b],} [operator =] [variable foo];", + "[keyword let] [def c];"); // Parser still in good state? + + MT("class_body", + "[keyword class] [def Foo] {", + " [property constructor]() {}", + " [property sayName]() {", + " [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];", + " }", + "}"); + + MT("class", + "[keyword class] [def Point] [keyword extends] [variable SuperThing] {", + " [keyword get] [property prop]() { [keyword return] [number 24]; }", + " [property constructor]([def x], [def y]) {", + " [keyword super]([string 'something']);", + " [keyword this].[property x] [operator =] [variable-2 x];", + " }", + "}"); + + MT("anonymous_class_expression", + "[keyword const] [def Adder] [operator =] [keyword class] [keyword extends] [variable Arithmetic] {", + " [property add]([def a], [def b]) {}", + "};"); + + MT("named_class_expression", + "[keyword const] [def Subber] [operator =] [keyword class] [def Subtract] {", + " [property sub]([def a], [def b]) {}", + "};"); + + MT("class_async_method", + "[keyword class] [def Foo] {", + " [property sayName1]() {}", + " [keyword async] [property sayName2]() {}", + "}"); + + MT("import", + "[keyword function] [def foo]() {", + " [keyword import] [def $] [keyword from] [string 'jquery'];", + " [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];", + "}"); + + MT("import_trailing_comma", + "[keyword import] {[def foo], [def bar],} [keyword from] [string 'baz']") + + MT("const", + "[keyword function] [def f]() {", + " [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];", + "}"); + + MT("for/of", + "[keyword for]([keyword let] [def of] [keyword of] [variable something]) {}"); + + MT("generator", + "[keyword function*] [def repeat]([def n]) {", + " [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])", + " [keyword yield] [variable-2 i];", + "}"); + + MT("quotedStringAddition", + "[keyword let] [def f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];"); + + MT("quotedFatArrow", + "[keyword let] [def f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];"); + + MT("fatArrow", + "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);", + "[variable a];", // No longer in scope + "[keyword let] [def f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];", + "[variable c];"); + + MT("spread", + "[keyword function] [def f]([def a], [meta ...][def b]) {", + " [variable something]([variable-2 a], [meta ...][variable-2 b]);", + "}"); + + MT("quasi", + "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); + + MT("quasi_no_function", + "[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); + + MT("indent_statement", + "[keyword var] [def x] [operator =] [number 10]", + "[variable x] [operator +=] [variable y] [operator +]", + " [atom Infinity]", + "[keyword debugger];"); + + MT("indent_if", + "[keyword if] ([number 1])", + " [keyword break];", + "[keyword else] [keyword if] ([number 2])", + " [keyword continue];", + "[keyword else]", + " [number 10];", + "[keyword if] ([number 1]) {", + " [keyword break];", + "} [keyword else] [keyword if] ([number 2]) {", + " [keyword continue];", + "} [keyword else] {", + " [number 10];", + "}"); + + MT("indent_for", + "[keyword for] ([keyword var] [def i] [operator =] [number 0];", + " [variable i] [operator <] [number 100];", + " [variable i][operator ++])", + " [variable doSomething]([variable i]);", + "[keyword debugger];"); + + MT("indent_c_style", + "[keyword function] [def foo]()", + "{", + " [keyword debugger];", + "}"); + + MT("indent_else", + "[keyword for] (;;)", + " [keyword if] ([variable foo])", + " [keyword if] ([variable bar])", + " [number 1];", + " [keyword else]", + " [number 2];", + " [keyword else]", + " [number 3];"); + + MT("indent_funarg", + "[variable foo]([number 10000],", + " [keyword function]([def a]) {", + " [keyword debugger];", + "};"); + + MT("indent_below_if", + "[keyword for] (;;)", + " [keyword if] ([variable foo])", + " [number 1];", + "[number 2];"); + + MT("indent_semicolonless_if", + "[keyword function] [def foo]() {", + " [keyword if] ([variable x])", + " [variable foo]()", + "}") + + MT("indent_semicolonless_if_with_statement", + "[keyword function] [def foo]() {", + " [keyword if] ([variable x])", + " [variable foo]()", + " [variable bar]()", + "}") + + MT("multilinestring", + "[keyword var] [def x] [operator =] [string 'foo\\]", + "[string bar'];"); + + MT("scary_regexp", + "[string-2 /foo[[/]]bar/];"); + + MT("indent_strange_array", + "[keyword var] [def x] [operator =] [[", + " [number 1],,", + " [number 2],", + "]];", + "[number 10];"); + + MT("param_default", + "[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {", + " [keyword return] [variable-2 x];", + "}"); + + MT("new_target", + "[keyword function] [def F]([def target]) {", + " [keyword if] ([variable-2 target] [operator &&] [keyword new].[keyword target].[property name]) {", + " [keyword return] [keyword new]", + " .[keyword target];", + " }", + "}"); + + MT("async", + "[keyword async] [keyword function] [def foo]([def args]) { [keyword return] [atom true]; }"); + + MT("async_assignment", + "[keyword const] [def foo] [operator =] [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; };"); + + MT("async_object", + "[keyword let] [def obj] [operator =] { [property async]: [atom false] };"); + + // async be highlighet as keyword and foo as def, but it requires potentially expensive look-ahead. See #4173 + MT("async_object_function", + "[keyword let] [def obj] [operator =] { [property async] [property foo]([def args]) { [keyword return] [atom true]; } };"); + + MT("async_object_properties", + "[keyword let] [def obj] [operator =] {", + " [property prop1]: [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; },", + " [property prop2]: [keyword async] [keyword function] ([def args]) { [keyword return] [atom true]; },", + " [property prop3]: [keyword async] [keyword function] [def prop3]([def args]) { [keyword return] [atom true]; },", + "};"); + + MT("async_arrow", + "[keyword const] [def foo] [operator =] [keyword async] ([def args]) [operator =>] { [keyword return] [atom true]; };"); + + MT("async_jquery", + "[variable $].[property ajax]({", + " [property url]: [variable url],", + " [property async]: [atom true],", + " [property method]: [string 'GET']", + "});"); + + MT("async_variable", + "[keyword const] [def async] [operator =] {[property a]: [number 1]};", + "[keyword const] [def foo] [operator =] [string-2 `bar ${][variable async].[property a][string-2 }`];") + + MT("indent_switch", + "[keyword switch] ([variable x]) {", + " [keyword default]:", + " [keyword return] [number 2]", + "}") + + MT("regexp_corner_case", + "[operator +]{} [operator /] [atom undefined];", + "[[[meta ...][string-2 /\\//] ]];", + "[keyword void] [string-2 /\\//];", + "[keyword do] [string-2 /\\//]; [keyword while] ([number 0]);", + "[keyword if] ([number 0]) {} [keyword else] [string-2 /\\//];", + "[string-2 `${][variable async][operator ++][string-2 }//`];", + "[string-2 `${]{} [operator /] [string-2 /\\//}`];") + + var ts_mode = CodeMirror.getMode({indentUnit: 2}, "application/typescript") + function TS(name) { + test.mode(name, ts_mode, Array.prototype.slice.call(arguments, 1)) + } + + TS("typescript_extend_type", + "[keyword class] [def Foo] [keyword extends] [type Some][operator <][type Type][operator >] {}") + + TS("typescript_arrow_type", + "[keyword let] [def x]: ([variable arg]: [type Type]) [operator =>] [type ReturnType]") + + TS("typescript_class", + "[keyword class] [def Foo] {", + " [keyword public] [keyword static] [property main]() {}", + " [keyword private] [property _foo]: [type string];", + "}") + + TS("typescript_literal_types", + "[keyword import] [keyword *] [keyword as] [def Sequelize] [keyword from] [string 'sequelize'];", + "[keyword interface] [def MyAttributes] {", + " [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];", + " [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];", + "}", + "[keyword interface] [def MyInstance] [keyword extends] [type Sequelize].[type Instance] [operator <] [type MyAttributes] [operator >] {", + " [property rawAttributes]: [type MyAttributes];", + " [property truthy]: [string 'true'] [operator |] [number 1] [operator |] [atom true];", + " [property falsy]: [string 'false'] [operator |] [number 0] [operator |] [atom false];", + "}") + + TS("typescript_extend_operators", + "[keyword export] [keyword interface] [def UserModel] [keyword extends]", + " [type Sequelize].[type Model] [operator <] [type UserInstance], [type UserAttributes] [operator >] {", + " [property findById]: (", + " [variable userId]: [type number]", + " ) [operator =>] [type Promise] [operator <] [type Array] [operator <] { [property id], [property name] } [operator >>];", + " [property updateById]: (", + " [variable userId]: [type number],", + " [variable isActive]: [type boolean]", + " ) [operator =>] [type Promise] [operator <] [type AccountHolderNotificationPreferenceInstance] [operator >];", + " }") + + TS("typescript_interface_with_const", + "[keyword const] [def hello]: {", + " [property prop1][operator ?]: [type string];", + " [property prop2][operator ?]: [type string];", + "} [operator =] {};") + + TS("typescript_double_extend", + "[keyword export] [keyword interface] [def UserAttributes] {", + " [property id][operator ?]: [type number];", + " [property createdAt][operator ?]: [type Date];", + "}", + "[keyword export] [keyword interface] [def UserInstance] [keyword extends] [type Sequelize].[type Instance][operator <][type UserAttributes][operator >], [type UserAttributes] {", + " [property id]: [type number];", + " [property createdAt]: [type Date];", + "}"); + + TS("typescript_index_signature", + "[keyword interface] [def A] {", + " [[ [variable prop]: [type string] ]]: [type any];", + " [property prop1]: [type any];", + "}"); + + TS("typescript_generic_class", + "[keyword class] [def Foo][operator <][type T][operator >] {", + " [property bar]() {}", + " [property foo](): [type Foo] {}", + "}") + + TS("typescript_type_when_keyword", + "[keyword export] [keyword type] [type AB] [operator =] [type A] [operator |] [type B];", + "[keyword type] [type Flags] [operator =] {", + " [property p1]: [type string];", + " [property p2]: [type boolean];", + "};") + + TS("typescript_type_when_not_keyword", + "[keyword class] [def HasType] {", + " [property type]: [type string];", + " [property constructor]([def type]: [type string]) {", + " [keyword this].[property type] [operator =] [variable-2 type];", + " }", + " [property setType]({ [def type] }: { [property type]: [type string]; }) {", + " [keyword this].[property type] [operator =] [variable-2 type];", + " }", + "}") + + TS("typescript_function_generics", + "[keyword function] [def a]() {}", + "[keyword function] [def b][operator <][type IA] [keyword extends] [type object], [type IB] [keyword extends] [type object][operator >]() {}", + "[keyword function] [def c]() {}") + + TS("typescript_complex_return_type", + "[keyword function] [def A]() {", + " [keyword return] [keyword this].[property property];", + "}", + "[keyword function] [def B](): [type Promise][operator <]{ [[ [variable key]: [type string] ]]: [type any] } [operator |] [atom null][operator >] {", + " [keyword return] [keyword this].[property property];", + "}") + + TS("typescript_complex_type_casting", + "[keyword const] [def giftpay] [operator =] [variable config].[property get]([string 'giftpay']) [keyword as] { [[ [variable platformUuid]: [type string] ]]: { [property version]: [type number]; [property apiCode]: [type string]; } };") + + TS("typescript_keyof", + "[keyword function] [def x][operator <][type T] [keyword extends] [keyword keyof] [type X][operator >]([def a]: [type T]) {", + " [keyword return]") + + TS("typescript_new_typeargs", + "[keyword let] [def x] [operator =] [keyword new] [variable Map][operator <][type string], [type Date][operator >]([string-2 `foo${][variable bar][string-2 }`])") + + TS("modifiers", + "[keyword class] [def Foo] {", + " [keyword public] [keyword abstract] [property bar]() {}", + " [property constructor]([keyword readonly] [keyword private] [def x]) {}", + "}") + + TS("arrow prop", + "({[property a]: [def p] [operator =>] [variable-2 p]})") + + var jsonld_mode = CodeMirror.getMode( + {indentUnit: 2}, + {name: "javascript", jsonld: true} + ); + function LD(name) { + test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1)); + } + + LD("json_ld_keywords", + '{', + ' [meta "@context"]: {', + ' [meta "@base"]: [string "http://example.com"],', + ' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],', + ' [property "likesFlavor"]: {', + ' [meta "@container"]: [meta "@list"]', + ' [meta "@reverse"]: [string "@beFavoriteOf"]', + ' },', + ' [property "nick"]: { [meta "@container"]: [meta "@set"] },', + ' [property "nick"]: { [meta "@container"]: [meta "@index"] }', + ' },', + ' [meta "@graph"]: [[ {', + ' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],', + ' [property "name"]: [string "John Lennon"],', + ' [property "modified"]: {', + ' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],', + ' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]', + ' }', + ' } ]]', + '}'); + + LD("json_ld_fake", + '{', + ' [property "@fake"]: [string "@fake"],', + ' [property "@contextual"]: [string "@identifier"],', + ' [property "user@domain.com"]: [string "@graphical"],', + ' [property "@ID"]: [string "@@ID"]', + '}'); +})(); diff --git a/global/codemirror/mode/javascript/typescript.html b/global/codemirror/mode/javascript/typescript.html new file mode 100644 index 00000000..1f26d7fe --- /dev/null +++ b/global/codemirror/mode/javascript/typescript.html @@ -0,0 +1,61 @@ + + +CodeMirror: TypeScript mode + + + + + + + + + +
+

TypeScript mode

+ + +
+ + + +

This is a specialization of the JavaScript mode.

+
diff --git a/global/codemirror/mode/jinja2/index.html b/global/codemirror/mode/jinja2/index.html new file mode 100644 index 00000000..5a70e915 --- /dev/null +++ b/global/codemirror/mode/jinja2/index.html @@ -0,0 +1,54 @@ + + +CodeMirror: Jinja2 mode + + + + + + + + + +
+

Jinja2 mode

+
+ +
diff --git a/global/codemirror/mode/jinja2/jinja2.js b/global/codemirror/mode/jinja2/jinja2.js new file mode 100644 index 00000000..5d57d134 --- /dev/null +++ b/global/codemirror/mode/jinja2/jinja2.js @@ -0,0 +1,142 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("jinja2", function() { + var keywords = ["and", "as", "block", "endblock", "by", "cycle", "debug", "else", "elif", + "extends", "filter", "endfilter", "firstof", "for", + "endfor", "if", "endif", "ifchanged", "endifchanged", + "ifequal", "endifequal", "ifnotequal", + "endifnotequal", "in", "include", "load", "not", "now", "or", + "parsed", "regroup", "reversed", "spaceless", + "endspaceless", "ssi", "templatetag", "openblock", + "closeblock", "openvariable", "closevariable", + "openbrace", "closebrace", "opencomment", + "closecomment", "widthratio", "url", "with", "endwith", + "get_current_language", "trans", "endtrans", "noop", "blocktrans", + "endblocktrans", "get_available_languages", + "get_current_language_bidi", "plural"], + operator = /^[+\-*&%=<>!?|~^]/, + sign = /^[:\[\(\{]/, + atom = ["true", "false"], + number = /^(\d[+\-\*\/])?\d+(\.\d+)?/; + + keywords = new RegExp("((" + keywords.join(")|(") + "))\\b"); + atom = new RegExp("((" + atom.join(")|(") + "))\\b"); + + function tokenBase (stream, state) { + var ch = stream.peek(); + + //Comment + if (state.incomment) { + if(!stream.skipTo("#}")) { + stream.skipToEnd(); + } else { + stream.eatWhile(/\#|}/); + state.incomment = false; + } + return "comment"; + //Tag + } else if (state.intag) { + //After operator + if(state.operator) { + state.operator = false; + if(stream.match(atom)) { + return "atom"; + } + if(stream.match(number)) { + return "number"; + } + } + //After sign + if(state.sign) { + state.sign = false; + if(stream.match(atom)) { + return "atom"; + } + if(stream.match(number)) { + return "number"; + } + } + + if(state.instring) { + if(ch == state.instring) { + state.instring = false; + } + stream.next(); + return "string"; + } else if(ch == "'" || ch == '"') { + state.instring = ch; + stream.next(); + return "string"; + } else if(stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) { + state.intag = false; + return "tag"; + } else if(stream.match(operator)) { + state.operator = true; + return "operator"; + } else if(stream.match(sign)) { + state.sign = true; + } else { + if(stream.eat(" ") || stream.sol()) { + if(stream.match(keywords)) { + return "keyword"; + } + if(stream.match(atom)) { + return "atom"; + } + if(stream.match(number)) { + return "number"; + } + if(stream.sol()) { + stream.next(); + } + } else { + stream.next(); + } + + } + return "variable"; + } else if (stream.eat("{")) { + if (stream.eat("#")) { + state.incomment = true; + if(!stream.skipTo("#}")) { + stream.skipToEnd(); + } else { + stream.eatWhile(/\#|}/); + state.incomment = false; + } + return "comment"; + //Open tag + } else if (ch = stream.eat(/\{|%/)) { + //Cache close tag + state.intag = ch; + if(ch == "{") { + state.intag = "}"; + } + stream.eat("-"); + return "tag"; + } + } + stream.next(); + }; + + return { + startState: function () { + return {tokenize: tokenBase}; + }, + token: function (stream, state) { + return state.tokenize(stream, state); + } + }; + }); +}); diff --git a/global/codemirror/mode/jsx/index.html b/global/codemirror/mode/jsx/index.html new file mode 100644 index 00000000..1054bbcc --- /dev/null +++ b/global/codemirror/mode/jsx/index.html @@ -0,0 +1,89 @@ + + +CodeMirror: JSX mode + + + + + + + + + + + +
+

JSX mode

+ +
+ + + +

JSX Mode for React's +JavaScript syntax extension.

+ +

MIME types defined: text/jsx, text/typescript-jsx.

+ +
diff --git a/global/codemirror/mode/jsx/jsx.js b/global/codemirror/mode/jsx/jsx.js new file mode 100644 index 00000000..45c3024a --- /dev/null +++ b/global/codemirror/mode/jsx/jsx.js @@ -0,0 +1,148 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript")) + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript"], mod) + else // Plain browser env + mod(CodeMirror) +})(function(CodeMirror) { + "use strict" + + // Depth means the amount of open braces in JS context, in XML + // context 0 means not in tag, 1 means in tag, and 2 means in tag + // and js block comment. + function Context(state, mode, depth, prev) { + this.state = state; this.mode = mode; this.depth = depth; this.prev = prev + } + + function copyContext(context) { + return new Context(CodeMirror.copyState(context.mode, context.state), + context.mode, + context.depth, + context.prev && copyContext(context.prev)) + } + + CodeMirror.defineMode("jsx", function(config, modeConfig) { + var xmlMode = CodeMirror.getMode(config, {name: "xml", allowMissing: true, multilineTagIndentPastTag: false}) + var jsMode = CodeMirror.getMode(config, modeConfig && modeConfig.base || "javascript") + + function flatXMLIndent(state) { + var tagName = state.tagName + state.tagName = null + var result = xmlMode.indent(state, "") + state.tagName = tagName + return result + } + + function token(stream, state) { + if (state.context.mode == xmlMode) + return xmlToken(stream, state, state.context) + else + return jsToken(stream, state, state.context) + } + + function xmlToken(stream, state, cx) { + if (cx.depth == 2) { // Inside a JS /* */ comment + if (stream.match(/^.*?\*\//)) cx.depth = 1 + else stream.skipToEnd() + return "comment" + } + + if (stream.peek() == "{") { + xmlMode.skipAttribute(cx.state) + + var indent = flatXMLIndent(cx.state), xmlContext = cx.state.context + // If JS starts on same line as tag + if (xmlContext && stream.match(/^[^>]*>\s*$/, false)) { + while (xmlContext.prev && !xmlContext.startOfLine) + xmlContext = xmlContext.prev + // If tag starts the line, use XML indentation level + if (xmlContext.startOfLine) indent -= config.indentUnit + // Else use JS indentation level + else if (cx.prev.state.lexical) indent = cx.prev.state.lexical.indented + // Else if inside of tag + } else if (cx.depth == 1) { + indent += config.indentUnit + } + + state.context = new Context(CodeMirror.startState(jsMode, indent), + jsMode, 0, state.context) + return null + } + + if (cx.depth == 1) { // Inside of tag + if (stream.peek() == "<") { // Tag inside of tag + xmlMode.skipAttribute(cx.state) + state.context = new Context(CodeMirror.startState(xmlMode, flatXMLIndent(cx.state)), + xmlMode, 0, state.context) + return null + } else if (stream.match("//")) { + stream.skipToEnd() + return "comment" + } else if (stream.match("/*")) { + cx.depth = 2 + return token(stream, state) + } + } + + var style = xmlMode.token(stream, cx.state), cur = stream.current(), stop + if (/\btag\b/.test(style)) { + if (/>$/.test(cur)) { + if (cx.state.context) cx.depth = 0 + else state.context = state.context.prev + } else if (/^ -1) { + stream.backUp(cur.length - stop) + } + return style + } + + function jsToken(stream, state, cx) { + if (stream.peek() == "<" && jsMode.expressionAllowed(stream, cx.state)) { + jsMode.skipExpression(cx.state) + state.context = new Context(CodeMirror.startState(xmlMode, jsMode.indent(cx.state, "")), + xmlMode, 0, state.context) + return null + } + + var style = jsMode.token(stream, cx.state) + if (!style && cx.depth != null) { + var cur = stream.current() + if (cur == "{") { + cx.depth++ + } else if (cur == "}") { + if (--cx.depth == 0) state.context = state.context.prev + } + } + return style + } + + return { + startState: function() { + return {context: new Context(CodeMirror.startState(jsMode), jsMode)} + }, + + copyState: function(state) { + return {context: copyContext(state.context)} + }, + + token: token, + + indent: function(state, textAfter, fullLine) { + return state.context.mode.indent(state.context.state, textAfter, fullLine) + }, + + innerMode: function(state) { + return state.context + } + } + }, "xml", "javascript") + + CodeMirror.defineMIME("text/jsx", "jsx") + CodeMirror.defineMIME("text/typescript-jsx", {name: "jsx", base: {name: "javascript", typescript: true}}) +}); diff --git a/global/codemirror/mode/jsx/test.js b/global/codemirror/mode/jsx/test.js new file mode 100644 index 00000000..61f84ebe --- /dev/null +++ b/global/codemirror/mode/jsx/test.js @@ -0,0 +1,88 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "jsx") + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)) } + + MT("selfclose", + "[keyword var] [def x] [operator =] [bracket&tag <] [tag foo] [bracket&tag />] [operator +] [number 1];") + + MT("openclose", + "([bracket&tag <][tag foo][bracket&tag >]hello [atom &][bracket&tag ][operator ++])") + + MT("attr", + "([bracket&tag <][tag foo] [attribute abc]=[string 'value'][bracket&tag >]hello [atom &][bracket&tag ][operator ++])") + + MT("braced_attr", + "([bracket&tag <][tag foo] [attribute abc]={[number 10]}[bracket&tag >]hello [atom &][bracket&tag ][operator ++])") + + MT("braced_text", + "([bracket&tag <][tag foo][bracket&tag >]hello {[number 10]} [atom &][bracket&tag ][operator ++])") + + MT("nested_tag", + "([bracket&tag <][tag foo][bracket&tag ><][tag bar][bracket&tag >][operator ++])") + + MT("nested_jsx", + "[keyword return] (", + " [bracket&tag <][tag foo][bracket&tag >]", + " say {[number 1] [operator +] [bracket&tag <][tag bar] [attribute attr]={[number 10]}[bracket&tag />]}!", + " [bracket&tag ][operator ++]", + ")") + + MT("preserve_js_context", + "[variable x] [operator =] [string-2 `quasi${][bracket&tag <][tag foo][bracket&tag />][string-2 }quoted`]") + + MT("string_interpolation", + "[variable x] [operator =] [string-2 `quasi${] [number 10] [string-2 }`]") + + MT("line_comment", + "([bracket&tag <][tag foo] [comment // hello]", + " [bracket&tag >][operator ++])") + + MT("line_comment_not_in_tag", + "([bracket&tag <][tag foo][bracket&tag >] // hello", + " [bracket&tag ][operator ++])") + + MT("block_comment", + "([bracket&tag <][tag foo] [comment /* hello]", + "[comment line 2]", + "[comment line 3 */] [bracket&tag >][operator ++])") + + MT("block_comment_not_in_tag", + "([bracket&tag <][tag foo][bracket&tag >]/* hello", + " line 2", + " line 3 */ [bracket&tag ][operator ++])") + + MT("missing_attr", + "([bracket&tag <][tag foo] [attribute selected][bracket&tag />][operator ++])") + + MT("indent_js", + "([bracket&tag <][tag foo][bracket&tag >]", + " [bracket&tag <][tag bar] [attribute baz]={[keyword function]() {", + " [keyword return] [number 10]", + " }}[bracket&tag />]", + " [bracket&tag ])") + + MT("spread", + "([bracket&tag <][tag foo] [attribute bar]={[meta ...][variable baz] [operator /][number 2]}[bracket&tag />])") + + MT("tag_attribute", + "([bracket&tag <][tag foo] [attribute bar]=[bracket&tag <][tag foo][bracket&tag />/>][operator ++])") + + var ts_mode = CodeMirror.getMode({indentUnit: 2}, "text/typescript-jsx") + function TS(name) { test.mode(name, ts_mode, Array.prototype.slice.call(arguments, 1)) } + + TS("tsx_react_integration", + "[keyword interface] [def Props] {", + " [property foo]: [type string];", + "}", + "[keyword class] [def MyComponent] [keyword extends] [type React].[type Component] [operator <] [type Props], [type any] [operator >] {", + " [property render]() {", + " [keyword return] [bracket&tag <][tag span][bracket&tag >]{[keyword this].[property props].[property foo]}[bracket&tag ]", + " }", + "}", + "[bracket&tag <][tag MyComponent] [attribute foo]=[string \"bar\"] [bracket&tag />]; [comment //ok]", + "[bracket&tag <][tag MyComponent] [attribute foo]={[number 0]} [bracket&tag />]; [comment //error]") + +})() diff --git a/global/codemirror/mode/julia/index.html b/global/codemirror/mode/julia/index.html new file mode 100644 index 00000000..e1492c21 --- /dev/null +++ b/global/codemirror/mode/julia/index.html @@ -0,0 +1,195 @@ + + +CodeMirror: Julia mode + + + + + + + + + +
+

Julia mode

+ +
+ + +

MIME types defined: text/x-julia.

+
diff --git a/global/codemirror/mode/julia/julia.js b/global/codemirror/mode/julia/julia.js new file mode 100644 index 00000000..9a36fd05 --- /dev/null +++ b/global/codemirror/mode/julia/julia.js @@ -0,0 +1,418 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("julia", function(config, parserConf) { + function wordRegexp(words, end) { + if (typeof end === "undefined") { end = "\\b"; } + return new RegExp("^((" + words.join(")|(") + "))" + end); + } + + var octChar = "\\\\[0-7]{1,3}"; + var hexChar = "\\\\x[A-Fa-f0-9]{1,2}"; + var sChar = "\\\\[abefnrtv0%?'\"\\\\]"; + var uChar = "([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])"; + + var operators = parserConf.operators || wordRegexp([ + "[<>]:", "[<>=]=", "<<=?", ">>>?=?", "=>", "->", "\\/\\/", + "[\\\\%*+\\-<>!=\\/^|&\\u00F7\\u22BB]=?", "\\?", "\\$", "~", ":", + "\\u00D7", "\\u2208", "\\u2209", "\\u220B", "\\u220C", "\\u2218", + "\\u221A", "\\u221B", "\\u2229", "\\u222A", "\\u2260", "\\u2264", + "\\u2265", "\\u2286", "\\u2288", "\\u228A", "\\u22C5", + "\\b(in|isa)\\b(?!\.?\\()"], ""); + var delimiters = parserConf.delimiters || /^[;,()[\]{}]/; + var identifiers = parserConf.identifiers || + /^[_A-Za-z\u00A1-\u2217\u2219-\uFFFF][\w\u00A1-\u2217\u2219-\uFFFF]*!*/; + + var chars = wordRegexp([octChar, hexChar, sChar, uChar], "'"); + var openers = wordRegexp(["begin", "function", "type", "struct", "immutable", + "let", "macro", "for", "while", "quote", "if", "else", "elseif", "try", + "finally", "catch", "do"]); + var closers = wordRegexp(["end", "else", "elseif", "catch", "finally"]); + var keywords = wordRegexp(["if", "else", "elseif", "while", "for", "begin", + "let", "end", "do", "try", "catch", "finally", "return", "break", + "continue", "global", "local", "const", "export", "import", "importall", + "using", "function", "where", "macro", "module", "baremodule", "struct", + "type", "mutable", "immutable", "quote", "typealias", "abstract", + "primitive", "bitstype"]); + var builtins = wordRegexp(["true", "false", "nothing", "NaN", "Inf"]); + + var macro = /^@[_A-Za-z][\w]*/; + var symbol = /^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/; + var stringPrefixes = /^(`|([_A-Za-z\u00A1-\uFFFF]*"("")?))/; + + function inArray(state) { + return inGenerator(state, '[') + } + + function inGenerator(state, bracket) { + var curr = currentScope(state), + prev = currentScope(state, 1); + if (typeof(bracket) === "undefined") { bracket = '('; } + if (curr === bracket || (prev === bracket && curr === "for")) { + return true; + } + return false; + } + + function currentScope(state, n) { + if (typeof(n) === "undefined") { n = 0; } + if (state.scopes.length <= n) { + return null; + } + return state.scopes[state.scopes.length - (n + 1)]; + } + + // tokenizers + function tokenBase(stream, state) { + // Handle multiline comments + if (stream.match(/^#=/, false)) { + state.tokenize = tokenComment; + return state.tokenize(stream, state); + } + + // Handle scope changes + var leavingExpr = state.leavingExpr; + if (stream.sol()) { + leavingExpr = false; + } + state.leavingExpr = false; + + if (leavingExpr) { + if (stream.match(/^'+/)) { + return "operator"; + } + } + + if (stream.match(/\.{4,}/)) { + return "error"; + } else if (stream.match(/\.{1,3}/)) { + return "operator"; + } + + if (stream.eatSpace()) { + return null; + } + + var ch = stream.peek(); + + // Handle single line comments + if (ch === '#') { + stream.skipToEnd(); + return "comment"; + } + + if (ch === '[') { + state.scopes.push('['); + } + + if (ch === '(') { + state.scopes.push('('); + } + + var scope = currentScope(state); + + if (inArray(state) && ch === ']') { + if (scope === "for") { state.scopes.pop(); } + state.scopes.pop(); + state.leavingExpr = true; + } + + if (inGenerator(state) && ch === ')') { + if (scope === "for") { state.scopes.pop(); } + state.scopes.pop(); + state.leavingExpr = true; + } + + if (inArray(state)) { + if (state.lastToken == "end" && stream.match(/^:/)) { + return "operator"; + } + if (stream.match(/^end/)) { + return "number"; + } + } + + var match; + if (match = stream.match(openers, false)) { + state.scopes.push(match[0]); + } + + if (stream.match(closers, false)) { + state.scopes.pop(); + } + + // Handle type annotations + if (stream.match(/^::(?![:\$])/)) { + state.tokenize = tokenAnnotation; + return state.tokenize(stream, state); + } + + // Handle symbols + if (!leavingExpr && stream.match(symbol) || + stream.match(/:([<>]:|<<=?|>>>?=?|->|\/\/|\.{2,3}|[\.\\%*+\-<>!\/^|&]=?|[~\?\$])/)) { + return "builtin"; + } + + // Handle parametric types + //if (stream.match(/^{[^}]*}(?=\()/)) { + // return "builtin"; + //} + + // Handle operators and Delimiters + if (stream.match(operators)) { + return "operator"; + } + + // Handle Number Literals + if (stream.match(/^\.?\d/, false)) { + var imMatcher = RegExp(/^im\b/); + var numberLiteral = false; + // Floats + if (stream.match(/^\d*\.(?!\.)\d*([Eef][\+\-]?\d+)?/i)) { numberLiteral = true; } + if (stream.match(/^\d+\.(?!\.)\d*/)) { numberLiteral = true; } + if (stream.match(/^\.\d+/)) { numberLiteral = true; } + if (stream.match(/^0x\.[0-9a-f]+p[\+\-]?\d+/i)) { numberLiteral = true; } + // Integers + if (stream.match(/^0x[0-9a-f]+/i)) { numberLiteral = true; } // Hex + if (stream.match(/^0b[01]+/i)) { numberLiteral = true; } // Binary + if (stream.match(/^0o[0-7]+/i)) { numberLiteral = true; } // Octal + if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { numberLiteral = true; } // Decimal + // Zero by itself with no other piece of number. + if (stream.match(/^0(?![\dx])/i)) { numberLiteral = true; } + if (numberLiteral) { + // Integer literals may be "long" + stream.match(imMatcher); + state.leavingExpr = true; + return "number"; + } + } + + // Handle Chars + if (stream.match(/^'/)) { + state.tokenize = tokenChar; + return state.tokenize(stream, state); + } + + // Handle Strings + if (stream.match(stringPrefixes)) { + state.tokenize = tokenStringFactory(stream.current()); + return state.tokenize(stream, state); + } + + if (stream.match(macro)) { + return "meta"; + } + + if (stream.match(delimiters)) { + return null; + } + + if (stream.match(keywords)) { + return "keyword"; + } + + if (stream.match(builtins)) { + return "builtin"; + } + + var isDefinition = state.isDefinition || state.lastToken == "function" || + state.lastToken == "macro" || state.lastToken == "type" || + state.lastToken == "struct" || state.lastToken == "immutable"; + + if (stream.match(identifiers)) { + if (isDefinition) { + if (stream.peek() === '.') { + state.isDefinition = true; + return "variable"; + } + state.isDefinition = false; + return "def"; + } + if (stream.match(/^({[^}]*})*\(/, false)) { + state.tokenize = tokenCallOrDef; + return state.tokenize(stream, state); + } + state.leavingExpr = true; + return "variable"; + } + + // Handle non-detected items + stream.next(); + return "error"; + } + + function tokenCallOrDef(stream, state) { + var match = stream.match(/^(\(\s*)/); + if (match) { + if (state.firstParenPos < 0) + state.firstParenPos = state.scopes.length; + state.scopes.push('('); + state.charsAdvanced += match[1].length; + } + if (currentScope(state) == '(' && stream.match(/^\)/)) { + state.scopes.pop(); + state.charsAdvanced += 1; + if (state.scopes.length <= state.firstParenPos) { + var isDefinition = stream.match(/^(\s*where\s+[^\s=]+)*\s*?=(?!=)/, false); + stream.backUp(state.charsAdvanced); + state.firstParenPos = -1; + state.charsAdvanced = 0; + state.tokenize = tokenBase; + if (isDefinition) + return "def"; + return "builtin"; + } + } + // Unfortunately javascript does not support multiline strings, so we have + // to undo anything done upto here if a function call or definition splits + // over two or more lines. + if (stream.match(/^$/g, false)) { + stream.backUp(state.charsAdvanced); + while (state.scopes.length > state.firstParenPos) + state.scopes.pop(); + state.firstParenPos = -1; + state.charsAdvanced = 0; + state.tokenize = tokenBase; + return "builtin"; + } + state.charsAdvanced += stream.match(/^([^()]*)/)[1].length; + return state.tokenize(stream, state); + } + + function tokenAnnotation(stream, state) { + stream.match(/.*?(?=,|;|{|}|\(|\)|=|$|\s)/); + if (stream.match(/^{/)) { + state.nestedLevels++; + } else if (stream.match(/^}/)) { + state.nestedLevels--; + } + if (state.nestedLevels > 0) { + stream.match(/.*?(?={|})/) || stream.next(); + } else if (state.nestedLevels == 0) { + state.tokenize = tokenBase; + } + return "builtin"; + } + + function tokenComment(stream, state) { + if (stream.match(/^#=/)) { + state.nestedLevels++; + } + if (!stream.match(/.*?(?=(#=|=#))/)) { + stream.skipToEnd(); + } + if (stream.match(/^=#/)) { + state.nestedLevels--; + if (state.nestedLevels == 0) + state.tokenize = tokenBase; + } + return "comment"; + } + + function tokenChar(stream, state) { + var isChar = false, match; + if (stream.match(chars)) { + isChar = true; + } else if (match = stream.match(/\\u([a-f0-9]{1,4})(?=')/i)) { + var value = parseInt(match[1], 16); + if (value <= 55295 || value >= 57344) { // (U+0,U+D7FF), (U+E000,U+FFFF) + isChar = true; + stream.next(); + } + } else if (match = stream.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)) { + var value = parseInt(match[1], 16); + if (value <= 1114111) { // U+10FFFF + isChar = true; + stream.next(); + } + } + if (isChar) { + state.leavingExpr = true; + state.tokenize = tokenBase; + return "string"; + } + if (!stream.match(/^[^']+(?=')/)) { stream.skipToEnd(); } + if (stream.match(/^'/)) { state.tokenize = tokenBase; } + return "error"; + } + + function tokenStringFactory(delimiter) { + if (delimiter.substr(-3) === '"""') { + delimiter = '"""'; + } else if (delimiter.substr(-1) === '"') { + delimiter = '"'; + } + function tokenString(stream, state) { + if (stream.eat('\\')) { + stream.next(); + } else if (stream.match(delimiter)) { + state.tokenize = tokenBase; + state.leavingExpr = true; + return "string"; + } else { + stream.eat(/[`"]/); + } + stream.eatWhile(/[^\\`"]/); + return "string"; + } + return tokenString; + } + + var external = { + startState: function() { + return { + tokenize: tokenBase, + scopes: [], + lastToken: null, + leavingExpr: false, + isDefinition: false, + nestedLevels: 0, + charsAdvanced: 0, + firstParenPos: -1 + }; + }, + + token: function(stream, state) { + var style = state.tokenize(stream, state); + var current = stream.current(); + + if (current && style) { + state.lastToken = current; + } + + return style; + }, + + indent: function(state, textAfter) { + var delta = 0; + if ( textAfter === ']' || textAfter === ')' || textAfter === "end" || + textAfter === "else" || textAfter === "catch" || textAfter === "elseif" || + textAfter === "finally" ) { + delta = -1; + } + return (state.scopes.length + delta) * config.indentUnit; + }, + + electricInput: /\b(end|else|catch|finally)\b/, + blockCommentStart: "#=", + blockCommentEnd: "=#", + lineComment: "#", + fold: "indent" + }; + return external; +}); + + +CodeMirror.defineMIME("text/x-julia", "julia"); + +}); diff --git a/global/codemirror/mode/livescript/index.html b/global/codemirror/mode/livescript/index.html new file mode 100644 index 00000000..f4154798 --- /dev/null +++ b/global/codemirror/mode/livescript/index.html @@ -0,0 +1,459 @@ + + +CodeMirror: LiveScript mode + + + + + + + + + + +
+

LiveScript mode

+
+ + +

MIME types defined: text/x-livescript.

+ +

The LiveScript mode was written by Kenneth Bentley.

+ +
diff --git a/global/codemirror/mode/livescript/livescript.js b/global/codemirror/mode/livescript/livescript.js new file mode 100644 index 00000000..1e363f87 --- /dev/null +++ b/global/codemirror/mode/livescript/livescript.js @@ -0,0 +1,280 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/** + * Link to the project's GitHub page: + * https://github.com/duralog/CodeMirror + */ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode('livescript', function(){ + var tokenBase = function(stream, state) { + var next_rule = state.next || "start"; + if (next_rule) { + state.next = state.next; + var nr = Rules[next_rule]; + if (nr.splice) { + for (var i$ = 0; i$ < nr.length; ++i$) { + var r = nr[i$]; + if (r.regex && stream.match(r.regex)) { + state.next = r.next || state.next; + return r.token; + } + } + stream.next(); + return 'error'; + } + if (stream.match(r = Rules[next_rule])) { + if (r.regex && stream.match(r.regex)) { + state.next = r.next; + return r.token; + } else { + stream.next(); + return 'error'; + } + } + } + stream.next(); + return 'error'; + }; + var external = { + startState: function(){ + return { + next: 'start', + lastToken: {style: null, indent: 0, content: ""} + }; + }, + token: function(stream, state){ + while (stream.pos == stream.start) + var style = tokenBase(stream, state); + state.lastToken = { + style: style, + indent: stream.indentation(), + content: stream.current() + }; + return style.replace(/\./g, ' '); + }, + indent: function(state){ + var indentation = state.lastToken.indent; + if (state.lastToken.content.match(indenter)) { + indentation += 2; + } + return indentation; + } + }; + return external; + }); + + var identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; + var indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); + var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; + var stringfill = { + token: 'string', + regex: '.+' + }; + var Rules = { + start: [ + { + token: 'comment.doc', + regex: '/\\*', + next: 'comment' + }, { + token: 'comment', + regex: '#.*' + }, { + token: 'keyword', + regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend + }, { + token: 'constant.language', + regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend + }, { + token: 'invalid.illegal', + regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend + }, { + token: 'language.support.class', + regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend + }, { + token: 'language.support.function', + regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend + }, { + token: 'variable.language', + regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend + }, { + token: 'identifier', + regex: identifier + '\\s*:(?![:=])' + }, { + token: 'variable', + regex: identifier + }, { + token: 'keyword.operator', + regex: '(?:\\.{3}|\\s+\\?)' + }, { + token: 'keyword.variable', + regex: '(?:@+|::|\\.\\.)', + next: 'key' + }, { + token: 'keyword.operator', + regex: '\\.\\s*', + next: 'key' + }, { + token: 'string', + regex: '\\\\\\S[^\\s,;)}\\]]*' + }, { + token: 'string.doc', + regex: '\'\'\'', + next: 'qdoc' + }, { + token: 'string.doc', + regex: '"""', + next: 'qqdoc' + }, { + token: 'string', + regex: '\'', + next: 'qstring' + }, { + token: 'string', + regex: '"', + next: 'qqstring' + }, { + token: 'string', + regex: '`', + next: 'js' + }, { + token: 'string', + regex: '<\\[', + next: 'words' + }, { + token: 'string.regex', + regex: '//', + next: 'heregex' + }, { + token: 'string.regex', + regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', + next: 'key' + }, { + token: 'constant.numeric', + regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' + }, { + token: 'lparen', + regex: '[({[]' + }, { + token: 'rparen', + regex: '[)}\\]]', + next: 'key' + }, { + token: 'keyword.operator', + regex: '\\S+' + }, { + token: 'text', + regex: '\\s+' + } + ], + heregex: [ + { + token: 'string.regex', + regex: '.*?//[gimy$?]{0,4}', + next: 'start' + }, { + token: 'string.regex', + regex: '\\s*#{' + }, { + token: 'comment.regex', + regex: '\\s+(?:#.*)?' + }, { + token: 'string.regex', + regex: '\\S+' + } + ], + key: [ + { + token: 'keyword.operator', + regex: '[.?@!]+' + }, { + token: 'identifier', + regex: identifier, + next: 'start' + }, { + token: 'text', + regex: '', + next: 'start' + } + ], + comment: [ + { + token: 'comment.doc', + regex: '.*?\\*/', + next: 'start' + }, { + token: 'comment.doc', + regex: '.+' + } + ], + qdoc: [ + { + token: 'string', + regex: ".*?'''", + next: 'key' + }, stringfill + ], + qqdoc: [ + { + token: 'string', + regex: '.*?"""', + next: 'key' + }, stringfill + ], + qstring: [ + { + token: 'string', + regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', + next: 'key' + }, stringfill + ], + qqstring: [ + { + token: 'string', + regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', + next: 'key' + }, stringfill + ], + js: [ + { + token: 'string', + regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', + next: 'key' + }, stringfill + ], + words: [ + { + token: 'string', + regex: '.*?\\]>', + next: 'key' + }, stringfill + ] + }; + for (var idx in Rules) { + var r = Rules[idx]; + if (r.splice) { + for (var i = 0, len = r.length; i < len; ++i) { + var rr = r[i]; + if (typeof rr.regex === 'string') { + Rules[idx][i].regex = new RegExp('^' + rr.regex); + } + } + } else if (typeof rr.regex === 'string') { + Rules[idx].regex = new RegExp('^' + r.regex); + } + } + + CodeMirror.defineMIME('text/x-livescript', 'livescript'); + +}); diff --git a/global/codemirror/mode/lua/index.html b/global/codemirror/mode/lua/index.html new file mode 100644 index 00000000..fc98b944 --- /dev/null +++ b/global/codemirror/mode/lua/index.html @@ -0,0 +1,85 @@ + + +CodeMirror: Lua mode + + + + + + + + + + + +
+

Lua mode

+
+ + +

Loosely based on Franciszek + Wawrzak's CodeMirror + 1 mode. One configuration parameter is + supported, specials, to which you can provide an + array of strings to have those identifiers highlighted with + the lua-special style.

+

MIME types defined: text/x-lua.

+ +
diff --git a/global/codemirror/mode/lua/lua.js b/global/codemirror/mode/lua/lua.js new file mode 100644 index 00000000..0b19abd3 --- /dev/null +++ b/global/codemirror/mode/lua/lua.js @@ -0,0 +1,159 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's +// CodeMirror 1 mode. +// highlights keywords, strings, comments (no leveling supported! ("[==[")), tokens, basic indenting + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("lua", function(config, parserConfig) { + var indentUnit = config.indentUnit; + + function prefixRE(words) { + return new RegExp("^(?:" + words.join("|") + ")", "i"); + } + function wordRE(words) { + return new RegExp("^(?:" + words.join("|") + ")$", "i"); + } + var specials = wordRE(parserConfig.specials || []); + + // long list of standard functions from lua manual + var builtins = wordRE([ + "_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load", + "loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require", + "select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall", + + "coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield", + + "debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable", + "debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable", + "debug.setupvalue","debug.traceback", + + "close","flush","lines","read","seek","setvbuf","write", + + "io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin", + "io.stdout","io.tmpfile","io.type","io.write", + + "math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg", + "math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max", + "math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh", + "math.sqrt","math.tan","math.tanh", + + "os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale", + "os.time","os.tmpname", + + "package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload", + "package.seeall", + + "string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub", + "string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper", + + "table.concat","table.insert","table.maxn","table.remove","table.sort" + ]); + var keywords = wordRE(["and","break","elseif","false","nil","not","or","return", + "true","function", "end", "if", "then", "else", "do", + "while", "repeat", "until", "for", "in", "local" ]); + + var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]); + var dedentTokens = wordRE(["end", "until", "\\)", "}"]); + var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]); + + function readBracket(stream) { + var level = 0; + while (stream.eat("=")) ++level; + stream.eat("["); + return level; + } + + function normal(stream, state) { + var ch = stream.next(); + if (ch == "-" && stream.eat("-")) { + if (stream.eat("[") && stream.eat("[")) + return (state.cur = bracketed(readBracket(stream), "comment"))(stream, state); + stream.skipToEnd(); + return "comment"; + } + if (ch == "\"" || ch == "'") + return (state.cur = string(ch))(stream, state); + if (ch == "[" && /[\[=]/.test(stream.peek())) + return (state.cur = bracketed(readBracket(stream), "string"))(stream, state); + if (/\d/.test(ch)) { + stream.eatWhile(/[\w.%]/); + return "number"; + } + if (/[\w_]/.test(ch)) { + stream.eatWhile(/[\w\\\-_.]/); + return "variable"; + } + return null; + } + + function bracketed(level, style) { + return function(stream, state) { + var curlev = null, ch; + while ((ch = stream.next()) != null) { + if (curlev == null) {if (ch == "]") curlev = 0;} + else if (ch == "=") ++curlev; + else if (ch == "]" && curlev == level) { state.cur = normal; break; } + else curlev = null; + } + return style; + }; + } + + function string(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) break; + escaped = !escaped && ch == "\\"; + } + if (!escaped) state.cur = normal; + return "string"; + }; + } + + return { + startState: function(basecol) { + return {basecol: basecol || 0, indentDepth: 0, cur: normal}; + }, + + token: function(stream, state) { + if (stream.eatSpace()) return null; + var style = state.cur(stream, state); + var word = stream.current(); + if (style == "variable") { + if (keywords.test(word)) style = "keyword"; + else if (builtins.test(word)) style = "builtin"; + else if (specials.test(word)) style = "variable-2"; + } + if ((style != "comment") && (style != "string")){ + if (indentTokens.test(word)) ++state.indentDepth; + else if (dedentTokens.test(word)) --state.indentDepth; + } + return style; + }, + + indent: function(state, textAfter) { + var closing = dedentPartial.test(textAfter); + return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0)); + }, + + lineComment: "--", + blockCommentStart: "--[[", + blockCommentEnd: "]]" + }; +}); + +CodeMirror.defineMIME("text/x-lua", "lua"); + +}); diff --git a/global/codemirror/mode/markdown/index.html b/global/codemirror/mode/markdown/index.html new file mode 100644 index 00000000..9c98c035 --- /dev/null +++ b/global/codemirror/mode/markdown/index.html @@ -0,0 +1,405 @@ + + +CodeMirror: Markdown mode + + + + + + + + + + + +
+

Markdown mode

+
+ + + +

If you also want support strikethrough, emoji and few other goodies, check out Github-Flavored Markdown mode.

+ +

Optionally depends on other modes for properly highlighted code blocks, + and XML mode for properly highlighted inline XML blocks.

+ +

Markdown mode supports these options:

+
    +
  • + +
    highlightFormatting: boolean
    +
    Whether to separately highlight markdown meta characterts (*[]()etc.) (default: false).
    +
    +
  • +
  • + +
    maxBlockquoteDepth: boolean
    +
    Maximum allowed blockquote nesting (default: 0 - infinite nesting).
    +
    +
  • +
  • + +
    xml: boolean
    +
    Whether to highlight inline XML (default: true).
    +
    +
  • +
  • + +
    fencedCodeBlockHighlighting: boolean
    +
    Whether to syntax-highlight fenced code blocks, if given mode is included (default: true).
    +
    +
  • +
  • + +
    tokenTypeOverrides: Object
    +
    When you want ot override default token type names (e.g. {code: "code"}).
    +
    +
  • +
+ +

MIME types defined: text/x-markdown.

+ +

Parsing/Highlighting Tests: normal, verbose.

+ +
diff --git a/global/codemirror/mode/markdown/markdown.js b/global/codemirror/mode/markdown/markdown.js new file mode 100644 index 00000000..907059f1 --- /dev/null +++ b/global/codemirror/mode/markdown/markdown.js @@ -0,0 +1,859 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../xml/xml"), require("../meta")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../xml/xml", "../meta"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { + + var htmlMode = CodeMirror.getMode(cmCfg, "text/html"); + var htmlModeMissing = htmlMode.name == "null" + + function getMode(name) { + if (CodeMirror.findModeByName) { + var found = CodeMirror.findModeByName(name); + if (found) name = found.mime || found.mimes[0]; + } + var mode = CodeMirror.getMode(cmCfg, name); + return mode.name == "null" ? null : mode; + } + + // Should characters that affect highlighting be highlighted separate? + // Does not include characters that will be output (such as `1.` and `-` for lists) + if (modeCfg.highlightFormatting === undefined) + modeCfg.highlightFormatting = false; + + // Maximum number of nested blockquotes. Set to 0 for infinite nesting. + // Excess `>` will emit `error` token. + if (modeCfg.maxBlockquoteDepth === undefined) + modeCfg.maxBlockquoteDepth = 0; + + // Turn on task lists? ("- [ ] " and "- [x] ") + if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; + + // Turn on strikethrough syntax + if (modeCfg.strikethrough === undefined) + modeCfg.strikethrough = false; + + if (modeCfg.emoji === undefined) + modeCfg.emoji = false; + + if (modeCfg.fencedCodeBlockHighlighting === undefined) + modeCfg.fencedCodeBlockHighlighting = true; + + if (modeCfg.xml === undefined) + modeCfg.xml = true; + + // Allow token types to be overridden by user-provided token types. + if (modeCfg.tokenTypeOverrides === undefined) + modeCfg.tokenTypeOverrides = {}; + + var tokenTypes = { + header: "header", + code: "comment", + quote: "quote", + list1: "variable-2", + list2: "variable-3", + list3: "keyword", + hr: "hr", + image: "image", + imageAltText: "image-alt-text", + imageMarker: "image-marker", + formatting: "formatting", + linkInline: "link", + linkEmail: "link", + linkText: "link", + linkHref: "string", + em: "em", + strong: "strong", + strikethrough: "strikethrough", + emoji: "builtin" + }; + + for (var tokenType in tokenTypes) { + if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) { + tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType]; + } + } + + var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/ + , listRE = /^(?:[*\-+]|^[0-9]+([.)]))\s+/ + , taskListRE = /^\[(x| )\](?=\s)/i // Must follow listRE + , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/ + , setextHeaderRE = /^ *(?:\={1,}|-{1,})\s*$/ + , textRE = /^[^#!\[\]*_\\<>` "'(~:]+/ + , fencedCodeRE = /^(~~~+|```+)[ \t]*([\w+#-]*)[^\n`]*$/ + , linkDefRE = /^\s*\[[^\]]+?\]:\s*\S+(\s*\S*\s*)?$/ // naive link-definition + , punctuation = /[!\"#$%&\'()*+,\-\.\/:;<=>?@\[\\\]^_`{|}~—]/ + , expandedTab = " " // CommonMark specifies tab as 4 spaces + + function switchInline(stream, state, f) { + state.f = state.inline = f; + return f(stream, state); + } + + function switchBlock(stream, state, f) { + state.f = state.block = f; + return f(stream, state); + } + + function lineIsEmpty(line) { + return !line || !/\S/.test(line.string) + } + + // Blocks + + function blankLine(state) { + // Reset linkTitle state + state.linkTitle = false; + // Reset EM state + state.em = false; + // Reset STRONG state + state.strong = false; + // Reset strikethrough state + state.strikethrough = false; + // Reset state.quote + state.quote = 0; + // Reset state.indentedCode + state.indentedCode = false; + if (state.f == htmlBlock) { + state.f = inlineNormal; + state.block = blockNormal; + } + // Reset state.trailingSpace + state.trailingSpace = 0; + state.trailingSpaceNewLine = false; + // Mark this line as blank + state.prevLine = state.thisLine + state.thisLine = {stream: null} + return null; + } + + function blockNormal(stream, state) { + var firstTokenOnLine = stream.column() === state.indentation; + var prevLineLineIsEmpty = lineIsEmpty(state.prevLine.stream); + var prevLineIsIndentedCode = state.indentedCode; + var prevLineIsHr = state.prevLine.hr; + var prevLineIsList = state.list !== false; + var maxNonCodeIndentation = (state.listStack[state.listStack.length - 1] || 0) + 3; + + state.indentedCode = false; + + var lineIndentation = state.indentation; + // compute once per line (on first token) + if (state.indentationDiff === null) { + state.indentationDiff = state.indentation; + if (prevLineIsList) { + state.list = null; + // While this list item's marker's indentation is less than the deepest + // list item's content's indentation,pop the deepest list item + // indentation off the stack, and update block indentation state + while (lineIndentation < state.listStack[state.listStack.length - 1]) { + state.listStack.pop(); + if (state.listStack.length) { + state.indentation = state.listStack[state.listStack.length - 1]; + // less than the first list's indent -> the line is no longer a list + } else { + state.list = false; + } + } + if (state.list !== false) { + state.indentationDiff = lineIndentation - state.listStack[state.listStack.length - 1] + } + } + } + + // not comprehensive (currently only for setext detection purposes) + var allowsInlineContinuation = ( + !prevLineLineIsEmpty && !prevLineIsHr && !state.prevLine.header && + (!prevLineIsList || !prevLineIsIndentedCode) && + !state.prevLine.fencedCodeEnd + ); + + var isHr = (state.list === false || prevLineIsHr || prevLineLineIsEmpty) && + state.indentation <= maxNonCodeIndentation && stream.match(hrRE); + + var match = null; + if (state.indentationDiff >= 4 && (prevLineIsIndentedCode || state.prevLine.fencedCodeEnd || + state.prevLine.header || prevLineLineIsEmpty)) { + stream.skipToEnd(); + state.indentedCode = true; + return tokenTypes.code; + } else if (stream.eatSpace()) { + return null; + } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(atxHeaderRE)) && match[1].length <= 6) { + state.quote = 0; + state.header = match[1].length; + state.thisLine.header = true; + if (modeCfg.highlightFormatting) state.formatting = "header"; + state.f = state.inline; + return getType(state); + } else if (state.indentation <= maxNonCodeIndentation && stream.eat('>')) { + state.quote = firstTokenOnLine ? 1 : state.quote + 1; + if (modeCfg.highlightFormatting) state.formatting = "quote"; + stream.eatSpace(); + return getType(state); + } else if (!isHr && !state.setext && firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(listRE))) { + var listType = match[1] ? "ol" : "ul"; + + state.indentation = lineIndentation + stream.current().length; + state.list = true; + state.quote = 0; + + // Add this list item's content's indentation to the stack + state.listStack.push(state.indentation); + + if (modeCfg.taskLists && stream.match(taskListRE, false)) { + state.taskList = true; + } + state.f = state.inline; + if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; + return getType(state); + } else if (firstTokenOnLine && state.indentation <= maxNonCodeIndentation && (match = stream.match(fencedCodeRE, true))) { + state.quote = 0; + state.fencedEndRE = new RegExp(match[1] + "+ *$"); + // try switching mode + state.localMode = modeCfg.fencedCodeBlockHighlighting && getMode(match[2]); + if (state.localMode) state.localState = CodeMirror.startState(state.localMode); + state.f = state.block = local; + if (modeCfg.highlightFormatting) state.formatting = "code-block"; + state.code = -1 + return getType(state); + // SETEXT has lowest block-scope precedence after HR, so check it after + // the others (code, blockquote, list...) + } else if ( + // if setext set, indicates line after ---/=== + state.setext || ( + // line before ---/=== + (!allowsInlineContinuation || !prevLineIsList) && !state.quote && state.list === false && + !state.code && !isHr && !linkDefRE.test(stream.string) && + (match = stream.lookAhead(1)) && (match = match.match(setextHeaderRE)) + ) + ) { + if ( !state.setext ) { + state.header = match[0].charAt(0) == '=' ? 1 : 2; + state.setext = state.header; + } else { + state.header = state.setext; + // has no effect on type so we can reset it now + state.setext = 0; + stream.skipToEnd(); + if (modeCfg.highlightFormatting) state.formatting = "header"; + } + state.thisLine.header = true; + state.f = state.inline; + return getType(state); + } else if (isHr) { + stream.skipToEnd(); + state.hr = true; + state.thisLine.hr = true; + return tokenTypes.hr; + } else if (stream.peek() === '[') { + return switchInline(stream, state, footnoteLink); + } + + return switchInline(stream, state, state.inline); + } + + function htmlBlock(stream, state) { + var style = htmlMode.token(stream, state.htmlState); + if (!htmlModeMissing) { + var inner = CodeMirror.innerMode(htmlMode, state.htmlState) + if ((inner.mode.name == "xml" && inner.state.tagStart === null && + (!inner.state.context && inner.state.tokenize.isInText)) || + (state.md_inside && stream.current().indexOf(">") > -1)) { + state.f = inlineNormal; + state.block = blockNormal; + state.htmlState = null; + } + } + return style; + } + + function local(stream, state) { + var currListInd = state.listStack[state.listStack.length - 1] || 0; + var hasExitedList = state.indentation < currListInd; + var maxFencedEndInd = currListInd + 3; + if (state.fencedEndRE && state.indentation <= maxFencedEndInd && (hasExitedList || stream.match(state.fencedEndRE))) { + if (modeCfg.highlightFormatting) state.formatting = "code-block"; + var returnType; + if (!hasExitedList) returnType = getType(state) + state.localMode = state.localState = null; + state.block = blockNormal; + state.f = inlineNormal; + state.fencedEndRE = null; + state.code = 0 + state.thisLine.fencedCodeEnd = true; + if (hasExitedList) return switchBlock(stream, state, state.block); + return returnType; + } else if (state.localMode) { + return state.localMode.token(stream, state.localState); + } else { + stream.skipToEnd(); + return tokenTypes.code; + } + } + + // Inline + function getType(state) { + var styles = []; + + if (state.formatting) { + styles.push(tokenTypes.formatting); + + if (typeof state.formatting === "string") state.formatting = [state.formatting]; + + for (var i = 0; i < state.formatting.length; i++) { + styles.push(tokenTypes.formatting + "-" + state.formatting[i]); + + if (state.formatting[i] === "header") { + styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.header); + } + + // Add `formatting-quote` and `formatting-quote-#` for blockquotes + // Add `error` instead if the maximum blockquote nesting depth is passed + if (state.formatting[i] === "quote") { + if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { + styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.quote); + } else { + styles.push("error"); + } + } + } + } + + if (state.taskOpen) { + styles.push("meta"); + return styles.length ? styles.join(' ') : null; + } + if (state.taskClosed) { + styles.push("property"); + return styles.length ? styles.join(' ') : null; + } + + if (state.linkHref) { + styles.push(tokenTypes.linkHref, "url"); + } else { // Only apply inline styles to non-url text + if (state.strong) { styles.push(tokenTypes.strong); } + if (state.em) { styles.push(tokenTypes.em); } + if (state.strikethrough) { styles.push(tokenTypes.strikethrough); } + if (state.emoji) { styles.push(tokenTypes.emoji); } + if (state.linkText) { styles.push(tokenTypes.linkText); } + if (state.code) { styles.push(tokenTypes.code); } + if (state.image) { styles.push(tokenTypes.image); } + if (state.imageAltText) { styles.push(tokenTypes.imageAltText, "link"); } + if (state.imageMarker) { styles.push(tokenTypes.imageMarker); } + } + + if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + "-" + state.header); } + + if (state.quote) { + styles.push(tokenTypes.quote); + + // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth + if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { + styles.push(tokenTypes.quote + "-" + state.quote); + } else { + styles.push(tokenTypes.quote + "-" + modeCfg.maxBlockquoteDepth); + } + } + + if (state.list !== false) { + var listMod = (state.listStack.length - 1) % 3; + if (!listMod) { + styles.push(tokenTypes.list1); + } else if (listMod === 1) { + styles.push(tokenTypes.list2); + } else { + styles.push(tokenTypes.list3); + } + } + + if (state.trailingSpaceNewLine) { + styles.push("trailing-space-new-line"); + } else if (state.trailingSpace) { + styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); + } + + return styles.length ? styles.join(' ') : null; + } + + function handleText(stream, state) { + if (stream.match(textRE, true)) { + return getType(state); + } + return undefined; + } + + function inlineNormal(stream, state) { + var style = state.text(stream, state); + if (typeof style !== 'undefined') + return style; + + if (state.list) { // List marker (*, +, -, 1., etc) + state.list = null; + return getType(state); + } + + if (state.taskList) { + var taskOpen = stream.match(taskListRE, true)[1] === " "; + if (taskOpen) state.taskOpen = true; + else state.taskClosed = true; + if (modeCfg.highlightFormatting) state.formatting = "task"; + state.taskList = false; + return getType(state); + } + + state.taskOpen = false; + state.taskClosed = false; + + if (state.header && stream.match(/^#+$/, true)) { + if (modeCfg.highlightFormatting) state.formatting = "header"; + return getType(state); + } + + var ch = stream.next(); + + // Matches link titles present on next line + if (state.linkTitle) { + state.linkTitle = false; + var matchCh = ch; + if (ch === '(') { + matchCh = ')'; + } + matchCh = (matchCh+'').replace(/([.?*+^\[\]\\(){}|-])/g, "\\$1"); + var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; + if (stream.match(new RegExp(regex), true)) { + return tokenTypes.linkHref; + } + } + + // If this block is changed, it may need to be updated in GFM mode + if (ch === '`') { + var previousFormatting = state.formatting; + if (modeCfg.highlightFormatting) state.formatting = "code"; + stream.eatWhile('`'); + var count = stream.current().length + if (state.code == 0 && (!state.quote || count == 1)) { + state.code = count + return getType(state) + } else if (count == state.code) { // Must be exact + var t = getType(state) + state.code = 0 + return t + } else { + state.formatting = previousFormatting + return getType(state) + } + } else if (state.code) { + return getType(state); + } + + if (ch === '\\') { + stream.next(); + if (modeCfg.highlightFormatting) { + var type = getType(state); + var formattingEscape = tokenTypes.formatting + "-escape"; + return type ? type + " " + formattingEscape : formattingEscape; + } + } + + if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { + state.imageMarker = true; + state.image = true; + if (modeCfg.highlightFormatting) state.formatting = "image"; + return getType(state); + } + + if (ch === '[' && state.imageMarker && stream.match(/[^\]]*\](\(.*?\)| ?\[.*?\])/, false)) { + state.imageMarker = false; + state.imageAltText = true + if (modeCfg.highlightFormatting) state.formatting = "image"; + return getType(state); + } + + if (ch === ']' && state.imageAltText) { + if (modeCfg.highlightFormatting) state.formatting = "image"; + var type = getType(state); + state.imageAltText = false; + state.image = false; + state.inline = state.f = linkHref; + return type; + } + + if (ch === '[' && !state.image) { + state.linkText = true; + if (modeCfg.highlightFormatting) state.formatting = "link"; + return getType(state); + } + + if (ch === ']' && state.linkText) { + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + state.linkText = false; + state.inline = state.f = stream.match(/\(.*?\)| ?\[.*?\]/, false) ? linkHref : inlineNormal + return type; + } + + if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { + state.f = state.inline = linkInline; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + if (type){ + type += " "; + } else { + type = ""; + } + return type + tokenTypes.linkInline; + } + + if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { + state.f = state.inline = linkInline; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + if (type){ + type += " "; + } else { + type = ""; + } + return type + tokenTypes.linkEmail; + } + + if (modeCfg.xml && ch === '<' && stream.match(/^(!--|[a-z]+(?:\s+[a-z_:.\-]+(?:\s*=\s*[^ >]+)?)*\s*>)/i, false)) { + var end = stream.string.indexOf(">", stream.pos); + if (end != -1) { + var atts = stream.string.substring(stream.start, end); + if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true; + } + stream.backUp(1); + state.htmlState = CodeMirror.startState(htmlMode); + return switchBlock(stream, state, htmlBlock); + } + + if (modeCfg.xml && ch === '<' && stream.match(/^\/\w*?>/)) { + state.md_inside = false; + return "tag"; + } else if (ch === "*" || ch === "_") { + var len = 1, before = stream.pos == 1 ? " " : stream.string.charAt(stream.pos - 2) + while (len < 3 && stream.eat(ch)) len++ + var after = stream.peek() || " " + // See http://spec.commonmark.org/0.27/#emphasis-and-strong-emphasis + var leftFlanking = !/\s/.test(after) && (!punctuation.test(after) || /\s/.test(before) || punctuation.test(before)) + var rightFlanking = !/\s/.test(before) && (!punctuation.test(before) || /\s/.test(after) || punctuation.test(after)) + var setEm = null, setStrong = null + if (len % 2) { // Em + if (!state.em && leftFlanking && (ch === "*" || !rightFlanking || punctuation.test(before))) + setEm = true + else if (state.em == ch && rightFlanking && (ch === "*" || !leftFlanking || punctuation.test(after))) + setEm = false + } + if (len > 1) { // Strong + if (!state.strong && leftFlanking && (ch === "*" || !rightFlanking || punctuation.test(before))) + setStrong = true + else if (state.strong == ch && rightFlanking && (ch === "*" || !leftFlanking || punctuation.test(after))) + setStrong = false + } + if (setStrong != null || setEm != null) { + if (modeCfg.highlightFormatting) state.formatting = setEm == null ? "strong" : setStrong == null ? "em" : "strong em" + if (setEm === true) state.em = ch + if (setStrong === true) state.strong = ch + var t = getType(state) + if (setEm === false) state.em = false + if (setStrong === false) state.strong = false + return t + } + } else if (ch === ' ') { + if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces + if (stream.peek() === ' ') { // Surrounded by spaces, ignore + return getType(state); + } else { // Not surrounded by spaces, back up pointer + stream.backUp(1); + } + } + } + + if (modeCfg.strikethrough) { + if (ch === '~' && stream.eatWhile(ch)) { + if (state.strikethrough) {// Remove strikethrough + if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; + var t = getType(state); + state.strikethrough = false; + return t; + } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough + state.strikethrough = true; + if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; + return getType(state); + } + } else if (ch === ' ') { + if (stream.match(/^~~/, true)) { // Probably surrounded by space + if (stream.peek() === ' ') { // Surrounded by spaces, ignore + return getType(state); + } else { // Not surrounded by spaces, back up pointer + stream.backUp(2); + } + } + } + } + + if (modeCfg.emoji && ch === ":" && stream.match(/^[a-z_\d+-]+:/)) { + state.emoji = true; + if (modeCfg.highlightFormatting) state.formatting = "emoji"; + var retType = getType(state); + state.emoji = false; + return retType; + } + + if (ch === ' ') { + if (stream.match(/ +$/, false)) { + state.trailingSpace++; + } else if (state.trailingSpace) { + state.trailingSpaceNewLine = true; + } + } + + return getType(state); + } + + function linkInline(stream, state) { + var ch = stream.next(); + + if (ch === ">") { + state.f = state.inline = inlineNormal; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var type = getType(state); + if (type){ + type += " "; + } else { + type = ""; + } + return type + tokenTypes.linkInline; + } + + stream.match(/^[^>]+/, true); + + return tokenTypes.linkInline; + } + + function linkHref(stream, state) { + // Check if space, and return NULL if so (to avoid marking the space) + if(stream.eatSpace()){ + return null; + } + var ch = stream.next(); + if (ch === '(' || ch === '[') { + state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]"); + if (modeCfg.highlightFormatting) state.formatting = "link-string"; + state.linkHref = true; + return getType(state); + } + return 'error'; + } + + var linkRE = { + ")": /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/, + "]": /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\]]|\\.)*\])*?(?=\])/ + } + + function getLinkHrefInside(endChar) { + return function(stream, state) { + var ch = stream.next(); + + if (ch === endChar) { + state.f = state.inline = inlineNormal; + if (modeCfg.highlightFormatting) state.formatting = "link-string"; + var returnState = getType(state); + state.linkHref = false; + return returnState; + } + + stream.match(linkRE[endChar]) + state.linkHref = true; + return getType(state); + }; + } + + function footnoteLink(stream, state) { + if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) { + state.f = footnoteLinkInside; + stream.next(); // Consume [ + if (modeCfg.highlightFormatting) state.formatting = "link"; + state.linkText = true; + return getType(state); + } + return switchInline(stream, state, inlineNormal); + } + + function footnoteLinkInside(stream, state) { + if (stream.match(/^\]:/, true)) { + state.f = state.inline = footnoteUrl; + if (modeCfg.highlightFormatting) state.formatting = "link"; + var returnType = getType(state); + state.linkText = false; + return returnType; + } + + stream.match(/^([^\]\\]|\\.)+/, true); + + return tokenTypes.linkText; + } + + function footnoteUrl(stream, state) { + // Check if space, and return NULL if so (to avoid marking the space) + if(stream.eatSpace()){ + return null; + } + // Match URL + stream.match(/^[^\s]+/, true); + // Check for link title + if (stream.peek() === undefined) { // End of line, set flag to check next line + state.linkTitle = true; + } else { // More content on line, check if link title + stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true); + } + state.f = state.inline = inlineNormal; + return tokenTypes.linkHref + " url"; + } + + var mode = { + startState: function() { + return { + f: blockNormal, + + prevLine: {stream: null}, + thisLine: {stream: null}, + + block: blockNormal, + htmlState: null, + indentation: 0, + + inline: inlineNormal, + text: handleText, + + formatting: false, + linkText: false, + linkHref: false, + linkTitle: false, + code: 0, + em: false, + strong: false, + header: 0, + setext: 0, + hr: false, + taskList: false, + list: false, + listStack: [], + quote: 0, + trailingSpace: 0, + trailingSpaceNewLine: false, + strikethrough: false, + emoji: false, + fencedEndRE: null + }; + }, + + copyState: function(s) { + return { + f: s.f, + + prevLine: s.prevLine, + thisLine: s.thisLine, + + block: s.block, + htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), + indentation: s.indentation, + + localMode: s.localMode, + localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, + + inline: s.inline, + text: s.text, + formatting: false, + linkText: s.linkText, + linkTitle: s.linkTitle, + code: s.code, + em: s.em, + strong: s.strong, + strikethrough: s.strikethrough, + emoji: s.emoji, + header: s.header, + setext: s.setext, + hr: s.hr, + taskList: s.taskList, + list: s.list, + listStack: s.listStack.slice(0), + quote: s.quote, + indentedCode: s.indentedCode, + trailingSpace: s.trailingSpace, + trailingSpaceNewLine: s.trailingSpaceNewLine, + md_inside: s.md_inside, + fencedEndRE: s.fencedEndRE + }; + }, + + token: function(stream, state) { + + // Reset state.formatting + state.formatting = false; + + if (stream != state.thisLine.stream) { + state.header = 0; + state.hr = false; + + if (stream.match(/^\s*$/, true)) { + blankLine(state); + return null; + } + + state.prevLine = state.thisLine + state.thisLine = {stream: stream} + + // Reset state.taskList + state.taskList = false; + + // Reset state.trailingSpace + state.trailingSpace = 0; + state.trailingSpaceNewLine = false; + + state.f = state.block; + if (state.f != htmlBlock) { + var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, expandedTab).length; + state.indentation = indentation; + state.indentationDiff = null; + if (indentation > 0) return null; + } + } + return state.f(stream, state); + }, + + innerMode: function(state) { + if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; + if (state.localState) return {state: state.localState, mode: state.localMode}; + return {state: state, mode: mode}; + }, + + indent: function(state, textAfter, line) { + if (state.block == htmlBlock && htmlMode.indent) return htmlMode.indent(state.htmlState, textAfter, line) + if (state.localState && state.localMode.indent) return state.localMode.indent(state.localState, textAfter, line) + return CodeMirror.Pass + }, + + blankLine: blankLine, + + getType: getType, + + closeBrackets: "()[]{}''\"\"``", + fold: "markdown" + }; + return mode; +}, "xml"); + +CodeMirror.defineMIME("text/x-markdown", "markdown"); + +}); diff --git a/global/codemirror/mode/markdown/test.js b/global/codemirror/mode/markdown/test.js new file mode 100644 index 00000000..a89fbca6 --- /dev/null +++ b/global/codemirror/mode/markdown/test.js @@ -0,0 +1,1289 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var config = {tabSize: 4, indentUnit: 2} + var mode = CodeMirror.getMode(config, "markdown"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + var modeHighlightFormatting = CodeMirror.getMode(config, {name: "markdown", highlightFormatting: true}); + function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } + var modeMT_noXml = CodeMirror.getMode(config, {name: "markdown", xml: false}); + function MT_noXml(name) { test.mode(name, modeMT_noXml, Array.prototype.slice.call(arguments, 1)); } + var modeMT_noFencedHighlight = CodeMirror.getMode(config, {name: "markdown", fencedCodeBlockHighlighting: false}); + function MT_noFencedHighlight(name) { test.mode(name, modeMT_noFencedHighlight, Array.prototype.slice.call(arguments, 1)); } + var modeAtxNoSpace = CodeMirror.getMode(config, {name: "markdown", allowAtxHeaderWithoutSpace: true}); + function AtxNoSpaceTest(name) { test.mode(name, modeAtxNoSpace, Array.prototype.slice.call(arguments, 1)); } + var modeOverrideClasses = CodeMirror.getMode(config, { + name: "markdown", + strikethrough: true, + emoji: true, + tokenTypeOverrides: { + "header" : "override-header", + "code" : "override-code", + "quote" : "override-quote", + "list1" : "override-list1", + "list2" : "override-list2", + "list3" : "override-list3", + "hr" : "override-hr", + "image" : "override-image", + "imageAltText": "override-image-alt-text", + "imageMarker": "override-image-marker", + "linkInline" : "override-link-inline", + "linkEmail" : "override-link-email", + "linkText" : "override-link-text", + "linkHref" : "override-link-href", + "em" : "override-em", + "strong" : "override-strong", + "strikethrough" : "override-strikethrough", + "emoji" : "override-emoji" + }}); + function TokenTypeOverrideTest(name) { test.mode(name, modeOverrideClasses, Array.prototype.slice.call(arguments, 1)); } + var modeFormattingOverride = CodeMirror.getMode(config, { + name: "markdown", + highlightFormatting: true, + tokenTypeOverrides: { + "formatting" : "override-formatting" + }}); + function FormatTokenTypeOverrideTest(name) { test.mode(name, modeFormattingOverride, Array.prototype.slice.call(arguments, 1)); } + + + FT("formatting_emAsterisk", + "[em&formatting&formatting-em *][em foo][em&formatting&formatting-em *]"); + + FT("formatting_emUnderscore", + "[em&formatting&formatting-em _][em foo][em&formatting&formatting-em _]"); + + FT("formatting_strongAsterisk", + "[strong&formatting&formatting-strong **][strong foo][strong&formatting&formatting-strong **]"); + + FT("formatting_strongUnderscore", + "[strong&formatting&formatting-strong __][strong foo][strong&formatting&formatting-strong __]"); + + FT("formatting_codeBackticks", + "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); + + FT("formatting_doubleBackticks", + "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); + + FT("formatting_atxHeader", + "[header&header-1&formatting&formatting-header&formatting-header-1 # ][header&header-1 foo # bar ][header&header-1&formatting&formatting-header&formatting-header-1 #]"); + + FT("formatting_setextHeader", + "[header&header-1 foo]", + "[header&header-1&formatting&formatting-header&formatting-header-1 =]"); + + FT("formatting_blockquote", + "[quote"e-1&formatting&formatting-quote&formatting-quote-1 > ][quote"e-1 foo]"); + + FT("formatting_list", + "[variable-2&formatting&formatting-list&formatting-list-ul - ][variable-2 foo]"); + FT("formatting_list", + "[variable-2&formatting&formatting-list&formatting-list-ol 1. ][variable-2 foo]"); + + FT("formatting_link", + "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url (][string&url http://example.com/][string&formatting&formatting-link-string&url )]"); + + FT("formatting_linkReference", + "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url [][string&url bar][string&formatting&formatting-link-string&url ]]]", + "[link&formatting&formatting-link [][link bar][link&formatting&formatting-link ]]:] [string&url http://example.com/]"); + + FT("formatting_linkWeb", + "[link&formatting&formatting-link <][link http://example.com/][link&formatting&formatting-link >]"); + + FT("formatting_linkEmail", + "[link&formatting&formatting-link <][link user@example.com][link&formatting&formatting-link >]"); + + FT("formatting_escape", + "[formatting-escape \\*]"); + + FT("formatting_image", + "[formatting&formatting-image&image&image-marker !][formatting&formatting-image&image&image-alt-text&link [[][image&image-alt-text&link alt text][formatting&formatting-image&image&image-alt-text&link ]]][formatting&formatting-link-string&string&url (][url&string http://link.to/image.jpg][formatting&formatting-link-string&string&url )]"); + + FT("codeBlock", + "[comment&formatting&formatting-code-block ```css]", + "[tag foo]", + "[comment&formatting&formatting-code-block ```]"); + + MT("plainText", + "foo"); + + // Don't style single trailing space + MT("trailingSpace1", + "foo "); + + // Two or more trailing spaces should be styled with line break character + MT("trailingSpace2", + "foo[trailing-space-a ][trailing-space-new-line ]"); + + MT("trailingSpace3", + "foo[trailing-space-a ][trailing-space-b ][trailing-space-new-line ]"); + + MT("trailingSpace4", + "foo[trailing-space-a ][trailing-space-b ][trailing-space-a ][trailing-space-new-line ]"); + + // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value) + MT("codeBlocksUsing4Spaces", + " [comment foo]"); + + // Code blocks using 4 spaces with internal indentation + MT("codeBlocksUsing4SpacesIndentation", + " [comment bar]", + " [comment hello]", + " [comment world]", + " [comment foo]", + "bar"); + + // Code blocks should end even after extra indented lines + MT("codeBlocksWithTrailingIndentedLine", + " [comment foo]", + " [comment bar]", + " [comment baz]", + " ", + "hello"); + + // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value) + MT("codeBlocksUsing1Tab", + "\t[comment foo]"); + + // No code blocks directly after paragraph + // http://spec.commonmark.org/0.19/#example-65 + MT("noCodeBlocksAfterParagraph", + "Foo", + " Bar"); + + MT("codeBlocksAfterATX", + "[header&header-1 # foo]", + " [comment code]"); + + MT("codeBlocksAfterSetext", + "[header&header-2 foo]", + "[header&header-2 ---]", + " [comment code]"); + + MT("codeBlocksAfterFencedCode", + "[comment ```]", + "[comment foo]", + "[comment ```]", + " [comment code]"); + + // Inline code using backticks + MT("inlineCodeUsingBackticks", + "foo [comment `bar`]"); + + // Block code using single backtick (shouldn't work) + MT("blockCodeSingleBacktick", + "[comment `]", + "[comment foo]", + "[comment `]"); + + // Unclosed backticks + // Instead of simply marking as CODE, it would be nice to have an + // incomplete flag for CODE, that is styled slightly different. + MT("unclosedBackticks", + "foo [comment `bar]"); + + // Per documentation: "To include a literal backtick character within a + // code span, you can use multiple backticks as the opening and closing + // delimiters" + MT("doubleBackticks", + "[comment ``foo ` bar``]"); + + // Tests based on Dingus + // http://daringfireball.net/projects/markdown/dingus + // + // Multiple backticks within an inline code block + MT("consecutiveBackticks", + "[comment `foo```bar`]"); + + // Multiple backticks within an inline code block with a second code block + MT("consecutiveBackticks", + "[comment `foo```bar`] hello [comment `world`]"); + + // Unclosed with several different groups of backticks + MT("unclosedBackticks", + "[comment ``foo ``` bar` hello]"); + + // Closed with several different groups of backticks + MT("closedBackticks", + "[comment ``foo ``` bar` hello``] world"); + + // info string cannot contain backtick, thus should result in inline code + MT("closingFencedMarksOnSameLine", + "[comment ``` code ```] foo"); + + // atx headers + // http://daringfireball.net/projects/markdown/syntax#header + + MT("atxH1", + "[header&header-1 # foo]"); + + MT("atxH2", + "[header&header-2 ## foo]"); + + MT("atxH3", + "[header&header-3 ### foo]"); + + MT("atxH4", + "[header&header-4 #### foo]"); + + MT("atxH5", + "[header&header-5 ##### foo]"); + + MT("atxH6", + "[header&header-6 ###### foo]"); + + // http://spec.commonmark.org/0.19/#example-24 + MT("noAtxH7", + "####### foo"); + + // http://spec.commonmark.org/0.19/#example-25 + MT("noAtxH1WithoutSpace", + "#5 bolt"); + + // CommonMark requires a space after # but most parsers don't + AtxNoSpaceTest("atxNoSpaceAllowed_H1NoSpace", + "[header&header-1 #foo]"); + + AtxNoSpaceTest("atxNoSpaceAllowed_H4NoSpace", + "[header&header-4 ####foo]"); + + AtxNoSpaceTest("atxNoSpaceAllowed_H1Space", + "[header&header-1 # foo]"); + + // Inline styles should be parsed inside headers + MT("atxH1inline", + "[header&header-1 # foo ][header&header-1&em *bar*]"); + + MT("atxIndentedTooMuch", + "[header&header-1 # foo]", + " [comment # bar]"); + + // disable atx inside blockquote until we implement proper blockquote inner mode + // TODO: fix to be CommonMark-compliant + MT("atxNestedInsideBlockquote", + "[quote"e-1 > # foo]"); + + MT("atxAfterBlockquote", + "[quote"e-1 > foo]", + "[header&header-1 # bar]"); + + // Setext headers - H1, H2 + // Per documentation, "Any number of underlining =’s or -’s will work." + // http://daringfireball.net/projects/markdown/syntax#header + // Ideally, the text would be marked as `header` as well, but this is + // not really feasible at the moment. So, instead, we're testing against + // what works today, to avoid any regressions. + // + // Check if single underlining = works + MT("setextH1", + "[header&header-1 foo]", + "[header&header-1 =]"); + + // Check if 3+ ='s work + MT("setextH1", + "[header&header-1 foo]", + "[header&header-1 ===]"); + + // Check if single underlining - works + MT("setextH2", + "[header&header-2 foo]", + "[header&header-2 -]"); + + // Check if 3+ -'s work + MT("setextH2", + "[header&header-2 foo]", + "[header&header-2 ---]"); + + // http://spec.commonmark.org/0.19/#example-45 + MT("setextH2AllowSpaces", + "[header&header-2 foo]", + " [header&header-2 ---- ]"); + + // http://spec.commonmark.org/0.19/#example-44 + MT("noSetextAfterIndentedCodeBlock", + " [comment foo]", + "[hr ---]"); + + MT("setextAfterFencedCode", + "[comment ```]", + "[comment foo]", + "[comment ```]", + "[header&header-2 bar]", + "[header&header-2 ---]"); + + MT("setextAferATX", + "[header&header-1 # foo]", + "[header&header-2 bar]", + "[header&header-2 ---]"); + + // http://spec.commonmark.org/0.19/#example-51 + MT("noSetextAfterQuote", + "[quote"e-1 > foo]", + "[hr ---]", + "", + "[quote"e-1 > foo]", + "[quote"e-1 bar]", + "[hr ---]"); + + MT("noSetextAfterList", + "[variable-2 - foo]", + "[hr ---]"); + + MT("noSetextAfterList_listContinuation", + "[variable-2 - foo]", + "bar", + "[hr ---]"); + + MT("setextAfterList_afterIndentedCode", + "[variable-2 - foo]", + "", + " [comment bar]", + "[header&header-2 baz]", + "[header&header-2 ---]"); + + MT("setextAfterList_afterFencedCodeBlocks", + "[variable-2 - foo]", + "", + " [comment ```]", + " [comment bar]", + " [comment ```]", + "[header&header-2 baz]", + "[header&header-2 ---]"); + + MT("setextAfterList_afterHeader", + "[variable-2 - foo]", + " [variable-2&header&header-1 # bar]", + "[header&header-2 baz]", + "[header&header-2 ---]"); + + MT("setextAfterList_afterHr", + "[variable-2 - foo]", + "", + " [hr ---]", + "[header&header-2 bar]", + "[header&header-2 ---]"); + + MT("setext_nestedInlineMarkup", + "[header&header-1 foo ][em&header&header-1 *bar*]", + "[header&header-1 =]"); + + MT("setext_linkDef", + "[link [[aaa]]:] [string&url http://google.com 'title']", + "[hr ---]"); + + // currently, looks max one line ahead, thus won't catch valid CommonMark + // markup + MT("setext_oneLineLookahead", + "foo", + "[header&header-1 bar]", + "[header&header-1 =]"); + + // ensure we don't regard space after dash as a list + MT("setext_emptyList", + "[header&header-2 foo]", + "[header&header-2 - ]", + "foo"); + + // Single-line blockquote with trailing space + MT("blockquoteSpace", + "[quote"e-1 > foo]"); + + // Single-line blockquote + MT("blockquoteNoSpace", + "[quote"e-1 >foo]"); + + // No blank line before blockquote + MT("blockquoteNoBlankLine", + "foo", + "[quote"e-1 > bar]"); + + MT("blockquoteNested", + "[quote"e-1 > foo]", + "[quote"e-1 >][quote"e-2 > foo]", + "[quote"e-1 >][quote"e-2 >][quote"e-3 > foo]"); + + // ensure quote-level is inferred correctly even if indented + MT("blockquoteNestedIndented", + " [quote"e-1 > foo]", + " [quote"e-1 >][quote"e-2 > foo]", + " [quote"e-1 >][quote"e-2 >][quote"e-3 > foo]"); + + // ensure quote-level is inferred correctly even if indented + MT("blockquoteIndentedTooMuch", + "foo", + " > bar"); + + // Single-line blockquote followed by normal paragraph + MT("blockquoteThenParagraph", + "[quote"e-1 >foo]", + "", + "bar"); + + // Multi-line blockquote (lazy mode) + MT("multiBlockquoteLazy", + "[quote"e-1 >foo]", + "[quote"e-1 bar]"); + + // Multi-line blockquote followed by normal paragraph (lazy mode) + MT("multiBlockquoteLazyThenParagraph", + "[quote"e-1 >foo]", + "[quote"e-1 bar]", + "", + "hello"); + + // Multi-line blockquote (non-lazy mode) + MT("multiBlockquote", + "[quote"e-1 >foo]", + "[quote"e-1 >bar]"); + + // Multi-line blockquote followed by normal paragraph (non-lazy mode) + MT("multiBlockquoteThenParagraph", + "[quote"e-1 >foo]", + "[quote"e-1 >bar]", + "", + "hello"); + + // disallow lists inside blockquote for now because it causes problems outside blockquote + // TODO: fix to be CommonMark-compliant + MT("listNestedInBlockquote", + "[quote"e-1 > - foo]"); + + // disallow fenced blocks inside blockquote because it causes problems outside blockquote + // TODO: fix to be CommonMark-compliant + MT("fencedBlockNestedInBlockquote", + "[quote"e-1 > ```]", + "[quote"e-1 > code]", + "[quote"e-1 > ```]", + // ensure we still allow inline code + "[quote"e-1 > ][quote"e-1&comment `code`]"); + + // Header with leading space after continued blockquote (#3287, negative indentation) + MT("headerAfterContinuedBlockquote", + "[quote"e-1 > foo]", + "[quote"e-1 bar]", + "", + " [header&header-1 # hello]"); + + // Check list types + + MT("listAsterisk", + "foo", + "bar", + "", + "[variable-2 * foo]", + "[variable-2 * bar]"); + + MT("listPlus", + "foo", + "bar", + "", + "[variable-2 + foo]", + "[variable-2 + bar]"); + + MT("listDash", + "foo", + "bar", + "", + "[variable-2 - foo]", + "[variable-2 - bar]"); + + MT("listNumber", + "foo", + "bar", + "", + "[variable-2 1. foo]", + "[variable-2 2. bar]"); + + MT("listFromParagraph", + "foo", + "[variable-2 1. bar]", + "[variable-2 2. hello]"); + + // List after hr + MT("listAfterHr", + "[hr ---]", + "[variable-2 - bar]"); + + // List after header + MT("listAfterHeader", + "[header&header-1 # foo]", + "[variable-2 - bar]"); + + // hr after list + MT("hrAfterList", + "[variable-2 - foo]", + "[hr -----]"); + + MT("hrAfterFencedCode", + "[comment ```]", + "[comment code]", + "[comment ```]", + "[hr ---]"); + + // allow hr inside lists + // (require prev line to be empty or hr, TODO: non-CommonMark-compliant) + MT("hrInsideList", + "[variable-2 - foo]", + "", + " [hr ---]", + " [hr ---]", + "", + " [comment ---]"); + + MT("consecutiveHr", + "[hr ---]", + "[hr ---]", + "[hr ---]"); + + // Formatting in lists (*) + MT("listAsteriskFormatting", + "[variable-2 * ][variable-2&em *foo*][variable-2 bar]", + "[variable-2 * ][variable-2&strong **foo**][variable-2 bar]", + "[variable-2 * ][variable-2&em&strong ***foo***][variable-2 bar]", + "[variable-2 * ][variable-2&comment `foo`][variable-2 bar]"); + + // Formatting in lists (+) + MT("listPlusFormatting", + "[variable-2 + ][variable-2&em *foo*][variable-2 bar]", + "[variable-2 + ][variable-2&strong **foo**][variable-2 bar]", + "[variable-2 + ][variable-2&em&strong ***foo***][variable-2 bar]", + "[variable-2 + ][variable-2&comment `foo`][variable-2 bar]"); + + // Formatting in lists (-) + MT("listDashFormatting", + "[variable-2 - ][variable-2&em *foo*][variable-2 bar]", + "[variable-2 - ][variable-2&strong **foo**][variable-2 bar]", + "[variable-2 - ][variable-2&em&strong ***foo***][variable-2 bar]", + "[variable-2 - ][variable-2&comment `foo`][variable-2 bar]"); + + // Formatting in lists (1.) + MT("listNumberFormatting", + "[variable-2 1. ][variable-2&em *foo*][variable-2 bar]", + "[variable-2 2. ][variable-2&strong **foo**][variable-2 bar]", + "[variable-2 3. ][variable-2&em&strong ***foo***][variable-2 bar]", + "[variable-2 4. ][variable-2&comment `foo`][variable-2 bar]"); + + // Paragraph lists + MT("listParagraph", + "[variable-2 * foo]", + "", + "[variable-2 * bar]"); + + // Multi-paragraph lists + // + // 4 spaces + MT("listMultiParagraph", + "[variable-2 * foo]", + "", + "[variable-2 * bar]", + "", + " [variable-2 hello]"); + + // 4 spaces, extra blank lines (should still be list, per Dingus) + MT("listMultiParagraphExtra", + "[variable-2 * foo]", + "", + "[variable-2 * bar]", + "", + "", + " [variable-2 hello]"); + + // 4 spaces, plus 1 space (should still be list, per Dingus) + MT("listMultiParagraphExtraSpace", + "[variable-2 * foo]", + "", + "[variable-2 * bar]", + "", + " [variable-2 hello]", + "", + " [variable-2 world]"); + + // 1 tab + MT("listTab", + "[variable-2 * foo]", + "", + "[variable-2 * bar]", + "", + "\t[variable-2 hello]"); + + // No indent + MT("listNoIndent", + "[variable-2 * foo]", + "", + "[variable-2 * bar]", + "", + "hello"); + + MT("listCommonMarkIndentationCode", + "[variable-2 * Code blocks also affect]", + " [variable-3 * The next level starts where the contents start.]", + " [variable-3 * Anything less than that will keep the item on the same level.]", + " [variable-3 * Each list item can indent the first level further and further.]", + " [variable-3 * For the most part, this makes sense while writing a list.]", + " [keyword * This means two items with same indentation can be different levels.]", + " [keyword * Each level has an indent requirement that can change between items.]", + " [keyword * A list item that meets this will be part of the next level.]", + " [variable-3 * Otherwise, it will be part of the level where it does meet this.]", + " [variable-2 * World]"); + + // should handle nested and un-nested lists + MT("listCommonMark_MixedIndents", + "[variable-2 * list1]", + " [variable-2 list1]", + " [variable-2&header&header-1 # heading still part of list1]", + " [variable-2 text after heading still part of list1]", + "", + " [comment indented codeblock]", + " [variable-2 list1 after code block]", + " [variable-3 * list2]", + // amount of spaces on empty lines between lists doesn't matter + " ", + // extra empty lines irrelevant + "", + "", + " [variable-3 indented text part of list2]", + " [keyword * list3]", + "", + " [variable-3 text at level of list2]", + "", + " [variable-2 de-indented text part of list1 again]", + "", + " [variable-2&comment ```]", + " [comment code]", + " [variable-2&comment ```]", + "", + " [variable-2 text after fenced code]"); + + // should correctly parse numbered list content indentation + MT("listCommonMark_NumeberedListIndent", + "[variable-2 1000. list with base indent of 6]", + "", + " [variable-2 text must be indented 6 spaces at minimum]", + "", + " [variable-2 9-spaces indented text still part of list]", + "", + " [comment indented codeblock starts at 10 spaces]", + "", + " [comment text indented by 5 spaces no longer belong to list]"); + + // should consider tab as 4 spaces + MT("listCommonMark_TabIndented", + "[variable-2 * list]", + "\t[variable-3 * list2]", + "", + "\t\t[variable-3 part of list2]"); + + MT("listAfterBlockquote", + "[quote"e-1 > foo]", + "[variable-2 - bar]"); + + // shouldn't create sublist if it's indented more than allowed + MT("nestedListIndentedTooMuch", + "[variable-2 - foo]", + " [variable-2 - bar]"); + + MT("listIndentedTooMuchAfterParagraph", + "foo", + " - bar"); + + // Blockquote + MT("blockquote", + "[variable-2 * foo]", + "", + "[variable-2 * bar]", + "", + " [variable-2"e"e-1 > hello]"); + + // Code block + MT("blockquoteCode", + "[variable-2 * foo]", + "", + "[variable-2 * bar]", + "", + " [comment > hello]", + "", + " [variable-2 world]"); + + // Code block followed by text + MT("blockquoteCodeText", + "[variable-2 * foo]", + "", + " [variable-2 bar]", + "", + " [comment hello]", + "", + " [variable-2 world]"); + + // Nested list + + MT("listAsteriskNested", + "[variable-2 * foo]", + "", + " [variable-3 * bar]"); + + MT("listPlusNested", + "[variable-2 + foo]", + "", + " [variable-3 + bar]"); + + MT("listDashNested", + "[variable-2 - foo]", + "", + " [variable-3 - bar]"); + + MT("listNumberNested", + "[variable-2 1. foo]", + "", + " [variable-3 2. bar]"); + + MT("listMixed", + "[variable-2 * foo]", + "", + " [variable-3 + bar]", + "", + " [keyword - hello]", + "", + " [variable-2 1. world]"); + + MT("listBlockquote", + "[variable-2 * foo]", + "", + " [variable-3 + bar]", + "", + " [quote"e-1&variable-3 > hello]"); + + MT("listCode", + "[variable-2 * foo]", + "", + " [variable-3 + bar]", + "", + " [comment hello]"); + + // Code with internal indentation + MT("listCodeIndentation", + "[variable-2 * foo]", + "", + " [comment bar]", + " [comment hello]", + " [comment world]", + " [comment foo]", + " [variable-2 bar]"); + + // List nesting edge cases + MT("listNested", + "[variable-2 * foo]", + "", + " [variable-3 * bar]", + "", + " [variable-3 hello]" + ); + MT("listNested", + "[variable-2 * foo]", + "", + " [variable-3 * bar]", + "", + " [keyword * foo]" + ); + + // Code followed by text + MT("listCodeText", + "[variable-2 * foo]", + "", + " [comment bar]", + "", + "hello"); + + // Following tests directly from official Markdown documentation + // http://daringfireball.net/projects/markdown/syntax#hr + + MT("hrSpace", + "[hr * * *]"); + + MT("hr", + "[hr ***]"); + + MT("hrLong", + "[hr *****]"); + + MT("hrSpaceDash", + "[hr - - -]"); + + MT("hrDashLong", + "[hr ---------------------------------------]"); + + //Images + MT("Images", + "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)]") + + //Images with highlight alt text + MT("imageEm", + "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&em&image&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); + + MT("imageStrong", + "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&strong&image&link **alt text**][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); + + MT("imageEmStrong", + "[image&image-marker !][image&image-alt-text&link [[][image&image-alt-text&em&strong&link ***alt text***][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); + + // Inline link with title + MT("linkTitle", + "[link [[foo]]][string&url (http://example.com/ \"bar\")] hello"); + + // Inline link without title + MT("linkNoTitle", + "[link [[foo]]][string&url (http://example.com/)] bar"); + + // Inline link with image + MT("linkImage", + "[link [[][link&image&image-marker !][link&image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)][link ]]][string&url (http://example.com/)] bar"); + + // Inline link with Em + MT("linkEm", + "[link [[][link&em *foo*][link ]]][string&url (http://example.com/)] bar"); + + // Inline link with Strong + MT("linkStrong", + "[link [[][link&strong **foo**][link ]]][string&url (http://example.com/)] bar"); + + // Inline link with EmStrong + MT("linkEmStrong", + "[link [[][link&em&strong ***foo***][link ]]][string&url (http://example.com/)] bar"); + + MT("multilineLink", + "[link [[foo]", + "[link bar]]][string&url (https://foo#_a)]", + "should not be italics") + + // Image with title + MT("imageTitle", + "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/ \"bar\")] hello"); + + // Image without title + MT("imageNoTitle", + "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/)] bar"); + + // Image with asterisks + MT("imageAsterisks", + "[image&image-marker !][image&image-alt-text&link [[ ][image&image-alt-text&em&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)] bar"); + + // Not a link. Should be normal text due to square brackets being used + // regularly in text, especially in quoted material, and no space is allowed + // between square brackets and parentheses (per Dingus). + MT("notALink", + "[link [[foo]]] (bar)"); + + // Reference-style links + MT("linkReference", + "[link [[foo]]][string&url [[bar]]] hello"); + + // Reference-style links with Em + MT("linkReferenceEm", + "[link [[][link&em *foo*][link ]]][string&url [[bar]]] hello"); + + // Reference-style links with Strong + MT("linkReferenceStrong", + "[link [[][link&strong **foo**][link ]]][string&url [[bar]]] hello"); + + // Reference-style links with EmStrong + MT("linkReferenceEmStrong", + "[link [[][link&em&strong ***foo***][link ]]][string&url [[bar]]] hello"); + + // Reference-style links with optional space separator (per documentation) + // "You can optionally use a space to separate the sets of brackets" + MT("linkReferenceSpace", + "[link [[foo]]] [string&url [[bar]]] hello"); + + // Should only allow a single space ("...use *a* space...") + MT("linkReferenceDoubleSpace", + "[link [[foo]]] [link [[bar]]] hello"); + + // Reference-style links with implicit link name + MT("linkImplicit", + "[link [[foo]]][string&url [[]]] hello"); + + // @todo It would be nice if, at some point, the document was actually + // checked to see if the referenced link exists + + // Link label, for reference-style links (taken from documentation) + + MT("labelNoTitle", + "[link [[foo]]:] [string&url http://example.com/]"); + + MT("labelIndented", + " [link [[foo]]:] [string&url http://example.com/]"); + + MT("labelSpaceTitle", + "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"]"); + + MT("labelDoubleTitle", + "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"] \"world\""); + + MT("labelTitleDoubleQuotes", + "[link [[foo]]:] [string&url http://example.com/ \"bar\"]"); + + MT("labelTitleSingleQuotes", + "[link [[foo]]:] [string&url http://example.com/ 'bar']"); + + MT("labelTitleParentheses", + "[link [[foo]]:] [string&url http://example.com/ (bar)]"); + + MT("labelTitleInvalid", + "[link [[foo]]:] [string&url http://example.com/] bar"); + + MT("labelLinkAngleBrackets", + "[link [[foo]]:] [string&url \"bar\"]"); + + MT("labelTitleNextDoubleQuotes", + "[link [[foo]]:] [string&url http://example.com/]", + "[string \"bar\"] hello"); + + MT("labelTitleNextSingleQuotes", + "[link [[foo]]:] [string&url http://example.com/]", + "[string 'bar'] hello"); + + MT("labelTitleNextParentheses", + "[link [[foo]]:] [string&url http://example.com/]", + "[string (bar)] hello"); + + MT("labelTitleNextMixed", + "[link [[foo]]:] [string&url http://example.com/]", + "(bar\" hello"); + + MT("labelEscape", + "[link [[foo \\]] ]]:] [string&url http://example.com/]"); + + MT("labelEscapeColon", + "[link [[foo \\]]: bar]]:] [string&url http://example.com/]"); + + MT("labelEscapeEnd", + "\\[[foo\\]]: http://example.com/"); + + MT("linkWeb", + "[link ] foo"); + + MT("linkWebDouble", + "[link ] foo [link ]"); + + MT("linkEmail", + "[link ] foo"); + + MT("linkEmailDouble", + "[link ] foo [link ]"); + + MT("emAsterisk", + "[em *foo*] bar"); + + MT("emUnderscore", + "[em _foo_] bar"); + + MT("emInWordAsterisk", + "foo[em *bar*]hello"); + + MT("emInWordUnderscore", + "foo_bar_hello"); + + // Per documentation: "...surround an * or _ with spaces, it’ll be + // treated as a literal asterisk or underscore." + + MT("emEscapedBySpaceIn", + "foo [em _bar _ hello_] world"); + + MT("emEscapedBySpaceOut", + "foo _ bar [em _hello_] world"); + + MT("emEscapedByNewline", + "foo", + "_ bar [em _hello_] world"); + + // Unclosed emphasis characters + // Instead of simply marking as EM / STRONG, it would be nice to have an + // incomplete flag for EM and STRONG, that is styled slightly different. + MT("emIncompleteAsterisk", + "foo [em *bar]"); + + MT("emIncompleteUnderscore", + "foo [em _bar]"); + + MT("strongAsterisk", + "[strong **foo**] bar"); + + MT("strongUnderscore", + "[strong __foo__] bar"); + + MT("emStrongAsterisk", + "[em *foo][em&strong **bar*][strong hello**] world"); + + MT("emStrongUnderscore", + "[em _foo ][em&strong __bar_][strong hello__] world"); + + // "...same character must be used to open and close an emphasis span."" + MT("emStrongMixed", + "[em _foo][em&strong **bar*hello__ world]"); + + MT("emStrongMixed", + "[em *foo ][em&strong __bar_hello** world]"); + + MT("linkWithNestedParens", + "[link [[foo]]][string&url (bar(baz))]") + + // These characters should be escaped: + // \ backslash + // ` backtick + // * asterisk + // _ underscore + // {} curly braces + // [] square brackets + // () parentheses + // # hash mark + // + plus sign + // - minus sign (hyphen) + // . dot + // ! exclamation mark + + MT("escapeBacktick", + "foo \\`bar\\`"); + + MT("doubleEscapeBacktick", + "foo \\\\[comment `bar\\\\`]"); + + MT("escapeAsterisk", + "foo \\*bar\\*"); + + MT("doubleEscapeAsterisk", + "foo \\\\[em *bar\\\\*]"); + + MT("escapeUnderscore", + "foo \\_bar\\_"); + + MT("doubleEscapeUnderscore", + "foo \\\\[em _bar\\\\_]"); + + MT("escapeHash", + "\\# foo"); + + MT("doubleEscapeHash", + "\\\\# foo"); + + MT("escapeNewline", + "\\", + "[em *foo*]"); + + // Class override tests + TokenTypeOverrideTest("overrideHeader1", + "[override-header&override-header-1 # Foo]"); + + TokenTypeOverrideTest("overrideHeader2", + "[override-header&override-header-2 ## Foo]"); + + TokenTypeOverrideTest("overrideHeader3", + "[override-header&override-header-3 ### Foo]"); + + TokenTypeOverrideTest("overrideHeader4", + "[override-header&override-header-4 #### Foo]"); + + TokenTypeOverrideTest("overrideHeader5", + "[override-header&override-header-5 ##### Foo]"); + + TokenTypeOverrideTest("overrideHeader6", + "[override-header&override-header-6 ###### Foo]"); + + TokenTypeOverrideTest("overrideCode", + "[override-code `foo`]"); + + TokenTypeOverrideTest("overrideCodeBlock", + "[override-code ```]", + "[override-code foo]", + "[override-code ```]"); + + TokenTypeOverrideTest("overrideQuote", + "[override-quote&override-quote-1 > foo]", + "[override-quote&override-quote-1 > bar]"); + + TokenTypeOverrideTest("overrideQuoteNested", + "[override-quote&override-quote-1 > foo]", + "[override-quote&override-quote-1 >][override-quote&override-quote-2 > bar]", + "[override-quote&override-quote-1 >][override-quote&override-quote-2 >][override-quote&override-quote-3 > baz]"); + + TokenTypeOverrideTest("overrideLists", + "[override-list1 - foo]", + "", + " [override-list2 + bar]", + "", + " [override-list3 * baz]", + "", + " [override-list1 1. qux]", + "", + " [override-list2 - quux]"); + + TokenTypeOverrideTest("overrideHr", + "[override-hr * * *]"); + + TokenTypeOverrideTest("overrideImage", + "[override-image&override-image-marker !][override-image&override-image-alt-text&link [[alt text]]][override-link-href&url (http://link.to/image.jpg)]"); + + TokenTypeOverrideTest("overrideLinkText", + "[override-link-text [[foo]]][override-link-href&url (http://example.com)]"); + + TokenTypeOverrideTest("overrideLinkEmailAndInline", + "[override-link-email <][override-link-inline foo@example.com>]"); + + TokenTypeOverrideTest("overrideEm", + "[override-em *foo*]"); + + TokenTypeOverrideTest("overrideStrong", + "[override-strong **foo**]"); + + TokenTypeOverrideTest("overrideStrikethrough", + "[override-strikethrough ~~foo~~]"); + + TokenTypeOverrideTest("overrideEmoji", + "[override-emoji :foo:]"); + + FormatTokenTypeOverrideTest("overrideFormatting", + "[override-formatting-escape \\*]"); + + // Tests to make sure GFM-specific things aren't getting through + + MT("taskList", + "[variable-2 * ][link&variable-2 [[ ]]][variable-2 bar]"); + + MT("fencedCodeBlocks", + "[comment ```]", + "[comment foo]", + "", + "[comment bar]", + "[comment ```]", + "baz"); + + MT("fencedCodeBlocks_invalidClosingFence_trailingText", + "[comment ```]", + "[comment foo]", + "[comment ``` must not have trailing text]", + "[comment baz]"); + + MT("fencedCodeBlocks_invalidClosingFence_trailingTabs", + "[comment ```]", + "[comment foo]", + "[comment ```\t]", + "[comment baz]"); + + MT("fencedCodeBlocks_validClosingFence", + "[comment ```]", + "[comment foo]", + // may have trailing spaces + "[comment ``` ]", + "baz"); + + MT("fencedCodeBlocksInList_closingFenceIndented", + "[variable-2 - list]", + " [variable-2&comment ```]", + " [comment foo]", + " [variable-2&comment ```]", + " [variable-2 baz]"); + + MT("fencedCodeBlocksInList_closingFenceIndentedTooMuch", + "[variable-2 - list]", + " [variable-2&comment ```]", + " [comment foo]", + " [comment ```]", + " [comment baz]"); + + MT("fencedCodeBlockModeSwitching", + "[comment ```javascript]", + "[variable foo]", + "", + "[comment ```]", + "bar"); + + MT_noFencedHighlight("fencedCodeBlock_noHighlight", + "[comment ```javascript]", + "[comment foo]", + "[comment ```]"); + + MT("fencedCodeBlockModeSwitchingObjc", + "[comment ```objective-c]", + "[keyword @property] [variable NSString] [operator *] [variable foo];", + "[comment ```]", + "bar"); + + MT("fencedCodeBlocksMultipleChars", + "[comment `````]", + "[comment foo]", + "[comment ```]", + "[comment foo]", + "[comment `````]", + "bar"); + + MT("fencedCodeBlocksTildes", + "[comment ~~~]", + "[comment foo]", + "[comment ~~~]", + "bar"); + + MT("fencedCodeBlocksTildesMultipleChars", + "[comment ~~~~~]", + "[comment ~~~]", + "[comment foo]", + "[comment ~~~~~]", + "bar"); + + MT("fencedCodeBlocksMultipleChars", + "[comment `````]", + "[comment foo]", + "[comment ```]", + "[comment foo]", + "[comment `````]", + "bar"); + + MT("fencedCodeBlocksMixed", + "[comment ~~~]", + "[comment ```]", + "[comment foo]", + "[comment ~~~]", + "bar"); + + MT("fencedCodeBlocksAfterBlockquote", + "[quote"e-1 > foo]", + "[comment ```]", + "[comment bar]", + "[comment ```]"); + + // fencedCode indented too much should act as simple indentedCode + // (hence has no highlight formatting) + FT("tooMuchIndentedFencedCode", + " [comment ```]", + " [comment code]", + " [comment ```]"); + + MT("autoTerminateFencedCodeWhenLeavingList", + "[variable-2 - list1]", + " [variable-3 - list2]", + " [variable-3&comment ```]", + " [comment code]", + " [variable-3 - list2]", + " [variable-2&comment ```]", + " [comment code]", + "[quote"e-1 > foo]"); + + // Tests that require XML mode + + MT("xmlMode", + "[tag&bracket <][tag div][tag&bracket >]", + " *foo*", + " [tag&bracket <][tag http://github.com][tag&bracket />]", + "[tag&bracket ]", + "[link ]"); + + MT("xmlModeWithMarkdownInside", + "[tag&bracket <][tag div] [attribute markdown]=[string 1][tag&bracket >]", + "[em *foo*]", + "[link ]", + "[tag ]", + "[link ]", + "[tag&bracket <][tag div][tag&bracket >]", + "[tag&bracket ]"); + + MT_noXml("xmlHighlightDisabled", + "
foo
"); + +})(); diff --git a/global/codemirror/mode/mathematica/index.html b/global/codemirror/mode/mathematica/index.html new file mode 100644 index 00000000..57c42985 --- /dev/null +++ b/global/codemirror/mode/mathematica/index.html @@ -0,0 +1,72 @@ + + +CodeMirror: Mathematica mode + + + + + + + + + + +
+

Mathematica mode

+ + + + + + +

MIME types defined: text/x-mathematica (Mathematica).

+
diff --git a/global/codemirror/mode/mathematica/mathematica.js b/global/codemirror/mode/mathematica/mathematica.js new file mode 100644 index 00000000..d6977088 --- /dev/null +++ b/global/codemirror/mode/mathematica/mathematica.js @@ -0,0 +1,176 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Mathematica mode copyright (c) 2015 by Calin Barbat +// Based on code by Patrick Scheibe (halirutan) +// See: https://github.com/halirutan/Mathematica-Source-Highlighting/tree/master/src/lang-mma.js + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('mathematica', function(_config, _parserConfig) { + + // used pattern building blocks + var Identifier = '[a-zA-Z\\$][a-zA-Z0-9\\$]*'; + var pBase = "(?:\\d+)"; + var pFloat = "(?:\\.\\d+|\\d+\\.\\d*|\\d+)"; + var pFloatBase = "(?:\\.\\w+|\\w+\\.\\w*|\\w+)"; + var pPrecision = "(?:`(?:`?"+pFloat+")?)"; + + // regular expressions + var reBaseForm = new RegExp('(?:'+pBase+'(?:\\^\\^'+pFloatBase+pPrecision+'?(?:\\*\\^[+-]?\\d+)?))'); + var reFloatForm = new RegExp('(?:' + pFloat + pPrecision + '?(?:\\*\\^[+-]?\\d+)?)'); + var reIdInContext = new RegExp('(?:`?)(?:' + Identifier + ')(?:`(?:' + Identifier + '))*(?:`?)'); + + function tokenBase(stream, state) { + var ch; + + // get next character + ch = stream.next(); + + // string + if (ch === '"') { + state.tokenize = tokenString; + return state.tokenize(stream, state); + } + + // comment + if (ch === '(') { + if (stream.eat('*')) { + state.commentLevel++; + state.tokenize = tokenComment; + return state.tokenize(stream, state); + } + } + + // go back one character + stream.backUp(1); + + // look for numbers + // Numbers in a baseform + if (stream.match(reBaseForm, true, false)) { + return 'number'; + } + + // Mathematica numbers. Floats (1.2, .2, 1.) can have optionally a precision (`float) or an accuracy definition + // (``float). Note: while 1.2` is possible 1.2`` is not. At the end an exponent (float*^+12) can follow. + if (stream.match(reFloatForm, true, false)) { + return 'number'; + } + + /* In[23] and Out[34] */ + if (stream.match(/(?:In|Out)\[[0-9]*\]/, true, false)) { + return 'atom'; + } + + // usage + if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::usage)/, true, false)) { + return 'meta'; + } + + // message + if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/, true, false)) { + return 'string-2'; + } + + // this makes a look-ahead match for something like variable:{_Integer} + // the match is then forwarded to the mma-patterns tokenizer. + if (stream.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/, true, false)) { + return 'variable-2'; + } + + // catch variables which are used together with Blank (_), BlankSequence (__) or BlankNullSequence (___) + // Cannot start with a number, but can have numbers at any other position. Examples + // blub__Integer, a1_, b34_Integer32 + if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) { + return 'variable-2'; + } + if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/, true, false)) { + return 'variable-2'; + } + if (stream.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) { + return 'variable-2'; + } + + // Named characters in Mathematica, like \[Gamma]. + if (stream.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/, true, false)) { + return 'variable-3'; + } + + // Match all braces separately + if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) { + return 'bracket'; + } + + // Catch Slots (#, ##, #3, ##9 and the V10 named slots #name). I have never seen someone using more than one digit after #, so we match + // only one. + if (stream.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/, true, false)) { + return 'variable-2'; + } + + // Literals like variables, keywords, functions + if (stream.match(reIdInContext, true, false)) { + return 'keyword'; + } + + // operators. Note that operators like @@ or /; are matched separately for each symbol. + if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) { + return 'operator'; + } + + // everything else is an error + stream.next(); // advance the stream. + return 'error'; + } + + function tokenString(stream, state) { + var next, end = false, escaped = false; + while ((next = stream.next()) != null) { + if (next === '"' && !escaped) { + end = true; + break; + } + escaped = !escaped && next === '\\'; + } + if (end && !escaped) { + state.tokenize = tokenBase; + } + return 'string'; + }; + + function tokenComment(stream, state) { + var prev, next; + while(state.commentLevel > 0 && (next = stream.next()) != null) { + if (prev === '(' && next === '*') state.commentLevel++; + if (prev === '*' && next === ')') state.commentLevel--; + prev = next; + } + if (state.commentLevel <= 0) { + state.tokenize = tokenBase; + } + return 'comment'; + } + + return { + startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, + token: function(stream, state) { + if (stream.eatSpace()) return null; + return state.tokenize(stream, state); + }, + blockCommentStart: "(*", + blockCommentEnd: "*)" + }; +}); + +CodeMirror.defineMIME('text/x-mathematica', { + name: 'mathematica' +}); + +}); diff --git a/global/codemirror/mode/mbox/index.html b/global/codemirror/mode/mbox/index.html new file mode 100644 index 00000000..248ea98e --- /dev/null +++ b/global/codemirror/mode/mbox/index.html @@ -0,0 +1,44 @@ + + +CodeMirror: mbox mode + + + + + + + + + +
+

mbox mode

+
+ + +

MIME types defined: application/mbox.

+ +
diff --git a/global/codemirror/mode/mbox/mbox.js b/global/codemirror/mode/mbox/mbox.js new file mode 100644 index 00000000..ba2416ac --- /dev/null +++ b/global/codemirror/mode/mbox/mbox.js @@ -0,0 +1,129 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +var rfc2822 = [ + "From", "Sender", "Reply-To", "To", "Cc", "Bcc", "Message-ID", + "In-Reply-To", "References", "Resent-From", "Resent-Sender", "Resent-To", + "Resent-Cc", "Resent-Bcc", "Resent-Message-ID", "Return-Path", "Received" +]; +var rfc2822NoEmail = [ + "Date", "Subject", "Comments", "Keywords", "Resent-Date" +]; + +CodeMirror.registerHelper("hintWords", "mbox", rfc2822.concat(rfc2822NoEmail)); + +var whitespace = /^[ \t]/; +var separator = /^From /; // See RFC 4155 +var rfc2822Header = new RegExp("^(" + rfc2822.join("|") + "): "); +var rfc2822HeaderNoEmail = new RegExp("^(" + rfc2822NoEmail.join("|") + "): "); +var header = /^[^:]+:/; // Optional fields defined in RFC 2822 +var email = /^[^ ]+@[^ ]+/; +var untilEmail = /^.*?(?=[^ ]+?@[^ ]+)/; +var bracketedEmail = /^<.*?>/; +var untilBracketedEmail = /^.*?(?=<.*>)/; + +function styleForHeader(header) { + if (header === "Subject") return "header"; + return "string"; +} + +function readToken(stream, state) { + if (stream.sol()) { + // From last line + state.inSeparator = false; + if (state.inHeader && stream.match(whitespace)) { + // Header folding + return null; + } else { + state.inHeader = false; + state.header = null; + } + + if (stream.match(separator)) { + state.inHeaders = true; + state.inSeparator = true; + return "atom"; + } + + var match; + var emailPermitted = false; + if ((match = stream.match(rfc2822HeaderNoEmail)) || + (emailPermitted = true) && (match = stream.match(rfc2822Header))) { + state.inHeaders = true; + state.inHeader = true; + state.emailPermitted = emailPermitted; + state.header = match[1]; + return "atom"; + } + + // Use vim's heuristics: recognize custom headers only if the line is in a + // block of legitimate headers. + if (state.inHeaders && (match = stream.match(header))) { + state.inHeader = true; + state.emailPermitted = true; + state.header = match[1]; + return "atom"; + } + + state.inHeaders = false; + stream.skipToEnd(); + return null; + } + + if (state.inSeparator) { + if (stream.match(email)) return "link"; + if (stream.match(untilEmail)) return "atom"; + stream.skipToEnd(); + return "atom"; + } + + if (state.inHeader) { + var style = styleForHeader(state.header); + + if (state.emailPermitted) { + if (stream.match(bracketedEmail)) return style + " link"; + if (stream.match(untilBracketedEmail)) return style; + } + stream.skipToEnd(); + return style; + } + + stream.skipToEnd(); + return null; +}; + +CodeMirror.defineMode("mbox", function() { + return { + startState: function() { + return { + // Is in a mbox separator + inSeparator: false, + // Is in a mail header + inHeader: false, + // If bracketed email is permitted. Only applicable when inHeader + emailPermitted: false, + // Name of current header + header: null, + // Is in a region of mail headers + inHeaders: false + }; + }, + token: readToken, + blankLine: function(state) { + state.inHeaders = state.inSeparator = state.inHeader = false; + } + }; +}); + +CodeMirror.defineMIME("application/mbox", "mbox"); +}); diff --git a/global/codemirror/mode/meta.js b/global/codemirror/mode/meta.js new file mode 100644 index 00000000..d5426a79 --- /dev/null +++ b/global/codemirror/mode/meta.js @@ -0,0 +1,216 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.modeInfo = [ + {name: "APL", mime: "text/apl", mode: "apl", ext: ["dyalog", "apl"]}, + {name: "PGP", mimes: ["application/pgp", "application/pgp-encrypted", "application/pgp-keys", "application/pgp-signature"], mode: "asciiarmor", ext: ["asc", "pgp", "sig"]}, + {name: "ASN.1", mime: "text/x-ttcn-asn", mode: "asn.1", ext: ["asn", "asn1"]}, + {name: "Asterisk", mime: "text/x-asterisk", mode: "asterisk", file: /^extensions\.conf$/i}, + {name: "Brainfuck", mime: "text/x-brainfuck", mode: "brainfuck", ext: ["b", "bf"]}, + {name: "C", mime: "text/x-csrc", mode: "clike", ext: ["c", "h"]}, + {name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"], alias: ["cpp"]}, + {name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]}, + {name: "C#", mime: "text/x-csharp", mode: "clike", ext: ["cs"], alias: ["csharp"]}, + {name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj", "cljc", "cljx"]}, + {name: "ClojureScript", mime: "text/x-clojurescript", mode: "clojure", ext: ["cljs"]}, + {name: "Closure Stylesheets (GSS)", mime: "text/x-gss", mode: "css", ext: ["gss"]}, + {name: "CMake", mime: "text/x-cmake", mode: "cmake", ext: ["cmake", "cmake.in"], file: /^CMakeLists.txt$/}, + {name: "CoffeeScript", mimes: ["application/vnd.coffeescript", "text/coffeescript", "text/x-coffeescript"], mode: "coffeescript", ext: ["coffee"], alias: ["coffee", "coffee-script"]}, + {name: "Common Lisp", mime: "text/x-common-lisp", mode: "commonlisp", ext: ["cl", "lisp", "el"], alias: ["lisp"]}, + {name: "Cypher", mime: "application/x-cypher-query", mode: "cypher", ext: ["cyp", "cypher"]}, + {name: "Cython", mime: "text/x-cython", mode: "python", ext: ["pyx", "pxd", "pxi"]}, + {name: "Crystal", mime: "text/x-crystal", mode: "crystal", ext: ["cr"]}, + {name: "CSS", mime: "text/css", mode: "css", ext: ["css"]}, + {name: "CQL", mime: "text/x-cassandra", mode: "sql", ext: ["cql"]}, + {name: "D", mime: "text/x-d", mode: "d", ext: ["d"]}, + {name: "Dart", mimes: ["application/dart", "text/x-dart"], mode: "dart", ext: ["dart"]}, + {name: "diff", mime: "text/x-diff", mode: "diff", ext: ["diff", "patch"]}, + {name: "Django", mime: "text/x-django", mode: "django"}, + {name: "Dockerfile", mime: "text/x-dockerfile", mode: "dockerfile", file: /^Dockerfile$/}, + {name: "DTD", mime: "application/xml-dtd", mode: "dtd", ext: ["dtd"]}, + {name: "Dylan", mime: "text/x-dylan", mode: "dylan", ext: ["dylan", "dyl", "intr"]}, + {name: "EBNF", mime: "text/x-ebnf", mode: "ebnf"}, + {name: "ECL", mime: "text/x-ecl", mode: "ecl", ext: ["ecl"]}, + {name: "edn", mime: "application/edn", mode: "clojure", ext: ["edn"]}, + {name: "Eiffel", mime: "text/x-eiffel", mode: "eiffel", ext: ["e"]}, + {name: "Elm", mime: "text/x-elm", mode: "elm", ext: ["elm"]}, + {name: "Embedded Javascript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]}, + {name: "Embedded Ruby", mime: "application/x-erb", mode: "htmlembedded", ext: ["erb"]}, + {name: "Erlang", mime: "text/x-erlang", mode: "erlang", ext: ["erl"]}, + {name: "Esper", mime: "text/x-esper", mode: "sql"}, + {name: "Factor", mime: "text/x-factor", mode: "factor", ext: ["factor"]}, + {name: "FCL", mime: "text/x-fcl", mode: "fcl"}, + {name: "Forth", mime: "text/x-forth", mode: "forth", ext: ["forth", "fth", "4th"]}, + {name: "Fortran", mime: "text/x-fortran", mode: "fortran", ext: ["f", "for", "f77", "f90"]}, + {name: "F#", mime: "text/x-fsharp", mode: "mllike", ext: ["fs"], alias: ["fsharp"]}, + {name: "Gas", mime: "text/x-gas", mode: "gas", ext: ["s"]}, + {name: "Gherkin", mime: "text/x-feature", mode: "gherkin", ext: ["feature"]}, + {name: "GitHub Flavored Markdown", mime: "text/x-gfm", mode: "gfm", file: /^(readme|contributing|history).md$/i}, + {name: "Go", mime: "text/x-go", mode: "go", ext: ["go"]}, + {name: "Groovy", mime: "text/x-groovy", mode: "groovy", ext: ["groovy", "gradle"], file: /^Jenkinsfile$/}, + {name: "HAML", mime: "text/x-haml", mode: "haml", ext: ["haml"]}, + {name: "Haskell", mime: "text/x-haskell", mode: "haskell", ext: ["hs"]}, + {name: "Haskell (Literate)", mime: "text/x-literate-haskell", mode: "haskell-literate", ext: ["lhs"]}, + {name: "Haxe", mime: "text/x-haxe", mode: "haxe", ext: ["hx"]}, + {name: "HXML", mime: "text/x-hxml", mode: "haxe", ext: ["hxml"]}, + {name: "ASP.NET", mime: "application/x-aspx", mode: "htmlembedded", ext: ["aspx"], alias: ["asp", "aspx"]}, + {name: "HTML", mime: "text/html", mode: "htmlmixed", ext: ["html", "htm"], alias: ["xhtml"]}, + {name: "HTTP", mime: "message/http", mode: "http"}, + {name: "IDL", mime: "text/x-idl", mode: "idl", ext: ["pro"]}, + {name: "Pug", mime: "text/x-pug", mode: "pug", ext: ["jade", "pug"], alias: ["jade"]}, + {name: "Java", mime: "text/x-java", mode: "clike", ext: ["java"]}, + {name: "Java Server Pages", mime: "application/x-jsp", mode: "htmlembedded", ext: ["jsp"], alias: ["jsp"]}, + {name: "JavaScript", mimes: ["text/javascript", "text/ecmascript", "application/javascript", "application/x-javascript", "application/ecmascript"], + mode: "javascript", ext: ["js"], alias: ["ecmascript", "js", "node"]}, + {name: "JSON", mimes: ["application/json", "application/x-json"], mode: "javascript", ext: ["json", "map"], alias: ["json5"]}, + {name: "JSON-LD", mime: "application/ld+json", mode: "javascript", ext: ["jsonld"], alias: ["jsonld"]}, + {name: "JSX", mime: "text/jsx", mode: "jsx", ext: ["jsx"]}, + {name: "Jinja2", mime: "null", mode: "jinja2"}, + {name: "Julia", mime: "text/x-julia", mode: "julia", ext: ["jl"]}, + {name: "Kotlin", mime: "text/x-kotlin", mode: "clike", ext: ["kt"]}, + {name: "LESS", mime: "text/x-less", mode: "css", ext: ["less"]}, + {name: "LiveScript", mime: "text/x-livescript", mode: "livescript", ext: ["ls"], alias: ["ls"]}, + {name: "Lua", mime: "text/x-lua", mode: "lua", ext: ["lua"]}, + {name: "Markdown", mime: "text/x-markdown", mode: "markdown", ext: ["markdown", "md", "mkd"]}, + {name: "mIRC", mime: "text/mirc", mode: "mirc"}, + {name: "MariaDB SQL", mime: "text/x-mariadb", mode: "sql"}, + {name: "Mathematica", mime: "text/x-mathematica", mode: "mathematica", ext: ["m", "nb"]}, + {name: "Modelica", mime: "text/x-modelica", mode: "modelica", ext: ["mo"]}, + {name: "MUMPS", mime: "text/x-mumps", mode: "mumps", ext: ["mps"]}, + {name: "MS SQL", mime: "text/x-mssql", mode: "sql"}, + {name: "mbox", mime: "application/mbox", mode: "mbox", ext: ["mbox"]}, + {name: "MySQL", mime: "text/x-mysql", mode: "sql"}, + {name: "Nginx", mime: "text/x-nginx-conf", mode: "nginx", file: /nginx.*\.conf$/i}, + {name: "NSIS", mime: "text/x-nsis", mode: "nsis", ext: ["nsh", "nsi"]}, + {name: "NTriples", mimes: ["application/n-triples", "application/n-quads", "text/n-triples"], + mode: "ntriples", ext: ["nt", "nq"]}, + {name: "Objective C", mime: "text/x-objectivec", mode: "clike", ext: ["m", "mm"], alias: ["objective-c", "objc"]}, + {name: "OCaml", mime: "text/x-ocaml", mode: "mllike", ext: ["ml", "mli", "mll", "mly"]}, + {name: "Octave", mime: "text/x-octave", mode: "octave", ext: ["m"]}, + {name: "Oz", mime: "text/x-oz", mode: "oz", ext: ["oz"]}, + {name: "Pascal", mime: "text/x-pascal", mode: "pascal", ext: ["p", "pas"]}, + {name: "PEG.js", mime: "null", mode: "pegjs", ext: ["jsonld"]}, + {name: "Perl", mime: "text/x-perl", mode: "perl", ext: ["pl", "pm"]}, + {name: "PHP", mime: "application/x-httpd-php", mode: "php", ext: ["php", "php3", "php4", "php5", "php7", "phtml"]}, + {name: "Pig", mime: "text/x-pig", mode: "pig", ext: ["pig"]}, + {name: "Plain Text", mime: "text/plain", mode: "null", ext: ["txt", "text", "conf", "def", "list", "log"]}, + {name: "PLSQL", mime: "text/x-plsql", mode: "sql", ext: ["pls"]}, + {name: "PowerShell", mime: "application/x-powershell", mode: "powershell", ext: ["ps1", "psd1", "psm1"]}, + {name: "Properties files", mime: "text/x-properties", mode: "properties", ext: ["properties", "ini", "in"], alias: ["ini", "properties"]}, + {name: "ProtoBuf", mime: "text/x-protobuf", mode: "protobuf", ext: ["proto"]}, + {name: "Python", mime: "text/x-python", mode: "python", ext: ["BUILD", "bzl", "py", "pyw"], file: /^(BUCK|BUILD)$/}, + {name: "Puppet", mime: "text/x-puppet", mode: "puppet", ext: ["pp"]}, + {name: "Q", mime: "text/x-q", mode: "q", ext: ["q"]}, + {name: "R", mime: "text/x-rsrc", mode: "r", ext: ["r", "R"], alias: ["rscript"]}, + {name: "reStructuredText", mime: "text/x-rst", mode: "rst", ext: ["rst"], alias: ["rst"]}, + {name: "RPM Changes", mime: "text/x-rpm-changes", mode: "rpm"}, + {name: "RPM Spec", mime: "text/x-rpm-spec", mode: "rpm", ext: ["spec"]}, + {name: "Ruby", mime: "text/x-ruby", mode: "ruby", ext: ["rb"], alias: ["jruby", "macruby", "rake", "rb", "rbx"]}, + {name: "Rust", mime: "text/x-rustsrc", mode: "rust", ext: ["rs"]}, + {name: "SAS", mime: "text/x-sas", mode: "sas", ext: ["sas"]}, + {name: "Sass", mime: "text/x-sass", mode: "sass", ext: ["sass"]}, + {name: "Scala", mime: "text/x-scala", mode: "clike", ext: ["scala"]}, + {name: "Scheme", mime: "text/x-scheme", mode: "scheme", ext: ["scm", "ss"]}, + {name: "SCSS", mime: "text/x-scss", mode: "css", ext: ["scss"]}, + {name: "Shell", mimes: ["text/x-sh", "application/x-sh"], mode: "shell", ext: ["sh", "ksh", "bash"], alias: ["bash", "sh", "zsh"], file: /^PKGBUILD$/}, + {name: "Sieve", mime: "application/sieve", mode: "sieve", ext: ["siv", "sieve"]}, + {name: "Slim", mimes: ["text/x-slim", "application/x-slim"], mode: "slim", ext: ["slim"]}, + {name: "Smalltalk", mime: "text/x-stsrc", mode: "smalltalk", ext: ["st"]}, + {name: "Smarty", mime: "text/x-smarty", mode: "smarty", ext: ["tpl"]}, + {name: "Solr", mime: "text/x-solr", mode: "solr"}, + {name: "Soy", mime: "text/x-soy", mode: "soy", ext: ["soy"], alias: ["closure template"]}, + {name: "SPARQL", mime: "application/sparql-query", mode: "sparql", ext: ["rq", "sparql"], alias: ["sparul"]}, + {name: "Spreadsheet", mime: "text/x-spreadsheet", mode: "spreadsheet", alias: ["excel", "formula"]}, + {name: "SQL", mime: "text/x-sql", mode: "sql", ext: ["sql"]}, + {name: "SQLite", mime: "text/x-sqlite", mode: "sql"}, + {name: "Squirrel", mime: "text/x-squirrel", mode: "clike", ext: ["nut"]}, + {name: "Stylus", mime: "text/x-styl", mode: "stylus", ext: ["styl"]}, + {name: "Swift", mime: "text/x-swift", mode: "swift", ext: ["swift"]}, + {name: "sTeX", mime: "text/x-stex", mode: "stex"}, + {name: "LaTeX", mime: "text/x-latex", mode: "stex", ext: ["text", "ltx"], alias: ["tex"]}, + {name: "SystemVerilog", mime: "text/x-systemverilog", mode: "verilog", ext: ["v", "sv", "svh"]}, + {name: "Tcl", mime: "text/x-tcl", mode: "tcl", ext: ["tcl"]}, + {name: "Textile", mime: "text/x-textile", mode: "textile", ext: ["textile"]}, + {name: "TiddlyWiki ", mime: "text/x-tiddlywiki", mode: "tiddlywiki"}, + {name: "Tiki wiki", mime: "text/tiki", mode: "tiki"}, + {name: "TOML", mime: "text/x-toml", mode: "toml", ext: ["toml"]}, + {name: "Tornado", mime: "text/x-tornado", mode: "tornado"}, + {name: "troff", mime: "text/troff", mode: "troff", ext: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]}, + {name: "TTCN", mime: "text/x-ttcn", mode: "ttcn", ext: ["ttcn", "ttcn3", "ttcnpp"]}, + {name: "TTCN_CFG", mime: "text/x-ttcn-cfg", mode: "ttcn-cfg", ext: ["cfg"]}, + {name: "Turtle", mime: "text/turtle", mode: "turtle", ext: ["ttl"]}, + {name: "TypeScript", mime: "application/typescript", mode: "javascript", ext: ["ts"], alias: ["ts"]}, + {name: "TypeScript-JSX", mime: "text/typescript-jsx", mode: "jsx", ext: ["tsx"], alias: ["tsx"]}, + {name: "Twig", mime: "text/x-twig", mode: "twig"}, + {name: "Web IDL", mime: "text/x-webidl", mode: "webidl", ext: ["webidl"]}, + {name: "VB.NET", mime: "text/x-vb", mode: "vb", ext: ["vb"]}, + {name: "VBScript", mime: "text/vbscript", mode: "vbscript", ext: ["vbs"]}, + {name: "Velocity", mime: "text/velocity", mode: "velocity", ext: ["vtl"]}, + {name: "Verilog", mime: "text/x-verilog", mode: "verilog", ext: ["v"]}, + {name: "VHDL", mime: "text/x-vhdl", mode: "vhdl", ext: ["vhd", "vhdl"]}, + {name: "Vue.js Component", mimes: ["script/x-vue", "text/x-vue"], mode: "vue", ext: ["vue"]}, + {name: "XML", mimes: ["application/xml", "text/xml"], mode: "xml", ext: ["xml", "xsl", "xsd", "svg"], alias: ["rss", "wsdl", "xsd"]}, + {name: "XQuery", mime: "application/xquery", mode: "xquery", ext: ["xy", "xquery"]}, + {name: "Yacas", mime: "text/x-yacas", mode: "yacas", ext: ["ys"]}, + {name: "YAML", mimes: ["text/x-yaml", "text/yaml"], mode: "yaml", ext: ["yaml", "yml"], alias: ["yml"]}, + {name: "Z80", mime: "text/x-z80", mode: "z80", ext: ["z80"]}, + {name: "mscgen", mime: "text/x-mscgen", mode: "mscgen", ext: ["mscgen", "mscin", "msc"]}, + {name: "xu", mime: "text/x-xu", mode: "mscgen", ext: ["xu"]}, + {name: "msgenny", mime: "text/x-msgenny", mode: "mscgen", ext: ["msgenny"]} + ]; + // Ensure all modes have a mime property for backwards compatibility + for (var i = 0; i < CodeMirror.modeInfo.length; i++) { + var info = CodeMirror.modeInfo[i]; + if (info.mimes) info.mime = info.mimes[0]; + } + + CodeMirror.findModeByMIME = function(mime) { + mime = mime.toLowerCase(); + for (var i = 0; i < CodeMirror.modeInfo.length; i++) { + var info = CodeMirror.modeInfo[i]; + if (info.mime == mime) return info; + if (info.mimes) for (var j = 0; j < info.mimes.length; j++) + if (info.mimes[j] == mime) return info; + } + if (/\+xml$/.test(mime)) return CodeMirror.findModeByMIME("application/xml") + if (/\+json$/.test(mime)) return CodeMirror.findModeByMIME("application/json") + }; + + CodeMirror.findModeByExtension = function(ext) { + for (var i = 0; i < CodeMirror.modeInfo.length; i++) { + var info = CodeMirror.modeInfo[i]; + if (info.ext) for (var j = 0; j < info.ext.length; j++) + if (info.ext[j] == ext) return info; + } + }; + + CodeMirror.findModeByFileName = function(filename) { + for (var i = 0; i < CodeMirror.modeInfo.length; i++) { + var info = CodeMirror.modeInfo[i]; + if (info.file && info.file.test(filename)) return info; + } + var dot = filename.lastIndexOf("."); + var ext = dot > -1 && filename.substring(dot + 1, filename.length); + if (ext) return CodeMirror.findModeByExtension(ext); + }; + + CodeMirror.findModeByName = function(name) { + name = name.toLowerCase(); + for (var i = 0; i < CodeMirror.modeInfo.length; i++) { + var info = CodeMirror.modeInfo[i]; + if (info.name.toLowerCase() == name) return info; + if (info.alias) for (var j = 0; j < info.alias.length; j++) + if (info.alias[j].toLowerCase() == name) return info; + } + }; +}); diff --git a/global/codemirror/mode/mirc/index.html b/global/codemirror/mode/mirc/index.html new file mode 100644 index 00000000..fd2f34e4 --- /dev/null +++ b/global/codemirror/mode/mirc/index.html @@ -0,0 +1,160 @@ + + +CodeMirror: mIRC mode + + + + + + + + + + +
+

mIRC mode

+
+ + +

MIME types defined: text/mirc.

+ +
diff --git a/global/codemirror/mode/mirc/mirc.js b/global/codemirror/mode/mirc/mirc.js new file mode 100644 index 00000000..71ac4ddf --- /dev/null +++ b/global/codemirror/mode/mirc/mirc.js @@ -0,0 +1,193 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +//mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMIME("text/mirc", "mirc"); +CodeMirror.defineMode("mirc", function() { + function parseWords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + var specials = parseWords("$! $$ $& $? $+ $abook $abs $active $activecid " + + "$activewid $address $addtok $agent $agentname $agentstat $agentver " + + "$alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime " + + "$asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind " + + "$binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes " + + "$chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color " + + "$com $comcall $comchan $comerr $compact $compress $comval $cos $count " + + "$cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight " + + "$dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress " + + "$deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll " + + "$dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error " + + "$eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir " + + "$finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve " + + "$fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt " + + "$group $halted $hash $height $hfind $hget $highlight $hnick $hotline " + + "$hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil " + + "$inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect " + + "$insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile " + + "$isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive " + + "$lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock " + + "$lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer " + + "$maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext " + + "$menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode " + + "$modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile " + + "$nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly " + + "$opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree " + + "$pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo " + + "$readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex " + + "$reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline " + + "$sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin " + + "$site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname " + + "$sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped " + + "$syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp " + + "$timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel " + + "$ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver " + + "$version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor"); + var keywords = parseWords("abook ajinvite alias aline ame amsg anick aop auser autojoin avoice " + + "away background ban bcopy beep bread break breplace bset btrunc bunset bwrite " + + "channel clear clearall cline clipboard close cnick color comclose comopen " + + "comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver " + + "debug dec describe dialog did didtok disable disconnect dlevel dline dll " + + "dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace " + + "drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable " + + "events exit fclose filter findtext finger firewall flash flist flood flush " + + "flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove " + + "gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd " + + "halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear " + + "ialmark identd if ignore iline inc invite iuser join kick linesep links list " + + "load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice " + + "notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice " + + "qme qmsg query queryn quit raw reload remini remote remove rename renwin " + + "reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini " + + "say scid scon server set showmirc signam sline sockaccept sockclose socklist " + + "socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite " + + "sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize " + + "toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho " + + "var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum " + + "isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower " + + "isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs " + + "elseif else goto menu nicklist status title icon size option text edit " + + "button check radio box scroll list combo link tab item"); + var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); + var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + function tokenBase(stream, state) { + var beforeParams = state.beforeParams; + state.beforeParams = false; + var ch = stream.next(); + if (/[\[\]{}\(\),\.]/.test(ch)) { + if (ch == "(" && beforeParams) state.inParams = true; + else if (ch == ")") state.inParams = false; + return null; + } + else if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } + else if (ch == "\\") { + stream.eat("\\"); + stream.eat(/./); + return "number"; + } + else if (ch == "/" && stream.eat("*")) { + return chain(stream, state, tokenComment); + } + else if (ch == ";" && stream.match(/ *\( *\(/)) { + return chain(stream, state, tokenUnparsed); + } + else if (ch == ";" && !state.inParams) { + stream.skipToEnd(); + return "comment"; + } + else if (ch == '"') { + stream.eat(/"/); + return "keyword"; + } + else if (ch == "$") { + stream.eatWhile(/[$_a-z0-9A-Z\.:]/); + if (specials && specials.propertyIsEnumerable(stream.current().toLowerCase())) { + return "keyword"; + } + else { + state.beforeParams = true; + return "builtin"; + } + } + else if (ch == "%") { + stream.eatWhile(/[^,\s()]/); + state.beforeParams = true; + return "string"; + } + else if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + else { + stream.eatWhile(/[\w\$_{}]/); + var word = stream.current().toLowerCase(); + if (keywords && keywords.propertyIsEnumerable(word)) + return "keyword"; + if (functions && functions.propertyIsEnumerable(word)) { + state.beforeParams = true; + return "keyword"; + } + return null; + } + } + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + function tokenUnparsed(stream, state) { + var maybeEnd = 0, ch; + while (ch = stream.next()) { + if (ch == ";" && maybeEnd == 2) { + state.tokenize = tokenBase; + break; + } + if (ch == ")") + maybeEnd++; + else if (ch != " ") + maybeEnd = 0; + } + return "meta"; + } + return { + startState: function() { + return { + tokenize: tokenBase, + beforeParams: false, + inParams: false + }; + }, + token: function(stream, state) { + if (stream.eatSpace()) return null; + return state.tokenize(stream, state); + } + }; +}); + +}); diff --git a/global/codemirror/mode/mllike/index.html b/global/codemirror/mode/mllike/index.html new file mode 100644 index 00000000..5923af8f --- /dev/null +++ b/global/codemirror/mode/mllike/index.html @@ -0,0 +1,179 @@ + + +CodeMirror: ML-like mode + + + + + + + + + + +
+

OCaml mode

+ + + + +

F# mode

+ + + + + +

MIME types defined: text/x-ocaml (OCaml) and text/x-fsharp (F#).

+
diff --git a/global/codemirror/mode/mllike/mllike.js b/global/codemirror/mode/mllike/mllike.js new file mode 100644 index 00000000..4d0be609 --- /dev/null +++ b/global/codemirror/mode/mllike/mllike.js @@ -0,0 +1,208 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('mllike', function(_config, parserConfig) { + var words = { + 'let': 'keyword', + 'rec': 'keyword', + 'in': 'keyword', + 'of': 'keyword', + 'and': 'keyword', + 'if': 'keyword', + 'then': 'keyword', + 'else': 'keyword', + 'for': 'keyword', + 'to': 'keyword', + 'while': 'keyword', + 'do': 'keyword', + 'done': 'keyword', + 'fun': 'keyword', + 'function': 'keyword', + 'val': 'keyword', + 'type': 'keyword', + 'mutable': 'keyword', + 'match': 'keyword', + 'with': 'keyword', + 'try': 'keyword', + 'open': 'builtin', + 'ignore': 'builtin', + 'begin': 'keyword', + 'end': 'keyword' + }; + + var extraWords = parserConfig.extraWords || {}; + for (var prop in extraWords) { + if (extraWords.hasOwnProperty(prop)) { + words[prop] = parserConfig.extraWords[prop]; + } + } + + function tokenBase(stream, state) { + var ch = stream.next(); + + if (ch === '"') { + state.tokenize = tokenString; + return state.tokenize(stream, state); + } + if (ch === '(') { + if (stream.eat('*')) { + state.commentLevel++; + state.tokenize = tokenComment; + return state.tokenize(stream, state); + } + } + if (ch === '~') { + stream.eatWhile(/\w/); + return 'variable-2'; + } + if (ch === '`') { + stream.eatWhile(/\w/); + return 'quote'; + } + if (ch === '/' && parserConfig.slashComments && stream.eat('/')) { + stream.skipToEnd(); + return 'comment'; + } + if (/\d/.test(ch)) { + stream.eatWhile(/[\d]/); + if (stream.eat('.')) { + stream.eatWhile(/[\d]/); + } + return 'number'; + } + if ( /[+\-*&%=<>!?|]/.test(ch)) { + return 'operator'; + } + if (/[\w\xa1-\uffff]/.test(ch)) { + stream.eatWhile(/[\w\xa1-\uffff]/); + var cur = stream.current(); + return words.hasOwnProperty(cur) ? words[cur] : 'variable'; + } + return null + } + + function tokenString(stream, state) { + var next, end = false, escaped = false; + while ((next = stream.next()) != null) { + if (next === '"' && !escaped) { + end = true; + break; + } + escaped = !escaped && next === '\\'; + } + if (end && !escaped) { + state.tokenize = tokenBase; + } + return 'string'; + }; + + function tokenComment(stream, state) { + var prev, next; + while(state.commentLevel > 0 && (next = stream.next()) != null) { + if (prev === '(' && next === '*') state.commentLevel++; + if (prev === '*' && next === ')') state.commentLevel--; + prev = next; + } + if (state.commentLevel <= 0) { + state.tokenize = tokenBase; + } + return 'comment'; + } + + return { + startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, + token: function(stream, state) { + if (stream.eatSpace()) return null; + return state.tokenize(stream, state); + }, + + blockCommentStart: "(*", + blockCommentEnd: "*)", + lineComment: parserConfig.slashComments ? "//" : null + }; +}); + +CodeMirror.defineMIME('text/x-ocaml', { + name: 'mllike', + extraWords: { + 'succ': 'keyword', + 'trace': 'builtin', + 'exit': 'builtin', + 'print_string': 'builtin', + 'print_endline': 'builtin', + 'true': 'atom', + 'false': 'atom', + 'raise': 'keyword' + } +}); + +CodeMirror.defineMIME('text/x-fsharp', { + name: 'mllike', + extraWords: { + 'abstract': 'keyword', + 'as': 'keyword', + 'assert': 'keyword', + 'base': 'keyword', + 'class': 'keyword', + 'default': 'keyword', + 'delegate': 'keyword', + 'downcast': 'keyword', + 'downto': 'keyword', + 'elif': 'keyword', + 'exception': 'keyword', + 'extern': 'keyword', + 'finally': 'keyword', + 'global': 'keyword', + 'inherit': 'keyword', + 'inline': 'keyword', + 'interface': 'keyword', + 'internal': 'keyword', + 'lazy': 'keyword', + 'let!': 'keyword', + 'member' : 'keyword', + 'module': 'keyword', + 'namespace': 'keyword', + 'new': 'keyword', + 'null': 'keyword', + 'override': 'keyword', + 'private': 'keyword', + 'public': 'keyword', + 'return': 'keyword', + 'return!': 'keyword', + 'select': 'keyword', + 'static': 'keyword', + 'struct': 'keyword', + 'upcast': 'keyword', + 'use': 'keyword', + 'use!': 'keyword', + 'val': 'keyword', + 'when': 'keyword', + 'yield': 'keyword', + 'yield!': 'keyword', + + 'List': 'builtin', + 'Seq': 'builtin', + 'Map': 'builtin', + 'Set': 'builtin', + 'int': 'builtin', + 'string': 'builtin', + 'raise': 'builtin', + 'failwith': 'builtin', + 'not': 'builtin', + 'true': 'builtin', + 'false': 'builtin' + }, + slashComments: true +}); + +}); diff --git a/global/codemirror/mode/modelica/index.html b/global/codemirror/mode/modelica/index.html new file mode 100644 index 00000000..408c3b17 --- /dev/null +++ b/global/codemirror/mode/modelica/index.html @@ -0,0 +1,67 @@ + + +CodeMirror: Modelica mode + + + + + + + + + + + + +
+

Modelica mode

+ +
+ + + +

Simple mode that tries to handle Modelica as well as it can.

+ +

MIME types defined: text/x-modelica + (Modlica code).

+
diff --git a/global/codemirror/mode/modelica/modelica.js b/global/codemirror/mode/modelica/modelica.js new file mode 100644 index 00000000..77ec7a3c --- /dev/null +++ b/global/codemirror/mode/modelica/modelica.js @@ -0,0 +1,245 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Modelica support for CodeMirror, copyright (c) by Lennart Ochel + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +}) + +(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("modelica", function(config, parserConfig) { + + var indentUnit = config.indentUnit; + var keywords = parserConfig.keywords || {}; + var builtin = parserConfig.builtin || {}; + var atoms = parserConfig.atoms || {}; + + var isSingleOperatorChar = /[;=\(:\),{}.*<>+\-\/^\[\]]/; + var isDoubleOperatorChar = /(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/; + var isDigit = /[0-9]/; + var isNonDigit = /[_a-zA-Z]/; + + function tokenLineComment(stream, state) { + stream.skipToEnd(); + state.tokenize = null; + return "comment"; + } + + function tokenBlockComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (maybeEnd && ch == "/") { + state.tokenize = null; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function tokenString(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == '"' && !escaped) { + state.tokenize = null; + state.sol = false; + break; + } + escaped = !escaped && ch == "\\"; + } + + return "string"; + } + + function tokenIdent(stream, state) { + stream.eatWhile(isDigit); + while (stream.eat(isDigit) || stream.eat(isNonDigit)) { } + + + var cur = stream.current(); + + if(state.sol && (cur == "package" || cur == "model" || cur == "when" || cur == "connector")) state.level++; + else if(state.sol && cur == "end" && state.level > 0) state.level--; + + state.tokenize = null; + state.sol = false; + + if (keywords.propertyIsEnumerable(cur)) return "keyword"; + else if (builtin.propertyIsEnumerable(cur)) return "builtin"; + else if (atoms.propertyIsEnumerable(cur)) return "atom"; + else return "variable"; + } + + function tokenQIdent(stream, state) { + while (stream.eat(/[^']/)) { } + + state.tokenize = null; + state.sol = false; + + if(stream.eat("'")) + return "variable"; + else + return "error"; + } + + function tokenUnsignedNuber(stream, state) { + stream.eatWhile(isDigit); + if (stream.eat('.')) { + stream.eatWhile(isDigit); + } + if (stream.eat('e') || stream.eat('E')) { + if (!stream.eat('-')) + stream.eat('+'); + stream.eatWhile(isDigit); + } + + state.tokenize = null; + state.sol = false; + return "number"; + } + + // Interface + return { + startState: function() { + return { + tokenize: null, + level: 0, + sol: true + }; + }, + + token: function(stream, state) { + if(state.tokenize != null) { + return state.tokenize(stream, state); + } + + if(stream.sol()) { + state.sol = true; + } + + // WHITESPACE + if(stream.eatSpace()) { + state.tokenize = null; + return null; + } + + var ch = stream.next(); + + // LINECOMMENT + if(ch == '/' && stream.eat('/')) { + state.tokenize = tokenLineComment; + } + // BLOCKCOMMENT + else if(ch == '/' && stream.eat('*')) { + state.tokenize = tokenBlockComment; + } + // TWO SYMBOL TOKENS + else if(isDoubleOperatorChar.test(ch+stream.peek())) { + stream.next(); + state.tokenize = null; + return "operator"; + } + // SINGLE SYMBOL TOKENS + else if(isSingleOperatorChar.test(ch)) { + state.tokenize = null; + return "operator"; + } + // IDENT + else if(isNonDigit.test(ch)) { + state.tokenize = tokenIdent; + } + // Q-IDENT + else if(ch == "'" && stream.peek() && stream.peek() != "'") { + state.tokenize = tokenQIdent; + } + // STRING + else if(ch == '"') { + state.tokenize = tokenString; + } + // UNSIGNED_NUBER + else if(isDigit.test(ch)) { + state.tokenize = tokenUnsignedNuber; + } + // ERROR + else { + state.tokenize = null; + return "error"; + } + + return state.tokenize(stream, state); + }, + + indent: function(state, textAfter) { + if (state.tokenize != null) return CodeMirror.Pass; + + var level = state.level; + if(/(algorithm)/.test(textAfter)) level--; + if(/(equation)/.test(textAfter)) level--; + if(/(initial algorithm)/.test(textAfter)) level--; + if(/(initial equation)/.test(textAfter)) level--; + if(/(end)/.test(textAfter)) level--; + + if(level > 0) + return indentUnit*level; + else + return 0; + }, + + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//" + }; + }); + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i=0; i + +CodeMirror: MscGen mode + + + + + + + + + +
+

MscGen mode

+ +
+ +

Xù mode

+ +
+ +

MsGenny mode

+
+ +

+ Simple mode for highlighting MscGen and two derived sequence + chart languages. +

+ + + +

MIME types defined: + text/x-mscgen + text/x-xu + text/x-msgenny +

+ +
diff --git a/global/codemirror/mode/mscgen/mscgen.js b/global/codemirror/mode/mscgen/mscgen.js new file mode 100644 index 00000000..2cd6f427 --- /dev/null +++ b/global/codemirror/mode/mscgen/mscgen.js @@ -0,0 +1,175 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// mode(s) for the sequence chart dsl's mscgen, xù and msgenny +// For more information on mscgen, see the site of the original author: +// http://www.mcternan.me.uk/mscgen +// +// This mode for mscgen and the two derivative languages were +// originally made for use in the mscgen_js interpreter +// (https://sverweij.github.io/mscgen_js) + +(function(mod) { + if ( typeof exports == "object" && typeof module == "object")// CommonJS + mod(require("../../lib/codemirror")); + else if ( typeof define == "function" && define.amd)// AMD + define(["../../lib/codemirror"], mod); + else// Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + var languages = { + mscgen: { + "keywords" : ["msc"], + "options" : ["hscale", "width", "arcgradient", "wordwraparcs"], + "constants" : ["true", "false", "on", "off"], + "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"], + "brackets" : ["\\{", "\\}"], // [ and ] are brackets too, but these get handled in with lists + "arcsWords" : ["note", "abox", "rbox", "box"], + "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], + "singlecomment" : ["//", "#"], + "operators" : ["="] + }, + xu: { + "keywords" : ["msc", "xu"], + "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"], + "constants" : ["true", "false", "on", "off", "auto"], + "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"], + "brackets" : ["\\{", "\\}"], // [ and ] are brackets too, but these get handled in with lists + "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"], + "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], + "singlecomment" : ["//", "#"], + "operators" : ["="] + }, + msgenny: { + "keywords" : null, + "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"], + "constants" : ["true", "false", "on", "off", "auto"], + "attributes" : null, + "brackets" : ["\\{", "\\}"], + "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"], + "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], + "singlecomment" : ["//", "#"], + "operators" : ["="] + } + } + + CodeMirror.defineMode("mscgen", function(_, modeConfig) { + var language = languages[modeConfig && modeConfig.language || "mscgen"] + return { + startState: startStateFn, + copyState: copyStateFn, + token: produceTokenFunction(language), + lineComment : "#", + blockCommentStart : "/*", + blockCommentEnd : "*/" + }; + }); + + CodeMirror.defineMIME("text/x-mscgen", "mscgen"); + CodeMirror.defineMIME("text/x-xu", {name: "mscgen", language: "xu"}); + CodeMirror.defineMIME("text/x-msgenny", {name: "mscgen", language: "msgenny"}); + + function wordRegexpBoundary(pWords) { + return new RegExp("\\b(" + pWords.join("|") + ")\\b", "i"); + } + + function wordRegexp(pWords) { + return new RegExp("(" + pWords.join("|") + ")", "i"); + } + + function startStateFn() { + return { + inComment : false, + inString : false, + inAttributeList : false, + inScript : false + }; + } + + function copyStateFn(pState) { + return { + inComment : pState.inComment, + inString : pState.inString, + inAttributeList : pState.inAttributeList, + inScript : pState.inScript + }; + } + + function produceTokenFunction(pConfig) { + + return function(pStream, pState) { + if (pStream.match(wordRegexp(pConfig.brackets), true, true)) { + return "bracket"; + } + /* comments */ + if (!pState.inComment) { + if (pStream.match(/\/\*[^\*\/]*/, true, true)) { + pState.inComment = true; + return "comment"; + } + if (pStream.match(wordRegexp(pConfig.singlecomment), true, true)) { + pStream.skipToEnd(); + return "comment"; + } + } + if (pState.inComment) { + if (pStream.match(/[^\*\/]*\*\//, true, true)) + pState.inComment = false; + else + pStream.skipToEnd(); + return "comment"; + } + /* strings */ + if (!pState.inString && pStream.match(/\"(\\\"|[^\"])*/, true, true)) { + pState.inString = true; + return "string"; + } + if (pState.inString) { + if (pStream.match(/[^\"]*\"/, true, true)) + pState.inString = false; + else + pStream.skipToEnd(); + return "string"; + } + /* keywords & operators */ + if (!!pConfig.keywords && pStream.match(wordRegexpBoundary(pConfig.keywords), true, true)) + return "keyword"; + + if (pStream.match(wordRegexpBoundary(pConfig.options), true, true)) + return "keyword"; + + if (pStream.match(wordRegexpBoundary(pConfig.arcsWords), true, true)) + return "keyword"; + + if (pStream.match(wordRegexp(pConfig.arcsOthers), true, true)) + return "keyword"; + + if (!!pConfig.operators && pStream.match(wordRegexp(pConfig.operators), true, true)) + return "operator"; + + if (!!pConfig.constants && pStream.match(wordRegexp(pConfig.constants), true, true)) + return "variable"; + + /* attribute lists */ + if (!pConfig.inAttributeList && !!pConfig.attributes && pStream.match(/\[/, true, true)) { + pConfig.inAttributeList = true; + return "bracket"; + } + if (pConfig.inAttributeList) { + if (pConfig.attributes !== null && pStream.match(wordRegexpBoundary(pConfig.attributes), true, true)) { + return "attribute"; + } + if (pStream.match(/]/, true, true)) { + pConfig.inAttributeList = false; + return "bracket"; + } + } + + pStream.next(); + return "base"; + }; + } + +}); diff --git a/global/codemirror/mode/mscgen/mscgen_test.js b/global/codemirror/mode/mscgen/mscgen_test.js new file mode 100644 index 00000000..956c5758 --- /dev/null +++ b/global/codemirror/mode/mscgen/mscgen_test.js @@ -0,0 +1,83 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "mscgen"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("empty chart", + "[keyword msc][bracket {]", + "[base ]", + "[bracket }]" + ); + + MT("comments", + "[comment // a single line comment]", + "[comment # another single line comment /* and */ ignored here]", + "[comment /* A multi-line comment even though it contains]", + "[comment msc keywords and \"quoted text\"*/]"); + + MT("strings", + "[string \"// a string\"]", + "[string \"a string running over]", + "[string two lines\"]", + "[string \"with \\\"escaped quote\"]" + ); + + MT("xù/ msgenny keywords classify as 'base'", + "[base watermark]", + "[base alt loop opt ref else break par seq assert]" + ); + + MT("xù/ msgenny constants classify as 'base'", + "[base auto]" + ); + + MT("mscgen constants classify as 'variable'", + "[variable true]", "[variable false]", "[variable on]", "[variable off]" + ); + + MT("mscgen options classify as keyword", + "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" + ); + + MT("mscgen arcs classify as keyword", + "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", + "[keyword |||...---]", "[keyword ..--==::]", + "[keyword ->]", "[keyword <-]", "[keyword <->]", + "[keyword =>]", "[keyword <=]", "[keyword <=>]", + "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", + "[keyword >>]", "[keyword <<]", "[keyword <<>>]", + "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", + "[keyword :>]", "[keyword <:]", "[keyword <:>]" + ); + + MT("within an attribute list, attributes classify as attribute", + "[bracket [[][attribute label]", + "[attribute id]","[attribute url]","[attribute idurl]", + "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]", + "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]", + "[attribute arcskip][bracket ]]]" + ); + + MT("outside an attribute list, attributes classify as base", + "[base label]", + "[base id]","[base url]","[base idurl]", + "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]", + "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]", + "[base arcskip]" + ); + + MT("a typical program", + "[comment # typical mscgen program]", + "[keyword msc][base ][bracket {]", + "[keyword wordwraparcs][operator =][variable true][base , ][keyword hscale][operator =][string \"0.8\"][base , ][keyword arcgradient][operator =][base 30;]", + "[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]", + "[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]", + "[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]", + "[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]", + "[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]", + "[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]", + "[bracket }]" + ); +})(); diff --git a/global/codemirror/mode/mscgen/msgenny_test.js b/global/codemirror/mode/mscgen/msgenny_test.js new file mode 100644 index 00000000..edf9da09 --- /dev/null +++ b/global/codemirror/mode/mscgen/msgenny_test.js @@ -0,0 +1,76 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-msgenny"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "msgenny"); } + + MT("comments", + "[comment // a single line comment]", + "[comment # another single line comment /* and */ ignored here]", + "[comment /* A multi-line comment even though it contains]", + "[comment msc keywords and \"quoted text\"*/]"); + + MT("strings", + "[string \"// a string\"]", + "[string \"a string running over]", + "[string two lines\"]", + "[string \"with \\\"escaped quote\"]" + ); + + MT("xù/ msgenny keywords classify as 'keyword'", + "[keyword watermark]", + "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]" + ); + + MT("xù/ msgenny constants classify as 'variable'", + "[variable auto]", + "[variable true]", "[variable false]", "[variable on]", "[variable off]" + ); + + MT("mscgen options classify as keyword", + "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" + ); + + MT("mscgen arcs classify as keyword", + "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", + "[keyword |||...---]", "[keyword ..--==::]", + "[keyword ->]", "[keyword <-]", "[keyword <->]", + "[keyword =>]", "[keyword <=]", "[keyword <=>]", + "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", + "[keyword >>]", "[keyword <<]", "[keyword <<>>]", + "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", + "[keyword :>]", "[keyword <:]", "[keyword <:>]" + ); + + MT("within an attribute list, mscgen/ xù attributes classify as base", + "[base [[label]", + "[base idurl id url]", + "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]", + "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]", + "[base arcskip]]]" + ); + + MT("outside an attribute list, mscgen/ xù attributes classify as base", + "[base label]", + "[base idurl id url]", + "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]", + "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]", + "[base arcskip]" + ); + + MT("a typical program", + "[comment # typical msgenny program]", + "[keyword wordwraparcs][operator =][variable true][base , ][keyword hscale][operator =][string \"0.8\"][base , ][keyword arcgradient][operator =][base 30;]", + "[base a : ][string \"Entity A\"][base ,]", + "[base b : Entity B,]", + "[base c : Entity C;]", + "[base a ][keyword =>>][base b: ][string \"Hello entity B\"][base ;]", + "[base a ][keyword alt][base c][bracket {]", + "[base a ][keyword <<][base b: ][string \"Here's an answer dude!\"][base ;]", + "[keyword ---][base : ][string \"sorry, won't march - comm glitch\"]", + "[base a ][keyword x-][base b: ][string \"Here's an answer dude! (won't arrive...)\"][base ;]", + "[bracket }]", + "[base c ][keyword :>][base *: What about me?;]" + ); +})(); diff --git a/global/codemirror/mode/mscgen/xu_test.js b/global/codemirror/mode/mscgen/xu_test.js new file mode 100644 index 00000000..950aeca1 --- /dev/null +++ b/global/codemirror/mode/mscgen/xu_test.js @@ -0,0 +1,86 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-xu"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "xu"); } + + MT("empty chart", + "[keyword msc][bracket {]", + "[base ]", + "[bracket }]" + ); + + MT("empty chart", + "[keyword xu][bracket {]", + "[base ]", + "[bracket }]" + ); + + MT("comments", + "[comment // a single line comment]", + "[comment # another single line comment /* and */ ignored here]", + "[comment /* A multi-line comment even though it contains]", + "[comment msc keywords and \"quoted text\"*/]"); + + MT("strings", + "[string \"// a string\"]", + "[string \"a string running over]", + "[string two lines\"]", + "[string \"with \\\"escaped quote\"]" + ); + + MT("xù/ msgenny keywords classify as 'keyword'", + "[keyword watermark]", + "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]" + ); + + MT("xù/ msgenny constants classify as 'variable'", + "[variable auto]", + "[variable true]", "[variable false]", "[variable on]", "[variable off]" + ); + + MT("mscgen options classify as keyword", + "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" + ); + + MT("mscgen arcs classify as keyword", + "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", + "[keyword |||...---]", "[keyword ..--==::]", + "[keyword ->]", "[keyword <-]", "[keyword <->]", + "[keyword =>]", "[keyword <=]", "[keyword <=>]", + "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", + "[keyword >>]", "[keyword <<]", "[keyword <<>>]", + "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", + "[keyword :>]", "[keyword <:]", "[keyword <:>]" + ); + + MT("within an attribute list, attributes classify as attribute", + "[bracket [[][attribute label]", + "[attribute id]","[attribute url]","[attribute idurl]", + "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]", + "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]", + "[attribute arcskip][bracket ]]]" + ); + + MT("outside an attribute list, attributes classify as base", + "[base label]", + "[base id]","[base url]","[base idurl]", + "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]", + "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]", + "[base arcskip]" + ); + + MT("a typical program", + "[comment # typical xu program]", + "[keyword xu][base ][bracket {]", + "[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][base , ][keyword arcgradient][operator =][base 30, ][keyword width][operator =][variable auto][base ;]", + "[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]", + "[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]", + "[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]", + "[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]", + "[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]", + "[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]", + "[bracket }]" + ); +})(); diff --git a/global/codemirror/mode/mumps/index.html b/global/codemirror/mode/mumps/index.html new file mode 100644 index 00000000..b1f92c21 --- /dev/null +++ b/global/codemirror/mode/mumps/index.html @@ -0,0 +1,85 @@ + + +CodeMirror: MUMPS mode + + + + + + + + + +
+

MUMPS mode

+ + +
+ + +
diff --git a/global/codemirror/mode/mumps/mumps.js b/global/codemirror/mode/mumps/mumps.js new file mode 100644 index 00000000..469f8c3d --- /dev/null +++ b/global/codemirror/mode/mumps/mumps.js @@ -0,0 +1,148 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/* + This MUMPS Language script was constructed using vbscript.js as a template. +*/ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("mumps", function() { + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); + } + + var singleOperators = new RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]"); + var doubleOperators = new RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))"); + var singleDelimiters = new RegExp("^[\\.,:]"); + var brackets = new RegExp("[()]"); + var identifiers = new RegExp("^[%A-Za-z][A-Za-z0-9]*"); + var commandKeywords = ["break","close","do","else","for","goto", "halt", "hang", "if", "job","kill","lock","merge","new","open", "quit", "read", "set", "tcommit", "trollback", "tstart", "use", "view", "write", "xecute", "b","c","d","e","f","g", "h", "i", "j","k","l","m","n","o", "q", "r", "s", "tc", "tro", "ts", "u", "v", "w", "x"]; + // The following list includes instrinsic functions _and_ special variables + var intrinsicFuncsWords = ["\\$ascii", "\\$char", "\\$data", "\\$ecode", "\\$estack", "\\$etrap", "\\$extract", "\\$find", "\\$fnumber", "\\$get", "\\$horolog", "\\$io", "\\$increment", "\\$job", "\\$justify", "\\$length", "\\$name", "\\$next", "\\$order", "\\$piece", "\\$qlength", "\\$qsubscript", "\\$query", "\\$quit", "\\$random", "\\$reverse", "\\$select", "\\$stack", "\\$test", "\\$text", "\\$translate", "\\$view", "\\$x", "\\$y", "\\$a", "\\$c", "\\$d", "\\$e", "\\$ec", "\\$es", "\\$et", "\\$f", "\\$fn", "\\$g", "\\$h", "\\$i", "\\$j", "\\$l", "\\$n", "\\$na", "\\$o", "\\$p", "\\$q", "\\$ql", "\\$qs", "\\$r", "\\$re", "\\$s", "\\$st", "\\$t", "\\$tr", "\\$v", "\\$z"]; + var intrinsicFuncs = wordRegexp(intrinsicFuncsWords); + var command = wordRegexp(commandKeywords); + + function tokenBase(stream, state) { + if (stream.sol()) { + state.label = true; + state.commandMode = 0; + } + + // The character has meaning in MUMPS. Ignoring consecutive + // spaces would interfere with interpreting whether the next non-space + // character belongs to the command or argument context. + + // Examine each character and update a mode variable whose interpretation is: + // >0 => command 0 => argument <0 => command post-conditional + var ch = stream.peek(); + + if (ch == " " || ch == "\t") { // Pre-process + state.label = false; + if (state.commandMode == 0) + state.commandMode = 1; + else if ((state.commandMode < 0) || (state.commandMode == 2)) + state.commandMode = 0; + } else if ((ch != ".") && (state.commandMode > 0)) { + if (ch == ":") + state.commandMode = -1; // SIS - Command post-conditional + else + state.commandMode = 2; + } + + // Do not color parameter list as line tag + if ((ch === "(") || (ch === "\u0009")) + state.label = false; + + // MUMPS comment starts with ";" + if (ch === ";") { + stream.skipToEnd(); + return "comment"; + } + + // Number Literals // SIS/RLM - MUMPS permits canonic number followed by concatenate operator + if (stream.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/)) + return "number"; + + // Handle Strings + if (ch == '"') { + if (stream.skipTo('"')) { + stream.next(); + return "string"; + } else { + stream.skipToEnd(); + return "error"; + } + } + + // Handle operators and Delimiters + if (stream.match(doubleOperators) || stream.match(singleOperators)) + return "operator"; + + // Prevents leading "." in DO block from falling through to error + if (stream.match(singleDelimiters)) + return null; + + if (brackets.test(ch)) { + stream.next(); + return "bracket"; + } + + if (state.commandMode > 0 && stream.match(command)) + return "variable-2"; + + if (stream.match(intrinsicFuncs)) + return "builtin"; + + if (stream.match(identifiers)) + return "variable"; + + // Detect dollar-sign when not a documented intrinsic function + // "^" may introduce a GVN or SSVN - Color same as function + if (ch === "$" || ch === "^") { + stream.next(); + return "builtin"; + } + + // MUMPS Indirection + if (ch === "@") { + stream.next(); + return "string-2"; + } + + if (/[\w%]/.test(ch)) { + stream.eatWhile(/[\w%]/); + return "variable"; + } + + // Handle non-detected items + stream.next(); + return "error"; + } + + return { + startState: function() { + return { + label: false, + commandMode: 0 + }; + }, + + token: function(stream, state) { + var style = tokenBase(stream, state); + if (state.label) return "tag"; + return style; + } + }; + }); + + CodeMirror.defineMIME("text/x-mumps", "mumps"); +}); diff --git a/global/codemirror/mode/nginx/index.html b/global/codemirror/mode/nginx/index.html new file mode 100644 index 00000000..03cf6714 --- /dev/null +++ b/global/codemirror/mode/nginx/index.html @@ -0,0 +1,181 @@ + + +CodeMirror: NGINX mode + + + + + + + + + + + + + +
+

NGINX mode

+
+ + +

MIME types defined: text/nginx.

+ +
diff --git a/global/codemirror/mode/nginx/nginx.js b/global/codemirror/mode/nginx/nginx.js new file mode 100644 index 00000000..00a32249 --- /dev/null +++ b/global/codemirror/mode/nginx/nginx.js @@ -0,0 +1,178 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("nginx", function(config) { + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + var keywords = words( + /* ngxDirectiveControl */ "break return rewrite set" + + /* ngxDirective */ " accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_types aio alias allow ancient_browser ancient_browser_value auth_basic auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size autoindex_localtime charset charset_types client_body_buffer_size client_body_in_file_only client_body_in_single_buffer client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size connection_pool_size create_full_put_path daemon dav_access dav_methods debug_connection debug_points default_type degradation degrade deny devpoll_changes devpoll_events directio directio_alignment empty_gif env epoll_events error_log eventport_events expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout fastcgi_split_path_info fastcgi_store fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since ignore_invalid_headers image_filter image_filter_buffer image_filter_jpeg_quality image_filter_transparency imap_auth imap_capabilities imap_client_buffer index ip_hash keepalive_requests keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req limit_req_log_level limit_req_zone limit_zone lingering_time lingering_timeout lock_file log_format log_not_found log_subrequest map_hash_bucket_size map_hash_max_size master_process memcached_bind memcached_buffer_size memcached_connect_timeout memcached_next_upstream memcached_read_timeout memcached_send_timeout memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes min_delete_depth modern_browser modern_browser_value msie_padding msie_refresh multi_accept open_file_cache open_file_cache_errors open_file_cache_events open_file_cache_min_uses open_file_cache_valid open_log_file_cache output_buffers override_charset perl perl_modules perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses proxy_cache_path proxy_cache_use_stale proxy_cache_valid proxy_connect_timeout proxy_headers_hash_bucket_size proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access proxy_temp_file_write_size proxy_temp_path proxy_timeout proxy_upstream_fail_timeout proxy_upstream_max_fails random_index read_ahead real_ip_header recursive_error_pages request_pool_size reset_timedout_connection resolver resolver_timeout rewrite_log rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size server_names_hash_max_size server_tokens set_real_ip_from smtp_auth smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush thread_stack_size timeout timer_resolution types_hash_bucket_size types_hash_max_size underscores_in_headers uninitialized_variable_warn use user userid userid_domain userid_expires userid_mark userid_name userid_p3p userid_path userid_service valid_referers variables_hash_bucket_size variables_hash_max_size worker_connections worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending worker_threads working_directory xclient xml_entities xslt_stylesheet xslt_typesdrew@li229-23" + ); + + var keywords_block = words( + /* ngxDirectiveBlock */ "http mail events server types location upstream charset_map limit_except if geo map" + ); + + var keywords_important = words( + /* ngxDirectiveImportant */ "include root server server_name listen internal proxy_pass memcached_pass fastcgi_pass try_files" + ); + + var indentUnit = config.indentUnit, type; + function ret(style, tp) {type = tp; return style;} + + function tokenBase(stream, state) { + + + stream.eatWhile(/[\w\$_]/); + + var cur = stream.current(); + + + if (keywords.propertyIsEnumerable(cur)) { + return "keyword"; + } + else if (keywords_block.propertyIsEnumerable(cur)) { + return "variable-2"; + } + else if (keywords_important.propertyIsEnumerable(cur)) { + return "string-2"; + } + /**/ + + var ch = stream.next(); + if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("meta", stream.current());} + else if (ch == "/" && stream.eat("*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } + else if (ch == "<" && stream.eat("!")) { + state.tokenize = tokenSGMLComment; + return tokenSGMLComment(stream, state); + } + else if (ch == "=") ret(null, "compare"); + else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare"); + else if (ch == "\"" || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + else if (ch == "#") { + stream.skipToEnd(); + return ret("comment", "comment"); + } + else if (ch == "!") { + stream.match(/^\s*\w*/); + return ret("keyword", "important"); + } + else if (/\d/.test(ch)) { + stream.eatWhile(/[\w.%]/); + return ret("number", "unit"); + } + else if (/[,.+>*\/]/.test(ch)) { + return ret(null, "select-op"); + } + else if (/[;{}:\[\]]/.test(ch)) { + return ret(null, ch); + } + else { + stream.eatWhile(/[\w\\\-]/); + return ret("variable", "variable"); + } + } + + function tokenCComment(stream, state) { + var maybeEnd = false, ch; + while ((ch = stream.next()) != null) { + if (maybeEnd && ch == "/") { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "comment"); + } + + function tokenSGMLComment(stream, state) { + var dashes = 0, ch; + while ((ch = stream.next()) != null) { + if (dashes >= 2 && ch == ">") { + state.tokenize = tokenBase; + break; + } + dashes = (ch == "-") ? dashes + 1 : 0; + } + return ret("comment", "comment"); + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) + break; + escaped = !escaped && ch == "\\"; + } + if (!escaped) state.tokenize = tokenBase; + return ret("string", "string"); + }; + } + + return { + startState: function(base) { + return {tokenize: tokenBase, + baseIndent: base || 0, + stack: []}; + }, + + token: function(stream, state) { + if (stream.eatSpace()) return null; + type = null; + var style = state.tokenize(stream, state); + + var context = state.stack[state.stack.length-1]; + if (type == "hash" && context == "rule") style = "atom"; + else if (style == "variable") { + if (context == "rule") style = "number"; + else if (!context || context == "@media{") style = "tag"; + } + + if (context == "rule" && /^[\{\};]$/.test(type)) + state.stack.pop(); + if (type == "{") { + if (context == "@media") state.stack[state.stack.length-1] = "@media{"; + else state.stack.push("{"); + } + else if (type == "}") state.stack.pop(); + else if (type == "@media") state.stack.push("@media"); + else if (context == "{" && type != "comment") state.stack.push("rule"); + return style; + }, + + indent: function(state, textAfter) { + var n = state.stack.length; + if (/^\}/.test(textAfter)) + n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1; + return state.baseIndent + n * indentUnit; + }, + + electricChars: "}" + }; +}); + +CodeMirror.defineMIME("text/x-nginx-conf", "nginx"); + +}); diff --git a/global/codemirror/mode/nsis/index.html b/global/codemirror/mode/nsis/index.html new file mode 100644 index 00000000..2afae87f --- /dev/null +++ b/global/codemirror/mode/nsis/index.html @@ -0,0 +1,80 @@ + + +CodeMirror: NSIS mode + + + + + + + + + + + +
+

NSIS mode

+ + + + + + +

MIME types defined: text/x-nsis.

+
\ No newline at end of file diff --git a/global/codemirror/mode/nsis/nsis.js b/global/codemirror/mode/nsis/nsis.js new file mode 100644 index 00000000..d6c61fac --- /dev/null +++ b/global/codemirror/mode/nsis/nsis.js @@ -0,0 +1,95 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Author: Jan T. Sott (http://github.com/idleberg) + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../../addon/mode/simple"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineSimpleMode("nsis",{ + start:[ + // Numbers + {regex: /(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token: "number"}, + + // Strings + { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" }, + { regex: /'(?:[^\\']|\\.)*'?/, token: "string" }, + { regex: /`(?:[^\\`]|\\.)*`?/, token: "string" }, + + // Compile Time Commands + {regex: /^\s*(?:\!(include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|pragma|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|makensis|searchparse|searchreplace))\b/, token: "keyword"}, + + // Conditional Compilation + {regex: /^\s*(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/, token: "keyword", indent: true}, + {regex: /^\s*(?:\!(else|endif|macroend))\b/, token: "keyword", dedent: true}, + + // Runtime Commands + {regex: /^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecShellWait|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegMultiStr|WriteRegNone|WriteRegStr|WriteUninstaller|XPStyle)\b/, token: "keyword"}, + {regex: /^\s*(?:Function|PageEx|Section(?:Group)?)\b/, token: "keyword", indent: true}, + {regex: /^\s*(?:(Function|PageEx|Section(?:Group)?)End)\b/, token: "keyword", dedent: true}, + + // Command Options + {regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR(32|64)?|HKCU(32|64)?|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM(32|64)?|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, token: "atom"}, + {regex: /\b(?:admin|all|auto|both|bottom|bzip2|components|current|custom|directory|false|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|off|on|right|show|silent|silentlog|textonly|top|true|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|zlib)\b/, token: "builtin"}, + + // LogicLib.nsh + {regex: /\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/, token: "variable-2", indent: true}, + + // FileFunc.nsh + {regex: /\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/, token: "variable-2", dedent: true}, + + // Memento.nsh + {regex: /\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/, token: "variable-2", dedent: true}, + + // TextFunc.nsh + {regex: /\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/, token: "variable-2", dedent: true}, + + // WinVer.nsh + {regex: /\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/, token: "variable", dedent: true}, + + // WordFunc.nsh + {regex: /\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/, token: "variable-2", dedent: true}, + + // x64.nsh + {regex: /\$\{(?:RunningX64)\}/, token: "variable", dedent: true}, + {regex: /\$\{(?:Disable|Enable)X64FSRedirection\}/, token: "variable-2", dedent: true}, + + // Line Comment + {regex: /(#|;).*/, token: "comment"}, + + // Block Comment + {regex: /\/\*/, token: "comment", next: "comment"}, + + // Operator + {regex: /[-+\/*=<>!]+/, token: "operator"}, + + // Variable + {regex: /\$\w+/, token: "variable"}, + + // Constant + {regex: /\${[\w\.:-]+}/, token: "variable-2"}, + + // Language String + {regex: /\$\([\w\.:-]+\)/, token: "variable-3"} + ], + comment: [ + {regex: /.*?\*\//, token: "comment", next: "start"}, + {regex: /.*/, token: "comment"} + ], + meta: { + electricInput: /^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/, + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: ["#", ";"] + } +}); + +CodeMirror.defineMIME("text/x-nsis", "nsis"); +}); diff --git a/global/codemirror/mode/ntriples/index.html b/global/codemirror/mode/ntriples/index.html new file mode 100644 index 00000000..9c998463 --- /dev/null +++ b/global/codemirror/mode/ntriples/index.html @@ -0,0 +1,70 @@ + + +CodeMirror: N-Triples mode + + + + + + + + + +
+

N-Triples mode

+

The N-Triples mode also works well with on + N-Quad documents. +

+
+ +
+ + +

MIME types defined: application/n-triples.

+ +
+

N-Quads add a fourth + element to the statement to track which graph the statement is from. + Otherwise, it's identical to N-Triples.

+
+ +
+ + +

MIME types defined: application/n-quads.

+
diff --git a/global/codemirror/mode/ntriples/ntriples.js b/global/codemirror/mode/ntriples/ntriples.js new file mode 100644 index 00000000..148272e1 --- /dev/null +++ b/global/codemirror/mode/ntriples/ntriples.js @@ -0,0 +1,195 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/********************************************************** +* This script provides syntax highlighting support for +* the N-Triples format. +* N-Triples format specification: +* https://www.w3.org/TR/n-triples/ +***********************************************************/ + +/* + The following expression defines the defined ASF grammar transitions. + + pre_subject -> + { + ( writing_subject_uri | writing_bnode_uri ) + -> pre_predicate + -> writing_predicate_uri + -> pre_object + -> writing_object_uri | writing_object_bnode | + ( + writing_object_literal + -> writing_literal_lang | writing_literal_type + ) + -> post_object + -> BEGIN + } otherwise { + -> ERROR + } +*/ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("ntriples", function() { + + var Location = { + PRE_SUBJECT : 0, + WRITING_SUB_URI : 1, + WRITING_BNODE_URI : 2, + PRE_PRED : 3, + WRITING_PRED_URI : 4, + PRE_OBJ : 5, + WRITING_OBJ_URI : 6, + WRITING_OBJ_BNODE : 7, + WRITING_OBJ_LITERAL : 8, + WRITING_LIT_LANG : 9, + WRITING_LIT_TYPE : 10, + POST_OBJ : 11, + ERROR : 12 + }; + function transitState(currState, c) { + var currLocation = currState.location; + var ret; + + // Opening. + if (currLocation == Location.PRE_SUBJECT && c == '<') ret = Location.WRITING_SUB_URI; + else if(currLocation == Location.PRE_SUBJECT && c == '_') ret = Location.WRITING_BNODE_URI; + else if(currLocation == Location.PRE_PRED && c == '<') ret = Location.WRITING_PRED_URI; + else if(currLocation == Location.PRE_OBJ && c == '<') ret = Location.WRITING_OBJ_URI; + else if(currLocation == Location.PRE_OBJ && c == '_') ret = Location.WRITING_OBJ_BNODE; + else if(currLocation == Location.PRE_OBJ && c == '"') ret = Location.WRITING_OBJ_LITERAL; + + // Closing. + else if(currLocation == Location.WRITING_SUB_URI && c == '>') ret = Location.PRE_PRED; + else if(currLocation == Location.WRITING_BNODE_URI && c == ' ') ret = Location.PRE_PRED; + else if(currLocation == Location.WRITING_PRED_URI && c == '>') ret = Location.PRE_OBJ; + else if(currLocation == Location.WRITING_OBJ_URI && c == '>') ret = Location.POST_OBJ; + else if(currLocation == Location.WRITING_OBJ_BNODE && c == ' ') ret = Location.POST_OBJ; + else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '"') ret = Location.POST_OBJ; + else if(currLocation == Location.WRITING_LIT_LANG && c == ' ') ret = Location.POST_OBJ; + else if(currLocation == Location.WRITING_LIT_TYPE && c == '>') ret = Location.POST_OBJ; + + // Closing typed and language literal. + else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '@') ret = Location.WRITING_LIT_LANG; + else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '^') ret = Location.WRITING_LIT_TYPE; + + // Spaces. + else if( c == ' ' && + ( + currLocation == Location.PRE_SUBJECT || + currLocation == Location.PRE_PRED || + currLocation == Location.PRE_OBJ || + currLocation == Location.POST_OBJ + ) + ) ret = currLocation; + + // Reset. + else if(currLocation == Location.POST_OBJ && c == '.') ret = Location.PRE_SUBJECT; + + // Error + else ret = Location.ERROR; + + currState.location=ret; + } + + return { + startState: function() { + return { + location : Location.PRE_SUBJECT, + uris : [], + anchors : [], + bnodes : [], + langs : [], + types : [] + }; + }, + token: function(stream, state) { + var ch = stream.next(); + if(ch == '<') { + transitState(state, ch); + var parsedURI = ''; + stream.eatWhile( function(c) { if( c != '#' && c != '>' ) { parsedURI += c; return true; } return false;} ); + state.uris.push(parsedURI); + if( stream.match('#', false) ) return 'variable'; + stream.next(); + transitState(state, '>'); + return 'variable'; + } + if(ch == '#') { + var parsedAnchor = ''; + stream.eatWhile(function(c) { if(c != '>' && c != ' ') { parsedAnchor+= c; return true; } return false;}); + state.anchors.push(parsedAnchor); + return 'variable-2'; + } + if(ch == '>') { + transitState(state, '>'); + return 'variable'; + } + if(ch == '_') { + transitState(state, ch); + var parsedBNode = ''; + stream.eatWhile(function(c) { if( c != ' ' ) { parsedBNode += c; return true; } return false;}); + state.bnodes.push(parsedBNode); + stream.next(); + transitState(state, ' '); + return 'builtin'; + } + if(ch == '"') { + transitState(state, ch); + stream.eatWhile( function(c) { return c != '"'; } ); + stream.next(); + if( stream.peek() != '@' && stream.peek() != '^' ) { + transitState(state, '"'); + } + return 'string'; + } + if( ch == '@' ) { + transitState(state, '@'); + var parsedLang = ''; + stream.eatWhile(function(c) { if( c != ' ' ) { parsedLang += c; return true; } return false;}); + state.langs.push(parsedLang); + stream.next(); + transitState(state, ' '); + return 'string-2'; + } + if( ch == '^' ) { + stream.next(); + transitState(state, '^'); + var parsedType = ''; + stream.eatWhile(function(c) { if( c != '>' ) { parsedType += c; return true; } return false;} ); + state.types.push(parsedType); + stream.next(); + transitState(state, '>'); + return 'variable'; + } + if( ch == ' ' ) { + transitState(state, ch); + } + if( ch == '.' ) { + transitState(state, ch); + } + } + }; +}); + +// define the registered Media Type for n-triples: +// https://www.w3.org/TR/n-triples/#n-triples-mediatype +CodeMirror.defineMIME("application/n-triples", "ntriples"); + +// N-Quads is based on the N-Triples format (so same highlighting works) +// https://www.w3.org/TR/n-quads/ +CodeMirror.defineMIME("application/n-quads", "ntriples"); + +// previously used, though technically incorrect media type for n-triples +CodeMirror.defineMIME("text/n-triples", "ntriples"); + +}); diff --git a/global/codemirror/mode/octave/index.html b/global/codemirror/mode/octave/index.html new file mode 100644 index 00000000..3490ee63 --- /dev/null +++ b/global/codemirror/mode/octave/index.html @@ -0,0 +1,83 @@ + + +CodeMirror: Octave mode + + + + + + + + + +
+

Octave mode

+ +
+ + +

MIME types defined: text/x-octave.

+
diff --git a/global/codemirror/mode/octave/octave.js b/global/codemirror/mode/octave/octave.js new file mode 100644 index 00000000..b77ad682 --- /dev/null +++ b/global/codemirror/mode/octave/octave.js @@ -0,0 +1,139 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("octave", function() { + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b"); + } + + var singleOperators = new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"); + var singleDelimiters = new RegExp('^[\\(\\[\\{\\},:=;]'); + var doubleOperators = new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"); + var doubleDelimiters = new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"); + var tripleDelimiters = new RegExp("^((>>=)|(<<=))"); + var expressionEnd = new RegExp("^[\\]\\)]"); + var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); + + var builtins = wordRegexp([ + 'error', 'eval', 'function', 'abs', 'acos', 'atan', 'asin', 'cos', + 'cosh', 'exp', 'log', 'prod', 'sum', 'log10', 'max', 'min', 'sign', 'sin', 'sinh', + 'sqrt', 'tan', 'reshape', 'break', 'zeros', 'default', 'margin', 'round', 'ones', + 'rand', 'syn', 'ceil', 'floor', 'size', 'clear', 'zeros', 'eye', 'mean', 'std', 'cov', + 'det', 'eig', 'inv', 'norm', 'rank', 'trace', 'expm', 'logm', 'sqrtm', 'linspace', 'plot', + 'title', 'xlabel', 'ylabel', 'legend', 'text', 'grid', 'meshgrid', 'mesh', 'num2str', + 'fft', 'ifft', 'arrayfun', 'cellfun', 'input', 'fliplr', 'flipud', 'ismember' + ]); + + var keywords = wordRegexp([ + 'return', 'case', 'switch', 'else', 'elseif', 'end', 'endif', 'endfunction', + 'if', 'otherwise', 'do', 'for', 'while', 'try', 'catch', 'classdef', 'properties', 'events', + 'methods', 'global', 'persistent', 'endfor', 'endwhile', 'printf', 'sprintf', 'disp', 'until', + 'continue', 'pkg' + ]); + + + // tokenizers + function tokenTranspose(stream, state) { + if (!stream.sol() && stream.peek() === '\'') { + stream.next(); + state.tokenize = tokenBase; + return 'operator'; + } + state.tokenize = tokenBase; + return tokenBase(stream, state); + } + + + function tokenComment(stream, state) { + if (stream.match(/^.*%}/)) { + state.tokenize = tokenBase; + return 'comment'; + }; + stream.skipToEnd(); + return 'comment'; + } + + function tokenBase(stream, state) { + // whitespaces + if (stream.eatSpace()) return null; + + // Handle one line Comments + if (stream.match('%{')){ + state.tokenize = tokenComment; + stream.skipToEnd(); + return 'comment'; + } + + if (stream.match(/^[%#]/)){ + stream.skipToEnd(); + return 'comment'; + } + + // Handle Number Literals + if (stream.match(/^[0-9\.+-]/, false)) { + if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) { + stream.tokenize = tokenBase; + return 'number'; }; + if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; + if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; + } + if (stream.match(wordRegexp(['nan','NaN','inf','Inf']))) { return 'number'; }; + + // Handle Strings + var m = stream.match(/^"(?:[^"]|"")*("|$)/) || stream.match(/^'(?:[^']|'')*('|$)/) + if (m) { return m[1] ? 'string' : "string error"; } + + // Handle words + if (stream.match(keywords)) { return 'keyword'; } ; + if (stream.match(builtins)) { return 'builtin'; } ; + if (stream.match(identifiers)) { return 'variable'; } ; + + if (stream.match(singleOperators) || stream.match(doubleOperators)) { return 'operator'; }; + if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) || stream.match(tripleDelimiters)) { return null; }; + + if (stream.match(expressionEnd)) { + state.tokenize = tokenTranspose; + return null; + }; + + + // Handle non-detected items + stream.next(); + return 'error'; + }; + + + return { + startState: function() { + return { + tokenize: tokenBase + }; + }, + + token: function(stream, state) { + var style = state.tokenize(stream, state); + if (style === 'number' || style === 'variable'){ + state.tokenize = tokenTranspose; + } + return style; + }, + + lineComment: '%', + + fold: 'indent' + }; +}); + +CodeMirror.defineMIME("text/x-octave", "octave"); + +}); diff --git a/global/codemirror/mode/oz/index.html b/global/codemirror/mode/oz/index.html new file mode 100644 index 00000000..febd82a5 --- /dev/null +++ b/global/codemirror/mode/oz/index.html @@ -0,0 +1,59 @@ + + +CodeMirror: Oz mode + + + + + + + + + + +
+

Oz mode

+ +

MIME type defined: text/x-oz.

+ + +
diff --git a/global/codemirror/mode/oz/oz.js b/global/codemirror/mode/oz/oz.js new file mode 100644 index 00000000..50ffda37 --- /dev/null +++ b/global/codemirror/mode/oz/oz.js @@ -0,0 +1,252 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("oz", function (conf) { + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b"); + } + + var singleOperators = /[\^@!\|<>#~\.\*\-\+\\/,=]/; + var doubleOperators = /(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/; + var tripleOperators = /(:::)|(\.\.\.)|(=<:)|(>=:)/; + + var middle = ["in", "then", "else", "of", "elseof", "elsecase", "elseif", "catch", + "finally", "with", "require", "prepare", "import", "export", "define", "do"]; + var end = ["end"]; + + var atoms = wordRegexp(["true", "false", "nil", "unit"]); + var commonKeywords = wordRegexp(["andthen", "at", "attr", "declare", "feat", "from", "lex", + "mod", "div", "mode", "orelse", "parser", "prod", "prop", "scanner", "self", "syn", "token"]); + var openingKeywords = wordRegexp(["local", "proc", "fun", "case", "class", "if", "cond", "or", "dis", + "choice", "not", "thread", "try", "raise", "lock", "for", "suchthat", "meth", "functor"]); + var middleKeywords = wordRegexp(middle); + var endKeywords = wordRegexp(end); + + // Tokenizers + function tokenBase(stream, state) { + if (stream.eatSpace()) { + return null; + } + + // Brackets + if(stream.match(/[{}]/)) { + return "bracket"; + } + + // Special [] keyword + if (stream.match(/(\[])/)) { + return "keyword" + } + + // Operators + if (stream.match(tripleOperators) || stream.match(doubleOperators)) { + return "operator"; + } + + // Atoms + if(stream.match(atoms)) { + return 'atom'; + } + + // Opening keywords + var matched = stream.match(openingKeywords); + if (matched) { + if (!state.doInCurrentLine) + state.currentIndent++; + else + state.doInCurrentLine = false; + + // Special matching for signatures + if(matched[0] == "proc" || matched[0] == "fun") + state.tokenize = tokenFunProc; + else if(matched[0] == "class") + state.tokenize = tokenClass; + else if(matched[0] == "meth") + state.tokenize = tokenMeth; + + return 'keyword'; + } + + // Middle and other keywords + if (stream.match(middleKeywords) || stream.match(commonKeywords)) { + return "keyword" + } + + // End keywords + if (stream.match(endKeywords)) { + state.currentIndent--; + return 'keyword'; + } + + // Eat the next char for next comparisons + var ch = stream.next(); + + // Strings + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + + // Numbers + if (/[~\d]/.test(ch)) { + if (ch == "~") { + if(! /^[0-9]/.test(stream.peek())) + return null; + else if (( stream.next() == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)) + return "number"; + } + + if ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)) + return "number"; + + return null; + } + + // Comments + if (ch == "%") { + stream.skipToEnd(); + return 'comment'; + } + else if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + } + + // Single operators + if(singleOperators.test(ch)) { + return "operator"; + } + + // If nothing match, we skip the entire alphanumerical block + stream.eatWhile(/\w/); + + return "variable"; + } + + function tokenClass(stream, state) { + if (stream.eatSpace()) { + return null; + } + stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/); + state.tokenize = tokenBase; + return "variable-3" + } + + function tokenMeth(stream, state) { + if (stream.eatSpace()) { + return null; + } + stream.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/); + state.tokenize = tokenBase; + return "def" + } + + function tokenFunProc(stream, state) { + if (stream.eatSpace()) { + return null; + } + + if(!state.hasPassedFirstStage && stream.eat("{")) { + state.hasPassedFirstStage = true; + return "bracket"; + } + else if(state.hasPassedFirstStage) { + stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/); + state.hasPassedFirstStage = false; + state.tokenize = tokenBase; + return "def" + } + else { + state.tokenize = tokenBase; + return null; + } + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function tokenString(quote) { + return function (stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) { + end = true; + break; + } + escaped = !escaped && next == "\\"; + } + if (end || !escaped) + state.tokenize = tokenBase; + return "string"; + }; + } + + function buildElectricInputRegEx() { + // Reindentation should occur on [] or on a match of any of + // the block closing keywords, at the end of a line. + var allClosings = middle.concat(end); + return new RegExp("[\\[\\]]|(" + allClosings.join("|") + ")$"); + } + + return { + + startState: function () { + return { + tokenize: tokenBase, + currentIndent: 0, + doInCurrentLine: false, + hasPassedFirstStage: false + }; + }, + + token: function (stream, state) { + if (stream.sol()) + state.doInCurrentLine = 0; + + return state.tokenize(stream, state); + }, + + indent: function (state, textAfter) { + var trueText = textAfter.replace(/^\s+|\s+$/g, ''); + + if (trueText.match(endKeywords) || trueText.match(middleKeywords) || trueText.match(/(\[])/)) + return conf.indentUnit * (state.currentIndent - 1); + + if (state.currentIndent < 0) + return 0; + + return state.currentIndent * conf.indentUnit; + }, + fold: "indent", + electricInput: buildElectricInputRegEx(), + lineComment: "%", + blockCommentStart: "/*", + blockCommentEnd: "*/" + }; +}); + +CodeMirror.defineMIME("text/x-oz", "oz"); + +}); diff --git a/global/codemirror/mode/pascal/index.html b/global/codemirror/mode/pascal/index.html new file mode 100644 index 00000000..f8a99ad0 --- /dev/null +++ b/global/codemirror/mode/pascal/index.html @@ -0,0 +1,61 @@ + + +CodeMirror: Pascal mode + + + + + + + + + +
+

Pascal mode

+ + +
+ + + +

MIME types defined: text/x-pascal.

+
diff --git a/global/codemirror/mode/pascal/pascal.js b/global/codemirror/mode/pascal/pascal.js new file mode 100644 index 00000000..2d0c3d42 --- /dev/null +++ b/global/codemirror/mode/pascal/pascal.js @@ -0,0 +1,109 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("pascal", function() { + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + var keywords = words("and array begin case const div do downto else end file for forward integer " + + "boolean char function goto if in label mod nil not of or packed procedure " + + "program record repeat set string then to type until var while with"); + var atoms = {"null": true}; + + var isOperatorChar = /[+\-*&%=<>!?|\/]/; + + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == "#" && state.startOfLine) { + stream.skipToEnd(); + return "meta"; + } + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + if (ch == "(" && stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + if (/[\[\]{}\(\),;\:\.]/.test(ch)) { + return null; + } + if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } + if (ch == "/") { + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + } + if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + stream.eatWhile(/[\w\$_]/); + var cur = stream.current(); + if (keywords.propertyIsEnumerable(cur)) return "keyword"; + if (atoms.propertyIsEnumerable(cur)) return "atom"; + return "variable"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) {end = true; break;} + escaped = !escaped && next == "\\"; + } + if (end || !escaped) state.tokenize = null; + return "string"; + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == ")" && maybeEnd) { + state.tokenize = null; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + // Interface + + return { + startState: function() { + return {tokenize: null}; + }, + + token: function(stream, state) { + if (stream.eatSpace()) return null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment" || style == "meta") return style; + return style; + }, + + electricChars: "{}" + }; +}); + +CodeMirror.defineMIME("text/x-pascal", "pascal"); + +}); diff --git a/global/codemirror/mode/pegjs/index.html b/global/codemirror/mode/pegjs/index.html new file mode 100644 index 00000000..0c746048 --- /dev/null +++ b/global/codemirror/mode/pegjs/index.html @@ -0,0 +1,66 @@ + + + + CodeMirror: PEG.js Mode + + + + + + + + + + + + +
+

PEG.js Mode

+
+ +

The PEG.js Mode

+

Created by Forbes Lindesay.

+
+ + diff --git a/global/codemirror/mode/pegjs/pegjs.js b/global/codemirror/mode/pegjs/pegjs.js new file mode 100644 index 00000000..6c720746 --- /dev/null +++ b/global/codemirror/mode/pegjs/pegjs.js @@ -0,0 +1,114 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../javascript/javascript")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../javascript/javascript"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("pegjs", function (config) { + var jsMode = CodeMirror.getMode(config, "javascript"); + + function identifier(stream) { + return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/); + } + + return { + startState: function () { + return { + inString: false, + stringType: null, + inComment: false, + inCharacterClass: false, + braced: 0, + lhs: true, + localState: null + }; + }, + token: function (stream, state) { + if (stream) + + //check for state changes + if (!state.inString && !state.inComment && ((stream.peek() == '"') || (stream.peek() == "'"))) { + state.stringType = stream.peek(); + stream.next(); // Skip quote + state.inString = true; // Update state + } + if (!state.inString && !state.inComment && stream.match(/^\/\*/)) { + state.inComment = true; + } + + //return state + if (state.inString) { + while (state.inString && !stream.eol()) { + if (stream.peek() === state.stringType) { + stream.next(); // Skip quote + state.inString = false; // Clear flag + } else if (stream.peek() === '\\') { + stream.next(); + stream.next(); + } else { + stream.match(/^.[^\\\"\']*/); + } + } + return state.lhs ? "property string" : "string"; // Token style + } else if (state.inComment) { + while (state.inComment && !stream.eol()) { + if (stream.match(/\*\//)) { + state.inComment = false; // Clear flag + } else { + stream.match(/^.[^\*]*/); + } + } + return "comment"; + } else if (state.inCharacterClass) { + while (state.inCharacterClass && !stream.eol()) { + if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { + state.inCharacterClass = false; + } + } + } else if (stream.peek() === '[') { + stream.next(); + state.inCharacterClass = true; + return 'bracket'; + } else if (stream.match(/^\/\//)) { + stream.skipToEnd(); + return "comment"; + } else if (state.braced || stream.peek() === '{') { + if (state.localState === null) { + state.localState = CodeMirror.startState(jsMode); + } + var token = jsMode.token(stream, state.localState); + var text = stream.current(); + if (!token) { + for (var i = 0; i < text.length; i++) { + if (text[i] === '{') { + state.braced++; + } else if (text[i] === '}') { + state.braced--; + } + }; + } + return token; + } else if (identifier(stream)) { + if (stream.peek() === ':') { + return 'variable'; + } + return 'variable-2'; + } else if (['[', ']', '(', ')'].indexOf(stream.peek()) != -1) { + stream.next(); + return 'bracket'; + } else if (!stream.eatSpace()) { + stream.next(); + } + return null; + } + }; +}, "javascript"); + +}); diff --git a/global/codemirror/mode/perl/index.html b/global/codemirror/mode/perl/index.html new file mode 100644 index 00000000..8c1021c4 --- /dev/null +++ b/global/codemirror/mode/perl/index.html @@ -0,0 +1,75 @@ + + +CodeMirror: Perl mode + + + + + + + + + +
+

Perl mode

+ + +
+ + + +

MIME types defined: text/x-perl.

+
diff --git a/global/codemirror/mode/perl/perl.js b/global/codemirror/mode/perl/perl.js new file mode 100644 index 00000000..66e4ed03 --- /dev/null +++ b/global/codemirror/mode/perl/perl.js @@ -0,0 +1,837 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08) +// This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com) + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("perl",function(){ + // http://perldoc.perl.org + var PERL={ // null - magic touch + // 1 - keyword + // 2 - def + // 3 - atom + // 4 - operator + // 5 - variable-2 (predefined) + // [x,y] - x=1,2,3; y=must be defined if x{...} + // PERL operators + '->' : 4, + '++' : 4, + '--' : 4, + '**' : 4, + // ! ~ \ and unary + and - + '=~' : 4, + '!~' : 4, + '*' : 4, + '/' : 4, + '%' : 4, + 'x' : 4, + '+' : 4, + '-' : 4, + '.' : 4, + '<<' : 4, + '>>' : 4, + // named unary operators + '<' : 4, + '>' : 4, + '<=' : 4, + '>=' : 4, + 'lt' : 4, + 'gt' : 4, + 'le' : 4, + 'ge' : 4, + '==' : 4, + '!=' : 4, + '<=>' : 4, + 'eq' : 4, + 'ne' : 4, + 'cmp' : 4, + '~~' : 4, + '&' : 4, + '|' : 4, + '^' : 4, + '&&' : 4, + '||' : 4, + '//' : 4, + '..' : 4, + '...' : 4, + '?' : 4, + ':' : 4, + '=' : 4, + '+=' : 4, + '-=' : 4, + '*=' : 4, // etc. ??? + ',' : 4, + '=>' : 4, + '::' : 4, + // list operators (rightward) + 'not' : 4, + 'and' : 4, + 'or' : 4, + 'xor' : 4, + // PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;) + 'BEGIN' : [5,1], + 'END' : [5,1], + 'PRINT' : [5,1], + 'PRINTF' : [5,1], + 'GETC' : [5,1], + 'READ' : [5,1], + 'READLINE' : [5,1], + 'DESTROY' : [5,1], + 'TIE' : [5,1], + 'TIEHANDLE' : [5,1], + 'UNTIE' : [5,1], + 'STDIN' : 5, + 'STDIN_TOP' : 5, + 'STDOUT' : 5, + 'STDOUT_TOP' : 5, + 'STDERR' : 5, + 'STDERR_TOP' : 5, + '$ARG' : 5, + '$_' : 5, + '@ARG' : 5, + '@_' : 5, + '$LIST_SEPARATOR' : 5, + '$"' : 5, + '$PROCESS_ID' : 5, + '$PID' : 5, + '$$' : 5, + '$REAL_GROUP_ID' : 5, + '$GID' : 5, + '$(' : 5, + '$EFFECTIVE_GROUP_ID' : 5, + '$EGID' : 5, + '$)' : 5, + '$PROGRAM_NAME' : 5, + '$0' : 5, + '$SUBSCRIPT_SEPARATOR' : 5, + '$SUBSEP' : 5, + '$;' : 5, + '$REAL_USER_ID' : 5, + '$UID' : 5, + '$<' : 5, + '$EFFECTIVE_USER_ID' : 5, + '$EUID' : 5, + '$>' : 5, + '$a' : 5, + '$b' : 5, + '$COMPILING' : 5, + '$^C' : 5, + '$DEBUGGING' : 5, + '$^D' : 5, + '${^ENCODING}' : 5, + '$ENV' : 5, + '%ENV' : 5, + '$SYSTEM_FD_MAX' : 5, + '$^F' : 5, + '@F' : 5, + '${^GLOBAL_PHASE}' : 5, + '$^H' : 5, + '%^H' : 5, + '@INC' : 5, + '%INC' : 5, + '$INPLACE_EDIT' : 5, + '$^I' : 5, + '$^M' : 5, + '$OSNAME' : 5, + '$^O' : 5, + '${^OPEN}' : 5, + '$PERLDB' : 5, + '$^P' : 5, + '$SIG' : 5, + '%SIG' : 5, + '$BASETIME' : 5, + '$^T' : 5, + '${^TAINT}' : 5, + '${^UNICODE}' : 5, + '${^UTF8CACHE}' : 5, + '${^UTF8LOCALE}' : 5, + '$PERL_VERSION' : 5, + '$^V' : 5, + '${^WIN32_SLOPPY_STAT}' : 5, + '$EXECUTABLE_NAME' : 5, + '$^X' : 5, + '$1' : 5, // - regexp $1, $2... + '$MATCH' : 5, + '$&' : 5, + '${^MATCH}' : 5, + '$PREMATCH' : 5, + '$`' : 5, + '${^PREMATCH}' : 5, + '$POSTMATCH' : 5, + "$'" : 5, + '${^POSTMATCH}' : 5, + '$LAST_PAREN_MATCH' : 5, + '$+' : 5, + '$LAST_SUBMATCH_RESULT' : 5, + '$^N' : 5, + '@LAST_MATCH_END' : 5, + '@+' : 5, + '%LAST_PAREN_MATCH' : 5, + '%+' : 5, + '@LAST_MATCH_START' : 5, + '@-' : 5, + '%LAST_MATCH_START' : 5, + '%-' : 5, + '$LAST_REGEXP_CODE_RESULT' : 5, + '$^R' : 5, + '${^RE_DEBUG_FLAGS}' : 5, + '${^RE_TRIE_MAXBUF}' : 5, + '$ARGV' : 5, + '@ARGV' : 5, + 'ARGV' : 5, + 'ARGVOUT' : 5, + '$OUTPUT_FIELD_SEPARATOR' : 5, + '$OFS' : 5, + '$,' : 5, + '$INPUT_LINE_NUMBER' : 5, + '$NR' : 5, + '$.' : 5, + '$INPUT_RECORD_SEPARATOR' : 5, + '$RS' : 5, + '$/' : 5, + '$OUTPUT_RECORD_SEPARATOR' : 5, + '$ORS' : 5, + '$\\' : 5, + '$OUTPUT_AUTOFLUSH' : 5, + '$|' : 5, + '$ACCUMULATOR' : 5, + '$^A' : 5, + '$FORMAT_FORMFEED' : 5, + '$^L' : 5, + '$FORMAT_PAGE_NUMBER' : 5, + '$%' : 5, + '$FORMAT_LINES_LEFT' : 5, + '$-' : 5, + '$FORMAT_LINE_BREAK_CHARACTERS' : 5, + '$:' : 5, + '$FORMAT_LINES_PER_PAGE' : 5, + '$=' : 5, + '$FORMAT_TOP_NAME' : 5, + '$^' : 5, + '$FORMAT_NAME' : 5, + '$~' : 5, + '${^CHILD_ERROR_NATIVE}' : 5, + '$EXTENDED_OS_ERROR' : 5, + '$^E' : 5, + '$EXCEPTIONS_BEING_CAUGHT' : 5, + '$^S' : 5, + '$WARNING' : 5, + '$^W' : 5, + '${^WARNING_BITS}' : 5, + '$OS_ERROR' : 5, + '$ERRNO' : 5, + '$!' : 5, + '%OS_ERROR' : 5, + '%ERRNO' : 5, + '%!' : 5, + '$CHILD_ERROR' : 5, + '$?' : 5, + '$EVAL_ERROR' : 5, + '$@' : 5, + '$OFMT' : 5, + '$#' : 5, + '$*' : 5, + '$ARRAY_BASE' : 5, + '$[' : 5, + '$OLD_PERL_VERSION' : 5, + '$]' : 5, + // PERL blocks + 'if' :[1,1], + elsif :[1,1], + 'else' :[1,1], + 'while' :[1,1], + unless :[1,1], + 'for' :[1,1], + foreach :[1,1], + // PERL functions + 'abs' :1, // - absolute value function + accept :1, // - accept an incoming socket connect + alarm :1, // - schedule a SIGALRM + 'atan2' :1, // - arctangent of Y/X in the range -PI to PI + bind :1, // - binds an address to a socket + binmode :1, // - prepare binary files for I/O + bless :1, // - create an object + bootstrap :1, // + 'break' :1, // - break out of a "given" block + caller :1, // - get context of the current subroutine call + chdir :1, // - change your current working directory + chmod :1, // - changes the permissions on a list of files + chomp :1, // - remove a trailing record separator from a string + chop :1, // - remove the last character from a string + chown :1, // - change the ownership on a list of files + chr :1, // - get character this number represents + chroot :1, // - make directory new root for path lookups + close :1, // - close file (or pipe or socket) handle + closedir :1, // - close directory handle + connect :1, // - connect to a remote socket + 'continue' :[1,1], // - optional trailing block in a while or foreach + 'cos' :1, // - cosine function + crypt :1, // - one-way passwd-style encryption + dbmclose :1, // - breaks binding on a tied dbm file + dbmopen :1, // - create binding on a tied dbm file + 'default' :1, // + defined :1, // - test whether a value, variable, or function is defined + 'delete' :1, // - deletes a value from a hash + die :1, // - raise an exception or bail out + 'do' :1, // - turn a BLOCK into a TERM + dump :1, // - create an immediate core dump + each :1, // - retrieve the next key/value pair from a hash + endgrent :1, // - be done using group file + endhostent :1, // - be done using hosts file + endnetent :1, // - be done using networks file + endprotoent :1, // - be done using protocols file + endpwent :1, // - be done using passwd file + endservent :1, // - be done using services file + eof :1, // - test a filehandle for its end + 'eval' :1, // - catch exceptions or compile and run code + 'exec' :1, // - abandon this program to run another + exists :1, // - test whether a hash key is present + exit :1, // - terminate this program + 'exp' :1, // - raise I to a power + fcntl :1, // - file control system call + fileno :1, // - return file descriptor from filehandle + flock :1, // - lock an entire file with an advisory lock + fork :1, // - create a new process just like this one + format :1, // - declare a picture format with use by the write() function + formline :1, // - internal function used for formats + getc :1, // - get the next character from the filehandle + getgrent :1, // - get next group record + getgrgid :1, // - get group record given group user ID + getgrnam :1, // - get group record given group name + gethostbyaddr :1, // - get host record given its address + gethostbyname :1, // - get host record given name + gethostent :1, // - get next hosts record + getlogin :1, // - return who logged in at this tty + getnetbyaddr :1, // - get network record given its address + getnetbyname :1, // - get networks record given name + getnetent :1, // - get next networks record + getpeername :1, // - find the other end of a socket connection + getpgrp :1, // - get process group + getppid :1, // - get parent process ID + getpriority :1, // - get current nice value + getprotobyname :1, // - get protocol record given name + getprotobynumber :1, // - get protocol record numeric protocol + getprotoent :1, // - get next protocols record + getpwent :1, // - get next passwd record + getpwnam :1, // - get passwd record given user login name + getpwuid :1, // - get passwd record given user ID + getservbyname :1, // - get services record given its name + getservbyport :1, // - get services record given numeric port + getservent :1, // - get next services record + getsockname :1, // - retrieve the sockaddr for a given socket + getsockopt :1, // - get socket options on a given socket + given :1, // + glob :1, // - expand filenames using wildcards + gmtime :1, // - convert UNIX time into record or string using Greenwich time + 'goto' :1, // - create spaghetti code + grep :1, // - locate elements in a list test true against a given criterion + hex :1, // - convert a string to a hexadecimal number + 'import' :1, // - patch a module's namespace into your own + index :1, // - find a substring within a string + 'int' :1, // - get the integer portion of a number + ioctl :1, // - system-dependent device control system call + 'join' :1, // - join a list into a string using a separator + keys :1, // - retrieve list of indices from a hash + kill :1, // - send a signal to a process or process group + last :1, // - exit a block prematurely + lc :1, // - return lower-case version of a string + lcfirst :1, // - return a string with just the next letter in lower case + length :1, // - return the number of bytes in a string + 'link' :1, // - create a hard link in the filesytem + listen :1, // - register your socket as a server + local : 2, // - create a temporary value for a global variable (dynamic scoping) + localtime :1, // - convert UNIX time into record or string using local time + lock :1, // - get a thread lock on a variable, subroutine, or method + 'log' :1, // - retrieve the natural logarithm for a number + lstat :1, // - stat a symbolic link + m :null, // - match a string with a regular expression pattern + map :1, // - apply a change to a list to get back a new list with the changes + mkdir :1, // - create a directory + msgctl :1, // - SysV IPC message control operations + msgget :1, // - get SysV IPC message queue + msgrcv :1, // - receive a SysV IPC message from a message queue + msgsnd :1, // - send a SysV IPC message to a message queue + my : 2, // - declare and assign a local variable (lexical scoping) + 'new' :1, // + next :1, // - iterate a block prematurely + no :1, // - unimport some module symbols or semantics at compile time + oct :1, // - convert a string to an octal number + open :1, // - open a file, pipe, or descriptor + opendir :1, // - open a directory + ord :1, // - find a character's numeric representation + our : 2, // - declare and assign a package variable (lexical scoping) + pack :1, // - convert a list into a binary representation + 'package' :1, // - declare a separate global namespace + pipe :1, // - open a pair of connected filehandles + pop :1, // - remove the last element from an array and return it + pos :1, // - find or set the offset for the last/next m//g search + print :1, // - output a list to a filehandle + printf :1, // - output a formatted list to a filehandle + prototype :1, // - get the prototype (if any) of a subroutine + push :1, // - append one or more elements to an array + q :null, // - singly quote a string + qq :null, // - doubly quote a string + qr :null, // - Compile pattern + quotemeta :null, // - quote regular expression magic characters + qw :null, // - quote a list of words + qx :null, // - backquote quote a string + rand :1, // - retrieve the next pseudorandom number + read :1, // - fixed-length buffered input from a filehandle + readdir :1, // - get a directory from a directory handle + readline :1, // - fetch a record from a file + readlink :1, // - determine where a symbolic link is pointing + readpipe :1, // - execute a system command and collect standard output + recv :1, // - receive a message over a Socket + redo :1, // - start this loop iteration over again + ref :1, // - find out the type of thing being referenced + rename :1, // - change a filename + require :1, // - load in external functions from a library at runtime + reset :1, // - clear all variables of a given name + 'return' :1, // - get out of a function early + reverse :1, // - flip a string or a list + rewinddir :1, // - reset directory handle + rindex :1, // - right-to-left substring search + rmdir :1, // - remove a directory + s :null, // - replace a pattern with a string + say :1, // - print with newline + scalar :1, // - force a scalar context + seek :1, // - reposition file pointer for random-access I/O + seekdir :1, // - reposition directory pointer + select :1, // - reset default output or do I/O multiplexing + semctl :1, // - SysV semaphore control operations + semget :1, // - get set of SysV semaphores + semop :1, // - SysV semaphore operations + send :1, // - send a message over a socket + setgrent :1, // - prepare group file for use + sethostent :1, // - prepare hosts file for use + setnetent :1, // - prepare networks file for use + setpgrp :1, // - set the process group of a process + setpriority :1, // - set a process's nice value + setprotoent :1, // - prepare protocols file for use + setpwent :1, // - prepare passwd file for use + setservent :1, // - prepare services file for use + setsockopt :1, // - set some socket options + shift :1, // - remove the first element of an array, and return it + shmctl :1, // - SysV shared memory operations + shmget :1, // - get SysV shared memory segment identifier + shmread :1, // - read SysV shared memory + shmwrite :1, // - write SysV shared memory + shutdown :1, // - close down just half of a socket connection + 'sin' :1, // - return the sine of a number + sleep :1, // - block for some number of seconds + socket :1, // - create a socket + socketpair :1, // - create a pair of sockets + 'sort' :1, // - sort a list of values + splice :1, // - add or remove elements anywhere in an array + 'split' :1, // - split up a string using a regexp delimiter + sprintf :1, // - formatted print into a string + 'sqrt' :1, // - square root function + srand :1, // - seed the random number generator + stat :1, // - get a file's status information + state :1, // - declare and assign a state variable (persistent lexical scoping) + study :1, // - optimize input data for repeated searches + 'sub' :1, // - declare a subroutine, possibly anonymously + 'substr' :1, // - get or alter a portion of a stirng + symlink :1, // - create a symbolic link to a file + syscall :1, // - execute an arbitrary system call + sysopen :1, // - open a file, pipe, or descriptor + sysread :1, // - fixed-length unbuffered input from a filehandle + sysseek :1, // - position I/O pointer on handle used with sysread and syswrite + system :1, // - run a separate program + syswrite :1, // - fixed-length unbuffered output to a filehandle + tell :1, // - get current seekpointer on a filehandle + telldir :1, // - get current seekpointer on a directory handle + tie :1, // - bind a variable to an object class + tied :1, // - get a reference to the object underlying a tied variable + time :1, // - return number of seconds since 1970 + times :1, // - return elapsed time for self and child processes + tr :null, // - transliterate a string + truncate :1, // - shorten a file + uc :1, // - return upper-case version of a string + ucfirst :1, // - return a string with just the next letter in upper case + umask :1, // - set file creation mode mask + undef :1, // - remove a variable or function definition + unlink :1, // - remove one link to a file + unpack :1, // - convert binary structure into normal perl variables + unshift :1, // - prepend more elements to the beginning of a list + untie :1, // - break a tie binding to a variable + use :1, // - load in a module at compile time + utime :1, // - set a file's last access and modify times + values :1, // - return a list of the values in a hash + vec :1, // - test or set particular bits in a string + wait :1, // - wait for any child process to die + waitpid :1, // - wait for a particular child process to die + wantarray :1, // - get void vs scalar vs list context of current subroutine call + warn :1, // - print debugging info + when :1, // + write :1, // - print a picture record + y :null}; // - transliterate a string + + var RXstyle="string-2"; + var RXmodifiers=/[goseximacplud]/; // NOTE: "m", "s", "y" and "tr" need to correct real modifiers for each regexp type + + function tokenChain(stream,state,chain,style,tail){ // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;) + state.chain=null; // 12 3tail + state.style=null; + state.tail=null; + state.tokenize=function(stream,state){ + var e=false,c,i=0; + while(c=stream.next()){ + if(c===chain[i]&&!e){ + if(chain[++i]!==undefined){ + state.chain=chain[i]; + state.style=style; + state.tail=tail;} + else if(tail) + stream.eatWhile(tail); + state.tokenize=tokenPerl; + return style;} + e=!e&&c=="\\";} + return style;}; + return state.tokenize(stream,state);} + + function tokenSOMETHING(stream,state,string){ + state.tokenize=function(stream,state){ + if(stream.string==string) + state.tokenize=tokenPerl; + stream.skipToEnd(); + return "string";}; + return state.tokenize(stream,state);} + + function tokenPerl(stream,state){ + if(stream.eatSpace()) + return null; + if(state.chain) + return tokenChain(stream,state,state.chain,state.style,state.tail); + if(stream.match(/^\-?[\d\.]/,false)) + if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/)) + return 'number'; + if(stream.match(/^<<(?=\w)/)){ // NOTE: <"],RXstyle,RXmodifiers);} + if(/[\^'"!~\/]/.test(c)){ + eatSuffix(stream, 1); + return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} + else if(c=="q"){ + c=look(stream, 1); + if(c=="("){ + eatSuffix(stream, 2); + return tokenChain(stream,state,[")"],"string");} + if(c=="["){ + eatSuffix(stream, 2); + return tokenChain(stream,state,["]"],"string");} + if(c=="{"){ + eatSuffix(stream, 2); + return tokenChain(stream,state,["}"],"string");} + if(c=="<"){ + eatSuffix(stream, 2); + return tokenChain(stream,state,[">"],"string");} + if(/[\^'"!~\/]/.test(c)){ + eatSuffix(stream, 1); + return tokenChain(stream,state,[stream.eat(c)],"string");}} + else if(c=="w"){ + c=look(stream, 1); + if(c=="("){ + eatSuffix(stream, 2); + return tokenChain(stream,state,[")"],"bracket");} + if(c=="["){ + eatSuffix(stream, 2); + return tokenChain(stream,state,["]"],"bracket");} + if(c=="{"){ + eatSuffix(stream, 2); + return tokenChain(stream,state,["}"],"bracket");} + if(c=="<"){ + eatSuffix(stream, 2); + return tokenChain(stream,state,[">"],"bracket");} + if(/[\^'"!~\/]/.test(c)){ + eatSuffix(stream, 1); + return tokenChain(stream,state,[stream.eat(c)],"bracket");}} + else if(c=="r"){ + c=look(stream, 1); + if(c=="("){ + eatSuffix(stream, 2); + return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} + if(c=="["){ + eatSuffix(stream, 2); + return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} + if(c=="{"){ + eatSuffix(stream, 2); + return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} + if(c=="<"){ + eatSuffix(stream, 2); + return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);} + if(/[\^'"!~\/]/.test(c)){ + eatSuffix(stream, 1); + return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} + else if(/[\^'"!~\/(\[{<]/.test(c)){ + if(c=="("){ + eatSuffix(stream, 1); + return tokenChain(stream,state,[")"],"string");} + if(c=="["){ + eatSuffix(stream, 1); + return tokenChain(stream,state,["]"],"string");} + if(c=="{"){ + eatSuffix(stream, 1); + return tokenChain(stream,state,["}"],"string");} + if(c=="<"){ + eatSuffix(stream, 1); + return tokenChain(stream,state,[">"],"string");} + if(/[\^'"!~\/]/.test(c)){ + return tokenChain(stream,state,[stream.eat(c)],"string");}}}} + if(ch=="m"){ + var c=look(stream, -2); + if(!(c&&/\w/.test(c))){ + c=stream.eat(/[(\[{<\^'"!~\/]/); + if(c){ + if(/[\^'"!~\/]/.test(c)){ + return tokenChain(stream,state,[c],RXstyle,RXmodifiers);} + if(c=="("){ + return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} + if(c=="["){ + return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} + if(c=="{"){ + return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} + if(c=="<"){ + return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}}}} + if(ch=="s"){ + var c=/[\/>\]})\w]/.test(look(stream, -2)); + if(!c){ + c=stream.eat(/[(\[{<\^'"!~\/]/); + if(c){ + if(c=="[") + return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); + if(c=="{") + return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); + if(c=="<") + return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); + if(c=="(") + return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); + return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} + if(ch=="y"){ + var c=/[\/>\]})\w]/.test(look(stream, -2)); + if(!c){ + c=stream.eat(/[(\[{<\^'"!~\/]/); + if(c){ + if(c=="[") + return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); + if(c=="{") + return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); + if(c=="<") + return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); + if(c=="(") + return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); + return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} + if(ch=="t"){ + var c=/[\/>\]})\w]/.test(look(stream, -2)); + if(!c){ + c=stream.eat("r");if(c){ + c=stream.eat(/[(\[{<\^'"!~\/]/); + if(c){ + if(c=="[") + return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); + if(c=="{") + return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); + if(c=="<") + return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); + if(c=="(") + return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); + return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}} + if(ch=="`"){ + return tokenChain(stream,state,[ch],"variable-2");} + if(ch=="/"){ + if(!/~\s*$/.test(prefix(stream))) + return "operator"; + else + return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);} + if(ch=="$"){ + var p=stream.pos; + if(stream.eatWhile(/\d/)||stream.eat("{")&&stream.eatWhile(/\d/)&&stream.eat("}")) + return "variable-2"; + else + stream.pos=p;} + if(/[$@%]/.test(ch)){ + var p=stream.pos; + if(stream.eat("^")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){ + var c=stream.current(); + if(PERL[c]) + return "variable-2";} + stream.pos=p;} + if(/[$@%&]/.test(ch)){ + if(stream.eatWhile(/[\w$\[\]]/)||stream.eat("{")&&stream.eatWhile(/[\w$\[\]]/)&&stream.eat("}")){ + var c=stream.current(); + if(PERL[c]) + return "variable-2"; + else + return "variable";}} + if(ch=="#"){ + if(look(stream, -2)!="$"){ + stream.skipToEnd(); + return "comment";}} + if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(ch)){ + var p=stream.pos; + stream.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/); + if(PERL[stream.current()]) + return "operator"; + else + stream.pos=p;} + if(ch=="_"){ + if(stream.pos==1){ + if(suffix(stream, 6)=="_END__"){ + return tokenChain(stream,state,['\0'],"comment");} + else if(suffix(stream, 7)=="_DATA__"){ + return tokenChain(stream,state,['\0'],"variable-2");} + else if(suffix(stream, 7)=="_C__"){ + return tokenChain(stream,state,['\0'],"string");}}} + if(/\w/.test(ch)){ + var p=stream.pos; + if(look(stream, -2)=="{"&&(look(stream, 0)=="}"||stream.eatWhile(/\w/)&&look(stream, 0)=="}")) + return "string"; + else + stream.pos=p;} + if(/[A-Z]/.test(ch)){ + var l=look(stream, -2); + var p=stream.pos; + stream.eatWhile(/[A-Z_]/); + if(/[\da-z]/.test(look(stream, 0))){ + stream.pos=p;} + else{ + var c=PERL[stream.current()]; + if(!c) + return "meta"; + if(c[1]) + c=c[0]; + if(l!=":"){ + if(c==1) + return "keyword"; + else if(c==2) + return "def"; + else if(c==3) + return "atom"; + else if(c==4) + return "operator"; + else if(c==5) + return "variable-2"; + else + return "meta";} + else + return "meta";}} + if(/[a-zA-Z_]/.test(ch)){ + var l=look(stream, -2); + stream.eatWhile(/\w/); + var c=PERL[stream.current()]; + if(!c) + return "meta"; + if(c[1]) + c=c[0]; + if(l!=":"){ + if(c==1) + return "keyword"; + else if(c==2) + return "def"; + else if(c==3) + return "atom"; + else if(c==4) + return "operator"; + else if(c==5) + return "variable-2"; + else + return "meta";} + else + return "meta";} + return null;} + + return { + startState: function() { + return { + tokenize: tokenPerl, + chain: null, + style: null, + tail: null + }; + }, + token: function(stream, state) { + return (state.tokenize || tokenPerl)(stream, state); + }, + lineComment: '#' + }; +}); + +CodeMirror.registerHelper("wordChars", "perl", /[\w$]/); + +CodeMirror.defineMIME("text/x-perl", "perl"); + +// it's like "peek", but need for look-ahead or look-behind if index < 0 +function look(stream, c){ + return stream.string.charAt(stream.pos+(c||0)); +} + +// return a part of prefix of current stream from current position +function prefix(stream, c){ + if(c){ + var x=stream.pos-c; + return stream.string.substr((x>=0?x:0),c);} + else{ + return stream.string.substr(0,stream.pos-1); + } +} + +// return a part of suffix of current stream from current position +function suffix(stream, c){ + var y=stream.string.length; + var x=y-stream.pos+1; + return stream.string.substr(stream.pos,(c&&c=(y=stream.string.length-1)) + stream.pos=y; + else + stream.pos=x; +} + +}); diff --git a/global/codemirror/mode/php/index.html b/global/codemirror/mode/php/index.html new file mode 100644 index 00000000..adf6b1be --- /dev/null +++ b/global/codemirror/mode/php/index.html @@ -0,0 +1,64 @@ + + +CodeMirror: PHP mode + + + + + + + + + + + + + + + +
+

PHP mode

+
+ + + +

Simple HTML/PHP mode based on + the C-like mode. Depends on XML, + JavaScript, CSS, HTMLMixed, and C-like modes.

+ +

MIME types defined: application/x-httpd-php (HTML with PHP code), text/x-php (plain, non-wrapped PHP code).

+
diff --git a/global/codemirror/mode/php/php.js b/global/codemirror/mode/php/php.js new file mode 100644 index 00000000..57ba812d --- /dev/null +++ b/global/codemirror/mode/php/php.js @@ -0,0 +1,234 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function keywords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + // Helper for phpString + function matchSequence(list, end, escapes) { + if (list.length == 0) return phpString(end); + return function (stream, state) { + var patterns = list[0]; + for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) { + state.tokenize = matchSequence(list.slice(1), end); + return patterns[i][1]; + } + state.tokenize = phpString(end, escapes); + return "string"; + }; + } + function phpString(closing, escapes) { + return function(stream, state) { return phpString_(stream, state, closing, escapes); }; + } + function phpString_(stream, state, closing, escapes) { + // "Complex" syntax + if (escapes !== false && stream.match("${", false) || stream.match("{$", false)) { + state.tokenize = null; + return "string"; + } + + // Simple syntax + if (escapes !== false && stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) { + // After the variable name there may appear array or object operator. + if (stream.match("[", false)) { + // Match array operator + state.tokenize = matchSequence([ + [["[", null]], + [[/\d[\w\.]*/, "number"], + [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"], + [/[\w\$]+/, "variable"]], + [["]", null]] + ], closing, escapes); + } + if (stream.match(/\-\>\w/, false)) { + // Match object operator + state.tokenize = matchSequence([ + [["->", null]], + [[/[\w]+/, "variable"]] + ], closing, escapes); + } + return "variable-2"; + } + + var escaped = false; + // Normal string + while (!stream.eol() && + (escaped || escapes === false || + (!stream.match("{$", false) && + !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) { + if (!escaped && stream.match(closing)) { + state.tokenize = null; + state.tokStack.pop(); state.tokStack.pop(); + break; + } + escaped = stream.next() == "\\" && !escaped; + } + return "string"; + } + + var phpKeywords = "abstract and array as break case catch class clone const continue declare default " + + "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " + + "for foreach function global goto if implements interface instanceof namespace " + + "new or private protected public static switch throw trait try use var while xor " + + "die echo empty exit eval include include_once isset list require require_once return " + + "print unset __halt_compiler self static parent yield insteadof finally"; + var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__"; + var phpBuiltin = "func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count"; + CodeMirror.registerHelper("hintWords", "php", [phpKeywords, phpAtoms, phpBuiltin].join(" ").split(" ")); + CodeMirror.registerHelper("wordChars", "php", /[\w$]/); + + var phpConfig = { + name: "clike", + helperType: "php", + keywords: keywords(phpKeywords), + blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"), + defKeywords: keywords("class function interface namespace trait"), + atoms: keywords(phpAtoms), + builtin: keywords(phpBuiltin), + multiLineStrings: true, + hooks: { + "$": function(stream) { + stream.eatWhile(/[\w\$_]/); + return "variable-2"; + }, + "<": function(stream, state) { + var before; + if (before = stream.match(/<<\s*/)) { + var quoted = stream.eat(/['"]/); + stream.eatWhile(/[\w\.]/); + var delim = stream.current().slice(before[0].length + (quoted ? 2 : 1)); + if (quoted) stream.eat(quoted); + if (delim) { + (state.tokStack || (state.tokStack = [])).push(delim, 0); + state.tokenize = phpString(delim, quoted != "'"); + return "string"; + } + } + return false; + }, + "#": function(stream) { + while (!stream.eol() && !stream.match("?>", false)) stream.next(); + return "comment"; + }, + "/": function(stream) { + if (stream.eat("/")) { + while (!stream.eol() && !stream.match("?>", false)) stream.next(); + return "comment"; + } + return false; + }, + '"': function(_stream, state) { + (state.tokStack || (state.tokStack = [])).push('"', 0); + state.tokenize = phpString('"'); + return "string"; + }, + "{": function(_stream, state) { + if (state.tokStack && state.tokStack.length) + state.tokStack[state.tokStack.length - 1]++; + return false; + }, + "}": function(_stream, state) { + if (state.tokStack && state.tokStack.length > 0 && + !--state.tokStack[state.tokStack.length - 1]) { + state.tokenize = phpString(state.tokStack[state.tokStack.length - 2]); + } + return false; + } + } + }; + + CodeMirror.defineMode("php", function(config, parserConfig) { + var htmlMode = CodeMirror.getMode(config, "text/html"); + var phpMode = CodeMirror.getMode(config, phpConfig); + + function dispatch(stream, state) { + var isPHP = state.curMode == phpMode; + if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null; + if (!isPHP) { + if (stream.match(/^<\?\w*/)) { + state.curMode = phpMode; + if (!state.php) state.php = CodeMirror.startState(phpMode, htmlMode.indent(state.html, "")) + state.curState = state.php; + return "meta"; + } + if (state.pending == '"' || state.pending == "'") { + while (!stream.eol() && stream.next() != state.pending) {} + var style = "string"; + } else if (state.pending && stream.pos < state.pending.end) { + stream.pos = state.pending.end; + var style = state.pending.style; + } else { + var style = htmlMode.token(stream, state.curState); + } + if (state.pending) state.pending = null; + var cur = stream.current(), openPHP = cur.search(/<\?/), m; + if (openPHP != -1) { + if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0]; + else state.pending = {end: stream.pos, style: style}; + stream.backUp(cur.length - openPHP); + } + return style; + } else if (isPHP && state.php.tokenize == null && stream.match("?>")) { + state.curMode = htmlMode; + state.curState = state.html; + if (!state.php.context.prev) state.php = null; + return "meta"; + } else { + return phpMode.token(stream, state.curState); + } + } + + return { + startState: function() { + var html = CodeMirror.startState(htmlMode) + var php = parserConfig.startOpen ? CodeMirror.startState(phpMode) : null + return {html: html, + php: php, + curMode: parserConfig.startOpen ? phpMode : htmlMode, + curState: parserConfig.startOpen ? php : html, + pending: null}; + }, + + copyState: function(state) { + var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html), + php = state.php, phpNew = php && CodeMirror.copyState(phpMode, php), cur; + if (state.curMode == htmlMode) cur = htmlNew; + else cur = phpNew; + return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur, + pending: state.pending}; + }, + + token: dispatch, + + indent: function(state, textAfter) { + if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) || + (state.curMode == phpMode && /^\?>/.test(textAfter))) + return htmlMode.indent(state.html, textAfter); + return state.curMode.indent(state.curState, textAfter); + }, + + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//", + + innerMode: function(state) { return {state: state.curState, mode: state.curMode}; } + }; + }, "htmlmixed", "clike"); + + CodeMirror.defineMIME("application/x-httpd-php", "php"); + CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true}); + CodeMirror.defineMIME("text/x-php", phpConfig); +}); diff --git a/global/codemirror/mode/php/test.js b/global/codemirror/mode/php/test.js new file mode 100644 index 00000000..e2ecefc1 --- /dev/null +++ b/global/codemirror/mode/php/test.js @@ -0,0 +1,154 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "php"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT('simple_test', + '[meta ]'); + + MT('variable_interpolation_non_alphanumeric', + '[meta $/$\\$}$\\\"$:$;$?$|$[[$]]$+$=aaa"]', + '[meta ?>]'); + + MT('variable_interpolation_digits', + '[meta ]'); + + MT('variable_interpolation_simple_syntax_1', + '[meta ]'); + + MT('variable_interpolation_simple_syntax_2', + '[meta ]'); + + MT('variable_interpolation_simple_syntax_3', + '[meta [variable aaaaa][string .aaaaaa"];', + '[keyword echo] [string "aaa][variable-2 $aaaa][string ->][variable-2 $aaaaa][string .aaaaaa"];', + '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string [[2]].aaaaaa"];', + '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string ->aaaa2.aaaaaa"];', + '[meta ?>]'); + + MT('variable_interpolation_escaping', + '[meta aaa.aaa"];', + '[keyword echo] [string "aaa\\$aaaa[[2]]aaa.aaa"];', + '[keyword echo] [string "aaa\\$aaaa[[asd]]aaa.aaa"];', + '[keyword echo] [string "aaa{\\$aaaa->aaa.aaa"];', + '[keyword echo] [string "aaa{\\$aaaa[[2]]aaa.aaa"];', + '[keyword echo] [string "aaa{\\aaaaa[[asd]]aaa.aaa"];', + '[keyword echo] [string "aaa\\${aaaa->aaa.aaa"];', + '[keyword echo] [string "aaa\\${aaaa[[2]]aaa.aaa"];', + '[keyword echo] [string "aaa\\${aaaa[[asd]]aaa.aaa"];', + '[meta ?>]'); + + MT('variable_interpolation_complex_syntax_1', + '[meta aaa.aaa"];', + '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa]}[string ->aaa.aaa"];', + '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa][[',' [number 42]',']]}[string ->aaa.aaa"];', + '[keyword echo] [string "aaa][variable-2 $]{[variable aaaa][meta ?>]aaaaaa'); + + MT('variable_interpolation_complex_syntax_2', + '[meta } $aaaaaa.aaa"];', + '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*}?>*/][[',' [string "aaa][variable-2 $aaa][string {}][variable-2 $]{[variable aaa]}[string "]',']]}[string ->aaa.aaa"];', + '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*} } $aaa } */]}[string ->aaa.aaa"];'); + + + function build_recursive_monsters(nt, t, n){ + var monsters = [t]; + for (var i = 1; i <= n; ++i) + monsters[i] = nt.join(monsters[i - 1]); + return monsters; + } + + var m1 = build_recursive_monsters( + ['[string "][variable-2 $]{[variable aaa] [operator +] ', '}[string "]'], + '[comment /* }?>} */] [string "aaa][variable-2 $aaa][string .aaa"]', + 10 + ); + + MT('variable_interpolation_complex_syntax_3_1', + '[meta ]'); + + var m2 = build_recursive_monsters( + ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', '}[string .a"]'], + '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', + 5 + ); + + MT('variable_interpolation_complex_syntax_3_2', + '[meta ]'); + + function build_recursive_monsters_2(mf1, mf2, nt, t, n){ + var monsters = [t]; + for (var i = 1; i <= n; ++i) + monsters[i] = nt[0] + mf1[i - 1] + nt[1] + mf2[i - 1] + nt[2] + monsters[i - 1] + nt[3]; + return monsters; + } + + var m3 = build_recursive_monsters_2( + m1, + m2, + ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', ' [operator +] ', '}[string .a"]'], + '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', + 4 + ); + + MT('variable_interpolation_complex_syntax_3_3', + '[meta ]'); + + MT("variable_interpolation_heredoc", + "[meta +CodeMirror: Pig Latin mode + + + + + + + + + +
+

Pig Latin mode

+
+ + + +

+ Simple mode that handles Pig Latin language. +

+ +

MIME type defined: text/x-pig + (PIG code) +

diff --git a/global/codemirror/mode/pig/pig.js b/global/codemirror/mode/pig/pig.js new file mode 100644 index 00000000..5b567272 --- /dev/null +++ b/global/codemirror/mode/pig/pig.js @@ -0,0 +1,178 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/* + * Pig Latin Mode for CodeMirror 2 + * @author Prasanth Jayachandran + * @link https://github.com/prasanthj/pig-codemirror-2 + * This implementation is adapted from PL/SQL mode in CodeMirror 2. + */ +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("pig", function(_config, parserConfig) { + var keywords = parserConfig.keywords, + builtins = parserConfig.builtins, + types = parserConfig.types, + multiLineStrings = parserConfig.multiLineStrings; + + var isOperatorChar = /[*+\-%<>=&?:\/!|]/; + + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + + function tokenComment(stream, state) { + var isEnd = false; + var ch; + while(ch = stream.next()) { + if(ch == "/" && isEnd) { + state.tokenize = tokenBase; + break; + } + isEnd = (ch == "*"); + } + return "comment"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while((next = stream.next()) != null) { + if (next == quote && !escaped) { + end = true; break; + } + escaped = !escaped && next == "\\"; + } + if (end || !(escaped || multiLineStrings)) + state.tokenize = tokenBase; + return "error"; + }; + } + + + function tokenBase(stream, state) { + var ch = stream.next(); + + // is a start of string? + if (ch == '"' || ch == "'") + return chain(stream, state, tokenString(ch)); + // is it one of the special chars + else if(/[\[\]{}\(\),;\.]/.test(ch)) + return null; + // is it a number? + else if(/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } + // multi line comment or operator + else if (ch == "/") { + if (stream.eat("*")) { + return chain(stream, state, tokenComment); + } + else { + stream.eatWhile(isOperatorChar); + return "operator"; + } + } + // single line comment or operator + else if (ch=="-") { + if(stream.eat("-")){ + stream.skipToEnd(); + return "comment"; + } + else { + stream.eatWhile(isOperatorChar); + return "operator"; + } + } + // is it an operator + else if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + else { + // get the while word + stream.eatWhile(/[\w\$_]/); + // is it one of the listed keywords? + if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { + //keywords can be used as variables like flatten(group), group.$0 etc.. + if (!stream.eat(")") && !stream.eat(".")) + return "keyword"; + } + // is it one of the builtin functions? + if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) + return "variable-2"; + // is it one of the listed types? + if (types && types.propertyIsEnumerable(stream.current().toUpperCase())) + return "variable-3"; + // default is a 'variable' + return "variable"; + } + } + + // Interface + return { + startState: function() { + return { + tokenize: tokenBase, + startOfLine: true + }; + }, + + token: function(stream, state) { + if(stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + return style; + } + }; +}); + +(function() { + function keywords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + // builtin funcs taken from trunk revision 1303237 + var pBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL " + + "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS " + + "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG " + + "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN " + + "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER " + + "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS " + + "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA " + + "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE " + + "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG " + + "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER "; + + // taken from QueryLexer.g + var pKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP " + + "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL " + + "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE " + + "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE " + + "NEQ MATCHES TRUE FALSE DUMP"; + + // data types + var pTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP "; + + CodeMirror.defineMIME("text/x-pig", { + name: "pig", + builtins: keywords(pBuiltins), + keywords: keywords(pKeywords), + types: keywords(pTypes) + }); + + CodeMirror.registerHelper("hintWords", "pig", (pBuiltins + pTypes + pKeywords).split(" ")); +}()); + +}); diff --git a/global/codemirror/mode/powershell/index.html b/global/codemirror/mode/powershell/index.html new file mode 100644 index 00000000..6b235df8 --- /dev/null +++ b/global/codemirror/mode/powershell/index.html @@ -0,0 +1,204 @@ + + + + + CodeMirror: Powershell mode + + + + + + + + +
+

PowerShell mode

+ +
+ + +

MIME types defined: application/x-powershell.

+
+ + diff --git a/global/codemirror/mode/powershell/powershell.js b/global/codemirror/mode/powershell/powershell.js new file mode 100644 index 00000000..2728ef9d --- /dev/null +++ b/global/codemirror/mode/powershell/powershell.js @@ -0,0 +1,398 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + 'use strict'; + if (typeof exports == 'object' && typeof module == 'object') // CommonJS + mod(require('../../lib/codemirror')); + else if (typeof define == 'function' && define.amd) // AMD + define(['../../lib/codemirror'], mod); + else // Plain browser env + mod(window.CodeMirror); +})(function(CodeMirror) { +'use strict'; + +CodeMirror.defineMode('powershell', function() { + function buildRegexp(patterns, options) { + options = options || {}; + var prefix = options.prefix !== undefined ? options.prefix : '^'; + var suffix = options.suffix !== undefined ? options.suffix : '\\b'; + + for (var i = 0; i < patterns.length; i++) { + if (patterns[i] instanceof RegExp) { + patterns[i] = patterns[i].source; + } + else { + patterns[i] = patterns[i].replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); + } + } + + return new RegExp(prefix + '(' + patterns.join('|') + ')' + suffix, 'i'); + } + + var notCharacterOrDash = '(?=[^A-Za-z\\d\\-_]|$)'; + var varNames = /[\w\-:]/ + var keywords = buildRegexp([ + /begin|break|catch|continue|data|default|do|dynamicparam/, + /else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in/, + /param|process|return|switch|throw|trap|try|until|where|while/ + ], { suffix: notCharacterOrDash }); + + var punctuation = /[\[\]{},;`\.]|@[({]/; + var wordOperators = buildRegexp([ + 'f', + /b?not/, + /[ic]?split/, 'join', + /is(not)?/, 'as', + /[ic]?(eq|ne|[gl][te])/, + /[ic]?(not)?(like|match|contains)/, + /[ic]?replace/, + /b?(and|or|xor)/ + ], { prefix: '-' }); + var symbolOperators = /[+\-*\/%]=|\+\+|--|\.\.|[+\-*&^%:=!|\/]|<(?!#)|(?!#)>/; + var operators = buildRegexp([wordOperators, symbolOperators], { suffix: '' }); + + var numbers = /^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i; + + var identifiers = /^[A-Za-z\_][A-Za-z\-\_\d]*\b/; + + var symbolBuiltins = /[A-Z]:|%|\?/i; + var namedBuiltins = buildRegexp([ + /Add-(Computer|Content|History|Member|PSSnapin|Type)/, + /Checkpoint-Computer/, + /Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/, + /Compare-Object/, + /Complete-Transaction/, + /Connect-PSSession/, + /ConvertFrom-(Csv|Json|SecureString|StringData)/, + /Convert-Path/, + /ConvertTo-(Csv|Html|Json|SecureString|Xml)/, + /Copy-Item(Property)?/, + /Debug-Process/, + /Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/, + /Disconnect-PSSession/, + /Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/, + /(Enter|Exit)-PSSession/, + /Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/, + /ForEach-Object/, + /Format-(Custom|List|Table|Wide)/, + new RegExp('Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential' + + '|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job' + + '|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration' + + '|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)'), + /Group-Object/, + /Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/, + /ImportSystemModules/, + /Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/, + /Join-Path/, + /Limit-EventLog/, + /Measure-(Command|Object)/, + /Move-Item(Property)?/, + new RegExp('New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile' + + '|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)'), + /Out-(Default|File|GridView|Host|Null|Printer|String)/, + /Pause/, + /(Pop|Push)-Location/, + /Read-Host/, + /Receive-(Job|PSSession)/, + /Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/, + /Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/, + /Rename-(Computer|Item(Property)?)/, + /Reset-ComputerMachinePassword/, + /Resolve-Path/, + /Restart-(Computer|Service)/, + /Restore-Computer/, + /Resume-(Job|Service)/, + /Save-Help/, + /Select-(Object|String|Xml)/, + /Send-MailMessage/, + new RegExp('Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug' + + '|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)'), + /Show-(Command|ControlPanelItem|EventLog)/, + /Sort-Object/, + /Split-Path/, + /Start-(Job|Process|Service|Sleep|Transaction|Transcript)/, + /Stop-(Computer|Job|Process|Service|Transcript)/, + /Suspend-(Job|Service)/, + /TabExpansion2/, + /Tee-Object/, + /Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/, + /Trace-Command/, + /Unblock-File/, + /Undo-Transaction/, + /Unregister-(Event|PSSessionConfiguration)/, + /Update-(FormatData|Help|List|TypeData)/, + /Use-Transaction/, + /Wait-(Event|Job|Process)/, + /Where-Object/, + /Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/, + /cd|help|mkdir|more|oss|prompt/, + /ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/, + /echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/, + /group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/, + /measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/, + /rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/, + /sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/ + ], { prefix: '', suffix: '' }); + var variableBuiltins = buildRegexp([ + /[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/, + /FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/, + /MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/, + /PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/, + /PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/, + /WarningPreference|WhatIfPreference/, + + /Event|EventArgs|EventSubscriber|Sender/, + /Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/, + /true|false|null/ + ], { prefix: '\\$', suffix: '' }); + + var builtins = buildRegexp([symbolBuiltins, namedBuiltins, variableBuiltins], { suffix: notCharacterOrDash }); + + var grammar = { + keyword: keywords, + number: numbers, + operator: operators, + builtin: builtins, + punctuation: punctuation, + identifier: identifiers + }; + + // tokenizers + function tokenBase(stream, state) { + // Handle Comments + //var ch = stream.peek(); + + var parent = state.returnStack[state.returnStack.length - 1]; + if (parent && parent.shouldReturnFrom(state)) { + state.tokenize = parent.tokenize; + state.returnStack.pop(); + return state.tokenize(stream, state); + } + + if (stream.eatSpace()) { + return null; + } + + if (stream.eat('(')) { + state.bracketNesting += 1; + return 'punctuation'; + } + + if (stream.eat(')')) { + state.bracketNesting -= 1; + return 'punctuation'; + } + + for (var key in grammar) { + if (stream.match(grammar[key])) { + return key; + } + } + + var ch = stream.next(); + + // single-quote string + if (ch === "'") { + return tokenSingleQuoteString(stream, state); + } + + if (ch === '$') { + return tokenVariable(stream, state); + } + + // double-quote string + if (ch === '"') { + return tokenDoubleQuoteString(stream, state); + } + + if (ch === '<' && stream.eat('#')) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + + if (ch === '#') { + stream.skipToEnd(); + return 'comment'; + } + + if (ch === '@') { + var quoteMatch = stream.eat(/["']/); + if (quoteMatch && stream.eol()) { + state.tokenize = tokenMultiString; + state.startQuote = quoteMatch[0]; + return tokenMultiString(stream, state); + } else if (stream.eol()) { + return 'error'; + } else if (stream.peek().match(/[({]/)) { + return 'punctuation'; + } else if (stream.peek().match(varNames)) { + // splatted variable + return tokenVariable(stream, state); + } + } + return 'error'; + } + + function tokenSingleQuoteString(stream, state) { + var ch; + while ((ch = stream.peek()) != null) { + stream.next(); + + if (ch === "'" && !stream.eat("'")) { + state.tokenize = tokenBase; + return 'string'; + } + } + + return 'error'; + } + + function tokenDoubleQuoteString(stream, state) { + var ch; + while ((ch = stream.peek()) != null) { + if (ch === '$') { + state.tokenize = tokenStringInterpolation; + return 'string'; + } + + stream.next(); + if (ch === '`') { + stream.next(); + continue; + } + + if (ch === '"' && !stream.eat('"')) { + state.tokenize = tokenBase; + return 'string'; + } + } + + return 'error'; + } + + function tokenStringInterpolation(stream, state) { + return tokenInterpolation(stream, state, tokenDoubleQuoteString); + } + + function tokenMultiStringReturn(stream, state) { + state.tokenize = tokenMultiString; + state.startQuote = '"' + return tokenMultiString(stream, state); + } + + function tokenHereStringInterpolation(stream, state) { + return tokenInterpolation(stream, state, tokenMultiStringReturn); + } + + function tokenInterpolation(stream, state, parentTokenize) { + if (stream.match('$(')) { + var savedBracketNesting = state.bracketNesting; + state.returnStack.push({ + /*jshint loopfunc:true */ + shouldReturnFrom: function(state) { + return state.bracketNesting === savedBracketNesting; + }, + tokenize: parentTokenize + }); + state.tokenize = tokenBase; + state.bracketNesting += 1; + return 'punctuation'; + } else { + stream.next(); + state.returnStack.push({ + shouldReturnFrom: function() { return true; }, + tokenize: parentTokenize + }); + state.tokenize = tokenVariable; + return state.tokenize(stream, state); + } + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while ((ch = stream.next()) != null) { + if (maybeEnd && ch == '>') { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch === '#'); + } + return 'comment'; + } + + function tokenVariable(stream, state) { + var ch = stream.peek(); + if (stream.eat('{')) { + state.tokenize = tokenVariableWithBraces; + return tokenVariableWithBraces(stream, state); + } else if (ch != undefined && ch.match(varNames)) { + stream.eatWhile(varNames); + state.tokenize = tokenBase; + return 'variable-2'; + } else { + state.tokenize = tokenBase; + return 'error'; + } + } + + function tokenVariableWithBraces(stream, state) { + var ch; + while ((ch = stream.next()) != null) { + if (ch === '}') { + state.tokenize = tokenBase; + break; + } + } + return 'variable-2'; + } + + function tokenMultiString(stream, state) { + var quote = state.startQuote; + if (stream.sol() && stream.match(new RegExp(quote + '@'))) { + state.tokenize = tokenBase; + } + else if (quote === '"') { + while (!stream.eol()) { + var ch = stream.peek(); + if (ch === '$') { + state.tokenize = tokenHereStringInterpolation; + return 'string'; + } + + stream.next(); + if (ch === '`') { + stream.next(); + } + } + } + else { + stream.skipToEnd(); + } + + return 'string'; + } + + var external = { + startState: function() { + return { + returnStack: [], + bracketNesting: 0, + tokenize: tokenBase + }; + }, + + token: function(stream, state) { + return state.tokenize(stream, state); + }, + + blockCommentStart: '<#', + blockCommentEnd: '#>', + lineComment: '#', + fold: 'brace' + }; + return external; +}); + +CodeMirror.defineMIME('application/x-powershell', 'powershell'); +}); diff --git a/global/codemirror/mode/powershell/test.js b/global/codemirror/mode/powershell/test.js new file mode 100644 index 00000000..9c9aed0d --- /dev/null +++ b/global/codemirror/mode/powershell/test.js @@ -0,0 +1,74 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "powershell"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + function forEach(arr, f) { for (var i = 0; i < arr.length; i++) f(arr[i], i) } + + MT('comment', '[number 1][comment # A]'); + MT('comment_multiline', '[number 1][comment <#]', + '[comment ABC]', + '[comment #>][number 2]'); + + forEach([ + '0', '1234', + '12kb', '12mb', '12Gb', '12Tb', '12PB', '12L', '12D', '12lkb', '12dtb', + '1.234', '1.234e56', '1.', '1.e2', '.2', '.2e34', + '1.2MB', '1.kb', '.1dTB', '1.e1gb', '.2', '.2e34', + '0x1', '0xabcdef', '0x3tb', '0xelmb' + ], function(number) { + MT("number_" + number, "[number " + number + "]"); + }); + + MT('string_literal_escaping', "[string 'a''']"); + MT('string_literal_variable', "[string 'a $x']"); + MT('string_escaping_1', '[string "a `""]'); + MT('string_escaping_2', '[string "a """]'); + MT('string_variable_escaping', '[string "a `$x"]'); + MT('string_variable', '[string "a ][variable-2 $x][string b"]'); + MT('string_variable_spaces', '[string "a ][variable-2 ${x y}][string b"]'); + MT('string_expression', '[string "a ][punctuation $(][variable-2 $x][operator +][number 3][punctuation )][string b"]'); + MT('string_expression_nested', '[string "A][punctuation $(][string "a][punctuation $(][string "w"][punctuation )][string b"][punctuation )][string B"]'); + + MT('string_heredoc', '[string @"]', + '[string abc]', + '[string "@]'); + MT('string_heredoc_quotes', '[string @"]', + '[string abc "\']', + '[string "@]'); + MT('string_heredoc_variable', '[string @"]', + '[string a ][variable-2 $x][string b]', + '[string "@]'); + MT('string_heredoc_nested_string', '[string @"]', + '[string a][punctuation $(][string "w"][punctuation )][string b]', + '[string "@]'); + MT('string_heredoc_literal_quotes', "[string @']", + '[string abc "\']', + "[string '@]"); + + MT('array', "[punctuation @(][string 'a'][punctuation ,][string 'b'][punctuation )]"); + MT('hash', "[punctuation @{][string 'key'][operator :][string 'value'][punctuation }]"); + + MT('variable', "[variable-2 $test]"); + MT('variable_global', "[variable-2 $global:test]"); + MT('variable_spaces', "[variable-2 ${test test}]"); + MT('operator_splat', "[variable-2 @x]"); + MT('variable_builtin', "[builtin $ErrorActionPreference]"); + MT('variable_builtin_symbols', "[builtin $$]"); + + MT('operator', "[operator +]"); + MT('operator_unary', "[operator +][number 3]"); + MT('operator_long', "[operator -match]"); + + forEach([ + '(', ')', '[[', ']]', '{', '}', ',', '`', ';', '.' + ], function(punctuation) { + MT("punctuation_" + punctuation.replace(/^[\[\]]/,''), "[punctuation " + punctuation + "]"); + }); + + MT('keyword', "[keyword if]"); + + MT('call_builtin', "[builtin Get-ChildItem]"); +})(); diff --git a/global/codemirror/mode/properties/index.html b/global/codemirror/mode/properties/index.html new file mode 100644 index 00000000..f885302d --- /dev/null +++ b/global/codemirror/mode/properties/index.html @@ -0,0 +1,53 @@ + + +CodeMirror: Properties files mode + + + + + + + + + +
+

Properties files mode

+
+ + +

MIME types defined: text/x-properties, + text/x-ini.

+ +
diff --git a/global/codemirror/mode/properties/properties.js b/global/codemirror/mode/properties/properties.js new file mode 100644 index 00000000..ef8bf37e --- /dev/null +++ b/global/codemirror/mode/properties/properties.js @@ -0,0 +1,78 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("properties", function() { + return { + token: function(stream, state) { + var sol = stream.sol() || state.afterSection; + var eol = stream.eol(); + + state.afterSection = false; + + if (sol) { + if (state.nextMultiline) { + state.inMultiline = true; + state.nextMultiline = false; + } else { + state.position = "def"; + } + } + + if (eol && ! state.nextMultiline) { + state.inMultiline = false; + state.position = "def"; + } + + if (sol) { + while(stream.eatSpace()) {} + } + + var ch = stream.next(); + + if (sol && (ch === "#" || ch === "!" || ch === ";")) { + state.position = "comment"; + stream.skipToEnd(); + return "comment"; + } else if (sol && ch === "[") { + state.afterSection = true; + stream.skipTo("]"); stream.eat("]"); + return "header"; + } else if (ch === "=" || ch === ":") { + state.position = "quote"; + return null; + } else if (ch === "\\" && state.position === "quote") { + if (stream.eol()) { // end of line? + // Multiline value + state.nextMultiline = true; + } + } + + return state.position; + }, + + startState: function() { + return { + position : "def", // Current position, "def", "quote" or "comment" + nextMultiline : false, // Is the next line multiline value + inMultiline : false, // Is the current line a multiline value + afterSection : false // Did we just open a section + }; + } + + }; +}); + +CodeMirror.defineMIME("text/x-properties", "properties"); +CodeMirror.defineMIME("text/x-ini", "properties"); + +}); diff --git a/global/codemirror/mode/protobuf/index.html b/global/codemirror/mode/protobuf/index.html new file mode 100644 index 00000000..cfe7b9dc --- /dev/null +++ b/global/codemirror/mode/protobuf/index.html @@ -0,0 +1,64 @@ + + +CodeMirror: ProtoBuf mode + + + + + + + + + +
+

ProtoBuf mode

+
+ + +

MIME types defined: text/x-protobuf.

+ +
diff --git a/global/codemirror/mode/protobuf/protobuf.js b/global/codemirror/mode/protobuf/protobuf.js new file mode 100644 index 00000000..bcae276e --- /dev/null +++ b/global/codemirror/mode/protobuf/protobuf.js @@ -0,0 +1,68 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); + }; + + var keywordArray = [ + "package", "message", "import", "syntax", + "required", "optional", "repeated", "reserved", "default", "extensions", "packed", + "bool", "bytes", "double", "enum", "float", "string", + "int32", "int64", "uint32", "uint64", "sint32", "sint64", "fixed32", "fixed64", "sfixed32", "sfixed64" + ]; + var keywords = wordRegexp(keywordArray); + + CodeMirror.registerHelper("hintWords", "protobuf", keywordArray); + + var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); + + function tokenBase(stream) { + // whitespaces + if (stream.eatSpace()) return null; + + // Handle one line Comments + if (stream.match("//")) { + stream.skipToEnd(); + return "comment"; + } + + // Handle Number Literals + if (stream.match(/^[0-9\.+-]/, false)) { + if (stream.match(/^[+-]?0x[0-9a-fA-F]+/)) + return "number"; + if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)) + return "number"; + if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/)) + return "number"; + } + + // Handle Strings + if (stream.match(/^"([^"]|(""))*"/)) { return "string"; } + if (stream.match(/^'([^']|(''))*'/)) { return "string"; } + + // Handle words + if (stream.match(keywords)) { return "keyword"; } + if (stream.match(identifiers)) { return "variable"; } ; + + // Handle non-detected items + stream.next(); + return null; + }; + + CodeMirror.defineMode("protobuf", function() { + return {token: tokenBase}; + }); + + CodeMirror.defineMIME("text/x-protobuf", "protobuf"); +}); diff --git a/global/codemirror/mode/pug/index.html b/global/codemirror/mode/pug/index.html new file mode 100644 index 00000000..1765853a --- /dev/null +++ b/global/codemirror/mode/pug/index.html @@ -0,0 +1,70 @@ + + +CodeMirror: Pug Templating Mode + + + + + + + + + + + + + +
+

Pug Templating Mode

+
+ +

The Pug Templating Mode

+

Created by Forbes Lindesay. Managed as part of a Brackets extension at https://github.com/ForbesLindesay/jade-brackets.

+

MIME type defined: text/x-pug, text/x-jade.

+
diff --git a/global/codemirror/mode/pug/pug.js b/global/codemirror/mode/pug/pug.js new file mode 100644 index 00000000..40182336 --- /dev/null +++ b/global/codemirror/mode/pug/pug.js @@ -0,0 +1,591 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../javascript/javascript"), require("../css/css"), require("../htmlmixed/htmlmixed")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../javascript/javascript", "../css/css", "../htmlmixed/htmlmixed"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("pug", function (config) { + // token types + var KEYWORD = 'keyword'; + var DOCTYPE = 'meta'; + var ID = 'builtin'; + var CLASS = 'qualifier'; + + var ATTRS_NEST = { + '{': '}', + '(': ')', + '[': ']' + }; + + var jsMode = CodeMirror.getMode(config, 'javascript'); + + function State() { + this.javaScriptLine = false; + this.javaScriptLineExcludesColon = false; + + this.javaScriptArguments = false; + this.javaScriptArgumentsDepth = 0; + + this.isInterpolating = false; + this.interpolationNesting = 0; + + this.jsState = CodeMirror.startState(jsMode); + + this.restOfLine = ''; + + this.isIncludeFiltered = false; + this.isEach = false; + + this.lastTag = ''; + this.scriptType = ''; + + // Attributes Mode + this.isAttrs = false; + this.attrsNest = []; + this.inAttributeName = true; + this.attributeIsType = false; + this.attrValue = ''; + + // Indented Mode + this.indentOf = Infinity; + this.indentToken = ''; + + this.innerMode = null; + this.innerState = null; + + this.innerModeForLine = false; + } + /** + * Safely copy a state + * + * @return {State} + */ + State.prototype.copy = function () { + var res = new State(); + res.javaScriptLine = this.javaScriptLine; + res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon; + res.javaScriptArguments = this.javaScriptArguments; + res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth; + res.isInterpolating = this.isInterpolating; + res.interpolationNesting = this.interpolationNesting; + + res.jsState = CodeMirror.copyState(jsMode, this.jsState); + + res.innerMode = this.innerMode; + if (this.innerMode && this.innerState) { + res.innerState = CodeMirror.copyState(this.innerMode, this.innerState); + } + + res.restOfLine = this.restOfLine; + + res.isIncludeFiltered = this.isIncludeFiltered; + res.isEach = this.isEach; + res.lastTag = this.lastTag; + res.scriptType = this.scriptType; + res.isAttrs = this.isAttrs; + res.attrsNest = this.attrsNest.slice(); + res.inAttributeName = this.inAttributeName; + res.attributeIsType = this.attributeIsType; + res.attrValue = this.attrValue; + res.indentOf = this.indentOf; + res.indentToken = this.indentToken; + + res.innerModeForLine = this.innerModeForLine; + + return res; + }; + + function javaScript(stream, state) { + if (stream.sol()) { + // if javaScriptLine was set at end of line, ignore it + state.javaScriptLine = false; + state.javaScriptLineExcludesColon = false; + } + if (state.javaScriptLine) { + if (state.javaScriptLineExcludesColon && stream.peek() === ':') { + state.javaScriptLine = false; + state.javaScriptLineExcludesColon = false; + return; + } + var tok = jsMode.token(stream, state.jsState); + if (stream.eol()) state.javaScriptLine = false; + return tok || true; + } + } + function javaScriptArguments(stream, state) { + if (state.javaScriptArguments) { + if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') { + state.javaScriptArguments = false; + return; + } + if (stream.peek() === '(') { + state.javaScriptArgumentsDepth++; + } else if (stream.peek() === ')') { + state.javaScriptArgumentsDepth--; + } + if (state.javaScriptArgumentsDepth === 0) { + state.javaScriptArguments = false; + return; + } + + var tok = jsMode.token(stream, state.jsState); + return tok || true; + } + } + + function yieldStatement(stream) { + if (stream.match(/^yield\b/)) { + return 'keyword'; + } + } + + function doctype(stream) { + if (stream.match(/^(?:doctype) *([^\n]+)?/)) { + return DOCTYPE; + } + } + + function interpolation(stream, state) { + if (stream.match('#{')) { + state.isInterpolating = true; + state.interpolationNesting = 0; + return 'punctuation'; + } + } + + function interpolationContinued(stream, state) { + if (state.isInterpolating) { + if (stream.peek() === '}') { + state.interpolationNesting--; + if (state.interpolationNesting < 0) { + stream.next(); + state.isInterpolating = false; + return 'punctuation'; + } + } else if (stream.peek() === '{') { + state.interpolationNesting++; + } + return jsMode.token(stream, state.jsState) || true; + } + } + + function caseStatement(stream, state) { + if (stream.match(/^case\b/)) { + state.javaScriptLine = true; + return KEYWORD; + } + } + + function when(stream, state) { + if (stream.match(/^when\b/)) { + state.javaScriptLine = true; + state.javaScriptLineExcludesColon = true; + return KEYWORD; + } + } + + function defaultStatement(stream) { + if (stream.match(/^default\b/)) { + return KEYWORD; + } + } + + function extendsStatement(stream, state) { + if (stream.match(/^extends?\b/)) { + state.restOfLine = 'string'; + return KEYWORD; + } + } + + function append(stream, state) { + if (stream.match(/^append\b/)) { + state.restOfLine = 'variable'; + return KEYWORD; + } + } + function prepend(stream, state) { + if (stream.match(/^prepend\b/)) { + state.restOfLine = 'variable'; + return KEYWORD; + } + } + function block(stream, state) { + if (stream.match(/^block\b *(?:(prepend|append)\b)?/)) { + state.restOfLine = 'variable'; + return KEYWORD; + } + } + + function include(stream, state) { + if (stream.match(/^include\b/)) { + state.restOfLine = 'string'; + return KEYWORD; + } + } + + function includeFiltered(stream, state) { + if (stream.match(/^include:([a-zA-Z0-9\-]+)/, false) && stream.match('include')) { + state.isIncludeFiltered = true; + return KEYWORD; + } + } + + function includeFilteredContinued(stream, state) { + if (state.isIncludeFiltered) { + var tok = filter(stream, state); + state.isIncludeFiltered = false; + state.restOfLine = 'string'; + return tok; + } + } + + function mixin(stream, state) { + if (stream.match(/^mixin\b/)) { + state.javaScriptLine = true; + return KEYWORD; + } + } + + function call(stream, state) { + if (stream.match(/^\+([-\w]+)/)) { + if (!stream.match(/^\( *[-\w]+ *=/, false)) { + state.javaScriptArguments = true; + state.javaScriptArgumentsDepth = 0; + } + return 'variable'; + } + if (stream.match(/^\+#{/, false)) { + stream.next(); + state.mixinCallAfter = true; + return interpolation(stream, state); + } + } + function callArguments(stream, state) { + if (state.mixinCallAfter) { + state.mixinCallAfter = false; + if (!stream.match(/^\( *[-\w]+ *=/, false)) { + state.javaScriptArguments = true; + state.javaScriptArgumentsDepth = 0; + } + return true; + } + } + + function conditional(stream, state) { + if (stream.match(/^(if|unless|else if|else)\b/)) { + state.javaScriptLine = true; + return KEYWORD; + } + } + + function each(stream, state) { + if (stream.match(/^(- *)?(each|for)\b/)) { + state.isEach = true; + return KEYWORD; + } + } + function eachContinued(stream, state) { + if (state.isEach) { + if (stream.match(/^ in\b/)) { + state.javaScriptLine = true; + state.isEach = false; + return KEYWORD; + } else if (stream.sol() || stream.eol()) { + state.isEach = false; + } else if (stream.next()) { + while (!stream.match(/^ in\b/, false) && stream.next()); + return 'variable'; + } + } + } + + function whileStatement(stream, state) { + if (stream.match(/^while\b/)) { + state.javaScriptLine = true; + return KEYWORD; + } + } + + function tag(stream, state) { + var captures; + if (captures = stream.match(/^(\w(?:[-:\w]*\w)?)\/?/)) { + state.lastTag = captures[1].toLowerCase(); + if (state.lastTag === 'script') { + state.scriptType = 'application/javascript'; + } + return 'tag'; + } + } + + function filter(stream, state) { + if (stream.match(/^:([\w\-]+)/)) { + var innerMode; + if (config && config.innerModes) { + innerMode = config.innerModes(stream.current().substring(1)); + } + if (!innerMode) { + innerMode = stream.current().substring(1); + } + if (typeof innerMode === 'string') { + innerMode = CodeMirror.getMode(config, innerMode); + } + setInnerMode(stream, state, innerMode); + return 'atom'; + } + } + + function code(stream, state) { + if (stream.match(/^(!?=|-)/)) { + state.javaScriptLine = true; + return 'punctuation'; + } + } + + function id(stream) { + if (stream.match(/^#([\w-]+)/)) { + return ID; + } + } + + function className(stream) { + if (stream.match(/^\.([\w-]+)/)) { + return CLASS; + } + } + + function attrs(stream, state) { + if (stream.peek() == '(') { + stream.next(); + state.isAttrs = true; + state.attrsNest = []; + state.inAttributeName = true; + state.attrValue = ''; + state.attributeIsType = false; + return 'punctuation'; + } + } + + function attrsContinued(stream, state) { + if (state.isAttrs) { + if (ATTRS_NEST[stream.peek()]) { + state.attrsNest.push(ATTRS_NEST[stream.peek()]); + } + if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) { + state.attrsNest.pop(); + } else if (stream.eat(')')) { + state.isAttrs = false; + return 'punctuation'; + } + if (state.inAttributeName && stream.match(/^[^=,\)!]+/)) { + if (stream.peek() === '=' || stream.peek() === '!') { + state.inAttributeName = false; + state.jsState = CodeMirror.startState(jsMode); + if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') { + state.attributeIsType = true; + } else { + state.attributeIsType = false; + } + } + return 'attribute'; + } + + var tok = jsMode.token(stream, state.jsState); + if (state.attributeIsType && tok === 'string') { + state.scriptType = stream.current().toString(); + } + if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) { + try { + Function('', 'var x ' + state.attrValue.replace(/,\s*$/, '').replace(/^!/, '')); + state.inAttributeName = true; + state.attrValue = ''; + stream.backUp(stream.current().length); + return attrsContinued(stream, state); + } catch (ex) { + //not the end of an attribute + } + } + state.attrValue += stream.current(); + return tok || true; + } + } + + function attributesBlock(stream, state) { + if (stream.match(/^&attributes\b/)) { + state.javaScriptArguments = true; + state.javaScriptArgumentsDepth = 0; + return 'keyword'; + } + } + + function indent(stream) { + if (stream.sol() && stream.eatSpace()) { + return 'indent'; + } + } + + function comment(stream, state) { + if (stream.match(/^ *\/\/(-)?([^\n]*)/)) { + state.indentOf = stream.indentation(); + state.indentToken = 'comment'; + return 'comment'; + } + } + + function colon(stream) { + if (stream.match(/^: */)) { + return 'colon'; + } + } + + function text(stream, state) { + if (stream.match(/^(?:\| ?| )([^\n]+)/)) { + return 'string'; + } + if (stream.match(/^(<[^\n]*)/, false)) { + // html string + setInnerMode(stream, state, 'htmlmixed'); + state.innerModeForLine = true; + return innerMode(stream, state, true); + } + } + + function dot(stream, state) { + if (stream.eat('.')) { + var innerMode = null; + if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) { + innerMode = state.scriptType.toLowerCase().replace(/"|'/g, ''); + } else if (state.lastTag === 'style') { + innerMode = 'css'; + } + setInnerMode(stream, state, innerMode); + return 'dot'; + } + } + + function fail(stream) { + stream.next(); + return null; + } + + + function setInnerMode(stream, state, mode) { + mode = CodeMirror.mimeModes[mode] || mode; + mode = config.innerModes ? config.innerModes(mode) || mode : mode; + mode = CodeMirror.mimeModes[mode] || mode; + mode = CodeMirror.getMode(config, mode); + state.indentOf = stream.indentation(); + + if (mode && mode.name !== 'null') { + state.innerMode = mode; + } else { + state.indentToken = 'string'; + } + } + function innerMode(stream, state, force) { + if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) { + if (state.innerMode) { + if (!state.innerState) { + state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {}; + } + return stream.hideFirstChars(state.indentOf + 2, function () { + return state.innerMode.token(stream, state.innerState) || true; + }); + } else { + stream.skipToEnd(); + return state.indentToken; + } + } else if (stream.sol()) { + state.indentOf = Infinity; + state.indentToken = null; + state.innerMode = null; + state.innerState = null; + } + } + function restOfLine(stream, state) { + if (stream.sol()) { + // if restOfLine was set at end of line, ignore it + state.restOfLine = ''; + } + if (state.restOfLine) { + stream.skipToEnd(); + var tok = state.restOfLine; + state.restOfLine = ''; + return tok; + } + } + + + function startState() { + return new State(); + } + function copyState(state) { + return state.copy(); + } + /** + * Get the next token in the stream + * + * @param {Stream} stream + * @param {State} state + */ + function nextToken(stream, state) { + var tok = innerMode(stream, state) + || restOfLine(stream, state) + || interpolationContinued(stream, state) + || includeFilteredContinued(stream, state) + || eachContinued(stream, state) + || attrsContinued(stream, state) + || javaScript(stream, state) + || javaScriptArguments(stream, state) + || callArguments(stream, state) + + || yieldStatement(stream, state) + || doctype(stream, state) + || interpolation(stream, state) + || caseStatement(stream, state) + || when(stream, state) + || defaultStatement(stream, state) + || extendsStatement(stream, state) + || append(stream, state) + || prepend(stream, state) + || block(stream, state) + || include(stream, state) + || includeFiltered(stream, state) + || mixin(stream, state) + || call(stream, state) + || conditional(stream, state) + || each(stream, state) + || whileStatement(stream, state) + || tag(stream, state) + || filter(stream, state) + || code(stream, state) + || id(stream, state) + || className(stream, state) + || attrs(stream, state) + || attributesBlock(stream, state) + || indent(stream, state) + || text(stream, state) + || comment(stream, state) + || colon(stream, state) + || dot(stream, state) + || fail(stream, state); + + return tok === true ? null : tok; + } + return { + startState: startState, + copyState: copyState, + token: nextToken + }; +}, 'javascript', 'css', 'htmlmixed'); + +CodeMirror.defineMIME('text/x-pug', 'pug'); +CodeMirror.defineMIME('text/x-jade', 'pug'); + +}); diff --git a/global/codemirror/mode/puppet/index.html b/global/codemirror/mode/puppet/index.html new file mode 100644 index 00000000..5614c369 --- /dev/null +++ b/global/codemirror/mode/puppet/index.html @@ -0,0 +1,121 @@ + + +CodeMirror: Puppet mode + + + + + + + + + + +
+

Puppet mode

+
+ + +

MIME types defined: text/x-puppet.

+ +
diff --git a/global/codemirror/mode/puppet/puppet.js b/global/codemirror/mode/puppet/puppet.js new file mode 100644 index 00000000..57041300 --- /dev/null +++ b/global/codemirror/mode/puppet/puppet.js @@ -0,0 +1,220 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("puppet", function () { + // Stores the words from the define method + var words = {}; + // Taken, mostly, from the Puppet official variable standards regex + var variable_regex = /({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/; + + // Takes a string of words separated by spaces and adds them as + // keys with the value of the first argument 'style' + function define(style, string) { + var split = string.split(' '); + for (var i = 0; i < split.length; i++) { + words[split[i]] = style; + } + } + + // Takes commonly known puppet types/words and classifies them to a style + define('keyword', 'class define site node include import inherits'); + define('keyword', 'case if else in and elsif default or'); + define('atom', 'false true running present absent file directory undef'); + define('builtin', 'action augeas burst chain computer cron destination dport exec ' + + 'file filebucket group host icmp iniface interface jump k5login limit log_level ' + + 'log_prefix macauthorization mailalias maillist mcx mount nagios_command ' + + 'nagios_contact nagios_contactgroup nagios_host nagios_hostdependency ' + + 'nagios_hostescalation nagios_hostextinfo nagios_hostgroup nagios_service ' + + 'nagios_servicedependency nagios_serviceescalation nagios_serviceextinfo ' + + 'nagios_servicegroup nagios_timeperiod name notify outiface package proto reject ' + + 'resources router schedule scheduled_task selboolean selmodule service source ' + + 'sport ssh_authorized_key sshkey stage state table tidy todest toports tosource ' + + 'user vlan yumrepo zfs zone zpool'); + + // After finding a start of a string ('|") this function attempts to find the end; + // If a variable is encountered along the way, we display it differently when it + // is encapsulated in a double-quoted string. + function tokenString(stream, state) { + var current, prev, found_var = false; + while (!stream.eol() && (current = stream.next()) != state.pending) { + if (current === '$' && prev != '\\' && state.pending == '"') { + found_var = true; + break; + } + prev = current; + } + if (found_var) { + stream.backUp(1); + } + if (current == state.pending) { + state.continueString = false; + } else { + state.continueString = true; + } + return "string"; + } + + // Main function + function tokenize(stream, state) { + // Matches one whole word + var word = stream.match(/[\w]+/, false); + // Matches attributes (i.e. ensure => present ; 'ensure' would be matched) + var attribute = stream.match(/(\s+)?\w+\s+=>.*/, false); + // Matches non-builtin resource declarations + // (i.e. "apache::vhost {" or "mycustomclasss {" would be matched) + var resource = stream.match(/(\s+)?[\w:_]+(\s+)?{/, false); + // Matches virtual and exported resources (i.e. @@user { ; and the like) + var special_resource = stream.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/, false); + + // Finally advance the stream + var ch = stream.next(); + + // Have we found a variable? + if (ch === '$') { + if (stream.match(variable_regex)) { + // If so, and its in a string, assign it a different color + return state.continueString ? 'variable-2' : 'variable'; + } + // Otherwise return an invalid variable + return "error"; + } + // Should we still be looking for the end of a string? + if (state.continueString) { + // If so, go through the loop again + stream.backUp(1); + return tokenString(stream, state); + } + // Are we in a definition (class, node, define)? + if (state.inDefinition) { + // If so, return def (i.e. for 'class myclass {' ; 'myclass' would be matched) + if (stream.match(/(\s+)?[\w:_]+(\s+)?/)) { + return 'def'; + } + // Match the rest it the next time around + stream.match(/\s+{/); + state.inDefinition = false; + } + // Are we in an 'include' statement? + if (state.inInclude) { + // Match and return the included class + stream.match(/(\s+)?\S+(\s+)?/); + state.inInclude = false; + return 'def'; + } + // Do we just have a function on our hands? + // In 'ensure_resource("myclass")', 'ensure_resource' is matched + if (stream.match(/(\s+)?\w+\(/)) { + stream.backUp(1); + return 'def'; + } + // Have we matched the prior attribute regex? + if (attribute) { + stream.match(/(\s+)?\w+/); + return 'tag'; + } + // Do we have Puppet specific words? + if (word && words.hasOwnProperty(word)) { + // Negates the initial next() + stream.backUp(1); + // rs move the stream + stream.match(/[\w]+/); + // We want to process these words differently + // do to the importance they have in Puppet + if (stream.match(/\s+\S+\s+{/, false)) { + state.inDefinition = true; + } + if (word == 'include') { + state.inInclude = true; + } + // Returns their value as state in the prior define methods + return words[word]; + } + // Is there a match on a reference? + if (/(^|\s+)[A-Z][\w:_]+/.test(word)) { + // Negate the next() + stream.backUp(1); + // Match the full reference + stream.match(/(^|\s+)[A-Z][\w:_]+/); + return 'def'; + } + // Have we matched the prior resource regex? + if (resource) { + stream.match(/(\s+)?[\w:_]+/); + return 'def'; + } + // Have we matched the prior special_resource regex? + if (special_resource) { + stream.match(/(\s+)?[@]{1,2}/); + return 'special'; + } + // Match all the comments. All of them. + if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } + // Have we found a string? + if (ch == "'" || ch == '"') { + // Store the type (single or double) + state.pending = ch; + // Perform the looping function to find the end + return tokenString(stream, state); + } + // Match all the brackets + if (ch == '{' || ch == '}') { + return 'bracket'; + } + // Match characters that we are going to assume + // are trying to be regex + if (ch == '/') { + stream.match(/.*?\//); + return 'variable-3'; + } + // Match all the numbers + if (ch.match(/[0-9]/)) { + stream.eatWhile(/[0-9]+/); + return 'number'; + } + // Match the '=' and '=>' operators + if (ch == '=') { + if (stream.peek() == '>') { + stream.next(); + } + return "operator"; + } + // Keep advancing through all the rest + stream.eatWhile(/[\w-]/); + // Return a blank line for everything else + return null; + } + // Start it all + return { + startState: function () { + var state = {}; + state.inDefinition = false; + state.inInclude = false; + state.continueString = false; + state.pending = false; + return state; + }, + token: function (stream, state) { + // Strip the spaces, but regex will account for them eitherway + if (stream.eatSpace()) return null; + // Go through the main process + return tokenize(stream, state); + } + }; +}); + +CodeMirror.defineMIME("text/x-puppet", "puppet"); + +}); diff --git a/global/codemirror/mode/python/index.html b/global/codemirror/mode/python/index.html new file mode 100644 index 00000000..0ac02a33 --- /dev/null +++ b/global/codemirror/mode/python/index.html @@ -0,0 +1,198 @@ + + +CodeMirror: Python mode + + + + + + + + + + +
+

Python mode

+ +
+ + +

Cython mode

+ +
+ + +

Configuration Options for Python mode:

+
    +
  • version - 2/3 - The version of Python to recognize. Default is 3.
  • +
  • singleLineStringErrors - true/false - If you have a single-line string that is not terminated at the end of the line, this will show subsequent lines as errors if true, otherwise it will consider the newline as the end of the string. Default is false.
  • +
  • hangingIndent - int - If you want to write long arguments to a function starting on a new line, how much that line should be indented. Defaults to one normal indentation unit.
  • +
+

Advanced Configuration Options:

+

Usefull for superset of python syntax like Enthought enaml, IPython magics and questionmark help

+
    +
  • singleOperators - RegEx - Regular Expression for single operator matching, default :
    ^[\\+\\-\\*/%&|\\^~<>!]
    including
    @
    on Python 3
  • +
  • singleDelimiters - RegEx - Regular Expression for single delimiter matching, default :
    ^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]
  • +
  • doubleOperators - RegEx - Regular Expression for double operators matching, default :
    ^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))
  • +
  • doubleDelimiters - RegEx - Regular Expression for double delimiters matching, default :
    ^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))
  • +
  • tripleDelimiters - RegEx - Regular Expression for triple delimiters matching, default :
    ^((//=)|(>>=)|(<<=)|(\\*\\*=))
  • +
  • identifiers - RegEx - Regular Expression for identifier, default :
    ^[_A-Za-z][_A-Za-z0-9]*
    on Python 2 and
    ^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*
    on Python 3.
  • +
  • extra_keywords - list of string - List of extra words ton consider as keywords
  • +
  • extra_builtins - list of string - List of extra words ton consider as builtins
  • +
+ + +

MIME types defined: text/x-python and text/x-cython.

+
diff --git a/global/codemirror/mode/python/python.js b/global/codemirror/mode/python/python.js new file mode 100644 index 00000000..c3187932 --- /dev/null +++ b/global/codemirror/mode/python/python.js @@ -0,0 +1,334 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b"); + } + + var wordOperators = wordRegexp(["and", "or", "not", "is"]); + var commonKeywords = ["as", "assert", "break", "class", "continue", + "def", "del", "elif", "else", "except", "finally", + "for", "from", "global", "if", "import", + "lambda", "pass", "raise", "return", + "try", "while", "with", "yield", "in"]; + var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", + "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", + "enumerate", "eval", "filter", "float", "format", "frozenset", + "getattr", "globals", "hasattr", "hash", "help", "hex", "id", + "input", "int", "isinstance", "issubclass", "iter", "len", + "list", "locals", "map", "max", "memoryview", "min", "next", + "object", "oct", "open", "ord", "pow", "property", "range", + "repr", "reversed", "round", "set", "setattr", "slice", + "sorted", "staticmethod", "str", "sum", "super", "tuple", + "type", "vars", "zip", "__import__", "NotImplemented", + "Ellipsis", "__debug__"]; + CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins)); + + function top(state) { + return state.scopes[state.scopes.length - 1]; + } + + CodeMirror.defineMode("python", function(conf, parserConf) { + var ERRORCLASS = "error"; + + var delimiters = parserConf.delimiters || parserConf.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.]/; + // (Backwards-compatiblity with old, cumbersome config system) + var operators = [parserConf.singleOperators, parserConf.doubleOperators, parserConf.doubleDelimiters, parserConf.tripleDelimiters, + parserConf.operators || /^([-+*/%\/&|^]=?|[<>=]+|\/\/=?|\*\*=?|!=|[~!@])/] + for (var i = 0; i < operators.length; i++) if (!operators[i]) operators.splice(i--, 1) + + var hangingIndent = parserConf.hangingIndent || conf.indentUnit; + + var myKeywords = commonKeywords, myBuiltins = commonBuiltins; + if (parserConf.extra_keywords != undefined) + myKeywords = myKeywords.concat(parserConf.extra_keywords); + + if (parserConf.extra_builtins != undefined) + myBuiltins = myBuiltins.concat(parserConf.extra_builtins); + + var py3 = !(parserConf.version && Number(parserConf.version) < 3) + if (py3) { + // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator + var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/; + myKeywords = myKeywords.concat(["nonlocal", "False", "True", "None", "async", "await"]); + myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]); + var stringPrefixes = new RegExp("^(([rbuf]|(br))?('{3}|\"{3}|['\"]))", "i"); + } else { + var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/; + myKeywords = myKeywords.concat(["exec", "print"]); + myBuiltins = myBuiltins.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile", + "file", "intern", "long", "raw_input", "reduce", "reload", + "unichr", "unicode", "xrange", "False", "True", "None"]); + var stringPrefixes = new RegExp("^(([rubf]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); + } + var keywords = wordRegexp(myKeywords); + var builtins = wordRegexp(myBuiltins); + + // tokenizers + function tokenBase(stream, state) { + if (stream.sol()) state.indent = stream.indentation() + // Handle scope changes + if (stream.sol() && top(state).type == "py") { + var scopeOffset = top(state).offset; + if (stream.eatSpace()) { + var lineOffset = stream.indentation(); + if (lineOffset > scopeOffset) + pushPyScope(state); + else if (lineOffset < scopeOffset && dedent(stream, state) && stream.peek() != "#") + state.errorToken = true; + return null; + } else { + var style = tokenBaseInner(stream, state); + if (scopeOffset > 0 && dedent(stream, state)) + style += " " + ERRORCLASS; + return style; + } + } + return tokenBaseInner(stream, state); + } + + function tokenBaseInner(stream, state) { + if (stream.eatSpace()) return null; + + var ch = stream.peek(); + + // Handle Comments + if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } + + // Handle Number Literals + if (stream.match(/^[0-9\.]/, false)) { + var floatLiteral = false; + // Floats + if (stream.match(/^[\d_]*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } + if (stream.match(/^[\d_]+\.\d*/)) { floatLiteral = true; } + if (stream.match(/^\.\d+/)) { floatLiteral = true; } + if (floatLiteral) { + // Float literals may be "imaginary" + stream.eat(/J/i); + return "number"; + } + // Integers + var intLiteral = false; + // Hex + if (stream.match(/^0x[0-9a-f_]+/i)) intLiteral = true; + // Binary + if (stream.match(/^0b[01_]+/i)) intLiteral = true; + // Octal + if (stream.match(/^0o[0-7_]+/i)) intLiteral = true; + // Decimal + if (stream.match(/^[1-9][\d_]*(e[\+\-]?[\d_]+)?/)) { + // Decimal literals may be "imaginary" + stream.eat(/J/i); + // TODO - Can you have imaginary longs? + intLiteral = true; + } + // Zero by itself with no other piece of number. + if (stream.match(/^0(?![\dx])/i)) intLiteral = true; + if (intLiteral) { + // Integer literals may be "long" + stream.eat(/L/i); + return "number"; + } + } + + // Handle Strings + if (stream.match(stringPrefixes)) { + state.tokenize = tokenStringFactory(stream.current()); + return state.tokenize(stream, state); + } + + for (var i = 0; i < operators.length; i++) + if (stream.match(operators[i])) return "operator" + + if (stream.match(delimiters)) return "punctuation"; + + if (state.lastToken == "." && stream.match(identifiers)) + return "property"; + + if (stream.match(keywords) || stream.match(wordOperators)) + return "keyword"; + + if (stream.match(builtins)) + return "builtin"; + + if (stream.match(/^(self|cls)\b/)) + return "variable-2"; + + if (stream.match(identifiers)) { + if (state.lastToken == "def" || state.lastToken == "class") + return "def"; + return "variable"; + } + + // Handle non-detected items + stream.next(); + return ERRORCLASS; + } + + function tokenStringFactory(delimiter) { + while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) + delimiter = delimiter.substr(1); + + var singleline = delimiter.length == 1; + var OUTCLASS = "string"; + + function tokenString(stream, state) { + while (!stream.eol()) { + stream.eatWhile(/[^'"\\]/); + if (stream.eat("\\")) { + stream.next(); + if (singleline && stream.eol()) + return OUTCLASS; + } else if (stream.match(delimiter)) { + state.tokenize = tokenBase; + return OUTCLASS; + } else { + stream.eat(/['"]/); + } + } + if (singleline) { + if (parserConf.singleLineStringErrors) + return ERRORCLASS; + else + state.tokenize = tokenBase; + } + return OUTCLASS; + } + tokenString.isString = true; + return tokenString; + } + + function pushPyScope(state) { + while (top(state).type != "py") state.scopes.pop() + state.scopes.push({offset: top(state).offset + conf.indentUnit, + type: "py", + align: null}) + } + + function pushBracketScope(stream, state, type) { + var align = stream.match(/^([\s\[\{\(]|#.*)*$/, false) ? null : stream.column() + 1 + state.scopes.push({offset: state.indent + hangingIndent, + type: type, + align: align}) + } + + function dedent(stream, state) { + var indented = stream.indentation(); + while (state.scopes.length > 1 && top(state).offset > indented) { + if (top(state).type != "py") return true; + state.scopes.pop(); + } + return top(state).offset != indented; + } + + function tokenLexer(stream, state) { + if (stream.sol()) state.beginningOfLine = true; + + var style = state.tokenize(stream, state); + var current = stream.current(); + + // Handle decorators + if (state.beginningOfLine && current == "@") + return stream.match(identifiers, false) ? "meta" : py3 ? "operator" : ERRORCLASS; + + if (/\S/.test(current)) state.beginningOfLine = false; + + if ((style == "variable" || style == "builtin") + && state.lastToken == "meta") + style = "meta"; + + // Handle scope changes. + if (current == "pass" || current == "return") + state.dedent += 1; + + if (current == "lambda") state.lambda = true; + if (current == ":" && !state.lambda && top(state).type == "py") + pushPyScope(state); + + var delimiter_index = current.length == 1 ? "[({".indexOf(current) : -1; + if (delimiter_index != -1) + pushBracketScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); + + delimiter_index = "])}".indexOf(current); + if (delimiter_index != -1) { + if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent + else return ERRORCLASS; + } + if (state.dedent > 0 && stream.eol() && top(state).type == "py") { + if (state.scopes.length > 1) state.scopes.pop(); + state.dedent -= 1; + } + + return style; + } + + var external = { + startState: function(basecolumn) { + return { + tokenize: tokenBase, + scopes: [{offset: basecolumn || 0, type: "py", align: null}], + indent: basecolumn || 0, + lastToken: null, + lambda: false, + dedent: 0 + }; + }, + + token: function(stream, state) { + var addErr = state.errorToken; + if (addErr) state.errorToken = false; + var style = tokenLexer(stream, state); + + if (style && style != "comment") + state.lastToken = (style == "keyword" || style == "punctuation") ? stream.current() : style; + if (style == "punctuation") style = null; + + if (stream.eol() && state.lambda) + state.lambda = false; + return addErr ? style + " " + ERRORCLASS : style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase) + return state.tokenize.isString ? CodeMirror.Pass : 0; + + var scope = top(state), closing = scope.type == textAfter.charAt(0) + if (scope.align != null) + return scope.align - (closing ? 1 : 0) + else + return scope.offset - (closing ? hangingIndent : 0) + }, + + electricInput: /^\s*[\}\]\)]$/, + closeBrackets: {triples: "'\""}, + lineComment: "#", + fold: "indent" + }; + return external; + }); + + CodeMirror.defineMIME("text/x-python", "python"); + + var words = function(str) { return str.split(" "); }; + + CodeMirror.defineMIME("text/x-cython", { + name: "python", + extra_keywords: words("by cdef cimport cpdef ctypedef enum except "+ + "extern gil include nogil property public "+ + "readonly struct union DEF IF ELIF ELSE") + }); + +}); diff --git a/global/codemirror/mode/python/test.js b/global/codemirror/mode/python/test.js new file mode 100644 index 00000000..950eed51 --- /dev/null +++ b/global/codemirror/mode/python/test.js @@ -0,0 +1,35 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 4}, + {name: "python", + version: 3, + singleLineStringErrors: false}); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + // Error, because "foobarhello" is neither a known type or property, but + // property was expected (after "and"), and it should be in parentheses. + MT("decoratorStartOfLine", + "[meta @dec]", + "[keyword def] [def function]():", + " [keyword pass]"); + + MT("decoratorIndented", + "[keyword class] [def Foo]:", + " [meta @dec]", + " [keyword def] [def function]():", + " [keyword pass]"); + + MT("matmulWithSpace:", "[variable a] [operator @] [variable b]"); + MT("matmulWithoutSpace:", "[variable a][operator @][variable b]"); + MT("matmulSpaceBefore:", "[variable a] [operator @][variable b]"); + var before_equal_sign = ["+", "-", "*", "/", "=", "!", ">", "<"]; + for (var i = 0; i < before_equal_sign.length; ++i) { + var c = before_equal_sign[i] + MT("before_equal_sign_" + c, "[variable a] [operator " + c + "=] [variable b]"); + } + + MT("fValidStringPrefix", "[string f'this is a {formatted} string']"); + MT("uValidStringPrefix", "[string u'this is an unicode string']"); +})(); diff --git a/global/codemirror/mode/q/index.html b/global/codemirror/mode/q/index.html new file mode 100644 index 00000000..72785ba3 --- /dev/null +++ b/global/codemirror/mode/q/index.html @@ -0,0 +1,144 @@ + + +CodeMirror: Q mode + + + + + + + + + + +
+

Q mode

+ + +
+ + + +

MIME type defined: text/x-q.

+
diff --git a/global/codemirror/mode/q/q.js b/global/codemirror/mode/q/q.js new file mode 100644 index 00000000..9aee18ab --- /dev/null +++ b/global/codemirror/mode/q/q.js @@ -0,0 +1,139 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("q",function(config){ + var indentUnit=config.indentUnit, + curPunc, + keywords=buildRE(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]), + E=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/; + function buildRE(w){return new RegExp("^("+w.join("|")+")$");} + function tokenBase(stream,state){ + var sol=stream.sol(),c=stream.next(); + curPunc=null; + if(sol) + if(c=="/") + return(state.tokenize=tokenLineComment)(stream,state); + else if(c=="\\"){ + if(stream.eol()||/\s/.test(stream.peek())) + return stream.skipToEnd(),/^\\\s*$/.test(stream.current())?(state.tokenize=tokenCommentToEOF)(stream):state.tokenize=tokenBase,"comment"; + else + return state.tokenize=tokenBase,"builtin"; + } + if(/\s/.test(c)) + return stream.peek()=="/"?(stream.skipToEnd(),"comment"):"whitespace"; + if(c=='"') + return(state.tokenize=tokenString)(stream,state); + if(c=='`') + return stream.eatWhile(/[A-Za-z\d_:\/.]/),"symbol"; + if(("."==c&&/\d/.test(stream.peek()))||/\d/.test(c)){ + var t=null; + stream.backUp(1); + if(stream.match(/^\d{4}\.\d{2}(m|\.\d{2}([DT](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/) + || stream.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/) + || stream.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/) + || stream.match(/^\d+[ptuv]{1}/)) + t="temporal"; + else if(stream.match(/^0[NwW]{1}/) + || stream.match(/^0x[\da-fA-F]*/) + || stream.match(/^[01]+[b]{1}/) + || stream.match(/^\d+[chijn]{1}/) + || stream.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/)) + t="number"; + return(t&&(!(c=stream.peek())||E.test(c)))?t:(stream.next(),"error"); + } + if(/[A-Za-z]|\./.test(c)) + return stream.eatWhile(/[A-Za-z._\d]/),keywords.test(stream.current())?"keyword":"variable"; + if(/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(c)) + return null; + if(/[{}\(\[\]\)]/.test(c)) + return null; + return"error"; + } + function tokenLineComment(stream,state){ + return stream.skipToEnd(),/\/\s*$/.test(stream.current())?(state.tokenize=tokenBlockComment)(stream,state):(state.tokenize=tokenBase),"comment"; + } + function tokenBlockComment(stream,state){ + var f=stream.sol()&&stream.peek()=="\\"; + stream.skipToEnd(); + if(f&&/^\\\s*$/.test(stream.current())) + state.tokenize=tokenBase; + return"comment"; + } + function tokenCommentToEOF(stream){return stream.skipToEnd(),"comment";} + function tokenString(stream,state){ + var escaped=false,next,end=false; + while((next=stream.next())){ + if(next=="\""&&!escaped){end=true;break;} + escaped=!escaped&&next=="\\"; + } + if(end)state.tokenize=tokenBase; + return"string"; + } + function pushContext(state,type,col){state.context={prev:state.context,indent:state.indent,col:col,type:type};} + function popContext(state){state.indent=state.context.indent;state.context=state.context.prev;} + return{ + startState:function(){ + return{tokenize:tokenBase, + context:null, + indent:0, + col:0}; + }, + token:function(stream,state){ + if(stream.sol()){ + if(state.context&&state.context.align==null) + state.context.align=false; + state.indent=stream.indentation(); + } + //if (stream.eatSpace()) return null; + var style=state.tokenize(stream,state); + if(style!="comment"&&state.context&&state.context.align==null&&state.context.type!="pattern"){ + state.context.align=true; + } + if(curPunc=="(")pushContext(state,")",stream.column()); + else if(curPunc=="[")pushContext(state,"]",stream.column()); + else if(curPunc=="{")pushContext(state,"}",stream.column()); + else if(/[\]\}\)]/.test(curPunc)){ + while(state.context&&state.context.type=="pattern")popContext(state); + if(state.context&&curPunc==state.context.type)popContext(state); + } + else if(curPunc=="."&&state.context&&state.context.type=="pattern")popContext(state); + else if(/atom|string|variable/.test(style)&&state.context){ + if(/[\}\]]/.test(state.context.type)) + pushContext(state,"pattern",stream.column()); + else if(state.context.type=="pattern"&&!state.context.align){ + state.context.align=true; + state.context.col=stream.column(); + } + } + return style; + }, + indent:function(state,textAfter){ + var firstChar=textAfter&&textAfter.charAt(0); + var context=state.context; + if(/[\]\}]/.test(firstChar)) + while (context&&context.type=="pattern")context=context.prev; + var closing=context&&firstChar==context.type; + if(!context) + return 0; + else if(context.type=="pattern") + return context.col; + else if(context.align) + return context.col+(closing?0:1); + else + return context.indent+(closing?0:indentUnit); + } + }; +}); +CodeMirror.defineMIME("text/x-q","q"); + +}); diff --git a/global/codemirror/mode/r/index.html b/global/codemirror/mode/r/index.html new file mode 100644 index 00000000..01b6e664 --- /dev/null +++ b/global/codemirror/mode/r/index.html @@ -0,0 +1,88 @@ + + +CodeMirror: R mode + + + + + + + + + +
+

R mode

+
+ + +

MIME types defined: text/x-rsrc.

+ +

Development of the CodeMirror R mode was kindly sponsored + by Ubalo.

+ +
diff --git a/global/codemirror/mode/r/r.js b/global/codemirror/mode/r/r.js new file mode 100644 index 00000000..be7db46b --- /dev/null +++ b/global/codemirror/mode/r/r.js @@ -0,0 +1,183 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.registerHelper("wordChars", "r", /[\w.]/); + +CodeMirror.defineMode("r", function(config) { + function wordObj(str) { + var words = str.split(" "), res = {}; + for (var i = 0; i < words.length; ++i) res[words[i]] = true; + return res; + } + var atoms = wordObj("NULL NA Inf NaN NA_integer_ NA_real_ NA_complex_ NA_character_"); + var builtins = wordObj("list quote bquote eval return call parse deparse"); + var keywords = wordObj("if else repeat while function for in next break"); + var blockkeywords = wordObj("if else repeat while function for"); + var opChars = /[+\-*\/^<>=!&|~$:]/; + var curPunc; + + function tokenBase(stream, state) { + curPunc = null; + var ch = stream.next(); + if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } else if (ch == "0" && stream.eat("x")) { + stream.eatWhile(/[\da-f]/i); + return "number"; + } else if (ch == "." && stream.eat(/\d/)) { + stream.match(/\d*(?:e[+\-]?\d+)?/); + return "number"; + } else if (/\d/.test(ch)) { + stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); + return "number"; + } else if (ch == "'" || ch == '"') { + state.tokenize = tokenString(ch); + return "string"; + } else if (ch == "`") { + stream.match(/[^`]+`/); + return "variable-3"; + } else if (ch == "." && stream.match(/.[.\d]+/)) { + return "keyword"; + } else if (/[\w\.]/.test(ch) && ch != "_") { + stream.eatWhile(/[\w\.]/); + var word = stream.current(); + if (atoms.propertyIsEnumerable(word)) return "atom"; + if (keywords.propertyIsEnumerable(word)) { + // Block keywords start new blocks, except 'else if', which only starts + // one new block for the 'if', no block for the 'else'. + if (blockkeywords.propertyIsEnumerable(word) && + !stream.match(/\s*if(\s+|$)/, false)) + curPunc = "block"; + return "keyword"; + } + if (builtins.propertyIsEnumerable(word)) return "builtin"; + return "variable"; + } else if (ch == "%") { + if (stream.skipTo("%")) stream.next(); + return "operator variable-2"; + } else if ( + (ch == "<" && stream.eat("-")) || + (ch == "<" && stream.match("<-")) || + (ch == "-" && stream.match(/>>?/)) + ) { + return "operator arrow"; + } else if (ch == "=" && state.ctx.argList) { + return "arg-is"; + } else if (opChars.test(ch)) { + if (ch == "$") return "operator dollar"; + stream.eatWhile(opChars); + return "operator"; + } else if (/[\(\){}\[\];]/.test(ch)) { + curPunc = ch; + if (ch == ";") return "semi"; + return null; + } else { + return null; + } + } + + function tokenString(quote) { + return function(stream, state) { + if (stream.eat("\\")) { + var ch = stream.next(); + if (ch == "x") stream.match(/^[a-f0-9]{2}/i); + else if ((ch == "u" || ch == "U") && stream.eat("{") && stream.skipTo("}")) stream.next(); + else if (ch == "u") stream.match(/^[a-f0-9]{4}/i); + else if (ch == "U") stream.match(/^[a-f0-9]{8}/i); + else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); + return "string-2"; + } else { + var next; + while ((next = stream.next()) != null) { + if (next == quote) { state.tokenize = tokenBase; break; } + if (next == "\\") { stream.backUp(1); break; } + } + return "string"; + } + }; + } + + var ALIGN_YES = 1, ALIGN_NO = 2, BRACELESS = 4 + + function push(state, type, stream) { + state.ctx = {type: type, + indent: state.indent, + flags: 0, + column: stream.column(), + prev: state.ctx}; + } + function setFlag(state, flag) { + var ctx = state.ctx + state.ctx = {type: ctx.type, + indent: ctx.indent, + flags: ctx.flags | flag, + column: ctx.column, + prev: ctx.prev} + } + function pop(state) { + state.indent = state.ctx.indent; + state.ctx = state.ctx.prev; + } + + return { + startState: function() { + return {tokenize: tokenBase, + ctx: {type: "top", + indent: -config.indentUnit, + flags: ALIGN_NO}, + indent: 0, + afterIdent: false}; + }, + + token: function(stream, state) { + if (stream.sol()) { + if ((state.ctx.flags & 3) == 0) state.ctx.flags |= ALIGN_NO + if (state.ctx.flags & BRACELESS) pop(state) + state.indent = stream.indentation(); + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (style != "comment" && (state.ctx.flags & ALIGN_NO) == 0) setFlag(state, ALIGN_YES) + + if ((curPunc == ";" || curPunc == "{" || curPunc == "}") && state.ctx.type == "block") pop(state); + if (curPunc == "{") push(state, "}", stream); + else if (curPunc == "(") { + push(state, ")", stream); + if (state.afterIdent) state.ctx.argList = true; + } + else if (curPunc == "[") push(state, "]", stream); + else if (curPunc == "block") push(state, "block", stream); + else if (curPunc == state.ctx.type) pop(state); + else if (state.ctx.type == "block" && style != "comment") setFlag(state, BRACELESS) + state.afterIdent = style == "variable" || style == "keyword"; + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx, + closing = firstChar == ctx.type; + if (ctx.flags & BRACELESS) ctx = ctx.prev + if (ctx.type == "block") return ctx.indent + (firstChar == "{" ? 0 : config.indentUnit); + else if (ctx.flags & ALIGN_YES) return ctx.column + (closing ? 0 : 1); + else return ctx.indent + (closing ? 0 : config.indentUnit); + }, + + lineComment: "#" + }; +}); + +CodeMirror.defineMIME("text/x-rsrc", "r"); + +}); diff --git a/global/codemirror/mode/rpm/changes/index.html b/global/codemirror/mode/rpm/changes/index.html new file mode 100644 index 00000000..6e5031bd --- /dev/null +++ b/global/codemirror/mode/rpm/changes/index.html @@ -0,0 +1,66 @@ + + +CodeMirror: RPM changes mode + + + + + + + + + + + +
+

RPM changes mode

+ +
+ + +

MIME types defined: text/x-rpm-changes.

+
diff --git a/global/codemirror/mode/rpm/index.html b/global/codemirror/mode/rpm/index.html new file mode 100644 index 00000000..9a34e6df --- /dev/null +++ b/global/codemirror/mode/rpm/index.html @@ -0,0 +1,149 @@ + + +CodeMirror: RPM changes mode + + + + + + + + + + + +
+

RPM changes mode

+ +
+ + +

RPM spec mode

+ +
+ + +

MIME types defined: text/x-rpm-spec, text/x-rpm-changes.

+
diff --git a/global/codemirror/mode/rpm/rpm.js b/global/codemirror/mode/rpm/rpm.js new file mode 100644 index 00000000..87cde591 --- /dev/null +++ b/global/codemirror/mode/rpm/rpm.js @@ -0,0 +1,109 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("rpm-changes", function() { + var headerSeperator = /^-+$/; + var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /; + var simpleEmail = /^[\w+.-]+@[\w.-]+/; + + return { + token: function(stream) { + if (stream.sol()) { + if (stream.match(headerSeperator)) { return 'tag'; } + if (stream.match(headerLine)) { return 'tag'; } + } + if (stream.match(simpleEmail)) { return 'string'; } + stream.next(); + return null; + } + }; +}); + +CodeMirror.defineMIME("text/x-rpm-changes", "rpm-changes"); + +// Quick and dirty spec file highlighting + +CodeMirror.defineMode("rpm-spec", function() { + var arch = /^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/; + + var preamble = /^[a-zA-Z0-9()]+:/; + var section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/; + var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros + var control_flow_simple = /^%(else|endif)/; // rpm control flow macros + var operators = /^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/; // operators in control flow macros + + return { + startState: function () { + return { + controlFlow: false, + macroParameters: false, + section: false + }; + }, + token: function (stream, state) { + var ch = stream.peek(); + if (ch == "#") { stream.skipToEnd(); return "comment"; } + + if (stream.sol()) { + if (stream.match(preamble)) { return "header"; } + if (stream.match(section)) { return "atom"; } + } + + if (stream.match(/^\$\w+/)) { return "def"; } // Variables like '$RPM_BUILD_ROOT' + if (stream.match(/^\$\{\w+\}/)) { return "def"; } // Variables like '${RPM_BUILD_ROOT}' + + if (stream.match(control_flow_simple)) { return "keyword"; } + if (stream.match(control_flow_complex)) { + state.controlFlow = true; + return "keyword"; + } + if (state.controlFlow) { + if (stream.match(operators)) { return "operator"; } + if (stream.match(/^(\d+)/)) { return "number"; } + if (stream.eol()) { state.controlFlow = false; } + } + + if (stream.match(arch)) { + if (stream.eol()) { state.controlFlow = false; } + return "number"; + } + + // Macros like '%make_install' or '%attr(0775,root,root)' + if (stream.match(/^%[\w]+/)) { + if (stream.match(/^\(/)) { state.macroParameters = true; } + return "keyword"; + } + if (state.macroParameters) { + if (stream.match(/^\d+/)) { return "number";} + if (stream.match(/^\)/)) { + state.macroParameters = false; + return "keyword"; + } + } + + // Macros like '%{defined fedora}' + if (stream.match(/^%\{\??[\w \-\:\!]+\}/)) { + if (stream.eol()) { state.controlFlow = false; } + return "def"; + } + + //TODO: Include bash script sub-parser (CodeMirror supports that) + stream.next(); + return null; + } + }; +}); + +CodeMirror.defineMIME("text/x-rpm-spec", "rpm-spec"); + +}); diff --git a/global/codemirror/mode/rst/index.html b/global/codemirror/mode/rst/index.html new file mode 100644 index 00000000..2902dea2 --- /dev/null +++ b/global/codemirror/mode/rst/index.html @@ -0,0 +1,535 @@ + + +CodeMirror: reStructuredText mode + + + + + + + + + + +
+

reStructuredText mode

+
+ + +

+ The python mode will be used for highlighting blocks + containing Python/IPython terminal sessions: blocks starting with + >>> (for Python) or In [num]: (for + IPython). + + Further, the stex mode will be used for highlighting + blocks containing LaTex code. +

+ +

MIME types defined: text/x-rst.

+
diff --git a/global/codemirror/mode/rst/rst.js b/global/codemirror/mode/rst/rst.js new file mode 100644 index 00000000..bcf110c1 --- /dev/null +++ b/global/codemirror/mode/rst/rst.js @@ -0,0 +1,557 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../python/python"), require("../stex/stex"), require("../../addon/mode/overlay")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../python/python", "../stex/stex", "../../addon/mode/overlay"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('rst', function (config, options) { + + var rx_strong = /^\*\*[^\*\s](?:[^\*]*[^\*\s])?\*\*/; + var rx_emphasis = /^\*[^\*\s](?:[^\*]*[^\*\s])?\*/; + var rx_literal = /^``[^`\s](?:[^`]*[^`\s])``/; + + var rx_number = /^(?:[\d]+(?:[\.,]\d+)*)/; + var rx_positive = /^(?:\s\+[\d]+(?:[\.,]\d+)*)/; + var rx_negative = /^(?:\s\-[\d]+(?:[\.,]\d+)*)/; + + var rx_uri_protocol = "[Hh][Tt][Tt][Pp][Ss]?://"; + var rx_uri_domain = "(?:[\\d\\w.-]+)\\.(?:\\w{2,6})"; + var rx_uri_path = "(?:/[\\d\\w\\#\\%\\&\\-\\.\\,\\/\\:\\=\\?\\~]+)*"; + var rx_uri = new RegExp("^" + rx_uri_protocol + rx_uri_domain + rx_uri_path); + + var overlay = { + token: function (stream) { + + if (stream.match(rx_strong) && stream.match (/\W+|$/, false)) + return 'strong'; + if (stream.match(rx_emphasis) && stream.match (/\W+|$/, false)) + return 'em'; + if (stream.match(rx_literal) && stream.match (/\W+|$/, false)) + return 'string-2'; + if (stream.match(rx_number)) + return 'number'; + if (stream.match(rx_positive)) + return 'positive'; + if (stream.match(rx_negative)) + return 'negative'; + if (stream.match(rx_uri)) + return 'link'; + + while (stream.next() != null) { + if (stream.match(rx_strong, false)) break; + if (stream.match(rx_emphasis, false)) break; + if (stream.match(rx_literal, false)) break; + if (stream.match(rx_number, false)) break; + if (stream.match(rx_positive, false)) break; + if (stream.match(rx_negative, false)) break; + if (stream.match(rx_uri, false)) break; + } + + return null; + } + }; + + var mode = CodeMirror.getMode( + config, options.backdrop || 'rst-base' + ); + + return CodeMirror.overlayMode(mode, overlay, true); // combine +}, 'python', 'stex'); + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +CodeMirror.defineMode('rst-base', function (config) { + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + function format(string) { + var args = Array.prototype.slice.call(arguments, 1); + return string.replace(/{(\d+)}/g, function (match, n) { + return typeof args[n] != 'undefined' ? args[n] : match; + }); + } + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + var mode_python = CodeMirror.getMode(config, 'python'); + var mode_stex = CodeMirror.getMode(config, 'stex'); + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + var SEPA = "\\s+"; + var TAIL = "(?:\\s*|\\W|$)", + rx_TAIL = new RegExp(format('^{0}', TAIL)); + + var NAME = + "(?:[^\\W\\d_](?:[\\w!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)", + rx_NAME = new RegExp(format('^{0}', NAME)); + var NAME_WWS = + "(?:[^\\W\\d_](?:[\\w\\s!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)"; + var REF_NAME = format('(?:{0}|`{1}`)', NAME, NAME_WWS); + + var TEXT1 = "(?:[^\\s\\|](?:[^\\|]*[^\\s\\|])?)"; + var TEXT2 = "(?:[^\\`]+)", + rx_TEXT2 = new RegExp(format('^{0}', TEXT2)); + + var rx_section = new RegExp( + "^([!'#$%&\"()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~])\\1{3,}\\s*$"); + var rx_explicit = new RegExp( + format('^\\.\\.{0}', SEPA)); + var rx_link = new RegExp( + format('^_{0}:{1}|^__:{1}', REF_NAME, TAIL)); + var rx_directive = new RegExp( + format('^{0}::{1}', REF_NAME, TAIL)); + var rx_substitution = new RegExp( + format('^\\|{0}\\|{1}{2}::{3}', TEXT1, SEPA, REF_NAME, TAIL)); + var rx_footnote = new RegExp( + format('^\\[(?:\\d+|#{0}?|\\*)]{1}', REF_NAME, TAIL)); + var rx_citation = new RegExp( + format('^\\[{0}\\]{1}', REF_NAME, TAIL)); + + var rx_substitution_ref = new RegExp( + format('^\\|{0}\\|', TEXT1)); + var rx_footnote_ref = new RegExp( + format('^\\[(?:\\d+|#{0}?|\\*)]_', REF_NAME)); + var rx_citation_ref = new RegExp( + format('^\\[{0}\\]_', REF_NAME)); + var rx_link_ref1 = new RegExp( + format('^{0}__?', REF_NAME)); + var rx_link_ref2 = new RegExp( + format('^`{0}`_', TEXT2)); + + var rx_role_pre = new RegExp( + format('^:{0}:`{1}`{2}', NAME, TEXT2, TAIL)); + var rx_role_suf = new RegExp( + format('^`{1}`:{0}:{2}', NAME, TEXT2, TAIL)); + var rx_role = new RegExp( + format('^:{0}:{1}', NAME, TAIL)); + + var rx_directive_name = new RegExp(format('^{0}', REF_NAME)); + var rx_directive_tail = new RegExp(format('^::{0}', TAIL)); + var rx_substitution_text = new RegExp(format('^\\|{0}\\|', TEXT1)); + var rx_substitution_sepa = new RegExp(format('^{0}', SEPA)); + var rx_substitution_name = new RegExp(format('^{0}', REF_NAME)); + var rx_substitution_tail = new RegExp(format('^::{0}', TAIL)); + var rx_link_head = new RegExp("^_"); + var rx_link_name = new RegExp(format('^{0}|_', REF_NAME)); + var rx_link_tail = new RegExp(format('^:{0}', TAIL)); + + var rx_verbatim = new RegExp('^::\\s*$'); + var rx_examples = new RegExp('^\\s+(?:>>>|In \\[\\d+\\]:)\\s'); + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + function to_normal(stream, state) { + var token = null; + + if (stream.sol() && stream.match(rx_examples, false)) { + change(state, to_mode, { + mode: mode_python, local: CodeMirror.startState(mode_python) + }); + } else if (stream.sol() && stream.match(rx_explicit)) { + change(state, to_explicit); + token = 'meta'; + } else if (stream.sol() && stream.match(rx_section)) { + change(state, to_normal); + token = 'header'; + } else if (phase(state) == rx_role_pre || + stream.match(rx_role_pre, false)) { + + switch (stage(state)) { + case 0: + change(state, to_normal, context(rx_role_pre, 1)); + stream.match(/^:/); + token = 'meta'; + break; + case 1: + change(state, to_normal, context(rx_role_pre, 2)); + stream.match(rx_NAME); + token = 'keyword'; + + if (stream.current().match(/^(?:math|latex)/)) { + state.tmp_stex = true; + } + break; + case 2: + change(state, to_normal, context(rx_role_pre, 3)); + stream.match(/^:`/); + token = 'meta'; + break; + case 3: + if (state.tmp_stex) { + state.tmp_stex = undefined; state.tmp = { + mode: mode_stex, local: CodeMirror.startState(mode_stex) + }; + } + + if (state.tmp) { + if (stream.peek() == '`') { + change(state, to_normal, context(rx_role_pre, 4)); + state.tmp = undefined; + break; + } + + token = state.tmp.mode.token(stream, state.tmp.local); + break; + } + + change(state, to_normal, context(rx_role_pre, 4)); + stream.match(rx_TEXT2); + token = 'string'; + break; + case 4: + change(state, to_normal, context(rx_role_pre, 5)); + stream.match(/^`/); + token = 'meta'; + break; + case 5: + change(state, to_normal, context(rx_role_pre, 6)); + stream.match(rx_TAIL); + break; + default: + change(state, to_normal); + } + } else if (phase(state) == rx_role_suf || + stream.match(rx_role_suf, false)) { + + switch (stage(state)) { + case 0: + change(state, to_normal, context(rx_role_suf, 1)); + stream.match(/^`/); + token = 'meta'; + break; + case 1: + change(state, to_normal, context(rx_role_suf, 2)); + stream.match(rx_TEXT2); + token = 'string'; + break; + case 2: + change(state, to_normal, context(rx_role_suf, 3)); + stream.match(/^`:/); + token = 'meta'; + break; + case 3: + change(state, to_normal, context(rx_role_suf, 4)); + stream.match(rx_NAME); + token = 'keyword'; + break; + case 4: + change(state, to_normal, context(rx_role_suf, 5)); + stream.match(/^:/); + token = 'meta'; + break; + case 5: + change(state, to_normal, context(rx_role_suf, 6)); + stream.match(rx_TAIL); + break; + default: + change(state, to_normal); + } + } else if (phase(state) == rx_role || stream.match(rx_role, false)) { + + switch (stage(state)) { + case 0: + change(state, to_normal, context(rx_role, 1)); + stream.match(/^:/); + token = 'meta'; + break; + case 1: + change(state, to_normal, context(rx_role, 2)); + stream.match(rx_NAME); + token = 'keyword'; + break; + case 2: + change(state, to_normal, context(rx_role, 3)); + stream.match(/^:/); + token = 'meta'; + break; + case 3: + change(state, to_normal, context(rx_role, 4)); + stream.match(rx_TAIL); + break; + default: + change(state, to_normal); + } + } else if (phase(state) == rx_substitution_ref || + stream.match(rx_substitution_ref, false)) { + + switch (stage(state)) { + case 0: + change(state, to_normal, context(rx_substitution_ref, 1)); + stream.match(rx_substitution_text); + token = 'variable-2'; + break; + case 1: + change(state, to_normal, context(rx_substitution_ref, 2)); + if (stream.match(/^_?_?/)) token = 'link'; + break; + default: + change(state, to_normal); + } + } else if (stream.match(rx_footnote_ref)) { + change(state, to_normal); + token = 'quote'; + } else if (stream.match(rx_citation_ref)) { + change(state, to_normal); + token = 'quote'; + } else if (stream.match(rx_link_ref1)) { + change(state, to_normal); + if (!stream.peek() || stream.peek().match(/^\W$/)) { + token = 'link'; + } + } else if (phase(state) == rx_link_ref2 || + stream.match(rx_link_ref2, false)) { + + switch (stage(state)) { + case 0: + if (!stream.peek() || stream.peek().match(/^\W$/)) { + change(state, to_normal, context(rx_link_ref2, 1)); + } else { + stream.match(rx_link_ref2); + } + break; + case 1: + change(state, to_normal, context(rx_link_ref2, 2)); + stream.match(/^`/); + token = 'link'; + break; + case 2: + change(state, to_normal, context(rx_link_ref2, 3)); + stream.match(rx_TEXT2); + break; + case 3: + change(state, to_normal, context(rx_link_ref2, 4)); + stream.match(/^`_/); + token = 'link'; + break; + default: + change(state, to_normal); + } + } else if (stream.match(rx_verbatim)) { + change(state, to_verbatim); + } + + else { + if (stream.next()) change(state, to_normal); + } + + return token; + } + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + function to_explicit(stream, state) { + var token = null; + + if (phase(state) == rx_substitution || + stream.match(rx_substitution, false)) { + + switch (stage(state)) { + case 0: + change(state, to_explicit, context(rx_substitution, 1)); + stream.match(rx_substitution_text); + token = 'variable-2'; + break; + case 1: + change(state, to_explicit, context(rx_substitution, 2)); + stream.match(rx_substitution_sepa); + break; + case 2: + change(state, to_explicit, context(rx_substitution, 3)); + stream.match(rx_substitution_name); + token = 'keyword'; + break; + case 3: + change(state, to_explicit, context(rx_substitution, 4)); + stream.match(rx_substitution_tail); + token = 'meta'; + break; + default: + change(state, to_normal); + } + } else if (phase(state) == rx_directive || + stream.match(rx_directive, false)) { + + switch (stage(state)) { + case 0: + change(state, to_explicit, context(rx_directive, 1)); + stream.match(rx_directive_name); + token = 'keyword'; + + if (stream.current().match(/^(?:math|latex)/)) + state.tmp_stex = true; + else if (stream.current().match(/^python/)) + state.tmp_py = true; + break; + case 1: + change(state, to_explicit, context(rx_directive, 2)); + stream.match(rx_directive_tail); + token = 'meta'; + + if (stream.match(/^latex\s*$/) || state.tmp_stex) { + state.tmp_stex = undefined; change(state, to_mode, { + mode: mode_stex, local: CodeMirror.startState(mode_stex) + }); + } + break; + case 2: + change(state, to_explicit, context(rx_directive, 3)); + if (stream.match(/^python\s*$/) || state.tmp_py) { + state.tmp_py = undefined; change(state, to_mode, { + mode: mode_python, local: CodeMirror.startState(mode_python) + }); + } + break; + default: + change(state, to_normal); + } + } else if (phase(state) == rx_link || stream.match(rx_link, false)) { + + switch (stage(state)) { + case 0: + change(state, to_explicit, context(rx_link, 1)); + stream.match(rx_link_head); + stream.match(rx_link_name); + token = 'link'; + break; + case 1: + change(state, to_explicit, context(rx_link, 2)); + stream.match(rx_link_tail); + token = 'meta'; + break; + default: + change(state, to_normal); + } + } else if (stream.match(rx_footnote)) { + change(state, to_normal); + token = 'quote'; + } else if (stream.match(rx_citation)) { + change(state, to_normal); + token = 'quote'; + } + + else { + stream.eatSpace(); + if (stream.eol()) { + change(state, to_normal); + } else { + stream.skipToEnd(); + change(state, to_comment); + token = 'comment'; + } + } + + return token; + } + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + function to_comment(stream, state) { + return as_block(stream, state, 'comment'); + } + + function to_verbatim(stream, state) { + return as_block(stream, state, 'meta'); + } + + function as_block(stream, state, token) { + if (stream.eol() || stream.eatSpace()) { + stream.skipToEnd(); + return token; + } else { + change(state, to_normal); + return null; + } + } + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + function to_mode(stream, state) { + + if (state.ctx.mode && state.ctx.local) { + + if (stream.sol()) { + if (!stream.eatSpace()) change(state, to_normal); + return null; + } + + return state.ctx.mode.token(stream, state.ctx.local); + } + + change(state, to_normal); + return null; + } + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + function context(phase, stage, mode, local) { + return {phase: phase, stage: stage, mode: mode, local: local}; + } + + function change(state, tok, ctx) { + state.tok = tok; + state.ctx = ctx || {}; + } + + function stage(state) { + return state.ctx.stage || 0; + } + + function phase(state) { + return state.ctx.phase; + } + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + return { + startState: function () { + return {tok: to_normal, ctx: context(undefined, 0)}; + }, + + copyState: function (state) { + var ctx = state.ctx, tmp = state.tmp; + if (ctx.local) + ctx = {mode: ctx.mode, local: CodeMirror.copyState(ctx.mode, ctx.local)}; + if (tmp) + tmp = {mode: tmp.mode, local: CodeMirror.copyState(tmp.mode, tmp.local)}; + return {tok: state.tok, ctx: ctx, tmp: tmp}; + }, + + innerMode: function (state) { + return state.tmp ? {state: state.tmp.local, mode: state.tmp.mode} + : state.ctx.mode ? {state: state.ctx.local, mode: state.ctx.mode} + : null; + }, + + token: function (stream, state) { + return state.tok(stream, state); + } + }; +}, 'python', 'stex'); + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +CodeMirror.defineMIME('text/x-rst', 'rst'); + +/////////////////////////////////////////////////////////////////////////////// +/////////////////////////////////////////////////////////////////////////////// + +}); diff --git a/global/codemirror/mode/ruby/index.html b/global/codemirror/mode/ruby/index.html new file mode 100644 index 00000000..97544bab --- /dev/null +++ b/global/codemirror/mode/ruby/index.html @@ -0,0 +1,183 @@ + + +CodeMirror: Ruby mode + + + + + + + + + + +
+

Ruby mode

+
+ + +

MIME types defined: text/x-ruby.

+ +

Development of the CodeMirror Ruby mode was kindly sponsored + by Ubalo.

+ +
diff --git a/global/codemirror/mode/ruby/ruby.js b/global/codemirror/mode/ruby/ruby.js new file mode 100644 index 00000000..874c1830 --- /dev/null +++ b/global/codemirror/mode/ruby/ruby.js @@ -0,0 +1,296 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("ruby", function(config) { + function wordObj(words) { + var o = {}; + for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; + return o; + } + var keywords = wordObj([ + "alias", "and", "BEGIN", "begin", "break", "case", "class", "def", "defined?", "do", "else", + "elsif", "END", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or", + "redo", "rescue", "retry", "return", "self", "super", "then", "true", "undef", "unless", + "until", "when", "while", "yield", "nil", "raise", "throw", "catch", "fail", "loop", "callcc", + "caller", "lambda", "proc", "public", "protected", "private", "require", "load", + "require_relative", "extend", "autoload", "__END__", "__FILE__", "__LINE__", "__dir__" + ]); + var indentWords = wordObj(["def", "class", "case", "for", "while", "until", "module", "then", + "catch", "loop", "proc", "begin"]); + var dedentWords = wordObj(["end", "until"]); + var matching = {"[": "]", "{": "}", "(": ")"}; + var curPunc; + + function chain(newtok, stream, state) { + state.tokenize.push(newtok); + return newtok(stream, state); + } + + function tokenBase(stream, state) { + if (stream.sol() && stream.match("=begin") && stream.eol()) { + state.tokenize.push(readBlockComment); + return "comment"; + } + if (stream.eatSpace()) return null; + var ch = stream.next(), m; + if (ch == "`" || ch == "'" || ch == '"') { + return chain(readQuoted(ch, "string", ch == '"' || ch == "`"), stream, state); + } else if (ch == "/") { + if (regexpAhead(stream)) + return chain(readQuoted(ch, "string-2", true), stream, state); + else + return "operator"; + } else if (ch == "%") { + var style = "string", embed = true; + if (stream.eat("s")) style = "atom"; + else if (stream.eat(/[WQ]/)) style = "string"; + else if (stream.eat(/[r]/)) style = "string-2"; + else if (stream.eat(/[wxq]/)) { style = "string"; embed = false; } + var delim = stream.eat(/[^\w\s=]/); + if (!delim) return "operator"; + if (matching.propertyIsEnumerable(delim)) delim = matching[delim]; + return chain(readQuoted(delim, style, embed, true), stream, state); + } else if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } else if (ch == "<" && (m = stream.match(/^<-?[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/))) { + return chain(readHereDoc(m[1]), stream, state); + } else if (ch == "0") { + if (stream.eat("x")) stream.eatWhile(/[\da-fA-F]/); + else if (stream.eat("b")) stream.eatWhile(/[01]/); + else stream.eatWhile(/[0-7]/); + return "number"; + } else if (/\d/.test(ch)) { + stream.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/); + return "number"; + } else if (ch == "?") { + while (stream.match(/^\\[CM]-/)) {} + if (stream.eat("\\")) stream.eatWhile(/\w/); + else stream.next(); + return "string"; + } else if (ch == ":") { + if (stream.eat("'")) return chain(readQuoted("'", "atom", false), stream, state); + if (stream.eat('"')) return chain(readQuoted('"', "atom", true), stream, state); + + // :> :>> :< :<< are valid symbols + if (stream.eat(/[\<\>]/)) { + stream.eat(/[\<\>]/); + return "atom"; + } + + // :+ :- :/ :* :| :& :! are valid symbols + if (stream.eat(/[\+\-\*\/\&\|\:\!]/)) { + return "atom"; + } + + // Symbols can't start by a digit + if (stream.eat(/[a-zA-Z$@_\xa1-\uffff]/)) { + stream.eatWhile(/[\w$\xa1-\uffff]/); + // Only one ? ! = is allowed and only as the last character + stream.eat(/[\?\!\=]/); + return "atom"; + } + return "operator"; + } else if (ch == "@" && stream.match(/^@?[a-zA-Z_\xa1-\uffff]/)) { + stream.eat("@"); + stream.eatWhile(/[\w\xa1-\uffff]/); + return "variable-2"; + } else if (ch == "$") { + if (stream.eat(/[a-zA-Z_]/)) { + stream.eatWhile(/[\w]/); + } else if (stream.eat(/\d/)) { + stream.eat(/\d/); + } else { + stream.next(); // Must be a special global like $: or $! + } + return "variable-3"; + } else if (/[a-zA-Z_\xa1-\uffff]/.test(ch)) { + stream.eatWhile(/[\w\xa1-\uffff]/); + stream.eat(/[\?\!]/); + if (stream.eat(":")) return "atom"; + return "ident"; + } else if (ch == "|" && (state.varList || state.lastTok == "{" || state.lastTok == "do")) { + curPunc = "|"; + return null; + } else if (/[\(\)\[\]{}\\;]/.test(ch)) { + curPunc = ch; + return null; + } else if (ch == "-" && stream.eat(">")) { + return "arrow"; + } else if (/[=+\-\/*:\.^%<>~|]/.test(ch)) { + var more = stream.eatWhile(/[=+\-\/*:\.^%<>~|]/); + if (ch == "." && !more) curPunc = "."; + return "operator"; + } else { + return null; + } + } + + function regexpAhead(stream) { + var start = stream.pos, depth = 0, next, found = false, escaped = false + while ((next = stream.next()) != null) { + if (!escaped) { + if ("[{(".indexOf(next) > -1) { + depth++ + } else if ("]})".indexOf(next) > -1) { + depth-- + if (depth < 0) break + } else if (next == "/" && depth == 0) { + found = true + break + } + escaped = next == "\\" + } else { + escaped = false + } + } + stream.backUp(stream.pos - start) + return found + } + + function tokenBaseUntilBrace(depth) { + if (!depth) depth = 1; + return function(stream, state) { + if (stream.peek() == "}") { + if (depth == 1) { + state.tokenize.pop(); + return state.tokenize[state.tokenize.length-1](stream, state); + } else { + state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1); + } + } else if (stream.peek() == "{") { + state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1); + } + return tokenBase(stream, state); + }; + } + function tokenBaseOnce() { + var alreadyCalled = false; + return function(stream, state) { + if (alreadyCalled) { + state.tokenize.pop(); + return state.tokenize[state.tokenize.length-1](stream, state); + } + alreadyCalled = true; + return tokenBase(stream, state); + }; + } + function readQuoted(quote, style, embed, unescaped) { + return function(stream, state) { + var escaped = false, ch; + + if (state.context.type === 'read-quoted-paused') { + state.context = state.context.prev; + stream.eat("}"); + } + + while ((ch = stream.next()) != null) { + if (ch == quote && (unescaped || !escaped)) { + state.tokenize.pop(); + break; + } + if (embed && ch == "#" && !escaped) { + if (stream.eat("{")) { + if (quote == "}") { + state.context = {prev: state.context, type: 'read-quoted-paused'}; + } + state.tokenize.push(tokenBaseUntilBrace()); + break; + } else if (/[@\$]/.test(stream.peek())) { + state.tokenize.push(tokenBaseOnce()); + break; + } + } + escaped = !escaped && ch == "\\"; + } + return style; + }; + } + function readHereDoc(phrase) { + return function(stream, state) { + if (stream.match(phrase)) state.tokenize.pop(); + else stream.skipToEnd(); + return "string"; + }; + } + function readBlockComment(stream, state) { + if (stream.sol() && stream.match("=end") && stream.eol()) + state.tokenize.pop(); + stream.skipToEnd(); + return "comment"; + } + + return { + startState: function() { + return {tokenize: [tokenBase], + indented: 0, + context: {type: "top", indented: -config.indentUnit}, + continuedLine: false, + lastTok: null, + varList: false}; + }, + + token: function(stream, state) { + curPunc = null; + if (stream.sol()) state.indented = stream.indentation(); + var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype; + var thisTok = curPunc; + if (style == "ident") { + var word = stream.current(); + style = state.lastTok == "." ? "property" + : keywords.propertyIsEnumerable(stream.current()) ? "keyword" + : /^[A-Z]/.test(word) ? "tag" + : (state.lastTok == "def" || state.lastTok == "class" || state.varList) ? "def" + : "variable"; + if (style == "keyword") { + thisTok = word; + if (indentWords.propertyIsEnumerable(word)) kwtype = "indent"; + else if (dedentWords.propertyIsEnumerable(word)) kwtype = "dedent"; + else if ((word == "if" || word == "unless") && stream.column() == stream.indentation()) + kwtype = "indent"; + else if (word == "do" && state.context.indented < state.indented) + kwtype = "indent"; + } + } + if (curPunc || (style && style != "comment")) state.lastTok = thisTok; + if (curPunc == "|") state.varList = !state.varList; + + if (kwtype == "indent" || /[\(\[\{]/.test(curPunc)) + state.context = {prev: state.context, type: curPunc || style, indented: state.indented}; + else if ((kwtype == "dedent" || /[\)\]\}]/.test(curPunc)) && state.context.prev) + state.context = state.context.prev; + + if (stream.eol()) + state.continuedLine = (curPunc == "\\" || style == "operator"); + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize[state.tokenize.length-1] != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0); + var ct = state.context; + var closing = ct.type == matching[firstChar] || + ct.type == "keyword" && /^(?:end|until|else|elsif|when|rescue)\b/.test(textAfter); + return ct.indented + (closing ? 0 : config.indentUnit) + + (state.continuedLine ? config.indentUnit : 0); + }, + + electricInput: /^\s*(?:end|rescue|elsif|else|\})$/, + lineComment: "#", + fold: "indent" + }; +}); + +CodeMirror.defineMIME("text/x-ruby", "ruby"); + +}); diff --git a/global/codemirror/mode/ruby/test.js b/global/codemirror/mode/ruby/test.js new file mode 100644 index 00000000..3133bd63 --- /dev/null +++ b/global/codemirror/mode/ruby/test.js @@ -0,0 +1,16 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("divide_equal_operator", + "[variable bar] [operator /=] [variable foo]"); + + MT("divide_equal_operator_no_spacing", + "[variable foo][operator /=][number 42]"); + + MT("complex_regexp", + "[keyword if] [variable cr] [operator =~] [string-2 /(?: \\( #{][tag RE_NOT][string-2 }\\( | #{][tag RE_NOT_PAR_OR][string-2 }* #{][tag RE_OPA_OR][string-2 } )/][variable x]") +})(); diff --git a/global/codemirror/mode/rust/index.html b/global/codemirror/mode/rust/index.html new file mode 100644 index 00000000..1fe0ad1e --- /dev/null +++ b/global/codemirror/mode/rust/index.html @@ -0,0 +1,64 @@ + + +CodeMirror: Rust mode + + + + + + + + + + +
+

Rust mode

+ + +
+ + + +

MIME types defined: text/x-rustsrc.

+
diff --git a/global/codemirror/mode/rust/rust.js b/global/codemirror/mode/rust/rust.js new file mode 100644 index 00000000..b635563a --- /dev/null +++ b/global/codemirror/mode/rust/rust.js @@ -0,0 +1,72 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../../addon/mode/simple"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineSimpleMode("rust",{ + start: [ + // string and byte string + {regex: /b?"/, token: "string", next: "string"}, + // raw string and raw byte string + {regex: /b?r"/, token: "string", next: "string_raw"}, + {regex: /b?r#+"/, token: "string", next: "string_raw_hash"}, + // character + {regex: /'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/, token: "string-2"}, + // byte + {regex: /b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/, token: "string-2"}, + + {regex: /(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/, + token: "number"}, + {regex: /(let(?:\s+mut)?|fn|enum|mod|struct|type)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, token: ["keyword", null, "def"]}, + {regex: /(?:abstract|alignof|as|box|break|continue|const|crate|do|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/, token: "keyword"}, + {regex: /\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/, token: "atom"}, + {regex: /\b(?:true|false|Some|None|Ok|Err)\b/, token: "builtin"}, + {regex: /\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, + token: ["keyword", null ,"def"]}, + {regex: /#!?\[.*\]/, token: "meta"}, + {regex: /\/\/.*/, token: "comment"}, + {regex: /\/\*/, token: "comment", next: "comment"}, + {regex: /[-+\/*=<>!]+/, token: "operator"}, + {regex: /[a-zA-Z_]\w*!/,token: "variable-3"}, + {regex: /[a-zA-Z_]\w*/, token: "variable"}, + {regex: /[\{\[\(]/, indent: true}, + {regex: /[\}\]\)]/, dedent: true} + ], + string: [ + {regex: /"/, token: "string", next: "start"}, + {regex: /(?:[^\\"]|\\(?:.|$))*/, token: "string"} + ], + string_raw: [ + {regex: /"/, token: "string", next: "start"}, + {regex: /[^"]*/, token: "string"} + ], + string_raw_hash: [ + {regex: /"#+/, token: "string", next: "start"}, + {regex: /(?:[^"]|"(?!#))*/, token: "string"} + ], + comment: [ + {regex: /.*?\*\//, token: "comment", next: "start"}, + {regex: /.*/, token: "comment"} + ], + meta: { + dontIndentStates: ["comment"], + electricInput: /^\s*\}$/, + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//", + fold: "brace" + } +}); + + +CodeMirror.defineMIME("text/x-rustsrc", "rust"); +CodeMirror.defineMIME("text/rust", "rust"); +}); diff --git a/global/codemirror/mode/rust/test.js b/global/codemirror/mode/rust/test.js new file mode 100644 index 00000000..eb256c47 --- /dev/null +++ b/global/codemirror/mode/rust/test.js @@ -0,0 +1,39 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 4}, "rust"); + function MT(name) {test.mode(name, mode, Array.prototype.slice.call(arguments, 1));} + + MT('integer_test', + '[number 123i32]', + '[number 123u32]', + '[number 123_u32]', + '[number 0xff_u8]', + '[number 0o70_i16]', + '[number 0b1111_1111_1001_0000_i32]', + '[number 0usize]'); + + MT('float_test', + '[number 123.0f64]', + '[number 0.1f64]', + '[number 0.1f32]', + '[number 12E+99_f64]'); + + MT('string-literals-test', + '[string "foo"]', + '[string r"foo"]', + '[string "\\"foo\\""]', + '[string r#""foo""#]', + '[string "foo #\\"# bar"]', + + '[string b"foo"]', + '[string br"foo"]', + '[string b"\\"foo\\""]', + '[string br#""foo""#]', + '[string br##"foo #" bar"##]', + + "[string-2 'h']", + "[string-2 b'h']"); + +})(); diff --git a/global/codemirror/mode/sas/index.html b/global/codemirror/mode/sas/index.html new file mode 100644 index 00000000..636e0659 --- /dev/null +++ b/global/codemirror/mode/sas/index.html @@ -0,0 +1,81 @@ + + +CodeMirror: SAS mode + + + + + + + + + + +
+

SAS mode

+
+ + + +

MIME types defined: text/x-sas.

+ +
diff --git a/global/codemirror/mode/sas/sas.js b/global/codemirror/mode/sas/sas.js new file mode 100644 index 00000000..d85b3353 --- /dev/null +++ b/global/codemirror/mode/sas/sas.js @@ -0,0 +1,303 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + + +// SAS mode copyright (c) 2016 Jared Dean, SAS Institute +// Created by Jared Dean + +// TODO +// indent and de-indent +// identify macro variables + + +//Definitions +// comment -- text within * ; or /* */ +// keyword -- SAS language variable +// variable -- macro variables starts with '&' or variable formats +// variable-2 -- DATA Step, proc, or macro names +// string -- text within ' ' or " " +// operator -- numeric operator + / - * ** le eq ge ... and so on +// builtin -- proc %macro data run mend +// atom +// def + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("sas", function () { + var words = {}; + var isDoubleOperatorSym = { + eq: 'operator', + lt: 'operator', + le: 'operator', + gt: 'operator', + ge: 'operator', + "in": 'operator', + ne: 'operator', + or: 'operator' + }; + var isDoubleOperatorChar = /(<=|>=|!=|<>)/; + var isSingleOperatorChar = /[=\(:\),{}.*<>+\-\/^\[\]]/; + + // Takes a string of words separated by spaces and adds them as + // keys with the value of the first argument 'style' + function define(style, string, context) { + if (context) { + var split = string.split(' '); + for (var i = 0; i < split.length; i++) { + words[split[i]] = {style: style, state: context}; + } + } + } + //datastep + define('def', 'stack pgm view source debug nesting nolist', ['inDataStep']); + define('def', 'if while until for do do; end end; then else cancel', ['inDataStep']); + define('def', 'label format _n_ _error_', ['inDataStep']); + define('def', 'ALTER BUFNO BUFSIZE CNTLLEV COMPRESS DLDMGACTION ENCRYPT ENCRYPTKEY EXTENDOBSCOUNTER GENMAX GENNUM INDEX LABEL OBSBUF OUTREP PW PWREQ READ REPEMPTY REPLACE REUSE ROLE SORTEDBY SPILL TOBSNO TYPE WRITE FILECLOSE FIRSTOBS IN OBS POINTOBS WHERE WHEREUP IDXNAME IDXWHERE DROP KEEP RENAME', ['inDataStep']); + define('def', 'filevar finfo finv fipname fipnamel fipstate first firstobs floor', ['inDataStep']); + define('def', 'varfmt varinfmt varlabel varlen varname varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname vnamex vnferr vtype vtypex weekday', ['inDataStep']); + define('def', 'zipfips zipname zipnamel zipstate', ['inDataStep']); + define('def', 'put putc putn', ['inDataStep']); + define('builtin', 'data run', ['inDataStep']); + + + //proc + define('def', 'data', ['inProc']); + + // flow control for macros + define('def', '%if %end %end; %else %else; %do %do; %then', ['inMacro']); + + //everywhere + define('builtin', 'proc run; quit; libname filename %macro %mend option options', ['ALL']); + + define('def', 'footnote title libname ods', ['ALL']); + define('def', '%let %put %global %sysfunc %eval ', ['ALL']); + // automatic macro variables http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a003167023.htm + define('variable', '&sysbuffr &syscc &syscharwidth &syscmd &sysdate &sysdate9 &sysday &sysdevic &sysdmg &sysdsn &sysencoding &sysenv &syserr &syserrortext &sysfilrc &syshostname &sysindex &sysinfo &sysjobid &syslast &syslckrc &syslibrc &syslogapplname &sysmacroname &sysmenv &sysmsg &sysncpu &sysodspath &sysparm &syspbuff &sysprocessid &sysprocessname &sysprocname &sysrc &sysscp &sysscpl &sysscpl &syssite &sysstartid &sysstartname &systcpiphostname &systime &sysuserid &sysver &sysvlong &sysvlong4 &syswarningtext', ['ALL']); + + //footnote[1-9]? title[1-9]? + + //options statement + define('def', 'source2 nosource2 page pageno pagesize', ['ALL']); + + //proc and datastep + define('def', '_all_ _character_ _cmd_ _freq_ _i_ _infile_ _last_ _msg_ _null_ _numeric_ _temporary_ _type_ abort abs addr adjrsq airy alpha alter altlog altprint and arcos array arsin as atan attrc attrib attrn authserver autoexec awscontrol awsdef awsmenu awsmenumerge awstitle backward band base betainv between blocksize blshift bnot bor brshift bufno bufsize bxor by byerr byline byte calculated call cards cards4 catcache cbufno cdf ceil center cexist change chisq cinv class cleanup close cnonct cntllev coalesce codegen col collate collin column comamid comaux1 comaux2 comdef compbl compound compress config continue convert cos cosh cpuid create cross crosstab css curobs cv daccdb daccdbsl daccsl daccsyd dacctab dairy datalines datalines4 datejul datepart datetime day dbcslang dbcstype dclose ddm delete delimiter depdb depdbsl depsl depsyd deptab dequote descending descript design= device dflang dhms dif digamma dim dinfo display distinct dkricond dkrocond dlm dnum do dopen doptname doptnum dread drop dropnote dsname dsnferr echo else emaildlg emailid emailpw emailserver emailsys encrypt end endsas engine eof eov erf erfc error errorcheck errors exist exp fappend fclose fcol fdelete feedback fetch fetchobs fexist fget file fileclose fileexist filefmt filename fileref fmterr fmtsearch fnonct fnote font fontalias fopen foptname foptnum force formatted formchar formdelim formdlim forward fpoint fpos fput fread frewind frlen from fsep fuzz fwrite gaminv gamma getoption getvarc getvarn go goto group gwindow hbar hbound helpenv helploc hms honorappearance hosthelp hostprint hour hpct html hvar ibessel ibr id if index indexc indexw initcmd initstmt inner input inputc inputn inr insert int intck intnx into intrr invaliddata irr is jbessel join juldate keep kentb kurtosis label lag last lbound leave left length levels lgamma lib library libref line linesize link list log log10 log2 logpdf logpmf logsdf lostcard lowcase lrecl ls macro macrogen maps mautosource max maxdec maxr mdy mean measures median memtype merge merror min minute missing missover mlogic mod mode model modify month mopen mort mprint mrecall msglevel msymtabmax mvarsize myy n nest netpv new news nmiss no nobatch nobs nocaps nocardimage nocenter nocharcode nocmdmac nocol nocum nodate nodbcs nodetails nodmr nodms nodmsbatch nodup nodupkey noduplicates noechoauto noequals noerrorabend noexitwindows nofullstimer noicon noimplmac noint nolist noloadlist nomiss nomlogic nomprint nomrecall nomsgcase nomstored nomultenvappl nonotes nonumber noobs noovp nopad nopercent noprint noprintinit normal norow norsasuser nosetinit nosplash nosymbolgen note notes notitle notitles notsorted noverbose noxsync noxwait npv null number numkeys nummousekeys nway obs on open order ordinal otherwise out outer outp= output over ovp p(1 5 10 25 50 75 90 95 99) pad pad2 paired parm parmcards path pathdll pathname pdf peek peekc pfkey pmf point poisson poke position printer probbeta probbnml probchi probf probgam probhypr probit probnegb probnorm probsig probt procleave prt ps pw pwreq qtr quote r ranbin rancau ranexp rangam range ranks rannor ranpoi rantbl rantri ranuni read recfm register regr remote remove rename repeat replace resolve retain return reuse reverse rewind right round rsquare rtf rtrace rtraceloc s s2 samploc sasautos sascontrol sasfrscr sasmsg sasmstore sasscript sasuser saving scan sdf second select selection separated seq serror set setcomm setot sign simple sin sinh siteinfo skewness skip sle sls sortedby sortpgm sortseq sortsize soundex spedis splashlocation split spool sqrt start std stderr stdin stfips stimer stname stnamel stop stopover subgroup subpopn substr sum sumwgt symbol symbolgen symget symput sysget sysin sysleave sysmsg sysparm sysprint sysprintfont sysprod sysrc system t table tables tan tanh tapeclose tbufsize terminal test then timepart tinv tnonct to today tol tooldef totper transformout translate trantab tranwrd trigamma trim trimn trunc truncover type unformatted uniform union until upcase update user usericon uss validate value var weight when where while wincharset window work workinit workterm write wsum xsync xwait yearcutoff yes yyq min max', ['inDataStep', 'inProc']); + define('operator', 'and not ', ['inDataStep', 'inProc']); + + // Main function + function tokenize(stream, state) { + // Finally advance the stream + var ch = stream.next(); + + // BLOCKCOMMENT + if (ch === '/' && stream.eat('*')) { + state.continueComment = true; + return "comment"; + } else if (state.continueComment === true) { // in comment block + //comment ends at the beginning of the line + if (ch === '*' && stream.peek() === '/') { + stream.next(); + state.continueComment = false; + } else if (stream.skipTo('*')) { //comment is potentially later in line + stream.skipTo('*'); + stream.next(); + if (stream.eat('/')) + state.continueComment = false; + } else { + stream.skipToEnd(); + } + return "comment"; + } + + if (ch == "*" && stream.column() == stream.indentation()) { + stream.skipToEnd() + return "comment" + } + + // DoubleOperator match + var doubleOperator = ch + stream.peek(); + + if ((ch === '"' || ch === "'") && !state.continueString) { + state.continueString = ch + return "string" + } else if (state.continueString) { + if (state.continueString == ch) { + state.continueString = null; + } else if (stream.skipTo(state.continueString)) { + // quote found on this line + stream.next(); + state.continueString = null; + } else { + stream.skipToEnd(); + } + return "string"; + } else if (state.continueString !== null && stream.eol()) { + stream.skipTo(state.continueString) || stream.skipToEnd(); + return "string"; + } else if (/[\d\.]/.test(ch)) { //find numbers + if (ch === ".") + stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); + else if (ch === "0") + stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); + else + stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); + return "number"; + } else if (isDoubleOperatorChar.test(ch + stream.peek())) { // TWO SYMBOL TOKENS + stream.next(); + return "operator"; + } else if (isDoubleOperatorSym.hasOwnProperty(doubleOperator)) { + stream.next(); + if (stream.peek() === ' ') + return isDoubleOperatorSym[doubleOperator.toLowerCase()]; + } else if (isSingleOperatorChar.test(ch)) { // SINGLE SYMBOL TOKENS + return "operator"; + } + + // Matches one whole word -- even if the word is a character + var word; + if (stream.match(/[%&;\w]+/, false) != null) { + word = ch + stream.match(/[%&;\w]+/, true); + if (/&/.test(word)) return 'variable' + } else { + word = ch; + } + // the word after DATA PROC or MACRO + if (state.nextword) { + stream.match(/[\w]+/); + // match memname.libname + if (stream.peek() === '.') stream.skipTo(' '); + state.nextword = false; + return 'variable-2'; + } + + word = word.toLowerCase() + // Are we in a DATA Step? + if (state.inDataStep) { + if (word === 'run;' || stream.match(/run\s;/)) { + state.inDataStep = false; + return 'builtin'; + } + // variable formats + if ((word) && stream.next() === '.') { + //either a format or libname.memname + if (/\w/.test(stream.peek())) return 'variable-2'; + else return 'variable'; + } + // do we have a DATA Step keyword + if (word && words.hasOwnProperty(word) && + (words[word].state.indexOf("inDataStep") !== -1 || + words[word].state.indexOf("ALL") !== -1)) { + //backup to the start of the word + if (stream.start < stream.pos) + stream.backUp(stream.pos - stream.start); + //advance the length of the word and return + for (var i = 0; i < word.length; ++i) stream.next(); + return words[word].style; + } + } + // Are we in an Proc statement? + if (state.inProc) { + if (word === 'run;' || word === 'quit;') { + state.inProc = false; + return 'builtin'; + } + // do we have a proc keyword + if (word && words.hasOwnProperty(word) && + (words[word].state.indexOf("inProc") !== -1 || + words[word].state.indexOf("ALL") !== -1)) { + stream.match(/[\w]+/); + return words[word].style; + } + } + // Are we in a Macro statement? + if (state.inMacro) { + if (word === '%mend') { + if (stream.peek() === ';') stream.next(); + state.inMacro = false; + return 'builtin'; + } + if (word && words.hasOwnProperty(word) && + (words[word].state.indexOf("inMacro") !== -1 || + words[word].state.indexOf("ALL") !== -1)) { + stream.match(/[\w]+/); + return words[word].style; + } + + return 'atom'; + } + // Do we have Keywords specific words? + if (word && words.hasOwnProperty(word)) { + // Negates the initial next() + stream.backUp(1); + // Actually move the stream + stream.match(/[\w]+/); + if (word === 'data' && /=/.test(stream.peek()) === false) { + state.inDataStep = true; + state.nextword = true; + return 'builtin'; + } + if (word === 'proc') { + state.inProc = true; + state.nextword = true; + return 'builtin'; + } + if (word === '%macro') { + state.inMacro = true; + state.nextword = true; + return 'builtin'; + } + if (/title[1-9]/.test(word)) return 'def'; + + if (word === 'footnote') { + stream.eat(/[1-9]/); + return 'def'; + } + + // Returns their value as state in the prior define methods + if (state.inDataStep === true && words[word].state.indexOf("inDataStep") !== -1) + return words[word].style; + if (state.inProc === true && words[word].state.indexOf("inProc") !== -1) + return words[word].style; + if (state.inMacro === true && words[word].state.indexOf("inMacro") !== -1) + return words[word].style; + if (words[word].state.indexOf("ALL") !== -1) + return words[word].style; + return null; + } + // Unrecognized syntax + return null; + } + + return { + startState: function () { + return { + inDataStep: false, + inProc: false, + inMacro: false, + nextword: false, + continueString: null, + continueComment: false + }; + }, + token: function (stream, state) { + // Strip the spaces, but regex will account for them either way + if (stream.eatSpace()) return null; + // Go through the main process + return tokenize(stream, state); + }, + + blockCommentStart: "/*", + blockCommentEnd: "*/" + }; + + }); + + CodeMirror.defineMIME("text/x-sas", "sas"); +}); diff --git a/global/codemirror/mode/sass/index.html b/global/codemirror/mode/sass/index.html new file mode 100644 index 00000000..6305649e --- /dev/null +++ b/global/codemirror/mode/sass/index.html @@ -0,0 +1,68 @@ + + +CodeMirror: Sass mode + + + + + + + + + + + +
+

Sass mode

+
+ + +

MIME types defined: text/x-sass.

+
diff --git a/global/codemirror/mode/sass/sass.js b/global/codemirror/mode/sass/sass.js new file mode 100644 index 00000000..7d8135bf --- /dev/null +++ b/global/codemirror/mode/sass/sass.js @@ -0,0 +1,454 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../css/css")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../css/css"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("sass", function(config) { + var cssMode = CodeMirror.mimeModes["text/css"]; + var propertyKeywords = cssMode.propertyKeywords || {}, + colorKeywords = cssMode.colorKeywords || {}, + valueKeywords = cssMode.valueKeywords || {}, + fontProperties = cssMode.fontProperties || {}; + + function tokenRegexp(words) { + return new RegExp("^" + words.join("|")); + } + + var keywords = ["true", "false", "null", "auto"]; + var keywordsRegexp = new RegExp("^" + keywords.join("|")); + + var operators = ["\\(", "\\)", "=", ">", "<", "==", ">=", "<=", "\\+", "-", + "\\!=", "/", "\\*", "%", "and", "or", "not", ";","\\{","\\}",":"]; + var opRegexp = tokenRegexp(operators); + + var pseudoElementsRegexp = /^::?[a-zA-Z_][\w\-]*/; + + var word; + + function isEndLine(stream) { + return !stream.peek() || stream.match(/\s+$/, false); + } + + function urlTokens(stream, state) { + var ch = stream.peek(); + + if (ch === ")") { + stream.next(); + state.tokenizer = tokenBase; + return "operator"; + } else if (ch === "(") { + stream.next(); + stream.eatSpace(); + + return "operator"; + } else if (ch === "'" || ch === '"') { + state.tokenizer = buildStringTokenizer(stream.next()); + return "string"; + } else { + state.tokenizer = buildStringTokenizer(")", false); + return "string"; + } + } + function comment(indentation, multiLine) { + return function(stream, state) { + if (stream.sol() && stream.indentation() <= indentation) { + state.tokenizer = tokenBase; + return tokenBase(stream, state); + } + + if (multiLine && stream.skipTo("*/")) { + stream.next(); + stream.next(); + state.tokenizer = tokenBase; + } else { + stream.skipToEnd(); + } + + return "comment"; + }; + } + + function buildStringTokenizer(quote, greedy) { + if (greedy == null) { greedy = true; } + + function stringTokenizer(stream, state) { + var nextChar = stream.next(); + var peekChar = stream.peek(); + var previousChar = stream.string.charAt(stream.pos-2); + + var endingString = ((nextChar !== "\\" && peekChar === quote) || (nextChar === quote && previousChar !== "\\")); + + if (endingString) { + if (nextChar !== quote && greedy) { stream.next(); } + if (isEndLine(stream)) { + state.cursorHalf = 0; + } + state.tokenizer = tokenBase; + return "string"; + } else if (nextChar === "#" && peekChar === "{") { + state.tokenizer = buildInterpolationTokenizer(stringTokenizer); + stream.next(); + return "operator"; + } else { + return "string"; + } + } + + return stringTokenizer; + } + + function buildInterpolationTokenizer(currentTokenizer) { + return function(stream, state) { + if (stream.peek() === "}") { + stream.next(); + state.tokenizer = currentTokenizer; + return "operator"; + } else { + return tokenBase(stream, state); + } + }; + } + + function indent(state) { + if (state.indentCount == 0) { + state.indentCount++; + var lastScopeOffset = state.scopes[0].offset; + var currentOffset = lastScopeOffset + config.indentUnit; + state.scopes.unshift({ offset:currentOffset }); + } + } + + function dedent(state) { + if (state.scopes.length == 1) return; + + state.scopes.shift(); + } + + function tokenBase(stream, state) { + var ch = stream.peek(); + + // Comment + if (stream.match("/*")) { + state.tokenizer = comment(stream.indentation(), true); + return state.tokenizer(stream, state); + } + if (stream.match("//")) { + state.tokenizer = comment(stream.indentation(), false); + return state.tokenizer(stream, state); + } + + // Interpolation + if (stream.match("#{")) { + state.tokenizer = buildInterpolationTokenizer(tokenBase); + return "operator"; + } + + // Strings + if (ch === '"' || ch === "'") { + stream.next(); + state.tokenizer = buildStringTokenizer(ch); + return "string"; + } + + if(!state.cursorHalf){// state.cursorHalf === 0 + // first half i.e. before : for key-value pairs + // including selectors + + if (ch === "-") { + if (stream.match(/^-\w+-/)) { + return "meta"; + } + } + + if (ch === ".") { + stream.next(); + if (stream.match(/^[\w-]+/)) { + indent(state); + return "qualifier"; + } else if (stream.peek() === "#") { + indent(state); + return "tag"; + } + } + + if (ch === "#") { + stream.next(); + // ID selectors + if (stream.match(/^[\w-]+/)) { + indent(state); + return "builtin"; + } + if (stream.peek() === "#") { + indent(state); + return "tag"; + } + } + + // Variables + if (ch === "$") { + stream.next(); + stream.eatWhile(/[\w-]/); + return "variable-2"; + } + + // Numbers + if (stream.match(/^-?[0-9\.]+/)) + return "number"; + + // Units + if (stream.match(/^(px|em|in)\b/)) + return "unit"; + + if (stream.match(keywordsRegexp)) + return "keyword"; + + if (stream.match(/^url/) && stream.peek() === "(") { + state.tokenizer = urlTokens; + return "atom"; + } + + if (ch === "=") { + // Match shortcut mixin definition + if (stream.match(/^=[\w-]+/)) { + indent(state); + return "meta"; + } + } + + if (ch === "+") { + // Match shortcut mixin definition + if (stream.match(/^\+[\w-]+/)){ + return "variable-3"; + } + } + + if(ch === "@"){ + if(stream.match(/@extend/)){ + if(!stream.match(/\s*[\w]/)) + dedent(state); + } + } + + + // Indent Directives + if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) { + indent(state); + return "def"; + } + + // Other Directives + if (ch === "@") { + stream.next(); + stream.eatWhile(/[\w-]/); + return "def"; + } + + if (stream.eatWhile(/[\w-]/)){ + if(stream.match(/ *: *[\w-\+\$#!\("']/,false)){ + word = stream.current().toLowerCase(); + var prop = state.prevProp + "-" + word; + if (propertyKeywords.hasOwnProperty(prop)) { + return "property"; + } else if (propertyKeywords.hasOwnProperty(word)) { + state.prevProp = word; + return "property"; + } else if (fontProperties.hasOwnProperty(word)) { + return "property"; + } + return "tag"; + } + else if(stream.match(/ *:/,false)){ + indent(state); + state.cursorHalf = 1; + state.prevProp = stream.current().toLowerCase(); + return "property"; + } + else if(stream.match(/ *,/,false)){ + return "tag"; + } + else{ + indent(state); + return "tag"; + } + } + + if(ch === ":"){ + if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element + return "variable-3"; + } + stream.next(); + state.cursorHalf=1; + return "operator"; + } + + } // cursorHalf===0 ends here + else{ + + if (ch === "#") { + stream.next(); + // Hex numbers + if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){ + if (isEndLine(stream)) { + state.cursorHalf = 0; + } + return "number"; + } + } + + // Numbers + if (stream.match(/^-?[0-9\.]+/)){ + if (isEndLine(stream)) { + state.cursorHalf = 0; + } + return "number"; + } + + // Units + if (stream.match(/^(px|em|in)\b/)){ + if (isEndLine(stream)) { + state.cursorHalf = 0; + } + return "unit"; + } + + if (stream.match(keywordsRegexp)){ + if (isEndLine(stream)) { + state.cursorHalf = 0; + } + return "keyword"; + } + + if (stream.match(/^url/) && stream.peek() === "(") { + state.tokenizer = urlTokens; + if (isEndLine(stream)) { + state.cursorHalf = 0; + } + return "atom"; + } + + // Variables + if (ch === "$") { + stream.next(); + stream.eatWhile(/[\w-]/); + if (isEndLine(stream)) { + state.cursorHalf = 0; + } + return "variable-2"; + } + + // bang character for !important, !default, etc. + if (ch === "!") { + stream.next(); + state.cursorHalf = 0; + return stream.match(/^[\w]+/) ? "keyword": "operator"; + } + + if (stream.match(opRegexp)){ + if (isEndLine(stream)) { + state.cursorHalf = 0; + } + return "operator"; + } + + // attributes + if (stream.eatWhile(/[\w-]/)) { + if (isEndLine(stream)) { + state.cursorHalf = 0; + } + word = stream.current().toLowerCase(); + if (valueKeywords.hasOwnProperty(word)) { + return "atom"; + } else if (colorKeywords.hasOwnProperty(word)) { + return "keyword"; + } else if (propertyKeywords.hasOwnProperty(word)) { + state.prevProp = stream.current().toLowerCase(); + return "property"; + } else { + return "tag"; + } + } + + //stream.eatSpace(); + if (isEndLine(stream)) { + state.cursorHalf = 0; + return null; + } + + } // else ends here + + if (stream.match(opRegexp)) + return "operator"; + + // If we haven't returned by now, we move 1 character + // and return an error + stream.next(); + return null; + } + + function tokenLexer(stream, state) { + if (stream.sol()) state.indentCount = 0; + var style = state.tokenizer(stream, state); + var current = stream.current(); + + if (current === "@return" || current === "}"){ + dedent(state); + } + + if (style !== null) { + var startOfToken = stream.pos - current.length; + + var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount); + + var newScopes = []; + + for (var i = 0; i < state.scopes.length; i++) { + var scope = state.scopes[i]; + + if (scope.offset <= withCurrentIndent) + newScopes.push(scope); + } + + state.scopes = newScopes; + } + + + return style; + } + + return { + startState: function() { + return { + tokenizer: tokenBase, + scopes: [{offset: 0, type: "sass"}], + indentCount: 0, + cursorHalf: 0, // cursor half tells us if cursor lies after (1) + // or before (0) colon (well... more or less) + definedVars: [], + definedMixins: [] + }; + }, + token: function(stream, state) { + var style = tokenLexer(stream, state); + + state.lastToken = { style: style, content: stream.current() }; + + return style; + }, + + indent: function(state) { + return state.scopes[0].offset; + } + }; +}, "css"); + +CodeMirror.defineMIME("text/x-sass", "sass"); + +}); diff --git a/global/codemirror/mode/sass/test.js b/global/codemirror/mode/sass/test.js new file mode 100644 index 00000000..6b2f5932 --- /dev/null +++ b/global/codemirror/mode/sass/test.js @@ -0,0 +1,122 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "sass"); + // Since Sass has an indent-based syntax, is almost impossible to test correctly the indentation in all cases. + // So disable it for tests. + mode.indent = undefined; + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("comment", + "[comment // this is a comment]", + "[comment also this is a comment]") + + MT("comment_multiline", + "[comment /* this is a comment]", + "[comment also this is a comment]") + + MT("variable", + "[variable-2 $page-width][operator :] [number 800][unit px]") + + MT("global_attributes", + "[tag body]", + " [property font][operator :]", + " [property family][operator :] [atom sans-serif]", + " [property size][operator :] [number 30][unit em]", + " [property weight][operator :] [atom bold]") + + MT("scoped_styles", + "[builtin #contents]", + " [property width][operator :] [variable-2 $page-width]", + " [builtin #sidebar]", + " [property float][operator :] [atom right]", + " [property width][operator :] [variable-2 $sidebar-width]", + " [builtin #main]", + " [property width][operator :] [variable-2 $page-width] [operator -] [variable-2 $sidebar-width]", + " [property background][operator :] [variable-2 $primary-color]", + " [tag h2]", + " [property color][operator :] [keyword blue]") + + // Sass allows to write the colon as first char instead of a "separator". + // :color red + // Not supported + // MT("property_syntax", + // "[qualifier .foo]", + // " [operator :][property color] [keyword red]") + + MT("import", + "[def @import] [string \"sass/variables\"]", + // Probably it should parsed as above: as a string even without the " or ' + // "[def @import] [string sass/baz]" + "[def @import] [tag sass][operator /][tag baz]") + + MT("def", + "[def @if] [variable-2 $foo] [def @else]") + + MT("tag_on_more_lines", + "[tag td],", + "[tag th]", + " [property font-family][operator :] [string \"Arial\"], [atom serif]") + + MT("important", + "[qualifier .foo]", + " [property text-decoration][operator :] [atom none] [keyword !important]", + "[tag h1]", + " [property font-size][operator :] [number 2.5][unit em]") + + MT("selector", + // SCSS doesn't highlight the : + // "[tag h1]:[variable-3 before],", + // "[tag h2]:[variable-3 before]", + "[tag h1][variable-3 :before],", + "[tag h2][variable-3 :before]", + " [property content][operator :] [string \"::\"]") + + MT("definition_mixin_equal", + "[variable-2 $defined-bs-type][operator :] [atom border-box] [keyword !default]", + "[meta =bs][operator (][variable-2 $bs-type][operator :] [variable-2 $defined-bs-type][operator )]", + " [meta -webkit-][property box-sizing][operator :] [variable-2 $bs-type]", + " [property box-sizing][operator :] [variable-2 $bs-type]") + + MT("definition_mixin_with_space", + "[variable-2 $defined-bs-type][operator :] [atom border-box] [keyword !default]", + "[def @mixin] [tag bs][operator (][variable-2 $bs-type][operator :] [variable-2 $defined-bs-type][operator )] ", + " [meta -moz-][property box-sizing][operator :] [variable-2 $bs-type]", + " [property box-sizing][operator :] [variable-2 $bs-type]") + + MT("numbers_start_dot_include_plus", + // The % is not highlighted correctly + // "[meta =button-links][operator (][variable-2 $button-base][operator :] [atom darken][operator (][variable-2 $color11], [number 10][unit %][operator )][operator )]", + "[meta =button-links][operator (][variable-2 $button-base][operator :] [atom darken][operator (][variable-2 $color11], [number 10][operator %))]", + " [property padding][operator :] [number .3][unit em] [number .6][unit em]", + " [variable-3 +border-radius][operator (][number 8][unit px][operator )]", + " [property background-color][operator :] [variable-2 $button-base]") + + MT("include", + "[qualifier .bar]", + " [def @include] [tag border-radius][operator (][number 8][unit px][operator )]") + + MT("reference_parent", + "[qualifier .col]", + " [property clear][operator :] [atom both]", + // SCSS doesn't highlight the : + // " &:[variable-3 after]", + " &[variable-3 :after]", + " [property content][operator :] [string '']", + " [property clear][operator :] [atom both]") + + MT("reference_parent_with_spaces", + "[tag section]", + " [property border-left][operator :] [number 20][unit px] [atom transparent] [atom solid] ", + " &[qualifier .section3]", + " [qualifier .title]", + " [property color][operator :] [keyword white] ", + " [qualifier .vermas]", + " [property display][operator :] [atom none]") + + MT("font_face", + "[def @font-face]", + " [property font-family][operator :] [string 'icomoon']", + " [property src][operator :] [atom url][operator (][string fonts/icomoon.ttf][operator )]") +})(); diff --git a/global/codemirror/mode/scheme/index.html b/global/codemirror/mode/scheme/index.html new file mode 100644 index 00000000..04d5c6a2 --- /dev/null +++ b/global/codemirror/mode/scheme/index.html @@ -0,0 +1,77 @@ + + +CodeMirror: Scheme mode + + + + + + + + + +
+

Scheme mode

+
+ + +

MIME types defined: text/x-scheme.

+ +
diff --git a/global/codemirror/mode/scheme/scheme.js b/global/codemirror/mode/scheme/scheme.js new file mode 100644 index 00000000..1d8f7d17 --- /dev/null +++ b/global/codemirror/mode/scheme/scheme.js @@ -0,0 +1,249 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/** + * Author: Koh Zi Han, based on implementation by Koh Zi Chun + */ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("scheme", function () { + var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", + ATOM = "atom", NUMBER = "number", BRACKET = "bracket"; + var INDENT_WORD_SKIP = 2; + + function makeKeywords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + var keywords = makeKeywords("λ case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"); + var indentKeys = makeKeywords("define let letrec let* lambda"); + + function stateStack(indent, type, prev) { // represents a state stack object + this.indent = indent; + this.type = type; + this.prev = prev; + } + + function pushStack(state, indent, type) { + state.indentStack = new stateStack(indent, type, state.indentStack); + } + + function popStack(state) { + state.indentStack = state.indentStack.prev; + } + + var binaryMatcher = new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i); + var octalMatcher = new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i); + var hexMatcher = new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i); + var decimalMatcher = new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i); + + function isBinaryNumber (stream) { + return stream.match(binaryMatcher); + } + + function isOctalNumber (stream) { + return stream.match(octalMatcher); + } + + function isDecimalNumber (stream, backup) { + if (backup === true) { + stream.backUp(1); + } + return stream.match(decimalMatcher); + } + + function isHexNumber (stream) { + return stream.match(hexMatcher); + } + + return { + startState: function () { + return { + indentStack: null, + indentation: 0, + mode: false, + sExprComment: false + }; + }, + + token: function (stream, state) { + if (state.indentStack == null && stream.sol()) { + // update indentation, but only if indentStack is empty + state.indentation = stream.indentation(); + } + + // skip spaces + if (stream.eatSpace()) { + return null; + } + var returnType = null; + + switch(state.mode){ + case "string": // multi-line string parsing mode + var next, escaped = false; + while ((next = stream.next()) != null) { + if (next == "\"" && !escaped) { + + state.mode = false; + break; + } + escaped = !escaped && next == "\\"; + } + returnType = STRING; // continue on in scheme-string mode + break; + case "comment": // comment parsing mode + var next, maybeEnd = false; + while ((next = stream.next()) != null) { + if (next == "#" && maybeEnd) { + + state.mode = false; + break; + } + maybeEnd = (next == "|"); + } + returnType = COMMENT; + break; + case "s-expr-comment": // s-expr commenting mode + state.mode = false; + if(stream.peek() == "(" || stream.peek() == "["){ + // actually start scheme s-expr commenting mode + state.sExprComment = 0; + }else{ + // if not we just comment the entire of the next token + stream.eatWhile(/[^/s]/); // eat non spaces + returnType = COMMENT; + break; + } + default: // default parsing mode + var ch = stream.next(); + + if (ch == "\"") { + state.mode = "string"; + returnType = STRING; + + } else if (ch == "'") { + returnType = ATOM; + } else if (ch == '#') { + if (stream.eat("|")) { // Multi-line comment + state.mode = "comment"; // toggle to comment mode + returnType = COMMENT; + } else if (stream.eat(/[tf]/i)) { // #t/#f (atom) + returnType = ATOM; + } else if (stream.eat(';')) { // S-Expr comment + state.mode = "s-expr-comment"; + returnType = COMMENT; + } else { + var numTest = null, hasExactness = false, hasRadix = true; + if (stream.eat(/[ei]/i)) { + hasExactness = true; + } else { + stream.backUp(1); // must be radix specifier + } + if (stream.match(/^#b/i)) { + numTest = isBinaryNumber; + } else if (stream.match(/^#o/i)) { + numTest = isOctalNumber; + } else if (stream.match(/^#x/i)) { + numTest = isHexNumber; + } else if (stream.match(/^#d/i)) { + numTest = isDecimalNumber; + } else if (stream.match(/^[-+0-9.]/, false)) { + hasRadix = false; + numTest = isDecimalNumber; + // re-consume the intial # if all matches failed + } else if (!hasExactness) { + stream.eat('#'); + } + if (numTest != null) { + if (hasRadix && !hasExactness) { + // consume optional exactness after radix + stream.match(/^#[ei]/i); + } + if (numTest(stream)) + returnType = NUMBER; + } + } + } else if (/^[-+0-9.]/.test(ch) && isDecimalNumber(stream, true)) { // match non-prefixed number, must be decimal + returnType = NUMBER; + } else if (ch == ";") { // comment + stream.skipToEnd(); // rest of the line is a comment + returnType = COMMENT; + } else if (ch == "(" || ch == "[") { + var keyWord = ''; var indentTemp = stream.column(), letter; + /** + Either + (indent-word .. + (non-indent-word .. + (;something else, bracket, etc. + */ + + while ((letter = stream.eat(/[^\s\(\[\;\)\]]/)) != null) { + keyWord += letter; + } + + if (keyWord.length > 0 && indentKeys.propertyIsEnumerable(keyWord)) { // indent-word + + pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); + } else { // non-indent word + // we continue eating the spaces + stream.eatSpace(); + if (stream.eol() || stream.peek() == ";") { + // nothing significant after + // we restart indentation 1 space after + pushStack(state, indentTemp + 1, ch); + } else { + pushStack(state, indentTemp + stream.current().length, ch); // else we match + } + } + stream.backUp(stream.current().length - 1); // undo all the eating + + if(typeof state.sExprComment == "number") state.sExprComment++; + + returnType = BRACKET; + } else if (ch == ")" || ch == "]") { + returnType = BRACKET; + if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : "[")) { + popStack(state); + + if(typeof state.sExprComment == "number"){ + if(--state.sExprComment == 0){ + returnType = COMMENT; // final closing bracket + state.sExprComment = false; // turn off s-expr commenting mode + } + } + } + } else { + stream.eatWhile(/[\w_\-!$%&*+\.\/:<=>?@\^~]/); + + if (keywords && keywords.propertyIsEnumerable(stream.current())) { + returnType = BUILTIN; + } else returnType = "variable"; + } + } + return (typeof state.sExprComment == "number") ? COMMENT : returnType; + }, + + indent: function (state) { + if (state.indentStack == null) return state.indentation; + return state.indentStack.indent; + }, + + closeBrackets: {pairs: "()[]{}\"\""}, + lineComment: ";;" + }; +}); + +CodeMirror.defineMIME("text/x-scheme", "scheme"); + +}); diff --git a/global/codemirror/mode/shell/index.html b/global/codemirror/mode/shell/index.html new file mode 100644 index 00000000..e42f4b5f --- /dev/null +++ b/global/codemirror/mode/shell/index.html @@ -0,0 +1,66 @@ + + +CodeMirror: Shell mode + + + + + + + + + + +
+

Shell mode

+ + + + + + +

MIME types defined: text/x-sh, application/x-sh.

+
diff --git a/global/codemirror/mode/shell/shell.js b/global/codemirror/mode/shell/shell.js new file mode 100644 index 00000000..9b8b90b3 --- /dev/null +++ b/global/codemirror/mode/shell/shell.js @@ -0,0 +1,142 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('shell', function() { + + var words = {}; + function define(style, string) { + var split = string.split(' '); + for(var i = 0; i < split.length; i++) { + words[split[i]] = style; + } + }; + + // Atoms + define('atom', 'true false'); + + // Keywords + define('keyword', 'if then do else elif while until for in esac fi fin ' + + 'fil done exit set unset export function'); + + // Commands + define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' + + 'curl cut diff echo find gawk gcc get git grep hg kill killall ln ls make ' + + 'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' + + 'shopt shred source sort sleep ssh start stop su sudo svn tee telnet top ' + + 'touch vi vim wall wc wget who write yes zsh'); + + function tokenBase(stream, state) { + if (stream.eatSpace()) return null; + + var sol = stream.sol(); + var ch = stream.next(); + + if (ch === '\\') { + stream.next(); + return null; + } + if (ch === '\'' || ch === '"' || ch === '`') { + state.tokens.unshift(tokenString(ch, ch === "`" ? "quote" : "string")); + return tokenize(stream, state); + } + if (ch === '#') { + if (sol && stream.eat('!')) { + stream.skipToEnd(); + return 'meta'; // 'comment'? + } + stream.skipToEnd(); + return 'comment'; + } + if (ch === '$') { + state.tokens.unshift(tokenDollar); + return tokenize(stream, state); + } + if (ch === '+' || ch === '=') { + return 'operator'; + } + if (ch === '-') { + stream.eat('-'); + stream.eatWhile(/\w/); + return 'attribute'; + } + if (/\d/.test(ch)) { + stream.eatWhile(/\d/); + if(stream.eol() || !/\w/.test(stream.peek())) { + return 'number'; + } + } + stream.eatWhile(/[\w-]/); + var cur = stream.current(); + if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; + return words.hasOwnProperty(cur) ? words[cur] : null; + } + + function tokenString(quote, style) { + var close = quote == "(" ? ")" : quote == "{" ? "}" : quote + return function(stream, state) { + var next, end = false, escaped = false; + while ((next = stream.next()) != null) { + if (next === close && !escaped) { + end = true; + break; + } + if (next === '$' && !escaped && quote !== "'") { + escaped = true; + stream.backUp(1); + state.tokens.unshift(tokenDollar); + break; + } + if (!escaped && next === quote && quote !== close) { + state.tokens.unshift(tokenString(quote, style)) + return tokenize(stream, state) + } + escaped = !escaped && next === '\\'; + } + if (end) state.tokens.shift(); + return style; + }; + }; + + var tokenDollar = function(stream, state) { + if (state.tokens.length > 1) stream.eat('$'); + var ch = stream.next() + if (/['"({]/.test(ch)) { + state.tokens[0] = tokenString(ch, ch == "(" ? "quote" : ch == "{" ? "def" : "string"); + return tokenize(stream, state); + } + if (!/\d/.test(ch)) stream.eatWhile(/\w/); + state.tokens.shift(); + return 'def'; + }; + + function tokenize(stream, state) { + return (state.tokens[0] || tokenBase) (stream, state); + }; + + return { + startState: function() {return {tokens:[]};}, + token: function(stream, state) { + return tokenize(stream, state); + }, + closeBrackets: "()[]{}''\"\"``", + lineComment: '#', + fold: "brace" + }; +}); + +CodeMirror.defineMIME('text/x-sh', 'shell'); +// Apache uses a slightly different Media Type for Shell scripts +// http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/conf/mime.types +CodeMirror.defineMIME('application/x-sh', 'shell'); + +}); diff --git a/global/codemirror/mode/shell/test.js b/global/codemirror/mode/shell/test.js new file mode 100644 index 00000000..86e344c5 --- /dev/null +++ b/global/codemirror/mode/shell/test.js @@ -0,0 +1,64 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({}, "shell"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("var", + "text [def $var] text"); + MT("varBraces", + "text[def ${var}]text"); + MT("varVar", + "text [def $a$b] text"); + MT("varBracesVarBraces", + "text[def ${a}${b}]text"); + + MT("singleQuotedVar", + "[string 'text $var text']"); + MT("singleQuotedVarBraces", + "[string 'text ${var} text']"); + + MT("doubleQuotedVar", + '[string "text ][def $var][string text"]'); + MT("doubleQuotedVarBraces", + '[string "text][def ${var}][string text"]'); + MT("doubleQuotedVarPunct", + '[string "text ][def $@][string text"]'); + MT("doubleQuotedVarVar", + '[string "][def $a$b][string "]'); + MT("doubleQuotedVarBracesVarBraces", + '[string "][def ${a}${b}][string "]'); + + MT("notAString", + "text\\'text"); + MT("escapes", + "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)"); + + MT("subshell", + "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`]."); + MT("doubleQuotedSubshell", + "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]"); + + MT("hashbang", + "[meta #!/bin/bash]"); + MT("comment", + "text [comment # Blurb]"); + + MT("numbers", + "[number 0] [number 1] [number 2]"); + MT("keywords", + "[keyword while] [atom true]; [keyword do]", + " [builtin sleep] [number 3]", + "[keyword done]"); + MT("options", + "[builtin ls] [attribute -l] [attribute --human-readable]"); + MT("operator", + "[def var][operator =]value"); + + MT("doubleParens", + "foo [quote $((bar))]") + + MT("nested braces", + "[builtin echo] [def ${A[${B}]]}]") +})(); diff --git a/global/codemirror/mode/sieve/index.html b/global/codemirror/mode/sieve/index.html new file mode 100644 index 00000000..6f029b62 --- /dev/null +++ b/global/codemirror/mode/sieve/index.html @@ -0,0 +1,93 @@ + + +CodeMirror: Sieve (RFC5228) mode + + + + + + + + + +
+

Sieve (RFC5228) mode

+
+ + +

MIME types defined: application/sieve.

+ +
diff --git a/global/codemirror/mode/sieve/sieve.js b/global/codemirror/mode/sieve/sieve.js new file mode 100644 index 00000000..0920d0ba --- /dev/null +++ b/global/codemirror/mode/sieve/sieve.js @@ -0,0 +1,193 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("sieve", function(config) { + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + var keywords = words("if elsif else stop require"); + var atoms = words("true false not"); + var indentUnit = config.indentUnit; + + function tokenBase(stream, state) { + + var ch = stream.next(); + if (ch == "/" && stream.eat("*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } + + if (ch === '#') { + stream.skipToEnd(); + return "comment"; + } + + if (ch == "\"") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + + if (ch == "(") { + state._indent.push("("); + // add virtual angel wings so that editor behaves... + // ...more sane incase of broken brackets + state._indent.push("{"); + return null; + } + + if (ch === "{") { + state._indent.push("{"); + return null; + } + + if (ch == ")") { + state._indent.pop(); + state._indent.pop(); + } + + if (ch === "}") { + state._indent.pop(); + return null; + } + + if (ch == ",") + return null; + + if (ch == ";") + return null; + + + if (/[{}\(\),;]/.test(ch)) + return null; + + // 1*DIGIT "K" / "M" / "G" + if (/\d/.test(ch)) { + stream.eatWhile(/[\d]/); + stream.eat(/[KkMmGg]/); + return "number"; + } + + // ":" (ALPHA / "_") *(ALPHA / DIGIT / "_") + if (ch == ":") { + stream.eatWhile(/[a-zA-Z_]/); + stream.eatWhile(/[a-zA-Z0-9_]/); + + return "operator"; + } + + stream.eatWhile(/\w/); + var cur = stream.current(); + + // "text:" *(SP / HTAB) (hash-comment / CRLF) + // *(multiline-literal / multiline-dotstart) + // "." CRLF + if ((cur == "text") && stream.eat(":")) + { + state.tokenize = tokenMultiLineString; + return "string"; + } + + if (keywords.propertyIsEnumerable(cur)) + return "keyword"; + + if (atoms.propertyIsEnumerable(cur)) + return "atom"; + + return null; + } + + function tokenMultiLineString(stream, state) + { + state._multiLineString = true; + // the first line is special it may contain a comment + if (!stream.sol()) { + stream.eatSpace(); + + if (stream.peek() == "#") { + stream.skipToEnd(); + return "comment"; + } + + stream.skipToEnd(); + return "string"; + } + + if ((stream.next() == ".") && (stream.eol())) + { + state._multiLineString = false; + state.tokenize = tokenBase; + } + + return "string"; + } + + function tokenCComment(stream, state) { + var maybeEnd = false, ch; + while ((ch = stream.next()) != null) { + if (maybeEnd && ch == "/") { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) + break; + escaped = !escaped && ch == "\\"; + } + if (!escaped) state.tokenize = tokenBase; + return "string"; + }; + } + + return { + startState: function(base) { + return {tokenize: tokenBase, + baseIndent: base || 0, + _indent: []}; + }, + + token: function(stream, state) { + if (stream.eatSpace()) + return null; + + return (state.tokenize || tokenBase)(stream, state); + }, + + indent: function(state, _textAfter) { + var length = state._indent.length; + if (_textAfter && (_textAfter[0] == "}")) + length--; + + if (length <0) + length = 0; + + return length * indentUnit; + }, + + electricChars: "}" + }; +}); + +CodeMirror.defineMIME("application/sieve", "sieve"); + +}); diff --git a/global/codemirror/mode/slim/index.html b/global/codemirror/mode/slim/index.html new file mode 100644 index 00000000..7fa4e50d --- /dev/null +++ b/global/codemirror/mode/slim/index.html @@ -0,0 +1,96 @@ + + +CodeMirror: SLIM mode + + + + + + + + + + + + + + + + + + + + +
+

SLIM mode

+
+ + +

MIME types defined: application/x-slim.

+ +

+ Parsing/Highlighting Tests: + normal, + verbose. +

+
diff --git a/global/codemirror/mode/slim/slim.js b/global/codemirror/mode/slim/slim.js new file mode 100644 index 00000000..991a97ef --- /dev/null +++ b/global/codemirror/mode/slim/slim.js @@ -0,0 +1,575 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + + CodeMirror.defineMode("slim", function(config) { + var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); + var rubyMode = CodeMirror.getMode(config, "ruby"); + var modes = { html: htmlMode, ruby: rubyMode }; + var embedded = { + ruby: "ruby", + javascript: "javascript", + css: "text/css", + sass: "text/x-sass", + scss: "text/x-scss", + less: "text/x-less", + styl: "text/x-styl", // no highlighting so far + coffee: "coffeescript", + asciidoc: "text/x-asciidoc", + markdown: "text/x-markdown", + textile: "text/x-textile", // no highlighting so far + creole: "text/x-creole", // no highlighting so far + wiki: "text/x-wiki", // no highlighting so far + mediawiki: "text/x-mediawiki", // no highlighting so far + rdoc: "text/x-rdoc", // no highlighting so far + builder: "text/x-builder", // no highlighting so far + nokogiri: "text/x-nokogiri", // no highlighting so far + erb: "application/x-erb" + }; + var embeddedRegexp = function(map){ + var arr = []; + for(var key in map) arr.push(key); + return new RegExp("^("+arr.join('|')+"):"); + }(embedded); + + var styleMap = { + "commentLine": "comment", + "slimSwitch": "operator special", + "slimTag": "tag", + "slimId": "attribute def", + "slimClass": "attribute qualifier", + "slimAttribute": "attribute", + "slimSubmode": "keyword special", + "closeAttributeTag": null, + "slimDoctype": null, + "lineContinuation": null + }; + var closing = { + "{": "}", + "[": "]", + "(": ")" + }; + + var nameStartChar = "_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; + var nameChar = nameStartChar + "\\-0-9\xB7\u0300-\u036F\u203F-\u2040"; + var nameRegexp = new RegExp("^[:"+nameStartChar+"](?::["+nameChar+"]|["+nameChar+"]*)"); + var attributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*(?=\\s*=)"); + var wrappedAttributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*"); + var classNameRegexp = /^\.-?[_a-zA-Z]+[\w\-]*/; + var classIdRegexp = /^#[_a-zA-Z]+[\w\-]*/; + + function backup(pos, tokenize, style) { + var restore = function(stream, state) { + state.tokenize = tokenize; + if (stream.pos < pos) { + stream.pos = pos; + return style; + } + return state.tokenize(stream, state); + }; + return function(stream, state) { + state.tokenize = restore; + return tokenize(stream, state); + }; + } + + function maybeBackup(stream, state, pat, offset, style) { + var cur = stream.current(); + var idx = cur.search(pat); + if (idx > -1) { + state.tokenize = backup(stream.pos, state.tokenize, style); + stream.backUp(cur.length - idx - offset); + } + return style; + } + + function continueLine(state, column) { + state.stack = { + parent: state.stack, + style: "continuation", + indented: column, + tokenize: state.line + }; + state.line = state.tokenize; + } + function finishContinue(state) { + if (state.line == state.tokenize) { + state.line = state.stack.tokenize; + state.stack = state.stack.parent; + } + } + + function lineContinuable(column, tokenize) { + return function(stream, state) { + finishContinue(state); + if (stream.match(/^\\$/)) { + continueLine(state, column); + return "lineContinuation"; + } + var style = tokenize(stream, state); + if (stream.eol() && stream.current().match(/(?:^|[^\\])(?:\\\\)*\\$/)) { + stream.backUp(1); + } + return style; + }; + } + function commaContinuable(column, tokenize) { + return function(stream, state) { + finishContinue(state); + var style = tokenize(stream, state); + if (stream.eol() && stream.current().match(/,$/)) { + continueLine(state, column); + } + return style; + }; + } + + function rubyInQuote(endQuote, tokenize) { + // TODO: add multi line support + return function(stream, state) { + var ch = stream.peek(); + if (ch == endQuote && state.rubyState.tokenize.length == 1) { + // step out of ruby context as it seems to complete processing all the braces + stream.next(); + state.tokenize = tokenize; + return "closeAttributeTag"; + } else { + return ruby(stream, state); + } + }; + } + function startRubySplat(tokenize) { + var rubyState; + var runSplat = function(stream, state) { + if (state.rubyState.tokenize.length == 1 && !state.rubyState.context.prev) { + stream.backUp(1); + if (stream.eatSpace()) { + state.rubyState = rubyState; + state.tokenize = tokenize; + return tokenize(stream, state); + } + stream.next(); + } + return ruby(stream, state); + }; + return function(stream, state) { + rubyState = state.rubyState; + state.rubyState = CodeMirror.startState(rubyMode); + state.tokenize = runSplat; + return ruby(stream, state); + }; + } + + function ruby(stream, state) { + return rubyMode.token(stream, state.rubyState); + } + + function htmlLine(stream, state) { + if (stream.match(/^\\$/)) { + return "lineContinuation"; + } + return html(stream, state); + } + function html(stream, state) { + if (stream.match(/^#\{/)) { + state.tokenize = rubyInQuote("}", state.tokenize); + return null; + } + return maybeBackup(stream, state, /[^\\]#\{/, 1, htmlMode.token(stream, state.htmlState)); + } + + function startHtmlLine(lastTokenize) { + return function(stream, state) { + var style = htmlLine(stream, state); + if (stream.eol()) state.tokenize = lastTokenize; + return style; + }; + } + + function startHtmlMode(stream, state, offset) { + state.stack = { + parent: state.stack, + style: "html", + indented: stream.column() + offset, // pipe + space + tokenize: state.line + }; + state.line = state.tokenize = html; + return null; + } + + function comment(stream, state) { + stream.skipToEnd(); + return state.stack.style; + } + + function commentMode(stream, state) { + state.stack = { + parent: state.stack, + style: "comment", + indented: state.indented + 1, + tokenize: state.line + }; + state.line = comment; + return comment(stream, state); + } + + function attributeWrapper(stream, state) { + if (stream.eat(state.stack.endQuote)) { + state.line = state.stack.line; + state.tokenize = state.stack.tokenize; + state.stack = state.stack.parent; + return null; + } + if (stream.match(wrappedAttributeNameRegexp)) { + state.tokenize = attributeWrapperAssign; + return "slimAttribute"; + } + stream.next(); + return null; + } + function attributeWrapperAssign(stream, state) { + if (stream.match(/^==?/)) { + state.tokenize = attributeWrapperValue; + return null; + } + return attributeWrapper(stream, state); + } + function attributeWrapperValue(stream, state) { + var ch = stream.peek(); + if (ch == '"' || ch == "\'") { + state.tokenize = readQuoted(ch, "string", true, false, attributeWrapper); + stream.next(); + return state.tokenize(stream, state); + } + if (ch == '[') { + return startRubySplat(attributeWrapper)(stream, state); + } + if (stream.match(/^(true|false|nil)\b/)) { + state.tokenize = attributeWrapper; + return "keyword"; + } + return startRubySplat(attributeWrapper)(stream, state); + } + + function startAttributeWrapperMode(state, endQuote, tokenize) { + state.stack = { + parent: state.stack, + style: "wrapper", + indented: state.indented + 1, + tokenize: tokenize, + line: state.line, + endQuote: endQuote + }; + state.line = state.tokenize = attributeWrapper; + return null; + } + + function sub(stream, state) { + if (stream.match(/^#\{/)) { + state.tokenize = rubyInQuote("}", state.tokenize); + return null; + } + var subStream = new CodeMirror.StringStream(stream.string.slice(state.stack.indented), stream.tabSize); + subStream.pos = stream.pos - state.stack.indented; + subStream.start = stream.start - state.stack.indented; + subStream.lastColumnPos = stream.lastColumnPos - state.stack.indented; + subStream.lastColumnValue = stream.lastColumnValue - state.stack.indented; + var style = state.subMode.token(subStream, state.subState); + stream.pos = subStream.pos + state.stack.indented; + return style; + } + function firstSub(stream, state) { + state.stack.indented = stream.column(); + state.line = state.tokenize = sub; + return state.tokenize(stream, state); + } + + function createMode(mode) { + var query = embedded[mode]; + var spec = CodeMirror.mimeModes[query]; + if (spec) { + return CodeMirror.getMode(config, spec); + } + var factory = CodeMirror.modes[query]; + if (factory) { + return factory(config, {name: query}); + } + return CodeMirror.getMode(config, "null"); + } + + function getMode(mode) { + if (!modes.hasOwnProperty(mode)) { + return modes[mode] = createMode(mode); + } + return modes[mode]; + } + + function startSubMode(mode, state) { + var subMode = getMode(mode); + var subState = CodeMirror.startState(subMode); + + state.subMode = subMode; + state.subState = subState; + + state.stack = { + parent: state.stack, + style: "sub", + indented: state.indented + 1, + tokenize: state.line + }; + state.line = state.tokenize = firstSub; + return "slimSubmode"; + } + + function doctypeLine(stream, _state) { + stream.skipToEnd(); + return "slimDoctype"; + } + + function startLine(stream, state) { + var ch = stream.peek(); + if (ch == '<') { + return (state.tokenize = startHtmlLine(state.tokenize))(stream, state); + } + if (stream.match(/^[|']/)) { + return startHtmlMode(stream, state, 1); + } + if (stream.match(/^\/(!|\[\w+])?/)) { + return commentMode(stream, state); + } + if (stream.match(/^(-|==?[<>]?)/)) { + state.tokenize = lineContinuable(stream.column(), commaContinuable(stream.column(), ruby)); + return "slimSwitch"; + } + if (stream.match(/^doctype\b/)) { + state.tokenize = doctypeLine; + return "keyword"; + } + + var m = stream.match(embeddedRegexp); + if (m) { + return startSubMode(m[1], state); + } + + return slimTag(stream, state); + } + + function slim(stream, state) { + if (state.startOfLine) { + return startLine(stream, state); + } + return slimTag(stream, state); + } + + function slimTag(stream, state) { + if (stream.eat('*')) { + state.tokenize = startRubySplat(slimTagExtras); + return null; + } + if (stream.match(nameRegexp)) { + state.tokenize = slimTagExtras; + return "slimTag"; + } + return slimClass(stream, state); + } + function slimTagExtras(stream, state) { + if (stream.match(/^(<>?|> state.indented && state.last != "slimSubmode") { + state.line = state.tokenize = state.stack.tokenize; + state.stack = state.stack.parent; + state.subMode = null; + state.subState = null; + } + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + state.startOfLine = false; + if (style) state.last = style; + return styleMap.hasOwnProperty(style) ? styleMap[style] : style; + }, + + blankLine: function(state) { + if (state.subMode && state.subMode.blankLine) { + return state.subMode.blankLine(state.subState); + } + }, + + innerMode: function(state) { + if (state.subMode) return {state: state.subState, mode: state.subMode}; + return {state: state, mode: mode}; + } + + //indent: function(state) { + // return state.indented; + //} + }; + return mode; + }, "htmlmixed", "ruby"); + + CodeMirror.defineMIME("text/x-slim", "slim"); + CodeMirror.defineMIME("application/x-slim", "slim"); +}); diff --git a/global/codemirror/mode/slim/test.js b/global/codemirror/mode/slim/test.js new file mode 100644 index 00000000..be4ddacb --- /dev/null +++ b/global/codemirror/mode/slim/test.js @@ -0,0 +1,96 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh + +(function() { + var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "slim"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + // Requires at least one media query + MT("elementName", + "[tag h1] Hey There"); + + MT("oneElementPerLine", + "[tag h1] Hey There .h2"); + + MT("idShortcut", + "[attribute&def #test] Hey There"); + + MT("tagWithIdShortcuts", + "[tag h1][attribute&def #test] Hey There"); + + MT("classShortcut", + "[attribute&qualifier .hello] Hey There"); + + MT("tagWithIdAndClassShortcuts", + "[tag h1][attribute&def #test][attribute&qualifier .hello] Hey There"); + + MT("docType", + "[keyword doctype] xml"); + + MT("comment", + "[comment / Hello WORLD]"); + + MT("notComment", + "[tag h1] This is not a / comment "); + + MT("attributes", + "[tag a]([attribute title]=[string \"test\"]) [attribute href]=[string \"link\"]}"); + + MT("multiLineAttributes", + "[tag a]([attribute title]=[string \"test\"]", + " ) [attribute href]=[string \"link\"]}"); + + MT("htmlCode", + "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket ]"); + + MT("rubyBlock", + "[operator&special =][variable-2 @item]"); + + MT("selectorRubyBlock", + "[tag a][attribute&qualifier .test][operator&special =] [variable-2 @item]"); + + MT("nestedRubyBlock", + "[tag a]", + " [operator&special =][variable puts] [string \"test\"]"); + + MT("multilinePlaintext", + "[tag p]", + " | Hello,", + " World"); + + MT("multilineRuby", + "[tag p]", + " [comment /# this is a comment]", + " [comment and this is a comment too]", + " | Date/Time", + " [operator&special -] [variable now] [operator =] [tag DateTime][operator .][property now]", + " [tag strong][operator&special =] [variable now]", + " [operator&special -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", + " [operator&special =][string \"Happy\"]", + " [operator&special =][string \"Belated\"]", + " [operator&special =][string \"Birthday\"]"); + + MT("multilineComment", + "[comment /]", + " [comment Multiline]", + " [comment Comment]"); + + MT("hamlAfterRubyTag", + "[attribute&qualifier .block]", + " [tag strong][operator&special =] [variable now]", + " [attribute&qualifier .test]", + " [operator&special =][variable now]", + " [attribute&qualifier .right]"); + + MT("stretchedRuby", + "[operator&special =] [variable puts] [string \"Hello\"],", + " [string \"World\"]"); + + MT("interpolationInHashAttribute", + "[tag div]{[attribute id] = [string \"]#{[variable test]}[string _]#{[variable ting]}[string \"]} test"); + + MT("interpolationInHTMLAttribute", + "[tag div]([attribute title]=[string \"]#{[variable test]}[string _]#{[variable ting]()}[string \"]) Test"); +})(); diff --git a/global/codemirror/mode/smalltalk/index.html b/global/codemirror/mode/smalltalk/index.html new file mode 100644 index 00000000..2155ebc2 --- /dev/null +++ b/global/codemirror/mode/smalltalk/index.html @@ -0,0 +1,68 @@ + + +CodeMirror: Smalltalk mode + + + + + + + + + + +
+

Smalltalk mode

+
+ + + +

Simple Smalltalk mode.

+ +

MIME types defined: text/x-stsrc.

+
diff --git a/global/codemirror/mode/smalltalk/smalltalk.js b/global/codemirror/mode/smalltalk/smalltalk.js new file mode 100644 index 00000000..bb510ba2 --- /dev/null +++ b/global/codemirror/mode/smalltalk/smalltalk.js @@ -0,0 +1,168 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('smalltalk', function(config) { + + var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/; + var keywords = /true|false|nil|self|super|thisContext/; + + var Context = function(tokenizer, parent) { + this.next = tokenizer; + this.parent = parent; + }; + + var Token = function(name, context, eos) { + this.name = name; + this.context = context; + this.eos = eos; + }; + + var State = function() { + this.context = new Context(next, null); + this.expectVariable = true; + this.indentation = 0; + this.userIndentationDelta = 0; + }; + + State.prototype.userIndent = function(indentation) { + this.userIndentationDelta = indentation > 0 ? (indentation / config.indentUnit - this.indentation) : 0; + }; + + var next = function(stream, context, state) { + var token = new Token(null, context, false); + var aChar = stream.next(); + + if (aChar === '"') { + token = nextComment(stream, new Context(nextComment, context)); + + } else if (aChar === '\'') { + token = nextString(stream, new Context(nextString, context)); + + } else if (aChar === '#') { + if (stream.peek() === '\'') { + stream.next(); + token = nextSymbol(stream, new Context(nextSymbol, context)); + } else { + if (stream.eatWhile(/[^\s.{}\[\]()]/)) + token.name = 'string-2'; + else + token.name = 'meta'; + } + + } else if (aChar === '$') { + if (stream.next() === '<') { + stream.eatWhile(/[^\s>]/); + stream.next(); + } + token.name = 'string-2'; + + } else if (aChar === '|' && state.expectVariable) { + token.context = new Context(nextTemporaries, context); + + } else if (/[\[\]{}()]/.test(aChar)) { + token.name = 'bracket'; + token.eos = /[\[{(]/.test(aChar); + + if (aChar === '[') { + state.indentation++; + } else if (aChar === ']') { + state.indentation = Math.max(0, state.indentation - 1); + } + + } else if (specialChars.test(aChar)) { + stream.eatWhile(specialChars); + token.name = 'operator'; + token.eos = aChar !== ';'; // ; cascaded message expression + + } else if (/\d/.test(aChar)) { + stream.eatWhile(/[\w\d]/); + token.name = 'number'; + + } else if (/[\w_]/.test(aChar)) { + stream.eatWhile(/[\w\d_]/); + token.name = state.expectVariable ? (keywords.test(stream.current()) ? 'keyword' : 'variable') : null; + + } else { + token.eos = state.expectVariable; + } + + return token; + }; + + var nextComment = function(stream, context) { + stream.eatWhile(/[^"]/); + return new Token('comment', stream.eat('"') ? context.parent : context, true); + }; + + var nextString = function(stream, context) { + stream.eatWhile(/[^']/); + return new Token('string', stream.eat('\'') ? context.parent : context, false); + }; + + var nextSymbol = function(stream, context) { + stream.eatWhile(/[^']/); + return new Token('string-2', stream.eat('\'') ? context.parent : context, false); + }; + + var nextTemporaries = function(stream, context) { + var token = new Token(null, context, false); + var aChar = stream.next(); + + if (aChar === '|') { + token.context = context.parent; + token.eos = true; + + } else { + stream.eatWhile(/[^|]/); + token.name = 'variable'; + } + + return token; + }; + + return { + startState: function() { + return new State; + }, + + token: function(stream, state) { + state.userIndent(stream.indentation()); + + if (stream.eatSpace()) { + return null; + } + + var token = state.context.next(stream, state.context, state); + state.context = token.context; + state.expectVariable = token.eos; + + return token.name; + }, + + blankLine: function(state) { + state.userIndent(0); + }, + + indent: function(state, textAfter) { + var i = state.context.next === next && textAfter && textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta; + return (state.indentation + i) * config.indentUnit; + }, + + electricChars: ']' + }; + +}); + +CodeMirror.defineMIME('text/x-stsrc', {name: 'smalltalk'}); + +}); diff --git a/global/codemirror/mode/smarty/index.html b/global/codemirror/mode/smarty/index.html new file mode 100644 index 00000000..b19c8f09 --- /dev/null +++ b/global/codemirror/mode/smarty/index.html @@ -0,0 +1,138 @@ + + +CodeMirror: Smarty mode + + + + + + + + + + +
+

Smarty mode

+
+ +

Mode for Smarty version 2 or 3, which allows for custom delimiter tags.

+ +

Several configuration parameters are supported:

+ +
    +
  • leftDelimiter and rightDelimiter, + which should be strings that determine where the Smarty syntax + starts and ends.
  • +
  • version, which should be 2 or 3.
  • +
  • baseMode, which can be a mode spec + like "text/html" to set a different background mode.
  • +
+ +

MIME types defined: text/x-smarty

+ +

Smarty 2, custom delimiters

+ +
+ +

Smarty 3

+ + + + + +
diff --git a/global/codemirror/mode/smarty/smarty.js b/global/codemirror/mode/smarty/smarty.js new file mode 100644 index 00000000..6e0fbed4 --- /dev/null +++ b/global/codemirror/mode/smarty/smarty.js @@ -0,0 +1,225 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/** + * Smarty 2 and 3 mode. + */ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("smarty", function(config, parserConf) { + var rightDelimiter = parserConf.rightDelimiter || "}"; + var leftDelimiter = parserConf.leftDelimiter || "{"; + var version = parserConf.version || 2; + var baseMode = CodeMirror.getMode(config, parserConf.baseMode || "null"); + + var keyFunctions = ["debug", "extends", "function", "include", "literal"]; + var regs = { + operatorChars: /[+\-*&%=<>!?]/, + validIdentifier: /[a-zA-Z0-9_]/, + stringChar: /['"]/ + }; + + var last; + function cont(style, lastType) { + last = lastType; + return style; + } + + function chain(stream, state, parser) { + state.tokenize = parser; + return parser(stream, state); + } + + // Smarty 3 allows { and } surrounded by whitespace to NOT slip into Smarty mode + function doesNotCount(stream, pos) { + if (pos == null) pos = stream.pos; + return version === 3 && leftDelimiter == "{" && + (pos == stream.string.length || /\s/.test(stream.string.charAt(pos))); + } + + function tokenTop(stream, state) { + var string = stream.string; + for (var scan = stream.pos;;) { + var nextMatch = string.indexOf(leftDelimiter, scan); + scan = nextMatch + leftDelimiter.length; + if (nextMatch == -1 || !doesNotCount(stream, nextMatch + leftDelimiter.length)) break; + } + if (nextMatch == stream.pos) { + stream.match(leftDelimiter); + if (stream.eat("*")) { + return chain(stream, state, tokenBlock("comment", "*" + rightDelimiter)); + } else { + state.depth++; + state.tokenize = tokenSmarty; + last = "startTag"; + return "tag"; + } + } + + if (nextMatch > -1) stream.string = string.slice(0, nextMatch); + var token = baseMode.token(stream, state.base); + if (nextMatch > -1) stream.string = string; + return token; + } + + // parsing Smarty content + function tokenSmarty(stream, state) { + if (stream.match(rightDelimiter, true)) { + if (version === 3) { + state.depth--; + if (state.depth <= 0) { + state.tokenize = tokenTop; + } + } else { + state.tokenize = tokenTop; + } + return cont("tag", null); + } + + if (stream.match(leftDelimiter, true)) { + state.depth++; + return cont("tag", "startTag"); + } + + var ch = stream.next(); + if (ch == "$") { + stream.eatWhile(regs.validIdentifier); + return cont("variable-2", "variable"); + } else if (ch == "|") { + return cont("operator", "pipe"); + } else if (ch == ".") { + return cont("operator", "property"); + } else if (regs.stringChar.test(ch)) { + state.tokenize = tokenAttribute(ch); + return cont("string", "string"); + } else if (regs.operatorChars.test(ch)) { + stream.eatWhile(regs.operatorChars); + return cont("operator", "operator"); + } else if (ch == "[" || ch == "]") { + return cont("bracket", "bracket"); + } else if (ch == "(" || ch == ")") { + return cont("bracket", "operator"); + } else if (/\d/.test(ch)) { + stream.eatWhile(/\d/); + return cont("number", "number"); + } else { + + if (state.last == "variable") { + if (ch == "@") { + stream.eatWhile(regs.validIdentifier); + return cont("property", "property"); + } else if (ch == "|") { + stream.eatWhile(regs.validIdentifier); + return cont("qualifier", "modifier"); + } + } else if (state.last == "pipe") { + stream.eatWhile(regs.validIdentifier); + return cont("qualifier", "modifier"); + } else if (state.last == "whitespace") { + stream.eatWhile(regs.validIdentifier); + return cont("attribute", "modifier"); + } if (state.last == "property") { + stream.eatWhile(regs.validIdentifier); + return cont("property", null); + } else if (/\s/.test(ch)) { + last = "whitespace"; + return null; + } + + var str = ""; + if (ch != "/") { + str += ch; + } + var c = null; + while (c = stream.eat(regs.validIdentifier)) { + str += c; + } + for (var i=0, j=keyFunctions.length; i + +CodeMirror: Solr mode + + + + + + + + + +
+

Solr mode

+ +
+ +
+ + + +

MIME types defined: text/x-solr.

+
diff --git a/global/codemirror/mode/solr/solr.js b/global/codemirror/mode/solr/solr.js new file mode 100644 index 00000000..dc8b8250 --- /dev/null +++ b/global/codemirror/mode/solr/solr.js @@ -0,0 +1,104 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("solr", function() { + "use strict"; + + var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\"\\]/; + var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/; + var isOperatorString = /^(OR|AND|NOT|TO)$/i; + + function isNumber(word) { + return parseFloat(word).toString() === word; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) break; + escaped = !escaped && next == "\\"; + } + + if (!escaped) state.tokenize = tokenBase; + return "string"; + }; + } + + function tokenOperator(operator) { + return function(stream, state) { + var style = "operator"; + if (operator == "+") + style += " positive"; + else if (operator == "-") + style += " negative"; + else if (operator == "|") + stream.eat(/\|/); + else if (operator == "&") + stream.eat(/\&/); + else if (operator == "^") + style += " boost"; + + state.tokenize = tokenBase; + return style; + }; + } + + function tokenWord(ch) { + return function(stream, state) { + var word = ch; + while ((ch = stream.peek()) && ch.match(isStringChar) != null) { + word += stream.next(); + } + + state.tokenize = tokenBase; + if (isOperatorString.test(word)) + return "operator"; + else if (isNumber(word)) + return "number"; + else if (stream.peek() == ":") + return "field"; + else + return "string"; + }; + } + + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"') + state.tokenize = tokenString(ch); + else if (isOperatorChar.test(ch)) + state.tokenize = tokenOperator(ch); + else if (isStringChar.test(ch)) + state.tokenize = tokenWord(ch); + + return (state.tokenize != tokenBase) ? state.tokenize(stream, state) : null; + } + + return { + startState: function() { + return { + tokenize: tokenBase + }; + }, + + token: function(stream, state) { + if (stream.eatSpace()) return null; + return state.tokenize(stream, state); + } + }; +}); + +CodeMirror.defineMIME("text/x-solr", "solr"); + +}); diff --git a/global/codemirror/mode/soy/index.html b/global/codemirror/mode/soy/index.html new file mode 100644 index 00000000..f0216f09 --- /dev/null +++ b/global/codemirror/mode/soy/index.html @@ -0,0 +1,68 @@ + + +CodeMirror: Soy (Closure Template) mode + + + + + + + + + + + + + + +
+

Soy (Closure Template) mode

+
+ + + +

A mode for Closure Templates (Soy).

+

MIME type defined: text/x-soy.

+
diff --git a/global/codemirror/mode/soy/soy.js b/global/codemirror/mode/soy/soy.js new file mode 100644 index 00000000..0e244570 --- /dev/null +++ b/global/codemirror/mode/soy/soy.js @@ -0,0 +1,356 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../htmlmixed/htmlmixed"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + var indentingTags = ["template", "literal", "msg", "fallbackmsg", "let", "if", "elseif", + "else", "switch", "case", "default", "foreach", "ifempty", "for", + "call", "param", "deltemplate", "delcall", "log"]; + + CodeMirror.defineMode("soy", function(config) { + var textMode = CodeMirror.getMode(config, "text/plain"); + var modes = { + html: CodeMirror.getMode(config, {name: "text/html", multilineTagIndentFactor: 2, multilineTagIndentPastTag: false}), + attributes: textMode, + text: textMode, + uri: textMode, + css: CodeMirror.getMode(config, "text/css"), + js: CodeMirror.getMode(config, {name: "text/javascript", statementIndent: 2 * config.indentUnit}) + }; + + function last(array) { + return array[array.length - 1]; + } + + function tokenUntil(stream, state, untilRegExp) { + if (stream.sol()) { + for (var indent = 0; indent < state.indent; indent++) { + if (!stream.eat(/\s/)) break; + } + if (indent) return null; + } + var oldString = stream.string; + var match = untilRegExp.exec(oldString.substr(stream.pos)); + if (match) { + // We don't use backUp because it backs up just the position, not the state. + // This uses an undocumented API. + stream.string = oldString.substr(0, stream.pos + match.index); + } + var result = stream.hideFirstChars(state.indent, function() { + var localState = last(state.localStates); + return localState.mode.token(stream, localState.state); + }); + stream.string = oldString; + return result; + } + + function contains(list, element) { + while (list) { + if (list.element === element) return true; + list = list.next; + } + return false; + } + + function prepend(list, element) { + return { + element: element, + next: list + }; + } + + // Reference a variable `name` in `list`. + // Let `loose` be truthy to ignore missing identifiers. + function ref(list, name, loose) { + return contains(list, name) ? "variable-2" : (loose ? "variable" : "variable-2 error"); + } + + function popscope(state) { + if (state.scopes) { + state.variables = state.scopes.element; + state.scopes = state.scopes.next; + } + } + + return { + startState: function() { + return { + kind: [], + kindTag: [], + soyState: [], + templates: null, + variables: prepend(null, 'ij'), + scopes: null, + indent: 0, + quoteKind: null, + localStates: [{ + mode: modes.html, + state: CodeMirror.startState(modes.html) + }] + }; + }, + + copyState: function(state) { + return { + tag: state.tag, // Last seen Soy tag. + kind: state.kind.concat([]), // Values of kind="" attributes. + kindTag: state.kindTag.concat([]), // Opened tags with kind="" attributes. + soyState: state.soyState.concat([]), + templates: state.templates, + variables: state.variables, + scopes: state.scopes, + indent: state.indent, // Indentation of the following line. + quoteKind: state.quoteKind, + localStates: state.localStates.map(function(localState) { + return { + mode: localState.mode, + state: CodeMirror.copyState(localState.mode, localState.state) + }; + }) + }; + }, + + token: function(stream, state) { + var match; + + switch (last(state.soyState)) { + case "comment": + if (stream.match(/^.*?\*\//)) { + state.soyState.pop(); + } else { + stream.skipToEnd(); + } + if (!state.scopes) { + var paramRe = /@param\??\s+(\S+)/g; + var current = stream.current(); + for (var match; (match = paramRe.exec(current)); ) { + state.variables = prepend(state.variables, match[1]); + } + } + return "comment"; + + case "templ-def": + if (match = stream.match(/^\.?([\w]+(?!\.[\w]+)*)/)) { + state.templates = prepend(state.templates, match[1]); + state.scopes = prepend(state.scopes, state.variables); + state.soyState.pop(); + return "def"; + } + stream.next(); + return null; + + case "templ-ref": + if (match = stream.match(/^\.?([\w]+)/)) { + state.soyState.pop(); + // If the first character is '.', try to match against a local template name. + if (match[0][0] == '.') { + return ref(state.templates, match[1], true); + } + // Otherwise + return "variable"; + } + stream.next(); + return null; + + case "param-def": + if (match = stream.match(/^\w+/)) { + state.variables = prepend(state.variables, match[0]); + state.soyState.pop(); + state.soyState.push("param-type"); + return "def"; + } + stream.next(); + return null; + + case "param-type": + if (stream.peek() == "}") { + state.soyState.pop(); + return null; + } + if (stream.eatWhile(/^[\w]+/)) { + return "variable-3"; + } + stream.next(); + return null; + + case "var-def": + if (match = stream.match(/^\$([\w]+)/)) { + state.variables = prepend(state.variables, match[1]); + state.soyState.pop(); + return "def"; + } + stream.next(); + return null; + + case "tag": + if (stream.match(/^\/?}/)) { + if (state.tag == "/template" || state.tag == "/deltemplate") { + popscope(state); + state.variables = prepend(null, 'ij'); + state.indent = 0; + } else { + if (state.tag == "/for" || state.tag == "/foreach") { + popscope(state); + } + state.indent -= config.indentUnit * + (stream.current() == "/}" || indentingTags.indexOf(state.tag) == -1 ? 2 : 1); + } + state.soyState.pop(); + return "keyword"; + } else if (stream.match(/^([\w?]+)(?==)/)) { + if (stream.current() == "kind" && (match = stream.match(/^="([^"]+)/, false))) { + var kind = match[1]; + state.kind.push(kind); + state.kindTag.push(state.tag); + var mode = modes[kind] || modes.html; + var localState = last(state.localStates); + if (localState.mode.indent) { + state.indent += localState.mode.indent(localState.state, ""); + } + state.localStates.push({ + mode: mode, + state: CodeMirror.startState(mode) + }); + } + return "attribute"; + } else if (match = stream.match(/^["']/)) { + state.soyState.push("string"); + state.quoteKind = match; + return "string"; + } + if (match = stream.match(/^\$([\w]+)/)) { + return ref(state.variables, match[1]); + } + if (match = stream.match(/^\w+/)) { + return /^(?:as|and|or|not|in)$/.test(match[0]) ? "keyword" : null; + } + stream.next(); + return null; + + case "literal": + if (stream.match(/^(?=\{\/literal})/)) { + state.indent -= config.indentUnit; + state.soyState.pop(); + return this.token(stream, state); + } + return tokenUntil(stream, state, /\{\/literal}/); + + case "string": + var match = stream.match(/^.*?(["']|\\[\s\S])/); + if (!match) { + stream.skipToEnd(); + } else if (match[1] == state.quoteKind) { + state.quoteKind = null; + state.soyState.pop(); + } + return "string"; + } + + if (stream.match(/^\/\*/)) { + state.soyState.push("comment"); + if (!state.scopes) { + state.variables = prepend(null, 'ij'); + } + return "comment"; + } else if (stream.match(stream.sol() ? /^\s*\/\/.*/ : /^\s+\/\/.*/)) { + if (!state.scopes) { + state.variables = prepend(null, 'ij'); + } + return "comment"; + } else if (stream.match(/^\{literal}/)) { + state.indent += config.indentUnit; + state.soyState.push("literal"); + return "keyword"; + + // A tag-keyword must be followed by whitespace or a closing tag. + } else if (match = stream.match(/^\{([\/@\\]?\w+\??)(?=[\s\}])/)) { + if (match[1] != "/switch") + state.indent += (/^(\/|(else|elseif|ifempty|case|fallbackmsg|default)$)/.test(match[1]) && state.tag != "switch" ? 1 : 2) * config.indentUnit; + state.tag = match[1]; + if (state.tag == "/" + last(state.kindTag)) { + // We found the tag that opened the current kind="". + state.kind.pop(); + state.kindTag.pop(); + state.localStates.pop(); + var localState = last(state.localStates); + if (localState.mode.indent) { + state.indent -= localState.mode.indent(localState.state, ""); + } + } + state.soyState.push("tag"); + if (state.tag == "template" || state.tag == "deltemplate") { + state.soyState.push("templ-def"); + } else if (state.tag == "call" || state.tag == "delcall") { + state.soyState.push("templ-ref"); + } else if (state.tag == "let") { + state.soyState.push("var-def"); + } else if (state.tag == "for" || state.tag == "foreach") { + state.scopes = prepend(state.scopes, state.variables); + state.soyState.push("var-def"); + } else if (state.tag == "namespace") { + if (!state.scopes) { + state.variables = prepend(null, 'ij'); + } + } else if (state.tag.match(/^@(?:param\??|inject)/)) { + state.soyState.push("param-def"); + } + return "keyword"; + + // Not a tag-keyword; it's an implicit print tag. + } else if (stream.eat('{')) { + state.tag = "print"; + state.indent += 2 * config.indentUnit; + state.soyState.push("tag"); + return "keyword"; + } + + return tokenUntil(stream, state, /\{|\s+\/\/|\/\*/); + }, + + indent: function(state, textAfter) { + var indent = state.indent, top = last(state.soyState); + if (top == "comment") return CodeMirror.Pass; + + if (top == "literal") { + if (/^\{\/literal}/.test(textAfter)) indent -= config.indentUnit; + } else { + if (/^\s*\{\/(template|deltemplate)\b/.test(textAfter)) return 0; + if (/^\{(\/|(fallbackmsg|elseif|else|ifempty)\b)/.test(textAfter)) indent -= config.indentUnit; + if (state.tag != "switch" && /^\{(case|default)\b/.test(textAfter)) indent -= config.indentUnit; + if (/^\{\/switch\b/.test(textAfter)) indent -= config.indentUnit; + } + var localState = last(state.localStates); + if (indent && localState.mode.indent) { + indent += localState.mode.indent(localState.state, textAfter); + } + return indent; + }, + + innerMode: function(state) { + if (state.soyState.length && last(state.soyState) != "literal") return null; + else return last(state.localStates); + }, + + electricInput: /^\s*\{(\/|\/template|\/deltemplate|\/switch|fallbackmsg|elseif|else|case|default|ifempty|\/literal\})$/, + lineComment: "//", + blockCommentStart: "/*", + blockCommentEnd: "*/", + blockCommentContinue: " * ", + useInnerComments: false, + fold: "indent" + }; + }, "htmlmixed"); + + CodeMirror.registerHelper("hintWords", "soy", indentingTags.concat( + ["delpackage", "namespace", "alias", "print", "css", "debugger"])); + + CodeMirror.defineMIME("text/x-soy", "soy"); +}); diff --git a/global/codemirror/mode/soy/test.js b/global/codemirror/mode/soy/test.js new file mode 100644 index 00000000..7cd111f2 --- /dev/null +++ b/global/codemirror/mode/soy/test.js @@ -0,0 +1,114 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "soy"); + function MT(name) {test.mode(name, mode, Array.prototype.slice.call(arguments, 1));} + + // Test of small keywords and words containing them. + MT('keywords-test', + '[keyword {] [keyword as] worrying [keyword and] notorious [keyword as]', + ' the Fandor-alias assassin, [keyword or]', + ' Corcand cannot fit [keyword in] [keyword }]'); + + MT('let-test', + '[keyword {template] [def .name][keyword }]', + ' [keyword {let] [def $name]: [string "world"][keyword /}]', + ' [tag&bracket <][tag h1][tag&bracket >]', + ' Hello, [keyword {][variable-2 $name][keyword }]', + ' [tag&bracket ]', + '[keyword {/template}]', + ''); + + MT('param-type-test', + '[keyword {@param] [def a]: ' + + '[variable-3 list]<[[[variable-3 a]: [variable-3 int], ' + + '[variable-3 b]: [variable-3 map]<[variable-3 string], ' + + '[variable-3 bool]>]]>][keyword }]'); + + MT('undefined-var', + '[keyword {][variable-2&error $var]'); + + MT('param-scope-test', + '[keyword {template] [def .a][keyword }]', + ' [keyword {@param] [def x]: [variable-3 string][keyword }]', + ' [keyword {][variable-2 $x][keyword }]', + '[keyword {/template}]', + '', + '[keyword {template] [def .b][keyword }]', + ' [keyword {][variable-2&error $x][keyword }]', + '[keyword {/template}]', + ''); + + MT('if-variable-test', + '[keyword {if] [variable-2&error $showThing][keyword }]', + ' Yo!', + '[keyword {/if}]', + ''); + + MT('defined-if-variable-test', + '[keyword {template] [def .foo][keyword }]', + ' [keyword {@param?] [def showThing]: [variable-3 bool][keyword }]', + ' [keyword {if] [variable-2 $showThing][keyword }]', + ' Yo!', + ' [keyword {/if}]', + '[keyword {/template}]', + ''); + + MT('template-calls-test', + '[keyword {template] [def .foo][keyword }]', + ' Yo!', + '[keyword {/template}]', + '[keyword {call] [variable-2 .foo][keyword /}]', + '[keyword {call] [variable foo][keyword /}]', + '[keyword {call] [variable .bar][keyword /}]', + '[keyword {call] [variable bar][keyword /}]', + ''); + + MT('foreach-scope-test', + '[keyword {@param] [def bar]: [variable-3 string][keyword }]', + '[keyword {foreach] [def $foo] [keyword in] [variable-2&error $foos][keyword }]', + ' [keyword {][variable-2 $foo][keyword }]', + '[keyword {/foreach}]', + '[keyword {][variable-2&error $foo][keyword }]', + '[keyword {][variable-2 $bar][keyword }]'); + + MT('foreach-ifempty-indent-test', + '[keyword {foreach] [def $foo] [keyword in] [variable-2&error $foos][keyword }]', + ' something', + '[keyword {ifempty}]', + ' nothing', + '[keyword {/foreach}]', + ''); + + MT('nested-kind-test', + '[keyword {template] [def .foo] [attribute kind]=[string "html"][keyword }]', + ' [tag&bracket <][tag div][tag&bracket >]', + ' [keyword {call] [variable .bar][keyword }]', + ' [keyword {param] [attribute kind]=[string "js"][keyword }]', + ' [keyword var] [def bar] [operator =] [number 5];', + ' [keyword {/param}]', + ' [keyword {/call}]', + ' [tag&bracket ]', + '[keyword {/template}]', + ''); + + MT('tag-starting-with-function-call-is-not-a-keyword', + '[keyword {]index([variable-2&error $foo])[keyword }]', + '[keyword {css] [string "some-class"][keyword }]', + '[keyword {]css([string "some-class"])[keyword }]', + ''); + + MT('allow-missing-colon-in-@param', + '[keyword {template] [def .foo][keyword }]', + ' [keyword {@param] [def showThing] [variable-3 bool][keyword }]', + ' [keyword {if] [variable-2 $showThing][keyword }]', + ' Yo!', + ' [keyword {/if}]', + '[keyword {/template}]', + ''); + + MT('single-quote-strings', + '[keyword {][string "foo"] [string \'bar\'][keyword }]', + ''); +})(); diff --git a/global/codemirror/mode/sparql/index.html b/global/codemirror/mode/sparql/index.html new file mode 100644 index 00000000..84ef4d36 --- /dev/null +++ b/global/codemirror/mode/sparql/index.html @@ -0,0 +1,61 @@ + + +CodeMirror: SPARQL mode + + + + + + + + + + +
+

SPARQL mode

+
+ + +

MIME types defined: application/sparql-query.

+ +
diff --git a/global/codemirror/mode/sparql/sparql.js b/global/codemirror/mode/sparql/sparql.js new file mode 100644 index 00000000..095dcca6 --- /dev/null +++ b/global/codemirror/mode/sparql/sparql.js @@ -0,0 +1,180 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("sparql", function(config) { + var indentUnit = config.indentUnit; + var curPunc; + + function wordRegexp(words) { + return new RegExp("^(?:" + words.join("|") + ")$", "i"); + } + var ops = wordRegexp(["str", "lang", "langmatches", "datatype", "bound", "sameterm", "isiri", "isuri", + "iri", "uri", "bnode", "count", "sum", "min", "max", "avg", "sample", + "group_concat", "rand", "abs", "ceil", "floor", "round", "concat", "substr", "strlen", + "replace", "ucase", "lcase", "encode_for_uri", "contains", "strstarts", "strends", + "strbefore", "strafter", "year", "month", "day", "hours", "minutes", "seconds", + "timezone", "tz", "now", "uuid", "struuid", "md5", "sha1", "sha256", "sha384", + "sha512", "coalesce", "if", "strlang", "strdt", "isnumeric", "regex", "exists", + "isblank", "isliteral", "a", "bind"]); + var keywords = wordRegexp(["base", "prefix", "select", "distinct", "reduced", "construct", "describe", + "ask", "from", "named", "where", "order", "limit", "offset", "filter", "optional", + "graph", "by", "asc", "desc", "as", "having", "undef", "values", "group", + "minus", "in", "not", "service", "silent", "using", "insert", "delete", "union", + "true", "false", "with", + "data", "copy", "to", "move", "add", "create", "drop", "clear", "load"]); + var operatorChars = /[*+\-<>=&|\^\/!\?]/; + + function tokenBase(stream, state) { + var ch = stream.next(); + curPunc = null; + if (ch == "$" || ch == "?") { + if(ch == "?" && stream.match(/\s/, false)){ + return "operator"; + } + stream.match(/^[\w\d]*/); + return "variable-2"; + } + else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { + stream.match(/^[^\s\u00a0>]*>?/); + return "atom"; + } + else if (ch == "\"" || ch == "'") { + state.tokenize = tokenLiteral(ch); + return state.tokenize(stream, state); + } + else if (/[{}\(\),\.;\[\]]/.test(ch)) { + curPunc = ch; + return "bracket"; + } + else if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } + else if (operatorChars.test(ch)) { + stream.eatWhile(operatorChars); + return "operator"; + } + else if (ch == ":") { + stream.eatWhile(/[\w\d\._\-]/); + return "atom"; + } + else if (ch == "@") { + stream.eatWhile(/[a-z\d\-]/i); + return "meta"; + } + else { + stream.eatWhile(/[_\w\d]/); + if (stream.eat(":")) { + stream.eatWhile(/[\w\d_\-]/); + return "atom"; + } + var word = stream.current(); + if (ops.test(word)) + return "builtin"; + else if (keywords.test(word)) + return "keyword"; + else + return "variable"; + } + } + + function tokenLiteral(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) { + state.tokenize = tokenBase; + break; + } + escaped = !escaped && ch == "\\"; + } + return "string"; + }; + } + + function pushContext(state, type, col) { + state.context = {prev: state.context, indent: state.indent, col: col, type: type}; + } + function popContext(state) { + state.indent = state.context.indent; + state.context = state.context.prev; + } + + return { + startState: function() { + return {tokenize: tokenBase, + context: null, + indent: 0, + col: 0}; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (state.context && state.context.align == null) state.context.align = false; + state.indent = stream.indentation(); + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + + if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { + state.context.align = true; + } + + if (curPunc == "(") pushContext(state, ")", stream.column()); + else if (curPunc == "[") pushContext(state, "]", stream.column()); + else if (curPunc == "{") pushContext(state, "}", stream.column()); + else if (/[\]\}\)]/.test(curPunc)) { + while (state.context && state.context.type == "pattern") popContext(state); + if (state.context && curPunc == state.context.type) { + popContext(state); + if (curPunc == "}" && state.context && state.context.type == "pattern") + popContext(state); + } + } + else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); + else if (/atom|string|variable/.test(style) && state.context) { + if (/[\}\]]/.test(state.context.type)) + pushContext(state, "pattern", stream.column()); + else if (state.context.type == "pattern" && !state.context.align) { + state.context.align = true; + state.context.col = stream.column(); + } + } + + return style; + }, + + indent: function(state, textAfter) { + var firstChar = textAfter && textAfter.charAt(0); + var context = state.context; + if (/[\]\}]/.test(firstChar)) + while (context && context.type == "pattern") context = context.prev; + + var closing = context && firstChar == context.type; + if (!context) + return 0; + else if (context.type == "pattern") + return context.col; + else if (context.align) + return context.col + (closing ? 0 : 1); + else + return context.indent + (closing ? 0 : indentUnit); + }, + + lineComment: "#" + }; +}); + +CodeMirror.defineMIME("application/sparql-query", "sparql"); + +}); diff --git a/global/codemirror/mode/spreadsheet/index.html b/global/codemirror/mode/spreadsheet/index.html new file mode 100644 index 00000000..a52f76f0 --- /dev/null +++ b/global/codemirror/mode/spreadsheet/index.html @@ -0,0 +1,42 @@ + + +CodeMirror: Spreadsheet mode + + + + + + + + + + +
+

Spreadsheet mode

+
+ + + +

MIME types defined: text/x-spreadsheet.

+ +

The Spreadsheet Mode

+

Created by Robert Plummer

+
diff --git a/global/codemirror/mode/spreadsheet/spreadsheet.js b/global/codemirror/mode/spreadsheet/spreadsheet.js new file mode 100644 index 00000000..222f2976 --- /dev/null +++ b/global/codemirror/mode/spreadsheet/spreadsheet.js @@ -0,0 +1,112 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("spreadsheet", function () { + return { + startState: function () { + return { + stringType: null, + stack: [] + }; + }, + token: function (stream, state) { + if (!stream) return; + + //check for state changes + if (state.stack.length === 0) { + //strings + if ((stream.peek() == '"') || (stream.peek() == "'")) { + state.stringType = stream.peek(); + stream.next(); // Skip quote + state.stack.unshift("string"); + } + } + + //return state + //stack has + switch (state.stack[0]) { + case "string": + while (state.stack[0] === "string" && !stream.eol()) { + if (stream.peek() === state.stringType) { + stream.next(); // Skip quote + state.stack.shift(); // Clear flag + } else if (stream.peek() === "\\") { + stream.next(); + stream.next(); + } else { + stream.match(/^.[^\\\"\']*/); + } + } + return "string"; + + case "characterClass": + while (state.stack[0] === "characterClass" && !stream.eol()) { + if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) + state.stack.shift(); + } + return "operator"; + } + + var peek = stream.peek(); + + //no stack + switch (peek) { + case "[": + stream.next(); + state.stack.unshift("characterClass"); + return "bracket"; + case ":": + stream.next(); + return "operator"; + case "\\": + if (stream.match(/\\[a-z]+/)) return "string-2"; + else { + stream.next(); + return "atom"; + } + case ".": + case ",": + case ";": + case "*": + case "-": + case "+": + case "^": + case "<": + case "/": + case "=": + stream.next(); + return "atom"; + case "$": + stream.next(); + return "builtin"; + } + + if (stream.match(/\d+/)) { + if (stream.match(/^\w+/)) return "error"; + return "number"; + } else if (stream.match(/^[a-zA-Z_]\w*/)) { + if (stream.match(/(?=[\(.])/, false)) return "keyword"; + return "variable-2"; + } else if (["[", "]", "(", ")", "{", "}"].indexOf(peek) != -1) { + stream.next(); + return "bracket"; + } else if (!stream.eatSpace()) { + stream.next(); + } + return null; + } + }; + }); + + CodeMirror.defineMIME("text/x-spreadsheet", "spreadsheet"); +}); diff --git a/global/codemirror/mode/sql/index.html b/global/codemirror/mode/sql/index.html new file mode 100644 index 00000000..e12b289b --- /dev/null +++ b/global/codemirror/mode/sql/index.html @@ -0,0 +1,88 @@ + + +CodeMirror: SQL Mode for CodeMirror + + + + + + + + + + + + +
+

SQL Mode for CodeMirror

+
+ +
+

MIME types defined: + text/x-sql, + text/x-mysql, + text/x-mariadb, + text/x-cassandra, + text/x-plsql, + text/x-mssql, + text/x-hive, + text/x-pgsql, + text/x-gql, + text/x-gpsql. + text/x-esper. +

+ + +
diff --git a/global/codemirror/mode/sql/sql.js b/global/codemirror/mode/sql/sql.js new file mode 100644 index 00000000..da416f20 --- /dev/null +++ b/global/codemirror/mode/sql/sql.js @@ -0,0 +1,488 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("sql", function(config, parserConfig) { + "use strict"; + + var client = parserConfig.client || {}, + atoms = parserConfig.atoms || {"false": true, "true": true, "null": true}, + builtin = parserConfig.builtin || {}, + keywords = parserConfig.keywords || {}, + operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^]/, + support = parserConfig.support || {}, + hooks = parserConfig.hooks || {}, + dateSQL = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true}; + + function tokenBase(stream, state) { + var ch = stream.next(); + + // call hooks from the mime type + if (hooks[ch]) { + var result = hooks[ch](stream, state); + if (result !== false) return result; + } + + if (support.hexNumber && + ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) + || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/))) { + // hex + // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html + return "number"; + } else if (support.binaryNumber && + (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/)) + || (ch == "0" && stream.match(/^b[01]+/)))) { + // bitstring + // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html + return "number"; + } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { + // numbers + // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html + stream.match(/^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/); + support.decimallessFloat && stream.match(/^\.(?!\.)/); + return "number"; + } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) { + // placeholders + return "variable-3"; + } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { + // strings + // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html + state.tokenize = tokenLiteral(ch); + return state.tokenize(stream, state); + } else if ((((support.nCharCast && (ch == "n" || ch == "N")) + || (support.charsetCast && ch == "_" && stream.match(/[a-z][a-z0-9]*/i))) + && (stream.peek() == "'" || stream.peek() == '"'))) { + // charset casting: _utf8'str', N'str', n'str' + // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html + return "keyword"; + } else if (/^[\(\),\;\[\]]/.test(ch)) { + // no highlighting + return null; + } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) { + // 1-line comment + stream.skipToEnd(); + return "comment"; + } else if ((support.commentHash && ch == "#") + || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) { + // 1-line comments + // ref: https://kb.askmonty.org/en/comment-syntax/ + stream.skipToEnd(); + return "comment"; + } else if (ch == "/" && stream.eat("*")) { + // multi-line comments + // ref: https://kb.askmonty.org/en/comment-syntax/ + state.tokenize = tokenComment(1); + return state.tokenize(stream, state); + } else if (ch == ".") { + // .1 for 0.1 + if (support.zerolessFloat && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) + return "number"; + if (stream.match(/^\.+/)) + return null + // .table_name (ODBC) + // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html + if (support.ODBCdotTable && stream.match(/^[\w\d_]+/)) + return "variable-2"; + } else if (operatorChars.test(ch)) { + // operators + stream.eatWhile(operatorChars); + return null; + } else if (ch == '{' && + (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) { + // dates (weird ODBC syntax) + // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html + return "number"; + } else { + stream.eatWhile(/^[_\w\d]/); + var word = stream.current().toLowerCase(); + // dates (standard SQL syntax) + // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html + if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/))) + return "number"; + if (atoms.hasOwnProperty(word)) return "atom"; + if (builtin.hasOwnProperty(word)) return "builtin"; + if (keywords.hasOwnProperty(word)) return "keyword"; + if (client.hasOwnProperty(word)) return "string-2"; + return null; + } + } + + // 'string', with char specified in quote escaped by '\' + function tokenLiteral(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) { + state.tokenize = tokenBase; + break; + } + escaped = !escaped && ch == "\\"; + } + return "string"; + }; + } + function tokenComment(depth) { + return function(stream, state) { + var m = stream.match(/^.*?(\/\*|\*\/)/) + if (!m) stream.skipToEnd() + else if (m[1] == "/*") state.tokenize = tokenComment(depth + 1) + else if (depth > 1) state.tokenize = tokenComment(depth - 1) + else state.tokenize = tokenBase + return "comment" + } + } + + function pushContext(stream, state, type) { + state.context = { + prev: state.context, + indent: stream.indentation(), + col: stream.column(), + type: type + }; + } + + function popContext(state) { + state.indent = state.context.indent; + state.context = state.context.prev; + } + + return { + startState: function() { + return {tokenize: tokenBase, context: null}; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (state.context && state.context.align == null) + state.context.align = false; + } + if (state.tokenize == tokenBase && stream.eatSpace()) return null; + + var style = state.tokenize(stream, state); + if (style == "comment") return style; + + if (state.context && state.context.align == null) + state.context.align = true; + + var tok = stream.current(); + if (tok == "(") + pushContext(stream, state, ")"); + else if (tok == "[") + pushContext(stream, state, "]"); + else if (state.context && state.context.type == tok) + popContext(state); + return style; + }, + + indent: function(state, textAfter) { + var cx = state.context; + if (!cx) return CodeMirror.Pass; + var closing = textAfter.charAt(0) == cx.type; + if (cx.align) return cx.col + (closing ? 0 : 1); + else return cx.indent + (closing ? 0 : config.indentUnit); + }, + + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: support.commentSlashSlash ? "//" : support.commentHash ? "#" : "--" + }; +}); + +(function() { + "use strict"; + + // `identifier` + function hookIdentifier(stream) { + // MySQL/MariaDB identifiers + // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html + var ch; + while ((ch = stream.next()) != null) { + if (ch == "`" && !stream.eat("`")) return "variable-2"; + } + stream.backUp(stream.current().length - 1); + return stream.eatWhile(/\w/) ? "variable-2" : null; + } + + // "identifier" + function hookIdentifierDoublequote(stream) { + // Standard SQL /SQLite identifiers + // ref: http://web.archive.org/web/20160813185132/http://savage.net.au/SQL/sql-99.bnf.html#delimited%20identifier + // ref: http://sqlite.org/lang_keywords.html + var ch; + while ((ch = stream.next()) != null) { + if (ch == "\"" && !stream.eat("\"")) return "variable-2"; + } + stream.backUp(stream.current().length - 1); + return stream.eatWhile(/\w/) ? "variable-2" : null; + } + + // variable token + function hookVar(stream) { + // variables + // @@prefix.varName @varName + // varName can be quoted with ` or ' or " + // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html + if (stream.eat("@")) { + stream.match(/^session\./); + stream.match(/^local\./); + stream.match(/^global\./); + } + + if (stream.eat("'")) { + stream.match(/^.*'/); + return "variable-2"; + } else if (stream.eat('"')) { + stream.match(/^.*"/); + return "variable-2"; + } else if (stream.eat("`")) { + stream.match(/^.*`/); + return "variable-2"; + } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) { + return "variable-2"; + } + return null; + }; + + // short client keyword token + function hookClient(stream) { + // \N means NULL + // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html + if (stream.eat("N")) { + return "atom"; + } + // \g, etc + // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html + return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null; + } + + // these keywords are used by all SQL dialects (however, a mode can still overwrite it) + var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit "; + + // turn a space-separated list into an array + function set(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + // A generic SQL Mode. It's not a standard, it just try to support what is generally supported + CodeMirror.defineMIME("text/x-sql", { + name: "sql", + keywords: set(sqlKeywords + "begin"), + builtin: set("bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric"), + atoms: set("false true null unknown"), + operatorChars: /^[*+\-%<>!=]/, + dateSQL: set("date time timestamp"), + support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") + }); + + CodeMirror.defineMIME("text/x-mssql", { + name: "sql", + client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), + keywords: set(sqlKeywords + "begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare exec"), + builtin: set("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "), + atoms: set("false true null unknown"), + operatorChars: /^[*+\-%<>!=]/, + dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime time"), + hooks: { + "@": hookVar + } + }); + + CodeMirror.defineMIME("text/x-mysql", { + name: "sql", + client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), + keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), + builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), + atoms: set("false true null unknown"), + operatorChars: /^[*+\-%<>!=&|^]/, + dateSQL: set("date time timestamp"), + support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), + hooks: { + "@": hookVar, + "`": hookIdentifier, + "\\": hookClient + } + }); + + CodeMirror.defineMIME("text/x-mariadb", { + name: "sql", + client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), + keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), + builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), + atoms: set("false true null unknown"), + operatorChars: /^[*+\-%<>!=&|^]/, + dateSQL: set("date time timestamp"), + support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), + hooks: { + "@": hookVar, + "`": hookIdentifier, + "\\": hookClient + } + }); + + // provided by the phpLiteAdmin project - phpliteadmin.org + CodeMirror.defineMIME("text/x-sqlite", { + name: "sql", + // commands of the official SQLite client, ref: https://www.sqlite.org/cli.html#dotcmd + client: set("auth backup bail binary changes check clone databases dbinfo dump echo eqp exit explain fullschema headers help import imposter indexes iotrace limit lint load log mode nullvalue once open output print prompt quit read restore save scanstats schema separator session shell show stats system tables testcase timeout timer trace vfsinfo vfslist vfsname width"), + // ref: http://sqlite.org/lang_keywords.html + keywords: set(sqlKeywords + "abort action add after all analyze attach autoincrement before begin cascade case cast check collate column commit conflict constraint cross current_date current_time current_timestamp database default deferrable deferred detach each else end escape except exclusive exists explain fail for foreign full glob if ignore immediate index indexed initially inner instead intersect isnull key left limit match natural no notnull null of offset outer plan pragma primary query raise recursive references regexp reindex release rename replace restrict right rollback row savepoint temp temporary then to transaction trigger unique using vacuum view virtual when with without"), + // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types. + builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text clob bigint int int2 int8 integer float double char varchar date datetime year unsigned signed numeric real"), + // ref: http://sqlite.org/syntax/literal-value.html + atoms: set("null current_date current_time current_timestamp"), + // ref: http://sqlite.org/lang_expr.html#binaryops + operatorChars: /^[*+\-%<>!=&|/~]/, + // SQLite is weakly typed, ref: http://sqlite.org/datatype3.html. This is just a list of some common types. + dateSQL: set("date time timestamp datetime"), + support: set("decimallessFloat zerolessFloat"), + identifierQuote: "\"", //ref: http://sqlite.org/lang_keywords.html + hooks: { + // bind-parameters ref:http://sqlite.org/lang_expr.html#varparam + "@": hookVar, + ":": hookVar, + "?": hookVar, + "$": hookVar, + // The preferred way to escape Identifiers is using double quotes, ref: http://sqlite.org/lang_keywords.html + "\"": hookIdentifierDoublequote, + // there is also support for backtics, ref: http://sqlite.org/lang_keywords.html + "`": hookIdentifier + } + }); + + // the query language used by Apache Cassandra is called CQL, but this mime type + // is called Cassandra to avoid confusion with Contextual Query Language + CodeMirror.defineMIME("text/x-cassandra", { + name: "sql", + client: { }, + keywords: set("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"), + builtin: set("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"), + atoms: set("false true infinity NaN"), + operatorChars: /^[<>=]/, + dateSQL: { }, + support: set("commentSlashSlash decimallessFloat"), + hooks: { } + }); + + // this is based on Peter Raganitsch's 'plsql' mode + CodeMirror.defineMIME("text/x-plsql", { + name: "sql", + client: set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"), + keywords: set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"), + builtin: set("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"), + operatorChars: /^[*+\-%<>!=~]/, + dateSQL: set("date time timestamp"), + support: set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber") + }); + + // Created to support specific hive keywords + CodeMirror.defineMIME("text/x-hive", { + name: "sql", + keywords: set("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"), + builtin: set("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"), + atoms: set("false true null unknown"), + operatorChars: /^[*+\-%<>!=]/, + dateSQL: set("date timestamp"), + support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") + }); + + CodeMirror.defineMIME("text/x-pgsql", { + name: "sql", + client: set("source"), + // https://www.postgresql.org/docs/10/static/sql-keywords-appendix.html + keywords: set(sqlKeywords + "a abort abs absent absolute access according action ada add admin after aggregate all allocate also always analyse analyze any are array array_agg array_max_cardinality asensitive assertion assignment asymmetric at atomic attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli binary bit_length blob blocked bom both breadth c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain characteristics characters character_length character_set_catalog character_set_name character_set_schema char_length check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column columns column_name command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constraint constraints constraint_catalog constraint_name constraint_schema constructor contains content continue control conversion convert copy corr corresponding cost covar_pop covar_samp cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datetime_interval_code datetime_interval_precision day db deallocate dec declare default defaults deferrable deferred defined definer degree delimiter delimiters dense_rank depth deref derived describe descriptor deterministic diagnostics dictionary disable discard disconnect dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain dynamic dynamic_function dynamic_function_code each element else empty enable encoding encrypted end end-exec end_frame end_partition enforced enum equals escape event every except exception exclude excluding exclusive exec execute exists exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreign fortran forward found frame_row free freeze fs full function functions fusion g general generated get global go goto grant granted greatest grouping groups handler header hex hierarchy hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import including increment indent index indexes indicator inherit inherits initially inline inner inout input insensitive instance instantiable instead integrity intersect intersection invoker isnull isolation k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like_regex link listen ln load local localtime localtimestamp location locator lock locked logged lower m map mapping match matched materialized max maxvalue max_cardinality member merge message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized nothing notify notnull nowait nth_value ntile null nullable nullif nulls number object occurrences_regex octets octet_length of off offset oids old only open operator option options ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parallel parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password percent percentile_cont percentile_disc percent_rank period permission placing plans pli policy portion position position_regex power precedes preceding prepare prepared preserve primary prior privileges procedural procedure program public quote range rank read reads reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict restricted result return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns revoke right role rollback rollup routine routine_catalog routine_name routine_schema row rows row_count row_number rule savepoint scale schema schema_name scope scope_catalog scope_name scope_schema scroll search second section security selective self sensitive sequence sequences serializable server server_name session session_user setof sets share show similar simple size skip snapshot some source space specific specifictype specific_name sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset substring substring_regex succeeds sum symmetric sysid system system_time system_user t tables tablesample tablespace table_name temp template temporary then ties timezone_hour timezone_minute to token top_level_count trailing transaction transactions_committed transactions_rolled_back transaction_active transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted unique unknown unlink unlisten unlogged unnamed unnest until untyped upper uri usage user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of varbinary variadic var_pop var_samp verbose version versioning view views volatile when whenever whitespace width_bucket window within work wrapper write xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes loop repeat attach path depends detach zone"), + // https://www.postgresql.org/docs/10/static/datatype.html + builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"), + atoms: set("false true null unknown"), + operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, + dateSQL: set("date time timestamp"), + support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast") + }); + + // Google's SQL-like query language, GQL + CodeMirror.defineMIME("text/x-gql", { + name: "sql", + keywords: set("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"), + atoms: set("false true"), + builtin: set("blob datetime first key __key__ string integer double boolean null"), + operatorChars: /^[*+\-%<>!=]/ + }); + + // Greenplum + CodeMirror.defineMIME("text/x-gpsql", { + name: "sql", + client: set("source"), + //https://github.com/greenplum-db/gpdb/blob/master/src/include/parser/kwlist.h + keywords: set("abort absolute access action active add admin after aggregate all also alter always analyse analyze and any array as asc assertion assignment asymmetric at authorization backward before begin between bigint binary bit boolean both by cache called cascade cascaded case cast chain char character characteristics check checkpoint class close cluster coalesce codegen collate column comment commit committed concurrency concurrently configuration connection constraint constraints contains content continue conversion copy cost cpu_rate_limit create createdb createexttable createrole createuser cross csv cube current current_catalog current_date current_role current_schema current_time current_timestamp current_user cursor cycle data database day deallocate dec decimal declare decode default defaults deferrable deferred definer delete delimiter delimiters deny desc dictionary disable discard distinct distributed do document domain double drop dxl each else enable encoding encrypted end enum errors escape every except exchange exclude excluding exclusive execute exists explain extension external extract false family fetch fields filespace fill filter first float following for force foreign format forward freeze from full function global grant granted greatest group group_id grouping handler hash having header hold host hour identity if ignore ilike immediate immutable implicit in including inclusive increment index indexes inherit inherits initially inline inner inout input insensitive insert instead int integer intersect interval into invoker is isnull isolation join key language large last leading least left level like limit list listen load local localtime localtimestamp location lock log login mapping master match maxvalue median merge minute minvalue missing mode modifies modify month move name names national natural nchar new newline next no nocreatedb nocreateexttable nocreaterole nocreateuser noinherit nologin none noovercommit nosuperuser not nothing notify notnull nowait null nullif nulls numeric object of off offset oids old on only operator option options or order ordered others out outer over overcommit overlaps overlay owned owner parser partial partition partitions passing password percent percentile_cont percentile_disc placing plans position preceding precision prepare prepared preserve primary prior privileges procedural procedure protocol queue quote randomly range read readable reads real reassign recheck recursive ref references reindex reject relative release rename repeatable replace replica reset resource restart restrict returning returns revoke right role rollback rollup rootpartition row rows rule savepoint scatter schema scroll search second security segment select sequence serializable session session_user set setof sets share show similar simple smallint some split sql stable standalone start statement statistics stdin stdout storage strict strip subpartition subpartitions substring superuser symmetric sysid system table tablespace temp template temporary text then threshold ties time timestamp to trailing transaction treat trigger trim true truncate trusted type unbounded uncommitted unencrypted union unique unknown unlisten until update user using vacuum valid validation validator value values varchar variadic varying verbose version view volatile web when where whitespace window with within without work writable write xml xmlattributes xmlconcat xmlelement xmlexists xmlforest xmlparse xmlpi xmlroot xmlserialize year yes zone"), + builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float float8 inet integer int int4 interval json jsonb line lseg macaddr macaddr8 money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"), + atoms: set("false true null unknown"), + operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, + dateSQL: set("date time timestamp"), + support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast") + }); + + // Spark SQL + CodeMirror.defineMIME("text/x-sparksql", { + name: "sql", + keywords: set("add after all alter analyze and anti archive array as asc at between bucket buckets by cache cascade case cast change clear cluster clustered codegen collection column columns comment commit compact compactions compute concatenate cost create cross cube current current_date current_timestamp database databases datata dbproperties defined delete delimited desc describe dfs directories distinct distribute drop else end escaped except exchange exists explain export extended external false fields fileformat first following for format formatted from full function functions global grant group grouping having if ignore import in index indexes inner inpath inputformat insert intersect interval into is items join keys last lateral lazy left like limit lines list load local location lock locks logical macro map minus msck natural no not null nulls of on option options or order out outer outputformat over overwrite partition partitioned partitions percent preceding principals purge range recordreader recordwriter recover reduce refresh regexp rename repair replace reset restrict revoke right rlike role roles rollback rollup row rows schema schemas select semi separated serde serdeproperties set sets show skewed sort sorted start statistics stored stratify struct table tables tablesample tblproperties temp temporary terminated then to touch transaction transactions transform true truncate unarchive unbounded uncache union unlock unset use using values view when where window with"), + builtin: set("tinyint smallint int bigint boolean float double string binary timestamp decimal array map struct uniontype delimited serde sequencefile textfile rcfile inputformat outputformat"), + atoms: set("false true null"), + operatorChars: /^[*+\-%<>!=~&|^]/, + dateSQL: set("date time timestamp"), + support: set("ODBCdotTable doubleQuote zerolessFloat") + }); + + // Esper + CodeMirror.defineMIME("text/x-esper", { + name: "sql", + client: set("source"), + // http://www.espertech.com/esper/release-5.5.0/esper-reference/html/appendix_keywords.html + keywords: set("alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit after all and as at asc avedev avg between by case cast coalesce count create current_timestamp day days delete define desc distinct else end escape events every exists false first from full group having hour hours in inner insert instanceof into irstream is istream join last lastweekday left limit like max match_recognize matches median measures metadatasql min minute minutes msec millisecond milliseconds not null offset on or order outer output partition pattern prev prior regexp retain-union retain-intersection right rstream sec second seconds select set some snapshot sql stddev sum then true unidirectional until update variable weekday when where window"), + builtin: {}, + atoms: set("false true null"), + operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, + dateSQL: set("time"), + support: set("decimallessFloat zerolessFloat binaryNumber hexNumber") + }); +}()); + +}); + +/* + How Properties of Mime Types are used by SQL Mode + ================================================= + + keywords: + A list of keywords you want to be highlighted. + builtin: + A list of builtin types you want to be highlighted (if you want types to be of class "builtin" instead of "keyword"). + operatorChars: + All characters that must be handled as operators. + client: + Commands parsed and executed by the client (not the server). + support: + A list of supported syntaxes which are not common, but are supported by more than 1 DBMS. + * ODBCdotTable: .tableName + * zerolessFloat: .1 + * doubleQuote + * nCharCast: N'string' + * charsetCast: _utf8'string' + * commentHash: use # char for comments + * commentSlashSlash: use // for comments + * commentSpaceRequired: require a space after -- for comments + atoms: + Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others: + UNKNOWN, INFINITY, UNDERFLOW, NaN... + dateSQL: + Used for date/time SQL standard syntax, because not all DBMS's support same temporal types. +*/ diff --git a/global/codemirror/mode/stex/index.html b/global/codemirror/mode/stex/index.html new file mode 100644 index 00000000..14679da4 --- /dev/null +++ b/global/codemirror/mode/stex/index.html @@ -0,0 +1,110 @@ + + +CodeMirror: sTeX mode + + + + + + + + + +
+

sTeX mode

+
+ + +

MIME types defined: text/x-stex.

+ +

Parsing/Highlighting Tests: normal, verbose.

+ +
diff --git a/global/codemirror/mode/stex/stex.js b/global/codemirror/mode/stex/stex.js new file mode 100644 index 00000000..835ed46d --- /dev/null +++ b/global/codemirror/mode/stex/stex.js @@ -0,0 +1,251 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/* + * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de) + * Licence: MIT + */ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("stex", function() { + "use strict"; + + function pushCommand(state, command) { + state.cmdState.push(command); + } + + function peekCommand(state) { + if (state.cmdState.length > 0) { + return state.cmdState[state.cmdState.length - 1]; + } else { + return null; + } + } + + function popCommand(state) { + var plug = state.cmdState.pop(); + if (plug) { + plug.closeBracket(); + } + } + + // returns the non-default plugin closest to the end of the list + function getMostPowerful(state) { + var context = state.cmdState; + for (var i = context.length - 1; i >= 0; i--) { + var plug = context[i]; + if (plug.name == "DEFAULT") { + continue; + } + return plug; + } + return { styleIdentifier: function() { return null; } }; + } + + function addPluginPattern(pluginName, cmdStyle, styles) { + return function () { + this.name = pluginName; + this.bracketNo = 0; + this.style = cmdStyle; + this.styles = styles; + this.argument = null; // \begin and \end have arguments that follow. These are stored in the plugin + + this.styleIdentifier = function() { + return this.styles[this.bracketNo - 1] || null; + }; + this.openBracket = function() { + this.bracketNo++; + return "bracket"; + }; + this.closeBracket = function() {}; + }; + } + + var plugins = {}; + + plugins["importmodule"] = addPluginPattern("importmodule", "tag", ["string", "builtin"]); + plugins["documentclass"] = addPluginPattern("documentclass", "tag", ["", "atom"]); + plugins["usepackage"] = addPluginPattern("usepackage", "tag", ["atom"]); + plugins["begin"] = addPluginPattern("begin", "tag", ["atom"]); + plugins["end"] = addPluginPattern("end", "tag", ["atom"]); + + plugins["DEFAULT"] = function () { + this.name = "DEFAULT"; + this.style = "tag"; + + this.styleIdentifier = this.openBracket = this.closeBracket = function() {}; + }; + + function setState(state, f) { + state.f = f; + } + + // called when in a normal (no environment) context + function normal(source, state) { + var plug; + // Do we look like '\command' ? If so, attempt to apply the plugin 'command' + if (source.match(/^\\[a-zA-Z@]+/)) { + var cmdName = source.current().slice(1); + plug = plugins[cmdName] || plugins["DEFAULT"]; + plug = new plug(); + pushCommand(state, plug); + setState(state, beginParams); + return plug.style; + } + + // escape characters + if (source.match(/^\\[$&%#{}_]/)) { + return "tag"; + } + + // white space control characters + if (source.match(/^\\[,;!\/\\]/)) { + return "tag"; + } + + // find if we're starting various math modes + if (source.match("\\[")) { + setState(state, function(source, state){ return inMathMode(source, state, "\\]"); }); + return "keyword"; + } + if (source.match("$$")) { + setState(state, function(source, state){ return inMathMode(source, state, "$$"); }); + return "keyword"; + } + if (source.match("$")) { + setState(state, function(source, state){ return inMathMode(source, state, "$"); }); + return "keyword"; + } + + var ch = source.next(); + if (ch == "%") { + source.skipToEnd(); + return "comment"; + } else if (ch == '}' || ch == ']') { + plug = peekCommand(state); + if (plug) { + plug.closeBracket(ch); + setState(state, beginParams); + } else { + return "error"; + } + return "bracket"; + } else if (ch == '{' || ch == '[') { + plug = plugins["DEFAULT"]; + plug = new plug(); + pushCommand(state, plug); + return "bracket"; + } else if (/\d/.test(ch)) { + source.eatWhile(/[\w.%]/); + return "atom"; + } else { + source.eatWhile(/[\w\-_]/); + plug = getMostPowerful(state); + if (plug.name == 'begin') { + plug.argument = source.current(); + } + return plug.styleIdentifier(); + } + } + + function inMathMode(source, state, endModeSeq) { + if (source.eatSpace()) { + return null; + } + if (source.match(endModeSeq)) { + setState(state, normal); + return "keyword"; + } + if (source.match(/^\\[a-zA-Z@]+/)) { + return "tag"; + } + if (source.match(/^[a-zA-Z]+/)) { + return "variable-2"; + } + // escape characters + if (source.match(/^\\[$&%#{}_]/)) { + return "tag"; + } + // white space control characters + if (source.match(/^\\[,;!\/]/)) { + return "tag"; + } + // special math-mode characters + if (source.match(/^[\^_&]/)) { + return "tag"; + } + // non-special characters + if (source.match(/^[+\-<>|=,\/@!*:;'"`~#?]/)) { + return null; + } + if (source.match(/^(\d+\.\d*|\d*\.\d+|\d+)/)) { + return "number"; + } + var ch = source.next(); + if (ch == "{" || ch == "}" || ch == "[" || ch == "]" || ch == "(" || ch == ")") { + return "bracket"; + } + + if (ch == "%") { + source.skipToEnd(); + return "comment"; + } + return "error"; + } + + function beginParams(source, state) { + var ch = source.peek(), lastPlug; + if (ch == '{' || ch == '[') { + lastPlug = peekCommand(state); + lastPlug.openBracket(ch); + source.eat(ch); + setState(state, normal); + return "bracket"; + } + if (/[ \t\r]/.test(ch)) { + source.eat(ch); + return null; + } + setState(state, normal); + popCommand(state); + + return normal(source, state); + } + + return { + startState: function() { + return { + cmdState: [], + f: normal + }; + }, + copyState: function(s) { + return { + cmdState: s.cmdState.slice(), + f: s.f + }; + }, + token: function(stream, state) { + return state.f(stream, state); + }, + blankLine: function(state) { + state.f = normal; + state.cmdState.length = 0; + }, + lineComment: "%" + }; + }); + + CodeMirror.defineMIME("text/x-stex", "stex"); + CodeMirror.defineMIME("text/x-latex", "stex"); + +}); diff --git a/global/codemirror/mode/stex/test.js b/global/codemirror/mode/stex/test.js new file mode 100644 index 00000000..22f027ec --- /dev/null +++ b/global/codemirror/mode/stex/test.js @@ -0,0 +1,123 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({tabSize: 4}, "stex"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("word", + "foo"); + + MT("twoWords", + "foo bar"); + + MT("beginEndDocument", + "[tag \\begin][bracket {][atom document][bracket }]", + "[tag \\end][bracket {][atom document][bracket }]"); + + MT("beginEndEquation", + "[tag \\begin][bracket {][atom equation][bracket }]", + " E=mc^2", + "[tag \\end][bracket {][atom equation][bracket }]"); + + MT("beginModule", + "[tag \\begin][bracket {][atom module][bracket }[[]]]"); + + MT("beginModuleId", + "[tag \\begin][bracket {][atom module][bracket }[[]id=bbt-size[bracket ]]]"); + + MT("importModule", + "[tag \\importmodule][bracket [[][string b-b-t][bracket ]]{][builtin b-b-t][bracket }]"); + + MT("importModulePath", + "[tag \\importmodule][bracket [[][tag \\KWARCslides][bracket {][string dmath/en/cardinality][bracket }]]{][builtin card][bracket }]"); + + MT("psForPDF", + "[tag \\PSforPDF][bracket [[][atom 1][bracket ]]{]#1[bracket }]"); + + MT("comment", + "[comment % foo]"); + + MT("tagComment", + "[tag \\item][comment % bar]"); + + MT("commentTag", + " [comment % \\item]"); + + MT("commentLineBreak", + "[comment %]", + "foo"); + + MT("tagErrorCurly", + "[tag \\begin][error }][bracket {]"); + + MT("tagErrorSquare", + "[tag \\item][error ]]][bracket {]"); + + MT("commentCurly", + "[comment % }]"); + + MT("tagHash", + "the [tag \\#] key"); + + MT("tagNumber", + "a [tag \\$][atom 5] stetson"); + + MT("tagPercent", + "[atom 100][tag \\%] beef"); + + MT("tagAmpersand", + "L [tag \\&] N"); + + MT("tagUnderscore", + "foo[tag \\_]bar"); + + MT("tagBracketOpen", + "[tag \\emph][bracket {][tag \\{][bracket }]"); + + MT("tagBracketClose", + "[tag \\emph][bracket {][tag \\}][bracket }]"); + + MT("tagLetterNumber", + "section [tag \\S][atom 1]"); + + MT("textTagNumber", + "para [tag \\P][atom 2]"); + + MT("thinspace", + "x[tag \\,]y"); + + MT("thickspace", + "x[tag \\;]y"); + + MT("negativeThinspace", + "x[tag \\!]y"); + + MT("periodNotSentence", + "J.\\ L.\\ is"); + + MT("periodSentence", + "X[tag \\@]. The"); + + MT("italicCorrection", + "[bracket {][tag \\em] If[tag \\/][bracket }] I"); + + MT("tagBracket", + "[tag \\newcommand][bracket {][tag \\pop][bracket }]"); + + MT("inlineMathTagFollowedByNumber", + "[keyword $][tag \\pi][number 2][keyword $]"); + + MT("inlineMath", + "[keyword $][number 3][variable-2 x][tag ^][number 2.45]-[tag \\sqrt][bracket {][tag \\$\\alpha][bracket }] = [number 2][keyword $] other text"); + + MT("displayMath", + "More [keyword $$]\t[variable-2 S][tag ^][variable-2 n][tag \\sum] [variable-2 i][keyword $$] other text"); + + MT("mathWithComment", + "[keyword $][variable-2 x] [comment % $]", + "[variable-2 y][keyword $] other text"); + + MT("lineBreakArgument", + "[tag \\\\][bracket [[][atom 1cm][bracket ]]]"); +})(); diff --git a/global/codemirror/mode/stylus/index.html b/global/codemirror/mode/stylus/index.html new file mode 100644 index 00000000..862c18f2 --- /dev/null +++ b/global/codemirror/mode/stylus/index.html @@ -0,0 +1,106 @@ + + +CodeMirror: Stylus mode + + + + + + + + + + + +
+

Stylus mode

+
+
+ + +

MIME types defined: text/x-styl.

+

Created by Dmitry Kiselyov

+
diff --git a/global/codemirror/mode/stylus/stylus.js b/global/codemirror/mode/stylus/stylus.js new file mode 100644 index 00000000..b83be16f --- /dev/null +++ b/global/codemirror/mode/stylus/stylus.js @@ -0,0 +1,771 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Stylus mode created by Dmitry Kiselyov http://git.io/AaRB + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("stylus", function(config) { + var indentUnit = config.indentUnit, + indentUnitString = '', + tagKeywords = keySet(tagKeywords_), + tagVariablesRegexp = /^(a|b|i|s|col|em)$/i, + propertyKeywords = keySet(propertyKeywords_), + nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_), + valueKeywords = keySet(valueKeywords_), + colorKeywords = keySet(colorKeywords_), + documentTypes = keySet(documentTypes_), + documentTypesRegexp = wordRegexp(documentTypes_), + mediaFeatures = keySet(mediaFeatures_), + mediaTypes = keySet(mediaTypes_), + fontProperties = keySet(fontProperties_), + operatorsRegexp = /^\s*([.]{2,3}|&&|\|\||\*\*|[?!=:]?=|[-+*\/%<>]=?|\?:|\~)/, + wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_), + blockKeywords = keySet(blockKeywords_), + vendorPrefixesRegexp = new RegExp(/^\-(moz|ms|o|webkit)-/i), + commonAtoms = keySet(commonAtoms_), + firstWordMatch = "", + states = {}, + ch, + style, + type, + override; + + while (indentUnitString.length < indentUnit) indentUnitString += ' '; + + /** + * Tokenizers + */ + function tokenBase(stream, state) { + firstWordMatch = stream.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/); + state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\s*/, "") : ""; + state.context.line.indent = stream.indentation(); + ch = stream.peek(); + + // Line comment + if (stream.match("//")) { + stream.skipToEnd(); + return ["comment", "comment"]; + } + // Block comment + if (stream.match("/*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } + // String + if (ch == "\"" || ch == "'") { + stream.next(); + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + // Def + if (ch == "@") { + stream.next(); + stream.eatWhile(/[\w\\-]/); + return ["def", stream.current()]; + } + // ID selector or Hex color + if (ch == "#") { + stream.next(); + // Hex color + if (stream.match(/^[0-9a-f]{6}|[0-9a-f]{3}/i)) { + return ["atom", "atom"]; + } + // ID selector + if (stream.match(/^[a-z][\w-]*/i)) { + return ["builtin", "hash"]; + } + } + // Vendor prefixes + if (stream.match(vendorPrefixesRegexp)) { + return ["meta", "vendor-prefixes"]; + } + // Numbers + if (stream.match(/^-?[0-9]?\.?[0-9]/)) { + stream.eatWhile(/[a-z%]/i); + return ["number", "unit"]; + } + // !important|optional + if (ch == "!") { + stream.next(); + return [stream.match(/^(important|optional)/i) ? "keyword": "operator", "important"]; + } + // Class + if (ch == "." && stream.match(/^\.[a-z][\w-]*/i)) { + return ["qualifier", "qualifier"]; + } + // url url-prefix domain regexp + if (stream.match(documentTypesRegexp)) { + if (stream.peek() == "(") state.tokenize = tokenParenthesized; + return ["property", "word"]; + } + // Mixins / Functions + if (stream.match(/^[a-z][\w-]*\(/i)) { + stream.backUp(1); + return ["keyword", "mixin"]; + } + // Block mixins + if (stream.match(/^(\+|-)[a-z][\w-]*\(/i)) { + stream.backUp(1); + return ["keyword", "block-mixin"]; + } + // Parent Reference BEM naming + if (stream.string.match(/^\s*&/) && stream.match(/^[-_]+[a-z][\w-]*/)) { + return ["qualifier", "qualifier"]; + } + // / Root Reference & Parent Reference + if (stream.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)) { + stream.backUp(1); + return ["variable-3", "reference"]; + } + if (stream.match(/^&{1}\s*$/)) { + return ["variable-3", "reference"]; + } + // Word operator + if (stream.match(wordOperatorKeywordsRegexp)) { + return ["operator", "operator"]; + } + // Word + if (stream.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)) { + // Variable + if (stream.match(/^(\.|\[)[\w-\'\"\]]+/i, false)) { + if (!wordIsTag(stream.current())) { + stream.match(/\./); + return ["variable-2", "variable-name"]; + } + } + return ["variable-2", "word"]; + } + // Operators + if (stream.match(operatorsRegexp)) { + return ["operator", stream.current()]; + } + // Delimiters + if (/[:;,{}\[\]\(\)]/.test(ch)) { + stream.next(); + return [null, ch]; + } + // Non-detected items + stream.next(); + return [null, null]; + } + + /** + * Token comment + */ + function tokenCComment(stream, state) { + var maybeEnd = false, ch; + while ((ch = stream.next()) != null) { + if (maybeEnd && ch == "/") { + state.tokenize = null; + break; + } + maybeEnd = (ch == "*"); + } + return ["comment", "comment"]; + } + + /** + * Token string + */ + function tokenString(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) { + if (quote == ")") stream.backUp(1); + break; + } + escaped = !escaped && ch == "\\"; + } + if (ch == quote || !escaped && quote != ")") state.tokenize = null; + return ["string", "string"]; + }; + } + + /** + * Token parenthesized + */ + function tokenParenthesized(stream, state) { + stream.next(); // Must be "(" + if (!stream.match(/\s*[\"\')]/, false)) + state.tokenize = tokenString(")"); + else + state.tokenize = null; + return [null, "("]; + } + + /** + * Context management + */ + function Context(type, indent, prev, line) { + this.type = type; + this.indent = indent; + this.prev = prev; + this.line = line || {firstWord: "", indent: 0}; + } + + function pushContext(state, stream, type, indent) { + indent = indent >= 0 ? indent : indentUnit; + state.context = new Context(type, stream.indentation() + indent, state.context); + return type; + } + + function popContext(state, currentIndent) { + var contextIndent = state.context.indent - indentUnit; + currentIndent = currentIndent || false; + state.context = state.context.prev; + if (currentIndent) state.context.indent = contextIndent; + return state.context.type; + } + + function pass(type, stream, state) { + return states[state.context.type](type, stream, state); + } + + function popAndPass(type, stream, state, n) { + for (var i = n || 1; i > 0; i--) + state.context = state.context.prev; + return pass(type, stream, state); + } + + + /** + * Parser + */ + function wordIsTag(word) { + return word.toLowerCase() in tagKeywords; + } + + function wordIsProperty(word) { + word = word.toLowerCase(); + return word in propertyKeywords || word in fontProperties; + } + + function wordIsBlock(word) { + return word.toLowerCase() in blockKeywords; + } + + function wordIsVendorPrefix(word) { + return word.toLowerCase().match(vendorPrefixesRegexp); + } + + function wordAsValue(word) { + var wordLC = word.toLowerCase(); + var override = "variable-2"; + if (wordIsTag(word)) override = "tag"; + else if (wordIsBlock(word)) override = "block-keyword"; + else if (wordIsProperty(word)) override = "property"; + else if (wordLC in valueKeywords || wordLC in commonAtoms) override = "atom"; + else if (wordLC == "return" || wordLC in colorKeywords) override = "keyword"; + + // Font family + else if (word.match(/^[A-Z]/)) override = "string"; + return override; + } + + function typeIsBlock(type, stream) { + return ((endOfLine(stream) && (type == "{" || type == "]" || type == "hash" || type == "qualifier")) || type == "block-mixin"); + } + + function typeIsInterpolation(type, stream) { + return type == "{" && stream.match(/^\s*\$?[\w-]+/i, false); + } + + function typeIsPseudo(type, stream) { + return type == ":" && stream.match(/^[a-z-]+/, false); + } + + function startOfLine(stream) { + return stream.sol() || stream.string.match(new RegExp("^\\s*" + escapeRegExp(stream.current()))); + } + + function endOfLine(stream) { + return stream.eol() || stream.match(/^\s*$/, false); + } + + function firstWordOfLine(line) { + var re = /^\s*[-_]*[a-z0-9]+[\w-]*/i; + var result = typeof line == "string" ? line.match(re) : line.string.match(re); + return result ? result[0].replace(/^\s*/, "") : ""; + } + + + /** + * Block + */ + states.block = function(type, stream, state) { + if ((type == "comment" && startOfLine(stream)) || + (type == "," && endOfLine(stream)) || + type == "mixin") { + return pushContext(state, stream, "block", 0); + } + if (typeIsInterpolation(type, stream)) { + return pushContext(state, stream, "interpolation"); + } + if (endOfLine(stream) && type == "]") { + if (!/^\s*(\.|#|:|\[|\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) { + return pushContext(state, stream, "block", 0); + } + } + if (typeIsBlock(type, stream)) { + return pushContext(state, stream, "block"); + } + if (type == "}" && endOfLine(stream)) { + return pushContext(state, stream, "block", 0); + } + if (type == "variable-name") { + if (stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/) || wordIsBlock(firstWordOfLine(stream))) { + return pushContext(state, stream, "variableName"); + } + else { + return pushContext(state, stream, "variableName", 0); + } + } + if (type == "=") { + if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) { + return pushContext(state, stream, "block", 0); + } + return pushContext(state, stream, "block"); + } + if (type == "*") { + if (endOfLine(stream) || stream.match(/\s*(,|\.|#|\[|:|{)/,false)) { + override = "tag"; + return pushContext(state, stream, "block"); + } + } + if (typeIsPseudo(type, stream)) { + return pushContext(state, stream, "pseudo"); + } + if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) { + return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock"); + } + if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { + return pushContext(state, stream, "keyframes"); + } + if (/@extends?/.test(type)) { + return pushContext(state, stream, "extend", 0); + } + if (type && type.charAt(0) == "@") { + + // Property Lookup + if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) { + override = "variable-2"; + return "block"; + } + if (/(@import|@require|@charset)/.test(type)) { + return pushContext(state, stream, "block", 0); + } + return pushContext(state, stream, "block"); + } + if (type == "reference" && endOfLine(stream)) { + return pushContext(state, stream, "block"); + } + if (type == "(") { + return pushContext(state, stream, "parens"); + } + + if (type == "vendor-prefixes") { + return pushContext(state, stream, "vendorPrefixes"); + } + if (type == "word") { + var word = stream.current(); + override = wordAsValue(word); + + if (override == "property") { + if (startOfLine(stream)) { + return pushContext(state, stream, "block", 0); + } else { + override = "atom"; + return "block"; + } + } + + if (override == "tag") { + + // tag is a css value + if (/embed|menu|pre|progress|sub|table/.test(word)) { + if (wordIsProperty(firstWordOfLine(stream))) { + override = "atom"; + return "block"; + } + } + + // tag is an attribute + if (stream.string.match(new RegExp("\\[\\s*" + word + "|" + word +"\\s*\\]"))) { + override = "atom"; + return "block"; + } + + // tag is a variable + if (tagVariablesRegexp.test(word)) { + if ((startOfLine(stream) && stream.string.match(/=/)) || + (!startOfLine(stream) && + !stream.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/) && + !wordIsTag(firstWordOfLine(stream)))) { + override = "variable-2"; + if (wordIsBlock(firstWordOfLine(stream))) return "block"; + return pushContext(state, stream, "block", 0); + } + } + + if (endOfLine(stream)) return pushContext(state, stream, "block"); + } + if (override == "block-keyword") { + override = "keyword"; + + // Postfix conditionals + if (stream.current(/(if|unless)/) && !startOfLine(stream)) { + return "block"; + } + return pushContext(state, stream, "block"); + } + if (word == "return") return pushContext(state, stream, "block", 0); + + // Placeholder selector + if (override == "variable-2" && stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)) { + return pushContext(state, stream, "block"); + } + } + return state.context.type; + }; + + + /** + * Parens + */ + states.parens = function(type, stream, state) { + if (type == "(") return pushContext(state, stream, "parens"); + if (type == ")") { + if (state.context.prev.type == "parens") { + return popContext(state); + } + if ((stream.string.match(/^[a-z][\w-]*\(/i) && endOfLine(stream)) || + wordIsBlock(firstWordOfLine(stream)) || + /(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(firstWordOfLine(stream)) || + (!stream.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/) && + wordIsTag(firstWordOfLine(stream)))) { + return pushContext(state, stream, "block"); + } + if (stream.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/) || + stream.string.match(/^\s*(\(|\)|[0-9])/) || + stream.string.match(/^\s+[a-z][\w-]*\(/i) || + stream.string.match(/^\s+[\$-]?[a-z]/i)) { + return pushContext(state, stream, "block", 0); + } + if (endOfLine(stream)) return pushContext(state, stream, "block"); + else return pushContext(state, stream, "block", 0); + } + if (type && type.charAt(0) == "@" && wordIsProperty(stream.current().slice(1))) { + override = "variable-2"; + } + if (type == "word") { + var word = stream.current(); + override = wordAsValue(word); + if (override == "tag" && tagVariablesRegexp.test(word)) { + override = "variable-2"; + } + if (override == "property" || word == "to") override = "atom"; + } + if (type == "variable-name") { + return pushContext(state, stream, "variableName"); + } + if (typeIsPseudo(type, stream)) { + return pushContext(state, stream, "pseudo"); + } + return state.context.type; + }; + + + /** + * Vendor prefixes + */ + states.vendorPrefixes = function(type, stream, state) { + if (type == "word") { + override = "property"; + return pushContext(state, stream, "block", 0); + } + return popContext(state); + }; + + + /** + * Pseudo + */ + states.pseudo = function(type, stream, state) { + if (!wordIsProperty(firstWordOfLine(stream.string))) { + stream.match(/^[a-z-]+/); + override = "variable-3"; + if (endOfLine(stream)) return pushContext(state, stream, "block"); + return popContext(state); + } + return popAndPass(type, stream, state); + }; + + + /** + * atBlock + */ + states.atBlock = function(type, stream, state) { + if (type == "(") return pushContext(state, stream, "atBlock_parens"); + if (typeIsBlock(type, stream)) { + return pushContext(state, stream, "block"); + } + if (typeIsInterpolation(type, stream)) { + return pushContext(state, stream, "interpolation"); + } + if (type == "word") { + var word = stream.current().toLowerCase(); + if (/^(only|not|and|or)$/.test(word)) + override = "keyword"; + else if (documentTypes.hasOwnProperty(word)) + override = "tag"; + else if (mediaTypes.hasOwnProperty(word)) + override = "attribute"; + else if (mediaFeatures.hasOwnProperty(word)) + override = "property"; + else if (nonStandardPropertyKeywords.hasOwnProperty(word)) + override = "string-2"; + else override = wordAsValue(stream.current()); + if (override == "tag" && endOfLine(stream)) { + return pushContext(state, stream, "block"); + } + } + if (type == "operator" && /^(not|and|or)$/.test(stream.current())) { + override = "keyword"; + } + return state.context.type; + }; + + states.atBlock_parens = function(type, stream, state) { + if (type == "{" || type == "}") return state.context.type; + if (type == ")") { + if (endOfLine(stream)) return pushContext(state, stream, "block"); + else return pushContext(state, stream, "atBlock"); + } + if (type == "word") { + var word = stream.current().toLowerCase(); + override = wordAsValue(word); + if (/^(max|min)/.test(word)) override = "property"; + if (override == "tag") { + tagVariablesRegexp.test(word) ? override = "variable-2" : override = "atom"; + } + return state.context.type; + } + return states.atBlock(type, stream, state); + }; + + + /** + * Keyframes + */ + states.keyframes = function(type, stream, state) { + if (stream.indentation() == "0" && ((type == "}" && startOfLine(stream)) || type == "]" || type == "hash" + || type == "qualifier" || wordIsTag(stream.current()))) { + return popAndPass(type, stream, state); + } + if (type == "{") return pushContext(state, stream, "keyframes"); + if (type == "}") { + if (startOfLine(stream)) return popContext(state, true); + else return pushContext(state, stream, "keyframes"); + } + if (type == "unit" && /^[0-9]+\%$/.test(stream.current())) { + return pushContext(state, stream, "keyframes"); + } + if (type == "word") { + override = wordAsValue(stream.current()); + if (override == "block-keyword") { + override = "keyword"; + return pushContext(state, stream, "keyframes"); + } + } + if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) { + return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock"); + } + if (type == "mixin") { + return pushContext(state, stream, "block", 0); + } + return state.context.type; + }; + + + /** + * Interpolation + */ + states.interpolation = function(type, stream, state) { + if (type == "{") popContext(state) && pushContext(state, stream, "block"); + if (type == "}") { + if (stream.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i) || + (stream.string.match(/^\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) { + return pushContext(state, stream, "block"); + } + if (!stream.string.match(/^(\{|\s*\&)/) || + stream.match(/\s*[\w-]/,false)) { + return pushContext(state, stream, "block", 0); + } + return pushContext(state, stream, "block"); + } + if (type == "variable-name") { + return pushContext(state, stream, "variableName", 0); + } + if (type == "word") { + override = wordAsValue(stream.current()); + if (override == "tag") override = "atom"; + } + return state.context.type; + }; + + + /** + * Extend/s + */ + states.extend = function(type, stream, state) { + if (type == "[" || type == "=") return "extend"; + if (type == "]") return popContext(state); + if (type == "word") { + override = wordAsValue(stream.current()); + return "extend"; + } + return popContext(state); + }; + + + /** + * Variable name + */ + states.variableName = function(type, stream, state) { + if (type == "string" || type == "[" || type == "]" || stream.current().match(/^(\.|\$)/)) { + if (stream.current().match(/^\.[\w-]+/i)) override = "variable-2"; + return "variableName"; + } + return popAndPass(type, stream, state); + }; + + + return { + startState: function(base) { + return { + tokenize: null, + state: "block", + context: new Context("block", base || 0, null) + }; + }, + token: function(stream, state) { + if (!state.tokenize && stream.eatSpace()) return null; + style = (state.tokenize || tokenBase)(stream, state); + if (style && typeof style == "object") { + type = style[1]; + style = style[0]; + } + override = style; + state.state = states[state.state](type, stream, state); + return override; + }, + indent: function(state, textAfter, line) { + + var cx = state.context, + ch = textAfter && textAfter.charAt(0), + indent = cx.indent, + lineFirstWord = firstWordOfLine(textAfter), + lineIndent = line.match(/^\s*/)[0].replace(/\t/g, indentUnitString).length, + prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : "", + prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent; + + if (cx.prev && + (ch == "}" && (cx.type == "block" || cx.type == "atBlock" || cx.type == "keyframes") || + ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || + ch == "{" && (cx.type == "at"))) { + indent = cx.indent - indentUnit; + } else if (!(/(\})/.test(ch))) { + if (/@|\$|\d/.test(ch) || + /^\{/.test(textAfter) || +/^\s*\/(\/|\*)/.test(textAfter) || + /^\s*\/\*/.test(prevLineFirstWord) || + /^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(textAfter) || +/^(\+|-)?[a-z][\w-]*\(/i.test(textAfter) || +/^return/.test(textAfter) || + wordIsBlock(lineFirstWord)) { + indent = lineIndent; + } else if (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(ch) || wordIsTag(lineFirstWord)) { + if (/\,\s*$/.test(prevLineFirstWord)) { + indent = prevLineIndent; + } else if (/^\s+/.test(line) && (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) { + indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit; + } else { + indent = lineIndent; + } + } else if (!/,\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) { + if (wordIsBlock(prevLineFirstWord)) { + indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit; + } else if (/^\{/.test(prevLineFirstWord)) { + indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit; + } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) { + indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent; + } else if (/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(prevLineFirstWord) || + /=\s*$/.test(prevLineFirstWord) || + wordIsTag(prevLineFirstWord) || + /^\$[\w-\.\[\]\'\"]/.test(prevLineFirstWord)) { + indent = prevLineIndent + indentUnit; + } else { + indent = lineIndent; + } + } + } + return indent; + }, + electricChars: "}", + lineComment: "//", + fold: "indent" + }; + }); + + // developer.mozilla.org/en-US/docs/Web/HTML/Element + var tagKeywords_ = ["a","abbr","address","area","article","aside","audio", "b", "base","bdi", "bdo","bgsound","blockquote","body","br","button","canvas","caption","cite", "code","col","colgroup","data","datalist","dd","del","details","dfn","div", "dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1", "h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe", "img","input","ins","kbd","keygen","label","legend","li","link","main","map", "mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes", "noscript","object","ol","optgroup","option","output","p","param","pre", "progress","q","rp","rt","ruby","s","samp","script","section","select", "small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track", "u","ul","var","video"]; + + // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js + var documentTypes_ = ["domain", "regexp", "url", "url-prefix"]; + var mediaTypes_ = ["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"]; + var mediaFeatures_ = ["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"]; + var propertyKeywords_ = ["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"]; + var nonStandardPropertyKeywords_ = ["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"]; + var fontProperties_ = ["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]; + var colorKeywords_ = ["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"]; + var valueKeywords_ = ["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","contain","content","contents","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","scroll-position","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around", "unset"]; + + var wordOperatorKeywords_ = ["in","and","or","not","is not","is a","is","isnt","defined","if unless"], + blockKeywords_ = ["for","if","else","unless", "from", "to"], + commonAtoms_ = ["null","true","false","href","title","type","not-allowed","readonly","disabled"], + commonDef_ = ["@font-face", "@keyframes", "@media", "@viewport", "@page", "@host", "@supports", "@block", "@css"]; + + var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_, + propertyKeywords_,nonStandardPropertyKeywords_, + colorKeywords_,valueKeywords_,fontProperties_, + wordOperatorKeywords_,blockKeywords_, + commonAtoms_,commonDef_); + + function wordRegexp(words) { + words = words.sort(function(a,b){return b > a;}); + return new RegExp("^((" + words.join(")|(") + "))\\b"); + } + + function keySet(array) { + var keys = {}; + for (var i = 0; i < array.length; ++i) keys[array[i]] = true; + return keys; + } + + function escapeRegExp(text) { + return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + } + + CodeMirror.registerHelper("hintWords", "stylus", hintWords); + CodeMirror.defineMIME("text/x-styl", "stylus"); +}); diff --git a/global/codemirror/mode/swift/index.html b/global/codemirror/mode/swift/index.html new file mode 100644 index 00000000..109f3fdb --- /dev/null +++ b/global/codemirror/mode/swift/index.html @@ -0,0 +1,88 @@ + + +CodeMirror: Swift mode + + + + + + + + + + +
+

Swift mode

+
+ + + +

A simple mode for Swift

+ +

MIME types defined: text/x-swift (Swift code)

+
diff --git a/global/codemirror/mode/swift/swift.js b/global/codemirror/mode/swift/swift.js new file mode 100644 index 00000000..43ab7c8f --- /dev/null +++ b/global/codemirror/mode/swift/swift.js @@ -0,0 +1,210 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Swift mode created by Michael Kaminsky https://github.com/mkaminsky11 + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") + mod(require("../../lib/codemirror")) + else if (typeof define == "function" && define.amd) + define(["../../lib/codemirror"], mod) + else + mod(CodeMirror) +})(function(CodeMirror) { + "use strict" + + function wordSet(words) { + var set = {} + for (var i = 0; i < words.length; i++) set[words[i]] = true + return set + } + + var keywords = wordSet(["_","var","let","class","enum","extension","import","protocol","struct","func","typealias","associatedtype", + "open","public","internal","fileprivate","private","deinit","init","new","override","self","subscript","super", + "convenience","dynamic","final","indirect","lazy","required","static","unowned","unowned(safe)","unowned(unsafe)","weak","as","is", + "break","case","continue","default","else","fallthrough","for","guard","if","in","repeat","switch","where","while", + "defer","return","inout","mutating","nonmutating","catch","do","rethrows","throw","throws","try","didSet","get","set","willSet", + "assignment","associativity","infix","left","none","operator","postfix","precedence","precedencegroup","prefix","right", + "Any","AnyObject","Type","dynamicType","Self","Protocol","__COLUMN__","__FILE__","__FUNCTION__","__LINE__"]) + var definingKeywords = wordSet(["var","let","class","enum","extension","import","protocol","struct","func","typealias","associatedtype","for"]) + var atoms = wordSet(["true","false","nil","self","super","_"]) + var types = wordSet(["Array","Bool","Character","Dictionary","Double","Float","Int","Int8","Int16","Int32","Int64","Never","Optional","Set","String", + "UInt8","UInt16","UInt32","UInt64","Void"]) + var operators = "+-/*%=|&<>~^?!" + var punc = ":;,.(){}[]" + var binary = /^\-?0b[01][01_]*/ + var octal = /^\-?0o[0-7][0-7_]*/ + var hexadecimal = /^\-?0x[\dA-Fa-f][\dA-Fa-f_]*(?:(?:\.[\dA-Fa-f][\dA-Fa-f_]*)?[Pp]\-?\d[\d_]*)?/ + var decimal = /^\-?\d[\d_]*(?:\.\d[\d_]*)?(?:[Ee]\-?\d[\d_]*)?/ + var identifier = /^\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1/ + var property = /^\.(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/ + var instruction = /^\#[A-Za-z]+/ + var attribute = /^@(?:\$\d+|(`?)[_A-Za-z][_A-Za-z$0-9]*\1)/ + //var regexp = /^\/(?!\s)(?:\/\/)?(?:\\.|[^\/])+\// + + function tokenBase(stream, state, prev) { + if (stream.sol()) state.indented = stream.indentation() + if (stream.eatSpace()) return null + + var ch = stream.peek() + if (ch == "/") { + if (stream.match("//")) { + stream.skipToEnd() + return "comment" + } + if (stream.match("/*")) { + state.tokenize.push(tokenComment) + return tokenComment(stream, state) + } + } + if (stream.match(instruction)) return "builtin" + if (stream.match(attribute)) return "attribute" + if (stream.match(binary)) return "number" + if (stream.match(octal)) return "number" + if (stream.match(hexadecimal)) return "number" + if (stream.match(decimal)) return "number" + if (stream.match(property)) return "property" + if (operators.indexOf(ch) > -1) { + stream.next() + return "operator" + } + if (punc.indexOf(ch) > -1) { + stream.next() + stream.match("..") + return "punctuation" + } + if (ch == '"' || ch == "'") { + stream.next() + var tokenize = tokenString(ch) + state.tokenize.push(tokenize) + return tokenize(stream, state) + } + + if (stream.match(identifier)) { + var ident = stream.current() + if (types.hasOwnProperty(ident)) return "variable-2" + if (atoms.hasOwnProperty(ident)) return "atom" + if (keywords.hasOwnProperty(ident)) { + if (definingKeywords.hasOwnProperty(ident)) + state.prev = "define" + return "keyword" + } + if (prev == "define") return "def" + return "variable" + } + + stream.next() + return null + } + + function tokenUntilClosingParen() { + var depth = 0 + return function(stream, state, prev) { + var inner = tokenBase(stream, state, prev) + if (inner == "punctuation") { + if (stream.current() == "(") ++depth + else if (stream.current() == ")") { + if (depth == 0) { + stream.backUp(1) + state.tokenize.pop() + return state.tokenize[state.tokenize.length - 1](stream, state) + } + else --depth + } + } + return inner + } + } + + function tokenString(quote) { + return function(stream, state) { + var ch, escaped = false + while (ch = stream.next()) { + if (escaped) { + if (ch == "(") { + state.tokenize.push(tokenUntilClosingParen()) + return "string" + } + escaped = false + } else if (ch == quote) { + break + } else { + escaped = ch == "\\" + } + } + state.tokenize.pop() + return "string" + } + } + + function tokenComment(stream, state) { + stream.match(/^(?:[^*]|\*(?!\/))*/) + if (stream.match("*/")) state.tokenize.pop() + return "comment" + } + + function Context(prev, align, indented) { + this.prev = prev + this.align = align + this.indented = indented + } + + function pushContext(state, stream) { + var align = stream.match(/^\s*($|\/[\/\*])/, false) ? null : stream.column() + 1 + state.context = new Context(state.context, align, state.indented) + } + + function popContext(state) { + if (state.context) { + state.indented = state.context.indented + state.context = state.context.prev + } + } + + CodeMirror.defineMode("swift", function(config) { + return { + startState: function() { + return { + prev: null, + context: null, + indented: 0, + tokenize: [] + } + }, + + token: function(stream, state) { + var prev = state.prev + state.prev = null + var tokenize = state.tokenize[state.tokenize.length - 1] || tokenBase + var style = tokenize(stream, state, prev) + if (!style || style == "comment") state.prev = prev + else if (!state.prev) state.prev = style + + if (style == "punctuation") { + var bracket = /[\(\[\{]|([\]\)\}])/.exec(stream.current()) + if (bracket) (bracket[1] ? popContext : pushContext)(state, stream) + } + + return style + }, + + indent: function(state, textAfter) { + var cx = state.context + if (!cx) return 0 + var closing = /^[\]\}\)]/.test(textAfter) + if (cx.align != null) return cx.align - (closing ? 1 : 0) + return cx.indented + (closing ? 0 : config.indentUnit) + }, + + electricInput: /^\s*[\)\}\]]$/, + + lineComment: "//", + blockCommentStart: "/*", + blockCommentEnd: "*/", + fold: "brace", + closeBrackets: "()[]{}''\"\"``" + } + }) + + CodeMirror.defineMIME("text/x-swift","swift") +}); diff --git a/global/codemirror/mode/swift/test.js b/global/codemirror/mode/swift/test.js new file mode 100644 index 00000000..786b89e2 --- /dev/null +++ b/global/codemirror/mode/swift/test.js @@ -0,0 +1,149 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "swift"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + // Ensure all number types are properly represented. + MT("numbers", + "[keyword var] [def a] [operator =] [number 17]", + "[keyword var] [def b] [operator =] [number -0.5]", + "[keyword var] [def c] [operator =] [number 0.3456e-4]", + "[keyword var] [def d] [operator =] [number 345e2]", + "[keyword var] [def e] [operator =] [number 0o7324]", + "[keyword var] [def f] [operator =] [number 0b10010]", + "[keyword var] [def g] [operator =] [number -0x35ade]", + "[keyword var] [def h] [operator =] [number 0xaea.ep-13]", + "[keyword var] [def i] [operator =] [number 0x13ep6]"); + + // Variable/class/etc definition. + MT("definition", + "[keyword var] [def a] [operator =] [number 5]", + "[keyword let] [def b][punctuation :] [variable-2 Int] [operator =] [number 10]", + "[keyword class] [def C] [punctuation {] [punctuation }]", + "[keyword struct] [def D] [punctuation {] [punctuation }]", + "[keyword enum] [def E] [punctuation {] [punctuation }]", + "[keyword extension] [def F] [punctuation {] [punctuation }]", + "[keyword protocol] [def G] [punctuation {] [punctuation }]", + "[keyword func] [def h][punctuation ()] [punctuation {] [punctuation }]", + "[keyword import] [def Foundation]", + "[keyword typealias] [def NewString] [operator =] [variable-2 String]", + "[keyword associatedtype] [def I]", + "[keyword for] [def j] [keyword in] [number 0][punctuation ..][operator <][number 3] [punctuation {] [punctuation }]"); + + // Strings and string interpolation. + MT("strings", + "[keyword var] [def a][punctuation :] [variable-2 String] [operator =] [string \"test\"]", + "[keyword var] [def b][punctuation :] [variable-2 String] [operator =] [string \"\\(][variable a][string )\"]"); + + // Comments. + MT("comments", + "[comment // This is a comment]", + "[comment /* This is another comment */]", + "[keyword var] [def a] [operator =] [number 5] [comment // Third comment]"); + + // Atoms. + MT("atoms", + "[keyword class] [def FooClass] [punctuation {]", + " [keyword let] [def fooBool][punctuation :] [variable-2 Bool][operator ?]", + " [keyword let] [def fooInt][punctuation :] [variable-2 Int][operator ?]", + " [keyword func] [keyword init][punctuation (][variable fooBool][punctuation :] [variable-2 Bool][punctuation ,] [variable barBool][punctuation :] [variable-2 Bool][punctuation )] [punctuation {]", + " [atom super][property .init][punctuation ()]", + " [atom self][property .fooBool] [operator =] [variable fooBool]", + " [variable fooInt] [operator =] [atom nil]", + " [keyword if] [variable barBool] [operator ==] [atom true] [punctuation {]", + " [variable print][punctuation (][string \"True!\"][punctuation )]", + " [punctuation }] [keyword else] [keyword if] [variable barBool] [operator ==] [atom false] [punctuation {]", + " [keyword for] [atom _] [keyword in] [number 0][punctuation ...][number 5] [punctuation {]", + " [variable print][punctuation (][string \"False!\"][punctuation )]", + " [punctuation }]", + " [punctuation }]", + " [punctuation }]", + "[punctuation }]"); + + // Types. + MT("types", + "[keyword var] [def a] [operator =] [variable-2 Array][operator <][variable-2 Int][operator >]", + "[keyword var] [def b] [operator =] [variable-2 Set][operator <][variable-2 Bool][operator >]", + "[keyword var] [def c] [operator =] [variable-2 Dictionary][operator <][variable-2 String][punctuation ,][variable-2 Character][operator >]", + "[keyword var] [def d][punctuation :] [variable-2 Int64][operator ?] [operator =] [variable-2 Optional][punctuation (][number 8][punctuation )]", + "[keyword func] [def e][punctuation ()] [operator ->] [variable-2 Void] [punctuation {]", + " [keyword var] [def e1][punctuation :] [variable-2 Float] [operator =] [number 1.2]", + "[punctuation }]", + "[keyword func] [def f][punctuation ()] [operator ->] [variable-2 Never] [punctuation {]", + " [keyword var] [def f1][punctuation :] [variable-2 Double] [operator =] [number 2.4]", + "[punctuation }]"); + + // Operators. + MT("operators", + "[keyword var] [def a] [operator =] [number 1] [operator +] [number 2]", + "[keyword var] [def b] [operator =] [number 1] [operator -] [number 2]", + "[keyword var] [def c] [operator =] [number 1] [operator *] [number 2]", + "[keyword var] [def d] [operator =] [number 1] [operator /] [number 2]", + "[keyword var] [def e] [operator =] [number 1] [operator %] [number 2]", + "[keyword var] [def f] [operator =] [number 1] [operator |] [number 2]", + "[keyword var] [def g] [operator =] [number 1] [operator &] [number 2]", + "[keyword var] [def h] [operator =] [number 1] [operator <<] [number 2]", + "[keyword var] [def i] [operator =] [number 1] [operator >>] [number 2]", + "[keyword var] [def j] [operator =] [number 1] [operator ^] [number 2]", + "[keyword var] [def k] [operator =] [operator ~][number 1]", + "[keyword var] [def l] [operator =] [variable foo] [operator ?] [number 1] [punctuation :] [number 2]", + "[keyword var] [def m][punctuation :] [variable-2 Int] [operator =] [variable-2 Optional][punctuation (][number 8][punctuation )][operator !]"); + + // Punctuation. + MT("punctuation", + "[keyword let] [def a] [operator =] [number 1][punctuation ;] [keyword let] [def b] [operator =] [number 2]", + "[keyword let] [def testArr][punctuation :] [punctuation [[][variable-2 Int][punctuation ]]] [operator =] [punctuation [[][variable a][punctuation ,] [variable b][punctuation ]]]", + "[keyword for] [def i] [keyword in] [number 0][punctuation ..][operator <][variable testArr][property .count] [punctuation {]", + " [variable print][punctuation (][variable testArr][punctuation [[][variable i][punctuation ]])]", + "[punctuation }]"); + + // Identifiers. + MT("identifiers", + "[keyword let] [def abc] [operator =] [number 1]", + "[keyword let] [def ABC] [operator =] [number 2]", + "[keyword let] [def _123] [operator =] [number 3]", + "[keyword let] [def _$1$2$3] [operator =] [number 4]", + "[keyword let] [def A1$_c32_$_] [operator =] [number 5]", + "[keyword let] [def `var`] [operator =] [punctuation [[][number 1][punctuation ,] [number 2][punctuation ,] [number 3][punctuation ]]]", + "[keyword let] [def square$] [operator =] [variable `var`][property .map] [punctuation {][variable $0] [operator *] [variable $0][punctuation }]", + "$$ [number 1][variable a] $[atom _] [variable _$] [variable __] `[variable a] [variable b]`"); + + // Properties. + MT("properties", + "[variable print][punctuation (][variable foo][property .abc][punctuation )]", + "[variable print][punctuation (][variable foo][property .ABC][punctuation )]", + "[variable print][punctuation (][variable foo][property ._123][punctuation )]", + "[variable print][punctuation (][variable foo][property ._$1$2$3][punctuation )]", + "[variable print][punctuation (][variable foo][property .A1$_c32_$_][punctuation )]", + "[variable print][punctuation (][variable foo][property .`var`][punctuation )]", + "[variable print][punctuation (][variable foo][property .__][punctuation )]"); + + // Instructions or other things that start with #. + MT("instructions", + "[keyword if] [builtin #available][punctuation (][variable iOS] [number 9][punctuation ,] [operator *][punctuation )] [punctuation {}]", + "[variable print][punctuation (][builtin #file][punctuation ,] [builtin #function][punctuation )]", + "[variable print][punctuation (][builtin #line][punctuation ,] [builtin #column][punctuation )]", + "[builtin #if] [atom true]", + "[keyword import] [def A]", + "[builtin #elseif] [atom false]", + "[keyword import] [def B]", + "[builtin #endif]", + "[builtin #sourceLocation][punctuation (][variable file][punctuation :] [string \"file.swift\"][punctuation ,] [variable line][punctuation :] [number 2][punctuation )]"); + + // Attributes; things that start with @. + MT("attributes", + "[attribute @objc][punctuation (][variable objcFoo][punctuation :)]", + "[attribute @available][punctuation (][variable iOS][punctuation )]"); + + // Property/number edge case. + MT("property_number", + "[variable print][punctuation (][variable foo][property ._123][punctuation )]", + "[variable print][punctuation (]") + + // TODO: correctly identify when multiple variables are being declared + // by use of a comma-separated list. + // TODO: correctly identify when variables are being declared in a tuple. + // TODO: identify protocols as types when used before an extension? +})(); diff --git a/global/codemirror/mode/tcl/index.html b/global/codemirror/mode/tcl/index.html new file mode 100644 index 00000000..ce4ad342 --- /dev/null +++ b/global/codemirror/mode/tcl/index.html @@ -0,0 +1,142 @@ + + +CodeMirror: Tcl mode + + + + + + + + + + +
+

Tcl mode

+
+ + +

MIME types defined: text/x-tcl.

+ +
diff --git a/global/codemirror/mode/tcl/tcl.js b/global/codemirror/mode/tcl/tcl.js new file mode 100644 index 00000000..8c76d52c --- /dev/null +++ b/global/codemirror/mode/tcl/tcl.js @@ -0,0 +1,139 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +//tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("tcl", function() { + function parseWords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + var keywords = parseWords("Tcl safe after append array auto_execok auto_import auto_load " + + "auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror " + + "binary break catch cd close concat continue dde eof encoding error " + + "eval exec exit expr fblocked fconfigure fcopy file fileevent filename " + + "filename flush for foreach format gets glob global history http if " + + "incr info interp join lappend lindex linsert list llength load lrange " + + "lreplace lsearch lset lsort memory msgcat namespace open package parray " + + "pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp " + + "registry regsub rename resource return scan seek set socket source split " + + "string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord " + + "tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest " + + "tclvars tell time trace unknown unset update uplevel upvar variable " + + "vwait"); + var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); + var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + function tokenBase(stream, state) { + var beforeParams = state.beforeParams; + state.beforeParams = false; + var ch = stream.next(); + if ((ch == '"' || ch == "'") && state.inParams) { + return chain(stream, state, tokenString(ch)); + } else if (/[\[\]{}\(\),;\.]/.test(ch)) { + if (ch == "(" && beforeParams) state.inParams = true; + else if (ch == ")") state.inParams = false; + return null; + } else if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } else if (ch == "#") { + if (stream.eat("*")) + return chain(stream, state, tokenComment); + if (ch == "#" && stream.match(/ *\[ *\[/)) + return chain(stream, state, tokenUnparsed); + stream.skipToEnd(); + return "comment"; + } else if (ch == '"') { + stream.skipTo(/"/); + return "comment"; + } else if (ch == "$") { + stream.eatWhile(/[$_a-z0-9A-Z\.{:]/); + stream.eatWhile(/}/); + state.beforeParams = true; + return "builtin"; + } else if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "comment"; + } else { + stream.eatWhile(/[\w\$_{}\xa1-\uffff]/); + var word = stream.current().toLowerCase(); + if (keywords && keywords.propertyIsEnumerable(word)) + return "keyword"; + if (functions && functions.propertyIsEnumerable(word)) { + state.beforeParams = true; + return "keyword"; + } + return null; + } + } + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) { + end = true; + break; + } + escaped = !escaped && next == "\\"; + } + if (end) state.tokenize = tokenBase; + return "string"; + }; + } + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "#" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + function tokenUnparsed(stream, state) { + var maybeEnd = 0, ch; + while (ch = stream.next()) { + if (ch == "#" && maybeEnd == 2) { + state.tokenize = tokenBase; + break; + } + if (ch == "]") + maybeEnd++; + else if (ch != " ") + maybeEnd = 0; + } + return "meta"; + } + return { + startState: function() { + return { + tokenize: tokenBase, + beforeParams: false, + inParams: false + }; + }, + token: function(stream, state) { + if (stream.eatSpace()) return null; + return state.tokenize(stream, state); + } + }; +}); +CodeMirror.defineMIME("text/x-tcl", "tcl"); + +}); diff --git a/global/codemirror/mode/textile/index.html b/global/codemirror/mode/textile/index.html new file mode 100644 index 00000000..42b156b1 --- /dev/null +++ b/global/codemirror/mode/textile/index.html @@ -0,0 +1,191 @@ + + +CodeMirror: Textile mode + + + + + + + + + +
+

Textile mode

+
+ + +

MIME types defined: text/x-textile.

+ +

Parsing/Highlighting Tests: normal, verbose.

+ +
diff --git a/global/codemirror/mode/textile/test.js b/global/codemirror/mode/textile/test.js new file mode 100644 index 00000000..49cdaf9c --- /dev/null +++ b/global/codemirror/mode/textile/test.js @@ -0,0 +1,417 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({tabSize: 4}, 'textile'); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT('simpleParagraphs', + 'Some text.', + '', + 'Some more text.'); + + /* + * Phrase Modifiers + */ + + MT('em', + 'foo [em _bar_]'); + + MT('emBoogus', + 'code_mirror'); + + MT('strong', + 'foo [strong *bar*]'); + + MT('strongBogus', + '3 * 3 = 9'); + + MT('italic', + 'foo [em __bar__]'); + + MT('italicBogus', + 'code__mirror'); + + MT('bold', + 'foo [strong **bar**]'); + + MT('boldBogus', + '3 ** 3 = 27'); + + MT('simpleLink', + '[link "CodeMirror":http://codemirror.net]'); + + MT('referenceLink', + '[link "CodeMirror":code_mirror]', + 'Normal Text.', + '[link [[code_mirror]]http://codemirror.net]'); + + MT('footCite', + 'foo bar[qualifier [[1]]]'); + + MT('footCiteBogus', + 'foo bar[[1a2]]'); + + MT('special-characters', + 'Registered [tag (r)], ' + + 'Trademark [tag (tm)], and ' + + 'Copyright [tag (c)] 2008'); + + MT('cite', + "A book is [keyword ??The Count of Monte Cristo??] by Dumas."); + + MT('additionAndDeletion', + 'The news networks declared [negative -Al Gore-] ' + + '[positive +George W. Bush+] the winner in Florida.'); + + MT('subAndSup', + 'f(x, n) = log [builtin ~4~] x [builtin ^n^]'); + + MT('spanAndCode', + 'A [quote %span element%] and [atom @code element@]'); + + MT('spanBogus', + 'Percentage 25% is not a span.'); + + MT('citeBogus', + 'Question? is not a citation.'); + + MT('codeBogus', + 'user@example.com'); + + MT('subBogus', + '~username'); + + MT('supBogus', + 'foo ^ bar'); + + MT('deletionBogus', + '3 - 3 = 0'); + + MT('additionBogus', + '3 + 3 = 6'); + + MT('image', + 'An image: [string !http://www.example.com/image.png!]'); + + MT('imageWithAltText', + 'An image: [string !http://www.example.com/image.png (Alt Text)!]'); + + MT('imageWithUrl', + 'An image: [string !http://www.example.com/image.png!:http://www.example.com/]'); + + /* + * Headers + */ + + MT('h1', + '[header&header-1 h1. foo]'); + + MT('h2', + '[header&header-2 h2. foo]'); + + MT('h3', + '[header&header-3 h3. foo]'); + + MT('h4', + '[header&header-4 h4. foo]'); + + MT('h5', + '[header&header-5 h5. foo]'); + + MT('h6', + '[header&header-6 h6. foo]'); + + MT('h7Bogus', + 'h7. foo'); + + MT('multipleHeaders', + '[header&header-1 h1. Heading 1]', + '', + 'Some text.', + '', + '[header&header-2 h2. Heading 2]', + '', + 'More text.'); + + MT('h1inline', + '[header&header-1 h1. foo ][header&header-1&em _bar_][header&header-1 baz]'); + + /* + * Lists + */ + + MT('ul', + 'foo', + 'bar', + '', + '[variable-2 * foo]', + '[variable-2 * bar]'); + + MT('ulNoBlank', + 'foo', + 'bar', + '[variable-2 * foo]', + '[variable-2 * bar]'); + + MT('ol', + 'foo', + 'bar', + '', + '[variable-2 # foo]', + '[variable-2 # bar]'); + + MT('olNoBlank', + 'foo', + 'bar', + '[variable-2 # foo]', + '[variable-2 # bar]'); + + MT('ulFormatting', + '[variable-2 * ][variable-2&em _foo_][variable-2 bar]', + '[variable-2 * ][variable-2&strong *][variable-2&em&strong _foo_]' + + '[variable-2&strong *][variable-2 bar]', + '[variable-2 * ][variable-2&strong *foo*][variable-2 bar]'); + + MT('olFormatting', + '[variable-2 # ][variable-2&em _foo_][variable-2 bar]', + '[variable-2 # ][variable-2&strong *][variable-2&em&strong _foo_]' + + '[variable-2&strong *][variable-2 bar]', + '[variable-2 # ][variable-2&strong *foo*][variable-2 bar]'); + + MT('ulNested', + '[variable-2 * foo]', + '[variable-3 ** bar]', + '[keyword *** bar]', + '[variable-2 **** bar]', + '[variable-3 ** bar]'); + + MT('olNested', + '[variable-2 # foo]', + '[variable-3 ## bar]', + '[keyword ### bar]', + '[variable-2 #### bar]', + '[variable-3 ## bar]'); + + MT('ulNestedWithOl', + '[variable-2 * foo]', + '[variable-3 ## bar]', + '[keyword *** bar]', + '[variable-2 #### bar]', + '[variable-3 ** bar]'); + + MT('olNestedWithUl', + '[variable-2 # foo]', + '[variable-3 ** bar]', + '[keyword ### bar]', + '[variable-2 **** bar]', + '[variable-3 ## bar]'); + + MT('definitionList', + '[number - coffee := Hot ][number&em _and_][number black]', + '', + 'Normal text.'); + + MT('definitionListSpan', + '[number - coffee :=]', + '', + '[number Hot ][number&em _and_][number black =:]', + '', + 'Normal text.'); + + MT('boo', + '[number - dog := woof woof]', + '[number - cat := meow meow]', + '[number - whale :=]', + '[number Whale noises.]', + '', + '[number Also, ][number&em _splashing_][number . =:]'); + + /* + * Attributes + */ + + MT('divWithAttribute', + '[punctuation div][punctuation&attribute (#my-id)][punctuation . foo bar]'); + + MT('divWithAttributeAnd2emRightPadding', + '[punctuation div][punctuation&attribute (#my-id)((][punctuation . foo bar]'); + + MT('divWithClassAndId', + '[punctuation div][punctuation&attribute (my-class#my-id)][punctuation . foo bar]'); + + MT('paragraphWithCss', + 'p[attribute {color:red;}]. foo bar'); + + MT('paragraphNestedStyles', + 'p. [strong *foo ][strong&em _bar_][strong *]'); + + MT('paragraphWithLanguage', + 'p[attribute [[fr]]]. Parlez-vous français?'); + + MT('paragraphLeftAlign', + 'p[attribute <]. Left'); + + MT('paragraphRightAlign', + 'p[attribute >]. Right'); + + MT('paragraphRightAlign', + 'p[attribute =]. Center'); + + MT('paragraphJustified', + 'p[attribute <>]. Justified'); + + MT('paragraphWithLeftIndent1em', + 'p[attribute (]. Left'); + + MT('paragraphWithRightIndent1em', + 'p[attribute )]. Right'); + + MT('paragraphWithLeftIndent2em', + 'p[attribute ((]. Left'); + + MT('paragraphWithRightIndent2em', + 'p[attribute ))]. Right'); + + MT('paragraphWithLeftIndent3emRightIndent2em', + 'p[attribute ((())]. Right'); + + MT('divFormatting', + '[punctuation div. ][punctuation&strong *foo ]' + + '[punctuation&strong&em _bar_][punctuation&strong *]'); + + MT('phraseModifierAttributes', + 'p[attribute (my-class)]. This is a paragraph that has a class and' + + ' this [em _][em&attribute (#special-phrase)][em emphasized phrase_]' + + ' has an id.'); + + MT('linkWithClass', + '[link "(my-class). This is a link with class":http://redcloth.org]'); + + /* + * Layouts + */ + + MT('paragraphLayouts', + 'p. This is one paragraph.', + '', + 'p. This is another.'); + + MT('div', + '[punctuation div. foo bar]'); + + MT('pre', + '[operator pre. Text]'); + + MT('bq.', + '[bracket bq. foo bar]', + '', + 'Normal text.'); + + MT('footnote', + '[variable fn123. foo ][variable&strong *bar*]'); + + /* + * Spanning Layouts + */ + + MT('bq..ThenParagraph', + '[bracket bq.. foo bar]', + '', + '[bracket More quote.]', + 'p. Normal Text'); + + MT('bq..ThenH1', + '[bracket bq.. foo bar]', + '', + '[bracket More quote.]', + '[header&header-1 h1. Header Text]'); + + MT('bc..ThenParagraph', + '[atom bc.. # Some ruby code]', + '[atom obj = {foo: :bar}]', + '[atom puts obj]', + '', + '[atom obj[[:love]] = "*love*"]', + '[atom puts obj.love.upcase]', + '', + 'p. Normal text.'); + + MT('fn1..ThenParagraph', + '[variable fn1.. foo bar]', + '', + '[variable More.]', + 'p. Normal Text'); + + MT('pre..ThenParagraph', + '[operator pre.. foo bar]', + '', + '[operator More.]', + 'p. Normal Text'); + + /* + * Tables + */ + + MT('table', + '[variable-3&operator |_. name |_. age|]', + '[variable-3 |][variable-3&strong *Walter*][variable-3 | 5 |]', + '[variable-3 |Florence| 6 |]', + '', + 'p. Normal text.'); + + MT('tableWithAttributes', + '[variable-3&operator |_. name |_. age|]', + '[variable-3 |][variable-3&attribute /2.][variable-3 Jim |]', + '[variable-3 |][variable-3&attribute \\2{color: red}.][variable-3 Sam |]'); + + /* + * HTML + */ + + MT('html', + '[comment
]', + '[comment
]', + '', + '[header&header-1 h1. Welcome]', + '', + '[variable-2 * Item one]', + '[variable-2 * Item two]', + '', + '[comment Example]', + '', + '[comment
]', + '[comment
]'); + + MT('inlineHtml', + 'I can use HTML directly in my [comment Textile].'); + + /* + * No-Textile + */ + + MT('notextile', + '[string-2 notextile. *No* formatting]'); + + MT('notextileInline', + 'Use [string-2 ==*asterisks*==] for [strong *strong*] text.'); + + MT('notextileWithPre', + '[operator pre. *No* formatting]'); + + MT('notextileWithSpanningPre', + '[operator pre.. *No* formatting]', + '', + '[operator *No* formatting]'); + + /* Only toggling phrases between non-word chars. */ + + MT('phrase-in-word', + 'foo_bar_baz'); + + MT('phrase-non-word', + '[negative -x-] aaa-bbb ccc-ddd [negative -eee-] fff [negative -ggg-]'); + + MT('phrase-lone-dash', + 'foo - bar - baz'); +})(); diff --git a/global/codemirror/mode/textile/textile.js b/global/codemirror/mode/textile/textile.js new file mode 100644 index 00000000..bc5a2f36 --- /dev/null +++ b/global/codemirror/mode/textile/textile.js @@ -0,0 +1,469 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") { // CommonJS + mod(require("../../lib/codemirror")); + } else if (typeof define == "function" && define.amd) { // AMD + define(["../../lib/codemirror"], mod); + } else { // Plain browser env + mod(CodeMirror); + } +})(function(CodeMirror) { + "use strict"; + + var TOKEN_STYLES = { + addition: "positive", + attributes: "attribute", + bold: "strong", + cite: "keyword", + code: "atom", + definitionList: "number", + deletion: "negative", + div: "punctuation", + em: "em", + footnote: "variable", + footCite: "qualifier", + header: "header", + html: "comment", + image: "string", + italic: "em", + link: "link", + linkDefinition: "link", + list1: "variable-2", + list2: "variable-3", + list3: "keyword", + notextile: "string-2", + pre: "operator", + p: "property", + quote: "bracket", + span: "quote", + specialChar: "tag", + strong: "strong", + sub: "builtin", + sup: "builtin", + table: "variable-3", + tableHeading: "operator" + }; + + function startNewLine(stream, state) { + state.mode = Modes.newLayout; + state.tableHeading = false; + + if (state.layoutType === "definitionList" && state.spanningLayout && + stream.match(RE("definitionListEnd"), false)) + state.spanningLayout = false; + } + + function handlePhraseModifier(stream, state, ch) { + if (ch === "_") { + if (stream.eat("_")) + return togglePhraseModifier(stream, state, "italic", /__/, 2); + else + return togglePhraseModifier(stream, state, "em", /_/, 1); + } + + if (ch === "*") { + if (stream.eat("*")) { + return togglePhraseModifier(stream, state, "bold", /\*\*/, 2); + } + return togglePhraseModifier(stream, state, "strong", /\*/, 1); + } + + if (ch === "[") { + if (stream.match(/\d+\]/)) state.footCite = true; + return tokenStyles(state); + } + + if (ch === "(") { + var spec = stream.match(/^(r|tm|c)\)/); + if (spec) + return tokenStylesWith(state, TOKEN_STYLES.specialChar); + } + + if (ch === "<" && stream.match(/(\w+)[^>]+>[^<]+<\/\1>/)) + return tokenStylesWith(state, TOKEN_STYLES.html); + + if (ch === "?" && stream.eat("?")) + return togglePhraseModifier(stream, state, "cite", /\?\?/, 2); + + if (ch === "=" && stream.eat("=")) + return togglePhraseModifier(stream, state, "notextile", /==/, 2); + + if (ch === "-" && !stream.eat("-")) + return togglePhraseModifier(stream, state, "deletion", /-/, 1); + + if (ch === "+") + return togglePhraseModifier(stream, state, "addition", /\+/, 1); + + if (ch === "~") + return togglePhraseModifier(stream, state, "sub", /~/, 1); + + if (ch === "^") + return togglePhraseModifier(stream, state, "sup", /\^/, 1); + + if (ch === "%") + return togglePhraseModifier(stream, state, "span", /%/, 1); + + if (ch === "@") + return togglePhraseModifier(stream, state, "code", /@/, 1); + + if (ch === "!") { + var type = togglePhraseModifier(stream, state, "image", /(?:\([^\)]+\))?!/, 1); + stream.match(/^:\S+/); // optional Url portion + return type; + } + return tokenStyles(state); + } + + function togglePhraseModifier(stream, state, phraseModifier, closeRE, openSize) { + var charBefore = stream.pos > openSize ? stream.string.charAt(stream.pos - openSize - 1) : null; + var charAfter = stream.peek(); + if (state[phraseModifier]) { + if ((!charAfter || /\W/.test(charAfter)) && charBefore && /\S/.test(charBefore)) { + var type = tokenStyles(state); + state[phraseModifier] = false; + return type; + } + } else if ((!charBefore || /\W/.test(charBefore)) && charAfter && /\S/.test(charAfter) && + stream.match(new RegExp("^.*\\S" + closeRE.source + "(?:\\W|$)"), false)) { + state[phraseModifier] = true; + state.mode = Modes.attributes; + } + return tokenStyles(state); + }; + + function tokenStyles(state) { + var disabled = textileDisabled(state); + if (disabled) return disabled; + + var styles = []; + if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]); + + styles = styles.concat(activeStyles( + state, "addition", "bold", "cite", "code", "deletion", "em", "footCite", + "image", "italic", "link", "span", "strong", "sub", "sup", "table", "tableHeading")); + + if (state.layoutType === "header") + styles.push(TOKEN_STYLES.header + "-" + state.header); + + return styles.length ? styles.join(" ") : null; + } + + function textileDisabled(state) { + var type = state.layoutType; + + switch(type) { + case "notextile": + case "code": + case "pre": + return TOKEN_STYLES[type]; + default: + if (state.notextile) + return TOKEN_STYLES.notextile + (type ? (" " + TOKEN_STYLES[type]) : ""); + return null; + } + } + + function tokenStylesWith(state, extraStyles) { + var disabled = textileDisabled(state); + if (disabled) return disabled; + + var type = tokenStyles(state); + if (extraStyles) + return type ? (type + " " + extraStyles) : extraStyles; + else + return type; + } + + function activeStyles(state) { + var styles = []; + for (var i = 1; i < arguments.length; ++i) { + if (state[arguments[i]]) + styles.push(TOKEN_STYLES[arguments[i]]); + } + return styles; + } + + function blankLine(state) { + var spanningLayout = state.spanningLayout, type = state.layoutType; + + for (var key in state) if (state.hasOwnProperty(key)) + delete state[key]; + + state.mode = Modes.newLayout; + if (spanningLayout) { + state.layoutType = type; + state.spanningLayout = true; + } + } + + var REs = { + cache: {}, + single: { + bc: "bc", + bq: "bq", + definitionList: /- .*?:=+/, + definitionListEnd: /.*=:\s*$/, + div: "div", + drawTable: /\|.*\|/, + foot: /fn\d+/, + header: /h[1-6]/, + html: /\s*<(?:\/)?(\w+)(?:[^>]+)?>(?:[^<]+<\/\1>)?/, + link: /[^"]+":\S/, + linkDefinition: /\[[^\s\]]+\]\S+/, + list: /(?:#+|\*+)/, + notextile: "notextile", + para: "p", + pre: "pre", + table: "table", + tableCellAttributes: /[\/\\]\d+/, + tableHeading: /\|_\./, + tableText: /[^"_\*\[\(\?\+~\^%@|-]+/, + text: /[^!"_=\*\[\(<\?\+~\^%@-]+/ + }, + attributes: { + align: /(?:<>|<|>|=)/, + selector: /\([^\(][^\)]+\)/, + lang: /\[[^\[\]]+\]/, + pad: /(?:\(+|\)+){1,2}/, + css: /\{[^\}]+\}/ + }, + createRe: function(name) { + switch (name) { + case "drawTable": + return REs.makeRe("^", REs.single.drawTable, "$"); + case "html": + return REs.makeRe("^", REs.single.html, "(?:", REs.single.html, ")*", "$"); + case "linkDefinition": + return REs.makeRe("^", REs.single.linkDefinition, "$"); + case "listLayout": + return REs.makeRe("^", REs.single.list, RE("allAttributes"), "*\\s+"); + case "tableCellAttributes": + return REs.makeRe("^", REs.choiceRe(REs.single.tableCellAttributes, + RE("allAttributes")), "+\\."); + case "type": + return REs.makeRe("^", RE("allTypes")); + case "typeLayout": + return REs.makeRe("^", RE("allTypes"), RE("allAttributes"), + "*\\.\\.?", "(\\s+|$)"); + case "attributes": + return REs.makeRe("^", RE("allAttributes"), "+"); + + case "allTypes": + return REs.choiceRe(REs.single.div, REs.single.foot, + REs.single.header, REs.single.bc, REs.single.bq, + REs.single.notextile, REs.single.pre, REs.single.table, + REs.single.para); + + case "allAttributes": + return REs.choiceRe(REs.attributes.selector, REs.attributes.css, + REs.attributes.lang, REs.attributes.align, REs.attributes.pad); + + default: + return REs.makeRe("^", REs.single[name]); + } + }, + makeRe: function() { + var pattern = ""; + for (var i = 0; i < arguments.length; ++i) { + var arg = arguments[i]; + pattern += (typeof arg === "string") ? arg : arg.source; + } + return new RegExp(pattern); + }, + choiceRe: function() { + var parts = [arguments[0]]; + for (var i = 1; i < arguments.length; ++i) { + parts[i * 2 - 1] = "|"; + parts[i * 2] = arguments[i]; + } + + parts.unshift("(?:"); + parts.push(")"); + return REs.makeRe.apply(null, parts); + } + }; + + function RE(name) { + return (REs.cache[name] || (REs.cache[name] = REs.createRe(name))); + } + + var Modes = { + newLayout: function(stream, state) { + if (stream.match(RE("typeLayout"), false)) { + state.spanningLayout = false; + return (state.mode = Modes.blockType)(stream, state); + } + var newMode; + if (!textileDisabled(state)) { + if (stream.match(RE("listLayout"), false)) + newMode = Modes.list; + else if (stream.match(RE("drawTable"), false)) + newMode = Modes.table; + else if (stream.match(RE("linkDefinition"), false)) + newMode = Modes.linkDefinition; + else if (stream.match(RE("definitionList"))) + newMode = Modes.definitionList; + else if (stream.match(RE("html"), false)) + newMode = Modes.html; + } + return (state.mode = (newMode || Modes.text))(stream, state); + }, + + blockType: function(stream, state) { + var match, type; + state.layoutType = null; + + if (match = stream.match(RE("type"))) + type = match[0]; + else + return (state.mode = Modes.text)(stream, state); + + if (match = type.match(RE("header"))) { + state.layoutType = "header"; + state.header = parseInt(match[0][1]); + } else if (type.match(RE("bq"))) { + state.layoutType = "quote"; + } else if (type.match(RE("bc"))) { + state.layoutType = "code"; + } else if (type.match(RE("foot"))) { + state.layoutType = "footnote"; + } else if (type.match(RE("notextile"))) { + state.layoutType = "notextile"; + } else if (type.match(RE("pre"))) { + state.layoutType = "pre"; + } else if (type.match(RE("div"))) { + state.layoutType = "div"; + } else if (type.match(RE("table"))) { + state.layoutType = "table"; + } + + state.mode = Modes.attributes; + return tokenStyles(state); + }, + + text: function(stream, state) { + if (stream.match(RE("text"))) return tokenStyles(state); + + var ch = stream.next(); + if (ch === '"') + return (state.mode = Modes.link)(stream, state); + return handlePhraseModifier(stream, state, ch); + }, + + attributes: function(stream, state) { + state.mode = Modes.layoutLength; + + if (stream.match(RE("attributes"))) + return tokenStylesWith(state, TOKEN_STYLES.attributes); + else + return tokenStyles(state); + }, + + layoutLength: function(stream, state) { + if (stream.eat(".") && stream.eat(".")) + state.spanningLayout = true; + + state.mode = Modes.text; + return tokenStyles(state); + }, + + list: function(stream, state) { + var match = stream.match(RE("list")); + state.listDepth = match[0].length; + var listMod = (state.listDepth - 1) % 3; + if (!listMod) + state.layoutType = "list1"; + else if (listMod === 1) + state.layoutType = "list2"; + else + state.layoutType = "list3"; + + state.mode = Modes.attributes; + return tokenStyles(state); + }, + + link: function(stream, state) { + state.mode = Modes.text; + if (stream.match(RE("link"))) { + stream.match(/\S+/); + return tokenStylesWith(state, TOKEN_STYLES.link); + } + return tokenStyles(state); + }, + + linkDefinition: function(stream, state) { + stream.skipToEnd(); + return tokenStylesWith(state, TOKEN_STYLES.linkDefinition); + }, + + definitionList: function(stream, state) { + stream.match(RE("definitionList")); + + state.layoutType = "definitionList"; + + if (stream.match(/\s*$/)) + state.spanningLayout = true; + else + state.mode = Modes.attributes; + + return tokenStyles(state); + }, + + html: function(stream, state) { + stream.skipToEnd(); + return tokenStylesWith(state, TOKEN_STYLES.html); + }, + + table: function(stream, state) { + state.layoutType = "table"; + return (state.mode = Modes.tableCell)(stream, state); + }, + + tableCell: function(stream, state) { + if (stream.match(RE("tableHeading"))) + state.tableHeading = true; + else + stream.eat("|"); + + state.mode = Modes.tableCellAttributes; + return tokenStyles(state); + }, + + tableCellAttributes: function(stream, state) { + state.mode = Modes.tableText; + + if (stream.match(RE("tableCellAttributes"))) + return tokenStylesWith(state, TOKEN_STYLES.attributes); + else + return tokenStyles(state); + }, + + tableText: function(stream, state) { + if (stream.match(RE("tableText"))) + return tokenStyles(state); + + if (stream.peek() === "|") { // end of cell + state.mode = Modes.tableCell; + return tokenStyles(state); + } + return handlePhraseModifier(stream, state, stream.next()); + } + }; + + CodeMirror.defineMode("textile", function() { + return { + startState: function() { + return { mode: Modes.newLayout }; + }, + token: function(stream, state) { + if (stream.sol()) startNewLine(stream, state); + return state.mode(stream, state); + }, + blankLine: blankLine + }; + }); + + CodeMirror.defineMIME("text/x-textile", "textile"); +}); diff --git a/global/codemirror/mode/tiddlywiki/index.html b/global/codemirror/mode/tiddlywiki/index.html new file mode 100644 index 00000000..77dd0457 --- /dev/null +++ b/global/codemirror/mode/tiddlywiki/index.html @@ -0,0 +1,154 @@ + + +CodeMirror: TiddlyWiki mode + + + + + + + + + + + +
+

TiddlyWiki mode

+ + +
+ + + +

TiddlyWiki mode supports a single configuration.

+ +

MIME types defined: text/x-tiddlywiki.

+
diff --git a/global/codemirror/mode/tiddlywiki/tiddlywiki.css b/global/codemirror/mode/tiddlywiki/tiddlywiki.css new file mode 100644 index 00000000..9a69b639 --- /dev/null +++ b/global/codemirror/mode/tiddlywiki/tiddlywiki.css @@ -0,0 +1,14 @@ +span.cm-underlined { + text-decoration: underline; +} +span.cm-strikethrough { + text-decoration: line-through; +} +span.cm-brace { + color: #170; + font-weight: bold; +} +span.cm-table { + color: blue; + font-weight: bold; +} diff --git a/global/codemirror/mode/tiddlywiki/tiddlywiki.js b/global/codemirror/mode/tiddlywiki/tiddlywiki.js new file mode 100644 index 00000000..1a3b3bc6 --- /dev/null +++ b/global/codemirror/mode/tiddlywiki/tiddlywiki.js @@ -0,0 +1,308 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/*** + |''Name''|tiddlywiki.js| + |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror| + |''Author''|PMario| + |''Version''|0.1.7| + |''Status''|''stable''| + |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]| + |''Documentation''|http://codemirror.tiddlyspace.com/| + |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]| + |''CoreVersion''|2.5.0| + |''Requires''|codemirror.js| + |''Keywords''|syntax highlighting color code mirror codemirror| + ! Info + CoreVersion parameter is needed for TiddlyWiki only! +***/ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("tiddlywiki", function () { + // Tokenizer + var textwords = {}; + + var keywords = { + "allTags": true, "closeAll": true, "list": true, + "newJournal": true, "newTiddler": true, + "permaview": true, "saveChanges": true, + "search": true, "slider": true, "tabs": true, + "tag": true, "tagging": true, "tags": true, + "tiddler": true, "timeline": true, + "today": true, "version": true, "option": true, + "with": true, "filter": true + }; + + var isSpaceName = /[\w_\-]/i, + reHR = /^\-\-\-\-+$/, //
+ reWikiCommentStart = /^\/\*\*\*$/, // /*** + reWikiCommentStop = /^\*\*\*\/$/, // ***/ + reBlockQuote = /^<<<$/, + + reJsCodeStart = /^\/\/\{\{\{$/, // //{{{ js block start + reJsCodeStop = /^\/\/\}\}\}$/, // //}}} js stop + reXmlCodeStart = /^$/, // xml block start + reXmlCodeStop = /^$/, // xml stop + + reCodeBlockStart = /^\{\{\{$/, // {{{ TW text div block start + reCodeBlockStop = /^\}\}\}$/, // }}} TW text stop + + reUntilCodeStop = /.*?\}\}\}/; + + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + + function tokenBase(stream, state) { + var sol = stream.sol(), ch = stream.peek(); + + state.block = false; // indicates the start of a code block. + + // check start of blocks + if (sol && /[<\/\*{}\-]/.test(ch)) { + if (stream.match(reCodeBlockStart)) { + state.block = true; + return chain(stream, state, twTokenCode); + } + if (stream.match(reBlockQuote)) + return 'quote'; + if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop)) + return 'comment'; + if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop)) + return 'comment'; + if (stream.match(reHR)) + return 'hr'; + } + + stream.next(); + if (sol && /[\/\*!#;:>|]/.test(ch)) { + if (ch == "!") { // tw header + stream.skipToEnd(); + return "header"; + } + if (ch == "*") { // tw list + stream.eatWhile('*'); + return "comment"; + } + if (ch == "#") { // tw numbered list + stream.eatWhile('#'); + return "comment"; + } + if (ch == ";") { // definition list, term + stream.eatWhile(';'); + return "comment"; + } + if (ch == ":") { // definition list, description + stream.eatWhile(':'); + return "comment"; + } + if (ch == ">") { // single line quote + stream.eatWhile(">"); + return "quote"; + } + if (ch == '|') + return 'header'; + } + + if (ch == '{' && stream.match(/\{\{/)) + return chain(stream, state, twTokenCode); + + // rudimentary html:// file:// link matching. TW knows much more ... + if (/[hf]/i.test(ch) && + /[ti]/i.test(stream.peek()) && + stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i)) + return "link"; + + // just a little string indicator, don't want to have the whole string covered + if (ch == '"') + return 'string'; + + if (ch == '~') // _no_ CamelCase indicator should be bold + return 'brace'; + + if (/[\[\]]/.test(ch) && stream.match(ch)) // check for [[..]] + return 'brace'; + + if (ch == "@") { // check for space link. TODO fix @@...@@ highlighting + stream.eatWhile(isSpaceName); + return "link"; + } + + if (/\d/.test(ch)) { // numbers + stream.eatWhile(/\d/); + return "number"; + } + + if (ch == "/") { // tw invisible comment + if (stream.eat("%")) { + return chain(stream, state, twTokenComment); + } else if (stream.eat("/")) { // + return chain(stream, state, twTokenEm); + } + } + + if (ch == "_" && stream.eat("_")) // tw underline + return chain(stream, state, twTokenUnderline); + + // strikethrough and mdash handling + if (ch == "-" && stream.eat("-")) { + // if strikethrough looks ugly, change CSS. + if (stream.peek() != ' ') + return chain(stream, state, twTokenStrike); + // mdash + if (stream.peek() == ' ') + return 'brace'; + } + + if (ch == "'" && stream.eat("'")) // tw bold + return chain(stream, state, twTokenStrong); + + if (ch == "<" && stream.eat("<")) // tw macro + return chain(stream, state, twTokenMacro); + + // core macro handling + stream.eatWhile(/[\w\$_]/); + return textwords.propertyIsEnumerable(stream.current()) ? "keyword" : null + } + + // tw invisible comment + function twTokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "%"); + } + return "comment"; + } + + // tw strong / bold + function twTokenStrong(stream, state) { + var maybeEnd = false, + ch; + while (ch = stream.next()) { + if (ch == "'" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "'"); + } + return "strong"; + } + + // tw code + function twTokenCode(stream, state) { + var sb = state.block; + + if (sb && stream.current()) { + return "comment"; + } + + if (!sb && stream.match(reUntilCodeStop)) { + state.tokenize = tokenBase; + return "comment"; + } + + if (sb && stream.sol() && stream.match(reCodeBlockStop)) { + state.tokenize = tokenBase; + return "comment"; + } + + stream.next(); + return "comment"; + } + + // tw em / italic + function twTokenEm(stream, state) { + var maybeEnd = false, + ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "/"); + } + return "em"; + } + + // tw underlined text + function twTokenUnderline(stream, state) { + var maybeEnd = false, + ch; + while (ch = stream.next()) { + if (ch == "_" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "_"); + } + return "underlined"; + } + + // tw strike through text looks ugly + // change CSS if needed + function twTokenStrike(stream, state) { + var maybeEnd = false, ch; + + while (ch = stream.next()) { + if (ch == "-" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "-"); + } + return "strikethrough"; + } + + // macro + function twTokenMacro(stream, state) { + if (stream.current() == '<<') { + return 'macro'; + } + + var ch = stream.next(); + if (!ch) { + state.tokenize = tokenBase; + return null; + } + if (ch == ">") { + if (stream.peek() == '>') { + stream.next(); + state.tokenize = tokenBase; + return "macro"; + } + } + + stream.eatWhile(/[\w\$_]/); + return keywords.propertyIsEnumerable(stream.current()) ? "keyword" : null + } + + // Interface + return { + startState: function () { + return {tokenize: tokenBase}; + }, + + token: function (stream, state) { + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + return style; + } + }; +}); + +CodeMirror.defineMIME("text/x-tiddlywiki", "tiddlywiki"); +}); diff --git a/global/codemirror/mode/tiki/index.html b/global/codemirror/mode/tiki/index.html new file mode 100644 index 00000000..091c5fb2 --- /dev/null +++ b/global/codemirror/mode/tiki/index.html @@ -0,0 +1,95 @@ + + +CodeMirror: Tiki wiki mode + + + + + + + + + + +
+

Tiki wiki mode

+ + +
+ + + +
diff --git a/global/codemirror/mode/tiki/tiki.css b/global/codemirror/mode/tiki/tiki.css new file mode 100644 index 00000000..1d8704c7 --- /dev/null +++ b/global/codemirror/mode/tiki/tiki.css @@ -0,0 +1,26 @@ +.cm-tw-syntaxerror { + color: #FFF; + background-color: #900; +} + +.cm-tw-deleted { + text-decoration: line-through; +} + +.cm-tw-header5 { + font-weight: bold; +} +.cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ + padding-left: 10px; +} + +.cm-tw-box { + border-top-width: 0px !important; + border-style: solid; + border-width: 1px; + border-color: inherit; +} + +.cm-tw-underline { + text-decoration: underline; +} \ No newline at end of file diff --git a/global/codemirror/mode/tiki/tiki.js b/global/codemirror/mode/tiki/tiki.js new file mode 100644 index 00000000..b4794e43 --- /dev/null +++ b/global/codemirror/mode/tiki/tiki.js @@ -0,0 +1,312 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('tiki', function(config) { + function inBlock(style, terminator, returnTokenizer) { + return function(stream, state) { + while (!stream.eol()) { + if (stream.match(terminator)) { + state.tokenize = inText; + break; + } + stream.next(); + } + + if (returnTokenizer) state.tokenize = returnTokenizer; + + return style; + }; + } + + function inLine(style) { + return function(stream, state) { + while(!stream.eol()) { + stream.next(); + } + state.tokenize = inText; + return style; + }; + } + + function inText(stream, state) { + function chain(parser) { + state.tokenize = parser; + return parser(stream, state); + } + + var sol = stream.sol(); + var ch = stream.next(); + + //non start of line + switch (ch) { //switch is generally much faster than if, so it is used here + case "{": //plugin + stream.eat("/"); + stream.eatSpace(); + stream.eatWhile(/[^\s\u00a0=\"\'\/?(}]/); + state.tokenize = inPlugin; + return "tag"; + case "_": //bold + if (stream.eat("_")) + return chain(inBlock("strong", "__", inText)); + break; + case "'": //italics + if (stream.eat("'")) + return chain(inBlock("em", "''", inText)); + break; + case "(":// Wiki Link + if (stream.eat("(")) + return chain(inBlock("variable-2", "))", inText)); + break; + case "[":// Weblink + return chain(inBlock("variable-3", "]", inText)); + break; + case "|": //table + if (stream.eat("|")) + return chain(inBlock("comment", "||")); + break; + case "-": + if (stream.eat("=")) {//titleBar + return chain(inBlock("header string", "=-", inText)); + } else if (stream.eat("-")) {//deleted + return chain(inBlock("error tw-deleted", "--", inText)); + } + break; + case "=": //underline + if (stream.match("==")) + return chain(inBlock("tw-underline", "===", inText)); + break; + case ":": + if (stream.eat(":")) + return chain(inBlock("comment", "::")); + break; + case "^": //box + return chain(inBlock("tw-box", "^")); + break; + case "~": //np + if (stream.match("np~")) + return chain(inBlock("meta", "~/np~")); + break; + } + + //start of line types + if (sol) { + switch (ch) { + case "!": //header at start of line + if (stream.match('!!!!!')) { + return chain(inLine("header string")); + } else if (stream.match('!!!!')) { + return chain(inLine("header string")); + } else if (stream.match('!!!')) { + return chain(inLine("header string")); + } else if (stream.match('!!')) { + return chain(inLine("header string")); + } else { + return chain(inLine("header string")); + } + break; + case "*": //unordered list line item, or
  • at start of line + case "#": //ordered list line item, or
  • at start of line + case "+": //ordered list line item, or
  • at start of line + return chain(inLine("tw-listitem bracket")); + break; + } + } + + //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki + return null; + } + + var indentUnit = config.indentUnit; + + // Return variables for tokenizers + var pluginName, type; + function inPlugin(stream, state) { + var ch = stream.next(); + var peek = stream.peek(); + + if (ch == "}") { + state.tokenize = inText; + //type = ch == ")" ? "endPlugin" : "selfclosePlugin"; inPlugin + return "tag"; + } else if (ch == "(" || ch == ")") { + return "bracket"; + } else if (ch == "=") { + type = "equals"; + + if (peek == ">") { + stream.next(); + peek = stream.peek(); + } + + //here we detect values directly after equal character with no quotes + if (!/[\'\"]/.test(peek)) { + state.tokenize = inAttributeNoQuote(); + } + //end detect values + + return "operator"; + } else if (/[\'\"]/.test(ch)) { + state.tokenize = inAttribute(ch); + return state.tokenize(stream, state); + } else { + stream.eatWhile(/[^\s\u00a0=\"\'\/?]/); + return "keyword"; + } + } + + function inAttribute(quote) { + return function(stream, state) { + while (!stream.eol()) { + if (stream.next() == quote) { + state.tokenize = inPlugin; + break; + } + } + return "string"; + }; + } + + function inAttributeNoQuote() { + return function(stream, state) { + while (!stream.eol()) { + var ch = stream.next(); + var peek = stream.peek(); + if (ch == " " || ch == "," || /[ )}]/.test(peek)) { + state.tokenize = inPlugin; + break; + } + } + return "string"; +}; + } + +var curState, setStyle; +function pass() { + for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]); +} + +function cont() { + pass.apply(null, arguments); + return true; +} + +function pushContext(pluginName, startOfLine) { + var noIndent = curState.context && curState.context.noIndent; + curState.context = { + prev: curState.context, + pluginName: pluginName, + indent: curState.indented, + startOfLine: startOfLine, + noIndent: noIndent + }; +} + +function popContext() { + if (curState.context) curState.context = curState.context.prev; +} + +function element(type) { + if (type == "openPlugin") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));} + else if (type == "closePlugin") { + var err = false; + if (curState.context) { + err = curState.context.pluginName != pluginName; + popContext(); + } else { + err = true; + } + if (err) setStyle = "error"; + return cont(endcloseplugin(err)); + } + else if (type == "string") { + if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata"); + if (curState.tokenize == inText) popContext(); + return cont(); + } + else return cont(); +} + +function endplugin(startOfLine) { + return function(type) { + if ( + type == "selfclosePlugin" || + type == "endPlugin" + ) + return cont(); + if (type == "endPlugin") {pushContext(curState.pluginName, startOfLine); return cont();} + return cont(); + }; +} + +function endcloseplugin(err) { + return function(type) { + if (err) setStyle = "error"; + if (type == "endPlugin") return cont(); + return pass(); + }; +} + +function attributes(type) { + if (type == "keyword") {setStyle = "attribute"; return cont(attributes);} + if (type == "equals") return cont(attvalue, attributes); + return pass(); +} +function attvalue(type) { + if (type == "keyword") {setStyle = "string"; return cont();} + if (type == "string") return cont(attvaluemaybe); + return pass(); +} +function attvaluemaybe(type) { + if (type == "string") return cont(attvaluemaybe); + else return pass(); +} +return { + startState: function() { + return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null}; + }, + token: function(stream, state) { + if (stream.sol()) { + state.startOfLine = true; + state.indented = stream.indentation(); + } + if (stream.eatSpace()) return null; + + setStyle = type = pluginName = null; + var style = state.tokenize(stream, state); + if ((style || type) && style != "comment") { + curState = state; + while (true) { + var comb = state.cc.pop() || element; + if (comb(type || style)) break; + } + } + state.startOfLine = false; + return setStyle || style; + }, + indent: function(state, textAfter) { + var context = state.context; + if (context && context.noIndent) return 0; + if (context && /^{\//.test(textAfter)) + context = context.prev; + while (context && !context.startOfLine) + context = context.prev; + if (context) return context.indent + indentUnit; + else return 0; + }, + electricChars: "/" +}; +}); + +CodeMirror.defineMIME("text/tiki", "tiki"); + +}); diff --git a/global/codemirror/mode/toml/index.html b/global/codemirror/mode/toml/index.html new file mode 100644 index 00000000..90a2a021 --- /dev/null +++ b/global/codemirror/mode/toml/index.html @@ -0,0 +1,73 @@ + + +CodeMirror: TOML Mode + + + + + + + + + +
    +

    TOML Mode

    +
    + +

    The TOML Mode

    +

    Created by Forbes Lindesay.

    +

    MIME type defined: text/x-toml.

    +
    diff --git a/global/codemirror/mode/toml/toml.js b/global/codemirror/mode/toml/toml.js new file mode 100644 index 00000000..baeca155 --- /dev/null +++ b/global/codemirror/mode/toml/toml.js @@ -0,0 +1,88 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("toml", function () { + return { + startState: function () { + return { + inString: false, + stringType: "", + lhs: true, + inArray: 0 + }; + }, + token: function (stream, state) { + //check for state changes + if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) { + state.stringType = stream.peek(); + stream.next(); // Skip quote + state.inString = true; // Update state + } + if (stream.sol() && state.inArray === 0) { + state.lhs = true; + } + //return state + if (state.inString) { + while (state.inString && !stream.eol()) { + if (stream.peek() === state.stringType) { + stream.next(); // Skip quote + state.inString = false; // Clear flag + } else if (stream.peek() === '\\') { + stream.next(); + stream.next(); + } else { + stream.match(/^.[^\\\"\']*/); + } + } + return state.lhs ? "property string" : "string"; // Token style + } else if (state.inArray && stream.peek() === ']') { + stream.next(); + state.inArray--; + return 'bracket'; + } else if (state.lhs && stream.peek() === '[' && stream.skipTo(']')) { + stream.next();//skip closing ] + // array of objects has an extra open & close [] + if (stream.peek() === ']') stream.next(); + return "atom"; + } else if (stream.peek() === "#") { + stream.skipToEnd(); + return "comment"; + } else if (stream.eatSpace()) { + return null; + } else if (state.lhs && stream.eatWhile(function (c) { return c != '=' && c != ' '; })) { + return "property"; + } else if (state.lhs && stream.peek() === "=") { + stream.next(); + state.lhs = false; + return null; + } else if (!state.lhs && stream.match(/^\d\d\d\d[\d\-\:\.T]*Z/)) { + return 'atom'; //date + } else if (!state.lhs && (stream.match('true') || stream.match('false'))) { + return 'atom'; + } else if (!state.lhs && stream.peek() === '[') { + state.inArray++; + stream.next(); + return 'bracket'; + } else if (!state.lhs && stream.match(/^\-?\d+(?:\.\d+)?/)) { + return 'number'; + } else if (!stream.eatSpace()) { + stream.next(); + } + return null; + } + }; +}); + +CodeMirror.defineMIME('text/x-toml', 'toml'); + +}); diff --git a/global/codemirror/mode/tornado/index.html b/global/codemirror/mode/tornado/index.html new file mode 100644 index 00000000..8ee7ef56 --- /dev/null +++ b/global/codemirror/mode/tornado/index.html @@ -0,0 +1,63 @@ + + +CodeMirror: Tornado template mode + + + + + + + + + + + + +
    +

    Tornado template mode

    +
    + + + +

    Mode for HTML with embedded Tornado template markup.

    + +

    MIME types defined: text/x-tornado

    +
    diff --git a/global/codemirror/mode/tornado/tornado.js b/global/codemirror/mode/tornado/tornado.js new file mode 100644 index 00000000..dbfbc348 --- /dev/null +++ b/global/codemirror/mode/tornado/tornado.js @@ -0,0 +1,68 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), + require("../../addon/mode/overlay")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../htmlmixed/htmlmixed", + "../../addon/mode/overlay"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("tornado:inner", function() { + var keywords = ["and","as","assert","autoescape","block","break","class","comment","context", + "continue","datetime","def","del","elif","else","end","escape","except", + "exec","extends","false","finally","for","from","global","if","import","in", + "include","is","json_encode","lambda","length","linkify","load","module", + "none","not","or","pass","print","put","raise","raw","return","self","set", + "squeeze","super","true","try","url_escape","while","with","without","xhtml_escape","yield"]; + keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b"); + + function tokenBase (stream, state) { + stream.eatWhile(/[^\{]/); + var ch = stream.next(); + if (ch == "{") { + if (ch = stream.eat(/\{|%|#/)) { + state.tokenize = inTag(ch); + return "tag"; + } + } + } + function inTag (close) { + if (close == "{") { + close = "}"; + } + return function (stream, state) { + var ch = stream.next(); + if ((ch == close) && stream.eat("}")) { + state.tokenize = tokenBase; + return "tag"; + } + if (stream.match(keywords)) { + return "keyword"; + } + return close == "#" ? "comment" : "string"; + }; + } + return { + startState: function () { + return {tokenize: tokenBase}; + }, + token: function (stream, state) { + return state.tokenize(stream, state); + } + }; + }); + + CodeMirror.defineMode("tornado", function(config) { + var htmlBase = CodeMirror.getMode(config, "text/html"); + var tornadoInner = CodeMirror.getMode(config, "tornado:inner"); + return CodeMirror.overlayMode(htmlBase, tornadoInner); + }); + + CodeMirror.defineMIME("text/x-tornado", "tornado"); +}); diff --git a/global/codemirror/mode/troff/index.html b/global/codemirror/mode/troff/index.html new file mode 100644 index 00000000..7c5a54e5 --- /dev/null +++ b/global/codemirror/mode/troff/index.html @@ -0,0 +1,146 @@ + + +CodeMirror: troff mode + + + + + + + + + + +
    +

    troff

    + + + + + + +

    MIME types defined: troff.

    +
    diff --git a/global/codemirror/mode/troff/troff.js b/global/codemirror/mode/troff/troff.js new file mode 100644 index 00000000..86154b6e --- /dev/null +++ b/global/codemirror/mode/troff/troff.js @@ -0,0 +1,84 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) + define(["../../lib/codemirror"], mod); + else + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('troff', function() { + + var words = {}; + + function tokenBase(stream) { + if (stream.eatSpace()) return null; + + var sol = stream.sol(); + var ch = stream.next(); + + if (ch === '\\') { + if (stream.match('fB') || stream.match('fR') || stream.match('fI') || + stream.match('u') || stream.match('d') || + stream.match('%') || stream.match('&')) { + return 'string'; + } + if (stream.match('m[')) { + stream.skipTo(']'); + stream.next(); + return 'string'; + } + if (stream.match('s+') || stream.match('s-')) { + stream.eatWhile(/[\d-]/); + return 'string'; + } + if (stream.match('\(') || stream.match('*\(')) { + stream.eatWhile(/[\w-]/); + return 'string'; + } + return 'string'; + } + if (sol && (ch === '.' || ch === '\'')) { + if (stream.eat('\\') && stream.eat('\"')) { + stream.skipToEnd(); + return 'comment'; + } + } + if (sol && ch === '.') { + if (stream.match('B ') || stream.match('I ') || stream.match('R ')) { + return 'attribute'; + } + if (stream.match('TH ') || stream.match('SH ') || stream.match('SS ') || stream.match('HP ')) { + stream.skipToEnd(); + return 'quote'; + } + if ((stream.match(/[A-Z]/) && stream.match(/[A-Z]/)) || (stream.match(/[a-z]/) && stream.match(/[a-z]/))) { + return 'attribute'; + } + } + stream.eatWhile(/[\w-]/); + var cur = stream.current(); + return words.hasOwnProperty(cur) ? words[cur] : null; + } + + function tokenize(stream, state) { + return (state.tokens[0] || tokenBase) (stream, state); + }; + + return { + startState: function() {return {tokens:[]};}, + token: function(stream, state) { + return tokenize(stream, state); + } + }; +}); + +CodeMirror.defineMIME('text/troff', 'troff'); +CodeMirror.defineMIME('text/x-troff', 'troff'); +CodeMirror.defineMIME('application/x-troff', 'troff'); + +}); diff --git a/global/codemirror/mode/ttcn-cfg/index.html b/global/codemirror/mode/ttcn-cfg/index.html new file mode 100644 index 00000000..4a4cd457 --- /dev/null +++ b/global/codemirror/mode/ttcn-cfg/index.html @@ -0,0 +1,115 @@ + + +CodeMirror: TTCN-CFG mode + + + + + + + + +
    +

    TTCN-CFG example

    +
    + +
    + + +
    +

    Language: Testing and Test Control Notation - + Configuration files + (TTCN-CFG) +

    +

    MIME types defined: text/x-ttcn-cfg.

    + +
    +

    The development of this mode has been sponsored by Ericsson + .

    +

    Coded by Asmelash Tsegay Gebretsadkan

    +
    + diff --git a/global/codemirror/mode/ttcn-cfg/ttcn-cfg.js b/global/codemirror/mode/ttcn-cfg/ttcn-cfg.js new file mode 100644 index 00000000..e1080511 --- /dev/null +++ b/global/codemirror/mode/ttcn-cfg/ttcn-cfg.js @@ -0,0 +1,214 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("ttcn-cfg", function(config, parserConfig) { + var indentUnit = config.indentUnit, + keywords = parserConfig.keywords || {}, + fileNCtrlMaskOptions = parserConfig.fileNCtrlMaskOptions || {}, + externalCommands = parserConfig.externalCommands || {}, + multiLineStrings = parserConfig.multiLineStrings, + indentStatements = parserConfig.indentStatements !== false; + var isOperatorChar = /[\|]/; + var curPunc; + + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + if (/[:=]/.test(ch)) { + curPunc = ch; + return "punctuation"; + } + if (ch == "#"){ + stream.skipToEnd(); + return "comment"; + } + if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } + if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return "operator"; + } + if (ch == "["){ + stream.eatWhile(/[\w_\]]/); + return "number sectionTitle"; + } + + stream.eatWhile(/[\w\$_]/); + var cur = stream.current(); + if (keywords.propertyIsEnumerable(cur)) return "keyword"; + if (fileNCtrlMaskOptions.propertyIsEnumerable(cur)) + return "negative fileNCtrlMaskOptions"; + if (externalCommands.propertyIsEnumerable(cur)) return "negative externalCommands"; + + return "variable"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped){ + var afterNext = stream.peek(); + //look if the character if the quote is like the B in '10100010'B + if (afterNext){ + afterNext = afterNext.toLowerCase(); + if(afterNext == "b" || afterNext == "h" || afterNext == "o") + stream.next(); + } + end = true; break; + } + escaped = !escaped && next == "\\"; + } + if (end || !(escaped || multiLineStrings)) + state.tokenize = null; + return "string"; + }; + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + function pushContext(state, col, type) { + var indent = state.indented; + if (state.context && state.context.type == "statement") + indent = state.context.indented; + return state.context = new Context(indent, col, type, null, state.context); + } + function popContext(state) { + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") + state.indented = state.context.indented; + return state.context = state.context.prev; + } + + //Interface + return { + startState: function(basecolumn) { + return { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (stream.eatSpace()) return null; + curPunc = null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment") return style; + if (ctx.align == null) ctx.align = true; + + if ((curPunc == ";" || curPunc == ":" || curPunc == ",") + && ctx.type == "statement"){ + popContext(state); + } + else if (curPunc == "{") pushContext(state, stream.column(), "}"); + else if (curPunc == "[") pushContext(state, stream.column(), "]"); + else if (curPunc == "(") pushContext(state, stream.column(), ")"); + else if (curPunc == "}") { + while (ctx.type == "statement") ctx = popContext(state); + if (ctx.type == "}") ctx = popContext(state); + while (ctx.type == "statement") ctx = popContext(state); + } + else if (curPunc == ctx.type) popContext(state); + else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") + && curPunc != ';') || (ctx.type == "statement" + && curPunc == "newstatement"))) + pushContext(state, stream.column(), "statement"); + state.startOfLine = false; + return style; + }, + + electricChars: "{}", + lineComment: "#", + fold: "brace" + }; + }); + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) + obj[words[i]] = true; + return obj; + } + + CodeMirror.defineMIME("text/x-ttcn-cfg", { + name: "ttcn-cfg", + keywords: words("Yes No LogFile FileMask ConsoleMask AppendFile" + + " TimeStampFormat LogEventTypes SourceInfoFormat" + + " LogEntityName LogSourceInfo DiskFullAction" + + " LogFileNumber LogFileSize MatchingHints Detailed" + + " Compact SubCategories Stack Single None Seconds" + + " DateTime Time Stop Error Retry Delete TCPPort KillTimer" + + " NumHCs UnixSocketsEnabled LocalAddress"), + fileNCtrlMaskOptions: words("TTCN_EXECUTOR TTCN_ERROR TTCN_WARNING" + + " TTCN_PORTEVENT TTCN_TIMEROP TTCN_VERDICTOP" + + " TTCN_DEFAULTOP TTCN_TESTCASE TTCN_ACTION" + + " TTCN_USER TTCN_FUNCTION TTCN_STATISTICS" + + " TTCN_PARALLEL TTCN_MATCHING TTCN_DEBUG" + + " EXECUTOR ERROR WARNING PORTEVENT TIMEROP" + + " VERDICTOP DEFAULTOP TESTCASE ACTION USER" + + " FUNCTION STATISTICS PARALLEL MATCHING DEBUG" + + " LOG_ALL LOG_NOTHING ACTION_UNQUALIFIED" + + " DEBUG_ENCDEC DEBUG_TESTPORT" + + " DEBUG_UNQUALIFIED DEFAULTOP_ACTIVATE" + + " DEFAULTOP_DEACTIVATE DEFAULTOP_EXIT" + + " DEFAULTOP_UNQUALIFIED ERROR_UNQUALIFIED" + + " EXECUTOR_COMPONENT EXECUTOR_CONFIGDATA" + + " EXECUTOR_EXTCOMMAND EXECUTOR_LOGOPTIONS" + + " EXECUTOR_RUNTIME EXECUTOR_UNQUALIFIED" + + " FUNCTION_RND FUNCTION_UNQUALIFIED" + + " MATCHING_DONE MATCHING_MCSUCCESS" + + " MATCHING_MCUNSUCC MATCHING_MMSUCCESS" + + " MATCHING_MMUNSUCC MATCHING_PCSUCCESS" + + " MATCHING_PCUNSUCC MATCHING_PMSUCCESS" + + " MATCHING_PMUNSUCC MATCHING_PROBLEM" + + " MATCHING_TIMEOUT MATCHING_UNQUALIFIED" + + " PARALLEL_PORTCONN PARALLEL_PORTMAP" + + " PARALLEL_PTC PARALLEL_UNQUALIFIED" + + " PORTEVENT_DUALRECV PORTEVENT_DUALSEND" + + " PORTEVENT_MCRECV PORTEVENT_MCSEND" + + " PORTEVENT_MMRECV PORTEVENT_MMSEND" + + " PORTEVENT_MQUEUE PORTEVENT_PCIN" + + " PORTEVENT_PCOUT PORTEVENT_PMIN" + + " PORTEVENT_PMOUT PORTEVENT_PQUEUE" + + " PORTEVENT_STATE PORTEVENT_UNQUALIFIED" + + " STATISTICS_UNQUALIFIED STATISTICS_VERDICT" + + " TESTCASE_FINISH TESTCASE_START" + + " TESTCASE_UNQUALIFIED TIMEROP_GUARD" + + " TIMEROP_READ TIMEROP_START TIMEROP_STOP" + + " TIMEROP_TIMEOUT TIMEROP_UNQUALIFIED" + + " USER_UNQUALIFIED VERDICTOP_FINAL" + + " VERDICTOP_GETVERDICT VERDICTOP_SETVERDICT" + + " VERDICTOP_UNQUALIFIED WARNING_UNQUALIFIED"), + externalCommands: words("BeginControlPart EndControlPart BeginTestCase" + + " EndTestCase"), + multiLineStrings: true + }); +}); \ No newline at end of file diff --git a/global/codemirror/mode/ttcn/index.html b/global/codemirror/mode/ttcn/index.html new file mode 100644 index 00000000..f1ef8113 --- /dev/null +++ b/global/codemirror/mode/ttcn/index.html @@ -0,0 +1,118 @@ + + +CodeMirror: TTCN mode + + + + + + + + +
    +

    TTCN example

    +
    + +
    + + +
    +

    Language: Testing and Test Control Notation + (TTCN) +

    +

    MIME types defined: text/x-ttcn, + text/x-ttcn3, text/x-ttcnpp.

    +
    +

    The development of this mode has been sponsored by Ericsson + .

    +

    Coded by Asmelash Tsegay Gebretsadkan

    +
    + diff --git a/global/codemirror/mode/ttcn/ttcn.js b/global/codemirror/mode/ttcn/ttcn.js new file mode 100644 index 00000000..30518517 --- /dev/null +++ b/global/codemirror/mode/ttcn/ttcn.js @@ -0,0 +1,283 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("ttcn", function(config, parserConfig) { + var indentUnit = config.indentUnit, + keywords = parserConfig.keywords || {}, + builtin = parserConfig.builtin || {}, + timerOps = parserConfig.timerOps || {}, + portOps = parserConfig.portOps || {}, + configOps = parserConfig.configOps || {}, + verdictOps = parserConfig.verdictOps || {}, + sutOps = parserConfig.sutOps || {}, + functionOps = parserConfig.functionOps || {}, + + verdictConsts = parserConfig.verdictConsts || {}, + booleanConsts = parserConfig.booleanConsts || {}, + otherConsts = parserConfig.otherConsts || {}, + + types = parserConfig.types || {}, + visibilityModifiers = parserConfig.visibilityModifiers || {}, + templateMatch = parserConfig.templateMatch || {}, + multiLineStrings = parserConfig.multiLineStrings, + indentStatements = parserConfig.indentStatements !== false; + var isOperatorChar = /[+\-*&@=<>!\/]/; + var curPunc; + + function tokenBase(stream, state) { + var ch = stream.next(); + + if (ch == '"' || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + if (/[\[\]{}\(\),;\\:\?\.]/.test(ch)) { + curPunc = ch; + return "punctuation"; + } + if (ch == "#"){ + stream.skipToEnd(); + return "atom preprocessor"; + } + if (ch == "%"){ + stream.eatWhile(/\b/); + return "atom ttcn3Macros"; + } + if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/); + return "number"; + } + if (ch == "/") { + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + } + if (isOperatorChar.test(ch)) { + if(ch == "@"){ + if(stream.match("try") || stream.match("catch") + || stream.match("lazy")){ + return "keyword"; + } + } + stream.eatWhile(isOperatorChar); + return "operator"; + } + stream.eatWhile(/[\w\$_\xa1-\uffff]/); + var cur = stream.current(); + + if (keywords.propertyIsEnumerable(cur)) return "keyword"; + if (builtin.propertyIsEnumerable(cur)) return "builtin"; + + if (timerOps.propertyIsEnumerable(cur)) return "def timerOps"; + if (configOps.propertyIsEnumerable(cur)) return "def configOps"; + if (verdictOps.propertyIsEnumerable(cur)) return "def verdictOps"; + if (portOps.propertyIsEnumerable(cur)) return "def portOps"; + if (sutOps.propertyIsEnumerable(cur)) return "def sutOps"; + if (functionOps.propertyIsEnumerable(cur)) return "def functionOps"; + + if (verdictConsts.propertyIsEnumerable(cur)) return "string verdictConsts"; + if (booleanConsts.propertyIsEnumerable(cur)) return "string booleanConsts"; + if (otherConsts.propertyIsEnumerable(cur)) return "string otherConsts"; + + if (types.propertyIsEnumerable(cur)) return "builtin types"; + if (visibilityModifiers.propertyIsEnumerable(cur)) + return "builtin visibilityModifiers"; + if (templateMatch.propertyIsEnumerable(cur)) return "atom templateMatch"; + + return "variable"; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped){ + var afterQuote = stream.peek(); + //look if the character after the quote is like the B in '10100010'B + if (afterQuote){ + afterQuote = afterQuote.toLowerCase(); + if(afterQuote == "b" || afterQuote == "h" || afterQuote == "o") + stream.next(); + } + end = true; break; + } + escaped = !escaped && next == "\\"; + } + if (end || !(escaped || multiLineStrings)) + state.tokenize = null; + return "string"; + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = null; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + + function pushContext(state, col, type) { + var indent = state.indented; + if (state.context && state.context.type == "statement") + indent = state.context.indented; + return state.context = new Context(indent, col, type, null, state.context); + } + + function popContext(state) { + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") + state.indented = state.context.indented; + return state.context = state.context.prev; + } + + //Interface + return { + startState: function(basecolumn) { + return { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (stream.eatSpace()) return null; + curPunc = null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment") return style; + if (ctx.align == null) ctx.align = true; + + if ((curPunc == ";" || curPunc == ":" || curPunc == ",") + && ctx.type == "statement"){ + popContext(state); + } + else if (curPunc == "{") pushContext(state, stream.column(), "}"); + else if (curPunc == "[") pushContext(state, stream.column(), "]"); + else if (curPunc == "(") pushContext(state, stream.column(), ")"); + else if (curPunc == "}") { + while (ctx.type == "statement") ctx = popContext(state); + if (ctx.type == "}") ctx = popContext(state); + while (ctx.type == "statement") ctx = popContext(state); + } + else if (curPunc == ctx.type) popContext(state); + else if (indentStatements && + (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || + (ctx.type == "statement" && curPunc == "newstatement"))) + pushContext(state, stream.column(), "statement"); + + state.startOfLine = false; + + return style; + }, + + electricChars: "{}", + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//", + fold: "brace" + }; + }); + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + function def(mimes, mode) { + if (typeof mimes == "string") mimes = [mimes]; + var words = []; + function add(obj) { + if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) + words.push(prop); + } + + add(mode.keywords); + add(mode.builtin); + add(mode.timerOps); + add(mode.portOps); + + if (words.length) { + mode.helperType = mimes[0]; + CodeMirror.registerHelper("hintWords", mimes[0], words); + } + + for (var i = 0; i < mimes.length; ++i) + CodeMirror.defineMIME(mimes[i], mode); + } + + def(["text/x-ttcn", "text/x-ttcn3", "text/x-ttcnpp"], { + name: "ttcn", + keywords: words("activate address alive all alt altstep and and4b any" + + " break case component const continue control deactivate" + + " display do else encode enumerated except exception" + + " execute extends extension external for from function" + + " goto group if import in infinity inout interleave" + + " label language length log match message mixed mod" + + " modifies module modulepar mtc noblock not not4b nowait" + + " of on optional or or4b out override param pattern port" + + " procedure record recursive rem repeat return runs select" + + " self sender set signature system template testcase to" + + " type union value valueof var variant while with xor xor4b"), + builtin: words("bit2hex bit2int bit2oct bit2str char2int char2oct encvalue" + + " decomp decvalue float2int float2str hex2bit hex2int" + + " hex2oct hex2str int2bit int2char int2float int2hex" + + " int2oct int2str int2unichar isbound ischosen ispresent" + + " isvalue lengthof log2str oct2bit oct2char oct2hex oct2int" + + " oct2str regexp replace rnd sizeof str2bit str2float" + + " str2hex str2int str2oct substr unichar2int unichar2char" + + " enum2int"), + types: words("anytype bitstring boolean char charstring default float" + + " hexstring integer objid octetstring universal verdicttype timer"), + timerOps: words("read running start stop timeout"), + portOps: words("call catch check clear getcall getreply halt raise receive" + + " reply send trigger"), + configOps: words("create connect disconnect done kill killed map unmap"), + verdictOps: words("getverdict setverdict"), + sutOps: words("action"), + functionOps: words("apply derefers refers"), + + verdictConsts: words("error fail inconc none pass"), + booleanConsts: words("true false"), + otherConsts: words("null NULL omit"), + + visibilityModifiers: words("private public friend"), + templateMatch: words("complement ifpresent subset superset permutation"), + multiLineStrings: true + }); +}); diff --git a/global/codemirror/mode/turtle/index.html b/global/codemirror/mode/turtle/index.html new file mode 100644 index 00000000..a4962b61 --- /dev/null +++ b/global/codemirror/mode/turtle/index.html @@ -0,0 +1,50 @@ + + +CodeMirror: Turtle mode + + + + + + + + + +
    +

    Turtle mode

    +
    + + +

    MIME types defined: text/turtle.

    + +
    diff --git a/global/codemirror/mode/turtle/turtle.js b/global/codemirror/mode/turtle/turtle.js new file mode 100644 index 00000000..0988f0a4 --- /dev/null +++ b/global/codemirror/mode/turtle/turtle.js @@ -0,0 +1,162 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("turtle", function(config) { + var indentUnit = config.indentUnit; + var curPunc; + + function wordRegexp(words) { + return new RegExp("^(?:" + words.join("|") + ")$", "i"); + } + var ops = wordRegexp([]); + var keywords = wordRegexp(["@prefix", "@base", "a"]); + var operatorChars = /[*+\-<>=&|]/; + + function tokenBase(stream, state) { + var ch = stream.next(); + curPunc = null; + if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { + stream.match(/^[^\s\u00a0>]*>?/); + return "atom"; + } + else if (ch == "\"" || ch == "'") { + state.tokenize = tokenLiteral(ch); + return state.tokenize(stream, state); + } + else if (/[{}\(\),\.;\[\]]/.test(ch)) { + curPunc = ch; + return null; + } + else if (ch == "#") { + stream.skipToEnd(); + return "comment"; + } + else if (operatorChars.test(ch)) { + stream.eatWhile(operatorChars); + return null; + } + else if (ch == ":") { + return "operator"; + } else { + stream.eatWhile(/[_\w\d]/); + if(stream.peek() == ":") { + return "variable-3"; + } else { + var word = stream.current(); + + if(keywords.test(word)) { + return "meta"; + } + + if(ch >= "A" && ch <= "Z") { + return "comment"; + } else { + return "keyword"; + } + } + var word = stream.current(); + if (ops.test(word)) + return null; + else if (keywords.test(word)) + return "meta"; + else + return "variable"; + } + } + + function tokenLiteral(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) { + state.tokenize = tokenBase; + break; + } + escaped = !escaped && ch == "\\"; + } + return "string"; + }; + } + + function pushContext(state, type, col) { + state.context = {prev: state.context, indent: state.indent, col: col, type: type}; + } + function popContext(state) { + state.indent = state.context.indent; + state.context = state.context.prev; + } + + return { + startState: function() { + return {tokenize: tokenBase, + context: null, + indent: 0, + col: 0}; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (state.context && state.context.align == null) state.context.align = false; + state.indent = stream.indentation(); + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + + if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { + state.context.align = true; + } + + if (curPunc == "(") pushContext(state, ")", stream.column()); + else if (curPunc == "[") pushContext(state, "]", stream.column()); + else if (curPunc == "{") pushContext(state, "}", stream.column()); + else if (/[\]\}\)]/.test(curPunc)) { + while (state.context && state.context.type == "pattern") popContext(state); + if (state.context && curPunc == state.context.type) popContext(state); + } + else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); + else if (/atom|string|variable/.test(style) && state.context) { + if (/[\}\]]/.test(state.context.type)) + pushContext(state, "pattern", stream.column()); + else if (state.context.type == "pattern" && !state.context.align) { + state.context.align = true; + state.context.col = stream.column(); + } + } + + return style; + }, + + indent: function(state, textAfter) { + var firstChar = textAfter && textAfter.charAt(0); + var context = state.context; + if (/[\]\}]/.test(firstChar)) + while (context && context.type == "pattern") context = context.prev; + + var closing = context && firstChar == context.type; + if (!context) + return 0; + else if (context.type == "pattern") + return context.col; + else if (context.align) + return context.col + (closing ? 0 : 1); + else + return context.indent + (closing ? 0 : indentUnit); + }, + + lineComment: "#" + }; +}); + +CodeMirror.defineMIME("text/turtle", "turtle"); + +}); diff --git a/global/codemirror/mode/twig/index.html b/global/codemirror/mode/twig/index.html new file mode 100644 index 00000000..02493a5c --- /dev/null +++ b/global/codemirror/mode/twig/index.html @@ -0,0 +1,45 @@ + + +CodeMirror: Twig mode + + + + + + + + + +
    +

    Twig mode

    +
    + +
    diff --git a/global/codemirror/mode/twig/twig.js b/global/codemirror/mode/twig/twig.js new file mode 100644 index 00000000..b4e98972 --- /dev/null +++ b/global/codemirror/mode/twig/twig.js @@ -0,0 +1,141 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../../addon/mode/multiplex")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../../addon/mode/multiplex"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { + "use strict"; + + CodeMirror.defineMode("twig:inner", function() { + var keywords = ["and", "as", "autoescape", "endautoescape", "block", "do", "endblock", "else", "elseif", "extends", "for", "endfor", "embed", "endembed", "filter", "endfilter", "flush", "from", "if", "endif", "in", "is", "include", "import", "not", "or", "set", "spaceless", "endspaceless", "with", "endwith", "trans", "endtrans", "blocktrans", "endblocktrans", "macro", "endmacro", "use", "verbatim", "endverbatim"], + operator = /^[+\-*&%=<>!?|~^]/, + sign = /^[:\[\(\{]/, + atom = ["true", "false", "null", "empty", "defined", "divisibleby", "divisible by", "even", "odd", "iterable", "sameas", "same as"], + number = /^(\d[+\-\*\/])?\d+(\.\d+)?/; + + keywords = new RegExp("((" + keywords.join(")|(") + "))\\b"); + atom = new RegExp("((" + atom.join(")|(") + "))\\b"); + + function tokenBase (stream, state) { + var ch = stream.peek(); + + //Comment + if (state.incomment) { + if (!stream.skipTo("#}")) { + stream.skipToEnd(); + } else { + stream.eatWhile(/\#|}/); + state.incomment = false; + } + return "comment"; + //Tag + } else if (state.intag) { + //After operator + if (state.operator) { + state.operator = false; + if (stream.match(atom)) { + return "atom"; + } + if (stream.match(number)) { + return "number"; + } + } + //After sign + if (state.sign) { + state.sign = false; + if (stream.match(atom)) { + return "atom"; + } + if (stream.match(number)) { + return "number"; + } + } + + if (state.instring) { + if (ch == state.instring) { + state.instring = false; + } + stream.next(); + return "string"; + } else if (ch == "'" || ch == '"') { + state.instring = ch; + stream.next(); + return "string"; + } else if (stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) { + state.intag = false; + return "tag"; + } else if (stream.match(operator)) { + state.operator = true; + return "operator"; + } else if (stream.match(sign)) { + state.sign = true; + } else { + if (stream.eat(" ") || stream.sol()) { + if (stream.match(keywords)) { + return "keyword"; + } + if (stream.match(atom)) { + return "atom"; + } + if (stream.match(number)) { + return "number"; + } + if (stream.sol()) { + stream.next(); + } + } else { + stream.next(); + } + + } + return "variable"; + } else if (stream.eat("{")) { + if (stream.eat("#")) { + state.incomment = true; + if (!stream.skipTo("#}")) { + stream.skipToEnd(); + } else { + stream.eatWhile(/\#|}/); + state.incomment = false; + } + return "comment"; + //Open tag + } else if (ch = stream.eat(/\{|%/)) { + //Cache close tag + state.intag = ch; + if (ch == "{") { + state.intag = "}"; + } + stream.eat("-"); + return "tag"; + } + } + stream.next(); + }; + + return { + startState: function () { + return {}; + }, + token: function (stream, state) { + return tokenBase(stream, state); + } + }; + }); + + CodeMirror.defineMode("twig", function(config, parserConfig) { + var twigInner = CodeMirror.getMode(config, "twig:inner"); + if (!parserConfig || !parserConfig.base) return twigInner; + return CodeMirror.multiplexingMode( + CodeMirror.getMode(config, parserConfig.base), { + open: /\{[{#%]/, close: /[}#%]\}/, mode: twigInner, parseDelimiters: true + } + ); + }); + CodeMirror.defineMIME("text/x-twig", "twig"); +}); diff --git a/global/codemirror/mode/vb/index.html b/global/codemirror/mode/vb/index.html new file mode 100644 index 00000000..86972489 --- /dev/null +++ b/global/codemirror/mode/vb/index.html @@ -0,0 +1,49 @@ + + +CodeMirror: VB.NET mode + + + + + + + + + + + +
    +

    VB.NET mode

    +
    + +
    +

    MIME type defined: text/x-vb.

    + +
    diff --git a/global/codemirror/mode/vb/vb.js b/global/codemirror/mode/vb/vb.js new file mode 100644 index 00000000..735eb7f7 --- /dev/null +++ b/global/codemirror/mode/vb/vb.js @@ -0,0 +1,275 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("vb", function(conf, parserConf) { + var ERRORCLASS = 'error'; + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); + } + + var singleOperators = new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"); + var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); + var doubleOperators = new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); + var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); + var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); + var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); + + var openingKeywords = ['class','module', 'sub','enum','select','while','if','function', 'get','set','property', 'try']; + var middleKeywords = ['else','elseif','case', 'catch']; + var endKeywords = ['next','loop']; + + var operatorKeywords = ['and', 'or', 'not', 'xor', 'in']; + var wordOperators = wordRegexp(operatorKeywords); + var commonKeywords = ['as', 'dim', 'break', 'continue','optional', 'then', 'until', + 'goto', 'byval','byref','new','handles','property', 'return', + 'const','private', 'protected', 'friend', 'public', 'shared', 'static', 'true','false']; + var commontypes = ['integer','string','double','decimal','boolean','short','char', 'float','single']; + + var keywords = wordRegexp(commonKeywords); + var types = wordRegexp(commontypes); + var stringPrefixes = '"'; + + var opening = wordRegexp(openingKeywords); + var middle = wordRegexp(middleKeywords); + var closing = wordRegexp(endKeywords); + var doubleClosing = wordRegexp(['end']); + var doOpening = wordRegexp(['do']); + + var indentInfo = null; + + CodeMirror.registerHelper("hintWords", "vb", openingKeywords.concat(middleKeywords).concat(endKeywords) + .concat(operatorKeywords).concat(commonKeywords).concat(commontypes)); + + function indent(_stream, state) { + state.currentIndent++; + } + + function dedent(_stream, state) { + state.currentIndent--; + } + // tokenizers + function tokenBase(stream, state) { + if (stream.eatSpace()) { + return null; + } + + var ch = stream.peek(); + + // Handle Comments + if (ch === "'") { + stream.skipToEnd(); + return 'comment'; + } + + + // Handle Number Literals + if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) { + var floatLiteral = false; + // Floats + if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; } + else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; } + else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; } + + if (floatLiteral) { + // Float literals may be "imaginary" + stream.eat(/J/i); + return 'number'; + } + // Integers + var intLiteral = false; + // Hex + if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } + // Octal + else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } + // Decimal + else if (stream.match(/^[1-9]\d*F?/)) { + // Decimal literals may be "imaginary" + stream.eat(/J/i); + // TODO - Can you have imaginary longs? + intLiteral = true; + } + // Zero by itself with no other piece of number. + else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } + if (intLiteral) { + // Integer literals may be "long" + stream.eat(/L/i); + return 'number'; + } + } + + // Handle Strings + if (stream.match(stringPrefixes)) { + state.tokenize = tokenStringFactory(stream.current()); + return state.tokenize(stream, state); + } + + // Handle operators and Delimiters + if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { + return null; + } + if (stream.match(doubleOperators) + || stream.match(singleOperators) + || stream.match(wordOperators)) { + return 'operator'; + } + if (stream.match(singleDelimiters)) { + return null; + } + if (stream.match(doOpening)) { + indent(stream,state); + state.doInCurrentLine = true; + return 'keyword'; + } + if (stream.match(opening)) { + if (! state.doInCurrentLine) + indent(stream,state); + else + state.doInCurrentLine = false; + return 'keyword'; + } + if (stream.match(middle)) { + return 'keyword'; + } + + if (stream.match(doubleClosing)) { + dedent(stream,state); + dedent(stream,state); + return 'keyword'; + } + if (stream.match(closing)) { + dedent(stream,state); + return 'keyword'; + } + + if (stream.match(types)) { + return 'keyword'; + } + + if (stream.match(keywords)) { + return 'keyword'; + } + + if (stream.match(identifiers)) { + return 'variable'; + } + + // Handle non-detected items + stream.next(); + return ERRORCLASS; + } + + function tokenStringFactory(delimiter) { + var singleline = delimiter.length == 1; + var OUTCLASS = 'string'; + + return function(stream, state) { + while (!stream.eol()) { + stream.eatWhile(/[^'"]/); + if (stream.match(delimiter)) { + state.tokenize = tokenBase; + return OUTCLASS; + } else { + stream.eat(/['"]/); + } + } + if (singleline) { + if (parserConf.singleLineStringErrors) { + return ERRORCLASS; + } else { + state.tokenize = tokenBase; + } + } + return OUTCLASS; + }; + } + + + function tokenLexer(stream, state) { + var style = state.tokenize(stream, state); + var current = stream.current(); + + // Handle '.' connected identifiers + if (current === '.') { + style = state.tokenize(stream, state); + if (style === 'variable') { + return 'variable'; + } else { + return ERRORCLASS; + } + } + + + var delimiter_index = '[({'.indexOf(current); + if (delimiter_index !== -1) { + indent(stream, state ); + } + if (indentInfo === 'dedent') { + if (dedent(stream, state)) { + return ERRORCLASS; + } + } + delimiter_index = '])}'.indexOf(current); + if (delimiter_index !== -1) { + if (dedent(stream, state)) { + return ERRORCLASS; + } + } + + return style; + } + + var external = { + electricChars:"dDpPtTfFeE ", + startState: function() { + return { + tokenize: tokenBase, + lastToken: null, + currentIndent: 0, + nextLineIndent: 0, + doInCurrentLine: false + + + }; + }, + + token: function(stream, state) { + if (stream.sol()) { + state.currentIndent += state.nextLineIndent; + state.nextLineIndent = 0; + state.doInCurrentLine = 0; + } + var style = tokenLexer(stream, state); + + state.lastToken = {style:style, content: stream.current()}; + + + + return style; + }, + + indent: function(state, textAfter) { + var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; + if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); + if(state.currentIndent < 0) return 0; + return state.currentIndent * conf.indentUnit; + }, + + lineComment: "'" + }; + return external; +}); + +CodeMirror.defineMIME("text/x-vb", "vb"); + +}); diff --git a/global/codemirror/mode/vbscript/index.html b/global/codemirror/mode/vbscript/index.html new file mode 100644 index 00000000..ad7532d7 --- /dev/null +++ b/global/codemirror/mode/vbscript/index.html @@ -0,0 +1,55 @@ + + +CodeMirror: VBScript mode + + + + + + + + + +
    +

    VBScript mode

    + + +
    + + + +

    MIME types defined: text/vbscript.

    +
    diff --git a/global/codemirror/mode/vbscript/vbscript.js b/global/codemirror/mode/vbscript/vbscript.js new file mode 100644 index 00000000..b66df223 --- /dev/null +++ b/global/codemirror/mode/vbscript/vbscript.js @@ -0,0 +1,350 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +/* +For extra ASP classic objects, initialize CodeMirror instance with this option: + isASP: true + +E.G.: + var editor = CodeMirror.fromTextArea(document.getElementById("code"), { + lineNumbers: true, + isASP: true + }); +*/ + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("vbscript", function(conf, parserConf) { + var ERRORCLASS = 'error'; + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); + } + + var singleOperators = new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"); + var doubleOperators = new RegExp("^((<>)|(<=)|(>=))"); + var singleDelimiters = new RegExp('^[\\.,]'); + var brakets = new RegExp('^[\\(\\)]'); + var identifiers = new RegExp("^[A-Za-z][_A-Za-z0-9]*"); + + var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for']; + var middleKeywords = ['else','elseif','case']; + var endKeywords = ['next','loop','wend']; + + var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']); + var commonkeywords = ['dim', 'redim', 'then', 'until', 'randomize', + 'byval','byref','new','property', 'exit', 'in', + 'const','private', 'public', + 'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me']; + + //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx + var atomWords = ['true', 'false', 'nothing', 'empty', 'null']; + //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx + var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart', + 'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject', + 'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left', + 'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round', + 'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp', + 'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year']; + + //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx + var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare', + 'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek', + 'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError', + 'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2', + 'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo', + 'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse', + 'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray']; + //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx + var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp']; + var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count']; + var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit']; + + var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application']; + var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response + 'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request + 'contents', 'staticobjects', //application + 'codepage', 'lcid', 'sessionid', 'timeout', //session + 'scripttimeout']; //server + var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response + 'binaryread', //request + 'remove', 'removeall', 'lock', 'unlock', //application + 'abandon', //session + 'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server + + var knownWords = knownMethods.concat(knownProperties); + + builtinObjsWords = builtinObjsWords.concat(builtinConsts); + + if (conf.isASP){ + builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords); + knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties); + }; + + var keywords = wordRegexp(commonkeywords); + var atoms = wordRegexp(atomWords); + var builtinFuncs = wordRegexp(builtinFuncsWords); + var builtinObjs = wordRegexp(builtinObjsWords); + var known = wordRegexp(knownWords); + var stringPrefixes = '"'; + + var opening = wordRegexp(openingKeywords); + var middle = wordRegexp(middleKeywords); + var closing = wordRegexp(endKeywords); + var doubleClosing = wordRegexp(['end']); + var doOpening = wordRegexp(['do']); + var noIndentWords = wordRegexp(['on error resume next', 'exit']); + var comment = wordRegexp(['rem']); + + + function indent(_stream, state) { + state.currentIndent++; + } + + function dedent(_stream, state) { + state.currentIndent--; + } + // tokenizers + function tokenBase(stream, state) { + if (stream.eatSpace()) { + return 'space'; + //return null; + } + + var ch = stream.peek(); + + // Handle Comments + if (ch === "'") { + stream.skipToEnd(); + return 'comment'; + } + if (stream.match(comment)){ + stream.skipToEnd(); + return 'comment'; + } + + + // Handle Number Literals + if (stream.match(/^((&H)|(&O))?[0-9\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i, false)) { + var floatLiteral = false; + // Floats + if (stream.match(/^\d*\.\d+/i)) { floatLiteral = true; } + else if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } + else if (stream.match(/^\.\d+/)) { floatLiteral = true; } + + if (floatLiteral) { + // Float literals may be "imaginary" + stream.eat(/J/i); + return 'number'; + } + // Integers + var intLiteral = false; + // Hex + if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } + // Octal + else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } + // Decimal + else if (stream.match(/^[1-9]\d*F?/)) { + // Decimal literals may be "imaginary" + stream.eat(/J/i); + // TODO - Can you have imaginary longs? + intLiteral = true; + } + // Zero by itself with no other piece of number. + else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } + if (intLiteral) { + // Integer literals may be "long" + stream.eat(/L/i); + return 'number'; + } + } + + // Handle Strings + if (stream.match(stringPrefixes)) { + state.tokenize = tokenStringFactory(stream.current()); + return state.tokenize(stream, state); + } + + // Handle operators and Delimiters + if (stream.match(doubleOperators) + || stream.match(singleOperators) + || stream.match(wordOperators)) { + return 'operator'; + } + if (stream.match(singleDelimiters)) { + return null; + } + + if (stream.match(brakets)) { + return "bracket"; + } + + if (stream.match(noIndentWords)) { + state.doInCurrentLine = true; + + return 'keyword'; + } + + if (stream.match(doOpening)) { + indent(stream,state); + state.doInCurrentLine = true; + + return 'keyword'; + } + if (stream.match(opening)) { + if (! state.doInCurrentLine) + indent(stream,state); + else + state.doInCurrentLine = false; + + return 'keyword'; + } + if (stream.match(middle)) { + return 'keyword'; + } + + + if (stream.match(doubleClosing)) { + dedent(stream,state); + dedent(stream,state); + + return 'keyword'; + } + if (stream.match(closing)) { + if (! state.doInCurrentLine) + dedent(stream,state); + else + state.doInCurrentLine = false; + + return 'keyword'; + } + + if (stream.match(keywords)) { + return 'keyword'; + } + + if (stream.match(atoms)) { + return 'atom'; + } + + if (stream.match(known)) { + return 'variable-2'; + } + + if (stream.match(builtinFuncs)) { + return 'builtin'; + } + + if (stream.match(builtinObjs)){ + return 'variable-2'; + } + + if (stream.match(identifiers)) { + return 'variable'; + } + + // Handle non-detected items + stream.next(); + return ERRORCLASS; + } + + function tokenStringFactory(delimiter) { + var singleline = delimiter.length == 1; + var OUTCLASS = 'string'; + + return function(stream, state) { + while (!stream.eol()) { + stream.eatWhile(/[^'"]/); + if (stream.match(delimiter)) { + state.tokenize = tokenBase; + return OUTCLASS; + } else { + stream.eat(/['"]/); + } + } + if (singleline) { + if (parserConf.singleLineStringErrors) { + return ERRORCLASS; + } else { + state.tokenize = tokenBase; + } + } + return OUTCLASS; + }; + } + + + function tokenLexer(stream, state) { + var style = state.tokenize(stream, state); + var current = stream.current(); + + // Handle '.' connected identifiers + if (current === '.') { + style = state.tokenize(stream, state); + + current = stream.current(); + if (style && (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword')){//|| knownWords.indexOf(current.substring(1)) > -1) { + if (style === 'builtin' || style === 'keyword') style='variable'; + if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2'; + + return style; + } else { + return ERRORCLASS; + } + } + + return style; + } + + var external = { + electricChars:"dDpPtTfFeE ", + startState: function() { + return { + tokenize: tokenBase, + lastToken: null, + currentIndent: 0, + nextLineIndent: 0, + doInCurrentLine: false, + ignoreKeyword: false + + + }; + }, + + token: function(stream, state) { + if (stream.sol()) { + state.currentIndent += state.nextLineIndent; + state.nextLineIndent = 0; + state.doInCurrentLine = 0; + } + var style = tokenLexer(stream, state); + + state.lastToken = {style:style, content: stream.current()}; + + if (style==='space') style=null; + + return style; + }, + + indent: function(state, textAfter) { + var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; + if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); + if(state.currentIndent < 0) return 0; + return state.currentIndent * conf.indentUnit; + } + + }; + return external; +}); + +CodeMirror.defineMIME("text/vbscript", "vbscript"); + +}); diff --git a/global/codemirror/mode/velocity/index.html b/global/codemirror/mode/velocity/index.html new file mode 100644 index 00000000..7eba8f41 --- /dev/null +++ b/global/codemirror/mode/velocity/index.html @@ -0,0 +1,120 @@ + + +CodeMirror: Velocity mode + + + + + + + + + + +
    +

    Velocity mode

    +
    + + +

    MIME types defined: text/velocity.

    + +
    diff --git a/global/codemirror/mode/velocity/velocity.js b/global/codemirror/mode/velocity/velocity.js new file mode 100644 index 00000000..12ee2212 --- /dev/null +++ b/global/codemirror/mode/velocity/velocity.js @@ -0,0 +1,201 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("velocity", function() { + function parseWords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + var keywords = parseWords("#end #else #break #stop #[[ #]] " + + "#{end} #{else} #{break} #{stop}"); + var functions = parseWords("#if #elseif #foreach #set #include #parse #macro #define #evaluate " + + "#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"); + var specials = parseWords("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"); + var isOperatorChar = /[+\-*&%=<>!?:\/|]/; + + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + function tokenBase(stream, state) { + var beforeParams = state.beforeParams; + state.beforeParams = false; + var ch = stream.next(); + // start of unparsed string? + if ((ch == "'") && !state.inString && state.inParams) { + state.lastTokenWasBuiltin = false; + return chain(stream, state, tokenString(ch)); + } + // start of parsed string? + else if ((ch == '"')) { + state.lastTokenWasBuiltin = false; + if (state.inString) { + state.inString = false; + return "string"; + } + else if (state.inParams) + return chain(stream, state, tokenString(ch)); + } + // is it one of the special signs []{}().,;? Seperator? + else if (/[\[\]{}\(\),;\.]/.test(ch)) { + if (ch == "(" && beforeParams) + state.inParams = true; + else if (ch == ")") { + state.inParams = false; + state.lastTokenWasBuiltin = true; + } + return null; + } + // start of a number value? + else if (/\d/.test(ch)) { + state.lastTokenWasBuiltin = false; + stream.eatWhile(/[\w\.]/); + return "number"; + } + // multi line comment? + else if (ch == "#" && stream.eat("*")) { + state.lastTokenWasBuiltin = false; + return chain(stream, state, tokenComment); + } + // unparsed content? + else if (ch == "#" && stream.match(/ *\[ *\[/)) { + state.lastTokenWasBuiltin = false; + return chain(stream, state, tokenUnparsed); + } + // single line comment? + else if (ch == "#" && stream.eat("#")) { + state.lastTokenWasBuiltin = false; + stream.skipToEnd(); + return "comment"; + } + // variable? + else if (ch == "$") { + stream.eatWhile(/[\w\d\$_\.{}]/); + // is it one of the specials? + if (specials && specials.propertyIsEnumerable(stream.current())) { + return "keyword"; + } + else { + state.lastTokenWasBuiltin = true; + state.beforeParams = true; + return "builtin"; + } + } + // is it a operator? + else if (isOperatorChar.test(ch)) { + state.lastTokenWasBuiltin = false; + stream.eatWhile(isOperatorChar); + return "operator"; + } + else { + // get the whole word + stream.eatWhile(/[\w\$_{}@]/); + var word = stream.current(); + // is it one of the listed keywords? + if (keywords && keywords.propertyIsEnumerable(word)) + return "keyword"; + // is it one of the listed functions? + if (functions && functions.propertyIsEnumerable(word) || + (stream.current().match(/^#@?[a-z0-9_]+ *$/i) && stream.peek()=="(") && + !(functions && functions.propertyIsEnumerable(word.toLowerCase()))) { + state.beforeParams = true; + state.lastTokenWasBuiltin = false; + return "keyword"; + } + if (state.inString) { + state.lastTokenWasBuiltin = false; + return "string"; + } + if (stream.pos > word.length && stream.string.charAt(stream.pos-word.length-1)=="." && state.lastTokenWasBuiltin) + return "builtin"; + // default: just a "word" + state.lastTokenWasBuiltin = false; + return null; + } + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if ((next == quote) && !escaped) { + end = true; + break; + } + if (quote=='"' && stream.peek() == '$' && !escaped) { + state.inString = true; + end = true; + break; + } + escaped = !escaped && next == "\\"; + } + if (end) state.tokenize = tokenBase; + return "string"; + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "#" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function tokenUnparsed(stream, state) { + var maybeEnd = 0, ch; + while (ch = stream.next()) { + if (ch == "#" && maybeEnd == 2) { + state.tokenize = tokenBase; + break; + } + if (ch == "]") + maybeEnd++; + else if (ch != " ") + maybeEnd = 0; + } + return "meta"; + } + // Interface + + return { + startState: function() { + return { + tokenize: tokenBase, + beforeParams: false, + inParams: false, + inString: false, + lastTokenWasBuiltin: false + }; + }, + + token: function(stream, state) { + if (stream.eatSpace()) return null; + return state.tokenize(stream, state); + }, + blockCommentStart: "#*", + blockCommentEnd: "*#", + lineComment: "##", + fold: "velocity" + }; +}); + +CodeMirror.defineMIME("text/velocity", "velocity"); + +}); diff --git a/global/codemirror/mode/verilog/index.html b/global/codemirror/mode/verilog/index.html new file mode 100644 index 00000000..9c52722a --- /dev/null +++ b/global/codemirror/mode/verilog/index.html @@ -0,0 +1,120 @@ + + +CodeMirror: Verilog/SystemVerilog mode + + + + + + + + + + +
    +

    SystemVerilog mode

    + +
    + + + +

    +Syntax highlighting and indentation for the Verilog and SystemVerilog languages (IEEE 1800). +

    Configuration options:

    +
      +
    • noIndentKeywords - List of keywords which should not cause indentation to increase. E.g. ["package", "module"]. Default: None
    • +
    +

    + +

    MIME types defined: text/x-verilog and text/x-systemverilog.

    +
    diff --git a/global/codemirror/mode/verilog/test.js b/global/codemirror/mode/verilog/test.js new file mode 100644 index 00000000..8334fab0 --- /dev/null +++ b/global/codemirror/mode/verilog/test.js @@ -0,0 +1,273 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 4}, "verilog"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("binary_literals", + "[number 1'b0]", + "[number 1'b1]", + "[number 1'bx]", + "[number 1'bz]", + "[number 1'bX]", + "[number 1'bZ]", + "[number 1'B0]", + "[number 1'B1]", + "[number 1'Bx]", + "[number 1'Bz]", + "[number 1'BX]", + "[number 1'BZ]", + "[number 1'b0]", + "[number 1'b1]", + "[number 2'b01]", + "[number 2'bxz]", + "[number 2'b11]", + "[number 2'b10]", + "[number 2'b1Z]", + "[number 12'b0101_0101_0101]", + "[number 1'b 0]", + "[number 'b0101]" + ); + + MT("octal_literals", + "[number 3'o7]", + "[number 3'O7]", + "[number 3'so7]", + "[number 3'SO7]" + ); + + MT("decimal_literals", + "[number 0]", + "[number 1]", + "[number 7]", + "[number 123_456]", + "[number 'd33]", + "[number 8'd255]", + "[number 8'D255]", + "[number 8'sd255]", + "[number 8'SD255]", + "[number 32'd123]", + "[number 32 'd123]", + "[number 32 'd 123]" + ); + + MT("hex_literals", + "[number 4'h0]", + "[number 4'ha]", + "[number 4'hF]", + "[number 4'hx]", + "[number 4'hz]", + "[number 4'hX]", + "[number 4'hZ]", + "[number 32'hdc78]", + "[number 32'hDC78]", + "[number 32 'hDC78]", + "[number 32'h DC78]", + "[number 32 'h DC78]", + "[number 32'h44x7]", + "[number 32'hFFF?]" + ); + + MT("real_number_literals", + "[number 1.2]", + "[number 0.1]", + "[number 2394.26331]", + "[number 1.2E12]", + "[number 1.2e12]", + "[number 1.30e-2]", + "[number 0.1e-0]", + "[number 23E10]", + "[number 29E-2]", + "[number 236.123_763_e-12]" + ); + + MT("operators", + "[meta ^]" + ); + + MT("keywords", + "[keyword logic]", + "[keyword logic] [variable foo]", + "[keyword reg] [variable abc]" + ); + + MT("variables", + "[variable _leading_underscore]", + "[variable _if]", + "[number 12] [variable foo]", + "[variable foo] [number 14]" + ); + + MT("tick_defines", + "[def `FOO]", + "[def `foo]", + "[def `FOO_bar]" + ); + + MT("system_calls", + "[meta $display]", + "[meta $vpi_printf]" + ); + + MT("line_comment", "[comment // Hello world]"); + + // Alignment tests + MT("align_port_map_style1", + /** + * mod mod(.a(a), + * .b(b) + * ); + */ + "[variable mod] [variable mod][bracket (].[variable a][bracket (][variable a][bracket )],", + " .[variable b][bracket (][variable b][bracket )]", + " [bracket )];", + "" + ); + + MT("align_port_map_style2", + /** + * mod mod( + * .a(a), + * .b(b) + * ); + */ + "[variable mod] [variable mod][bracket (]", + " .[variable a][bracket (][variable a][bracket )],", + " .[variable b][bracket (][variable b][bracket )]", + "[bracket )];", + "" + ); + + // Indentation tests + MT("indent_single_statement_if", + "[keyword if] [bracket (][variable foo][bracket )]", + " [keyword break];", + "" + ); + + MT("no_indent_after_single_line_if", + "[keyword if] [bracket (][variable foo][bracket )] [keyword break];", + "" + ); + + MT("indent_after_if_begin_same_line", + "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", + " [keyword break];", + " [keyword break];", + "[keyword end]", + "" + ); + + MT("indent_after_if_begin_next_line", + "[keyword if] [bracket (][variable foo][bracket )]", + " [keyword begin]", + " [keyword break];", + " [keyword break];", + " [keyword end]", + "" + ); + + MT("indent_single_statement_if_else", + "[keyword if] [bracket (][variable foo][bracket )]", + " [keyword break];", + "[keyword else]", + " [keyword break];", + "" + ); + + MT("indent_if_else_begin_same_line", + "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", + " [keyword break];", + " [keyword break];", + "[keyword end] [keyword else] [keyword begin]", + " [keyword break];", + " [keyword break];", + "[keyword end]", + "" + ); + + MT("indent_if_else_begin_next_line", + "[keyword if] [bracket (][variable foo][bracket )]", + " [keyword begin]", + " [keyword break];", + " [keyword break];", + " [keyword end]", + "[keyword else]", + " [keyword begin]", + " [keyword break];", + " [keyword break];", + " [keyword end]", + "" + ); + + MT("indent_if_nested_without_begin", + "[keyword if] [bracket (][variable foo][bracket )]", + " [keyword if] [bracket (][variable foo][bracket )]", + " [keyword if] [bracket (][variable foo][bracket )]", + " [keyword break];", + "" + ); + + MT("indent_case", + "[keyword case] [bracket (][variable state][bracket )]", + " [variable FOO]:", + " [keyword break];", + " [variable BAR]:", + " [keyword break];", + "[keyword endcase]", + "" + ); + + MT("unindent_after_end_with_preceding_text", + "[keyword begin]", + " [keyword break]; [keyword end]", + "" + ); + + MT("export_function_one_line_does_not_indent", + "[keyword export] [string \"DPI-C\"] [keyword function] [variable helloFromSV];", + "" + ); + + MT("export_task_one_line_does_not_indent", + "[keyword export] [string \"DPI-C\"] [keyword task] [variable helloFromSV];", + "" + ); + + MT("export_function_two_lines_indents_properly", + "[keyword export]", + " [string \"DPI-C\"] [keyword function] [variable helloFromSV];", + "" + ); + + MT("export_task_two_lines_indents_properly", + "[keyword export]", + " [string \"DPI-C\"] [keyword task] [variable helloFromSV];", + "" + ); + + MT("import_function_one_line_does_not_indent", + "[keyword import] [string \"DPI-C\"] [keyword function] [variable helloFromC];", + "" + ); + + MT("import_task_one_line_does_not_indent", + "[keyword import] [string \"DPI-C\"] [keyword task] [variable helloFromC];", + "" + ); + + MT("import_package_single_line_does_not_indent", + "[keyword import] [variable p]::[variable x];", + "[keyword import] [variable p]::[variable y];", + "" + ); + + MT("covergroup_with_function_indents_properly", + "[keyword covergroup] [variable cg] [keyword with] [keyword function] [variable sample][bracket (][keyword bit] [variable b][bracket )];", + " [variable c] : [keyword coverpoint] [variable c];", + "[keyword endgroup]: [variable cg]", + "" + ); + +})(); diff --git a/global/codemirror/mode/verilog/verilog.js b/global/codemirror/mode/verilog/verilog.js new file mode 100644 index 00000000..34046860 --- /dev/null +++ b/global/codemirror/mode/verilog/verilog.js @@ -0,0 +1,675 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("verilog", function(config, parserConfig) { + + var indentUnit = config.indentUnit, + statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, + dontAlignCalls = parserConfig.dontAlignCalls, + noIndentKeywords = parserConfig.noIndentKeywords || [], + multiLineStrings = parserConfig.multiLineStrings, + hooks = parserConfig.hooks || {}; + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + /** + * Keywords from IEEE 1800-2012 + */ + var keywords = words( + "accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind " + + "bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config " + + "const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable " + + "dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup " + + "endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask " + + "enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin " + + "function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import " + + "incdir include initial inout input inside instance int integer interconnect interface intersect join join_any " + + "join_none large let liblist library local localparam logic longint macromodule matches medium modport module " + + "nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed " + + "parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup " + + "pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg " + + "reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime " + + "s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify " + + "specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on " + + "table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior " + + "trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void " + + "wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor"); + + /** Operators from IEEE 1800-2012 + unary_operator ::= + + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ + binary_operator ::= + + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | ** + | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<< + | -> | <-> + inc_or_dec_operator ::= ++ | -- + unary_module_path_operator ::= + ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ + binary_module_path_operator ::= + == | != | && | || | & | | | ^ | ^~ | ~^ + */ + var isOperatorChar = /[\+\-\*\/!~&|^%=?:]/; + var isBracketChar = /[\[\]{}()]/; + + var unsignedNumber = /\d[0-9_]*/; + var decimalLiteral = /\d*\s*'s?d\s*\d[0-9_]*/i; + var binaryLiteral = /\d*\s*'s?b\s*[xz01][xz01_]*/i; + var octLiteral = /\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i; + var hexLiteral = /\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i; + var realLiteral = /(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i; + + var closingBracketOrWord = /^((\w+)|[)}\]])/; + var closingBracket = /[)}\]]/; + + var curPunc; + var curKeyword; + + // Block openings which are closed by a matching keyword in the form of ("end" + keyword) + // E.g. "task" => "endtask" + var blockKeywords = words( + "case checker class clocking config function generate interface module package " + + "primitive program property specify sequence table task" + ); + + // Opening/closing pairs + var openClose = {}; + for (var keyword in blockKeywords) { + openClose[keyword] = "end" + keyword; + } + openClose["begin"] = "end"; + openClose["casex"] = "endcase"; + openClose["casez"] = "endcase"; + openClose["do" ] = "while"; + openClose["fork" ] = "join;join_any;join_none"; + openClose["covergroup"] = "endgroup"; + + for (var i in noIndentKeywords) { + var keyword = noIndentKeywords[i]; + if (openClose[keyword]) { + openClose[keyword] = undefined; + } + } + + // Keywords which open statements that are ended with a semi-colon + var statementKeywords = words("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while"); + + function tokenBase(stream, state) { + var ch = stream.peek(), style; + if (hooks[ch] && (style = hooks[ch](stream, state)) != false) return style; + if (hooks.tokenBase && (style = hooks.tokenBase(stream, state)) != false) + return style; + + if (/[,;:\.]/.test(ch)) { + curPunc = stream.next(); + return null; + } + if (isBracketChar.test(ch)) { + curPunc = stream.next(); + return "bracket"; + } + // Macros (tick-defines) + if (ch == '`') { + stream.next(); + if (stream.eatWhile(/[\w\$_]/)) { + return "def"; + } else { + return null; + } + } + // System calls + if (ch == '$') { + stream.next(); + if (stream.eatWhile(/[\w\$_]/)) { + return "meta"; + } else { + return null; + } + } + // Time literals + if (ch == '#') { + stream.next(); + stream.eatWhile(/[\d_.]/); + return "def"; + } + // Strings + if (ch == '"') { + stream.next(); + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + // Comments + if (ch == "/") { + stream.next(); + if (stream.eat("*")) { + state.tokenize = tokenComment; + return tokenComment(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + stream.backUp(1); + } + + // Numeric literals + if (stream.match(realLiteral) || + stream.match(decimalLiteral) || + stream.match(binaryLiteral) || + stream.match(octLiteral) || + stream.match(hexLiteral) || + stream.match(unsignedNumber) || + stream.match(realLiteral)) { + return "number"; + } + + // Operators + if (stream.eatWhile(isOperatorChar)) { + return "meta"; + } + + // Keywords / plain variables + if (stream.eatWhile(/[\w\$_]/)) { + var cur = stream.current(); + if (keywords[cur]) { + if (openClose[cur]) { + curPunc = "newblock"; + } + if (statementKeywords[cur]) { + curPunc = "newstatement"; + } + curKeyword = cur; + return "keyword"; + } + return "variable"; + } + + stream.next(); + return null; + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) {end = true; break;} + escaped = !escaped && next == "\\"; + } + if (end || !(escaped || multiLineStrings)) + state.tokenize = tokenBase; + return "string"; + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return "comment"; + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + function pushContext(state, col, type) { + var indent = state.indented; + var c = new Context(indent, col, type, null, state.context); + return state.context = c; + } + function popContext(state) { + var t = state.context.type; + if (t == ")" || t == "]" || t == "}") { + state.indented = state.context.indented; + } + return state.context = state.context.prev; + } + + function isClosing(text, contextClosing) { + if (text == contextClosing) { + return true; + } else { + // contextClosing may be multiple keywords separated by ; + var closingKeywords = contextClosing.split(";"); + for (var i in closingKeywords) { + if (text == closingKeywords[i]) { + return true; + } + } + return false; + } + } + + function buildElectricInputRegEx() { + // Reindentation should occur on any bracket char: {}()[] + // or on a match of any of the block closing keywords, at + // the end of a line + var allClosings = []; + for (var i in openClose) { + if (openClose[i]) { + var closings = openClose[i].split(";"); + for (var j in closings) { + allClosings.push(closings[j]); + } + } + } + var re = new RegExp("[{}()\\[\\]]|(" + allClosings.join("|") + ")$"); + return re; + } + + // Interface + return { + + // Regex to force current line to reindent + electricInput: buildElectricInputRegEx(), + + startState: function(basecolumn) { + var state = { + tokenize: null, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + if (hooks.startState) hooks.startState(state); + return state; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (hooks.token) { + // Call hook, with an optional return value of a style to override verilog styling. + var style = hooks.token(stream, state); + if (style !== undefined) { + return style; + } + } + if (stream.eatSpace()) return null; + curPunc = null; + curKeyword = null; + var style = (state.tokenize || tokenBase)(stream, state); + if (style == "comment" || style == "meta" || style == "variable") return style; + if (ctx.align == null) ctx.align = true; + + if (curPunc == ctx.type) { + popContext(state); + } else if ((curPunc == ";" && ctx.type == "statement") || + (ctx.type && isClosing(curKeyword, ctx.type))) { + ctx = popContext(state); + while (ctx && ctx.type == "statement") ctx = popContext(state); + } else if (curPunc == "{") { + pushContext(state, stream.column(), "}"); + } else if (curPunc == "[") { + pushContext(state, stream.column(), "]"); + } else if (curPunc == "(") { + pushContext(state, stream.column(), ")"); + } else if (ctx && ctx.type == "endcase" && curPunc == ":") { + pushContext(state, stream.column(), "statement"); + } else if (curPunc == "newstatement") { + pushContext(state, stream.column(), "statement"); + } else if (curPunc == "newblock") { + if (curKeyword == "function" && ctx && (ctx.type == "statement" || ctx.type == "endgroup")) { + // The 'function' keyword can appear in some other contexts where it actually does not + // indicate a function (import/export DPI and covergroup definitions). + // Do nothing in this case + } else if (curKeyword == "task" && ctx && ctx.type == "statement") { + // Same thing for task + } else { + var close = openClose[curKeyword]; + pushContext(state, stream.column(), close); + } + } + + state.startOfLine = false; + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; + if (hooks.indent) { + var fromHook = hooks.indent(state); + if (fromHook >= 0) return fromHook; + } + var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); + if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; + var closing = false; + var possibleClosing = textAfter.match(closingBracketOrWord); + if (possibleClosing) + closing = isClosing(possibleClosing[0], ctx.type); + if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); + else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1); + else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; + else return ctx.indented + (closing ? 0 : indentUnit); + }, + + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//" + }; +}); + + CodeMirror.defineMIME("text/x-verilog", { + name: "verilog" + }); + + CodeMirror.defineMIME("text/x-systemverilog", { + name: "verilog" + }); + + + + // TL-Verilog mode. + // See tl-x.org for language spec. + // See the mode in action at makerchip.com. + // Contact: steve.hoover@redwoodeda.com + + // TLV Identifier prefixes. + // Note that sign is not treated separately, so "+/-" versions of numeric identifiers + // are included. + var tlvIdentifierStyle = { + "|": "link", + ">": "property", // Should condition this off for > TLV 1c. + "$": "variable", + "$$": "variable", + "?$": "qualifier", + "?*": "qualifier", + "-": "hr", + "/": "property", + "/-": "property", + "@": "variable-3", + "@-": "variable-3", + "@++": "variable-3", + "@+=": "variable-3", + "@+=-": "variable-3", + "@--": "variable-3", + "@-=": "variable-3", + "%+": "tag", + "%-": "tag", + "%": "tag", + ">>": "tag", + "<<": "tag", + "<>": "tag", + "#": "tag", // Need to choose a style for this. + "^": "attribute", + "^^": "attribute", + "^!": "attribute", + "*": "variable-2", + "**": "variable-2", + "\\": "keyword", + "\"": "comment" + }; + + // Lines starting with these characters define scope (result in indentation). + var tlvScopePrefixChars = { + "/": "beh-hier", + ">": "beh-hier", + "-": "phys-hier", + "|": "pipe", + "?": "when", + "@": "stage", + "\\": "keyword" + }; + var tlvIndentUnit = 3; + var tlvTrackStatements = false; + var tlvIdentMatch = /^([~!@#\$%\^&\*-\+=\?\/\\\|'"<>]+)([\d\w_]*)/; // Matches an identifiere. + // Note that ':' is excluded, because of it's use in [:]. + var tlvFirstLevelIndentMatch = /^[! ] /; + var tlvLineIndentationMatch = /^[! ] */; + var tlvCommentMatch = /^\/[\/\*]/; + + + // Returns a style specific to the scope at the given indentation column. + // Type is one of: "indent", "scope-ident", "before-scope-ident". + function tlvScopeStyle(state, indentation, type) { + // Begin scope. + var depth = indentation / tlvIndentUnit; // TODO: Pass this in instead. + return "tlv-" + state.tlvIndentationStyle[depth] + "-" + type; + } + + // Return true if the next thing in the stream is an identifier with a mnemonic. + function tlvIdentNext(stream) { + var match; + return (match = stream.match(tlvIdentMatch, false)) && match[2].length > 0; + } + + CodeMirror.defineMIME("text/x-tlv", { + name: "verilog", + + hooks: { + + electricInput: false, + + + // Return undefined for verilog tokenizing, or style for TLV token (null not used). + // Standard CM styles are used for most formatting, but some TL-Verilog-specific highlighting + // can be enabled with the definition of cm-tlv-* styles, including highlighting for: + // - M4 tokens + // - TLV scope indentation + // - Statement delimitation (enabled by tlvTrackStatements) + token: function(stream, state) { + var style = undefined; + var match; // Return value of pattern matches. + + // Set highlighting mode based on code region (TLV or SV). + if (stream.sol() && ! state.tlvInBlockComment) { + // Process region. + if (stream.peek() == '\\') { + style = "def"; + stream.skipToEnd(); + if (stream.string.match(/\\SV/)) { + state.tlvCodeActive = false; + } else if (stream.string.match(/\\TLV/)){ + state.tlvCodeActive = true; + } + } + // Correct indentation in the face of a line prefix char. + if (state.tlvCodeActive && stream.pos == 0 && + (state.indented == 0) && (match = stream.match(tlvLineIndentationMatch, false))) { + state.indented = match[0].length; + } + + // Compute indentation state: + // o Auto indentation on next line + // o Indentation scope styles + var indented = state.indented; + var depth = indented / tlvIndentUnit; + if (depth <= state.tlvIndentationStyle.length) { + // not deeper than current scope + + var blankline = stream.string.length == indented; + var chPos = depth * tlvIndentUnit; + if (chPos < stream.string.length) { + var bodyString = stream.string.slice(chPos); + var ch = bodyString[0]; + if (tlvScopePrefixChars[ch] && ((match = bodyString.match(tlvIdentMatch)) && + tlvIdentifierStyle[match[1]])) { + // This line begins scope. + // Next line gets indented one level. + indented += tlvIndentUnit; + // Style the next level of indentation (except non-region keyword identifiers, + // which are statements themselves) + if (!(ch == "\\" && chPos > 0)) { + state.tlvIndentationStyle[depth] = tlvScopePrefixChars[ch]; + if (tlvTrackStatements) {state.statementComment = false;} + depth++; + } + } + } + // Clear out deeper indentation levels unless line is blank. + if (!blankline) { + while (state.tlvIndentationStyle.length > depth) { + state.tlvIndentationStyle.pop(); + } + } + } + // Set next level of indentation. + state.tlvNextIndent = indented; + } + + if (state.tlvCodeActive) { + // Highlight as TLV. + + var beginStatement = false; + if (tlvTrackStatements) { + // This starts a statement if the position is at the scope level + // and we're not within a statement leading comment. + beginStatement = + (stream.peek() != " ") && // not a space + (style === undefined) && // not a region identifier + !state.tlvInBlockComment && // not in block comment + //!stream.match(tlvCommentMatch, false) && // not comment start + (stream.column() == state.tlvIndentationStyle.length * tlvIndentUnit); // at scope level + if (beginStatement) { + if (state.statementComment) { + // statement already started by comment + beginStatement = false; + } + state.statementComment = + stream.match(tlvCommentMatch, false); // comment start + } + } + + var match; + if (style !== undefined) { + // Region line. + style += " " + tlvScopeStyle(state, 0, "scope-ident") + } else if (((stream.pos / tlvIndentUnit) < state.tlvIndentationStyle.length) && + (match = stream.match(stream.sol() ? tlvFirstLevelIndentMatch : /^ /))) { + // Indentation + style = // make this style distinct from the previous one to prevent + // codemirror from combining spans + "tlv-indent-" + (((stream.pos % 2) == 0) ? "even" : "odd") + + // and style it + " " + tlvScopeStyle(state, stream.pos - tlvIndentUnit, "indent"); + // Style the line prefix character. + if (match[0].charAt(0) == "!") { + style += " tlv-alert-line-prefix"; + } + // Place a class before a scope identifier. + if (tlvIdentNext(stream)) { + style += " " + tlvScopeStyle(state, stream.pos, "before-scope-ident"); + } + } else if (state.tlvInBlockComment) { + // In a block comment. + if (stream.match(/^.*?\*\//)) { + // Exit block comment. + state.tlvInBlockComment = false; + if (tlvTrackStatements && !stream.eol()) { + // Anything after comment is assumed to be real statement content. + state.statementComment = false; + } + } else { + stream.skipToEnd(); + } + style = "comment"; + } else if ((match = stream.match(tlvCommentMatch)) && !state.tlvInBlockComment) { + // Start comment. + if (match[0] == "//") { + // Line comment. + stream.skipToEnd(); + } else { + // Block comment. + state.tlvInBlockComment = true; + } + style = "comment"; + } else if (match = stream.match(tlvIdentMatch)) { + // looks like an identifier (or identifier prefix) + var prefix = match[1]; + var mnemonic = match[2]; + if (// is identifier prefix + tlvIdentifierStyle.hasOwnProperty(prefix) && + // has mnemonic or we're at the end of the line (maybe it hasn't been typed yet) + (mnemonic.length > 0 || stream.eol())) { + style = tlvIdentifierStyle[prefix]; + if (stream.column() == state.indented) { + // Begin scope. + style += " " + tlvScopeStyle(state, stream.column(), "scope-ident") + } + } else { + // Just swallow one character and try again. + // This enables subsequent identifier match with preceding symbol character, which + // is legal within a statement. (Eg, !$reset). It also enables detection of + // comment start with preceding symbols. + stream.backUp(stream.current().length - 1); + style = "tlv-default"; + } + } else if (stream.match(/^\t+/)) { + // Highlight tabs, which are illegal. + style = "tlv-tab"; + } else if (stream.match(/^[\[\]{}\(\);\:]+/)) { + // [:], (), {}, ;. + style = "meta"; + } else if (match = stream.match(/^[mM]4([\+_])?[\w\d_]*/)) { + // m4 pre proc + style = (match[1] == "+") ? "tlv-m4-plus" : "tlv-m4"; + } else if (stream.match(/^ +/)){ + // Skip over spaces. + if (stream.eol()) { + // Trailing spaces. + style = "error"; + } else { + // Non-trailing spaces. + style = "tlv-default"; + } + } else if (stream.match(/^[\w\d_]+/)) { + // alpha-numeric token. + style = "number"; + } else { + // Eat the next char w/ no formatting. + stream.next(); + style = "tlv-default"; + } + if (beginStatement) { + style += " tlv-statement"; + } + } else { + if (stream.match(/^[mM]4([\w\d_]*)/)) { + // m4 pre proc + style = "tlv-m4"; + } + } + return style; + }, + + indent: function(state) { + return (state.tlvCodeActive == true) ? state.tlvNextIndent : -1; + }, + + startState: function(state) { + state.tlvIndentationStyle = []; // Styles to use for each level of indentation. + state.tlvCodeActive = true; // True when we're in a TLV region (and at beginning of file). + state.tlvNextIndent = -1; // The number of spaces to autoindent the next line if tlvCodeActive. + state.tlvInBlockComment = false; // True inside /**/ comment. + if (tlvTrackStatements) { + state.statementComment = false; // True inside a statement's header comment. + } + } + + } + }); +}); diff --git a/global/codemirror/mode/vhdl/index.html b/global/codemirror/mode/vhdl/index.html new file mode 100644 index 00000000..3051bc37 --- /dev/null +++ b/global/codemirror/mode/vhdl/index.html @@ -0,0 +1,95 @@ + + +CodeMirror: VHDL mode + + + + + + + + + + +
    +

    VHDL mode

    + +
    + + + +

    +Syntax highlighting and indentation for the VHDL language. +

    Configuration options:

    +
      +
    • atoms - List of atom words. Default: "null"
    • +
    • hooks - List of meta hooks. Default: ["`", "$"]
    • +
    • multiLineStrings - Whether multi-line strings are accepted. Default: false
    • +
    +

    + +

    MIME types defined: text/x-vhdl.

    +
    diff --git a/global/codemirror/mode/vhdl/vhdl.js b/global/codemirror/mode/vhdl/vhdl.js new file mode 100644 index 00000000..97e086e4 --- /dev/null +++ b/global/codemirror/mode/vhdl/vhdl.js @@ -0,0 +1,189 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Originally written by Alf Nielsen, re-written by Michael Zhou +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +function words(str) { + var obj = {}, words = str.split(","); + for (var i = 0; i < words.length; ++i) { + var allCaps = words[i].toUpperCase(); + var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1); + obj[words[i]] = true; + obj[allCaps] = true; + obj[firstCap] = true; + } + return obj; +} + +function metaHook(stream) { + stream.eatWhile(/[\w\$_]/); + return "meta"; +} + +CodeMirror.defineMode("vhdl", function(config, parserConfig) { + var indentUnit = config.indentUnit, + atoms = parserConfig.atoms || words("null"), + hooks = parserConfig.hooks || {"`": metaHook, "$": metaHook}, + multiLineStrings = parserConfig.multiLineStrings; + + var keywords = words("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block," + + "body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end block,end case," + + "end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for," + + "function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage," + + "literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map," + + "postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal," + + "sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor"); + + var blockKeywords = words("architecture,entity,begin,case,port,else,elsif,end,for,function,if"); + + var isOperatorChar = /[&|~> + +CodeMirror: Vue.js mode + + + + + + + + + + + + + + + + + + + + + +
    +

    Vue.js mode

    +
    + + +

    MIME types defined: text/x-vue

    + +
    diff --git a/global/codemirror/mode/vue/vue.js b/global/codemirror/mode/vue/vue.js new file mode 100644 index 00000000..84cd07c9 --- /dev/null +++ b/global/codemirror/mode/vue/vue.js @@ -0,0 +1,77 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function (mod) { + "use strict"; + if (typeof exports === "object" && typeof module === "object") {// CommonJS + mod(require("../../lib/codemirror"), + require("../../addon/mode/overlay"), + require("../xml/xml"), + require("../javascript/javascript"), + require("../coffeescript/coffeescript"), + require("../css/css"), + require("../sass/sass"), + require("../stylus/stylus"), + require("../pug/pug"), + require("../handlebars/handlebars")); + } else if (typeof define === "function" && define.amd) { // AMD + define(["../../lib/codemirror", + "../../addon/mode/overlay", + "../xml/xml", + "../javascript/javascript", + "../coffeescript/coffeescript", + "../css/css", + "../sass/sass", + "../stylus/stylus", + "../pug/pug", + "../handlebars/handlebars"], mod); + } else { // Plain browser env + mod(CodeMirror); + } +})(function (CodeMirror) { + var tagLanguages = { + script: [ + ["lang", /coffee(script)?/, "coffeescript"], + ["type", /^(?:text|application)\/(?:x-)?coffee(?:script)?$/, "coffeescript"], + ["lang", /^babel$/, "javascript"], + ["type", /^text\/babel$/, "javascript"], + ["type", /^text\/ecmascript-\d+$/, "javascript"] + ], + style: [ + ["lang", /^stylus$/i, "stylus"], + ["lang", /^sass$/i, "sass"], + ["lang", /^less$/i, "text/x-less"], + ["lang", /^scss$/i, "text/x-scss"], + ["type", /^(text\/)?(x-)?styl(us)?$/i, "stylus"], + ["type", /^text\/sass/i, "sass"], + ["type", /^(text\/)?(x-)?scss$/i, "text/x-scss"], + ["type", /^(text\/)?(x-)?less$/i, "text/x-less"] + ], + template: [ + ["lang", /^vue-template$/i, "vue"], + ["lang", /^pug$/i, "pug"], + ["lang", /^handlebars$/i, "handlebars"], + ["type", /^(text\/)?(x-)?pug$/i, "pug"], + ["type", /^text\/x-handlebars-template$/i, "handlebars"], + [null, null, "vue-template"] + ] + }; + + CodeMirror.defineMode("vue-template", function (config, parserConfig) { + var mustacheOverlay = { + token: function (stream) { + if (stream.match(/^\{\{.*?\}\}/)) return "meta mustache"; + while (stream.next() && !stream.match("{{", false)) {} + return null; + } + }; + return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mustacheOverlay); + }); + + CodeMirror.defineMode("vue", function (config) { + return CodeMirror.getMode(config, {name: "htmlmixed", tags: tagLanguages}); + }, "htmlmixed", "xml", "javascript", "coffeescript", "css", "sass", "stylus", "pug", "handlebars"); + + CodeMirror.defineMIME("script/x-vue", "vue"); + CodeMirror.defineMIME("text/x-vue", "vue"); +}); diff --git a/global/codemirror/mode/webidl/index.html b/global/codemirror/mode/webidl/index.html new file mode 100644 index 00000000..1d4112e1 --- /dev/null +++ b/global/codemirror/mode/webidl/index.html @@ -0,0 +1,71 @@ + + +CodeMirror: Web IDL mode + + + + + + + + + + +
    +

    Web IDL mode

    + +
    + +
    + + + +

    MIME type defined: text/x-webidl.

    +
    diff --git a/global/codemirror/mode/webidl/webidl.js b/global/codemirror/mode/webidl/webidl.js new file mode 100644 index 00000000..81433362 --- /dev/null +++ b/global/codemirror/mode/webidl/webidl.js @@ -0,0 +1,195 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b"); +}; + +var builtinArray = [ + "Clamp", + "Constructor", + "EnforceRange", + "Exposed", + "ImplicitThis", + "Global", "PrimaryGlobal", + "LegacyArrayClass", + "LegacyUnenumerableNamedProperties", + "LenientThis", + "NamedConstructor", + "NewObject", + "NoInterfaceObject", + "OverrideBuiltins", + "PutForwards", + "Replaceable", + "SameObject", + "TreatNonObjectAsNull", + "TreatNullAs", + "EmptyString", + "Unforgeable", + "Unscopeable" +]; +var builtins = wordRegexp(builtinArray); + +var typeArray = [ + "unsigned", "short", "long", // UnsignedIntegerType + "unrestricted", "float", "double", // UnrestrictedFloatType + "boolean", "byte", "octet", // Rest of PrimitiveType + "Promise", // PromiseType + "ArrayBuffer", "DataView", "Int8Array", "Int16Array", "Int32Array", + "Uint8Array", "Uint16Array", "Uint32Array", "Uint8ClampedArray", + "Float32Array", "Float64Array", // BufferRelatedType + "ByteString", "DOMString", "USVString", "sequence", "object", "RegExp", + "Error", "DOMException", "FrozenArray", // Rest of NonAnyType + "any", // Rest of SingleType + "void" // Rest of ReturnType +]; +var types = wordRegexp(typeArray); + +var keywordArray = [ + "attribute", "callback", "const", "deleter", "dictionary", "enum", "getter", + "implements", "inherit", "interface", "iterable", "legacycaller", "maplike", + "partial", "required", "serializer", "setlike", "setter", "static", + "stringifier", "typedef", // ArgumentNameKeyword except + // "unrestricted" + "optional", "readonly", "or" +]; +var keywords = wordRegexp(keywordArray); + +var atomArray = [ + "true", "false", // BooleanLiteral + "Infinity", "NaN", // FloatLiteral + "null" // Rest of ConstValue +]; +var atoms = wordRegexp(atomArray); + +CodeMirror.registerHelper("hintWords", "webidl", + builtinArray.concat(typeArray).concat(keywordArray).concat(atomArray)); + +var startDefArray = ["callback", "dictionary", "enum", "interface"]; +var startDefs = wordRegexp(startDefArray); + +var endDefArray = ["typedef"]; +var endDefs = wordRegexp(endDefArray); + +var singleOperators = /^[:<=>?]/; +var integers = /^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/; +var floats = /^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/; +var identifiers = /^_?[A-Za-z][0-9A-Z_a-z-]*/; +var identifiersEnd = /^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/; +var strings = /^"[^"]*"/; +var multilineComments = /^\/\*.*?\*\//; +var multilineCommentsStart = /^\/\*.*/; +var multilineCommentsEnd = /^.*?\*\//; + +function readToken(stream, state) { + // whitespace + if (stream.eatSpace()) return null; + + // comment + if (state.inComment) { + if (stream.match(multilineCommentsEnd)) { + state.inComment = false; + return "comment"; + } + stream.skipToEnd(); + return "comment"; + } + if (stream.match("//")) { + stream.skipToEnd(); + return "comment"; + } + if (stream.match(multilineComments)) return "comment"; + if (stream.match(multilineCommentsStart)) { + state.inComment = true; + return "comment"; + } + + // integer and float + if (stream.match(/^-?[0-9\.]/, false)) { + if (stream.match(integers) || stream.match(floats)) return "number"; + } + + // string + if (stream.match(strings)) return "string"; + + // identifier + if (state.startDef && stream.match(identifiers)) return "def"; + + if (state.endDef && stream.match(identifiersEnd)) { + state.endDef = false; + return "def"; + } + + if (stream.match(keywords)) return "keyword"; + + if (stream.match(types)) { + var lastToken = state.lastToken; + var nextToken = (stream.match(/^\s*(.+?)\b/, false) || [])[1]; + + if (lastToken === ":" || lastToken === "implements" || + nextToken === "implements" || nextToken === "=") { + // Used as identifier + return "builtin"; + } else { + // Used as type + return "variable-3"; + } + } + + if (stream.match(builtins)) return "builtin"; + if (stream.match(atoms)) return "atom"; + if (stream.match(identifiers)) return "variable"; + + // other + if (stream.match(singleOperators)) return "operator"; + + // unrecognized + stream.next(); + return null; +}; + +CodeMirror.defineMode("webidl", function() { + return { + startState: function() { + return { + // Is in multiline comment + inComment: false, + // Last non-whitespace, matched token + lastToken: "", + // Next token is a definition + startDef: false, + // Last token of the statement is a definition + endDef: false + }; + }, + token: function(stream, state) { + var style = readToken(stream, state); + + if (style) { + var cur = stream.current(); + state.lastToken = cur; + if (style === "keyword") { + state.startDef = startDefs.test(cur); + state.endDef = state.endDef || endDefs.test(cur); + } else { + state.startDef = false; + } + } + + return style; + } + }; +}); + +CodeMirror.defineMIME("text/x-webidl", "webidl"); +}); diff --git a/global/codemirror/mode/xml/index.html b/global/codemirror/mode/xml/index.html new file mode 100644 index 00000000..c56b8b6e --- /dev/null +++ b/global/codemirror/mode/xml/index.html @@ -0,0 +1,61 @@ + + +CodeMirror: XML mode + + + + + + + + + +
    +

    XML mode

    +
    + +

    The XML mode supports these configuration parameters:

    +
    +
    htmlMode (boolean)
    +
    This switches the mode to parse HTML instead of XML. This + means attributes do not have to be quoted, and some elements + (such as br) do not require a closing tag.
    +
    matchClosing (boolean)
    +
    Controls whether the mode checks that close tags match the + corresponding opening tag, and highlights mismatches as errors. + Defaults to true.
    +
    alignCDATA (boolean)
    +
    Setting this to true will force the opening tag of CDATA + blocks to not be indented.
    +
    + +

    MIME types defined: application/xml, text/html.

    +
    diff --git a/global/codemirror/mode/xml/test.js b/global/codemirror/mode/xml/test.js new file mode 100644 index 00000000..f48156b5 --- /dev/null +++ b/global/codemirror/mode/xml/test.js @@ -0,0 +1,51 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } + + MT("matching", + "[tag&bracket <][tag top][tag&bracket >]", + " text", + " [tag&bracket <][tag inner][tag&bracket />]", + "[tag&bracket ]"); + + MT("nonmatching", + "[tag&bracket <][tag top][tag&bracket >]", + " [tag&bracket <][tag inner][tag&bracket />]", + " [tag&bracket ]"); + + MT("doctype", + "[meta ]", + "[tag&bracket <][tag top][tag&bracket />]"); + + MT("cdata", + "[tag&bracket <][tag top][tag&bracket >]", + " [atom ]", + "[tag&bracket ]"); + + // HTML tests + mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); + + MT("selfclose", + "[tag&bracket <][tag html][tag&bracket >]", + " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", + "[tag&bracket ]"); + + MT("list", + "[tag&bracket <][tag ol][tag&bracket >]", + " [tag&bracket <][tag li][tag&bracket >]one", + " [tag&bracket <][tag li][tag&bracket >]two", + "[tag&bracket ]"); + + MT("valueless", + "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); + + MT("pThenArticle", + "[tag&bracket <][tag p][tag&bracket >]", + " foo", + "[tag&bracket <][tag article][tag&bracket >]bar"); + +})(); diff --git a/global/codemirror/mode/xml/xml.js b/global/codemirror/mode/xml/xml.js new file mode 100644 index 00000000..f987a3a3 --- /dev/null +++ b/global/codemirror/mode/xml/xml.js @@ -0,0 +1,394 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +var htmlConfig = { + autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true, + 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true, + 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true, + 'track': true, 'wbr': true, 'menuitem': true}, + implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true, + 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true, + 'th': true, 'tr': true}, + contextGrabbers: { + 'dd': {'dd': true, 'dt': true}, + 'dt': {'dd': true, 'dt': true}, + 'li': {'li': true}, + 'option': {'option': true, 'optgroup': true}, + 'optgroup': {'optgroup': true}, + 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true, + 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true, + 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true, + 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true, + 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true}, + 'rp': {'rp': true, 'rt': true}, + 'rt': {'rp': true, 'rt': true}, + 'tbody': {'tbody': true, 'tfoot': true}, + 'td': {'td': true, 'th': true}, + 'tfoot': {'tbody': true}, + 'th': {'td': true, 'th': true}, + 'thead': {'tbody': true, 'tfoot': true}, + 'tr': {'tr': true} + }, + doNotIndent: {"pre": true}, + allowUnquoted: true, + allowMissing: true, + caseFold: true +} + +var xmlConfig = { + autoSelfClosers: {}, + implicitlyClosed: {}, + contextGrabbers: {}, + doNotIndent: {}, + allowUnquoted: false, + allowMissing: false, + caseFold: false +} + +CodeMirror.defineMode("xml", function(editorConf, config_) { + var indentUnit = editorConf.indentUnit + var config = {} + var defaults = config_.htmlMode ? htmlConfig : xmlConfig + for (var prop in defaults) config[prop] = defaults[prop] + for (var prop in config_) config[prop] = config_[prop] + + // Return variables for tokenizers + var type, setStyle; + + function inText(stream, state) { + function chain(parser) { + state.tokenize = parser; + return parser(stream, state); + } + + var ch = stream.next(); + if (ch == "<") { + if (stream.eat("!")) { + if (stream.eat("[")) { + if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>")); + else return null; + } else if (stream.match("--")) { + return chain(inBlock("comment", "-->")); + } else if (stream.match("DOCTYPE", true, true)) { + stream.eatWhile(/[\w\._\-]/); + return chain(doctype(1)); + } else { + return null; + } + } else if (stream.eat("?")) { + stream.eatWhile(/[\w\._\-]/); + state.tokenize = inBlock("meta", "?>"); + return "meta"; + } else { + type = stream.eat("/") ? "closeTag" : "openTag"; + state.tokenize = inTag; + return "tag bracket"; + } + } else if (ch == "&") { + var ok; + if (stream.eat("#")) { + if (stream.eat("x")) { + ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); + } else { + ok = stream.eatWhile(/[\d]/) && stream.eat(";"); + } + } else { + ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); + } + return ok ? "atom" : "error"; + } else { + stream.eatWhile(/[^&<]/); + return null; + } + } + inText.isInText = true; + + function inTag(stream, state) { + var ch = stream.next(); + if (ch == ">" || (ch == "/" && stream.eat(">"))) { + state.tokenize = inText; + type = ch == ">" ? "endTag" : "selfcloseTag"; + return "tag bracket"; + } else if (ch == "=") { + type = "equals"; + return null; + } else if (ch == "<") { + state.tokenize = inText; + state.state = baseState; + state.tagName = state.tagStart = null; + var next = state.tokenize(stream, state); + return next ? next + " tag error" : "tag error"; + } else if (/[\'\"]/.test(ch)) { + state.tokenize = inAttribute(ch); + state.stringStartCol = stream.column(); + return state.tokenize(stream, state); + } else { + stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/); + return "word"; + } + } + + function inAttribute(quote) { + var closure = function(stream, state) { + while (!stream.eol()) { + if (stream.next() == quote) { + state.tokenize = inTag; + break; + } + } + return "string"; + }; + closure.isInAttribute = true; + return closure; + } + + function inBlock(style, terminator) { + return function(stream, state) { + while (!stream.eol()) { + if (stream.match(terminator)) { + state.tokenize = inText; + break; + } + stream.next(); + } + return style; + }; + } + function doctype(depth) { + return function(stream, state) { + var ch; + while ((ch = stream.next()) != null) { + if (ch == "<") { + state.tokenize = doctype(depth + 1); + return state.tokenize(stream, state); + } else if (ch == ">") { + if (depth == 1) { + state.tokenize = inText; + break; + } else { + state.tokenize = doctype(depth - 1); + return state.tokenize(stream, state); + } + } + } + return "meta"; + }; + } + + function Context(state, tagName, startOfLine) { + this.prev = state.context; + this.tagName = tagName; + this.indent = state.indented; + this.startOfLine = startOfLine; + if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent)) + this.noIndent = true; + } + function popContext(state) { + if (state.context) state.context = state.context.prev; + } + function maybePopContext(state, nextTagName) { + var parentTagName; + while (true) { + if (!state.context) { + return; + } + parentTagName = state.context.tagName; + if (!config.contextGrabbers.hasOwnProperty(parentTagName) || + !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { + return; + } + popContext(state); + } + } + + function baseState(type, stream, state) { + if (type == "openTag") { + state.tagStart = stream.column(); + return tagNameState; + } else if (type == "closeTag") { + return closeTagNameState; + } else { + return baseState; + } + } + function tagNameState(type, stream, state) { + if (type == "word") { + state.tagName = stream.current(); + setStyle = "tag"; + return attrState; + } else { + setStyle = "error"; + return tagNameState; + } + } + function closeTagNameState(type, stream, state) { + if (type == "word") { + var tagName = stream.current(); + if (state.context && state.context.tagName != tagName && + config.implicitlyClosed.hasOwnProperty(state.context.tagName)) + popContext(state); + if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) { + setStyle = "tag"; + return closeState; + } else { + setStyle = "tag error"; + return closeStateErr; + } + } else { + setStyle = "error"; + return closeStateErr; + } + } + + function closeState(type, _stream, state) { + if (type != "endTag") { + setStyle = "error"; + return closeState; + } + popContext(state); + return baseState; + } + function closeStateErr(type, stream, state) { + setStyle = "error"; + return closeState(type, stream, state); + } + + function attrState(type, _stream, state) { + if (type == "word") { + setStyle = "attribute"; + return attrEqState; + } else if (type == "endTag" || type == "selfcloseTag") { + var tagName = state.tagName, tagStart = state.tagStart; + state.tagName = state.tagStart = null; + if (type == "selfcloseTag" || + config.autoSelfClosers.hasOwnProperty(tagName)) { + maybePopContext(state, tagName); + } else { + maybePopContext(state, tagName); + state.context = new Context(state, tagName, tagStart == state.indented); + } + return baseState; + } + setStyle = "error"; + return attrState; + } + function attrEqState(type, stream, state) { + if (type == "equals") return attrValueState; + if (!config.allowMissing) setStyle = "error"; + return attrState(type, stream, state); + } + function attrValueState(type, stream, state) { + if (type == "string") return attrContinuedState; + if (type == "word" && config.allowUnquoted) {setStyle = "string"; return attrState;} + setStyle = "error"; + return attrState(type, stream, state); + } + function attrContinuedState(type, stream, state) { + if (type == "string") return attrContinuedState; + return attrState(type, stream, state); + } + + return { + startState: function(baseIndent) { + var state = {tokenize: inText, + state: baseState, + indented: baseIndent || 0, + tagName: null, tagStart: null, + context: null} + if (baseIndent != null) state.baseIndent = baseIndent + return state + }, + + token: function(stream, state) { + if (!state.tagName && stream.sol()) + state.indented = stream.indentation(); + + if (stream.eatSpace()) return null; + type = null; + var style = state.tokenize(stream, state); + if ((style || type) && style != "comment") { + setStyle = null; + state.state = state.state(type || style, stream, state); + if (setStyle) + style = setStyle == "error" ? style + " error" : setStyle; + } + return style; + }, + + indent: function(state, textAfter, fullLine) { + var context = state.context; + // Indent multi-line strings (e.g. css). + if (state.tokenize.isInAttribute) { + if (state.tagStart == state.indented) + return state.stringStartCol + 1; + else + return state.indented + indentUnit; + } + if (context && context.noIndent) return CodeMirror.Pass; + if (state.tokenize != inTag && state.tokenize != inText) + return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0; + // Indent the starts of attribute names. + if (state.tagName) { + if (config.multilineTagIndentPastTag !== false) + return state.tagStart + state.tagName.length + 2; + else + return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1); + } + if (config.alignCDATA && /$/, + blockCommentStart: "", + + configuration: config.htmlMode ? "html" : "xml", + helperType: config.htmlMode ? "html" : "xml", + + skipAttribute: function(state) { + if (state.state == attrValueState) + state.state = attrState + } + }; +}); + +CodeMirror.defineMIME("text/xml", "xml"); +CodeMirror.defineMIME("application/xml", "xml"); +if (!CodeMirror.mimeModes.hasOwnProperty("text/html")) + CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true}); + +}); diff --git a/global/codemirror/mode/xquery/index.html b/global/codemirror/mode/xquery/index.html new file mode 100644 index 00000000..7ac5aaef --- /dev/null +++ b/global/codemirror/mode/xquery/index.html @@ -0,0 +1,210 @@ + + +CodeMirror: XQuery mode + + + + + + + + + + +
    +

    XQuery mode

    + + +
    + +
    + + + +

    MIME types defined: application/xquery.

    + +

    Development of the CodeMirror XQuery mode was sponsored by + MarkLogic and developed by + Mike Brevoort. +

    + +
    diff --git a/global/codemirror/mode/xquery/test.js b/global/codemirror/mode/xquery/test.js new file mode 100644 index 00000000..9697f9b0 --- /dev/null +++ b/global/codemirror/mode/xquery/test.js @@ -0,0 +1,67 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Don't take these too seriously -- the expected results appear to be +// based on the results of actual runs without any serious manual +// verification. If a change you made causes them to fail, the test is +// as likely to wrong as the code. + +(function() { + var mode = CodeMirror.getMode({tabSize: 4}, "xquery"); + function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } + + MT("eviltest", + "[keyword xquery] [keyword version] [variable "1][keyword .][atom 0][keyword -][variable ml"][def&variable ;] [comment (: this is : a \"comment\" :)]", + " [keyword let] [variable $let] [keyword :=] [variable <x] [variable attr][keyword =][variable "value">"test"<func>][def&variable ;function]() [variable $var] {[keyword function]()} {[variable $var]}[variable <][keyword /][variable func><][keyword /][variable x>]", + " [keyword let] [variable $joe][keyword :=][atom 1]", + " [keyword return] [keyword element] [variable element] {", + " [keyword attribute] [variable attribute] { [atom 1] },", + " [keyword element] [variable test] { [variable 'a'] }, [keyword attribute] [variable foo] { [variable "bar"] },", + " [def&variable fn:doc]()[[ [variable foo][keyword /][variable @bar] [keyword eq] [variable $let] ]],", + " [keyword //][variable x] } [comment (: a more 'evil' test :)]", + " [comment (: Modified Blakeley example (: with nested comment :) ... :)]", + " [keyword declare] [variable private] [keyword function] [def&variable local:declare]() {()}[variable ;]", + " [keyword declare] [variable private] [keyword function] [def&variable local:private]() {()}[variable ;]", + " [keyword declare] [variable private] [keyword function] [def&variable local:function]() {()}[variable ;]", + " [keyword declare] [variable private] [keyword function] [def&variable local:local]() {()}[variable ;]", + " [keyword let] [variable $let] [keyword :=] [variable <let>let] [variable $let] [keyword :=] [variable "let"<][keyword /let][variable >]", + " [keyword return] [keyword element] [variable element] {", + " [keyword attribute] [variable attribute] { [keyword try] { [def&variable xdmp:version]() } [keyword catch]([variable $e]) { [def&variable xdmp:log]([variable $e]) } },", + " [keyword attribute] [variable fn:doc] { [variable "bar"] [keyword castable] [keyword as] [atom xs:string] },", + " [keyword element] [variable text] { [keyword text] { [variable "text"] } },", + " [def&variable fn:doc]()[[ [qualifier child::][variable eq][keyword /]([variable @bar] [keyword |] [qualifier attribute::][variable attribute]) [keyword eq] [variable $let] ]],", + " [keyword //][variable fn:doc]", + " }"); + + MT("testEmptySequenceKeyword", + "[string \"foo\"] [keyword instance] [keyword of] [keyword empty-sequence]()"); + + MT("testMultiAttr", + "[tag

    ][variable hello] [variable world][tag

    ]"); + + MT("test namespaced variable", + "[keyword declare] [keyword namespace] [variable e] [keyword =] [string \"http://example.com/ANamespace\"][variable ;declare] [keyword variable] [variable $e:exampleComThisVarIsNotRecognized] [keyword as] [keyword element]([keyword *]) [variable external;]"); + + MT("test EQName variable", + "[keyword declare] [keyword variable] [variable $\"http://www.example.com/ns/my\":var] [keyword :=] [atom 12][variable ;]", + "[tag ]{[variable $\"http://www.example.com/ns/my\":var]}[tag ]"); + + MT("test EQName function", + "[keyword declare] [keyword function] [def&variable \"http://www.example.com/ns/my\":fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", + " [variable $a] [keyword +] [atom 2]", + "}[variable ;]", + "[tag ]{[def&variable \"http://www.example.com/ns/my\":fn]([atom 12])}[tag ]"); + + MT("test EQName function with single quotes", + "[keyword declare] [keyword function] [def&variable 'http://www.example.com/ns/my':fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", + " [variable $a] [keyword +] [atom 2]", + "}[variable ;]", + "[tag ]{[def&variable 'http://www.example.com/ns/my':fn]([atom 12])}[tag ]"); + + MT("testProcessingInstructions", + "[def&variable data]([comment&meta ]) [keyword instance] [keyword of] [atom xs:string]"); + + MT("testQuoteEscapeDouble", + "[keyword let] [variable $rootfolder] [keyword :=] [string \"c:\\builds\\winnt\\HEAD\\qa\\scripts\\\"]", + "[keyword let] [variable $keysfolder] [keyword :=] [def&variable concat]([variable $rootfolder], [string \"keys\\\"])"); +})(); diff --git a/global/codemirror/mode/xquery/xquery.js b/global/codemirror/mode/xquery/xquery.js new file mode 100644 index 00000000..f5db831c --- /dev/null +++ b/global/codemirror/mode/xquery/xquery.js @@ -0,0 +1,448 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("xquery", function() { + + // The keywords object is set to the result of this self executing + // function. Each keyword is a property of the keywords object whose + // value is {type: atype, style: astyle} + var keywords = function(){ + // convenience functions used to build keywords object + function kw(type) {return {type: type, style: "keyword"};} + var operator = kw("operator") + , atom = {type: "atom", style: "atom"} + , punctuation = {type: "punctuation", style: null} + , qualifier = {type: "axis_specifier", style: "qualifier"}; + + // kwObj is what is return from this function at the end + var kwObj = { + ',': punctuation + }; + + // a list of 'basic' keywords. For each add a property to kwObj with the value of + // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"} + var basic = ['after', 'all', 'allowing', 'ancestor', 'ancestor-or-self', 'any', 'array', 'as', + 'ascending', 'at', 'attribute', 'base-uri', 'before', 'boundary-space', 'by', 'case', 'cast', + 'castable', 'catch', 'child', 'collation', 'comment', 'construction', 'contains', 'content', + 'context', 'copy', 'copy-namespaces', 'count', 'decimal-format', 'declare', 'default', 'delete', + 'descendant', 'descendant-or-self', 'descending', 'diacritics', 'different', 'distance', + 'document', 'document-node', 'element', 'else', 'empty', 'empty-sequence', 'encoding', 'end', + 'entire', 'every', 'exactly', 'except', 'external', 'first', 'following', 'following-sibling', + 'for', 'from', 'ftand', 'ftnot', 'ft-option', 'ftor', 'function', 'fuzzy', 'greatest', 'group', + 'if', 'import', 'in', 'inherit', 'insensitive', 'insert', 'instance', 'intersect', 'into', + 'invoke', 'is', 'item', 'language', 'last', 'lax', 'least', 'let', 'levels', 'lowercase', 'map', + 'modify', 'module', 'most', 'namespace', 'next', 'no', 'node', 'nodes', 'no-inherit', + 'no-preserve', 'not', 'occurs', 'of', 'only', 'option', 'order', 'ordered', 'ordering', + 'paragraph', 'paragraphs', 'parent', 'phrase', 'preceding', 'preceding-sibling', 'preserve', + 'previous', 'processing-instruction', 'relationship', 'rename', 'replace', 'return', + 'revalidation', 'same', 'satisfies', 'schema', 'schema-attribute', 'schema-element', 'score', + 'self', 'sensitive', 'sentence', 'sentences', 'sequence', 'skip', 'sliding', 'some', 'stable', + 'start', 'stemming', 'stop', 'strict', 'strip', 'switch', 'text', 'then', 'thesaurus', 'times', + 'to', 'transform', 'treat', 'try', 'tumbling', 'type', 'typeswitch', 'union', 'unordered', + 'update', 'updating', 'uppercase', 'using', 'validate', 'value', 'variable', 'version', + 'weight', 'when', 'where', 'wildcards', 'window', 'with', 'without', 'word', 'words', 'xquery']; + for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);}; + + // a list of types. For each add a property to kwObj with the value of + // {type: "atom", style: "atom"} + var types = ['xs:anyAtomicType', 'xs:anySimpleType', 'xs:anyType', 'xs:anyURI', + 'xs:base64Binary', 'xs:boolean', 'xs:byte', 'xs:date', 'xs:dateTime', 'xs:dateTimeStamp', + 'xs:dayTimeDuration', 'xs:decimal', 'xs:double', 'xs:duration', 'xs:ENTITIES', 'xs:ENTITY', + 'xs:float', 'xs:gDay', 'xs:gMonth', 'xs:gMonthDay', 'xs:gYear', 'xs:gYearMonth', 'xs:hexBinary', + 'xs:ID', 'xs:IDREF', 'xs:IDREFS', 'xs:int', 'xs:integer', 'xs:item', 'xs:java', 'xs:language', + 'xs:long', 'xs:Name', 'xs:NCName', 'xs:negativeInteger', 'xs:NMTOKEN', 'xs:NMTOKENS', + 'xs:nonNegativeInteger', 'xs:nonPositiveInteger', 'xs:normalizedString', 'xs:NOTATION', + 'xs:numeric', 'xs:positiveInteger', 'xs:precisionDecimal', 'xs:QName', 'xs:short', 'xs:string', + 'xs:time', 'xs:token', 'xs:unsignedByte', 'xs:unsignedInt', 'xs:unsignedLong', + 'xs:unsignedShort', 'xs:untyped', 'xs:untypedAtomic', 'xs:yearMonthDuration']; + for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;}; + + // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"} + var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-']; + for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;}; + + // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"} + var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::", + "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"]; + for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; }; + + return kwObj; + }(); + + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + + // the primary mode tokenizer + function tokenBase(stream, state) { + var ch = stream.next(), + mightBeFunction = false, + isEQName = isEQNameAhead(stream); + + // an XML tag (if not in some sub, chained tokenizer) + if (ch == "<") { + if(stream.match("!--", true)) + return chain(stream, state, tokenXMLComment); + + if(stream.match("![CDATA", false)) { + state.tokenize = tokenCDATA; + return "tag"; + } + + if(stream.match("?", false)) { + return chain(stream, state, tokenPreProcessing); + } + + var isclose = stream.eat("/"); + stream.eatSpace(); + var tagName = "", c; + while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; + + return chain(stream, state, tokenTag(tagName, isclose)); + } + // start code block + else if(ch == "{") { + pushStateStack(state, { type: "codeblock"}); + return null; + } + // end code block + else if(ch == "}") { + popStateStack(state); + return null; + } + // if we're in an XML block + else if(isInXmlBlock(state)) { + if(ch == ">") + return "tag"; + else if(ch == "/" && stream.eat(">")) { + popStateStack(state); + return "tag"; + } + else + return "variable"; + } + // if a number + else if (/\d/.test(ch)) { + stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/); + return "atom"; + } + // comment start + else if (ch === "(" && stream.eat(":")) { + pushStateStack(state, { type: "comment"}); + return chain(stream, state, tokenComment); + } + // quoted string + else if (!isEQName && (ch === '"' || ch === "'")) + return chain(stream, state, tokenString(ch)); + // variable + else if(ch === "$") { + return chain(stream, state, tokenVariable); + } + // assignment + else if(ch ===":" && stream.eat("=")) { + return "keyword"; + } + // open paren + else if(ch === "(") { + pushStateStack(state, { type: "paren"}); + return null; + } + // close paren + else if(ch === ")") { + popStateStack(state); + return null; + } + // open paren + else if(ch === "[") { + pushStateStack(state, { type: "bracket"}); + return null; + } + // close paren + else if(ch === "]") { + popStateStack(state); + return null; + } + else { + var known = keywords.propertyIsEnumerable(ch) && keywords[ch]; + + // if there's a EQName ahead, consume the rest of the string portion, it's likely a function + if(isEQName && ch === '\"') while(stream.next() !== '"'){} + if(isEQName && ch === '\'') while(stream.next() !== '\''){} + + // gobble up a word if the character is not known + if(!known) stream.eatWhile(/[\w\$_-]/); + + // gobble a colon in the case that is a lib func type call fn:doc + var foundColon = stream.eat(":"); + + // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier + // which should get matched as a keyword + if(!stream.eat(":") && foundColon) { + stream.eatWhile(/[\w\$_-]/); + } + // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort) + if(stream.match(/^[ \t]*\(/, false)) { + mightBeFunction = true; + } + // is the word a keyword? + var word = stream.current(); + known = keywords.propertyIsEnumerable(word) && keywords[word]; + + // if we think it's a function call but not yet known, + // set style to variable for now for lack of something better + if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"}; + + // if the previous word was element, attribute, axis specifier, this word should be the name of that + if(isInXmlConstructor(state)) { + popStateStack(state); + return "variable"; + } + // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and + // push the stack so we know to look for it on the next word + if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"}); + + // if the word is known, return the details of that else just call this a generic 'word' + return known ? known.style : "variable"; + } + } + + // handle comments, including nested + function tokenComment(stream, state) { + var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; + while (ch = stream.next()) { + if (ch == ")" && maybeEnd) { + if(nestedCount > 0) + nestedCount--; + else { + popStateStack(state); + break; + } + } + else if(ch == ":" && maybeNested) { + nestedCount++; + } + maybeEnd = (ch == ":"); + maybeNested = (ch == "("); + } + + return "comment"; + } + + // tokenizer for string literals + // optionally pass a tokenizer function to set state.tokenize back to when finished + function tokenString(quote, f) { + return function(stream, state) { + var ch; + + if(isInString(state) && stream.current() == quote) { + popStateStack(state); + if(f) state.tokenize = f; + return "string"; + } + + pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) }); + + // if we're in a string and in an XML block, allow an embedded code block + if(stream.match("{", false) && isInXmlAttributeBlock(state)) { + state.tokenize = tokenBase; + return "string"; + } + + + while (ch = stream.next()) { + if (ch == quote) { + popStateStack(state); + if(f) state.tokenize = f; + break; + } + else { + // if we're in a string and in an XML block, allow an embedded code block in an attribute + if(stream.match("{", false) && isInXmlAttributeBlock(state)) { + state.tokenize = tokenBase; + return "string"; + } + + } + } + + return "string"; + }; + } + + // tokenizer for variables + function tokenVariable(stream, state) { + var isVariableChar = /[\w\$_-]/; + + // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote + if(stream.eat("\"")) { + while(stream.next() !== '\"'){}; + stream.eat(":"); + } else { + stream.eatWhile(isVariableChar); + if(!stream.match(":=", false)) stream.eat(":"); + } + stream.eatWhile(isVariableChar); + state.tokenize = tokenBase; + return "variable"; + } + + // tokenizer for XML tags + function tokenTag(name, isclose) { + return function(stream, state) { + stream.eatSpace(); + if(isclose && stream.eat(">")) { + popStateStack(state); + state.tokenize = tokenBase; + return "tag"; + } + // self closing tag without attributes? + if(!stream.eat("/")) + pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase}); + if(!stream.eat(">")) { + state.tokenize = tokenAttribute; + return "tag"; + } + else { + state.tokenize = tokenBase; + } + return "tag"; + }; + } + + // tokenizer for XML attributes + function tokenAttribute(stream, state) { + var ch = stream.next(); + + if(ch == "/" && stream.eat(">")) { + if(isInXmlAttributeBlock(state)) popStateStack(state); + if(isInXmlBlock(state)) popStateStack(state); + return "tag"; + } + if(ch == ">") { + if(isInXmlAttributeBlock(state)) popStateStack(state); + return "tag"; + } + if(ch == "=") + return null; + // quoted string + if (ch == '"' || ch == "'") + return chain(stream, state, tokenString(ch, tokenAttribute)); + + if(!isInXmlAttributeBlock(state)) + pushStateStack(state, { type: "attribute", tokenize: tokenAttribute}); + + stream.eat(/[a-zA-Z_:]/); + stream.eatWhile(/[-a-zA-Z0-9_:.]/); + stream.eatSpace(); + + // the case where the attribute has not value and the tag was closed + if(stream.match(">", false) || stream.match("/", false)) { + popStateStack(state); + state.tokenize = tokenBase; + } + + return "attribute"; + } + + // handle comments, including nested + function tokenXMLComment(stream, state) { + var ch; + while (ch = stream.next()) { + if (ch == "-" && stream.match("->", true)) { + state.tokenize = tokenBase; + return "comment"; + } + } + } + + + // handle CDATA + function tokenCDATA(stream, state) { + var ch; + while (ch = stream.next()) { + if (ch == "]" && stream.match("]", true)) { + state.tokenize = tokenBase; + return "comment"; + } + } + } + + // handle preprocessing instructions + function tokenPreProcessing(stream, state) { + var ch; + while (ch = stream.next()) { + if (ch == "?" && stream.match(">", true)) { + state.tokenize = tokenBase; + return "comment meta"; + } + } + } + + + // functions to test the current context of the state + function isInXmlBlock(state) { return isIn(state, "tag"); } + function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); } + function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); } + function isInString(state) { return isIn(state, "string"); } + + function isEQNameAhead(stream) { + // assume we've already eaten a quote (") + if(stream.current() === '"') + return stream.match(/^[^\"]+\"\:/, false); + else if(stream.current() === '\'') + return stream.match(/^[^\"]+\'\:/, false); + else + return false; + } + + function isIn(state, type) { + return (state.stack.length && state.stack[state.stack.length - 1].type == type); + } + + function pushStateStack(state, newState) { + state.stack.push(newState); + } + + function popStateStack(state) { + state.stack.pop(); + var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize; + state.tokenize = reinstateTokenize || tokenBase; + } + + // the interface for the mode API + return { + startState: function() { + return { + tokenize: tokenBase, + cc: [], + stack: [] + }; + }, + + token: function(stream, state) { + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + return style; + }, + + blockCommentStart: "(:", + blockCommentEnd: ":)" + + }; + +}); + +CodeMirror.defineMIME("application/xquery", "xquery"); + +}); diff --git a/global/codemirror/mode/yacas/index.html b/global/codemirror/mode/yacas/index.html new file mode 100644 index 00000000..8e52cafb --- /dev/null +++ b/global/codemirror/mode/yacas/index.html @@ -0,0 +1,87 @@ + + +CodeMirror: yacas mode + + + + + + + + + + +
    +

    yacas mode

    + + + + + + +

    MIME types defined: text/x-yacas (yacas).

    +
    diff --git a/global/codemirror/mode/yacas/yacas.js b/global/codemirror/mode/yacas/yacas.js new file mode 100644 index 00000000..34c84fbd --- /dev/null +++ b/global/codemirror/mode/yacas/yacas.js @@ -0,0 +1,204 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Yacas mode copyright (c) 2015 by Grzegorz Mazur +// Loosely based on mathematica mode by Calin Barbat + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('yacas', function(_config, _parserConfig) { + + function words(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + + var bodiedOps = words("Assert BackQuote D Defun Deriv For ForEach FromFile " + + "FromString Function Integrate InverseTaylor Limit " + + "LocalSymbols Macro MacroRule MacroRulePattern " + + "NIntegrate Rule RulePattern Subst TD TExplicitSum " + + "TSum Taylor Taylor1 Taylor2 Taylor3 ToFile " + + "ToStdout ToString TraceRule Until While"); + + // patterns + var pFloatForm = "(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)"; + var pIdentifier = "(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)"; + + // regular expressions + var reFloatForm = new RegExp(pFloatForm); + var reIdentifier = new RegExp(pIdentifier); + var rePattern = new RegExp(pIdentifier + "?_" + pIdentifier); + var reFunctionLike = new RegExp(pIdentifier + "\\s*\\("); + + function tokenBase(stream, state) { + var ch; + + // get next character + ch = stream.next(); + + // string + if (ch === '"') { + state.tokenize = tokenString; + return state.tokenize(stream, state); + } + + // comment + if (ch === '/') { + if (stream.eat('*')) { + state.tokenize = tokenComment; + return state.tokenize(stream, state); + } + if (stream.eat("/")) { + stream.skipToEnd(); + return "comment"; + } + } + + // go back one character + stream.backUp(1); + + // update scope info + var m = stream.match(/^(\w+)\s*\(/, false); + if (m !== null && bodiedOps.hasOwnProperty(m[1])) + state.scopes.push('bodied'); + + var scope = currentScope(state); + + if (scope === 'bodied' && ch === '[') + state.scopes.pop(); + + if (ch === '[' || ch === '{' || ch === '(') + state.scopes.push(ch); + + scope = currentScope(state); + + if (scope === '[' && ch === ']' || + scope === '{' && ch === '}' || + scope === '(' && ch === ')') + state.scopes.pop(); + + if (ch === ';') { + while (scope === 'bodied') { + state.scopes.pop(); + scope = currentScope(state); + } + } + + // look for ordered rules + if (stream.match(/\d+ *#/, true, false)) { + return 'qualifier'; + } + + // look for numbers + if (stream.match(reFloatForm, true, false)) { + return 'number'; + } + + // look for placeholders + if (stream.match(rePattern, true, false)) { + return 'variable-3'; + } + + // match all braces separately + if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) { + return 'bracket'; + } + + // literals looking like function calls + if (stream.match(reFunctionLike, true, false)) { + stream.backUp(1); + return 'variable'; + } + + // all other identifiers + if (stream.match(reIdentifier, true, false)) { + return 'variable-2'; + } + + // operators; note that operators like @@ or /; are matched separately for each symbol. + if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%|#)/, true, false)) { + return 'operator'; + } + + // everything else is an error + return 'error'; + } + + function tokenString(stream, state) { + var next, end = false, escaped = false; + while ((next = stream.next()) != null) { + if (next === '"' && !escaped) { + end = true; + break; + } + escaped = !escaped && next === '\\'; + } + if (end && !escaped) { + state.tokenize = tokenBase; + } + return 'string'; + }; + + function tokenComment(stream, state) { + var prev, next; + while((next = stream.next()) != null) { + if (prev === '*' && next === '/') { + state.tokenize = tokenBase; + break; + } + prev = next; + } + return 'comment'; + } + + function currentScope(state) { + var scope = null; + if (state.scopes.length > 0) + scope = state.scopes[state.scopes.length - 1]; + return scope; + } + + return { + startState: function() { + return { + tokenize: tokenBase, + scopes: [] + }; + }, + token: function(stream, state) { + if (stream.eatSpace()) return null; + return state.tokenize(stream, state); + }, + indent: function(state, textAfter) { + if (state.tokenize !== tokenBase && state.tokenize !== null) + return CodeMirror.Pass; + + var delta = 0; + if (textAfter === ']' || textAfter === '];' || + textAfter === '}' || textAfter === '};' || + textAfter === ');') + delta = -1; + + return (state.scopes.length + delta) * _config.indentUnit; + }, + electricChars: "{}[]();", + blockCommentStart: "/*", + blockCommentEnd: "*/", + lineComment: "//" + }; +}); + +CodeMirror.defineMIME('text/x-yacas', { + name: 'yacas' +}); + +}); diff --git a/global/codemirror/mode/yaml-frontmatter/index.html b/global/codemirror/mode/yaml-frontmatter/index.html new file mode 100644 index 00000000..30cb294e --- /dev/null +++ b/global/codemirror/mode/yaml-frontmatter/index.html @@ -0,0 +1,121 @@ + + +CodeMirror: YAML front matter mode + + + + + + + + + + + + + +
    +

    YAML front matter mode

    +
    + +

    Defines a mode that parses +a YAML frontmatter +at the start of a file, switching to a base mode at the end of that. +Takes a mode configuration option base to configure the +base mode, which defaults to "gfm".

    + + + +
    diff --git a/global/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js b/global/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js new file mode 100644 index 00000000..5f497723 --- /dev/null +++ b/global/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js @@ -0,0 +1,68 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function (mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror"), require("../yaml/yaml")) + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror", "../yaml/yaml"], mod) + else // Plain browser env + mod(CodeMirror) +})(function (CodeMirror) { + + var START = 0, FRONTMATTER = 1, BODY = 2 + + // a mixed mode for Markdown text with an optional YAML front matter + CodeMirror.defineMode("yaml-frontmatter", function (config, parserConfig) { + var yamlMode = CodeMirror.getMode(config, "yaml") + var innerMode = CodeMirror.getMode(config, parserConfig && parserConfig.base || "gfm") + + function curMode(state) { + return state.state == BODY ? innerMode : yamlMode + } + + return { + startState: function () { + return { + state: START, + inner: CodeMirror.startState(yamlMode) + } + }, + copyState: function (state) { + return { + state: state.state, + inner: CodeMirror.copyState(curMode(state), state.inner) + } + }, + token: function (stream, state) { + if (state.state == START) { + if (stream.match(/---/, false)) { + state.state = FRONTMATTER + return yamlMode.token(stream, state.inner) + } else { + state.state = BODY + state.inner = CodeMirror.startState(innerMode) + return innerMode.token(stream, state.inner) + } + } else if (state.state == FRONTMATTER) { + var end = stream.sol() && stream.match(/---/, false) + var style = yamlMode.token(stream, state.inner) + if (end) { + state.state = BODY + state.inner = CodeMirror.startState(innerMode) + } + return style + } else { + return innerMode.token(stream, state.inner) + } + }, + innerMode: function (state) { + return {mode: curMode(state), state: state.inner} + }, + blankLine: function (state) { + var mode = curMode(state) + if (mode.blankLine) return mode.blankLine(state.inner) + } + } + }) +}); diff --git a/global/codemirror/mode/yaml/index.html b/global/codemirror/mode/yaml/index.html new file mode 100644 index 00000000..be9b6323 --- /dev/null +++ b/global/codemirror/mode/yaml/index.html @@ -0,0 +1,80 @@ + + +CodeMirror: YAML mode + + + + + + + + + +
    +

    YAML mode

    +
    + + +

    MIME types defined: text/x-yaml.

    + +
    diff --git a/global/codemirror/mode/yaml/yaml.js b/global/codemirror/mode/yaml/yaml.js new file mode 100644 index 00000000..59c0ecdb --- /dev/null +++ b/global/codemirror/mode/yaml/yaml.js @@ -0,0 +1,118 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode("yaml", function() { + + var cons = ['true', 'false', 'on', 'off', 'yes', 'no']; + var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i'); + + return { + token: function(stream, state) { + var ch = stream.peek(); + var esc = state.escaped; + state.escaped = false; + /* comments */ + if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) { + stream.skipToEnd(); + return "comment"; + } + + if (stream.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/)) + return "string"; + + if (state.literal && stream.indentation() > state.keyCol) { + stream.skipToEnd(); return "string"; + } else if (state.literal) { state.literal = false; } + if (stream.sol()) { + state.keyCol = 0; + state.pair = false; + state.pairStart = false; + /* document start */ + if(stream.match(/---/)) { return "def"; } + /* document end */ + if (stream.match(/\.\.\./)) { return "def"; } + /* array list item */ + if (stream.match(/\s*-\s+/)) { return 'meta'; } + } + /* inline pairs/lists */ + if (stream.match(/^(\{|\}|\[|\])/)) { + if (ch == '{') + state.inlinePairs++; + else if (ch == '}') + state.inlinePairs--; + else if (ch == '[') + state.inlineList++; + else + state.inlineList--; + return 'meta'; + } + + /* list seperator */ + if (state.inlineList > 0 && !esc && ch == ',') { + stream.next(); + return 'meta'; + } + /* pairs seperator */ + if (state.inlinePairs > 0 && !esc && ch == ',') { + state.keyCol = 0; + state.pair = false; + state.pairStart = false; + stream.next(); + return 'meta'; + } + + /* start of value of a pair */ + if (state.pairStart) { + /* block literals */ + if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; }; + /* references */ + if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; } + /* numbers */ + if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; } + if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; } + /* keywords */ + if (stream.match(keywordRegex)) { return 'keyword'; } + } + + /* pairs (associative arrays) -> key */ + if (!state.pair && stream.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)) { + state.pair = true; + state.keyCol = stream.indentation(); + return "atom"; + } + if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; } + + /* nothing found, continue */ + state.pairStart = false; + state.escaped = (ch == '\\'); + stream.next(); + return null; + }, + startState: function() { + return { + pair: false, + pairStart: false, + keyCol: 0, + inlinePairs: 0, + inlineList: 0, + literal: false, + escaped: false + }; + } + }; +}); + +CodeMirror.defineMIME("text/x-yaml", "yaml"); +CodeMirror.defineMIME("text/yaml", "yaml"); + +}); diff --git a/global/codemirror/mode/z80/index.html b/global/codemirror/mode/z80/index.html new file mode 100644 index 00000000..a41b7473 --- /dev/null +++ b/global/codemirror/mode/z80/index.html @@ -0,0 +1,53 @@ + + +CodeMirror: Z80 assembly mode + + + + + + + + + +
    +

    Z80 assembly mode

    + + +
    + + + +

    MIME types defined: text/x-z80, text/x-ez80.

    +
    diff --git a/global/codemirror/mode/z80/z80.js b/global/codemirror/mode/z80/z80.js new file mode 100644 index 00000000..aae70216 --- /dev/null +++ b/global/codemirror/mode/z80/z80.js @@ -0,0 +1,116 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function(mod) { + if (typeof exports == "object" && typeof module == "object") // CommonJS + mod(require("../../lib/codemirror")); + else if (typeof define == "function" && define.amd) // AMD + define(["../../lib/codemirror"], mod); + else // Plain browser env + mod(CodeMirror); +})(function(CodeMirror) { +"use strict"; + +CodeMirror.defineMode('z80', function(_config, parserConfig) { + var ez80 = parserConfig.ez80; + var keywords1, keywords2; + if (ez80) { + keywords1 = /^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i; + keywords2 = /^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i; + } else { + keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i; + keywords2 = /^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i; + } + + var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i; + var variables2 = /^(n?[zc]|p[oe]?|m)\b/i; + var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i; + var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i; + + return { + startState: function() { + return { + context: 0 + }; + }, + token: function(stream, state) { + if (!stream.column()) + state.context = 0; + + if (stream.eatSpace()) + return null; + + var w; + + if (stream.eatWhile(/\w/)) { + if (ez80 && stream.eat('.')) { + stream.eatWhile(/\w/); + } + w = stream.current(); + + if (stream.indentation()) { + if ((state.context == 1 || state.context == 4) && variables1.test(w)) { + state.context = 4; + return 'var2'; + } + + if (state.context == 2 && variables2.test(w)) { + state.context = 4; + return 'var3'; + } + + if (keywords1.test(w)) { + state.context = 1; + return 'keyword'; + } else if (keywords2.test(w)) { + state.context = 2; + return 'keyword'; + } else if (state.context == 4 && numbers.test(w)) { + return 'number'; + } + + if (errors.test(w)) + return 'error'; + } else if (stream.match(numbers)) { + return 'number'; + } else { + return null; + } + } else if (stream.eat(';')) { + stream.skipToEnd(); + return 'comment'; + } else if (stream.eat('"')) { + while (w = stream.next()) { + if (w == '"') + break; + + if (w == '\\') + stream.next(); + } + return 'string'; + } else if (stream.eat('\'')) { + if (stream.match(/\\?.'/)) + return 'number'; + } else if (stream.eat('.') || stream.sol() && stream.eat('#')) { + state.context = 5; + + if (stream.eatWhile(/\w/)) + return 'def'; + } else if (stream.eat('$')) { + if (stream.eatWhile(/[\da-f]/i)) + return 'number'; + } else if (stream.eat('%')) { + if (stream.eatWhile(/[01]/)) + return 'number'; + } else { + stream.next(); + } + return null; + } + }; +}); + +CodeMirror.defineMIME("text/x-z80", "z80"); +CodeMirror.defineMIME("text/x-ez80", { name: "z80", ez80: true }); + +}); diff --git a/global/codemirror/package.json b/global/codemirror/package.json new file mode 100644 index 00000000..f251b238 --- /dev/null +++ b/global/codemirror/package.json @@ -0,0 +1,49 @@ +{ + "name": "codemirror", + "version": "5.30.0", + "main": "lib/codemirror.js", + "style": "lib/codemirror.css", + "description": "Full-featured in-browser code editor", + "license": "MIT", + "directories": { + "lib": "./lib" + }, + "scripts": { + "build": "rollup -c", + "watch": "rollup -w -c", + "prepare": "npm run-script build", + "test": "node ./test/run.js", + "lint": "bin/lint" + }, + "devDependencies": { + "blint": "^1", + "node-static": "0.6.0", + "phantomjs-prebuilt": "^2.1.12", + "rollup": "^0.41.0", + "rollup-plugin-buble": "^0.15.0", + "rollup-watch": "^3.2.0" + }, + "bugs": "http://github.com/codemirror/CodeMirror/issues", + "keywords": [ + "JavaScript", + "CodeMirror", + "Editor" + ], + "homepage": "http://codemirror.net", + "maintainers": [ + { + "name": "Marijn Haverbeke", + "email": "marijnh@gmail.com", + "web": "http://marijnhaverbeke.nl" + } + ], + "repository": { + "type": "git", + "url": "https://github.com/codemirror/CodeMirror.git" + }, + "jspm": { + "directories": {}, + "dependencies": {}, + "devDependencies": {} + } +} diff --git a/global/codemirror/rollup.config.js b/global/codemirror/rollup.config.js new file mode 100644 index 00000000..9a17b24f --- /dev/null +++ b/global/codemirror/rollup.config.js @@ -0,0 +1,18 @@ +import buble from 'rollup-plugin-buble'; + +export default { + banner: `// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// This is CodeMirror (http://codemirror.net), a code editor +// implemented in JavaScript on top of the browser's DOM. +// +// You can find some technical background for some of the code below +// at http://marijnhaverbeke.nl/blog/#cm-internals . +`, + entry: "src/codemirror.js", + format: "umd", + dest: "lib/codemirror.js", + moduleName: "CodeMirror", + plugins: [ buble({namedFunctionExpressions: false}) ] +}; diff --git a/global/codemirror/src/codemirror.js b/global/codemirror/src/codemirror.js new file mode 100644 index 00000000..3c16cc87 --- /dev/null +++ b/global/codemirror/src/codemirror.js @@ -0,0 +1,3 @@ +import { CodeMirror } from "./edit/main" + +export default CodeMirror diff --git a/global/codemirror/src/display/Display.js b/global/codemirror/src/display/Display.js new file mode 100644 index 00000000..ad0256bd --- /dev/null +++ b/global/codemirror/src/display/Display.js @@ -0,0 +1,106 @@ +import { gecko, ie, ie_version, mobile, webkit } from "../util/browser" +import { elt, eltP } from "../util/dom" +import { scrollerGap } from "../util/misc" + +// The display handles the DOM integration, both for input reading +// and content drawing. It holds references to DOM nodes and +// display-related state. + +export function Display(place, doc, input) { + let d = this + this.input = input + + // Covers bottom-right square when both scrollbars are present. + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler") + d.scrollbarFiller.setAttribute("cm-not-content", "true") + // Covers bottom of gutter when coverGutterNextToScrollbar is on + // and h scrollbar is present. + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler") + d.gutterFiller.setAttribute("cm-not-content", "true") + // Will contain the actual code, positioned to cover the viewport. + d.lineDiv = eltP("div", null, "CodeMirror-code") + // Elements are added to these to represent selection and cursors. + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1") + d.cursorDiv = elt("div", null, "CodeMirror-cursors") + // A visibility: hidden element used to find the size of things. + d.measure = elt("div", null, "CodeMirror-measure") + // When lines outside of the viewport are measured, they are drawn in this. + d.lineMeasure = elt("div", null, "CodeMirror-measure") + // Wraps everything that needs to exist inside the vertically-padded coordinate system + d.lineSpace = eltP("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], + null, "position: relative; outline: none") + let lines = eltP("div", [d.lineSpace], "CodeMirror-lines") + // Moved around its parent to cover visible view. + d.mover = elt("div", [lines], null, "position: relative") + // Set to the height of the document, allowing scrolling. + d.sizer = elt("div", [d.mover], "CodeMirror-sizer") + d.sizerWidth = null + // Behavior of elts with overflow: auto and padding is + // inconsistent across browsers. This is used to ensure the + // scrollable area is big enough. + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;") + // Will contain the gutters, if any. + d.gutters = elt("div", null, "CodeMirror-gutters") + d.lineGutter = null + // Actual scrollable element. + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll") + d.scroller.setAttribute("tabIndex", "-1") + // The element in which the editor lives. + d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror") + + // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) + if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0 } + if (!webkit && !(gecko && mobile)) d.scroller.draggable = true + + if (place) { + if (place.appendChild) place.appendChild(d.wrapper) + else place(d.wrapper) + } + + // Current rendered range (may be bigger than the view window). + d.viewFrom = d.viewTo = doc.first + d.reportedViewFrom = d.reportedViewTo = doc.first + // Information about the rendered lines. + d.view = [] + d.renderedView = null + // Holds info about a single rendered line when it was rendered + // for measurement, while not in view. + d.externalMeasured = null + // Empty space (in pixels) above the view + d.viewOffset = 0 + d.lastWrapHeight = d.lastWrapWidth = 0 + d.updateLineNumbers = null + + d.nativeBarWidth = d.barHeight = d.barWidth = 0 + d.scrollbarsClipped = false + + // Used to only resize the line number gutter when necessary (when + // the amount of lines crosses a boundary that makes its width change) + d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null + // Set to true when a non-horizontal-scrolling line widget is + // added. As an optimization, line widget aligning is skipped when + // this is false. + d.alignWidgets = false + + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null + + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + d.maxLine = null + d.maxLineLength = 0 + d.maxLineChanged = false + + // Used for measuring wheel scrolling granularity + d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null + + // True when shift is held down. + d.shift = false + + // Used to track whether anything happened since the context menu + // was opened. + d.selForContextMenu = null + + d.activeTouch = null + + input.init(d) +} diff --git a/global/codemirror/src/display/focus.js b/global/codemirror/src/display/focus.js new file mode 100644 index 00000000..ee52daff --- /dev/null +++ b/global/codemirror/src/display/focus.js @@ -0,0 +1,47 @@ +import { restartBlink } from "./selection" +import { webkit } from "../util/browser" +import { addClass, rmClass } from "../util/dom" +import { signal } from "../util/event" + +export function ensureFocus(cm) { + if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm) } +} + +export function delayBlurEvent(cm) { + cm.state.delayingBlurEvent = true + setTimeout(() => { if (cm.state.delayingBlurEvent) { + cm.state.delayingBlurEvent = false + onBlur(cm) + } }, 100) +} + +export function onFocus(cm, e) { + if (cm.state.delayingBlurEvent) cm.state.delayingBlurEvent = false + + if (cm.options.readOnly == "nocursor") return + if (!cm.state.focused) { + signal(cm, "focus", cm, e) + cm.state.focused = true + addClass(cm.display.wrapper, "CodeMirror-focused") + // This test prevents this from firing when a context + // menu is closed (since the input reset would kill the + // select-all detection hack) + if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { + cm.display.input.reset() + if (webkit) setTimeout(() => cm.display.input.reset(true), 20) // Issue #1730 + } + cm.display.input.receivedFocus() + } + restartBlink(cm) +} +export function onBlur(cm, e) { + if (cm.state.delayingBlurEvent) return + + if (cm.state.focused) { + signal(cm, "blur", cm, e) + cm.state.focused = false + rmClass(cm.display.wrapper, "CodeMirror-focused") + } + clearInterval(cm.display.blinker) + setTimeout(() => { if (!cm.state.focused) cm.display.shift = false }, 150) +} diff --git a/global/codemirror/src/display/gutters.js b/global/codemirror/src/display/gutters.js new file mode 100644 index 00000000..7ccf119e --- /dev/null +++ b/global/codemirror/src/display/gutters.js @@ -0,0 +1,34 @@ +import { elt, removeChildren } from "../util/dom" +import { indexOf } from "../util/misc" + +import { updateGutterSpace } from "./update_display" + +// Rebuild the gutter elements, ensure the margin to the left of the +// code matches their width. +export function updateGutters(cm) { + let gutters = cm.display.gutters, specs = cm.options.gutters + removeChildren(gutters) + let i = 0 + for (; i < specs.length; ++i) { + let gutterClass = specs[i] + let gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)) + if (gutterClass == "CodeMirror-linenumbers") { + cm.display.lineGutter = gElt + gElt.style.width = (cm.display.lineNumWidth || 1) + "px" + } + } + gutters.style.display = i ? "" : "none" + updateGutterSpace(cm) +} + +// Make sure the gutters options contains the element +// "CodeMirror-linenumbers" when the lineNumbers option is true. +export function setGuttersForLineNumbers(options) { + let found = indexOf(options.gutters, "CodeMirror-linenumbers") + if (found == -1 && options.lineNumbers) { + options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]) + } else if (found > -1 && !options.lineNumbers) { + options.gutters = options.gutters.slice(0) + options.gutters.splice(found, 1) + } +} diff --git a/global/codemirror/src/display/highlight_worker.js b/global/codemirror/src/display/highlight_worker.js new file mode 100644 index 00000000..e868c42f --- /dev/null +++ b/global/codemirror/src/display/highlight_worker.js @@ -0,0 +1,55 @@ +import { getContextBefore, highlightLine, processLine } from "../line/highlight" +import { copyState } from "../modes" +import { bind } from "../util/misc" + +import { runInOp } from "./operations" +import { regLineChange } from "./view_tracking" + +// HIGHLIGHT WORKER + +export function startWorker(cm, time) { + if (cm.doc.highlightFrontier < cm.display.viewTo) + cm.state.highlight.set(time, bind(highlightWorker, cm)) +} + +function highlightWorker(cm) { + let doc = cm.doc + if (doc.highlightFrontier >= cm.display.viewTo) return + let end = +new Date + cm.options.workTime + let context = getContextBefore(cm, doc.highlightFrontier) + let changedLines = [] + + doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), line => { + if (context.line >= cm.display.viewFrom) { // Visible + let oldStyles = line.styles + let resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null + let highlighted = highlightLine(cm, line, context, true) + if (resetState) context.state = resetState + line.styles = highlighted.styles + let oldCls = line.styleClasses, newCls = highlighted.classes + if (newCls) line.styleClasses = newCls + else if (oldCls) line.styleClasses = null + let ischange = !oldStyles || oldStyles.length != line.styles.length || + oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass) + for (let i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i] + if (ischange) changedLines.push(context.line) + line.stateAfter = context.save() + context.nextLine() + } else { + if (line.text.length <= cm.options.maxHighlightLength) + processLine(cm, line.text, context) + line.stateAfter = context.line % 5 == 0 ? context.save() : null + context.nextLine() + } + if (+new Date > end) { + startWorker(cm, cm.options.workDelay) + return true + } + }) + doc.highlightFrontier = context.line + doc.modeFrontier = Math.max(doc.modeFrontier, context.line) + if (changedLines.length) runInOp(cm, () => { + for (let i = 0; i < changedLines.length; i++) + regLineChange(cm, changedLines[i], "text") + }) +} diff --git a/global/codemirror/src/display/line_numbers.js b/global/codemirror/src/display/line_numbers.js new file mode 100644 index 00000000..c48f2204 --- /dev/null +++ b/global/codemirror/src/display/line_numbers.js @@ -0,0 +1,48 @@ +import { lineNumberFor } from "../line/utils_line" +import { compensateForHScroll } from "../measurement/position_measurement" +import { elt } from "../util/dom" + +import { updateGutterSpace } from "./update_display" + +// Re-align line numbers and gutter marks to compensate for +// horizontal scrolling. +export function alignHorizontally(cm) { + let display = cm.display, view = display.view + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return + let comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft + let gutterW = display.gutters.offsetWidth, left = comp + "px" + for (let i = 0; i < view.length; i++) if (!view[i].hidden) { + if (cm.options.fixedGutter) { + if (view[i].gutter) + view[i].gutter.style.left = left + if (view[i].gutterBackground) + view[i].gutterBackground.style.left = left + } + let align = view[i].alignable + if (align) for (let j = 0; j < align.length; j++) + align[j].style.left = left + } + if (cm.options.fixedGutter) + display.gutters.style.left = (comp + gutterW) + "px" +} + +// Used to ensure that the line number gutter is still the right +// size for the current document size. Returns true when an update +// is needed. +export function maybeUpdateLineNumberWidth(cm) { + if (!cm.options.lineNumbers) return false + let doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display + if (last.length != display.lineNumChars) { + let test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")) + let innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW + display.lineGutter.style.width = "" + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1 + display.lineNumWidth = display.lineNumInnerWidth + padding + display.lineNumChars = display.lineNumInnerWidth ? last.length : -1 + display.lineGutter.style.width = display.lineNumWidth + "px" + updateGutterSpace(cm) + return true + } + return false +} diff --git a/global/codemirror/src/display/mode_state.js b/global/codemirror/src/display/mode_state.js new file mode 100644 index 00000000..ca0a534c --- /dev/null +++ b/global/codemirror/src/display/mode_state.js @@ -0,0 +1,22 @@ +import { getMode } from "../modes" + +import { startWorker } from "./highlight_worker" +import { regChange } from "./view_tracking" + +// Used to get the editor into a consistent state again when options change. + +export function loadMode(cm) { + cm.doc.mode = getMode(cm.options, cm.doc.modeOption) + resetModeState(cm) +} + +export function resetModeState(cm) { + cm.doc.iter(line => { + if (line.stateAfter) line.stateAfter = null + if (line.styles) line.styles = null + }) + cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first + startWorker(cm, 100) + cm.state.modeGen++ + if (cm.curOp) regChange(cm) +} diff --git a/global/codemirror/src/display/operations.js b/global/codemirror/src/display/operations.js new file mode 100644 index 00000000..c3004508 --- /dev/null +++ b/global/codemirror/src/display/operations.js @@ -0,0 +1,205 @@ +import { clipPos } from "../line/pos" +import { findMaxLine } from "../line/spans" +import { displayWidth, measureChar, scrollGap } from "../measurement/position_measurement" +import { signal } from "../util/event" +import { activeElt } from "../util/dom" +import { finishOperation, pushOperation } from "../util/operation_group" + +import { ensureFocus } from "./focus" +import { measureForScrollbars, updateScrollbars } from "./scrollbars" +import { restartBlink } from "./selection" +import { maybeScrollWindow, scrollPosIntoView, setScrollLeft, setScrollTop } from "./scrolling" +import { DisplayUpdate, maybeClipScrollbars, postUpdateDisplay, setDocumentHeight, updateDisplayIfNeeded } from "./update_display" +import { updateHeightsInViewport } from "./update_lines" + +// Operations are used to wrap a series of changes to the editor +// state in such a way that each change won't have to update the +// cursor and display (which would be awkward, slow, and +// error-prone). Instead, display updates are batched and then all +// combined and executed at once. + +let nextOpId = 0 +// Start a new operation. +export function startOperation(cm) { + cm.curOp = { + cm: cm, + viewChanged: false, // Flag that indicates that lines might need to be redrawn + startHeight: cm.doc.height, // Used to detect need to update scrollbar + forceUpdate: false, // Used to force a redraw + updateInput: null, // Whether to reset the input textarea + typing: false, // Whether this reset should be careful to leave existing text (for compositing) + changeObjs: null, // Accumulated changes, for firing change events + cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on + cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already + selectionChanged: false, // Whether the selection needs to be redrawn + updateMaxLine: false, // Set when the widest line needs to be determined anew + scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet + scrollToPos: null, // Used to scroll to a specific position + focus: false, + id: ++nextOpId // Unique ID + } + pushOperation(cm.curOp) +} + +// Finish an operation, updating the display and signalling delayed events +export function endOperation(cm) { + let op = cm.curOp + finishOperation(op, group => { + for (let i = 0; i < group.ops.length; i++) + group.ops[i].cm.curOp = null + endOperations(group) + }) +} + +// The DOM updates done when an operation finishes are batched so +// that the minimum number of relayouts are required. +function endOperations(group) { + let ops = group.ops + for (let i = 0; i < ops.length; i++) // Read DOM + endOperation_R1(ops[i]) + for (let i = 0; i < ops.length; i++) // Write DOM (maybe) + endOperation_W1(ops[i]) + for (let i = 0; i < ops.length; i++) // Read DOM + endOperation_R2(ops[i]) + for (let i = 0; i < ops.length; i++) // Write DOM (maybe) + endOperation_W2(ops[i]) + for (let i = 0; i < ops.length; i++) // Read DOM + endOperation_finish(ops[i]) +} + +function endOperation_R1(op) { + let cm = op.cm, display = cm.display + maybeClipScrollbars(cm) + if (op.updateMaxLine) findMaxLine(cm) + + op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || + op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || + op.scrollToPos.to.line >= display.viewTo) || + display.maxLineChanged && cm.options.lineWrapping + op.update = op.mustUpdate && + new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate) +} + +function endOperation_W1(op) { + op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update) +} + +function endOperation_R2(op) { + let cm = op.cm, display = cm.display + if (op.updatedDisplay) updateHeightsInViewport(cm) + + op.barMeasure = measureForScrollbars(cm) + + // If the max line changed since it was last measured, measure it, + // and ensure the document's width matches it. + // updateDisplay_W2 will use these properties to do the actual resizing + if (display.maxLineChanged && !cm.options.lineWrapping) { + op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3 + cm.display.sizerWidth = op.adjustWidthTo + op.barMeasure.scrollWidth = + Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth) + op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)) + } + + if (op.updatedDisplay || op.selectionChanged) + op.preparedSelection = display.input.prepareSelection() +} + +function endOperation_W2(op) { + let cm = op.cm + + if (op.adjustWidthTo != null) { + cm.display.sizer.style.minWidth = op.adjustWidthTo + "px" + if (op.maxScrollLeft < cm.doc.scrollLeft) + setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true) + cm.display.maxLineChanged = false + } + + let takeFocus = op.focus && op.focus == activeElt() + if (op.preparedSelection) + cm.display.input.showSelection(op.preparedSelection, takeFocus) + if (op.updatedDisplay || op.startHeight != cm.doc.height) + updateScrollbars(cm, op.barMeasure) + if (op.updatedDisplay) + setDocumentHeight(cm, op.barMeasure) + + if (op.selectionChanged) restartBlink(cm) + + if (cm.state.focused && op.updateInput) + cm.display.input.reset(op.typing) + if (takeFocus) ensureFocus(op.cm) +} + +function endOperation_finish(op) { + let cm = op.cm, display = cm.display, doc = cm.doc + + if (op.updatedDisplay) postUpdateDisplay(cm, op.update) + + // Abort mouse wheel delta measurement, when scrolling explicitly + if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) + display.wheelStartX = display.wheelStartY = null + + // Propagate the scroll position to the actual DOM scroller + if (op.scrollTop != null) setScrollTop(cm, op.scrollTop, op.forceScroll) + + if (op.scrollLeft != null) setScrollLeft(cm, op.scrollLeft, true, true) + // If we need to scroll a specific position into view, do so. + if (op.scrollToPos) { + let rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), + clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin) + maybeScrollWindow(cm, rect) + } + + // Fire events for markers that are hidden/unidden by editing or + // undoing + let hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers + if (hidden) for (let i = 0; i < hidden.length; ++i) + if (!hidden[i].lines.length) signal(hidden[i], "hide") + if (unhidden) for (let i = 0; i < unhidden.length; ++i) + if (unhidden[i].lines.length) signal(unhidden[i], "unhide") + + if (display.wrapper.offsetHeight) + doc.scrollTop = cm.display.scroller.scrollTop + + // Fire change events, and delayed event handlers + if (op.changeObjs) + signal(cm, "changes", cm, op.changeObjs) + if (op.update) + op.update.finish() +} + +// Run the given function in an operation +export function runInOp(cm, f) { + if (cm.curOp) return f() + startOperation(cm) + try { return f() } + finally { endOperation(cm) } +} +// Wraps a function in an operation. Returns the wrapped function. +export function operation(cm, f) { + return function() { + if (cm.curOp) return f.apply(cm, arguments) + startOperation(cm) + try { return f.apply(cm, arguments) } + finally { endOperation(cm) } + } +} +// Used to add methods to editor and doc instances, wrapping them in +// operations. +export function methodOp(f) { + return function() { + if (this.curOp) return f.apply(this, arguments) + startOperation(this) + try { return f.apply(this, arguments) } + finally { endOperation(this) } + } +} +export function docMethodOp(f) { + return function() { + let cm = this.cm + if (!cm || cm.curOp) return f.apply(this, arguments) + startOperation(cm) + try { return f.apply(this, arguments) } + finally { endOperation(cm) } + } +} diff --git a/global/codemirror/src/display/scroll_events.js b/global/codemirror/src/display/scroll_events.js new file mode 100644 index 00000000..d3902809 --- /dev/null +++ b/global/codemirror/src/display/scroll_events.js @@ -0,0 +1,115 @@ +import { chrome, gecko, ie, mac, presto, safari, webkit } from "../util/browser" +import { e_preventDefault } from "../util/event" + +import { updateDisplaySimple } from "./update_display" +import { setScrollLeft, updateScrollTop } from "./scrolling" + +// Since the delta values reported on mouse wheel events are +// unstandardized between browsers and even browser versions, and +// generally horribly unpredictable, this code starts by measuring +// the scroll effect that the first few mouse wheel events have, +// and, from that, detects the way it can convert deltas to pixel +// offsets afterwards. +// +// The reason we want to know the amount a wheel event will scroll +// is that it gives us a chance to update the display before the +// actual scrolling happens, reducing flickering. + +let wheelSamples = 0, wheelPixelsPerUnit = null +// Fill in a browser-detected starting value on browsers where we +// know one. These don't have to be accurate -- the result of them +// being wrong would just be a slight flicker on the first wheel +// scroll (if it is large enough). +if (ie) wheelPixelsPerUnit = -.53 +else if (gecko) wheelPixelsPerUnit = 15 +else if (chrome) wheelPixelsPerUnit = -.7 +else if (safari) wheelPixelsPerUnit = -1/3 + +function wheelEventDelta(e) { + let dx = e.wheelDeltaX, dy = e.wheelDeltaY + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail + else if (dy == null) dy = e.wheelDelta + return {x: dx, y: dy} +} +export function wheelEventPixels(e) { + let delta = wheelEventDelta(e) + delta.x *= wheelPixelsPerUnit + delta.y *= wheelPixelsPerUnit + return delta +} + +export function onScrollWheel(cm, e) { + let delta = wheelEventDelta(e), dx = delta.x, dy = delta.y + + let display = cm.display, scroll = display.scroller + // Quit if there's nothing to scroll here + let canScrollX = scroll.scrollWidth > scroll.clientWidth + let canScrollY = scroll.scrollHeight > scroll.clientHeight + if (!(dx && canScrollX || dy && canScrollY)) return + + // Webkit browsers on OS X abort momentum scrolls when the target + // of the scroll event is removed from the scrollable element. + // This hack (see related code in patchDisplay) makes sure the + // element is kept around. + if (dy && mac && webkit) { + outer: for (let cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { + for (let i = 0; i < view.length; i++) { + if (view[i].node == cur) { + cm.display.currentWheelTarget = cur + break outer + } + } + } + } + + // On some browsers, horizontal scrolling will cause redraws to + // happen before the gutter has been realigned, causing it to + // wriggle around in a most unseemly way. When we have an + // estimated pixels/delta value, we just handle horizontal + // scrolling entirely here. It'll be slightly off from native, but + // better than glitching out. + if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { + if (dy && canScrollY) + updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * wheelPixelsPerUnit)) + setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * wheelPixelsPerUnit)) + // Only prevent default scrolling if vertical scrolling is + // actually possible. Otherwise, it causes vertical scroll + // jitter on OSX trackpads when deltaX is small and deltaY + // is large (issue #3579) + if (!dy || (dy && canScrollY)) + e_preventDefault(e) + display.wheelStartX = null // Abort measurement, if in progress + return + } + + // 'Project' the visible viewport to cover the area that is being + // scrolled into view (if we know enough to estimate it). + if (dy && wheelPixelsPerUnit != null) { + let pixels = dy * wheelPixelsPerUnit + let top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight + if (pixels < 0) top = Math.max(0, top + pixels - 50) + else bot = Math.min(cm.doc.height, bot + pixels + 50) + updateDisplaySimple(cm, {top: top, bottom: bot}) + } + + if (wheelSamples < 20) { + if (display.wheelStartX == null) { + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop + display.wheelDX = dx; display.wheelDY = dy + setTimeout(() => { + if (display.wheelStartX == null) return + let movedX = scroll.scrollLeft - display.wheelStartX + let movedY = scroll.scrollTop - display.wheelStartY + let sample = (movedY && display.wheelDY && movedY / display.wheelDY) || + (movedX && display.wheelDX && movedX / display.wheelDX) + display.wheelStartX = display.wheelStartY = null + if (!sample) return + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1) + ++wheelSamples + }, 200) + } else { + display.wheelDX += dx; display.wheelDY += dy + } + } +} diff --git a/global/codemirror/src/display/scrollbars.js b/global/codemirror/src/display/scrollbars.js new file mode 100644 index 00000000..27060d18 --- /dev/null +++ b/global/codemirror/src/display/scrollbars.js @@ -0,0 +1,192 @@ +import { addClass, elt, rmClass } from "../util/dom" +import { on } from "../util/event" +import { scrollGap, paddingVert } from "../measurement/position_measurement" +import { ie, ie_version, mac, mac_geMountainLion } from "../util/browser" +import { updateHeightsInViewport } from "./update_lines" +import { Delayed } from "../util/misc" + +import { setScrollLeft, updateScrollTop } from "./scrolling" + +// SCROLLBARS + +// Prepare DOM reads needed to update the scrollbars. Done in one +// shot to minimize update/measure roundtrips. +export function measureForScrollbars(cm) { + let d = cm.display, gutterW = d.gutters.offsetWidth + let docH = Math.round(cm.doc.height + paddingVert(cm.display)) + return { + clientHeight: d.scroller.clientHeight, + viewHeight: d.wrapper.clientHeight, + scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, + viewWidth: d.wrapper.clientWidth, + barLeft: cm.options.fixedGutter ? gutterW : 0, + docHeight: docH, + scrollHeight: docH + scrollGap(cm) + d.barHeight, + nativeBarWidth: d.nativeBarWidth, + gutterWidth: gutterW + } +} + +class NativeScrollbars { + constructor(place, scroll, cm) { + this.cm = cm + let vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar") + let horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar") + place(vert); place(horiz) + + on(vert, "scroll", () => { + if (vert.clientHeight) scroll(vert.scrollTop, "vertical") + }) + on(horiz, "scroll", () => { + if (horiz.clientWidth) scroll(horiz.scrollLeft, "horizontal") + }) + + this.checkedZeroWidth = false + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + if (ie && ie_version < 8) this.horiz.style.minHeight = this.vert.style.minWidth = "18px" + } + + update(measure) { + let needsH = measure.scrollWidth > measure.clientWidth + 1 + let needsV = measure.scrollHeight > measure.clientHeight + 1 + let sWidth = measure.nativeBarWidth + + if (needsV) { + this.vert.style.display = "block" + this.vert.style.bottom = needsH ? sWidth + "px" : "0" + let totalHeight = measure.viewHeight - (needsH ? sWidth : 0) + // A bug in IE8 can cause this value to be negative, so guard it. + this.vert.firstChild.style.height = + Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px" + } else { + this.vert.style.display = "" + this.vert.firstChild.style.height = "0" + } + + if (needsH) { + this.horiz.style.display = "block" + this.horiz.style.right = needsV ? sWidth + "px" : "0" + this.horiz.style.left = measure.barLeft + "px" + let totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0) + this.horiz.firstChild.style.width = + Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + "px" + } else { + this.horiz.style.display = "" + this.horiz.firstChild.style.width = "0" + } + + if (!this.checkedZeroWidth && measure.clientHeight > 0) { + if (sWidth == 0) this.zeroWidthHack() + this.checkedZeroWidth = true + } + + return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0} + } + + setScrollLeft(pos) { + if (this.horiz.scrollLeft != pos) this.horiz.scrollLeft = pos + if (this.disableHoriz) this.enableZeroWidthBar(this.horiz, this.disableHoriz, "horiz") + } + + setScrollTop(pos) { + if (this.vert.scrollTop != pos) this.vert.scrollTop = pos + if (this.disableVert) this.enableZeroWidthBar(this.vert, this.disableVert, "vert") + } + + zeroWidthHack() { + let w = mac && !mac_geMountainLion ? "12px" : "18px" + this.horiz.style.height = this.vert.style.width = w + this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none" + this.disableHoriz = new Delayed + this.disableVert = new Delayed + } + + enableZeroWidthBar(bar, delay, type) { + bar.style.pointerEvents = "auto" + function maybeDisable() { + // To find out whether the scrollbar is still visible, we + // check whether the element under the pixel in the bottom + // right corner of the scrollbar box is the scrollbar box + // itself (when the bar is still visible) or its filler child + // (when the bar is hidden). If it is still visible, we keep + // it enabled, if it's hidden, we disable pointer events. + let box = bar.getBoundingClientRect() + let elt = type == "vert" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2) + : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1) + if (elt != bar) bar.style.pointerEvents = "none" + else delay.set(1000, maybeDisable) + } + delay.set(1000, maybeDisable) + } + + clear() { + let parent = this.horiz.parentNode + parent.removeChild(this.horiz) + parent.removeChild(this.vert) + } +} + +class NullScrollbars { + update() { return {bottom: 0, right: 0} } + setScrollLeft() {} + setScrollTop() {} + clear() {} +} + +export function updateScrollbars(cm, measure) { + if (!measure) measure = measureForScrollbars(cm) + let startWidth = cm.display.barWidth, startHeight = cm.display.barHeight + updateScrollbarsInner(cm, measure) + for (let i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { + if (startWidth != cm.display.barWidth && cm.options.lineWrapping) + updateHeightsInViewport(cm) + updateScrollbarsInner(cm, measureForScrollbars(cm)) + startWidth = cm.display.barWidth; startHeight = cm.display.barHeight + } +} + +// Re-synchronize the fake scrollbars with the actual size of the +// content. +function updateScrollbarsInner(cm, measure) { + let d = cm.display + let sizes = d.scrollbars.update(measure) + + d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px" + d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px" + d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent" + + if (sizes.right && sizes.bottom) { + d.scrollbarFiller.style.display = "block" + d.scrollbarFiller.style.height = sizes.bottom + "px" + d.scrollbarFiller.style.width = sizes.right + "px" + } else d.scrollbarFiller.style.display = "" + if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block" + d.gutterFiller.style.height = sizes.bottom + "px" + d.gutterFiller.style.width = measure.gutterWidth + "px" + } else d.gutterFiller.style.display = "" +} + +export let scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars} + +export function initScrollbars(cm) { + if (cm.display.scrollbars) { + cm.display.scrollbars.clear() + if (cm.display.scrollbars.addClass) + rmClass(cm.display.wrapper, cm.display.scrollbars.addClass) + } + + cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](node => { + cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller) + // Prevent clicks in the scrollbars from killing focus + on(node, "mousedown", () => { + if (cm.state.focused) setTimeout(() => cm.display.input.focus(), 0) + }) + node.setAttribute("cm-not-content", "true") + }, (pos, axis) => { + if (axis == "horizontal") setScrollLeft(cm, pos) + else updateScrollTop(cm, pos) + }, cm) + if (cm.display.scrollbars.addClass) + addClass(cm.display.wrapper, cm.display.scrollbars.addClass) +} diff --git a/global/codemirror/src/display/scrolling.js b/global/codemirror/src/display/scrolling.js new file mode 100644 index 00000000..e16cf9ec --- /dev/null +++ b/global/codemirror/src/display/scrolling.js @@ -0,0 +1,184 @@ +import { Pos } from "../line/pos" +import { cursorCoords, displayHeight, displayWidth, estimateCoords, paddingTop, paddingVert, scrollGap, textHeight } from "../measurement/position_measurement" +import { gecko, phantom } from "../util/browser" +import { elt } from "../util/dom" +import { signalDOMEvent } from "../util/event" + +import { startWorker } from "./highlight_worker" +import { alignHorizontally } from "./line_numbers" +import { updateDisplaySimple } from "./update_display" + +// SCROLLING THINGS INTO VIEW + +// If an editor sits on the top or bottom of the window, partially +// scrolled out of view, this ensures that the cursor is visible. +export function maybeScrollWindow(cm, rect) { + if (signalDOMEvent(cm, "scrollCursorIntoView")) return + + let display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null + if (rect.top + box.top < 0) doScroll = true + else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false + if (doScroll != null && !phantom) { + let scrollNode = elt("div", "\u200b", null, `position: absolute; + top: ${rect.top - display.viewOffset - paddingTop(cm.display)}px; + height: ${rect.bottom - rect.top + scrollGap(cm) + display.barHeight}px; + left: ${rect.left}px; width: ${Math.max(2, rect.right - rect.left)}px;`) + cm.display.lineSpace.appendChild(scrollNode) + scrollNode.scrollIntoView(doScroll) + cm.display.lineSpace.removeChild(scrollNode) + } +} + +// Scroll a given position into view (immediately), verifying that +// it actually became visible (as line heights are accurately +// measured, the position of something may 'drift' during drawing). +export function scrollPosIntoView(cm, pos, end, margin) { + if (margin == null) margin = 0 + let rect + if (!cm.options.lineWrapping && pos == end) { + // Set pos and end to the cursor positions around the character pos sticks to + // If pos.sticky == "before", that is around pos.ch - 1, otherwise around pos.ch + // If pos == Pos(_, 0, "before"), pos and end are unchanged + pos = pos.ch ? Pos(pos.line, pos.sticky == "before" ? pos.ch - 1 : pos.ch, "after") : pos + end = pos.sticky == "before" ? Pos(pos.line, pos.ch + 1, "before") : pos + } + for (let limit = 0; limit < 5; limit++) { + let changed = false + let coords = cursorCoords(cm, pos) + let endCoords = !end || end == pos ? coords : cursorCoords(cm, end) + rect = {left: Math.min(coords.left, endCoords.left), + top: Math.min(coords.top, endCoords.top) - margin, + right: Math.max(coords.left, endCoords.left), + bottom: Math.max(coords.bottom, endCoords.bottom) + margin} + let scrollPos = calculateScrollPos(cm, rect) + let startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft + if (scrollPos.scrollTop != null) { + updateScrollTop(cm, scrollPos.scrollTop) + if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true + } + if (scrollPos.scrollLeft != null) { + setScrollLeft(cm, scrollPos.scrollLeft) + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true + } + if (!changed) break + } + return rect +} + +// Scroll a given set of coordinates into view (immediately). +export function scrollIntoView(cm, rect) { + let scrollPos = calculateScrollPos(cm, rect) + if (scrollPos.scrollTop != null) updateScrollTop(cm, scrollPos.scrollTop) + if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft) +} + +// Calculate a new scroll position needed to scroll the given +// rectangle into view. Returns an object with scrollTop and +// scrollLeft properties. When these are undefined, the +// vertical/horizontal position does not need to be adjusted. +function calculateScrollPos(cm, rect) { + let display = cm.display, snapMargin = textHeight(cm.display) + if (rect.top < 0) rect.top = 0 + let screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop + let screen = displayHeight(cm), result = {} + if (rect.bottom - rect.top > screen) rect.bottom = rect.top + screen + let docBottom = cm.doc.height + paddingVert(display) + let atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin + if (rect.top < screentop) { + result.scrollTop = atTop ? 0 : rect.top + } else if (rect.bottom > screentop + screen) { + let newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen) + if (newTop != screentop) result.scrollTop = newTop + } + + let screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft + let screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0) + let tooWide = rect.right - rect.left > screenw + if (tooWide) rect.right = rect.left + screenw + if (rect.left < 10) + result.scrollLeft = 0 + else if (rect.left < screenleft) + result.scrollLeft = Math.max(0, rect.left - (tooWide ? 0 : 10)) + else if (rect.right > screenw + screenleft - 3) + result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw + return result +} + +// Store a relative adjustment to the scroll position in the current +// operation (to be applied when the operation finishes). +export function addToScrollTop(cm, top) { + if (top == null) return + resolveScrollToPos(cm) + cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top +} + +// Make sure that at the end of the operation the current cursor is +// shown. +export function ensureCursorVisible(cm) { + resolveScrollToPos(cm) + let cur = cm.getCursor() + cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin} +} + +export function scrollToCoords(cm, x, y) { + if (x != null || y != null) resolveScrollToPos(cm) + if (x != null) cm.curOp.scrollLeft = x + if (y != null) cm.curOp.scrollTop = y +} + +export function scrollToRange(cm, range) { + resolveScrollToPos(cm) + cm.curOp.scrollToPos = range +} + +// When an operation has its scrollToPos property set, and another +// scroll action is applied before the end of the operation, this +// 'simulates' scrolling that position into view in a cheap way, so +// that the effect of intermediate scroll commands is not ignored. +function resolveScrollToPos(cm) { + let range = cm.curOp.scrollToPos + if (range) { + cm.curOp.scrollToPos = null + let from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to) + scrollToCoordsRange(cm, from, to, range.margin) + } +} + +export function scrollToCoordsRange(cm, from, to, margin) { + let sPos = calculateScrollPos(cm, { + left: Math.min(from.left, to.left), + top: Math.min(from.top, to.top) - margin, + right: Math.max(from.right, to.right), + bottom: Math.max(from.bottom, to.bottom) + margin + }) + scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop) +} + +// Sync the scrollable area and scrollbars, ensure the viewport +// covers the visible area. +export function updateScrollTop(cm, val) { + if (Math.abs(cm.doc.scrollTop - val) < 2) return + if (!gecko) updateDisplaySimple(cm, {top: val}) + setScrollTop(cm, val, true) + if (gecko) updateDisplaySimple(cm) + startWorker(cm, 100) +} + +export function setScrollTop(cm, val, forceScroll) { + val = Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val) + if (cm.display.scroller.scrollTop == val && !forceScroll) return + cm.doc.scrollTop = val + cm.display.scrollbars.setScrollTop(val) + if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val +} + +// Sync scroller and scrollbar, ensure the gutter elements are +// aligned. +export function setScrollLeft(cm, val, isScroller, forceScroll) { + val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth) + if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) return + cm.doc.scrollLeft = val + alignHorizontally(cm) + if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val + cm.display.scrollbars.setScrollLeft(val) +} diff --git a/global/codemirror/src/display/selection.js b/global/codemirror/src/display/selection.js new file mode 100644 index 00000000..ba6feb8f --- /dev/null +++ b/global/codemirror/src/display/selection.js @@ -0,0 +1,156 @@ +import { Pos } from "../line/pos" +import { visualLine } from "../line/spans" +import { getLine } from "../line/utils_line" +import { charCoords, cursorCoords, displayWidth, paddingH, wrappedLineExtentChar } from "../measurement/position_measurement" +import { getOrder, iterateBidiSections } from "../util/bidi" +import { elt } from "../util/dom" + +export function updateSelection(cm) { + cm.display.input.showSelection(cm.display.input.prepareSelection()) +} + +export function prepareSelection(cm, primary = true) { + let doc = cm.doc, result = {} + let curFragment = result.cursors = document.createDocumentFragment() + let selFragment = result.selection = document.createDocumentFragment() + + for (let i = 0; i < doc.sel.ranges.length; i++) { + if (!primary && i == doc.sel.primIndex) continue + let range = doc.sel.ranges[i] + if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) continue + let collapsed = range.empty() + if (collapsed || cm.options.showCursorWhenSelecting) + drawSelectionCursor(cm, range.head, curFragment) + if (!collapsed) + drawSelectionRange(cm, range, selFragment) + } + return result +} + +// Draws a cursor for the given range +export function drawSelectionCursor(cm, head, output) { + let pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine) + + let cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")) + cursor.style.left = pos.left + "px" + cursor.style.top = pos.top + "px" + cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px" + + if (pos.other) { + // Secondary cursor, shown when on a 'jump' in bi-directional text + let otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")) + otherCursor.style.display = "" + otherCursor.style.left = pos.other.left + "px" + otherCursor.style.top = pos.other.top + "px" + otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px" + } +} + +function cmpCoords(a, b) { return a.top - b.top || a.left - b.left } + +// Draws the given range as a highlighted selection +function drawSelectionRange(cm, range, output) { + let display = cm.display, doc = cm.doc + let fragment = document.createDocumentFragment() + let padding = paddingH(cm.display), leftSide = padding.left + let rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right + + function add(left, top, width, bottom) { + if (top < 0) top = 0 + top = Math.round(top) + bottom = Math.round(bottom) + fragment.appendChild(elt("div", null, "CodeMirror-selected", `position: absolute; left: ${left}px; + top: ${top}px; width: ${width == null ? rightSide - left : width}px; + height: ${bottom - top}px`)) + } + + function drawForLine(line, fromArg, toArg) { + let lineObj = getLine(doc, line) + let lineLen = lineObj.text.length + let start, end + function coords(ch, bias) { + return charCoords(cm, Pos(line, ch), "div", lineObj, bias) + } + + let order = getOrder(lineObj, doc.direction) + iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, (from, to, dir, i) => { + let fromPos = coords(from, dir == "ltr" ? "left" : "right") + let toPos = coords(to - 1, dir == "ltr" ? "right" : "left") + if (dir == "ltr") { + let fromLeft = fromArg == null && from == 0 ? leftSide : fromPos.left + let toRight = toArg == null && to == lineLen ? rightSide : toPos.right + if (toPos.top - fromPos.top <= 3) { // Single line + add(fromLeft, toPos.top, toRight - fromLeft, toPos.bottom) + } else { // Multiple lines + add(fromLeft, fromPos.top, null, fromPos.bottom) + if (fromPos.bottom < toPos.top) add(leftSide, fromPos.bottom, null, toPos.top) + add(leftSide, toPos.top, toPos.right, toPos.bottom) + } + } else if (from < to) { // RTL + let fromRight = fromArg == null && from == 0 ? rightSide : fromPos.right + let toLeft = toArg == null && to == lineLen ? leftSide : toPos.left + if (toPos.top - fromPos.top <= 3) { // Single line + add(toLeft, toPos.top, fromRight - toLeft, toPos.bottom) + } else { // Multiple lines + let topLeft = leftSide + if (i) { + let topEnd = wrappedLineExtentChar(cm, lineObj, null, from).end + // The coordinates returned for an RTL wrapped space tend to + // be complete bogus, so try to skip that here. + topLeft = coords(topEnd - (/\s/.test(lineObj.text.charAt(topEnd - 1)) ? 2 : 1), "left").left + } + add(topLeft, fromPos.top, fromRight - topLeft, fromPos.bottom) + if (fromPos.bottom < toPos.top) add(leftSide, fromPos.bottom, null, toPos.top) + let botWidth = null + if (i < order.length - 1 || true) { + let botStart = wrappedLineExtentChar(cm, lineObj, null, to).begin + botWidth = coords(botStart, "right").right - toLeft + } + add(toLeft, toPos.top, botWidth, toPos.bottom) + } + } + + if (!start || cmpCoords(fromPos, start) < 0) start = fromPos + if (cmpCoords(toPos, start) < 0) start = toPos + if (!end || cmpCoords(fromPos, end) < 0) end = fromPos + if (cmpCoords(toPos, end) < 0) end = toPos + }) + return {start: start, end: end} + } + + let sFrom = range.from(), sTo = range.to() + if (sFrom.line == sTo.line) { + drawForLine(sFrom.line, sFrom.ch, sTo.ch) + } else { + let fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line) + let singleVLine = visualLine(fromLine) == visualLine(toLine) + let leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end + let rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start + if (singleVLine) { + if (leftEnd.top < rightStart.top - 2) { + add(leftEnd.right, leftEnd.top, null, leftEnd.bottom) + add(leftSide, rightStart.top, rightStart.left, rightStart.bottom) + } else { + add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom) + } + } + if (leftEnd.bottom < rightStart.top) + add(leftSide, leftEnd.bottom, null, rightStart.top) + } + + output.appendChild(fragment) +} + +// Cursor-blinking +export function restartBlink(cm) { + if (!cm.state.focused) return + let display = cm.display + clearInterval(display.blinker) + let on = true + display.cursorDiv.style.visibility = "" + if (cm.options.cursorBlinkRate > 0) + display.blinker = setInterval(() => display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden", + cm.options.cursorBlinkRate) + else if (cm.options.cursorBlinkRate < 0) + display.cursorDiv.style.visibility = "hidden" +} diff --git a/global/codemirror/src/display/update_display.js b/global/codemirror/src/display/update_display.js new file mode 100644 index 00000000..e58db48a --- /dev/null +++ b/global/codemirror/src/display/update_display.js @@ -0,0 +1,260 @@ +import { sawCollapsedSpans } from "../line/saw_special_spans" +import { heightAtLine, visualLineEndNo, visualLineNo } from "../line/spans" +import { getLine, lineNumberFor } from "../line/utils_line" +import { displayHeight, displayWidth, getDimensions, paddingVert, scrollGap } from "../measurement/position_measurement" +import { mac, webkit } from "../util/browser" +import { activeElt, removeChildren, contains } from "../util/dom" +import { hasHandler, signal } from "../util/event" +import { indexOf } from "../util/misc" + +import { buildLineElement, updateLineForChanges } from "./update_line" +import { startWorker } from "./highlight_worker" +import { maybeUpdateLineNumberWidth } from "./line_numbers" +import { measureForScrollbars, updateScrollbars } from "./scrollbars" +import { updateSelection } from "./selection" +import { updateHeightsInViewport, visibleLines } from "./update_lines" +import { adjustView, countDirtyView, resetView } from "./view_tracking" + +// DISPLAY DRAWING + +export class DisplayUpdate { + constructor(cm, viewport, force) { + let display = cm.display + + this.viewport = viewport + // Store some values that we'll need later (but don't want to force a relayout for) + this.visible = visibleLines(display, cm.doc, viewport) + this.editorIsHidden = !display.wrapper.offsetWidth + this.wrapperHeight = display.wrapper.clientHeight + this.wrapperWidth = display.wrapper.clientWidth + this.oldDisplayWidth = displayWidth(cm) + this.force = force + this.dims = getDimensions(cm) + this.events = [] + } + + signal(emitter, type) { + if (hasHandler(emitter, type)) + this.events.push(arguments) + } + finish() { + for (let i = 0; i < this.events.length; i++) + signal.apply(null, this.events[i]) + } +} + +export function maybeClipScrollbars(cm) { + let display = cm.display + if (!display.scrollbarsClipped && display.scroller.offsetWidth) { + display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth + display.heightForcer.style.height = scrollGap(cm) + "px" + display.sizer.style.marginBottom = -display.nativeBarWidth + "px" + display.sizer.style.borderRightWidth = scrollGap(cm) + "px" + display.scrollbarsClipped = true + } +} + +function selectionSnapshot(cm) { + if (cm.hasFocus()) return null + let active = activeElt() + if (!active || !contains(cm.display.lineDiv, active)) return null + let result = {activeElt: active} + if (window.getSelection) { + let sel = window.getSelection() + if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) { + result.anchorNode = sel.anchorNode + result.anchorOffset = sel.anchorOffset + result.focusNode = sel.focusNode + result.focusOffset = sel.focusOffset + } + } + return result +} + +function restoreSelection(snapshot) { + if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) return + snapshot.activeElt.focus() + if (snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) { + let sel = window.getSelection(), range = document.createRange() + range.setEnd(snapshot.anchorNode, snapshot.anchorOffset) + range.collapse(false) + sel.removeAllRanges() + sel.addRange(range) + sel.extend(snapshot.focusNode, snapshot.focusOffset) + } +} + +// Does the actual updating of the line display. Bails out +// (returning false) when there is nothing to be done and forced is +// false. +export function updateDisplayIfNeeded(cm, update) { + let display = cm.display, doc = cm.doc + + if (update.editorIsHidden) { + resetView(cm) + return false + } + + // Bail out if the visible area is already rendered and nothing changed. + if (!update.force && + update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && + display.renderedView == display.view && countDirtyView(cm) == 0) + return false + + if (maybeUpdateLineNumberWidth(cm)) { + resetView(cm) + update.dims = getDimensions(cm) + } + + // Compute a suitable new viewport (from & to) + let end = doc.first + doc.size + let from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first) + let to = Math.min(end, update.visible.to + cm.options.viewportMargin) + if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom) + if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo) + if (sawCollapsedSpans) { + from = visualLineNo(cm.doc, from) + to = visualLineEndNo(cm.doc, to) + } + + let different = from != display.viewFrom || to != display.viewTo || + display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth + adjustView(cm, from, to) + + display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)) + // Position the mover div to align with the current scroll position + cm.display.mover.style.top = display.viewOffset + "px" + + let toUpdate = countDirtyView(cm) + if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) + return false + + // For big changes, we hide the enclosing element during the + // update, since that speeds up the operations on most browsers. + let selSnapshot = selectionSnapshot(cm) + if (toUpdate > 4) display.lineDiv.style.display = "none" + patchDisplay(cm, display.updateLineNumbers, update.dims) + if (toUpdate > 4) display.lineDiv.style.display = "" + display.renderedView = display.view + // There might have been a widget with a focused element that got + // hidden or updated, if so re-focus it. + restoreSelection(selSnapshot) + + // Prevent selection and cursors from interfering with the scroll + // width and height. + removeChildren(display.cursorDiv) + removeChildren(display.selectionDiv) + display.gutters.style.height = display.sizer.style.minHeight = 0 + + if (different) { + display.lastWrapHeight = update.wrapperHeight + display.lastWrapWidth = update.wrapperWidth + startWorker(cm, 400) + } + + display.updateLineNumbers = null + + return true +} + +export function postUpdateDisplay(cm, update) { + let viewport = update.viewport + + for (let first = true;; first = false) { + if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { + // Clip forced viewport to actual scrollable area. + if (viewport && viewport.top != null) + viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)} + // Updated line heights might result in the drawn area not + // actually covering the viewport. Keep looping until it does. + update.visible = visibleLines(cm.display, cm.doc, viewport) + if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) + break + } + if (!updateDisplayIfNeeded(cm, update)) break + updateHeightsInViewport(cm) + let barMeasure = measureForScrollbars(cm) + updateSelection(cm) + updateScrollbars(cm, barMeasure) + setDocumentHeight(cm, barMeasure) + update.force = false + } + + update.signal(cm, "update", cm) + if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { + update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo) + cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo + } +} + +export function updateDisplaySimple(cm, viewport) { + let update = new DisplayUpdate(cm, viewport) + if (updateDisplayIfNeeded(cm, update)) { + updateHeightsInViewport(cm) + postUpdateDisplay(cm, update) + let barMeasure = measureForScrollbars(cm) + updateSelection(cm) + updateScrollbars(cm, barMeasure) + setDocumentHeight(cm, barMeasure) + update.finish() + } +} + +// Sync the actual display DOM structure with display.view, removing +// nodes for lines that are no longer in view, and creating the ones +// that are not there yet, and updating the ones that are out of +// date. +function patchDisplay(cm, updateNumbersFrom, dims) { + let display = cm.display, lineNumbers = cm.options.lineNumbers + let container = display.lineDiv, cur = container.firstChild + + function rm(node) { + let next = node.nextSibling + // Works around a throw-scroll bug in OS X Webkit + if (webkit && mac && cm.display.currentWheelTarget == node) + node.style.display = "none" + else + node.parentNode.removeChild(node) + return next + } + + let view = display.view, lineN = display.viewFrom + // Loop over the elements in the view, syncing cur (the DOM nodes + // in display.lineDiv) with the view as we go. + for (let i = 0; i < view.length; i++) { + let lineView = view[i] + if (lineView.hidden) { + } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet + let node = buildLineElement(cm, lineView, lineN, dims) + container.insertBefore(node, cur) + } else { // Already drawn + while (cur != lineView.node) cur = rm(cur) + let updateNumber = lineNumbers && updateNumbersFrom != null && + updateNumbersFrom <= lineN && lineView.lineNumber + if (lineView.changes) { + if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false + updateLineForChanges(cm, lineView, lineN, dims) + } + if (updateNumber) { + removeChildren(lineView.lineNumber) + lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))) + } + cur = lineView.node.nextSibling + } + lineN += lineView.size + } + while (cur) cur = rm(cur) +} + +export function updateGutterSpace(cm) { + let width = cm.display.gutters.offsetWidth + cm.display.sizer.style.marginLeft = width + "px" +} + +export function setDocumentHeight(cm, measure) { + cm.display.sizer.style.minHeight = measure.docHeight + "px" + cm.display.heightForcer.style.top = measure.docHeight + "px" + cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px" +} diff --git a/global/codemirror/src/display/update_line.js b/global/codemirror/src/display/update_line.js new file mode 100644 index 00000000..15a23942 --- /dev/null +++ b/global/codemirror/src/display/update_line.js @@ -0,0 +1,188 @@ +import { buildLineContent } from "../line/line_data" +import { lineNumberFor } from "../line/utils_line" +import { ie, ie_version } from "../util/browser" +import { elt } from "../util/dom" +import { signalLater } from "../util/operation_group" + +// When an aspect of a line changes, a string is added to +// lineView.changes. This updates the relevant part of the line's +// DOM structure. +export function updateLineForChanges(cm, lineView, lineN, dims) { + for (let j = 0; j < lineView.changes.length; j++) { + let type = lineView.changes[j] + if (type == "text") updateLineText(cm, lineView) + else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims) + else if (type == "class") updateLineClasses(cm, lineView) + else if (type == "widget") updateLineWidgets(cm, lineView, dims) + } + lineView.changes = null +} + +// Lines with gutter elements, widgets or a background class need to +// be wrapped, and have the extra elements added to the wrapper div +function ensureLineWrapped(lineView) { + if (lineView.node == lineView.text) { + lineView.node = elt("div", null, null, "position: relative") + if (lineView.text.parentNode) + lineView.text.parentNode.replaceChild(lineView.node, lineView.text) + lineView.node.appendChild(lineView.text) + if (ie && ie_version < 8) lineView.node.style.zIndex = 2 + } + return lineView.node +} + +function updateLineBackground(cm, lineView) { + let cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass + if (cls) cls += " CodeMirror-linebackground" + if (lineView.background) { + if (cls) lineView.background.className = cls + else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null } + } else if (cls) { + let wrap = ensureLineWrapped(lineView) + lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild) + cm.display.input.setUneditable(lineView.background) + } +} + +// Wrapper around buildLineContent which will reuse the structure +// in display.externalMeasured when possible. +function getLineContent(cm, lineView) { + let ext = cm.display.externalMeasured + if (ext && ext.line == lineView.line) { + cm.display.externalMeasured = null + lineView.measure = ext.measure + return ext.built + } + return buildLineContent(cm, lineView) +} + +// Redraw the line's text. Interacts with the background and text +// classes because the mode may output tokens that influence these +// classes. +function updateLineText(cm, lineView) { + let cls = lineView.text.className + let built = getLineContent(cm, lineView) + if (lineView.text == lineView.node) lineView.node = built.pre + lineView.text.parentNode.replaceChild(built.pre, lineView.text) + lineView.text = built.pre + if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { + lineView.bgClass = built.bgClass + lineView.textClass = built.textClass + updateLineClasses(cm, lineView) + } else if (cls) { + lineView.text.className = cls + } +} + +function updateLineClasses(cm, lineView) { + updateLineBackground(cm, lineView) + if (lineView.line.wrapClass) + ensureLineWrapped(lineView).className = lineView.line.wrapClass + else if (lineView.node != lineView.text) + lineView.node.className = "" + let textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass + lineView.text.className = textClass || "" +} + +function updateLineGutter(cm, lineView, lineN, dims) { + if (lineView.gutter) { + lineView.node.removeChild(lineView.gutter) + lineView.gutter = null + } + if (lineView.gutterBackground) { + lineView.node.removeChild(lineView.gutterBackground) + lineView.gutterBackground = null + } + if (lineView.line.gutterClass) { + let wrap = ensureLineWrapped(lineView) + lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, + `left: ${cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth}px; width: ${dims.gutterTotalWidth}px`) + cm.display.input.setUneditable(lineView.gutterBackground) + wrap.insertBefore(lineView.gutterBackground, lineView.text) + } + let markers = lineView.line.gutterMarkers + if (cm.options.lineNumbers || markers) { + let wrap = ensureLineWrapped(lineView) + let gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", `left: ${cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth}px`) + cm.display.input.setUneditable(gutterWrap) + wrap.insertBefore(gutterWrap, lineView.text) + if (lineView.line.gutterClass) + gutterWrap.className += " " + lineView.line.gutterClass + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + lineView.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineN), + "CodeMirror-linenumber CodeMirror-gutter-elt", + `left: ${dims.gutterLeft["CodeMirror-linenumbers"]}px; width: ${cm.display.lineNumInnerWidth}px`)) + if (markers) for (let k = 0; k < cm.options.gutters.length; ++k) { + let id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id] + if (found) + gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", + `left: ${dims.gutterLeft[id]}px; width: ${dims.gutterWidth[id]}px`)) + } + } +} + +function updateLineWidgets(cm, lineView, dims) { + if (lineView.alignable) lineView.alignable = null + for (let node = lineView.node.firstChild, next; node; node = next) { + next = node.nextSibling + if (node.className == "CodeMirror-linewidget") + lineView.node.removeChild(node) + } + insertLineWidgets(cm, lineView, dims) +} + +// Build a line's DOM representation from scratch +export function buildLineElement(cm, lineView, lineN, dims) { + let built = getLineContent(cm, lineView) + lineView.text = lineView.node = built.pre + if (built.bgClass) lineView.bgClass = built.bgClass + if (built.textClass) lineView.textClass = built.textClass + + updateLineClasses(cm, lineView) + updateLineGutter(cm, lineView, lineN, dims) + insertLineWidgets(cm, lineView, dims) + return lineView.node +} + +// A lineView may contain multiple logical lines (when merged by +// collapsed spans). The widgets for all of them need to be drawn. +function insertLineWidgets(cm, lineView, dims) { + insertLineWidgetsFor(cm, lineView.line, lineView, dims, true) + if (lineView.rest) for (let i = 0; i < lineView.rest.length; i++) + insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false) +} + +function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { + if (!line.widgets) return + let wrap = ensureLineWrapped(lineView) + for (let i = 0, ws = line.widgets; i < ws.length; ++i) { + let widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget") + if (!widget.handleMouseEvents) node.setAttribute("cm-ignore-events", "true") + positionLineWidget(widget, node, lineView, dims) + cm.display.input.setUneditable(node) + if (allowAbove && widget.above) + wrap.insertBefore(node, lineView.gutter || lineView.text) + else + wrap.appendChild(node) + signalLater(widget, "redraw") + } +} + +function positionLineWidget(widget, node, lineView, dims) { + if (widget.noHScroll) { + ;(lineView.alignable || (lineView.alignable = [])).push(node) + let width = dims.wrapperWidth + node.style.left = dims.fixedPos + "px" + if (!widget.coverGutter) { + width -= dims.gutterTotalWidth + node.style.paddingLeft = dims.gutterTotalWidth + "px" + } + node.style.width = width + "px" + } + if (widget.coverGutter) { + node.style.zIndex = 5 + node.style.position = "relative" + if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px" + } +} diff --git a/global/codemirror/src/display/update_lines.js b/global/codemirror/src/display/update_lines.js new file mode 100644 index 00000000..7583f3c1 --- /dev/null +++ b/global/codemirror/src/display/update_lines.js @@ -0,0 +1,62 @@ +import { heightAtLine } from "../line/spans" +import { getLine, lineAtHeight, updateLineHeight } from "../line/utils_line" +import { paddingTop, textHeight } from "../measurement/position_measurement" +import { ie, ie_version } from "../util/browser" + +// Read the actual heights of the rendered lines, and update their +// stored heights to match. +export function updateHeightsInViewport(cm) { + let display = cm.display + let prevBottom = display.lineDiv.offsetTop + for (let i = 0; i < display.view.length; i++) { + let cur = display.view[i], height + if (cur.hidden) continue + if (ie && ie_version < 8) { + let bot = cur.node.offsetTop + cur.node.offsetHeight + height = bot - prevBottom + prevBottom = bot + } else { + let box = cur.node.getBoundingClientRect() + height = box.bottom - box.top + } + let diff = cur.line.height - height + if (height < 2) height = textHeight(display) + if (diff > .005 || diff < -.005) { + updateLineHeight(cur.line, height) + updateWidgetHeight(cur.line) + if (cur.rest) for (let j = 0; j < cur.rest.length; j++) + updateWidgetHeight(cur.rest[j]) + } + } +} + +// Read and store the height of line widgets associated with the +// given line. +function updateWidgetHeight(line) { + if (line.widgets) for (let i = 0; i < line.widgets.length; ++i) + line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight +} + +// Compute the lines that are visible in a given viewport (defaults +// the the current scroll position). viewport may contain top, +// height, and ensure (see op.scrollToPos) properties. +export function visibleLines(display, doc, viewport) { + let top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop + top = Math.floor(top - paddingTop(display)) + let bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight + + let from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom) + // Ensure is a {from: {line, ch}, to: {line, ch}} object, and + // forces those lines into the viewport (if possible). + if (viewport && viewport.ensure) { + let ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line + if (ensureFrom < from) { + from = ensureFrom + to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight) + } else if (Math.min(ensureTo, doc.lastLine()) >= to) { + from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight) + to = ensureTo + } + } + return {from: from, to: Math.max(to, from + 1)} +} diff --git a/global/codemirror/src/display/view_tracking.js b/global/codemirror/src/display/view_tracking.js new file mode 100644 index 00000000..b9abd2fc --- /dev/null +++ b/global/codemirror/src/display/view_tracking.js @@ -0,0 +1,153 @@ +import { buildViewArray } from "../line/line_data" +import { sawCollapsedSpans } from "../line/saw_special_spans" +import { visualLineEndNo, visualLineNo } from "../line/spans" +import { findViewIndex } from "../measurement/position_measurement" +import { indexOf } from "../util/misc" + +// Updates the display.view data structure for a given change to the +// document. From and to are in pre-change coordinates. Lendiff is +// the amount of lines added or subtracted by the change. This is +// used for changes that span multiple lines, or change the way +// lines are divided into visual lines. regLineChange (below) +// registers single-line changes. +export function regChange(cm, from, to, lendiff) { + if (from == null) from = cm.doc.first + if (to == null) to = cm.doc.first + cm.doc.size + if (!lendiff) lendiff = 0 + + let display = cm.display + if (lendiff && to < display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers > from)) + display.updateLineNumbers = from + + cm.curOp.viewChanged = true + + if (from >= display.viewTo) { // Change after + if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) + resetView(cm) + } else if (to <= display.viewFrom) { // Change before + if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { + resetView(cm) + } else { + display.viewFrom += lendiff + display.viewTo += lendiff + } + } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap + resetView(cm) + } else if (from <= display.viewFrom) { // Top overlap + let cut = viewCuttingPoint(cm, to, to + lendiff, 1) + if (cut) { + display.view = display.view.slice(cut.index) + display.viewFrom = cut.lineN + display.viewTo += lendiff + } else { + resetView(cm) + } + } else if (to >= display.viewTo) { // Bottom overlap + let cut = viewCuttingPoint(cm, from, from, -1) + if (cut) { + display.view = display.view.slice(0, cut.index) + display.viewTo = cut.lineN + } else { + resetView(cm) + } + } else { // Gap in the middle + let cutTop = viewCuttingPoint(cm, from, from, -1) + let cutBot = viewCuttingPoint(cm, to, to + lendiff, 1) + if (cutTop && cutBot) { + display.view = display.view.slice(0, cutTop.index) + .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) + .concat(display.view.slice(cutBot.index)) + display.viewTo += lendiff + } else { + resetView(cm) + } + } + + let ext = display.externalMeasured + if (ext) { + if (to < ext.lineN) + ext.lineN += lendiff + else if (from < ext.lineN + ext.size) + display.externalMeasured = null + } +} + +// Register a change to a single line. Type must be one of "text", +// "gutter", "class", "widget" +export function regLineChange(cm, line, type) { + cm.curOp.viewChanged = true + let display = cm.display, ext = cm.display.externalMeasured + if (ext && line >= ext.lineN && line < ext.lineN + ext.size) + display.externalMeasured = null + + if (line < display.viewFrom || line >= display.viewTo) return + let lineView = display.view[findViewIndex(cm, line)] + if (lineView.node == null) return + let arr = lineView.changes || (lineView.changes = []) + if (indexOf(arr, type) == -1) arr.push(type) +} + +// Clear the view. +export function resetView(cm) { + cm.display.viewFrom = cm.display.viewTo = cm.doc.first + cm.display.view = [] + cm.display.viewOffset = 0 +} + +function viewCuttingPoint(cm, oldN, newN, dir) { + let index = findViewIndex(cm, oldN), diff, view = cm.display.view + if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) + return {index: index, lineN: newN} + let n = cm.display.viewFrom + for (let i = 0; i < index; i++) + n += view[i].size + if (n != oldN) { + if (dir > 0) { + if (index == view.length - 1) return null + diff = (n + view[index].size) - oldN + index++ + } else { + diff = n - oldN + } + oldN += diff; newN += diff + } + while (visualLineNo(cm.doc, newN) != newN) { + if (index == (dir < 0 ? 0 : view.length - 1)) return null + newN += dir * view[index - (dir < 0 ? 1 : 0)].size + index += dir + } + return {index: index, lineN: newN} +} + +// Force the view to cover a given range, adding empty view element +// or clipping off existing ones as needed. +export function adjustView(cm, from, to) { + let display = cm.display, view = display.view + if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { + display.view = buildViewArray(cm, from, to) + display.viewFrom = from + } else { + if (display.viewFrom > from) + display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view) + else if (display.viewFrom < from) + display.view = display.view.slice(findViewIndex(cm, from)) + display.viewFrom = from + if (display.viewTo < to) + display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)) + else if (display.viewTo > to) + display.view = display.view.slice(0, findViewIndex(cm, to)) + } + display.viewTo = to +} + +// Count the number of lines in the view whose DOM representation is +// out of date (or nonexistent). +export function countDirtyView(cm) { + let view = cm.display.view, dirty = 0 + for (let i = 0; i < view.length; i++) { + let lineView = view[i] + if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty + } + return dirty +} diff --git a/global/codemirror/src/edit/CodeMirror.js b/global/codemirror/src/edit/CodeMirror.js new file mode 100644 index 00000000..0f0e5890 --- /dev/null +++ b/global/codemirror/src/edit/CodeMirror.js @@ -0,0 +1,214 @@ +import { Display } from "../display/Display" +import { onFocus, onBlur } from "../display/focus" +import { setGuttersForLineNumbers, updateGutters } from "../display/gutters" +import { maybeUpdateLineNumberWidth } from "../display/line_numbers" +import { endOperation, operation, startOperation } from "../display/operations" +import { initScrollbars } from "../display/scrollbars" +import { onScrollWheel } from "../display/scroll_events" +import { setScrollLeft, updateScrollTop } from "../display/scrolling" +import { clipPos, Pos } from "../line/pos" +import { posFromMouse } from "../measurement/position_measurement" +import { eventInWidget } from "../measurement/widgets" +import Doc from "../model/Doc" +import { attachDoc } from "../model/document_data" +import { Range } from "../model/selection" +import { extendSelection } from "../model/selection_updates" +import { captureRightClick, ie, ie_version, mobile, webkit } from "../util/browser" +import { e_preventDefault, e_stop, on, signal, signalDOMEvent } from "../util/event" +import { bind, copyObj, Delayed } from "../util/misc" + +import { clearDragCursor, onDragOver, onDragStart, onDrop } from "./drop_events" +import { ensureGlobalHandlers } from "./global_events" +import { onKeyDown, onKeyPress, onKeyUp } from "./key_events" +import { clickInGutter, onContextMenu, onMouseDown } from "./mouse_events" +import { themeChanged } from "./utils" +import { defaults, optionHandlers, Init } from "./options" + +// A CodeMirror instance represents an editor. This is the object +// that user code is usually dealing with. + +export function CodeMirror(place, options) { + if (!(this instanceof CodeMirror)) return new CodeMirror(place, options) + + this.options = options = options ? copyObj(options) : {} + // Determine effective options based on given values and defaults. + copyObj(defaults, options, false) + setGuttersForLineNumbers(options) + + let doc = options.value + if (typeof doc == "string") doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction) + this.doc = doc + + let input = new CodeMirror.inputStyles[options.inputStyle](this) + let display = this.display = new Display(place, doc, input) + display.wrapper.CodeMirror = this + updateGutters(this) + themeChanged(this) + if (options.lineWrapping) + this.display.wrapper.className += " CodeMirror-wrap" + initScrollbars(this) + + this.state = { + keyMaps: [], // stores maps added by addKeyMap + overlays: [], // highlighting overlays, as added by addOverlay + modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info + overwrite: false, + delayingBlurEvent: false, + focused: false, + suppressEdits: false, // used to disable editing during key handlers when in readOnly mode + pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll + selectingText: false, + draggingText: false, + highlight: new Delayed(), // stores highlight worker timeout + keySeq: null, // Unfinished key sequence + specialChars: null + } + + if (options.autofocus && !mobile) display.input.focus() + + // Override magic textarea content restore that IE sometimes does + // on our hidden textarea on reload + if (ie && ie_version < 11) setTimeout(() => this.display.input.reset(true), 20) + + registerEventHandlers(this) + ensureGlobalHandlers() + + startOperation(this) + this.curOp.forceUpdate = true + attachDoc(this, doc) + + if ((options.autofocus && !mobile) || this.hasFocus()) + setTimeout(bind(onFocus, this), 20) + else + onBlur(this) + + for (let opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt)) + optionHandlers[opt](this, options[opt], Init) + maybeUpdateLineNumberWidth(this) + if (options.finishInit) options.finishInit(this) + for (let i = 0; i < initHooks.length; ++i) initHooks[i](this) + endOperation(this) + // Suppress optimizelegibility in Webkit, since it breaks text + // measuring on line wrapping boundaries. + if (webkit && options.lineWrapping && + getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") + display.lineDiv.style.textRendering = "auto" +} + +// The default configuration options. +CodeMirror.defaults = defaults +// Functions to run when options are changed. +CodeMirror.optionHandlers = optionHandlers + +export default CodeMirror + +// Attach the necessary event handlers when initializing the editor +function registerEventHandlers(cm) { + let d = cm.display + on(d.scroller, "mousedown", operation(cm, onMouseDown)) + // Older IE's will not fire a second mousedown for a double click + if (ie && ie_version < 11) + on(d.scroller, "dblclick", operation(cm, e => { + if (signalDOMEvent(cm, e)) return + let pos = posFromMouse(cm, e) + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return + e_preventDefault(e) + let word = cm.findWordAt(pos) + extendSelection(cm.doc, word.anchor, word.head) + })) + else + on(d.scroller, "dblclick", e => signalDOMEvent(cm, e) || e_preventDefault(e)) + // Some browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for these browsers. + if (!captureRightClick) on(d.scroller, "contextmenu", e => onContextMenu(cm, e)) + + // Used to suppress mouse event handling when a touch happens + let touchFinished, prevTouch = {end: 0} + function finishTouch() { + if (d.activeTouch) { + touchFinished = setTimeout(() => d.activeTouch = null, 1000) + prevTouch = d.activeTouch + prevTouch.end = +new Date + } + } + function isMouseLikeTouchEvent(e) { + if (e.touches.length != 1) return false + let touch = e.touches[0] + return touch.radiusX <= 1 && touch.radiusY <= 1 + } + function farAway(touch, other) { + if (other.left == null) return true + let dx = other.left - touch.left, dy = other.top - touch.top + return dx * dx + dy * dy > 20 * 20 + } + on(d.scroller, "touchstart", e => { + if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) { + d.input.ensurePolled() + clearTimeout(touchFinished) + let now = +new Date + d.activeTouch = {start: now, moved: false, + prev: now - prevTouch.end <= 300 ? prevTouch : null} + if (e.touches.length == 1) { + d.activeTouch.left = e.touches[0].pageX + d.activeTouch.top = e.touches[0].pageY + } + } + }) + on(d.scroller, "touchmove", () => { + if (d.activeTouch) d.activeTouch.moved = true + }) + on(d.scroller, "touchend", e => { + let touch = d.activeTouch + if (touch && !eventInWidget(d, e) && touch.left != null && + !touch.moved && new Date - touch.start < 300) { + let pos = cm.coordsChar(d.activeTouch, "page"), range + if (!touch.prev || farAway(touch, touch.prev)) // Single tap + range = new Range(pos, pos) + else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap + range = cm.findWordAt(pos) + else // Triple tap + range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) + cm.setSelection(range.anchor, range.head) + cm.focus() + e_preventDefault(e) + } + finishTouch() + }) + on(d.scroller, "touchcancel", finishTouch) + + // Sync scrolling between fake scrollbars and real scrollable + // area, ensure viewport is updated when scrolling. + on(d.scroller, "scroll", () => { + if (d.scroller.clientHeight) { + updateScrollTop(cm, d.scroller.scrollTop) + setScrollLeft(cm, d.scroller.scrollLeft, true) + signal(cm, "scroll", cm) + } + }) + + // Listen to wheel events in order to try and update the viewport on time. + on(d.scroller, "mousewheel", e => onScrollWheel(cm, e)) + on(d.scroller, "DOMMouseScroll", e => onScrollWheel(cm, e)) + + // Prevent wrapper from ever scrolling + on(d.wrapper, "scroll", () => d.wrapper.scrollTop = d.wrapper.scrollLeft = 0) + + d.dragFunctions = { + enter: e => {if (!signalDOMEvent(cm, e)) e_stop(e)}, + over: e => {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e) }}, + start: e => onDragStart(cm, e), + drop: operation(cm, onDrop), + leave: e => {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm) }} + } + + let inp = d.input.getField() + on(inp, "keyup", e => onKeyUp.call(cm, e)) + on(inp, "keydown", operation(cm, onKeyDown)) + on(inp, "keypress", operation(cm, onKeyPress)) + on(inp, "focus", e => onFocus(cm, e)) + on(inp, "blur", e => onBlur(cm, e)) +} + +let initHooks = [] +CodeMirror.defineInitHook = f => initHooks.push(f) diff --git a/global/codemirror/src/edit/commands.js b/global/codemirror/src/edit/commands.js new file mode 100644 index 00000000..e1a4327c --- /dev/null +++ b/global/codemirror/src/edit/commands.js @@ -0,0 +1,178 @@ +import { deleteNearSelection } from "./deleteNearSelection" +import { runInOp } from "../display/operations" +import { ensureCursorVisible } from "../display/scrolling" +import { endOfLine } from "../input/movement" +import { clipPos, Pos } from "../line/pos" +import { visualLine, visualLineEnd } from "../line/spans" +import { getLine, lineNo } from "../line/utils_line" +import { Range } from "../model/selection" +import { selectAll } from "../model/selection_updates" +import { countColumn, sel_dontScroll, sel_move, spaceStr } from "../util/misc" +import { getOrder } from "../util/bidi" + +// Commands are parameter-less actions that can be performed on an +// editor, mostly used for keybindings. +export let commands = { + selectAll: selectAll, + singleSelection: cm => cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll), + killLine: cm => deleteNearSelection(cm, range => { + if (range.empty()) { + let len = getLine(cm.doc, range.head.line).text.length + if (range.head.ch == len && range.head.line < cm.lastLine()) + return {from: range.head, to: Pos(range.head.line + 1, 0)} + else + return {from: range.head, to: Pos(range.head.line, len)} + } else { + return {from: range.from(), to: range.to()} + } + }), + deleteLine: cm => deleteNearSelection(cm, range => ({ + from: Pos(range.from().line, 0), + to: clipPos(cm.doc, Pos(range.to().line + 1, 0)) + })), + delLineLeft: cm => deleteNearSelection(cm, range => ({ + from: Pos(range.from().line, 0), to: range.from() + })), + delWrappedLineLeft: cm => deleteNearSelection(cm, range => { + let top = cm.charCoords(range.head, "div").top + 5 + let leftPos = cm.coordsChar({left: 0, top: top}, "div") + return {from: leftPos, to: range.from()} + }), + delWrappedLineRight: cm => deleteNearSelection(cm, range => { + let top = cm.charCoords(range.head, "div").top + 5 + let rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + return {from: range.from(), to: rightPos } + }), + undo: cm => cm.undo(), + redo: cm => cm.redo(), + undoSelection: cm => cm.undoSelection(), + redoSelection: cm => cm.redoSelection(), + goDocStart: cm => cm.extendSelection(Pos(cm.firstLine(), 0)), + goDocEnd: cm => cm.extendSelection(Pos(cm.lastLine())), + goLineStart: cm => cm.extendSelectionsBy(range => lineStart(cm, range.head.line), + {origin: "+move", bias: 1} + ), + goLineStartSmart: cm => cm.extendSelectionsBy(range => lineStartSmart(cm, range.head), + {origin: "+move", bias: 1} + ), + goLineEnd: cm => cm.extendSelectionsBy(range => lineEnd(cm, range.head.line), + {origin: "+move", bias: -1} + ), + goLineRight: cm => cm.extendSelectionsBy(range => { + let top = cm.cursorCoords(range.head, "div").top + 5 + return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div") + }, sel_move), + goLineLeft: cm => cm.extendSelectionsBy(range => { + let top = cm.cursorCoords(range.head, "div").top + 5 + return cm.coordsChar({left: 0, top: top}, "div") + }, sel_move), + goLineLeftSmart: cm => cm.extendSelectionsBy(range => { + let top = cm.cursorCoords(range.head, "div").top + 5 + let pos = cm.coordsChar({left: 0, top: top}, "div") + if (pos.ch < cm.getLine(pos.line).search(/\S/)) return lineStartSmart(cm, range.head) + return pos + }, sel_move), + goLineUp: cm => cm.moveV(-1, "line"), + goLineDown: cm => cm.moveV(1, "line"), + goPageUp: cm => cm.moveV(-1, "page"), + goPageDown: cm => cm.moveV(1, "page"), + goCharLeft: cm => cm.moveH(-1, "char"), + goCharRight: cm => cm.moveH(1, "char"), + goColumnLeft: cm => cm.moveH(-1, "column"), + goColumnRight: cm => cm.moveH(1, "column"), + goWordLeft: cm => cm.moveH(-1, "word"), + goGroupRight: cm => cm.moveH(1, "group"), + goGroupLeft: cm => cm.moveH(-1, "group"), + goWordRight: cm => cm.moveH(1, "word"), + delCharBefore: cm => cm.deleteH(-1, "char"), + delCharAfter: cm => cm.deleteH(1, "char"), + delWordBefore: cm => cm.deleteH(-1, "word"), + delWordAfter: cm => cm.deleteH(1, "word"), + delGroupBefore: cm => cm.deleteH(-1, "group"), + delGroupAfter: cm => cm.deleteH(1, "group"), + indentAuto: cm => cm.indentSelection("smart"), + indentMore: cm => cm.indentSelection("add"), + indentLess: cm => cm.indentSelection("subtract"), + insertTab: cm => cm.replaceSelection("\t"), + insertSoftTab: cm => { + let spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize + for (let i = 0; i < ranges.length; i++) { + let pos = ranges[i].from() + let col = countColumn(cm.getLine(pos.line), pos.ch, tabSize) + spaces.push(spaceStr(tabSize - col % tabSize)) + } + cm.replaceSelections(spaces) + }, + defaultTab: cm => { + if (cm.somethingSelected()) cm.indentSelection("add") + else cm.execCommand("insertTab") + }, + // Swap the two chars left and right of each selection's head. + // Move cursor behind the two swapped characters afterwards. + // + // Doesn't consider line feeds a character. + // Doesn't scan more than one line above to find a character. + // Doesn't do anything on an empty line. + // Doesn't do anything with non-empty selections. + transposeChars: cm => runInOp(cm, () => { + let ranges = cm.listSelections(), newSel = [] + for (let i = 0; i < ranges.length; i++) { + if (!ranges[i].empty()) continue + let cur = ranges[i].head, line = getLine(cm.doc, cur.line).text + if (line) { + if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1) + if (cur.ch > 0) { + cur = new Pos(cur.line, cur.ch + 1) + cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), + Pos(cur.line, cur.ch - 2), cur, "+transpose") + } else if (cur.line > cm.doc.first) { + let prev = getLine(cm.doc, cur.line - 1).text + if (prev) { + cur = new Pos(cur.line, 1) + cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + + prev.charAt(prev.length - 1), + Pos(cur.line - 1, prev.length - 1), cur, "+transpose") + } + } + } + newSel.push(new Range(cur, cur)) + } + cm.setSelections(newSel) + }), + newlineAndIndent: cm => runInOp(cm, () => { + let sels = cm.listSelections() + for (let i = sels.length - 1; i >= 0; i--) + cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, "+input") + sels = cm.listSelections() + for (let i = 0; i < sels.length; i++) + cm.indentLine(sels[i].from().line, null, true) + ensureCursorVisible(cm) + }), + openLine: cm => cm.replaceSelection("\n", "start"), + toggleOverwrite: cm => cm.toggleOverwrite() +} + + +function lineStart(cm, lineN) { + let line = getLine(cm.doc, lineN) + let visual = visualLine(line) + if (visual != line) lineN = lineNo(visual) + return endOfLine(true, cm, visual, lineN, 1) +} +function lineEnd(cm, lineN) { + let line = getLine(cm.doc, lineN) + let visual = visualLineEnd(line) + if (visual != line) lineN = lineNo(visual) + return endOfLine(true, cm, line, lineN, -1) +} +function lineStartSmart(cm, pos) { + let start = lineStart(cm, pos.line) + let line = getLine(cm.doc, start.line) + let order = getOrder(line, cm.doc.direction) + if (!order || order[0].level == 0) { + let firstNonWS = Math.max(0, line.text.search(/\S/)) + let inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch + return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky) + } + return start +} diff --git a/global/codemirror/src/edit/deleteNearSelection.js b/global/codemirror/src/edit/deleteNearSelection.js new file mode 100644 index 00000000..5a9bd2cf --- /dev/null +++ b/global/codemirror/src/edit/deleteNearSelection.js @@ -0,0 +1,30 @@ +import { runInOp } from "../display/operations" +import { ensureCursorVisible } from "../display/scrolling" +import { cmp } from "../line/pos" +import { replaceRange } from "../model/changes" +import { lst } from "../util/misc" + +// Helper for deleting text near the selection(s), used to implement +// backspace, delete, and similar functionality. +export function deleteNearSelection(cm, compute) { + let ranges = cm.doc.sel.ranges, kill = [] + // Build up a set of ranges to kill first, merging overlapping + // ranges. + for (let i = 0; i < ranges.length; i++) { + let toKill = compute(ranges[i]) + while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { + let replaced = kill.pop() + if (cmp(replaced.from, toKill.from) < 0) { + toKill.from = replaced.from + break + } + } + kill.push(toKill) + } + // Next, remove those actual ranges. + runInOp(cm, () => { + for (let i = kill.length - 1; i >= 0; i--) + replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete") + ensureCursorVisible(cm) + }) +} diff --git a/global/codemirror/src/edit/drop_events.js b/global/codemirror/src/edit/drop_events.js new file mode 100644 index 00000000..43e996fb --- /dev/null +++ b/global/codemirror/src/edit/drop_events.js @@ -0,0 +1,119 @@ +import { drawSelectionCursor } from "../display/selection" +import { operation } from "../display/operations" +import { clipPos } from "../line/pos" +import { posFromMouse } from "../measurement/position_measurement" +import { eventInWidget } from "../measurement/widgets" +import { makeChange, replaceRange } from "../model/changes" +import { changeEnd } from "../model/change_measurement" +import { simpleSelection } from "../model/selection" +import { setSelectionNoUndo, setSelectionReplaceHistory } from "../model/selection_updates" +import { ie, presto, safari } from "../util/browser" +import { elt, removeChildrenAndAdd } from "../util/dom" +import { e_preventDefault, e_stop, signalDOMEvent } from "../util/event" +import { indexOf } from "../util/misc" + +// Kludge to work around strange IE behavior where it'll sometimes +// re-fire a series of drag-related events right after the drop (#1551) +let lastDrop = 0 + +export function onDrop(e) { + let cm = this + clearDragCursor(cm) + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) + return + e_preventDefault(e) + if (ie) lastDrop = +new Date + let pos = posFromMouse(cm, e, true), files = e.dataTransfer.files + if (!pos || cm.isReadOnly()) return + // Might be a file drop, in which case we simply extract the text + // and insert it. + if (files && files.length && window.FileReader && window.File) { + let n = files.length, text = Array(n), read = 0 + let loadFile = (file, i) => { + if (cm.options.allowDropFileTypes && + indexOf(cm.options.allowDropFileTypes, file.type) == -1) + return + + let reader = new FileReader + reader.onload = operation(cm, () => { + let content = reader.result + if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) content = "" + text[i] = content + if (++read == n) { + pos = clipPos(cm.doc, pos) + let change = {from: pos, to: pos, + text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())), + origin: "paste"} + makeChange(cm.doc, change) + setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))) + } + }) + reader.readAsText(file) + } + for (let i = 0; i < n; ++i) loadFile(files[i], i) + } else { // Normal drop + // Don't do a replace if the drop happened inside of the selected text. + if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { + cm.state.draggingText(e) + // Ensure the editor is re-focused + setTimeout(() => cm.display.input.focus(), 20) + return + } + try { + let text = e.dataTransfer.getData("Text") + if (text) { + let selected + if (cm.state.draggingText && !cm.state.draggingText.copy) + selected = cm.listSelections() + setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)) + if (selected) for (let i = 0; i < selected.length; ++i) + replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag") + cm.replaceSelection(text, "around", "paste") + cm.display.input.focus() + } + } + catch(e){} + } +} + +export function onDragStart(cm, e) { + if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return + + e.dataTransfer.setData("Text", cm.getSelection()) + e.dataTransfer.effectAllowed = "copyMove" + + // Use dummy image instead of default browsers image. + // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. + if (e.dataTransfer.setDragImage && !safari) { + let img = elt("img", null, null, "position: fixed; left: 0; top: 0;") + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" + if (presto) { + img.width = img.height = 1 + cm.display.wrapper.appendChild(img) + // Force a relayout, or Opera won't use our image for some obscure reason + img._top = img.offsetTop + } + e.dataTransfer.setDragImage(img, 0, 0) + if (presto) img.parentNode.removeChild(img) + } +} + +export function onDragOver(cm, e) { + let pos = posFromMouse(cm, e) + if (!pos) return + let frag = document.createDocumentFragment() + drawSelectionCursor(cm, pos, frag) + if (!cm.display.dragCursor) { + cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors") + cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv) + } + removeChildrenAndAdd(cm.display.dragCursor, frag) +} + +export function clearDragCursor(cm) { + if (cm.display.dragCursor) { + cm.display.lineSpace.removeChild(cm.display.dragCursor) + cm.display.dragCursor = null + } +} diff --git a/global/codemirror/src/edit/fromTextArea.js b/global/codemirror/src/edit/fromTextArea.js new file mode 100644 index 00000000..5d920830 --- /dev/null +++ b/global/codemirror/src/edit/fromTextArea.js @@ -0,0 +1,61 @@ +import { CodeMirror } from "./CodeMirror" +import { activeElt } from "../util/dom" +import { off, on } from "../util/event" +import { copyObj } from "../util/misc" + +export function fromTextArea(textarea, options) { + options = options ? copyObj(options) : {} + options.value = textarea.value + if (!options.tabindex && textarea.tabIndex) + options.tabindex = textarea.tabIndex + if (!options.placeholder && textarea.placeholder) + options.placeholder = textarea.placeholder + // Set autofocus to true if this textarea is focused, or if it has + // autofocus and no other element is focused. + if (options.autofocus == null) { + let hasFocus = activeElt() + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body + } + + function save() {textarea.value = cm.getValue()} + + let realSubmit + if (textarea.form) { + on(textarea.form, "submit", save) + // Deplorable hack to make the submit method do the right thing. + if (!options.leaveSubmitMethodAlone) { + let form = textarea.form + realSubmit = form.submit + try { + let wrappedSubmit = form.submit = () => { + save() + form.submit = realSubmit + form.submit() + form.submit = wrappedSubmit + } + } catch(e) {} + } + } + + options.finishInit = cm => { + cm.save = save + cm.getTextArea = () => textarea + cm.toTextArea = () => { + cm.toTextArea = isNaN // Prevent this from being ran twice + save() + textarea.parentNode.removeChild(cm.getWrapperElement()) + textarea.style.display = "" + if (textarea.form) { + off(textarea.form, "submit", save) + if (typeof textarea.form.submit == "function") + textarea.form.submit = realSubmit + } + } + } + + textarea.style.display = "none" + let cm = CodeMirror(node => textarea.parentNode.insertBefore(node, textarea.nextSibling), + options) + return cm +} diff --git a/global/codemirror/src/edit/global_events.js b/global/codemirror/src/edit/global_events.js new file mode 100644 index 00000000..b2ab7d57 --- /dev/null +++ b/global/codemirror/src/edit/global_events.js @@ -0,0 +1,44 @@ +import { onBlur } from "../display/focus" +import { on } from "../util/event" + +// These must be handled carefully, because naively registering a +// handler for each editor will cause the editors to never be +// garbage collected. + +function forEachCodeMirror(f) { + if (!document.getElementsByClassName) return + let byClass = document.getElementsByClassName("CodeMirror") + for (let i = 0; i < byClass.length; i++) { + let cm = byClass[i].CodeMirror + if (cm) f(cm) + } +} + +let globalsRegistered = false +export function ensureGlobalHandlers() { + if (globalsRegistered) return + registerGlobalHandlers() + globalsRegistered = true +} +function registerGlobalHandlers() { + // When the window resizes, we need to refresh active editors. + let resizeTimer + on(window, "resize", () => { + if (resizeTimer == null) resizeTimer = setTimeout(() => { + resizeTimer = null + forEachCodeMirror(onResize) + }, 100) + }) + // When the window loses focus, we want to show the editor as blurred + on(window, "blur", () => forEachCodeMirror(onBlur)) +} +// Called when the window resizes +function onResize(cm) { + let d = cm.display + if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth) + return + // Might be a text scaling operation, clear size caches. + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null + d.scrollbarsClipped = false + cm.setSize() +} diff --git a/global/codemirror/src/edit/key_events.js b/global/codemirror/src/edit/key_events.js new file mode 100644 index 00000000..2955e4ae --- /dev/null +++ b/global/codemirror/src/edit/key_events.js @@ -0,0 +1,155 @@ +import { signalLater } from "../util/operation_group" +import { restartBlink } from "../display/selection" +import { isModifierKey, keyName, lookupKey } from "../input/keymap" +import { eventInWidget } from "../measurement/widgets" +import { ie, ie_version, mac, presto } from "../util/browser" +import { activeElt, addClass, rmClass } from "../util/dom" +import { e_preventDefault, off, on, signalDOMEvent } from "../util/event" +import { hasCopyEvent } from "../util/feature_detection" +import { Delayed, Pass } from "../util/misc" + +import { commands } from "./commands" + +// Run a handler that was bound to a key. +function doHandleBinding(cm, bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound] + if (!bound) return false + } + // Ensure previous input has been read, so that the handler sees a + // consistent view of the document + cm.display.input.ensurePolled() + let prevShift = cm.display.shift, done = false + try { + if (cm.isReadOnly()) cm.state.suppressEdits = true + if (dropShift) cm.display.shift = false + done = bound(cm) != Pass + } finally { + cm.display.shift = prevShift + cm.state.suppressEdits = false + } + return done +} + +function lookupKeyForEditor(cm, name, handle) { + for (let i = 0; i < cm.state.keyMaps.length; i++) { + let result = lookupKey(name, cm.state.keyMaps[i], handle, cm) + if (result) return result + } + return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) + || lookupKey(name, cm.options.keyMap, handle, cm) +} + +// Note that, despite the name, this function is also used to check +// for bound mouse clicks. + +let stopSeq = new Delayed +export function dispatchKey(cm, name, e, handle) { + let seq = cm.state.keySeq + if (seq) { + if (isModifierKey(name)) return "handled" + stopSeq.set(50, () => { + if (cm.state.keySeq == seq) { + cm.state.keySeq = null + cm.display.input.reset() + } + }) + name = seq + " " + name + } + let result = lookupKeyForEditor(cm, name, handle) + + if (result == "multi") + cm.state.keySeq = name + if (result == "handled") + signalLater(cm, "keyHandled", cm, name, e) + + if (result == "handled" || result == "multi") { + e_preventDefault(e) + restartBlink(cm) + } + + if (seq && !result && /\'$/.test(name)) { + e_preventDefault(e) + return true + } + return !!result +} + +// Handle a key from the keydown event. +function handleKeyBinding(cm, e) { + let name = keyName(e, true) + if (!name) return false + + if (e.shiftKey && !cm.state.keySeq) { + // First try to resolve full name (including 'Shift-'). Failing + // that, see if there is a cursor-motion command (starting with + // 'go') bound to the keyname without 'Shift-'. + return dispatchKey(cm, "Shift-" + name, e, b => doHandleBinding(cm, b, true)) + || dispatchKey(cm, name, e, b => { + if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) + return doHandleBinding(cm, b) + }) + } else { + return dispatchKey(cm, name, e, b => doHandleBinding(cm, b)) + } +} + +// Handle a key from the keypress event +function handleCharBinding(cm, e, ch) { + return dispatchKey(cm, "'" + ch + "'", e, b => doHandleBinding(cm, b, true)) +} + +let lastStoppedKey = null +export function onKeyDown(e) { + let cm = this + cm.curOp.focus = activeElt() + if (signalDOMEvent(cm, e)) return + // IE does strange things with escape. + if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false + let code = e.keyCode + cm.display.shift = code == 16 || e.shiftKey + let handled = handleKeyBinding(cm, e) + if (presto) { + lastStoppedKey = handled ? code : null + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + cm.replaceSelection("", null, "cut") + } + + // Turn mouse into crosshair when Alt is held on Mac. + if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) + showCrossHair(cm) +} + +function showCrossHair(cm) { + let lineDiv = cm.display.lineDiv + addClass(lineDiv, "CodeMirror-crosshair") + + function up(e) { + if (e.keyCode == 18 || !e.altKey) { + rmClass(lineDiv, "CodeMirror-crosshair") + off(document, "keyup", up) + off(document, "mouseover", up) + } + } + on(document, "keyup", up) + on(document, "mouseover", up) +} + +export function onKeyUp(e) { + if (e.keyCode == 16) this.doc.sel.shift = false + signalDOMEvent(this, e) +} + +export function onKeyPress(e) { + let cm = this + if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return + let keyCode = e.keyCode, charCode = e.charCode + if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return} + if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) return + let ch = String.fromCharCode(charCode == null ? keyCode : charCode) + // Some browsers fire keypress events for backspace + if (ch == "\x08") return + if (handleCharBinding(cm, e, ch)) return + cm.display.input.onKeyPress(e) +} diff --git a/global/codemirror/src/edit/legacy.js b/global/codemirror/src/edit/legacy.js new file mode 100644 index 00000000..bc3df6c8 --- /dev/null +++ b/global/codemirror/src/edit/legacy.js @@ -0,0 +1,62 @@ +import { scrollbarModel } from "../display/scrollbars" +import { wheelEventPixels } from "../display/scroll_events" +import { keyMap, keyName, isModifierKey, lookupKey, normalizeKeyMap } from "../input/keymap" +import { keyNames } from "../input/keynames" +import { Line } from "../line/line_data" +import { cmp, Pos } from "../line/pos" +import { changeEnd } from "../model/change_measurement" +import Doc from "../model/Doc" +import { LineWidget } from "../model/line_widget" +import { SharedTextMarker, TextMarker } from "../model/mark_text" +import { copyState, extendMode, getMode, innerMode, mimeModes, modeExtensions, modes, resolveMode, startState } from "../modes" +import { addClass, contains, rmClass } from "../util/dom" +import { e_preventDefault, e_stop, e_stopPropagation, off, on, signal } from "../util/event" +import { splitLinesAuto } from "../util/feature_detection" +import { countColumn, findColumn, isWordCharBasic, Pass } from "../util/misc" +import StringStream from "../util/StringStream" + +import { commands } from "./commands" + +export function addLegacyProps(CodeMirror) { + CodeMirror.off = off + CodeMirror.on = on + CodeMirror.wheelEventPixels = wheelEventPixels + CodeMirror.Doc = Doc + CodeMirror.splitLines = splitLinesAuto + CodeMirror.countColumn = countColumn + CodeMirror.findColumn = findColumn + CodeMirror.isWordChar = isWordCharBasic + CodeMirror.Pass = Pass + CodeMirror.signal = signal + CodeMirror.Line = Line + CodeMirror.changeEnd = changeEnd + CodeMirror.scrollbarModel = scrollbarModel + CodeMirror.Pos = Pos + CodeMirror.cmpPos = cmp + CodeMirror.modes = modes + CodeMirror.mimeModes = mimeModes + CodeMirror.resolveMode = resolveMode + CodeMirror.getMode = getMode + CodeMirror.modeExtensions = modeExtensions + CodeMirror.extendMode = extendMode + CodeMirror.copyState = copyState + CodeMirror.startState = startState + CodeMirror.innerMode = innerMode + CodeMirror.commands = commands + CodeMirror.keyMap = keyMap + CodeMirror.keyName = keyName + CodeMirror.isModifierKey = isModifierKey + CodeMirror.lookupKey = lookupKey + CodeMirror.normalizeKeyMap = normalizeKeyMap + CodeMirror.StringStream = StringStream + CodeMirror.SharedTextMarker = SharedTextMarker + CodeMirror.TextMarker = TextMarker + CodeMirror.LineWidget = LineWidget + CodeMirror.e_preventDefault = e_preventDefault + CodeMirror.e_stopPropagation = e_stopPropagation + CodeMirror.e_stop = e_stop + CodeMirror.addClass = addClass + CodeMirror.contains = contains + CodeMirror.rmClass = rmClass + CodeMirror.keyNames = keyNames +} diff --git a/global/codemirror/src/edit/main.js b/global/codemirror/src/edit/main.js new file mode 100644 index 00000000..4298c61f --- /dev/null +++ b/global/codemirror/src/edit/main.js @@ -0,0 +1,69 @@ +// EDITOR CONSTRUCTOR + +import { CodeMirror } from "./CodeMirror" +export { CodeMirror } from "./CodeMirror" + +import { eventMixin } from "../util/event" +import { indexOf } from "../util/misc" + +import { defineOptions } from "./options" + +defineOptions(CodeMirror) + +import addEditorMethods from "./methods" + +addEditorMethods(CodeMirror) + +import Doc from "../model/Doc" + +// Set up methods on CodeMirror's prototype to redirect to the editor's document. +let dontDelegate = "iter insert remove copy getEditor constructor".split(" ") +for (let prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + CodeMirror.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments)} + })(Doc.prototype[prop]) + +eventMixin(Doc) + +// INPUT HANDLING + +import ContentEditableInput from "../input/ContentEditableInput" +import TextareaInput from "../input/TextareaInput" +CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput} + +// MODE DEFINITION AND QUERYING + +import { defineMIME, defineMode } from "../modes" + +// Extra arguments are stored as the mode's dependencies, which is +// used by (legacy) mechanisms like loadmode.js to automatically +// load a mode. (Preferred mechanism is the require/define calls.) +CodeMirror.defineMode = function(name/*, mode, …*/) { + if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name + defineMode.apply(this, arguments) +} + +CodeMirror.defineMIME = defineMIME + +// Minimal default mode. +CodeMirror.defineMode("null", () => ({token: stream => stream.skipToEnd()})) +CodeMirror.defineMIME("text/plain", "null") + +// EXTENSIONS + +CodeMirror.defineExtension = (name, func) => { + CodeMirror.prototype[name] = func +} +CodeMirror.defineDocExtension = (name, func) => { + Doc.prototype[name] = func +} + +import { fromTextArea } from "./fromTextArea" + +CodeMirror.fromTextArea = fromTextArea + +import { addLegacyProps } from "./legacy" + +addLegacyProps(CodeMirror) + +CodeMirror.version = "5.30.0" diff --git a/global/codemirror/src/edit/methods.js b/global/codemirror/src/edit/methods.js new file mode 100644 index 00000000..8dc69252 --- /dev/null +++ b/global/codemirror/src/edit/methods.js @@ -0,0 +1,539 @@ +import { deleteNearSelection } from "./deleteNearSelection" +import { commands } from "./commands" +import { attachDoc } from "../model/document_data" +import { activeElt, addClass, rmClass } from "../util/dom" +import { eventMixin, signal } from "../util/event" +import { getLineStyles, getContextBefore, takeToken } from "../line/highlight" +import { indentLine } from "../input/indent" +import { triggerElectric } from "../input/input" +import { onKeyDown, onKeyPress, onKeyUp } from "./key_events" +import { onMouseDown } from "./mouse_events" +import { getKeyMap } from "../input/keymap" +import { endOfLine, moveLogically, moveVisually } from "../input/movement" +import { endOperation, methodOp, operation, runInOp, startOperation } from "../display/operations" +import { clipLine, clipPos, equalCursorPos, Pos } from "../line/pos" +import { charCoords, charWidth, clearCaches, clearLineMeasurementCache, coordsChar, cursorCoords, displayHeight, displayWidth, estimateLineHeights, fromCoordSystem, intoCoordSystem, scrollGap, textHeight } from "../measurement/position_measurement" +import { Range } from "../model/selection" +import { replaceOneSelection, skipAtomic } from "../model/selection_updates" +import { addToScrollTop, ensureCursorVisible, scrollIntoView, scrollToCoords, scrollToCoordsRange, scrollToRange } from "../display/scrolling" +import { heightAtLine } from "../line/spans" +import { updateGutterSpace } from "../display/update_display" +import { indexOf, insertSorted, isWordChar, sel_dontScroll, sel_move } from "../util/misc" +import { signalLater } from "../util/operation_group" +import { getLine, isLine, lineAtHeight } from "../line/utils_line" +import { regChange, regLineChange } from "../display/view_tracking" + +// The publicly visible API. Note that methodOp(f) means +// 'wrap f in an operation, performed on its `this` parameter'. + +// This is not the complete set of editor methods. Most of the +// methods defined on the Doc type are also injected into +// CodeMirror.prototype, for backwards compatibility and +// convenience. + +export default function(CodeMirror) { + let optionHandlers = CodeMirror.optionHandlers + + let helpers = CodeMirror.helpers = {} + + CodeMirror.prototype = { + constructor: CodeMirror, + focus: function(){window.focus(); this.display.input.focus()}, + + setOption: function(option, value) { + let options = this.options, old = options[option] + if (options[option] == value && option != "mode") return + options[option] = value + if (optionHandlers.hasOwnProperty(option)) + operation(this, optionHandlers[option])(this, value, old) + signal(this, "optionChange", this, option) + }, + + getOption: function(option) {return this.options[option]}, + getDoc: function() {return this.doc}, + + addKeyMap: function(map, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)) + }, + removeKeyMap: function(map) { + let maps = this.state.keyMaps + for (let i = 0; i < maps.length; ++i) + if (maps[i] == map || maps[i].name == map) { + maps.splice(i, 1) + return true + } + }, + + addOverlay: methodOp(function(spec, options) { + let mode = spec.token ? spec : CodeMirror.getMode(this.options, spec) + if (mode.startState) throw new Error("Overlays may not be stateful.") + insertSorted(this.state.overlays, + {mode: mode, modeSpec: spec, opaque: options && options.opaque, + priority: (options && options.priority) || 0}, + overlay => overlay.priority) + this.state.modeGen++ + regChange(this) + }), + removeOverlay: methodOp(function(spec) { + let overlays = this.state.overlays + for (let i = 0; i < overlays.length; ++i) { + let cur = overlays[i].modeSpec + if (cur == spec || typeof spec == "string" && cur.name == spec) { + overlays.splice(i, 1) + this.state.modeGen++ + regChange(this) + return + } + } + }), + + indentLine: methodOp(function(n, dir, aggressive) { + if (typeof dir != "string" && typeof dir != "number") { + if (dir == null) dir = this.options.smartIndent ? "smart" : "prev" + else dir = dir ? "add" : "subtract" + } + if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive) + }), + indentSelection: methodOp(function(how) { + let ranges = this.doc.sel.ranges, end = -1 + for (let i = 0; i < ranges.length; i++) { + let range = ranges[i] + if (!range.empty()) { + let from = range.from(), to = range.to() + let start = Math.max(end, from.line) + end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1 + for (let j = start; j < end; ++j) + indentLine(this, j, how) + let newRanges = this.doc.sel.ranges + if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) + replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll) + } else if (range.head.line > end) { + indentLine(this, range.head.line, how, true) + end = range.head.line + if (i == this.doc.sel.primIndex) ensureCursorVisible(this) + } + } + }), + + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(pos, precise) { + return takeToken(this, pos, precise) + }, + + getLineTokens: function(line, precise) { + return takeToken(this, Pos(line), precise, true) + }, + + getTokenTypeAt: function(pos) { + pos = clipPos(this.doc, pos) + let styles = getLineStyles(this, getLine(this.doc, pos.line)) + let before = 0, after = (styles.length - 1) / 2, ch = pos.ch + let type + if (ch == 0) type = styles[2] + else for (;;) { + let mid = (before + after) >> 1 + if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid + else if (styles[mid * 2 + 1] < ch) before = mid + 1 + else { type = styles[mid * 2 + 2]; break } + } + let cut = type ? type.indexOf("overlay ") : -1 + return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1) + }, + + getModeAt: function(pos) { + let mode = this.doc.mode + if (!mode.innerMode) return mode + return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode + }, + + getHelper: function(pos, type) { + return this.getHelpers(pos, type)[0] + }, + + getHelpers: function(pos, type) { + let found = [] + if (!helpers.hasOwnProperty(type)) return found + let help = helpers[type], mode = this.getModeAt(pos) + if (typeof mode[type] == "string") { + if (help[mode[type]]) found.push(help[mode[type]]) + } else if (mode[type]) { + for (let i = 0; i < mode[type].length; i++) { + let val = help[mode[type][i]] + if (val) found.push(val) + } + } else if (mode.helperType && help[mode.helperType]) { + found.push(help[mode.helperType]) + } else if (help[mode.name]) { + found.push(help[mode.name]) + } + for (let i = 0; i < help._global.length; i++) { + let cur = help._global[i] + if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) + found.push(cur.val) + } + return found + }, + + getStateAfter: function(line, precise) { + let doc = this.doc + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line) + return getContextBefore(this, line + 1, precise).state + }, + + cursorCoords: function(start, mode) { + let pos, range = this.doc.sel.primary() + if (start == null) pos = range.head + else if (typeof start == "object") pos = clipPos(this.doc, start) + else pos = start ? range.from() : range.to() + return cursorCoords(this, pos, mode || "page") + }, + + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page") + }, + + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page") + return coordsChar(this, coords.left, coords.top) + }, + + lineAtHeight: function(height, mode) { + height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top + return lineAtHeight(this.doc, height + this.display.viewOffset) + }, + heightAtLine: function(line, mode, includeWidgets) { + let end = false, lineObj + if (typeof line == "number") { + let last = this.doc.first + this.doc.size - 1 + if (line < this.doc.first) line = this.doc.first + else if (line > last) { line = last; end = true } + lineObj = getLine(this.doc, line) + } else { + lineObj = line + } + return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page", includeWidgets || end).top + + (end ? this.doc.height - heightAtLine(lineObj) : 0) + }, + + defaultTextHeight: function() { return textHeight(this.display) }, + defaultCharWidth: function() { return charWidth(this.display) }, + + getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}}, + + addWidget: function(pos, node, scroll, vert, horiz) { + let display = this.display + pos = cursorCoords(this, clipPos(this.doc, pos)) + let top = pos.bottom, left = pos.left + node.style.position = "absolute" + node.setAttribute("cm-ignore-events", "true") + this.display.input.setUneditable(node) + display.sizer.appendChild(node) + if (vert == "over") { + top = pos.top + } else if (vert == "above" || vert == "near") { + let vspace = Math.max(display.wrapper.clientHeight, this.doc.height), + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth) + // Default to positioning above (if specified and possible); otherwise default to positioning below + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + top = pos.top - node.offsetHeight + else if (pos.bottom + node.offsetHeight <= vspace) + top = pos.bottom + if (left + node.offsetWidth > hspace) + left = hspace - node.offsetWidth + } + node.style.top = top + "px" + node.style.left = node.style.right = "" + if (horiz == "right") { + left = display.sizer.clientWidth - node.offsetWidth + node.style.right = "0px" + } else { + if (horiz == "left") left = 0 + else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2 + node.style.left = left + "px" + } + if (scroll) + scrollIntoView(this, {left, top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}) + }, + + triggerOnKeyDown: methodOp(onKeyDown), + triggerOnKeyPress: methodOp(onKeyPress), + triggerOnKeyUp: onKeyUp, + triggerOnMouseDown: methodOp(onMouseDown), + + execCommand: function(cmd) { + if (commands.hasOwnProperty(cmd)) + return commands[cmd].call(null, this) + }, + + triggerElectric: methodOp(function(text) { triggerElectric(this, text) }), + + findPosH: function(from, amount, unit, visually) { + let dir = 1 + if (amount < 0) { dir = -1; amount = -amount } + let cur = clipPos(this.doc, from) + for (let i = 0; i < amount; ++i) { + cur = findPosH(this.doc, cur, dir, unit, visually) + if (cur.hitSide) break + } + return cur + }, + + moveH: methodOp(function(dir, unit) { + this.extendSelectionsBy(range => { + if (this.display.shift || this.doc.extend || range.empty()) + return findPosH(this.doc, range.head, dir, unit, this.options.rtlMoveVisually) + else + return dir < 0 ? range.from() : range.to() + }, sel_move) + }), + + deleteH: methodOp(function(dir, unit) { + let sel = this.doc.sel, doc = this.doc + if (sel.somethingSelected()) + doc.replaceSelection("", null, "+delete") + else + deleteNearSelection(this, range => { + let other = findPosH(doc, range.head, dir, unit, false) + return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other} + }) + }), + + findPosV: function(from, amount, unit, goalColumn) { + let dir = 1, x = goalColumn + if (amount < 0) { dir = -1; amount = -amount } + let cur = clipPos(this.doc, from) + for (let i = 0; i < amount; ++i) { + let coords = cursorCoords(this, cur, "div") + if (x == null) x = coords.left + else coords.left = x + cur = findPosV(this, coords, dir, unit) + if (cur.hitSide) break + } + return cur + }, + + moveV: methodOp(function(dir, unit) { + let doc = this.doc, goals = [] + let collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected() + doc.extendSelectionsBy(range => { + if (collapse) + return dir < 0 ? range.from() : range.to() + let headPos = cursorCoords(this, range.head, "div") + if (range.goalColumn != null) headPos.left = range.goalColumn + goals.push(headPos.left) + let pos = findPosV(this, headPos, dir, unit) + if (unit == "page" && range == doc.sel.primary()) + addToScrollTop(this, charCoords(this, pos, "div").top - headPos.top) + return pos + }, sel_move) + if (goals.length) for (let i = 0; i < doc.sel.ranges.length; i++) + doc.sel.ranges[i].goalColumn = goals[i] + }), + + // Find the word at the given position (as returned by coordsChar). + findWordAt: function(pos) { + let doc = this.doc, line = getLine(doc, pos.line).text + let start = pos.ch, end = pos.ch + if (line) { + let helper = this.getHelper(pos, "wordChars") + if ((pos.sticky == "before" || end == line.length) && start) --start; else ++end + let startChar = line.charAt(start) + let check = isWordChar(startChar, helper) + ? ch => isWordChar(ch, helper) + : /\s/.test(startChar) ? ch => /\s/.test(ch) + : ch => (!/\s/.test(ch) && !isWordChar(ch)) + while (start > 0 && check(line.charAt(start - 1))) --start + while (end < line.length && check(line.charAt(end))) ++end + } + return new Range(Pos(pos.line, start), Pos(pos.line, end)) + }, + + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) return + if (this.state.overwrite = !this.state.overwrite) + addClass(this.display.cursorDiv, "CodeMirror-overwrite") + else + rmClass(this.display.cursorDiv, "CodeMirror-overwrite") + + signal(this, "overwriteToggle", this, this.state.overwrite) + }, + hasFocus: function() { return this.display.input.getField() == activeElt() }, + isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) }, + + scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y) }), + getScrollInfo: function() { + let scroller = this.display.scroller + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, + width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, + clientHeight: displayHeight(this), clientWidth: displayWidth(this)} + }, + + scrollIntoView: methodOp(function(range, margin) { + if (range == null) { + range = {from: this.doc.sel.primary().head, to: null} + if (margin == null) margin = this.options.cursorScrollMargin + } else if (typeof range == "number") { + range = {from: Pos(range, 0), to: null} + } else if (range.from == null) { + range = {from: range, to: null} + } + if (!range.to) range.to = range.from + range.margin = margin || 0 + + if (range.from.line != null) { + scrollToRange(this, range) + } else { + scrollToCoordsRange(this, range.from, range.to, range.margin) + } + }), + + setSize: methodOp(function(width, height) { + let interpret = val => typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val + if (width != null) this.display.wrapper.style.width = interpret(width) + if (height != null) this.display.wrapper.style.height = interpret(height) + if (this.options.lineWrapping) clearLineMeasurementCache(this) + let lineNo = this.display.viewFrom + this.doc.iter(lineNo, this.display.viewTo, line => { + if (line.widgets) for (let i = 0; i < line.widgets.length; i++) + if (line.widgets[i].noHScroll) { regLineChange(this, lineNo, "widget"); break } + ++lineNo + }) + this.curOp.forceUpdate = true + signal(this, "refresh", this) + }), + + operation: function(f){return runInOp(this, f)}, + startOperation: function(){return startOperation(this)}, + endOperation: function(){return endOperation(this)}, + + refresh: methodOp(function() { + let oldHeight = this.display.cachedTextHeight + regChange(this) + this.curOp.forceUpdate = true + clearCaches(this) + scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop) + updateGutterSpace(this) + if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) + estimateLineHeights(this) + signal(this, "refresh", this) + }), + + swapDoc: methodOp(function(doc) { + let old = this.doc + old.cm = null + attachDoc(this, doc) + clearCaches(this) + this.display.input.reset() + scrollToCoords(this, doc.scrollLeft, doc.scrollTop) + this.curOp.forceScroll = true + signalLater(this, "swapDoc", this, old) + return old + }), + + getInputField: function(){return this.display.input.getField()}, + getWrapperElement: function(){return this.display.wrapper}, + getScrollerElement: function(){return this.display.scroller}, + getGutterElement: function(){return this.display.gutters} + } + eventMixin(CodeMirror) + + CodeMirror.registerHelper = function(type, name, value) { + if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []} + helpers[type][name] = value + } + CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { + CodeMirror.registerHelper(type, name, value) + helpers[type]._global.push({pred: predicate, val: value}) + } +} + +// Used for horizontal relative motion. Dir is -1 or 1 (left or +// right), unit can be "char", "column" (like char, but doesn't +// cross line boundaries), "word" (across next word), or "group" (to +// the start of next group of word or non-word-non-whitespace +// chars). The visually param controls whether, in right-to-left +// text, direction 1 means to move towards the next index in the +// string, or towards the character to the right of the current +// position. The resulting position will have a hitSide=true +// property if it reached the end of the document. +function findPosH(doc, pos, dir, unit, visually) { + let oldPos = pos + let origDir = dir + let lineObj = getLine(doc, pos.line) + function findNextLine() { + let l = pos.line + dir + if (l < doc.first || l >= doc.first + doc.size) return false + pos = new Pos(l, pos.ch, pos.sticky) + return lineObj = getLine(doc, l) + } + function moveOnce(boundToLine) { + let next + if (visually) { + next = moveVisually(doc.cm, lineObj, pos, dir) + } else { + next = moveLogically(lineObj, pos, dir) + } + if (next == null) { + if (!boundToLine && findNextLine()) + pos = endOfLine(visually, doc.cm, lineObj, pos.line, dir) + else + return false + } else { + pos = next + } + return true + } + + if (unit == "char") { + moveOnce() + } else if (unit == "column") { + moveOnce(true) + } else if (unit == "word" || unit == "group") { + let sawType = null, group = unit == "group" + let helper = doc.cm && doc.cm.getHelper(pos, "wordChars") + for (let first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) break + let cur = lineObj.text.charAt(pos.ch) || "\n" + let type = isWordChar(cur, helper) ? "w" + : group && cur == "\n" ? "n" + : !group || /\s/.test(cur) ? null + : "p" + if (group && !first && !type) type = "s" + if (sawType && sawType != type) { + if (dir < 0) {dir = 1; moveOnce(); pos.sticky = "after"} + break + } + + if (type) sawType = type + if (dir > 0 && !moveOnce(!first)) break + } + } + let result = skipAtomic(doc, pos, oldPos, origDir, true) + if (equalCursorPos(oldPos, result)) result.hitSide = true + return result +} + +// For relative vertical movement. Dir may be -1 or 1. Unit can be +// "page" or "line". The resulting position will have a hitSide=true +// property if it reached the end of the document. +function findPosV(cm, pos, dir, unit) { + let doc = cm.doc, x = pos.left, y + if (unit == "page") { + let pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight) + let moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3) + y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount + + } else if (unit == "line") { + y = dir > 0 ? pos.bottom + 3 : pos.top - 3 + } + let target + for (;;) { + target = coordsChar(cm, x, y) + if (!target.outside) break + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break } + y += dir * 5 + } + return target +} diff --git a/global/codemirror/src/edit/mouse_events.js b/global/codemirror/src/edit/mouse_events.js new file mode 100644 index 00000000..57159e3a --- /dev/null +++ b/global/codemirror/src/edit/mouse_events.js @@ -0,0 +1,407 @@ +import { delayBlurEvent, ensureFocus } from "../display/focus" +import { operation } from "../display/operations" +import { visibleLines } from "../display/update_lines" +import { clipPos, cmp, maxPos, minPos, Pos } from "../line/pos" +import { getLine, lineAtHeight } from "../line/utils_line" +import { posFromMouse } from "../measurement/position_measurement" +import { eventInWidget } from "../measurement/widgets" +import { normalizeSelection, Range, Selection } from "../model/selection" +import { extendRange, extendSelection, replaceOneSelection, setSelection } from "../model/selection_updates" +import { captureRightClick, chromeOS, ie, ie_version, mac, webkit } from "../util/browser" +import { getOrder, getBidiPartAt } from "../util/bidi" +import { activeElt } from "../util/dom" +import { e_button, e_defaultPrevented, e_preventDefault, e_target, hasHandler, off, on, signal, signalDOMEvent } from "../util/event" +import { dragAndDrop } from "../util/feature_detection" +import { bind, countColumn, findColumn, sel_mouse } from "../util/misc" +import { addModifierNames } from "../input/keymap" +import { Pass } from "../util/misc" + +import { dispatchKey } from "./key_events" +import { commands } from "./commands" + +const DOUBLECLICK_DELAY = 400 + +class PastClick { + constructor(time, pos, button) { + this.time = time + this.pos = pos + this.button = button + } + + compare(time, pos, button) { + return this.time + DOUBLECLICK_DELAY > time && + cmp(pos, this.pos) == 0 && button == this.button + } +} + +let lastClick, lastDoubleClick +function clickRepeat(pos, button) { + let now = +new Date + if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) { + lastClick = lastDoubleClick = null + return "triple" + } else if (lastClick && lastClick.compare(now, pos, button)) { + lastDoubleClick = new PastClick(now, pos, button) + lastClick = null + return "double" + } else { + lastClick = new PastClick(now, pos, button) + lastDoubleClick = null + return "single" + } +} + +// A mouse down can be a single click, double click, triple click, +// start of selection drag, start of text drag, new cursor +// (ctrl-click), rectangle drag (alt-drag), or xwin +// middle-click-paste. Or it might be a click on something we should +// not interfere with, such as a scrollbar or widget. +export function onMouseDown(e) { + let cm = this, display = cm.display + if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) return + display.input.ensurePolled() + display.shift = e.shiftKey + + if (eventInWidget(display, e)) { + if (!webkit) { + // Briefly turn off draggability, to allow widgets to do + // normal dragging things. + display.scroller.draggable = false + setTimeout(() => display.scroller.draggable = true, 100) + } + return + } + if (clickInGutter(cm, e)) return + let pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : "single" + window.focus() + + // #3261: make sure, that we're not starting a second selection + if (button == 1 && cm.state.selectingText) + cm.state.selectingText(e) + + if (pos && handleMappedButton(cm, button, pos, repeat, e)) return + + if (button == 1) { + if (pos) leftButtonDown(cm, pos, repeat, e) + else if (e_target(e) == display.scroller) e_preventDefault(e) + } else if (button == 2) { + if (pos) extendSelection(cm.doc, pos) + setTimeout(() => display.input.focus(), 20) + } else if (button == 3) { + if (captureRightClick) onContextMenu(cm, e) + else delayBlurEvent(cm) + } +} + +function handleMappedButton(cm, button, pos, repeat, event) { + let name = "Click" + if (repeat == "double") name = "Double" + name + else if (repeat == "triple") name = "Triple" + name + name = (button == 1 ? "Left" : button == 2 ? "Middle" : "Right") + name + + return dispatchKey(cm, addModifierNames(name, event), event, bound => { + if (typeof bound == "string") bound = commands[bound] + if (!bound) return false + let done = false + try { + if (cm.isReadOnly()) cm.state.suppressEdits = true + done = bound(cm, pos) != Pass + } finally { + cm.state.suppressEdits = false + } + return done + }) +} + +function configureMouse(cm, repeat, event) { + let option = cm.getOption("configureMouse") + let value = option ? option(cm, repeat, event) : {} + if (value.unit == null) { + let rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey + value.unit = rect ? "rectangle" : repeat == "single" ? "char" : repeat == "double" ? "word" : "line" + } + if (value.extend == null || cm.doc.extend) value.extend = cm.doc.extend || event.shiftKey + if (value.addNew == null) value.addNew = mac ? event.metaKey : event.ctrlKey + if (value.moveOnDrag == null) value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey) + return value +} + +function leftButtonDown(cm, pos, repeat, event) { + if (ie) setTimeout(bind(ensureFocus, cm), 0) + else cm.curOp.focus = activeElt() + + let behavior = configureMouse(cm, repeat, event) + + let sel = cm.doc.sel, contained + if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && + repeat == "single" && (contained = sel.contains(pos)) > -1 && + (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) && + (cmp(contained.to(), pos) > 0 || pos.xRel < 0)) + leftButtonStartDrag(cm, event, pos, behavior) + else + leftButtonSelect(cm, event, pos, behavior) +} + +// Start a text drag. When it ends, see if any dragging actually +// happen, and treat as a click if it didn't. +function leftButtonStartDrag(cm, event, pos, behavior) { + let display = cm.display, moved = false + let dragEnd = operation(cm, e => { + if (webkit) display.scroller.draggable = false + cm.state.draggingText = false + off(document, "mouseup", dragEnd) + off(document, "mousemove", mouseMove) + off(display.scroller, "dragstart", dragStart) + off(display.scroller, "drop", dragEnd) + if (!moved) { + e_preventDefault(e) + if (!behavior.addNew) + extendSelection(cm.doc, pos, null, null, behavior.extend) + // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) + if (webkit || ie && ie_version == 9) + setTimeout(() => {document.body.focus(); display.input.focus()}, 20) + else + display.input.focus() + } + }) + let mouseMove = function(e2) { + moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10 + } + let dragStart = () => moved = true + // Let the drag handler handle this. + if (webkit) display.scroller.draggable = true + cm.state.draggingText = dragEnd + dragEnd.copy = !behavior.moveOnDrag + // IE's approach to draggable + if (display.scroller.dragDrop) display.scroller.dragDrop() + on(document, "mouseup", dragEnd) + on(document, "mousemove", mouseMove) + on(display.scroller, "dragstart", dragStart) + on(display.scroller, "drop", dragEnd) + + delayBlurEvent(cm) + setTimeout(() => display.input.focus(), 20) +} + +function rangeForUnit(cm, pos, unit) { + if (unit == "char") return new Range(pos, pos) + if (unit == "word") return cm.findWordAt(pos) + if (unit == "line") return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) + let result = unit(cm, pos) + return new Range(result.from, result.to) +} + +// Normal selection, as opposed to text dragging. +function leftButtonSelect(cm, event, start, behavior) { + let display = cm.display, doc = cm.doc + e_preventDefault(event) + + let ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges + if (behavior.addNew && !behavior.extend) { + ourIndex = doc.sel.contains(start) + if (ourIndex > -1) + ourRange = ranges[ourIndex] + else + ourRange = new Range(start, start) + } else { + ourRange = doc.sel.primary() + ourIndex = doc.sel.primIndex + } + + if (behavior.unit == "rectangle") { + if (!behavior.addNew) ourRange = new Range(start, start) + start = posFromMouse(cm, event, true, true) + ourIndex = -1 + } else { + let range = rangeForUnit(cm, start, behavior.unit) + if (behavior.extend) + ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend) + else + ourRange = range + } + + if (!behavior.addNew) { + ourIndex = 0 + setSelection(doc, new Selection([ourRange], 0), sel_mouse) + startSel = doc.sel + } else if (ourIndex == -1) { + ourIndex = ranges.length + setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex), + {scroll: false, origin: "*mouse"}) + } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) { + setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), + {scroll: false, origin: "*mouse"}) + startSel = doc.sel + } else { + replaceOneSelection(doc, ourIndex, ourRange, sel_mouse) + } + + let lastPos = start + function extendTo(pos) { + if (cmp(lastPos, pos) == 0) return + lastPos = pos + + if (behavior.unit == "rectangle") { + let ranges = [], tabSize = cm.options.tabSize + let startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize) + let posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize) + let left = Math.min(startCol, posCol), right = Math.max(startCol, posCol) + for (let line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); + line <= end; line++) { + let text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize) + if (left == right) + ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))) + else if (text.length > leftPos) + ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))) + } + if (!ranges.length) ranges.push(new Range(start, start)) + setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), + {origin: "*mouse", scroll: false}) + cm.scrollIntoView(pos) + } else { + let oldRange = ourRange + let range = rangeForUnit(cm, pos, behavior.unit) + let anchor = oldRange.anchor, head + if (cmp(range.anchor, anchor) > 0) { + head = range.head + anchor = minPos(oldRange.from(), range.anchor) + } else { + head = range.anchor + anchor = maxPos(oldRange.to(), range.head) + } + let ranges = startSel.ranges.slice(0) + ranges[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head)) + setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse) + } + } + + let editorSize = display.wrapper.getBoundingClientRect() + // Used to ensure timeout re-tries don't fire when another extend + // happened in the meantime (clearTimeout isn't reliable -- at + // least on Chrome, the timeouts still happen even when cleared, + // if the clear happens after their scheduled firing time). + let counter = 0 + + function extend(e) { + let curCount = ++counter + let cur = posFromMouse(cm, e, true, behavior.unit == "rectangle") + if (!cur) return + if (cmp(cur, lastPos) != 0) { + cm.curOp.focus = activeElt() + extendTo(cur) + let visible = visibleLines(display, doc) + if (cur.line >= visible.to || cur.line < visible.from) + setTimeout(operation(cm, () => {if (counter == curCount) extend(e)}), 150) + } else { + let outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0 + if (outside) setTimeout(operation(cm, () => { + if (counter != curCount) return + display.scroller.scrollTop += outside + extend(e) + }), 50) + } + } + + function done(e) { + cm.state.selectingText = false + counter = Infinity + e_preventDefault(e) + display.input.focus() + off(document, "mousemove", move) + off(document, "mouseup", up) + doc.history.lastSelOrigin = null + } + + let move = operation(cm, e => { + if (!e_button(e)) done(e) + else extend(e) + }) + let up = operation(cm, done) + cm.state.selectingText = up + on(document, "mousemove", move) + on(document, "mouseup", up) +} + +// Used when mouse-selecting to adjust the anchor to the proper side +// of a bidi jump depending on the visual position of the head. +function bidiSimplify(cm, range) { + let {anchor, head} = range, anchorLine = getLine(cm.doc, anchor.line) + if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) return range + let order = getOrder(anchorLine) + if (!order) return range + let index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index] + if (part.from != anchor.ch && part.to != anchor.ch) return range + let boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1) + if (boundary == 0 || boundary == order.length) return range + + // Compute the relative visual position of the head compared to the + // anchor (<0 is to the left, >0 to the right) + let leftSide + if (head.line != anchor.line) { + leftSide = (head.line - anchor.line) * (cm.doc.direction == "ltr" ? 1 : -1) > 0 + } else { + let headIndex = getBidiPartAt(order, head.ch, head.sticky) + let dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1) + if (headIndex == boundary - 1 || headIndex == boundary) + leftSide = dir < 0 + else + leftSide = dir > 0 + } + + let usePart = order[boundary + (leftSide ? -1 : 0)] + let from = leftSide == (usePart.level == 1) + let ch = from ? usePart.from : usePart.to, sticky = from ? "after" : "before" + return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head) +} + + +// Determines whether an event happened in the gutter, and fires the +// handlers for the corresponding event. +function gutterEvent(cm, e, type, prevent) { + let mX, mY + if (e.touches) { + mX = e.touches[0].clientX + mY = e.touches[0].clientY + } else { + try { mX = e.clientX; mY = e.clientY } + catch(e) { return false } + } + if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false + if (prevent) e_preventDefault(e) + + let display = cm.display + let lineBox = display.lineDiv.getBoundingClientRect() + + if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e) + mY -= lineBox.top - display.viewOffset + + for (let i = 0; i < cm.options.gutters.length; ++i) { + let g = display.gutters.childNodes[i] + if (g && g.getBoundingClientRect().right >= mX) { + let line = lineAtHeight(cm.doc, mY) + let gutter = cm.options.gutters[i] + signal(cm, type, cm, line, gutter, e) + return e_defaultPrevented(e) + } + } +} + +export function clickInGutter(cm, e) { + return gutterEvent(cm, e, "gutterClick", true) +} + +// CONTEXT MENU HANDLING + +// To make the context menu work, we need to briefly unhide the +// textarea (making it as unobtrusive as possible) to let the +// right-click take effect on it. +export function onContextMenu(cm, e) { + if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) return + if (signalDOMEvent(cm, e, "contextmenu")) return + cm.display.input.onContextMenu(e) +} + +function contextMenuInGutter(cm, e) { + if (!hasHandler(cm, "gutterContextMenu")) return false + return gutterEvent(cm, e, "gutterContextMenu", false) +} diff --git a/global/codemirror/src/edit/options.js b/global/codemirror/src/edit/options.js new file mode 100644 index 00000000..0601a83c --- /dev/null +++ b/global/codemirror/src/edit/options.js @@ -0,0 +1,190 @@ +import { onBlur } from "../display/focus" +import { setGuttersForLineNumbers, updateGutters } from "../display/gutters" +import { alignHorizontally } from "../display/line_numbers" +import { loadMode, resetModeState } from "../display/mode_state" +import { initScrollbars, updateScrollbars } from "../display/scrollbars" +import { updateSelection } from "../display/selection" +import { regChange } from "../display/view_tracking" +import { getKeyMap } from "../input/keymap" +import { defaultSpecialCharPlaceholder } from "../line/line_data" +import { Pos } from "../line/pos" +import { findMaxLine } from "../line/spans" +import { clearCaches, compensateForHScroll, estimateLineHeights } from "../measurement/position_measurement" +import { replaceRange } from "../model/changes" +import { mobile, windows } from "../util/browser" +import { addClass, rmClass } from "../util/dom" +import { off, on } from "../util/event" + +import { themeChanged } from "./utils" + +export let Init = {toString: function(){return "CodeMirror.Init"}} + +export let defaults = {} +export let optionHandlers = {} + +export function defineOptions(CodeMirror) { + let optionHandlers = CodeMirror.optionHandlers + + function option(name, deflt, handle, notOnInit) { + CodeMirror.defaults[name] = deflt + if (handle) optionHandlers[name] = + notOnInit ? (cm, val, old) => {if (old != Init) handle(cm, val, old)} : handle + } + + CodeMirror.defineOption = option + + // Passed to option handlers when there is no old value. + CodeMirror.Init = Init + + // These two are, on init, called from the constructor because they + // have to be initialized before the editor can start at all. + option("value", "", (cm, val) => cm.setValue(val), true) + option("mode", null, (cm, val) => { + cm.doc.modeOption = val + loadMode(cm) + }, true) + + option("indentUnit", 2, loadMode, true) + option("indentWithTabs", false) + option("smartIndent", true) + option("tabSize", 4, cm => { + resetModeState(cm) + clearCaches(cm) + regChange(cm) + }, true) + option("lineSeparator", null, (cm, val) => { + cm.doc.lineSep = val + if (!val) return + let newBreaks = [], lineNo = cm.doc.first + cm.doc.iter(line => { + for (let pos = 0;;) { + let found = line.text.indexOf(val, pos) + if (found == -1) break + pos = found + val.length + newBreaks.push(Pos(lineNo, found)) + } + lineNo++ + }) + for (let i = newBreaks.length - 1; i >= 0; i--) + replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)) + }) + option("specialChars", /[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff]/g, (cm, val, old) => { + cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g") + if (old != Init) cm.refresh() + }) + option("specialCharPlaceholder", defaultSpecialCharPlaceholder, cm => cm.refresh(), true) + option("electricChars", true) + option("inputStyle", mobile ? "contenteditable" : "textarea", () => { + throw new Error("inputStyle can not (yet) be changed in a running editor") // FIXME + }, true) + option("spellcheck", false, (cm, val) => cm.getInputField().spellcheck = val, true) + option("rtlMoveVisually", !windows) + option("wholeLineUpdateBefore", true) + + option("theme", "default", cm => { + themeChanged(cm) + guttersChanged(cm) + }, true) + option("keyMap", "default", (cm, val, old) => { + let next = getKeyMap(val) + let prev = old != Init && getKeyMap(old) + if (prev && prev.detach) prev.detach(cm, next) + if (next.attach) next.attach(cm, prev || null) + }) + option("extraKeys", null) + option("configureMouse", null) + + option("lineWrapping", false, wrappingChanged, true) + option("gutters", [], cm => { + setGuttersForLineNumbers(cm.options) + guttersChanged(cm) + }, true) + option("fixedGutter", true, (cm, val) => { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0" + cm.refresh() + }, true) + option("coverGutterNextToScrollbar", false, cm => updateScrollbars(cm), true) + option("scrollbarStyle", "native", cm => { + initScrollbars(cm) + updateScrollbars(cm) + cm.display.scrollbars.setScrollTop(cm.doc.scrollTop) + cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft) + }, true) + option("lineNumbers", false, cm => { + setGuttersForLineNumbers(cm.options) + guttersChanged(cm) + }, true) + option("firstLineNumber", 1, guttersChanged, true) + option("lineNumberFormatter", integer => integer, guttersChanged, true) + option("showCursorWhenSelecting", false, updateSelection, true) + + option("resetSelectionOnContextMenu", true) + option("lineWiseCopyCut", true) + option("pasteLinesPerSelection", true) + + option("readOnly", false, (cm, val) => { + if (val == "nocursor") { + onBlur(cm) + cm.display.input.blur() + } + cm.display.input.readOnlyChanged(val) + }) + option("disableInput", false, (cm, val) => {if (!val) cm.display.input.reset()}, true) + option("dragDrop", true, dragDropChanged) + option("allowDropFileTypes", null) + + option("cursorBlinkRate", 530) + option("cursorScrollMargin", 0) + option("cursorHeight", 1, updateSelection, true) + option("singleCursorHeightPerLine", true, updateSelection, true) + option("workTime", 100) + option("workDelay", 100) + option("flattenSpans", true, resetModeState, true) + option("addModeClass", false, resetModeState, true) + option("pollInterval", 100) + option("undoDepth", 200, (cm, val) => cm.doc.history.undoDepth = val) + option("historyEventDelay", 1250) + option("viewportMargin", 10, cm => cm.refresh(), true) + option("maxHighlightLength", 10000, resetModeState, true) + option("moveInputWithCursor", true, (cm, val) => { + if (!val) cm.display.input.resetPosition() + }) + + option("tabindex", null, (cm, val) => cm.display.input.getField().tabIndex = val || "") + option("autofocus", null) + option("direction", "ltr", (cm, val) => cm.doc.setDirection(val), true) +} + +function guttersChanged(cm) { + updateGutters(cm) + regChange(cm) + alignHorizontally(cm) +} + +function dragDropChanged(cm, value, old) { + let wasOn = old && old != Init + if (!value != !wasOn) { + let funcs = cm.display.dragFunctions + let toggle = value ? on : off + toggle(cm.display.scroller, "dragstart", funcs.start) + toggle(cm.display.scroller, "dragenter", funcs.enter) + toggle(cm.display.scroller, "dragover", funcs.over) + toggle(cm.display.scroller, "dragleave", funcs.leave) + toggle(cm.display.scroller, "drop", funcs.drop) + } +} + +function wrappingChanged(cm) { + if (cm.options.lineWrapping) { + addClass(cm.display.wrapper, "CodeMirror-wrap") + cm.display.sizer.style.minWidth = "" + cm.display.sizerWidth = null + } else { + rmClass(cm.display.wrapper, "CodeMirror-wrap") + findMaxLine(cm) + } + estimateLineHeights(cm) + regChange(cm) + clearCaches(cm) + setTimeout(() => updateScrollbars(cm), 100) +} diff --git a/global/codemirror/src/edit/utils.js b/global/codemirror/src/edit/utils.js new file mode 100644 index 00000000..61f79557 --- /dev/null +++ b/global/codemirror/src/edit/utils.js @@ -0,0 +1,7 @@ +import { clearCaches } from "../measurement/position_measurement" + +export function themeChanged(cm) { + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-") + clearCaches(cm) +} diff --git a/global/codemirror/src/input/ContentEditableInput.js b/global/codemirror/src/input/ContentEditableInput.js new file mode 100644 index 00000000..67de3b18 --- /dev/null +++ b/global/codemirror/src/input/ContentEditableInput.js @@ -0,0 +1,517 @@ +import { operation, runInOp } from "../display/operations" +import { prepareSelection } from "../display/selection" +import { regChange } from "../display/view_tracking" +import { applyTextInput, copyableRanges, disableBrowserMagic, handlePaste, hiddenTextarea, lastCopied, setLastCopied } from "./input" +import { cmp, maxPos, minPos, Pos } from "../line/pos" +import { getBetween, getLine, lineNo } from "../line/utils_line" +import { findViewForLine, findViewIndex, mapFromLineView, nodeAndOffsetInLineMap } from "../measurement/position_measurement" +import { replaceRange } from "../model/changes" +import { simpleSelection } from "../model/selection" +import { setSelection } from "../model/selection_updates" +import { getBidiPartAt, getOrder } from "../util/bidi" +import { android, chrome, gecko, ie_version } from "../util/browser" +import { contains, range, removeChildrenAndAdd, selectInput } from "../util/dom" +import { on, signalDOMEvent } from "../util/event" +import { Delayed, lst, sel_dontScroll } from "../util/misc" + +// CONTENTEDITABLE INPUT STYLE + +export default class ContentEditableInput { + constructor(cm) { + this.cm = cm + this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null + this.polling = new Delayed() + this.composing = null + this.gracePeriod = false + this.readDOMTimeout = null + } + + init(display) { + let input = this, cm = input.cm + let div = input.div = display.lineDiv + disableBrowserMagic(div, cm.options.spellcheck) + + on(div, "paste", e => { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return + // IE doesn't fire input events, so we schedule a read for the pasted content in this way + if (ie_version <= 11) setTimeout(operation(cm, () => this.updateFromDOM()), 20) + }) + + on(div, "compositionstart", e => { + this.composing = {data: e.data, done: false} + }) + on(div, "compositionupdate", e => { + if (!this.composing) this.composing = {data: e.data, done: false} + }) + on(div, "compositionend", e => { + if (this.composing) { + if (e.data != this.composing.data) this.readFromDOMSoon() + this.composing.done = true + } + }) + + on(div, "touchstart", () => input.forceCompositionEnd()) + + on(div, "input", () => { + if (!this.composing) this.readFromDOMSoon() + }) + + function onCopyCut(e) { + if (signalDOMEvent(cm, e)) return + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}) + if (e.type == "cut") cm.replaceSelection("", null, "cut") + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + let ranges = copyableRanges(cm) + setLastCopied({lineWise: true, text: ranges.text}) + if (e.type == "cut") { + cm.operation(() => { + cm.setSelections(ranges.ranges, 0, sel_dontScroll) + cm.replaceSelection("", null, "cut") + }) + } + } + if (e.clipboardData) { + e.clipboardData.clearData() + let content = lastCopied.text.join("\n") + // iOS exposes the clipboard API, but seems to discard content inserted into it + e.clipboardData.setData("Text", content) + if (e.clipboardData.getData("Text") == content) { + e.preventDefault() + return + } + } + // Old-fashioned briefly-focus-a-textarea hack + let kludge = hiddenTextarea(), te = kludge.firstChild + cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild) + te.value = lastCopied.text.join("\n") + let hadFocus = document.activeElement + selectInput(te) + setTimeout(() => { + cm.display.lineSpace.removeChild(kludge) + hadFocus.focus() + if (hadFocus == div) input.showPrimarySelection() + }, 50) + } + on(div, "copy", onCopyCut) + on(div, "cut", onCopyCut) + } + + prepareSelection() { + let result = prepareSelection(this.cm, false) + result.focus = this.cm.state.focused + return result + } + + showSelection(info, takeFocus) { + if (!info || !this.cm.display.view.length) return + if (info.focus || takeFocus) this.showPrimarySelection() + this.showMultipleSelections(info) + } + + showPrimarySelection() { + let sel = window.getSelection(), cm = this.cm, prim = cm.doc.sel.primary() + let from = prim.from(), to = prim.to() + + if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) { + sel.removeAllRanges() + return + } + + let curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset) + let curFocus = domToPos(cm, sel.focusNode, sel.focusOffset) + if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && + cmp(minPos(curAnchor, curFocus), from) == 0 && + cmp(maxPos(curAnchor, curFocus), to) == 0) + return + + let view = cm.display.view + let start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) || + {node: view[0].measure.map[2], offset: 0} + let end = to.line < cm.display.viewTo && posToDOM(cm, to) + if (!end) { + let measure = view[view.length - 1].measure + let map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map + end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]} + } + + if (!start || !end) { + sel.removeAllRanges() + return + } + + let old = sel.rangeCount && sel.getRangeAt(0), rng + try { rng = range(start.node, start.offset, end.offset, end.node) } + catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible + if (rng) { + if (!gecko && cm.state.focused) { + sel.collapse(start.node, start.offset) + if (!rng.collapsed) { + sel.removeAllRanges() + sel.addRange(rng) + } + } else { + sel.removeAllRanges() + sel.addRange(rng) + } + if (old && sel.anchorNode == null) sel.addRange(old) + else if (gecko) this.startGracePeriod() + } + this.rememberSelection() + } + + startGracePeriod() { + clearTimeout(this.gracePeriod) + this.gracePeriod = setTimeout(() => { + this.gracePeriod = false + if (this.selectionChanged()) + this.cm.operation(() => this.cm.curOp.selectionChanged = true) + }, 20) + } + + showMultipleSelections(info) { + removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors) + removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection) + } + + rememberSelection() { + let sel = window.getSelection() + this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset + this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset + } + + selectionInEditor() { + let sel = window.getSelection() + if (!sel.rangeCount) return false + let node = sel.getRangeAt(0).commonAncestorContainer + return contains(this.div, node) + } + + focus() { + if (this.cm.options.readOnly != "nocursor") { + if (!this.selectionInEditor()) + this.showSelection(this.prepareSelection(), true) + this.div.focus() + } + } + blur() { this.div.blur() } + getField() { return this.div } + + supportsTouch() { return true } + + receivedFocus() { + let input = this + if (this.selectionInEditor()) + this.pollSelection() + else + runInOp(this.cm, () => input.cm.curOp.selectionChanged = true) + + function poll() { + if (input.cm.state.focused) { + input.pollSelection() + input.polling.set(input.cm.options.pollInterval, poll) + } + } + this.polling.set(this.cm.options.pollInterval, poll) + } + + selectionChanged() { + let sel = window.getSelection() + return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || + sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset + } + + pollSelection() { + if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) return + let sel = window.getSelection(), cm = this.cm + // On Android Chrome (version 56, at least), backspacing into an + // uneditable block element will put the cursor in that element, + // and then, because it's not editable, hide the virtual keyboard. + // Because Android doesn't allow us to actually detect backspace + // presses in a sane way, this code checks for when that happens + // and simulates a backspace press in this case. + if (android && chrome && this.cm.options.gutters.length && isInGutter(sel.anchorNode)) { + this.cm.triggerOnKeyDown({type: "keydown", keyCode: 8, preventDefault: Math.abs}) + this.blur() + this.focus() + return + } + if (this.composing) return + this.rememberSelection() + let anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset) + let head = domToPos(cm, sel.focusNode, sel.focusOffset) + if (anchor && head) runInOp(cm, () => { + setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll) + if (anchor.bad || head.bad) cm.curOp.selectionChanged = true + }) + } + + pollContent() { + if (this.readDOMTimeout != null) { + clearTimeout(this.readDOMTimeout) + this.readDOMTimeout = null + } + + let cm = this.cm, display = cm.display, sel = cm.doc.sel.primary() + let from = sel.from(), to = sel.to() + if (from.ch == 0 && from.line > cm.firstLine()) + from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length) + if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine()) + to = Pos(to.line + 1, 0) + if (from.line < display.viewFrom || to.line > display.viewTo - 1) return false + + let fromIndex, fromLine, fromNode + if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { + fromLine = lineNo(display.view[0].line) + fromNode = display.view[0].node + } else { + fromLine = lineNo(display.view[fromIndex].line) + fromNode = display.view[fromIndex - 1].node.nextSibling + } + let toIndex = findViewIndex(cm, to.line) + let toLine, toNode + if (toIndex == display.view.length - 1) { + toLine = display.viewTo - 1 + toNode = display.lineDiv.lastChild + } else { + toLine = lineNo(display.view[toIndex + 1].line) - 1 + toNode = display.view[toIndex + 1].node.previousSibling + } + + if (!fromNode) return false + let newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)) + let oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)) + while (newText.length > 1 && oldText.length > 1) { + if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine-- } + else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++ } + else break + } + + let cutFront = 0, cutEnd = 0 + let newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length) + while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) + ++cutFront + let newBot = lst(newText), oldBot = lst(oldText) + let maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), + oldBot.length - (oldText.length == 1 ? cutFront : 0)) + while (cutEnd < maxCutEnd && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) + ++cutEnd + // Try to move start of change to start of selection if ambiguous + if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) { + while (cutFront && cutFront > from.ch && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) { + cutFront-- + cutEnd++ + } + } + + newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\u200b+/, "") + newText[0] = newText[0].slice(cutFront).replace(/\u200b+$/, "") + + let chFrom = Pos(fromLine, cutFront) + let chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0) + if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { + replaceRange(cm.doc, newText, chFrom, chTo, "+input") + return true + } + } + + ensurePolled() { + this.forceCompositionEnd() + } + reset() { + this.forceCompositionEnd() + } + forceCompositionEnd() { + if (!this.composing) return + clearTimeout(this.readDOMTimeout) + this.composing = null + this.updateFromDOM() + this.div.blur() + this.div.focus() + } + readFromDOMSoon() { + if (this.readDOMTimeout != null) return + this.readDOMTimeout = setTimeout(() => { + this.readDOMTimeout = null + if (this.composing) { + if (this.composing.done) this.composing = null + else return + } + this.updateFromDOM() + }, 80) + } + + updateFromDOM() { + if (this.cm.isReadOnly() || !this.pollContent()) + runInOp(this.cm, () => regChange(this.cm)) + } + + setUneditable(node) { + node.contentEditable = "false" + } + + onKeyPress(e) { + if (e.charCode == 0) return + e.preventDefault() + if (!this.cm.isReadOnly()) + operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0) + } + + readOnlyChanged(val) { + this.div.contentEditable = String(val != "nocursor") + } + + onContextMenu() {} + resetPosition() {} +} + +ContentEditableInput.prototype.needsContentAttribute = true + +function posToDOM(cm, pos) { + let view = findViewForLine(cm, pos.line) + if (!view || view.hidden) return null + let line = getLine(cm.doc, pos.line) + let info = mapFromLineView(view, line, pos.line) + + let order = getOrder(line, cm.doc.direction), side = "left" + if (order) { + let partPos = getBidiPartAt(order, pos.ch) + side = partPos % 2 ? "right" : "left" + } + let result = nodeAndOffsetInLineMap(info.map, pos.ch, side) + result.offset = result.collapse == "right" ? result.end : result.start + return result +} + +function isInGutter(node) { + for (let scan = node; scan; scan = scan.parentNode) + if (/CodeMirror-gutter-wrapper/.test(scan.className)) return true + return false +} + +function badPos(pos, bad) { if (bad) pos.bad = true; return pos } + +function domTextBetween(cm, from, to, fromLine, toLine) { + let text = "", closing = false, lineSep = cm.doc.lineSeparator() + function recognizeMarker(id) { return marker => marker.id == id } + function close() { + if (closing) { + text += lineSep + closing = false + } + } + function addText(str) { + if (str) { + close() + text += str + } + } + function walk(node) { + if (node.nodeType == 1) { + let cmText = node.getAttribute("cm-text") + if (cmText != null) { + addText(cmText || node.textContent.replace(/\u200b/g, "")) + return + } + let markerID = node.getAttribute("cm-marker"), range + if (markerID) { + let found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)) + if (found.length && (range = found[0].find(0))) + addText(getBetween(cm.doc, range.from, range.to).join(lineSep)) + return + } + if (node.getAttribute("contenteditable") == "false") return + let isBlock = /^(pre|div|p)$/i.test(node.nodeName) + if (isBlock) close() + for (let i = 0; i < node.childNodes.length; i++) + walk(node.childNodes[i]) + if (isBlock) closing = true + } else if (node.nodeType == 3) { + addText(node.nodeValue) + } + } + for (;;) { + walk(from) + if (from == to) break + from = from.nextSibling + } + return text +} + +function domToPos(cm, node, offset) { + let lineNode + if (node == cm.display.lineDiv) { + lineNode = cm.display.lineDiv.childNodes[offset] + if (!lineNode) return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) + node = null; offset = 0 + } else { + for (lineNode = node;; lineNode = lineNode.parentNode) { + if (!lineNode || lineNode == cm.display.lineDiv) return null + if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) break + } + } + for (let i = 0; i < cm.display.view.length; i++) { + let lineView = cm.display.view[i] + if (lineView.node == lineNode) + return locateNodeInLineView(lineView, node, offset) + } +} + +function locateNodeInLineView(lineView, node, offset) { + let wrapper = lineView.text.firstChild, bad = false + if (!node || !contains(wrapper, node)) return badPos(Pos(lineNo(lineView.line), 0), true) + if (node == wrapper) { + bad = true + node = wrapper.childNodes[offset] + offset = 0 + if (!node) { + let line = lineView.rest ? lst(lineView.rest) : lineView.line + return badPos(Pos(lineNo(line), line.text.length), bad) + } + } + + let textNode = node.nodeType == 3 ? node : null, topNode = node + if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { + textNode = node.firstChild + if (offset) offset = textNode.nodeValue.length + } + while (topNode.parentNode != wrapper) topNode = topNode.parentNode + let measure = lineView.measure, maps = measure.maps + + function find(textNode, topNode, offset) { + for (let i = -1; i < (maps ? maps.length : 0); i++) { + let map = i < 0 ? measure.map : maps[i] + for (let j = 0; j < map.length; j += 3) { + let curNode = map[j + 2] + if (curNode == textNode || curNode == topNode) { + let line = lineNo(i < 0 ? lineView.line : lineView.rest[i]) + let ch = map[j] + offset + if (offset < 0 || curNode != textNode) ch = map[j + (offset ? 1 : 0)] + return Pos(line, ch) + } + } + } + } + let found = find(textNode, topNode, offset) + if (found) return badPos(found, bad) + + // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems + for (let after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { + found = find(after, after.firstChild, 0) + if (found) + return badPos(Pos(found.line, found.ch - dist), bad) + else + dist += after.textContent.length + } + for (let before = topNode.previousSibling, dist = offset; before; before = before.previousSibling) { + found = find(before, before.firstChild, -1) + if (found) + return badPos(Pos(found.line, found.ch + dist), bad) + else + dist += before.textContent.length + } +} diff --git a/global/codemirror/src/input/TextareaInput.js b/global/codemirror/src/input/TextareaInput.js new file mode 100644 index 00000000..3262ea1b --- /dev/null +++ b/global/codemirror/src/input/TextareaInput.js @@ -0,0 +1,350 @@ +import { operation, runInOp } from "../display/operations" +import { prepareSelection } from "../display/selection" +import { applyTextInput, copyableRanges, handlePaste, hiddenTextarea, setLastCopied } from "./input" +import { cursorCoords, posFromMouse } from "../measurement/position_measurement" +import { eventInWidget } from "../measurement/widgets" +import { simpleSelection } from "../model/selection" +import { selectAll, setSelection } from "../model/selection_updates" +import { captureRightClick, ie, ie_version, ios, mac, mobile, presto, webkit } from "../util/browser" +import { activeElt, removeChildrenAndAdd, selectInput } from "../util/dom" +import { e_preventDefault, e_stop, off, on, signalDOMEvent } from "../util/event" +import { hasSelection } from "../util/feature_detection" +import { Delayed, sel_dontScroll } from "../util/misc" + +// TEXTAREA INPUT STYLE + +export default class TextareaInput { + constructor(cm) { + this.cm = cm + // See input.poll and input.reset + this.prevInput = "" + + // Flag that indicates whether we expect input to appear real soon + // now (after some event like 'keypress' or 'input') and are + // polling intensively. + this.pollingFast = false + // Self-resetting timeout for the poller + this.polling = new Delayed() + // Used to work around IE issue with selection being forgotten when focus moves away from textarea + this.hasSelection = false + this.composing = null + } + + init(display) { + let input = this, cm = this.cm + + // Wraps and hides input textarea + let div = this.wrapper = hiddenTextarea() + // The semihidden textarea that is focused when the editor is + // focused, and receives input. + let te = this.textarea = div.firstChild + display.wrapper.insertBefore(div, display.wrapper.firstChild) + + // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) + if (ios) te.style.width = "0px" + + on(te, "input", () => { + if (ie && ie_version >= 9 && this.hasSelection) this.hasSelection = null + input.poll() + }) + + on(te, "paste", e => { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return + + cm.state.pasteIncoming = true + input.fastPoll() + }) + + function prepareCopyCut(e) { + if (signalDOMEvent(cm, e)) return + if (cm.somethingSelected()) { + setLastCopied({lineWise: false, text: cm.getSelections()}) + } else if (!cm.options.lineWiseCopyCut) { + return + } else { + let ranges = copyableRanges(cm) + setLastCopied({lineWise: true, text: ranges.text}) + if (e.type == "cut") { + cm.setSelections(ranges.ranges, null, sel_dontScroll) + } else { + input.prevInput = "" + te.value = ranges.text.join("\n") + selectInput(te) + } + } + if (e.type == "cut") cm.state.cutIncoming = true + } + on(te, "cut", prepareCopyCut) + on(te, "copy", prepareCopyCut) + + on(display.scroller, "paste", e => { + if (eventInWidget(display, e) || signalDOMEvent(cm, e)) return + cm.state.pasteIncoming = true + input.focus() + }) + + // Prevent normal selection in the editor (we handle our own) + on(display.lineSpace, "selectstart", e => { + if (!eventInWidget(display, e)) e_preventDefault(e) + }) + + on(te, "compositionstart", () => { + let start = cm.getCursor("from") + if (input.composing) input.composing.range.clear() + input.composing = { + start: start, + range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) + } + }) + on(te, "compositionend", () => { + if (input.composing) { + input.poll() + input.composing.range.clear() + input.composing = null + } + }) + } + + prepareSelection() { + // Redraw the selection and/or cursor + let cm = this.cm, display = cm.display, doc = cm.doc + let result = prepareSelection(cm) + + // Move the hidden textarea near the cursor to prevent scrolling artifacts + if (cm.options.moveInputWithCursor) { + let headPos = cursorCoords(cm, doc.sel.primary().head, "div") + let wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect() + result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)) + result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)) + } + + return result + } + + showSelection(drawn) { + let cm = this.cm, display = cm.display + removeChildrenAndAdd(display.cursorDiv, drawn.cursors) + removeChildrenAndAdd(display.selectionDiv, drawn.selection) + if (drawn.teTop != null) { + this.wrapper.style.top = drawn.teTop + "px" + this.wrapper.style.left = drawn.teLeft + "px" + } + } + + // Reset the input to correspond to the selection (or to be empty, + // when not typing and nothing is selected) + reset(typing) { + if (this.contextMenuPending || this.composing) return + let cm = this.cm + if (cm.somethingSelected()) { + this.prevInput = "" + let content = cm.getSelection() + this.textarea.value = content + if (cm.state.focused) selectInput(this.textarea) + if (ie && ie_version >= 9) this.hasSelection = content + } else if (!typing) { + this.prevInput = this.textarea.value = "" + if (ie && ie_version >= 9) this.hasSelection = null + } + } + + getField() { return this.textarea } + + supportsTouch() { return false } + + focus() { + if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { + try { this.textarea.focus() } + catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM + } + } + + blur() { this.textarea.blur() } + + resetPosition() { + this.wrapper.style.top = this.wrapper.style.left = 0 + } + + receivedFocus() { this.slowPoll() } + + // Poll for input changes, using the normal rate of polling. This + // runs as long as the editor is focused. + slowPoll() { + if (this.pollingFast) return + this.polling.set(this.cm.options.pollInterval, () => { + this.poll() + if (this.cm.state.focused) this.slowPoll() + }) + } + + // When an event has just come in that is likely to add or change + // something in the input textarea, we poll faster, to ensure that + // the change appears on the screen quickly. + fastPoll() { + let missed = false, input = this + input.pollingFast = true + function p() { + let changed = input.poll() + if (!changed && !missed) {missed = true; input.polling.set(60, p)} + else {input.pollingFast = false; input.slowPoll()} + } + input.polling.set(20, p) + } + + // Read input from the textarea, and update the document to match. + // When something is selected, it is present in the textarea, and + // selected (unless it is huge, in which case a placeholder is + // used). When nothing is selected, the cursor sits after previously + // seen text (can be empty), which is stored in prevInput (we must + // not reset the textarea when typing, because that breaks IME). + poll() { + let cm = this.cm, input = this.textarea, prevInput = this.prevInput + // Since this is called a *lot*, try to bail out as cheaply as + // possible when it is clear that nothing happened. hasSelection + // will be the case when there is a lot of text in the textarea, + // in which case reading its value would be expensive. + if (this.contextMenuPending || !cm.state.focused || + (hasSelection(input) && !prevInput && !this.composing) || + cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) + return false + + let text = input.value + // If nothing changed, bail. + if (text == prevInput && !cm.somethingSelected()) return false + // Work around nonsensical selection resetting in IE9/10, and + // inexplicable appearance of private area unicode characters on + // some key combos in Mac (#2689). + if (ie && ie_version >= 9 && this.hasSelection === text || + mac && /[\uf700-\uf7ff]/.test(text)) { + cm.display.input.reset() + return false + } + + if (cm.doc.sel == cm.display.selForContextMenu) { + let first = text.charCodeAt(0) + if (first == 0x200b && !prevInput) prevInput = "\u200b" + if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo") } + } + // Find the part of the input that is actually new + let same = 0, l = Math.min(prevInput.length, text.length) + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same + + runInOp(cm, () => { + applyTextInput(cm, text.slice(same), prevInput.length - same, + null, this.composing ? "*compose" : null) + + // Don't leave long text in the textarea, since it makes further polling slow + if (text.length > 1000 || text.indexOf("\n") > -1) input.value = this.prevInput = "" + else this.prevInput = text + + if (this.composing) { + this.composing.range.clear() + this.composing.range = cm.markText(this.composing.start, cm.getCursor("to"), + {className: "CodeMirror-composing"}) + } + }) + return true + } + + ensurePolled() { + if (this.pollingFast && this.poll()) this.pollingFast = false + } + + onKeyPress() { + if (ie && ie_version >= 9) this.hasSelection = null + this.fastPoll() + } + + onContextMenu(e) { + let input = this, cm = input.cm, display = cm.display, te = input.textarea + let pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop + if (!pos || presto) return // Opera is difficult. + + // Reset the current text selection only if the click is done outside of the selection + // and 'resetSelectionOnContextMenu' option is true. + let reset = cm.options.resetSelectionOnContextMenu + if (reset && cm.doc.sel.contains(pos) == -1) + operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll) + + let oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText + input.wrapper.style.cssText = "position: absolute" + let wrapperBox = input.wrapper.getBoundingClientRect() + te.style.cssText = `position: absolute; width: 30px; height: 30px; + top: ${e.clientY - wrapperBox.top - 5}px; left: ${e.clientX - wrapperBox.left - 5}px; + z-index: 1000; background: ${ie ? "rgba(255, 255, 255, .05)" : "transparent"}; + outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);` + let oldScrollY + if (webkit) oldScrollY = window.scrollY // Work around Chrome issue (#2712) + display.input.focus() + if (webkit) window.scrollTo(null, oldScrollY) + display.input.reset() + // Adds "Select all" to context menu in FF + if (!cm.somethingSelected()) te.value = input.prevInput = " " + input.contextMenuPending = true + display.selForContextMenu = cm.doc.sel + clearTimeout(display.detectingSelectAll) + + // Select-all will be greyed out if there's nothing to select, so + // this adds a zero-width space so that we can later check whether + // it got selected. + function prepareSelectAllHack() { + if (te.selectionStart != null) { + let selected = cm.somethingSelected() + let extval = "\u200b" + (selected ? te.value : "") + te.value = "\u21da" // Used to catch context-menu undo + te.value = extval + input.prevInput = selected ? "" : "\u200b" + te.selectionStart = 1; te.selectionEnd = extval.length + // Re-set this, in case some other handler touched the + // selection in the meantime. + display.selForContextMenu = cm.doc.sel + } + } + function rehide() { + input.contextMenuPending = false + input.wrapper.style.cssText = oldWrapperCSS + te.style.cssText = oldCSS + if (ie && ie_version < 9) display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos) + + // Try to detect the user choosing select-all + if (te.selectionStart != null) { + if (!ie || (ie && ie_version < 9)) prepareSelectAllHack() + let i = 0, poll = () => { + if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && + te.selectionEnd > 0 && input.prevInput == "\u200b") { + operation(cm, selectAll)(cm) + } else if (i++ < 10) { + display.detectingSelectAll = setTimeout(poll, 500) + } else { + display.selForContextMenu = null + display.input.reset() + } + } + display.detectingSelectAll = setTimeout(poll, 200) + } + } + + if (ie && ie_version >= 9) prepareSelectAllHack() + if (captureRightClick) { + e_stop(e) + let mouseup = () => { + off(window, "mouseup", mouseup) + setTimeout(rehide, 20) + } + on(window, "mouseup", mouseup) + } else { + setTimeout(rehide, 50) + } + } + + readOnlyChanged(val) { + if (!val) this.reset() + this.textarea.disabled = val == "nocursor" + } + + setUneditable() {} +} + +TextareaInput.prototype.needsContentAttribute = false diff --git a/global/codemirror/src/input/indent.js b/global/codemirror/src/input/indent.js new file mode 100644 index 00000000..024f5f92 --- /dev/null +++ b/global/codemirror/src/input/indent.js @@ -0,0 +1,71 @@ +import { getContextBefore } from "../line/highlight" +import { Pos } from "../line/pos" +import { getLine } from "../line/utils_line" +import { replaceRange } from "../model/changes" +import { Range } from "../model/selection" +import { replaceOneSelection } from "../model/selection_updates" +import { countColumn, Pass, spaceStr } from "../util/misc" + +// Indent the given line. The how parameter can be "smart", +// "add"/null, "subtract", or "prev". When aggressive is false +// (typically set to true for forced single-line indents), empty +// lines are not indented, and places where the mode returns Pass +// are left alone. +export function indentLine(cm, n, how, aggressive) { + let doc = cm.doc, state + if (how == null) how = "add" + if (how == "smart") { + // Fall back to "prev" when the mode doesn't have an indentation + // method. + if (!doc.mode.indent) how = "prev" + else state = getContextBefore(cm, n).state + } + + let tabSize = cm.options.tabSize + let line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize) + if (line.stateAfter) line.stateAfter = null + let curSpaceString = line.text.match(/^\s*/)[0], indentation + if (!aggressive && !/\S/.test(line.text)) { + indentation = 0 + how = "not" + } else if (how == "smart") { + indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text) + if (indentation == Pass || indentation > 150) { + if (!aggressive) return + how = "prev" + } + } + if (how == "prev") { + if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize) + else indentation = 0 + } else if (how == "add") { + indentation = curSpace + cm.options.indentUnit + } else if (how == "subtract") { + indentation = curSpace - cm.options.indentUnit + } else if (typeof how == "number") { + indentation = curSpace + how + } + indentation = Math.max(0, indentation) + + let indentString = "", pos = 0 + if (cm.options.indentWithTabs) + for (let i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t"} + if (pos < indentation) indentString += spaceStr(indentation - pos) + + if (indentString != curSpaceString) { + replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input") + line.stateAfter = null + return true + } else { + // Ensure that, if the cursor was in the whitespace at the start + // of the line, it is moved to the end of that space. + for (let i = 0; i < doc.sel.ranges.length; i++) { + let range = doc.sel.ranges[i] + if (range.head.line == n && range.head.ch < curSpaceString.length) { + let pos = Pos(n, curSpaceString.length) + replaceOneSelection(doc, i, new Range(pos, pos)) + break + } + } + } +} diff --git a/global/codemirror/src/input/input.js b/global/codemirror/src/input/input.js new file mode 100644 index 00000000..fa85209e --- /dev/null +++ b/global/codemirror/src/input/input.js @@ -0,0 +1,135 @@ +import { runInOp } from "../display/operations" +import { ensureCursorVisible } from "../display/scrolling" +import { Pos } from "../line/pos" +import { getLine } from "../line/utils_line" +import { makeChange } from "../model/changes" +import { ios, webkit } from "../util/browser" +import { elt } from "../util/dom" +import { lst, map } from "../util/misc" +import { signalLater } from "../util/operation_group" +import { splitLinesAuto } from "../util/feature_detection" + +import { indentLine } from "./indent" + +// This will be set to a {lineWise: bool, text: [string]} object, so +// that, when pasting, we know what kind of selections the copied +// text was made out of. +export let lastCopied = null + +export function setLastCopied(newLastCopied) { + lastCopied = newLastCopied +} + +export function applyTextInput(cm, inserted, deleted, sel, origin) { + let doc = cm.doc + cm.display.shift = false + if (!sel) sel = doc.sel + + let paste = cm.state.pasteIncoming || origin == "paste" + let textLines = splitLinesAuto(inserted), multiPaste = null + // When pasing N lines into N selections, insert one line per selection + if (paste && sel.ranges.length > 1) { + if (lastCopied && lastCopied.text.join("\n") == inserted) { + if (sel.ranges.length % lastCopied.text.length == 0) { + multiPaste = [] + for (let i = 0; i < lastCopied.text.length; i++) + multiPaste.push(doc.splitLines(lastCopied.text[i])) + } + } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) { + multiPaste = map(textLines, l => [l]) + } + } + + let updateInput + // Normal behavior is to insert the new text into every selection + for (let i = sel.ranges.length - 1; i >= 0; i--) { + let range = sel.ranges[i] + let from = range.from(), to = range.to() + if (range.empty()) { + if (deleted && deleted > 0) // Handle deletion + from = Pos(from.line, from.ch - deleted) + else if (cm.state.overwrite && !paste) // Handle overwrite + to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)) + else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted) + from = to = Pos(from.line, 0) + } + updateInput = cm.curOp.updateInput + let changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines, + origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")} + makeChange(cm.doc, changeEvent) + signalLater(cm, "inputRead", cm, changeEvent) + } + if (inserted && !paste) + triggerElectric(cm, inserted) + + ensureCursorVisible(cm) + cm.curOp.updateInput = updateInput + cm.curOp.typing = true + cm.state.pasteIncoming = cm.state.cutIncoming = false +} + +export function handlePaste(e, cm) { + let pasted = e.clipboardData && e.clipboardData.getData("Text") + if (pasted) { + e.preventDefault() + if (!cm.isReadOnly() && !cm.options.disableInput) + runInOp(cm, () => applyTextInput(cm, pasted, 0, null, "paste")) + return true + } +} + +export function triggerElectric(cm, inserted) { + // When an 'electric' character is inserted, immediately trigger a reindent + if (!cm.options.electricChars || !cm.options.smartIndent) return + let sel = cm.doc.sel + + for (let i = sel.ranges.length - 1; i >= 0; i--) { + let range = sel.ranges[i] + if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) continue + let mode = cm.getModeAt(range.head) + let indented = false + if (mode.electricChars) { + for (let j = 0; j < mode.electricChars.length; j++) + if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { + indented = indentLine(cm, range.head.line, "smart") + break + } + } else if (mode.electricInput) { + if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) + indented = indentLine(cm, range.head.line, "smart") + } + if (indented) signalLater(cm, "electricInput", cm, range.head.line) + } +} + +export function copyableRanges(cm) { + let text = [], ranges = [] + for (let i = 0; i < cm.doc.sel.ranges.length; i++) { + let line = cm.doc.sel.ranges[i].head.line + let lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)} + ranges.push(lineRange) + text.push(cm.getRange(lineRange.anchor, lineRange.head)) + } + return {text: text, ranges: ranges} +} + +export function disableBrowserMagic(field, spellcheck) { + field.setAttribute("autocorrect", "off") + field.setAttribute("autocapitalize", "off") + field.setAttribute("spellcheck", !!spellcheck) +} + +export function hiddenTextarea() { + let te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none") + let div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;") + // The textarea is kept positioned near the cursor to prevent the + // fact that it'll be scrolled into view on input from scrolling + // our fake cursor out of view. On webkit, when wrap=off, paste is + // very slow. So make the area wide instead. + if (webkit) te.style.width = "1000px" + else te.setAttribute("wrap", "off") + // If border: 0; -- iOS fails to open keyboard (issue #1287) + if (ios) te.style.border = "1px solid black" + disableBrowserMagic(te) + return div +} diff --git a/global/codemirror/src/input/keymap.js b/global/codemirror/src/input/keymap.js new file mode 100644 index 00000000..36ac3e61 --- /dev/null +++ b/global/codemirror/src/input/keymap.js @@ -0,0 +1,145 @@ +import { flipCtrlCmd, mac, presto } from "../util/browser" +import { map } from "../util/misc" + +import { keyNames } from "./keynames" + +export let keyMap = {} + +keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", + "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", + "Esc": "singleSelection" +} +// Note that the save and find-related commands aren't defined by +// default. User code or addons can define them. Unknown commands +// are simply ignored. +keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", + "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", + fallthrough: "basic" +} +// Very basic readline/emacs-style bindings, which are standard on Mac. +keyMap.emacsy = { + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", + "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars", + "Ctrl-O": "openLine" +} +keyMap.macDefault = { + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", + "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", + "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", + "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", + fallthrough: ["basic", "emacsy"] +} +keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault + +// KEYMAP DISPATCH + +function normalizeKeyName(name) { + let parts = name.split(/-(?!$)/) + name = parts[parts.length - 1] + let alt, ctrl, shift, cmd + for (let i = 0; i < parts.length - 1; i++) { + let mod = parts[i] + if (/^(cmd|meta|m)$/i.test(mod)) cmd = true + else if (/^a(lt)?$/i.test(mod)) alt = true + else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true + else if (/^s(hift)?$/i.test(mod)) shift = true + else throw new Error("Unrecognized modifier name: " + mod) + } + if (alt) name = "Alt-" + name + if (ctrl) name = "Ctrl-" + name + if (cmd) name = "Cmd-" + name + if (shift) name = "Shift-" + name + return name +} + +// This is a kludge to keep keymaps mostly working as raw objects +// (backwards compatibility) while at the same time support features +// like normalization and multi-stroke key bindings. It compiles a +// new normalized keymap, and then updates the old object to reflect +// this. +export function normalizeKeyMap(keymap) { + let copy = {} + for (let keyname in keymap) if (keymap.hasOwnProperty(keyname)) { + let value = keymap[keyname] + if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) continue + if (value == "...") { delete keymap[keyname]; continue } + + let keys = map(keyname.split(" "), normalizeKeyName) + for (let i = 0; i < keys.length; i++) { + let val, name + if (i == keys.length - 1) { + name = keys.join(" ") + val = value + } else { + name = keys.slice(0, i + 1).join(" ") + val = "..." + } + let prev = copy[name] + if (!prev) copy[name] = val + else if (prev != val) throw new Error("Inconsistent bindings for " + name) + } + delete keymap[keyname] + } + for (let prop in copy) keymap[prop] = copy[prop] + return keymap +} + +export function lookupKey(key, map, handle, context) { + map = getKeyMap(map) + let found = map.call ? map.call(key, context) : map[key] + if (found === false) return "nothing" + if (found === "...") return "multi" + if (found != null && handle(found)) return "handled" + + if (map.fallthrough) { + if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") + return lookupKey(key, map.fallthrough, handle, context) + for (let i = 0; i < map.fallthrough.length; i++) { + let result = lookupKey(key, map.fallthrough[i], handle, context) + if (result) return result + } + } +} + +// Modifier key presses don't count as 'real' key presses for the +// purpose of keymap fallthrough. +export function isModifierKey(value) { + let name = typeof value == "string" ? value : keyNames[value.keyCode] + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod" +} + +export function addModifierNames(name, event, noShift) { + let base = name + if (event.altKey && base != "Alt") name = "Alt-" + name + if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") name = "Ctrl-" + name + if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") name = "Cmd-" + name + if (!noShift && event.shiftKey && base != "Shift") name = "Shift-" + name + return name +} + +// Look up the name of a key as indicated by an event object. +export function keyName(event, noShift) { + if (presto && event.keyCode == 34 && event["char"]) return false + let name = keyNames[event.keyCode] + if (name == null || event.altGraphKey) return false + return addModifierNames(name, event, noShift) +} + +export function getKeyMap(val) { + return typeof val == "string" ? keyMap[val] : val +} diff --git a/global/codemirror/src/input/keynames.js b/global/codemirror/src/input/keynames.js new file mode 100644 index 00000000..66bc8001 --- /dev/null +++ b/global/codemirror/src/input/keynames.js @@ -0,0 +1,17 @@ +export let keyNames = { + 3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", + 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 127: "Delete", + 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", + 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" +} + +// Number keys +for (let i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i) +// Alphabetic keys +for (let i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i) +// Function keys +for (let i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i diff --git a/global/codemirror/src/input/movement.js b/global/codemirror/src/input/movement.js new file mode 100644 index 00000000..b7fd01a8 --- /dev/null +++ b/global/codemirror/src/input/movement.js @@ -0,0 +1,110 @@ +import { Pos } from "../line/pos" +import { prepareMeasureForLine, measureCharPrepared, wrappedLineExtentChar } from "../measurement/position_measurement" +import { getBidiPartAt, getOrder } from "../util/bidi" +import { findFirst, lst, skipExtendingChars } from "../util/misc" + +function moveCharLogically(line, ch, dir) { + let target = skipExtendingChars(line.text, ch + dir, dir) + return target < 0 || target > line.text.length ? null : target +} + +export function moveLogically(line, start, dir) { + let ch = moveCharLogically(line, start.ch, dir) + return ch == null ? null : new Pos(start.line, ch, dir < 0 ? "after" : "before") +} + +export function endOfLine(visually, cm, lineObj, lineNo, dir) { + if (visually) { + let order = getOrder(lineObj, cm.doc.direction) + if (order) { + let part = dir < 0 ? lst(order) : order[0] + let moveInStorageOrder = (dir < 0) == (part.level == 1) + let sticky = moveInStorageOrder ? "after" : "before" + let ch + // With a wrapped rtl chunk (possibly spanning multiple bidi parts), + // it could be that the last bidi part is not on the last visual line, + // since visual lines contain content order-consecutive chunks. + // Thus, in rtl, we are looking for the first (content-order) character + // in the rtl chunk that is on the last line (that is, the same line + // as the last (content-order) character). + if (part.level > 0) { + let prep = prepareMeasureForLine(cm, lineObj) + ch = dir < 0 ? lineObj.text.length - 1 : 0 + let targetTop = measureCharPrepared(cm, prep, ch).top + ch = findFirst(ch => measureCharPrepared(cm, prep, ch).top == targetTop, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch) + if (sticky == "before") ch = moveCharLogically(lineObj, ch, 1) + } else ch = dir < 0 ? part.to : part.from + return new Pos(lineNo, ch, sticky) + } + } + return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? "before" : "after") +} + +export function moveVisually(cm, line, start, dir) { + let bidi = getOrder(line, cm.doc.direction) + if (!bidi) return moveLogically(line, start, dir) + if (start.ch >= line.text.length) { + start.ch = line.text.length + start.sticky = "before" + } else if (start.ch <= 0) { + start.ch = 0 + start.sticky = "after" + } + let partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos] + if (cm.doc.direction == "ltr" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) { + // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines, + // nothing interesting happens. + return moveLogically(line, start, dir) + } + + let mv = (pos, dir) => moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir) + let prep + let getWrappedLineExtent = ch => { + if (!cm.options.lineWrapping) return {begin: 0, end: line.text.length} + prep = prep || prepareMeasureForLine(cm, line) + return wrappedLineExtentChar(cm, line, prep, ch) + } + let wrappedLineExtent = getWrappedLineExtent(start.sticky == "before" ? mv(start, -1) : start.ch) + + if (cm.doc.direction == "rtl" || part.level == 1) { + let moveInStorageOrder = (part.level == 1) == (dir < 0) + let ch = mv(start, moveInStorageOrder ? 1 : -1) + if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) { + // Case 2: We move within an rtl part or in an rtl editor on the same visual line + let sticky = moveInStorageOrder ? "before" : "after" + return new Pos(start.line, ch, sticky) + } + } + + // Case 3: Could not move within this bidi part in this visual line, so leave + // the current bidi part + + let searchInVisualLine = (partPos, dir, wrappedLineExtent) => { + let getRes = (ch, moveInStorageOrder) => moveInStorageOrder + ? new Pos(start.line, mv(ch, 1), "before") + : new Pos(start.line, ch, "after") + + for (; partPos >= 0 && partPos < bidi.length; partPos += dir) { + let part = bidi[partPos] + let moveInStorageOrder = (dir > 0) == (part.level != 1) + let ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1) + if (part.from <= ch && ch < part.to) return getRes(ch, moveInStorageOrder) + ch = moveInStorageOrder ? part.from : mv(part.to, -1) + if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) return getRes(ch, moveInStorageOrder) + } + } + + // Case 3a: Look for other bidi parts on the same visual line + let res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent) + if (res) return res + + // Case 3b: Look for other bidi parts on the next visual line + let nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1) + if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) { + res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh)) + if (res) return res + } + + // Case 4: Nowhere to move + return null +} diff --git a/global/codemirror/src/line/highlight.js b/global/codemirror/src/line/highlight.js new file mode 100644 index 00000000..430d86a2 --- /dev/null +++ b/global/codemirror/src/line/highlight.js @@ -0,0 +1,270 @@ +import { countColumn } from "../util/misc" +import { copyState, innerMode, startState } from "../modes" +import StringStream from "../util/StringStream" + +import { getLine, lineNo } from "./utils_line" +import { clipPos } from "./pos" + +class SavedContext { + constructor(state, lookAhead) { + this.state = state + this.lookAhead = lookAhead + } +} + +class Context { + constructor(doc, state, line, lookAhead) { + this.state = state + this.doc = doc + this.line = line + this.maxLookAhead = lookAhead || 0 + } + + lookAhead(n) { + let line = this.doc.getLine(this.line + n) + if (line != null && n > this.maxLookAhead) this.maxLookAhead = n + return line + } + + nextLine() { + this.line++ + if (this.maxLookAhead > 0) this.maxLookAhead-- + } + + static fromSaved(doc, saved, line) { + if (saved instanceof SavedContext) + return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) + else + return new Context(doc, copyState(doc.mode, saved), line) + } + + save(copy) { + let state = copy !== false ? copyState(this.doc.mode, this.state) : this.state + return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state + } +} + + +// Compute a style array (an array starting with a mode generation +// -- for invalidation -- followed by pairs of end positions and +// style strings), which is used to highlight the tokens on the +// line. +export function highlightLine(cm, line, context, forceToEnd) { + // A styles array always starts with a number identifying the + // mode/overlays that it is based on (for easy invalidation). + let st = [cm.state.modeGen], lineClasses = {} + // Compute the base array of styles + runMode(cm, line.text, cm.doc.mode, context, (end, style) => st.push(end, style), + lineClasses, forceToEnd) + let state = context.state + + // Run overlays, adjust style array. + for (let o = 0; o < cm.state.overlays.length; ++o) { + let overlay = cm.state.overlays[o], i = 1, at = 0 + context.state = true + runMode(cm, line.text, overlay.mode, context, (end, style) => { + let start = i + // Ensure there's a token end at the current position, and that i points at it + while (at < end) { + let i_end = st[i] + if (i_end > end) + st.splice(i, 1, end, st[i+1], i_end) + i += 2 + at = Math.min(end, i_end) + } + if (!style) return + if (overlay.opaque) { + st.splice(start, i - start, end, "overlay " + style) + i = start + 2 + } else { + for (; start < i; start += 2) { + let cur = st[start+1] + st[start+1] = (cur ? cur + " " : "") + "overlay " + style + } + } + }, lineClasses) + } + context.state = state + + return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null} +} + +export function getLineStyles(cm, line, updateFrontier) { + if (!line.styles || line.styles[0] != cm.state.modeGen) { + let context = getContextBefore(cm, lineNo(line)) + let resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state) + let result = highlightLine(cm, line, context) + if (resetState) context.state = resetState + line.stateAfter = context.save(!resetState) + line.styles = result.styles + if (result.classes) line.styleClasses = result.classes + else if (line.styleClasses) line.styleClasses = null + if (updateFrontier === cm.doc.highlightFrontier) + cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier) + } + return line.styles +} + +export function getContextBefore(cm, n, precise) { + let doc = cm.doc, display = cm.display + if (!doc.mode.startState) return new Context(doc, true, n) + let start = findStartLine(cm, n, precise) + let saved = start > doc.first && getLine(doc, start - 1).stateAfter + let context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start) + + doc.iter(start, n, line => { + processLine(cm, line.text, context) + let pos = context.line + line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null + context.nextLine() + }) + if (precise) doc.modeFrontier = context.line + return context +} + +// Lightweight form of highlight -- proceed over this line and +// update state, but don't save a style array. Used for lines that +// aren't currently visible. +export function processLine(cm, text, context, startAt) { + let mode = cm.doc.mode + let stream = new StringStream(text, cm.options.tabSize, context) + stream.start = stream.pos = startAt || 0 + if (text == "") callBlankLine(mode, context.state) + while (!stream.eol()) { + readToken(mode, stream, context.state) + stream.start = stream.pos + } +} + +function callBlankLine(mode, state) { + if (mode.blankLine) return mode.blankLine(state) + if (!mode.innerMode) return + let inner = innerMode(mode, state) + if (inner.mode.blankLine) return inner.mode.blankLine(inner.state) +} + +export function readToken(mode, stream, state, inner) { + for (let i = 0; i < 10; i++) { + if (inner) inner[0] = innerMode(mode, state).mode + let style = mode.token(stream, state) + if (stream.pos > stream.start) return style + } + throw new Error("Mode " + mode.name + " failed to advance stream.") +} + +class Token { + constructor(stream, type, state) { + this.start = stream.start; this.end = stream.pos + this.string = stream.current() + this.type = type || null + this.state = state + } +} + +// Utility for getTokenAt and getLineTokens +export function takeToken(cm, pos, precise, asArray) { + let doc = cm.doc, mode = doc.mode, style + pos = clipPos(doc, pos) + let line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise) + let stream = new StringStream(line.text, cm.options.tabSize, context), tokens + if (asArray) tokens = [] + while ((asArray || stream.pos < pos.ch) && !stream.eol()) { + stream.start = stream.pos + style = readToken(mode, stream, context.state) + if (asArray) tokens.push(new Token(stream, style, copyState(doc.mode, context.state))) + } + return asArray ? tokens : new Token(stream, style, context.state) +} + +function extractLineClasses(type, output) { + if (type) for (;;) { + let lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/) + if (!lineClass) break + type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length) + let prop = lineClass[1] ? "bgClass" : "textClass" + if (output[prop] == null) + output[prop] = lineClass[2] + else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) + output[prop] += " " + lineClass[2] + } + return type +} + +// Run the given mode's parser over a line, calling f for each token. +function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) { + let flattenSpans = mode.flattenSpans + if (flattenSpans == null) flattenSpans = cm.options.flattenSpans + let curStart = 0, curStyle = null + let stream = new StringStream(text, cm.options.tabSize, context), style + let inner = cm.options.addModeClass && [null] + if (text == "") extractLineClasses(callBlankLine(mode, context.state), lineClasses) + while (!stream.eol()) { + if (stream.pos > cm.options.maxHighlightLength) { + flattenSpans = false + if (forceToEnd) processLine(cm, text, context, stream.pos) + stream.pos = text.length + style = null + } else { + style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses) + } + if (inner) { + let mName = inner[0].name + if (mName) style = "m-" + (style ? mName + " " + style : mName) + } + if (!flattenSpans || curStyle != style) { + while (curStart < stream.start) { + curStart = Math.min(stream.start, curStart + 5000) + f(curStart, curStyle) + } + curStyle = style + } + stream.start = stream.pos + } + while (curStart < stream.pos) { + // Webkit seems to refuse to render text nodes longer than 57444 + // characters, and returns inaccurate measurements in nodes + // starting around 5000 chars. + let pos = Math.min(stream.pos, curStart + 5000) + f(pos, curStyle) + curStart = pos + } +} + +// Finds the line to start with when starting a parse. Tries to +// find a line with a stateAfter, so that it can start with a +// valid state. If that fails, it returns the line with the +// smallest indentation, which tends to need the least context to +// parse correctly. +function findStartLine(cm, n, precise) { + let minindent, minline, doc = cm.doc + let lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100) + for (let search = n; search > lim; --search) { + if (search <= doc.first) return doc.first + let line = getLine(doc, search - 1), after = line.stateAfter + if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier)) + return search + let indented = countColumn(line.text, null, cm.options.tabSize) + if (minline == null || minindent > indented) { + minline = search - 1 + minindent = indented + } + } + return minline +} + +export function retreatFrontier(doc, n) { + doc.modeFrontier = Math.min(doc.modeFrontier, n) + if (doc.highlightFrontier < n - 10) return + let start = doc.first + for (let line = n - 1; line > start; line--) { + let saved = getLine(doc, line).stateAfter + // change is on 3 + // state on line 1 looked ahead 2 -- so saw 3 + // test 1 + 2 < 3 should cover this + if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) { + start = line + 1 + break + } + } + doc.highlightFrontier = Math.min(doc.highlightFrontier, start) +} diff --git a/global/codemirror/src/line/line_data.js b/global/codemirror/src/line/line_data.js new file mode 100644 index 00000000..e444184b --- /dev/null +++ b/global/codemirror/src/line/line_data.js @@ -0,0 +1,337 @@ +import { getOrder } from "../util/bidi" +import { ie, ie_version, webkit } from "../util/browser" +import { elt, eltP, joinClasses } from "../util/dom" +import { eventMixin, signal } from "../util/event" +import { hasBadBidiRects, zeroWidthElement } from "../util/feature_detection" +import { lst, spaceStr } from "../util/misc" + +import { getLineStyles } from "./highlight" +import { attachMarkedSpans, compareCollapsedMarkers, detachMarkedSpans, lineIsHidden, visualLineContinued } from "./spans" +import { getLine, lineNo, updateLineHeight } from "./utils_line" + +// LINE DATA STRUCTURE + +// Line objects. These hold state related to a line, including +// highlighting info (the styles array). +export class Line { + constructor(text, markedSpans, estimateHeight) { + this.text = text + attachMarkedSpans(this, markedSpans) + this.height = estimateHeight ? estimateHeight(this) : 1 + } + + lineNo() { return lineNo(this) } +} +eventMixin(Line) + +// Change the content (text, markers) of a line. Automatically +// invalidates cached information and tries to re-estimate the +// line's height. +export function updateLine(line, text, markedSpans, estimateHeight) { + line.text = text + if (line.stateAfter) line.stateAfter = null + if (line.styles) line.styles = null + if (line.order != null) line.order = null + detachMarkedSpans(line) + attachMarkedSpans(line, markedSpans) + let estHeight = estimateHeight ? estimateHeight(line) : 1 + if (estHeight != line.height) updateLineHeight(line, estHeight) +} + +// Detach a line from the document tree and its markers. +export function cleanUpLine(line) { + line.parent = null + detachMarkedSpans(line) +} + +// Convert a style as returned by a mode (either null, or a string +// containing one or more styles) to a CSS style. This is cached, +// and also looks for line-wide styles. +let styleToClassCache = {}, styleToClassCacheWithMode = {} +function interpretTokenStyle(style, options) { + if (!style || /^\s*$/.test(style)) return null + let cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache + return cache[style] || + (cache[style] = style.replace(/\S+/g, "cm-$&")) +} + +// Render the DOM representation of the text of a line. Also builds +// up a 'line map', which points at the DOM nodes that represent +// specific stretches of text, and is used by the measuring code. +// The returned object contains the DOM node, this map, and +// information about line-wide styles that were set by the mode. +export function buildLineContent(cm, lineView) { + // The padding-right forces the element to have a 'border', which + // is needed on Webkit to be able to get line-level bounding + // rectangles for it (in measureChar). + let content = eltP("span", null, null, webkit ? "padding-right: .1px" : null) + let builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content, + col: 0, pos: 0, cm: cm, + trailingSpace: false, + splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")} + lineView.measure = {} + + // Iterate over the logical lines that make up this visual line. + for (let i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { + let line = i ? lineView.rest[i - 1] : lineView.line, order + builder.pos = 0 + builder.addToken = buildToken + // Optionally wire in some hacks into the token-rendering + // algorithm, to deal with browser quirks. + if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction))) + builder.addToken = buildTokenBadBidi(builder.addToken, order) + builder.map = [] + let allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line) + insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)) + if (line.styleClasses) { + if (line.styleClasses.bgClass) + builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || "") + if (line.styleClasses.textClass) + builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || "") + } + + // Ensure at least a single node is present, for measuring. + if (builder.map.length == 0) + builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))) + + // Store the map and a cache object for the current logical line + if (i == 0) { + lineView.measure.map = builder.map + lineView.measure.cache = {} + } else { + ;(lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map) + ;(lineView.measure.caches || (lineView.measure.caches = [])).push({}) + } + } + + // See issue #2901 + if (webkit) { + let last = builder.content.lastChild + if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) + builder.content.className = "cm-tab-wrap-hack" + } + + signal(cm, "renderLine", cm, lineView.line, builder.pre) + if (builder.pre.className) + builder.textClass = joinClasses(builder.pre.className, builder.textClass || "") + + return builder +} + +export function defaultSpecialCharPlaceholder(ch) { + let token = elt("span", "\u2022", "cm-invalidchar") + token.title = "\\u" + ch.charCodeAt(0).toString(16) + token.setAttribute("aria-label", token.title) + return token +} + +// Build up the DOM representation for a single token, and add it to +// the line map. Takes care to render special characters separately. +function buildToken(builder, text, style, startStyle, endStyle, title, css) { + if (!text) return + let displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text + let special = builder.cm.state.specialChars, mustWrap = false + let content + if (!special.test(text)) { + builder.col += text.length + content = document.createTextNode(displayText) + builder.map.push(builder.pos, builder.pos + text.length, content) + if (ie && ie_version < 9) mustWrap = true + builder.pos += text.length + } else { + content = document.createDocumentFragment() + let pos = 0 + while (true) { + special.lastIndex = pos + let m = special.exec(text) + let skipped = m ? m.index - pos : text.length - pos + if (skipped) { + let txt = document.createTextNode(displayText.slice(pos, pos + skipped)) + if (ie && ie_version < 9) content.appendChild(elt("span", [txt])) + else content.appendChild(txt) + builder.map.push(builder.pos, builder.pos + skipped, txt) + builder.col += skipped + builder.pos += skipped + } + if (!m) break + pos += skipped + 1 + let txt + if (m[0] == "\t") { + let tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize + txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")) + txt.setAttribute("role", "presentation") + txt.setAttribute("cm-text", "\t") + builder.col += tabWidth + } else if (m[0] == "\r" || m[0] == "\n") { + txt = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")) + txt.setAttribute("cm-text", m[0]) + builder.col += 1 + } else { + txt = builder.cm.options.specialCharPlaceholder(m[0]) + txt.setAttribute("cm-text", m[0]) + if (ie && ie_version < 9) content.appendChild(elt("span", [txt])) + else content.appendChild(txt) + builder.col += 1 + } + builder.map.push(builder.pos, builder.pos + 1, txt) + builder.pos++ + } + } + builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32 + if (style || startStyle || endStyle || mustWrap || css) { + let fullStyle = style || "" + if (startStyle) fullStyle += startStyle + if (endStyle) fullStyle += endStyle + let token = elt("span", [content], fullStyle, css) + if (title) token.title = title + return builder.content.appendChild(token) + } + builder.content.appendChild(content) +} + +function splitSpaces(text, trailingBefore) { + if (text.length > 1 && !/ /.test(text)) return text + let spaceBefore = trailingBefore, result = "" + for (let i = 0; i < text.length; i++) { + let ch = text.charAt(i) + if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) + ch = "\u00a0" + result += ch + spaceBefore = ch == " " + } + return result +} + +// Work around nonsense dimensions being reported for stretches of +// right-to-left text. +function buildTokenBadBidi(inner, order) { + return (builder, text, style, startStyle, endStyle, title, css) => { + style = style ? style + " cm-force-border" : "cm-force-border" + let start = builder.pos, end = start + text.length + for (;;) { + // Find the part that overlaps with the start of this text + let part + for (let i = 0; i < order.length; i++) { + part = order[i] + if (part.to > start && part.from <= start) break + } + if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title, css) + inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css) + startStyle = null + text = text.slice(part.to - start) + start = part.to + } + } +} + +function buildCollapsedSpan(builder, size, marker, ignoreWidget) { + let widget = !ignoreWidget && marker.widgetNode + if (widget) builder.map.push(builder.pos, builder.pos + size, widget) + if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { + if (!widget) + widget = builder.content.appendChild(document.createElement("span")) + widget.setAttribute("cm-marker", marker.id) + } + if (widget) { + builder.cm.display.input.setUneditable(widget) + builder.content.appendChild(widget) + } + builder.pos += size + builder.trailingSpace = false +} + +// Outputs a number of spans to make up a line, taking highlighting +// and marked text into account. +function insertLineContent(line, builder, styles) { + let spans = line.markedSpans, allText = line.text, at = 0 + if (!spans) { + for (let i = 1; i < styles.length; i+=2) + builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options)) + return + } + + let len = allText.length, pos = 0, i = 1, text = "", style, css + let nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed + for (;;) { + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = title = css = "" + collapsed = null; nextChange = Infinity + let foundBookmarks = [], endStyles + for (let j = 0; j < spans.length; ++j) { + let sp = spans[j], m = sp.marker + if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { + foundBookmarks.push(m) + } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { + if (sp.to != null && sp.to != pos && nextChange > sp.to) { + nextChange = sp.to + spanEndStyle = "" + } + if (m.className) spanStyle += " " + m.className + if (m.css) css = (css ? css + ";" : "") + m.css + if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle + if (m.endStyle && sp.to == nextChange) (endStyles || (endStyles = [])).push(m.endStyle, sp.to) + if (m.title && !title) title = m.title + if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) + collapsed = sp + } else if (sp.from > pos && nextChange > sp.from) { + nextChange = sp.from + } + } + if (endStyles) for (let j = 0; j < endStyles.length; j += 2) + if (endStyles[j + 1] == nextChange) spanEndStyle += " " + endStyles[j] + + if (!collapsed || collapsed.from == pos) for (let j = 0; j < foundBookmarks.length; ++j) + buildCollapsedSpan(builder, 0, foundBookmarks[j]) + if (collapsed && (collapsed.from || 0) == pos) { + buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, + collapsed.marker, collapsed.from == null) + if (collapsed.to == null) return + if (collapsed.to == pos) collapsed = false + } + } + if (pos >= len) break + + let upto = Math.min(len, nextChange) + while (true) { + if (text) { + let end = pos + text.length + if (!collapsed) { + let tokenText = end > upto ? text.slice(0, upto - pos) : text + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css) + } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break} + pos = end + spanStartStyle = "" + } + text = allText.slice(at, at = styles[i++]) + style = interpretTokenStyle(styles[i++], builder.cm.options) + } + } +} + + +// These objects are used to represent the visible (currently drawn) +// part of the document. A LineView may correspond to multiple +// logical lines, if those are connected by collapsed ranges. +export function LineView(doc, line, lineN) { + // The starting line + this.line = line + // Continuing lines, if any + this.rest = visualLineContinued(line) + // Number of logical lines in this visual line + this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1 + this.node = this.text = null + this.hidden = lineIsHidden(doc, line) +} + +// Create a range of LineView objects for the given lines. +export function buildViewArray(cm, from, to) { + let array = [], nextPos + for (let pos = from; pos < to; pos = nextPos) { + let view = new LineView(cm.doc, getLine(cm.doc, pos), pos) + nextPos = pos + view.size + array.push(view) + } + return array +} diff --git a/global/codemirror/src/line/pos.js b/global/codemirror/src/line/pos.js new file mode 100644 index 00000000..4f5e4c55 --- /dev/null +++ b/global/codemirror/src/line/pos.js @@ -0,0 +1,40 @@ +import { getLine } from "./utils_line" + +// A Pos instance represents a position within the text. +export function Pos(line, ch, sticky = null) { + if (!(this instanceof Pos)) return new Pos(line, ch, sticky) + this.line = line + this.ch = ch + this.sticky = sticky +} + +// Compare two positions, return 0 if they are the same, a negative +// number when a is less, and a positive number otherwise. +export function cmp(a, b) { return a.line - b.line || a.ch - b.ch } + +export function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 } + +export function copyPos(x) {return Pos(x.line, x.ch)} +export function maxPos(a, b) { return cmp(a, b) < 0 ? b : a } +export function minPos(a, b) { return cmp(a, b) < 0 ? a : b } + +// Most of the external API clips given positions to make sure they +// actually exist within the document. +export function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))} +export function clipPos(doc, pos) { + if (pos.line < doc.first) return Pos(doc.first, 0) + let last = doc.first + doc.size - 1 + if (pos.line > last) return Pos(last, getLine(doc, last).text.length) + return clipToLen(pos, getLine(doc, pos.line).text.length) +} +function clipToLen(pos, linelen) { + let ch = pos.ch + if (ch == null || ch > linelen) return Pos(pos.line, linelen) + else if (ch < 0) return Pos(pos.line, 0) + else return pos +} +export function clipPosArray(doc, array) { + let out = [] + for (let i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]) + return out +} diff --git a/global/codemirror/src/line/saw_special_spans.js b/global/codemirror/src/line/saw_special_spans.js new file mode 100644 index 00000000..d315e7ba --- /dev/null +++ b/global/codemirror/src/line/saw_special_spans.js @@ -0,0 +1,10 @@ +// Optimize some code when these features are not used. +export let sawReadOnlySpans = false, sawCollapsedSpans = false + +export function seeReadOnlySpans() { + sawReadOnlySpans = true +} + +export function seeCollapsedSpans() { + sawCollapsedSpans = true +} diff --git a/global/codemirror/src/line/spans.js b/global/codemirror/src/line/spans.js new file mode 100644 index 00000000..6c413d2f --- /dev/null +++ b/global/codemirror/src/line/spans.js @@ -0,0 +1,372 @@ +import { indexOf, lst } from "../util/misc" + +import { cmp } from "./pos" +import { sawCollapsedSpans } from "./saw_special_spans" +import { getLine, isLine, lineNo } from "./utils_line" + +// TEXTMARKER SPANS + +export function MarkedSpan(marker, from, to) { + this.marker = marker + this.from = from; this.to = to +} + +// Search an array of spans for a span matching the given marker. +export function getMarkedSpanFor(spans, marker) { + if (spans) for (let i = 0; i < spans.length; ++i) { + let span = spans[i] + if (span.marker == marker) return span + } +} +// Remove a span from an array, returning undefined if no spans are +// left (we don't store arrays for lines without spans). +export function removeMarkedSpan(spans, span) { + let r + for (let i = 0; i < spans.length; ++i) + if (spans[i] != span) (r || (r = [])).push(spans[i]) + return r +} +// Add a span to a line. +export function addMarkedSpan(line, span) { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span] + span.marker.attachLine(line) +} + +// Used for the algorithm that adjusts markers for a change in the +// document. These functions cut an array of spans at a given +// character position, returning an array of remaining chunks (or +// undefined if nothing remains). +function markedSpansBefore(old, startCh, isInsert) { + let nw + if (old) for (let i = 0; i < old.length; ++i) { + let span = old[i], marker = span.marker + let startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh) + if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { + let endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)) + } + } + return nw +} +function markedSpansAfter(old, endCh, isInsert) { + let nw + if (old) for (let i = 0; i < old.length; ++i) { + let span = old[i], marker = span.marker + let endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh) + if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { + let startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh) + ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, + span.to == null ? null : span.to - endCh)) + } + } + return nw +} + +// Given a change object, compute the new set of marker spans that +// cover the line in which the change took place. Removes spans +// entirely within the change, reconnects spans belonging to the +// same marker that appear on both sides of the change, and cuts off +// spans partially within the change. Returns an array of span +// arrays with one element for each line in (after) the change. +export function stretchSpansOverChange(doc, change) { + if (change.full) return null + let oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans + let oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans + if (!oldFirst && !oldLast) return null + + let startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0 + // Get the spans that 'stick out' on both sides + let first = markedSpansBefore(oldFirst, startCh, isInsert) + let last = markedSpansAfter(oldLast, endCh, isInsert) + + // Next, merge those two ends + let sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0) + if (first) { + // Fix up .to properties of first + for (let i = 0; i < first.length; ++i) { + let span = first[i] + if (span.to == null) { + let found = getMarkedSpanFor(last, span.marker) + if (!found) span.to = startCh + else if (sameLine) span.to = found.to == null ? null : found.to + offset + } + } + } + if (last) { + // Fix up .from in last (or move them into first in case of sameLine) + for (let i = 0; i < last.length; ++i) { + let span = last[i] + if (span.to != null) span.to += offset + if (span.from == null) { + let found = getMarkedSpanFor(first, span.marker) + if (!found) { + span.from = offset + if (sameLine) (first || (first = [])).push(span) + } + } else { + span.from += offset + if (sameLine) (first || (first = [])).push(span) + } + } + } + // Make sure we didn't create any zero-length spans + if (first) first = clearEmptySpans(first) + if (last && last != first) last = clearEmptySpans(last) + + let newMarkers = [first] + if (!sameLine) { + // Fill gap with whole-line-spans + let gap = change.text.length - 2, gapMarkers + if (gap > 0 && first) + for (let i = 0; i < first.length; ++i) + if (first[i].to == null) + (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null)) + for (let i = 0; i < gap; ++i) + newMarkers.push(gapMarkers) + newMarkers.push(last) + } + return newMarkers +} + +// Remove spans that are empty and don't have a clearWhenEmpty +// option of false. +function clearEmptySpans(spans) { + for (let i = 0; i < spans.length; ++i) { + let span = spans[i] + if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) + spans.splice(i--, 1) + } + if (!spans.length) return null + return spans +} + +// Used to 'clip' out readOnly ranges when making a change. +export function removeReadOnlyRanges(doc, from, to) { + let markers = null + doc.iter(from.line, to.line + 1, line => { + if (line.markedSpans) for (let i = 0; i < line.markedSpans.length; ++i) { + let mark = line.markedSpans[i].marker + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + (markers || (markers = [])).push(mark) + } + }) + if (!markers) return null + let parts = [{from: from, to: to}] + for (let i = 0; i < markers.length; ++i) { + let mk = markers[i], m = mk.find(0) + for (let j = 0; j < parts.length; ++j) { + let p = parts[j] + if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue + let newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to) + if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) + newParts.push({from: p.from, to: m.from}) + if (dto > 0 || !mk.inclusiveRight && !dto) + newParts.push({from: m.to, to: p.to}) + parts.splice.apply(parts, newParts) + j += newParts.length - 3 + } + } + return parts +} + +// Connect or disconnect spans from a line. +export function detachMarkedSpans(line) { + let spans = line.markedSpans + if (!spans) return + for (let i = 0; i < spans.length; ++i) + spans[i].marker.detachLine(line) + line.markedSpans = null +} +export function attachMarkedSpans(line, spans) { + if (!spans) return + for (let i = 0; i < spans.length; ++i) + spans[i].marker.attachLine(line) + line.markedSpans = spans +} + +// Helpers used when computing which overlapping collapsed span +// counts as the larger one. +function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 } +function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 } + +// Returns a number indicating which of two overlapping collapsed +// spans is larger (and thus includes the other). Falls back to +// comparing ids when the spans cover exactly the same range. +export function compareCollapsedMarkers(a, b) { + let lenDiff = a.lines.length - b.lines.length + if (lenDiff != 0) return lenDiff + let aPos = a.find(), bPos = b.find() + let fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b) + if (fromCmp) return -fromCmp + let toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b) + if (toCmp) return toCmp + return b.id - a.id +} + +// Find out whether a line ends or starts in a collapsed span. If +// so, return the marker for that span. +function collapsedSpanAtSide(line, start) { + let sps = sawCollapsedSpans && line.markedSpans, found + if (sps) for (let sp, i = 0; i < sps.length; ++i) { + sp = sps[i] + if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) + found = sp.marker + } + return found +} +export function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) } +export function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) } + +// Test whether there exists a collapsed span that partially +// overlaps (covers the start or end, but not both) of a new span. +// Such overlap is not allowed. +export function conflictingCollapsedRange(doc, lineNo, from, to, marker) { + let line = getLine(doc, lineNo) + let sps = sawCollapsedSpans && line.markedSpans + if (sps) for (let i = 0; i < sps.length; ++i) { + let sp = sps[i] + if (!sp.marker.collapsed) continue + let found = sp.marker.find(0) + let fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker) + let toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker) + if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue + if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || + fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) + return true + } +} + +// A visual line is a line as drawn on the screen. Folding, for +// example, can cause multiple logical lines to appear on the same +// visual line. This finds the start of the visual line that the +// given line is part of (usually that is the line itself). +export function visualLine(line) { + let merged + while (merged = collapsedSpanAtStart(line)) + line = merged.find(-1, true).line + return line +} + +export function visualLineEnd(line) { + let merged + while (merged = collapsedSpanAtEnd(line)) + line = merged.find(1, true).line + return line +} + +// Returns an array of logical lines that continue the visual line +// started by the argument, or undefined if there are no such lines. +export function visualLineContinued(line) { + let merged, lines + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line + ;(lines || (lines = [])).push(line) + } + return lines +} + +// Get the line number of the start of the visual line that the +// given line number is part of. +export function visualLineNo(doc, lineN) { + let line = getLine(doc, lineN), vis = visualLine(line) + if (line == vis) return lineN + return lineNo(vis) +} + +// Get the line number of the start of the next visual line after +// the given line. +export function visualLineEndNo(doc, lineN) { + if (lineN > doc.lastLine()) return lineN + let line = getLine(doc, lineN), merged + if (!lineIsHidden(doc, line)) return lineN + while (merged = collapsedSpanAtEnd(line)) + line = merged.find(1, true).line + return lineNo(line) + 1 +} + +// Compute whether a line is hidden. Lines count as hidden when they +// are part of a visual line that starts with another line, or when +// they are entirely covered by collapsed, non-widget span. +export function lineIsHidden(doc, line) { + let sps = sawCollapsedSpans && line.markedSpans + if (sps) for (let sp, i = 0; i < sps.length; ++i) { + sp = sps[i] + if (!sp.marker.collapsed) continue + if (sp.from == null) return true + if (sp.marker.widgetNode) continue + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + return true + } +} +function lineIsHiddenInner(doc, line, span) { + if (span.to == null) { + let end = span.marker.find(1, true) + return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)) + } + if (span.marker.inclusiveRight && span.to == line.text.length) + return true + for (let sp, i = 0; i < line.markedSpans.length; ++i) { + sp = line.markedSpans[i] + if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && + (sp.to == null || sp.to != span.from) && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) return true + } +} + +// Find the height above the given line. +export function heightAtLine(lineObj) { + lineObj = visualLine(lineObj) + + let h = 0, chunk = lineObj.parent + for (let i = 0; i < chunk.lines.length; ++i) { + let line = chunk.lines[i] + if (line == lineObj) break + else h += line.height + } + for (let p = chunk.parent; p; chunk = p, p = chunk.parent) { + for (let i = 0; i < p.children.length; ++i) { + let cur = p.children[i] + if (cur == chunk) break + else h += cur.height + } + } + return h +} + +// Compute the character length of a line, taking into account +// collapsed ranges (see markText) that might hide parts, and join +// other lines onto it. +export function lineLength(line) { + if (line.height == 0) return 0 + let len = line.text.length, merged, cur = line + while (merged = collapsedSpanAtStart(cur)) { + let found = merged.find(0, true) + cur = found.from.line + len += found.from.ch - found.to.ch + } + cur = line + while (merged = collapsedSpanAtEnd(cur)) { + let found = merged.find(0, true) + len -= cur.text.length - found.from.ch + cur = found.to.line + len += cur.text.length - found.to.ch + } + return len +} + +// Find the longest line in the document. +export function findMaxLine(cm) { + let d = cm.display, doc = cm.doc + d.maxLine = getLine(doc, doc.first) + d.maxLineLength = lineLength(d.maxLine) + d.maxLineChanged = true + doc.iter(line => { + let len = lineLength(line) + if (len > d.maxLineLength) { + d.maxLineLength = len + d.maxLine = line + } + }) +} diff --git a/global/codemirror/src/line/utils_line.js b/global/codemirror/src/line/utils_line.js new file mode 100644 index 00000000..e4e6943f --- /dev/null +++ b/global/codemirror/src/line/utils_line.js @@ -0,0 +1,85 @@ +import { indexOf } from "../util/misc" + +// Find the line object corresponding to the given line number. +export function getLine(doc, n) { + n -= doc.first + if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document.") + let chunk = doc + while (!chunk.lines) { + for (let i = 0;; ++i) { + let child = chunk.children[i], sz = child.chunkSize() + if (n < sz) { chunk = child; break } + n -= sz + } + } + return chunk.lines[n] +} + +// Get the part of a document between two positions, as an array of +// strings. +export function getBetween(doc, start, end) { + let out = [], n = start.line + doc.iter(start.line, end.line + 1, line => { + let text = line.text + if (n == end.line) text = text.slice(0, end.ch) + if (n == start.line) text = text.slice(start.ch) + out.push(text) + ++n + }) + return out +} +// Get the lines between from and to, as array of strings. +export function getLines(doc, from, to) { + let out = [] + doc.iter(from, to, line => { out.push(line.text) }) // iter aborts when callback returns truthy value + return out +} + +// Update the height of a line, propagating the height change +// upwards to parent nodes. +export function updateLineHeight(line, height) { + let diff = height - line.height + if (diff) for (let n = line; n; n = n.parent) n.height += diff +} + +// Given a line object, find its line number by walking up through +// its parent links. +export function lineNo(line) { + if (line.parent == null) return null + let cur = line.parent, no = indexOf(cur.lines, line) + for (let chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (let i = 0;; ++i) { + if (chunk.children[i] == cur) break + no += chunk.children[i].chunkSize() + } + } + return no + cur.first +} + +// Find the line at the given vertical position, using the height +// information in the document tree. +export function lineAtHeight(chunk, h) { + let n = chunk.first + outer: do { + for (let i = 0; i < chunk.children.length; ++i) { + let child = chunk.children[i], ch = child.height + if (h < ch) { chunk = child; continue outer } + h -= ch + n += child.chunkSize() + } + return n + } while (!chunk.lines) + let i = 0 + for (; i < chunk.lines.length; ++i) { + let line = chunk.lines[i], lh = line.height + if (h < lh) break + h -= lh + } + return n + i +} + +export function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size} + +export function lineNumberFor(options, i) { + return String(options.lineNumberFormatter(i + options.firstLineNumber)) +} diff --git a/global/codemirror/src/measurement/position_measurement.js b/global/codemirror/src/measurement/position_measurement.js new file mode 100644 index 00000000..cc55fb4d --- /dev/null +++ b/global/codemirror/src/measurement/position_measurement.js @@ -0,0 +1,699 @@ +import { buildLineContent, LineView } from "../line/line_data" +import { clipPos, Pos } from "../line/pos" +import { collapsedSpanAtEnd, heightAtLine, lineIsHidden, visualLine } from "../line/spans" +import { getLine, lineAtHeight, lineNo, updateLineHeight } from "../line/utils_line" +import { bidiOther, getBidiPartAt, getOrder } from "../util/bidi" +import { chrome, android, ie, ie_version } from "../util/browser" +import { elt, removeChildren, range, removeChildrenAndAdd } from "../util/dom" +import { e_target } from "../util/event" +import { hasBadZoomedRects } from "../util/feature_detection" +import { countColumn, findFirst, isExtendingChar, scrollerGap, skipExtendingChars } from "../util/misc" +import { updateLineForChanges } from "../display/update_line" + +import { widgetHeight } from "./widgets" + +// POSITION MEASUREMENT + +export function paddingTop(display) {return display.lineSpace.offsetTop} +export function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight} +export function paddingH(display) { + if (display.cachedPaddingH) return display.cachedPaddingH + let e = removeChildrenAndAdd(display.measure, elt("pre", "x")) + let style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle + let data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)} + if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data + return data +} + +export function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth } +export function displayWidth(cm) { + return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth +} +export function displayHeight(cm) { + return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight +} + +// Ensure the lineView.wrapping.heights array is populated. This is +// an array of bottom offsets for the lines that make up a drawn +// line. When lineWrapping is on, there might be more than one +// height. +function ensureLineHeights(cm, lineView, rect) { + let wrapping = cm.options.lineWrapping + let curWidth = wrapping && displayWidth(cm) + if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { + let heights = lineView.measure.heights = [] + if (wrapping) { + lineView.measure.width = curWidth + let rects = lineView.text.firstChild.getClientRects() + for (let i = 0; i < rects.length - 1; i++) { + let cur = rects[i], next = rects[i + 1] + if (Math.abs(cur.bottom - next.bottom) > 2) + heights.push((cur.bottom + next.top) / 2 - rect.top) + } + } + heights.push(rect.bottom - rect.top) + } +} + +// Find a line map (mapping character offsets to text nodes) and a +// measurement cache for the given line number. (A line view might +// contain multiple lines when collapsed ranges are present.) +export function mapFromLineView(lineView, line, lineN) { + if (lineView.line == line) + return {map: lineView.measure.map, cache: lineView.measure.cache} + for (let i = 0; i < lineView.rest.length; i++) + if (lineView.rest[i] == line) + return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} + for (let i = 0; i < lineView.rest.length; i++) + if (lineNo(lineView.rest[i]) > lineN) + return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true} +} + +// Render a line into the hidden node display.externalMeasured. Used +// when measurement is needed for a line that's not in the viewport. +function updateExternalMeasurement(cm, line) { + line = visualLine(line) + let lineN = lineNo(line) + let view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN) + view.lineN = lineN + let built = view.built = buildLineContent(cm, view) + view.text = built.pre + removeChildrenAndAdd(cm.display.lineMeasure, built.pre) + return view +} + +// Get a {top, bottom, left, right} box (in line-local coordinates) +// for a given character. +export function measureChar(cm, line, ch, bias) { + return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias) +} + +// Find a line view that corresponds to the given line number. +export function findViewForLine(cm, lineN) { + if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) + return cm.display.view[findViewIndex(cm, lineN)] + let ext = cm.display.externalMeasured + if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) + return ext +} + +// Measurement can be split in two steps, the set-up work that +// applies to the whole line, and the measurement of the actual +// character. Functions like coordsChar, that need to do a lot of +// measurements in a row, can thus ensure that the set-up work is +// only done once. +export function prepareMeasureForLine(cm, line) { + let lineN = lineNo(line) + let view = findViewForLine(cm, lineN) + if (view && !view.text) { + view = null + } else if (view && view.changes) { + updateLineForChanges(cm, view, lineN, getDimensions(cm)) + cm.curOp.forceUpdate = true + } + if (!view) + view = updateExternalMeasurement(cm, line) + + let info = mapFromLineView(view, line, lineN) + return { + line: line, view: view, rect: null, + map: info.map, cache: info.cache, before: info.before, + hasHeights: false + } +} + +// Given a prepared measurement object, measures the position of an +// actual character (or fetches it from the cache). +export function measureCharPrepared(cm, prepared, ch, bias, varHeight) { + if (prepared.before) ch = -1 + let key = ch + (bias || ""), found + if (prepared.cache.hasOwnProperty(key)) { + found = prepared.cache[key] + } else { + if (!prepared.rect) + prepared.rect = prepared.view.text.getBoundingClientRect() + if (!prepared.hasHeights) { + ensureLineHeights(cm, prepared.view, prepared.rect) + prepared.hasHeights = true + } + found = measureCharInner(cm, prepared, ch, bias) + if (!found.bogus) prepared.cache[key] = found + } + return {left: found.left, right: found.right, + top: varHeight ? found.rtop : found.top, + bottom: varHeight ? found.rbottom : found.bottom} +} + +let nullRect = {left: 0, right: 0, top: 0, bottom: 0} + +export function nodeAndOffsetInLineMap(map, ch, bias) { + let node, start, end, collapse, mStart, mEnd + // First, search the line map for the text node corresponding to, + // or closest to, the target character. + for (let i = 0; i < map.length; i += 3) { + mStart = map[i] + mEnd = map[i + 1] + if (ch < mStart) { + start = 0; end = 1 + collapse = "left" + } else if (ch < mEnd) { + start = ch - mStart + end = start + 1 + } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { + end = mEnd - mStart + start = end - 1 + if (ch >= mEnd) collapse = "right" + } + if (start != null) { + node = map[i + 2] + if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) + collapse = bias + if (bias == "left" && start == 0) + while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { + node = map[(i -= 3) + 2] + collapse = "left" + } + if (bias == "right" && start == mEnd - mStart) + while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { + node = map[(i += 3) + 2] + collapse = "right" + } + break + } + } + return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd} +} + +function getUsefulRect(rects, bias) { + let rect = nullRect + if (bias == "left") for (let i = 0; i < rects.length; i++) { + if ((rect = rects[i]).left != rect.right) break + } else for (let i = rects.length - 1; i >= 0; i--) { + if ((rect = rects[i]).left != rect.right) break + } + return rect +} + +function measureCharInner(cm, prepared, ch, bias) { + let place = nodeAndOffsetInLineMap(prepared.map, ch, bias) + let node = place.node, start = place.start, end = place.end, collapse = place.collapse + + let rect + if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. + for (let i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned + while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start + while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end + if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) + rect = node.parentNode.getBoundingClientRect() + else + rect = getUsefulRect(range(node, start, end).getClientRects(), bias) + if (rect.left || rect.right || start == 0) break + end = start + start = start - 1 + collapse = "right" + } + if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect) + } else { // If it is a widget, simply get the box for the whole widget. + if (start > 0) collapse = bias = "right" + let rects + if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) + rect = rects[bias == "right" ? rects.length - 1 : 0] + else + rect = node.getBoundingClientRect() + } + if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { + let rSpan = node.parentNode.getClientRects()[0] + if (rSpan) + rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom} + else + rect = nullRect + } + + let rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top + let mid = (rtop + rbot) / 2 + let heights = prepared.view.measure.heights + let i = 0 + for (; i < heights.length - 1; i++) + if (mid < heights[i]) break + let top = i ? heights[i - 1] : 0, bot = heights[i] + let result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, + right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, + top: top, bottom: bot} + if (!rect.left && !rect.right) result.bogus = true + if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot } + + return result +} + +// Work around problem with bounding client rects on ranges being +// returned incorrectly when zoomed on IE10 and below. +function maybeUpdateRectForZooming(measure, rect) { + if (!window.screen || screen.logicalXDPI == null || + screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) + return rect + let scaleX = screen.logicalXDPI / screen.deviceXDPI + let scaleY = screen.logicalYDPI / screen.deviceYDPI + return {left: rect.left * scaleX, right: rect.right * scaleX, + top: rect.top * scaleY, bottom: rect.bottom * scaleY} +} + +export function clearLineMeasurementCacheFor(lineView) { + if (lineView.measure) { + lineView.measure.cache = {} + lineView.measure.heights = null + if (lineView.rest) for (let i = 0; i < lineView.rest.length; i++) + lineView.measure.caches[i] = {} + } +} + +export function clearLineMeasurementCache(cm) { + cm.display.externalMeasure = null + removeChildren(cm.display.lineMeasure) + for (let i = 0; i < cm.display.view.length; i++) + clearLineMeasurementCacheFor(cm.display.view[i]) +} + +export function clearCaches(cm) { + clearLineMeasurementCache(cm) + cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null + if (!cm.options.lineWrapping) cm.display.maxLineChanged = true + cm.display.lineNumChars = null +} + +function pageScrollX() { + // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206 + // which causes page_Offset and bounding client rects to use + // different reference viewports and invalidate our calculations. + if (chrome && android) return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) + return window.pageXOffset || (document.documentElement || document.body).scrollLeft +} +function pageScrollY() { + if (chrome && android) return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) + return window.pageYOffset || (document.documentElement || document.body).scrollTop +} + +function widgetTopHeight(lineObj) { + let height = 0 + if (lineObj.widgets) for (let i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) + height += widgetHeight(lineObj.widgets[i]) + return height +} + +// Converts a {top, bottom, left, right} box from line-local +// coordinates into another coordinate system. Context may be one of +// "line", "div" (display.lineDiv), "local"./null (editor), "window", +// or "page". +export function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) { + if (!includeWidgets) { + let height = widgetTopHeight(lineObj) + rect.top += height; rect.bottom += height + } + if (context == "line") return rect + if (!context) context = "local" + let yOff = heightAtLine(lineObj) + if (context == "local") yOff += paddingTop(cm.display) + else yOff -= cm.display.viewOffset + if (context == "page" || context == "window") { + let lOff = cm.display.lineSpace.getBoundingClientRect() + yOff += lOff.top + (context == "window" ? 0 : pageScrollY()) + let xOff = lOff.left + (context == "window" ? 0 : pageScrollX()) + rect.left += xOff; rect.right += xOff + } + rect.top += yOff; rect.bottom += yOff + return rect +} + +// Coverts a box from "div" coords to another coordinate system. +// Context may be "window", "page", "div", or "local"./null. +export function fromCoordSystem(cm, coords, context) { + if (context == "div") return coords + let left = coords.left, top = coords.top + // First move into "page" coordinate system + if (context == "page") { + left -= pageScrollX() + top -= pageScrollY() + } else if (context == "local" || !context) { + let localBox = cm.display.sizer.getBoundingClientRect() + left += localBox.left + top += localBox.top + } + + let lineSpaceBox = cm.display.lineSpace.getBoundingClientRect() + return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top} +} + +export function charCoords(cm, pos, context, lineObj, bias) { + if (!lineObj) lineObj = getLine(cm.doc, pos.line) + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context) +} + +// Returns a box for a given cursor position, which may have an +// 'other' property containing the position of the secondary cursor +// on a bidi boundary. +// A cursor Pos(line, char, "before") is on the same visual line as `char - 1` +// and after `char - 1` in writing order of `char - 1` +// A cursor Pos(line, char, "after") is on the same visual line as `char` +// and before `char` in writing order of `char` +// Examples (upper-case letters are RTL, lower-case are LTR): +// Pos(0, 1, ...) +// before after +// ab a|b a|b +// aB a|B aB| +// Ab |Ab A|b +// AB B|A B|A +// Every position after the last character on a line is considered to stick +// to the last character on the line. +export function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { + lineObj = lineObj || getLine(cm.doc, pos.line) + if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj) + function get(ch, right) { + let m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight) + if (right) m.left = m.right; else m.right = m.left + return intoCoordSystem(cm, lineObj, m, context) + } + let order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky + if (ch >= lineObj.text.length) { + ch = lineObj.text.length + sticky = "before" + } else if (ch <= 0) { + ch = 0 + sticky = "after" + } + if (!order) return get(sticky == "before" ? ch - 1 : ch, sticky == "before") + + function getBidi(ch, partPos, invert) { + let part = order[partPos], right = part.level == 1 + return get(invert ? ch - 1 : ch, right != invert) + } + let partPos = getBidiPartAt(order, ch, sticky) + let other = bidiOther + let val = getBidi(ch, partPos, sticky == "before") + if (other != null) val.other = getBidi(ch, other, sticky != "before") + return val +} + +// Used to cheaply estimate the coordinates for a position. Used for +// intermediate scroll updates. +export function estimateCoords(cm, pos) { + let left = 0 + pos = clipPos(cm.doc, pos) + if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch + let lineObj = getLine(cm.doc, pos.line) + let top = heightAtLine(lineObj) + paddingTop(cm.display) + return {left: left, right: left, top: top, bottom: top + lineObj.height} +} + +// Positions returned by coordsChar contain some extra information. +// xRel is the relative x position of the input coordinates compared +// to the found position (so xRel > 0 means the coordinates are to +// the right of the character position, for example). When outside +// is true, that means the coordinates lie outside the line's +// vertical range. +function PosWithInfo(line, ch, sticky, outside, xRel) { + let pos = Pos(line, ch, sticky) + pos.xRel = xRel + if (outside) pos.outside = true + return pos +} + +// Compute the character position closest to the given coordinates. +// Input must be lineSpace-local ("div" coordinate system). +export function coordsChar(cm, x, y) { + let doc = cm.doc + y += cm.display.viewOffset + if (y < 0) return PosWithInfo(doc.first, 0, null, true, -1) + let lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1 + if (lineN > last) + return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, true, 1) + if (x < 0) x = 0 + + let lineObj = getLine(doc, lineN) + for (;;) { + let found = coordsCharInner(cm, lineObj, lineN, x, y) + let merged = collapsedSpanAtEnd(lineObj) + let mergedPos = merged && merged.find(0, true) + if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) + lineN = lineNo(lineObj = mergedPos.to.line) + else + return found + } +} + +function wrappedLineExtent(cm, lineObj, preparedMeasure, y) { + y -= widgetTopHeight(lineObj) + let end = lineObj.text.length + let begin = findFirst(ch => measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y, end, 0) + end = findFirst(ch => measureCharPrepared(cm, preparedMeasure, ch).top > y, begin, end) + return {begin, end} +} + +export function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) { + if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj) + let targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), "line").top + return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop) +} + +// Returns true if the given side of a box is after the given +// coordinates, in top-to-bottom, left-to-right order. +function boxIsAfter(box, x, y, left) { + return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x +} + +function coordsCharInner(cm, lineObj, lineNo, x, y) { + // Move y into line-local coordinate space + y -= heightAtLine(lineObj) + let preparedMeasure = prepareMeasureForLine(cm, lineObj) + // When directly calling `measureCharPrepared`, we have to adjust + // for the widgets at this line. + let widgetHeight = widgetTopHeight(lineObj) + let begin = 0, end = lineObj.text.length, ltr = true + + let order = getOrder(lineObj, cm.doc.direction) + // If the line isn't plain left-to-right text, first figure out + // which bidi section the coordinates fall into. + if (order) { + let part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart) + (cm, lineObj, lineNo, preparedMeasure, order, x, y) + ltr = part.level != 1 + // The awkward -1 offsets are needed because findFirst (called + // on these below) will treat its first bound as inclusive, + // second as exclusive, but we want to actually address the + // characters in the part's range + begin = ltr ? part.from : part.to - 1 + end = ltr ? part.to : part.from - 1 + } + + // A binary search to find the first character whose bounding box + // starts after the coordinates. If we run across any whose box wrap + // the coordinates, store that. + let chAround = null, boxAround = null + let ch = findFirst(ch => { + let box = measureCharPrepared(cm, preparedMeasure, ch) + box.top += widgetHeight; box.bottom += widgetHeight + if (!boxIsAfter(box, x, y, false)) return false + if (box.top <= y && box.left <= x) { + chAround = ch + boxAround = box + } + return true + }, begin, end) + + let baseX, sticky, outside = false + // If a box around the coordinates was found, use that + if (boxAround) { + // Distinguish coordinates nearer to the left or right side of the box + let atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr + ch = chAround + (atStart ? 0 : 1) + sticky = atStart ? "after" : "before" + baseX = atLeft ? boxAround.left : boxAround.right + } else { + // (Adjust for extended bound, if necessary.) + if (!ltr && (ch == end || ch == begin)) ch++ + // To determine which side to associate with, get the box to the + // left of the character and compare it's vertical position to the + // coordinates + sticky = ch == 0 ? "after" : ch == lineObj.text.length ? "before" : + (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ? + "after" : "before" + // Now get accurate coordinates for this place, in order to get a + // base X position + let coords = cursorCoords(cm, Pos(lineNo, ch, sticky), "line", lineObj, preparedMeasure) + baseX = coords.left + outside = y < coords.top || y >= coords.bottom + } + + ch = skipExtendingChars(lineObj.text, ch, 1) + return PosWithInfo(lineNo, ch, sticky, outside, x - baseX) +} + +function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) { + // Bidi parts are sorted left-to-right, and in a non-line-wrapping + // situation, we can take this ordering to correspond to the visual + // ordering. This finds the first part whose end is after the given + // coordinates. + let index = findFirst(i => { + let part = order[i], ltr = part.level != 1 + return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? "before" : "after"), + "line", lineObj, preparedMeasure), x, y, true) + }, 0, order.length - 1) + let part = order[index] + // If this isn't the first part, the part's start is also after + // the coordinates, and the coordinates aren't on the same line as + // that start, move one part back. + if (index > 0) { + let ltr = part.level != 1 + let start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? "after" : "before"), + "line", lineObj, preparedMeasure) + if (boxIsAfter(start, x, y, true) && start.top > y) + part = order[index - 1] + } + return part +} + +function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) { + // In a wrapped line, rtl text on wrapping boundaries can do things + // that don't correspond to the ordering in our `order` array at + // all, so a binary search doesn't work, and we want to return a + // part that only spans one line so that the binary search in + // coordsCharInner is safe. As such, we first find the extent of the + // wrapped line, and then do a flat search in which we discard any + // spans that aren't on the line. + let {begin, end} = wrappedLineExtent(cm, lineObj, preparedMeasure, y) + let part = null, closestDist = null + for (let i = 0; i < order.length; i++) { + let p = order[i] + if (p.from >= end || p.to <= begin) continue + let ltr = p.level != 1 + let endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right + // Weigh against spans ending before this, so that they are only + // picked if nothing ends after + let dist = endX < x ? x - endX + 1e9 : endX - x + if (!part || closestDist > dist) { + part = p + closestDist = dist + } + } + if (!part) part = order[order.length - 1] + // Clip the part to the wrapped line. + if (part.from < begin) part = {from: begin, to: part.to, level: part.level} + if (part.to > end) part = {from: part.from, to: end, level: part.level} + return part +} + +let measureText +// Compute the default text height. +export function textHeight(display) { + if (display.cachedTextHeight != null) return display.cachedTextHeight + if (measureText == null) { + measureText = elt("pre") + // Measure a bunch of lines, for browsers that compute + // fractional heights. + for (let i = 0; i < 49; ++i) { + measureText.appendChild(document.createTextNode("x")) + measureText.appendChild(elt("br")) + } + measureText.appendChild(document.createTextNode("x")) + } + removeChildrenAndAdd(display.measure, measureText) + let height = measureText.offsetHeight / 50 + if (height > 3) display.cachedTextHeight = height + removeChildren(display.measure) + return height || 1 +} + +// Compute the default character width. +export function charWidth(display) { + if (display.cachedCharWidth != null) return display.cachedCharWidth + let anchor = elt("span", "xxxxxxxxxx") + let pre = elt("pre", [anchor]) + removeChildrenAndAdd(display.measure, pre) + let rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10 + if (width > 2) display.cachedCharWidth = width + return width || 10 +} + +// Do a bulk-read of the DOM positions and sizes needed to draw the +// view, so that we don't interleave reading and writing to the DOM. +export function getDimensions(cm) { + let d = cm.display, left = {}, width = {} + let gutterLeft = d.gutters.clientLeft + for (let n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { + left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft + width[cm.options.gutters[i]] = n.clientWidth + } + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth} +} + +// Computes display.scroller.scrollLeft + display.gutters.offsetWidth, +// but using getBoundingClientRect to get a sub-pixel-accurate +// result. +export function compensateForHScroll(display) { + return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left +} + +// Returns a function that estimates the height of a line, to use as +// first approximation until the line becomes visible (and is thus +// properly measurable). +export function estimateHeight(cm) { + let th = textHeight(cm.display), wrapping = cm.options.lineWrapping + let perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3) + return line => { + if (lineIsHidden(cm.doc, line)) return 0 + + let widgetsHeight = 0 + if (line.widgets) for (let i = 0; i < line.widgets.length; i++) { + if (line.widgets[i].height) widgetsHeight += line.widgets[i].height + } + + if (wrapping) + return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th + else + return widgetsHeight + th + } +} + +export function estimateLineHeights(cm) { + let doc = cm.doc, est = estimateHeight(cm) + doc.iter(line => { + let estHeight = est(line) + if (estHeight != line.height) updateLineHeight(line, estHeight) + }) +} + +// Given a mouse event, find the corresponding position. If liberal +// is false, it checks whether a gutter or scrollbar was clicked, +// and returns null if it was. forRect is used by rectangular +// selections, and tries to estimate a character position even for +// coordinates beyond the right of the text. +export function posFromMouse(cm, e, liberal, forRect) { + let display = cm.display + if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") return null + + let x, y, space = display.lineSpace.getBoundingClientRect() + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX - space.left; y = e.clientY - space.top } + catch (e) { return null } + let coords = coordsChar(cm, x, y), line + if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { + let colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length + coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)) + } + return coords +} + +// Find the view element corresponding to a given line. Return null +// when the line isn't visible. +export function findViewIndex(cm, n) { + if (n >= cm.display.viewTo) return null + n -= cm.display.viewFrom + if (n < 0) return null + let view = cm.display.view + for (let i = 0; i < view.length; i++) { + n -= view[i].size + if (n < 0) return i + } +} diff --git a/global/codemirror/src/measurement/widgets.js b/global/codemirror/src/measurement/widgets.js new file mode 100644 index 00000000..554cf809 --- /dev/null +++ b/global/codemirror/src/measurement/widgets.js @@ -0,0 +1,26 @@ +import { contains, elt, removeChildrenAndAdd } from "../util/dom" +import { e_target } from "../util/event" + +export function widgetHeight(widget) { + if (widget.height != null) return widget.height + let cm = widget.doc.cm + if (!cm) return 0 + if (!contains(document.body, widget.node)) { + let parentStyle = "position: relative;" + if (widget.coverGutter) + parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;" + if (widget.noHScroll) + parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;" + removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)) + } + return widget.height = widget.node.parentNode.offsetHeight +} + +// Return true when the given mouse event happened in a widget +export function eventInWidget(display, e) { + for (let n = e_target(e); n != display.wrapper; n = n.parentNode) { + if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || + (n.parentNode == display.sizer && n != display.mover)) + return true + } +} diff --git a/global/codemirror/src/model/Doc.js b/global/codemirror/src/model/Doc.js new file mode 100644 index 00000000..c3da76d7 --- /dev/null +++ b/global/codemirror/src/model/Doc.js @@ -0,0 +1,432 @@ +import CodeMirror from "../edit/CodeMirror" +import { docMethodOp } from "../display/operations" +import { Line } from "../line/line_data" +import { clipPos, clipPosArray, Pos } from "../line/pos" +import { visualLine } from "../line/spans" +import { getBetween, getLine, getLines, isLine, lineNo } from "../line/utils_line" +import { classTest } from "../util/dom" +import { splitLinesAuto } from "../util/feature_detection" +import { createObj, map, isEmpty, sel_dontScroll } from "../util/misc" +import { ensureCursorVisible, scrollToCoords } from "../display/scrolling" + +import { changeLine, makeChange, makeChangeFromHistory, replaceRange } from "./changes" +import { computeReplacedSel } from "./change_measurement" +import { BranchChunk, LeafChunk } from "./chunk" +import { directionChanged, linkedDocs, updateDoc } from "./document_data" +import { copyHistoryArray, History } from "./history" +import { addLineWidget } from "./line_widget" +import { copySharedMarkers, detachSharedMarkers, findSharedMarkers, markText } from "./mark_text" +import { normalizeSelection, Range, simpleSelection } from "./selection" +import { extendSelection, extendSelections, setSelection, setSelectionReplaceHistory, setSimpleSelection } from "./selection_updates" + +let nextDocId = 0 +let Doc = function(text, mode, firstLine, lineSep, direction) { + if (!(this instanceof Doc)) return new Doc(text, mode, firstLine, lineSep, direction) + if (firstLine == null) firstLine = 0 + + BranchChunk.call(this, [new LeafChunk([new Line("", null)])]) + this.first = firstLine + this.scrollTop = this.scrollLeft = 0 + this.cantEdit = false + this.cleanGeneration = 1 + this.modeFrontier = this.highlightFrontier = firstLine + let start = Pos(firstLine, 0) + this.sel = simpleSelection(start) + this.history = new History(null) + this.id = ++nextDocId + this.modeOption = mode + this.lineSep = lineSep + this.direction = (direction == "rtl") ? "rtl" : "ltr" + this.extend = false + + if (typeof text == "string") text = this.splitLines(text) + updateDoc(this, {from: start, to: start, text: text}) + setSelection(this, simpleSelection(start), sel_dontScroll) +} + +Doc.prototype = createObj(BranchChunk.prototype, { + constructor: Doc, + // Iterate over the document. Supports two forms -- with only one + // argument, it calls that for each line in the document. With + // three, it iterates over the range given by the first two (with + // the second being non-inclusive). + iter: function(from, to, op) { + if (op) this.iterN(from - this.first, to - from, op) + else this.iterN(this.first, this.first + this.size, from) + }, + + // Non-public interface for adding and removing lines. + insert: function(at, lines) { + let height = 0 + for (let i = 0; i < lines.length; ++i) height += lines[i].height + this.insertInner(at - this.first, lines, height) + }, + remove: function(at, n) { this.removeInner(at - this.first, n) }, + + // From here, the methods are part of the public interface. Most + // are also available from CodeMirror (editor) instances. + + getValue: function(lineSep) { + let lines = getLines(this, this.first, this.first + this.size) + if (lineSep === false) return lines + return lines.join(lineSep || this.lineSeparator()) + }, + setValue: docMethodOp(function(code) { + let top = Pos(this.first, 0), last = this.first + this.size - 1 + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: this.splitLines(code), origin: "setValue", full: true}, true) + if (this.cm) scrollToCoords(this.cm, 0, 0) + setSelection(this, simpleSelection(top), sel_dontScroll) + }), + replaceRange: function(code, from, to, origin) { + from = clipPos(this, from) + to = to ? clipPos(this, to) : from + replaceRange(this, code, from, to, origin) + }, + getRange: function(from, to, lineSep) { + let lines = getBetween(this, clipPos(this, from), clipPos(this, to)) + if (lineSep === false) return lines + return lines.join(lineSep || this.lineSeparator()) + }, + + getLine: function(line) {let l = this.getLineHandle(line); return l && l.text}, + + getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line)}, + getLineNumber: function(line) {return lineNo(line)}, + + getLineHandleVisualStart: function(line) { + if (typeof line == "number") line = getLine(this, line) + return visualLine(line) + }, + + lineCount: function() {return this.size}, + firstLine: function() {return this.first}, + lastLine: function() {return this.first + this.size - 1}, + + clipPos: function(pos) {return clipPos(this, pos)}, + + getCursor: function(start) { + let range = this.sel.primary(), pos + if (start == null || start == "head") pos = range.head + else if (start == "anchor") pos = range.anchor + else if (start == "end" || start == "to" || start === false) pos = range.to() + else pos = range.from() + return pos + }, + listSelections: function() { return this.sel.ranges }, + somethingSelected: function() {return this.sel.somethingSelected()}, + + setCursor: docMethodOp(function(line, ch, options) { + setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options) + }), + setSelection: docMethodOp(function(anchor, head, options) { + setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options) + }), + extendSelection: docMethodOp(function(head, other, options) { + extendSelection(this, clipPos(this, head), other && clipPos(this, other), options) + }), + extendSelections: docMethodOp(function(heads, options) { + extendSelections(this, clipPosArray(this, heads), options) + }), + extendSelectionsBy: docMethodOp(function(f, options) { + let heads = map(this.sel.ranges, f) + extendSelections(this, clipPosArray(this, heads), options) + }), + setSelections: docMethodOp(function(ranges, primary, options) { + if (!ranges.length) return + let out = [] + for (let i = 0; i < ranges.length; i++) + out[i] = new Range(clipPos(this, ranges[i].anchor), + clipPos(this, ranges[i].head)) + if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex) + setSelection(this, normalizeSelection(out, primary), options) + }), + addSelection: docMethodOp(function(anchor, head, options) { + let ranges = this.sel.ranges.slice(0) + ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))) + setSelection(this, normalizeSelection(ranges, ranges.length - 1), options) + }), + + getSelection: function(lineSep) { + let ranges = this.sel.ranges, lines + for (let i = 0; i < ranges.length; i++) { + let sel = getBetween(this, ranges[i].from(), ranges[i].to()) + lines = lines ? lines.concat(sel) : sel + } + if (lineSep === false) return lines + else return lines.join(lineSep || this.lineSeparator()) + }, + getSelections: function(lineSep) { + let parts = [], ranges = this.sel.ranges + for (let i = 0; i < ranges.length; i++) { + let sel = getBetween(this, ranges[i].from(), ranges[i].to()) + if (lineSep !== false) sel = sel.join(lineSep || this.lineSeparator()) + parts[i] = sel + } + return parts + }, + replaceSelection: function(code, collapse, origin) { + let dup = [] + for (let i = 0; i < this.sel.ranges.length; i++) + dup[i] = code + this.replaceSelections(dup, collapse, origin || "+input") + }, + replaceSelections: docMethodOp(function(code, collapse, origin) { + let changes = [], sel = this.sel + for (let i = 0; i < sel.ranges.length; i++) { + let range = sel.ranges[i] + changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin} + } + let newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse) + for (let i = changes.length - 1; i >= 0; i--) + makeChange(this, changes[i]) + if (newSel) setSelectionReplaceHistory(this, newSel) + else if (this.cm) ensureCursorVisible(this.cm) + }), + undo: docMethodOp(function() {makeChangeFromHistory(this, "undo")}), + redo: docMethodOp(function() {makeChangeFromHistory(this, "redo")}), + undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true)}), + redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true)}), + + setExtending: function(val) {this.extend = val}, + getExtending: function() {return this.extend}, + + historySize: function() { + let hist = this.history, done = 0, undone = 0 + for (let i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done + for (let i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone + return {undo: done, redo: undone} + }, + clearHistory: function() {this.history = new History(this.history.maxGeneration)}, + + markClean: function() { + this.cleanGeneration = this.changeGeneration(true) + }, + changeGeneration: function(forceSplit) { + if (forceSplit) + this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null + return this.history.generation + }, + isClean: function (gen) { + return this.history.generation == (gen || this.cleanGeneration) + }, + + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)} + }, + setHistory: function(histData) { + let hist = this.history = new History(this.history.maxGeneration) + hist.done = copyHistoryArray(histData.done.slice(0), null, true) + hist.undone = copyHistoryArray(histData.undone.slice(0), null, true) + }, + + setGutterMarker: docMethodOp(function(line, gutterID, value) { + return changeLine(this, line, "gutter", line => { + let markers = line.gutterMarkers || (line.gutterMarkers = {}) + markers[gutterID] = value + if (!value && isEmpty(markers)) line.gutterMarkers = null + return true + }) + }), + + clearGutter: docMethodOp(function(gutterID) { + this.iter(line => { + if (line.gutterMarkers && line.gutterMarkers[gutterID]) { + changeLine(this, line, "gutter", () => { + line.gutterMarkers[gutterID] = null + if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null + return true + }) + } + }) + }), + + lineInfo: function(line) { + let n + if (typeof line == "number") { + if (!isLine(this, line)) return null + n = line + line = getLine(this, line) + if (!line) return null + } else { + n = lineNo(line) + if (n == null) return null + } + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets} + }, + + addLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", line => { + let prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass" + if (!line[prop]) line[prop] = cls + else if (classTest(cls).test(line[prop])) return false + else line[prop] += " " + cls + return true + }) + }), + removeLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", line => { + let prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass" + let cur = line[prop] + if (!cur) return false + else if (cls == null) line[prop] = null + else { + let found = cur.match(classTest(cls)) + if (!found) return false + let end = found.index + found[0].length + line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null + } + return true + }) + }), + + addLineWidget: docMethodOp(function(handle, node, options) { + return addLineWidget(this, handle, node, options) + }), + removeLineWidget: function(widget) { widget.clear() }, + + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range") + }, + setBookmark: function(pos, options) { + let realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft, + clearWhenEmpty: false, shared: options && options.shared, + handleMouseEvents: options && options.handleMouseEvents} + pos = clipPos(this, pos) + return markText(this, pos, pos, realOpts, "bookmark") + }, + findMarksAt: function(pos) { + pos = clipPos(this, pos) + let markers = [], spans = getLine(this, pos.line).markedSpans + if (spans) for (let i = 0; i < spans.length; ++i) { + let span = spans[i] + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + markers.push(span.marker.parent || span.marker) + } + return markers + }, + findMarks: function(from, to, filter) { + from = clipPos(this, from); to = clipPos(this, to) + let found = [], lineNo = from.line + this.iter(from.line, to.line + 1, line => { + let spans = line.markedSpans + if (spans) for (let i = 0; i < spans.length; i++) { + let span = spans[i] + if (!(span.to != null && lineNo == from.line && from.ch >= span.to || + span.from == null && lineNo != from.line || + span.from != null && lineNo == to.line && span.from >= to.ch) && + (!filter || filter(span.marker))) + found.push(span.marker.parent || span.marker) + } + ++lineNo + }) + return found + }, + getAllMarks: function() { + let markers = [] + this.iter(line => { + let sps = line.markedSpans + if (sps) for (let i = 0; i < sps.length; ++i) + if (sps[i].from != null) markers.push(sps[i].marker) + }) + return markers + }, + + posFromIndex: function(off) { + let ch, lineNo = this.first, sepSize = this.lineSeparator().length + this.iter(line => { + let sz = line.text.length + sepSize + if (sz > off) { ch = off; return true } + off -= sz + ++lineNo + }) + return clipPos(this, Pos(lineNo, ch)) + }, + indexFromPos: function (coords) { + coords = clipPos(this, coords) + let index = coords.ch + if (coords.line < this.first || coords.ch < 0) return 0 + let sepSize = this.lineSeparator().length + this.iter(this.first, coords.line, line => { // iter aborts when callback returns a truthy value + index += line.text.length + sepSize + }) + return index + }, + + copy: function(copyHistory) { + let doc = new Doc(getLines(this, this.first, this.first + this.size), + this.modeOption, this.first, this.lineSep, this.direction) + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft + doc.sel = this.sel + doc.extend = false + if (copyHistory) { + doc.history.undoDepth = this.history.undoDepth + doc.setHistory(this.getHistory()) + } + return doc + }, + + linkedDoc: function(options) { + if (!options) options = {} + let from = this.first, to = this.first + this.size + if (options.from != null && options.from > from) from = options.from + if (options.to != null && options.to < to) to = options.to + let copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction) + if (options.sharedHist) copy.history = this.history + ;(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}) + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}] + copySharedMarkers(copy, findSharedMarkers(this)) + return copy + }, + unlinkDoc: function(other) { + if (other instanceof CodeMirror) other = other.doc + if (this.linked) for (let i = 0; i < this.linked.length; ++i) { + let link = this.linked[i] + if (link.doc != other) continue + this.linked.splice(i, 1) + other.unlinkDoc(this) + detachSharedMarkers(findSharedMarkers(this)) + break + } + // If the histories were shared, split them again + if (other.history == this.history) { + let splitIds = [other.id] + linkedDocs(other, doc => splitIds.push(doc.id), true) + other.history = new History(null) + other.history.done = copyHistoryArray(this.history.done, splitIds) + other.history.undone = copyHistoryArray(this.history.undone, splitIds) + } + }, + iterLinkedDocs: function(f) {linkedDocs(this, f)}, + + getMode: function() {return this.mode}, + getEditor: function() {return this.cm}, + + splitLines: function(str) { + if (this.lineSep) return str.split(this.lineSep) + return splitLinesAuto(str) + }, + lineSeparator: function() { return this.lineSep || "\n" }, + + setDirection: docMethodOp(function (dir) { + if (dir != "rtl") dir = "ltr" + if (dir == this.direction) return + this.direction = dir + this.iter(line => line.order = null) + if (this.cm) directionChanged(this.cm) + }) +}) + +// Public alias. +Doc.prototype.eachLine = Doc.prototype.iter + +export default Doc diff --git a/global/codemirror/src/model/change_measurement.js b/global/codemirror/src/model/change_measurement.js new file mode 100644 index 00000000..881f39eb --- /dev/null +++ b/global/codemirror/src/model/change_measurement.js @@ -0,0 +1,61 @@ +import { cmp, Pos } from "../line/pos" +import { lst } from "../util/misc" + +import { normalizeSelection, Range, Selection } from "./selection" + +// Compute the position of the end of a change (its 'to' property +// refers to the pre-change end). +export function changeEnd(change) { + if (!change.text) return change.to + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)) +} + +// Adjust a position to refer to the post-change position of the +// same text, or the end of the change if the change covers it. +function adjustForChange(pos, change) { + if (cmp(pos, change.from) < 0) return pos + if (cmp(pos, change.to) <= 0) return changeEnd(change) + + let line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch + if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch + return Pos(line, ch) +} + +export function computeSelAfterChange(doc, change) { + let out = [] + for (let i = 0; i < doc.sel.ranges.length; i++) { + let range = doc.sel.ranges[i] + out.push(new Range(adjustForChange(range.anchor, change), + adjustForChange(range.head, change))) + } + return normalizeSelection(out, doc.sel.primIndex) +} + +function offsetPos(pos, old, nw) { + if (pos.line == old.line) + return Pos(nw.line, pos.ch - old.ch + nw.ch) + else + return Pos(nw.line + (pos.line - old.line), pos.ch) +} + +// Used by replaceSelections to allow moving the selection to the +// start or around the replaced test. Hint may be "start" or "around". +export function computeReplacedSel(doc, changes, hint) { + let out = [] + let oldPrev = Pos(doc.first, 0), newPrev = oldPrev + for (let i = 0; i < changes.length; i++) { + let change = changes[i] + let from = offsetPos(change.from, oldPrev, newPrev) + let to = offsetPos(changeEnd(change), oldPrev, newPrev) + oldPrev = change.to + newPrev = to + if (hint == "around") { + let range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0 + out[i] = new Range(inv ? to : from, inv ? from : to) + } else { + out[i] = new Range(from, from) + } + } + return new Selection(out, doc.sel.primIndex) +} diff --git a/global/codemirror/src/model/changes.js b/global/codemirror/src/model/changes.js new file mode 100644 index 00000000..cfad529c --- /dev/null +++ b/global/codemirror/src/model/changes.js @@ -0,0 +1,330 @@ +import { retreatFrontier } from "../line/highlight" +import { startWorker } from "../display/highlight_worker" +import { operation } from "../display/operations" +import { regChange, regLineChange } from "../display/view_tracking" +import { clipLine, clipPos, cmp, Pos } from "../line/pos" +import { sawReadOnlySpans } from "../line/saw_special_spans" +import { lineLength, removeReadOnlyRanges, stretchSpansOverChange, visualLine } from "../line/spans" +import { getBetween, getLine, lineNo } from "../line/utils_line" +import { estimateHeight } from "../measurement/position_measurement" +import { hasHandler, signal, signalCursorActivity } from "../util/event" +import { indexOf, lst, map, sel_dontScroll } from "../util/misc" +import { signalLater } from "../util/operation_group" + +import { changeEnd, computeSelAfterChange } from "./change_measurement" +import { isWholeLineUpdate, linkedDocs, updateDoc } from "./document_data" +import { addChangeToHistory, historyChangeFromChange, mergeOldSpans, pushSelectionToHistory } from "./history" +import { Range, Selection } from "./selection" +import { setSelection, setSelectionNoUndo } from "./selection_updates" + +// UPDATING + +// Allow "beforeChange" event handlers to influence a change +function filterChange(doc, change, update) { + let obj = { + canceled: false, + from: change.from, + to: change.to, + text: change.text, + origin: change.origin, + cancel: () => obj.canceled = true + } + if (update) obj.update = (from, to, text, origin) => { + if (from) obj.from = clipPos(doc, from) + if (to) obj.to = clipPos(doc, to) + if (text) obj.text = text + if (origin !== undefined) obj.origin = origin + } + signal(doc, "beforeChange", doc, obj) + if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj) + + if (obj.canceled) return null + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin} +} + +// Apply a change to a document, and add it to the document's +// history, and propagating it to all linked documents. +export function makeChange(doc, change, ignoreReadOnly) { + if (doc.cm) { + if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) + if (doc.cm.state.suppressEdits) return + } + + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { + change = filterChange(doc, change, true) + if (!change) return + } + + // Possibly split or suppress the update based on the presence + // of read-only spans in its range. + let split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to) + if (split) { + for (let i = split.length - 1; i >= 0; --i) + makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text, origin: change.origin}) + } else { + makeChangeInner(doc, change) + } +} + +function makeChangeInner(doc, change) { + if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return + let selAfter = computeSelAfterChange(doc, change) + addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN) + + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)) + let rebased = [] + + linkedDocs(doc, (doc, sharedHist) => { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change) + rebased.push(doc.history) + } + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)) + }) +} + +// Revert a change stored in a document's history. +export function makeChangeFromHistory(doc, type, allowSelectionOnly) { + if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) return + + let hist = doc.history, event, selAfter = doc.sel + let source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done + + // Verify that there is a useable event (so that ctrl-z won't + // needlessly clear selection events) + let i = 0 + for (; i < source.length; i++) { + event = source[i] + if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) + break + } + if (i == source.length) return + hist.lastOrigin = hist.lastSelOrigin = null + + for (;;) { + event = source.pop() + if (event.ranges) { + pushSelectionToHistory(event, dest) + if (allowSelectionOnly && !event.equals(doc.sel)) { + setSelection(doc, event, {clearRedo: false}) + return + } + selAfter = event + } + else break + } + + // Build up a reverse change object to add to the opposite history + // stack (redo when undoing, and vice versa). + let antiChanges = [] + pushSelectionToHistory(selAfter, dest) + dest.push({changes: antiChanges, generation: hist.generation}) + hist.generation = event.generation || ++hist.maxGeneration + + let filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange") + + for (let i = event.changes.length - 1; i >= 0; --i) { + let change = event.changes[i] + change.origin = type + if (filter && !filterChange(doc, change, false)) { + source.length = 0 + return + } + + antiChanges.push(historyChangeFromChange(doc, change)) + + let after = i ? computeSelAfterChange(doc, change) : lst(source) + makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)) + if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}) + let rebased = [] + + // Propagate to the linked documents + linkedDocs(doc, (doc, sharedHist) => { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change) + rebased.push(doc.history) + } + makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)) + }) + } +} + +// Sub-views need their line numbers shifted when text is added +// above or below them in the parent document. +function shiftDoc(doc, distance) { + if (distance == 0) return + doc.first += distance + doc.sel = new Selection(map(doc.sel.ranges, range => new Range( + Pos(range.anchor.line + distance, range.anchor.ch), + Pos(range.head.line + distance, range.head.ch) + )), doc.sel.primIndex) + if (doc.cm) { + regChange(doc.cm, doc.first, doc.first - distance, distance) + for (let d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) + regLineChange(doc.cm, l, "gutter") + } +} + +// More lower-level change function, handling only a single document +// (not linked ones). +function makeChangeSingleDoc(doc, change, selAfter, spans) { + if (doc.cm && !doc.cm.curOp) + return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) + + if (change.to.line < doc.first) { + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)) + return + } + if (change.from.line > doc.lastLine()) return + + // Clip the change to the size of this doc + if (change.from.line < doc.first) { + let shift = change.text.length - 1 - (doc.first - change.from.line) + shiftDoc(doc, shift) + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin} + } + let last = doc.lastLine() + if (change.to.line > last) { + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin} + } + + change.removed = getBetween(doc, change.from, change.to) + + if (!selAfter) selAfter = computeSelAfterChange(doc, change) + if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans) + else updateDoc(doc, change, spans) + setSelectionNoUndo(doc, selAfter, sel_dontScroll) +} + +// Handle the interaction of a change to a document with the editor +// that this document is part of. +function makeChangeSingleDocInEditor(cm, change, spans) { + let doc = cm.doc, display = cm.display, from = change.from, to = change.to + + let recomputeMaxLength = false, checkWidthStart = from.line + if (!cm.options.lineWrapping) { + checkWidthStart = lineNo(visualLine(getLine(doc, from.line))) + doc.iter(checkWidthStart, to.line + 1, line => { + if (line == display.maxLine) { + recomputeMaxLength = true + return true + } + }) + } + + if (doc.sel.contains(change.from, change.to) > -1) + signalCursorActivity(cm) + + updateDoc(doc, change, spans, estimateHeight(cm)) + + if (!cm.options.lineWrapping) { + doc.iter(checkWidthStart, from.line + change.text.length, line => { + let len = lineLength(line) + if (len > display.maxLineLength) { + display.maxLine = line + display.maxLineLength = len + display.maxLineChanged = true + recomputeMaxLength = false + } + }) + if (recomputeMaxLength) cm.curOp.updateMaxLine = true + } + + retreatFrontier(doc, from.line) + startWorker(cm, 400) + + let lendiff = change.text.length - (to.line - from.line) - 1 + // Remember that these lines changed, for updating the display + if (change.full) + regChange(cm) + else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) + regLineChange(cm, from.line, "text") + else + regChange(cm, from.line, to.line + 1, lendiff) + + let changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change") + if (changeHandler || changesHandler) { + let obj = { + from: from, to: to, + text: change.text, + removed: change.removed, + origin: change.origin + } + if (changeHandler) signalLater(cm, "change", cm, obj) + if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj) + } + cm.display.selForContextMenu = null +} + +export function replaceRange(doc, code, from, to, origin) { + if (!to) to = from + if (cmp(to, from) < 0) [from, to] = [to, from] + if (typeof code == "string") code = doc.splitLines(code) + makeChange(doc, {from, to, text: code, origin}) +} + +// Rebasing/resetting history to deal with externally-sourced changes + +function rebaseHistSelSingle(pos, from, to, diff) { + if (to < pos.line) { + pos.line += diff + } else if (from < pos.line) { + pos.line = from + pos.ch = 0 + } +} + +// Tries to rebase an array of history events given a change in the +// document. If the change touches the same lines as the event, the +// event, and everything 'behind' it, is discarded. If the change is +// before the event, the event's positions are updated. Uses a +// copy-on-write scheme for the positions, to avoid having to +// reallocate them all on every rebase, but also avoid problems with +// shared position objects being unsafely updated. +function rebaseHistArray(array, from, to, diff) { + for (let i = 0; i < array.length; ++i) { + let sub = array[i], ok = true + if (sub.ranges) { + if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true } + for (let j = 0; j < sub.ranges.length; j++) { + rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff) + rebaseHistSelSingle(sub.ranges[j].head, from, to, diff) + } + continue + } + for (let j = 0; j < sub.changes.length; ++j) { + let cur = sub.changes[j] + if (to < cur.from.line) { + cur.from = Pos(cur.from.line + diff, cur.from.ch) + cur.to = Pos(cur.to.line + diff, cur.to.ch) + } else if (from <= cur.to.line) { + ok = false + break + } + } + if (!ok) { + array.splice(0, i + 1) + i = 0 + } + } +} + +function rebaseHist(hist, change) { + let from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1 + rebaseHistArray(hist.done, from, to, diff) + rebaseHistArray(hist.undone, from, to, diff) +} + +// Utility for applying a change to a line by handle or number, +// returning the number and optionally registering the line as +// changed. +export function changeLine(doc, handle, changeType, op) { + let no = handle, line = handle + if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)) + else no = lineNo(handle) + if (no == null) return null + if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType) + return line +} diff --git a/global/codemirror/src/model/chunk.js b/global/codemirror/src/model/chunk.js new file mode 100644 index 00000000..056ef91b --- /dev/null +++ b/global/codemirror/src/model/chunk.js @@ -0,0 +1,167 @@ +import { cleanUpLine } from "../line/line_data" +import { indexOf } from "../util/misc" +import { signalLater } from "../util/operation_group" + +// The document is represented as a BTree consisting of leaves, with +// chunk of lines in them, and branches, with up to ten leaves or +// other branch nodes below them. The top node is always a branch +// node, and is the document object itself (meaning it has +// additional methods and properties). +// +// All nodes have parent links. The tree is used both to go from +// line numbers to line objects, and to go from objects to numbers. +// It also indexes by height, and is used to convert between height +// and line object, and to find the total height of the document. +// +// See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html + +export function LeafChunk(lines) { + this.lines = lines + this.parent = null + let height = 0 + for (let i = 0; i < lines.length; ++i) { + lines[i].parent = this + height += lines[i].height + } + this.height = height +} + +LeafChunk.prototype = { + chunkSize() { return this.lines.length }, + + // Remove the n lines at offset 'at'. + removeInner(at, n) { + for (let i = at, e = at + n; i < e; ++i) { + let line = this.lines[i] + this.height -= line.height + cleanUpLine(line) + signalLater(line, "delete") + } + this.lines.splice(at, n) + }, + + // Helper used to collapse a small branch into a single leaf. + collapse(lines) { + lines.push.apply(lines, this.lines) + }, + + // Insert the given array of lines at offset 'at', count them as + // having the given height. + insertInner(at, lines, height) { + this.height += height + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)) + for (let i = 0; i < lines.length; ++i) lines[i].parent = this + }, + + // Used to iterate over a part of the tree. + iterN(at, n, op) { + for (let e = at + n; at < e; ++at) + if (op(this.lines[at])) return true + } +} + +export function BranchChunk(children) { + this.children = children + let size = 0, height = 0 + for (let i = 0; i < children.length; ++i) { + let ch = children[i] + size += ch.chunkSize(); height += ch.height + ch.parent = this + } + this.size = size + this.height = height + this.parent = null +} + +BranchChunk.prototype = { + chunkSize() { return this.size }, + + removeInner(at, n) { + this.size -= n + for (let i = 0; i < this.children.length; ++i) { + let child = this.children[i], sz = child.chunkSize() + if (at < sz) { + let rm = Math.min(n, sz - at), oldHeight = child.height + child.removeInner(at, rm) + this.height -= oldHeight - child.height + if (sz == rm) { this.children.splice(i--, 1); child.parent = null } + if ((n -= rm) == 0) break + at = 0 + } else at -= sz + } + // If the result is smaller than 25 lines, ensure that it is a + // single leaf node. + if (this.size - n < 25 && + (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { + let lines = [] + this.collapse(lines) + this.children = [new LeafChunk(lines)] + this.children[0].parent = this + } + }, + + collapse(lines) { + for (let i = 0; i < this.children.length; ++i) this.children[i].collapse(lines) + }, + + insertInner(at, lines, height) { + this.size += lines.length + this.height += height + for (let i = 0; i < this.children.length; ++i) { + let child = this.children[i], sz = child.chunkSize() + if (at <= sz) { + child.insertInner(at, lines, height) + if (child.lines && child.lines.length > 50) { + // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. + // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. + let remaining = child.lines.length % 25 + 25 + for (let pos = remaining; pos < child.lines.length;) { + let leaf = new LeafChunk(child.lines.slice(pos, pos += 25)) + child.height -= leaf.height + this.children.splice(++i, 0, leaf) + leaf.parent = this + } + child.lines = child.lines.slice(0, remaining) + this.maybeSpill() + } + break + } + at -= sz + } + }, + + // When a node has grown, check whether it should be split. + maybeSpill() { + if (this.children.length <= 10) return + let me = this + do { + let spilled = me.children.splice(me.children.length - 5, 5) + let sibling = new BranchChunk(spilled) + if (!me.parent) { // Become the parent node + let copy = new BranchChunk(me.children) + copy.parent = me + me.children = [copy, sibling] + me = copy + } else { + me.size -= sibling.size + me.height -= sibling.height + let myIndex = indexOf(me.parent.children, me) + me.parent.children.splice(myIndex + 1, 0, sibling) + } + sibling.parent = me.parent + } while (me.children.length > 10) + me.parent.maybeSpill() + }, + + iterN(at, n, op) { + for (let i = 0; i < this.children.length; ++i) { + let child = this.children[i], sz = child.chunkSize() + if (at < sz) { + let used = Math.min(n, sz - at) + if (child.iterN(at, used, op)) return true + if ((n -= used) == 0) break + at = 0 + } else at -= sz + } + } +} diff --git a/global/codemirror/src/model/document_data.js b/global/codemirror/src/model/document_data.js new file mode 100644 index 00000000..7f6e3367 --- /dev/null +++ b/global/codemirror/src/model/document_data.js @@ -0,0 +1,111 @@ +import { loadMode } from "../display/mode_state" +import { runInOp } from "../display/operations" +import { regChange } from "../display/view_tracking" +import { Line, updateLine } from "../line/line_data" +import { findMaxLine } from "../line/spans" +import { getLine } from "../line/utils_line" +import { estimateLineHeights } from "../measurement/position_measurement" +import { addClass, rmClass } from "../util/dom" +import { lst } from "../util/misc" +import { signalLater } from "../util/operation_group" + +// DOCUMENT DATA STRUCTURE + +// By default, updates that start and end at the beginning of a line +// are treated specially, in order to make the association of line +// widgets and marker elements with the text behave more intuitive. +export function isWholeLineUpdate(doc, change) { + return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && + (!doc.cm || doc.cm.options.wholeLineUpdateBefore) +} + +// Perform a change on the document data structure. +export function updateDoc(doc, change, markedSpans, estimateHeight) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null} + function update(line, text, spans) { + updateLine(line, text, spans, estimateHeight) + signalLater(line, "change", line, change) + } + function linesFor(start, end) { + let result = [] + for (let i = start; i < end; ++i) + result.push(new Line(text[i], spansFor(i), estimateHeight)) + return result + } + + let from = change.from, to = change.to, text = change.text + let firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line) + let lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line + + // Adjust the line structure + if (change.full) { + doc.insert(0, linesFor(0, text.length)) + doc.remove(text.length, doc.size - text.length) + } else if (isWholeLineUpdate(doc, change)) { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + let added = linesFor(0, text.length - 1) + update(lastLine, lastLine.text, lastSpans) + if (nlines) doc.remove(from.line, nlines) + if (added.length) doc.insert(from.line, added) + } else if (firstLine == lastLine) { + if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans) + } else { + let added = linesFor(1, text.length - 1) + added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)) + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)) + doc.insert(from.line + 1, added) + } + } else if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)) + doc.remove(from.line + 1, nlines) + } else { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)) + update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans) + let added = linesFor(1, text.length - 1) + if (nlines > 1) doc.remove(from.line + 1, nlines - 1) + doc.insert(from.line + 1, added) + } + + signalLater(doc, "change", doc, change) +} + +// Call f for all linked documents. +export function linkedDocs(doc, f, sharedHistOnly) { + function propagate(doc, skip, sharedHist) { + if (doc.linked) for (let i = 0; i < doc.linked.length; ++i) { + let rel = doc.linked[i] + if (rel.doc == skip) continue + let shared = sharedHist && rel.sharedHist + if (sharedHistOnly && !shared) continue + f(rel.doc, shared) + propagate(rel.doc, doc, shared) + } + } + propagate(doc, null, true) +} + +// Attach a document to an editor. +export function attachDoc(cm, doc) { + if (doc.cm) throw new Error("This document is already in use.") + cm.doc = doc + doc.cm = cm + estimateLineHeights(cm) + loadMode(cm) + setDirectionClass(cm) + if (!cm.options.lineWrapping) findMaxLine(cm) + cm.options.mode = doc.modeOption + regChange(cm) +} + +function setDirectionClass(cm) { + ;(cm.doc.direction == "rtl" ? addClass : rmClass)(cm.display.lineDiv, "CodeMirror-rtl") +} + +export function directionChanged(cm) { + runInOp(cm, () => { + setDirectionClass(cm) + regChange(cm) + }) +} diff --git a/global/codemirror/src/model/history.js b/global/codemirror/src/model/history.js new file mode 100644 index 00000000..83938cf4 --- /dev/null +++ b/global/codemirror/src/model/history.js @@ -0,0 +1,228 @@ +import { cmp, copyPos } from "../line/pos" +import { stretchSpansOverChange } from "../line/spans" +import { getBetween } from "../line/utils_line" +import { signal } from "../util/event" +import { indexOf, lst } from "../util/misc" + +import { changeEnd } from "./change_measurement" +import { linkedDocs } from "./document_data" +import { Selection } from "./selection" + +export function History(startGen) { + // Arrays of change events and selections. Doing something adds an + // event to done and clears undo. Undoing moves events from done + // to undone, redoing moves them in the other direction. + this.done = []; this.undone = [] + this.undoDepth = Infinity + // Used to track when changes can be merged into a single undo + // event + this.lastModTime = this.lastSelTime = 0 + this.lastOp = this.lastSelOp = null + this.lastOrigin = this.lastSelOrigin = null + // Used by the isClean() method + this.generation = this.maxGeneration = startGen || 1 +} + +// Create a history change event from an updateDoc-style change +// object. +export function historyChangeFromChange(doc, change) { + let histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)} + attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1) + linkedDocs(doc, doc => attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1), true) + return histChange +} + +// Pop all selection events off the end of a history array. Stop at +// a change event. +function clearSelectionEvents(array) { + while (array.length) { + let last = lst(array) + if (last.ranges) array.pop() + else break + } +} + +// Find the top change event in the history. Pop off selection +// events that are in the way. +function lastChangeEvent(hist, force) { + if (force) { + clearSelectionEvents(hist.done) + return lst(hist.done) + } else if (hist.done.length && !lst(hist.done).ranges) { + return lst(hist.done) + } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { + hist.done.pop() + return lst(hist.done) + } +} + +// Register a change in the history. Merges changes that are within +// a single operation, or are close together with an origin that +// allows merging (starting with "+") into a single event. +export function addChangeToHistory(doc, change, selAfter, opId) { + let hist = doc.history + hist.undone.length = 0 + let time = +new Date, cur + let last + + if ((hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || + change.origin.charAt(0) == "*")) && + (cur = lastChangeEvent(hist, hist.lastOp == opId))) { + // Merge this change into the last event + last = lst(cur.changes) + if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { + // Optimized case for simple insertion -- don't want to add + // new changesets for every character typed + last.to = changeEnd(change) + } else { + // Add new sub-event + cur.changes.push(historyChangeFromChange(doc, change)) + } + } else { + // Can not be merged, start a new event. + let before = lst(hist.done) + if (!before || !before.ranges) + pushSelectionToHistory(doc.sel, hist.done) + cur = {changes: [historyChangeFromChange(doc, change)], + generation: hist.generation} + hist.done.push(cur) + while (hist.done.length > hist.undoDepth) { + hist.done.shift() + if (!hist.done[0].ranges) hist.done.shift() + } + } + hist.done.push(selAfter) + hist.generation = ++hist.maxGeneration + hist.lastModTime = hist.lastSelTime = time + hist.lastOp = hist.lastSelOp = opId + hist.lastOrigin = hist.lastSelOrigin = change.origin + + if (!last) signal(doc, "historyAdded") +} + +function selectionEventCanBeMerged(doc, origin, prev, sel) { + let ch = origin.charAt(0) + return ch == "*" || + ch == "+" && + prev.ranges.length == sel.ranges.length && + prev.somethingSelected() == sel.somethingSelected() && + new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500) +} + +// Called whenever the selection changes, sets the new selection as +// the pending selection in the history, and pushes the old pending +// selection into the 'done' array when it was significantly +// different (in number of selected ranges, emptiness, or time). +export function addSelectionToHistory(doc, sel, opId, options) { + let hist = doc.history, origin = options && options.origin + + // A new event is started when the previous origin does not match + // the current, or the origins don't allow matching. Origins + // starting with * are always merged, those starting with + are + // merged when similar and close together in time. + if (opId == hist.lastSelOp || + (origin && hist.lastSelOrigin == origin && + (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || + selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) + hist.done[hist.done.length - 1] = sel + else + pushSelectionToHistory(sel, hist.done) + + hist.lastSelTime = +new Date + hist.lastSelOrigin = origin + hist.lastSelOp = opId + if (options && options.clearRedo !== false) + clearSelectionEvents(hist.undone) +} + +export function pushSelectionToHistory(sel, dest) { + let top = lst(dest) + if (!(top && top.ranges && top.equals(sel))) + dest.push(sel) +} + +// Used to store marked span information in the history. +function attachLocalSpans(doc, change, from, to) { + let existing = change["spans_" + doc.id], n = 0 + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), line => { + if (line.markedSpans) + (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans + ++n + }) +} + +// When un/re-doing restores text containing marked spans, those +// that have been explicitly cleared should not be restored. +function removeClearedSpans(spans) { + if (!spans) return null + let out + for (let i = 0; i < spans.length; ++i) { + if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i) } + else if (out) out.push(spans[i]) + } + return !out ? spans : out.length ? out : null +} + +// Retrieve and filter the old marked spans stored in a change event. +function getOldSpans(doc, change) { + let found = change["spans_" + doc.id] + if (!found) return null + let nw = [] + for (let i = 0; i < change.text.length; ++i) + nw.push(removeClearedSpans(found[i])) + return nw +} + +// Used for un/re-doing changes from the history. Combines the +// result of computing the existing spans with the set of spans that +// existed in the history (so that deleting around a span and then +// undoing brings back the span). +export function mergeOldSpans(doc, change) { + let old = getOldSpans(doc, change) + let stretched = stretchSpansOverChange(doc, change) + if (!old) return stretched + if (!stretched) return old + + for (let i = 0; i < old.length; ++i) { + let oldCur = old[i], stretchCur = stretched[i] + if (oldCur && stretchCur) { + spans: for (let j = 0; j < stretchCur.length; ++j) { + let span = stretchCur[j] + for (let k = 0; k < oldCur.length; ++k) + if (oldCur[k].marker == span.marker) continue spans + oldCur.push(span) + } + } else if (stretchCur) { + old[i] = stretchCur + } + } + return old +} + +// Used both to provide a JSON-safe object in .getHistory, and, when +// detaching a document, to split the history in two +export function copyHistoryArray(events, newGroup, instantiateSel) { + let copy = [] + for (let i = 0; i < events.length; ++i) { + let event = events[i] + if (event.ranges) { + copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event) + continue + } + let changes = event.changes, newChanges = [] + copy.push({changes: newChanges}) + for (let j = 0; j < changes.length; ++j) { + let change = changes[j], m + newChanges.push({from: change.from, to: change.to, text: change.text}) + if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop] + delete change[prop] + } + } + } + } + return copy +} diff --git a/global/codemirror/src/model/line_widget.js b/global/codemirror/src/model/line_widget.js new file mode 100644 index 00000000..a11f9c27 --- /dev/null +++ b/global/codemirror/src/model/line_widget.js @@ -0,0 +1,78 @@ +import { runInOp } from "../display/operations" +import { addToScrollTop } from "../display/scrolling" +import { regLineChange } from "../display/view_tracking" +import { heightAtLine, lineIsHidden } from "../line/spans" +import { lineNo, updateLineHeight } from "../line/utils_line" +import { widgetHeight } from "../measurement/widgets" +import { changeLine } from "./changes" +import { eventMixin } from "../util/event" +import { signalLater } from "../util/operation_group" + +// Line widgets are block elements displayed above or below a line. + +export class LineWidget { + constructor(doc, node, options) { + if (options) for (let opt in options) if (options.hasOwnProperty(opt)) + this[opt] = options[opt] + this.doc = doc + this.node = node + } + + clear() { + let cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line) + if (no == null || !ws) return + for (let i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1) + if (!ws.length) line.widgets = null + let height = widgetHeight(this) + updateLineHeight(line, Math.max(0, line.height - height)) + if (cm) { + runInOp(cm, () => { + adjustScrollWhenAboveVisible(cm, line, -height) + regLineChange(cm, no, "widget") + }) + signalLater(cm, "lineWidgetCleared", cm, this, no) + } + } + + changed() { + let oldH = this.height, cm = this.doc.cm, line = this.line + this.height = null + let diff = widgetHeight(this) - oldH + if (!diff) return + updateLineHeight(line, line.height + diff) + if (cm) { + runInOp(cm, () => { + cm.curOp.forceUpdate = true + adjustScrollWhenAboveVisible(cm, line, diff) + signalLater(cm, "lineWidgetChanged", cm, this, lineNo(line)) + }) + } + } +} +eventMixin(LineWidget) + +function adjustScrollWhenAboveVisible(cm, line, diff) { + if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) + addToScrollTop(cm, diff) +} + +export function addLineWidget(doc, handle, node, options) { + let widget = new LineWidget(doc, node, options) + let cm = doc.cm + if (cm && widget.noHScroll) cm.display.alignWidgets = true + changeLine(doc, handle, "widget", line => { + let widgets = line.widgets || (line.widgets = []) + if (widget.insertAt == null) widgets.push(widget) + else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget) + widget.line = line + if (cm && !lineIsHidden(doc, line)) { + let aboveVisible = heightAtLine(line) < doc.scrollTop + updateLineHeight(line, line.height + widgetHeight(widget)) + if (aboveVisible) addToScrollTop(cm, widget.height) + cm.curOp.forceUpdate = true + } + return true + }) + signalLater(cm, "lineWidgetAdded", cm, widget, typeof handle == "number" ? handle : lineNo(handle)) + return widget +} diff --git a/global/codemirror/src/model/mark_text.js b/global/codemirror/src/model/mark_text.js new file mode 100644 index 00000000..ccdcc9d3 --- /dev/null +++ b/global/codemirror/src/model/mark_text.js @@ -0,0 +1,292 @@ +import { eltP } from "../util/dom" +import { eventMixin, hasHandler, on } from "../util/event" +import { endOperation, operation, runInOp, startOperation } from "../display/operations" +import { clipPos, cmp, Pos } from "../line/pos" +import { lineNo, updateLineHeight } from "../line/utils_line" +import { clearLineMeasurementCacheFor, findViewForLine, textHeight } from "../measurement/position_measurement" +import { seeReadOnlySpans, seeCollapsedSpans } from "../line/saw_special_spans" +import { addMarkedSpan, conflictingCollapsedRange, getMarkedSpanFor, lineIsHidden, lineLength, MarkedSpan, removeMarkedSpan, visualLine } from "../line/spans" +import { copyObj, indexOf, lst } from "../util/misc" +import { signalLater } from "../util/operation_group" +import { widgetHeight } from "../measurement/widgets" +import { regChange, regLineChange } from "../display/view_tracking" + +import { linkedDocs } from "./document_data" +import { addChangeToHistory } from "./history" +import { reCheckSelection } from "./selection_updates" + +// TEXTMARKERS + +// Created with markText and setBookmark methods. A TextMarker is a +// handle that can be used to clear or find a marked position in the +// document. Line objects hold arrays (markedSpans) containing +// {from, to, marker} object pointing to such marker objects, and +// indicating that such a marker is present on that line. Multiple +// lines may point to the same marker when it spans across lines. +// The spans will have null for their from/to properties when the +// marker continues beyond the start/end of the line. Markers have +// links back to the lines they currently touch. + +// Collapsed markers have unique ids, in order to be able to order +// them, which is needed for uniquely determining an outer marker +// when they overlap (they may nest, but not partially overlap). +let nextMarkerId = 0 + +export class TextMarker { + constructor(doc, type) { + this.lines = [] + this.type = type + this.doc = doc + this.id = ++nextMarkerId + } + + // Clear the marker. + clear() { + if (this.explicitlyCleared) return + let cm = this.doc.cm, withOp = cm && !cm.curOp + if (withOp) startOperation(cm) + if (hasHandler(this, "clear")) { + let found = this.find() + if (found) signalLater(this, "clear", found.from, found.to) + } + let min = null, max = null + for (let i = 0; i < this.lines.length; ++i) { + let line = this.lines[i] + let span = getMarkedSpanFor(line.markedSpans, this) + if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text") + else if (cm) { + if (span.to != null) max = lineNo(line) + if (span.from != null) min = lineNo(line) + } + line.markedSpans = removeMarkedSpan(line.markedSpans, span) + if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) + updateLineHeight(line, textHeight(cm.display)) + } + if (cm && this.collapsed && !cm.options.lineWrapping) for (let i = 0; i < this.lines.length; ++i) { + let visual = visualLine(this.lines[i]), len = lineLength(visual) + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual + cm.display.maxLineLength = len + cm.display.maxLineChanged = true + } + } + + if (min != null && cm && this.collapsed) regChange(cm, min, max + 1) + this.lines.length = 0 + this.explicitlyCleared = true + if (this.atomic && this.doc.cantEdit) { + this.doc.cantEdit = false + if (cm) reCheckSelection(cm.doc) + } + if (cm) signalLater(cm, "markerCleared", cm, this, min, max) + if (withOp) endOperation(cm) + if (this.parent) this.parent.clear() + } + + // Find the position of the marker in the document. Returns a {from, + // to} object by default. Side can be passed to get a specific side + // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the + // Pos objects returned contain a line object, rather than a line + // number (used to prevent looking up the same line twice). + find(side, lineObj) { + if (side == null && this.type == "bookmark") side = 1 + let from, to + for (let i = 0; i < this.lines.length; ++i) { + let line = this.lines[i] + let span = getMarkedSpanFor(line.markedSpans, this) + if (span.from != null) { + from = Pos(lineObj ? line : lineNo(line), span.from) + if (side == -1) return from + } + if (span.to != null) { + to = Pos(lineObj ? line : lineNo(line), span.to) + if (side == 1) return to + } + } + return from && {from: from, to: to} + } + + // Signals that the marker's widget changed, and surrounding layout + // should be recomputed. + changed() { + let pos = this.find(-1, true), widget = this, cm = this.doc.cm + if (!pos || !cm) return + runInOp(cm, () => { + let line = pos.line, lineN = lineNo(pos.line) + let view = findViewForLine(cm, lineN) + if (view) { + clearLineMeasurementCacheFor(view) + cm.curOp.selectionChanged = cm.curOp.forceUpdate = true + } + cm.curOp.updateMaxLine = true + if (!lineIsHidden(widget.doc, line) && widget.height != null) { + let oldHeight = widget.height + widget.height = null + let dHeight = widgetHeight(widget) - oldHeight + if (dHeight) + updateLineHeight(line, line.height + dHeight) + } + signalLater(cm, "markerChanged", cm, this) + }) + } + + attachLine(line) { + if (!this.lines.length && this.doc.cm) { + let op = this.doc.cm.curOp + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this) + } + this.lines.push(line) + } + + detachLine(line) { + this.lines.splice(indexOf(this.lines, line), 1) + if (!this.lines.length && this.doc.cm) { + let op = this.doc.cm.curOp + ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this) + } + } +} +eventMixin(TextMarker) + +// Create a marker, wire it up to the right lines, and +export function markText(doc, from, to, options, type) { + // Shared markers (across linked documents) are handled separately + // (markTextShared will call out to this again, once per + // document). + if (options && options.shared) return markTextShared(doc, from, to, options, type) + // Ensure we are in an operation. + if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type) + + let marker = new TextMarker(doc, type), diff = cmp(from, to) + if (options) copyObj(options, marker, false) + // Don't connect empty markers unless clearWhenEmpty is false + if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) + return marker + if (marker.replacedWith) { + // Showing up as a widget implies collapsed (widget replaces text) + marker.collapsed = true + marker.widgetNode = eltP("span", [marker.replacedWith], "CodeMirror-widget") + if (!options.handleMouseEvents) marker.widgetNode.setAttribute("cm-ignore-events", "true") + if (options.insertLeft) marker.widgetNode.insertLeft = true + } + if (marker.collapsed) { + if (conflictingCollapsedRange(doc, from.line, from, to, marker) || + from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) + throw new Error("Inserting collapsed marker partially overlapping an existing one") + seeCollapsedSpans() + } + + if (marker.addToHistory) + addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN) + + let curLine = from.line, cm = doc.cm, updateMaxLine + doc.iter(curLine, to.line + 1, line => { + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) + updateMaxLine = true + if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0) + addMarkedSpan(line, new MarkedSpan(marker, + curLine == from.line ? from.ch : null, + curLine == to.line ? to.ch : null)) + ++curLine + }) + // lineIsHidden depends on the presence of the spans, so needs a second pass + if (marker.collapsed) doc.iter(from.line, to.line + 1, line => { + if (lineIsHidden(doc, line)) updateLineHeight(line, 0) + }) + + if (marker.clearOnEnter) on(marker, "beforeCursorEnter", () => marker.clear()) + + if (marker.readOnly) { + seeReadOnlySpans() + if (doc.history.done.length || doc.history.undone.length) + doc.clearHistory() + } + if (marker.collapsed) { + marker.id = ++nextMarkerId + marker.atomic = true + } + if (cm) { + // Sync editor state + if (updateMaxLine) cm.curOp.updateMaxLine = true + if (marker.collapsed) + regChange(cm, from.line, to.line + 1) + else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css) + for (let i = from.line; i <= to.line; i++) regLineChange(cm, i, "text") + if (marker.atomic) reCheckSelection(cm.doc) + signalLater(cm, "markerAdded", cm, marker) + } + return marker +} + +// SHARED TEXTMARKERS + +// A shared marker spans multiple linked documents. It is +// implemented as a meta-marker-object controlling multiple normal +// markers. +export class SharedTextMarker { + constructor(markers, primary) { + this.markers = markers + this.primary = primary + for (let i = 0; i < markers.length; ++i) + markers[i].parent = this + } + + clear() { + if (this.explicitlyCleared) return + this.explicitlyCleared = true + for (let i = 0; i < this.markers.length; ++i) + this.markers[i].clear() + signalLater(this, "clear") + } + + find(side, lineObj) { + return this.primary.find(side, lineObj) + } +} +eventMixin(SharedTextMarker) + +function markTextShared(doc, from, to, options, type) { + options = copyObj(options) + options.shared = false + let markers = [markText(doc, from, to, options, type)], primary = markers[0] + let widget = options.widgetNode + linkedDocs(doc, doc => { + if (widget) options.widgetNode = widget.cloneNode(true) + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)) + for (let i = 0; i < doc.linked.length; ++i) + if (doc.linked[i].isParent) return + primary = lst(markers) + }) + return new SharedTextMarker(markers, primary) +} + +export function findSharedMarkers(doc) { + return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), m => m.parent) +} + +export function copySharedMarkers(doc, markers) { + for (let i = 0; i < markers.length; i++) { + let marker = markers[i], pos = marker.find() + let mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to) + if (cmp(mFrom, mTo)) { + let subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type) + marker.markers.push(subMark) + subMark.parent = marker + } + } +} + +export function detachSharedMarkers(markers) { + for (let i = 0; i < markers.length; i++) { + let marker = markers[i], linked = [marker.primary.doc] + linkedDocs(marker.primary.doc, d => linked.push(d)) + for (let j = 0; j < marker.markers.length; j++) { + let subMarker = marker.markers[j] + if (indexOf(linked, subMarker.doc) == -1) { + subMarker.parent = null + marker.markers.splice(j--, 1) + } + } + } +} diff --git a/global/codemirror/src/model/selection.js b/global/codemirror/src/model/selection.js new file mode 100644 index 00000000..97084fbc --- /dev/null +++ b/global/codemirror/src/model/selection.js @@ -0,0 +1,82 @@ +import { cmp, copyPos, equalCursorPos, maxPos, minPos } from "../line/pos" +import { indexOf } from "../util/misc" + +// Selection objects are immutable. A new one is created every time +// the selection changes. A selection is one or more non-overlapping +// (and non-touching) ranges, sorted, and an integer that indicates +// which one is the primary selection (the one that's scrolled into +// view, that getCursor returns, etc). +export class Selection { + constructor(ranges, primIndex) { + this.ranges = ranges + this.primIndex = primIndex + } + + primary() { return this.ranges[this.primIndex] } + + equals(other) { + if (other == this) return true + if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false + for (let i = 0; i < this.ranges.length; i++) { + let here = this.ranges[i], there = other.ranges[i] + if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) return false + } + return true + } + + deepCopy() { + let out = [] + for (let i = 0; i < this.ranges.length; i++) + out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)) + return new Selection(out, this.primIndex) + } + + somethingSelected() { + for (let i = 0; i < this.ranges.length; i++) + if (!this.ranges[i].empty()) return true + return false + } + + contains(pos, end) { + if (!end) end = pos + for (let i = 0; i < this.ranges.length; i++) { + let range = this.ranges[i] + if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) + return i + } + return -1 + } +} + +export class Range { + constructor(anchor, head) { + this.anchor = anchor; this.head = head + } + + from() { return minPos(this.anchor, this.head) } + to() { return maxPos(this.anchor, this.head) } + empty() { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch } +} + +// Take an unsorted, potentially overlapping set of ranges, and +// build a selection out of it. 'Consumes' ranges array (modifying +// it). +export function normalizeSelection(ranges, primIndex) { + let prim = ranges[primIndex] + ranges.sort((a, b) => cmp(a.from(), b.from())) + primIndex = indexOf(ranges, prim) + for (let i = 1; i < ranges.length; i++) { + let cur = ranges[i], prev = ranges[i - 1] + if (cmp(prev.to(), cur.from()) >= 0) { + let from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()) + let inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head + if (i <= primIndex) --primIndex + ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)) + } + } + return new Selection(ranges, primIndex) +} + +export function simpleSelection(anchor, head) { + return new Selection([new Range(anchor, head || anchor)], 0) +} diff --git a/global/codemirror/src/model/selection_updates.js b/global/codemirror/src/model/selection_updates.js new file mode 100644 index 00000000..bf5ad8c7 --- /dev/null +++ b/global/codemirror/src/model/selection_updates.js @@ -0,0 +1,208 @@ +import { signalLater } from "../util/operation_group" +import { ensureCursorVisible } from "../display/scrolling" +import { clipPos, cmp, Pos } from "../line/pos" +import { getLine } from "../line/utils_line" +import { hasHandler, signal, signalCursorActivity } from "../util/event" +import { lst, sel_dontScroll } from "../util/misc" + +import { addSelectionToHistory } from "./history" +import { normalizeSelection, Range, Selection, simpleSelection } from "./selection" + +// The 'scroll' parameter given to many of these indicated whether +// the new cursor position should be scrolled into view after +// modifying the selection. + +// If shift is held or the extend flag is set, extends a range to +// include a given position (and optionally a second position). +// Otherwise, simply returns the range between the given positions. +// Used for cursor motion and such. +export function extendRange(range, head, other, extend) { + if (extend) { + let anchor = range.anchor + if (other) { + let posBefore = cmp(head, anchor) < 0 + if (posBefore != (cmp(other, anchor) < 0)) { + anchor = head + head = other + } else if (posBefore != (cmp(head, other) < 0)) { + head = other + } + } + return new Range(anchor, head) + } else { + return new Range(other || head, head) + } +} + +// Extend the primary selection range, discard the rest. +export function extendSelection(doc, head, other, options, extend) { + if (extend == null) extend = doc.cm && (doc.cm.display.shift || doc.extend) + setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options) +} + +// Extend all selections (pos is an array of selections with length +// equal the number of selections) +export function extendSelections(doc, heads, options) { + let out = [] + let extend = doc.cm && (doc.cm.display.shift || doc.extend) + for (let i = 0; i < doc.sel.ranges.length; i++) + out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend) + let newSel = normalizeSelection(out, doc.sel.primIndex) + setSelection(doc, newSel, options) +} + +// Updates a single range in the selection. +export function replaceOneSelection(doc, i, range, options) { + let ranges = doc.sel.ranges.slice(0) + ranges[i] = range + setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options) +} + +// Reset the selection to a single range. +export function setSimpleSelection(doc, anchor, head, options) { + setSelection(doc, simpleSelection(anchor, head), options) +} + +// Give beforeSelectionChange handlers a change to influence a +// selection update. +function filterSelectionChange(doc, sel, options) { + let obj = { + ranges: sel.ranges, + update: function(ranges) { + this.ranges = [] + for (let i = 0; i < ranges.length; i++) + this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), + clipPos(doc, ranges[i].head)) + }, + origin: options && options.origin + } + signal(doc, "beforeSelectionChange", doc, obj) + if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj) + if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1) + else return sel +} + +export function setSelectionReplaceHistory(doc, sel, options) { + let done = doc.history.done, last = lst(done) + if (last && last.ranges) { + done[done.length - 1] = sel + setSelectionNoUndo(doc, sel, options) + } else { + setSelection(doc, sel, options) + } +} + +// Set a new selection. +export function setSelection(doc, sel, options) { + setSelectionNoUndo(doc, sel, options) + addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options) +} + +export function setSelectionNoUndo(doc, sel, options) { + if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) + sel = filterSelectionChange(doc, sel, options) + + let bias = options && options.bias || + (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1) + setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)) + + if (!(options && options.scroll === false) && doc.cm) + ensureCursorVisible(doc.cm) +} + +function setSelectionInner(doc, sel) { + if (sel.equals(doc.sel)) return + + doc.sel = sel + + if (doc.cm) { + doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true + signalCursorActivity(doc.cm) + } + signalLater(doc, "cursorActivity", doc) +} + +// Verify that the selection does not partially select any atomic +// marked ranges. +export function reCheckSelection(doc) { + setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false)) +} + +// Return a selection that does not partially select any atomic +// ranges. +function skipAtomicInSelection(doc, sel, bias, mayClear) { + let out + for (let i = 0; i < sel.ranges.length; i++) { + let range = sel.ranges[i] + let old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i] + let newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear) + let newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear) + if (out || newAnchor != range.anchor || newHead != range.head) { + if (!out) out = sel.ranges.slice(0, i) + out[i] = new Range(newAnchor, newHead) + } + } + return out ? normalizeSelection(out, sel.primIndex) : sel +} + +function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { + let line = getLine(doc, pos.line) + if (line.markedSpans) for (let i = 0; i < line.markedSpans.length; ++i) { + let sp = line.markedSpans[i], m = sp.marker + if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && + (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter") + if (m.explicitlyCleared) { + if (!line.markedSpans) break + else {--i; continue} + } + } + if (!m.atomic) continue + + if (oldPos) { + let near = m.find(dir < 0 ? 1 : -1), diff + if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) + near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null) + if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) + return skipAtomicInner(doc, near, pos, dir, mayClear) + } + + let far = m.find(dir < 0 ? -1 : 1) + if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) + far = movePos(doc, far, dir, far.line == pos.line ? line : null) + return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null + } + } + return pos +} + +// Ensure a given position is not inside an atomic range. +export function skipAtomic(doc, pos, oldPos, bias, mayClear) { + let dir = bias || 1 + let found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || + skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)) + if (!found) { + doc.cantEdit = true + return Pos(doc.first, 0) + } + return found +} + +function movePos(doc, pos, dir, line) { + if (dir < 0 && pos.ch == 0) { + if (pos.line > doc.first) return clipPos(doc, Pos(pos.line - 1)) + else return null + } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { + if (pos.line < doc.first + doc.size - 1) return Pos(pos.line + 1, 0) + else return null + } else { + return new Pos(pos.line, pos.ch + dir) + } +} + +export function selectAll(cm) { + cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll) +} diff --git a/global/codemirror/src/modes.js b/global/codemirror/src/modes.js new file mode 100644 index 00000000..065a463b --- /dev/null +++ b/global/codemirror/src/modes.js @@ -0,0 +1,96 @@ +import { copyObj, createObj } from "./util/misc" + +// Known modes, by name and by MIME +export let modes = {}, mimeModes = {} + +// Extra arguments are stored as the mode's dependencies, which is +// used by (legacy) mechanisms like loadmode.js to automatically +// load a mode. (Preferred mechanism is the require/define calls.) +export function defineMode(name, mode) { + if (arguments.length > 2) + mode.dependencies = Array.prototype.slice.call(arguments, 2) + modes[name] = mode +} + +export function defineMIME(mime, spec) { + mimeModes[mime] = spec +} + +// Given a MIME type, a {name, ...options} config object, or a name +// string, return a mode config object. +export function resolveMode(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { + spec = mimeModes[spec] + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { + let found = mimeModes[spec.name] + if (typeof found == "string") found = {name: found} + spec = createObj(found, spec) + spec.name = found.name + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return resolveMode("application/xml") + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { + return resolveMode("application/json") + } + if (typeof spec == "string") return {name: spec} + else return spec || {name: "null"} +} + +// Given a mode spec (anything that resolveMode accepts), find and +// initialize an actual mode object. +export function getMode(options, spec) { + spec = resolveMode(spec) + let mfactory = modes[spec.name] + if (!mfactory) return getMode(options, "text/plain") + let modeObj = mfactory(options, spec) + if (modeExtensions.hasOwnProperty(spec.name)) { + let exts = modeExtensions[spec.name] + for (let prop in exts) { + if (!exts.hasOwnProperty(prop)) continue + if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop] + modeObj[prop] = exts[prop] + } + } + modeObj.name = spec.name + if (spec.helperType) modeObj.helperType = spec.helperType + if (spec.modeProps) for (let prop in spec.modeProps) + modeObj[prop] = spec.modeProps[prop] + + return modeObj +} + +// This can be used to attach properties to mode objects from +// outside the actual mode definition. +export let modeExtensions = {} +export function extendMode(mode, properties) { + let exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}) + copyObj(properties, exts) +} + +export function copyState(mode, state) { + if (state === true) return state + if (mode.copyState) return mode.copyState(state) + let nstate = {} + for (let n in state) { + let val = state[n] + if (val instanceof Array) val = val.concat([]) + nstate[n] = val + } + return nstate +} + +// Given a mode and a state (for that mode), find the inner mode and +// state at the position that the state refers to. +export function innerMode(mode, state) { + let info + while (mode.innerMode) { + info = mode.innerMode(state) + if (!info || info.mode == mode) break + state = info.state + mode = info.mode + } + return info || {mode: mode, state: state} +} + +export function startState(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true +} diff --git a/global/codemirror/src/util/StringStream.js b/global/codemirror/src/util/StringStream.js new file mode 100644 index 00000000..ac9555f1 --- /dev/null +++ b/global/codemirror/src/util/StringStream.js @@ -0,0 +1,86 @@ +import { countColumn } from "./misc" + +// STRING STREAM + +// Fed to the mode parsers, provides helper functions to make +// parsers more succinct. + +class StringStream { + constructor(string, tabSize, lineOracle) { + this.pos = this.start = 0 + this.string = string + this.tabSize = tabSize || 8 + this.lastColumnPos = this.lastColumnValue = 0 + this.lineStart = 0 + this.lineOracle = lineOracle + } + + eol() {return this.pos >= this.string.length} + sol() {return this.pos == this.lineStart} + peek() {return this.string.charAt(this.pos) || undefined} + next() { + if (this.pos < this.string.length) + return this.string.charAt(this.pos++) + } + eat(match) { + let ch = this.string.charAt(this.pos) + let ok + if (typeof match == "string") ok = ch == match + else ok = ch && (match.test ? match.test(ch) : match(ch)) + if (ok) {++this.pos; return ch} + } + eatWhile(match) { + let start = this.pos + while (this.eat(match)){} + return this.pos > start + } + eatSpace() { + let start = this.pos + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos + return this.pos > start + } + skipToEnd() {this.pos = this.string.length} + skipTo(ch) { + let found = this.string.indexOf(ch, this.pos) + if (found > -1) {this.pos = found; return true} + } + backUp(n) {this.pos -= n} + column() { + if (this.lastColumnPos < this.start) { + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue) + this.lastColumnPos = this.start + } + return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) + } + indentation() { + return countColumn(this.string, null, this.tabSize) - + (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0) + } + match(pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + let cased = str => caseInsensitive ? str.toLowerCase() : str + let substr = this.string.substr(this.pos, pattern.length) + if (cased(substr) == cased(pattern)) { + if (consume !== false) this.pos += pattern.length + return true + } + } else { + let match = this.string.slice(this.pos).match(pattern) + if (match && match.index > 0) return null + if (match && consume !== false) this.pos += match[0].length + return match + } + } + current(){return this.string.slice(this.start, this.pos)} + hideFirstChars(n, inner) { + this.lineStart += n + try { return inner() } + finally { this.lineStart -= n } + } + lookAhead(n) { + let oracle = this.lineOracle + return oracle && oracle.lookAhead(n) + } +} + +export default StringStream diff --git a/global/codemirror/src/util/bidi.js b/global/codemirror/src/util/bidi.js new file mode 100644 index 00000000..c3e63f7a --- /dev/null +++ b/global/codemirror/src/util/bidi.js @@ -0,0 +1,212 @@ +import { lst } from "./misc" + +// BIDI HELPERS + +export function iterateBidiSections(order, from, to, f) { + if (!order) return f(from, to, "ltr", 0) + let found = false + for (let i = 0; i < order.length; ++i) { + let part = order[i] + if (part.from < to && part.to > from || from == to && part.to == from) { + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr", i) + found = true + } + } + if (!found) f(from, to, "ltr") +} + +export let bidiOther = null +export function getBidiPartAt(order, ch, sticky) { + let found + bidiOther = null + for (let i = 0; i < order.length; ++i) { + let cur = order[i] + if (cur.from < ch && cur.to > ch) return i + if (cur.to == ch) { + if (cur.from != cur.to && sticky == "before") found = i + else bidiOther = i + } + if (cur.from == ch) { + if (cur.from != cur.to && sticky != "before") found = i + else bidiOther = i + } + } + return found != null ? found : bidiOther +} + +// Bidirectional ordering algorithm +// See http://unicode.org/reports/tr9/tr9-13.html for the algorithm +// that this (partially) implements. + +// One-char codes used for character types: +// L (L): Left-to-Right +// R (R): Right-to-Left +// r (AL): Right-to-Left Arabic +// 1 (EN): European Number +// + (ES): European Number Separator +// % (ET): European Number Terminator +// n (AN): Arabic Number +// , (CS): Common Number Separator +// m (NSM): Non-Spacing Mark +// b (BN): Boundary Neutral +// s (B): Paragraph Separator +// t (S): Segment Separator +// w (WS): Whitespace +// N (ON): Other Neutrals + +// Returns null if characters are ordered as they appear +// (left-to-right), or an array of sections ({from, to, level} +// objects) in the order in which they occur visually. +let bidiOrdering = (function() { + // Character types for codepoints 0 to 0xff + let lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN" + // Character types for codepoints 0x600 to 0x6f9 + let arabicTypes = "nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111" + function charType(code) { + if (code <= 0xf7) return lowTypes.charAt(code) + else if (0x590 <= code && code <= 0x5f4) return "R" + else if (0x600 <= code && code <= 0x6f9) return arabicTypes.charAt(code - 0x600) + else if (0x6ee <= code && code <= 0x8ac) return "r" + else if (0x2000 <= code && code <= 0x200b) return "w" + else if (code == 0x200c) return "b" + else return "L" + } + + let bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/ + let isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/ + + function BidiSpan(level, from, to) { + this.level = level + this.from = from; this.to = to + } + + return function(str, direction) { + let outerType = direction == "ltr" ? "L" : "R" + + if (str.length == 0 || direction == "ltr" && !bidiRE.test(str)) return false + let len = str.length, types = [] + for (let i = 0; i < len; ++i) + types.push(charType(str.charCodeAt(i))) + + // W1. Examine each non-spacing mark (NSM) in the level run, and + // change the type of the NSM to the type of the previous + // character. If the NSM is at the start of the level run, it will + // get the type of sor. + for (let i = 0, prev = outerType; i < len; ++i) { + let type = types[i] + if (type == "m") types[i] = prev + else prev = type + } + + // W2. Search backwards from each instance of a European number + // until the first strong type (R, L, AL, or sor) is found. If an + // AL is found, change the type of the European number to Arabic + // number. + // W3. Change all ALs to R. + for (let i = 0, cur = outerType; i < len; ++i) { + let type = types[i] + if (type == "1" && cur == "r") types[i] = "n" + else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R" } + } + + // W4. A single European separator between two European numbers + // changes to a European number. A single common separator between + // two numbers of the same type changes to that type. + for (let i = 1, prev = types[0]; i < len - 1; ++i) { + let type = types[i] + if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1" + else if (type == "," && prev == types[i+1] && + (prev == "1" || prev == "n")) types[i] = prev + prev = type + } + + // W5. A sequence of European terminators adjacent to European + // numbers changes to all European numbers. + // W6. Otherwise, separators and terminators change to Other + // Neutral. + for (let i = 0; i < len; ++i) { + let type = types[i] + if (type == ",") types[i] = "N" + else if (type == "%") { + let end + for (end = i + 1; end < len && types[end] == "%"; ++end) {} + let replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N" + for (let j = i; j < end; ++j) types[j] = replace + i = end - 1 + } + } + + // W7. Search backwards from each instance of a European number + // until the first strong type (R, L, or sor) is found. If an L is + // found, then change the type of the European number to L. + for (let i = 0, cur = outerType; i < len; ++i) { + let type = types[i] + if (cur == "L" && type == "1") types[i] = "L" + else if (isStrong.test(type)) cur = type + } + + // N1. A sequence of neutrals takes the direction of the + // surrounding strong text if the text on both sides has the same + // direction. European and Arabic numbers act as if they were R in + // terms of their influence on neutrals. Start-of-level-run (sor) + // and end-of-level-run (eor) are used at level run boundaries. + // N2. Any remaining neutrals take the embedding direction. + for (let i = 0; i < len; ++i) { + if (isNeutral.test(types[i])) { + let end + for (end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} + let before = (i ? types[i-1] : outerType) == "L" + let after = (end < len ? types[end] : outerType) == "L" + let replace = before == after ? (before ? "L" : "R") : outerType + for (let j = i; j < end; ++j) types[j] = replace + i = end - 1 + } + } + + // Here we depart from the documented algorithm, in order to avoid + // building up an actual levels array. Since there are only three + // levels (0, 1, 2) in an implementation that doesn't take + // explicit embedding into account, we can build up the order on + // the fly, without following the level-based algorithm. + let order = [], m + for (let i = 0; i < len;) { + if (countsAsLeft.test(types[i])) { + let start = i + for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} + order.push(new BidiSpan(0, start, i)) + } else { + let pos = i, at = order.length + for (++i; i < len && types[i] != "L"; ++i) {} + for (let j = pos; j < i;) { + if (countsAsNum.test(types[j])) { + if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j)) + let nstart = j + for (++j; j < i && countsAsNum.test(types[j]); ++j) {} + order.splice(at, 0, new BidiSpan(2, nstart, j)) + pos = j + } else ++j + } + if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i)) + } + } + if (order[0].level == 1 && (m = str.match(/^\s+/))) { + order[0].from = m[0].length + order.unshift(new BidiSpan(0, 0, m[0].length)) + } + if (lst(order).level == 1 && (m = str.match(/\s+$/))) { + lst(order).to -= m[0].length + order.push(new BidiSpan(0, len - m[0].length, len)) + } + + return direction == "rtl" ? order.reverse() : order + } +})() + +// Get the bidi ordering for the given line (and cache it). Returns +// false for lines that are fully left-to-right, and an array of +// BidiSpan objects otherwise. +export function getOrder(line, direction) { + let order = line.order + if (order == null) order = line.order = bidiOrdering(line.text, direction) + return order +} diff --git a/global/codemirror/src/util/browser.js b/global/codemirror/src/util/browser.js new file mode 100644 index 00000000..9fc4602c --- /dev/null +++ b/global/codemirror/src/util/browser.js @@ -0,0 +1,33 @@ +// Kludges for bugs and behavior differences that can't be feature +// detected are enabled based on userAgent etc sniffing. +let userAgent = navigator.userAgent +let platform = navigator.platform + +export let gecko = /gecko\/\d/i.test(userAgent) +let ie_upto10 = /MSIE \d/.test(userAgent) +let ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent) +let edge = /Edge\/(\d+)/.exec(userAgent) +export let ie = ie_upto10 || ie_11up || edge +export let ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]) +export let webkit = !edge && /WebKit\//.test(userAgent) +let qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent) +export let chrome = !edge && /Chrome\//.test(userAgent) +export let presto = /Opera\//.test(userAgent) +export let safari = /Apple Computer/.test(navigator.vendor) +export let mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent) +export let phantom = /PhantomJS/.test(userAgent) + +export let ios = !edge && /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent) +export let android = /Android/.test(userAgent) +// This is woefully incomplete. Suggestions for alternative methods welcome. +export let mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent) +export let mac = ios || /Mac/.test(platform) +export let chromeOS = /\bCrOS\b/.test(userAgent) +export let windows = /win/i.test(platform) + +let presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/) +if (presto_version) presto_version = Number(presto_version[1]) +if (presto_version && presto_version >= 15) { presto = false; webkit = true } +// Some browsers use the wrong event properties to signal cmd/ctrl on OS X +export let flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)) +export let captureRightClick = gecko || (ie && ie_version >= 9) diff --git a/global/codemirror/src/util/dom.js b/global/codemirror/src/util/dom.js new file mode 100644 index 00000000..94823c21 --- /dev/null +++ b/global/codemirror/src/util/dom.js @@ -0,0 +1,97 @@ +import { ie, ios } from "./browser" + +export function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*") } + +export let rmClass = function(node, cls) { + let current = node.className + let match = classTest(cls).exec(current) + if (match) { + let after = current.slice(match.index + match[0].length) + node.className = current.slice(0, match.index) + (after ? match[1] + after : "") + } +} + +export function removeChildren(e) { + for (let count = e.childNodes.length; count > 0; --count) + e.removeChild(e.firstChild) + return e +} + +export function removeChildrenAndAdd(parent, e) { + return removeChildren(parent).appendChild(e) +} + +export function elt(tag, content, className, style) { + let e = document.createElement(tag) + if (className) e.className = className + if (style) e.style.cssText = style + if (typeof content == "string") e.appendChild(document.createTextNode(content)) + else if (content) for (let i = 0; i < content.length; ++i) e.appendChild(content[i]) + return e +} +// wrapper for elt, which removes the elt from the accessibility tree +export function eltP(tag, content, className, style) { + let e = elt(tag, content, className, style) + e.setAttribute("role", "presentation") + return e +} + +export let range +if (document.createRange) range = function(node, start, end, endNode) { + let r = document.createRange() + r.setEnd(endNode || node, end) + r.setStart(node, start) + return r +} +else range = function(node, start, end) { + let r = document.body.createTextRange() + try { r.moveToElementText(node.parentNode) } + catch(e) { return r } + r.collapse(true) + r.moveEnd("character", end) + r.moveStart("character", start) + return r +} + +export function contains(parent, child) { + if (child.nodeType == 3) // Android browser always returns false when child is a textnode + child = child.parentNode + if (parent.contains) + return parent.contains(child) + do { + if (child.nodeType == 11) child = child.host + if (child == parent) return true + } while (child = child.parentNode) +} + +export function activeElt() { + // IE and Edge may throw an "Unspecified Error" when accessing document.activeElement. + // IE < 10 will throw when accessed while the page is loading or in an iframe. + // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable. + let activeElement + try { + activeElement = document.activeElement + } catch(e) { + activeElement = document.body || null + } + while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement) + activeElement = activeElement.shadowRoot.activeElement + return activeElement +} + +export function addClass(node, cls) { + let current = node.className + if (!classTest(cls).test(current)) node.className += (current ? " " : "") + cls +} +export function joinClasses(a, b) { + let as = a.split(" ") + for (let i = 0; i < as.length; i++) + if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i] + return b +} + +export let selectInput = function(node) { node.select() } +if (ios) // Mobile Safari apparently has a bug where select() is broken. + selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length } +else if (ie) // Suppress mysterious IE10 errors + selectInput = function(node) { try { node.select() } catch(_e) {} } diff --git a/global/codemirror/src/util/event.js b/global/codemirror/src/util/event.js new file mode 100644 index 00000000..29fd4c59 --- /dev/null +++ b/global/codemirror/src/util/event.js @@ -0,0 +1,103 @@ +import { mac } from "./browser" +import { indexOf } from "./misc" + +// EVENT HANDLING + +// Lightweight event framework. on/off also work on DOM nodes, +// registering native DOM handlers. + +const noHandlers = [] + +export let on = function(emitter, type, f) { + if (emitter.addEventListener) { + emitter.addEventListener(type, f, false) + } else if (emitter.attachEvent) { + emitter.attachEvent("on" + type, f) + } else { + let map = emitter._handlers || (emitter._handlers = {}) + map[type] = (map[type] || noHandlers).concat(f) + } +} + +export function getHandlers(emitter, type) { + return emitter._handlers && emitter._handlers[type] || noHandlers +} + +export function off(emitter, type, f) { + if (emitter.removeEventListener) { + emitter.removeEventListener(type, f, false) + } else if (emitter.detachEvent) { + emitter.detachEvent("on" + type, f) + } else { + let map = emitter._handlers, arr = map && map[type] + if (arr) { + let index = indexOf(arr, f) + if (index > -1) + map[type] = arr.slice(0, index).concat(arr.slice(index + 1)) + } + } +} + +export function signal(emitter, type /*, values...*/) { + let handlers = getHandlers(emitter, type) + if (!handlers.length) return + let args = Array.prototype.slice.call(arguments, 2) + for (let i = 0; i < handlers.length; ++i) handlers[i].apply(null, args) +} + +// The DOM events that CodeMirror handles can be overridden by +// registering a (non-DOM) handler on the editor for the event name, +// and preventDefault-ing the event in that handler. +export function signalDOMEvent(cm, e, override) { + if (typeof e == "string") + e = {type: e, preventDefault: function() { this.defaultPrevented = true }} + signal(cm, override || e.type, cm, e) + return e_defaultPrevented(e) || e.codemirrorIgnore +} + +export function signalCursorActivity(cm) { + let arr = cm._handlers && cm._handlers.cursorActivity + if (!arr) return + let set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []) + for (let i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1) + set.push(arr[i]) +} + +export function hasHandler(emitter, type) { + return getHandlers(emitter, type).length > 0 +} + +// Add on and off methods to a constructor's prototype, to make +// registering events on such objects more convenient. +export function eventMixin(ctor) { + ctor.prototype.on = function(type, f) {on(this, type, f)} + ctor.prototype.off = function(type, f) {off(this, type, f)} +} + +// Due to the fact that we still support jurassic IE versions, some +// compatibility wrappers are needed. + +export function e_preventDefault(e) { + if (e.preventDefault) e.preventDefault() + else e.returnValue = false +} +export function e_stopPropagation(e) { + if (e.stopPropagation) e.stopPropagation() + else e.cancelBubble = true +} +export function e_defaultPrevented(e) { + return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false +} +export function e_stop(e) {e_preventDefault(e); e_stopPropagation(e)} + +export function e_target(e) {return e.target || e.srcElement} +export function e_button(e) { + let b = e.which + if (b == null) { + if (e.button & 1) b = 1 + else if (e.button & 2) b = 3 + else if (e.button & 4) b = 2 + } + if (mac && e.ctrlKey && b == 1) b = 3 + return b +} diff --git a/global/codemirror/src/util/feature_detection.js b/global/codemirror/src/util/feature_detection.js new file mode 100644 index 00000000..e65881d4 --- /dev/null +++ b/global/codemirror/src/util/feature_detection.js @@ -0,0 +1,84 @@ +import { elt, range, removeChildren, removeChildrenAndAdd } from "./dom" +import { ie, ie_version } from "./browser" + +// Detect drag-and-drop +export let dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie && ie_version < 9) return false + let div = elt('div') + return "draggable" in div || "dragDrop" in div +}() + +let zwspSupported +export function zeroWidthElement(measure) { + if (zwspSupported == null) { + let test = elt("span", "\u200b") + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])) + if (measure.firstChild.offsetHeight != 0) + zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8) + } + let node = zwspSupported ? elt("span", "\u200b") : + elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px") + node.setAttribute("cm-text", "") + return node +} + +// Feature-detect IE's crummy client rect reporting for bidi text +let badBidiRects +export function hasBadBidiRects(measure) { + if (badBidiRects != null) return badBidiRects + let txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")) + let r0 = range(txt, 0, 1).getBoundingClientRect() + let r1 = range(txt, 1, 2).getBoundingClientRect() + removeChildren(measure) + if (!r0 || r0.left == r0.right) return false // Safari returns null in some cases (#2780) + return badBidiRects = (r1.right - r0.right < 3) +} + +// See if "".split is the broken IE version, if so, provide an +// alternative way to split lines. +export let splitLinesAuto = "\n\nb".split(/\n/).length != 3 ? string => { + let pos = 0, result = [], l = string.length + while (pos <= l) { + let nl = string.indexOf("\n", pos) + if (nl == -1) nl = string.length + let line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl) + let rt = line.indexOf("\r") + if (rt != -1) { + result.push(line.slice(0, rt)) + pos += rt + 1 + } else { + result.push(line) + pos = nl + 1 + } + } + return result +} : string => string.split(/\r\n?|\n/) + +export let hasSelection = window.getSelection ? te => { + try { return te.selectionStart != te.selectionEnd } + catch(e) { return false } +} : te => { + let range + try {range = te.ownerDocument.selection.createRange()} + catch(e) {} + if (!range || range.parentElement() != te) return false + return range.compareEndPoints("StartToEnd", range) != 0 +} + +export let hasCopyEvent = (() => { + let e = elt("div") + if ("oncopy" in e) return true + e.setAttribute("oncopy", "return;") + return typeof e.oncopy == "function" +})() + +let badZoomedRects = null +export function hasBadZoomedRects(measure) { + if (badZoomedRects != null) return badZoomedRects + let node = removeChildrenAndAdd(measure, elt("span", "x")) + let normal = node.getBoundingClientRect() + let fromRange = range(node, 0, 1).getBoundingClientRect() + return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1 +} diff --git a/global/codemirror/src/util/misc.js b/global/codemirror/src/util/misc.js new file mode 100644 index 00000000..39661eb4 --- /dev/null +++ b/global/codemirror/src/util/misc.js @@ -0,0 +1,150 @@ +export function bind(f) { + let args = Array.prototype.slice.call(arguments, 1) + return function(){return f.apply(null, args)} +} + +export function copyObj(obj, target, overwrite) { + if (!target) target = {} + for (let prop in obj) + if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) + target[prop] = obj[prop] + return target +} + +// Counts the column offset in a string, taking tabs into account. +// Used mostly to find indentation. +export function countColumn(string, end, tabSize, startIndex, startValue) { + if (end == null) { + end = string.search(/[^\s\u00a0]/) + if (end == -1) end = string.length + } + for (let i = startIndex || 0, n = startValue || 0;;) { + let nextTab = string.indexOf("\t", i) + if (nextTab < 0 || nextTab >= end) + return n + (end - i) + n += nextTab - i + n += tabSize - (n % tabSize) + i = nextTab + 1 + } +} + +export class Delayed { + constructor() {this.id = null} + set(ms, f) { + clearTimeout(this.id) + this.id = setTimeout(f, ms) + } +} + +export function indexOf(array, elt) { + for (let i = 0; i < array.length; ++i) + if (array[i] == elt) return i + return -1 +} + +// Number of pixels added to scroller and sizer to hide scrollbar +export let scrollerGap = 30 + +// Returned or thrown by various protocols to signal 'I'm not +// handling this'. +export let Pass = {toString: function(){return "CodeMirror.Pass"}} + +// Reused option objects for setSelection & friends +export let sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"} + +// The inverse of countColumn -- find the offset that corresponds to +// a particular column. +export function findColumn(string, goal, tabSize) { + for (let pos = 0, col = 0;;) { + let nextTab = string.indexOf("\t", pos) + if (nextTab == -1) nextTab = string.length + let skipped = nextTab - pos + if (nextTab == string.length || col + skipped >= goal) + return pos + Math.min(skipped, goal - col) + col += nextTab - pos + col += tabSize - (col % tabSize) + pos = nextTab + 1 + if (col >= goal) return pos + } +} + +let spaceStrs = [""] +export function spaceStr(n) { + while (spaceStrs.length <= n) + spaceStrs.push(lst(spaceStrs) + " ") + return spaceStrs[n] +} + +export function lst(arr) { return arr[arr.length-1] } + +export function map(array, f) { + let out = [] + for (let i = 0; i < array.length; i++) out[i] = f(array[i], i) + return out +} + +export function insertSorted(array, value, score) { + let pos = 0, priority = score(value) + while (pos < array.length && score(array[pos]) <= priority) pos++ + array.splice(pos, 0, value) +} + +function nothing() {} + +export function createObj(base, props) { + let inst + if (Object.create) { + inst = Object.create(base) + } else { + nothing.prototype = base + inst = new nothing() + } + if (props) copyObj(props, inst) + return inst +} + +let nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/ +export function isWordCharBasic(ch) { + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)) +} +export function isWordChar(ch, helper) { + if (!helper) return isWordCharBasic(ch) + if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) return true + return helper.test(ch) +} + +export function isEmpty(obj) { + for (let n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false + return true +} + +// Extending unicode characters. A series of a non-extending char + +// any number of extending chars is treated as a single unit as far +// as editing and measuring is concerned. This is not fully correct, +// since some scripts/fonts/browsers also treat other configurations +// of code points as a group. +let extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/ +export function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) } + +// Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range. +export function skipExtendingChars(str, pos, dir) { + while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) pos += dir + return pos +} + +// Returns the value from the range [`from`; `to`] that satisfies +// `pred` and is closest to `from`. Assumes that at least `to` +// satisfies `pred`. Supports `from` being greater than `to`. +export function findFirst(pred, from, to) { + // At any point we are certain `to` satisfies `pred`, don't know + // whether `from` does. + let dir = from > to ? -1 : 1 + for (;;) { + if (from == to) return from + let midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF) + if (mid == from) return pred(mid) ? from : to + if (pred(mid)) to = mid + else from = mid + dir + } +} diff --git a/global/codemirror/src/util/operation_group.js b/global/codemirror/src/util/operation_group.js new file mode 100644 index 00000000..b8fa78ac --- /dev/null +++ b/global/codemirror/src/util/operation_group.js @@ -0,0 +1,72 @@ +import { getHandlers } from "./event" + +let operationGroup = null + +export function pushOperation(op) { + if (operationGroup) { + operationGroup.ops.push(op) + } else { + op.ownsGroup = operationGroup = { + ops: [op], + delayedCallbacks: [] + } + } +} + +function fireCallbacksForOps(group) { + // Calls delayed callbacks and cursorActivity handlers until no + // new ones appear + let callbacks = group.delayedCallbacks, i = 0 + do { + for (; i < callbacks.length; i++) + callbacks[i].call(null) + for (let j = 0; j < group.ops.length; j++) { + let op = group.ops[j] + if (op.cursorActivityHandlers) + while (op.cursorActivityCalled < op.cursorActivityHandlers.length) + op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm) + } + } while (i < callbacks.length) +} + +export function finishOperation(op, endCb) { + let group = op.ownsGroup + if (!group) return + + try { fireCallbacksForOps(group) } + finally { + operationGroup = null + endCb(group) + } +} + +let orphanDelayedCallbacks = null + +// Often, we want to signal events at a point where we are in the +// middle of some work, but don't want the handler to start calling +// other methods on the editor, which might be in an inconsistent +// state or simply not expect any other events to happen. +// signalLater looks whether there are any handlers, and schedules +// them to be executed when the last operation ends, or, if no +// operation is active, when a timeout fires. +export function signalLater(emitter, type /*, values...*/) { + let arr = getHandlers(emitter, type) + if (!arr.length) return + let args = Array.prototype.slice.call(arguments, 2), list + if (operationGroup) { + list = operationGroup.delayedCallbacks + } else if (orphanDelayedCallbacks) { + list = orphanDelayedCallbacks + } else { + list = orphanDelayedCallbacks = [] + setTimeout(fireOrphanDelayed, 0) + } + for (let i = 0; i < arr.length; ++i) + list.push(() => arr[i].apply(null, args)) +} + +function fireOrphanDelayed() { + let delayed = orphanDelayedCallbacks + orphanDelayedCallbacks = null + for (let i = 0; i < delayed.length; ++i) delayed[i]() +} diff --git a/global/codemirror/test/comment_test.js b/global/codemirror/test/comment_test.js new file mode 100644 index 00000000..c6b9fe81 --- /dev/null +++ b/global/codemirror/test/comment_test.js @@ -0,0 +1,114 @@ +namespace = "comment_"; + +(function() { + function test(name, mode, run, before, after) { + return testCM(name, function(cm) { + run(cm); + eq(cm.getValue(), after); + }, {value: before, mode: mode}); + } + + var simpleProg = "function foo() {\n return bar;\n}"; + var inlineBlock = "foo(/* bar */ true);"; + var inlineBlocks = "foo(/* bar */ true, /* baz */ false);"; + var multiLineInlineBlock = ["above();", "foo(/* bar */ true);", "below();"]; + + test("block", "javascript", function(cm) { + cm.blockComment(Pos(0, 3), Pos(3, 0), {blockCommentLead: " *"}); + }, simpleProg + "\n", "/* function foo() {\n * return bar;\n * }\n */"); + + test("blockToggle", "javascript", function(cm) { + cm.blockComment(Pos(0, 3), Pos(2, 0), {blockCommentLead: " *"}); + cm.uncomment(Pos(0, 3), Pos(2, 0), {blockCommentLead: " *"}); + }, simpleProg, simpleProg); + + test("blockToggle2", "javascript", function(cm) { + cm.setCursor({line: 0, ch: 7 /* inside the block comment */}); + cm.execCommand("toggleComment"); + }, inlineBlock, "foo(bar true);"); + + // This test should work but currently fails. + // test("blockToggle3", "javascript", function(cm) { + // cm.setCursor({line: 0, ch: 7 /* inside the first block comment */}); + // cm.execCommand("toggleComment"); + // }, inlineBlocks, "foo(bar true, /* baz */ false);"); + + test("line", "javascript", function(cm) { + cm.lineComment(Pos(1, 1), Pos(1, 1)); + }, simpleProg, "function foo() {\n// return bar;\n}"); + + test("lineToggle", "javascript", function(cm) { + cm.lineComment(Pos(0, 0), Pos(2, 1)); + cm.uncomment(Pos(0, 0), Pos(2, 1)); + }, simpleProg, simpleProg); + + test("fallbackToBlock", "css", function(cm) { + cm.lineComment(Pos(0, 0), Pos(2, 1)); + }, "html {\n border: none;\n}", "/* html {\n border: none;\n} */"); + + test("fallbackToLine", "ruby", function(cm) { + cm.blockComment(Pos(0, 0), Pos(1)); + }, "def blah()\n return hah\n", "# def blah()\n# return hah\n"); + + test("ignoreExternalBlockComments", "javascript", function(cm) { + cm.execCommand("toggleComment"); + }, inlineBlocks, "// " + inlineBlocks); + + test("ignoreExternalBlockComments2", "javascript", function(cm) { + cm.setCursor({line: 0, ch: null /* eol */}); + cm.execCommand("toggleComment"); + }, inlineBlocks, "// " + inlineBlocks); + + test("ignoreExternalBlockCommentsMultiLineAbove", "javascript", function(cm) { + cm.setSelection({line: 0, ch: 0}, {line: 1, ch: 1}); + cm.execCommand("toggleComment"); + }, multiLineInlineBlock.join("\n"), ["// " + multiLineInlineBlock[0], + "// " + multiLineInlineBlock[1], + multiLineInlineBlock[2]].join("\n")); + + test("ignoreExternalBlockCommentsMultiLineBelow", "javascript", function(cm) { + cm.setSelection({line: 1, ch: 13 /* after end of block comment */}, {line: 2, ch: 1}); + cm.execCommand("toggleComment"); + }, multiLineInlineBlock.join("\n"), [multiLineInlineBlock[0], + "// " + multiLineInlineBlock[1], + "// " + multiLineInlineBlock[2]].join("\n")); + + test("commentRange", "javascript", function(cm) { + cm.blockComment(Pos(1, 2), Pos(1, 13), {fullLines: false}); + }, simpleProg, "function foo() {\n /*return bar;*/\n}"); + + test("indented", "javascript", function(cm) { + cm.lineComment(Pos(1, 0), Pos(2), {indent: true}); + }, simpleProg, "function foo() {\n// return bar;\n// }"); + + test("singleEmptyLine", "javascript", function(cm) { + cm.setCursor(1); + cm.execCommand("toggleComment"); + }, "a;\n\nb;", "a;\n// \nb;"); + + test("dontMessWithStrings", "javascript", function(cm) { + cm.execCommand("toggleComment"); + }, "console.log(\"/*string*/\");", "// console.log(\"/*string*/\");"); + + test("dontMessWithStrings2", "javascript", function(cm) { + cm.execCommand("toggleComment"); + }, "console.log(\"// string\");", "// console.log(\"// string\");"); + + test("dontMessWithStrings3", "javascript", function(cm) { + cm.execCommand("toggleComment"); + }, "// console.log(\"// string\");", "console.log(\"// string\");"); + + test("includeLastLine", "javascript", function(cm) { + cm.execCommand("selectAll") + cm.execCommand("toggleComment") + }, "// foo\n// bar\nbaz", "// // foo\n// // bar\n// baz") + + test("uncommentWithTrailingBlockEnd", "xml", function(cm) { + cm.execCommand("toggleComment") + }, " -->", "foo -->") + + test("dontCommentInComment", "xml", function(cm) { + cm.setCursor(1, 0) + cm.execCommand("toggleComment") + }, "", "") +})(); diff --git a/global/codemirror/test/contenteditable_test.js b/global/codemirror/test/contenteditable_test.js new file mode 100644 index 00000000..9130fa49 --- /dev/null +++ b/global/codemirror/test/contenteditable_test.js @@ -0,0 +1,110 @@ +(function() { + "use strict"; + + namespace = "contenteditable_"; + var Pos = CodeMirror.Pos + + function findTextNode(dom, text) { + if (dom instanceof CodeMirror) dom = dom.getInputField() + if (dom.nodeType == 1) { + for (var ch = dom.firstChild; ch; ch = ch.nextSibling) { + var found = findTextNode(ch, text) + if (found) return found + } + } else if (dom.nodeType == 3 && dom.nodeValue == text) { + return dom + } + } + + function lineElt(node) { + for (;;) { + var parent = node.parentNode + if (/CodeMirror-code/.test(parent.className)) return node + node = parent + } + } + + testCM("insert_text", function(cm) { + findTextNode(cm, "foobar").nodeValue = "foo bar" + cm.display.input.updateFromDOM() + eq(cm.getValue(), "foo bar") + }, {inputStyle: "contenteditable", value: "foobar"}) + + testCM("split_line", function(cm) { + cm.setSelection(Pos(2, 3)) + var node = findTextNode(cm, "foobar") + node.nodeValue = "foo" + var lineNode = lineElt(node) + lineNode.parentNode.insertBefore(document.createElement("pre"), lineNode.nextSibling).textContent = "bar" + cm.display.input.updateFromDOM() + eq(cm.getValue(), "one\ntwo\nfoo\nbar\nthree\nfour\n") + }, {inputStyle: "contenteditable", value: "one\ntwo\nfoobar\nthree\nfour\n"}) + + testCM("join_line", function(cm) { + cm.setSelection(Pos(2, 3)) + var node = findTextNode(cm, "foo") + node.nodeValue = "foobar" + var lineNode = lineElt(node) + lineNode.parentNode.removeChild(lineNode.nextSibling) + cm.display.input.updateFromDOM() + eq(cm.getValue(), "one\ntwo\nfoobar\nthree\nfour\n") + }, {inputStyle: "contenteditable", value: "one\ntwo\nfoo\nbar\nthree\nfour\n"}) + + testCM("delete_multiple", function(cm) { + cm.setSelection(Pos(1, 3), Pos(4, 0)) + var text = findTextNode(cm, "two"), startLine = lineElt(text) + for (var i = 0; i < 3; i++) + startLine.parentNode.removeChild(startLine.nextSibling) + text.nodeValue = "twothree" + cm.display.input.updateFromDOM() + eq(cm.getValue(), "one\ntwothree\nfour\n") + }, {inputStyle: "contenteditable", value: "one\ntwo\nfoo\nbar\nthree\nfour\n"}) + + testCM("ambiguous_diff_middle", function(cm) { + cm.setSelection(Pos(0, 2)) + findTextNode(cm, "baah").nodeValue = "baaah" + cm.display.input.updateFromDOM() + eqCharPos(cm.getCursor(), Pos(0, 3)) + }, {inputStyle: "contenteditable", value: "baah"}) + + testCM("ambiguous_diff_start", function(cm) { + cm.setSelection(Pos(0, 1)) + findTextNode(cm, "baah").nodeValue = "baaah" + cm.display.input.updateFromDOM() + eqCharPos(cm.getCursor(), Pos(0, 2)) + }, {inputStyle: "contenteditable", value: "baah"}) + + testCM("ambiguous_diff_end", function(cm) { + cm.setSelection(Pos(0, 3)) + findTextNode(cm, "baah").nodeValue = "baaah" + cm.display.input.updateFromDOM() + eqCharPos(cm.getCursor(), Pos(0, 4)) + }, {inputStyle: "contenteditable", value: "baah"}) + + testCM("force_redraw", function(cm) { + findTextNode(cm, "foo").parentNode.appendChild(document.createElement("hr")).className = "inserted" + cm.display.input.updateFromDOM() + eq(byClassName(cm.getInputField(), "inserted").length, 0) + }, {inputStyle: "contenteditable", value: "foo"}) + + testCM("type_on_empty_line", function(cm) { + cm.setSelection(Pos(1, 0)) + findTextNode(cm, "\u200b").nodeValue += "hello" + cm.display.input.updateFromDOM() + eq(cm.getValue(), "foo\nhello\nbar") + }, {inputStyle: "contenteditable", value: "foo\n\nbar"}) + + testCM("type_after_empty_line", function(cm) { + cm.setSelection(Pos(2, 0)) + findTextNode(cm, "bar").nodeValue = "hellobar" + cm.display.input.updateFromDOM() + eq(cm.getValue(), "foo\n\nhellobar") + }, {inputStyle: "contenteditable", value: "foo\n\nbar"}) + + testCM("type_before_empty_line", function(cm) { + cm.setSelection(Pos(0, 3)) + findTextNode(cm, "foo").nodeValue = "foohello" + cm.display.input.updateFromDOM() + eq(cm.getValue(), "foohello\n\nbar") + }, {inputStyle: "contenteditable", value: "foo\n\nbar"}) +})(); diff --git a/global/codemirror/test/doc_test.js b/global/codemirror/test/doc_test.js new file mode 100644 index 00000000..3af20ff9 --- /dev/null +++ b/global/codemirror/test/doc_test.js @@ -0,0 +1,371 @@ +(function() { + // A minilanguage for instantiating linked CodeMirror instances and Docs + function instantiateSpec(spec, place, opts) { + var names = {}, pos = 0, l = spec.length, editors = []; + while (spec) { + var m = spec.match(/^(\w+)(\*?)(?:='([^\']*)'|<(~?)(\w+)(?:\/(\d+)-(\d+))?)\s*/); + var name = m[1], isDoc = m[2], cur; + if (m[3]) { + cur = isDoc ? CodeMirror.Doc(m[3]) : CodeMirror(place, clone(opts, {value: m[3]})); + } else { + var other = m[5]; + if (!names.hasOwnProperty(other)) { + names[other] = editors.length; + editors.push(CodeMirror(place, opts)); + } + var doc = editors[names[other]].linkedDoc({ + sharedHist: !m[4], + from: m[6] ? Number(m[6]) : null, + to: m[7] ? Number(m[7]) : null + }); + cur = isDoc ? doc : CodeMirror(place, clone(opts, {value: doc})); + } + names[name] = editors.length; + editors.push(cur); + spec = spec.slice(m[0].length); + } + return editors; + } + + function clone(obj, props) { + if (!obj) return; + clone.prototype = obj; + var inst = new clone(); + if (props) for (var n in props) if (props.hasOwnProperty(n)) + inst[n] = props[n]; + return inst; + } + + function eqAll(val) { + var end = arguments.length, msg = null; + if (typeof arguments[end-1] == "string") + msg = arguments[--end]; + if (i == end) throw new Error("No editors provided to eqAll"); + for (var i = 1; i < end; ++i) + eq(arguments[i].getValue(), val, msg) + } + + function testDoc(name, spec, run, opts, expectFail) { + if (!opts) opts = {}; + + return test("doc_" + name, function() { + var place = document.getElementById("testground"); + var editors = instantiateSpec(spec, place, opts); + var successful = false; + + try { + run.apply(null, editors); + successful = true; + } finally { + if (!successful || verbose) { + place.style.visibility = "visible"; + } else { + for (var i = 0; i < editors.length; ++i) + if (editors[i] instanceof CodeMirror) + place.removeChild(editors[i].getWrapperElement()); + } + } + }, expectFail); + } + + var ie_lt8 = /MSIE [1-7]\b/.test(navigator.userAgent); + + function testBasic(a, b) { + eqAll("x", a, b); + a.setValue("hey"); + eqAll("hey", a, b); + b.setValue("wow"); + eqAll("wow", a, b); + a.replaceRange("u\nv\nw", Pos(0, 3)); + b.replaceRange("i", Pos(0, 4)); + b.replaceRange("j", Pos(2, 1)); + eqAll("wowui\nv\nwj", a, b); + } + + testDoc("basic", "A='x' B 0, "not at left"); + is(pos.top > 0, "not at top"); + }); + + testDoc("copyDoc", "A='u'", function(a) { + var copy = a.getDoc().copy(true); + a.setValue("foo"); + copy.setValue("bar"); + var old = a.swapDoc(copy); + eq(a.getValue(), "bar"); + a.undo(); + eq(a.getValue(), "u"); + a.swapDoc(old); + eq(a.getValue(), "foo"); + eq(old.historySize().undo, 1); + eq(old.copy(false).historySize().undo, 0); + }); + + testDoc("docKeepsMode", "A='1+1'", function(a) { + var other = CodeMirror.Doc("hi", "text/x-markdown"); + a.setOption("mode", "text/javascript"); + var old = a.swapDoc(other); + eq(a.getOption("mode"), "text/x-markdown"); + eq(a.getMode().name, "markdown"); + a.swapDoc(old); + eq(a.getOption("mode"), "text/javascript"); + eq(a.getMode().name, "javascript"); + }); + + testDoc("subview", "A='1\n2\n3\n4\n5' B<~A/1-3", function(a, b) { + eq(b.getValue(), "2\n3"); + eq(b.firstLine(), 1); + b.setCursor(Pos(4)); + eqCharPos(b.getCursor(), Pos(2, 1)); + a.replaceRange("-1\n0\n", Pos(0, 0)); + eq(b.firstLine(), 3); + eqCharPos(b.getCursor(), Pos(4, 1)); + a.undo(); + eqCharPos(b.getCursor(), Pos(2, 1)); + b.replaceRange("oyoy\n", Pos(2, 0)); + eq(a.getValue(), "1\n2\noyoy\n3\n4\n5"); + b.undo(); + eq(a.getValue(), "1\n2\n3\n4\n5"); + }); + + testDoc("subviewEditOnBoundary", "A='11\n22\n33\n44\n55' B<~A/1-4", function(a, b) { + a.replaceRange("x\nyy\nz", Pos(0, 1), Pos(2, 1)); + eq(b.firstLine(), 2); + eq(b.lineCount(), 2); + eq(b.getValue(), "z3\n44"); + a.replaceRange("q\nrr\ns", Pos(3, 1), Pos(4, 1)); + eq(b.firstLine(), 2); + eq(b.getValue(), "z3\n4q"); + eq(a.getValue(), "1x\nyy\nz3\n4q\nrr\ns5"); + a.execCommand("selectAll"); + a.replaceSelection("!"); + eqAll("!", a, b); + }); + + + testDoc("sharedMarker", "A='ab\ncd\nef\ngh' B 500){ + totalTime = 0; + delay = 50; + } + setTimeout(function(){step(i + 1);}, delay); + } else { // Quit tests + running = false; + return null; + } + } + step(0); +} + +function label(str, msg) { + if (msg) return str + " (" + msg + ")"; + return str; +} +function eq(a, b, msg) { + if (a != b) throw new Failure(label(a + " != " + b, msg)); +} +function near(a, b, margin, msg) { + if (Math.abs(a - b) > margin) + throw new Failure(label(a + " is not close to " + b + " (" + margin + ")", msg)); +} +function eqCharPos(a, b, msg) { + function str(p) { return "{line:" + p.line + ",ch:" + p.ch + ",sticky:" + p.sticky + "}"; } + if (a == b) return; + if (a == null) throw new Failure(label("comparing null to " + str(b), msg)); + if (b == null) throw new Failure(label("comparing " + str(a) + " to null", msg)); + if (a.line != b.line || a.ch != b.ch) throw new Failure(label(str(a) + " != " + str(b), msg)); +} +function eqCursorPos(a, b, msg) { + eqCharPos(a, b, msg); + if (a) eq(a.sticky, b.sticky, msg ? msg + ' (sticky)' : 'sticky'); +} +function is(a, msg) { + if (!a) throw new Failure(label("assertion failed", msg)); +} + +function countTests() { + if (!filters.length) return tests.length; + var sum = 0; + for (var i = 0; i < tests.length; ++i) { + var name = tests[i].name; + for (var j = 0; j < filters.length; j++) { + if (name.match(filters[j])) { + ++sum; + break; + } + } + } + return sum; +} + +function parseTestFilter(s) { + if (/_\*$/.test(s)) return new RegExp("^" + s.slice(0, s.length - 2), "i"); + else return new RegExp(s, "i"); +} diff --git a/global/codemirror/test/emacs_test.js b/global/codemirror/test/emacs_test.js new file mode 100644 index 00000000..b73eedaa --- /dev/null +++ b/global/codemirror/test/emacs_test.js @@ -0,0 +1,147 @@ +(function() { + "use strict"; + + var Pos = CodeMirror.Pos; + namespace = "emacs_"; + + var eventCache = {}; + function fakeEvent(keyName) { + var event = eventCache[key]; + if (event) return event; + + var ctrl, shift, alt; + var key = keyName.replace(/\w+-/g, function(type) { + if (type == "Ctrl-") ctrl = true; + else if (type == "Alt-") alt = true; + else if (type == "Shift-") shift = true; + return ""; + }); + var code; + for (var c in CodeMirror.keyNames) + if (CodeMirror.keyNames[c] == key) { code = c; break; } + if (code == null) throw new Error("Unknown key: " + key); + + return eventCache[keyName] = { + type: "keydown", keyCode: code, ctrlKey: ctrl, shiftKey: shift, altKey: alt, + preventDefault: function(){}, stopPropagation: function(){} + }; + } + + function sim(name, start /*, actions... */) { + var keys = Array.prototype.slice.call(arguments, 2); + testCM(name, function(cm) { + for (var i = 0; i < keys.length; ++i) { + var cur = keys[i]; + if (cur instanceof Pos) cm.setCursor(cur); + else if (cur.call) cur(cm); + else cm.triggerOnKeyDown(fakeEvent(cur)); + } + }, {keyMap: "emacs", value: start, mode: "javascript"}); + } + + function at(line, ch, sticky) { return function(cm) { eqCursorPos(cm.getCursor(), Pos(line, ch, sticky)); }; } + function txt(str) { return function(cm) { eq(cm.getValue(), str); }; } + + sim("motionHSimple", "abc", "Ctrl-F", "Ctrl-F", "Ctrl-B", at(0, 1, "after")); + sim("motionHMulti", "abcde", + "Ctrl-4", "Ctrl-F", at(0, 4, "before"), "Ctrl--", "Ctrl-2", "Ctrl-F", at(0, 2, "after"), + "Ctrl-5", "Ctrl-B", at(0, 0, "after")); + + sim("motionHWord", "abc. def ghi", + "Alt-F", at(0, 3, "before"), "Alt-F", at(0, 8, "before"), + "Ctrl-B", "Alt-B", at(0, 5, "after"), "Alt-B", at(0, 0, "after")); + sim("motionHWordMulti", "abc. def ghi ", + "Ctrl-3", "Alt-F", at(0, 12, "before"), "Ctrl-2", "Alt-B", at(0, 5, "after"), + "Ctrl--", "Alt-B", at(0, 8, "before")); + + sim("motionVSimple", "a\nb\nc\n", "Ctrl-N", "Ctrl-N", "Ctrl-P", at(1, 0, "after")); + sim("motionVMulti", "a\nb\nc\nd\ne\n", + "Ctrl-2", "Ctrl-N", at(2, 0, "after"), "Ctrl-F", "Ctrl--", "Ctrl-N", at(1, 1, "before"), + "Ctrl--", "Ctrl-3", "Ctrl-P", at(4, 1, "before")); + + sim("killYank", "abc\ndef\nghi", + "Ctrl-F", "Ctrl-Space", "Ctrl-N", "Ctrl-N", "Ctrl-W", "Ctrl-E", "Ctrl-Y", + txt("ahibc\ndef\ng")); + sim("killRing", "abcdef", + "Ctrl-Space", "Ctrl-F", "Ctrl-W", "Ctrl-Space", "Ctrl-F", "Ctrl-W", + "Ctrl-Y", "Alt-Y", + txt("acdef")); + sim("copyYank", "abcd", + "Ctrl-Space", "Ctrl-E", "Alt-W", "Ctrl-Y", + txt("abcdabcd")); + + sim("killLineSimple", "foo\nbar", "Ctrl-F", "Ctrl-K", txt("f\nbar")); + sim("killLineEmptyLine", "foo\n \nbar", "Ctrl-N", "Ctrl-K", txt("foo\nbar")); + sim("killLineMulti", "foo\nbar\nbaz", + "Ctrl-F", "Ctrl-F", "Ctrl-K", "Ctrl-K", "Ctrl-K", "Ctrl-A", "Ctrl-Y", + txt("o\nbarfo\nbaz")); + + sim("moveByParagraph", "abc\ndef\n\n\nhij\nklm\n\n", + "Ctrl-F", "Ctrl-Down", at(2, 0), "Ctrl-Down", at(6, 0), + "Ctrl-N", "Ctrl-Up", at(3, 0), "Ctrl-Up", at(0, 0), + Pos(1, 2), "Ctrl-Down", at(2, 0), Pos(4, 2), "Ctrl-Up", at(3, 0)); + sim("moveByParagraphMulti", "abc\n\ndef\n\nhij\n\nklm", + "Ctrl-U", "2", "Ctrl-Down", at(3, 0), + "Shift-Alt-.", "Ctrl-3", "Ctrl-Up", at(1, 0)); + + sim("moveBySentence", "sentence one! sentence\ntwo\n\nparagraph two", + "Alt-E", at(0, 13), "Alt-E", at(1, 3), "Ctrl-F", "Alt-A", at(0, 13)); + + sim("moveByExpr", "function foo(a, b) {}", + "Ctrl-Alt-F", at(0, 8), "Ctrl-Alt-F", at(0, 12), "Ctrl-Alt-F", at(0, 18), + "Ctrl-Alt-B", at(0, 12), "Ctrl-Alt-B", at(0, 9)); + sim("moveByExprMulti", "foo bar baz bug", + "Ctrl-2", "Ctrl-Alt-F", at(0, 7), + "Ctrl--", "Ctrl-Alt-F", at(0, 4), + "Ctrl--", "Ctrl-2", "Ctrl-Alt-B", at(0, 11)); + sim("delExpr", "var x = [\n a,\n b\n c\n];", + Pos(0, 8), "Ctrl-Alt-K", txt("var x = ;"), "Ctrl-/", + Pos(4, 1), "Ctrl-Alt-Backspace", txt("var x = ;")); + sim("delExprMulti", "foo bar baz", + "Ctrl-2", "Ctrl-Alt-K", txt(" baz"), + "Ctrl-/", "Ctrl-E", "Ctrl-2", "Ctrl-Alt-Backspace", txt("foo ")); + + sim("justOneSpace", "hi bye ", + Pos(0, 4), "Alt-Space", txt("hi bye "), + Pos(0, 4), "Alt-Space", txt("hi b ye "), + "Ctrl-A", "Alt-Space", "Ctrl-E", "Alt-Space", txt(" hi b ye ")); + + sim("openLine", "foo bar", "Alt-F", "Ctrl-O", txt("foo\n bar")) + + sim("transposeChar", "abcd\ne", + "Ctrl-F", "Ctrl-T", "Ctrl-T", txt("bcad\ne"), at(0, 3), + "Ctrl-F", "Ctrl-T", "Ctrl-T", "Ctrl-T", txt("bcda\ne"), at(0, 4), + "Ctrl-F", "Ctrl-T", txt("bcde\na"), at(1, 1)); + + sim("manipWordCase", "foo BAR bAZ", + "Alt-C", "Alt-L", "Alt-U", txt("Foo bar BAZ"), + "Ctrl-A", "Alt-U", "Alt-L", "Alt-C", txt("FOO bar Baz")); + sim("manipWordCaseMulti", "foo Bar bAz", + "Ctrl-2", "Alt-U", txt("FOO BAR bAz"), + "Ctrl-A", "Ctrl-3", "Alt-C", txt("Foo Bar Baz")); + + sim("upExpr", "foo {\n bar[];\n baz(blah);\n}", + Pos(2, 7), "Ctrl-Alt-U", at(2, 5), "Ctrl-Alt-U", at(0, 4)); + sim("transposeExpr", "do foo[bar] dah", + Pos(0, 6), "Ctrl-Alt-T", txt("do [bar]foo dah")); + + sim("clearMark", "abcde", Pos(0, 2), "Ctrl-Space", "Ctrl-F", "Ctrl-F", + "Ctrl-G", "Ctrl-W", txt("abcde")); + + sim("delRegion", "abcde", "Ctrl-Space", "Ctrl-F", "Ctrl-F", "Delete", txt("cde")); + sim("backspaceRegion", "abcde", "Ctrl-Space", "Ctrl-F", "Ctrl-F", "Backspace", txt("cde")); + + testCM("save", function(cm) { + var saved = false; + CodeMirror.commands.save = function(cm) { saved = cm.getValue(); }; + cm.triggerOnKeyDown(fakeEvent("Ctrl-X")); + cm.triggerOnKeyDown(fakeEvent("Ctrl-S")); + is(saved, "hi"); + }, {value: "hi", keyMap: "emacs"}); + + testCM("gotoInvalidLineFloat", function(cm) { + cm.openDialog = function(_, cb) { cb("2.2"); }; + cm.triggerOnKeyDown(fakeEvent("Alt-G")); + cm.triggerOnKeyDown(fakeEvent("G")); + }, {value: "1\n2\n3\n4", keyMap: "emacs"}); +})(); diff --git a/global/codemirror/test/index.html b/global/codemirror/test/index.html new file mode 100644 index 00000000..99bee5bb --- /dev/null +++ b/global/codemirror/test/index.html @@ -0,0 +1,269 @@ + + + +CodeMirror: Test Suite + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Test Suite

    + +

    A limited set of programmatic sanity tests for CodeMirror.

    + +
    +
    Ran 0 of 0 tests
    +
    +

    Please enable JavaScript...

    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/global/codemirror/test/lint.js b/global/codemirror/test/lint.js new file mode 100644 index 00000000..e7c114cd --- /dev/null +++ b/global/codemirror/test/lint.js @@ -0,0 +1,20 @@ +var blint = require("blint"); + +["mode", "lib", "addon", "keymap"].forEach(function(dir) { + blint.checkDir(dir, { + browser: true, + allowedGlobals: ["CodeMirror", "define", "test", "requirejs"], + ecmaVersion: 5, + tabs: dir == "lib" + }); +}); + +["src"].forEach(function(dir) { + blint.checkDir(dir, { + browser: true, + ecmaVersion: 6, + semicolons: false + }); +}); + +module.exports = {ok: blint.success()}; diff --git a/global/codemirror/test/mode_test.css b/global/codemirror/test/mode_test.css new file mode 100644 index 00000000..f83271b4 --- /dev/null +++ b/global/codemirror/test/mode_test.css @@ -0,0 +1,23 @@ +.mt-output .mt-token { + border: 1px solid #ddd; + white-space: pre; + font-family: "Consolas", monospace; + text-align: center; +} + +.mt-output .mt-style { + font-size: x-small; +} + +.mt-output .mt-state { + font-size: x-small; + vertical-align: top; +} + +.mt-output .mt-state-row { + display: none; +} + +.mt-state-unhide .mt-output .mt-state-row { + display: table-row; +} diff --git a/global/codemirror/test/mode_test.js b/global/codemirror/test/mode_test.js new file mode 100644 index 00000000..9773f801 --- /dev/null +++ b/global/codemirror/test/mode_test.js @@ -0,0 +1,193 @@ +/** + * Helper to test CodeMirror highlighting modes. It pretty prints output of the + * highlighter and can check against expected styles. + * + * Mode tests are registered by calling test.mode(testName, mode, + * tokens), where mode is a mode object as returned by + * CodeMirror.getMode, and tokens is an array of lines that make up + * the test. + * + * These lines are strings, in which styled stretches of code are + * enclosed in brackets `[]`, and prefixed by their style. For + * example, `[keyword if]`. Brackets in the code itself must be + * duplicated to prevent them from being interpreted as token + * boundaries. For example `a[[i]]` for `a[i]`. If a token has + * multiple styles, the styles must be separated by ampersands, for + * example `[tag&error ]`. + * + * See the test.js files in the css, markdown, gfm, and stex mode + * directories for examples. + */ +(function() { + function findSingle(str, pos, ch) { + for (;;) { + var found = str.indexOf(ch, pos); + if (found == -1) return null; + if (str.charAt(found + 1) != ch) return found; + pos = found + 2; + } + } + + var styleName = /[\w&-_]+/g; + function parseTokens(strs) { + var tokens = [], plain = ""; + for (var i = 0; i < strs.length; ++i) { + if (i) plain += "\n"; + var str = strs[i], pos = 0; + while (pos < str.length) { + var style = null, text; + if (str.charAt(pos) == "[" && str.charAt(pos+1) != "[") { + styleName.lastIndex = pos + 1; + var m = styleName.exec(str); + style = m[0].replace(/&/g, " "); + var textStart = pos + style.length + 2; + var end = findSingle(str, textStart, "]"); + if (end == null) throw new Error("Unterminated token at " + pos + " in '" + str + "'" + style); + text = str.slice(textStart, end); + pos = end + 1; + } else { + var end = findSingle(str, pos, "["); + if (end == null) end = str.length; + text = str.slice(pos, end); + pos = end; + } + text = text.replace(/\[\[|\]\]/g, function(s) {return s.charAt(0);}); + tokens.push({style: style, text: text}); + plain += text; + } + } + return {tokens: tokens, plain: plain}; + } + + test.mode = function(name, mode, tokens, modeName) { + var data = parseTokens(tokens); + return test((modeName || mode.name) + "_" + name, function() { + return compare(data.plain, data.tokens, mode); + }); + }; + + function esc(str) { + return str.replace('&', '&').replace('<', '<').replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'"); + } + + function compare(text, expected, mode) { + + var expectedOutput = []; + for (var i = 0; i < expected.length; ++i) { + var sty = expected[i].style; + if (sty && sty.indexOf(" ")) sty = sty.split(' ').sort().join(' '); + expectedOutput.push({style: sty, text: expected[i].text}); + } + + var observedOutput = highlight(text, mode); + + var s = ""; + var diff = highlightOutputsDifferent(expectedOutput, observedOutput); + if (diff != null) { + s += '
    '; + s += '
    ' + esc(text) + '
    '; + s += '
    '; + s += 'expected:'; + s += prettyPrintOutputTable(expectedOutput, diff); + s += 'observed: [display states]'; + s += prettyPrintOutputTable(observedOutput, diff); + s += '
    '; + s += '
    '; + } + if (observedOutput.indentFailures) { + for (var i = 0; i < observedOutput.indentFailures.length; i++) + s += "
    " + esc(observedOutput.indentFailures[i]) + "
    "; + } + if (s) throw new Failure(s); + } + + function stringify(obj) { + function replacer(key, obj) { + if (typeof obj == "function") { + var m = obj.toString().match(/function\s*[^\s(]*/); + return m ? m[0] : "function"; + } + return obj; + } + if (window.JSON && JSON.stringify) + return JSON.stringify(obj, replacer, 2); + return "[unsupported]"; // Fail safely if no native JSON. + } + + function highlight(string, mode) { + var state = mode.startState(); + + var lines = string.replace(/\r\n/g,'\n').split('\n'); + var st = [], pos = 0; + for (var i = 0; i < lines.length; ++i) { + var line = lines[i], newLine = true; + if (mode.indent) { + var ws = line.match(/^\s*/)[0]; + var indent = mode.indent(state, line.slice(ws.length)); + if (indent != CodeMirror.Pass && indent != ws.length) + (st.indentFailures || (st.indentFailures = [])).push( + "Indentation of line " + (i + 1) + " is " + indent + " (expected " + ws.length + ")"); + } + var stream = new CodeMirror.StringStream(line, 4, { + lookAhead: function(n) { return lines[i + n] } + }); + if (line == "" && mode.blankLine) mode.blankLine(state); + /* Start copied code from CodeMirror.highlight */ + while (!stream.eol()) { + for (var j = 0; j < 10 && stream.start >= stream.pos; j++) + var compare = mode.token(stream, state); + if (j == 10) + throw new Failure("Failed to advance the stream." + stream.string + " " + stream.pos); + var substr = stream.current(); + if (compare && compare.indexOf(" ") > -1) compare = compare.split(' ').sort().join(' '); + stream.start = stream.pos; + if (pos && st[pos-1].style == compare && !newLine) { + st[pos-1].text += substr; + } else if (substr) { + st[pos++] = {style: compare, text: substr, state: stringify(state)}; + } + // Give up when line is ridiculously long + if (stream.pos > 5000) { + st[pos++] = {style: null, text: this.text.slice(stream.pos)}; + break; + } + newLine = false; + } + } + + return st; + } + + function highlightOutputsDifferent(o1, o2) { + var minLen = Math.min(o1.length, o2.length); + for (var i = 0; i < minLen; ++i) + if (o1[i].style != o2[i].style || o1[i].text != o2[i].text) return i; + if (o1.length > minLen || o2.length > minLen) return minLen; + } + + function prettyPrintOutputTable(output, diffAt) { + var s = ''; + s += ''; + for (var i = 0; i < output.length; ++i) { + var style = output[i].style, val = output[i].text; + s += + ''; + } + s += ''; + for (var i = 0; i < output.length; ++i) { + s += ''; + } + if(output[0].state) { + s += ''; + for (var i = 0; i < output.length; ++i) { + s += ''; + } + } + s += '
    ' + + '' + + esc(val.replace(/ /g,'\xb7')) + // · MIDDLE DOT + '' + + '
    ' + (output[i].style || null) + '
    ' + esc(output[i].state) + '
    '; + return s; + } +})(); diff --git a/global/codemirror/test/multi_test.js b/global/codemirror/test/multi_test.js new file mode 100644 index 00000000..49169b99 --- /dev/null +++ b/global/codemirror/test/multi_test.js @@ -0,0 +1,285 @@ +(function() { + namespace = "multi_"; + + function hasSelections(cm) { + var sels = cm.listSelections(); + var given = (arguments.length - 1) / 4; + if (sels.length != given) + throw new Failure("expected " + given + " selections, found " + sels.length); + for (var i = 0, p = 1; i < given; i++, p += 4) { + var anchor = Pos(arguments[p], arguments[p + 1]); + var head = Pos(arguments[p + 2], arguments[p + 3]); + eqCharPos(sels[i].anchor, anchor, "anchor of selection " + i); + eqCharPos(sels[i].head, head, "head of selection " + i); + } + } + function hasCursors(cm) { + var sels = cm.listSelections(); + var given = (arguments.length - 1) / 2; + if (sels.length != given) + throw new Failure("expected " + given + " selections, found " + sels.length); + for (var i = 0, p = 1; i < given; i++, p += 2) { + eqCursorPos(sels[i].anchor, sels[i].head, "something selected for " + i); + var head = Pos(arguments[p], arguments[p + 1]); + eqCharPos(sels[i].head, head, "selection " + i); + } + } + + testCM("getSelection", function(cm) { + select(cm, {anchor: Pos(0, 0), head: Pos(1, 2)}, {anchor: Pos(2, 2), head: Pos(2, 0)}); + eq(cm.getSelection(), "1234\n56\n90"); + eq(cm.getSelection(false).join("|"), "1234|56|90"); + eq(cm.getSelections().join("|"), "1234\n56|90"); + }, {value: "1234\n5678\n90"}); + + testCM("setSelection", function(cm) { + select(cm, Pos(3, 0), Pos(0, 0), {anchor: Pos(2, 5), head: Pos(1, 0)}); + hasSelections(cm, 0, 0, 0, 0, + 2, 5, 1, 0, + 3, 0, 3, 0); + cm.setSelection(Pos(1, 2), Pos(1, 1)); + hasSelections(cm, 1, 2, 1, 1); + select(cm, {anchor: Pos(1, 1), head: Pos(2, 4)}, + {anchor: Pos(0, 0), head: Pos(1, 3)}, + Pos(3, 0), Pos(2, 2)); + hasSelections(cm, 0, 0, 2, 4, + 3, 0, 3, 0); + cm.setSelections([{anchor: Pos(0, 1), head: Pos(0, 2)}, + {anchor: Pos(1, 1), head: Pos(1, 2)}, + {anchor: Pos(2, 1), head: Pos(2, 2)}], 1); + eqCharPos(cm.getCursor("head"), Pos(1, 2)); + eqCharPos(cm.getCursor("anchor"), Pos(1, 1)); + eqCharPos(cm.getCursor("from"), Pos(1, 1)); + eqCharPos(cm.getCursor("to"), Pos(1, 2)); + cm.setCursor(Pos(1, 1)); + hasCursors(cm, 1, 1); + }, {value: "abcde\nabcde\nabcde\n"}); + + testCM("somethingSelected", function(cm) { + select(cm, Pos(0, 1), {anchor: Pos(0, 3), head: Pos(0, 5)}); + eq(cm.somethingSelected(), true); + select(cm, Pos(0, 1), Pos(0, 3), Pos(0, 5)); + eq(cm.somethingSelected(), false); + }, {value: "123456789"}); + + testCM("extendSelection", function(cm) { + select(cm, Pos(0, 1), Pos(1, 1), Pos(2, 1)); + cm.setExtending(true); + cm.extendSelections([Pos(0, 2), Pos(1, 0), Pos(2, 3)]); + hasSelections(cm, 0, 1, 0, 2, + 1, 1, 1, 0, + 2, 1, 2, 3); + cm.extendSelection(Pos(2, 4), Pos(2, 0)); + hasSelections(cm, 2, 4, 2, 0); + }, {value: "1234\n1234\n1234"}); + + testCM("addSelection", function(cm) { + select(cm, Pos(0, 1), Pos(1, 1)); + cm.addSelection(Pos(0, 0), Pos(0, 4)); + hasSelections(cm, 0, 0, 0, 4, + 1, 1, 1, 1); + cm.addSelection(Pos(2, 2)); + hasSelections(cm, 0, 0, 0, 4, + 1, 1, 1, 1, + 2, 2, 2, 2); + }, {value: "1234\n1234\n1234"}); + + testCM("replaceSelection", function(cm) { + var selections = [{anchor: Pos(0, 0), head: Pos(0, 1)}, + {anchor: Pos(0, 2), head: Pos(0, 3)}, + {anchor: Pos(0, 4), head: Pos(0, 5)}, + {anchor: Pos(2, 1), head: Pos(2, 4)}, + {anchor: Pos(2, 5), head: Pos(2, 6)}]; + var val = "123456\n123456\n123456"; + cm.setValue(val); + cm.setSelections(selections); + cm.replaceSelection("ab", "around"); + eq(cm.getValue(), "ab2ab4ab6\n123456\n1ab5ab"); + hasSelections(cm, 0, 0, 0, 2, + 0, 3, 0, 5, + 0, 6, 0, 8, + 2, 1, 2, 3, + 2, 4, 2, 6); + cm.setValue(val); + cm.setSelections(selections); + cm.replaceSelection("", "around"); + eq(cm.getValue(), "246\n123456\n15"); + hasSelections(cm, 0, 0, 0, 0, + 0, 1, 0, 1, + 0, 2, 0, 2, + 2, 1, 2, 1, + 2, 2, 2, 2); + cm.setValue(val); + cm.setSelections(selections); + cm.replaceSelection("X\nY\nZ", "around"); + hasSelections(cm, 0, 0, 2, 1, + 2, 2, 4, 1, + 4, 2, 6, 1, + 8, 1, 10, 1, + 10, 2, 12, 1); + cm.replaceSelection("a", "around"); + hasSelections(cm, 0, 0, 0, 1, + 0, 2, 0, 3, + 0, 4, 0, 5, + 2, 1, 2, 2, + 2, 3, 2, 4); + cm.replaceSelection("xy", "start"); + hasSelections(cm, 0, 0, 0, 0, + 0, 3, 0, 3, + 0, 6, 0, 6, + 2, 1, 2, 1, + 2, 4, 2, 4); + cm.replaceSelection("z\nf"); + hasSelections(cm, 1, 1, 1, 1, + 2, 1, 2, 1, + 3, 1, 3, 1, + 6, 1, 6, 1, + 7, 1, 7, 1); + eq(cm.getValue(), "z\nfxy2z\nfxy4z\nfxy6\n123456\n1z\nfxy5z\nfxy"); + }); + + function select(cm) { + var sels = []; + for (var i = 1; i < arguments.length; i++) { + var arg = arguments[i]; + if (arg.head) sels.push(arg); + else sels.push({head: arg, anchor: arg}); + } + cm.setSelections(sels, sels.length - 1); + } + + testCM("indentSelection", function(cm) { + select(cm, Pos(0, 1), Pos(1, 1)); + cm.indentSelection(4); + eq(cm.getValue(), " foo\n bar\nbaz"); + + select(cm, Pos(0, 2), Pos(0, 3), Pos(0, 4)); + cm.indentSelection(-2); + eq(cm.getValue(), " foo\n bar\nbaz"); + + select(cm, {anchor: Pos(0, 0), head: Pos(1, 2)}, + {anchor: Pos(1, 3), head: Pos(2, 0)}); + cm.indentSelection(-2); + eq(cm.getValue(), "foo\n bar\nbaz"); + }, {value: "foo\nbar\nbaz"}); + + testCM("killLine", function(cm) { + select(cm, Pos(0, 1), Pos(0, 2), Pos(1, 1)); + cm.execCommand("killLine"); + eq(cm.getValue(), "f\nb\nbaz"); + cm.execCommand("killLine"); + eq(cm.getValue(), "fbbaz"); + cm.setValue("foo\nbar\nbaz"); + select(cm, Pos(0, 1), {anchor: Pos(0, 2), head: Pos(2, 1)}); + cm.execCommand("killLine"); + eq(cm.getValue(), "faz"); + }, {value: "foo\nbar\nbaz"}); + + testCM("deleteLine", function(cm) { + select(cm, Pos(0, 0), + {head: Pos(0, 1), anchor: Pos(2, 0)}, + Pos(4, 0)); + cm.execCommand("deleteLine"); + eq(cm.getValue(), "4\n6\n7"); + select(cm, Pos(2, 1)); + cm.execCommand("deleteLine"); + eq(cm.getValue(), "4\n6\n"); + }, {value: "1\n2\n3\n4\n5\n6\n7"}); + + testCM("deleteH", function(cm) { + select(cm, Pos(0, 4), {anchor: Pos(1, 4), head: Pos(1, 5)}); + cm.execCommand("delWordAfter"); + eq(cm.getValue(), "foo bar baz\nabc ef ghi\n"); + cm.execCommand("delWordAfter"); + eq(cm.getValue(), "foo baz\nabc ghi\n"); + cm.execCommand("delCharBefore"); + cm.execCommand("delCharBefore"); + eq(cm.getValue(), "fo baz\nab ghi\n"); + select(cm, Pos(0, 3), Pos(0, 4), Pos(0, 5)); + cm.execCommand("delWordAfter"); + eq(cm.getValue(), "fo \nab ghi\n"); + }, {value: "foo bar baz\nabc def ghi\n"}); + + testCM("goLineStart", function(cm) { + select(cm, Pos(0, 2), Pos(0, 3), Pos(1, 1)); + cm.execCommand("goLineStart"); + hasCursors(cm, 0, 0, 1, 0); + select(cm, Pos(1, 1), Pos(0, 1)); + cm.setExtending(true); + cm.execCommand("goLineStart"); + hasSelections(cm, 0, 1, 0, 0, + 1, 1, 1, 0); + }, {value: "foo\nbar\nbaz"}); + + testCM("moveV", function(cm) { + select(cm, Pos(0, 2), Pos(1, 2)); + cm.execCommand("goLineDown"); + hasCursors(cm, 1, 2, 2, 2); + cm.execCommand("goLineUp"); + hasCursors(cm, 0, 2, 1, 2); + cm.execCommand("goLineUp"); + hasCursors(cm, 0, 0, 0, 2); + cm.execCommand("goLineUp"); + hasCursors(cm, 0, 0); + select(cm, Pos(0, 2), Pos(1, 2)); + cm.setExtending(true); + cm.execCommand("goLineDown"); + hasSelections(cm, 0, 2, 2, 2); + }, {value: "12345\n12345\n12345"}); + + testCM("moveH", function(cm) { + select(cm, Pos(0, 1), Pos(0, 3), Pos(0, 5), Pos(2, 3)); + cm.execCommand("goCharRight"); + hasCursors(cm, 0, 2, 0, 4, 1, 0, 2, 4); + cm.execCommand("goCharLeft"); + hasCursors(cm, 0, 1, 0, 3, 0, 5, 2, 3); + for (var i = 0; i < 15; i++) + cm.execCommand("goCharRight"); + hasCursors(cm, 2, 4, 2, 5); + }, {value: "12345\n12345\n12345"}); + + testCM("newlineAndIndent", function(cm) { + select(cm, Pos(0, 5), Pos(1, 5)); + cm.execCommand("newlineAndIndent"); + hasCursors(cm, 1, 2, 3, 2); + eq(cm.getValue(), "x = [\n 1];\ny = [\n 2];"); + cm.undo(); + eq(cm.getValue(), "x = [1];\ny = [2];"); + hasCursors(cm, 0, 5, 1, 5); + select(cm, Pos(0, 5), Pos(0, 6)); + cm.execCommand("newlineAndIndent"); + hasCursors(cm, 1, 2, 2, 0); + eq(cm.getValue(), "x = [\n 1\n];\ny = [2];"); + }, {value: "x = [1];\ny = [2];", mode: "javascript"}); + + testCM("goDocStartEnd", function(cm) { + select(cm, Pos(0, 1), Pos(1, 1)); + cm.execCommand("goDocStart"); + hasCursors(cm, 0, 0); + select(cm, Pos(0, 1), Pos(1, 1)); + cm.execCommand("goDocEnd"); + hasCursors(cm, 1, 3); + select(cm, Pos(0, 1), Pos(1, 1)); + cm.setExtending(true); + cm.execCommand("goDocEnd"); + hasSelections(cm, 1, 1, 1, 3); + }, {value: "abc\ndef"}); + + testCM("selectionHistory", function(cm) { + for (var i = 0; i < 3; ++i) + cm.addSelection(Pos(0, i * 2), Pos(0, i * 2 + 1)); + cm.execCommand("undoSelection"); + eq(cm.getSelection(), "1\n2"); + cm.execCommand("undoSelection"); + eq(cm.getSelection(), "1"); + cm.execCommand("undoSelection"); + eq(cm.getSelection(), ""); + eqCharPos(cm.getCursor(), Pos(0, 0)); + cm.execCommand("redoSelection"); + eq(cm.getSelection(), "1"); + cm.execCommand("redoSelection"); + eq(cm.getSelection(), "1\n2"); + cm.execCommand("redoSelection"); + eq(cm.getSelection(), "1\n2\n3"); + }, {value: "1 2 3"}); +})(); diff --git a/global/codemirror/test/phantom_driver.js b/global/codemirror/test/phantom_driver.js new file mode 100644 index 00000000..dbad08db --- /dev/null +++ b/global/codemirror/test/phantom_driver.js @@ -0,0 +1,31 @@ +var page = require('webpage').create(); + +page.open("http://localhost:3000/test/index.html", function (status) { + if (status != "success") { + console.log("page couldn't be loaded successfully"); + phantom.exit(1); + } + waitFor(function () { + return page.evaluate(function () { + var output = document.getElementById('status'); + if (!output) { return false; } + return (/^(\d+ failures?|all passed)/i).test(output.innerText); + }); + }, function () { + var failed = page.evaluate(function () { return window.failed; }); + var output = page.evaluate(function () { + return document.getElementById('output').innerText + "\n" + + document.getElementById('status').innerText; + }); + console.log(output); + phantom.exit(failed > 0 ? 1 : 0); + }); +}); + +function waitFor (test, cb) { + if (test()) { + cb(); + } else { + setTimeout(function () { waitFor(test, cb); }, 250); + } +} diff --git a/global/codemirror/test/run.js b/global/codemirror/test/run.js new file mode 100644 index 00000000..54984e73 --- /dev/null +++ b/global/codemirror/test/run.js @@ -0,0 +1,31 @@ +#!/usr/bin/env node + +var ok = require("./lint").ok; + +var files = new (require('node-static').Server)(); + +var server = require('http').createServer(function (req, res) { + req.addListener('end', function () { + files.serve(req, res, function (err/*, result */) { + if (err) { + console.error(err); + process.exit(1); + } + }); + }).resume(); +}).addListener('error', function (err) { + throw err; +}).listen(3000, function () { + var childProcess = require('child_process'); + var phantomjs = require("phantomjs-prebuilt"); + var childArgs = [ + require("path").join(__dirname, 'phantom_driver.js') + ]; + childProcess.execFile(phantomjs.path, childArgs, function (err, stdout, stderr) { + server.close(); + console.log(stdout); + if (err) console.error(err); + if (stderr) console.error(stderr); + process.exit(err || stderr || !ok ? 1 : 0); + }); +}); diff --git a/global/codemirror/test/scroll_test.js b/global/codemirror/test/scroll_test.js new file mode 100644 index 00000000..d1d21900 --- /dev/null +++ b/global/codemirror/test/scroll_test.js @@ -0,0 +1,126 @@ +(function() { + "use strict"; + + namespace = "scroll_"; + + testCM("bars_hidden", function(cm) { + for (var i = 0;; i++) { + var wrapBox = cm.getWrapperElement().getBoundingClientRect(); + var scrollBox = cm.getScrollerElement().getBoundingClientRect(); + is(wrapBox.bottom < scrollBox.bottom - 10); + is(wrapBox.right < scrollBox.right - 10); + if (i == 1) break; + cm.getWrapperElement().style.height = "auto"; + cm.refresh(); + } + }); + + function barH(cm) { return byClassName(cm.getWrapperElement(), "CodeMirror-hscrollbar")[0]; } + function barV(cm) { return byClassName(cm.getWrapperElement(), "CodeMirror-vscrollbar")[0]; } + + function displayBottom(cm, scrollbar) { + if (scrollbar && cm.display.scroller.offsetHeight > cm.display.scroller.clientHeight) + return barH(cm).getBoundingClientRect().top; + else + return cm.getWrapperElement().getBoundingClientRect().bottom - 1; + } + + function displayRight(cm, scrollbar) { + if (scrollbar && cm.display.scroller.offsetWidth > cm.display.scroller.clientWidth) + return barV(cm).getBoundingClientRect().left; + else + return cm.getWrapperElement().getBoundingClientRect().right - 1; + } + + function testMovedownFixed(cm, hScroll) { + cm.setSize("100px", "100px"); + if (hScroll) cm.setValue(new Array(100).join("x")); + var bottom = displayBottom(cm, hScroll); + for (var i = 0; i < 30; i++) { + cm.replaceSelection("x\n"); + var cursorBottom = cm.cursorCoords(null, "window").bottom; + is(cursorBottom <= bottom); + } + is(cursorBottom >= bottom - 5); + } + + testCM("movedown_fixed", function(cm) {testMovedownFixed(cm, false);}); + testCM("movedown_hscroll_fixed", function(cm) {testMovedownFixed(cm, true);}); + + function testMovedownResize(cm, hScroll) { + cm.getWrapperElement().style.height = "auto"; + if (hScroll) cm.setValue(new Array(100).join("x")); + cm.refresh(); + for (var i = 0; i < 30; i++) { + cm.replaceSelection("x\n"); + var bottom = displayBottom(cm, hScroll); + var cursorBottom = cm.cursorCoords(null, "window").bottom; + is(cursorBottom <= bottom); + is(cursorBottom >= bottom - 5); + } + } + + testCM("movedown_resize", function(cm) {testMovedownResize(cm, false);}); + testCM("movedown_hscroll_resize", function(cm) {testMovedownResize(cm, true);}); + + function testMoveright(cm, wrap, scroll) { + cm.setSize("100px", "100px"); + if (wrap) cm.setOption("lineWrapping", true); + if (scroll) { + cm.setValue("\n" + new Array(100).join("x\n")); + cm.setCursor(Pos(0, 0)); + } + var right = displayRight(cm, scroll); + for (var i = 0; i < 10; i++) { + cm.replaceSelection("xxxxxxxxxx"); + var cursorRight = cm.cursorCoords(null, "window").right; + is(cursorRight < right); + } + if (!wrap) is(cursorRight > right - 20); + } + + testCM("moveright", function(cm) {testMoveright(cm, false, false);}); + testCM("moveright_wrap", function(cm) {testMoveright(cm, true, false);}); + testCM("moveright_scroll", function(cm) {testMoveright(cm, false, true);}); + testCM("moveright_scroll_wrap", function(cm) {testMoveright(cm, true, true);}); + + testCM("suddenly_wide", function(cm) { + addDoc(cm, 100, 100); + cm.replaceSelection(new Array(600).join("l ") + "\n"); + cm.execCommand("goLineUp"); + cm.execCommand("goLineEnd"); + is(barH(cm).scrollLeft > cm.getScrollerElement().scrollLeft - 1); + }); + + testCM("wrap_changes_height", function(cm) { + var line = new Array(20).join("a ") + "\n"; + cm.setValue(new Array(20).join(line)); + var box = cm.getWrapperElement().getBoundingClientRect(); + cm.setSize(cm.cursorCoords(Pos(0), "window").right - box.left + 2, + cm.cursorCoords(Pos(19, 0), "window").bottom - box.top + 2); + cm.setCursor(Pos(19, 0)); + cm.replaceSelection("\n"); + is(cm.cursorCoords(null, "window").bottom < displayBottom(cm, false)); + }, {lineWrapping: true}); + + testCM("height_auto_with_gutter_expect_no_scroll_after_line_delete", function(cm) { + cm.setSize(null, "auto"); + cm.setValue("x\n"); + cm.execCommand("goDocEnd"); + cm.execCommand("delCharBefore"); + eq(cm.getScrollInfo().top, 0); + cm.scrollTo(null, 10); + is(cm.getScrollInfo().top < 5); + }, {lineNumbers: true}); + + testCM("bidi_ensureCursorVisible", function(cm) { + cm.setValue("
    وضع الاستخدام. عندما لا تعطى، وهذا الافتراضي إلى الطريقة الاولى\n"); + cm.execCommand("goLineStart"); + eq(cm.getScrollInfo().left, 0); + cm.execCommand("goCharRight"); + cm.execCommand("goCharRight"); + cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(0, 3, "before")); + eq(cm.getScrollInfo().left, 0); + }, {lineWrapping: false}); +})(); diff --git a/global/codemirror/test/search_test.js b/global/codemirror/test/search_test.js new file mode 100644 index 00000000..e3188de5 --- /dev/null +++ b/global/codemirror/test/search_test.js @@ -0,0 +1,85 @@ +(function() { + "use strict"; + + function run(doc, query, options) { + var cursor = doc.getSearchCursor(query, null, options); + for (var i = 3; i < arguments.length; i += 4) { + var found = cursor.findNext(); + is(found, "not enough results (forward)"); + eqCharPos(Pos(arguments[i], arguments[i + 1]), cursor.from(), "from, forward, " + (i - 3) / 4); + eqCharPos(Pos(arguments[i + 2], arguments[i + 3]), cursor.to(), "to, forward, " + (i - 3) / 4); + } + is(!cursor.findNext(), "too many matches (forward)"); + for (var i = arguments.length - 4; i >= 3; i -= 4) { + var found = cursor.findPrevious(); + is(found, "not enough results (backwards)"); + eqCharPos(Pos(arguments[i], arguments[i + 1]), cursor.from(), "from, backwards, " + (i - 3) / 4); + eqCharPos(Pos(arguments[i + 2], arguments[i + 3]), cursor.to(), "to, backwards, " + (i - 3) / 4); + } + is(!cursor.findPrevious(), "too many matches (backwards)"); + } + + function test(name, f) { window.test("search_" + name, f) } + + test("simple", function() { + var doc = new CodeMirror.Doc("abcdefg\nabcdefg") + run(doc, "cde", false, 0, 2, 0, 5, 1, 2, 1, 5); + }); + + test("multiline", function() { + var doc = new CodeMirror.Doc("hallo\na\nb\ngoodbye") + run(doc, "llo\na\nb\ngoo", false, 0, 2, 3, 3); + run(doc, "blah\na\nb\nhall", false); + run(doc, "bye\nx\neye", false); + }); + + test("regexp", function() { + var doc = new CodeMirror.Doc("abcde\nabcde") + run(doc, /bcd/, false, 0, 1, 0, 4, 1, 1, 1, 4); + run(doc, /BCD/, false); + run(doc, /BCD/i, false, 0, 1, 0, 4, 1, 1, 1, 4); + }); + + test("regexpMultiline", function() { + var doc = new CodeMirror.Doc("foo foo\nbar\nbaz") + run(doc, /fo[^]*az/, {multiline: true}, 0, 0, 2, 3) + run(doc, /[oa][^u]/, {multiline: true}, 0, 1, 0, 3, 0, 5, 0, 7, 1, 1, 1, 3, 2, 1, 2, 3) + run(doc, /[a][^u]{2}/, {multiline: true}, 1, 1, 2, 0) + }) + + test("insensitive", function() { + var doc = new CodeMirror.Doc("hallo\nHALLO\noink\nhAllO") + run(doc, "All", false, 3, 1, 3, 4); + run(doc, "All", true, 0, 1, 0, 4, 1, 1, 1, 4, 3, 1, 3, 4); + }); + + test("multilineInsensitive", function() { + var doc = new CodeMirror.Doc("zie ginds komT\nDe Stoomboot\nuit Spanje weer aan") + run(doc, "komt\nde stoomboot\nuit", false); + run(doc, "komt\nde stoomboot\nuit", {caseFold: true}, 0, 10, 2, 3); + run(doc, "kOMt\ndE stOOmboot\nuiT", {caseFold: true}, 0, 10, 2, 3); + }); + + test("multilineInsensitiveSlow", function() { + var text = "" + for (var i = 0; i < 1000; i++) text += "foo\nbar\n" + var doc = new CodeMirror.Doc("find\nme\n" + text + "find\nme\n") + var t0 = +new Date + run(doc, /find\nme/, {multiline: true}, 0, 0, 1, 2, 2002, 0, 2003, 2) + is(+new Date - t0 < 100) + }) + + test("expandingCaseFold", function() { + var doc = new CodeMirror.Doc("İİ İİ\nuu uu") + run(doc, "", true, 0, 8, 0, 12, 1, 8, 1, 12); + run(doc, "İİ", true, 0, 3, 0, 5, 0, 6, 0, 8); + }); + + test("normalize", function() { + if (!String.prototype.normalize) return + var doc = new CodeMirror.Doc("yılbaşı\n수 있을까\nLe taux d'humidité à London") + run(doc, "s", false, 0, 5, 0, 6) + run(doc, "이", false, 1, 2, 1, 3) + run(doc, "a", false, 0, 4, 0, 5, 2, 4, 2, 5, 2, 19, 2, 20) + }) +})(); diff --git a/global/codemirror/test/sql-hint-test.js b/global/codemirror/test/sql-hint-test.js new file mode 100644 index 00000000..1094ec03 --- /dev/null +++ b/global/codemirror/test/sql-hint-test.js @@ -0,0 +1,238 @@ +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +(function() { + var Pos = CodeMirror.Pos; + + var simpleTables = { + "users": ["name", "score", "birthDate"], + "xcountries": ["name", "population", "size"] + }; + + var schemaTables = { + "schema.users": ["name", "score", "birthDate"], + "schema.countries": ["name", "population", "size"] + }; + + var displayTextTables = [{ + text: "mytable", + displayText: "mytable | The main table", + columns: [{text: "id", displayText: "id | Unique ID"}, + {text: "name", displayText: "name | The name"}] + }]; + + namespace = "sql-hint_"; + + function test(name, spec) { + testCM(name, function(cm) { + cm.setValue(spec.value); + cm.setCursor(spec.cursor); + var completion = CodeMirror.hint.sql(cm, {tables: spec.tables}); + if (!deepCompare(completion.list, spec.list)) + throw new Failure("Wrong completion results " + JSON.stringify(completion.list) + " vs " + JSON.stringify(spec.list)); + eqCharPos(completion.from, spec.from); + eqCharPos(completion.to, spec.to); + }, { + value: spec.value, + mode: spec.mode || "text/x-mysql" + }); + } + + test("keywords", { + value: "SEL", + cursor: Pos(0, 3), + list: ["SELECT"], + from: Pos(0, 0), + to: Pos(0, 3) + }); + + test("from", { + value: "SELECT * fr", + cursor: Pos(0, 11), + list: ["FROM"], + from: Pos(0, 9), + to: Pos(0, 11) + }); + + test("table", { + value: "SELECT xc", + cursor: Pos(0, 9), + tables: simpleTables, + list: ["xcountries"], + from: Pos(0, 7), + to: Pos(0, 9) + }); + + test("columns", { + value: "SELECT users.", + cursor: Pos(0, 13), + tables: simpleTables, + list: ["users.name", "users.score", "users.birthDate"], + from: Pos(0, 7), + to: Pos(0, 13) + }); + + test("singlecolumn", { + value: "SELECT users.na", + cursor: Pos(0, 15), + tables: simpleTables, + list: ["users.name"], + from: Pos(0, 7), + to: Pos(0, 15) + }); + + test("quoted", { + value: "SELECT `users`.`na", + cursor: Pos(0, 18), + tables: simpleTables, + list: ["`users`.`name`"], + from: Pos(0, 7), + to: Pos(0, 18) + }); + + test("doublequoted", { + value: "SELECT \"users\".\"na", + cursor: Pos(0, 18), + tables: simpleTables, + list: ["\"users\".\"name\""], + from: Pos(0, 7), + to: Pos(0, 18), + mode: "text/x-sqlite" + }); + + test("quotedcolumn", { + value: "SELECT users.`na", + cursor: Pos(0, 16), + tables: simpleTables, + list: ["`users`.`name`"], + from: Pos(0, 7), + to: Pos(0, 16) + }); + + test("doublequotedcolumn", { + value: "SELECT users.\"na", + cursor: Pos(0, 16), + tables: simpleTables, + list: ["\"users\".\"name\""], + from: Pos(0, 7), + to: Pos(0, 16), + mode: "text/x-sqlite" + }); + + test("schema", { + value: "SELECT schem", + cursor: Pos(0, 12), + tables: schemaTables, + list: ["schema.users", "schema.countries", + "SCHEMA", "SCHEMA_NAME", "SCHEMAS"], + from: Pos(0, 7), + to: Pos(0, 12) + }); + + test("schemaquoted", { + value: "SELECT `sch", + cursor: Pos(0, 11), + tables: schemaTables, + list: ["`schema`.`users`", "`schema`.`countries`"], + from: Pos(0, 7), + to: Pos(0, 11) + }); + + test("schemadoublequoted", { + value: "SELECT \"sch", + cursor: Pos(0, 11), + tables: schemaTables, + list: ["\"schema\".\"users\"", "\"schema\".\"countries\""], + from: Pos(0, 7), + to: Pos(0, 11), + mode: "text/x-sqlite" + }); + + test("schemacolumn", { + value: "SELECT schema.users.", + cursor: Pos(0, 20), + tables: schemaTables, + list: ["schema.users.name", + "schema.users.score", + "schema.users.birthDate"], + from: Pos(0, 7), + to: Pos(0, 20) + }); + + test("schemacolumnquoted", { + value: "SELECT `schema`.`users`.", + cursor: Pos(0, 24), + tables: schemaTables, + list: ["`schema`.`users`.`name`", + "`schema`.`users`.`score`", + "`schema`.`users`.`birthDate`"], + from: Pos(0, 7), + to: Pos(0, 24) + }); + + test("schemacolumndoublequoted", { + value: "SELECT \"schema\".\"users\".", + cursor: Pos(0, 24), + tables: schemaTables, + list: ["\"schema\".\"users\".\"name\"", + "\"schema\".\"users\".\"score\"", + "\"schema\".\"users\".\"birthDate\""], + from: Pos(0, 7), + to: Pos(0, 24), + mode: "text/x-sqlite" + }); + + test("displayText_table", { + value: "SELECT myt", + cursor: Pos(0, 10), + tables: displayTextTables, + list: [{text: "mytable", displayText: "mytable | The main table",}], + from: Pos(0, 7), + to: Pos(0, 10) + }); + + test("displayText_column", { + value: "SELECT mytable.", + cursor: Pos(0, 15), + tables: displayTextTables, + list: [{text: "mytable.id", displayText: "id | Unique ID"}, + {text: "mytable.name", displayText: "name | The name"}], + from: Pos(0, 7), + to: Pos(0, 15) + }); + + test("alias_complete", { + value: "SELECT t. FROM users t", + cursor: Pos(0, 9), + tables: simpleTables, + list: ["t.name", "t.score", "t.birthDate"], + from: Pos(0, 7), + to: Pos(0, 9) + }); + + test("alias_complete_with_displayText", { + value: "SELECT t. FROM mytable t", + cursor: Pos(0, 9), + tables: displayTextTables, + list: [{text: "t.id", displayText: "id | Unique ID"}, + {text: "t.name", displayText: "name | The name"}], + from: Pos(0, 7), + to: Pos(0, 9) + }) + + function deepCompare(a, b) { + if (a === b) return true + if (!(a && typeof a == "object") || + !(b && typeof b == "object")) return false + var array = Array.isArray(a) + if (Array.isArray(b) != array) return false + if (array) { + if (a.length != b.length) return false + for (var i = 0; i < a.length; i++) if (!deepCompare(a[i], b[i])) return false + } else { + for (var p in a) if (!(p in b) || !deepCompare(a[p], b[p])) return false + for (var p in b) if (!(p in a)) return false + } + return true + } +})(); diff --git a/global/codemirror/test/sublime_test.js b/global/codemirror/test/sublime_test.js new file mode 100644 index 00000000..e9cd342f --- /dev/null +++ b/global/codemirror/test/sublime_test.js @@ -0,0 +1,307 @@ +(function() { + "use strict"; + + var Pos = CodeMirror.Pos; + namespace = "sublime_"; + + function stTest(name) { + var actions = Array.prototype.slice.call(arguments, 1); + testCM(name, function(cm) { + for (var i = 0; i < actions.length; i++) { + var action = actions[i]; + if (typeof action == "string" && i == 0) + cm.setValue(action); + else if (typeof action == "string") + cm.execCommand(action); + else if (action instanceof Pos) + cm.setCursor(action); + else + action(cm); + } + }); + } + + function at(line, ch, msg) { + return function(cm) { + eq(cm.listSelections().length, 1); + eqCursorPos(cm.getCursor("head"), Pos(line, ch), msg); + eqCursorPos(cm.getCursor("anchor"), Pos(line, ch), msg); + }; + } + + function val(content, msg) { + return function(cm) { eq(cm.getValue(), content, msg); }; + } + + function argsToRanges(args) { + if (args.length % 4) throw new Error("Wrong number of arguments for ranges."); + var ranges = []; + for (var i = 0; i < args.length; i += 4) + ranges.push({anchor: Pos(args[i], args[i + 1]), + head: Pos(args[i + 2], args[i + 3])}); + return ranges; + } + + function setSel() { + var ranges = argsToRanges(arguments); + return function(cm) { cm.setSelections(ranges, 0); }; + } + + function hasSel() { + var ranges = argsToRanges(arguments); + return function(cm) { + var sels = cm.listSelections(); + if (sels.length != ranges.length) + throw new Failure("Expected " + ranges.length + " selections, but found " + sels.length); + for (var i = 0; i < sels.length; i++) { + eqCharPos(sels[i].anchor, ranges[i].anchor, "anchor " + i); + eqCharPos(sels[i].head, ranges[i].head, "head " + i); + } + }; + } + + stTest("bySubword", "the foo_bar DooDahBah \n a", + "goSubwordLeft", at(0, 0), + "goSubwordRight", at(0, 3), + "goSubwordRight", at(0, 7), + "goSubwordRight", at(0, 11), + "goSubwordRight", at(0, 15), + "goSubwordRight", at(0, 18), + "goSubwordRight", at(0, 21), + "goSubwordRight", at(0, 22), + "goSubwordRight", at(1, 0), + "goSubwordRight", at(1, 2), + "goSubwordRight", at(1, 2), + "goSubwordLeft", at(1, 1), + "goSubwordLeft", at(1, 0), + "goSubwordLeft", at(0, 22), + "goSubwordLeft", at(0, 18), + "goSubwordLeft", at(0, 15), + "goSubwordLeft", at(0, 12), + "goSubwordLeft", at(0, 8), + "goSubwordLeft", at(0, 4), + "goSubwordLeft", at(0, 0)); + + stTest("splitSelectionByLine", "abc\ndef\nghi", + setSel(0, 1, 2, 2), + "splitSelectionByLine", + hasSel(0, 1, 0, 3, + 1, 0, 1, 3, + 2, 0, 2, 2)); + + stTest("splitSelectionByLineMulti", "abc\ndef\nghi\njkl", + setSel(0, 1, 1, 1, + 1, 2, 3, 2, + 3, 3, 3, 3), + "splitSelectionByLine", + hasSel(0, 1, 0, 3, + 1, 0, 1, 1, + 1, 2, 1, 3, + 2, 0, 2, 3, + 3, 0, 3, 2, + 3, 3, 3, 3)); + + stTest("selectLine", "abc\ndef\nghi", + setSel(0, 1, 0, 1, + 2, 0, 2, 1), + "selectLine", + hasSel(0, 0, 1, 0, + 2, 0, 2, 3), + setSel(0, 1, 1, 0), + "selectLine", + hasSel(0, 0, 2, 0)); + + stTest("insertLineAfter", "abcde\nfghijkl\nmn", + setSel(0, 1, 0, 1, + 0, 3, 0, 3, + 1, 2, 1, 2, + 1, 3, 1, 5), "insertLineAfter", + hasSel(1, 0, 1, 0, + 3, 0, 3, 0), val("abcde\n\nfghijkl\n\nmn")); + + stTest("insertLineBefore", "abcde\nfghijkl\nmn", + setSel(0, 1, 0, 1, + 0, 3, 0, 3, + 1, 2, 1, 2, + 1, 3, 1, 5), "insertLineBefore", + hasSel(0, 0, 0, 0, + 2, 0, 2, 0), val("\nabcde\n\nfghijkl\nmn")); + + stTest("selectNextOccurrence", "a foo bar\nfoobar foo", + setSel(0, 2, 0, 5), + "selectNextOccurrence", hasSel(0, 2, 0, 5, + 1, 0, 1, 3), + "selectNextOccurrence", hasSel(0, 2, 0, 5, + 1, 0, 1, 3, + 1, 7, 1, 10), + "selectNextOccurrence", hasSel(0, 2, 0, 5, + 1, 0, 1, 3, + 1, 7, 1, 10), + Pos(0, 3), "selectNextOccurrence", hasSel(0, 2, 0, 5), + "selectNextOccurrence", hasSel(0, 2, 0, 5, + 1, 7, 1, 10), + setSel(0, 6, 0, 9), + "selectNextOccurrence", hasSel(0, 6, 0, 9, + 1, 3, 1, 6)); + + stTest("selectScope", "foo(a) {\n bar[1, 2];\n}", + "selectScope", hasSel(0, 0, 2, 1), + Pos(0, 4), "selectScope", hasSel(0, 4, 0, 5), + Pos(0, 5), "selectScope", hasSel(0, 4, 0, 5), + Pos(0, 6), "selectScope", hasSel(0, 0, 2, 1), + Pos(0, 8), "selectScope", hasSel(0, 8, 2, 0), + Pos(1, 2), "selectScope", hasSel(0, 8, 2, 0), + Pos(1, 6), "selectScope", hasSel(1, 6, 1, 10), + Pos(1, 9), "selectScope", hasSel(1, 6, 1, 10)); + + stTest("goToBracket", "foo(a) {\n bar[1, 2];\n}", + Pos(0, 0), "goToBracket", at(0, 0), + Pos(0, 4), "goToBracket", at(0, 5), "goToBracket", at(0, 4), + Pos(0, 8), "goToBracket", at(2, 0), "goToBracket", at(0, 8), + Pos(1, 2), "goToBracket", at(2, 0), + Pos(1, 7), "goToBracket", at(1, 10), "goToBracket", at(1, 6)); + + stTest("swapLine", "1\n2\n3---\n4\n5", + "swapLineDown", val("2\n1\n3---\n4\n5"), + "swapLineUp", val("1\n2\n3---\n4\n5"), + "swapLineUp", val("1\n2\n3---\n4\n5"), + Pos(4, 1), "swapLineDown", val("1\n2\n3---\n4\n5"), + setSel(0, 1, 0, 1, + 1, 0, 2, 0, + 2, 2, 2, 2), + "swapLineDown", val("4\n1\n2\n3---\n5"), + hasSel(1, 1, 1, 1, + 2, 0, 3, 0, + 3, 2, 3, 2), + "swapLineUp", val("1\n2\n3---\n4\n5"), + hasSel(0, 1, 0, 1, + 1, 0, 2, 0, + 2, 2, 2, 2)); + + stTest("swapLineEmptyBottomSel", "1\n2\n3", + setSel(0, 1, 1, 0), + "swapLineDown", val("2\n1\n3"), hasSel(1, 1, 2, 0), + "swapLineUp", val("1\n2\n3"), hasSel(0, 1, 1, 0), + "swapLineUp", val("1\n2\n3"), hasSel(0, 0, 0, 0)); + + stTest("swapLineUpFromEnd", "a\nb\nc", + Pos(2, 1), "swapLineUp", + hasSel(1, 1, 1, 1), val("a\nc\nb")); + + stTest("joinLines", "abc\ndef\nghi\njkl", + "joinLines", val("abc def\nghi\njkl"), at(0, 4), + "undo", + setSel(0, 2, 1, 1), "joinLines", + val("abc def ghi\njkl"), hasSel(0, 2, 0, 8), + "undo", + setSel(0, 1, 0, 1, + 1, 1, 1, 1, + 3, 1, 3, 1), "joinLines", + val("abc def ghi\njkl"), hasSel(0, 4, 0, 4, + 0, 8, 0, 8, + 1, 3, 1, 3)); + + stTest("duplicateLine", "abc\ndef\nghi", + Pos(1, 0), "duplicateLine", val("abc\ndef\ndef\nghi"), at(2, 0), + "undo", + setSel(0, 1, 0, 1, + 1, 1, 1, 1, + 2, 1, 2, 1), "duplicateLine", + val("abc\nabc\ndef\ndef\nghi\nghi"), hasSel(1, 1, 1, 1, + 3, 1, 3, 1, + 5, 1, 5, 1)); + stTest("duplicateLineSelection", "abcdef", + setSel(0, 1, 0, 1, + 0, 2, 0, 4, + 0, 5, 0, 5), + "duplicateLine", + val("abcdef\nabcdcdef\nabcdcdef"), hasSel(2, 1, 2, 1, + 2, 4, 2, 6, + 2, 7, 2, 7)); + + stTest("selectLinesUpward", "123\n345\n789\n012", + setSel(0, 1, 0, 1, + 1, 1, 1, 3, + 2, 0, 2, 0, + 3, 0, 3, 0), + "selectLinesUpward", + hasSel(0, 1, 0, 1, + 0, 3, 0, 3, + 1, 0, 1, 0, + 1, 1, 1, 3, + 2, 0, 2, 0, + 3, 0, 3, 0)); + + stTest("selectLinesDownward", "123\n345\n789\n012", + setSel(0, 1, 0, 1, + 1, 1, 1, 3, + 2, 0, 2, 0, + 3, 0, 3, 0), + "selectLinesDownward", + hasSel(0, 1, 0, 1, + 1, 1, 1, 3, + 2, 0, 2, 0, + 2, 3, 2, 3, + 3, 0, 3, 0)); + + stTest("sortLines", "c\nb\na\nC\nB\nA", + "sortLines", val("A\nB\nC\na\nb\nc"), + "undo", + setSel(0, 0, 2, 0, + 3, 0, 5, 0), + "sortLines", val("b\nc\na\nB\nC\nA"), + hasSel(0, 0, 2, 0, + 3, 0, 5, 0), + "undo", + setSel(1, 0, 5, 0), "sortLinesInsensitive", val("c\na\nB\nb\nC\nA")); + + stTest("bookmarks", "abc\ndef\nghi\njkl", + Pos(0, 1), "toggleBookmark", + setSel(1, 1, 1, 2), "toggleBookmark", + setSel(2, 1, 2, 2), "toggleBookmark", + "nextBookmark", hasSel(0, 1, 0, 1), + "nextBookmark", hasSel(1, 1, 1, 2), + "nextBookmark", hasSel(2, 1, 2, 2), + "prevBookmark", hasSel(1, 1, 1, 2), + "prevBookmark", hasSel(0, 1, 0, 1), + "prevBookmark", hasSel(2, 1, 2, 2), + "prevBookmark", hasSel(1, 1, 1, 2), + "toggleBookmark", + "prevBookmark", hasSel(2, 1, 2, 2), + "prevBookmark", hasSel(0, 1, 0, 1), + "selectBookmarks", hasSel(0, 1, 0, 1, + 2, 1, 2, 2), + "clearBookmarks", + Pos(0, 0), "selectBookmarks", at(0, 0)); + + stTest("smartBackspace", " foo\n bar", + setSel(0, 2, 0, 2, 1, 4, 1, 4, 1, 6, 1, 6), "smartBackspace", + val("foo\n br")) + + stTest("upAndDowncaseAtCursor", "abc\ndef x\nghI", + setSel(0, 1, 0, 3, + 1, 1, 1, 1, + 1, 4, 1, 4), "upcaseAtCursor", + val("aBC\nDEF x\nghI"), hasSel(0, 1, 0, 3, + 1, 3, 1, 3, + 1, 4, 1, 4), + "downcaseAtCursor", + val("abc\ndef x\nghI"), hasSel(0, 1, 0, 3, + 1, 3, 1, 3, + 1, 4, 1, 4)); + + stTest("mark", "abc\ndef\nghi", + Pos(1, 1), "setSublimeMark", + Pos(2, 1), "selectToSublimeMark", hasSel(2, 1, 1, 1), + Pos(0, 1), "swapWithSublimeMark", at(1, 1), "swapWithSublimeMark", at(0, 1), + "deleteToSublimeMark", val("aef\nghi"), + "sublimeYank", val("abc\ndef\nghi"), at(1, 1)); + + stTest("findUnder", "foo foobar a", + "findUnder", hasSel(0, 4, 0, 7), + "findUnder", hasSel(0, 0, 0, 3), + "findUnderPrevious", hasSel(0, 4, 0, 7), + "findUnderPrevious", hasSel(0, 0, 0, 3), + Pos(0, 4), "findUnder", hasSel(0, 4, 0, 10), + Pos(0, 11), "findUnder", hasSel(0, 11, 0, 11)); +})(); diff --git a/global/codemirror/test/test.js b/global/codemirror/test/test.js new file mode 100644 index 00000000..96e989d1 --- /dev/null +++ b/global/codemirror/test/test.js @@ -0,0 +1,2527 @@ +var Pos = CodeMirror.Pos; + +CodeMirror.defaults.rtlMoveVisually = true; + +function forEach(arr, f) { + for (var i = 0, e = arr.length; i < e; ++i) f(arr[i], i); +} + +function addDoc(cm, width, height) { + var content = [], line = ""; + for (var i = 0; i < width; ++i) line += "x"; + for (var i = 0; i < height; ++i) content.push(line); + cm.setValue(content.join("\n")); +} + +function byClassName(elt, cls) { + if (elt.getElementsByClassName) return elt.getElementsByClassName(cls); + var found = [], re = new RegExp("\\b" + cls + "\\b"); + function search(elt) { + if (elt.nodeType == 3) return; + if (re.test(elt.className)) found.push(elt); + for (var i = 0, e = elt.childNodes.length; i < e; ++i) + search(elt.childNodes[i]); + } + search(elt); + return found; +} + +var ie_lt8 = /MSIE [1-7]\b/.test(navigator.userAgent); +var ie_lt9 = /MSIE [1-8]\b/.test(navigator.userAgent); +var mac = /Mac/.test(navigator.platform); +var phantom = /PhantomJS/.test(navigator.userAgent); +var opera = /Opera\/\./.test(navigator.userAgent); +var opera_version = opera && navigator.userAgent.match(/Version\/(\d+\.\d+)/); +if (opera_version) opera_version = Number(opera_version); +var opera_lt10 = opera && (!opera_version || opera_version < 10); + +namespace = "core_"; + +test("core_fromTextArea", function() { + var te = document.getElementById("code"); + te.value = "CONTENT"; + var cm = CodeMirror.fromTextArea(te); + is(!te.offsetHeight); + eq(cm.getValue(), "CONTENT"); + cm.setValue("foo\nbar"); + eq(cm.getValue(), "foo\nbar"); + cm.save(); + is(/^foo\r?\nbar$/.test(te.value)); + cm.setValue("xxx"); + cm.toTextArea(); + is(te.offsetHeight); + eq(te.value, "xxx"); +}); + +testCM("getRange", function(cm) { + eq(cm.getLine(0), "1234"); + eq(cm.getLine(1), "5678"); + eq(cm.getLine(2), null); + eq(cm.getLine(-1), null); + eq(cm.getRange(Pos(0, 0), Pos(0, 3)), "123"); + eq(cm.getRange(Pos(0, -1), Pos(0, 200)), "1234"); + eq(cm.getRange(Pos(0, 2), Pos(1, 2)), "34\n56"); + eq(cm.getRange(Pos(1, 2), Pos(100, 0)), "78"); +}, {value: "1234\n5678"}); + +testCM("replaceRange", function(cm) { + eq(cm.getValue(), ""); + cm.replaceRange("foo\n", Pos(0, 0)); + eq(cm.getValue(), "foo\n"); + cm.replaceRange("a\nb", Pos(0, 1)); + eq(cm.getValue(), "fa\nboo\n"); + eq(cm.lineCount(), 3); + cm.replaceRange("xyzzy", Pos(0, 0), Pos(1, 1)); + eq(cm.getValue(), "xyzzyoo\n"); + cm.replaceRange("abc", Pos(0, 0), Pos(10, 0)); + eq(cm.getValue(), "abc"); + eq(cm.lineCount(), 1); +}); + +testCM("selection", function(cm) { + cm.setSelection(Pos(0, 4), Pos(2, 2)); + is(cm.somethingSelected()); + eq(cm.getSelection(), "11\n222222\n33"); + eqCursorPos(cm.getCursor(false), Pos(2, 2)); + eqCursorPos(cm.getCursor(true), Pos(0, 4)); + cm.setSelection(Pos(1, 0)); + is(!cm.somethingSelected()); + eq(cm.getSelection(), ""); + eqCursorPos(cm.getCursor(true), Pos(1, 0)); + cm.replaceSelection("abc", "around"); + eq(cm.getSelection(), "abc"); + eq(cm.getValue(), "111111\nabc222222\n333333"); + cm.replaceSelection("def", "end"); + eq(cm.getSelection(), ""); + eqCursorPos(cm.getCursor(true), Pos(1, 3)); + cm.setCursor(Pos(2, 1)); + eqCursorPos(cm.getCursor(true), Pos(2, 1)); + cm.setCursor(1, 2); + eqCursorPos(cm.getCursor(true), Pos(1, 2)); +}, {value: "111111\n222222\n333333"}); + +testCM("extendSelection", function(cm) { + cm.setExtending(true); + addDoc(cm, 10, 10); + cm.setSelection(Pos(3, 5)); + eqCursorPos(cm.getCursor("head"), Pos(3, 5)); + eqCursorPos(cm.getCursor("anchor"), Pos(3, 5)); + cm.setSelection(Pos(2, 5), Pos(5, 5)); + eqCursorPos(cm.getCursor("head"), Pos(5, 5)); + eqCursorPos(cm.getCursor("anchor"), Pos(2, 5)); + eqCursorPos(cm.getCursor("start"), Pos(2, 5)); + eqCursorPos(cm.getCursor("end"), Pos(5, 5)); + cm.setSelection(Pos(5, 5), Pos(2, 5)); + eqCursorPos(cm.getCursor("head"), Pos(2, 5)); + eqCursorPos(cm.getCursor("anchor"), Pos(5, 5)); + eqCursorPos(cm.getCursor("start"), Pos(2, 5)); + eqCursorPos(cm.getCursor("end"), Pos(5, 5)); + cm.extendSelection(Pos(3, 2)); + eqCursorPos(cm.getCursor("head"), Pos(3, 2)); + eqCursorPos(cm.getCursor("anchor"), Pos(5, 5)); + cm.extendSelection(Pos(6, 2)); + eqCursorPos(cm.getCursor("head"), Pos(6, 2)); + eqCursorPos(cm.getCursor("anchor"), Pos(5, 5)); + cm.extendSelection(Pos(6, 3), Pos(6, 4)); + eqCursorPos(cm.getCursor("head"), Pos(6, 4)); + eqCursorPos(cm.getCursor("anchor"), Pos(5, 5)); + cm.extendSelection(Pos(0, 3), Pos(0, 4)); + eqCursorPos(cm.getCursor("head"), Pos(0, 3)); + eqCursorPos(cm.getCursor("anchor"), Pos(5, 5)); + cm.extendSelection(Pos(4, 5), Pos(6, 5)); + eqCursorPos(cm.getCursor("head"), Pos(6, 5)); + eqCursorPos(cm.getCursor("anchor"), Pos(4, 5)); + cm.setExtending(false); + cm.extendSelection(Pos(0, 3), Pos(0, 4)); + eqCursorPos(cm.getCursor("head"), Pos(0, 3)); + eqCursorPos(cm.getCursor("anchor"), Pos(0, 4)); +}); + +testCM("lines", function(cm) { + eq(cm.getLine(0), "111111"); + eq(cm.getLine(1), "222222"); + eq(cm.getLine(-1), null); + cm.replaceRange("", Pos(1, 0), Pos(2, 0)) + cm.replaceRange("abc", Pos(1, 0), Pos(1)); + eq(cm.getValue(), "111111\nabc"); +}, {value: "111111\n222222\n333333"}); + +testCM("indent", function(cm) { + cm.indentLine(1); + eq(cm.getLine(1), " blah();"); + cm.setOption("indentUnit", 8); + cm.indentLine(1); + eq(cm.getLine(1), "\tblah();"); + cm.setOption("indentUnit", 10); + cm.setOption("tabSize", 4); + cm.indentLine(1); + eq(cm.getLine(1), "\t\t blah();"); +}, {value: "if (x) {\nblah();\n}", indentUnit: 3, indentWithTabs: true, tabSize: 8}); + +testCM("indentByNumber", function(cm) { + cm.indentLine(0, 2); + eq(cm.getLine(0), " foo"); + cm.indentLine(0, -200); + eq(cm.getLine(0), "foo"); + cm.setSelection(Pos(0, 0), Pos(1, 2)); + cm.indentSelection(3); + eq(cm.getValue(), " foo\n bar\nbaz"); +}, {value: "foo\nbar\nbaz"}); + +test("core_defaults", function() { + var defsCopy = {}, defs = CodeMirror.defaults; + for (var opt in defs) defsCopy[opt] = defs[opt]; + defs.indentUnit = 5; + defs.value = "uu"; + defs.indentWithTabs = true; + defs.tabindex = 55; + var place = document.getElementById("testground"), cm = CodeMirror(place); + try { + eq(cm.getOption("indentUnit"), 5); + cm.setOption("indentUnit", 10); + eq(defs.indentUnit, 5); + eq(cm.getValue(), "uu"); + eq(cm.getOption("indentWithTabs"), true); + eq(cm.getInputField().tabIndex, 55); + } + finally { + for (var opt in defsCopy) defs[opt] = defsCopy[opt]; + place.removeChild(cm.getWrapperElement()); + } +}); + +testCM("lineInfo", function(cm) { + eq(cm.lineInfo(-1), null); + var mark = document.createElement("span"); + var lh = cm.setGutterMarker(1, "FOO", mark); + var info = cm.lineInfo(1); + eq(info.text, "222222"); + eq(info.gutterMarkers.FOO, mark); + eq(info.line, 1); + eq(cm.lineInfo(2).gutterMarkers, null); + cm.setGutterMarker(lh, "FOO", null); + eq(cm.lineInfo(1).gutterMarkers, null); + cm.setGutterMarker(1, "FOO", mark); + cm.setGutterMarker(0, "FOO", mark); + cm.clearGutter("FOO"); + eq(cm.lineInfo(0).gutterMarkers, null); + eq(cm.lineInfo(1).gutterMarkers, null); +}, {value: "111111\n222222\n333333"}); + +testCM("coords", function(cm) { + cm.setSize(null, 100); + addDoc(cm, 32, 200); + var top = cm.charCoords(Pos(0, 0)); + var bot = cm.charCoords(Pos(200, 30)); + is(top.left < bot.left); + is(top.top < bot.top); + is(top.top < top.bottom); + cm.scrollTo(null, 100); + var top2 = cm.charCoords(Pos(0, 0)); + is(top.top > top2.top); + eq(top.left, top2.left); +}); + +testCM("coordsChar", function(cm) { + addDoc(cm, 35, 70); + for (var i = 0; i < 2; ++i) { + var sys = i ? "local" : "page"; + for (var ch = 0; ch <= 35; ch += 5) { + for (var line = 0; line < 70; line += 5) { + cm.setCursor(line, ch); + var coords = cm.charCoords(Pos(line, ch), sys); + var pos = cm.coordsChar({left: coords.left + 1, top: coords.top + 1}, sys); + eqCharPos(pos, Pos(line, ch)); + } + } + } +}, {lineNumbers: true}); + +testCM("coordsCharBidi", function(cm) { + addDoc(cm, 35, 70); + // Put an rtl character into each line to trigger the bidi code path in coordsChar + cm.setValue(cm.getValue().replace(/\bx/g, 'و')) + for (var i = 0; i < 2; ++i) { + var sys = i ? "local" : "page"; + for (var ch = 2; ch <= 35; ch += 5) { + for (var line = 0; line < 70; line += 5) { + cm.setCursor(line, ch); + var coords = cm.charCoords(Pos(line, ch), sys); + var pos = cm.coordsChar({left: coords.left + 1, top: coords.top + 1}, sys); + eqCharPos(pos, Pos(line, ch)); + } + } + } +}, {lineNumbers: true}); + +testCM("badBidiOptimization", function(cm) { + var coords = cm.charCoords(Pos(0, 34)) + eqCharPos(cm.coordsChar({left: coords.right, top: coords.top + 2}), Pos(0, 34)) +}, {value: "----------

    هل يمكنك اختيار مستوى قسط التأمين الذي ترغب بدفعه؟

    "}) + +testCM("posFromIndex", function(cm) { + cm.setValue( + "This function should\n" + + "convert a zero based index\n" + + "to line and ch." + ); + + var examples = [ + { index: -1, line: 0, ch: 0 }, // <- Tests clipping + { index: 0, line: 0, ch: 0 }, + { index: 10, line: 0, ch: 10 }, + { index: 39, line: 1, ch: 18 }, + { index: 55, line: 2, ch: 7 }, + { index: 63, line: 2, ch: 15 }, + { index: 64, line: 2, ch: 15 } // <- Tests clipping + ]; + + for (var i = 0; i < examples.length; i++) { + var example = examples[i]; + var pos = cm.posFromIndex(example.index); + eq(pos.line, example.line); + eq(pos.ch, example.ch); + if (example.index >= 0 && example.index < 64) + eq(cm.indexFromPos(pos), example.index); + } +}); + +testCM("undo", function(cm) { + cm.replaceRange("def", Pos(0, 0), Pos(0)); + eq(cm.historySize().undo, 1); + cm.undo(); + eq(cm.getValue(), "abc"); + eq(cm.historySize().undo, 0); + eq(cm.historySize().redo, 1); + cm.redo(); + eq(cm.getValue(), "def"); + eq(cm.historySize().undo, 1); + eq(cm.historySize().redo, 0); + cm.setValue("1\n\n\n2"); + cm.clearHistory(); + eq(cm.historySize().undo, 0); + for (var i = 0; i < 20; ++i) { + cm.replaceRange("a", Pos(0, 0)); + cm.replaceRange("b", Pos(3, 0)); + } + eq(cm.historySize().undo, 40); + for (var i = 0; i < 40; ++i) + cm.undo(); + eq(cm.historySize().redo, 40); + eq(cm.getValue(), "1\n\n\n2"); +}, {value: "abc"}); + +testCM("undoDepth", function(cm) { + cm.replaceRange("d", Pos(0)); + cm.replaceRange("e", Pos(0)); + cm.replaceRange("f", Pos(0)); + cm.undo(); cm.undo(); cm.undo(); + eq(cm.getValue(), "abcd"); +}, {value: "abc", undoDepth: 4}); + +testCM("undoDoesntClearValue", function(cm) { + cm.undo(); + eq(cm.getValue(), "x"); +}, {value: "x"}); + +testCM("undoMultiLine", function(cm) { + cm.operation(function() { + cm.replaceRange("x", Pos(0, 0)); + cm.replaceRange("y", Pos(1, 0)); + }); + cm.undo(); + eq(cm.getValue(), "abc\ndef\nghi"); + cm.operation(function() { + cm.replaceRange("y", Pos(1, 0)); + cm.replaceRange("x", Pos(0, 0)); + }); + cm.undo(); + eq(cm.getValue(), "abc\ndef\nghi"); + cm.operation(function() { + cm.replaceRange("y", Pos(2, 0)); + cm.replaceRange("x", Pos(1, 0)); + cm.replaceRange("z", Pos(2, 0)); + }); + cm.undo(); + eq(cm.getValue(), "abc\ndef\nghi", 3); +}, {value: "abc\ndef\nghi"}); + +testCM("undoComposite", function(cm) { + cm.replaceRange("y", Pos(1)); + cm.operation(function() { + cm.replaceRange("x", Pos(0)); + cm.replaceRange("z", Pos(2)); + }); + eq(cm.getValue(), "ax\nby\ncz\n"); + cm.undo(); + eq(cm.getValue(), "a\nby\nc\n"); + cm.undo(); + eq(cm.getValue(), "a\nb\nc\n"); + cm.redo(); cm.redo(); + eq(cm.getValue(), "ax\nby\ncz\n"); +}, {value: "a\nb\nc\n"}); + +testCM("undoSelection", function(cm) { + cm.setSelection(Pos(0, 2), Pos(0, 4)); + cm.replaceSelection(""); + cm.setCursor(Pos(1, 0)); + cm.undo(); + eqCursorPos(cm.getCursor(true), Pos(0, 2)); + eqCursorPos(cm.getCursor(false), Pos(0, 4)); + cm.setCursor(Pos(1, 0)); + cm.redo(); + eqCursorPos(cm.getCursor(true), Pos(0, 2)); + eqCursorPos(cm.getCursor(false), Pos(0, 2)); +}, {value: "abcdefgh\n"}); + +testCM("undoSelectionAsBefore", function(cm) { + cm.replaceSelection("abc", "around"); + cm.undo(); + cm.redo(); + eq(cm.getSelection(), "abc"); +}); + +testCM("selectionChangeConfusesHistory", function(cm) { + cm.replaceSelection("abc", null, "dontmerge"); + cm.operation(function() { + cm.setCursor(Pos(0, 0)); + cm.replaceSelection("abc", null, "dontmerge"); + }); + eq(cm.historySize().undo, 2); +}); + +testCM("markTextSingleLine", function(cm) { + forEach([{a: 0, b: 1, c: "", f: 2, t: 5}, + {a: 0, b: 4, c: "", f: 0, t: 2}, + {a: 1, b: 2, c: "x", f: 3, t: 6}, + {a: 4, b: 5, c: "", f: 3, t: 5}, + {a: 4, b: 5, c: "xx", f: 3, t: 7}, + {a: 2, b: 5, c: "", f: 2, t: 3}, + {a: 2, b: 5, c: "abcd", f: 6, t: 7}, + {a: 2, b: 6, c: "x", f: null, t: null}, + {a: 3, b: 6, c: "", f: null, t: null}, + {a: 0, b: 9, c: "hallo", f: null, t: null}, + {a: 4, b: 6, c: "x", f: 3, t: 4}, + {a: 4, b: 8, c: "", f: 3, t: 4}, + {a: 6, b: 6, c: "a", f: 3, t: 6}, + {a: 8, b: 9, c: "", f: 3, t: 6}], function(test) { + cm.setValue("1234567890"); + var r = cm.markText(Pos(0, 3), Pos(0, 6), {className: "foo"}); + cm.replaceRange(test.c, Pos(0, test.a), Pos(0, test.b)); + var f = r.find(); + eq(f && f.from.ch, test.f); eq(f && f.to.ch, test.t); + }); +}); + +testCM("markTextMultiLine", function(cm) { + function p(v) { return v && Pos(v[0], v[1]); } + forEach([{a: [0, 0], b: [0, 5], c: "", f: [0, 0], t: [2, 5]}, + {a: [0, 0], b: [0, 5], c: "foo\n", f: [1, 0], t: [3, 5]}, + {a: [0, 1], b: [0, 10], c: "", f: [0, 1], t: [2, 5]}, + {a: [0, 5], b: [0, 6], c: "x", f: [0, 6], t: [2, 5]}, + {a: [0, 0], b: [1, 0], c: "", f: [0, 0], t: [1, 5]}, + {a: [0, 6], b: [2, 4], c: "", f: [0, 5], t: [0, 7]}, + {a: [0, 6], b: [2, 4], c: "aa", f: [0, 5], t: [0, 9]}, + {a: [1, 2], b: [1, 8], c: "", f: [0, 5], t: [2, 5]}, + {a: [0, 5], b: [2, 5], c: "xx", f: null, t: null}, + {a: [0, 0], b: [2, 10], c: "x", f: null, t: null}, + {a: [1, 5], b: [2, 5], c: "", f: [0, 5], t: [1, 5]}, + {a: [2, 0], b: [2, 3], c: "", f: [0, 5], t: [2, 2]}, + {a: [2, 5], b: [3, 0], c: "a\nb", f: [0, 5], t: [2, 5]}, + {a: [2, 3], b: [3, 0], c: "x", f: [0, 5], t: [2, 3]}, + {a: [1, 1], b: [1, 9], c: "1\n2\n3", f: [0, 5], t: [4, 5]}], function(test) { + cm.setValue("aaaaaaaaaa\nbbbbbbbbbb\ncccccccccc\ndddddddd\n"); + var r = cm.markText(Pos(0, 5), Pos(2, 5), + {className: "CodeMirror-matchingbracket"}); + cm.replaceRange(test.c, p(test.a), p(test.b)); + var f = r.find(); + eqCursorPos(f && f.from, p(test.f)); eqCursorPos(f && f.to, p(test.t)); + }); +}); + +testCM("markTextUndo", function(cm) { + var marker1, marker2, bookmark; + marker1 = cm.markText(Pos(0, 1), Pos(0, 3), + {className: "CodeMirror-matchingbracket"}); + marker2 = cm.markText(Pos(0, 0), Pos(2, 1), + {className: "CodeMirror-matchingbracket"}); + bookmark = cm.setBookmark(Pos(1, 5)); + cm.operation(function(){ + cm.replaceRange("foo", Pos(0, 2)); + cm.replaceRange("bar\nbaz\nbug\n", Pos(2, 0), Pos(3, 0)); + }); + var v1 = cm.getValue(); + cm.setValue(""); + eq(marker1.find(), null); eq(marker2.find(), null); eq(bookmark.find(), null); + cm.undo(); + eqCursorPos(bookmark.find(), Pos(1, 5), "still there"); + cm.undo(); + var m1Pos = marker1.find(), m2Pos = marker2.find(); + eqCursorPos(m1Pos.from, Pos(0, 1)); eqCursorPos(m1Pos.to, Pos(0, 3)); + eqCursorPos(m2Pos.from, Pos(0, 0)); eqCursorPos(m2Pos.to, Pos(2, 1)); + eqCursorPos(bookmark.find(), Pos(1, 5)); + cm.redo(); cm.redo(); + eq(bookmark.find(), null); + cm.undo(); + eqCursorPos(bookmark.find(), Pos(1, 5)); + eq(cm.getValue(), v1); +}, {value: "1234\n56789\n00\n"}); + +testCM("markTextStayGone", function(cm) { + var m1 = cm.markText(Pos(0, 0), Pos(0, 1)); + cm.replaceRange("hi", Pos(0, 2)); + m1.clear(); + cm.undo(); + eq(m1.find(), null); +}, {value: "hello"}); + +testCM("markTextAllowEmpty", function(cm) { + var m1 = cm.markText(Pos(0, 1), Pos(0, 2), {clearWhenEmpty: false}); + is(m1.find()); + cm.replaceRange("x", Pos(0, 0)); + is(m1.find()); + cm.replaceRange("y", Pos(0, 2)); + is(m1.find()); + cm.replaceRange("z", Pos(0, 3), Pos(0, 4)); + is(!m1.find()); + var m2 = cm.markText(Pos(0, 1), Pos(0, 2), {clearWhenEmpty: false, + inclusiveLeft: true, + inclusiveRight: true}); + cm.replaceRange("q", Pos(0, 1), Pos(0, 2)); + is(m2.find()); + cm.replaceRange("", Pos(0, 0), Pos(0, 3)); + is(!m2.find()); + var m3 = cm.markText(Pos(0, 1), Pos(0, 1), {clearWhenEmpty: false}); + cm.replaceRange("a", Pos(0, 3)); + is(m3.find()); + cm.replaceRange("b", Pos(0, 1)); + is(!m3.find()); +}, {value: "abcde"}); + +testCM("markTextStacked", function(cm) { + var m1 = cm.markText(Pos(0, 0), Pos(0, 0), {clearWhenEmpty: false}); + var m2 = cm.markText(Pos(0, 0), Pos(0, 0), {clearWhenEmpty: false}); + cm.replaceRange("B", Pos(0, 1)); + is(m1.find() && m2.find()); +}, {value: "A"}); + +testCM("undoPreservesNewMarks", function(cm) { + cm.markText(Pos(0, 3), Pos(0, 4)); + cm.markText(Pos(1, 1), Pos(1, 3)); + cm.replaceRange("", Pos(0, 3), Pos(3, 1)); + var mBefore = cm.markText(Pos(0, 0), Pos(0, 1)); + var mAfter = cm.markText(Pos(0, 5), Pos(0, 6)); + var mAround = cm.markText(Pos(0, 2), Pos(0, 4)); + cm.undo(); + eqCursorPos(mBefore.find().from, Pos(0, 0)); + eqCursorPos(mBefore.find().to, Pos(0, 1)); + eqCursorPos(mAfter.find().from, Pos(3, 3)); + eqCursorPos(mAfter.find().to, Pos(3, 4)); + eqCursorPos(mAround.find().from, Pos(0, 2)); + eqCursorPos(mAround.find().to, Pos(3, 2)); + var found = cm.findMarksAt(Pos(2, 2)); + eq(found.length, 1); + eq(found[0], mAround); +}, {value: "aaaa\nbbbb\ncccc\ndddd"}); + +testCM("markClearBetween", function(cm) { + cm.setValue("aaa\nbbb\nccc\nddd\n"); + cm.markText(Pos(0, 0), Pos(2)); + cm.replaceRange("aaa\nbbb\nccc", Pos(0, 0), Pos(2)); + eq(cm.findMarksAt(Pos(1, 1)).length, 0); +}); + +testCM("findMarksMiddle", function(cm) { + var mark = cm.markText(Pos(1, 1), Pos(3, 1)); + var found = cm.findMarks(Pos(2, 1), Pos(2, 2)); + eq(found.length, 1); + eq(found[0], mark); +}, {value: "line 0\nline 1\nline 2\nline 3"}); + +testCM("deleteSpanCollapsedInclusiveLeft", function(cm) { + var from = Pos(1, 0), to = Pos(1, 1); + var m = cm.markText(from, to, {collapsed: true, inclusiveLeft: true}); + // Delete collapsed span. + cm.replaceRange("", from, to); +}, {value: "abc\nX\ndef"}); + +testCM("markTextCSS", function(cm) { + function present() { + var spans = cm.display.lineDiv.getElementsByTagName("span"); + for (var i = 0; i < spans.length; i++) + if (spans[i].style.color == "cyan" && span[i].textContent == "cdefg") return true; + } + var m = cm.markText(Pos(0, 2), Pos(0, 6), {css: "color: cyan"}); + m.clear(); + is(!present()); +}, {value: "abcdefgh"}); + +testCM("bookmark", function(cm) { + function p(v) { return v && Pos(v[0], v[1]); } + forEach([{a: [1, 0], b: [1, 1], c: "", d: [1, 4]}, + {a: [1, 1], b: [1, 1], c: "xx", d: [1, 7]}, + {a: [1, 4], b: [1, 5], c: "ab", d: [1, 6]}, + {a: [1, 4], b: [1, 6], c: "", d: null}, + {a: [1, 5], b: [1, 6], c: "abc", d: [1, 5]}, + {a: [1, 6], b: [1, 8], c: "", d: [1, 5]}, + {a: [1, 4], b: [1, 4], c: "\n\n", d: [3, 1]}, + {bm: [1, 9], a: [1, 1], b: [1, 1], c: "\n", d: [2, 8]}], function(test) { + cm.setValue("1234567890\n1234567890\n1234567890"); + var b = cm.setBookmark(p(test.bm) || Pos(1, 5)); + cm.replaceRange(test.c, p(test.a), p(test.b)); + eqCursorPos(b.find(), p(test.d)); + }); +}); + +testCM("bookmarkInsertLeft", function(cm) { + var br = cm.setBookmark(Pos(0, 2), {insertLeft: false}); + var bl = cm.setBookmark(Pos(0, 2), {insertLeft: true}); + cm.setCursor(Pos(0, 2)); + cm.replaceSelection("hi"); + eqCursorPos(br.find(), Pos(0, 2)); + eqCursorPos(bl.find(), Pos(0, 4)); + cm.replaceRange("", Pos(0, 4), Pos(0, 5)); + cm.replaceRange("", Pos(0, 2), Pos(0, 4)); + cm.replaceRange("", Pos(0, 1), Pos(0, 2)); + // Verify that deleting next to bookmarks doesn't kill them + eqCursorPos(br.find(), Pos(0, 1)); + eqCursorPos(bl.find(), Pos(0, 1)); +}, {value: "abcdef"}); + +testCM("bookmarkCursor", function(cm) { + var pos01 = cm.cursorCoords(Pos(0, 1)), pos11 = cm.cursorCoords(Pos(1, 1)), + pos20 = cm.cursorCoords(Pos(2, 0)), pos30 = cm.cursorCoords(Pos(3, 0)), + pos41 = cm.cursorCoords(Pos(4, 1)); + cm.setBookmark(Pos(0, 1), {widget: document.createTextNode("←"), insertLeft: true}); + cm.setBookmark(Pos(2, 0), {widget: document.createTextNode("←"), insertLeft: true}); + cm.setBookmark(Pos(1, 1), {widget: document.createTextNode("→")}); + cm.setBookmark(Pos(3, 0), {widget: document.createTextNode("→")}); + var new01 = cm.cursorCoords(Pos(0, 1)), new11 = cm.cursorCoords(Pos(1, 1)), + new20 = cm.cursorCoords(Pos(2, 0)), new30 = cm.cursorCoords(Pos(3, 0)); + near(new01.left, pos01.left, 1); + near(new01.top, pos01.top, 1); + is(new11.left > pos11.left, "at right, middle of line"); + near(new11.top == pos11.top, 1); + near(new20.left, pos20.left, 1); + near(new20.top, pos20.top, 1); + is(new30.left > pos30.left, "at right, empty line"); + near(new30.top, pos30, 1); + cm.setBookmark(Pos(4, 0), {widget: document.createTextNode("→")}); + is(cm.cursorCoords(Pos(4, 1)).left > pos41.left, "single-char bug"); +}, {value: "foo\nbar\n\n\nx\ny"}); + +testCM("multiBookmarkCursor", function(cm) { + if (phantom) return; + var ms = [], m; + function add(insertLeft) { + for (var i = 0; i < 3; ++i) { + var node = document.createElement("span"); + node.innerHTML = "X"; + ms.push(cm.setBookmark(Pos(0, 1), {widget: node, insertLeft: insertLeft})); + } + } + var base1 = cm.cursorCoords(Pos(0, 1)).left, base4 = cm.cursorCoords(Pos(0, 4)).left; + add(true); + near(base1, cm.cursorCoords(Pos(0, 1)).left, 1); + while (m = ms.pop()) m.clear(); + add(false); + near(base4, cm.cursorCoords(Pos(0, 1)).left, 1); +}, {value: "abcdefg"}); + +testCM("getAllMarks", function(cm) { + addDoc(cm, 10, 10); + var m1 = cm.setBookmark(Pos(0, 2)); + var m2 = cm.markText(Pos(0, 2), Pos(3, 2)); + var m3 = cm.markText(Pos(1, 2), Pos(1, 8)); + var m4 = cm.markText(Pos(8, 0), Pos(9, 0)); + eq(cm.getAllMarks().length, 4); + m1.clear(); + m3.clear(); + eq(cm.getAllMarks().length, 2); +}); + +testCM("setValueClears", function(cm) { + cm.addLineClass(0, "wrap", "foo"); + var mark = cm.markText(Pos(0, 0), Pos(1, 1), {inclusiveLeft: true, inclusiveRight: true}); + cm.setValue("foo"); + is(!cm.lineInfo(0).wrapClass); + is(!mark.find()); +}, {value: "a\nb"}); + +testCM("bug577", function(cm) { + cm.setValue("a\nb"); + cm.clearHistory(); + cm.setValue("fooooo"); + cm.undo(); +}); + +testCM("scrollSnap", function(cm) { + cm.setSize(100, 100); + addDoc(cm, 200, 200); + cm.setCursor(Pos(100, 180)); + var info = cm.getScrollInfo(); + is(info.left > 0 && info.top > 0); + cm.setCursor(Pos(0, 0)); + info = cm.getScrollInfo(); + is(info.left == 0 && info.top == 0, "scrolled clean to top"); + cm.setCursor(Pos(100, 180)); + cm.setCursor(Pos(199, 0)); + info = cm.getScrollInfo(); + is(info.left == 0 && info.top + 2 > info.height - cm.getScrollerElement().clientHeight, "scrolled clean to bottom"); +}); + +testCM("scrollIntoView", function(cm) { + if (phantom) return; + function test(line, ch, msg) { + var pos = Pos(line, ch); + cm.scrollIntoView(pos); + var outer = cm.getWrapperElement().getBoundingClientRect(); + var box = cm.charCoords(pos, "window"); + is(box.left >= outer.left, msg + " (left)"); + is(box.right <= outer.right, msg + " (right)"); + is(box.top >= outer.top, msg + " (top)"); + is(box.bottom <= outer.bottom, msg + " (bottom)"); + } + addDoc(cm, 200, 200); + test(199, 199, "bottom right"); + test(0, 0, "top left"); + test(100, 100, "center"); + test(199, 0, "bottom left"); + test(0, 199, "top right"); + test(100, 100, "center again"); +}); + +testCM("scrollBackAndForth", function(cm) { + addDoc(cm, 1, 200); + cm.operation(function() { + cm.scrollIntoView(Pos(199, 0)); + cm.scrollIntoView(Pos(4, 0)); + }); + is(cm.getScrollInfo().top > 0); +}); + +testCM("selectAllNoScroll", function(cm) { + addDoc(cm, 1, 200); + cm.execCommand("selectAll"); + eq(cm.getScrollInfo().top, 0); + cm.setCursor(199); + cm.execCommand("selectAll"); + is(cm.getScrollInfo().top > 0); +}); + +testCM("selectionPos", function(cm) { + if (phantom || cm.getOption("inputStyle") != "textarea") return; + cm.setSize(100, 100); + addDoc(cm, 200, 100); + cm.setSelection(Pos(1, 100), Pos(98, 100)); + var lineWidth = cm.charCoords(Pos(0, 200), "local").left; + var lineHeight = (cm.charCoords(Pos(99)).top - cm.charCoords(Pos(0)).top) / 100; + cm.scrollTo(0, 0); + var selElt = byClassName(cm.getWrapperElement(), "CodeMirror-selected"); + var outer = cm.getWrapperElement().getBoundingClientRect(); + var sawMiddle, sawTop, sawBottom; + for (var i = 0, e = selElt.length; i < e; ++i) { + var box = selElt[i].getBoundingClientRect(); + var atLeft = box.left - outer.left < 30; + var width = box.right - box.left; + var atRight = box.right - outer.left > .8 * lineWidth; + if (atLeft && atRight) { + sawMiddle = true; + is(box.bottom - box.top > 90 * lineHeight, "middle high"); + is(width > .9 * lineWidth, "middle wide"); + } else { + is(width > .4 * lineWidth, "top/bot wide enough"); + is(width < .6 * lineWidth, "top/bot slim enough"); + if (atLeft) { + sawBottom = true; + is(box.top - outer.top > 96 * lineHeight, "bot below"); + } else if (atRight) { + sawTop = true; + is(box.top - outer.top < 2.1 * lineHeight, "top above"); + } + } + } + is(sawTop && sawBottom && sawMiddle, "all parts"); +}, null); + +testCM("restoreHistory", function(cm) { + cm.setValue("abc\ndef"); + cm.replaceRange("hello", Pos(1, 0), Pos(1)); + cm.replaceRange("goop", Pos(0, 0), Pos(0)); + cm.undo(); + var storedVal = cm.getValue(), storedHist = cm.getHistory(); + if (window.JSON) storedHist = JSON.parse(JSON.stringify(storedHist)); + eq(storedVal, "abc\nhello"); + cm.setValue(""); + cm.clearHistory(); + eq(cm.historySize().undo, 0); + cm.setValue(storedVal); + cm.setHistory(storedHist); + cm.redo(); + eq(cm.getValue(), "goop\nhello"); + cm.undo(); cm.undo(); + eq(cm.getValue(), "abc\ndef"); +}); + +testCM("doubleScrollbar", function(cm) { + var dummy = document.body.appendChild(document.createElement("p")); + dummy.style.cssText = "height: 50px; overflow: scroll; width: 50px"; + var scrollbarWidth = dummy.offsetWidth + 1 - dummy.clientWidth; + document.body.removeChild(dummy); + if (scrollbarWidth < 2) return; + cm.setSize(null, 100); + addDoc(cm, 1, 300); + var wrap = cm.getWrapperElement(); + is(wrap.offsetWidth - byClassName(wrap, "CodeMirror-lines")[0].offsetWidth <= scrollbarWidth * 1.5); +}); + +testCM("weirdLinebreaks", function(cm) { + cm.setValue("foo\nbar\rbaz\r\nquux\n\rplop"); + is(cm.getValue(), "foo\nbar\nbaz\nquux\n\nplop"); + is(cm.lineCount(), 6); + cm.setValue("\n\n"); + is(cm.lineCount(), 3); +}); + +testCM("setSize", function(cm) { + cm.setSize(100, 100); + var wrap = cm.getWrapperElement(); + is(wrap.offsetWidth, 100); + is(wrap.offsetHeight, 100); + cm.setSize("100%", "3em"); + is(wrap.style.width, "100%"); + is(wrap.style.height, "3em"); + cm.setSize(null, 40); + is(wrap.style.width, "100%"); + is(wrap.style.height, "40px"); +}); + +function foldLines(cm, start, end, autoClear) { + return cm.markText(Pos(start, 0), Pos(end - 1), { + inclusiveLeft: true, + inclusiveRight: true, + collapsed: true, + clearOnEnter: autoClear + }); +} + +testCM("collapsedLines", function(cm) { + addDoc(cm, 4, 10); + var range = foldLines(cm, 4, 5), cleared = 0; + CodeMirror.on(range, "clear", function() {cleared++;}); + cm.setCursor(Pos(3, 0)); + CodeMirror.commands.goLineDown(cm); + eqCharPos(cm.getCursor(), Pos(5, 0)); + cm.replaceRange("abcdefg", Pos(3, 0), Pos(3)); + cm.setCursor(Pos(3, 6)); + CodeMirror.commands.goLineDown(cm); + eqCharPos(cm.getCursor(), Pos(5, 4)); + cm.replaceRange("ab", Pos(3, 0), Pos(3)); + cm.setCursor(Pos(3, 2)); + CodeMirror.commands.goLineDown(cm); + eqCharPos(cm.getCursor(), Pos(5, 2)); + cm.operation(function() {range.clear(); range.clear();}); + eq(cleared, 1); +}); + +testCM("collapsedRangeCoordsChar", function(cm) { + var pos_1_3 = cm.charCoords(Pos(1, 3)); + pos_1_3.left += 2; pos_1_3.top += 2; + var opts = {collapsed: true, inclusiveLeft: true, inclusiveRight: true}; + var m1 = cm.markText(Pos(0, 0), Pos(2, 0), opts); + eqCharPos(cm.coordsChar(pos_1_3), Pos(3, 3)); + m1.clear(); + var m1 = cm.markText(Pos(0, 0), Pos(1, 1), {collapsed: true, inclusiveLeft: true}); + var m2 = cm.markText(Pos(1, 1), Pos(2, 0), {collapsed: true, inclusiveRight: true}); + eqCharPos(cm.coordsChar(pos_1_3), Pos(3, 3)); + m1.clear(); m2.clear(); + var m1 = cm.markText(Pos(0, 0), Pos(1, 6), opts); + eqCharPos(cm.coordsChar(pos_1_3), Pos(3, 3)); +}, {value: "123456\nabcdef\nghijkl\nmnopqr\n"}); + +testCM("collapsedRangeBetweenLinesSelected", function(cm) { + if (cm.getOption("inputStyle") != "textarea") return; + var widget = document.createElement("span"); + widget.textContent = "\u2194"; + cm.markText(Pos(0, 3), Pos(1, 0), {replacedWith: widget}); + cm.setSelection(Pos(0, 3), Pos(1, 0)); + var selElts = byClassName(cm.getWrapperElement(), "CodeMirror-selected"); + for (var i = 0, w = 0; i < selElts.length; i++) + w += selElts[i].offsetWidth; + is(w > 0); +}, {value: "one\ntwo"}); + +testCM("randomCollapsedRanges", function(cm) { + addDoc(cm, 20, 500); + cm.operation(function() { + for (var i = 0; i < 200; i++) { + var start = Pos(Math.floor(Math.random() * 500), Math.floor(Math.random() * 20)); + if (i % 4) + try { cm.markText(start, Pos(start.line + 2, 1), {collapsed: true}); } + catch(e) { if (!/overlapping/.test(String(e))) throw e; } + else + cm.markText(start, Pos(start.line, start.ch + 4), {"className": "foo"}); + } + }); +}); + +testCM("hiddenLinesAutoUnfold", function(cm) { + var range = foldLines(cm, 1, 3, true), cleared = 0; + CodeMirror.on(range, "clear", function() {cleared++;}); + cm.setCursor(Pos(3, 0)); + eq(cleared, 0); + cm.execCommand("goCharLeft"); + eq(cleared, 1); + range = foldLines(cm, 1, 3, true); + CodeMirror.on(range, "clear", function() {cleared++;}); + eqCursorPos(cm.getCursor(), Pos(3, 0)); + cm.setCursor(Pos(0, 3)); + cm.execCommand("goCharRight"); + eq(cleared, 2); +}, {value: "abc\ndef\nghi\njkl"}); + +testCM("hiddenLinesSelectAll", function(cm) { // Issue #484 + addDoc(cm, 4, 20); + foldLines(cm, 0, 10); + foldLines(cm, 11, 20); + CodeMirror.commands.selectAll(cm); + eqCursorPos(cm.getCursor(true), Pos(10, 0)); + eqCursorPos(cm.getCursor(false), Pos(10, 4)); +}); + + +testCM("everythingFolded", function(cm) { + addDoc(cm, 2, 2); + function enterPress() { + cm.triggerOnKeyDown({type: "keydown", keyCode: 13, preventDefault: function(){}, stopPropagation: function(){}}); + } + var fold = foldLines(cm, 0, 2); + enterPress(); + eq(cm.getValue(), "xx\nxx"); + fold.clear(); + fold = foldLines(cm, 0, 2, true); + eq(fold.find(), null); + enterPress(); + eq(cm.getValue(), "\nxx\nxx"); +}); + +testCM("structuredFold", function(cm) { + if (phantom) return; + addDoc(cm, 4, 8); + var range = cm.markText(Pos(1, 2), Pos(6, 2), { + replacedWith: document.createTextNode("Q") + }); + cm.setCursor(0, 3); + CodeMirror.commands.goLineDown(cm); + eqCharPos(cm.getCursor(), Pos(6, 2)); + CodeMirror.commands.goCharLeft(cm); + eqCharPos(cm.getCursor(), Pos(1, 2)); + CodeMirror.commands.delCharAfter(cm); + eq(cm.getValue(), "xxxx\nxxxx\nxxxx"); + addDoc(cm, 4, 8); + range = cm.markText(Pos(1, 2), Pos(6, 2), { + replacedWith: document.createTextNode("M"), + clearOnEnter: true + }); + var cleared = 0; + CodeMirror.on(range, "clear", function(){++cleared;}); + cm.setCursor(0, 3); + CodeMirror.commands.goLineDown(cm); + eqCharPos(cm.getCursor(), Pos(6, 2)); + CodeMirror.commands.goCharLeft(cm); + eqCharPos(cm.getCursor(), Pos(6, 1)); + eq(cleared, 1); + range.clear(); + eq(cleared, 1); + range = cm.markText(Pos(1, 2), Pos(6, 2), { + replacedWith: document.createTextNode("Q"), + clearOnEnter: true + }); + range.clear(); + cm.setCursor(1, 2); + CodeMirror.commands.goCharRight(cm); + eqCharPos(cm.getCursor(), Pos(1, 3)); + range = cm.markText(Pos(2, 0), Pos(4, 4), { + replacedWith: document.createTextNode("M") + }); + cm.setCursor(1, 0); + CodeMirror.commands.goLineDown(cm); + eqCharPos(cm.getCursor(), Pos(2, 0)); +}, null); + +testCM("nestedFold", function(cm) { + addDoc(cm, 10, 3); + function fold(ll, cl, lr, cr) { + return cm.markText(Pos(ll, cl), Pos(lr, cr), {collapsed: true}); + } + var inner1 = fold(0, 6, 1, 3), inner2 = fold(0, 2, 1, 8), outer = fold(0, 1, 2, 3), inner0 = fold(0, 5, 0, 6); + cm.setCursor(0, 1); + CodeMirror.commands.goCharRight(cm); + eqCursorPos(cm.getCursor(), Pos(2, 3)); + inner0.clear(); + CodeMirror.commands.goCharLeft(cm); + eqCursorPos(cm.getCursor(), Pos(0, 1)); + outer.clear(); + CodeMirror.commands.goCharRight(cm); + eqCursorPos(cm.getCursor(), Pos(0, 2, "before")); + CodeMirror.commands.goCharRight(cm); + eqCursorPos(cm.getCursor(), Pos(1, 8)); + inner2.clear(); + CodeMirror.commands.goCharLeft(cm); + eqCursorPos(cm.getCursor(), Pos(1, 7, "after")); + cm.setCursor(0, 5); + CodeMirror.commands.goCharRight(cm); + eqCursorPos(cm.getCursor(), Pos(0, 6, "before")); + CodeMirror.commands.goCharRight(cm); + eqCursorPos(cm.getCursor(), Pos(1, 3)); +}); + +testCM("badNestedFold", function(cm) { + addDoc(cm, 4, 4); + cm.markText(Pos(0, 2), Pos(3, 2), {collapsed: true}); + var caught; + try {cm.markText(Pos(0, 1), Pos(0, 3), {collapsed: true});} + catch(e) {caught = e;} + is(caught instanceof Error, "no error"); + is(/overlap/i.test(caught.message), "wrong error"); +}); + +testCM("nestedFoldOnSide", function(cm) { + var m1 = cm.markText(Pos(0, 1), Pos(2, 1), {collapsed: true, inclusiveRight: true}); + var m2 = cm.markText(Pos(0, 1), Pos(0, 2), {collapsed: true}); + cm.markText(Pos(0, 1), Pos(0, 2), {collapsed: true}).clear(); + try { cm.markText(Pos(0, 1), Pos(0, 2), {collapsed: true, inclusiveLeft: true}); } + catch(e) { var caught = e; } + is(caught && /overlap/i.test(caught.message)); + var m3 = cm.markText(Pos(2, 0), Pos(2, 1), {collapsed: true}); + var m4 = cm.markText(Pos(2, 0), Pos(2, 1), {collapse: true, inclusiveRight: true}); + m1.clear(); m4.clear(); + m1 = cm.markText(Pos(0, 1), Pos(2, 1), {collapsed: true}); + cm.markText(Pos(2, 0), Pos(2, 1), {collapsed: true}).clear(); + try { cm.markText(Pos(2, 0), Pos(2, 1), {collapsed: true, inclusiveRight: true}); } + catch(e) { var caught = e; } + is(caught && /overlap/i.test(caught.message)); +}, {value: "ab\ncd\ef"}); + +testCM("editInFold", function(cm) { + addDoc(cm, 4, 6); + var m = cm.markText(Pos(1, 2), Pos(3, 2), {collapsed: true}); + cm.replaceRange("", Pos(0, 0), Pos(1, 3)); + cm.replaceRange("", Pos(2, 1), Pos(3, 3)); + cm.replaceRange("a\nb\nc\nd", Pos(0, 1), Pos(1, 0)); + cm.cursorCoords(Pos(0, 0)); +}); + +testCM("wrappingInlineWidget", function(cm) { + cm.setSize("11em"); + var w = document.createElement("span"); + w.style.color = "red"; + w.innerHTML = "one two three four"; + cm.markText(Pos(0, 6), Pos(0, 9), {replacedWith: w}); + var cur0 = cm.cursorCoords(Pos(0, 0)), cur1 = cm.cursorCoords(Pos(0, 10)); + is(cur0.top < cur1.top); + is(cur0.bottom < cur1.bottom); + var curL = cm.cursorCoords(Pos(0, 6)), curR = cm.cursorCoords(Pos(0, 9)); + eq(curL.top, cur0.top); + eq(curL.bottom, cur0.bottom); + eq(curR.top, cur1.top); + eq(curR.bottom, cur1.bottom); + cm.replaceRange("", Pos(0, 9), Pos(0)); + curR = cm.cursorCoords(Pos(0, 9)); + if (phantom) return; + eq(curR.top, cur1.top); + eq(curR.bottom, cur1.bottom); +}, {value: "1 2 3 xxx 4", lineWrapping: true}); + +testCM("showEmptyWidgetSpan", function(cm) { + var marker = cm.markText(Pos(0, 2), Pos(0, 2), { + clearWhenEmpty: false, + replacedWith: document.createTextNode("X") + }); + var text = cm.display.view[0].text; + eq(text.textContent || text.innerText, "abXc"); +}, {value: "abc"}); + +testCM("changedInlineWidget", function(cm) { + cm.setSize("10em"); + var w = document.createElement("span"); + w.innerHTML = "x"; + var m = cm.markText(Pos(0, 4), Pos(0, 5), {replacedWith: w}); + w.innerHTML = "and now the widget is really really long all of a sudden and a scrollbar is needed"; + m.changed(); + var hScroll = byClassName(cm.getWrapperElement(), "CodeMirror-hscrollbar")[0]; + is(hScroll.scrollWidth > hScroll.clientWidth); +}, {value: "hello there"}); + +testCM("changedBookmark", function(cm) { + cm.setSize("10em"); + var w = document.createElement("span"); + w.innerHTML = "x"; + var m = cm.setBookmark(Pos(0, 4), {widget: w}); + w.innerHTML = "and now the widget is really really long all of a sudden and a scrollbar is needed"; + m.changed(); + var hScroll = byClassName(cm.getWrapperElement(), "CodeMirror-hscrollbar")[0]; + is(hScroll.scrollWidth > hScroll.clientWidth); +}, {value: "abcdefg"}); + +testCM("inlineWidget", function(cm) { + var w = cm.setBookmark(Pos(0, 2), {widget: document.createTextNode("uu")}); + cm.setCursor(0, 2); + CodeMirror.commands.goLineDown(cm); + eqCharPos(cm.getCursor(), Pos(1, 4)); + cm.setCursor(0, 2); + cm.replaceSelection("hi"); + eqCharPos(w.find(), Pos(0, 2)); + cm.setCursor(0, 1); + cm.replaceSelection("ay"); + eqCharPos(w.find(), Pos(0, 4)); + eq(cm.getLine(0), "uayuhiuu"); +}, {value: "uuuu\nuuuuuu"}); + +testCM("wrappingAndResizing", function(cm) { + cm.setSize(null, "auto"); + cm.setOption("lineWrapping", true); + var wrap = cm.getWrapperElement(), h0 = wrap.offsetHeight; + var doc = "xxx xxx xxx xxx xxx"; + cm.setValue(doc); + for (var step = 10, w = cm.charCoords(Pos(0, 18), "div").right;; w += step) { + cm.setSize(w); + if (wrap.offsetHeight <= h0 * (opera_lt10 ? 1.2 : 1.5)) { + if (step == 10) { w -= 10; step = 1; } + else break; + } + } + // Ensure that putting the cursor at the end of the maximally long + // line doesn't cause wrapping to happen. + cm.setCursor(Pos(0, doc.length)); + eq(wrap.offsetHeight, h0); + cm.replaceSelection("x"); + is(wrap.offsetHeight > h0, "wrapping happens"); + // Now add a max-height and, in a document consisting of + // almost-wrapped lines, go over it so that a scrollbar appears. + cm.setValue(doc + "\n" + doc + "\n"); + cm.getScrollerElement().style.maxHeight = "100px"; + cm.replaceRange("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n!\n", Pos(2, 0)); + forEach([Pos(0, doc.length), Pos(0, doc.length - 1), + Pos(0, 0), Pos(1, doc.length), Pos(1, doc.length - 1)], + function(pos) { + var coords = cm.charCoords(pos); + eqCharPos(pos, cm.coordsChar({left: coords.left + 2, top: coords.top + 5})); + }); +}, null, ie_lt8); + +testCM("measureEndOfLine", function(cm) { + if (phantom) return; + cm.setSize(null, "auto"); + var inner = byClassName(cm.getWrapperElement(), "CodeMirror-lines")[0].firstChild; + var lh = inner.offsetHeight; + for (var step = 10, w = cm.charCoords(Pos(0, 7), "div").right;; w += step) { + cm.setSize(w); + if (inner.offsetHeight < 2.5 * lh) { + if (step == 10) { w -= 10; step = 1; } + else break; + } + } + cm.setValue(cm.getValue() + "\n\n"); + var endPos = cm.charCoords(Pos(0, 18), "local"); + is(endPos.top > lh * .8, "not at top"); + is(endPos.left > w - 20, "at right"); + endPos = cm.charCoords(Pos(0, 18)); + eqCursorPos(cm.coordsChar({left: endPos.left, top: endPos.top + 5}), Pos(0, 18, "before")); + + var wrapPos = cm.cursorCoords(Pos(0, 9, "before")); + is(wrapPos.top < endPos.top, "wrapPos is actually in first line"); + eqCursorPos(cm.coordsChar({left: wrapPos.left + 10, top: wrapPos.top}), Pos(0, 9, "before")); +}, {mode: "text/html", value: "", lineWrapping: true}, ie_lt8 || opera_lt10); + +testCM("measureWrappedEndOfLine", function(cm) { + if (phantom) return; + cm.setSize(null, "auto"); + var inner = byClassName(cm.getWrapperElement(), "CodeMirror-lines")[0].firstChild; + var lh = inner.offsetHeight; + for (var step = 10, w = cm.charCoords(Pos(0, 7), "div").right;; w += step) { + cm.setSize(w); + if (inner.offsetHeight < 2.5 * lh) { + if (step == 10) { w -= 10; step = 1; } + else break; + } + } + for (var i = 0; i < 3; ++i) { + var endPos = cm.charCoords(Pos(0, 12)); // Next-to-last since last would wrap (#1862) + endPos.left += w; // Add width of editor just to be sure that we are behind last character + eqCursorPos(cm.coordsChar(endPos), Pos(0, 13, "before")); + endPos.left += w * 100; + eqCursorPos(cm.coordsChar(endPos), Pos(0, 13, "before")); + cm.setValue("0123456789abcابجابجابجابج"); + if (i == 1) { + var node = document.createElement("div"); + node.innerHTML = "hi"; node.style.height = "30px"; + cm.addLineWidget(0, node, {above: true}); + } + } +}, {mode: "text/html", value: "0123456789abcde0123456789", lineWrapping: true}, ie_lt8 || opera_lt10); + +testCM("measureEndOfLineBidi", function(cm) { + eqCursorPos(cm.coordsChar({left: 5000, top: cm.charCoords(Pos(0, 0)).top}), Pos(0, 8, "after")) +}, {value: "إإإإuuuuإإإإ"}) + +testCM("measureWrappedBidiLevel2", function(cm) { + cm.setSize(cm.charCoords(Pos(0, 6), "editor").right + 60) + var c9 = cm.charCoords(Pos(0, 9)) + eqCharPos(cm.coordsChar({left: c9.right - 1, top: c9.top + 1}), Pos(0, 9)) +}, {value: "foobar إإ إإ إإ إإ 555 بببببب", lineWrapping: true}) + +testCM("measureWrappedBeginOfLine", function(cm) { + if (phantom) return; + cm.setSize(null, "auto"); + var inner = byClassName(cm.getWrapperElement(), "CodeMirror-lines")[0].firstChild; + var lh = inner.offsetHeight; + for (var step = 10, w = cm.charCoords(Pos(0, 7), "div").right;; w += step) { + cm.setSize(w); + if (inner.offsetHeight < 2.5 * lh) { + if (step == 10) { w -= 10; step = 1; } + else break; + } + } + var beginOfSecondLine = Pos(0, 13, "after"); + for (var i = 0; i < 2; ++i) { + var beginPos = cm.charCoords(Pos(0, 0)); + beginPos.left -= w; + eqCursorPos(cm.coordsChar(beginPos), Pos(0, 0, "after")); + beginPos = cm.cursorCoords(beginOfSecondLine); + beginPos.left = 0; + eqCursorPos(cm.coordsChar(beginPos), beginOfSecondLine); + cm.setValue("0123456789abcابجابجابجابج"); + beginOfSecondLine = Pos(0, 25, "before"); + } +}, {mode: "text/html", value: "0123456789abcde0123456789", lineWrapping: true}); + +testCM("scrollVerticallyAndHorizontally", function(cm) { + if (cm.getOption("inputStyle") != "textarea") return; + cm.setSize(100, 100); + addDoc(cm, 40, 40); + cm.setCursor(39); + var wrap = cm.getWrapperElement(), bar = byClassName(wrap, "CodeMirror-vscrollbar")[0]; + is(bar.offsetHeight < wrap.offsetHeight, "vertical scrollbar limited by horizontal one"); + var cursorBox = byClassName(wrap, "CodeMirror-cursor")[0].getBoundingClientRect(); + var editorBox = wrap.getBoundingClientRect(); + is(cursorBox.bottom < editorBox.top + cm.getScrollerElement().clientHeight, + "bottom line visible"); +}, {lineNumbers: true}); + +testCM("moveVstuck", function(cm) { + var lines = byClassName(cm.getWrapperElement(), "CodeMirror-lines")[0].firstChild, h0 = lines.offsetHeight; + var val = "fooooooooooooooooooooooooo baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar\n"; + cm.setValue(val); + for (var w = cm.charCoords(Pos(0, 26), "div").right * 2.8;; w += 5) { + cm.setSize(w); + if (lines.offsetHeight <= 3.5 * h0) break; + } + cm.setCursor(Pos(0, val.length - 1)); + cm.moveV(-1, "line"); + eqCursorPos(cm.getCursor(), Pos(0, 27, "before")); + is(cm.cursorCoords(null, "local").top < h0, "cursor is in first visual line"); +}, {lineWrapping: true}, ie_lt8 || opera_lt10); + +testCM("collapseOnMove", function(cm) { + cm.setSelection(Pos(0, 1), Pos(2, 4)); + cm.execCommand("goLineUp"); + is(!cm.somethingSelected()); + eqCharPos(cm.getCursor(), Pos(0, 1)); + cm.setSelection(Pos(0, 1), Pos(2, 4)); + cm.execCommand("goPageDown"); + is(!cm.somethingSelected()); + eqCharPos(cm.getCursor(), Pos(2, 4)); + cm.execCommand("goLineUp"); + cm.execCommand("goLineUp"); + eqCharPos(cm.getCursor(), Pos(0, 4)); + cm.setSelection(Pos(0, 1), Pos(2, 4)); + cm.execCommand("goCharLeft"); + is(!cm.somethingSelected()); + eqCharPos(cm.getCursor(), Pos(0, 1)); +}, {value: "aaaaa\nb\nccccc"}); + +testCM("clickTab", function(cm) { + var p0 = cm.charCoords(Pos(0, 0)); + eqCharPos(cm.coordsChar({left: p0.left + 5, top: p0.top + 5}), Pos(0, 0)); + eqCharPos(cm.coordsChar({left: p0.right - 5, top: p0.top + 5}), Pos(0, 1)); +}, {value: "\t\n\n", lineWrapping: true, tabSize: 8}); + +testCM("verticalScroll", function(cm) { + cm.setSize(100, 200); + cm.setValue("foo\nbar\nbaz\n"); + var sc = cm.getScrollerElement(), baseWidth = sc.scrollWidth; + cm.replaceRange("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah", Pos(0, 0), Pos(0)); + is(sc.scrollWidth > baseWidth, "scrollbar present"); + cm.replaceRange("foo", Pos(0, 0), Pos(0)); + if (!phantom) eq(sc.scrollWidth, baseWidth, "scrollbar gone"); + cm.replaceRange("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaah", Pos(0, 0), Pos(0)); + cm.replaceRange("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbh", Pos(1, 0), Pos(1)); + is(sc.scrollWidth > baseWidth, "present again"); + var curWidth = sc.scrollWidth; + cm.replaceRange("foo", Pos(0, 0), Pos(0)); + is(sc.scrollWidth < curWidth, "scrollbar smaller"); + is(sc.scrollWidth > baseWidth, "but still present"); +}); + +testCM("extraKeys", function(cm) { + var outcome; + function fakeKey(expected, code, props) { + if (typeof code == "string") code = code.charCodeAt(0); + var e = {type: "keydown", keyCode: code, preventDefault: function(){}, stopPropagation: function(){}}; + if (props) for (var n in props) e[n] = props[n]; + outcome = null; + cm.triggerOnKeyDown(e); + eq(outcome, expected); + } + CodeMirror.commands.testCommand = function() {outcome = "tc";}; + CodeMirror.commands.goTestCommand = function() {outcome = "gtc";}; + cm.setOption("extraKeys", {"Shift-X": function() {outcome = "sx";}, + "X": function() {outcome = "x";}, + "Ctrl-Alt-U": function() {outcome = "cau";}, + "End": "testCommand", + "Home": "goTestCommand", + "Tab": false}); + fakeKey(null, "U"); + fakeKey("cau", "U", {ctrlKey: true, altKey: true}); + fakeKey(null, "U", {shiftKey: true, ctrlKey: true, altKey: true}); + fakeKey("x", "X"); + fakeKey("sx", "X", {shiftKey: true}); + fakeKey("tc", 35); + fakeKey(null, 35, {shiftKey: true}); + fakeKey("gtc", 36); + fakeKey("gtc", 36, {shiftKey: true}); + fakeKey(null, 9); +}, null, window.opera && mac); + +testCM("wordMovementCommands", function(cm) { + cm.execCommand("goWordLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 0)); + cm.execCommand("goWordRight"); cm.execCommand("goWordRight"); + eqCursorPos(cm.getCursor(), Pos(0, 7, "before")); + cm.execCommand("goWordLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 5, "after")); + cm.execCommand("goWordRight"); cm.execCommand("goWordRight"); + eqCursorPos(cm.getCursor(), Pos(0, 12, "before")); + cm.execCommand("goWordLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 9, "after")); + cm.execCommand("goWordRight"); cm.execCommand("goWordRight"); cm.execCommand("goWordRight"); + eqCursorPos(cm.getCursor(), Pos(0, 24, "before")); + cm.execCommand("goWordRight"); cm.execCommand("goWordRight"); + eqCursorPos(cm.getCursor(), Pos(1, 9, "before")); + cm.execCommand("goWordRight"); + eqCursorPos(cm.getCursor(), Pos(1, 13, "before")); + cm.execCommand("goWordRight"); cm.execCommand("goWordRight"); + eqCharPos(cm.getCursor(), Pos(2, 0)); +}, {value: "this is (the) firstline.\na foo12\u00e9\u00f8\u00d7bar\n"}); + +testCM("groupMovementCommands", function(cm) { + cm.execCommand("goGroupLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 0)); + cm.execCommand("goGroupRight"); + eqCursorPos(cm.getCursor(), Pos(0, 4, "before")); + cm.execCommand("goGroupRight"); + eqCursorPos(cm.getCursor(), Pos(0, 7, "before")); + cm.execCommand("goGroupRight"); + eqCursorPos(cm.getCursor(), Pos(0, 10, "before")); + cm.execCommand("goGroupLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 7, "after")); + cm.execCommand("goGroupRight"); cm.execCommand("goGroupRight"); cm.execCommand("goGroupRight"); + eqCursorPos(cm.getCursor(), Pos(0, 15, "before")); + cm.setCursor(Pos(0, 17)); + cm.execCommand("goGroupLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 16, "after")); + cm.execCommand("goGroupLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 14, "after")); + cm.execCommand("goGroupRight"); cm.execCommand("goGroupRight"); + eqCursorPos(cm.getCursor(), Pos(0, 20, "before")); + cm.execCommand("goGroupRight"); + eqCursorPos(cm.getCursor(), Pos(1, 0, "after")); + cm.execCommand("goGroupRight"); + eqCursorPos(cm.getCursor(), Pos(1, 2, "before")); + cm.execCommand("goGroupRight"); + eqCursorPos(cm.getCursor(), Pos(1, 5, "before")); + cm.execCommand("goGroupLeft"); cm.execCommand("goGroupLeft"); + eqCursorPos(cm.getCursor(), Pos(1, 0, "after")); + cm.execCommand("goGroupLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 20, "after")); + cm.execCommand("goGroupLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 16, "after")); +}, {value: "booo ba---quux. ffff\n abc d"}); + +testCM("groupsAndWhitespace", function(cm) { + var positions = [Pos(0, 0), Pos(0, 2), Pos(0, 5), Pos(0, 9), Pos(0, 11), + Pos(1, 0), Pos(1, 2), Pos(1, 5)]; + for (var i = 1; i < positions.length; i++) { + cm.execCommand("goGroupRight"); + eqCharPos(cm.getCursor(), positions[i]); + } + for (var i = positions.length - 2; i >= 0; i--) { + cm.execCommand("goGroupLeft"); + eqCharPos(cm.getCursor(), i == 2 ? Pos(0, 6, "before") : positions[i]); + } +}, {value: " foo +++ \n bar"}); + +testCM("charMovementCommands", function(cm) { + cm.execCommand("goCharLeft"); cm.execCommand("goColumnLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 0)); + cm.execCommand("goCharRight"); cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(0, 2, "before")); + cm.setCursor(Pos(1, 0)); + cm.execCommand("goColumnLeft"); + eqCursorPos(cm.getCursor(), Pos(1, 0)); + cm.execCommand("goCharLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 5, "before")); + cm.execCommand("goColumnRight"); + eqCursorPos(cm.getCursor(), Pos(0, 5, "before")); + cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(1, 0, "after")); + cm.execCommand("goLineEnd"); + eqCursorPos(cm.getCursor(), Pos(1, 5, "before")); + cm.execCommand("goLineStartSmart"); + eqCursorPos(cm.getCursor(), Pos(1, 1, "after")); + cm.execCommand("goLineStartSmart"); + eqCursorPos(cm.getCursor(), Pos(1, 0, "after")); + cm.setCursor(Pos(2, 0)); + cm.execCommand("goCharRight"); cm.execCommand("goColumnRight"); + eqCursorPos(cm.getCursor(), Pos(2, 0)); +}, {value: "line1\n ine2\n"}); + +testCM("verticalMovementCommands", function(cm) { + cm.execCommand("goLineUp"); + eqCharPos(cm.getCursor(), Pos(0, 0)); + cm.execCommand("goLineDown"); + if (!phantom) // This fails in PhantomJS, though not in a real Webkit + eqCharPos(cm.getCursor(), Pos(1, 0)); + cm.setCursor(Pos(1, 12)); + cm.execCommand("goLineDown"); + eqCharPos(cm.getCursor(), Pos(2, 5)); + cm.execCommand("goLineDown"); + eqCharPos(cm.getCursor(), Pos(3, 0)); + cm.execCommand("goLineUp"); + eqCharPos(cm.getCursor(), Pos(2, 5)); + cm.execCommand("goLineUp"); + eqCharPos(cm.getCursor(), Pos(1, 12)); + cm.execCommand("goPageDown"); + eqCharPos(cm.getCursor(), Pos(5, 0)); + cm.execCommand("goPageDown"); cm.execCommand("goLineDown"); + eqCharPos(cm.getCursor(), Pos(5, 0)); + cm.execCommand("goPageUp"); + eqCharPos(cm.getCursor(), Pos(0, 0)); +}, {value: "line1\nlong long line2\nline3\n\nline5\n"}); + +testCM("verticalMovementCommandsWrapping", function(cm) { + cm.setSize(120); + cm.setCursor(Pos(0, 5)); + cm.execCommand("goLineDown"); + eq(cm.getCursor().line, 0); + is(cm.getCursor().ch > 5, "moved beyond wrap"); + for (var i = 0; ; ++i) { + is(i < 20, "no endless loop"); + cm.execCommand("goLineDown"); + var cur = cm.getCursor(); + if (cur.line == 1) eq(cur.ch, 5); + if (cur.line == 2) { eq(cur.ch, 1); break; } + } +}, {value: "a very long line that wraps around somehow so that we can test cursor movement\nshortone\nk", + lineWrapping: true}); + +testCM("verticalMovementCommandsSingleLine", function(cm) { + cm.display.wrapper.style.height = "auto"; + cm.refresh(); + cm.execCommand("goLineUp"); + eqCursorPos(cm.getCursor(), Pos(0, 0)); + cm.execCommand("goLineDown"); + eqCursorPos(cm.getCursor(), Pos(0, 11)); + cm.setCursor(Pos(0, 5)); + cm.execCommand("goLineDown"); + eqCursorPos(cm.getCursor(), Pos(0, 11)); + cm.execCommand("goLineDown"); + eqCursorPos(cm.getCursor(), Pos(0, 11)); + cm.execCommand("goLineUp"); + eqCursorPos(cm.getCursor(), Pos(0, 0)); + cm.execCommand("goLineUp"); + eqCursorPos(cm.getCursor(), Pos(0, 0)); + cm.execCommand("goPageDown"); + eqCursorPos(cm.getCursor(), Pos(0, 11)); + cm.execCommand("goPageDown"); cm.execCommand("goLineDown"); + eqCursorPos(cm.getCursor(), Pos(0, 11)); + cm.execCommand("goPageUp"); + eqCursorPos(cm.getCursor(), Pos(0, 0)); + cm.setCursor(Pos(0, 5)); + cm.execCommand("goPageUp"); + eqCursorPos(cm.getCursor(), Pos(0, 0)); + cm.setCursor(Pos(0, 5)); + cm.execCommand("goPageDown"); + eqCursorPos(cm.getCursor(), Pos(0, 11)); +}, {value: "single line"}); + + +testCM("rtlMovement", function(cm) { + if (cm.getOption("inputStyle") != "textarea") return; + forEach(["خحج", "خحabcخحج", "abخحخحجcd", "abخde", "abخح2342خ1حج", "خ1ح2خح3حxج", + "خحcd", "1خحcd", "abcdeح1ج", "خمرحبها مها!", "foobarر", "خ ة ق", + "", "يتم السحب في 05 فبراير 2014"], function(line) { + cm.setValue(line + "\n"); cm.execCommand("goLineStart"); + var cursors = byClassName(cm.getWrapperElement(), "CodeMirror-cursors")[0]; + var cursor = cursors.firstChild; + var prevX = cursor.offsetLeft, prevY = cursor.offsetTop; + for (var i = 0; i <= line.length; ++i) { + cm.execCommand("goCharRight"); + cursor = cursors.firstChild; + if (i == line.length) is(cursor.offsetTop > prevY, "next line"); + else is(cursor.offsetLeft > prevX, "moved right"); + prevX = cursor.offsetLeft; prevY = cursor.offsetTop; + } + cm.setCursor(0, 0); cm.execCommand("goLineEnd"); + prevX = cursors.firstChild.offsetLeft; + for (var i = 0; i < line.length; ++i) { + cm.execCommand("goCharLeft"); + cursor = cursors.firstChild; + is(cursor.offsetLeft < prevX, "moved left"); + prevX = cursor.offsetLeft; + } + }); +}, null, ie_lt9); + +// Verify that updating a line clears its bidi ordering +testCM("bidiUpdate", function(cm) { + cm.setCursor(Pos(0, 2, "before")); + cm.replaceSelection("خحج", "start"); + cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(0, 6, "before")); +}, {value: "abcd\n"}); + +testCM("movebyTextUnit", function(cm) { + cm.setValue("בְּרֵאשִ\nééé́\n"); + cm.execCommand("goLineStart"); + for (var i = 0; i < 4; ++i) cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(0, 0, "after")); + cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(1, 0, "after")); + cm.execCommand("goCharRight"); + cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(1, 4, "before")); + cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(1, 7, "before")); +}); + +testCM("lineChangeEvents", function(cm) { + addDoc(cm, 3, 5); + var log = [], want = ["ch 0", "ch 1", "del 2", "ch 0", "ch 0", "del 1", "del 3", "del 4"]; + for (var i = 0; i < 5; ++i) { + CodeMirror.on(cm.getLineHandle(i), "delete", function(i) { + return function() {log.push("del " + i);}; + }(i)); + CodeMirror.on(cm.getLineHandle(i), "change", function(i) { + return function() {log.push("ch " + i);}; + }(i)); + } + cm.replaceRange("x", Pos(0, 1)); + cm.replaceRange("xy", Pos(1, 1), Pos(2)); + cm.replaceRange("foo\nbar", Pos(0, 1)); + cm.replaceRange("", Pos(0, 0), Pos(cm.lineCount())); + eq(log.length, want.length, "same length"); + for (var i = 0; i < log.length; ++i) + eq(log[i], want[i]); +}); + +testCM("scrollEntirelyToRight", function(cm) { + if (phantom || cm.getOption("inputStyle") != "textarea") return; + addDoc(cm, 500, 2); + cm.setCursor(Pos(0, 500)); + var wrap = cm.getWrapperElement(), cur = byClassName(wrap, "CodeMirror-cursor")[0]; + is(wrap.getBoundingClientRect().right > cur.getBoundingClientRect().left); +}); + +testCM("lineWidgets", function(cm) { + addDoc(cm, 500, 3); + var last = cm.charCoords(Pos(2, 0)); + var node = document.createElement("div"); + node.innerHTML = "hi"; + var widget = cm.addLineWidget(1, node); + is(last.top < cm.charCoords(Pos(2, 0)).top, "took up space"); + cm.setCursor(Pos(1, 1)); + cm.execCommand("goLineDown"); + eqCharPos(cm.getCursor(), Pos(2, 1)); + cm.execCommand("goLineUp"); + eqCharPos(cm.getCursor(), Pos(1, 1)); +}); + +testCM("lineWidgetFocus", function(cm) { + var place = document.getElementById("testground"); + place.className = "offscreen"; + try { + addDoc(cm, 500, 10); + var node = document.createElement("input"); + var widget = cm.addLineWidget(1, node); + node.focus(); + eq(document.activeElement, node); + cm.replaceRange("new stuff", Pos(1, 0)); + eq(document.activeElement, node); + } finally { + place.className = ""; + } +}); + +testCM("lineWidgetCautiousRedraw", function(cm) { + var node = document.createElement("div"); + node.innerHTML = "hahah"; + var w = cm.addLineWidget(0, node); + var redrawn = false; + w.on("redraw", function() { redrawn = true; }); + cm.replaceSelection("0"); + is(!redrawn); +}, {value: "123\n456"}); + + +var knownScrollbarWidth; +function scrollbarWidth(measure) { + if (knownScrollbarWidth != null) return knownScrollbarWidth; + var div = document.createElement('div'); + div.style.cssText = "width: 50px; height: 50px; overflow-x: scroll"; + document.body.appendChild(div); + knownScrollbarWidth = div.offsetHeight - div.clientHeight; + document.body.removeChild(div); + return knownScrollbarWidth || 0; +} + +testCM("lineWidgetChanged", function(cm) { + addDoc(cm, 2, 300); + var halfScrollbarWidth = scrollbarWidth(cm.display.measure)/2; + cm.setOption('lineNumbers', true); + cm.setSize(600, cm.defaultTextHeight() * 50); + cm.scrollTo(null, cm.heightAtLine(125, "local")); + + var expectedWidgetHeight = 60; + var expectedLinesInWidget = 3; + function w() { + var node = document.createElement("div"); + // we use these children with just under half width of the line to check measurements are made with correct width + // when placed in the measure div. + // If the widget is measured at a width much narrower than it is displayed at, the underHalf children will span two lines and break the test. + // If the widget is measured at a width much wider than it is displayed at, the overHalf children will combine and break the test. + // Note that this test only checks widgets where coverGutter is true, because these require extra styling to get the width right. + // It may also be worthwhile to check this for non-coverGutter widgets. + // Visually: + // Good: + // | ------------- display width ------------- | + // | ------- widget-width when measured ------ | + // | | -- under-half -- | | -- under-half -- | | + // | | --- over-half --- | | + // | | --- over-half --- | | + // Height: measured as 3 lines, same as it will be when actually displayed + + // Bad (too narrow): + // | ------------- display width ------------- | + // | ------ widget-width when measured ----- | < -- uh oh + // | | -- under-half -- | | + // | | -- under-half -- | | < -- when measured, shoved to next line + // | | --- over-half --- | | + // | | --- over-half --- | | + // Height: measured as 4 lines, more than expected . Will be displayed as 3 lines! + + // Bad (too wide): + // | ------------- display width ------------- | + // | -------- widget-width when measured ------- | < -- uh oh + // | | -- under-half -- | | -- under-half -- | | + // | | --- over-half --- | | --- over-half --- | | < -- when measured, combined on one line + // Height: measured as 2 lines, less than expected. Will be displayed as 3 lines! + + var barelyUnderHalfWidthHtml = '
    '; + var barelyOverHalfWidthHtml = '
    '; + node.innerHTML = new Array(3).join(barelyUnderHalfWidthHtml) + new Array(3).join(barelyOverHalfWidthHtml); + node.style.cssText = "background: yellow;font-size:0;line-height: " + (expectedWidgetHeight/expectedLinesInWidget) + "px;"; + return node; + } + var info0 = cm.getScrollInfo(); + var w0 = cm.addLineWidget(0, w(), { coverGutter: true }); + var w150 = cm.addLineWidget(150, w(), { coverGutter: true }); + var w300 = cm.addLineWidget(300, w(), { coverGutter: true }); + var info1 = cm.getScrollInfo(); + eq(info0.height + (3 * expectedWidgetHeight), info1.height); + eq(info0.top + expectedWidgetHeight, info1.top); + expectedWidgetHeight = 12; + w0.node.style.lineHeight = w150.node.style.lineHeight = w300.node.style.lineHeight = (expectedWidgetHeight/expectedLinesInWidget) + "px"; + w0.changed(); w150.changed(); w300.changed(); + var info2 = cm.getScrollInfo(); + eq(info0.height + (3 * expectedWidgetHeight), info2.height); + eq(info0.top + expectedWidgetHeight, info2.top); +}); + +testCM("getLineNumber", function(cm) { + addDoc(cm, 2, 20); + var h1 = cm.getLineHandle(1); + eq(cm.getLineNumber(h1), 1); + cm.replaceRange("hi\nbye\n", Pos(0, 0)); + eq(cm.getLineNumber(h1), 3); + cm.setValue(""); + eq(cm.getLineNumber(h1), null); +}); + +testCM("jumpTheGap", function(cm) { + if (phantom) return; + var longLine = "abcdef ghiklmnop qrstuvw xyz "; + longLine += longLine; longLine += longLine; longLine += longLine; + cm.replaceRange(longLine, Pos(2, 0), Pos(2)); + cm.setSize("200px", null); + cm.getWrapperElement().style.lineHeight = 2; + cm.refresh(); + cm.setCursor(Pos(0, 1)); + cm.execCommand("goLineDown"); + eqCharPos(cm.getCursor(), Pos(1, 1)); + cm.execCommand("goLineDown"); + eqCharPos(cm.getCursor(), Pos(2, 1)); + cm.execCommand("goLineDown"); + eq(cm.getCursor().line, 2); + is(cm.getCursor().ch > 1); + cm.execCommand("goLineUp"); + eqCharPos(cm.getCursor(), Pos(2, 1)); + cm.execCommand("goLineUp"); + eqCharPos(cm.getCursor(), Pos(1, 1)); + var node = document.createElement("div"); + node.innerHTML = "hi"; node.style.height = "30px"; + cm.addLineWidget(0, node); + cm.addLineWidget(1, node.cloneNode(true), {above: true}); + cm.setCursor(Pos(0, 2)); + cm.execCommand("goLineDown"); + eqCharPos(cm.getCursor(), Pos(1, 2)); + cm.execCommand("goLineUp"); + eqCharPos(cm.getCursor(), Pos(0, 2)); +}, {lineWrapping: true, value: "abc\ndef\nghi\njkl\n"}); + +testCM("addLineClass", function(cm) { + function cls(line, text, bg, wrap, gutter) { + var i = cm.lineInfo(line); + eq(i.textClass, text); + eq(i.bgClass, bg); + eq(i.wrapClass, wrap); + if (typeof i.handle.gutterClass !== 'undefined') { + eq(i.handle.gutterClass, gutter); + } + } + cm.addLineClass(0, "text", "foo"); + cm.addLineClass(0, "text", "bar"); + cm.addLineClass(1, "background", "baz"); + cm.addLineClass(1, "wrap", "foo"); + cm.addLineClass(1, "gutter", "gutter-class"); + cls(0, "foo bar", null, null, null); + cls(1, null, "baz", "foo", "gutter-class"); + var lines = cm.display.lineDiv; + eq(byClassName(lines, "foo").length, 2); + eq(byClassName(lines, "bar").length, 1); + eq(byClassName(lines, "baz").length, 1); + eq(byClassName(lines, "gutter-class").length, 2); // Gutter classes are reflected in 2 nodes + cm.removeLineClass(0, "text", "foo"); + cls(0, "bar", null, null, null); + cm.removeLineClass(0, "text", "foo"); + cls(0, "bar", null, null, null); + cm.removeLineClass(0, "text", "bar"); + cls(0, null, null, null); + + cm.addLineClass(1, "wrap", "quux"); + cls(1, null, "baz", "foo quux", "gutter-class"); + cm.removeLineClass(1, "wrap"); + cls(1, null, "baz", null, "gutter-class"); + cm.removeLineClass(1, "gutter", "gutter-class"); + eq(byClassName(lines, "gutter-class").length, 0); + cls(1, null, "baz", null, null); + + cm.addLineClass(1, "gutter", "gutter-class"); + cls(1, null, "baz", null, "gutter-class"); + cm.removeLineClass(1, "gutter", "gutter-class"); + cls(1, null, "baz", null, null); + +}, {value: "hohoho\n", lineNumbers: true}); + +testCM("atomicMarker", function(cm) { + addDoc(cm, 10, 10); + function atom(ll, cl, lr, cr, li, ri) { + return cm.markText(Pos(ll, cl), Pos(lr, cr), + {atomic: true, inclusiveLeft: li, inclusiveRight: ri}); + } + var m = atom(0, 1, 0, 5); + cm.setCursor(Pos(0, 1)); + cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(0, 5)); + cm.execCommand("goCharLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 1)); + m.clear(); + m = atom(0, 0, 0, 5, true); + eqCursorPos(cm.getCursor(), Pos(0, 5), "pushed out"); + cm.execCommand("goCharLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 5)); + m.clear(); + m = atom(8, 4, 9, 10, false, true); + cm.setCursor(Pos(9, 8)); + eqCursorPos(cm.getCursor(), Pos(8, 4), "set"); + cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(8, 4), "char right"); + cm.execCommand("goLineDown"); + eqCursorPos(cm.getCursor(), Pos(8, 4), "line down"); + cm.execCommand("goCharLeft"); + eqCursorPos(cm.getCursor(), Pos(8, 3, "after")); + m.clear(); + m = atom(1, 1, 3, 8); + cm.setCursor(Pos(0, 0)); + cm.setCursor(Pos(2, 0)); + eqCursorPos(cm.getCursor(), Pos(3, 8)); + cm.execCommand("goCharLeft"); + eqCursorPos(cm.getCursor(), Pos(1, 1)); + cm.execCommand("goCharRight"); + eqCursorPos(cm.getCursor(), Pos(3, 8)); + cm.execCommand("goLineUp"); + eqCursorPos(cm.getCursor(), Pos(1, 1)); + cm.execCommand("goLineDown"); + eqCursorPos(cm.getCursor(), Pos(3, 8)); + cm.execCommand("delCharBefore"); + eq(cm.getValue().length, 80, "del chunk"); + m = atom(3, 0, 5, 5); + cm.setCursor(Pos(3, 0)); + cm.execCommand("delWordAfter"); + eq(cm.getValue().length, 53, "del chunk"); +}); + +testCM("selectionBias", function(cm) { + cm.markText(Pos(0, 1), Pos(0, 3), {atomic: true}); + cm.setCursor(Pos(0, 2)); + eqCursorPos(cm.getCursor(), Pos(0, 1)); + cm.setCursor(Pos(0, 2)); + eqCursorPos(cm.getCursor(), Pos(0, 3)); + cm.setCursor(Pos(0, 2)); + eqCursorPos(cm.getCursor(), Pos(0, 1)); + cm.setCursor(Pos(0, 2), null, {bias: -1}); + eqCursorPos(cm.getCursor(), Pos(0, 1)); + cm.setCursor(Pos(0, 4)); + cm.setCursor(Pos(0, 2), null, {bias: 1}); + eqCursorPos(cm.getCursor(), Pos(0, 3)); +}, {value: "12345"}); + +testCM("selectionHomeEnd", function(cm) { + cm.markText(Pos(1, 0), Pos(1, 1), {atomic: true, inclusiveLeft: true}); + cm.markText(Pos(1, 3), Pos(1, 4), {atomic: true, inclusiveRight: true}); + cm.setCursor(Pos(1, 2)); + cm.execCommand("goLineStart"); + eqCursorPos(cm.getCursor(), Pos(1, 1)); + cm.execCommand("goLineEnd"); + eqCursorPos(cm.getCursor(), Pos(1, 3)); +}, {value: "ab\ncdef\ngh"}); + +testCM("readOnlyMarker", function(cm) { + function mark(ll, cl, lr, cr, at) { + return cm.markText(Pos(ll, cl), Pos(lr, cr), + {readOnly: true, atomic: at}); + } + var m = mark(0, 1, 0, 4); + cm.setCursor(Pos(0, 2)); + cm.replaceSelection("hi", "end"); + eqCursorPos(cm.getCursor(), Pos(0, 2)); + eq(cm.getLine(0), "abcde"); + cm.execCommand("selectAll"); + cm.replaceSelection("oops", "around"); + eq(cm.getValue(), "oopsbcd"); + cm.undo(); + eqCursorPos(m.find().from, Pos(0, 1)); + eqCursorPos(m.find().to, Pos(0, 4)); + m.clear(); + cm.setCursor(Pos(0, 2)); + cm.replaceSelection("hi", "around"); + eq(cm.getLine(0), "abhicde"); + eqCursorPos(cm.getCursor(), Pos(0, 4)); + m = mark(0, 2, 2, 2, true); + cm.setSelection(Pos(1, 1), Pos(2, 4)); + cm.replaceSelection("t", "end"); + eqCursorPos(cm.getCursor(), Pos(2, 3)); + eq(cm.getLine(2), "klto"); + cm.execCommand("goCharLeft"); + cm.execCommand("goCharLeft"); + eqCursorPos(cm.getCursor(), Pos(0, 2)); + cm.setSelection(Pos(0, 1), Pos(0, 3)); + cm.replaceSelection("xx", "around"); + eqCursorPos(cm.getCursor(), Pos(0, 3)); + eq(cm.getLine(0), "axxhicde"); +}, {value: "abcde\nfghij\nklmno\n"}); + +testCM("dirtyBit", function(cm) { + eq(cm.isClean(), true); + cm.replaceSelection("boo", null, "test"); + eq(cm.isClean(), false); + cm.undo(); + eq(cm.isClean(), true); + cm.replaceSelection("boo", null, "test"); + cm.replaceSelection("baz", null, "test"); + cm.undo(); + eq(cm.isClean(), false); + cm.markClean(); + eq(cm.isClean(), true); + cm.undo(); + eq(cm.isClean(), false); + cm.redo(); + eq(cm.isClean(), true); +}); + +testCM("changeGeneration", function(cm) { + cm.replaceSelection("x"); + var softGen = cm.changeGeneration(); + cm.replaceSelection("x"); + cm.undo(); + eq(cm.getValue(), ""); + is(!cm.isClean(softGen)); + cm.replaceSelection("x"); + var hardGen = cm.changeGeneration(true); + cm.replaceSelection("x"); + cm.undo(); + eq(cm.getValue(), "x"); + is(cm.isClean(hardGen)); +}); + +testCM("addKeyMap", function(cm) { + function sendKey(code) { + cm.triggerOnKeyDown({type: "keydown", keyCode: code, + preventDefault: function(){}, stopPropagation: function(){}}); + } + + sendKey(39); + eqCursorPos(cm.getCursor(), Pos(0, 1, "before")); + var test = 0; + var map1 = {Right: function() { ++test; }}, map2 = {Right: function() { test += 10; }} + cm.addKeyMap(map1); + sendKey(39); + eqCursorPos(cm.getCursor(), Pos(0, 1, "before")); + eq(test, 1); + cm.addKeyMap(map2, true); + sendKey(39); + eq(test, 2); + cm.removeKeyMap(map1); + sendKey(39); + eq(test, 12); + cm.removeKeyMap(map2); + sendKey(39); + eq(test, 12); + eqCursorPos(cm.getCursor(), Pos(0, 2, "before")); + cm.addKeyMap({Right: function() { test = 55; }, name: "mymap"}); + sendKey(39); + eq(test, 55); + cm.removeKeyMap("mymap"); + sendKey(39); + eqCursorPos(cm.getCursor(), Pos(0, 3, "before")); +}, {value: "abc"}); + +function mouseDown(cm, button, pos, mods) { + var coords = cm.charCoords(pos, "window") + var event = {type: "mousedown", + preventDefault: Math.min, + which: button, + target: cm.display.lineDiv, + clientX: coords.left, clientY: coords.top} + if (mods) for (var prop in mods) event[prop] = mods[prop] + cm.triggerOnMouseDown(event) +} + +testCM("mouseBinding", function(cm) { + var fired = [] + cm.addKeyMap({ + "Shift-LeftClick": function(_cm, pos) { + eqCharPos(pos, Pos(1, 2)) + fired.push("a") + }, + "Shift-LeftDoubleClick": function() { fired.push("b") }, + "Shift-LeftTripleClick": function() { fired.push("c") } + }) + + function send(button, mods) { mouseDown(cm, button, Pos(1, 2), mods) } + send(1, {shiftKey: true}) + send(1, {shiftKey: true}) + send(1, {shiftKey: true}) + send(1, {}) + send(2, {ctrlKey: true}) + send(2, {ctrlKey: true}) + eq(fired.join(" "), "a b c") +}, {value: "foo\nbar\nbaz"}) + +testCM("configureMouse", function(cm) { + cm.setOption("configureMouse", function() { return {unit: "word"} }) + mouseDown(cm, 1, Pos(0, 5)) + eqCharPos(cm.getCursor("from"), Pos(0, 4)) + eqCharPos(cm.getCursor("to"), Pos(0, 7)) + cm.setOption("configureMouse", function() { return {extend: true} }) + mouseDown(cm, 1, Pos(0, 0)) + eqCharPos(cm.getCursor("from"), Pos(0, 0)) + eqCharPos(cm.getCursor("to"), Pos(0, 4)) +}, {value: "foo bar baz"}) + +testCM("findPosH", function(cm) { + forEach([{from: Pos(0, 0), to: Pos(0, 1, "before"), by: 1}, + {from: Pos(0, 0), to: Pos(0, 0), by: -1, hitSide: true}, + {from: Pos(0, 0), to: Pos(0, 4, "before"), by: 1, unit: "word"}, + {from: Pos(0, 0), to: Pos(0, 8, "before"), by: 2, unit: "word"}, + {from: Pos(0, 0), to: Pos(2, 0, "after"), by: 20, unit: "word", hitSide: true}, + {from: Pos(0, 7), to: Pos(0, 5, "after"), by: -1, unit: "word"}, + {from: Pos(0, 4), to: Pos(0, 8, "before"), by: 1, unit: "word"}, + {from: Pos(1, 0), to: Pos(1, 18, "before"), by: 3, unit: "word"}, + {from: Pos(1, 22), to: Pos(1, 5, "after"), by: -3, unit: "word"}, + {from: Pos(1, 15), to: Pos(1, 10, "after"), by: -5}, + {from: Pos(1, 15), to: Pos(1, 10, "after"), by: -5, unit: "column"}, + {from: Pos(1, 15), to: Pos(1, 0, "after"), by: -50, unit: "column", hitSide: true}, + {from: Pos(1, 15), to: Pos(1, 24, "before"), by: 50, unit: "column", hitSide: true}, + {from: Pos(1, 15), to: Pos(2, 0, "after"), by: 50, hitSide: true}], function(t) { + var r = cm.findPosH(t.from, t.by, t.unit || "char"); + eqCursorPos(r, t.to); + eq(!!r.hitSide, !!t.hitSide); + }); +}, {value: "line one\nline two.something.other\n"}); + +testCM("beforeChange", function(cm) { + cm.on("beforeChange", function(cm, change) { + var text = []; + for (var i = 0; i < change.text.length; ++i) + text.push(change.text[i].replace(/\s/g, "_")); + change.update(null, null, text); + }); + cm.setValue("hello, i am a\nnew document\n"); + eq(cm.getValue(), "hello,_i_am_a\nnew_document\n"); + CodeMirror.on(cm.getDoc(), "beforeChange", function(doc, change) { + if (change.from.line == 0) change.cancel(); + }); + cm.setValue("oops"); // Canceled + eq(cm.getValue(), "hello,_i_am_a\nnew_document\n"); + cm.replaceRange("hey hey hey", Pos(1, 0), Pos(2, 0)); + eq(cm.getValue(), "hello,_i_am_a\nhey_hey_hey"); +}, {value: "abcdefghijk"}); + +testCM("beforeChangeUndo", function(cm) { + cm.replaceRange("hi", Pos(0, 0), Pos(0)); + cm.replaceRange("bye", Pos(0, 0), Pos(0)); + eq(cm.historySize().undo, 2); + cm.on("beforeChange", function(cm, change) { + is(!change.update); + change.cancel(); + }); + cm.undo(); + eq(cm.historySize().undo, 0); + eq(cm.getValue(), "bye\ntwo"); +}, {value: "one\ntwo"}); + +testCM("beforeSelectionChange", function(cm) { + function notAtEnd(cm, pos) { + var len = cm.getLine(pos.line).length; + if (!len || pos.ch == len) return Pos(pos.line, pos.ch - 1); + return pos; + } + cm.on("beforeSelectionChange", function(cm, obj) { + obj.update([{anchor: notAtEnd(cm, obj.ranges[0].anchor), + head: notAtEnd(cm, obj.ranges[0].head)}]); + }); + + addDoc(cm, 10, 10); + cm.execCommand("goLineEnd"); + eqCursorPos(cm.getCursor(), Pos(0, 9)); + cm.execCommand("selectAll"); + eqCursorPos(cm.getCursor("start"), Pos(0, 0)); + eqCursorPos(cm.getCursor("end"), Pos(9, 9)); +}); + +testCM("change_removedText", function(cm) { + cm.setValue("abc\ndef"); + + var removedText = []; + cm.on("change", function(cm, change) { + removedText.push(change.removed); + }); + + cm.operation(function() { + cm.replaceRange("xyz", Pos(0, 0), Pos(1,1)); + cm.replaceRange("123", Pos(0,0)); + }); + + eq(removedText.length, 2); + eq(removedText[0].join("\n"), "abc\nd"); + eq(removedText[1].join("\n"), ""); + + var removedText = []; + cm.undo(); + eq(removedText.length, 2); + eq(removedText[0].join("\n"), "123"); + eq(removedText[1].join("\n"), "xyz"); + + var removedText = []; + cm.redo(); + eq(removedText.length, 2); + eq(removedText[0].join("\n"), "abc\nd"); + eq(removedText[1].join("\n"), ""); +}); + +testCM("lineStyleFromMode", function(cm) { + CodeMirror.defineMode("test_mode", function() { + return {token: function(stream) { + if (stream.match(/^\[[^\]]*\]/)) return " line-brackets "; + if (stream.match(/^\([^\)]*\)/)) return " line-background-parens "; + if (stream.match(/^<[^>]*>/)) return " span line-line line-background-bg "; + stream.match(/^\s+|^\S+/); + }}; + }); + cm.setOption("mode", "test_mode"); + var bracketElts = byClassName(cm.getWrapperElement(), "brackets"); + eq(bracketElts.length, 1, "brackets count"); + eq(bracketElts[0].nodeName, "PRE"); + is(!/brackets.*brackets/.test(bracketElts[0].className)); + var parenElts = byClassName(cm.getWrapperElement(), "parens"); + eq(parenElts.length, 1, "parens count"); + eq(parenElts[0].nodeName, "DIV"); + is(!/parens.*parens/.test(parenElts[0].className)); + eq(parenElts[0].parentElement.nodeName, "DIV"); + + is(byClassName(cm.getWrapperElement(), "bg").length > 0); + is(byClassName(cm.getWrapperElement(), "line").length > 0); + var spanElts = byClassName(cm.getWrapperElement(), "cm-span"); + eq(spanElts.length, 2); + is(/^\s*cm-span\s*$/.test(spanElts[0].className)); +}, {value: "line1: [br] [br]\nline2: (par) (par)\nline3: "}); + +testCM("lineStyleFromBlankLine", function(cm) { + CodeMirror.defineMode("lineStyleFromBlankLine_mode", function() { + return {token: function(stream) { stream.skipToEnd(); return "comment"; }, + blankLine: function() { return "line-blank"; }}; + }); + cm.setOption("mode", "lineStyleFromBlankLine_mode"); + var blankElts = byClassName(cm.getWrapperElement(), "blank"); + eq(blankElts.length, 1); + eq(blankElts[0].nodeName, "PRE"); + cm.replaceRange("x", Pos(1, 0)); + blankElts = byClassName(cm.getWrapperElement(), "blank"); + eq(blankElts.length, 0); +}, {value: "foo\n\nbar"}); + +CodeMirror.registerHelper("xxx", "a", "A"); +CodeMirror.registerHelper("xxx", "b", "B"); +CodeMirror.defineMode("yyy", function() { + return { + token: function(stream) { stream.skipToEnd(); }, + xxx: ["a", "b", "q"] + }; +}); +CodeMirror.registerGlobalHelper("xxx", "c", function(m) { return m.enableC; }, "C"); + +testCM("helpers", function(cm) { + cm.setOption("mode", "yyy"); + eq(cm.getHelpers(Pos(0, 0), "xxx").join("/"), "A/B"); + cm.setOption("mode", {name: "yyy", modeProps: {xxx: "b", enableC: true}}); + eq(cm.getHelpers(Pos(0, 0), "xxx").join("/"), "B/C"); + cm.setOption("mode", "javascript"); + eq(cm.getHelpers(Pos(0, 0), "xxx").join("/"), ""); +}); + +testCM("selectionHistory", function(cm) { + for (var i = 0; i < 3; i++) { + cm.setExtending(true); + cm.execCommand("goCharRight"); + cm.setExtending(false); + cm.execCommand("goCharRight"); + cm.execCommand("goCharRight"); + } + cm.execCommand("undoSelection"); + eq(cm.getSelection(), "c"); + cm.execCommand("undoSelection"); + eq(cm.getSelection(), ""); + eqCursorPos(cm.getCursor(), Pos(0, 4, "before")); + cm.execCommand("undoSelection"); + eq(cm.getSelection(), "b"); + cm.execCommand("redoSelection"); + eq(cm.getSelection(), ""); + eqCursorPos(cm.getCursor(), Pos(0, 4, "before")); + cm.execCommand("redoSelection"); + eq(cm.getSelection(), "c"); + cm.execCommand("redoSelection"); + eq(cm.getSelection(), ""); + eqCursorPos(cm.getCursor(), Pos(0, 6, "before")); +}, {value: "a b c d"}); + +testCM("selectionChangeReducesRedo", function(cm) { + cm.replaceSelection("X"); + cm.execCommand("goCharRight"); + cm.undoSelection(); + cm.execCommand("selectAll"); + cm.undoSelection(); + eq(cm.getValue(), "Xabc"); + eqCursorPos(cm.getCursor(), Pos(0, 1)); + cm.undoSelection(); + eq(cm.getValue(), "abc"); +}, {value: "abc"}); + +testCM("selectionHistoryNonOverlapping", function(cm) { + cm.setSelection(Pos(0, 0), Pos(0, 1)); + cm.setSelection(Pos(0, 2), Pos(0, 3)); + cm.execCommand("undoSelection"); + eqCursorPos(cm.getCursor("anchor"), Pos(0, 0)); + eqCursorPos(cm.getCursor("head"), Pos(0, 1)); +}, {value: "1234"}); + +testCM("cursorMotionSplitsHistory", function(cm) { + cm.replaceSelection("a"); + cm.execCommand("goCharRight"); + cm.replaceSelection("b"); + cm.replaceSelection("c"); + cm.undo(); + eq(cm.getValue(), "a1234"); + eqCursorPos(cm.getCursor(), Pos(0, 2, "before")); + cm.undo(); + eq(cm.getValue(), "1234"); + eqCursorPos(cm.getCursor(), Pos(0, 0)); +}, {value: "1234"}); + +testCM("selChangeInOperationDoesNotSplit", function(cm) { + for (var i = 0; i < 4; i++) { + cm.operation(function() { + cm.replaceSelection("x"); + cm.setCursor(Pos(0, cm.getCursor().ch - 1)); + }); + } + eqCursorPos(cm.getCursor(), Pos(0, 0)); + eq(cm.getValue(), "xxxxa"); + cm.undo(); + eq(cm.getValue(), "a"); +}, {value: "a"}); + +testCM("alwaysMergeSelEventWithChangeOrigin", function(cm) { + cm.replaceSelection("U", null, "foo"); + cm.setSelection(Pos(0, 0), Pos(0, 1), {origin: "foo"}); + cm.undoSelection(); + eq(cm.getValue(), "a"); + cm.replaceSelection("V", null, "foo"); + cm.setSelection(Pos(0, 0), Pos(0, 1), {origin: "bar"}); + cm.undoSelection(); + eq(cm.getValue(), "Va"); +}, {value: "a"}); + +testCM("getTokenAt", function(cm) { + var tokPlus = cm.getTokenAt(Pos(0, 2)); + eq(tokPlus.type, "operator"); + eq(tokPlus.string, "+"); + var toks = cm.getLineTokens(0); + eq(toks.length, 3); + forEach([["number", "1"], ["operator", "+"], ["number", "2"]], function(expect, i) { + eq(toks[i].type, expect[0]); + eq(toks[i].string, expect[1]); + }); +}, {value: "1+2", mode: "javascript"}); + +testCM("getTokenTypeAt", function(cm) { + eq(cm.getTokenTypeAt(Pos(0, 0)), "number"); + eq(cm.getTokenTypeAt(Pos(0, 6)), "string"); + cm.addOverlay({ + token: function(stream) { + if (stream.match("foo")) return "foo"; + else stream.next(); + } + }); + eq(byClassName(cm.getWrapperElement(), "cm-foo").length, 1); + eq(cm.getTokenTypeAt(Pos(0, 6)), "string"); +}, {value: "1 + 'foo'", mode: "javascript"}); + +testCM("resizeLineWidget", function(cm) { + addDoc(cm, 200, 3); + var widget = document.createElement("pre"); + widget.innerHTML = "imwidget"; + widget.style.background = "yellow"; + cm.addLineWidget(1, widget, {noHScroll: true}); + cm.setSize(40); + is(widget.parentNode.offsetWidth < 42); +}); + +testCM("combinedOperations", function(cm) { + var place = document.getElementById("testground"); + var other = CodeMirror(place, {value: "123"}); + try { + cm.operation(function() { + cm.addLineClass(0, "wrap", "foo"); + other.addLineClass(0, "wrap", "foo"); + }); + eq(byClassName(cm.getWrapperElement(), "foo").length, 1); + eq(byClassName(other.getWrapperElement(), "foo").length, 1); + cm.operation(function() { + cm.removeLineClass(0, "wrap", "foo"); + other.removeLineClass(0, "wrap", "foo"); + }); + eq(byClassName(cm.getWrapperElement(), "foo").length, 0); + eq(byClassName(other.getWrapperElement(), "foo").length, 0); + } finally { + place.removeChild(other.getWrapperElement()); + } +}, {value: "abc"}); + +testCM("eventOrder", function(cm) { + var seen = []; + cm.on("change", function() { + if (!seen.length) cm.replaceSelection("."); + seen.push("change"); + }); + cm.on("cursorActivity", function() { + cm.replaceSelection("!"); + seen.push("activity"); + }); + cm.replaceSelection("/"); + eq(seen.join(","), "change,change,activity,change"); +}); + +testCM("splitSpaces_nonspecial", function(cm) { + eq(byClassName(cm.getWrapperElement(), "cm-invalidchar").length, 0); +}, { + specialChars: /[\u00a0]/, + value: "spaces -> <- between" +}); + +test("core_rmClass", function() { + var node = document.createElement("div"); + node.className = "foo-bar baz-quux yadda"; + CodeMirror.rmClass(node, "quux"); + eq(node.className, "foo-bar baz-quux yadda"); + CodeMirror.rmClass(node, "baz-quux"); + eq(node.className, "foo-bar yadda"); + CodeMirror.rmClass(node, "yadda"); + eq(node.className, "foo-bar"); + CodeMirror.rmClass(node, "foo-bar"); + eq(node.className, ""); + node.className = " foo "; + CodeMirror.rmClass(node, "foo"); + eq(node.className, ""); +}); + +test("core_addClass", function() { + var node = document.createElement("div"); + CodeMirror.addClass(node, "a"); + eq(node.className, "a"); + CodeMirror.addClass(node, "a"); + eq(node.className, "a"); + CodeMirror.addClass(node, "b"); + eq(node.className, "a b"); + CodeMirror.addClass(node, "a"); + CodeMirror.addClass(node, "b"); + eq(node.className, "a b"); +}); + +testCM("lineSeparator", function(cm) { + eq(cm.lineCount(), 3); + eq(cm.getLine(1), "bar\r"); + eq(cm.getLine(2), "baz\rquux"); + cm.setOption("lineSeparator", "\r"); + eq(cm.lineCount(), 5); + eq(cm.getLine(4), "quux"); + eq(cm.getValue(), "foo\rbar\r\rbaz\rquux"); + eq(cm.getValue("\n"), "foo\nbar\n\nbaz\nquux"); + cm.setOption("lineSeparator", null); + cm.setValue("foo\nbar\r\nbaz\rquux"); + eq(cm.lineCount(), 4); +}, {value: "foo\nbar\r\nbaz\rquux", + lineSeparator: "\n"}); + +var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/ +var getChar = function (noExtending) { var res; do {res = String.fromCharCode(Math.floor(Math.random()*0x8ac)); } while ([0x90].indexOf(res.charCodeAt(0)) != -1 || (noExtending && extendingChars.test(res))); return res } +var getString = function (n) { var res = getChar(true); while (--n > 0) res += getChar(); return res } + +function makeItWrapAfter(cm, pos) { + var firstLineTop = cm.cursorCoords(Pos(0, 0)).top; + for(var w = 0, posTop; posTop != firstLineTop; ++w) { + cm.setSize(w); + posTop = cm.charCoords(pos).top; + } +} + +function countIf(arr, f) { + var result = 0 + for (var i = 0; i < arr.length; i++) if (f[arr[i]]) result++ + return result +} + +function testMoveBidi(str) { + testCM("move_bidi_" + str, function(cm) { + if (cm.getOption("inputStyle") != "textarea" || !cm.getOption("rtlMoveVisually")) return; + cm.getScrollerElement().style.fontFamily = "monospace"; + makeItWrapAfter(cm, Pos(0, 5)); + + var steps = str.length - countIf(str.split(""), function(ch) { return extendingChars.test(ch) }); + var lineBreaks = {} + lineBreaks[6 - countIf(str.substr(0, 5).split(""), function(ch) { return extendingChars.test(ch) })] = 'w'; + if (str.indexOf("\n") != -1) { + lineBreaks[steps - 2] = 'n'; + } + + // Make sure we are at the visual beginning of the first line + cm.execCommand("goLineStart"); + + var prevCoords = cm.cursorCoords(), coords; + for(var i = 0; i < steps; ++i) { + cm.execCommand("goCharRight"); + coords = cm.cursorCoords(); + if ((i >= 10 && i <= 12) && !lineBreaks[i] && coords.left < prevCoords.left && coords.top > prevCoords.top) { + // The first line wraps twice + lineBreaks[i] = 'w'; + } + if (!lineBreaks[i]) { + is(coords.left > prevCoords.left, "In step " + i + ", cursor didn't move right"); + eq(coords.top, prevCoords.top, "In step " + i + ", cursor moved out of line"); + } else { + is(coords.left < prevCoords.left, i); + is(coords.top > prevCoords.top, i); + } + prevCoords = coords; + } + + cm.execCommand("goCharRight"); + coords = cm.cursorCoords(); + eq(coords.left, prevCoords.left, "Moving " + steps + " steps right didn't reach the end"); + eq(coords.top, prevCoords.top, "Moving " + steps + " steps right didn't reach the end"); + + for(i = steps - 1; i >= 0; --i) { + cm.execCommand("goCharLeft"); + coords = cm.cursorCoords(); + if (!(lineBreaks[i] == 'n' || lineBreaks[i + 1] == 'w')) { + is(coords.left < prevCoords.left, "In step " + i + ", cursor didn't move left"); + eq(coords.top, prevCoords.top, "In step " + i + ", cursor is not at the same line anymore"); + } else { + is(coords.left > prevCoords.left, i); + is(coords.top < prevCoords.top, i); + } + prevCoords = coords; + } + + cm.execCommand("goCharLeft"); + coords = cm.cursorCoords(); + eq(coords.left, prevCoords.left, "Moving " + steps + " steps left didn't reach the beginning"); + eq(coords.top, prevCoords.top, "Moving " + steps + " steps left didn't reach the beginning"); + }, {value: str, lineWrapping: true}) +}; + +function testMoveEndBidi(str) { + testCM("move_end_bidi_" + str, function(cm) { + cm.getScrollerElement().style.fontFamily = "monospace"; + makeItWrapAfter(cm, Pos(0, 5)); + + cm.execCommand("goLineStart"); + var pos = cm.doc.getCursor(); + cm.execCommand("goCharLeft"); + eqCursorPos(pos, cm.doc.getCursor()); + + cm.execCommand("goLineEnd"); + pos = cm.doc.getCursor(); + cm.execCommand("goColumnRight"); + eqCursorPos(pos, cm.doc.getCursor()); + }, {value: str, lineWrapping: true}) +}; + +var bidiTests = []; + +// We don't correctly implement L1 UBA +// See https://bugzilla.mozilla.org/show_bug.cgi?id=1331501 +// and https://bugs.chromium.org/p/chromium/issues/detail?id=673405 +/* +bidiTests.push("Say ا ب جabj\nS"); +bidiTests.push("Sayyy ا ا ب ج"); +*/ + +if (!phantom) { + bidiTests.push("Όȝǝڪȉۥ״ۺ׆ɀҩۏ\nҳ"); + bidiTests.push("ŌӰтقȤ؁ƥ؅٣ĎȺ١\nϚ"); + bidiTests.push("ٻоҤѕѽΩ־؉ïίքdz\nٵ"); + bidiTests.push("؅؁ĆՕƿɁǞϮؠȩóć\nď"); + bidiTests.push("RŨďңŪzϢŎƏԖڇڦ\nӈ"); + bidiTests.push("ό׊۷٢ԜһОצЉيčǟ\nѩ"); + bidiTests.push("ۑÚҳҕڬġڹհяųKV\nr"); + bidiTests.push("źڻғúہ4ם1Ƞc1a\nԁ"); + bidiTests.push("ҒȨҟփƞ٦ԓȦڰғâƥ\nڤ"); + bidiTests.push("ϖسՉȏŧΔԛdžĎӟیڡ\nέ"); + bidiTests.push("۹ؼL۵ĺȧКԙػא7״\nم"); + bidiTests.push("ن (ي)\u2009أقواس"); // thin space to throw off Firefox 51's broken white-space compressing behavior +} + +bidiTests.push("քմѧǮßپüŢҍҞўڳ\nӧ"); + +//bidiTests.push("Count ١ ٢ ٣ ٤"); +//bidiTests.push("ӣאƦϰ؊ȓېÛوը٬ز\nϪ"); +//bidiTests.push("ҾճٳџIՖӻ٥׭֐؜ڏ\nێ"); +//bidiTests.push("ҬÓФ؜ڂį٦Ͽɓڐͳٵ\nՈ"); +//bidiTests.push("aѴNijȻهˇ҃ڱӧǻֵ\na"); +//bidiTests.push(" a٧ا٢ ب جa\nS"); + +for (var i = 0; i < bidiTests.length; ++i) { + testMoveBidi(bidiTests[i]); + testMoveEndBidi(bidiTests[i]); +} + +/* +for (var i = 0; i < 5; ++i) { + testMoveBidi(getString(12) + "\n" + getString(1)); +} +*/ + +function testCoordsWrappedBidi(str) { + testCM("coords_wrapped_bidi_" + str, function(cm) { + cm.getScrollerElement().style.fontFamily = "monospace"; + makeItWrapAfter(cm, Pos(0, 5)); + + // Make sure we are at the visual beginning of the first line + var pos = Pos(0, 0), lastPos; + cm.doc.setCursor(pos); + do { + lastPos = pos; + cm.execCommand("goCharLeft"); + pos = cm.doc.getCursor(); + } while (pos != lastPos) + + var top = cm.charCoords(Pos(0, 0)).top, lastTop; + for (var i = 1; i < str.length; ++i) { + lastTop = top; + top = cm.charCoords(Pos(0, i)).top; + is(top >= lastTop); + } + }, {value: str, lineWrapping: true}) +}; + +testCoordsWrappedBidi("Count ١ ٢ ٣ ٤"); +/* +for (var i = 0; i < 5; ++i) { + testCoordsWrappedBidi(getString(50)); +} +*/ + +testCM("rtl_wrapped_selection", function(cm) { + cm.setSelection(Pos(0, 10), Pos(0, 190)) + is(byClassName(cm.getWrapperElement(), "CodeMirror-selected").length >= 3) +}, {value: new Array(10).join(" فتي تم تضمينها فتي تم"), lineWrapping: true}) + +testCM("bidi_wrapped_selection", function(cm) { + if (phantom) return + cm.setSize(cm.charCoords(Pos(0, 10), "editor").left) + cm.setSelection(Pos(0, 37), Pos(0, 80)) + var blocks = byClassName(cm.getWrapperElement(), "CodeMirror-selected") + is(blocks.length >= 2) + is(blocks.length <= 3) + var boxTop = blocks[0].getBoundingClientRect(), boxBot = blocks[blocks.length - 1].getBoundingClientRect() + is(boxTop.left > cm.charCoords(Pos(0, 1)).right) + is(boxBot.right < cm.charCoords(Pos(0, cm.getLine(0).length - 2)).left) +}, {value: "

    مفتي11 تم تضمينهفتي تم تضمينها فتي تفتي تم تضمينها فتي تفتي تم تضمينها فتي تفتي تم تضمينها فتي تا فت10ي ت

    ", lineWrapping: true}) + +testCM("delete_wrapped", function(cm) { + makeItWrapAfter(cm, Pos(0, 2)); + cm.doc.setCursor(Pos(0, 3, "after")); + cm.deleteH(-1, "char"); + eq(cm.getLine(0), "1245"); +}, {value: "12345", lineWrapping: true}) + +CodeMirror.defineMode("lookahead_mode", function() { + // Colors text as atom if the line two lines down has an x in it + return { + token: function(stream) { + stream.skipToEnd() + return /x/.test(stream.lookAhead(2)) ? "atom" : null + } + } +}) + +testCM("mode_lookahead", function(cm) { + eq(cm.getTokenAt(Pos(0, 1)).type, "atom") + eq(cm.getTokenAt(Pos(1, 1)).type, "atom") + eq(cm.getTokenAt(Pos(2, 1)).type, null) + cm.replaceRange("\n", Pos(2, 0)) + eq(cm.getTokenAt(Pos(0, 1)).type, null) + eq(cm.getTokenAt(Pos(1, 1)).type, "atom") +}, {value: "foo\na\nx\nx\n", mode: "lookahead_mode"}) diff --git a/global/codemirror/test/vim_test.js b/global/codemirror/test/vim_test.js new file mode 100644 index 00000000..da49a24c --- /dev/null +++ b/global/codemirror/test/vim_test.js @@ -0,0 +1,4215 @@ +var Pos = CodeMirror.Pos; +CodeMirror.Vim.suppressErrorLogging = true; + +var code = '' + +' wOrd1 (#%\n' + +' word3] \n' + +'aopop pop 0 1 2 3 4\n' + +' (a) [b] {c} \n' + +'int getchar(void) {\n' + +' static char buf[BUFSIZ];\n' + +' static char *bufp = buf;\n' + +' if (n == 0) { /* buffer is empty */\n' + +' n = read(0, buf, sizeof buf);\n' + +' bufp = buf;\n' + +' }\n' + +'\n' + +' return (--n >= 0) ? (unsigned char) *bufp++ : EOF;\n' + +' \n' + +'}\n'; + +var lines = (function() { + lineText = code.split('\n'); + var ret = []; + for (var i = 0; i < lineText.length; i++) { + ret[i] = { + line: i, + length: lineText[i].length, + lineText: lineText[i], + textStart: /^\s*/.exec(lineText[i])[0].length + }; + } + return ret; +})(); +var endOfDocument = makeCursor(lines.length - 1, + lines[lines.length - 1].length); +var wordLine = lines[0]; +var bigWordLine = lines[1]; +var charLine = lines[2]; +var bracesLine = lines[3]; +var seekBraceLine = lines[4]; + +var word1 = { + start: new Pos(wordLine.line, 1), + end: new Pos(wordLine.line, 5) +}; +var word2 = { + start: new Pos(wordLine.line, word1.end.ch + 2), + end: new Pos(wordLine.line, word1.end.ch + 4) +}; +var word3 = { + start: new Pos(bigWordLine.line, 1), + end: new Pos(bigWordLine.line, 5) +}; +var bigWord1 = word1; +var bigWord2 = word2; +var bigWord3 = { + start: new Pos(bigWordLine.line, 1), + end: new Pos(bigWordLine.line, 7) +}; +var bigWord4 = { + start: new Pos(bigWordLine.line, bigWord1.end.ch + 3), + end: new Pos(bigWordLine.line, bigWord1.end.ch + 7) +}; + +var oChars = [ new Pos(charLine.line, 1), + new Pos(charLine.line, 3), + new Pos(charLine.line, 7) ]; +var pChars = [ new Pos(charLine.line, 2), + new Pos(charLine.line, 4), + new Pos(charLine.line, 6), + new Pos(charLine.line, 8) ]; +var numChars = [ new Pos(charLine.line, 10), + new Pos(charLine.line, 12), + new Pos(charLine.line, 14), + new Pos(charLine.line, 16), + new Pos(charLine.line, 18)]; +var parens1 = { + start: new Pos(bracesLine.line, 1), + end: new Pos(bracesLine.line, 3) +}; +var squares1 = { + start: new Pos(bracesLine.line, 5), + end: new Pos(bracesLine.line, 7) +}; +var curlys1 = { + start: new Pos(bracesLine.line, 9), + end: new Pos(bracesLine.line, 11) +}; +var seekOutside = { + start: new Pos(seekBraceLine.line, 1), + end: new Pos(seekBraceLine.line, 16) +}; +var seekInside = { + start: new Pos(seekBraceLine.line, 14), + end: new Pos(seekBraceLine.line, 11) +}; + +function copyCursor(cur) { + return new Pos(cur.line, cur.ch); +} + +function forEach(arr, func) { + for (var i = 0; i < arr.length; i++) { + func(arr[i], i, arr); + } +} + +function testVim(name, run, opts, expectedFail) { + var vimOpts = { + lineNumbers: true, + vimMode: true, + showCursorWhenSelecting: true, + value: code + }; + for (var prop in opts) { + if (opts.hasOwnProperty(prop)) { + vimOpts[prop] = opts[prop]; + } + } + return test('vim_' + name, function() { + var place = document.getElementById("testground"); + var cm = CodeMirror(place, vimOpts); + var vim = CodeMirror.Vim.maybeInitVimState_(cm); + + function doKeysFn(cm) { + return function(args) { + if (args instanceof Array) { + arguments = args; + } + for (var i = 0; i < arguments.length; i++) { + var result = CodeMirror.Vim.handleKey(cm, arguments[i]); + if (!result && cm.state.vim.insertMode) { + cm.replaceSelections(fillArray(arguments[i], cm.listSelections().length)); + } + } + } + } + function doInsertModeKeysFn(cm) { + return function(args) { + if (args instanceof Array) { arguments = args; } + function executeHandler(handler) { + if (typeof handler == 'string') { + CodeMirror.commands[handler](cm); + } else { + handler(cm); + } + return true; + } + for (var i = 0; i < arguments.length; i++) { + var key = arguments[i]; + // Find key in keymap and handle. + var handled = CodeMirror.lookupKey(key, cm.getOption('keyMap'), executeHandler, cm); + // Record for insert mode. + if (handled == "handled" && cm.state.vim.insertMode && arguments[i] != 'Esc') { + var lastChange = CodeMirror.Vim.getVimGlobalState_().macroModeState.lastInsertModeChanges; + if (lastChange && (key.indexOf('Delete') != -1 || key.indexOf('Backspace') != -1)) { + lastChange.changes.push(new CodeMirror.Vim.InsertModeKey(key)); + } + } + } + } + } + function doExFn(cm) { + return function(command) { + cm.openDialog = helpers.fakeOpenDialog(command); + helpers.doKeys(':'); + } + } + function assertCursorAtFn(cm) { + return function(line, ch) { + var pos; + if (ch == null && typeof line.line == 'number') { + pos = line; + } else { + pos = makeCursor(line, ch); + } + eqCursorPos(cm.getCursor(), pos); + } + } + function fakeOpenDialog(result) { + return function(text, callback) { + return callback(result); + } + } + function fakeOpenNotification(matcher) { + return function(text) { + matcher(text); + } + } + var helpers = { + doKeys: doKeysFn(cm), + // Warning: Only emulates keymap events, not character insertions. Use + // replaceRange to simulate character insertions. + // Keys are in CodeMirror format, NOT vim format. + doInsertModeKeys: doInsertModeKeysFn(cm), + doEx: doExFn(cm), + assertCursorAt: assertCursorAtFn(cm), + fakeOpenDialog: fakeOpenDialog, + fakeOpenNotification: fakeOpenNotification, + getRegisterController: function() { + return CodeMirror.Vim.getRegisterController(); + } + } + CodeMirror.Vim.resetVimGlobalState_(); + var successful = false; + var savedOpenNotification = cm.openNotification; + var savedOpenDialog = cm.openDialog; + try { + run(cm, vim, helpers); + successful = true; + } finally { + cm.openNotification = savedOpenNotification; + cm.openDialog = savedOpenDialog; + if (!successful || verbose) { + place.style.visibility = "visible"; + } else { + place.removeChild(cm.getWrapperElement()); + } + } + }, expectedFail); +}; +testVim('qq@q', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'q', 'l', 'l', 'q'); + helpers.assertCursorAt(0,2); + helpers.doKeys('@', 'q'); + helpers.assertCursorAt(0,4); +}, { value: ' '}); +testVim('@@', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'q', 'l', 'l', 'q'); + helpers.assertCursorAt(0,2); + helpers.doKeys('@', 'q'); + helpers.assertCursorAt(0,4); + helpers.doKeys('@', '@'); + helpers.assertCursorAt(0,6); +}, { value: ' '}); +var jumplistScene = ''+ + 'word\n'+ + '(word)\n'+ + '{word\n'+ + 'word.\n'+ + '\n'+ + 'word search\n'+ + '}word\n'+ + 'word\n'+ + 'word\n'; +function testJumplist(name, keys, endPos, startPos, dialog) { + endPos = makeCursor(endPos[0], endPos[1]); + startPos = makeCursor(startPos[0], startPos[1]); + testVim(name, function(cm, vim, helpers) { + CodeMirror.Vim.resetVimGlobalState_(); + if(dialog)cm.openDialog = helpers.fakeOpenDialog('word'); + cm.setCursor(startPos); + helpers.doKeys.apply(null, keys); + helpers.assertCursorAt(endPos); + }, {value: jumplistScene}); +}; +testJumplist('jumplist_H', ['H', ''], [5,2], [5,2]); +testJumplist('jumplist_M', ['M', ''], [2,2], [2,2]); +testJumplist('jumplist_L', ['L', ''], [2,2], [2,2]); +testJumplist('jumplist_[[', ['[', '[', ''], [5,2], [5,2]); +testJumplist('jumplist_]]', [']', ']', ''], [2,2], [2,2]); +testJumplist('jumplist_G', ['G', ''], [5,2], [5,2]); +testJumplist('jumplist_gg', ['g', 'g', ''], [5,2], [5,2]); +testJumplist('jumplist_%', ['%', ''], [1,5], [1,5]); +testJumplist('jumplist_{', ['{', ''], [1,5], [1,5]); +testJumplist('jumplist_}', ['}', ''], [1,5], [1,5]); +testJumplist('jumplist_\'', ['m', 'a', 'h', '\'', 'a', 'h', ''], [1,0], [1,5]); +testJumplist('jumplist_`', ['m', 'a', 'h', '`', 'a', 'h', ''], [1,5], [1,5]); +testJumplist('jumplist_*_cachedCursor', ['*', ''], [1,3], [1,3]); +testJumplist('jumplist_#_cachedCursor', ['#', ''], [1,3], [1,3]); +testJumplist('jumplist_n', ['#', 'n', ''], [1,1], [2,3]); +testJumplist('jumplist_N', ['#', 'N', ''], [1,1], [2,3]); +testJumplist('jumplist_repeat_', ['*', '*', '*', '3', ''], [2,3], [2,3]); +testJumplist('jumplist_repeat_', ['*', '*', '*', '3', '', '2', ''], [5,0], [2,3]); +testJumplist('jumplist_repeated_motion', ['3', '*', ''], [2,3], [2,3]); +testJumplist('jumplist_/', ['/', ''], [2,3], [2,3], 'dialog'); +testJumplist('jumplist_?', ['?', ''], [2,3], [2,3], 'dialog'); +testJumplist('jumplist_skip_deleted_mark', + ['*', 'n', 'n', 'k', 'd', 'k', '', '', ''], + [0,2], [0,2]); +testJumplist('jumplist_skip_deleted_mark', + ['*', 'n', 'n', 'k', 'd', 'k', '', '', ''], + [1,0], [0,2]); + +/** + * @param name Name of the test + * @param keys An array of keys or a string with a single key to simulate. + * @param endPos The expected end position of the cursor. + * @param startPos The position the cursor should start at, defaults to 0, 0. + */ +function testMotion(name, keys, endPos, startPos) { + testVim(name, function(cm, vim, helpers) { + if (!startPos) { + startPos = new Pos(0, 0); + } + cm.setCursor(startPos); + helpers.doKeys(keys); + helpers.assertCursorAt(endPos); + }); +}; + +function makeCursor(line, ch) { + return new Pos(line, ch); +}; + +function offsetCursor(cur, offsetLine, offsetCh) { + return new Pos(cur.line + offsetLine, cur.ch + offsetCh); +}; + +// Motion tests +testMotion('|', '|', makeCursor(0, 0), makeCursor(0,4)); +testMotion('|_repeat', ['3', '|'], makeCursor(0, 2), makeCursor(0,4)); +testMotion('h', 'h', makeCursor(0, 0), word1.start); +testMotion('h_repeat', ['3', 'h'], offsetCursor(word1.end, 0, -3), word1.end); +testMotion('l', 'l', makeCursor(0, 1)); +testMotion('l_repeat', ['2', 'l'], makeCursor(0, 2)); +testMotion('j', 'j', offsetCursor(word1.end, 1, 0), word1.end); +testMotion('j_repeat', ['2', 'j'], offsetCursor(word1.end, 2, 0), word1.end); +testMotion('j_repeat_clip', ['1000', 'j'], endOfDocument); +testMotion('k', 'k', offsetCursor(word3.end, -1, 0), word3.end); +testMotion('k_repeat', ['2', 'k'], makeCursor(0, 4), makeCursor(2, 4)); +testMotion('k_repeat_clip', ['1000', 'k'], makeCursor(0, 4), makeCursor(2, 4)); +testMotion('w', 'w', word1.start); +testMotion('w_multiple_newlines_no_space', 'w', makeCursor(12, 2), makeCursor(11, 2)); +testMotion('w_multiple_newlines_with_space', 'w', makeCursor(14, 0), makeCursor(12, 51)); +testMotion('w_repeat', ['2', 'w'], word2.start); +testMotion('w_wrap', ['w'], word3.start, word2.start); +testMotion('w_endOfDocument', 'w', endOfDocument, endOfDocument); +testMotion('w_start_to_end', ['1000', 'w'], endOfDocument, makeCursor(0, 0)); +testMotion('W', 'W', bigWord1.start); +testMotion('W_repeat', ['2', 'W'], bigWord3.start, bigWord1.start); +testMotion('e', 'e', word1.end); +testMotion('e_repeat', ['2', 'e'], word2.end); +testMotion('e_wrap', 'e', word3.end, word2.end); +testMotion('e_endOfDocument', 'e', endOfDocument, endOfDocument); +testMotion('e_start_to_end', ['1000', 'e'], endOfDocument, makeCursor(0, 0)); +testMotion('b', 'b', word3.start, word3.end); +testMotion('b_repeat', ['2', 'b'], word2.start, word3.end); +testMotion('b_wrap', 'b', word2.start, word3.start); +testMotion('b_startOfDocument', 'b', makeCursor(0, 0), makeCursor(0, 0)); +testMotion('b_end_to_start', ['1000', 'b'], makeCursor(0, 0), endOfDocument); +testMotion('ge', ['g', 'e'], word2.end, word3.end); +testMotion('ge_repeat', ['2', 'g', 'e'], word1.end, word3.start); +testMotion('ge_wrap', ['g', 'e'], word2.end, word3.start); +testMotion('ge_startOfDocument', ['g', 'e'], makeCursor(0, 0), + makeCursor(0, 0)); +testMotion('ge_end_to_start', ['1000', 'g', 'e'], makeCursor(0, 0), endOfDocument); +testMotion('gg', ['g', 'g'], makeCursor(lines[0].line, lines[0].textStart), + makeCursor(3, 1)); +testMotion('gg_repeat', ['3', 'g', 'g'], + makeCursor(lines[2].line, lines[2].textStart)); +testMotion('G', 'G', + makeCursor(lines[lines.length - 1].line, lines[lines.length - 1].textStart), + makeCursor(3, 1)); +testMotion('G_repeat', ['3', 'G'], makeCursor(lines[2].line, + lines[2].textStart)); +// TODO: Make the test code long enough to test Ctrl-F and Ctrl-B. +testMotion('0', '0', makeCursor(0, 0), makeCursor(0, 8)); +testMotion('^', '^', makeCursor(0, lines[0].textStart), makeCursor(0, 8)); +testMotion('+', '+', makeCursor(1, lines[1].textStart), makeCursor(0, 8)); +testMotion('-', '-', makeCursor(0, lines[0].textStart), makeCursor(1, 4)); +testMotion('_', ['6','_'], makeCursor(5, lines[5].textStart), makeCursor(0, 8)); +testMotion('$', '$', makeCursor(0, lines[0].length - 1), makeCursor(0, 1)); +testMotion('$_repeat', ['2', '$'], makeCursor(1, lines[1].length - 1), + makeCursor(0, 3)); +testMotion('f', ['f', 'p'], pChars[0], makeCursor(charLine.line, 0)); +testMotion('f_repeat', ['2', 'f', 'p'], pChars[2], pChars[0]); +testMotion('f_num', ['f', '2'], numChars[2], makeCursor(charLine.line, 0)); +testMotion('t', ['t','p'], offsetCursor(pChars[0], 0, -1), + makeCursor(charLine.line, 0)); +testMotion('t_repeat', ['2', 't', 'p'], offsetCursor(pChars[2], 0, -1), + pChars[0]); +testMotion('F', ['F', 'p'], pChars[0], pChars[1]); +testMotion('F_repeat', ['2', 'F', 'p'], pChars[0], pChars[2]); +testMotion('T', ['T', 'p'], offsetCursor(pChars[0], 0, 1), pChars[1]); +testMotion('T_repeat', ['2', 'T', 'p'], offsetCursor(pChars[0], 0, 1), pChars[2]); +testMotion('%_parens', ['%'], parens1.end, parens1.start); +testMotion('%_squares', ['%'], squares1.end, squares1.start); +testMotion('%_braces', ['%'], curlys1.end, curlys1.start); +testMotion('%_seek_outside', ['%'], seekOutside.end, seekOutside.start); +testMotion('%_seek_inside', ['%'], seekInside.end, seekInside.start); +testVim('%_seek_skip', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,9); +}, {value:'01234"("()'}); +testVim('%_skip_string', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,4); + cm.setCursor(0,2); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,0); +}, {value:'(")")'}); +testVim('%_skip_comment', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,6); + cm.setCursor(0,3); + helpers.doKeys(['%']); + helpers.assertCursorAt(0,0); +}, {value:'(/*)*/)'}); +// Make sure that moving down after going to the end of a line always leaves you +// at the end of a line, but preserves the offset in other cases +testVim('Changing lines after Eol operation', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys(['$']); + helpers.doKeys(['j']); + // After moving to Eol and then down, we should be at Eol of line 2 + helpers.assertCursorAt(new Pos(1, lines[1].length - 1)); + helpers.doKeys(['j']); + // After moving down, we should be at Eol of line 3 + helpers.assertCursorAt(new Pos(2, lines[2].length - 1)); + helpers.doKeys(['h']); + helpers.doKeys(['j']); + // After moving back one space and then down, since line 4 is shorter than line 2, we should + // be at Eol of line 2 - 1 + helpers.assertCursorAt(new Pos(3, lines[3].length - 1)); + helpers.doKeys(['j']); + helpers.doKeys(['j']); + // After moving down again, since line 3 has enough characters, we should be back to the + // same place we were at on line 1 + helpers.assertCursorAt(new Pos(5, lines[2].length - 2)); +}); +//making sure gj and gk recover from clipping +testVim('gj_gk_clipping', function(cm,vim,helpers){ + cm.setCursor(0, 1); + helpers.doKeys('g','j','g','j'); + helpers.assertCursorAt(2, 1); + helpers.doKeys('g','k','g','k'); + helpers.assertCursorAt(0, 1); +},{value: 'line 1\n\nline 2'}); +//testing a mix of j/k and gj/gk +testVim('j_k_and_gj_gk', function(cm,vim,helpers){ + cm.setSize(120); + cm.setCursor(0, 0); + //go to the last character on the first line + helpers.doKeys('$'); + //move up/down on the column within the wrapped line + //side-effect: cursor is not locked to eol anymore + helpers.doKeys('g','k'); + var cur=cm.getCursor(); + eq(cur.line,0); + is((cur.ch<176),'gk didn\'t move cursor back (1)'); + helpers.doKeys('g','j'); + helpers.assertCursorAt(0, 176); + //should move to character 177 on line 2 (j/k preserve character index within line) + helpers.doKeys('j'); + //due to different line wrapping, the cursor can be on a different screen-x now + //gj and gk preserve screen-x on movement, much like moveV + helpers.doKeys('3','g','k'); + cur=cm.getCursor(); + eq(cur.line,1); + is((cur.ch<176),'gk didn\'t move cursor back (2)'); + helpers.doKeys('g','j','2','g','j'); + //should return to the same character-index + helpers.doKeys('k'); + helpers.assertCursorAt(0, 176); +},{ lineWrapping:true, value: 'This line is intentially long to test movement of gj and gk over wrapped lines. I will start on the end of this line, then make a step up and back to set the origin for j and k.\nThis line is supposed to be even longer than the previous. I will jump here and make another wiggle with gj and gk, before I jump back to the line above. Both wiggles should not change my cursor\'s target character but both j/k and gj/gk change each other\'s reference position.'}); +testVim('gj_gk', function(cm, vim, helpers) { + if (phantom) return; + cm.setSize(120); + // Test top of document edge case. + cm.setCursor(0, 4); + helpers.doKeys('g', 'j'); + helpers.doKeys('10', 'g', 'k'); + helpers.assertCursorAt(0, 4); + + // Test moving down preserves column position. + helpers.doKeys('g', 'j'); + var pos1 = cm.getCursor(); + var expectedPos2 = new Pos(0, (pos1.ch - 4) * 2 + 4); + helpers.doKeys('g', 'j'); + helpers.assertCursorAt(expectedPos2); + + // Move to the last character + cm.setCursor(0, 0); + // Move left to reset HSPos + helpers.doKeys('h'); + // Test bottom of document edge case. + helpers.doKeys('100', 'g', 'j'); + var endingPos = cm.getCursor(); + is(endingPos != 0, 'gj should not be on wrapped line 0'); + var topLeftCharCoords = cm.charCoords(makeCursor(0, 0)); + var endingCharCoords = cm.charCoords(endingPos); + is(topLeftCharCoords.left == endingCharCoords.left, 'gj should end up on column 0'); +},{ lineNumbers: false, lineWrapping:true, value: 'Thislineisintentionallylongtotestmovementofgjandgkoverwrappedlines.' }); +testVim('}', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('}'); + helpers.assertCursorAt(1, 0); + cm.setCursor(0, 0); + helpers.doKeys('2', '}'); + helpers.assertCursorAt(4, 0); + cm.setCursor(0, 0); + helpers.doKeys('6', '}'); + helpers.assertCursorAt(5, 0); +}, { value: 'a\n\nb\nc\n\nd' }); +testVim('{', function(cm, vim, helpers) { + cm.setCursor(5, 0); + helpers.doKeys('{'); + helpers.assertCursorAt(4, 0); + cm.setCursor(5, 0); + helpers.doKeys('2', '{'); + helpers.assertCursorAt(1, 0); + cm.setCursor(5, 0); + helpers.doKeys('6', '{'); + helpers.assertCursorAt(0, 0); +}, { value: 'a\n\nb\nc\n\nd' }); +testVim('paragraph_motions', function(cm, vim, helpers) { + cm.setCursor(10, 0); + helpers.doKeys('{'); + helpers.assertCursorAt(4, 0); + helpers.doKeys('{'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('2', '}'); + helpers.assertCursorAt(7, 0); + helpers.doKeys('2', '}'); + helpers.assertCursorAt(16, 0); + + cm.setCursor(9, 0); + helpers.doKeys('}'); + helpers.assertCursorAt(14, 0); + + cm.setCursor(6, 0); + helpers.doKeys('}'); + helpers.assertCursorAt(7, 0); + + // ip inside empty space + cm.setCursor(10, 0); + helpers.doKeys('v', 'i', 'p'); + eqCursorPos(Pos(7, 0), cm.getCursor('anchor')); + eqCursorPos(Pos(12, 0), cm.getCursor('head')); + helpers.doKeys('i', 'p'); + eqCursorPos(Pos(7, 0), cm.getCursor('anchor')); + eqCursorPos(Pos(13, 1), cm.getCursor('head')); + helpers.doKeys('2', 'i', 'p'); + eqCursorPos(Pos(7, 0), cm.getCursor('anchor')); + eqCursorPos(Pos(16, 1), cm.getCursor('head')); + + // should switch to visualLine mode + cm.setCursor(14, 0); + helpers.doKeys('', 'v', 'i', 'p'); + helpers.assertCursorAt(14, 0); + + cm.setCursor(14, 0); + helpers.doKeys('', 'V', 'i', 'p'); + eqCursorPos(Pos(16, 1), cm.getCursor('head')); + + // ap inside empty space + cm.setCursor(10, 0); + helpers.doKeys('', 'v', 'a', 'p'); + eqCursorPos(Pos(7, 0), cm.getCursor('anchor')); + eqCursorPos(Pos(13, 1), cm.getCursor('head')); + helpers.doKeys('a', 'p'); + eqCursorPos(Pos(7, 0), cm.getCursor('anchor')); + eqCursorPos(Pos(16, 1), cm.getCursor('head')); + + cm.setCursor(13, 0); + helpers.doKeys('v', 'a', 'p'); + eqCursorPos(Pos(13, 0), cm.getCursor('anchor')); + eqCursorPos(Pos(14, 0), cm.getCursor('head')); + + cm.setCursor(16, 0); + helpers.doKeys('v', 'a', 'p'); + eqCursorPos(Pos(14, 0), cm.getCursor('anchor')); + eqCursorPos(Pos(16, 1), cm.getCursor('head')); + + cm.setCursor(0, 0); + helpers.doKeys('v', 'a', 'p'); + eqCursorPos(Pos(0, 0), cm.getCursor('anchor')); + eqCursorPos(Pos(4, 0), cm.getCursor('head')); + + cm.setCursor(0, 0); + helpers.doKeys('d', 'i', 'p'); + var register = helpers.getRegisterController().getRegister(); + eq('a\na\n', register.toString()); + is(register.linewise); + helpers.doKeys('3', 'j', 'p'); + helpers.doKeys('y', 'i', 'p'); + is(register.linewise); + eq('b\na\na\nc\n', register.toString()); +}, { value: 'a\na\n\n\n\nb\nc\n\n\n\n\n\n\nd\n\ne\nf' }); + +// Operator tests +testVim('dl', function(cm, vim, helpers) { + var curStart = makeCursor(0, 0); + cm.setCursor(curStart); + helpers.doKeys('d', 'l'); + eq('word1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' ', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); +}, { value: ' word1 ' }); +testVim('dl_eol', function(cm, vim, helpers) { + cm.setCursor(0, 6); + helpers.doKeys('d', 'l'); + eq(' word1', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' ', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 5); +}, { value: ' word1 ' }); +testVim('dl_repeat', function(cm, vim, helpers) { + var curStart = makeCursor(0, 0); + cm.setCursor(curStart); + helpers.doKeys('2', 'd', 'l'); + eq('ord1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' w', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); +}, { value: ' word1 ' }); +testVim('dh', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'h'); + eq(' wrd1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('o', register.toString()); + is(!register.linewise); + eqCursorPos(offsetCursor(curStart, 0 , -1), cm.getCursor()); +}, { value: ' word1 ' }); +testVim('dj', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'j'); + eq(' word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' word1\nword2\n', register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\nword2\n word3' }); +testVim('dj_end_of_document', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'j'); + eq('', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' word1 \n', register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1 ' }); +testVim('dk', function(cm, vim, helpers) { + var curStart = makeCursor(1, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'k'); + eq(' word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' word1\nword2\n', register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\nword2\n word3' }); +testVim('dk_start_of_document', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('d', 'k'); + eq('', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' word1 \n', register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1 ' }); +testVim('dw_space', function(cm, vim, helpers) { + var curStart = makeCursor(0, 0); + cm.setCursor(curStart); + helpers.doKeys('d', 'w'); + eq('word1 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' ', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); +}, { value: ' word1 ' }); +testVim('dw_word', function(cm, vim, helpers) { + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('d', 'w'); + eq(' word2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1 ', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); +}, { value: ' word1 word2' }); +testVim('dw_unicode_word', function(cm, vim, helpers) { + helpers.doKeys('d', 'w'); + eq(cm.getValue().length, 10); + helpers.doKeys('d', 'w'); + eq(cm.getValue().length, 6); + helpers.doKeys('d', 'w'); + eq(cm.getValue().length, 5); + helpers.doKeys('d', 'e'); + eq(cm.getValue().length, 2); +}, { value: ' \u0562\u0561\u0580\u0587\xbbe\xb5g ' }); +testVim('dw_only_word', function(cm, vim, helpers) { + // Test that if there is only 1 word left, dw deletes till the end of the + // line. + cm.setCursor(0, 1); + helpers.doKeys('d', 'w'); + eq(' ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1 ', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1 ' }); +testVim('dw_eol', function(cm, vim, helpers) { + // Assert that dw does not delete the newline if last word to delete is at end + // of line. + cm.setCursor(0, 1); + helpers.doKeys('d', 'w'); + eq(' \nword2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1\nword2' }); +testVim('dw_eol_with_multiple_newlines', function(cm, vim, helpers) { + // Assert that dw does not delete the newline if last word to delete is at end + // of line and it is followed by multiple newlines. + cm.setCursor(0, 1); + helpers.doKeys('d', 'w'); + eq(' \n\nword2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1\n\nword2' }); +testVim('dw_empty_line_followed_by_whitespace', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq(' \nword', cm.getValue()); +}, { value: '\n \nword' }); +testVim('dw_empty_line_followed_by_word', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('word', cm.getValue()); +}, { value: '\nword' }); +testVim('dw_empty_line_followed_by_empty_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('\n', cm.getValue()); +}, { value: '\n\n' }); +testVim('dw_whitespace_followed_by_whitespace', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('\n \n', cm.getValue()); +}, { value: ' \n \n' }); +testVim('dw_whitespace_followed_by_empty_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('\n\n', cm.getValue()); +}, { value: ' \n\n' }); +testVim('dw_word_whitespace_word', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'w'); + eq('\n \nword2', cm.getValue()); +}, { value: 'word1\n \nword2'}) +testVim('dw_end_of_document', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('d', 'w'); + eq('\nab', cm.getValue()); +}, { value: '\nabc' }); +testVim('dw_repeat', function(cm, vim, helpers) { + // Assert that dw does delete newline if it should go to the next line, and + // that repeat works properly. + cm.setCursor(0, 1); + helpers.doKeys('d', '2', 'w'); + eq(' ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1\nword2', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 0); +}, { value: ' word1\nword2' }); +testVim('de_word_start_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'e'); + eq('\n\n', cm.getValue()); +}, { value: 'word\n\n' }); +testVim('de_word_end_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(0, 3); + helpers.doKeys('d', 'e'); + eq('wor', cm.getValue()); +}, { value: 'word\n\n\n' }); +testVim('de_whitespace_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'e'); + eq('', cm.getValue()); +}, { value: ' \n\n\n' }); +testVim('de_end_of_document', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('d', 'e'); + eq('\nab', cm.getValue()); +}, { value: '\nabc' }); +testVim('db_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('d', 'b'); + eq('\n\n', cm.getValue()); +}, { value: '\n\n\n' }); +testVim('db_word_start_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('d', 'b'); + eq('\nword', cm.getValue()); +}, { value: '\n\nword' }); +testVim('db_word_end_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 3); + helpers.doKeys('d', 'b'); + eq('\n\nd', cm.getValue()); +}, { value: '\n\nword' }); +testVim('db_whitespace_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('d', 'b'); + eq('', cm.getValue()); +}, { value: '\n \n' }); +testVim('db_start_of_document', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'b'); + eq('abc\n', cm.getValue()); +}, { value: 'abc\n' }); +testVim('dge_empty_lines', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doKeys('d', 'g', 'e'); + // Note: In real VIM the result should be '', but it's not quite consistent, + // since 2 newlines are deleted. But in the similar case of word\n\n, only + // 1 newline is deleted. We'll diverge from VIM's behavior since it's much + // easier this way. + eq('\n', cm.getValue()); +}, { value: '\n\n' }); +testVim('dge_word_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doKeys('d', 'g', 'e'); + eq('wor\n', cm.getValue()); +}, { value: 'word\n\n'}); +testVim('dge_whitespace_and_empty_lines', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('d', 'g', 'e'); + eq('', cm.getValue()); +}, { value: '\n \n' }); +testVim('dge_start_of_document', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('d', 'g', 'e'); + eq('bc\n', cm.getValue()); +}, { value: 'abc\n' }); +testVim('d_inclusive', function(cm, vim, helpers) { + // Assert that when inclusive is set, the character the cursor is on gets + // deleted too. + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('d', 'e'); + eq(' ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); +}, { value: ' word1 ' }); +testVim('d_reverse', function(cm, vim, helpers) { + // Test that deleting in reverse works. + cm.setCursor(1, 0); + helpers.doKeys('d', 'b'); + eq(' word2 ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1\n', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\nword2 ' }); +testVim('dd', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange(new Pos(0, 0), + new Pos(1, 0)); + var expectedLineCount = cm.lineCount() - 1; + helpers.doKeys('d', 'd'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, lines[1].textStart); +}); +testVim('dd_prefix_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange(new Pos(0, 0), + new Pos(2, 0)); + var expectedLineCount = cm.lineCount() - 2; + helpers.doKeys('2', 'd', 'd'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, lines[2].textStart); +}); +testVim('dd_motion_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange(new Pos(0, 0), + new Pos(2, 0)); + var expectedLineCount = cm.lineCount() - 2; + helpers.doKeys('d', '2', 'd'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, lines[2].textStart); +}); +testVim('dd_multiply_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange(new Pos(0, 0), + new Pos(6, 0)); + var expectedLineCount = cm.lineCount() - 6; + helpers.doKeys('2', 'd', '3', 'd'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, lines[6].textStart); +}); +testVim('dd_lastline', function(cm, vim, helpers) { + cm.setCursor(cm.lineCount(), 0); + var expectedLineCount = cm.lineCount() - 1; + helpers.doKeys('d', 'd'); + eq(expectedLineCount, cm.lineCount()); + helpers.assertCursorAt(cm.lineCount() - 1, 0); +}); +testVim('dd_only_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + var expectedRegister = cm.getValue() + "\n"; + helpers.doKeys('d','d'); + eq(1, cm.lineCount()); + eq('', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedRegister, register.toString()); +}, { value: "thisistheonlyline" }); +// Yank commands should behave the exact same as d commands, expect that nothing +// gets deleted. +testVim('yw_repeat', function(cm, vim, helpers) { + // Assert that yw does yank newline if it should go to the next line, and + // that repeat works properly. + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('y', '2', 'w'); + eq(' word1\nword2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1\nword2', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); +}, { value: ' word1\nword2' }); +testVim('yy_multiply_repeat', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + var expectedBuffer = cm.getRange(new Pos(0, 0), + new Pos(6, 0)); + var expectedLineCount = cm.lineCount(); + helpers.doKeys('2', 'y', '3', 'y'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + eqCursorPos(curStart, cm.getCursor()); +}); +testVim('2dd_blank_P', function(cm, vim, helpers) { + helpers.doKeys('2', 'd', 'd', 'P'); + eq('\na\n\n', cm.getValue()); +}, { value: '\na\n\n' }); +// Change commands behave like d commands except that it also enters insert +// mode. In addition, when the change is linewise, an additional newline is +// inserted so that insert mode starts on that line. +testVim('cw', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('c', '2', 'w'); + eq(' word3', cm.getValue()); + helpers.assertCursorAt(0, 0); +}, { value: 'word1 word2 word3'}); +testVim('cw_repeat', function(cm, vim, helpers) { + // Assert that cw does delete newline if it should go to the next line, and + // that repeat works properly. + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('c', '2', 'w'); + eq(' ', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('word1\nword2', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: ' word1\nword2' }); +testVim('cc_multiply_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedBuffer = cm.getRange(new Pos(0, 0), + new Pos(6, 0)); + var expectedLineCount = cm.lineCount() - 5; + helpers.doKeys('2', 'c', '3', 'c'); + eq(expectedLineCount, cm.lineCount()); + var register = helpers.getRegisterController().getRegister(); + eq(expectedBuffer, register.toString()); + is(register.linewise); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('ct', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('c', 't', 'w'); + eq(' word1 word3', cm.getValue()); + helpers.doKeys('', 'c', '|'); + eq(' word3', cm.getValue()); + helpers.assertCursorAt(0, 0); + helpers.doKeys('', '2', 'u', 'w', 'h'); + helpers.doKeys('c', '2', 'g', 'e'); + eq(' wordword3', cm.getValue()); +}, { value: ' word1 word2 word3'}); +testVim('cc_should_not_append_to_document', function(cm, vim, helpers) { + var expectedLineCount = cm.lineCount(); + cm.setCursor(cm.lastLine(), 0); + helpers.doKeys('c', 'c'); + eq(expectedLineCount, cm.lineCount()); +}); +function fillArray(val, times) { + var arr = []; + for (var i = 0; i < times; i++) { + arr.push(val); + } + return arr; +} +testVim('c_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'l', 'l', 'c'); + var replacement = fillArray('hello', 3); + cm.replaceSelections(replacement); + eq('1hello\n5hello\nahellofg', cm.getValue()); + helpers.doKeys(''); + cm.setCursor(2, 3); + helpers.doKeys('', '2', 'k', 'h', 'C'); + replacement = fillArray('world', 3); + cm.replaceSelections(replacement); + eq('1hworld\n5hworld\nahworld', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); +testVim('c_visual_block_replay', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'c'); + var replacement = fillArray('fo', 3); + cm.replaceSelections(replacement); + eq('1fo4\n5fo8\nafodefg', cm.getValue()); + helpers.doKeys(''); + cm.setCursor(0, 0); + helpers.doKeys('.'); + eq('foo4\nfoo8\nfoodefg', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); + +testVim('d_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'l', 'l', 'd'); + eq('1\n5\nafg', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); +testVim('D_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'D'); + eq('1\n5\na', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); + +testVim('s_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'l', 'l', 's'); + var replacement = fillArray('hello{', 3); + cm.replaceSelections(replacement); + eq('1hello{\n5hello{\nahello{fg\n', cm.getValue()); + helpers.doKeys(''); + cm.setCursor(2, 3); + helpers.doKeys('', '1', 'k', 'h', 'S'); + replacement = fillArray('world', 1); + cm.replaceSelections(replacement); + eq('1hello{\n world\n', cm.getValue()); +}, {value: '1234\n5678\nabcdefg\n'}); + +// Swapcase commands edit in place and do not modify registers. +testVim('g~w_repeat', function(cm, vim, helpers) { + // Assert that dw does delete newline if it should go to the next line, and + // that repeat works properly. + var curStart = makeCursor(0, 1); + cm.setCursor(curStart); + helpers.doKeys('g', '~', '2', 'w'); + eq(' WORD1\nWORD2', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); +}, { value: ' word1\nword2' }); +testVim('g~g~', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + var expectedLineCount = cm.lineCount(); + var expectedValue = cm.getValue().toUpperCase(); + helpers.doKeys('2', 'g', '~', '3', 'g', '~'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); +}, { value: ' word1\nword2\nword3\nword4\nword5\nword6' }); +testVim('gu_and_gU', function(cm, vim, helpers) { + var curStart = makeCursor(0, 7); + var value = cm.getValue(); + cm.setCursor(curStart); + helpers.doKeys('2', 'g', 'U', 'w'); + eq(cm.getValue(), 'wa wb xX WC wd'); + eqCursorPos(curStart, cm.getCursor()); + helpers.doKeys('2', 'g', 'u', 'w'); + eq(cm.getValue(), value); + + helpers.doKeys('2', 'g', 'U', 'B'); + eq(cm.getValue(), 'wa WB Xx wc wd'); + eqCursorPos(makeCursor(0, 3), cm.getCursor()); + + cm.setCursor(makeCursor(0, 4)); + helpers.doKeys('g', 'u', 'i', 'w'); + eq(cm.getValue(), 'wa wb Xx wc wd'); + eqCursorPos(makeCursor(0, 3), cm.getCursor()); + + // TODO: support gUgU guu + // eqCursorPos(makeCursor(0, 0), cm.getCursor()); + + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); +}, { value: 'wa wb xx wc wd' }); +testVim('visual_block_~', function(cm, vim, helpers) { + cm.setCursor(1, 1); + helpers.doKeys('', 'l', 'l', 'j', '~'); + helpers.assertCursorAt(1, 1); + eq('hello\nwoRLd\naBCDe', cm.getValue()); + cm.setCursor(2, 0); + helpers.doKeys('v', 'l', 'l', '~'); + helpers.assertCursorAt(2, 0); + eq('hello\nwoRLd\nAbcDe', cm.getValue()); +},{value: 'hello\nwOrld\nabcde' }); +testVim('._swapCase_visualBlock', function(cm, vim, helpers) { + helpers.doKeys('', 'j', 'j', 'l', '~'); + cm.setCursor(0, 3); + helpers.doKeys('.'); + eq('HelLO\nWorLd\nAbcdE', cm.getValue()); +},{value: 'hEllo\nwOrlD\naBcDe' }); +testVim('._delete_visualBlock', function(cm, vim, helpers) { + helpers.doKeys('', 'j', 'x'); + eq('ive\ne\nsome\nsugar', cm.getValue()); + helpers.doKeys('.'); + eq('ve\n\nsome\nsugar', cm.getValue()); + helpers.doKeys('j', 'j', '.'); + eq('ve\n\nome\nugar', cm.getValue()); + helpers.doKeys('u', '', '.'); + eq('ve\n\nme\ngar', cm.getValue()); +},{value: 'give\nme\nsome\nsugar' }); +testVim('>{motion}', function(cm, vim, helpers) { + cm.setCursor(1, 3); + var expectedLineCount = cm.lineCount(); + var expectedValue = ' word1\n word2\nword3 '; + helpers.doKeys('>', 'k'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 3); +}, { value: ' word1\nword2\nword3 ', indentUnit: 2 }); +testVim('>>', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedLineCount = cm.lineCount(); + var expectedValue = ' word1\n word2\nword3 '; + helpers.doKeys('2', '>', '>'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 3); +}, { value: ' word1\nword2\nword3 ', indentUnit: 2 }); +testVim('<{motion}', function(cm, vim, helpers) { + cm.setCursor(1, 3); + var expectedLineCount = cm.lineCount(); + var expectedValue = ' word1\nword2\nword3 '; + helpers.doKeys('<', 'k'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\n word2\nword3 ', indentUnit: 2 }); +testVim('<<', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedLineCount = cm.lineCount(); + var expectedValue = ' word1\nword2\nword3 '; + helpers.doKeys('2', '<', '<'); + eq(expectedValue, cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\n word2\nword3 ', indentUnit: 2 }); + +// Edit tests +function testEdit(name, before, pos, edit, after) { + return testVim(name, function(cm, vim, helpers) { + var ch = before.search(pos) + var line = before.substring(0, ch).split('\n').length - 1; + if (line) { + ch = before.substring(0, ch).split('\n').pop().length; + } + cm.setCursor(line, ch); + helpers.doKeys.apply(this, edit.split('')); + eq(after, cm.getValue()); + }, {value: before}); +} + +// These Delete tests effectively cover word-wise Change, Visual & Yank. +// Tabs are used as differentiated whitespace to catch edge cases. +// Normal word: +testEdit('diw_mid_spc', 'foo \tbAr\t baz', /A/, 'diw', 'foo \t\t baz'); +testEdit('daw_mid_spc', 'foo \tbAr\t baz', /A/, 'daw', 'foo \tbaz'); +testEdit('diw_mid_punct', 'foo \tbAr.\t baz', /A/, 'diw', 'foo \t.\t baz'); +testEdit('daw_mid_punct', 'foo \tbAr.\t baz', /A/, 'daw', 'foo.\t baz'); +testEdit('diw_mid_punct2', 'foo \t,bAr.\t baz', /A/, 'diw', 'foo \t,.\t baz'); +testEdit('daw_mid_punct2', 'foo \t,bAr.\t baz', /A/, 'daw', 'foo \t,.\t baz'); +testEdit('diw_start_spc', 'bAr \tbaz', /A/, 'diw', ' \tbaz'); +testEdit('daw_start_spc', 'bAr \tbaz', /A/, 'daw', 'baz'); +testEdit('diw_start_punct', 'bAr. \tbaz', /A/, 'diw', '. \tbaz'); +testEdit('daw_start_punct', 'bAr. \tbaz', /A/, 'daw', '. \tbaz'); +testEdit('diw_end_spc', 'foo \tbAr', /A/, 'diw', 'foo \t'); +testEdit('daw_end_spc', 'foo \tbAr', /A/, 'daw', 'foo'); +testEdit('diw_end_punct', 'foo \tbAr.', /A/, 'diw', 'foo \t.'); +testEdit('daw_end_punct', 'foo \tbAr.', /A/, 'daw', 'foo.'); +// Big word: +testEdit('diW_mid_spc', 'foo \tbAr\t baz', /A/, 'diW', 'foo \t\t baz'); +testEdit('daW_mid_spc', 'foo \tbAr\t baz', /A/, 'daW', 'foo \tbaz'); +testEdit('diW_mid_punct', 'foo \tbAr.\t baz', /A/, 'diW', 'foo \t\t baz'); +testEdit('daW_mid_punct', 'foo \tbAr.\t baz', /A/, 'daW', 'foo \tbaz'); +testEdit('diW_mid_punct2', 'foo \t,bAr.\t baz', /A/, 'diW', 'foo \t\t baz'); +testEdit('daW_mid_punct2', 'foo \t,bAr.\t baz', /A/, 'daW', 'foo \tbaz'); +testEdit('diW_start_spc', 'bAr\t baz', /A/, 'diW', '\t baz'); +testEdit('daW_start_spc', 'bAr\t baz', /A/, 'daW', 'baz'); +testEdit('diW_start_punct', 'bAr.\t baz', /A/, 'diW', '\t baz'); +testEdit('daW_start_punct', 'bAr.\t baz', /A/, 'daW', 'baz'); +testEdit('diW_end_spc', 'foo \tbAr', /A/, 'diW', 'foo \t'); +testEdit('daW_end_spc', 'foo \tbAr', /A/, 'daW', 'foo'); +testEdit('diW_end_punct', 'foo \tbAr.', /A/, 'diW', 'foo \t'); +testEdit('daW_end_punct', 'foo \tbAr.', /A/, 'daW', 'foo'); +// Deleting text objects +// Open and close on same line +testEdit('di(_open_spc', 'foo (bAr) baz', /\(/, 'di(', 'foo () baz'); +testEdit('di)_open_spc', 'foo (bAr) baz', /\(/, 'di)', 'foo () baz'); +testEdit('dib_open_spc', 'foo (bAr) baz', /\(/, 'dib', 'foo () baz'); +testEdit('da(_open_spc', 'foo (bAr) baz', /\(/, 'da(', 'foo baz'); +testEdit('da)_open_spc', 'foo (bAr) baz', /\(/, 'da)', 'foo baz'); + +testEdit('di(_middle_spc', 'foo (bAr) baz', /A/, 'di(', 'foo () baz'); +testEdit('di)_middle_spc', 'foo (bAr) baz', /A/, 'di)', 'foo () baz'); +testEdit('da(_middle_spc', 'foo (bAr) baz', /A/, 'da(', 'foo baz'); +testEdit('da)_middle_spc', 'foo (bAr) baz', /A/, 'da)', 'foo baz'); + +testEdit('di(_close_spc', 'foo (bAr) baz', /\)/, 'di(', 'foo () baz'); +testEdit('di)_close_spc', 'foo (bAr) baz', /\)/, 'di)', 'foo () baz'); +testEdit('da(_close_spc', 'foo (bAr) baz', /\)/, 'da(', 'foo baz'); +testEdit('da)_close_spc', 'foo (bAr) baz', /\)/, 'da)', 'foo baz'); + +// delete around and inner b. +testEdit('dab_on_(_should_delete_around_()block', 'o( in(abc) )', /\(a/, 'dab', 'o( in )'); + +// delete around and inner B. +testEdit('daB_on_{_should_delete_around_{}block', 'o{ in{abc} }', /{a/, 'daB', 'o{ in }'); +testEdit('diB_on_{_should_delete_inner_{}block', 'o{ in{abc} }', /{a/, 'diB', 'o{ in{} }'); + +testEdit('da{_on_{_should_delete_inner_block', 'o{ in{abc} }', /{a/, 'da{', 'o{ in }'); +testEdit('di[_on_(_should_not_delete', 'foo (bAr) baz', /\(/, 'di[', 'foo (bAr) baz'); +testEdit('di[_on_)_should_not_delete', 'foo (bAr) baz', /\)/, 'di[', 'foo (bAr) baz'); +testEdit('da[_on_(_should_not_delete', 'foo (bAr) baz', /\(/, 'da[', 'foo (bAr) baz'); +testEdit('da[_on_)_should_not_delete', 'foo (bAr) baz', /\)/, 'da[', 'foo (bAr) baz'); +testMotion('di(_outside_should_stay', ['d', 'i', '('], new Pos(0, 0), new Pos(0, 0)); + +// Open and close on different lines, equally indented +testEdit('di{_middle_spc', 'a{\n\tbar\n}b', /r/, 'di{', 'a{}b'); +testEdit('di}_middle_spc', 'a{\n\tbar\n}b', /r/, 'di}', 'a{}b'); +testEdit('da{_middle_spc', 'a{\n\tbar\n}b', /r/, 'da{', 'ab'); +testEdit('da}_middle_spc', 'a{\n\tbar\n}b', /r/, 'da}', 'ab'); +testEdit('daB_middle_spc', 'a{\n\tbar\n}b', /r/, 'daB', 'ab'); + +// open and close on diff lines, open indented less than close +testEdit('di{_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'di{', 'a{}b'); +testEdit('di}_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'di}', 'a{}b'); +testEdit('da{_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'da{', 'ab'); +testEdit('da}_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'da}', 'ab'); + +// open and close on diff lines, open indented more than close +testEdit('di[_middle_spc', 'a\t[\n\tbar\n]b', /r/, 'di[', 'a\t[]b'); +testEdit('di]_middle_spc', 'a\t[\n\tbar\n]b', /r/, 'di]', 'a\t[]b'); +testEdit('da[_middle_spc', 'a\t[\n\tbar\n]b', /r/, 'da[', 'a\tb'); +testEdit('da]_middle_spc', 'a\t[\n\tbar\n]b', /r/, 'da]', 'a\tb'); + +function testSelection(name, before, pos, keys, sel) { + return testVim(name, function(cm, vim, helpers) { + var ch = before.search(pos) + var line = before.substring(0, ch).split('\n').length - 1; + if (line) { + ch = before.substring(0, ch).split('\n').pop().length; + } + cm.setCursor(line, ch); + helpers.doKeys.apply(this, keys.split('')); + eq(sel, cm.getSelection()); + }, {value: before}); +} +testSelection('viw_middle_spc', 'foo \tbAr\t baz', /A/, 'viw', 'bAr'); +testSelection('vaw_middle_spc', 'foo \tbAr\t baz', /A/, 'vaw', 'bAr\t '); +testSelection('viw_middle_punct', 'foo \tbAr,\t baz', /A/, 'viw', 'bAr'); +testSelection('vaW_middle_punct', 'foo \tbAr,\t baz', /A/, 'vaW', 'bAr,\t '); +testSelection('viw_start_spc', 'foo \tbAr\t baz', /b/, 'viw', 'bAr'); +testSelection('viw_end_spc', 'foo \tbAr\t baz', /r/, 'viw', 'bAr'); +testSelection('viw_eol', 'foo \tbAr', /r/, 'viw', 'bAr'); +testSelection('vi{_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'vi{', '\n\tbar\n\t'); +testSelection('va{_middle_spc', 'a{\n\tbar\n\t}b', /r/, 'va{', '{\n\tbar\n\t}'); + +testVim('mouse_select', function(cm, vim, helpers) { + cm.setSelection(Pos(0, 2), Pos(0, 4), {origin: '*mouse'}); + is(cm.state.vim.visualMode); + is(!cm.state.vim.visualLine); + is(!cm.state.vim.visualBlock); + helpers.doKeys(''); + is(!cm.somethingSelected()); + helpers.doKeys('g', 'v'); + eq('cd', cm.getSelection()); +}, {value: 'abcdef'}); + +// Operator-motion tests +testVim('D', function(cm, vim, helpers) { + cm.setCursor(0, 3); + helpers.doKeys('D'); + eq(' wo\nword2\n word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('rd1', register.toString()); + is(!register.linewise); + helpers.assertCursorAt(0, 2); +}, { value: ' word1\nword2\n word3' }); +testVim('C', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('C'); + eq(' wo\nword2\n word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq('rd1', register.toString()); + is(!register.linewise); + eqCursorPos(curStart, cm.getCursor()); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: ' word1\nword2\n word3' }); +testVim('Y', function(cm, vim, helpers) { + var curStart = makeCursor(0, 3); + cm.setCursor(curStart); + helpers.doKeys('Y'); + eq(' word1\nword2\n word3', cm.getValue()); + var register = helpers.getRegisterController().getRegister(); + eq(' word1\n', register.toString()); + is(register.linewise); + helpers.assertCursorAt(0, 3); +}, { value: ' word1\nword2\n word3' }); +testVim('~', function(cm, vim, helpers) { + helpers.doKeys('3', '~'); + eq('ABCdefg', cm.getValue()); + helpers.assertCursorAt(0, 3); +}, { value: 'abcdefg' }); + +// Action tests +testVim('ctrl-a', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys(''); + eq('-9', cm.getValue()); + helpers.assertCursorAt(0, 1); + helpers.doKeys('2',''); + eq('-7', cm.getValue()); +}, {value: '-10'}); +testVim('ctrl-x', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys(''); + eq('-1', cm.getValue()); + helpers.assertCursorAt(0, 1); + helpers.doKeys('2',''); + eq('-3', cm.getValue()); +}, {value: '0'}); +testVim('/ search forward', function(cm, vim, helpers) { + forEach(['', ''], function(key) { + cm.setCursor(0, 0); + helpers.doKeys(key); + helpers.assertCursorAt(0, 5); + helpers.doKeys('l'); + helpers.doKeys(key); + helpers.assertCursorAt(0, 10); + cm.setCursor(0, 11); + helpers.doKeys(key); + helpers.assertCursorAt(0, 11); + }); +}, {value: '__jmp1 jmp2 jmp'}); +testVim('a', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('a'); + helpers.assertCursorAt(0, 2); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('a_eol', function(cm, vim, helpers) { + cm.setCursor(0, lines[0].length - 1); + helpers.doKeys('a'); + helpers.assertCursorAt(0, lines[0].length); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('A_endOfSelectedArea', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('v', 'j', 'l'); + helpers.doKeys('A'); + helpers.assertCursorAt(1, 2); + eq('vim-insert', cm.getOption('keyMap')); +}, {value: 'foo\nbar'}); +testVim('i', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('i'); + helpers.assertCursorAt(0, 1); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('i_repeat', function(cm, vim, helpers) { + helpers.doKeys('3', 'i'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + eq('testtesttest', cm.getValue()); + helpers.assertCursorAt(0, 11); +}, { value: '' }); +testVim('i_repeat_delete', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('2', 'i'); + cm.replaceRange('z', cm.getCursor()); + helpers.doInsertModeKeys('Backspace', 'Backspace'); + helpers.doKeys(''); + eq('abe', cm.getValue()); + helpers.assertCursorAt(0, 1); +}, { value: 'abcde' }); +testVim('insert', function(cm, vim, helpers) { + helpers.doKeys('i'); + eq('vim-insert', cm.getOption('keyMap')); + eq(false, cm.state.overwrite); + helpers.doKeys(''); + eq('vim-replace', cm.getOption('keyMap')); + eq(true, cm.state.overwrite); + helpers.doKeys(''); + eq('vim-insert', cm.getOption('keyMap')); + eq(false, cm.state.overwrite); +}); +testVim('i_backspace', function(cm, vim, helpers) { + cm.setCursor(0, 10); + helpers.doKeys('i'); + helpers.doInsertModeKeys('Backspace'); + helpers.assertCursorAt(0, 9); + eq('012345678', cm.getValue()); +}, { value: '0123456789'}); +testVim('i_overwrite_backspace', function(cm, vim, helpers) { + cm.setCursor(0, 10); + helpers.doKeys('i'); + helpers.doKeys(''); + helpers.doInsertModeKeys('Backspace'); + helpers.assertCursorAt(Pos(0, 9, "after")); + eq('0123456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('A', function(cm, vim, helpers) { + helpers.doKeys('A'); + helpers.assertCursorAt(0, lines[0].length); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('A_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', '2', 'j', 'l', 'l', 'A'); + var replacement = new Array(cm.listSelections().length+1).join('hello ').split(' '); + replacement.pop(); + cm.replaceSelections(replacement); + eq('testhello\nmehello\npleahellose', cm.getValue()); + helpers.doKeys(''); + cm.setCursor(0, 0); + helpers.doKeys('.'); + // TODO this doesn't work yet + // eq('teshellothello\nme hello hello\nplehelloahellose', cm.getValue()); +}, {value: 'test\nme\nplease'}); +testVim('I', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('I'); + helpers.assertCursorAt(0, lines[0].textStart); + eq('vim-insert', cm.getOption('keyMap')); +}); +testVim('I_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('3', 'I'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + eq('testtesttestblah', cm.getValue()); + helpers.assertCursorAt(0, 11); +}, { value: 'blah' }); +testVim('I_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '2', 'j', 'l', 'l', 'I'); + var replacement = new Array(cm.listSelections().length+1).join('hello ').split(' '); + replacement.pop(); + cm.replaceSelections(replacement); + eq('hellotest\nhellome\nhelloplease', cm.getValue()); +}, {value: 'test\nme\nplease'}); +testVim('o', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('o'); + eq('word1\n\nword2', cm.getValue()); + helpers.assertCursorAt(1, 0); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: 'word1\nword2' }); +testVim('o_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('3', 'o'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + eq('\ntest\ntest\ntest', cm.getValue()); + helpers.assertCursorAt(3, 3); +}, { value: '' }); +testVim('O', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('O'); + eq('\nword1\nword2', cm.getValue()); + helpers.assertCursorAt(0, 0); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: 'word1\nword2' }); +testVim('J', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('J'); + var expectedValue = 'word1 word2\nword3\n word4'; + eq(expectedValue, cm.getValue()); + helpers.assertCursorAt(0, expectedValue.indexOf('word2') - 1); +}, { value: 'word1 \n word2\nword3\n word4' }); +testVim('J_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('3', 'J'); + var expectedValue = 'word1 word2 word3\n word4'; + eq(expectedValue, cm.getValue()); + helpers.assertCursorAt(0, expectedValue.indexOf('word3') - 1); +}, { value: 'word1 \n word2\nword3\n word4' }); +testVim('p', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', 'abc\ndef', false); + helpers.doKeys('p'); + eq('__abc\ndef_', cm.getValue()); + helpers.assertCursorAt(1, 2); +}, { value: '___' }); +testVim('p_register', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().getRegister('a').setText('abc\ndef', false); + helpers.doKeys('"', 'a', 'p'); + eq('__abc\ndef_', cm.getValue()); + helpers.assertCursorAt(1, 2); +}, { value: '___' }); +testVim('p_wrong_register', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().getRegister('a').setText('abc\ndef', false); + helpers.doKeys('p'); + eq('___', cm.getValue()); + helpers.assertCursorAt(0, 1); +}, { value: '___' }); +testVim('p_line', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', ' a\nd\n', true); + helpers.doKeys('2', 'p'); + eq('___\n a\nd\n a\nd', cm.getValue()); + helpers.assertCursorAt(1, 2); +}, { value: '___' }); +testVim('p_lastline', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', ' a\nd', true); + helpers.doKeys('2', 'p'); + eq('___\n a\nd\n a\nd', cm.getValue()); + helpers.assertCursorAt(1, 2); +}, { value: '___' }); +testVim(']p_first_indent_is_smaller', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', ' abc\n def\n', true); + helpers.doKeys(']', 'p'); + eq(' ___\n abc\n def', cm.getValue()); +}, { value: ' ___' }); +testVim(']p_first_indent_is_larger', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', ' abc\n def\n', true); + helpers.doKeys(']', 'p'); + eq(' ___\n abc\ndef', cm.getValue()); +}, { value: ' ___' }); +testVim(']p_with_tab_indents', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', '\t\tabc\n\t\t\tdef\n', true); + helpers.doKeys(']', 'p'); + eq('\t___\n\tabc\n\t\tdef', cm.getValue()); +}, { value: '\t___', indentWithTabs: true}); +testVim(']p_with_spaces_translated_to_tabs', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', ' abc\n def\n', true); + helpers.doKeys(']', 'p'); + eq('\t___\n\tabc\n\t\tdef', cm.getValue()); +}, { value: '\t___', indentWithTabs: true, tabSize: 2 }); +testVim('[p', function(cm, vim, helpers) { + helpers.getRegisterController().pushText('"', 'yank', ' abc\n def\n', true); + helpers.doKeys('[', 'p'); + eq(' abc\n def\n ___', cm.getValue()); +}, { value: ' ___' }); +testVim('P', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', 'abc\ndef', false); + helpers.doKeys('P'); + eq('_abc\ndef__', cm.getValue()); + helpers.assertCursorAt(1, 3); +}, { value: '___' }); +testVim('P_line', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.getRegisterController().pushText('"', 'yank', ' a\nd\n', true); + helpers.doKeys('2', 'P'); + eq(' a\nd\n a\nd\n___', cm.getValue()); + helpers.assertCursorAt(0, 2); +}, { value: '___' }); +testVim('r', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('3', 'r', 'u'); + eq('wuuuet\nanother', cm.getValue(),'3r failed'); + helpers.assertCursorAt(0, 3); + cm.setCursor(0, 4); + helpers.doKeys('v', 'j', 'h', 'r', ''); + eq('wuuu \n her', cm.getValue(),'Replacing selection by space-characters failed'); + cm.setValue("ox"); + helpers.doKeys('r', ''); + eq('ox', cm.getValue()); + helpers.doKeys('r', ''); + eq('ox', cm.getValue()); + helpers.doKeys('r', ''); + eq('\nx', cm.getValue()); +}, { value: 'wordet\nanother' }); +testVim('r_visual_block', function(cm, vim, helpers) { + cm.setCursor(2, 3); + helpers.doKeys('', 'k', 'k', 'h', 'h', 'r', 'l'); + eq('1lll\n5lll\nalllefg', cm.getValue()); + helpers.doKeys('', 'l', 'j', 'r', ''); + eq('1 l\n5 l\nalllefg', cm.getValue()); + cm.setCursor(2, 0); + helpers.doKeys('o'); + helpers.doKeys(''); + cm.replaceRange('\t\t', cm.getCursor()); + helpers.doKeys('', 'h', 'h', 'r', 'r'); + eq('1 l\n5 l\nalllefg\nrrrrrrrr', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); +testVim('R', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('R'); + helpers.assertCursorAt(0, 1); + eq('vim-replace', cm.getOption('keyMap')); + is(cm.state.overwrite, 'Setting overwrite state failed'); +}); +testVim('mark', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(0, 0); + helpers.doKeys('`', 't'); + helpers.assertCursorAt(2, 2); + cm.setCursor(2, 0); + cm.replaceRange(' h', cm.getCursor()); + cm.setCursor(0, 0); + helpers.doKeys('\'', 't'); + helpers.assertCursorAt(2, 3); +}); +testVim('mark\'', function(cm, vim, helpers) { + cm.setCursor(2, 2); + cm.setCursor(0, 0); + helpers.doKeys('`', '\''); + helpers.assertCursorAt(2, 2); + cm.setCursor(2, 0); + cm.replaceRange(' h', cm.getCursor()); + cm.setCursor(0, 0); + helpers.doKeys('\'', '\''); + helpers.assertCursorAt(2, 3); +}); +testVim('jumpToMark_next', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(0, 0); + helpers.doKeys(']', '`'); + helpers.assertCursorAt(2, 2); + cm.setCursor(0, 0); + helpers.doKeys(']', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_next_repeat', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(0, 0); + helpers.doKeys('2', ']', '`'); + helpers.assertCursorAt(3, 2); + cm.setCursor(0, 0); + helpers.doKeys('2', ']', '\''); + helpers.assertCursorAt(3, 1); +}); +testVim('jumpToMark_next_sameline', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 4); + helpers.doKeys('m', 'b'); + cm.setCursor(2, 2); + helpers.doKeys(']', '`'); + helpers.assertCursorAt(2, 4); +}); +testVim('jumpToMark_next_onlyprev', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('m', 'a'); + cm.setCursor(4, 0); + helpers.doKeys(']', '`'); + helpers.assertCursorAt(4, 0); +}); +testVim('jumpToMark_next_nomark', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys(']', '`'); + helpers.assertCursorAt(2, 2); + helpers.doKeys(']', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_next_linewise_over', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(3, 4); + helpers.doKeys('m', 'b'); + cm.setCursor(2, 1); + helpers.doKeys(']', '\''); + helpers.assertCursorAt(3, 1); +}); +testVim('jumpToMark_next_action', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(0, 0); + helpers.doKeys('d', ']', '`'); + helpers.assertCursorAt(0, 0); + var actual = cm.getLine(0); + var expected = 'pop pop 0 1 2 3 4'; + eq(actual, expected, "Deleting while jumping to the next mark failed."); +}); +testVim('jumpToMark_next_line_action', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(0, 0); + helpers.doKeys('d', ']', '\''); + helpers.assertCursorAt(0, 1); + var actual = cm.getLine(0); + var expected = ' (a) [b] {c} ' + eq(actual, expected, "Deleting while jumping to the next mark line failed."); +}); +testVim('jumpToMark_prev', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 't'); + cm.setCursor(4, 0); + helpers.doKeys('[', '`'); + helpers.assertCursorAt(2, 2); + cm.setCursor(4, 0); + helpers.doKeys('[', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_prev_repeat', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(5, 0); + helpers.doKeys('2', '[', '`'); + helpers.assertCursorAt(3, 2); + cm.setCursor(5, 0); + helpers.doKeys('2', '[', '\''); + helpers.assertCursorAt(3, 1); +}); +testVim('jumpToMark_prev_sameline', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 4); + helpers.doKeys('m', 'b'); + cm.setCursor(2, 2); + helpers.doKeys('[', '`'); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_prev_onlynext', function(cm, vim, helpers) { + cm.setCursor(4, 4); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 0); + helpers.doKeys('[', '`'); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_prev_nomark', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('[', '`'); + helpers.assertCursorAt(2, 2); + helpers.doKeys('[', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('jumpToMark_prev_linewise_over', function(cm, vim, helpers) { + cm.setCursor(2, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(3, 4); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 6); + helpers.doKeys('[', '\''); + helpers.assertCursorAt(2, 0); +}); +testVim('delmark_single', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 't'); + helpers.doEx('delmarks t'); + cm.setCursor(0, 0); + helpers.doKeys('`', 't'); + helpers.assertCursorAt(0, 0); +}); +testVim('delmark_range', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'd'); + cm.setCursor(5, 2); + helpers.doKeys('m', 'e'); + helpers.doEx('delmarks b-d'); + cm.setCursor(0, 0); + helpers.doKeys('`', 'a'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'b'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'c'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'd'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'e'); + helpers.assertCursorAt(5, 2); +}); +testVim('delmark_multi', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'd'); + cm.setCursor(5, 2); + helpers.doKeys('m', 'e'); + helpers.doEx('delmarks bcd'); + cm.setCursor(0, 0); + helpers.doKeys('`', 'a'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'b'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'c'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'd'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'e'); + helpers.assertCursorAt(5, 2); +}); +testVim('delmark_multi_space', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'd'); + cm.setCursor(5, 2); + helpers.doKeys('m', 'e'); + helpers.doEx('delmarks b c d'); + cm.setCursor(0, 0); + helpers.doKeys('`', 'a'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'b'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'c'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'd'); + helpers.assertCursorAt(1, 2); + helpers.doKeys('`', 'e'); + helpers.assertCursorAt(5, 2); +}); +testVim('delmark_all', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('m', 'a'); + cm.setCursor(2, 2); + helpers.doKeys('m', 'b'); + cm.setCursor(3, 2); + helpers.doKeys('m', 'c'); + cm.setCursor(4, 2); + helpers.doKeys('m', 'd'); + cm.setCursor(5, 2); + helpers.doKeys('m', 'e'); + helpers.doEx('delmarks a b-de'); + cm.setCursor(0, 0); + helpers.doKeys('`', 'a'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('`', 'b'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('`', 'c'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('`', 'd'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('`', 'e'); + helpers.assertCursorAt(0, 0); +}); +testVim('visual', function(cm, vim, helpers) { + helpers.doKeys('l', 'v', 'l', 'l'); + helpers.assertCursorAt(0, 4); + eqCursorPos(makeCursor(0, 1), cm.getCursor('anchor')); + helpers.doKeys('d'); + eq('15', cm.getValue()); +}, { value: '12345' }); +testVim('visual_yank', function(cm, vim, helpers) { + helpers.doKeys('v', '3', 'l', 'y'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('p'); + eq('aa te test for yank', cm.getValue()); +}, { value: 'a test for yank' }) +testVim('visual_w', function(cm, vim, helpers) { + helpers.doKeys('v', 'w'); + eq(cm.getSelection(), 'motion t'); +}, { value: 'motion test'}); +testVim('visual_initial_selection', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('v'); + cm.getSelection('n'); +}, { value: 'init'}); +testVim('visual_crossover_left', function(cm, vim, helpers) { + cm.setCursor(0, 2); + helpers.doKeys('v', 'l', 'h', 'h'); + cm.getSelection('ro'); +}, { value: 'cross'}); +testVim('visual_crossover_left', function(cm, vim, helpers) { + cm.setCursor(0, 2); + helpers.doKeys('v', 'h', 'l', 'l'); + cm.getSelection('os'); +}, { value: 'cross'}); +testVim('visual_crossover_up', function(cm, vim, helpers) { + cm.setCursor(3, 2); + helpers.doKeys('v', 'j', 'k', 'k'); + eqCursorPos(Pos(2, 2), cm.getCursor('head')); + eqCursorPos(Pos(3, 3), cm.getCursor('anchor')); + helpers.doKeys('k'); + eqCursorPos(Pos(1, 2), cm.getCursor('head')); + eqCursorPos(Pos(3, 3), cm.getCursor('anchor')); +}, { value: 'cross\ncross\ncross\ncross\ncross\n'}); +testVim('visual_crossover_down', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('v', 'k', 'j', 'j'); + eqCursorPos(Pos(2, 3), cm.getCursor('head')); + eqCursorPos(Pos(1, 2), cm.getCursor('anchor')); + helpers.doKeys('j'); + eqCursorPos(Pos(3, 3), cm.getCursor('head')); + eqCursorPos(Pos(1, 2), cm.getCursor('anchor')); +}, { value: 'cross\ncross\ncross\ncross\ncross\n'}); +testVim('visual_exit', function(cm, vim, helpers) { + helpers.doKeys('', 'l', 'j', 'j', ''); + eqCursorPos(cm.getCursor('anchor'), cm.getCursor('head')); + eq(vim.visualMode, false); +}, { value: 'hello\nworld\nfoo' }); +testVim('visual_line', function(cm, vim, helpers) { + helpers.doKeys('l', 'V', 'l', 'j', 'j', 'd'); + eq(' 4\n 5', cm.getValue()); +}, { value: ' 1\n 2\n 3\n 4\n 5' }); +testVim('visual_block_move_to_eol', function(cm, vim, helpers) { + // moveToEol should move all block cursors to end of line + cm.setCursor(0, 0); + helpers.doKeys('', 'G', '$'); + var selections = cm.getSelections().join(); + eq('123,45,6', selections); + // Checks that with cursor at Infinity, finding words backwards still works. + helpers.doKeys('2', 'k', 'b'); + selections = cm.getSelections().join(); + eq('1', selections); +}, {value: '123\n45\n6'}); +testVim('visual_block_different_line_lengths', function(cm, vim, helpers) { + // test the block selection with lines of different length + // i.e. extending the selection + // till the end of the longest line. + helpers.doKeys('', 'l', 'j', 'j', '6', 'l', 'd'); + helpers.doKeys('d', 'd', 'd', 'd'); + eq('', cm.getValue()); +}, {value: '1234\n5678\nabcdefg'}); +testVim('visual_block_truncate_on_short_line', function(cm, vim, helpers) { + // check for left side selection in case + // of moving up to a shorter line. + cm.replaceRange('', cm.getCursor()); + cm.setCursor(3, 4); + helpers.doKeys('', 'l', 'k', 'k', 'd'); + eq('hello world\n{\ntis\nsa!', cm.getValue()); +}, {value: 'hello world\n{\nthis is\nsparta!'}); +testVim('visual_block_corners', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('', '2', 'l', 'k'); + // circle around the anchor + // and check the selections + var selections = cm.getSelections(); + eq('345891', selections.join('')); + helpers.doKeys('4', 'h'); + selections = cm.getSelections(); + eq('123678', selections.join('')); + helpers.doKeys('j', 'j'); + selections = cm.getSelections(); + eq('678abc', selections.join('')); + helpers.doKeys('4', 'l'); + selections = cm.getSelections(); + eq('891cde', selections.join('')); +}, {value: '12345\n67891\nabcde'}); +testVim('visual_block_mode_switch', function(cm, vim, helpers) { + // switch between visual modes + cm.setCursor(1, 1); + // blockwise to characterwise visual + helpers.doKeys('', 'j', 'l', 'v'); + var selections = cm.getSelections(); + eq('7891\nabc', selections.join('')); + // characterwise to blockwise + helpers.doKeys(''); + selections = cm.getSelections(); + eq('78bc', selections.join('')); + // blockwise to linewise visual + helpers.doKeys('V'); + selections = cm.getSelections(); + eq('67891\nabcde', selections.join('')); +}, {value: '12345\n67891\nabcde'}); +testVim('visual_block_crossing_short_line', function(cm, vim, helpers) { + // visual block with long and short lines + cm.setCursor(0, 3); + helpers.doKeys('', 'j', 'j', 'j'); + var selections = cm.getSelections().join(); + eq('4,,d,b', selections); + helpers.doKeys('3', 'k'); + selections = cm.getSelections().join(); + eq('4', selections); + helpers.doKeys('5', 'j', 'k'); + selections = cm.getSelections().join(""); + eq(10, selections.length); +}, {value: '123456\n78\nabcdefg\nfoobar\n}\n'}); +testVim('visual_block_curPos_on_exit', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '3' , 'l', ''); + eqCursorPos(makeCursor(0, 3), cm.getCursor()); + helpers.doKeys('h', '', '2' , 'j' ,'3' , 'l'); + eq(cm.getSelections().join(), "3456,,cdef"); + helpers.doKeys('4' , 'h'); + eq(cm.getSelections().join(), "23,8,bc"); + helpers.doKeys('2' , 'l'); + eq(cm.getSelections().join(), "34,,cd"); +}, {value: '123456\n78\nabcdefg\nfoobar'}); + +testVim('visual_marks', function(cm, vim, helpers) { + helpers.doKeys('l', 'v', 'l', 'l', 'j', 'j', 'v'); + // Test visual mode marks + cm.setCursor(2, 1); + helpers.doKeys('\'', '<'); + helpers.assertCursorAt(0, 1); + helpers.doKeys('\'', '>'); + helpers.assertCursorAt(2, 0); +}); +testVim('visual_join', function(cm, vim, helpers) { + helpers.doKeys('l', 'V', 'l', 'j', 'j', 'J'); + eq(' 1 2 3\n 4\n 5', cm.getValue()); + is(!vim.visualMode); +}, { value: ' 1\n 2\n 3\n 4\n 5' }); +testVim('visual_join_2', function(cm, vim, helpers) { + helpers.doKeys('G', 'V', 'g', 'g', 'J'); + eq('1 2 3 4 5 6 ', cm.getValue()); + is(!vim.visualMode); +}, { value: '1\n2\n3\n4\n5\n6\n'}); +testVim('visual_blank', function(cm, vim, helpers) { + helpers.doKeys('v', 'k'); + eq(vim.visualMode, true); +}, { value: '\n' }); +testVim('reselect_visual', function(cm, vim, helpers) { + helpers.doKeys('l', 'v', 'l', 'l', 'l', 'y', 'g', 'v'); + helpers.assertCursorAt(0, 5); + eqCursorPos(makeCursor(0, 1), cm.getCursor('anchor')); + helpers.doKeys('v'); + cm.setCursor(1, 0); + helpers.doKeys('v', 'l', 'l', 'p'); + eq('123456\n2345\nbar', cm.getValue()); + cm.setCursor(0, 0); + helpers.doKeys('g', 'v'); + // here the fake cursor is at (1, 3) + helpers.assertCursorAt(1, 4); + eqCursorPos(makeCursor(1, 0), cm.getCursor('anchor')); + helpers.doKeys('v'); + cm.setCursor(2, 0); + helpers.doKeys('v', 'l', 'l', 'g', 'v'); + helpers.assertCursorAt(1, 4); + eqCursorPos(makeCursor(1, 0), cm.getCursor('anchor')); + helpers.doKeys('g', 'v'); + helpers.assertCursorAt(2, 3); + eqCursorPos(makeCursor(2, 0), cm.getCursor('anchor')); + eq('123456\n2345\nbar', cm.getValue()); +}, { value: '123456\nfoo\nbar' }); +testVim('reselect_visual_line', function(cm, vim, helpers) { + helpers.doKeys('l', 'V', 'j', 'j', 'V', 'g', 'v', 'd'); + eq('foo\nand\nbar', cm.getValue()); + cm.setCursor(1, 0); + helpers.doKeys('V', 'y', 'j'); + helpers.doKeys('V', 'p' , 'g', 'v', 'd'); + eq('foo\nand', cm.getValue()); +}, { value: 'hello\nthis\nis\nfoo\nand\nbar' }); +testVim('reselect_visual_block', function(cm, vim, helpers) { + cm.setCursor(1, 2); + helpers.doKeys('', 'k', 'h', ''); + cm.setCursor(2, 1); + helpers.doKeys('v', 'l', 'g', 'v'); + eqCursorPos(Pos(1, 2), vim.sel.anchor); + eqCursorPos(Pos(0, 1), vim.sel.head); + // Ensure selection is done with visual block mode rather than one + // continuous range. + eq(cm.getSelections().join(''), '23oo') + helpers.doKeys('g', 'v'); + eqCursorPos(Pos(2, 1), vim.sel.anchor); + eqCursorPos(Pos(2, 2), vim.sel.head); + helpers.doKeys(''); + // Ensure selection of deleted range + cm.setCursor(1, 1); + helpers.doKeys('v', '', 'j', 'd', 'g', 'v'); + eq(cm.getSelections().join(''), 'or'); +}, { value: '123456\nfoo\nbar' }); +testVim('s_normal', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('s'); + helpers.doKeys(''); + eq('ac', cm.getValue()); +}, { value: 'abc'}); +testVim('s_visual', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('v', 's'); + helpers.doKeys(''); + helpers.assertCursorAt(0, 0); + eq('ac', cm.getValue()); +}, { value: 'abc'}); +testVim('o_visual', function(cm, vim, helpers) { + cm.setCursor(0,0); + helpers.doKeys('v','l','l','l','o'); + helpers.assertCursorAt(0,0); + helpers.doKeys('v','v','j','j','j','o'); + helpers.assertCursorAt(0,0); + helpers.doKeys('O'); + helpers.doKeys('l','l') + helpers.assertCursorAt(3, 3); + helpers.doKeys('d'); + eq('p',cm.getValue()); +}, { value: 'abcd\nefgh\nijkl\nmnop'}); +testVim('o_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('','3','j','l','l', 'o'); + eqCursorPos(Pos(3, 3), vim.sel.anchor); + eqCursorPos(Pos(0, 1), vim.sel.head); + helpers.doKeys('O'); + eqCursorPos(Pos(3, 1), vim.sel.anchor); + eqCursorPos(Pos(0, 3), vim.sel.head); + helpers.doKeys('o'); + eqCursorPos(Pos(0, 3), vim.sel.anchor); + eqCursorPos(Pos(3, 1), vim.sel.head); +}, { value: 'abcd\nefgh\nijkl\nmnop'}); +testVim('changeCase_visual', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('v', 'l', 'l'); + helpers.doKeys('U'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('v', 'l', 'l'); + helpers.doKeys('u'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('l', 'l', 'l', '.'); + helpers.assertCursorAt(0, 3); + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', 'v', 'j', 'U', 'q'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('j', '@', 'a'); + helpers.assertCursorAt(1, 0); + cm.setCursor(3, 0); + helpers.doKeys('V', 'U', 'j', '.'); + eq('ABCDEF\nGHIJKL\nMnopq\nSHORT LINE\nLONG LINE OF TEXT', cm.getValue()); +}, { value: 'abcdef\nghijkl\nmnopq\nshort line\nlong line of text'}); +testVim('changeCase_visual_block', function(cm, vim, helpers) { + cm.setCursor(2, 1); + helpers.doKeys('', 'k', 'k', 'h', 'U'); + eq('ABcdef\nGHijkl\nMNopq\nfoo', cm.getValue()); + cm.setCursor(0, 2); + helpers.doKeys('.'); + eq('ABCDef\nGHIJkl\nMNOPq\nfoo', cm.getValue()); + // check when last line is shorter. + cm.setCursor(2, 2); + helpers.doKeys('.'); + eq('ABCDef\nGHIJkl\nMNOPq\nfoO', cm.getValue()); +}, { value: 'abcdef\nghijkl\nmnopq\nfoo'}); +testVim('visual_paste', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('v', 'l', 'l', 'y'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('3', 'l', 'j', 'v', 'l', 'p'); + helpers.assertCursorAt(1, 5); + eq('this is a\nunithitest for visual paste', cm.getValue()); + cm.setCursor(0, 0); + // in case of pasting whole line + helpers.doKeys('y', 'y'); + cm.setCursor(1, 6); + helpers.doKeys('v', 'l', 'l', 'l', 'p'); + helpers.assertCursorAt(2, 0); + eq('this is a\nunithi\nthis is a\n for visual paste', cm.getValue()); +}, { value: 'this is a\nunit test for visual paste'}); + +// This checks the contents of the register used to paste the text +testVim('v_paste_from_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'w'); + cm.setCursor(1, 0); + helpers.doKeys('v', 'p'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+register/.test(text)); + }); +}, { value: 'register contents\nare not erased'}); +testVim('S_normal', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('j', 'S'); + helpers.doKeys(''); + helpers.assertCursorAt(1, 1); + eq('aa{\n \ncc', cm.getValue()); + helpers.doKeys('j', 'S'); + eq('aa{\n \n ', cm.getValue()); + helpers.assertCursorAt(2, 2); + helpers.doKeys(''); + helpers.doKeys('d', 'd', 'd', 'd'); + helpers.assertCursorAt(0, 0); + helpers.doKeys('S'); + is(vim.insertMode); + eq('', cm.getValue()); +}, { value: 'aa{\nbb\ncc'}); +testVim('blockwise_paste', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '3', 'j', 'l', 'y'); + cm.setCursor(0, 2); + // paste one char after the current cursor position + helpers.doKeys('p'); + eq('helhelo\nworwold\nfoofo\nbarba', cm.getValue()); + cm.setCursor(0, 0); + helpers.doKeys('v', '4', 'l', 'y'); + cm.setCursor(0, 0); + helpers.doKeys('', '3', 'j', 'p'); + eq('helheelhelo\norwold\noofo\narba', cm.getValue()); +}, { value: 'hello\nworld\nfoo\nbar'}); +testVim('blockwise_paste_long/short_line', function(cm, vim, helpers) { + // extend short lines in case of different line lengths. + cm.setCursor(0, 0); + helpers.doKeys('', 'j', 'j', 'y'); + cm.setCursor(0, 3); + helpers.doKeys('p'); + eq('hellho\nfoo f\nbar b', cm.getValue()); +}, { value: 'hello\nfoo\nbar'}); +testVim('blockwise_paste_cut_paste', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '2', 'j', 'x'); + cm.setCursor(0, 0); + helpers.doKeys('P'); + eq('cut\nand\npaste\nme', cm.getValue()); +}, { value: 'cut\nand\npaste\nme'}); +testVim('blockwise_paste_from_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '2', 'j', '"', 'a', 'y'); + cm.setCursor(0, 3); + helpers.doKeys('"', 'a', 'p'); + eq('foobfar\nhellho\nworlwd', cm.getValue()); +}, { value: 'foobar\nhello\nworld'}); +testVim('blockwise_paste_last_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', '2', 'j', 'l', 'y'); + cm.setCursor(3, 0); + helpers.doKeys('p'); + eq('cut\nand\npaste\nmcue\n an\n pa', cm.getValue()); +}, { value: 'cut\nand\npaste\nme'}); + +testVim('S_visual', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('v', 'j', 'S'); + helpers.doKeys(''); + helpers.assertCursorAt(0, 0); + eq('\ncc', cm.getValue()); +}, { value: 'aa\nbb\ncc'}); + +testVim('d_/', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('match'); + helpers.doKeys('2', 'd', '/'); + helpers.assertCursorAt(0, 0); + eq('match \n next', cm.getValue()); + cm.openDialog = helpers.fakeOpenDialog('2'); + helpers.doKeys('d', ':'); + // TODO eq(' next', cm.getValue()); +}, { value: 'text match match \n next' }); +testVim('/ and n/N', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('match'); + helpers.doKeys('/'); + helpers.assertCursorAt(0, 11); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 6); + helpers.doKeys('N'); + helpers.assertCursorAt(0, 11); + + cm.setCursor(0, 0); + helpers.doKeys('2', '/'); + helpers.assertCursorAt(1, 6); +}, { value: 'match nope match \n nope Match' }); +testVim('/_case', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('Match'); + helpers.doKeys('/'); + helpers.assertCursorAt(1, 6); +}, { value: 'match nope match \n nope Match' }); +testVim('/_2_pcre', function(cm, vim, helpers) { + CodeMirror.Vim.setOption('pcre', true); + cm.openDialog = helpers.fakeOpenDialog('(word){2}'); + helpers.doKeys('/'); + helpers.assertCursorAt(1, 9); + helpers.doKeys('n'); + helpers.assertCursorAt(2, 1); +}, { value: 'word\n another wordword\n wordwordword\n' }); +testVim('/_2_nopcre', function(cm, vim, helpers) { + CodeMirror.Vim.setOption('pcre', false); + cm.openDialog = helpers.fakeOpenDialog('\\(word\\)\\{2}'); + helpers.doKeys('/'); + helpers.assertCursorAt(1, 9); + helpers.doKeys('n'); + helpers.assertCursorAt(2, 1); +}, { value: 'word\n another wordword\n wordwordword\n' }); +testVim('/_nongreedy', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('aa'); + helpers.doKeys('/'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa \n a aa'}); +testVim('?_nongreedy', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('aa'); + helpers.doKeys('?'); + helpers.assertCursorAt(1, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa \n a aa'}); +testVim('/_greedy', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('a+'); + helpers.doKeys('/'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 1); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa \n a aa'}); +testVim('?_greedy', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('a+'); + helpers.doKeys('?'); + helpers.assertCursorAt(1, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 1); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa \n a aa'}); +testVim('/_greedy_0_or_more', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('a*'); + helpers.doKeys('/'); + helpers.assertCursorAt(0, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 5); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 0); + helpers.doKeys('n'); + helpers.assertCursorAt(1, 1); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa\n aa'}); +testVim('?_greedy_0_or_more', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('a*'); + helpers.doKeys('?'); + helpers.assertCursorAt(1, 1); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 5); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 3); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 0); +}, { value: 'aaa aa\n aa'}); +testVim('? and n/N', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('match'); + helpers.doKeys('?'); + helpers.assertCursorAt(1, 6); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 11); + helpers.doKeys('N'); + helpers.assertCursorAt(1, 6); + + cm.setCursor(0, 0); + helpers.doKeys('2', '?'); + helpers.assertCursorAt(0, 11); +}, { value: 'match nope match \n nope Match' }); +testVim('*', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('*'); + helpers.assertCursorAt(0, 22); + + cm.setCursor(0, 9); + helpers.doKeys('2', '*'); + helpers.assertCursorAt(1, 8); +}, { value: 'nomatch match nomatch match \nnomatch Match' }); +testVim('*_no_word', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('*'); + helpers.assertCursorAt(0, 0); +}, { value: ' \n match \n' }); +testVim('*_symbol', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('*'); + helpers.assertCursorAt(1, 0); +}, { value: ' /}\n/} match \n' }); +testVim('#', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('#'); + helpers.assertCursorAt(1, 8); + + cm.setCursor(0, 9); + helpers.doKeys('2', '#'); + helpers.assertCursorAt(0, 22); +}, { value: 'nomatch match nomatch match \nnomatch Match' }); +testVim('*_seek', function(cm, vim, helpers) { + // Should skip over space and symbols. + cm.setCursor(0, 3); + helpers.doKeys('*'); + helpers.assertCursorAt(0, 22); +}, { value: ' := match nomatch match \nnomatch Match' }); +testVim('#', function(cm, vim, helpers) { + // Should skip over space and symbols. + cm.setCursor(0, 3); + helpers.doKeys('#'); + helpers.assertCursorAt(1, 8); +}, { value: ' := match nomatch match \nnomatch Match' }); +testVim('g*', function(cm, vim, helpers) { + cm.setCursor(0, 8); + helpers.doKeys('g', '*'); + helpers.assertCursorAt(0, 18); + cm.setCursor(0, 8); + helpers.doKeys('3', 'g', '*'); + helpers.assertCursorAt(1, 8); +}, { value: 'matches match alsoMatch\nmatchme matching' }); +testVim('g#', function(cm, vim, helpers) { + cm.setCursor(0, 8); + helpers.doKeys('g', '#'); + helpers.assertCursorAt(0, 0); + cm.setCursor(0, 8); + helpers.doKeys('3', 'g', '#'); + helpers.assertCursorAt(1, 0); +}, { value: 'matches match alsoMatch\nmatchme matching' }); +testVim('macro_insert', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', '0', 'i'); + cm.replaceRange('foo', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q', '@', 'a'); + eq('foofoo', cm.getValue()); +}, { value: ''}); +testVim('macro_insert_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', '$', 'a'); + cm.replaceRange('larry.', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('a'); + cm.replaceRange('curly.', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('a'); + cm.replaceRange('moe.', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('@', 'a'); + // At this point, the most recent edit should be the 2nd insert change + // inside the macro, i.e. "curly.". + helpers.doKeys('.'); + eq('larry.curly.moe.larry.curly.curly.', cm.getValue()); +}, { value: ''}); +testVim('macro_space', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('', ''); + helpers.assertCursorAt(0, 2); + helpers.doKeys('q', 'a', '', '', 'q'); + helpers.assertCursorAt(0, 4); + helpers.doKeys('@', 'a'); + helpers.assertCursorAt(0, 6); + helpers.doKeys('@', 'a'); + helpers.assertCursorAt(0, 8); +}, { value: 'one line of text.'}); +testVim('macro_t_search', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', 't', 'e', 'q'); + helpers.assertCursorAt(0, 1); + helpers.doKeys('l', '@', 'a'); + helpers.assertCursorAt(0, 6); + helpers.doKeys('l', ';'); + helpers.assertCursorAt(0, 12); +}, { value: 'one line of text.'}); +testVim('macro_f_search', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'b', 'f', 'e', 'q'); + helpers.assertCursorAt(0, 2); + helpers.doKeys('@', 'b'); + helpers.assertCursorAt(0, 7); + helpers.doKeys(';'); + helpers.assertCursorAt(0, 13); +}, { value: 'one line of text.'}); +testVim('macro_slash_search', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'c'); + cm.openDialog = helpers.fakeOpenDialog('e'); + helpers.doKeys('/', 'q'); + helpers.assertCursorAt(0, 2); + helpers.doKeys('@', 'c'); + helpers.assertCursorAt(0, 7); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 13); +}, { value: 'one line of text.'}); +testVim('macro_multislash_search', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'd'); + cm.openDialog = helpers.fakeOpenDialog('e'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('t'); + helpers.doKeys('/', 'q'); + helpers.assertCursorAt(0, 12); + helpers.doKeys('@', 'd'); + helpers.assertCursorAt(0, 15); +}, { value: 'one line of text to rule them all.'}); +testVim('macro_last_ex_command_register', function (cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doEx('s/a/b'); + helpers.doKeys('2', '@', ':'); + eq('bbbaa', cm.getValue()); + helpers.assertCursorAt(0, 2); +}, { value: 'aaaaa'}); +testVim('macro_parens', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'z', 'i'); + cm.replaceRange('(', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('e', 'a'); + cm.replaceRange(')', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('w', '@', 'z'); + helpers.doKeys('w', '@', 'z'); + eq('(see) (spot) (run)', cm.getValue()); +}, { value: 'see spot run'}); +testVim('macro_overwrite', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'z', '0', 'i'); + cm.replaceRange('I ', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('e'); + // Now replace the macro with something else. + helpers.doKeys('q', 'z', 'a'); + cm.replaceRange('.', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('e', '@', 'z'); + helpers.doKeys('e', '@', 'z'); + eq('I see. spot. run.', cm.getValue()); +}, { value: 'see spot run'}); +testVim('macro_search_f', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', 'f', ' '); + helpers.assertCursorAt(0,3); + helpers.doKeys('q', '0'); + helpers.assertCursorAt(0,0); + helpers.doKeys('@', 'a'); + helpers.assertCursorAt(0,3); +}, { value: 'The quick brown fox jumped over the lazy dog.'}); +testVim('macro_search_2f', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', '2', 'f', ' '); + helpers.assertCursorAt(0,9); + helpers.doKeys('q', '0'); + helpers.assertCursorAt(0,0); + helpers.doKeys('@', 'a'); + helpers.assertCursorAt(0,9); +}, { value: 'The quick brown fox jumped over the lazy dog.'}); +testVim('macro_yank_tick', function(cm, vim, helpers) { + cm.setCursor(0, 0); + // Start recording a macro into the \' register. + helpers.doKeys('q', '\''); + helpers.doKeys('y', '', '', '', '', 'p'); + helpers.assertCursorAt(0,4); + eq('the tex parrot', cm.getValue()); +}, { value: 'the ex parrot'}); +testVim('yank_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'y'); + helpers.doKeys('j', '"', 'b', 'y', 'y'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foo/.test(text)); + is(/b\s+bar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_visual_block', function(cm, vim, helpers) { + cm.setCursor(0, 1); + helpers.doKeys('', 'l', 'j', '"', 'a', 'y'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+oo\nar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_append_line_to_line_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'y'); + helpers.doKeys('j', '"', 'A', 'y', 'y'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foo\nbar/.test(text)); + is(/"\s+foo\nbar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_append_word_to_word_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'w'); + helpers.doKeys('j', '"', 'A', 'y', 'w'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foobar/.test(text)); + is(/"\s+foobar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_append_line_to_word_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'w'); + helpers.doKeys('j', '"', 'A', 'y', 'y'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foo\nbar/.test(text)); + is(/"\s+foo\nbar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('yank_append_word_to_line_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('"', 'a', 'y', 'y'); + helpers.doKeys('j', '"', 'A', 'y', 'w'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+foo\nbar/.test(text)); + is(/"\s+foo\nbar/.test(text)); + }); + helpers.doKeys(':'); +}, { value: 'foo\nbar'}); +testVim('macro_register', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('q', 'a', 'i'); + cm.replaceRange('gangnam', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + helpers.doKeys('q', 'b', 'o'); + cm.replaceRange('style', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('q'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/a\s+i/.test(text)); + is(/b\s+o/.test(text)); + }); + helpers.doKeys(':'); +}, { value: ''}); +testVim('._register', function(cm,vim,helpers) { + cm.setCursor(0,0); + helpers.doKeys('i'); + cm.replaceRange('foo',cm.getCursor()); + helpers.doKeys(''); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/\.\s+foo/.test(text)); + }); + helpers.doKeys(':'); +}, {value: ''}); +testVim(':_register', function(cm,vim,helpers) { + helpers.doEx('bar'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/:\s+bar/.test(text)); + }); + helpers.doKeys(':'); +}, {value: ''}); +testVim('search_register_escape', function(cm, vim, helpers) { + // Check that the register is restored if the user escapes rather than confirms. + cm.openDialog = helpers.fakeOpenDialog('waldo'); + helpers.doKeys('/'); + var onKeyDown; + var onKeyUp; + var KEYCODES = { + f: 70, + o: 79, + Esc: 27 + }; + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + onKeyUp = options.onKeyUp; + }; + var close = function() {}; + helpers.doKeys('/'); + // Fake some keyboard events coming in. + onKeyDown({keyCode: KEYCODES.f}, '', close); + onKeyUp({keyCode: KEYCODES.f}, '', close); + onKeyDown({keyCode: KEYCODES.o}, 'f', close); + onKeyUp({keyCode: KEYCODES.o}, 'f', close); + onKeyDown({keyCode: KEYCODES.o}, 'fo', close); + onKeyUp({keyCode: KEYCODES.o}, 'fo', close); + onKeyDown({keyCode: KEYCODES.Esc}, 'foo', close); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/waldo/.test(text)); + is(!/foo/.test(text)); + }); + helpers.doKeys(':'); +}, {value: ''}); +testVim('search_register', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('foo'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('registers'); + cm.openNotification = helpers.fakeOpenNotification(function(text) { + is(/\/\s+foo/.test(text)); + }); + helpers.doKeys(':'); +}, {value: ''}); +testVim('search_history', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('this'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('checks'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('search'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('history'); + helpers.doKeys('/'); + cm.openDialog = helpers.fakeOpenDialog('checks'); + helpers.doKeys('/'); + var onKeyDown; + var onKeyUp; + var query = ''; + var keyCodes = { + Up: 38, + Down: 40 + }; + cm.openDialog = function(template, callback, options) { + onKeyUp = options.onKeyUp; + onKeyDown = options.onKeyDown; + }; + var close = function(newVal) { + if (typeof newVal == 'string') query = newVal; + } + helpers.doKeys('/'); + onKeyDown({keyCode: keyCodes.Up}, query, close); + onKeyUp({keyCode: keyCodes.Up}, query, close); + eq(query, 'checks'); + onKeyDown({keyCode: keyCodes.Up}, query, close); + onKeyUp({keyCode: keyCodes.Up}, query, close); + eq(query, 'history'); + onKeyDown({keyCode: keyCodes.Up}, query, close); + onKeyUp({keyCode: keyCodes.Up}, query, close); + eq(query, 'search'); + onKeyDown({keyCode: keyCodes.Up}, query, close); + onKeyUp({keyCode: keyCodes.Up}, query, close); + eq(query, 'this'); + onKeyDown({keyCode: keyCodes.Down}, query, close); + onKeyUp({keyCode: keyCodes.Down}, query, close); + eq(query, 'search'); +}, {value: ''}); +testVim('exCommand_history', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('registers'); + helpers.doKeys(':'); + cm.openDialog = helpers.fakeOpenDialog('sort'); + helpers.doKeys(':'); + cm.openDialog = helpers.fakeOpenDialog('map'); + helpers.doKeys(':'); + cm.openDialog = helpers.fakeOpenDialog('invalid'); + helpers.doKeys(':'); + var onKeyDown; + var onKeyUp; + var input = ''; + var keyCodes = { + Up: 38, + Down: 40, + s: 115 + }; + cm.openDialog = function(template, callback, options) { + onKeyUp = options.onKeyUp; + onKeyDown = options.onKeyDown; + }; + var close = function(newVal) { + if (typeof newVal == 'string') input = newVal; + } + helpers.doKeys(':'); + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'invalid'); + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'map'); + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'sort'); + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'registers'); + onKeyDown({keyCode: keyCodes.s}, '', close); + input = 's'; + onKeyDown({keyCode: keyCodes.Up}, input, close); + eq(input, 'sort'); +}, {value: ''}); +testVim('search_clear', function(cm, vim, helpers) { + var onKeyDown; + var input = ''; + var keyCodes = { + Ctrl: 17, + u: 85 + }; + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + }; + var close = function(newVal) { + if (typeof newVal == 'string') input = newVal; + } + helpers.doKeys('/'); + input = 'foo'; + onKeyDown({keyCode: keyCodes.Ctrl}, input, close); + onKeyDown({keyCode: keyCodes.u, ctrlKey: true}, input, close); + eq(input, ''); +}); +testVim('exCommand_clear', function(cm, vim, helpers) { + var onKeyDown; + var input = ''; + var keyCodes = { + Ctrl: 17, + u: 85 + }; + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + }; + var close = function(newVal) { + if (typeof newVal == 'string') input = newVal; + } + helpers.doKeys(':'); + input = 'foo'; + onKeyDown({keyCode: keyCodes.Ctrl}, input, close); + onKeyDown({keyCode: keyCodes.u, ctrlKey: true}, input, close); + eq(input, ''); +}); +testVim('.', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('2', 'd', 'w'); + helpers.doKeys('.'); + eq('5 6', cm.getValue()); +}, { value: '1 2 3 4 5 6'}); +testVim('._repeat', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('2', 'd', 'w'); + helpers.doKeys('3', '.'); + eq('6', cm.getValue()); +}, { value: '1 2 3 4 5 6'}); +testVim('._insert', function(cm, vim, helpers) { + helpers.doKeys('i'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('testestt', cm.getValue()); + helpers.assertCursorAt(0, 6); + helpers.doKeys('O'); + cm.replaceRange('xyz', cm.getCursor()); + helpers.doInsertModeKeys('Backspace'); + helpers.doInsertModeKeys('Down'); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('xy\nxy\ntestestt', cm.getValue()); + helpers.assertCursorAt(1, 1); +}, { value: ''}); +testVim('._insert_repeat', function(cm, vim, helpers) { + helpers.doKeys('i'); + cm.replaceRange('test', cm.getCursor()); + cm.setCursor(0, 4); + helpers.doKeys(''); + helpers.doKeys('2', '.'); + eq('testesttestt', cm.getValue()); + helpers.assertCursorAt(0, 10); +}, { value: ''}); +testVim('._repeat_insert', function(cm, vim, helpers) { + helpers.doKeys('3', 'i'); + cm.replaceRange('te', cm.getCursor()); + cm.setCursor(0, 2); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('tetettetetee', cm.getValue()); + helpers.assertCursorAt(0, 10); +}, { value: ''}); +testVim('._insert_o', function(cm, vim, helpers) { + helpers.doKeys('o'); + cm.replaceRange('z', cm.getCursor()); + cm.setCursor(1, 1); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('\nz\nz', cm.getValue()); + helpers.assertCursorAt(2, 0); +}, { value: ''}); +testVim('._insert_o_repeat', function(cm, vim, helpers) { + helpers.doKeys('o'); + cm.replaceRange('z', cm.getCursor()); + helpers.doKeys(''); + cm.setCursor(1, 0); + helpers.doKeys('2', '.'); + eq('\nz\nz\nz', cm.getValue()); + helpers.assertCursorAt(3, 0); +}, { value: ''}); +testVim('._insert_o_indent', function(cm, vim, helpers) { + helpers.doKeys('o'); + cm.replaceRange('z', cm.getCursor()); + helpers.doKeys(''); + cm.setCursor(1, 2); + helpers.doKeys('.'); + eq('{\n z\n z', cm.getValue()); + helpers.assertCursorAt(2, 2); +}, { value: '{'}); +testVim('._insert_cw', function(cm, vim, helpers) { + helpers.doKeys('c', 'w'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + cm.setCursor(0, 3); + helpers.doKeys('2', 'l'); + helpers.doKeys('.'); + eq('test test word3', cm.getValue()); + helpers.assertCursorAt(0, 8); +}, { value: 'word1 word2 word3' }); +testVim('._insert_cw_repeat', function(cm, vim, helpers) { + // For some reason, repeat cw in desktop VIM will does not repeat insert mode + // changes. Will conform to that behavior. + helpers.doKeys('c', 'w'); + cm.replaceRange('test', cm.getCursor()); + helpers.doKeys(''); + cm.setCursor(0, 4); + helpers.doKeys('l'); + helpers.doKeys('2', '.'); + eq('test test', cm.getValue()); + helpers.assertCursorAt(0, 8); +}, { value: 'word1 word2 word3' }); +testVim('._delete', function(cm, vim, helpers) { + cm.setCursor(0, 5); + helpers.doKeys('i'); + helpers.doInsertModeKeys('Backspace'); + helpers.doKeys(''); + helpers.doKeys('.'); + eq('zace', cm.getValue()); + helpers.assertCursorAt(0, 1); +}, { value: 'zabcde'}); +testVim('._delete_repeat', function(cm, vim, helpers) { + cm.setCursor(0, 6); + helpers.doKeys('i'); + helpers.doInsertModeKeys('Backspace'); + helpers.doKeys(''); + helpers.doKeys('2', '.'); + eq('zzce', cm.getValue()); + helpers.assertCursorAt(0, 1); +}, { value: 'zzabcde'}); +testVim('._visual_>', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('V', 'j', '>'); + cm.setCursor(2, 0) + helpers.doKeys('.'); + eq(' 1\n 2\n 3\n 4', cm.getValue()); + helpers.assertCursorAt(2, 2); +}, { value: '1\n2\n3\n4'}); +testVim('._replace_repeat', function(cm, vim, helpers) { + helpers.doKeys('R'); + cm.replaceRange('123', cm.getCursor(), offsetCursor(cm.getCursor(), 0, 3)); + cm.setCursor(0, 3); + helpers.doKeys(''); + helpers.doKeys('2', '.'); + eq('12123123\nabcdefg', cm.getValue()); + helpers.assertCursorAt(0, 7); + cm.setCursor(1, 0); + helpers.doKeys('.'); + eq('12123123\n123123g', cm.getValue()); + helpers.doKeys('l', '"', '.', 'p'); + eq('12123123\n123123g123', cm.getValue()); +}, { value: 'abcdef\nabcdefg'}); +testVim('f;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('f', 'x'); + helpers.doKeys(';'); + helpers.doKeys('2', ';'); + eq(9, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('F;', function(cm, vim, helpers) { + cm.setCursor(0, 8); + helpers.doKeys('F', 'x'); + helpers.doKeys(';'); + helpers.doKeys('2', ';'); + eq(2, cm.getCursor().ch); +}, { value: '01x3xx6x8x'}); +testVim('t;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('t', 'x'); + helpers.doKeys(';'); + helpers.doKeys('2', ';'); + eq(8, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('T;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('T', 'x'); + helpers.doKeys(';'); + helpers.doKeys('2', ';'); + eq(2, cm.getCursor().ch); +}, { value: '0xx3xx678x'}); +testVim('f,', function(cm, vim, helpers) { + cm.setCursor(0, 6); + helpers.doKeys('f', 'x'); + helpers.doKeys(','); + helpers.doKeys('2', ','); + eq(2, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('F,', function(cm, vim, helpers) { + cm.setCursor(0, 3); + helpers.doKeys('F', 'x'); + helpers.doKeys(','); + helpers.doKeys('2', ','); + eq(9, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('t,', function(cm, vim, helpers) { + cm.setCursor(0, 6); + helpers.doKeys('t', 'x'); + helpers.doKeys(','); + helpers.doKeys('2', ','); + eq(3, cm.getCursor().ch); +}, { value: '01x3xx678x'}); +testVim('T,', function(cm, vim, helpers) { + cm.setCursor(0, 4); + helpers.doKeys('T', 'x'); + helpers.doKeys(','); + helpers.doKeys('2', ','); + eq(8, cm.getCursor().ch); +}, { value: '01x3xx67xx'}); +testVim('fd,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('f', '4'); + cm.setCursor(0, 0); + helpers.doKeys('d', ';'); + eq('56789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('d', ','); + eq('01239', cm.getValue()); +}, { value: '0123456789'}); +testVim('Fd,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('F', '4'); + cm.setCursor(0, 9); + helpers.doKeys('d', ';'); + eq('01239', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('d', ','); + eq('56789', cm.getValue()); +}, { value: '0123456789'}); +testVim('td,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('t', '4'); + cm.setCursor(0, 0); + helpers.doKeys('d', ';'); + eq('456789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('d', ','); + eq('012349', cm.getValue()); +}, { value: '0123456789'}); +testVim('Td,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('T', '4'); + cm.setCursor(0, 9); + helpers.doKeys('d', ';'); + eq('012349', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('d', ','); + eq('456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('fc,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('f', '4'); + cm.setCursor(0, 0); + helpers.doKeys('c', ';', ''); + eq('56789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('c', ','); + eq('01239', cm.getValue()); +}, { value: '0123456789'}); +testVim('Fc,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('F', '4'); + cm.setCursor(0, 9); + helpers.doKeys('c', ';', ''); + eq('01239', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('c', ','); + eq('56789', cm.getValue()); +}, { value: '0123456789'}); +testVim('tc,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('t', '4'); + cm.setCursor(0, 0); + helpers.doKeys('c', ';', ''); + eq('456789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('c', ','); + eq('012349', cm.getValue()); +}, { value: '0123456789'}); +testVim('Tc,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('T', '4'); + cm.setCursor(0, 9); + helpers.doKeys('c', ';', ''); + eq('012349', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('c', ','); + eq('456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('fy,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('f', '4'); + cm.setCursor(0, 0); + helpers.doKeys('y', ';', 'P'); + eq('012340123456789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('y', ',', 'P'); + eq('012345678456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('Fy,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('F', '4'); + cm.setCursor(0, 9); + helpers.doKeys('y', ';', 'p'); + eq('012345678945678', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('y', ',', 'P'); + eq('012340123456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('ty,;', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys('t', '4'); + cm.setCursor(0, 0); + helpers.doKeys('y', ';', 'P'); + eq('01230123456789', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 9); + helpers.doKeys('y', ',', 'p'); + eq('01234567895678', cm.getValue()); +}, { value: '0123456789'}); +testVim('Ty,;', function(cm, vim, helpers) { + cm.setCursor(0, 9); + helpers.doKeys('T', '4'); + cm.setCursor(0, 9); + helpers.doKeys('y', ';', 'p'); + eq('01234567895678', cm.getValue()); + helpers.doKeys('u'); + cm.setCursor(0, 0); + helpers.doKeys('y', ',', 'P'); + eq('01230123456789', cm.getValue()); +}, { value: '0123456789'}); +testVim('HML', function(cm, vim, helpers) { + var lines = 35; + var textHeight = cm.defaultTextHeight(); + cm.setSize(600, lines*textHeight); + cm.setCursor(120, 0); + helpers.doKeys('H'); + helpers.assertCursorAt(86, 2); + helpers.doKeys('L'); + helpers.assertCursorAt(120, 4); + helpers.doKeys('M'); + helpers.assertCursorAt(103,4); +}, { value: (function(){ + var lines = new Array(100); + var upper = ' xx\n'; + var lower = ' xx\n'; + upper = lines.join(upper); + lower = lines.join(lower); + return upper + lower; +})()}); + +var zVals = []; +forEach(['zb','zz','zt','z-','z.','z'], function(e, idx){ + var lineNum = 250; + var lines = 35; + testVim(e, function(cm, vim, helpers) { + var k1 = e[0]; + var k2 = e.substring(1); + var textHeight = cm.defaultTextHeight(); + cm.setSize(600, lines*textHeight); + cm.setCursor(lineNum, 0); + helpers.doKeys(k1, k2); + zVals[idx] = cm.getScrollInfo().top; + }, { value: (function(){ + return new Array(500).join('\n'); + })()}); +}); +testVim('zb_to_bottom', function(cm, vim, helpers){ + var lineNum = 250; + cm.setSize(600, 35*cm.defaultTextHeight()); + cm.setCursor(lineNum, 0); + helpers.doKeys('z', 'b'); + var scrollInfo = cm.getScrollInfo(); + eq(scrollInfo.top + scrollInfo.clientHeight, cm.charCoords(Pos(lineNum, 0), 'local').bottom); +}, { value: (function(){ + return new Array(500).join('\n'); +})()}); +testVim('zt_to_top', function(cm, vim, helpers){ + var lineNum = 250; + cm.setSize(600, 35*cm.defaultTextHeight()); + cm.setCursor(lineNum, 0); + helpers.doKeys('z', 't'); + eq(cm.getScrollInfo().top, cm.charCoords(Pos(lineNum, 0), 'local').top); +}, { value: (function(){ + return new Array(500).join('\n'); +})()}); +testVim('zb', function(cm, vim, helpers){ + eq(zVals[2], zVals[5]); +}); + +var moveTillCharacterSandbox = + 'The quick brown fox \n'; +testVim('moveTillCharacter', function(cm, vim, helpers){ + cm.setCursor(0, 0); + // Search for the 'q'. + cm.openDialog = helpers.fakeOpenDialog('q'); + helpers.doKeys('/'); + eq(4, cm.getCursor().ch); + // Jump to just before the first o in the list. + helpers.doKeys('t'); + helpers.doKeys('o'); + eq('The quick brown fox \n', cm.getValue()); + // Delete that one character. + helpers.doKeys('d'); + helpers.doKeys('t'); + helpers.doKeys('o'); + eq('The quick bown fox \n', cm.getValue()); + // Delete everything until the next 'o'. + helpers.doKeys('.'); + eq('The quick box \n', cm.getValue()); + // An unmatched character should have no effect. + helpers.doKeys('d'); + helpers.doKeys('t'); + helpers.doKeys('q'); + eq('The quick box \n', cm.getValue()); + // Matches should only be possible on single lines. + helpers.doKeys('d'); + helpers.doKeys('t'); + helpers.doKeys('z'); + eq('The quick box \n', cm.getValue()); + // After all that, the search for 'q' should still be active, so the 'N' command + // can run it again in reverse. Use that to delete everything back to the 'q'. + helpers.doKeys('d'); + helpers.doKeys('N'); + eq('The ox \n', cm.getValue()); + eq(4, cm.getCursor().ch); +}, { value: moveTillCharacterSandbox}); +testVim('searchForPipe', function(cm, vim, helpers){ + CodeMirror.Vim.setOption('pcre', false); + cm.setCursor(0, 0); + // Search for the '|'. + cm.openDialog = helpers.fakeOpenDialog('|'); + helpers.doKeys('/'); + eq(4, cm.getCursor().ch); +}, { value: 'this|that'}); + + +var scrollMotionSandbox = + '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'; +testVim('scrollMotion', function(cm, vim, helpers){ + var prevCursor, prevScrollInfo; + cm.setCursor(0, 0); + // ctrl-y at the top of the file should have no effect. + helpers.doKeys(''); + eq(0, cm.getCursor().line); + prevScrollInfo = cm.getScrollInfo(); + helpers.doKeys(''); + eq(1, cm.getCursor().line); + is(prevScrollInfo.top < cm.getScrollInfo().top); + // Jump to the end of the sandbox. + cm.setCursor(1000, 0); + prevCursor = cm.getCursor(); + // ctrl-e at the bottom of the file should have no effect. + helpers.doKeys(''); + eq(prevCursor.line, cm.getCursor().line); + prevScrollInfo = cm.getScrollInfo(); + helpers.doKeys(''); + eq(prevCursor.line - 1, cm.getCursor().line, "Y"); + is(prevScrollInfo.top > cm.getScrollInfo().top); +}, { value: scrollMotionSandbox}); + +var squareBracketMotionSandbox = ''+ + '({\n'+//0 + ' ({\n'+//11 + ' /*comment {\n'+//2 + ' */(\n'+//3 + '#else \n'+//4 + ' /* )\n'+//5 + '#if }\n'+//6 + ' )}*/\n'+//7 + ')}\n'+//8 + '{}\n'+//9 + '#else {{\n'+//10 + '{}\n'+//11 + '}\n'+//12 + '{\n'+//13 + '#endif\n'+//14 + '}\n'+//15 + '}\n'+//16 + '#else';//17 +testVim('[[, ]]', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys(']', ']'); + helpers.assertCursorAt(9,0); + helpers.doKeys('2', ']', ']'); + helpers.assertCursorAt(13,0); + helpers.doKeys(']', ']'); + helpers.assertCursorAt(17,0); + helpers.doKeys('[', '['); + helpers.assertCursorAt(13,0); + helpers.doKeys('2', '[', '['); + helpers.assertCursorAt(9,0); + helpers.doKeys('[', '['); + helpers.assertCursorAt(0,0); +}, { value: squareBracketMotionSandbox}); +testVim('[], ][', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doKeys(']', '['); + helpers.assertCursorAt(12,0); + helpers.doKeys('2', ']', '['); + helpers.assertCursorAt(16,0); + helpers.doKeys(']', '['); + helpers.assertCursorAt(17,0); + helpers.doKeys('[', ']'); + helpers.assertCursorAt(16,0); + helpers.doKeys('2', '[', ']'); + helpers.assertCursorAt(12,0); + helpers.doKeys('[', ']'); + helpers.assertCursorAt(0,0); +}, { value: squareBracketMotionSandbox}); +testVim('[{, ]}', function(cm, vim, helpers) { + cm.setCursor(4, 10); + helpers.doKeys('[', '{'); + helpers.assertCursorAt(2,12); + helpers.doKeys('2', '[', '{'); + helpers.assertCursorAt(0,1); + cm.setCursor(4, 10); + helpers.doKeys(']', '}'); + helpers.assertCursorAt(6,11); + helpers.doKeys('2', ']', '}'); + helpers.assertCursorAt(8,1); + cm.setCursor(0,1); + helpers.doKeys(']', '}'); + helpers.assertCursorAt(8,1); + helpers.doKeys('[', '{'); + helpers.assertCursorAt(0,1); +}, { value: squareBracketMotionSandbox}); +testVim('[(, ])', function(cm, vim, helpers) { + cm.setCursor(4, 10); + helpers.doKeys('[', '('); + helpers.assertCursorAt(3,14); + helpers.doKeys('2', '[', '('); + helpers.assertCursorAt(0,0); + cm.setCursor(4, 10); + helpers.doKeys(']', ')'); + helpers.assertCursorAt(5,11); + helpers.doKeys('2', ']', ')'); + helpers.assertCursorAt(8,0); + helpers.doKeys('[', '('); + helpers.assertCursorAt(0,0); + helpers.doKeys(']', ')'); + helpers.assertCursorAt(8,0); +}, { value: squareBracketMotionSandbox}); +testVim('[*, ]*, [/, ]/', function(cm, vim, helpers) { + forEach(['*', '/'], function(key){ + cm.setCursor(7, 0); + helpers.doKeys('2', '[', key); + helpers.assertCursorAt(2,2); + helpers.doKeys('2', ']', key); + helpers.assertCursorAt(7,5); + }); +}, { value: squareBracketMotionSandbox}); +testVim('[#, ]#', function(cm, vim, helpers) { + cm.setCursor(10, 3); + helpers.doKeys('2', '[', '#'); + helpers.assertCursorAt(4,0); + helpers.doKeys('5', ']', '#'); + helpers.assertCursorAt(17,0); + cm.setCursor(10, 3); + helpers.doKeys(']', '#'); + helpers.assertCursorAt(14,0); +}, { value: squareBracketMotionSandbox}); +testVim('[m, ]m, [M, ]M', function(cm, vim, helpers) { + cm.setCursor(11, 0); + helpers.doKeys('[', 'm'); + helpers.assertCursorAt(10,7); + helpers.doKeys('4', '[', 'm'); + helpers.assertCursorAt(1,3); + helpers.doKeys('5', ']', 'm'); + helpers.assertCursorAt(11,0); + helpers.doKeys('[', 'M'); + helpers.assertCursorAt(9,1); + helpers.doKeys('3', ']', 'M'); + helpers.assertCursorAt(15,0); + helpers.doKeys('5', '[', 'M'); + helpers.assertCursorAt(7,3); +}, { value: squareBracketMotionSandbox}); + +testVim('i_indent_right', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedValue = ' word1\nword2\nword3 '; + helpers.doKeys('i', ''); + eq(expectedValue, cm.getValue()); + helpers.assertCursorAt(0, 5); +}, { value: ' word1\nword2\nword3 ', indentUnit: 2 }); +testVim('i_indent_left', function(cm, vim, helpers) { + cm.setCursor(0, 3); + var expectedValue = ' word1\nword2\nword3 '; + helpers.doKeys('i', ''); + eq(expectedValue, cm.getValue()); + helpers.assertCursorAt(0, 1); +}, { value: ' word1\nword2\nword3 ', indentUnit: 2 }); + +// Ex mode tests +testVim('ex_go_to_line', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doEx('4'); + helpers.assertCursorAt(3, 0); +}, { value: 'a\nb\nc\nd\ne\n'}); +testVim('ex_go_to_mark', function(cm, vim, helpers) { + cm.setCursor(3, 0); + helpers.doKeys('m', 'a'); + cm.setCursor(0, 0); + helpers.doEx('\'a'); + helpers.assertCursorAt(3, 0); +}, { value: 'a\nb\nc\nd\ne\n'}); +testVim('ex_go_to_line_offset', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doEx('+3'); + helpers.assertCursorAt(3, 0); + helpers.doEx('-1'); + helpers.assertCursorAt(2, 0); + helpers.doEx('.2'); + helpers.assertCursorAt(4, 0); + helpers.doEx('.-3'); + helpers.assertCursorAt(1, 0); +}, { value: 'a\nb\nc\nd\ne\n'}); +testVim('ex_go_to_mark_offset', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('m', 'a'); + cm.setCursor(0, 0); + helpers.doEx('\'a1'); + helpers.assertCursorAt(3, 0); + helpers.doEx('\'a-1'); + helpers.assertCursorAt(1, 0); + helpers.doEx('\'a+2'); + helpers.assertCursorAt(4, 0); +}, { value: 'a\nb\nc\nd\ne\n'}); +testVim('ex_write', function(cm, vim, helpers) { + var tmp = CodeMirror.commands.save; + var written; + var actualCm; + CodeMirror.commands.save = function(cm) { + written = true; + actualCm = cm; + }; + // Test that w, wr, wri ... write all trigger :write. + var command = 'write'; + for (var i = 1; i < command.length; i++) { + written = false; + actualCm = null; + helpers.doEx(command.substring(0, i)); + eq(written, true); + eq(actualCm, cm); + } + CodeMirror.commands.save = tmp; +}); +testVim('ex_sort', function(cm, vim, helpers) { + helpers.doEx('sort'); + eq('Z\na\nb\nc\nd', cm.getValue()); +}, { value: 'b\nZ\nd\nc\na'}); +testVim('ex_sort_reverse', function(cm, vim, helpers) { + helpers.doEx('sort!'); + eq('d\nc\nb\na', cm.getValue()); +}, { value: 'b\nd\nc\na'}); +testVim('ex_sort_range', function(cm, vim, helpers) { + helpers.doEx('2,3sort'); + eq('b\nc\nd\na', cm.getValue()); +}, { value: 'b\nd\nc\na'}); +testVim('ex_sort_oneline', function(cm, vim, helpers) { + helpers.doEx('2sort'); + // Expect no change. + eq('b\nd\nc\na', cm.getValue()); +}, { value: 'b\nd\nc\na'}); +testVim('ex_sort_ignoreCase', function(cm, vim, helpers) { + helpers.doEx('sort i'); + eq('a\nb\nc\nd\nZ', cm.getValue()); +}, { value: 'b\nZ\nd\nc\na'}); +testVim('ex_sort_unique', function(cm, vim, helpers) { + helpers.doEx('sort u'); + eq('Z\na\nb\nc\nd', cm.getValue()); +}, { value: 'b\nZ\na\na\nd\na\nc\na'}); +testVim('ex_sort_decimal', function(cm, vim, helpers) { + helpers.doEx('sort d'); + eq('d3\n s5\n6\n.9', cm.getValue()); +}, { value: '6\nd3\n s5\n.9'}); +testVim('ex_sort_decimal_negative', function(cm, vim, helpers) { + helpers.doEx('sort d'); + eq('z-9\nd3\n s5\n6\n.9', cm.getValue()); +}, { value: '6\nd3\n s5\n.9\nz-9'}); +testVim('ex_sort_decimal_reverse', function(cm, vim, helpers) { + helpers.doEx('sort! d'); + eq('.9\n6\n s5\nd3', cm.getValue()); +}, { value: '6\nd3\n s5\n.9'}); +testVim('ex_sort_hex', function(cm, vim, helpers) { + helpers.doEx('sort x'); + eq(' s5\n6\n.9\n&0xB\nd3', cm.getValue()); +}, { value: '6\nd3\n s5\n&0xB\n.9'}); +testVim('ex_sort_octal', function(cm, vim, helpers) { + helpers.doEx('sort o'); + eq('.9\n.8\nd3\n s5\n6', cm.getValue()); +}, { value: '6\nd3\n s5\n.9\n.8'}); +testVim('ex_sort_decimal_mixed', function(cm, vim, helpers) { + helpers.doEx('sort d'); + eq('z\ny\nc1\nb2\na3', cm.getValue()); +}, { value: 'a3\nz\nc1\ny\nb2'}); +testVim('ex_sort_decimal_mixed_reverse', function(cm, vim, helpers) { + helpers.doEx('sort! d'); + eq('a3\nb2\nc1\nz\ny', cm.getValue()); +}, { value: 'a3\nz\nc1\ny\nb2'}); +testVim('ex_sort_pattern_alpha', function(cm, vim, helpers) { + helpers.doEx('sort /[a-z]/'); + eq('a3\nb2\nc1\ny\nz', cm.getValue()); +}, { value: 'z\ny\nc1\nb2\na3'}); +testVim('ex_sort_pattern_alpha_reverse', function(cm, vim, helpers) { + helpers.doEx('sort! /[a-z]/'); + eq('z\ny\nc1\nb2\na3', cm.getValue()); +}, { value: 'z\ny\nc1\nb2\na3'}); +testVim('ex_sort_pattern_alpha_ignoreCase', function(cm, vim, helpers) { + helpers.doEx('sort i/[a-z]/'); + eq('a3\nb2\nC1\nY\nz', cm.getValue()); +}, { value: 'z\nY\nC1\nb2\na3'}); +testVim('ex_sort_pattern_alpha_longer', function(cm, vim, helpers) { + helpers.doEx('sort /[a-z]+/'); + eq('a\naa\nab\nade\nadele\nadelle\nadriana\nalex\nalexandra\nb\nc\ny\nz', cm.getValue()); +}, { value: 'z\nab\naa\nade\nadelle\nalexandra\nalex\nadriana\nadele\ny\nc\nb\na'}); +testVim('ex_sort_pattern_alpha_only', function(cm, vim, helpers) { + helpers.doEx('sort /^[a-z]$/'); + eq('z1\ny2\na3\nb\nc', cm.getValue()); +}, { value: 'z1\ny2\na3\nc\nb'}); +testVim('ex_sort_pattern_alpha_only_reverse', function(cm, vim, helpers) { + helpers.doEx('sort! /^[a-z]$/'); + eq('c\nb\nz1\ny2\na3', cm.getValue()); +}, { value: 'z1\ny2\na3\nc\nb'}); +testVim('ex_sort_pattern_alpha_num', function(cm, vim, helpers) { + helpers.doEx('sort /[a-z][0-9]/'); + eq('c\nb\na3\ny2\nz1', cm.getValue()); +}, { value: 'z1\ny2\na3\nc\nb'}); +// test for :global command +testVim('ex_global', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doEx('g/one/s//two'); + eq('two two\n two two\n two two', cm.getValue()); + helpers.doEx('1,2g/two/s//one'); + eq('one one\n one one\n two two', cm.getValue()); +}, {value: 'one one\n one one\n one one'}); +testVim('ex_global_confirm', function(cm, vim, helpers) { + cm.setCursor(0, 0); + var onKeyDown; + var openDialogSave = cm.openDialog; + var KEYCODES = { + a: 65, + n: 78, + q: 81, + y: 89 + }; + // Intercept the ex command, 'global' + cm.openDialog = function(template, callback, options) { + // Intercept the prompt for the embedded ex command, 'substitute' + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + }; + callback('g/one/s//two/gc'); + }; + helpers.doKeys(':'); + var close = function() {}; + onKeyDown({keyCode: KEYCODES.n}, '', close); + onKeyDown({keyCode: KEYCODES.y}, '', close); + onKeyDown({keyCode: KEYCODES.a}, '', close); + onKeyDown({keyCode: KEYCODES.q}, '', close); + onKeyDown({keyCode: KEYCODES.y}, '', close); + eq('one two\n two two\n one one\n two one\n one one', cm.getValue()); +}, {value: 'one one\n one one\n one one\n one one\n one one'}); +// Basic substitute tests. +testVim('ex_substitute_same_line', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doEx('s/one/two/g'); + eq('one one\n two two', cm.getValue()); +}, { value: 'one one\n one one'}); +testVim('ex_substitute_full_file', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doEx('%s/one/two/g'); + eq('two two\n two two', cm.getValue()); +}, { value: 'one one\n one one'}); +testVim('ex_substitute_input_range', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doEx('1,3s/\\d/0/g'); + eq('0\n0\n0\n4', cm.getValue()); +}, { value: '1\n2\n3\n4' }); +testVim('ex_substitute_range_current_to_input', function(cm, vim, helpers) { + cm.setCursor(1, 0); + helpers.doEx('.,3s/\\d/0/g'); + eq('1\n0\n0\n4', cm.getValue()); +}, { value: '1\n2\n3\n4' }); +testVim('ex_substitute_range_input_to_current', function(cm, vim, helpers) { + cm.setCursor(3, 0); + helpers.doEx('2,.s/\\d/0/g'); + eq('1\n0\n0\n0\n5', cm.getValue()); +}, { value: '1\n2\n3\n4\n5' }); +testVim('ex_substitute_range_offset', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doEx('-1,+1s/\\d/0/g'); + eq('1\n0\n0\n0\n5', cm.getValue()); +}, { value: '1\n2\n3\n4\n5' }); +testVim('ex_substitute_range_implicit_offset', function(cm, vim, helpers) { + cm.setCursor(0, 0); + helpers.doEx('.1,.3s/\\d/0/g'); + eq('1\n0\n0\n0\n5', cm.getValue()); +}, { value: '1\n2\n3\n4\n5' }); +testVim('ex_substitute_to_eof', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doEx('.,$s/\\d/0/g'); + eq('1\n2\n0\n0\n0', cm.getValue()); +}, { value: '1\n2\n3\n4\n5' }); +testVim('ex_substitute_to_relative_eof', function(cm, vim, helpers) { + cm.setCursor(4, 0); + helpers.doEx('2,$-2s/\\d/0/g'); + eq('1\n0\n0\n4\n5', cm.getValue()); +}, { value: '1\n2\n3\n4\n5' }); +testVim('ex_substitute_range_mark', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('ma'); + cm.setCursor(0, 0); + helpers.doEx('.,\'as/\\d/0/g'); + eq('0\n0\n0\n4\n5', cm.getValue()); +}, { value: '1\n2\n3\n4\n5' }); +testVim('ex_substitute_range_mark_offset', function(cm, vim, helpers) { + cm.setCursor(2, 0); + helpers.doKeys('ma'); + cm.setCursor(0, 0); + helpers.doEx('\'a-1,\'a+1s/\\d/0/g'); + eq('1\n0\n0\n0\n5', cm.getValue()); +}, { value: '1\n2\n3\n4\n5' }); +testVim('ex_substitute_visual_range', function(cm, vim, helpers) { + cm.setCursor(1, 0); + // Set last visual mode selection marks '< and '> at lines 2 and 4 + helpers.doKeys('V', '2', 'j', 'v'); + helpers.doEx('\'<,\'>s/\\d/0/g'); + eq('1\n0\n0\n0\n5', cm.getValue()); +}, { value: '1\n2\n3\n4\n5' }); +testVim('ex_substitute_empty_query', function(cm, vim, helpers) { + // If the query is empty, use last query. + cm.setCursor(1, 0); + cm.openDialog = helpers.fakeOpenDialog('1'); + helpers.doKeys('/'); + helpers.doEx('s//b/g'); + eq('abb ab2 ab3', cm.getValue()); +}, { value: 'a11 a12 a13' }); +testVim('ex_substitute_javascript', function(cm, vim, helpers) { + CodeMirror.Vim.setOption('pcre', false); + cm.setCursor(1, 0); + // Throw all the things that javascript likes to treat as special values + // into the replace part. All should be literal (this is VIM). + helpers.doEx('s/\\(\\d+\\)/$$ $\' $` $& \\1/g') + eq('a $$ $\' $` $& 0 b', cm.getValue()); +}, { value: 'a 0 b' }); +testVim('ex_substitute_empty_arguments', function(cm,vim,helpers) { + cm.setCursor(0, 0); + helpers.doEx('s/a/b/g'); + cm.setCursor(1, 0); + helpers.doEx('s'); + eq('b b\nb a', cm.getValue()); +}, {value: 'a a\na a'}); + +// More complex substitute tests that test both pcre and nopcre options. +function testSubstitute(name, options) { + testVim(name + '_pcre', function(cm, vim, helpers) { + cm.setCursor(1, 0); + CodeMirror.Vim.setOption('pcre', true); + helpers.doEx(options.expr); + eq(options.expectedValue, cm.getValue()); + }, options); + // If no noPcreExpr is defined, assume that it's the same as the expr. + var noPcreExpr = options.noPcreExpr ? options.noPcreExpr : options.expr; + testVim(name + '_nopcre', function(cm, vim, helpers) { + cm.setCursor(1, 0); + CodeMirror.Vim.setOption('pcre', false); + helpers.doEx(noPcreExpr); + eq(options.expectedValue, cm.getValue()); + }, options); +} +testSubstitute('ex_substitute_capture', { + value: 'a11 a12 a13', + expectedValue: 'a1111 a1212 a1313', + // $n is a backreference + expr: 's/(\\d+)/$1$1/g', + // \n is a backreference. + noPcreExpr: 's/\\(\\d+\\)/\\1\\1/g'}); +testSubstitute('ex_substitute_capture2', { + value: 'a 0 b', + expectedValue: 'a $00 b', + expr: 's/(\\d+)/$$$1$1/g', + noPcreExpr: 's/\\(\\d+\\)/$\\1\\1/g'}); +testSubstitute('ex_substitute_nocapture', { + value: 'a11 a12 a13', + expectedValue: 'a$1$1 a$1$1 a$1$1', + expr: 's/(\\d+)/$$1$$1/g', + noPcreExpr: 's/\\(\\d+\\)/$1$1/g'}); +testSubstitute('ex_substitute_nocapture2', { + value: 'a 0 b', + expectedValue: 'a $10 b', + expr: 's/(\\d+)/$$1$1/g', + noPcreExpr: 's/\\(\\d+\\)/\\$1\\1/g'}); +testSubstitute('ex_substitute_nocapture', { + value: 'a b c', + expectedValue: 'a $ c', + expr: 's/b/$$/', + noPcreExpr: 's/b/$/'}); +testSubstitute('ex_substitute_slash_regex', { + value: 'one/two \n three/four', + expectedValue: 'one|two \n three|four', + expr: '%s/\\//|'}); +testSubstitute('ex_substitute_pipe_regex', { + value: 'one|two \n three|four', + expectedValue: 'one,two \n three,four', + expr: '%s/\\|/,/', + noPcreExpr: '%s/|/,/'}); +testSubstitute('ex_substitute_or_regex', { + value: 'one|two \n three|four', + expectedValue: 'ana|twa \n thraa|faar', + expr: '%s/o|e|u/a/g', + noPcreExpr: '%s/o\\|e\\|u/a/g'}); +testSubstitute('ex_substitute_or_word_regex', { + value: 'one|two \n three|four', + expectedValue: 'five|five \n three|four', + expr: '%s/(one|two)/five/g', + noPcreExpr: '%s/\\(one\\|two\\)/five/g'}); +testSubstitute('ex_substitute_backslashslash_regex', { + value: 'one\\two \n three\\four', + expectedValue: 'one,two \n three,four', + expr: '%s/\\\\/,'}); +testSubstitute('ex_substitute_slash_replacement', { + value: 'one,two \n three,four', + expectedValue: 'one/two \n three/four', + expr: '%s/,/\\/'}); +testSubstitute('ex_substitute_backslash_replacement', { + value: 'one,two \n three,four', + expectedValue: 'one\\two \n three\\four', + expr: '%s/,/\\\\/g'}); +testSubstitute('ex_substitute_multibackslash_replacement', { + value: 'one,two \n three,four', + expectedValue: 'one\\\\\\\\two \n three\\\\\\\\four', // 2*8 backslashes. + expr: '%s/,/\\\\\\\\\\\\\\\\/g'}); // 16 backslashes. +testSubstitute('ex_substitute_dollar_match', { + value: 'one,two \n three,four', + expectedValue: 'one,two ,\n three,four', + expr: '%s/$/,/g'}); +testSubstitute('ex_substitute_newline_match', { + value: 'one,two \n three,four', + expectedValue: 'one,two , three,four', + expr: '%s/\\n/,/g'}); +testSubstitute('ex_substitute_newline_replacement', { + value: 'one,two \n three,four', + expectedValue: 'one\ntwo \n three\nfour', + expr: '%s/,/\\n/g'}); +testSubstitute('ex_substitute_braces_word', { + value: 'ababab abb ab{2}', + expectedValue: 'ab abb ab{2}', + expr: '%s/(ab){2}//g', + noPcreExpr: '%s/\\(ab\\)\\{2\\}//g'}); +testSubstitute('ex_substitute_braces_range', { + value: 'a aa aaa aaaa', + expectedValue: 'a a', + expr: '%s/a{2,3}//g', + noPcreExpr: '%s/a\\{2,3\\}//g'}); +testSubstitute('ex_substitute_braces_literal', { + value: 'ababab abb ab{2}', + expectedValue: 'ababab abb ', + expr: '%s/ab\\{2\\}//g', + noPcreExpr: '%s/ab{2}//g'}); +testSubstitute('ex_substitute_braces_char', { + value: 'ababab abb ab{2}', + expectedValue: 'ababab ab{2}', + expr: '%s/ab{2}//g', + noPcreExpr: '%s/ab\\{2\\}//g'}); +testSubstitute('ex_substitute_braces_no_escape', { + value: 'ababab abb ab{2}', + expectedValue: 'ababab ab{2}', + expr: '%s/ab{2}//g', + noPcreExpr: '%s/ab\\{2}//g'}); +testSubstitute('ex_substitute_count', { + value: '1\n2\n3\n4', + expectedValue: '1\n0\n0\n4', + expr: 's/\\d/0/i 2'}); +testSubstitute('ex_substitute_count_with_range', { + value: '1\n2\n3\n4', + expectedValue: '1\n2\n0\n0', + expr: '1,3s/\\d/0/ 3'}); +testSubstitute('ex_substitute_not_global', { + value: 'aaa\nbaa\ncaa', + expectedValue: 'xaa\nbxa\ncxa', + expr: '%s/a/x/'}); +function testSubstituteConfirm(name, command, initialValue, expectedValue, keys, finalPos) { + testVim(name, function(cm, vim, helpers) { + var savedOpenDialog = cm.openDialog; + var savedKeyName = CodeMirror.keyName; + var onKeyDown; + var recordedCallback; + var closed = true; // Start out closed, set false on second openDialog. + function close() { + closed = true; + } + // First openDialog should save callback. + cm.openDialog = function(template, callback, options) { + recordedCallback = callback; + } + // Do first openDialog. + helpers.doKeys(':'); + // Second openDialog should save keyDown handler. + cm.openDialog = function(template, callback, options) { + onKeyDown = options.onKeyDown; + closed = false; + }; + // Return the command to Vim and trigger second openDialog. + recordedCallback(command); + // The event should really use keyCode, but here just mock it out and use + // key and replace keyName to just return key. + CodeMirror.keyName = function (e) { return e.key; } + keys = keys.toUpperCase(); + for (var i = 0; i < keys.length; i++) { + is(!closed); + onKeyDown({ key: keys.charAt(i) }, '', close); + } + try { + eq(expectedValue, cm.getValue()); + helpers.assertCursorAt(finalPos); + is(closed); + } catch(e) { + throw e + } finally { + // Restore overridden functions. + CodeMirror.keyName = savedKeyName; + cm.openDialog = savedOpenDialog; + } + }, { value: initialValue }); +}; +testSubstituteConfirm('ex_substitute_confirm_emptydoc', + '%s/x/b/c', '', '', '', makeCursor(0, 0)); +testSubstituteConfirm('ex_substitute_confirm_nomatch', + '%s/x/b/c', 'ba a\nbab', 'ba a\nbab', '', makeCursor(0, 0)); +testSubstituteConfirm('ex_substitute_confirm_accept', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbbb', 'yyy', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_random_keys', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbbb', 'ysdkywerty', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_some', + '%s/a/b/cg', 'ba a\nbab', 'bb a\nbbb', 'yny', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_all', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbbb', 'a', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_accept_then_all', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbbb', 'ya', makeCursor(1, 1)); +testSubstituteConfirm('ex_substitute_confirm_quit', + '%s/a/b/cg', 'ba a\nbab', 'bb a\nbab', 'yq', makeCursor(0, 3)); +testSubstituteConfirm('ex_substitute_confirm_last', + '%s/a/b/cg', 'ba a\nbab', 'bb b\nbab', 'yl', makeCursor(0, 3)); +testSubstituteConfirm('ex_substitute_confirm_oneline', + '1s/a/b/cg', 'ba a\nbab', 'bb b\nbab', 'yl', makeCursor(0, 3)); +testSubstituteConfirm('ex_substitute_confirm_range_accept', + '1,2s/a/b/cg', 'aa\na \na\na', 'bb\nb \na\na', 'yyy', makeCursor(1, 0)); +testSubstituteConfirm('ex_substitute_confirm_range_some', + '1,3s/a/b/cg', 'aa\na \na\na', 'ba\nb \nb\na', 'ynyy', makeCursor(2, 0)); +testSubstituteConfirm('ex_substitute_confirm_range_all', + '1,3s/a/b/cg', 'aa\na \na\na', 'bb\nb \nb\na', 'a', makeCursor(2, 0)); +testSubstituteConfirm('ex_substitute_confirm_range_last', + '1,3s/a/b/cg', 'aa\na \na\na', 'bb\nb \na\na', 'yyl', makeCursor(1, 0)); +//:noh should clear highlighting of search-results but allow to resume search through n +testVim('ex_noh_clearSearchHighlight', function(cm, vim, helpers) { + cm.openDialog = helpers.fakeOpenDialog('match'); + helpers.doKeys('?'); + helpers.doEx('noh'); + eq(vim.searchState_.getOverlay(),null,'match-highlighting wasn\'t cleared'); + helpers.doKeys('n'); + helpers.assertCursorAt(0, 11,'can\'t resume search after clearing highlighting'); +}, { value: 'match nope match \n nope Match' }); +testVim('ex_yank', function (cm, vim, helpers) { + var curStart = makeCursor(3, 0); + cm.setCursor(curStart); + helpers.doEx('y'); + var register = helpers.getRegisterController().getRegister(); + var line = cm.getLine(3); + eq(line + '\n', register.toString()); +}); +testVim('set_boolean', function(cm, vim, helpers) { + CodeMirror.Vim.defineOption('testoption', true, 'boolean'); + // Test default value is set. + is(CodeMirror.Vim.getOption('testoption')); + try { + // Test fail to set to non-boolean + CodeMirror.Vim.setOption('testoption', '5'); + fail(); + } catch (expected) {} + // Test setOption + CodeMirror.Vim.setOption('testoption', false); + is(!CodeMirror.Vim.getOption('testoption')); +}); +testVim('ex_set_boolean', function(cm, vim, helpers) { + CodeMirror.Vim.defineOption('testoption', true, 'boolean'); + // Test default value is set. + is(CodeMirror.Vim.getOption('testoption')); + try { + // Test fail to set to non-boolean + helpers.doEx('set testoption=22'); + fail(); + } catch (expected) {} + // Test setOption + helpers.doEx('set notestoption'); + is(!CodeMirror.Vim.getOption('testoption')); +}); +testVim('set_string', function(cm, vim, helpers) { + CodeMirror.Vim.defineOption('testoption', 'a', 'string'); + // Test default value is set. + eq('a', CodeMirror.Vim.getOption('testoption')); + try { + // Test fail to set non-string. + CodeMirror.Vim.setOption('testoption', true); + fail(); + } catch (expected) {} + try { + // Test fail to set 'notestoption' + CodeMirror.Vim.setOption('notestoption', 'b'); + fail(); + } catch (expected) {} + // Test setOption + CodeMirror.Vim.setOption('testoption', 'c'); + eq('c', CodeMirror.Vim.getOption('testoption')); +}); +testVim('ex_set_string', function(cm, vim, helpers) { + CodeMirror.Vim.defineOption('testopt', 'a', 'string'); + // Test default value is set. + eq('a', CodeMirror.Vim.getOption('testopt')); + try { + // Test fail to set 'notestopt' + helpers.doEx('set notestopt=b'); + fail(); + } catch (expected) {} + // Test setOption + helpers.doEx('set testopt=c') + eq('c', CodeMirror.Vim.getOption('testopt')); + helpers.doEx('set testopt=c') + eq('c', CodeMirror.Vim.getOption('testopt', cm)); //local || global + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); // local + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); // global + eq('c', CodeMirror.Vim.getOption('testopt')); // global + // Test setOption global + helpers.doEx('setg testopt=d') + eq('c', CodeMirror.Vim.getOption('testopt', cm)); + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); + eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); + eq('d', CodeMirror.Vim.getOption('testopt')); + // Test setOption local + helpers.doEx('setl testopt=e') + eq('e', CodeMirror.Vim.getOption('testopt', cm)); + eq('e', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); + eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); + eq('d', CodeMirror.Vim.getOption('testopt')); +}); +testVim('ex_set_callback', function(cm, vim, helpers) { + var global; + + function cb(val, cm, cfg) { + if (val === undefined) { + // Getter + if (cm) { + return cm._local; + } else { + return global; + } + } else { + // Setter + if (cm) { + cm._local = val; + } else { + global = val; + } + } + } + + CodeMirror.Vim.defineOption('testopt', 'a', 'string', cb); + // Test default value is set. + eq('a', CodeMirror.Vim.getOption('testopt')); + try { + // Test fail to set 'notestopt' + helpers.doEx('set notestopt=b'); + fail(); + } catch (expected) {} + // Test setOption (Identical to the string tests, but via callback instead) + helpers.doEx('set testopt=c') + eq('c', CodeMirror.Vim.getOption('testopt', cm)); //local || global + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); // local + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); // global + eq('c', CodeMirror.Vim.getOption('testopt')); // global + // Test setOption global + helpers.doEx('setg testopt=d') + eq('c', CodeMirror.Vim.getOption('testopt', cm)); + eq('c', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); + eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); + eq('d', CodeMirror.Vim.getOption('testopt')); + // Test setOption local + helpers.doEx('setl testopt=e') + eq('e', CodeMirror.Vim.getOption('testopt', cm)); + eq('e', CodeMirror.Vim.getOption('testopt', cm, {scope: 'local'})); + eq('d', CodeMirror.Vim.getOption('testopt', cm, {scope: 'global'})); + eq('d', CodeMirror.Vim.getOption('testopt')); +}) +testVim('ex_set_filetype', function(cm, vim, helpers) { + CodeMirror.defineMode('test_mode', function() { + return {token: function(stream) { + stream.match(/^\s+|^\S+/); + }}; + }); + CodeMirror.defineMode('test_mode_2', function() { + return {token: function(stream) { + stream.match(/^\s+|^\S+/); + }}; + }); + // Test mode is set. + helpers.doEx('set filetype=test_mode'); + eq('test_mode', cm.getMode().name); + // Test 'ft' alias also sets mode. + helpers.doEx('set ft=test_mode_2'); + eq('test_mode_2', cm.getMode().name); +}); +testVim('ex_set_filetype_null', function(cm, vim, helpers) { + CodeMirror.defineMode('test_mode', function() { + return {token: function(stream) { + stream.match(/^\s+|^\S+/); + }}; + }); + cm.setOption('mode', 'test_mode'); + // Test mode is set to null. + helpers.doEx('set filetype='); + eq('null', cm.getMode().name); +}); +// TODO: Reset key maps after each test. +testVim('ex_map_key2key', function(cm, vim, helpers) { + helpers.doEx('map a x'); + helpers.doKeys('a'); + helpers.assertCursorAt(0, 0); + eq('bc', cm.getValue()); +}, { value: 'abc' }); +testVim('ex_unmap_key2key', function(cm, vim, helpers) { + helpers.doEx('unmap a'); + helpers.doKeys('a'); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: 'abc' }); +testVim('ex_unmap_key2key_does_not_remove_default', function(cm, vim, helpers) { + try { + helpers.doEx('unmap a'); + fail(); + } catch (expected) {} + helpers.doKeys('a'); + eq('vim-insert', cm.getOption('keyMap')); +}, { value: 'abc' }); +testVim('ex_map_key2key_to_colon', function(cm, vim, helpers) { + helpers.doEx('map ; :'); + var dialogOpened = false; + cm.openDialog = function() { + dialogOpened = true; + } + helpers.doKeys(';'); + eq(dialogOpened, true); +}); +testVim('ex_map_ex2key:', function(cm, vim, helpers) { + helpers.doEx('map :del x'); + helpers.doEx('del'); + helpers.assertCursorAt(0, 0); + eq('bc', cm.getValue()); +}, { value: 'abc' }); +testVim('ex_map_ex2ex', function(cm, vim, helpers) { + helpers.doEx('map :del :w'); + var tmp = CodeMirror.commands.save; + var written = false; + var actualCm; + CodeMirror.commands.save = function(cm) { + written = true; + actualCm = cm; + }; + helpers.doEx('del'); + CodeMirror.commands.save = tmp; + eq(written, true); + eq(actualCm, cm); +}); +testVim('ex_map_key2ex', function(cm, vim, helpers) { + helpers.doEx('map a :w'); + var tmp = CodeMirror.commands.save; + var written = false; + var actualCm; + CodeMirror.commands.save = function(cm) { + written = true; + actualCm = cm; + }; + helpers.doKeys('a'); + CodeMirror.commands.save = tmp; + eq(written, true); + eq(actualCm, cm); +}); +testVim('ex_map_key2key_visual_api', function(cm, vim, helpers) { + CodeMirror.Vim.map('b', ':w', 'visual'); + var tmp = CodeMirror.commands.save; + var written = false; + var actualCm; + CodeMirror.commands.save = function(cm) { + written = true; + actualCm = cm; + }; + // Mapping should not work in normal mode. + helpers.doKeys('b'); + eq(written, false); + // Mapping should work in visual mode. + helpers.doKeys('v', 'b'); + eq(written, true); + eq(actualCm, cm); + + CodeMirror.commands.save = tmp; +}); +testVim('ex_imap', function(cm, vim, helpers) { + CodeMirror.Vim.map('jk', '', 'insert'); + helpers.doKeys('i'); + is(vim.insertMode); + helpers.doKeys('j', 'k'); + is(!vim.insertMode); + cm.setCursor(0, 1); + CodeMirror.Vim.map('jj', '', 'insert'); + helpers.doKeys('', '2', 'j', 'l', 'c'); + var replacement = fillArray('fo', 3); + cm.replaceSelections(replacement); + eq('1fo4\n5fo8\nafodefg', cm.getValue()); + helpers.doKeys('j', 'j'); + cm.setCursor(0, 0); + helpers.doKeys('.'); + eq('foo4\nfoo8\nfoodefg', cm.getValue()); +}, { value: '1234\n5678\nabcdefg' }); +testVim('ex_unmap_api', function(cm, vim, helpers) { + CodeMirror.Vim.map('', 'gg', 'normal'); + is(CodeMirror.Vim.handleKey(cm, "", "normal"), "Alt-X key is mapped"); + CodeMirror.Vim.unmap("", "normal"); + is(!CodeMirror.Vim.handleKey(cm, "", "normal"), "Alt-X key is unmapped"); +}); + +// Testing registration of functions as ex-commands and mapping to -keys +testVim('ex_api_test', function(cm, vim, helpers) { + var res=false; + var val='from'; + CodeMirror.Vim.defineEx('extest','ext',function(cm,params){ + if(params.args)val=params.args[0]; + else res=true; + }); + helpers.doEx(':ext to'); + eq(val,'to','Defining ex-command failed'); + CodeMirror.Vim.map('',':ext'); + helpers.doKeys('',''); + is(res,'Mapping to key failed'); +}); +// For now, this test needs to be last because it messes up : for future tests. +testVim('ex_map_key2key_from_colon', function(cm, vim, helpers) { + helpers.doEx('map : x'); + helpers.doKeys(':'); + helpers.assertCursorAt(0, 0); + eq('bc', cm.getValue()); +}, { value: 'abc' }); + +// Test event handlers +testVim('beforeSelectionChange', function(cm, vim, helpers) { + cm.setCursor(0, 100); + eqCursorPos(cm.getCursor('head'), cm.getCursor('anchor')); +}, { value: 'abc' }); + + diff --git a/global/codemirror/theme/3024-day.css b/global/codemirror/theme/3024-day.css new file mode 100644 index 00000000..71326553 --- /dev/null +++ b/global/codemirror/theme/3024-day.css @@ -0,0 +1,41 @@ +/* + + Name: 3024 day + Author: Jan T. Sott (http://github.com/idleberg) + + CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) + Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) + +*/ + +.cm-s-3024-day.CodeMirror { background: #f7f7f7; color: #3a3432; } +.cm-s-3024-day div.CodeMirror-selected { background: #d6d5d4; } + +.cm-s-3024-day .CodeMirror-line::selection, .cm-s-3024-day .CodeMirror-line > span::selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d6d5d4; } +.cm-s-3024-day .CodeMirror-line::-moz-selection, .cm-s-3024-day .CodeMirror-line > span::-moz-selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d9d9d9; } + +.cm-s-3024-day .CodeMirror-gutters { background: #f7f7f7; border-right: 0px; } +.cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; } +.cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; } +.cm-s-3024-day .CodeMirror-linenumber { color: #807d7c; } + +.cm-s-3024-day .CodeMirror-cursor { border-left: 1px solid #5c5855; } + +.cm-s-3024-day span.cm-comment { color: #cdab53; } +.cm-s-3024-day span.cm-atom { color: #a16a94; } +.cm-s-3024-day span.cm-number { color: #a16a94; } + +.cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute { color: #01a252; } +.cm-s-3024-day span.cm-keyword { color: #db2d20; } +.cm-s-3024-day span.cm-string { color: #fded02; } + +.cm-s-3024-day span.cm-variable { color: #01a252; } +.cm-s-3024-day span.cm-variable-2 { color: #01a0e4; } +.cm-s-3024-day span.cm-def { color: #e8bbd0; } +.cm-s-3024-day span.cm-bracket { color: #3a3432; } +.cm-s-3024-day span.cm-tag { color: #db2d20; } +.cm-s-3024-day span.cm-link { color: #a16a94; } +.cm-s-3024-day span.cm-error { background: #db2d20; color: #5c5855; } + +.cm-s-3024-day .CodeMirror-activeline-background { background: #e8f2ff; } +.cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important; } diff --git a/global/codemirror/theme/3024-night.css b/global/codemirror/theme/3024-night.css new file mode 100644 index 00000000..adc5900a --- /dev/null +++ b/global/codemirror/theme/3024-night.css @@ -0,0 +1,39 @@ +/* + + Name: 3024 night + Author: Jan T. Sott (http://github.com/idleberg) + + CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) + Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) + +*/ + +.cm-s-3024-night.CodeMirror { background: #090300; color: #d6d5d4; } +.cm-s-3024-night div.CodeMirror-selected { background: #3a3432; } +.cm-s-3024-night .CodeMirror-line::selection, .cm-s-3024-night .CodeMirror-line > span::selection, .cm-s-3024-night .CodeMirror-line > span > span::selection { background: rgba(58, 52, 50, .99); } +.cm-s-3024-night .CodeMirror-line::-moz-selection, .cm-s-3024-night .CodeMirror-line > span::-moz-selection, .cm-s-3024-night .CodeMirror-line > span > span::-moz-selection { background: rgba(58, 52, 50, .99); } +.cm-s-3024-night .CodeMirror-gutters { background: #090300; border-right: 0px; } +.cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; } +.cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; } +.cm-s-3024-night .CodeMirror-linenumber { color: #5c5855; } + +.cm-s-3024-night .CodeMirror-cursor { border-left: 1px solid #807d7c; } + +.cm-s-3024-night span.cm-comment { color: #cdab53; } +.cm-s-3024-night span.cm-atom { color: #a16a94; } +.cm-s-3024-night span.cm-number { color: #a16a94; } + +.cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute { color: #01a252; } +.cm-s-3024-night span.cm-keyword { color: #db2d20; } +.cm-s-3024-night span.cm-string { color: #fded02; } + +.cm-s-3024-night span.cm-variable { color: #01a252; } +.cm-s-3024-night span.cm-variable-2 { color: #01a0e4; } +.cm-s-3024-night span.cm-def { color: #e8bbd0; } +.cm-s-3024-night span.cm-bracket { color: #d6d5d4; } +.cm-s-3024-night span.cm-tag { color: #db2d20; } +.cm-s-3024-night span.cm-link { color: #a16a94; } +.cm-s-3024-night span.cm-error { background: #db2d20; color: #807d7c; } + +.cm-s-3024-night .CodeMirror-activeline-background { background: #2F2F2F; } +.cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } diff --git a/global/codemirror/theme/abcdef.css b/global/codemirror/theme/abcdef.css new file mode 100644 index 00000000..cf935309 --- /dev/null +++ b/global/codemirror/theme/abcdef.css @@ -0,0 +1,32 @@ +.cm-s-abcdef.CodeMirror { background: #0f0f0f; color: #defdef; } +.cm-s-abcdef div.CodeMirror-selected { background: #515151; } +.cm-s-abcdef .CodeMirror-line::selection, .cm-s-abcdef .CodeMirror-line > span::selection, .cm-s-abcdef .CodeMirror-line > span > span::selection { background: rgba(56, 56, 56, 0.99); } +.cm-s-abcdef .CodeMirror-line::-moz-selection, .cm-s-abcdef .CodeMirror-line > span::-moz-selection, .cm-s-abcdef .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 56, 56, 0.99); } +.cm-s-abcdef .CodeMirror-gutters { background: #555; border-right: 2px solid #314151; } +.cm-s-abcdef .CodeMirror-guttermarker { color: #222; } +.cm-s-abcdef .CodeMirror-guttermarker-subtle { color: azure; } +.cm-s-abcdef .CodeMirror-linenumber { color: #FFFFFF; } +.cm-s-abcdef .CodeMirror-cursor { border-left: 1px solid #00FF00; } + +.cm-s-abcdef span.cm-keyword { color: darkgoldenrod; font-weight: bold; } +.cm-s-abcdef span.cm-atom { color: #77F; } +.cm-s-abcdef span.cm-number { color: violet; } +.cm-s-abcdef span.cm-def { color: #fffabc; } +.cm-s-abcdef span.cm-variable { color: #abcdef; } +.cm-s-abcdef span.cm-variable-2 { color: #cacbcc; } +.cm-s-abcdef span.cm-variable-3, .cm-s-abcdef span.cm-type { color: #def; } +.cm-s-abcdef span.cm-property { color: #fedcba; } +.cm-s-abcdef span.cm-operator { color: #ff0; } +.cm-s-abcdef span.cm-comment { color: #7a7b7c; font-style: italic;} +.cm-s-abcdef span.cm-string { color: #2b4; } +.cm-s-abcdef span.cm-meta { color: #C9F; } +.cm-s-abcdef span.cm-qualifier { color: #FFF700; } +.cm-s-abcdef span.cm-builtin { color: #30aabc; } +.cm-s-abcdef span.cm-bracket { color: #8a8a8a; } +.cm-s-abcdef span.cm-tag { color: #FFDD44; } +.cm-s-abcdef span.cm-attribute { color: #DDFF00; } +.cm-s-abcdef span.cm-error { color: #FF0000; } +.cm-s-abcdef span.cm-header { color: aquamarine; font-weight: bold; } +.cm-s-abcdef span.cm-link { color: blueviolet; } + +.cm-s-abcdef .CodeMirror-activeline-background { background: #314151; } diff --git a/global/codemirror/theme/ambiance-mobile.css b/global/codemirror/theme/ambiance-mobile.css new file mode 100644 index 00000000..88d332e1 --- /dev/null +++ b/global/codemirror/theme/ambiance-mobile.css @@ -0,0 +1,5 @@ +.cm-s-ambiance.CodeMirror { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} diff --git a/global/codemirror/theme/ambiance.css b/global/codemirror/theme/ambiance.css new file mode 100644 index 00000000..782fca43 --- /dev/null +++ b/global/codemirror/theme/ambiance.css @@ -0,0 +1,74 @@ +/* ambiance theme for codemirror */ + +/* Color scheme */ + +.cm-s-ambiance .cm-header { color: blue; } +.cm-s-ambiance .cm-quote { color: #24C2C7; } + +.cm-s-ambiance .cm-keyword { color: #cda869; } +.cm-s-ambiance .cm-atom { color: #CF7EA9; } +.cm-s-ambiance .cm-number { color: #78CF8A; } +.cm-s-ambiance .cm-def { color: #aac6e3; } +.cm-s-ambiance .cm-variable { color: #ffb795; } +.cm-s-ambiance .cm-variable-2 { color: #eed1b3; } +.cm-s-ambiance .cm-variable-3, .cm-s-ambiance .cm-type { color: #faded3; } +.cm-s-ambiance .cm-property { color: #eed1b3; } +.cm-s-ambiance .cm-operator { color: #fa8d6a; } +.cm-s-ambiance .cm-comment { color: #555; font-style:italic; } +.cm-s-ambiance .cm-string { color: #8f9d6a; } +.cm-s-ambiance .cm-string-2 { color: #9d937c; } +.cm-s-ambiance .cm-meta { color: #D2A8A1; } +.cm-s-ambiance .cm-qualifier { color: yellow; } +.cm-s-ambiance .cm-builtin { color: #9999cc; } +.cm-s-ambiance .cm-bracket { color: #24C2C7; } +.cm-s-ambiance .cm-tag { color: #fee4ff; } +.cm-s-ambiance .cm-attribute { color: #9B859D; } +.cm-s-ambiance .cm-hr { color: pink; } +.cm-s-ambiance .cm-link { color: #F4C20B; } +.cm-s-ambiance .cm-special { color: #FF9D00; } +.cm-s-ambiance .cm-error { color: #AF2018; } + +.cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; } +.cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; } + +.cm-s-ambiance div.CodeMirror-selected { background: rgba(255, 255, 255, 0.15); } +.cm-s-ambiance.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } +.cm-s-ambiance .CodeMirror-line::selection, .cm-s-ambiance .CodeMirror-line > span::selection, .cm-s-ambiance .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } +.cm-s-ambiance .CodeMirror-line::-moz-selection, .cm-s-ambiance .CodeMirror-line > span::-moz-selection, .cm-s-ambiance .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } + +/* Editor styling */ + +.cm-s-ambiance.CodeMirror { + line-height: 1.40em; + color: #E6E1DC; + background-color: #202020; + -webkit-box-shadow: inset 0 0 10px black; + -moz-box-shadow: inset 0 0 10px black; + box-shadow: inset 0 0 10px black; +} + +.cm-s-ambiance .CodeMirror-gutters { + background: #3D3D3D; + border-right: 1px solid #4D4D4D; + box-shadow: 0 10px 20px black; +} + +.cm-s-ambiance .CodeMirror-linenumber { + text-shadow: 0px 1px 1px #4d4d4d; + color: #111; + padding: 0 5px; +} + +.cm-s-ambiance .CodeMirror-guttermarker { color: #aaa; } +.cm-s-ambiance .CodeMirror-guttermarker-subtle { color: #111; } + +.cm-s-ambiance .CodeMirror-cursor { border-left: 1px solid #7991E8; } + +.cm-s-ambiance .CodeMirror-activeline-background { + background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031); +} + +.cm-s-ambiance.CodeMirror, +.cm-s-ambiance .CodeMirror-gutters { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC"); +} diff --git a/global/codemirror/theme/base16-dark.css b/global/codemirror/theme/base16-dark.css new file mode 100644 index 00000000..026a8168 --- /dev/null +++ b/global/codemirror/theme/base16-dark.css @@ -0,0 +1,38 @@ +/* + + Name: Base16 Default Dark + Author: Chris Kempson (http://chriskempson.com) + + CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) + Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) + +*/ + +.cm-s-base16-dark.CodeMirror { background: #151515; color: #e0e0e0; } +.cm-s-base16-dark div.CodeMirror-selected { background: #303030; } +.cm-s-base16-dark .CodeMirror-line::selection, .cm-s-base16-dark .CodeMirror-line > span::selection, .cm-s-base16-dark .CodeMirror-line > span > span::selection { background: rgba(48, 48, 48, .99); } +.cm-s-base16-dark .CodeMirror-line::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(48, 48, 48, .99); } +.cm-s-base16-dark .CodeMirror-gutters { background: #151515; border-right: 0px; } +.cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; } +.cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; } +.cm-s-base16-dark .CodeMirror-linenumber { color: #505050; } +.cm-s-base16-dark .CodeMirror-cursor { border-left: 1px solid #b0b0b0; } + +.cm-s-base16-dark span.cm-comment { color: #8f5536; } +.cm-s-base16-dark span.cm-atom { color: #aa759f; } +.cm-s-base16-dark span.cm-number { color: #aa759f; } + +.cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute { color: #90a959; } +.cm-s-base16-dark span.cm-keyword { color: #ac4142; } +.cm-s-base16-dark span.cm-string { color: #f4bf75; } + +.cm-s-base16-dark span.cm-variable { color: #90a959; } +.cm-s-base16-dark span.cm-variable-2 { color: #6a9fb5; } +.cm-s-base16-dark span.cm-def { color: #d28445; } +.cm-s-base16-dark span.cm-bracket { color: #e0e0e0; } +.cm-s-base16-dark span.cm-tag { color: #ac4142; } +.cm-s-base16-dark span.cm-link { color: #aa759f; } +.cm-s-base16-dark span.cm-error { background: #ac4142; color: #b0b0b0; } + +.cm-s-base16-dark .CodeMirror-activeline-background { background: #202020; } +.cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } diff --git a/global/codemirror/theme/base16-light.css b/global/codemirror/theme/base16-light.css new file mode 100644 index 00000000..474e0ca9 --- /dev/null +++ b/global/codemirror/theme/base16-light.css @@ -0,0 +1,38 @@ +/* + + Name: Base16 Default Light + Author: Chris Kempson (http://chriskempson.com) + + CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) + Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) + +*/ + +.cm-s-base16-light.CodeMirror { background: #f5f5f5; color: #202020; } +.cm-s-base16-light div.CodeMirror-selected { background: #e0e0e0; } +.cm-s-base16-light .CodeMirror-line::selection, .cm-s-base16-light .CodeMirror-line > span::selection, .cm-s-base16-light .CodeMirror-line > span > span::selection { background: #e0e0e0; } +.cm-s-base16-light .CodeMirror-line::-moz-selection, .cm-s-base16-light .CodeMirror-line > span::-moz-selection, .cm-s-base16-light .CodeMirror-line > span > span::-moz-selection { background: #e0e0e0; } +.cm-s-base16-light .CodeMirror-gutters { background: #f5f5f5; border-right: 0px; } +.cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; } +.cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; } +.cm-s-base16-light .CodeMirror-linenumber { color: #b0b0b0; } +.cm-s-base16-light .CodeMirror-cursor { border-left: 1px solid #505050; } + +.cm-s-base16-light span.cm-comment { color: #8f5536; } +.cm-s-base16-light span.cm-atom { color: #aa759f; } +.cm-s-base16-light span.cm-number { color: #aa759f; } + +.cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute { color: #90a959; } +.cm-s-base16-light span.cm-keyword { color: #ac4142; } +.cm-s-base16-light span.cm-string { color: #f4bf75; } + +.cm-s-base16-light span.cm-variable { color: #90a959; } +.cm-s-base16-light span.cm-variable-2 { color: #6a9fb5; } +.cm-s-base16-light span.cm-def { color: #d28445; } +.cm-s-base16-light span.cm-bracket { color: #202020; } +.cm-s-base16-light span.cm-tag { color: #ac4142; } +.cm-s-base16-light span.cm-link { color: #aa759f; } +.cm-s-base16-light span.cm-error { background: #ac4142; color: #505050; } + +.cm-s-base16-light .CodeMirror-activeline-background { background: #DDDCDC; } +.cm-s-base16-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } diff --git a/global/codemirror/theme/bespin.css b/global/codemirror/theme/bespin.css new file mode 100644 index 00000000..60913ba9 --- /dev/null +++ b/global/codemirror/theme/bespin.css @@ -0,0 +1,34 @@ +/* + + Name: Bespin + Author: Mozilla / Jan T. Sott + + CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) + Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) + +*/ + +.cm-s-bespin.CodeMirror {background: #28211c; color: #9d9b97;} +.cm-s-bespin div.CodeMirror-selected {background: #36312e !important;} +.cm-s-bespin .CodeMirror-gutters {background: #28211c; border-right: 0px;} +.cm-s-bespin .CodeMirror-linenumber {color: #666666;} +.cm-s-bespin .CodeMirror-cursor {border-left: 1px solid #797977 !important;} + +.cm-s-bespin span.cm-comment {color: #937121;} +.cm-s-bespin span.cm-atom {color: #9b859d;} +.cm-s-bespin span.cm-number {color: #9b859d;} + +.cm-s-bespin span.cm-property, .cm-s-bespin span.cm-attribute {color: #54be0d;} +.cm-s-bespin span.cm-keyword {color: #cf6a4c;} +.cm-s-bespin span.cm-string {color: #f9ee98;} + +.cm-s-bespin span.cm-variable {color: #54be0d;} +.cm-s-bespin span.cm-variable-2 {color: #5ea6ea;} +.cm-s-bespin span.cm-def {color: #cf7d34;} +.cm-s-bespin span.cm-error {background: #cf6a4c; color: #797977;} +.cm-s-bespin span.cm-bracket {color: #9d9b97;} +.cm-s-bespin span.cm-tag {color: #cf6a4c;} +.cm-s-bespin span.cm-link {color: #9b859d;} + +.cm-s-bespin .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} +.cm-s-bespin .CodeMirror-activeline-background { background: #404040; } diff --git a/global/codemirror/theme/blackboard.css b/global/codemirror/theme/blackboard.css new file mode 100644 index 00000000..b6eaedb1 --- /dev/null +++ b/global/codemirror/theme/blackboard.css @@ -0,0 +1,32 @@ +/* Port of TextMate's Blackboard theme */ + +.cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; } +.cm-s-blackboard div.CodeMirror-selected { background: #253B76; } +.cm-s-blackboard .CodeMirror-line::selection, .cm-s-blackboard .CodeMirror-line > span::selection, .cm-s-blackboard .CodeMirror-line > span > span::selection { background: rgba(37, 59, 118, .99); } +.cm-s-blackboard .CodeMirror-line::-moz-selection, .cm-s-blackboard .CodeMirror-line > span::-moz-selection, .cm-s-blackboard .CodeMirror-line > span > span::-moz-selection { background: rgba(37, 59, 118, .99); } +.cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; } +.cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; } +.cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; } +.cm-s-blackboard .CodeMirror-linenumber { color: #888; } +.cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7; } + +.cm-s-blackboard .cm-keyword { color: #FBDE2D; } +.cm-s-blackboard .cm-atom { color: #D8FA3C; } +.cm-s-blackboard .cm-number { color: #D8FA3C; } +.cm-s-blackboard .cm-def { color: #8DA6CE; } +.cm-s-blackboard .cm-variable { color: #FF6400; } +.cm-s-blackboard .cm-operator { color: #FBDE2D; } +.cm-s-blackboard .cm-comment { color: #AEAEAE; } +.cm-s-blackboard .cm-string { color: #61CE3C; } +.cm-s-blackboard .cm-string-2 { color: #61CE3C; } +.cm-s-blackboard .cm-meta { color: #D8FA3C; } +.cm-s-blackboard .cm-builtin { color: #8DA6CE; } +.cm-s-blackboard .cm-tag { color: #8DA6CE; } +.cm-s-blackboard .cm-attribute { color: #8DA6CE; } +.cm-s-blackboard .cm-header { color: #FF6400; } +.cm-s-blackboard .cm-hr { color: #AEAEAE; } +.cm-s-blackboard .cm-link { color: #8DA6CE; } +.cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; } + +.cm-s-blackboard .CodeMirror-activeline-background { background: #3C3636; } +.cm-s-blackboard .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; } diff --git a/global/codemirror/theme/cobalt.css b/global/codemirror/theme/cobalt.css new file mode 100644 index 00000000..bbbda3b5 --- /dev/null +++ b/global/codemirror/theme/cobalt.css @@ -0,0 +1,25 @@ +.cm-s-cobalt.CodeMirror { background: #002240; color: white; } +.cm-s-cobalt div.CodeMirror-selected { background: #b36539; } +.cm-s-cobalt .CodeMirror-line::selection, .cm-s-cobalt .CodeMirror-line > span::selection, .cm-s-cobalt .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } +.cm-s-cobalt .CodeMirror-line::-moz-selection, .cm-s-cobalt .CodeMirror-line > span::-moz-selection, .cm-s-cobalt .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } +.cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } +.cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } +.cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } +.cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } +.cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white; } + +.cm-s-cobalt span.cm-comment { color: #08f; } +.cm-s-cobalt span.cm-atom { color: #845dc4; } +.cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } +.cm-s-cobalt span.cm-keyword { color: #ffee80; } +.cm-s-cobalt span.cm-string { color: #3ad900; } +.cm-s-cobalt span.cm-meta { color: #ff9d00; } +.cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } +.cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def, .cm-s-cobalt .cm-type { color: white; } +.cm-s-cobalt span.cm-bracket { color: #d8d8d8; } +.cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } +.cm-s-cobalt span.cm-link { color: #845dc4; } +.cm-s-cobalt span.cm-error { color: #9d1e15; } + +.cm-s-cobalt .CodeMirror-activeline-background { background: #002D57; } +.cm-s-cobalt .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; } diff --git a/global/codemirror/theme/colorforth.css b/global/codemirror/theme/colorforth.css new file mode 100644 index 00000000..19095e41 --- /dev/null +++ b/global/codemirror/theme/colorforth.css @@ -0,0 +1,33 @@ +.cm-s-colorforth.CodeMirror { background: #000000; color: #f8f8f8; } +.cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } +.cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; } +.cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; } +.cm-s-colorforth .CodeMirror-linenumber { color: #bababa; } +.cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white; } + +.cm-s-colorforth span.cm-comment { color: #ededed; } +.cm-s-colorforth span.cm-def { color: #ff1c1c; font-weight:bold; } +.cm-s-colorforth span.cm-keyword { color: #ffd900; } +.cm-s-colorforth span.cm-builtin { color: #00d95a; } +.cm-s-colorforth span.cm-variable { color: #73ff00; } +.cm-s-colorforth span.cm-string { color: #007bff; } +.cm-s-colorforth span.cm-number { color: #00c4ff; } +.cm-s-colorforth span.cm-atom { color: #606060; } + +.cm-s-colorforth span.cm-variable-2 { color: #EEE; } +.cm-s-colorforth span.cm-variable-3, .cm-s-colorforth span.cm-type { color: #DDD; } +.cm-s-colorforth span.cm-property {} +.cm-s-colorforth span.cm-operator {} + +.cm-s-colorforth span.cm-meta { color: yellow; } +.cm-s-colorforth span.cm-qualifier { color: #FFF700; } +.cm-s-colorforth span.cm-bracket { color: #cc7; } +.cm-s-colorforth span.cm-tag { color: #FFBD40; } +.cm-s-colorforth span.cm-attribute { color: #FFF700; } +.cm-s-colorforth span.cm-error { color: #f00; } + +.cm-s-colorforth div.CodeMirror-selected { background: #333d53; } + +.cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255, 0.12); } + +.cm-s-colorforth .CodeMirror-activeline-background { background: #253540; } diff --git a/global/codemirror/theme/dracula.css b/global/codemirror/theme/dracula.css new file mode 100644 index 00000000..253133ef --- /dev/null +++ b/global/codemirror/theme/dracula.css @@ -0,0 +1,40 @@ +/* + + Name: dracula + Author: Michael Kaminsky (http://github.com/mkaminsky11) + + Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme) + +*/ + + +.cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters { + background-color: #282a36 !important; + color: #f8f8f2 !important; + border: none; +} +.cm-s-dracula .CodeMirror-gutters { color: #282a36; } +.cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; } +.cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; } +.cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } +.cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } +.cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } +.cm-s-dracula span.cm-comment { color: #6272a4; } +.cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; } +.cm-s-dracula span.cm-number { color: #bd93f9; } +.cm-s-dracula span.cm-variable { color: #50fa7b; } +.cm-s-dracula span.cm-variable-2 { color: white; } +.cm-s-dracula span.cm-def { color: #50fa7b; } +.cm-s-dracula span.cm-operator { color: #ff79c6; } +.cm-s-dracula span.cm-keyword { color: #ff79c6; } +.cm-s-dracula span.cm-atom { color: #bd93f9; } +.cm-s-dracula span.cm-meta { color: #f8f8f2; } +.cm-s-dracula span.cm-tag { color: #ff79c6; } +.cm-s-dracula span.cm-attribute { color: #50fa7b; } +.cm-s-dracula span.cm-qualifier { color: #50fa7b; } +.cm-s-dracula span.cm-property { color: #66d9ef; } +.cm-s-dracula span.cm-builtin { color: #50fa7b; } +.cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; } + +.cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); } +.cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } diff --git a/global/codemirror/theme/duotone-dark.css b/global/codemirror/theme/duotone-dark.css new file mode 100644 index 00000000..88fdc76c --- /dev/null +++ b/global/codemirror/theme/duotone-dark.css @@ -0,0 +1,35 @@ +/* +Name: DuoTone-Dark +Author: by Bram de Haan, adapted from DuoTone themes by Simurai (http://simurai.com/projects/2016/01/01/duotone-themes) + +CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bram de Haan (https://github.com/atelierbram/) +*/ + +.cm-s-duotone-dark.CodeMirror { background: #2a2734; color: #6c6783; } +.cm-s-duotone-dark div.CodeMirror-selected { background: #545167!important; } +.cm-s-duotone-dark .CodeMirror-gutters { background: #2a2734; border-right: 0px; } +.cm-s-duotone-dark .CodeMirror-linenumber { color: #545167; } + +/* begin cursor */ +.cm-s-duotone-dark .CodeMirror-cursor { border-left: 1px solid #ffad5c; /* border-left: 1px solid #ffad5c80; */ border-right: .5em solid #ffad5c; /* border-right: .5em solid #ffad5c80; */ opacity: .5; } +.cm-s-duotone-dark .CodeMirror-activeline-background { background: #363342; /* background: #36334280; */ opacity: .5;} +.cm-s-duotone-dark .cm-fat-cursor .CodeMirror-cursor { background: #ffad5c; /* background: #ffad5c80; */ opacity: .5;} +/* end cursor */ + +.cm-s-duotone-dark span.cm-atom, .cm-s-duotone-dark span.cm-number, .cm-s-duotone-dark span.cm-keyword, .cm-s-duotone-dark span.cm-variable, .cm-s-duotone-dark span.cm-attribute, .cm-s-duotone-dark span.cm-quote, .cm-s-duotone-dark span.cm-hr, .cm-s-duotone-dark span.cm-link { color: #ffcc99; } + +.cm-s-duotone-dark span.cm-property { color: #9a86fd; } +.cm-s-duotone-dark span.cm-punctuation, .cm-s-duotone-dark span.cm-unit, .cm-s-duotone-dark span.cm-negative { color: #e09142; } +.cm-s-duotone-dark span.cm-string { color: #ffb870; } +.cm-s-duotone-dark span.cm-operator { color: #ffad5c; } +.cm-s-duotone-dark span.cm-positive { color: #6a51e6; } + +.cm-s-duotone-dark span.cm-variable-2, .cm-s-duotone-dark span.cm-variable-3, .cm-s-duotone-dark span.cm-type, .cm-s-duotone-dark span.cm-string-2, .cm-s-duotone-dark span.cm-url { color: #7a63ee; } +.cm-s-duotone-dark span.cm-def, .cm-s-duotone-dark span.cm-tag, .cm-s-duotone-dark span.cm-builtin, .cm-s-duotone-dark span.cm-qualifier, .cm-s-duotone-dark span.cm-header, .cm-s-duotone-dark span.cm-em { color: #eeebff; } +.cm-s-duotone-dark span.cm-bracket, .cm-s-duotone-dark span.cm-comment { color: #6c6783; } + +/* using #f00 red for errors, don't think any of the colorscheme variables will stand out enough, ... maybe by giving it a background-color ... */ +.cm-s-duotone-dark span.cm-error, .cm-s-duotone-dark span.cm-invalidchar { color: #f00; } + +.cm-s-duotone-dark span.cm-header { font-weight: normal; } +.cm-s-duotone-dark .CodeMirror-matchingbracket { text-decoration: underline; color: #eeebff !important; } diff --git a/global/codemirror/theme/duotone-light.css b/global/codemirror/theme/duotone-light.css new file mode 100644 index 00000000..d99480f7 --- /dev/null +++ b/global/codemirror/theme/duotone-light.css @@ -0,0 +1,36 @@ +/* +Name: DuoTone-Light +Author: by Bram de Haan, adapted from DuoTone themes by Simurai (http://simurai.com/projects/2016/01/01/duotone-themes) + +CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bram de Haan (https://github.com/atelierbram/) +*/ + +.cm-s-duotone-light.CodeMirror { background: #faf8f5; color: #b29762; } +.cm-s-duotone-light div.CodeMirror-selected { background: #e3dcce !important; } +.cm-s-duotone-light .CodeMirror-gutters { background: #faf8f5; border-right: 0px; } +.cm-s-duotone-light .CodeMirror-linenumber { color: #cdc4b1; } + +/* begin cursor */ +.cm-s-duotone-light .CodeMirror-cursor { border-left: 1px solid #93abdc; /* border-left: 1px solid #93abdc80; */ border-right: .5em solid #93abdc; /* border-right: .5em solid #93abdc80; */ opacity: .5; } +.cm-s-duotone-light .CodeMirror-activeline-background { background: #e3dcce; /* background: #e3dcce80; */ opacity: .5; } +.cm-s-duotone-light .cm-fat-cursor .CodeMirror-cursor { background: #93abdc; /* #93abdc80; */ opacity: .5; } +/* end cursor */ + +.cm-s-duotone-light span.cm-atom, .cm-s-duotone-light span.cm-number, .cm-s-duotone-light span.cm-keyword, .cm-s-duotone-light span.cm-variable, .cm-s-duotone-light span.cm-attribute, .cm-s-duotone-light span.cm-quote, .cm-s-duotone-light-light span.cm-hr, .cm-s-duotone-light-light span.cm-link { color: #063289; } + +.cm-s-duotone-light span.cm-property { color: #b29762; } +.cm-s-duotone-light span.cm-punctuation, .cm-s-duotone-light span.cm-unit, .cm-s-duotone-light span.cm-negative { color: #063289; } +.cm-s-duotone-light span.cm-string, .cm-s-duotone-light span.cm-operator { color: #1659df; } +.cm-s-duotone-light span.cm-positive { color: #896724; } + +.cm-s-duotone-light span.cm-variable-2, .cm-s-duotone-light span.cm-variable-3, .cm-s-duotone-light span.cm-type, .cm-s-duotone-light span.cm-string-2, .cm-s-duotone-light span.cm-url { color: #896724; } +.cm-s-duotone-light span.cm-def, .cm-s-duotone-light span.cm-tag, .cm-s-duotone-light span.cm-builtin, .cm-s-duotone-light span.cm-qualifier, .cm-s-duotone-light span.cm-header, .cm-s-duotone-light span.cm-em { color: #2d2006; } +.cm-s-duotone-light span.cm-bracket, .cm-s-duotone-light span.cm-comment { color: #b6ad9a; } + +/* using #f00 red for errors, don't think any of the colorscheme variables will stand out enough, ... maybe by giving it a background-color ... */ +/* .cm-s-duotone-light span.cm-error { background: #896724; color: #728fcb; } */ +.cm-s-duotone-light span.cm-error, .cm-s-duotone-light span.cm-invalidchar { color: #f00; } + +.cm-s-duotone-light span.cm-header { font-weight: normal; } +.cm-s-duotone-light .CodeMirror-matchingbracket { text-decoration: underline; color: #faf8f5 !important; } + diff --git a/global/codemirror/theme/eclipse.css b/global/codemirror/theme/eclipse.css new file mode 100644 index 00000000..800d603f --- /dev/null +++ b/global/codemirror/theme/eclipse.css @@ -0,0 +1,23 @@ +.cm-s-eclipse span.cm-meta { color: #FF1717; } +.cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } +.cm-s-eclipse span.cm-atom { color: #219; } +.cm-s-eclipse span.cm-number { color: #164; } +.cm-s-eclipse span.cm-def { color: #00f; } +.cm-s-eclipse span.cm-variable { color: black; } +.cm-s-eclipse span.cm-variable-2 { color: #0000C0; } +.cm-s-eclipse span.cm-variable-3, .cm-s-eclipse span.cm-type { color: #0000C0; } +.cm-s-eclipse span.cm-property { color: black; } +.cm-s-eclipse span.cm-operator { color: black; } +.cm-s-eclipse span.cm-comment { color: #3F7F5F; } +.cm-s-eclipse span.cm-string { color: #2A00FF; } +.cm-s-eclipse span.cm-string-2 { color: #f50; } +.cm-s-eclipse span.cm-qualifier { color: #555; } +.cm-s-eclipse span.cm-builtin { color: #30a; } +.cm-s-eclipse span.cm-bracket { color: #cc7; } +.cm-s-eclipse span.cm-tag { color: #170; } +.cm-s-eclipse span.cm-attribute { color: #00c; } +.cm-s-eclipse span.cm-link { color: #219; } +.cm-s-eclipse span.cm-error { color: #f00; } + +.cm-s-eclipse .CodeMirror-activeline-background { background: #e8f2ff; } +.cm-s-eclipse .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } diff --git a/global/codemirror/theme/elegant.css b/global/codemirror/theme/elegant.css new file mode 100644 index 00000000..45b3ea65 --- /dev/null +++ b/global/codemirror/theme/elegant.css @@ -0,0 +1,13 @@ +.cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom { color: #762; } +.cm-s-elegant span.cm-comment { color: #262; font-style: italic; line-height: 1em; } +.cm-s-elegant span.cm-meta { color: #555; font-style: italic; line-height: 1em; } +.cm-s-elegant span.cm-variable { color: black; } +.cm-s-elegant span.cm-variable-2 { color: #b11; } +.cm-s-elegant span.cm-qualifier { color: #555; } +.cm-s-elegant span.cm-keyword { color: #730; } +.cm-s-elegant span.cm-builtin { color: #30a; } +.cm-s-elegant span.cm-link { color: #762; } +.cm-s-elegant span.cm-error { background-color: #fdd; } + +.cm-s-elegant .CodeMirror-activeline-background { background: #e8f2ff; } +.cm-s-elegant .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } diff --git a/global/codemirror/theme/erlang-dark.css b/global/codemirror/theme/erlang-dark.css new file mode 100644 index 00000000..8c8a4171 --- /dev/null +++ b/global/codemirror/theme/erlang-dark.css @@ -0,0 +1,34 @@ +.cm-s-erlang-dark.CodeMirror { background: #002240; color: white; } +.cm-s-erlang-dark div.CodeMirror-selected { background: #b36539; } +.cm-s-erlang-dark .CodeMirror-line::selection, .cm-s-erlang-dark .CodeMirror-line > span::selection, .cm-s-erlang-dark .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } +.cm-s-erlang-dark .CodeMirror-line::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } +.cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } +.cm-s-erlang-dark .CodeMirror-guttermarker { color: white; } +.cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; } +.cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; } +.cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white; } + +.cm-s-erlang-dark span.cm-quote { color: #ccc; } +.cm-s-erlang-dark span.cm-atom { color: #f133f1; } +.cm-s-erlang-dark span.cm-attribute { color: #ff80e1; } +.cm-s-erlang-dark span.cm-bracket { color: #ff9d00; } +.cm-s-erlang-dark span.cm-builtin { color: #eaa; } +.cm-s-erlang-dark span.cm-comment { color: #77f; } +.cm-s-erlang-dark span.cm-def { color: #e7a; } +.cm-s-erlang-dark span.cm-keyword { color: #ffee80; } +.cm-s-erlang-dark span.cm-meta { color: #50fefe; } +.cm-s-erlang-dark span.cm-number { color: #ffd0d0; } +.cm-s-erlang-dark span.cm-operator { color: #d55; } +.cm-s-erlang-dark span.cm-property { color: #ccc; } +.cm-s-erlang-dark span.cm-qualifier { color: #ccc; } +.cm-s-erlang-dark span.cm-special { color: #ffbbbb; } +.cm-s-erlang-dark span.cm-string { color: #3ad900; } +.cm-s-erlang-dark span.cm-string-2 { color: #ccc; } +.cm-s-erlang-dark span.cm-tag { color: #9effff; } +.cm-s-erlang-dark span.cm-variable { color: #50fe50; } +.cm-s-erlang-dark span.cm-variable-2 { color: #e0e; } +.cm-s-erlang-dark span.cm-variable-3, .cm-s-erlang-dark span.cm-type { color: #ccc; } +.cm-s-erlang-dark span.cm-error { color: #9d1e15; } + +.cm-s-erlang-dark .CodeMirror-activeline-background { background: #013461; } +.cm-s-erlang-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } diff --git a/global/codemirror/theme/hopscotch.css b/global/codemirror/theme/hopscotch.css new file mode 100644 index 00000000..7d05431b --- /dev/null +++ b/global/codemirror/theme/hopscotch.css @@ -0,0 +1,34 @@ +/* + + Name: Hopscotch + Author: Jan T. Sott + + CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) + Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) + +*/ + +.cm-s-hopscotch.CodeMirror {background: #322931; color: #d5d3d5;} +.cm-s-hopscotch div.CodeMirror-selected {background: #433b42 !important;} +.cm-s-hopscotch .CodeMirror-gutters {background: #322931; border-right: 0px;} +.cm-s-hopscotch .CodeMirror-linenumber {color: #797379;} +.cm-s-hopscotch .CodeMirror-cursor {border-left: 1px solid #989498 !important;} + +.cm-s-hopscotch span.cm-comment {color: #b33508;} +.cm-s-hopscotch span.cm-atom {color: #c85e7c;} +.cm-s-hopscotch span.cm-number {color: #c85e7c;} + +.cm-s-hopscotch span.cm-property, .cm-s-hopscotch span.cm-attribute {color: #8fc13e;} +.cm-s-hopscotch span.cm-keyword {color: #dd464c;} +.cm-s-hopscotch span.cm-string {color: #fdcc59;} + +.cm-s-hopscotch span.cm-variable {color: #8fc13e;} +.cm-s-hopscotch span.cm-variable-2 {color: #1290bf;} +.cm-s-hopscotch span.cm-def {color: #fd8b19;} +.cm-s-hopscotch span.cm-error {background: #dd464c; color: #989498;} +.cm-s-hopscotch span.cm-bracket {color: #d5d3d5;} +.cm-s-hopscotch span.cm-tag {color: #dd464c;} +.cm-s-hopscotch span.cm-link {color: #c85e7c;} + +.cm-s-hopscotch .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} +.cm-s-hopscotch .CodeMirror-activeline-background { background: #302020; } diff --git a/global/codemirror/theme/icecoder.css b/global/codemirror/theme/icecoder.css new file mode 100644 index 00000000..5440fbe2 --- /dev/null +++ b/global/codemirror/theme/icecoder.css @@ -0,0 +1,43 @@ +/* +ICEcoder default theme by Matt Pass, used in code editor available at https://icecoder.net +*/ + +.cm-s-icecoder { color: #666; background: #1d1d1b; } + +.cm-s-icecoder span.cm-keyword { color: #eee; font-weight:bold; } /* off-white 1 */ +.cm-s-icecoder span.cm-atom { color: #e1c76e; } /* yellow */ +.cm-s-icecoder span.cm-number { color: #6cb5d9; } /* blue */ +.cm-s-icecoder span.cm-def { color: #b9ca4a; } /* green */ + +.cm-s-icecoder span.cm-variable { color: #6cb5d9; } /* blue */ +.cm-s-icecoder span.cm-variable-2 { color: #cc1e5c; } /* pink */ +.cm-s-icecoder span.cm-variable-3, .cm-s-icecoder span.cm-type { color: #f9602c; } /* orange */ + +.cm-s-icecoder span.cm-property { color: #eee; } /* off-white 1 */ +.cm-s-icecoder span.cm-operator { color: #9179bb; } /* purple */ +.cm-s-icecoder span.cm-comment { color: #97a3aa; } /* grey-blue */ + +.cm-s-icecoder span.cm-string { color: #b9ca4a; } /* green */ +.cm-s-icecoder span.cm-string-2 { color: #6cb5d9; } /* blue */ + +.cm-s-icecoder span.cm-meta { color: #555; } /* grey */ + +.cm-s-icecoder span.cm-qualifier { color: #555; } /* grey */ +.cm-s-icecoder span.cm-builtin { color: #214e7b; } /* bright blue */ +.cm-s-icecoder span.cm-bracket { color: #cc7; } /* grey-yellow */ + +.cm-s-icecoder span.cm-tag { color: #e8e8e8; } /* off-white 2 */ +.cm-s-icecoder span.cm-attribute { color: #099; } /* teal */ + +.cm-s-icecoder span.cm-header { color: #6a0d6a; } /* purple-pink */ +.cm-s-icecoder span.cm-quote { color: #186718; } /* dark green */ +.cm-s-icecoder span.cm-hr { color: #888; } /* mid-grey */ +.cm-s-icecoder span.cm-link { color: #e1c76e; } /* yellow */ +.cm-s-icecoder span.cm-error { color: #d00; } /* red */ + +.cm-s-icecoder .CodeMirror-cursor { border-left: 1px solid white; } +.cm-s-icecoder div.CodeMirror-selected { color: #fff; background: #037; } +.cm-s-icecoder .CodeMirror-gutters { background: #1d1d1b; min-width: 41px; border-right: 0; } +.cm-s-icecoder .CodeMirror-linenumber { color: #555; cursor: default; } +.cm-s-icecoder .CodeMirror-matchingbracket { color: #fff !important; background: #555 !important; } +.cm-s-icecoder .CodeMirror-activeline-background { background: #000; } diff --git a/global/codemirror/theme/isotope.css b/global/codemirror/theme/isotope.css new file mode 100644 index 00000000..d0d6263c --- /dev/null +++ b/global/codemirror/theme/isotope.css @@ -0,0 +1,34 @@ +/* + + Name: Isotope + Author: David Desandro / Jan T. Sott + + CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) + Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) + +*/ + +.cm-s-isotope.CodeMirror {background: #000000; color: #e0e0e0;} +.cm-s-isotope div.CodeMirror-selected {background: #404040 !important;} +.cm-s-isotope .CodeMirror-gutters {background: #000000; border-right: 0px;} +.cm-s-isotope .CodeMirror-linenumber {color: #808080;} +.cm-s-isotope .CodeMirror-cursor {border-left: 1px solid #c0c0c0 !important;} + +.cm-s-isotope span.cm-comment {color: #3300ff;} +.cm-s-isotope span.cm-atom {color: #cc00ff;} +.cm-s-isotope span.cm-number {color: #cc00ff;} + +.cm-s-isotope span.cm-property, .cm-s-isotope span.cm-attribute {color: #33ff00;} +.cm-s-isotope span.cm-keyword {color: #ff0000;} +.cm-s-isotope span.cm-string {color: #ff0099;} + +.cm-s-isotope span.cm-variable {color: #33ff00;} +.cm-s-isotope span.cm-variable-2 {color: #0066ff;} +.cm-s-isotope span.cm-def {color: #ff9900;} +.cm-s-isotope span.cm-error {background: #ff0000; color: #c0c0c0;} +.cm-s-isotope span.cm-bracket {color: #e0e0e0;} +.cm-s-isotope span.cm-tag {color: #ff0000;} +.cm-s-isotope span.cm-link {color: #cc00ff;} + +.cm-s-isotope .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} +.cm-s-isotope .CodeMirror-activeline-background { background: #202020; } diff --git a/global/codemirror/theme/lesser-dark.css b/global/codemirror/theme/lesser-dark.css new file mode 100644 index 00000000..b2ec418f --- /dev/null +++ b/global/codemirror/theme/lesser-dark.css @@ -0,0 +1,47 @@ +/* +http://lesscss.org/ dark theme +Ported to CodeMirror by Peter Kroon +*/ +.cm-s-lesser-dark { + line-height: 1.3em; +} +.cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; } +.cm-s-lesser-dark div.CodeMirror-selected { background: #45443B; } /* 33322B*/ +.cm-s-lesser-dark .CodeMirror-line::selection, .cm-s-lesser-dark .CodeMirror-line > span::selection, .cm-s-lesser-dark .CodeMirror-line > span > span::selection { background: rgba(69, 68, 59, .99); } +.cm-s-lesser-dark .CodeMirror-line::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(69, 68, 59, .99); } +.cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white; } +.cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/ + +.cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/ + +.cm-s-lesser-dark .CodeMirror-gutters { background: #262626; border-right:1px solid #aaa; } +.cm-s-lesser-dark .CodeMirror-guttermarker { color: #599eff; } +.cm-s-lesser-dark .CodeMirror-guttermarker-subtle { color: #777; } +.cm-s-lesser-dark .CodeMirror-linenumber { color: #777; } + +.cm-s-lesser-dark span.cm-header { color: #a0a; } +.cm-s-lesser-dark span.cm-quote { color: #090; } +.cm-s-lesser-dark span.cm-keyword { color: #599eff; } +.cm-s-lesser-dark span.cm-atom { color: #C2B470; } +.cm-s-lesser-dark span.cm-number { color: #B35E4D; } +.cm-s-lesser-dark span.cm-def { color: white; } +.cm-s-lesser-dark span.cm-variable { color:#D9BF8C; } +.cm-s-lesser-dark span.cm-variable-2 { color: #669199; } +.cm-s-lesser-dark span.cm-variable-3, .cm-s-lesser-dark span.cm-type { color: white; } +.cm-s-lesser-dark span.cm-property { color: #92A75C; } +.cm-s-lesser-dark span.cm-operator { color: #92A75C; } +.cm-s-lesser-dark span.cm-comment { color: #666; } +.cm-s-lesser-dark span.cm-string { color: #BCD279; } +.cm-s-lesser-dark span.cm-string-2 { color: #f50; } +.cm-s-lesser-dark span.cm-meta { color: #738C73; } +.cm-s-lesser-dark span.cm-qualifier { color: #555; } +.cm-s-lesser-dark span.cm-builtin { color: #ff9e59; } +.cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; } +.cm-s-lesser-dark span.cm-tag { color: #669199; } +.cm-s-lesser-dark span.cm-attribute { color: #00c; } +.cm-s-lesser-dark span.cm-hr { color: #999; } +.cm-s-lesser-dark span.cm-link { color: #00c; } +.cm-s-lesser-dark span.cm-error { color: #9d1e15; } + +.cm-s-lesser-dark .CodeMirror-activeline-background { background: #3C3A3A; } +.cm-s-lesser-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } diff --git a/global/codemirror/theme/liquibyte.css b/global/codemirror/theme/liquibyte.css new file mode 100644 index 00000000..393825e0 --- /dev/null +++ b/global/codemirror/theme/liquibyte.css @@ -0,0 +1,95 @@ +.cm-s-liquibyte.CodeMirror { + background-color: #000; + color: #fff; + line-height: 1.2em; + font-size: 1em; +} +.cm-s-liquibyte .CodeMirror-focused .cm-matchhighlight { + text-decoration: underline; + text-decoration-color: #0f0; + text-decoration-style: wavy; +} +.cm-s-liquibyte .cm-trailingspace { + text-decoration: line-through; + text-decoration-color: #f00; + text-decoration-style: dotted; +} +.cm-s-liquibyte .cm-tab { + text-decoration: line-through; + text-decoration-color: #404040; + text-decoration-style: dotted; +} +.cm-s-liquibyte .CodeMirror-gutters { background-color: #262626; border-right: 1px solid #505050; padding-right: 0.8em; } +.cm-s-liquibyte .CodeMirror-gutter-elt div { font-size: 1.2em; } +.cm-s-liquibyte .CodeMirror-guttermarker { } +.cm-s-liquibyte .CodeMirror-guttermarker-subtle { } +.cm-s-liquibyte .CodeMirror-linenumber { color: #606060; padding-left: 0; } +.cm-s-liquibyte .CodeMirror-cursor { border-left: 1px solid #eee; } + +.cm-s-liquibyte span.cm-comment { color: #008000; } +.cm-s-liquibyte span.cm-def { color: #ffaf40; font-weight: bold; } +.cm-s-liquibyte span.cm-keyword { color: #c080ff; font-weight: bold; } +.cm-s-liquibyte span.cm-builtin { color: #ffaf40; font-weight: bold; } +.cm-s-liquibyte span.cm-variable { color: #5967ff; font-weight: bold; } +.cm-s-liquibyte span.cm-string { color: #ff8000; } +.cm-s-liquibyte span.cm-number { color: #0f0; font-weight: bold; } +.cm-s-liquibyte span.cm-atom { color: #bf3030; font-weight: bold; } + +.cm-s-liquibyte span.cm-variable-2 { color: #007f7f; font-weight: bold; } +.cm-s-liquibyte span.cm-variable-3, .cm-s-liquibyte span.cm-type { color: #c080ff; font-weight: bold; } +.cm-s-liquibyte span.cm-property { color: #999; font-weight: bold; } +.cm-s-liquibyte span.cm-operator { color: #fff; } + +.cm-s-liquibyte span.cm-meta { color: #0f0; } +.cm-s-liquibyte span.cm-qualifier { color: #fff700; font-weight: bold; } +.cm-s-liquibyte span.cm-bracket { color: #cc7; } +.cm-s-liquibyte span.cm-tag { color: #ff0; font-weight: bold; } +.cm-s-liquibyte span.cm-attribute { color: #c080ff; font-weight: bold; } +.cm-s-liquibyte span.cm-error { color: #f00; } + +.cm-s-liquibyte div.CodeMirror-selected { background-color: rgba(255, 0, 0, 0.25); } + +.cm-s-liquibyte span.cm-compilation { background-color: rgba(255, 255, 255, 0.12); } + +.cm-s-liquibyte .CodeMirror-activeline-background { background-color: rgba(0, 255, 0, 0.15); } + +/* Default styles for common addons */ +.cm-s-liquibyte .CodeMirror span.CodeMirror-matchingbracket { color: #0f0; font-weight: bold; } +.cm-s-liquibyte .CodeMirror span.CodeMirror-nonmatchingbracket { color: #f00; font-weight: bold; } +.CodeMirror-matchingtag { background-color: rgba(150, 255, 0, .3); } +/* Scrollbars */ +/* Simple */ +.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div:hover, .cm-s-liquibyte div.CodeMirror-simplescroll-vertical div:hover { + background-color: rgba(80, 80, 80, .7); +} +.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div, .cm-s-liquibyte div.CodeMirror-simplescroll-vertical div { + background-color: rgba(80, 80, 80, .3); + border: 1px solid #404040; + border-radius: 5px; +} +.cm-s-liquibyte div.CodeMirror-simplescroll-vertical div { + border-top: 1px solid #404040; + border-bottom: 1px solid #404040; +} +.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div { + border-left: 1px solid #404040; + border-right: 1px solid #404040; +} +.cm-s-liquibyte div.CodeMirror-simplescroll-vertical { + background-color: #262626; +} +.cm-s-liquibyte div.CodeMirror-simplescroll-horizontal { + background-color: #262626; + border-top: 1px solid #404040; +} +/* Overlay */ +.cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div, div.CodeMirror-overlayscroll-vertical div { + background-color: #404040; + border-radius: 5px; +} +.cm-s-liquibyte div.CodeMirror-overlayscroll-vertical div { + border: 1px solid #404040; +} +.cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div { + border: 1px solid #404040; +} diff --git a/global/codemirror/theme/material.css b/global/codemirror/theme/material.css new file mode 100644 index 00000000..84962a24 --- /dev/null +++ b/global/codemirror/theme/material.css @@ -0,0 +1,53 @@ +/* + + Name: material + Author: Michael Kaminsky (http://github.com/mkaminsky11) + + Original material color scheme by Mattia Astorino (https://github.com/equinusocio/material-theme) + +*/ + +.cm-s-material.CodeMirror { + background-color: #263238; + color: rgba(233, 237, 237, 1); +} +.cm-s-material .CodeMirror-gutters { + background: #263238; + color: rgb(83,127,126); + border: none; +} +.cm-s-material .CodeMirror-guttermarker, .cm-s-material .CodeMirror-guttermarker-subtle, .cm-s-material .CodeMirror-linenumber { color: rgb(83,127,126); } +.cm-s-material .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } +.cm-s-material div.CodeMirror-selected { background: rgba(255, 255, 255, 0.15); } +.cm-s-material.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } +.cm-s-material .CodeMirror-line::selection, .cm-s-material .CodeMirror-line > span::selection, .cm-s-material .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } +.cm-s-material .CodeMirror-line::-moz-selection, .cm-s-material .CodeMirror-line > span::-moz-selection, .cm-s-material .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } + +.cm-s-material .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0); } +.cm-s-material .cm-keyword { color: rgba(199, 146, 234, 1); } +.cm-s-material .cm-operator { color: rgba(233, 237, 237, 1); } +.cm-s-material .cm-variable-2 { color: #80CBC4; } +.cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #82B1FF; } +.cm-s-material .cm-builtin { color: #DECB6B; } +.cm-s-material .cm-atom { color: #F77669; } +.cm-s-material .cm-number { color: #F77669; } +.cm-s-material .cm-def { color: rgba(233, 237, 237, 1); } +.cm-s-material .cm-string { color: #C3E88D; } +.cm-s-material .cm-string-2 { color: #80CBC4; } +.cm-s-material .cm-comment { color: #546E7A; } +.cm-s-material .cm-variable { color: #82B1FF; } +.cm-s-material .cm-tag { color: #80CBC4; } +.cm-s-material .cm-meta { color: #80CBC4; } +.cm-s-material .cm-attribute { color: #FFCB6B; } +.cm-s-material .cm-property { color: #80CBAE; } +.cm-s-material .cm-qualifier { color: #DECB6B; } +.cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #DECB6B; } +.cm-s-material .cm-tag { color: rgba(255, 83, 112, 1); } +.cm-s-material .cm-error { + color: rgba(255, 255, 255, 1.0); + background-color: #EC5F67; +} +.cm-s-material .CodeMirror-matchingbracket { + text-decoration: underline; + color: white !important; +} diff --git a/global/codemirror/theme/mbo.css b/global/codemirror/theme/mbo.css new file mode 100644 index 00000000..e164fcf4 --- /dev/null +++ b/global/codemirror/theme/mbo.css @@ -0,0 +1,37 @@ +/****************************************************************/ +/* Based on mbonaci's Brackets mbo theme */ +/* https://github.com/mbonaci/global/blob/master/Mbo.tmTheme */ +/* Create your own: http://tmtheme-editor.herokuapp.com */ +/****************************************************************/ + +.cm-s-mbo.CodeMirror { background: #2c2c2c; color: #ffffec; } +.cm-s-mbo div.CodeMirror-selected { background: #716C62; } +.cm-s-mbo .CodeMirror-line::selection, .cm-s-mbo .CodeMirror-line > span::selection, .cm-s-mbo .CodeMirror-line > span > span::selection { background: rgba(113, 108, 98, .99); } +.cm-s-mbo .CodeMirror-line::-moz-selection, .cm-s-mbo .CodeMirror-line > span::-moz-selection, .cm-s-mbo .CodeMirror-line > span > span::-moz-selection { background: rgba(113, 108, 98, .99); } +.cm-s-mbo .CodeMirror-gutters { background: #4e4e4e; border-right: 0px; } +.cm-s-mbo .CodeMirror-guttermarker { color: white; } +.cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; } +.cm-s-mbo .CodeMirror-linenumber { color: #dadada; } +.cm-s-mbo .CodeMirror-cursor { border-left: 1px solid #ffffec; } + +.cm-s-mbo span.cm-comment { color: #95958a; } +.cm-s-mbo span.cm-atom { color: #00a8c6; } +.cm-s-mbo span.cm-number { color: #00a8c6; } + +.cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute { color: #9ddfe9; } +.cm-s-mbo span.cm-keyword { color: #ffb928; } +.cm-s-mbo span.cm-string { color: #ffcf6c; } +.cm-s-mbo span.cm-string.cm-property { color: #ffffec; } + +.cm-s-mbo span.cm-variable { color: #ffffec; } +.cm-s-mbo span.cm-variable-2 { color: #00a8c6; } +.cm-s-mbo span.cm-def { color: #ffffec; } +.cm-s-mbo span.cm-bracket { color: #fffffc; font-weight: bold; } +.cm-s-mbo span.cm-tag { color: #9ddfe9; } +.cm-s-mbo span.cm-link { color: #f54b07; } +.cm-s-mbo span.cm-error { border-bottom: #636363; color: #ffffec; } +.cm-s-mbo span.cm-qualifier { color: #ffffec; } + +.cm-s-mbo .CodeMirror-activeline-background { background: #494b41; } +.cm-s-mbo .CodeMirror-matchingbracket { color: #ffb928 !important; } +.cm-s-mbo .CodeMirror-matchingtag { background: rgba(255, 255, 255, .37); } diff --git a/global/codemirror/theme/mdn-like.css b/global/codemirror/theme/mdn-like.css new file mode 100644 index 00000000..622ed3ef --- /dev/null +++ b/global/codemirror/theme/mdn-like.css @@ -0,0 +1,46 @@ +/* + MDN-LIKE Theme - Mozilla + Ported to CodeMirror by Peter Kroon + Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues + GitHub: @peterkroon + + The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation + +*/ +.cm-s-mdn-like.CodeMirror { color: #999; background-color: #fff; } +.cm-s-mdn-like div.CodeMirror-selected { background: #cfc; } +.cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line > span::selection, .cm-s-mdn-like .CodeMirror-line > span > span::selection { background: #cfc; } +.cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span > span::-moz-selection { background: #cfc; } + +.cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px solid rgba(0,83,159,0.65); color: #333; } +.cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; padding-left: 8px; } +.cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; } + +.cm-s-mdn-like .cm-keyword { color: #6262FF; } +.cm-s-mdn-like .cm-atom { color: #F90; } +.cm-s-mdn-like .cm-number { color: #ca7841; } +.cm-s-mdn-like .cm-def { color: #8DA6CE; } +.cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag { color: #690; } +.cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def, .cm-s-mdn-like span.cm-type { color: #07a; } + +.cm-s-mdn-like .cm-variable { color: #07a; } +.cm-s-mdn-like .cm-property { color: #905; } +.cm-s-mdn-like .cm-qualifier { color: #690; } + +.cm-s-mdn-like .cm-operator { color: #cda869; } +.cm-s-mdn-like .cm-comment { color:#777; font-weight:normal; } +.cm-s-mdn-like .cm-string { color:#07a; font-style:italic; } +.cm-s-mdn-like .cm-string-2 { color:#bd6b18; } /*?*/ +.cm-s-mdn-like .cm-meta { color: #000; } /*?*/ +.cm-s-mdn-like .cm-builtin { color: #9B7536; } /*?*/ +.cm-s-mdn-like .cm-tag { color: #997643; } +.cm-s-mdn-like .cm-attribute { color: #d6bb6d; } /*?*/ +.cm-s-mdn-like .cm-header { color: #FF6400; } +.cm-s-mdn-like .cm-hr { color: #AEAEAE; } +.cm-s-mdn-like .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } +.cm-s-mdn-like .cm-error { border-bottom: 1px solid red; } + +div.cm-s-mdn-like .CodeMirror-activeline-background { background: #efefff; } +div.cm-s-mdn-like span.CodeMirror-matchingbracket { outline:1px solid grey; color: inherit; } + +.cm-s-mdn-like.CodeMirror { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=); } diff --git a/global/codemirror/theme/midnight.css b/global/codemirror/theme/midnight.css new file mode 100644 index 00000000..17ed39c8 --- /dev/null +++ b/global/codemirror/theme/midnight.css @@ -0,0 +1,43 @@ +/* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */ + +/**/ +.cm-s-midnight span.CodeMirror-matchhighlight { background: #494949; } +.cm-s-midnight.CodeMirror-focused span.CodeMirror-matchhighlight { background: #314D67 !important; } + +/**/ +.cm-s-midnight .CodeMirror-activeline-background { background: #253540; } + +.cm-s-midnight.CodeMirror { + background: #0F192A; + color: #D1EDFF; +} + +.cm-s-midnight div.CodeMirror-selected { background: #314D67; } +.cm-s-midnight .CodeMirror-line::selection, .cm-s-midnight .CodeMirror-line > span::selection, .cm-s-midnight .CodeMirror-line > span > span::selection { background: rgba(49, 77, 103, .99); } +.cm-s-midnight .CodeMirror-line::-moz-selection, .cm-s-midnight .CodeMirror-line > span::-moz-selection, .cm-s-midnight .CodeMirror-line > span > span::-moz-selection { background: rgba(49, 77, 103, .99); } +.cm-s-midnight .CodeMirror-gutters { background: #0F192A; border-right: 1px solid; } +.cm-s-midnight .CodeMirror-guttermarker { color: white; } +.cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; } +.cm-s-midnight .CodeMirror-linenumber { color: #D0D0D0; } +.cm-s-midnight .CodeMirror-cursor { border-left: 1px solid #F8F8F0; } + +.cm-s-midnight span.cm-comment { color: #428BDD; } +.cm-s-midnight span.cm-atom { color: #AE81FF; } +.cm-s-midnight span.cm-number { color: #D1EDFF; } + +.cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute { color: #A6E22E; } +.cm-s-midnight span.cm-keyword { color: #E83737; } +.cm-s-midnight span.cm-string { color: #1DC116; } + +.cm-s-midnight span.cm-variable { color: #FFAA3E; } +.cm-s-midnight span.cm-variable-2 { color: #FFAA3E; } +.cm-s-midnight span.cm-def { color: #4DD; } +.cm-s-midnight span.cm-bracket { color: #D1EDFF; } +.cm-s-midnight span.cm-tag { color: #449; } +.cm-s-midnight span.cm-link { color: #AE81FF; } +.cm-s-midnight span.cm-error { background: #F92672; color: #F8F8F0; } + +.cm-s-midnight .CodeMirror-matchingbracket { + text-decoration: underline; + color: white !important; +} diff --git a/global/codemirror/theme/monokai.css b/global/codemirror/theme/monokai.css new file mode 100644 index 00000000..b5edd13f --- /dev/null +++ b/global/codemirror/theme/monokai.css @@ -0,0 +1,36 @@ +/* Based on Sublime Text's Monokai theme */ + +.cm-s-monokai.CodeMirror { background: #272822; color: #f8f8f2; } +.cm-s-monokai div.CodeMirror-selected { background: #49483E; } +.cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line > span::selection, .cm-s-monokai .CodeMirror-line > span > span::selection { background: rgba(73, 72, 62, .99); } +.cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai .CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line > span > span::-moz-selection { background: rgba(73, 72, 62, .99); } +.cm-s-monokai .CodeMirror-gutters { background: #272822; border-right: 0px; } +.cm-s-monokai .CodeMirror-guttermarker { color: white; } +.cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; } +.cm-s-monokai .CodeMirror-linenumber { color: #d0d0d0; } +.cm-s-monokai .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } + +.cm-s-monokai span.cm-comment { color: #75715e; } +.cm-s-monokai span.cm-atom { color: #ae81ff; } +.cm-s-monokai span.cm-number { color: #ae81ff; } + +.cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute { color: #a6e22e; } +.cm-s-monokai span.cm-keyword { color: #f92672; } +.cm-s-monokai span.cm-builtin { color: #66d9ef; } +.cm-s-monokai span.cm-string { color: #e6db74; } + +.cm-s-monokai span.cm-variable { color: #f8f8f2; } +.cm-s-monokai span.cm-variable-2 { color: #9effff; } +.cm-s-monokai span.cm-variable-3, .cm-s-monokai span.cm-type { color: #66d9ef; } +.cm-s-monokai span.cm-def { color: #fd971f; } +.cm-s-monokai span.cm-bracket { color: #f8f8f2; } +.cm-s-monokai span.cm-tag { color: #f92672; } +.cm-s-monokai span.cm-header { color: #ae81ff; } +.cm-s-monokai span.cm-link { color: #ae81ff; } +.cm-s-monokai span.cm-error { background: #f92672; color: #f8f8f0; } + +.cm-s-monokai .CodeMirror-activeline-background { background: #373831; } +.cm-s-monokai .CodeMirror-matchingbracket { + text-decoration: underline; + color: white !important; +} diff --git a/global/codemirror/theme/neat.css b/global/codemirror/theme/neat.css new file mode 100644 index 00000000..4267b1a3 --- /dev/null +++ b/global/codemirror/theme/neat.css @@ -0,0 +1,12 @@ +.cm-s-neat span.cm-comment { color: #a86; } +.cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } +.cm-s-neat span.cm-string { color: #a22; } +.cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } +.cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } +.cm-s-neat span.cm-variable { color: black; } +.cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } +.cm-s-neat span.cm-meta { color: #555; } +.cm-s-neat span.cm-link { color: #3a3; } + +.cm-s-neat .CodeMirror-activeline-background { background: #e8f2ff; } +.cm-s-neat .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } diff --git a/global/codemirror/theme/neo.css b/global/codemirror/theme/neo.css new file mode 100644 index 00000000..b28d5c65 --- /dev/null +++ b/global/codemirror/theme/neo.css @@ -0,0 +1,43 @@ +/* neo theme for codemirror */ + +/* Color scheme */ + +.cm-s-neo.CodeMirror { + background-color:#ffffff; + color:#2e383c; + line-height:1.4375; +} +.cm-s-neo .cm-comment { color:#75787b; } +.cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; } +.cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; } +.cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; } +.cm-s-neo .cm-string { color:#b35e14; } +.cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; } + + +/* Editor styling */ + +.cm-s-neo pre { + padding:0; +} + +.cm-s-neo .CodeMirror-gutters { + border:none; + border-right:10px solid transparent; + background-color:transparent; +} + +.cm-s-neo .CodeMirror-linenumber { + padding:0; + color:#e0e2e5; +} + +.cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } +.cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } + +.cm-s-neo .CodeMirror-cursor { + width: auto; + border: 0; + background: rgba(155,157,162,0.37); + z-index: 1; +} diff --git a/global/codemirror/theme/night.css b/global/codemirror/theme/night.css new file mode 100644 index 00000000..f631bf42 --- /dev/null +++ b/global/codemirror/theme/night.css @@ -0,0 +1,27 @@ +/* Loosely based on the Midnight Textmate theme */ + +.cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; } +.cm-s-night div.CodeMirror-selected { background: #447; } +.cm-s-night .CodeMirror-line::selection, .cm-s-night .CodeMirror-line > span::selection, .cm-s-night .CodeMirror-line > span > span::selection { background: rgba(68, 68, 119, .99); } +.cm-s-night .CodeMirror-line::-moz-selection, .cm-s-night .CodeMirror-line > span::-moz-selection, .cm-s-night .CodeMirror-line > span > span::-moz-selection { background: rgba(68, 68, 119, .99); } +.cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } +.cm-s-night .CodeMirror-guttermarker { color: white; } +.cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; } +.cm-s-night .CodeMirror-linenumber { color: #f8f8f8; } +.cm-s-night .CodeMirror-cursor { border-left: 1px solid white; } + +.cm-s-night span.cm-comment { color: #8900d1; } +.cm-s-night span.cm-atom { color: #845dc4; } +.cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } +.cm-s-night span.cm-keyword { color: #599eff; } +.cm-s-night span.cm-string { color: #37f14a; } +.cm-s-night span.cm-meta { color: #7678e2; } +.cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } +.cm-s-night span.cm-variable-3, .cm-s-night span.cm-def, .cm-s-night span.cm-type { color: white; } +.cm-s-night span.cm-bracket { color: #8da6ce; } +.cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } +.cm-s-night span.cm-link { color: #845dc4; } +.cm-s-night span.cm-error { color: #9d1e15; } + +.cm-s-night .CodeMirror-activeline-background { background: #1C005A; } +.cm-s-night .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } diff --git a/global/codemirror/theme/panda-syntax.css b/global/codemirror/theme/panda-syntax.css new file mode 100644 index 00000000..6de58b56 --- /dev/null +++ b/global/codemirror/theme/panda-syntax.css @@ -0,0 +1,85 @@ +/* + Name: Panda Syntax + Author: Siamak Mokhtari (http://github.com/siamak/) + CodeMirror template by Siamak Mokhtari (https://github.com/siamak/atom-panda-syntax) +*/ +.cm-s-panda-syntax { + background: #292A2B; + color: #E6E6E6; + line-height: 1.5; + font-family: 'Operator Mono', 'Source Sans Pro', Menlo, Monaco, Consolas, Courier New, monospace; +} +.cm-s-panda-syntax .CodeMirror-cursor { border-color: #ff2c6d; } +.cm-s-panda-syntax .CodeMirror-activeline-background { + background: rgba(99, 123, 156, 0.1); +} +.cm-s-panda-syntax .CodeMirror-selected { + background: #FFF; +} +.cm-s-panda-syntax .cm-comment { + font-style: italic; + color: #676B79; +} +.cm-s-panda-syntax .cm-operator { + color: #f3f3f3; +} +.cm-s-panda-syntax .cm-string { + color: #19F9D8; +} +.cm-s-panda-syntax .cm-string-2 { + color: #FFB86C; +} + +.cm-s-panda-syntax .cm-tag { + color: #ff2c6d; +} +.cm-s-panda-syntax .cm-meta { + color: #b084eb; +} + +.cm-s-panda-syntax .cm-number { + color: #FFB86C; +} +.cm-s-panda-syntax .cm-atom { + color: #ff2c6d; +} +.cm-s-panda-syntax .cm-keyword { + color: #FF75B5; +} +.cm-s-panda-syntax .cm-variable { + color: #ffb86c; +} +.cm-s-panda-syntax .cm-variable-2 { + color: #ff9ac1; +} +.cm-s-panda-syntax .cm-variable-3, .cm-s-panda-syntax .cm-type { + color: #ff9ac1; +} + +.cm-s-panda-syntax .cm-def { + color: #e6e6e6; +} +.cm-s-panda-syntax .cm-property { + color: #f3f3f3; +} +.cm-s-panda-syntax .cm-unit { + color: #ffb86c; +} + +.cm-s-panda-syntax .cm-attribute { + color: #ffb86c; +} + +.cm-s-panda-syntax .CodeMirror-matchingbracket { + border-bottom: 1px dotted #19F9D8; + padding-bottom: 2px; + color: #e6e6e6; +} +.cm-s-panda-syntax .CodeMirror-gutters { + background: #292a2b; + border-right-color: rgba(255, 255, 255, 0.1); +} +.cm-s-panda-syntax .CodeMirror-linenumber { + color: #e6e6e6; + opacity: 0.6; +} diff --git a/global/codemirror/theme/paraiso-dark.css b/global/codemirror/theme/paraiso-dark.css new file mode 100644 index 00000000..aa9d207e --- /dev/null +++ b/global/codemirror/theme/paraiso-dark.css @@ -0,0 +1,38 @@ +/* + + Name: Paraíso (Dark) + Author: Jan T. Sott + + Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) + +*/ + +.cm-s-paraiso-dark.CodeMirror { background: #2f1e2e; color: #b9b6b0; } +.cm-s-paraiso-dark div.CodeMirror-selected { background: #41323f; } +.cm-s-paraiso-dark .CodeMirror-line::selection, .cm-s-paraiso-dark .CodeMirror-line > span::selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::selection { background: rgba(65, 50, 63, .99); } +.cm-s-paraiso-dark .CodeMirror-line::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(65, 50, 63, .99); } +.cm-s-paraiso-dark .CodeMirror-gutters { background: #2f1e2e; border-right: 0px; } +.cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; } +.cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; } +.cm-s-paraiso-dark .CodeMirror-linenumber { color: #776e71; } +.cm-s-paraiso-dark .CodeMirror-cursor { border-left: 1px solid #8d8687; } + +.cm-s-paraiso-dark span.cm-comment { color: #e96ba8; } +.cm-s-paraiso-dark span.cm-atom { color: #815ba4; } +.cm-s-paraiso-dark span.cm-number { color: #815ba4; } + +.cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute { color: #48b685; } +.cm-s-paraiso-dark span.cm-keyword { color: #ef6155; } +.cm-s-paraiso-dark span.cm-string { color: #fec418; } + +.cm-s-paraiso-dark span.cm-variable { color: #48b685; } +.cm-s-paraiso-dark span.cm-variable-2 { color: #06b6ef; } +.cm-s-paraiso-dark span.cm-def { color: #f99b15; } +.cm-s-paraiso-dark span.cm-bracket { color: #b9b6b0; } +.cm-s-paraiso-dark span.cm-tag { color: #ef6155; } +.cm-s-paraiso-dark span.cm-link { color: #815ba4; } +.cm-s-paraiso-dark span.cm-error { background: #ef6155; color: #8d8687; } + +.cm-s-paraiso-dark .CodeMirror-activeline-background { background: #4D344A; } +.cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } diff --git a/global/codemirror/theme/paraiso-light.css b/global/codemirror/theme/paraiso-light.css new file mode 100644 index 00000000..ae0c755f --- /dev/null +++ b/global/codemirror/theme/paraiso-light.css @@ -0,0 +1,38 @@ +/* + + Name: Paraíso (Light) + Author: Jan T. Sott + + Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) + +*/ + +.cm-s-paraiso-light.CodeMirror { background: #e7e9db; color: #41323f; } +.cm-s-paraiso-light div.CodeMirror-selected { background: #b9b6b0; } +.cm-s-paraiso-light .CodeMirror-line::selection, .cm-s-paraiso-light .CodeMirror-line > span::selection, .cm-s-paraiso-light .CodeMirror-line > span > span::selection { background: #b9b6b0; } +.cm-s-paraiso-light .CodeMirror-line::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span > span::-moz-selection { background: #b9b6b0; } +.cm-s-paraiso-light .CodeMirror-gutters { background: #e7e9db; border-right: 0px; } +.cm-s-paraiso-light .CodeMirror-guttermarker { color: black; } +.cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; } +.cm-s-paraiso-light .CodeMirror-linenumber { color: #8d8687; } +.cm-s-paraiso-light .CodeMirror-cursor { border-left: 1px solid #776e71; } + +.cm-s-paraiso-light span.cm-comment { color: #e96ba8; } +.cm-s-paraiso-light span.cm-atom { color: #815ba4; } +.cm-s-paraiso-light span.cm-number { color: #815ba4; } + +.cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute { color: #48b685; } +.cm-s-paraiso-light span.cm-keyword { color: #ef6155; } +.cm-s-paraiso-light span.cm-string { color: #fec418; } + +.cm-s-paraiso-light span.cm-variable { color: #48b685; } +.cm-s-paraiso-light span.cm-variable-2 { color: #06b6ef; } +.cm-s-paraiso-light span.cm-def { color: #f99b15; } +.cm-s-paraiso-light span.cm-bracket { color: #41323f; } +.cm-s-paraiso-light span.cm-tag { color: #ef6155; } +.cm-s-paraiso-light span.cm-link { color: #815ba4; } +.cm-s-paraiso-light span.cm-error { background: #ef6155; color: #776e71; } + +.cm-s-paraiso-light .CodeMirror-activeline-background { background: #CFD1C4; } +.cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } diff --git a/global/codemirror/theme/pastel-on-dark.css b/global/codemirror/theme/pastel-on-dark.css new file mode 100644 index 00000000..60435dd1 --- /dev/null +++ b/global/codemirror/theme/pastel-on-dark.css @@ -0,0 +1,52 @@ +/** + * Pastel On Dark theme ported from ACE editor + * @license MIT + * @copyright AtomicPages LLC 2014 + * @author Dennis Thompson, AtomicPages LLC + * @version 1.1 + * @source https://github.com/atomicpages/codemirror-pastel-on-dark-theme + */ + +.cm-s-pastel-on-dark.CodeMirror { + background: #2c2827; + color: #8F938F; + line-height: 1.5; +} +.cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2); } +.cm-s-pastel-on-dark .CodeMirror-line::selection, .cm-s-pastel-on-dark .CodeMirror-line > span::selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::selection { background: rgba(221,240,255,0.2); } +.cm-s-pastel-on-dark .CodeMirror-line::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(221,240,255,0.2); } + +.cm-s-pastel-on-dark .CodeMirror-gutters { + background: #34302f; + border-right: 0px; + padding: 0 3px; +} +.cm-s-pastel-on-dark .CodeMirror-guttermarker { color: white; } +.cm-s-pastel-on-dark .CodeMirror-guttermarker-subtle { color: #8F938F; } +.cm-s-pastel-on-dark .CodeMirror-linenumber { color: #8F938F; } +.cm-s-pastel-on-dark .CodeMirror-cursor { border-left: 1px solid #A7A7A7; } +.cm-s-pastel-on-dark span.cm-comment { color: #A6C6FF; } +.cm-s-pastel-on-dark span.cm-atom { color: #DE8E30; } +.cm-s-pastel-on-dark span.cm-number { color: #CCCCCC; } +.cm-s-pastel-on-dark span.cm-property { color: #8F938F; } +.cm-s-pastel-on-dark span.cm-attribute { color: #a6e22e; } +.cm-s-pastel-on-dark span.cm-keyword { color: #AEB2F8; } +.cm-s-pastel-on-dark span.cm-string { color: #66A968; } +.cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; } +.cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; } +.cm-s-pastel-on-dark span.cm-variable-3, .cm-s-pastel-on-dark span.cm-type { color: #DE8E30; } +.cm-s-pastel-on-dark span.cm-def { color: #757aD8; } +.cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; } +.cm-s-pastel-on-dark span.cm-tag { color: #C1C144; } +.cm-s-pastel-on-dark span.cm-link { color: #ae81ff; } +.cm-s-pastel-on-dark span.cm-qualifier,.cm-s-pastel-on-dark span.cm-builtin { color: #C1C144; } +.cm-s-pastel-on-dark span.cm-error { + background: #757aD8; + color: #f8f8f0; +} +.cm-s-pastel-on-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.031); } +.cm-s-pastel-on-dark .CodeMirror-matchingbracket { + border: 1px solid rgba(255,255,255,0.25); + color: #8F938F !important; + margin: -1px -1px 0 -1px; +} diff --git a/global/codemirror/theme/railscasts.css b/global/codemirror/theme/railscasts.css new file mode 100644 index 00000000..aeff0449 --- /dev/null +++ b/global/codemirror/theme/railscasts.css @@ -0,0 +1,34 @@ +/* + + Name: Railscasts + Author: Ryan Bates (http://railscasts.com) + + CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) + Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) + +*/ + +.cm-s-railscasts.CodeMirror {background: #2b2b2b; color: #f4f1ed;} +.cm-s-railscasts div.CodeMirror-selected {background: #272935 !important;} +.cm-s-railscasts .CodeMirror-gutters {background: #2b2b2b; border-right: 0px;} +.cm-s-railscasts .CodeMirror-linenumber {color: #5a647e;} +.cm-s-railscasts .CodeMirror-cursor {border-left: 1px solid #d4cfc9 !important;} + +.cm-s-railscasts span.cm-comment {color: #bc9458;} +.cm-s-railscasts span.cm-atom {color: #b6b3eb;} +.cm-s-railscasts span.cm-number {color: #b6b3eb;} + +.cm-s-railscasts span.cm-property, .cm-s-railscasts span.cm-attribute {color: #a5c261;} +.cm-s-railscasts span.cm-keyword {color: #da4939;} +.cm-s-railscasts span.cm-string {color: #ffc66d;} + +.cm-s-railscasts span.cm-variable {color: #a5c261;} +.cm-s-railscasts span.cm-variable-2 {color: #6d9cbe;} +.cm-s-railscasts span.cm-def {color: #cc7833;} +.cm-s-railscasts span.cm-error {background: #da4939; color: #d4cfc9;} +.cm-s-railscasts span.cm-bracket {color: #f4f1ed;} +.cm-s-railscasts span.cm-tag {color: #da4939;} +.cm-s-railscasts span.cm-link {color: #b6b3eb;} + +.cm-s-railscasts .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} +.cm-s-railscasts .CodeMirror-activeline-background { background: #303040; } diff --git a/global/codemirror/theme/rubyblue.css b/global/codemirror/theme/rubyblue.css new file mode 100644 index 00000000..1f181b06 --- /dev/null +++ b/global/codemirror/theme/rubyblue.css @@ -0,0 +1,25 @@ +.cm-s-rubyblue.CodeMirror { background: #112435; color: white; } +.cm-s-rubyblue div.CodeMirror-selected { background: #38566F; } +.cm-s-rubyblue .CodeMirror-line::selection, .cm-s-rubyblue .CodeMirror-line > span::selection, .cm-s-rubyblue .CodeMirror-line > span > span::selection { background: rgba(56, 86, 111, 0.99); } +.cm-s-rubyblue .CodeMirror-line::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 86, 111, 0.99); } +.cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; } +.cm-s-rubyblue .CodeMirror-guttermarker { color: white; } +.cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; } +.cm-s-rubyblue .CodeMirror-linenumber { color: white; } +.cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white; } + +.cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; } +.cm-s-rubyblue span.cm-atom { color: #F4C20B; } +.cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; } +.cm-s-rubyblue span.cm-keyword { color: #F0F; } +.cm-s-rubyblue span.cm-string { color: #F08047; } +.cm-s-rubyblue span.cm-meta { color: #F0F; } +.cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; } +.cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def, .cm-s-rubyblue span.cm-type { color: white; } +.cm-s-rubyblue span.cm-bracket { color: #F0F; } +.cm-s-rubyblue span.cm-link { color: #F4C20B; } +.cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; } +.cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; } +.cm-s-rubyblue span.cm-error { color: #AF2018; } + +.cm-s-rubyblue .CodeMirror-activeline-background { background: #173047; } diff --git a/global/codemirror/theme/seti.css b/global/codemirror/theme/seti.css new file mode 100644 index 00000000..814f76f7 --- /dev/null +++ b/global/codemirror/theme/seti.css @@ -0,0 +1,44 @@ +/* + + Name: seti + Author: Michael Kaminsky (http://github.com/mkaminsky11) + + Original seti color scheme by Jesse Weed (https://github.com/jesseweed/seti-syntax) + +*/ + + +.cm-s-seti.CodeMirror { + background-color: #151718 !important; + color: #CFD2D1 !important; + border: none; +} +.cm-s-seti .CodeMirror-gutters { + color: #404b53; + background-color: #0E1112; + border: none; +} +.cm-s-seti .CodeMirror-cursor { border-left: solid thin #f8f8f0; } +.cm-s-seti .CodeMirror-linenumber { color: #6D8A88; } +.cm-s-seti.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } +.cm-s-seti .CodeMirror-line::selection, .cm-s-seti .CodeMirror-line > span::selection, .cm-s-seti .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } +.cm-s-seti .CodeMirror-line::-moz-selection, .cm-s-seti .CodeMirror-line > span::-moz-selection, .cm-s-seti .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } +.cm-s-seti span.cm-comment { color: #41535b; } +.cm-s-seti span.cm-string, .cm-s-seti span.cm-string-2 { color: #55b5db; } +.cm-s-seti span.cm-number { color: #cd3f45; } +.cm-s-seti span.cm-variable { color: #55b5db; } +.cm-s-seti span.cm-variable-2 { color: #a074c4; } +.cm-s-seti span.cm-def { color: #55b5db; } +.cm-s-seti span.cm-keyword { color: #ff79c6; } +.cm-s-seti span.cm-operator { color: #9fca56; } +.cm-s-seti span.cm-keyword { color: #e6cd69; } +.cm-s-seti span.cm-atom { color: #cd3f45; } +.cm-s-seti span.cm-meta { color: #55b5db; } +.cm-s-seti span.cm-tag { color: #55b5db; } +.cm-s-seti span.cm-attribute { color: #9fca56; } +.cm-s-seti span.cm-qualifier { color: #9fca56; } +.cm-s-seti span.cm-property { color: #a074c4; } +.cm-s-seti span.cm-variable-3, .cm-s-seti span.cm-type { color: #9fca56; } +.cm-s-seti span.cm-builtin { color: #9fca56; } +.cm-s-seti .CodeMirror-activeline-background { background: #101213; } +.cm-s-seti .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } diff --git a/global/codemirror/theme/solarized.css b/global/codemirror/theme/solarized.css new file mode 100644 index 00000000..d95f6c1b --- /dev/null +++ b/global/codemirror/theme/solarized.css @@ -0,0 +1,169 @@ +/* +Solarized theme for code-mirror +http://ethanschoonover.com/solarized +*/ + +/* +Solarized color palette +http://ethanschoonover.com/solarized/img/solarized-palette.png +*/ + +.solarized.base03 { color: #002b36; } +.solarized.base02 { color: #073642; } +.solarized.base01 { color: #586e75; } +.solarized.base00 { color: #657b83; } +.solarized.base0 { color: #839496; } +.solarized.base1 { color: #93a1a1; } +.solarized.base2 { color: #eee8d5; } +.solarized.base3 { color: #fdf6e3; } +.solarized.solar-yellow { color: #b58900; } +.solarized.solar-orange { color: #cb4b16; } +.solarized.solar-red { color: #dc322f; } +.solarized.solar-magenta { color: #d33682; } +.solarized.solar-violet { color: #6c71c4; } +.solarized.solar-blue { color: #268bd2; } +.solarized.solar-cyan { color: #2aa198; } +.solarized.solar-green { color: #859900; } + +/* Color scheme for code-mirror */ + +.cm-s-solarized { + line-height: 1.45em; + color-profile: sRGB; + rendering-intent: auto; +} +.cm-s-solarized.cm-s-dark { + color: #839496; + background-color: #002b36; + text-shadow: #002b36 0 1px; +} +.cm-s-solarized.cm-s-light { + background-color: #fdf6e3; + color: #657b83; + text-shadow: #eee8d5 0 1px; +} + +.cm-s-solarized .CodeMirror-widget { + text-shadow: none; +} + +.cm-s-solarized .cm-header { color: #586e75; } +.cm-s-solarized .cm-quote { color: #93a1a1; } + +.cm-s-solarized .cm-keyword { color: #cb4b16; } +.cm-s-solarized .cm-atom { color: #d33682; } +.cm-s-solarized .cm-number { color: #d33682; } +.cm-s-solarized .cm-def { color: #2aa198; } + +.cm-s-solarized .cm-variable { color: #839496; } +.cm-s-solarized .cm-variable-2 { color: #b58900; } +.cm-s-solarized .cm-variable-3, .cm-s-solarized .cm-type { color: #6c71c4; } + +.cm-s-solarized .cm-property { color: #2aa198; } +.cm-s-solarized .cm-operator { color: #6c71c4; } + +.cm-s-solarized .cm-comment { color: #586e75; font-style:italic; } + +.cm-s-solarized .cm-string { color: #859900; } +.cm-s-solarized .cm-string-2 { color: #b58900; } + +.cm-s-solarized .cm-meta { color: #859900; } +.cm-s-solarized .cm-qualifier { color: #b58900; } +.cm-s-solarized .cm-builtin { color: #d33682; } +.cm-s-solarized .cm-bracket { color: #cb4b16; } +.cm-s-solarized .CodeMirror-matchingbracket { color: #859900; } +.cm-s-solarized .CodeMirror-nonmatchingbracket { color: #dc322f; } +.cm-s-solarized .cm-tag { color: #93a1a1; } +.cm-s-solarized .cm-attribute { color: #2aa198; } +.cm-s-solarized .cm-hr { + color: transparent; + border-top: 1px solid #586e75; + display: block; +} +.cm-s-solarized .cm-link { color: #93a1a1; cursor: pointer; } +.cm-s-solarized .cm-special { color: #6c71c4; } +.cm-s-solarized .cm-em { + color: #999; + text-decoration: underline; + text-decoration-style: dotted; +} +.cm-s-solarized .cm-strong { color: #eee; } +.cm-s-solarized .cm-error, +.cm-s-solarized .cm-invalidchar { + color: #586e75; + border-bottom: 1px dotted #dc322f; +} + +.cm-s-solarized.cm-s-dark div.CodeMirror-selected { background: #073642; } +.cm-s-solarized.cm-s-dark.CodeMirror ::selection { background: rgba(7, 54, 66, 0.99); } +.cm-s-solarized.cm-s-dark .CodeMirror-line::-moz-selection, .cm-s-dark .CodeMirror-line > span::-moz-selection, .cm-s-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(7, 54, 66, 0.99); } + +.cm-s-solarized.cm-s-light div.CodeMirror-selected { background: #eee8d5; } +.cm-s-solarized.cm-s-light .CodeMirror-line::selection, .cm-s-light .CodeMirror-line > span::selection, .cm-s-light .CodeMirror-line > span > span::selection { background: #eee8d5; } +.cm-s-solarized.cm-s-light .CodeMirror-line::-moz-selection, .cm-s-ligh .CodeMirror-line > span::-moz-selection, .cm-s-ligh .CodeMirror-line > span > span::-moz-selection { background: #eee8d5; } + +/* Editor styling */ + + + +/* Little shadow on the view-port of the buffer view */ +.cm-s-solarized.CodeMirror { + -moz-box-shadow: inset 7px 0 12px -6px #000; + -webkit-box-shadow: inset 7px 0 12px -6px #000; + box-shadow: inset 7px 0 12px -6px #000; +} + +/* Remove gutter border */ +.cm-s-solarized .CodeMirror-gutters { + border-right: 0; +} + +/* Gutter colors and line number styling based of color scheme (dark / light) */ + +/* Dark */ +.cm-s-solarized.cm-s-dark .CodeMirror-gutters { + background-color: #073642; +} + +.cm-s-solarized.cm-s-dark .CodeMirror-linenumber { + color: #586e75; + text-shadow: #021014 0 -1px; +} + +/* Light */ +.cm-s-solarized.cm-s-light .CodeMirror-gutters { + background-color: #eee8d5; +} + +.cm-s-solarized.cm-s-light .CodeMirror-linenumber { + color: #839496; +} + +/* Common */ +.cm-s-solarized .CodeMirror-linenumber { + padding: 0 5px; +} +.cm-s-solarized .CodeMirror-guttermarker-subtle { color: #586e75; } +.cm-s-solarized.cm-s-dark .CodeMirror-guttermarker { color: #ddd; } +.cm-s-solarized.cm-s-light .CodeMirror-guttermarker { color: #cb4b16; } + +.cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text { + color: #586e75; +} + +/* Cursor */ +.cm-s-solarized .CodeMirror-cursor { border-left: 1px solid #819090; } + +/* Fat cursor */ +.cm-s-solarized.cm-s-light.cm-fat-cursor .CodeMirror-cursor { background: #77ee77; } +.cm-s-solarized.cm-s-light .cm-animate-fat-cursor { background-color: #77ee77; } +.cm-s-solarized.cm-s-dark.cm-fat-cursor .CodeMirror-cursor { background: #586e75; } +.cm-s-solarized.cm-s-dark .cm-animate-fat-cursor { background-color: #586e75; } + +/* Active line */ +.cm-s-solarized.cm-s-dark .CodeMirror-activeline-background { + background: rgba(255, 255, 255, 0.06); +} +.cm-s-solarized.cm-s-light .CodeMirror-activeline-background { + background: rgba(0, 0, 0, 0.06); +} diff --git a/global/codemirror/theme/the-matrix.css b/global/codemirror/theme/the-matrix.css new file mode 100644 index 00000000..c4c93c11 --- /dev/null +++ b/global/codemirror/theme/the-matrix.css @@ -0,0 +1,30 @@ +.cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; } +.cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D; } +.cm-s-the-matrix .CodeMirror-line::selection, .cm-s-the-matrix .CodeMirror-line > span::selection, .cm-s-the-matrix .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-the-matrix .CodeMirror-line::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; } +.cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; } +.cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; } +.cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; } +.cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00; } + +.cm-s-the-matrix span.cm-keyword { color: #008803; font-weight: bold; } +.cm-s-the-matrix span.cm-atom { color: #3FF; } +.cm-s-the-matrix span.cm-number { color: #FFB94F; } +.cm-s-the-matrix span.cm-def { color: #99C; } +.cm-s-the-matrix span.cm-variable { color: #F6C; } +.cm-s-the-matrix span.cm-variable-2 { color: #C6F; } +.cm-s-the-matrix span.cm-variable-3, .cm-s-the-matrix span.cm-type { color: #96F; } +.cm-s-the-matrix span.cm-property { color: #62FFA0; } +.cm-s-the-matrix span.cm-operator { color: #999; } +.cm-s-the-matrix span.cm-comment { color: #CCCCCC; } +.cm-s-the-matrix span.cm-string { color: #39C; } +.cm-s-the-matrix span.cm-meta { color: #C9F; } +.cm-s-the-matrix span.cm-qualifier { color: #FFF700; } +.cm-s-the-matrix span.cm-builtin { color: #30a; } +.cm-s-the-matrix span.cm-bracket { color: #cc7; } +.cm-s-the-matrix span.cm-tag { color: #FFBD40; } +.cm-s-the-matrix span.cm-attribute { color: #FFF700; } +.cm-s-the-matrix span.cm-error { color: #FF0000; } + +.cm-s-the-matrix .CodeMirror-activeline-background { background: #040; } diff --git a/global/codemirror/theme/tomorrow-night-bright.css b/global/codemirror/theme/tomorrow-night-bright.css new file mode 100644 index 00000000..b6dd4a92 --- /dev/null +++ b/global/codemirror/theme/tomorrow-night-bright.css @@ -0,0 +1,35 @@ +/* + + Name: Tomorrow Night - Bright + Author: Chris Kempson + + Port done by Gerard Braad + +*/ + +.cm-s-tomorrow-night-bright.CodeMirror { background: #000000; color: #eaeaea; } +.cm-s-tomorrow-night-bright div.CodeMirror-selected { background: #424242; } +.cm-s-tomorrow-night-bright .CodeMirror-gutters { background: #000000; border-right: 0px; } +.cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; } +.cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777; } +.cm-s-tomorrow-night-bright .CodeMirror-linenumber { color: #424242; } +.cm-s-tomorrow-night-bright .CodeMirror-cursor { border-left: 1px solid #6A6A6A; } + +.cm-s-tomorrow-night-bright span.cm-comment { color: #d27b53; } +.cm-s-tomorrow-night-bright span.cm-atom { color: #a16a94; } +.cm-s-tomorrow-night-bright span.cm-number { color: #a16a94; } + +.cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright span.cm-attribute { color: #99cc99; } +.cm-s-tomorrow-night-bright span.cm-keyword { color: #d54e53; } +.cm-s-tomorrow-night-bright span.cm-string { color: #e7c547; } + +.cm-s-tomorrow-night-bright span.cm-variable { color: #b9ca4a; } +.cm-s-tomorrow-night-bright span.cm-variable-2 { color: #7aa6da; } +.cm-s-tomorrow-night-bright span.cm-def { color: #e78c45; } +.cm-s-tomorrow-night-bright span.cm-bracket { color: #eaeaea; } +.cm-s-tomorrow-night-bright span.cm-tag { color: #d54e53; } +.cm-s-tomorrow-night-bright span.cm-link { color: #a16a94; } +.cm-s-tomorrow-night-bright span.cm-error { background: #d54e53; color: #6A6A6A; } + +.cm-s-tomorrow-night-bright .CodeMirror-activeline-background { background: #2a2a2a; } +.cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } diff --git a/global/codemirror/theme/tomorrow-night-eighties.css b/global/codemirror/theme/tomorrow-night-eighties.css new file mode 100644 index 00000000..2a9debc3 --- /dev/null +++ b/global/codemirror/theme/tomorrow-night-eighties.css @@ -0,0 +1,38 @@ +/* + + Name: Tomorrow Night - Eighties + Author: Chris Kempson + + CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) + Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) + +*/ + +.cm-s-tomorrow-night-eighties.CodeMirror { background: #000000; color: #CCCCCC; } +.cm-s-tomorrow-night-eighties div.CodeMirror-selected { background: #2D2D2D; } +.cm-s-tomorrow-night-eighties .CodeMirror-line::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-tomorrow-night-eighties .CodeMirror-line::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } +.cm-s-tomorrow-night-eighties .CodeMirror-gutters { background: #000000; border-right: 0px; } +.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; } +.cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color: #777; } +.cm-s-tomorrow-night-eighties .CodeMirror-linenumber { color: #515151; } +.cm-s-tomorrow-night-eighties .CodeMirror-cursor { border-left: 1px solid #6A6A6A; } + +.cm-s-tomorrow-night-eighties span.cm-comment { color: #d27b53; } +.cm-s-tomorrow-night-eighties span.cm-atom { color: #a16a94; } +.cm-s-tomorrow-night-eighties span.cm-number { color: #a16a94; } + +.cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute { color: #99cc99; } +.cm-s-tomorrow-night-eighties span.cm-keyword { color: #f2777a; } +.cm-s-tomorrow-night-eighties span.cm-string { color: #ffcc66; } + +.cm-s-tomorrow-night-eighties span.cm-variable { color: #99cc99; } +.cm-s-tomorrow-night-eighties span.cm-variable-2 { color: #6699cc; } +.cm-s-tomorrow-night-eighties span.cm-def { color: #f99157; } +.cm-s-tomorrow-night-eighties span.cm-bracket { color: #CCCCCC; } +.cm-s-tomorrow-night-eighties span.cm-tag { color: #f2777a; } +.cm-s-tomorrow-night-eighties span.cm-link { color: #a16a94; } +.cm-s-tomorrow-night-eighties span.cm-error { background: #f2777a; color: #6A6A6A; } + +.cm-s-tomorrow-night-eighties .CodeMirror-activeline-background { background: #343600; } +.cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } diff --git a/global/codemirror/theme/ttcn.css b/global/codemirror/theme/ttcn.css new file mode 100644 index 00000000..0b14ac35 --- /dev/null +++ b/global/codemirror/theme/ttcn.css @@ -0,0 +1,64 @@ +.cm-s-ttcn .cm-quote { color: #090; } +.cm-s-ttcn .cm-negative { color: #d44; } +.cm-s-ttcn .cm-positive { color: #292; } +.cm-s-ttcn .cm-header, .cm-strong { font-weight: bold; } +.cm-s-ttcn .cm-em { font-style: italic; } +.cm-s-ttcn .cm-link { text-decoration: underline; } +.cm-s-ttcn .cm-strikethrough { text-decoration: line-through; } +.cm-s-ttcn .cm-header { color: #00f; font-weight: bold; } + +.cm-s-ttcn .cm-atom { color: #219; } +.cm-s-ttcn .cm-attribute { color: #00c; } +.cm-s-ttcn .cm-bracket { color: #997; } +.cm-s-ttcn .cm-comment { color: #333333; } +.cm-s-ttcn .cm-def { color: #00f; } +.cm-s-ttcn .cm-em { font-style: italic; } +.cm-s-ttcn .cm-error { color: #f00; } +.cm-s-ttcn .cm-hr { color: #999; } +.cm-s-ttcn .cm-invalidchar { color: #f00; } +.cm-s-ttcn .cm-keyword { font-weight:bold; } +.cm-s-ttcn .cm-link { color: #00c; text-decoration: underline; } +.cm-s-ttcn .cm-meta { color: #555; } +.cm-s-ttcn .cm-negative { color: #d44; } +.cm-s-ttcn .cm-positive { color: #292; } +.cm-s-ttcn .cm-qualifier { color: #555; } +.cm-s-ttcn .cm-strikethrough { text-decoration: line-through; } +.cm-s-ttcn .cm-string { color: #006400; } +.cm-s-ttcn .cm-string-2 { color: #f50; } +.cm-s-ttcn .cm-strong { font-weight: bold; } +.cm-s-ttcn .cm-tag { color: #170; } +.cm-s-ttcn .cm-variable { color: #8B2252; } +.cm-s-ttcn .cm-variable-2 { color: #05a; } +.cm-s-ttcn .cm-variable-3, .cm-s-ttcn .cm-type { color: #085; } + +.cm-s-ttcn .cm-invalidchar { color: #f00; } + +/* ASN */ +.cm-s-ttcn .cm-accessTypes, +.cm-s-ttcn .cm-compareTypes { color: #27408B; } +.cm-s-ttcn .cm-cmipVerbs { color: #8B2252; } +.cm-s-ttcn .cm-modifier { color:#D2691E; } +.cm-s-ttcn .cm-status { color:#8B4545; } +.cm-s-ttcn .cm-storage { color:#A020F0; } +.cm-s-ttcn .cm-tags { color:#006400; } + +/* CFG */ +.cm-s-ttcn .cm-externalCommands { color: #8B4545; font-weight:bold; } +.cm-s-ttcn .cm-fileNCtrlMaskOptions, +.cm-s-ttcn .cm-sectionTitle { color: #2E8B57; font-weight:bold; } + +/* TTCN */ +.cm-s-ttcn .cm-booleanConsts, +.cm-s-ttcn .cm-otherConsts, +.cm-s-ttcn .cm-verdictConsts { color: #006400; } +.cm-s-ttcn .cm-configOps, +.cm-s-ttcn .cm-functionOps, +.cm-s-ttcn .cm-portOps, +.cm-s-ttcn .cm-sutOps, +.cm-s-ttcn .cm-timerOps, +.cm-s-ttcn .cm-verdictOps { color: #0000FF; } +.cm-s-ttcn .cm-preprocessor, +.cm-s-ttcn .cm-templateMatch, +.cm-s-ttcn .cm-ttcn3Macros { color: #27408B; } +.cm-s-ttcn .cm-types { color: #A52A2A; font-weight:bold; } +.cm-s-ttcn .cm-visibilityModifiers { font-weight:bold; } diff --git a/global/codemirror/theme/twilight.css b/global/codemirror/theme/twilight.css new file mode 100644 index 00000000..b2b1b2aa --- /dev/null +++ b/global/codemirror/theme/twilight.css @@ -0,0 +1,32 @@ +.cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/ +.cm-s-twilight div.CodeMirror-selected { background: #323232; } /**/ +.cm-s-twilight .CodeMirror-line::selection, .cm-s-twilight .CodeMirror-line > span::selection, .cm-s-twilight .CodeMirror-line > span > span::selection { background: rgba(50, 50, 50, 0.99); } +.cm-s-twilight .CodeMirror-line::-moz-selection, .cm-s-twilight .CodeMirror-line > span::-moz-selection, .cm-s-twilight .CodeMirror-line > span > span::-moz-selection { background: rgba(50, 50, 50, 0.99); } + +.cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; } +.cm-s-twilight .CodeMirror-guttermarker { color: white; } +.cm-s-twilight .CodeMirror-guttermarker-subtle { color: #aaa; } +.cm-s-twilight .CodeMirror-linenumber { color: #aaa; } +.cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white; } + +.cm-s-twilight .cm-keyword { color: #f9ee98; } /**/ +.cm-s-twilight .cm-atom { color: #FC0; } +.cm-s-twilight .cm-number { color: #ca7841; } /**/ +.cm-s-twilight .cm-def { color: #8DA6CE; } +.cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/ +.cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def, .cm-s-twilight span.cm-type { color: #607392; } /**/ +.cm-s-twilight .cm-operator { color: #cda869; } /**/ +.cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/ +.cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/ +.cm-s-twilight .cm-string-2 { color:#bd6b18; } /*?*/ +.cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/ +.cm-s-twilight .cm-builtin { color: #cda869; } /*?*/ +.cm-s-twilight .cm-tag { color: #997643; } /**/ +.cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/ +.cm-s-twilight .cm-header { color: #FF6400; } +.cm-s-twilight .cm-hr { color: #AEAEAE; } +.cm-s-twilight .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } /**/ +.cm-s-twilight .cm-error { border-bottom: 1px solid red; } + +.cm-s-twilight .CodeMirror-activeline-background { background: #27282E; } +.cm-s-twilight .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } diff --git a/global/codemirror/theme/vibrant-ink.css b/global/codemirror/theme/vibrant-ink.css new file mode 100644 index 00000000..b13ecf21 --- /dev/null +++ b/global/codemirror/theme/vibrant-ink.css @@ -0,0 +1,34 @@ +/* Taken from the popular Visual Studio Vibrant Ink Schema */ + +.cm-s-vibrant-ink.CodeMirror { background: black; color: white; } +.cm-s-vibrant-ink div.CodeMirror-selected { background: #35493c; } +.cm-s-vibrant-ink .CodeMirror-line::selection, .cm-s-vibrant-ink .CodeMirror-line > span::selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::selection { background: rgba(53, 73, 60, 0.99); } +.cm-s-vibrant-ink .CodeMirror-line::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::-moz-selection { background: rgba(53, 73, 60, 0.99); } + +.cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } +.cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; } +.cm-s-vibrant-ink .CodeMirror-guttermarker-subtle { color: #d0d0d0; } +.cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; } +.cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white; } + +.cm-s-vibrant-ink .cm-keyword { color: #CC7832; } +.cm-s-vibrant-ink .cm-atom { color: #FC0; } +.cm-s-vibrant-ink .cm-number { color: #FFEE98; } +.cm-s-vibrant-ink .cm-def { color: #8DA6CE; } +.cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D; } +.cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def, .cm-s-vibrant span.cm-type { color: #FFC66D; } +.cm-s-vibrant-ink .cm-operator { color: #888; } +.cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; } +.cm-s-vibrant-ink .cm-string { color: #A5C25C; } +.cm-s-vibrant-ink .cm-string-2 { color: red; } +.cm-s-vibrant-ink .cm-meta { color: #D8FA3C; } +.cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; } +.cm-s-vibrant-ink .cm-tag { color: #8DA6CE; } +.cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; } +.cm-s-vibrant-ink .cm-header { color: #FF6400; } +.cm-s-vibrant-ink .cm-hr { color: #AEAEAE; } +.cm-s-vibrant-ink .cm-link { color: blue; } +.cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; } + +.cm-s-vibrant-ink .CodeMirror-activeline-background { background: #27282E; } +.cm-s-vibrant-ink .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } diff --git a/global/codemirror/theme/xq-dark.css b/global/codemirror/theme/xq-dark.css new file mode 100644 index 00000000..7da1a0f7 --- /dev/null +++ b/global/codemirror/theme/xq-dark.css @@ -0,0 +1,53 @@ +/* +Copyright (C) 2011 by MarkLogic Corporation +Author: Mike Brevoort + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +.cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; } +.cm-s-xq-dark div.CodeMirror-selected { background: #27007A; } +.cm-s-xq-dark .CodeMirror-line::selection, .cm-s-xq-dark .CodeMirror-line > span::selection, .cm-s-xq-dark .CodeMirror-line > span > span::selection { background: rgba(39, 0, 122, 0.99); } +.cm-s-xq-dark .CodeMirror-line::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(39, 0, 122, 0.99); } +.cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } +.cm-s-xq-dark .CodeMirror-guttermarker { color: #FFBD40; } +.cm-s-xq-dark .CodeMirror-guttermarker-subtle { color: #f8f8f8; } +.cm-s-xq-dark .CodeMirror-linenumber { color: #f8f8f8; } +.cm-s-xq-dark .CodeMirror-cursor { border-left: 1px solid white; } + +.cm-s-xq-dark span.cm-keyword { color: #FFBD40; } +.cm-s-xq-dark span.cm-atom { color: #6C8CD5; } +.cm-s-xq-dark span.cm-number { color: #164; } +.cm-s-xq-dark span.cm-def { color: #FFF; text-decoration:underline; } +.cm-s-xq-dark span.cm-variable { color: #FFF; } +.cm-s-xq-dark span.cm-variable-2 { color: #EEE; } +.cm-s-xq-dark span.cm-variable-3, .cm-s-xq-dark span.cm-type { color: #DDD; } +.cm-s-xq-dark span.cm-property {} +.cm-s-xq-dark span.cm-operator {} +.cm-s-xq-dark span.cm-comment { color: gray; } +.cm-s-xq-dark span.cm-string { color: #9FEE00; } +.cm-s-xq-dark span.cm-meta { color: yellow; } +.cm-s-xq-dark span.cm-qualifier { color: #FFF700; } +.cm-s-xq-dark span.cm-builtin { color: #30a; } +.cm-s-xq-dark span.cm-bracket { color: #cc7; } +.cm-s-xq-dark span.cm-tag { color: #FFBD40; } +.cm-s-xq-dark span.cm-attribute { color: #FFF700; } +.cm-s-xq-dark span.cm-error { color: #f00; } + +.cm-s-xq-dark .CodeMirror-activeline-background { background: #27282E; } +.cm-s-xq-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } diff --git a/global/codemirror/theme/xq-light.css b/global/codemirror/theme/xq-light.css new file mode 100644 index 00000000..7b182ea9 --- /dev/null +++ b/global/codemirror/theme/xq-light.css @@ -0,0 +1,43 @@ +/* +Copyright (C) 2011 by MarkLogic Corporation +Author: Mike Brevoort + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ +.cm-s-xq-light span.cm-keyword { line-height: 1em; font-weight: bold; color: #5A5CAD; } +.cm-s-xq-light span.cm-atom { color: #6C8CD5; } +.cm-s-xq-light span.cm-number { color: #164; } +.cm-s-xq-light span.cm-def { text-decoration:underline; } +.cm-s-xq-light span.cm-variable { color: black; } +.cm-s-xq-light span.cm-variable-2 { color:black; } +.cm-s-xq-light span.cm-variable-3, .cm-s-xq-light span.cm-type { color: black; } +.cm-s-xq-light span.cm-property {} +.cm-s-xq-light span.cm-operator {} +.cm-s-xq-light span.cm-comment { color: #0080FF; font-style: italic; } +.cm-s-xq-light span.cm-string { color: red; } +.cm-s-xq-light span.cm-meta { color: yellow; } +.cm-s-xq-light span.cm-qualifier { color: grey; } +.cm-s-xq-light span.cm-builtin { color: #7EA656; } +.cm-s-xq-light span.cm-bracket { color: #cc7; } +.cm-s-xq-light span.cm-tag { color: #3F7F7F; } +.cm-s-xq-light span.cm-attribute { color: #7F007F; } +.cm-s-xq-light span.cm-error { color: #f00; } + +.cm-s-xq-light .CodeMirror-activeline-background { background: #e8f2ff; } +.cm-s-xq-light .CodeMirror-matchingbracket { outline:1px solid grey;color:black !important;background:yellow; } diff --git a/global/codemirror/theme/yeti.css b/global/codemirror/theme/yeti.css new file mode 100644 index 00000000..d085f724 --- /dev/null +++ b/global/codemirror/theme/yeti.css @@ -0,0 +1,44 @@ +/* + + Name: yeti + Author: Michael Kaminsky (http://github.com/mkaminsky11) + + Original yeti color scheme by Jesse Weed (https://github.com/jesseweed/yeti-syntax) + +*/ + + +.cm-s-yeti.CodeMirror { + background-color: #ECEAE8 !important; + color: #d1c9c0 !important; + border: none; +} + +.cm-s-yeti .CodeMirror-gutters { + color: #adaba6; + background-color: #E5E1DB; + border: none; +} +.cm-s-yeti .CodeMirror-cursor { border-left: solid thin #d1c9c0; } +.cm-s-yeti .CodeMirror-linenumber { color: #adaba6; } +.cm-s-yeti.CodeMirror-focused div.CodeMirror-selected { background: #DCD8D2; } +.cm-s-yeti .CodeMirror-line::selection, .cm-s-yeti .CodeMirror-line > span::selection, .cm-s-yeti .CodeMirror-line > span > span::selection { background: #DCD8D2; } +.cm-s-yeti .CodeMirror-line::-moz-selection, .cm-s-yeti .CodeMirror-line > span::-moz-selection, .cm-s-yeti .CodeMirror-line > span > span::-moz-selection { background: #DCD8D2; } +.cm-s-yeti span.cm-comment { color: #d4c8be; } +.cm-s-yeti span.cm-string, .cm-s-yeti span.cm-string-2 { color: #96c0d8; } +.cm-s-yeti span.cm-number { color: #a074c4; } +.cm-s-yeti span.cm-variable { color: #55b5db; } +.cm-s-yeti span.cm-variable-2 { color: #a074c4; } +.cm-s-yeti span.cm-def { color: #55b5db; } +.cm-s-yeti span.cm-operator { color: #9fb96e; } +.cm-s-yeti span.cm-keyword { color: #9fb96e; } +.cm-s-yeti span.cm-atom { color: #a074c4; } +.cm-s-yeti span.cm-meta { color: #96c0d8; } +.cm-s-yeti span.cm-tag { color: #96c0d8; } +.cm-s-yeti span.cm-attribute { color: #9fb96e; } +.cm-s-yeti span.cm-qualifier { color: #96c0d8; } +.cm-s-yeti span.cm-property { color: #a074c4; } +.cm-s-yeti span.cm-builtin { color: #a074c4; } +.cm-s-yeti span.cm-variable-3, .cm-s-yeti span.cm-type { color: #96c0d8; } +.cm-s-yeti .CodeMirror-activeline-background { background: #E7E4E0; } +.cm-s-yeti .CodeMirror-matchingbracket { text-decoration: underline; } diff --git a/global/codemirror/theme/zenburn.css b/global/codemirror/theme/zenburn.css new file mode 100644 index 00000000..781c40ac --- /dev/null +++ b/global/codemirror/theme/zenburn.css @@ -0,0 +1,37 @@ +/** + * " + * Using Zenburn color palette from the Emacs Zenburn Theme + * https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el + * + * Also using parts of https://github.com/xavi/coderay-lighttable-theme + * " + * From: https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css + */ + +.cm-s-zenburn .CodeMirror-gutters { background: #3f3f3f !important; } +.cm-s-zenburn .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { color: #999; } +.cm-s-zenburn .CodeMirror-cursor { border-left: 1px solid white; } +.cm-s-zenburn { background-color: #3f3f3f; color: #dcdccc; } +.cm-s-zenburn span.cm-builtin { color: #dcdccc; font-weight: bold; } +.cm-s-zenburn span.cm-comment { color: #7f9f7f; } +.cm-s-zenburn span.cm-keyword { color: #f0dfaf; font-weight: bold; } +.cm-s-zenburn span.cm-atom { color: #bfebbf; } +.cm-s-zenburn span.cm-def { color: #dcdccc; } +.cm-s-zenburn span.cm-variable { color: #dfaf8f; } +.cm-s-zenburn span.cm-variable-2 { color: #dcdccc; } +.cm-s-zenburn span.cm-string { color: #cc9393; } +.cm-s-zenburn span.cm-string-2 { color: #cc9393; } +.cm-s-zenburn span.cm-number { color: #dcdccc; } +.cm-s-zenburn span.cm-tag { color: #93e0e3; } +.cm-s-zenburn span.cm-property { color: #dfaf8f; } +.cm-s-zenburn span.cm-attribute { color: #dfaf8f; } +.cm-s-zenburn span.cm-qualifier { color: #7cb8bb; } +.cm-s-zenburn span.cm-meta { color: #f0dfaf; } +.cm-s-zenburn span.cm-header { color: #f0efd0; } +.cm-s-zenburn span.cm-operator { color: #f0efd0; } +.cm-s-zenburn span.CodeMirror-matchingbracket { box-sizing: border-box; background: transparent; border-bottom: 1px solid; } +.cm-s-zenburn span.CodeMirror-nonmatchingbracket { border-bottom: 1px solid; background: none; } +.cm-s-zenburn .CodeMirror-activeline { background: #000000; } +.cm-s-zenburn .CodeMirror-activeline-background { background: #000000; } +.cm-s-zenburn div.CodeMirror-selected { background: #545454; } +.cm-s-zenburn .CodeMirror-focused div.CodeMirror-selected { background: #4f4f4f; } diff --git a/global/css/field_types.php b/global/css/field_types.php new file mode 100644 index 00000000..47efddf2 --- /dev/null +++ b/global/css/field_types.php @@ -0,0 +1,13 @@ + + {$LANG.text_email_template_text_1_c} +

    + + +{foreach from=$fields item=field} +{if $field.is_system_field == "yes"} +{if $field.col_name == "submission_id"} + + + + +{elseif $field.col_name == "last_modified_date"} + + + + +{elseif $field.col_name == "ip_address"} + + + + +{/if} +{elseif $field.is_file_field == "yes"} + + + + +{else} + + + + +{/if} +{/foreach} +
    {$field.field_title}{literal}{$SUBMISSIONID}{/literal}
    {$LANG.phrase_last_modified}{literal}{$LASTMODIFIEDDATE}{/literal}
    {$LANG.phrase_ip_address}{literal}{$IPADDRESS}{/literal}
    {$field.field_title} + {literal}{display_files format="html" files=$FILENAMES_{/literal}{$field.field_name}{literal} folder=$FOLDERURL_{/literal}{$field.field_name}{literal}}{/literal} +
    {$field.field_title}{literal}{$ANSWER_{/literal}{$field.field_name}{literal}}{/literal}
    + +

    + {$LANG.phrase_submission_made} +

    \ No newline at end of file diff --git a/global/emails/patterns/html_admin_loop.tpl b/global/emails/patterns/html_admin_loop.tpl new file mode 100644 index 00000000..71d1438e --- /dev/null +++ b/global/emails/patterns/html_admin_loop.tpl @@ -0,0 +1,25 @@ +

    + {$LANG.text_email_template_text_1_c} +

    + + +{literal}{foreach from=$fields item=field} +{if $field.col_name != "submission_date"} + {if $field.is_file_field == "yes"} + + + + + {else} + + + + + {/if} +{/if} +{/foreach}{/literal} +
    {$field.field_title}{display_files format="html" files=$FILENAMES_{$field.field_name} folder=$FOLDERURL_{$field.field_name}}
    {$field.field_title}{$field.answer}
    + +

    + {$LANG.phrase_submission_made} +

    \ No newline at end of file diff --git a/global/emails/patterns/html_admin_loop_omit_empty.tpl b/global/emails/patterns/html_admin_loop_omit_empty.tpl new file mode 100644 index 00000000..39b7efce --- /dev/null +++ b/global/emails/patterns/html_admin_loop_omit_empty.tpl @@ -0,0 +1,25 @@ +

    + {$LANG.text_email_template_text_1_c} +

    + + +{literal}{foreach from=$fields item=field} +{if $field.col_name != "submission_date" && $field.answer} + {if $field.is_file_field == "yes"} + + + + + {else} + + + + + {/if} +{/if} +{/foreach}{/literal} +
    {$field.field_title}:{display_files format="html" files=$FILENAMES_{$field.field_name} folder=$FOLDERURL_{$field.field_name}}
    {$field.field_title}:{$field.answer}
    + +

    + {$LANG.phrase_submission_made} +

    diff --git a/global/emails/patterns/html_admin_notification.tpl b/global/emails/patterns/html_admin_notification.tpl new file mode 100644 index 00000000..b3b767e1 --- /dev/null +++ b/global/emails/patterns/html_admin_notification.tpl @@ -0,0 +1,7 @@ +

    + {$LANG.text_email_template_text_1} +

    + +

    + {$LANG.phrase_submission_made} +

    \ No newline at end of file diff --git a/global/emails/patterns/html_admin_omit_empty.tpl b/global/emails/patterns/html_admin_omit_empty.tpl new file mode 100644 index 00000000..ca972e87 --- /dev/null +++ b/global/emails/patterns/html_admin_omit_empty.tpl @@ -0,0 +1,44 @@ +

    + {$LANG.text_email_template_text_1_c} +

    + + +{foreach from=$fields item=field} +{if $field.is_system_field == "yes"} +{if $field.col_name == "submission_id"} + + + + +{elseif $field.col_name == "last_modified_date"} + + + + +{elseif $field.col_name == "ip_address"} + + + + +{/if} +{elseif $field.is_file_field == "yes"} +{literal}{if $FILENAME_{/literal}{$field.field_name}{literal}}{/literal} + + + + +{literal}{/if}{/literal} +{else} +{literal}{if $ANSWER_{/literal}{$field.field_name}{literal}}{/literal} + + + + +{literal}{/if}{/literal} +{/if} +{/foreach} +
    {$field.field_title}{literal}{$SUBMISSIONID}{/literal}
    {$LANG.phrase_last_modified}{literal}{$LASTMODIFIEDDATE}{/literal}
    {$LANG.phrase_ip_address}{literal}{$IPADDRESS}{/literal}
    {$field.field_title}{literal}{display_files format="html" files=$FILENAMES_{/literal}{$field.field_name}{literal} folder=$FOLDERURL_{/literal}{$field.field_name}{literal}}{/literal}
    {$field.field_title}{literal}{$ANSWER_{/literal}{$field.field_name}{literal}}{/literal}
    + +

    + {$LANG.phrase_submission_made} +

    \ No newline at end of file diff --git a/global/emails/patterns/html_programming_example.tpl b/global/emails/patterns/html_programming_example.tpl new file mode 100644 index 00000000..384abb63 --- /dev/null +++ b/global/emails/patterns/html_programming_example.tpl @@ -0,0 +1,59 @@ + + +{literal}{foreach from=$fields item=field} +
    Field: {$field.field_title}
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    [field_id]{$field.field_id}
    [form_id]{$field.form_id}
    [field_name]{$field.field_name}
    [field_size]{$field.field_size}
    [field_type_id]{$field.field_type_id}
    [data_type]{$field.data_type}
    [field_title]{$field.field_title}
    [col_name]{$field.col_name}
    [list_order]{$field.list_order}
    [include_on_redirect]{$field.include_on_redirect}
    [answer]{$field.answer}
    + +
    +{/foreach}{/literal} \ No newline at end of file diff --git a/global/emails/patterns/html_user.tpl b/global/emails/patterns/html_user.tpl new file mode 100644 index 00000000..44009f62 --- /dev/null +++ b/global/emails/patterns/html_user.tpl @@ -0,0 +1,40 @@ +

    + {$LANG.text_email_template_thanks} +

    + + +{foreach from=$fields item=field} +{if $field.is_system_field == "yes"} +{if $field.col_name == "submission_id"} + + + + +{elseif $field.col_name == "last_modified_date"} + + + + +{elseif $field.col_name == "ip_address"} + + + + +{/if} +{elseif $field.is_file_field == "yes"} + + + + +{else} + + + + +{/if} +{/foreach} +
    {$field.field_title}{literal}{$SUBMISSIONID}{/literal}
    {$LANG.phrase_last_modified}{literal}{$LASTMODIFIEDDATE}{/literal}
    {$LANG.phrase_ip_address}{literal}{$IPADDRESS}{/literal}
    {$field.field_title}{literal}{display_files format="html" files=$FILENAMES_{/literal}{$field.field_name}{literal} folder=$FOLDERURL_{/literal}{$field.field_name}{literal}}{/literal}
    {$field.field_title}{literal}{$ANSWER_{/literal}{$field.field_name}{literal}}{/literal}
    + +

    + {$LANG.phrase_submission_made} +

    \ No newline at end of file diff --git a/global/emails/patterns/html_user_loop.tpl b/global/emails/patterns/html_user_loop.tpl new file mode 100644 index 00000000..8af219cb --- /dev/null +++ b/global/emails/patterns/html_user_loop.tpl @@ -0,0 +1,25 @@ +

    + {$LANG.text_email_template_thanks} +

    + + +{literal}{foreach from=$fields item=field} +{if $field.col_name != "submission_date"} + {if $field.is_file_field == "yes"} + + + + + {else} + + + + + {/if} +{/if} +{/foreach}{/literal} +
    {$field.field_title}:{display_files format="html" files=$FILENAMES_{$field.field_name} folder=$FOLDERURL_{$field.field_name}}
    {$field.field_title}:{$field.answer}
    + +

    + {$LANG.phrase_submission_made} +

    \ No newline at end of file diff --git a/global/emails/patterns/html_user_loop_omit_empty.tpl b/global/emails/patterns/html_user_loop_omit_empty.tpl new file mode 100644 index 00000000..fcc60f2e --- /dev/null +++ b/global/emails/patterns/html_user_loop_omit_empty.tpl @@ -0,0 +1,25 @@ +

    + {$LANG.text_email_template_thanks} +

    + + +{literal}{foreach from=$fields item=field} +{if $field.col_name != "submission_date" && $field.answer} + {if $field.is_file_field == "yes"} + + + + + {else} + + + + + {/if} +{/if} +{/foreach}{/literal} +
    {$field.field_title}:{display_files format="html" files=$FILENAMES_{$field.field_name} folder=$FOLDERURL_{$field.field_name}}
    {$field.field_title}:{$field.answer}
    + +

    + {$LANG.phrase_submission_made} +

    \ No newline at end of file diff --git a/global/emails/patterns/html_user_notification.tpl b/global/emails/patterns/html_user_notification.tpl new file mode 100644 index 00000000..2283499e --- /dev/null +++ b/global/emails/patterns/html_user_notification.tpl @@ -0,0 +1,7 @@ +

    + {$LANG.text_email_template_thanks} +

    + +

    + {$LANG.phrase_submission_made} +

    \ No newline at end of file diff --git a/global/emails/patterns/html_user_omit_empty.tpl b/global/emails/patterns/html_user_omit_empty.tpl new file mode 100644 index 00000000..7c32c29d --- /dev/null +++ b/global/emails/patterns/html_user_omit_empty.tpl @@ -0,0 +1,44 @@ +

    + {$LANG.text_email_template_thanks} +

    + + +{foreach from=$fields item=field} +{if $field.is_system_field == "yes"} +{if $field.col_name == "submission_id"} + + + + +{elseif $field.col_name == "last_modified_date"} + + + + +{elseif $field.col_name == "ip_address"} + + + + +{/if} +{elseif $field.is_file_field == "yes"} +{literal}{if $FILENAME_{/literal}{$field.field_name}{literal}}{/literal} + + + + +{literal}{/if}{/literal} +{else} +{literal}{if $ANSWER_{/literal}{$field.field_name}{literal}}{/literal} + + + + +{literal}{/if}{/literal} +{/if} +{/foreach} +
    {$field.field_title}{literal}{$SUBMISSIONID}{/literal}
    {$LANG.phrase_last_modified}{literal}{$LASTMODIFIEDDATE}{/literal}
    {$LANG.phrase_ip_address}{literal}{$IPADDRESS}{/literal}
    {$field.field_title}{literal}{display_files format="html" files=$FILENAMES_{/literal}{$field.field_name}{literal} folder=$FOLDERURL_{/literal}{$field.field_name}{literal}}{/literal}
    {$field.field_title}{literal}{$ANSWER_{/literal}{$field.field_name}{literal}}{/literal}
    + +

    + {$LANG.phrase_submission_made} +

    \ No newline at end of file diff --git a/global/emails/patterns/index.php b/global/emails/patterns/index.php new file mode 100644 index 00000000..af405c5b --- /dev/null +++ b/global/emails/patterns/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/global/emails/patterns/patterns.ini b/global/emails/patterns/patterns.ini new file mode 100644 index 00000000..c659b023 --- /dev/null +++ b/global/emails/patterns/patterns.ini @@ -0,0 +1,100 @@ +; This file defines all meta information for the "email patterns". Email Patterns are pre-built structures for +; email content which can be used to quickly generate the content of an email field, found in the HTML and Text +; fields of the Edit Email >> Content tab. This file contains the following: +; 1. the labels for the templates, as they appear in the dropdowns +; 2. which section - text or HTML - each pattern should appear. +; 3. an additional optgroup, allowing you to create sub-groups of email patterns + + +[html_patterns] + +pattern1_name = "To Administrator / Client"; +pattern1_file = "html_admin.tpl"; +pattern1_optgroup = "All fields"; + +pattern2_name = "To Administrator / Client - Omit Empty Fields"; +pattern2_file = "html_admin_omit_empty.tpl"; +pattern2_optgroup = "All fields"; + +pattern3_name = "To User"; +pattern3_file = "html_user.tpl"; +pattern3_optgroup = "All fields"; + +pattern4_name = "To User - Omit Empty Fields"; +pattern4_file = "html_user_omit_empty.tpl"; +pattern4_optgroup = "All fields"; + +pattern5_name = "To Administrator / Client"; +pattern5_file = "html_admin_loop.tpl"; +pattern5_optgroup = "Smarty Loops"; + +pattern6_name = "To Administrator / Client - Omit Empty Fields"; +pattern6_file = "html_admin_loop_omit_empty.tpl"; +pattern6_optgroup = "Smarty Loops"; + +pattern7_name = "To User"; +pattern7_file = "html_user_loop.tpl"; +pattern7_optgroup = "Smarty Loops"; + +pattern8_name = "To User - Omit Empty Fields"; +pattern8_file = "html_user_loop_omit_empty.tpl"; +pattern8_optgroup = "Smarty Loops"; + +pattern9_name = "To Administrator / Client"; +pattern9_file = "html_admin_notification.tpl"; +pattern9_optgroup = "Notification Only"; + +pattern10_name = "To Users"; +pattern10_file = "html_user_notification.tpl"; +pattern10_optgroup = "Notification Only"; + +pattern11_name = "All available field attributes"; +pattern11_file = "html_programming_example.tpl"; +pattern11_optgroup = "Programming Example"; + + +[text_patterns] + +pattern1_name = "To Administrator / Client"; +pattern1_file = "text_admin.tpl"; +pattern1_optgroup = "All fields"; + +pattern2_name = "To Administrator / Client - Omit Empty Fields"; +pattern2_file = "text_admin_omit_empty.tpl"; +pattern2_optgroup = "All fields"; + +pattern3_name = "To User"; +pattern3_file = "text_user.tpl"; +pattern3_optgroup = "All fields"; + +pattern4_name = "To User - Omit Empty Fields"; +pattern4_file = "text_user_omit_empty.tpl"; +pattern4_optgroup = "All fields"; + +pattern5_name = "To Administrator / Client"; +pattern5_file = "text_admin_loop.tpl"; +pattern5_optgroup = "Smarty Loops"; + +pattern6_name = "To Administrator / Client - Omit Empty Fields"; +pattern6_file = "text_admin_loop_omit_empty.tpl"; +pattern6_optgroup = "Smarty Loops"; + +pattern7_name = "To User"; +pattern7_file = "text_user_loop.tpl"; +pattern7_optgroup = "Smarty Loops"; + +pattern8_name = "To User - Omit Empty Fields"; +pattern8_file = "text_user_loop_omit_empty.tpl"; +pattern8_optgroup = "Smarty Loops"; + +pattern9_name = "To Administrator / Client"; +pattern9_file = "text_admin_notification.tpl"; +pattern9_optgroup = "Notification Only"; + +pattern10_name = "To Users"; +pattern10_file = "text_user_notification.tpl"; +pattern10_optgroup = "Notification Only"; + +pattern11_name = "All available field attributes"; +pattern11_file = "text_programming_example.tpl"; +pattern11_optgroup = "Programming Example"; diff --git a/global/emails/patterns/text_admin.tpl b/global/emails/patterns/text_admin.tpl new file mode 100644 index 00000000..e1c0b8e9 --- /dev/null +++ b/global/emails/patterns/text_admin.tpl @@ -0,0 +1,19 @@ +{$LANG.text_email_template_text_1_c} + +{foreach from=$fields item=field} +{if $field.is_system_field == "yes"} +{if $field.col_name == "submission_id"} +{$field.field_title}: {literal}{$SUBMISSIONID}{/literal} +{elseif $field.col_name == "last_modified_date"} +{$LANG.phrase_last_modified}: {literal}{$LASTMODIFIEDDATE}{/literal} +{elseif $field.col_name == "ip_address"} +{$LANG.phrase_ip_address}: {literal}{$IPADDRESS}{/literal} +{/if} +{elseif $field.is_file_field == "yes"} +{$field.field_title}: {literal}{display_files files=$FILENAMES_{/literal}{$field.field_name}{literal} folder=$FOLDERURL_{/literal}{$field.field_name}{literal} delim="\n"}{/literal} +{else} +{$field.field_title}: {literal}{$ANSWER_{/literal}{$field.field_name}{literal}}{/literal} +{/if} +{/foreach} + +{$LANG.phrase_submission_made} \ No newline at end of file diff --git a/global/emails/patterns/text_admin_loop.tpl b/global/emails/patterns/text_admin_loop.tpl new file mode 100644 index 00000000..1ac6079c --- /dev/null +++ b/global/emails/patterns/text_admin_loop.tpl @@ -0,0 +1,12 @@ +{$LANG.text_email_template_text_1_c} + +{literal}{foreach from=$fields item=field} +{if $field.col_name != "submission_date"} + {if $field.is_file_field == "yes"}{$field.field_title}: {display_files files=$FILENAMES_{$field.field_name} folder=$FOLDERURL_{$field.field_name} delim="\n"} + +{else}{$field.field_title}: {$field.answer} +{/if} +{/if} +{/foreach}{/literal} + +{$LANG.phrase_submission_made} \ No newline at end of file diff --git a/global/emails/patterns/text_admin_loop_omit_empty.tpl b/global/emails/patterns/text_admin_loop_omit_empty.tpl new file mode 100644 index 00000000..546179c0 --- /dev/null +++ b/global/emails/patterns/text_admin_loop_omit_empty.tpl @@ -0,0 +1,12 @@ +{$LANG.text_email_template_text_1_c} + +{literal}{foreach from=$fields item=field} +{if $field.col_name != "submission_date" && $field.answer} + {if $field.is_file_field == "yes"}{$field.field_title}: {display_files files=$FILENAMES_{$field.field_name} folder=$FOLDERURL_{$field.field_name} delim="\n"} +{else}{$field.field_title}: {$field.answer} +{/if} +{/if} +{/foreach}{/literal} + +{$LANG.phrase_submission_made} + diff --git a/global/emails/patterns/text_admin_notification.tpl b/global/emails/patterns/text_admin_notification.tpl new file mode 100644 index 00000000..de0f26fd --- /dev/null +++ b/global/emails/patterns/text_admin_notification.tpl @@ -0,0 +1,3 @@ +{$LANG.text_email_template_text_1} + +{$LANG.phrase_submission_made} \ No newline at end of file diff --git a/global/emails/patterns/text_admin_omit_empty.tpl b/global/emails/patterns/text_admin_omit_empty.tpl new file mode 100644 index 00000000..89a56f60 --- /dev/null +++ b/global/emails/patterns/text_admin_omit_empty.tpl @@ -0,0 +1,21 @@ +{$LANG.text_email_template_text_1_c} + +{foreach from=$fields item=field} +{if $field.is_system_field == "yes"} +{if $field.col_name == "submission_id"} +{$field.field_title}: {literal}{$SUBMISSIONID}{/literal} +{elseif $field.col_name == "last_modified_date"} +{$LANG.phrase_last_modified}: {literal}{$LASTMODIFIEDDATE}{/literal} +{elseif $field.col_name == "ip_address"} +{$LANG.phrase_ip_address}: {literal}{$IPADDRESS}{/literal} +{/if} +{elseif $field.is_file_field == "yes"} +{literal}{if $FILENAME_{/literal}{$field.field_name}{literal}}{/literal}{$field.field_title}: {literal}{display_files files=$FILENAMES_{/literal}{$field.field_name}{literal} folder=$FOLDERURL_{/literal}{$field.field_name}{literal} delim="\n"} +{/if}{/literal} +{else} +{literal}{if $ANSWER_{/literal}{$field.field_name}{literal}}{/literal}{$field.field_title}: {literal}{$ANSWER_{/literal}{$field.field_name}{literal}}{/literal}{literal} +{/if}{/literal} +{/if} +{/foreach} + +{$LANG.phrase_submission_made} \ No newline at end of file diff --git a/global/emails/patterns/text_programming_example.tpl b/global/emails/patterns/text_programming_example.tpl new file mode 100644 index 00000000..8c9e855e --- /dev/null +++ b/global/emails/patterns/text_programming_example.tpl @@ -0,0 +1,24 @@ + + +{literal}{foreach from=$fields item=field} +Field: {$field.field_title} + +[field_id]: {$field.field_id} +[form_id]: {$field.form_id} +[field_name]: {$field.field_name} +[field_size]: {$field.field_size} +[field_type_id]: {$field.field_type_id} +[data_type]: {$field.data_type} +[field_title]: {$field.field_title} +[col_name]: {$field.col_name} +[list_order]: {$field.list_order} +[include_on_redirect]: {$field.include_on_redirect} +[answer]: {$field.answer} + +-------------------------------- +{/foreach}{/literal} \ No newline at end of file diff --git a/global/emails/patterns/text_user.tpl b/global/emails/patterns/text_user.tpl new file mode 100644 index 00000000..f621154e --- /dev/null +++ b/global/emails/patterns/text_user.tpl @@ -0,0 +1,20 @@ +{$LANG.text_email_template_thanks} + +{foreach from=$fields item=field} +{if $field.is_system_field == "yes"} +{if $field.col_name == "submission_id"} +{$field.field_title}: {literal}{$SUBMISSIONID}{/literal} +{elseif $field.col_name == "last_modified"} +{$LANG.phrase_last_modified} +{literal}{$LASTMODIFIEDDATE}{/literal} +{elseif $field.col_name == "ip_address"} +{$LANG.phrase_ip_address}: {literal}{$IPADDRESS}{/literal} +{/if} +{elseif $field.is_file_field == "yes"} +{$field.field_title}: {literal}{display_files files=$FILENAMES_{/literal}{$field.field_name}{literal} folder=$FOLDERURL_{/literal}{$field.field_name}{literal} delim="\n"}{/literal} +{else} +{$field.field_title}: {literal}{$ANSWER_{/literal}{$field.field_name}{literal}}{/literal} +{/if} +{/foreach} + +{$LANG.phrase_submission_made} \ No newline at end of file diff --git a/global/emails/patterns/text_user_loop.tpl b/global/emails/patterns/text_user_loop.tpl new file mode 100644 index 00000000..a396e9ba --- /dev/null +++ b/global/emails/patterns/text_user_loop.tpl @@ -0,0 +1,12 @@ +{$LANG.text_email_template_thanks} + +{literal}{foreach from=$fields item=field} +{if $field.col_name != "submission_date"} + {if $field.is_file_field == "yes"}{$field.field_title}: {if $field.answer}{display_files files=$FILENAMES_{$field.field_name} folder=$FOLDERURL_{$field.field_name} delim="\n"}{/if} + +{else}{$field.field_title}: {$field.answer} +{/if} +{/if} +{/foreach}{/literal} + +{$LANG.phrase_submission_made} \ No newline at end of file diff --git a/global/emails/patterns/text_user_loop_omit_empty.tpl b/global/emails/patterns/text_user_loop_omit_empty.tpl new file mode 100644 index 00000000..cc660d93 --- /dev/null +++ b/global/emails/patterns/text_user_loop_omit_empty.tpl @@ -0,0 +1,11 @@ +{$LANG.text_email_template_thanks} + +{literal}{foreach from=$fields item=field} +{if $field.col_name != "submission_date" && $field.answer} + {if $field.is_file_field == "yes"}{$field.field_title}: {display_files files=$FILENAMES_{$field.field_name} folder=$FOLDERURL_{$field.field_name} delim="\n"} +{else}{$field.field_title}: {$field.answer} +{/if} +{/if} +{/foreach}{/literal} + +{$LANG.phrase_submission_made} \ No newline at end of file diff --git a/global/emails/patterns/text_user_notification.tpl b/global/emails/patterns/text_user_notification.tpl new file mode 100644 index 00000000..a8fdc652 --- /dev/null +++ b/global/emails/patterns/text_user_notification.tpl @@ -0,0 +1,3 @@ +{$LANG.text_email_template_thanks} + +{$LANG.phrase_submission_made} \ No newline at end of file diff --git a/global/emails/patterns/text_user_omit_empty.tpl b/global/emails/patterns/text_user_omit_empty.tpl new file mode 100644 index 00000000..bca29ec4 --- /dev/null +++ b/global/emails/patterns/text_user_omit_empty.tpl @@ -0,0 +1,21 @@ +{$LANG.text_email_template_thanks} + +{foreach from=$fields item=field} +{if $field.is_system_field == "yes"} +{if $field.col_name == "submission_id"} +{$field.field_title}: {literal}{$SUBMISSIONID}{/literal} +{elseif $field.col_name == "last_modified_date"} +{$LANG.phrase_last_modified}: {literal}{$LASTMODIFIEDDATE}{/literal} +{elseif $field.col_name == "ip_address"} +{$LANG.phrase_ip_address}: {literal}{$IPADDRESS}{/literal} +{/if} +{elseif $field.is_file_field == "yes"} +{literal}{if $FILENAME_{/literal}{$field.field_name}{literal}}{/literal}{$field.field_title}: {literal}{display_files files=$FILENAMES_{/literal}{$field.field_name}{literal} folder=$FOLDERURL_{/literal}{$field.field_name}{literal} delim="\n"}{/literal}{literal} +{/if}{/literal} +{else} +{literal}{if $ANSWER_{/literal}{$field.field_name}{literal}}{/literal}{$field.field_title}: {literal}{$ANSWER_{/literal}{$field.field_name}{literal}}{/literal}{literal} +{/if}{/literal} +{/if} +{/foreach} + +{$LANG.phrase_submission_made} \ No newline at end of file diff --git a/global/fancybox/blank.gif b/global/fancybox/blank.gif new file mode 100644 index 0000000000000000000000000000000000000000..35d42e808f0a8017b8d52a06be2f8fec0b466a66 GIT binary patch literal 43 scmZ?wbhEHbWMp7uXkcLY|NlP&1B2pE7Dgb&paUX6G7L;iE{qJ;0LZEa`2YX_ literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_close.png b/global/fancybox/fancy_close.png new file mode 100644 index 0000000000000000000000000000000000000000..07035307ad435f8f2f8eedf0bce50f7ec8a858c2 GIT binary patch literal 1517 zcmV1To%f)hA(E>uTT$~N#GA0orBqo9-jKM;POccZrXJjTzge4|Sa0ca~7y<+{ z2m7~>41(Jqf9L`mBM6zAjf4;hkjP@@B~d6Xz385|dB5iCM=Ro&JZZmk-uHdZd2i=@ zK0a@Md;u9DFE7t8BO^nxckf<*yC?SckUFGmX^jwM@NV80+eiP zQ*s##s^a3}Ldwd@cHO*r^T5i=%Fj}=Cr_R@78e&C((#usU;YFS>C)2Dw4tG)YO=*P zWt;6ZfL46;=u!R1$jGM-hhvcpVyCa+S}Q!T2ALHx;BHe#M~BsHHos=s2iW})#C?}q ztqvud-gYjKsG$zHm2XhmYPB(Bn>kzw z=gS!w6cG`jJ$?H00VK+=!cMnBDn?IFkCkj7KmNq~hrkZvU@n=EP}|7Gxw*M}1_lPI zNx@_?IS^|%_ok<(o3gXBH^f+@(X7_g)K~%n0$gMM{{Ab=%gZ*hH99)_Eo>!VJd8_C zE)WMoNsBB#u&}W3BMEnPby>y64F-cra9>kX)4DJoA0KZ5fitNn`NTT4wY3%+fA;Lz zZ+K4ucJi+Mg!m%<>Ug8kSg^LX_JD-5va;NEM#+V_H)8UHgaj8UJ?LiZVx92t@KxlB zb1oz#Bo|{kAO!IDVfOII$VfwRad8C+y?XV^;VEu~g@tQka>%(zhlYl1p7P=0!-vj9 zYiMYw3l0uW##jWq+eZ-;6r@4F%{+PXGcz;xx78|Q_F7Eb+}ynGO@4TI*h!27r4#SzfR=K~ zhtpe&%-o-olT$}R&!0cHdm}}wbdd`2lO~)PlarHXnm>2$+(ng2^$EtJ+=vwl#Xg-* zSA%x<9|=lJ3CXuACMEY46&1O~{LGm%7HKm8lhZ|+Pv?nF1LcJswy+L%zshO4HzpR4skij zxq<8a{QPpl!oq4$R(*n7$-q`gsjcF2;NWZ?##l9wBW)lu_Bpk)RJgGO&Ey+2dDr3J z*x2~aJFl#)G^5U)q~qh`_b^ru6q9Xf%arlfse$W(T#z5f?cqE0>k)x`c6QcMUS4jN z#$B996B84z1O(|{7{3S{Bb#j7?T~OCi+pq$fP9eGqJ%Evk~i}B@#8tcAnk_QAg)9f z!qn81MJO5W0n6>}?Q|$y25QL`+uU$0x?KbSI<(UOBavf=wCW!^J3Ie)^yty-8!yk& z($YLG4fjwT{k&5mHL@*_7Xi1c4?x$HT^y5qc2zyPPCG3CUKl!f@Zj&~&!7K?fD>&z zDk^G(=74sN=`q$#Wm{gaK5myi7K~vRQ8s=CoB+NC8j<}iKpXzI(SMmt*2r@wST=`s zW7t-}X4hPqXy3W00000NkvXXu0mjftFGKG literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_loading.png b/global/fancybox/fancy_loading.png new file mode 100644 index 0000000000000000000000000000000000000000..2503017960b3972499d3aa92f89953935ae40934 GIT binary patch literal 10195 zcmZvCRa6{Z)GRK+A-I#l3GNJT8Egn7KyZS)ySwY)GC**5cXtmOAh^3rfXjE+eY*eu zvb$HWe&}AO&aSFmCtO)c7UKiS2N)O_4A2)TmG>(H3=HfB3ex-CA}8B>rB4S*iGOoj zIbB0`GB%#)yQsNe_Z(XHJVzvTksi>+`6l(%$`7%p5{2L+{tq=VJ?V0JL-5DetdIHF|rZRGiB+~M$cAs!3L4m1WqS5m4Uut{B{sus$nl}9N zp#?4R@YNv8YM{JrwP-Li8Ynr~UO3E8cBsK321T79L4oqq#7><+nH-uo4c3S zzbjdhtN2LE+Wk$ypLztVwTlowGQqng!^I&U`;KFsDxwwAwF4PR(`@g%I}B1@?aN<; z9cJzX7khkNkJG|u_OY88t2=a(9k|tRF|O^~620}B74q3{|Mu}rUKMRU=5i@t4rH}t zWMo)9&m6ObjvNsA;yz~`O>f^l&kjH&j=Aexy0cfmC&I>@QU7`Ql zPU3_q?7Cqi%{r7|wPeZc`_s9mfR2B_K39;>*-yWV=qR41Ls>bqydL@}bse|D>1|L> zSvMFEQ2vnWJKlHRcZAw{ZIfc@+_x^0qqpf`uaLP9OH$Mxyno5YuLvbooxn?EWW9?3 z!YB&gf0xHo{M%6#qA!QwrjFO!Dm~{w(pCL9Z1XeAf)Nj@AQGyB2^*KX+-VJJjiv1` z<4I`VooCdOm?}gf8PD(k+m)s!AE5Z?+0=PkK{!n$OKo*{K2N95Y`L?t*m<`z<@&zR zp~CHRl4dh@$sJ4b-?gm;KP++XcWjfN6N#Qw_o;QATHBKP9&7y-bUDZkt@PRB%5E8d zyIxSjYTf;8+p-~Y-!k=O$;kfFCPu};=7d4N%l)KG@8xK)nb+&}I$Q6pWy;&;g|G86 zI-2s|2J)g^1XG`LO53Wj0gJDEZw-Oyi2)Wft0k{z<}G%H3dQ>?Y(D?CDZ2o#2V1hj zM_=W)_N5IX(aMyXUqh1U_WG#TC%LuB%3bK~)3%|v<)+ah|2DDoR!5Ri1|w~KpZ~C> zj*1KZd%Z~(gdF2RFMx01Wj`AW>Y$yS`Ndy3rPZS*pr6~#`6Q{ z%20=uSgaS;|E%9NE(<&vHm9^dubopg^XZ9&z5b1D ztpelNuc?SSpElb&~gE~4TESBIw z4hXi+ap2YNx8^D{Y~U3Q@Y|(~)|YhqOBukuK1!NNCMG7sGZ6A#)2w8O6Kn zdChi*Bi4O9!Q85-l}W!%4SCss_ceWT5CR9)!>d)k=W(}t8zRG>zPaIpd-bRcl+8}< zyZAFh+)b7i2(xFGQ1NiT*Ss*nf$|V%2{)tO&r?qsL@GB0#g&?RJHuU!w|`-+L=^sL zBkr*m4+?S5Lim?WVQJ4G?3fKVc}Q*JmJmX3?v`M44RD$Chi8S>0a5i2&wbyXSv8dY zyfv7Z{pAwk7MSBUu@ z5G6tLJnE1!1UjyO1R`?s4&aNgugC^{U9o!idxxDc93pcZ7raY)Xn7Pw`)<#e)4& zcN7v?6cRi?#`bl9ECtBz_QVZ0guMA?CDv=_ljYyH*ZV4aa_^g&fXJni?@vAE{G+P77pVW4Tj}s-(;*& z1STX!WHYF!Btlft>2`qz&1ijPaSdm%!UIMua~VRnoET&%1AAf)#vSfWj=q$8;qo|vcK_;z1j(+l2X0@o7C&Rzg8!2h$XZGbenx^q2; zApAgMeMi;{fO?<|f=I--(6#z(IL}cC|D24*dg^rhIE3G^yTJFZF55a-#}tYH=P$~* zb}RzkLIDvK`;ZA4OnYPQQ?;ssg`Ml>vON8NVnk@fl0k&o2W`-r3Bg-8NJYuCo0$rb zAKi(Z+>hRKA>bjOr%LHS@;94B&obY#4yCecQ0pdAnSV&v!vLF&-`Mm?t?}6F z?PaX5mkzFp$i(YKsOTz58Zgc7q)IVxy5hYd;~k@a63_Ja7Z0!ycbH~U&Y;r17f{Z} zwhnd>Xve$Riey{w@OgRi9rKhkQO@>jj2#Py8_PSVvvwxp0HTR7DdE{>K_i9RL= zrPNU6SCAR*HU3BLhMV(aTn;NBJQziUp9-R3QkgnENmN9ZBlJCW?l9$81skWTmD&YK zJ%7bQFP*wlswyu56egGmr!KVx=+KneK+U;f>vSk#hKg0u(yv^fNk=GGdULDg_=itK zp3;*2U!wB8TA$o;k!;o@OA2zx*%c|y0#?BBp?nDDw5rBS_SB_Sbz$6-fYTvnj(ezNfL{$?uz9aa=HGSg$mLTxTf{7e`Oqr?7rp+0`lg6AQpk z9Nsxh5kt+I%$5|50=OZUzms%|OAS{5^$g0~djWjOVxYk^CLD{|njlM2ex}zn9yCa1 zXCSTHoM#Rjq25u6;*Ug2A+S~Y`_kh|<3C=w_~F{9JKTLW^z5D41V2cjL8y+L*0IQ_ z?L+y%E(_`Xj&MzngB*bEt_~znvHKiL&w-ytZ<@L~s{_sdoRaSXOA5{31d;sz#pvvv zgq9-MCupHYRhjX{g`7wlu9(YJkAO)+oP%bGYC{Q>2v4!wD(_QEQe5suxdx(SIXS!9 zV|=hm;s|y$aq8^~zssyzb{|fvQc!Cj#FNH1$?tLP+^0!rIS_gU*h1d?y;X7vm>l>a zwr^N0VzNQ_j$}0!F~;(iG9UmS=QO|XM%w%nK5uQHaLT2-I$_CRCbGr8ymE9J_k{YTcfRFh1nn)R6_X#W#Fg4I=2W=GD|J_UwPwIQsBklSR4`o0$A&X8xn-V`k#d|7nEr9kiD4Dx?q zJBBg6NsFLaJWHtZ+GQr~rb(+STSHpb`9UQ4BbXjmTjDz;@V0H}7=mOf+#fvH-crjF z@uztsU}U)L0`Q{D-mZfkuH|zPNNIKXy+C+QIrQ&23l%VJtwn!M0wNG>wEi_? z``=Fg-bBV*o!jNs*j0n^Sn^x-5T@n{us@koqBnB}HI+tGJ!*iBb=5xNu?gt0oYXmW z8+W9Aca$K535BsvBR3qs~{jn>MoPaD#Aa+9Thdjr^?c!Rm zd+L48(+PM55nZ#`>laDoAVlLUXKyJl;Rm?x@Vv6HMm5<-R6-Z-qq1C{(`EqabpBzG zj;4V!x`7^=;;cYNpRy+iPV>rQAJl)AhcD--7r9MjgEiiV#SR|%E*YZcCryW8uK0m8 zL*X&^7In#HoVp*5gKHN+#O5c>>55A?ba%a_dj$xtqeA|)Js2dMKsh{lLDK@0m9lYa zWh*#0TQ2T27j^N`(t+eEfPUoBbvH_Kxa-u1jcNIe2YA^XT=1{3*Wd)}tKRN&dun&* znJX0Gvn8K!-%j#7%+r_|9qIlzn!o^G{q2MJxsdbiTZx3rG2xVS7HXrp5s;0PD>=hY zBl<_TAVt^N>MxbO(@<=MbHrHR=MZIY*8L>tB_Jja#yQoQZ2U!66gIECXOtndOORap zIR~TG$;oHLIJfQd#!j_3_Qvmx`fn3O*zC1bYC_$3%GfsjXN1z3asw+xTs!lK0I3p~ z7+&tcZUsM&QuO)Rahedf=&&)d1_C6zma`x{C50fHF?zDa=ZblEB;H@x_ z*db{M-tS}6{hx>Au=h4<8bWA8WETt$$|~;BYStwE1pYq48aKuv)4zT2-le|_1FnV@ z&z3AIiy5J{V@~m(2Aps_b7@uMmeTM}Zrs1Cl&)1e*ht|I zj+H9o<}yH3ZLHkB*F?)hWh$+em0HTThaoLx6FA4~msa-#wQzbyJ7ZmQjr#_R2ho^; z^_`?dw}hUR_w8a@8*K8J-lhK2Ot+y`>+{`n0h_lu{26PzN8ov0&f4B@R&y6%I6s2# zaHh%b232N&`aa6F5}eHI$b&SYPEgsOw5r$FS9yGwbRGzrIvbyEgZ9&nFxs0*_O>EKspQWU0tWeX06p%_D|(!O+TmLQ=`cGc+aR*yqXicgOVfS-31*Vth9=M<`>TD z2ecu1@-;8F3cm{pGegNysh5>XjRo{+T&Ak)F?qQ`lGeFVEKm{O*Fh^hd&!`$*H zo5Oc&)hGQS+5HxkD6FQ8nebel#;ty}aAw`K(xh8I_#=)-z$e>p3&-I@Xi7DsewFYp z$O_YrvYr1N$2_XK@wwpD36YvYlkAWY{ImJ=ap?zi$l%xZ*=IqNes{oGZ_d&RUp#M>B0_e>rGRlDA!;QcB^(S{BAOFH9!5r^ucGvwr7zaBu z0nl8=Q**gw{nD9@q{NiDSWk(V7^!=lJ2pWMJjM<6vo&=apq;2<=R}w*8Y1=kz=PCQ z%)%vAD1wFG6WryVg@``Sirh@k%N803_$(=+!8Mvb9?1T!G85NtuNdZnEQyu#A?w`B z)F3b>f5ji+x}KM|Tj2^Y*G*7{b`Tfi5Vo1I10v&)jAXu~zp&^l9_6zJNyTM-8Umo1 z9&95H=Jn67@b=o@EulLxhu9I5NUWA}RT~7aM&6p*w#;#@t_WkoM=N611DP@^AO(5% z_O)wI8+=$Zu|&6GLOI$LM?5!R9z_jmV}oTTbo5w#im;QnduH`c$N zW{BAB52R%1;Rn5cODK_%Sd9)aoctB9zxfjVQ>(H0D(}uy@LHYyAgK3g(>S9( zPtYyFU)v324BQ;?fy(SYzzu)I?S5X)C%oy!_vo35qBl@iLxXeO0=c!$`taf&-nWfH z&;kAR#ny=d^p!J#(|f-;_JYU39P352-lqenf}$VP>n~VNP4fO z7WIbrhM-BLcG@K6C#AME+0)ar)&j3)4d;NqqtG&xvMIB$;{YjyD%@TxXDz(Gn^~Q$ z`{|#$49R1=uT?+cj-swXngY48cUNapbLV7E{z3w$^>d9@EA@w>HM^RNCa!C{AQXMm zpS_ccdl>Gl@TvUqk0?XIXoR{14Qy=kig!<*wYyEI!{IFM!!y{06q1<;ELY*y*mjQT zv-b*OcY}^&CpfUnzo^;VokcN($`aoxgOa2-iM%AbK5g=>;P?fEw9oVMKLygeXnM7D zPtexNCH+(J;~KzQ96%ZTw*j@q*9|u=z0Y-$-X6>%8rAx{yN1?B`D^BfVA-Q>P-Zwe z;|%7ZvMvfrLx6PA)1366l#K`VLUj=^JQGKQr;$;%1P{A3+amuyFpQjUjaj|r5k8@8&dKiV2D0a28K5jva= zscr^-stsDrbQN`~3V1XeM345Wu`L|$V2`1Pl`51 z!sHL}P{WSZ@>@dt0qCwF@)>_sDDUL@v?vgBJUvVtqIV{pdh9z%PiKh$SX?-VD2}@Z6HA6- zt@V4EnoebJo&k^RU@I_2;opR+}*c)nrCI`yn@ErJWz96(SbIVk1>cE!Tka7+3`tF#7q&mOS z`(vja3j^a6Q^nJG3SpdQm0wa<72`6^6xx!7k=(pVAT$qCygHU&2G^*HUT}^RwjJNp zVjsZ-`}x>d3-MAWGZ5r%sw4F*$o{=syLAd8Mu?DV4DF|;2*Jox zqVL%1j1#^%=iX>tz6Qjk3TO);M&rXtl%qgk9grE3>4MXk7Whlg72rmd9g!l$_+3&E z6*h-nCMPb4^T8$kZueK9(P+4T=;!doMXH%k2WDZ$>{4(7lz{?r+!{D2KSt$CV(H_H z09z`;*W-{JA{4V`;ct6^**HAhq-p$yC!Fv{xUAPqWOUMqgwdVO=ShY%=Zt@BDuAe`?$w6~HWQL{`llqWf6s}0s*z#HS;O3a z=ILyMmZ&A@kv(0D+vYjR5o^0XD5avMI0e%)%4(QMuouS5z3U;m`;cPc?0(9-y@U!e z8`cw(kspE<f=vKG@{6#xOuWYLU46A_{#wSGt9nrgw})%Z22yb0fhbwJaqq)%z$PaC_= z3ox7-F_lzT^9!i(CE6 zW<2&Wf2a{(QsxusH!M~2vW)|^uKs)OZ zmI^}fUwIueqDYM}Hp_|Vp>A79nJ8^LR5d1S;Q>w#hmAWb#T`r4AJ~Xv;6gnE-j*Qk zwNw7#)xPg>g$s)62xcF_l*sdm^_NrVX|dvZ&p>qY=srP47z1ewBWITjEe65;a(0E< zsKF5<#?0SAwMHrOG^N5~-08VWNK!`W|E7Jofg`@;V9vxN`V(KMQ7OQ50~f_DqPJi8 z6s(d7BHK|74FG*y=+P~=U{op#TT^k#OBsmpmz7R(n`tLDrm9z&lDKlR$rc{n&Wy_f}H^^xUb{sfU=4ICbJ`(9&;3Z3fCy0rvgB9M zYXJOzI!BVShvjpSRe=NmGVk>cdV`Q015u&=ITQ3#Gp7D;WU9-#Ty@{_tVkMAQNqTD z89X_&nz0hLSxzu+{iZ?fqt!=1tl;^;blU*(sJlZHnmNqp<|A?O8Yqeq>aY}@n1 zBd&ihKHMSw8p9mpUE#S1BM;d0J46}4d<00ZkaWga7oyiz?n2O$_km?HNrL+#l7`D1 zDt>O(bK^#^beJ$Dp;k3Q)+J?E0B-A4flwH2y@}{?;{_nm@P%QMps2J z#`ilc^%ORDrR0HkSAcEzL6MbEuv|s7a0Ar)gMbJT(!}yXkC_|qfJI;E22Fs6`>U2+ zV1&^n-1Dqhq~VvMo!jd|vkg^x@GPMw8SrLWQvGe4@@)xUShf-uDZ8HkE!_>b4{dqT z8096-(q!Ru;Ij<5@|jEX&B4JzS5AqWVG4h+OLc;we*kqEFMhlePe?Xo(mzk0QTAQb zpD2r0t+lznomct39G}wZEMuz0)=dgp3T>?BPsHbx^CB%dqpOboI~ogTn`N9K1hy>{ zDBae4+0e=;4Ed>107Xpg6!O@x>V~|>YdDrp^;g9CF{RNew0I&FVx}{X5%+2=zXe{D z)DMs9SjWl*_A?z_0KcjSCKJ!NP8N(+BX78sW+x%34{ePG(M^UYj%THt zxZ8TL#-|J$Ui@6z9;Yh}Z!tM%V>jJuIJ-?8kmCLBd^|wCgTzGsD_kLyfTJg|Cs%`+8tvvjHT@<@+c88YVruAnGHq;4A%KT z`@dcO=c%}~pTNFPbF|rymrfuW8#gW8GRQQEe8)QF8oAyYmLo%Jv;Y=7EHouB zJQ=5|h)@1}F#B{wX3e#`0jf@ocdnZ;E$5xtwD??6V3z;dPTQBe^HZq-b%{6VCF=FR zL>xf=$+cR=ko_y>!X9j&oZEAcOX#tMNcb;(xuU}kDM|P5mmN<5;map=HhG=w$|}(w z4F*XeZGLzBif3-phMaoKI`4adR)>&}aCKzXy<-RDAU(u_f-$(-Omb^%F>+tQyUWY- z98G`O5ncSRfQ;n3q=LbzbJNk}=XZs1__J63e;DEaOA!A=p#VP2rE}oOH-BMvLgYtc zoAcvckXV;~6fXD|`?DPrCnsupBsl^pc!s>84G60AQrQAUv~pvfJVGH*F3yd1!r-1e zi9&~F;796Dg(Wi1n4+u~#KD>ECTCUiM{t=D!kwPLM7V~k{HGdYq%u(>bX=z9#R zge?YcYjBNZvw0!CXZ)E}yiN$;?-`_vV=weI@%t6E>KQw$qZo?yP7%!-7D}&J;Rd^y z2L}gPL)GDF%_S8P%|t6;LU)8(vhxC{bue%1KQGKL{}`1SxM@5h3BqQW$1UJ=iHVKX z!>q&nVn}oCqRUI42H5o?zjm^4 zhTv#NSZ?tF^7J6}Ds4Id@g55ZMz$AERk7!_lo<;SCuZW33@e=0gl8*tD>!a0k^q_ViXjTmlOQizar{@TPjZ$e(u*)b zl&+l8$FXO3_IyDUh_4-QR3im{;hkU zv{vzd6YBp_9?y3`R?m*xel6XQdQ-D~W%obNJ?_u(^o)Wn2nbCAm5RjF3^UlDjNKOR z{-zm);7^zU^uJ~aeK0&5K7A zk!1|bDtR`F7u}LdQL>XuAiOL)$^!>_q!Rx_qE{et)MEwb@S{@W`+Z4Aw2az8N7*;j z28~WHm*L2qk_1^vZ{qCssnc0&vsCg(7oWohyP@9E!SL}lGkp5Mol&OL@SQWG!*9BR z0qAh(zMth9KCDMQT!@!?YhIMqNDF_IM(>}Gi}a7@vu~0@GO=V5?Pk#Sqt{UE%}PuM{~;(=J78A zSrs-=fTfW`08-7aQ5oi{Ll4And$a}6a7%A+l1f{j62K2!xMxo-1)`o$Id8iOER0N* zxIDeb$xtGU)+USD=qHDg(Y`X~J68tf`TqIO_Tn$%1NaeiYTKadL_2eajT1&)NB+^q2@D9b{MUY_>TNQpZi%SO_bqXjyXHB;Ui$Sf9@s+j;Wb z{id0A9C(t~>E@^vPF(@ScmscJxOc7zNXd^Oh>_aW(3u(xR)buk9$q9y|pmKaV!1QFxCztuHO}!PY}!G@y49mJ z0cZk6!rr+O$%3(;B?-}K84!e8{>9v~L;P_$0eQ4}M1oXBfsT{~ZTR)Ko%2eWMnbKn zb5q1ekkgw_RUy#!uXEEL9eB2&?El4NCZmw3r1hMX#a}lk-dBMCPR4OgqRj$-M;-^< hjOQhwL*8E5RB0mfPrR|R-jC_QfTWeADkby-{tw&r+hqU% literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_nav_left.png b/global/fancybox/fancy_nav_left.png new file mode 100644 index 0000000000000000000000000000000000000000..ebaa6a4fd34e51575a01da366312c20618985cbc GIT binary patch literal 1446 zcmV;X1zGxuP)R`@usIzf?P{x4#0gFqr~|(;IJySuwjr=+Ar78e&sHZ(Lu;P)*wKU%|U#jmpg5~Q6= zNl8{#mZGz>Q!_F$qJ8n=#Z9x>Jn_n|ZEtTsSzllOW_Wn`!@Rt_=!l4jAl`tKb-5%L zv7js_CMF<1KR>Fcr{|nbr~AR4Y-MG|y0EZdwI6@^^5yrikSZ}TQ5hH*C?{R4Q{?KT zKD6U2SFWfB2M0g0TCEGD5GUP%Y0a>J0W!M1fVuVU?d@ix(YV91PjUK7@OzY8E)OJ~ z&Q30n%8njA8kC)#t?uvd&xMXHQZzI)WQmTB-n1vQM_gQ-{_*3-7UA?*_bJ9=m|W(F zT+IHE$H&L3T3T8zSS*%BTHM>)YZi;eI#;9uNVch|X-go#ckf=VQmKq2-ORBYaGo52 zejyg&!SS;_ltMX3~N9_#ORsfn&tMTp}T$j*yAd)6-A(_4O6g z0=-^ug|9bVkxorbSsNQ0x9sPG&EF`laq6qgf=!d ztnQGKnVtDqz_Vx1Y=Kr=TU+Vx?;nS;5H`1m#Lv%9fqI)#T3Y%!3C+yRSpE-E!h;77 zwm7Z1{&Y;%TkkIqz&m9sAKBbnCkzsHry#@vbY{a-wI?zu7 zloV4Q9NtQWLUAT7Ev=G-*4EZ6|HZd^F*!MDB>C#<>PDGN_5sGi_Yq4ZlG7@css!ck z9};wyN`LrygSGPaaLVfqXl2Z+Nkm;ygvo12>(Bf+YwDwC`Hbwy5foiCI>(Z2*F z+nZVe;)K}P*aF#9Y8tUS3{lK|w(!NULrkdP#x17leSb zXU`h&IIwaw4`8eqNV6{>BDOh|vjhZ0E{e&QDDu0Pe|>%Zmb;{dg@s0w$z&rPA0K~+ zu^J$UblaCq5g(ljxEe?Y`8AmFYt-vOfqZ&;+Eh?bV07kp3Z#jN34Zfk3!OW_7k zM!Hz%fopN!Lja&lI}y+lIZjBszTeT&@!Ra|?DQ)q4Us*EN5ey8M=zh0NVTlX;X`2G z(+8kuN)-Dfn@v@Ns?$arfE9ks%*_0?uCDGc0&cYN@bK_KngiO{r&oDx0_$@6^x5~= zW5Gx^5k=$2z;)mYpdQiR47B2ZEBzOVMD;v(on_N_Z6xdRarMj=Ped`)=n zv4Dh?$k=SYcJSdjDa(58`F?t%ZzxBbaRs;9zaA#)un(S!5dZ)H07*qoM6N<$g4RXF AD*ylh literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_nav_right.png b/global/fancybox/fancy_nav_right.png new file mode 100644 index 0000000000000000000000000000000000000000..873294e969db9160f5ddd4e1ab498ff60b080e3f GIT binary patch literal 1454 zcmV;f1yTBmP)Wa6`&Z+!IVkxf`V#(j>y7#5eg z5*PD+C=wGBwT+F9xi*_^fd=>X_FBba@wz8b0c3ma+OG#c&LYnSBp_4S(*6BG8m#QpsI))yBSw}|WBy?ft)>pk?VIMu|0u-xC@UxO$< zHa9o-0~vR8bXeVyB61x;@W6T@vgyO$TgWvPslhu zJ>BGvFeN3$D2UT9wO!c-2M2E;RvddB6cm(&J}nRg`1!DUaA;_#J})n?kc`&W*6f~w z$XoI8@o`6>)z;Ql1O^7iqc4Qr?IQ^Y2vDQmrd_^#`AagIo}RXO6Tw=o)=2K&OZ?8A zJDVKcH{^2p2j~ms)bf#Ff5Y^8{ZZ7~8Zw%koV0nHJ||9`FbS!%u(0sL`TfAafI}Du zN;}#qfQDkqhr?T=R;!O@W@c89(aOq-SHe5pO)Do4INRL6f8R{+tE;Q)Wir`E=nLN^ zERjf#VBjT`yZ^}0T`IW~brs!I17PDwDHNtJpz(@u7&_Ci&*x`nXGh4eva-_hHlhTo z>wKX6jrLg})!Ef*2q(qH#unh5y~V~`*!#E25W2>+0$@y%jAkE;d^% z7KiBQ=;#CV)c|?K?OZZNymTtyIv@+;=i$b0QLhID@u{gPOF=<_+1^cd)FbceJt|Pr3Z2#UW)pC9hbbpr%#_w3xu>9DucKZSqKjwKC}oa!!=;B zxw)ARh3h~maWUsB$KtMw06>R!GGHKatdM5?eS3TRA2TyEQ!m{-s9LkQG(13d^zuqc z)WBRWF9N%+J^)=)qIgeo*i|*CI?Xfzc;V-hCr|!<<;s9veooizpgD1ug<#0dV!Z literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_shadow_e.png b/global/fancybox/fancy_shadow_e.png new file mode 100644 index 0000000000000000000000000000000000000000..2eda0893649371f8d92b92976d8542cdd1b601ed GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^B0$W@!3HGnP3ltxQbwLGjv*Y^lSRZuwe#}JO|p{EaWGAM`~zK|Yh zF7SQ+m+Ig>B0@o-N8?trihfzZ+Vp1~`{zf0o*#X0$hUAi%N$P)W1wCJ22WQ%mvv4F FO#q)zAp-ya literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_shadow_ne.png b/global/fancybox/fancy_shadow_ne.png new file mode 100644 index 0000000000000000000000000000000000000000..79f6980a3ba5c43de120d963dbba2516b8f27ac7 GIT binary patch literal 347 zcmV-h0i^zkP)dR9Yb&V8f!h)aDezHAsc|y@|hdQ zYJb}?8~~zFbQ)ku!Ey)KSukutuvdZ@MKMX|x|A3tPyx?YVhN^6z!Mi4Mj2f#%<;nh z2{>?YAzu|{u^;Oq!;f7Z4tPBpJEmZ+^GZ#$=9nz(K+UmK7}|u&EPi%aRt_C3qOFB_ zHc`~N>51%{?ijG?xsHt>MwRChgk=x_z0gh3O2xSL)-6?+2LKZL74~Q>MZjWtwukkA tvjRC=&j+0R$&bLyT7MhBcTXDISHC&xXU0&5CWHV0002ovPDHLkV1fX+la~Mh literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_shadow_nw.png b/global/fancybox/fancy_shadow_nw.png new file mode 100644 index 0000000000000000000000000000000000000000..7182cd938ae98e7e28c65a0bc55df576042ff9f5 GIT binary patch literal 324 zcmV-K0lWT*P)2-&4CO{qhKP$XKD&mgeXEM77>~`RA}h@U^Z##eQZVtM>a-K?QT4 z&(8BFf(rD5V61)2I__wHYuRwoaDIqw5Vdr_JSDVr){#J@r;{vbDL|tRyCiirf~4OF zX-l=Ecm>@yR)1nSMt~dy90Zb`^`)TQbhf8jR@fA!l6V$musRyB9Y{p$SCW}!$3==V zk)fW)Xo{s^ez$t+XhmZj;ts)!kTokvmM>z)zt70000 literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_shadow_se.png b/global/fancybox/fancy_shadow_se.png new file mode 100644 index 0000000000000000000000000000000000000000..541e3ffd3e88224b34a4d2097c66a780e6060aeb GIT binary patch literal 352 zcmV-m0iXVfP){pM9=`y8<_IvWD02WY@RZ<9dgjNmAB|sYF}Xw>7Sq@O0000eMf9z;FC21=)67q_`W0*0KnS4AR00W2`RGn3i8UfsEegLO@ zPhds?2e1Tm)FK3=bymIAx?X=YFo3Mdh7W?@I#8s#svp!&PB> zwah@Ngd|l0N4SCfzvjtQnd$dZ0yM)N$X+lqdtN!Pt{Wn*_`0U}m1^#r1 mwpaW{;a?9KKt^WrpTAEd?0j1W(3L*`0000P{ho=rRL|66mGO)=r*Hk83F#~lnc)I$ztaD0e0sy?& B8X5oq literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_title_left.png b/global/fancybox/fancy_title_left.png new file mode 100644 index 0000000000000000000000000000000000000000..6049223d1ec6af46e100499c01f6489c9e2c6240 GIT binary patch literal 503 zcmV+)0005LNklqcp9&~$uJw{{rUub~E?-XJ#Upm4Fe%-Gl z!u%tb0N102a|s5;SPlQvJlFCTBbvYaK@wIW6Gjx@?i20AlVDJcHNfh25WRlbF6CIq zv9_ZnqOH`}ppaUR0@%ZcM9zpDt2uQM>f+Z#wIMmyuui3DeoYXWE|hQ{D$te=Yhgkq zIvyj+$t8T|S1wITzUftNOe(E+Qjn$kDotY;I5}1lRgwi=?K26ke)djLR5W2|!7CVH zJ-`tuAq|`lK978y+CnqGNCkUke_%Gig ukvFM-ftpWh!il7Wg7kz7Y?7xB@G*olNlgoj4E_Yv!rmdKI;Vst0Ha3^zyJUM literal 0 HcmV?d00001 diff --git a/global/fancybox/fancy_title_right.png b/global/fancybox/fancy_title_right.png new file mode 100644 index 0000000000000000000000000000000000000000..e36d9db2a7c6e570aec993d3665cbc13620115e2 GIT binary patch literal 506 zcmV+)0005ONklxjQB-g>5=x46nGBwseihc$zfzvTFh(=tCRj6cJ4M&ASrCAq-HbokPnRBAHVa2(-|l wYU(UxfYLN;KDSr z1<%~X^wgl##FWaylc_d9MY*0Xjv*Ddw)7kFH5l+P-xcE$W)3=fYI&uMKVzWNT*W|n zhqlRY)q0r(8Mg&Fu_zpISivgz+b7g)c6G&O{~njE??Y{u-MM!p^=9_W+X-j8mhfK? zj`H2Yy;kp%)!V-M3;EVThyB(Z@o88wpMja-vy^g)SgE!<&|(HpS3j3^P6|6H_V+Po~-c6$N>^IEGZ*^681?Yf#{6Zf~e!I`r4y-J+3m*Ue*gH=cNZ zzpU%p61aCO%jt%FHUKW&bEWLcUAGzK?;SYE)E{9#W9O8@uj{O@89qzNU(dkI YVCW(7-@(*!CeU;SPgg&ebxsLQ07`N|KL7v# literal 0 HcmV?d00001 diff --git a/global/fancybox/fancybox.png b/global/fancybox/fancybox.png new file mode 100644 index 0000000000000000000000000000000000000000..65e14f68fd83b87f75c22c0c074e7b20bf20a133 GIT binary patch literal 15287 zcmaKTWn3G5&@B{~;%>#=DG;={yF10TIJA^Ni@Q6dxD|J62@u>uaf*A8(n3=TLErSb z_x;^(_f!7a-E4NVIcLtyoQc=dQGJd}gNuTK@?2d_$pHDPf`Wp&gN=z?QPI&3p`b{G zsVm7Fy<0o~g!9hI>FTLkeXUCSdR`&CQ|`OGxubq*0?(JYNfXC5{*R2zWF6(Xx-T>T2>J&K|Eil&n6Lix zEi`275C{!+X!)7CS*e}=H>=RA%jh4XH)T6XDeap>QZ zuCvB3f1j3`!i;@?^<5L}xzP0QOB^9?Eo@W0)j~`y+S=c{by#*Uoo$DiKILjfWNDo7 zGyqd&{!#&d_P|oW`zcaEy@;d2w|y57JdXR@m44ad$Gcyz{_I2&GK4@SU`c&Hd(VQh zn#vD^;#Q75G(~U%V%iDZL@L=Tw9hMZzCDFM9j?16?PmU()egI=v!xGRv3`4gH%jYG z*XB5pVfpH2C-V9c_8xe%8@rGrVEZ`G|9I83-+!6xowV&cMz2~U_i)uGJ@S3*cKE#^ znI+w0?#cY$pob>5_bg~ZYi`wc9G?Q_yI;!^xaByQ6*CF-F7!LoI6}!W%HOm zn)78kmGgzB<<3%Ss~TX_waZ9m05q-1AFMtfR>_#;a^F#k^#p)TMJWuMY$%F z%=%jUAKs6$O@3rjj7b9g9%p$QdV5l>n-#J#o(%rG=J6u=#jCJnOQN^y{2O0)x&Yqprl%*#!!_|zCVEW-yaI3-X52yuJ!c9 zz6iUCoS&ax%2yIfhCSZHUTwP$BhI})gzWuY_kNXgz1*K3Fz$UQmp8oH;@~mz(&g{T z0*5JN@$_j~RW(h1-Lq}xFRb{(q)D{SX3WtO`gObC;WQ9!DO#{`WS)_(*3(jJ3Lmxc)?Yc*Af>4 zXe$gst9FHmyt#7KrhMt(-!b86SnN$#XDi-;E-tXxuPcS#V1!6;)8@e~HvOb#ByQ&M zcK?UuX`Ca?v*Y!yriExsd@4QoJ$zOm`&Ikyszd50kEry*&*@-WOMQL)1w}jVgR0J4 z{o{+}~L{4c-2cW8G<*T_5Qs0y+A@Nh*tb7dX$-KpW;Hf3Q%V!a9Rc-`M0ex{kr z|Il@RukPls=sp>NOZq~@c{)Hzjg^FF1czDSutYx6{UFoI%G9*$Xv+5SH(imbfq_9E z94fW)v+sKAibW+UZyC+*=Fjjeg3ZG`hZG6-&ECL;o_yU8w+oxRXfU4syJ9}5*O&7g zvgp|981c0xY6-ssnoDEoubAhwe~C1Ph{=UKRM=Dc2hC?qWyga7}FOlQ163X0-*oqNwC4Yek|~X5e^P*VcQF zkUhPwZc!iLY%3QJ2{Ho@I z%dr=>z!}k%0N@^JagB=^_|LrNx>w)TvQA5t8{oB96C=sH!(KuDB6Dd zQ~jz>|K~1IPiLg9-A#L4s^n>nME}i*z)>Q=T2~fvkfEN*E;={T9sKDFYe0s$@o-*( zoEh}zmtQ}znV$kaO$S!N?@O$4?1l{p$z5d4tKilfaUnH1{9i^XqJR3|Uyi+nOHf+* z3}Rk8>MrX*)A&fo;0NC5B%=VEvC=)mu&29i0Z0O`ytHlX;cF(qYo*pLff_-FgJM~; z`)Tu;nHg_i7E0>?{jNgCtlz)6Iu&!AhGYMFn3H~ zJ`xR}4KY&CDsFSI%$sALezXs*9+#c^b>%GE&f)276Jgv<&zGpyo3TDQ%pvJt+&`&! z{Shd!jqXoDjbjmZGxVY}3?{YhMhsiwHT=CS0NllEL&%itR?%i52HSB+*%#wyeQC#y zyVd6XT%3pt6!g3rD_gah3DtT()o>Rv4_d#VyNVK(HhUM8cE8n3B|E| zh}3;3MgAV}^Qx*Ui6_lVS8s3c9PNhg`}5c(1ENE!P=VRx+IEQGL91)lZX=qnPZ9q1 zw5yZO!no+NVgMz&qw6SP=(&e&;Z$>q9{zXi2*K8@yh{H9B^0|1%fk897`kfNUA1#u z!{IV-MMi{e(bIe`_|JA-W3M}=w#mV-ajYBW{>-4l+bof*j=QrEjP12y!e;c>Z&;;V zM^8p8Eobfr3B$fYlBk55<1%$+d-RJ$p7W&h#Y+@F{BUtO>E#R`VBQJ{x&;Dkx&$}H zhOSgb-6>zcMD(`*QoD<9_c&DiV!qaNaA$kj=NWEQ*MFBH`?d@mR1eODIlr^8TQ&6! z?Zu%cuPP3^JxSi%Ej-q-8cKc578ijX@M73*YmY660uq2%TywHd$$rc+JHxc=>e{aVhBM(C=M%@zXsoNWf$<@*&Si zfBaE0iEyQmu4#8O^y-Lkv9sT1-MYB#6SxX;Zup)VKSW5h^`mE2w@xP1CKEEQVqieE z-|qCmnZTox4%cD$#KBz8wr>J;jgQ;vP03?pziiiZf^9Ya9A+z3FRHlvj1|4zu(0z) zk!NHd77L4tsP$B}E)KJnWQ(xqc50Cd4qeLyo7NSYC(nUG-q(2o8G`N>r}!nR>VooB zgQ~`?w`)w4s9nI9q&{b&YrC(Q$Ybmtlea49Z8$%cgf)F5FpZ`{>nRg=iw*s=fI|x~ zs(Z3*nj?^gW{3$m)_kYV>2TDRihE(6$#=dJLrPn*^e2K-^tNl$r_6h8P?Ida`U7x3 zS=_602o@XE{9@RMKYg?j(ay&?`SPJK7pZm`;)Ul4eqxd^hX@u12smf1_zTYw*g(E^ zM>kZdJXPfif?ct?IE8t==XZliUxmmBke(C$Z9FIp@<~(>*En>z|3+X31BNaT$SY4M zNkx5vUujEG6+;x6sn725w@+MSoBhFHH>`f}h`>2f5Ojs|e21azA#TBNt+Y$R*0x%yhV(lOeN^%?TxVUzBBxe;St&eUh^Ev#1hE2>Fug5G zX0^DLvfguwUx&H2HtZ~8ygSPI>L&0uAoGh!j%9nnc2Cq}!FhthK>F_tp1{3$4vMKg z&#>U&p2+u9cG&k*{#!$}l9H0kukL=dX8|r7HIXq9h#IinounmdhBFKZqZ(xogX!ubN$md{4_8j{mQ2-|aUw4ZOE9DntRlBlZA$gv;G`P+hM&gLaJ zWH?F#8W%iq1I_poC(54AEv(1nYfRsk*%bleNu;9*L>Ou`FBBpuWk)I=cHcRX%htu> zoP@h!b-onASogDD5C4iX*0tkphDUA3I5@(^@qjz)0#*F^F*g#b`UY#EgjQIY+24A7 z@C0-HO_z0psDI#nETB7|@i%u8+$!cBZ%r)7`}NwOcb-^o2fg$I+KL&PkO&kFw(ilc z$Pd`|O7c#T*p_Qo)bpL6`-gnArJ&|QEv*&j1huMidI%JOS$n?YrAN37{#C`;uDB{; zyWOtHZi9)3tMHEtWzN2Rxhf*2*O&)7-)tCvtW;~KmwmZ%hb;U8DrV3KV zdtfrOdSFhq9-+a9j6eFPV+yUfr|TerITV2O=`OJg#4kzEg62zxF!xS_aG-5XOH~Ph zBsQi&)mfq6xujyijEGi$)3@y_|G@Ghobn{i3^-dSYmG9`2pZe1n%zFSvE`uUrBIaV zzXbKIyw@biKIOz>_^ar2;dpqe(DIya=(rwN`IoT-avuKeZr^=d$8Df(#4 zQx6RhoGc+FO>z+;V|&$8)7p>mH8pBo%xZ)Y?4=7jd&_3?KfbrE*aRPD!;PXec-5VY ztVuS6m%vD` zoFWnCLFAr|)tHdxa5LU%cnR&ZiDzEf^=`|CrdD4p#UQI?7Za&z^nDH^+;r^D3su@r znNEYJ)kW{!!(ADt52^N9LeqKWImiG2VNz=zL0mAJRx* z8p&o_w`Su}@UH6F+V;~J(5X~mftrXhiiHfeuD^`ZY<+loNH*~9wr-rga=%Z3<-y<< zn<#Z^Y$@Kb#19``Q4FH?rhOufTc3YpWm*cXIFeJ@ad^K2e52o)j-K)>zc7pZj~^G` zN}2}Q!aIUl(WZTwfU!nMU4Z;+DCMg%DBw*12}kmh8YrZ|cLN2*+$^atj*cm7sPq|r z!@1S7qXTZF#KqqJ+%T3`7D`^>7QKACwXhb%Il+maJ>}Dw5jUdMmERLj z^lV00V@9;Xs7jY1Ep8Y$fmYG^lDsBvI1vS?m0xgoY-$^Nh5gVju6}uVM$$eus+G0o{WIi^N?T&>ddhjX8|G3%UeA>(3)XB+rK zKDyDnGB0;#|Bf=;icdxo8S7+luH)X&^pZWQ_~Xo*G}_LhgSLh+9`{-v^!kk-(0dUyojhC0T| zD}}kjs(flk{NmN9fRNVyyKHy^dv>f69trQWB1iqI#6jx{`W#g|f`xve>0Chz%LT-6 z16?J6Am3OFW0`njr%oD6(|&DMv~nO5B*63L(=mob?(1$ZRh_Jh@d&H8Y+Ht1G91U- zr)RnFP0uj2WH*g@0|OG`0aJB4W%OnBA2X}U>TL(WFE}iWyCFS6;IA&P?Y_p?-q^5* znWg8?Fyl)FvOC2t(#ph^Z0U-Dwi{nMj3&kU%UHpS!oOswQfMTT2^J-H9ROFw-S;XpY4@f8S!Yi8jepr(*@yLuH$`62eH zs=Fa;YwJ&=?`ddhO&=~(KWKTq`7N`Olzm}kGvsk4^Y`r>!Ni+bg<Lw^6bY>kq~e zK=)vs&g}A91Lh< z+m;C)W8{Ihn^!PSgS>g80px2KK}N9PG)aRaRt|HjarO7-*rCv(TN+ZP<6N#M$$B6A zs*me>n>lpV{^<_^6d~Q6ihtG^Zb5StlnX1~-C{|grsBLSxxVjj0{%+cP)3pdxjVml z8x*(v7GJ6!{f$k7sd#QDuO>} zjCk;mXVWmC>n|fihn*Q_k(|}_nAGxdW!UQDM!>b1V!qV<(I@uw)o7;<*Lc9rFofpP z%S@Qp&tSpMhU_)0W+)Ph?=;TFR)G42h4ctdNEiA9D#dqL@?mF@H@9Ys<>%N#Dxt|g zAut#aXWs{Ga8VXsMoFU|(1^+dIpAX63*ceSA>&~)_(lp6jjmkXWOFvxwEdUX*?NW2 z=ZV{4N9%bQI0o5eZV`+Mn;Z?AP*zqeNNX2ZL7)4_+X;ZcHxz@joH>T)cM=9 z72M&=GuzfZU_9o)u0A0lG`Bm0IOc{Vi@l;6y}h?Yvf;Onxi6SOr*rsFF)5PIkV#9N zrX)vLEt>krTP0iwf<|vVo=;v{FQ42s-D9UQfbD_^r)hEW8ZTXjv{H4&_I>tlpVH9#F&N4Mx5=VwieJV!h6tl`gSKxTOwV`o(`2o(?@Ny=y zWz^8C>;9+Ep2eFt#`@gx77)~_urrdHT1G%!tarRQ!E!)xm`N9P&70;<;B^6}eqbG+z?~l!peI}w^v&MxDP*abNyuhW1CN~d{X#xgc z=F8VWJ!?Jp1<@~jb3YB8lOU|IMn&%YwcWZx8@m-Foy28C;if{OC||M9%}3}| z`oRb6TZ8=@mvzv-(9e9(YKZ? z-vm1-c%4+wWwBce+czuEsU7#ZolNZ~Qvpf*uRo`4-v4MbsahDfF7slbfEYv!G2GaA z?6Wc{QDP`iGbiLw}s_oFyv-?|ms6^HD1|!Dy9#g^T{c}?J5~f7vU(5GC zV17IMWmm@|el+7OV(#hAwdm10&Jc}t%V-J46$q=`^s33gtYB{V%vmKCn5E5>r!d|MS7TPrY{TqUH6$ zGgPk<$Lpg9B@a}pEw6^?p9UZCWkl@+>Jc6vebkQR{ zrI5U>EiY72u%2Z>utv};v4>8~{s+{g8rM0@@{-nnr0@sP8{q^ZM-LI?R^314!%h-j z+xtncjPhC~%0 zNpU>;J@(;LL4>Tr45BwJb^fJ&*1?)RvOp7&Ml3cV3iIGY*R;Y@Zld;5=Z~IHm$B6m z%V}kK^8^0g2W;+bWKOFW+F<c*}T=l;am@$VV6qC1M`w-a#xbePQi{EFHHjQom|`GY|TZRcV@5_-CB-B=5o_+RK=rIjVJpOT8sOyT5UG#uDp;6gl)` z913|no9~ZWf8{*flTYOy`!nVDc`PyTmT9%}GdAq&&GUM(l6@DHpwTo+X zZ#irZY^YSIpIxJ0ov_Ei*^D9tvsx<35zUZbhsHPf+7 zi&0cdDeWsq^18ZyT`hLYV^ByNKln>e^i4Ci}8GT3YQlH?U7Q$Xsu<#qDkoc6=U~ZFHB|&km$6 z-*oTp#N}ZX_Dj)t%s*MnW=N+-K#%4dFDKR zYPf|riI{wT-URu9@w-vh1!R$Y9v9n-Y;|Keheeg1$$9R%92=NyUKlkPEE_iX75#}d zAaHv?Bb08=OXp40KS2>RB6ktL5_hns5Lql(=~k_r|Ehg)Aqu?Rpo*jRr|HE8eWFwu z-H3UhwoxU?tvISr14caeJKk{j!*2guwT)BMLb2}=wA}boC3ITtTtku9?gv84&4&FQ z{(|6_`ZQv!?E%qcU9FvNm21c^L6##)5u5vj#-_c2B!l-2iYX2@ELZJf3Egea@K-|I zDc7u97JVg8+P=&&PWAukavlh#Zp?%e52NTVA>#I5tu{Dh&(OqqshoI3F^l6sb3HB8 zbgo#8f9wl7A0)gZG@-4VLCr8hDYIo^h1gRj3ZbR#>?xyym5z)Myk|UvI4m&*Jr?k1rD{3L+wq<+nC!Mv6&`Ic4+YM*Kz<5y=gZLWqT8)5FN)x0 z#J_fgUq`_^(5c@bvP(@UTRDQ98fzdF>uaD|^+TPb`21K#e1F;o9@!b2>^o@?(D1? zd#K{P?6#n$L(OR`rxK5+uIUb+ADPd%PqRN-ZUJn0e9IsSRNa~-tKgBk9UT*Eu0>Fj z2mDL1C~L0yW_6QlKx;*{Ec?HWZR>pmr)QID@jVbu8IpgSl;5q>ZrLObX9NgUdPd=h z!p`Q5Z{I1QXvhFHQ=|XA7edbsj@yk6|I^JAO{1fg{(3jtP%p#7hZFf}EdA`-B4?<6 z8w{>V1?r?f=$;|f)cyHc%hcd zPpR+0(au7hfvnhn(RkgB7>VJgSGwUMG~2%#9$%FMy$AADY^Zm&)X=& zfoU>Yb+R@=J>w-KE>iX;{UHtlnC6Vl=bF`uol?VtGmt;j4g7d}1{+*N9yak)K8sk1 zA!`~`M6eYe=-SZ+xN>3~>2bE#{*Jz(z=sb?`tisyB}j}zl;%nhjiybm%>Bt%4Imry zEdd>F8Aay30vS_>ilbPPhS^~^hBq2;Zu)?uG=|-2c0cT19`h^2O0juz>1l|%y5H02 zAKP!=ZCzV5e*HZeWXh~!hdXqEcg|?-BnII5Q~7y)>Uwc+xR_{ljArL|cMMAmcz*B9 zzp3Y_AlN8cMes^Hnh*b(kH4SD!mdLzW}1)+T_Z~z^(T9NXzuEjv8lD_uf{Jw719tl zv`RP-1Vt3Qa%#u0W;ub}DQ{YWfXaeYZjSD_&Pq!k+rb~KvjR!|7ApLSIUzHqTu5~k zZlNNS$SR;_M~4^gySor$QF19GPCJE9DfugWpS>qSB`n-=up_e2oV*lIm#PNSaEIz| zN_s5qGqgEFUSVASNv`Ub>VC?U-#HIRFN|^N1xmjLmE!K_$*>TC5_jwtCKUHv8d^_1 zs;1Q{D|ejt{D~+^C1`r{oWan8l<#~BPROc2kK>kbDn=DpRuD$}-tHq_3muSPQzKKs zFh$MNy{*XI)z$0{X;5fNTZn|AiBK%m91t1NJ)ccRWo@;nN^Hh*AT=5_7*?MJoYl7# zsG&Iq-5+G?@_(+awcx@U=FOyw5c4=US|ycM8ob=&k<&+w_5qtc_h9O!R7h`RSs|VF zIsAH?s?Jz>r}oT^kGjJzVdVGe>8WvnDz(5nJD+a38C(|0l@k*==(J-nfnvA%39?yt zd~EiFG(~-#Jv*>qQcZP)a&ksBZe))MP8-yQlOj4rqrrwD*ln zP|O<7jtX+3!JXt^M1rU4hvitgY48W)YMSr7ur+FbY_ZHqK32Ah=X_UsEIwo?x?f`5 z?4Pz2aEVh+&?_0;#=m-@UL%17-O;O-v=#VygX-}a;_ouc|AQa`J5XkOD@@79zCe}p z3=yNAr?&)8?nO4ORY2auh*4&!_#Ti2DvkwVo&KIS(tiHU0h*i4Rl+=3(mnjW7hwC1 zAi_DOVvnXn%EoQ()PtqtWt@3b&U-hqMYkfArT7a$@}~ zO1e%1uyy|n*`t=U!pne0%(E&?U;;R4>_{8Gb7YJrB*8zqn<5xV@ZOICA~tRLBSPtz-WCq`;lH&q;CHLS;k_ z&+tksI(dl8o1;tX^u$Sr(RicInuW6*AqCCMF`h#h`*AG{jfN?|H~eScV3bxjcH^9n z;(iMHcsMdAOk?-_B{#nB<{mIJEUppDRVjc3FC3Fnel3X**H6t`9$?EGSx8Imi&}O=D)3r}Mdq_BADjr22HfLfZ_yKoXDDvr`}xxW)WHPO7jgr`lKmh7b=wjb z@ok_#*2l7T0^GVbAg7TXh#%b)>+Kl!&~@BlHSKp3tm(L#f#j<1W3R>%qT!W1Oh)X` z+@Gonlml&G@O%(>1cKO8qlXeW+RVzRbL@p6Mb{tDhx`2(Q-kKEViU@7p`5M z&0X7p$-HSH$$aLDmM21-5#m&ky7QRcF49O50yET=SsFnVaw!USCMCB@w2z48G{dnT za_kDvMP;FhA~z!M&M(Z-$_&=l);?ox%USH#IFkKmrovOF_<)$Q&2cYswDSj7S+Q=8 z&mipO3k=hCZU_cV#hdBUeysHv<$ORg{Fl5jMgr^fuNs}q5k?;gI!3xBZ2g+@*I)Cs zQuvu{A&rl#d**G<4R+bqHa10!Z4Irher%O3n{Au+mL#mvkg;Y~!4Ls#_{9*RK#`Ec zD2+^9X+~ecKl|VmAhu+cbUrggXw*VW#uhA#v;d}zq_ud11YLU5r5Hm*l9dIL7#KvK zb9gLEn@zXP%6=hx;c&<<5uGw|v_i8x@`d`RigCj)QephA@g8eZtr*jq}#JboQWEKRLqUlV8Y+dy+&S)&E;Q&lgX*Q43-DzVC+kO{V-tg7w$ zfjxnRt=<;X5Nr`NV*GdG@Kx;Mmu?xQpA)1sh!%!~CEx`$EM+^U$R^P!pUy`7jc9Yb zi4Ly@w9BFnNM$uWXc|r?$}M{`J!aAU)xq4vdItgnen!&)S@c3* zA~EK|g1?ziSo!5bOjT|=Q=W1iz@E-2BsS~Rc1m+9>x=&ZpP0Yi*rEtwWL}Je!iJ>!TXxo z3cms%TXPJsy~k&4=OS?}<~_Xv##~Kga)=L3TVTe*t!p^Ye8BMT$be=Id@eN0C{?)wnjYzmbwnCf{uVL^VhXP|IDf8>g`gGQ|ssLZoNNi z_$1i(o=CB>{5p1mfBb}H~(@x%rE-{HE=-%(5ke}w95e>~LKh<_@SN*=x>{?<#X;K4c8PwA% zXPbZcp4xU^R_)cmXr~CFH2)V<+elz3|BFv5pr)(1o#B^A5X~@ZA>UhbJ+SNn4e?iq zVQ2qPMfPvcN~a?49&o`AEc%zrx}_l%-^*B6YwN`&EyPoQhc91xKj4nO>+HSY5e3NbT5>14lW zvH(!3VfDuE0#8)16}$GF<-gtJ@6ax@WShYlb8xyi5rT;sYgKp@(Sk8i5Zl+}R#?vm zarSlP%r0L|VyyVlNG_5sD=WV&OBZ~X)yRj7vKH_uokdmhkNC5>V`i)B!tc^WOd>r{ ze@+r?kXmWreq;iFO=>YJ7OKI^F^OuNZi&O|362sxH|5*CJ)m|>e14nYR3Lprfq@$D zFu+PAg1i?VD5o^^SHVU>@-U9-(1MBK0>Y3QNKS_0We5jM_5n9I6AKWG)sIqH^-D_uGJ>4%qA$!w2vKd&1%uDXv zhCgPE=93vk1-|@f4H7h&k>jF)iifw6IeKz!Y=R{Gmlbr=yOdZ6=SA@qqgEn7@&+xd z!((Z$wgwl+_Z5e0<7o8BN6GI zVsSp&4|T#AsSB3-{{=(c?~dx`5sNShg( zG#1q@Qj%K?q%%xzkL2U+dQc_TFZknbjji%plZ&gd!E$ZGg7ew+ST9&28u`mYTD;2c z^qgP7&fbSYTr_m;-WWY+kbcKKqOu(f`$TR}Ohn?ltdeW<{xb`{EXL)rMTXQ4NO6FK z*#z0$npSroAr=_=bquv4_a|5LiE2rp8M{;kxSs(^_qO0pn&F>%@op}SfPD)3cxm1br@0g4!H;1NpFvk(5T@A*kUm`Tz{x*gq;NnQ(n4u z3dtz2SYp96k0aGsMglyYF;!9xQyLV;blzZbhdY|zcVFl{pkXj|DrL9j&F7)7aX!bQ z9uyUPX|I(Pf=2uOKYSU`5@OHk83eFJp;E?k2?ii-rZY-%ln@JPkiaGuUh@YPY%iML z1P?QOK;7p|)t%?U8!E?%8SukVzP)(~8G5^t`gZIR(p6YUi4uxya-h^~ECu@6 zqqAC%xW;+t()4VM{|wJ6e$Ni7Xl}lj355EB0e141pK#~D=KRAS#y*f9n%n3*h(Xyd z@8`S&tQJN@p0;1yyyMk|xH0kL)DFj+{IgEZ{8L&PJ^rx9!ELjM;COT8jNB}US7ijV z+sA@%1LRXs{P`>F`irv9+orz1Yj@%sK8jfC)-NaI3l15UTe!Jfgqe38|O!;sI2JS^U`6FGzsESspo zJ67>9!9_8nklSSzoDnSp&(1%y>P3qusVclU!9(ebDy1zQ=T7II#d}B4wqMr-?xp9M zb4=*|Uhol>-Mf`D$~TbQCCnc=Rl{Gw+knJg)Y%*Tfb5P1qh7+YmKXa$2g>HNrW9#Q zhE-bm9OOk`nz2RjjzWl?!MMgFy|_vY_MnWl5wQM%iHK851<&M20;Eeik3|yItH%6|oN9Eun6{%d= z=N*eANB|4DmbrRaN=(|bb2)575&|JP3t}M@h=m!1$dRRp%&-+T0AF8=%d*i<2z{Lh z^F3)IGo1%ZbKG$?nNultCSy0di(F%Ybg&(;k z1izF4^>M!(M)W!<><(H=dwPQDr5OZ?ie+6C6uj**G(x37O`rWR5pseAXJt9$EgTvv zx4a84!V;Ov#?xo~Do%gr{GPUXF8H#!%uK!9%Sr-IZP?*+33*8(p3BHHv%9#C06jvGqkfob46X?zh8#~j zPJ7k1&cfrel5#z{5%T=s%-E-Z#5|L?qmmUG0d=2Ak^=?b&vnK`{Xu_3_vk^E?4$xx z*;D$%(M|j94SX0STo#sIR+rpJ*tY&@s71E=mkubfnYXRVwX8VB+&7aaX zDkYYB08*`-r~k?r|BEg|>3>NVQXVe+TgCDnY4`*WEFO2#&}dCIr(efKj#%hFlb5GZw{&Grpn$HOUs!iagffg< zUOr3@Dmwyx;;e{LUpr{gNl~)W zX@2n$J5io08JiWmLC#GBrIG(1`lzs(%$$xv4*B5(677_}0DvK1{DsG-&*K_EoMlrU z1r9}lAnTooE-E#wQ+?v#McpTvQxiAkk)126n3!C*p}Ki}-pxM`r2ez?TgTl*eVEkx*hsQ4AG1Scb@M1?Bo z64>{l#I7SqZM5$0m$gw!#s{=|bGn1d3YpvS_JPXsv{T^2Xvc)HkNba5@(>xrwNvD3 zSJGWRM!%K`GJiBn_W_SS%OI7~BQ#W!$zg(OccJ37cp#jKUfwUV>yVMqNf$*9P>0_X zQ3XzOz@}VP-r7gmFGi5ST<-NsaScbte+`6jy-v##`Q86b z6jG|SjsPcT{TA5e7iAKdP`-O5snH$Fp#~DWi2dP+tDEgGywPnPkgPeJ+9QTdTzE{X z88~L0W4K4`f9Q5Q<}Oh(JfaAvN+0-dgE;%?(P*qXNwpB_)-Zzm*mP zcex|GZO8(LWj!(h`(I@JpSU%%%+bka+4p#^=Li0xSy-m?t6ws8mE^qtzmeB(XQ@wU ZMt7F5hocMxav&E)U0Fw|QQ>vO{{ZOG+C=~W literal 0 HcmV?d00001 diff --git a/global/fancybox/jquery.easing-1.3.pack.js b/global/fancybox/jquery.easing-1.3.pack.js new file mode 100644 index 00000000..9028179e --- /dev/null +++ b/global/fancybox/jquery.easing-1.3.pack.js @@ -0,0 +1,72 @@ +/* + * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ + * + * Uses the built in easing capabilities added In jQuery 1.1 + * to offer multiple easing options + * + * TERMS OF USE - jQuery Easing + * + * Open source under the BSD License. + * + * Copyright © 2008 George McGinley Smith + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * Neither the name of the author nor the names of contributors may be used to endorse + * or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED + * OF THE POSSIBILITY OF SUCH DAMAGE. + * +*/ + +// t: current time, b: begInnIng value, c: change In value, d: duration +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('

    The requested content cannot be loaded.
    Please try again later.

    '); +F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)|| +c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick= +false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('
    ').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel", +function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='';P="";b.each(e.swf,function(x,H){C+='';P+=" "+x+'="'+H+'"'});C+='";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win== +"function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('
    ');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor, +opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length? +d.titlePosition=="float"?'
    '+s+'
    ':'
    '+s+"
    ":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding}); +y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height== +i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents()); +f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode== +37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto"); +s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('').appendTo(j); +f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c); +j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type== +"image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"), +10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)}; +b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k= +0,C=a.length;ko.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+ +1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h= +true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1; +b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5- +d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('
    '),t=b('
    '),u=b('
    '),f=b('
    '));D=b('
    ').append('
    ').appendTo(f); +D.append(j=b('
    '),E=b(''),n=b('
    '),z=b(''),A=b(''));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()}); +b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('').prependTo(D)}}}; +b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",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",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",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(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery); \ No newline at end of file diff --git a/global/fancybox/jquery.mousewheel-3.0.4.pack.js b/global/fancybox/jquery.mousewheel-3.0.4.pack.js new file mode 100644 index 00000000..cb66588e --- /dev/null +++ b/global/fancybox/jquery.mousewheel-3.0.4.pack.js @@ -0,0 +1,14 @@ +/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net) +* Licensed under the MIT License (LICENSE.txt). +* +* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. +* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. +* Thanks to: Seamus Leahy for adding deltaX and deltaY +* +* Version: 3.0.4 +* +* Requires: 1.2.2+ +*/ + +(function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a= +f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery); \ No newline at end of file diff --git a/global/images/alert.png b/global/images/alert.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c8bb0cebd100c2e110bc2be0c05acb71056f8d GIT binary patch literal 4117 zcmaJ^c{r5&-=0)tCtGA0OOa(}Y>j2cI`&4EQMP0nW1D6%hB1~5g_4t<>{7O}XWvpn z$P$W^BiUt-lqI~J-|76`Ki=Nwx}N8|T=#u{w)>ywo`ty)JBttt003Y&F-BM&u8^bm z6yxFdD#Lcf;UY*eu%%cNT`5#F84J*LA>P0OP4H+ptQ8jRLi6gx!T^BdKo68H#TI!< z14G1v&_@`MAD(o`1^{5%ek3#ohot~-VBI_jaEaB17ZN}Z7r4Y#RU`yS(#N`c82gj4 z*8b)wj6V*e?joVB1%&x&917sE6g1Eef0N*?;Rl!aTUX<7e{>C&0R9c3;NTMfNy-*! z0n{gwu|QQ2L;(Z22mxMH1Su-3K%r21pb|t80){Ao6_peep&H6c8W0HZpGV>_8rj8F z!wO;ePprceT*93~A!&fYR4NrjRR$5sZeT@qb@d|+B_)MJgn~DXKtcN{5WFRSDIl=k z7_tY6;z1+;j}*~2h&~j!#9^lYDFILVSC-)YPn!-K2KGafz=|NqQAxjmNaX(y#pC}) zdsD2i|IPRR6!u2ZNLa8H)|==<#vBgLRq`klNkgBEMN^1m6p?uIR~IeZi4>x@JCOv` zw^jvS^&q$qsosC1kw^^_f;RmV0CbJn1kp0!#Mr#kv@hiFn}O1#5Wx zJ{RTR>ixrY`F$=bzvY4tlK~%%^?!}|*VUnSj<)}r_VDnp?XiSIuagf=P4`t&007wT zn;>*iejk_Y9Y{7aeEa)NeV^vy0`&Cg^b@c4_{Fnz7)~&&2}MRSuxJb=nL6MX*$qW- zn#+}7UyY0}m&E)9arvBDlpU*d&)xoop=w!AzG9#(*J(ZaofvO2VRwMI7a+#N5P4_h zfik?eOKWbtX0v#+cr?1}M^Ip@-Zp{~&;lZ&t0K5u$TfJIp|t-#k;(x}@kyY05YXV#@xqcf&uoJ6T5 zwO)hY7c`jK>yk-(@HE+EP|8}oBM0`zvvOYc77L7Y=50jlx2H^VrPl!Inxa4@?-5eR z!WX`a%~Ib^gQF7N0hmn{s}tNz4oTzwgL;|+oNO-4^!w5c7B46llR$+{;4J;lhXE}c z?S|`isP}zOcY8x;X*zwDTcBgL7Z~jr&n&gq7eC8Sau|^WCpn9MAtLBDXEh6 zY(E3zJ^^Ez2}8XFh;ASDhICPS{00*o5{f!5FA%_lg!d#0Z(n;s^{Txvw1{AwsM5GYYe}r_<;j-i8c9o6g5-_wJP}dc(GB$Ftc8t z`xop6Iy$k&(h=eL>w>OQZZSroYTmqy1fuSk8tnYbz;lJ8GT%Utxg#n;a`#~ajaZ%m zk=^al+;zL@f-Yi>I3$j2g&CQ3wbSX_?HfhNit3-c# zcf0$byUP$Q>qBV)$UlcRX#eCvNzv2clndEZ{9k)UgY*>#wTRZY5o?I98{rgTBs`drK9@7l}R#D;(hm1 z=>)BTfo7pX&g;w{Ohn47bNqgm>^Yn&TbqxOGfx_x5gwyvm$J?zs#g*ml?KUc$i4%x zA0T9Nb$qQ!^hG#wv=vMsut>v5wmJ|X1=>5Vur+6UMdI@|3cnaRZ^&4GU3e)6GK zTYcXT3#cq0xor=&kk?x>+T`+Hf=x6CUgYu?vh>)dpfL_m=WM!BSgN1*j`bv0T)TN= zG-4l8(ty5VFw~(x8P=Di$I)C)*u_s3?;pRkI9G`clI8eHe{h`P>$L(_*k?(jHWAsC z^@c3*c^8)%F2j)o%j@+{?=gw!#WxqSm{OW|Px|nU& zhuoRA9R`5p*3x3+W$-k7+MHd2`b{3A6M6Qs)L>+uus zsx>bf{> zlU2kSS~jfr&;FqbaBWItbx0b6QFYlF8#vyjnmS~-M%>f6kryE|P7u^GBpb^^c4Y*zLE? zKgvsjG`b#diI!g2MoG>{dqoi*Bqn@}E@{H5u6JCY3AprW+7l2CHj?dQO5rbT1@kN5 zzvqTJVf>o&&PA$upD$?SV`h8IB8Y%qt!RnQH^;27Wq)1pV!b4w3AXtQBzQdC%(t3Q zhyHX20Zw<(9-qT?&C|oq4n!<-6r%G6AsS3vU;5ZaLs*+-KqDxaC+kSRzvqZ~##O&Z z0~_9pI~u5SWf3e_9LWwdm{BZKqN>kKKVaX!ky1NC#Gqa~rz-;q7x$3XdMZdsU z)4cE@B5uCUwfh#GqA}OXa{6^t;5}UQpI$Z(YYVK1;ODU+dDtqSZ?BrNcv)jxngmSJ z`lpuQ#n74$$qh#8*JAk}4Vcn)7}SM=njpRD@At|~?+Bi272KM`>-0oHde$a6om}HP z0+v4Ke{m`@;s$jo7g+Rh7vUOMN>^9wN;PNTZ8!}rUm~x-gdi(!c_^Hjv!v0NVI5w| zv~v2^*$H301G|TCI0S1Pn{WF_o7FCN7wFF^jEJl9bi7b^y{9S;J=e3g92RJ|7RqPn zs}yF!V^!-)!*4$Cqrzh>YsW3bc#ccfTzG;|E{A>c$5`9Iyyg8K%YX$D_Tjx#cZC<} zogS?3ENBxE$a@<(XZq0}vV*5M>DMk#y{;IW_o*dBaLb>Lr$eOR?8jtyFS3Wv^=7<& zYLlo!--*OJm)9GIH_q#{E~y27EMlfYRg+#W!x1GFmpVs=I+}BzF)=vy?X?_5mOK*{jmlVZJ?atD7AQQS6H3x{X6D1!eDlorM$pEj^#(7 zu8M(U<>W_)cPG;GxSE z`eqxnJz6J6i$wAnivu>JLd3z}vh+7@IFs=d1^s1yRVBtDi_+kLsrOURAuNZ)-ip^A zjMi+KUFRsmJ+o{fG10xu6+`Mj<+nFbLr>A9ucx$p)jn>t-y)CVeuxy3Kj+%ZQB`k$ z?9<$x!Sp4~aHN=;XL7>%^1$*xR^}?kwdX$DE=HdoRrZzz@&z@%eUcb;Vz%6@m3P52Q*ZT(g?^_wE#vWV0KD#>-V%+weatZ$Q1aajo!g_$i4#*kH+Zm$6 zRFW_dt(JbO8OMUqhg=!)6+({++F#`raCR~$zC0lz%BG55`M?L_;b4}PuaV70S;|MS z56i;#j9@Khnc^R&gaEfC6){ddD>FQO^9oFs`;r8{$OPMNCB3fKuK=R$*Y6#Z)1sI+ zq7mUw)3o2NSLEglh*Pm}{_iK9)*LDmQ~qR?e9v~luw5auTWIQ1+E#M%r$GEiL)+R{e?7C#0m!htj$%?ohdXhd`?eO( zTFu|KK$G0Ms;jIm?<*0~CPm6v6SZ^%-03OiLT`MpGPaqyc(D27#hybytHIFLR;|D7 zx#=&TJ@QN~A(geLZkfb;roA8zggb`SXBx^^{ih@%GIZ7Tm<}vEzWR;;LrjyU{inp` zwotYcab}DXxId+S>WU5u!tb`8V$FQ8r_29=?YueeAME~ zb8a$bD9EJ_jO9ep<((KE-0QD}sBEx{ZfCLNI24AavET+MXT^LxbmN%kTRI;yU0${F zgZWqJiyJYP%$;l~sTLp1EQKD7w3}U`LfJ8Wh)9+qL zKN;z$?H3i3DDYa!+Ma*Xt)eS%CFWpJ`9fp1*6Km&oshomxdXudaMr;o2%yP@RvS@M RuygdIZen1LDA98c{U4(lKC}P; literal 0 HcmV?d00001 diff --git a/global/images/calendar.png b/global/images/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..81ed1a19158958d00205258e857be6a2d5d9b347 GIT binary patch literal 404 zcmV;F0c-w=P)Ixty=*LBGy+f;FGa;#uB|OTf zTz9^G{pzj&>aN2*K%#4d5IA6f3`|Cqpc15HynOfmVlJ4^<_iEyafqOFEvc#q53(6u z*P@iMWHfa{&KU%)%X3J>Z(lwGa8?N+ZLxQFRAPnk>yL33{$%{djZKaaj_w^y%g%+N z{j2WA*E_$(lbzcD%;xi8?_ly@3GK6+5sO<9b9%nQpHl9I9>Y+PbY6ZC#2yY_Aqc1(Az4U-WS8s)0@C8psz{3* zMXFFh0jbpv4l)B3L}&ql76eAxBFL=~%P0tp99r590`^Dg&g_22JkRq!@B6*q>^VQ* zgZg^rdISPN-_wKRkBNnfQu5u1*8xr0F=^L844;H#1&l-pR2dYL|_Gi z#W09(O$Gb-0c=TrNgr`rPd6e@*Gu_sgQ?WlCn!5*YgfYpbH zN0W=9Kz|NzH5R^N5XBgVfMjw)LINqlfdtE=$y8@&XSIgCy&aCQLlb3~KxrpKt=AMd z5Gs^Q5KIEg0JWkZ5>{XgBJT8U3Q}ZUR)(&Y2`?B~DL}|n5=EWT8qmk*|DjUpIvU0N zp?7}&QyAqZA`sahLScnmh#y>(wK^06vgMEfgXMe}j$NywpBTnqR16~kJHQbLlE_4G z0=k0s@c}($C?=2zAx{p2i1SGji3mKvai`GP&TK~>&w)ziQk)!EEH;bd?#`vsX*`PCHumDaA(xDs zA*+w|U&p+*h4+qny56+-V!iDl8Q$x1ys4@C^=I(A;^fI;@s<6t0p793K_-mZsMt*H zR^M-%zbeo?ODMm3LagIvmCme8x(MwzX%vv*tz&TyM9R17^GLWge$J&jxF+F`M^G52TWHJklc zaV(>LymUw-i>|qXX_J&rdjm2Du z*OlyT=8O~v_F#Q$L-^-29qspx-SmqWRddUTHc$hOV$%jY-czy&2m6NFOKY!}=I)F9 zHGcb%h^d~3m2K=3xeqwG+6_+fvEG*%IU2>gn3yi$l9{hBHlbV!icvI|cux$BoxStZ zy%);{HH*_V+srjRhKI-v{iY|_*9z-x4gC7Wx>>67QId$cqj5oOG@1!%rWWm~V}8IL zIN!B(I>&{XI-spBitl-0*gdu}jpKCr7db6peu}o%V5q|IMO@?l}mZ)`?1zi<{1#kq_u+Y@YwiGp3l+e5F zF7i4rSL+wIHFZvqo(77-Obs?ykFbapXYz>|gfzWh^CSXu6Ng zz%9`Z$n6qAHQ{ki%FS!1o6Xt}ab+DX%Qn35%3HM1@WyfByrR3`#@3Yd{qd^Cjc5I7*Oyb_9+CPFx4N_) literal 0 HcmV?d00001 diff --git a/global/images/error.png b/global/images/error.png new file mode 100644 index 0000000000000000000000000000000000000000..abd969df6657277161cc1ee5107093425a4a0ac7 GIT binary patch literal 5655 zcmaJ_XIN9)wv7nVq)Cw~NC$x=R0%~&D4|OSsX~ANAt4F9iqe}@Apw!zMQPGO6cLc3 zq7;>m(tC@vhv(jN@B8u2+uyhMnrnSyj5+3-^Vg0wGSH%-Vy6NC05mXdsPV-L`twp; zx%gU;5Th>^Hk^hf&IILx^K-<&0jkcZ`*0o@($N)e40m)6@a}^v0sxnJ5T=$mOMN|v z6ACHe_y;55k3?Uv0RY82{%A)h4>*qJKHL@IrNq10+R4jPG-oJDq7xABCATQ5f5S)h+@4rl0 z>KpN>qcCtD83~ZM6G#@sBMX)QOG(Sg$%*kug1{gkND>H^6bH*eq$D9A5YN9K-ivG) zXBUVuRP*1tE_O=1Za5qo0tEW``APUmNuV&UK(M^L{2vWTN%0GWI5xlw=jbo)h2{HO z0Sd=DVGw8>0_DZ?N73;<$_J;!d*Sq7B_PrNk@dp<`q-=A?`ag323<45;kr@idAbjD@niv$4 z=dXexh=2AX|BrhA<~skgmkaCvPzUhB4De4||5uy;KDwBlKjD9d_G0s&v4?wI%sS>` zsP|x2mjHlki7=?DssH4tbr9O-OUT(!yWe!B?fQziRVI91h?Ij-hk`U}6gDZ1_?(4{ zaumMQ%||Jn>pPhpfl%j8gO%hPQM}>PPa_ee+Z!3@jr4S!FBR*vh8>S| zY;2?O@fP@=qWDPE<4Hr>4|{ZiY|HdPJRB71SBOeSZhTxQ@8okfpL3k(T8 z>1hfDnymLL?F0DBjV$&XtSUS=qFHFw-8Oa_5#1v`qprInLWcIXIrs)i7GsT>QpgtR z*koTr!r?=8ZK_j2mKQ%Z^I|TCO_V$6ZW__0UbjuyTJfQ%zDFmXvOqfY*h6;AXB4Jn z&GI4mM#igYwZ-?2&b}RS<@1c%_r~R^Px#0JbWWmJ{D(>WYwF6@!&XeTg9c=uGoI!V zIlDc^)DwFg<=9`W_-K984a`8FQ&5#2of-uzXZ4Vf1#p!A%Ii5=Jw~@Uo~P#g#!iI+ zxYGgm?P5Gy!-LGL*xl}J6RX{({gpG^-&C2ESzfPQujXT!ZW|rQj52<9g@j4x*=-C! z=;;ZA!3||I!X+;cfL|<~8h|o!h=_DQ9sU{?NF5b=c$okAl%{=6Y%PL?+9;l7YlqP8 zAoC&Y)$ECA>2I~0y@B(=YeR zQ;84>lhB>Psyw2$HrBsuHa=SQg|uJa^z6C35%QOvZq$ax>^I>j@`kT>1{!%j-2wO< zJB{V`uk=x&WvmOnq#6WoUSoM|!FuJq;m+LgT;!N-{19Ay1S_8<-WAyjFr~~gb%4Hh zeio?A>*W?qOrf*KSOa%S^uKGsmoiYQ=le zN9r5yIUh+}wc)RX-b`K}?))vve=YaDq2BEoaWHoZQ*%H)jR=W+up6n6ChdI}9FuwV zl{YW+HZ0|uq&6un@YS0ch(eK_HxvhVMZ_RpY|5`jU^5nr^u0Ve&3M!B#zhBxju|jfuB)?Q zp$At>=sIZfx*jwMJ~c1t-LOk>AqSU}NU`QGYf`eJ4Rl!S0-;d@qh9=!C2Its3KG7-1<1c{^y{Z-GAN}<$>{)#phrbVL#+IgE+=Hk+OTG35FqorpSm<}o5PNh_ z9LE4*NRv22!08JrPI+oT|4h7 z^r>~ZEZ?>3R0oIiOT%HbN>T)4X75(ex)3p~BP%M^>t>QF>d_A+(y=hhtKyvooqPAm z+j`c-)t{$%6MH3p%y^_4m{VtXMvXs*Dzsb)Y}igKC-fMTfKm?$ai@_q9%K37To+a` zKB0!;2`c^XjrYl1XpAGTf!)oTTo<8^I$&-+F zJoj?n=l9zs5jkCcozuVg^Rh#Z*>tv9$A0IJwypo9a=pF%v@qG|Nl+fgZcdBt-hN1V z{WfR%!KRZF*`};T@&@1W=(3Q^4``pyxB2)taQ;{XR|!9~Ulp;aPSkeeA$?4nA?d5-yV) zK2(CYHyT@7&-gnXY2wHacgeB&KPiq*GfR5|_6n$t6vs`Q2Lm%Xxd!I^MgHF*AP z#5R=XbbbAH`p5Hds=#L%YA;*5;Fl9XfwIvPI%EN#w60v?E_{reT6@6IJkA)E*lxK{ zb#rL-E(@flH0yYktB*i^>q+4e3$>ofCrxk8FWFkj3G^p+d2zYG&MaE|!PvKVCFI!L zm){Pr?~X4}gRe~#(Q{sL7J+K<1JvJ;;U9!bc(;gj@c<7Z%MxuMiHg&@30IYyO&)tc z%5EsKsHp!0tkOt~W|AyuaU;xds0s20muBjHucE`L-{F6KZ^*fl4Z)8zzdBFj9y%7b z*$*QAU;wR$#Y>BNyv40Yohlax=@;t#9xwCmsE6Y9@1{S6A49uk*KUf0&ryy5gLU55 zj2X=oNpe;7(^UAd37DFemK3o}@$a;o$7e30@e)9%i5o{zk;ied;}$zyNMVo(;R|~P zs%r+HDydma8-}`b@JM~U+0W2`agO#%q}C~mXy|})s$16aj!mid@2~Rqw7G>wm3%6C z?D0V3fI*v@?!oAX%89cE&(uuK#)LS9m^>A)8poN3^R(9v+nQ?AKG;E$0 z`|nkLIS}rjpC6U2G&I~bFaaWp8KIq`R_gd%D-`&=!x_~-Sn`AC&-Uhb?Vf~2;{9H@^SBL}h@^uY;J7x1*R<~!k zUlhLPNKN5cS!Vl1KD$r3Ap(#J@Dn{mfaQ~6d@kd?(YLnXwPo&2d%?YU;HuxvN@+@G3CVrw0qe1G+e zl;@do?zUBE%udj~-L9xjqGqn6t|T4TAdP#)E$Fy-(+2o-Qrz|f#}xu=4FkR=-p$Nj zF{*H3cl<3BQXuSSZZr4FIumqB# zN}7i&FX&6%z;=WT8>WqHgNNB!K4;;J%t8W#)jmtWL-q=cF7Udz*)3Z1VEomJ&s*q3 zH&T&K?zHl9>D`{jS~&6-drt{BF$OZ8l{~m(ms$UCXQ8{mc;G47LJQKEyRB5uI*pkT zdpCwqOnThP%czrD_(RtKa};CkN-@gxa^lfaibltqfSEiGweO!)ALGUPS)H4o|`s#bgWYpDcyw038gYm!wHYu%t)!vPZp+VGWR|4KS^gG zX*VwuNn(HWxCkIx%^&aUseFnFrAH2zSausB?EQ4q;e@-STd!|*MYn%gPHxC=zZH;MBNt$=$ohLS(1Z%1Af3ihpF}T5 zHS*OuUwWN!PL?kCC39PHSxDm7r8(=!Yj*Rf{`j98|E=;!uuUo%{sXK|y5v zR4J9<{;E>qNX=vU^}D3Sx`B0;mG@}kw;cb$7N1r6tSmHdVUeL)=8|L)cKxB)&Qcff zZuqh}_4})b6}B?&TH~oSlJ0w!8;MC#@K2%{kH77*war3;a*iw7Edka_j1fmLS^IaFApH*a#$QJ4k+D&7jwp`-i@tIt>TcDp{ba4eFI8tF zenunliCUD;7Ir1S+=Cvmr1V2{tqM*T8an4&>?eYWa8^YbS|?1DDK5~B{DfW~45Ln9 z*5>9g{H$aEq<^-oax%-NbM%gyQG_&ezwpU*a(|^2_)0imf+fJ_g#r6lURDa|r_nuG z_jLx%;uEpWAFvr9!)z9DD4O@_yf1oPi|xj%+~e4Rm-xG-9e$lAuLs(lMLxgrfheRN zEqdNypgunGX$>;!gqjSar8L*4WC&y2XBt`p^%=qSf+byZbOAM^ZV?tarZtX>#rNpT zvVVTGZ{Iq+Dn(Z!ze(XIzxHLz8p~)1v+JgMAI%%mB?l?UUmUm-Di6W3G5KvqbvKD% zlNUnuGW)KIDwIw1MR*DD+>rJ>&bs~iWgK4w{LXcgjP>(?mA(B{*__Dzh1^Ww$NWd% ziU%oGyrf`*BeSKVK0Z}7nmMypKcN)>H6}&_F zM$@}wA=kgxdNH>cB;BvA;xnWm3#k2!v$Og&ASf^qsrhJqX;gYI_;m%xyDYB>5gnt< zSb{XA6lVVs6I_@*zT)+3RnoDlsMO&C-c<{lDNyao7d93j9aad2HN7ToG7nubzI!pz^d2}POi!Yn2 z*mL#P=u{}RU=Kjf$eNef9mW{X4>t+CnIBo2J$KtvvQ^=pOkZqhGZn9=u4)hJt{C0? z@m+m$?X4fBvdQz3%WBOHE>?!p_tJl^&Xxe|t>^r0Gly06Pu1Q?c5+ew4ywr)Fvq+p z*JFWDS6`ER{ytG8CU5#Or(`T*ZB07VyjVrKQ@V7%gQap(QzJUxVx(;Bu8`$~Xus^| zUk{!r1<1Ww#EB(oX$pY~$6QF_cE-#;2fp>KZl2ly@pJZh!(LjpW)CQjhB&HH{{5^b61wT!tcZuA626ztK2(bk{W4 z)?(;6vR|fsB9`d~02~HNlcyf5X$Q)?628AF0GRK>1gB+sc|~28Z}DYw`sQ%<>Q(1c z>xVRYO&r!OPYB#{T^v)q6>LaS&(Eb=x=vTQB9xt7!$dRx>3KL1J>+o5+}GEksfPTf zwW?1<-O51@hN8wh^OstExFWpFIOcAqm{zF^NK!erkG)mIYywHO&DwBg^N^_R{f#!* zfn_kFBZDTfGGPw2irT)~57cIF ztb4M!UAyDTz0^x(hxr%IbA{k3$P$DA~7Kb1~{il%0Sq$EZuvj=Xu`eeeboOv^H<7WG`j` z04rt_xB1HBlb=qX;?X7l@)f>ZU`CI1=zvY^h=7_)`vjW4JtS>nySw)eNfm$$^twIP zvu0I^HUQQ2B($Av!eE~ay+9Yfy?7}=&((#kq9t2lgN(f9UPL;3n_Xvb z+o`z1`gK@MG%ny1X2Zna31ThLg{iK_YZV&uYO2jR-7?a?X)UGAtnx z9Jle|cyp@b@x zN~)nKIgZH1y8*M4ToA9#6)=gN$P1ZA1DGn>eL7~kz?~kI;D-y@AfB~}H%v4zT=uD$}`!P)cs`9uC=0Khah@$>rKhra>OqCE)! literal 0 HcmV?d00001 diff --git a/global/images/group_block_connect.png b/global/images/group_block_connect.png new file mode 100644 index 0000000000000000000000000000000000000000..c93ebbca9f1b65d6aa28e265ad12e05340735992 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^AT~b-6Oas=domJ8NtU=qlmzFem6RtIr7}3CFVdQ&MBb@05!=f8vpKLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z0000fNklU#^D&pI96tkz1P9P8O}L4WDA)YO@$P)m28vFOK*cliYIQ8|=W``^E_se?h z@N31i9e22#rfOSLF+>k)pbHtxpy5t*#RB#5E}mF3tc!b)-)pQ21H%y@&fJ=6ZDfda zBjROTeq&^4c+w%8fk6dDBe}TwV5vY?tS6433R-P!0ReIDsvs+QBd8Hc3+si`3npVR z!N%rp!9H$E?jV#JP=$s(6u@JtEE`^3r9ksz`q~RVKlP42ht3! z^LMPnlPbuIN+ls7kift|nLt??BH0rHQ&Lj;tpSIF4-sHW5P|AK0~091e-zMIiW?b6 zqT+}I;BQ42SE4^v6?B;Ce@noV{*fh6{%+G@!yq&l5(Fj#{aw-@ppnu455?pEK~tz^ z*#F7*{}iT}2a&K4Gc1MZPj)*ToQLr5P$Z-l8S6qNlFf-k-#=Y6^&(P<6fYtPsD+US zTHy%p#6ZelXd@$}K7m4YA-G}n(W;%@_VfRYs`PH4!!ex`;Tc45C7O6OE~m8`Owr&_r&@c7`R&X z(HiEo_rtb0UwgX${>r%L3`u~CE+mmz*=0(W9;x9oc$z<|pEQb_eHEK^Y`JX zp|X$e&ZMRTUPN3-UyXec8-LO zmqm8#mkCGR1#j|2-n;tHq&U7DY%85+#?*FR|5kh6g}W=oinp44=PA!dW_K?la+J01 zb6rX`;mti8`t!C)gnD3lEJ`LuIXlTDX?1zBa{I?*Hgr6oQ9ucu4sKWRpa0G|*Ei2llFu%1oGUDhdQ7*k!0*?lmO;s5 zip^krdLN&`tw^u$i=sX= zG|o5A_fk?+sgAOmy!$HmAVf7wnY=YllALlGfY&B5XjrMzTC$!K>4<>vnIVUqv9xx* zcJ2tHjPfhJNH@gHAWs^rY1i#i_Q_w){HWk>;suT&+wZz3ZlXXwXMe@8rM`Lj(Rupr z+fLNMW`7s~5kO3dQr3SeEmO`oaW$(jjI#`}CRM+s z#jIqAdtF>$kqeYvS#P%mGXu)ZL~ff~oX&YpiOBw@M{RKn7h7MkQvy9*6=kJ47jLk* zIR(#3olqs6n2n9Br^>6BMA#hP(m_y@dOz#cKw?Jb+!HQ)V>cpH?~2L{G&h3iQwyCvb3S5}*@@oa5Zh3z_I>uk0sMi`J&z*B; zYoQ`!q0N-or5;?wRI<#Y?zGxIb-JX0Hc}cCmy0;Ioar?sNpkI!sk6>iOwZRDn6#Bz zqqwsP17}v^U8L1^*Rm-G-*@S%Z+4FPTw}?v2Af8;RivPPt<~gOGnbTL`POS_Y9$~C z;v1Cc2Y^A5sYnx;v3$Ev{pis84}jEGYm@xASv*stR-5kX`-G06KvdIi-k0F}#!8RUlzHU+?2m+g@DmXgYk?lTFX`ur)G}h$+fi-G z$hfZkh>cHN$n*BI2V7*%(SSj(dE0enif19s$L zVBR(_)~4}V-9cj0-c=u^IGVIL-Ar+OD3JcK5Ixmj>VDa}xBU^b%;lv*#`&FxyNLTf z)vQkY`LzoYUj^0%I(bg%E!C-56;KQmgK`pfv9GN42VT!3)%+ zU-|s`OKQ@o*Fq&vnOssD3?WEFlbeANH9VtTOv#LU3vWSTVZM=37E#)MFZWEvS|FBB za(~cy<0cw3dGrE=ex#MzS@qw~%&XX|HS^E$a{Y2kUlq`~)N%TwCHx7v1RR-M<)j=S zE+A>%tMVk+q!(hB7iwdRqSafs3**80&!{%i_gr8eJj?HlYdqRCUIXrk=g^fjl0$)-9_AF`1El0@Tb zSr;TGw8d7xmiwA#98qI0qI#mK_JoefDt`NOiH3$cmls=>^-aU#hT&n9_^2RoP%u zOtERs?)2FW*vH2w%rYqtVp(#T(^IRVk@F0y8ikg_w$XPlP^QnGRXEivC1*G~{4EIX z!({iYwE;H$Z9V%_EiL^)pIM!b{I#OUdFM|9&)`o4jN5IITm@neu43GC9YKSP+G3ZF z@J+C*rtUr!T3?It1x*j!|6KOsK{i+YQN2(#Jye>L@Z9>Mb10Ka1h_jvNf8UkC@U!x zkz=>B;W%^2LJD_&zEVJB=xUw*%O^`?=0B_+o4$59xp+r&WI*}oX&WI>f=o@N_kd+C zx&LaS@5a-3pkQ%&9&`9$QDeLoZcw4XcO87tSlpDzBu; zS{Uvp;6`f+{?}L}tMk>?GyBTiIzz08^sXyasRq3cW3g@?dp@%b5W|9FeQDgzYz-Bm z9CaU~-XzLe_nO|Ct7t3~`mSP^6qIdX>1W6zIV6*eEuT-+owc4lOGjE|1D3AdG=lJy zV>Kdr)a)b{?3-kDE+wv zCk7$FHC-_R+y0)9Sy3~%uz6{XHt<@rkd}4^6Uye_+MUyaE`p0)O6bfxo?>&K^J3Q` zC&-y*Cfm=KYB55<$S5djbiME`D&5dn#?)MhO{Uf$D zoFlj8$={fn;u&Wi&c9psQ*%DflwM%_xyT@n24{b{;(SbybcHqvm(4n$AcB&AoO zBDTJ|-9h;;-^Y*dTpjdbu9K)cqm;6fu}*CMX57EUkkrSA3`SVFX?UkZkANdxE1e+T znDO9a-1H(n_`ao;H=`paLUGYk>27g2P~lqNus}ObXm6%I{D%M61ll}(S(ExK7h9g) zv{n`p-2M6V8DXiU)G?i+>$1q9cXUsFuFryFii;i$3%G*M z6-^Dpx(Q#)9!OSBp{fMUUur}GPK7jo+!+m?P-me$i{KmB8?)KLw(U>`?Ym>RB_1;XWk#dDqS zB#Q^bL~fQxp5WOc(M75F>g!5}qwsSZD*exn(vtoSITTWE`12ipNVYa8C43X6Zon)bQqo zSV&@9k-wTpLV~j=qWzoWOBP-3MsO_ePS{p-!q?s8ysod|)6kXOq3Y1%;APs%VlC=> z{9?unWn|xlUGA7374mV}uE&dLCt=F$E_zO=U8 zzI2fW)|6J{`&5E9)Qb^UgY68c9hZhnq8j4t&v3rfQKQ# zhTpqsTi)`bXZpn|l2|=w{+kr$2A$ZqX=Z-p1CyVg9)iu1CCroKp9BFlj^iMvm7UI? zEorYSJer%Zi(;>CLHu1myRsyuh?h>lMZ6>Z6S9Cf6q-4zjXNoV(P)Ty0H9|a(P&t2 z{-Z51%qU8LwXMLz=pps=^72DpSv`kso|NXQ)y9teo(tWX4ZyI+A3h=Ad)cV*2W!x@ zEMNM$L{5=|knu@X6Xp%RL5!UHN4V)lz>}h*3-TCY=VOc&HX1_Vw~C)Z_%Gx{*u?6W zHE6@yrUEUx-boGsJKb0}&)m6-M23G`OCut0?VU)EgU?OZ(^`Oxrrvp-r*7mo-^m=^ z-MLpgwRialOfTpReA`bwz_~E*GP_)IB}X8bz!>ixEhVka+!eF+(qqujzQ&$U^|XRb zN#1*F$Gb8nO@Ui+WAz(T-8{-YTik}iOW=#G;g>e}mOeQ^B))VDvb@sCSw2&bw+eio z(;?CLN$xuOb1+)Wz|{V8RewvjCn@n*HYl=h0DU``S35Jz}bd;KFHB&-f?V;w;s;+L z-;t7fkjJ86S$=*@jH@Vxge9z4G+Kux!{15h@0z^i_YKD}d-K2LC+5c|^&FGfD4la=zUAC|-+k|U-EQfEbREE1ARxzt#}}xs*u^^Wsr? zC<~U!gA-LSKXIi%k{BmpNQu5n0Us@d3n*Yr1ZWlOm1;=KB)->$@VQ}|LImDJusA01 zgDD{|1YjX581N!fNfIiJ3eZ3@=;2AH)7=1fDoCYJ-6^0u38X_F?husE?0lme2ehLpyEJl_996^aS88ViL#`u$H~ zwLpi$lu%fW#H%Fu!9}|mLZJ{#1&c65B|wn%<5diiAsC{TAt=D&djVl`r4-Sq-=ldv zh^tg%BBcc8vYAAjPnOH2kcS5~kk0Y^@;G18BRJxQN_vwC`}r&X{^u_;dlz@5RzEFoBbS<8Jmk^WUY#ujH~A40 z5{BOtm#!qOa5d>E2{*Pdw`S;JJvyswIBDqi=cBz=byXoGY3)tt(+DZGvd<+MmGX=pXQpkPvhGOL{hqWitEQNNlso2MQ{#7>dNONNzwT83 zPn%y1b)!(lqa*3f%Gu8}%W_RDDGSo&T9uzVI?iARwYRa%T?-b{sj`GG z@_lCZ`c|E)NX>aE^|O{0UPE7K65|KAJQuF34qwnu?(s6shcj9p=XOx`nX$i9o0PX3 zkGKZKn8hv*xftUds@DB*#BPdP)8Js9I4AiaoIa8?uwAiVQfTdBle5!_v6LV-Zr6fI z_Js$|I&MAVGF4Vda@xJ@YQsf)Aj_x!ZPbi`2%TPbo~55|vG;q8Q(3A!ImCfG7+baa z$6X4on13~eb=}qGo*j#uQctT`wwoz!YpRC4`8tGQrv<%T3eXUUq&XC4;(ZF*s5Wu{SviCtQdMg8KZ zX}^UQ)lF-ux3zKdHEX53yR5vVy!YaK`8L)4HrGcPK_mM;v!Zfoo#-XBtTy7@-b~mo z76NBX-Q<(koq2Bm6)}JHQkBy&#w{C`yJkfS@7T@OoR*f&Gq+q1126Wq)P#Tj_ zIMeTTF(~W@h^5&J3rB9H_kpDyRyAFBYf+QvlN%Q@`;zPT%}GH9Z@nJI1k>l&+n`S7 z#gPpxPTMcVXG^z5-{&{U`ifZB-Zh*jWDos$`K!2!hTY4LzQq9Mt~+ literal 0 HcmV?d00001 diff --git a/global/images/lang_placeholder_field_icon.gif b/global/images/lang_placeholder_field_icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..31f757af5dd7f40af389b4cea2f8ed76fae2d756 GIT binary patch literal 402 zcmZ?wbhEHb6krfwxXQqA`P#ibAOD9hyg%jAp9fD~wr;!i_wTFfxPAZ8%ghaz zjQg+MegB6cVP(tGW3PYw-+KA&{B7sHefweGa)iNlS?ke%j#F>N^zANNdS&u~moHwu zOIr1`s(X1@!Q3a$->!Q4pCR>dPQ$wDeZOD6{qp_i@1KAF|NQy$;GM5|n_j8~PrLT? zYuWZsPrm)$dGG(hTc7^_|Ia`oQ2faP)}aF;L4I;zTYq4Bfrkzke{ZY92FJM)l8s9X zC76PQkDdNdv`|g+zy$@*1h&Ql&87!bRAQ7E4z4T~NLsXu%I zlsQ9{O;?OhEm=iKie;9Zl#oiHs~XTQmZ@&~oU(lE{QLsqvYakLiXvh>>{^oC%_53I z?z~*wVyu$V(qeldrT8|9ItGS1p`K%C<5Vjs2fq*UZI6nN-Zt5Oj@vX1IETYdIvpdd*yo2mZ&)J zMdn1yd<>BH%Vj!sV?J1b&FFMckdjFSqt)R+5uHg zI!_^%Ovj>5d{9l2dLDyeG#cr~5IRm|Fd#0M>(XGcf+<9>!K@=;Q?SkuIHMp&4JrcD zlNhc8T#9fSoU6EsD?32u$}?YnXZy%fHK+tL$%sjw1HHhuk-y+ zVT01FM;Qv#faee@YH;a+u26cOh(KWyCzLp@ndxG@8Ygjs8rK7&1U8U}=@8s#m_o~B zycnH43S>l-CVdmv$o?xe%ac_ zQ_7>2BQ3{QN#hHu+@pfL#U|r7gK@3w9Pi{s_IZ9I$2!%?mb1k-1KJ$EW0i@A%M$n3 zf68_GfkTdxW%A*Y`U4)m5@~OY{l}l3y)shB2~7GnMJe};^W$44EbU7_IOM2lJ_9|i zyPusm{9#lO9Dc}7Y(Dp}N4-Mxz%MQ5{P5|x3DdpF%)S>wvdfyfVDIR{^V=3~pf8fH zSR!IIZ!I2Jm^;y^OFP0T{MxJV<2`!{Z^%266Koy+)`m#`4rCizC_1xybeL4k?`uA_ z&Y$3y7*iPuj^(#rDry<0&DE{rH;XPCPF(uD_D=&>Be?zD80S&zC!3!foEO_GCQ~%m zDikT7HQpqatWmU;0B+py*hQL9hZc$B4AT(s{0y}_Ef<){0HQz!j)zO_TT#W|i|uwK6F ziW>hTxew`Uty*yW2q=y_Fi>5ywpJ~$6+eUry^5my#~-`Zsc&PJmDhK!td9L?Z(Xkk twmRst_7{^o`+5U3crv`S4t)MzJFRKEs%@gPsM7VbkBOFxPeg4l_y^c{k){9u literal 0 HcmV?d00001 diff --git a/global/images/loading.gif b/global/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..f864d5fd38b7466c76b5a36dc0e3e9455c0126e2 GIT binary patch literal 2767 zcmeH``%_bA0*1eHPVNawNVtR;Fkp-nQj8edfS`v<5L7TgR6wi;WfgH-0}4fE+c_uU zB6tf6auF}FAcDdgg|bMU&H)LR5jARM!8$tuwd$nHqS?K-=JNZ+yGvz=Iegxp{+qWGZ9j{-%9vvN>n3$NJp6==CAqYaF(LfM1Z{EEA{{Gt9 z+Ba|B7z_sR+xabl|E~mm-*OXmhLq??y)HONjX>1ze1D?RIn=G1`RR-%fb}zgSh6^a z(}Zw20U1L^Cs9UcyJfc+al#}J2xVlYUoR{`gd&QDxAb1w4>I~5gc?ccq(G+T!I;H};U_uyHR0@hr>Qk1P1=6fvUBhR zb|&^^cEQtu&W}=-=YR7o5UI)AD*~%J7bkVd5`xrdw{bHm;|Bf^_|FG$9l}`ruhnVF zO%=6X*I#yro*pmfB;-A0cVjz73Qy)`oa=df_3Bx6!M3TNALf9BwI*di`jhdovR(I= zFT31zui1Xw??+Ym-lWNq=V6~8tt012$@*hy3So0QNJ#eIJ4Yh{qJ+aTY>ng8W1p4BrwB_>i7AY-xmGrA}hAeq`aX(yx~=c&|=$w&*&PpKd;G@@0oXK@D0x=;tyY&Eb|HKPsM z71v`PO)na3pfO*xUD8Z|CQju)c+RSAH=5V^4vb9Q2JwHwt|-INt|!nD?AlRxF5ZT8 zaA9~hGb$~rMhQh_0+31$tkzyLi>X3c7>F!|Jyn`+5{LG=E`sIQbHA8!=`uday6D6Y zNtVL?j^`6A%UuwO!`}j#s~H?w=P<5}Z2)*PPx|5q$MM+1K6_d_cie9JVArbrB2sRy zOl**1Mc+|zLM>munG#O|##RApuODr^1+pL-?SHX+D6Dz_@%-Oo(fM&hHYZ-jWU5jf z&nBYG;>F6&Y`veoLdZ@0WyrDsuXOP)9g*C`A(+R`Ryc2+9w_DJNaf@Dzg?~N{uI_} zjV(!yygvrGv#KF*Mt{6H^v1Ve=hQyF2^E~bd#&iZg;(%dS^nM;oGSF1Y^&rY}Ian zFrp%SBGPyN{Z?t%Mo#!qgLQ2)k{>KAv?=zezKN*qPRf>^4QjcWgyxiC}7Vb6vGrBLR(1J&B%*gb{`!Jljb^2%jB$ zFBNUHANC6Q?0~M}cVtgk_;_DAB-BE?2dP z(C9OIXza3Ao-@UyqX%`5cjg#cHl!uHq;&?~JO{eE+A2KSSD)s8v&CiV$kV$A=DG@i z;6JY7z*8oPdj@bbJQoTAENW#ls(ucbGA#yhN>zbWqBTbLl>rGqOAY+` z=psSt8VQE=9+X8^$l@oeDzRvja79ry3nvLcOR7+)bIFyJVoz4}URM-47_u>V zY*^e(o`?|l++*Y0uQ#&dKapW1o?J{jx+*_gKV^cW+W87KI7hZ5viXv$$=1IR^Z~yA XWBrHU7iSEP8X8hQyAJO{V6g1pwSv80 literal 0 HcmV?d00001 diff --git a/global/images/loading_small.gif b/global/images/loading_small.gif new file mode 100644 index 0000000000000000000000000000000000000000..a53e14c6544a6774b11fd9f3f1e8625cd63ca5f7 GIT binary patch literal 1849 zcmb8wdr(tX9tZI2z31lM+(&YVNJFGf2tkvOnD7cwta}qc5GVzz(DEpW7}ijzfr_v# zB6%PQ@(4`u33Mmy||wwA)~*43Hrx(R>mU)ewQ z_ve{&=6vS+JHI*EJ9ikiSRewCe;~-SXV2Q&+8#fCJTo)1w6rudG<5CSwcyI==%~-< zo1dRwSXl6QJhyM(Zf|cN931rf{mB1QvCrs&tX(f>7z?wKHtVo8!LzadmSi+qEeEW7 zrOmbj`=pjyOH18;%ihhlH){4Hu}=Y?3hq*eZV4d~yjdzmQGV=SM$k+XdDG|{%Zc&c zyA`+~x^%-bj(w2n48Xr~($}s=8Xvy$#8)`Xt^7u|+vU7e6vzMFeUqai{p=ljCUI26 zi1Gcu-IgKw?2Ux3H7#)+ zI14~v^YsPykyj&YdLuwSS|!79%1$MlT%`^G0qv=5&F8Td`eSdmzIDoQCapXzETttx z`H~4zKqi?bBm4YaZr5~Dqk8PQa}9;Fk)3Ee5-F~|9562%AdmP?6yP9f*b|i_QcG2H z-{{1e57_1U9i`%>#VwQhg~M6N2`B{>PShl0d2~(B+a8svv`XtejIvyn-0N)1YjmU; z8^dE(bNMnQh;he~IV-X+RHDB1^xdL9E$5o>XarE?NNI-vpE+-bDT40egnxdf5fNt} zT(MsyZ+&QuF|k3c)mgH0W}G$T`veLP7cvbN9CqyWCli z?!w8akJc?Utb>vV!{1L>-(|kty+1FhshqtCJ z?wI$4e&BdqSU_6{@QFGIaLP#6iey$r9Z6^G#h2ny_jsI+H+;%GB%PLQnyDUC3`b!D zxf~a>;reqou81Nf+Qb_+ECqT3=E;(a5--3^-%OPNA=`AwEvqI7+)`lEGDIc8D3v`L zf<*GIb%*%`U2i*t0D`TzmM4TI{USu#34^47jC}F$`dL+AM3$Cy=Y-qAWh)f<8|Uo} zwOm=phu){3Mo1a=5AobZ0P*GvWlAY@+v_j|)z|5mzt~HX4L>%i) zs8lK#0wdl$T$Sqsp6yi?0%DUOyFQKVmWS7@4)m%9RjH3k6|<@-#ZRWxa#5mqjbHlf zGXEcTTK2{AvQLg$Tf}eqALZ&i*6aG|09VqwdkhCFDW6`=toL`s%LR9S^_^YJQ2Yu4 z&qlBoKA$~=a0#FlFbparUPz#b#N!%%mL(OfQ--&!CZjyPIP&f$4E{8|c7@X%FJubFC$23Rh3un2(5_>OVK}Mby-t zwTp8KzKFOrIsUv9&?GOO+Kv${iPH>~qymHx?Lv7%n~LUZaeONrOps&P!SI@<(5qS1 z)Rm9Q?^FI<*iim{pn*vqG#8aW5u~nlJlPs8=z3=v?0h9wH{EE=G>DmugJZtWBk`|u z3Ttc;Q;RmFXaMxNjD?(iJ<*%Ye`zDyu zHVyo&-#n-0Go2@X92Tn|ZO2f^OQ%>valtkTBRz;GCL~=}}db8eHWUl3bOYY?-2DZ>L~WVFffGH?<^D zp&~aYuh^=>Rtapb6_5=Q)>l#hD=EpgRf0Gw!Z$#{Ilm}X!Bo#cH`&0({$jZP#0Sc6WwiTtMSp~VcLG1$aY?U%fN(!v>^~=l4 z^~#O)@{7{-4J|D#L1q{k=>k>g7FXt#Bv$C=6)VF`a7isrF3Kz@$;{7F0GXJWlwVq6 zs|0i@#0$9vaAWg|p}_knMZjcTmt&+4%o49WT^vIyZq2!* z%gy8{z?N`6`iPR0>uLoKDV~1}n`iL;W1oCCORzg3c=lPf3J$l;XA^{V>RdlQj=6vE zdxGT-X4#5&d}V26`Q^H6OP^fd;B+kL0-N-nbA}P@q8c-dZ{{zVA(Fc22zSwg13WPj z4tL(%YT%tLU((EcCE=jtx0?Q?)v{g}T7=U}BX2Znl_Y9=Pp%E{nG~^cw+qv>fJQ|b z#giL%+bo-7maJoW{vfBw118-U&Q>cl4xOFwR&TT8wdko_mdodU%q{NBU;p9^W4r8G z=IejX-z^QL%f$bm`%Pgg&ebxsLQ0Q;nY Avj6}9 literal 0 HcmV?d00001 diff --git a/global/index.php b/global/index.php new file mode 100644 index 00000000..241b5e4a --- /dev/null +++ b/global/index.php @@ -0,0 +1,3 @@ +Waarskuwing! Jy het gekies {\$num_selected_on_page} voorleggings op hierdie bladsy en {\$num_selected_on_other_pages} op ander bladsye. Kies een van die volgende opsies:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Waarskuwing! Jy het nie gekies enige voorleggings op hierdie blad, maar jy het gekies {\$num_selected_on_other_pages} op ander bladsye. Bevestig asseblief u wil skrap hierdie voorleggings.
    "; +$LANG["confirm_delete_view"] = "Is jy seker jy wil verwyder hierdie skerm?"; +$LANG["confirm_refresh_page"] = "Is jy seker jy wil die bladsy te verfris? Dit sal enige veranderinge wat jy beskikbaar gemaak het verloor."; +$LANG["confirm_save_change_before_redirect"] = "Een of meer velde is opgedateer. Wil jy jou veranderinge te stoor voor redirecting?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Is jy seker jy wil smart Vul die databasis kolom name? Dit sal jou bestaande waardes te vervang."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Hierdie opsie outomaties genereer die databasis kolom name wat gebaseer is op die sigbare teks velde, sodat die inhoud van die databasis tabel is makliker om te lees."; +$LANG["confirm_smart_fill_display_names"] = "Is jy seker jy wil smart Vul die sigbare name? Dit sal jou bestaande waardes te vervang."; +$LANG["confirm_ungroup_option_list"] = "Is jy seker jy wil hierdie opsie lys groepering? Alle opsies sal in 'n enkele, ongegroepeerde lys gebring."; +$LANG["confirm_uninstall_module"] = "Is jy seker jy wil verwyder hierdie module? Alle Module inligting verlore sal gaan."; +$LANG["date_AM"] = "PM"; +$LANG["date_Fri"] = "Vr"; +$LANG["date_Friday"] = "Vrydag"; +$LANG["date_Mon"] = "Ma"; +$LANG["date_Monday"] = "Maandag"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Za"; +$LANG["date_Saturday"] = "Saterdag"; +$LANG["date_Sun"] = "Son"; +$LANG["date_Sunday"] = "Sondag"; +$LANG["date_Thu"] = "Do"; +$LANG["date_Thursday"] = "Donderdag"; +$LANG["date_Tue"] = "Di"; +$LANG["date_Tuesday"] = "Dinsdag"; +$LANG["date_Wed"] = "Wo"; +$LANG["date_Wednesday"] = "Woensdag"; +$LANG["date_am"] = "uur"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "Augustus"; +$LANG["date_month_December"] = "Desember"; +$LANG["date_month_February"] = "Februarie"; +$LANG["date_month_January"] = "Januarie"; +$LANG["date_month_July"] = "Julie"; +$LANG["date_month_June"] = "Junie"; +$LANG["date_month_March"] = "Maart"; +$LANG["date_month_May"] = "Mag"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Oktober"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "April"; +$LANG["date_month_short_Aug"] = "Augustus"; +$LANG["date_month_short_Dec"] = "Desember"; +$LANG["date_month_short_Feb"] = "Februarie"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Julie"; +$LANG["date_month_short_Jun"] = "Junie"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Mag"; +$LANG["date_month_short_Nov"] = "November"; +$LANG["date_month_short_Oct"] = "Oktober"; +$LANG["date_month_short_Sep"] = "September"; +$LANG["date_pm"] = "am"; +$LANG["notify_account_deleted"] = "Die gebruiker rekening is verwyder."; +$LANG["notify_account_updated"] = "Jou rekening is suksesvol opgedateer."; +$LANG["notify_add_display_values"] = "Voeg Wys Waardes"; +$LANG["notify_admin_menu_updated"] = "Die administrasie-menu has been updated."; +$LANG["notify_admin_theme_overridden"] = "Die bestuurder se tema is handmatig geneutraliseer word."; +$LANG["notify_allow_url_fopen_not_set"] = "Jammer, kan hierdie toets nie op jou webbediener uitgevoer word. Dit vereis allow_url_fopen te word tot 1 uiteengesit in u php.ini lêer. Hierdie instelling te laat PHP toegang tot lêers deur middel van 'n URL, wat nodig is om uit te voer hierdie toets. Jy kan dit toets dit handmatig deur die oplaai van 'n dossier aan die gids via FTP, dan probeer om toegang te kry dit op die URL wat u verskaf het."; +$LANG["notify_change_temp_password"] = "Jy moet net met 'n tydelike wagwoord aangemeld. Jy moet nou jou wagwoord herstel!"; +$LANG["notify_click_to_edit_new_submission"] = "Klik hier om die nuwe voorlegging te wysig."; +$LANG["notify_client_account_menus_updated"] = "Die kliënt rekening (s) is opgedateer om die {\$menu_name} spyskaart. Jy kan nou verwyder die spyskaart wat voorheen geassosieer met die rekening (s)."; +$LANG["notify_client_account_not_updated"] = "Rekening van die kliënt kan nie verander word nie."; +$LANG["notify_client_account_themes_updated"] = "Die kliënt rekening (s) is opgedateer om die {\$theme} tema. Jy kan nou die aanskakel van die tema voorheen geassosieer met die rekening (s)."; +$LANG["notify_client_account_updated"] = "Rekening van die kliënt is suksesvol opgedateer."; +$LANG["notify_client_menu_deleted"] = "Die kliënt spyskaart is verwyder."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Die spyskaart is verwyder, maar die volgende kliënte rekeninge nou nie meer 'n spyskaart! Jy moet werk die volgende rekening:"; +$LANG["notify_client_menu_updated"] = "Die kliënt-menu has been updated."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Jammer, die menu wat jy nou net probeer om te verwyder is reeds in gebruik deur die kliënte hieronder gelys. Om te verwyder die spyskaart sal jy eers moet toewys die kliënte na ander spyskaarte. Klik op die kliënt naam te wysig dat individuele rekening, of toewys alle rekeninge na 'n ander spyskaart met behulp van die dropdown hieronder."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Jammer, een van die temas wat jy nou afgeskakel is reeds gebruik word deur die volgende kliënte rekeninge. Met die oog op die aanskakel van die tema wat jy sal die eerste keer nodig om elke kliënt toewys aan 'n ander tema. Klik op die kliënt naam te wysig dat individuele rekening, of toewys alle rekeninge na 'n tema met behulp van die dropdown hieronder."; +$LANG["notify_edit_email_fields_link"] = "
    Klik hier om te spesifiseer watter vorm velde is e-pos velde, dus kan jy hulle in jou e-pos templates teiken."; +$LANG["notify_edit_field_new_field"] = "Dit is 'n nuwe veld. Jy sal moet die hoof bladsy voordat dit ten volle te kan wysig hierdie veld te werk."; +$LANG["notify_edit_option_list_after_save"] = "Jy moet 'n opsie lys kies en dan Stoor Veranderinge voordat hy in staat is om dit te wysig."; +$LANG["notify_email_field_config_deleted"] = "Die e-pos verstellings is verwyder."; +$LANG["notify_email_fields_not_updated"] = "Jammer, ons kan die e-pos velde werk nie."; +$LANG["notify_email_fields_updated"] = "Die e-velde is opgedateer."; +$LANG["notify_email_not_sent"] = "Jammer, kan nie e-pos gestuur word. Kontak asseblief die site bestuurder by die adres hieronder."; +$LANG["notify_email_not_sent_c"] = "Jammer, kon die e-pos nie gestuur word nie nie:"; +$LANG["notify_email_sent"] = "Die e-posadres (s) gestuur gewees het."; +$LANG["notify_email_template_deleted"] = "Die e-sjabloon verwyder is."; +$LANG["notify_email_template_updated"] = "Die e-sjabloon is updated."; +$LANG["notify_enabled_module_list_updated"] = "Die lys van modules aangeskakel has been updated."; +$LANG["notify_error_saving_fields"] = "Daar was 'n fout met die stoor van die velde."; +$LANG["notify_field_changes_saved"] = "Die veranderinge aan jou veld (s) is gestoor."; +$LANG["notify_field_options_smart_filled"] = "Jou veld opsies Smart gevul is."; +$LANG["notify_field_selected"] = "Die veld is gekies. Klik hier om terug te keer na die hoof gebied lys."; +$LANG["notify_field_updated"] = "Hierdie veld is opgedateer."; +$LANG["notify_file_not_uploaded"] = "Die lêer kon nie opgelaai word nie."; +$LANG["notify_file_uploaded"] = "Die lêer was suksesvol opgelaai nie."; +$LANG["notify_filters_not_updated"] = "Daar was 'n fout met die opdatering van hierdie kliënt se voorlegging van filters."; +$LANG["notify_filters_updated"] = "Die voorlegging filters is opgedateer vir hierdie kliënt."; +$LANG["notify_folder_correct_permissions"] = "Hierdie gids is die korrekte permissies."; +$LANG["notify_folder_url_match"] = "Die gids en adres verskyn om korrek ooreenstem."; +$LANG["notify_folder_url_no_access"] = "Hierdie toets kan nie uitgevoer word sedert PHP was nie in staat om toegang te verkry dat die URL in. Dit word gewoonlik veroorsaak deur die URL word met 'n wagwoord beskerm. Htaccess file."; +$LANG["notify_folder_url_no_match"] = "Hierdie gids-URL-kombinasie is nie 'n match nie."; +$LANG["notify_folder_url_unknown_error"] = "'N onbekende fout voorgekom het. Jy kan dit toets dit handmatig deur die oplaai van 'n dossier aan die gids via FTP, dan probeer om toegang te kry dit op die URL wat u verskaf het."; +$LANG["notify_form_access_type_email_info"] = "Hierdie vorm het administrateur toegang tipe, sodat daar geen kliënte het toegang tot dit en is nie gelys in die vervolg hieronder ."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Jammer, 'n vorm met die ID bestaan nie."; +$LANG["notify_form_field_not_added"] = "Die vorm veld '{\$fieldname}' kon nie bygevoeg word nie."; +$LANG["notify_form_field_options_updated"] = "Die vorm veld opsies is opgedateer."; +$LANG["notify_form_field_removed"] = "Die vorm veld was suksesvol verwyder."; +$LANG["notify_form_fields_removed"] = "Die vorm velde is suksesvol verwyder."; +$LANG["notify_form_not_updated_notify_admin"] = "Jou vorm kon nie opgedateer word nie. Please contact the site administrator om hierdie probleem te meld."; +$LANG["notify_form_settings_updated"] = "Jou vorm instellings is opgedateer."; +$LANG["notify_form_submission_updated"] = "Die vorm voorlegging has been updated."; +$LANG["notify_form_tabs_updated"] = "Die tabs is opgedateer."; +$LANG["notify_form_updated"] = "Die vorm is opgedateer."; +$LANG["notify_form_views_updated"] = "Die vorm databasis is opgedateer."; +$LANG["notify_install_invalid_db_info"] = "Jammer, kon ons nie 'n verbinding met die databasis met behulp van die inligting wat jy verskaf het. Die boodskap van die databasis teruggestuur word: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Jou vorm is geskep! Jy kan die vorm instel deur hierdie tabs."; +$LANG["notify_invalid_account_information_in_sessions"] = "Die rekening inligting gestoor in sessies is ongeldig. Teken asseblief weer hieronder."; +$LANG["notify_invalid_license_key"] = "Jammer, beteken dit nie 'n geldige lisensie sleutel te wees. Probeer betree dit weer."; +$LANG["notify_invalid_permissions"] = "Jy het nie die toestemming om hierdie bladsy toegang het nie. Jy is uitgeteken."; +$LANG["notify_invalid_search_dates"] = "Asseblief die datepicker gebruik van 'n geldige datum of datums in te voer."; +$LANG["notify_invalid_upload_folder"] = "Die oplaai gids is ongeldig of kan nie verander word."; +$LANG["notify_lang_list_updated"] = "Die beskikbare UI-taal lys has been updated."; +$LANG["notify_login_info_emailed"] = "Jou intekening inligting is per e-pos na jou toe."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oeps, is reeds van hierdie module geïnstalleer!"; +$LANG["notify_module_installed"] = "Die module is geïnstalleer. Klik hier en kies die module."; +$LANG["notify_module_list_updated"] = "Die module lys has been updated."; +$LANG["notify_module_uninstalled"] = "Die module is verwyder."; +$LANG["notify_module_updated"] = "Die {\$module} module is verander na {\$version} Kliek hier om die module te kies ."; +$LANG["notify_multi_field_selected"] = "Die veld is gekies. Klik hier te bekyk en wysig die veld opsies."; +$LANG["notify_multi_field_updated"] = "Hierdie veld is opgedateer. Jy sal in staat wees om die instel van die veld opsies nadat die oprigting van die vorm."; +$LANG["notify_multiple_fields_found"] = "Verskeie elemente is met hierdie veld naam ({\$field_name}) gevind nie). Dit kan gebeur as jou artikel bevat meer as een vorm of as jy per ongeluk met die naam van een van jou vorms dieselfde as die ander. Kies die een wat jy wil uit die onderstaande lys."; +$LANG["notify_new_default_view_created"] = "'N nuwe, Default met al jou vorm velde is geskep."; +$LANG["notify_new_submission_created"] = "Die voorlegging is geskep. Jy kan hulle verander dit hieronder."; +$LANG["notify_no_account_id_in_sessions"] = "Geen gebruiker-ID is in sessies gevind. Teken asseblief weer hieronder."; +$LANG["notify_no_api_installed"] = "Jy hoef nie die API geïnstalleer is nie"; +$LANG["notify_no_client_permissions"] = "Daar is geen verstellings beskikbaar te wysig."; +$LANG["notify_no_email_template_selected"] = "Kies asseblief die e-pos sjabloon."; +$LANG["notify_no_emails_defined"] = "Geen e-pos is vasgestel vir hierdie vorm. Om 'n nuwe een, klik op die knoppie hieronder."; +$LANG["notify_no_field_settings"] = "Hierdie veld tipe bevat nie enige ekstra instellings."; +$LANG["notify_no_fields_in_tab"] = "Hierdie blad het nog geen velde bevat nie."; +$LANG["notify_no_option_lists"] = "Daar is geen opsie lyste gedefinieer. Klik op die knoppie hieronder om 'n nuwe een te skep."; +$LANG["notify_no_test_submission"] = "Vorm Tools het nie ontvang 'n suksesvolle toets voorlegging nie."; +$LANG["notify_no_user_email_fields_configured"] = "Nota: As jy wil stuur 'n e-pos aan enige e-pos adres wat in die vorm ingesluit, moet jy eers na die instel van die vorm e-pos velde."; +$LANG["notify_no_views"] = "Jou vorm nie 'n databasis opgestel! Jy sal ten minste een View nodig het om jou vorm data te bestuur."; +$LANG["notify_no_views_assigned_to_client_form"] = "Dit blyk dat jou rekening is nie verantwoordelik is vir enige vorm Aansigte, so jy sal nie in staat wees om te sien enige data. Kontak asseblief die bestuurder vir verdere hulp."; +$LANG["notify_no_views_defined"] = "Jy het nie 'n databasis gedefinieer. Jy sal nie in staat wees om hierdie vorm se voorleggings te sien nie, tensy daar ten minste een View is geskep. Klik op die knoppie hieronder om die standaard te skep."; +$LANG["notify_option_list_deleted"] = "Die opsie lys is verwyder."; +$LANG["notify_option_list_updated"] = "Die opsie lys is opgedateer."; +$LANG["notify_public_form_omit_list_updated"] = "Die kliënt weg te laat lys vir hierdie vorm is opgedateer."; +$LANG["notify_public_view_omit_list_updated"] = "Die kliënt weg te laat lys vir hierdie vertoning is opgedateer."; +$LANG["notify_required_admin_pages"] = "Die volgende bladsye is nodig in die administrateur menu ': {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Jammer, daar was nie enige aktiwiteit vir 'n rukkie sodat ons gehad het om aan te meld jy uit. Teken asseblief weer hieronder."; +$LANG["notify_setup_options_updated"] = "Die opstel van opsies is opgedateer."; +$LANG["notify_smart_fill_field_not_found"] = "Ons was nie in staat om te vind 'n veld met hierdie naam ({\$field_name}) in die vorm (s) verskaf. Jy kan óf die hand opstel van die veld tipe hieronder, of kliek op die Slaan oor knoppie om hierdie veld wysig later weer."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Jou lêer (s) is opgelaai. Probeer Gebruik die Smart Vul knoppie om weer te probeer. As hierdie stap het misluk, sal jy nodig het om hierdie stap en die instel van jou vorm velde slaan manally later weer."; +$LANG["notify_smart_fill_submitted"] = "Die vorm ingedien is. Afhangende van die grootte van jou vorm en die nommer van die veld opsies, kan dit enige tyd neem."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Jammer, daar is een of meer van die lêers wat jy verskaf het, kan nie opgelaai word nie. Jy sal moet wees om hierdie stap en die instel van die velde in die hand oor te slaan."; +$LANG["notify_submission_and_files_deleted"] = "Die voorlegging en enige lêer (s) verband hou met dit is suksesvol verwyder."; +$LANG["notify_submission_copied"] = "Die voorlegging is gekopieer."; +$LANG["notify_submission_copied_edit"] = "Die voorlegging is gekopieer. U kan dit hieronder redigeer."; +$LANG["notify_submission_deleted"] = "Die voorlegging was suksesvol verwyder."; +$LANG["notify_submission_deleted_with_problems"] = "Die voorlegging is verwyder, maar die volgende probleme is ondervind toe probeer om te verwyder die volgende lêer (s):"; +$LANG["notify_submission_id_not_found"] = "Die voorlegging-ID is nie gevind nie."; +$LANG["notify_submission_not_updated"] = "Die voorlegging kan nie verander word nie."; +$LANG["notify_submissions_and_files_deleted"] = "Die voorleggings en enige lêer (s) met hulle verbonde is suksesvol verwyder."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} voorleggings is gekopieer."; +$LANG["notify_submissions_deleted"] = "Die voorleggings was suksesvol verwyder."; +$LANG["notify_submissions_deleted_with_problems"] = "Die voorleggings was verwyder, maar die volgende probleme is ondervind toe probeer om te verwyder die volgende lêer (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Jou toets e-pos kon nie gestuur word nie."; +$LANG["notify_theme_cache_folder_not_writable"] = "Hierdie tema's cachemap kan nie verander word. Ten einde in staat te stel hierdie tema, is die {\$folder} gids behoeftes te hê volle read-write permissions."; +$LANG["notify_theme_list_updated"] = "Die tema lys has been updated."; +$LANG["notify_themes_settings_updated"] = "Jou tema voorkeure is bygewerk."; +$LANG["notify_view_deleted"] = "Die vertoning is verwyder."; +$LANG["notify_view_group_deleted"] = "The View groep is verwyder."; +$LANG["notify_view_missing_columns"] = "Oops! Jammer, hierdie siening is nie volledig uiteengesit nie."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klik hier om te spesifiseer watter velde moet as kolomme op hierdie bladsy verskyn."; +$LANG["notify_view_updated"] = "Die vertoning is opgedateer."; +$LANG["notify_your_email_sent"] = "Jou e-posadres is suksesvol gestuur."; +$LANG["phrase_100_per_page"] = "100 per bladsy"; +$LANG["phrase_10_per_page"] = "10 per bladsy"; +$LANG["phrase_15_per_page"] = "15 per bladsy"; +$LANG["phrase_1_direct"] = "1. Direkte"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per bladsy"; +$LANG["phrase_25_per_page"] = "25 per bladsy"; +$LANG["phrase_2_code"] = "2. Kode"; +$LANG["phrase_2_columns"] = "2 kolomme"; +$LANG["phrase_2chars"] = "2 karakters"; +$LANG["phrase_3_columns"] = "3 kolomme"; +$LANG["phrase_4_columns"] = "4 kolomme"; +$LANG["phrase_50_per_page"] = "50 per bladsy"; +$LANG["phrase_accepting_submissions"] = "(aanvaarding van voorleggings)"; +$LANG["phrase_access_admin_account_c"] = "Jy kan toegang tot jou rekening administrasie hier:"; +$LANG["phrase_access_type"] = "Toegang Tipe"; +$LANG["phrase_account_info"] = "Account Info"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Action Nooi"; +$LANG["phrase_add_client"] = "Voeg Kliënt"; +$LANG["phrase_add_client_menu"] = "Voeg Kliënt Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Voeg verstekstelling »"; +$LANG["phrase_add_field"] = "Voeg Veld"; +$LANG["phrase_add_fields"] = "Voeg Velden"; +$LANG["phrase_add_fields_rightarrow"] = "Voeg veld (s) »"; +$LANG["phrase_add_form"] = "Voeg Vorm"; +$LANG["phrase_add_form_external"] = "Voeg Form - Eksterne"; +$LANG["phrase_add_form_internal"] = "Voeg Form - interne"; +$LANG["phrase_add_new_group_rightarrow"] = "Voeg Nuwe Groep »"; +$LANG["phrase_add_num_rows"] = "Voeg {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Voeg Row »"; +$LANG["phrase_add_submission_button"] = "Voeg Voorlegging Button"; +$LANG["phrase_add_view_rightarrow"] = "Voeg View »"; +$LANG["phrase_adding_multi_page_form"] = "Toevoeging van 'n multi-bladsy vorm met die API"; +$LANG["phrase_adding_single_page_form"] = "Toevoeging van 'n enkel-bladsy vorm met die API"; +$LANG["phrase_admin_menu"] = "Administrateur Menu"; +$LANG["phrase_admin_only"] = "Administrateur Slegs"; +$LANG["phrase_admin_panel"] = "Admin paneel"; +$LANG["phrase_administrator_theme"] = "Administrateur Tema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Gevorderde instellings »"; +$LANG["phrase_all_X_results_selected"] = "Alle {\$numresults} Resultate geselekteerde"; +$LANG["phrase_all_clients"] = "Alle kliënte"; +$LANG["phrase_all_clients_except_c"] = "Alle kliënte, behalwe:"; +$LANG["phrase_all_clients_have_access"] = "(alle kliënte het toegang)"; +$LANG["phrase_all_fields"] = "Alle velde"; +$LANG["phrase_all_fields_displayed"] = "Alle velde word vertoon"; +$LANG["phrase_all_statuses"] = "Alle status"; +$LANG["phrase_all_submissions"] = "Alle voorleggings"; +$LANG["phrase_allow_fields_edited"] = "Toelaat velde te verwerk word"; +$LANG["phrase_alphanumeric"] = "Alfa Nommer (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Weergawe"; +$LANG["phrase_apply_timezone_offset"] = "Dien Tydsone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Toewys alle gelys kliënt rekeninge te {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Toewys alle gelys kliënt rekeninge te {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Aan die einde"; +$LANG["phrase_at_start"] = "Aan begin"; +$LANG["phrase_author_link"] = "Skrywer Link"; +$LANG["phrase_auto_disable_account"] = "Auto-afskakel rekening na # misluk aanlogpogingen"; +$LANG["phrase_auto_size"] = "Auto-grootte"; +$LANG["phrase_available_clients"] = "Beskikbaar Kliënte"; +$LANG["phrase_available_fields"] = "Beskikbare velde"; +$LANG["phrase_available_option_lists"] = "Beskikbare opsie lyste"; +$LANG["phrase_available_swatches"] = "Beskikbaar staaltjes"; +$LANG["phrase_available_swatches_c"] = "Beskikbaar staaltjes:"; +$LANG["phrase_available_tabs"] = "Beskikbare tabbladen"; +$LANG["phrase_available_views"] = "Beskikbaar Views"; +$LANG["phrase_awaiting_form_submission"] = "Wag op vorm indien."; +$LANG["phrase_back_to_field_list"] = "«Terug na die veld lys"; +$LANG["phrase_back_to_search_results"] = "Terug na resultate"; +$LANG["phrase_base_view_on"] = "Base View op ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Change Login Information"; +$LANG["phrase_characters_limit_p"] = "karakters beperk."; +$LANG["phrase_check_db_settings_try_again"] = "Gaan asseblief u databasis instellings en klik op die knoppie voort weer."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Check URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Duidelik Hide Lys"; +$LANG["phrase_client_account_settings"] = "Kliënt Account Settings"; +$LANG["phrase_client_field"] = "Kliënt Veld"; +$LANG["phrase_client_map_filters"] = "Kliënt Kaart Filters »"; +$LANG["phrase_client_may_edit"] = "Kliënt mag wysig"; +$LANG["phrase_client_menu"] = "Kliënt Menu"; +$LANG["phrase_clients_can_access_form"] = "Kliënte wat nie toegang tot die vorm"; +$LANG["phrase_clients_can_access_view"] = "Kliënte wat nie toegang tot die skerm"; +$LANG["phrase_clients_cannot_access_form"] = "Kliënte wat nie toegang tot die vorm"; +$LANG["phrase_clients_cannot_access_view"] = "Kliënte wat nie toegang tot die skerm nie"; +$LANG["phrase_clients_may_edit"] = "Kliënte kan wysig"; +$LANG["phrase_code_c"] = "Fout Kode:"; +$LANG["phrase_code_markup_field"] = "Kode / Markup Veld"; +$LANG["phrase_code_markup_type"] = "Kode / Markup Soort"; +$LANG["phrase_codes_c"] = "Fout Codes:"; +$LANG["phrase_column_width"] = "Kolomwydte"; +$LANG["phrase_company_name"] = "Company Name"; +$LANG["phrase_configure_form_email_fields"] = "Configure Form E-pos Velden"; +$LANG["phrase_confirm_folder_url_match"] = "Bevestig Leer-adres Wedstryd"; +$LANG["phrase_connect_rows"] = "Connect rye"; +$LANG["phrase_copy_email_settings_from"] = "Afskrif E-pos Stellings Van ..."; +$LANG["phrase_copy_settings_from"] = "Afskrif Stellings Van ..."; +$LANG["phrase_core_fields"] = "Kern van Velden"; +$LANG["phrase_core_version"] = "Core Weergawe"; +$LANG["phrase_create_account"] = "Skep Rekening"; +$LANG["phrase_create_admin_account"] = "Skep Bestuurder Account"; +$LANG["phrase_create_config_file"] = "Skep Config Lêer"; +$LANG["phrase_create_database_tables"] = "Skep Databasis Tabelle"; +$LANG["phrase_create_default_view"] = "Skep Default"; +$LANG["phrase_create_file"] = "Skep Lêer"; +$LANG["phrase_create_group"] = "Skep Groep"; +$LANG["phrase_create_new_email"] = "Nuwe E-posadres"; +$LANG["phrase_create_new_menu"] = "Nuwe Menu"; +$LANG["phrase_create_new_option_list"] = "Skep nuwe opsie Lys"; +$LANG["phrase_create_new_option_list_group"] = "Skep 'n nuwe opsie lys groep"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Skep nuwe opsie Lys »"; +$LANG["phrase_create_new_view"] = "Nuwe View"; +$LANG["phrase_create_new_view_group"] = "Skep Nuwe View Groep"; +$LANG["phrase_custom_display_format"] = "Custom Beeldformaat"; +$LANG["phrase_custom_recipient"] = "Custom Recipient"; +$LANG["phrase_custom_url"] = "Persoonlike URL"; +$LANG["phrase_dark_blue"] = "Donkerblou"; +$LANG["phrase_data_type"] = "'Data Type"; +$LANG["phrase_database_hostname"] = "Databasis host naam"; +$LANG["phrase_database_name"] = "Databasis naam"; +$LANG["phrase_database_password"] = "Databasis wagwoord"; +$LANG["phrase_database_settings"] = "Databasis Stellings"; +$LANG["phrase_database_setup"] = "Databasis Opstel"; +$LANG["phrase_database_table_prefix"] = "Databasis tabel voorvoegsel"; +$LANG["phrase_database_username"] = "Databasis gebruikersnaam"; +$LANG["phrase_date_format"] = "Datum Formaat"; +$LANG["phrase_db_column"] = "DB Kolom"; +$LANG["phrase_db_setup_page_4"] = "4. Databasis Opstel"; +$LANG["phrase_default_client_account_theme"] = "Standaard Kliënt Account Tema"; +$LANG["phrase_default_date_field_search_value"] = "Standaard datum veld soektog waarde"; +$LANG["phrase_default_language"] = "Standaard Taal"; +$LANG["phrase_default_menu"] = "Standaard Menu"; +$LANG["phrase_default_sessions_timeout"] = "Standaard sessies Time-out"; +$LANG["phrase_default_sort_order"] = "Standaard sorteervolgorde"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Standaard waarde"; +$LANG["phrase_default_values"] = "Standaard waardes"; +$LANG["phrase_default_values_new_submissions"] = "Standaard waardes vir Nuwe voorleggings"; +$LANG["phrase_delete_field"] = "Verwyder Veld"; +$LANG["phrase_delete_form"] = "Verwyder Vorm"; +$LANG["phrase_delete_row"] = "Verwyder ry"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Verwyder is gekoppel lêers by die verwydering van indiening"; +$LANG["phrase_delete_view"] = "Verwyder View"; +$LANG["phrase_disconnect_rows"] = "Ontkoppel rye"; +$LANG["phrase_display_email"] = "Display E-pos"; +$LANG["phrase_display_name"] = "Display Naam"; +$LANG["phrase_display_text"] = "Display teks"; +$LANG["phrase_display_value"] = "Display Waarde"; +$LANG["phrase_edit_admin_menu"] = "Wysig Admin Menu"; +$LANG["phrase_edit_client"] = "Wysig Kliënt"; +$LANG["phrase_edit_client_menu"] = "Wysig Kliënt Menu"; +$LANG["phrase_edit_email_template"] = "E-pos wysig Sjabloon"; +$LANG["phrase_edit_field"] = "Wysig Veld"; +$LANG["phrase_edit_field_c"] = "Eingabefeld:"; +$LANG["phrase_edit_form"] = "Wysig Vorm"; +$LANG["phrase_edit_form_access_type_b"] = "[Wysig vorm om toegang tipe]"; +$LANG["phrase_edit_option_list"] = "Opsie lys wysig"; +$LANG["phrase_edit_submission"] = "Wysig Voorlegging"; +$LANG["phrase_edit_submission_label"] = "Voorlegging Label wysig"; +$LANG["phrase_edit_view"] = "Wysig View"; +$LANG["phrase_email_format"] = "E-pos Grootte"; +$LANG["phrase_email_settings"] = "E-pos Stellings"; +$LANG["phrase_email_template"] = "E-pos sjabloon"; +$LANG["phrase_email_template_name"] = "E-pos sjabloon naam"; +$LANG["phrase_error_learn_more"] = "Vir meer inligting oor hierdie fout."; +$LANG["phrase_error_text_intro"] = "Gaan asseblief die volgende fout (s) en weer stuur:"; +$LANG["phrase_errors_learn_more"] = "Klik op die fout codes om meer te leer."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Eksterne Werk Vorm"; +$LANG["phrase_external_form_info"] = "Eksterne Form Info"; +$LANG["phrase_external_your_own_form"] = "Eksterne (jou eie)"; +$LANG["phrase_field_comments"] = "Veld Comments"; +$LANG["phrase_field_label"] = "Veld Etiket"; +$LANG["phrase_field_options"] = "Veld Opsies"; +$LANG["phrase_field_size"] = "Veld Grootte"; +$LANG["phrase_field_skipped"] = "Veld oorgeslaan"; +$LANG["phrase_field_specific_settings"] = "Veld-spesifieke instellings"; +$LANG["phrase_field_type"] = "Veld Tipe"; +$LANG["phrase_field_type_no_validation"] = "Daar is geen validatie reëls wat beskikbaar is vir hierdie tipe veld."; +$LANG["phrase_field_types"] = "Veld tipes"; +$LANG["phrase_field_value"] = "Veld Waarde"; +$LANG["phrase_field_values_to_display_values"] = "Veld Waardes »Vertoon Waardes"; +$LANG["phrase_final_touches_page_6"] = "6. Afwerking Touches"; +$LANG["phrase_finalize_form"] = "Te voltooi Vorm"; +$LANG["phrase_first_name"] = "Voornaam"; +$LANG["phrase_footer_text"] = "Footer teks"; +$LANG["phrase_for_any_form_submission"] = "Vir enige vorm voorlegging"; +$LANG["phrase_for_view_submissions"] = "Slegs voorleggings wat pas in die volgende Kyk na (s)"; +$LANG["phrase_forgot_password"] = "Wagwoord vergeet?"; +$LANG["phrase_form_already_selected"] = "Vorm reeds gekies"; +$LANG["phrase_form_email_field_b_c"] = "[Vorm e-pos veld]:"; +$LANG["phrase_form_email_field_configuration"] = "E-pos vorm van velde Konfigurasie"; +$LANG["phrase_form_email_fields"] = "Vorm E-pos Gebiede"; +$LANG["phrase_form_field"] = "Vorm van velde"; +$LANG["phrase_form_field_contents"] = "Vorm veld Inhoud"; +$LANG["phrase_form_field_name"] = "Vorm 'Field Name"; +$LANG["phrase_form_field_placeholders"] = "Vorm veld plekhouers"; +$LANG["phrase_form_fields"] = "Velden"; +$LANG["phrase_form_info"] = "Vorm Inligting"; +$LANG["phrase_form_info_2"] = "2. Vorm Inligting"; +$LANG["phrase_form_list"] = "Vorm Lys"; +$LANG["phrase_form_name"] = "Vorm Naam"; +$LANG["phrase_form_page"] = "Vorm Page"; +$LANG["phrase_form_placeholders"] = "Vorm indikators"; +$LANG["phrase_form_submission"] = "Vorm Voorlegging"; +$LANG["phrase_form_submissions"] = "Vorm Voorleggings"; +$LANG["phrase_form_type"] = "Vorm Tipe"; +$LANG["phrase_form_url"] = "Vorm URL"; +$LANG["phrase_form_urls"] = "Vorm URL's"; +$LANG["phrase_forms_assigned_to_any_account"] = "Vorms wat aan enige rekening"; +$LANG["phrase_forms_page_default_message"] = "Vorms bladsy standaard boodskap"; +$LANG["phrase_ft_installation"] = "Vorm Tools Installasie Script"; +$LANG["phrase_full_width"] = "Volle wydte"; +$LANG["phrase_getting_started"] = "Aan die begin"; +$LANG["phrase_global_placeholders"] = "Global indikators"; +$LANG["phrase_group_name"] = "Groep Naam"; +$LANG["phrase_group_options_q"] = "Groep opsies?"; +$LANG["phrase_group_rows"] = "Groep rye"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Merk Kleur"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Sjabloon"; +$LANG["phrase_images_media"] = "Beelde / media"; +$LANG["phrase_import_option_list_rightarrow"] = "Opsie lys invoer »"; +$LANG["phrase_input_length"] = "Input Lengte"; +$LANG["phrase_installation_help"] = "Installasie Hulp"; +$LANG["phrase_internal_form"] = "Intern"; +$LANG["phrase_ip_address"] = "IP-Adres"; +$LANG["phrase_is_multi_page_form_q"] = "Is dit 'n multi-bladsy vorm?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response plekhouers"; +$LANG["phrase_large_300px"] = "Groot (300px)"; +$LANG["phrase_large_400px"] = "Groot (400 pixels)"; +$LANG["phrase_last_7_days"] = "Laaste 7 dae"; +$LANG["phrase_last_logged_in"] = "Last Logged In"; +$LANG["phrase_last_modified"] = "Laaste wysiging"; +$LANG["phrase_last_modified_date"] = "Laaste wysiging op datum"; +$LANG["phrase_last_name"] = "Van"; +$LANG["phrase_letters_only"] = "Briewe Slegs"; +$LANG["phrase_light_brown"] = "Ligtebruin"; +$LANG["phrase_limit_email_content"] = "Limiet e-pos inhoud te velde in View"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Teken In"; +$LANG["phrase_login_as_user"] = "Teken in hierdie gebruiker"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Paneel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Aanmelding Paneel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Gebruikersnaam"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Hoof Stellings"; +$LANG["phrase_manage_client"] = "Bestuur van Kliënt"; +$LANG["phrase_manage_client_omit_list"] = "Bestuur Client Laat Lys"; +$LANG["phrase_max_file_size"] = "Max Lêergrootte"; +$LANG["phrase_max_length"] = "Max Lengte"; +$LANG["phrase_max_length_words_chars"] = "- Max lengte (woorde / chars)"; +$LANG["phrase_may_add_submissions"] = "Kan voeg Voorleggings"; +$LANG["phrase_may_copy_submissions"] = "Kan voorleggings kopieer"; +$LANG["phrase_may_delete_submissions"] = "Mag verwyder Voorleggings"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menu Naam"; +$LANG["phrase_menu_type"] = "Menu Tipe"; +$LANG["phrase_min_password_length"] = "Minimum wagwoordlengte"; +$LANG["phrase_module_description"] = "Module Beskrywing"; +$LANG["phrase_module_info"] = "Module-inligting"; +$LANG["phrase_module_nav"] = "Module Nav"; +$LANG["phrase_month_to_date"] = "Maand tot op datum"; +$LANG["phrase_multi_select"] = "Multi-kies"; +$LANG["phrase_multi_select_dropdown"] = "Multi-kies uitvou"; +$LANG["phrase_multiple_fields_found"] = "Verskeie velde gevind!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Naam / Laaste Naam"; +$LANG["phrase_new_blank_email"] = "Nuwe Leë E-pos"; +$LANG["phrase_new_blank_option_list"] = "Nuwe Blank opsie lys"; +$LANG["phrase_new_blank_view"] = "Nuwe Leë View"; +$LANG["phrase_new_ft_installation"] = "Nuwe vorm Tools Installasie"; +$LANG["phrase_new_option_list"] = "Nuwe opsie lys"; +$LANG["phrase_new_password"] = "Nuwe wagwoord"; +$LANG["phrase_new_password_reenter"] = "Nuwe wagwoord (kyk weer in te voer)"; +$LANG["phrase_new_view"] = "Nuwe View"; +$LANG["phrase_new_view_all_fields"] = "Nuwe View - Alle velde"; +$LANG["phrase_next_client"] = "volgende kliënt »"; +$LANG["phrase_next_field"] = "volgende veld »"; +$LANG["phrase_next_form"] = "volgende vorm »"; +$LANG["phrase_next_view"] = "volgende View »"; +$LANG["phrase_no_clients"] = "Geen kliënte"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Geen offset"; +$LANG["phrase_no_option_lists_available"] = "Geen opsies lyste beskikbaar."; +$LANG["phrase_no_views"] = "Geen Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Geen databasis met filters gedefinieer)"; +$LANG["phrase_none_not_recommended"] = "Geen (nie aanbeveel nie)"; +$LANG["phrase_not_assigned_to_option_list"] = "Hierdie veld is nie toegeskryf aan 'n opsie lys."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "NIE Gelyke"; +$LANG["phrase_not_found"] = "Nie gevind!"; +$LANG["phrase_not_like"] = "NIE Soos"; +$LANG["phrase_not_visible_to_client"] = "(nie sigbaar vir die kliënt)"; +$LANG["phrase_num_clients_per_page"] = "Num Kliënte Per Page"; +$LANG["phrase_num_emails_per_page"] = "Num E-pos Per Page"; +$LANG["phrase_num_fields"] = "Aantal velde"; +$LANG["phrase_num_forms_per_page"] = "Num Vorms Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Menus Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Modules Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Num Opsie Lyste per bladsy"; +$LANG["phrase_num_options"] = "Num Opsies"; +$LANG["phrase_num_rows"] = "Num Rye"; +$LANG["phrase_numbers_only"] = "Getalle, maar"; +$LANG["phrase_often_localhost"] = "(dikwels "localhost")"; +$LANG["phrase_on_form_submission"] = "Op die vorm indien"; +$LANG["phrase_one_char_number"] = "Ten minste een karakter is 'n aantal (0-9)"; +$LANG["phrase_one_char_upper"] = "Ten minste een karakter is hoofletters"; +$LANG["phrase_one_special_char"] = "Ten minste een van {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(slegs spesifieke kliënte het toegang)"; +$LANG["phrase_open_form_in_dialog"] = "Oop vorm in dialoog venster"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Open hierdie vorm in 'n nuwe blad / venster"; +$LANG["phrase_option_list"] = "Opsie lys"; +$LANG["phrase_option_list_name"] = "Opsie lys Naam"; +$LANG["phrase_option_list_or_contents"] = "Opsie lys /-inhoud"; +$LANG["phrase_option_lists"] = "Opsie Lyste"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Page Titles"; +$LANG["phrase_pass_on"] = "Slaag op"; +$LANG["phrase_password_min"] = "Dit moet ten minste {\$length} karakters word nie."; +$LANG["phrase_password_one_number"] = "Dit moet ten minste 'n aantal (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Dit moet ten minste 'n hoofletter."; +$LANG["phrase_password_requirements_c"] = "Wagwoord vereistes voldoen:"; +$LANG["phrase_password_reset"] = "Wagwoord Herstel"; +$LANG["phrase_password_special_char"] = "Dit moet ten minste een van die volgende karakters: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissions / ander instellings"; +$LANG["phrase_permitted_file_types"] = "Toegelaat File"; +$LANG["phrase_phone_number"] = "Telefoonnommer"; +$LANG["phrase_phone_number_format"] = "Telefoonnommer formaat"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini maksimum toegelaat nie lêer oplaai grootte:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Bevestig asseblief"; +$LANG["phrase_please_enter_license_key"] = "Gee jou lisensie sleutel"; +$LANG["phrase_please_select"] = "Kies"; +$LANG["phrase_please_select_form"] = "Kies asseblief 'n vorm"; +$LANG["phrase_prev_client"] = "«Vorige kliënt"; +$LANG["phrase_prev_form"] = "«Vorige vorm"; +$LANG["phrase_prevent_password_reuse"] = "Voorkom die gebruik van re-wagwoorde # laaste"; +$LANG["phrase_previous_field"] = "«vorige veld"; +$LANG["phrase_previous_page"] = "Vorige Bladsy"; +$LANG["phrase_previous_view"] = "«Vorige View"; +$LANG["phrase_program_name"] = "Program Naam"; +$LANG["phrase_public_form_omit_list"] = "Openbare Vorm Hide Lys"; +$LANG["phrase_public_view_omit_list"] = "Openbare View Hide Lys"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Daar was 'n probleem met die volgende navraag:"; +$LANG["phrase_radio_buttons"] = "Radio-knoppies"; +$LANG["phrase_random_form_submission"] = "Random vorm voorlegging"; +$LANG["phrase_re_enter_password"] = "Re-enter Wagwoord"; +$LANG["phrase_recipient_type"] = "Ontvanger tipe"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Refresh List"; +$LANG["phrase_refresh_module_list"] = "Module-refresh Lys"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Refresh Tema Lys"; +$LANG["phrase_register_new_email"] = "Registreer Nuwe E-posadres"; +$LANG["phrase_remaining_characters"] = "ander karakters"; +$LANG["phrase_remaining_words"] = "oorblywende woorde"; +$LANG["phrase_remove_tabs"] = "Verwyder Tabs"; +$LANG["phrase_required_password_chars"] = "Karakters vereis wagwoord"; +$LANG["phrase_resend_test_submission"] = "Resend Toets Voorlegging"; +$LANG["phrase_return_form_list"] = "Keer terug na Vorm Lys"; +$LANG["phrase_row_selected"] = "{\$num_rows} geselekteerde ry"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rye gekies"; +$LANG["phrase_sample_data"] = "Sample data"; +$LANG["phrase_save_changes"] = "Stoor Veranderinge"; +$LANG["phrase_search_keyword"] = "Soek Sleutelwoord"; +$LANG["phrase_security_settings"] = "Beveiligingsinstellingen"; +$LANG["phrase_select_all"] = "Kies Almal"; +$LANG["phrase_select_all_X_results"] = "Kies Alle {\$numresults} Resultate"; +$LANG["phrase_select_all_on_page"] = "Kies All Op Bladsy"; +$LANG["phrase_select_date"] = "Kies datum"; +$LANG["phrase_select_field"] = "Kies Veld"; +$LANG["phrase_select_swatch"] = "Kies Swatch"; +$LANG["phrase_selected_clients"] = "Geselekteerde Kliënte"; +$LANG["phrase_selected_views"] = "Geselekteerde Views"; +$LANG["phrase_send_email"] = "Stuur E-pos"; +$LANG["phrase_send_test_email"] = "Stuur Toets E-pos"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessies Time-out"; +$LANG["phrase_setting_value"] = "Kader Waarde"; +$LANG["phrase_setup_options"] = "Opstel Opsies"; +$LANG["phrase_show_all"] = "Wys alles"; +$LANG["phrase_show_form"] = "Wys Vorm"; +$LANG["phrase_size_large"] = "Groot (TEKS)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 chars)"; +$LANG["phrase_size_small"] = "Klein (<= 20 chars)"; +$LANG["phrase_size_tiny"] = "Klein (<= 5 chars)"; +$LANG["phrase_size_very_large"] = "Baie groot (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Slaan oor Veld"; +$LANG["phrase_skip_step"] = "Slaan oor Stap"; +$LANG["phrase_small_100px"] = "Klein (100px)"; +$LANG["phrase_small_80px"] = "Klein (80px)"; +$LANG["phrase_smart_fill"] = "Smart Vul"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Vul die velde van:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Vul gebruikers dokumentasie »"; +$LANG["phrase_sort_as"] = "Sorteer As"; +$LANG["phrase_special_fields"] = "Spesiale Gebiede"; +$LANG["phrase_standard_fields"] = "Standaard velde"; +$LANG["phrase_standard_filters"] = "Standaard filters »"; +$LANG["phrase_step_1"] = "Stap 1"; +$LANG["phrase_step_2"] = "Stap 2"; +$LANG["phrase_step_3"] = "Stap 3"; +$LANG["phrase_step_4"] = "Stap 4"; +$LANG["phrase_step_5"] = "Stap 5"; +$LANG["phrase_step_6"] = "Stap 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip etikette in die vorm voorleggings"; +$LANG["phrase_subject_line"] = "Subject line"; +$LANG["phrase_submission_date"] = "Inleweringsdatum"; +$LANG["phrase_submission_id"] = "Voorlegging ID"; +$LANG["phrase_submission_made"] = "Voorlegging gemaak: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Voorlegging Tipe"; +$LANG["phrase_submissions_per_page"] = "Voorleggings per bladsy"; +$LANG["phrase_system_check"] = "Stelsel Gaan"; +$LANG["phrase_system_fields_no_validation"] = "Jy mag nie validering te stelsel velde."; +$LANG["phrase_system_time_offset"] = "Stelsel Tyd Oorstelling"; +$LANG["phrase_tab_label"] = "Tab label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test gids Permissions"; +$LANG["phrase_test_submission"] = "Test Voorlegging"; +$LANG["phrase_test_submission_3"] = "3. Test Voorlegging"; +$LANG["phrase_test_submission_received"] = "Test Voorlegging Ontvang"; +$LANG["phrase_text_and_html"] = "Teks HTML-&"; +$LANG["phrase_text_email"] = "Text E-pos"; +$LANG["phrase_text_template"] = "Text Sjabloon"; +$LANG["phrase_the_previous_month"] = "Die vorige maand"; +$LANG["phrase_theme_description"] = "Tema Beskrywing"; +$LANG["phrase_theme_info"] = "Tema Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Fout Soort:"; +$LANG["phrase_unselect_all"] = "Deselecteren Alle"; +$LANG["phrase_update_accounts"] = "Update Rekeninge"; +$LANG["phrase_update_email_template"] = "Update E-pos sjabloon"; +$LANG["phrase_update_field"] = "Update Veld"; +$LANG["phrase_update_order"] = "Update Order"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Laai lêer"; +$LANG["phrase_upload_files"] = "Skenkings"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Oplaai gids pad"; +$LANG["phrase_upload_folder_url"] = "Oplaai gids URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Gebruik Standaard Waarde?"; +$LANG["phrase_used_by_num_form_fields"] = "Gebruik word deur # Form Velden"; +$LANG["phrase_uses_swatches"] = "Gebruik staaltjes"; +$LANG["phrase_valid_email"] = "Geldige e-pos"; +$LANG["phrase_validation_error"] = "Fout valid"; +$LANG["phrase_validation_rule"] = "Valideringsreël"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "View Group"; +$LANG["phrase_view_id"] = "View ID"; +$LANG["phrase_view_name"] = "View Naam"; +$LANG["phrase_view_placeholders"] = "View plekhouers"; +$LANG["phrase_view_submissions"] = "View Voorleggings"; +$LANG["phrase_view_uploaded_files"] = "besigtig opgelaai lêers"; +$LANG["phrase_viewing_range"] = "[besigtinging {\$startnum} tot {\$endnum}]"; +$LANG["phrase_when_sent"] = "Toe gestuur"; +$LANG["phrase_when_submission_is_deleted"] = "Wanneer voorlegging weggelaat"; +$LANG["phrase_when_submission_is_edited"] = "By die indiening edited word"; +$LANG["phrase_who_can_access"] = "Wie kan die toegang?"; +$LANG["phrase_word_limit_p"] = "Word beperk."; +$LANG["phrase_year_to_date"] = "Jaar tot op datum"; +$LANG["phrase_yes_for_all_views"] = "Ja, vir alle Views"; +$LANG["phrase_yes_for_specific_views"] = "Ja, vir 'n spesifieke Views"; +$LANG["phrase_your_account"] = "Jou rekening"; +$LANG["phrase_your_email"] = "Jou e-pos"; +$LANG["phrase_your_email_address"] = "Jou e-pos adres"; +$LANG["processing_form_disabled"] = "Jammer, het hierdie vorm afgeskakel."; +$LANG["processing_form_incomplete"] = "Jammer, nie hierdie vorm nie blyk te wees ten volle ingestel van binne Vorm Tools. Die mees waarskynlike oorsaak van die probleem is dat jy die "form_tools_initialize_form" verborge vorm veld te verwyder, maar het al die stappe van die "Voeg Vorm" proses te voltooi nie.

    Log in en oorsig van die vorm opset."; +$LANG["processing_init_complete"] = "Dankie! Jou toets voorlegging saamgestel is deur sukses. Gaan terug na die vorm Tools Administrasie paneel en klik op die "Refresh" knoppie aan die onderkant van die Voeg Vorm Stap 3 bladsy te voltooi jou vorm in te stel."; +$LANG["processing_invalid_form_id"] = "Jammer, beteken dit nie van 'n geldige vorm ID."; +$LANG["processing_no_form_id"] = "process.php vereis 'n vorm ID vir verwerking. Maak seker dat jou vorm bevat 'n verborge veld met die naam "form_tools_form_id" wat verby is langs die vorm ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Vorm gereedskap is nie in staat om te bepaal waar om te lei wanneer hulle versuim om binne die CAPTCHA behoorlik. Please slaag in 'n verborge veld met die naam form_tools_form_url met die URL van die vorm."; +$LANG["processing_no_post_vars"] = "process.php is nie ontvang van enige inligting. Nota: Hierdie script kan nie direk gelaai word in jou browser.
    Maak seker dat jou vorm is die stuur via die POS."; +$LANG["processing_no_redirect_url"] = "Die voorlegging is korrek verwerk, maar jy het nie gespesifiseer nie 'n deurwysing URL vir hierdie vorm! Verander jou vorm in die vorm Tools UI en voeg die redirect URL in."; +$LANG["special_language"] = "Afrikaans"; +$LANG["special_language_locale"] = "Afrikaans"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Alle nuwe kliënte rekeninge sal saam met die verstellings en die regte hieronder gedefinieer geskep word. To override 'n instelling vir' n spesifieke kliënt, te wysig rekening van die kliënt en besoek hulle Stellings blad."; +$LANG["text_add_form_choose_integration_method"] = "Kies watter metode jy wil gebruik om jou vorm te integreer met Vorm Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Hierdie metode maak van die Vorm Tools API , ingesluit in die belangrikste vorm Tools script. Die API bied 'n aantal nuttige funksies om die werk van die integrasie van jou vorm Vorm Tools so eenvoudig as moontlik te maak. Daar is geen beperkings op hoe jou vorm ingedien word wanneer jy gebruik maak van die API. Jy kan die inhoud dien in een gaan, of bladsy per bladsy, jy kan jou eie persoonlike bediener-kant validering, captcha beelde te voeg, kan jy kies om die inligting te stuur, maar sê dit net om die voorlegging te vertoon in die vorm Tools UI op 'n later datum (sien die artikel gefinaliseer Voorleggings in die API hulp dokumentasie)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Ten einde jou vorm data via PHP te dien, moet jou vorm geleë op dieselfde webwerf as hierdie vorm Tools installasie. Tweedens, vir die nie-tegniese en begin vorm Tools gebruikers, kan hierdie metode word 'n bietjie intimiderend op die eerste. Maar daar is baie van dokumentasie om jou te help, waaronder twee eenvoudige tutoriale vir die integrasie van jou enkel-en multi-bladsy vorms (hierdie is gekoppel aan op 'n later stap)."; +$LANG["text_add_form_direct_submission_benefits"] = "Dit is die eenvoudigste manier om jou te vorm Vorm Tools. Dit vereis geen kennis van PHP nie en vereis slegs 'n baie klein verandering aan jou vorm. Dit is ideaal vir kleiner vorme waar jy net wil stuur die inligting aan die databasis is dan die gebruiker te lei na 'n "thankyou" bladsy."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Hierdie voorlegging metode is baie maklik om te gebruik nie, maar verskaf nie veel beheer nie vir meer ingewikkelde vorms. Multi-bladsy vorm, of vorme wat bediener-kant validering nodig is beter geskik vir die tweede metode: stuur via die vorm Tools API te gebruik."; +$LANG["text_add_form_field_types1"] = "Amper klaar! Hierdie bladsy poog om al jou vorm velde te vind en hul veldtipes bepaal. Klik op die Smart Vul knoppie op die reg om te begin. Jy sal slegs toegelaat word om voort te gaan wanneer al die aksies is opgelos - kwessies wat jou aandag nodig het in die "aksie vereis "-kolom verskyn."; +$LANG["text_add_form_field_types2"] = "As jou vorm is nie in HTML, kliek op die Slaan Stap knoppie om voort te gaan. Dit kan almal later ingestel."; +$LANG["text_add_form_field_types3"] = "Dit herlaadt die inhoud van jou vorm (s). Let wel: Dit sal vervang enige veranderinge wat jy gemaak het op hierdie bladsy."; +$LANG["text_add_form_field_types4"] = "In die geval dat jy probleme het, klik hier om hierdie stap oor te slaan. Alle onopgeloste velde is die standaard waardes te gebruik. Jy kan hierdie velde later."; +$LANG["text_add_form_field_types_manual_upload"] = "As jy nie in staat om te Smart Vul jou veld is, kan jy wil 'n alternatiewe oplossing te probeer: foto afskrifte van jou vorms in die velde hieronder."; +$LANG["text_add_form_field_types_manual_upload2"] = "Let wel: oplaai nie rou PHP bladsye (of ander kode van bediener-kant) - net die HTML weergawes oplaai . Te kry, lees en stoor die bladsy van jou webblaaier."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Daar is verskeie velde wat in die vorm gespesifiseerde bladsy te kon nie gevind word nie nie. Dit is waarskynlik meestal veroorsaak deur een van die volgende:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Jy een of meer van die URL's van jou multi-bladsy vorm verkeerd geloop."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Een of meer bladsye van jou vorm wagwoord beskerm word en die script kan nie toegang tot die bladsy."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Jy het verkeerd geloop URL van jou vorm."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klik hier om terug te keer na die bladsy vorm inligting om jou stellings te keur."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Jy het jou vorm (s) verander na die maak van die toets voorlegging"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klik hier om te sit deur middel van 'n ander toets voorlegging ."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Jou vorm is 'n wagwoord beskerm en die script kan nie toegang tot die bladsy."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "In 'n ander blad / venster van die leser, teken in jou vorm en kliek dan op die Refresh Page knoppie hieronder om te probeer om weer die velde."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Indien geen van die bostaande oplossings werk, kan jy ook wil om te probeer om handmatig jou vorms te laai vir die verwerking van nie."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Daar is verskeie velde wat in die vorm bladsye wat u verskaf het kon nie gevind word nie nie. Dit is meestal waarskynlik veroorsaak deur een van hierdie:"; +$LANG["text_add_form_help_link"] = "Indien daar enige probleme tydens hierdie stappe, probeer lees gebruikers dokumentasie ."; +$LANG["text_add_form_step_1_text_1"] = "Die volgende bladsye lei jou deur die proses vir die instel Vorm Bykomstighede vir die stoor van jou vorm voorleggings. Voordat jy verder gaan, maak seker dat:"; +$LANG["text_add_form_step_1_text_2"] = "jou vorm is al gemaak en is bereikbaar via 'n URL (localhost is prima)"; +$LANG["text_add_form_step_1_text_3"] = "in staat is om te redigeer jou vorm"; +$LANG["text_add_form_step_2_para_2"] = "Oop jou vorm, in 'n redakteur van jou keuse en verander jou vorm tag om die volgende, insluitende die twee verborge velde."; +$LANG["text_add_form_step_2_para_3"] = "Volgende, maak jou vorm, in 'n webblaaier. Vul in elke veld en dit stuur. Na die stuur, moet jy sien 'n boodskap. Nadat hierdie boodskap vertoon word, terug te keer na hierdie bladsy en klik op die refresh-knoppie hieronder. Wanneer hierdie proses voltooi is, sal jy sien 'n voort-knoppie hieronder, neem jou na die volgende stap."; +$LANG["text_add_form_step_2_para_6"] = "In jou vorm voorgelê word, sluit die volgende waardes. Hulle kan direk gestel word deur PHP of geslaag het saam met die vorm self. Hier is voorbeelde van elk. Die (\$ varname) is 'n hash (of assosiatiewe skikking) van alle vorm voorlegging inligting - dit is gewoonlik die (\$ postvar) of (\$ sessionvar) veranderlike, maar dit kan wees maat gebou word."; +$LANG["text_add_form_step_2_text_2"] = "Tik die URL van jou "dankie " hier. Dit is waar jy wil hê mense moet gerig word aan na die vorm ingedien is."; +$LANG["text_add_form_step_3_para_1"] = "Hierdie bladsy lys van al die velde in jou vorm indien. Please ondersoek elke veld en verwyder enige wyse dat jy nie vir elke voorlegging is gestoor nodig het. As jy 'n geldige terrein per ongeluk, of wil verander, die inligting gestoor deur jou vorm terug te keer na die vorige bladsy vir die stuur van' n nuwe toets voorlegging."; +$LANG["text_add_form_step_3_para_2"] = "Let wel: as jy die stuur van verskeie waardes via die blok aan of 'n multi-kies boks, maak seker jou veld naam eindig met die [] karakters (kyk die gebruiker dokumentasie vir meer inligting)."; +$LANG["text_add_form_step_3_text_1"] = "Hier is waar die pret begin! Op hierdie punt, is die vorm Tools wag vir 'n toets voorlegging van jou vorm. Dit sal hierdie vorm voorlegging gebruik om te weet watter inligting in die databasis gestoor moet word."; +$LANG["text_add_form_step_3_text_2"] = "deur jou te vorm Vorm Tools"; +$LANG["text_add_form_step_3_text_3"] = "met behulp van die vorm Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Om jou te help integreer jou vorm, stel ons voor jy lees een van die volgende tutoriale:"; +$LANG["text_add_form_step_3_text_5"] = "Hulle verduidelik hoe die opstel van jou vorm in voorbereiding vir die toets voorgelê word, en sluit ander inligting wat dalk van hulp. Die lyn van PHP wat jy nodig het is:"; +$LANG["text_add_form_step_3_text_6"] = "Dit sorg vir die data is eintlik gestuur word aan Vorm Tools. Wanneer jy sit het deur jou te toets voorlegging, kliek op die knoppie hieronder."; +$LANG["text_add_form_step_3_text_7"] = "Op die bladsy VOORAF aan jou kant is "Dankie" bladsy is, is seker te voeg op die volgende parameter na die \$ params veranderlike:"; +$LANG["text_add_form_step_5_para_1"] = "Die databasis is gestig om vir hierdie vorm en die vorm is geaktiveer word vir gebruik. As jy die voorlegging gemaak deur jou vorm na process.php, gaan terug na jou vorm en verwyder die volgende verborge veld:"; +$LANG["text_add_form_step_5_para_2"] = "Dan gaan jy na jou "dankie" bladsy om leë die sessies. Sodra dit gedoen is, sal alle nuwe vorm voorleggings word verwerk en gestoor deur Vorm Tools. Probeer om 'n voorlegging of twee om te kontroleer of die inligting is alles korrek oplaai."; +$LANG["text_add_form_step_5_para_3"] = "Indien u verkies om verfijn jou vorm vir opsies soos motor-epos, voeg ekstra vorm velde veld of die opstel van die vorm veld tik, kan jy verander jou vorm by enige punt."; +$LANG["text_add_form_step_5_para_4"] = "Aangesien u vorm bevat lêer oplaai velde, moet jy eers vir die instel van elke veld om die lêer oplaai gids spesifiseer watter lêers toegelaat word en. Dit kan op die blad skerm van die wysig vorm bladsy gevind word."; +$LANG["text_add_form_step_5_para_5"] = "As die voorlegging was gestuur via die API, verander die ft_api_init_form_page lyn op die eerste bladsy van jou vorm na:"; +$LANG["text_add_submission_button"] = "Die Voeg Voorlegging knoppie verskyn net vir n databasis wat die "kan voeg voorleggings " opsie ingestel op "ja "."; +$LANG["text_admin_email_placeholder_info"] = "Dit is die e-pos adres van die Vorm Tools bestuurder, gedefinieer in jou rekening instellings. Dit is net die e-pos adres uitgange, dus as jy wil gebruik as 'n HTML-skakel, sal jy moet wikkel dit in' n <a>-kode, soos so:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Dit is ook die standaard inskrywing bladsy tema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Eerstens, kan jy kies jou tipe."; +$LANG["text_client_form_page"] = "Hierdie bladsy lys van al die vorms en Views opgedra aan hierdie kliënte. Wenk: in die orde vir hulle om 'n vorm se voorleggings te sien, moet hulle tot ten minste een Kyk toegeskryf word."; +$LANG["text_client_map_filters_desc1"] = "Kliënt Kaart filters laat jy die beperking van die voorleggings wat in hierdie skerm verskyn deur die kartering van die waardes in 'n vorm veld aan die waardes in' n kliënt rekening."; +$LANG["text_client_no_forms"] = "Jy het tans geen vorms beskikbaar vir hersiening."; +$LANG["text_client_welcome"] = "Welkom! Hierdie program stoor al die inligting voorgelê deur besoekers. Om te sien hoe voorleggings vir 'n spesifieke vorm, kliek net op die OOG skakel, of lees die linkerkanste navigatiemenu vir ander opsies."; +$LANG["text_config_file_created"] = "U config.php lêer is geskep."; +$LANG["text_config_file_not_created"] = "Ons kon maak van jou config.php lêer nie. Jy sal nodig hê om die lêer te skep handmatig."; +$LANG["text_config_file_not_created_instructions"] = "Kopieer en plak die inhoud van die onderstaande afdeling in 'n lêer genaamd config.php en laai dit via FTP op die vorm Tools / wêreldwye gids (die gids bevat ook' n paar ander lêers en directories, 'n lêer genaamd library.php)."; +$LANG["text_confirm_delete_form"] = "Ja, ek wil verwyder hierdie vorm"; +$LANG["text_create_admin_account"] = "Nou gaan ons maak met die bestuurder se rekening. Dit is wat gebruik word vir die bestuur van alle aspekte van die vorm gereedskap, soos die byvoeg van vorms en die maak van kliënte rekeninge."; +$LANG["text_create_new_client_account"] = "Gebruik die vorm hier onder om 'n nuwe kliënt rekening. Alle velde word vereis."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "sien PHP {\$datefunctionlink} funksie vir die opmaak opsies"; +$LANG["text_default_file_settings_page"] = "Hierdie bladsy beskryf die lêer oplaai instellings vir jou Vorm Tools installasie. Hierdie reëls van toepassing op alle lêers opgelaai deur Vorm Tools, tensy dit uitdruklik geneutraliseer word vir 'n afsonderlike vorm veld. Let wel: as jy verander die oplaai gids na lêers opgelaai het, sal hulle outomaties word verskuif na die nuwe gids."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Voordat jy voortgaan, sal jy te werk / default / cachemap jou / temas moet toelaat dat die volle lees en skryf permissies. Sodra dit gedoen is, sal hierdie boodskap verdwyn en jy kan die installering van die draaiboek."; +$LANG["text_default_values_in_view"] = "Hierdie afdeling is opsioneel. Alle voorleggings wat gemaak is met hierdie siening sal ook die standaard waardes."; +$LANG["text_delete_all_forms"] = "Ek wil verwyder al die lêers wat via hierdie vorm was opgelaai nie"; +$LANG["text_delete_form_warning"] = "Is jy seker jy wil verwyder hierdie vorm? Hierdie aksie kan nie ongedaan gemaak word. Alle inligting sal permanent verloor het!"; +$LANG["text_edit_admin_menu_page"] = "Jy kan die menu hieronder. Om te verseker dat jy altyd toegang tot alle funksionaliteit beskikbaar is binne Vorm Tools die volgende bladsye word vereis: Vorms, clients, Jou rekening, Modules, instellings en Logout."; +$LANG["text_edit_client_menu_page"] = "Hierdie afdeling laat u pas die linker navigasie kolom vir elke gebruiker. Jy mag maak soveel client's as jy wil, en die toeken van enige rekening wat aan een van hulle. Standaard is daar twee lyste: een vir jou, die bestuurder, en een vir alle kliënte rekeninge. Die administrateur rekening mag verander word nie, maar nie verwyder word."; +$LANG["text_edit_tab_summary"] = "As jy wil hierdie siening se velde te groepeer in die tabs, gaan net die blad name hieronder. Nadat jy klaar is, kies die toepaslike blad vir elke veld in die gebied blad ."; +$LANG["text_edit_view_list_page"] = "Hierdie blad bepaal watter velde verskyn as kolomme op die indiening Aanbiedings bladsy, en 'n paar ekstra instellings vir daardie velde. Let wel: Ons raai u nie meer as 4 of 5 van die belangrikste velde in die View voeg."; +$LANG["text_email_settings_intro"] = "Op hierdie bladsy kan jy identifiseer wat jou vorm velde winkel e-pos en hul ooreenstemmende name. Sodra jy definieer hulle hier het, kan jy gebruik dit in jou e-pos templates as ontvangers. Hierdie afdeling is heeltemal opsioneel."; +$LANG["text_email_tab_summary"] = "Hierdie afdeling laat u konstrueer enige aantal e-pos gestuur word wanneer jou vorm ingedien is, en ander triggers."; +$LANG["text_email_template_tab"] = "Hierdie afdeling kan jy bepaal watter inhoud word vertoon in die e-pos. As jy wil stuur jou e-pos as slegs teks of e-pos, 'n waarde vir die betrokke gedeelte net betree. As jy 'n waarde vir beide, sal die e-pos in beide formate gestuur word."; +$LANG["text_email_template_text_1"] = "Daar is 'n voorlegging gemaak deur middel van jou vorm, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Daar is 'n voorlegging gemaak deur middel van jou vorm, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Dankie vir jou voorlegging!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Fout boodskap om aan te toon indien die veld versuim om die validering"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Eksterne vorms is vorms wat reeds bestaan ​​op jou webwerf, of iewers op die web. Kies hierdie opsie as jy jou eie vorm wat jy wil om te integreer met Vorm Tools."; +$LANG["text_fields_tab_summary"] = "Hierdie bladsy bevat 'n lys van al jou vorm velde. Om te bepaal hoe hulle verskyn wanneer op voorleggings, sien die databasis blad . Verwydering van 'n veld op hierdie bladsy sal dit verwyder van alle voorleggings, so wees versigtig!"; +$LANG["text_file_extension_info"] = "Gee lêeruitbreidings geskei met kommas (bv. jpg, gif, png) of leeg laat om enige spesifieke tipe toe te staan."; +$LANG["text_file_field_placeholders_info"] = "File velde het twee spesiale plek indikators: FILEURL en FILE NAME. FILEURL is die volle URL na die die lêer, sodat jy kan direk skakel om dit in jou e-pos; FILE NAME is net die lêernaam."; +$LANG["text_filters_page"] = "Slegs diegene voorleggings wat voldoen aan die reëls wat jy definieer hieronder verskyn in hierdie vertoning."; +$LANG["text_filters_tips"] = "Vir wenke oor hoe om die indiening van filters gebruik, kyk die gebruikers dokumentasie."; +$LANG["text_forgot_password"] = "Geen probleem. Voer net jou gebruikersnaam hieronder en jou login inligting sal aan jou email adres op lêer gestuur word. As jy jou gebruikersnaam vergeet het, stuur 'n e die webwerf-administrateur by {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Hierdie vorm bevat een of meer lêer oplaai velde:"; +$LANG["text_form_placeholder_info"] = "Die volgende plekhouers kan gebruik word in 'n e-pos sjabloon en taal plaatsaanduiding veld, ongeag van watter Kyk na die e-pos sjabloon is opgedra aan. Die VRAAG plekhouers is die spesifieke vraag; die ANTWOORDEBOEK plekhouers is die antwoorde op elke vraag."; +$LANG["text_form_submission_date_placeholder"] = "Die datum wanneer die voorlegging gemaak is is."; +$LANG["text_form_tools_form_url"] = "Die volle URL van die vorm. Dit het slegs 'n waarde vir eksterne vorme."; +$LANG["text_form_tools_login_url"] = "Die aanmelding URL vir Vorm Tools."; +$LANG["text_form_view_permission_info_admin"] = "Let wel: hierdie vorm tans administrateur regte tipe, so niemand van die kliënt rekeninge sal in staat wees om hierdie siening te sien."; +$LANG["text_form_view_permission_info_private"] = "Let wel: hierdie vorm tans het privaat toegang tipe sodat die openbare en private opsies hier sal beperk word tot dat die subset van kliënte ."; +$LANG["text_ft_installed"] = "Veels geluk, het Vorm Tools suksesvol geïnstalleer!"; +$LANG["text_global_placeholder_info"] = "Hierdie indikators kan in enige sjabloon en enige vorm gebruik kan word."; +$LANG["text_group_name_explanation"] = "Vir velde toegevoeg deur die Voeg Vorm proses, is hierdie waarde pre-is gevul met die vertoning teks van watter veld gebruik maak van die waarde. Jy mag dit verander, wil beter die inhoud karakteriseer."; +$LANG["text_install_create_config_file"] = "Vorm Tools winkels jou server en databasis-instellings in 'n lêer genaamd config.php, gevind het in jou / wêreld /-gids. Klik op die knoppie lêer skep om outomaties die lêer op jou bediener te genereer."; +$LANG["text_install_create_database_tables"] = "Nou gaan ons na die skep van die Vorm Tools databasis tabelle. Hierdie stap vereis dat die databasis self tot daar reeds gemaak is. As jy nie seker hoe om dit te doen, kontak asseblief jou diensverskaffer."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL server host" beteken gewoonlik dat die host naam wat u verskaf het korrek is nie. Miskien probeer om dit te "localhost" - hierdie is 'n algemene manier om te verwys na die "plaaslike" databasis op' n webbediener."; +$LANG["text_install_db_tables_error_tip_2"] = ""Cannot connect to local MySQL server through socket" beteken die databasis host veld is weer verkeerd."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" beteken dat daar 'n probleem met jou gebruikernaam / wagwoord kombinasie is."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... to database ..." beteken dat alhoewel jy jou gebruikersnaam en wagwoord wat jy verskaf is korrek, dit was nie in staat om konneksie te maak dat die name databasis met die rekening. Dit kan beteken dat óf jou databasis naam verkeerd is, of dat hierdie gebruiker rekening is nie gekoppel aan dat die databasis."; +$LANG["text_install_email_content_text"] = "Daar is baie hulpbronne op ons webwerf om u te help om te begin, insluitend ons aanlyn dokumentasie (https://docs.formtools.org) en tutoriale (https://docs.formtools.org/tutorials). As jy vasgekom het of 'n vraag het, stel 'n vraag op github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Jammer, sal Vorm Tools nie in staat wees om uit te voer op jou bediener Klik hier vir die minimum vereistes voldoen ."; +$LANG["text_install_system_check"] = "Hierdie bladsy loop 'n paar toetse op jou stelsel om te verseker dat dit in staat te hardloop Vorm Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Interne vorms bestaan ​​slegs binne Vorm Tools - nie elders op jou werf. Die enigste vorm Tools gebruiker rekeninge sal toegang hê tot die vorm. Kies hierdie opsie as jy nie 'n bestaande vorm."; +$LANG["text_internal_form_intro"] = "Gebruik die vorm hier onder om 'n nuwe interne vorm te skep. Alle instellings, insluitend die hoeveelheid en die inhoud van die vorm velde kan word verander en later geconfigureerd."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Ten einde aan te meld en gebruik Vorm Tools, moet jy javascript in your browser het. Aktiveer dit asseblief nou, en klik op herstel in jou browser."; +$LANG["text_last_modified_date_explanation_c"] = "Die laaste keer dat hierdie voorlegging is verander nie. Vir 'n nuwe voorleggings, hierdie is dieselfde as:"; +$LANG["text_limit_email_content_desc"] = "Hierdie funksie werk slegs vir HTML en teks inhoud gegenereer met Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(slegs lyste Views met een of meer filters gedefinieer)"; +$LANG["text_log_in_to_ft"] = "Teken in om Vorm Tools"; +$LANG["text_login"] = "Log in hieronder om toegang tot die (\$ Program Naam) Administrasie paneel. As jy jou wagwoord vergeet het, kliek hier vergeet het."; +$LANG["text_login_info"] = "Soos gevra, hier is jou inskrywing inligting."; +$LANG["text_name_of_form"] = "Die naam van die vorm."; +$LANG["text_no_clients"] = "Daar is tans geen kliënte in die databasis. Om 'n nuwe kliënt rekening voeg, kliek op die Kliënt-knoppie hieronder by."; +$LANG["text_no_clients_found"] = "Geen kliënte was gevind. Probeer verbreding van jou soektog kriteria."; +$LANG["text_no_fields_in_view"] = "Hierdie siening het nie enige velde in. Klik op die skakel hieronder."; +$LANG["text_no_forms"] = "Daar is tans geen vorms in die databasis. Om 'n nuwe vorm, klik op die Add Vorm knoppie hieronder."; +$LANG["text_no_forms_found"] = "Geen vorms is gevind."; +$LANG["text_no_forms_found_search"] = "Geen vorms is gevind. Probeer verbreding jou soek kriteria."; +$LANG["text_no_modules_found"] = "Geen modules was gevind. Probeer verbreding van jou soektog kriteria."; +$LANG["text_no_recipients_added"] = "Geen ontvangers het bygevoeg."; +$LANG["text_no_search_results"] = "Daar is geen resultate met hierdie soek kriteria / skerm."; +$LANG["text_no_submissions_found"] = "Jammer, geen voorleggings gevind is."; +$LANG["text_no_themes"] = "Jy hoef nie enige temas wat. Klik op die knoppie hieronder om die lys van jou tema te verfris, of Kyk op die vorm Tools gebruiker dokumentasie vir inligting oor die byvoeging van temas."; +$LANG["text_non_deletable_fields"] = "Hierdie veld word gebruik deur die kern script en kan nie geredigeer word nie, of verwyder sonder dat incompatibiliteiten word. As jy wil veranderinge aan die gebied tipe te maak, maak 'n afskrif van dit en wysig die kopie."; +$LANG["text_option_list_group_explanation"] = "Indien hierdie opsie gekies is word, dit kan jou opsies te groepeer. Hoe die groepe vertoon word hang af van die veld tipe gebruik van hierdie opsie lys."; +$LANG["text_option_list_page"] = "Radio knope, blok, vervolg keuselys en multi-kies dropdown velde almal gee die gebruiker met verskeie opsies wat hulle kan kies een of meer items. In die vorm Tools, is dit bekend as opsie lyste. Die algemeen, is dit outomaties geskep deur die Voeg Eksterne Vorm proses, maar jy kan handmatig te voeg, te wysig of jou opsie lyste hieronder as jou vorm veranderinge in die inhoud of jy bou velde wat slegs intern gebruik."; +$LANG["text_option_list_used_by_fields"] = "Hierdie opsie lys gebruik word deur meervoudige vorm velde. As jy die onderstaande inligting opdateer, sal dit verander word vir al die velde (sien op die blad Form Velden die lys van velde te sien) . As jy wil die waardes vir een, of 'n subset van die gebied wat tans opgedra te werk , kliek hier om 'n nuwe opsie lys met dieselfde waardes as hierdie een te skep. Dan kan jy die vorm velde wat jy wil die nuwe groep toewys."; +$LANG["text_public_form_omit_list_page"] = "Openbare vorms gee jou die voordeel van laat alle kliënte rekeninge toegang sonder om dit handmatig aan elke kliënt aan hulle. Op hierdie bladsy kan jy uiting te daardie kliënte wat nie met hierdie vorm toegang, selfs al het die vorm is gemerk as publiek."; +$LANG["text_public_view_omit_list_page"] = "Openbare Views gee jou die voordeel van laat alle kliënte rekeninge toegang sonder om dit handmatig aan elke kliënt aan hulle. Op hierdie bladsy kan jy uiting te daardie kliënte wat moontlik nie hierdie name View toegang."; +$LANG["text_reference_tab_info"] = "Hierdie bladsy bevat 'n lys van al die plekhouers beskikbaar vir jou vorm. Plekhouers snare, wat gebruik kan word in die e-pos templates word, en die velde gemerk met 'n spesiale plaatsaanduiding ikoon . Wanneer dit in 'n veld geloop, dinamiese hulle omgeskakel word na die toepaslike waarde wanneer die veld word vertoon of die e-pos gestuur word."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Hersiening van die gebruiker dokumentasie"; +$LANG["text_send_email_from_edit_submission_page"] = "Insluit opsie te stuur hierdie e-pos uit Verander Voorlegging bladsy"; +$LANG["text_smart_fill_option_list_problem"] = "Ons was nie in staat om te Smart jou veld opsies Vul. Maar, as 'n alternatief, kan jy probeer om die oplaai van' n afskrif van jou vorm in die veld hieronder. Let wel: oplaai nie rou PHP bladsye (of ander kode van bediener-kant) - net die HTML-weergawe oplaai . Te kry, lees en stoor die bladsy van jou webblaaier."; +$LANG["text_submission_ip_address"] = "Die IP adres van die gebruiker wat die voorlegging."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Gebruik die vorm hier onder om óf besigtig of stuur vir jouself 'n van hierdie e-pos gegenereer e-pos sjabloon. Die e-posadres is net gestuur na die gekose e-posadres hieronder, die hoof, cc en bcc e-pos adres ontvangers is, terwyl die toets geïgnoreer."; +$LANG["text_test_email_templates_no_submissions"] = "Om dit te toets, en jou e-pos templates, moet jy eers sit deur ten minste een vorm indien."; +$LANG["text_theme_page_intro"] = "Hierdie bladsy gee van al jou temas. Klik op die thumbnails om te sien 'n groter voorbeeld van die tema's style. Die "aangeskakel" boks bepaal of nie dat die tema van mag deur kliënte gekies word. Om te blaai alle beskikbare temas, besoek die vorm Tools webwerf."; +$LANG["text_tutorial_adding_first_form"] = "Tutoriaal: Adding jou eerste vorm!"; +$LANG["text_unique_submission_id"] = "Die unieke voorlegging ID."; +$LANG["text_unused_option_list"] = "Hierdie opsie lys nie gebruik word nie deur enige vorm velde."; +$LANG["text_upgraded"] = "Jou installasie het opgegradeer na {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Hierdie opsie lys gebruik word deur die volgende velde."; +$LANG["text_view_fields_info"] = "Hierdie blad beheer watter velde vertoon wanneer die wysiging van 'n voorlegging in hierdie siening, hul bestelling en of hulle kan verander word of nie."; +$LANG["text_view_tab_summary"] = "Hierdie blad kan jy maak van verskillende maniere by die groep en reël jou data. Databasis laat jy persoonlike deel uit van jou vorm data om dit te verdeel in hanteerbare stukke en te beperk wat kliënte kan sien of wysig."; +$LANG["validation_account_disabled"] = "Jammer, het jou rekening gedeaktiveer."; +$LANG["validation_account_not_recognized"] = "Jammer, dat gebruikersnaam is nie verstaanbaar nie."; +$LANG["validation_account_not_recognized_info"] = "Jammer, dat gebruikersnaam is nie gevind nie. Probeer weer, of kontak die site bestuurder by die adres hieronder."; +$LANG["validation_account_pending"] = "Jou rekening is hangende goedkeuring deur 'n administrateur."; +$LANG["validation_check_delete_client"] = "Is jy seker jy wil verwyder hierdie kliënt rekening?"; +$LANG["validation_client_password_missing_number"] = "Die kliënt wagwoord moet ten minste een getal (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Die kliënt wagwoord moet ten minste een van die volgende {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Die kliënt wagwoord moet ten minste 'n hoofletter."; +$LANG["validation_client_password_too_short"] = "Die kliënt moet word wagwoord ten minste {\$number} karakters lank wees."; +$LANG["validation_col_name_is_reserved_word"] = "Jammer, hierdie databasis kolom naam is 'n voorbehou werk in MySQL. Please rename it!"; +$LANG["validation_db_name"] = "Databasis name kan nie periodes of strepies bevat nie."; +$LANG["validation_db_not_updated_invalid_input"] = "Die databasis kon nie opgedateer word nie. Maak seker om te sien die waardes wat jy ingetik het, is geldig."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Jammer, moet die standaard-administrateur en kliënt temas altyd aangeskakel word."; +$LANG["validation_default_phone_num_required"] = "Vul in die volle telefoonnommer vir die <b> { \$ veld} </ b> - getalle."; +$LANG["validation_default_rule_alpha"] = "Tik net die letters en nommers vir die <b> { \$ veld} </ b>-veld."; +$LANG["validation_default_rule_letters_only"] = "Tik net briewe vir die <b> { \$ veld} </ b>-veld."; +$LANG["validation_default_rule_numbers_only"] = "Tik net nommers vir die <b> { \$ veld} </ b>-veld."; +$LANG["validation_default_rule_required"] = "Voer 'n waarde vir die <b> { \$ veld} </ b>-veld."; +$LANG["validation_default_rule_valid_email"] = "Gee 'n geldige e-posadres vir die <b> { \$ veld} </ b>-veld."; +$LANG["validation_delete_form_confirm"] = "Kan jy die boks om te bevestig dat jy wil verwyder hierdie vorm."; +$LANG["validation_delete_non_empty_option_list"] = "Waarskuwing! Hierdie opsie lys gebruik word deur een of meer vorm velde. Om dit te verwyder sal daardie velde ophou om goed te werk."; +$LANG["validation_display_names_incomplete"] = "Gee 'n waarde vir al die vertoning het, of kliek op die Smart Vul opsie om hulle dinamiese."; +$LANG["validation_duplicate_form_field_name"] = "Jy kan nie meer velde met die dieselfde veld naam."; +$LANG["validation_email_not_found_or_invalid"] = "Jammer, die e-pos met jou rekening verbind óf nie bestaan nie of is ongeldig."; +$LANG["validation_folder_invalid_permissions"] = "Ten einde loop hierdie toets, die regte behoefte om op die oplaai gids ingestel kan word om vir die lees en skryf van lêers (777 op Unix)."; +$LANG["validation_folder_not_writable"] = "Hierdie gids is nie skryf."; +$LANG["validation_internal_form_too_many_fields"] = "Jammer, jy kan net geskep met 1000 velde of minder."; +$LANG["validation_invalid_admin_email"] = "Voer 'n geldige adminstrator se e-posadres."; +$LANG["validation_invalid_admin_username"] = "Jou gebruikersnaam mag slegs bestaan ​​van alfanumeriese karakters (az en 0-9)."; +$LANG["validation_invalid_client_username"] = "Die kliënt se gebruikers naam mag slegs bestaan uit alfa numeriese karakters (az en 0-9)."; +$LANG["validation_invalid_client_username2"] = "Jammer, gebruikersnaam se mag alleenlik letters, syfers en die onderstreping karakter bevat. Gee 'n nuwe gebruikersnaam."; +$LANG["validation_invalid_column_name"] = "Kolom name mag slegs alfa numeriese (AZ, 0-9). Gaan asseblief die kolom name."; +$LANG["validation_invalid_custom_from_email"] = "Voer 'n geldige maat' Van 'e-posadres."; +$LANG["validation_invalid_custom_reply_to_email"] = "Voer 'n geldige persoonlike "Antwoord-aan" e-pos adres."; +$LANG["validation_invalid_default_sessions_timeout"] = "Voer 'n geldige waarde (' n nommer) van die standaard-sessies time-out."; +$LANG["validation_invalid_email"] = "Voer 'n geldige e-posadres."; +$LANG["validation_invalid_email_id"] = "Jammer, dit is 'n geldige e-ID."; +$LANG["validation_invalid_folder"] = "Jammer, hierdie lyk te wees van 'n geldige gids nie."; +$LANG["validation_invalid_form_field_names"] = "Vorm velde kan slegs alfanumeriese word en die karakters (AZ, 0-9, _), met geen spasies."; +$LANG["validation_invalid_num_clients_per_page"] = "Tik net nommers in die Num Kliënte Per Page veld."; +$LANG["validation_invalid_num_emails_per_page"] = "Tik net syfers vir die posstukke per bladsy."; +$LANG["validation_invalid_num_form_fields"] = "Tik net nommers in die aantal velde veld."; +$LANG["validation_invalid_num_forms_per_page"] = "Asseblief slegs syfers in die Num Vorms Per Page veld betree."; +$LANG["validation_invalid_num_menus_per_page"] = "Tik net syfers vir die spyskaarte per bladsy."; +$LANG["validation_invalid_num_modules_per_page"] = "Tik net nommers in die Num Modules Per Page veld."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Tik net nommers in die Num opsie Lyste per bladsy veld."; +$LANG["validation_invalid_num_submissions_per_page"] = "Voer 'n geldige aantal voorleggings per bladsy."; +$LANG["validation_invalid_sessions_timeout"] = "Voer 'n geldige sessie Time-out (heelgetalle net!)."; +$LANG["validation_invalid_tab_assign_values"] = "Tik net nommers in die "uit" en "na 'velde."; +$LANG["validation_invalid_table_prefix"] = "Voer 'n databasis voorvoegsel bestaan ​​uit die letter en die onderstreping karakter net."; +$LANG["validation_invalid_upload_folder"] = "Jou server se installasie van PHP het 'n ongeldige instelling vir die upload_tmp_dir waarde. "{\$upload_folder}" is nie 'n geldige gids."; +$LANG["validation_invalid_url"] = "Voer 'n geldige URL."; +$LANG["validation_invalid_username"] = "Jou gebruikersnaam mag slegs bestaan uit alfa numeriese karakters (az en 0-9)."; +$LANG["validation_is_form_active"] = "Dui asseblief aan of die vorm aktief is of nie."; +$LANG["validation_menu_name_taken"] = "Jammer, hierdie menu naam is reeds geneem. Kies 'n nuwe naam."; +$LANG["validation_modules_search_no_status"] = "Kies asseblief of die aanstuur blok."; +$LANG["validation_no_access_type"] = "Gee die toegang tipe."; +$LANG["validation_no_account_logout_url"] = "Gee jou logout URL in."; +$LANG["validation_no_account_password_confirmed"] = "Please re-enter jou nuwe wagwoord."; +$LANG["validation_no_account_password_confirmed2"] = "Gee die nuwe wagwoord."; +$LANG["validation_no_admin_email"] = "Gee die bestuurder se e-posadres."; +$LANG["validation_no_admin_theme"] = "Kies die tema vir die administrateur rekening."; +$LANG["validation_no_admin_theme_swatch"] = "Kies asseblief 'n Swatch vir die administrateur tema."; +$LANG["validation_no_client_email"] = "Gee die kliënt se e-posadres."; +$LANG["validation_no_client_first_name"] = "Gee die kliënt se eerste naam."; +$LANG["validation_no_client_last_name"] = "Gee die kliënt se vorige naam."; +$LANG["validation_no_client_login_page"] = "Dui asseblief aan watter bladsy die kliënt behoort aan te meld wanneer hulle getrek word"; +$LANG["validation_no_client_password"] = "Gee die kliënt se wagwoord."; +$LANG["validation_no_client_theme_swatch"] = "Kies asseblief 'n standaard Swatch vir die kliënt rekeninge."; +$LANG["validation_no_client_username"] = "Gee die kliënt se rekening."; +$LANG["validation_no_column_name"] = "Gee al die kolom name, of die Smart Vul knoppie klik om dit outomaties te vul dit."; +$LANG["validation_no_column_selected"] = "Asseblief ten minste een veld te kies om te vertoon as 'n kolom op die voorlegging aanbieding bladsy."; +$LANG["validation_no_custom_from_email"] = "Gee die gewoonte 'Van' e-posadres."; +$LANG["validation_no_custom_recipient_email"] = "Gee die persoonlike ontvanger e-posadres."; +$LANG["validation_no_custom_reply_to_email"] = "Gee die persoonlike "Antwoord-aan" e-pos adres."; +$LANG["validation_no_date_format"] = "Gee 'n datum formaat."; +$LANG["validation_no_db_column_single"] = "Gee die naam van die databasis kolom."; +$LANG["validation_no_db_hostname"] = "Gee die databasis gasheernaam nie."; +$LANG["validation_no_db_name"] = "Gee die naam van die databasis."; +$LANG["validation_no_db_username"] = "Gee die databasis-rekening."; +$LANG["validation_no_default_client_theme"] = "Kies die verstek tema vir al die nuwe kliënte rekeninge."; +$LANG["validation_no_default_language"] = "Kies die verstek taal vir jou installasie van Vorm Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Gee die verstek sessie Time-out vir die gebruiker rekeninge."; +$LANG["validation_no_display_text"] = "Gee die sigbare teks vir elke veld."; +$LANG["validation_no_display_text_single"] = "Gee die sigbare teks waarde."; +$LANG["validation_no_edit_submission_page_label"] = "Gee die Redigeer Voorlegging bladsy kaartjie."; +$LANG["validation_no_email"] = "Vul jou e-posadres."; +$LANG["validation_no_email_config_field"] = "Spesifiseer asseblief watter vorm die gebied is die e-veld."; +$LANG["validation_no_email_content"] = "Tik die e-inhoud vir ten minste een van die formaat (html of teks)."; +$LANG["validation_no_email_from_field"] = "Asseblief die e-pos "van die veld."; +$LANG["validation_no_email_template_name"] = "Tik die e-sjabloon naam."; +$LANG["validation_no_email_template_view_id"] = "Kies die skerm waarop hierdie e-pos sjabloon moet word gekarteer."; +$LANG["validation_no_email_template_view_mapping_value"] = "Dui asseblief wanneer die e-pos gestuur moet word."; +$LANG["validation_no_enabled_themes"] = "Maak asseblief seker dat ten minste een tema is aangeskakel."; +$LANG["validation_no_first_name"] = "Gee jou naam."; +$LANG["validation_no_form_field_name"] = "Gee alle vorm veld name."; +$LANG["validation_no_form_field_single"] = "Gee die vorm veld waarde."; +$LANG["validation_no_form_id"] = "Die vorm-ID is nie gespesifiseer nie. Log uit en probeer weer."; +$LANG["validation_no_form_name"] = "Gee die vorm naam."; +$LANG["validation_no_form_url"] = "Gee die vorm URL in."; +$LANG["validation_no_last_name"] = "Gee jou naam."; +$LANG["validation_no_login_page"] = "Dui asseblief aan watter bladsy jy wil graag gestuur word elke keer as jy inteken"; +$LANG["validation_no_logout_url"] = "Gee die logout URL in."; +$LANG["validation_no_main_email_recipient"] = "Asseblief ten minste een van die hoof e-pos ontvanger te voer (dws nie 'n BK of bcc)."; +$LANG["validation_no_menu"] = "Kies asseblief 'n spyskaart vir hierdie gebruiker-rekening."; +$LANG["validation_no_menu_id"] = "Kies asseblief 'n spyskaart."; +$LANG["validation_no_num_clients_per_page"] = "Tik die nommer van kliënt rekeninge per bladsy."; +$LANG["validation_no_num_emails_per_page"] = "Gee die aantal e-pos na die lys per bladsy."; +$LANG["validation_no_num_form_fields"] = "Voer die aantal velde vir jou vorm."; +$LANG["validation_no_num_forms_per_page"] = "Gee die aantal vorms per bladsy."; +$LANG["validation_no_num_menus_per_page"] = "Tik die nommer van spyskaarte na die lys per bladsy."; +$LANG["validation_no_num_modules_per_page"] = "Gee die aantal modules per bladsy."; +$LANG["validation_no_num_option_lists_per_page"] = "Gee die aantal van die opsie lyste per bladsy."; +$LANG["validation_no_num_submissions_per_page"] = "Asseblief die aantal voorleggings te voer om te wys per bladsy."; +$LANG["validation_no_option_list_name"] = "Gee die naam van die opsie lys."; +$LANG["validation_no_page_titles"] = "Gee die standaard bladsy titels vir die gebruiker rekeninge."; +$LANG["validation_no_password"] = "Gee jou wagwoord."; +$LANG["validation_no_program_name"] = "Gee die program naam."; +$LANG["validation_no_second_password"] = "Gee jou wagwoord."; +$LANG["validation_no_sessions_timeout"] = "Gee die sessie time-out."; +$LANG["validation_no_smart_fill_values"] = "Gee die vorm veld naam en die adres van die vorm."; +$LANG["validation_no_table_prefix"] = "Voer 'n databasis voorvoegsel."; +$LANG["validation_no_tabs_defined"] = "Geen oortjies gedefinieer"; +$LANG["validation_no_test_email_recipient"] = "Voer die adres van waar ons moet stuur die toets e-pos."; +$LANG["validation_no_test_email_submission_id"] = "Gee die voorlegging ID-nommer."; +$LANG["validation_no_theme"] = "Kies 'n tema."; +$LANG["validation_no_theme_swatch"] = "Kies asseblief 'n Swatch vir die gekose tema."; +$LANG["validation_no_timezone_offset"] = "Gee die tydsone verreken."; +$LANG["validation_no_titles"] = "Gee die titels."; +$LANG["validation_no_two_column_names"] = "Jammer, kan jy dieselfde databasis kolom naam nie twee keer."; +$LANG["validation_no_ui_language"] = "Kies 'n taal vir die koppelvlak."; +$LANG["validation_no_url"] = "Voer 'n adres."; +$LANG["validation_no_username"] = "Vul u gebruikersnaam."; +$LANG["validation_no_username_or_js"] = "Moet jy jou gebruikersnaam. Please activate JavaScript in your browser."; +$LANG["validation_no_view_fields"] = "Wys jou geen velde bevat nie! Jy moet toewys ten minste een veld, want daar moet iets aan te toon in jou skerm."; +$LANG["validation_no_view_fields_selected"] = "Please een of meer velde te kies om te voeg by die vertoning."; +$LANG["validation_no_view_name"] = "Gee die naam van jou skerm."; +$LANG["validation_num_rows_to_add"] = "Asseblief die aantal rye in om by te voeg."; +$LANG["validation_option_list_name_taken"] = "Jammer, is reeds hierdie opsie lys naam geneem. Kies asseblief 'n nuwe naam."; +$LANG["validation_password_in_password_history"] = "Vir veiligheid, kan jy nie ingaan nie dieselfde wagwoord as enige van die laaste {\$history_size} wagwoorde. Gee 'n ander wagwoord."; +$LANG["validation_passwords_different"] = "Maak seker dat die wagwoorde is dieselfde."; +$LANG["validation_please_enter_search_date_range"] = "Kies die soektog datum bereik."; +$LANG["validation_please_enter_search_keyword"] = "Gee die soektog navraag."; +$LANG["validation_select_field_type"] = "Kies 'n veld intik."; +$LANG["validation_select_submissions_to_copy"] = "Kies asseblief die voorleggings wat u graag wil kopieer."; +$LANG["validation_select_submissions_to_delete"] = "Please select dié voorleggings wat jy wil verwyder."; +$LANG["validation_smart_fill_cannot_fill"] = "Jammer, ons kan vul hierdie veld nie."; +$LANG["validation_smart_fill_invalid_field_type"] = "Ons was nie in staat om 'n veld, maar dit is nie' n uitvou, boks of radio-groep."; +$LANG["validation_smart_fill_no_field_found"] = "Jammer, ons kan 'n vorm veld nie met dié naam op die bladsy gespesifiseer."; +$LANG["validation_smart_fill_no_page"] = "Asseblief die bladsy op wat die veld wat jy wil smart vul."; +$LANG["validation_smart_fill_upload_all_pages"] = "Please upload al die bladsye in jou vorm."; +$LANG["validation_upload_folder_not_writable"] = "Hierdie tydelike oplaai gids gespesifiseer deur jou PHP installasie is nie verander. Totdat dit vasgestel is, kan lêers nie deur middel van Vorm Tools (of enige ander PHP-program) word opgelaai. Kontak asseblief u diensverskaffer."; +$LANG["validation_upload_html_files_only"] = "Laai net HTML-lêers."; +$LANG["validation_username_taken"] = "Jammer, dat gebruikersnaam is reeds geneem. Gee 'n ander gebruikersnaam."; +$LANG["validation_wrong_password"] = "Jammer, dat wagwoord kom nie ooreen nie."; +$LANG["word_about"] = "Oor"; +$LANG["word_access"] = "Toegang"; +$LANG["word_account"] = "Rekening"; +$LANG["word_account_sp"] = "Rekening (s)"; +$LANG["word_accounts"] = "Rekeninge"; +$LANG["word_action"] = "Beroep"; +$LANG["word_active"] = "Aktiewe"; +$LANG["word_add"] = "Byvoeg"; +$LANG["word_add_rightarrow"] = "Voeg »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Administrasie"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Na"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Skrywer"; +$LANG["word_author_c"] = "Author:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Terug"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Voor"; +$LANG["word_benefits"] = "Voordele"; +$LANG["word_blue"] = "Blou"; +$LANG["word_cancel"] = "Die styl"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Aankruisvakken"; +$LANG["word_checklist"] = "Aftiklys"; +$LANG["word_client"] = "Kliënt"; +$LANG["word_client_c"] = "Kliënt:"; +$LANG["word_clients"] = "Clients"; +$LANG["word_close"] = "Sluit"; +$LANG["word_code"] = "Kode"; +$LANG["word_column"] = "Kolom"; +$LANG["word_columns"] = "Kolomme"; +$LANG["word_columns_sp"] = "Kolom (s)"; +$LANG["word_complete"] = "Voltooi"; +$LANG["word_configuration"] = "Opset"; +$LANG["word_content"] = "Inhoud"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Verder »"; +$LANG["word_copy"] = "Kopie"; +$LANG["word_custom"] = "Gewoonte"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Datum"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Skrap"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Direkte"; +$LANG["word_disabled"] = "Disabled"; +$LANG["word_documentation"] = "Dokumentasie"; +$LANG["word_done"] = "Gedaan"; +$LANG["word_drawbacks"] = "Nadele"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Edit"; +$LANG["word_editable"] = "Bewerkbaar"; +$LANG["word_email"] = "E-pos"; +$LANG["word_email_c"] = "E-pos:"; +$LANG["word_emails"] = "E-pos"; +$LANG["word_enabled"] = "Aangeskakel"; +$LANG["word_equals"] = "Gelyk aan"; +$LANG["word_error"] = "Fout"; +$LANG["word_error_c"] = "Fout:"; +$LANG["word_examples_c"] = "Voorbeelde:"; +$LANG["word_external"] = "Eksterne"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Veld"; +$LANG["word_field_sp"] = "Veld (s)"; +$LANG["word_fields"] = "Velde"; +$LANG["word_fields_sp"] = "Veld (e)"; +$LANG["word_file"] = "Lêer"; +$LANG["word_file_b_uc"] = "[Lêer]"; +$LANG["word_files"] = "Lêers"; +$LANG["word_filters"] = "Filters"; +$LANG["word_filters_sp"] = "Filter (s)"; +$LANG["word_for"] = "vir"; +$LANG["word_form"] = "Vorm"; +$LANG["word_form_c"] = "Vorm:"; +$LANG["word_formatting"] = "Formatering"; +$LANG["word_forms"] = "Vorms"; +$LANG["word_found"] = "Gevind"; +$LANG["word_from"] = "Vanaf"; +$LANG["word_from_c"] = "Van:"; +$LANG["word_general"] = "Algemene"; +$LANG["word_green"] = "Green"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Hoogte"; +$LANG["word_help"] = "Help"; +$LANG["word_hidden"] = "Hidden"; +$LANG["word_highlight"] = "Merk"; +$LANG["word_horizontal"] = "Horisontale"; +$LANG["word_hour"] = "Uur"; +$LANG["word_hours"] = "Uur"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Beeld"; +$LANG["word_incomplete"] = "Onvolledig"; +$LANG["word_install"] = "Installeer"; +$LANG["word_installation"] = "Installasie"; +$LANG["word_internal"] = "Interne"; +$LANG["word_language"] = "Taal"; +$LANG["word_large"] = "Groot"; +$LANG["word_like"] = "Soos"; +$LANG["word_login"] = "Aanteken"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Hoof"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Spyskaarte"; +$LANG["word_minutes"] = "minute"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Naam"; +$LANG["word_name_c"] = "Naam:"; +$LANG["word_never"] = "Nooit"; +$LANG["word_next_rightarrow"] = "volgende »"; +$LANG["word_next_step_rightarrow"] = "NEXT STEP »"; +$LANG["word_no"] = "Nee"; +$LANG["word_none"] = "Geen"; +$LANG["word_notes"] = "Notas"; +$LANG["word_notification"] = "Kennisgewing"; +$LANG["word_number"] = "Nommer"; +$LANG["word_off"] = "Af"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Goed"; +$LANG["word_on"] = "Op"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operateur"; +$LANG["word_options"] = "Opsies"; +$LANG["word_orange"] = "Oranje"; +$LANG["word_order"] = "Bestelling"; +$LANG["word_other"] = "Ander"; +$LANG["word_other_c"] = "Ander:"; +$LANG["word_page"] = "Bladsy"; +$LANG["word_page_c"] = "Page:"; +$LANG["word_pass"] = "Beweeg"; +$LANG["word_password"] = "Wagwoord"; +$LANG["word_password_c"] = "Wagwoord:"; +$LANG["word_pending"] = "Wagtend"; +$LANG["word_permissions"] = "Permissions"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«vorige"; +$LANG["word_private"] = "Persoonlik"; +$LANG["word_public"] = "Openbare"; +$LANG["word_purple"] = "Purple"; +$LANG["word_recipient"] = "Ontvanger"; +$LANG["word_recipient_sp"] = "Ontvanger (s)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Verwyder"; +$LANG["word_remove_uc_leftarrow"] = "«VERWYDER"; +$LANG["word_reply_to"] = "Reply-to"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Vereiste"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Opgelos"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "ry"; +$LANG["word_search"] = "Soek"; +$LANG["word_searchable"] = "Soekbare"; +$LANG["word_select"] = "Kies"; +$LANG["word_setting"] = "Ligging"; +$LANG["word_settings"] = "Stellings"; +$LANG["word_show"] = "Wys"; +$LANG["word_size"] = "Grootte"; +$LANG["word_skipped"] = "Oorgeslaan"; +$LANG["word_small"] = "Klein"; +$LANG["word_solution"] = "Oplossing"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Begin"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Onderwerp"; +$LANG["word_subject_c"] = "Onderwerp"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Voorlegging"; +$LANG["word_submissions"] = "Voorleggings"; +$LANG["word_system"] = "Stelsel"; +$LANG["word_tab"] = "Blad"; +$LANG["word_tabs"] = "Oortjies"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Toets"; +$LANG["word_text"] = "Teks"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temas"; +$LANG["word_time"] = "Tyd"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Wenke"; +$LANG["word_today"] = "Vandag"; +$LANG["word_truncate_q"] = "Kapt?"; +$LANG["word_uninstall"] = "Verwyder"; +$LANG["word_unknown"] = "Onbekend"; +$LANG["word_update"] = "Bywerking"; +$LANG["word_upgrade"] = "Opgradeer"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Gebruiker"; +$LANG["word_username"] = "Gebruikersnaam"; +$LANG["word_username_c"] = "Gebruikersnaam:"; +$LANG["word_validation"] = "Validatie"; +$LANG["word_value"] = "Waarde"; +$LANG["word_value_sp"] = "Waarde (s)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Kontroleer"; +$LANG["word_version"] = "Weergawe"; +$LANG["word_vertical"] = "Vertikale"; +$LANG["word_view"] = "Uitsig"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Waarskuwing!"; +$LANG["word_warning_c"] = "Waarskuwing:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Welkom!"; +$LANG["word_width_c"] = "breedte:"; +$LANG["word_words"] = "Woorde"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Geel"; +$LANG["word_yes"] = "Ja"; \ No newline at end of file diff --git a/global/lang/ar.php b/global/lang/ar.php new file mode 100644 index 00000000..e80cb692 --- /dev/null +++ b/global/lang/ar.php @@ -0,0 +1,1219 @@ +تحذير! لقد اخترت {\$num_selected_on_page} الطلبات على هذه الصفحة {\$num_selected_on_other_pages} على صفحات أخرى. يرجى اختيار أحد الخيارات التالية :
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "تحذير! لم تختر أية تقارير على هذه الصفحة لكنك اخترت {\$num_selected_on_other_pages} على صفحات أخرى. يرجى التأكد من أنك تريد حذف هذه التقديمات.
    "; +$LANG["confirm_delete_view"] = "هل أنت متأكد من أنك تريد حذف هذا الملف؟"; +$LANG["confirm_refresh_page"] = "هل أنت متأكد من أنك تريد تحديث الصفحة؟ هذا سوف يفقد أي التغييرات التي قمت بها."; +$LANG["confirm_save_change_before_redirect"] = "وقد تم تحديث واحد أو أكثر من المجالات. هل تريد حفظ التغييرات قبل إعادة توجيه؟"; +$LANG["confirm_smart_fill_db_column_fields"] = "هل أنت متأكد من أنك تريد الذكية تعبئة قاعدة البيانات أسماء الأعمدة؟ هذا وسوف الكتابة فوق القيم الموجودة."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "هذا الخيار التلقائي بإنشاء قاعدة بيانات أسماء الأعمدة استنادا إلى الحقول نص العرض ، وبالتالي فإن محتويات جدول قاعدة البيانات أسهل للقراءة."; +$LANG["confirm_smart_fill_display_names"] = "هل أنت متأكد من أنك تريد الذكية املأ أسماء العرض؟ هذا وسوف الكتابة فوق القيم الموجودة."; +$LANG["confirm_ungroup_option_list"] = "هل أنت متأكد أنك تريد فك تجميع هذه القائمة الخيار؟ وسيتم جمعها في جميع الخيارات في قائمة واحدة مجمعة."; +$LANG["confirm_uninstall_module"] = "هل أنت متأكد من أنك تريد إلغاء هذه الوحدة؟ وسوف تكون جميع البيانات الوحدة المفقودة."; +$LANG["date_AM"] = "ص"; +$LANG["date_Fri"] = "الجمعة"; +$LANG["date_Friday"] = "جمعة"; +$LANG["date_Mon"] = "الاثنين"; +$LANG["date_Monday"] = "الاثنين"; +$LANG["date_PM"] = "م"; +$LANG["date_Sat"] = "جلس"; +$LANG["date_Saturday"] = "السبت"; +$LANG["date_Sun"] = "شمس"; +$LANG["date_Sunday"] = "الأحد"; +$LANG["date_Thu"] = "خميس"; +$LANG["date_Thursday"] = "الخميس"; +$LANG["date_Tue"] = "ثلاثاء"; +$LANG["date_Tuesday"] = "الثلاثاء"; +$LANG["date_Wed"] = "الأربعاء"; +$LANG["date_Wednesday"] = "الأربعاء"; +$LANG["date_am"] = "صباحا"; +$LANG["date_month_April"] = "أبريل"; +$LANG["date_month_August"] = "أغسطس"; +$LANG["date_month_December"] = "ديسمبر"; +$LANG["date_month_February"] = "فبراير"; +$LANG["date_month_January"] = "يناير"; +$LANG["date_month_July"] = "يوليو"; +$LANG["date_month_June"] = "يونيو"; +$LANG["date_month_March"] = "المسيرة"; +$LANG["date_month_May"] = "ربما"; +$LANG["date_month_November"] = "نوفمبر"; +$LANG["date_month_October"] = "أكتوبر"; +$LANG["date_month_September"] = "سبتمبر"; +$LANG["date_month_short_Apr"] = "أبريل"; +$LANG["date_month_short_Aug"] = "أغسطس"; +$LANG["date_month_short_Dec"] = "ديسمبر"; +$LANG["date_month_short_Feb"] = "فبراير"; +$LANG["date_month_short_Jan"] = "يناير"; +$LANG["date_month_short_Jul"] = "يوليو"; +$LANG["date_month_short_Jun"] = "يونيو"; +$LANG["date_month_short_Mar"] = "مارس"; +$LANG["date_month_short_May"] = "ربما"; +$LANG["date_month_short_Nov"] = "نوفمبر"; +$LANG["date_month_short_Oct"] = "أكتوبر"; +$LANG["date_month_short_Sep"] = "سبتمبر"; +$LANG["date_pm"] = "بعد الظهر"; +$LANG["notify_account_deleted"] = "حساب المستخدم قد تم حذفه."; +$LANG["notify_account_updated"] = "حسابك قد تم تحديثها بنجاح."; +$LANG["notify_add_display_values"] = "إضافة العرض القيم"; +$LANG["notify_admin_menu_updated"] = "القائمة الادارة قد تم تحديثه."; +$LANG["notify_admin_theme_overridden"] = "المسؤول موضوع تم تجاوز يدويا."; +$LANG["notify_allow_url_fopen_not_set"] = "آسف ، وهذا الاختبار لا يمكن أن تدار على خادم الويب. فهي تتطلب allow_url_fopen سيتم تعيينه إلى 1 في ملف php.ini. هذا الإعداد يسمح [فب] الوصول إلى الملفات عن طريق العنوان ، والذي يعتبر ضروريا لتنفيذ هذا الاختبار. يمكنك اختبار ذلك يدويا عن طريق تحميل ملف إلى هذا المجلد عن طريق بروتوكول نقل الملفات ، ثم تحاول الوصول إليه على العنوان الذي قمت الموفر."; +$LANG["notify_change_temp_password"] = "يمكنك فقط تسجيل الدخول باستخدام كلمة مرور مؤقتة. يجب عليك إعادة تعيين كلمة السر الخاصة بك الآن!"; +$LANG["notify_click_to_edit_new_submission"] = "انقر هنا لتعديل التقديم الجديد."; +$LANG["notify_client_account_menus_updated"] = "حساب العميل (ق) قد تم تحديثها إلى {\$menu_name} القائمة. أنت الآن قد حذف من القائمة التي كان قد سبق المرتبطة حساب (ق)."; +$LANG["notify_client_account_not_updated"] = "ويمكن حساب العميل لا يمكن تحديث."; +$LANG["notify_client_account_themes_updated"] = "حساب العميل (ق) قد تم تحديثها إلى {\$theme} موضوع. يمكنك الآن تعطيل موضوع سبق المرتبطة حساب (ق)."; +$LANG["notify_client_account_updated"] = "حساب العميل قد تم تحديثها بنجاح."; +$LANG["notify_client_menu_deleted"] = "القائمة العميل قد تم حذفه."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "في القائمة قد تم حذفه ، ولكن بعد حسابات العملاء الآن لم يعد لدينا قائمة! كنت بحاجة إلى تحديث الحسابات التالية :"; +$LANG["notify_client_menu_updated"] = "القائمة العميل قد تم تحديثه."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "آسف ، أنت فقط في القائمة وحاول حذف قيد الاستخدام من قبل العملاء المدرجة أدناه. من أجل حذف من القائمة أولا ستحتاج لتعيين العملاء إلى القوائم الأخرى. انقر على اسم العميل إلى أن تحرير حساب الفرد ، أو تعيين جميع الحسابات إلى قائمة مختلفة باستخدام القائمة المنسدلة أدناه."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "آسف ، واحدة من المواضيع أنت فقط المعوقين ، تستخدم حاليا من قبل حسابات العميل التالية. بغية تعطيل موضوع أنت بحاجة أولا لتعيين كل عميل لموضوع آخر. انقر على اسم العميل إلى أن تحرير حساب الفرد ، أو تعيين جميع الحسابات إلى موضوع باستخدام القائمة المنسدلة أدناه."; +$LANG["notify_edit_email_fields_link"] = "انقر هنا لتحديد الحقول التي تشكل حقول البريد الإلكتروني ، حتى تتمكن من استهدافهم في قوالب البريد الإلكتروني الخاص بك."; +$LANG["notify_edit_field_new_field"] = "هذا هو حقل جديد. سوف تحتاج إلى تحديث الصفحة الرئيسية قبل أن يتمكن من تحرير كامل هذا المجال."; +$LANG["notify_edit_option_list_after_save"] = "يجب تحديد خيار قائمة ثم حفظ التغييرات قبل أن يتمكن من تحريره."; +$LANG["notify_email_field_config_deleted"] = "تكوين البريد الإلكتروني قد تم حذفه."; +$LANG["notify_email_fields_not_updated"] = "آسف ، لم نتمكن من تحديث الحقول البريد الإلكتروني."; +$LANG["notify_email_fields_updated"] = "الحقول البريد الالكتروني قد تم تحديثها."; +$LANG["notify_email_not_sent"] = "آسف ، لا يمكن أن يتم إرسال البريد الإلكتروني. الرجاء الاتصال بمسؤول الموقع على العنوان المبين أدناه."; +$LANG["notify_email_not_sent_c"] = "آسف ، لا يمكن أن ترسل البريد الإلكتروني :"; +$LANG["notify_email_sent"] = "البريد الالكتروني (ق) تم إرسالها."; +$LANG["notify_email_template_deleted"] = "في قالب البريد الإلكتروني قد تم حذفه."; +$LANG["notify_email_template_updated"] = "في قالب البريد الإلكتروني تم تحديثه."; +$LANG["notify_enabled_module_list_updated"] = "قائمة وحدات تمكين تم تحديثه."; +$LANG["notify_error_saving_fields"] = "كان هناك خطأ إنقاذ الحقول."; +$LANG["notify_field_changes_saved"] = "تم حفظ التغييرات إلى الحقل الخاص بك (ق)."; +$LANG["notify_field_options_smart_filled"] = "وقد خيارات الحقل الخاص الذكية شغلها."; +$LANG["notify_field_selected"] = "الميدان تم اختيارها. اضغط هنا للعودة إلى القائمة الرئيسية للحقل."; +$LANG["notify_field_updated"] = "هذا الحقل قد تم تحديثه."; +$LANG["notify_file_not_uploaded"] = "ويمكن أن الملف لا يمكن تحميلها."; +$LANG["notify_file_uploaded"] = "الملف تم تحميلها بنجاح."; +$LANG["notify_filters_not_updated"] = "كان هناك خطأ استكمال هذا العميل تقديم مرشحات."; +$LANG["notify_filters_updated"] = "تقديم المرشحات قد تم تحديثها لهذا العميل."; +$LANG["notify_folder_correct_permissions"] = "هذا المجلد لديه الأذونات الصحيحة."; +$LANG["notify_folder_url_match"] = "المجلد ويبدو أن عنوان المباراة بشكل صحيح."; +$LANG["notify_folder_url_no_access"] = "هذا الاختبار لا يمكن أن يؤديها منذ [فب] غير قادر على الوصول إلى هذا العنوان. عادة ما يكون هذا بسبب رابط يتم بكلمة مع ملف. هتكس."; +$LANG["notify_folder_url_no_match"] = "هذا المجلد ، عنوان الجمع لا يبدو أن هناك مباراة."; +$LANG["notify_folder_url_unknown_error"] = "حدث خطأ غير معروف. يمكنك اختبار ذلك يدويا عن طريق تحميل ملف إلى هذا المجلد عن طريق بروتوكول نقل الملفات ، ثم تحاول الوصول إليه على العنوان الذي قمت الموفر."; +$LANG["notify_form_access_type_email_info"] = "وقد شكل هذا النوع وصول المسؤول ، لذلك لا يوجد عملاء الوصول إليها وغير مدرجة في القائمة المنسدلة أدناه."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "آسف ، وهو شكل مع أن معرف غير موجود."; +$LANG["notify_form_field_not_added"] = "ويمكن حقل النموذج '{\$fieldname}'لا يمكن إضافة."; +$LANG["notify_form_field_options_updated"] = "شكل خيارات الحقل قد تم تحديثها."; +$LANG["notify_form_field_removed"] = "مجال إزالة النموذج بنجاح."; +$LANG["notify_form_fields_removed"] = "حقول النموذج تمت بنجاح إزالة."; +$LANG["notify_form_not_updated_notify_admin"] = "النموذج الخاص بك لا يمكن ان يتم تحديثه. الرجاء الاتصال بمسؤول الموقع لتقرير هذه المشكلة."; +$LANG["notify_form_settings_updated"] = "إعدادات النموذج قد تم تحديثها بنجاح."; +$LANG["notify_form_submission_updated"] = "تقديم النموذج قد تم تحديثه."; +$LANG["notify_form_tabs_updated"] = "التبويبات قد تم تحديثها."; +$LANG["notify_form_updated"] = "النموذج قد تم تحديثها بنجاح."; +$LANG["notify_form_views_updated"] = "وقد تم تحديث عدد النموذج."; +$LANG["notify_install_invalid_db_info"] = "آسف ، لأننا لم نتمكن من الاتصال بقاعدة البيانات باستخدام المعلومات التي قمت بتوفيرها. رسالة الخطأ في قاعدة بيانات عاد هو : {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "تم إنشاء النموذج الخاص بك! يمكنك تكوين النموذج الخاص بك من خلال هذه علامات التبويب."; +$LANG["notify_invalid_account_information_in_sessions"] = "معلومات الحساب المخزنة في دورات غير صالحة. يرجى تسجيل الدخول مرة أخرى أدناه."; +$LANG["notify_invalid_license_key"] = "آسف ، لا يبدو أن مفتاح ترخيص ساري المفعول. الرجاء محاولة الدخول إليها مرة أخرى."; +$LANG["notify_invalid_permissions"] = "ليس لديك أذونات لدخول هذه الصفحة. كنت قد تم تسجيل الخروج."; +$LANG["notify_invalid_search_dates"] = "الرجاء استخدام datepicker لإدخال تاريخ صالح أو التواريخ."; +$LANG["notify_invalid_upload_folder"] = "المجلد إيداع إما غير صالح أو غير قابل للكتابة."; +$LANG["notify_lang_list_updated"] = "وتتوفر واجهة اللغة تم تحديث قائمة."; +$LANG["notify_login_info_emailed"] = "تسجيل الدخول الخاص بك المعلومات قد اليك بالبريد الالكتروني."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "عفوا ، تم بالفعل تثبيت هذه الوحدة!"; +$LANG["notify_module_installed"] = "وحدة تم تركيبها. انقر هنا لتحديد وحدة."; +$LANG["notify_module_list_updated"] = "قائمة الوحدة قد تم تحديثه."; +$LANG["notify_module_uninstalled"] = "ولقد تم تثبيت وحدة نمطية."; +$LANG["notify_module_updated"] = "وقد تم تحديث وحدة {\$module} إلى {\$version} انقر هنا لاختيار وحدة ."; +$LANG["notify_multi_field_selected"] = "الميدان تم اختيارها. اضغط هنا لعرض وتحرير خيارات الحقل."; +$LANG["notify_multi_field_updated"] = "هذا الحقل قد تم تحديثه. سوف تكون قادرة على تكوين خيارات الحقل بعد إعداد النموذج."; +$LANG["notify_multiple_fields_found"] = "عناصر متعددة وعثر مع هذا الحقل اسم ({\$field_name}). هذا يمكن أن يحدث لو كان لديك صفحة تحتوي على أكثر من شكل واحد أو إذا كنت غير قصد اسم واحد من النماذج نفس آخر. الرجاء اختيار واحدة تريد من القائمة أدناه."; +$LANG["notify_new_default_view_created"] = "وقد تم إنشاء عرض جديد افتراضي ، يحتوي على جميع حقول النموذج الخاص بك."; +$LANG["notify_new_submission_created"] = "لقد تم إنشاء الطلب. يمكنك تحريره أدناه."; +$LANG["notify_no_account_id_in_sessions"] = "لا اسم المستخدم حساب المستخدم تم العثور عليها في الدورات. يرجى تسجيل الدخول مرة أخرى أدناه."; +$LANG["notify_no_api_installed"] = "ليس لديك و يقدم المعهد تثبيت"; +$LANG["notify_no_client_permissions"] = "لا توجد إعدادات متاحة للعدل."; +$LANG["notify_no_email_template_selected"] = "الرجاء اختيار قالب البريد الإلكتروني."; +$LANG["notify_no_emails_defined"] = "لا رسائل البريد الإلكتروني تم تحديدها لهذا النموذج. لإضافة واحدة جديدة ، انقر فوق الزر أدناه."; +$LANG["notify_no_field_settings"] = "هذا النوع الحقل لا يحتوي على أية إعدادات إضافية."; +$LANG["notify_no_fields_in_tab"] = "هذا التبويب لا يحتوي على أي المجالات."; +$LANG["notify_no_option_lists"] = "هناك أي خيار قوائم محددة. انقر فوق الزر أدناه لإنشاء واحدة جديدة."; +$LANG["notify_no_test_submission"] = "شكل أدوات لم تتلق تجربة ناجحة لتقديمها بعد."; +$LANG["notify_no_user_email_fields_configured"] = "ملاحظة : إذا كنت ترغب في إرسال بريد الكتروني إلى أي عنوان بريد إلكتروني التي تم تضمينها في الشكل ، أنت بحاجة أولا لتكوين شكل حقول البريد الإلكتروني."; +$LANG["notify_no_views"] = "النموذج الخاص بك ليس لديها أي عدد إعداد! وسوف تحتاج واحد على الأقل من أجل مشاهدة لإدارة البيانات النموذج الخاص بك."; +$LANG["notify_no_views_assigned_to_client_form"] = "يبدو أن حساب المستخدم الخاص بك لم يتم تعيين أي مشاهدات شكل من الأشكال ، حتى أنك لن تكون قادرا على رؤية أي بيانات. الرجاء الاتصال بمسؤول لمزيد من المساعدة."; +$LANG["notify_no_views_defined"] = "ليس لديك أي عدد محدد. فلن تكون قادرا على عرض بيانات هذا النموذج ما لم يتم إنشاء واحدة على الأقل عرض. انقر فوق الزر أدناه لإنشاء عرض افتراضي."; +$LANG["notify_option_list_deleted"] = "تم حذف قائمة الخيار."; +$LANG["notify_option_list_updated"] = "تم تحديث قائمة الخيارات."; +$LANG["notify_public_form_omit_list_updated"] = "العميل بحذف قائمة لهذا النموذج قد تم تحديثه."; +$LANG["notify_public_view_omit_list_updated"] = "العميل بحذف قائمة لهذا الملف قد تم تحديثها."; +$LANG["notify_required_admin_pages"] = "في الصفحات التالية مطلوبة في القائمة المسؤول : {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "آسف ، لم يكن هناك أي نشاط لبعض الوقت لذلك كان علينا تسجيل خروجك. يرجى تسجيل الدخول مرة أخرى أدناه."; +$LANG["notify_setup_options_updated"] = "خيارات الإعداد قد تم تحديثها."; +$LANG["notify_smart_fill_field_not_found"] = "لم نتمكن من العثور على هذا الحقل مع اسم ({\$field_name}) في شكل (ليالي المحدد. يمكنك إما يدويا تعيين نوع الحقل أدناه ، أو انقر على زر تحرير اقفز الى هذا الميدان في وقت لاحق."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "ملف (ق) تم تحميلها بنجاح. محاولة الضغط على الزر لملء الذكية حاول مرة أخرى. إذا فشلت هذه الخطوة ، وسوف تحتاج إلى تخطي هذه الخطوة وتكوين حقول النموذج manally في وقت لاحق."; +$LANG["notify_smart_fill_submitted"] = "النموذج الذي تم تقديمه. اعتمادا على حجم النموذج الخاص بك وعدد من الخيارات الميدان ، وهذا قد يستغرق بعض الوقت."; +$LANG["notify_smart_fill_upload_fields_fail"] = "آسف ، واحد أو أكثر من الملفات التي قمت بإدخالها لا يمكن تحميلها. سوف تحتاج إلى تخطي هذه الخطوة وتكوين الحقول يدويا."; +$LANG["notify_submission_and_files_deleted"] = "وتقديم أي ملف (ق) المرتبطة به حذفت بنجاح."; +$LANG["notify_submission_copied"] = "تم نسخ التقديم."; +$LANG["notify_submission_copied_edit"] = "تم نسخ التقديم. يمكنك تحريره أدناه."; +$LANG["notify_submission_deleted"] = "تقديم حذفت بنجاح."; +$LANG["notify_submission_deleted_with_problems"] = "تقديم حذفت ، ولكن المشاكل التالية ووجهت عند محاولة حذف الملف التالي (ق) :"; +$LANG["notify_submission_id_not_found"] = "معرف لم يتم العثور على تقديمها."; +$LANG["notify_submission_not_updated"] = "ويمكن تقديم لم يتم تحديثه."; +$LANG["notify_submissions_and_files_deleted"] = "التقديمات وأي ملف (ق) يرتبط بهم حذفت بنجاح."; +$LANG["notify_submissions_copied"] = " تم نسخ {\$num_submissions} التقديمات."; +$LANG["notify_submissions_deleted"] = "التقديمات حذفت بنجاح."; +$LANG["notify_submissions_deleted_with_problems"] = "التقديمات تم حذفها ، ولكن المشاكل التالية ووجهت عند محاولة حذف الملف التالي (ق) :"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "قد أسفر الاختبار لا يمكن إرسال البريد الإلكتروني."; +$LANG["notify_theme_cache_folder_not_writable"] = "هذا الموضوع في مجلد التخزين المؤقت غير قابل للكتابة. من أجل تمكين هذا الموضوع ، {\$folder} مجلد يحتاج الى قراءة كاملة أذونات الكتابة."; +$LANG["notify_theme_list_updated"] = "قائمة الموضوع قد تم تحديثه."; +$LANG["notify_themes_settings_updated"] = "إعدادات الموضوع قد تم تحديثها."; +$LANG["notify_view_deleted"] = "عرض قد تم حذفه."; +$LANG["notify_view_group_deleted"] = "تم حذف المجموعة عرض."; +$LANG["notify_view_missing_columns"] = "عفوا! عذرا ، لم يتم تعيين هذه الصورة بالكامل حتى الآن."; +$LANG["notify_view_missing_columns_admin_fix"] = "انقر هنا لتحديد الحقول التي يجب أن تظهر كأعمدة على هذه الصفحة."; +$LANG["notify_view_updated"] = "عرض قد تم تحديثه."; +$LANG["notify_your_email_sent"] = "البريد الإلكتروني الخاص بك قد تم إرسالها بنجاح."; +$LANG["phrase_100_per_page"] = "100 في الصفحة"; +$LANG["phrase_10_per_page"] = "10 لكل صفحة"; +$LANG["phrase_15_per_page"] = "15 لكل صفحة"; +$LANG["phrase_1_direct"] = "1. المباشرة"; +$LANG["phrase_1char"] = "1 شار"; +$LANG["phrase_20_per_page"] = "20 لكل صفحة"; +$LANG["phrase_25_per_page"] = "25 لكل صفحة"; +$LANG["phrase_2_code"] = "2. رمز"; +$LANG["phrase_2_columns"] = "2 أعمدة"; +$LANG["phrase_2chars"] = "2 حرف"; +$LANG["phrase_3_columns"] = "3 أعمدة"; +$LANG["phrase_4_columns"] = "4 أعمدة"; +$LANG["phrase_50_per_page"] = "في الصفحة 50"; +$LANG["phrase_accepting_submissions"] = "(قبول الطلبات)"; +$LANG["phrase_access_admin_account_c"] = "يمكنك الوصول إلى إدارة الحساب هنا :"; +$LANG["phrase_access_type"] = "الوصول إلى نوع"; +$LANG["phrase_account_info"] = "معلومات الحساب"; +$LANG["phrase_account_settings"] = "إعدادات الحساب"; +$LANG["phrase_action_needed"] = "الإجراءات المطلوبة"; +$LANG["phrase_add_client"] = "إضافة عميل"; +$LANG["phrase_add_client_menu"] = "إضافة عميل القائمة"; +$LANG["phrase_add_default_settings_rightarrow"] = "إضافة الإعدادات الافتراضية »"; +$LANG["phrase_add_field"] = "إضافة الميدانية"; +$LANG["phrase_add_fields"] = "إضافة الحقول"; +$LANG["phrase_add_fields_rightarrow"] = "إضافة حقل (ق) »"; +$LANG["phrase_add_form"] = "إضافة نموذج"; +$LANG["phrase_add_form_external"] = "إضافة نموذج -- خارجي"; +$LANG["phrase_add_form_internal"] = "إضافة نموذج -- الداخلية"; +$LANG["phrase_add_new_group_rightarrow"] = "إضافة مجموعة جديدة »"; +$LANG["phrase_add_num_rows"] = "إضافة {\$number} عدد صف"; +$LANG["phrase_add_row"] = "إضافة صف »"; +$LANG["phrase_add_submission_button"] = "إضافة زر التقديم"; +$LANG["phrase_add_view_rightarrow"] = "إضافة الصورة »"; +$LANG["phrase_adding_multi_page_form"] = "مضيفا متعدد شكل الصفحة مع بمقاييس المعهد"; +$LANG["phrase_adding_single_page_form"] = "واضاف وحيد شكل صفحة مع بمقاييس المعهد"; +$LANG["phrase_admin_menu"] = "مسؤول القائمة"; +$LANG["phrase_admin_only"] = "مسؤول فقط"; +$LANG["phrase_admin_panel"] = "مشرف الفريق"; +$LANG["phrase_administrator_theme"] = "مسؤول الموضوع"; +$LANG["phrase_advanced_settings_rightarrow"] = "الإعدادات المتقدمة »"; +$LANG["phrase_all_X_results_selected"] = "جميع {\$numresults} نتائج مختارة"; +$LANG["phrase_all_clients"] = "كافة العملاء"; +$LANG["phrase_all_clients_except_c"] = "جميع العملاء ما عدا :"; +$LANG["phrase_all_clients_have_access"] = "(لكافة العملاء من الوصول)"; +$LANG["phrase_all_fields"] = "جميع المجالات"; +$LANG["phrase_all_fields_displayed"] = "يتم عرض جميع المجالات"; +$LANG["phrase_all_statuses"] = "جميع الأوضاع"; +$LANG["phrase_all_submissions"] = "كل التقديمات"; +$LANG["phrase_allow_fields_edited"] = "تسمح الحقول ليتم تحريره"; +$LANG["phrase_alphanumeric"] = "أبجدية (AZ ، 0-9)"; +$LANG["phrase_api_version"] = "API الإصدار"; +$LANG["phrase_apply_timezone_offset"] = "تطبيق إزاحة المنطقة الزمنية"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "تعيين جميع سرد حسابات العملاء ل {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "تعيين جميع سرد حسابات العملاء ل {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "في نهاية"; +$LANG["phrase_at_start"] = "في البدء"; +$LANG["phrase_author_link"] = "ربط المؤلف"; +$LANG["phrase_auto_disable_account"] = "حساب تعطيل التلقائي بعد فشل محاولات تسجيل الدخول #"; +$LANG["phrase_auto_size"] = "السيارات ذات الحجم"; +$LANG["phrase_available_clients"] = "متاح للعملاء"; +$LANG["phrase_available_fields"] = "الحقول المتاحة"; +$LANG["phrase_available_option_lists"] = "قوائم خيار متاح"; +$LANG["phrase_available_swatches"] = "متاح الحوامل"; +$LANG["phrase_available_swatches_c"] = "الحوامل المتاحة :"; +$LANG["phrase_available_tabs"] = "تتوفر علامات الجدولة"; +$LANG["phrase_available_views"] = "آراء المتوفرة"; +$LANG["phrase_awaiting_form_submission"] = "في انتظار تقديم النموذج."; +$LANG["phrase_back_to_field_list"] = "«عودة إلى قائمة الحقول"; +$LANG["phrase_back_to_search_results"] = "العودة إلى نتائج البحث"; +$LANG["phrase_base_view_on"] = "عرض على قاعدة..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "تغيير معلومات الدخول"; +$LANG["phrase_characters_limit_p"] = "أحرف الحد."; +$LANG["phrase_check_db_settings_try_again"] = "يرجى المزدوج تحقق من إعدادات قاعدة البيانات وانقر على زر متابعة مرة أخرى."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "الاختيار URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "تنظيف"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "واضح بحذف قائمة"; +$LANG["phrase_client_account_settings"] = "إعدادات حساب العميل"; +$LANG["phrase_client_field"] = "العميل الميدانية"; +$LANG["phrase_client_map_filters"] = "العميل خريطة مرشحات »"; +$LANG["phrase_client_may_edit"] = "العميل قد عدل"; +$LANG["phrase_client_menu"] = "العميل القائمة"; +$LANG["phrase_clients_can_access_form"] = "للعملاء الذين يمكنهم الوصول إلى النموذج"; +$LANG["phrase_clients_can_access_view"] = "للعملاء الذين يمكنهم الوصول إلى مشاهدة"; +$LANG["phrase_clients_cannot_access_form"] = "العملاء الذين لا يمكن الوصول إلى النموذج"; +$LANG["phrase_clients_cannot_access_view"] = "العملاء الذين لا يمكن الوصول إلى مشاهدة"; +$LANG["phrase_clients_may_edit"] = "عملاء قد عدل"; +$LANG["phrase_code_c"] = "رمز الخطأ :"; +$LANG["phrase_code_markup_field"] = "الرمز / توصيف الميدانية"; +$LANG["phrase_code_markup_type"] = "/ رمز توصيف نوع"; +$LANG["phrase_codes_c"] = "رموز خطأ :"; +$LANG["phrase_column_width"] = "عرض العمود"; +$LANG["phrase_company_name"] = "اسم الشركة"; +$LANG["phrase_configure_form_email_fields"] = "تكوين نموذج البريد الالكتروني الحقول"; +$LANG["phrase_confirm_folder_url_match"] = "تأكيد مجلد - رابط المباراة"; +$LANG["phrase_connect_rows"] = "ربط الصفوف"; +$LANG["phrase_copy_email_settings_from"] = "نسخة من إعدادات البريد الإلكتروني..."; +$LANG["phrase_copy_settings_from"] = "نسخة من إعدادات..."; +$LANG["phrase_core_fields"] = "الحقول الأساسية"; +$LANG["phrase_core_version"] = "النسخة الأساسية"; +$LANG["phrase_create_account"] = "إنشاء حساب"; +$LANG["phrase_create_admin_account"] = "إنشاء حساب مشرف"; +$LANG["phrase_create_config_file"] = "إنشاء ملف التكوين"; +$LANG["phrase_create_database_tables"] = "إنشاء جداول قاعدة البيانات"; +$LANG["phrase_create_default_view"] = "إنشاء العرض الافتراضي"; +$LANG["phrase_create_file"] = "إنشاء ملف"; +$LANG["phrase_create_group"] = "إنشاء مجموعة"; +$LANG["phrase_create_new_email"] = "إنشاء بريد إلكتروني جديد"; +$LANG["phrase_create_new_menu"] = "إنشاء قائمة جديدة"; +$LANG["phrase_create_new_option_list"] = "إنشاء قائمة جديدة الخيار"; +$LANG["phrase_create_new_option_list_group"] = "إنشاء مجموعة جديدة قائمة الخيار"; +$LANG["phrase_create_new_option_list_rightarrow"] = "إنشاء قائمة جديدة الخيار »"; +$LANG["phrase_create_new_view"] = "إنشاء عرض جديد"; +$LANG["phrase_create_new_view_group"] = "إنشاء مجموعة جديدة إستعراض"; +$LANG["phrase_custom_display_format"] = "عرض تنسيق مخصص"; +$LANG["phrase_custom_recipient"] = "مخصص مستلم"; +$LANG["phrase_custom_url"] = "العرف عنوان"; +$LANG["phrase_dark_blue"] = "الأزرق الداكن"; +$LANG["phrase_data_type"] = "نوع البيانات"; +$LANG["phrase_database_hostname"] = "قاعدة بيانات المضيف"; +$LANG["phrase_database_name"] = "اسم قاعدة البيانات"; +$LANG["phrase_database_password"] = "قاعدة بيانات كلمة المرور"; +$LANG["phrase_database_settings"] = "قاعدة بيانات إعدادات"; +$LANG["phrase_database_setup"] = "إعداد قاعدة بيانات"; +$LANG["phrase_database_table_prefix"] = "قاعدة بيانات الجدول البادئة"; +$LANG["phrase_database_username"] = "قاعدة بيانات المستخدم"; +$LANG["phrase_date_format"] = "تنسيق التاريخ"; +$LANG["phrase_db_column"] = "الديسيبل العمود"; +$LANG["phrase_db_setup_page_4"] = "4. إعداد قاعدة بيانات"; +$LANG["phrase_default_client_account_theme"] = "الافتراضي عميل حساب الموضوع"; +$LANG["phrase_default_date_field_search_value"] = "البحث الافتراضي قيمة حقل التاريخ"; +$LANG["phrase_default_language"] = "اللغة الافتراضية"; +$LANG["phrase_default_menu"] = "الافتراضية القائمة"; +$LANG["phrase_default_sessions_timeout"] = "تقصير مهلة الدورات"; +$LANG["phrase_default_sort_order"] = "ترتيب الفرز الافتراضي"; +$LANG["phrase_default_tab_label"] = "البيانات"; +$LANG["phrase_default_theme"] = "موضوع الافتراضية"; +$LANG["phrase_default_value"] = "القيمة الافتراضية"; +$LANG["phrase_default_values"] = "القيم الافتراضية"; +$LANG["phrase_default_values_new_submissions"] = "القيم الافتراضية لتقديم الطلبات الجديدة"; +$LANG["phrase_delete_field"] = "حذف حقل"; +$LANG["phrase_delete_form"] = "حذف النموذج"; +$LANG["phrase_delete_row"] = "حذف صف"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "حذف الملفات المقترنة عند حذف تقديم"; +$LANG["phrase_delete_view"] = "حذف الصورة"; +$LANG["phrase_disconnect_rows"] = "قطع الصفوف"; +$LANG["phrase_display_email"] = "عرض البريد الإلكتروني"; +$LANG["phrase_display_name"] = "عرض الاسم"; +$LANG["phrase_display_text"] = "عرض النص"; +$LANG["phrase_display_value"] = "عرض القيمة"; +$LANG["phrase_edit_admin_menu"] = "عدل الادارية القائمة"; +$LANG["phrase_edit_client"] = "عدل عميل"; +$LANG["phrase_edit_client_menu"] = "عدل قائمة العملاء"; +$LANG["phrase_edit_email_template"] = "تحرير قالب البريد الإلكتروني"; +$LANG["phrase_edit_field"] = "عدل الميدانية"; +$LANG["phrase_edit_field_c"] = "تحرير الميدانية :"; +$LANG["phrase_edit_form"] = "عدل نموذج"; +$LANG["phrase_edit_form_access_type_b"] = "[تحرير شكل نوع الوصول]"; +$LANG["phrase_edit_option_list"] = "تحرير قائمة المواصفات"; +$LANG["phrase_edit_submission"] = "عدل التقديم"; +$LANG["phrase_edit_submission_label"] = "تعديل تسمية وتقديم"; +$LANG["phrase_edit_view"] = "عدل مشاهدة"; +$LANG["phrase_email_format"] = "البريد الإلكتروني تنسيق"; +$LANG["phrase_email_settings"] = "إعدادات البريد الإلكتروني"; +$LANG["phrase_email_template"] = "قالب البريد الإلكتروني"; +$LANG["phrase_email_template_name"] = "البريد الإلكتروني اسم القالب"; +$LANG["phrase_error_learn_more"] = "معرفة المزيد عن هذا الخطأ."; +$LANG["phrase_error_text_intro"] = "يرجى تصحيح الخطأ التالي (ق) ويعيد :"; +$LANG["phrase_errors_learn_more"] = "انقر على رموز الخطأ لمعرفة المزيد."; +$LANG["phrase_event_trigger"] = "الحدث الزناد"; +$LANG["phrase_external_form"] = "نموذج خارجي"; +$LANG["phrase_external_form_info"] = "الخارجية نموذج معلومات"; +$LANG["phrase_external_your_own_form"] = "خارجي (نموذج الخاص بك)"; +$LANG["phrase_field_comments"] = "حقل تعليقات"; +$LANG["phrase_field_label"] = "تسمية الميدان"; +$LANG["phrase_field_options"] = "حقل الخيارات"; +$LANG["phrase_field_size"] = "حقل الحجم"; +$LANG["phrase_field_skipped"] = "تم تخطي الميدان"; +$LANG["phrase_field_specific_settings"] = "حقل الإعدادات الخاصة"; +$LANG["phrase_field_type"] = "نوع الحقل"; +$LANG["phrase_field_type_no_validation"] = "لا توجد قواعد التحقق من صحة المتاحة لهذا النوع من الميدان."; +$LANG["phrase_field_types"] = "أنواع الميدان"; +$LANG["phrase_field_value"] = "الحقل قيمة"; +$LANG["phrase_field_values_to_display_values"] = "حقل القيم »عرض قيم"; +$LANG["phrase_final_touches_page_6"] = "6. اللمسات الأخيرة"; +$LANG["phrase_finalize_form"] = "وضع اللمسات الأخيرة نموذج"; +$LANG["phrase_first_name"] = "الاسم الأول"; +$LANG["phrase_footer_text"] = "تذييل النص"; +$LANG["phrase_for_any_form_submission"] = "لتقديم أي شكل من الأشكال"; +$LANG["phrase_for_view_submissions"] = "فقط لتقديم الطلبات في عرض :"; +$LANG["phrase_forgot_password"] = "نسيت كلمة السر؟"; +$LANG["phrase_form_already_selected"] = "شكل محددة مسبقا"; +$LANG["phrase_form_email_field_b_c"] = "[حقل نموذج البريد الالكتروني :"; +$LANG["phrase_form_email_field_configuration"] = "نموذج البريد الالكتروني الميدانية تكوين"; +$LANG["phrase_form_email_fields"] = "حقول نموذج البريد الإلكتروني"; +$LANG["phrase_form_field"] = "شكل الحقل"; +$LANG["phrase_form_field_contents"] = "محتويات حقل النموذج"; +$LANG["phrase_form_field_name"] = "شكل حقل الاسم"; +$LANG["phrase_form_field_placeholders"] = "النائبة شكل الحقل"; +$LANG["phrase_form_fields"] = "شكل الحقول"; +$LANG["phrase_form_info"] = "استمارة المعلومات"; +$LANG["phrase_form_info_2"] = "2. استمارة المعلومات"; +$LANG["phrase_form_list"] = "نموذج قائمة"; +$LANG["phrase_form_name"] = "اسم النموذج"; +$LANG["phrase_form_page"] = "شكل الصفحة"; +$LANG["phrase_form_placeholders"] = "النائبة نموذج"; +$LANG["phrase_form_submission"] = "تقديم النموذج"; +$LANG["phrase_form_submissions"] = "نموذج الطلبات"; +$LANG["phrase_form_type"] = "شكل نوع"; +$LANG["phrase_form_url"] = "شكل عنوان"; +$LANG["phrase_form_urls"] = "شكل عناوين URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "النماذج المخصصة إلى أي حساب"; +$LANG["phrase_forms_page_default_message"] = "أشكال رسالة الصفحة الافتراضية"; +$LANG["phrase_ft_installation"] = "شكل أدوات التثبيت النصي"; +$LANG["phrase_full_width"] = "العرض الكامل"; +$LANG["phrase_getting_started"] = "بدء"; +$LANG["phrase_global_placeholders"] = "النائبة العالمية"; +$LANG["phrase_group_name"] = "اسم المجموعة"; +$LANG["phrase_group_options_q"] = "خيارات المجموعة؟"; +$LANG["phrase_group_rows"] = "مجموعة الصفوف"; +$LANG["phrase_have_fun"] = "وقد متعة!"; +$LANG["phrase_highlight_colour"] = "تسليط الضوء على اللون"; +$LANG["phrase_html_email"] = "أتش تي أم أل البريد الالكتروني"; +$LANG["phrase_html_template"] = "أتش تي أم أل قالب"; +$LANG["phrase_images_media"] = "صور / وسائل الإعلام"; +$LANG["phrase_import_option_list_rightarrow"] = "استيراد الخيار قائمة »"; +$LANG["phrase_input_length"] = "إدخال المدة"; +$LANG["phrase_installation_help"] = "تعليمات التثبيت"; +$LANG["phrase_internal_form"] = "نموذج داخلي"; +$LANG["phrase_ip_address"] = "العنوان الملكية الفكرية"; +$LANG["phrase_is_multi_page_form_q"] = "هذا هو نموذج متعدد الصفحات؟"; +$LANG["phrase_label_response_placeholders"] = "التسمية / استجابة العناصر النائبة"; +$LANG["phrase_large_300px"] = "كبير (300px)"; +$LANG["phrase_large_400px"] = "كبير (400px)"; +$LANG["phrase_last_7_days"] = "آخر 7 أيام"; +$LANG["phrase_last_logged_in"] = "وفي تسجيل آخر"; +$LANG["phrase_last_modified"] = "آخر تعديل"; +$LANG["phrase_last_modified_date"] = "تاريخ آخر تعديل"; +$LANG["phrase_last_name"] = "اسم العائلة"; +$LANG["phrase_letters_only"] = "رسائل فقط"; +$LANG["phrase_light_brown"] = "ضوء براون"; +$LANG["phrase_limit_email_content"] = "الحد من محتوى البريد الإلكتروني لحقول في عرض"; +$LANG["phrase_loading_ellipsis"] = "تحميل..."; +$LANG["phrase_log_in"] = "سجل في"; +$LANG["phrase_login_as_user"] = "كما سجل في هذا المستخدم"; +$LANG["phrase_login_info"] = "معلومات الدخول"; +$LANG["phrase_login_page"] = "صفحة الدخول"; +$LANG["phrase_login_panel_c"] = "لوحة تسجيل الدخول :"; +$LANG["phrase_login_panel_leftarrows"] = "«لوحة تسجيل الدخول"; +$LANG["phrase_login_password"] = "ادخل كلمة المرور"; +$LANG["phrase_login_username"] = "اسم المستخدم"; +$LANG["phrase_logo_link_url"] = "شعار وصله رابط"; +$LANG["phrase_logout_url"] = "خروج رابط"; +$LANG["phrase_main_nav"] = "التنقل الرئيسية"; +$LANG["phrase_main_settings"] = "الضبط الرئيسي"; +$LANG["phrase_manage_client"] = "إدارة العملاء"; +$LANG["phrase_manage_client_omit_list"] = "إدارة قائمة العملاء تجاهل"; +$LANG["phrase_max_file_size"] = "أقصى حجم الملف"; +$LANG["phrase_max_length"] = "أقصى طول"; +$LANG["phrase_max_length_words_chars"] = "-- الحد الأقصى لطول (الكلمات / حرف)"; +$LANG["phrase_may_add_submissions"] = "قد تضيف التقديمات"; +$LANG["phrase_may_copy_submissions"] = "يمكن نسخ التقديمات"; +$LANG["phrase_may_delete_submissions"] = "قد حذف التقديمات"; +$LANG["phrase_medium_150px"] = "المتوسط ​​(150px)"; +$LANG["phrase_medium_200px"] = "المتوسط ​​(200px)"; +$LANG["phrase_menu_name"] = "اسم القائمة"; +$LANG["phrase_menu_type"] = "نوع القائمة"; +$LANG["phrase_min_password_length"] = "الحد الأدنى لطول كلمة السر"; +$LANG["phrase_module_description"] = "وصف وحدة"; +$LANG["phrase_module_info"] = "وحدة المعلومات"; +$LANG["phrase_module_nav"] = "وحدة التنقل"; +$LANG["phrase_month_to_date"] = "الشهر حتى الآن"; +$LANG["phrase_multi_select"] = "متعدد حدد"; +$LANG["phrase_multi_select_dropdown"] = "متعدد المنسدلة حدد"; +$LANG["phrase_multiple_fields_found"] = "اكتشاف حقول متعددة!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "الاسم / الاسم الأخير"; +$LANG["phrase_new_blank_email"] = "البريد الالكتروني الجديد على بياض"; +$LANG["phrase_new_blank_option_list"] = "قائمة الخيار الجديد فارغ"; +$LANG["phrase_new_blank_view"] = "عرض جديد فارغ"; +$LANG["phrase_new_ft_installation"] = "نموذج جديد أدوات التثبيت"; +$LANG["phrase_new_option_list"] = "قائمة الخيار الجديد"; +$LANG["phrase_new_password"] = "كلمة السر الجديدة"; +$LANG["phrase_new_password_reenter"] = "كلمة السر الجديدة (الرجاء إعادة إدخال)"; +$LANG["phrase_new_view"] = "عرض جديد"; +$LANG["phrase_new_view_all_fields"] = "جديد -- مشاهدة جميع الحقول"; +$LANG["phrase_next_client"] = "العميل القادم »"; +$LANG["phrase_next_field"] = "الميدان القادم »"; +$LANG["phrase_next_form"] = "الشكل التالي »"; +$LANG["phrase_next_view"] = "عرض القادم »"; +$LANG["phrase_no_clients"] = "لم عملاء"; +$LANG["phrase_no_limit"] = "أي حد"; +$LANG["phrase_no_offset"] = "لا يعوض"; +$LANG["phrase_no_option_lists_available"] = "أي خيارات القوائم المتاحة."; +$LANG["phrase_no_views"] = "لا المشاهدات"; +$LANG["phrase_no_views_with_filters_p"] = "(لا يوجد عدد محدد مع الفلاتر)"; +$LANG["phrase_none_not_recommended"] = "لا شيء (غير مستحسن)"; +$LANG["phrase_not_assigned_to_option_list"] = "لم يتم تعيين هذا الحقل إلى قائمة الخيار."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "لا تكافؤ"; +$LANG["phrase_not_found"] = "غير موجود!"; +$LANG["phrase_not_like"] = "لا تحب"; +$LANG["phrase_not_visible_to_client"] = "(غير مرئي للعميل)"; +$LANG["phrase_num_clients_per_page"] = "ارقام عملاء لكل صفحة"; +$LANG["phrase_num_emails_per_page"] = "ارقام رسائل البريد الإلكتروني لكل صفحة"; +$LANG["phrase_num_fields"] = "عدد الحقول"; +$LANG["phrase_num_forms_per_page"] = "ارقام نماذج لكل صفحة"; +$LANG["phrase_num_menus_per_page"] = "ارقام القوائم لكل صفحة"; +$LANG["phrase_num_modules_per_page"] = "ارقام وحدات لكل صفحة"; +$LANG["phrase_num_option_lists_per_page"] = "قوائم خيار الأسطوانات في الصفحة الواحدة"; +$LANG["phrase_num_options"] = "خيارات الأسطوانات"; +$LANG["phrase_num_rows"] = "صفوف الأسطوانات"; +$LANG["phrase_numbers_only"] = "أرقام فقط"; +$LANG["phrase_often_localhost"] = "(في كثير من الأحيان "مضيف محلي")"; +$LANG["phrase_on_form_submission"] = "على استمارة التقديم"; +$LANG["phrase_one_char_number"] = "على الأقل حرف واحد هو رقم (0-9)"; +$LANG["phrase_one_char_upper"] = "حرف واحد على الأقل هو كبيرة"; +$LANG["phrase_one_special_char"] = "واحد على الأقل من {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(فقط للعملاء الحصول محددة)"; +$LANG["phrase_open_form_in_dialog"] = "فتح النموذج في إطار الحوار"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "فتح هذا النموذج في نافذة جديدة التبويب /"; +$LANG["phrase_option_list"] = "الخيار قائمة"; +$LANG["phrase_option_list_name"] = "الخيار اسم قائمة"; +$LANG["phrase_option_list_or_contents"] = "قائمة الخيار / المحتويات"; +$LANG["phrase_option_lists"] = "الخيار قوائم"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "صفحة العناوين"; +$LANG["phrase_pass_on"] = "تمرير"; +$LANG["phrase_password_min"] = "ويجب أن يكون على الأقل {\$length} حرفا> ب."; +$LANG["phrase_password_one_number"] = "ويجب أن تحتوي على ما لا يقل عن رقم واحد (0-9)."; +$LANG["phrase_password_one_uppercase"] = "ويجب أن تحتوي على ما لا يقل عن رسالة واحدة كبيرة."; +$LANG["phrase_password_requirements_c"] = "متطلبات كلمة المرور :"; +$LANG["phrase_password_reset"] = "إعادة تعيين كلمة المرور"; +$LANG["phrase_password_special_char"] = "ويجب أن تحتوي على واحد على الأقل من الأحرف التالية : {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "أذونات / إعدادات أخرى"; +$LANG["phrase_permitted_file_types"] = "أنواع الملفات المسموح بها"; +$LANG["phrase_phone_number"] = "رقم الهاتف"; +$LANG["phrase_phone_number_format"] = "رقم الهاتف تنسيق"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini الحد الأقصى المسموح تحميل حجم الملف :"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "اصدار البي اتش بي"; +$LANG["phrase_please_confirm"] = "يرجى تأكيد"; +$LANG["phrase_please_enter_license_key"] = "الرجاء إدخال مفتاح الترخيص الخاص بك"; +$LANG["phrase_please_select"] = "من فضلك حدد"; +$LANG["phrase_please_select_form"] = "الرجاء اختيار نموذج"; +$LANG["phrase_prev_client"] = "«السابق العميل"; +$LANG["phrase_prev_form"] = "«السابق شكل"; +$LANG["phrase_prevent_password_reuse"] = "منع إعادة استخدام كلمات السر الماضي #"; +$LANG["phrase_previous_field"] = "«الحقل السابق"; +$LANG["phrase_previous_page"] = "الصفحة السابقة"; +$LANG["phrase_previous_view"] = "«السابقة الشخصي"; +$LANG["phrase_program_name"] = "اسم البرنامج"; +$LANG["phrase_public_form_omit_list"] = "نموذج العامة بحذف قائمة"; +$LANG["phrase_public_view_omit_list"] = "الجمهور مشاهدة بحذف قائمة"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "كانت هناك مشكلة مع الاستعلام التالي :"; +$LANG["phrase_radio_buttons"] = "أزرار الراديو"; +$LANG["phrase_random_form_submission"] = "عشوائي لتقديم النموذج"; +$LANG["phrase_re_enter_password"] = "إعادة إدخال كلمة السر"; +$LANG["phrase_recipient_type"] = "نوع المستلم"; +$LANG["phrase_redirect_url"] = "إعادة توجيه عنوان"; +$LANG["phrase_refresh_list"] = "تحديث قائمة"; +$LANG["phrase_refresh_module_list"] = "تحديث وحدة قائمة"; +$LANG["phrase_refresh_page"] = "تحديث الصفحة"; +$LANG["phrase_refresh_theme_list"] = "موضوع تحديث قائمة"; +$LANG["phrase_register_new_email"] = "تسجيل البريد الإلكتروني الجديد"; +$LANG["phrase_remaining_characters"] = "الأحرف المتبقية"; +$LANG["phrase_remaining_words"] = "تبقى الكلمات"; +$LANG["phrase_remove_tabs"] = "إزالة علامات الجدولة"; +$LANG["phrase_required_password_chars"] = "أحرف كلمة المرور المطلوبة"; +$LANG["phrase_resend_test_submission"] = "إرسال اختبار التقديم"; +$LANG["phrase_return_form_list"] = "العودة إلى نموذج قائمة"; +$LANG["phrase_row_selected"] = "{\$num_rows} الصف المحدد"; +$LANG["phrase_rows_selected"] = "{\$num_rows} الصفوف المحددة"; +$LANG["phrase_sample_data"] = "نموذج البيانات"; +$LANG["phrase_save_changes"] = "حفظ التغييرات"; +$LANG["phrase_search_keyword"] = "كلمات البحث"; +$LANG["phrase_security_settings"] = "إعدادات الأمان"; +$LANG["phrase_select_all"] = "حدد الكل"; +$LANG["phrase_select_all_X_results"] = "حدد كافة) {\$numresults} نتائج"; +$LANG["phrase_select_all_on_page"] = "حدد كل شيء على الصفحة"; +$LANG["phrase_select_date"] = "حدد تاريخ"; +$LANG["phrase_select_field"] = "حدد حقل"; +$LANG["phrase_select_swatch"] = "حدد حامل"; +$LANG["phrase_selected_clients"] = "عملاء مختارة"; +$LANG["phrase_selected_views"] = "آراء مختارة"; +$LANG["phrase_send_email"] = "ارسال بريد الكتروني"; +$LANG["phrase_send_test_email"] = "اختبار ارسال البريد الالكتروني"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "دورات مهلة"; +$LANG["phrase_setting_value"] = "تحديد قيمة"; +$LANG["phrase_setup_options"] = "خيارات الإعداد"; +$LANG["phrase_show_all"] = "وتظهر جميع"; +$LANG["phrase_show_form"] = "عرض نموذج"; +$LANG["phrase_size_large"] = "كبير (نص)"; +$LANG["phrase_size_medium"] = "المتوسطة (<= 256 حرف)"; +$LANG["phrase_size_small"] = "الصغيرة (<= 20 حرف)"; +$LANG["phrase_size_tiny"] = "الصغير (<= 5 حرف)"; +$LANG["phrase_size_very_large"] = "كبيرة جدا (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "تخطي الميدانية"; +$LANG["phrase_skip_step"] = "تخطي الخطوة"; +$LANG["phrase_small_100px"] = "الصغيرة (100px)"; +$LANG["phrase_small_80px"] = "الصغيرة (80px)"; +$LANG["phrase_smart_fill"] = "املأ الذكية"; +$LANG["phrase_smart_fill_fields_from_c"] = "املأ الحقول الذكية من :"; +$LANG["phrase_smart_fill_user_documentation"] = "املأ المستخدم الوثائق الذكية »"; +$LANG["phrase_sort_as"] = "أما النوع"; +$LANG["phrase_special_fields"] = "خاص الحقول"; +$LANG["phrase_standard_fields"] = "معيار الحقول"; +$LANG["phrase_standard_filters"] = "معيار مرشحات »"; +$LANG["phrase_step_1"] = "الخطوة 1"; +$LANG["phrase_step_2"] = "الخطوة 2"; +$LANG["phrase_step_3"] = "الخطوة 3"; +$LANG["phrase_step_4"] = "الخطوة 4"; +$LANG["phrase_step_5"] = "الخطوة 5"; +$LANG["phrase_step_6"] = "الخطوة 6"; +$LANG["phrase_strip_tags_in_submissions"] = "الشريط السمات في شكل عروض"; +$LANG["phrase_subject_line"] = "موضوع الخط"; +$LANG["phrase_submission_date"] = "تقديم موعد"; +$LANG["phrase_submission_id"] = "تقديم اسم المستخدم"; +$LANG["phrase_submission_made"] = "الطلب المقدم : {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "تقديم نوع"; +$LANG["phrase_submissions_per_page"] = "المقدمة في الصفحة"; +$LANG["phrase_system_check"] = "نظام التحقق"; +$LANG["phrase_system_fields_no_validation"] = "قد لا تضيف المصادقة على حقول النظام."; +$LANG["phrase_system_time_offset"] = "الوقت نظام الأوفست"; +$LANG["phrase_tab_label"] = "علامة التبويب"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "اختبار أذونات مجلد"; +$LANG["phrase_test_submission"] = "اختبار التقديم"; +$LANG["phrase_test_submission_3"] = "3. اختبار التقديم"; +$LANG["phrase_test_submission_received"] = "اختبار معلومات واردة"; +$LANG["phrase_text_and_html"] = "أتش تي أم أل النص &"; +$LANG["phrase_text_email"] = "نص البريد الالكتروني"; +$LANG["phrase_text_template"] = "نص قالب"; +$LANG["phrase_the_previous_month"] = "الشهر السابق"; +$LANG["phrase_theme_description"] = "موضوع الوصف"; +$LANG["phrase_theme_info"] = "موضوع معلومات"; +$LANG["phrase_tiny_30px"] = "صغيرة (30px)"; +$LANG["phrase_tiny_50px"] = "صغيرة (50px)"; +$LANG["phrase_total_results_c"] = "نتائج المجموع :"; +$LANG["phrase_type_c"] = "نوع خطأ :"; +$LANG["phrase_unselect_all"] = "إلغاء تحديد الكل"; +$LANG["phrase_update_accounts"] = "تحديث حسابات"; +$LANG["phrase_update_email_template"] = "تحديث قالب البريد الإلكتروني"; +$LANG["phrase_update_field"] = "آخر التطورات الميدانية"; +$LANG["phrase_update_order"] = "تحديث النظام"; +$LANG["phrase_update_view"] = "عرض التحديث"; +$LANG["phrase_upload_file"] = "إيداع ملف"; +$LANG["phrase_upload_files"] = "تحميل ملفات"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "تحميل مسار المجلد"; +$LANG["phrase_upload_folder_url"] = "رابط تحميل المجلد"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "استخدام القيمة الافتراضية؟"; +$LANG["phrase_used_by_num_form_fields"] = "التي يستخدمها # حقول النموذج"; +$LANG["phrase_uses_swatches"] = "يستخدم الحوامل"; +$LANG["phrase_valid_email"] = "صالح صديق"; +$LANG["phrase_validation_error"] = "خطأ التحقق من صحة"; +$LANG["phrase_validation_rule"] = "التحقق من صحة القاعدة"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "عرض المجموعة"; +$LANG["phrase_view_id"] = "عرض معرف"; +$LANG["phrase_view_name"] = "عرض الاسم"; +$LANG["phrase_view_placeholders"] = "عرض العناصر النائبة"; +$LANG["phrase_view_submissions"] = "عرض التقديمات"; +$LANG["phrase_view_uploaded_files"] = "عرض الملفات المحملة"; +$LANG["phrase_viewing_range"] = "[عرض {\$startnum} إلى {\$endnum}]"; +$LANG["phrase_when_sent"] = "عندما أرسلت"; +$LANG["phrase_when_submission_is_deleted"] = "عند التقديم يتم حذف"; +$LANG["phrase_when_submission_is_edited"] = "عندما يتم تحرير التقديم"; +$LANG["phrase_who_can_access"] = "الذين يمكنهم الوصول؟"; +$LANG["phrase_word_limit_p"] = "كلمة الحد."; +$LANG["phrase_year_to_date"] = "السنة حتى تاريخه"; +$LANG["phrase_yes_for_all_views"] = "نعم ، لجميع الآراء"; +$LANG["phrase_yes_for_specific_views"] = "نعم ، لعدد معين"; +$LANG["phrase_your_account"] = "حسابك"; +$LANG["phrase_your_email"] = "البريد الالكتروني"; +$LANG["phrase_your_email_address"] = "عنوان بريدك الالكتروني"; +$LANG["processing_form_disabled"] = "آسف ، وهذا النموذج قد تم تعطيل."; +$LANG["processing_form_incomplete"] = "آسف ، وهذا النموذج لا يبدو أن يكون كاملا من خلال انشاء نموذج أدوات. السبب الاكثر ترجيحا لهذه المشكلة هو أن قمت بإزالة form_tools_initialize_form "" مخبأة حقل النموذج ، ولكنها لم تكمل جميع الخطوات من "إضافة نموذج" عملية.

    يرجى تسجيل الدخول وإعادة النظر في تكوين النموذج."; +$LANG["processing_init_complete"] = "شكرا لك! الاختبار الخاصة بك تقديم ضعت من خلال بنجاح. يرجى العودة الى نموذج لوحة أدوات الإدارة وانقر فوق الزر "تحديث" في أسفل نموذج إضافة الخطوة 3 الصفحة إلى الانتهاء من إعداد النموذج الخاص بك."; +$LANG["processing_invalid_form_id"] = "آسف ، هذا لا يبدو أن هناك نموذج رقم صالح."; +$LANG["processing_no_form_id"] = "process.php يتطلب شكلا معرف للتجهيز. تأكد من أن النموذج يحتوي على حقل الخفية مع اسم "form_tools_form_id" الذي يمر على طول شكل السلعة."; +$LANG["processing_no_form_url_for_recaptcha"] = "شكل أدوات غير قادر على تحديد مكان لإعادة توجيه عندما تفشل لإدخال كلمة التحقق بشكل صحيح. يرجى تمر في حقل مخفي مع form_tools_form_url اسم يحتوي على رابط للصورة."; +$LANG["processing_no_post_vars"] = "process.php لا يتلقى أية بيانات. ملاحظة : هذا النص لا يمكن تحميلها مباشرة في المتصفح.
    تأكد من شكل ويرسل عبر البريد."; +$LANG["processing_no_redirect_url"] = "تقديم ومعالجتها بشكل صحيح ، ولكن لم تكن قد قمت بتحديد عنوان إعادة توجيه لهذا الشكل! تحرير النموذج الخاص بك في شكل أدوات واجهة المستخدم وإضافة رابط توجيه."; +$LANG["special_language"] = "Arabic"; +$LANG["special_language_locale"] = "Arabic"; +$LANG["special_text_direction"] = "rtl"; +$LANG["text_account_settings_page"] = "وسوف جميع حسابات العملاء الجديدة المراد إنشاؤها مع إعدادات والأذونات المحددة أدناه. لتجاوز الإعداد لعميل معين ، وتحرير حساب العميل وزيارة علامة التبويب إعدادات."; +$LANG["text_add_form_choose_integration_method"] = "اختر الطريقة التي تريد استخدامها لدمج النموذج الخاص بك مع أدوات النموذج."; +$LANG["text_add_form_code_submission_benefits"] = "هذا الأسلوب يستخدم نموذج أدوات API ، والمدرجة في البرنامج النصي نموذج الأدوات الرئيسية. ويقدم المعهد عددا من الوظائف المفيدة لجعل مهمة لدمج النموذج الخاص بك مع نموذج أدوات بسيطة بقدر الإمكان. لا توجد أية قيود على الكيفية التي يمكن أن تقدم النموذج الخاص بك عند استخدام API. يمكنك تقديم المحتوى في دفعة واحدة ، أو صفحة صفحة ، ويمكنك إضافة المخصصة الخاصة بك الملقم التحقق من جانب ، والصور CAPTCHA ، ويمكنك اختيار لتقديم المعلومات الآن ، ولكن اقول فقط لتقديم عرض في شكل أدوات واجهة المستخدم في وقت لاحق (انظر التقديمات في صيغتها النهائية في قسم وثائق تساعد API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "من أجل تقديم بيانات النموذج الخاص بك عن طريق PHP ، يجب وضع النموذج الخاص بك على موقع نفس هذا النموذج أدوات التثبيت. ثانيا ، بالنسبة لغير التقنية وأدوات المبتدئ نموذج للمستخدمين ، يمكن أن يكون هذا الأسلوب قليلا ترهيب في البداية. ولكن هناك الكثير من الوثائق لمساعدتك على الخروج ، من بينهم اثنان من دروس بسيطة لدمج النماذج واحدة ومتعددة الصفحات (ترتبط هذه الخطوة على لاحقا)."; +$LANG["text_add_form_direct_submission_benefits"] = "وهذا هو أبسط طريقة لتقديم النموذج الخاص بك إلى نموذج أدوات. فهو لا يتطلب أي معرفة بى ويتطلب سوى عدد صغير جدا لتغيير النموذج الخاص بك. انه امر عظيم للأشكال أصغر حيث تريد مجرد تقديم المعلومات إلى قاعدة البيانات ثم إعادة توجيه المستخدم إلى الشكر "" صفحة."; +$LANG["text_add_form_direct_submission_drawbacks"] = "هذا الأسلوب تقديم بسيط جدا للاستخدام ، لكنه لا يقدم الكثير من أجل السيطرة أشكال أكثر تعقيدا. متعدد الأشكال صفحة أو الأشكال التي تتطلب التحقق من جانب الملقم أكثر ملاءمة لالأسلوب الثاني : نموذج التقديم من خلال أدوات API."; +$LANG["text_add_form_field_types1"] = "عمله تقريبا! هذه الصفحة يحاول العثور على كافة حقول النموذج الخاص بك ، وتحديد أنواع مجال عملهم. انقر على زر تعبئة الذكية على الحق في البدء. وسيتم السماح فقط لك للمضي قدما عندما تم حل جميع الإجراءات -- القضايا التي تحتاج إلى الاهتمام الخاص تظهر في "العمل مطلوب " العمود."; +$LANG["text_add_form_field_types2"] = "إذا كان النموذج الخاص بك ليست في HTML ، انقر فوق الزر الخطوة اقفز الى المضي قدما. كل هذا يمكن أن يتم تكوين لاحقا."; +$LANG["text_add_form_field_types3"] = "هذه الإعادة محتويات النموذج الخاص بك (ق). ملاحظة : هذا سوف الكتابة فوق أي التغييرات التي أجريتها على هذه الصفحة."; +$LANG["text_add_form_field_types4"] = "في حال واجهت مشاكل ، انقر هنا لتخطي هذه الخطوة. يتم تعيين كافة المجالات لم يتم حلها إلى استخدام القيم الافتراضية. يمكنك تخصيص هذه الحقول في وقت لاحق."; +$LANG["text_add_form_field_types_manual_upload"] = "إذا لم تتمكن من تعبئة الحقول الذكية ، قد تحتاج لمحاولة حل بديل : إيداع نسخ من النماذج الخاصة بك في الحقول أدناه."; +$LANG["text_add_form_field_types_manual_upload2"] = "ملاحظة : لا تحميل صفحات PHP الخام (أو غيره من جانب الملقم رمز) -- تحميل إصدارات HTML فقط. للحصول على هذا ، عرض وحفظ الصفحة من متصفح الويب الخاص بك."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "هناك مجالات متعددة يمكن أن لا تكون موجودة في صفحة النموذج الذي حددته. هذا هو في الغالب سبب واحد من المرجح على ما يلي :"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "دخلت أنت واحد أو أكثر من شكل من أشكال شكل عناوين متعددة الصفحات بشكل غير صحيح."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "واحد أو أكثر من صفحات النموذج الخاص بك وكلمة السر المحمية والنصي لا يمكن الوصول إلى الصفحة."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "الذي أدخلته غير صحيح URL النموذج الخاص بك."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "اضغط هنا للعودة الى الصفحة نموذج المعلومات للتحقق من إعداداتك."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "قمت بتغيير النموذج الخاص بك (ق) بعد إجراء تقديم اختبار"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "اضغط هنا لوضع من خلال تقديم اختبار آخر."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "هي كلمة السر المحمية النموذج والبرنامج النصي لا يمكن الوصول إلى الصفحة."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "في علامة تبويب أخرى / نافذة المتصفح ، سجل في النموذج الخاص بك ، ثم انقر على زر تحديث الصفحة أدناه لمحاولة إعادة العثور على الحقول."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "إذا كان أي من الحلول السابقة العمل ، قد ترغب أيضا في محاولة تحميل النماذج يدويا للتجهيز ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "هناك مجالات متعددة يمكن أن لا تكون موجودة في صفحات النموذج الذي حددته. هذا هو في الغالب ربما تسبب في ذلك واحدة من هذه :"; +$LANG["text_add_form_help_link"] = "إذا واجهت أي مشكلة خلال هذه الخطوات ، حاول بقراءة وثائق المستخدم ."; +$LANG["text_add_form_step_1_text_1"] = "في الصفحات التالية تقودك من خلال خطوات لأدوات تكوين نموذج لتخزين البيانات الخاصة بك شكل من الأشكال. قبل الشروع في الاستمرار ، يرجى مراجعة ما يلي :"; +$LANG["text_add_form_step_1_text_2"] = "النموذج الخاص بك قد تم إنشاؤها ويمكن الوصول إليها عبر رابط (مضيف محلي على ما يرام)"; +$LANG["text_add_form_step_1_text_3"] = "هي قادرة على تحرير النموذج الخاص بك"; +$LANG["text_add_form_step_2_para_2"] = "فتح النموذج الخاص بك في محرر من اختيارك وتغيير شكل علامة على ما يلي ، بما في ذلك حقلين المخفية."; +$LANG["text_add_form_step_2_para_3"] = "المقبل ، فتح النموذج الخاص بك في متصفح الويب. تعبئة في كل ميدان وتقديمه. بعد تقديم ، يجب أن تشاهد رسالة إعلام. مرة يتم عرض هذه الرسالة ، والعودة إلى هذه الصفحة وانقر على زر التحديث أدناه. عند اكتمال هذه العملية ، سوف ترى مواصلة الزر أدناه ، واضعة لك إلى الخطوة التالية."; +$LANG["text_add_form_step_2_para_6"] = "في تقديم النموذج الخاص بك ، وتشمل القيم التالية. ويمكن أن يكون مباشرة عن طريق مجموعة بي إتش بي تمرر من خلال النموذج نفسه. فيما يلي أمثلة على كل منهما. و\$ () varname هو التجزئة (أو مجموعة النقابي) من كل استمارة تقديم المعلومات -- وهذا هو عادة \$ (postvar) أو (\$ sessionvar) متغير ، ولكن قد يكون عرف بني."; +$LANG["text_add_form_step_2_text_2"] = "أدخل عنوان الصفحة الخاصة بك "الشكر " هنا. هذا هو المكان الذي كنت تريد أن تكون موجهة إلى الشعب بعد أن تم تقديم النموذج."; +$LANG["text_add_form_step_3_para_1"] = "هذه الصفحة يسرد كافة الحقول الموجودة في استمارة التقديم. الرجاء النظر في كل ميدان ، وإزالة أي التي لا تحتاج لتخزين كل رسالة. إذا قمت بحذف حقل صالح عن طريق الصدفة ، أو ترغب في تغيير المعلومات المخزنة عن طريق النموذج الخاص بك ، والعودة إلى الصفحة السابقة لارسال تقديم اختبار جديد."; +$LANG["text_add_form_step_3_para_2"] = "ملاحظة : إذا كنت ترسل قيم متعددة عبر خانات أو متعددة حدد مربع ، تأكد من اسم الحقل ينتهي [] أحرف (راجع وثائق المستخدم لمزيد من المعلومات)."; +$LANG["text_add_form_step_3_text_1"] = "هنا المكان الذي يبدأ المرح! عند هذه النقطة ، أدوات نموذج ينتظر تقديم اختبار من النموذج الخاص بك. فإنه سيتم استخدام هذا النموذج لتقديم معلومات تعرف ما يجب أن يتم تخزينها في قاعدة البيانات."; +$LANG["text_add_form_step_3_text_2"] = "النموذج الخاص بك من قبل ، مشيرا إلى نموذج أدوات"; +$LANG["text_add_form_step_3_text_3"] = "باستخدام نموذج أدوات API"; +$LANG["text_add_form_step_3_text_4"] = "للمساعدة على إدماج النموذج الخاص بك ، فإننا نقترح عليك قراءة واحدة من الدروس التالية :"; +$LANG["text_add_form_step_3_text_5"] = "انها تشرح كيفية إعداد النموذج الخاص بك في إطار التحضير لتقديم الاختبار ، وتشمل المعلومات الأخرى التي قد تكون للمساعدة. خط من بي إتش بي ، ستحتاج هي :"; +$LANG["text_add_form_step_3_text_6"] = "وهذا يضمن أن البيانات يتم إرسالها فعليا على نموذج أدوات. عندما يكون لديك وضع الخاص بك من خلال تقديم الاختبار ، انقر فوق الزر أدناه."; +$LANG["text_add_form_step_3_text_7"] = "على الموافقة المسبقة على الصفحة الخاصة بك النهائي "شكرا" الصفحة ، تأكد من إضافة المعلمة التالية إلى المتغير \$ params :"; +$LANG["text_add_form_step_5_para_1"] = "قاعدة البيانات وقد تم تشكيل للهذا النموذج والنموذج قد تم تنشيط للاستخدام. إذا كنت قدمت الطلب من قبل ، مشيرا إلى process.php النموذج الخاص بك ، يرجى العودة إلى النموذج الخاص بك وإزالة الحقل المخفية التالية :"; +$LANG["text_add_form_step_5_para_2"] = "ثم قم بزيارة "شكرا" على صفحة فارغة الدورات. حالما يتم ذلك ، سيتم تجهيز كل التقديمات شكل جديد يكون وتخزينها بواسطة نموذج أدوات. في محاولة لتقديم الطلب أو اثنين للتحقق من المعلومات هو كل تحميل بشكل صحيح."; +$LANG["text_add_form_step_5_para_3"] = "إذا كنت ترغب في صقل النموذج للحصول على خيارات مثل صناعة السيارات في إرساله عبر البريد الإلكتروني ، مضيفا اضافية شكل حقول الميدان ، أو تخصيص شكل أنواع الحقول ، قد عدل النموذج الخاص بك في أي لحظة."; +$LANG["text_add_form_step_5_para_4"] = "منذ النموذج الخاص بك يحتوي على حقول تحميل الملف ، سوف تحتاج إلى تكوين كل حقل لتحديد مجلد تحميل الملفات ، ما هي الملفات المسموح بها و. هذا ويمكن الاطلاع على التبويب عرض لتحرير صفحة النموذج."; +$LANG["text_add_form_step_5_para_5"] = "إذا تم إرسال الطلب عن طريق المعهد ، تغيير الخط ft_api_init_form_page على الصفحة الأولى من النموذج الخاص بك إلى :"; +$LANG["text_add_submission_button"] = "إضافة زر التقديم يظهر فقط للالمشاهدات التي لديها "قد تضيف التقارير " الخيار لتعيين "نعم"."; +$LANG["text_admin_email_placeholder_info"] = "هذا هو عنوان البريد الإلكتروني للنموذج أدوات مسؤول ، وتعريفها في إعدادات حسابك. هذا فقط النواتج عنوان البريد الإلكتروني ، حتى إذا كنت ترغب في استخدام كحلقة وصل أتش تي أم أل ، سوف تحتاج إلى التفاف عليه في علامة <a>، كما يلي :
    <ahref="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ أ>"; +$LANG["text_also_default_login_page_theme"] = "(كما في صفحة تسجيل الدخول في موضوع التقصير)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "أولا ، الرجاء اختيار نوع النموذج الخاص بك."; +$LANG["text_client_form_page"] = "هذه الصفحة يسرد كافة أشكال والمشاهدات المخصصة لهذا العميل. نصيحة : من أجل دفعهم لرؤية شكل من التقديمات ، فإنها تحتاج إلى أن تسند إلى واحد على الأقل مشاهدة."; +$LANG["text_client_map_filters_desc1"] = "مرشحات خريطة عميل تمكنك من الحد من التقديمات التي تظهر في هذا الملف عن طريق رسم خرائط لقيم في حقل نموذج للقيم في حساب العميل."; +$LANG["text_client_no_forms"] = "لديك حاليا أي الأشكال المتاحة للاستعراض."; +$LANG["text_client_welcome"] = "مرحبا! هذا البرنامج بتخزين كل المعلومات المقدمة من زوار موقعك. لعرض تقارير لشكل معين فقط انقر فوق الارتباط عرض ، أو الاطلاع على أقصى اليسار الملاحة القائمة على خيارات أخرى."; +$LANG["text_config_file_created"] = "بك config.php ملف تم إنشاؤه."; +$LANG["text_config_file_not_created"] = "نحن لا يمكن أن خلق لكم ملف config.php. سوف تحتاج إلى إنشاء الملف يدويا."; +$LANG["text_config_file_not_created_instructions"] = "نسخ ولصق محتويات من المقطع التالي إلى ملف يسمى config.php وتحميله عبر بروتوكول نقل الملفات إلى أدوات نموذج / المجلد العالمية (المجلد الذي يحتوي أيضا على عدد قليل من الملفات وغيرها من الأدلة ، وملف واحد يسمى library.php)."; +$LANG["text_confirm_delete_form"] = "نعم ، أريد أن حذف هذا الشكل"; +$LANG["text_create_admin_account"] = "الآن ونحن في طريقنا لإنشاء حساب المسؤول. هذا يستخدم لإدارة جميع جوانب نموذج أدوات ، مثل إضافة أشكال وخلق حسابات العملاء."; +$LANG["text_create_new_client_account"] = "استخدم النموذج أدناه لإنشاء لجنة جديدة حساب العميل. جميع الحقول مطلوبة."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "انظر [فب] {\$datefunctionlink} الدالة على خيارات التنسيق"; +$LANG["text_default_file_settings_page"] = "هذه الصفحة تحدد إعدادات ملف لتحميل النموذج الخاص بك أدوات التثبيت. هذه القواعد تنطبق على جميع الملفات التي يتم تحميلها من خلال نموذج أدوات ، إلا إذا تجاوز بوضوح لحقل الفردية شكل من الأشكال. ملاحظة : إذا قمت بتغيير المجلد بعد تحميل الملفات التي تم تحميلها ، سيتم نقلها تلقائيا إلى المجلد الجديد."; +$LANG["text_default_theme_cache_folder_not_writable"] = "قبل المتابعة ، وسوف تحتاج إلى تحديث بك / المواضيع / الافتراضي / مجلد التخزين المؤقت للسماح الكامل أذونات القراءة والكتابة. حالما يتم ذلك ، وسوف تختفي هذه الرسالة والتي يمكن تثبيت البرنامج النصي."; +$LANG["text_default_values_in_view"] = "هذا القسم هو اختياري. وجميع الطلبات التي تم إنشاؤها باستخدام هذه الصورة تحتوي على القيم الافتراضية المحددة هنا."; +$LANG["text_delete_all_forms"] = "أريد حذف جميع الملفات التي تم تحميلها عبر هذا النموذج"; +$LANG["text_delete_form_warning"] = "هل أنت متأكد من أنك تريد حذف هذا النموذج؟ هذا العمل لا يمكن التراجع عنها. وسوف تكون جميع البيانات التي تفقد إلى الأبد!"; +$LANG["text_edit_admin_menu_page"] = "كنت قد عدل القائمة الخاصة بك أدناه. كنت دائما لضمان الوصول إلى جميع الوظائف المتاحة في شكل أدوات ، في الصفحات التالية مطلوبة : نماذج ، عملاء ، الحساب الخاص بك ، وحدات ، وإعدادات خروج."; +$LANG["text_edit_client_menu_page"] = "هذا القسم يسمح لك بتخصيص اليسار الملاحة العمود لكل مستخدم. كنت قد تخلق والعميل العديد من القوائم كما يحلو لك ، وعلى حساب التنازل عن أي واحد منهم. افتراضيا هناك اثنين من القوائم : واحدة لك ، والمسؤول ، واحدة بالنسبة لجميع حسابات العملاء. ويمكن حساب مسؤول يمكن تعديل ولكن لم تتم إزالة."; +$LANG["text_edit_tab_summary"] = "إذا كنت ترغب في عرض هذه المجموعة الحقول حيز علامات ، فقط أدخل أسماء التبويب أدناه. بعد انتهائك من ذلك ، حدد علامة التبويب المناسبة لكل مجموعة في مجال التبويب الحقول ."; +$LANG["text_edit_view_list_page"] = "هذا التبويب الضوابط التي تظهر الحقول كأعمدة على تقديم صفحة الإدراج ، وبعض الإعدادات الإضافية لهذه الحقول. ملاحظة : ننصحك بإضافة ما لا يزيد عن 4 أو 5 من أهم الحقول في عرض."; +$LANG["text_email_settings_intro"] = "هذه الصفحة التي تمكنك من تحديد حقول النموذج الخاص بك رسائل البريد الإلكتروني وتخزين أسمائهم المقابلة. بمجرد أن تحدد لهم هنا ، يمكنك استخدامها في البريد الإلكتروني الخاص بك قوالب كمتلقين. هذا القسم هو اختياري كلي."; +$LANG["text_email_tab_summary"] = "هذا القسم يسمح لك إنشاء أي عدد من رسائل البريد الالكتروني ليتم إرسالها كلما النموذج الخاص بك هو المقدمة ، وغيرها من مشغلات."; +$LANG["text_email_template_tab"] = "هذا القسم يتيح لك تحديد المحتوى الذي يظهر في البريد الإلكتروني. إذا كنت ترغب في إرسال البريد الإلكتروني الخاص بك كنص فقط أو البريد الإلكتروني ، فقط أدخل قيمة لهذا القسم. إذا قمت بإدخال قيمة لكلا ، سيتم إرسال البريد الإلكتروني في كل من الأشكال."; +$LANG["text_email_template_text_1"] = "كان هناك تقدم من خلال تقديم النموذج الخاص اسم النموذج {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "كان هناك تقدم من خلال تقديم النموذج الخاص {\$FORMNAME} اسم النموذج :"; +$LANG["text_email_template_thanks"] = "شكرا على مقالك!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "رسالة الخطأ لإظهار إذا كان الحقل فشل التحقق من صحة"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "الأشكال الخارجية هي النماذج التي توجد بالفعل على موقع الويب الخاص بك ، أو في مكان ما على شبكة الإنترنت. حدد هذا الخيار إذا كان لديك شكل الخاصة بك التي ترغب في الاندماج مع أدوات النموذج."; +$LANG["text_fields_tab_summary"] = "هذه الصفحة يسرد كافة حقول النموذج الخاص بك. للتحكم في كيفية ظهورها عند تصفح البيانات ، راجع علامة التبويب طرق . حذف حقل في هذه الصفحة سوف حذفها من جميع الطلبات ، لذا يرجى توخي الحذر!"; +$LANG["text_file_extension_info"] = "دخول امتدادات الملفات مفصولة بفواصل (على سبيل المثال ، [جف ، بابوا نيو غينيا) أو ترك فارغا السماح بأي نوع الملف."; +$LANG["text_file_field_placeholders_info"] = "لقد اثنين من حقول ملف النائبة الخاصة : FILEURL واسم. FILEURL هو العنوان الكامل للملف ، بحيث يمكنك ربط مباشرة إلى أنه في رسائل البريد الإلكتروني ، اسم الملف هو مجرد اسم الملف."; +$LANG["text_filters_page"] = "فقط تلك العروض التي تلبي القواعد التي تحدد أدناه سوف تظهر في هذا الملف."; +$LANG["text_filters_tips"] = "للحصول على نصائح حول كيفية استخدام مرشحات تقديمه ، راجع وثائق المستخدم."; +$LANG["text_forgot_password"] = "لا توجد مشكلة. فقط أدخل اسم المستخدم الخاص بك تحت معلومات تسجيل الدخول وسيتم ارسالها الى عنوان البريد الالكتروني الموجود في الملف. إذا كنت قد نسيت اسم المستخدم الخاص بك ، يرجى الكتابة إلى المسؤول عن الموقع في {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "هذا النموذج يحتوي على واحد أو أكثر من مجالات تحميل الملف :"; +$LANG["text_form_placeholder_info"] = "ويمكن استخدام العناصر النائبة التالية في أي قالب البريد الإلكتروني واللغة حقل نائبا ، بغض النظر عن أي عرض يتم تعيين قالب البريد الإلكتروني ل. العناصر النائبة المسألة هي مسألة شكل محدد ، والنائبة الإجابة هي الإجابة على كل سؤال."; +$LANG["text_form_submission_date_placeholder"] = "التاريخ عندما تم تقديمها."; +$LANG["text_form_tools_form_url"] = "URL الكامل للنموذج. هذا ليس لديها سوى قيمة لأشكال خارجية."; +$LANG["text_form_tools_login_url"] = "عنوان الموقع : الدخول للنموذج أدوات."; +$LANG["text_form_view_permission_info_admin"] = "ملاحظة : هذا النموذج في الوقت الحالي اكتب Administrator الوصول ، لذلك أي من حسابات العميل سيكون قادرا على رؤية هذه الصورة."; +$LANG["text_form_view_permission_info_private"] = "ملاحظة : هذا النموذج في الوقت الحالي خاصة نوع الوصول لذلك سوف تكون محدودة الخيارات الخاصة والعامة هنا إلى أن مجموعة فرعية من العملاء."; +$LANG["text_ft_installed"] = "تهانينا ، نموذج أدوات وقد تم بنجاح تركيب!"; +$LANG["text_global_placeholder_info"] = "هذه النائبة قد يمكن استخدامها في أي قالب وبأي شكل من الأشكال."; +$LANG["text_group_name_explanation"] = "لحقول مضافة من خلال عملية إضافة نموذج ، هذه القيمة هي معبأة سلفا لعرض النص أيا كان يستخدم الحقل قيمة. قد ترغب في تغييره إلى الأفضل وصف محتويات."; +$LANG["text_install_create_config_file"] = "شكل أدوات بتخزين إعدادات الخادم وقاعدة البيانات في ملف يسمى config.php ، وجدت في بلدكم / العالمية / المجلد. انقر فوق "إنشاء ملف" الزر لتوليد تلقائيا الملف على الخادم الخاص بك."; +$LANG["text_install_create_database_tables"] = "الآن ونحن في طريقنا لخلق نموذج أدوات جداول قاعدة البيانات. هذه الخطوة تتطلب قاعدة البيانات نفسها إلى أنشئت بالفعل. إذا كنت غير متأكد من كيفية القيام بذلك ، الرجاء الاتصال بموفر خدمة الاستضافة."; +$LANG["text_install_db_tables_error_tip_1"] = ""مجهول الخلية خادم المضيف" عادة ما يعني ان المضيف لك المقدمة غير صحيحة. وربما حاول إعداد هذا إلى "مضيف محلي" -- هذا هو وسيلة شائعة للإشارة إلى "المحلية" قاعدة بيانات على خادم الويب."; +$LANG["text_install_db_tables_error_tip_2"] = ""لا يمكن الاتصال المحلية ماي من خلال مقبس خادم" تعني حقل قاعدة البيانات المضيف هو مرة أخرى غير صحيحة."; +$LANG["text_install_db_tables_error_tip_3"] = ""رفض الوصول للمستخدم :" يعني أن هناك مشكلة مع اسم المستخدم / كلمة المرور."; +$LANG["text_install_db_tables_error_tip_4"] = ""رفض الوصول للمستخدم :... لقاعدة البيانات..." يعني أنه على الرغم من أن اسم المستخدم وكلمة السر التي أدخلتها غير صحيحة وأنها لم تتمكن من الاتصال إلى أن قاعدة بيانات خاصة مع هذا الحساب. هذا يمكن أن يعني إما أن قاعدة البيانات الخاصة بك الاسم غير صحيح ، أو أن حساب المستخدم هذا لا يرتبط أن قاعدة البيانات."; +$LANG["text_install_email_content_text"] = "هناك الكثير من الموارد على موقعنا الإلكتروني لمساعدتك على البدء ، بما في ذلك وثائقنا على الإنترنت (https://docs.formtools.org) والبرامج التعليمية (https://docs.formtools.org/tutorials). إذا وجدت أنك تتعثر أو لديك سؤال ، اطرح سؤالاً على جيثب (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "آسف ، وأدوات النموذج لن تكون قادرة على تشغيل على الخادم الخاص بك. انقر هنا لمتطلبات الحد الأدنى."; +$LANG["text_install_system_check"] = "هذه الصفحة يدير بعض الاختبارات على النظام الخاص بك لضمان أنها قادرة على تشغيل أدوات نموذج."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "أشكال الداخلية وجود لها إلا في إطار أدوات نموذج -- وليس في مكان آخر على موقعك. وسوف حسابات المستخدم فقط نموذج أدوات الوصول إلى النموذج. حدد هذا الخيار إذا لم يكن لديك نموذج موجود."; +$LANG["text_internal_form_intro"] = "استخدام النموذج أدناه لإنشاء نموذج جديد الداخلية. يمكن أن تكون جميع الأماكن ، بما في ذلك عدد ومحتوى حقول النموذج يمكن تغيير وتكوينها في وقت لاحق."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "من أجل الدخول واستخدام أدوات نموذج ، يجب عليك تفعيل جافا سكريبت في المتصفح. يرجى تمكينها من الآن ، ثم انقر فوق تحديث في المتصفح."; +$LANG["text_last_modified_date_explanation_c"] = "في المرة الأخيرة تم تعديل هذا الطلب. لتقديم الطلبات الجديدة ، وهذا هو نفسه على النحو التالي :"; +$LANG["text_limit_email_content_desc"] = "هذا الخيار يعمل فقط على محتوى النص HTML ولدت مع الحلقات هندى."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(فقط قوائم المشاهدات مع واحد أو أكثر المرشحات تعريف)"; +$LANG["text_log_in_to_ft"] = "سجل في نموذج لأدوات"; +$LANG["text_login"] = "يرجى تسجيل الدخول أدناه للوصول إلى program_name\\$ ادارة الفريق. إذا كنت قد نسيت كلمة المرور ، انقر هنا."; +$LANG["text_login_info"] = "على النحو المطلوب ، ومن هنا معلومات تسجيل الدخول."; +$LANG["text_name_of_form"] = "اسم النموذج."; +$LANG["text_no_clients"] = "لا توجد حاليا للعملاء في قاعدة البيانات. إضافة جديدة لحساب العميل ، انقر فوق الزر إضافة عميل أدناه."; +$LANG["text_no_clients_found"] = "لم عملاء تم العثور على. حاول توسيع نطاق معايير البحث الخاصة بك."; +$LANG["text_no_fields_in_view"] = "هذه الصورة لا يوجد اي حقول فيه. انقر على الرابط أدناه."; +$LANG["text_no_forms"] = "لا يوجد حاليا أي أشكال في قاعدة البيانات. إضافة إلى نموذج جديد ، انقر فوق إضافة نموذج الزر أدناه."; +$LANG["text_no_forms_found"] = "لم يتم العثور على النماذج."; +$LANG["text_no_forms_found_search"] = "لم يتم العثور على النماذج. حاول توسيع نطاق معايير البحث الخاصة بك."; +$LANG["text_no_modules_found"] = "تم العثور على أي وحدات. حاول توسيع نطاق معايير البحث الخاصة بك."; +$LANG["text_no_recipients_added"] = "مستلمين التي تمت إضافتها."; +$LANG["text_no_search_results"] = "لا توجد نتائج هذا مع معايير البحث / عرض."; +$LANG["text_no_submissions_found"] = "آسف ، لم يتم العثور على بيانات."; +$LANG["text_no_themes"] = "ليس لديك أي موضوعات محددة. انقر فوق الزر أدناه لتحديث قائمة الموضوع ، أو تحقق من المستخدم أدوات التوثيق نموذج للحصول على معلومات حول إضافة المواضيع."; +$LANG["text_non_deletable_fields"] = "ويستخدم هذا الحقل من قبل البرنامج النصي الأساسية والتي لا يمكن تحريرها أو حذفها دون التسبب في عدم التوافق. إذا كنت ترغب في إجراء تغييرات على نوع الحقل ، وجعل على نسخة منه وتحرير النسخة."; +$LANG["text_option_list_group_explanation"] = "إذا تم تحديد هذا ، فإنه يتيح للمجموعة خياراتك. كيف يتم عرض مجموعات يعتمد على نوع الحقل باستخدام هذه القائمة الخيار."; +$LANG["text_option_list_page"] = "أزرار الراديو وخانات ، وdropdowns متعددة تحديد حقول المنسدلة توفير كل مستخدم مع خيارات متعددة من التي يمكن اختيار واحد أو أكثر من البنود. في أدوات النموذج ، هذه هي المعروفة باسم قوائم الخيار. عموما ، يتم إنشاء هذه تلقائيا من قبل الشكل الخارجي إضافة عملية ، ولكن يمكنك يدويا إضافة أو تعديل قوائم لديك الخيار أدناه إذا تغير محتوى النموذج الخاص بك أو يمكنك بناء الحقول التي يتم استخدامها داخليا فقط."; +$LANG["text_option_list_used_by_fields"] = "ويستخدم هذا الخيار قائمة حقول النموذج متعددة. إذا قمت بتحديث المعلومات الواردة أدناه ، سيتم تغييره لكافة المجالات (راجع حقول النموذج التبويب لرؤية قائمة الحقول). إذا كنت ترغب في تحديث قيم واحدة ، أو مجموعة فرعية من الحقول التي تم تعيينها حاليا ، انقر هنا لإنشاء قائمة جديدة مع خيار القيم بنفس هذا واحد. ثم يمكنك تعيين حقول النموذج الذي تريد المجموعة الجديدة."; +$LANG["text_public_form_omit_list_page"] = "الجمهور أشكال تعطيك صالح السماح للجميع حسابات العملاء من الوصول إليها دون الحاجة إلى يدويا تعيين كل عميل لهم. هذه الصفحة يتيح لك تحديد العملاء الذين قد لا يمكن الوصول إلى هذا النموذج ، حتى ولو في شكل ملحوظ كما هو الجمهور."; +$LANG["text_public_view_omit_list_page"] = "الجمهور المشاهدات تعطيك صالح السماح للجميع حسابات العملاء من الوصول إليها دون الحاجة إلى يدويا تعيين كل عميل لهم. هذه الصفحة يتيح لك تحديد العملاء الذين قد لا يمكن الوصول إلى هذا عرض خاص."; +$LANG["text_reference_tab_info"] = "هذه الصفحة يسرد كافة العناصر النائبة المتاحة للنموذج الخاص بك. النائبة هي سلاسل التي يمكن استخدامها في قوالب البريد الإلكتروني ، والحقول التي تحمل رمز نائبا الخاصة . عندما دخلت في الميدان ، يتم تحويل حيوي لهم القيمة المناسبة عند عرض الحقل أو يتم إرسال البريد الإلكتروني."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "مراجعة وثائق المستخدم"; +$LANG["text_send_email_from_edit_submission_page"] = "يتضمن هذا الخيار لإرسال البريد الإلكتروني من تقديم تحرير الصفحة"; +$LANG["text_smart_fill_option_list_problem"] = "لم نتمكن من تعبئة الخيارات الذكية مجال عملك. ومع ذلك ، وكبديل ، يمكنك محاولة تحميل نسخة من صفحة النموذج الخاص بك في الحقل أدناه. ملاحظة : لا تحميل صفحات PHP الخام (أو غيره من جانب الملقم رمز) -- تحميل مجرد إصدار HTML. للحصول على هذا ، عرض وحفظ الصفحة من متصفح الويب الخاص بك."; +$LANG["text_submission_ip_address"] = "عنوان الآي بي للمستخدم الذي قدم التقرير."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "استخدم النموذج أدناه لعرض أو إرسال بريد إلكتروني نفسك المتولدة من هذا قالب البريد الإلكتروني. البريد الإلكتروني هو الوحيد إرسالها إلى البريد الإلكتروني المحدد أدناه ؛ الرئيسي ، وتغير المناخ ومخفية المستلمين عنوان البريد الإلكتروني ، بينما يتم تجاهل التجارب."; +$LANG["text_test_email_templates_no_submissions"] = "من أجل اختبار قوالب البريد الإلكتروني الخاص بك ، يجب عليك أولا وضع واحد على الأقل من خلال تقديم النموذج."; +$LANG["text_theme_page_intro"] = "هذه الصفحة يسرد كافة المواضيع الخاصة بك. انقر على الصورة المصغرة لمشاهدة مثال أكبر للموضوع الأنماط. في "تمكين" الاختيار أو لم يحدد ما إذا كان هذا الموضوع قد يتم اختيارها من قبل العملاء. لاستعراض جميع الموضوعات المتاحة ، يمكنك زيارة الموقع أدوات نموذج."; +$LANG["text_tutorial_adding_first_form"] = "البرنامج التعليمي : إضافة النموذج الخاص بك أولا!"; +$LANG["text_unique_submission_id"] = "تقديم معرف فريد."; +$LANG["text_unused_option_list"] = "ليست هذه القائمة الخيارات التي يجري استخدامها من قبل أي حقول النموذج."; +$LANG["text_upgraded"] = "التثبيت تمت ترقية إلى {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "ويستخدم هذا الخيار قائمة الحقول التالية."; +$LANG["text_view_fields_info"] = "هذا التبويب ضوابط الحقول التي تظهر عند تحرير تقرير في هذا الرأي ، وترتيبها ، وما إذا كانت قابلة للتحرير أم لا."; +$LANG["text_view_tab_summary"] = "هذا التبويب يسمح لك إنشاء طرق مختلفة لترتيب المجموعة والبيانات الخاصة بك. آراء تتيح لك إنشاء مجموعات فرعية مخصصة لبيانات النموذج الخاص بك لتقسيمه إلى أجزاء يمكن التحكم فيها ، وإلى حد ما قد ترى العملاء أو تعديلها."; +$LANG["validation_account_disabled"] = "آسف ، حسابك تم تعطيلها."; +$LANG["validation_account_not_recognized"] = "آسف ، لأنه لم يتم التعرف على اسم المستخدم."; +$LANG["validation_account_not_recognized_info"] = "آسف ، لأنه لم يتم العثور على اسم المستخدم. يرجى المحاولة مرة أخرى ، أو الاتصال بمسؤول الموقع على العنوان المبين أدناه."; +$LANG["validation_account_pending"] = "حساب المستخدم الخاص بك هو في انتظار موافقة من قبل مسؤول."; +$LANG["validation_check_delete_client"] = "هل أنت متأكد من أنك تريد حذف هذا الحساب العميل؟"; +$LANG["validation_client_password_missing_number"] = "ويجب أن تحتوي كلمة السر العميل رقم واحد على الأقل (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "العميل يجب أن تحتوي على كلمة السر واحدة على الأقل من الأحرف التالية : {\$chars})"; +$LANG["validation_client_password_missing_uppercase"] = "ويجب أن تحتوي كلمة السر عميل واحد على الأقل رسالة كبيرة."; +$LANG["validation_client_password_too_short"] = "كلمة المرور العميل يجب أن يكون على الأقل {\$number} حرفا."; +$LANG["validation_col_name_is_reserved_word"] = "آسف ، وقاعدة البيانات هذه اسم العمود هو عمل محفوظة في الخلية. يرجى تسميته!"; +$LANG["validation_db_name"] = "لا يمكن أن تحتوي أسماء قواعد البيانات على نقاط أو علامات مائلة."; +$LANG["validation_db_not_updated_invalid_input"] = "ويمكن أن لا يتم تحديث قاعدة البيانات. الرجاء التحقق لمعرفة القيم التي أدخلتها صحيحة."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "آسف ، يجب أن المسؤول الافتراضي والمواضيع العميل أن يكون دائما ممكنا."; +$LANG["validation_default_phone_num_required"] = "يرجى ملء في رقم الهاتف الكامل ل<B>{ \$ الحقل} </ B> الميدان -- الأرقام فقط."; +$LANG["validation_default_rule_alpha"] = "يرجى فقط أدخل الحروف والأرقام ل<B>{ \$ الحقل} </ B> الميدان."; +$LANG["validation_default_rule_letters_only"] = "يرجى إدخال الحروف فقط ل<B>{ \$ الحقل} </ B> الميدان."; +$LANG["validation_default_rule_numbers_only"] = "يرجى إدخال أرقام فقط ل<B>{ \$ الحقل} </ B> الميدان."; +$LANG["validation_default_rule_required"] = "الرجاء إدخال قيمة للحقل { \$} <B></ B> الميدان."; +$LANG["validation_default_rule_valid_email"] = "الرجاء إدخال عنوان بريد إلكتروني صالح لحقل { \$} <B></ B> الميدان."; +$LANG["validation_delete_form_confirm"] = "يرجى التحقق من مربع لتأكيد أنك تريد حذف هذا الشكل."; +$LANG["validation_delete_non_empty_option_list"] = "تحذير! ويستخدم هذا الخيار قائمة حقول نموذج واحد أو أكثر. وسوف يكون من حذف تلك الحقول وقف للعمل بشكل صحيح."; +$LANG["validation_display_names_incomplete"] = "الرجاء إدخال قيمة لجميع أسماء العرض ، أو فوق الذكية املأ خيار لهم بالدخول بشكل حيوي."; +$LANG["validation_duplicate_form_field_name"] = "لا يمكنك الحصول على حقول متعددة مع نفس اسم الحقل."; +$LANG["validation_email_not_found_or_invalid"] = "آسف ، والبريد الإلكتروني المرتبط بحسابك إما غير موجود أو غير صالح."; +$LANG["validation_folder_invalid_permissions"] = "من أجل تشغيل هذا الاختبار ، وأذونات تحتاج إلى تعيين على المجلد تحميل للسماح لقراءة وكتابة ملفات (777 على يونكس)."; +$LANG["validation_folder_not_writable"] = "هذا المجلد هو ليس للكتابة."; +$LANG["validation_internal_form_too_many_fields"] = "آسف ، يمكنك فقط إنشاء حقول النماذج مع 1000 أو أقل."; +$LANG["validation_invalid_admin_email"] = "الرجاء إدخال adminstrator صالحة عنوان البريد الإلكتروني."; +$LANG["validation_invalid_admin_username"] = "اسم المستخدم الخاص بك قد تتكون فقط من أحرف الأبجدية (AZ و 0-9)."; +$LANG["validation_invalid_client_username"] = "العميل اسم مستخدم قد تتشكل فقط من أحرف أبجدية رقمية (من الألف إلى الياء و 0-9)."; +$LANG["validation_invalid_client_username2"] = "عذرا ، اسم المستخدم وربما تحتوي فقط على الحروف والأرقام والحرف تسطير. الرجاء إدخال اسم مستخدم جديد."; +$LANG["validation_invalid_column_name"] = "قد تكون أسماء الأعمدة أبجدية رقمية فقط (من الألف إلى الياء ، 0-9). يرجى الاطلاع على أسماء الأعمدة."; +$LANG["validation_invalid_custom_from_email"] = "الرجاء إدخال مخصصة صالحة 'من' عنوان البريد الإلكتروني."; +$LANG["validation_invalid_custom_reply_to_email"] = "الرجاء إدخال مخصصة صالحة 'الرد إلى' عنوان البريد الإلكتروني."; +$LANG["validation_invalid_default_sessions_timeout"] = "الرجاء إدخال قيمة صالحة (عددا) للدورات المهلة الافتراضية."; +$LANG["validation_invalid_email"] = "الرجاء إدخال عنوان بريد إلكتروني صالح."; +$LANG["validation_invalid_email_id"] = "آسف ، وهذا هو اسم المستخدم رسالة بريد إلكتروني غير صالح."; +$LANG["validation_invalid_folder"] = "آسف ، وهذا لا يبدو أن هناك مجلد صالح."; +$LANG["validation_invalid_form_field_names"] = "حقول النموذج قد لا تكون الأحرف الأبجدية ويؤكد (من الألف إلى الياء ، 0-9 ، _) ، بدون مسافات."; +$LANG["validation_invalid_num_clients_per_page"] = "الرجاء إدخال أرقام فقط في عملاء ارقام لكل صفحة الميدان."; +$LANG["validation_invalid_num_emails_per_page"] = "الرجاء إدخال أرقام فقط لرسائل البريد الإلكتروني للصفحة الواحدة."; +$LANG["validation_invalid_num_form_fields"] = "الرجاء إدخال الأرقام فقط في عدد من الحقول الحقول."; +$LANG["validation_invalid_num_forms_per_page"] = "الرجاء إدخال أرقام فقط في أشكال اخرى لكل صفحة الميدان."; +$LANG["validation_invalid_num_menus_per_page"] = "الرجاء إدخال أرقام فقط للقوائم للصفحة الواحدة."; +$LANG["validation_invalid_num_modules_per_page"] = "الرجاء إدخال أرقام فقط في وحدات اخرى في الصفحة الواحدة الميدان."; +$LANG["validation_invalid_num_option_lists_per_page"] = "الرجاء إدخال الأرقام فقط في قوائم الخيار ارقام لكل حقل الصفحة."; +$LANG["validation_invalid_num_submissions_per_page"] = "الرجاء إدخال رقم صحيح للبيانات في كل صفحة."; +$LANG["validation_invalid_sessions_timeout"] = "الرجاء إدخال صالح مهلة جلسة (الأعداد الصحيحة فقط!)."; +$LANG["validation_invalid_tab_assign_values"] = "الرجاء إدخال أرقام فقط في 'من' و 'الى' حقول."; +$LANG["validation_invalid_table_prefix"] = "الرجاء إدخال البادئة قاعدة بيانات تتكون من حرف وحرف تسطير فقط."; +$LANG["validation_invalid_upload_folder"] = "ملقم الخاص بك التثبيت من بي إتش بي لديها وضع غير صالح لقيمة upload_tmp_dir. "{\$upload_folder}" ليس مجلد صالح."; +$LANG["validation_invalid_url"] = "الرجاء إدخال عنوان صالح."; +$LANG["validation_invalid_username"] = "اسم المستخدم الخاص بك قد تتشكل فقط من أحرف أبجدية رقمية (من الألف إلى الياء و 0-9)."; +$LANG["validation_is_form_active"] = "يرجى بيان ما إذا كان النموذج نشطة أم لا."; +$LANG["validation_menu_name_taken"] = "آسف ، وهذا هو اسم القائمة التي اتخذت بالفعل. الرجاء اختيار اسم جديد."; +$LANG["validation_modules_search_no_status"] = "الرجاء اختيار مربعات الاختيار إما ممكن أو معطل."; +$LANG["validation_no_access_type"] = "الرجاء إدخال نوع الوصول."; +$LANG["validation_no_account_logout_url"] = "الرجاء إدخال عنوان موقعك خروج."; +$LANG["validation_no_account_password_confirmed"] = "الرجاء إعادة إدخال كلمة السر الجديدة."; +$LANG["validation_no_account_password_confirmed2"] = "الرجاء إعادة إدخال كلمة المرور الجديدة."; +$LANG["validation_no_admin_email"] = "الرجاء إدخال عنوان البريد الإلكتروني المسؤول."; +$LANG["validation_no_admin_theme"] = "الرجاء اختيار موضوع لحساب المسؤول."; +$LANG["validation_no_admin_theme_swatch"] = "الرجاء اختيار حامل للسمة المسؤول."; +$LANG["validation_no_client_email"] = "الرجاء إدخال عنوان البريد الإلكتروني للعميل."; +$LANG["validation_no_client_first_name"] = "الرجاء إدخال اسم العميل أولا."; +$LANG["validation_no_client_last_name"] = "الرجاء إدخال اسم العميل الماضي."; +$LANG["validation_no_client_login_page"] = "يرجى الإشارة إلى أي صفحة العميل ينبغي توجيهها إلى عند تسجيل الدخول."; +$LANG["validation_no_client_password"] = "الرجاء إدخال كلمة سر الزبون."; +$LANG["validation_no_client_theme_swatch"] = "الرجاء اختيار حامل الافتراضي لحسابات العملاء."; +$LANG["validation_no_client_username"] = "الرجاء إدخال اسم المستخدم والعميل."; +$LANG["validation_no_column_name"] = "الرجاء إدخال جميع أسماء الأعمدة ، أو انقر على زر الذكية التعبئة لملء تلقائيا."; +$LANG["validation_no_column_selected"] = "الرجاء اختيار مجال واحد على الأقل لتبدو وكأنها عمود على تقديم قائمة الصفحة."; +$LANG["validation_no_custom_from_email"] = "الرجاء إدخال مخصص 'من' عنوان البريد الإلكتروني."; +$LANG["validation_no_custom_recipient_email"] = "الرجاء إدخال عنوان البريد الإلكتروني المستلم المخصصة."; +$LANG["validation_no_custom_reply_to_email"] = "الرجاء إدخال مخصصة 'الرد إلى' عنوان البريد الإلكتروني."; +$LANG["validation_no_date_format"] = "الرجاء إدخال تنسيق التاريخ."; +$LANG["validation_no_db_column_single"] = "الرجاء إدخال اسم عمود قاعدة البيانات."; +$LANG["validation_no_db_hostname"] = "الرجاء إدخال اسم المضيف قاعدة البيانات."; +$LANG["validation_no_db_name"] = "الرجاء إدخال اسم قاعدة البيانات."; +$LANG["validation_no_db_username"] = "الرجاء إدخال اسم المستخدم حساب قاعدة البيانات."; +$LANG["validation_no_default_client_theme"] = "الرجاء اختيار موضوع الافتراضية لكافة حسابات العملاء الجدد."; +$LANG["validation_no_default_language"] = "الرجاء اختيار اللغة الافتراضية لتثبيت شكل أدوات."; +$LANG["validation_no_default_sessions_timeout"] = "الرجاء إدخال الافتراضي الدورة مهلة لحسابات المستخدم."; +$LANG["validation_no_display_text"] = "الرجاء إدخال النص عرض لكل حقل."; +$LANG["validation_no_display_text_single"] = "الرجاء إدخال قيمة نص العرض."; +$LANG["validation_no_edit_submission_page_label"] = "الرجاء إدخال تعديل تقديم الصفحة التسمية."; +$LANG["validation_no_email"] = "الرجاء إدخال عنوان بريدك الإلكتروني."; +$LANG["validation_no_email_config_field"] = "يرجى تحديد حقل النموذج الذي هو حقل البريد الإلكتروني."; +$LANG["validation_no_email_content"] = "الرجاء إدخال محتوى البريد الإلكتروني واحد على الأقل من تنسيقات (أتش تي أم أل أو النص)."; +$LANG["validation_no_email_from_field"] = "يرجى البريد الالكتروني 'من' الميدان."; +$LANG["validation_no_email_template_name"] = "من فضلك أدخل عنوان البريد الإلكتروني اسم القالب."; +$LANG["validation_no_email_template_view_id"] = "الرجاء اختيار لمشاهدة البريد الإلكتروني هذا القالب الذي ينبغي أن يتم تعيينها."; +$LANG["validation_no_email_template_view_mapping_value"] = "يرجى الإشارة عندما يجب إرسال البريد الإلكتروني."; +$LANG["validation_no_enabled_themes"] = "يرجى التأكد من أن ما لا يقل عن موضوع واحد هو مكن."; +$LANG["validation_no_first_name"] = "الرجاء إدخال اسمك الأول."; +$LANG["validation_no_form_field_name"] = "الرجاء إدخال كافة أسماء حقول النموذج."; +$LANG["validation_no_form_field_single"] = "الرجاء إدخال قيمة حقل النموذج."; +$LANG["validation_no_form_id"] = "شكل رقم لم يحدد. يرجى تسجيل الخروج وحاول مرة أخرى."; +$LANG["validation_no_form_name"] = "الرجاء إدخال اسم النموذج."; +$LANG["validation_no_form_url"] = "الرجاء إدخال عنوان النموذج."; +$LANG["validation_no_last_name"] = "الرجاء إدخال اسم آخر."; +$LANG["validation_no_login_page"] = "يرجى الإشارة إلى الصفحة التي تريد أن ترسل كل مرة تقوم فيها بتسجيل الدخول."; +$LANG["validation_no_logout_url"] = "الرجاء إدخال عنوان خروج."; +$LANG["validation_no_main_email_recipient"] = "الرجاء إدخال واحد على الأقل الرئيسي البريد الإلكتروني المستلم (أي ليست مخفية أو سم مكعب)."; +$LANG["validation_no_menu"] = "الرجاء اختيار القائمة لحساب المستخدم هذا."; +$LANG["validation_no_menu_id"] = "الرجاء اختيار القائمة."; +$LANG["validation_no_num_clients_per_page"] = "الرجاء إدخال عدد من حسابات الزبائن في كل صفحة."; +$LANG["validation_no_num_emails_per_page"] = "الرجاء إدخال عدد من رسائل البريد الإلكتروني إلى قائمة في كل صفحة."; +$LANG["validation_no_num_form_fields"] = "الرجاء إدخال عدد من الحقول للنموذج الخاص بك."; +$LANG["validation_no_num_forms_per_page"] = "الرجاء إدخال عدد من الأشكال في كل صفحة."; +$LANG["validation_no_num_menus_per_page"] = "الرجاء إدخال عدد من القوائم لقائمة في كل صفحة."; +$LANG["validation_no_num_modules_per_page"] = "الرجاء إدخال عدد من وحدات في كل صفحة."; +$LANG["validation_no_num_option_lists_per_page"] = "الرجاء إدخال عدد من قوائم الخيار لكل صفحة."; +$LANG["validation_no_num_submissions_per_page"] = "الرجاء إدخال عدد الطلبات المقدمة لعرضها في كل صفحة."; +$LANG["validation_no_option_list_name"] = "الرجاء إدخال اسم القائمة الخيار."; +$LANG["validation_no_page_titles"] = "يرجى إدخال عناوين الصفحة الافتراضي لحسابات المستخدم."; +$LANG["validation_no_password"] = "الرجاء إدخال كلمة السر."; +$LANG["validation_no_program_name"] = "الرجاء إدخال اسم البرنامج."; +$LANG["validation_no_second_password"] = "الرجاء إعادة إدخال كلمة السر الخاصة بك."; +$LANG["validation_no_sessions_timeout"] = "الرجاء إدخال مهلة الدورة."; +$LANG["validation_no_smart_fill_values"] = "الرجاء إدخال حقل النموذج اسم وعنوان النموذج."; +$LANG["validation_no_table_prefix"] = "الرجاء إدخال البادئة قاعدة البيانات."; +$LANG["validation_no_tabs_defined"] = "لا علامات محددة"; +$LANG["validation_no_test_email_recipient"] = "الرجاء إدخال عنوان البريد الإلكتروني من حيث ينبغي لنا أن إرسال البريد الإلكتروني الاختبار."; +$LANG["validation_no_test_email_submission_id"] = "الرجاء إدخال رقم معرف تقديمها."; +$LANG["validation_no_theme"] = "الرجاء اختيار موضوع."; +$LANG["validation_no_theme_swatch"] = "الرجاء اختيار حامل للموضوع المحدد."; +$LANG["validation_no_timezone_offset"] = "الرجاء إدخال الزمنية تعويض."; +$LANG["validation_no_titles"] = "يرجى إدخال عناوين الصفحات."; +$LANG["validation_no_two_column_names"] = "آسف ، لا يجوز لك الدخول الى قاعدة البيانات نفسها اسم العمود مرتين."; +$LANG["validation_no_ui_language"] = "الرجاء اختيار لغة واجهة."; +$LANG["validation_no_url"] = "الرجاء إدخال عنوان."; +$LANG["validation_no_username"] = "الرجاء إدخال اسم المستخدم الخاص بك."; +$LANG["validation_no_username_or_js"] = "يجب عليك إدخال اسم المستخدم الخاص بك. الرجاء تفعيل جافا سكريبت في المتصفح."; +$LANG["validation_no_view_fields"] = "مشاهدة الخاص بك لا يحتوي على أي حقول! كنت بحاجة إلى تعيين واحد على الأقل الميدانية أن يكون هناك شيء لتظهر في العرض الخاص بك."; +$LANG["validation_no_view_fields_selected"] = "يرجى اختيار واحد أو أكثر من المجالات إضافة إلى عرض."; +$LANG["validation_no_view_name"] = "الرجاء إدخال اسم عرض."; +$LANG["validation_num_rows_to_add"] = "الرجاء إدخال عدد الصفوف لإضافة."; +$LANG["validation_option_list_name_taken"] = "آسف ، هي التي اتخذت بالفعل هذا الاسم قائمة الخيار. الرجاء اختيار اسم جديد."; +$LANG["validation_password_in_password_history"] = "بالنسبة للأمن ، لا يمكنك إدخال كلمة المرور نفسها أي من {\$history_size} كلمات المرور> ب. الرجاء إدخال كلمة مرور مختلفة."; +$LANG["validation_passwords_different"] = "يرجى التأكد من كلمة السر هي نفسها."; +$LANG["validation_please_enter_search_date_range"] = "الرجاء تحديد البحث نطاق التاريخ."; +$LANG["validation_please_enter_search_keyword"] = "الرجاء إدخال كلمة البحث."; +$LANG["validation_select_field_type"] = "يرجى تحديد نوع الحقل."; +$LANG["validation_select_submissions_to_copy"] = "يرجى تحديد تلك التقديمات التي ترغب في نسخها."; +$LANG["validation_select_submissions_to_delete"] = "يرجى تحديد تلك العروض كنت ترغب في حذف."; +$LANG["validation_smart_fill_cannot_fill"] = "آسف ، لم نتمكن من ملء هذا الحقل."; +$LANG["validation_smart_fill_invalid_field_type"] = "لم نتمكن من تحديد موقع الحقل ، ولكنها ليست المنسدلة ، مربع أو مجموعة الراديو."; +$LANG["validation_smart_fill_no_field_found"] = "آسف ، لم نتمكن من العثور على حقل نموذج مع هذا الاسم على الصفحة المحددة."; +$LANG["validation_smart_fill_no_page"] = "يرجى تحديد موقع الصفحة التي تحتوي على حقل كنت ترغب في تعبئة الذكية."; +$LANG["validation_smart_fill_upload_all_pages"] = "يرجى تحميل جميع الصفحات الموجودة في النموذج الخاص بك."; +$LANG["validation_upload_folder_not_writable"] = "هذا المؤقتة تحميل المجلد المحدد من قبل [فب] التثبيت غير قابل للكتابة. حتى هذا هو الثابت ، يمكن أن الملفات لا يمكن تحميلها من خلال نموذج أدوات (أو أي برنامج آخر [فب]). يرجى الاتصال بموفر خدمة الاستضافة."; +$LANG["validation_upload_html_files_only"] = "الرجاء الاقتصار على تحميل الملفات أتش تي أم أل."; +$LANG["validation_username_taken"] = "عفوا ، هذا المستخدم هي التي اتخذت بالفعل. الرجاء إدخال اسم مستخدم آخر."; +$LANG["validation_wrong_password"] = "آسف ، وكلمة السر التي لا تتطابق."; +$LANG["word_about"] = "حول"; +$LANG["word_access"] = "وصول"; +$LANG["word_account"] = "حساب"; +$LANG["word_account_sp"] = "حساب (ق)"; +$LANG["word_accounts"] = "الحسابات"; +$LANG["word_action"] = "العمل"; +$LANG["word_active"] = "تفعيل"; +$LANG["word_add"] = "اضف"; +$LANG["word_add_rightarrow"] = "إضافة »"; +$LANG["word_add_uc_rightarrow"] = "إضافة »"; +$LANG["word_administration"] = "الادارة"; +$LANG["word_administrator"] = "مسؤول"; +$LANG["word_after"] = "بعد"; +$LANG["word_aquamarine"] = "زبرجد"; +$LANG["word_asc"] = "تصاعدي"; +$LANG["word_author"] = "كاتب"; +$LANG["word_author_c"] = "الكاتب :"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«عودة"; +$LANG["word_bcc_c"] = "مخفية :"; +$LANG["word_before"] = "قبل"; +$LANG["word_benefits"] = "الفوائد"; +$LANG["word_blue"] = "أزرق"; +$LANG["word_cancel"] = "إلغاء"; +$LANG["word_cc_c"] = "نسخة إلى :"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "خانات"; +$LANG["word_checklist"] = "المرجعية"; +$LANG["word_client"] = "زبون"; +$LANG["word_client_c"] = "العميل :"; +$LANG["word_clients"] = "زبائن"; +$LANG["word_close"] = "غلق "; +$LANG["word_code"] = "الرمز "; +$LANG["word_column"] = "العمود"; +$LANG["word_columns"] = "أعمدة"; +$LANG["word_columns_sp"] = "العمود (ق)"; +$LANG["word_complete"] = "كامل"; +$LANG["word_configuration"] = "التكوين"; +$LANG["word_content"] = "محتوى"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "تواصل »"; +$LANG["word_copy"] = "نسخ"; +$LANG["word_custom"] = "مخصص"; +$LANG["word_data"] = "البيانات"; +$LANG["word_date"] = "تاريخ"; +$LANG["word_debugging_c"] = "التصحيح :"; +$LANG["word_delete"] = "حذف"; +$LANG["word_desc"] = "تنازلي"; +$LANG["word_direct"] = "مباشر"; +$LANG["word_disabled"] = "تعطيل"; +$LANG["word_documentation"] = "توثيق"; +$LANG["word_done"] = "فعل"; +$LANG["word_drawbacks"] = "عيوب"; +$LANG["word_dropdown"] = "المنسدلة"; +$LANG["word_edit"] = "تحرير"; +$LANG["word_editable"] = "قابل للتحرير"; +$LANG["word_email"] = "البريد الالكتروني"; +$LANG["word_email_c"] = "البريد الإلكتروني :"; +$LANG["word_emails"] = "البريد الالكتروني"; +$LANG["word_enabled"] = "مكن"; +$LANG["word_equals"] = "يساوي"; +$LANG["word_error"] = "خطأ"; +$LANG["word_error_c"] = ":خطأ"; +$LANG["word_examples_c"] = "أمثلة :"; +$LANG["word_external"] = "الخارجية"; +$LANG["word_fail"] = "تفشل"; +$LANG["word_field"] = "حقل"; +$LANG["word_field_sp"] = "ميدان (ق)"; +$LANG["word_fields"] = "الميادين"; +$LANG["word_fields_sp"] = "ميدان (ق)"; +$LANG["word_file"] = "الملف "; +$LANG["word_file_b_uc"] = "[الملف]"; +$LANG["word_files"] = "الملفات"; +$LANG["word_filters"] = "فلاتر"; +$LANG["word_filters_sp"] = "تصفية (ق)"; +$LANG["word_for"] = "لل "; +$LANG["word_form"] = "شكل"; +$LANG["word_form_c"] = "شكل :"; +$LANG["word_formatting"] = "التنسيق"; +$LANG["word_forms"] = "أشكال"; +$LANG["word_found"] = "وجد"; +$LANG["word_from"] = "من"; +$LANG["word_from_c"] = ":من"; +$LANG["word_general"] = "عام"; +$LANG["word_green"] = "أخضر"; +$LANG["word_grey"] = "غراي"; +$LANG["word_height"] = "ارتفاع"; +$LANG["word_help"] = "مساعدة"; +$LANG["word_hidden"] = "مخفي"; +$LANG["word_highlight"] = "تسليط الضوء"; +$LANG["word_horizontal"] = "أفقي"; +$LANG["word_hour"] = "ساعة"; +$LANG["word_hours"] = "ساعات"; +$LANG["word_html"] = "أتش تي أم أل"; +$LANG["word_id"] = "الهوية "; +$LANG["word_image"] = "الصور"; +$LANG["word_incomplete"] = "غير مكتمل"; +$LANG["word_install"] = "تثبيت"; +$LANG["word_installation"] = "تركيب"; +$LANG["word_internal"] = "داخلي"; +$LANG["word_language"] = "لغة"; +$LANG["word_large"] = "كبير"; +$LANG["word_like"] = "مثل"; +$LANG["word_login"] = "الدخول"; +$LANG["word_logo"] = "الشعار"; +$LANG["word_logout"] = "خروج"; +$LANG["word_main"] = "الرئيسية"; +$LANG["word_medium"] = "متوسط"; +$LANG["word_menu"] = "القائمة"; +$LANG["word_menus"] = "القوائم"; +$LANG["word_minutes"] = "دقائق"; +$LANG["word_misc"] = "متفرقات"; +$LANG["word_module"] = "وحدة"; +$LANG["word_modules"] = "وحدات"; +$LANG["word_na"] = "لا ينطبق"; +$LANG["word_name"] = "اسم"; +$LANG["word_name_c"] = ":الاسم "; +$LANG["word_never"] = "أبدا"; +$LANG["word_next_rightarrow"] = "»التالي"; +$LANG["word_next_step_rightarrow"] = "الخطوة التالية »"; +$LANG["word_no"] = "لا "; +$LANG["word_none"] = "بلا"; +$LANG["word_notes"] = "تلاحظ"; +$LANG["word_notification"] = "أشعار"; +$LANG["word_number"] = "عدد"; +$LANG["word_off"] = "بعيدا"; +$LANG["word_offline"] = "غير متصل"; +$LANG["word_okay"] = "حسنا"; +$LANG["word_on"] = "على"; +$LANG["word_online"] = "على الانترنت"; +$LANG["word_operator"] = "المشغل"; +$LANG["word_options"] = "خيارات"; +$LANG["word_orange"] = "البرتقالي"; +$LANG["word_order"] = "طلب"; +$LANG["word_other"] = "أخرى"; +$LANG["word_other_c"] = "الأخرى :"; +$LANG["word_page"] = "الصفحة"; +$LANG["word_page_c"] = ":صفحة"; +$LANG["word_pass"] = "تمرير"; +$LANG["word_password"] = "كلمة السر"; +$LANG["word_password_c"] = ":كلمة السر"; +$LANG["word_pending"] = "معلق"; +$LANG["word_permissions"] = "اذونات"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«السابق"; +$LANG["word_private"] = "القطاع الخاص"; +$LANG["word_public"] = "الجمهور"; +$LANG["word_purple"] = "أرجواني"; +$LANG["word_recipient"] = "المستلم"; +$LANG["word_recipient_sp"] = "المستلم (ق)"; +$LANG["word_red"] = "أحمر"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "يزيل"; +$LANG["word_remove_uc_leftarrow"] = "«إزالة"; +$LANG["word_reply_to"] = "رد الى"; +$LANG["word_reply_to_c"] = ":رد الى"; +$LANG["word_required"] = "مطلوب"; +$LANG["word_reset"] = "اعادة"; +$LANG["word_resolved"] = "حل"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "صف"; +$LANG["word_search"] = "بحث"; +$LANG["word_searchable"] = "بحث"; +$LANG["word_select"] = "حدد"; +$LANG["word_setting"] = "إعداد"; +$LANG["word_settings"] = "اعدادات "; +$LANG["word_show"] = "يظهر"; +$LANG["word_size"] = "حجم"; +$LANG["word_skipped"] = "تخطي"; +$LANG["word_small"] = "صغير"; +$LANG["word_solution"] = "حل"; +$LANG["word_sortable"] = "قابل للفرز"; +$LANG["word_start"] = "بداية"; +$LANG["word_status"] = "الوضع "; +$LANG["word_string"] = "السلسلة"; +$LANG["word_subject"] = "الموضوع "; +$LANG["word_subject_c"] = "موضوع"; +$LANG["word_submenu"] = "فرعية"; +$LANG["word_submission"] = "تقديم"; +$LANG["word_submissions"] = "التقديمات"; +$LANG["word_system"] = "نظام"; +$LANG["word_tab"] = "التبويب"; +$LANG["word_tabs"] = "علامات التبويب"; +$LANG["word_tabs_sp"] = "التبويب (ق)"; +$LANG["word_test"] = "اختبار"; +$LANG["word_text"] = "النص"; +$LANG["word_textarea"] = "ناحية النص"; +$LANG["word_textbox"] = "النص"; +$LANG["word_theme"] = "الموضوع"; +$LANG["word_themes"] = "المواضيع"; +$LANG["word_time"] = "مرة"; +$LANG["word_tiny"] = "صغير"; +$LANG["word_tips"] = "نصائح"; +$LANG["word_today"] = "اليوم"; +$LANG["word_truncate_q"] = "اقتطاع؟"; +$LANG["word_uninstall"] = "إلغاء"; +$LANG["word_unknown"] = "غير معروف"; +$LANG["word_update"] = "تحديث"; +$LANG["word_upgrade"] = "الترقية"; +$LANG["word_url_c"] = "العنوان :"; +$LANG["word_user"] = "المستخدم"; +$LANG["word_username"] = "اسم المستخدم"; +$LANG["word_username_c"] = ":اسم المستخدم"; +$LANG["word_validation"] = "التحقق من صحة"; +$LANG["word_value"] = "قيمة"; +$LANG["word_value_sp"] = "القيمه"; +$LANG["word_verified"] = "التحقق"; +$LANG["word_verify"] = "تحقق من"; +$LANG["word_version"] = "النسخه"; +$LANG["word_vertical"] = "عمودي"; +$LANG["word_view"] = "عرض "; +$LANG["word_views"] = "آراء"; +$LANG["word_warning"] = "تحذير!"; +$LANG["word_warning_c"] = "تحذير :"; +$LANG["word_web"] = "على شبكة الإنترنت"; +$LANG["word_welcome"] = "مرحبا!"; +$LANG["word_width_c"] = "العرض :"; +$LANG["word_words"] = "كلام"; +$LANG["word_wysiwyg"] = "سوغ"; +$LANG["word_yellow"] = "أصفر"; +$LANG["word_yes"] = "نعم"; \ No newline at end of file diff --git a/global/lang/az.php b/global/lang/az.php new file mode 100644 index 00000000..7c3c306d --- /dev/null +++ b/global/lang/az.php @@ -0,0 +1,1219 @@ +Warning! You have selected {\$num_selected_on_page} submissions on this page and {\$num_selected_on_other_pages} on other pages. Please choose one of the following options:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Warning! You haven't selected any submissions on this page but you've selected {\$num_selected_on_other_pages} on other pages. Please confirm you want to delete these submissions.
    "; +$LANG["confirm_delete_view"] = "Are you sure you want to delete this View?"; +$LANG["confirm_refresh_page"] = "Are you sure you want to refresh the page? This will lose any changes you have made."; +$LANG["confirm_save_change_before_redirect"] = "One or more fields have been updated. Would you like to save your changes before redirecting?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Are you sure you want to Smart Fill the database column names? This will overwrite your existing values."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "This option auto-generates the database column names based on the Display Text fields, so the contents of the database table are easier to read."; +$LANG["confirm_smart_fill_display_names"] = "Are you sure you want to Smart Fill the Display names? This will overwrite your existing values."; +$LANG["confirm_ungroup_option_list"] = "Are you sure you want to ungroup this option list? All options will be lumped into a single, ungrouped list."; +$LANG["confirm_uninstall_module"] = "Are you sure you want to uninstall this module? All module data will be lost."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Fri"; +$LANG["date_Friday"] = "Friday"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "Monday"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sat"; +$LANG["date_Saturday"] = "Saturday"; +$LANG["date_Sun"] = "Sun"; +$LANG["date_Sunday"] = "Sunday"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Thursday"; +$LANG["date_Tue"] = "Tue"; +$LANG["date_Tuesday"] = "Tuesday"; +$LANG["date_Wed"] = "Wed"; +$LANG["date_Wednesday"] = "Wednesday"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "August"; +$LANG["date_month_December"] = "December"; +$LANG["date_month_February"] = "February"; +$LANG["date_month_January"] = "January"; +$LANG["date_month_July"] = "July"; +$LANG["date_month_June"] = "June"; +$LANG["date_month_March"] = "March"; +$LANG["date_month_May"] = "May"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "October"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Apr"; +$LANG["date_month_short_Aug"] = "Aug"; +$LANG["date_month_short_Dec"] = "Dec"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "May"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Oct"; +$LANG["date_month_short_Sep"] = "Sep"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "The user account has been deleted."; +$LANG["notify_account_updated"] = "Your account has been successfully updated."; +$LANG["notify_add_display_values"] = "Add Display Values"; +$LANG["notify_admin_menu_updated"] = "The administration menu has been updated."; +$LANG["notify_admin_theme_overridden"] = "The administrator's theme has been manually overridden."; +$LANG["notify_allow_url_fopen_not_set"] = "Sorry, this test cannot be run on your web server. It requires allow_url_fopen to be set to 1 in your php.ini file. This setting allow PHP to access files through a URL, which is needed to execute this test. You can test it manually by uploading a file to that folder via FTP, then trying to access it at the URL you have supplied."; +$LANG["notify_change_temp_password"] = "You just logged in with a temporary password. You should reset your password now!"; +$LANG["notify_click_to_edit_new_submission"] = "Yeni təqdimatı redaktə etmək üçün buraya basın."; +$LANG["notify_client_account_menus_updated"] = "The client account(s) have been updated to the {\$menu_name} menu. You may now delete the menu that was previously associated with the account(s)."; +$LANG["notify_client_account_not_updated"] = "The client account could not be updated."; +$LANG["notify_client_account_themes_updated"] = "The client account(s) have been updated to the {\$theme} theme. You may now disable the theme previously associated with the account(s)."; +$LANG["notify_client_account_updated"] = "The client account has been successfully updated."; +$LANG["notify_client_menu_deleted"] = "The client menu has been deleted."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "The menu has been deleted, but the following client accounts now no longer have a menu! You need to update the following accounts: "; +$LANG["notify_client_menu_updated"] = "The client menu has been updated."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Sorry, the menu you just tried to delete is already being used by the clients listed below. In order to delete the menu you will first need to assign the clients to other menus. Click on the client name to edit that individual account, or assign all accounts to a different menu using the dropdown below."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Sorry, one of the themes you just disabled are already being used by the following client accounts. In order to disable the theme you will first need to assign each client to another theme. Click on the client name to edit that individual account, or assign all accounts to a theme using the dropdown below."; +$LANG["notify_edit_email_fields_link"] = "Click here to specify which form fields are email fields, so you can target them in your email templates."; +$LANG["notify_edit_field_new_field"] = "This is a new field. You will need to update the main page before being able to fully edit this field."; +$LANG["notify_edit_option_list_after_save"] = "You must select an Option List and then Save Changes before being able to edit it."; +$LANG["notify_email_field_config_deleted"] = "The email configuration has been deleted."; +$LANG["notify_email_fields_not_updated"] = "Sorry, we could not update the email fields."; +$LANG["notify_email_fields_updated"] = "The email fields have been updated."; +$LANG["notify_email_not_sent"] = "Sorry, the email could not be sent."; +$LANG["notify_email_not_sent_c"] = "Sorry, the email could not be sent: "; +$LANG["notify_email_sent"] = "The email(s) have been sent."; +$LANG["notify_email_template_deleted"] = "The email template has been deleted."; +$LANG["notify_email_template_updated"] = "The email template has been updated."; +$LANG["notify_enabled_module_list_updated"] = "The list of enabled modules has been updated."; +$LANG["notify_error_saving_fields"] = "There was an error saving the fields."; +$LANG["notify_field_changes_saved"] = "The changes to your field(s) have been saved."; +$LANG["notify_field_options_smart_filled"] = "Your field options have been Smart Filled."; +$LANG["notify_field_selected"] = "The field has been selected. Click here to return to the main field list."; +$LANG["notify_field_updated"] = "This field has been updated."; +$LANG["notify_file_not_uploaded"] = "The file could not be uploaded."; +$LANG["notify_file_uploaded"] = "The file was successfully uploaded."; +$LANG["notify_filters_not_updated"] = "There was an error updating this client's submission filters."; +$LANG["notify_filters_updated"] = "The submission filters have been updated for this client."; +$LANG["notify_folder_correct_permissions"] = "This folder has the correct permissions."; +$LANG["notify_folder_url_match"] = "The folder and URL appear to correctly match."; +$LANG["notify_folder_url_no_access"] = "This test could not be performed since PHP was unable to access that URL. This is usually caused by the URL being password protected with a .htaccess file."; +$LANG["notify_folder_url_no_match"] = "This folder-URL combination does not appear to be a match."; +$LANG["notify_folder_url_unknown_error"] = "An unknown error occurred. You can test it manually by uploading a file to that folder via FTP, then trying to access it at the URL you have supplied."; +$LANG["notify_form_access_type_email_info"] = "This form has administrator access type, so no clients have access to it and are not listed in the dropdown below."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sorry, a form with that ID does not exist."; +$LANG["notify_form_field_not_added"] = "The form field '{\$fieldname}' could not be added."; +$LANG["notify_form_field_options_updated"] = "The form field options have been updated."; +$LANG["notify_form_field_removed"] = "The form field was successfully removed."; +$LANG["notify_form_fields_removed"] = "The form fields were successfully removed."; +$LANG["notify_form_not_updated_notify_admin"] = "Your form could not be updated. Please contact the site administrator to report this problem."; +$LANG["notify_form_settings_updated"] = "Your form settings have been updated successfully."; +$LANG["notify_form_submission_updated"] = "The form submission has been updated."; +$LANG["notify_form_tabs_updated"] = "The tabs have been updated."; +$LANG["notify_form_updated"] = "The form has been successfully updated."; +$LANG["notify_form_views_updated"] = "The form Views have been updated."; +$LANG["notify_install_invalid_db_info"] = "Sorry, we were unable to connect to the database using the information you supplied. The error message the database returned is: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Your form has been created! You can configure your form through these tabs."; +$LANG["notify_invalid_account_information_in_sessions"] = "The account information stored in sessions is invalid. Please log in again below."; +$LANG["notify_invalid_license_key"] = "Sorry, that does not appear to be a valid license key. Please try entering it again."; +$LANG["notify_invalid_permissions"] = "You do not have the permissions to access this page. You have been logged out."; +$LANG["notify_invalid_search_dates"] = "Please use the datepicker to enter a valid date or dates."; +$LANG["notify_invalid_upload_folder"] = "The upload folder is either invalid or is not writable."; +$LANG["notify_lang_list_updated"] = "The available UI language list has been updated."; +$LANG["notify_login_info_emailed"] = "Your login information has been emailed to you."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, this module is already installed!"; +$LANG["notify_module_installed"] = "The module has been installed. Click here to select the module."; +$LANG["notify_module_list_updated"] = "The module list has been updated."; +$LANG["notify_module_uninstalled"] = "The module has been uninstalled."; +$LANG["notify_module_updated"] = "The {\$module} module has been updated to {\$version}. Click here to select the module."; +$LANG["notify_multi_field_selected"] = "The field has been selected. Click here to view and edit the field options."; +$LANG["notify_multi_field_updated"] = "This field has been updated. You will be able to configure the field options after setting up the form."; +$LANG["notify_multiple_fields_found"] = "Multiple elements were found with this field name ({\$field_name}). This can occur if your page contains more than one form or if you accidentally named one of your forms the same as another. Please choose the one you want from the list below."; +$LANG["notify_new_default_view_created"] = "A new, default View containing all your form fields has been created."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "No user account ID was found in sessions. Please log in again below."; +$LANG["notify_no_api_installed"] = "You don't have the API installed"; +$LANG["notify_no_client_permissions"] = "There are no settings available to edit."; +$LANG["notify_no_email_template_selected"] = "Please select the email template."; +$LANG["notify_no_emails_defined"] = "No emails have been defined for this form. To add a new one, click the button below."; +$LANG["notify_no_field_settings"] = "This field type doesn't contain any extra settings."; +$LANG["notify_no_fields_in_tab"] = "This tab does not contain any fields."; +$LANG["notify_no_option_lists"] = "There are no option lists defined. Click the button below to create a new one."; +$LANG["notify_no_test_submission"] = "Form Tools hasn't received a successful test submission yet."; +$LANG["notify_no_user_email_fields_configured"] = "Note: if you want to send an email to any email address that was included in the form, you first need to configure the form email fields."; +$LANG["notify_no_views"] = "Your form doesn't have any Views set up! You will need at least one View in order to manage your form data."; +$LANG["notify_no_views_assigned_to_client_form"] = "It appears that your user account hasn't been assigned to any form Views, so you won't be able to see any data. Please contact the administrator for further help."; +$LANG["notify_no_views_defined"] = "You don't have any Views defined. You will not be able to view this form's submissions unless at least one View is created. Click the button below to create the default View."; +$LANG["notify_option_list_deleted"] = "The option list has been deleted."; +$LANG["notify_option_list_updated"] = "The option list has been updated."; +$LANG["notify_public_form_omit_list_updated"] = "The client omit list for this form has been updated."; +$LANG["notify_public_view_omit_list_updated"] = "The client omit list for this View has been updated."; +$LANG["notify_required_admin_pages"] = "The following pages are required in the administrator menu: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Sorry, there wasn't any activity for a while so we had to log you out. Please log in again below."; +$LANG["notify_setup_options_updated"] = "The setup options have been updated."; +$LANG["notify_smart_fill_field_not_found"] = "We were unable to find a field with this name ({\$field_name}) in the form(s) specified. You can either manually set the field type below, or click the Skip button to edit this field later."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Your file(s) were successfully uploaded. Try clicking the Smart Fill button to try again. If this step fails, you will need to skip this step and configure your form fields manally later."; +$LANG["notify_smart_fill_submitted"] = "The form has been submitted. Depending on the size of your form and number of field options, this may take some time."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Sorry, one or more of the files you entered could not be uploaded. You will need to skip this step and configure the fields manually."; +$LANG["notify_submission_and_files_deleted"] = "The submission and any file(s) associated with it were deleted successfully."; +$LANG["notify_submission_copied"] = "Təqdimat kopyalandı."; +$LANG["notify_submission_copied_edit"] = "Təqdimat kopyalandı. Aşağıdakıları redaktə edə bilərsiniz."; +$LANG["notify_submission_deleted"] = "The submission was deleted successfully."; +$LANG["notify_submission_deleted_with_problems"] = "The submission was deleted, but the following problems were encountered when attempting to delete the following file(s):"; +$LANG["notify_submission_id_not_found"] = "The submission ID was not found."; +$LANG["notify_submission_not_updated"] = "The submission could not be updated."; +$LANG["notify_submissions_and_files_deleted"] = "The submissions and any file(s) associated with them were deleted successfully."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} təqdimat kopyalandı."; +$LANG["notify_submissions_deleted"] = "The submissions were deleted successfully."; +$LANG["notify_submissions_deleted_with_problems"] = "The submissions were deleted, but the following problems were encountered when attempting to delete the following file(s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Your test email could not be sent."; +$LANG["notify_theme_cache_folder_not_writable"] = "This theme's cache folder is not writable. In order to enable this theme, the {\$folder} folder needs to have full read-write permissions."; +$LANG["notify_theme_list_updated"] = "The theme list has been updated."; +$LANG["notify_themes_settings_updated"] = "Your theme settings have been updated."; +$LANG["notify_view_deleted"] = "The View has been deleted."; +$LANG["notify_view_group_deleted"] = "The View group has been deleted."; +$LANG["notify_view_missing_columns"] = "Oops! Sorry, this View hasn't been fully set up yet."; +$LANG["notify_view_missing_columns_admin_fix"] = "Click here to specify which fields should appear as columns on this page."; +$LANG["notify_view_updated"] = "The View has been updated."; +$LANG["notify_your_email_sent"] = "Your email has been successfully sent."; +$LANG["phrase_100_per_page"] = "100 per page"; +$LANG["phrase_10_per_page"] = "10 per page"; +$LANG["phrase_15_per_page"] = "15 per page"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per page"; +$LANG["phrase_25_per_page"] = "25 per page"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 Columns"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 Columns"; +$LANG["phrase_4_columns"] = "4 Columns"; +$LANG["phrase_50_per_page"] = "50 per page"; +$LANG["phrase_accepting_submissions"] = "(accepting submissions)"; +$LANG["phrase_access_admin_account_c"] = "You can access your administration account here:"; +$LANG["phrase_access_type"] = "Access Type"; +$LANG["phrase_account_info"] = "Account Information"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Action Needed"; +$LANG["phrase_add_client"] = "Add Client"; +$LANG["phrase_add_client_menu"] = "Add Client Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Add default settings »"; +$LANG["phrase_add_field"] = "Add Field"; +$LANG["phrase_add_fields"] = "Add Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Add Field(s) »"; +$LANG["phrase_add_form"] = "Add Form"; +$LANG["phrase_add_form_external"] = "Add Form - External"; +$LANG["phrase_add_form_internal"] = "Add Form - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Add New Group »"; +$LANG["phrase_add_num_rows"] = "Add {\$number} Row(s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Add Submission Button"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Adding a multi-page form with the API"; +$LANG["phrase_adding_single_page_form"] = "Adding a single-page form with the API"; +$LANG["phrase_admin_menu"] = "Administrator Menu"; +$LANG["phrase_admin_only"] = "Administrator Only"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Advanced settings »"; +$LANG["phrase_all_X_results_selected"] = "All {\$numresults} Results Selected"; +$LANG["phrase_all_clients"] = "All clients"; +$LANG["phrase_all_clients_except_c"] = "All clients except:"; +$LANG["phrase_all_clients_have_access"] = "(all clients have access)"; +$LANG["phrase_all_fields"] = "All fields"; +$LANG["phrase_all_fields_displayed"] = "All fields are displayed"; +$LANG["phrase_all_statuses"] = "All statuses"; +$LANG["phrase_all_submissions"] = "All submissions"; +$LANG["phrase_allow_fields_edited"] = "Allow fields to be edited"; +$LANG["phrase_alphanumeric"] = "Alphanumeric (a-Z, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Apply Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Assign all listed client accounts to {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Assign all listed client accounts to {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "At End"; +$LANG["phrase_at_start"] = "At Start"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-disable account after # failed login attempts"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Available Clients"; +$LANG["phrase_available_fields"] = "Available Fields"; +$LANG["phrase_available_option_lists"] = "Available Option Lists"; +$LANG["phrase_available_swatches"] = "Available Swatches"; +$LANG["phrase_available_swatches_c"] = "Available Swatches:"; +$LANG["phrase_available_tabs"] = "Available Tabs"; +$LANG["phrase_available_views"] = "Available Views"; +$LANG["phrase_awaiting_form_submission"] = "Awaiting form submission."; +$LANG["phrase_back_to_field_list"] = "« back to field list"; +$LANG["phrase_back_to_search_results"] = "back to search results"; +$LANG["phrase_base_view_on"] = "Base View on..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Change Login Information"; +$LANG["phrase_characters_limit_p"] = "characters limit."; +$LANG["phrase_check_db_settings_try_again"] = "Please double-check your database settings and click the Continue button again."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Check URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Clear Omit List"; +$LANG["phrase_client_account_settings"] = "Client Account Settings"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Client Map Filters »"; +$LANG["phrase_client_may_edit"] = "Client may edit"; +$LANG["phrase_client_menu"] = "Client Menu"; +$LANG["phrase_clients_can_access_form"] = "Clients who can access the form"; +$LANG["phrase_clients_can_access_view"] = "Clients who can access the View"; +$LANG["phrase_clients_cannot_access_form"] = "Clients who cannot access the form"; +$LANG["phrase_clients_cannot_access_view"] = "Clients who cannot access the View"; +$LANG["phrase_clients_may_edit"] = "Clients may edit"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Code / Markup Field"; +$LANG["phrase_code_markup_type"] = "Code / Markup Type"; +$LANG["phrase_codes_c"] = "Error Codes:"; +$LANG["phrase_column_width"] = "Column Width"; +$LANG["phrase_company_name"] = "Company Name"; +$LANG["phrase_configure_form_email_fields"] = "Configure Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Confirm Folder-URL Match"; +$LANG["phrase_connect_rows"] = "Connect rows"; +$LANG["phrase_copy_email_settings_from"] = "Copy Email Settings From..."; +$LANG["phrase_copy_settings_from"] = "Copy Settings From..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Create Account"; +$LANG["phrase_create_admin_account"] = "Create Admin Account"; +$LANG["phrase_create_config_file"] = "Create Config File"; +$LANG["phrase_create_database_tables"] = "Create Database Tables"; +$LANG["phrase_create_default_view"] = "Create Default View"; +$LANG["phrase_create_file"] = "Create File"; +$LANG["phrase_create_group"] = "Create Group"; +$LANG["phrase_create_new_email"] = "Create New Email"; +$LANG["phrase_create_new_menu"] = "Create New Menu"; +$LANG["phrase_create_new_option_list"] = "Create New Option List"; +$LANG["phrase_create_new_option_list_group"] = "Create new option list group"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Create New Option List »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Create New View Group"; +$LANG["phrase_custom_display_format"] = "Custom Display Format"; +$LANG["phrase_custom_recipient"] = "Custom Recipient"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Data Type"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Database name"; +$LANG["phrase_database_password"] = "Database password"; +$LANG["phrase_database_settings"] = "Database Settings"; +$LANG["phrase_database_setup"] = "Database Setup"; +$LANG["phrase_database_table_prefix"] = "Database table prefix"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Date Format"; +$LANG["phrase_db_column"] = "DB Column"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Default Client Account Theme"; +$LANG["phrase_default_date_field_search_value"] = "Default date field search value"; +$LANG["phrase_default_language"] = "Default Language"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Default Sort Order"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Default value"; +$LANG["phrase_default_values"] = "Default values"; +$LANG["phrase_default_values_new_submissions"] = "Default Values for New Submissions"; +$LANG["phrase_delete_field"] = "Delete Field"; +$LANG["phrase_delete_form"] = "Delete Form"; +$LANG["phrase_delete_row"] = "Delete Row"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Delete associated files when deleting submission"; +$LANG["phrase_delete_view"] = "Delete View"; +$LANG["phrase_disconnect_rows"] = "Disconnect rows"; +$LANG["phrase_display_email"] = "Display Email"; +$LANG["phrase_display_name"] = "Display Name"; +$LANG["phrase_display_text"] = "Display Text"; +$LANG["phrase_display_value"] = "Display Value"; +$LANG["phrase_edit_admin_menu"] = "Edit Admin Menu"; +$LANG["phrase_edit_client"] = "Edit Client"; +$LANG["phrase_edit_client_menu"] = "Edit Client Menu"; +$LANG["phrase_edit_email_template"] = "Edit Email Template"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit form access type]"; +$LANG["phrase_edit_option_list"] = "Edit Option List"; +$LANG["phrase_edit_submission"] = "Edit Submission"; +$LANG["phrase_edit_submission_label"] = "Edit Submission Label"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "Email Settings"; +$LANG["phrase_email_template"] = "Email template"; +$LANG["phrase_email_template_name"] = "Email template name"; +$LANG["phrase_error_learn_more"] = "Learn more about this error."; +$LANG["phrase_error_text_intro"] = "Please fix the following error(s) and resubmit:"; +$LANG["phrase_errors_learn_more"] = "Click on the error codes to learn more."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "External Form"; +$LANG["phrase_external_form_info"] = "External Form Info"; +$LANG["phrase_external_your_own_form"] = "External (your own form)"; +$LANG["phrase_field_comments"] = "Field Comments"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Field Options"; +$LANG["phrase_field_size"] = "Field Size"; +$LANG["phrase_field_skipped"] = "Field Skipped"; +$LANG["phrase_field_specific_settings"] = "Field-Specific Settings"; +$LANG["phrase_field_type"] = "Field Type"; +$LANG["phrase_field_type_no_validation"] = "There are no validation rules available for this field type."; +$LANG["phrase_field_types"] = "Field Types"; +$LANG["phrase_field_value"] = "Field Value"; +$LANG["phrase_field_values_to_display_values"] = "Field Values » Display Values"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Touches"; +$LANG["phrase_finalize_form"] = "Finalize Form"; +$LANG["phrase_first_name"] = "First Name"; +$LANG["phrase_footer_text"] = "Footer Text"; +$LANG["phrase_for_any_form_submission"] = "For any form submission"; +$LANG["phrase_for_view_submissions"] = "Only submissions that fit into the following View(s)"; +$LANG["phrase_forgot_password"] = "Forgot your Password?"; +$LANG["phrase_form_already_selected"] = "Form already selected"; +$LANG["phrase_form_email_field_b_c"] = "[Form email field]:"; +$LANG["phrase_form_email_field_configuration"] = "Form Email Field Configuration"; +$LANG["phrase_form_email_fields"] = "Form Email Fields"; +$LANG["phrase_form_field"] = "Form Field"; +$LANG["phrase_form_field_contents"] = "Form Field Contents"; +$LANG["phrase_form_field_name"] = "Form Field Name"; +$LANG["phrase_form_field_placeholders"] = "Form field placeholders"; +$LANG["phrase_form_fields"] = "Form Fields"; +$LANG["phrase_form_info"] = "Form Information"; +$LANG["phrase_form_info_2"] = "2. Form Information"; +$LANG["phrase_form_list"] = "Form List"; +$LANG["phrase_form_name"] = "Form Name"; +$LANG["phrase_form_page"] = "Form Page"; +$LANG["phrase_form_placeholders"] = "Form Placeholders"; +$LANG["phrase_form_submission"] = "Form Submission"; +$LANG["phrase_form_submissions"] = "Form Submissions"; +$LANG["phrase_form_type"] = "Form Type"; +$LANG["phrase_form_url"] = "Form URL"; +$LANG["phrase_form_urls"] = "Form URLs"; +$LANG["phrase_forms_assigned_to_any_account"] = "Forms assigned to any account"; +$LANG["phrase_forms_page_default_message"] = "Forms page default message"; +$LANG["phrase_ft_installation"] = "Form Tools Installation Script"; +$LANG["phrase_full_width"] = "Full Width"; +$LANG["phrase_getting_started"] = "getting started"; +$LANG["phrase_global_placeholders"] = "Global Placeholders"; +$LANG["phrase_group_name"] = "Group Name"; +$LANG["phrase_group_options_q"] = "Group options?"; +$LANG["phrase_group_rows"] = "Group rows"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Highlight Colour"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Import Option List »"; +$LANG["phrase_input_length"] = "Input Length"; +$LANG["phrase_installation_help"] = "Installation Help"; +$LANG["phrase_internal_form"] = "Internal Form"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Is this a multi-page form?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response Placeholders"; +$LANG["phrase_large_300px"] = "Large (300px)"; +$LANG["phrase_large_400px"] = "Large (400px)"; +$LANG["phrase_last_7_days"] = "Last 7 days"; +$LANG["phrase_last_logged_in"] = "Last Logged In"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Last modified date"; +$LANG["phrase_last_name"] = "Last Name"; +$LANG["phrase_letters_only"] = "Letters Only"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Limit email content to fields in View"; +$LANG["phrase_loading_ellipsis"] = "Loading..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Log in as this user"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "« Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Username"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Main Settings"; +$LANG["phrase_manage_client"] = "Manage Client"; +$LANG["phrase_manage_client_omit_list"] = "Manage Client Omit List"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Max Length"; +$LANG["phrase_max_length_words_chars"] = "- Max length (words/chars)"; +$LANG["phrase_may_add_submissions"] = "May add Submissions"; +$LANG["phrase_may_copy_submissions"] = "Göndərmələri kopyalayır"; +$LANG["phrase_may_delete_submissions"] = "May delete Submissions"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menu Name"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "Minimum password length"; +$LANG["phrase_module_description"] = "Module Description"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Module Nav"; +$LANG["phrase_month_to_date"] = "Month to date"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Multi-select dropdown"; +$LANG["phrase_multiple_fields_found"] = "Multiple Fields Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Name / Last Name"; +$LANG["phrase_new_blank_email"] = "New Blank Email"; +$LANG["phrase_new_blank_option_list"] = "New Blank Option List"; +$LANG["phrase_new_blank_view"] = "New Blank View"; +$LANG["phrase_new_ft_installation"] = "New Form Tools Installation"; +$LANG["phrase_new_option_list"] = "New Option List"; +$LANG["phrase_new_password"] = "New Password"; +$LANG["phrase_new_password_reenter"] = "New Password (please re-enter)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "New View - All fields"; +$LANG["phrase_next_client"] = "next client »"; +$LANG["phrase_next_field"] = "next field »"; +$LANG["phrase_next_form"] = "next form »"; +$LANG["phrase_next_view"] = "next View »"; +$LANG["phrase_no_clients"] = "No clients"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "No offset"; +$LANG["phrase_no_option_lists_available"] = "No options lists available."; +$LANG["phrase_no_views"] = "No Views"; +$LANG["phrase_no_views_with_filters_p"] = "(No Views with filters defined)"; +$LANG["phrase_none_not_recommended"] = "None (not recommended)"; +$LANG["phrase_not_assigned_to_option_list"] = "This field isn't assigned to an Option List."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Does NOT Equal"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "NOT Like"; +$LANG["phrase_not_visible_to_client"] = "(not visible to client)"; +$LANG["phrase_num_clients_per_page"] = "Num Clients Per Page"; +$LANG["phrase_num_emails_per_page"] = "Num Emails Per Page"; +$LANG["phrase_num_fields"] = "Number of Fields"; +$LANG["phrase_num_forms_per_page"] = "Num Forms Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Menus Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Modules Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Num Option Lists Per Page"; +$LANG["phrase_num_options"] = "Num Options"; +$LANG["phrase_num_rows"] = "Num Rows"; +$LANG["phrase_numbers_only"] = "Numbers Only"; +$LANG["phrase_often_localhost"] = "(often \"localhost\")"; +$LANG["phrase_on_form_submission"] = "On form submission"; +$LANG["phrase_one_char_number"] = "At least one character is a number (0-9)"; +$LANG["phrase_one_char_upper"] = "At least one character is uppercase"; +$LANG["phrase_one_special_char"] = "At least one of {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(only specific clients have access)"; +$LANG["phrase_open_form_in_dialog"] = "Open form in dialog window"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Open this form in a new tab/window"; +$LANG["phrase_option_list"] = "Option List"; +$LANG["phrase_option_list_name"] = "Option List Name"; +$LANG["phrase_option_list_or_contents"] = "Option List / Contents"; +$LANG["phrase_option_lists"] = "Option Lists"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Page Titles"; +$LANG["phrase_pass_on"] = "Pass on"; +$LANG["phrase_password_min"] = "It must be at least {\$length} characters."; +$LANG["phrase_password_one_number"] = "It must contain at least one number (0-9)."; +$LANG["phrase_password_one_uppercase"] = "It must contain at least one uppercase letter."; +$LANG["phrase_password_requirements_c"] = "Password requirements:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "It must contain at least one of the following characters: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissions / Other Settings"; +$LANG["phrase_permitted_file_types"] = "Permitted file types"; +$LANG["phrase_phone_number"] = "Phone Number"; +$LANG["phrase_phone_number_format"] = "Phone Number Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max allowed file upload size:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Please Confirm"; +$LANG["phrase_please_enter_license_key"] = "Please enter your license key"; +$LANG["phrase_please_select"] = "Please Select"; +$LANG["phrase_please_select_form"] = "Please select a form"; +$LANG["phrase_prev_client"] = "« prev client"; +$LANG["phrase_prev_form"] = "« prev form"; +$LANG["phrase_prevent_password_reuse"] = "Prevent re-use of # last passwords"; +$LANG["phrase_previous_field"] = "« previous field"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "« prev View"; +$LANG["phrase_program_name"] = "Program Name"; +$LANG["phrase_public_form_omit_list"] = "Public Form Omit List"; +$LANG["phrase_public_view_omit_list"] = "Public View Omit List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "There was a problem with the following query: "; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Random form submission"; +$LANG["phrase_re_enter_password"] = "Re-enter Password"; +$LANG["phrase_recipient_type"] = "Recipient type"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Refresh List"; +$LANG["phrase_refresh_module_list"] = "Refresh Module List"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Refresh Theme List"; +$LANG["phrase_register_new_email"] = "Register New Email"; +$LANG["phrase_remaining_characters"] = "remaining characters"; +$LANG["phrase_remaining_words"] = "remaining words"; +$LANG["phrase_remove_tabs"] = "Remove Tabs"; +$LANG["phrase_required_password_chars"] = "Required password characters"; +$LANG["phrase_resend_test_submission"] = "Resend Test Submission"; +$LANG["phrase_return_form_list"] = "Return to Form List"; +$LANG["phrase_row_selected"] = "{\$num_rows} row selected"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rows selected"; +$LANG["phrase_sample_data"] = "Sample Data"; +$LANG["phrase_save_changes"] = "Save Changes"; +$LANG["phrase_search_keyword"] = "Search keyword"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Select All {\$numresults} Results"; +$LANG["phrase_select_all_on_page"] = "Select All On Page"; +$LANG["phrase_select_date"] = "Select date"; +$LANG["phrase_select_field"] = "Select Field"; +$LANG["phrase_select_swatch"] = "Select swatch"; +$LANG["phrase_selected_clients"] = "Selected Clients"; +$LANG["phrase_selected_views"] = "Selected Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Send Test Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Setting Value"; +$LANG["phrase_setup_options"] = "Setup Options"; +$LANG["phrase_show_all"] = "Show All"; +$LANG["phrase_show_form"] = "Show Form"; +$LANG["phrase_size_large"] = "Large (TEXT)"; +$LANG["phrase_size_medium"] = "Medium (<=256 chars)"; +$LANG["phrase_size_small"] = "Small (<=20 chars)"; +$LANG["phrase_size_tiny"] = "Tiny (<=5 chars)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Skip Step"; +$LANG["phrase_small_100px"] = "Small (100px)"; +$LANG["phrase_small_80px"] = "Small (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fill fields from:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill User Documentation »"; +$LANG["phrase_sort_as"] = "Sort As"; +$LANG["phrase_special_fields"] = "Special Fields"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Standard Filters »"; +$LANG["phrase_step_1"] = "Step 1"; +$LANG["phrase_step_2"] = "Step 2"; +$LANG["phrase_step_3"] = "Step 3"; +$LANG["phrase_step_4"] = "Step 4"; +$LANG["phrase_step_5"] = "Step 5"; +$LANG["phrase_step_6"] = "Step 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tags in form submissions"; +$LANG["phrase_subject_line"] = "Subject Line"; +$LANG["phrase_submission_date"] = "Submission date"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Submission made: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Submission Type"; +$LANG["phrase_submissions_per_page"] = "Submissions per Page"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "You may not add validation to system fields."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Folder Permissions"; +$LANG["phrase_test_submission"] = "Test Submission"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Received"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "Text Email"; +$LANG["phrase_text_template"] = "Text Template"; +$LANG["phrase_the_previous_month"] = "The previous Month"; +$LANG["phrase_theme_description"] = "Theme Description"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Unselect All"; +$LANG["phrase_update_accounts"] = "Update Accounts"; +$LANG["phrase_update_email_template"] = "Update Email Template"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Update Order"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Upload File"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Upload folder path"; +$LANG["phrase_upload_folder_url"] = "Upload folder URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Use Default Value?"; +$LANG["phrase_used_by_num_form_fields"] = "Used by # Form Fields"; +$LANG["phrase_uses_swatches"] = "Uses Swatches"; +$LANG["phrase_valid_email"] = "Valid Email"; +$LANG["phrase_validation_error"] = "Validation Error"; +$LANG["phrase_validation_rule"] = "Validation Rule"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "View Group"; +$LANG["phrase_view_id"] = "View ID"; +$LANG["phrase_view_name"] = "View Name"; +$LANG["phrase_view_placeholders"] = "View Placeholders"; +$LANG["phrase_view_submissions"] = "View Submissions"; +$LANG["phrase_view_uploaded_files"] = "view uploaded files"; +$LANG["phrase_viewing_range"] = " [viewing {\$startnum} to {\$endnum}]"; +$LANG["phrase_when_sent"] = "When sent"; +$LANG["phrase_when_submission_is_deleted"] = "When submission is deleted"; +$LANG["phrase_when_submission_is_edited"] = "When submission is edited"; +$LANG["phrase_who_can_access"] = "Who can access?"; +$LANG["phrase_word_limit_p"] = "word limit."; +$LANG["phrase_year_to_date"] = "Year to date"; +$LANG["phrase_yes_for_all_views"] = "Yes, for all Views"; +$LANG["phrase_yes_for_specific_views"] = "Yes, for specific Views"; +$LANG["phrase_your_account"] = "Your Account"; +$LANG["phrase_your_email"] = "Your Email"; +$LANG["phrase_your_email_address"] = "Your email address"; +$LANG["processing_form_disabled"] = "Sorry, this form has been disabled."; +$LANG["processing_form_incomplete"] = "Sorry, this form does not appear to be fully set up from within Form Tools. The most likely cause of this problem is that you removed the \"form_tools_initialize_form\" hidden form field, but didn't complete all the steps of the \"Add Form\" process.

    Please log in and review the form configuration."; +$LANG["processing_init_complete"] = "Thank you! Your test submission has been put through successfully. Please return to the Form Tools Administration panel and click the \"Refresh\" button at the bottom of the Add Form Step 3 page to finish setting up your form."; +$LANG["processing_invalid_form_id"] = "Sorry, this doesn't appear to be a valid form ID."; +$LANG["processing_no_form_id"] = "process.php requires a form ID for processing. Make sure your form contains a hidden field with the name \"form_tools_form_id\" that's passing along the form ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Tools is unable to determine where to redirect when they fail to enter the CAPTCHA properly. Please pass in a hidden field with the name form_tools_form_url containing the URL of the form."; +$LANG["processing_no_post_vars"] = "process.php is not receiving any data. Note: this script cannot be loaded directly in your browser.
    Make sure your form is sending via POST."; +$LANG["processing_no_redirect_url"] = "The submission was processed correctly, but you haven't specified a redirect URL for this form! Edit your form in the Form Tools UI and add the redirect URL."; +$LANG["special_language"] = "Azerbaijani"; +$LANG["special_language_locale"] = "Azerbaijani"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "All new client accounts will be created with the settings and permissions defined below. To override a setting for a particular client, edit the client account and visit their Settings tab."; +$LANG["text_add_form_choose_integration_method"] = "Choose which method you want to use to integrate your form with Form Tools."; +$LANG["text_add_form_code_submission_benefits"] = "This method uses the Form Tools API, included in the main Form Tools script. The API provides a number of helpful functions to make the job of integrating your form with Form Tools as simple as possible. There are no restrictions to how your form may be submitted when you use the API. You can submit the content in one go, or page by page; you can add your own custom server-side validation, CAPTCHA images; you can choose to submit the information now, but only tell it to display the submission in the Form Tools UI at a later date (see the Finalized Submissions section in the API help documentation)."; +$LANG["text_add_form_code_submission_drawbacks"] = "In order to submit your form data via PHP, your form must be located on the same website as this Form Tools installation. Secondly, for non-technical and novice Form Tools users, this method can be a little intimidating at first. But there's plenty of documentation to help you out, including two simple tutorials for integrating your single- and multi-page forms (these are linked to on a later step)."; +$LANG["text_add_form_direct_submission_benefits"] = "This is the simplest way to submit your form to Form Tools. It doesn't require any knowledge of PHP and requires only a very small change to your form. It's great for smaller forms where you want to just submit the information to the database then redirect the user to a \"thankyou\" page."; +$LANG["text_add_form_direct_submission_drawbacks"] = "This submission method is very simple to use, but doesn't provide much control for more complicated forms. Multi-page forms or forms that require server-side validation are better suited to the second method: submitting via the Form Tools API."; +$LANG["text_add_form_field_types1"] = "Almost done! This page tries to find all your form fields and determine their field types. Click the Smart Fill button on the right to get started. You will be only allowed to proceed when all actions have been resolved - issues that need your attention appear in the \"Action Needed\" column."; +$LANG["text_add_form_field_types2"] = "If your form isn't in HTML, click the Skip Step button to proceed. This can all be configured later."; +$LANG["text_add_form_field_types3"] = "This reloads the contents of your form(s). Note: this will overwrite any changes you have made on this page."; +$LANG["text_add_form_field_types4"] = "In case you run into problems, click here to skip this step. All unresolved fields are set to use the default values. You can customize these fields later."; +$LANG["text_add_form_field_types_manual_upload"] = "If you have been unable to Smart Fill your fields, you may want to try an alternative solution: upload copies of your forms in the fields below."; +$LANG["text_add_form_field_types_manual_upload2"] = "Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML versions. To get this, view and save the page from your web browser."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "There were multiple fields that couldn't be found in the form page you specified. This is mostly likely caused by one of the following:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "You entered one or more of the form URLs of your multi-page form incorrectly."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "One or more pages of your form are password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "You incorrectly entered your form URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Click here to return to the Form Information page to check your settings."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "You changed your form(s) after making the test submission"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Click here to put through another test submission."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Your form is password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "In another tab / window of this browser, log into your form then click the Refresh Page button below to try to re-find the fields."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "If none of the above solutions work, you may also want to try manually uploading your forms for processing."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "There were multiple fields that couldn't be found in the form pages you specified. This is mostly likely caused by one of these:"; +$LANG["text_add_form_help_link"] = "If you run into any trouble during these steps, try reading our user documentation."; +$LANG["text_add_form_step_1_text_1"] = "The following pages lead you through the steps to configure Form Tools to store your form submissions. Before continuing, please check that:"; +$LANG["text_add_form_step_1_text_2"] = "your form has already been created and it's accessible via a URL (localhost is fine)"; +$LANG["text_add_form_step_1_text_3"] = "are able to edit your form"; +$LANG["text_add_form_step_2_para_2"] = "Open your form in an editor of your choice and change your form tag to the following, including the two hidden fields."; +$LANG["text_add_form_step_2_para_3"] = "Next, open your form in a web browser. Fill in every field and submit it. After submitting, you should see a notification message. Once this message is displayed, return to this page and click the refresh button below. When this process is complete, you will see a continue button below, taking you to the next step."; +$LANG["text_add_form_step_2_para_6"] = "In your form submission, include the following values. They may be set directly via PHP or passed along through the form itself. Below are examples of each. The {\$varname} is a hash (or associative array) of all form submission information - this is usually the {\$postvar} or {\$sessionvar} variable, but it may be custom built."; +$LANG["text_add_form_step_2_text_2"] = "Enter the URL of your \"thankyou\" page here. This is where you want people to be directed to after the form has been submitted."; +$LANG["text_add_form_step_3_para_1"] = "This page lists all fields in your form submission. Please examine each field and remove any that you don't need stored for every submission. If you delete a valid field by accident, or wish to change the information stored by your form, return to the previous page to send a new test submission."; +$LANG["text_add_form_step_3_para_2"] = "Note: if you're sending multiple values via checkboxes or a multi-select box, make sure your field name ends with the [] characters (see the user documentation for more information)."; +$LANG["text_add_form_step_3_text_1"] = "Here's where the fun starts! At this point, Form Tools is waiting for a test submission from your form. It will use this form submission to know what information should be stored in the database."; +$LANG["text_add_form_step_3_text_2"] = "by pointing your form to Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "using the Form Tools API"; +$LANG["text_add_form_step_3_text_4"] = "To help integrate your form, we suggest you read one of the following tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "They explain how to set up your form in preparation for the test submission, and include other information that may be of help. The line of PHP you will need is:"; +$LANG["text_add_form_step_3_text_6"] = "This ensures the data is actually sent to Form Tools. When you have put through your test submission, click the button below."; +$LANG["text_add_form_step_3_text_7"] = "On the page PRIOR to your final \"thank you\" page, be sure to add the following parameter to the \$params variable:"; +$LANG["text_add_form_step_5_para_1"] = "The database has been set up to for this form and the form has been activated for use. If you made the submission by pointing your form to process.php, please return to your form and remove the following hidden field:"; +$LANG["text_add_form_step_5_para_2"] = "Then visit your \"thank you\" page to empty the sessions. Once this is done, all new form submissions will be processed and stored by Form Tools. Try making a submission or two to verify the information is all uploading correctly."; +$LANG["text_add_form_step_5_para_3"] = "If you wish to fine-tune your form for options such as auto-emailing, adding extra form fields field, or customizing the form field types, you may edit your form at any point."; +$LANG["text_add_form_step_5_para_4"] = "Since your form contains file upload fields, you will need to configure each field to specify the file upload folder, what files are permitted and . This can be found on the Display tab of the edit form page."; +$LANG["text_add_form_step_5_para_5"] = "If the submission was sent via the API, change the ft_api_init_form_page line on the first page of your form to:"; +$LANG["text_add_submission_button"] = "The Add Submission button only appears for Views that have the \"May add submissions\" option set to \"yes\"."; +$LANG["text_admin_email_placeholder_info"] = "This is the email address of the Form Tools administrator, defined in your account settings. This only outputs the email address, so if you wish to use as an HTML link, you will need to wrap it in an <a> tag, like so: <a href=\"mailto:{\$ADMINEMAIL}\">{\$ADMINEMAIL}</a>"; +$LANG["text_also_default_login_page_theme"] = "(Also the default login page theme)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "First, please choose your form type."; +$LANG["text_client_form_page"] = "This page lists all the forms and Views assigned to this client. Tip: in order for them to see a form's submissions, they need to be assigned to at least one View."; +$LANG["text_client_map_filters_desc1"] = "Client Map filters let you limit the submissions that appear in this View by mapping the values in a form field to the values in a client account."; +$LANG["text_client_no_forms"] = "You currently have no forms available for review."; +$LANG["text_client_welcome"] = "Welcome! This program stores all information submitted by your website visitors. To view submissions for a particular form just click on the VIEW link, or see the leftmost navigation menu for other options."; +$LANG["text_config_file_created"] = "Your config.php file has been created."; +$LANG["text_config_file_not_created"] = "We couldn't create your config.php file. You will need to create the file manually."; +$LANG["text_config_file_not_created_instructions"] = "Copy and paste the contents from the section below into a file called config.php and upload it via FTP to the Form Tools /global folder (the folder that also contains a few other files and directories, one file called library.php)."; +$LANG["text_confirm_delete_form"] = "Yes, I want to delete this form"; +$LANG["text_create_admin_account"] = "Now we're going to create the administrator's account. This is used for managing all aspects of Form Tools, such as adding forms and creating client accounts."; +$LANG["text_create_new_client_account"] = "Use the form below to create a new client account. All fields are required."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "see PHP {\$datefunctionlink} function for formatting options"; +$LANG["text_default_file_settings_page"] = "This page defines the file upload settings for your Form Tools installation. These rules apply to all files uploaded through Form Tools, unless explicitly overridden for an individual form field. Note: if you change the upload folder after files have been uploaded, they will be automatically moved to the new folder."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Before continuing, you will need to update your /themes/default/cache folder to allow full read and write permissions. Once this is done, this message will disappear and you can install the script."; +$LANG["text_default_values_in_view"] = "This section is optional. All submissions created with this View will contain the default values specified here."; +$LANG["text_delete_all_forms"] = "I want to delete all files that were uploaded via this form"; +$LANG["text_delete_form_warning"] = "Are you sure you want to delete this form? This action cannot be undone. All data will be permanently lost!"; +$LANG["text_edit_admin_menu_page"] = "You may edit your menu below. To ensure you always have access to all functionality available within Form Tools, the following pages are required: Forms, Clients, Your Account, Modules, Settings and Logout."; +$LANG["text_edit_client_menu_page"] = "This section lets you customize the left navigation column for each user. You may create as many client menus as you wish and assign any account to one of them. By default there are two menus: one for you, the administrator, and one for all client accounts. The administrator account may be modified but not removed."; +$LANG["text_edit_tab_summary"] = "If you wish to group this View's fields into tabs, just enter the tab names below. After you're done, select the appropriate tab for each field group in the Fields tab."; +$LANG["text_edit_view_list_page"] = "This tab controls which fields appear as columns on the Submission Listing page, and a few additional settings for those fields. Note: we recommend you add no more than 4 or 5 of the most important fields in the View."; +$LANG["text_email_settings_intro"] = "This page lets you identify which of your form fields store emails and their corresponding names. Once you define them here, you can use them in your email templates as recipients. This section is entirely optional."; +$LANG["text_email_tab_summary"] = "This section lets you construct any number of emails to be sent whenever your form is submitted, and other triggers."; +$LANG["text_email_template_tab"] = "This section lets you determine what content appears in the email. If you wish to send your email as only text or email, only enter a value for that section. If you enter a value for both, the email will be sent in both formats."; +$LANG["text_email_template_text_1"] = "There has been a submission made through your form, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "There has been a submission made through your form, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Thanks for your submission!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Error message to show if the field fails the validation"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "External forms are forms that already exist on your website, or somewhere on the web. Select this option if you have your own form which you'd like to integrate with Form Tools."; +$LANG["text_fields_tab_summary"] = "This page lists all of your form fields. To control how they appear when browsing submissions, see the Views tab. Deleting a field on this page will delete it from all submissions, so please be careful!"; +$LANG["text_file_extension_info"] = "Enter file extensions separated with commas (e.g. jpg,gif,png) or leave blank to allow any file type."; +$LANG["text_file_field_placeholders_info"] = "File fields have two special placeholders: FILEURL and FILENAME. FILEURL is the full URL to the file, so you can link directly to it in your emails; FILENAME is just the file name."; +$LANG["text_filters_page"] = "Only those submissions that meet the rules you define below will appear in this View."; +$LANG["text_filters_tips"] = "For tips on how to use submission filters, see the User Documentation."; +$LANG["text_forgot_password"] = "No problem. Just enter your username below and your login information will be sent to your email address on file. If you have forgotten your username, please email the site administrator at {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "This form contains one or more file upload fields:"; +$LANG["text_form_placeholder_info"] = "The following placeholders may be used in any email template and language placeholder field, regardless of whatever View the email template is assigned to. The QUESTION placeholders are the specific form question; the ANSWER placeholders are the answers to each question."; +$LANG["text_form_submission_date_placeholder"] = "The date when the submission was made."; +$LANG["text_form_tools_form_url"] = "The full URL of the form. This only has a value for External forms."; +$LANG["text_form_tools_login_url"] = "The login URL for Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Note: this form currently has Administrator access type, so none of the client accounts will be able to see this View."; +$LANG["text_form_view_permission_info_private"] = "Note: this form currently has Private access type so the Public and Private options here will be limited to that subset of clients."; +$LANG["text_ft_installed"] = "Congratulations, Form Tools has been successfully installed!"; +$LANG["text_global_placeholder_info"] = "These placeholders may be used in any template and any form."; +$LANG["text_group_name_explanation"] = "For fields added through the Add Form process, this value is pre-filled to the display text of whatever field uses the value. You may wish to change it to better characterize the contents."; +$LANG["text_install_create_config_file"] = "Form Tools stores your server and database settings in a file called config.php, found in your /global/ folder. Click the \"Create File\" button to automatically generate the file on your server."; +$LANG["text_install_create_database_tables"] = "Now we're going to create the Form Tools database tables. This step requires the database itself to have already been created. If you're not sure how to do this, please contact your hosting provider."; +$LANG["text_install_db_tables_error_tip_1"] = "\"Unknown MySQL Server Host\" usually means that the hostname you provided is incorrect. Perhaps try setting this to \"localhost\" - this is a common way to refer to the \"local\" database on a web server."; +$LANG["text_install_db_tables_error_tip_2"] = "\"Can't connect to local MySQL server through socket\" means the database hostname field is again incorrect."; +$LANG["text_install_db_tables_error_tip_3"] = "\"Access denied for user:\" means that there is a problem with your username / password combination."; +$LANG["text_install_db_tables_error_tip_4"] = "\"Access denied for user: ... to database ...\" means that although your username and password you supplied is correct, it was unable to connect to that particular database with that account. This can mean that either your database name is incorrect, or that this user account is not associated with that database."; +$LANG["text_install_email_content_text"] = "Bizim onlayn sənədlərimiz (https://docs.formtools.org) və təlimlər (https://docs.formtools.org/tutorials) daxil olmaqla, başlamanıza kömək etmək üçün veb səhifəmizdə çoxlu resurs var. Sıkıştığınız və ya bir sualınız varsa, github (https://github.com/formtools/core/issues/) haqqında bir sual soruşun."; +$LANG["text_install_form_tools_server_not_supported"] = "Sorry, Form Tools will not be able to run on your server. Please click here for the minimum requirements."; +$LANG["text_install_system_check"] = "This page runs a few tests on your system to ensure it's able to run Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Internal forms exist only within Form Tools - not elsewhere on your site. Only Form Tools user accounts will have access to the form. Select this option if you don't have an existing form."; +$LANG["text_internal_form_intro"] = "Use the form below to create a new Internal form. All settings, including the number and content of the form fields can be be changed and configured later."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "In order to login and use Form Tools, you must have javascript enabled in your browser. Please enable it now, and click refresh in your browser."; +$LANG["text_last_modified_date_explanation_c"] = "The last time this submission was modified. For new submissions, this is the same as:"; +$LANG["text_limit_email_content_desc"] = "This option only works for HTML and text content generated with Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(only lists Views with one or more filters defined)"; +$LANG["text_log_in_to_ft"] = "Log in to Form Tools"; +$LANG["text_login"] = "Please log in below to access the {\$program_name} Administration Panel. If you have forgotten your password, click here."; +$LANG["text_login_info"] = "As requested, here is your login information."; +$LANG["text_name_of_form"] = "The name of the form."; +$LANG["text_no_clients"] = "There are currently no clients in the database. To add a new client account, click the Add Client button below."; +$LANG["text_no_clients_found"] = "No clients were found. Try broadening your search criteria."; +$LANG["text_no_fields_in_view"] = "This View doesn't have any fields in it. Click the link below."; +$LANG["text_no_forms"] = "There are currently no forms in the database. To add a new form, click the Add Form button below."; +$LANG["text_no_forms_found"] = "No forms were found."; +$LANG["text_no_forms_found_search"] = "No forms were found. Try broadening your search criteria."; +$LANG["text_no_modules_found"] = "No modules were found. Try broadening your search criteria."; +$LANG["text_no_recipients_added"] = "No recipients have been added."; +$LANG["text_no_search_results"] = "There are no results with this search criteria / View."; +$LANG["text_no_submissions_found"] = "Sorry, no submissions were found."; +$LANG["text_no_themes"] = "You do not have any themes defined. Click the button below to refresh your theme list, or check the Form Tools user documentation for information about adding themes."; +$LANG["text_non_deletable_fields"] = "This field is used by the Core script and cannot be edited or deleted without causing incompatibilities. If you wish to make changes to the field type, make a copy of it and edit the copy."; +$LANG["text_option_list_group_explanation"] = "If this is selected, it lets to group your options. How the groups are displayed depends on the field type using this option list."; +$LANG["text_option_list_page"] = "Radio buttons, checkboxes, dropdowns and multi-select dropdown fields all provide the user with multiple options from which they can select one or more items. In Form Tools, these are known as Option Lists. Generally, these are created automatically by the Add External Form process, but you can manually add or edit your option lists below if your form content changes or you construct fields that are only used internally."; +$LANG["text_option_list_used_by_fields"] = "This Option List is used by multiple form fields. If you update the information below, it will be changed for all of the fields (see the Form Fields tab to see the list of fields). If you wish to update the values for one, or a subset of the fields that are currently assigned, click here to create a new Option List with the same values as this one. Then you can assign the form fields you want to the new group."; +$LANG["text_public_form_omit_list_page"] = "Public forms give you the benefit of letting all client accounts access them without having to manually assign each client to them. This page lets you pinpoint those clients who may not access this form, even though the form is marked as public."; +$LANG["text_public_view_omit_list_page"] = "Public Views give you the benefit of letting all client accounts access them without having to manually assign each client to them. This page lets you pinpoint those clients who may not access this particular View."; +$LANG["text_reference_tab_info"] = "This page lists all placeholders available for your form. Placeholders are strings which can be used in the email templates, and fields marked with a special placeholder icon . When entered into a field, they are dynamically converted to the appropriate value when the field is viewed or the email is sent."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Review the user documentation"; +$LANG["text_send_email_from_edit_submission_page"] = "Include option to send this email from Edit Submission page"; +$LANG["text_smart_fill_option_list_problem"] = "We were unable to Smart Fill your field options. However, as an alternative, you can try uploading a copy of your form page in the field below. Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML version. To get this, view and save the page from your web browser."; +$LANG["text_submission_ip_address"] = "The IP Address of the user who made the submission."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Use the form below to either view or send yourself an email generated from this email template. The email is only sent to the email specified below; the main, cc and bcc email address recipients are ignored while testing."; +$LANG["text_test_email_templates_no_submissions"] = "In order to test your email templates, you must first put through at least one form submission."; +$LANG["text_theme_page_intro"] = "This page lists all of your themes. Click on a thumbnail to see a larger example of the theme's styles. The \"enabled\" checkbox determines whether or not that theme may be selected by clients. To browse all available themes, visit the Form Tools website."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Adding your first form!"; +$LANG["text_unique_submission_id"] = "The unique submission ID."; +$LANG["text_unused_option_list"] = "This option list is not being used by any form fields."; +$LANG["text_upgraded"] = "Your installation has been upgraded to {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "This Option List is used by the following fields."; +$LANG["text_view_fields_info"] = "This tab controls which fields show up when editing a submission in this View, their order and whether they are editable or not."; +$LANG["text_view_tab_summary"] = "This tab lets you create different ways to group and arrange your data. Views let you create custom subsets of your form data to split it into manageable chunks, and to limit what clients may see or edit."; +$LANG["validation_account_disabled"] = "Sorry, your account has been disabled."; +$LANG["validation_account_not_recognized"] = "Sorry, that username is not recognized."; +$LANG["validation_account_not_recognized_info"] = "Sorry, that username was not found. Please try again, or contact the site administrator at the address below."; +$LANG["validation_account_pending"] = "Your user account is pending approval by an administrator."; +$LANG["validation_check_delete_client"] = "Are you sure you want to delete this client account?"; +$LANG["validation_client_password_missing_number"] = "The client password must contain at least one number (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "The client password must contain at least one of the following characters: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "The client password must contain at least one uppercase letter."; +$LANG["validation_client_password_too_short"] = "The client password needs to be at least {\$number} characters long."; +$LANG["validation_col_name_is_reserved_word"] = "Sorry, this database column name is a reserved work in MySQL. Please rename it!"; +$LANG["validation_db_name"] = "Verilənlər bazası adları dövrlər və ya kəsiklər ola bilməz."; +$LANG["validation_db_not_updated_invalid_input"] = "The database could not be updated. Please check to see the values you entered are valid."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Sorry, the default administrator and client themes must always be enabled."; +$LANG["validation_default_phone_num_required"] = "Please fill in the full telephone number for the <b>{\$field}</b> field - numbers only."; +$LANG["validation_default_rule_alpha"] = "Please only enter letters and numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_letters_only"] = "Please only enter letters for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_numbers_only"] = "Please only enter numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_required"] = "Please enter a value for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_valid_email"] = "Please enter a valid email address for the <b>{\$field}</b> field."; +$LANG["validation_delete_form_confirm"] = "Please check the box to confirm that you wish to delete this form."; +$LANG["validation_delete_non_empty_option_list"] = "Warning! This Option List is used by one or more form fields. Deleting it will make those fields cease to work properly."; +$LANG["validation_display_names_incomplete"] = "Please enter a value for all the Display Names, or click the Smart Fill option to enter them dynamically."; +$LANG["validation_duplicate_form_field_name"] = "You cannot have multiple fields with the same field name."; +$LANG["validation_email_not_found_or_invalid"] = "Sorry, the email associated with your account either doesn't exist or is invalid."; +$LANG["validation_folder_invalid_permissions"] = "In order to run this test, the permissions need to be set on the upload folder to allow for reading and writing files (777 on Unix)."; +$LANG["validation_folder_not_writable"] = "This folder is not writeable."; +$LANG["validation_internal_form_too_many_fields"] = "Sorry, you can only created forms with 1000 fields or less."; +$LANG["validation_invalid_admin_email"] = "Please enter a valid adminstrator's email address."; +$LANG["validation_invalid_admin_username"] = "Your username may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_invalid_client_username"] = "The client's user name may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_invalid_client_username2"] = "Sorry, username's may only contain letters, numbers and the underscore character. Please enter a new username."; +$LANG["validation_invalid_column_name"] = "Column names may only be alphanumeric (a-Z, 0-9). Please check the column names."; +$LANG["validation_invalid_custom_from_email"] = "Please enter a valid custom 'From' email address."; +$LANG["validation_invalid_custom_reply_to_email"] = "Please enter a valid custom 'Reply-to' email address."; +$LANG["validation_invalid_default_sessions_timeout"] = "Please enter a valid value (a number) for the default sessions timeout."; +$LANG["validation_invalid_email"] = "Please enter a valid email address."; +$LANG["validation_invalid_email_id"] = "Sorry, that's an invalid email ID."; +$LANG["validation_invalid_folder"] = "Sorry, this does not appear to be a valid folder."; +$LANG["validation_invalid_form_field_names"] = "Form fields may only be alphanumeric and underscores (a-Z, 0-9, _), with no spaces."; +$LANG["validation_invalid_num_clients_per_page"] = "Please only enter numbers in the Num Clients Per Page field."; +$LANG["validation_invalid_num_emails_per_page"] = "Please only enter digits for the emails per page."; +$LANG["validation_invalid_num_form_fields"] = "Please only enter numbers in the Number of Fields field."; +$LANG["validation_invalid_num_forms_per_page"] = "Please only enter numbers in the Num Forms Per Page field."; +$LANG["validation_invalid_num_menus_per_page"] = "Please only enter digits for the menus per page."; +$LANG["validation_invalid_num_modules_per_page"] = "Please only enter numbers in the Num Modules Per Page field."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Please only enter numbers in the Num Option Lists Per Page field."; +$LANG["validation_invalid_num_submissions_per_page"] = "Please enter a valid number of submissions per page."; +$LANG["validation_invalid_sessions_timeout"] = "Please enter a valid session timeout (integers only!)."; +$LANG["validation_invalid_tab_assign_values"] = "Please only enter numbers in the 'from' and 'to' fields."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Your server's installation of PHP has an invalid setting for the upload_tmp_dir value. \"{\$upload_folder}\" is not a valid folder."; +$LANG["validation_invalid_url"] = "Please enter a valid URL."; +$LANG["validation_invalid_username"] = "Your username may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_is_form_active"] = "Please indicate whether the form is active or not."; +$LANG["validation_menu_name_taken"] = "Sorry, this menu name is already taken. Please choose a new name."; +$LANG["validation_modules_search_no_status"] = "Please select either the Enabled or Disabled checkboxes."; +$LANG["validation_no_access_type"] = "Please enter the access type."; +$LANG["validation_no_account_logout_url"] = "Please enter your logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Please re-enter your new password."; +$LANG["validation_no_account_password_confirmed2"] = "Please re-enter the new password."; +$LANG["validation_no_admin_email"] = "Please enter the administrator's email address."; +$LANG["validation_no_admin_theme"] = "Please select the theme for the administrator account."; +$LANG["validation_no_admin_theme_swatch"] = "Please select a swatch for the administrator theme."; +$LANG["validation_no_client_email"] = "Please enter the client's email address."; +$LANG["validation_no_client_first_name"] = "Please enter the client's first name."; +$LANG["validation_no_client_last_name"] = "Please enter the client's last name."; +$LANG["validation_no_client_login_page"] = "Please indicate which page the client should be redirected to when they log in."; +$LANG["validation_no_client_password"] = "Please enter the client's password."; +$LANG["validation_no_client_theme_swatch"] = "Please select a default swatch for the client accounts."; +$LANG["validation_no_client_username"] = "Please enter the client's username."; +$LANG["validation_no_column_name"] = "Please enter all column names, or click the Smart Fill button to automatically fill them."; +$LANG["validation_no_column_selected"] = "Please select at least one field to appear as a column on the submission listing page."; +$LANG["validation_no_custom_from_email"] = "Please enter the custom 'From' email address."; +$LANG["validation_no_custom_recipient_email"] = "Please enter the custom recipient email address."; +$LANG["validation_no_custom_reply_to_email"] = "Please enter the custom 'Reply-to' email address."; +$LANG["validation_no_date_format"] = "Please enter a date format."; +$LANG["validation_no_db_column_single"] = "Please enter the Database Column name."; +$LANG["validation_no_db_hostname"] = "Please enter the database hostname."; +$LANG["validation_no_db_name"] = "Please enter the database name."; +$LANG["validation_no_db_username"] = "Please enter the database account username."; +$LANG["validation_no_default_client_theme"] = "Please select the default theme for all new client accounts."; +$LANG["validation_no_default_language"] = "Please select the default language for your installation of Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Please enter the default session timeout for user accounts."; +$LANG["validation_no_display_text"] = "Please enter the Display Text for each field."; +$LANG["validation_no_display_text_single"] = "Please enter the Display Text value."; +$LANG["validation_no_edit_submission_page_label"] = "Please enter the Edit Submission page label."; +$LANG["validation_no_email"] = "Please enter your email address."; +$LANG["validation_no_email_config_field"] = "Please specify which form field is the email field."; +$LANG["validation_no_email_content"] = "Please enter the email content for at least one of the formats (HTML or text)."; +$LANG["validation_no_email_from_field"] = "Please the email 'from' field."; +$LANG["validation_no_email_template_name"] = "Please enter the email template name."; +$LANG["validation_no_email_template_view_id"] = "Please select the View to which this email template should be mapped."; +$LANG["validation_no_email_template_view_mapping_value"] = "Please indicate when the email should be sent."; +$LANG["validation_no_enabled_themes"] = "Please ensure that at least one theme is enabled."; +$LANG["validation_no_first_name"] = "Please enter your first name."; +$LANG["validation_no_form_field_name"] = "Please enter all form field names."; +$LANG["validation_no_form_field_single"] = "Please enter the Form Field value."; +$LANG["validation_no_form_id"] = "The form ID was not specified. Please log out and try again."; +$LANG["validation_no_form_name"] = "Please enter the form name."; +$LANG["validation_no_form_url"] = "Please enter the form URL."; +$LANG["validation_no_last_name"] = "Please enter your last name."; +$LANG["validation_no_login_page"] = "Please indicate which page you would like to be sent each time you log in."; +$LANG["validation_no_logout_url"] = "Please enter the logout URL."; +$LANG["validation_no_main_email_recipient"] = "Please enter at least one main email recipient (i.e. not a cc or bcc)."; +$LANG["validation_no_menu"] = "Please select a menu for this user account."; +$LANG["validation_no_menu_id"] = "Please select a menu."; +$LANG["validation_no_num_clients_per_page"] = "Please enter the number of client accounts per page."; +$LANG["validation_no_num_emails_per_page"] = "Please enter the number of emails to list per page."; +$LANG["validation_no_num_form_fields"] = "Please enter the number of fields for your form."; +$LANG["validation_no_num_forms_per_page"] = "Please enter the number of forms per page."; +$LANG["validation_no_num_menus_per_page"] = "Please enter the number of menus to list per page."; +$LANG["validation_no_num_modules_per_page"] = "Please enter the number of modules per page."; +$LANG["validation_no_num_option_lists_per_page"] = "Please enter the number of option lists per page."; +$LANG["validation_no_num_submissions_per_page"] = "Please enter the number of submissions to display per page."; +$LANG["validation_no_option_list_name"] = "Please enter the option list name."; +$LANG["validation_no_page_titles"] = "Please enter the default page titles for the user accounts."; +$LANG["validation_no_password"] = "Please enter your password."; +$LANG["validation_no_program_name"] = "Please enter the program name."; +$LANG["validation_no_second_password"] = "Please re-enter your password."; +$LANG["validation_no_sessions_timeout"] = "Please enter the session timeout."; +$LANG["validation_no_smart_fill_values"] = "Please enter the form field name and the URL of the form."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "No tabs defined"; +$LANG["validation_no_test_email_recipient"] = "Please enter the email address of where we should send the test email."; +$LANG["validation_no_test_email_submission_id"] = "Please enter the submission ID number."; +$LANG["validation_no_theme"] = "Please select a theme."; +$LANG["validation_no_theme_swatch"] = "Please select a swatch for the selected theme."; +$LANG["validation_no_timezone_offset"] = "Please enter the timezone offset."; +$LANG["validation_no_titles"] = "Please enter the page titles."; +$LANG["validation_no_two_column_names"] = "Sorry, you may not enter the same database column name twice."; +$LANG["validation_no_ui_language"] = "Please select a language for the interface."; +$LANG["validation_no_url"] = "Please enter a URL."; +$LANG["validation_no_username"] = "Please enter your username."; +$LANG["validation_no_username_or_js"] = "You must enter your username. Please activate javascript in your browser."; +$LANG["validation_no_view_fields"] = "Your View doesn't contain any fields! You need to assign at least one field for there to be something to show up in your View."; +$LANG["validation_no_view_fields_selected"] = "Please select one or more fields to add to the View."; +$LANG["validation_no_view_name"] = "Please enter the name of your View."; +$LANG["validation_num_rows_to_add"] = "Please enter the number of rows to add."; +$LANG["validation_option_list_name_taken"] = "Sorry, this option list name is already taken. Please choose a new name."; +$LANG["validation_password_in_password_history"] = "For security, you cannot enter the same password as any of the last {\$history_size} passwords. Please enter a different password."; +$LANG["validation_passwords_different"] = "Please make sure the passwords are the same."; +$LANG["validation_please_enter_search_date_range"] = "Please select the search date range."; +$LANG["validation_please_enter_search_keyword"] = "Please enter the search keyword."; +$LANG["validation_select_field_type"] = "Please select a field type."; +$LANG["validation_select_submissions_to_copy"] = "Xahiş edirik kopyalamak istənən göndərmələri seçin."; +$LANG["validation_select_submissions_to_delete"] = "Please select those submissions you would like to delete."; +$LANG["validation_smart_fill_cannot_fill"] = "Sorry, we could not fill this field."; +$LANG["validation_smart_fill_invalid_field_type"] = "We were unable to locate a field, but it is not a dropdown, checkbox or radio group."; +$LANG["validation_smart_fill_no_field_found"] = "Sorry, we couldn't find a form field with that name on the page specified."; +$LANG["validation_smart_fill_no_page"] = "Please locate the page containing the field you wish to Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Please upload all the pages in your form."; +$LANG["validation_upload_folder_not_writable"] = "This temporary upload folder specified by your PHP installation is not writable. Until this is fixed, files cannot be uploaded through Form Tools (or any other PHP program). Please contact your hosting provider."; +$LANG["validation_upload_html_files_only"] = "Please only upload HTML files."; +$LANG["validation_username_taken"] = "Sorry, that username is already taken. Please enter another username."; +$LANG["validation_wrong_password"] = "Sorry, that password does not match."; +$LANG["word_about"] = "Haqqında"; +$LANG["word_access"] = "Giriş"; +$LANG["word_account"] = "Hesab"; +$LANG["word_account_sp"] = "Hesab(lar)"; +$LANG["word_accounts"] = "Hesablar"; +$LANG["word_action"] = "Hadisə"; +$LANG["word_active"] = "Aktiv"; +$LANG["word_add"] = "Əlavə et"; +$LANG["word_add_rightarrow"] = "Add »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "İdarə"; +$LANG["word_administrator"] = "İdarəçi"; +$LANG["word_after"] = "Sonrakı"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "Artan"; +$LANG["word_author"] = "Müəllif"; +$LANG["word_author_c"] = "Müəllif:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« back"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Before"; +$LANG["word_benefits"] = "Benefits"; +$LANG["word_blue"] = "Blue"; +$LANG["word_cancel"] = "Cancel"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Client"; +$LANG["word_client_c"] = "Client:"; +$LANG["word_clients"] = "Clients"; +$LANG["word_close"] = "Close"; +$LANG["word_code"] = "Code"; +$LANG["word_column"] = "Column"; +$LANG["word_columns"] = "Columns"; +$LANG["word_columns_sp"] = "Column(s)"; +$LANG["word_complete"] = "Complete"; +$LANG["word_configuration"] = "Configuration"; +$LANG["word_content"] = "Content"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continue »"; +$LANG["word_copy"] = "Kopyala"; +$LANG["word_custom"] = "Custom"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Date"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Delete"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "Disabled"; +$LANG["word_documentation"] = "Documentation"; +$LANG["word_done"] = "Done"; +$LANG["word_drawbacks"] = "Drawbacks"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Edit"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Enabled"; +$LANG["word_equals"] = "Equals"; +$LANG["word_error"] = "Error"; +$LANG["word_error_c"] = "Error:"; +$LANG["word_examples_c"] = "Examples:"; +$LANG["word_external"] = "External"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Field"; +$LANG["word_field_sp"] = "Field(s)"; +$LANG["word_fields"] = "Fields"; +$LANG["word_fields_sp"] = "Field(s)"; +$LANG["word_file"] = "File"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Files"; +$LANG["word_filters"] = "Filters"; +$LANG["word_filters_sp"] = "Filter(s)"; +$LANG["word_for"] = "for"; +$LANG["word_form"] = "Form"; +$LANG["word_form_c"] = "Form:"; +$LANG["word_formatting"] = "Formatting"; +$LANG["word_forms"] = "Forms"; +$LANG["word_found"] = "Tapıldı"; +$LANG["word_from"] = "Kimdən"; +$LANG["word_from_c"] = "Kimdən:"; +$LANG["word_general"] = "General"; +$LANG["word_green"] = "Green"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Height"; +$LANG["word_help"] = "Help"; +$LANG["word_hidden"] = "Hidden"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Saat"; +$LANG["word_hours"] = "Saat"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Rəsm"; +$LANG["word_incomplete"] = "Natamam"; +$LANG["word_install"] = "Quraşdırmaq"; +$LANG["word_installation"] = "Installation"; +$LANG["word_internal"] = "Internal"; +$LANG["word_language"] = "Dil"; +$LANG["word_large"] = "Large"; +$LANG["word_like"] = "Xoşlamaq"; +$LANG["word_login"] = "Giriş"; +$LANG["word_logo"] = "Loqo"; +$LANG["word_logout"] = "Çıx"; +$LANG["word_main"] = "Əsas"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menyu"; +$LANG["word_menus"] = "Menyular"; +$LANG["word_minutes"] = "minutes"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N/A"; +$LANG["word_name"] = "Name"; +$LANG["word_name_c"] = "Name:"; +$LANG["word_never"] = "Never"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "NEXT STEP »"; +$LANG["word_no"] = "No"; +$LANG["word_none"] = "None"; +$LANG["word_notes"] = "Notes"; +$LANG["word_notification"] = "Notification"; +$LANG["word_number"] = "Number"; +$LANG["word_off"] = "Off"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "On"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Options"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Order"; +$LANG["word_other"] = "Other"; +$LANG["word_other_c"] = "Other:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Page:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Password"; +$LANG["word_password_c"] = "Password:"; +$LANG["word_pending"] = "Pending"; +$LANG["word_permissions"] = "Permissions"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« previous"; +$LANG["word_private"] = "Private"; +$LANG["word_public"] = "Public"; +$LANG["word_purple"] = "Purple"; +$LANG["word_recipient"] = "Recipient"; +$LANG["word_recipient_sp"] = "Recipient(s)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Remove"; +$LANG["word_remove_uc_leftarrow"] = "« REMOVE"; +$LANG["word_reply_to"] = "Reply-to"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Required"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Resolved"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "row"; +$LANG["word_search"] = "Search"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Select"; +$LANG["word_setting"] = "Setting"; +$LANG["word_settings"] = "Settings"; +$LANG["word_show"] = "Show"; +$LANG["word_size"] = "Size"; +$LANG["word_skipped"] = "Skipped"; +$LANG["word_small"] = "Small"; +$LANG["word_solution"] = "Solution"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Subject"; +$LANG["word_subject_c"] = "Subject"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab(s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Theme"; +$LANG["word_themes"] = "Themes"; +$LANG["word_time"] = "Time"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Today"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Silmək"; +$LANG["word_unknown"] = "Unknown"; +$LANG["word_update"] = "Təzələmək"; +$LANG["word_upgrade"] = "Yeniləmək"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "İstifadəçi"; +$LANG["word_username"] = "İstifadəçi"; +$LANG["word_username_c"] = "Username:"; +$LANG["word_validation"] = "Validation"; +$LANG["word_value"] = "Value"; +$LANG["word_value_sp"] = "Value(s)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Verify"; +$LANG["word_version"] = "Version"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "View"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Warning!"; +$LANG["word_warning_c"] = "Warning:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Welcome!"; +$LANG["word_width_c"] = "width:"; +$LANG["word_words"] = "Words"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Yellow"; +$LANG["word_yes"] = "Yes"; \ No newline at end of file diff --git a/global/lang/be.php b/global/lang/be.php new file mode 100644 index 00000000..f91884f9 --- /dev/null +++ b/global/lang/be.php @@ -0,0 +1,1219 @@ +Увага! Вы выбралі {\$num_selected_on_page} прадстаўленых на гэтай старонцы і {\$num_selected_on_other_pages} на іншых старонках. Калі ласка, абярыце адзін з наступных варыянтаў:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Увага! Вы не выбралі прадстаўленых на гэтай старонцы, але вы выбралі {\$num_selected_on_other_pages} на іншых старонках. Калі ласка, пацвердзіце, што вы хочаце выдаліць гэтыя матэрыялы.
    "; +$LANG["confirm_delete_view"] = "Вы ўпэўненыя, што жадаеце выдаліць гэтую пункт гледжання?"; +$LANG["confirm_refresh_page"] = "Вы ўпэўненыя, што хочаце, каб абнавіць старонку? Гэта будуць страчаныя ўсе змены, зробленыя вамі."; +$LANG["confirm_save_change_before_redirect"] = "Адно або некалькі палёў былі абноўленыя. Хацелі б Вы, каб захаваць змены перад перанакіраваннем?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Вы ўпэўненыя, што жадаеце Smart Fill імёны Стоўбцаў ў базе дадзеных? Гэта будзе перазапісвальны існуючыя каштоўнасці."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Гэтая опцыя аўтаматычна стварае базу дадзеных імёны слупкоў на аснове палёў Адлюстраванне тэксту, так што змесціва табліцы базы дадзеных з'яўляюцца больш зручнымі для чытання."; +$LANG["confirm_smart_fill_display_names"] = "Вы ўпэўненыя, што жадаеце Smart Fill дысплея імёны? Гэта будзе перазапісвальны існуючыя каштоўнасці."; +$LANG["confirm_ungroup_option_list"] = "Вы ўпэўненыя, што жадаеце разгруппировать гэты варыянт спісу? Усе варыянты будуць сабраны ў адзіную разгруппирована спіс."; +$LANG["confirm_uninstall_module"] = "Вы ўпэўненыя, што жадаеце выдаліць гэты модуль? Модуль Усе дадзеныя будуць страчаныя."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Сб"; +$LANG["date_Friday"] = "Пятніца"; +$LANG["date_Mon"] = "Чц"; +$LANG["date_Monday"] = "Панядзелак"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Сб"; +$LANG["date_Saturday"] = "Субота"; +$LANG["date_Sun"] = "Сонца"; +$LANG["date_Sunday"] = "Нядзеля"; +$LANG["date_Thu"] = "Чц"; +$LANG["date_Thursday"] = "Чацвер"; +$LANG["date_Tue"] = "Сб"; +$LANG["date_Tuesday"] = "Аўторак"; +$LANG["date_Wed"] = "Чц"; +$LANG["date_Wednesday"] = "Серада"; +$LANG["date_am"] = "м."; +$LANG["date_month_April"] = "Красавік"; +$LANG["date_month_August"] = "Жнівень"; +$LANG["date_month_December"] = "Снежань"; +$LANG["date_month_February"] = "Люты"; +$LANG["date_month_January"] = "Студзень"; +$LANG["date_month_July"] = "Ліпень"; +$LANG["date_month_June"] = "Чэрвень"; +$LANG["date_month_March"] = "Сакавік"; +$LANG["date_month_May"] = "Мочь"; +$LANG["date_month_November"] = "Лістапад"; +$LANG["date_month_October"] = "Кастрычнік"; +$LANG["date_month_September"] = "Верасень"; +$LANG["date_month_short_Apr"] = "Красавік"; +$LANG["date_month_short_Aug"] = "Жнівень"; +$LANG["date_month_short_Dec"] = "Снежань"; +$LANG["date_month_short_Feb"] = "Люты"; +$LANG["date_month_short_Jan"] = "Студзень"; +$LANG["date_month_short_Jul"] = "Ліпень"; +$LANG["date_month_short_Jun"] = "Чэрвень"; +$LANG["date_month_short_Mar"] = "Сакавік"; +$LANG["date_month_short_May"] = "Мочь"; +$LANG["date_month_short_Nov"] = "Лістапад"; +$LANG["date_month_short_Oct"] = "Кастрычнік"; +$LANG["date_month_short_Sep"] = "Верасень"; +$LANG["date_pm"] = "м."; +$LANG["notify_account_deleted"] = "Уліковы запіс была выдаленая."; +$LANG["notify_account_updated"] = "Ваш рахунак быў паспяхова абноўлены."; +$LANG["notify_add_display_values"] = "Дадаць адлюстравання значэнняў"; +$LANG["notify_admin_menu_updated"] = "Адміністрацыя мяне была абноўлена."; +$LANG["notify_admin_theme_overridden"] = "Тэма адміністратарам ўручную было пераадолена."; +$LANG["notify_allow_url_fopen_not_set"] = "На жаль, гэты тэст не можа быць запушчаны на вашым вэб-серверы. Яна патрабуе allow_url_fopen быць усталяваны ў 1 у файле php.ini. Гэтая настройка дазваляе PHP для доступу да файлаў праз URL, якія неабходныя для выканання дадзенага тэсту. Вы можаце праверыць гэта ўручную, загрузіўшы файл у гэтай тэчцы праз FTP, а затым спрабуе атрымаць да яго доступ на URL Вы паставілі."; +$LANG["notify_change_temp_password"] = "Вы проста ўвайсці ў сістэму з часовым паролем. Вы павінны скінуць пароль зараз!"; +$LANG["notify_click_to_edit_new_submission"] = "Націсніце тут, каб змяніць новае ўяўленне."; +$LANG["notify_client_account_menus_updated"] = "Кошт кліента (ы) былі абноўленыя да {\$menu_name} меню. Цяпер Вы можаце выдаліць мяне, які раней быў звязаны з рахунку (ов)."; +$LANG["notify_client_account_not_updated"] = "Рахунку кліента не можа быць абноўлена."; +$LANG["notify_client_account_themes_updated"] = "Кліенту рахункі (ов), былі абноўленыя з {\$theme} тэме. Цяпер Вы можаце адключыць тэму, раней звязаных з рахунку (ов)."; +$LANG["notify_client_account_updated"] = "Ўліковага запісу кліента быў паспяхова абноўлены."; +$LANG["notify_client_menu_deleted"] = "Кліент мяне была выдаленая."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Меню быў выдалены, але наступныя рахункі кліент ўжо не маюць меню! Вам неабходна абнавіць наступныя рахункі:"; +$LANG["notify_client_menu_updated"] = "Кліент мяне была абноўлена."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Прабачце, мяне толькі што спрабавалі выдаліць ўжо выкарыстоўваецца кліентамі, пералічаных ніжэй. Для таго, каб выдаліць меню вы ў першую чаргу неабходна прызначыць кліентам іншыя меню. Націсніце на імя кліента, каб рэдагаваць, што індывідуальны рахунак, або прысвоіць ўсе рахункі на іншы меню з дапамогай выпадальнага ніжэй."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "На жаль, адной з тэм, вы проста адключаная ўжо выкарыстоўваюцца наступныя рахунку кліента. Для таго каб адключыць тэму вы будзеце ў першую чаргу неабходна прызначыць кожнаму кліенту, каб іншая тэма. Націсніце на імя кліента, каб рэдагаваць, што індывідуальны рахунак, або прысвоіць ўсе рахункі на тэму, выкарыстоўваючы які прыпадае ніжэй."; +$LANG["notify_edit_email_fields_link"] = "Націсніце тут, каб паказаць, якія палі формы электроннай пошты поля, так што вы можаце нацэліць іх у шаблонах электроннай пошты."; +$LANG["notify_edit_field_new_field"] = "Гэта новае поле. Вам трэба будзе абнавіць галоўную старонку перш чым ён зможа цалкам рэдагаваць гэта полі."; +$LANG["notify_edit_option_list_after_save"] = "Вы павінны выбраць варыянт спісу, а затым Захаваць змены перш чым ён зможа змяніць яго."; +$LANG["notify_email_field_config_deleted"] = "Email канфігурацыя была выдаленая."; +$LANG["notify_email_fields_not_updated"] = "На жаль, мы не можа абнавіць поля для ліста."; +$LANG["notify_email_fields_updated"] = "Email палях былі абноўленыя."; +$LANG["notify_email_not_sent"] = "На жаль, ліст не было адпраўлена. Калі ласка, звяжыцеся з адміністрацыяй сайта па дадзеным ніжэй адрасе."; +$LANG["notify_email_not_sent_c"] = "На жаль, электронная пошта не можа быць адпраўлена:"; +$LANG["notify_email_sent"] = "Email (ы) былі адпраўленыя."; +$LANG["notify_email_template_deleted"] = "Электронны шаблон быў выдалены."; +$LANG["notify_email_template_updated"] = "Электронны шаблон быў абноўлены."; +$LANG["notify_enabled_module_list_updated"] = "Спіс уключаны модулі былі абноўленыя."; +$LANG["notify_error_saving_fields"] = "Існаваў памылка пры захаванні поля."; +$LANG["notify_field_changes_saved"] = "Змены ў полі (я) былі выратаваны."; +$LANG["notify_field_options_smart_filled"] = "Вашы варыянты вобласці былі Смарт запоўнены."; +$LANG["notify_field_selected"] = "Вобласці былі абраныя. Націсніце тут, каб вярнуцца ў асноўны спіс поля."; +$LANG["notify_field_updated"] = "Гэтая вобласць была абноўлена."; +$LANG["notify_file_not_uploaded"] = "Файл не можа быць загружаны."; +$LANG["notify_file_uploaded"] = "Файл паспяхова загружаны."; +$LANG["notify_filters_not_updated"] = "Быў Памылка пры абнаўленні прадстаўлення гэтага кліента фільтраў."; +$LANG["notify_filters_updated"] = "Прадстаўленне фільтры былі абноўленыя для гэтага кліента."; +$LANG["notify_folder_correct_permissions"] = "Гэтая папка мае правільных дазволаў."; +$LANG["notify_folder_url_match"] = "Папкі і URL-відаць, правільным матч."; +$LANG["notify_folder_url_no_access"] = "Гэты тэст не можа быць выканана з PHP не змог атрымаць доступ да гэтага URL. Звычайна гэта выклікана URL быць абаронена паролем. Htaccess файла."; +$LANG["notify_folder_url_no_match"] = "Гэтая папка-URL камбінацыя уяўляецца, не будуць супадаць."; +$LANG["notify_folder_url_unknown_error"] = "Невядомая памылка. Вы можаце праверыць гэта ўручную, загрузіўшы файл у гэтай тэчцы праз FTP, а затым спрабуе атрымаць да яго доступ на URL Вы паставілі."; +$LANG["notify_form_access_type_email_info"] = "Гэтая форма мае тып доступу адміністратара, так што ніякіх кліенты маюць доступ да яго і не пералічаны ў расчыняецца ніжэй."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "На жаль, выгляд з ID не існуе."; +$LANG["notify_form_field_not_added"] = "Палёў формы '{\$fieldname}' не можа быць дададзены."; +$LANG["notify_form_field_options_updated"] = "Параметры палі формы былі абноўленыя."; +$LANG["notify_form_field_removed"] = "Форма вобласці быў паспяхова выдалены."; +$LANG["notify_form_fields_removed"] = "Усе палі формы былі паспяхова выдаленыя."; +$LANG["notify_form_not_updated_notify_admin"] = "Ваша форма не можа быць абноўлена. Калі ласка, звяжыцеся з адміністрацыяй сайта, каб паведаміць пра дадзенай праблеме."; +$LANG["notify_form_settings_updated"] = "Вашыя наладкі формы былі паспяхова абноўлены."; +$LANG["notify_form_submission_updated"] = "Форма прадстаўлення была абноўлена."; +$LANG["notify_form_tabs_updated"] = "Укладкі былі абноўленыя."; +$LANG["notify_form_updated"] = "Форма была пасьпяхова абноўлена."; +$LANG["notify_form_views_updated"] = "Праглядаў форме былі абноўленыя."; +$LANG["notify_install_invalid_db_info"] = "На жаль, мы не маглі падключыцца да базе даных, выкарыстоўваючы інфармацыю Вы ўказалі. Паведамленне пра памылку базы дадзеных вяртаюцца: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Ваша форма была створана! Можна наладзіць форму з дапамогай гэтых укладак."; +$LANG["notify_invalid_account_information_in_sessions"] = "Кошт інфармацыі, які захоўваецца ў сесіях з'яўляецца несапраўдным. Калі ласка, увайдзіце зноў ніжэй."; +$LANG["notify_invalid_license_key"] = "На жаль, гэта не здаецца, дзеючы ліцэнзійны ключ. Калі ласка, паспрабуйце ўвесці яго зноў."; +$LANG["notify_invalid_permissions"] = "У вас няма дазволу на доступ да гэтай старонцы. Вы выйшлі з сістэмы."; +$LANG["notify_invalid_search_dates"] = "Калі ласка, выкарыстоўвайце DatePicker ўвесці правільную дату або даты."; +$LANG["notify_invalid_upload_folder"] = "Загрузіць папкі некарэктна ці не падтрымлівае запісу."; +$LANG["notify_lang_list_updated"] = "Даступных моў інтэрфейсу спіс быў абноўлены."; +$LANG["notify_login_info_emailed"] = "Лагін Ваша інфармацыя была па электроннай пошце."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "На жаль, гэты модуль ужо ўстаноўлены!"; +$LANG["notify_module_installed"] = "Гэты модуль быў усталяваны. Націсніце тут, каб выбраць модуль."; +$LANG["notify_module_list_updated"] = "Модуль спіс быў абноўлены."; +$LANG["notify_module_uninstalled"] = "Гэты модуль быў выдалены."; +$LANG["notify_module_updated"] = "{\$module Модуль абноўлены да {\$version}. Націсніце тут, каб выбраць модуль ."; +$LANG["notify_multi_field_selected"] = "Вобласці былі абраныя. Націсніце тут, каб прагледзець і адрэдагаваць поле варыянтаў."; +$LANG["notify_multi_field_updated"] = "Гэтая вобласць была абноўлена. Вы зможаце наладзіць вобласці пасля стварэння формы."; +$LANG["notify_multiple_fields_found"] = "Некалькі элементаў былі знойдзеныя з гэтым імем поля ({\$field_name}). Гэта можа адбыцца, калі старонка ўтрымлівае больш за адной формы, або калі вы выпадкова названы адным з вашых формаў такой жа, як іншы. Калі ласка, выберыце той, які вы хочаце з спісу ніжэй."; +$LANG["notify_new_default_view_created"] = "Новы, выгляд па змаўчанні, які змяшчае ўсе палі формы быў створаны."; +$LANG["notify_new_submission_created"] = "Спектаклі быў створаны. Вы можаце рэдагаваць яго ніжэй."; +$LANG["notify_no_account_id_in_sessions"] = "Няма ўліковага запісу карыстальніка ID была знойдзеная ў сесіях. Калі ласка, увайдзіце зноў ніжэй."; +$LANG["notify_no_api_installed"] = "Вы не API усталяваны"; +$LANG["notify_no_client_permissions"] = "Ёсць параметры не даступныя для рэдагавання."; +$LANG["notify_no_email_template_selected"] = "Калi ласка, выбярыце шаблон электроннай пошты."; +$LANG["notify_no_emails_defined"] = "Няма лістоў былі вызначаны для гэтай формы. Каб дадаць новы, націснуўшы на кнопку ўнізе."; +$LANG["notify_no_field_settings"] = "Гэты тып поля не ўтрымлівае якіх-небудзь дадатковых налад."; +$LANG["notify_no_fields_in_tab"] = "Гэтая ўкладка не змяшчае палёў."; +$LANG["notify_no_option_lists"] = "Ёсць няма іншага выбару, спісы вызначаны. Націсніце на кнопку, каб стварыць новы."; +$LANG["notify_no_test_submission"] = "Инсрументы не атрымала паспяховае прадстаўленне выпрабаваннем."; +$LANG["notify_no_user_email_fields_configured"] = "Заўвага: калі вы хочаце адправіць паведамленне на любы адрас электроннай пошты, які быў уключаны ў форме, спачатку неабходна наладзіць палі формы электроннай пошце."; +$LANG["notify_no_views"] = "Ваша форма не мае праглядаў пачалося! Вам спатрэбіцца прынамсі адна Прагляд для таго, каб кіраваць дадзенымі формы."; +$LANG["notify_no_views_assigned_to_client_form"] = "Падобна на тое, што ваш уліковы запіс не быў аднесены да любой форме меркаваннямі, таму вы не зможаце убачыць усе дадзеныя. Калі ласка, звяртайцеся да адміністратара для атрымання дадатковай дапамогі."; +$LANG["notify_no_views_defined"] = "У вас няма якой-небудзь Праглядаў вызначаны. Вы не будзеце ў стане разгледзець прадстаўленыя гэтую форму, калі толькі па крайняй меры адно прадстаўленне не ствараецца. Націсніце на кнопку, каб стварыць выгляд па змаўчанні."; +$LANG["notify_option_list_deleted"] = "Спіс опцый была выдаленая."; +$LANG["notify_option_list_updated"] = "Спіс опцый быў абноўлены."; +$LANG["notify_public_form_omit_list_updated"] = "Кліент апусціць спіс для гэтай формы быў абноўлены."; +$LANG["notify_public_view_omit_list_updated"] = "Кліент апусціць спіс гэтага пункту гледжання быў абноўлены."; +$LANG["notify_required_admin_pages"] = "На наступных старонках з'яўляюцца абавязковымі ў меню адміністратара: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "На жаль, не было якой-небудзь дзейнасці на некаторы час нам давялося завяршаць сеанс работы. Калі ласка, увайдзіце зноў ніжэй."; +$LANG["notify_setup_options_updated"] = "Наладкі былі абноўленыя."; +$LANG["notify_smart_fill_field_not_found"] = "Нам не ўдалося знайсці поле з такім імем ({\$field_name}) у форме (ы) указаны. Вы можаце ўручную задаваць тып поля ніжэй, або націсніце кнопку Прапусьціць, каб змяніць гэтае поле пазней."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Ваш файл (ы) былі паспяхова загружаны. Паспрабуйце націснуць кнопку Smart Fill, каб паўтарыць спробу. Калі гэты крок не ўдалося, вам давядзецца прапусціць гэты крок і наладзіць палі формы manally пазней."; +$LANG["notify_smart_fill_submitted"] = "Форма была прадстаўлена. У залежнасці ад памеру вашай форме, і шэраг палявых старонку, гэта можа заняць некаторы час."; +$LANG["notify_smart_fill_upload_fields_fail"] = "На жаль, адзін або некалькі файлаў, якія вы ўступілі не можа быць загружаны. Вам трэба будзе прапусціць гэты крок і наладзіць поля ўручную."; +$LANG["notify_submission_and_files_deleted"] = "Прадстаўленне і любога файла (ов), звязаных з ім, былі паспяхова выдаленыя."; +$LANG["notify_submission_copied"] = "Прадстаўленне было скапіявана."; +$LANG["notify_submission_copied_edit"] = "Прадстаўленне было скапіявана. Вы можаце змяніць яго ніжэй."; +$LANG["notify_submission_deleted"] = "Прадстаўлення быў паспяхова выдалены."; +$LANG["notify_submission_deleted_with_problems"] = "Было выдаленае прадстаўленне, але з наступнымі праблемамі давялося сутыкнуцца пры спробе выдаліць файл (ы):"; +$LANG["notify_submission_id_not_found"] = "ID прадстаўлення не было знойдзена."; +$LANG["notify_submission_not_updated"] = "Паказы, не можа быць абноўлена."; +$LANG["notify_submissions_and_files_deleted"] = "Паказах і любога файла (ов), звязаных з імі былі паспяхова выдаленыя."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} Довады былі скапіяваныя."; +$LANG["notify_submissions_deleted"] = "Матэрыялы былі паспяхова выдаленыя."; +$LANG["notify_submissions_deleted_with_problems"] = "Былі выдаленыя матэрыялы, але з наступнымі праблемамі давялося сутыкнуцца пры спробе выдаліць файл (ы):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Імя, тэставае паведамленне не можа быць дасланы."; +$LANG["notify_theme_cache_folder_not_writable"] = "Папка кэшу Гэтая тэма не з'яўляецца для запісу. Для таго, каб дазволіць гэтай тэме, {\$folder} папка павінна мець поўны доступ на чытанне-запіс."; +$LANG["notify_theme_list_updated"] = "Тэма спіс быў абноўлены."; +$LANG["notify_themes_settings_updated"] = "Наладкі тэмы былі абноўленыя."; +$LANG["notify_view_deleted"] = "Адкрыць была выдаленая."; +$LANG["notify_view_group_deleted"] = "Паглядзець група была выдаленая."; +$LANG["notify_view_missing_columns"] = "Упс! На жаль, гэтая кропка гледжання не была цалкам створана яшчэ."; +$LANG["notify_view_missing_columns_admin_fix"] = "Націсніце тут , каб паказаць, якія палі павінны з'явіцца ў выглядзе слупкоў на гэтай старонцы."; +$LANG["notify_view_updated"] = "Адкрыць быў абноўлены."; +$LANG["notify_your_email_sent"] = "Ваша паведамленне паспяхова дасланы."; +$LANG["phrase_100_per_page"] = "100 на старонцы"; +$LANG["phrase_10_per_page"] = "10 вынікаў на старонцы"; +$LANG["phrase_15_per_page"] = "15 на старонку"; +$LANG["phrase_1_direct"] = "1. Прамой"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 на старонцы"; +$LANG["phrase_25_per_page"] = "25 на старонцы"; +$LANG["phrase_2_code"] = "2. Кодэкс"; +$LANG["phrase_2_columns"] = "2 калонкі"; +$LANG["phrase_2chars"] = "2 знакаў"; +$LANG["phrase_3_columns"] = "3 калонкі"; +$LANG["phrase_4_columns"] = "4 калонкі"; +$LANG["phrase_50_per_page"] = "50 на старонку"; +$LANG["phrase_accepting_submissions"] = "(прымае заяўкі)"; +$LANG["phrase_access_admin_account_c"] = "Вы можаце атрымаць доступ да Адміністрацыі кошт тут:"; +$LANG["phrase_access_type"] = "Тып доступу"; +$LANG["phrase_account_info"] = "Інфармацыя аб акаўнце"; +$LANG["phrase_account_settings"] = "Наладкі акаўнта"; +$LANG["phrase_action_needed"] = "Неабходныя меры"; +$LANG["phrase_add_client"] = "Дадаць кліента"; +$LANG["phrase_add_client_menu"] = "Дадаць кліента меню"; +$LANG["phrase_add_default_settings_rightarrow"] = "Дадаць наладамі па змаўчанні »"; +$LANG["phrase_add_field"] = "Даданне поля"; +$LANG["phrase_add_fields"] = "Даданне палёў"; +$LANG["phrase_add_fields_rightarrow"] = "Дадаць поле (ы) »"; +$LANG["phrase_add_form"] = "Дадаць форму"; +$LANG["phrase_add_form_external"] = "Дадаць форму - Знешнія"; +$LANG["phrase_add_form_internal"] = "Дадаць форму - Унутраная"; +$LANG["phrase_add_new_group_rightarrow"] = "Дадаць новую групу »"; +$LANG["phrase_add_num_rows"] = "Дадаць {\$number} колькасцю радкоў (ы)"; +$LANG["phrase_add_row"] = "Дадаць Row »"; +$LANG["phrase_add_submission_button"] = "Дадаць Прадстаўленне Кнопка"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Даданне некалькіх старонках форму з API"; +$LANG["phrase_adding_single_page_form"] = "Даданне адной старонцы формы з API"; +$LANG["phrase_admin_menu"] = "Меню Адміністратара"; +$LANG["phrase_admin_only"] = "Толькі адміністратар"; +$LANG["phrase_admin_panel"] = "Адміністратар групы"; +$LANG["phrase_administrator_theme"] = "Адміністратар тэма"; +$LANG["phrase_advanced_settings_rightarrow"] = "Пашыраныя наладкі »"; +$LANG["phrase_all_X_results_selected"] = "Усе {\$numresults} Вынікі Закладкі"; +$LANG["phrase_all_clients"] = "Усе кліенты"; +$LANG["phrase_all_clients_except_c"] = "Усім кліентам, за выключэннем:"; +$LANG["phrase_all_clients_have_access"] = "(усе кліенты маюць доступ)"; +$LANG["phrase_all_fields"] = "Усе палі"; +$LANG["phrase_all_fields_displayed"] = "Адлюстроўваюцца ўсе палі"; +$LANG["phrase_all_statuses"] = "Усе статусы"; +$LANG["phrase_all_submissions"] = "Усе матэрыялы"; +$LANG["phrase_allow_fields_edited"] = "Дазволіць палямі для рэдагавання"; +$LANG["phrase_alphanumeric"] = "Літарна-лічбавай (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Ужыць зрушэнне гадзіннага пояса"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Прызначэнне ўсіх пералічаных кліенту рахункі ў {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Прызначэнне ўсіх пералічаных кліенту рахункі ў {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "На краі"; +$LANG["phrase_at_start"] = "На пачатак"; +$LANG["phrase_author_link"] = "Аўтар Спасылкі"; +$LANG["phrase_auto_disable_account"] = "Аўтаматычнае адключэнне рахунку пасля # Лагін спробы не атрымалася"; +$LANG["phrase_auto_size"] = "Аўта-памер"; +$LANG["phrase_available_clients"] = "Даступныя кліенты"; +$LANG["phrase_available_fields"] = "Даступныя палі"; +$LANG["phrase_available_option_lists"] = "Даступныя спісы Варыянт"; +$LANG["phrase_available_swatches"] = "Даступныя Узоры"; +$LANG["phrase_available_swatches_c"] = "Даступныя ўзоры:"; +$LANG["phrase_available_tabs"] = "Даступныя ўкладкі"; +$LANG["phrase_available_views"] = "Працуе "Віды"; +$LANG["phrase_awaiting_form_submission"] = "Чакаецца формы."; +$LANG["phrase_back_to_field_list"] = "«Вярнуцца да спісу палёў"; +$LANG["phrase_back_to_search_results"] = "вярнуцца да вынiкаý пошуку"; +$LANG["phrase_base_view_on"] = "Погляд на базе ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Змены Лагін інфармацыі"; +$LANG["phrase_characters_limit_p"] = "сімвалы мяжы."; +$LANG["phrase_check_db_settings_try_again"] = "Уважліва праверце настройкі базы дадзеных і націсніце кнопку Працягнуць зноў."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Праверце URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Адкрыты апусціць Спіс"; +$LANG["phrase_client_account_settings"] = "Параметры ўліковага запісу кліента"; +$LANG["phrase_client_field"] = "Кліент Палявы"; +$LANG["phrase_client_map_filters"] = "Фільтры карты кліента »"; +$LANG["phrase_client_may_edit"] = "Кліент можа рэдагаваць"; +$LANG["phrase_client_menu"] = "Кліент Меню"; +$LANG["phrase_clients_can_access_form"] = "Кліенты, якія могуць атрымаць доступ да форме"; +$LANG["phrase_clients_can_access_view"] = "Кліенты, якія могуць атрымаць доступ да Адчыніць"; +$LANG["phrase_clients_cannot_access_form"] = "Кліенты, якія не могуць атрымаць доступ да форме"; +$LANG["phrase_clients_cannot_access_view"] = "Кліенты, якія не могуць атрымаць доступ да Адчыніць"; +$LANG["phrase_clients_may_edit"] = "Кліенты могуць рэдагаваць"; +$LANG["phrase_code_c"] = "Код памылкі:"; +$LANG["phrase_code_markup_field"] = "Код / разметкі палі"; +$LANG["phrase_code_markup_type"] = "Код / Тып разметкі"; +$LANG["phrase_codes_c"] = "Коды памылак:"; +$LANG["phrase_column_width"] = "Шырыня слупка"; +$LANG["phrase_company_name"] = "Назва кампаніі"; +$LANG["phrase_configure_form_email_fields"] = "Настройка формы поля для лісты"; +$LANG["phrase_confirm_folder_url_match"] = "Пацвердзіце Папка-URL Супадзенне"; +$LANG["phrase_connect_rows"] = "Падлучыце радкоў"; +$LANG["phrase_copy_email_settings_from"] = "Скапіяваць наладкі электроннай пошты ..."; +$LANG["phrase_copy_settings_from"] = "Скапіяваць наладкі ..."; +$LANG["phrase_core_fields"] = "Асноўнае поле"; +$LANG["phrase_core_version"] = "Версія ядра"; +$LANG["phrase_create_account"] = "Стварыць профіль"; +$LANG["phrase_create_admin_account"] = "Стварэнне уліковы запіс адміністратара"; +$LANG["phrase_create_config_file"] = "Стварэнне файла канфігурацыі"; +$LANG["phrase_create_database_tables"] = "Стварэнне табліц базы дадзеных"; +$LANG["phrase_create_default_view"] = "Стварэнне стандартнага Паглядзець"; +$LANG["phrase_create_file"] = "Стварыце файл"; +$LANG["phrase_create_group"] = "Стварыць групу"; +$LANG["phrase_create_new_email"] = "Стварыць новы Email"; +$LANG["phrase_create_new_menu"] = "Стварэнне новага меню"; +$LANG["phrase_create_new_option_list"] = "Стварыць новы спіс Варыянт"; +$LANG["phrase_create_new_option_list_group"] = "Стварыць новую групу спісе опцый"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Стварыць новы спіс Варыянт »"; +$LANG["phrase_create_new_view"] = "Стварыць Адчыніць"; +$LANG["phrase_create_new_view_group"] = "Стварыць новую групу Праглядзець"; +$LANG["phrase_custom_display_format"] = "Карыстацкі фармат адлюстравання"; +$LANG["phrase_custom_recipient"] = "Карыстальніцкія Атрымальнік"; +$LANG["phrase_custom_url"] = "Карыстальніцкі URL"; +$LANG["phrase_dark_blue"] = "Цёмна-сіні"; +$LANG["phrase_data_type"] = "Тып дадзеных"; +$LANG["phrase_database_hostname"] = "База даных хаста"; +$LANG["phrase_database_name"] = "Назва базы дадзеных"; +$LANG["phrase_database_password"] = "База даных пароляў"; +$LANG["phrase_database_settings"] = "Наладкі базы дадзеных"; +$LANG["phrase_database_setup"] = "Настройка базы дадзеных"; +$LANG["phrase_database_table_prefix"] = "Прэфікс табліц БД"; +$LANG["phrase_database_username"] = "Імя карыстальніка базы дадзеных"; +$LANG["phrase_date_format"] = "Фармат даты"; +$LANG["phrase_db_column"] = "DB Колонка"; +$LANG["phrase_db_setup_page_4"] = "4. Настройка базы дадзеных"; +$LANG["phrase_default_client_account_theme"] = "Кошт кліента па змоўчванні тэма"; +$LANG["phrase_default_date_field_search_value"] = "Дата па змаўчанні поле пошуку значэнне"; +$LANG["phrase_default_language"] = "Мову па змоўчванні"; +$LANG["phrase_default_menu"] = "Меню па змоўчванні"; +$LANG["phrase_default_sessions_timeout"] = "Па змоўчванні Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Сартаванне па змоўчванні"; +$LANG["phrase_default_tab_label"] = "Дадзеныя"; +$LANG["phrase_default_theme"] = "Тэма па змоўчванні"; +$LANG["phrase_default_value"] = "Значэнне па змаўчанні"; +$LANG["phrase_default_values"] = "Значэнні па змаўчанні"; +$LANG["phrase_default_values_new_submissions"] = "Значэнні па змаўчанні для новых прапаноў"; +$LANG["phrase_delete_field"] = "Выдаліць поле"; +$LANG["phrase_delete_form"] = "Выдаліць форму"; +$LANG["phrase_delete_row"] = "Выдаліць радок"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Выдаліць звязаныя файлы пры выдаленні прадстаўлення"; +$LANG["phrase_delete_view"] = "Выдаліць Паглядзець"; +$LANG["phrase_disconnect_rows"] = "Адключыць радкоў"; +$LANG["phrase_display_email"] = "Дысплей электроннай пошты"; +$LANG["phrase_display_name"] = "Адлюстроўваецца імя"; +$LANG["phrase_display_text"] = "Паказаць тэкст"; +$LANG["phrase_display_value"] = "Адлюстроўваецца значэнне"; +$LANG["phrase_edit_admin_menu"] = "Змяніць Меню Admin"; +$LANG["phrase_edit_client"] = "Змяніць кліента"; +$LANG["phrase_edit_client_menu"] = "Змяніць кліента меню"; +$LANG["phrase_edit_email_template"] = "Змяніць шаблон электроннага паведамленні"; +$LANG["phrase_edit_field"] = "Поле ўводу"; +$LANG["phrase_edit_field_c"] = "Змяніць поле:"; +$LANG["phrase_edit_form"] = "Змяніць форму"; +$LANG["phrase_edit_form_access_type_b"] = "[Змяніць тып формы доступ]"; +$LANG["phrase_edit_option_list"] = "Рэдагаваць спіс опцый"; +$LANG["phrase_edit_submission"] = "Змяніць прадстаўленне"; +$LANG["phrase_edit_submission_label"] = "Змяніць прадстаўленне этыкеткі"; +$LANG["phrase_edit_view"] = "Змяніць выгляд"; +$LANG["phrase_email_format"] = "Фармат электроннай пошты"; +$LANG["phrase_email_settings"] = "Наладкі электроннай пошты"; +$LANG["phrase_email_template"] = "Email Template"; +$LANG["phrase_email_template_name"] = "Email назва шаблону"; +$LANG["phrase_error_learn_more"] = "Даведайцеся больш аб гэтай памылцы."; +$LANG["phrase_error_text_intro"] = "Выпраўце наступныя памылкі (S) і абнавіць:"; +$LANG["phrase_errors_learn_more"] = "Націсніце на коды памылак, каб даведацца больш."; +$LANG["phrase_event_trigger"] = "Триггер падзеі"; +$LANG["phrase_external_form"] = "Вонкавыя формы"; +$LANG["phrase_external_form_info"] = "Знешняя інфармацыя Формаў"; +$LANG["phrase_external_your_own_form"] = "Знешні (сваю ўласную форму)"; +$LANG["phrase_field_comments"] = "Поле Каментарыі"; +$LANG["phrase_field_label"] = "Палявыя Label"; +$LANG["phrase_field_options"] = "Палявыя Функцыі"; +$LANG["phrase_field_size"] = "Памер поля"; +$LANG["phrase_field_skipped"] = "Палявыя прапушчаны"; +$LANG["phrase_field_specific_settings"] = "Спецыялізаваныя паводле"; +$LANG["phrase_field_type"] = "Тып поля"; +$LANG["phrase_field_type_no_validation"] = "Ёсць няма правілы праверкі для гэтага тыпу поля."; +$LANG["phrase_field_types"] = "Тыпы палёў"; +$LANG["phrase_field_value"] = "Поле Значэнне"; +$LANG["phrase_field_values_to_display_values"] = "Палявыя каштоўнасці »адлюстравання значэнняў"; +$LANG["phrase_final_touches_page_6"] = "6. Апошнія штрыхі"; +$LANG["phrase_finalize_form"] = "Завяршыць форму"; +$LANG["phrase_first_name"] = "Імя"; +$LANG["phrase_footer_text"] = "Колонтитул тэкст"; +$LANG["phrase_for_any_form_submission"] = "Для любой формы прадстаўлення"; +$LANG["phrase_for_view_submissions"] = "Толькі прадстаўлення, якія ўпісваюцца ў наступным Прагляд (ов)"; +$LANG["phrase_forgot_password"] = "Забыліся пароль?"; +$LANG["phrase_form_already_selected"] = "Формаў ўжо выбралі"; +$LANG["phrase_form_email_field_b_c"] = "[Форма] электроннай вобласці:"; +$LANG["phrase_form_email_field_configuration"] = "Формаў Email канфігурацыя поля"; +$LANG["phrase_form_email_fields"] = "Палі формы Email"; +$LANG["phrase_form_field"] = "Палявая форма"; +$LANG["phrase_form_field_contents"] = "Змест палі формы"; +$LANG["phrase_form_field_name"] = "Імя поля формы"; +$LANG["phrase_form_field_placeholders"] = "Запаўняльнікаў палёў формы"; +$LANG["phrase_form_fields"] = "Палі формы"; +$LANG["phrase_form_info"] = "Форма інфармацыі"; +$LANG["phrase_form_info_2"] = "2. Форма інфармацыі"; +$LANG["phrase_form_list"] = "Форма Спіс"; +$LANG["phrase_form_name"] = "Форма Імя"; +$LANG["phrase_form_page"] = "Формаў старонку"; +$LANG["phrase_form_placeholders"] = "Формаў Местозаполнители"; +$LANG["phrase_form_submission"] = "Форма прадстаўлення"; +$LANG["phrase_form_submissions"] = "Форма прадстаўлення"; +$LANG["phrase_form_type"] = "Тып формы"; +$LANG["phrase_form_url"] = "Формаў URL"; +$LANG["phrase_form_urls"] = "Форма URL-адрасоў"; +$LANG["phrase_forms_assigned_to_any_account"] = "Формы прызначаныя на любы кошт"; +$LANG["phrase_forms_page_default_message"] = "Формы старонкі па змаўчанні паведамленне"; +$LANG["phrase_ft_installation"] = "Инсрументы скрыпту ўстаноўкі"; +$LANG["phrase_full_width"] = "Поўная шырыня"; +$LANG["phrase_getting_started"] = "Прыступаючы да працы"; +$LANG["phrase_global_placeholders"] = "Глабальная Местозаполнители"; +$LANG["phrase_group_name"] = "Назва групы"; +$LANG["phrase_group_options_q"] = "Група варыянты?"; +$LANG["phrase_group_rows"] = "Група радкоў"; +$LANG["phrase_have_fun"] = "Удачы!"; +$LANG["phrase_highlight_colour"] = "Вылучыце колеру"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML шаблон"; +$LANG["phrase_images_media"] = "Выявы / Медыя"; +$LANG["phrase_import_option_list_rightarrow"] = "Імпарт спісу Варыянт »"; +$LANG["phrase_input_length"] = "Уваходная даўжыня"; +$LANG["phrase_installation_help"] = "Усталёўка шпалер"; +$LANG["phrase_internal_form"] = "Унутраная форма"; +$LANG["phrase_ip_address"] = "IP-адрас"; +$LANG["phrase_is_multi_page_form_q"] = "Гэта шматстаронкавы форму?"; +$LANG["phrase_label_response_placeholders"] = "Этыкетка / адказ запаўняльнікаў"; +$LANG["phrase_large_300px"] = "Вялікі (300 пікселяў)"; +$LANG["phrase_large_400px"] = "Вялікі (400 пікселяў)"; +$LANG["phrase_last_7_days"] = "Апошнія 7 дзён"; +$LANG["phrase_last_logged_in"] = "Апошнія наведайце сайт"; +$LANG["phrase_last_modified"] = "Зменены"; +$LANG["phrase_last_modified_date"] = "Апошнія абнаўлення"; +$LANG["phrase_last_name"] = "Прозвішча"; +$LANG["phrase_letters_only"] = "Лісты толькі"; +$LANG["phrase_light_brown"] = "Цёмна-русы"; +$LANG["phrase_limit_email_content"] = "Вельмі ўтрыманне электроннай пошты ў поля Адчыніць"; +$LANG["phrase_loading_ellipsis"] = "Загрузка ..."; +$LANG["phrase_log_in"] = "Увайсці"; +$LANG["phrase_login_as_user"] = "Увайсці як гэты карыстальнік"; +$LANG["phrase_login_info"] = "Увайсці інфармацыя"; +$LANG["phrase_login_page"] = "Увайсці старонку"; +$LANG["phrase_login_panel_c"] = "Увайсці Групы:"; +$LANG["phrase_login_panel_leftarrows"] = "«Лагін Групы"; +$LANG["phrase_login_password"] = "Лагін Пароль"; +$LANG["phrase_login_username"] = "Увайсці Імя карыстальніка"; +$LANG["phrase_logo_link_url"] = "Спасылка на лагатып URL"; +$LANG["phrase_logout_url"] = "Выйсці URL"; +$LANG["phrase_main_nav"] = "Галоўнае Nav"; +$LANG["phrase_main_settings"] = "Галоўныя наладкі"; +$LANG["phrase_manage_client"] = "Кіраванне кліентаў"; +$LANG["phrase_manage_client_omit_list"] = "Упраўленне кліента Прапусціць Спіс"; +$LANG["phrase_max_file_size"] = "Максімальны памер файла"; +$LANG["phrase_max_length"] = "Максімальная даўжыня"; +$LANG["phrase_max_length_words_chars"] = "- Максімальная даўжыня (слоў / сімвалаў)"; +$LANG["phrase_may_add_submissions"] = "Можа дадаць Спектаклі"; +$LANG["phrase_may_copy_submissions"] = "Можна капіяваць прадстаўлення"; +$LANG["phrase_may_delete_submissions"] = "Матэрыялы могуць быць выдаленыя"; +$LANG["phrase_medium_150px"] = "Сярэдняе (150px)"; +$LANG["phrase_medium_200px"] = "Сярэдняе (200px)"; +$LANG["phrase_menu_name"] = "Назва меню"; +$LANG["phrase_menu_type"] = "Тып меню"; +$LANG["phrase_min_password_length"] = "Мінімальная даўжыня пароля"; +$LANG["phrase_module_description"] = "Апісанне модуля"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Модуль Nav"; +$LANG["phrase_month_to_date"] = "Месяц на сённяшні дзень"; +$LANG["phrase_multi_select"] = "Множны выбар"; +$LANG["phrase_multi_select_dropdown"] = "Multi-Select выпадаючых"; +$LANG["phrase_multiple_fields_found"] = "Некалькі палёў,!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Імя / Прозвішча"; +$LANG["phrase_new_blank_email"] = "Новыя пустое пісьмо"; +$LANG["phrase_new_blank_option_list"] = "Новы пусты спіс Варыянт"; +$LANG["phrase_new_blank_view"] = "Адкрыць новую пустую"; +$LANG["phrase_new_ft_installation"] = "Новая форма інструментаў ўстаноўцы"; +$LANG["phrase_new_option_list"] = "Новы спіс Варыянт"; +$LANG["phrase_new_password"] = "Новы пароль"; +$LANG["phrase_new_password_reenter"] = "Новы пароль (паўторна увядзіце)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "Новы погляд - усе палі"; +$LANG["phrase_next_client"] = "наступнага кліента »"; +$LANG["phrase_next_field"] = "наступная »поле"; +$LANG["phrase_next_form"] = "Наступная форма »"; +$LANG["phrase_next_view"] = "След »"; +$LANG["phrase_no_clients"] = "Не кліенты"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Няма кампенсаваная"; +$LANG["phrase_no_option_lists_available"] = "Няма опцый спісы даступныя."; +$LANG["phrase_no_views"] = "Няма праглядаў"; +$LANG["phrase_no_views_with_filters_p"] = "(Няма Праглядаў з фільтрамі вызначана)"; +$LANG["phrase_none_not_recommended"] = "Няма (не рэкамендуецца)"; +$LANG["phrase_not_assigned_to_option_list"] = "Гэта поле не прызначаныя спісу опцый."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Не роўна"; +$LANG["phrase_not_found"] = "Не знойдзена!"; +$LANG["phrase_not_like"] = "Not Like"; +$LANG["phrase_not_visible_to_client"] = "(не бачныя з кліентам)"; +$LANG["phrase_num_clients_per_page"] = "Коль-кліентаў за старонку"; +$LANG["phrase_num_emails_per_page"] = "Коль-лістоў у старонку"; +$LANG["phrase_num_fields"] = "Колькасць палёў"; +$LANG["phrase_num_forms_per_page"] = "Коль-формаў на старонцы"; +$LANG["phrase_num_menus_per_page"] = "Коль-меню на старонцы"; +$LANG["phrase_num_modules_per_page"] = "Коль-модуляў на старонку"; +$LANG["phrase_num_option_lists_per_page"] = "Num Варыянт Спісы на старонку"; +$LANG["phrase_num_options"] = "Num параметры"; +$LANG["phrase_num_rows"] = "Num Радкі"; +$LANG["phrase_numbers_only"] = "Толькі лічбы"; +$LANG["phrase_often_localhost"] = "(часта "Localhost")"; +$LANG["phrase_on_form_submission"] = "Па форме прадстаўлення"; +$LANG["phrase_one_char_number"] = "Па крайняй меры адзін сімвал лічбай (0-9)"; +$LANG["phrase_one_char_upper"] = "Па крайняй меры адзін сімвал верхняга рэгістра"; +$LANG["phrase_one_special_char"] = "Па крайняй меры, адна з {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(толькі канкрэтныя кліенты маюць доступ)"; +$LANG["phrase_open_form_in_dialog"] = "Адкрыць форму ў дыялогавым акне"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Адкрыць форму ў новай укладцы / акне"; +$LANG["phrase_option_list"] = "Варыянт Спіс"; +$LANG["phrase_option_list_name"] = "Імя спісу опцый"; +$LANG["phrase_option_list_or_contents"] = "Спіс опцый / Змест"; +$LANG["phrase_option_lists"] = "Варыянт Спісы"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Назвы старонак"; +$LANG["phrase_pass_on"] = "Праходзь"; +$LANG["phrase_password_min"] = "Ён павінен быць па крайняй меры {\$length}."; +$LANG["phrase_password_one_number"] = "Яна павінна ўтрымліваць прынамсі адзін нумар (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Яна павінна ўтрымліваць па меншай меры адну вялікіх літараў."; +$LANG["phrase_password_requirements_c"] = "Пароль патрабаванні:"; +$LANG["phrase_password_reset"] = "Скід пароля"; +$LANG["phrase_password_special_char"] = "Яна павінна ўтрымліваць па крайняй меры адзін з наступных знакаў: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Дазволу / Іншыя налады"; +$LANG["phrase_permitted_file_types"] = "Дазволеныя тыпы файлаў"; +$LANG["phrase_phone_number"] = "Нумар тэлефона"; +$LANG["phrase_phone_number_format"] = "Фармат нумара тэлефона"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini максімальна дапушчальны памер зрабіць спасылку на:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Калі ласка, пацвердзіце"; +$LANG["phrase_please_enter_license_key"] = "Калі ласка, увядзіце Ваш ліцэнзійны ключ"; +$LANG["phrase_please_select"] = "Абярыце"; +$LANG["phrase_please_select_form"] = "Калі ласка, абярыце форму"; +$LANG["phrase_prev_client"] = "«Папярэдняе кліента"; +$LANG["phrase_prev_form"] = "«Папярэдняя форма"; +$LANG["phrase_prevent_password_reuse"] = "Прадухіленні паўторнага выкарыстання пароляў Гэтая #"; +$LANG["phrase_previous_field"] = "«Папярэдняе поле"; +$LANG["phrase_previous_page"] = "Папярэдняя старонка"; +$LANG["phrase_previous_view"] = "«Папярэдняе Паглядзець"; +$LANG["phrase_program_name"] = "Назва праграмы"; +$LANG["phrase_public_form_omit_list"] = "Апусціць грамадская форма Спіс"; +$LANG["phrase_public_view_omit_list"] = "Гледжання грамадскасці апусціць Спіс"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Існаваў праблемы з дапамогай наступнага запыту:"; +$LANG["phrase_radio_buttons"] = "Пераключальнік"; +$LANG["phrase_random_form_submission"] = "Выпадковыя форма прадстаўлення"; +$LANG["phrase_re_enter_password"] = "Паўторны увод пароля"; +$LANG["phrase_recipient_type"] = "Тып атрымальніка"; +$LANG["phrase_redirect_url"] = "Перасылка URL"; +$LANG["phrase_refresh_list"] = "Абнавіць спіс"; +$LANG["phrase_refresh_module_list"] = "Абнавіць спіс модуляў"; +$LANG["phrase_refresh_page"] = "Абнавіць старонку"; +$LANG["phrase_refresh_theme_list"] = "Абнавіць спіс тым"; +$LANG["phrase_register_new_email"] = "Зарэгістраваць новы Email"; +$LANG["phrase_remaining_characters"] = "Астатнія сімвалы"; +$LANG["phrase_remaining_words"] = "Астатнія словы"; +$LANG["phrase_remove_tabs"] = "Выдаліць ўкладку"; +$LANG["phrase_required_password_chars"] = "Абавязковыя сімвалы пароля"; +$LANG["phrase_resend_test_submission"] = "Паўторна выпрабаванні Прадстаўленне"; +$LANG["phrase_return_form_list"] = "Вярнуцца да форме Спіс"; +$LANG["phrase_row_selected"] = "{\$num_rows} шэрагу выбраных"; +$LANG["phrase_rows_selected"] = "{\$num_rows} выбраных радкоў"; +$LANG["phrase_sample_data"] = "Прыклад дадзеных"; +$LANG["phrase_save_changes"] = "Захаваць змены"; +$LANG["phrase_search_keyword"] = "Пошук ключавых слоў"; +$LANG["phrase_security_settings"] = "Наладкі бяспекі"; +$LANG["phrase_select_all"] = "Выбраць усе"; +$LANG["phrase_select_all_X_results"] = "Вылучыць усе {\$numresults} Вынікі"; +$LANG["phrase_select_all_on_page"] = "Выбраць усе на старонцы"; +$LANG["phrase_select_date"] = "Выбраць дату"; +$LANG["phrase_select_field"] = "Выберыце поле"; +$LANG["phrase_select_swatch"] = "Выберыце ўзор"; +$LANG["phrase_selected_clients"] = "Выбраныя кліенты"; +$LANG["phrase_selected_views"] = "Выбраны "Віды"; +$LANG["phrase_send_email"] = "Адправіць Email"; +$LANG["phrase_send_test_email"] = "Адправіць тэставае паведамленне"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Зададзеныя значэнне"; +$LANG["phrase_setup_options"] = "Параметры ўстаноўкі"; +$LANG["phrase_show_all"] = "Паказаць усе"; +$LANG["phrase_show_form"] = "Паказаць Формы"; +$LANG["phrase_size_large"] = "Вялікія (ТЭКСТ)"; +$LANG["phrase_size_medium"] = "Сярэдні (<= 256 сімвалаў)"; +$LANG["phrase_size_small"] = "Малыя (<= 20 сімвалаў)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 сімвалаў)"; +$LANG["phrase_size_very_large"] = "Вельмі вялікі (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Перайсці Палявы"; +$LANG["phrase_skip_step"] = "Прапусціце крок"; +$LANG["phrase_small_100px"] = "Маленькі (100 пікселяў)"; +$LANG["phrase_small_80px"] = "Маленькі (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Запоўніце палі:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill Дакументацыя карыстальніка »"; +$LANG["phrase_sort_as"] = "Сартаваць Як"; +$LANG["phrase_special_fields"] = "Спецыяльныя поля"; +$LANG["phrase_standard_fields"] = "Стандартныя поля"; +$LANG["phrase_standard_filters"] = "Стандартныя фільтры »"; +$LANG["phrase_step_1"] = "Крок 1"; +$LANG["phrase_step_2"] = "Крок 2"; +$LANG["phrase_step_3"] = "Крок 3"; +$LANG["phrase_step_4"] = "Крок 4"; +$LANG["phrase_step_5"] = "Крок 5"; +$LANG["phrase_step_6"] = "Крок 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Газ-тэгі ў форме прадстаўлення"; +$LANG["phrase_subject_line"] = "Загаловак"; +$LANG["phrase_submission_date"] = "Дата прадстаўлення"; +$LANG["phrase_submission_id"] = "Прадстаўленне ID"; +$LANG["phrase_submission_made"] = "Прадстаўленне зроблена: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Прадстаўленне тыпу"; +$LANG["phrase_submissions_per_page"] = "Матэрыялы на старонцы"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Вы не можаце дадаць праверку сістэмы палёў."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Ўкладка Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Выпрабаванне папках"; +$LANG["phrase_test_submission"] = "Выпрабаванне Прадстаўленне"; +$LANG["phrase_test_submission_3"] = "3. Выпрабаванне Прадстаўленне"; +$LANG["phrase_test_submission_received"] = "Выпрабаванне паведамлення, атрыманым"; +$LANG["phrase_text_and_html"] = "Тэкст & HTML"; +$LANG["phrase_text_email"] = "Тэкст электроннага ліста"; +$LANG["phrase_text_template"] = "Тэкст шаблону"; +$LANG["phrase_the_previous_month"] = "Папярэдні месяц"; +$LANG["phrase_theme_description"] = "Тэма Апісанне"; +$LANG["phrase_theme_info"] = "Тэма інфармацыя"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Усяго вынікаў:"; +$LANG["phrase_type_c"] = "Тып памылкі:"; +$LANG["phrase_unselect_all"] = "Зняць вылучэнне"; +$LANG["phrase_update_accounts"] = "Абнаўленне рахункаў"; +$LANG["phrase_update_email_template"] = "Абнаўленне шаблон электроннага паведамленні"; +$LANG["phrase_update_field"] = "Палявыя абнаўлення"; +$LANG["phrase_update_order"] = "Абнаўленне заказ"; +$LANG["phrase_update_view"] = "Update Спіс"; +$LANG["phrase_upload_file"] = "Укласці файл"; +$LANG["phrase_upload_files"] = "Загрузіць файлы"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Загрузіць шлях папкі"; +$LANG["phrase_upload_folder_url"] = "Загрузіць папкі URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Выкарыстоўвайце значэнні па змаўчанні?"; +$LANG["phrase_used_by_num_form_fields"] = "Выкарыстоўваецца # палі формы"; +$LANG["phrase_uses_swatches"] = "Выкарыстанне Узоры"; +$LANG["phrase_valid_email"] = "Сапраўды Email"; +$LANG["phrase_validation_error"] = "Памылка праверкі"; +$LANG["phrase_validation_rule"] = "Правілы праверкі"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Паглядзець групы"; +$LANG["phrase_view_id"] = "Прагляд ID"; +$LANG["phrase_view_name"] = "Адкрыць Імя"; +$LANG["phrase_view_placeholders"] = "Паглядзець запаўняльнікаў"; +$LANG["phrase_view_submissions"] = "Прагляд паступленняў"; +$LANG["phrase_view_uploaded_files"] = "Прагляд загружаных файлаў"; +$LANG["phrase_viewing_range"] = "[Прагляд {\$startnum} на {\$endnum}]"; +$LANG["phrase_when_sent"] = "Калі адпраўлена"; +$LANG["phrase_when_submission_is_deleted"] = "Пры выдаленні прадстаўлення"; +$LANG["phrase_when_submission_is_edited"] = "Пры рэдагавання прадстаўлення"; +$LANG["phrase_who_can_access"] = "Хто мае доступ?"; +$LANG["phrase_word_limit_p"] = "максімальную колькасць слоў."; +$LANG["phrase_year_to_date"] = "З пачатку года"; +$LANG["phrase_yes_for_all_views"] = "Так, для ўсіх меркаванняў"; +$LANG["phrase_yes_for_specific_views"] = "Да, для канкрэтных меркаванняў"; +$LANG["phrase_your_account"] = "Мой рахунак"; +$LANG["phrase_your_email"] = "Ваш Email"; +$LANG["phrase_your_email_address"] = "Ваш адрас электроннай пошты"; +$LANG["processing_form_disabled"] = "На жаль, гэтая форма была адключаная."; +$LANG["processing_form_incomplete"] = "На жаль, гэтая форма як уяўляецца, не ў поўнай меры створана ў рамках Инсрументы. Найбольш верагоднай прычынай гэтай праблемы з'яўляецца тое, што вы выдалілі "form_tools_initialize_form" скрытыя палі формы, але не выканаеце ўсё крокі "Дадаць форму" працэсу.

    Калі ласка, увайдзіце і перагледзець формы канфігурацыі."; +$LANG["processing_init_complete"] = "Дзякуй! Тэставая прадстаўленне было пастаўлена паспяховым. Калі ласка, вярніцеся да форме інструментаў Панэль кіравання і націсніце кнопку "Абнавіць" ў ніжняй частцы Add Form Крок 3 старонцы, каб завяршыць устаноўку вашай форме."; +$LANG["processing_invalid_form_id"] = "На жаль, гэта не здаецца, сапраўднае пасведчанне асобы формы."; +$LANG["processing_no_form_id"] = "process.php патрабуе форма ID для апрацоўкі. Пераканайцеся, што ваша форма ня скрытое поле з імем "form_tools_form_id" Гэта праходзячы па форме ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Инсрументы не ў стане вызначыць, куды перанакіраваць калі ім не ўдаецца ўвайсці з скажоным чынам. Прашу перадаць у схаванай поле з імем form_tools_form_url якія змяшчаюць URL формы."; +$LANG["processing_no_post_vars"] = "process.php не атрымлівае ніякіх дадзеных. Заўвага: Гэты сцэнарый не можа быць загружаны непасрэдна ў браўзэры.
    Пераканайцеся, што вашыя формы адпраўкі па пошце."; +$LANG["processing_no_redirect_url"] = "Дадзенае прадстаўленне было апрацавана правільна, але вы не ўказалі URL пераадрасацыі для гэтай формы! Змяніць сваю анкету ў форме інструментаў карыстальніцкага інтэрфейсу і дадаць URL пераадрасацыі."; +$LANG["special_language"] = "Byelorussian"; +$LANG["special_language_locale"] = "Byelorussian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Усе новыя рахунку кліента будзе створаны з наладамі і дазволаў, вызначаныя ніжэй. Каб перавызначыць настройку для канкрэтнага кліента, змяніць уліковы запіс кліента, і наведаць іх на ўкладку Настройка."; +$LANG["text_add_form_choose_integration_method"] = "Выбар метаду, які вы хочаце выкарыстаць для інтэграцыі форму з формай Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Гэты метад выкарыстоўвае форму Tools API , уключаных у асноўны форме сцэнара Tools. API падае шэраг карысных функцый, каб зрабіць працу па інтэграцыі форму з формай прылады як мага больш простым. Ёсць ніякіх абмежаванняў, каб, як ваша форма можа быць прадстаўлена пры выкарыстанні API. Вы можаце прадставіць змесціва ў адзін прысест, або старонка за старонкай, вы можаце дадаць свае ўласныя праверкі на боку сервера, CAPTCHA малюнкаў, вы можаце прадставіць інфармацыю ў цяперашні час, але толькі сказаць яму, каб адлюстраваць прадстаўленне ў форме інструментаў карыстацкага інтэрфейсу пазней (гл. Канчатковыя Матэрыялы часткі ў даведачнай дакументацыі па API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Для таго, каб адправіць дадзеныя формы з дапамогай PHP, ваша форма павінна быць размешчана на тым жа сайце, як гэтая ўстаноўка Форма Tools. Па-другое, для не-тэхнічных і пачаткоўцаў Форма інструменты карыстальнікаў, гэты метад можа быць трохі палохалым на першы погляд. Але ёсць шмат дакументацыі, каб дапамагчы вам, у тым ліку два простых падручнікі для інтэграцыі адно-і шматстаронкавыя формы (гэта звязана з на больш познім этапе)."; +$LANG["text_add_form_direct_submission_benefits"] = "Гэта самы просты спосаб для адпраўкі формы Инсрументы. Яна не патрабуе веды PHP і патрабуе толькі вельмі нязначныя змяненні ў форму. Гэта цудоўна для невялікіх формаў, дзе вы проста хочаце прадставіць інфармацыю ў базе даных, то перенаправляют карыстальніка на "дзякаваць" раз."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Гэта прадстаўленне метаду вельмі простая ў выкарыстанні, але не дае больш кантролю для больш складаных формах. Multi-старонку формы або формы, якія патрабуюць серверная праверку лепш падыходзяць для другога метаду: Адпраўка праз форму прылады API."; +$LANG["text_add_form_field_types1"] = "Амаль гатова! Гэтая старонка спрабуе знайсці ўсе палі формы і вызначыць іх тыпаў палёў. Націсніце Smart Fill кнопку справа, каб пачаць. Вы будзеце толькі дазволена працягнуць, калі ўсе дзеянні былі вырашаны - пытанні, якія маюць патрэбу ў вашым увазе з'яўляюцца ў "дзеянні, неабходныя " калонкі."; +$LANG["text_add_form_field_types2"] = "Калі форма не ў HTML, націсніце кнопку Прапусціць крок для працягу. Усё гэта можна наладзіць пазней."; +$LANG["text_add_form_field_types3"] = "Гэта перазагрузка змесціва вашага віду (ов). Заўвага: гэта прывядзе да перазапісу любыя змены, зробленыя на гэтай старонцы."; +$LANG["text_add_form_field_types4"] = "У выпадку, калі вы сутыкнецеся з праблемамі, націсніце тут, каб прапусціць гэты крок. Усе недазволеных поля настроены на выкарыстанне значэнняў па змаўчанні. Вы можаце наладзіць гэтыя палі пазней."; +$LANG["text_add_form_field_types_manual_upload"] = "Калі вы не змаглі Smart Fill палі вашыя, вы можаце паспрабаваць альтэрнатыўнае рашэнне: загрузіць копіі формаў ў палі ніжэй."; +$LANG["text_add_form_field_types_manual_upload2"] = "Звярніце ўвагу: не загружаць сыравіну PHP старонак (ці іншы код на боку сервера) - проста загрузіць HTML-версіі. Каб атрымаць гэта, праглядзець і захаваць старонку з вэб-браўзэра."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Існавалі некалькі палёў, якія не могуць быць знойдзены ў выглядзе старонкі, паказаны Вамі. У асноўным, гэта верагодна, выклікана адной з наступных дзеянняў:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Вы ўвялі адну або некалькі формаў адрасы вашых шматстаронкавыя формы няправільна."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Адзін ці некалькі старонак вашай форме, абаронены паролем і скрыпт не можа атрымаць доступ да старонцы."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Вы няправільна ўказалі форму URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Націсніце тут , каб вярнуцца да старонцы Інфармацыя аб форме, каб праверыць наладкі."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Вы змянілі свой выгляд (ы) пасля ўнясення прадстаўлення тэсту"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Націсніце тут , каб пакласці праз яшчэ адно выпрабаванне прадстаўлення."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Ваша форма абаронена паролем і скрыпт не можа атрымаць доступ да старонцы."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "У іншай укладцы / акне гэтага браўзэра, увайдзіце ў форму затым націсніце кнопку Абнавіць старонку ніжэй, каб паспрабаваць зноў знайсці палёў."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Калі ні адзін з вышэй працы рашэнні, Вы таксама можаце паспрабаваць ўручную загружаць формы для апрацоўкі ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Існавалі некалькі палёў, якія не могуць быць знойдзены ў выглядзе старонак, паказаны Вамі. У асноўным, гэта верагодна, выклікана адной з іх:"; +$LANG["text_add_form_help_link"] = "Калі ў вас узніклі якія-небудзь праблемы падчас гэтых крокаў, паспрабуйце прачытаць з карыстацкай дакументацыі ."; +$LANG["text_add_form_step_1_text_1"] = "Наступныя старонкі правядуць вас праз крокі, каб наладзіць прылады форма для захоўвання вашых паказах форме. Перш чым працягваць, пераканайцеся, што:"; +$LANG["text_add_form_step_1_text_2"] = "форму ўжо створана і яе даступнай праз URL (Localhost выдатна)"; +$LANG["text_add_form_step_1_text_3"] = "могуць змяніць форму"; +$LANG["text_add_form_step_2_para_2"] = "Адкрыйце форму ў рэдактары і змяніць форму тэгі да наступнага, у тым ліку два утоеных палях."; +$LANG["text_add_form_step_2_para_3"] = "Затым адкрыйце форму ў вэб-браўзэры. Запоўніць у кожнай вобласці і прадставіць яго. Пасля адпраўкі заяўкі, вы павінны ўбачыць паведамленне апавяшчэння. Пасля адлюстравання гэтага паведамлення, вярнуцца на гэтую старонку і націсніце кнопку "Абнавіць" ніжэй. Калі гэты працэс завершыцца, вы будзеце працягваць бачыць ніжэй кнопку, якая прывядзе вас да наступнага кроку."; +$LANG["text_add_form_step_2_para_6"] = "У форму прадстаўлення, адносяцца наступныя каштоўнасці. Яны могуць быць устаноўлены непасрэдна праз PHP або праходзячы праз форму на сябе. Ніжэй прыведзены прыклады кожнага з іх. (\$ VarName) з'яўляецца хэш (або асацыятыўны масіў) ўсіх форм прадстаўлення інфармацыі - гэта, як правіла postvar \$ () або (\$) sessionvar пераменная, але яно можа быць пабудавана Custom."; +$LANG["text_add_form_step_2_text_2"] = "Калі ласка, увядзіце адрас вашага "вялікае дзякуй " старонка. Гэта дзе вы хочаце, каб людзі быць накіраваны на пасля форма была адпраўлена."; +$LANG["text_add_form_step_3_para_1"] = "На гэтай старонцы пералічаны ўсе палі ў форме прадстаўлення. Просьба разгледзець кожнае поле і выдаліць усё, што вам не трэба захоўваць для кожнага прадстаўлення. Калі вы выдаліце сапраўдныя вобласці выпадкова, ці хочаце змяніць інфармацыю, якія захоўваюцца вашай форме, вярнуцца да папярэдняй старонцы, каб адправіць новае прадстаўленне выпрабаванняў."; +$LANG["text_add_form_step_3_para_2"] = "Заўвага: калі вы адпраўляе некалькі значэнняў з дапамогай сьцяжкоў або множнага выбару вокны, пераканайцеся, што імя поля заканчваецца сімвалаў [] (гл. Дакументацыя карыстальніка для атрымання дадатковай інфармацыі)."; +$LANG["text_add_form_step_3_text_1"] = "Вось дзе пачынаецца самае цікавае! На дадзены момант, форма Інструменты чакае выпрабаванне прадстаўлення з формы. Яна будзе выкарыстоўваць гэтую форму прадстаўлення ведаць, якая інфармацыя павінна захоўвацца ў базе дадзеных."; +$LANG["text_add_form_step_3_text_2"] = ", Указаўшы ваша форме Инсрументы"; +$LANG["text_add_form_step_3_text_3"] = "Скарыстаўшыся формай прылады API"; +$LANG["text_add_form_step_3_text_4"] = "Каб дапамагчы інтэграваць вашу форму, мы прапануем вам прачытаць адну з наступных дапаможнікаў:"; +$LANG["text_add_form_step_3_text_5"] = "Яны тлумачаць, як стварыць сваю анкету у падрыхтоўцы да выпрабавання паказы, але і іншыя звесткі, якія могуць быць карысныя. Лінія PHP вам спатрэбіцца:"; +$LANG["text_add_form_step_3_text_6"] = "Гэта гарантуе, што дадзеныя на самом деле накіраваныя Инсрументы. Калі вы стварылі праз вашыя прадстаўлення тэсту, націсніце на кнопку ніжэй."; +$LANG["text_add_form_step_3_text_7"] = "На старонцы да вашага канчатковага "дзякуй" раз, не забудзьце дадаць наступны параметр ў пераменную \$ параметры:"; +$LANG["text_add_form_step_5_para_1"] = "База дадзеных была створана для гэтай формы і формы быў актываваная для выкарыстання. Калі вы зрабілі прадстаўленне, указаўшы ваша форме process.php, Вы можаце вярнуцца ў форму і выдаліць скрытыя наступныя вобласці:"; +$LANG["text_add_form_step_5_para_2"] = "Затым перайдзіце на "дзякуй" на пустой старонцы сесій. Пасля гэтага, усе новыя формы прадстаўлення будуць апрацоўвацца і захоўвацца па форме прылады. Паспрабуйце зрабіць прадстаўленне або два, каб праверыць інфармацыю, усе загрузкі правільна."; +$LANG["text_add_form_step_5_para_3"] = "Калі вы жадаеце дакладна настроіць вашу форму для опцый, такіх як аўтаматычнае электроннай пошце, даданне дадатковых палёў формы поле, або настройка тыпу палёў формы, Вы можаце змяніць форму ў любы момант."; +$LANG["text_add_form_step_5_para_4"] = "Паколькі ваша форма ня поле загрузкі файла, вам трэба будзе самастойна наладзіць кожнае поле для ўказанні папкі загрузкі файлаў, якія файлы і дазваляецца. Гэта можна знайсці на ўкладку Дысплэй формы рэдагавання старонкі."; +$LANG["text_add_form_step_5_para_5"] = "Калі прадстаўленне было накіравана праз API, змяніць ft_api_init_form_page лінію на першай старонцы вашай формы:"; +$LANG["text_add_submission_button"] = "Дадаць кнопку Прадстаўленне адлюстроўваецца толькі для праглядаў, якія "Можа дадаць уяўленняў " опцыя ўстаноўлена ў "ды "."; +$LANG["text_admin_email_placeholder_info"] = "Гэта адрас электроннай пошты адміністратара Инсрументы, вызначаны ў настройках сваёй ўліковага запісу. Гэта выводзіць толькі адрас электроннай пошты, так што калі вы хочаце выкарыстоўваць у якасці спасылкі HTML, вам неабходна упаковать яго ў теге <a>, вось так:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ AdminEmail) </ A>"; +$LANG["text_also_default_login_page_theme"] = "(А таксама раз па змоўчванні Лагін тэме)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Па-першае, калі ласка, абярыце форму тыпу."; +$LANG["text_client_form_page"] = "На гэтай старонцы пералічаны ўсе формы і праглядаў што належаць гэтаму кліенту. Падказка: для таго, каб яны бачылі, прадстаўленыя формы, яны павінны быць прызначаныя па меншай меры адно меркаванне."; +$LANG["text_client_map_filters_desc1"] = "Фільтры кліента карта дазваляе абмежаваць прадстаўленняў, якія з'явяцца ў гэтым Адчыніць кошт адлюстравання значэнняў ў полі формы са значэннямі ў ўліковага запісу кліента."; +$LANG["text_client_no_forms"] = "У вас няма формы даступныя для прагляду."; +$LANG["text_client_welcome"] = "Добро пожаловать! Гэтая праграма захоўвае ўсю інфармацыю, прадстаўленую наведвальнікі вашага сайта. Для прагляду матэрыялаў для канкрэтнай формы націсніце на спасылку "Паказаць ці гл. левае меню навігацыі для іншых варыянтаў."; +$LANG["text_config_file_created"] = "Ваш config.php файл быў створаны."; +$LANG["text_config_file_not_created"] = "Мы не змаглі стварыць свой config.php. Вам трэба будзе стварыць файл ўручную."; +$LANG["text_config_file_not_created_instructions"] = "Скапіруйце і ўстаўце змесціва з падзелу ніжэй у файл config.php і ўкладання яго праз FTP да форме Скрынка прылад / глабальныя папкі (папкі, якая ўтрымлівае таксама некалькі іншых файлаў і каталогаў, адзін файл з назвай library.php)."; +$LANG["text_confirm_delete_form"] = "Так, я хачу, каб выдаліць гэтую форму"; +$LANG["text_create_admin_account"] = "Зараз мы збіраемся стварыць рахунак адміністратара. Гэта выкарыстоўваецца для кіравання ўсімі аспектамі форма інструменты, такія як даданне формаў і стварэнне уліковых запісаў кліентаў."; +$LANG["text_create_new_client_account"] = "Выкарыстайце форму ніжэй, каб стварыць новы рахунак кліента. Усе палі з'яўляюцца абавязковымі."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "см. PHP {\$datefunctionlink} функцыя для фарматавання"; +$LANG["text_default_file_settings_page"] = "Гэтая старонка вызначае наладкі загрузкі файлаў для ўстаноўкі Инсрументы. Гэтыя правілы распаўсюджваюцца на ўсе файлы, загружаныя праз Инсрументы, калі яўна не переопределяется для асобных палёў формы. Заўвага: калі вы зменіце папку пасля загрузкі файлаў былі загружаныя, яны будуць аўтаматычна перанесены ў новую папку."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Перш чым працягваць, вам трэба абнавіць / Тэмы / Default / тэчцы кэша для забеспячэння поўнага чытанне і запіс. Як толькі гэта будзе зроблена, гэта паведамленне знікне, і вы можаце ўсталяваць скрыпт."; +$LANG["text_default_values_in_view"] = "Гэты падзел не з'яўляецца абавязковым. Усе матэрыялы, створаныя з гэтага пункту гледжання будзе ўтрымоўваць значэнні па змаўчанні паказаны тут."; +$LANG["text_delete_all_forms"] = "Я хачу, каб выдаліць усе файлы, якія былі загружаны з дапамогай гэтай формы"; +$LANG["text_delete_form_warning"] = "Вы ўпэўненыя, што жадаеце выдаліць гэтую форму? Гэта дзеянне не можа быць адмененае. Усе дадзеныя будуць незваротна згублены!"; +$LANG["text_edit_admin_menu_page"] = "Вы можаце рэдагаваць меню ніжэй. Каб заўсёды мець доступ да ўсёй функцыянальнасці наяўных у Инсрументы, неабходныя наступныя старонкі: формы, кліенты, ваш уліковы запіс, модулі, Наладкі і Выйсці."; +$LANG["text_edit_client_menu_page"] = "Гэты раздзел дазваляе наладзіць левую калонку навігацыі для кожнага карыстальніка. Вы можаце стварыць столькі мяне кліент, як вы і хацелі прысвоіць любой рахунак у адным з іх. Па змоўчванні ёсць два меню: адно для вас, адміністратар і адзін для ўсіх уліковых запісаў кліентаў. Уліковы запіс адміністратара можа быць зменена, але не выдаляюцца."; +$LANG["text_edit_tab_summary"] = "Калі вы жадаеце гэтую групу палёў Паглядзець ў выглядзе закладак, проста ўвядзіце імя ўкладкі ніжэй. Пасля таго як вы скончыце, абярыце адпаведную ўкладку для кожнага поля групы ў ўкладцы Палі ."; +$LANG["text_edit_view_list_page"] = "Гэтая ўкладка вызначае, якія поля будуць прадстаўлены ў выглядзе слупкоў на старонцы лістынга ўяўленне, і некалькі дадатковых налад для гэтых палёў. Увага: Мы рэкамендуем Вам дадаць не больш за 4 або 5 найбольш важных палёў у прадстаўленні."; +$LANG["text_email_settings_intro"] = "Гэтая старонка дазваляе вызначыць, якія з вашых лістоў палях формы захоўвання і адпаведныя ім імёны. Як толькі вы вызначыце іх тут, вы можаце выкарыстоўваць іх у якасці шаблонаў электроннай пошты атрымальнікаў. Гэты падзел не з'яўляецца абавязковым."; +$LANG["text_email_tab_summary"] = "Гэты раздзел дазваляе вам пабудаваць любую колькасць лістоў будзе адпраўлена, калі представляется форму, а іншымі метадамі."; +$LANG["text_email_template_tab"] = "Гэты раздзел дазваляе вызначыць, якое ўтрыманне з'яўляецца ў электроннай пошце. Калі вы хочаце адправіць Імя паведамленне як толькі тэкст або электроннай пошце, толькі ўвесці значэння для гэтага падзела. Калі вы ўводзіце значэння для абодвух, будзе адпраўлена ў абодвух фарматаў."; +$LANG["text_email_template_text_1"] = "Там было зроблена прадстаўленне праз вашу форму, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Там было зроблена прадстаўленне праз вашу форму, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Дзякуй за ваша прадстаўленне!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Паведамленне аб памылцы, каб паказаць, калі поле не праверка"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Вонкавыя формы з'яўляюцца формамі, якія ўжо існуюць на вашым сайце, або дзе-небудзь у Інтэрнэце. Вылучыце гэтую опцыю, калі ў вас ёсць уласныя формы, якую вы хацелі б інтэгравацца з формай Tools."; +$LANG["text_fields_tab_summary"] = "На гэтай старонцы пералічаны ўсе вашыя палі формы. Каб кантраляваць тое, як яны з'яўляюцца пры праглядзе матэрыялаў, убачыць Праглядаў ўкладцы . Выдаленне поля на гэтай старонцы, выдаліць яго з усіх прадстаўленых, так што будзьце асцярожныя!"; +$LANG["text_file_extension_info"] = "Калі ласка, увядзіце пашырэнняў файлаў, падзеленых коскамі (напрыклад, JPG, GIF, PNG) або пакінуць пустым, каб дазволіць любому тыпу файла."; +$LANG["text_file_field_placeholders_info"] = "Поля файла ёсць дзве спецыяльныя запаўняльнікі: Спасылка файла і імя файла. Спасылка файла з'яўляецца поўны шлях да файла, так што вы можаце наўпрост да яго ў вашых лістоў; імя файла проста па імя файла."; +$LANG["text_filters_page"] = "Толькі тыя паказы, якія задавальняюць зададзеным вамі крытэрыях ніжэй з'явіцца ў гэтым прадстаўленні."; +$LANG["text_filters_tips"] = "Парады аб тым, як выкарыстоўваць прадстаўленне фільтры, гл Дакументацыя карыстальніка."; +$LANG["text_forgot_password"] = "Няма праблем. Проста ўвядзіце імя карыстальніка ніжэй і ваш, факты, інфармацыя будзе адпраўлена на ваш адрас электроннай пошты на файле. Калі Вы забылі сваё імя карыстальніка, калі ласка, напішыце адміністратару сайта па адрасе {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Гэтая форма утрымлівае адзін або некалькі файлаў загрузіць галінах:"; +$LANG["text_form_placeholder_info"] = "Наступныя запаўняльнікі могуць быць выкарыстаны ў любы электроннай пошты шаблон і мову запаўняльнік поля, незалежна ад любой Паглядзець шаблон электроннай пошты прызначаны. ПЫТАННЕ запаўняльнікі канкрэтны пытанне формы; АДКАЗ запаўняльнікі адказаў на кожнае пытанне."; +$LANG["text_form_submission_date_placeholder"] = "Дата прадстаўлення была зроблена."; +$LANG["text_form_tools_form_url"] = "Поўны адрас форме. Гэта толькі мае значэнне для знешніх формаў."; +$LANG["text_form_tools_login_url"] = "Лагін URL для Инсрументы."; +$LANG["text_form_view_permission_info_admin"] = "Звярніце ўвагу: гэтая форма ў цяперашні час мае тып доступу адміністратара, так што ні адзін з рахункаў кліентаў змогуць убачыць гэта прадстаўленне."; +$LANG["text_form_view_permission_info_private"] = "Звярніце ўвагу: гэтая форма ў цяперашні час мае закрыты тып доступу, з тым дзяржаўным і прыватным варыянтаў тут будзе абмежавана, што падмноства кліентаў."; +$LANG["text_ft_installed"] = "Віншуем, форма інструментаў была паспяхова ўсталяваная!"; +$LANG["text_global_placeholder_info"] = "Гэтыя запаўняльнікі могуць быць выкарыстаны ў любой шаблон і любой формы."; +$LANG["text_group_name_explanation"] = "Для палёў, дадалі праз Add Form працэс, гэта значэнне ўжо запоўненыя на дысплеі тэксту незалежна ад полу выкарыстоўвае значэнне. Вы можаце змяніць яго, каб лепш ахарактарызаваць змест."; +$LANG["text_install_create_config_file"] = "Инсрументы крамах вашага сервера і настройкі базы дадзеных у файл config.php, знайшоў у вашай / Global / папкі. Націсніце кнопку "Стварыць файл" кнопку, каб аўтаматычна генерыраваць файл на вашым серверы."; +$LANG["text_install_create_database_tables"] = "Зараз мы збіраемся стварыць форму табліц і распрацоўкі баз даных. Гэты крок патрабуе самай базы дадзеных, ужо былі створаны. Калі вы не ўпэўнены, як гэта зрабіць, калі ласка, звярніцеся да вашага хостынг-провайдеру."; +$LANG["text_install_db_tables_error_tip_1"] = ""Невядомы MySQL Server Host" звычайна азначае, што вы ўказалі імя хаста з'яўляецца няслушным. Можа быць, паспрабуйце ўсталяваць яе ў "Localhost" - гэта звычайны спосаб спасылацца на "лакальны" базу даных на вэб-сэрвэры."; +$LANG["text_install_db_tables_error_tip_2"] = ""Не магу злучыцца з лакальных серверам MySQL праз сокет" азначае базу дадзеных хаста вобласці зноў няправільна."; +$LANG["text_install_db_tables_error_tip_3"] = ""Доступ зачынены для карыстальніка:" азначае, што існуе праблема з Вашым імем карыстальніка і паролем."; +$LANG["text_install_db_tables_error_tip_4"] = ""Доступ зачынены для карыстальніка: ... да базе дадзеных ..." азначае, што хоць імя карыстальніка і пароль, названыя правільна, ён не змог падключыцца да гэтай канкрэтнай базе дадзеных з гэтага рахунку. Гэта можа азначаць, што альбо базе дадзеных ваша імя няправільна, ці што гэтая уліковы запіс карыстальніка не звязана з гэтай базай дадзеных."; +$LANG["text_install_email_content_text"] = "Там ёсць шмат рэсурсаў на нашым сайце, каб дапамагчы вам пачаць працу, у тым ліку і нашай інтэрактыўнай дакументацыі (https://docs.formtools.org) і навучальныя дапаможнікі (https://docs.formtools.org/tutorials). Калі вы выявілі, што затрымаліся ці ёсць пытанне, задаць пытанне на GitHub (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "На жаль, форма інструменты не будуць мець магчымасць запускаць на вашым серверы. Калі ласка, націсніце тут для мінімальных патрабаванняў."; +$LANG["text_install_system_check"] = "Гэтая старонка праходзіць некалькі тэстаў на вашай сістэме, каб забяспечыць гэта магчымасць запускаць Инсрументы."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Унутраныя формы існуюць толькі ў форме Прылады - не ў іншым месцы на вашым сайце. Толькі форма рахункі Інструменты карыстальнік будзе мець доступ да форме. Вылучыце гэтую опцыю, калі ў вас няма існуючай форме."; +$LANG["text_internal_form_intro"] = "Выкарыстоўвайце форму ніжэй, каб стварыць новую ўнутраную форму. Усе налады, у тым ліку колькасць і ўтрыманне палёў формы можа быць зменены і настроены пазней."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "У мэтах Логін і выкарыстоўваць форму інструментаў, вы павінны мець уключаны JavaScript ў вашым браўзэры. Просьба даць яму цяпер, і націсніце кнопку Абнавіць ў браўзэры."; +$LANG["text_last_modified_date_explanation_c"] = "У апошні раз была зменена гэтага тэзіса. Для новых прадстаўленняў, гэта тое ж самае, як:"; +$LANG["text_limit_email_content_desc"] = "Гэтая опцыя працуе толькі для HTML і тэкставы кантэнт генеруецца з Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(толькі для спісаў Праглядаў з адным ці некалькімі фільтрах вызначаны)"; +$LANG["text_log_in_to_ft"] = "Увайсці ў Инсрументы"; +$LANG["text_login"] = "Калі ласка, увайдзіце для атрымання доступу ў \$ () имя_программы панэль адміністравання. Калі вы забылі свой пароль, націсніце тут."; +$LANG["text_login_info"] = "У адпаведнасці з просьбай, вось ваша Лагін інфармацыі."; +$LANG["text_name_of_form"] = "Назва формы."; +$LANG["text_no_clients"] = "Ёсць кліенты ў цяперашні час няма ў базе дадзеных. Для дадання новай ўліковага запісу кліента, націсніце кнопку "Дадаць кліента кнопку ніжэй."; +$LANG["text_no_clients_found"] = "Не знойдзена ніводнага кліента. Паспрабуйце пашырэнне крытэрыяў пошуку."; +$LANG["text_no_fields_in_view"] = "Гэта ўяўленне не ёсць якія-небудзь палі ў ім. Націсніце на спасылку ніжэй."; +$LANG["text_no_forms"] = "Ёсць у цяперашні час няма формы ў базе дадзеных. Каб дадаць новую форму, націсніце кнопку "Дадаць кнопкі ў форме ніжэй."; +$LANG["text_no_forms_found"] = "Няма формы былі знойдзеныя."; +$LANG["text_no_forms_found_search"] = "Няма формы былі знойдзеныя. Паспрабуйце пашырыць крытэры пошуку."; +$LANG["text_no_modules_found"] = "Не знойдзена ні аднаго модуля. Паспрабуйце пашырэнне крытэрыяў пошуку."; +$LANG["text_no_recipients_added"] = "Няма атрымальнікаў былі дададзеныя."; +$LANG["text_no_search_results"] = "Ёсць ніякіх вынікаў з гэтым крытэрам пошуку / View."; +$LANG["text_no_submissions_found"] = "На жаль, было выяўлена якіх-небудзь паказаў."; +$LANG["text_no_themes"] = "У вас няма ні адной тэмы вызначана. Націсніце на кнопку ніжэй, каб асвяжыць сваю тэму спісе, або праверыць карыстальніка Форма Інструменты дакументацыі для атрымання інфармацыі аб даданні тэмы."; +$LANG["text_non_deletable_fields"] = "Гэта поле выкарыстоўваецца за кошт базавага сцэнарыя і не могуць быць зменены або выдалены без нанясення несумяшчальнасці. Калі вы жадаеце ўнесці змены ў тыпе палі, зрабіць копію і рэдагаваць копію."; +$LANG["text_option_list_group_explanation"] = "Калі выбраны гэты варыянт, ён дазваляе групаваць вашы варыянты. Як груп адлюстроўваюцца ў залежнасці ад тыпу поля з дапамогай гэтага спісу опцый."; +$LANG["text_option_list_page"] = "Радыё кнопкі, сцяжкі, выпадаючыя і множнага выбару выпадаючых палях усе падаюць карыстачу мноства варыянтаў, з якіх яны могуць выбраць адзін або некалькі элементаў. У форме Інструменты, яны вядомыя як варыянт спісаў. Як правіла, яны ствараюцца аўтаматычна дадаць знешнюю форму працэсу, але вы можаце ўручную дадаваць або рэдагаваць свае спісы опцыю ніжэй, калі ваша форма змены ўтрымання, альбо ствараюць палі, якія выкарыстоўваюцца толькі ўнутры краіны."; +$LANG["text_option_list_used_by_fields"] = "Гэты спіс опцый выкарыстоўваецца некалькі палёў формы. Пры абнаўленні інфармацыі ніжэй, ён будзе зменены для ўсіх палёў (гл. палёў формы ўкладку, каб убачыць спіс палёў). Калі вы хочаце абнавіць значэння для аднаго або падмноства палёў, якія ў цяперашні час прызначаны, націсніце тут , каб стварыць новы спіс Варыянт з тымі ж значэннямі, як гэты. Затым можна прызначыць палі формы вы хочаце новую групу."; +$LANG["text_public_form_omit_list_page"] = "Грамадскія формы даць вам перавага даючы ўсім кліенцкі рахунках доступ да іх без неабходнасці ўручную прысвоіць кожнаму кліенту з імі. На гэтай старонцы можна вызначыць тыя кліенты, якія не могуць атрымаць доступ да гэтай форме, хоць форма адзначаецца як грамадскасць."; +$LANG["text_public_view_omit_list_page"] = "Грамадскі праглядаў даць вам перавага даючы ўсім кліенцкі рахунках доступ да іх без неабходнасці ўручную прысвоіць кожнаму кліенту з імі. На гэтай старонцы можна вызначыць тыя кліенты, якія не могуць атрымаць доступ да гэтай спецыфічнай прадстаўленнем."; +$LANG["text_reference_tab_info"] = "На гэтай старонцы пералічаны ўсе даступныя запаўняльнікі для формы. Запаўняльнікі з'яўляюцца радкамі, якія можна выкарыстоўваць у паведамленні шаблоны і палі, адзначаныя адмысловым значком запаўняльніка . Калі ўступіў у полі, яны дынамічна пераўтворыцца ў адпаведнае значэнне, калі поле прагляду і ліст будзе дасланы."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Агляд дакументацыі карыстальніка"; +$LANG["text_send_email_from_edit_submission_page"] = "Уключыце опцыю, каб адправіць ліст ад старонцы Змяніць прадстаўленне"; +$LANG["text_smart_fill_option_list_problem"] = "Мы не змаглі Smart Fill вашыя варыянты полі. Тым не менш, у якасці альтэрнатывы, вы можаце паспрабаваць загрузку копіі старонкі формы ў полі ніжэй. Звярніце ўвагу: не загружаць сыравіну PHP старонак (ці іншы код на боку сервера) - проста загрузіць HTML версію. Каб атрымаць гэта, праглядзець і захаваць старонку з вэб-браўзэра."; +$LANG["text_submission_ip_address"] = "IP-адрас карыстальніка, які зрабіў паказ."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Выкарыстайце форму ніжэй, альбо праглядзець або адправіць свой адрас электроннай пошты інфармацыі з гэтай электронны шаблон. Электронная пошта дасылаецца толькі для электроннай пошты, паказаных ніжэй, асноўнае, CC і BCC Адрас электроннай пошты атрымальніка ігнаруюцца пры тэставанні."; +$LANG["text_test_email_templates_no_submissions"] = "Для таго, каб пратэставаць ваш электронны шаблонаў, вы павінны спачатку пакласці по крайней мере адну форму прадстаўлення."; +$LANG["text_theme_page_intro"] = "На гэтай старонцы пералічаны ўсе вашыя тэмы. Націсьніце на малюнак, каб убачыць больш прыкладаў стылях тэмы. "Улучана" сьцяжок вызначае, ці з'яўляецца або няма, што тэма можа быць выбраны кліентам. Для прагляду ўсіх даступных тым, наведайце сайт Инсрументы."; +$LANG["text_tutorial_adding_first_form"] = "Вучэбны дапаможнік: Даданне першай форме!"; +$LANG["text_unique_submission_id"] = "Унікальнае прадстаўленне ID."; +$LANG["text_unused_option_list"] = "Гэты варыянт спісу не выкарыстоўваецца ні палёў формы."; +$LANG["text_upgraded"] = "Ваша ўстаноўка была абноўленая да {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Гэты спіс опцый выкарыстоўваецца наступныя поля."; +$LANG["text_view_fields_info"] = "Гэтая ўкладка вызначае, якія поля адлюстроўваюцца ў рэжыме рэдагавання прадстаўлення гэтага пункту гледжання, іх парадак і ці будуць яны даступныя для рэдагавання ці не."; +$LANG["text_view_tab_summary"] = "Гэтая ўкладка дазваляе ствараць розныя спосабы групы і арганізаваць вашыя дадзеныя. Праглядаў дазваляюць ствараць карыстацкія падмноства дадзеных формы, каб падзяліць яе на кіраваныя часткі, а таксама абмежаваць тое, што кліенты могуць убачыць ці змяніць."; +$LANG["validation_account_disabled"] = "На жаль, ваш рахунак быў адключаны."; +$LANG["validation_account_not_recognized"] = "На жаль, гэта імя карыстальніка не распазнаецца."; +$LANG["validation_account_not_recognized_info"] = "На жаль, гэта імя карыстальніка не знойдзена. Калі ласка, паўтарыце спробу ці звяртайцеся да адміністратару сайта па дадзеным ніжэй адрасе."; +$LANG["validation_account_pending"] = "Ваш уліковы запіс у чаканьні адабрэння адміністратарам."; +$LANG["validation_check_delete_client"] = "Вы ўпэўненыя, што жадаеце выдаліць гэты конт кліента?"; +$LANG["validation_client_password_missing_number"] = "Кліента пароль павінен утрымліваць па меншай меры адзін нумар (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Кліента пароль павінен утрымліваць па меншай меры адзін з наступных {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Кліента пароль павінен утрымліваць па меншай меры адну вялікіх літараў."; +$LANG["validation_client_password_too_short"] = "Кліента пароль павінен быць не менш {\$number} сімвалаў."; +$LANG["validation_col_name_is_reserved_word"] = "На жаль, гэтае імя слупкі базы даных, з'яўляецца зарэзерваваныя працу ў MySQL. Калі ласка, перайменаваць яго!"; +$LANG["validation_db_name"] = "Імёны баз дадзеных не можа ўтрымліваць перыяды або касую рысу."; +$LANG["validation_db_not_updated_invalid_input"] = "База дадзеных не можа быць абноўлена. Калі ласка, праверце значэння, якія ўступілі з'яўляюцца сапраўднымі."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "На жаль, адміністратар і кліент па змоўчванні тэмы павінны быць заўсёды ўключаны."; +$LANG["validation_default_phone_num_required"] = "Калі ласка, запоўніце поўны тэлефонны нумар для <b> { \$ поле} </ B> полі - толькі лічбы."; +$LANG["validation_default_rule_alpha"] = "Калі ласка, уводзьце толькі літары і лічбы для <b> { \$ поле} </ B> полі."; +$LANG["validation_default_rule_letters_only"] = "Калі ласка, уводзьце толькі літары <b> { \$ поле} </ B> полі."; +$LANG["validation_default_rule_numbers_only"] = "Калі ласка, толькі ўводзіць лічбы для <b> { \$ поле} </ B> полі."; +$LANG["validation_default_rule_required"] = "Калі ласка, увядзіце значэнне для <b> { \$ поле} </ B> полі."; +$LANG["validation_default_rule_valid_email"] = "Калі ласка, увядзіце адрас электроннай пошты для <b> { \$ поле} </ B> полі."; +$LANG["validation_delete_form_confirm"] = "Калі ласка, усталюйце сьцяжок, каб пацвердзіць, што вы хочаце выдаліць гэтую форму."; +$LANG["validation_delete_non_empty_option_list"] = "Увага! Гэты спіс опцый выкарыстоўваецца адно або некалькі палёў формы. Выдаленне гэта зробіць гэтыя палі перастаюць працаваць належным чынам."; +$LANG["validation_display_names_incomplete"] = "Калі ласка, увядзіце значэння для адлюстравання ўсіх імёнаў, або выберыце варыянт Smart Fill ўвесці іх дынамічна."; +$LANG["validation_duplicate_form_field_name"] = "Вы не можаце мець некалькі палёў з аднолькавым імем поля."; +$LANG["validation_email_not_found_or_invalid"] = "На жаль, электроннай пошты звязаны з вашым акаўнтам, альбо наогул не існуе, або з'яўляецца несапраўднай."; +$LANG["validation_folder_invalid_permissions"] = "Для таго, каб выканаць гэтую праверку, дазволу павінны быць устаноўлены ў папцы загрузкі, каб для чытання і запісы файлаў (777 на Unix)."; +$LANG["validation_folder_not_writable"] = "Гэтая папка не з'яўляецца даступным для запісу."; +$LANG["validation_internal_form_too_many_fields"] = "На жаль, можна толькі створаныя формы з 1000 радовішчаў і менш."; +$LANG["validation_invalid_admin_email"] = "Калі ласка, увядзіце электронны адрас сапраўдныя adminstrator's."; +$LANG["validation_invalid_admin_username"] = "Ваша імя карыстальніка можа складацца толькі з алфавітна-лічбавыя сімвалы (AZ і 0-9)."; +$LANG["validation_invalid_client_username"] = "Імя карыстальніка кліента можа складацца толькі з алфавітна-лічбавыя сімвалы (AZ і 0-9)."; +$LANG["validation_invalid_client_username2"] = "На жаль, імя карыстальніка можа ўтрымліваць толькі літары, лічбы і знак падкрэслівання. Калі ласка, увядзіце новае імя карыстальніка."; +$LANG["validation_invalid_column_name"] = "Імёны слупкоў могуць быць толькі літарна-лічбавыя (AZ, 0-9). Калі ласка, праверце імёны слупкоў."; +$LANG["validation_invalid_custom_from_email"] = "Калі ласка, увядзіце правільны "Ад" Адрас электроннай пошты."; +$LANG["validation_invalid_custom_reply_to_email"] = "Калі ласка, увядзіце правільны карыстальніцкі "Адказаць" Адрас электроннай пошты."; +$LANG["validation_invalid_default_sessions_timeout"] = "Калі ласка, увядзіце дапушчальнае значэнне (лік) па змоўчванні таймаўт сесіі."; +$LANG["validation_invalid_email"] = "Калі ласка, увядзіце адрас электроннай пошты."; +$LANG["validation_invalid_email_id"] = "Прабачце, гэта няправільны адрас электроннай ID."; +$LANG["validation_invalid_folder"] = "Прабачце, як уяўляецца, не будзе сапраўдным папкі."; +$LANG["validation_invalid_form_field_names"] = "Палі формы, можа быць толькі літарна-лічбавыя і падкрэслівання (AZ, 0-9, _), без прабелаў."; +$LANG["validation_invalid_num_clients_per_page"] = "Калі ласка, увядзіце толькі лічбы ў Кліенты на поле Коль-старонку."; +$LANG["validation_invalid_num_emails_per_page"] = "Калі ласка, увядзіце толькі лічбы па электроннай пошце на кожнай старонцы."; +$LANG["validation_invalid_num_form_fields"] = "Калі ласка, уводзьце толькі лічбы ў полі Колькасць палёў."; +$LANG["validation_invalid_num_forms_per_page"] = "Калі ласка, увядзіце толькі лічбы ў Коль-форм на поле старонкі."; +$LANG["validation_invalid_num_menus_per_page"] = "Калі ласка, увядзіце толькі лічбы для мяне на кожнай старонцы."; +$LANG["validation_invalid_num_modules_per_page"] = "Калі ласка, увядзіце толькі лічбы ў Коль-модуляў ў галіне старонкі."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Калі ласка, уводзьце толькі лічбы ў Num Варыянт Спісы на старонку полі."; +$LANG["validation_invalid_num_submissions_per_page"] = "Калі ласка, увядзіце сапраўднае колькасць прадстаўленых на старонцы."; +$LANG["validation_invalid_sessions_timeout"] = "Калі ласка, увядзіце правільны таймаўт сесіі (цэлыя толькі!)."; +$LANG["validation_invalid_tab_assign_values"] = "Калі ласка, увядзіце толькі нумар у поле "Ад" і "да" палёў."; +$LANG["validation_invalid_table_prefix"] = "Калі ласка, увядзіце прэфікс базы дадзеных складаецца з літары і знак падкрэслівання толькі."; +$LANG["validation_invalid_upload_folder"] = "Ўстаноўка вашага сервера РНР мае недапушчальны настройкі для upload_tmp_dir значэння. "{\$upload_folder}" не зьяўляецца дапушчальным папкі."; +$LANG["validation_invalid_url"] = "Калі ласка, увядзіце правільны URL."; +$LANG["validation_invalid_username"] = "Імя, імя карыстальніка можа складацца толькі з алфавітна-лічбавыя сімвалы (AZ і 0-9)."; +$LANG["validation_is_form_active"] = "Просьба пазначыць від актыўны ці не."; +$LANG["validation_menu_name_taken"] = "На жаль, гэта меню імя ўжо занятае. Калi ласка, выбярыце новае імя."; +$LANG["validation_modules_search_no_status"] = "Калі ласка, абярыце Уключана або Выключаны галачкі."; +$LANG["validation_no_access_type"] = "Калі ласка, ўвядзіце тып доступу."; +$LANG["validation_no_account_logout_url"] = "Калі ласка, увядзіце Ваш Logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Калі ласка, увядзіце ваш новы пароль."; +$LANG["validation_no_account_password_confirmed2"] = "Яшчэ раз увядзіце новы пароль."; +$LANG["validation_no_admin_email"] = "Калі ласка, увядзіце адрас электроннай пошты адміністратара."; +$LANG["validation_no_admin_theme"] = "Калі ласка, абярыце тэму для ўліковага запісу адміністратара."; +$LANG["validation_no_admin_theme_swatch"] = "Калі ласка, абярыце ўзор для адміністратара тэму."; +$LANG["validation_no_client_email"] = "Калі ласка, увядзіце электронны адрас кліента."; +$LANG["validation_no_client_first_name"] = "Калі ласка, увядзіце імя кліента."; +$LANG["validation_no_client_last_name"] = "Калі ласка, увядзіце прозвішча кліента."; +$LANG["validation_no_client_login_page"] = "Просьба пазначыць, на якой старонцы кліент павінен быць перенаправлен пры ўваходзе"; +$LANG["validation_no_client_password"] = "Калі ласка, увядзіце пароль кліента."; +$LANG["validation_no_client_theme_swatch"] = "Калі ласка, абярыце па змаўчанні ўзор для уліковых запісаў кліентаў."; +$LANG["validation_no_client_username"] = "Калі ласка, увядзіце імя карыстальніка кліента."; +$LANG["validation_no_column_name"] = "Калі ласка, увядзіце ўсе імёны слупкоў, або націсніце кнопку Smart Fill для аўтаматычнага запаўнення іх."; +$LANG["validation_no_column_selected"] = "Калі ласка, выберыце прынамсі адно поле з'яўляюцца ў калонцы на старонку са спісам прадстаўленне."; +$LANG["validation_no_custom_from_email"] = "Калі ласка, увядзіце адрасы "Ад" адрас электроннай пошты."; +$LANG["validation_no_custom_recipient_email"] = "Калі ласка, увядзіце карыстальніцкага адрасу атрымальніка."; +$LANG["validation_no_custom_reply_to_email"] = "Калі ласка, увядзіце звычай "Адказаць" Адрас электроннай пошты."; +$LANG["validation_no_date_format"] = "Калі ласка, ўвядзіце дату фармату."; +$LANG["validation_no_db_column_single"] = "Калі ласка, увядзіце імя слупка базы дадзеных."; +$LANG["validation_no_db_hostname"] = "Калі ласка, увядзіце імя базы дадзеных."; +$LANG["validation_no_db_name"] = "Калі ласка, увядзіце імя базы дадзеных."; +$LANG["validation_no_db_username"] = "Калі ласка, увядзіце імя карыстальніка базы даных уліковай запісу."; +$LANG["validation_no_default_client_theme"] = "Калі ласка, абярыце тэму па змоўчванні для ўсіх новых уліковых запісаў кліентаў."; +$LANG["validation_no_default_language"] = "Калі ласка, абярыце мова па змоўчванні для ўстаноўкі Формы Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Калі ласка, увядзіце таймаўт па змоўчванні для уліковых запісаў карыстальнікаў."; +$LANG["validation_no_display_text"] = "Калі ласка, увядзіце Адлюстраванне тэксту для кожнага поля."; +$LANG["validation_no_display_text_single"] = "Калі ласка, увядзіце значэнне адлюстравання тэксту."; +$LANG["validation_no_edit_submission_page_label"] = "Калі ласка, увядзіце на старонцы Змяніць прадстаўленне этыкетцы."; +$LANG["validation_no_email"] = "Калі ласка, увядзіце Ваш адрас электроннай пошты."; +$LANG["validation_no_email_config_field"] = "Просьба пазначыць, якія палі формы з'яўляецца электронны вобласці."; +$LANG["validation_no_email_content"] = "Калі ласка, увядзіце ўтрыманне электроннай пошты, па крайняй меры адзін з фарматаў (HTML або тэкставыя)."; +$LANG["validation_no_email_from_field"] = "Калі ласка, электронная пошта "ад" поля."; +$LANG["validation_no_email_template_name"] = "Калі ласка, увядзіце электронны шаблон назву."; +$LANG["validation_no_email_template_view_id"] = "Калі ласка, абярыце Паказаць для якіх дадзенае паведамленне шаблон павінен быць адлюстраваны."; +$LANG["validation_no_email_template_view_mapping_value"] = "Просьба пазначыць, калі паведамленні павінны адпраўляцца."; +$LANG["validation_no_enabled_themes"] = "Калі ласка, пераканайцеся, што ўключаны по крайней мере адну тэму."; +$LANG["validation_no_first_name"] = "Калі ласка, увядзіце сваё імя."; +$LANG["validation_no_form_field_name"] = "Калі ласка, увядзіце ўсе назвы палёў формаў."; +$LANG["validation_no_form_field_single"] = "Калі ласка, увядзіце значэння палёў формы."; +$LANG["validation_no_form_id"] = "Форма ID не быў паказаны. Выйдзіце з сістэмы і паспрабуйце яшчэ раз."; +$LANG["validation_no_form_name"] = "Калі ласка, увядзіце імя формы."; +$LANG["validation_no_form_url"] = "Калі ласка, увядзіце форме URL."; +$LANG["validation_no_last_name"] = "Калі ласка, увядзіце сваё прозвішча."; +$LANG["validation_no_login_page"] = "Просьба пазначыць, якія раз вы хацелі б быць адпраўлены пры кожным ўваходзе"; +$LANG["validation_no_logout_url"] = "Калі ласка, увядзіце Logout URL."; +$LANG["validation_no_main_email_recipient"] = "Калі ласка, пазначце хаця б адзін асноўны атрымальнік электроннай пошце (г.зн. не CC або BCC)."; +$LANG["validation_no_menu"] = "Калі ласка, абярыце з меню для гэтай ўліковага запісу карыстальніка."; +$LANG["validation_no_menu_id"] = "Калі ласка, выберыце ў меню."; +$LANG["validation_no_num_clients_per_page"] = "Калі ласка, увядзіце нумар рахунку кліента на кожнай старонцы."; +$LANG["validation_no_num_emails_per_page"] = "Калі ласка, увядзіце лік паведамленняў электроннай пошты ў спіс на старонцы."; +$LANG["validation_no_num_form_fields"] = "Калі ласка, увядзіце лік палёў для формы."; +$LANG["validation_no_num_forms_per_page"] = "Калі ласка, ўвядзіце нумар формы на старонцы."; +$LANG["validation_no_num_menus_per_page"] = "Калі ласка, ўвядзіце нумар меню спіс на кожнай старонцы."; +$LANG["validation_no_num_modules_per_page"] = "Калі ласка, увядзіце лік модуляў на адной старонцы."; +$LANG["validation_no_num_option_lists_per_page"] = "Калі ласка, увядзіце лік варыянт спісаў на старонцы."; +$LANG["validation_no_num_submissions_per_page"] = "Калі ласка, увядзіце колькасць прадстаўленых для паказу на старонцы."; +$LANG["validation_no_option_list_name"] = "Калі ласка, увядзіце імя спісу опцый."; +$LANG["validation_no_page_titles"] = "Калі ласка, увядзіце назву старонкі па змоўчванні для уліковых запісаў карыстальнікаў."; +$LANG["validation_no_password"] = "Калі ласка, увядзіце свой пароль."; +$LANG["validation_no_program_name"] = "Калі ласка, ўвядзіце назву праграмы."; +$LANG["validation_no_second_password"] = "Калі ласка, паўторыце ўвод пароля."; +$LANG["validation_no_sessions_timeout"] = "Калі ласка, увядзіце тайм-аўт сеанса."; +$LANG["validation_no_smart_fill_values"] = "Калі ласка, увядзіце імя поля формы і URL формы."; +$LANG["validation_no_table_prefix"] = "Калі ласка, увядзіце прэфікс базы дадзеных."; +$LANG["validation_no_tabs_defined"] = "Не вызначана таблетак"; +$LANG["validation_no_test_email_recipient"] = "Калі ласка, увядзіце электронны адрас, дзе мы павінны адправіць тэставае паведамленне."; +$LANG["validation_no_test_email_submission_id"] = "Калі ласка, увядзіце прадстаўлення ідэнтыфікацыйны нумар."; +$LANG["validation_no_theme"] = "Калі ласка, абярыце тэму."; +$LANG["validation_no_theme_swatch"] = "Калі ласка, абярыце ўзор для абранай тэме."; +$LANG["validation_no_timezone_offset"] = "Калі ласка, увядзіце зрух гадзіннага пояса."; +$LANG["validation_no_titles"] = "Калі ласка, увядзіце назваў старонак."; +$LANG["validation_no_two_column_names"] = "На жаль, вы не можаце ўвесці тое ж імя слупкі базы дадзеных у два разы."; +$LANG["validation_no_ui_language"] = "Калі ласка, выберыце мову для інтэрфейсу."; +$LANG["validation_no_url"] = "Калі ласка, увядзіце URL."; +$LANG["validation_no_username"] = "Калі ласка, увядзіце імя карыстальніка."; +$LANG["validation_no_username_or_js"] = "Вы павінны ўвесці сваё імя карыстальніка. Калі ласка, уключыце JavaScript ў вашым браўзэры."; +$LANG["validation_no_view_fields"] = "Ваша меркаванне не змяшчае палёў! Вы павінны прызначыць по крайней мере, адно поле для ўзнікнення то з'яўляўся на ваш погляд."; +$LANG["validation_no_view_fields_selected"] = "Калі ласка, абярыце адзін або некалькі палёў, каб дадаць у імпрэзе."; +$LANG["validation_no_view_name"] = "Калі ласка, увядзіце імя ваша меркаванне."; +$LANG["validation_num_rows_to_add"] = "Калі ласка, увядзіце лік радкоў дадаць."; +$LANG["validation_option_list_name_taken"] = "Выбачайце, гэтае імя спісу опцый ўжо занята. Калі ласка, выберыце новае імя."; +$LANG["validation_password_in_password_history"] = "У мэтах забеспячэння бяспекі, вы не можаце ўвесці той жа пароль, як любы з апошніх {\$history_size}. Калі ласка, увядзіце іншы пароль."; +$LANG["validation_passwords_different"] = "Пераканайцеся, што паролі супадаюць."; +$LANG["validation_please_enter_search_date_range"] = "Калі ласка, выберыце пошук па дыяпазоне дат."; +$LANG["validation_please_enter_search_keyword"] = "Калі ласка, увядзіце ключавое слова пошуку."; +$LANG["validation_select_field_type"] = "Калі ласка, абярыце тып поля."; +$LANG["validation_select_submissions_to_copy"] = "Калі ласка, абярыце тыя ўяўленні, якія вы хацелі скапіяваць."; +$LANG["validation_select_submissions_to_delete"] = "Калi ласка, выбярыце гэтых матэрыялаў вы хацелі б выдаліць."; +$LANG["validation_smart_fill_cannot_fill"] = "На жаль, мы не змаглі запоўніць гэтай галіне."; +$LANG["validation_smart_fill_invalid_field_type"] = "Нам не ўдалося знайсці поле, але гэта не раскрываюцца, сьцяжок або радыё-групы."; +$LANG["validation_smart_fill_no_field_found"] = "На жаль, мы не змаглі знайсці такую форму, што поле з імем на старонцы указаны."; +$LANG["validation_smart_fill_no_page"] = "Калі ласка, знайдзіце старонка, якая змяшчае поле, якое вы хацелі б Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Калі ласка, ўкладання усе старонкі ў вашай форме."; +$LANG["validation_upload_folder_not_writable"] = "Гэтая часовая папка загрузіць ўказаны вашай ўстаноўцы PHP не падтрымлівае запісу. Да ліквідацыі гэтай памылкі, файлы не могуць быць загружаны праз форму Сэрвіс (або любую іншую праграму, PHP). Калі ласка, звярніцеся да вашага хостынг-провайдеру."; +$LANG["validation_upload_html_files_only"] = "Загружайте толькі файлы HTML."; +$LANG["validation_username_taken"] = "На жаль, гэта імя карыстальніка ўжо занята. Калі ласка, увядзіце іншае імя карыстальніка."; +$LANG["validation_wrong_password"] = "На жаль, гэты пароль не супадае."; +$LANG["word_about"] = "Аб"; +$LANG["word_access"] = "Доступ"; +$LANG["word_account"] = "Уліковы запіс"; +$LANG["word_account_sp"] = "Рахунку (ов)"; +$LANG["word_accounts"] = "Рахункі"; +$LANG["word_action"] = "Дзеянне"; +$LANG["word_active"] = "Актыўная"; +$LANG["word_add"] = "Дадаць"; +$LANG["word_add_rightarrow"] = "Дадаць »"; +$LANG["word_add_uc_rightarrow"] = "Дадаць »"; +$LANG["word_administration"] = "Адміністрацыя"; +$LANG["word_administrator"] = "Адміністратар"; +$LANG["word_after"] = "Пасля"; +$LANG["word_aquamarine"] = "Аквамарын"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Аўтар"; +$LANG["word_author_c"] = "Аўтар:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Назад"; +$LANG["word_bcc_c"] = "СК:"; +$LANG["word_before"] = "Перш"; +$LANG["word_benefits"] = "Перавагі"; +$LANG["word_blue"] = "Сіні"; +$LANG["word_cancel"] = "Адмяніць"; +$LANG["word_cc_c"] = "Копія:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Сцяжкі"; +$LANG["word_checklist"] = "Кантрольны спіс"; +$LANG["word_client"] = "Кліент"; +$LANG["word_client_c"] = "Кліент:"; +$LANG["word_clients"] = "Кліенты"; +$LANG["word_close"] = "Зачыніць"; +$LANG["word_code"] = "Кодэкс"; +$LANG["word_column"] = "Калонка"; +$LANG["word_columns"] = "Калоны"; +$LANG["word_columns_sp"] = "Калонка (ы)"; +$LANG["word_complete"] = "Поўная"; +$LANG["word_configuration"] = "Канфігурацыя"; +$LANG["word_content"] = "Змест"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Працяг »"; +$LANG["word_copy"] = "копія"; +$LANG["word_custom"] = "Звычай"; +$LANG["word_data"] = "Дадзеныя"; +$LANG["word_date"] = "Спатканне"; +$LANG["word_debugging_c"] = "Адладка:"; +$LANG["word_delete"] = "Выдаліць"; +$LANG["word_desc"] = "Апісанне"; +$LANG["word_direct"] = "Прамой"; +$LANG["word_disabled"] = "Інваліды"; +$LANG["word_documentation"] = "Дакументацыя"; +$LANG["word_done"] = "Зроблены"; +$LANG["word_drawbacks"] = "Недахопы"; +$LANG["word_dropdown"] = "Раскрываюцца"; +$LANG["word_edit"] = "Змяніць"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Электронная пошта"; +$LANG["word_email_c"] = "Электронная пошта:"; +$LANG["word_emails"] = "Лісты"; +$LANG["word_enabled"] = "Ўключана"; +$LANG["word_equals"] = "Equals"; +$LANG["word_error"] = "Памылка"; +$LANG["word_error_c"] = "Памылка:"; +$LANG["word_examples_c"] = "Прыклады:"; +$LANG["word_external"] = "Знешнія"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Поле"; +$LANG["word_field_sp"] = "Палявы (ы)"; +$LANG["word_fields"] = "Палёў"; +$LANG["word_fields_sp"] = "Поле (палі)"; +$LANG["word_file"] = "Файл"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Файлы"; +$LANG["word_filters"] = "Фільтры"; +$LANG["word_filters_sp"] = "Фільтр (ы)"; +$LANG["word_for"] = "для"; +$LANG["word_form"] = "Формаў"; +$LANG["word_form_c"] = "Форма:"; +$LANG["word_formatting"] = "Фарматаванне"; +$LANG["word_forms"] = "Формы"; +$LANG["word_found"] = "Заснаваць"; +$LANG["word_from"] = "Ад"; +$LANG["word_from_c"] = "Ад:"; +$LANG["word_general"] = "Агульны"; +$LANG["word_green"] = "Зялёны"; +$LANG["word_grey"] = "Шэры"; +$LANG["word_height"] = "Вышыня"; +$LANG["word_help"] = "Дапамога"; +$LANG["word_hidden"] = "Утоены"; +$LANG["word_highlight"] = "Вылучыце"; +$LANG["word_horizontal"] = "Гарызантальная"; +$LANG["word_hour"] = "Час"; +$LANG["word_hours"] = "Гадзін"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Няпоўная"; +$LANG["word_install"] = "Ўсталяваць"; +$LANG["word_installation"] = "Усталёўка"; +$LANG["word_internal"] = "Унутраны"; +$LANG["word_language"] = "Мова"; +$LANG["word_large"] = "Вялікі"; +$LANG["word_like"] = "Падабацца"; +$LANG["word_login"] = "Увайсці"; +$LANG["word_logo"] = "Лагатып"; +$LANG["word_logout"] = "Выйсці"; +$LANG["word_main"] = "Галоўны"; +$LANG["word_medium"] = "Серада"; +$LANG["word_menu"] = "Меню"; +$LANG["word_menus"] = "Меню"; +$LANG["word_minutes"] = "хвіліны"; +$LANG["word_misc"] = "Розны"; +$LANG["word_module"] = "Модуль"; +$LANG["word_modules"] = "Модулі"; +$LANG["word_na"] = "Не Працуе"; +$LANG["word_name"] = "Імя"; +$LANG["word_name_c"] = "Імя:"; +$LANG["word_never"] = "Ніколі"; +$LANG["word_next_rightarrow"] = "Наступная »"; +$LANG["word_next_step_rightarrow"] = "Наступны крок »"; +$LANG["word_no"] = "Няма"; +$LANG["word_none"] = "Ніякай"; +$LANG["word_notes"] = "Нататкі"; +$LANG["word_notification"] = "Апавяшчэння"; +$LANG["word_number"] = "Нумар"; +$LANG["word_off"] = "Па-за"; +$LANG["word_offline"] = "Оффлайн"; +$LANG["word_okay"] = "Усё ў парадку"; +$LANG["word_on"] = "На"; +$LANG["word_online"] = "Онлайн"; +$LANG["word_operator"] = "Аператар"; +$LANG["word_options"] = "Функцыі"; +$LANG["word_orange"] = "Аранжавы"; +$LANG["word_order"] = "Заказ"; +$LANG["word_other"] = "Іншы"; +$LANG["word_other_c"] = "Другое:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Старонка:"; +$LANG["word_pass"] = "Пасі"; +$LANG["word_password"] = "Пароль"; +$LANG["word_password_c"] = "Пароль:"; +$LANG["word_pending"] = "Разглядаемы"; +$LANG["word_permissions"] = "Дазволу"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Папярэдняя"; +$LANG["word_private"] = "Прыватныя"; +$LANG["word_public"] = "Грамадскія"; +$LANG["word_purple"] = "Пурпурны"; +$LANG["word_recipient"] = "Атрымальнік"; +$LANG["word_recipient_sp"] = "Атрымальнік (і)"; +$LANG["word_red"] = "Чырвоны"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Выдаліць"; +$LANG["word_remove_uc_leftarrow"] = "«Выдаліць"; +$LANG["word_reply_to"] = "Адказ да"; +$LANG["word_reply_to_c"] = "Адказаць:"; +$LANG["word_required"] = "Патрабуецца"; +$LANG["word_reset"] = "Скінуць"; +$LANG["word_resolved"] = "Resolved"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "шэраг"; +$LANG["word_search"] = "Пошук"; +$LANG["word_searchable"] = "Пошук"; +$LANG["word_select"] = "Абярыце"; +$LANG["word_setting"] = "Ўстаноўка"; +$LANG["word_settings"] = "Настройка"; +$LANG["word_show"] = "Паказваць"; +$LANG["word_size"] = "Памер"; +$LANG["word_skipped"] = "Прапушчаныя"; +$LANG["word_small"] = "Невялікі"; +$LANG["word_solution"] = "Рашэнне"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Пачатак"; +$LANG["word_status"] = "Статус"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Тэма"; +$LANG["word_subject_c"] = "Тэма"; +$LANG["word_submenu"] = "Падмену"; +$LANG["word_submission"] = "Прадстаўленне"; +$LANG["word_submissions"] = "Матэрыялы"; +$LANG["word_system"] = "Сістэма"; +$LANG["word_tab"] = "Ўкладка"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (ы)"; +$LANG["word_test"] = "Праверка"; +$LANG["word_text"] = "Тэкст"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Тэкставае поле"; +$LANG["word_theme"] = "Тэма"; +$LANG["word_themes"] = "Тэмы"; +$LANG["word_time"] = "Час"; +$LANG["word_tiny"] = "Малюсенькі"; +$LANG["word_tips"] = "Парады"; +$LANG["word_today"] = "Сёння"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Выдаліце"; +$LANG["word_unknown"] = "Невядомы"; +$LANG["word_update"] = "Абнаўленне"; +$LANG["word_upgrade"] = "Абнаўленне"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Карыстальнік"; +$LANG["word_username"] = "Імя карыстальніка"; +$LANG["word_username_c"] = "Імя карыстальніка:"; +$LANG["word_validation"] = "Праверка"; +$LANG["word_value"] = "Значэнне"; +$LANG["word_value_sp"] = "Суадносіны (ы)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Праверыць"; +$LANG["word_version"] = "Версіі"; +$LANG["word_vertical"] = "Вертыкальныя"; +$LANG["word_view"] = "Прагляд"; +$LANG["word_views"] = "Прагляды"; +$LANG["word_warning"] = "Увага!"; +$LANG["word_warning_c"] = "Папярэджаньне:"; +$LANG["word_web"] = "Вэб"; +$LANG["word_welcome"] = "Добро пожаловать!"; +$LANG["word_width_c"] = "шырыня:"; +$LANG["word_words"] = "Словы"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Жоўты"; +$LANG["word_yes"] = "Да"; \ No newline at end of file diff --git a/global/lang/bg.php b/global/lang/bg.php new file mode 100644 index 00000000..745e52fa --- /dev/null +++ b/global/lang/bg.php @@ -0,0 +1,1219 @@ +Внимание! Вие сте избрали {\$num_selected_on_page} наблюдения в тази страница и {\$num_selected_on_other_pages} на други страници. Моля изберете една от следните опции:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Внимание! Не сте избрали никакви изявления по тази страница, но сте избрали {\$num_selected_on_other_pages} на други страници. Моля, потвърдете, че искате да изтриете тези твърдения.
    "; +$LANG["confirm_delete_view"] = "Сигурни ли сте, че искате да изтриете тази гледна точка?"; +$LANG["confirm_refresh_page"] = "Сигурни ли сте, че искате да обновите страницата? Това ще загубят всички промени, които сте направили."; +$LANG["confirm_save_change_before_redirect"] = "Един или повече полета са били актуализирани. Бихте ли искали да запишете промените преди пренасочване?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Наистина ли искате да Smart Напълнете имена база данни колона? Това ще замени съществуващия си стойности."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Тази опция автоматично генерира колона имена на база данни, въз основа на визуализиране на текстови полета, така че съдържанието на база данни, таблица са по-лесно да четат."; +$LANG["confirm_smart_fill_display_names"] = "Наистина ли искате да Smart Напълнете Покажи имена? Това ще замени съществуващия си стойности."; +$LANG["confirm_ungroup_option_list"] = "Сигурен ли си, че искате да разгрупирате опция този списък? Всички варианти ще бъде причислен в единна, ungrouped списък."; +$LANG["confirm_uninstall_module"] = "Наистина ли искате да деинсталирате този модул? Всички модул данни ще бъдат загубени."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Пт"; +$LANG["date_Friday"] = "Петък"; +$LANG["date_Mon"] = "Пн"; +$LANG["date_Monday"] = "Понеделник"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Сб"; +$LANG["date_Saturday"] = "Събота"; +$LANG["date_Sun"] = "Слънце"; +$LANG["date_Sunday"] = "Неделя"; +$LANG["date_Thu"] = "Чт"; +$LANG["date_Thursday"] = "Четвъртък"; +$LANG["date_Tue"] = "Вт"; +$LANG["date_Tuesday"] = "Вторник"; +$LANG["date_Wed"] = "Ср"; +$LANG["date_Wednesday"] = "Сряда"; +$LANG["date_am"] = "ч."; +$LANG["date_month_April"] = "Април"; +$LANG["date_month_August"] = "Август"; +$LANG["date_month_December"] = "Декември"; +$LANG["date_month_February"] = "Февруари"; +$LANG["date_month_January"] = "Януари"; +$LANG["date_month_July"] = "Юли"; +$LANG["date_month_June"] = "Юни"; +$LANG["date_month_March"] = "Март"; +$LANG["date_month_May"] = "Мога"; +$LANG["date_month_November"] = "Ноември"; +$LANG["date_month_October"] = "Октомври"; +$LANG["date_month_September"] = "Септември"; +$LANG["date_month_short_Apr"] = "Април"; +$LANG["date_month_short_Aug"] = "Август"; +$LANG["date_month_short_Dec"] = "Декември"; +$LANG["date_month_short_Feb"] = "Февруари"; +$LANG["date_month_short_Jan"] = "Ян"; +$LANG["date_month_short_Jul"] = "Юли"; +$LANG["date_month_short_Jun"] = "Юни"; +$LANG["date_month_short_Mar"] = "Март"; +$LANG["date_month_short_May"] = "Мога"; +$LANG["date_month_short_Nov"] = "Ноември"; +$LANG["date_month_short_Oct"] = "Октомври"; +$LANG["date_month_short_Sep"] = "Септември"; +$LANG["date_pm"] = "ч."; +$LANG["notify_account_deleted"] = "Потребителският акаунт е била изтрита."; +$LANG["notify_account_updated"] = "Вашата сметка бе успешно обновен."; +$LANG["notify_add_display_values"] = "Добави Покажи Стойности"; +$LANG["notify_admin_menu_updated"] = "Администрацията на менюто е била актуализирана."; +$LANG["notify_admin_theme_overridden"] = "Темата на администратора е ръчно манипулиране."; +$LANG["notify_allow_url_fopen_not_set"] = "За съжаление, този тест не може да се изпълни на вашия уеб сървър. Тя изисква allow_url_fopen да се определи на 1 в php.ini файла. Тази настройка позволяват PHP за достъп до файлове чрез URL, който е необходим за изпълнение на този тест. Можете да го тествате ръчно чрез качване на файл в тази папка чрез FTP, след това се опитва да го достъп на адреса ви са доставили."; +$LANG["notify_change_temp_password"] = "Вие просто сте влезли с временна парола. Вие трябва да възстановите паролата си сега!"; +$LANG["notify_click_to_edit_new_submission"] = "Кликнете тук, за да редактирате новото представяне."; +$LANG["notify_client_account_menus_updated"] = "Клиентът сметката (ите) са били обновени на {\$menu_name} меню. Сега можете да изтриете меню, което беше преди, свързани със сметката (ите)."; +$LANG["notify_client_account_not_updated"] = "На клиентската сметка не може да бъде актуализиран."; +$LANG["notify_client_account_themes_updated"] = "Клиентът сметката (ите) са били обновени на {\$theme} тема. Вече можете да изключите тема преди, свързани със сметката (ите)."; +$LANG["notify_client_account_updated"] = "Клиентът сметка бе успешно обновен."; +$LANG["notify_client_menu_deleted"] = "Клиентът менюто е била изтрита."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Менюто е била изтрита, но следните клиентски сметки, сега вече няма меню! Имате нужда от актуализиране на следните сметки:"; +$LANG["notify_client_menu_updated"] = "Клиентът менюто е била актуализирана."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "За съжаление, менюто, което просто се опитах да изтриете вече се използва от клиентите, изброени по-долу. За да изтриете меню, което ще се наложи първо да присвоите на клиенти към други менюта. Кликнете върху името на клиента, за да редактирате, че индивидуалната партида, или да възложи на всички сметки на различни използване на падащото меню по-долу."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "За съжаление, една от темите, просто са инвалиди вече се използва от следните сметки на клиента. За да изключите тема първо трябва да зададете на всеки клиент на друга тема. Кликнете върху името на клиента, за да редактирате, че индивидуалната партида, или да възложи на всички сметки на тема помощта на падащото меню по-долу."; +$LANG["notify_edit_email_fields_link"] = "Щракнете тук , за да се уточни, които формират полета са имейл полета, така че можете да ги насочвате във вашата електронна поща, шаблони."; +$LANG["notify_edit_field_new_field"] = "Това е ново поле. Вие ще трябва да се актуализира на главната страница, преди да бъдат в състояние напълно да редактирате тази област."; +$LANG["notify_edit_option_list_after_save"] = "Трябва да изберете списък Опции и след това Запазване на промените, преди да бъде в състояние да го редактирате."; +$LANG["notify_email_field_config_deleted"] = "Имейл конфигурация е била изтрита."; +$LANG["notify_email_fields_not_updated"] = "За съжаление, ние не може да се актуализира полетата."; +$LANG["notify_email_fields_updated"] = "В полетата са били обновени."; +$LANG["notify_email_not_sent"] = "За съжаление, на електронната поща не може да бъде изпратено. Моля свържете се с администратора на сайта на адреса по-долу."; +$LANG["notify_email_not_sent_c"] = "Съжаляваме, не може да бъде изпратен имейл:"; +$LANG["notify_email_sent"] = "Имейл (и) са били изпратени."; +$LANG["notify_email_template_deleted"] = "Имейл шаблон е била изтрита."; +$LANG["notify_email_template_updated"] = "Имейл шаблон е била актуализирана."; +$LANG["notify_enabled_module_list_updated"] = "Списъкът на поддръжка за модулите е била актуализирана."; +$LANG["notify_error_saving_fields"] = "Имаше грешка при запазването на полета."; +$LANG["notify_field_changes_saved"] = "Промени във вашата област (и) са били спасени."; +$LANG["notify_field_options_smart_filled"] = "Вашият областта опции са Смарт Изпълнен."; +$LANG["notify_field_selected"] = "Полето е бил избран. Щракнете тук, за да се върнете към основния списък област."; +$LANG["notify_field_updated"] = "Това поле е била актуализирана."; +$LANG["notify_file_not_uploaded"] = "Файлът не може да бъде качен."; +$LANG["notify_file_uploaded"] = "Файлът беше успешно качен."; +$LANG["notify_filters_not_updated"] = "Имаше грешка при обновяването на подаване този клиент филтри."; +$LANG["notify_filters_updated"] = "Представянето филтри са били обновени за този клиент."; +$LANG["notify_folder_correct_permissions"] = "Тази папка е правилното разрешения."; +$LANG["notify_folder_url_match"] = "В папката и URL изглежда правилно мача."; +$LANG["notify_folder_url_no_access"] = "Този тест не може да се извършва от PHP не е в състояние за достъп до този адрес. Това обикновено се причинява от URL адресът е защитен с парола. Htaccess файл."; +$LANG["notify_folder_url_no_match"] = "Тази папка-URL комбинация не изглежда да е съвпадение."; +$LANG["notify_folder_url_unknown_error"] = "Възникна непозната грешка. Можете да го тествате ръчно чрез качване на файл в тази папка чрез FTP, след това се опитва да го достъп на адреса ви са доставили."; +$LANG["notify_form_access_type_email_info"] = "Тази форма е тип администратор достъп, така че никакви клиенти нямат достъп до него и не са изброени в падащото меню по-долу ."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "За съжаление, една форма с това ID не съществува."; +$LANG["notify_form_field_not_added"] = "Формата поле '{\$fieldname}' не може да бъде добавен."; +$LANG["notify_form_field_options_updated"] = "Опциите форма областта са били обновени."; +$LANG["notify_form_field_removed"] = "Формата област бе успешно премахнат."; +$LANG["notify_form_fields_removed"] = "Всички полета на формуляра са премахнати успешно."; +$LANG["notify_form_not_updated_notify_admin"] = "Вашият форма не може да бъде актуализиран. Моля свържете се с администратора на сайта да съобщите за този проблем."; +$LANG["notify_form_settings_updated"] = "Вашият форма настройки са били обновени успешно."; +$LANG["notify_form_submission_updated"] = "Формата представяне е била актуализирана."; +$LANG["notify_form_tabs_updated"] = "Разделите са били обновени."; +$LANG["notify_form_updated"] = "Формулярът е успешно обновен."; +$LANG["notify_form_views_updated"] = "Формата изгледи са били актуализирани."; +$LANG["notify_install_invalid_db_info"] = "За съжаление, ние не успяхме да се свърже с базата данни се използва информацията, предоставена ви. Съобщението за грешка в базата данни се връща: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Вашият формуляр е създаден! Можете да конфигурирате вашия форма чрез тези раздели."; +$LANG["notify_invalid_account_information_in_sessions"] = "Сметката информация, съхранявана в сесии е невалиден. Моля, влезте отново по-долу."; +$LANG["notify_invalid_license_key"] = "Съжаляваме, че не изглежда да е валиден лицензен ключ. Моля, опитайте да го въведете отново."; +$LANG["notify_invalid_permissions"] = "Вие нямате разрешение за достъп до тази страница. Вие сте излезли."; +$LANG["notify_invalid_search_dates"] = "Моля, използвайте datepicker да въведете валидна дата или дати."; +$LANG["notify_invalid_upload_folder"] = "Качването папка или е болен или не се записва."; +$LANG["notify_lang_list_updated"] = "Наличните език интерфейс списък е актуализиран."; +$LANG["notify_login_info_emailed"] = "Вашата информация за вход е по емайл."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Опа, този модул вече е инсталиран!"; +$LANG["notify_module_installed"] = "Модулът е инсталиран. Щракнете тук, за да изберете модула."; +$LANG["notify_module_list_updated"] = "Модулът списък е актуализиран."; +$LANG["notify_module_uninstalled"] = "Модулът е деинсталиран."; +$LANG["notify_module_updated"] = "{\$module} {\$version} модул е актуализиран. Щракнете тук, за да изберете модула ."; +$LANG["notify_multi_field_selected"] = "Полето е бил избран. Щракнете тук, за да видите и редактирате областта опции."; +$LANG["notify_multi_field_updated"] = "Това поле е била актуализирана. Вие ще можете да конфигурирате областта възможности след създаването на формата."; +$LANG["notify_multiple_fields_found"] = "Множествена елементи бяха открити с това име на поле ({\$field_name}). Това може да се случи, ако вашата страница съдържа повече от една форма или, ако случайно сте обявен за един от вашите формуляри същите като друг. Моля, изберете тази, която искате от списъка по-долу."; +$LANG["notify_new_default_view_created"] = "Нов, изглед по подразбиране, които съдържат всички формулярни полета е създаден."; +$LANG["notify_new_submission_created"] = "Представянето е създаден. Можете да го редактирате по-долу."; +$LANG["notify_no_account_id_in_sessions"] = "Никой потребител идентификатор се намери в сесии. Моля, влезте отново по-долу."; +$LANG["notify_no_api_installed"] = "Вие нямате инсталирана на API"; +$LANG["notify_no_client_permissions"] = "Има настройки не са достъпни за редактиране."; +$LANG["notify_no_email_template_selected"] = "Моля изберете имейл шаблон."; +$LANG["notify_no_emails_defined"] = "Не имейли са били определени за тази форма. За да добавите нов, щракнете върху бутона по-долу."; +$LANG["notify_no_field_settings"] = "Този тип на полето не съдържа никакви допълнителни настройки."; +$LANG["notify_no_fields_in_tab"] = "Този раздел не съдържа никакви полета."; +$LANG["notify_no_option_lists"] = "Има определени списъци не е опция. Щракнете върху бутона по-долу, за да се създаде нов."; +$LANG["notify_no_test_submission"] = "Форма инструменти не е получил успешно представяне тест още."; +$LANG["notify_no_user_email_fields_configured"] = "Забележка: Ако искате да изпратите електронна поща на всеки имейл адрес, който е включен във формата, трябва първо да конфигурирате полета за имейл."; +$LANG["notify_no_views"] = "Вашият форма не всички мнения! Вие ще трябва най-малко един изглед, за да управлявате вашите данни от формуляри."; +$LANG["notify_no_views_assigned_to_client_form"] = "Оказва се, че вашето потребителско сметка не са включени в някаква форма мнения, така че няма да можете да виждате никакви данни. Моля свържете се с администратор за допълнителна помощ."; +$LANG["notify_no_views_defined"] = "Не е нужно всички мнения определени. Вие няма да можете да видите твърденията тази форма, освен ако най-малко една View е създаден. Щракнете върху бутона по-долу, за да се създаде Изглед по подразбиране."; +$LANG["notify_option_list_deleted"] = "Опцията списък е била изтрита."; +$LANG["notify_option_list_updated"] = "Опцията списък е актуализиран."; +$LANG["notify_public_form_omit_list_updated"] = "Клиентът пропуснат списъка за тази форма е била актуализирана."; +$LANG["notify_public_view_omit_list_updated"] = "Клиентът пропуснат списъка за тази позиция е била актуализирана."; +$LANG["notify_required_admin_pages"] = "Следващите страници са задължителни в менюто на администратора: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "За съжаление, там не е всяка дейност, за известно време, така че трябва да излезете. Моля, влезте отново по-долу."; +$LANG["notify_setup_options_updated"] = "Инсталационният опции са били обновени."; +$LANG["notify_smart_fill_field_not_found"] = "Ние не успяхме да намерим една област с това име ({\$field_name}) под формата (а), посочени. Можете да настроите ръчно областта вид по-долу, или натиснете бутона Skip да редактирате тази област, по-късно."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Вашият файл (а) са били успешно качен. Опитайте с натискане на бутон Smart Попълнете да опитате отново. Ако тази стъпка не успее, ще трябва да прескочите тази стъпка и да конфигурирате вашата полета на формуляра manally по-късно."; +$LANG["notify_smart_fill_submitted"] = "Формата е била представена. В зависимост от размера на формата и броя на областта възможности, това може да отнеме известно време."; +$LANG["notify_smart_fill_upload_fields_fail"] = "За съжаление, една или повече файлове, които въведохте не може да бъде качен. Вие ще трябва да прескочите тази стъпка и ръчно конфигуриране на полета."; +$LANG["notify_submission_and_files_deleted"] = "Представянето и всеки файл (а), свързани с него бяха изтрити успешно."; +$LANG["notify_submission_copied"] = "Изпратеното бе копирано."; +$LANG["notify_submission_copied_edit"] = "Изпратеното бе копирано. Можете да го редактирате по-долу."; +$LANG["notify_submission_deleted"] = "Представянето беше изтрит успешно."; +$LANG["notify_submission_deleted_with_problems"] = "Представянето бе изтрита, но следните проблеми са възникнали, когато се опитвате да изтриете следния файл (а):"; +$LANG["notify_submission_id_not_found"] = "Представянето ID не е намерен."; +$LANG["notify_submission_not_updated"] = "Представянето не може да бъде актуализиран."; +$LANG["notify_submissions_and_files_deleted"] = "Предложенията и всеки файл (а), свързани с тях бяха изтрити успешно."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} изявления са копирани."; +$LANG["notify_submissions_deleted"] = "Предложенията бяха изтрити успешно."; +$LANG["notify_submissions_deleted_with_problems"] = "Предложенията са били изтрити, но следните проблеми са възникнали, когато се опитвате да изтриете следния файл (а):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Вашият имейл тест не може да бъде изпратено."; +$LANG["notify_theme_cache_folder_not_writable"] = "Кеш папка Тази тема не се записва. За да активирате тази тема, {\$folder} папка трябва да има пълен четене и запис разрешения."; +$LANG["notify_theme_list_updated"] = "Темата списък е актуализиран."; +$LANG["notify_themes_settings_updated"] = "Вашата тема настройки са били обновени."; +$LANG["notify_view_deleted"] = "The View е била изтрита."; +$LANG["notify_view_group_deleted"] = "Преглед на група е била изтрита."; +$LANG["notify_view_missing_columns"] = "Oops! Съжаляваме, но тази гледна точка не е напълно все още."; +$LANG["notify_view_missing_columns_admin_fix"] = "Щракнете тук, за да се определи кои полета трябва да се появи като колони на тази страница ."; +$LANG["notify_view_updated"] = "The View е била актуализирана."; +$LANG["notify_your_email_sent"] = "Вашият имейл бе изпратено успешно."; +$LANG["phrase_100_per_page"] = "100 на страница"; +$LANG["phrase_10_per_page"] = "10 на страница"; +$LANG["phrase_15_per_page"] = "15 на страница"; +$LANG["phrase_1_direct"] = "1. Директен"; +$LANG["phrase_1char"] = "1 Чар"; +$LANG["phrase_20_per_page"] = "20 на страница"; +$LANG["phrase_25_per_page"] = "25 на страница"; +$LANG["phrase_2_code"] = "2. Код"; +$LANG["phrase_2_columns"] = "2 колони"; +$LANG["phrase_2chars"] = "2 Герой"; +$LANG["phrase_3_columns"] = "3 колони"; +$LANG["phrase_4_columns"] = "4 колони"; +$LANG["phrase_50_per_page"] = "50 на страница"; +$LANG["phrase_accepting_submissions"] = "(приема заявки)"; +$LANG["phrase_access_admin_account_c"] = "Имате достъп до Вашата сметка администрация тук:"; +$LANG["phrase_access_type"] = "Вид достъп"; +$LANG["phrase_account_info"] = "Информация за профила"; +$LANG["phrase_account_settings"] = "Настройки на профила"; +$LANG["phrase_action_needed"] = "Необходими действия"; +$LANG["phrase_add_client"] = "Добави Клиент"; +$LANG["phrase_add_client_menu"] = "Добави Клиент Меню"; +$LANG["phrase_add_default_settings_rightarrow"] = "Добавяне на настройките по подразбиране »"; +$LANG["phrase_add_field"] = "Добави Поле"; +$LANG["phrase_add_fields"] = "Добави Сфера"; +$LANG["phrase_add_fields_rightarrow"] = "Добавете Field (и) »"; +$LANG["phrase_add_form"] = "Добави Form"; +$LANG["phrase_add_form_external"] = "Добави Формуляр - Външни"; +$LANG["phrase_add_form_internal"] = "Добави Формуляр - Вътрешни"; +$LANG["phrase_add_new_group_rightarrow"] = "Добавяне на нова група »"; +$LANG["phrase_add_num_rows"] = "Добави {\$number} Ред (а)"; +$LANG["phrase_add_row"] = "Добави Роу »"; +$LANG["phrase_add_submission_button"] = "Добави Изпращането на бутона"; +$LANG["phrase_add_view_rightarrow"] = "Добави View »"; +$LANG["phrase_adding_multi_page_form"] = "Добавянето на много страници с формата на API"; +$LANG["phrase_adding_single_page_form"] = "Добавянето на една форма страница с API"; +$LANG["phrase_admin_menu"] = "Администратор Меню"; +$LANG["phrase_admin_only"] = "Само администратор"; +$LANG["phrase_admin_panel"] = "Админ панел"; +$LANG["phrase_administrator_theme"] = "Администратор Тема"; +$LANG["phrase_advanced_settings_rightarrow"] = "Разширени настройки »"; +$LANG["phrase_all_X_results_selected"] = "Всички {\$numresults} Резултати Избрани"; +$LANG["phrase_all_clients"] = "Всички клиенти"; +$LANG["phrase_all_clients_except_c"] = "Всички клиенти с изключение на:"; +$LANG["phrase_all_clients_have_access"] = "(всички клиенти имат достъп)"; +$LANG["phrase_all_fields"] = "Всички полета"; +$LANG["phrase_all_fields_displayed"] = "Всички полета са показани"; +$LANG["phrase_all_statuses"] = "Всички статуси"; +$LANG["phrase_all_submissions"] = "Всички предложения"; +$LANG["phrase_allow_fields_edited"] = "Оставя се полета да бъдат редактирани"; +$LANG["phrase_alphanumeric"] = "Буквено-цифрови (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Версия"; +$LANG["phrase_apply_timezone_offset"] = "Нанесете Отместване на часовата зона"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Присвояване на всички изброени клиентски сметки към {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Присвояване на всички изброени клиентски сметки към {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "В края на"; +$LANG["phrase_at_start"] = "В началото"; +$LANG["phrase_author_link"] = "Автор Линк"; +$LANG["phrase_auto_disable_account"] = "Auto-изключите сметка след # не е вход опити"; +$LANG["phrase_auto_size"] = "Auto-размер"; +$LANG["phrase_available_clients"] = "Налични Клиенти"; +$LANG["phrase_available_fields"] = "Налични полета"; +$LANG["phrase_available_option_lists"] = "Наличните Списъци Опция"; +$LANG["phrase_available_swatches"] = "Налични Swatches"; +$LANG["phrase_available_swatches_c"] = "Налични Swatches:"; +$LANG["phrase_available_tabs"] = "Налични Tabs"; +$LANG["phrase_available_views"] = "Налични Прегледи"; +$LANG["phrase_awaiting_form_submission"] = "Очаква форма представяне."; +$LANG["phrase_back_to_field_list"] = "«назад към областта списък"; +$LANG["phrase_back_to_search_results"] = "обратно към резултатите от търсенето"; +$LANG["phrase_base_view_on"] = "Base Преглед на ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Промяна вход"; +$LANG["phrase_characters_limit_p"] = "символи граница."; +$LANG["phrase_check_db_settings_try_again"] = "Моля, проверявайте по два пъти база данни, настройки и кликнете върху бутона отново."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Проверете URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Почистване"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Ясно Пропускане Списък"; +$LANG["phrase_client_account_settings"] = "Клиент настройките на профила"; +$LANG["phrase_client_field"] = "Клиент Поле"; +$LANG["phrase_client_map_filters"] = "Клиент Карта филтри »"; +$LANG["phrase_client_may_edit"] = "Клиентът може да редактирате"; +$LANG["phrase_client_menu"] = "Клиент Меню"; +$LANG["phrase_clients_can_access_form"] = "Клиенти, които може да намерите формата"; +$LANG["phrase_clients_can_access_view"] = "Клиентите, които имат достъп Преглед"; +$LANG["phrase_clients_cannot_access_form"] = "Клиентите, които нямат достъп до формата"; +$LANG["phrase_clients_cannot_access_view"] = "Клиенти, които не могат достъп Преглед"; +$LANG["phrase_clients_may_edit"] = "Клиентите могат да редактирате"; +$LANG["phrase_code_c"] = "Грешка Кодекс:"; +$LANG["phrase_code_markup_field"] = "Код / Markup поле"; +$LANG["phrase_code_markup_type"] = "Код / Markup Вид"; +$LANG["phrase_codes_c"] = "Грешка кодове:"; +$LANG["phrase_column_width"] = "Ширината на колона"; +$LANG["phrase_company_name"] = "Име на фирмата"; +$LANG["phrase_configure_form_email_fields"] = "Конфигуриране на формуляр полетата"; +$LANG["phrase_confirm_folder_url_match"] = "Потвърдете Папка-URL на срещата"; +$LANG["phrase_connect_rows"] = "Свържете редове"; +$LANG["phrase_copy_email_settings_from"] = "Копие Email настройки от ..."; +$LANG["phrase_copy_settings_from"] = "Копирайте настройките от ..."; +$LANG["phrase_core_fields"] = "Core Сфера"; +$LANG["phrase_core_version"] = "Core Версия"; +$LANG["phrase_create_account"] = "Създаване на профил"; +$LANG["phrase_create_admin_account"] = "Създаване на администраторския профил"; +$LANG["phrase_create_config_file"] = "Създаване на конфигурационния файл"; +$LANG["phrase_create_database_tables"] = "Създаване на таблиците в базата данни"; +$LANG["phrase_create_default_view"] = "Създаване на основния екран"; +$LANG["phrase_create_file"] = "Създаване на файл"; +$LANG["phrase_create_group"] = "Създаване на група"; +$LANG["phrase_create_new_email"] = "Създаване на нов Email"; +$LANG["phrase_create_new_menu"] = "Създаване на нова Меню"; +$LANG["phrase_create_new_option_list"] = "Създаване на опцията New List"; +$LANG["phrase_create_new_option_list_group"] = "Създаване на нова група опция списък"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Създаване на нов Списък Възможност »"; +$LANG["phrase_create_new_view"] = "Създаване на нов поглед"; +$LANG["phrase_create_new_view_group"] = "Създаване на нов изглед Group"; +$LANG["phrase_custom_display_format"] = "Custom Формат на дисплея"; +$LANG["phrase_custom_recipient"] = "Избор на получателя"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Тип данни"; +$LANG["phrase_database_hostname"] = "База данни име на хост"; +$LANG["phrase_database_name"] = "Името на базата данни"; +$LANG["phrase_database_password"] = "База данни парола"; +$LANG["phrase_database_settings"] = "База данни Настройки"; +$LANG["phrase_database_setup"] = "База данни инсталиране"; +$LANG["phrase_database_table_prefix"] = "База данни таблица префикс"; +$LANG["phrase_database_username"] = "База данни потребителско име"; +$LANG["phrase_date_format"] = "Формат на датата"; +$LANG["phrase_db_column"] = "ПБ колони"; +$LANG["phrase_db_setup_page_4"] = "4. База данни инсталиране"; +$LANG["phrase_default_client_account_theme"] = "По подразбиране клиентски профил Тема"; +$LANG["phrase_default_date_field_search_value"] = "По подразбиране дата стойността на полето за търсене"; +$LANG["phrase_default_language"] = "По подразбиране"; +$LANG["phrase_default_menu"] = "По подразбиране Меню"; +$LANG["phrase_default_sessions_timeout"] = "По подразбиране сесии Timeout"; +$LANG["phrase_default_sort_order"] = "По подразбиране Сортирай по"; +$LANG["phrase_default_tab_label"] = "Данни"; +$LANG["phrase_default_theme"] = "По подразбиране"; +$LANG["phrase_default_value"] = "Стойността по подразбиране"; +$LANG["phrase_default_values"] = "Стойности по подразбиране"; +$LANG["phrase_default_values_new_submissions"] = "Стойности по подразбиране за Нови попълнения"; +$LANG["phrase_delete_field"] = "Изтриване на поле"; +$LANG["phrase_delete_form"] = "Изтриване на формуляр"; +$LANG["phrase_delete_row"] = "Изтриване на реда"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Изтриване на файлове, свързани, когато изтривате представяне"; +$LANG["phrase_delete_view"] = "Изтриване на View"; +$LANG["phrase_disconnect_rows"] = "Изключете редове"; +$LANG["phrase_display_email"] = "Покажи Email"; +$LANG["phrase_display_name"] = "Показвано име"; +$LANG["phrase_display_text"] = "Покажи Текст"; +$LANG["phrase_display_value"] = "Покажи Стойност"; +$LANG["phrase_edit_admin_menu"] = "Редактиране на Админ меню"; +$LANG["phrase_edit_client"] = "Редактиране на клиента"; +$LANG["phrase_edit_client_menu"] = "Редактирайте Клиент Меню"; +$LANG["phrase_edit_email_template"] = "Редактиране Имейл шаблон"; +$LANG["phrase_edit_field"] = "Редактиране Поле"; +$LANG["phrase_edit_field_c"] = "Редактиране на Field:"; +$LANG["phrase_edit_form"] = "Редактиране на формуляр"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit форма тип достъп]"; +$LANG["phrase_edit_option_list"] = "Редактиране Списък Опция"; +$LANG["phrase_edit_submission"] = "Редактиране Представяне"; +$LANG["phrase_edit_submission_label"] = "Редактиране на Label Представяне"; +$LANG["phrase_edit_view"] = "Редактиране Изглед"; +$LANG["phrase_email_format"] = "Email Формат"; +$LANG["phrase_email_settings"] = "Email настройки"; +$LANG["phrase_email_template"] = "Имейл шаблон"; +$LANG["phrase_email_template_name"] = "Email име на шаблон"; +$LANG["phrase_error_learn_more"] = "Научете повече за тази грешка."; +$LANG["phrase_error_text_intro"] = "Моля, фиксирайте следната грешка (и) и отново:"; +$LANG["phrase_errors_learn_more"] = "Кликнете на кодове за грешка да научите повече."; +$LANG["phrase_event_trigger"] = "Събитие Trigger"; +$LANG["phrase_external_form"] = "Външна форма"; +$LANG["phrase_external_form_info"] = "Информация за външна форма"; +$LANG["phrase_external_your_own_form"] = "Външно (вашата собствена форма)"; +$LANG["phrase_field_comments"] = "Поле Коментари"; +$LANG["phrase_field_label"] = "Поле Издател"; +$LANG["phrase_field_options"] = "Поле Опции"; +$LANG["phrase_field_size"] = "Поле Размер"; +$LANG["phrase_field_skipped"] = "Поле Пропуска"; +$LANG["phrase_field_specific_settings"] = "Field-специфични настройки"; +$LANG["phrase_field_type"] = "Вид поле"; +$LANG["phrase_field_type_no_validation"] = "Има правила за проверка за това поле тип."; +$LANG["phrase_field_types"] = "Поле Видове"; +$LANG["phrase_field_value"] = "На стойност на поле"; +$LANG["phrase_field_values_to_display_values"] = "Полето Стойности »Дисплей Стойности"; +$LANG["phrase_final_touches_page_6"] = "6. Довършителни дейности"; +$LANG["phrase_finalize_form"] = "Финализиране Form"; +$LANG["phrase_first_name"] = "Собствено име"; +$LANG["phrase_footer_text"] = "Footer Текст"; +$LANG["phrase_for_any_form_submission"] = "За всяка форма представяне"; +$LANG["phrase_for_view_submissions"] = "Само твърдения, които се вписват в следните Преглед ()"; +$LANG["phrase_forgot_password"] = "Забравена парола?"; +$LANG["phrase_form_already_selected"] = "Форма вече са избрани"; +$LANG["phrase_form_email_field_b_c"] = "[Форма] имейл област:"; +$LANG["phrase_form_email_field_configuration"] = "Форма полето Емайл Конфигурация"; +$LANG["phrase_form_email_fields"] = "Сфера Form Email"; +$LANG["phrase_form_field"] = "Форма Поле"; +$LANG["phrase_form_field_contents"] = "Поле на формуляр на всички съдържания"; +$LANG["phrase_form_field_name"] = "Форма името на полето"; +$LANG["phrase_form_field_placeholders"] = "Контейнери Форма поле"; +$LANG["phrase_form_fields"] = "Полетата на формуляра"; +$LANG["phrase_form_info"] = "Форма информация"; +$LANG["phrase_form_info_2"] = "2. Форма информация"; +$LANG["phrase_form_list"] = "Форма Списък"; +$LANG["phrase_form_name"] = "Форма Име"; +$LANG["phrase_form_page"] = "Форма на страницата"; +$LANG["phrase_form_placeholders"] = "Форма Placeholders"; +$LANG["phrase_form_submission"] = "Подаване на формуляра"; +$LANG["phrase_form_submissions"] = "Форма Submissions"; +$LANG["phrase_form_type"] = "Тип формуляр"; +$LANG["phrase_form_url"] = "Форма URL"; +$LANG["phrase_form_urls"] = "Форма URL адреси"; +$LANG["phrase_forms_assigned_to_any_account"] = "Формулярите, възложени на всеки акаунт"; +$LANG["phrase_forms_page_default_message"] = "Форми съобщение страница по подразбиране"; +$LANG["phrase_ft_installation"] = "Форма Инструменти за инсталиране Script"; +$LANG["phrase_full_width"] = "Пълноразмерната"; +$LANG["phrase_getting_started"] = "Как да започнем"; +$LANG["phrase_global_placeholders"] = "Глобален Placeholders"; +$LANG["phrase_group_name"] = "Име на групата"; +$LANG["phrase_group_options_q"] = "Група опции?"; +$LANG["phrase_group_rows"] = "Група редове"; +$LANG["phrase_have_fun"] = "Забавлявайте се!"; +$LANG["phrase_highlight_colour"] = "Маркирайте Цвят"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML шаблони"; +$LANG["phrase_images_media"] = "Картинки / Медии"; +$LANG["phrase_import_option_list_rightarrow"] = "Списък Внос Опция »"; +$LANG["phrase_input_length"] = "Input Дължина"; +$LANG["phrase_installation_help"] = "Инсталационна помощ"; +$LANG["phrase_internal_form"] = "Вътрешен Form"; +$LANG["phrase_ip_address"] = "IP адрес"; +$LANG["phrase_is_multi_page_form_q"] = "Дали това е много страници форма?"; +$LANG["phrase_label_response_placeholders"] = "Label / отговор на контейнери"; +$LANG["phrase_large_300px"] = "Голям (300px)"; +$LANG["phrase_large_400px"] = "Голям (400px)"; +$LANG["phrase_last_7_days"] = "Последните 7 дни"; +$LANG["phrase_last_logged_in"] = "Последно Влизане в"; +$LANG["phrase_last_modified"] = "Последна промяна"; +$LANG["phrase_last_modified_date"] = "Последна дата на промяна"; +$LANG["phrase_last_name"] = "Фамилно име"; +$LANG["phrase_letters_only"] = "Писма Само"; +$LANG["phrase_light_brown"] = "Светло кафяв"; +$LANG["phrase_limit_email_content"] = "Лимит емайл съдържание в области, с оглед"; +$LANG["phrase_loading_ellipsis"] = "Зареждане ..."; +$LANG["phrase_log_in"] = "Вход"; +$LANG["phrase_login_as_user"] = "Влезте като този потребител"; +$LANG["phrase_login_info"] = "Вход информация"; +$LANG["phrase_login_page"] = "Логин страница"; +$LANG["phrase_login_panel_c"] = "Вход панел:"; +$LANG["phrase_login_panel_leftarrows"] = "«Вход панел"; +$LANG["phrase_login_password"] = "Вход Парола"; +$LANG["phrase_login_username"] = "Вход Потребител"; +$LANG["phrase_logo_link_url"] = "Лого на URL адрес на връзката"; +$LANG["phrase_logout_url"] = "Изход URL"; +$LANG["phrase_main_nav"] = "Основни Nav"; +$LANG["phrase_main_settings"] = "Основни настройки"; +$LANG["phrase_manage_client"] = "Управление на клиента"; +$LANG["phrase_manage_client_omit_list"] = "Управление Клиент пропускат Списък"; +$LANG["phrase_max_file_size"] = "Макс Размер на файла"; +$LANG["phrase_max_length"] = "Максимална дължина"; +$LANG["phrase_max_length_words_chars"] = "- Максимална дължина (думи / символа)"; +$LANG["phrase_may_add_submissions"] = "Може да добавите Submissions"; +$LANG["phrase_may_copy_submissions"] = "Може да копира изявления"; +$LANG["phrase_may_delete_submissions"] = "Може да изтриете Submissions"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Меню Име"; +$LANG["phrase_menu_type"] = "Меню Тип"; +$LANG["phrase_min_password_length"] = "Минималната дължина на паролата"; +$LANG["phrase_module_description"] = "Модул Описание"; +$LANG["phrase_module_info"] = "Модул информация"; +$LANG["phrase_module_nav"] = "Модул Nav"; +$LANG["phrase_month_to_date"] = "Последния месец"; +$LANG["phrase_multi_select"] = "Multi-изберете"; +$LANG["phrase_multi_select_dropdown"] = "Multi-изберете падащото меню"; +$LANG["phrase_multiple_fields_found"] = "Намерени няколко полета!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Име / Фамилия"; +$LANG["phrase_new_blank_email"] = "Нов празен Email"; +$LANG["phrase_new_blank_option_list"] = "Нова празна Списък Опция"; +$LANG["phrase_new_blank_view"] = "Преглед на нов празен"; +$LANG["phrase_new_ft_installation"] = "Инструменти на нова форма за инсталиране"; +$LANG["phrase_new_option_list"] = "Списък на Нова опция"; +$LANG["phrase_new_password"] = "Нова парола"; +$LANG["phrase_new_password_reenter"] = "Нова парола (въведете отново)"; +$LANG["phrase_new_view"] = "Ново Преглед"; +$LANG["phrase_new_view_all_fields"] = "New View - Всички полета"; +$LANG["phrase_next_client"] = "следващия клиент »"; +$LANG["phrase_next_field"] = "следващото поле »"; +$LANG["phrase_next_form"] = "следващата форма »"; +$LANG["phrase_next_view"] = "Следваща »"; +$LANG["phrase_no_clients"] = "Не клиенти"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Не компенсира"; +$LANG["phrase_no_option_lists_available"] = "Няма опции списъци."; +$LANG["phrase_no_views"] = "Не Прегледи"; +$LANG["phrase_no_views_with_filters_p"] = "(Не Преглеждания с филтри, определени)"; +$LANG["phrase_none_not_recommended"] = "Няма (не се препоръчва)"; +$LANG["phrase_not_assigned_to_option_list"] = "Това поле не е възложена на списъка с опция."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Не е равно"; +$LANG["phrase_not_found"] = "Не е намерена!"; +$LANG["phrase_not_like"] = "Not Like"; +$LANG["phrase_not_visible_to_client"] = "(не е видимо за клиента)"; +$LANG["phrase_num_clients_per_page"] = "Num Клиенти на страница"; +$LANG["phrase_num_emails_per_page"] = "Num писма на страница"; +$LANG["phrase_num_fields"] = "Брой на полетата"; +$LANG["phrase_num_forms_per_page"] = "Num форми на страница"; +$LANG["phrase_num_menus_per_page"] = "Num менюта на страница"; +$LANG["phrase_num_modules_per_page"] = "Num модули на страница"; +$LANG["phrase_num_option_lists_per_page"] = "Num Възможност Списъци на страница"; +$LANG["phrase_num_options"] = "Num Опции"; +$LANG["phrase_num_rows"] = "Num Редове"; +$LANG["phrase_numbers_only"] = "Само номерата"; +$LANG["phrase_often_localhost"] = "(най-често "Localhost")"; +$LANG["phrase_on_form_submission"] = "При подаване на формуляра"; +$LANG["phrase_one_char_number"] = "Най-малко един знак е число (0-9)"; +$LANG["phrase_one_char_upper"] = "Най-малко един знак е главна"; +$LANG["phrase_one_special_char"] = "Най-малко един {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(само на определени клиенти имат достъп)"; +$LANG["phrase_open_form_in_dialog"] = "Отворете формуляра в диалоговия прозорец"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Отворете тази форма в нов таб / прозорец"; +$LANG["phrase_option_list"] = "Възможност Списък"; +$LANG["phrase_option_list_name"] = "Възможност Списък Име"; +$LANG["phrase_option_list_or_contents"] = "Възможност Списък / Съдържание"; +$LANG["phrase_option_lists"] = "Възможност списъци"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Страница дялове"; +$LANG["phrase_pass_on"] = "Минете"; +$LANG["phrase_password_min"] = "Тя трябва да бъде най-малко {\$length} знаци."; +$LANG["phrase_password_one_number"] = "Тя трябва да съдържа най-малко един номер (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Тя трябва да съдържа поне една буква главна."; +$LANG["phrase_password_requirements_c"] = "Парола изисквания:"; +$LANG["phrase_password_reset"] = "Парола"; +$LANG["phrase_password_special_char"] = "Тя трябва да съдържа поне един от следните знаци: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Разрешения / Други настройки"; +$LANG["phrase_permitted_file_types"] = "Разрешени типове файлове"; +$LANG["phrase_phone_number"] = "Телефонен номер"; +$LANG["phrase_phone_number_format"] = "Формат на телефонен номер"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini макс разрешено за качване на файлове размер:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Моля, потвърдете"; +$LANG["phrase_please_enter_license_key"] = "Моля, въведете вашия лицензен ключ"; +$LANG["phrase_please_select"] = "Изберете"; +$LANG["phrase_please_select_form"] = "Моля изберете форма"; +$LANG["phrase_prev_client"] = "«Пред клиента"; +$LANG["phrase_prev_form"] = "«Предишна форма"; +$LANG["phrase_prevent_password_reuse"] = "Предотврати повторно използване на # последно пароли"; +$LANG["phrase_previous_field"] = "«предишна област"; +$LANG["phrase_previous_page"] = "Предишна страница"; +$LANG["phrase_previous_view"] = "«Предишна View"; +$LANG["phrase_program_name"] = "Име на програмата"; +$LANG["phrase_public_form_omit_list"] = "Обществени Форма Пропускане Списък"; +$LANG["phrase_public_view_omit_list"] = "Преглед на обществено Пропускане Списък"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Имаше проблем със следната заявка:"; +$LANG["phrase_radio_buttons"] = "Радио бутони"; +$LANG["phrase_random_form_submission"] = "Случайни форма представяне"; +$LANG["phrase_re_enter_password"] = "Въведете парола"; +$LANG["phrase_recipient_type"] = "Получател тип"; +$LANG["phrase_redirect_url"] = "Пренасочване на URL"; +$LANG["phrase_refresh_list"] = "Обнови"; +$LANG["phrase_refresh_module_list"] = "Обнови Модул Списък"; +$LANG["phrase_refresh_page"] = "Обновяване на страницата"; +$LANG["phrase_refresh_theme_list"] = "Обнови Тема Списък"; +$LANG["phrase_register_new_email"] = "Регистрация Нов имейл"; +$LANG["phrase_remaining_characters"] = "Оставащи символи"; +$LANG["phrase_remaining_words"] = "Останалите думи"; +$LANG["phrase_remove_tabs"] = "Премахнете разделите"; +$LANG["phrase_required_password_chars"] = "Изисква се парола символи"; +$LANG["phrase_resend_test_submission"] = "Преизпрати Тест Представяне"; +$LANG["phrase_return_form_list"] = "Връщане към формуляр Списък"; +$LANG["phrase_row_selected"] = "{\$num_rows} избран ред"; +$LANG["phrase_rows_selected"] = "{\$num_rows} редове избрани"; +$LANG["phrase_sample_data"] = "Примерни данни"; +$LANG["phrase_save_changes"] = "Запазване на промените"; +$LANG["phrase_search_keyword"] = "Ключова дума"; +$LANG["phrase_security_settings"] = "Настройки за сигурност"; +$LANG["phrase_select_all"] = "Избери всички"; +$LANG["phrase_select_all_X_results"] = "Изберете Всички {\$numresults} Резултати"; +$LANG["phrase_select_all_on_page"] = "Изберете Всички На страница"; +$LANG["phrase_select_date"] = "Изберете дата"; +$LANG["phrase_select_field"] = "Изберете поле"; +$LANG["phrase_select_swatch"] = "Изберете мостра"; +$LANG["phrase_selected_clients"] = "Избрани клиенти"; +$LANG["phrase_selected_views"] = "Избрани Прегледи"; +$LANG["phrase_send_email"] = "Изпрати Email"; +$LANG["phrase_send_test_email"] = "Изпрати Test Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Сесии Timeout"; +$LANG["phrase_setting_value"] = "Създаване Стойност"; +$LANG["phrase_setup_options"] = "Настройка Опции"; +$LANG["phrase_show_all"] = "Покажи всички"; +$LANG["phrase_show_form"] = "Покажи Form"; +$LANG["phrase_size_large"] = "Голям (текст)"; +$LANG["phrase_size_medium"] = "Средно (<= 256 символа)"; +$LANG["phrase_size_small"] = "Малък (<= 20 символа)"; +$LANG["phrase_size_tiny"] = "Малка (<= 5 символа)"; +$LANG["phrase_size_very_large"] = "Много Голям (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Поле"; +$LANG["phrase_skip_step"] = "Пропуснете стъпка"; +$LANG["phrase_small_100px"] = "Малък (100px)"; +$LANG["phrase_small_80px"] = "Малък (80px)"; +$LANG["phrase_smart_fill"] = "Smart Напълнете"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Попълнете полетата от:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Попълнете User Documentation »"; +$LANG["phrase_sort_as"] = "Сортирате по"; +$LANG["phrase_special_fields"] = "Специалните области"; +$LANG["phrase_standard_fields"] = "Стандарт Сфера"; +$LANG["phrase_standard_filters"] = "Стандарт филтри »"; +$LANG["phrase_step_1"] = "Стъпка 1"; +$LANG["phrase_step_2"] = "Стъпка 2"; +$LANG["phrase_step_3"] = "Стъпка 3"; +$LANG["phrase_step_4"] = "Стъпка 4"; +$LANG["phrase_step_5"] = "Стъпка 5"; +$LANG["phrase_step_6"] = "Стъпка 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Газа тагове във форма на заявления"; +$LANG["phrase_subject_line"] = "Сюжетната линия"; +$LANG["phrase_submission_date"] = "Дата на попълване"; +$LANG["phrase_submission_id"] = "Подаване ID"; +$LANG["phrase_submission_made"] = "Подаване прави: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Подаване Тип"; +$LANG["phrase_submissions_per_page"] = "Submissions на страница"; +$LANG["phrase_system_check"] = "Системата за самоконтрол"; +$LANG["phrase_system_fields_no_validation"] = "Вие не можете да добавите валидиране на системата полета."; +$LANG["phrase_system_time_offset"] = "Система време Офсетни"; +$LANG["phrase_tab_label"] = "Tab Издател"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Тест Папка Разрешения"; +$LANG["phrase_test_submission"] = "Тест Представяне"; +$LANG["phrase_test_submission_3"] = "3. Тест Представяне"; +$LANG["phrase_test_submission_received"] = "Тест Подаване Получени"; +$LANG["phrase_text_and_html"] = "Текст & HTML"; +$LANG["phrase_text_email"] = "Текст Email"; +$LANG["phrase_text_template"] = "Текст Шаблон"; +$LANG["phrase_the_previous_month"] = "Предходния месец"; +$LANG["phrase_theme_description"] = "Тема Описание"; +$LANG["phrase_theme_info"] = "Тема информация"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Общо резултати:"; +$LANG["phrase_type_c"] = "Грешка Тип:"; +$LANG["phrase_unselect_all"] = "Всички Unselect"; +$LANG["phrase_update_accounts"] = "Актуализация сметки"; +$LANG["phrase_update_email_template"] = "Актуализация Имейл шаблон"; +$LANG["phrase_update_field"] = "Актуализация Поле"; +$LANG["phrase_update_order"] = "Актуализиране на поръчката"; +$LANG["phrase_update_view"] = "Актуализация Преглед"; +$LANG["phrase_upload_file"] = "Качване на файла"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Качи папка пътека"; +$LANG["phrase_upload_folder_url"] = "Качи папка URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Използвайте стойност по подразбиране?"; +$LANG["phrase_used_by_num_form_fields"] = "Използва се от полетата на формуляра #"; +$LANG["phrase_uses_swatches"] = "Използва Swatches"; +$LANG["phrase_valid_email"] = "Валиден Email"; +$LANG["phrase_validation_error"] = "Грешка при проверката"; +$LANG["phrase_validation_rule"] = "Правило за проверка"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Виж Group"; +$LANG["phrase_view_id"] = "Виж ID"; +$LANG["phrase_view_name"] = "Виж Име"; +$LANG["phrase_view_placeholders"] = "Преглед на контейнери"; +$LANG["phrase_view_submissions"] = "Виж Submissions"; +$LANG["phrase_view_uploaded_files"] = "оглед на качените файлове"; +$LANG["phrase_viewing_range"] = "[преглед {\$startnum} до {\$endnum}]"; +$LANG["phrase_when_sent"] = "Когато е изпратена"; +$LANG["phrase_when_submission_is_deleted"] = "При подаване се заличава"; +$LANG["phrase_when_submission_is_edited"] = "При подаване се редактира"; +$LANG["phrase_who_can_access"] = "Кой има достъп?"; +$LANG["phrase_word_limit_p"] = "дума граница."; +$LANG["phrase_year_to_date"] = "Година до настоящия момент"; +$LANG["phrase_yes_for_all_views"] = "Да, за всички гледни точки"; +$LANG["phrase_yes_for_specific_views"] = "Да, за конкретни Прегледи"; +$LANG["phrase_your_account"] = "Вашият профил"; +$LANG["phrase_your_email"] = "Вашият Email"; +$LANG["phrase_your_email_address"] = "Вашият имейл адрес"; +$LANG["processing_form_disabled"] = "За съжаление, тази форма е била прекратена."; +$LANG["processing_form_incomplete"] = "Съжаляваме, но тази форма не изглежда да е изцяло създаден в рамките Форма Инструменти. Най-вероятната причина за този проблем е, че сте отстранили от "form_tools_initialize_form" скрито поле форма, но не преминат всички стъпки от "Добавяне на форма" процес.

    Моля, влезте и преглед на конфигурацията форма."; +$LANG["processing_init_complete"] = "Благодаря! Вашият тест представяне е бил пуснат чрез успешно. Моля, върнете към формата Инструменти панел администрация и натиснете бутона "Refresh" бутона в долната част на Добави Стъпка формуляр 3 страница, за да приключите създаването си форма."; +$LANG["processing_invalid_form_id"] = "За съжаление, това не изглежда да е валиден документ за самоличност форма."; +$LANG["processing_no_form_id"] = "process.php изисква форма ИД за преработка. Уверете се, че формата се съдържа скрито поле с име "form_tools_form_id", която минава покрай формата за самоличност."; +$LANG["processing_no_form_url_for_recaptcha"] = "Форма инструменти не е в състояние да се определи къде да се пренасочат, когато те не успяват да влязат в КАПИТАН правилно. Моля, преминават в скрито поле с името form_tools_form_url, съдържащ URL на формуляра."; +$LANG["processing_no_post_vars"] = "process.php не получава никакви данни. Забележка: това писмо не може да се зареждат директно в браузъра си.
    Уверете се, че формулярът се изпраща по пощата."; +$LANG["processing_no_redirect_url"] = "Представянето е било обработено правилно, но не сте посочили пренасочване на URL за тази форма! Редактиране на формата си във Формуляра Инструменти на потребителския интерфейс и да добавите пренасочване на URL."; +$LANG["special_language"] = "Bulgarian"; +$LANG["special_language_locale"] = "Bulgarian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Всички нови клиентски сметки ще бъдат създадени с настройките и разрешения, посочени по-долу. За да се замени настройка за конкретен клиент, редактиране на профила на клиента и визитата си раздела Настройки."; +$LANG["text_add_form_choose_integration_method"] = "Изберете кой метод искате да използвате, за да се интегрират формата с формата Инструменти."; +$LANG["text_add_form_code_submission_benefits"] = "Този метод използва Форма Tools API , включени в Формуляр Инструменти скрипт. API осигурява редица полезни функции, за да направи работата на интегриране на формата с формата Инструменти възможно най-прости. Няма ограничения как вашата форма може да бъде представено при използване на API. Тук можете да подадете съдържание наведнъж, или страница по страница, можете да добавите вашите собствени валидиране от страна на сървъра, CAPTCHA изображения, можете да изберете да подава информация сега, но само да го каже за показване подаване на формуляр Tools UI по-късна дата (вж. раздел финализираните изявления в помощ документация API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "За да се представят данни от формуляри чрез PHP, форма трябва да се намира на същия уебсайт като този формуляр Инструменти инсталация. Второ, за не-технически и начинаещите потребители Форма Инструменти, този метод може да бъде малко плашещо в началото. Но има много документация, която да ви помогне, включително две прости уроци за интегриране на едно и мулти-страница форми (те са свързани с по-късен етап)."; +$LANG["text_add_form_direct_submission_benefits"] = "Това е най-простият начин да подадете формуляр за формуляр Инструменти. Той не изисква никакви познания за PHP и изисква само много малка промяна в форма. Това е чудесно за по-малки форми, където искате просто да представят информация за базата данни, след това пренасочва потребителя към едно "благодаря" страница."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Това твърдение метод е много лесен за употреба, но не предостави много по-сложни за контрол форми. Multi-страница формуляри или формуляри, които изискват сървъра утвърждаване страна са по-подходящи за втория метод: чрез подаване на формуляра Инструменти на API."; +$LANG["text_add_form_field_types1"] = "Почти сте готови! Тази страница се опитва да намерите всички полета на формуляра и да определят техните типове полета. Щракнете върху Smart Fill бутон на правото, за да започнете. Ще бъде разрешено само, за да се процедира, когато всички действия са били решени - въпроси, които се нуждаят от вашето внимание, се появяват в "необходимото действие " колона."; +$LANG["text_add_form_field_types2"] = "Ако вашата форма, която не е в HTML, щракнете върху бутона "Стъпка Напред, за да продължите. Това може да бъде конфигуриран по-късно."; +$LANG["text_add_form_field_types3"] = "Това презарежда съдържанието на вашата форма (и). Забележка: Това ще презапише всички промени, които са направили на тази страница."; +$LANG["text_add_form_field_types4"] = "В случай, че се сблъскате с проблеми, щракнете тук, за да пропуснете тази стъпка. Всички нерешени полета са настроени да използват стойностите по подразбиране. Можете да персонализирате тези области по-късно."; +$LANG["text_add_form_field_types_manual_upload"] = "Ако сте били в състояние да Смарт Попълнете вашите полета, може да искат да опитат алтернативно решение: качване на копия от формулярите си в полетата по-долу."; +$LANG["text_add_form_field_types_manual_upload2"] = "Забележка: не качвайте суров PHP страници (или други от страна на сървъра код) - просто да качите HTML версии . За да се получи това, да видите и запишете на страница от вашия уеб браузър."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Имаше няколко полета, които не могат да бъдат намерени под формата на страница, който сте посочили. Това е най-вероятно се дължи от една от следните:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Въвели сте неправилно една или повече от формата URL адреси на вашите многостранични форма."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Един или повече страници на вашата форма са защитени с парола, а сценарият не успее да влезе в страницата."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Неправилно въведена форма URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Щракнете тук, за да се върнете към формуляр с информация за страницата, за да проверите вашите настройки."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Ти променяш формата (ите) след полагане на теста подаване"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Щракнете тук, за да се постави чрез друг тест подаване ."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Вашият форма е защитен с парола, а сценарият не успее да влезе в страницата."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "В друг раздел / на прозореца на този браузър, влезте във вашата форма след това щракнете върху страница за опресняване на бутона по-долу, за да се опитате да си намерите на полето."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Ако нито един от горните решения, работа, може също да искате да опитате ръчно да качвате вашите формуляри за преработка ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Имаше няколко полета, които не могат да бъдат намерени под формата страниците, които сте задали. Това е най-вероятно причинена от един от тези:"; +$LANG["text_add_form_help_link"] = "Ако се сблъскате с никакви проблеми по време на тези стъпки, опитайте се да прочетете документацията за потребителя."; +$LANG["text_add_form_step_1_text_1"] = "На следващите страници ви води през стъпките, за да конфигурирате Инструменти на формуляри, за да съхранявате вашите форма становища. Преди да продължите, моля, проверете дали:"; +$LANG["text_add_form_step_1_text_2"] = "Вашата кандидатура вече е създаден и е достъпна чрез URL (Localhost е глоба)"; +$LANG["text_add_form_step_1_text_3"] = "са в състояние да редактирате вашите форма"; +$LANG["text_add_form_step_2_para_2"] = "Отворете си форма в редактор по ваш избор и промяна на етикета с вашето вид на следния, включително две скрити полета."; +$LANG["text_add_form_step_2_para_3"] = "След това отворете форма в уеб браузър. Попълнете всички полета и да го представи. След подаване, трябва да видите съобщение, уведомление. След това се появява съобщение, върнете се към тази страница и кликнете на бутона по-долу опресняване. Когато този процес приключи, ще видите продължи бутона по-долу, вие приемате към следващата стъпка."; +$LANG["text_add_form_step_2_para_6"] = "В представянето си форма, включват следните стойности. Те могат да бъдат пряко или чрез PHP минаваше през самия форма. По-долу са примери за всеки. В (\$ varname) е хеш (или асоциативен масив) на цялата информация, подаване на формуляра - това е обикновено (\$ postvar) или (\$ sessionvar) променлива, но може да бъде построен обичай."; +$LANG["text_add_form_step_2_text_2"] = "Въведете URL адреса на вашата "Благодаря " страница тук. Това е мястото, където искате хората да бъдат насочени след като формата е била представена."; +$LANG["text_add_form_step_3_para_1"] = "Тази страница е списък на всички полета във формата представяне. Моля разглежда всяка област и се отстраняват всички, че не е нужно съхраняват за всеки представяне. Ако изтриете валиден област от злополука, или желание за промяна на информацията, съхранявана от вашата форма, се върнете към предишната страница, за да изпратите ново подаване тест."; +$LANG["text_add_form_step_3_para_2"] = "Забележка: ако сте изпращане на множество стойности чрез отметки или мулти-изберете полето, се уверете, че името на полето завършва с [] символи (виж потребителска документация за повече информация)."; +$LANG["text_add_form_step_3_text_1"] = "Ето къде започва забавлението! В този момент, Формуляр инструменти чака за подаване на тест от вашата форма. Тя ще използва този формуляр за участие, за да се знае каква информация трябва да се съхранява в базата данни."; +$LANG["text_add_form_step_3_text_2"] = "чрез посочване с формата на формуляр Инструменти"; +$LANG["text_add_form_step_3_text_3"] = "като се използва формата Инструменти API"; +$LANG["text_add_form_step_3_text_4"] = "За да интегрирате вашата форма, ви предлагаме да прочетете една от следните уроци:"; +$LANG["text_add_form_step_3_text_5"] = "Те обясняват как да настроите формата, в подготовка за представяне на теста, и включва друга информация, която може да бъде от помощ. Линията на PHP ще трябва е:"; +$LANG["text_add_form_step_3_text_6"] = "Това осигурява на данни е изпратен до Форма Инструменти. Когато сте свързали с пробната представяне, щракнете върху бутона по-долу."; +$LANG["text_add_form_step_3_text_7"] = "На страницата, преди вашето окончателен "благодаря" страница, не забравяйте да добавите следния параметър към \$ params променлива:"; +$LANG["text_add_form_step_5_para_1"] = "Базата данни е създадена, за да за тази форма, както и формата е активиран за ползване. Ако сте направили представяне чрез посочване с форма на process.php, моля върнете към формата и премахване на следното скрито поле:"; +$LANG["text_add_form_step_5_para_2"] = "След посещението си "благодаря", за да изпразните сесии. След това се прави, всички нови наблюдения форма ще бъдат обработвани и съхранявани от формуляр Инструменти. Опитайте се направи представяне или два да се провери информацията е качването правилно."; +$LANG["text_add_form_step_5_para_3"] = "Ако желаете да прецизира начина за получаване на възможности като автоматично изпращане на имейл, добавяне на допълнителни полета на формуляра област, или персонализиране на видове формират поле, можете да редактирате формата на всяка точка."; +$LANG["text_add_form_step_5_para_4"] = "Тъй като си форма съдържа полета за качване на файлове, ще трябва да конфигурирате всяка област, за уточняване на папката качване на файл, какви файлове са разрешени и. Това може да бъде намерена на раздела Показване на страницата за редактиране на форма."; +$LANG["text_add_form_step_5_para_5"] = "Ако беше изпратена чрез подаване на API, промяна на ft_api_init_form_page линия на първата страница на формата си на адрес:"; +$LANG["text_add_submission_button"] = "Добавяне на бутон за подаване, се появява само за мнения, които имат "Може да се добави обжалва " възможността, да "да "."; +$LANG["text_admin_email_placeholder_info"] = "Този е-мейл адрес на формуляра за администратор Инструменти, определени в настройките на профила. Това само изхода на имейл адрес, така че ако искате да използвате като връзка HTML, ще трябва да я увийте в една <a> маркер, така:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ A>"; +$LANG["text_also_default_login_page_theme"] = "(Също така темата по подразбиране за вход страница)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Първо, моля, изберете вашия тип форма."; +$LANG["text_client_form_page"] = "Тази страница съдържа списък на всички форми и мнения възложени на този клиент. Съвет: за да могат да видите заявления една форма, те трябва да бъдат възложени на най-малко от една гледна точка."; +$LANG["text_client_map_filters_desc1"] = "Клиент филтри сайта ви лимит на заявления, които се появяват от тази гледна точка чрез картографиране на стойности във форма областта на стойностите в клиентската сметка."; +$LANG["text_client_no_forms"] = "В момента нямате форми на разположение за преглед."; +$LANG["text_client_welcome"] = "Добре дошли! Тази програма съхранява цялата информация, предоставена от вашия уебсайт посетители. За да видите заявления за специална форма, просто кликнете върху линка ", или да видите най-лявата навигационното меню за други опции."; +$LANG["text_config_file_created"] = "Вашият config.php файл е бил създаден."; +$LANG["text_config_file_not_created"] = "Ние не може да създадете файл config.php. Вие ще трябва да създадете файл ръчно."; +$LANG["text_config_file_not_created_instructions"] = "Копирайте съдържанието от секцията по-долу в един файл, наречен config.php и да го качите чрез FTP с формата Инструменти / глобалната папка (папката, която съдържа и няколко други файлове и директории, един файл, наречен library.php)."; +$LANG["text_confirm_delete_form"] = "Да, искам да изтрия този формуляр"; +$LANG["text_create_admin_account"] = "Сега ние ще създадете сметка на администратора. Това се използва за управление на всички аспекти на формуляр инструменти, като например добавяне на форми и създаване на клиентски сметки."; +$LANG["text_create_new_client_account"] = "Използвайте формуляра по-долу, за да създадете нова сметка на клиента. Всички полета са задължителни."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "виж PHP {\$datefunctionlink} функция за опциите за форматиране"; +$LANG["text_default_file_settings_page"] = "Тази страница определя настройките за качване на файлове на вашия формуляр инсталация Инструменти. Тези правила важат за всички файловете качени чрез формуляр Инструменти, освен ако изрично преимущество за отделна област форма. Забележка: ако промените папката, след като качите файлове са качени, те автоматично ще бъдат преместени в новата папка."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Преди да продължите, ще трябва да актуализирате / теми / по подразбиране / папка кеш да осигурява пълно четат и пишат разрешения. След като това се прави, това съобщение ще изчезне, а можете да инсталирате скрипта."; +$LANG["text_default_values_in_view"] = "Този раздел е задължително. Всички изявления, създаден с тази гледна точка, ще съдържа по подразбиране стойности, посочени тук."; +$LANG["text_delete_all_forms"] = "Искам да изтриете всички файлове, които бяха качени чрез тази форма"; +$LANG["text_delete_form_warning"] = "Сигурни ли сте, че искате да изтриете тази форма? Това действие не може да бъде отменено. Всички данни ще бъдат постоянно губи!"; +$LANG["text_edit_admin_menu_page"] = "Можете да редактирате менюто по-долу. За да ви гарантира винаги имат достъп до всички функции на разположение в рамките на формуляр Инструменти на следващите страници са необходими: форми, Клиенти, сметката ви, модули, Настройки и Изход."; +$LANG["text_edit_client_menu_page"] = "Този раздел ви позволява да персонализирате лявата колона навигация за всеки потребител. Можете да създадете толкова менюта клиент, както желаете, и да поставят всяка сметка на един от тях. По подразбиране има две менюта: един за вас, администратор, и един за всички клиентски сметки. Администраторът могат да се променят, но не се отстранява."; +$LANG["text_edit_tab_summary"] = "Ако желаете да се групират полета този Вижте в разделите, просто въведете имената раздела по-долу. След като сте готови, изберете съответния раздел за всяко поле група в раздела Полета ."; +$LANG["text_edit_view_list_page"] = "Този раздел за контрол, които полета се появяват като колони на страницата Подаване на обява, както и няколко допълнителни настройки, за тези области. Забележка: ние ви препоръчваме да добавите не повече от 4 или 5 от най-важните полета в изгледа."; +$LANG["text_email_settings_intro"] = "Тази страница ви позволява да определите кои от вашите полета на формуляра магазин имейли и съответстващите им имена. След като ги определи тук, можете да ги използвате във вашата електронна поща шаблони като получатели. Този раздел е напълно задължително."; +$LANG["text_email_tab_summary"] = "Този раздел ви позволява да изгради произволен брой имейли, за да бъдат изпратени, когато си форма се представя, както и други води."; +$LANG["text_email_template_tab"] = "Този раздел ви позволява да определите какво съдържание се появява в имейл. Ако искате да изпратите вашия имейл, тъй като само текст или електронна поща, само да въведете стойност за този раздел. Ако въведете стойност за двете, имейл ще бъдат изпратени в двата формата."; +$LANG["text_email_template_text_1"] = "Налице е искането, направено чрез вашата форма, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Налице е искането, направено чрез вашата форма, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Благодаря за вашето представяне!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Съобщение за грешка, за да се покаже, ако полето не успее валидиране"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Външните форми са форми, които вече съществуват на вашия сайт, или някъде в интернет. Изберете тази опция, ако имате собствен форма, която бихте искали да се интегрират с формата Инструменти."; +$LANG["text_fields_tab_summary"] = "Тази страница показва всички на вашите полета на формуляра. За да контролирате как те се появяват, когато разглеждащи твърдения, вижте раздела Изгледи . Изтриването поле на тази страница ще го изтриете от всички мнения са, така че, моля, бъдете внимателни!"; +$LANG["text_file_extension_info"] = "Въведете файловите разширения, отделени със запетаи (например JPG, GIF, PNG) или оставете празно, за да се даде възможност всеки тип файл."; +$LANG["text_file_field_placeholders_info"] = "Файл полета са две специални контейнери: FILEURL и името на файла. FILEURL е пълният URL до файла, така че можете да свържете директно в своите имейли; FILENAME е само името на файла."; +$LANG["text_filters_page"] = "Само тези становища, които отговарят на правила, които можете определят по-долу ще се появи в тази гледна точка."; +$LANG["text_filters_tips"] = "За съвети как да се използва подаване филтри, вижте Потребителски документация."; +$LANG["text_forgot_password"] = "Няма проблем. Просто въведете вашето потребителско име отдолу и данните си за вход ще бъде изпратен на електронния адрес на файла. Ако сте забравили потребителското си име, моля пишете на администратора на сайта на {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Тази форма съдържа едно или повече полета за качване на файлове:"; +$LANG["text_form_placeholder_info"] = "Следните контейнери могат да бъдат използвани във всеки имейл шаблон и полски език в контейнер, независимо от Преглежда имейл шаблон е възложено. ВЪПРОС контейнери са конкретен въпрос за форма; ОТГОВОР контейнери са отговорите на всеки въпрос."; +$LANG["text_form_submission_date_placeholder"] = "Датата, когато подаването е направено."; +$LANG["text_form_tools_form_url"] = "Пълният URL на формата. Това само има стойност за външни форми."; +$LANG["text_form_tools_login_url"] = "Данните за вход URL за формуляр Инструменти."; +$LANG["text_form_view_permission_info_admin"] = "Забележка: тази форма в момента има администраторски достъп тип, така че никой от клиентски сметки ще бъде в състояние да видите тази гледна точка."; +$LANG["text_form_view_permission_info_private"] = "Забележка: тази форма в момента има Частен достъп тип, така че публични и частни възможности тук ще бъде ограничена до това подмножество на клиенти."; +$LANG["text_ft_installed"] = "Поздравления, Инструменти формуляр е инсталиран успешно!"; +$LANG["text_global_placeholder_info"] = "Тези контейнери могат да бъдат използвани по някакъв шаблон и всякаква форма."; +$LANG["text_group_name_explanation"] = "За полета добавя чрез добавяне на процеса на формуляр, като тази стойност е предварително напълнена с показването на текста каквото поле използва стойността. Ако желаете, можете да го смените с по-добре характеризират съдържанието."; +$LANG["text_install_create_config_file"] = "Форма Инструменти магазини вашия сървър и настройките на база данни във файл, наречен config.php, намерени в / глобален / папка. Кликнете върху "Създаване на файл" бутон за автоматично генериране на файла на вашия сървър."; +$LANG["text_install_create_database_tables"] = "Сега ние ще създадете формуляр Инструменти на таблиците в базата данни. Тази стъпка изисква самата база данни, които вече са били създадени. Ако не сте сигурни как да направите това, моля свържете се с Вашия доставчик на хостинг услуги."; +$LANG["text_install_db_tables_error_tip_1"] = ""Неизвестен MySQL Server Host" обикновено означава, че името на хоста ви е неправилно. Може би опитайте да зададете този на "Localhost" - това е разпространеният начин да се позова на "местни" база данни на уеб сървъра."; +$LANG["text_install_db_tables_error_tip_2"] = ""Не може да се свържете с локален сървър MySQL чрез гнездо" означава име на хост база данни областта отново е неправилно."; +$LANG["text_install_db_tables_error_tip_3"] = ""Достъпът отказан достъп на потребител:" означава, че има проблем с вашето потребителско име и парола комбинация."; +$LANG["text_install_db_tables_error_tip_4"] = ""Достъпът е отказан на потребител: ... на база данни ..." означава, че въпреки че вашето потребителско име и парола сте предоставили е правилна, тя не е могла да се свърже с тази конкретна база данни с този профил. Това може да означава, че или си името на базата данни е неправилен, или потребителски акаунт, че това не е свързано с тази база данни."; +$LANG["text_install_email_content_text"] = "На нашия уебсайт има много ресурси, които да ви помогнат да започнете, включително нашата онлайн документация (https://docs.formtools.org) и уроци (https://docs.formtools.org/tutorials). Ако откриете, че останахте или имахте въпрос, задайте въпрос относно github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Съжаляваме, Формуляр инструменти няма да бъдат в състояние да работи на вашия сървър. Моля, кликнете тук за минималните изисквания."; +$LANG["text_install_system_check"] = "Тази страница работи няколко тестове на системата с цел осигуряване е в състояние да тече Форма Инструменти."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Вътрешни форми съществуват само в рамките Форма Инструменти - не на друго място на вашия сайт. Единствената форма Инструменти потребителски акаунти ще имат достъп до формата. Изберете тази опция, ако не сте съществуващ формуляр."; +$LANG["text_internal_form_intro"] = "Използвайте формата по-долу, за да се създаде нов вътрешен форма. Всички настройки, включително броя и съдържанието на полетата на формуляра може да бъде променена и конфигурирани по-късно."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "За да влезете и да използва формуляр Инструменти, трябва да имате ДжаваСкрипт поддръжка на вашия браузър. Моля да може сега, и натиснете бутона опресняване на вашия браузър."; +$LANG["text_last_modified_date_explanation_c"] = "За последен път това твърдение е бил модифициран. За нови наблюдения, това е същото като:"; +$LANG["text_limit_email_content_desc"] = "Тази опция работи само за HTML и текст, съдържанието, произведено с Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(само списъци мнения с един или повече определени филтри)"; +$LANG["text_log_in_to_ft"] = "Влезте в системата на формуляр Инструменти"; +$LANG["text_login"] = "Моля, влезте в профила си за достъп до (\$ име_на_програма) администрация панел. Ако сте забравили паролата си, кликнете тук."; +$LANG["text_login_info"] = "Както беше поискано, тук е информацията ви за вход."; +$LANG["text_name_of_form"] = "Името на формата."; +$LANG["text_no_clients"] = "До момента няма регистрирани клиенти в базата данни. За да добавите нов сметка на клиента, щракнете върху бутона добави Клиент по-долу."; +$LANG["text_no_clients_found"] = "Не са намерени клиенти. Опитайте се да се разширява с вашето търсене."; +$LANG["text_no_fields_in_view"] = "Тази гледна точка не имате някакви полета в нея. Кликнете върху линка по-долу."; +$LANG["text_no_forms"] = "В момента няма форми в база данни. За да добавите нов формуляр, щракнете върху бутона добави формуляр по-долу."; +$LANG["text_no_forms_found"] = "Не са открити форми."; +$LANG["text_no_forms_found_search"] = "Не са открити форми. Опитайте разширяване на вашите критерии за търсене."; +$LANG["text_no_modules_found"] = "Не са намерени модули. Опитайте се да се разширява с вашето търсене."; +$LANG["text_no_recipients_added"] = "Не получатели са добавени."; +$LANG["text_no_search_results"] = "Няма резултати с този критерии / Виж."; +$LANG["text_no_submissions_found"] = "За съжаление, няма изявления са намерени."; +$LANG["text_no_themes"] = "Вие не разполагат с никакви определени теми. Щракнете върху бутона по-долу, за да опресни списъка си тема, или проверете документацията за потребителя Форма Инструменти за информация относно добавянето на теми."; +$LANG["text_non_deletable_fields"] = "Това поле се използва от Core скрипт и не могат да бъдат редактирани или изтрити без да причиняват несъвместимост. Ако желаете да направите промени в полето за вид, направете копие от него и редактиране на копието."; +$LANG["text_option_list_group_explanation"] = "Ако това е избрано, то позволява да се групират вашите възможности. Как групи са показани зависи от тип поле с помощта на тази опция списък."; +$LANG["text_option_list_page"] = "Радио бутони, квадратчетата, лесно и мулти-изберете падащото полета да предостави на потребителя с множество опции, от които те могат да изберете един или повече елементи. Под формата инструменти, те са известни като при вариант списъци. Като цяло, те са създадени автоматично от Добавяне външна форма на процеса, но можете ръчно да добавяте или редактирате вашите опция списъци по-долу, ако си сменя формата си съдържание или изграждане на полета, които се използват само вътрешно."; +$LANG["text_option_list_used_by_fields"] = "Този вариант на списъка, е използван от няколко полета форма. Ако актуализира информацията по-долу, тя ще бъде променена за всички области ( вж. раздела формулярни полета, за да видите списък на полета ). Ако желаете да се актуализират стойностите за една или подмножество на полета, които в момента са присвоени, щракнете тук, за да създадете нов списък Възможност със същите ценности като този. След това можете да присвоите формата полетата, които искате към новата група."; +$LANG["text_public_form_omit_list_page"] = "Обществени форми ви дават в полза на отдаване под наем на всички клиентски сметки има достъп до тях без да се налага ръчно да присвоите всеки клиент за тях. Тази страница ви позволява да определят точно тези клиенти, които не е разрешен достъп до тази форма, макар и под формата е маркирано като публично."; +$LANG["text_public_view_omit_list_page"] = "Обществени Изгледите ви дават в полза на отдаване под наем на всички клиентски сметки има достъп до тях без да се налага ръчно да присвоите всеки клиент за тях. Тази страница ви позволява да определят точно тези клиенти, които не могат да имат достъп този изглед."; +$LANG["text_reference_tab_info"] = "Тази страница показва всички контейнери, които са на разположение за вашата форма. Контейнери са низове, които могат да бъдат използвани в електронна поща, шаблони, и полета, отбелязани със специална икона на контейнер . Когато се влезе в поле, те са динамично преобразува в подходящата стойност, когато областта е гледан или електронната поща е изпратено."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Преглед на потребителска документация"; +$LANG["text_send_email_from_edit_submission_page"] = "Включете опцията за да изпратите този имейл от страницата за подаване на Редактиране"; +$LANG["text_smart_fill_option_list_problem"] = "Ние бяхме в състояние да Смарт Напълнете областта опции. Въпреки това, като алтернатива, можете да опитате да качите копие на вашата форма страница в полето по-долу. Забележка: не качвайте суров PHP страници (или други от страна на сървъра код) - просто да качите HTML версия . За да се получи това, да видите и запишете на страница от вашия уеб браузър."; +$LANG["text_submission_ip_address"] = "В IP адрес на потребителя, който е направил представяне."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Използвайте формуляра по-долу, за да видите или се изпраща имейл, генерирани от този имейл шаблон. В имейла се изпращат само до имейл, посочени по-долу, а основните теми, CC и BCC имейл адрес получатели са игнорирани, докато тестване."; +$LANG["text_test_email_templates_no_submissions"] = "За да тествате вашия имейл шаблони, трябва първо да свързали с най-малко един вид представяне."; +$LANG["text_theme_page_intro"] = "Тази страница показва всички ваши теми. Кликнете върху снимка, за да видите по-голям пример за стилове на тема's. В "Enabled" отметката определя дали тази тема или не може да бъде избран от клиента. За да разглеждате всички налични теми, посетете Форма Инструменти на сайта."; +$LANG["text_tutorial_adding_first_form"] = "Инструкция: Добавяне на първата си форма!"; +$LANG["text_unique_submission_id"] = "Уникалната подаване самоличност."; +$LANG["text_unused_option_list"] = "Тази опция списък не се използва от каквато и да е форма полета."; +$LANG["text_upgraded"] = "Вашата инсталация е обновен до {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Този вариант на списъка, е използван от следните области."; +$LANG["text_view_fields_info"] = "Този раздел контролира кои полета се показват при редактирането на подаване в тази гледна точка, поръчката им и дали те могат да се редактират или не."; +$LANG["text_view_tab_summary"] = "Този раздел ви позволява да създавате различни начини да се групират и да подредите вашите данни. Прегледи нека да създадете персонализирани подгрупи на данните за вашата форма, за да го разделят на управляеми части, както и да се ограничи това, което клиентите могат да видят или редактирате."; +$LANG["validation_account_disabled"] = "За съжаление, Вашата сметка е била прекратена."; +$LANG["validation_account_not_recognized"] = "За съжаление, това име не е разпознат."; +$LANG["validation_account_not_recognized_info"] = "За съжаление, това име не бе намерен. Моля опитайте отново или се свържете с администратора на сайта на адреса по-долу."; +$LANG["validation_account_pending"] = "Вашият потребителски акаунт е в очакване на одобрението от администратора."; +$LANG["validation_check_delete_client"] = "Сигурни ли сте, че искате да изтриете тази сметка на клиента?"; +$LANG["validation_client_password_missing_number"] = "Паролата клиент трябва да съдържа поне една цифра (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Паролата клиент трябва да съдържа поне един от следните знаци: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Паролата клиент трябва да съдържа поне една буква главна."; +$LANG["validation_client_password_too_short"] = "Клиентът парола трябва да бъде най-малко {\$number} символа."; +$LANG["validation_col_name_is_reserved_word"] = "За съжаление, това име база данни колона е запазена работа в MySQL. Моля, преименувате!"; +$LANG["validation_db_name"] = "Имената на базата данни не могат да съдържат периоди или наклони."; +$LANG["validation_db_not_updated_invalid_input"] = "В базата данни не може да бъде актуализиран. Моля, проверете дали сте въвели стойностите са валидни."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "За съжаление, по подразбиране, администратора и теми, клиентът трябва винаги да бъдат активирани."; +$LANG["validation_default_phone_num_required"] = "Моля, попълнете в пълния телефонен номер за <b> { \$ областта} </ B> - номера."; +$LANG["validation_default_rule_alpha"] = "Моля въведете само букви и цифри за <b> { \$ областта} </ B>."; +$LANG["validation_default_rule_letters_only"] = "Моля въведете само писма за <b> { \$ областта} </ B>."; +$LANG["validation_default_rule_numbers_only"] = "Моля само да въведете номера за <b> { \$ областта} </ B>."; +$LANG["validation_default_rule_required"] = "Моля, въведете стойност за <b> { \$ областта} </ B>."; +$LANG["validation_default_rule_valid_email"] = "Моля, въведете валиден имейл адрес за <b> { \$ областта} </ B>."; +$LANG["validation_delete_form_confirm"] = "Моля, проверете поле, за да потвърдите, че искате да изтриете тази форма."; +$LANG["validation_delete_non_empty_option_list"] = "Внимание! Този вариант на списъка, е използван от един или повече формулярни полета. Изтриване ще направи тези полета престава да работи правилно."; +$LANG["validation_display_names_incomplete"] = "Моля, въведете стойност за всички Покажи имена, или кликнете на опцията Smart Попълнете да влизат в тях динамично."; +$LANG["validation_duplicate_form_field_name"] = "Вие не можете да имате няколко полета със същото име на поле."; +$LANG["validation_email_not_found_or_invalid"] = "За съжаление, имейл, свързани с профила си или не съществува или е невалиден."; +$LANG["validation_folder_invalid_permissions"] = "С цел да тече този тест, на разрешения трябва да бъдат зададени на качване папката да се даде възможност за четене и писане на файлове (777 на Unix)."; +$LANG["validation_folder_not_writable"] = "Тази папка не е записваем."; +$LANG["validation_internal_form_too_many_fields"] = "Съжаляваме, можете само форми с 1000 полета, или по-малко."; +$LANG["validation_invalid_admin_email"] = "Моля, въведете валиден имейл адрес adminstrator's."; +$LANG["validation_invalid_admin_username"] = "Вашето потребителско име може да се състои само от букви и цифри (AZ и 0-9)."; +$LANG["validation_invalid_client_username"] = "Потребителско име на клиента могат да се състоят само от букви и цифри (AZ и 0-9)."; +$LANG["validation_invalid_client_username2"] = "За съжаление, потребителско име може да съдържа само букви, цифри и подчертая характер. Моля въведете ново потребителско име."; +$LANG["validation_invalid_column_name"] = "Колона имена могат да бъдат буквено-цифрови (AZ, 0-9). Моля, проверете графата за имена."; +$LANG["validation_invalid_custom_from_email"] = "Моля, въведете валиден обичай "От", имейл адрес."; +$LANG["validation_invalid_custom_reply_to_email"] = "Моля, въведете валиден обичаят за отговор "имейл адрес."; +$LANG["validation_invalid_default_sessions_timeout"] = "Моля, въведете валидна стойност (число) за неизпълнение сесии изчакване."; +$LANG["validation_invalid_email"] = "Моля, въведете валиден имейл адрес."; +$LANG["validation_invalid_email_id"] = "За съжаление, това е невалиден имейл за самоличност."; +$LANG["validation_invalid_folder"] = "За съжаление, това не изглежда да е валиден папка."; +$LANG["validation_invalid_form_field_names"] = "Полетата на формуляра може да бъде буквено-цифрови и долна (AZ, 0-9, _), без интервали."; +$LANG["validation_invalid_num_clients_per_page"] = "Моля въведете само номера на клиентите "Num на поле на страницата."; +$LANG["validation_invalid_num_emails_per_page"] = "Моля въведете само цифри за съобщения на страницата."; +$LANG["validation_invalid_num_form_fields"] = "Моля само да въведете номера в областта на Брой на областите."; +$LANG["validation_invalid_num_forms_per_page"] = "Моля въведете само номера в Num форми на страница област."; +$LANG["validation_invalid_num_menus_per_page"] = "Моля въведете само цифри за менютата на страница."; +$LANG["validation_invalid_num_modules_per_page"] = "Моля въведете само номера в Num модули на поле на страницата."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Моля само да въведете номера в списъците на Num опция на страница областта."; +$LANG["validation_invalid_num_submissions_per_page"] = "Моля въведете валиден номер на становища на страница."; +$LANG["validation_invalid_sessions_timeout"] = "Моля, въведете валиден изчакване сесия (цели числа само!)."; +$LANG["validation_invalid_tab_assign_values"] = "Моля, въведете номера само в "от" и "в" полета."; +$LANG["validation_invalid_table_prefix"] = "Моля, въведете префикс база данни се състои от писмо и долна черта само."; +$LANG["validation_invalid_upload_folder"] = "Инсталиране на сървъра Ви на PHP е невалиден настройка за upload_tmp_dir стойност. "{\$upload_folder}" не е валиден папка."; +$LANG["validation_invalid_url"] = "Моля, въведете валиден URL."; +$LANG["validation_invalid_username"] = "Вашето потребителско име може да се състои само от букви и цифри (AZ и 0-9)."; +$LANG["validation_is_form_active"] = "Моля, посочете дали формата е активен или не."; +$LANG["validation_menu_name_taken"] = "За съжаление това меню име вече е заето. Моля изберете ново име."; +$LANG["validation_modules_search_no_status"] = "Моля изберете или включени или изключени квадратчетата."; +$LANG["validation_no_access_type"] = "Моля, въведете тип достъп."; +$LANG["validation_no_account_logout_url"] = "Моля въведете вашето излезете URL."; +$LANG["validation_no_account_password_confirmed"] = "Моля въведете повторно новата парола."; +$LANG["validation_no_account_password_confirmed2"] = "Моля, въведете нова парола."; +$LANG["validation_no_admin_email"] = "Моля, въведете имейл адреса на администратора."; +$LANG["validation_no_admin_theme"] = "Моля, изберете тема за администраторски акаунт."; +$LANG["validation_no_admin_theme_swatch"] = "Моля изберете мостра за администратора тема."; +$LANG["validation_no_client_email"] = "Моля, въведете имейл адреса на клиента."; +$LANG["validation_no_client_first_name"] = "Моля, въведете име на клиента."; +$LANG["validation_no_client_last_name"] = "Моля, въведете фамилното име на клиента."; +$LANG["validation_no_client_login_page"] = "Моля, посочете кои страница клиентът трябва да бъдат пренасочени към когато вляза?"; +$LANG["validation_no_client_password"] = "Моля, въведете паролата на клиента."; +$LANG["validation_no_client_theme_swatch"] = "Моля, изберете по подразбиране мостра за клиентски сметки."; +$LANG["validation_no_client_username"] = "Моля, въведете потребителско име на клиента."; +$LANG["validation_no_column_name"] = "Моля въведете всички имена на колона, или да щракнете върху Smart Fill бутона, за да автоматично да ги напълнят."; +$LANG["validation_no_column_selected"] = "Моля изберете поне едно поле, за да се появи като колона на страницата за подаване на регистрация."; +$LANG["validation_no_custom_from_email"] = "Моля, въведете обичай "От", имейл адрес."; +$LANG["validation_no_custom_recipient_email"] = "Моля, въведете потребителски получателя имейл адрес."; +$LANG["validation_no_custom_reply_to_email"] = "Моля, въведете обичай "за отговор" имейл адрес."; +$LANG["validation_no_date_format"] = "Моля, въведете формата на датата."; +$LANG["validation_no_db_column_single"] = "Моля въведете име на колона база данни."; +$LANG["validation_no_db_hostname"] = "Моля, въведете име на хост база данни."; +$LANG["validation_no_db_name"] = "Моля въведете името на базата данни."; +$LANG["validation_no_db_username"] = "Моля, въведете потребителско име база данни."; +$LANG["validation_no_default_client_theme"] = "Моля, изберете темата по подразбиране за всички нови клиентски профили."; +$LANG["validation_no_default_language"] = "Моля, изберете езика по подразбиране за вашата инсталация на формуляр Инструменти."; +$LANG["validation_no_default_sessions_timeout"] = "Моля, въведете изчакване по подразбиране сесия за потребителски профили."; +$LANG["validation_no_display_text"] = "Моля, въведете текста на дисплея за всяко поле."; +$LANG["validation_no_display_text_single"] = "Моля, въведете показване на текстова стойност."; +$LANG["validation_no_edit_submission_page_label"] = "Моля, въведете Редактиране Подаване етикет страница."; +$LANG["validation_no_email"] = "Моля въведете своя имейл адрес."; +$LANG["validation_no_email_config_field"] = "Моля, посочете кои областта форма е полето за имейл."; +$LANG["validation_no_email_content"] = "Моля, въведете имейл съдържание за най-малко един от форматите (HTML или текст)."; +$LANG["validation_no_email_from_field"] = "Моля имейл "от полето"."; +$LANG["validation_no_email_template_name"] = "Моля, въведете имейл шаблон."; +$LANG["validation_no_email_template_view_id"] = "Моля, изберете Преглед, за които този имейл шаблон да бъдат картографирани."; +$LANG["validation_no_email_template_view_mapping_value"] = "Моля, посочете имейл, когато трябва да бъдат изпратени."; +$LANG["validation_no_enabled_themes"] = "Моля, уверете се, че най-малко една тема е включен."; +$LANG["validation_no_first_name"] = "Моля въведете вашето име."; +$LANG["validation_no_form_field_name"] = "Моля, въведете всички имена областта форма."; +$LANG["validation_no_form_field_single"] = "Моля, въведете стойността на полета от формата."; +$LANG["validation_no_form_id"] = "Формата ID не е уточнена. Моля излезете и опитайте отново."; +$LANG["validation_no_form_name"] = "Моля, въведете името на формата."; +$LANG["validation_no_form_url"] = "Моля, въведете URL форма."; +$LANG["validation_no_last_name"] = "Моля въведете вашето фамилно име."; +$LANG["validation_no_login_page"] = "Моля, посочете коя страница искате да се изпраща всеки път, когато вляза?"; +$LANG["validation_no_logout_url"] = "Моля, въведете URL изход."; +$LANG["validation_no_main_email_recipient"] = "Моля въведете поне един основен получател имейл (т.е. не куб.см или БКК)."; +$LANG["validation_no_menu"] = "Моля, изберете меню за този потребителски акаунт."; +$LANG["validation_no_menu_id"] = "Моля, изберете меню."; +$LANG["validation_no_num_clients_per_page"] = "Моля, въведете номера на клиентските сметки на страница."; +$LANG["validation_no_num_emails_per_page"] = "Моля, въведете номера на имейли до списъка на страница."; +$LANG["validation_no_num_form_fields"] = "Моля, въведете номера на полета за вашата форма."; +$LANG["validation_no_num_forms_per_page"] = "Моля, въведете номера на форми на страница."; +$LANG["validation_no_num_menus_per_page"] = "Моля, въведете номера на менютата към списъка на страница."; +$LANG["validation_no_num_modules_per_page"] = "Моля, въведете номера на модулите на страница."; +$LANG["validation_no_num_option_lists_per_page"] = "Моля, въведете номера на опция списъци на страница."; +$LANG["validation_no_num_submissions_per_page"] = "Моля, въведете номера на заявления за показване на страница."; +$LANG["validation_no_option_list_name"] = "Моля, въведете името на списъка опция."; +$LANG["validation_no_page_titles"] = "Моля, въведете заглавията по подразбиране за потребителски профили."; +$LANG["validation_no_password"] = "Моля, въведете паролата си."; +$LANG["validation_no_program_name"] = "Моля, въведете името на програмата."; +$LANG["validation_no_second_password"] = "Моля, въведете паролата си."; +$LANG["validation_no_sessions_timeout"] = "Моля, въведете изчакване сесия."; +$LANG["validation_no_smart_fill_values"] = "Моля, въведете името на полето форма и URL на формуляра."; +$LANG["validation_no_table_prefix"] = "Моля, въведете префикс на база данни."; +$LANG["validation_no_tabs_defined"] = "Няма дефинирани раздели"; +$LANG["validation_no_test_email_recipient"] = "Моля, въведете имейл адреса, където трябва да изпратят имейл тест."; +$LANG["validation_no_test_email_submission_id"] = "Моля, въведете подаване идентификационен номер."; +$LANG["validation_no_theme"] = "Моля, изберете тема."; +$LANG["validation_no_theme_swatch"] = "Моля изберете мостра за избраната тема."; +$LANG["validation_no_timezone_offset"] = "Моля, въведете компенсира часовата зона."; +$LANG["validation_no_titles"] = "Моля, въведете страница заглавия."; +$LANG["validation_no_two_column_names"] = "За съжаление, не може да влезе в същото име колона база данни два пъти."; +$LANG["validation_no_ui_language"] = "Моля изберете език за интерфейса."; +$LANG["validation_no_url"] = "Моля, въведете URL."; +$LANG["validation_no_username"] = "Моля, въведете вашето потребителско име."; +$LANG["validation_no_username_or_js"] = "Вие трябва да въведете потребителското си име. Моля активирате JavaScript на вашия браузър."; +$LANG["validation_no_view_fields"] = "Вас не съдържа никакви полета! Трябва да зададете поне едно поле, за да има какво да се показват в изгледа."; +$LANG["validation_no_view_fields_selected"] = "Моля изберете една или повече области да добавите към изглед."; +$LANG["validation_no_view_name"] = "Моля, въведете името на вашия изглед."; +$LANG["validation_num_rows_to_add"] = "Моля, въведете номера на редове, за да добавите."; +$LANG["validation_option_list_name_taken"] = "Съжаляваме, но тази опция списък име е вече заето. Моля изберете ново име."; +$LANG["validation_password_in_password_history"] = "От съображения за сигурност, не можете да въведете една и съща парола за всеки от последните {\$history_size}. Моля, въведете различна парола."; +$LANG["validation_passwords_different"] = "Моля, уверете се, че паролите са еднакви."; +$LANG["validation_please_enter_search_date_range"] = "Моля изберете период от време за търсене."; +$LANG["validation_please_enter_search_keyword"] = "Моля, въведете ключова дума за търсене."; +$LANG["validation_select_field_type"] = "Моля изберете тип област."; +$LANG["validation_select_submissions_to_copy"] = "Моля, изберете тези материали, които искате да копирате."; +$LANG["validation_select_submissions_to_delete"] = "Моля изберете тези становища, който искате да изтриете."; +$LANG["validation_smart_fill_cannot_fill"] = "За съжаление, ние не може да се запълни тази област."; +$LANG["validation_smart_fill_invalid_field_type"] = "Ние не успяхме да намерите поле, но той не е падащото меню, отметката или група радиото."; +$LANG["validation_smart_fill_no_field_found"] = "За съжаление, ние не можахме да намерим поле форма с това име на посочената страница."; +$LANG["validation_smart_fill_no_page"] = "Моля, намерете страница, съдържащ областта, която искате да Smart Попълнете."; +$LANG["validation_smart_fill_upload_all_pages"] = "Моля, качи всички страници във формата."; +$LANG["validation_upload_folder_not_writable"] = "Тази временна папка качите определен от вашата инсталация PHP не се записва. Докато това се определя файлове не могат да бъдат качени чрез формуляр Tools (или друга програма, PHP). Моля свържете се с Вашия доставчик на хостинг услуги."; +$LANG["validation_upload_html_files_only"] = "Моля само да качват файлове HTML."; +$LANG["validation_username_taken"] = "За съжаление, това име вече е заето. Моля, въведете друго потребителско име."; +$LANG["validation_wrong_password"] = "Съжалявам, че паролата не съвпадат."; +$LANG["word_about"] = "За"; +$LANG["word_access"] = "Достъп"; +$LANG["word_account"] = "Акаунт"; +$LANG["word_account_sp"] = "Сметката (ите)"; +$LANG["word_accounts"] = "Сметки"; +$LANG["word_action"] = "Действие"; +$LANG["word_active"] = "Активни"; +$LANG["word_add"] = "Добавям"; +$LANG["word_add_rightarrow"] = "Добави »"; +$LANG["word_add_uc_rightarrow"] = "Добави »"; +$LANG["word_administration"] = "Администрация"; +$LANG["word_administrator"] = "Администратор"; +$LANG["word_after"] = "След"; +$LANG["word_aquamarine"] = "Аквамарин"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Автор"; +$LANG["word_author_c"] = "Автор:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«назад"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Преди"; +$LANG["word_benefits"] = "Ползи"; +$LANG["word_blue"] = "Син"; +$LANG["word_cancel"] = "Отказ"; +$LANG["word_cc_c"] = "Копие:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Чеклист"; +$LANG["word_client"] = "Клиент"; +$LANG["word_client_c"] = "Клиент:"; +$LANG["word_clients"] = "Клиенти"; +$LANG["word_close"] = "Затварям"; +$LANG["word_code"] = "Код"; +$LANG["word_column"] = "Колона"; +$LANG["word_columns"] = "Колони"; +$LANG["word_columns_sp"] = "Колона (а)"; +$LANG["word_complete"] = "Пълна"; +$LANG["word_configuration"] = "Конфигурация"; +$LANG["word_content"] = "Съдържание"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Продължи »"; +$LANG["word_copy"] = "копие"; +$LANG["word_custom"] = "Обичай"; +$LANG["word_data"] = "Данни"; +$LANG["word_date"] = "Дата"; +$LANG["word_debugging_c"] = "Отстраняване на грешки:"; +$LANG["word_delete"] = "Изтривам"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Директен"; +$LANG["word_disabled"] = "Увреждания"; +$LANG["word_documentation"] = "Документация"; +$LANG["word_done"] = "Съставено"; +$LANG["word_drawbacks"] = "Недостатъци"; +$LANG["word_dropdown"] = "Падащо"; +$LANG["word_edit"] = "Редактиране"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Имейли"; +$LANG["word_enabled"] = "Е включен"; +$LANG["word_equals"] = "Equals"; +$LANG["word_error"] = "Грешка"; +$LANG["word_error_c"] = "Грешка:"; +$LANG["word_examples_c"] = "Примери:"; +$LANG["word_external"] = "Външни"; +$LANG["word_fail"] = "Резервен"; +$LANG["word_field"] = "Поле"; +$LANG["word_field_sp"] = "Поле (а)"; +$LANG["word_fields"] = "Сфера"; +$LANG["word_fields_sp"] = "Field (и)"; +$LANG["word_file"] = "Картотекирам"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Файлове"; +$LANG["word_filters"] = "Филтри"; +$LANG["word_filters_sp"] = "Filter ()"; +$LANG["word_for"] = "за"; +$LANG["word_form"] = "Форма"; +$LANG["word_form_c"] = "Форма:"; +$LANG["word_formatting"] = "Форматиране"; +$LANG["word_forms"] = "Форми"; +$LANG["word_found"] = "Намерен"; +$LANG["word_from"] = "От"; +$LANG["word_from_c"] = "От:"; +$LANG["word_general"] = "Общ"; +$LANG["word_green"] = "Зелен"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Височина"; +$LANG["word_help"] = "Помощ"; +$LANG["word_hidden"] = "Скрит"; +$LANG["word_highlight"] = "Маркирайте"; +$LANG["word_horizontal"] = "Хоризонтално"; +$LANG["word_hour"] = "Часова"; +$LANG["word_hours"] = "Часове"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Изображение"; +$LANG["word_incomplete"] = "Непълно"; +$LANG["word_install"] = "Инсталиране"; +$LANG["word_installation"] = "Инсталация"; +$LANG["word_internal"] = "Вътрешен"; +$LANG["word_language"] = "Език"; +$LANG["word_large"] = "Голям"; +$LANG["word_like"] = "Сходен"; +$LANG["word_login"] = "Влизам"; +$LANG["word_logo"] = "Лого"; +$LANG["word_logout"] = "Изход"; +$LANG["word_main"] = "Главен"; +$LANG["word_medium"] = "Среден"; +$LANG["word_menu"] = "Меню"; +$LANG["word_menus"] = "Менюта"; +$LANG["word_minutes"] = "минути"; +$LANG["word_misc"] = "Разни"; +$LANG["word_module"] = "Модул"; +$LANG["word_modules"] = "Модули"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Име"; +$LANG["word_name_c"] = "Име:"; +$LANG["word_never"] = "Никога"; +$LANG["word_next_rightarrow"] = "следваща »"; +$LANG["word_next_step_rightarrow"] = "Следваща стъпка »"; +$LANG["word_no"] = "Не"; +$LANG["word_none"] = "Никой"; +$LANG["word_notes"] = "Отбелязва"; +$LANG["word_notification"] = "Уведомяване"; +$LANG["word_number"] = "Брой"; +$LANG["word_off"] = "Отдалечаване"; +$LANG["word_offline"] = "Офлайн"; +$LANG["word_okay"] = "Добре"; +$LANG["word_on"] = "На"; +$LANG["word_online"] = "Онлайн"; +$LANG["word_operator"] = "Оператор"; +$LANG["word_options"] = "Опции"; +$LANG["word_orange"] = "Портокал"; +$LANG["word_order"] = "Ред"; +$LANG["word_other"] = "Друг"; +$LANG["word_other_c"] = "Други:"; +$LANG["word_page"] = "Страница"; +$LANG["word_page_c"] = "Страница:"; +$LANG["word_pass"] = "Проход"; +$LANG["word_password"] = "Парола"; +$LANG["word_password_c"] = "Парола:"; +$LANG["word_pending"] = "Висящ"; +$LANG["word_permissions"] = "Разрешения"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«назад"; +$LANG["word_private"] = "Частни"; +$LANG["word_public"] = "Обществени"; +$LANG["word_purple"] = "Пурпурен"; +$LANG["word_recipient"] = "Получател"; +$LANG["word_recipient_sp"] = "Получател (и)"; +$LANG["word_red"] = "Червен"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Махам"; +$LANG["word_remove_uc_leftarrow"] = "«отстрани"; +$LANG["word_reply_to"] = "Отговори на"; +$LANG["word_reply_to_c"] = "Отговор на:"; +$LANG["word_required"] = "Задължително"; +$LANG["word_reset"] = "Проучване"; +$LANG["word_resolved"] = "Решени"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "ред"; +$LANG["word_search"] = "Търся"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Изберете"; +$LANG["word_setting"] = "Настройка"; +$LANG["word_settings"] = "Настройки"; +$LANG["word_show"] = "Показвам"; +$LANG["word_size"] = "Размер"; +$LANG["word_skipped"] = "Пропуска се"; +$LANG["word_small"] = "Малък"; +$LANG["word_solution"] = "Решение"; +$LANG["word_sortable"] = "Сортиране"; +$LANG["word_start"] = "Начало"; +$LANG["word_status"] = "Състояние"; +$LANG["word_string"] = "Низ"; +$LANG["word_subject"] = "Предмет"; +$LANG["word_subject_c"] = "Предмет"; +$LANG["word_submenu"] = "Подменю"; +$LANG["word_submission"] = "Представяне"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "Система"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (а)"; +$LANG["word_test"] = "Тест"; +$LANG["word_text"] = "Текст"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Тема"; +$LANG["word_themes"] = "Теми"; +$LANG["word_time"] = "Време"; +$LANG["word_tiny"] = "Мъничък"; +$LANG["word_tips"] = "Съвети"; +$LANG["word_today"] = "Днес"; +$LANG["word_truncate_q"] = "Отрежете?"; +$LANG["word_uninstall"] = "Деинсталирайте"; +$LANG["word_unknown"] = "Неизвестен"; +$LANG["word_update"] = "Актуализирам"; +$LANG["word_upgrade"] = "Ъпгрейд"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Потребителски"; +$LANG["word_username"] = "Потребителско име"; +$LANG["word_username_c"] = "Потребителско име:"; +$LANG["word_validation"] = "Утвърждаване"; +$LANG["word_value"] = "Стойност"; +$LANG["word_value_sp"] = "Стойност (а)"; +$LANG["word_verified"] = "Проверен"; +$LANG["word_verify"] = "Уверете се,"; +$LANG["word_version"] = "Версия"; +$LANG["word_vertical"] = "Вертикална"; +$LANG["word_view"] = "Гледам"; +$LANG["word_views"] = "Прегледи"; +$LANG["word_warning"] = "Внимание!"; +$LANG["word_warning_c"] = "Предупреждение:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Добре дошли!"; +$LANG["word_width_c"] = "ширина:"; +$LANG["word_words"] = "Думи"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Жълт"; +$LANG["word_yes"] = "Да"; \ No newline at end of file diff --git a/global/lang/ca.php b/global/lang/ca.php new file mode 100644 index 00000000..b79296ea --- /dev/null +++ b/global/lang/ca.php @@ -0,0 +1,1219 @@ +Advertència! Heu triat {\$num_selected_on_page} presentacions en aquesta pàgina i {\$num_selected_on_other_pages} en altres pàgines. Si us plau, escolliu una de les següents opcions:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Atenció! No heu seleccionat cap presentació en aquesta pàgina, però que ha seleccionat {\$num_selected_on_other_pages} en altres pàgines. Confirmeu que voleu eliminar aquestes presentacions.
    "; +$LANG["confirm_delete_view"] = "Estàs segur que vols eliminar aquesta opinió?"; +$LANG["confirm_refresh_page"] = "¿Està vostè segur que vol actualitzar la pàgina? Això es perden tots els canvis que ha realitzat."; +$LANG["confirm_save_change_before_redirect"] = "Un o més camps s'han actualitzat. Voleu desar els canvis abans de redirigir?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Estàs segur que voleu Smart Ompliu la base de dades de noms de columna? Això sobreescriurà els valors existents."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Aquesta opció genera automàticament els noms de columna de base de dades basant-se en els camps de visualització de text, de manera que el contingut de la taula de base de dades són més fàcils de llegir."; +$LANG["confirm_smart_fill_display_names"] = "Estàs segur que voleu Smart Ompliu els noms de pantalla? Això sobreescriurà els valors existents."; +$LANG["confirm_ungroup_option_list"] = "Esteu segur que voleu desagrupar aquesta llista d'opcions? Totes les opcions s'agrupen en una sola llista, no agrupades."; +$LANG["confirm_uninstall_module"] = "Estàs segur que voleu desinstal lar aquest mòdul? Totes les dades del mòdul es perdran."; +$LANG["date_AM"] = "PM"; +$LANG["date_Fri"] = "Dv"; +$LANG["date_Friday"] = "Divendres"; +$LANG["date_Mon"] = "Dl."; +$LANG["date_Monday"] = "Dilluns"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Ds"; +$LANG["date_Saturday"] = "Dissabte"; +$LANG["date_Sun"] = "Sol"; +$LANG["date_Sunday"] = "Diumenge"; +$LANG["date_Thu"] = "Dj"; +$LANG["date_Thursday"] = "Dijous"; +$LANG["date_Tue"] = "Mar"; +$LANG["date_Tuesday"] = "Dimarts"; +$LANG["date_Wed"] = "Dc"; +$LANG["date_Wednesday"] = "Dimecres"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Abril"; +$LANG["date_month_August"] = "Agost"; +$LANG["date_month_December"] = "Desembre"; +$LANG["date_month_February"] = "Febrer"; +$LANG["date_month_January"] = "Gener"; +$LANG["date_month_July"] = "Juliol"; +$LANG["date_month_June"] = "Juny"; +$LANG["date_month_March"] = "Març"; +$LANG["date_month_May"] = "Maig"; +$LANG["date_month_November"] = "Novembre"; +$LANG["date_month_October"] = "Octubre"; +$LANG["date_month_September"] = "Setembre"; +$LANG["date_month_short_Apr"] = "Abril"; +$LANG["date_month_short_Aug"] = "Agost"; +$LANG["date_month_short_Dec"] = "Desembre"; +$LANG["date_month_short_Feb"] = "Febrer"; +$LANG["date_month_short_Jan"] = "Gen"; +$LANG["date_month_short_Jul"] = "Juliol"; +$LANG["date_month_short_Jun"] = "Juny"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Maig"; +$LANG["date_month_short_Nov"] = "Novembre"; +$LANG["date_month_short_Oct"] = "Octubre"; +$LANG["date_month_short_Sep"] = "Setembre"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "El compte d'usuari ha estat esborrat."; +$LANG["notify_account_updated"] = "El vostre compte s'ha actualitzat correctament."; +$LANG["notify_add_display_values"] = "Afegir Mostra Valors"; +$LANG["notify_admin_menu_updated"] = "El menú d'administració ha estat actualitzat."; +$LANG["notify_admin_theme_overridden"] = "El tema de l'administrador ha estat manualment."; +$LANG["notify_allow_url_fopen_not_set"] = "Ho sentim, aquesta prova no es pot executar en el seu servidor web. Es requereix allow_url_fopen que s'estableix en 1 en la seva fitxer php.ini. Aquesta configuració permet a PHP per accedir a fitxers a través d'una URL, que és necessària per executar aquesta prova. Vostè pot provar de forma manual mitjançant la pujada d'un arxiu a la carpeta via FTP, a continuació, tractar d'accedir-hi a l'adreça que hagi proporcionat."; +$LANG["notify_change_temp_password"] = "Vostè acaba d'iniciar sessió amb una contrasenya temporal. Heu de reiniciar la vostra contrasenya ara!"; +$LANG["notify_click_to_edit_new_submission"] = "Feu clic aquí per editar la nova presentació."; +$LANG["notify_client_account_menus_updated"] = "El compte de client (s) han estat actualitzats els US {\$menu_name} menú. Ara pot eliminar el menú que va ser prèviament associada amb el compte (s)."; +$LANG["notify_client_account_not_updated"] = "El compte del client no pot ser actualitzat."; +$LANG["notify_client_account_themes_updated"] = "El compte de client (s) han estat actualitzats els US {\$theme} tema. Ara pot desactivar el tema prèviament associats amb el compte (s)."; +$LANG["notify_client_account_updated"] = "El compte de client s'ha actualitzat correctament."; +$LANG["notify_client_menu_deleted"] = "El menú del client s'ha eliminat."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "El menú ha estat eliminat, però els comptes de client següents ja no tenen un menú! Cal actualitzar les següents comptes:"; +$LANG["notify_client_menu_updated"] = "El menú del client ha estat actualitzat."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Ho sentim, el menú que només va tractar d'esborrar ja està sent utilitzat pels clients esmentats a continuació. Per tal d'eliminar el menú que primer haurà d'assignar als clients a altres menús. Feu clic al nom del client per modificar aquest compte individual, o assignar tots els comptes a un menú diferent utilitzant el menú desplegable a continuació."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Ho sentim, un dels temes que acaba de discapacitats ja estan sent utilitzats pels comptes de client següent. Per tal de desactivar el tema que primer haurà d'assignar a cada client a un altre tema. Feu clic al nom del client per modificar aquest compte individual, o assignar tots els comptes a un tema usant el menú desplegable a continuació."; +$LANG["notify_edit_email_fields_link"] = "Feu clic aquí per especificar els camps del formulari són camps de correu electrònic, perquè pugui atacar a les seves plantilles de correu electrònic."; +$LANG["notify_edit_field_new_field"] = "Aquest és un nou camp. Vostè haurà de actualitzar la pàgina principal, abans de poder editar completament aquest camp."; +$LANG["notify_edit_option_list_after_save"] = "Heu de seleccionar una llista d'opcions i després a Desa els canvis abans de poder editar-lo."; +$LANG["notify_email_field_config_deleted"] = "La configuració de correu electrònic s'ha eliminat."; +$LANG["notify_email_fields_not_updated"] = "Ho sentim, no hem pogut actualitzar els camps de correu electrònic."; +$LANG["notify_email_fields_updated"] = "Els camps de correu electrònic han estat actualitzats."; +$LANG["notify_email_not_sent"] = "Ho sentim, el correu no va poder ser enviat. Poseu-vos en contacte amb l'administrador del lloc en la direcció avall."; +$LANG["notify_email_not_sent_c"] = "Ho sentim, el correu electrònic no s'ha pogut enviar:"; +$LANG["notify_email_sent"] = "El correu electrònic (s) han estat enviats."; +$LANG["notify_email_template_deleted"] = "La plantilla de correu electrònic s'ha eliminat."; +$LANG["notify_email_template_updated"] = "La plantilla de correu electrònic ha estat actualitzat."; +$LANG["notify_enabled_module_list_updated"] = "La llista dels mòduls permès ha estat actualitzat."; +$LANG["notify_error_saving_fields"] = "Hi va haver un error guardant els camps."; +$LANG["notify_field_changes_saved"] = "Els canvis en el camp (s) s'han salvat."; +$LANG["notify_field_options_smart_filled"] = "Les opcions de camp han estat intel ligents farciment."; +$LANG["notify_field_selected"] = "El camp ha estat seleccionat. Feu clic aquí per tornar a la llista de camps principals."; +$LANG["notify_field_updated"] = "Aquest camp ha estat actualitzat."; +$LANG["notify_file_not_uploaded"] = "El fitxer no pot ser carregat."; +$LANG["notify_file_uploaded"] = "El fitxer s'ha carregat."; +$LANG["notify_filters_not_updated"] = "Hi va haver un error de l'actualització dels filtres de presentació d'aquest client."; +$LANG["notify_filters_updated"] = "Els filtres de presentació han estat actualitzats per a aquest client."; +$LANG["notify_folder_correct_permissions"] = "Aquesta carpeta té els permisos correctes."; +$LANG["notify_folder_url_match"] = "La carpeta i l'URL sembla que concordin."; +$LANG["notify_folder_url_no_access"] = "Aquesta prova no va poder realitzar-se, a partir de PHP no va poder accedir a aquesta URL. Això acostuma per la URL de contrasenya protegida amb un arxiu. Htaccess."; +$LANG["notify_folder_url_no_match"] = "Aquesta carpeta combinació d'URL no sembla ser una coincidència."; +$LANG["notify_folder_url_unknown_error"] = "S'ha produït un error desconegut. Vostè pot provar de forma manual mitjançant la pujada d'un arxiu a la carpeta via FTP, a continuació, tractar d'accedir-hi a l'adreça que hagi proporcionat."; +$LANG["notify_form_access_type_email_info"] = "Aquest formulari té el tipus d'accés d'administrador, de manera que no hi ha més clients tenen accés a ella i no s'enumeren en el següent menú desplegable."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Ho sentim, no una forma amb que el disseny intel ligent no existeix."; +$LANG["notify_form_field_not_added"] = "El camp de formulari '{\$fieldname}' No es pot afegir."; +$LANG["notify_form_field_options_updated"] = "Les opcions de camp de formulari s'han actualitzat."; +$LANG["notify_form_field_removed"] = "El camp de formulari s'ha eliminat correctament."; +$LANG["notify_form_fields_removed"] = "Els camps de formulari s'ha eliminat correctament."; +$LANG["notify_form_not_updated_notify_admin"] = "La seva forma no podria ser actualitzat. Poseu-vos en contacte amb l'administrador del lloc per informar d'aquest problema."; +$LANG["notify_form_settings_updated"] = "La configuració de la manera s'han actualitzat amb èxit."; +$LANG["notify_form_submission_updated"] = "L'enviament del formulari s'ha actualitzat."; +$LANG["notify_form_tabs_updated"] = "Les fitxes han estat actualitzats."; +$LANG["notify_form_updated"] = "El formulari s'ha actualitzat correctament."; +$LANG["notify_form_views_updated"] = "Els punts de vista manera s'han actualitzat."; +$LANG["notify_install_invalid_db_info"] = "Ho sentim, no hem pogut connectar amb la base de dades amb la informació que subministra. El missatge d'error de la base de dades retornat és: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "El seu formulari ha estat creat! Vostè pot configurar la seva forma a través d'aquestes fitxes."; +$LANG["notify_invalid_account_information_in_sessions"] = "La informació de compte emmagatzemada en les sessions no és vàlid. Registreu-vos-ho més endavant."; +$LANG["notify_invalid_license_key"] = "Ho sento, això no sembla ser una clau de llicència vàlida. Si us plau, intenteu ingressar de nou."; +$LANG["notify_invalid_permissions"] = "Vostè no té els permisos per accedir a aquesta pàgina. Se li ha tancat la sessió."; +$LANG["notify_invalid_search_dates"] = "Si us plau, utilitzeu el selector de dates per entrar en una data vàlida o dates."; +$LANG["notify_invalid_upload_folder"] = "La carpeta de càrrega no és vàlida o no pot escriure."; +$LANG["notify_lang_list_updated"] = "La llista d'idiomes disponibles d'interfície d'usuari ha estat actualitzat."; +$LANG["notify_login_info_emailed"] = "El seu inici de sessió ha estat enviat per correu electrònic."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Vaja, aquest mòdul ja està instal lat!"; +$LANG["notify_module_installed"] = "El mòdul ha estat instal lat. Feu clic aquí per seleccionar el mòdul."; +$LANG["notify_module_list_updated"] = "La llista de mòduls s'ha actualitzat."; +$LANG["notify_module_uninstalled"] = "El mòdul ha estat desinstal."; +$LANG["notify_module_updated"] = "El mòdul {\$module} ha estat actualitzada a {\$version}. Feu clic aquí per seleccionar el mòdul ."; +$LANG["notify_multi_field_selected"] = "El camp ha estat seleccionat. Feu clic aquí per veure i editar les opcions de camp."; +$LANG["notify_multi_field_updated"] = "Aquest camp ha estat actualitzat. Vostè podrà configurar les opcions de camp després de la creació de la forma."; +$LANG["notify_multiple_fields_found"] = "Múltiples elements es van trobar amb aquest nom de camp ({\$field_name}). Això pot passar si la pàgina conté més d'una forma o si accidentalment nomenat com un dels seus formularis, el mateix que un altre. Si us plau, triï el que vulgui de la llista a continuació."; +$LANG["notify_new_default_view_created"] = "Una nova visió, defecte que conté tots els camps del formulari s'ha creat."; +$LANG["notify_new_submission_created"] = "La presentació s'ha creat. Podeu canviar més endavant."; +$LANG["notify_no_account_id_in_sessions"] = "ID del compte d'usuari no va ser trobat en les sessions. Registreu-vos-ho més endavant."; +$LANG["notify_no_api_installed"] = "Vostè no té instal.lada l'API"; +$LANG["notify_no_client_permissions"] = "No hi ha ajustaments disponibles per editar."; +$LANG["notify_no_email_template_selected"] = "Si us plau, seleccioneu la plantilla."; +$LANG["notify_no_emails_defined"] = "No hi ha missatges de correu electrònic s'han definit per a aquest formulari. Per afegir un de nou, feu clic al botó de sota."; +$LANG["notify_no_field_settings"] = "Aquest tipus de camp no conté cap configuració addicional."; +$LANG["notify_no_fields_in_tab"] = "Aquesta fitxa no conté cap camp."; +$LANG["notify_no_option_lists"] = "No hi ha opció de llistes definides. Feu clic al botó de sota per crear una nova."; +$LANG["notify_no_test_submission"] = "Formulari d'eines no ha rebut una petició de prova amb èxit encara."; +$LANG["notify_no_user_email_fields_configured"] = "Nota: Si vol enviar un correu electrònic a qualsevol adreça de correu electrònic que va ser inclòs en el formulari, primer ha de configurar els camps del formulari de correu electrònic."; +$LANG["notify_no_views"] = "La seva forma no té cap Vistes creat! Vostè necessitarà almenys una vista per tal de gestionar les dades del formulari."; +$LANG["notify_no_views_assigned_to_client_form"] = "Sembla que al teu compte d'usuari no s'ha assignat als punts de vista manera, pel que no serà capaç de veure les dades. Poseu-vos en contacte amb l'administrador per obtenir més ajuda."; +$LANG["notify_no_views_defined"] = "No té els punts de vista definit. No serà capaç de veure les presentacions d'aquest formulari a menys que una vista es crea. Feu clic al botó de sota per crear la vista per defecte."; +$LANG["notify_option_list_deleted"] = "La llista d'opcions s'ha eliminat."; +$LANG["notify_option_list_updated"] = "La llista d'opcions s'ha actualitzat."; +$LANG["notify_public_form_omit_list_updated"] = "El client d'ometre la llista d'aquesta manera ha estat actualitzada."; +$LANG["notify_public_view_omit_list_updated"] = "El client d'ometre la llista per aquesta vista ha estat actualitzat."; +$LANG["notify_required_admin_pages"] = "A les pàgines següents es requereixen en el menú de l'administrador: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Ho sentim, no hi va haver cap activitat per un temps així que vam haver de sortiria. Registreu-vos-ho més endavant."; +$LANG["notify_setup_options_updated"] = "Les opcions de configuració han estat actualitzats."; +$LANG["notify_smart_fill_field_not_found"] = "No hem pogut trobar un camp amb aquest nom ({\$field_name}) en la forma (s) especificat. Podeu establir manualment el tipus de camp de sota, o feu clic al botó Anar a editar aquest camp més tard."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "El seu fitxer (s) s'han pujat correctament. Intenta fer clic al botó Smart Fill per intentar-ho de nou. Si aquest pas no haurà de saltar aquest pas i configurar els seus camps de formulari manally més tard."; +$LANG["notify_smart_fill_submitted"] = "El formulari ha estat enviat. Depenent de la mida de la seva forma i el nombre d'opcions de camp, això pot portar el seu temps."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Ho sentim, un o més dels arxius que has introduït no va poder pujar. Vostè haurà de saltar aquest pas i configurar els camps manualment."; +$LANG["notify_submission_and_files_deleted"] = "La petició i qualsevol fitxer (s) associats a ell s'han suprimit amb èxit."; +$LANG["notify_submission_copied"] = "S'ha copiat l'enviament."; +$LANG["notify_submission_copied_edit"] = "S'ha copiat l'enviament. Podeu editar-la a continuació."; +$LANG["notify_submission_deleted"] = "La presentació s'ha eliminat amb èxit."; +$LANG["notify_submission_deleted_with_problems"] = "La presentació s'ha eliminat, però els problemes següents quan s'intenta eliminar el següent fitxer (s):"; +$LANG["notify_submission_id_not_found"] = "La presentació d'identificació no va ser trobada."; +$LANG["notify_submission_not_updated"] = "La presentació no va poder ser actualitzat."; +$LANG["notify_submissions_and_files_deleted"] = "Les presentacions i qualsevol fitxer (s) associats a ells s'han suprimit amb èxit."; +$LANG["notify_submissions_copied"] = "S'han copiat {\$num_submissions} enviaments."; +$LANG["notify_submissions_deleted"] = "Les presentacions s'han suprimit amb èxit."; +$LANG["notify_submissions_deleted_with_problems"] = "Les presentacions s'han suprimit, però els problemes següents quan s'intenta eliminar el següent fitxer (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "El seu correu electrònic de prova no va poder ser enviat."; +$LANG["notify_theme_cache_folder_not_writable"] = "Carpeta de memòria cau Aquest tema no es pot escriure. Per tal que aquest tema, el {\$folder} carpeta necessita haver llegit complet de permisos d'escriptura."; +$LANG["notify_theme_list_updated"] = "La llista de tema ha estat actualitzat."; +$LANG["notify_themes_settings_updated"] = "La configuració de tema han estat actualitzats."; +$LANG["notify_view_deleted"] = "La vista ha estat esborrat."; +$LANG["notify_view_group_deleted"] = "El grup de Vista s'ha eliminat."; +$LANG["notify_view_missing_columns"] = "Oops! Ho sentim, aquesta visió no ha estat establert encara."; +$LANG["notify_view_missing_columns_admin_fix"] = "Feu clic aquí per especificar els camps que han d'aparèixer en forma de columnes en aquesta pàgina."; +$LANG["notify_view_updated"] = "La vista ha estat actualitzat."; +$LANG["notify_your_email_sent"] = "El teu mail ha estat enviat amb èxit."; +$LANG["phrase_100_per_page"] = "100 per pàgina"; +$LANG["phrase_10_per_page"] = "10 per pàgina"; +$LANG["phrase_15_per_page"] = "15 per pàgina"; +$LANG["phrase_1_direct"] = "1. Directe"; +$LANG["phrase_1char"] = "1 caràcter"; +$LANG["phrase_20_per_page"] = "20 per pàgina"; +$LANG["phrase_25_per_page"] = "25 per pàgina"; +$LANG["phrase_2_code"] = "2. Codi"; +$LANG["phrase_2_columns"] = "2 columnes"; +$LANG["phrase_2chars"] = "2 caràcters"; +$LANG["phrase_3_columns"] = "3 columnes"; +$LANG["phrase_4_columns"] = "4 Columnes"; +$LANG["phrase_50_per_page"] = "50 per pàgina"; +$LANG["phrase_accepting_submissions"] = "(comunicacions acceptar)"; +$LANG["phrase_access_admin_account_c"] = "Podeu accedir al vostre compte d'administració d'aquí:"; +$LANG["phrase_access_type"] = "Tipus d'accés"; +$LANG["phrase_account_info"] = "Dades del compte"; +$LANG["phrase_account_settings"] = "Configuració del compte"; +$LANG["phrase_action_needed"] = "Accions necessàries"; +$LANG["phrase_add_client"] = "Afegir client"; +$LANG["phrase_add_client_menu"] = "Afegir Client Menú"; +$LANG["phrase_add_default_settings_rightarrow"] = "Afegeix la configuració per defecte »"; +$LANG["phrase_add_field"] = "Afegir camp"; +$LANG["phrase_add_fields"] = "Afegir camps"; +$LANG["phrase_add_fields_rightarrow"] = "Afegeix camp (s) »"; +$LANG["phrase_add_form"] = "Afegeix formulari"; +$LANG["phrase_add_form_external"] = "Afegeix formulari - externa"; +$LANG["phrase_add_form_internal"] = "Afegeix formulari - interna"; +$LANG["phrase_add_new_group_rightarrow"] = "Afegeix nou grup »"; +$LANG["phrase_add_num_rows"] = "Afegir {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Afegir fila »"; +$LANG["phrase_add_submission_button"] = "Afegir botó d'enviament"; +$LANG["phrase_add_view_rightarrow"] = "Afegir Veure »"; +$LANG["phrase_adding_multi_page_form"] = "Addició d'un formulari de diverses pàgines amb l'API de"; +$LANG["phrase_adding_single_page_form"] = "Addició d'un únic formulari d'una pàgina amb l'API de"; +$LANG["phrase_admin_menu"] = "Administrador d'Menú"; +$LANG["phrase_admin_only"] = "Només l'administrador"; +$LANG["phrase_admin_panel"] = "Panell d'Administració"; +$LANG["phrase_administrator_theme"] = "Administrador del Tema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Configuració avançada »"; +$LANG["phrase_all_X_results_selected"] = "Tots els {\$numresults} resultats seleccionats"; +$LANG["phrase_all_clients"] = "Tots els clients"; +$LANG["phrase_all_clients_except_c"] = "Tots els clients, excepte:"; +$LANG["phrase_all_clients_have_access"] = "(tots els clients tenen accés)"; +$LANG["phrase_all_fields"] = "Tots els camps"; +$LANG["phrase_all_fields_displayed"] = "Tots els camps es mostren"; +$LANG["phrase_all_statuses"] = "Tots els estats"; +$LANG["phrase_all_submissions"] = "Totes les presentacions"; +$LANG["phrase_allow_fields_edited"] = "Permetre que els camps a ser editat"; +$LANG["phrase_alphanumeric"] = "Alfanumèrics (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Aplicar desplaçament de zona horària"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Assignar tots els comptes de clients que figuren a {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Assignar tots els comptes de clients que figuren a {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "En la fi del"; +$LANG["phrase_at_start"] = "A l'inici"; +$LANG["phrase_author_link"] = "Autor Enllaç"; +$LANG["phrase_auto_disable_account"] = "compte d'Auto-després de desactivar els intents fallits d'entrada #"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Clients disponibles"; +$LANG["phrase_available_fields"] = "Camps disponibles"; +$LANG["phrase_available_option_lists"] = "Llistes disponibles Opció"; +$LANG["phrase_available_swatches"] = "Mostres disponibles"; +$LANG["phrase_available_swatches_c"] = "Mostres disponibles:"; +$LANG["phrase_available_tabs"] = "Disponible aquí"; +$LANG["phrase_available_views"] = "Vistes disponibles"; +$LANG["phrase_awaiting_form_submission"] = "A l'espera d'enviament del formulari."; +$LANG["phrase_back_to_field_list"] = "«Tornar a la llista de camps"; +$LANG["phrase_back_to_search_results"] = "Tornar als resultats de cerca"; +$LANG["phrase_base_view_on"] = "Base Veure en el ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Canviar Nom de la Informació"; +$LANG["phrase_characters_limit_p"] = "personatges límit."; +$LANG["phrase_check_db_settings_try_again"] = "Comproveu la configuració de base de dades i feu clic a Continua de nou."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Comproveu URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Netejar"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Esborrar llista Evita"; +$LANG["phrase_client_account_settings"] = "Configuració del compte de client"; +$LANG["phrase_client_field"] = "Client de Camp"; +$LANG["phrase_client_map_filters"] = "Mapa del client Filtres »"; +$LANG["phrase_client_may_edit"] = "El Client pot editar"; +$LANG["phrase_client_menu"] = "Menú de Clients"; +$LANG["phrase_clients_can_access_form"] = "Els clients que poden accedir al mòdul de"; +$LANG["phrase_clients_can_access_view"] = "Els clients que poden accedir a la vista"; +$LANG["phrase_clients_cannot_access_form"] = "Els clients que no poden accedir al mòdul de"; +$LANG["phrase_clients_cannot_access_view"] = "Els clients que no poden accedir a la vista"; +$LANG["phrase_clients_may_edit"] = "Els clients poden editar"; +$LANG["phrase_code_c"] = "Codi d'error:"; +$LANG["phrase_code_markup_field"] = "Codi / HTML del camp"; +$LANG["phrase_code_markup_type"] = "Codi / Tipus de marcat"; +$LANG["phrase_codes_c"] = "Els codis d'error:"; +$LANG["phrase_column_width"] = "Ample de columna"; +$LANG["phrase_company_name"] = "Nom de l'empresa"; +$LANG["phrase_configure_form_email_fields"] = "Configurar el correu electrònic de formulari Camps"; +$LANG["phrase_confirm_folder_url_match"] = "Confirmar la direcció del partit-Folder"; +$LANG["phrase_connect_rows"] = "Connecteu files"; +$LANG["phrase_copy_email_settings_from"] = "Copiar Configuració del correu electrònic de ..."; +$LANG["phrase_copy_settings_from"] = "Configuració de còpia de ..."; +$LANG["phrase_core_fields"] = "Core Camps"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Crear un compte"; +$LANG["phrase_create_admin_account"] = "Vols donar-te d'administrador"; +$LANG["phrase_create_config_file"] = "Crear un fitxer de configuració"; +$LANG["phrase_create_database_tables"] = "Crear base de dades de la taula"; +$LANG["phrase_create_default_view"] = "Crear vista per defecte"; +$LANG["phrase_create_file"] = "Crea un fitxer"; +$LANG["phrase_create_group"] = "Crear un grup"; +$LANG["phrase_create_new_email"] = "Crear un nou correu electrònic"; +$LANG["phrase_create_new_menu"] = "Crear un nou menú"; +$LANG["phrase_create_new_option_list"] = "Crear Llista Nova Opció"; +$LANG["phrase_create_new_option_list_group"] = "Crear nou grup de la llista d'opcions"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Crear Llista Nova Opció »"; +$LANG["phrase_create_new_view"] = "Crear Nova Vista"; +$LANG["phrase_create_new_view_group"] = "Crear un nou Grup de Vista"; +$LANG["phrase_custom_display_format"] = "Format de presentació personalitzat"; +$LANG["phrase_custom_recipient"] = "Destinataris personalitzats"; +$LANG["phrase_custom_url"] = "URL personalitzada"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Tipus de dades"; +$LANG["phrase_database_hostname"] = "Nom de host de base de dades"; +$LANG["phrase_database_name"] = "Nom de base de dades"; +$LANG["phrase_database_password"] = "Contrasenya de base de dades"; +$LANG["phrase_database_settings"] = "Configuració de base de dades"; +$LANG["phrase_database_setup"] = "Base de dades de configuració"; +$LANG["phrase_database_table_prefix"] = "Prefix de taula de base de dades"; +$LANG["phrase_database_username"] = "Nom d'usuari de base de dades"; +$LANG["phrase_date_format"] = "Format de la data"; +$LANG["phrase_db_column"] = "PP Columna"; +$LANG["phrase_db_setup_page_4"] = "4. Base de dades de configuració"; +$LANG["phrase_default_client_account_theme"] = "Compte Client Tema per defecte"; +$LANG["phrase_default_date_field_search_value"] = "Data defecte camp de recerca de valor"; +$LANG["phrase_default_language"] = "Idioma per defecte"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Temps d'espera de sessió predeterminat"; +$LANG["phrase_default_sort_order"] = "Ordre predeterminat"; +$LANG["phrase_default_tab_label"] = "Dades"; +$LANG["phrase_default_theme"] = "Tema per defecte"; +$LANG["phrase_default_value"] = "El valor per defecte"; +$LANG["phrase_default_values"] = "Els valors per defecte"; +$LANG["phrase_default_values_new_submissions"] = "Els valors per defecte per les noves presentacions"; +$LANG["phrase_delete_field"] = "Eliminar camp"; +$LANG["phrase_delete_form"] = "Esborrar formulari"; +$LANG["phrase_delete_row"] = "Eliminar fila"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Suprimeix els fitxers associats a l'eliminar la presentació"; +$LANG["phrase_delete_view"] = "Eliminar vista"; +$LANG["phrase_disconnect_rows"] = "Desconnecteu files"; +$LANG["phrase_display_email"] = "Mostra correu electrònic"; +$LANG["phrase_display_name"] = "Nom per mostrar"; +$LANG["phrase_display_text"] = "Pantalla de text"; +$LANG["phrase_display_value"] = "Indicació del valor de"; +$LANG["phrase_edit_admin_menu"] = "Edita Menú d'Administració"; +$LANG["phrase_edit_client"] = "Editar client"; +$LANG["phrase_edit_client_menu"] = "Menú Editar client"; +$LANG["phrase_edit_email_template"] = "Editar Plantilla de correu electrònic"; +$LANG["phrase_edit_field"] = "Camp d'edició"; +$LANG["phrase_edit_field_c"] = "Edita camp:"; +$LANG["phrase_edit_form"] = "Formulari d'edició"; +$LANG["phrase_edit_form_access_type_b"] = "[Edita tipus de formulari d'accés]"; +$LANG["phrase_edit_option_list"] = "Edita la llista d'opcions"; +$LANG["phrase_edit_submission"] = "Edita Presentació"; +$LANG["phrase_edit_submission_label"] = "Edita etiquetes Presentació"; +$LANG["phrase_edit_view"] = "Vista d'edició"; +$LANG["phrase_email_format"] = "Format de correu electrònic"; +$LANG["phrase_email_settings"] = "Configuració del correu electrònic"; +$LANG["phrase_email_template"] = "Plantilla de correu electrònic"; +$LANG["phrase_email_template_name"] = "Enviar nom de la plantilla"; +$LANG["phrase_error_learn_more"] = "Més informació sobre aquest error."; +$LANG["phrase_error_text_intro"] = "Corregiu l'error següent (s) i torneu a enviar:"; +$LANG["phrase_errors_learn_more"] = "Feu clic sobre els codis d'error per a més informació."; +$LANG["phrase_event_trigger"] = "Esdeveniment de tir"; +$LANG["phrase_external_form"] = "De forma Extern"; +$LANG["phrase_external_form_info"] = "Informació de forma Extern"; +$LANG["phrase_external_your_own_form"] = "Extern (el seu propi)"; +$LANG["phrase_field_comments"] = "Comentaris de camp"; +$LANG["phrase_field_label"] = "Camp d'etiqueta"; +$LANG["phrase_field_options"] = "Opcions de camp"; +$LANG["phrase_field_size"] = "Mida del camp"; +$LANG["phrase_field_skipped"] = "Camp s'ha aturat"; +$LANG["phrase_field_specific_settings"] = "Camp de valors específics"; +$LANG["phrase_field_type"] = "Tipus de Camp"; +$LANG["phrase_field_type_no_validation"] = "No hi ha regles de validació per aquest tipus de camp."; +$LANG["phrase_field_types"] = "Tipus de camp"; +$LANG["phrase_field_value"] = "Camp Valor"; +$LANG["phrase_field_values_to_display_values"] = "Camp Valors »Mostra Valors"; +$LANG["phrase_final_touches_page_6"] = "6. Retocs finals"; +$LANG["phrase_finalize_form"] = "Finalitzar Forma"; +$LANG["phrase_first_name"] = "Nom"; +$LANG["phrase_footer_text"] = "Peu de pàgina de text"; +$LANG["phrase_for_any_form_submission"] = "Per a qualsevol formulari de presentació de"; +$LANG["phrase_for_view_submissions"] = "Només presentacions que s'ajusten a la vista del següent (s)"; +$LANG["phrase_forgot_password"] = "Has oblidat la contrasenya?"; +$LANG["phrase_form_already_selected"] = "Forma ja seleccionats"; +$LANG["phrase_form_email_field_b_c"] = "[Formulari] correu electrònic sobre el terreny:"; +$LANG["phrase_form_email_field_configuration"] = "Formulari de correu electrònic camp de configuració"; +$LANG["phrase_form_email_fields"] = "Camps de formulari de correu electrònic"; +$LANG["phrase_form_field"] = "Camp de formulari"; +$LANG["phrase_form_field_contents"] = "Contingut del formulari de camp"; +$LANG["phrase_form_field_name"] = "Formulari de camp"; +$LANG["phrase_form_field_placeholders"] = "Marcadors de posició de camp de formulari"; +$LANG["phrase_form_fields"] = "Camps de formulari"; +$LANG["phrase_form_info"] = "Formulari d'Informació de"; +$LANG["phrase_form_info_2"] = "2. Formulari d'Informació de"; +$LANG["phrase_form_list"] = "Formulari de Llista"; +$LANG["phrase_form_name"] = "Nom del formulari"; +$LANG["phrase_form_page"] = "Formulari de pàgina"; +$LANG["phrase_form_placeholders"] = "Marcadors de manera"; +$LANG["phrase_form_submission"] = "Formulari de Presentació de"; +$LANG["phrase_form_submissions"] = "Els enviaments de formularis"; +$LANG["phrase_form_type"] = "Formulari Tipus"; +$LANG["phrase_form_url"] = "Formulari d'URL"; +$LANG["phrase_form_urls"] = "Formulari d'URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formes d'assignar a qualsevol compte"; +$LANG["phrase_forms_page_default_message"] = "Formes pàgina per defecte d'un missatge"; +$LANG["phrase_ft_installation"] = "Formulari d'Eines de Instalación de seqüències d'ordres"; +$LANG["phrase_full_width"] = "Ample complet"; +$LANG["phrase_getting_started"] = "Primers passos"; +$LANG["phrase_global_placeholders"] = "Marcadors de posició global"; +$LANG["phrase_group_name"] = "Nom del grup"; +$LANG["phrase_group_options_q"] = "Opcions de grup?"; +$LANG["phrase_group_rows"] = "Files del grup"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Ressaltar color"; +$LANG["phrase_html_email"] = "HTML email"; +$LANG["phrase_html_template"] = "Plantilla HTML"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Importar llista d'opcions »"; +$LANG["phrase_input_length"] = "Longitud d'entrada"; +$LANG["phrase_installation_help"] = "Instal · lació d'Ajuda"; +$LANG["phrase_internal_form"] = "Forma interna"; +$LANG["phrase_ip_address"] = "Adreça IP"; +$LANG["phrase_is_multi_page_form_q"] = "És aquest un formulari de diverses pàgines?"; +$LANG["phrase_label_response_placeholders"] = "Etiqueta / resposta de marcadors de posició"; +$LANG["phrase_large_300px"] = "Gran (300px)"; +$LANG["phrase_large_400px"] = "Gran (400px)"; +$LANG["phrase_last_7_days"] = "Últims 7 dies"; +$LANG["phrase_last_logged_in"] = "Últim ingrés"; +$LANG["phrase_last_modified"] = "Modificada per última vegada"; +$LANG["phrase_last_modified_date"] = "Darrera data de modificació"; +$LANG["phrase_last_name"] = "Cognom"; +$LANG["phrase_letters_only"] = "Només lletres"; +$LANG["phrase_light_brown"] = "Marró clar"; +$LANG["phrase_limit_email_content"] = "Límit de contingut de correu electrònic als camps a la vista"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Entrar"; +$LANG["phrase_login_as_user"] = "Inicieu una sessió com aquest usuari"; +$LANG["phrase_login_info"] = "Ingressar Informació"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Nom de Grup:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panell"; +$LANG["phrase_login_password"] = "Usuari Password"; +$LANG["phrase_login_username"] = "Nom d'usuari"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Sortir URL"; +$LANG["phrase_main_nav"] = "Menú principal"; +$LANG["phrase_main_settings"] = "Configuració principal"; +$LANG["phrase_manage_client"] = "Administrar clients"; +$LANG["phrase_manage_client_omit_list"] = "Ometre la gestió de clients Llista"; +$LANG["phrase_max_file_size"] = "Mida màxima de fitxer"; +$LANG["phrase_max_length"] = "Longitud màxima de"; +$LANG["phrase_max_length_words_chars"] = "- Longitud màxima (paraules / caràcters)"; +$LANG["phrase_may_add_submissions"] = "Les presentacions poden afegir"; +$LANG["phrase_may_copy_submissions"] = "Podeu copiar enviaments"; +$LANG["phrase_may_delete_submissions"] = "Esborreu treballs"; +$LANG["phrase_medium_150px"] = "Mitjà (150px)"; +$LANG["phrase_medium_200px"] = "Mitjà (200 píxels)"; +$LANG["phrase_menu_name"] = "Nom de menú"; +$LANG["phrase_menu_type"] = "Tipus de menú"; +$LANG["phrase_min_password_length"] = "Durada mínima de la contrasenya"; +$LANG["phrase_module_description"] = "Descripció del Mòdul"; +$LANG["phrase_module_info"] = "Mòdul d'Informació"; +$LANG["phrase_module_nav"] = "Mòdul de navegació"; +$LANG["phrase_month_to_date"] = "Mes a la data"; +$LANG["phrase_multi_select"] = "Multi-selecció"; +$LANG["phrase_multi_select_dropdown"] = "Multi-desplegable, seleccioneu"; +$LANG["phrase_multiple_fields_found"] = "Diversos camps Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nom / Cognom"; +$LANG["phrase_new_blank_email"] = "Nou correu electrònic en blanc"; +$LANG["phrase_new_blank_option_list"] = "Nova llista d'opcions en blanc"; +$LANG["phrase_new_blank_view"] = "Nova blanc Veure"; +$LANG["phrase_new_ft_installation"] = "Nova Forma d'Eines de Instal.lació"; +$LANG["phrase_new_option_list"] = "Llista d'opcions noves"; +$LANG["phrase_new_password"] = "Nova Contrasenya"; +$LANG["phrase_new_password_reenter"] = "Nova contrasenya (si us plau, torneu a entrar)"; +$LANG["phrase_new_view"] = "Nova vista"; +$LANG["phrase_new_view_all_fields"] = "Nova Vista - Tots els camps"; +$LANG["phrase_next_client"] = "proper client »"; +$LANG["phrase_next_field"] = "»Següent camp"; +$LANG["phrase_next_form"] = "següent formulari »"; +$LANG["phrase_next_view"] = "Veure següent »"; +$LANG["phrase_no_clients"] = "No hi ha clients"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Sense desplaçament"; +$LANG["phrase_no_option_lists_available"] = "No hi ha opcions de llistes disponibles."; +$LANG["phrase_no_views"] = "No Vistes"; +$LANG["phrase_no_views_with_filters_p"] = "(No hi ha vistes amb filtres definits)"; +$LANG["phrase_none_not_recommended"] = "Cap (no recomanat)"; +$LANG["phrase_not_assigned_to_option_list"] = "Aquest camp no està assignat a una llista d'opcions."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "No és igual a"; +$LANG["phrase_not_found"] = "No s'ha trobat!"; +$LANG["phrase_not_like"] = "Not Like"; +$LANG["phrase_not_visible_to_client"] = "(no visible per al client)"; +$LANG["phrase_num_clients_per_page"] = "Clients Num per pàgina"; +$LANG["phrase_num_emails_per_page"] = "Missatges de correu electrònic Número de vots per pàgina"; +$LANG["phrase_num_fields"] = "Nombre de camps"; +$LANG["phrase_num_forms_per_page"] = "Formes Num per pàgina"; +$LANG["phrase_num_menus_per_page"] = "Número de vots Menús per pàgina"; +$LANG["phrase_num_modules_per_page"] = "Número de vots mòduls per pàgina"; +$LANG["phrase_num_option_lists_per_page"] = "Num llistes d'opcions per pàgina"; +$LANG["phrase_num_options"] = "Num Opcions"; +$LANG["phrase_num_rows"] = "Num Files"; +$LANG["phrase_numbers_only"] = "Només els números"; +$LANG["phrase_often_localhost"] = "(sovint "localhost")"; +$LANG["phrase_on_form_submission"] = "L'enviament del formulari"; +$LANG["phrase_one_char_number"] = "Almenys un dels personatges és un nombre (0-9)"; +$LANG["phrase_one_char_upper"] = "Almenys un dels personatges és majúscula"; +$LANG["phrase_one_special_char"] = "Almenys un {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(només clients específics tenen accés)"; +$LANG["phrase_open_form_in_dialog"] = "Forma oberta a la finestra de diàleg"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Obrir aquest formulari en una finestra nova pestanya /"; +$LANG["phrase_option_list"] = "Llista d'opcions"; +$LANG["phrase_option_list_name"] = "Opció Nom de la llista"; +$LANG["phrase_option_list_or_contents"] = "Llista d'opcions / Contingut"; +$LANG["phrase_option_lists"] = "Llistes d'opcions"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Els títols de pàgina"; +$LANG["phrase_pass_on"] = "Passar"; +$LANG["phrase_password_min"] = "Ha de ser com a mínim <b> ( \$ longitud) </ caràcters b>."; +$LANG["phrase_password_one_number"] = "Ha de contenir com a mínim un nombre (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Ha de contenir almenys una lletra majúscula."; +$LANG["phrase_password_requirements_c"] = "Contrasenya requisits:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Ha de contenir com a mínim un dels següents caràcters: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permisos / Altres"; +$LANG["phrase_permitted_file_types"] = "Tipus d'arxiu permesos"; +$LANG["phrase_phone_number"] = "Número de telèfon"; +$LANG["phrase_phone_number_format"] = "Format de número de telèfon"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini mida del fitxer màxim permès pujar:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Si us plau confirmar"; +$LANG["phrase_please_enter_license_key"] = "Si us plau, introdueixi la seva clau de llicència"; +$LANG["phrase_please_select"] = "Seleccioneu"; +$LANG["phrase_please_select_form"] = "Si us plau, seleccioneu una manera"; +$LANG["phrase_prev_client"] = "«Anterior client"; +$LANG["phrase_prev_form"] = "«Anterior forma"; +$LANG["phrase_prevent_password_reuse"] = "re-Evitar l'ús de contrasenyes pàgina #"; +$LANG["phrase_previous_field"] = "camp anterior «"; +$LANG["phrase_previous_page"] = "Pàgina anterior"; +$LANG["phrase_previous_view"] = "«Anterior Veure"; +$LANG["phrase_program_name"] = "Nom del Programa"; +$LANG["phrase_public_form_omit_list"] = "Forma públic Evita Llista"; +$LANG["phrase_public_view_omit_list"] = "De Vista Pública Evita la llista"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Hi va haver un problema amb la següent consulta:"; +$LANG["phrase_radio_buttons"] = "Botons de Ràdio"; +$LANG["phrase_random_form_submission"] = "Presentació de forma aleatòria"; +$LANG["phrase_re_enter_password"] = "Torna a introduir la contrasenya"; +$LANG["phrase_recipient_type"] = "El tipus de destinatari"; +$LANG["phrase_redirect_url"] = "URL de redireccionament"; +$LANG["phrase_refresh_list"] = "Actualitzar llista"; +$LANG["phrase_refresh_module_list"] = "Actualitzar Llista de mòduls"; +$LANG["phrase_refresh_page"] = "Actualitzar pàgina"; +$LANG["phrase_refresh_theme_list"] = "Actualització per temes"; +$LANG["phrase_register_new_email"] = "Registre de Nou Email"; +$LANG["phrase_remaining_characters"] = "caràcters restants"; +$LANG["phrase_remaining_words"] = "La resta del text"; +$LANG["phrase_remove_tabs"] = "Traieu aquí"; +$LANG["phrase_required_password_chars"] = "Requerit caràcters de la contrasenya"; +$LANG["phrase_resend_test_submission"] = "Torneu a enviar proves de presentació"; +$LANG["phrase_return_form_list"] = "Tornar al formulari de llista de"; +$LANG["phrase_row_selected"] = "{\$num_rows} fila seleccionada"; +$LANG["phrase_rows_selected"] = "{\$num_rows} files seleccionades"; +$LANG["phrase_sample_data"] = "Dades de la Mostra"; +$LANG["phrase_save_changes"] = "Desa els canvis"; +$LANG["phrase_search_keyword"] = "Cerca paraula clau"; +$LANG["phrase_security_settings"] = "Configuració de seguretat"; +$LANG["phrase_select_all"] = "Seleccionar tot"; +$LANG["phrase_select_all_X_results"] = "Selecciona-ho tot {\$numresults} Resultats"; +$LANG["phrase_select_all_on_page"] = "Selecciona tot en Page"; +$LANG["phrase_select_date"] = "Seleccioni la data"; +$LANG["phrase_select_field"] = "Seleccioneu el camp"; +$LANG["phrase_select_swatch"] = "Seleccioneu mostra"; +$LANG["phrase_selected_clients"] = "Clients seleccionats"; +$LANG["phrase_selected_views"] = "Selecció de punts de vista"; +$LANG["phrase_send_email"] = "Enviar correu"; +$LANG["phrase_send_test_email"] = "Enviar correu electrònic de prova"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Temps d'espera de sessions de"; +$LANG["phrase_setting_value"] = "Valor de configuració"; +$LANG["phrase_setup_options"] = "Opcions d'instal lació"; +$LANG["phrase_show_all"] = "Mostrar tot"; +$LANG["phrase_show_form"] = "Mostra Formulari"; +$LANG["phrase_size_large"] = "Grans (TEXT)"; +$LANG["phrase_size_medium"] = "Mitjà (<= 256 caràcters)"; +$LANG["phrase_size_small"] = "Petit (<= 20 caràcters)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 caràcters)"; +$LANG["phrase_size_very_large"] = "Molt Gran (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Passar de Camp"; +$LANG["phrase_skip_step"] = "Ometeu el pas"; +$LANG["phrase_small_100px"] = "Petita (100px)"; +$LANG["phrase_small_80px"] = "Petits (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Ompliu els camps de:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill la documentació de l'usuari »"; +$LANG["phrase_sort_as"] = "Classificar com"; +$LANG["phrase_special_fields"] = "Camps especials"; +$LANG["phrase_standard_fields"] = "Norma Camps"; +$LANG["phrase_standard_filters"] = "Estàndard Filtres »"; +$LANG["phrase_step_1"] = "Pas 1"; +$LANG["phrase_step_2"] = "Pas 2"; +$LANG["phrase_step_3"] = "Pas 3"; +$LANG["phrase_step_4"] = "Pas 4"; +$LANG["phrase_step_5"] = "Pas 5"; +$LANG["phrase_step_6"] = "Pas 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Franja d'etiquetes en els enviaments de formularis"; +$LANG["phrase_subject_line"] = "Línia d'assumpte"; +$LANG["phrase_submission_date"] = "Data de presentació"; +$LANG["phrase_submission_id"] = "Presentació d'identificació"; +$LANG["phrase_submission_made"] = "Documents presentats: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Tipus de presentació"; +$LANG["phrase_submissions_per_page"] = "Enviaments per pàgina"; +$LANG["phrase_system_check"] = "Comprovació del sistema"; +$LANG["phrase_system_fields_no_validation"] = "No podeu afegir la validació dels camps del sistema."; +$LANG["phrase_system_time_offset"] = "Sistema de Compensació horària"; +$LANG["phrase_tab_label"] = "Fitxa Etiqueta"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Prova de permisos de carpetes"; +$LANG["phrase_test_submission"] = "Prova de Lliurament"; +$LANG["phrase_test_submission_3"] = "3. Prova de Lliurament"; +$LANG["phrase_test_submission_received"] = "Data de presentació de prova"; +$LANG["phrase_text_and_html"] = "De text i HTML"; +$LANG["phrase_text_email"] = "Text Email"; +$LANG["phrase_text_template"] = "Plantilla de text"; +$LANG["phrase_the_previous_month"] = "El mes anterior"; +$LANG["phrase_theme_description"] = "Descripció del tema"; +$LANG["phrase_theme_info"] = "Tema Informació"; +$LANG["phrase_tiny_30px"] = "Petits (30px)"; +$LANG["phrase_tiny_50px"] = "Petits (50px)"; +$LANG["phrase_total_results_c"] = "Total de resultats:"; +$LANG["phrase_type_c"] = "Tipus d'error:"; +$LANG["phrase_unselect_all"] = "Partners selecció"; +$LANG["phrase_update_accounts"] = "Comptes d'actualització"; +$LANG["phrase_update_email_template"] = "Actualització de plantilla de correu electrònic"; +$LANG["phrase_update_field"] = "Actualitzar camps"; +$LANG["phrase_update_order"] = "Actualització de l'Ordre"; +$LANG["phrase_update_view"] = "Actualització de Vista"; +$LANG["phrase_upload_file"] = "Carrega"; +$LANG["phrase_upload_files"] = "Carregar arxius"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Ruta de la carpeta Carregar"; +$LANG["phrase_upload_folder_url"] = "Pujar carpeta URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Utilitza Valor per defecte?"; +$LANG["phrase_used_by_num_form_fields"] = "Usat per # camps de formulari"; +$LANG["phrase_uses_swatches"] = "Utilitza Mostres"; +$LANG["phrase_valid_email"] = "De correu electrònic vàlida"; +$LANG["phrase_validation_error"] = "Error de validació"; +$LANG["phrase_validation_rule"] = "Regla de validació"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Veure Grup"; +$LANG["phrase_view_id"] = "Veure ID"; +$LANG["phrase_view_name"] = "Nom de vista"; +$LANG["phrase_view_placeholders"] = "Marcadors de vista"; +$LANG["phrase_view_submissions"] = "Veure col.laboracions"; +$LANG["phrase_view_uploaded_files"] = "Veure els fitxers enviats"; +$LANG["phrase_viewing_range"] = "[veure {\$startnum} a {\$endnum}]"; +$LANG["phrase_when_sent"] = "Quan s'envia"; +$LANG["phrase_when_submission_is_deleted"] = "Quan s'elimina la presentació"; +$LANG["phrase_when_submission_is_edited"] = "Quan s'edita la presentació"; +$LANG["phrase_who_can_access"] = "Qui pot accedir?"; +$LANG["phrase_word_limit_p"] = "paraula límit."; +$LANG["phrase_year_to_date"] = "Que va d'any"; +$LANG["phrase_yes_for_all_views"] = "Sí, per a totes les vistes"; +$LANG["phrase_yes_for_specific_views"] = "Sí, per les opinions concretes"; +$LANG["phrase_your_account"] = "El teu compte"; +$LANG["phrase_your_email"] = "El seu correu electrònic"; +$LANG["phrase_your_email_address"] = "La seva adreça de correu electrònic"; +$LANG["processing_form_disabled"] = "Ho sentim, aquest formulari ha estat desactivat."; +$LANG["processing_form_incomplete"] = "Ho sentim, aquesta forma no sembla ser totalment creades des del formulari d'Eines. La causa més probable d'aquest problema és que ha eliminat la "form_tools_initialize_form" camp de formulari ocult, però no completar tots els passos de la "Afegir formulari" procés.

    Inicia sessió i revisar la configuració de la forma."; +$LANG["processing_init_complete"] = "Gràcies! La seva presentació ha estat objecte de prova amb èxit. Si us plau torni al panell d'eines de forma d'administració i feu clic al botó "Actualitza" a la part inferior del formulari Afegeix Pas 3 pàgina per acabar de configurar el seu formulari."; +$LANG["processing_invalid_form_id"] = "Ho sentim, aquest no sembla ser una forma d'identificació vàlida."; +$LANG["processing_no_form_id"] = "process.php requereix una forma d'identificació per al seu processament. Comproveu que l'formulari conté un camp ocult amb el nom de "form_tools_form_id" que està passant per la forma d'identificació."; +$LANG["processing_no_form_url_for_recaptcha"] = "Formulari d'eines és incapaç de determinar on redirigir quan no poden entrar al CAPTCHA correctament. Si us plau, passi en un camp ocult amb el nom de form_tools_form_url conté l'adreça URL de la forma."; +$LANG["processing_no_post_vars"] = "process.php no està rebent les dades. Nota: Aquest script no es pot carregar directament al vostre navegador.
    Assegureu-vos que la seva forma és l'enviament per correu."; +$LANG["processing_no_redirect_url"] = "La presentació va ser processat correctament, però no ha especificat una URL de redireccionament d'aquesta manera! Modificar el formulari en la interfície d'usuari d'eines de formulari i afegir la URL de redireccionament."; +$LANG["special_language"] = "Catalan"; +$LANG["special_language_locale"] = "Catalan"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Totes les noves comptes de clients es crearà amb la configuració i els permisos es defineixen a continuació. Per reemplaçar un marc per a un client particular, modificar el compte del client i visita la seva fitxa Configuració."; +$LANG["text_add_form_choose_integration_method"] = "Escollir el mètode que voleu utilitzar per integrar el formulari amb les eines de formulari."; +$LANG["text_add_form_code_submission_benefits"] = "Aquest mètode utilitza el formulari d'eines API , inclosa en el formulari principal de seqüència de comandaments d'eines. L'API proporciona una sèrie de funcions útils per fer la feina de la integració de la seva forma amb les eines de forma tan simple com sigui possible. No hi ha restriccions a la forma en què el seu formulari pot ser presentat quan s'utilitza l'API. Es pot presentar el contingut d'un sol cop, o pàgina a pàgina, es pot afegir la seva pròpia costum al servidor de validació, imatges CAPTCHA, vostè pot optar per presentar la informació d'aquest moment, però només ho dic per mostrar la presentació en el Formulari d'eines d'interfície d'usuari en una data posterior (veure el Finalitzat presentacions en la documentació d'ajuda de l'API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Per tal de presentar les dades del formulari a través de PHP, el formulari ha d'estar ubicat al mateix lloc web que aquesta forma d'instal lació d'eines. En segon lloc, per manca de tècniques i eines de principiant formulari els usuaris, aquest mètode pot ser una mica intimidatori al principi. Però hi ha un munt de documentació per ajudar-lo, entre ells dos tutorials senzills per a la integració dels formularis d'una o diverses pàgines (es tracta d'un vincle en un pas posterior)."; +$LANG["text_add_form_direct_submission_benefits"] = "Aquesta és la forma més fàcil d'emetre el seu formulari a la forma Eines. No es requereix cap coneixement de PHP i només requereix un canvi molt petit en el seu formulari. És molt bo per a les petites formes en què només voleu enviar la informació a la base de dades a continuació, redirigir l'usuari a thankyou una "pàgina"."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Aquest mètode de presentació és simple d'utilitzar, però no proporciona molt control per a les formes més complicades. Multi-pàgina de formularis o formes que requereixen de validació al servidor són més adequats per al segon mètode: la presentació a través de l'API d'eines de formulari."; +$LANG["text_add_form_field_types1"] = "Ja està gairebé fet! Aquesta pàgina tracta de trobar tots els camps del formulari i determinar els seus tipus de camp. Feu clic al botó Farciment intel ligent a la dreta per començar. Se li permet només procedirà quan totes les accions que s'han resolt - els problemes que requereixen la seva atenció apareixen a la carpeta "Cal actuar per " de la columna."; +$LANG["text_add_form_field_types2"] = "Si la seva forma no està en HTML, feu clic al botó Pas Anar a continuar. Tot això es pot configurar més tard."; +$LANG["text_add_form_field_types3"] = "Això torna a carregar el contingut de la forma (s). Nota: això sobreescriurà els canvis fets en aquesta pàgina."; +$LANG["text_add_form_field_types4"] = "En cas que tingui problemes, feu clic aquí per ometre aquest pas. Tots els camps sense resoldre estan configurats per utilitzar els valors per defecte. Podeu personalitzar aquests camps després."; +$LANG["text_add_form_field_types_manual_upload"] = "Si vostè ha estat incapaç de Farciment intel ligent seus camps, potser voldreu intentar una solució alternativa: carregar còpies dels formularis en els camps de sota."; +$LANG["text_add_form_field_types_manual_upload2"] = "Nota: no carregar primeres pàgines PHP (o un altre codi de servidor) - només pujar les versions d'HTML. Per aconseguir això, veure i guardar la pàgina des del seu navegador web."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Hi va haver diversos camps que no es va poder trobar a la pàgina del formulari que heu introduït. Això és principalment causat probablement per un dels següents:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Ha introduït un o més de les URL forma de diverses pàgines correctament."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Una o més pàgines del seu formulari estan protegits per contrasenya i el guió no podia accedir a la pàgina."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Que incorrectament la seva adreça URL del formulari."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Feu clic aquí per tornar a la pàgina d'informació de forma de revisar la seva configuració."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Ha canviat la seva forma (s) després de fer la presentació de prova"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Feu clic aquí per posar a través d'una altra presentació de prova."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "La seva forma està protegit amb contrasenya i el guió no podia accedir a la pàgina."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "En una altra pestanya / finestra del navegador, accedir al seu formulari i feu clic al botó Actualitzar pàgina de sota per tractar de tornar a trobar el camp."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Si cap de les solucions anteriors, també pot intentar pujar manualment els formularis per al processament ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Hi va haver diversos camps que no es va poder trobar a les pàgines del formulari especificat. Això és principalment causat probablement per un d'aquests:"; +$LANG["text_add_form_help_link"] = "Si es produeixen problemes durant aquests passos, proveu la lectura de la documentació de l'usuari ."; +$LANG["text_add_form_step_1_text_1"] = "A les pàgines següents de plom a través dels passos per configurar les utilitats de formulari per emmagatzemar els seus enviaments de formularis. Abans de continuar, comproveu que:"; +$LANG["text_add_form_step_1_text_2"] = "el seu formulari ja ha estat creat i és accessible a través d'una URL (localhost està bé)"; +$LANG["text_add_form_step_1_text_3"] = "són capaços de modificar la seva forma de"; +$LANG["text_add_form_step_2_para_2"] = "Obri el formulari en un editor de la seva preferència i canviar l'etiqueta del formulari a la següent, inclosos els dos camps ocults."; +$LANG["text_add_form_step_2_para_3"] = "A continuació, obriu el seu formulari en un navegador web. Ompli tots els camps i el presentarà. Després de la presentació, vostè ha de veure un missatge de notificació. Una vegada que es mostra aquest missatge, torna a aquesta pàgina i feu clic al botó d'actualització a continuació. Quan aquest procés es completi, vostè veurà un botó de continuar endavant, que el portarà al següent pas."; +$LANG["text_add_form_step_2_para_6"] = "En el seu enviament del formulari, incloure els següents valors. Es pot establir directament a través de PHP o transmetin a través de la mateixa manera. A continuació es presenten exemples de cada un. La Varnamo \$ () és un hash (o matriu associativa) de tota la informació d'enviament del formulari - això és en general els \$ postvar) (o) (\$ sessionvar variable, però pot ser a mida."; +$LANG["text_add_form_step_2_text_2"] = "Introduïu l'adreça URL de la seva "Gràcies " a la pàgina aquí. Aquí és on vostè vol que la gent es dirigeix ​​a després que el formulari ha estat enviat."; +$LANG["text_add_form_step_3_para_1"] = "Aquesta pàgina mostra tots els camps en el formulari d'enviament. Si us plau, examini cada camp i elimini les que no és necessari emmagatzemar per cada presentació. Si esborreu un camp vàlid per accident, o voleu canviar la informació emmagatzemada per la seva forma, tornar a la pàgina anterior d'enviar una petició de prova nova."; +$LANG["text_add_form_step_3_para_2"] = "Nota: Si envieu diversos valors a través de caselles de verificació o un multi-caixa de selecció, assegureu-vos que el seu nom de camp acaba amb el [] caràcters (vegeu la documentació de l'usuari per a més informació)."; +$LANG["text_add_form_step_3_text_1"] = "Aquí és on comença la diversió! En aquest punt, eines de forma és l'espera d'una presentació de prova de la seva forma. S'utilitzarà aquesta presentació forma de saber quina informació ha de ser emmagatzemada a la base de dades."; +$LANG["text_add_form_step_3_text_2"] = "assenyalant la seva forma a una altra Eines"; +$LANG["text_add_form_step_3_text_3"] = "utilitzant l'API d'eines de manera"; +$LANG["text_add_form_step_3_text_4"] = "Per ajudar a integrar a la seva forma, us suggerim que llegiu un dels següents tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "En elles s'explica com configurar el formulari en la preparació per a la presentació de prova, i incloure una altra informació que pugui ser d'ajuda. La línia de PHP que es necessita és:"; +$LANG["text_add_form_step_3_text_6"] = "Això assegura que la informació s'enviï a la Forma Eines. Quan s'han posat a través de la presentació de proves, feu clic al botó de sota."; +$LANG["text_add_form_step_3_text_7"] = "Sobre el procediment pàgina al seu final "gràcies" de pàgina, assegureu-vos d'afegir el següent a la variable \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "La base de dades ha estat creada per d'aquesta manera i la forma s'ha activat per al seu ús. Si vostè va fer la presentació assenyalant el seu formulari per process.php, si us plau, torni a la seva forma i eliminar el camp ocult següents:"; +$LANG["text_add_form_step_5_para_2"] = "A continuació, visita a la seva "gràcies" pàgina per buidar les sessions. Un cop fet això, totes les propostes de nova forma seran processats i emmagatzemats per un formulari d'Eines. Intenta fer una presentació o dues per verificar la informació és carregar correctament."; +$LANG["text_add_form_step_5_para_3"] = "Si voleu afinar la forma per opcions tals com auto-correu electrònic, afegint més camps del formulari de camp, o la personalització dels tipus de camp de formulari, és possible editar el formulari en qualsevol moment."; +$LANG["text_add_form_step_5_para_4"] = "Atès que el formulari conté fitxers enviats per l'usuari, haureu de configurar cada camp per especificar la carpeta de càrrega d'arxius, ¿quins fitxers són permeses i. Això es pot trobar a la pestanya Pantalla de la pàgina de modificació de la forma."; +$LANG["text_add_form_step_5_para_5"] = "Si la presentació va ser enviada a través de l'API, canvieu la línia de ft_api_init_form_page a la primera pàgina del seu formulari a:"; +$LANG["text_add_submission_button"] = "El botó d'enviament Afegeix només apareix per a les vistes que té el "Podeu afegir presentacions " opció en "si "."; +$LANG["text_admin_email_placeholder_info"] = "Aquesta és l'adreça de correu electrònic de l'administrador de les eines de formulari, que es defineix en la configuració del compte. Això només s'envia el correu electrònic, així que si voleu utilitzar com a enllaç HTML, vostè haurà d'embolicar en una etiqueta <a>, així:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ adminEmail) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(També el tema per defecte pàgina d'inici de sessió)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "En primer lloc, seleccioni el seu tipus de formulari."; +$LANG["text_client_form_page"] = "Aquesta pàgina mostra tots els formularis i vistes assignat a aquest client. Consell: per que ells per veure les presentacions d'un formulari, que necessiten per ser assignats a almenys un punt de vista."; +$LANG["text_client_map_filters_desc1"] = "Filtres Mapa de clients li permeten limitar les comunicacions que apareixen en aquest punt de vista de l'assignació de valors en un camp de formulari amb els valors en un compte de client."; +$LANG["text_client_no_forms"] = "Actualment no tens formes disponibles per la seva revisió."; +$LANG["text_client_welcome"] = "Benvingut! Aquest programa emmagatzema tota la informació presentada pels visitants al seu lloc. Per veure les presentacions d'una manera particular, simplement feu clic a l'enllaç Veure, o veure el menú de navegació esquerra per altres opcions."; +$LANG["text_config_file_created"] = "La seva config.php s'ha creat."; +$LANG["text_config_file_not_created"] = "No hem pogut crear el fitxer config.php. Vostè haurà de crear el fitxer manualment."; +$LANG["text_config_file_not_created_instructions"] = "Copiar i enganxar el contingut de la secció de baix en un fitxer anomenat config.php i pujar-lo via FTP per a les eines de formulari / carpeta global (a la carpeta que conté alguns fitxers i altres directoris, un arxiu anomenat la llicència)."; +$LANG["text_confirm_delete_form"] = "Sí, vull esborrar aquest formulari"; +$LANG["text_create_admin_account"] = "Ara anem a crear el compte de l'administrador. Això s'utilitza per gestionar tots els aspectes de la Forma eines, com ara l'addició de les formes i la creació de comptes de clients."; +$LANG["text_create_new_client_account"] = "Utilitzeu el següent formulari per crear un nou compte de client. Tots els camps són obligatoris."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "veure PHP {\$datefunctionlink} funció de les opcions de format"; +$LANG["text_default_file_settings_page"] = "Aquesta pàgina defineix la configuració de la càrrega d'arxius per a la instal.lació de la seva Formulari d'Eines. Aquestes normes s'apliquen a tots els fitxers enviats mitjançant el formulari d'eines, a menys que explícitament es reemplaça per un camp un per un. Nota: Si canvia la carpeta després de pujar arxius han estat pujats, que passaran automàticament a la nova carpeta."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Abans de continuar, haurà d'actualitzar el fitxer / temes / / carpeta de memòria cau per defecte per a permetre accés total de lectura i escriptura. Un cop fet això, el missatge desapareixerà i es pot instal lar la seqüència de comandaments."; +$LANG["text_default_values_in_view"] = "Aquesta secció és opcional. Totes les presentacions creades amb aquesta opinió contindrà els valors predeterminats especificats aquí."; +$LANG["text_delete_all_forms"] = "Vull esborrar tots els arxius que van ser enviats a través d'aquest formulari de"; +$LANG["text_delete_form_warning"] = "Estàs segur que vols eliminar aquesta manera? Aquesta acció no es pot desfer. Totes les dades es perdran permanentment!"; +$LANG["text_edit_admin_menu_page"] = "Podeu editar el seu menú a sota. Per assegurar que sempre tinguin accés a totes les funcionalitats disponibles en el Formulari Eines, les pàgines es necessiten els següents: les formes, els clients, el seu compte, Mòduls, Configuració i Sortir."; +$LANG["text_edit_client_menu_page"] = "Aquesta secció us permet personalitzar la columna de l'esquerra per a cada usuari. Podeu crear tants menús client que vulgui i assignar un compte a un d'ells. Per defecte hi ha dos menús: un per a vostè, l'administrador, i un per tots els comptes de client. El compte d'administrador pot ser modificat, però no suprimir."; +$LANG["text_edit_tab_summary"] = "Si voleu agrupar els camps d'aquesta vista és en pestanyes, només cal introduir els noms de les pestanyes a sota. Després que hagis acabat, seleccioneu la fitxa corresponent a cada grup de camp en la fitxa Campos ."; +$LANG["text_edit_view_list_page"] = "Aquesta fitxa Controls dels camps que apareixen com columnes a la pàgina Llistat de Presentació, i alguns ajustaments addicionals per aquests camps. Nota: es recomana afegir no més de 4 o 5 dels camps més importants en la vista."; +$LANG["text_email_settings_intro"] = "Aquesta pàgina us permet identificar quins dels seus missatges de correu electrònic de la botiga camps de formulari i els seus noms corresponents. Una vegada que es defineix aquí, es pot usar en les seves plantilles de correu electrònic com a destinataris. Aquesta secció és totalment opcional."; +$LANG["text_email_tab_summary"] = "Aquesta secció us permet construir qualsevol nombre de correus electrònics per ser enviats quan es presenti el formulari, i altres factors desencadenants."; +$LANG["text_email_template_tab"] = "Aquesta secció us permet determinar el contingut que apareix en el correu electrònic. Si vol enviar el correu electrònic com només text o correu electrònic, només introduïu un valor per a aquesta secció. Si introduïu un valor per a tots dos, l'email serà enviat en ambdós formats."; +$LANG["text_email_template_text_1"] = "Hi ha hagut una presentació feta a través de la seva forma, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Hi ha hagut una presentació feta a través de la seva forma, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Gràcies per la teva presentació!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Missatge d'error per mostrar si el camp no passa la validació"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Les formes externes són formes que ja existeixen al seu lloc web, o en algun lloc de la web. Seleccioneu aquesta opció si vostè té la seva pròpia manera que li agradaria integrar-se amb eines de formularis."; +$LANG["text_fields_tab_summary"] = "Aquesta pàgina enumera tots els camps de formulari. Per controlar la manera com apareixen quan les presentacions de navegació, vegeu la fitxa Vistes . Eliminar un camp en aquesta pàgina, es suprimirà a partir de totes les presentacions, així que si us plau vés amb compte!"; +$LANG["text_file_extension_info"] = "Introduïu les extensions d'arxiu separats per comes (per exemple, jpg, gif, png) o deixar en blanc per permetre que qualsevol tipus de fitxer."; +$LANG["text_file_field_placeholders_info"] = "Els camps de l'arxiu té dos marcadors de posició especial: Url d'Arxiu i filename. Url d'Arxiu és l'adreça URL completa de l'arxiu, el que pot enllaçar directament a ella en el seu correu electrònic; FILENAME és el nom d'arxiu."; +$LANG["text_filters_page"] = "Només les propostes que compleixin amb les regles que defineixen a continuació apareixeran en aquesta vista."; +$LANG["text_filters_tips"] = "Per obtenir consells sobre com utilitzar els filtres de presentació, vegeu la documentació de l'usuari."; +$LANG["text_forgot_password"] = "No hi ha problema. Només has d'introduir el teu nom d'usuari a continuació i les dades d'accés serà enviat a la teva adreça de correu electrònic en arxiu. Si vostè ha oblidat el seu nom d'usuari, si us plau escrigui a l'administrador del lloc en {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Aquest formulari conté un o més camps d'arxiu de càrrega:"; +$LANG["text_form_placeholder_info"] = "Els següents marcadors de posició es pot utilitzar en qualsevol plantilla de correu electrònic i el camp de marcador de posició llengua, independentment del que veure la plantilla de correu electrònic està assignat. Els marcadors de posició PREGUNTA són la qüestió forma específica, els marcadors de posició de resposta són les respostes a cada pregunta."; +$LANG["text_form_submission_date_placeholder"] = "La data en què la presentació es va fer."; +$LANG["text_form_tools_form_url"] = "L'adreça URL completa de la forma. Això només té un valor de forma externa."; +$LANG["text_form_tools_login_url"] = "L'URL d'accés per al Formulari Eines."; +$LANG["text_form_view_permission_info_admin"] = "Nota: aquest formulari té actualment el tipus d'accés d'administrador, de manera que cap dels comptes dels clients seran capaços de veure aquesta vista."; +$LANG["text_form_view_permission_info_private"] = "Nota: aquest formulari té actualment el tipus d'accés privat per a les opcions públiques i privades aquí es limitarà a aquest subconjunt de clients."; +$LANG["text_ft_installed"] = "Felicitats, Formulari d'eines ha estat instal lat amb èxit!"; +$LANG["text_global_placeholder_info"] = "Aquests marcadors es poden utilitzar en qualsevol plantilla i qualsevol altra forma."; +$LANG["text_group_name_explanation"] = "Per als camps d'afegir a través del procés Afegir Forma, aquest valor és pre-carregada a la pantalla de text de qualsevol camp utilitza el valor. És possible que vulgueu canviar per caracteritzar millor els continguts."; +$LANG["text_install_create_config_file"] = "Formulari de botigues d'eines i la configuració del seu servidor de base de dades en un fitxer anomenat config.php, que es troba al / global / carpeta. Feu clic a "Crea arxiu" per generar automàticament el fitxer en el seu servidor."; +$LANG["text_install_create_database_tables"] = "Ara anem a crear les taules de base de dades Formulari d'Eines. Aquest pas requereix la mateixa base de dades ja s'han creat. Si no estàs segur de com fer-ho, poseu-vos en contacte amb el seu proveïdor de serveis."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" generalment vol dir que el nom que va proporcionar és incorrecta. Potser intenteu establir això a "localhost" - aquesta és una manera comuna per a referir-se a la base de dades "local" a un servidor web."; +$LANG["text_install_db_tables_error_tip_2"] = ""No es pot connectar al servidor MySQL local a través de socket" significa que el camp de base de dades és de nou el nom de host incorrecte."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" significa que hi ha un problema amb la seva combinació d'usuari / contrasenya."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... a la base de dades ..." vol dir que, encara que el seu nom d'usuari i contrasenya que va proporcionar és correcta, no es va poder connectar a la base de dades especial amb què compta. Això pot significar que o bé el seu nom de base de dades és incorrecte, o que aquest compte d'usuari no està associat amb la base de dades."; +$LANG["text_install_email_content_text"] = "Hi ha molts recursos al nostre lloc web per ajudar-vos a començar, inclosa la nostra documentació en línia (https://docs.formtools.org) i tutorials (https://docs.formtools.org/tutorials). Si us trobeu atrapat o teniu una pregunta, feu una pregunta sobre github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Ho sentim, eines de manera que no serà capaç d'executar al servidor. Si us plau, feu clic aquí per als requisits mínims."; +$LANG["text_install_system_check"] = "Aquesta pàgina s'executa algunes proves en el seu sistema per assegurar-se que és capaç d'executar eines de formulari."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Formes internes només existeixen en eines de forma - no en altres parts del seu lloc. Només eines Formulari comptes d'usuari tindrà accés a la forma. Seleccioneu aquesta opció si vostè no té un formulari existent."; +$LANG["text_internal_form_intro"] = "Utilitzeu el formulari a continuació per crear una forma interna. Tots els àmbits, incloent-hi el nombre i el contingut dels camps del formulari es pot modificar i configurar més tard."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Per tal d'iniciar sessió i utilitzar eines de formulari, ha de tenir habilitat JavaScript al vostre navegador. Si us plau, activa ara, i feu clic a Actualitzar al navegador."; +$LANG["text_last_modified_date_explanation_c"] = "L'última vegada que aquesta petició ha estat modificat. Per a les presentacions de nou, aquesta és la mateixa:"; +$LANG["text_limit_email_content_desc"] = "Aquesta opció només funciona per a contingut HTML i text generat amb Loops Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(només les llistes de Vista amb un o més filtres definits)"; +$LANG["text_log_in_to_ft"] = "Entra al Formulari Eines"; +$LANG["text_login"] = "Inicia sessió a continuació per accedir als \$ () nombreDePrograma Panell d'Administració. Si no recordes la contrasenya, feu clic aquí."; +$LANG["text_login_info"] = "Acord amb el demanat, aquí està vostres dades d'entrada."; +$LANG["text_name_of_form"] = "El nom de la forma."; +$LANG["text_no_clients"] = "Actualment no hi ha clients a la base de dades. Per afegir un nou compte de client, feu clic al botó Afegeix client a continuació."; +$LANG["text_no_clients_found"] = "No s'han trobat clients. Intenteu ampliar els seus criteris de recerca."; +$LANG["text_no_fields_in_view"] = "Aquesta opinió no té cap camp en el mateix. Feu clic a l'enllaç de sota."; +$LANG["text_no_forms"] = "Actualment no hi ha formes a la base de dades. Per afegir un nou formulari, feu clic al botó Agregar formulari de sota."; +$LANG["text_no_forms_found"] = "No s'han trobat formes."; +$LANG["text_no_forms_found_search"] = "No s'han trobat formes. Intenta allargar els criteris de cerca."; +$LANG["text_no_modules_found"] = "No es van trobar mòduls. Intenteu ampliar els seus criteris de recerca."; +$LANG["text_no_recipients_added"] = "No beneficiaris han estat afegides."; +$LANG["text_no_search_results"] = "No hi ha resultats amb aquest criteri de recerca / View."; +$LANG["text_no_submissions_found"] = "Ho sentim, no es van trobar observacions."; +$LANG["text_no_themes"] = "No té cap temes definits. Feu clic al botó de sota per actualitzar la llista de temes, o comprovar la documentació del Formulari d'eines d'usuari per obtenir informació sobre com afegir temes."; +$LANG["text_non_deletable_fields"] = "Aquest camp és utilitzat pel guió bàsic i no pot ser editat o esborrat sense causar incompatibilitats. Si voleu fer canvis en el tipus de camp, fer una còpia i editar la còpia."; +$LANG["text_option_list_group_explanation"] = "Si aquesta opció està activada, permet al grup de les seves opcions. Com els grups que es mostren depèn del tipus de camp amb aquesta llista d'opcions."; +$LANG["text_option_list_page"] = "Els botons d'opció, caselles de verificació, menús desplegables i seleccionar diversos camps desplegables tots ofereixen a l'usuari diverses opcions de les que podeu seleccionar un o més elements. En les eines de forma, aquests es coneixen com a llistes d'opcions. En general, aquests són creats automàticament pel formulari del nostre giny de procés, però pot afegir manualment o editar les llistes de les següents opcions, si canvia el contingut del formulari, o la construcció de camps que només s'utilitzen internament."; +$LANG["text_option_list_used_by_fields"] = "Aquesta llista d'opcions és utilitzat pels camps de formulari. Si s'actualitza la informació de sota es canviarà per a tots els camps (veure Camps de formulari fitxa per veure la llista de camps). Per actualitzar els valors d'un, o un subconjunt dels camps que estan assignats, feu clic aquí per crear una llista d'opcions noves amb els mateixos valors com aquest. A continuació, pot assignar els camps del formulari que desitja al nou grup."; +$LANG["text_public_form_omit_list_page"] = "Formes públiques donar-li el benefici de permetre que tots els comptes dels clients accedir-hi sense haver d'assignar manualment a cada client per a ells. Aquesta pàgina us permet identificar a aquells clients que no poden accedir a aquest formulari, encara que la forma sigui considerada pública."; +$LANG["text_public_view_omit_list_page"] = "Vistes Públiques donar-li el benefici de permetre que tots els comptes dels clients accedir-hi sense haver d'assignar manualment a cada client per a ells. Aquesta pàgina us permet identificar a aquells clients que no poden accedir a aquesta vista en particular."; +$LANG["text_reference_tab_info"] = "Aquesta pàgina mostra tots els marcadors de posició per al formulari. Marcadors de posició són paraules que poden ser utilitzats en les plantilles de correu electrònic, i els camps marcats amb una icona de marcador de posició especial . Quan s'introdueix en un camp, es converteix de forma dinàmica en el valor adequat quan el camp es veu o el correu electrònic enviat."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Reviseu la documentació d'usuari"; +$LANG["text_send_email_from_edit_submission_page"] = "Incloure la opció d'enviar un correu electrònic d'edició de la pàgina de presentació"; +$LANG["text_smart_fill_option_list_problem"] = "No hem pogut Farciment intel ligent les seves opcions de camp. No obstant això, com a alternativa, podeu provar carregar una còpia de la pàgina de formulari en el camp de sota. Nota: no carregar primeres pàgines PHP (o un altre codi de servidor) - acaba de carregar la versió d'HTML. Per aconseguir això, veure i guardar la pàgina des del seu navegador web."; +$LANG["text_submission_ip_address"] = "L'adreça IP de l'usuari que faci la presentació."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Utilitzeu el formulari a continuació per veure o enviem un correu electrònic generat per aquesta plantilla de correu electrònic. El correu electrònic només s'envia al correu electrònic s'indiquen a continuació, el principal, CC i CCO beneficiaris adreça de correu electrònic són ignorats durant les proves."; +$LANG["text_test_email_templates_no_submissions"] = "Per tal de provar les seves plantilles de correu electrònic, primer ha de posar a través d'almenys un enviament de formulari."; +$LANG["text_theme_page_intro"] = "Aquesta pàgina mostra tots els seus temes. Feu clic a una miniatura per veure un exemple més dels estils del tema. El "activat" casella de verificació decideix si o no que el tema pot ser seleccionat pels clients. Per navegar per tots els temes disponibles, visiteu el lloc web Formulari d'Eines."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Afegir la seva primera forma!"; +$LANG["text_unique_submission_id"] = "La presentació única d'identificació."; +$LANG["text_unused_option_list"] = "Aquesta llista d'opcions no està sent utilitzat per qualsevol dels camps de formulari."; +$LANG["text_upgraded"] = "La seva instal lació s'ha actualitzat a {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Aquesta llista d'opcions és utilitzada pels següents camps."; +$LANG["text_view_fields_info"] = "Aquesta fitxa controla els camps que apareixen quan s'edita una presentació en aquesta vista, l'ordre i si es poden modificar o no."; +$LANG["text_view_tab_summary"] = "Aquesta pestanya us permet crear diferents formes d'agrupar i organitzar les dades. Punts de vista li permeten crear subconjunts personalitzats de les dades de manera que es divideix en parts manejables, i per limitar el que els clients poden veure o editar."; +$LANG["validation_account_disabled"] = "Ho sentim, el seu compte ha estat desactivada."; +$LANG["validation_account_not_recognized"] = "Ho sentim, aquest nom d'usuari no es reconeix."; +$LANG["validation_account_not_recognized_info"] = "Ho sentim, aquest nom d'usuari no va ser trobada. Torneu-ho de nou o poseu-vos en contacte amb l'administrador del lloc en la direcció avall."; +$LANG["validation_account_pending"] = "El vostre compte d'usuari està pendent d'aprovació per un administrador."; +$LANG["validation_check_delete_client"] = "Estàs segur que vols eliminar aquest compte de client?"; +$LANG["validation_client_password_missing_number"] = "La contrasenya de client ha de contenir com a mínim un nombre (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "La contrasenya de client ha de tenir un mínim un dels següents caràcters: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "La contrasenya de client ha de contenir almenys una lletra majúscula."; +$LANG["validation_client_password_too_short"] = "La contrasenya de client necessita ser com a mínim {\$number} caràcters."; +$LANG["validation_col_name_is_reserved_word"] = "Ho sentim, aquest nom de columna de base de dades és un treball reservat en MySQL. Si us plau, canvieu el seu nom!"; +$LANG["validation_db_name"] = "Els noms de la base de dades no poden contenir períodes ni barres."; +$LANG["validation_db_not_updated_invalid_input"] = "La base de dades no pot ser actualitzat. Comproveu els valors introduïts són vàlids."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Ho sentim, l'administrador per defecte i els temes client sempre ha d'estar activat."; +$LANG["validation_default_phone_num_required"] = "Si us plau, ompli el número de telèfon complet per al <b> { \$ camp} </ b> - només números."; +$LANG["validation_default_rule_alpha"] = "Si us plau, només ingressar lletres i números per a la <b> { \$ camp} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Si us plau, simplement escriviu les lletres de la <b> { \$ camp} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Si us plau, introdueixi només números per a la <b> { \$ camp} </ b>."; +$LANG["validation_default_rule_required"] = "Si us plau, introduïu un valor per al <b> { \$ camp} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Si us plau, introdueixi una adreça de correu electrònic vàlida per al <b> { \$ camp} </ b>."; +$LANG["validation_delete_form_confirm"] = "Si us plau, marqueu la casella per confirmar que voleu suprimir aquest formulari."; +$LANG["validation_delete_non_empty_option_list"] = "Advertència! Aquesta llista s'utilitza l'opció per un o més camps de formulari. Eliminar farà els camps deixen de funcionar correctament."; +$LANG["validation_display_names_incomplete"] = "Introduïu un valor per a tots els noms de pantalla, o faci clic a l'opció Smart Fill per entrar-hi de forma dinàmica."; +$LANG["validation_duplicate_form_field_name"] = "No es pot tenir diversos camps amb el mateix nom de camp."; +$LANG["validation_email_not_found_or_invalid"] = "Ho sentim, el correu electrònic associada al vostre compte, o no existeix o no és vàlida."; +$LANG["validation_folder_invalid_permissions"] = "Per tal d'executar aquesta prova, els permisos que s'han d'establir a la carpeta de càrrega per a permetre la lectura i escriptura de fitxers (777 a Unix)."; +$LANG["validation_folder_not_writable"] = "Aquesta carpeta no és gravable."; +$LANG["validation_internal_form_too_many_fields"] = "Ho sentim, només es poden crear formularis amb camps de 1000 o menys."; +$LANG["validation_invalid_admin_email"] = "Si us plau introdueix l'adreça de correu electrònic d'un adminstrator vàlida."; +$LANG["validation_invalid_admin_username"] = "El seu nom d'usuari només pot consistir de caràcters alfanumèrics (AZ i 0-9)."; +$LANG["validation_invalid_client_username"] = "Nom d'usuari, el client només pot consistir de caràcters alfanumèrics (AZ i 0-9)."; +$LANG["validation_invalid_client_username2"] = "Ho sentim, nom d'usuari només pot contenir lletres, números i el caràcter de subratllat. Introduïu un nom d'usuari nou."; +$LANG["validation_invalid_column_name"] = "Noms de les columnes només poden ser alfanumèrics (AZ, 0-9). Si us plau, comproveu els noms de columna."; +$LANG["validation_invalid_custom_from_email"] = "Introduïu un costum vàlida "De:" Adreça de correu electrònic."; +$LANG["validation_invalid_custom_reply_to_email"] = "Introduïu un costum vàlida "Reply to" adreça de correu electrònic."; +$LANG["validation_invalid_default_sessions_timeout"] = "Introduïu un valor vàlid (un número) per al temps d'espera de les sessions per defecte."; +$LANG["validation_invalid_email"] = "Introduïu una adreça de correu electrònic vàlida."; +$LANG["validation_invalid_email_id"] = "Ho sento, això és un correu electrònic vàlid d'identificació."; +$LANG["validation_invalid_folder"] = "Ho sentim, aquesta no sembla ser una carpeta vàlida."; +$LANG["validation_invalid_form_field_names"] = "Els camps de formulari només pot ser alfanumèrics i de subratllat (AZ, 0-9, _), sense espais."; +$LANG["validation_invalid_num_clients_per_page"] = "Si us plau, introduïu només números en els clients Número de vots per camp de pàgina."; +$LANG["validation_invalid_num_emails_per_page"] = "Introduïu els dígits només per als correus electrònics per pàgina."; +$LANG["validation_invalid_num_form_fields"] = "Si us plau, només introduir els nombres en el camp Número de camps."; +$LANG["validation_invalid_num_forms_per_page"] = "Si us plau, només introduir nombres en els formularis Num per camp de pàgina."; +$LANG["validation_invalid_num_menus_per_page"] = "Si us plau, només introduir dígits per als menús en cada pàgina."; +$LANG["validation_invalid_num_modules_per_page"] = "Si us plau, introduïu només números en els mòduls de Número de vots per camp de pàgina."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Si us plau, només introduir els nombres en les llistes de Num opció pel camp de pàgina."; +$LANG["validation_invalid_num_submissions_per_page"] = "Introduïu un nombre vàlid de les presentacions per pàgina."; +$LANG["validation_invalid_sessions_timeout"] = "Introduïu un temps d'espera de sessió vàlid (sencers només!)."; +$LANG["validation_invalid_tab_assign_values"] = "Si us plau, introduïu només números en el camp 'De' i 'a' camps."; +$LANG["validation_invalid_table_prefix"] = "Si us plau, introduïu un prefix de la base de dades es compon de lletra i el guió baix només."; +$LANG["validation_invalid_upload_folder"] = "D'instal lació del seu servidor de PHP té una configuració no vàlida per al valor de upload_tmp_dir. "{\$upload_folder}" no és una carpeta vàlida."; +$LANG["validation_invalid_url"] = "Introduïu un URL vàlid."; +$LANG["validation_invalid_username"] = "Nom d'usuari només pot consistir en caràcters alfanumèrics (AZ i 0-9)."; +$LANG["validation_is_form_active"] = "Serveixin-se indicar si el formulari està actiu o no."; +$LANG["validation_menu_name_taken"] = "Ho sentim, el nom del menú està ja presa. Si us plau, escolliu un nou nom."; +$LANG["validation_modules_search_no_status"] = "Si us plau, seleccioneu les caselles de verificació activat o desactivat."; +$LANG["validation_no_access_type"] = "Introduïu el tipus d'accés."; +$LANG["validation_no_account_logout_url"] = "Introduïu l'URL tancar la sessió."; +$LANG["validation_no_account_password_confirmed"] = "Torneu a introduir la seva nova contrasenya."; +$LANG["validation_no_account_password_confirmed2"] = "Torneu a introduir la nova contrasenya."; +$LANG["validation_no_admin_email"] = "Introduïu l'adreça de correu electrònic de l'administrador."; +$LANG["validation_no_admin_theme"] = "Si us plau, el tema del compte d'administrador."; +$LANG["validation_no_admin_theme_swatch"] = "Si us plau, seleccioneu una mostra per al tema d'administrador."; +$LANG["validation_no_client_email"] = "Introduïu l'adreça de correu electrònic del client."; +$LANG["validation_no_client_first_name"] = "Si us plau, introduïu el primer nom del client."; +$LANG["validation_no_client_last_name"] = "Introduïu el cognom del client."; +$LANG["validation_no_client_login_page"] = "Si us plau, indiqui que la pàgina del client ha de ser redirigit a quan inicien la sessió in"; +$LANG["validation_no_client_password"] = "Introduïu la contrasenya del client."; +$LANG["validation_no_client_theme_swatch"] = "Si us plau, seleccioneu una mostra per defecte per als comptes de client."; +$LANG["validation_no_client_username"] = "Introduïu nom d'usuari del client."; +$LANG["validation_no_column_name"] = "Si us plau, introduïu tots els noms de les columnes, o feu clic al botó Farciment intel ligent que automàticament omplir."; +$LANG["validation_no_column_selected"] = "Si us plau, seleccioneu com a mínim un camp a aparèixer com una columna a la pàgina de l'anunci de la presentació."; +$LANG["validation_no_custom_from_email"] = "Introduïu el costum "De:" Adreça de correu electrònic."; +$LANG["validation_no_custom_recipient_email"] = "Introduïu l'adreça del receptor de correu electrònic personalitzades."; +$LANG["validation_no_custom_reply_to_email"] = "Introduïu el costum "Reply to" adreça de correu electrònic."; +$LANG["validation_no_date_format"] = "Introduïu un format de data."; +$LANG["validation_no_db_column_single"] = "Si us plau, introduïu el nom de la columna de base de dades."; +$LANG["validation_no_db_hostname"] = "Si us plau, introduïu el nom de host de base de dades."; +$LANG["validation_no_db_name"] = "Si us plau introdueix el nom de la base."; +$LANG["validation_no_db_username"] = "Si us plau, introduïu el nom d'usuari de base de dades."; +$LANG["validation_no_default_client_theme"] = "Si us plau, el tema per defecte per a totes les noves comptes de clients."; +$LANG["validation_no_default_language"] = "Si us plau, l'idioma predeterminat per a la instal.lació de la Forma Eines."; +$LANG["validation_no_default_sessions_timeout"] = "Si us plau introdueix el període de temps d'espera per defecte per als comptes d'usuari."; +$LANG["validation_no_display_text"] = "Si us plau, introduïu el text de presentació per a cada camp."; +$LANG["validation_no_display_text_single"] = "Si us plau, introduïu el valor de text en pantalla."; +$LANG["validation_no_edit_submission_page_label"] = "Introduïu l'etiqueta de la pàgina de presentació d'edició."; +$LANG["validation_no_email"] = "Si us plau, introdueixi la seva adreça de correu electrònic."; +$LANG["validation_no_email_config_field"] = "Si us plau, especifiqueu quin tipus de camp és el camp de correu electrònic."; +$LANG["validation_no_email_content"] = "Si us plau introdueix el contingut del correu electrònic com a mínim un dels formats (HTML o text)."; +$LANG["validation_no_email_from_field"] = "Si el correu electrònic 'de camp'."; +$LANG["validation_no_email_template_name"] = "Si us plau introdueix el nom de la plantilla de correu electrònic."; +$LANG["validation_no_email_template_view_id"] = "Si us plau, seleccioneu la vista per a que aquesta plantilla de correu electrònic ha de ser assignada."; +$LANG["validation_no_email_template_view_mapping_value"] = "Sírvase indicar si el missatge ha de ser enviat."; +$LANG["validation_no_enabled_themes"] = "Assegureu-vos que està habilitat com a mínim un tema."; +$LANG["validation_no_first_name"] = "Si us plau introdueix el teu nom de pila."; +$LANG["validation_no_form_field_name"] = "Introduïu tots els noms dels camps de formulari."; +$LANG["validation_no_form_field_single"] = "Si us plau, introduïu el valor de camp de formulari."; +$LANG["validation_no_form_id"] = "La forma d'identificació no s'ha especificat. Si us plau, surti i torni a intentar-ho."; +$LANG["validation_no_form_name"] = "Introduïu el nom del formulari."; +$LANG["validation_no_form_url"] = "Introduïu l'adreça URL formulari."; +$LANG["validation_no_last_name"] = "Introdueixi el seu cognom."; +$LANG["validation_no_login_page"] = "Si us plau, indiqui que la pàgina que voleu que s'envia cada vegada que entreu"; +$LANG["validation_no_logout_url"] = "Introduïu l'adreça URL tancar la sessió."; +$LANG["validation_no_main_email_recipient"] = "Si us plau, introduïu com a mínim un destinatari de correu electrònic principal (és a dir, no un CC o BCC)."; +$LANG["validation_no_menu"] = "Si us plau, seleccioneu un menú per aquest compte d'usuari."; +$LANG["validation_no_menu_id"] = "Si us plau, seleccioneu un menú."; +$LANG["validation_no_num_clients_per_page"] = "Si us plau, introduïu el número de comptes de client per pàgina."; +$LANG["validation_no_num_emails_per_page"] = "Si us plau, introduïu el número de missatges de correu electrònic a la llista per pàgina."; +$LANG["validation_no_num_form_fields"] = "Si us plau, introduïu el número de camps del formulari."; +$LANG["validation_no_num_forms_per_page"] = "Si us plau, introduïu el número de formularis per pàgina."; +$LANG["validation_no_num_menus_per_page"] = "Si us plau, introduïu el número de menús a la llista per pàgina."; +$LANG["validation_no_num_modules_per_page"] = "Si us plau, introduïu el número de mòduls per pàgina."; +$LANG["validation_no_num_option_lists_per_page"] = "Si us plau, introduïu el número de llistes d'opcions en cada pàgina."; +$LANG["validation_no_num_submissions_per_page"] = "Si us plau, introduïu el número de presentacions per a mostrar per pàgina."; +$LANG["validation_no_option_list_name"] = "Si us plau, introduïu el nom de la llista d'opcions."; +$LANG["validation_no_page_titles"] = "Si us plau, introduïu els títols de la pàgina per defecte per als comptes d'usuari."; +$LANG["validation_no_password"] = "Si us plau, introdueixi la seva contrasenya."; +$LANG["validation_no_program_name"] = "Introduïu el nom del programa."; +$LANG["validation_no_second_password"] = "Si us plau, torneu a introduir la contrasenya."; +$LANG["validation_no_sessions_timeout"] = "Si us plau, introduïu el temps d'espera de sessió."; +$LANG["validation_no_smart_fill_values"] = "Introduïu el nom de camp de formulari i l'URL de la forma."; +$LANG["validation_no_table_prefix"] = "Si us plau, introduïu un prefix de la base de dades."; +$LANG["validation_no_tabs_defined"] = "No es defineix aquí"; +$LANG["validation_no_test_email_recipient"] = "Introduïu l'adreça de correu electrònic d'on hem d'enviar el correu electrònic de prova."; +$LANG["validation_no_test_email_submission_id"] = "Si us plau, introduïu el número d'identificació de la presentació."; +$LANG["validation_no_theme"] = "Si us plau, seleccioneu un tema."; +$LANG["validation_no_theme_swatch"] = "Si us plau, seleccioneu una mostra del tema seleccionat."; +$LANG["validation_no_timezone_offset"] = "Introduïu la zona horària."; +$LANG["validation_no_titles"] = "Si us plau, introduïu els títols de la pàgina."; +$LANG["validation_no_two_column_names"] = "Ho sentim, vostè no pot entrar en el mateix nom de la columna de base de dades dues vegades."; +$LANG["validation_no_ui_language"] = "Si us plau, seleccioneu un idioma per la interfície."; +$LANG["validation_no_url"] = "Introduïu una adreça URL."; +$LANG["validation_no_username"] = "Si us plau introdueix el teu nom d'usuari."; +$LANG["validation_no_username_or_js"] = "Vostè ha d'ingressar el seu nom d'usuari. Si us plau, activa JavaScript al vostre navegador."; +$LANG["validation_no_view_fields"] = "La seva vista no conté cap dels camps! Ha de concedir com a mínim un camp perquè hi hagi una cosa que mostrar a la vista."; +$LANG["validation_no_view_fields_selected"] = "Si us plau, seleccioneu un o més camps per afegir a la vista."; +$LANG["validation_no_view_name"] = "Introduïu el nom de la vista."; +$LANG["validation_num_rows_to_add"] = "Si us plau, introduïu el número de files que afegir."; +$LANG["validation_option_list_name_taken"] = "Ho sentim, aquest nom de la llista d'opcions ja està presa. Si us plau, escolliu un nou nom."; +$LANG["validation_password_in_password_history"] = "Per a més seguretat, no es pot introduir la mateixa contrasenya com qualsevol dels darrers {\$history_size} contrasenyes. Si us plau, introduïu una contrasenya diferent."; +$LANG["validation_passwords_different"] = "Assegureu-vos que les contrasenyes són les mateixes."; +$LANG["validation_please_enter_search_date_range"] = "Si us plau, el període de temps de cerca."; +$LANG["validation_please_enter_search_keyword"] = "Si us plau, introduïu la paraula clau de cerca."; +$LANG["validation_select_field_type"] = "Si us plau, seleccioneu un tipus de camp."; +$LANG["validation_select_submissions_to_copy"] = "Seleccioneu aquells enviaments que vulgueu copiar."; +$LANG["validation_select_submissions_to_delete"] = "Si us plau, seleccioneu les propostes que li agradaria eliminar."; +$LANG["validation_smart_fill_cannot_fill"] = "Ho sentim, no podem posar en aquest camp."; +$LANG["validation_smart_fill_invalid_field_type"] = "No hem pogut localitzar un camp, però no és un menú desplegable, quadre de verificació o d'un grup de ràdio."; +$LANG["validation_smart_fill_no_field_found"] = "Ho sentim, no hem pogut trobar un camp de formulari amb aquest nom a la pàgina especificada."; +$LANG["validation_smart_fill_no_page"] = "Si us plau, cerqueu la pàgina que conté el camp que voleu Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Si us plau, càrrega totes les pàgines del formulari."; +$LANG["validation_upload_folder_not_writable"] = "Aquesta carpeta de càrrega temporal especificat per la seva instal lació de PHP no es pot escriure. Fins que se solucioni això, els arxius no es poden carregar a través de formulari d'eines (o qualsevol altre programa en PHP). Poseu-vos en contacte amb el proveïdor d'allotjament."; +$LANG["validation_upload_html_files_only"] = "Si us plau, només pujar els fitxers HTML."; +$LANG["validation_username_taken"] = "Ho sentim, aquest nom d'usuari ja està presa. Introduïu un altre nom d'usuari."; +$LANG["validation_wrong_password"] = "Ho sentim, que la contrasenya no coincideix."; +$LANG["word_about"] = "Sobre"; +$LANG["word_access"] = "Accés"; +$LANG["word_account"] = "Compte"; +$LANG["word_account_sp"] = "Compte (s)"; +$LANG["word_accounts"] = "Comptes"; +$LANG["word_action"] = "Acció"; +$LANG["word_active"] = "Actiu"; +$LANG["word_add"] = "Afegir"; +$LANG["word_add_rightarrow"] = "Afegir »"; +$LANG["word_add_uc_rightarrow"] = "Afegir »"; +$LANG["word_administration"] = "Administració"; +$LANG["word_administrator"] = "Administrador"; +$LANG["word_after"] = "Després de"; +$LANG["word_aquamarine"] = "Aguamarina"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Tornar"; +$LANG["word_bcc_c"] = "CCO:"; +$LANG["word_before"] = "Abans de"; +$LANG["word_benefits"] = "Beneficis"; +$LANG["word_blue"] = "Blau"; +$LANG["word_cancel"] = "Cancel"; +$LANG["word_cc_c"] = "CC:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Caselles de verificació"; +$LANG["word_checklist"] = "Llista de comprovació"; +$LANG["word_client"] = "Client"; +$LANG["word_client_c"] = "Client:"; +$LANG["word_clients"] = "Clients"; +$LANG["word_close"] = "Tancar"; +$LANG["word_code"] = "Codi"; +$LANG["word_column"] = "Columna"; +$LANG["word_columns"] = "Columnes"; +$LANG["word_columns_sp"] = "Columna (s)"; +$LANG["word_complete"] = "Completa"; +$LANG["word_configuration"] = "Configuració"; +$LANG["word_content"] = "Contingut"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continua »"; +$LANG["word_copy"] = "Copia"; +$LANG["word_custom"] = "Costum"; +$LANG["word_data"] = "Dades"; +$LANG["word_date"] = "Data"; +$LANG["word_debugging_c"] = "Depuració:"; +$LANG["word_delete"] = "Esborrar"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Directe"; +$LANG["word_disabled"] = "Les persones de mobilitat reduïda"; +$LANG["word_documentation"] = "Documentació"; +$LANG["word_done"] = "Fet"; +$LANG["word_drawbacks"] = "Desavantatges"; +$LANG["word_dropdown"] = "Desplegable"; +$LANG["word_edit"] = "Edita"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Correu"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Missatges de correu electrònic"; +$LANG["word_enabled"] = "Habilitat"; +$LANG["word_equals"] = "És igual a"; +$LANG["word_error"] = "Error"; +$LANG["word_error_c"] = "Error:"; +$LANG["word_examples_c"] = "Exemples:"; +$LANG["word_external"] = "Exterior"; +$LANG["word_fail"] = "No"; +$LANG["word_field"] = "Camp"; +$LANG["word_field_sp"] = "Camp (s)"; +$LANG["word_fields"] = "Camps"; +$LANG["word_fields_sp"] = "Camp (s)"; +$LANG["word_file"] = "Arxiu"; +$LANG["word_file_b_uc"] = "[ARXIU]"; +$LANG["word_files"] = "Arxius"; +$LANG["word_filters"] = "Filtres"; +$LANG["word_filters_sp"] = "Filtre (s)"; +$LANG["word_for"] = "per"; +$LANG["word_form"] = "Forma"; +$LANG["word_form_c"] = "Forma:"; +$LANG["word_formatting"] = "Format"; +$LANG["word_forms"] = "Formularis"; +$LANG["word_found"] = "Trobat"; +$LANG["word_from"] = "Des"; +$LANG["word_from_c"] = "De:"; +$LANG["word_general"] = "General"; +$LANG["word_green"] = "Verd"; +$LANG["word_grey"] = "Gris"; +$LANG["word_height"] = "Alçada"; +$LANG["word_help"] = "Ajuda"; +$LANG["word_hidden"] = "Ocult"; +$LANG["word_highlight"] = "Destacar"; +$LANG["word_horizontal"] = "Horitzontal"; +$LANG["word_hour"] = "Hores"; +$LANG["word_hours"] = "Hores"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Imatge"; +$LANG["word_incomplete"] = "Incompleta"; +$LANG["word_install"] = "Instal leu"; +$LANG["word_installation"] = "Instal · lació"; +$LANG["word_internal"] = "Intern"; +$LANG["word_language"] = "Idioma"; +$LANG["word_large"] = "Gran"; +$LANG["word_like"] = "Agradar"; +$LANG["word_login"] = "Inici de sessió"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Tancar sessió"; +$LANG["word_main"] = "Inici"; +$LANG["word_medium"] = "Medi"; +$LANG["word_menu"] = "Menú"; +$LANG["word_menus"] = "Menús"; +$LANG["word_minutes"] = "minuts"; +$LANG["word_misc"] = "Diversos"; +$LANG["word_module"] = "Mòdul"; +$LANG["word_modules"] = "Mòduls"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Nom"; +$LANG["word_name_c"] = "Nom:"; +$LANG["word_never"] = "Mai"; +$LANG["word_next_rightarrow"] = "Següent »"; +$LANG["word_next_step_rightarrow"] = "Pas següent »"; +$LANG["word_no"] = "No"; +$LANG["word_none"] = "Cap"; +$LANG["word_notes"] = "Notes"; +$LANG["word_notification"] = "Notificació"; +$LANG["word_number"] = "Número"; +$LANG["word_off"] = "Aturar"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Bé"; +$LANG["word_on"] = "Encesa"; +$LANG["word_online"] = "En línia"; +$LANG["word_operator"] = "Operador"; +$LANG["word_options"] = "Opcions"; +$LANG["word_orange"] = "Taronja"; +$LANG["word_order"] = "Ordre"; +$LANG["word_other"] = "Un altre"; +$LANG["word_other_c"] = "Altres:"; +$LANG["word_page"] = "Pàgina"; +$LANG["word_page_c"] = "Pàgina:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Contrasenya"; +$LANG["word_password_c"] = "Contrasenya:"; +$LANG["word_pending"] = "Pendent"; +$LANG["word_permissions"] = "Permisos"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Anterior"; +$LANG["word_private"] = "Privat"; +$LANG["word_public"] = "Pública"; +$LANG["word_purple"] = "Porpra"; +$LANG["word_recipient"] = "Destinatari"; +$LANG["word_recipient_sp"] = "Destinatari (s)"; +$LANG["word_red"] = "Vermell"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Eliminar"; +$LANG["word_remove_uc_leftarrow"] = "«Elimina"; +$LANG["word_reply_to"] = "Respondre"; +$LANG["word_reply_to_c"] = "Reply to:"; +$LANG["word_required"] = "Cal"; +$LANG["word_reset"] = "He perdut"; +$LANG["word_resolved"] = "Resolt"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "fila"; +$LANG["word_search"] = "Cerca"; +$LANG["word_searchable"] = "Cerca"; +$LANG["word_select"] = "Seleccioneu"; +$LANG["word_setting"] = "Escenari"; +$LANG["word_settings"] = "Configuració"; +$LANG["word_show"] = "Mostra"; +$LANG["word_size"] = "Mida"; +$LANG["word_skipped"] = "Skipped"; +$LANG["word_small"] = "Petit"; +$LANG["word_solution"] = "Solució"; +$LANG["word_sortable"] = "Astres"; +$LANG["word_start"] = "Començament"; +$LANG["word_status"] = "Estatus"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Tema"; +$LANG["word_subject_c"] = "Tema"; +$LANG["word_submenu"] = "Submenú"; +$LANG["word_submission"] = "Presentació"; +$LANG["word_submissions"] = "Peticions"; +$LANG["word_system"] = "Sistema"; +$LANG["word_tab"] = "Fitxa"; +$LANG["word_tabs"] = "Aquí"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Prova"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Quadre de text"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temes"; +$LANG["word_time"] = "Temps"; +$LANG["word_tiny"] = "Diminut"; +$LANG["word_tips"] = "Consells"; +$LANG["word_today"] = "Avui"; +$LANG["word_truncate_q"] = "Truncar?"; +$LANG["word_uninstall"] = "Desinstal"; +$LANG["word_unknown"] = "Desconegut"; +$LANG["word_update"] = "Actualitzar"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Usuari"; +$LANG["word_username"] = "Nom d'usuari"; +$LANG["word_username_c"] = "Nom d'usuari:"; +$LANG["word_validation"] = "Validació"; +$LANG["word_value"] = "Valor"; +$LANG["word_value_sp"] = "Valor (s)"; +$LANG["word_verified"] = "Verificat"; +$LANG["word_verify"] = "Verificar"; +$LANG["word_version"] = "Versió"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Veure"; +$LANG["word_views"] = "Vistes"; +$LANG["word_warning"] = "Advertència!"; +$LANG["word_warning_c"] = "Avís:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Benvingut!"; +$LANG["word_width_c"] = "ample:"; +$LANG["word_words"] = "Paraules"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Groc"; +$LANG["word_yes"] = "Sí"; \ No newline at end of file diff --git a/global/lang/cs.php b/global/lang/cs.php new file mode 100644 index 00000000..4c322842 --- /dev/null +++ b/global/lang/cs.php @@ -0,0 +1,1219 @@ +Pozor! Vybrali jste si {\$num_selected_on_page} podání na této stránce a {\$num_selected_on_other_pages} na jiných stránkách. Prosím, vyberte jednu z následujících možností:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Pozor! Nevybrali jste žádné připomínky na této stránce, ale jste si zvolili {\$num_selected_on_other_pages} na jiných stránkách. Potvrďte prosím, které chcete odstranit tato podání.
    "; +$LANG["confirm_delete_view"] = "Jste si jisti, že chcete smazat tento pohled?"; +$LANG["confirm_refresh_page"] = "Jste si jisti, že chcete obnovit stránku? Tím se ztratí všechny změny, které jste provedli."; +$LANG["confirm_save_change_before_redirect"] = "Jedno nebo více polí byly aktualizovány. Chcete uložit změny před přesměrováním?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Jste si jisti, že chcete Smart Vyplňte jména sloupec databáze? Toto přepíše vaší existující hodnoty."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Tato volba automaticky generuje název sloupce databáze na polích zobrazovat text, takže obsah tabulky databáze se snáze čtou."; +$LANG["confirm_smart_fill_display_names"] = "Jste si jisti, že chcete Smart Fill zobrazení jména? Toto přepíše vaší existující hodnoty."; +$LANG["confirm_ungroup_option_list"] = "Jste si jisti, že chcete tuto možnost oddělit seznamu? Všechny volby budou koncentrovaný do jednoho, neseskupený seznam."; +$LANG["confirm_uninstall_module"] = "Jste si jisti, že chcete odinstalovat tento modul? Všechny modul data budou ztracena."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Pá."; +$LANG["date_Friday"] = "Pátek"; +$LANG["date_Mon"] = "Po."; +$LANG["date_Monday"] = "Pondělí"; +$LANG["date_PM"] = "AM"; +$LANG["date_Sat"] = "So."; +$LANG["date_Saturday"] = "Sobota"; +$LANG["date_Sun"] = "Slunce"; +$LANG["date_Sunday"] = "Neděle"; +$LANG["date_Thu"] = "Čt."; +$LANG["date_Thursday"] = "Čtvrtek"; +$LANG["date_Tue"] = "Út."; +$LANG["date_Tuesday"] = "Úterý"; +$LANG["date_Wed"] = "St"; +$LANG["date_Wednesday"] = "Středa"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Duben"; +$LANG["date_month_August"] = "Srpen"; +$LANG["date_month_December"] = "Prosinec"; +$LANG["date_month_February"] = "Únor"; +$LANG["date_month_January"] = "Leden"; +$LANG["date_month_July"] = "Červenec"; +$LANG["date_month_June"] = "Červen"; +$LANG["date_month_March"] = "Březen"; +$LANG["date_month_May"] = "Může"; +$LANG["date_month_November"] = "Listopad"; +$LANG["date_month_October"] = "Říjen"; +$LANG["date_month_September"] = "Září"; +$LANG["date_month_short_Apr"] = "Duben"; +$LANG["date_month_short_Aug"] = "Srpen"; +$LANG["date_month_short_Dec"] = "Prosinec"; +$LANG["date_month_short_Feb"] = "Únor"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Červenec"; +$LANG["date_month_short_Jun"] = "Červen"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Může"; +$LANG["date_month_short_Nov"] = "Listopad"; +$LANG["date_month_short_Oct"] = "Říjen"; +$LANG["date_month_short_Sep"] = "Září"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Uživatelský účet byl smazán."; +$LANG["notify_account_updated"] = "Váš účet byl úspěšně aktualizován."; +$LANG["notify_add_display_values"] = "Přidat Displej Hodnoty"; +$LANG["notify_admin_menu_updated"] = "Administrativa nabídka byla aktualizována."; +$LANG["notify_admin_theme_overridden"] = "Správce motiv byl ručně manipulovat."; +$LANG["notify_allow_url_fopen_not_set"] = "Omlouvám se, ale tento test nelze spustit na vašem webovém serveru. To vyžaduje, aby allow_url_fopen být nastaven na 1 v souboru php.ini. Toto nastavení PHP umožňuje přístup k souborům přes URL, která je potřebná k provedení této zkoušky. Můžete vyzkoušet ručně nahrát soubor do této složky přes FTP, pak se snaží přistupovat na URL, které jste dodali."; +$LANG["notify_change_temp_password"] = "Právě jste přihlášeni s dočasným heslem. Měli byste změnu hesla teď!"; +$LANG["notify_click_to_edit_new_submission"] = "Klikněte zde pro úpravu nového podání."; +$LANG["notify_client_account_menus_updated"] = "Účtu klienta (y) byly aktualizovány na {\$menu_name} menu. Nyní můžete smazat nabídku, která byla dříve spojena s účtem (y)."; +$LANG["notify_client_account_not_updated"] = "Klientský účet může být aktualizován."; +$LANG["notify_client_account_themes_updated"] = "Účtu klienta (y) byly aktualizovány na {\$theme} tématu. Nyní můžete vypnout téma dříve spojené s účtem (y)."; +$LANG["notify_client_account_updated"] = "Klientský účet byl úspěšně aktualizován."; +$LANG["notify_client_menu_deleted"] = "Klient menu byla smazána."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "V menu byl zrušen, ale tyto účty nyní již nemají menu! Musíte aktualizovat tyto účty:"; +$LANG["notify_client_menu_updated"] = "Klient nabídka byla aktualizována."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Omlouváme se, menu, které se pokusil odstranit se již používají klienti uvedených níže. Za účelem odstranění nabídky, budete muset nejprve přiřadit klienty do jiných nabídkách. Klikněte na jméno klienta, který chcete upravit individuální účet, nebo postoupit všechny účty na jinou pomocí rozbalovací menu níže."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Je nám líto, jsou jedním z témat, které jste právě zdravotním postižením již používány tímto klientských účtů. S cílem oslabit motiv, který bude muset nejprve přiřadit každému klientovi k jinému tématu. Klikněte na jméno klienta, který chcete upravit individuální účet, nebo postoupit všechny účty na téma pomocí rozbalovací níže."; +$LANG["notify_edit_email_fields_link"] = "Klikněte zde určit, které pole formuláře jsou pole e-mail, takže cíl je ve vaší e-mailové šablony."; +$LANG["notify_edit_field_new_field"] = "Jedná se o novou oblast. Budete muset aktualizovat na hlavní stránku dříve, než budou moci plně upravit tuto oblast."; +$LANG["notify_edit_option_list_after_save"] = "Musíte vybrat možnost seznam a pak na Uložit změny, než budou moci upravit."; +$LANG["notify_email_field_config_deleted"] = "Konfiguraci e-mailu byla smazána."; +$LANG["notify_email_fields_not_updated"] = "Omlouváme se, ale nemohli jsme aktualizovat pole emailu."; +$LANG["notify_email_fields_updated"] = "E-mail oblastech byly aktualizovány."; +$LANG["notify_email_not_sent"] = "Je nám líto, e-mail nebude odeslán. Prosím, kontaktujte správce stránky na níže uvedenou adresu."; +$LANG["notify_email_not_sent_c"] = "Litujeme, nelze odeslat e-mail:"; +$LANG["notify_email_sent"] = "E-mail (y), které byly zaslány."; +$LANG["notify_email_template_deleted"] = "E-mail šablona byla již odstraněna."; +$LANG["notify_email_template_updated"] = "E-mail šablona má být aktualizován."; +$LANG["notify_enabled_module_list_updated"] = "Seznam podporovaných modulů byla aktualizována."; +$LANG["notify_error_saving_fields"] = "Došlo k chybě při ukládání polí."; +$LANG["notify_field_changes_saved"] = "Změny v oblasti (s) byly uloženy."; +$LANG["notify_field_options_smart_filled"] = "Váš oblasti možnosti byly inteligentní vyplněna."; +$LANG["notify_field_selected"] = "Pozemek byl vybrán. Klikněte zde pro návrat na hlavní pole seznamu."; +$LANG["notify_field_updated"] = "Této oblasti byla aktualizována."; +$LANG["notify_file_not_uploaded"] = "Soubor se nepodařilo nahrát."; +$LANG["notify_file_uploaded"] = "Soubor byl úspěšně nahrán."; +$LANG["notify_filters_not_updated"] = "Došlo k chybě při aktualizaci tohoto klienta podání filtry."; +$LANG["notify_filters_updated"] = "Podání filtry byly aktualizovány pro tohoto klienta."; +$LANG["notify_folder_correct_permissions"] = "Tato složka má správná oprávnění."; +$LANG["notify_folder_url_match"] = "Složku a URL může vypadat správně odpovídat."; +$LANG["notify_folder_url_no_access"] = "Tato zkouška nemohla být provedena, protože PHP nemohla, že přístup k URL. Toto je obvykle způsobeno tím, že adresy URL chráněné heslem se. Htaccess."; +$LANG["notify_folder_url_no_match"] = "Tato složka-URL kombinace nezdá být zápas."; +$LANG["notify_folder_url_unknown_error"] = "Došlo k neznámé chybě. Můžete vyzkoušet ručně nahrát soubor do této složky přes FTP, pak se snaží přistupovat na URL, které jste dodali."; +$LANG["notify_form_access_type_email_info"] = "Tato forma má přístup správce typ, takže žádný klient nemá přístup k němu, které nejsou uvedeny v rozbalovací nabídce dole."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Omlouváme se, formulář s tímto ID neexistuje."; +$LANG["notify_form_field_not_added"] = "Formulářové pole '{\$fieldname}' se nepodařilo přidat."; +$LANG["notify_form_field_options_updated"] = "Možnosti pole formuláře byly aktualizovány."; +$LANG["notify_form_field_removed"] = "Pole formuláře byl úspěšně odstraněn."; +$LANG["notify_form_fields_removed"] = "Pole formuláře byly úspěšně odstraněny."; +$LANG["notify_form_not_updated_notify_admin"] = "Formuláře nelze aktualizovat. Kontaktujte prosím správce webu na zprávy tohoto problému."; +$LANG["notify_form_settings_updated"] = "Formuláře nastavení byla úspěšně aktualizována."; +$LANG["notify_form_submission_updated"] = "Odeslání formuláře byl aktualizován."; +$LANG["notify_form_tabs_updated"] = "Karty byly aktualizovány."; +$LANG["notify_form_updated"] = "Formulář byl úspěšně aktualizován."; +$LANG["notify_form_views_updated"] = "Zobrazení formuláře byly aktualizovány."; +$LANG["notify_install_invalid_db_info"] = "Omlouváme se, nebyli jsme schopni se připojit k databázi na základě informací, které jste dodali. Chyba vrácená databází je: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Formulář byl vytvořen! Můžete si nastavit podobě prostřednictvím těchto karet."; +$LANG["notify_invalid_account_information_in_sessions"] = "V úvahu informace uložené v sezení je neplatný. Přihlaste se znovu níže."; +$LANG["notify_invalid_license_key"] = "Je nám líto, že se nezdá být platný licenční klíč. Prosím, zkuste zadat znovu."; +$LANG["notify_invalid_permissions"] = "Nemáte oprávnění pro přístup k této stránce. Byli jste odhlášeni."; +$LANG["notify_invalid_search_dates"] = "Použijte prosím DatePicker uvést platnou termíny."; +$LANG["notify_invalid_upload_folder"] = "Nahrát složka je buď neplatné, nebo nelze zapisovat."; +$LANG["notify_lang_list_updated"] = "Jazyk uživatelského rozhraní jsou k dispozici seznam byl aktualizován."; +$LANG["notify_login_info_emailed"] = "Své přihlašovací údaje bylo zasláno."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Jejda, je tento modul již nainstalován!"; +$LANG["notify_module_installed"] = "Modul byl instalován. Klikněte zde pro výběr modulu."; +$LANG["notify_module_list_updated"] = "Modul seznam byl aktualizován."; +$LANG["notify_module_uninstalled"] = "Modul has been uninstalled."; +$LANG["notify_module_updated"] = "{\$module} Modul byl aktualizován na {\$version}. Klikněte zde pro výběr modulu ."; +$LANG["notify_multi_field_selected"] = "Pozemek byl vybrán. Klikněte zde pro zobrazení a úpravy pole možností."; +$LANG["notify_multi_field_updated"] = "Této oblasti byla aktualizována. Budete mít možnost konfigurovat pole možností po nastavení formuláře."; +$LANG["notify_multiple_fields_found"] = "Více prvků byly zjištěny u této oblasti jménem ({\$field_name}). Tato situace může nastat, pokud vaše stránka obsahuje více než jednu formu, nebo pokud si náhodou jmenoval jeden z formulářů stejný jako druhý. Prosím, vyberte tu, kterou chcete ze seznamu níže."; +$LANG["notify_new_default_view_created"] = "Nový, výchozí zobrazení a obsahuje všechny pole formuláře byl vytvořen."; +$LANG["notify_new_submission_created"] = "Podání bylo vytvořeno. Můžete ji upravit níže."; +$LANG["notify_no_account_id_in_sessions"] = "No user ID účtu byl nalezen v sezení. Přihlaste se znovu níže."; +$LANG["notify_no_api_installed"] = "Nemáte nainstalován API"; +$LANG["notify_no_client_permissions"] = "Nejsou k dispozici žádné nastavení upravit."; +$LANG["notify_no_email_template_selected"] = "Prosím zvolte šablonu e-mailu."; +$LANG["notify_no_emails_defined"] = "Žádné e-maily, které byly pro tento formulář. Chcete-li přidat nový, klikněte na tlačítko níže."; +$LANG["notify_no_field_settings"] = "Tento typ pole neobsahuje žádná další nastavení."; +$LANG["notify_no_fields_in_tab"] = "Tato záložka neobsahuje žádné pole."; +$LANG["notify_no_option_lists"] = "Nejsou žádné možnosti seznamy definované. Klikněte na tlačítko níže pro vytvoření nového."; +$LANG["notify_no_test_submission"] = "Formulář Nástroje neobdržel úspěšný test podání dosud."; +$LANG["notify_no_user_email_fields_configured"] = "Poznámka: Chcete-li poslat e-mail na libovolnou e-mailovou adresu, která byla zahrnuta v podobě, musíte nejprve nakonfigurovat pole formulář e-mail."; +$LANG["notify_no_views"] = "Formulář nemá žádné Zobrazení nastavení! Budete potřebovat alespoň jeden pohled, aby ke správě dat formuláře."; +$LANG["notify_no_views_assigned_to_client_form"] = "Zdá se, že váš uživatelský účet nebylo přiděleno žádné formě zobrazení, takže nebudete mít možnost vidět žádná data. Prosím kontaktujte správce pro další pomoc."; +$LANG["notify_no_views_defined"] = "Nemáte nějaké názory, definované. Nebudete moci prohlížet tuto formu tvrzení, pokud alespoň jeden pohled je vytvořen. Klikněte na tlačítko níže pro vytvoření výchozí zobrazení."; +$LANG["notify_option_list_deleted"] = "Seznam volby byl vymazán."; +$LANG["notify_option_list_updated"] = "Možnost seznam byl aktualizován."; +$LANG["notify_public_form_omit_list_updated"] = "Klient vynechat seznamu tohoto formuláře byl aktualizován."; +$LANG["notify_public_view_omit_list_updated"] = "Klient vynechat seznam pro tento názor byl aktualizován."; +$LANG["notify_required_admin_pages"] = "Na následujících stránkách je zapotřebí v menu Správce: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Omlouváme se, nebyl žádnou činnost nějakou dobu, takže jsme museli vás z něj odhlásí. Přihlaste se znovu níže."; +$LANG["notify_setup_options_updated"] = "Možnosti nastavení byly aktualizovány."; +$LANG["notify_smart_fill_field_not_found"] = "Nepodařilo se nám najít oblast s tímto názvem ({\$field_name}) ve formě (s) specified. Můžete buď ručně nastavit typ pole níže, nebo klepněte na tlačítko Přeskočit na tuto oblast upravit později."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Váš soubor (y) byly úspěšně uloženy. Zkuste kliknout na tlačítko Smart Fill a zkuste to znovu. Pokud je tento krok nezdaří, bude nutné tento krok přeskočit a nastavit pole formuláře manally později."; +$LANG["notify_smart_fill_submitted"] = "Formulář byl předložen. V závislosti na velikosti formy a počtu terénních možností, může to chvíli trvat."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Omlouváme se, jeden nebo více souborů, které jste zadali se nepodařilo nahrát. Budete muset tento krok přeskočit a konfigurovat pole ručně."; +$LANG["notify_submission_and_files_deleted"] = "Předkládání a jakýkoliv soubor (y) s ní spojené byly úspěšně smazána."; +$LANG["notify_submission_copied"] = "Podání bylo zkopírováno."; +$LANG["notify_submission_copied_edit"] = "Podání bylo zkopírováno. Můžete jej upravit níže."; +$LANG["notify_submission_deleted"] = "Podání bylo úspěšně smazána."; +$LANG["notify_submission_deleted_with_problems"] = "Odevzdání byl zrušen, ale tyto problémy nastaly při pokusu smazat následující soubor (y):"; +$LANG["notify_submission_id_not_found"] = "Předložení ID nebyl nalezen."; +$LANG["notify_submission_not_updated"] = "Podání nelze aktualizovat."; +$LANG["notify_submissions_and_files_deleted"] = "Podání a jakýkoliv soubor (y), které jsou s nimi byla úspěšně smazána."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} podání byly zkopírovány."; +$LANG["notify_submissions_deleted"] = "Příspěvky byly úspěšně smazána."; +$LANG["notify_submissions_deleted_with_problems"] = "Připomínky byly zrušeny, ale tyto problémy nastaly při pokusu smazat následující soubor (y):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Váš e-mail zkouška se nepodařilo odeslat."; +$LANG["notify_theme_cache_folder_not_writable"] = "Toto téma je složka mezipaměti nelze zapisovat. K tomu, aby toto téma, {\$folder} složku, musí mít plnou číst-psát dovolení."; +$LANG["notify_theme_list_updated"] = "Téma seznam byl aktualizován."; +$LANG["notify_themes_settings_updated"] = "Vaše téma nastavení byly aktualizovány."; +$LANG["notify_view_deleted"] = "Pohled byl vymazán."; +$LANG["notify_view_group_deleted"] = "Zobrazit sestava byla smazána."; +$LANG["notify_view_missing_columns"] = "Oops! Omlouváme se, ale toto zobrazení není plně nastaven."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klikněte zde určit, které oblasti by se měla objevit jako sloupce na této stránce."; +$LANG["notify_view_updated"] = "Pohled byl aktualizován."; +$LANG["notify_your_email_sent"] = "Váš e-mail byl úspěšně odeslán."; +$LANG["phrase_100_per_page"] = "100 na stránku"; +$LANG["phrase_10_per_page"] = "10 na stránku"; +$LANG["phrase_15_per_page"] = "15 na stránku"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 na stránku"; +$LANG["phrase_25_per_page"] = "25 na stránku"; +$LANG["phrase_2_code"] = "2. Kód"; +$LANG["phrase_2_columns"] = "2 sloupce"; +$LANG["phrase_2chars"] = "2 znaky"; +$LANG["phrase_3_columns"] = "3 sloupce"; +$LANG["phrase_4_columns"] = "4 sloupce"; +$LANG["phrase_50_per_page"] = "50 na stránku"; +$LANG["phrase_accepting_submissions"] = "(přijetí podání)"; +$LANG["phrase_access_admin_account_c"] = "Můžete přistupovat ke svému účtu správy zde:"; +$LANG["phrase_access_type"] = "Typ přístupu"; +$LANG["phrase_account_info"] = "Informace o účtu"; +$LANG["phrase_account_settings"] = "Nastavení účtu"; +$LANG["phrase_action_needed"] = "Zásah je třeba provést"; +$LANG["phrase_add_client"] = "Přidat Klient"; +$LANG["phrase_add_client_menu"] = "Přidat klientů Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Add default nastavení »"; +$LANG["phrase_add_field"] = "Přidat pole"; +$LANG["phrase_add_fields"] = "Přidat Oblasti"; +$LANG["phrase_add_fields_rightarrow"] = "Přidat pole (s) »"; +$LANG["phrase_add_form"] = "Přidat Forma"; +$LANG["phrase_add_form_external"] = "Přidat Formulář - Externí"; +$LANG["phrase_add_form_internal"] = "Přidat Formulář - Vnitřní"; +$LANG["phrase_add_new_group_rightarrow"] = "Přidat novou skupinu »"; +$LANG["phrase_add_num_rows"] = "Přidejte {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Podání tlačítko Vložit"; +$LANG["phrase_add_view_rightarrow"] = "Přidat pohled »"; +$LANG["phrase_adding_multi_page_form"] = "Přidání multi-stránkový formulář s API"; +$LANG["phrase_adding_single_page_form"] = "Přidání jediné-stránkový formulář s API"; +$LANG["phrase_admin_menu"] = "Správce Menu"; +$LANG["phrase_admin_only"] = "Pouze správce"; +$LANG["phrase_admin_panel"] = "Admin panel"; +$LANG["phrase_administrator_theme"] = "Správce Téma"; +$LANG["phrase_advanced_settings_rightarrow"] = "Rozšířené nastavení »"; +$LANG["phrase_all_X_results_selected"] = "Všechny {\$numresults} Vybrané výsledky"; +$LANG["phrase_all_clients"] = "Všichni klienti"; +$LANG["phrase_all_clients_except_c"] = "Všichni klienti s výjimkou:"; +$LANG["phrase_all_clients_have_access"] = "(všichni klienti mají přístup)"; +$LANG["phrase_all_fields"] = "Všechna pole"; +$LANG["phrase_all_fields_displayed"] = "Všechna pole jsou zobrazeny"; +$LANG["phrase_all_statuses"] = "Všechny stavy"; +$LANG["phrase_all_submissions"] = "Všechny příspěvky"; +$LANG["phrase_allow_fields_edited"] = "Povolit polí, které mají být upraveny"; +$LANG["phrase_alphanumeric"] = "Alfanumerické (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Použít časové Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Přiřadit všechny uvedené klientské účty {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Přiřadit všechny uvedené klientské účty {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Na konci"; +$LANG["phrase_at_start"] = "Při startu"; +$LANG["phrase_author_link"] = "Autor Link"; +$LANG["phrase_auto_disable_account"] = "Auto-vypnout účet poté, co selhala # pokusy o přihlášení"; +$LANG["phrase_auto_size"] = "Auto velikosti"; +$LANG["phrase_available_clients"] = "Klienti jsou k dispozici"; +$LANG["phrase_available_fields"] = "Dostupná pole"; +$LANG["phrase_available_option_lists"] = "Seznam dostupných možností"; +$LANG["phrase_available_swatches"] = "K dispozici Vzorník"; +$LANG["phrase_available_swatches_c"] = "K dispozici Vzorník:"; +$LANG["phrase_available_tabs"] = "K dispozici Záloľky"; +$LANG["phrase_available_views"] = "K dispozici Views"; +$LANG["phrase_awaiting_form_submission"] = "Čeká na odeslání formuláře."; +$LANG["phrase_back_to_field_list"] = "«zpět na seznam polí"; +$LANG["phrase_back_to_search_results"] = "zpět na výsledky hledání"; +$LANG["phrase_base_view_on"] = "Pohled na základnu ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Změnit Přihlašovací údaje"; +$LANG["phrase_characters_limit_p"] = "znaků limit."; +$LANG["phrase_check_db_settings_try_again"] = "Please double-li zkontrolovat nastavení databáze a klepněte na tlačítko Pokračovat znovu."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Zkontrolujte URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Vynechte Clear List"; +$LANG["phrase_client_account_settings"] = "Nastavení účtu klienta"; +$LANG["phrase_client_field"] = "Obor klienta"; +$LANG["phrase_client_map_filters"] = "Klient Mapa filtry »"; +$LANG["phrase_client_may_edit"] = "Klient může editovat"; +$LANG["phrase_client_menu"] = "Klientské menu"; +$LANG["phrase_clients_can_access_form"] = "Klienti, kteří mají přístup formulář"; +$LANG["phrase_clients_can_access_view"] = "Klienti, kteří mohou přistupovat k zobrazení"; +$LANG["phrase_clients_cannot_access_form"] = "Klienti, kteří nemají přístup formulář"; +$LANG["phrase_clients_cannot_access_view"] = "Klienti, kteří nemají přístup k zobrazení"; +$LANG["phrase_clients_may_edit"] = "Klienti mohou upravovat"; +$LANG["phrase_code_c"] = "Kód chyby:"; +$LANG["phrase_code_markup_field"] = "Kód / Markup pole"; +$LANG["phrase_code_markup_type"] = "Kód / Markup Typ"; +$LANG["phrase_codes_c"] = "Error kódy:"; +$LANG["phrase_column_width"] = "Šířka sloupce"; +$LANG["phrase_company_name"] = "Název společnosti"; +$LANG["phrase_configure_form_email_fields"] = "Konfigurace Formulář E-mail Oblasti"; +$LANG["phrase_confirm_folder_url_match"] = "Potvrdit složek-URL Match"; +$LANG["phrase_connect_rows"] = "Připojte řádky"; +$LANG["phrase_copy_email_settings_from"] = "Poslat kopii nastavení z ..."; +$LANG["phrase_copy_settings_from"] = "Kopírovat nastavení ..."; +$LANG["phrase_core_fields"] = "Core Oblasti"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Vytvořit účet"; +$LANG["phrase_create_admin_account"] = "Vytvořit účet správce"; +$LANG["phrase_create_config_file"] = "Vytvořit konfiguračního souboru"; +$LANG["phrase_create_database_tables"] = "Vytvořit databázové tabulky"; +$LANG["phrase_create_default_view"] = "Vytvořit Výchozí zobrazení"; +$LANG["phrase_create_file"] = "Vytvořit soubor"; +$LANG["phrase_create_group"] = "Vytvořit skupinu"; +$LANG["phrase_create_new_email"] = "Vytvořit nový email"; +$LANG["phrase_create_new_menu"] = "Vytvořit nový Menu"; +$LANG["phrase_create_new_option_list"] = "Vytvořit nový Možnost seznam"; +$LANG["phrase_create_new_option_list_group"] = "Vytvořit nový seznam možností skupiny"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Vytvořit nový Možnost seznam »"; +$LANG["phrase_create_new_view"] = "Vytvořit novou Zobrazit"; +$LANG["phrase_create_new_view_group"] = "Vytvořit nové zobrazení skupiny"; +$LANG["phrase_custom_display_format"] = "Vlastní formát zobrazení"; +$LANG["phrase_custom_recipient"] = "Vlastní Příjemce"; +$LANG["phrase_custom_url"] = "Vlastní URL"; +$LANG["phrase_dark_blue"] = "Tmavě modrá"; +$LANG["phrase_data_type"] = "Typ dat"; +$LANG["phrase_database_hostname"] = "Databáze hostname"; +$LANG["phrase_database_name"] = "Databáze jméno"; +$LANG["phrase_database_password"] = "Databáze heslo"; +$LANG["phrase_database_settings"] = "Nastavení databáze"; +$LANG["phrase_database_setup"] = "Nastavení databáze"; +$LANG["phrase_database_table_prefix"] = "Databáze prefix tabulky"; +$LANG["phrase_database_username"] = "Databáze jméno"; +$LANG["phrase_date_format"] = "Formát data"; +$LANG["phrase_db_column"] = "NR Sloupec"; +$LANG["phrase_db_setup_page_4"] = "4. Nastavení databáze"; +$LANG["phrase_default_client_account_theme"] = "Výchozí klientského účtu Téma"; +$LANG["phrase_default_date_field_search_value"] = "Výchozí datum pole Hledat hodnotu"; +$LANG["phrase_default_language"] = "Výchozí jazyk"; +$LANG["phrase_default_menu"] = "Výchozí Menu"; +$LANG["phrase_default_sessions_timeout"] = "Výchozím nastavení vyprší platnost relací"; +$LANG["phrase_default_sort_order"] = "Výchozí pořadí"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Výchozí téma"; +$LANG["phrase_default_value"] = "Výchozí hodnota"; +$LANG["phrase_default_values"] = "Výchozí hodnoty"; +$LANG["phrase_default_values_new_submissions"] = "Výchozí hodnoty pro nové příspěvky"; +$LANG["phrase_delete_field"] = "Odstranit pole"; +$LANG["phrase_delete_form"] = "Smazat formulář"; +$LANG["phrase_delete_row"] = "Smazat řádek"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Odstranit asociované soubory při mazání podání"; +$LANG["phrase_delete_view"] = "Smazat Zobrazit"; +$LANG["phrase_disconnect_rows"] = "Odpojte řádky"; +$LANG["phrase_display_email"] = "Displej E-mail"; +$LANG["phrase_display_name"] = "Display Name"; +$LANG["phrase_display_text"] = "Zobrazení textu"; +$LANG["phrase_display_value"] = "Displej Hodnota"; +$LANG["phrase_edit_admin_menu"] = "Upravit Admin Menu"; +$LANG["phrase_edit_client"] = "Upravit Klient"; +$LANG["phrase_edit_client_menu"] = "Upravit Klient Menu"; +$LANG["phrase_edit_email_template"] = "Upravit šablonu Email"; +$LANG["phrase_edit_field"] = "Upravit pole"; +$LANG["phrase_edit_field_c"] = "Editační pole:"; +$LANG["phrase_edit_form"] = "Editovat formulář"; +$LANG["phrase_edit_form_access_type_b"] = "[Upravit formulář typu přístupu]"; +$LANG["phrase_edit_option_list"] = "Volbu Edit List"; +$LANG["phrase_edit_submission"] = "Upravit Submission"; +$LANG["phrase_edit_submission_label"] = "Upravit předložení štítku"; +$LANG["phrase_edit_view"] = "Upravit zobrazení"; +$LANG["phrase_email_format"] = "Formát e-mailu"; +$LANG["phrase_email_settings"] = "Nastavení e-mail"; +$LANG["phrase_email_template"] = "Email šablony"; +$LANG["phrase_email_template_name"] = "Email Název šablony"; +$LANG["phrase_error_learn_more"] = "Další informace o této chybě."; +$LANG["phrase_error_text_intro"] = "Opravte prosím následující chybu (y) a odešlete:"; +$LANG["phrase_errors_learn_more"] = "Klikněte na chybových kódů se dozvíte více."; +$LANG["phrase_event_trigger"] = "Událost Trigger"; +$LANG["phrase_external_form"] = "Vnější forma"; +$LANG["phrase_external_form_info"] = "Vnější forma Info"; +$LANG["phrase_external_your_own_form"] = "Externí (vlastní formulář)"; +$LANG["phrase_field_comments"] = "Komentáře pole"; +$LANG["phrase_field_label"] = "Obor Label"; +$LANG["phrase_field_options"] = "Možnosti pole"; +$LANG["phrase_field_size"] = "Velikost pole"; +$LANG["phrase_field_skipped"] = "Obor Přeskočeno"; +$LANG["phrase_field_specific_settings"] = "Pole nastavení specifické"; +$LANG["phrase_field_type"] = "Typ pole"; +$LANG["phrase_field_type_no_validation"] = "Nejsou žádné ověřovací pravidla pro tento typ pole."; +$LANG["phrase_field_types"] = "Typy polí"; +$LANG["phrase_field_value"] = "Pole Hodnota"; +$LANG["phrase_field_values_to_display_values"] = "Hodnoty pole »Zobrazit Hodnoty"; +$LANG["phrase_final_touches_page_6"] = "6. Závěrečné kroky"; +$LANG["phrase_finalize_form"] = "Dokončit Form"; +$LANG["phrase_first_name"] = "Jméno"; +$LANG["phrase_footer_text"] = "Footer Text"; +$LANG["phrase_for_any_form_submission"] = "Pro všechny formy podání"; +$LANG["phrase_for_view_submissions"] = "Pouze příspěvky, které se vejdou do těchto zobrazení (y)"; +$LANG["phrase_forgot_password"] = "Zapomněli jste heslo?"; +$LANG["phrase_form_already_selected"] = "Formulář již vybrána"; +$LANG["phrase_form_email_field_b_c"] = "Formulář [] email pole:"; +$LANG["phrase_form_email_field_configuration"] = "Formulář E-mail Studijní Konfigurace"; +$LANG["phrase_form_email_fields"] = "Pole formuláře Email"; +$LANG["phrase_form_field"] = "Pole formuláře"; +$LANG["phrase_form_field_contents"] = "Obsah pole formuláře"; +$LANG["phrase_form_field_name"] = "Formulář Název pole"; +$LANG["phrase_form_field_placeholders"] = "Symboly pole formuláře"; +$LANG["phrase_form_fields"] = "Pole formuláře"; +$LANG["phrase_form_info"] = "Informační formulář"; +$LANG["phrase_form_info_2"] = "2. Informační formulář"; +$LANG["phrase_form_list"] = "Formulář Seznam"; +$LANG["phrase_form_name"] = "Název formuláře"; +$LANG["phrase_form_page"] = "Formulář Page"; +$LANG["phrase_form_placeholders"] = "Formulář Symboly"; +$LANG["phrase_form_submission"] = "Odeslání formuláře"; +$LANG["phrase_form_submissions"] = "Formulář Podání"; +$LANG["phrase_form_type"] = "Typ formuláře"; +$LANG["phrase_form_url"] = "Formulář URL"; +$LANG["phrase_form_urls"] = "Formulář URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formuláře přiřazena na jiný účet"; +$LANG["phrase_forms_page_default_message"] = "Formuláře stránku výchozí zprávu"; +$LANG["phrase_ft_installation"] = "Formulář Nástroje Instalační skript"; +$LANG["phrase_full_width"] = "V plné šíři"; +$LANG["phrase_getting_started"] = "Začínáme"; +$LANG["phrase_global_placeholders"] = "Global Symboly"; +$LANG["phrase_group_name"] = "Název skupiny"; +$LANG["phrase_group_options_q"] = "Skupina možnosti?"; +$LANG["phrase_group_rows"] = "Skupina řádků"; +$LANG["phrase_have_fun"] = "Bavte se!"; +$LANG["phrase_highlight_colour"] = "Zvýraznění barev"; +$LANG["phrase_html_email"] = "HTML email"; +$LANG["phrase_html_template"] = "HTML šablony"; +$LANG["phrase_images_media"] = "Images / Média"; +$LANG["phrase_import_option_list_rightarrow"] = "Možnost importu seznamu »"; +$LANG["phrase_input_length"] = "Délka vstupního"; +$LANG["phrase_installation_help"] = "Instalace Nápověda"; +$LANG["phrase_internal_form"] = "Interní formulář"; +$LANG["phrase_ip_address"] = "IP adresa"; +$LANG["phrase_is_multi_page_form_q"] = "Je to vícestránkové formuláře?"; +$LANG["phrase_label_response_placeholders"] = "Štítek / odpověď symboly"; +$LANG["phrase_large_300px"] = "Velký (300px)"; +$LANG["phrase_large_400px"] = "Velký (400px)"; +$LANG["phrase_last_7_days"] = "Posledních 7 dní"; +$LANG["phrase_last_logged_in"] = "Poslední přihlášení"; +$LANG["phrase_last_modified"] = "Poslední změna"; +$LANG["phrase_last_modified_date"] = "Poslední změna Datum"; +$LANG["phrase_last_name"] = "Příjmení"; +$LANG["phrase_letters_only"] = "Písmena"; +$LANG["phrase_light_brown"] = "Světle hnědá"; +$LANG["phrase_limit_email_content"] = "Limit obsah e-mailů do polí v zobrazení"; +$LANG["phrase_loading_ellipsis"] = "Nahrávám ..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Přihlaste se jako tento uživatel"; +$LANG["phrase_login_info"] = "Přihlásit se Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Panel přihlášení:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Heslo"; +$LANG["phrase_login_username"] = "Přihlásit se Uživatelské jméno"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Odhlásit URL"; +$LANG["phrase_main_nav"] = "Hlavní Nav"; +$LANG["phrase_main_settings"] = "Hlavní nastavení"; +$LANG["phrase_manage_client"] = "Správa klientů"; +$LANG["phrase_manage_client_omit_list"] = "Správa klientů Vynechat Seznam"; +$LANG["phrase_max_file_size"] = "Max Velikost souboru"; +$LANG["phrase_max_length"] = "Maximální délka"; +$LANG["phrase_max_length_words_chars"] = "- Maximální délka (slova / znaků)"; +$LANG["phrase_may_add_submissions"] = "Podání může přidat"; +$LANG["phrase_may_copy_submissions"] = "Umí kopírovat podání"; +$LANG["phrase_may_delete_submissions"] = "Může odstranit příspěvky"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menu Name"; +$LANG["phrase_menu_type"] = "Typ menu"; +$LANG["phrase_min_password_length"] = "Minimální délka hesla"; +$LANG["phrase_module_description"] = "Modul Popis"; +$LANG["phrase_module_info"] = "Modul informační"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Měsíc, datum"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Multi-select rozevírací"; +$LANG["phrase_multiple_fields_found"] = "Multiple Pole Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Jméno / Příjmení"; +$LANG["phrase_new_blank_email"] = "New Blank E-mail"; +$LANG["phrase_new_blank_option_list"] = "Volba nového prázdného seznamu"; +$LANG["phrase_new_blank_view"] = "New Blank Zobrazit"; +$LANG["phrase_new_ft_installation"] = "Nový formulář Nástroje Instalace"; +$LANG["phrase_new_option_list"] = "Nová volba Seznam"; +$LANG["phrase_new_password"] = "Nové heslo"; +$LANG["phrase_new_password_reenter"] = "Nové heslo (prosím re-enter)"; +$LANG["phrase_new_view"] = "Nový pohled"; +$LANG["phrase_new_view_all_fields"] = "Nový pohled - Všechny položky"; +$LANG["phrase_next_client"] = "Další klient »"; +$LANG["phrase_next_field"] = "další oblasti »"; +$LANG["phrase_next_form"] = "Další formulář »"; +$LANG["phrase_next_view"] = "Zobrazit další »"; +$LANG["phrase_no_clients"] = "No klienty"; +$LANG["phrase_no_limit"] = "Bez omezení"; +$LANG["phrase_no_offset"] = "Žádný posun"; +$LANG["phrase_no_option_lists_available"] = "Žádné volby seznam k dispozici."; +$LANG["phrase_no_views"] = "No Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Žádné názory s filtry uvedené)"; +$LANG["phrase_none_not_recommended"] = "Žádná (není doporučeno)"; +$LANG["phrase_not_assigned_to_option_list"] = "Toto pole není přiřazen k seznamu voleb."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Se nerovná"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "NOT Like"; +$LANG["phrase_not_visible_to_client"] = "(není vidět na klienta)"; +$LANG["phrase_num_clients_per_page"] = "Num Klienti na stránku"; +$LANG["phrase_num_emails_per_page"] = "Num Emaily na stránku"; +$LANG["phrase_num_fields"] = "Počet polí"; +$LANG["phrase_num_forms_per_page"] = "Num Formuláře na stránku"; +$LANG["phrase_num_menus_per_page"] = "Num Nabídky na stránku"; +$LANG["phrase_num_modules_per_page"] = "Num Moduly na stránku"; +$LANG["phrase_num_option_lists_per_page"] = "Num možnost Seznamy na stránku"; +$LANG["phrase_num_options"] = "Možnosti Num"; +$LANG["phrase_num_rows"] = "Num Řádky"; +$LANG["phrase_numbers_only"] = "Pouze čísla"; +$LANG["phrase_often_localhost"] = "(často "localhost")"; +$LANG["phrase_on_form_submission"] = "O odeslání formuláře"; +$LANG["phrase_one_char_number"] = "Nejméně jeden znak je číslo (0-9)"; +$LANG["phrase_one_char_upper"] = "Nejméně jeden znak je velké písmeno"; +$LANG["phrase_one_special_char"] = "Alespoň jeden z {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(pouze konkrétní klienti mají přístup)"; +$LANG["phrase_open_form_in_dialog"] = "Otevřete formulář v dialogovém okně"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Otevřete formulář v nové záložce / okně"; +$LANG["phrase_option_list"] = "Možnost Seznam"; +$LANG["phrase_option_list_name"] = "Možnost Název seznamu"; +$LANG["phrase_option_list_or_contents"] = "Možnost List / Obsah"; +$LANG["phrase_option_lists"] = "Možnost Seznamy"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Page hlavy"; +$LANG["phrase_pass_on"] = "Předat"; +$LANG["phrase_password_min"] = "Je třeba alespoň {\$length}."; +$LANG["phrase_password_one_number"] = "Musí obsahovat alespoň jedno číslo (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Musí obsahovat alespoň jedno velké písmeno."; +$LANG["phrase_password_requirements_c"] = "Heslo požadavky:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Musí obsahovat alespoň jeden z následujících znaků: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Oprávnění / Další nastavení"; +$LANG["phrase_permitted_file_types"] = "Povolené typy souborů"; +$LANG["phrase_phone_number"] = "Telefonní číslo"; +$LANG["phrase_phone_number_format"] = "Formát telefonního čísla"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max.povolený nahrání souboru Velikost:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Prosím, potvrďte"; +$LANG["phrase_please_enter_license_key"] = "Prosím, zadejte své licenční klíč"; +$LANG["phrase_please_select"] = "Prosím vyberte"; +$LANG["phrase_please_select_form"] = "Vyberte prosím formu"; +$LANG["phrase_prev_client"] = "«Předchozí klienta"; +$LANG["phrase_prev_form"] = "«Předchozí formy"; +$LANG["phrase_prevent_password_reuse"] = "Předcházet re-použití # posledního hesla"; +$LANG["phrase_previous_field"] = "«předchozí pole"; +$LANG["phrase_previous_page"] = "Předchozí strana"; +$LANG["phrase_previous_view"] = "«Předchozí Zobrazit"; +$LANG["phrase_program_name"] = "Název programu"; +$LANG["phrase_public_form_omit_list"] = "Forma veřejné Vynechte Seznam"; +$LANG["phrase_public_view_omit_list"] = "Zobrazit veřejný Vynechte Seznam"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Tam byl problém s následující dotaz:"; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Náhodné odeslání formuláře"; +$LANG["phrase_re_enter_password"] = "Re-enter Password"; +$LANG["phrase_recipient_type"] = "Typ příjemce"; +$LANG["phrase_redirect_url"] = "URL přesměrování"; +$LANG["phrase_refresh_list"] = "Obnovit seznam"; +$LANG["phrase_refresh_module_list"] = "Modul Refresh List"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Refresh Téma List"; +$LANG["phrase_register_new_email"] = "Registrace nového E-mail"; +$LANG["phrase_remaining_characters"] = "zbývajících znaků"; +$LANG["phrase_remaining_words"] = "Zbývající slova"; +$LANG["phrase_remove_tabs"] = "Odebrat Záloľky"; +$LANG["phrase_required_password_chars"] = "Požadované heslo znaků"; +$LANG["phrase_resend_test_submission"] = "Resend Test Submission"; +$LANG["phrase_return_form_list"] = "Návrat k formuláři List"; +$LANG["phrase_row_selected"] = "{\$num_rows} vybraných řádků"; +$LANG["phrase_rows_selected"] = "{\$num_rows} vybraných řádků"; +$LANG["phrase_sample_data"] = "Vzorek dat"; +$LANG["phrase_save_changes"] = "Uložit změny"; +$LANG["phrase_search_keyword"] = "Pro hledané klíčové slovo"; +$LANG["phrase_security_settings"] = "Nastavení zabezpečení"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Select All {\$numresults} výsledky"; +$LANG["phrase_select_all_on_page"] = "Vybrat vše Page"; +$LANG["phrase_select_date"] = "Vyberte datum"; +$LANG["phrase_select_field"] = "Vyberte pole"; +$LANG["phrase_select_swatch"] = "Vyberte Swatch"; +$LANG["phrase_selected_clients"] = "Vybrané Klienti"; +$LANG["phrase_selected_views"] = "Vybrané Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Test Send Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Hodnota nastavení"; +$LANG["phrase_setup_options"] = "Možnosti nastavení"; +$LANG["phrase_show_all"] = "Zobrazit všechny"; +$LANG["phrase_show_form"] = "Zobrazit formuláře"; +$LANG["phrase_size_large"] = "Velké (TEXT)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 znaků)"; +$LANG["phrase_size_small"] = "Malý (<= 20 znaků)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 znaků)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Obor"; +$LANG["phrase_skip_step"] = "Přeskočit krok"; +$LANG["phrase_small_100px"] = "Malý (100px)"; +$LANG["phrase_small_80px"] = "Malý (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fill pole z:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill Uživatelská dokumentace »"; +$LANG["phrase_sort_as"] = "Druhu jako"; +$LANG["phrase_special_fields"] = "Speciální pole"; +$LANG["phrase_standard_fields"] = "Standardní pole"; +$LANG["phrase_standard_filters"] = "Standardní filtry »"; +$LANG["phrase_step_1"] = "Krok 1"; +$LANG["phrase_step_2"] = "Krok 2"; +$LANG["phrase_step_3"] = "Krok 3"; +$LANG["phrase_step_4"] = "Krok 4"; +$LANG["phrase_step_5"] = "Krok 5"; +$LANG["phrase_step_6"] = "Krok 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Pásy značky v podobě příspěvků"; +$LANG["phrase_subject_line"] = "Předmět Line"; +$LANG["phrase_submission_date"] = "Datum podání žádosti"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Tvrzení: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Typ podání"; +$LANG["phrase_submissions_per_page"] = "Podání na stránku"; +$LANG["phrase_system_check"] = "Kontrola systému"; +$LANG["phrase_system_fields_no_validation"] = "Můžete se přidat do systému ověřování polí."; +$LANG["phrase_system_time_offset"] = "Systém Časový posun"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Folder Permissions"; +$LANG["phrase_test_submission"] = "Test Submission"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Přijaté"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "E-mail Text"; +$LANG["phrase_text_template"] = "Text šablony"; +$LANG["phrase_the_previous_month"] = "Předchozí měsíc"; +$LANG["phrase_theme_description"] = "Téma Popis"; +$LANG["phrase_theme_info"] = "Téma Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Celkové výsledky:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Zrušit výběr"; +$LANG["phrase_update_accounts"] = "Aktualizace účtů"; +$LANG["phrase_update_email_template"] = "Aktualizace Šablona emailu"; +$LANG["phrase_update_field"] = "Aktualizovat pole"; +$LANG["phrase_update_order"] = "Aktualizace Order"; +$LANG["phrase_update_view"] = "Aktualizace Zobrazit"; +$LANG["phrase_upload_file"] = "Nahrát soubor"; +$LANG["phrase_upload_files"] = "Upload souborů"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Upload cestu ke složce"; +$LANG["phrase_upload_folder_url"] = "Nahrát složku URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Použít výchozí hodnotu?"; +$LANG["phrase_used_by_num_form_fields"] = "Používané # pole formuláře"; +$LANG["phrase_uses_swatches"] = "Používá Vzorník"; +$LANG["phrase_valid_email"] = "Platnou e-mailovou"; +$LANG["phrase_validation_error"] = "Chyba ověření"; +$LANG["phrase_validation_rule"] = "Ověřovací pravidlo"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Zobrazit skupinu"; +$LANG["phrase_view_id"] = "Zobrazit ID"; +$LANG["phrase_view_name"] = "Zobrazit Name"; +$LANG["phrase_view_placeholders"] = "Zobrazit symboly"; +$LANG["phrase_view_submissions"] = "Zobrazit Podání"; +$LANG["phrase_view_uploaded_files"] = "zobrazit nahrané soubory"; +$LANG["phrase_viewing_range"] = "[prohlížení {\$startnum} k {\$endnum}]"; +$LANG["phrase_when_sent"] = "Při zasílání"; +$LANG["phrase_when_submission_is_deleted"] = "Když se zrušuje podání"; +$LANG["phrase_when_submission_is_edited"] = "Při úpravě podání"; +$LANG["phrase_who_can_access"] = "Kdo má přístup?"; +$LANG["phrase_word_limit_p"] = "Slovo limit."; +$LANG["phrase_year_to_date"] = "Od počátku roku"; +$LANG["phrase_yes_for_all_views"] = "Ano, pro všechny Views"; +$LANG["phrase_yes_for_specific_views"] = "Ano, pro konkrétní Views"; +$LANG["phrase_your_account"] = "Váš účet"; +$LANG["phrase_your_email"] = "Váš email"; +$LANG["phrase_your_email_address"] = "Vaše e-mailová adresa"; +$LANG["processing_form_disabled"] = "Omlouváme se, ale tato forma zakázána."; +$LANG["processing_form_incomplete"] = "Omlouváme se, tato forma se nezdá být zcela nastavit zevnitř Form Tools. Nejpravděpodobnější příčinou tohoto problému je, že jste odebrali "form_tools_initialize_form" skrytého pole formuláře, ale nedokončil všechny kroky "Přidat formuláře" procesu.

    Prosím přihlašte se, a přezkum podoby konfiguraci."; +$LANG["processing_init_complete"] = "Děkujeme vám! Vaše zkušební podání byl projít úspěšně. Vraťte se prosím na panel Nástroje pro správu formulář a klikněte na tlačítko "Obnovit" v dolní části formuláře Přidat Krok 3 stránky dokončete nastavení formuláře."; +$LANG["processing_invalid_form_id"] = "Omlouváme se, ale to se nezdá být platným dokladem ID."; +$LANG["processing_no_form_id"] = "process.php vyžaduje ID formuláře ke zpracování. Ujistěte se, že formulář obsahuje skryté pole s názvem "form_tools_form_id", který projde podél ID formuláře."; +$LANG["processing_no_form_url_for_recaptcha"] = "Nástroje forma není schopen určit, kde k přesměrování, když se nedaří vstoupit KAPITÁN správně. Předejte ve skryté pole s názvem form_tools_form_url obsahující URL formuláře."; +$LANG["processing_no_post_vars"] = "process.php není poskytována žádná data. Poznámka: tento skript nelze načíst přímo ve vašem prohlížeči.
    Ujistěte se, že forma je zaslání poštou."; +$LANG["processing_no_redirect_url"] = "Podání bylo zpracováno správně, ale nebyla zadána přesměrování URL tohoto formuláře! Upravte si formulář ve formuláři Nástroje UI a přidat přesměrování URL."; +$LANG["special_language"] = "Czech"; +$LANG["special_language_locale"] = "Czech"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Všechny nové klientské účty budou vytvořeny pomocí nastavení a povolení jsou uvedeny níže. Chcete-li přepsat nastavení pro konkrétního zákazníka, upravit účet klienta a navštivte jejich kartu Nastavení."; +$LANG["text_add_form_choose_integration_method"] = "Vyberte si způsob, který chcete použít pro integraci formuláře s formulářem Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Tato metoda používá tvarové nástroje API , která je součástí hlavního skriptu tvarové nástroje. API obsahuje mnoho užitečných funkcí, aby pracovní integrace formuláře s formulářem nástroje tak jednoduchá, jak je to možné. Neexistují žádná omezení, jak mohou být předloženy formuláře při použití API. Můžete odeslat obsah na jeden zátah, a stránku po stránce, můžete přidat svůj vlastní server-side validaci, CAPTCHA obrázky, můžete si vybrat, aby předložila informace nyní, ale jen říct, že pro zobrazení podání ve formě nástrojů UI později (viz Referenční příspěvky v sekci Dokumentace Nápověda API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Pro podání formuláře data přes PHP, musí být formulář umístěný na stejné internetové adrese, protože instalace tvarové nástroje. Za druhé, pro netechnické a začínající uživatele tvarové nástroje, tato metoda může být trochu zastrašující na prvním místě. Ale je tu spousta dokumentace, aby vám pomohl ven, včetně dva jednoduché návody pro integraci své jedno-i vícestránkové formuláře (Ty jsou spojeny se v pozdějším kroku)."; +$LANG["text_add_form_direct_submission_benefits"] = "To je nejjednodušší způsob, jak odeslat formulář Form Tools. Nevyžaduje žádné znalosti PHP a vyžaduje jen velmi malou změnou formy. Je to skvělé pro menší formy, kde chcete jen předložit informace k databázi, potom přesměrovat uživatele na "Děkuju" stránku."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Tento způsob podání je velmi jednoduchý na používání, ale neposkytuje mnoho ovládání pro složitější tvary. Multi-strana formuláře nebo formuláře, které vyžadují server-side validaci jsou vhodnější pro druhou metodu: předložení prostřednictvím formuláře Nástroje API."; +$LANG["text_add_form_field_types1"] = "Téměř hotovo! Tato stránka se snaží najít všechny pole formuláře a stanovit jejich typy polí. Klepněte na tlačítko Inteligentní výplň na pravé straně, jak začít. Budete smí postupovat při všech akcí byly vyřešeny - problémy, které vyžadují vaši pozornost se v "opatření potřebných " sloupci."; +$LANG["text_add_form_field_types2"] = "Pokud váš formulář není v HTML, klepněte na tlačítko Přeskočit krok pokračovat. To může být nakonfigurován všechny později."; +$LANG["text_add_form_field_types3"] = "To znovu načte obsah formuláře (s). Poznámka: Tato přepíše všechny změny provedené na této stránce."; +$LANG["text_add_form_field_types4"] = "V případě, že se dostanete do problémů, klikněte zde pro tento krok přeskočte. Všechna pole jsou nevyřešené použít výchozí hodnoty. Můžete si přizpůsobit těchto oblastech později."; +$LANG["text_add_form_field_types_manual_upload"] = "Pokud jste nebyli schopni Inteligentní výplň polí, můžete vyzkoušet alternativní řešení: Upload kopie formuláře níže uvedená pole."; +$LANG["text_add_form_field_types_manual_upload2"] = "Poznámka: Nepoužívejte Přidat surovin PHP stránky (nebo jiný kód na straně serveru) - stačí nahrát HTML verze. Chcete-li si to, zobrazit a uložit stránku z webového prohlížeče."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Tam bylo několik polí, které nelze nalézt v podobě stránky, kterou jste zadali. To je většinou pravděpodobně způsobena jednou z následujících možností:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Zadali jste jeden nebo více formě URL vašich vícestránkové formuláře nesprávně."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Jeden nebo více stránek formuláře jsou chráněny heslem a skript nemohl přístup ke stránce."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Jste špatně zadali do formuláře URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klikněte zde pro návrat na formuláře, informace pro kontrolu nastavení."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Vyměnili jste formulář (y) po provedení testu podání"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klikněte zde prosadit další test podání."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Formulář je chráněn heslem a skript nemohl přístup ke stránce."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "V další záložce / okně tohoto prohlížeče, přihlaste se do formuláře klepněte na tlačítko Aktualizovat stránku níže, aby se pokusili znovu najít pole."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Pokud žádný z výše uvedených řešení fungují, můžete také zkusit nahrát ručně formuláře ke zpracování ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Tam bylo několik polí, které nelze nalézt v podobě stránky, kterou jste zadali. To je většinou pravděpodobně způsoben jedním z následujících:"; +$LANG["text_add_form_help_link"] = "Pokud narazíte na nějaké potíže při těchto krocích, zkuste si přečíst z uživatelské dokumentace ."; +$LANG["text_add_form_step_1_text_1"] = "Následující stránky vás provedou kroky Nástroje nakonfigurovat Formulář pro ukládání formuláře podání. Než budeme pokračovat, zkontrolujte, že:"; +$LANG["text_add_form_step_1_text_2"] = "Váš formulář již byla vytvořena a je přístupný prostřednictvím URL (localhost je v pořádku)"; +$LANG["text_add_form_step_1_text_3"] = "jsou schopni upravit formuláře"; +$LANG["text_add_form_step_2_para_2"] = "Otevřete si v editoru formulář dle Vašeho výběru a změnit formu značku na následující, včetně dvou skrytých polí."; +$LANG["text_add_form_step_2_para_3"] = "Další, otevřete formulář ve webovém prohlížeči. Vyplňte v každém oboru a předloží ji. Po odeslání by se měla zobrazit zpráva s oznámením. Jakmile bude tato zpráva se zobrazí, vraťte se na tuto stránku a klikněte na tlačítko Obnovit níže. Když tento proces dokončen, uvidíte dále tlačítko níže, přičemž se vám další krok."; +$LANG["text_add_form_step_2_para_6"] = "Ve formuláři podání obsahovat následující hodnoty. Mohou být stanoveny přímo přes PHP nebo prošel podél prostřednictvím formuláře sám. Níže jsou uvedeny příklady každého. {\$varname} je hash (nebo asociativní pole) všech informací formou podání - to je obvykle {\$postvar} nebo {\$sessionvar} variabilní, ale to může být postavena na zakázku."; +$LANG["text_add_form_step_2_text_2"] = "Zadejte adresu URL "Děkuji " stránky zde. To je místo, kde chcete, aby lidé přesměrováni na formulář poté, co byla podána."; +$LANG["text_add_form_step_3_para_1"] = "Tato stránka obsahuje seznam všech polí ve formuláři podání. Si při každé pole a odstraňte všechny, které nepotřebujete skladovat každý podání. Pokud odstraníte platné pole náhodou, nebo chtějí změnit údaje uloženy své formuláře, vraťte se na předchozí stránku poslat nové testovací podání."; +$LANG["text_add_form_step_3_para_2"] = "Poznámka: pokud posíláte více hodnot pomocí zaškrtávacích nebo multi-vyberte pole, ujistěte se, že název pole, končí s [] znaky (viz uživatelské dokumentaci pro více informací)."; +$LANG["text_add_form_step_3_text_1"] = "Tady začíná zábava! V tomto bodě, tvarové nástroje čeká test z podání formuláře. To se pomocí tohoto formuláře podání vědět, jaké informace by měly být uloženy v databázi."; +$LANG["text_add_form_step_3_text_2"] = "poukazem na formuláři Form Nástroje"; +$LANG["text_add_form_step_3_text_3"] = "pomocí formuláře Nástroje API"; +$LANG["text_add_form_step_3_text_4"] = "Chcete-li pomoci integrovat formuláře, doporučujeme vám přečíst jeden z následujících cvičení:"; +$LANG["text_add_form_step_3_text_5"] = "Vysvětlují, jak nastavit formu v přípravě na zkoušky podání, a obsahují další informace, které mohou být nápomocné. Řádek PHP, které budete potřebovat, je:"; +$LANG["text_add_form_step_3_text_6"] = "Tím je zajištěno, data jsou ve skutečnosti zaslán formulář Tools. Když jste se prosadit své testovací podání, klikněte na tlačítko níže."; +$LANG["text_add_form_step_3_text_7"] = "Na stránce před vaší konečné "děkuji" stránce, je nutné přidat následující parametr proměnná \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Databáze byla zřízena, aby pro tuto formu, a formu byl aktivován pro použití. Pokud jste provedli podání směřuje formuláře na process.php, vraťte se do formuláře a odstranit následující skryté pole:"; +$LANG["text_add_form_step_5_para_2"] = "Pak navštivte svého "poděkováním", na prázdné relace. Jakmile se tak děje, budou všechny nové formy podání zpracovány a uloženy ve formuláři Tools. Zkuste vytvořit podání nebo dva, aby ověřila všechny informace nahrávání správně."; +$LANG["text_add_form_step_5_para_3"] = "Pokud chcete jemně doladit-li formulář pro možnosti, jako je auto-mailování, přidávat další pole formuláře pole, nebo přizpůsobení typy pole formuláře můžete upravovat své formě na jakémkoli místě."; +$LANG["text_add_form_step_5_para_4"] = "Protože váš formulář obsahuje pole pro nahrání souboru, budete muset nastavit každé pole stanovit soubor nahrát složku, jaké soubory jsou povoleny a. To lze nalézt na kartu Zobrazení na stránce upravit formuláře."; +$LANG["text_add_form_step_5_para_5"] = "Je-li podání bylo zasláno přes API, změna ft_api_init_form_page řádek na první stránce formuláře:"; +$LANG["text_add_submission_button"] = "Přidat Podání Tlačítko se zobrazí pouze pro zobrazení, které mají "Může přidat podání " volba nastavena na "ano "."; +$LANG["text_admin_email_placeholder_info"] = "Toto je e-mailová adresa administrátora formuláře Nástroje, definované v nastavení vašeho účtu. To jen výstupy e-mailovou adresu, takže pokud chcete použít jako odkaz na HTML, budete muset zabalit do <a>, například takto:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Také standardní přihlašovací stránku téma)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Za prvé, vyberte si typ formuláře."; +$LANG["text_client_form_page"] = "Tato stránka obsahuje seznam všech formulářů a pohledy na tohoto klienta. Tip: k tomu, aby jim vidět formulář, co tvrdí, musí být přiřazen alespoň jeden pohled."; +$LANG["text_client_map_filters_desc1"] = "Klient Mapa filtry umožňují omezit podání, které se objevují v tomto Zobrazit podle mapování hodnot v podobě pole hodnot v účtu klienta."; +$LANG["text_client_no_forms"] = "Momentálně nemáte žádné formuláře jsou k dispozici pro kontrolu."; +$LANG["text_client_welcome"] = "Vítejte! Tento program ukládá veškeré informace, které návštěvníci vašich webových stránkách. Chcete-li zobrazit podání na zvláštním formuláři stačí kliknout na odkaz VIEW, nebo se podívejte nejlevější navigační menu pro další možnosti."; +$LANG["text_config_file_created"] = "Váš config.php byl soubor vytvořen."; +$LANG["text_config_file_not_created"] = "Nepodařilo se nám vytvořit si soubor config.php. Budete muset vytvořit soubor ručně."; +$LANG["text_config_file_not_created_instructions"] = "Zkopírovat a vložit obsah z části dole na soubor s názvem config.php a nahrát přes FTP na formuláři Nástroje / globální složky (složky, která obsahuje i několik dalších souborů a adresářů, jeden soubor s názvem library.php)."; +$LANG["text_confirm_delete_form"] = "Ano, chci smazat tento formulář"; +$LANG["text_create_admin_account"] = "Nyní budeme vytvořit administrátorský účet. Toto se používá pro správu všech aspektů formuláře nástroje, jako je přidání formuláře a vytváření klientských účtů."; +$LANG["text_create_new_client_account"] = "Použijte níže uvedený formulář pro vytvoření nového účtu klienta. Všechna pole jsou povinná."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "viz PHP {\$datefunctionlink} funkce pro možnosti formátování"; +$LANG["text_default_file_settings_page"] = "Tato stránka je určen soubor nastavení pro svoje Form instalace nástrojů. Tato pravidla platí pro všechny soubory nahrané přes formulář nástroje, pokud nejsou explicitně změněny na jednotlivé pole formuláře. Poznámka: Pokud změníte složku po nahrání souborů které byly nahrány, budou automaticky přesunuty do nové složky."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Než budeme pokračovat, budete muset aktualizovat / themes / default / cache složky povolit plný čtení a zápis. Jakmile máte hotovo, bude tato zpráva zmizí a můžete nainstalovat skript."; +$LANG["text_default_values_in_view"] = "Tato sekce je nepovinná. Všechny návrhy vytvořené s tímto názorem bude obsahovat výchozí hodnoty uvedené zde."; +$LANG["text_delete_all_forms"] = "Chci smazat všechny soubory, které byly nahrané pomocí tohoto formuláře"; +$LANG["text_delete_form_warning"] = "Jste si jisti, že chcete smazat tento formulář? Tuto akci nelze vrátit zpět. Všechny údaje budou trvale ztracena!"; +$LANG["text_edit_admin_menu_page"] = "Můžete upravovat své nabídce níže. Aby se zajistilo, vždy budete mít přístup ke všem funkce jsou k dispozici ve formuláři Nástroje, následující stránky jsou povinny: Formuláře, klienti, Váš účet, moduly, Nastavení a odhlášení."; +$LANG["text_edit_client_menu_page"] = "Tato sekce vám umožní přizpůsobit levém navigačním sloupci pro každého uživatele. Můžete vytvořit tolik klientů menu, jak budete chtít a přiřadit žádný účet, aby jeden z nich. Ve výchozím nastavení jsou dvě menu: jeden pro tebe, správce, a jeden pro všechny klientské účty. Administrátorský účet může být změněn, ale ne odstranit."; +$LANG["text_edit_tab_summary"] = "Pokud chcete tuto skupinu Pohled na pole do záložek, stačí zadat na kartě pod jmény. Poté, co jste udělal, vyberte příslušnou kartu pro každé pole skupiny v záložce Pole ."; +$LANG["text_edit_view_list_page"] = "Tato karta kontroly, která pole se zobrazí jako sloupce na stránce Submission výpis, a některé další nastavení těchto polí. Poznámka: Doporučujeme přidat maximálně 4 nebo 5 z nejdůležitějších oblastí v zobrazení."; +$LANG["text_email_settings_intro"] = "Tato stránka umožňuje určit, která z vašich e-mailů tvoří oblasti obchodu a jim odpovídající jména. Jakmile definujete je zde, můžete použít ve vaší e-mailové šablony jako příjemci. Tato sekce je zcela dobrovolné."; +$LANG["text_email_tab_summary"] = "Tato sekce umožňuje postavit libovolný počet e-mailů, které mají být zaslány vždy, když je předložen formulář, a další spouští."; +$LANG["text_email_template_tab"] = "Tato sekce vám umožňuje určit, jaký obsah se zobrazí v e-mailu. Pokud budete chtít poslat vaši e-mailovou pouze jako text nebo e-mailem, pouze zadejte hodnotu pro daný úsek. Pokud zadáte hodnotu pro oba, bude odeslán e-mail v obou formátech."; +$LANG["text_email_template_text_1"] = "Došlo k podání uskutečněných prostřednictvím formuláře, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Došlo k podání uskutečněných prostřednictvím formuláře, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Díky za váš příspěvek!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Chybové hlášení se zobrazí, pokud pole selže ověření pravosti"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Vnější formy jsou formy, které již existují na svých webových stránkách, nebo někde na webu. Tuto možnost vyberte, pokud máte svůj vlastní formulář, který chcete integrovat s formulářem Tools."; +$LANG["text_fields_tab_summary"] = "Tato stránka obsahuje seznam všech polí formuláře. Kontrolovat, jak se zdá při prohlížení příspěvků naleznete na kartě Zobrazení . Odstranění pole na této stránce se odstranit ze všech příspěvků, takže buďte opatrní!"; +$LANG["text_file_extension_info"] = "Zadejte přípony souborů oddělené čárkami (např. jpg, gif, png), nebo nechte prázdné, aby jakýkoli typ souboru."; +$LANG["text_file_field_placeholders_info"] = "Soubor pole dva speciální symboly: FILEURL a FILENAME. FILEURL je úplnou adresu URL k souboru, takže se můžete odkazovat přímo ve vašich e-mailů, FILENAME je jen název souboru."; +$LANG["text_filters_page"] = "Pouze ty připomínky, které splňují pravidla definovat níže se objeví v tomto zobrazení."; +$LANG["text_filters_tips"] = "Tipy, jak používat podání filtry, viz uživatelskou dokumentaci."; +$LANG["text_forgot_password"] = "Žádný problém. Stačí zadat své uživatelské jméno a Vaše přihlašovací údaje budou zaslány na e-mailovou adresu na soubor. Pokud jste zapomněli své uživatelské jméno, prosím, e-mail správce webu na {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Tento formulář obsahuje jeden nebo více souborů nahrát oblastech:"; +$LANG["text_form_placeholder_info"] = "Následující symboly mohou být použity v jakékoli e-mailové šablony a jazykové zástupný oblasti, bez ohledu na jakékoli zobrazení e-mailové šablony je přiřazena. OTÁZKA symboly jsou specifickou formou otázku; ODPOVĚĎ symboly jsou odpovědi na každou otázku."; +$LANG["text_form_submission_date_placeholder"] = "Datum, kdy byla provedena podání."; +$LANG["text_form_tools_form_url"] = "Celou adresu URL formuláře. To má pouze hodnotu pro vnější formy."; +$LANG["text_form_tools_login_url"] = "URL pro přihlášení formulář Tools."; +$LANG["text_form_view_permission_info_admin"] = "Pozn.: Tento formulář v současné době má přístup správce typ, takže žádný z klientských účtech, budou mít možnost vidět toto zobrazení."; +$LANG["text_form_view_permission_info_private"] = "Poznámka: Tato forma má v současné době soukromý přístup typu, takže veřejné a soukromé volby zde bude omezena na tuto podmnožinu klientů."; +$LANG["text_ft_installed"] = "Gratulujeme, nářadí formulář byl úspěšně nainstalován!"; +$LANG["text_global_placeholder_info"] = "Tyto symboly mohou být použity v jakékoli šablony a jakákoli forma."; +$LANG["text_group_name_explanation"] = "Pro pole přidáno přes formulář Přidat procesu, tato hodnota je pre-naplněné na zobrazení textu bez ohledu na pole používá hodnotu. Možná budete chtít změnit, aby lépe charakterizovat obsah."; +$LANG["text_install_create_config_file"] = "Formulář Nástroje jsou uloženy server a databáze nastavení v souboru s názvem config.php, nalézt v souboru / global / složky. Klikněte na tlačítko "Vytvořit soubor" tlačítko pro automatické vytváření souborů na serveru."; +$LANG["text_install_create_database_tables"] = "Nyní budeme vytvářet formuláře Nástroje databázové tabulky. Tento krok vyžaduje, aby databáze sám již byly vytvořeny. Pokud si nejste jisti, jak to udělat, prosím, kontaktujte svého poskytovatele hostingu."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" obvykle znamená, že název hostitele je ale nesprávné. Možná zkuste toto nastavení na "localhost" - to je obyčejný způsob, jak se odkazovat na "místní" databáze na webovém serveru."; +$LANG["text_install_db_tables_error_tip_2"] = ""Nelze se připojit k serveru MySQL přes lokální socket" se rozumí databáze hostitele pole je opět chybný."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" Znamená to, že to je problém s vaším uživatelským jménem a heslem kombinace."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... do databáze ..." znamená, že i když vaše uživatelské jméno a vámi zadané heslo správné, nebylo možné se připojit ke konkrétní databázi, s tímto účtem. To může znamenat, že buď Vaše jméno databáze je nesprávné, nebo že tento uživatelský účet, není spojená s touto databází."; +$LANG["text_install_email_content_text"] = "Na našich webových stránkách najdete spoustu zdrojů, které vám pomohou začít, včetně naší online dokumentace (https://docs.formtools.org) a výukových programů (https://docs.formtools.org/tutorials). Pokud zjistíte, že uvíznete nebo máte nějakou otázku, zeptejte se na otázku github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Omlouváme se, ale budou tvořit nástroje nebude moci běžet na serveru. Prosím, klikněte zde pro minimální požadavky."; +$LANG["text_install_system_check"] = "Na této stránce probíhá několik testů na vašem systému, aby bylo zajištěno, že je schopen běžet Form Nástroje."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Vnitřní formy existují pouze v rámci tvarové nástroje - jinde na webu. Jediná forma nástroje uživatelské účty budou mít přístup k formuláři. Vyberte tuto možnost, pokud nemáte stávající podobě."; +$LANG["text_internal_form_intro"] = "Použijte níže uvedený formulář pro vytvoření nové vnitřní forma. Všechna nastavení, včetně počtu a obsah polí formuláře je možné měnit a konfigurovat později."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Aby bylo možné přihlásit a použít formulář Nástroje, musíte mít povolen JavaScript ve svém prohlížeči. Zapněte ji, prosím nyní, a klepněte na tlačítko Obnovit ve svém prohlížeči."; +$LANG["text_last_modified_date_explanation_c"] = "Poslední čas toto podání byl upraven. Pro nové podání, to je stejný jako:"; +$LANG["text_limit_email_content_desc"] = "Tato volba funguje pouze pro HTML a textový obsah vytvořený pomocí Smarty smyčky."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(pouze seznam Náhledy s jedním nebo více definovaných filtrů)"; +$LANG["text_log_in_to_ft"] = "Přihlaste se do formuláře Nástroje"; +$LANG["text_login"] = "Prosím přihlašte se níže pro přístup k administračnímu panelu aplikace {\$program_name}.
    Pokud jste zapomněli své heslo, klikněte zde."; +$LANG["text_login_info"] = "Jak bylo požadováno, tady jsou vaše přihlašovací údaje."; +$LANG["text_name_of_form"] = "Název formuláře."; +$LANG["text_no_clients"] = "Momentálně zde nejsou žádné klienty v databázi. Chcete-li přidat nový klientský účet, klepněte na tlačítko Přidat Klient níže."; +$LANG["text_no_clients_found"] = "Nebyly nalezeny žádné klienty. Zkuste rozšířit kritéria vyhledávání."; +$LANG["text_no_fields_in_view"] = "Toto zobrazení není žádná pole v něm. Klikněte na odkaz níže."; +$LANG["text_no_forms"] = "V současné době neexistují formuláře v databázi. Chcete-li přidat nový formulář, klepněte na tlačítko Přidat formulář níže."; +$LANG["text_no_forms_found"] = "Žádné formy nebyly nalezeny."; +$LANG["text_no_forms_found_search"] = "Žádné formy nebyly nalezeny. Rozšiřte své vyhledávací kritéria."; +$LANG["text_no_modules_found"] = "Žádné moduly byly nalezeny. Zkuste rozšířit kritéria vyhledávání."; +$LANG["text_no_recipients_added"] = "Ne příjemci byly přidány."; +$LANG["text_no_search_results"] = "Nejsou k dispozici žádné výsledky s touto vyhledávacích kritérií / View."; +$LANG["text_no_submissions_found"] = "Omlouváme se, nebyly nalezeny žádné vyjádření."; +$LANG["text_no_themes"] = "Nemáte žádné definované témata. Klikněte na tlačítko níže, abyste si osvěžili tématu seznamu anebo se podívat tvarové nástroje uživatelské dokumentaci pro informace o přidávání témata."; +$LANG["text_non_deletable_fields"] = "Toto pole se používá jádra skript a nelze upravit ani odstranit, aniž by nekompatibility. Pokud chcete změnit typ pole, vytvořit kopii, a upravit nastavení pro kopírování."; +$LANG["text_option_list_group_explanation"] = "Pokud je to vybrána, umožňuje, aby skupina své možnosti. Jak jsou zobrazeny skupiny, závisí na typu pole pomocí tohoto seznamu voleb."; +$LANG["text_option_list_page"] = "Přepínače, zaškrtávací políčka, rozbalovacích a multi-select rozevírací pole všechny poskytují uživateli více možností, z nichž si mohou vybrat jednu nebo více položek. Ve formuláři nástroje, tito jsou známí jako možnost seznamy. Obecně platí, že jsou tyto vytvořeny automaticky přidat vnější formy postupu, ale můžete ručně přidat nebo upravit volbu seznamu níže, pokud změny obsahu formuláře, nebo si vytvořit pole, které se používají pouze interně."; +$LANG["text_option_list_used_by_fields"] = "Tuto volbu Seznam se používá více polí formuláře. Máte-li aktualizovat informace níže, bude změněn pro všechna pole (viz pole formuláře kartu a zobrazí se seznam polí). Pokud chcete aktualizovat hodnoty pro jednoho, nebo dílčí oblasti, které jsou v současné době přiřazeny, klikněte zde vytvořit novou možnost List se stejnými hodnotami, jako je tento. Pak můžete přiřadit pole formuláře, které chcete do nové skupiny."; +$LANG["text_public_form_omit_list_page"] = "Veřejné formuláře vám prospěch nájmu všech účtech klienta k nim, aniž by museli ručně přiřadit každému klientovi k nim. Tato stránka umožňuje určit ty klienty, kteří nemohou přístup k této formě, i když forma je označena jako veřejná."; +$LANG["text_public_view_omit_list_page"] = "Veřejné Zobrazení umožňují využívat nájmu všech účtech klienta k nim, aniž by museli ručně přiřadit každému klientovi k nim. Tato stránka umožňuje určit ty klienty, kteří nemohou přístup k této konkrétní View."; +$LANG["text_reference_tab_info"] = "Tato stránka obsahuje seznam všech dostupných zástupné symboly pro formulář. Symboly jsou řetězce, které mohou být použity v e-mailové šablony a položky označené zvláštním zástupný ikona . Když vstoupil do pole, jsou dynamicky převeden na odpovídající hodnotu, když je pole pohledu nebo e-mail odeslán."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Revize uživatelské dokumentace"; +$LANG["text_send_email_from_edit_submission_page"] = "Zahrnovat možnost poslat e-mail z Upravit stránku Submission"; +$LANG["text_smart_fill_option_list_problem"] = "Nebyli jsme schopni se Chytrý Vyplňte pole možností. Nicméně, jako alternativa, můžete zkusit nahrát kopii formuláře stránky do políčka níže. Poznámka: Nepoužívejte Přidat surovin PHP stránky (nebo jiný kód na straně serveru) - stačí nahrát HTML verze. Chcete-li si to, zobrazit a uložit stránku z webového prohlížeče."; +$LANG["text_submission_ip_address"] = "IP adresa uživatele, kteří se k podání."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Použijte níže uvedený formulář pro zobrazení buď sami, nebo poslat e-mail plynoucí z tohoto e-mailu šablony. E-mail je zasílán jen níže uvedenou e-mail, hlavní, Kopie a Skrytá e-mailovou adresu příjemce, jsou ignorovány při testování."; +$LANG["text_test_email_templates_no_submissions"] = "Za účelem testování vaší e-mailové šablony, musíte nejprve projít alespoň jednu formu podání."; +$LANG["text_theme_page_intro"] = "Tato stránka obsahuje seznam všech vašich témat. Klikněte na obrázek zobrazíte větší ukázka daného tématu styly. "Enabled" zaškrtávací políčko určuje, zda může nebo nemůže toto téma, které vybere klienty. Chcete-li procházet všechny dostupné témata, navštivte webové stránky formulář Nástroje."; +$LANG["text_tutorial_adding_first_form"] = "Konzultační hodiny: Přidání prvního ročníku!"; +$LANG["text_unique_submission_id"] = "Unikátní ID podání."; +$LANG["text_unused_option_list"] = "Tato volba seznam není použita v žádném polí formuláře."; +$LANG["text_upgraded"] = "Instalace byla modernizována na {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Tato možnost Seznam používá následující pole."; +$LANG["text_view_fields_info"] = "Tato karta, která ovládá pole projeví při úpravách podání v tomto pohledu, jejich pořadí a zda jsou upravitelné, nebo ne."; +$LANG["text_view_tab_summary"] = "Tato karta vám umožňuje vytvářet různé způsoby, jak skupinu a uspořádat data. Zobrazení vám umožní vytvořit vlastní podmnožiny formuláře dat rozdělit do zvládnutelných kousky, a omezit to, co klienti mohou vidět a upravovat."; +$LANG["validation_account_disabled"] = "Je nám líto, byl váš účet zablokován."; +$LANG["validation_account_not_recognized"] = "Omlouváme se, že jméno není rozpoznán."; +$LANG["validation_account_not_recognized_info"] = "Omlouváme se, bylo to, že jméno nebylo nalezeno. Prosím, zkuste to znovu, nebo kontaktujte správce stránky na níže uvedenou adresu."; +$LANG["validation_account_pending"] = "Váš uživatelský účet je čeká na schválení správce."; +$LANG["validation_check_delete_client"] = "Jste si jisti, že chcete smazat tento účet klienta?"; +$LANG["validation_client_password_missing_number"] = "Klient Heslo musí obsahovat alespoň jedno číslo (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Klient Heslo musí obsahovat alespoň jeden z následujících znaků: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Klient Heslo musí obsahovat alespoň jedno velké písmeno."; +$LANG["validation_client_password_too_short"] = "Klient Heslo musí být alespoň {\$number} znaků."; +$LANG["validation_col_name_is_reserved_word"] = "Omlouváme se, tato databáze název sloupce je vyhrazena práce v MySQL. Prosím přejmenujte jej!"; +$LANG["validation_db_name"] = "Názvy databází nemohou obsahovat období nebo lomítka."; +$LANG["validation_db_not_updated_invalid_input"] = "Databáze by mohla být aktualizována. Prosím, zkontrolujte, hodnoty, které jste zadali, jsou platné."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Je nám líto, musí výchozí správce a klientských témata vždy povoleny."; +$LANG["validation_default_phone_num_required"] = "Vyplňte, prosím, celé telefonní číslo do pole {\$field} - pouze čísla."; +$LANG["validation_default_rule_alpha"] = "Prosím zadávejte pouze písmena a čísla do pole {\$field} ."; +$LANG["validation_default_rule_letters_only"] = "Prosím, zadávejte pouze písmena do pole {\$field}."; +$LANG["validation_default_rule_numbers_only"] = "Prosím zadávejte pouze čísla do pole {\$field}."; +$LANG["validation_default_rule_required"] = "Prosím, zadejte hodnotu do pole {\$field}."; +$LANG["validation_default_rule_valid_email"] = "Zadejte prosím platnou e-mailovou adresu do pole {\$field}."; +$LANG["validation_delete_form_confirm"] = "Prosím zaškrtněte toto políčko pro potvrzení, že chcete smazat tento formulář."; +$LANG["validation_delete_non_empty_option_list"] = "VAROVÁNÍ! Tato možnost List se používá jeden nebo více polí formuláře. Mazání se bude tato pole přestanou správně fungovat."; +$LANG["validation_display_names_incomplete"] = "Prosím, zadejte hodnotu pro všechny zobrazované názvy, nebo klikněte Smart Fill možnost zadat dynamicky."; +$LANG["validation_duplicate_form_field_name"] = "Nemůžete mít více polí se stejným názvem pole."; +$LANG["validation_email_not_found_or_invalid"] = "Je nám líto, email spojený s vaším účtem buď neexistuje nebo je neplatný."; +$LANG["validation_folder_invalid_permissions"] = "Za účelem spuštění tohoto testu oprávnění musí být stanoven na upload složku umožňující čtení a zápisu dat (777 na Unixu)."; +$LANG["validation_folder_not_writable"] = "Tato složka není zapisovat."; +$LANG["validation_internal_form_too_many_fields"] = "Omlouváme se, ale pouze vytvořených formulářů s 1000 polí nebo méně."; +$LANG["validation_invalid_admin_email"] = "Zadejte platnou adminstrator e-mailovou adresu."; +$LANG["validation_invalid_admin_username"] = "Vaše uživatelské jméno může obsahovat pouze alfanumerické znaky (AZ a 0-9)."; +$LANG["validation_invalid_client_username"] = "Klienta uživatelské jméno může obsahovat pouze alfanumerické znaky (AZ a 0-9)."; +$LANG["validation_invalid_client_username2"] = "Omlouváme se, to jméno může obsahovat pouze písmena, číslice a znak podtržítka. Prosím, zadejte své uživatelské jméno."; +$LANG["validation_invalid_column_name"] = "Názvy sloupců mohou být alfanumerické (AZ, 0-9). Zkontrolujte, prosím, názvy sloupců."; +$LANG["validation_invalid_custom_from_email"] = "Prosím, zadejte platné uživatelské 'Z' e-mailovou adresu."; +$LANG["validation_invalid_custom_reply_to_email"] = "Prosím, zadejte platné custom 'Reply-k' e-mailovou adresu."; +$LANG["validation_invalid_default_sessions_timeout"] = "Prosím zadejte platnou hodnotu (číslo) pro výchozí prodlevu zasedání."; +$LANG["validation_invalid_email"] = "Zadejte prosím platnou e-mailovou adresu."; +$LANG["validation_invalid_email_id"] = "Omlouváme se, že je neplatný email ID."; +$LANG["validation_invalid_folder"] = "Sorry, to se nezdá být platným složku."; +$LANG["validation_invalid_form_field_names"] = "Polí formuláře může být pouze alfanumerické a podtržítka (aZ, 0-9, _), bez mezer."; +$LANG["validation_invalid_num_clients_per_page"] = "Prosím, zadejte pouze čísla Klienti Num Per pole stránku."; +$LANG["validation_invalid_num_emails_per_page"] = "Prosím, zadejte pouze číslice pro e-maily na stránku."; +$LANG["validation_invalid_num_form_fields"] = "Prosím, pouze zadávání čísel v řadě oblastí oboru."; +$LANG["validation_invalid_num_forms_per_page"] = "Prosím, zadejte pouze čísla v Num Formuláře na stránku pole."; +$LANG["validation_invalid_num_menus_per_page"] = "Prosím, zadejte pouze číslice pro menu na stránce."; +$LANG["validation_invalid_num_modules_per_page"] = "Prosím, zadejte pouze čísla v Num Moduly Per pole stránku."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Prosím, pouze zadávání čísel do seznamů Num možnost na stránku pole."; +$LANG["validation_invalid_num_submissions_per_page"] = "Prosím, zadejte platné počtu příspěvků na stránku."; +$LANG["validation_invalid_sessions_timeout"] = "Prosím, zadejte platné časového limitu relace (pouze celá čísla!)."; +$LANG["validation_invalid_tab_assign_values"] = "Prosím, zadejte pouze čísla v 'z' a 'až' fields."; +$LANG["validation_invalid_table_prefix"] = "Zadejte prosím prefix databáze se skládá z písmen a podtržítka charakter."; +$LANG["validation_invalid_upload_folder"] = "Váš server je instalace PHP má neplatné nastavení upload_tmp_dir hodnotu. "{\$upload_folder}" není platný složku."; +$LANG["validation_invalid_url"] = "Zadejte prosím platnou adresu URL."; +$LANG["validation_invalid_username"] = "Vaše uživatelské jméno může obsahovat pouze alfanumerické znaky (AZ a 0-9)."; +$LANG["validation_is_form_active"] = "Uveďte, zda je aktivní formulář, nebo ne."; +$LANG["validation_menu_name_taken"] = "Omlouváme se, je to již název nabídky. Vyberte si prosím nový název."; +$LANG["validation_modules_search_no_status"] = "Prosím, vyberte Povoleno nebo Zakázáno políčka."; +$LANG["validation_no_access_type"] = "Prosím, zadejte typ přístupu."; +$LANG["validation_no_account_logout_url"] = "Prosím, zadejte své odhlášení URL."; +$LANG["validation_no_account_password_confirmed"] = "Prosím, re-zadejte své nové heslo."; +$LANG["validation_no_account_password_confirmed2"] = "Prosím re-zadat nové heslo."; +$LANG["validation_no_admin_email"] = "Prosím, zadejte e-mailovou adresu administrátora."; +$LANG["validation_no_admin_theme"] = "Vyberte téma pro účet správce."; +$LANG["validation_no_admin_theme_swatch"] = "Prosím, vyberte vzorek barvy pro správce tématu."; +$LANG["validation_no_client_email"] = "Prosím, zadejte klientův e-mailovou adresu."; +$LANG["validation_no_client_first_name"] = "Prosím, zadejte jméno klienta."; +$LANG["validation_no_client_last_name"] = "Prosím, zadejte klienta příjmení."; +$LANG["validation_no_client_login_page"] = "Uveďte prosím, které stránky zákazník by měl být přesměrován, až se přihlásit"; +$LANG["validation_no_client_password"] = "Prosím, zadejte heslo klienta."; +$LANG["validation_no_client_theme_swatch"] = "Prosím, vyberte výchozí vzorník na klientské účty."; +$LANG["validation_no_client_username"] = "Prosím, zadejte uživatelské jméno klienta."; +$LANG["validation_no_column_name"] = "Zadejte prosím všechny názvy sloupců, nebo klepněte na tlačítko Inteligentní výplň, aby se automaticky vyplní je."; +$LANG["validation_no_column_selected"] = "Vyberte prosím alespoň jedno pole zobrazit jako sloupce na stránce předložení výpisu."; +$LANG["validation_no_custom_from_email"] = "Prosím, zadejte uživatelské 'Z' e-mailovou adresu."; +$LANG["validation_no_custom_recipient_email"] = "Prosím, zadejte vlastní emailovou adresu příjemce."; +$LANG["validation_no_custom_reply_to_email"] = "Prosím, zadejte vlastní 'Reply-k' e-mailovou adresu."; +$LANG["validation_no_date_format"] = "Prosím, zadejte formát data."; +$LANG["validation_no_db_column_single"] = "Prosím, zadejte databáze název sloupce."; +$LANG["validation_no_db_hostname"] = "Prosím, zadejte do databáze hostname."; +$LANG["validation_no_db_name"] = "Prosím, zadejte název databáze."; +$LANG["validation_no_db_username"] = "Prosím, zadejte do databáze uživatelské jméno účtu."; +$LANG["validation_no_default_client_theme"] = "Vyberte výchozí téma pro všechny nové účty."; +$LANG["validation_no_default_language"] = "Prosím, vyberte výchozí jazyk pro instalaci Forma Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Prosím, zadejte výchozí relace, která pro uživatelské účty."; +$LANG["validation_no_display_text"] = "Zadejte prosím zobrazovaný text pro každé pole."; +$LANG["validation_no_display_text_single"] = "Zadejte prosím displeje textové hodnoty."; +$LANG["validation_no_edit_submission_page_label"] = "Prosím, zadejte Upravit Podání stránky štítek."; +$LANG["validation_no_email"] = "Prosím, zadejte svou e-mailovou adresu."; +$LANG["validation_no_email_config_field"] = "Uveďte, které tvoří pole je pole e-mail."; +$LANG["validation_no_email_content"] = "Zadejte e-mailovou obsah alespoň jeden z formátů (HTML nebo text)."; +$LANG["validation_no_email_from_field"] = "Prosím, e-mail 'z' oblasti."; +$LANG["validation_no_email_template_name"] = "Zadejte e-mailovou název šablony."; +$LANG["validation_no_email_template_view_id"] = "Prosím, vyberte Zobrazit, na které tento email šablona by měla být zmapována."; +$LANG["validation_no_email_template_view_mapping_value"] = "Uveďte, prosím, kdy by měl být odeslán e-mail."; +$LANG["validation_no_enabled_themes"] = "Ujistěte se, že alespoň jedno téma, je povoleno."; +$LANG["validation_no_first_name"] = "Prosím, zadejte své křestní jméno."; +$LANG["validation_no_form_field_name"] = "Prosím, zadejte všechny názvy polí formuláře."; +$LANG["validation_no_form_field_single"] = "Prosím, zadejte hodnotu pole formuláře."; +$LANG["validation_no_form_id"] = "ID formuláře nebyla specifikována. Prosím, přihlaste se a zkuste to znovu."; +$LANG["validation_no_form_name"] = "Prosím, zadejte název formuláře."; +$LANG["validation_no_form_url"] = "Prosím, zadejte adresu URL formuláře."; +$LANG["validation_no_last_name"] = "Prosím, zadejte své příjmení."; +$LANG["validation_no_login_page"] = "Uveďte, které stránky chcete zasílat při každém přihlášení"; +$LANG["validation_no_logout_url"] = "Prosím, zadejte adresu URL odhlášení."; +$LANG["validation_no_main_email_recipient"] = "Zadejte prosím alespoň jedno hlavní e-mail příjemce (tj. nejen Kopie nebo Skrytá kopie)."; +$LANG["validation_no_menu"] = "Prosím, vyberte menu pro tento uživatelský účet."; +$LANG["validation_no_menu_id"] = "Prosím, vyberte nabídku."; +$LANG["validation_no_num_clients_per_page"] = "Prosím, zadejte počet klientských účtů na stránku."; +$LANG["validation_no_num_emails_per_page"] = "Prosím, zadejte počet e-mailů na seznamu na stránce."; +$LANG["validation_no_num_form_fields"] = "Zadejte prosím počet polí pro formulář."; +$LANG["validation_no_num_forms_per_page"] = "Prosím, zadejte počet formulářů na stránce."; +$LANG["validation_no_num_menus_per_page"] = "Prosím, zadejte počet nabídek na seznamu na stránce."; +$LANG["validation_no_num_modules_per_page"] = "Prosím, zadejte počet modulů na stránce."; +$LANG["validation_no_num_option_lists_per_page"] = "Prosím, zadejte číslo volby seznamu na stránce."; +$LANG["validation_no_num_submissions_per_page"] = "Prosím, zadejte počet příspěvků se zobrazí na stránce."; +$LANG["validation_no_option_list_name"] = "Prosím, zadejte název seznamu možností."; +$LANG["validation_no_page_titles"] = "Prosím, zadejte název výchozí stránka pro uživatelské účty."; +$LANG["validation_no_password"] = "Prosím, zadejte své heslo."; +$LANG["validation_no_program_name"] = "Prosím, zadejte název programu."; +$LANG["validation_no_second_password"] = "Prosím re-Zadejte své heslo."; +$LANG["validation_no_sessions_timeout"] = "Prosím, zadejte časového limitu relace."; +$LANG["validation_no_smart_fill_values"] = "Prosím, zadejte název pole formuláře a URL formuláře."; +$LANG["validation_no_table_prefix"] = "Zadejte prosím prefix databáze."; +$LANG["validation_no_tabs_defined"] = "Definovány žádné záložky"; +$LANG["validation_no_test_email_recipient"] = "Prosím, zadejte e-mailovou adresu, kde bychom měli poslat zkušební e-mail."; +$LANG["validation_no_test_email_submission_id"] = "Prosím, zadejte ID číslo podání."; +$LANG["validation_no_theme"] = "Prosím, vyberte téma."; +$LANG["validation_no_theme_swatch"] = "Prosím, vyberte vzorek barvy na zvolené téma."; +$LANG["validation_no_timezone_offset"] = "Prosím, zadejte posun časového pásma."; +$LANG["validation_no_titles"] = "Prosím, zadejte názvy stránek."; +$LANG["validation_no_two_column_names"] = "Omlouváme se, nemusíte zadat stejnou databázi název sloupce dvakrát."; +$LANG["validation_no_ui_language"] = "Prosím zvolte jazyk pro rozhraní."; +$LANG["validation_no_url"] = "Prosím, zadejte adresu URL."; +$LANG["validation_no_username"] = "Prosím, zadejte své uživatelské jméno."; +$LANG["validation_no_username_or_js"] = "Musíte zadat uživatelské jméno. Aktivujte prosím javascript ve vašem prohlížeči."; +$LANG["validation_no_view_fields"] = "Váš Zobrazit neobsahuje žádná pole! Musíte vytvorit alespon jednu oblast pro tam být něco, co se objeví ve vaší View."; +$LANG["validation_no_view_fields_selected"] = "Prosím, vyberte jednu nebo více polí přidat do View."; +$LANG["validation_no_view_name"] = "Prosím, zadejte název vašeho zobrazení."; +$LANG["validation_num_rows_to_add"] = "Prosím, zadejte počet řádků, které chcete přidat."; +$LANG["validation_option_list_name_taken"] = "Je nám líto, tato možnost již název seznamu. Prosím zvolte jiný název."; +$LANG["validation_password_in_password_history"] = "Z bezpečnostních důvodů není možné zadat stejné heslo jako každý z posledních {\$history_size}. Zadejte prosím jiné heslo."; +$LANG["validation_passwords_different"] = "Ujistěte se, že hesla jsou stejné."; +$LANG["validation_please_enter_search_date_range"] = "Vyberte časové období hledání."; +$LANG["validation_please_enter_search_keyword"] = "Prosím, zadejte hledané slovo."; +$LANG["validation_select_field_type"] = "Vyberte prosím typ pole."; +$LANG["validation_select_submissions_to_copy"] = "Vyberte prosím ty příspěvky, které chcete kopírovat."; +$LANG["validation_select_submissions_to_delete"] = "Prosím, vyberte ty, co tvrdí, který chcete smazat."; +$LANG["validation_smart_fill_cannot_fill"] = "Omlouváme se, ale nemohli jsme vyplnění této oblasti."; +$LANG["validation_smart_fill_invalid_field_type"] = "Nepodařilo se nám najít pole, ale to není rozbalovací, zaškrtávací políčko nebo radio skupiny."; +$LANG["validation_smart_fill_no_field_found"] = "Omlouváme se, ale nemohli jsme najít pole formuláře s tímto jménem na uvedené stránce."; +$LANG["validation_smart_fill_no_page"] = "Prosím vyhledejte stránku, která obsahuje pole, které chcete Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Nahrajte prosím všechny stránky ve své formě."; +$LANG["validation_upload_folder_not_writable"] = "Tento dočasný přesouvat složky je uvedeno ve vaší instalace PHP není zapisovatelná. Dokud to není stanovena, lze soubory nelze přesouvat pomocí formuláře Nástroje (nebo jakýkoli jiný program, PHP). Obraťte se na svého poskytovatele hostingu."; +$LANG["validation_upload_html_files_only"] = "Prosím nahrát pouze soubory HTML."; +$LANG["validation_username_taken"] = "Omlouváme se, že uživatelské jméno je již přijata. Prosím zadejte jiné jméno."; +$LANG["validation_wrong_password"] = "Je nám líto, že heslo nesouhlasí."; +$LANG["word_about"] = "O"; +$LANG["word_access"] = "Přístup"; +$LANG["word_account"] = "Účet"; +$LANG["word_account_sp"] = "Účtu (ů)"; +$LANG["word_accounts"] = "Účty"; +$LANG["word_action"] = "Akce"; +$LANG["word_active"] = "Aktivní"; +$LANG["word_add"] = "Přidat"; +$LANG["word_add_rightarrow"] = "Přidání »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Administrace"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Po"; +$LANG["word_aquamarine"] = "Akvamarín"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«zpět"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Před"; +$LANG["word_benefits"] = "Výhody"; +$LANG["word_blue"] = "Modrý"; +$LANG["word_cancel"] = "Zrušit"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Zaškrtávací políčka"; +$LANG["word_checklist"] = "Kontrolní seznam"; +$LANG["word_client"] = "Klient"; +$LANG["word_client_c"] = "Klient:"; +$LANG["word_clients"] = "Klienti"; +$LANG["word_close"] = "Zavřít"; +$LANG["word_code"] = "Kód"; +$LANG["word_column"] = "Sloupec"; +$LANG["word_columns"] = "Sloupce"; +$LANG["word_columns_sp"] = "Sloupec (s)"; +$LANG["word_complete"] = "Kompletní"; +$LANG["word_configuration"] = "Konfigurace"; +$LANG["word_content"] = "Obsah"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Pokračovat »"; +$LANG["word_copy"] = "Kopírovat"; +$LANG["word_custom"] = "Vlastní"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Datum"; +$LANG["word_debugging_c"] = "Ladění:"; +$LANG["word_delete"] = "Odstranit"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "Disabled"; +$LANG["word_documentation"] = "Dokumentace"; +$LANG["word_done"] = "Hotovo"; +$LANG["word_drawbacks"] = "Nevýhody"; +$LANG["word_dropdown"] = "Rozbalovací"; +$LANG["word_edit"] = "Upravit"; +$LANG["word_editable"] = "Editovatelné"; +$LANG["word_email"] = "E-mail"; +$LANG["word_email_c"] = "E-mail:"; +$LANG["word_emails"] = "E-maily"; +$LANG["word_enabled"] = "Enabled"; +$LANG["word_equals"] = "Equals"; +$LANG["word_error"] = "Chyba"; +$LANG["word_error_c"] = "Error:"; +$LANG["word_examples_c"] = "Příklady:"; +$LANG["word_external"] = "Externí"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Pole"; +$LANG["word_field_sp"] = "Obor (y)"; +$LANG["word_fields"] = "Oblasti"; +$LANG["word_fields_sp"] = "Pole (s)"; +$LANG["word_file"] = "Soubor"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Soubory"; +$LANG["word_filters"] = "Filtry"; +$LANG["word_filters_sp"] = "Filtr (y)"; +$LANG["word_for"] = "pro"; +$LANG["word_form"] = "Formulář"; +$LANG["word_form_c"] = "Forma:"; +$LANG["word_formatting"] = "Formátování"; +$LANG["word_forms"] = "Formuláře"; +$LANG["word_found"] = "Nalezené"; +$LANG["word_from"] = "Od"; +$LANG["word_from_c"] = "Od:"; +$LANG["word_general"] = "Generální"; +$LANG["word_green"] = "Zelený"; +$LANG["word_grey"] = "Šedá"; +$LANG["word_height"] = "Výška"; +$LANG["word_help"] = "Pomoc"; +$LANG["word_hidden"] = "Skrytý"; +$LANG["word_highlight"] = "Vyzdvihnout"; +$LANG["word_horizontal"] = "Horizontální"; +$LANG["word_hour"] = "Hodina"; +$LANG["word_hours"] = "Rozsah"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Obrázek"; +$LANG["word_incomplete"] = "Neúplné"; +$LANG["word_install"] = "Instalovat"; +$LANG["word_installation"] = "Instalace"; +$LANG["word_internal"] = "Interní"; +$LANG["word_language"] = "Jazyk"; +$LANG["word_large"] = "Velké"; +$LANG["word_like"] = "Mít rád"; +$LANG["word_login"] = "Přihlásit"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Odhlášení"; +$LANG["word_main"] = "Hlavní"; +$LANG["word_medium"] = "Střední"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menu"; +$LANG["word_minutes"] = "minut"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Moduly"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Jméno"; +$LANG["word_name_c"] = "Jméno:"; +$LANG["word_never"] = "Nikdy"; +$LANG["word_next_rightarrow"] = "další »"; +$LANG["word_next_step_rightarrow"] = "Další krok »"; +$LANG["word_no"] = "Ne"; +$LANG["word_none"] = "Žádný"; +$LANG["word_notes"] = "Notes"; +$LANG["word_notification"] = "Oznámení"; +$LANG["word_number"] = "Číslo"; +$LANG["word_off"] = "Pryč"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Dobře"; +$LANG["word_on"] = "V"; +$LANG["word_online"] = "On-line"; +$LANG["word_operator"] = "Provozovatel"; +$LANG["word_options"] = "Možnosti"; +$LANG["word_orange"] = "Oranžový"; +$LANG["word_order"] = "Pořadí"; +$LANG["word_other"] = "Jiný"; +$LANG["word_other_c"] = "Ostatní:"; +$LANG["word_page"] = "Stránka"; +$LANG["word_page_c"] = "Strana:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Heslo"; +$LANG["word_password_c"] = "Heslo:"; +$LANG["word_pending"] = "Čekající"; +$LANG["word_permissions"] = "Oprávnění"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«předchozí"; +$LANG["word_private"] = "Soukromý"; +$LANG["word_public"] = "Veřejnost"; +$LANG["word_purple"] = "Nachový"; +$LANG["word_recipient"] = "Příjemce"; +$LANG["word_recipient_sp"] = "Příjemce (y)"; +$LANG["word_red"] = "Červený"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Odebrat"; +$LANG["word_remove_uc_leftarrow"] = "«odstranit"; +$LANG["word_reply_to"] = "Reply-to"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Požadovaný"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Vyřešeno"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "řádek"; +$LANG["word_search"] = "Hledat"; +$LANG["word_searchable"] = "Prohledávatelný"; +$LANG["word_select"] = "Vybrat"; +$LANG["word_setting"] = "Nastavení"; +$LANG["word_settings"] = "Nastavení"; +$LANG["word_show"] = "Ukázat"; +$LANG["word_size"] = "Velikost"; +$LANG["word_skipped"] = "Přeskočena"; +$LANG["word_small"] = "Malé"; +$LANG["word_solution"] = "Řešení"; +$LANG["word_sortable"] = "Semen"; +$LANG["word_start"] = "Začátek"; +$LANG["word_status"] = "Stav"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Předmět"; +$LANG["word_subject_c"] = "Předmět"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Podání"; +$LANG["word_system"] = "Systém"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Karet"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Téma"; +$LANG["word_themes"] = "Témata"; +$LANG["word_time"] = "Čas"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Tipy"; +$LANG["word_today"] = "Dnes"; +$LANG["word_truncate_q"] = "Zkrátit?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Neznámá"; +$LANG["word_update"] = "Aktualizovat"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Uživatel"; +$LANG["word_username"] = "Uživatelské jméno"; +$LANG["word_username_c"] = "Uživatelské jméno:"; +$LANG["word_validation"] = "Validace"; +$LANG["word_value"] = "Hodnota"; +$LANG["word_value_sp"] = "Hodnota (y)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Zkontrolujte, zda"; +$LANG["word_version"] = "Verze"; +$LANG["word_vertical"] = "Vertikální"; +$LANG["word_view"] = "Pohled"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Pozor!"; +$LANG["word_warning_c"] = "Upozornění:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Vítejte!"; +$LANG["word_width_c"] = "šířka:"; +$LANG["word_words"] = "Slova"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Žlutý"; +$LANG["word_yes"] = "Ano"; \ No newline at end of file diff --git a/global/lang/cy.php b/global/lang/cy.php new file mode 100644 index 00000000..5ec4aa2b --- /dev/null +++ b/global/lang/cy.php @@ -0,0 +1,1219 @@ +Rhybudd! Rydych wedi dewis {\$num_selected_on_page} sylwadau ar y tudalen hon a {\$num_selected_on_other_pages} ar dudalennau eraill. Dewiswch un o'r opsiynau canlynol:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Rhybudd! Nid ydych chi wedi dewis unrhyw sylwadau ar y tudalen hon, ond eich bod wedi dewis {\$num_selected_on_other_pages} ar dudalennau eraill. Fyddech gystal â chadarnhau eich bod am ddileu cyflwyniadau hyn.
    "; +$LANG["confirm_delete_view"] = "A ydych yn sicr eich bod am ddileu hyn Gweld?"; +$LANG["confirm_refresh_page"] = "A ydych yn sicr eich bod am i ail osod y dudalen? Bydd hyn yn colli unrhyw newidiadau a wnaethoch."; +$LANG["confirm_save_change_before_redirect"] = "Un neu fwy o feysydd wedi eu diweddaru. Hoffech chi arbed eich newidiadau cyn ailgyfeirio?"; +$LANG["confirm_smart_fill_db_column_fields"] = "A ydych yn sicr eich bod am Smart Llenwch y golofn ddata enwau? Bydd hyn yn ysgrifennu eich gwerthoedd presennol."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Mae'r opsiwn hwn yn auto-greu cronfa ddata enwau golofn yn seiliedig ar y meysydd Arddangos Destun, felly cynnwys y tabl gronfa ddata yn haws i'w darllen."; +$LANG["confirm_smart_fill_display_names"] = "A ydych yn sicr eich bod am Smart Llenwch y enwau Arddangos? Bydd hyn yn ysgrifennu eich gwerthoedd presennol."; +$LANG["confirm_ungroup_option_list"] = "A ydych yn sicr eich bod am dadgrwpio opsiwn y rhestr hon? Bydd yr holl opsiynau'n cael eu trin gyda'i i mewn i un, rhestr ungrouped."; +$LANG["confirm_uninstall_module"] = "A ydych yn sicr eich bod am at uninstall y modiwl hwn? Bydd yr holl ddata modiwl yn cael ei golli."; +$LANG["date_AM"] = "AC"; +$LANG["date_Fri"] = "Gwe"; +$LANG["date_Friday"] = "Dydd Gwener"; +$LANG["date_Mon"] = "Llun"; +$LANG["date_Monday"] = "Dydd Llun"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sad"; +$LANG["date_Saturday"] = "Dydd Sadwrn"; +$LANG["date_Sun"] = "Sul"; +$LANG["date_Sunday"] = "Dydd Sul"; +$LANG["date_Thu"] = "Iau"; +$LANG["date_Thursday"] = "Dydd Iau"; +$LANG["date_Tue"] = "Maw"; +$LANG["date_Tuesday"] = "Dydd Mawrth"; +$LANG["date_Wed"] = "Mer"; +$LANG["date_Wednesday"] = "Dydd Mercher"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Ebrill"; +$LANG["date_month_August"] = "Awst"; +$LANG["date_month_December"] = "Rhagfyr"; +$LANG["date_month_February"] = "Chwefror"; +$LANG["date_month_January"] = "Ionawr"; +$LANG["date_month_July"] = "Gorffennaf"; +$LANG["date_month_June"] = "Mehefin"; +$LANG["date_month_March"] = "Mawrth"; +$LANG["date_month_May"] = "May"; +$LANG["date_month_November"] = "Tachwedd"; +$LANG["date_month_October"] = "Hydref"; +$LANG["date_month_September"] = "Medi"; +$LANG["date_month_short_Apr"] = "Ebrill"; +$LANG["date_month_short_Aug"] = "Awst"; +$LANG["date_month_short_Dec"] = "Rhagfyr"; +$LANG["date_month_short_Feb"] = "Chwefror"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Gorffennaf"; +$LANG["date_month_short_Jun"] = "Mehefin"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "May"; +$LANG["date_month_short_Nov"] = "Tachwedd"; +$LANG["date_month_short_Oct"] = "Hydref"; +$LANG["date_month_short_Sep"] = "Medi"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Mae'r cyfrif defnyddiwr wedi ei ddileu."; +$LANG["notify_account_updated"] = "Eich cyfrif wedi ei ddiweddaru yn llwyddiannus."; +$LANG["notify_add_display_values"] = "Ychwanegu Dangos Gwerthoedd"; +$LANG["notify_admin_menu_updated"] = "Mae'r fwydlen gweinyddu wedi ei ddiweddaru."; +$LANG["notify_admin_theme_overridden"] = "Thema Mae'r gweinyddwr wedi ei llaw diystyru'r."; +$LANG["notify_allow_url_fopen_not_set"] = "Mae'n ddrwg gennym, ni all y prawf hwn yn cael ei redeg ar eich weinydd y we. Mae'n gofyn i allow_url_fopen eu gosod i 1 yn eich ffeil php.ini. Mae hyn yn caniatáu gosod PHP i gael mynediad at ffeiliau drwy URL, y mae ei angen i weithredu'r prawf hwn. Gallwch brofi ei llaw gan lanlwytho ffeil i'r ffolder drwy FTP, yna geisio cael mynediad iddo yn y URL chi wedi darparu."; +$LANG["notify_change_temp_password"] = "Rydych wedi mewngofnodi yn unig i mewn gyda cyfrinair dros dro. Dylech ailosod eich cyfrinair nawr!"; +$LANG["notify_click_to_edit_new_submission"] = "Cliciwch yma i olygu'r cyflwyniad newydd."; +$LANG["notify_client_account_menus_updated"] = "Y (cyfrif cleient au) wedi cael eu diweddaru i {\$menu_name} ddewislen. Efallai y byddwch yn awr ddileu y fwydlen a oedd yn gysylltiedig yn flaenorol gyda'r cyfrif (au)."; +$LANG["notify_client_account_not_updated"] = "Nid oedd y cyfrif cleient yn cael ei ddiweddaru."; +$LANG["notify_client_account_themes_updated"] = "Y (cyfrif cleient au) wedi cael eu diweddaru ar y {\$theme} thema. Efallai y byddwch yn awr analluoga 'r thema sy'n gysylltiedig flaenorol gyda'r cyfrif (au)."; +$LANG["notify_client_account_updated"] = "Mae'r cyfrif cleient wedi cael ei ddiweddaru yn llwyddiannus."; +$LANG["notify_client_menu_deleted"] = "Mae'r fwydlen cleient wedi ei ddileu."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Mae'r fwydlen wedi ei ddileu, ond y cyfrifon cleient canlynol yn awr bellach heb ddewislen! Mae angen i chi ddiweddaru cyfrifon canlynol:"; +$LANG["notify_client_menu_updated"] = "Mae'r fwydlen cleient wedi ei ddiweddaru."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Mae'n ddrwg gennym, y ddewislen 'ch jyst ceisio dileu eisoes yn cael ei defnyddio gan y cleientiaid a restrir isod. Er mwyn dileu y fwydlen bydd angen i chi neilltuo y cleientiaid i bwydlenni eraill. Cliciwch ar enw'r cleient i olygu bod cyfrif unigol, neu neilltuo pob cyfrif i bwydlen wahanol ddefnyddio'r gwymplen isod."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Mae'n ddrwg gennym, un o'r themâu 'ch jyst anabl eisoes yn cael eu defnyddio gan y cyfrifon cleient canlynol. Er mwyn analluogi y thema, bydd angen i chi neilltuo bob cleient i thema arall. Cliciwch ar enw'r cleient i olygu bod cyfrif unigol, neu neilltuo pob cyfrif i thema ddefnyddio'r gwymplen isod."; +$LANG["notify_edit_email_fields_link"] = "Cliciwch yma i nodi pa feysydd ffurflen mae caeau e-bost, er mwyn i chi eu targedu yn eich templedi e-bost."; +$LANG["notify_edit_field_new_field"] = "Mae hwn yn faes newydd. Bydd angen i chi ddiweddaru y brif dudalen cyn gallu llawn golygu y maes hwn."; +$LANG["notify_edit_option_list_after_save"] = "Rhaid i chi ddewis Rhestr Opsiwn ac yna Cadw Newidiadau cyn gallu ei olygu."; +$LANG["notify_email_field_config_deleted"] = "Mae'r ffurfweddiad e-bost wedi ei ddileu."; +$LANG["notify_email_fields_not_updated"] = "Mae'n ddrwg gennym, nid oeddem yn diweddaru'r meysydd e-bost."; +$LANG["notify_email_fields_updated"] = "Mae'r meysydd e-bost wedi eu diweddaru."; +$LANG["notify_email_not_sent"] = "Mae'n ddrwg gennym, nid oedd yr e-bost yn cael ei anfon. Cysylltwch â gweinyddwr y safle yn y cyfeiriad isod."; +$LANG["notify_email_not_sent_c"] = "Mae'n ddrwg gennym, nid oedd y neges e-bost yn cael ei anfon:"; +$LANG["notify_email_sent"] = "Mae'r e-bost (au) wedi cael eu hanfon."; +$LANG["notify_email_template_deleted"] = "Mae'r e-bost templed wedi ei ddileu."; +$LANG["notify_email_template_updated"] = "Mae'r e-bost templed wedi ei ddiweddaru."; +$LANG["notify_enabled_module_list_updated"] = "Mae'r rhestr o fodiwlau galluogi wedi ei ddiweddaru."; +$LANG["notify_error_saving_fields"] = "Roedd gwall arbed y caeau."; +$LANG["notify_field_changes_saved"] = "Mae'r newidiadau i'ch maes (meysydd) wedi eu cadw."; +$LANG["notify_field_options_smart_filled"] = "Eich opsiynau cae wedi cael eu Smart Llenwad."; +$LANG["notify_field_selected"] = "Y cae wedi cael ei ddewis. Cliciwch yma i ddychwelyd at y rhestr prif maes."; +$LANG["notify_field_updated"] = "Y maes hwn wedi cael ei ddiweddaru."; +$LANG["notify_file_not_uploaded"] = "Nid oedd y ffeil yn cael ei llwytho i fyny."; +$LANG["notify_file_uploaded"] = "Y ffeil yn llwytho yn llwyddiannus."; +$LANG["notify_filters_not_updated"] = "Bu gwall wrth ddiweddaru'r hidlo cyflwyniad y cleient."; +$LANG["notify_filters_updated"] = "Mae'r hidlyddion cais wedi cael eu diweddaru ar gyfer y cleient."; +$LANG["notify_folder_correct_permissions"] = "Mae hyn wedi blygell y caniatadau cywir."; +$LANG["notify_folder_url_match"] = "Y ffolder a URL ymddangos i gyd-fynd yn gywir."; +$LANG["notify_folder_url_no_access"] = "Nid oedd hyn yn cael ei berfformio prawf ers PHP yn gallu cael gafael ar y URL. Mae hyn yn cael ei achosi fel arfer gan y cyfrinair URL cael ei warchod gyda ffeil. Htaccess."; +$LANG["notify_folder_url_no_match"] = "Nid yw hyn ffolder-URL cyfuniad yw'n ymddangos i fod yn gêm."; +$LANG["notify_folder_url_unknown_error"] = "Mae gwall anhysbys. Gallwch brofi ei llaw gan lanlwytho ffeil i'r ffolder drwy FTP, yna geisio cael mynediad iddo yn y URL chi wedi darparu."; +$LANG["notify_form_access_type_email_info"] = "Mae'r ffurflen hon wedi math fynediad gweinyddwr, felly nid oes cleientiaid yn cael mynediad iddo ac ni chânt eu rhestru yn y gwymplen isod."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Mae'n ddrwg gennym, a ffurflen gyda ID nad yw'n bodoli."; +$LANG["notify_form_field_not_added"] = "Nid oedd y maes '{\$fieldname}' yn cael eu hychwanegu."; +$LANG["notify_form_field_options_updated"] = "Mae'r opsiynau ffurflen maes wedi eu diweddaru."; +$LANG["notify_form_field_removed"] = "Y cae ffurflen ei ddileu yn llwyddiannus."; +$LANG["notify_form_fields_removed"] = "Mae'r caeau ffurflen yn symud yn llwyddiannus."; +$LANG["notify_form_not_updated_notify_admin"] = "Nid oedd eich ffurflen yn cael ei ddiweddaru. Cysylltwch â gweinyddwr y safle i roi gwybod am y broblem hon."; +$LANG["notify_form_settings_updated"] = "Eich gosodiadau ffurflen wedi cael eu diweddaru yn llwyddiannus."; +$LANG["notify_form_submission_updated"] = "Cyflwyno ffurflen wedi ei ddiweddaru."; +$LANG["notify_form_tabs_updated"] = "Y tabiau wedi cael eu diweddaru."; +$LANG["notify_form_updated"] = "Y ffurflen wedi ei ddiweddaru yn llwyddiannus."; +$LANG["notify_form_views_updated"] = "Barn ffurflen wedi eu diweddaru."; +$LANG["notify_install_invalid_db_info"] = "Mae'n ddrwg gennym, nid oeddem yn gallu cysylltu at y gronfa ddata gan ddefnyddio'r wybodaeth a ddarparwyd. Mae'r neges gwall y gronfa ddata wedi dod o hyd yn: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Mae eich ffurflen wedi cael ei greu! Gallwch ffurfweddu eich ffurflen drwy'r tabiau."; +$LANG["notify_invalid_account_information_in_sessions"] = "Mae'r wybodaeth cyfrif ei storio mewn sesiynau yn annilys. Mewngofnodwch eto isod."; +$LANG["notify_invalid_license_key"] = "Mae'n ddrwg gennym, nid yw'n ymddangos i fod yn allweddol drwydded ddilys. Os gwelwch yn dda rhowch gynnig mynd i mewn eto."; +$LANG["notify_invalid_permissions"] = "Nid oes gennych yr hawliau i gael mynediad at y dudalen hon. Rydych wedi allgofnodi."; +$LANG["notify_invalid_search_dates"] = "Defnyddiwch y datepicker i fynd i mewn yn ddyddiad dilys neu ddyddiadau."; +$LANG["notify_invalid_upload_folder"] = "'R folder lanlwytho naill ai yn annilys neu os nad yw'n Ysgrifenadwy."; +$LANG["notify_lang_list_updated"] = "Mae'r rhestr ar gael UI iaith wedi ei ddiweddaru."; +$LANG["notify_login_info_emailed"] = "Eich gwybodaeth mewngofnodi wedi cael ei e-bostio i chi."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Wps, y modiwl hwn wedi'i gosod yn barod!"; +$LANG["notify_module_installed"] = "Mae'r modiwl wedi eu gosod. Cliciwch yma i ddewis y modiwl."; +$LANG["notify_module_list_updated"] = "Mae'r rhestr modiwl wedi ei ddiweddaru."; +$LANG["notify_module_uninstalled"] = "Mae'r modiwl wedi bod uninstalled."; +$LANG["notify_module_updated"] = "Mae'r modiwl {\$module} wedi cael ei ddiweddaru i {\$version}. Cliciwch yma i ddewis y modiwl ."; +$LANG["notify_multi_field_selected"] = "Y cae wedi cael ei ddewis. Cliciwch yma i weld a golygu yr opsiynau maes."; +$LANG["notify_multi_field_updated"] = "Y maes hwn wedi cael ei ddiweddaru. Byddwch yn gallu ffurfweddu yr opsiynau maes ar ôl sefydlu'r ffurflen."; +$LANG["notify_multiple_fields_found"] = "Elfennau Lluosog Daethpwyd o hyd gyda'r enw hwn field_name maes ({\$field_name}). Gall hyn ddigwydd os bydd eich dudalen hon yn cynnwys mwy nag un ffurflen, neu os ydych wedi enwi un eich ffurflenni yr un fath ag un arall. Dewiswch yr un rydych eisiau o'r rhestr isod."; +$LANG["notify_new_default_view_created"] = "Mae View diofyn newydd, sy'n cynnwys yr holl feysydd eich ffurflen wedi cael ei greu."; +$LANG["notify_new_submission_created"] = "Y cyflwyniad wedi cael ei greu. Efallai y byddwch yn ei olygu isod."; +$LANG["notify_no_account_id_in_sessions"] = "Daethpwyd o hyd Rhif Adnabod Defnyddiwr mewn sesiynau. Mewngofnodwch eto isod."; +$LANG["notify_no_api_installed"] = "Nid oes yn rhaid gosod y API"; +$LANG["notify_no_client_permissions"] = "Nid oes unrhyw osodiadau ar gael i olygu."; +$LANG["notify_no_email_template_selected"] = "Dewiswch y templed e-bost."; +$LANG["notify_no_emails_defined"] = "Dim negeseuon e-bost wedi cael eu diffinio ar gyfer y ffurflen hon. I ychwanegu un newydd, cliciwch y botwm isod."; +$LANG["notify_no_field_settings"] = "Nid yw'r math hwn maes yn cynnwys unrhyw leoliadau ychwanegol."; +$LANG["notify_no_fields_in_tab"] = "Nid yw hyn tab yn cynnwys unrhyw feysydd."; +$LANG["notify_no_option_lists"] = "Nid oes unrhyw opsiwn rhestrau diffiniedig. Cliciwch ar y botwm isod i greu un newydd."; +$LANG["notify_no_test_submission"] = "Nid yw Ffurflen Offer wedi derbyn cyflwyniad prawf llwyddiannus eto."; +$LANG["notify_no_user_email_fields_configured"] = "Sylwer: os ydych chi am anfon e-bost at unrhyw cyfeiriad e-bost sy'n ei gynnwys yn y ffurflen, angen i chi ffurfweddu'r meysydd ffurflen e-bost."; +$LANG["notify_no_views"] = "Nid yw eich ffurflen oes gan unrhyw Golygfeydd sefydlu! Bydd angen o leiaf un View er mwyn rheoli eich data ffurflen."; +$LANG["notify_no_views_assigned_to_client_form"] = "Mae'n ymddangos nad yw eich cyfrif defnyddiwr wedi'i neilltuo i unrhyw Views ffurf, felly ni fyddwch yn gallu gweld unrhyw ddata. Cysylltwch â'r gweinyddwr am gymorth pellach."; +$LANG["notify_no_views_defined"] = "Nid oes gennych unrhyw sylwadau diffiniedig. Ni fyddwch yn gallu gweld cyflwyniadau ffurflen hon oni bai o leiaf un View cael ei chreu. Cliciwch ar y botwm isod i greu'r View diofyn."; +$LANG["notify_option_list_deleted"] = "Mae'r rhestr opsiwn wedi cael ei ddileu."; +$LANG["notify_option_list_updated"] = "Mae'r rhestr opsiwn wedi cael ei ddiweddaru."; +$LANG["notify_public_form_omit_list_updated"] = "Y cleient hepgor rhestr ar gyfer y ffurflen hon wedi ei diweddaru."; +$LANG["notify_public_view_omit_list_updated"] = "Hepgor y cleient ar gyfer y rhestr Edrychwch wedi ei ddiweddaru."; +$LANG["notify_required_admin_pages"] = "Mae'r tudalennau canlynol yn ofynnol yn y ddewislen gweinyddwr: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Mae'n ddrwg gennym, nid oedd unrhyw weithgaredd am sbel, felly rydym wedi logio i chi allan. Mewngofnodwch eto isod."; +$LANG["notify_setup_options_updated"] = "Setup yr opsiynau wedi cael eu diweddaru."; +$LANG["notify_smart_fill_field_not_found"] = "Nid oeddem yn gallu dod o hyd i maes gyda'r enw hwn ({\$field_name}) yn y ffurflen (au) penodol. Gallwch naill ai osod llaw y math maes isod, neu cliciwch ar y botwm Skip to golygu y maes hwn yn ddiweddarach."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Eich ffeil (au) yn cael eu llwytho i fyny yn llwyddiannus. Ceisiwch glicio ar y botwm Llenwch Smart i geisio eto. Os bydd y cam hwn yn methu, bydd angen i chi hepgor y cam hwn a ffurfweddu eich ffurflen meysydd manally yn ddiweddarach."; +$LANG["notify_smart_fill_submitted"] = "Y ffurflen wedi cael ei gyflwyno. Yn dibynnu ar faint eich ffurflen a nifer o opsiynau maes, gallai hyn gymryd peth amser."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Mae'n ddrwg gennym, nid oedd un neu fwy o'r ffeiliau, fe wnaethoch chi ei llwytho i fyny. Bydd angen i chi hepgor y cam hwn a ffurfweddu y meysydd â llaw."; +$LANG["notify_submission_and_files_deleted"] = "Y cyflwyniad ac unrhyw ffeil (au) sy'n gysylltiedig ag ef yn dileu llwyddiannus."; +$LANG["notify_submission_copied"] = "Mae'r copi wedi'i gyflwyno."; +$LANG["notify_submission_copied_edit"] = "Mae'r copi wedi'i gyflwyno. Gallwch ei olygu isod."; +$LANG["notify_submission_deleted"] = "Cyflwyno ei ddileu yn llwyddiannus."; +$LANG["notify_submission_deleted_with_problems"] = "Cyflwyno ei ddileu, ond y problemau canlynol yn codi wrth geisio dileu y ffeil canlynol (au):"; +$LANG["notify_submission_id_not_found"] = "Ni chafodd y ID cyflwyno."; +$LANG["notify_submission_not_updated"] = "Nid oedd y cyflwyniad yn cael ei ddiweddaru."; +$LANG["notify_submissions_and_files_deleted"] = "Cyflwyniadau ac unrhyw ffeil (au) sy'n gysylltiedig â hwy eu dileu yn llwyddiannus."; +$LANG["notify_submissions_copied"] = "Mae {\$num_submissions} o gyflwyniadau wedi'u copïo."; +$LANG["notify_submissions_deleted"] = "Cyflwyniadau eu dileu yn llwyddiannus."; +$LANG["notify_submissions_deleted_with_problems"] = "Mae'r cyflwyniadau yn dileu, ond y problemau canlynol yn codi wrth geisio dileu y ffeil canlynol (au):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Nid oedd eich e-bost prawf yn cael eu hanfon."; +$LANG["notify_theme_cache_folder_not_writable"] = "Nid cache folder Mae'r thema hon yw Ysgrifenadwy. Er mwyn galluogi y thema hon, y {\$folder} folder angen i wedi darllen llawn-ganiatadau ysgrifennu."; +$LANG["notify_theme_list_updated"] = "Mae'r rhestr thema wedi ei ddiweddaru."; +$LANG["notify_themes_settings_updated"] = "Eich gosodiadau thema wedi cael eu diweddaru."; +$LANG["notify_view_deleted"] = "View wedi ei ddileu."; +$LANG["notify_view_group_deleted"] = "Mae'r grŵp View wedi cael ei ddileu."; +$LANG["notify_view_missing_columns"] = "Wps! Mae'n ddrwg gennym, nid yw hyn View wedi cael ei sefydlu yn llawn eto."; +$LANG["notify_view_missing_columns_admin_fix"] = "Cliciwch yma i nodi pa feysydd ddylai ymddangos fel colofnau ar y dudalen hon."; +$LANG["notify_view_updated"] = "View wedi ei ddiweddaru."; +$LANG["notify_your_email_sent"] = "Eich e-bost wedi ei anfon yn llwyddiannus."; +$LANG["phrase_100_per_page"] = "100 y dudalen"; +$LANG["phrase_10_per_page"] = "10 y dudalen"; +$LANG["phrase_15_per_page"] = "15 tudalen yr"; +$LANG["phrase_1_direct"] = "1. Uniongyrchol"; +$LANG["phrase_1char"] = "1 Torgoch"; +$LANG["phrase_20_per_page"] = "20 tudalen yr"; +$LANG["phrase_25_per_page"] = "25 y dudalen"; +$LANG["phrase_2_code"] = "2. Côd"; +$LANG["phrase_2_columns"] = "Colofnau 2"; +$LANG["phrase_2chars"] = "2 chars"; +$LANG["phrase_3_columns"] = "3 Colofnau"; +$LANG["phrase_4_columns"] = "Colofnau 4"; +$LANG["phrase_50_per_page"] = "50 y dudalen"; +$LANG["phrase_accepting_submissions"] = "(cyflwyniadau derbyn)"; +$LANG["phrase_access_admin_account_c"] = "Gallwch gael mynediad i'ch cyfrif gweinyddu yma:"; +$LANG["phrase_access_type"] = "Mynediad Math"; +$LANG["phrase_account_info"] = "Gwybodaeth Cyfrif"; +$LANG["phrase_account_settings"] = "Cyfrif Gosodiadau"; +$LANG["phrase_action_needed"] = "Angen gweithredu"; +$LANG["phrase_add_client"] = "Ychwanegu cleient"; +$LANG["phrase_add_client_menu"] = "Ychwanegu cleient Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Ychwanegu gosodiadau diofyn »"; +$LANG["phrase_add_field"] = "Ychwanegu Maes"; +$LANG["phrase_add_fields"] = "Ychwanegu Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Ychwanegwch Maes (au) »"; +$LANG["phrase_add_form"] = "Ychwanegu Ffurflen"; +$LANG["phrase_add_form_external"] = "Ychwanegu Ffurflen - Allanol"; +$LANG["phrase_add_form_internal"] = "Ychwanegu Ffurflen - Mewnol"; +$LANG["phrase_add_new_group_rightarrow"] = "Ychwanegu Grwp Newydd »"; +$LANG["phrase_add_num_rows"] = "Ychwanegu {\$number} Row (au)"; +$LANG["phrase_add_row"] = "Ychwanegu Row »"; +$LANG["phrase_add_submission_button"] = "Ychwanegu Botwm Cyflwyniad"; +$LANG["phrase_add_view_rightarrow"] = "Ychwanegu Gweld »"; +$LANG["phrase_adding_multi_page_form"] = "Ychwanegu ffurflen aml-dudalen gyda API"; +$LANG["phrase_adding_single_page_form"] = "Ychwanegu ffurflen tudalen un-gyda'r API"; +$LANG["phrase_admin_menu"] = "Gweinyddwr Menu"; +$LANG["phrase_admin_only"] = "Gweinyddwr yn Unig"; +$LANG["phrase_admin_panel"] = "Panel admin"; +$LANG["phrase_administrator_theme"] = "Gweinyddwr Thema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Uwch lleoliadau »"; +$LANG["phrase_all_X_results_selected"] = "Pob {\$numresults} Canlyniadau Selected"; +$LANG["phrase_all_clients"] = "Holl gleientiaid"; +$LANG["phrase_all_clients_except_c"] = "Holl gleientiaid ac eithrio:"; +$LANG["phrase_all_clients_have_access"] = "(holl gleientiaid yn cael mynediad)"; +$LANG["phrase_all_fields"] = "Pob maes"; +$LANG["phrase_all_fields_displayed"] = "Mae pob maes yn cael eu harddangos"; +$LANG["phrase_all_statuses"] = "Pob statuses"; +$LANG["phrase_all_submissions"] = "Pob cyflwyniadau"; +$LANG["phrase_allow_fields_edited"] = "Gadewch i meysydd golygu"; +$LANG["phrase_alphanumeric"] = "Alffaniwmerig (AZ, 0-9)"; +$LANG["phrase_api_version"] = "Fersiwn API"; +$LANG["phrase_apply_timezone_offset"] = "Gwneud cais Cylchfa amser Atred"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Neilltuo pob cyfrif cleient a restrir i {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Neilltuo pob cyfrif cleient a restrir i {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Diwedd"; +$LANG["phrase_at_start"] = "Yn Dechrau"; +$LANG["phrase_author_link"] = "Link Awdur"; +$LANG["phrase_auto_disable_account"] = "cyfrif Auto-analluoga ar ôl methu ymdrechion # login"; +$LANG["phrase_auto_size"] = "Auto-maint"; +$LANG["phrase_available_clients"] = "Cleientiaid gael"; +$LANG["phrase_available_fields"] = "Meysydd sydd ar gael"; +$LANG["phrase_available_option_lists"] = "Rhestrau Opsiwn Ar gael"; +$LANG["phrase_available_swatches"] = "Samplau sydd ar gael"; +$LANG["phrase_available_swatches_c"] = "Samplau sydd ar gael:"; +$LANG["phrase_available_tabs"] = "Tabs Ar gael"; +$LANG["phrase_available_views"] = "Golwg ar gael"; +$LANG["phrase_awaiting_form_submission"] = "Disgwyl gyflwyno ffurflen."; +$LANG["phrase_back_to_field_list"] = "«Yn ôl i'r rhestr maes"; +$LANG["phrase_back_to_search_results"] = "yn ôl i canlyniadau'r chwiliad"; +$LANG["phrase_base_view_on"] = "View Sylfaen ar ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Newid Mewngofnodi Gwybodaeth"; +$LANG["phrase_characters_limit_p"] = "cymeriadau terfyn."; +$LANG["phrase_check_db_settings_try_again"] = "Os gwelwch yn dda dwbl-wirio eich gosodiadau cronfa ddata a chliciwch y botwm Parhau eto."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Gwiriwch URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Clirio hepgor Rhestr"; +$LANG["phrase_client_account_settings"] = "Cleientiaid Cyfrif Gosodiadau"; +$LANG["phrase_client_field"] = "Cleientiaid Maes"; +$LANG["phrase_client_map_filters"] = "Cleientiaid Map Hidlau »"; +$LANG["phrase_client_may_edit"] = "Gall olygu Cleientiaid"; +$LANG["phrase_client_menu"] = "Cleientiaid Menu"; +$LANG["phrase_clients_can_access_form"] = "Cleientiaid a all weld y ffurflen"; +$LANG["phrase_clients_can_access_view"] = "Cleientiaid sy'n gallu cael mynediad i'r View"; +$LANG["phrase_clients_cannot_access_form"] = "Cleientiaid nad ydynt yn gallu cael mynediad i'r ffurflen"; +$LANG["phrase_clients_cannot_access_view"] = "Cleientiaid nad ydynt yn gallu cael mynediad i'r View"; +$LANG["phrase_clients_may_edit"] = "Gall cleientiaid golygu"; +$LANG["phrase_code_c"] = "Gwall Côd:"; +$LANG["phrase_code_markup_field"] = "Côd / Markup Maes"; +$LANG["phrase_code_markup_type"] = "Côd / Markup Math"; +$LANG["phrase_codes_c"] = "Codau Gwall:"; +$LANG["phrase_column_width"] = "Lled Colofn"; +$LANG["phrase_company_name"] = "Enw'r Cwmni"; +$LANG["phrase_configure_form_email_fields"] = "Ffurfweddu Ffurflen E-bost Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Cadarnhau Plygell-URL Cyfatebol"; +$LANG["phrase_connect_rows"] = "Cyswllt rhesi"; +$LANG["phrase_copy_email_settings_from"] = "E-bost copi Gosodiadau O ..."; +$LANG["phrase_copy_settings_from"] = "Copi Gosodiadau O ..."; +$LANG["phrase_core_fields"] = "Meysydd Craidd"; +$LANG["phrase_core_version"] = "Fersiwn Craidd"; +$LANG["phrase_create_account"] = "Creu Cyfrif"; +$LANG["phrase_create_admin_account"] = "Admin Creu Cyfrif"; +$LANG["phrase_create_config_file"] = "Creu Config Ffeil"; +$LANG["phrase_create_database_tables"] = "Creu Tablau Cronfa Ddata"; +$LANG["phrase_create_default_view"] = "Creu Gweld ddiofyn"; +$LANG["phrase_create_file"] = "Creu Ffeil"; +$LANG["phrase_create_group"] = "Creu Grŵp"; +$LANG["phrase_create_new_email"] = "Creu Newydd E-bost"; +$LANG["phrase_create_new_menu"] = "Creu Newydd Menu"; +$LANG["phrase_create_new_option_list"] = "Creu Rhestr Opsiwn Newydd"; +$LANG["phrase_create_new_option_list_group"] = "Creu grŵp opsiwn newydd rhestr"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Creu Rhestr Opsiwn Newydd »"; +$LANG["phrase_create_new_view"] = "Creu Newydd View"; +$LANG["phrase_create_new_view_group"] = "Creu Newydd View Grŵp"; +$LANG["phrase_custom_display_format"] = "Fformat Arddangos Custom"; +$LANG["phrase_custom_recipient"] = "Custom Derbynnydd"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Glas Tywyll"; +$LANG["phrase_data_type"] = "Data Math"; +$LANG["phrase_database_hostname"] = "Cronfa Ddata enw gwesteiwr"; +$LANG["phrase_database_name"] = "Cronfa Ddata enw"; +$LANG["phrase_database_password"] = "Cronfa Ddata cyfrinair"; +$LANG["phrase_database_settings"] = "Cronfa Ddata Gosodiadau"; +$LANG["phrase_database_setup"] = "Cronfa Ddata Gosod"; +$LANG["phrase_database_table_prefix"] = "Cronfa Ddata tabl cofrestru llythyren flaen"; +$LANG["phrase_database_username"] = "Cronfa Ddata enw defnyddiwr"; +$LANG["phrase_date_format"] = "Fformat Dyddiad"; +$LANG["phrase_db_column"] = "DB Colofn"; +$LANG["phrase_db_setup_page_4"] = "4. Cronfa Ddata Gosod"; +$LANG["phrase_default_client_account_theme"] = "Default Cleientiaid Cyfrif Thema"; +$LANG["phrase_default_date_field_search_value"] = "Gwerth diofyn maes dyddiad chwilio"; +$LANG["phrase_default_language"] = "Iaith ddiofyn"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default Sesiynau Goramser"; +$LANG["phrase_default_sort_order"] = "Gorchymyn Trefnu Diofyn"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Thema ddiofyn"; +$LANG["phrase_default_value"] = "Gwerth diofyn"; +$LANG["phrase_default_values"] = "Gwerthoedd diofyn"; +$LANG["phrase_default_values_new_submissions"] = "Gwerthoedd diofyn ar gyfer Cyflwyniadau Newydd"; +$LANG["phrase_delete_field"] = "Dileu Maes"; +$LANG["phrase_delete_form"] = "Ffurflen Dileu"; +$LANG["phrase_delete_row"] = "Dileu Rhes"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Dileu ffeiliau yn gysylltiedig wrth gyflwyno dileu"; +$LANG["phrase_delete_view"] = "Dileu View"; +$LANG["phrase_disconnect_rows"] = "Datgysylltu rhesi"; +$LANG["phrase_display_email"] = "Dangos E-bost"; +$LANG["phrase_display_name"] = "Dangos Enw"; +$LANG["phrase_display_text"] = "Dangos Testun"; +$LANG["phrase_display_value"] = "Arddangos Gwerth"; +$LANG["phrase_edit_admin_menu"] = "Golygu Admin Menu"; +$LANG["phrase_edit_client"] = "Golygu Cleientiaid"; +$LANG["phrase_edit_client_menu"] = "Golygu Cleientiaid Menu"; +$LANG["phrase_edit_email_template"] = "Golygu E-bost Templed"; +$LANG["phrase_edit_field"] = "Golygu Maes"; +$LANG["phrase_edit_field_c"] = "Golygu Maes:"; +$LANG["phrase_edit_form"] = "Ffurflen Golygu"; +$LANG["phrase_edit_form_access_type_b"] = "[Golygu math mynediad ffurflen]"; +$LANG["phrase_edit_option_list"] = "Golygu Rhestr Opsiwn"; +$LANG["phrase_edit_submission"] = "Golygu Cyflwyno"; +$LANG["phrase_edit_submission_label"] = "Golygu Label Cyflwyniad"; +$LANG["phrase_edit_view"] = "Golygu View"; +$LANG["phrase_email_format"] = "E-bost Fformat"; +$LANG["phrase_email_settings"] = "E-bost Gosodiadau"; +$LANG["phrase_email_template"] = "E-bost templed"; +$LANG["phrase_email_template_name"] = "E-bost templed enw"; +$LANG["phrase_error_learn_more"] = "Dysgwch fwy am y gwall hwn."; +$LANG["phrase_error_text_intro"] = "Os gwelwch yn dda atgyweiria 'r amryfusedd canlynol (au) a ailgyflwyno'r:"; +$LANG["phrase_errors_learn_more"] = "Cliciwch ar y Codau gwallau i ddysgu mwy."; +$LANG["phrase_event_trigger"] = "Digwyddiad Achosi"; +$LANG["phrase_external_form"] = "Ffurflen Allanol"; +$LANG["phrase_external_form_info"] = "Ffurflen Gwybodaeth Allanol"; +$LANG["phrase_external_your_own_form"] = "Allanol (eich ffurflen eich hun)"; +$LANG["phrase_field_comments"] = "Sylwadau Maes"; +$LANG["phrase_field_label"] = "Maes Label"; +$LANG["phrase_field_options"] = "Dewisiadau Maes"; +$LANG["phrase_field_size"] = "Maes Maint"; +$LANG["phrase_field_skipped"] = "Maes Skipped"; +$LANG["phrase_field_specific_settings"] = "Maes-Penodol Lleoliadau"; +$LANG["phrase_field_type"] = "Maes Math"; +$LANG["phrase_field_type_no_validation"] = "Nid oes unrhyw reolau dilysu ar gael ar gyfer y math hwn maes."; +$LANG["phrase_field_types"] = "Maes Mathau"; +$LANG["phrase_field_value"] = "Maes Gwerth"; +$LANG["phrase_field_values_to_display_values"] = "Maes Gwerthoedd »Arddangos Gwerthoedd"; +$LANG["phrase_final_touches_page_6"] = "6. Gorffen cyffwrdd â"; +$LANG["phrase_finalize_form"] = "Ffurflen Finalize"; +$LANG["phrase_first_name"] = "Enw Cyntaf"; +$LANG["phrase_footer_text"] = "Testun footer"; +$LANG["phrase_for_any_form_submission"] = "Ar gyfer unrhyw ffurflen gyflwyno"; +$LANG["phrase_for_view_submissions"] = "Dim ond ar gyfer ceisiadau yn View:"; +$LANG["phrase_forgot_password"] = "Wedi anghofio eich cyfrinair?"; +$LANG["phrase_form_already_selected"] = "Ffurflen eisoes yn dewis"; +$LANG["phrase_form_email_field_b_c"] = "[Ffurflen] maes e-bost:"; +$LANG["phrase_form_email_field_configuration"] = "Ffurflen E-bost Maes Ffurfweddu"; +$LANG["phrase_form_email_fields"] = "Ffurflen E-bost Fields"; +$LANG["phrase_form_field"] = "Ffurflen Maes"; +$LANG["phrase_form_field_contents"] = "Cynnwys Maes Ffurflen"; +$LANG["phrase_form_field_name"] = "Ffurflen Maes Enw"; +$LANG["phrase_form_field_placeholders"] = "Bachau maes Ffurflen"; +$LANG["phrase_form_fields"] = "Ffurflen Fields"; +$LANG["phrase_form_info"] = "Ffurflen Gwybodaeth"; +$LANG["phrase_form_info_2"] = "2. Ffurflen Gwybodaeth"; +$LANG["phrase_form_list"] = "Rhestr Ffurflen"; +$LANG["phrase_form_name"] = "Enw Ffurflen"; +$LANG["phrase_form_page"] = "Ffurflen Page"; +$LANG["phrase_form_placeholders"] = "Ffurflen Placeholders"; +$LANG["phrase_form_submission"] = "Cyflwyno Ffurflen"; +$LANG["phrase_form_submissions"] = "Ffurflen sylwadau"; +$LANG["phrase_form_type"] = "Form Type"; +$LANG["phrase_form_url"] = "Ffurflen URL"; +$LANG["phrase_form_urls"] = "Ffurflen URLs"; +$LANG["phrase_forms_assigned_to_any_account"] = "Ffurflenni a neilltuwyd i unrhyw gyfrif"; +$LANG["phrase_forms_page_default_message"] = "Ffurflenni neges diofyn dudalen"; +$LANG["phrase_ft_installation"] = "Ffurflen Offer Gosod Sgript"; +$LANG["phrase_full_width"] = "Lled Llawn"; +$LANG["phrase_getting_started"] = "dechrau arni"; +$LANG["phrase_global_placeholders"] = "Placeholders Global"; +$LANG["phrase_group_name"] = "Enw Grŵp"; +$LANG["phrase_group_options_q"] = "Opsiynau Grŵp?"; +$LANG["phrase_group_rows"] = "Rhesi Grŵp"; +$LANG["phrase_have_fun"] = "Cael hwyl!"; +$LANG["phrase_highlight_colour"] = "Lliw Highlight"; +$LANG["phrase_html_email"] = "HTML E-bost"; +$LANG["phrase_html_template"] = "Templed HTML"; +$LANG["phrase_images_media"] = "Lluniau / Cyfryngau"; +$LANG["phrase_import_option_list_rightarrow"] = "Rhestr Opsiwn Mewnforio »"; +$LANG["phrase_input_length"] = "Hyd Mewnbwn"; +$LANG["phrase_installation_help"] = "Help Gosod"; +$LANG["phrase_internal_form"] = "Ffurflen Mewnol"; +$LANG["phrase_ip_address"] = "Cyfeiriad IP"; +$LANG["phrase_is_multi_page_form_q"] = "A yw hwn yn ffurflen aml-dudalen?"; +$LANG["phrase_label_response_placeholders"] = "Label / Ymateb Dalfannau"; +$LANG["phrase_large_300px"] = "Mawr (300px)"; +$LANG["phrase_large_400px"] = "Mawr (400px)"; +$LANG["phrase_last_7_days"] = "7 diwrnod diwethaf"; +$LANG["phrase_last_logged_in"] = "Diwethaf wedi logio i mewn"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Dyddiad Last modified"; +$LANG["phrase_last_name"] = "Last name"; +$LANG["phrase_letters_only"] = "Llythyrau Dim ond"; +$LANG["phrase_light_brown"] = "Brown Golau"; +$LANG["phrase_limit_email_content"] = "Terfyn cynnwys e-bost at meysydd yn View"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Mewngofnodi gan fod hyn defnyddiwr"; +$LANG["phrase_login_info"] = "Mewngofnodi Gwybodaeth"; +$LANG["phrase_login_page"] = "Mewngofnodi Page"; +$LANG["phrase_login_panel_c"] = "Mewngofnodi Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Mewngofnodi Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Mewngofnodi Enw defnyddiwr"; +$LANG["phrase_logo_link_url"] = "Logo Cyswllt URL"; +$LANG["phrase_logout_url"] = "Allan URL"; +$LANG["phrase_main_nav"] = "Prif Nav"; +$LANG["phrase_main_settings"] = "Prif Gosodiadau"; +$LANG["phrase_manage_client"] = "Rheoli Cleientiaid"; +$LANG["phrase_manage_client_omit_list"] = "Rheoli Cleient Hepgorer Rhestr"; +$LANG["phrase_max_file_size"] = "Max Maint Ffeil"; +$LANG["phrase_max_length"] = "Max Hyd"; +$LANG["phrase_max_length_words_chars"] = "- Max hyd (geiriau / chars)"; +$LANG["phrase_may_add_submissions"] = "Mai ychwanegu Cyflwyniadau"; +$LANG["phrase_may_copy_submissions"] = "Yn gallu copïo cyflwyniadau"; +$LANG["phrase_may_delete_submissions"] = "Mai dileu Cyflwyniadau"; +$LANG["phrase_medium_150px"] = "Canolig (150px)"; +$LANG["phrase_medium_200px"] = "Canolig (200px)"; +$LANG["phrase_menu_name"] = "Dewislen Enw"; +$LANG["phrase_menu_type"] = "Dewislen Math"; +$LANG["phrase_min_password_length"] = "hyd password Gofynnol"; +$LANG["phrase_module_description"] = "Modiwl Disgrifiad"; +$LANG["phrase_module_info"] = "Gwybodaeth am Fodiwlau"; +$LANG["phrase_module_nav"] = "Modiwl Nav"; +$LANG["phrase_month_to_date"] = "Mis hyd yn hyn"; +$LANG["phrase_multi_select"] = "Aml-ddewis"; +$LANG["phrase_multi_select_dropdown"] = "Aml-ddewis gwymplen"; +$LANG["phrase_multiple_fields_found"] = "Lluosog Meysydd wedi ei ddarganfod!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Enw / Enw Olaf"; +$LANG["phrase_new_blank_email"] = "Newydd gwag E-bost"; +$LANG["phrase_new_blank_option_list"] = "Rhestr Opsiwn Blank Newydd"; +$LANG["phrase_new_blank_view"] = "Newydd gwag View"; +$LANG["phrase_new_ft_installation"] = "Ffurflen newydd Offer Gosod"; +$LANG["phrase_new_option_list"] = "Rhestr Opsiwn Newydd"; +$LANG["phrase_new_password"] = "Cyfrinair Newydd"; +$LANG["phrase_new_password_reenter"] = "Cyfrinair Newydd (os gwelwch yn dda ail-ymuno)"; +$LANG["phrase_new_view"] = "Newydd View"; +$LANG["phrase_new_view_all_fields"] = "View Newydd - Pob maes"; +$LANG["phrase_next_client"] = "cleient nesaf »"; +$LANG["phrase_next_field"] = "»cae nesaf"; +$LANG["phrase_next_form"] = "ffurflen nesaf »"; +$LANG["phrase_next_view"] = "Gweld nesaf »"; +$LANG["phrase_no_clients"] = "Dim cleientiaid"; +$LANG["phrase_no_limit"] = "Dim Cyfyngiad"; +$LANG["phrase_no_offset"] = "Dim wneud iawn am"; +$LANG["phrase_no_option_lists_available"] = "Nid oes dewisiadau rhestrau ar gael."; +$LANG["phrase_no_views"] = "Dim Barn"; +$LANG["phrase_no_views_with_filters_p"] = "(Dim Barn gyda ffilteri diffiniedig)"; +$LANG["phrase_none_not_recommended"] = "Nid Dim (argymhellir)"; +$LANG["phrase_not_assigned_to_option_list"] = "Nid yw'r maes wedi ei neilltuo i Restr Opsiwn."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "HEB Cyfartal"; +$LANG["phrase_not_found"] = "Nid yw wedi ei ddarganfod!"; +$LANG["phrase_not_like"] = "NID Fel"; +$LANG["phrase_not_visible_to_client"] = "(nid weladwy i'r cleient)"; +$LANG["phrase_num_clients_per_page"] = "Cleientiaid Num Fesul Page"; +$LANG["phrase_num_emails_per_page"] = "Negeseuon e-bost Num Fesul Page"; +$LANG["phrase_num_fields"] = "Nifer y Meysydd"; +$LANG["phrase_num_forms_per_page"] = "Ffurflenni Num Fesul Page"; +$LANG["phrase_num_menus_per_page"] = "Num Bwydlenni Fesul Page"; +$LANG["phrase_num_modules_per_page"] = "Num Modiwlau Fesul Page"; +$LANG["phrase_num_option_lists_per_page"] = "Rhestrau Opsiwn Num Per Tudalen"; +$LANG["phrase_num_options"] = "Dewisiadau Num"; +$LANG["phrase_num_rows"] = "Rhesi Num"; +$LANG["phrase_numbers_only"] = "Niferoedd yn Unig"; +$LANG["phrase_often_localhost"] = "(yn aml "localhost")"; +$LANG["phrase_on_form_submission"] = "Gyflwyno ar ffurflen"; +$LANG["phrase_one_char_number"] = "O leiaf un cymeriad yn nifer (0-9)"; +$LANG["phrase_one_char_upper"] = "O leiaf un cymeriad yn priflythyren"; +$LANG["phrase_one_special_char"] = "Mae o leiaf un o {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(dim ond cleientiaid penodol yn cael mynediad)"; +$LANG["phrase_open_form_in_dialog"] = "Ffurflen Agor mewn ffenestr ddeialog"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Agor y ffurflen hon mewn ffenestr newydd tab /"; +$LANG["phrase_option_list"] = "Rhestr Opsiwn"; +$LANG["phrase_option_list_name"] = "Enw Rhestr Opsiwn"; +$LANG["phrase_option_list_or_contents"] = "Rhestr Opsiwn / Cynnwys"; +$LANG["phrase_option_lists"] = "Rhestrau Opsiwn"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Teitlau Page"; +$LANG["phrase_pass_on"] = "Pass ar"; +$LANG["phrase_password_min"] = "Rhaid iddo fod o leiaf {\$length} cymeriadau."; +$LANG["phrase_password_one_number"] = "Rhaid iddo gynnwys o leiaf un rhif (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Rhaid iddo gynnwys o leiaf un llythyr priflythyren."; +$LANG["phrase_password_requirements_c"] = "gofynion Cyfrinair:"; +$LANG["phrase_password_reset"] = "Ailosod Cyfrinair"; +$LANG["phrase_password_special_char"] = "Rhaid iddo gynnwys o leiaf un o'r elfennau canlynol: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Caniatâd / Gosodiadau Arall"; +$LANG["phrase_permitted_file_types"] = "Mathau ffeil a Ganiateir"; +$LANG["phrase_phone_number"] = "Rhif Ffôn"; +$LANG["phrase_phone_number_format"] = "Fformat Rhif Ffôn"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini caniatáu uchafswm maint y ffeil llwytho:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Fersiwn PHP"; +$LANG["phrase_please_confirm"] = "Os gwelwch yn dda Cadarnhau"; +$LANG["phrase_please_enter_license_key"] = "Rhowch eich trwydded allweddol"; +$LANG["phrase_please_select"] = "Dewiswch os gwelwch yn dda"; +$LANG["phrase_please_select_form"] = "Dewiswch ffurflen"; +$LANG["phrase_prev_client"] = "«Blaenorol cleientiaid"; +$LANG["phrase_prev_form"] = "«Cynt ffurflen"; +$LANG["phrase_prevent_password_reuse"] = "Atal ail-ddefnyddio cyfrineiriau diwethaf #"; +$LANG["phrase_previous_field"] = "maes «previous"; +$LANG["phrase_previous_page"] = "Tudalen Blaenorol"; +$LANG["phrase_previous_view"] = "«Cynt View"; +$LANG["phrase_program_name"] = "Enw Rhaglen"; +$LANG["phrase_public_form_omit_list"] = "Ffurflen Cyhoeddus hepgor Rhestr"; +$LANG["phrase_public_view_omit_list"] = "Cyhoeddus Gweld hepgor Rhestr"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Roedd problem gyda'r ymholiad canlynnol:"; +$LANG["phrase_radio_buttons"] = "Botymau Radio"; +$LANG["phrase_random_form_submission"] = "Gyflwyno ffurflen ar hap"; +$LANG["phrase_re_enter_password"] = "Ail-ymuno Cyfrinair"; +$LANG["phrase_recipient_type"] = "Derbynnydd math"; +$LANG["phrase_redirect_url"] = "Ailgyfeirio URL"; +$LANG["phrase_refresh_list"] = "Rhestr Adnewyddu"; +$LANG["phrase_refresh_module_list"] = "Adnewyddu Modiwl Rhestr"; +$LANG["phrase_refresh_page"] = "Adnewyddu Page"; +$LANG["phrase_refresh_theme_list"] = "Adnewyddu Thema Rhestr"; +$LANG["phrase_register_new_email"] = "Cofrestru Newydd E-bost"; +$LANG["phrase_remaining_characters"] = "cymeriadau sy'n weddill"; +$LANG["phrase_remaining_words"] = "geiriau sy'n weddill"; +$LANG["phrase_remove_tabs"] = "Tabiau Gwaredu"; +$LANG["phrase_required_password_chars"] = "cymeriadau password Angenrheidiol"; +$LANG["phrase_resend_test_submission"] = "Ail-anfon Prawf Cyflwyno"; +$LANG["phrase_return_form_list"] = "Dychwelyd i'r Ffurflen Rhestr"; +$LANG["phrase_row_selected"] = "{\$num_rows} rhes a ddewiswyd"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rhes a ddewiswyd"; +$LANG["phrase_sample_data"] = "Sampl o Ddata"; +$LANG["phrase_save_changes"] = "Cadw Newidiadau"; +$LANG["phrase_search_keyword"] = "Gair allweddol Chwilio"; +$LANG["phrase_security_settings"] = "Gosodiadau Diogelwch"; +$LANG["phrase_select_all"] = "Dewis Popeth"; +$LANG["phrase_select_all_X_results"] = "Dewis Popeth {\$numresults} Canlyniadau"; +$LANG["phrase_select_all_on_page"] = "Dewis Popeth Ar Page"; +$LANG["phrase_select_date"] = "Dewiswch ddyddiad"; +$LANG["phrase_select_field"] = "Dewis Maes"; +$LANG["phrase_select_swatch"] = "Dewiswch swatch"; +$LANG["phrase_selected_clients"] = "Cleientiaid Selected"; +$LANG["phrase_selected_views"] = "Views Selected"; +$LANG["phrase_send_email"] = "Anfon E-bost"; +$LANG["phrase_send_test_email"] = "Anfon E-bost Prawf"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sesiynau Goramser"; +$LANG["phrase_setting_value"] = "Gosod Gwerth"; +$LANG["phrase_setup_options"] = "Gosod Dewisiadau"; +$LANG["phrase_show_all"] = "Dangos holl"; +$LANG["phrase_show_form"] = "Dangos Ffurflen"; +$LANG["phrase_size_large"] = "Mawr (TEXT)"; +$LANG["phrase_size_medium"] = "Canolig (<= 256 chars)"; +$LANG["phrase_size_small"] = "Bach (<= 20 chars)"; +$LANG["phrase_size_tiny"] = "Bach (<= 5 chars)"; +$LANG["phrase_size_very_large"] = "Mawr iawn (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Maes"; +$LANG["phrase_skip_step"] = "Skip Cam"; +$LANG["phrase_small_100px"] = "Bach (100px)"; +$LANG["phrase_small_80px"] = "Bach (80px)"; +$LANG["phrase_smart_fill"] = "Smart Llenwi"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Llenwi meysydd o:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Llenwch User Documentation »"; +$LANG["phrase_sort_as"] = "Trefnu Fel"; +$LANG["phrase_special_fields"] = "Meysydd Arbennig"; +$LANG["phrase_standard_fields"] = "Safon Fields"; +$LANG["phrase_standard_filters"] = "Safon Hidlau »"; +$LANG["phrase_step_1"] = "Cam 1"; +$LANG["phrase_step_2"] = "Cam 2"; +$LANG["phrase_step_3"] = "Cam 3"; +$LANG["phrase_step_4"] = "Cam 4"; +$LANG["phrase_step_5"] = "Cam 5"; +$LANG["phrase_step_6"] = "Cam 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Tags Strip mewn ceisiadau ar ffurf"; +$LANG["phrase_subject_line"] = "Pwnc Llinell"; +$LANG["phrase_submission_date"] = "Dyddiad Cyflwyno"; +$LANG["phrase_submission_id"] = "Cyflwyno ID"; +$LANG["phrase_submission_made"] = "Gwneud Cyflwyno: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Cyflwyno Math"; +$LANG["phrase_submissions_per_page"] = "Cyflwyniadau y Dudalen"; +$LANG["phrase_system_check"] = "System Gwirio"; +$LANG["phrase_system_fields_no_validation"] = "Ni allwch ychwanegu dilysu i gaeau system."; +$LANG["phrase_system_time_offset"] = "System Amser Atred"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Prawf Caniatadau Ffolder"; +$LANG["phrase_test_submission"] = "Prawf Cyflwyno"; +$LANG["phrase_test_submission_3"] = "3. Prawf Cyflwyno"; +$LANG["phrase_test_submission_received"] = "Cyflwyno Prawf Derbyn"; +$LANG["phrase_text_and_html"] = "Testun & HTML"; +$LANG["phrase_text_email"] = "Testun E-bost"; +$LANG["phrase_text_template"] = "Testun Templed"; +$LANG["phrase_the_previous_month"] = "Y Mis blaenorol"; +$LANG["phrase_theme_description"] = "Disgrifiad Thema"; +$LANG["phrase_theme_info"] = "Thema Gwybodaeth"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Cyfanswm Canlyniadau:"; +$LANG["phrase_type_c"] = "Gwall Type:"; +$LANG["phrase_unselect_all"] = "Dad-ddewis Popeth"; +$LANG["phrase_update_accounts"] = "Cyfrifon Diweddaraf"; +$LANG["phrase_update_email_template"] = "Diweddariad e-bost Templed"; +$LANG["phrase_update_field"] = "Diweddariad Maes"; +$LANG["phrase_update_order"] = "Diweddariad Gorchymyn"; +$LANG["phrase_update_view"] = "Diweddariad View"; +$LANG["phrase_upload_file"] = "Llwytho Ffeil"; +$LANG["phrase_upload_files"] = "Llwytho Ffeiliau"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Llwybr folder Upload"; +$LANG["phrase_upload_folder_url"] = "Plygell Upload URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Gwerth Defnydd ddiofyn?"; +$LANG["phrase_used_by_num_form_fields"] = "A ddefnyddir gan # Ffurflen Fields"; +$LANG["phrase_uses_swatches"] = "Yn defnyddio samplau"; +$LANG["phrase_valid_email"] = "E-bost dilys"; +$LANG["phrase_validation_error"] = "Gwall Dilysu"; +$LANG["phrase_validation_rule"] = "Rheol Dilysu"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Gweld Grŵp"; +$LANG["phrase_view_id"] = "Gweld ID"; +$LANG["phrase_view_name"] = "Gweld Enw"; +$LANG["phrase_view_placeholders"] = "Dalfannau View"; +$LANG["phrase_view_submissions"] = "Cyflwyniadau View"; +$LANG["phrase_view_uploaded_files"] = "weld llwytho ffeiliau"; +$LANG["phrase_viewing_range"] = "[gwylio {\$startnum} i {\$endnum}]"; +$LANG["phrase_when_sent"] = "Pan anfonwyd"; +$LANG["phrase_when_submission_is_deleted"] = "Pan cyflwyno yn cael ei ddileu"; +$LANG["phrase_when_submission_is_edited"] = "Pan yn cyflwyno edited"; +$LANG["phrase_who_can_access"] = "Pwy sy'n cael mynediad?"; +$LANG["phrase_word_limit_p"] = "cyfyngiad geiriau."; +$LANG["phrase_year_to_date"] = "Blwyddyn hyd"; +$LANG["phrase_yes_for_all_views"] = "Ydy, ar gyfer pob Views"; +$LANG["phrase_yes_for_specific_views"] = "Ydy, ar gyfer Barn penodol"; +$LANG["phrase_your_account"] = "Your Account"; +$LANG["phrase_your_email"] = "Eich E-bost"; +$LANG["phrase_your_email_address"] = "Eich cyfeiriad e-bost"; +$LANG["processing_form_disabled"] = "Mae'n ddrwg gennym, y ffurflen hon wedi bod yn anabl."; +$LANG["processing_form_incomplete"] = "Mae'n ddrwg gennym, nid y ffurflen hon yn ymddangos yn llawn yn cael ei sefydlu i fyny o fewn Ffurflen Offer. Achos mwyaf tebygol y broblem hon yw eich bod yn symud y form_tools_initialize_form "maes ffurflen cudd, ond nid oedd gwblhau'r holl gamau o'r" Ychwanegu Ffurflen "broses.

    Os gwelwch yn dda mewngofnodwch ac adolygu'r cyfluniad y ffurflen."; +$LANG["processing_init_complete"] = "Ddiolch 'ch! Eich cyflwyniad prawf wedi cael ei rhoi drwy llwyddiannus. Dychwelwch y ffurflen at y panel Ffurflen Gweinyddiaeth Offer a chliciwch ar y "Adnewyddu" botwm ar waelod y Ychwanegu Cam Ffurflen 3 tudalen i orffen sefydlu eich ffurflen."; +$LANG["processing_invalid_form_id"] = "Mae'n ddrwg gennym, nid yw'n ymddangos i fod yn ID ffurflen ddilys."; +$LANG["processing_no_form_id"] = "process.php ffurflen yn gofyn am ID ar gyfer prosesu. Gwnewch yn siŵr eich ffurflen yn cynnwys maes cudd gyda'r enw "form_tools_form_id" sy'n pasio ar hyd y ffurflen ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Ffurflen Offer yn methu i benderfynu ble i ailgyfeirio pan fyddant yn methu â mynd i mewn i'r CAPTCHA iawn. Anfonwch mewn maes cudd gyda'r form_tools_form_url enw sy'n cynnwys URL y ffurflen."; +$LANG["processing_no_post_vars"] = "Nid process.php yn derbyn unrhyw ddata. Noder: mae'r sgript na ellir llwytho uniongyrchol yn eich porwr.
    Gwnewch yn siŵr eich ffurflen yn cael ei anfon drwy SWYDD."; +$LANG["processing_no_redirect_url"] = "Mae'r cyflwyniad yn prosesu yn gywir, ond nid ydych wedi penodedig URL ailgyfeirio gyfer y ffurflen hon! Golygu eich ffurflen yn y Ffurflen Offer UI ac ychwanegu'r URL ailgyfeirio."; +$LANG["special_language"] = "Welsh"; +$LANG["special_language_locale"] = "Welsh"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Bydd pob cleient gyfrifon newydd yn cael eu creu gyda'r gosodiadau a chaniatâd diffinio isod. I droi'r fantol yn lleoliad ar gyfer cleientiaid penodol, olygu y cyfrif cleient ac yn ymweld â'u Gosodiadau tab."; +$LANG["text_add_form_choose_integration_method"] = "Dewiswch pa ddull ydych am eu defnyddio i integreiddio eich ffurflen gyda Offer Ffurflen."; +$LANG["text_add_form_code_submission_benefits"] = "Mae'r dull hwn yn defnyddio'r Ffurflen Offer API , a gynhwysir yn y sgript Ffurflen prif Offer. Mae'r API yn darparu nifer o swyddogaethau o gymorth i wneud y gwaith o integreiddio eich ffurflen gyda Offer Ffurflen mor syml â phosibl. Nid oes unrhyw gyfyngiadau ar sut y gall eich ffurflen yn cael ei gyflwyno pan fyddwch yn defnyddio'r API. Gallwch gyflwyno cynnwys ar yr un pryd, neu fesul tudalen; gallwch ychwanegu eich hun arfer ochr y gweinydd dilysu, delweddau CAPTCHA; gallwch ddewis i gyflwyno'r wybodaeth bellach, ond dim ond dweud ei fod i arddangos y cyflwyniad yn y Ffurflen Tools UI yn nes ymlaen (gweler yr Cyflwyniadau terfynol adran yn y dogfennau yn helpu API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Er mwyn cyflwyno eich data ffurflen drwy PHP, mae'n rhaid eich ffurflen yn cael ei leoli ar yr un wefan gan fod hyn yn gosod Ffurflen Offer. Yn ail, ar gyfer defnyddwyr Ffurflen nad ydynt yn dechnegol ac yn newyddian Offer, gall y dull hwn fod ychydig yn frawychus ar y dechrau. Ond mae digon o ddogfennau er mwyn helpu chi allan, gan gynnwys dau tiwtorialau syml ar gyfer integreiddio eich ffurflenni sengl ac aml-tudalen (mae'r rhain yn gysylltiedig â ar gam yn nes ymlaen)."; +$LANG["text_add_form_direct_submission_benefits"] = "Dyma'r ffordd symlaf i gyflwyno eich ffurflen i Ffurflen Offer. Nid oes angen unrhyw wybodaeth o PHP ac mae angen dim ond newid bach iawn at eich ffurflen. Mae'n wych ar gyfer ffurfiau llai lle rydych eisiau i ychydig o gyflwyno'r wybodaeth at y gronfa ddata yna redirect y defnyddiwr i Thankyou dudalen "."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Mae'r dull hwn yn cyflwyno yn syml iawn i'w ddefnyddio, ond nid yw'n darparu ar gyfer rheoli llawer o ffurfiau mwy cymhleth. Aml-dudalen ffurflenni neu ffurflenni y mae angen gweinydd-dilysu ochr yn fwy addas i'r dull ail: cyflwyno trwy gyfrwng y Offer Ffurflen API."; +$LANG["text_add_form_field_types1"] = "Gwneud bron! Mae'r dudalen hon yn ceisio dod o hyd i eich holl feysydd ffurflen ac yn penderfynu ar eu mathau maes. Cliciwch ar y botwm Llenwch Smart ar yr hawl i ddechrau arni. Byddwch yn cael dim ond i fynd ymlaen pan fydd yr holl gamau gweithredu wedi cael eu datrys - materion sydd angen eich sylw yn ymddangos yn y "Gweithredu Angenrheidiol " golofn."; +$LANG["text_add_form_field_types2"] = "Os nad yw eich ffurflen yn HTML, cliciwch y botwm Cam Skip i fynd ymlaen. Gall hyn i gyd gael ei ffurfweddu yn nes ymlaen."; +$LANG["text_add_form_field_types3"] = "Mae hyn yn reloads cynnwys eich ffurflen (ni). Sylwer: bydd hyn yn trosysgrifo unrhyw newidiadau a wnaethoch ar y dudalen hon."; +$LANG["text_add_form_field_types4"] = "Yn achos yr ydych yn rhedeg i mewn i broblemau, cliciwch yma i fynd heibio i'r cam hwn. Rhaid llenwi pob maes sydd heb eu datrys yn cael eu gosod i ddefnyddio'r gwerthoedd diofyn. Gallwch addasu y meysydd hyn yn nes ymlaen."; +$LANG["text_add_form_field_types_manual_upload"] = "Os ydych chi wedi gallu Smart Llenwch eich caeau, efallai y byddwch am roi cynnig ar ateb arall: llwytho copïau o'ch ffurflenni yn y meysydd isod."; +$LANG["text_add_form_field_types_manual_upload2"] = "Sylwer: peidiwch â llwytho tudalennau PHP amrwd (neu eraill ochr y gweinydd cod) - dim ond y fersiynau upload HTML. I gael hyn, gweld a arbed y dudalen gan eich porwr gwe."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Roedd caeau lluosog na ellid eu gweld yn y dudalen ffurflen i chi a nodir. Mae hyn yn debygol o achosi yn bennaf gan un o'r canlynol:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Rydych yn nodi un neu fwy o'r URLs ffurf eich aml-tudalen ffurflen yn anghywir."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Un neu fwy o dudalennau ar eich ffurflen yn cael eu diogelu gan gyfrinair ac ni allai y sgript gael mynediad i'r dudalen."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Rydych yn anghywir nodi eich URL ffurflen."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Cliciwch yma i ddychwelyd i'r dudalen y Ffurflen Gwybodaeth i wirio eich gosodiadau."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Chi wedi newid eich ffurflen (ni) ar ôl gwneud y cyflwyniad prawf"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Cliciwch yma i roi drwy gyflwyno prawf arall."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Mae eich ffurflen yn cael ei diogelu gan gyfrinair ac ni allai y sgript gael mynediad i'r dudalen."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Mewn un arall tab / ffenestr y porwr, ewch yn eich ffurflen, yna cliciwch y botwm Page Refresh isod i geisio ail-ddod o hyd i'r caeau."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Os nad yw un o'r gwaith atebion uchod, efallai y byddwch hefyd am roi cynnig ar eich llaw lwytho ffurflenni ar gyfer prosesu ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Roedd caeau lluosog na ellid eu gweld yn y tudalennau ffurflen i chi a nodir. Mae hyn yn debygol o achosi yn bennaf gan un o'r rhain:"; +$LANG["text_add_form_help_link"] = "Os ydych yn rhedeg i mewn i unrhyw drafferth yn ystod y camau hyn, rhowch gynnig ar ddarllen dogfennau defnyddiwr ."; +$LANG["text_add_form_step_1_text_1"] = "Mae'r tudalennau canlynol yn eich arwain trwy'r camau i Tools Ffurflen ffurfweddu i storio eich ffurflen gyflwyniadau. Cyn parhau, gwiriwch fod:"; +$LANG["text_add_form_step_1_text_2"] = "eich ffurflen eisoes wedi cael ei greu ac mae'n hygyrch drwy URL (localhost yn iawn)"; +$LANG["text_add_form_step_1_text_3"] = "yn gallu golygu eich ffurflen"; +$LANG["text_add_form_step_2_para_2"] = "Agor eich ffurflen mewn golygydd o'ch dewis a tag newid eich ffurflen at y canlynol, gan gynnwys y ddau faes cudd."; +$LANG["text_add_form_step_2_para_3"] = "Nesaf, agor eich ffurflen mewn porwr gwe. Llenwch ym mhob maes a chyflwyno. Ar ôl cyflwyno, dylech weld neges hysbysiad. Unwaith y bydd y neges yn cael ei arddangos, yn dychwelyd i'r dudalen hon a chliciwch y botwm adnewyddu isod. Pan fydd y broses hon wedi ei gwblhau, byddwch yn gweld yn parhau botwm isod, mynd â chi at y cam nesaf."; +$LANG["text_add_form_step_2_para_6"] = "Yn eich cyflwyno ffurflen, yn cynnwys y gwerthoedd canlynol. Efallai y byddant yn cael eu gosod yn uniongyrchol neu drwy PHP pasio ar hyd trwy gyfrwng y ffurflen ei hun. Isod ceir enghreifftiau o bob un. Y \$ () varname yn hash (neu amrywiaeth associative) o'r holl gyflwyno ffurflen wybodaeth - mae hyn fel arfer yn y \$ (postvar neu) (\$ sessionvar) amrywiol, ond gallai fod yn arferiad adeiladu."; +$LANG["text_add_form_step_2_text_2"] = "Rhowch URL eich tudalen "Diolch " yma. Dyma ble rydych eisiau i bobl gael eu cyfeirio at y ffurflen ar ôl ei gyflwyno."; +$LANG["text_add_form_step_3_para_1"] = "Mae'r dudalen hon yn rhestru'r holl feysydd yn eich cyflwyno ffurflen. Os gwelwch yn dda bob maes archwilio a chael gwared ar unrhyw nad oes angen ei storio ar gyfer pob gyflwyno. Os ydych yn dileu maes dilys drwy ddamwain, neu os ydych am newid y wybodaeth sy'n cael ei storio gan eich ffurflen, ddychwelyd i'r tudalen blaenorol i anfon cyflwyniad prawf newydd."; +$LANG["text_add_form_step_3_para_2"] = "Sylwer: os ydych yn anfon gwerthoedd lluosog drwy blychau neu blwch aml-ddewis, sicrhewch fod eich enw maes yn dod i ben â'r [] cymeriadau (gweler y dogfennau defnyddiwr am fwy o wybodaeth)."; +$LANG["text_add_form_step_3_text_1"] = "Dyma lle mae'r hwyl yn dechrau! Ar y pwynt hwn, Tools Ffurflen yn aros am gyflwyno prawf o'ch ffurflen. Bydd yn defnyddio'r ffurflen cyflwyniad hwn i wybod pa wybodaeth y dylid ei storio yn y gronfa ddata."; +$LANG["text_add_form_step_3_text_2"] = "drwy bwyntio at eich ffurflen Ffurflen Tools"; +$LANG["text_add_form_step_3_text_3"] = "gan ddefnyddio'r Ffurflen Offer API"; +$LANG["text_add_form_step_3_text_4"] = "I helpu i integreiddio eich ffurflen, rydym yn awgrymu eich bod yn darllen un o'r dosbarthiadau tiwtorial canlynol:"; +$LANG["text_add_form_step_3_text_5"] = "Maent yn esbonio sut i sefydlu eich ffurflen er mwyn paratoi ar gyfer cyflwyno prawf, ac yn cynnwys gwybodaeth eraill a all fod o gymorth. Mae'r llinell o PHP bydd ei angen arnoch yw:"; +$LANG["text_add_form_step_3_text_6"] = "Mae hyn yn sicrhau y data mewn gwirionedd yn cael ei anfon i Ffurflen Offer. Pan fyddwch wedi rhoi drwy eich cyflwyno prawf, cliciwch y botwm isod."; +$LANG["text_add_form_step_3_text_7"] = "Ar y dudalen CYN i'ch terfynol "diolch" tudalen, yn sicr o ychwanegu y paramedr canlynol i'r newidyn \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Mae'r gronfa ddata wedi cael ei sefydlu i ar gyfer y ffurflen hon a'r ffurflen wedi cael ei weithredu ar gyfer eu defnyddio. Os ydych yn gwneud y cyflwyniad gan bwyntio at eich ffurflen process.php, dychwelwch at eich ffurflen a chael gwared ar y cae cudd canlynol:"; +$LANG["text_add_form_step_5_para_2"] = "Yna ymweld â'ch "diolch" tudalen gwag y sesiynau. Unwaith y bydd hyn yn cael ei wneud, bydd yr holl sylwadau ffurflen newydd yn cael eu prosesu a storio gan Ffurflen Offer. Ceisiwch wneud cyflwyniad neu ddau i wirio'r wybodaeth yn cael ei llwytho i fyny i gyd yn gywir."; +$LANG["text_add_form_step_5_para_3"] = "Os ydych yn dymuno i mân-dôn eich ffurflen ar gyfer opsiynau megis hunan-anfon e-bost, gan ychwanegu maes meysydd ffurflen ychwanegol, neu customizing y mathau ffurflen maes, efallai y byddwch yn golygu eich ffurflen ar unrhyw adeg."; +$LANG["text_add_form_step_5_para_4"] = "Ers eich ffurflen yn cynnwys meysydd llwytho ffeil, bydd angen i chi ffurfweddu pob maes i nodi y ffeil folder llwytho, beth ffeiliau yn cael eu caniatáu, ac. Gall hyn fod yn dod o hyd ar y tab Arddangos y dudalen olygu ffurflen."; +$LANG["text_add_form_step_5_para_5"] = "Os bydd y cais ei anfon drwy'r API, newid y llinell ft_api_init_form_page ar y dudalen gyntaf eich ffurflen i:"; +$LANG["text_add_submission_button"] = "Mae'r botwm Cyflwyno Ychwanegu yn unig yn ymddangos ar gyfer Barn sydd â'r "Mai ychwanegu gyflwyniadau " dewis gosod i "ie "."; +$LANG["text_admin_email_placeholder_info"] = "Dyma'r cyfeiriad e-bost am Ffurflen Offer gweinyddwr, a ddiffinnir yn eich gosodiadau cyfrif. Mae hyn yn unig allbynnau y cyfeiriad e-bost, felly os ydych yn dymuno defnyddio fel cyswllt HTML, bydd angen i chi ei lapio mewn tag <a>, fel felly:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Also thema default dudalen mewngofnodi)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Yn gyntaf, dewiswch eich ffurflen teipiwch."; +$LANG["text_client_form_page"] = "Mae'r dudalen hon yn rhestru'r holl ffurflenni a Delweddau neilltuo i'r cleient. Tip: er mwyn iddynt weld cyflwyniadau ffurflen's, mae angen iddynt ei neilltuo o leiaf un View."; +$LANG["text_client_map_filters_desc1"] = "Map hidlo Cleient yn gadael i chi gyfyngu ar y cyflwyniadau sy'n ymddangos yn y Gwyliwch gan mapio y gwerthoedd mewn maes ffurflen at y gwerthoedd mewn cyfrif cleient."; +$LANG["text_client_no_forms"] = "Ar hyn o bryd nid oes gennym unrhyw ffurflenni ar gael ar gyfer adolygiad."; +$LANG["text_client_welcome"] = "Croeso! Mae hyn yn siopau rhaglen yr holl wybodaeth a gyflwynir gan eich ymwelwyr gwefan. I weld cyflwyniadau am ffurflen penodol cliciwch ar y cyswllt GWELD neu gweler y ddewislen llywio leftmost ar gyfer opsiynau eraill."; +$LANG["text_config_file_created"] = "Config.php eich ffeil wedi ei greu."; +$LANG["text_config_file_not_created"] = "Ni fyddem yn creu eich ffeil config.php. Bydd angen i chi greu y ffeil llaw."; +$LANG["text_config_file_not_created_instructions"] = "Copi a gludwch y cynnwys oddi wrth yr adran isod i ffeil o'r enw config.php ac uwchlwytho mae'n drwy FTP i'r Ffurflen Offer / folder byd-eang ( 'r folder sydd hefyd yn cynnwys ychydig o ffeiliau eraill a chyfeirlyfrau, cafodd yr un ffeil o'r enw library.php)."; +$LANG["text_confirm_delete_form"] = "Ydw, rwyf eisiau dileu'r y ffurflen hon"; +$LANG["text_create_admin_account"] = "Nawr rydym yn mynd i greu cyfrif yn y gweinyddwr. Mae hyn yn cael ei ddefnyddio ar gyfer rheoli pob agwedd ar Ffurflen Offer, fel ychwanegu ffurflenni a chreu cyfrifon cleientiaid."; +$LANG["text_create_new_client_account"] = "Defnyddiwch y ffurflen isod i greu cyfrif cleient newydd. Pob maes sydd eu hangen."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "gweld PHP {\$datefunctionlink} swyddogaeth ar gyfer fformatio opsiynau"; +$LANG["text_default_file_settings_page"] = "Mae'r dudalen hon yn diffinio'r gosodiadau llwytho ffeil ar gyfer eich gosodiad Offer Ffurflen. Mae'r rheolau hyn yn berthnasol i bob lanlwytho ffeiliau trwy Ffurflen Offer, oni bai diystyru'r yn benodol ar gyfer maes ffurflen unigol. Sylwer: os byddwch yn newid y ffolder ar ôl lanlwytho ffeiliau wedi eu lanlwytho, byddant yn cael eu symud yn awtomatig i'r ffolder newydd."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Cyn parhau, bydd angen i chi ddiweddaru eich / themâu / cache folder ball / i ganiatáu llawn darllen ac ysgrifennu hawliau. Unwaith y bydd hyn yn cael ei wneud, bydd y neges hon yn diflannu a gallwch osod y sgript."; +$LANG["text_default_values_in_view"] = "Mae'r adran hon yn ddewisol. Bydd yr holl gyflwyniadau a grëwyd gyda hyn View gynnwys y gwerthoedd diofyn a nodir yma."; +$LANG["text_delete_all_forms"] = "Rwyf am i dileu pob ffeil a oedd yn lanlwytho trwy gyfrwng y ffurflen hon"; +$LANG["text_delete_form_warning"] = "A ydych yn sicr eich bod am ddileu y ffurflen hon? Ni all hyn fod yn dadwneud gweithredu. Bydd yr holl ddata yn cael ei golli am byth!"; +$LANG["text_edit_admin_menu_page"] = "Efallai y byddwch yn golygu eich bwydlen isod. I sicrhau eich bod bob amser yn cael mynediad i bob ymarferoldeb ar gael o fewn Ffurflen Tools, y tudalennau canlynol yn ofynnol: Ffurflenni, cleientiaid, Your Account, Modiwlau, Gosodiadau a Allan."; +$LANG["text_edit_client_menu_page"] = "Mae'r adran hon yn gadael i chi addasu y golofn chwith ar gyfer pob defnyddiwr. Gallwch greu bwydlenni cleient fel llawer ag y dymunwch, a neilltuo unrhyw ystyriaeth i un ohonynt. Yn ddiofyn, mae dau Bwydlenni: un i chi, y gweinyddwr, ac un ar gyfer pob cyfrif cleient. Efallai y bydd y cyfrif yn cael ei addasu gweinyddwr ond nid symud."; +$LANG["text_edit_tab_summary"] = "Os ydych am grŵp meysydd hyn Gweld i mewn i tabiau, rhowch yr enwau tab isod. Ar ôl i chi yn ei wneud, dewiswch y tab priodol ar gyfer pob grŵp cae yn y tab Fields ."; +$LANG["text_edit_view_list_page"] = "Mae hyn yn rheoli tab sy'n ymddangos fel meysydd colofnau ar y Rhestr Cyflwyno dudalen, a rhai lleoliadau ychwanegol ar gyfer y meysydd hynny. Sylwer: rydym yn argymell eich ychwanegu dim mwy na 4 neu 5 o'r meysydd pwysicaf yn y View."; +$LANG["text_email_settings_intro"] = "Mae'r dudalen hon yn eich galluogi i nodi pa feysydd eich ffurflen storio a negeseuon e-bost eu henwau cyfatebol. Unwaith y byddwch yn eu diffinio yma, gallwch eu defnyddio yn eich e-bost templates fel derbynwyr. Mae'r adran hon yn gwbl ddewisol."; +$LANG["text_email_tab_summary"] = "Mae'r adran hon yn gadael i chi adeiladu unrhyw nifer o negeseuon e-bost i anfon eich pryd bynnag y ffurflen yn cael ei gyflwyno, a sbarduno eraill."; +$LANG["text_email_template_tab"] = "Mae'r adran hon yn gadael i chi benderfynu pa cynnwys ymddangos yn yr e-bost. Os ydych yn dymuno anfon eich e-bost fel testun yn unig neu e-bost, ond rhowch gwerth am yr adran honno. Os byddwch yn rhoi gwerth ar gyfer y ddau, bydd yn cael ei anfon e-bost yn y ddau fformat."; +$LANG["text_email_template_text_1"] = "Mae wedi bod yn cyflwyno drwy eich ffurflen, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Mae wedi bod yn cyflwyno drwy eich ffurflen, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Diolch am eich cyflwyno!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Gwall neges i ddangos os yw'r maes yn methu y dilysu"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Ffurflenni allanol yn cael eu ffurflenni sydd eisoes yn bodoli ar eich gwefan, neu rywle ar y we. Dewiswch yr opsiwn hwn os ydych wedi eich ffurflen eich hun a hoffech ei integreiddio gyda Offer Ffurflen."; +$LANG["text_fields_tab_summary"] = "Mae'r dudalen hon yn rhestru eich holl feysydd ffurflen. I reoli'r ffordd y maent yn ymddangos pan fydd cyflwyniadau yn pori, gweler y tab Barn . Bydd dileu cae ar y dudalen hon ei ddileu o'r holl gyflwyniadau, felly byddwch yn ofalus!"; +$LANG["text_file_extension_info"] = "Rhowch ffeil estyniadau wedi eu gwahanu gyda coma (ee jpg, gif, png) neu gadewch yn wag er mwyn caniatáu unrhyw fath ffeil."; +$LANG["text_file_field_placeholders_info"] = "Meysydd Ffeil wedi dwy placeholders arbennig: FILEURL a FileName. FILEURL yw'r URL llawn at y ffeil, fel y gallwch gysylltu'n uniongyrchol â yn eich e-byst; FileName yn unig yw enw'r ffeil."; +$LANG["text_filters_page"] = "Dim ond rhai cyflwyniadau sy'n bodloni rheolau ydych yn diffinio isod yn ymddangos yn y View."; +$LANG["text_filters_tips"] = "I gael cyngor ar sut i ddefnyddio hidlo cyflwyniad, gweler y Dogfennaeth Defnyddiwr."; +$LANG["text_forgot_password"] = "Dim problem. Bydd Teipiwch eich enw defnyddiwr isod ac eich gwybodaeth mewngofnodi yn cael ei anfon i'ch cyfeiriad e-bost ar ffeil. Os ydych wedi anghofio eich enw, anfonwch e-bost y gweinyddwr yn {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Mae'r ffurflen hon yn cynnwys un neu fwy o'r meysydd llwytho ffeil:"; +$LANG["text_form_placeholder_info"] = "Efallai y bydd y bachau canlynol yn cael ei ddefnyddio mewn unrhyw templed e-bost a maes placeholder iaith, waeth beth yw beth bynnag View y templed e-bost ei neilltuo i. Mae'r bachau CWESTIWN yw'r cwestiwn ffurflen benodol; y bachau ATEB atebion i bob cwestiwn."; +$LANG["text_form_submission_date_placeholder"] = "Y dyddiad pryd y cyflwyniad ei wneud."; +$LANG["text_form_tools_form_url"] = "Mae URL llawn y ffurflen. Hyn ond yn cael gwerth am ffurflenni Allanol."; +$LANG["text_form_tools_login_url"] = "URL mewngofnodi ar gyfer Ffurflen Offer."; +$LANG["text_form_view_permission_info_admin"] = "Noder: y ffurflen hon ar hyn o bryd mae math fynediad Gweinyddwr, felly bydd unrhyw un o'r cyfrifon cleientiaid yn gallu gweld y View."; +$LANG["text_form_view_permission_info_private"] = "Noder: y ffurflen hon ar hyn o bryd mae math fynediad breifat, felly bydd y dewisiadau Cyhoeddus a Phreifat yma fod yn gyfyngedig i fod is-set o gleientiaid."; +$LANG["text_ft_installed"] = "Llongyfarchiadau, Ffurflen Offer wedi cael ei defnyddio'n llwyddiannus!"; +$LANG["text_global_placeholder_info"] = "Gall y rhain placeholders yn cael eu defnyddio mewn unrhyw templed ac unrhyw ffurf."; +$LANG["text_group_name_explanation"] = "Ar gyfer meysydd ychwanegol trwy'r broses Ffurflen Ychwanegu, y gwerth hwn yn llawn cyn i arddangos testun o bob maes yn defnyddio'r gwerth. Efallai yr hoffech ei newid i well characterize cynnwys."; +$LANG["text_install_create_config_file"] = "Ffurflen siopau Offer eich gweinydd a lleoliadau cronfa ddata mewn ffeil o'r enw config.php, dod o hyd yn eich / byd-eang / folder. Cliciwch ar "Creu Ffeil botwm" yn awtomatig greu'r ffeil ar eich gweinyddwr."; +$LANG["text_install_create_database_tables"] = "Nawr rydym yn mynd i greu y gronfa ddata Ffurflen tablau Offer. Y cam hwn yn gofyn am y gronfa ddata ei hun i eisoes wedi cael eu creu. Os nad ydych yn siwr sut i wneud hyn, cysylltwch â'ch darparwr cynnal."; +$LANG["text_install_db_tables_error_tip_1"] = ""Anhysbys MySQL Gweinyddwr Cynnal" fel arfer yn golygu bod eich enw gwesteiwr a ddarperir yn anghywir. Efallai ceisio gosod hyn i "localhost" - mae hwn yn ffordd gyffredin i gyfeirio at y "lleol" cronfa ddata ar weinydd y we."; +$LANG["text_install_db_tables_error_tip_2"] = "Methu "cysylltu MySQL gweinyddwr lleol drwy soced" yn golygu y maes gronfa ddata enw gwesteiwr eto yn anghywir."; +$LANG["text_install_db_tables_error_tip_3"] = ""Mynediad gwrthodwyd ar gyfer defnyddiwr:" yn golygu nad oes problem gyda'ch enw defnyddiwr / cyfuniad password."; +$LANG["text_install_db_tables_error_tip_4"] = ""Gwrthodwyd mynediad ar gyfer defnyddwyr: cronfa ddata ... i ..." yn golygu, er bod eich enw defnyddiwr a chyfrinair i chi a gyflenwir yn gywir, ei fod yn gallu er mwyn cysylltu at y gronfa ddata penodol gyda'r cyfrif. Gall hyn olygu fod naill ai eich enw cronfa ddata yn anghywir, neu nad yw hyn cyfrif defnyddiwr yn gysylltiedig gyda'r gronfa ddata."; +$LANG["text_install_email_content_text"] = "Mae digon o adnoddau ar ein gwefan i'ch helpu i ddechrau, gan gynnwys ein dogfennau ar-lein (https://docs.formtools.org) a thiwtorialau (https://docs.formtools.org/tutorials). Os byddwch chi'n canfod eich bod chi'n sownd neu fod gennych gwestiwn, gofynnwch gwestiwn ar github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Mae'n ddrwg gennym, ni fydd Tools ffurflen yn gallu rhedeg ar eich gweinydd. Cliciwch yma ar gyfer y gofynion lleiaf."; +$LANG["text_install_system_check"] = "Mae'r dudalen hon yn rhedeg ychydig o brofion ar eich system er mwyn sicrhau ei fod yn gallu cynnal Offer Ffurflen."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Ffurflenni mewnol yn bodoli yn unig o fewn Offer Ffurflen - nid mewn mannau eraill ar eich safle. Dim ond Tools defnyddiwr Ffurflen cyfrifon yn cael mynediad at y ffurflen. Dewiswch yr opsiwn hwn os nad oes gennych ffurflen sy'n bodoli eisoes."; +$LANG["text_internal_form_intro"] = "Defnyddiwch y ffurflen isod i greu ffurflen Mewnol newydd. Gall pob leoliadau, gan gynnwys y nifer a chynnwys y meysydd ffurflen gael eu newid a'u ffurfweddu yn ddiweddarach."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Er mwyn mewngofnodi a defnyddio Ffurflen Offer, rhaid i chi alluogi Javascript yn eich porwr. Os gwelwch yn dda alluogi nawr, cliciwch adnewyddu ac yn eich porwr."; +$LANG["text_last_modified_date_explanation_c"] = "Y tro diwethaf y cyflwyniad ei addasu. Ar gyfer ceisiadau newydd, mae hyn yr un fath â:"; +$LANG["text_limit_email_content_desc"] = "Mae'r opsiwn hwn yn unig yn gweithio ar gyfer HTML a chynnwys a gynhyrchir gyda thestun Dolenni Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(yn unig rhestrau Barn gydag un neu fwy o hidlyddion diffiniedig)"; +$LANG["text_log_in_to_ft"] = "Mewngofnodi er mwyn Ffurflen Offer"; +$LANG["text_login"] = "Os gwelwch yn dda logio i mewn isod i gael mynediad i'r \$ (program_name) Gweinyddiaeth Panel. Os ydych wedi anghofio eich cyfrinair, cliciwch yma."; +$LANG["text_login_info"] = "Yn unol â chais, dyma eich gwybodaeth mewngofnodi."; +$LANG["text_name_of_form"] = "Mae'r enw ar y ffurflen."; +$LANG["text_no_clients"] = "Mae bryd nid oes unrhyw gleientiaid yn y gronfa ddata. I ychwanegu cyfrif cleient newydd, cliciwch y botwm Ychwanegu Cleient isod."; +$LANG["text_no_clients_found"] = "Nifer y cleientiaid sy'n cyfateb. Ceisiwch ehangu eich meini prawf chwilio."; +$LANG["text_no_fields_in_view"] = "Nid yw hyn View oes gan unrhyw feysydd ynddo. Cliciwch ar y ddolen isod."; +$LANG["text_no_forms"] = "Ar hyn o bryd dim ffurflenni yn y gronfa ddata. I ychwanegu ffurflen newydd, cliciwch y botwm Ychwanegu Ffurflen isod."; +$LANG["text_no_forms_found"] = "Ni ffurflenni Canfuwyd."; +$LANG["text_no_forms_found_search"] = "Ni ffurflenni Canfuwyd. Ceisiwch ehangu eich meini prawf chwilio."; +$LANG["text_no_modules_found"] = "Dim modiwlau sy'n cyfateb. Ceisiwch ehangu eich meini prawf chwilio."; +$LANG["text_no_recipients_added"] = "Nifer y derbynyddion wedi eu hychwanegu."; +$LANG["text_no_search_results"] = "Does dim canlyniadau â'r meini prawf chwilio / Edrych ar."; +$LANG["text_no_submissions_found"] = "Mae'n ddrwg gennym, nid oes cyflwyniadau daethpwyd o hyd."; +$LANG["text_no_themes"] = "Nid oes gennych unrhyw themâu diffiniedig. Cliciwch ar y botwm isod i adnewyddu eich rhestr thema, neu edrychwch ar y defnyddiwr Offer dogfennau Ffurflen am wybodaeth am ychwanegu themâu."; +$LANG["text_non_deletable_fields"] = "Defnyddir y maes hwn gan y sgript Craidd ac ni ellir ei golygu neu dileu heb achosi anghysondebau. Os ydych yn dymuno gwneud newidiadau i'r math maes, yn gwneud copi ohoni ac yn golygu y copi."; +$LANG["text_option_list_group_explanation"] = "Os bydd hyn yn cael ei ddewis, mae'n gadael i grŵp eich opsiynau. Sut mae'r grwpiau yn cael eu harddangos yn dibynnu ar y math cae gan ddefnyddio'r opsiwn y rhestr hon."; +$LANG["text_option_list_page"] = "Botymau radio, blychau ticio, dropdowns ac aml-ddewis meysydd dropdown i gyd yn darparu i'r defnyddiwr opsiynau lluosog gan y gallant ddewis un neu fwy o eitemau. Yn Offer Ffurf, gelwir y rhain yn Rhestrau Opsiwn. Yn gyffredinol, mae'r rhain yn cael eu creu yn awtomatig gan y Ffurflen Allanol Ychwanegu broses, ond gallwch llaw ychwanegu neu newid eich rhestrau opsiwn isod os yw eich ffurflen yn newid neu os ydych yn cynnwys adeiladu meysydd sy'n cael eu defnyddio yn unig yn fewnol."; +$LANG["text_option_list_used_by_fields"] = "Mae'r Rhestr Opsiwn yn cael ei ddefnyddio gan gaeau ffurflen lluosog. Os ydych yn diweddaru'r wybodaeth isod, bydd yn cael ei newid ar gyfer pob un o'r meysydd (gweler y Ffurflen Fields tab i weld y rhestr o gaeau). Os ydych yn dymuno diweddaru y gwerthoedd ar gyfer un, neu is-set o'r meysydd sy'n cael eu neilltuo ar hyn o bryd, cliciwch yma i greu Rhestr Opsiwn newydd gyda'r un gwerthoedd fel yr un yma. Yna gallwch aseinio y caeau ffurflen ydych eisiau i'r grŵp newydd."; +$LANG["text_public_form_omit_list_page"] = "Ffurflenni Cyhoeddus rhoi budd i adael yr holl gyfrifon cleientiaid gael mynediad iddynt heb orfod at manually neilltuo pob cleient iddynt. Mae'r dudalen hon yn eich galluogi i binbwyntio cleientiaid hynny nad ydynt efallai mynediad y ffurflen hon, er bod y ffurflen yn cael ei nodi fel cyhoeddus."; +$LANG["text_public_view_omit_list_page"] = "Barn y cyhoedd yn rhoi budd i adael yr holl gyfrifon cleientiaid gael mynediad iddynt heb orfod at manually neilltuo pob cleient iddynt. Mae'r dudalen hon yn eich galluogi i binbwyntio cleientiaid hynny nad ydynt efallai mynediad hyn View penodol."; +$LANG["text_reference_tab_info"] = "Mae'r dudalen hon yn rhestru'r holl bachau ar gael ar gyfer eich ffurflen. Bachau yn llinynnau y gellir eu defnyddio yn y templedi e-bost, a chaeau farcio â eicon placeholder arbennig . Pan aeth i mewn i gae, maent yn cael eu trosi yn ddeinamig at y gwerth priodol pan fydd y maes yn cael ei weld neu yr e-bost yn cael ei anfon."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Adolygu'r ddogfennaeth defnyddiwr"; +$LANG["text_send_email_from_edit_submission_page"] = "Cynnwys dewis i anfon e-bost yma o'r dudalen Cyflwyno Golygu"; +$LANG["text_smart_fill_option_list_problem"] = "Nid oeddem yn gallu Smart Llenwch eich dewisiadau maes. Fodd bynnag, fel dewis arall, gallwch roi cynnig ar lwytho copi o'ch ffurflen tudalen yn y maes isod. Sylwer: peidiwch â llwytho tudalennau PHP amrwd (neu eraill ochr y gweinydd cod) - dim ond llwytho i fyny y fersiwn HTML. I gael hyn, gweld a arbed y dudalen gan eich porwr gwe."; +$LANG["text_submission_ip_address"] = "Mae Cyfeiriad IP y defnyddiwr a wnaeth y cyflwyniad."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Defnyddiwch y ffurflen isod i weld naill ai eich hunan neu anfonwch e-bost a gynhyrchir o'r templed e-bost. Mae'r e-bost ei anfon yn unig i'r e-bost a nodir isod, ar y cyfan, cc Bcc derbynwyr a chyfeiriad e-bost yn cael ei anwybyddu wrth profi."; +$LANG["text_test_email_templates_no_submissions"] = "Er mwyn profi eich e-bost templates, rhaid i chi yn gyntaf drwy roi o leiaf un gyflwyno ffurflen."; +$LANG["text_theme_page_intro"] = "Mae'r dudalen hon yn rhestru eich holl themâu. Cliciwch ar gryno-lun i weld enghraifft fwy o arddulliau y thema. Galluogi Mae'r "" blwch yn penderfynu ai peidio a all fod thema yn cael eu dewis gan gleientiaid. I bori holl themâu sydd ar gael, ewch i wefan Offer Ffurflen."; +$LANG["text_tutorial_adding_first_form"] = "Tiwtorial: Ychwanegu eich ffurflen gyntaf!"; +$LANG["text_unique_submission_id"] = "Y cyflwyniad unigryw ID."; +$LANG["text_unused_option_list"] = "Nid yw'r rhestr opsiwn yn cael ei defnyddio gan unrhyw feysydd ffurflen."; +$LANG["text_upgraded"] = "Eich gosodiad wedi cael ei uwchraddio i {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Mae'r Rhestr Opsiwn yn cael ei ddefnyddio gan y meysydd canlynol."; +$LANG["text_view_fields_info"] = "Mae hyn yn tab rheolaethau sy'n feysydd arddangos i fyny wrth olygu cyflwyniad yn y View, eu trefn ac a ydynt yn eu golygu ai peidio."; +$LANG["text_view_tab_summary"] = "Mae hyn yn tab yn gadael i chi greu gwahanol ffyrdd i grwpiau a threfnu eich data. Barn gadael i chi greu arfer o is-setiau data ar eich ffurflen i rannu i mewn i ddarnau hylaw, ac i gyfyngu ar yr hyn y gall cleientiaid weld neu newid."; +$LANG["validation_account_disabled"] = "Mae'n ddrwg gennym, eich cyfrif wedi bod yn anabl."; +$LANG["validation_account_not_recognized"] = "Mae'n ddrwg gennym, nad enw mae'n cael ei gydnabod."; +$LANG["validation_account_not_recognized_info"] = "Mae'n ddrwg gennym, nad oedd yn dod o hyd i enw. Please try again, neu cysylltwch â gweinyddwr y safle yn y cyfeiriad isod."; +$LANG["validation_account_pending"] = "Eich cyfrif defnyddiwr yn disgwyl cymeradwyaeth gan weinyddwr."; +$LANG["validation_check_delete_client"] = "A ydych yn sicr eich bod am ddileu y cyfrif cleient?"; +$LANG["validation_client_password_missing_number"] = "Rhaid i'r cyfrinair cleient yn cynnwys o leiaf un rhif (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "cleient Rhaid password Mae'r cynnwys o leiaf un o'r elfennau canlynol: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Rhaid i'r cyfrinair cleient yn cynnwys o leiaf un llythyr priflythyren."; +$LANG["validation_client_password_too_short"] = "Y cyfrinair cleient angen i fod o leiaf {\$number} o gymeriadau."; +$LANG["validation_col_name_is_reserved_word"] = "Mae'n ddrwg gennym, y gronfa ddata hon enw golofn yn gweithio gadw mewn MySQL. Ei ail-enwi os gwelwch yn dda!"; +$LANG["validation_db_name"] = "Ni all enwau cronfa ddata gynnwys cyfnodau neu slashes."; +$LANG["validation_db_not_updated_invalid_input"] = "Nid oedd y gronfa ddata yn cael ei ddiweddaru. Gwiriwch i weld y gwerthoedd a roddwyd yn ddilys."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Mae'n ddrwg gennym, mae'n rhaid i'r gweinyddwr diofyn a themâu cleient bob amser yn cael eu galluogi."; +$LANG["validation_default_phone_num_required"] = "Llenwch y rhif ffôn llawn ar gyfer y <b> { \$ maes} </ b> cae - rhifau yn unig."; +$LANG["validation_default_rule_alpha"] = "Os gwelwch yn dda ond yn mynd i mewn llythrennau a rhifau ar gyfer y <b> { \$ maes} </ b> cae."; +$LANG["validation_default_rule_letters_only"] = "Os gwelwch yn dda ond yn mynd i mewn llythrennau ar gyfer y <b> { \$ maes} </ b> cae."; +$LANG["validation_default_rule_numbers_only"] = "Os gwelwch yn dda ond yn mynd i mewn niferoedd ar gyfer y <b> { \$ maes} </ b> cae."; +$LANG["validation_default_rule_required"] = "Rhowch werth ar gyfer y <b> { \$ maes} </ b> cae."; +$LANG["validation_default_rule_valid_email"] = "Rhowch gyfeiriad e-bost dilys ar gyfer y <b> { \$ maes} </ b> cae."; +$LANG["validation_delete_form_confirm"] = "Gwiriwch y blwch i gadarnhau eich bod eisiau dileu y ffurflen hon."; +$LANG["validation_delete_non_empty_option_list"] = "Rhybudd! Mae'r Rhestr Opsiwn yn cael ei ddefnyddio gan un neu fwy o feysydd ffurflen. Bydd dileu'r yn gwneud y meysydd hynny yn peidio â gweithio'n iawn."; +$LANG["validation_display_names_incomplete"] = "Rhowch gwerth am yr holl enwau arddangos, neu cliciwch ar y dewis Llenwch Smart i fynd iddynt ddynamig."; +$LANG["validation_duplicate_form_field_name"] = "Ni allwch gael feysydd lluosog ag enw un maes."; +$LANG["validation_email_not_found_or_invalid"] = "Mae'n ddrwg gennym, yr e-bost sy'n gysylltiedig â'ch cyfrif naill ai ddim yn bodoli neu yn annilys."; +$LANG["validation_folder_invalid_permissions"] = "Er mwyn cynnal y prawf hwn, y caniatadau angen gosod ar y ffolder llwytho i ganiatáu ar gyfer darllen ac ysgrifennu ffeiliau (777 ar Unix)."; +$LANG["validation_folder_not_writable"] = "Nid yw hyn yn writeable folder."; +$LANG["validation_internal_form_too_many_fields"] = "Mae'n ddrwg gennym, gallwch greu dim ond ffurflenni gyda chaeau 1000 neu lai."; +$LANG["validation_invalid_admin_email"] = "Rhowch y cyfeiriad adminstrator e-bost dilys."; +$LANG["validation_invalid_admin_username"] = "Efallai y bydd eich enw defnyddiwr yn unig yn cynnwys nodau alffaniwmerig (AZ a 0-9)."; +$LANG["validation_invalid_client_username"] = "Gall enw defnyddiwr y cleient yn unig yn cynnwys cymeriadau alphanumeric (AZ a 0-9)."; +$LANG["validation_invalid_client_username2"] = "Gall Mae'n ddrwg gennym, enw yn unig yn cynnwys llythrennau, rhifau a chymeriad underscore. Rhowch enw defnyddiwr newydd."; +$LANG["validation_invalid_column_name"] = "Gall enwau Colofn dim ond alffaniwmerig (AZ, 0-9). Gwiriwch yr enwau golofn."; +$LANG["validation_invalid_custom_from_email"] = "Rhowch arferiad dilys 'O' cyfeiriad e-bost."; +$LANG["validation_invalid_custom_reply_to_email"] = "Rhowch Ymateb yn arferiad dilys 'i' cyfeiriad e-bost."; +$LANG["validation_invalid_default_sessions_timeout"] = "Rhowch werth dilys (nifer) ar gyfer y Goramser sesiynau arferol."; +$LANG["validation_invalid_email"] = "Rhowch gyfeiriad e-bost dilys."; +$LANG["validation_invalid_email_id"] = "Mae'n ddrwg gennym, dyna e-bost annilys ID."; +$LANG["validation_invalid_folder"] = "Mae'n ddrwg gennym, nid yw hyn yn ymddangos i fod yn ddilys folder."; +$LANG["validation_invalid_form_field_names"] = "Efallai y meysydd Ffurflen ond alphanumeric a underscores (AZ, 0-9, _), heb gael llonydd."; +$LANG["validation_invalid_num_clients_per_page"] = "Yn unig os gwelwch yn dda rhowch nifer y cleientiaid Num Fesul Page maes."; +$LANG["validation_invalid_num_emails_per_page"] = "Yn unig os gwelwch yn dda rhowch digid ar gyfer yr e-byst y dudalen."; +$LANG["validation_invalid_num_form_fields"] = "Os gwelwch yn dda dim ond mynd i mewn rhifau yn y nifer o Fields maes."; +$LANG["validation_invalid_num_forms_per_page"] = "Yn unig os gwelwch yn dda rhowch rhifau yn y Ffurflenni Num Fesul Page maes."; +$LANG["validation_invalid_num_menus_per_page"] = "Yn unig os gwelwch yn dda rhowch digid ar gyfer y dewislenni ar bob tudalen."; +$LANG["validation_invalid_num_modules_per_page"] = "Yn unig os gwelwch yn dda rhowch rhifau yn y Modiwlau Num Fesul Page maes."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Os gwelwch yn dda dim ond mynd i mewn rhifau yn y Rhestrau Num Opsiwn Per maes Tudalen."; +$LANG["validation_invalid_num_submissions_per_page"] = "Rhowch nifer dilys o gyflwyniadau ar bob tudalen."; +$LANG["validation_invalid_sessions_timeout"] = "Rhowch Goramser sesiwn ddilys (integers yn unig!)."; +$LANG["validation_invalid_tab_assign_values"] = "Yn unig os gwelwch yn dda rhowch rhifau yn y 'o' a 'i' caeau."; +$LANG["validation_invalid_table_prefix"] = "Rhowch rhagddodiad cronfa ddata yn cynnwys llythyr a chymeriad yr tanlinellu yn unig."; +$LANG["validation_invalid_upload_folder"] = "Gosod eich gweinydd o PHP wedi lleoliad annilys ar gyfer y gwerth upload_tmp_dir. "{\$upload_folder}" Nid yw folder ddilys."; +$LANG["validation_invalid_url"] = "Rhowch URL dilys."; +$LANG["validation_invalid_username"] = "Efallai y bydd eich enw yn unig yn cynnwys cymeriadau alphanumeric (AZ a 0-9)."; +$LANG["validation_is_form_active"] = "Nodwch a yw'r ffurflen yn weithgar ai peidio."; +$LANG["validation_menu_name_taken"] = "Mae'n ddrwg gennym, ddewislen yr enw hwn eisoes yn cael eu cymryd. Dewiswch enw newydd."; +$LANG["validation_modules_search_no_status"] = "Dewiswch naill ai yn y blychau ticio Galluogi neu Anabl."; +$LANG["validation_no_access_type"] = "Rhowch y math mynediad."; +$LANG["validation_no_account_logout_url"] = "Rhowch eich URL ymadael."; +$LANG["validation_no_account_password_confirmed"] = "Ail-os gwelwch yn dda teipiwch eich cyfrinair newydd."; +$LANG["validation_no_account_password_confirmed2"] = "Rhowch ail-ymuno â'r cyfrinair newydd."; +$LANG["validation_no_admin_email"] = "Rhowch gyfeiriad y gweinyddwr's e-bost."; +$LANG["validation_no_admin_theme"] = "Dewiswch y thema ar gyfer y cyfrif gweinyddwr."; +$LANG["validation_no_admin_theme_swatch"] = "Dewiswch swatch ar gyfer y thema gweinyddwr."; +$LANG["validation_no_client_email"] = "Rhowch gyfeiriad y cleient e-bost."; +$LANG["validation_no_client_first_name"] = "Rhowch enw'r cleient cyntaf."; +$LANG["validation_no_client_last_name"] = "Rhowch enw'r cleient diwethaf."; +$LANG["validation_no_client_login_page"] = "Nodwch y dudalen a ddylai y cleient yn cael ei ailgyfeirio i pan fyddant yn fewngofnodi"; +$LANG["validation_no_client_password"] = "Rhowch y cyfrinair cleient."; +$LANG["validation_no_client_theme_swatch"] = "Dewiswch swatch diofyn ar gyfer y cyfrifon cleientiaid."; +$LANG["validation_no_client_username"] = "Rhowch enw defnyddiwr y cleient."; +$LANG["validation_no_column_name"] = "Rhowch yr holl enwau colofn, neu cliciwch ar y botwm Llenwch Smart i'w llenwi yn awtomatig."; +$LANG["validation_no_column_selected"] = "Dewiswch o leiaf un maes i ymddangos fel colofn ar y rhestr gyflwyno dudalen."; +$LANG["validation_no_custom_from_email"] = "Rhowch y arferiad 'O' cyfeiriad e-bost."; +$LANG["validation_no_custom_recipient_email"] = "Rhowch y cyfeiriad e-bost arferiad derbynnydd."; +$LANG["validation_no_custom_reply_to_email"] = "Rhowch Ymateb yr arfer 'i' cyfeiriad e-bost."; +$LANG["validation_no_date_format"] = "Rhowch fformat dyddiad."; +$LANG["validation_no_db_column_single"] = "Rhowch enw y Gronfa Ddata Colofn."; +$LANG["validation_no_db_hostname"] = "Rhowch y gwesteiwr cronfa ddata."; +$LANG["validation_no_db_name"] = "Rhowch enw gronfa ddata."; +$LANG["validation_no_db_username"] = "Rhowch y gronfa ddata username cyfrif."; +$LANG["validation_no_default_client_theme"] = "Dewiswch y thema rhagosodedig cyfrifon ar gyfer pob cleient newydd."; +$LANG["validation_no_default_language"] = "Dewiswch yr iaith ddiofyn ar gyfer eich gosod Ffurflen Offer."; +$LANG["validation_no_default_sessions_timeout"] = "Rhowch y rhagosodiad Goramser sesiwn ar gyfer cyfrifon defnyddwyr."; +$LANG["validation_no_display_text"] = "Nodwch y testun Arddangos ar gyfer pob maes."; +$LANG["validation_no_display_text_single"] = "Nodwch y Arddangos gwerth testun."; +$LANG["validation_no_edit_submission_page_label"] = "Rhowch y label Golygu dudalen Cyflwyno."; +$LANG["validation_no_email"] = "Rhowch eich cyfeiriad e-bost."; +$LANG["validation_no_email_config_field"] = "Nodwch maes ffurflen sydd yn y maes e-bost."; +$LANG["validation_no_email_content"] = "Rhowch y cynnwys e-bost ar gyfer o leiaf un o'r fformatau (HTML neu destun)."; +$LANG["validation_no_email_from_field"] = "E-bost os gwelwch yn dda yr 'o' maes."; +$LANG["validation_no_email_template_name"] = "Rhowch y templed enw e-bost."; +$LANG["validation_no_email_template_view_id"] = "Dewiswch y Edrychwch ar y templed e-bost yma dylid mapio."; +$LANG["validation_no_email_template_view_mapping_value"] = "Nodwch y pryd y dylid anfon e-bost."; +$LANG["validation_no_enabled_themes"] = "Sicrhewch eich bod yn o leiaf un thema wedi'i alluogi."; +$LANG["validation_no_first_name"] = "Rhowch eich enw cyntaf."; +$LANG["validation_no_form_field_name"] = "Rhowch enwau pob ffurflen maes."; +$LANG["validation_no_form_field_single"] = "Nodwch y Ffurflen gwerth Maes."; +$LANG["validation_no_form_id"] = "Mae'r ffurflen Ni Adnabod ei nodi. Ewch allan a cheisiwch eto."; +$LANG["validation_no_form_name"] = "Rhowch yr enw ffurflen."; +$LANG["validation_no_form_url"] = "Rhowch y ffurflen URL."; +$LANG["validation_no_last_name"] = "Rhowch eich enw diwethaf."; +$LANG["validation_no_login_page"] = "Nodwch pa dudalen yr hoffech chi eu hanfon bob tro i chi fewngofnodi"; +$LANG["validation_no_logout_url"] = "Rhowch y URL ymadael."; +$LANG["validation_no_main_email_recipient"] = "Rhowch o leiaf un prif derbynnydd e-bost (hy nid yn cc neu Bcc)."; +$LANG["validation_no_menu"] = "Dewiswch fwydlen ar gyfer y cyfrif hwn defnyddiwr."; +$LANG["validation_no_menu_id"] = "Dewiswch y fwydlen."; +$LANG["validation_no_num_clients_per_page"] = "Rhowch nifer y cyfrifon cleientiaid y dudalen."; +$LANG["validation_no_num_emails_per_page"] = "Rhowch nifer y negeseuon e-bost at y rhestr ar bob tudalen."; +$LANG["validation_no_num_form_fields"] = "Rhowch nifer o feysydd ar gyfer eich ffurflen."; +$LANG["validation_no_num_forms_per_page"] = "Rhowch y nifer o ffurflenni ar bob tudalen."; +$LANG["validation_no_num_menus_per_page"] = "Rhowch nifer y bwydlenni i'r rhestr y dudalen."; +$LANG["validation_no_num_modules_per_page"] = "Rhowch y nifer o fodiwlau ar bob tudalen."; +$LANG["validation_no_num_option_lists_per_page"] = "Rhowch y nifer o restrau opsiwn ar bob tudalen."; +$LANG["validation_no_num_submissions_per_page"] = "Rhowch nifer y cyflwyniadau i arddangos y dudalen."; +$LANG["validation_no_option_list_name"] = "Rhowch enw y dewis rhestr."; +$LANG["validation_no_page_titles"] = "Rhowch y teitlau dudalen diofyn ar gyfer y cyfrifon defnyddiwr."; +$LANG["validation_no_password"] = "Rhowch eich cyfrinair."; +$LANG["validation_no_program_name"] = "Rhowch enw'r rhaglen."; +$LANG["validation_no_second_password"] = "Rhowch ail-roi eich cyfrinair."; +$LANG["validation_no_sessions_timeout"] = "Rhowch y sesiwn goramser."; +$LANG["validation_no_smart_fill_values"] = "Rhowch y ffurflen enw maes a URL y ffurflen."; +$LANG["validation_no_table_prefix"] = "Rhowch rhagddodiad cronfa ddata."; +$LANG["validation_no_tabs_defined"] = "Dim tabiau a ddiffinnir"; +$LANG["validation_no_test_email_recipient"] = "Rhowch y cyfeiriad e-bost lle y dylem anfon e-bost y prawf."; +$LANG["validation_no_test_email_submission_id"] = "Rhowch y cyflwyniad ID rhif."; +$LANG["validation_no_theme"] = "Dewiswch thema."; +$LANG["validation_no_theme_swatch"] = "Dewiswch swatch ar gyfer y thema a ddewiswyd."; +$LANG["validation_no_timezone_offset"] = "Rhowch y Cylchfa amser gwrthbwyso."; +$LANG["validation_no_titles"] = "Rhowch y dudalen teitlau."; +$LANG["validation_no_two_column_names"] = "Mae'n ddrwg gennym, efallai na fyddwch rhowch enw'r gronfa ddata un golofn ddwywaith."; +$LANG["validation_no_ui_language"] = "Dewiswch iaith ar gyfer y rhyngwyneb."; +$LANG["validation_no_url"] = "Rhowch URL."; +$LANG["validation_no_username"] = "Rhowch eich enw defnyddiwr."; +$LANG["validation_no_username_or_js"] = "Rhaid i chi roi eich enw defnyddiwr. Os gwelwch yn dda activate javascript yn eich porwr."; +$LANG["validation_no_view_fields"] = "Nid yw eich Edrychwch yn cynnwys unrhyw feysydd! Mae angen i chi neilltuo o leiaf un maes ar gyfer yno i fod yn rhywbeth i ddangos yn eich View."; +$LANG["validation_no_view_fields_selected"] = "Dewiswch un neu fwy o feysydd i ychwanegu at y ddewislen View."; +$LANG["validation_no_view_name"] = "Rhowch enw eich View."; +$LANG["validation_num_rows_to_add"] = "Rhowch y nifer o resi i ychwanegu."; +$LANG["validation_option_list_name_taken"] = "Mae'n ddrwg gennym, enw yr opsiwn hwn rhestr yn cael eu cymryd eisoes. Dewiswch enw newydd."; +$LANG["validation_password_in_password_history"] = "Er diogelwch, ni allwch fynd i mewn i'r un password ag unrhyw un o'r diwethaf {\$history_size} passwords. Rhowch gyfrinair gwahanol."; +$LANG["validation_passwords_different"] = "Gwnewch yn siwr y passwords yr un fath."; +$LANG["validation_please_enter_search_date_range"] = "Dewiswch y chwiliad ystod dyddiadau."; +$LANG["validation_please_enter_search_keyword"] = "Rhowch y gair allweddol chwilio."; +$LANG["validation_select_field_type"] = "Dewiswch fath maes."; +$LANG["validation_select_submissions_to_copy"] = "Dewiswch y cyflwyniadau hynny yr hoffech eu copïo."; +$LANG["validation_select_submissions_to_delete"] = "Dewiswch y rhai sylwadau yr hoffech eu dileu."; +$LANG["validation_smart_fill_cannot_fill"] = "Mae'n ddrwg gennym, nid oeddem yn gallu llenwi'r maes hwn."; +$LANG["validation_smart_fill_invalid_field_type"] = "Nid oeddem yn gallu ddod o hyd i maes, ond nid yw'n gwymplen, blwch neu grwp radio."; +$LANG["validation_smart_fill_no_field_found"] = "Mae'n ddrwg gennym, nid oeddem yn gallu dod o hyd i maes ffurflen gyda'r enw ar y dudalen a nodwyd."; +$LANG["validation_smart_fill_no_page"] = "Os gwelwch yn dda ddod o hyd i'r dudalen yn cynnwys y maes ydych yn dymuno Smart Llenwi."; +$LANG["validation_smart_fill_upload_all_pages"] = "Lanlwytho os gwelwch yn dda yr holl dudalennau yn eich ffurflen."; +$LANG["validation_upload_folder_not_writable"] = "Nid yw hyn blygell llwytho dros dro a bennwyd gan eich PHP gosod yn Ysgrifenadwy. Nes y bydd yn sefydlog, ac ni all fod yn lanlwytho ffeiliau drwy Ffurflen Offer (neu unrhyw raglen PHP eraill). Cysylltwch â'ch darparwr cynnal."; +$LANG["validation_upload_html_files_only"] = "Ffeiliau HTML llwytho yn unig os gwelwch yn dda."; +$LANG["validation_username_taken"] = "Mae'n ddrwg gennym, bod enw yn cael eu cymryd eisoes. Rhowch enw defnyddiwr arall."; +$LANG["validation_wrong_password"] = "Mae'n ddrwg gennym, nad cyfrinair yn cyfateb."; +$LANG["word_about"] = "Amdanom ni"; +$LANG["word_access"] = "Mynediad"; +$LANG["word_account"] = "Cyfrif"; +$LANG["word_account_sp"] = "Cyfrif (au)"; +$LANG["word_accounts"] = "Cyfrifon"; +$LANG["word_action"] = "Gweithredu"; +$LANG["word_active"] = "Active"; +$LANG["word_add"] = "Ychwanegu"; +$LANG["word_add_rightarrow"] = "Ychwanegu »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Gweinyddu"; +$LANG["word_administrator"] = "Gweinyddwr"; +$LANG["word_after"] = "Ar ôl"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "_ORDER_DROPDOWN_AUA"; +$LANG["word_author"] = "Awdur"; +$LANG["word_author_c"] = "Awdur:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«yn ôl"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Cyn"; +$LANG["word_benefits"] = "Budd-daliadau"; +$LANG["word_blue"] = "Glas"; +$LANG["word_cancel"] = "Diddymu"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Blychau"; +$LANG["word_checklist"] = "Rhestr Wirio"; +$LANG["word_client"] = "Cleientiaid"; +$LANG["word_client_c"] = "Cleient:"; +$LANG["word_clients"] = "Cleientiaid"; +$LANG["word_close"] = "Close"; +$LANG["word_code"] = "Côd"; +$LANG["word_column"] = "Colofn"; +$LANG["word_columns"] = "Colofnau"; +$LANG["word_columns_sp"] = "Colofn (au)"; +$LANG["word_complete"] = "Cwblhau"; +$LANG["word_configuration"] = "Ffurfweddu"; +$LANG["word_content"] = "Cynnwys"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Parhau »"; +$LANG["word_copy"] = "Copi"; +$LANG["word_custom"] = "Custom"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Dyddiad"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Dileu"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Uniongyrchol"; +$LANG["word_disabled"] = "Anabl"; +$LANG["word_documentation"] = "Dogfennaeth"; +$LANG["word_done"] = "Wedi'i wneud"; +$LANG["word_drawbacks"] = "Anfanteision"; +$LANG["word_dropdown"] = "Gwymplen"; +$LANG["word_edit"] = "Golygu"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "E-bost"; +$LANG["word_email_c"] = "E-bost:"; +$LANG["word_emails"] = "Negeseuon e-bost"; +$LANG["word_enabled"] = "Enabled"; +$LANG["word_equals"] = "Yn dychwelyd"; +$LANG["word_error"] = "Gwall"; +$LANG["word_error_c"] = "Gwall:"; +$LANG["word_examples_c"] = "Enghreifftiau:"; +$LANG["word_external"] = "Allanol"; +$LANG["word_fail"] = "Methu"; +$LANG["word_field"] = "Maes"; +$LANG["word_field_sp"] = "Field (au)"; +$LANG["word_fields"] = "Meysydd"; +$LANG["word_fields_sp"] = "Maes (au)"; +$LANG["word_file"] = "Ffeil"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Ffeiliau"; +$LANG["word_filters"] = "Hidlyddion"; +$LANG["word_filters_sp"] = "Filter (au)"; +$LANG["word_for"] = "ar gyfer"; +$LANG["word_form"] = "Ffurflen"; +$LANG["word_form_c"] = "Ffurflen:"; +$LANG["word_formatting"] = "Fformatio"; +$LANG["word_forms"] = "Ffurflenni"; +$LANG["word_found"] = "Wedi ei ddarganfod"; +$LANG["word_from"] = "O"; +$LANG["word_from_c"] = "From:"; +$LANG["word_general"] = "Cyffredinol"; +$LANG["word_green"] = "Gwyrdd"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Uchder"; +$LANG["word_help"] = "Help"; +$LANG["word_hidden"] = "Cudd"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Llorweddol"; +$LANG["word_hour"] = "Awr"; +$LANG["word_hours"] = "Oriau"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Delwedd"; +$LANG["word_incomplete"] = "Anghyflawn"; +$LANG["word_install"] = "Gosod"; +$LANG["word_installation"] = "Gosod"; +$LANG["word_internal"] = "Mewnol"; +$LANG["word_language"] = "Iaith"; +$LANG["word_large"] = "Mawr"; +$LANG["word_like"] = "Fel"; +$LANG["word_login"] = "Mewngofnodi"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Prif"; +$LANG["word_medium"] = "Canolig"; +$LANG["word_menu"] = "Dewislen"; +$LANG["word_menus"] = "Bwydlenni"; +$LANG["word_minutes"] = "munud"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modiwl"; +$LANG["word_modules"] = "Modiwlau"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Enw"; +$LANG["word_name_c"] = "Enw:"; +$LANG["word_never"] = "Peidiwch byth â"; +$LANG["word_next_rightarrow"] = "»nesaf"; +$LANG["word_next_step_rightarrow"] = "CAM NESAF »"; +$LANG["word_no"] = "Dim"; +$LANG["word_none"] = "Dim"; +$LANG["word_notes"] = "Nodiadau"; +$LANG["word_notification"] = "Hysbysiad"; +$LANG["word_number"] = "Rhif"; +$LANG["word_off"] = "Off"; +$LANG["word_offline"] = "All-lein"; +$LANG["word_okay"] = "Iawn"; +$LANG["word_on"] = "Ar"; +$LANG["word_online"] = "Ar-lein"; +$LANG["word_operator"] = "Gweithredwr"; +$LANG["word_options"] = "Dewisiadau"; +$LANG["word_orange"] = "Oren"; +$LANG["word_order"] = "Gorchymyn"; +$LANG["word_other"] = "Arall"; +$LANG["word_other_c"] = "Arall:"; +$LANG["word_page"] = "Tudalen"; +$LANG["word_page_c"] = "Tudalen:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Cyfrinair"; +$LANG["word_password_c"] = "Cyfrinair:"; +$LANG["word_pending"] = "Nes"; +$LANG["word_permissions"] = "Caniatadau"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«previous"; +$LANG["word_private"] = "Preifat"; +$LANG["word_public"] = "Cyhoeddus"; +$LANG["word_purple"] = "Porffor"; +$LANG["word_recipient"] = "Derbynnydd"; +$LANG["word_recipient_sp"] = "Derbynnydd (au)"; +$LANG["word_red"] = "Coch"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Gwaredu"; +$LANG["word_remove_uc_leftarrow"] = "«GWARED"; +$LANG["word_reply_to"] = "Ymateb i"; +$LANG["word_reply_to_c"] = "Ymateb i:"; +$LANG["word_required"] = "Angenrheidiol"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Datrys"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rhes"; +$LANG["word_search"] = "Chwilio"; +$LANG["word_searchable"] = "Chwilio"; +$LANG["word_select"] = "Dewis"; +$LANG["word_setting"] = "Gosod"; +$LANG["word_settings"] = "Gosodiadau"; +$LANG["word_show"] = "Dangos"; +$LANG["word_size"] = "Maint"; +$LANG["word_skipped"] = "Skipped"; +$LANG["word_small"] = "Bach"; +$LANG["word_solution"] = "Ateb"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Dechrau"; +$LANG["word_status"] = "Statws"; +$LANG["word_string"] = "Llinyn"; +$LANG["word_subject"] = "Pwnc"; +$LANG["word_subject_c"] = "Pwnc"; +$LANG["word_submenu"] = "Is-ddewislen"; +$LANG["word_submission"] = "Cyflwyno"; +$LANG["word_submissions"] = "Cyflwyniadau"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tab"; +$LANG["word_tabs_sp"] = "Bwyntil (au)"; +$LANG["word_test"] = "Prawf"; +$LANG["word_text"] = "Testun"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Thema"; +$LANG["word_themes"] = "Themâu"; +$LANG["word_time"] = "Amser"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Awgrymiadau"; +$LANG["word_today"] = "Heddiw"; +$LANG["word_truncate_q"] = "Cwtogi maint?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Anhysbys"; +$LANG["word_update"] = "Diweddariad"; +$LANG["word_upgrade"] = "Uwchraddio"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Defnyddiwr"; +$LANG["word_username"] = "Enw Defnyddiwr"; +$LANG["word_username_c"] = "Enw defnyddiwr:"; +$LANG["word_validation"] = "Dilysu"; +$LANG["word_value"] = "Gwerth"; +$LANG["word_value_sp"] = "Gwerth (au)"; +$LANG["word_verified"] = "Wirio"; +$LANG["word_verify"] = "Gwirio"; +$LANG["word_version"] = "Fersiwn"; +$LANG["word_vertical"] = "Fertigol"; +$LANG["word_view"] = "View"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Rhybudd!"; +$LANG["word_warning_c"] = "Warning:"; +$LANG["word_web"] = "Gwe"; +$LANG["word_welcome"] = "Croeso!"; +$LANG["word_width_c"] = "lled:"; +$LANG["word_words"] = "Geiriau"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Melyn"; +$LANG["word_yes"] = "Ydw"; \ No newline at end of file diff --git a/global/lang/da.php b/global/lang/da.php new file mode 100644 index 00000000..47f2b547 --- /dev/null +++ b/global/lang/da.php @@ -0,0 +1,1219 @@ +Advarsel! Du har valgt {\$num_selected_on_page} indlæg på denne side og {\$num_selected_on_other_pages} på andre sider. Vælg en af følgende muligheder:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Advarsel! Du har ikke valgt nogen indlæg på denne side, men du har valgt {\$num_selected_on_other_pages} på andre sider. Bekræft, at du vil slette disse indlæg.
    "; +$LANG["confirm_delete_view"] = "Er du sikker på du vil slette denne opfattelse?"; +$LANG["confirm_refresh_page"] = "Er du sikker på du vil opdatere siden? Dette vil miste eventuelle ændringer, du har lavet."; +$LANG["confirm_save_change_before_redirect"] = "Et eller flere felter er blevet opdateret. Vil du gemme dine ændringer, inden omdirigere?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Er du sikker på du vil Smart Fyld databasen kolonne navne? Dette vil overskrive dine eksisterende værdier."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Denne indstilling automatisk genererer databasen kolonnenavnene baseret på Vis tekst felterne, så indholdet af databasen tabellen er nemmere at læse."; +$LANG["confirm_smart_fill_display_names"] = "Er du sikker på at du vil Smart Udfylde Display navne? Dette vil overskrive dine eksisterende værdier."; +$LANG["confirm_ungroup_option_list"] = "Er du sikker på du vil opdele denne mulighed liste? Alle muligheder vil blive slået i en enkelt, ophæver grupperingen liste."; +$LANG["confirm_uninstall_module"] = "Er du sikker på du vil fjerne dette modul? Alle modul data vil blive tabt."; +$LANG["date_AM"] = "am"; +$LANG["date_Fri"] = "Fre"; +$LANG["date_Friday"] = "Fredag"; +$LANG["date_Mon"] = "Man"; +$LANG["date_Monday"] = "Mandag"; +$LANG["date_PM"] = "pm"; +$LANG["date_Sat"] = "Lør"; +$LANG["date_Saturday"] = "Lørdag"; +$LANG["date_Sun"] = "Søn"; +$LANG["date_Sunday"] = "Søndag"; +$LANG["date_Thu"] = "Tor"; +$LANG["date_Thursday"] = "Torsdag"; +$LANG["date_Tue"] = "Tir"; +$LANG["date_Tuesday"] = "Tirsdag"; +$LANG["date_Wed"] = "Ons"; +$LANG["date_Wednesday"] = "Onsdag"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "August"; +$LANG["date_month_December"] = "December"; +$LANG["date_month_February"] = "Februar"; +$LANG["date_month_January"] = "Januar"; +$LANG["date_month_July"] = "Juli"; +$LANG["date_month_June"] = "Juni"; +$LANG["date_month_March"] = "Marts"; +$LANG["date_month_May"] = "Maj"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Oktober"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Apr"; +$LANG["date_month_short_Aug"] = "Aug"; +$LANG["date_month_short_Dec"] = "Dec"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Må"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Okt"; +$LANG["date_month_short_Sep"] = "Sep"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Bruger kontoen er blevet slettet."; +$LANG["notify_account_updated"] = "Din konto er blevet opdateret."; +$LANG["notify_add_display_values"] = "Tilføj Display Værdier"; +$LANG["notify_admin_menu_updated"] = "Administrationen menuen er blevet opdateret."; +$LANG["notify_admin_theme_overridden"] = "Administratoren tema har været manuelt."; +$LANG["notify_allow_url_fopen_not_set"] = "Desværre, kan denne test ikke kan køre på din webserver. Det kræver allow_url_fopen at være sat til 1 i din php.ini fil. Denne indstilling tillader PHP til at få adgang til filer via en URL, der er nødvendig for at udføre denne test. Du kan teste det manuelt ved at uploade en fil til denne mappe via FTP, og så forsøge at få adgang til det på den webadresse, du har leveret."; +$LANG["notify_change_temp_password"] = "Du skal bare logget ind med en midlertidig adgangskode. Du skal nulstille din adgangskode nu!"; +$LANG["notify_click_to_edit_new_submission"] = "Klik her for at redigere det nye indlæg."; +$LANG["notify_client_account_menus_updated"] = "Kundens konto (r) er blevet opdateret til den {\$menu_name} menuen. Du kan nu slette den menu, der tidligere var forbundet med den konto (s)."; +$LANG["notify_client_account_not_updated"] = "Klient kontoen kunne ikke opdateres."; +$LANG["notify_client_account_themes_updated"] = "Kundens konto (s) er blevet opdateret til den {\$theme} tema. Du kan nu deaktivere det tema, der tidligere var forbundet med den konto (s)."; +$LANG["notify_client_account_updated"] = "Klient kontoen er blevet opdateret."; +$LANG["notify_client_menu_deleted"] = "Kunden menuen er blevet slettet."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Menuen er blevet slettet, men følgende kundekonti nu ikke længere har en menu! Du skal opdatere følgende regnskaber:"; +$LANG["notify_client_menu_updated"] = "Kunden menuen er blevet opdateret."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Beklager, men den menu, du netop har forsøgt at slette allerede bruges af kunderne, der er anført nedenfor. For at slette den menu, du vil først nødt til at tildele klienter til andre menuer. Klik på kundens navn for at redigere, at individuelle hensyn, eller overdrage samtlige konti til en anden menu ved hjælp af dropdown nedenfor."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Beklager, men et af de temaer, du lige har deaktiveret bliver allerede brugt af følgende kundekonti. For at deaktivere det tema, du vil først nødt til at tildele hver klient til et andet tema. Klik på kundens navn for at redigere, at individuelle hensyn, eller overdrage samtlige konti til et tema ved hjælp af dropdown nedenfor."; +$LANG["notify_edit_email_fields_link"] = "Klik her for at angive, hvilke formularfelter er e-mail felter, så du kan målrette dem i din e-mail skabeloner."; +$LANG["notify_edit_field_new_field"] = "Dette er et nyt felt. Du skal opdatere den vigtigste side før at være i stand til fuldt ud at redigere dette felt."; +$LANG["notify_edit_option_list_after_save"] = "Du skal vælge en indstilling List og derefter gemme ændringerne, før de kan redigere det."; +$LANG["notify_email_field_config_deleted"] = "Den e-mail-konfigurationen er blevet slettet."; +$LANG["notify_email_fields_not_updated"] = "Vi kunne desværre ikke opdatere den e-mail-felter."; +$LANG["notify_email_fields_updated"] = "Den e-mail felterne er blevet opdateret."; +$LANG["notify_email_not_sent"] = "Beklager, emailen kunne ikke sendes. Kontakt venligst site administrator på nedenstående adresse."; +$LANG["notify_email_not_sent_c"] = "Beklager, kan e-mailen ikke sendes:"; +$LANG["notify_email_sent"] = "Den e-mail (s) er blevet sendt."; +$LANG["notify_email_template_deleted"] = "Den e-mail-skabelon er blevet slettet."; +$LANG["notify_email_template_updated"] = "Den e-mail-skabelon er blevet opdateret."; +$LANG["notify_enabled_module_list_updated"] = "Listen over aktiveret moduler er blevet opdateret."; +$LANG["notify_error_saving_fields"] = "Der opstod en fejl under lagring af felterne."; +$LANG["notify_field_changes_saved"] = "Ændringerne i dit område (r) er blevet gemt."; +$LANG["notify_field_options_smart_filled"] = "Dit område muligheder er blevet Smart fyldt."; +$LANG["notify_field_selected"] = "Feltet er blevet valgt. Klik her for at vende tilbage til det vigtigste listen."; +$LANG["notify_field_updated"] = "Dette felt er blevet opdateret."; +$LANG["notify_file_not_uploaded"] = "Filen kunne ikke uploades."; +$LANG["notify_file_uploaded"] = "Filen blev uploadet korrekt."; +$LANG["notify_filters_not_updated"] = "Der opstod en fejl under opdateringen af denne klients indsendelse filtre."; +$LANG["notify_filters_updated"] = "Indsendelse filtre er blevet opdateret for denne kunde."; +$LANG["notify_folder_correct_permissions"] = "Denne mappe har de korrekte tilladelser."; +$LANG["notify_folder_url_match"] = "Mappen og URL ser ud til at matche korrekt."; +$LANG["notify_folder_url_no_access"] = "Denne test kunne ikke gennemføres, da PHP ikke var i stand til at få adgang til denne URL. Dette skyldes oftest at denne URL er password beskyttet via .htaccess filen."; +$LANG["notify_folder_url_no_match"] = "Denne mappe-URL kombination ser ikke ud til at matche."; +$LANG["notify_folder_url_unknown_error"] = "Der opstod en ukendt fejl. Du kan teste manuelt, ved at uploade en fil til mappen via FTP og derefter prøve at at få adgang via den URL du har angivet."; +$LANG["notify_form_access_type_email_info"] = "Denne form har administrator adgang type, så ingen kunder har adgang til det, og er ikke anført i dropdown nedenfor."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Beklager, men en form med, at ID ikke eksisterer."; +$LANG["notify_form_field_not_added"] = "Form feltet '{\$fieldname}' kunne ikke tilføjes."; +$LANG["notify_form_field_options_updated"] = "Formular felt muligheder er nu opdateret."; +$LANG["notify_form_field_removed"] = "Formular feltet er blevet fjernet."; +$LANG["notify_form_fields_removed"] = "Formular felterne er blevet fjernet."; +$LANG["notify_form_not_updated_notify_admin"] = "Din formular kunne ikke opdateres. Kontakt venligst site administrator for at rapportere dette problem."; +$LANG["notify_form_settings_updated"] = "Dine formular opsætninger er nu opdateret."; +$LANG["notify_form_submission_updated"] = "Den formularafsendelse er blevet opdateret."; +$LANG["notify_form_tabs_updated"] = "Fanerne er blevet opdateret."; +$LANG["notify_form_updated"] = "Formularen er blevet opdateret."; +$LANG["notify_form_views_updated"] = "Skemaet synspunkter er blevet opdateret."; +$LANG["notify_install_invalid_db_info"] = "Beklager, men vi var ude af stand til at forbinde til databasen ved hjælp af de oplysninger, du har angivet. Fejlmeddelelsen databasen tilbage er: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Din form er blevet oprettet! Du kan konfigurere din form gennem disse faner."; +$LANG["notify_invalid_account_information_in_sessions"] = "De kontooplysninger opbevares i sessioner er ugyldig. Log ind igen nedenfor."; +$LANG["notify_invalid_license_key"] = "Beklager, betyder det ikke ud til at være en gyldig licens nøgle. Prøv at indtaste den igen."; +$LANG["notify_invalid_permissions"] = "Du har ikke tilladelser til at se denne side. Du er blevet logget ud."; +$LANG["notify_invalid_search_dates"] = "Brug venligst datepicker at indtaste en gyldig dato eller datoer."; +$LANG["notify_invalid_upload_folder"] = "Upload mappe er enten ugyldig eller ikke er skrivbar."; +$LANG["notify_lang_list_updated"] = "Den tilgængelige UI sprogliste er opdateret."; +$LANG["notify_login_info_emailed"] = "Din login information er blevet mailet til dig."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Ups, er dette modul allerede installeret!"; +$LANG["notify_module_installed"] = "Modulet er blevet installeret. Klik her for at vælge modul."; +$LANG["notify_module_list_updated"] = "Modulet listen er blevet opdateret."; +$LANG["notify_module_uninstalled"] = "Modulet er blevet fjernet."; +$LANG["notify_module_updated"] = "Den {\$module} er blevet opdateret til {\$version}. Klik her for at vælge modulet ."; +$LANG["notify_multi_field_selected"] = "Feltet er blevet valgt. Klik her for at se og redigere feltet muligheder."; +$LANG["notify_multi_field_updated"] = "Dette felt er blevet opdateret. Du vil være i stand til at konfigurere det område, efter oprettelse af formularen."; +$LANG["notify_multiple_fields_found"] = "Flere elementer, der blev fundet med dette område navn ({\$field_name}). Dette kan forekomme, hvis din side indeholder mere end én form, eller hvis du ved et uheld navngivet en af dine formularer det samme som et andet. Vælg venligst den, du ønsker fra listen nedenfor."; +$LANG["notify_new_default_view_created"] = "En ny, default Vis som indeholder alle dine formularfelterne er blevet oprettet."; +$LANG["notify_new_submission_created"] = "Indsendelsen er blevet oprettet. Du kan redigere den nedenfor."; +$LANG["notify_no_account_id_in_sessions"] = "Ingen brugerkonto ID blev fundet i sessioner. Log ind igen nedenfor."; +$LANG["notify_no_api_installed"] = "Du har ikke API installeret"; +$LANG["notify_no_client_permissions"] = "Der er ingen indstillinger tilgængelige for at redigere."; +$LANG["notify_no_email_template_selected"] = "Vælg den e-mail-skabelon."; +$LANG["notify_no_emails_defined"] = "Ingen e-mails er blevet defineret for denne formular. At tilføje et nyt ved at klikke på knappen nedenfor."; +$LANG["notify_no_field_settings"] = "Dette felt typen indeholder ingen ekstra indstillinger."; +$LANG["notify_no_fields_in_tab"] = "Denne fane indeholder ikke nogen områder."; +$LANG["notify_no_option_lists"] = "Der er ingen mulighed definerede lister. Klik på knappen nedenfor for at oprette en ny."; +$LANG["notify_no_test_submission"] = "Form Tools har ikke modtaget en vellykket test indsendelse endnu."; +$LANG["notify_no_user_email_fields_configured"] = "Bemærk: Hvis du ønsker at sende en e-mail til en e-mail-adresse, der var inkluderet i den form, skal du først konfigurere den form e-mail felter."; +$LANG["notify_no_views"] = "Din form ikke har nogen Visninger sat op! Du skal bruge mindst en visning for at styre din formular data."; +$LANG["notify_no_views_assigned_to_client_form"] = "Det ser ud til, at din brugerkonto ikke har fået tildelt nogen form meninger, så du vil ikke kunne se nogen data. Kontakt venligst administratoren for at få yderligere hjælp."; +$LANG["notify_no_views_defined"] = "Du behøver ikke have nogen Visninger defineret. Du vil ikke være i stand til at se denne form, har hævdet, medmindre mindst en View er oprettet. Klik på knappen nedenfor for at oprette standard-visning."; +$LANG["notify_option_list_deleted"] = "Valglisten er blevet slettet."; +$LANG["notify_option_list_updated"] = "Valglisten er blevet opdateret."; +$LANG["notify_public_form_omit_list_updated"] = "Kunden udelade listen for denne form er blevet opdateret."; +$LANG["notify_public_view_omit_list_updated"] = "Kunden udelade listen for denne opfattelse er blevet opdateret."; +$LANG["notify_required_admin_pages"] = "De følgende sider er beskrevet i administrator-menuen: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Beklager, der ikke var nogen aktivitet i et stykke tid, så vi var nødt til at logge dig ud. Log ind igen nedenfor."; +$LANG["notify_setup_options_updated"] = "Setup mulighederne er blevet opdateret."; +$LANG["notify_smart_fill_field_not_found"] = "Vi var ikke i stand til at finde et område med dette navn ({\$field_name}) i form (r). Du kan enten manuelt indstille felttype nedenfor, eller klik på knappen for at redigere dette felt senere."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Your file (r) blev overført korrekt. Prøv at klikke på Smart Fyld knappen for at prøve igen. Hvis dette trin mislykkes, skal du springe dette trin og konfigurere dine formularfelter manally senere."; +$LANG["notify_smart_fill_submitted"] = "Formularen er indsendt. Afhængig af størrelsen af din form og antallet af feltet muligheder, kan det tage et stykke tid."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Beklager, men en eller flere af de filer, du indtastede kunne ikke blive uploadet. Du bliver nødt til at springe dette trin og konfigurere felterne manuelt."; +$LANG["notify_submission_and_files_deleted"] = "Indsendelse og enhver fil (er) i forbindelse med det blev slettet."; +$LANG["notify_submission_copied"] = "Indsendelsen er blevet kopieret."; +$LANG["notify_submission_copied_edit"] = "Indsendelsen er blevet kopieret. Du kan redigere det nedenfor."; +$LANG["notify_submission_deleted"] = "Fremlæggelse blev slettet med succes."; +$LANG["notify_submission_deleted_with_problems"] = "Fremlæggelse blev slettet, men de følgende problemer opstod under forsøg på at slette følgende fil (er):"; +$LANG["notify_submission_id_not_found"] = "Henvendelses ID blev ikke fundet."; +$LANG["notify_submission_not_updated"] = "Henvendelsen kunne ikke opdateres."; +$LANG["notify_submissions_and_files_deleted"] = "Anbringender og enhver fil (er) i forbindelse med dem blev slettet."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} indlæg er blevet kopieret."; +$LANG["notify_submissions_deleted"] = "Henvendelsen er nu slettet."; +$LANG["notify_submissions_deleted_with_problems"] = "Det indlæg blev slettet, men de følgende problemer opstod under forsøg på at slette følgende fil (er):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Din test email kunne ikke sendes."; +$LANG["notify_theme_cache_folder_not_writable"] = "Dette tema cache mappe er ikke skrivbar. For at sætte dette tema, den {\$folder} mappe skal have fuld læse-skrive-tilladelser."; +$LANG["notify_theme_list_updated"] = "Temaet listen er blevet opdateret."; +$LANG["notify_themes_settings_updated"] = "Dit tema indstillinger er blevet opdateret."; +$LANG["notify_view_deleted"] = "The View er blevet slettet."; +$LANG["notify_view_group_deleted"] = "The View Gruppen er blevet slettet."; +$LANG["notify_view_missing_columns"] = "Ups! Beklager, har denne opfattelse ikke er fuldt oprettet endnu."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klik her for at angive, hvilke felter der skal vises som kolonner på denne side."; +$LANG["notify_view_updated"] = "The View er blevet opdateret."; +$LANG["notify_your_email_sent"] = "Din email blev sendt."; +$LANG["phrase_100_per_page"] = "100 pr side"; +$LANG["phrase_10_per_page"] = "10 per side"; +$LANG["phrase_15_per_page"] = "15 per side"; +$LANG["phrase_1_direct"] = "1. Direkte"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per side"; +$LANG["phrase_25_per_page"] = "25 pr side"; +$LANG["phrase_2_code"] = "2. Kode"; +$LANG["phrase_2_columns"] = "2 kolonner"; +$LANG["phrase_2chars"] = "2 Røddingarter"; +$LANG["phrase_3_columns"] = "3 kolonner"; +$LANG["phrase_4_columns"] = "4 kolonner"; +$LANG["phrase_50_per_page"] = "50 pr side"; +$LANG["phrase_accepting_submissions"] = "(accepterer indlæg)"; +$LANG["phrase_access_admin_account_c"] = "Du kan få adgang til din administration konto her:"; +$LANG["phrase_access_type"] = "Adgang Type"; +$LANG["phrase_account_info"] = "Kontooplysninger"; +$LANG["phrase_account_settings"] = "Kontoindstillinger"; +$LANG["phrase_action_needed"] = "Nødvendige foranstaltninger"; +$LANG["phrase_add_client"] = "TILFØJ BRUGER"; +$LANG["phrase_add_client_menu"] = "Tilføj Client Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Tilføj standardindstillinger »"; +$LANG["phrase_add_field"] = "Tilføj felt"; +$LANG["phrase_add_fields"] = "TILFØJ FELTER"; +$LANG["phrase_add_fields_rightarrow"] = "Tilføj Field (s) »"; +$LANG["phrase_add_form"] = "Tilføj Formular"; +$LANG["phrase_add_form_external"] = "Tilføj Form - Ekstern"; +$LANG["phrase_add_form_internal"] = "Tilføj Form - Intern"; +$LANG["phrase_add_new_group_rightarrow"] = "Tilføj ny gruppe »"; +$LANG["phrase_add_num_rows"] = "Tilføj {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Tilføj materialet Button"; +$LANG["phrase_add_view_rightarrow"] = "Tilføj visning »"; +$LANG["phrase_adding_multi_page_form"] = "Tilføjelse af en multi-side form med API"; +$LANG["phrase_adding_single_page_form"] = "Tilføjelse af en enkelt side form med API"; +$LANG["phrase_admin_menu"] = "Administrator Menu"; +$LANG["phrase_admin_only"] = "Administrator Kun"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Avancerede indstillinger »"; +$LANG["phrase_all_X_results_selected"] = "Alle {\$numresults} Resultater Selected"; +$LANG["phrase_all_clients"] = "Alle klienter"; +$LANG["phrase_all_clients_except_c"] = "Alle klienter undtagen:"; +$LANG["phrase_all_clients_have_access"] = "(alle kunder har adgang)"; +$LANG["phrase_all_fields"] = "Alle felter"; +$LANG["phrase_all_fields_displayed"] = "Alle felter vises"; +$LANG["phrase_all_statuses"] = "Alle statusser"; +$LANG["phrase_all_submissions"] = "Alle indlæg"; +$LANG["phrase_allow_fields_edited"] = "Tillad felter, der skal redigeres"; +$LANG["phrase_alphanumeric"] = "Alfanumerisk (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Anvend Tidszone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Tildel alle børsnoterede kundekonti til {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Tildel alle børsnoterede kundekonti til {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Ved udgangen af"; +$LANG["phrase_at_start"] = "Ved start"; +$LANG["phrase_author_link"] = "Forfatteren Link"; +$LANG["phrase_auto_disable_account"] = "Auto-deaktiverer konto efter # mislykkede forsøg"; +$LANG["phrase_auto_size"] = "Auto-størrelse"; +$LANG["phrase_available_clients"] = "Tilgængelige Brugere"; +$LANG["phrase_available_fields"] = "Tilgængelige felter"; +$LANG["phrase_available_option_lists"] = "Tilgængelig valglister"; +$LANG["phrase_available_swatches"] = "Tilgængelig Farveprøver"; +$LANG["phrase_available_swatches_c"] = "Tilgængelige Farveprøver:"; +$LANG["phrase_available_tabs"] = "Tilgængelige faner"; +$LANG["phrase_available_views"] = "Tilgængelige Visninger"; +$LANG["phrase_awaiting_form_submission"] = "Afventer formularafsendelse."; +$LANG["phrase_back_to_field_list"] = "«tilbage til feltet liste"; +$LANG["phrase_back_to_search_results"] = "tilbage til søge resultater"; +$LANG["phrase_base_view_on"] = "Base Vis på ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Skift Login-oplysninger"; +$LANG["phrase_characters_limit_p"] = "tegn grænse."; +$LANG["phrase_check_db_settings_try_again"] = "Vær venlig at dobbelt-tjekke din database indstillinger og klikke på knappen Fortsæt igen."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Tjek URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Ryd Omit List"; +$LANG["phrase_client_account_settings"] = "Client Account Settings"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Klient Kort Filtre »"; +$LANG["phrase_client_may_edit"] = "Klient kan redigere"; +$LANG["phrase_client_menu"] = "Client Menu"; +$LANG["phrase_clients_can_access_form"] = "Kunder, der kan få adgang til skemaet"; +$LANG["phrase_clients_can_access_view"] = "Kunder, der kan få adgang til Se"; +$LANG["phrase_clients_cannot_access_form"] = "Kunder, der ikke kan få adgang til skemaet"; +$LANG["phrase_clients_cannot_access_view"] = "Kunder, der ikke kan få adgang til Se"; +$LANG["phrase_clients_may_edit"] = "Kunder kan redigere"; +$LANG["phrase_code_c"] = "Fejlkode:"; +$LANG["phrase_code_markup_field"] = "Kode / Markup Field"; +$LANG["phrase_code_markup_type"] = "Kode / Markup Type"; +$LANG["phrase_codes_c"] = "Fejlkoder:"; +$LANG["phrase_column_width"] = "Kolonnebredde"; +$LANG["phrase_company_name"] = "Firmanavn"; +$LANG["phrase_configure_form_email_fields"] = "Indstil Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Bekræft Mappe-URL Match"; +$LANG["phrase_connect_rows"] = "Tilslut rækker"; +$LANG["phrase_copy_email_settings_from"] = "Kopier E-mail-indstillinger fra ..."; +$LANG["phrase_copy_settings_from"] = "Kopier indstillinger Fra ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Opret konto"; +$LANG["phrase_create_admin_account"] = "Opret Admin konto"; +$LANG["phrase_create_config_file"] = "Opret konfigurationsfilens"; +$LANG["phrase_create_database_tables"] = "Opret databasetabeller"; +$LANG["phrase_create_default_view"] = "Opret Standard View"; +$LANG["phrase_create_file"] = "Opret File"; +$LANG["phrase_create_group"] = "Opret gruppe"; +$LANG["phrase_create_new_email"] = "Opret ny e-mail"; +$LANG["phrase_create_new_menu"] = "Opret ny menu"; +$LANG["phrase_create_new_option_list"] = "Opret ny valgliste"; +$LANG["phrase_create_new_option_list_group"] = "Opret ny valgliste gruppe"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Opret ny valgliste »"; +$LANG["phrase_create_new_view"] = "Opret ny View"; +$LANG["phrase_create_new_view_group"] = "Opret ny se gruppens"; +$LANG["phrase_custom_display_format"] = "Brugerdefineret Display Format"; +$LANG["phrase_custom_recipient"] = "Custom Modtager"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Mørkeblå"; +$LANG["phrase_data_type"] = "Data Type"; +$LANG["phrase_database_hostname"] = "Database værtsnavn"; +$LANG["phrase_database_name"] = "Database navn"; +$LANG["phrase_database_password"] = "Databaseadgangskoden"; +$LANG["phrase_database_settings"] = "Database Indstillinger"; +$LANG["phrase_database_setup"] = "Database Setup"; +$LANG["phrase_database_table_prefix"] = "Database tabel prefix"; +$LANG["phrase_database_username"] = "Database brugernavn"; +$LANG["phrase_date_format"] = "Dato Format"; +$LANG["phrase_db_column"] = "DB Kolonne"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Standard Client Account Theme"; +$LANG["phrase_default_date_field_search_value"] = "Standard datofeltet søgeværdi"; +$LANG["phrase_default_language"] = "Default Sprog"; +$LANG["phrase_default_menu"] = "Standard Menu"; +$LANG["phrase_default_sessions_timeout"] = "Standard Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Standard Sorterings Orden"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Standard tema"; +$LANG["phrase_default_value"] = "Standardværdi"; +$LANG["phrase_default_values"] = "Standardværdier"; +$LANG["phrase_default_values_new_submissions"] = "Standardværdier for nye indlæg"; +$LANG["phrase_delete_field"] = "Slet Field"; +$LANG["phrase_delete_form"] = "SLET FORMULAR"; +$LANG["phrase_delete_row"] = "Slet række"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Slet tilknyttede filer, når du sletter indsendelse"; +$LANG["phrase_delete_view"] = "Slet Vis"; +$LANG["phrase_disconnect_rows"] = "Afbryd rækker"; +$LANG["phrase_display_email"] = "Display Email"; +$LANG["phrase_display_name"] = "Vis Navn"; +$LANG["phrase_display_text"] = "Vis Tekst"; +$LANG["phrase_display_value"] = "Display Value"; +$LANG["phrase_edit_admin_menu"] = "Rediger Admin Menu"; +$LANG["phrase_edit_client"] = "Rediger Client"; +$LANG["phrase_edit_client_menu"] = "Rediger Client Menu"; +$LANG["phrase_edit_email_template"] = "Rediger E-mail-skabelon"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Rediger formular adgang type]"; +$LANG["phrase_edit_option_list"] = "Rediger Alternativ Liste"; +$LANG["phrase_edit_submission"] = "Ret Henvendelse"; +$LANG["phrase_edit_submission_label"] = "Rediger materialet Label"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email format"; +$LANG["phrase_email_settings"] = "EMAIL OPSÆTNINGER"; +$LANG["phrase_email_template"] = "Email skabelon"; +$LANG["phrase_email_template_name"] = "E-mail-skabelon navn"; +$LANG["phrase_error_learn_more"] = "Læs mere om denne fejl."; +$LANG["phrase_error_text_intro"] = "Ret venligst følgende fejl (r) og send:"; +$LANG["phrase_errors_learn_more"] = "Klik på fejlkoder for at lære mere."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Ydre form"; +$LANG["phrase_external_form_info"] = "Ydre form Info"; +$LANG["phrase_external_your_own_form"] = "Ekstern (din egen form)"; +$LANG["phrase_field_comments"] = "Felt Kommentarer"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Field Options"; +$LANG["phrase_field_size"] = "Felt Størrelse"; +$LANG["phrase_field_skipped"] = "Field Sprunget"; +$LANG["phrase_field_specific_settings"] = "Field-specifikke indstillinger"; +$LANG["phrase_field_type"] = "Felt Type"; +$LANG["phrase_field_type_no_validation"] = "Der er ingen valideringsregler til rådighed for denne felttype."; +$LANG["phrase_field_types"] = "Felttyper"; +$LANG["phrase_field_value"] = "Field Value"; +$LANG["phrase_field_values_to_display_values"] = "Feltværdier »Vis Værdier"; +$LANG["phrase_final_touches_page_6"] = "6. Finpudsning"; +$LANG["phrase_finalize_form"] = "Færdiggør Formular"; +$LANG["phrase_first_name"] = "Fornavn"; +$LANG["phrase_footer_text"] = "Bund Tekst"; +$LANG["phrase_for_any_form_submission"] = "For enhver form for indsendelse"; +$LANG["phrase_for_view_submissions"] = "Kun indlæg, der passer i følgende View (s)"; +$LANG["phrase_forgot_password"] = "GLEMT DIT PASSWORD?"; +$LANG["phrase_form_already_selected"] = "Form allerede er udvalgt"; +$LANG["phrase_form_email_field_b_c"] = "[Form email felt]:"; +$LANG["phrase_form_email_field_configuration"] = "Form Email Field Configuration"; +$LANG["phrase_form_email_fields"] = "Form Email Felter"; +$LANG["phrase_form_field"] = "Formular Felt"; +$LANG["phrase_form_field_contents"] = "Form Field Indhold"; +$LANG["phrase_form_field_name"] = "Formular Felt Navn"; +$LANG["phrase_form_field_placeholders"] = "Formularfelt pladsholdere"; +$LANG["phrase_form_fields"] = "Formularfelter"; +$LANG["phrase_form_info"] = "Form Information"; +$LANG["phrase_form_info_2"] = "2. Form Information"; +$LANG["phrase_form_list"] = "Formular Liste"; +$LANG["phrase_form_name"] = "Formular Navn"; +$LANG["phrase_form_page"] = "Type Side"; +$LANG["phrase_form_placeholders"] = "FORMULAR PRE-DEFINITIONER"; +$LANG["phrase_form_submission"] = "FORMULAR TILFØJELSE"; +$LANG["phrase_form_submissions"] = "Formularer"; +$LANG["phrase_form_type"] = "Type Type"; +$LANG["phrase_form_url"] = "Form URL"; +$LANG["phrase_form_urls"] = "Form URL'er"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formularer henføres til nogen konto"; +$LANG["phrase_forms_page_default_message"] = "Forms side standard besked"; +$LANG["phrase_ft_installation"] = "Form Tools installationsscript"; +$LANG["phrase_full_width"] = "Fuld bredde"; +$LANG["phrase_getting_started"] = "Kom godt i gang"; +$LANG["phrase_global_placeholders"] = "GLOBALE PRE-DEFINITIONER"; +$LANG["phrase_group_name"] = "Gruppe Navn"; +$LANG["phrase_group_options_q"] = "Gruppe muligheder?"; +$LANG["phrase_group_rows"] = "Gruppe rækker"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Fremhæv Farve"; +$LANG["phrase_html_email"] = "HTML E-mail"; +$LANG["phrase_html_template"] = "HTML-skabelon"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Import valgliste »"; +$LANG["phrase_input_length"] = "Input Længde"; +$LANG["phrase_installation_help"] = "Installation Hjælp"; +$LANG["phrase_internal_form"] = "Intern Form"; +$LANG["phrase_ip_address"] = "IP-adresse"; +$LANG["phrase_is_multi_page_form_q"] = "Er det en multi-side form?"; +$LANG["phrase_label_response_placeholders"] = "Label / Svar Pladsholdere"; +$LANG["phrase_large_300px"] = "Stor (300px)"; +$LANG["phrase_large_400px"] = "Stor (400px)"; +$LANG["phrase_last_7_days"] = "Sidste 7 dage"; +$LANG["phrase_last_logged_in"] = "Sidst logget ind"; +$LANG["phrase_last_modified"] = "Sidst ændret"; +$LANG["phrase_last_modified_date"] = "Sidst ændret dato"; +$LANG["phrase_last_name"] = "Efternavn"; +$LANG["phrase_letters_only"] = "Breve Kun"; +$LANG["phrase_light_brown"] = "Lysebrun"; +$LANG["phrase_limit_email_content"] = "Grænse e-mail-indhold til felter i View"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "LOG IND"; +$LANG["phrase_login_as_user"] = "Log ind som denne bruger"; +$LANG["phrase_login_info"] = "Login info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Brugernavn"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Hovedindstillinger"; +$LANG["phrase_manage_client"] = "Vedligehold Klient"; +$LANG["phrase_manage_client_omit_list"] = "Håndter Client Udelad Liste"; +$LANG["phrase_max_file_size"] = "Max Filstørrelse"; +$LANG["phrase_max_length"] = "Max længde"; +$LANG["phrase_max_length_words_chars"] = "- Max længde (ord / tegn)"; +$LANG["phrase_may_add_submissions"] = "Kan tilføje Indsendelser"; +$LANG["phrase_may_copy_submissions"] = "Kan kopiere indlæg"; +$LANG["phrase_may_delete_submissions"] = "Kan slette Indsendelser"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menu Navn"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "Minimum password længde"; +$LANG["phrase_module_description"] = "Modul Beskrivelse"; +$LANG["phrase_module_info"] = "Modul Information"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Måned til dato"; +$LANG["phrase_multi_select"] = "Multi-valg"; +$LANG["phrase_multi_select_dropdown"] = "Multi-valg dropdown"; +$LANG["phrase_multiple_fields_found"] = "Flere felter Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Navn / efternavn"; +$LANG["phrase_new_blank_email"] = "Ny Blank Email"; +$LANG["phrase_new_blank_option_list"] = "Nye Blank valgliste"; +$LANG["phrase_new_blank_view"] = "Ny Blank View"; +$LANG["phrase_new_ft_installation"] = "Ny Form Tools Installation"; +$LANG["phrase_new_option_list"] = "Nye valgliste"; +$LANG["phrase_new_password"] = "Ny adgangskode"; +$LANG["phrase_new_password_reenter"] = "Ny adgangskode (please re-enter)"; +$LANG["phrase_new_view"] = "Ny View"; +$LANG["phrase_new_view_all_fields"] = "Ny visning - Alle felter"; +$LANG["phrase_next_client"] = "næste klient »"; +$LANG["phrase_next_field"] = "næste felt »"; +$LANG["phrase_next_form"] = "næste formular »"; +$LANG["phrase_next_view"] = "næste Vis »"; +$LANG["phrase_no_clients"] = "Ingen kunder"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Intet format"; +$LANG["phrase_no_option_lists_available"] = "Ingen muligheder lister til rådighed."; +$LANG["phrase_no_views"] = "Ingen Visninger"; +$LANG["phrase_no_views_with_filters_p"] = "(Ingen ser med filtre defineret)"; +$LANG["phrase_none_not_recommended"] = "Ingen (ikke anbefalet)"; +$LANG["phrase_not_assigned_to_option_list"] = "Dette felt er ikke tildelt en option liste."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Svarer IKKE Til"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "IKKE Som"; +$LANG["phrase_not_visible_to_client"] = "(ikke synlig for kunden)"; +$LANG["phrase_num_clients_per_page"] = "Ant. Klienter pr. Side"; +$LANG["phrase_num_emails_per_page"] = "Num e-mails pr side"; +$LANG["phrase_num_fields"] = "Antal felter"; +$LANG["phrase_num_forms_per_page"] = "Ant. Formularer pr. Side"; +$LANG["phrase_num_menus_per_page"] = "Num Menuer Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Moduler Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Antal valglister pr side"; +$LANG["phrase_num_options"] = "Antal Optioner"; +$LANG["phrase_num_rows"] = "Antal rækker"; +$LANG["phrase_numbers_only"] = "Tal Kun"; +$LANG["phrase_often_localhost"] = "(ofte "localhost")"; +$LANG["phrase_on_form_submission"] = "Ved formularafsendelse"; +$LANG["phrase_one_char_number"] = "Mindst et tegn er et tal (0-9)"; +$LANG["phrase_one_char_upper"] = "Mindst én karakter er stort"; +$LANG["phrase_one_special_char"] = "Mindst én af {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(kun for bestemte kunder har adgang)"; +$LANG["phrase_open_form_in_dialog"] = "Åbn formular i dialogboksen vindue"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Åbn denne formular på en ny fane / vindue"; +$LANG["phrase_option_list"] = "Alternativ Liste"; +$LANG["phrase_option_list_name"] = "Alternativ Liste Navn"; +$LANG["phrase_option_list_or_contents"] = "Alternativ Liste / Indhold"; +$LANG["phrase_option_lists"] = "Valglister"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Side Overskrifter"; +$LANG["phrase_pass_on"] = "Medtag"; +$LANG["phrase_password_min"] = "Det skal være mindst {\$length} tegn."; +$LANG["phrase_password_one_number"] = "Den skal indeholde mindst ét tal (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Den skal indeholde mindst ét stort bogstav."; +$LANG["phrase_password_requirements_c"] = "Password krav:"; +$LANG["phrase_password_reset"] = "Nulstil adgangskode"; +$LANG["phrase_password_special_char"] = "Den skal indeholde mindst et af følgende tegn: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Tilladelser / Andre indstillinger"; +$LANG["phrase_permitted_file_types"] = "Tilladte filtyper"; +$LANG["phrase_phone_number"] = "Telefonnummer"; +$LANG["phrase_phone_number_format"] = "Telefonnummer Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max tilladt file upload størrelse:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Bedes De bekræfte"; +$LANG["phrase_please_enter_license_key"] = "Indtast venligst din licens nøgle"; +$LANG["phrase_please_select"] = "Vælg Venligst"; +$LANG["phrase_please_select_form"] = "Vælg en form"; +$LANG["phrase_prev_client"] = "«Forrige klient"; +$LANG["phrase_prev_form"] = "«Forrige formular"; +$LANG["phrase_prevent_password_reuse"] = "Undgå genbrug af # sidste passwords"; +$LANG["phrase_previous_field"] = "«forrige felt"; +$LANG["phrase_previous_page"] = "Forrige Side"; +$LANG["phrase_previous_view"] = "«Forrige View"; +$LANG["phrase_program_name"] = "Program Navn"; +$LANG["phrase_public_form_omit_list"] = "Offentlige Formular Omit List"; +$LANG["phrase_public_view_omit_list"] = "Offentlige View Omit List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Der var et problem med følgende forespørgsel:"; +$LANG["phrase_radio_buttons"] = "Radio Knapper"; +$LANG["phrase_random_form_submission"] = "Random formularafsendelse"; +$LANG["phrase_re_enter_password"] = "Password igen"; +$LANG["phrase_recipient_type"] = "Modtagers type"; +$LANG["phrase_redirect_url"] = "Omadresser URL"; +$LANG["phrase_refresh_list"] = "Opdater Liste"; +$LANG["phrase_refresh_module_list"] = "Genopfrisk Modul List"; +$LANG["phrase_refresh_page"] = "OPDATER SIDE"; +$LANG["phrase_refresh_theme_list"] = "Genopfrisk listen Tema"; +$LANG["phrase_register_new_email"] = "Registrer Ny e-mail"; +$LANG["phrase_remaining_characters"] = "resterende tegn"; +$LANG["phrase_remaining_words"] = "resterende ord"; +$LANG["phrase_remove_tabs"] = "Fjern Tabs"; +$LANG["phrase_required_password_chars"] = "Nødvendig password tegn"; +$LANG["phrase_resend_test_submission"] = "GENFREMSEND TEST HENVENDELSE"; +$LANG["phrase_return_form_list"] = "TILBAGE TIL FORMULAR LISTE"; +$LANG["phrase_row_selected"] = "{\$num_rows} valgte række"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rækker udvalgte"; +$LANG["phrase_sample_data"] = "Eksempel Data"; +$LANG["phrase_save_changes"] = "Gem ændringer"; +$LANG["phrase_search_keyword"] = "Søgeord"; +$LANG["phrase_security_settings"] = "Sikkerhedsindstillinger"; +$LANG["phrase_select_all"] = "Vælg alle"; +$LANG["phrase_select_all_X_results"] = "Vælg alle {\$numresults} Resultater"; +$LANG["phrase_select_all_on_page"] = "Vælg Alt På Siden"; +$LANG["phrase_select_date"] = "Vælg dato"; +$LANG["phrase_select_field"] = "Vælg Field"; +$LANG["phrase_select_swatch"] = "Vælg farveprøve"; +$LANG["phrase_selected_clients"] = "Valgte Brugere"; +$LANG["phrase_selected_views"] = "Udvalgte Visninger"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "SEND TEST EMAIL"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Indstilling Værdi"; +$LANG["phrase_setup_options"] = "Opsætnings Muligheder"; +$LANG["phrase_show_all"] = "Vis Alle"; +$LANG["phrase_show_form"] = "Vis Form"; +$LANG["phrase_size_large"] = "Stor (tekst)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 chars)"; +$LANG["phrase_size_small"] = "Små (<= 20 tegn)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 tegn)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Spring Field"; +$LANG["phrase_skip_step"] = "Spring Step"; +$LANG["phrase_small_100px"] = "Lille (100px)"; +$LANG["phrase_small_80px"] = "Lille (80px)"; +$LANG["phrase_smart_fill"] = "SMART UDFYLD"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Udfyld felterne fra:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fyld User Documentation »"; +$LANG["phrase_sort_as"] = "Sorter Som"; +$LANG["phrase_special_fields"] = "Special Fields"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Standard Filtre »"; +$LANG["phrase_step_1"] = "Trin 1"; +$LANG["phrase_step_2"] = "Trin 2"; +$LANG["phrase_step_3"] = "Trin 3"; +$LANG["phrase_step_4"] = "Trin 4"; +$LANG["phrase_step_5"] = "Trin 5"; +$LANG["phrase_step_6"] = "Trin 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tags i form indlæg"; +$LANG["phrase_subject_line"] = "Om Line"; +$LANG["phrase_submission_date"] = "Henvendelses dato"; +$LANG["phrase_submission_id"] = "Henvendelse ID"; +$LANG["phrase_submission_made"] = "Fremført: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Submission Type"; +$LANG["phrase_submissions_per_page"] = "Henvendelser pr. Side"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Du må ikke tilføje validering til systemet felter."; +$LANG["phrase_system_time_offset"] = "System Tids Format"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Mappe Tilladelser"; +$LANG["phrase_test_submission"] = "Test Henvendelse"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test indlæg modtaget"; +$LANG["phrase_text_and_html"] = "Tekst & HTML"; +$LANG["phrase_text_email"] = "Tekst Email"; +$LANG["phrase_text_template"] = "Tekst Skabelon"; +$LANG["phrase_the_previous_month"] = "Den foregående måned"; +$LANG["phrase_theme_description"] = "Tema Beskrivelse"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Resultater Ialt:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Fravælg Alt"; +$LANG["phrase_update_accounts"] = "Update Konti"; +$LANG["phrase_update_email_template"] = "Opdater e-mail skabelon"; +$LANG["phrase_update_field"] = "Opdater felt"; +$LANG["phrase_update_order"] = "Opdater Bestil"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Upload fil"; +$LANG["phrase_upload_files"] = "Upload filer"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Upload mappe sti"; +$LANG["phrase_upload_folder_url"] = "Upload mappe URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Brug standardværdi?"; +$LANG["phrase_used_by_num_form_fields"] = "Brugt af # Form Fields"; +$LANG["phrase_uses_swatches"] = "Bruger Farveprøver"; +$LANG["phrase_valid_email"] = "Gyldig e-mail"; +$LANG["phrase_validation_error"] = "Validering Fejl"; +$LANG["phrase_validation_rule"] = "Valideringsregel"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Vis Group"; +$LANG["phrase_view_id"] = "Vis ID"; +$LANG["phrase_view_name"] = "View Navn"; +$LANG["phrase_view_placeholders"] = "Vis Pladsholdere"; +$LANG["phrase_view_submissions"] = "View Submissions"; +$LANG["phrase_view_uploaded_files"] = "se uploadede filer"; +$LANG["phrase_viewing_range"] = "[set {\$startnum} til {\$endnum}]"; +$LANG["phrase_when_sent"] = "Når der sendes"; +$LANG["phrase_when_submission_is_deleted"] = "Når indsendelse er slettet"; +$LANG["phrase_when_submission_is_edited"] = "Når indsendelse er redigeret"; +$LANG["phrase_who_can_access"] = "Hvem kan få adgang til?"; +$LANG["phrase_word_limit_p"] = "ordet grænse."; +$LANG["phrase_year_to_date"] = "År til dato"; +$LANG["phrase_yes_for_all_views"] = "Ja, for alle meninger"; +$LANG["phrase_yes_for_specific_views"] = "Ja, for bestemte meninger"; +$LANG["phrase_your_account"] = "Din konto"; +$LANG["phrase_your_email"] = "Din Email"; +$LANG["phrase_your_email_address"] = "Din email adresse"; +$LANG["processing_form_disabled"] = "Beklager, denne formular er blevet deaktiveret."; +$LANG["processing_form_incomplete"] = "Beklager, men denne form ikke synes at være fuldt oprettes indefra Form Tools. Den mest sandsynlige årsag til dette problem er, at du har fjernet den "form_tools_initialize_form" skjult felt, men ikke fuldføre alle trinnene i "Tilføj Form"-processen.

    Skal du logge ind og revidere den form konfiguration."; +$LANG["processing_init_complete"] = "Tak! Din test indsendelse er blevet sat igennem med succes. Gå tilbage til Formværktøj Administration panelet og klikke på "Opdater"-knappen i bunden af ​​siden Tilføj Form Trin 3 side at afslutte opsætningen af ​​din formular."; +$LANG["processing_invalid_form_id"] = "Beklager, betyder dette ikke synes at være en gyldig form id."; +$LANG["processing_no_form_id"] = "process.php kræver en form id til forarbejdning. Sørg for, at din formular indeholder et skjult felt med navnet "form_tools_form_id" det er forbi langs form id."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Tools er i stand til at afgøre, hvor omdirigere, når de undlader at indtaste CAPTCHA korrekt. Please passere i et skjult felt med navnet form_tools_form_url indeholder URL'en i skemaet."; +$LANG["processing_no_post_vars"] = "process.php modtager ikke noget data. Bemærk: Dette script kan ikke indlæses direkte i din browser.
    Sørg for, at din formular sender via POST."; +$LANG["processing_no_redirect_url"] = "Indsendelsen blev behandlet korrekt, men du ikke har angivet en omdirigering URL for denne form! Rediger dine form i Formværktøj UI og tilsæt omdirigering af webadressen."; +$LANG["special_language"] = "Danish"; +$LANG["special_language_locale"] = "Danish"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Alle nye kundekonti vil blive oprettet med de indstillinger og tilladelser defineret nedenfor. At tilsidesætte en indstilling for en bestemt kunde, redigere kundens konto og besøge deres fanen Indstillinger."; +$LANG["text_add_form_choose_integration_method"] = "Vælg hvilken metode du vil bruge til at integrere din formular med Form Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Denne metode bruger Formværktøj API , der indgår i de vigtigste Formværktøj script. API indeholder en række nyttige funktioner til at gøre arbejdet med at integrere din formular med Formværktøj så enkel som muligt. Der er ingen begrænsninger for, hvordan din form kan forelægges, når du bruger API. Du kan sende indholdet på én gang, eller side for side, og du kan tilføje dine egne server-side validering, CAPTCHA billeder, og du kan vælge at indsende oplysningerne nu, men kun fortælle det til at vise indsendelse i Formværktøj UI på et senere tidspunkt (se Afsluttede partnere afsnit i API hjælpe med dokumentation)."; +$LANG["text_add_form_code_submission_drawbacks"] = "For at indsende din formular data via PHP, skal din form være placeret på samme hjemmeside som denne Formværktøj installation. For det andet, for ikke-tekniske og uerfarne Form Tools brugere, kan denne metode være lidt skræmmende i starten. Men der er masser af dokumentation til at hjælpe dig ud, herunder to simple tutorials til at integrere din single-og multi-side er (disse er knyttet til på et senere trin)."; +$LANG["text_add_form_direct_submission_benefits"] = "Dette er den enkleste måde at indsende din form til Form Tools. Det kræver ikke noget kendskab til PHP og kræver kun en meget lille ændring i din form. It's great for mindre former, hvor du bare ønsker at indsende oplysningerne til databasen så omdirigerer brugeren til en "tak" side."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Denne indsendelse Metoden er meget enkel at bruge, men giver ikke meget kontrol for mere komplicerede former. Multi-side blanketter eller formularer, der kræver server-side validering er bedre egnet til den anden metode: afsendelse via formularen Tools API."; +$LANG["text_add_form_field_types1"] = "Næsten færdig! Denne side forsøger at finde alle dine formularfelter og bestemme deres felttyper. Klik på Smart Fill-knappen til højre for at komme i gang. Du får kun lov til at fortsætte, når alle tiltag er blevet løst - problemer, der kræver din opmærksomhed vises i "Action Needed "-kolonnen."; +$LANG["text_add_form_field_types2"] = "Hvis din form ikke er i HTML, skal du klikke på Spring over trin-knappen for at fortsætte. Dette kan alle være konfigureres senere."; +$LANG["text_add_form_field_types3"] = "Dette genindlæser indholdet af din formular (r). Bemærk: dette vil overskrive de ændringer, du har lavet på denne side."; +$LANG["text_add_form_field_types4"] = "Hvis du løber ind i problemer, klik her for at springe dette trin over. Alle uløste felter er indstillet til at bruge standardværdierne. Du kan tilpasse disse felter senere."; +$LANG["text_add_form_field_types_manual_upload"] = "Hvis du har været ude af stand til Smart Udfyld dine felter, kan du prøve en alternativ løsning: uploade kopier af dine formularer i felterne nedenfor."; +$LANG["text_add_form_field_types_manual_upload2"] = "Bemærk: Du må ikke uploade rå PHP-sider (eller anden server-side kode) - bare uploade HTML-versioner. For at få dette, se og gemme den side fra din webbrowser."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Der var flere felter, der ikke kunne findes i form side, du har angivet. Dette er mest sandsynligt forårsaget af en af ​​følgende:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Du har indtastet en eller flere af form webadresserne på dine flersidede formular forkert."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "En eller flere sider af din form er beskyttet med adgangskode og scriptet ikke kunne få adgang til siden."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Du forkert indtastet din formular webadresse."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klik her for at vende tilbage til formularen, for at kontrollere dine indstillinger."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Du har ændret din form (s) efter at testen indsendelse"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klik her for at sætte gennem en anden test underkastelse."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Din form er beskyttet med adgangskode og scriptet ikke kunne få adgang til siden."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "I en anden fane / vindue i denne browser, skal du logge ind på din form, og klik derefter på Opdater Page knappen nedenfor for at forsøge at genfinde markerne."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Hvis ingen af ovenstående løsninger virker, kan du også lyst til at prøve manuelt at uploade dine former for behandling ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Der var flere felter, der ikke kunne findes i form sider, du har angivet. Dette er mest sandsynligt forårsaget af en af ​​disse:"; +$LANG["text_add_form_help_link"] = "Hvis du løber ind i nogen problemer i løbet af disse trin, så prøv at læse ud af brugerdokumentation ."; +$LANG["text_add_form_step_1_text_1"] = "De følgende sider fører dig gennem de trin for at konfigurere Form Værktøjer til at gemme dine formularer. Før du fortsætter, skal du kontrollere, at:"; +$LANG["text_add_form_step_1_text_2"] = "Deres form er allerede blevet oprettet, og det er tilgængeligt via en web-adresse (localhost er fint)"; +$LANG["text_add_form_step_1_text_3"] = "er i stand til at redigere din formular"; +$LANG["text_add_form_step_2_para_2"] = "Åben din formular i en editor efter eget ønske og skift dit formular tag til det følgende, inklusive de to skjulte felter."; +$LANG["text_add_form_step_2_para_3"] = "Dernæst skal du åbne formularen i en webbrowser. Udfyld alle områder og forelægger det. Efter indsendelse, bør du se en meddelelse. Når denne meddelelse vises, vende tilbage til denne side og klikke på refresh knappen nedenfor. Når denne proces er gennemført, vil du se en fortsat knap nedenfor, tager dig til det næste trin."; +$LANG["text_add_form_step_2_para_6"] = "I din formularafsendelse, omfatter følgende værdier. De kan sættes direkte via PHP eller gik langs gennem selve formularen. Nedenfor er eksempler på hver. Den (\$ varname) er en hash (eller associativ array) af alle formularafsendelse oplysninger - dette er normalt (\$ postvar) eller (\$ sessionvar) variabel, men det kan være specialbygget."; +$LANG["text_add_form_step_2_text_2"] = "Indtast webadressen for din "tak " side her. Det er her du vil have folk til at blive rettet til efter formularen er indsendt."; +$LANG["text_add_form_step_3_para_1"] = "Denne side lister alle felter i din form indsendelse. Please undersøge hvert felt, og fjerne enhver, at du ikke behøver gemt for hver indgivelse. Hvis du sletter et gyldigt område ved et uheld, eller ønsker at ændre de oplysninger, der lagres af din form, vende tilbage til den forrige side til at sende en ny test indsendelse."; +$LANG["text_add_form_step_3_para_2"] = "Bemærk: Hvis du sender flere værdier ved hjælp af afkrydsningsfelter eller en multi-vælg feltet, skal du sørge for dit område navn ender med [] tegn (se brugeren dokumentationen for mere information)."; +$LANG["text_add_form_step_3_text_1"] = "Her er hvor det sjove begynder! På dette tidspunkt er Formværktøj venter på en test indsendelse af din form. Det vil bruge denne formularafsendelsen at vide, hvilke oplysninger der skal lagres i databasen."; +$LANG["text_add_form_step_3_text_2"] = "ved at pege din form til Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "ved hjælp af formular Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Til at bidrage til at integrere din form, foreslår vi, at du læser en af de følgende vejledninger:"; +$LANG["text_add_form_step_3_text_5"] = "De forklarer, hvordan man opsætter din formular som forberedelse til test indsendelse, og indeholde andre oplysninger, der kan være til hjælp. Den linje af PHP skal du behøver er:"; +$LANG["text_add_form_step_3_text_6"] = "Dette sikrer, at data bliver sendt til formular Tools. Når du har lagt gennem din test indsendelse, skal du klikke på knappen nedenfor."; +$LANG["text_add_form_step_3_text_7"] = "På den side, før din endelige "tak"-side, skal du huske at tilføje følgende parameter til \$ params variabel:"; +$LANG["text_add_form_step_5_para_1"] = "Databasen er blevet oprettet for at for at denne form og form er blevet aktiveret til brug. Hvis du har foretaget indberetning ved at pege din form til process.php, bedes du vende tilbage til din form og fjerne de følgende skjult felt:"; +$LANG["text_add_form_step_5_para_2"] = "Så besøg din "tak" for at tømme sessioner. Når dette er gjort, vil alle nye formularer behandles og lagres af formværktøjer. Prøv at lave et indlæg eller to til at kontrollere de oplysninger, der er alle uploade korrekt."; +$LANG["text_add_form_step_5_para_3"] = "Hvis du ønsker at finjustere din form for muligheder såsom auto-emailing, tilføje ekstra formularfelter område, eller at tilpasse form felttyper, kan du redigere din formular på noget tidspunkt."; +$LANG["text_add_form_step_5_para_4"] = "Da din form indeholder fil upload felter, bliver du nødt til at konfigurere hver enkelt felt til at angive den fil upload mappe, hvilke filer der er tilladt og. Dette kan findes på fanen Skærm af redigere formularen side."; +$LANG["text_add_form_step_5_para_5"] = "Hvis henvendelsen blev sendt via API, ændre ft_api_init_form_page linje på den første side i din form til:"; +$LANG["text_add_submission_button"] = "Tilføj materialet Knappen vises kun for synspunkter, der er den "kan tilføje indlæg " er indstillet til "ja "."; +$LANG["text_admin_email_placeholder_info"] = "Dette er den e-mail-adresse på den formular Tools administrator, er defineret i dine kontoindstillinger. Dette kan kun udgange e-mail-adresse, så hvis du ønsker at bruge som et HTML-link, skal du pakke det i en <a>-tag, som så:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Også den standard login-side tema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Først skal du vælge din type."; +$LANG["text_client_form_page"] = "Denne side viser alle de former og meninger tildelt denne klient. Tip: for at få dem til at se en form argumenter, de har brug for at blive tildelt mindst én View."; +$LANG["text_client_map_filters_desc1"] = "Client Kort filtre kan du begrænse de indlæg, der vises i denne visning ved at kortlægge de værdier i en form felt til værdier i en kundes konto."; +$LANG["text_client_no_forms"] = "Du har i øjeblikket ingen formularer tilgængelige for gennemsyn."; +$LANG["text_client_welcome"] = "Velkommen! Dette program gemmer alle oplysninger, som besøgende på dit websted. For at se indlæg til en særlig form blot klikke på linket Vis eller se længst til venstre navigationsmenu til andre muligheder."; +$LANG["text_config_file_created"] = "Din config.php fil er blevet oprettet."; +$LANG["text_config_file_not_created"] = "Vi kunne ikke oprette din config.php fil. Du bliver nødt til at oprette filen manuelt."; +$LANG["text_config_file_not_created_instructions"] = "Kopier og indsæt indholdet fra afsnittet nedenfor i en fil kaldet config.php og upload det via FTP til den Form Tools / globale mappe (den mappe, der også indeholder et par andre filer og mapper, en fil kaldet library.php)."; +$LANG["text_confirm_delete_form"] = "Ja, jeg vil slette denne formular"; +$LANG["text_create_admin_account"] = "Nu skal vi til at skabe administrator konto. Dette bruges til at forvalte alle aspekter af formværktøjer, såsom at tilføje former og skabe kundekonti."; +$LANG["text_create_new_client_account"] = "Brug formularen nedenfor for at oprette en ny kundekonto. Alle felter skal udfyldes."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "se PHP {\$datefunctionlink} funktion for inddataformater"; +$LANG["text_default_file_settings_page"] = "Denne side definerer fil sende indstillingerne for din formular Tools installation. Disse regler gælder for alle filer, der uploades via formularen Tools, medmindre der udtrykkeligt vige for en individuel form felt. Bemærk: Hvis du ændrer upload mappe efter filer er blevet uploadet, vil de automatisk flyttet til den nye mappe."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Før du fortsætter, skal du opdatere din / themes / default / cachemappen at tillade fuld læse-og skriverettigheder. Når dette er gjort, vil denne besked forsvinder, og du kan installere scriptet."; +$LANG["text_default_values_in_view"] = "Denne sektion er valgfri. Alle indlæg oprettes med denne visning vil indeholde standardværdierne er angivet her."; +$LANG["text_delete_all_forms"] = "Jeg vil slette alle filer som var uploadet sammen med denne formular"; +$LANG["text_delete_form_warning"] = "Er du sikker på at du vil slette denne formular? Denne handling kan ikke fortrydes. Alle data vil være permanent slettet!"; +$LANG["text_edit_admin_menu_page"] = "Du kan redigere din menuen nedenfor. At sikre, at du altid har adgang til alle funktioner tilgængelige inden Form Tools, de følgende sider er påkrævet: Forms, Kunder, din konto, Moduler, Indstillinger og Log af."; +$LANG["text_edit_client_menu_page"] = "Dette afsnit kan du tilpasse den venstre navigations-kolonne for hver bruger. Du kan oprette lige så mange klient menuer, som du ønsker og tildele en konto til en af dem. Som standard er der to menuer: en for dig som administrator, og en for alle kundekonti. Administrator konto kan blive ændret, men ikke fjernes."; +$LANG["text_edit_tab_summary"] = "Hvis du ønsker at gruppere denne Vis er felter i faner, skal du blot indtaste fanen navne nedenfor. Når du er færdig, skal du vælge den relevante fane for hvert felt gruppe i fanen Felter ."; +$LANG["text_edit_view_list_page"] = "Denne fane kontrollerer, hvilke felter der vises som kolonner på materialet oversigt side, og et par yderligere indstillinger for disse områder. Bemærk: Vi anbefaler at du tilføjer ikke mere end 4 eller 5 af de vigtigste felter i visningen."; +$LANG["text_email_settings_intro"] = "På denne side kan du identificere, hvilke af dine formularfelter gemme e-mails og deres tilsvarende navne. Når du definere dem her, kan du bruge dem i din e-mail-skabeloner som modtagere. Dette afsnit er helt valgfrit."; +$LANG["text_email_tab_summary"] = "Dette afsnit kan du konstruere et antal e-mails skal sendes, når formularen er sendt, og andre udløsere."; +$LANG["text_email_template_tab"] = "Dette afsnit kan du bestemme, hvilket indhold der vises i e-mailen. Hvis du ønsker at sende din e-mail, som kun tekst eller e-mail, kun indtaste en værdi for denne sektion. Hvis du indtaster en værdi for begge, vil e-mailen blive sendt i begge formater."; +$LANG["text_email_template_text_1"] = "Der har været et indlæg via din form, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Der har været et indlæg via din form, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Tak for din henvendelse!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Fejlmeddelelse at vise, hvis feltet ikke valideringen"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Ydre former er former, der allerede findes på din hjemmeside, eller et sted på nettet. Vælg denne mulighed, hvis du har din egen form, som du gerne vil integrere med Formværktøj."; +$LANG["text_fields_tab_summary"] = "Denne side viser alle dine formularfelter. For at styre, hvordan de ser ud, når du browser indlæg, se Visninger fanen . Sletning af et felt på denne side vil slette den fra alle indlæg, så vær forsigtig!"; +$LANG["text_file_extension_info"] = "Indtast fil endelser separeret af komma (f.eks. jpg,gif,png) eller lad feltet være blankt for at tillade alle filtyper."; +$LANG["text_file_field_placeholders_info"] = "Fil felter har to specielle pre-definitioner: FILEURL og FILENAME. FILEURL er den fulde URL til filen, så du kan linke direkte i dine emails; FILENAME er bare filnavnet."; +$LANG["text_filters_page"] = "Kun de indlæg, der opfylder de regler, du definerer nedenfor vises i denne visning."; +$LANG["text_filters_tips"] = "For tips om, hvordan du bruger indsendelse filtre, se User Documentation."; +$LANG["text_forgot_password"] = "Intet problem. Bare indtast dit brugernavn nedenfor og dine login-oplysninger vil blive sendt til din e-mail adresse. Hvis du har glemt dit brugernavn, kan du kontakte webstedets administrator på {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Denne formular indeholder et eller flere fil upload felter:"; +$LANG["text_form_placeholder_info"] = "Følgende pladsholdere kan bruges i enhver e-mail-skabelon og sprog pladsholder område, uanset hvilke se e-mail skabelonen er tildelt til. De SPØRGSMÅL pladsholdere er den særlige form spørgsmålet; SVARET pladsholderne er svarene på hvert spørgsmål."; +$LANG["text_form_submission_date_placeholder"] = "Den dato, hvor indgivelse blev foretaget."; +$LANG["text_form_tools_form_url"] = "Den fulde URL af formen. Dette har kun en værdi for ydre former."; +$LANG["text_form_tools_login_url"] = "Login URL til Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Bemærk: Denne formular har i øjeblikket Administrator adgang type, så ingen af kundens konti vil være i stand til at se denne visning."; +$LANG["text_form_view_permission_info_private"] = "Bemærk: denne form i øjeblikket har privat adgang type, så den offentlige og private muligheder her vil være begrænset til den delmængde af kunder."; +$LANG["text_ft_installed"] = "Tillykke, har Form Tools blevet installeret!"; +$LANG["text_global_placeholder_info"] = "Disse pre-definitioner kan bruges i enhver skabelon og formular."; +$LANG["text_group_name_explanation"] = "For områder, som tilføjes via Tilføj Form proces, denne værdi er fyldt til displayet teksten uanset felt bruger værdien. Du kan ønske at ændre den til bedre at karakterisere indholdet."; +$LANG["text_install_create_config_file"] = "Form Værktøjer gemmer din server og database indstillinger i en fil kaldet config.php, der findes i din / global / mappe. Klik på "Opret File"-knappen for automatisk at generere filen på din server."; +$LANG["text_install_create_database_tables"] = "Nu skal vi til at skabe den formular Tools database tabeller. Dette trin kræver selve databasen allerede er blevet skabt. Hvis du ikke er sikker på, hvordan du gør dette, bedes du kontakte din udbyder."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" betyder normalt, at det værtsnavn du angav, er forkert. Måske prøve at sætte denne til "localhost" - dette er en almindelig måde at henvise til den "lokale"-database på en web-server."; +$LANG["text_install_db_tables_error_tip_2"] = ""Kan ikke oprette forbindelse til lokale MySQL-serveren via socket" betyder den database hostname område er igen forkert."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" betyder, at der er et problem med dit brugernavn / password kombination."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... til database ..." betyder, at selv om dit brugernavn og adgangskode, du leverede er korrekt, det ikke var i stand til at forbinde til, at særlig database med denne konto. Dette kan betyde, at enten din database navn er forkert, eller at denne brugerkonto ikke er forbundet med denne database."; +$LANG["text_install_email_content_text"] = "Der er masser af ressourcer på vores hjemmeside for at hjælpe dig med at komme i gang, herunder vores online dokumentation (https://docs.formtools.org) og selvstudier (https://docs.formtools.org/tutorials). Hvis du finder dig fast eller har et spørgsmål, still et spørgsmål på github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Beklager, vil Formværktøj ikke være i stand til at køre på din server. Klik her for minimumskravene."; +$LANG["text_install_system_check"] = "Denne side kører et par test på dit system for at sikre, at det er i stand til at køre Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Intern former eksisterer kun inden Formværktøj - ikke andre steder på dit websted. Kun Formværktøj brugerkonti vil have adgang til formularen. Vælg denne mulighed, hvis du ikke har en eksisterende formular."; +$LANG["text_internal_form_intro"] = "Brug formularen nedenfor for at oprette en ny intern formular. Alle indstillinger, herunder antallet og indholdet af formularfelterne kan ændres og konfigureres senere."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "For at logge ind og bruge Form Tools, skal du have javascript aktiveret i din browser. Aktiver venligst nu, og tryk opdater i din browser."; +$LANG["text_last_modified_date_explanation_c"] = "Den sidste gang denne erklæring blev ændret. For nye indlæg, er dette det samme som:"; +$LANG["text_limit_email_content_desc"] = "Denne indstilling virker kun for HTML og tekst indhold, genereret med Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(kun lister meninger med en eller flere definerede filtre)"; +$LANG["text_log_in_to_ft"] = "Log ind på formular Tools"; +$LANG["text_login"] = "Du skal logge ind nedenfor for at få adgang til (\$ program_navn) Administration Panel. Hvis du har glemt din adgangskode, klik her."; +$LANG["text_login_info"] = "Som ønskes, her er din login information."; +$LANG["text_name_of_form"] = "Navnet på formularen"; +$LANG["text_no_clients"] = "Der er i øjeblikket ingen klienter i databasen. Klik på Tilføj Klient knappen nedenfor for at tilføje en ny Klient konto."; +$LANG["text_no_clients_found"] = "Ingen kunder blev fundet. Prøv at udvide dine søgekriterier."; +$LANG["text_no_fields_in_view"] = "Denne opfattelse synes ikke har nogen felter i det. Klik på linket nedenfor."; +$LANG["text_no_forms"] = "Der er i øjeblikket ingen formularer i databasen. For at tilføje en ny formular, skal du trykke på Tilføj Formular knappen nedenfor."; +$LANG["text_no_forms_found"] = "Ingen former blev fundet."; +$LANG["text_no_forms_found_search"] = "Ingen former blev fundet. Prøv at udvide dine søgekriterier."; +$LANG["text_no_modules_found"] = "Ingen moduler blev fundet. Prøv at udvide dine søgekriterier."; +$LANG["text_no_recipients_added"] = "Ingen modtagere er blevet tilføjet."; +$LANG["text_no_search_results"] = "Der er ingen resultater med denne søgekriterier / View."; +$LANG["text_no_submissions_found"] = "Beklager, ingen indlæg blev fundet."; +$LANG["text_no_themes"] = "Du har ikke nogen defineret temaer. Klik på knappen nedenfor for at opdatere dit tema listen, eller tjek Formværktøj brugerdokumentation for at få oplysninger om tilføjelse af temaer."; +$LANG["text_non_deletable_fields"] = "Dette felt bruges af Core script og kan ikke redigeres eller slettes uden at forårsage uoverensstemmelser. Hvis du ønsker at foretage ændringer af felttypen tage en kopi af det og redigere kopien."; +$LANG["text_option_list_group_explanation"] = "Hvis dette er valgt, det lader til at gruppere dine muligheder. Hvordan grupperne vises, afhænger af felttypen ved hjælp af denne valgliste."; +$LANG["text_option_list_page"] = "Radioknapper, afkrydsningsfelter, rullemenuerne og multi-select dropdown felter, alle giver brugeren flere muligheder, hvorfra de kan vælge ét eller flere elementer. I Form Tools, er disse kendt som valglister. Generelt er disse oprettes automatisk af Tilføj ydre form proces, men du kan manuelt tilføje eller redigere dit valg lister nedenfor, hvis din formular indhold ændres, eller du konstruere felter, der kun bruges internt."; +$LANG["text_option_list_used_by_fields"] = "Denne valgliste bliver brugt af flere formularfelter. Hvis du opdaterer nedenstående oplysninger, vil det blive ændret for alle de felter (se Formularfelter fanen for at se listen over felter). Hvis du ønsker at opdatere værdier for én eller en delmængde af de felter, der aktuelt er tildelt, klik her for at oprette en ny valgliste, med de samme værdier som denne. Derefter kan du tildele formularfelter, du ønsker at den nye gruppe."; +$LANG["text_public_form_omit_list_page"] = "Offentlige former giver dig fordelen af at lade alle kundekonti adgang til dem uden at skulle manuelt at tildele hver klient til dem. På denne side kan du udpege de kunder, der ikke kan få adgang til denne form, selv om den form er markeret som offentlige."; +$LANG["text_public_view_omit_list_page"] = "Offentlige meninger giver dig fordelen af at lade alle kundekonti adgang til dem uden at skulle manuelt at tildele hver klient til dem. På denne side kan du udpege de kunder, der ikke kan få adgang til denne særlige View."; +$LANG["text_reference_tab_info"] = "Denne side viser alle pladsholdere til rådighed for din form. Pladsholdere er strenge, som kan bruges i e-mail skabeloner, og felter markeret med en speciel pladsholder ikon . Når indtastes i et felt, er de dynamisk konverteret til den relevante værdi, når feltet er ses eller e-mailen er sendt."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Revision brugeren dokumentation"; +$LANG["text_send_email_from_edit_submission_page"] = "Indeholde mulighed for at sende denne e-mail fra Edit Submission side"; +$LANG["text_smart_fill_option_list_problem"] = "Vi var ude af stand til Smart Fyld dit område muligheder. Men som et alternativ, kan du prøve at uploade en kopi af din formular side i feltet nedenfor. Bemærk: Du må ikke uploade rå PHP-sider (eller anden server-side kode) - bare uploade HTML-version. For at få dette, se og gemme den side fra din webbrowser."; +$LANG["text_submission_ip_address"] = "IP-adressen på den bruger, der har foretaget indberetning."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Brug formularen nedenfor til enten at se eller sende dig en e-mail genereret fra denne e-mail-skabelon. Den e-mail er kun sendt til den e-mail er angivet nedenfor, de vigtigste, cc-og bcc e-mail-adresse modtagerne bliver ignoreret, mens testning."; +$LANG["text_test_email_templates_no_submissions"] = "For at teste din email skabelon, skal du først gennemføre mindst en formular henvendelse."; +$LANG["text_theme_page_intro"] = "Denne side viser alle dine temaer. Klik på en miniature for at se et større eksempel på temaet's stilarter. Det "aktive" checkbox afgør, hvorvidt dette tema kan vælges af kunder. At gennemse alle de tilgængelige temaer, skal du besøge Form Tools hjemmeside."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Tilføj dit første form!"; +$LANG["text_unique_submission_id"] = "Det unikke henvendelses ID."; +$LANG["text_unused_option_list"] = "Denne indstilling liste er ikke bruges af nogen form felter."; +$LANG["text_upgraded"] = "Din installation er blevet opgraderet til {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Denne valgliste bliver brugt af de følgende felter."; +$LANG["text_view_fields_info"] = "Denne fane kontrollerer, hvilke felter dukke op, når du redigerer et manuskript i denne visning, deres rækkefølge og om de kan redigeres eller ej."; +$LANG["text_view_tab_summary"] = "Dette faneblad kan du oprette forskellige måder at gruppere og arrangere dine data. Visninger kan du oprette brugerdefinerede delmængder af din formular data til dele det op i overskuelige bidder, og til at begrænse, hvad kunderne kan se eller redigere."; +$LANG["validation_account_disabled"] = "Beklager, din konto er blevet de-aktiveret."; +$LANG["validation_account_not_recognized"] = "Beklager, dette brugernavn kan ikke genkendes."; +$LANG["validation_account_not_recognized_info"] = "Beklager, brugernavnet blev ikke fundet. Prøv venligst igen, eller kontakt eller kontakt administrator på nedenstående adresse."; +$LANG["validation_account_pending"] = "Din brugerkonto er afventer godkendelse af en administrator."; +$LANG["validation_check_delete_client"] = "Er du sikker på at du vil slette denne klient konto?"; +$LANG["validation_client_password_missing_number"] = "Klienten password skal indeholde mindst ét tal (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Klienten password skal indeholde mindst én af følgende tegn: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Klienten password skal indeholde mindst ét stort bogstav."; +$LANG["validation_client_password_too_short"] = "Klienten adgangskode skal være mindst {\$number} tegn."; +$LANG["validation_col_name_is_reserved_word"] = "Beklager, denne database kolonne navn er et reserveret arbejde i MySQL. Please omdøbe det!"; +$LANG["validation_db_name"] = "Databasenavne må ikke indeholde perioder eller skråstreger."; +$LANG["validation_db_not_updated_invalid_input"] = "Databasen kunne ikke opdateres. Check venligst om værdierne du skrev er gyldige."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Beklager, skal standard administrator og klient temaer altid være aktiveret."; +$LANG["validation_default_phone_num_required"] = "Udfyld det fulde telefonnummer på den <b> { \$ felt} </ b> - numre."; +$LANG["validation_default_rule_alpha"] = "Venligst kun indtaste bogstaver og tal til <b> { \$ felt} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Venligst kun indtaste bogstaver for <b> { \$ felt} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Venligst kun at indtaste tal for <b> { \$ felt} </ b>."; +$LANG["validation_default_rule_required"] = "Angiv en værdi for <b> { \$ felt} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Indtast venligst en gyldig email-adresse til <b> { \$ felt} </ b>."; +$LANG["validation_delete_form_confirm"] = "Venligst feltet for at bekræfte, at du ønsker at slette denne formular."; +$LANG["validation_delete_non_empty_option_list"] = "Advarsel! Denne valgliste bliver brugt af en eller flere formularfelter. Sletning af det vil gøre disse områder ophøre med at fungere korrekt."; +$LANG["validation_display_names_incomplete"] = "Angiv en værdi for alle de viste navne, eller klik på Smart Fyld mulighed for at indtaste dem dynamisk."; +$LANG["validation_duplicate_form_field_name"] = "Man kan ikke have flere felter med det samme feltnavn."; +$LANG["validation_email_not_found_or_invalid"] = "Beklager, men den e-mail tilknyttet din konto enten ikke findes eller er ugyldig."; +$LANG["validation_folder_invalid_permissions"] = "For at kunne køre denne test, skal tilladelserne for din upload mappe være sat til at tillade læsning og skrivning af filer (f.eks. 777 for Unix)"; +$LANG["validation_folder_not_writable"] = "Der kan ikke skrives i denne mappe."; +$LANG["validation_internal_form_too_many_fields"] = "Beklager, kan du kun skabte former med 1000 felter eller mindre."; +$LANG["validation_invalid_admin_email"] = "Angiv en gyldig adminstrator's e-mail-adresse."; +$LANG["validation_invalid_admin_username"] = "Dit brugernavn kan kun bestå af alfanumeriske tegn (AZ og 0-9)."; +$LANG["validation_invalid_client_username"] = "Kundens brugernavn kan kun bestå af alfanumeriske tegn (AZ og 0-9)."; +$LANG["validation_invalid_client_username2"] = "Beklager, brugernavn's må kun indeholde bogstaver, tal og understregningstegn. Angiv et nyt brugernavn."; +$LANG["validation_invalid_column_name"] = "Kolonne navne kan kun alfanumeriske (AZ, 0-9). Husk at tjekke kolonnenavne."; +$LANG["validation_invalid_custom_from_email"] = "Angiv en gyldig brugerdefineret 'Fra' e-mail-adresse."; +$LANG["validation_invalid_custom_reply_to_email"] = "Angiv en gyldig brugerdefineret 'Svar til' e-mail-adresse."; +$LANG["validation_invalid_default_sessions_timeout"] = "Angiv en gyldig værdi (et tal) for standard-sessioner timeout."; +$LANG["validation_invalid_email"] = "Indtast venligst en gyldig email adresse."; +$LANG["validation_invalid_email_id"] = "Beklager, det er en ugyldig e-mail-id."; +$LANG["validation_invalid_folder"] = "Beklager, at dette ikke synes at være en gyldig mappe."; +$LANG["validation_invalid_form_field_names"] = "Formularfelter kan kun være alfanumeriske og understregninger (AZ, 0-9, _), uden mellemrum."; +$LANG["validation_invalid_num_clients_per_page"] = "Indtast kun tal i Ant. Klienter pr. Side feltet."; +$LANG["validation_invalid_num_emails_per_page"] = "Du kun indtaste cifre for e-mails pr side."; +$LANG["validation_invalid_num_form_fields"] = "Venligst kun indtaste tal i det antal felter felt."; +$LANG["validation_invalid_num_forms_per_page"] = "Skriv venligst kun tal i Ant. Formularer pr. Side feltet."; +$LANG["validation_invalid_num_menus_per_page"] = "Du kun indtaste cifre til menuerne på hver side."; +$LANG["validation_invalid_num_modules_per_page"] = "Vær venlig kun at indtaste tal i Num Moduler Per Page felt."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Venligst kun indtaste tal i Antal valglister Per side felt."; +$LANG["validation_invalid_num_submissions_per_page"] = "Indtast venligst et gyldigt antal af henvendelser pr. side."; +$LANG["validation_invalid_sessions_timeout"] = "Angiv en gyldig session timeout (heltal kun!)."; +$LANG["validation_invalid_tab_assign_values"] = "Vær venlig kun at indtaste tal i 'fra' og 'til' felter."; +$LANG["validation_invalid_table_prefix"] = "Angiv en database prefix består af brev-og understregningstegnet eneste."; +$LANG["validation_invalid_upload_folder"] = "På din server installation af PHP har en ugyldig indstilling for upload_tmp_dir værdi. "{\$upload_folder}" er ikke en gyldig mappe."; +$LANG["validation_invalid_url"] = "Angiv en gyldig webadresse."; +$LANG["validation_invalid_username"] = "Dit brugernavn kan kun bestå af alfanumeriske tegn (AZ og 0-9)."; +$LANG["validation_is_form_active"] = "Marker venligst om formularen er aktiv eller ikke."; +$LANG["validation_menu_name_taken"] = "Beklager, men denne menu er allerede taget. Vælg venligst et nyt navn."; +$LANG["validation_modules_search_no_status"] = "Vælg enten Aktiveret eller Deaktiveret afkrydsningsfelterne."; +$LANG["validation_no_access_type"] = "Indtast venligst adgang type."; +$LANG["validation_no_account_logout_url"] = "Indtast din logout webadresse."; +$LANG["validation_no_account_password_confirmed"] = "Du bedes angive din nye adgangskode."; +$LANG["validation_no_account_password_confirmed2"] = "Indtast igen det nye password."; +$LANG["validation_no_admin_email"] = "Indtast administratorens e-mail-adresse."; +$LANG["validation_no_admin_theme"] = "Du vælge temaet for administrator konto."; +$LANG["validation_no_admin_theme_swatch"] = "Vælg en farveprøve for administratoren tema."; +$LANG["validation_no_client_email"] = "Indtast kundens e-mail-adresse."; +$LANG["validation_no_client_first_name"] = "Angiv kundens fornavn."; +$LANG["validation_no_client_last_name"] = "Indtast kundens efternavn."; +$LANG["validation_no_client_login_page"] = "Angiv, hvilken side kunden bør blive omdirigeret til, når de logger ind"; +$LANG["validation_no_client_password"] = "Indtast kundens adgangskode."; +$LANG["validation_no_client_theme_swatch"] = "Vælg en standard farveprøve for klienten konti."; +$LANG["validation_no_client_username"] = "Indtast kundens brugernavn."; +$LANG["validation_no_column_name"] = "Indtast venligst alle kolonne navne, eller klik på Smart Fill-knappen for automatisk at udfylde dem."; +$LANG["validation_no_column_selected"] = "Vælg mindst ét felt til at fremstå som en kolonne om indberetning notering side."; +$LANG["validation_no_custom_from_email"] = "Indtast det brugerdefinerede 'Fra' e-mail-adresse."; +$LANG["validation_no_custom_recipient_email"] = "Indtast den brugerdefinerede modtagerens e-mail-adresse."; +$LANG["validation_no_custom_reply_to_email"] = "Indtast det brugerdefinerede 'Svar til' e-mail-adresse."; +$LANG["validation_no_date_format"] = "Indtast venligst et dato format."; +$LANG["validation_no_db_column_single"] = "Indtast venligst Database kolonnenavnet."; +$LANG["validation_no_db_hostname"] = "Indtast venligst database værtsnavn."; +$LANG["validation_no_db_name"] = "Indtast venligst database navn."; +$LANG["validation_no_db_username"] = "Indtast venligst database kontoen."; +$LANG["validation_no_default_client_theme"] = "Vælg den standard tema for alle nye kundekonti."; +$LANG["validation_no_default_language"] = "Vælg venligst standard sprog for din installation af Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Angiv standard session timeout for brugerkonti."; +$LANG["validation_no_display_text"] = "Indtast Display tekst for hvert felt."; +$LANG["validation_no_display_text_single"] = "Indtast Display tekst værdi."; +$LANG["validation_no_edit_submission_page_label"] = "Indtast venligst Rediger Submission siden etiket."; +$LANG["validation_no_email"] = "Indtast venligst din email adresse."; +$LANG["validation_no_email_config_field"] = "Angiv som udgør feltet er den e-mail feltet."; +$LANG["validation_no_email_content"] = "Indtast e-mail-indhold for mindst et af de formater (HTML eller tekst)."; +$LANG["validation_no_email_from_field"] = "Venligst e-mail 'fra' feltet."; +$LANG["validation_no_email_template_name"] = "Angiv e-mail-skabelon navn."; +$LANG["validation_no_email_template_view_id"] = "Vælg den Vis som denne e-mail-skabelon bør kortlægges."; +$LANG["validation_no_email_template_view_mapping_value"] = "Bedes oplyse, hvornår e-mailen skal sendes."; +$LANG["validation_no_enabled_themes"] = "Sørg for, at mindst ét tema er aktiveret."; +$LANG["validation_no_first_name"] = "Indtast venligst dit fornavn."; +$LANG["validation_no_form_field_name"] = "Angiv alle form feltnavne."; +$LANG["validation_no_form_field_single"] = "Indtast venligst formularfeltet værdi."; +$LANG["validation_no_form_id"] = "Formular ID var ikke angivet. Log venligst ud og prøv igen."; +$LANG["validation_no_form_name"] = "Indtast venligst formular navnet."; +$LANG["validation_no_form_url"] = "Indtast venligst formularens URL."; +$LANG["validation_no_last_name"] = "Indtast venligst dit efternavn."; +$LANG["validation_no_login_page"] = "Angiv venligst, hvilken side du gerne vil blive sendt hver gang du logger ind"; +$LANG["validation_no_logout_url"] = "Indtast venligst logout URL."; +$LANG["validation_no_main_email_recipient"] = "Angiv mindst én hoved email adresse (dvs. ikke en cc eller bcc)."; +$LANG["validation_no_menu"] = "Vælg en menu for denne brugerkonto."; +$LANG["validation_no_menu_id"] = "Vælg en menu."; +$LANG["validation_no_num_clients_per_page"] = "Indtast venligst antallet af klienter pr. side."; +$LANG["validation_no_num_emails_per_page"] = "Indtast det antal e-mails til listen per side."; +$LANG["validation_no_num_form_fields"] = "Indtast venligst antallet af felter til din formular."; +$LANG["validation_no_num_forms_per_page"] = "Indtast venligst antallet af formularer pr. side."; +$LANG["validation_no_num_menus_per_page"] = "Indtast antallet af menuerne til listen per side."; +$LANG["validation_no_num_modules_per_page"] = "Indtast antallet af moduler per side."; +$LANG["validation_no_num_option_lists_per_page"] = "Indtast venligst antallet af valglister pr side."; +$LANG["validation_no_num_submissions_per_page"] = "Skriv venligst antallet af henvendelser der skal vises pr. side."; +$LANG["validation_no_option_list_name"] = "Indtast venligst muligheden listenavn."; +$LANG["validation_no_page_titles"] = "Angiv standard sidetitler for brugerkonti."; +$LANG["validation_no_password"] = "Indtast venligst dit password."; +$LANG["validation_no_program_name"] = "Indtast venligst program navnet."; +$LANG["validation_no_second_password"] = "Venligst indtaste din adgangskode."; +$LANG["validation_no_sessions_timeout"] = "Indtast venligst session timeout."; +$LANG["validation_no_smart_fill_values"] = "Indtast form feltnavn og webadressen på skemaet."; +$LANG["validation_no_table_prefix"] = "Indtast venligst en database præfiks."; +$LANG["validation_no_tabs_defined"] = "Ingen defineret faner"; +$LANG["validation_no_test_email_recipient"] = "Angiv e-mail-adresse, hvor vi skal sende prøven e-mail."; +$LANG["validation_no_test_email_submission_id"] = "Indtast indsendelse ID-nummer."; +$LANG["validation_no_theme"] = "Vælg et tema."; +$LANG["validation_no_theme_swatch"] = "Vælg en farveprøve for det valgte tema."; +$LANG["validation_no_timezone_offset"] = "Indtast venligst offset tidszone."; +$LANG["validation_no_titles"] = "Indtast venligst sidens titel."; +$LANG["validation_no_two_column_names"] = "Beklager, du må ikke angive det samme database kolonne navn to gange."; +$LANG["validation_no_ui_language"] = "Vælg et sprog for grænsefladen."; +$LANG["validation_no_url"] = "Indtast en webadresse."; +$LANG["validation_no_username"] = "Indtast venligst dit brugernavn."; +$LANG["validation_no_username_or_js"] = "Du skal skrive dit brugernavn. Aktiver venligst javascript i din browser."; +$LANG["validation_no_view_fields"] = "Din mening ikke indeholder nogen felter! Du er nødt til at tildele mindst ét felt for at der er noget at dukke op i din View."; +$LANG["validation_no_view_fields_selected"] = "Vælg et eller flere felter for at tilføje til visningen."; +$LANG["validation_no_view_name"] = "Indtast navnet på din View."; +$LANG["validation_num_rows_to_add"] = "Indtast venligst antallet af rækker der skal tilføjes."; +$LANG["validation_option_list_name_taken"] = "Desværre er denne indstilling listenavn allerede taget. Vælg et nyt navn."; +$LANG["validation_password_in_password_history"] = "For sikkerheden kan du ikke indtaste den samme adgangskode som et af de sidste {\$history_size} passwords. Angiv en anden adgangskode."; +$LANG["validation_passwords_different"] = "Vær venligst sikker på at passwords er de samme."; +$LANG["validation_please_enter_search_date_range"] = "Angiv venligst dato søge området."; +$LANG["validation_please_enter_search_keyword"] = "Angiv venligst søge nøgleordet."; +$LANG["validation_select_field_type"] = "Vælg et felt type."; +$LANG["validation_select_submissions_to_copy"] = "Vælg venligst de indlæg, du gerne vil kopiere."; +$LANG["validation_select_submissions_to_delete"] = "Vælg venligst de henvendelser du ønsker at slette."; +$LANG["validation_smart_fill_cannot_fill"] = "Desværre kunne vi ikke udfylde dette felt."; +$LANG["validation_smart_fill_invalid_field_type"] = "Vi var ikke i stand til at finde et felt, men det er ikke en dropdown, checkhæfte eller radio gruppe."; +$LANG["validation_smart_fill_no_field_found"] = "Vi kunne desværre ikke finde en form felt med dette navn på den angivne side."; +$LANG["validation_smart_fill_no_page"] = "Find venligst den side, der indeholder det område, du ønsker at Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Upload alle siderne i din form."; +$LANG["validation_upload_folder_not_writable"] = "Der er ikke adgang til at skrive i den midlertidige upload mappe du har specificeret i din PHP installation. Indtil dette er rettet, kan filer ikke uploades via Form Tools (eller andre PHP programmer). Kontakt venligst din webhost."; +$LANG["validation_upload_html_files_only"] = "Overfør kun HTML-filer."; +$LANG["validation_username_taken"] = "Beklager, dette brugernavn er allerede i brug. Indtast venligst et andet brugernavn."; +$LANG["validation_wrong_password"] = "Beklager, det password matcher ikke."; +$LANG["word_about"] = "Om"; +$LANG["word_access"] = "Adgang"; +$LANG["word_account"] = "Konto"; +$LANG["word_account_sp"] = "Konto(er)"; +$LANG["word_accounts"] = "Konti"; +$LANG["word_action"] = "Handling"; +$LANG["word_active"] = "Aktiv"; +$LANG["word_add"] = "Tilføj"; +$LANG["word_add_rightarrow"] = "Tilføj »"; +$LANG["word_add_uc_rightarrow"] = "TILFØJ »"; +$LANG["word_administration"] = "Administration"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Efter"; +$LANG["word_aquamarine"] = "Akvamarin"; +$LANG["word_asc"] = "STIG"; +$LANG["word_author"] = "Forfatter"; +$LANG["word_author_c"] = "Forfatter:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«tilbage"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Før"; +$LANG["word_benefits"] = "Fordele"; +$LANG["word_blue"] = "Blå"; +$LANG["word_cancel"] = "Annuller"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Checkliste"; +$LANG["word_client"] = "Klient"; +$LANG["word_client_c"] = "Bygherre:"; +$LANG["word_clients"] = "Klienter"; +$LANG["word_close"] = "LUK"; +$LANG["word_code"] = "Kode"; +$LANG["word_column"] = "Kolonne"; +$LANG["word_columns"] = "Kolonner"; +$LANG["word_columns_sp"] = "Kolonne (r)"; +$LANG["word_complete"] = "FÆRDIG"; +$LANG["word_configuration"] = "Configuration"; +$LANG["word_content"] = "Indhold"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Fortsæt »"; +$LANG["word_copy"] = "Kopi"; +$LANG["word_custom"] = "Tilrettet"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Dato"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "SLET"; +$LANG["word_desc"] = "DESC"; +$LANG["word_direct"] = "Direkte"; +$LANG["word_disabled"] = "Inaktiv"; +$LANG["word_documentation"] = "Dokumentation"; +$LANG["word_done"] = "Udført"; +$LANG["word_drawbacks"] = "Ulemper"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "RET"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "EMAIL"; +$LANG["word_email_c"] = "E-mail:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Enabled"; +$LANG["word_equals"] = "Lig"; +$LANG["word_error"] = "Fejl"; +$LANG["word_error_c"] = "Fejl:"; +$LANG["word_examples_c"] = "Eksempler:"; +$LANG["word_external"] = "Eksterne"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Felt"; +$LANG["word_field_sp"] = "Felt(er)"; +$LANG["word_fields"] = "Fields"; +$LANG["word_fields_sp"] = "Field (s)"; +$LANG["word_file"] = "Fil"; +$LANG["word_file_b_uc"] = "[FIL]"; +$LANG["word_files"] = "Filer"; +$LANG["word_filters"] = "Filtre"; +$LANG["word_filters_sp"] = "Filter (r)"; +$LANG["word_for"] = "efter"; +$LANG["word_form"] = "Formular"; +$LANG["word_form_c"] = "Formular:"; +$LANG["word_formatting"] = "Formatering"; +$LANG["word_forms"] = "Formularer"; +$LANG["word_found"] = "Fundet"; +$LANG["word_from"] = "Fra"; +$LANG["word_from_c"] = "Fra:"; +$LANG["word_general"] = "Generelt"; +$LANG["word_green"] = "Grøn"; +$LANG["word_grey"] = "Grå"; +$LANG["word_height"] = "Højde"; +$LANG["word_help"] = "Hjælp"; +$LANG["word_hidden"] = "Skjulte"; +$LANG["word_highlight"] = "Fremhæv"; +$LANG["word_horizontal"] = "Vandret"; +$LANG["word_hour"] = "Time"; +$LANG["word_hours"] = "Timer"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Billede"; +$LANG["word_incomplete"] = "Ufuldstændig"; +$LANG["word_install"] = "Installer"; +$LANG["word_installation"] = "Installation"; +$LANG["word_internal"] = "Intern"; +$LANG["word_language"] = "Sprog"; +$LANG["word_large"] = "Stor"; +$LANG["word_like"] = "Som"; +$LANG["word_login"] = "LOGIN"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Hoved"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menuer"; +$LANG["word_minutes"] = "minut"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Moduler"; +$LANG["word_na"] = "N/A"; +$LANG["word_name"] = "Navn"; +$LANG["word_name_c"] = "Navn:"; +$LANG["word_never"] = "Aldrig"; +$LANG["word_next_rightarrow"] = "næste »"; +$LANG["word_next_step_rightarrow"] = "Næste trin »"; +$LANG["word_no"] = "Nej"; +$LANG["word_none"] = "Ingen"; +$LANG["word_notes"] = "Noter"; +$LANG["word_notification"] = "Underretning"; +$LANG["word_number"] = "Nummer"; +$LANG["word_off"] = "Slukket"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "På"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operatør"; +$LANG["word_options"] = "Muligheder"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Rækkefølge"; +$LANG["word_other"] = "Anden"; +$LANG["word_other_c"] = "Andet:"; +$LANG["word_page"] = "Side"; +$LANG["word_page_c"] = "Side:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Password"; +$LANG["word_password_c"] = "Password:"; +$LANG["word_pending"] = "Afventende"; +$LANG["word_permissions"] = "Tilladelser"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«forrige"; +$LANG["word_private"] = "Privat"; +$LANG["word_public"] = "Offentlig"; +$LANG["word_purple"] = "Lilla"; +$LANG["word_recipient"] = "Modtager"; +$LANG["word_recipient_sp"] = "Modtager(e)"; +$LANG["word_red"] = "Rød"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Fjerne"; +$LANG["word_remove_uc_leftarrow"] = "«Fjern"; +$LANG["word_reply_to"] = "Svar til"; +$LANG["word_reply_to_c"] = "Svar til:"; +$LANG["word_required"] = "Nødvendig"; +$LANG["word_reset"] = "Nulstil"; +$LANG["word_resolved"] = "Resolved"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rækken"; +$LANG["word_search"] = "Søg"; +$LANG["word_searchable"] = "Søgbare"; +$LANG["word_select"] = "Vælg"; +$LANG["word_setting"] = "Omgivelser"; +$LANG["word_settings"] = "OPSÆTNINGER"; +$LANG["word_show"] = "Vise"; +$LANG["word_size"] = "Størrelse"; +$LANG["word_skipped"] = "Sprunget"; +$LANG["word_small"] = "Små"; +$LANG["word_solution"] = "Løsning"; +$LANG["word_sortable"] = "Sorterbar"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Streng"; +$LANG["word_subject"] = "Emne"; +$LANG["word_subject_c"] = "Emne"; +$LANG["word_submenu"] = "Undermenu"; +$LANG["word_submission"] = "Henvendelse"; +$LANG["word_submissions"] = "Henvendelser"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (r)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Tekst"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temaer"; +$LANG["word_time"] = "Tid"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "I dag"; +$LANG["word_truncate_q"] = "Trunkere?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Ukendt"; +$LANG["word_update"] = "OPDATER"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Bruger"; +$LANG["word_username"] = "Brugernavn"; +$LANG["word_username_c"] = "Brugernavn:"; +$LANG["word_validation"] = "Validering"; +$LANG["word_value"] = "Værdi"; +$LANG["word_value_sp"] = "Værdi(er)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Kontroller"; +$LANG["word_version"] = "Version"; +$LANG["word_vertical"] = "Lodret"; +$LANG["word_view"] = "Se"; +$LANG["word_views"] = "Visninger"; +$LANG["word_warning"] = "Advarsel!"; +$LANG["word_warning_c"] = "Advarsel:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Velkommen!"; +$LANG["word_width_c"] = "bredde:"; +$LANG["word_words"] = "Ord"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Gul"; +$LANG["word_yes"] = "Ja"; \ No newline at end of file diff --git a/global/lang/de.php b/global/lang/de.php new file mode 100644 index 00000000..b8c4d1a8 --- /dev/null +++ b/global/lang/de.php @@ -0,0 +1,1219 @@ +Achtung! Sie ausgewählt haben {\$num_selected_on_page} Beiträge auf dieser Seite und {\$num_selected_on_other_pages} auf anderen Seiten. Bitte wählen Sie eine der folgenden Optionen:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Achtung! Sie haben keine Anträge auf dieser Seite die Sie gewählt haben, sondern {\$num_selected_on_other_pages} auf anderen Seiten. Bitte bestätigen Sie diese Eingaben zu löschen.
    "; +$LANG["confirm_delete_view"] = "Sind Sie sicher, dass Sie dieses Profil löschen?"; +$LANG["confirm_refresh_page"] = "Sind Sie sicher, dass Sie die Seite aktualisieren? Dies wird alle Änderungen verlieren, die Sie gemacht haben."; +$LANG["confirm_save_change_before_redirect"] = "Ein oder mehrere Felder wurden aktualisiert. Möchten Sie Ihre Änderungen vor dem Umleiten zu retten?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Sind Sie sicher, dass Sie die Datenbank Smart Fill Spaltennamen? Dadurch werden Ihre vorhandene Werte."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Diese Option generiert automatisch die Datenbank Spaltennamen auf dem Display Text-Felder auf, so dass der Inhalt der Datenbank-Tabelle sind leichter zu lesen."; +$LANG["confirm_smart_fill_display_names"] = "Sind Sie sicher, dass Sie das Display Smart Fill-Namen? Dadurch werden Ihre vorhandene Werte."; +$LANG["confirm_ungroup_option_list"] = "Sind Sie sicher, dass Sie diese Option Liste Gruppierung? Alle Optionen werden in einer einzigen, gruppierte Liste in einen Topf geworfen werden."; +$LANG["confirm_uninstall_module"] = "Sind Sie sicher, dass Sie dieses Modul deinstallieren? Alle Modul-Daten gehen verloren."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "FR"; +$LANG["date_Friday"] = "Freitag"; +$LANG["date_Mon"] = "MO"; +$LANG["date_Monday"] = "Montag"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "SA"; +$LANG["date_Saturday"] = "Samstag"; +$LANG["date_Sun"] = "SO"; +$LANG["date_Sunday"] = "Sonntag"; +$LANG["date_Thu"] = "DO"; +$LANG["date_Thursday"] = "Donnerstag"; +$LANG["date_Tue"] = "DI"; +$LANG["date_Tuesday"] = "Dienstag"; +$LANG["date_Wed"] = "MI"; +$LANG["date_Wednesday"] = "Mittwoch"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "August"; +$LANG["date_month_December"] = "Dezember"; +$LANG["date_month_February"] = "Februar"; +$LANG["date_month_January"] = "Januar"; +$LANG["date_month_July"] = "Juli"; +$LANG["date_month_June"] = "Juni"; +$LANG["date_month_March"] = "März"; +$LANG["date_month_May"] = "Mai"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Oktober"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Apr"; +$LANG["date_month_short_Aug"] = "Aug"; +$LANG["date_month_short_Dec"] = "Dez"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mär"; +$LANG["date_month_short_May"] = "Mai"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Okt"; +$LANG["date_month_short_Sep"] = "Sep"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Das Benutzerkonto wurde gelöscht."; +$LANG["notify_account_updated"] = "Ihr Konto wurde erfolgreich aktualisiert."; +$LANG["notify_add_display_values"] = "Anzeige hinzufügen Werte"; +$LANG["notify_admin_menu_updated"] = "Die Verwaltung Menü wurde aktualisiert."; +$LANG["notify_admin_theme_overridden"] = "Der Administrator Thema wurde manuell überschrieben werden."; +$LANG["notify_allow_url_fopen_not_set"] = "Leider kann dieser Test nicht auf Ihrem Webserver ausgeführt werden. Es erfordert allow_url_fopen auf 1 werden in Ihrer php.ini setzen. Diese Einstellung können PHP-Dateien über eine URL, die nötig ist, um diesen Test ausführen zugreifen. Sie können es manuell durch Hochladen einer Datei in dem Ordner via FTP zu testen, dann versuchen, sie unter der URL zugreifen zu können, geliefert haben."; +$LANG["notify_change_temp_password"] = "Sie müssen nur mit einem temporären Passwort angemeldet haben. Sie sollten Ihr Passwort nun zurückgesetzt!"; +$LANG["notify_click_to_edit_new_submission"] = "Klicken Sie hier, um die neue Einreichung zu bearbeiten."; +$LANG["notify_client_account_menus_updated"] = "Die Client-Konto (en) müssen die {\$menu_name} Menü aktualisiert wurden. Sie können nun das Menü zu löschen, die zuvor mit dem Konto (s verbunden war)."; +$LANG["notify_client_account_not_updated"] = "Der Client-Konto konnte nicht aktualisiert werden."; +$LANG["notify_client_account_themes_updated"] = "Die Client-Konto (en) müssen die {\$theme} Thema aktualisiert wurde. Sie können nun deaktivieren das Thema zuvor mit dem Konto (s) verbunden."; +$LANG["notify_client_account_updated"] = "Die Client-Konto wurde erfolgreich aktualisiert."; +$LANG["notify_client_menu_deleted"] = "Die Client-Menü wurde gelöscht."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Das Menü wurde gestrichen, aber die folgenden Client-Konten jetzt nicht mehr über ein Menü! Sie müssen die folgenden Konten zu aktualisieren:"; +$LANG["notify_client_menu_updated"] = "Die Client-Menü wurde aktualisiert."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Sorry, das Menü, das Sie gerade versucht zu löschen, ist bereits von den Clients verwendet werden unten aufgeführt. Um das Menü zu löschen, müssen Sie zunächst für die Kunden zu anderen Menüs zuweisen. Klicken Sie auf den Client-Namen zu berücksichtigen, dass einzelne, zu bearbeiten oder weisen alle Konten in ein anderes Menü mittels der Dropdown unten."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Sorry, sind eines der Themen, die Sie gerade deaktiviert bereits durch die folgenden Client-Konten verwendet werden. Um das Thema zu deaktivieren, müssen Sie zunächst für jeden Kunden zu einem anderen Thema zuzuordnen. Klicken Sie auf den Client-Namen zu berücksichtigen, dass einzelne, zu bearbeiten oder weisen alle Konten zu einem Thema mittels der Dropdown unten."; +$LANG["notify_edit_email_fields_link"] = "Klicken Sie hier, um festzulegen, welche Formularfelder E-Mail-Felder sind, so können Sie diese in Ihrer E-Mail-Vorlagen Ziel."; +$LANG["notify_edit_field_new_field"] = "Dies ist ein neues Feld. Sie müssen auf die Hauptseite, bevor sie vollständig bearbeiten diesem Bereich zu aktualisieren."; +$LANG["notify_edit_option_list_after_save"] = "Sie müssen wählen Sie eine Option auswählen und dann auf Änderungen speichern, bevor sie in der Lage, es zu bearbeiten."; +$LANG["notify_email_field_config_deleted"] = "Die E-Mail-Konfiguration wurde gelöscht."; +$LANG["notify_email_fields_not_updated"] = "Leider konnten wir nicht aktualisieren Sie die E-Mail-Felder."; +$LANG["notify_email_fields_updated"] = "Die E-Mail-Felder wurden aktualisiert."; +$LANG["notify_email_not_sent"] = "Leider konnten die E-Mail nicht versandt werden. Bitte kontaktieren Sie den Administrator bei der unten angegebenen Adresse."; +$LANG["notify_email_not_sent_c"] = "Leider konnte die E-Mail nicht gesendet werden:"; +$LANG["notify_email_sent"] = "Die E-Mail (s) übertragen wurden."; +$LANG["notify_email_template_deleted"] = "Die E-Mail-Vorlage wurde gelöscht."; +$LANG["notify_email_template_updated"] = "Die E-Mail-Vorlage wurde aktualisiert."; +$LANG["notify_enabled_module_list_updated"] = "Die Liste der aktivierten Module wurde aktualisiert."; +$LANG["notify_error_saving_fields"] = "Es gab einen Fehler beim Speichern der Felder."; +$LANG["notify_field_changes_saved"] = "Die Änderungen an Ihrem Gebiet (s) gespeichert wurden."; +$LANG["notify_field_options_smart_filled"] = "Ihr Feld Optionen wurden Smart-gefüllt."; +$LANG["notify_field_selected"] = "Das Feld ausgewählt wurde. Klicken Sie hier, um zum Haupt-Bereich zurückzukehren."; +$LANG["notify_field_updated"] = "Dieses Feld ist aktualisiert worden."; +$LANG["notify_file_not_uploaded"] = "Die Datei konnte nicht hochgeladen werden."; +$LANG["notify_file_uploaded"] = "Die Datei wurde erfolgreich hochgeladen."; +$LANG["notify_filters_not_updated"] = "There was an error Aktualisierung dieser Kunden Vorlage Filter."; +$LANG["notify_filters_updated"] = "Die Vorlage Filter wurden für diesen Client aktualisiert."; +$LANG["notify_folder_correct_permissions"] = "Dieser Ordner hat die richtigen Berechtigungen."; +$LANG["notify_folder_url_match"] = "Der Ordner und die URL korrekt angezeigt wird übereinstimmen."; +$LANG["notify_folder_url_no_access"] = "Diese Prüfung konnte nicht ausgeführt werden, da PHP konnte auf diese URL zugreifen. Dies wird üblicherweise durch die URL, die mit einem Passwort. Htaccess-Datei geschützt verursacht."; +$LANG["notify_folder_url_no_match"] = "Dieser Ordner-URL Kombination scheint nicht gewachsen zu sein."; +$LANG["notify_folder_url_unknown_error"] = "Es trat ein unbekannter Fehler auf. Sie können einen manuellen Test durchführen, indem Sie per FTP eine Datei in den Ordner hochladen und dann versuchen, auf diese über die von Ihnen angegebene URL zuzugreifen."; +$LANG["notify_form_access_type_email_info"] = "Diese Form hat Administrator-Zugriff Art, so dass keine Kunden haben Zugang zu und sind nicht in der Dropdown unten aufgeführt."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sorry, ein Formular mit dieser ID existiert nicht."; +$LANG["notify_form_field_not_added"] = "Das Formularfeld '{\$fieldname}' konnte nicht hinzugefügt werden."; +$LANG["notify_form_field_options_updated"] = "Das Formularfeld-Optionen wurden aktualisiert."; +$LANG["notify_form_field_removed"] = "Das Formularfeld wurde erfolgreich entfernt."; +$LANG["notify_form_fields_removed"] = "Das Formularfeld wurde erfolgreich entfernt."; +$LANG["notify_form_not_updated_notify_admin"] = "Das Formular konnte nicht aktualisiert werden. Bitte kontaktieren Sie den Administrator, um dieses Problem zu melden."; +$LANG["notify_form_settings_updated"] = "Ihre Formulareinstellungen wurden erfolgreich aktualisiert."; +$LANG["notify_form_submission_updated"] = "Die Formulareingabe wurde aktualisiert."; +$LANG["notify_form_tabs_updated"] = "Die Registerkarten sind aktualisiert worden."; +$LANG["notify_form_updated"] = "Das Formular wurde erfolgreich aktualisiert."; +$LANG["notify_form_views_updated"] = "Die Form Ansichten wurden aktualisiert."; +$LANG["notify_install_invalid_db_info"] = "Leider konnten wir nicht auf die Datenbank mit den Angaben, die Sie in Verbindung zu treten. Die Fehlermeldung der Datenbank zurückgegeben wird: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Das Formular wurde erstellt! Sie können Ihre Form durch diesen Registerkarten konfigurieren."; +$LANG["notify_invalid_account_information_in_sessions"] = "Das Konto gespeicherten Informationen in den Sitzungen ist ungültig. Bitte loggen Sie sich wieder unter."; +$LANG["notify_invalid_license_key"] = "Sorry, heißt das nicht, scheinen einen gültigen Lizenzschlüssel werden. Bitte versuchen Sie es erneut."; +$LANG["notify_invalid_permissions"] = "Sie haben nicht die Berechtigungen für den Zugriff zu dieser Seite. Sie haben sich abgemeldet."; +$LANG["notify_invalid_search_dates"] = "Bitte benutzen Sie den datepicker eine gültige Datum oder die Daten eingeben."; +$LANG["notify_invalid_upload_folder"] = "Die Upload-Ordner ist ungültig oder nicht beschreibbar ist."; +$LANG["notify_lang_list_updated"] = "Die Liste der vorhanden Sprachen für die Benutzeroberfläche wurde aktualisiert."; +$LANG["notify_login_info_emailed"] = "Ihre Login-Daten wurde Ihnen per E-Mail."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Hoppla, dieses Modul ist bereits installiert!"; +$LANG["notify_module_installed"] = "Das Modul installiert wurde. Klicken Sie hier, um das Modul auswählen."; +$LANG["notify_module_list_updated"] = "Das Modul wurde aktualisiert."; +$LANG["notify_module_uninstalled"] = "Das Modul wurde deinstalliert."; +$LANG["notify_module_updated"] = "Die {\$module} wurde an {\$version} aktualisiert. Klicken Sie hier, um das Modul auswählen ."; +$LANG["notify_multi_field_selected"] = "Das Feld ausgewählt wurde. Klicken Sie hier, um anzuzeigen und zu bearbeiten Bereich Optionen."; +$LANG["notify_multi_field_updated"] = "Dieses Feld ist aktualisiert worden. Sie können die Konfiguration der Bereich Optionen nach dem Einrichten des Formulars."; +$LANG["notify_multiple_fields_found"] = "Mehrere Elemente wurden mit diesem Feldnamen ({\$field_name}) gefunden). Dies kann auftreten, wenn Ihre Seite enthält mehr als eine Form oder wenn Sie versehentlich Namen eines Ihrer Formen wie die andere. Bitte wählen Sie das gewünschte aus der Liste unten."; +$LANG["notify_new_default_view_created"] = "Eine neue, standardmäßig anzeigen, die alle Ihre Formularfelder erstellt wurde."; +$LANG["notify_new_submission_created"] = "Die Vorlage wurde erstellt. Sie können es unter bearbeiten."; +$LANG["notify_no_account_id_in_sessions"] = "Kein Benutzerkonto ID wurde in Sitzungen gefunden. Bitte loggen Sie sich wieder unter."; +$LANG["notify_no_api_installed"] = "Sie haben nicht die API installiert"; +$LANG["notify_no_client_permissions"] = "Es gibt keine Einstellungen zur Verfügung zu bearbeiten."; +$LANG["notify_no_email_template_selected"] = "Bitte wählen Sie die E-Mail-Vorlage."; +$LANG["notify_no_emails_defined"] = "Keine E-Mails wurden für diese Form definiert. So fügen Sie eine neue ein, klicken Sie auf den Button unten."; +$LANG["notify_no_field_settings"] = "Dieser Feldtyp enthält keine zusätzlichen Einstellungen."; +$LANG["notify_no_fields_in_tab"] = "Diese Registerkarte enthält keine Felder aus."; +$LANG["notify_no_option_lists"] = "Es gibt keine Möglichkeit, Listen definiert. Klicken Sie auf die Schaltfläche unten, um eine neue zu erstellen."; +$LANG["notify_no_test_submission"] = "Werkzeuge nicht erhalten hat einen erfolgreichen Test Vorlage an."; +$LANG["notify_no_user_email_fields_configured"] = "Hinweis: Wenn Sie eine E-Mail an alle E-Mail-Adresse, die in Form aufgenommen wurde senden möchten, müssen Sie zuerst die Konfiguration des E-Mail-Formular Felder."; +$LANG["notify_no_views"] = "Ihre Form hat keine Ansichten einrichten! Sie müssen mindestens eine Ansicht, um Ihre Form zu verwalten."; +$LANG["notify_no_views_assigned_to_client_form"] = "Es scheint, dass Ihr Benutzerkonto hat nicht zu irgendeiner Form Views zugeordnet wurde, so dass Sie nicht in der Lage, alle Daten zu sehen. Bitte kontaktieren Sie den Administrator für weitere Hilfe."; +$LANG["notify_no_views_defined"] = "Sie haben noch keine Views definiert. Sie werden nicht in der Lage sein, diese Form des Vorbringens nur anzeigen, wenn mindestens eine Ansicht erstellt wird. Klicken Sie auf die Schaltfläche unten, um die Standard-Ansicht erstellen."; +$LANG["notify_option_list_deleted"] = "Die Liste der Optionen wurde gelöscht."; +$LANG["notify_option_list_updated"] = "Die Liste der Optionen ist aktualisiert worden."; +$LANG["notify_public_form_omit_list_updated"] = "Der Kunde unterlassen Liste für diese Form ist aktualisiert worden."; +$LANG["notify_public_view_omit_list_updated"] = "Der Kunde unterlassen Liste für dieses Profil wurde aktualisiert."; +$LANG["notify_required_admin_pages"] = "Die folgenden Seiten sind in der Administrator-Menü erforderlich: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Leider gab es keine Aktivität für eine Weile so mussten wir Sie sich abmelden. Bitte loggen Sie sich wieder unter."; +$LANG["notify_setup_options_updated"] = "Das Setup-Optionen wurden aktualisiert."; +$LANG["notify_smart_fill_field_not_found"] = "Wir konnten auf ein Feld mit diesem Namen ({\$field_name}) zu finden) in der Form (s) angegeben. Sie können entweder manuell den Feldtyp unten, oder klicken Sie auf die Skip-Taste zu diesem Bereich später bearbeiten."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Ihre Datei (en) wurden erfolgreich hochgeladen. Versuchen Sie, die Smart Fill-Taste, um erneut zu versuchen. Wenn dieser Schritt fehlschlägt, müssen Sie diesen Schritt, und konfigurieren Sie Ihre Formularfelder manally später zu überspringen."; +$LANG["notify_smart_fill_submitted"] = "Die Form vorgelegt wurde. Je nach Größe der Form und Anzahl der Felder, Optionen kann dies einige Zeit dauern."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Entschuldigung! Eine oder mehrere von Ihnen ausgewählte Dateien konnten nicht hochgeladen werden. Sie müssen diesen Schritt überspringen und die Felder manuell konfigurieren."; +$LANG["notify_submission_and_files_deleted"] = "Die Eingaben und alle dazugehörigen Dateien wurden erfolgreich gelöscht."; +$LANG["notify_submission_copied"] = "Die Einreichung wurde kopiert."; +$LANG["notify_submission_copied_edit"] = "Die Einreichung wurde kopiert. Sie können es unten bearbeiten."; +$LANG["notify_submission_deleted"] = "Eingaben erfolgreich gelöscht."; +$LANG["notify_submission_deleted_with_problems"] = "Die Vorlage wurde gelöscht, aber die folgenden Probleme wurden beim Versuch, die folgende Datei (en) zu löschen:"; +$LANG["notify_submission_id_not_found"] = "Die Vorlage ID wurde nicht gefunden."; +$LANG["notify_submission_not_updated"] = "Die Eingabe konnte nicht gespeichert werden."; +$LANG["notify_submissions_and_files_deleted"] = "Die Eingaben und alle dazugehörigen Dateien wurden gelöscht."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} Einreichungen wurden kopiert."; +$LANG["notify_submissions_deleted"] = "Eingaben gelöscht."; +$LANG["notify_submissions_deleted_with_problems"] = "Eingaben gelöscht, jedoch traten Probleme auf beim Versuch die folgenden Dateien zu löschen:"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Ihre Test-E-Mail konnte nicht versendet werden."; +$LANG["notify_theme_cache_folder_not_writable"] = "Der Cache-Ordner dieses Themas ist nicht beschreibbar. Um dieses Thema aktivieren zu können muss das Verzeichnis {\$folder} volle Lese- und Schreibberechtigungen haben."; +$LANG["notify_theme_list_updated"] = "Das Thema wurde aktualisiert."; +$LANG["notify_themes_settings_updated"] = "Ihr Design-Einstellungen wurden aktualisiert."; +$LANG["notify_view_deleted"] = "Das Profil wurde gelöscht."; +$LANG["notify_view_group_deleted"] = "The View wurde gelöscht."; +$LANG["notify_view_missing_columns"] = "Oops! Sorry, dieser Ansicht nicht voll ausgeschöpft worden noch nicht fest."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klicken Sie hier, um festzulegen, welche Felder als Spalten auf dieser Seite angezeigt."; +$LANG["notify_view_updated"] = "Das Profil wurde aktualisiert."; +$LANG["notify_your_email_sent"] = "Ihre E-Mail wurde erfolgreich versendet."; +$LANG["phrase_100_per_page"] = "100 pro Seite"; +$LANG["phrase_10_per_page"] = "10 pro Seite"; +$LANG["phrase_15_per_page"] = "15 pro Seite"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 pro Seite"; +$LANG["phrase_25_per_page"] = "25 pro Seite"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 Spalten"; +$LANG["phrase_2chars"] = "2 Zeichen"; +$LANG["phrase_3_columns"] = "3 Spalten"; +$LANG["phrase_4_columns"] = "4 Spalten"; +$LANG["phrase_50_per_page"] = "50 pro Seite"; +$LANG["phrase_accepting_submissions"] = "Übermittlung akzeptieren"; +$LANG["phrase_access_admin_account_c"] = "Sie können hier auf Ihr Administrationskonto zugreifen:"; +$LANG["phrase_access_type"] = "Zugriffstyp"; +$LANG["phrase_account_info"] = "Kontoinformationen"; +$LANG["phrase_account_settings"] = "Kontoeinstellungen"; +$LANG["phrase_action_needed"] = "Aktion benötigt"; +$LANG["phrase_add_client"] = "Benutzer hinzufügen"; +$LANG["phrase_add_client_menu"] = "Benutzermenü hinzufügen"; +$LANG["phrase_add_default_settings_rightarrow"] = "Standardeinstellungen hinzufügen »"; +$LANG["phrase_add_field"] = "Feld hinzufügen"; +$LANG["phrase_add_fields"] = "Felder hinzufügen"; +$LANG["phrase_add_fields_rightarrow"] = "Felder hinzufügen »"; +$LANG["phrase_add_form"] = "Formular hinzufügen"; +$LANG["phrase_add_form_external"] = "externes Formular hinzufügen"; +$LANG["phrase_add_form_internal"] = "internes Formular hinzufügen"; +$LANG["phrase_add_new_group_rightarrow"] = "Neue Gruppe hinzufügen »"; +$LANG["phrase_add_num_rows"] = "Hinzufügen {\$number} Zeile (n)"; +$LANG["phrase_add_row"] = "Zeile hinzufügen »"; +$LANG["phrase_add_submission_button"] = "Beitrag hinzufügen Knopf"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Hinzufügen eines mehrseitigen Formulars mit der API"; +$LANG["phrase_adding_single_page_form"] = "Hinzufügen eines einseitigen Formulars mit der API"; +$LANG["phrase_admin_menu"] = "Administrator Menü"; +$LANG["phrase_admin_only"] = "Nur Administrator"; +$LANG["phrase_admin_panel"] = "Administrator Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Oberfläche"; +$LANG["phrase_advanced_settings_rightarrow"] = "Erweiterte Einstellungen »"; +$LANG["phrase_all_X_results_selected"] = "Alle {\$numresults} ausgewählten Ergebnisse"; +$LANG["phrase_all_clients"] = "Alle Benutzer"; +$LANG["phrase_all_clients_except_c"] = "Alle Benutzer außer:"; +$LANG["phrase_all_clients_have_access"] = "(alle Benutzer haben Zugriff)"; +$LANG["phrase_all_fields"] = "Alle Felder"; +$LANG["phrase_all_fields_displayed"] = "Alle Felder werden angezeigt"; +$LANG["phrase_all_statuses"] = "Jeder Status"; +$LANG["phrase_all_submissions"] = "Alle Beiträge"; +$LANG["phrase_allow_fields_edited"] = "Das Bearbeiten von Feldern erlauben"; +$LANG["phrase_alphanumeric"] = "Alphanumerischen Zeichen (az, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Zeitzone zulassen"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Alle aufgelisteten Benutzer zuweisen an {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Alle aufgelisteten Benutzer zuweisen an {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Am Ende"; +$LANG["phrase_at_start"] = "Am Anfang"; +$LANG["phrase_author_link"] = "Autor Link"; +$LANG["phrase_auto_disable_account"] = "Konto nach # fehlgeschlagenen Login-Versuchen sperren"; +$LANG["phrase_auto_size"] = "Auto-Größe"; +$LANG["phrase_available_clients"] = "Abrufbare Benutzer"; +$LANG["phrase_available_fields"] = "Verfügbare Felder"; +$LANG["phrase_available_option_lists"] = "verfügbare Auswahllisten"; +$LANG["phrase_available_swatches"] = "Erhältlich Farbfelder"; +$LANG["phrase_available_swatches_c"] = "Erhältlich Farbfelder:"; +$LANG["phrase_available_tabs"] = "Verfügbare Reiter"; +$LANG["phrase_available_views"] = "Verfügbare Ansichten"; +$LANG["phrase_awaiting_form_submission"] = "Erwarte Beitragseingang."; +$LANG["phrase_back_to_field_list"] = "« zurück zur Felderliste"; +$LANG["phrase_back_to_search_results"] = "zurück zu den Suchresultaten"; +$LANG["phrase_base_view_on"] = "Basis Blick auf ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Login-Daten ändern"; +$LANG["phrase_characters_limit_p"] = "Zeichenbegrenzung"; +$LANG["phrase_check_db_settings_try_again"] = "Bitte überprüfen Sie Ihre Datenbank-Einstellungen und klicken Sie nochmals auf die Schaltfläche \"Weiter\"."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Überprüfe Sie die URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Bereinigung"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "bereinige Omit Liste"; +$LANG["phrase_client_account_settings"] = "Benutzer Account-Einstellungen"; +$LANG["phrase_client_field"] = "Benutzerfeld"; +$LANG["phrase_client_map_filters"] = "Benutzer Filter »"; +$LANG["phrase_client_may_edit"] = "Benutzer dürfen bearbeiten"; +$LANG["phrase_client_menu"] = "Benutzer-Menü"; +$LANG["phrase_clients_can_access_form"] = "Benutzer, die Zugriff auf das Formular haben"; +$LANG["phrase_clients_can_access_view"] = "Benutzer, die Zugriff auf die Ansicht haben"; +$LANG["phrase_clients_cannot_access_form"] = "Benutzer, die keinen Zugriff auf das Formular haben"; +$LANG["phrase_clients_cannot_access_view"] = "Benutzer, die keinen Zugriff auf die Ansicht haben"; +$LANG["phrase_clients_may_edit"] = "Benutzer dürfen bearbeiten"; +$LANG["phrase_code_c"] = "Fehlercode:"; +$LANG["phrase_code_markup_field"] = "Code / Markup Feld"; +$LANG["phrase_code_markup_type"] = "Code / Markup-Typ"; +$LANG["phrase_codes_c"] = "Fehler-Codes:"; +$LANG["phrase_column_width"] = "Spaltenbreite"; +$LANG["phrase_company_name"] = "Firmennamen"; +$LANG["phrase_configure_form_email_fields"] = "Konfigurieren von E-Mail-Formular Felder"; +$LANG["phrase_confirm_folder_url_match"] = "Bestätige Verzeichnis-URL übereinkunft"; +$LANG["phrase_connect_rows"] = "verbinde Zeilen"; +$LANG["phrase_copy_email_settings_from"] = "Kopieren Sie E-Mail-Einstellungen von ..."; +$LANG["phrase_copy_settings_from"] = "Einstellungen kopieren von ..."; +$LANG["phrase_core_fields"] = "Kern-Felder"; +$LANG["phrase_core_version"] = "Kern Version"; +$LANG["phrase_create_account"] = "Benutzer anlegen"; +$LANG["phrase_create_admin_account"] = "Admin-Konto anlegen"; +$LANG["phrase_create_config_file"] = "Config-Datei erstellen"; +$LANG["phrase_create_database_tables"] = "Datenbank-Tabellen anlegen"; +$LANG["phrase_create_default_view"] = "Erstellen einer Standard-Ansicht"; +$LANG["phrase_create_file"] = "Datei anlegen"; +$LANG["phrase_create_group"] = "Gruppe erstellen"; +$LANG["phrase_create_new_email"] = "Neue E-Mail"; +$LANG["phrase_create_new_menu"] = "Neues Menü anlegen"; +$LANG["phrase_create_new_option_list"] = "Neue Auswahlliste anlegen"; +$LANG["phrase_create_new_option_list_group"] = "Neue Gruppe für Auswahllisten anlegen"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Neue Auswahlliste anlegen »"; +$LANG["phrase_create_new_view"] = "Neue Ansicht erstellen"; +$LANG["phrase_create_new_view_group"] = "Neue Gruppe für Ansicht erstellen"; +$LANG["phrase_custom_display_format"] = "benutzerdefiniertes Anzeigeformat"; +$LANG["phrase_custom_recipient"] = "benutzerdefinierter Empfänger"; +$LANG["phrase_custom_url"] = "benutzerdefinierte URL"; +$LANG["phrase_dark_blue"] = "dunkelblau"; +$LANG["phrase_data_type"] = "Datentyp"; +$LANG["phrase_database_hostname"] = "Datenbank-Hostname"; +$LANG["phrase_database_name"] = "Name der Datenbank"; +$LANG["phrase_database_password"] = "Passwort für die Datenbank"; +$LANG["phrase_database_settings"] = "Datenbank-Einstellungen"; +$LANG["phrase_database_setup"] = "Datenbank einrichten"; +$LANG["phrase_database_table_prefix"] = "Datenbank-Präfix"; +$LANG["phrase_database_username"] = "Datenbank-Benutzername"; +$LANG["phrase_date_format"] = "Datumsformat"; +$LANG["phrase_db_column"] = "Datenbank Zeile"; +$LANG["phrase_db_setup_page_4"] = "4. Datenbank-Setup"; +$LANG["phrase_default_client_account_theme"] = "Standard-Benutzer Account Oberfläche"; +$LANG["phrase_default_date_field_search_value"] = "Standard Datumsfeld Suchwert"; +$LANG["phrase_default_language"] = "Standard Sprache"; +$LANG["phrase_default_menu"] = "Standard-Menü"; +$LANG["phrase_default_sessions_timeout"] = "Standard Timeout für Sitzungen"; +$LANG["phrase_default_sort_order"] = "Standard Sortierrichtung"; +$LANG["phrase_default_tab_label"] = "Standard Reiter Beschriftung"; +$LANG["phrase_default_theme"] = "Standard Oberfläche"; +$LANG["phrase_default_value"] = "Standard Wert"; +$LANG["phrase_default_values"] = "Standard Werte"; +$LANG["phrase_default_values_new_submissions"] = "Standardwerte für neue Beiträge"; +$LANG["phrase_delete_field"] = "Feld löschen"; +$LANG["phrase_delete_form"] = "Formular löschen"; +$LANG["phrase_delete_row"] = "Zeile löschen"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Felder mit übermittelten Beiträgen löschen"; +$LANG["phrase_delete_view"] = "Ansicht löschen"; +$LANG["phrase_disconnect_rows"] = "Zeilen trennen"; +$LANG["phrase_display_email"] = "E-Mail anzeigen"; +$LANG["phrase_display_name"] = "Name anzeigen"; +$LANG["phrase_display_text"] = "Text anzeigen"; +$LANG["phrase_display_value"] = "Wert anzeigen"; +$LANG["phrase_edit_admin_menu"] = "Admin-Menü anpassen"; +$LANG["phrase_edit_client"] = "Benutzer ändern"; +$LANG["phrase_edit_client_menu"] = "Benutzermenü ändern"; +$LANG["phrase_edit_email_template"] = "E-Mail-Vorlage bearbeiten"; +$LANG["phrase_edit_field"] = "Feld bearbeiten"; +$LANG["phrase_edit_field_c"] = "Feld bearbeiten:"; +$LANG["phrase_edit_form"] = "Formular bearbeiten"; +$LANG["phrase_edit_form_access_type_b"] = "Zugriffsart für Formular ändern"; +$LANG["phrase_edit_option_list"] = "Bearbeiten Option Liste"; +$LANG["phrase_edit_submission"] = "Beitrag ändern"; +$LANG["phrase_edit_submission_label"] = "Beiträge ändern Beschriftung"; +$LANG["phrase_edit_view"] = "Ansicht ändern"; +$LANG["phrase_email_format"] = "E-Mail-Format"; +$LANG["phrase_email_settings"] = "E-Mail-Einstellungen"; +$LANG["phrase_email_template"] = "E-Mail-Einstellungen Vorlage"; +$LANG["phrase_email_template_name"] = "E-Mail-Einstellungen Vorlagenname"; +$LANG["phrase_error_learn_more"] = "Erfahren Sie mehr über diese Fehlermeldung."; +$LANG["phrase_error_text_intro"] = "Bitte beheben Sie folgende Fehler und senden Sie erneut:"; +$LANG["phrase_errors_learn_more"] = "Klicken Sie auf die Fehlercodes, um mehr zu erfahren."; +$LANG["phrase_event_trigger"] = "Ereignisauslöser"; +$LANG["phrase_external_form"] = "Externes Formular"; +$LANG["phrase_external_form_info"] = "Info zu Externem Formular"; +$LANG["phrase_external_your_own_form"] = "Externes Formular (eigenes)"; +$LANG["phrase_field_comments"] = "Feldkommentare"; +$LANG["phrase_field_label"] = "Feldbeschriftung"; +$LANG["phrase_field_options"] = "Feldoptionen"; +$LANG["phrase_field_size"] = "Feldgrösse"; +$LANG["phrase_field_skipped"] = "Field übersprungen"; +$LANG["phrase_field_specific_settings"] = "Field-spezifische Einstellungen"; +$LANG["phrase_field_type"] = "Feldtyp"; +$LANG["phrase_field_type_no_validation"] = "Es gibt keine Validierungsregeln für dieses Feld."; +$LANG["phrase_field_types"] = "Feldtypen"; +$LANG["phrase_field_value"] = "Feldwert"; +$LANG["phrase_field_values_to_display_values"] = "Feldwerte » Anzeige-Werte"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Touches"; +$LANG["phrase_finalize_form"] = "Formular fertigstellen"; +$LANG["phrase_first_name"] = "Vorname"; +$LANG["phrase_footer_text"] = "Fussnote"; +$LANG["phrase_for_any_form_submission"] = "Für jeden Formularbeitrag"; +$LANG["phrase_for_view_submissions"] = "Für Beiträge in Ansichten"; +$LANG["phrase_forgot_password"] = "Passwort vergessen?"; +$LANG["phrase_form_already_selected"] = "Formular bereits ausgewählt"; +$LANG["phrase_form_email_field_b_c"] = "[Email-Formular Feld]:"; +$LANG["phrase_form_email_field_configuration"] = "Formular E-Mail Feldkonfiguration"; +$LANG["phrase_form_email_fields"] = "Formular Email Felder"; +$LANG["phrase_form_field"] = "Formularfeld"; +$LANG["phrase_form_field_contents"] = "Formularfeld Inhalt"; +$LANG["phrase_form_field_name"] = "Formularfeldname"; +$LANG["phrase_form_field_placeholders"] = "Formularfeld Platzhalter"; +$LANG["phrase_form_fields"] = "Formularfelder"; +$LANG["phrase_form_info"] = "Formularinformation"; +$LANG["phrase_form_info_2"] = "2. Formulardaten"; +$LANG["phrase_form_list"] = "Formular Liste"; +$LANG["phrase_form_name"] = "Formularname"; +$LANG["phrase_form_page"] = "Formularseite"; +$LANG["phrase_form_placeholders"] = "FORMULAR PLATZHALTER"; +$LANG["phrase_form_submission"] = "FORMULAR EINGÄNGE"; +$LANG["phrase_form_submissions"] = "Formularen"; +$LANG["phrase_form_type"] = "Form Typ"; +$LANG["phrase_form_url"] = "Formular URL"; +$LANG["phrase_form_urls"] = "Form URLs"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formulare zugeordnet auf jedes Konto"; +$LANG["phrase_forms_page_default_message"] = "Forms-Seite Standardmeldung"; +$LANG["phrase_ft_installation"] = "Installations-Skript"; +$LANG["phrase_full_width"] = "Volle Breite"; +$LANG["phrase_getting_started"] = "Erste Schritte"; +$LANG["phrase_global_placeholders"] = "globale Platzhalter"; +$LANG["phrase_group_name"] = "Gruppenname"; +$LANG["phrase_group_options_q"] = "Gruppeneinstellungen"; +$LANG["phrase_group_rows"] = "Gruppenzeilen"; +$LANG["phrase_have_fun"] = "Viel Spaß!"; +$LANG["phrase_highlight_colour"] = "Farbe hervorheben"; +$LANG["phrase_html_email"] = "HTML-E-Mail"; +$LANG["phrase_html_template"] = "HTML-Template"; +$LANG["phrase_images_media"] = "Bilder / Medien"; +$LANG["phrase_import_option_list_rightarrow"] = "Importiere Auswahlliste »"; +$LANG["phrase_input_length"] = "Eingabelänge"; +$LANG["phrase_installation_help"] = "Installationshilfe"; +$LANG["phrase_internal_form"] = "Internes Formular"; +$LANG["phrase_ip_address"] = "IP-Adresse"; +$LANG["phrase_is_multi_page_form_q"] = "Ist das ein mehrseitiges Formular?"; +$LANG["phrase_label_response_placeholders"] = "Beschriftung / Platzhalter"; +$LANG["phrase_large_300px"] = "Groß (300px)"; +$LANG["phrase_large_400px"] = "Groß (400px)"; +$LANG["phrase_last_7_days"] = "Letzte 7 Tage"; +$LANG["phrase_last_logged_in"] = "Zuletzt eingeloggt"; +$LANG["phrase_last_modified"] = "Letzte Änderung"; +$LANG["phrase_last_modified_date"] = "Datum der letzten Änderung"; +$LANG["phrase_last_name"] = "Nachname"; +$LANG["phrase_letters_only"] = "Nur Buchstaben"; +$LANG["phrase_light_brown"] = "hellbraun"; +$LANG["phrase_limit_email_content"] = "E-Mail Inhalte auf die Felder in der Ansicht beschränken"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Anmelden"; +$LANG["phrase_login_as_user"] = "Melden Sie sich als dieser Benutzer an"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Seite"; +$LANG["phrase_login_panel_c"] = "Anmelden:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login-Seite"; +$LANG["phrase_login_password"] = "Login Passwort"; +$LANG["phrase_login_username"] = "Login Benutzername"; +$LANG["phrase_logo_link_url"] = "Logo-Link-URL"; +$LANG["phrase_logout_url"] = "Abmelde URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Haupteinstellungen"; +$LANG["phrase_manage_client"] = "Kunden verwalten"; +$LANG["phrase_manage_client_omit_list"] = "Manage Client Omit Liste"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Max Länge"; +$LANG["phrase_max_length_words_chars"] = "- Max. Länge (Wörter / Zeichen)"; +$LANG["phrase_may_add_submissions"] = "Mai Submissions hinzufügen"; +$LANG["phrase_may_copy_submissions"] = "Kann Einreichungen kopieren"; +$LANG["phrase_may_delete_submissions"] = "Mai Submissions löschen"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menu Name"; +$LANG["phrase_menu_type"] = "Menu Typ"; +$LANG["phrase_min_password_length"] = "Minimale Länge des Kennworts"; +$LANG["phrase_module_description"] = "Beschreibung des Moduls"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Monat aktuell"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Multi-select dropdown"; +$LANG["phrase_multiple_fields_found"] = "Mehrere Felder Gefunden!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Name / Vorname"; +$LANG["phrase_new_blank_email"] = "Neue leere E-Mail"; +$LANG["phrase_new_blank_option_list"] = "New Blank Option Liste"; +$LANG["phrase_new_blank_view"] = "Neues leeres Profil"; +$LANG["phrase_new_ft_installation"] = "Neues Formular Tools Installation"; +$LANG["phrase_new_option_list"] = "Neue Option Liste"; +$LANG["phrase_new_password"] = "Neues Passwort"; +$LANG["phrase_new_password_reenter"] = "New Password (bitte erneut eingeben)"; +$LANG["phrase_new_view"] = "Neue Ansicht"; +$LANG["phrase_new_view_all_fields"] = "New View - Alle Felder"; +$LANG["phrase_next_client"] = "nächsten Client »"; +$LANG["phrase_next_field"] = "nächsten Feld »"; +$LANG["phrase_next_form"] = "nächste Formular »"; +$LANG["phrase_next_view"] = "nächsten Profil »"; +$LANG["phrase_no_clients"] = "Kunden Nr."; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Keine Abweichung"; +$LANG["phrase_no_option_lists_available"] = "Keine Optionen-Listen zur Verfügung."; +$LANG["phrase_no_views"] = "Nr. Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Keine Ansichten mit Filtern definiert)"; +$LANG["phrase_none_not_recommended"] = "Keine (nicht empfohlen)"; +$LANG["phrase_not_assigned_to_option_list"] = "Dieses Feld ist nicht auf eine Option Liste zugeordnet."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Ist NICHT gleich mit"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "NICHT wie"; +$LANG["phrase_not_visible_to_client"] = "(nicht sichtbar für Kunden)"; +$LANG["phrase_num_clients_per_page"] = "Anzahl Kunden pro Seite"; +$LANG["phrase_num_emails_per_page"] = "Anzahl E-Mails pro Seite"; +$LANG["phrase_num_fields"] = "Anzahl der Felder"; +$LANG["phrase_num_forms_per_page"] = "Anzahl Formulare pro Seite"; +$LANG["phrase_num_menus_per_page"] = "Num Menüs pro Seite"; +$LANG["phrase_num_modules_per_page"] = "Num-Module pro Seite"; +$LANG["phrase_num_option_lists_per_page"] = "Num Option Listen pro Seite"; +$LANG["phrase_num_options"] = "Num-Optionen"; +$LANG["phrase_num_rows"] = "Num Zeilen"; +$LANG["phrase_numbers_only"] = "Nur Zahlen"; +$LANG["phrase_often_localhost"] = "(oft "localhost")"; +$LANG["phrase_on_form_submission"] = "Am Formularübermittlung"; +$LANG["phrase_one_char_number"] = "Mindestens ein Zeichen ist eine Zahl (0-9)"; +$LANG["phrase_one_char_upper"] = "Mindestens ein Zeichen in Großbuchstaben"; +$LANG["phrase_one_special_char"] = "Mindestens eine der {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(nur für bestimmte Kunden haben Zugang)"; +$LANG["phrase_open_form_in_dialog"] = "Offene Form im Dialog-Fenster"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Öffnen Sie dieses Formular in einem neuen Tab / Fenster"; +$LANG["phrase_option_list"] = "Option Liste"; +$LANG["phrase_option_list_name"] = "Option Listenname"; +$LANG["phrase_option_list_or_contents"] = "Option List / Contents"; +$LANG["phrase_option_lists"] = "Option Listen"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Seiten Titel"; +$LANG["phrase_pass_on"] = "weiterleiten"; +$LANG["phrase_password_min"] = "Es müssen mindestens {\$length} Zeichen sein."; +$LANG["phrase_password_one_number"] = "Mindestens eine Zahl (0-9) muss enthalten sein."; +$LANG["phrase_password_one_uppercase"] = "Mindestens ein Großbuchstabe muss enthalten sein."; +$LANG["phrase_password_requirements_c"] = "Passwort Anforderungen:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Mindestens eines der folgenden Zeichen muss enthalten sein: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Berechtigungen / Andere Einstellungen"; +$LANG["phrase_permitted_file_types"] = "Erlaubte Dateien"; +$LANG["phrase_phone_number"] = "Telefonnummer"; +$LANG["phrase_phone_number_format"] = "Phone Number Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini Datei-Upload erlaubt max size:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Bitte bestätigen"; +$LANG["phrase_please_enter_license_key"] = "Bitte geben Sie Ihren Lizenzschlüssel"; +$LANG["phrase_please_select"] = "Bitte selektieren"; +$LANG["phrase_please_select_form"] = "Bitte wählen Sie eine Form"; +$LANG["phrase_prev_client"] = "«Vorherige Client"; +$LANG["phrase_prev_form"] = "«Vorherige Form"; +$LANG["phrase_prevent_password_reuse"] = "Eine erneute Verwendung von # zuletzt benutzten Kennwörtern"; +$LANG["phrase_previous_field"] = "«vorherige Feld"; +$LANG["phrase_previous_page"] = "Vorhergehende Seite"; +$LANG["phrase_previous_view"] = "«Vorherige anzeigen"; +$LANG["phrase_program_name"] = "Programmname"; +$LANG["phrase_public_form_omit_list"] = "Öffentliche Form Omit Liste"; +$LANG["phrase_public_view_omit_list"] = "Public View Omit Liste"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Es gab ein Problem mit der folgenden Abfrage:"; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Willkürlichen Formulareingang"; +$LANG["phrase_re_enter_password"] = "Passwort nochmals eingeben"; +$LANG["phrase_recipient_type"] = "Empfängertyp"; +$LANG["phrase_redirect_url"] = "Weiterschaltung der Internetadresse"; +$LANG["phrase_refresh_list"] = "Liste auffrischen"; +$LANG["phrase_refresh_module_list"] = "Aktualisieren Modul-Liste"; +$LANG["phrase_refresh_page"] = "Seite auffrischen"; +$LANG["phrase_refresh_theme_list"] = "Refresh nach Themen"; +$LANG["phrase_register_new_email"] = "Neu registrieren E-Mail"; +$LANG["phrase_remaining_characters"] = "restlichen Zeichen"; +$LANG["phrase_remaining_words"] = "verbleibenden Wörter"; +$LANG["phrase_remove_tabs"] = "Entfernen Tabs"; +$LANG["phrase_required_password_chars"] = "Benötigte Passwort Zeichen"; +$LANG["phrase_resend_test_submission"] = "TEST EINGANG erneut versenden"; +$LANG["phrase_return_form_list"] = "ZURÜCK ZUR FORMULARLISTE"; +$LANG["phrase_row_selected"] = "{\$num_rows} Zeile markiert"; +$LANG["phrase_rows_selected"] = "{\$num_rows} Zeilen ausgewählt"; +$LANG["phrase_sample_data"] = "Beispiel-Data"; +$LANG["phrase_save_changes"] = "Save Changes"; +$LANG["phrase_search_keyword"] = "Suchbegriff"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Alle auswählen"; +$LANG["phrase_select_all_X_results"] = "Select All {\$numresults} Ergebnisse"; +$LANG["phrase_select_all_on_page"] = "Alle selektieren"; +$LANG["phrase_select_date"] = "Wählen Sie das Datum"; +$LANG["phrase_select_field"] = "Wählen Sie ein Feld"; +$LANG["phrase_select_swatch"] = "Wählen Sie swatch"; +$LANG["phrase_selected_clients"] = "Selektierte Kunden"; +$LANG["phrase_selected_views"] = "Selected views"; +$LANG["phrase_send_email"] = "E-Mail schicken"; +$LANG["phrase_send_test_email"] = "TEST E-MAIL ABSCHICKEN"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Setting Value"; +$LANG["phrase_setup_options"] = "Setup-Optionen"; +$LANG["phrase_show_all"] = "Alle anzeigen"; +$LANG["phrase_show_form"] = "Zeige Formular"; +$LANG["phrase_size_large"] = "Groß (TEXT)"; +$LANG["phrase_size_medium"] = "Mittel (<= 256 Zeichen)"; +$LANG["phrase_size_small"] = "Klein (<= 20 Zeichen)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 Zeichen)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Skip Schritt"; +$LANG["phrase_small_100px"] = "Klein (100px)"; +$LANG["phrase_small_80px"] = "Klein (80px)"; +$LANG["phrase_smart_fill"] = "SMART FILL"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fill Felder aus:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill User Dokumentation »"; +$LANG["phrase_sort_as"] = "Sortieren Als"; +$LANG["phrase_special_fields"] = "Spezialgebiete"; +$LANG["phrase_standard_fields"] = "Standard-Felder"; +$LANG["phrase_standard_filters"] = "Standard-Filter »"; +$LANG["phrase_step_1"] = "Schritt 1"; +$LANG["phrase_step_2"] = "Schritt 2"; +$LANG["phrase_step_3"] = "Schritt 3"; +$LANG["phrase_step_4"] = "Schritt 4"; +$LANG["phrase_step_5"] = "Schritt 5"; +$LANG["phrase_step_6"] = "Schritt 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tags in den Formulareingängen"; +$LANG["phrase_subject_line"] = "Betreff-Zeile"; +$LANG["phrase_submission_date"] = "Eingangsdatum"; +$LANG["phrase_submission_id"] = "Eingangs-ID"; +$LANG["phrase_submission_made"] = "Vorlage aus: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Submission Typ"; +$LANG["phrase_submissions_per_page"] = "Eingänge pro Seite"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Sie können nicht hinzufügen Validierung System Felder aus."; +$LANG["phrase_system_time_offset"] = "Systemzeit Abweichung"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Testverzeichnis Rechte"; +$LANG["phrase_test_submission"] = "Testeingang"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test erhielt Submission"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "E-Mail-Text"; +$LANG["phrase_text_template"] = "Textvorlagen"; +$LANG["phrase_the_previous_month"] = "Dem Vormonat"; +$LANG["phrase_theme_description"] = "Theme Beschreibung"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Alle Resultate:"; +$LANG["phrase_type_c"] = "Fehlertyp:"; +$LANG["phrase_unselect_all"] = "Alle deselektieren"; +$LANG["phrase_update_accounts"] = "Update-Konten"; +$LANG["phrase_update_email_template"] = "Update-Mail-Vorlage"; +$LANG["phrase_update_field"] = "Felder aktualisieren"; +$LANG["phrase_update_order"] = "Update-Auftrag"; +$LANG["phrase_update_view"] = "Update Profil"; +$LANG["phrase_upload_file"] = "Upload File"; +$LANG["phrase_upload_files"] = "Dateien hochladen"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Hochladeverzeichnis Pfad"; +$LANG["phrase_upload_folder_url"] = "Hochladeverzeichnis URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Standardwert verwenden?"; +$LANG["phrase_used_by_num_form_fields"] = "Used by # Formularfelder"; +$LANG["phrase_uses_swatches"] = "Verwendet Farbfelder"; +$LANG["phrase_valid_email"] = "Gültige E-mail"; +$LANG["phrase_validation_error"] = "Fehler bei der Validierung"; +$LANG["phrase_validation_rule"] = "Validierungsregel"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "View Group"; +$LANG["phrase_view_id"] = "Anzeigen-ID"; +$LANG["phrase_view_name"] = "Profil Name"; +$LANG["phrase_view_placeholders"] = "Zeige Platzhalter"; +$LANG["phrase_view_submissions"] = "Profil Submissions"; +$LANG["phrase_view_uploaded_files"] = "hochgeladene Dateien ansehen"; +$LANG["phrase_viewing_range"] = "[Anzeige {\$startnum} bis {\$endnum}]"; +$LANG["phrase_when_sent"] = "Wenn geschickt"; +$LANG["phrase_when_submission_is_deleted"] = "Als Vorlage wird gestrichen"; +$LANG["phrase_when_submission_is_edited"] = "Wenn die Vorlage bearbeitet wird"; +$LANG["phrase_who_can_access"] = "Wer zugreifen können?"; +$LANG["phrase_word_limit_p"] = "Wort zu begrenzen."; +$LANG["phrase_year_to_date"] = "Seit Jahresbeginn"; +$LANG["phrase_yes_for_all_views"] = "Ja, für alle Aufrufe"; +$LANG["phrase_yes_for_specific_views"] = "Ja, für bestimmte Views"; +$LANG["phrase_your_account"] = "Mein Konto"; +$LANG["phrase_your_email"] = "Ihre E-Mail Adresse"; +$LANG["phrase_your_email_address"] = "Ihre E-Mailadresse"; +$LANG["processing_form_disabled"] = "Leider wurde dieses Formular deaktiviert."; +$LANG["processing_form_incomplete"] = "Entschuldigung. Dieses Formular scheint nicht vollständig innerhalb von Form Tools eingerichtet worden zu sein. Die warscheinlichste Ursache dieses Problems ist, dass Sie das versteckte Formularfeld \"form_tools_initialize_form\" entfernt haben, aber nicht alle Schritte im \"Formular hinzufügen\" Vorgang durchgeführt haben.

    Bitte melden Sie sich an und überprüfen Sie die Formular-Einstellungen."; +$LANG["processing_init_complete"] = "Thank you! Your test submission has been put through successfully. Please return to the Form Tools Administration panel and click the \"Refresh\" button at the bottom of the Add Form Step 3 page to finish setting up your form."; +$LANG["processing_invalid_form_id"] = "Sorry, this doesn't appear to be a valid form ID."; +$LANG["processing_no_form_id"] = "process.php benötigt eine Formular ID. Vergewissern Sie sich, dass Ihr Formular ein verstecktes Feld mit dem Namen \"form_tools_form_id\" mit der Formular ID enthält."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Tools ist nicht in der Lage zu bestimmen, wo die Umleitung, wenn sie das CAPTCHA korrekt eingeben scheitern. Bitte leiten Sie in ein verstecktes Feld mit dem Namen form_tools_form_url mit der URL der Form."; +$LANG["processing_no_post_vars"] = "process.php empfängt keine Daten. Achtung: Dieses Skript kann nicht direkt im Browser geladen werden. Stellen Sie sicher, dass Ihr Formular die Daten mit der POST-Methode sendet."; +$LANG["processing_no_redirect_url"] = "The submission was processed correctly, but you haven't specified a redirect URL for this form! Edit your form in the Form Tools UI and add the redirect URL."; +$LANG["special_language"] = "German"; +$LANG["special_language_locale"] = "Deutsch"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Alle neuen Benutzerkonten werden anhand der unterhalb festgelegten Einstellungen und Berechtigungen erstellt. Um Einstellungen einzelner Benutzer zu ändern, bearbeiten Sie das Benutzerkonto und wechseln in die Registerkarte \"Einstellungen\"."; +$LANG["text_add_form_choose_integration_method"] = "Wählen Sie, welche Methode Sie verwenden, um das Formular mit Formular-Tools integrieren wollen."; +$LANG["text_add_form_code_submission_benefits"] = "Diese Methode verwendet das Formular Tools API , in der Hauptform Extras Skript eingebunden. Die API stellt eine Reihe hilfreicher Funktionen, um die Aufgabe der Integration Ihrer Form mit Form-Tools so einfach wie möglich zu machen. Es gibt keine Einschränkungen, wie Ihr Formular eingereicht werden, wenn Sie die API nutzen. Sie können den Inhalt in einem Rutsch oder seitenweise übermitteln, Sie können Ihre eigenen benutzerdefinierten serverseitigen Validierung, CAPTCHA Bilder hinzufügen, Sie können wählen, um die Informationen jetzt zu senden, sondern nur sagen, dass es die Vorlage in das Formular-Tools UI-Display zu einem späteren Zeitpunkt (siehe Abgeschlossen Submissions Abschnitt in der API-Hilfe)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Um Ihre Formulardaten via PHP zu beantragen, muss das Formular auf der gleichen Webseite, da diese Form Tools-Installation befinden. Zweitens, für nicht-technische und Anfänger Formwerkzeuge Benutzer kann diese Methode ein wenig einschüchternd auf den ersten sein. Aber es gibt jede Menge Unterlagen, Ihnen zu helfen, darunter auch zwei einfache Übungen für die Integration Ihrer Ein-und mehrseitige Formulare (diese werden zu einem späteren Schritt verknüpft)."; +$LANG["text_add_form_direct_submission_benefits"] = "Dies ist der einfachste Weg, um das Formular zu Formular Tools einzureichen. Es sind keine Kenntnisse in PHP und benötigt nur eine sehr geringe Änderung in Ihrem Formular. Es ist für kleinere Formen große, in dem Sie nur die Informationen an die Datenbank dann die Benutzer an ein "Dankeschön"-Seite."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Diese Vorlage Methode ist sehr einfach zu bedienen, aber keine viel Kontrolle für kompliziertere Formen. Mehrseitige Formulare oder Formulare, die serverseitige Überprüfung erfordern, sind besser, die zweite Methode geeignet: Vorlage über die Form Tools API."; +$LANG["text_add_form_field_types1"] = "Fast fertig! Diese Seite versucht, alle Ihre Formularfelder zu finden und bestimmen ihre Feldtypen. Klicken Sie auf das Smart Fill-Taste auf der rechten Seite, um loszulegen. Sie werden nur zugelassen werden, um fortzufahren, wenn alle Aktionen behoben wurden - Fragen, die Ihre Aufmerksamkeit erfordern in der "Action Needed "-Spalte angezeigt."; +$LANG["text_add_form_field_types2"] = "Wenn Ihre Form ist nicht in HTML, klicken Sie auf die Skip-Step-Taste, um fortzufahren. Dies alles kann später konfiguriert werden."; +$LANG["text_add_form_field_types3"] = "Dieser lädt den Inhalt der Form (en). Hinweis: Es werden alle Änderungen, die Sie auf dieser Seite gemacht haben zu überschreiben."; +$LANG["text_add_form_field_types4"] = "Falls Sie auf Probleme stoßen, klicken Sie hier, um diesen Schritt zu überspringen. Alle ungelösten Feldern gesetzt werden, um die Standardwerte zu verwenden. Sie können diese Felder später anpassen."; +$LANG["text_add_form_field_types_manual_upload"] = "Wenn Sie nicht in der Lage, um Smart Fill Ihre Felder haben, möchten Sie vielleicht eine alternative Lösung versuchen: Upload-Kopien der Formulare in die folgenden Felder aus."; +$LANG["text_add_form_field_types_manual_upload2"] = "Hinweis: Laden Sie keine rohen PHP-Seiten (oder andere Server-Side-Code) - laden Sie einfach den HTML-Versionen. Um diesen, anzeigen und speichern Sie die Seite von Ihrem Web-Browser."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Es gab mehrere Felder, die nicht in der Form angegebene Seite gefunden werden konnte. Dies ist vor allem wahrscheinlich durch eine der folgenden Ursachen:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Sie haben eine oder mehrere der Form URLs Ihrer mehrseitiges Formular falsch."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Eine oder mehrere Seiten des Formulars sind durch ein Passwort geschützt und das Skript konnte nicht auf die Seite zugreifen."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Sie falsch eingegeben Formular URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klicken Sie hier , um die Formulardaten Seite zurückkehren, um Ihre Einstellungen zu überprüfen."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Sie verändert das Formular (s), nachdem Sie den Test Vorlage"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klicken Sie hier , um durch einen weiteren Test Vorlage setzen."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Ihre Form ist durch ein Passwort geschützt und das Skript konnte nicht auf die Seite zugreifen."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "In einem anderen Tab / Fenster des Browsers in das Formular melden Sie sich dann klicken Sie auf die Seite aktualisieren Button unten, um zu versuchen, um wieder zu finden die Felder."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Wenn keiner der oben genannten Lösungen arbeiten, können Sie auch versuchen, manuell zu kopieren Ihre Formulare für die Verarbeitung ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Es gab mehrere Felder, die nicht in der Form Seiten, die Sie angegeben gefunden werden konnte. Dies ist vor allem wahrscheinlich eine von diesen verursacht:"; +$LANG["text_add_form_help_link"] = "Wenn Sie in irgendwelche Schwierigkeiten während dieser Schritte ausgeführt werden, versuchen Auslesen Anwender-Dokumentation ."; +$LANG["text_add_form_step_1_text_1"] = "Die folgenden Seiten führen Sie durch die Schritte zum Konfigurieren Form Tools zum Anzeigen von Formularen zu speichern. Bevor Sie fortfahren, überprüfen Sie bitte, dass:"; +$LANG["text_add_form_step_1_text_2"] = "Ihr Formular wurde bereits erstellt und ist über eine URL erreichbar (localhost ist in Ordnung)"; +$LANG["text_add_form_step_1_text_3"] = "der Lage sind, Ihr Formular bearbeiten"; +$LANG["text_add_form_step_2_para_2"] = "Öffnen Sie nun das Formular in einem Editor und passen Sie das
    tag und die zwei hidden fields an, wie folgt:"; +$LANG["text_add_form_step_2_para_3"] = "Als nächstes öffnen Sie die Form, in einem Web-Browser. Füllen Sie alle Felder und schicken es ab. Nach dem Absenden sollten Sie eine Meldung angezeigt. Nachdem diese Meldung angezeigt wird, kehren Sie zu dieser Seite aus und klicken Sie auf die Schaltfläche "Aktualisieren" unten. Wenn dieser Vorgang abgeschlossen ist, sehen Sie eine Schaltfläche unten weiter, wobei Sie mit dem nächsten Schritt."; +$LANG["text_add_form_step_2_para_6"] = "In Ihrem Formular Einreichung, gehören die folgenden Werte ein. Sie können direkt via PHP gesetzt werden oder ging weiter durch die Form selbst ist. Im Folgenden finden Sie Beispiele für jeden. Die (\$ varname) ist ein Hash (oder assoziatives Array) aller Formularübermittlung Informationen - dies ist in der Regel (\$ postvar) oder (\$ sessionvar) variabel, sie kann aber auch einzeln angefertigt."; +$LANG["text_add_form_step_2_text_2"] = "Geben Sie die URL Ihrer "Dankeschön "-Seite hier. Hier finden Sie die Menschen zu richten, nachdem das Formular abgeschickt hat wollen."; +$LANG["text_add_form_step_3_para_1"] = "Diese Seite listet alle Felder in Ihrem Formular. Bitte prüfen jedes Feld und entfernen Sie, dass Sie nicht für jede Vorlage gespeichert werden müssen. Löschen Sie eine gültige Bereich durch Zufall, oder möchten die gespeicherten Daten modifizieren Ihrem Formular zurückzukehren, um zur vorherigen Seite zu einem neuen Test Vorlage senden."; +$LANG["text_add_form_step_3_para_2"] = "Hinweis: Wenn Sie mehrere Werte über Checkboxen oder ein Multi-Select-Box, schicken sie sicherstellen, dass Ihre Feldnamen endet mit der []-Zeichen (siehe Benutzer-Dokumentation für weitere Informationen)."; +$LANG["text_add_form_step_3_text_1"] = "Hier, wo der Spaß beginnt! An dieser Stelle ist Formwerkzeuge für einen Test Einreichung von Formular warten. Es wird mit diesem Formular Vorlage zu wissen, welche Informationen in der Datenbank gespeichert werden."; +$LANG["text_add_form_step_3_text_2"] = ", indem Sie im Formular in die Formularansicht Tools"; +$LANG["text_add_form_step_3_text_3"] = "mit dem Formular-Tools-API"; +$LANG["text_add_form_step_3_text_4"] = "Um das Formular zu integrieren, empfehlen wir Ihnen, lesen Sie eine der folgenden Tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "Sie erklären, wie Sie Ihr Formular in Vorbereitung auf die Prüfung Vorlage, und auch andere Informationen, die der helfen kann. Die Linie von PHP werden Sie brauchen, ist:"; +$LANG["text_add_form_step_3_text_6"] = "Dadurch wird sichergestellt, werden die Daten tatsächlich in Form Tools gesendet. Wenn Sie durch Ihre Test-Vorlage, klicken Sie auf den Button unten setzen."; +$LANG["text_add_form_step_3_text_7"] = "Auf der Seite bevor Sie Ihre endgültige "Danke"-Seite, sollten Sie die folgenden Parameter an die Variable \$ params hinzufügen:"; +$LANG["text_add_form_step_5_para_1"] = "Die Datenbank wurde eingerichtet, um für diese Form und die Form wurde für die Verwendung aktiviert. Wenn Sie aus der Vorlage, indem Sie im Formular process.php, kehren Sie auf Ihr Formular und entfernen Sie die folgenden verstecktes Feld:"; +$LANG["text_add_form_step_5_para_2"] = "Dann besuchen Sie "Danke"-Seite, an den Sitzungen leer. Sobald dies erledigt ist, werden alle neuen Formularen verarbeitet werden und durch Form Tools gespeichert. Versuchen Sie, eine Vorlage oder zwei, die Informationen zu überprüfen ist alles korrekt hochgeladen."; +$LANG["text_add_form_step_5_para_3"] = "Wenn Sie möchten, feine Optimieren Sie Ihre Form für die Optionen wie die automatische E-Mail, das Hinzufügen zusätzlicher Formularfelder Feld oder das Anpassen der Form Feldtypen, können Sie Ihr Formular an jeder beliebigen Stelle bearbeiten."; +$LANG["text_add_form_step_5_para_4"] = "Da Ihr Formular enthält Datei-Upload-Felder können, benötigen Sie zur Konfiguration jedes Feld, um die Datei-Upload-Ordner angeben, welche Dateien erlaubt sind und. Dies kann auf der Registerkarte Anzeige des Bearbeitungs-Formulars Seite gefunden werden."; +$LANG["text_add_form_step_5_para_5"] = "Wenn die Vorlage wurde über die API Schnittstelle versandt, ändern Sie die ft_api_init_form_page Linie auf der ersten Seite des Formulars an:"; +$LANG["text_add_submission_button"] = "Das Add Submission-Taste erscheint nur für Aufrufe, die haben "Mai Einreichungen add " Option auf "Ja "."; +$LANG["text_admin_email_placeholder_info"] = "Dies ist die E-Mail-Adresse der Form Tools Administrator in Ihrem Konto-Einstellungen definiert. Diese gibt nur die E-Mail-Adresse, so dass, wenn Sie als HTML-Link verwenden möchten, müssen Sie es in einem Tag <a> wickeln, etwa so:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ AdminEmail) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Auch die Standard-Login-Seite Thema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Zuerst wählen Sie bitte das Formular aus."; +$LANG["text_client_form_page"] = "Diese Seite listet alle Formulare und Ansichten für diesen Client vergeben. Tipp: Um für sie zu einem Formular-Vorlagen sehen, müssen sie mindestens ein Profil zugeordnet werden."; +$LANG["text_client_map_filters_desc1"] = "Client Karte Filtern können Sie begrenzen die Stellungnahmen, die in dieser Ansicht angezeigt werden durch die Abbildung der Werte in ein Formularfeld, um die Werte in einer Client-Konto."; +$LANG["text_client_no_forms"] = "Es sind keine Formulare eingegangen."; +$LANG["text_client_welcome"] = "Willkommen! Das Programm speichert alle Informationen, die die Besucher Ihrer Website eingereicht werden. Um Beiträge Ansicht für eine bestimmte Form klicken Sie einfach auf den Link "Anzeigen, oder schauen Sie das linke Navigationsmenü für andere Optionen."; +$LANG["text_config_file_created"] = "Ihre config.php Datei erstellt wurde."; +$LANG["text_config_file_not_created"] = "Wir konnten nicht erstellen Sie Ihre Datei config.php. Sie müssen die Datei manuell zu erstellen."; +$LANG["text_config_file_not_created_instructions"] = "Kopieren Sie den Inhalt aus dem folgenden Abschnitt in einer Datei namens config.php und laden Sie per FTP auf die Form Tools / global-Ordner (Ordner, enthält auch ein paar andere Dateien und Verzeichnisse, Datei ein library.php genannt)."; +$LANG["text_confirm_delete_form"] = "Ja, ich will dieses Formular löschen"; +$LANG["text_create_admin_account"] = "Jetzt werden wir an den Administrator-Konto erstellen. Dies ist für die Verwaltung aller Aspekte der Form Tools, wie zB das Hinzufügen von Formularen und Erstellung von Client-Konten verwendet."; +$LANG["text_create_new_client_account"] = "Verwenden Sie das untenstehende Formular aus, um eine neue Client-Konto. Alle Felder sind erforderlich."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "siehe PHP {\$datefunctionlink} Funktion für die Formatierung Optionen"; +$LANG["text_default_file_settings_page"] = "Diese Seite definiert die Datei-Upload-Einstellungen für Ihre Form Tools Installation. Diese Regeln gelten für alle in Form Tools hochgeladenen Dateien, falls es nicht explizit für ein einzelnes Feld anders festgelegt worden ist. Hinweis: Wenn Sie den Upload-Ordner nachdem Dateien hochgeladen wurden ändern, werden sie automatisch in den neuen Ordner verschoben."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Bevor wir fortfahren, müssen Sie Ihre / themes Update / default / Cache-Ordner auf, vollständigen Lese-und Schreibrechte. Sobald dies erledigt ist, wird diese Meldung verschwinden und Sie können das Skript zu installieren."; +$LANG["text_default_values_in_view"] = "Dieser Abschnitt ist optional. Alle Einreichungen mit dieser Ansicht erstellt werden, enthalten die Standardwerte hier angegebenen."; +$LANG["text_delete_all_forms"] = "Ich möchte alle Dateien die via diesem Formular hochgeladen wurden löschen."; +$LANG["text_delete_form_warning"] = "Sind Sie sicher, dass Sie das Formular löschen wollen? Diese Aktion kann nicht rückgängig gemacht werden. Alle Data wir für immer verloren gehen!"; +$LANG["text_edit_admin_menu_page"] = "Sie können Ihr Menü Bearbeiten unten. Damit Sie jederzeit Zugriff auf alle Funktionen zur Verfügung in Form Tools auf den folgenden Seiten sind erforderlich: Forms, Kunden, Ihr Konto, Module, Einstellungen und Logout."; +$LANG["text_edit_client_menu_page"] = "In diesem Abschnitt können Sie das linke Navigationsspalte für jeden Benutzer. Sie erstellen können beliebig viele Client-Menüs wie man möchte und weisen keinen Fall zu einer von ihnen. Standardmäßig gibt es zwei Menüs: ein für Sie als Administrator an, und ein für alle Client-Konten. Das Administratorkonto kann geändert werden, aber nicht entfernt."; +$LANG["text_edit_tab_summary"] = "Wenn Sie diese Ansicht auf den Feldern in Registerkarten Gruppe wünschen, geben Sie einfach die Tab-Namen unter. Nachdem Sie fertig sind, wählen Sie die entsprechende Registerkarte für jedes Feld Gruppe in der Registerkarte Felder ."; +$LANG["text_edit_view_list_page"] = "Dieses Register steuert, welche Felder als Spalten auf der Submission Listing Seite, und ein paar zusätzliche Einstellungen für die Felder. Hinweis: Wir empfehlen Ihnen, fügen Sie nicht mehr als 4 oder 5 der wichtigsten Felder in der Ansicht."; +$LANG["text_email_settings_intro"] = "Auf dieser Seite können Sie erkennen, welche Felder des Formulars E-Mails zu speichern und den entsprechenden Namen. Sobald Sie sie hier definieren, können Sie sie in Ihrem E-Mail-Vorlagen als Empfänger. Dieser Abschnitt ist optional."; +$LANG["text_email_tab_summary"] = "Dieser Abschnitt ermöglicht Ihnen, eine beliebige Anzahl von E-Mails verschickt werden sollen, wenn Ihr Formular abgeschickt wird, und andere Auslöser."; +$LANG["text_email_template_tab"] = "In diesem Bereich können Sie festlegen, welche Inhalte in der E-Mail angezeigt. Wenn Sie Ihre E-Mail nur als Text-oder E-Mail zu senden, nur ein Wert für diesen Abschnitt in Kraft. Wenn Sie einen Wert für beide eingeben, wird die E-Mail in beiden Formaten gesendet werden."; +$LANG["text_email_template_text_1"] = "Es gibt eine Vorlage durch Ihre Form, {\$FORMNAME} erzielt wurden."; +$LANG["text_email_template_text_1_c"] = "Es gibt eine Vorlage durch Ihre Form gestellt wurde, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Vielen Dank für Ihre Einreichung!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Fehlermeldung um zu zeigen, wenn das Feld nicht der Validierung"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Externe Formen sind Formen, die bereits auf Ihrer Webseite oder irgendwo im Web gibt. Wählen Sie diese Option, wenn Sie Ihre eigene Form, die Sie gerne mit Form-Tools integrieren müsste."; +$LANG["text_fields_tab_summary"] = "Diese Seite listet alle Ihre Formularfelder. Um zu steuern, wie sie beim Surfen Einsendungen erscheinen, finden Sie in der Registerkarte Ansichten . Löschen eines Feldes auf dieser Seite wird es aus allen Einsendungen zu löschen, so seien Sie bitte vorsichtig!"; +$LANG["text_file_extension_info"] = "Geben Sie Dateierweiterungen mit Komma getrennt (zB jpg, gif, png) oder leer lassen, um alle Dateitypen zu ermöglichen."; +$LANG["text_file_field_placeholders_info"] = "Datei-Felder haben zwei spezielle Platzhalter: FileURL-und Dateinamen. FileURL ist die vollständige URL der Datei, so dass Sie einen direkten Link, um es in Ihrer E-Mails; FILENAME ist nur der Dateiname."; +$LANG["text_filters_page"] = "Nur die Anträge, dass die Regeln, die Sie unten in dieser Ansicht angezeigt definieren zu erfüllen."; +$LANG["text_filters_tips"] = "Für Tipps zur Einreichung Filter, finden Sie in der Benutzerdokumentation."; +$LANG["text_forgot_password"] = "Kein Problem. Geben Sie einfach unten Ihren Benutzernamen und Ihre Login-Daten Ihre E-Mail-Adresse, die gesendet werden. Wenn Sie Ihren Benutzernamen vergessen haben, bitte E-Mail an den Administrator der Website {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Dieses Formular enthält eines oder mehrere Felder um Dateien hochzuladen:"; +$LANG["text_form_placeholder_info"] = "Folgende Platzhalter können in jeder E-Mail-Vorlage und Sprache Platzhalter-Feld verwendet werden, unabhängig davon, was anzeigen E-Mail-Template zugeordnet ist. Die Frage Platzhalter sind die spezifische Form Frage, die Antwort Platzhalter sind die Antworten auf jede Frage."; +$LANG["text_form_submission_date_placeholder"] = "Der Zeitpunkt der Vorlage gemacht wurde."; +$LANG["text_form_tools_form_url"] = "Die vollständige URL des Formulars. Das hat nur einen Wert für externe Formen."; +$LANG["text_form_tools_login_url"] = "Die Anmelde-URL für Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Hinweis: Diese Form hat derzeit Administrator Zugang Art, so dass keiner der Kunden-Accounts können diese Ansicht zu sehen."; +$LANG["text_form_view_permission_info_private"] = "Hinweis: Diese Form hat derzeit Privater Zugang Art, so dass die öffentlichen und privaten Möglichkeiten hier, um die Teilmenge der Kunden begrenzt."; +$LANG["text_ft_installed"] = "Herzlichen Glückwunsch, wurde Form Tools erfolgreich installiert!"; +$LANG["text_global_placeholder_info"] = "Diese Platzhalter können in einer Vorlage und jede Form verwendet werden."; +$LANG["text_group_name_explanation"] = "Für Felder hat durch den Prozess Formular hinzufügen, wird dieser Wert bereits gefüllt, um das Display den Text gleich welcher Bereich verwendet den Wert. Es kann sinnvoll sein, sie zu ändern, um die Inhalte besser zu charakterisieren."; +$LANG["text_install_create_config_file"] = "Werkzeuge speichert Ihre Server und Datenbank-Einstellungen in einer Datei namens config.php, fand in Ihrer / global / Ordner. Klicken Sie auf die "Create File"-Taste, um automatisch die Datei auf Ihrem Server zu erzeugen."; +$LANG["text_install_create_database_tables"] = "Jetzt werden wir in die Form-Tools Datenbank-Tabellen zu erstellen. Dieser Schritt erfordert die Datenbank selbst bereits geschaffen worden. Wenn Sie nicht sicher sind, wie dies zu tun, kontaktieren Sie bitte Ihren Hosting-Anbieter."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" bedeutet normalerweise, dass die von Ihnen angegebene Hostname nicht korrekt ist. Vielleicht versuchen Sie, diese Einstellung auf "localhost" - dies ist ein gemeinsamer Weg, auf die "local"-Datenbank auf einem Web-Server."; +$LANG["text_install_db_tables_error_tip_2"] = ""Kann keine Verbindung zum lokalen MySQL-Server über Socket" die Datenbank Hostname Feld ist wieder falsch."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" bedeutet, dass es ein Problem mit Ihrem Usernamen / Passwort-Kombination."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... to database ..." bedeutet, dass wenn Sie Ihren Benutzernamen und Passwort, das Sie versorgt richtig ist, nicht in der Lage war, dass bestimmte Datenbank mit diesem Konto in Verbindung zu treten. Dies kann bedeuten, dass entweder die Datenbank nicht korrekt ist, oder dass dieses Benutzerkonto nicht mit der Datenbank verbunden."; +$LANG["text_install_email_content_text"] = "Auf unserer Website finden Sie zahlreiche Ressourcen, die Ihnen den Einstieg erleichtern, einschließlich unserer Online-Dokumentation (https://docs.formtools.org) und Tutorials (https://docs.formtools.org/tutorials). Wenn Sie feststellen, dass Sie stecken bleiben oder eine Frage haben, stellen Sie eine Frage zu github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Sorry, Formular-Tools nicht in der Lage sein auf dem Server ausgeführt werden. Bitte klicken Sie hier für die Mindestanforderungen."; +$LANG["text_install_system_check"] = "Diese Seite läuft ein paar Tests auf Ihrem System zu gewährleisten, ist es in der Lage, Form Tools ausgeführt werden."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Interne Formen existieren nur innerhalb Formular Tools - nicht an anderer Stelle auf Ihrer Website. Nur Formwerkzeuge Benutzerkonten haben Zugriff auf das Formular. Wählen Sie diese Option, wenn Sie nicht über ein bestehendes Formular."; +$LANG["text_internal_form_intro"] = "Verwenden Sie das untenstehende Formular, um eine neue interne Formular zu erstellen. Alle Einstellungen, einschließlich der Anzahl und der Inhalt der Formularfelder können geändert werden und konfiguriert werden später."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Um sich bei Form Tools anmelden und es nutzen zu können, muss Javascript in Ihrem Browser freigegeben sein. Bitte geben Sie es nun frei und aktualisieren Sie die Ansicht."; +$LANG["text_last_modified_date_explanation_c"] = "Das letzte Mal in dieser Vorlage wurde geändert. Für neue Anträge, das ist das gleiche wie:"; +$LANG["text_limit_email_content_desc"] = "Diese Option funktioniert nur für HTML-und Text-Inhalte mit Smarty Loops generiert."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(Views werden nur mit einem oder mehreren definierten Filter)"; +$LANG["text_log_in_to_ft"] = "Melden Sie sich in Form Tools"; +$LANG["text_login"] = "Bitte loggen Sie sich unten auf der Programmname) (\$ Administration Panel zugreifen. Wenn Sie Ihr Passwort vergessen haben, klicken Sie bitte hier vergessen."; +$LANG["text_login_info"] = "Hiermit erhalten Sie Ihre angefragte Anmeldeinformation."; +$LANG["text_name_of_form"] = "Der Name des Formulars."; +$LANG["text_no_clients"] = "Es wurden keine Kunden in der Datenbank gefunden. Klicken Sie \"Kunde hinzufügen\", um ein Kundenkonto einzurichten."; +$LANG["text_no_clients_found"] = "Keine Kunden gefunden. Erweitern Sie die Suche Kriterien."; +$LANG["text_no_fields_in_view"] = "Diese Ansicht hat keine Felder in sie. Klicken Sie auf den Link unten."; +$LANG["text_no_forms"] = "Momentan gibt es keine Formulare in der Datenbank. Klicken Sie \"Formular hinzufügen\", um ein neues Formular hinzuzufügen."; +$LANG["text_no_forms_found"] = "Keine Formen gefunden wurden."; +$LANG["text_no_forms_found_search"] = "Keine Formen gefunden wurden. Versuchen Sie erweitern Ihren Suchkriterien entsprechen."; +$LANG["text_no_modules_found"] = "Keine Module gefunden. Erweitern Sie die Suche Kriterien."; +$LANG["text_no_recipients_added"] = "Keine Empfänger wurden hinzugefügt."; +$LANG["text_no_search_results"] = "Es gibt keine Ergebnisse mit diesem Suchkriterien / View."; +$LANG["text_no_submissions_found"] = "Leider wurden keine Beiträge gefunden."; +$LANG["text_no_themes"] = "Sie haben noch keine Themen festgelegt. Klicken Sie auf die Schaltfläche unten, um Ihr Thema Liste zu aktualisieren, oder die Form-Werkzeuge Anwender-Dokumentation für Informationen zum Hinzufügen von Themen."; +$LANG["text_non_deletable_fields"] = "Dieses Feld wird von der Core-Skript verwendet und können nicht bearbeitet oder gelöscht werden, ohne dass es Inkompatibilitäten. Wenn Sie Änderungen an den Feldtyp machen wollen, machen Sie eine Kopie davon und die Kopie bearbeiten."; +$LANG["text_option_list_group_explanation"] = "Wenn diese Option aktiviert ist, lässt sie in den Optionen-Gruppe. Wie die Gruppen angezeigt werden, hängt vom Feldtyp mit dieser Option Liste."; +$LANG["text_option_list_page"] = "Radio-Buttons, Checkboxen, Dropdown-Listen und multi-select Dropdown-Felder alle bieten dem Anwender vielfältige Optionen, aus denen sie ein oder mehrere Elemente auswählen können. In Form Tools, werden diese als Option Listen bekannt. Im Allgemeinen sind diese automatisch durch die erstellt abgeben Formular Prozess, aber Sie können manuell hinzufügen oder bearbeiten Sie Ihre Option listet unten, wenn das Formular Inhalte geändert oder konstruieren Sie Felder, die nur intern verwendet werden."; +$LANG["text_option_list_used_by_fields"] = "Diese Option Liste wird von mehreren Formularfeldern verwendet. Wenn Sie die Informationen zu aktualisieren unten, wird es für alle Felder (siehe geändert werden Formularfelder Registerkarte, um die Liste der Felder zu sehen). Wenn Sie die Werte für einen oder eine Teilmenge der Felder, die derzeit zugeordnet sind aktualisieren möchten, klicken Sie hier , um eine neue Option Liste mit den gleichen Werten wie dieses zu schaffen. Dann können Sie nun die Formularfelder, die Sie wollen in die neue Gruppe."; +$LANG["text_public_form_omit_list_page"] = "Öffentliche Formen geben Ihnen die lassen alle Client-Konten zugreifen, ohne dass jeder Client manuell zuweisen, um sie zu profitieren. Auf dieser Seite können Sie ermitteln die Kunden, die möglicherweise nicht auf diese Form, auch wenn die Form ist als öffentlich markiert."; +$LANG["text_public_view_omit_list_page"] = "Öffentliche Aufrufe geben Ihnen die lassen alle Client-Konten zugreifen, ohne dass jeder Client manuell zuweisen, um sie zu profitieren. Auf dieser Seite können Sie ermitteln die Kunden, die möglicherweise nicht auf dieses besondere Profil."; +$LANG["text_reference_tab_info"] = "Diese Seite listet alle verfügbaren Platzhalter für das Formular. Platzhalter sind Strings, die in der E-Mail-Vorlagen verwendet werden können, und Felder mit einer speziellen Platzhalter-Symbol gekennzeichnet . Wenn in ein Feld eingegeben haben, sind sie dynamisch den entsprechenden Wert, wenn das Feld angezeigt wird oder die E-Mail gesendet wird, umgewandelt."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Überprüfen Sie die Benutzer-Dokumentation"; +$LANG["text_send_email_from_edit_submission_page"] = "Fügen Sie diese Option, um E-Mail von Edit Submission Seite versenden"; +$LANG["text_smart_fill_option_list_problem"] = "Wir waren unfähig, Smart Fill Ihrem Bereich Optionen. Doch als Alternative können Sie versuchen, das Hochladen einer Kopie Ihrer Formular-Seite in das Feld unten. Hinweis: Laden Sie keine rohen PHP-Seiten (oder andere Server-Side-Code) - laden Sie einfach die HTML-Version. Um diesen, anzeigen und speichern Sie die Seite von Ihrem Web-Browser."; +$LANG["text_submission_ip_address"] = "Die IP-Adresse des Benutzers, der die Vorlage aus."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Benutzen Sie das Formular unten, um entweder oder Senden Sie ein E-Mail generiert aus dieser E-Mail-Vorlage. Die E-Mail ist nur auf den unten angegebenen E-Mail geschickt, die Haupt-, CC und BCC Empfängern E-Mail-Adresse werden ignoriert beim Testen."; +$LANG["text_test_email_templates_no_submissions"] = "Um Ihre E-Mail-Test Vorlagen, müssen Sie zum ersten Mal mit mindestens einem Formular."; +$LANG["text_theme_page_intro"] = "Diese Seite listet alle Ihre Themen. Klicken Sie auf ein Vorschaubild, um eine vergrößerte Beispiel Stile des Themas. Die "aktiviert" Kontrollkästchen legt fest, ob dieses Thema von den Kunden ausgewählt werden können. Um alle verfügbaren Themen zu durchsuchen, besuchen Sie die Website Form Tools."; +$LANG["text_tutorial_adding_first_form"] = "Lernprogramm: Hinzufügen von Ihrem ersten Formular aus!"; +$LANG["text_unique_submission_id"] = "Die einzigartige ID Vorlage."; +$LANG["text_unused_option_list"] = "Diese Option Liste ist nicht durch irgendeine Form Bereichen eingesetzt."; +$LANG["text_upgraded"] = "Ihre Installation ist zu {\$version} aktualisierte"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Diese Option Liste wird von den folgenden Bereichen eingesetzt."; +$LANG["text_view_fields_info"] = "Dieses Register steuert, welche Felder angezeigt, wenn der Bearbeitung einer Vorlage in diesem View, deren Reihenfolge und ob sie bearbeitet werden oder nicht."; +$LANG["text_view_tab_summary"] = "Auf dieser Registerkarte können Sie verschiedene Möglichkeiten, Gruppe und ordnen Sie Ihre Daten. Views können Sie benutzerdefinierte Teilmengen von Formulardaten, um sie in überschaubare Einheiten aufgeteilt und zu begrenzen, was die Kunden sehen können oder zu bearbeiten."; +$LANG["validation_account_disabled"] = "Leider ist Ihr Konto gesperrt."; +$LANG["validation_account_not_recognized"] = "Leider wurde der Benutzername nicht erkannt."; +$LANG["validation_account_not_recognized_info"] = "Leider wurde der Benutzername nicht gefunden. Bitte versuchen Sie es nocheinmal oder kontaktieren Sie den Administrator auf der hier unten stehen E-Mailadresse."; +$LANG["validation_account_pending"] = "Ihr Benutzerkonto ist bis zur Genehmigung durch einen Administrator."; +$LANG["validation_check_delete_client"] = "Sind Sie sicher dass Sie dieses Kundenkonto löschen wollen?"; +$LANG["validation_client_password_missing_number"] = "Der Client Kennwort muss mindestens eine Zahl (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Der Kunde Passwort muss mindestens eines der folgenden Zeichen: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Die Client-Kennwort muss mindestens einen Großbuchstaben."; +$LANG["validation_client_password_too_short"] = "Die Client-Kennwort muss lang mindestens {\$number} Zeichen."; +$LANG["validation_col_name_is_reserved_word"] = "Leider ist der Datenbank-Spalte Name ein reserviertes Arbeit in MySQL. Bitte benennen Sie es!"; +$LANG["validation_db_name"] = "Datenbanknamen dürfen keine Punkte oder Schrägstriche enthalten."; +$LANG["validation_db_not_updated_invalid_input"] = "Die datenbank konnte nicht aktualisiert werden. Bitte kontrollieren Sie ob Sie gültige Werte eingeführt haben."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Sorry, muss das Standard-Administrator-und Client-Themen immer aktiviert sein."; +$LANG["validation_default_phone_num_required"] = "Bitte füllen Sie das vollständige Telefonnummer für den <b> { \$ field} </ b> Feld - nur Zahlen."; +$LANG["validation_default_rule_alpha"] = "Bitte nur Buchstaben und Zahlen für die <b> { \$ field} </ b> Bereich."; +$LANG["validation_default_rule_letters_only"] = "Bitte nur Buchstaben für die <b> { \$ field} </ b> ein."; +$LANG["validation_default_rule_numbers_only"] = "Bitte geben Sie nur Zahlen für die <b> { \$ field} </ b> Bereich."; +$LANG["validation_default_rule_required"] = "Bitte geben Sie einen Wert für die <b> { \$ field} </ b> ein."; +$LANG["validation_default_rule_valid_email"] = "Bitte geben Sie eine gültige E-Mail-Adresse für den <b> { \$ field} </ b> ein."; +$LANG["validation_delete_form_confirm"] = "Bitte aktivieren Sie das Kontrollkästchen, um zu bestätigen, dass Sie dieses Formular löschen möchten."; +$LANG["validation_delete_non_empty_option_list"] = "Warnung! Diese Option Liste wird durch einen oder mehrere Formularfelder verwendet. Löschen Sie machen diese Felder nicht mehr richtig funktionieren."; +$LANG["validation_display_names_incomplete"] = "Bitte geben Sie einen Wert für alle Anzeige-Namen oder klicken Sie auf das Smart Fill-Option, sie zu betreten dynamisch."; +$LANG["validation_duplicate_form_field_name"] = "Sie können nicht mehrere Felder mit demselben Feldnamen."; +$LANG["validation_email_not_found_or_invalid"] = "Sorry, die E-Mail in Verbindung mit Ihrem Konto ist entweder nicht vorhanden oder ungültig ist."; +$LANG["validation_folder_invalid_permissions"] = "Die Rechte um Dateien in dem Upload-Verzeichniss zu lesen und zu überschreiben müssen eingestellt werden um diesen Test zu absolvieren (chmod 777 auf Unix)."; +$LANG["validation_folder_not_writable"] = "Das Verzeichnis ist schreibgeschützt."; +$LANG["validation_internal_form_too_many_fields"] = "Leider können Sie nur Formulare mit 1000 Feldern oder weniger erzeugt."; +$LANG["validation_invalid_admin_email"] = "Bitte geben Sie eine gültige E-Mail-Adresse adminstrator."; +$LANG["validation_invalid_admin_username"] = "Ihr Benutzername darf nur aus alphanumerischen Zeichen bestehen (az und 0-9)."; +$LANG["validation_invalid_client_username"] = "Die Client-Benutzernamen dürfen nur aus alphanumerischen Zeichen (az und 0-9)."; +$LANG["validation_invalid_client_username2"] = "Sorry, Benutzername darf nur aus Buchstaben, Ziffern und den Unterstrich. Bitte geben Sie einen neuen Benutzernamen ein."; +$LANG["validation_invalid_column_name"] = "Spaltennamen dürfen nur alphanumerische Zeichen (AZ, 0-9). Bitte überprüfen Sie die Spaltennamen."; +$LANG["validation_invalid_custom_from_email"] = "Bitte geben Sie ein gültiges benutzerdefiniertes Feld "Von" E-Mail-Adresse."; +$LANG["validation_invalid_custom_reply_to_email"] = "Bitte geben Sie eine gültige custom 'Reply-to "E-Mail-Adresse."; +$LANG["validation_invalid_default_sessions_timeout"] = "Bitte geben Sie einen gültigen Wert (eine Zahl) für die Standard-Timeout-Sitzungen."; +$LANG["validation_invalid_email"] = "Bitte geben Sie eine gültige E-Mailadresse ein."; +$LANG["validation_invalid_email_id"] = "Sorry, dass eine ungültige E-Mail-ID."; +$LANG["validation_invalid_folder"] = "Leider scheint dies nicht zu einem gültigen Ordner."; +$LANG["validation_invalid_form_field_names"] = "Formularfelder können nur alphanumerische und Unterstriche (az, 0-9, _), ohne Leerzeichen."; +$LANG["validation_invalid_num_clients_per_page"] = "Bitte geben Sie für die Anzahl der Kundenkonten pro Seite nur Nummern ein."; +$LANG["validation_invalid_num_emails_per_page"] = "Bitte geben Sie nur Ziffern für die E-Mails pro Seite."; +$LANG["validation_invalid_num_form_fields"] = "Bitte geben Sie nur Zahlen in der Anzahl der Felder Feld."; +$LANG["validation_invalid_num_forms_per_page"] = "Bitte geben Sie für die Anzahl der Formulare pro Seite nur Nummern ein."; +$LANG["validation_invalid_num_menus_per_page"] = "Bitte geben Sie nur Zahlen für die Menüs pro Seite."; +$LANG["validation_invalid_num_modules_per_page"] = "Bitte geben Sie nur Zahlen in die Num-Module pro Seite ein."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Bitte geben Sie nur Zahlen in die Num Option Listen pro Seite Bereich."; +$LANG["validation_invalid_num_submissions_per_page"] = "Bitte geben Sie eine gültige Zahl für die Anzahl der Formulareingänge an."; +$LANG["validation_invalid_sessions_timeout"] = "Bitte geben Sie eine gültige Session-Timeout (nur ganze Zahlen!)."; +$LANG["validation_invalid_tab_assign_values"] = "Bitte geben Sie nur Zahlen in der 'von' und 'nach' Felder aus."; +$LANG["validation_invalid_table_prefix"] = "Bitte geben Sie eine Datenbank-Präfix besteht aus Buchstaben und der Unterstrich nur."; +$LANG["validation_invalid_upload_folder"] = "Ihre Server-Installation von PHP hat eine ungültige Einstellung für die Variable upload_tmp_dir. \"{\$upload_folder}\" ist kein gültiger Ordner."; +$LANG["validation_invalid_url"] = "Bitte geben Sie eine gültige URL."; +$LANG["validation_invalid_username"] = "Ihr Benutzername darf nur aus alphanumerischen Zeichen (az und 0-9)."; +$LANG["validation_is_form_active"] = "Bitte bezeichnen Sie das Formular als aktiv oder inaktiv."; +$LANG["validation_menu_name_taken"] = "Leider ist der Menü-Name bereits vergeben. Bitte wählen Sie einen neuen Namen."; +$LANG["validation_modules_search_no_status"] = "Bitte wählen Sie entweder das Kontrollkästchen aktiviert oder deaktiviert."; +$LANG["validation_no_access_type"] = "Bitte geben Sie die Art des Zugangs."; +$LANG["validation_no_account_logout_url"] = "Bitte geben Sie Ihre Logout-URL."; +$LANG["validation_no_account_password_confirmed"] = "Bitte geben Sie Ihrem neuen Passwort."; +$LANG["validation_no_account_password_confirmed2"] = "Bitte wiederholen Sie das neue Kennwort eingeben."; +$LANG["validation_no_admin_email"] = "Bitte geben Sie die Administrator-E-Mail-Adresse."; +$LANG["validation_no_admin_theme"] = "Bitte wählen Sie das Thema für den Administrator-Account."; +$LANG["validation_no_admin_theme_swatch"] = "Bitte wählen Sie ein Farbfeld für den Administrator Thema."; +$LANG["validation_no_client_email"] = "Bitte geben Sie die Client-Mail-Adresse."; +$LANG["validation_no_client_first_name"] = "Bitte geben Sie die Kunden Vornamen."; +$LANG["validation_no_client_last_name"] = "Bitte geben Sie die Kunden Nachnamen."; +$LANG["validation_no_client_login_page"] = "Bitte geben Sie an, welche Seite der Client sollte, wenn sie sich anmelden umgeleitet werden"; +$LANG["validation_no_client_password"] = "Bitte geben Sie das Kennwort des Clients."; +$LANG["validation_no_client_theme_swatch"] = "Bitte wählen Sie einen Standard swatch für die Kundenkonten."; +$LANG["validation_no_client_username"] = "Bitte geben Sie den Benutzername des Clients."; +$LANG["validation_no_column_name"] = "Bitte füllen Sie alle Spaltennamen, oder klicken Sie auf das Smart Fill-Taste, um automatisch füllen sie."; +$LANG["validation_no_column_selected"] = "Bitte wählen Sie mindestens ein Feld als eine Spalte über die Vorlage Inserat Seite angezeigt werden."; +$LANG["validation_no_custom_from_email"] = "Bitte geben Sie die benutzerdefinierte "Von" E-Mail-Adresse."; +$LANG["validation_no_custom_recipient_email"] = "Bitte geben Sie den benutzerdefinierten Empfänger E-Mail-Adresse."; +$LANG["validation_no_custom_reply_to_email"] = "Bitte geben Sie eine benutzerdefinierte \"Antwort an\" E-Mail-Adresse ein."; +$LANG["validation_no_date_format"] = "Bitte geben Sie ein Datum Format ein."; +$LANG["validation_no_db_column_single"] = "Bitte geben Sie die Datenbank Spaltenname."; +$LANG["validation_no_db_hostname"] = "Bitte geben Sie die Datenbank hostname."; +$LANG["validation_no_db_name"] = "Bitte geben Sie den Namen der Datenbank."; +$LANG["validation_no_db_username"] = "Bitte geben Sie die Datenbank für das Konto."; +$LANG["validation_no_default_client_theme"] = "Bitte wählen Sie die Standard-Theme für alle neuen Kunden-Konten."; +$LANG["validation_no_default_language"] = "Bitte selektieren Sie die Standardsprache für Ihre Form Tools Installation."; +$LANG["validation_no_default_sessions_timeout"] = "Bitte geben Sie die Standard-Session-Timeout für Benutzerkonten."; +$LANG["validation_no_display_text"] = "Bitte geben Sie die Anzeige-Text für jedes Feld."; +$LANG["validation_no_display_text_single"] = "Bitte geben Sie die Display-Text-Wert."; +$LANG["validation_no_edit_submission_page_label"] = "Bitte geben Sie die Vorlage Seite bearbeiten Etikett."; +$LANG["validation_no_email"] = "Bitte geben Sie Ihre E-Mailadresse ein"; +$LANG["validation_no_email_config_field"] = "Bitte geben Sie das Formularfeld die Email-Adresse ein."; +$LANG["validation_no_email_content"] = "Bitte geben Sie die E-Mail-Inhalte für mindestens eines der Formate (HTML oder Text)."; +$LANG["validation_no_email_from_field"] = "Bitte die E-Mail 'aus' Feld."; +$LANG["validation_no_email_template_name"] = "Bitte geben Sie die E-Mail-Template-Namen angeben."; +$LANG["validation_no_email_template_view_id"] = "Bitte wählen Sie das Profil, auf die diese E-Mail-Vorlage sollte abgebildet werden."; +$LANG["validation_no_email_template_view_mapping_value"] = "Bitte geben Sie an, wenn die E-Mail gesendet werden soll."; +$LANG["validation_no_enabled_themes"] = "Bitte stellen Sie sicher, dass mindestens ein Thema aktiviert ist."; +$LANG["validation_no_first_name"] = "Bitte geben Sie Ihren Vorname ein."; +$LANG["validation_no_form_field_name"] = "Bitte geben Sie alle Formularfelder Namen."; +$LANG["validation_no_form_field_single"] = "Bitte geben Sie die Form Field-Wert."; +$LANG["validation_no_form_id"] = "Die Formular-ID wurde nicht spezifiert. Bitte melden Sie sich ab und versuchen Sie es noch einmal."; +$LANG["validation_no_form_name"] = "Bitte geben Sie den Formularnamen ein."; +$LANG["validation_no_form_url"] = "Bitte geben Sie die Internetadresse des Formulars ein."; +$LANG["validation_no_last_name"] = "Bitte geben Sie Ihren Nachname ein."; +$LANG["validation_no_login_page"] = "Bitte geben Sie an, welche Seite Sie möchten gesendet werden bei jeder Anmeldung auf"; +$LANG["validation_no_logout_url"] = "Bitte geben Sie die Internetadresse ein, die nach dem Abmeldens gültig ist."; +$LANG["validation_no_main_email_recipient"] = "Bitte geben Sie mindestens eine Haupt-E-Mail-Empfänger (also kein CC oder BCC)."; +$LANG["validation_no_menu"] = "Bitte wählen Sie ein Menü für dieses Benutzerkonto."; +$LANG["validation_no_menu_id"] = "Bitte wählen Sie ein Menü."; +$LANG["validation_no_num_clients_per_page"] = "Bitte geben Sie an wieviele Kundenkonten auf einer Seite angezeigt werden."; +$LANG["validation_no_num_emails_per_page"] = "Bitte geben Sie die Anzahl der E-Mails an Liste per Seite."; +$LANG["validation_no_num_form_fields"] = "Bitte geben Sie die Anzahl der Felder für das Formular."; +$LANG["validation_no_num_forms_per_page"] = "Bitte geben Sie für die Anzahl der Formulare pro Seite an."; +$LANG["validation_no_num_menus_per_page"] = "Bitte geben Sie die Anzahl der Menüs Liste per Seite."; +$LANG["validation_no_num_modules_per_page"] = "Bitte geben Sie die Anzahl der Module pro Seite."; +$LANG["validation_no_num_option_lists_per_page"] = "Bitte geben Sie die Anzahl der Option listet pro Seite."; +$LANG["validation_no_num_submissions_per_page"] = "Geben Sie bitte die Anzahl der Eingänge an, die pro Seite angezeigt werden sollen."; +$LANG["validation_no_option_list_name"] = "Bitte geben Sie die Liste der Optionen zu nennen."; +$LANG["validation_no_page_titles"] = "Bitte geben Sie die Standard Seitentitel für die Benutzerkonten."; +$LANG["validation_no_password"] = "Bitte geben Sie Ihr Passwort ein."; +$LANG["validation_no_program_name"] = "Gebn Sie den Programmnamen an."; +$LANG["validation_no_second_password"] = "Bitte wiederholen Sie Ihr Passwort eingeben."; +$LANG["validation_no_sessions_timeout"] = "Bitte geben Sie die Session-Timeout."; +$LANG["validation_no_smart_fill_values"] = "Bitte geben Sie die Formularfelder Name und die URL der Form."; +$LANG["validation_no_table_prefix"] = "Bitte geben Sie eine Datenbank-Präfix."; +$LANG["validation_no_tabs_defined"] = "Nr. Registerkarten definiert"; +$LANG["validation_no_test_email_recipient"] = "Bitte geben Sie die E-Mail-Adresse, wo wir bei dem Test E-Mail zu senden."; +$LANG["validation_no_test_email_submission_id"] = "Bitte geben Sie die Vorlage ID-Nummer."; +$LANG["validation_no_theme"] = "Bitte wählen Sie ein Thema aus."; +$LANG["validation_no_theme_swatch"] = "Bitte wählen Sie ein Farbfeld für das ausgewählte Thema."; +$LANG["validation_no_timezone_offset"] = "Bitte geben Sie die Zeit ausgeglichen."; +$LANG["validation_no_titles"] = "Bitte geben Sie den Pagetitel ein."; +$LANG["validation_no_two_column_names"] = "Sie dürfen einen Kolumnenamen nicht zweimal verwenden."; +$LANG["validation_no_ui_language"] = "Bitte wählen Sie eine Sprache für die Benutzeroberfläche."; +$LANG["validation_no_url"] = "Bitte geben Sie eine URL."; +$LANG["validation_no_username"] = "Bitte geben Sie Ihren Benutzername ein."; +$LANG["validation_no_username_or_js"] = "Bitte geben Sie Ihren Benutzername ein und schalten Sie JavaScript in Ihrem Browser frei."; +$LANG["validation_no_view_fields"] = "Ihr Profil enthält keine Felder aus! Sie müssen mindestens ein Feld zuweisen, denn es gibt etwas zu zeigen, in Ihrem Profil."; +$LANG["validation_no_view_fields_selected"] = "Bitte wählen Sie ein oder mehrere Felder zur Ansicht hinzuzufügen."; +$LANG["validation_no_view_name"] = "Bitte geben Sie den Namen der Ansicht."; +$LANG["validation_num_rows_to_add"] = "Bitte geben Sie die Anzahl der Reihen an, die hinzugefügt werden sollen."; +$LANG["validation_option_list_name_taken"] = "Leider ist diese Option Liste Name bereits vergeben. Bitte wählen Sie einen neuen Namen."; +$LANG["validation_password_in_password_history"] = "Aus Sicherheitsgründen können Sie nicht in die gleiche Passwort wie jeder der letzten {\$history_size} Passwörter. Bitte geben Sie ein anderes Kennwort."; +$LANG["validation_passwords_different"] = "Die Passwörter sind nicht identisch."; +$LANG["validation_please_enter_search_date_range"] = "Bitte geben Sie den Zeitraum an in dem gesucht werden soll."; +$LANG["validation_please_enter_search_keyword"] = "Bitte geben Sie das Schlüsselwort für die Suche ein."; +$LANG["validation_select_field_type"] = "Bitte wählen Sie einen Feldtyp."; +$LANG["validation_select_submissions_to_copy"] = "Bitte wählen Sie die Einsendungen aus, die Sie kopieren möchten."; +$LANG["validation_select_submissions_to_delete"] = "Bitte selektieren Sie die Eingänge, die Sie löschen wollen."; +$LANG["validation_smart_fill_cannot_fill"] = "Leider konnten wir nicht füllen diesem Bereich."; +$LANG["validation_smart_fill_invalid_field_type"] = "Wir waren nicht in der Lage, um ein Feld zu finden, aber es ist nicht ein Dropdown, Checkbox oder Radio-Gruppe."; +$LANG["validation_smart_fill_no_field_found"] = "Leider konnten wir nicht finden, ein Formularfeld mit diesem Namen auf der angegebenen Seite."; +$LANG["validation_smart_fill_no_page"] = "Bitte suchen Sie die Seite mit dem Feld, das Sie möchten Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Bitte laden Sie alle Seiten in das Formular."; +$LANG["validation_upload_folder_not_writable"] = "Das PHP temporäre Verzeichnis ist schreibgeschützt. Bitte machen Sie das Verzeichnis beschreibbar sonst können keine Dateien von Form Tools (oder einem anderen Programm) hochgeladen werden. Bitte kontaktieren Sie Ihren Hostinganbieter im Falle Sie keinen Root Zugang haben."; +$LANG["validation_upload_html_files_only"] = "Laden Sie nur HTML-Dateien."; +$LANG["validation_username_taken"] = "Leider ist der Benutzername schon in Gebrauch. Bitte wählen Sie einen anderen Benutzernamen."; +$LANG["validation_wrong_password"] = "Leider sind die Passwörter nicht identisch."; +$LANG["word_about"] = "Details"; +$LANG["word_access"] = "Zugang"; +$LANG["word_account"] = "Konto"; +$LANG["word_account_sp"] = "Konten"; +$LANG["word_accounts"] = "Konten"; +$LANG["word_action"] = "Aktion"; +$LANG["word_active"] = "Aktiv"; +$LANG["word_add"] = "Hinzufügen"; +$LANG["word_add_rightarrow"] = "Hinzufügen »"; +$LANG["word_add_uc_rightarrow"] = "Hinzufügen »"; +$LANG["word_administration"] = "Verwaltung"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Nach"; +$LANG["word_aquamarine"] = "Aquamarin"; +$LANG["word_asc"] = "aufsteigend"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« zurück"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Vor"; +$LANG["word_benefits"] = "Vorteile"; +$LANG["word_blue"] = "Blau"; +$LANG["word_cancel"] = "Stornieren"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Kontrollkästchen"; +$LANG["word_checklist"] = "Checkliste"; +$LANG["word_client"] = "Benutzer"; +$LANG["word_client_c"] = "Benutzer:"; +$LANG["word_clients"] = "Benutzer"; +$LANG["word_close"] = "Schließen"; +$LANG["word_code"] = "Code"; +$LANG["word_column"] = "Spalte"; +$LANG["word_columns"] = "Spalten"; +$LANG["word_columns_sp"] = "Spalten"; +$LANG["word_complete"] = "Fertig"; +$LANG["word_configuration"] = "Konfiguration"; +$LANG["word_content"] = "Inhalt"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Fortsetzen »"; +$LANG["word_copy"] = "Kopieren"; +$LANG["word_custom"] = "Benutzerdefiniert"; +$LANG["word_data"] = "Daten"; +$LANG["word_date"] = "Datum"; +$LANG["word_debugging_c"] = "Fehlerbehebung:"; +$LANG["word_delete"] = "Löschen"; +$LANG["word_desc"] = "absteigend"; +$LANG["word_direct"] = "Direkt"; +$LANG["word_disabled"] = "deaktiviert"; +$LANG["word_documentation"] = "Dokumentation"; +$LANG["word_done"] = "Erledigt"; +$LANG["word_drawbacks"] = "Nachteile"; +$LANG["word_dropdown"] = "Auswahlmenu"; +$LANG["word_edit"] = "Bearbeiten"; +$LANG["word_editable"] = "Editierbar"; +$LANG["word_email"] = "E-Mail"; +$LANG["word_email_c"] = "E-Mail:"; +$LANG["word_emails"] = "E-Mails"; +$LANG["word_enabled"] = "Aktiviert"; +$LANG["word_equals"] = "Ist gleich"; +$LANG["word_error"] = "Fehler"; +$LANG["word_error_c"] = "Fehler:"; +$LANG["word_examples_c"] = "Beispiele:"; +$LANG["word_external"] = "Extern"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Feld"; +$LANG["word_field_sp"] = "Feld(er)"; +$LANG["word_fields"] = "Felder"; +$LANG["word_fields_sp"] = "Feld(er)"; +$LANG["word_file"] = "Datei"; +$LANG["word_file_b_uc"] = "[DATEI]"; +$LANG["word_files"] = "Dateien"; +$LANG["word_filters"] = "Filter"; +$LANG["word_filters_sp"] = "Filter (s)"; +$LANG["word_for"] = "nach"; +$LANG["word_form"] = "Formular"; +$LANG["word_form_c"] = "Formular:"; +$LANG["word_formatting"] = "Formatierung"; +$LANG["word_forms"] = "Formulare"; +$LANG["word_found"] = "Gefunden"; +$LANG["word_from"] = "Von"; +$LANG["word_from_c"] = "Von:"; +$LANG["word_general"] = "General"; +$LANG["word_green"] = "Grün"; +$LANG["word_grey"] = "Grau"; +$LANG["word_height"] = "Höhe"; +$LANG["word_help"] = "Hilfe"; +$LANG["word_hidden"] = "Versteckt"; +$LANG["word_highlight"] = "hervorheben"; +$LANG["word_horizontal"] = "horizontal"; +$LANG["word_hour"] = "Stunde"; +$LANG["word_hours"] = "Stunden"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Bild"; +$LANG["word_incomplete"] = "Unvollständig"; +$LANG["word_install"] = "Installieren"; +$LANG["word_installation"] = "Installation"; +$LANG["word_internal"] = "Intern"; +$LANG["word_language"] = "Sprache"; +$LANG["word_large"] = "Groß"; +$LANG["word_like"] = "wie"; +$LANG["word_login"] = "Anmelden"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Abmelden"; +$LANG["word_main"] = "Grundeinstellung"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menü"; +$LANG["word_menus"] = "Menüs"; +$LANG["word_minutes"] = "Minuten"; +$LANG["word_misc"] = "Sonstige"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Module"; +$LANG["word_na"] = "nicht verfügbar"; +$LANG["word_name"] = "Name"; +$LANG["word_name_c"] = "Name:"; +$LANG["word_never"] = "Nie"; +$LANG["word_next_rightarrow"] = "nächste »"; +$LANG["word_next_step_rightarrow"] = "Nächster Schritt »"; +$LANG["word_no"] = "Nein"; +$LANG["word_none"] = "Keine"; +$LANG["word_notes"] = "Notizen"; +$LANG["word_notification"] = "Benachrichtigung"; +$LANG["word_number"] = "Zahl"; +$LANG["word_off"] = "Aus"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "In Ordnung"; +$LANG["word_on"] = "Auf"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Auswahlmöglichkeiten"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Reihenfolge"; +$LANG["word_other"] = "Sonstige"; +$LANG["word_other_c"] = "Sonstige:"; +$LANG["word_page"] = "Seite"; +$LANG["word_page_c"] = "Seite:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Passwort"; +$LANG["word_password_c"] = "Passwort:"; +$LANG["word_pending"] = "offen"; +$LANG["word_permissions"] = "Rechte"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« vorher"; +$LANG["word_private"] = "Nicht öffentlich"; +$LANG["word_public"] = "Öffentlich"; +$LANG["word_purple"] = "Lila"; +$LANG["word_recipient"] = "Empfänger"; +$LANG["word_recipient_sp"] = "Empfänger"; +$LANG["word_red"] = "Rot"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Entfernen"; +$LANG["word_remove_uc_leftarrow"] = "« ENTFERNEN"; +$LANG["word_reply_to"] = "Antwortadresse"; +$LANG["word_reply_to_c"] = "Antwortadresse:"; +$LANG["word_required"] = "Erforderlich"; +$LANG["word_reset"] = "Zurücksetzen"; +$LANG["word_resolved"] = "Gelöst"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "Reihe"; +$LANG["word_search"] = "Suche"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Auswahl"; +$LANG["word_setting"] = "Einstellung"; +$LANG["word_settings"] = "EINSTELLUNGEN"; +$LANG["word_show"] = "Anzeigen"; +$LANG["word_size"] = "Größe"; +$LANG["word_skipped"] = "Übersprungen"; +$LANG["word_small"] = "Klein"; +$LANG["word_solution"] = "Lösung"; +$LANG["word_sortable"] = "sortierbar"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Zeichenkette"; +$LANG["word_subject"] = "Betreff"; +$LANG["word_subject_c"] = "Betreff"; +$LANG["word_submenu"] = "Untermenü"; +$LANG["word_submission"] = "Beitrag"; +$LANG["word_submissions"] = "Beiträge"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Registerkarte"; +$LANG["word_tabs"] = "Registerkarten"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textfeld"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Darstellung"; +$LANG["word_themes"] = "Darstellungen"; +$LANG["word_time"] = "Zeit"; +$LANG["word_tiny"] = "Winzig"; +$LANG["word_tips"] = "Hinweise"; +$LANG["word_today"] = "Heute"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Deinstallieren"; +$LANG["word_unknown"] = "Unbekannt"; +$LANG["word_update"] = "Aktualisieren"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Benutzer"; +$LANG["word_username"] = "Benutzername"; +$LANG["word_username_c"] = "Benutzername:"; +$LANG["word_validation"] = "Bestätigung"; +$LANG["word_value"] = "Wert"; +$LANG["word_value_sp"] = "Wert(e)"; +$LANG["word_verified"] = "Geprüft"; +$LANG["word_verify"] = "Überprüfen"; +$LANG["word_version"] = "Version"; +$LANG["word_vertical"] = "Vertikal"; +$LANG["word_view"] = "Anzeigen"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Warnung!"; +$LANG["word_warning_c"] = "Warnung:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Willkommen!"; +$LANG["word_width_c"] = "Breite:"; +$LANG["word_words"] = "Wörter"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Gelb"; +$LANG["word_yes"] = "Ja"; \ No newline at end of file diff --git a/global/lang/el.php b/global/lang/el.php new file mode 100644 index 00000000..85c19c51 --- /dev/null +++ b/global/lang/el.php @@ -0,0 +1,1219 @@ +Προσοχή! Έχετε επιλέξει {\$num_selected_on_page} παρατηρήσεις σε αυτή τη σελίδα και {\$num_selected_on_other_pages} σε άλλες σελίδες. Παρακαλώ επιλέξτε μια από τις παρακάτω επιλογές:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Προσοχή! Δεν έχετε επιλέξει κανένα παρατηρήσεις σε αυτή τη σελίδα, αλλά έχετε επιλέξει {\$num_selected_on_other_pages} σε άλλες σελίδες. Παρακαλώ επιβεβαιώστε ότι θέλετε να διαγράψετε αυτές τις παρατηρήσεις.
    "; +$LANG["confirm_delete_view"] = "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτή την άποψη;"; +$LANG["confirm_refresh_page"] = "Είστε σίγουροι ότι θέλετε να ανανεώσετε τη σελίδα; Αυτό θα χάσετε τυχόν αλλαγές που έχετε κάνει."; +$LANG["confirm_save_change_before_redirect"] = "Έχουν ένα ή περισσότερα πεδία έχουν ενημερωθεί. Θα θέλατε να αποθηκεύσετε τις αλλαγές σας πριν από την ανακατεύθυνση;"; +$LANG["confirm_smart_fill_db_column_fields"] = "Είστε σίγουροι ότι θέλετε να Smart Συμπληρώστε τα ονόματα των στηλών βάσης δεδομένων; Αυτό θα αντικαταστήσει την ήδη υπάρχουσα αξίες σας."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Αυτή η επιλογή auto-δημιουργεί τα ονόματα των στηλών βάσης δεδομένων με βάση τα πεδία κείμενα της οθόνης, έτσι ώστε τα περιεχόμενα του πίνακα της βάσης δεδομένων είναι πιο εύκολο να διαβάσει."; +$LANG["confirm_smart_fill_display_names"] = "Είστε σίγουροι ότι θέλετε να Smart Συμπληρώστε τα ονόματα Display; Αυτό θα αντικαταστήσει την ήδη υπάρχουσα αξίες σας."; +$LANG["confirm_ungroup_option_list"] = "Είστε σίγουροι ότι θέλετε να καταργήσετε την ομαδοποίηση αυτή τη λίστα την επιλογή; Όλες οι επιλογές θα είναι συγκεντρωμένων σε ένα ενιαίο κατάργηση ομαδοποίησης, λίστα."; +$LANG["confirm_uninstall_module"] = "Είστε σίγουροι ότι θέλετε να καταργήσετε την εγκατάσταση αυτής της ενότητας; Όλα ενότητα δεδομένα θα χαθούν."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Παρ"; +$LANG["date_Friday"] = "Παρασκευή"; +$LANG["date_Mon"] = "Δευτ."; +$LANG["date_Monday"] = "Δευτέρα"; +$LANG["date_PM"] = "Μμ"; +$LANG["date_Sat"] = "Σάβ"; +$LANG["date_Saturday"] = "Σάββατο"; +$LANG["date_Sun"] = "Ήλιος"; +$LANG["date_Sunday"] = "Κυριακή"; +$LANG["date_Thu"] = "Πέμ"; +$LANG["date_Thursday"] = "Πέμπτη"; +$LANG["date_Tue"] = "Τρ"; +$LANG["date_Tuesday"] = "Τρίτη"; +$LANG["date_Wed"] = "Τετ"; +$LANG["date_Wednesday"] = "Τετάρτη"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Απρίλιος"; +$LANG["date_month_August"] = "Αύγουστος"; +$LANG["date_month_December"] = "Δεκέμβριος"; +$LANG["date_month_February"] = "Φεβρουάριος"; +$LANG["date_month_January"] = "Ιανουάριος"; +$LANG["date_month_July"] = "Ιούλιος"; +$LANG["date_month_June"] = "Ιούνιος"; +$LANG["date_month_March"] = "Μάρτιος"; +$LANG["date_month_May"] = "Μπορώ"; +$LANG["date_month_November"] = "Νοέμβριος"; +$LANG["date_month_October"] = "Οκτώβριος"; +$LANG["date_month_September"] = "Σεπτέμβριος"; +$LANG["date_month_short_Apr"] = "Απρίλιος"; +$LANG["date_month_short_Aug"] = "Αύγουστος"; +$LANG["date_month_short_Dec"] = "Δεκέμβριος"; +$LANG["date_month_short_Feb"] = "Φεβρουάριος"; +$LANG["date_month_short_Jan"] = "Ιαν"; +$LANG["date_month_short_Jul"] = "Ιούλιος"; +$LANG["date_month_short_Jun"] = "Ιούνιος"; +$LANG["date_month_short_Mar"] = "Μαρ"; +$LANG["date_month_short_May"] = "Μπορώ"; +$LANG["date_month_short_Nov"] = "Νοέμβριος"; +$LANG["date_month_short_Oct"] = "Οκτώβριος"; +$LANG["date_month_short_Sep"] = "Σεπτέμβριος"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Ο λογαριασμός χρήστη έχει διαγραφεί."; +$LANG["notify_account_updated"] = "Ο λογαριασμός σας έχει ενημερωθεί με επιτυχία."; +$LANG["notify_add_display_values"] = "Προσθήκη Display Αξίες"; +$LANG["notify_admin_menu_updated"] = "Το μενού διοίκηση έχει ενημερωθεί."; +$LANG["notify_admin_theme_overridden"] = "Το θέμα του διαχειριστή έχει χειρισμών."; +$LANG["notify_allow_url_fopen_not_set"] = "Λυπούμαστε, αυτή η δοκιμή δεν μπορεί να τρέχει σε web server σας. Απαιτεί allow_url_fopen να οριστεί σε 1 στο αρχείο php.ini σας. Αυτή η ρύθμιση επιτρέπει στην PHP να έχουν πρόσβαση στα αρχεία μέσω ενός URL, η οποία είναι απαραίτητη για την εκτέλεση της δοκιμής αυτής. Μπορείτε να το δοκιμάσετε το χέρι μεταφορτώνοντας ένα αρχείο σε αυτόν το φάκελο μέσω FTP, στη συνέχεια προσπαθούν να έχουν πρόσβαση στο URL που έχουν προμηθεύσει."; +$LANG["notify_change_temp_password"] = "Απλά συνδεθείτε με έναν προσωρινό κωδικό πρόσβασης. Θα πρέπει να επαναφέρετε τον κωδικό πρόσβασής σας τώρα!"; +$LANG["notify_click_to_edit_new_submission"] = "Κάντε κλικ εδώ για να επεξεργαστείτε τη νέα υποβολή."; +$LANG["notify_client_account_menus_updated"] = "Ο λογαριασμός του πελάτη (α) έχουν ενημερωθεί για το {\$menu_name} μενού. Μπορείτε τώρα να διαγράψετε το μενού που ήταν στο παρελθόν σχετίζεται με το λογαριασμό (-ων)."; +$LANG["notify_client_account_not_updated"] = "Ο λογαριασμός του πελάτη δεν θα μπορούσε να ενημερωθεί."; +$LANG["notify_client_account_themes_updated"] = "Ο λογαριασμός του πελάτη (α) έχουν ενημερωθεί για το {\$theme} θέμα. Μπορείτε να απενεργοποιήσετε τώρα το θέμα στο παρελθόν που συνδέεται με το λογαριασμό (-ων)."; +$LANG["notify_client_account_updated"] = "Ο λογαριασμός πελάτης έχει ενημερωθεί με επιτυχία."; +$LANG["notify_client_menu_deleted"] = "Το μενού πελάτης έχει διαγραφεί."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Το μενού έχει διαγραφεί, αλλά τα εξής λογαριασμούς πελατών τώρα δεν έχουν πλέον ένα μενού! Θα πρέπει να ενημερώσετε τους ακόλουθους λογαριασμούς:"; +$LANG["notify_client_menu_updated"] = "Το μενού πελάτης έχει ενημερωθεί."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Λυπούμαστε, το μενού που μόλις προσπάθησε να διαγράψετε χρησιμοποιείται ήδη από τους πελάτες που αναφέρονται παρακάτω. Για να διαγράψετε το μενού θα πρέπει πρώτα να τοποθετήσει τους πελάτες σε άλλα μενού. Κάντε κλικ στο όνομα του πελάτη για να επεξεργαστείτε το ατομικό λογαριασμό, ή να εκχωρεί σε όλους τους λογαριασμούς σε διαφορετικό μενού χρησιμοποιώντας το αναπτυσσόμενο παρακάτω."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Λυπούμαστε, ένα από τα θέματα που μόλις άτομα με ειδικές ανάγκες έχουν ήδη χρησιμοποιηθεί από τους ακόλουθους λογαριασμούς πελατών. Για να απενεργοποιήσετε το θέμα θα πρέπει πρώτα να αντιστοιχίσετε κάθε πελάτη σε ένα άλλο θέμα. Κάντε κλικ στο όνομα του πελάτη για να επεξεργαστείτε το ατομικό λογαριασμό, ή να εκχωρεί σε όλους τους λογαριασμούς σε ένα θέμα με το αναπτυσσόμενο παρακάτω."; +$LANG["notify_edit_email_fields_link"] = "Κάντε κλικ εδώ για να καθορίσετε ποια πεδία της φόρμας είναι τα πεδία email, ώστε να μπορείτε να τους στόχο σε πρότυπα e-mail σας."; +$LANG["notify_edit_field_new_field"] = "Πρόκειται για ένα νέο πεδίο. Θα χρειαστεί να ενημερώσετε την κεντρική σελίδα, πριν να είναι σε θέση να επεξεργαστείτε πλήρως αυτόν τον τομέα."; +$LANG["notify_edit_option_list_after_save"] = "Πρέπει να επιλέξετε μια λίστα επιλογών και, στη συνέχεια, στην επιλογή Αποθήκευση αλλαγών για να μπορέσετε να το επεξεργαστείτε."; +$LANG["notify_email_field_config_deleted"] = "Η διαμόρφωση του ηλεκτρονικού ταχυδρομείου έχει διαγραφεί."; +$LANG["notify_email_fields_not_updated"] = "Λυπούμαστε, δεν θα μπορούσαμε να ενημερώσετε τα πεδία του email."; +$LANG["notify_email_fields_updated"] = "Έχουν ενημερωθεί Το email πεδία."; +$LANG["notify_email_not_sent"] = "Λυπούμαστε, το ηλεκτρονικό ταχυδρομείο δεν θα μπορούσε να σταλεί. Παρακαλώ επικοινωνήστε με τον διαχειριστή στην παρακάτω διεύθυνση."; +$LANG["notify_email_not_sent_c"] = "Λυπούμαστε, το ηλεκτρονικό ταχυδρομείο δεν θα μπορούσε να σταλεί:"; +$LANG["notify_email_sent"] = "Το ηλεκτρονικό ταχυδρομείο (ες) έχουν αποσταλεί."; +$LANG["notify_email_template_deleted"] = "Το email πρότυπο έχει διαγραφεί."; +$LANG["notify_email_template_updated"] = "Το email πρότυπο έχει ενημερωθεί."; +$LANG["notify_enabled_module_list_updated"] = "Ο κατάλογος των επέτρεψε ενοτήτων έχει ενημερωθεί."; +$LANG["notify_error_saving_fields"] = "Υπήρξε ένα σφάλμα κατά την αποθήκευση τους τομείς."; +$LANG["notify_field_changes_saved"] = "Οι αλλαγές στον τομέα σας (ες) έχουν σωθεί."; +$LANG["notify_field_options_smart_filled"] = "Τα δικαιώματα προαίρεσης αγοράς στον τομέα σας έχουν Smart πληρωθεί."; +$LANG["notify_field_selected"] = "Το πεδίο έχει επιλεγεί. Κάντε κλικ εδώ για να επιστρέψετε στην κύρια λίστα πεδίων."; +$LANG["notify_field_updated"] = "Το πεδίο αυτό έχει ενημερωθεί."; +$LANG["notify_file_not_uploaded"] = "Το αρχείο δεν μπορεί να φορτωθεί."; +$LANG["notify_file_uploaded"] = "Το αρχείο προστέθηκε επιτυχώς."; +$LANG["notify_filters_not_updated"] = "Υπήρξε λάθος κατά την ενημέρωση φίλτρα υποβολή αυτού του πελάτη."; +$LANG["notify_filters_updated"] = "Τα φίλτρα υποβολή ενημέρωση για αυτό τον πελάτη."; +$LANG["notify_folder_correct_permissions"] = "Αυτός ο φάκελος έχει τα σωστά δικαιώματα."; +$LANG["notify_folder_url_match"] = "Ο φάκελος και η διεύθυνση URL φαίνεται να ταιριάζει σωστά."; +$LANG["notify_folder_url_no_access"] = "Η δοκιμή αυτή δεν θα μπορούσε να πραγματοποιηθεί από την PHP ήταν σε θέση να έχει πρόσβαση η διεύθυνση URL. Αυτό προκαλείται συνήθως από το URL που προστατεύεται με κωδικό πρόσβασης με. Htaccess αρχείο."; +$LANG["notify_folder_url_no_match"] = "Αυτός ο φάκελος-URL συνδυασμός δεν φαίνεται να είναι ένας αγώνας."; +$LANG["notify_folder_url_unknown_error"] = "Ένα άγνωστο σφάλμα. Μπορείτε να το δοκιμάσετε το χέρι μεταφορτώνοντας ένα αρχείο σε αυτόν το φάκελο μέσω FTP, στη συνέχεια προσπαθούν να έχουν πρόσβαση στο URL που έχουν προμηθεύσει."; +$LANG["notify_form_access_type_email_info"] = "Αυτή η μορφή έχει το διαχειριστή του τύπου πρόσβασης, έτσι ώστε κανένας πελάτης δεν έχει πρόσβαση σε αυτό και δεν είναι στη λίστα επιλογής παρακάτω."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Λυπούμαστε, μια φόρμα με το ID δεν υπάρχει."; +$LANG["notify_form_field_not_added"] = "Το πεδίο έντυπο « '{\$fieldname}' δεν θα μπορούσε να προστεθεί."; +$LANG["notify_form_field_options_updated"] = "Έχουν ενημερωθεί Οι επιλογές πεδίο φόρμας."; +$LANG["notify_form_field_removed"] = "Πεδίο μορφή αφαιρέθηκε με επιτυχία."; +$LANG["notify_form_fields_removed"] = "Τα πεδία της φόρμας αφαιρέθηκαν με επιτυχία."; +$LANG["notify_form_not_updated_notify_admin"] = "Φόρμα σας δεν θα μπορούσε να ενημερωθεί. Παρακαλώ επικοινωνήστε με τον διαχειριστή για να αναφέρετε αυτό το πρόβλημα."; +$LANG["notify_form_settings_updated"] = "Έχουν ενημερωθεί ρυθμίσεις φόρμα σας με επιτυχία."; +$LANG["notify_form_submission_updated"] = "Η υποβολή έντυπο έχει ενημερωθεί."; +$LANG["notify_form_tabs_updated"] = "Έχουν ενημερωθεί από τις καρτέλες."; +$LANG["notify_form_updated"] = "Το έντυπο έχει ενημερωθεί με επιτυχία."; +$LANG["notify_form_views_updated"] = "Οι απόψεις μορφή έχουν ενημερωθεί."; +$LANG["notify_install_invalid_db_info"] = "Λυπούμαστε, ήμαστε σε θέση να συνδεθεί με τη βάση δεδομένων με τις πληροφορίες που παρέχονται. Το μήνυμα λάθους στη βάση δεδομένων επέστρεψε είναι: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Φόρμα σας έχει δημιουργηθεί! Μπορείτε να ρυθμίσετε τη φόρμα σας με αυτές τις καρτέλες."; +$LANG["notify_invalid_account_information_in_sessions"] = "Οι πληροφορίες λογαριασμού αποθηκεύονται σε συνεδρίες είναι άκυρη. Παρακαλώ συνδεθείτε ξανά κάτω."; +$LANG["notify_invalid_license_key"] = "Συγνώμη, αυτό δεν φαίνεται να είναι ένα έγκυρο κλειδί άδειας. Παρακαλώ δοκιμάστε να εισαγάγετε ξανά."; +$LANG["notify_invalid_permissions"] = "Δεν έχετε τα δικαιώματα για την πρόσβαση σε αυτή τη σελίδα. Έχετε αποσυνδεθεί."; +$LANG["notify_invalid_search_dates"] = "Παρακαλούμε χρησιμοποιήστε την datepicker να εισάγετε μια έγκυρη ημερομηνία ή ημερομηνίες."; +$LANG["notify_invalid_upload_folder"] = "Το upload φάκελος είτε είναι άκυρο ή δεν είναι εγγράψιμο."; +$LANG["notify_lang_list_updated"] = "Ο κατάλογος διατίθεται γλώσσα UI έχει ενημερωθεί."; +$LANG["notify_login_info_emailed"] = "Πληροφορίες σύνδεσής σας έχει αποσταλεί με email."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Ωχ, αυτή η ενότητα είναι ήδη εγκατεστημένο!"; +$LANG["notify_module_installed"] = "Η μονάδα έχει εγκατασταθεί. Κάντε κλικ εδώ για να επιλέξετε τη μονάδα."; +$LANG["notify_module_list_updated"] = "Η ενότητα κατάλογος έχει ενημερωθεί."; +$LANG["notify_module_uninstalled"] = "Η ενότητα έχει απεγκατασταθεί."; +$LANG["notify_module_updated"] = "Το {\$module} ενότητα έχει ενημερωθεί για την {\$version}. Κάντε κλικ εδώ για να επιλέξετε τη μονάδα ."; +$LANG["notify_multi_field_selected"] = "Το πεδίο έχει επιλεγεί. Κάντε κλικ εδώ για να δείτε και να επεξεργαστείτε τις επιλογές στον τομέα."; +$LANG["notify_multi_field_updated"] = "Το πεδίο αυτό έχει ενημερωθεί. Θα μπορείτε να ρυθμίσετε τις επιλογές τομέα μετά τη σύσταση της μορφή."; +$LANG["notify_multiple_fields_found"] = "Πολλαπλές στοιχεία βρέθηκαν με αυτό το όνομα τομέα ({\$field_name}). Αυτό μπορεί να συμβεί αν η σελίδα σας περιέχει περισσότερες από μία μορφή ή σε περίπτωση που κατά λάθος το όνομα μία από τις μορφές σας το ίδιο με ένα άλλο. Παρακαλείσθε να επιλέξετε αυτό που θέλετε από τη λίστα παρακάτω."; +$LANG["notify_new_default_view_created"] = "Μια νέα, προεπιλεγμένη προβολή που περιέχει όλα τα πεδία φόρμας σας έχει δημιουργηθεί."; +$LANG["notify_new_submission_created"] = "Η υποβολή έχει δημιουργηθεί. Μπορείτε να το επεξεργαστείτε στη συνέχεια."; +$LANG["notify_no_account_id_in_sessions"] = "Δεν έχετε λογαριασμό χρήστη βρέθηκε σε συνεδρίες. Παρακαλώ συνδεθείτε ξανά κάτω."; +$LANG["notify_no_api_installed"] = "Δεν έχετε εγκατεστημένο το API"; +$LANG["notify_no_client_permissions"] = "Δεν υπάρχουν ρυθμίσεις που είναι διαθέσιμες για επεξεργασία."; +$LANG["notify_no_email_template_selected"] = "Παρακαλώ επιλέξτε το ηλεκτρονικό ταχυδρομείο πρότυπο."; +$LANG["notify_no_emails_defined"] = "Δεν έχουν οριστεί για τα μηνύματα αυτής της μορφής. Για να προσθέσετε ένα νέο, κάντε κλικ στο κουμπί παρακάτω."; +$LANG["notify_no_field_settings"] = "Αυτός ο τύπος τομέα δεν περιέχει καμία επιπλέον ρυθμίσεις."; +$LANG["notify_no_fields_in_tab"] = "Αυτή η καρτέλα δεν περιέχει κάποια πεδία."; +$LANG["notify_no_option_lists"] = "Δεν υπάρχει καμία επιλογή κατάλογοι που ορίζονται. Κάντε κλικ στο κουμπί παρακάτω για να δημιουργήσετε ένα νέο."; +$LANG["notify_no_test_submission"] = "Μορφή εργαλεία δεν έχει λάβει μια επιτυχημένη υποβολή δοκιμή ακόμα."; +$LANG["notify_no_user_email_fields_configured"] = "Σημείωση: αν θέλετε να στείλετε ένα ηλεκτρονικό ταχυδρομείο σε οποιαδήποτε διεύθυνση ηλεκτρονικού ταχυδρομείου που περιέχονται στο έντυπο, πρέπει πρώτα να ρυθμίσετε τα πεδία φόρμα e-mail."; +$LANG["notify_no_views"] = "Φόρμα σας δεν έχει καμία Εμφανίσεις συσταθεί! Θα χρειαστείτε τουλάχιστον μία προβολή, προκειμένου να διαχειρίζεται τα δεδομένα της φόρμας σας."; +$LANG["notify_no_views_assigned_to_client_form"] = "Φαίνεται ότι ο λογαριασμός χρήστη σας δεν έχει ανατεθεί σε οποιοδήποτε Προβολές μορφή, έτσι δεν θα είναι σε θέση να δείτε όλα τα δεδομένα. Παρακαλώ επικοινωνήστε με το διαχειριστή για περαιτέρω βοήθεια."; +$LANG["notify_no_views_defined"] = "Δεν έχετε κανένα Εμφανίσεις ορίζεται. Δεν θα μπορείτε να δείτε υποβολές αυτής της μορφής, εκτός εάν μία τουλάχιστον Προβολή δημιουργείται. Κάντε κλικ στο κουμπί παρακάτω για να δημιουργήσετε την προεπιλεγμένη προβολή."; +$LANG["notify_option_list_deleted"] = "Η λίστα επιλογών έχει διαγραφεί."; +$LANG["notify_option_list_updated"] = "Η λίστα επιλογών έχει ενημερωθεί."; +$LANG["notify_public_form_omit_list_updated"] = "Ο πελάτης παραλείπουν λίστα για αυτό το έντυπο έχει ενημερωθεί."; +$LANG["notify_public_view_omit_list_updated"] = "Ο πελάτης παραλείπουν λίστα για την άποψη αυτή έχει ενημερωθεί."; +$LANG["notify_required_admin_pages"] = "Οι ακόλουθες σελίδες που απαιτούνται στο μενού διαχειριστή: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Λυπούμαστε, δεν υπήρξε καμία δραστηριότητα για κάποιο χρονικό διάστημα έτσι αναγκαστήκαμε να αποσυνδεθείτε. Παρακαλώ συνδεθείτε ξανά κάτω."; +$LANG["notify_setup_options_updated"] = "Έχουν ενημερωθεί Οι επιλογές εγκατάστασης."; +$LANG["notify_smart_fill_field_not_found"] = "Ήμαστε σε θέση να βρείτε ένα πεδίο με αυτό το όνομα ({\$field_name}) με τη μορφή (ες) που έχει καθοριστεί. Μπορείτε να ρυθμίσετε με το χέρι είτε το είδος παρακάτω πεδίο, ή κάντε κλικ στο κουμπί Μετάβαση για να επεξεργαστείτε αυτό τον τομέα αργότερα."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Το αρχείο σας (ες) είχαν φορτωθεί με επιτυχία. Δοκιμάστε να κάνετε κλικ στο Smart Συμπληρώστε το κουμπί για να προσπαθήσει ξανά. Εάν αυτό το βήμα αποτύχει, θα πρέπει να παραλείψετε αυτό το βήμα και να ρυθμίσετε τα πεδία της φόρμας σας manally αργότερα."; +$LANG["notify_smart_fill_submitted"] = "Το έντυπο έχει υποβληθεί. Ανάλογα με το μέγεθος της φόρμας σας και τον αριθμό των επιλογών στον τομέα, αυτό μπορεί να πάρει κάποιο χρόνο."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Λυπούμαστε, ένα ή περισσότερα από τα αρχεία που έχετε εισάγει δεν θα μπορούσε να ανεβάσει. Θα πρέπει να παραλείψετε αυτό το βήμα και να ρυθμίσετε τα πεδία με το χέρι."; +$LANG["notify_submission_and_files_deleted"] = "Η υποβολή και κάθε αρχείο (α) που σχετίζονται με αυτό διαγράφηκαν με επιτυχία."; +$LANG["notify_submission_copied"] = "Η υποβολή έχει αντιγραφεί."; +$LANG["notify_submission_copied_edit"] = "Η υποβολή έχει αντιγραφεί. Μπορείτε να το επεξεργαστείτε παρακάτω."; +$LANG["notify_submission_deleted"] = "Η υποβολή διαγράφηκε επιτυχώς."; +$LANG["notify_submission_deleted_with_problems"] = "Η υποβολή διαγράφηκε, αλλά τα ακόλουθα προβλήματα που συναντούν όταν προσπαθούν να διαγράψετε το ακόλουθο αρχείο (α):"; +$LANG["notify_submission_id_not_found"] = "Η υποβολή ID δεν βρέθηκε."; +$LANG["notify_submission_not_updated"] = "Η υποβολή δεν θα μπορούσε να ενημερωθεί."; +$LANG["notify_submissions_and_files_deleted"] = "Οι ισχυρισμοί και οποιοδήποτε αρχείο (α) που συνδέονται με αυτά διαγράφηκαν με επιτυχία."; +$LANG["notify_submissions_copied"] = "Υποβλήθηκαν {\$num_submissions} υποβολές."; +$LANG["notify_submissions_deleted"] = "Οι παρατηρήσεις διαγράφηκαν με επιτυχία."; +$LANG["notify_submissions_deleted_with_problems"] = "Οι παρατηρήσεις αυτές διαγράφονται, αλλά τα ακόλουθα προβλήματα που συναντούν όταν προσπαθούν να διαγράψετε το ακόλουθο αρχείο (α):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "E-mail σας δοκιμή δεν θα μπορούσε να σταλεί."; +$LANG["notify_theme_cache_folder_not_writable"] = "Φάκελο cache Αυτό το θέμα δεν είναι εγγράψιμο. Για να μπορέσει αυτό το θέμα, η {\$folder} φάκελος πρέπει να έχει πλήρη δικαιώματα ανάγνωσης-εγγραφής."; +$LANG["notify_theme_list_updated"] = "Ο κατάλογος θέμα έχει ενημερωθεί."; +$LANG["notify_themes_settings_updated"] = "Έχουν ενημερωθεί ρυθμίσεις θέμα σας."; +$LANG["notify_view_deleted"] = "Η άποψη έχει διαγραφεί."; +$LANG["notify_view_group_deleted"] = "Η ομάδα View έχει διαγραφεί."; +$LANG["notify_view_missing_columns"] = "Ωχ! Δυστυχώς, αυτή η άποψη δεν έχει πλήρως δημιουργηθεί ακόμα."; +$LANG["notify_view_missing_columns_admin_fix"] = "Κάντε κλικ εδώ για να καθορίσει ποια πεδία θα πρέπει να εμφανίζονται ως στήλες σε αυτήν τη σελίδα."; +$LANG["notify_view_updated"] = "Η άποψη έχει ενημερωθεί."; +$LANG["notify_your_email_sent"] = "Email σας εστάλη επιτυχώς."; +$LANG["phrase_100_per_page"] = "100 ανά σελίδα"; +$LANG["phrase_10_per_page"] = "10 ανά σελίδα"; +$LANG["phrase_15_per_page"] = "15 ανά σελίδα"; +$LANG["phrase_1_direct"] = "1. Άμεση"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 ανά σελίδα"; +$LANG["phrase_25_per_page"] = "25 ανά σελίδα"; +$LANG["phrase_2_code"] = "2. Κωδικός"; +$LANG["phrase_2_columns"] = "2 στήλες"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 στήλες"; +$LANG["phrase_4_columns"] = "4 στήλες"; +$LANG["phrase_50_per_page"] = "50 ανά σελίδα"; +$LANG["phrase_accepting_submissions"] = "(αποδοχή αιτήματα)"; +$LANG["phrase_access_admin_account_c"] = "Μπορείτε να αποκτήσετε πρόσβαση στον λογαριασμό διοίκηση σας εδώ:"; +$LANG["phrase_access_type"] = "Τύπος πρόσβασης"; +$LANG["phrase_account_info"] = "Πληροφορίες Λογαριασμού"; +$LANG["phrase_account_settings"] = "Ρυθμίσεις λογαριασμού"; +$LANG["phrase_action_needed"] = "Απαιτούμενη δράση"; +$LANG["phrase_add_client"] = "Προσθήκη Πελατών"; +$LANG["phrase_add_client_menu"] = "Προσθήκη πελάτη Μενού"; +$LANG["phrase_add_default_settings_rightarrow"] = "Προσθέστε τις προεπιλεγμένες ρυθμίσεις »"; +$LANG["phrase_add_field"] = "Προσθήκη πεδίου"; +$LANG["phrase_add_fields"] = "Προσθήκη πεδίων"; +$LANG["phrase_add_fields_rightarrow"] = "Προσθήκη πεδίου (s) »"; +$LANG["phrase_add_form"] = "Προσθήκη Μορφή"; +$LANG["phrase_add_form_external"] = "Προσθήκη Έντυπο - Εξωτερικό"; +$LANG["phrase_add_form_internal"] = "Προσθήκη Έντυπο - Εσωτερική"; +$LANG["phrase_add_new_group_rightarrow"] = "Προσθήκη νέας ομάδας »"; +$LANG["phrase_add_num_rows"] = "Προσθέστε {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Προσθήκη Row »"; +$LANG["phrase_add_submission_button"] = "Προσθήκη κουμπιού Υποβολή"; +$LANG["phrase_add_view_rightarrow"] = "Προσθήκη View »"; +$LANG["phrase_adding_multi_page_form"] = "Προσθέτοντας ένα πολυ-φόρμα σελίδα με τις API"; +$LANG["phrase_adding_single_page_form"] = "Προσθέτοντας ένα ενιαίο έντυπο σελίδα με τις API"; +$LANG["phrase_admin_menu"] = "Διαχειριστής Μενού"; +$LANG["phrase_admin_only"] = "Διαχειριστής Μόνο"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Διαχειριστής Θέμα"; +$LANG["phrase_advanced_settings_rightarrow"] = "Προηγμένη »Ρυθμίσεις"; +$LANG["phrase_all_X_results_selected"] = "Όλα {\$numresults} Αποτελέσματα Επιλεγμένα"; +$LANG["phrase_all_clients"] = "Όλοι οι πελάτες"; +$LANG["phrase_all_clients_except_c"] = "Όλους τους πελάτες εκτός από:"; +$LANG["phrase_all_clients_have_access"] = "(όλοι οι πελάτες έχουν πρόσβαση)"; +$LANG["phrase_all_fields"] = "Όλα τα πεδία"; +$LANG["phrase_all_fields_displayed"] = "Εμφανίζονται όλα τα πεδία"; +$LANG["phrase_all_statuses"] = "Όλα τα καθεστώτα"; +$LANG["phrase_all_submissions"] = "Όλες οι παρατηρήσεις"; +$LANG["phrase_allow_fields_edited"] = "Επιτρέψτε πεδία που θέλετε να επεξεργαστείτε"; +$LANG["phrase_alphanumeric"] = "Αλφαριθμητικό (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Έκδοση"; +$LANG["phrase_apply_timezone_offset"] = "Εφαρμόστε Offset Χρονική ζώνη"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Εκχωρήσει όλες τις εισηγμένες λογαριασμούς πελατών σε {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Εκχωρήσει όλες τις εισηγμένες λογαριασμούς πελατών σε {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Στο Τέλος"; +$LANG["phrase_at_start"] = "Στην έναρξη"; +$LANG["phrase_author_link"] = "Σύνδεσμος Συντάκτης"; +$LANG["phrase_auto_disable_account"] = "Αυτόματη απενεργοποίηση του λογαριασμού μετά # αποτυχημένες προσπάθειες σύνδεσης"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Διαθέσιμο Πελάτες"; +$LANG["phrase_available_fields"] = "Διαθέσιμα πεδία"; +$LANG["phrase_available_option_lists"] = "Διαθέσιμο καταλόγους επιλογών"; +$LANG["phrase_available_swatches"] = "Διαθέσιμο Δείγματα"; +$LANG["phrase_available_swatches_c"] = "Διαθέσιμο Δείγματα:"; +$LANG["phrase_available_tabs"] = "Διαθέσιμες καρτέλες"; +$LANG["phrase_available_views"] = "Διαθέσιμο Εμφανίσεις"; +$LANG["phrase_awaiting_form_submission"] = "Αναμένοντας υποβολή μορφή."; +$LANG["phrase_back_to_field_list"] = "«επιστροφή στο πεδίο λίστας"; +$LANG["phrase_back_to_search_results"] = "Πίσω στα αποτελέσματα αναζήτησης"; +$LANG["phrase_base_view_on"] = "Προβολή Βάση για ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Αλλαγή Πληροφορίες Σύνδεσης"; +$LANG["phrase_characters_limit_p"] = "χαρακτήρες όριο."; +$LANG["phrase_check_db_settings_try_again"] = "Κάντε διπλό κλικ στις ρυθμίσεις της βάσης δεδομένων σας και κάντε κλικ στο κουμπί Συνέχεια ξανά."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Ελέγξτε URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Καθαρισμός"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Κωδικοποίηση Παραλείψτε Κατάλογος"; +$LANG["phrase_client_account_settings"] = "Ρυθμίσεις λογαριασμού πελάτη"; +$LANG["phrase_client_field"] = "Πελάτης Πεδίο"; +$LANG["phrase_client_map_filters"] = "Πελάτης Χάρτης Φίλτρα »"; +$LANG["phrase_client_may_edit"] = "Πελατών μπορεί να επεξεργαστεί"; +$LANG["phrase_client_menu"] = "Πελάτη Μενού"; +$LANG["phrase_clients_can_access_form"] = "Πελάτες που μπορούν να έχουν πρόσβαση με τη μορφή"; +$LANG["phrase_clients_can_access_view"] = "Πελάτες που μπορούν να έχουν πρόσβαση τα Προβολή"; +$LANG["phrase_clients_cannot_access_form"] = "Πελάτες που δεν μπορούν να έχουν πρόσβαση στο έντυπο"; +$LANG["phrase_clients_cannot_access_view"] = "Πελάτες που δεν μπορούν να έχουν πρόσβαση στο Προβολή"; +$LANG["phrase_clients_may_edit"] = "Πελάτες μπορείτε να επεξεργαστείτε"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Κωδικός / Markup Field"; +$LANG["phrase_code_markup_type"] = "Κωδικός / Markup Τύπος"; +$LANG["phrase_codes_c"] = "Κωδικούς σφάλματος:"; +$LANG["phrase_column_width"] = "Πλάτος στήλης"; +$LANG["phrase_company_name"] = "Επωνυμία"; +$LANG["phrase_configure_form_email_fields"] = "Configure Μορφή Email πεδία"; +$LANG["phrase_confirm_folder_url_match"] = "Confirm Folder-URL Match"; +$LANG["phrase_connect_rows"] = "Συνδέστε τις γραμμές"; +$LANG["phrase_copy_email_settings_from"] = "Αντιγραφή Email Ρυθμίσεις Από ..."; +$LANG["phrase_copy_settings_from"] = "Αντιγραφή Ρυθμίσεις Από ..."; +$LANG["phrase_core_fields"] = "Core Τομείς"; +$LANG["phrase_core_version"] = "Βασική Έκδοση"; +$LANG["phrase_create_account"] = "Δημιουργία λογαριασμού"; +$LANG["phrase_create_admin_account"] = "Δημιουργία Λογαριασμού Admin"; +$LANG["phrase_create_config_file"] = "Δημιουργία αρχείου Config"; +$LANG["phrase_create_database_tables"] = "Δημιουργία βάσης δεδομένων Πίνακες"; +$LANG["phrase_create_default_view"] = "Δημιουργία Προεπιλεγμένη προβολή"; +$LANG["phrase_create_file"] = "Δημιουργία αρχείου"; +$LANG["phrase_create_group"] = "Δημιουργία ομάδας"; +$LANG["phrase_create_new_email"] = "Δημιουργία νέου e-mail"; +$LANG["phrase_create_new_menu"] = "Δημιουργία νέου Μενού"; +$LANG["phrase_create_new_option_list"] = "Δημιουργία νέας λίστας Επιλογή"; +$LANG["phrase_create_new_option_list_group"] = "Δημιουργία νέας ομάδας λίστα επιλογών"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Δημιουργία νέας λίστας Επιλογή »"; +$LANG["phrase_create_new_view"] = "Δημιουργία νέας προβολής"; +$LANG["phrase_create_new_view_group"] = "Δημιουργία νέας ομάδας Προβολή"; +$LANG["phrase_custom_display_format"] = "Προσαρμοσμένη μορφή εμφάνισης"; +$LANG["phrase_custom_recipient"] = "Custom Παραλήπτης"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Σκούρο Μπλε"; +$LANG["phrase_data_type"] = "Τύπος δεδομένων"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Όνομαβάσηςδεδομένων"; +$LANG["phrase_database_password"] = "Database κωδικό"; +$LANG["phrase_database_settings"] = "Ρυθμίσεις βάσης δεδομένων"; +$LANG["phrase_database_setup"] = "Εγκατάσταση Βάσης Δεδομένων"; +$LANG["phrase_database_table_prefix"] = "Database πρόθεμα πίνακα"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Ημερομηνία Μορφή"; +$LANG["phrase_db_column"] = "ΣΠ Στήλη"; +$LANG["phrase_db_setup_page_4"] = "4. Εγκατάσταση Βάσης Δεδομένων"; +$LANG["phrase_default_client_account_theme"] = "Default Client Account Θέμα"; +$LANG["phrase_default_date_field_search_value"] = "Προεπιλογή πεδίο ημερομηνίας αξίας αναζήτησης"; +$LANG["phrase_default_language"] = "Προεπιλεγμένη γλώσσα"; +$LANG["phrase_default_menu"] = "Default Μενού"; +$LANG["phrase_default_sessions_timeout"] = "Προεπιλεγμένη Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Default Σειρά ταξινόμησης"; +$LANG["phrase_default_tab_label"] = "Δεδομένα"; +$LANG["phrase_default_theme"] = "Default Θέμα"; +$LANG["phrase_default_value"] = "Προεπιλεγμένη τιμή"; +$LANG["phrase_default_values"] = "Προκαθορισμένες τιμές"; +$LANG["phrase_default_values_new_submissions"] = "Προκαθορισμένες τιμές για νέες υποβολές"; +$LANG["phrase_delete_field"] = "Διαγραφή πεδίου"; +$LANG["phrase_delete_form"] = "Διαγραφή Μορφή"; +$LANG["phrase_delete_row"] = "Διαγραφή γραμμής"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Διαγράψτε αρχεία που συνδέονται κατά τη διαγραφή υποβολή"; +$LANG["phrase_delete_view"] = "Διαγραφή Προβολή"; +$LANG["phrase_disconnect_rows"] = "Αποσύνδεση σειρές"; +$LANG["phrase_display_email"] = "Εμφάνιση Email"; +$LANG["phrase_display_name"] = "Εμφανιζόμενο όνομα"; +$LANG["phrase_display_text"] = "Εμφάνιση Κείμενο"; +$LANG["phrase_display_value"] = "Εμφάνιση Αξία"; +$LANG["phrase_edit_admin_menu"] = "Επεξεργασία Admin Menu"; +$LANG["phrase_edit_client"] = "Επεξεργασία πελάτη"; +$LANG["phrase_edit_client_menu"] = "Επεξεργασία πελάτη Μενού"; +$LANG["phrase_edit_email_template"] = "Επεξεργασία προτύπου Email"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Επεξεργασία πεδίου:"; +$LANG["phrase_edit_form"] = "Επεξεργασία Μορφή"; +$LANG["phrase_edit_form_access_type_b"] = "[Επεξεργασία έντυπο τύπο πρόσβασης]"; +$LANG["phrase_edit_option_list"] = "Επεξεργασία λίστας Επιλογή"; +$LANG["phrase_edit_submission"] = "Επεξεργασία Υποβολή"; +$LANG["phrase_edit_submission_label"] = "Επεξεργασία Ετικέτα Υποβολή"; +$LANG["phrase_edit_view"] = "Επεξεργασία προβολής"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "Email Ρυθμίσεις"; +$LANG["phrase_email_template"] = "E-mail template"; +$LANG["phrase_email_template_name"] = "E-mail όνομα του προτύπου"; +$LANG["phrase_error_learn_more"] = "Μάθετε περισσότερα για αυτό το σφάλμα."; +$LANG["phrase_error_text_intro"] = "Παρακαλείσθε να καθορίσουν τις ακόλουθες σφάλμα (ες) και να υποβάλει εκ νέου:"; +$LANG["phrase_errors_learn_more"] = "Κάντε κλικ στο κωδικούς σφαλμάτων για να μάθετε περισσότερα."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Εξωτερική της μορφή"; +$LANG["phrase_external_form_info"] = "Εξωτερικές Πληροφορίες Φόρμα"; +$LANG["phrase_external_your_own_form"] = "Εξωτερικές (το δικό σας έντυπο)"; +$LANG["phrase_field_comments"] = "Σχόλια Πεδίο"; +$LANG["phrase_field_label"] = "Πεδίο Label"; +$LANG["phrase_field_options"] = "Πεδίο Επιλογές"; +$LANG["phrase_field_size"] = "Πεδίο Μέγεθος"; +$LANG["phrase_field_skipped"] = "Πεδίο Skipped"; +$LANG["phrase_field_specific_settings"] = "Πεδίο-συγκεκριμένες ρυθμίσεις"; +$LANG["phrase_field_type"] = "Πεδίο Τύπος"; +$LANG["phrase_field_type_no_validation"] = "Δεν υπάρχουν κανόνες επικύρωσης διαθέσιμα γι 'αυτό τον τομέα."; +$LANG["phrase_field_types"] = "Πεδίο Τύποι"; +$LANG["phrase_field_value"] = "Πεδίο Αξία"; +$LANG["phrase_field_values_to_display_values"] = "Πεδίο Αξίες »Εμφάνιση Αξίες"; +$LANG["phrase_final_touches_page_6"] = "6. Πινελιές"; +$LANG["phrase_finalize_form"] = "Οριστικοποίηση Μορφή"; +$LANG["phrase_first_name"] = "Όνομα"; +$LANG["phrase_footer_text"] = "Υποσέλιδο Κείμενο"; +$LANG["phrase_for_any_form_submission"] = "Για οποιαδήποτε μορφή υποβολής"; +$LANG["phrase_for_view_submissions"] = "Μόνο οι προτάσεις που ταιριάζουν στις ακόλουθες View (s)"; +$LANG["phrase_forgot_password"] = "Ξεχάσατε τον κωδικό σας;"; +$LANG["phrase_form_already_selected"] = "Έντυπο που έχουν ήδη επιλεγεί"; +$LANG["phrase_form_email_field_b_c"] = "[] Πεδίο Μορφή e-mail:"; +$LANG["phrase_form_email_field_configuration"] = "Φόρμα Email Field Configuration"; +$LANG["phrase_form_email_fields"] = "Πεδία Email Φόρμα"; +$LANG["phrase_form_field"] = "Form Field"; +$LANG["phrase_form_field_contents"] = "Τα περιεχόμενα των πεδίων φόρμας"; +$LANG["phrase_form_field_name"] = "Φόρμα Όνομα πεδίου"; +$LANG["phrase_form_field_placeholders"] = "Κράτησης θέσης πεδίο φόρμας"; +$LANG["phrase_form_fields"] = "Μορφή πεδία"; +$LANG["phrase_form_info"] = "Φόρμα"; +$LANG["phrase_form_info_2"] = "2. Φόρμα"; +$LANG["phrase_form_list"] = "Λίστα Έντυπο"; +$LANG["phrase_form_name"] = "Όνομα Μορφή"; +$LANG["phrase_form_page"] = "Μορφή Σελίδα"; +$LANG["phrase_form_placeholders"] = "Placeholders Μορφή"; +$LANG["phrase_form_submission"] = "Έντυπο Υποβολής"; +$LANG["phrase_form_submissions"] = "Υποβολές Μορφή"; +$LANG["phrase_form_type"] = "Μορφή Τύπος"; +$LANG["phrase_form_url"] = "Μορφή URL"; +$LANG["phrase_form_urls"] = "URLs Έντυπο"; +$LANG["phrase_forms_assigned_to_any_account"] = "Έντυπα έχει τοποθετηθεί σε οποιοδήποτε λογαριασμό"; +$LANG["phrase_forms_page_default_message"] = "Έντυπα μήνυμα προεπιλογή σελίδα"; +$LANG["phrase_ft_installation"] = "Μορφή Εργαλεία Εγκατάσταση Script"; +$LANG["phrase_full_width"] = "Όλο το πλάτος"; +$LANG["phrase_getting_started"] = "Ξεκινώντας"; +$LANG["phrase_global_placeholders"] = "Global σύμβολα κράτησης θέσης"; +$LANG["phrase_group_name"] = "Όνομα Ομάδας"; +$LANG["phrase_group_options_q"] = "Επιλογές Ομάδα;"; +$LANG["phrase_group_rows"] = "Ομαδοποιήστε τις γραμμές"; +$LANG["phrase_have_fun"] = "Καλή διασκέδαση!"; +$LANG["phrase_highlight_colour"] = "Χρώμα επισήμανσης"; +$LANG["phrase_html_email"] = "HTML e-mail"; +$LANG["phrase_html_template"] = "Προτύπου HTML"; +$LANG["phrase_images_media"] = "Εικόνες / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Εισαγωγή λίστα επιλογών »"; +$LANG["phrase_input_length"] = "Μήκος εισόδου"; +$LANG["phrase_installation_help"] = "Βοήθεια Εγκατάσταση"; +$LANG["phrase_internal_form"] = "Εσωτερική Έντυπο"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Είναι αυτό ένα πολυσέλιδο έντυπο;"; +$LANG["phrase_label_response_placeholders"] = "Label / Response Placeholders"; +$LANG["phrase_large_300px"] = "Μεγάλη (300px)"; +$LANG["phrase_large_400px"] = "Μεγάλη (400px)"; +$LANG["phrase_last_7_days"] = "Τελευταίες 7 μέρες"; +$LANG["phrase_last_logged_in"] = "Τελευταία είσοδος"; +$LANG["phrase_last_modified"] = "Τελευταία τροποποίηση"; +$LANG["phrase_last_modified_date"] = "Τελευταία τροποποίηση"; +$LANG["phrase_last_name"] = "Επώνυμο"; +$LANG["phrase_letters_only"] = "Επιστολές Μόνο"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Όριο ηλεκτρονικό περιεχόμενο σε τομείς Προβολή"; +$LANG["phrase_loading_ellipsis"] = "Φόρτωση ..."; +$LANG["phrase_log_in"] = "Σύνδεση"; +$LANG["phrase_login_as_user"] = "Συνδεθείτε ως αυτός ο χρήστης"; +$LANG["phrase_login_info"] = "Είσοδος Πληροφορίες"; +$LANG["phrase_login_page"] = "Σύνδεση Σελίδα"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Κωδικός πρόσβασης Είσοδος"; +$LANG["phrase_login_username"] = "Login Username"; +$LANG["phrase_logo_link_url"] = "Λογότυπο Link URL"; +$LANG["phrase_logout_url"] = "Αποσύνδεση URL"; +$LANG["phrase_main_nav"] = "Κύρια Nav"; +$LANG["phrase_main_settings"] = "Κύρια Ρυθμίσεις"; +$LANG["phrase_manage_client"] = "Manage Client"; +$LANG["phrase_manage_client_omit_list"] = "Διαχείριση Πελατών Παραλείψτε List"; +$LANG["phrase_max_file_size"] = "Μέγιστο Μέγεθος αρχείου"; +$LANG["phrase_max_length"] = "Μέγιστο Μήκος"; +$LANG["phrase_max_length_words_chars"] = "- Μήκος Max (λέξεις / χαρακτήρες)"; +$LANG["phrase_may_add_submissions"] = "Μπορεί να προσθέσει Υποβολές"; +$LANG["phrase_may_copy_submissions"] = "Μπορεί να αντιγράψει υποβολές"; +$LANG["phrase_may_delete_submissions"] = "Μπορεί να διαγράψει υποβολές"; +$LANG["phrase_medium_150px"] = "Μεσαία (150px)"; +$LANG["phrase_medium_200px"] = "Μεσαία (200px)"; +$LANG["phrase_menu_name"] = "Όνομα μενού"; +$LANG["phrase_menu_type"] = "Μενού Τύπος"; +$LANG["phrase_min_password_length"] = "Ελάχιστο μήκος κωδικού πρόσβασης"; +$LANG["phrase_module_description"] = "Ενότητα Περιγραφή"; +$LANG["phrase_module_info"] = "Ενότητα Πληροφορίες"; +$LANG["phrase_module_nav"] = "Ενότητα Nav"; +$LANG["phrase_month_to_date"] = "Μήνα έως σήμερα"; +$LANG["phrase_multi_select"] = "Multi-επιλέξτε"; +$LANG["phrase_multi_select_dropdown"] = "Multi-επιλέξτε dropdown"; +$LANG["phrase_multiple_fields_found"] = "Βρέθηκαν πολλά πεδία!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Όνομα / Επώνυμο"; +$LANG["phrase_new_blank_email"] = "Νέα Λευκά Email"; +$LANG["phrase_new_blank_option_list"] = "Νέα Λευκά λίστα επιλογών"; +$LANG["phrase_new_blank_view"] = "Νέα Λευκά Προβολή"; +$LANG["phrase_new_ft_installation"] = "Νέα Μορφή Εργαλεία Εγκατάστασης"; +$LANG["phrase_new_option_list"] = "Νέα λίστα επιλογών"; +$LANG["phrase_new_password"] = "Νέος κωδικός"; +$LANG["phrase_new_password_reenter"] = "Νέο Password (παρακαλείσθε να επανέλθουν)"; +$LANG["phrase_new_view"] = "Νέο Προβολή"; +$LANG["phrase_new_view_all_fields"] = "Νέο Προβολή - Όλα τα πεδία"; +$LANG["phrase_next_client"] = "επόμενο πελάτη »"; +$LANG["phrase_next_field"] = "επόμενο »πεδίο"; +$LANG["phrase_next_form"] = "επόμενη φόρμα »"; +$LANG["phrase_next_view"] = "Προβολή επόμενο »"; +$LANG["phrase_no_clients"] = "Δεν πελάτες"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Δεν offset"; +$LANG["phrase_no_option_lists_available"] = "Δεν επιλογές διαθέσιμες λίστες."; +$LANG["phrase_no_views"] = "Δεν Εμφανίσεις"; +$LANG["phrase_no_views_with_filters_p"] = "(Δεν Εμφανίσεις με τα φίλτρα που καθορίζονται)"; +$LANG["phrase_none_not_recommended"] = "Δεν υφίσταται (δεν συνιστάται)"; +$LANG["phrase_not_assigned_to_option_list"] = "Το πεδίο αυτό δεν έχει ανατεθεί σε μια λίστα επιλογών."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "ΔΕΝ Equal"; +$LANG["phrase_not_found"] = "Δεν βρέθηκε!"; +$LANG["phrase_not_like"] = "ΔΕΝ Όπως"; +$LANG["phrase_not_visible_to_client"] = "(δεν είναι ορατό στον πελάτη)"; +$LANG["phrase_num_clients_per_page"] = "Num Πελάτες ανά σελίδα"; +$LANG["phrase_num_emails_per_page"] = "Num Emails ανά σελίδα"; +$LANG["phrase_num_fields"] = "Αριθμό πεδίων"; +$LANG["phrase_num_forms_per_page"] = "Num Έντυπα ανά σελίδα"; +$LANG["phrase_num_menus_per_page"] = "Num Menus ανά σελίδα"; +$LANG["phrase_num_modules_per_page"] = "Num Modules ανά σελίδα"; +$LANG["phrase_num_option_lists_per_page"] = "Αριθμός καταλόγους επιλογών ανά σελίδα"; +$LANG["phrase_num_options"] = "Αριθμός Επιλογές"; +$LANG["phrase_num_rows"] = "Αριθμός Γραμμές"; +$LANG["phrase_numbers_only"] = "Μόνο Αριθμοί"; +$LANG["phrase_often_localhost"] = "(συχνά "localhost")"; +$LANG["phrase_on_form_submission"] = "Την υποβολή μορφή"; +$LANG["phrase_one_char_number"] = "Τουλάχιστον ένας χαρακτήρας είναι ένας αριθμός (0-9)"; +$LANG["phrase_one_char_upper"] = "Τουλάχιστον ένας χαρακτήρας είναι κεφαλαίο"; +$LANG["phrase_one_special_char"] = "Τουλάχιστον ένας από τους {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(μόνο συγκεκριμένα πελάτες έχουν πρόσβαση)"; +$LANG["phrase_open_form_in_dialog"] = "Άνοιγμα φόρμας σε παράθυρο διαλόγου"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Ανοίξτε τη φόρμα σε ένα παράθυρο νέα καρτέλα /"; +$LANG["phrase_option_list"] = "Λίστα Επιλογή"; +$LANG["phrase_option_list_name"] = "Επιλογή Όνομα Λίστα"; +$LANG["phrase_option_list_or_contents"] = "Λίστα Επιλογή / Περιεχόμενα"; +$LANG["phrase_option_lists"] = "Καταλόγους επιλογών"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Page Τίτλοι"; +$LANG["phrase_pass_on"] = "Δώσετε"; +$LANG["phrase_password_min"] = "Θα πρέπει να είναι τουλάχιστον {\$length} χαρακτήρες."; +$LANG["phrase_password_one_number"] = "Θα πρέπει να περιέχει τουλάχιστον έναν αριθμό (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Θα πρέπει να περιέχει τουλάχιστον ένα κεφαλαίο γράμμα."; +$LANG["phrase_password_requirements_c"] = "Κωδικός πρόσβασης απαιτήσεις:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Θα πρέπει να περιέχει τουλάχιστον ένα από τους ακόλουθους χαρακτήρες: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Δικαιώματα / Άλλες ρυθμίσεις"; +$LANG["phrase_permitted_file_types"] = "Επιτρεπόμενες τύπους αρχείων"; +$LANG["phrase_phone_number"] = "Αριθμός τηλεφώνου"; +$LANG["phrase_phone_number_format"] = "Μορφή αριθμού τηλεφώνου"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max επιτρέπεται αρχείου μέγεθος αποστολής:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Παρακαλούμε Επιβεβαίωση"; +$LANG["phrase_please_enter_license_key"] = "Παρακαλώ εισάγετε το κωδικό άδειας χρήσης σας"; +$LANG["phrase_please_select"] = "Επιλέξτε"; +$LANG["phrase_please_select_form"] = "Παρακαλώ επιλέξτε μια μορφή"; +$LANG["phrase_prev_client"] = "«Προηγούμενη πελάτη"; +$LANG["phrase_prev_form"] = "«Φόρμα προηγ"; +$LANG["phrase_prevent_password_reuse"] = "Αποφεύγεται η εκ νέου χρήση των κωδικών πρόσβασης # τελευταία"; +$LANG["phrase_previous_field"] = "«προηγούμενο πεδίο"; +$LANG["phrase_previous_page"] = "Προηγούμενη Σελίδα"; +$LANG["phrase_previous_view"] = "«Προηγούμενη View"; +$LANG["phrase_program_name"] = "Όνομα προγράμματος"; +$LANG["phrase_public_form_omit_list"] = "Δημόσια Έντυπο Παραλείψτε Κατάλογος"; +$LANG["phrase_public_view_omit_list"] = "Δημόσια Προβολή Παραλείψτε Κατάλογος"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Υπήρξε ένα πρόβλημα με το ακόλουθο ερώτημα:"; +$LANG["phrase_radio_buttons"] = "Ραδιόφωνο Κουμπιά"; +$LANG["phrase_random_form_submission"] = "Τυχαία υποβολή μορφή"; +$LANG["phrase_re_enter_password"] = "Εισάγετε ξανά τον κωδικό"; +$LANG["phrase_recipient_type"] = "Παραλήπτης τύπου"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Ανανέωσηλίστας"; +$LANG["phrase_refresh_module_list"] = "Ανανέωση Ενότητα Κατάλογος"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Ανανέωση Θέμα Κατάλογος"; +$LANG["phrase_register_new_email"] = "Εγγραφή Νέο Email"; +$LANG["phrase_remaining_characters"] = "υπόλοιπους χαρακτήρες"; +$LANG["phrase_remaining_words"] = "υπόλοιπες λέξεις"; +$LANG["phrase_remove_tabs"] = "Αφαιρέστε Tabs"; +$LANG["phrase_required_password_chars"] = "Απαιτείται κωδικός πρόσβασης χαρακτήρες"; +$LANG["phrase_resend_test_submission"] = "Resend Test Υποβολή"; +$LANG["phrase_return_form_list"] = "Επιστροφή σε μορφή λίστας"; +$LANG["phrase_row_selected"] = "{\$num_rows} σειρά επιλεγμένων"; +$LANG["phrase_rows_selected"] = "{\$num_rows} επιλεγμένες σειρές"; +$LANG["phrase_sample_data"] = "Δείγμα δεδομένων"; +$LANG["phrase_save_changes"] = "Αποθήκευση αλλαγών"; +$LANG["phrase_search_keyword"] = "Αναζήτηση λέξης"; +$LANG["phrase_security_settings"] = "Ρυθμίσεις Ασφαλείας"; +$LANG["phrase_select_all"] = "Επιλογή Όλων"; +$LANG["phrase_select_all_X_results"] = "Επιλέξτε Όλα {\$numresults} Αποτελέσματα"; +$LANG["phrase_select_all_on_page"] = "Επιλέξτε Όλες Στη σελίδα"; +$LANG["phrase_select_date"] = "Επιλέξτε ημερομηνία"; +$LANG["phrase_select_field"] = "Επιλέξτε Πεδίο"; +$LANG["phrase_select_swatch"] = "Επιλογή δείγματος"; +$LANG["phrase_selected_clients"] = "Επιλεγμένοι Πελάτες"; +$LANG["phrase_selected_views"] = "Επιλεγμένα Εμφανίσεις"; +$LANG["phrase_send_email"] = "Αποστολή Email"; +$LANG["phrase_send_test_email"] = "Αποστολή Email Test"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Συνεδρίες Timeout"; +$LANG["phrase_setting_value"] = "Ρύθμιση Αξία"; +$LANG["phrase_setup_options"] = "Επιλογές Εγκατάστασης"; +$LANG["phrase_show_all"] = "Εμφάνιση Όλων"; +$LANG["phrase_show_form"] = "Εμφάνιση Φόρμα"; +$LANG["phrase_size_large"] = "Μεγάλα (ΚΕΙΜΕΝΟ)"; +$LANG["phrase_size_medium"] = "Μεσαία (<= 256 χαρακτήρες)"; +$LANG["phrase_size_small"] = "Μικρά (<= 20 χαρακτήρες)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 χαρακτήρες)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Περάστε Πεδίο"; +$LANG["phrase_skip_step"] = "Περάστε Βήμα"; +$LANG["phrase_small_100px"] = "Μικρό (100px)"; +$LANG["phrase_small_80px"] = "Μικρό (80px)"; +$LANG["phrase_smart_fill"] = "Smart Συμπληρώστε"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart πεδία Γέμισμα από:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Συμπληρώστε User Documentation »"; +$LANG["phrase_sort_as"] = "Ταξινόμηση ως"; +$LANG["phrase_special_fields"] = "Ειδικοί Τομείς"; +$LANG["phrase_standard_fields"] = "Πρότυπο Πεδία"; +$LANG["phrase_standard_filters"] = "Standard Φίλτρα »"; +$LANG["phrase_step_1"] = "Βήμα 1"; +$LANG["phrase_step_2"] = "Βήμα 2"; +$LANG["phrase_step_3"] = "Βήμα 3"; +$LANG["phrase_step_4"] = "Βήμα 4"; +$LANG["phrase_step_5"] = "Βήμα 5"; +$LANG["phrase_step_6"] = "Βήμα 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Γάζας ετικέτες στις παρατηρήσεις μορφή"; +$LANG["phrase_subject_line"] = "Θέμα Line"; +$LANG["phrase_submission_date"] = "Υποβολή ημερομηνία"; +$LANG["phrase_submission_id"] = "Υποβολή ID"; +$LANG["phrase_submission_made"] = "Υποβολή γίνει: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Υποβολή Τύπος"; +$LANG["phrase_submissions_per_page"] = "Υποβολές ανά σελίδα"; +$LANG["phrase_system_check"] = "Έλεγχος συστήματος"; +$LANG["phrase_system_fields_no_validation"] = "Δεν μπορείτε να προσθέσετε επικύρωση στα χωράφια του συστήματος."; +$LANG["phrase_system_time_offset"] = "Σύστημα Ώρα Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Δοκιμή φακέλους"; +$LANG["phrase_test_submission"] = "Δοκιμή Υποβολή"; +$LANG["phrase_test_submission_3"] = "3. Δοκιμή Υποβολή"; +$LANG["phrase_test_submission_received"] = "Δοκιμή Υποβολή Received"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "Κείμενο e-mail"; +$LANG["phrase_text_template"] = "Κείμενο Πρότυπο"; +$LANG["phrase_the_previous_month"] = "Ο προηγούμενος μήνας"; +$LANG["phrase_theme_description"] = "Περιγραφή Θέμα"; +$LANG["phrase_theme_info"] = "Θέμα Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Συνολικά Αποτελέσματα:"; +$LANG["phrase_type_c"] = "Τύπος λάθους:"; +$LANG["phrase_unselect_all"] = "Κανένας"; +$LANG["phrase_update_accounts"] = "Ενημέρωση Λογαριασμών"; +$LANG["phrase_update_email_template"] = "Ενημέρωση Email Πρότυπο"; +$LANG["phrase_update_field"] = "Ενημέρωση πεδίων"; +$LANG["phrase_update_order"] = "Ενημέρωση Παραγγελία"; +$LANG["phrase_update_view"] = "Ενημέρωση Προβολή"; +$LANG["phrase_upload_file"] = "Upload File"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Ανεβάστε διαδρομή φακέλου"; +$LANG["phrase_upload_folder_url"] = "Ανεβάστε φάκελο URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Χρήση προεπιλεγμένης τιμής;"; +$LANG["phrase_used_by_num_form_fields"] = "Χρησιμοποιούνται από # Μορφή πεδία"; +$LANG["phrase_uses_swatches"] = "Χρησιμοποιεί Δείγματα"; +$LANG["phrase_valid_email"] = "Έγκυρο email"; +$LANG["phrase_validation_error"] = "Σφάλμα επικύρωσης"; +$LANG["phrase_validation_rule"] = "Κανόνας επικύρωσης"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Προβολή Ομίλου"; +$LANG["phrase_view_id"] = "Προβολή ID"; +$LANG["phrase_view_name"] = "Προβολή Όνομα"; +$LANG["phrase_view_placeholders"] = "Δείτε τα σύμβολα κράτησης θέσης"; +$LANG["phrase_view_submissions"] = "Δείτε Submissions"; +$LANG["phrase_view_uploaded_files"] = "δείτε αρχεία που έχετε αποστείλει"; +$LANG["phrase_viewing_range"] = "[είδαν {\$startnum} σε {\$endnum}]"; +$LANG["phrase_when_sent"] = "Όταν αποστέλλονται"; +$LANG["phrase_when_submission_is_deleted"] = "Κατά την υποβολή διαγράφεται"; +$LANG["phrase_when_submission_is_edited"] = "Κατά την υποβολή είναι edited"; +$LANG["phrase_who_can_access"] = "Ποιος μπορεί να έχει πρόσβαση;"; +$LANG["phrase_word_limit_p"] = "όριο λέξη."; +$LANG["phrase_year_to_date"] = "Έτος μέχρι σήμερα"; +$LANG["phrase_yes_for_all_views"] = "Ναι, για όλα τα Εμφανίσεις"; +$LANG["phrase_yes_for_specific_views"] = "Ναι, για συγκεκριμένες Εμφανίσεις"; +$LANG["phrase_your_account"] = "Ο λογαριασμός σας"; +$LANG["phrase_your_email"] = "Email σας"; +$LANG["phrase_your_email_address"] = "Η διεύθυνση email σας"; +$LANG["processing_form_disabled"] = "Λυπούμαστε, αυτή η φόρμα έχει απενεργοποιηθεί."; +$LANG["processing_form_incomplete"] = "Λυπούμαστε, αυτή η μορφή δεν φαίνεται να τεθούν πλήρως μέσα από το έντυπο εργαλεία. Η πιο πιθανή αιτία αυτού του προβλήματος είναι ότι θα καταργηθεί η "form_tools_initialize_form" κρυφό πεδίο φόρμας, αλλά δεν είχε ολοκληρώσει όλα τα βήματα του "Προσθήκη Μορφή" διαδικασία.

    Παρακαλώ συνδεθείτε και να επανεξετάσει τη διαμόρφωση φόρμα."; +$LANG["processing_init_complete"] = "Σε ευχαριστώ! Υποβολή δοκιμή σας έχει γίνει με επιτυχία. Παρακαλείσθε να επιστρέψετε το έντυπο Εργαλεία πάνελ Διοίκησης και κάντε κλικ στο "Ανανέωση" κουμπί στο κάτω μέρος της Προσθέστε Βήμα έντυπο 3 σελίδα για να ολοκληρώσετε τη ρύθμιση της φόρμας σας."; +$LANG["processing_invalid_form_id"] = "Λυπούμαστε, αλλά αυτό δεν φαίνεται να είναι μια έγκυρη ταυτότητα μορφή."; +$LANG["processing_no_form_id"] = "process.php απαιτεί μια μορφή αναγνωριστικό για μεταποίηση. Βεβαιωθείτε ότι φόρμα σας περιέχει ένα κρυφό πεδίο με το όνομα "form_tools_form_id" που έχει επιτύχει μαζί με τη μορφή ταυτότητας."; +$LANG["processing_no_form_url_for_recaptcha"] = "Μορφή εργαλεία είναι σε θέση να προσδιορίσει πού να ανακατευθύνει όταν αδυνατούν να εισέλθουν στην καπετάνιος σωστά. Παρακαλείσθε να περάσει σε ένα κρυφό πεδίο με το όνομα form_tools_form_url που περιέχει το URL του εντύπου."; +$LANG["processing_no_post_vars"] = "process.php δεν λαμβάνει όλα τα δεδομένα. Σημείωση: αυτό το σενάριο δεν μπορούν να φορτώνονται απευθείας στον browser σας.
    Βεβαιωθείτε ότι το έντυπο είναι η αποστολή μέσω ταχυδρομείου."; +$LANG["processing_no_redirect_url"] = "Η υποβολή των μεταποιημένων ήταν σωστά, αλλά δεν έχετε καθορίσει μια ανακατεύθυνση URL για αυτό το έντυπο! Επεξεργασία φόρμα σας στο έντυπο Εργαλεία UI και προσθέστε το URL ανακατεύθυνσης."; +$LANG["special_language"] = "Greek"; +$LANG["special_language_locale"] = "Greek"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Όλοι οι νέοι λογαριασμοί των πελατών θα δημιουργηθούν με τις ρυθμίσεις και τα δικαιώματα που καθορίζονται κατωτέρω. Για να παρακάμψετε μια ρύθμιση για ένα συγκεκριμένο πελάτη, να επεξεργαστείτε το λογαριασμό του πελάτη και την επίσκεψή τους στην καρτέλα Ρυθμίσεις."; +$LANG["text_add_form_choose_integration_method"] = "Επιλέξτε τη μέθοδο που θέλετε να χρησιμοποιήσετε για να ενσωματώσουν τη φόρμα σας με τα Εργαλεία φόρμας."; +$LANG["text_add_form_code_submission_benefits"] = "Αυτή η μέθοδος χρησιμοποιεί το έντυπο Εργαλεία API , που περιλαμβάνονται στο κύριο σενάριο Έντυπο Εργαλεία. Το API παρέχει μια σειρά από χρήσιμες λειτουργίες για να κάνει τη δουλειά της ενσωμάτωσης της φόρμας σας με Εργαλεία φόρμας όσο το δυνατόν απλούστερη. Δεν υπάρχουν περιορισμοί για το πώς φόρμα σας μπορεί να υποβληθεί κατά τη χρήση του API. Μπορείτε να υποβάλετε το περιεχόμενο σε μία μόνο στιγμή, ή τη σελίδα με τη σελίδα? Μπορείτε να προσθέσετε τις δικές σας προσαρμοσμένες σας server-side επικύρωση, CAPTCHA εικόνες? Μπορείτε να επιλέξετε να υποβάλλουν τις πληροφορίες τώρα, αλλά μόνο το πείτε για να εμφανίσετε την αίτηση με τη μορφή εργαλείων UI αργότερα (δείτε την οριστικοποιήθηκε Υποβολές ενότητα στην τεκμηρίωση βοηθήσει API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Για την υποβολή των δεδομένων φόρμας σας μέσω PHP, το έντυπο πρέπει να βρίσκονται στον ίδιο τόπο, όπως αυτός Εργαλεία φόρμας εγκατάσταση. Δεύτερον, για τους μη τεχνικούς και τους αρχάριους χρήστες Έντυπο Εργαλεία, η μέθοδος αυτή μπορεί να είναι λίγο εκφοβιστικό από την πρώτη. Αλλά υπάρχει αφθονία των εγγράφων για να σας βοηθήσει, μεταξύ των οποίων δύο απλά μαθήματα για την ενσωμάτωση ενός ή πολλών σελίδων φόρμες σας (αυτά που συνδέονται με την σε μεταγενέστερο στάδιο)."; +$LANG["text_add_form_direct_submission_benefits"] = "Αυτός είναι ο απλούστερος τρόπος για να υποβάλουν τη φόρμα σας για το έντυπο Εργαλεία. Δεν απαιτείται καμία γνώση της PHP και απαιτεί μόνο μια πολύ μικρή αλλαγή στην φόρμα σας. Είναι μεγάλη για τις μικρότερες μορφές όπου θέλετε να υποβάλουν μόνο τις πληροφορίες στη βάση δεδομένων στη συνέχεια ανακατευθύνει το χρήστη σε ένα "σας ευχαριστώ" σελίδα."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Αυτή η μέθοδος υποβολής είναι πολύ απλός στη χρήση, αλλά δεν προβλέπει έλεγχο για πολύ πιο περίπλοκες μορφές. Multi-σελίδα έντυπα ή έντυπα που απαιτούν επικύρωση server-side ταιριάζουν καλύτερα με τη δεύτερη μέθοδο: την υποβολή μέσω του εντύπου Εργαλεία API."; +$LANG["text_add_form_field_types1"] = "Σχεδόν ολοκληρώθηκε! Αυτή η σελίδα προσπαθεί να βρει όλα τα πεδία σας φόρμα και να προσδιορίζει τα είδη τομέα τους. Κάντε κλικ στο κουμπί Smart Συμπληρώστε στα δεξιά για να ξεκινήσετε. Θα πρέπει να επιτρέπεται μόνο να προχωρήσουν όταν όλες οι δράσεις που έχουν επιλυθεί - θέματα τα οποία χρειάζονται την προσοχή σας εμφανίζεται στο "ενέργειες που απαιτούνται " στήλη."; +$LANG["text_add_form_field_types2"] = "Εάν η φόρμα σας δεν είναι σε μορφή HTML, κάντε κλικ στο κουμπί Μετάβαση Βήμα για να προχωρήσετε. Αυτό μπορεί όλα να ρυθμιστούν αργότερα."; +$LANG["text_add_form_field_types3"] = "Αυτό φορτώνει τα περιεχόμενα της φόρμας σας (ες). Σημείωση: αυτό θα αντικαταστήσει τις αλλαγές που έχετε κάνει σε αυτή τη σελίδα."; +$LANG["text_add_form_field_types4"] = "Σε περίπτωση που έχετε προβλήματα, κάντε κλικ εδώ για να παραλείψετε αυτό το βήμα. Όλα τα άλυτα τα πεδία που να χρησιμοποιεί τις προεπιλεγμένες τιμές. Μπορείτε να προσαρμόσετε αυτά τα πεδία αργότερα."; +$LANG["text_add_form_field_types_manual_upload"] = "Αν δεν ήταν σε θέση να Smart Συμπληρώστε τα πεδία σας, μπορείτε να θελήσετε να δοκιμάσετε μια εναλλακτική λύση: Ανεβάστε αντίγραφα των εντύπων σας στα παρακάτω πεδία."; +$LANG["text_add_form_field_types_manual_upload2"] = "Σημείωση: Μην ανεβάσετε πρώτες σελίδες PHP (ή άλλες server-side code) - ανεβάστε λίγο την μορφή HTML. Για να πάρετε αυτό, δείτε και να αποθηκεύσετε τη σελίδα από το web browser σας."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Υπήρχαν πολλά πεδία που δεν θα μπορούσε να βρεθεί στη σελίδα μορφή που έχετε ορίσει. Αυτό είναι πιθανότατα προκαλείται από ένα από τα ακόλουθα:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Έχετε εισέλθει σε ένα ή περισσότερα από τα URLs μορφή πολυσέλιδου φόρμα σας λάθος."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Μία ή περισσότερες σελίδες της φόρμας σας είναι προστατεύεται με κωδικό πρόσβασης και το σενάριο δεν θα μπορούσε να αποκτήσετε πρόσβαση στη σελίδα."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Έχετε εισάγει λανθασμένα URL φόρμα σας."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Κάντε κλικ εδώ για να επιστρέψετε στη σελίδα Πληροφορίες Φόρμα για να ελέγξετε τις ρυθμίσεις σας."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Θα αλλάξει τη φόρμα σας (ες) μετά την ολοκλήρωση της υποβολής δοκιμή"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Κάντε κλικ εδώ για να θέσει μέσα από ένα άλλο υποβολή δοκιμή."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Φόρμα σας προστατεύεται από κωδικό πρόσβασης και το σενάριο δεν θα μπορούσε να αποκτήσετε πρόσβαση στη σελίδα."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Σε μια άλλη καρτέλα / παράθυρο του browser, συνδεθείτε στη φόρμα σας, στη συνέχεια, κάντε κλικ στο κουμπί Σελίδα Refresh παρακάτω για να προσπαθήσει να βρει εκ νέου τα πεδία."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Εάν καμία από τις παραπάνω λύσεις, μπορείτε επίσης να θελήσετε να δοκιμάσετε το χέρι ανέβασμα φόρμες σας για επεξεργασία ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Υπήρχαν πολλά πεδία που δεν θα μπορούσε να βρεθεί στις σελίδες μορφή που έχετε ορίσει. Αυτό είναι πιθανότατα προκαλείται από ένα από αυτά:"; +$LANG["text_add_form_help_link"] = "Αν αντιμετωπίσετε οποιοδήποτε πρόβλημα κατά τη διάρκεια αυτών των βημάτων, προσπαθήστε να διαβάσετε τα έγγραφα των χρηστών ."; +$LANG["text_add_form_step_1_text_1"] = "Οι ακόλουθες σελίδες σας οδηγήσει μέσα από τα βήματα για να ρυθμίσετε Μορφή Εργαλεία για να αποθηκεύσετε παρατηρήσεις φόρμα σας. Πριν συνεχίσουμε, παρακαλώ ελέγξτε ότι:"; +$LANG["text_add_form_step_1_text_2"] = "φόρμα σας έχει ήδη δημιουργηθεί και είναι προσβάσιμες μέσω ενός συνδέσμου (localhost είναι ωραία)"; +$LANG["text_add_form_step_1_text_3"] = "είναι σε θέση να επεξεργαστείτε τη φόρμα σας"; +$LANG["text_add_form_step_2_para_2"] = "Ανοίξτε τη φόρμα σας σε έναν επεξεργαστή κειμένου της επιλογής σας και να αλλάξετε τη φόρμα σας ετικέτα με τις ακόλουθες, συμπεριλαμβανομένων των δύο κρυφά τομείς."; +$LANG["text_add_form_step_2_para_3"] = "Στη συνέχεια, ανοίξετε τη φόρμα σας σε ένα web browser. Συμπληρώστε σε κάθε τομέα και να την υποβάλει. Μετά την υποβολή, θα πρέπει να δείτε ένα μήνυμα ειδοποίησης. Μόλις αυτό το μήνυμα εμφανίζεται, επιστρέψετε σε αυτή τη σελίδα και κάντε κλικ στο κουμπί Ανανέωση παρακάτω. Όταν αυτή η διαδικασία έχει ολοκληρωθεί, θα δείτε ένα κουμπί κάτω συνεχίσει, λαμβάνοντας σας στο επόμενο βήμα."; +$LANG["text_add_form_step_2_para_6"] = "Κατά τη φόρμα σας, να περιλαμβάνει τις ακόλουθες τιμές. Μπορούν να τεθούν άμεσα μέσω PHP ή έχει περάσει κατά μήκος από το ίδιο το έντυπο. Ακολουθούν παραδείγματα για κάθε. Η (\$ varname) είναι ένα hash (ή associative array) όλων των πληροφοριών υποβολή μορφή - αυτό είναι συνήθως το (\$ postvar) ή (\$ sessionvar) μεταβλητή, αλλά μπορεί να κατασκευαστεί έθιμο."; +$LANG["text_add_form_step_2_text_2"] = "Εισάγετε τη διεύθυνση URL του "σας ευχαριστώ " της σελίδας σας εδώ. Αυτό είναι όπου θέλετε οι άνθρωποι να κατευθύνονται προς αφού το έντυπο έχει υποβληθεί."; +$LANG["text_add_form_step_3_para_1"] = "Αυτή η σελίδα περιέχει όλα τα πεδία στην φόρμα υποβολής σας. Παρακαλείσθε να εξετάσει κάθε πεδίο και να αρθεί κάθε ότι δεν χρειάζεται αποθηκεύονται για κάθε υποβολή. Εάν διαγράψετε ένα έγκυρο πεδίο από ατύχημα, ή θέλετε να αλλάξετε τις πληροφορίες που αποθηκεύονται από τη φόρμα σας, επιστρέψτε στην προηγούμενη σελίδα για να στείλετε ένα νέο υποβολή δοκιμή."; +$LANG["text_add_form_step_3_para_2"] = "Σημείωση: εάν στέλνετε πολλές τιμές μέσω πλαίσια ελέγχου ή ένα πολυ-επιλέξτε κουτί, βεβαιωθείτε ότι το όνομα τομέα σας τελειώνει με το [] χαρακτήρες (βλ. την τεκμηρίωση χρήστη για περισσότερες πληροφορίες)."; +$LANG["text_add_form_step_3_text_1"] = "Εδώ είναι όπου η διασκέδαση αρχίζει! Σε αυτό το σημείο, Εργαλεία φόρμας είναι σε αναμονή για την υποβολή της πρότασης δοκιμής από τη φόρμα σας. Θα χρησιμοποιήσετε αυτήν την υποβολή φόρμα για να γνωρίζουμε ποιες πληροφορίες πρέπει να αποθηκεύονται στη βάση δεδομένων."; +$LANG["text_add_form_step_3_text_2"] = "επισημαίνοντας φόρμα σας για το έντυπο Εργαλεία"; +$LANG["text_add_form_step_3_text_3"] = "χρησιμοποιώντας το έντυπο Εργαλεία API"; +$LANG["text_add_form_step_3_text_4"] = "Να συμβάλει στην ολοκλήρωση φόρμα σας, σας προτείνουμε να διαβάσετε ένα από τα παρακάτω μαθήματα:"; +$LANG["text_add_form_step_3_text_5"] = "Εξηγούν πώς να δημιουργήσει τη φόρμα σας στο πλαίσιο της προετοιμασίας για την υποβολή δοκιμής, και να περιλαμβάνει άλλες πληροφορίες που μπορεί να βοηθήσει. Η γραμμή της PHP που θα χρειαστείτε είναι:"; +$LANG["text_add_form_step_3_text_6"] = "Αυτό διασφαλίζει τα δεδομένα που αποστέλλονται στην πραγματικότητα για το έντυπο εργαλεία. Όταν έχετε θέσει υποβληθούν δοκιμής σας, κάντε κλικ στο κουμπί παρακάτω."; +$LANG["text_add_form_step_3_text_7"] = "Από την προηγούμενη σελίδα για να σας τελικό "ευχαριστώ" σελίδα, να είστε βέβαιος να προσθέσει την ακόλουθη παράμετρο στο \$ params μεταβλητή:"; +$LANG["text_add_form_step_5_para_1"] = "Η βάση δεδομένων έχει δημιουργηθεί με την παρούσα μορφή και το έντυπο έχει ενεργοποιηθεί για χρήση. Αν έχετε κάνει την υποβολή τονίζοντας φόρμα σας σε process.php, παρακαλούμε να επιστρέψετε στην φόρμα σας και να αφαιρέσετε τα ακόλουθα κρυφό πεδίο:"; +$LANG["text_add_form_step_5_para_2"] = "Συνέχεια επίσκεψή σας "ευχαριστώ" σελίδα για να αδειάσει η συνεδρίες. Μόλις γίνει αυτό, όλες οι νέες προτάσεις μορφή θα υποβληθούν σε επεξεργασία και αποθηκεύονται από το έντυπο εργαλεία. Δοκιμάστε να γίνει υποβολή ή δύο για να επαληθεύσει τις πληροφορίες που είναι όλα φορτώνω σωστά."; +$LANG["text_add_form_step_5_para_3"] = "Εάν επιθυμείτε να προσαρμόζουν τη φόρμα σας για τις επιλογές, όπως η αυτο-ηλεκτρονικού ταχυδρομείου, προσθέτοντας επιπλέον πεδίο φόρμας τα πεδία, ή την προσαρμογή τους τύπους πεδίο φόρμας, μπορείτε να επεξεργαστείτε τη φόρμα σας σε οποιοδήποτε σημείο."; +$LANG["text_add_form_step_5_para_4"] = "Δεδομένου ότι η φόρμα σας περιέχει αρχείο upload πεδία, θα χρειαστεί να ρυθμίσετε κάθε τομέα, προκειμένου να καθορίσετε το φάκελο upload αρχείου, τα αρχεία που θα επιτρέπονται και. Αυτό μπορεί να βρεθεί στην καρτέλα Οθόνη του σελίδα επεξεργασίας φόρμα."; +$LANG["text_add_form_step_5_para_5"] = "Εάν η υποβολή εστάλη μέσω του ΑΡΙ, η αλλαγή ft_api_init_form_page γραμμή στην πρώτη σελίδα του εντύπου σας:"; +$LANG["text_add_submission_button"] = "Το κουμπί Προσθήκη Υποβολή εμφανίζεται μόνο για τις απόψεις που έχουν την "Μπορεί να προσθέσει υποβολές " επιλογή που να "Ναι "."; +$LANG["text_admin_email_placeholder_info"] = "Αυτή είναι η διεύθυνση ηλεκτρονικού ταχυδρομείου του διαχειριστή του εντύπου Εργαλεία, που ορίζεται από τις ρυθμίσεις του λογαριασμού σας. Αυτό εξόδους μόνο η διεύθυνση ηλεκτρονικού ταχυδρομείου, οπότε αν θέλετε να χρησιμοποιήσετε ως σύνδεσμος HTML, θα χρειαστεί να το τυλίγουμε σε μια <a> ετικέτα, όπως:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Επίσης η σύνδεση προεπιλεγμένο θέμα σελίδα)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Πρώτα, επιλέξτε τον τύπο της φόρμας σας."; +$LANG["text_client_form_page"] = "Αυτή η σελίδα περιέχει όλες τις μορφές και Εμφανίσεις αποδίδεται σε αυτό τον πελάτη. Συμβουλή: Για να δείτε τους ισχυρισμούς μια φόρμα του, θα πρέπει να ανατεθεί σε μία τουλάχιστον από άποψη."; +$LANG["text_client_map_filters_desc1"] = "Φίλτρα Χάρτης πελάτη σας αφήσει να περιορίσουν τις παρατηρήσεις που εμφανίζονται σε αυτή την άποψη με τη χαρτογράφηση των τιμών σε ένα πεδίο φόρμας με τις τιμές σε ένα λογαριασμό πελάτη."; +$LANG["text_client_no_forms"] = "Έχετε αυτή τη στιγμή δεν έντυπα διαθέσιμα για έλεγχο."; +$LANG["text_client_welcome"] = "Καλώς ορίσατε! Αυτό το πρόγραμμα αποθηκεύει όλες τις πληροφορίες που υποβάλλονται από επισκέπτες της ιστοσελίδας σας. Για να δείτε τις υποψηφιότητες για μια συγκεκριμένη μορφή απλώς κάντε κλικ στο σύνδεσμο VIEW, ή να δείτε το αριστερό μενού πλοήγησης για άλλες επιλογές."; +$LANG["text_config_file_created"] = "Αρχείο config.php σας έχει δημιουργηθεί."; +$LANG["text_config_file_not_created"] = "Δεν θα μπορούσε να δημιουργήσει αρχείο config.php σας. Θα χρειαστεί να δημιουργήσετε το αρχείο χειροκίνητα."; +$LANG["text_config_file_not_created_instructions"] = "Αντιγράψτε και επικολλήστε το περιεχόμενο από την παρακάτω ενότητα σε ένα αρχείο που ονομάζεται config.php και ανεβάστε μέσω FTP στο έντυπο Εργαλεία / παγκόσμια φάκελο (στο φάκελο που περιέχει επίσης μερικά άλλα αρχεία και καταλόγους, ένα αρχείο που ονομάζεται library.php)."; +$LANG["text_confirm_delete_form"] = "Ναι, θέλω να διαγράψω αυτό το έντυπο"; +$LANG["text_create_admin_account"] = "Τώρα θα πάμε να δημιουργήσετε λογαριασμό του διαχειριστή. Αυτό χρησιμοποιείται για τη διαχείριση όλων των πτυχών του εντύπου εργαλεία, όπως η προσθήκη των μορφών και τη δημιουργία λογαριασμούς πελατών."; +$LANG["text_create_new_client_account"] = "Χρησιμοποιήστε την παρακάτω φόρμα για να δημιουργήσετε έναν νέο λογαριασμό πελάτη. Όλα τα πεδία."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "δείτε PHP {\$datefunctionlink} λειτουργίας για τις επιλογές μορφοποίησης"; +$LANG["text_default_file_settings_page"] = "Η σελίδα αυτή καθορίζει τις ρυθμίσεις για upload αρχείου Μορφή Εργαλεία εγκατάσταση σας. Οι κανόνες αυτοί ισχύουν για όλα τα στοιχεία που αποστέλλονται μέσω Μορφή Εργαλεία, Εάν δεν αναφέρεται ρητά προέχει για ένα μεμονωμένο πεδίο φόρμας. Σημείωση: εάν αλλάξετε το φάκελο μετά φορτώσετε τα αρχεία έχουν εισαχθεί, που θα μεταφερθούν αυτόματα στο νέο φάκελο."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Πριν συνεχίσουμε, θα πρέπει να ενημερώσετε / θέματα σας / default / φάκελο cache για να επιτρέψει την πλήρη δικαιώματα ανάγνωσης και εγγραφής. Μόλις γίνει αυτό, αυτό το μήνυμα θα εξαφανιστεί και μπορείτε να εγκαταστήσετε το script."; +$LANG["text_default_values_in_view"] = "Η ενότητα αυτή είναι προαιρετική. Όλες οι παρατηρήσεις δημιουργήθηκε με την άποψη αυτή θα περιέχει τις προεπιλεγμένες τιμές που καθορίζονται εδώ."; +$LANG["text_delete_all_forms"] = "Θέλω να διαγράψετε όλα τα αρχεία που είχαν αποσταλεί μέσω αυτής της μορφής"; +$LANG["text_delete_form_warning"] = "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το έντυπο; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Όλα τα δεδομένα θα χαθούν οριστικά!"; +$LANG["text_edit_admin_menu_page"] = "Μπορείτε να επεξεργαστείτε το μενού σας παρακάτω. Για να σας εξασφαλίσει έχουν πάντα πρόσβαση σε όλες τις λειτουργίες διαθέσιμες εντός Μορφή Εργαλεία, απαιτούνται οι ακόλουθες σελίδες: Μορφές, Πελάτες, σας λογαριασμού, Modules, Ρυθμίσεις και Αποσύνδεση."; +$LANG["text_edit_client_menu_page"] = "Αυτή η ενότητα σας επιτρέπει να προσαρμόσετε την αριστερή στήλη πλοήγησης για κάθε χρήστη. Μπορείτε να δημιουργήσετε όσες μενού πελάτη όπως εσείς επιθυμείτε και να ορίσετε κάθε λογαριασμό σε ένα από αυτά. Εξ ορισμού υπάρχουν δύο μενού: ένα για εσάς, ο διαχειριστής, και ένας για όλους τους λογαριασμούς των πελατών. Ο λογαριασμός διαχειριστή μπορεί να τροποποιηθεί αλλά δεν καταργούνται."; +$LANG["text_edit_tab_summary"] = "Εάν επιθυμείτε να ομαδοποιήσετε πεδία αυτής της προβολής της σε καρτέλες, απλά εισάγετε τα ονόματα παρακάτω καρτέλα. Αφού τελειώσετε, επιλέξτε την κατάλληλη καρτέλα για κάθε ομάδα πεδίο στην καρτέλα Πεδία ."; +$LANG["text_edit_view_list_page"] = "Αυτή η καρτέλα ελέγχει τα πεδία που εμφανίζονται ως στήλες στη σελίδα Λίστα Υποβολή, και μερικές πρόσθετες ρυθμίσεις για τους τομείς αυτούς. Σημείωση: Σας συνιστούμε να προσθέσετε όχι περισσότερο από 4 ή 5 από τα πιο σημαντικά πεδία στην προβολή."; +$LANG["text_email_settings_intro"] = "Αυτή η σελίδα σας επιτρέπει να προσδιορίσει ποιο από τα ηλεκτρονικά ταχυδρομεία αποτελούν πεδία σας κατάστημα και τα αντίστοιχα τα ονόματά τους. Μόλις τον ορισμό τους εδώ, μπορείτε να τις χρησιμοποιήσετε στο email σας πρότυπα ως αποδέκτες. Αυτή η ενότητα είναι απολύτως προαιρετική."; +$LANG["text_email_tab_summary"] = "Αυτή η ενότητα σας επιτρέπει να κατασκευάσει οποιοδήποτε αριθμό μηνυμάτων που αποστέλλονται κάθε φορά που σας έντυπο της αίτησης, καθώς και άλλους παράγοντες."; +$LANG["text_email_template_tab"] = "Αυτή η ενότητα σας επιτρέπει να καθορίσετε ποιο περιεχόμενο εμφανίζεται στο ηλεκτρονικό ταχυδρομείο. Αν επιθυμείτε να στείλετε e-mail σας, καθώς μόνο κειμένου ή ηλεκτρονικού ταχυδρομείου, μόλις εισάγετε μια τιμή για το εν λόγω τμήμα. Αν εισάγετε μια τιμή για τα δύο, το μήνυμα ηλεκτρονικού ταχυδρομείου θα αποσταλεί και στις δύο μορφές."; +$LANG["text_email_template_text_1"] = "Υπήρξε μια κατάθεση πραγματοποιηθεί μέσω της φόρμας σας, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Υπήρξε μια κατάθεση πραγματοποιηθεί μέσω της φόρμας σας, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Ευχαριστώ για την υποβολή σας!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Μήνυμα σφάλματος για να δείξει αν το πεδίο αποτύχει η επικύρωση"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Εξωτερικές μορφές είναι μορφές που υπάρχουν ήδη στην ιστοσελίδα σας, ή κάπου στο διαδίκτυο. Επιλέξτε αυτήν την επιλογή αν έχετε δική σας φόρμα που θέλετε να ενσωματωθούν με Εργαλεία φόρμας."; +$LANG["text_fields_tab_summary"] = "Αυτή η σελίδα περιέχει όλα τα πεδία της φόρμας σας. Για να ελέγξετε τον τρόπο που εμφανίζονται κατά την περιήγηση υποβολές, δείτε την καρτέλα Προβολές . Διαγραφή ενός πεδίου σε αυτή τη σελίδα θα διαγραφεί και από όλες τις υποβολές, γι 'αυτό παρακαλώ να είστε προσεκτικοί!"; +$LANG["text_file_extension_info"] = "Εισάγετε τις επεκτάσεις αρχείων διαχωρίζονται με κόμματα (π.χ. jpg, gif, png) ή αφήστε κενό για να επιτρέπουν σε κάθε τύπο αρχείου."; +$LANG["text_file_field_placeholders_info"] = "Φάκελος πεδία έχουν δύο ειδικά σύμβολα κράτησης θέσης: FILEURL και FILENAME. FILEURL είναι η πλήρης διεύθυνση URL του αρχείου, ώστε να μπορείτε να συνδέσετε απευθείας σε αυτό το e-mail σας? FILENAME είναι μόνο το όνομα του αρχείου."; +$LANG["text_filters_page"] = "Μόνον οι ισχυρισμοί που πληρούν τους κανόνες που ορίζουν παρακάτω θα εμφανιστεί σε αυτή την άποψη."; +$LANG["text_filters_tips"] = "Για συμβουλές σχετικά με τη χρήση φίλτρων υποβολή, δείτε το User Documentation."; +$LANG["text_forgot_password"] = "Δεν υπάρχει πρόβλημα. Απλά εισάγετε το username σας παρακάτω και τα στοιχεία σύνδεσής σας θα σταλεί στη διεύθυνση ηλεκτρονικού ταχυδρομείου σας σε αρχείο. Εάν έχετε ξεχάσει το όνομα χρήστη σας, παρακαλούμε στείλτε email με τον διαχειριστή σε {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Το έντυπο αυτό περιέχει μία ή περισσότερες αρχείο upload πεδία:"; +$LANG["text_form_placeholder_info"] = "Τα ακόλουθα σύμβολα κράτησης θέσης μπορεί να χρησιμοποιηθεί σε οποιοδήποτε e-mail πρότυπο και τη γλώσσα πεδίο κράτησης θέσης, ανεξάρτητα από ό, τι Προβολή του προτύπου e-mail έχει εκχωρηθεί. Τα σύμβολα κράτησης θέσης ΕΡΩΤΗΣΗ είναι η συγκεκριμένη ερώτηση μορφή? Τα σύμβολα κράτησης θέσης ΑΠΑΝΤΗΣΗ είναι οι απαντήσεις σε κάθε ερώτηση."; +$LANG["text_form_submission_date_placeholder"] = "Η ημερομηνία κατά την υποβολή έγινε."; +$LANG["text_form_tools_form_url"] = "Η πλήρης διεύθυνση URL του εντύπου. Αυτό έχει μόνο μια τιμή για τις εξωτερικές μορφές."; +$LANG["text_form_tools_login_url"] = "Η σύνδεση URL για Μορφή εργαλεία."; +$LANG["text_form_view_permission_info_admin"] = "Σημείωση: αυτή η μορφή έχει σήμερα Διαχειριστής τύπο πρόσβασης, έτσι ώστε κανένας από τους λογαριασμούς των πελατών θα είναι σε θέση να δείτε αυτό το View."; +$LANG["text_form_view_permission_info_private"] = "Σημείωση: αυτή η μορφή έχει σήμερα Ιδιωτικός τύπου πρόσβαση τόσο του Δημόσιου και Ιδιωτικού επιλογές εδώ θα περιοριστεί σε αυτό το υποσύνολο των πελατών."; +$LANG["text_ft_installed"] = "Συγχαρητήρια, Μορφή εργαλεία έχει εγκατασταθεί με επιτυχία!"; +$LANG["text_global_placeholder_info"] = "Αυτά τα σύμβολα κράτησης θέσης μπορούν να χρησιμοποιηθούν σε κάθε πρότυπο και οποιαδήποτε μορφή."; +$LANG["text_group_name_explanation"] = "Για τα πεδία προστίθενται μέσω της διαδικασίας Προσθήκη έντυπο, η τιμή αυτή είναι προγεμισμένη με το κείμενο της οθόνης ανεξάρτητα από τον τομέα χρησιμοποιεί την τιμή. Μπορεί να θέλετε να το αλλάξετε την καλύτερη χαρακτηρίζουν το περιεχόμενο."; +$LANG["text_install_create_config_file"] = "Μορφή καταστήματα Εργαλεία διακομιστή σας και ρυθμίσεις της βάσης δεδομένων σε ένα αρχείο που ονομάζεται config.php, βρέθηκαν σε / παγκόσμια σας / folder. Κάντε κλικ στο "Δημιουργία αρχείου" για να δημιουργήσει αυτόματα το αρχείο στο διακομιστή σας."; +$LANG["text_install_create_database_tables"] = "Τώρα θα πάμε να δημιουργήσουμε το έντυπο πίνακες της βάσης δεδομένων εργαλεία. Αυτό το βήμα απαιτεί η ίδια η βάση δεδομένων να έχουν ήδη δημιουργηθεί. Αν δεν είστε σίγουροι πώς να το κάνετε αυτό, παρακαλούμε επικοινωνήστε με τον πάροχο φιλοξενίας σας."; +$LANG["text_install_db_tables_error_tip_1"] = ""Άγνωστος MySQL Server υποδοχής" συνήθως σημαίνει ότι το όνομα που δώσατε είναι λάθος. Ίσως προσπαθείτε ρύθμιση αυτή για να "localhost" - αυτό είναι ένας κοινός τρόπος για να αναφερθώ στην "τοπική" βάση δεδομένων σε ένα web server."; +$LANG["text_install_db_tables_error_tip_2"] = ""Δεν είναι δυνατή η σύνδεση με τοπικό κεντρικό υπολογιστή MySQL μέσω υποδοχή" νοείται η βάση δεδομένων όνομα τομέα είναι και πάλι εσφαλμένος."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" σημαίνει ότι υπάρχει κάποιο πρόβλημα με το username / password συνδυασμό."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied για το χρήστη: ... με τη βάση δεδομένων ..." σημαίνει ότι αν και το όνομα χρήστη και τον κωδικό πρόσβασης που παρέχονται είναι σωστές, θα ήταν σε θέση να συνδεθεί με τη συγκεκριμένη βάση δεδομένων με αυτόν τον λογαριασμό. Αυτό μπορεί να σημαίνει ότι είτε το όνομα βάσης δεδομένων είναι εσφαλμένη, ή ότι αυτός ο λογαριασμός χρήστη δεν συνδέεται με την εν λόγω βάση δεδομένων."; +$LANG["text_install_email_content_text"] = "Υπάρχουν αρκετοί πόροι στον ιστότοπό μας για να σας βοηθήσουμε να ξεκινήσετε, συμπεριλαμβανομένης της ηλεκτρονικής τεκμηρίωσης (https://docs.formtools.org) και των σεμιναρίων (https://docs.formtools.org/tutorials). Εάν διαπιστώσετε ότι έχετε κολλήσει ή έχετε κάποια ερώτηση, ρωτήστε μια ερώτηση σχετικά με το github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Λυπούμαστε, Εργαλεία φόρμας δεν θα είναι σε θέση να τρέξει στον server σας. Παρακαλώ κάντε κλικ εδώ για τις ελάχιστες απαιτήσεις."; +$LANG["text_install_system_check"] = "Η σελίδα λειτουργεί μερικές δοκιμές στο σύστημά σας για να εξασφαλίσει ότι είναι σε θέση να τρέξει Εργαλεία Μορφή."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Εσωτερική έντυπα υπάρχουν μόνο μέσα Εργαλεία φόρμας - όχι αλλού στο δικτυακό σας τόπο. Μόνο Εργαλεία λογαριασμούς χρηστών μορφή θα έχουν πρόσβαση στη φόρμα. Επιλέξτε αυτήν την επιλογή αν δεν έχετε μια υπάρχουσα φόρμα."; +$LANG["text_internal_form_intro"] = "Χρησιμοποιήστε την παρακάτω φόρμα για να δημιουργήσετε μια νέα εσωτερική μορφή. Όλες οι ρυθμίσεις, συμπεριλαμβανομένου του αριθμού και του περιεχομένου των πεδίων της φόρμας μπορεί να είναι να αλλάξει και να ρυθμιστούν αργότερα."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Για να συνδεθείτε και να χρησιμοποιούν εργαλεία έντυπο, θα πρέπει να έχετε ενεργοποιημένη τη Javascript στον browser σας. Παρακαλώ ενεργοποιήστε το τώρα, και να ανανεώσετε κλικ στον browser σας."; +$LANG["text_last_modified_date_explanation_c"] = "Η τελευταία φορά που ο ισχυρισμός αυτός τροποποιήθηκε. Για τις νέες παρατηρήσεις, αυτό είναι το ίδιο:"; +$LANG["text_limit_email_content_desc"] = "Αυτή η επιλογή λειτουργεί μόνο για HTML και το περιεχόμενο κειμένου που δημιουργούνται με Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(κατάλογοι μόνο Προβολές ορίζονται με ένα ή περισσότερα φίλτρα)"; +$LANG["text_log_in_to_ft"] = "Συνδεθείτε με το έντυπο Εργαλεία"; +$LANG["text_login"] = "Παρακαλώ συνδεθείτε παρακάτω, για να έχουν πρόσβαση στο (\$ Program_Name) Διοίκησης Panel. Αν έχετε ξεχάσει τον κωδικό σας, κάντε κλικ εδώ."; +$LANG["text_login_info"] = "Όπως είχε ζητήσει, εδώ είναι τα στοιχεία σύνδεσής σας."; +$LANG["text_name_of_form"] = "Το όνομα της φόρμας."; +$LANG["text_no_clients"] = "Δεν υπάρχουν πελάτες στη βάση δεδομένων. Για να προσθέσετε ένα νέο λογαριασμό πελάτη, κάντε κλικ στο κουμπί Προσθήκη πελάτη παρακάτω."; +$LANG["text_no_clients_found"] = "Δεν βρέθηκαν πελάτες. Δοκιμάστε διευρύνοντας τα κριτήρια της αναζήτησής σας."; +$LANG["text_no_fields_in_view"] = "Αυτή η άποψη δεν έχει καμία πεδία σε αυτό. Κάντε κλικ στον παρακάτω σύνδεσμο."; +$LANG["text_no_forms"] = "Δεν υπάρχουν έντυπα στη βάση δεδομένων. Για να προσθέσετε μια νέα φόρμα, κάντε κλικ στο κουμπί Προσθήκη παρακάτω φόρμα."; +$LANG["text_no_forms_found"] = "Δεν μορφές βρέθηκαν."; +$LANG["text_no_forms_found_search"] = "Δεν μορφές βρέθηκαν. Δοκιμάστε τη διεύρυνση των κριτηρίων αναζήτησής σας."; +$LANG["text_no_modules_found"] = "Δεν βρέθηκαν ενότητες. Δοκιμάστε διευρύνοντας τα κριτήρια της αναζήτησής σας."; +$LANG["text_no_recipients_added"] = "Προστέθηκαν Δεν αποδέκτες."; +$LANG["text_no_search_results"] = "Δεν υπάρχουν αποτελέσματα με αυτά τα κριτήρια αναζήτησης / Προβολή."; +$LANG["text_no_submissions_found"] = "Λυπούμαστε, δεν βρέθηκαν παρατηρήσεις."; +$LANG["text_no_themes"] = "Δεν έχετε κανένα θέματα που ορίζονται. Κάντε κλικ στο κουμπί παρακάτω για να ανανεώσετε τον κατάλογο το θέμα σας, ή να ελέγξετε το έντυπο τεκμηρίωση χρήστη Εργαλεία για πληροφορίες σχετικά με την προσθήκη θεμάτων."; +$LANG["text_non_deletable_fields"] = "Αυτό το πεδίο χρησιμοποιείται από το σενάριο πυρήνα και δεν μπορούν να επεξεργαστούν ή να διαγραφούν χωρίς να προκαλέσει ασυμβατότητες. Εάν επιθυμείτε να κάνετε αλλαγές στον τύπο πεδίου, κάντε ένα αντίγραφο του και να επεξεργαστείτε το αντίγραφο."; +$LANG["text_option_list_group_explanation"] = "Αν επιλεγεί, σας επιτρέπει να ομαδοποιήσετε τις επιλογές σας. Τον τρόπο εμφάνισης των ομάδων εξαρτάται από τον τύπο πεδίου χρησιμοποιώντας αυτή τη λίστα επιλογής."; +$LANG["text_option_list_page"] = "Κουμπιά επιλογής, πλαίσια ελέγχου, αναπτυσσόμενα μενού και πολλαπλών επιλέξτε αναπτυσσόμενα πεδία παρέχουν όλες τις χρήστη με πολλαπλές επιλογές από τις οποίες μπορεί να επιλέξει ένα ή περισσότερα στοιχεία. Σε Εργαλεία φόρμας, αυτές είναι γνωστές ως καταλόγους επιλογών. Γενικά, αυτές δημιουργούνται αυτόματα από το Προσθέστε εξωτερική μορφή της διαδικασίας, αλλά μπορείτε να προσθέσετε με το χέρι ή να επεξεργαστείτε τις λίστες επιλογής σας παρακάτω φόρμα, εάν οι αλλαγές σας περιεχόμενο ή να κατασκευάσει πεδία που είναι μόνο για εσωτερική χρήση."; +$LANG["text_option_list_used_by_fields"] = "Αυτή η λίστα επιλογών χρησιμοποιείται από πολλά πεδία φόρμας. Εάν ενημερώσετε τις παρακάτω πληροφορίες, αυτό θα αλλάξει για όλα τα πεδία (δείτε το έντυπο Πεδία καρτέλα για να δείτε τον κατάλογο των τομέων). Εάν επιθυμείτε να ενημερώσετε τις τιμές για το ένα, ή ένα υποσύνολο των πεδίων που είναι επί του παρόντος ανατεθεί, κάντε κλικ εδώ για να δημιουργήσετε μια νέα λίστα επιλογών με τις ίδιες αξίες με αυτή. Στη συνέχεια μπορείτε να αντιστοιχίσετε τα πεδία φόρμας που θέλετε στη νέα ομάδα."; +$LANG["text_public_form_omit_list_page"] = "Δημόσια έντυπα σας δώσει το πλεονέκτημα της μισθώσεως όλων των λογαριασμών των πελατών τους πρόσβαση δεν έχει να δώσει το χέρι κάθε πελάτη τους. Αυτή η σελίδα σας επιτρέπει να εντοπιστούν οι πελάτες που δεν μπορούν να έχουν πρόσβαση αυτή τη μορφή, έστω και αν η μορφή χαρακτηρίζεται ως δημόσια."; +$LANG["text_public_view_omit_list_page"] = "Δημόσια Προβολές σας δώσει το πλεονέκτημα της μισθώσεως όλων των λογαριασμών των πελατών τους πρόσβαση δεν έχει να δώσει το χέρι κάθε πελάτη τους. Αυτή η σελίδα σας επιτρέπει να εντοπιστούν οι πελάτες που δεν μπορούν να έχουν πρόσβαση αυτή τη συγκεκριμένη άποψη."; +$LANG["text_reference_tab_info"] = "Αυτή η σελίδα περιέχει όλα τα διαθέσιμα πεδία κράτησης θέσης για τη φόρμα σας. Τα σύμβολα κράτησης θέσης είναι σειρές που μπορούν να χρησιμοποιηθούν για την κατασκευή μοντέλων e-mail, και τα πεδία που σημειώνονται με ένα ειδικό εικονίδιο κράτησης θέσης . Όταν τέθηκε σε ένα πεδίο, είναι δυναμικά μετατρέπονται στην κατάλληλη τιμή όταν το πεδίο είναι η προβολή ή το e-mail αποστέλλεται."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Ελέγχει τον φάκελο τεκμηρίωσης χρήστη"; +$LANG["text_send_email_from_edit_submission_page"] = "Συμπεριλάβετε την επιλογή για να στείλετε αυτό το email από τη σελίδα Επεξεργασία Υποβολή"; +$LANG["text_smart_fill_option_list_problem"] = "Δεν μπορέσαμε να Smart Συμπληρώστε τις επιλογές σας πεδίο. Ωστόσο, ως εναλλακτική λύση, μπορείτε να επαναλάβετε τη μεταφόρτωση ένα αντίγραφο της σελίδας της φόρμας σας στο παρακάτω πεδίο. Σημείωση: Μην ανεβάσετε πρώτες σελίδες PHP (ή άλλες server-side code) - ανεβάστε λίγο την HTML έκδοση. Για να πάρετε αυτό, δείτε και να αποθηκεύσετε τη σελίδα από το web browser σας."; +$LANG["text_submission_ip_address"] = "Η διεύθυνση IP του χρήστη που έκανε την υποβολή."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Χρησιμοποιήστε την παρακάτω φόρμα είτε να δείτε τον εαυτό σας ή να στείλετε ένα μήνυμα ηλεκτρονικού ταχυδρομείου που παράγονται από αυτό το email πρότυπο. Το ηλεκτρονικό μήνυμα αποστέλλεται μόνο για το e-mail που ορίζονται παρακάτω? Είναι οι κύριοι, cc και bcc παραλήπτες διεύθυνση ηλεκτρονικού ταχυδρομείου, ενώ αγνοούνται δοκιμή."; +$LANG["text_test_email_templates_no_submissions"] = "Για να ελέγξετε το email σας πρότυπα, πρέπει πρώτα να τεθεί σε τουλάχιστον μια υποβολή μορφή."; +$LANG["text_theme_page_intro"] = "Αυτή η σελίδα περιέχει όλα τα θέματα σας. Κάντε κλικ σε μια φωτογραφία για να δείτε ένα μεγαλύτερο παράδειγμα του στυλ του θεματικού πεδίου. Η "δυνατότητα" κουτάκι καθορίζει ή μη ότι το θέμα μπορεί να επιλεγεί από τους πελάτες. Για να περιηγηθείτε σε όλα τα διαθέσιμα θέματα, επισκεφθείτε την ιστοσελίδα Μορφή Εργαλεία."; +$LANG["text_tutorial_adding_first_form"] = "Βοήθημα: Προσθήκη πρώτη φόρμα σας!"; +$LANG["text_unique_submission_id"] = "Η υποβολή μοναδικό αναγνωριστικό."; +$LANG["text_unused_option_list"] = "Αυτός ο κατάλογος επιλογή δεν χρησιμοποιείται από καμία πεδία φόρμας."; +$LANG["text_upgraded"] = "Εγκατάσταση σας έχει αναβαθμιστεί στην {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Αυτή η λίστα επιλογών χρησιμοποιείται από τα παρακάτω πεδία."; +$LANG["text_view_fields_info"] = "Αυτή η καρτέλα ελέγχει τα πεδία που εμφανίζονται κατά την επεξεργασία μιας υποβολής σε αυτή την προβολή, τη σειρά τους και αν είναι δυνατή η επεξεργασία ή όχι."; +$LANG["text_view_tab_summary"] = "Αυτή η καρτέλα σας επιτρέπει να δημιουργήσετε διαφορετικούς τρόπους για να ομαδοποιήσετε και να τακτοποιήσετε τα δεδομένα σας. Απόψεις σας επιτρέπουν να δημιουργήσετε προσαρμοσμένες υποσύνολα των δεδομένων της φόρμας σας για να χωριστεί σε διαχειρίσιμα κομμάτια, και να περιορίσει αυτό που οι πελάτες μπορούν να δουν ή να επεξεργαστείτε."; +$LANG["validation_account_disabled"] = "Λυπούμαστε, ο λογαριασμός σας έχει απενεργοποιηθεί."; +$LANG["validation_account_not_recognized"] = "Λυπούμαστε, ότι το όνομα χρήστη δεν αναγνωρίζεται."; +$LANG["validation_account_not_recognized_info"] = "Λυπούμαστε, ότι το όνομα χρήστη δεν βρέθηκε. Παρακαλώ δοκιμάστε ξανά, ή επικοινωνήστε με τον διαχειριστή στην παρακάτω διεύθυνση."; +$LANG["validation_account_pending"] = "Λογαριασμός χρήστη σας είναι εν αναμονή της έγκρισης από ένα διαχειριστή."; +$LANG["validation_check_delete_client"] = "Είστε σίγουροι ότι θέλετε να διαγράψετε αυτό το λογαριασμό του πελάτη;"; +$LANG["validation_client_password_missing_number"] = "Ο κωδικός πρόσβασης πελάτης πρέπει να περιέχει τουλάχιστον έναν αριθμό (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Ο κωδικός πρόσβασης πελάτης πρέπει να περιέχει τουλάχιστον ένα από τους ακόλουθους χαρακτήρες: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Ο κωδικός πρόσβασης πελάτης πρέπει να περιέχει τουλάχιστον ένα κεφαλαίο γράμμα."; +$LANG["validation_client_password_too_short"] = "Ο κωδικός πρόσβασης πελάτης πρέπει να είναι τουλάχιστον {\$number} χαρακτήρες."; +$LANG["validation_col_name_is_reserved_word"] = "Συγγνώμη, αυτό το όνομα στήλης βάση δεδομένων είναι αποκλειστικά εργασία σε MySQL. Παρακαλώ μετονομασία!"; +$LANG["validation_db_name"] = "Τα ονόματα βάσεων δεδομένων δεν μπορούν να περιέχουν περιόδους ή καμπύλες."; +$LANG["validation_db_not_updated_invalid_input"] = "Η βάση δεδομένων δεν μπορεί να ενημερωθεί. Ελέγξτε για να δείτε τις τιμές που δώσατε είναι έγκυρη."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Λυπούμαστε, ο διαχειριστής προεπιλογή και θέματα πελάτη πρέπει πάντοτε να είναι ενεργοποιημένα."; +$LANG["validation_default_phone_num_required"] = "Παρακαλούμε συμπληρώστε τον πλήρη αριθμό τηλεφώνου για την <b> { \$ τομέα} </ b> - μόνο αριθμούς."; +$LANG["validation_default_rule_alpha"] = "Παρακαλώ εισάγετε μόνο γράμματα και αριθμούς για την <b> { \$ τομέα} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Παρακαλώ εισάγετε γράμματα μόνο για τα <b> { \$ τομέα} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Παρακαλώ εισάγετε μόνο αριθμούς για την <b> { \$ τομέα} </ b>."; +$LANG["validation_default_rule_required"] = "Παρακαλώ εισάγετε μια τιμή για την <b> { \$ τομέα} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση e-mail για την <b> { \$ τομέα} </ b>."; +$LANG["validation_delete_form_confirm"] = "Παρακαλούμε ελέγξτε το κουτί για να επιβεβαιώσετε ότι θέλετε να διαγράψετε αυτό το έντυπο."; +$LANG["validation_delete_non_empty_option_list"] = "Προσοχή! Αυτή η λίστα επιλογών χρησιμοποιείται από ένα ή περισσότερα πεδία φόρμας. Η διαγραφή θα κάνει στους τομείς αυτούς παύει να λειτουργεί σωστά."; +$LANG["validation_display_names_incomplete"] = "Παρακαλώ εισάγετε μια τιμή για όλα τα εμφανιζόμενα ονόματα, ή κάντε κλικ στο Smart Συμπληρώστε την επιλογή για να τους μπει δυναμικά."; +$LANG["validation_duplicate_form_field_name"] = "Δεν μπορείτε να έχετε πολλαπλά πεδία με το ίδιο όνομα τομέα."; +$LANG["validation_email_not_found_or_invalid"] = "Λυπούμαστε, το email που σχετίζονται με το λογαριασμό σας, είτε δεν υπάρχει ή είναι άκυρη."; +$LANG["validation_folder_invalid_permissions"] = "Για να εκτελέσετε αυτή τη δοκιμή, τα δικαιώματα που πρέπει να καθορίζονται με upload φάκελο να καταστεί δυνατή η ανάγνωση και δημιουργία αρχείων (777 στο Unix)."; +$LANG["validation_folder_not_writable"] = "Αυτός ο φάκελος δεν είναι εγγράψιμο."; +$LANG["validation_internal_form_too_many_fields"] = "Συγγνώμη, μπορείτε να δημιουργούνται μόνο φόρμες με 1000 πεδία ή λιγότερο."; +$LANG["validation_invalid_admin_email"] = "Παρακαλούμε εισάγετε το e-mail έγκυρη adminstrator του."; +$LANG["validation_invalid_admin_username"] = "Το όνομα χρήστη μπορεί να περιλαμβάνει μόνο αλφαριθμητικούς χαρακτήρες (AZ και 0-9)."; +$LANG["validation_invalid_client_username"] = "Όνομα χρήστη Ο πελάτης μπορεί να περιλαμβάνει μόνο αλφαριθμητικούς χαρακτήρες (AZ και 0-9)."; +$LANG["validation_invalid_client_username2"] = "Λυπούμαστε, το όνομα μπορεί να περιέχει μόνο γράμματα, αριθμούς και το χαρακτήρα υπογράμμισης. Παρακαλώ εισάγετε ένα νέο όνομα χρήστη."; +$LANG["validation_invalid_column_name"] = "Τα ονόματα των στηλών μπορεί να γίνει μόνο αλφαριθμητικούς (az, 0-9). Παρακαλείσθε να ελέγξετε τα ονόματα των στηλών."; +$LANG["validation_invalid_custom_from_email"] = "Παρακαλώ εισάγετε μια έγκυρη έθιμο «Από 'διεύθυνση ηλεκτρονικού ταχυδρομείου."; +$LANG["validation_invalid_custom_reply_to_email"] = "Παρακαλώ εισάγετε μια έγκυρη έθιμο «Απάντηση στη« διεύθυνση ηλεκτρονικού ταχυδρομείου."; +$LANG["validation_invalid_default_sessions_timeout"] = "Παρακαλώ εισάγετε μια έγκυρη τιμή (αριθμός) για τις συνόδους προεπιλεγμένο χρονικό όριο."; +$LANG["validation_invalid_email"] = "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου."; +$LANG["validation_invalid_email_id"] = "Συγγνώμη, αυτό είναι το άκυρο ταυτότητα ηλεκτρονικού ταχυδρομείου."; +$LANG["validation_invalid_folder"] = "Λυπούμαστε, αυτό δεν φαίνεται να είναι έγκυρη φάκελο."; +$LANG["validation_invalid_form_field_names"] = "Πεδία έντυπο μπορεί να είναι μόνο αλφαριθμητικά και χαρακτήρες υπογράμμισης (AZ, 0-9, _), που δεν χώρους."; +$LANG["validation_invalid_num_clients_per_page"] = "Παρακαλώ εισάγετε μόνο αριθμούς στο Πελάτες Αριθ. ανά τομέα σελίδα."; +$LANG["validation_invalid_num_emails_per_page"] = "Παρακαλώ εισάγετε μόνο ψηφία για τα μηνύματα ηλεκτρονικού ταχυδρομείου ανά σελίδα."; +$LANG["validation_invalid_num_form_fields"] = "Παρακαλώ εισάγετε μόνο αριθμούς ο αριθμός των πεδίων τομέα."; +$LANG["validation_invalid_num_forms_per_page"] = "Παρακαλώ εισάγετε μόνο αριθμούς στην Num έντυπα ανά σελίδα πεδίο."; +$LANG["validation_invalid_num_menus_per_page"] = "Παρακαλώ εισάγετε μόνο ψηφία για το μενού ανά σελίδα."; +$LANG["validation_invalid_num_modules_per_page"] = "Παρακαλώ εισάγετε μόνο αριθμούς στην Num Ενότητες ανά τομέα σελίδα."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Παρακαλώ εισάγετε μόνο αριθμούς στον καταλόγους επιλογών Αριθμός ανά πεδίο σελίδας."; +$LANG["validation_invalid_num_submissions_per_page"] = "Παρακαλώ εισάγετε έναν έγκυρο αριθμό των παρατηρήσεων ανά σελίδα."; +$LANG["validation_invalid_sessions_timeout"] = "Παρακαλώ εισάγετε μια έγκυρη timeout συνόδου (ακέραιοι μόνο!)."; +$LANG["validation_invalid_tab_assign_values"] = "Παρακαλώ εισάγετε μόνο αριθμούς στην «από» και «πεδία»."; +$LANG["validation_invalid_table_prefix"] = "Παρακαλώ εισάγετε ένα πρόθεμα βάση δεδομένων αποτελείται από το γράμμα και το χαρακτήρα υπογράμμισης μόνο."; +$LANG["validation_invalid_upload_folder"] = "Εγκατάστασης server σας της PHP έχει ένα άκυρο ρύθμιση για την upload_tmp_dir αξία. "{\$upload_folder}" δεν είναι έγκυρο φάκελο."; +$LANG["validation_invalid_url"] = "Παρακαλώ εισάγετε μια έγκυρη διεύθυνση URL."; +$LANG["validation_invalid_username"] = "Το όνομα χρήστη μπορεί να αποτελείται από αλφαριθμητικούς χαρακτήρες (AZ και 0-9)."; +$LANG["validation_is_form_active"] = "Παρακαλείστε να αναφέρετε αν η μορφή είναι ενεργό ή μη."; +$LANG["validation_menu_name_taken"] = "Συγγνώμη, αυτό το όνομα μενού είναι ήδη. Παρακαλώ επιλέξτε ένα νέο όνομα."; +$LANG["validation_modules_search_no_status"] = "Παρακαλώ επιλέξτε είτε το Enabled ή Disabled πλαίσια ελέγχου."; +$LANG["validation_no_access_type"] = "Παρακαλώ εισάγετε τον τύπο πρόσβασης."; +$LANG["validation_no_account_logout_url"] = "Παρακαλώ εισάγετε αποσύνδεση διεύθυνση URL σας."; +$LANG["validation_no_account_password_confirmed"] = "Παρακαλείσθε να εισέλθει εκ νέου το νέο κωδικό πρόσβασης."; +$LANG["validation_no_account_password_confirmed2"] = "Παρακαλώ επαν-εισάγετε το νέο κωδικό πρόσβασης."; +$LANG["validation_no_admin_email"] = "Παρακαλούμε εισάγετε το e-mail του διαχειριστή."; +$LANG["validation_no_admin_theme"] = "Παρακαλώ επιλέξτε το θέμα για το λογαριασμό διαχειριστή."; +$LANG["validation_no_admin_theme_swatch"] = "Παρακαλώ επιλέξτε ένα δείγμα για το θέμα διαχειριστή."; +$LANG["validation_no_client_email"] = "Παρακαλούμε εισάγετε το e-mail του πελάτη."; +$LANG["validation_no_client_first_name"] = "Δώστε το όνομα του πελάτη."; +$LANG["validation_no_client_last_name"] = "Παρακαλώ εισάγετε το επώνυμο του πελάτη."; +$LANG["validation_no_client_login_page"] = "Αναφέρατε ποια σελίδα ο πελάτης θα πρέπει να κατευθυνθούν προς όταν Πρόσβαση Μελών"; +$LANG["validation_no_client_password"] = "Παρακαλώ εισάγετε τον κωδικό του πελάτη."; +$LANG["validation_no_client_theme_swatch"] = "Παρακαλώ επιλέξτε ένα δείγμα προεπιλογή για τους λογαριασμούς πελατών."; +$LANG["validation_no_client_username"] = "Παρακαλώ εισάγετε το όνομα του πελάτη."; +$LANG["validation_no_column_name"] = "Παρακαλώ εισάγετε όλα τα ονόματα των στηλών, ή κάντε κλικ στο Smart Συμπληρώστε το κουμπί για να συμπληρώσετε αυτόματα."; +$LANG["validation_no_column_selected"] = "Παρακαλώ επιλέξτε τουλάχιστον ένα πεδίο για να εμφανιστεί ως μια στήλη για την υποβολή καταλόγου σελίδα."; +$LANG["validation_no_custom_from_email"] = "Παρακαλώ εισάγετε το έθιμο «Από 'διεύθυνση ηλεκτρονικού ταχυδρομείου."; +$LANG["validation_no_custom_recipient_email"] = "Παρακαλώ εισάγετε το έθιμο παραλήπτη διεύθυνση ηλεκτρονικού ταχυδρομείου."; +$LANG["validation_no_custom_reply_to_email"] = "Παρακαλώ εισάγετε το έθιμο «Απάντηση στη« διεύθυνση ηλεκτρονικού ταχυδρομείου."; +$LANG["validation_no_date_format"] = "Πληκτρολογήστε μια μορφή ημερομηνίας."; +$LANG["validation_no_db_column_single"] = "Παρακαλώ εισάγετε το όνομα της στήλης βάσης δεδομένων."; +$LANG["validation_no_db_hostname"] = "Παρακαλώ εισάγετε το όνομα της βάσης δεδομένων."; +$LANG["validation_no_db_name"] = "Παρακαλώ εισάγετε το όνομα της βάσης."; +$LANG["validation_no_db_username"] = "Παρακαλώ εισάγετε το όνομα χρήστη λογαριασμού βάση δεδομένων."; +$LANG["validation_no_default_client_theme"] = "Παρακαλώ επιλέξτε το προεπιλεγμένο θέμα για όλους τους νέους λογαριασμούς πελατών."; +$LANG["validation_no_default_language"] = "Παρακαλώ επιλέξτε την προεπιλεγμένη γλώσσα για την εγκατάσταση του εντύπου εργαλεία."; +$LANG["validation_no_default_sessions_timeout"] = "Παρακαλώ εισάγετε το όριο χρόνου προεπιλεγμένη συνόδου για τους λογαριασμούς χρηστών."; +$LANG["validation_no_display_text"] = "Παρακαλώ εισάγετε το κείμενο εμφάνισης για κάθε πεδίο."; +$LANG["validation_no_display_text_single"] = "Παρακαλώ εισάγετε την τιμή κειμένου οθόνης."; +$LANG["validation_no_edit_submission_page_label"] = "Παρακαλώ εισάγετε Επεξεργασία ετικέτα σελίδα Submission."; +$LANG["validation_no_email"] = "Παρακαλώ εισάγετε τη διεύθυνση email σας."; +$LANG["validation_no_email_config_field"] = "Παρακαλείσθε να προσδιορίσετε το πεδίο φόρμας είναι το email πεδίο."; +$LANG["validation_no_email_content"] = "Παρακαλούμε εισάγετε το e-mail περιεχόμενο για τουλάχιστον μία από τις μορφές (HTML ή κείμενο)."; +$LANG["validation_no_email_from_field"] = "Παρακαλώ το ηλεκτρονικό ταχυδρομείο «από» πεδίο."; +$LANG["validation_no_email_template_name"] = "Παρακαλούμε εισάγετε το e-mail όνομα του προτύπου."; +$LANG["validation_no_email_template_view_id"] = "Παρακαλώ επιλέξτε την προβολή στην οποία αυτό το email πρότυπο πρέπει να χαρτογραφηθούν."; +$LANG["validation_no_email_template_view_mapping_value"] = "Να αναφέρετε πότε το ηλεκτρονικό μήνυμα πρέπει να σταλεί."; +$LANG["validation_no_enabled_themes"] = "Παρακαλείσθε να εξασφαλίσει ότι τουλάχιστον ένα θέμα είναι ενεργοποιημένη."; +$LANG["validation_no_first_name"] = "Παρακαλώ εισάγετε το όνομά σας."; +$LANG["validation_no_form_field_name"] = "Παρακαλώ εισάγετε όλα τα ονόματα πεδίων μορφή."; +$LANG["validation_no_form_field_single"] = "Παρακαλώ εισάγετε την τιμή του πεδίου φόρμας."; +$LANG["validation_no_form_id"] = "Το έντυπο ID δεν προσδιορίστηκε. Παρακαλούμε αποσυνδεθείτε και προσπαθήστε ξανά."; +$LANG["validation_no_form_name"] = "Παρακαλώ εισάγετε το όνομα φόρμα."; +$LANG["validation_no_form_url"] = "Παρακαλώ εισάγετε το URL φόρμα."; +$LANG["validation_no_last_name"] = "Παρακαλώ εισάγετε το επώνυμο σας."; +$LANG["validation_no_login_page"] = "Αναφέρατε ποια σελίδα θα θέλατε να αποστέλλεται κάθε φορά που θα συνδεθείτε in"; +$LANG["validation_no_logout_url"] = "Παρακαλώ εισάγετε το URL αποσύνδεση."; +$LANG["validation_no_main_email_recipient"] = "Παρακαλούμε εισάγετε τουλάχιστον ένα κύριο παραλήπτη ηλεκτρονικού ταχυδρομείου (δηλ. δεν είναι cc ή bcc)."; +$LANG["validation_no_menu"] = "Παρακαλώ επιλέξτε ένα μενού για αυτό το λογαριασμό χρήστη."; +$LANG["validation_no_menu_id"] = "Παρακαλώ επιλέξτε ένα μενού."; +$LANG["validation_no_num_clients_per_page"] = "Παρακαλώ εισάγετε τον αριθμό των λογαριασμών των πελατών ανά σελίδα."; +$LANG["validation_no_num_emails_per_page"] = "Παρακαλώ εισάγετε τον αριθμό των emails στην λίστα ανά σελίδα."; +$LANG["validation_no_num_form_fields"] = "Παρακαλώ εισάγετε τον αριθμό των πεδίων για τη φόρμα σας."; +$LANG["validation_no_num_forms_per_page"] = "Παρακαλώ εισάγετε τον αριθμό των εντύπων ανά σελίδα."; +$LANG["validation_no_num_menus_per_page"] = "Παρακαλώ εισάγετε τον αριθμό του μενού στη λίστα ανά σελίδα."; +$LANG["validation_no_num_modules_per_page"] = "Παρακαλώ εισάγετε τον αριθμό των ενοτήτων ανά σελίδα."; +$LANG["validation_no_num_option_lists_per_page"] = "Παρακαλώ εισάγετε τον αριθμό των καταλόγων επιλογής ανά σελίδα."; +$LANG["validation_no_num_submissions_per_page"] = "Παρακαλώ εισάγετε τον αριθμό των αιτημάτων για να εμφανιστεί ανά σελίδα."; +$LANG["validation_no_option_list_name"] = "Παρακαλώ εισάγετε το όνομα της λίστας επιλογής."; +$LANG["validation_no_page_titles"] = "Παρακαλώ εισάγετε τους τίτλους προεπιλεγμένη σελίδα για τους λογαριασμούς χρηστών."; +$LANG["validation_no_password"] = "Παρακαλώ εισάγετε τον κωδικό σας."; +$LANG["validation_no_program_name"] = "Παρακαλώ εισάγετε το όνομα του προγράμματος."; +$LANG["validation_no_second_password"] = "Παρακαλώ επαν-εισάγετε τον κωδικό σας."; +$LANG["validation_no_sessions_timeout"] = "Παρακαλώ εισάγετε το όριο χρόνου συνόδου."; +$LANG["validation_no_smart_fill_values"] = "Παρακαλώ εισάγετε το όνομα του πεδίου μορφή και το URL του εντύπου."; +$LANG["validation_no_table_prefix"] = "Παρακαλώ εισάγετε ένα πρόθεμα βάσης δεδομένων."; +$LANG["validation_no_tabs_defined"] = "Δεν καρτέλες ορίζεται"; +$LANG["validation_no_test_email_recipient"] = "Παρακαλώ εισάγετε τη διεύθυνση ηλεκτρονικού ταχυδρομείου για το πού πρέπει να στείλουμε το μήνυμα δοκιμή."; +$LANG["validation_no_test_email_submission_id"] = "Παρακαλώ εισάγετε την υποβολή αναγνωριστικό αριθμό."; +$LANG["validation_no_theme"] = "Παρακαλώ επιλέξτε ένα θέμα."; +$LANG["validation_no_theme_swatch"] = "Παρακαλώ επιλέξτε ένα δείγμα για το επιλεγμένο θέμα."; +$LANG["validation_no_timezone_offset"] = "Παρακαλώ εισάγετε το offset timezone."; +$LANG["validation_no_titles"] = "Παρακαλώ εισάγετε τους τίτλους σελίδα."; +$LANG["validation_no_two_column_names"] = "Λυπούμαστε, δεν μπορείτε να εισάγετε το ίδιο όνομα στήλης βάσης δεδομένων δύο φορές."; +$LANG["validation_no_ui_language"] = "Παρακαλώ επιλέξτε μια γλώσσα για τη διασύνδεση."; +$LANG["validation_no_url"] = "Παρακαλώ εισάγετε μια διεύθυνση URL."; +$LANG["validation_no_username"] = "Παρακαλώ εισάγετε το username σας."; +$LANG["validation_no_username_or_js"] = "Πρέπει να εισάγετε το username σας. Παρακαλούμε ενεργοποιήστε το javascript στον browser σας."; +$LANG["validation_no_view_fields"] = "Η αποψη σας δεν περιέχει κάποια πεδία! Θα πρέπει να ορίσετε τουλάχιστον ένα πεδίο για να υπάρχει κάτι για να εμφανιστούν κατά τη γνώμη σας."; +$LANG["validation_no_view_fields_selected"] = "Παρακαλούμε επιλέξτε ένα ή περισσότερα πεδία για να προσθέσετε στην προβολή."; +$LANG["validation_no_view_name"] = "Παρακαλώ εισάγετε το όνομα του άποψη σας."; +$LANG["validation_num_rows_to_add"] = "Παρακαλώ εισάγετε τον αριθμό των γραμμών να προσθέσω."; +$LANG["validation_option_list_name_taken"] = "Συγγνώμη, αυτό το όνομα της λίστας η επιλογή είναι ήδη ληφθεί. Παρακαλώ επιλέξτε ένα νέο όνομα."; +$LANG["validation_password_in_password_history"] = "Για λόγους ασφαλείας, δεν μπορείτε να εισάγετε τον ίδιο κωδικό ως μια από τις τελευταίες {\$history_size} passwords. Παρακαλώ εισάγετε έναν διαφορετικό κωδικό πρόσβασης."; +$LANG["validation_passwords_different"] = "Παρακαλούμε βεβαιωθείτε ότι οι κωδικοί πρόσβασης είναι τα ίδια."; +$LANG["validation_please_enter_search_date_range"] = "Παρακαλούμε επιλέξτε το χρονικό διάστημα αναζήτησης."; +$LANG["validation_please_enter_search_keyword"] = "Παρακαλώ εισάγετε τη λέξη-κλειδί αναζήτησης."; +$LANG["validation_select_field_type"] = "Παρακαλώ επιλέξτε έναν τύπο πεδίου."; +$LANG["validation_select_submissions_to_copy"] = "Επιλέξτε αυτές τις υποβολές που θέλετε να αντιγράψετε."; +$LANG["validation_select_submissions_to_delete"] = "Παρακαλώ επιλέξτε τις παρατηρήσεις που θέλετε να διαγράψετε."; +$LANG["validation_smart_fill_cannot_fill"] = "Λυπούμαστε, αλλά δεν μπορούσε να καλύψει αυτό το πεδίο."; +$LANG["validation_smart_fill_invalid_field_type"] = "Ήμαστε σε θέση να εντοπίσει ένα πεδίο, αλλά αυτό δεν είναι ένα αναπτυσσόμενο, κουτάκι ή ομάδα ραδιόφωνο."; +$LANG["validation_smart_fill_no_field_found"] = "Λυπούμαστε, δεν μπορέσαμε να βρούμε ένα πεδίο με τη μορφή που καθορίζεται στο όνομα της σελίδας."; +$LANG["validation_smart_fill_no_page"] = "Παρακαλούμε, εντοπίστε τη σελίδα που περιέχει το πεδίο που θέλετε να Smart Γέμισμα."; +$LANG["validation_smart_fill_upload_all_pages"] = "Παρακαλώ ανεβάστε όλες τις σελίδες σας σε φόρμα."; +$LANG["validation_upload_folder_not_writable"] = "Αυτό το προσωρινό φάκελο upload καθορίζεται από την PHP εγκατάσταση σας δεν είναι εγγράψιμο. Έως ότου αυτό έχει καθοριστεί, τα αρχεία δεν μπορεί να μεταφορτώσει μέσω Μορφή Εργαλεία (ή οποιοδήποτε άλλο πρόγραμμα PHP). Παρακαλώ επικοινωνήστε με τον πάροχο φιλοξενίας σας."; +$LANG["validation_upload_html_files_only"] = "Παρακαλώ μόνο φορτώσετε τα αρχεία HTML."; +$LANG["validation_username_taken"] = "Λυπούμαστε, ότι το όνομα έχει ήδη λάβει. Παρακαλώ εισάγετε ένα άλλο όνομα χρήστη."; +$LANG["validation_wrong_password"] = "Λυπούμαστε, ότι ο κωδικός δεν ταιριάζει."; +$LANG["word_about"] = "Σχετικά"; +$LANG["word_access"] = "Πρόσβαση"; +$LANG["word_account"] = "Λογαριασμός"; +$LANG["word_account_sp"] = "Λογαριασμός (s)"; +$LANG["word_accounts"] = "Λογαριασμών"; +$LANG["word_action"] = "Δράση"; +$LANG["word_active"] = "Ενεργό"; +$LANG["word_add"] = "Προσθέτω"; +$LANG["word_add_rightarrow"] = "Προσθήκη »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Διοίκηση"; +$LANG["word_administrator"] = "Διαχειριστής"; +$LANG["word_after"] = "Μετά"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Συντάκτης"; +$LANG["word_author_c"] = "Συντάκτης:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«επιστροφή"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Πριν"; +$LANG["word_benefits"] = "Οφέλη"; +$LANG["word_blue"] = "Μπλε"; +$LANG["word_cancel"] = "Ακύρωση"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Πελάτη"; +$LANG["word_client_c"] = "Πελάτης:"; +$LANG["word_clients"] = "Πελάτες"; +$LANG["word_close"] = "Κλείνω"; +$LANG["word_code"] = "Κωδικός"; +$LANG["word_column"] = "Στήλη"; +$LANG["word_columns"] = "Στήλες"; +$LANG["word_columns_sp"] = "Στήλη (ες)"; +$LANG["word_complete"] = "Ολοκλήρωση"; +$LANG["word_configuration"] = "Διαμόρφωση"; +$LANG["word_content"] = "Περιεχόμενο"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Συνέχεια »"; +$LANG["word_copy"] = "αντίγραφο"; +$LANG["word_custom"] = "Έθιμο"; +$LANG["word_data"] = "Δεδομένα"; +$LANG["word_date"] = "Ημερομηνία"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Διαγράφω"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Άμεση"; +$LANG["word_disabled"] = "Άτομα με ειδικές ανάγκες"; +$LANG["word_documentation"] = "Τεκμηρίωση"; +$LANG["word_done"] = "Έγινε"; +$LANG["word_drawbacks"] = "Μειονεκτήματα"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Επεξεργασία"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Ενεργοποιήθηκε"; +$LANG["word_equals"] = "Ισούται"; +$LANG["word_error"] = "Σφάλμα"; +$LANG["word_error_c"] = "Σφάλμα:"; +$LANG["word_examples_c"] = "Παραδείγματα:"; +$LANG["word_external"] = "Εξωτερικές"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Πεδίο"; +$LANG["word_field_sp"] = "Πεδίο (α)"; +$LANG["word_fields"] = "Τομείς"; +$LANG["word_fields_sp"] = "Πεδίο (α)"; +$LANG["word_file"] = "Αρχείο"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Αρχεία"; +$LANG["word_filters"] = "Φίλτρα"; +$LANG["word_filters_sp"] = "Φίλτρο (ες)"; +$LANG["word_for"] = "για"; +$LANG["word_form"] = "Μορφή"; +$LANG["word_form_c"] = "Μορφή:"; +$LANG["word_formatting"] = "Μορφοποίηση"; +$LANG["word_forms"] = "Έντυπα"; +$LANG["word_found"] = "Βρέθηκε"; +$LANG["word_from"] = "Από"; +$LANG["word_from_c"] = "Από:"; +$LANG["word_general"] = "Γενικός"; +$LANG["word_green"] = "Πράσινος"; +$LANG["word_grey"] = "Γκρι"; +$LANG["word_height"] = "Ύψος"; +$LANG["word_help"] = "Βοήθεια"; +$LANG["word_hidden"] = "Κρυφό"; +$LANG["word_highlight"] = "Επισημάνετε"; +$LANG["word_horizontal"] = "Οριζόντια"; +$LANG["word_hour"] = "Ώρα"; +$LANG["word_hours"] = "Ώρες"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Ελλιπής"; +$LANG["word_install"] = "Εγκατάσταση"; +$LANG["word_installation"] = "Εγκατάσταση"; +$LANG["word_internal"] = "Εσωτερικός"; +$LANG["word_language"] = "Γλώσσα"; +$LANG["word_large"] = "Μεγάλο"; +$LANG["word_like"] = "Όμοιος"; +$LANG["word_login"] = "Σύνδεση"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Αποσύνδεση"; +$LANG["word_main"] = "Κύριος"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Μενού"; +$LANG["word_menus"] = "Μενού"; +$LANG["word_minutes"] = "λεπτά"; +$LANG["word_misc"] = "Διάφορα"; +$LANG["word_module"] = "Ενότητα"; +$LANG["word_modules"] = "Ενότητες"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Όνομα"; +$LANG["word_name_c"] = "Όνομα:"; +$LANG["word_never"] = "Ποτέ"; +$LANG["word_next_rightarrow"] = "επόμενο »"; +$LANG["word_next_step_rightarrow"] = "ΕΠΟΜΕΝΟ ΒΗΜΑ »"; +$LANG["word_no"] = "Δεν"; +$LANG["word_none"] = "Δεν"; +$LANG["word_notes"] = "Σημειώσεις"; +$LANG["word_notification"] = "Γνωστοποίηση"; +$LANG["word_number"] = "Αριθμός"; +$LANG["word_off"] = "Εκτός χρήσης"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Καλά"; +$LANG["word_on"] = "Σε λειτουργία"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Επιλογές"; +$LANG["word_orange"] = "Πορτοκάλι"; +$LANG["word_order"] = "Σειρά"; +$LANG["word_other"] = "Άλλος"; +$LANG["word_other_c"] = "Άλλα:"; +$LANG["word_page"] = "Σελίδα"; +$LANG["word_page_c"] = "Σελίδα:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Κωδικός πρόσβασης"; +$LANG["word_password_c"] = "Κωδικός πρόσβασης:"; +$LANG["word_pending"] = "Εκκρεμεί"; +$LANG["word_permissions"] = "Άδειες"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«προηγούμενη"; +$LANG["word_private"] = "Ιδιωτικός"; +$LANG["word_public"] = "Δημόσια"; +$LANG["word_purple"] = "Μωβ"; +$LANG["word_recipient"] = "Παραλήπτης"; +$LANG["word_recipient_sp"] = "Παραλήπτης (ες)"; +$LANG["word_red"] = "Κόκκινος"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Αφαιρώ"; +$LANG["word_remove_uc_leftarrow"] = "«REMOVE"; +$LANG["word_reply_to"] = "Απάντηση σε"; +$LANG["word_reply_to_c"] = "Απάντηση-προς:"; +$LANG["word_required"] = "Απαιτούμενα"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Αποφασισμένοι"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "σειρά"; +$LANG["word_search"] = "Αναζήτηση"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Επιλογή"; +$LANG["word_setting"] = "Ρύθμιση"; +$LANG["word_settings"] = "Ρυθμίσεις"; +$LANG["word_show"] = "Θέαμα"; +$LANG["word_size"] = "Μέγεθος"; +$LANG["word_skipped"] = "Skipped"; +$LANG["word_small"] = "Μικρό"; +$LANG["word_solution"] = "Λύση"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Εκκίνηση"; +$LANG["word_status"] = "Κατάσταση"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Θέμα"; +$LANG["word_subject_c"] = "Θέμα"; +$LANG["word_submenu"] = "Υπομενού"; +$LANG["word_submission"] = "Υποβολή"; +$LANG["word_submissions"] = "Υποβολές"; +$LANG["word_system"] = "Σύστημα"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (ες)"; +$LANG["word_test"] = "Δοκιμή"; +$LANG["word_text"] = "Κείμενο"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Θέμα"; +$LANG["word_themes"] = "Θέματα"; +$LANG["word_time"] = "Φορά"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Συμβουλές"; +$LANG["word_today"] = "Σήμερα"; +$LANG["word_truncate_q"] = "Περικόψτε;"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Άγνωστος"; +$LANG["word_update"] = "Ενημέρωση"; +$LANG["word_upgrade"] = "Αναβάθμιση"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Χρήστης"; +$LANG["word_username"] = "Username"; +$LANG["word_username_c"] = "Username:"; +$LANG["word_validation"] = "Επικύρωση"; +$LANG["word_value"] = "Αξία"; +$LANG["word_value_sp"] = "Αξία (s)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Επαλήθευση"; +$LANG["word_version"] = "Έκδοση"; +$LANG["word_vertical"] = "Κάθετη"; +$LANG["word_view"] = "Προβολή"; +$LANG["word_views"] = "Εμφανίσεις"; +$LANG["word_warning"] = "Προσοχή!"; +$LANG["word_warning_c"] = "Προειδοποίηση:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Καλώς ορίσατε!"; +$LANG["word_width_c"] = "πλάτος:"; +$LANG["word_words"] = "Λόγια"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Κίτρινος"; +$LANG["word_yes"] = "Ναι"; \ No newline at end of file diff --git a/global/lang/en_us.php b/global/lang/en_us.php new file mode 100644 index 00000000..460056f7 --- /dev/null +++ b/global/lang/en_us.php @@ -0,0 +1,1219 @@ +Warning! You have selected {\$num_selected_on_page} submissions on this page and {\$num_selected_on_other_pages} on other pages. Please choose one of the following options:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Warning! You haven't selected any submissions on this page but you've selected {\$num_selected_on_other_pages} on other pages. Please confirm you want to delete these submissions.
    "; +$LANG["confirm_delete_view"] = "Are you sure you want to delete this View?"; +$LANG["confirm_refresh_page"] = "Are you sure you want to refresh the page? This will lose any changes you have made."; +$LANG["confirm_save_change_before_redirect"] = "One or more fields have been updated. Would you like to save your changes before redirecting?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Are you sure you want to Smart Fill the database column names? This will overwrite your existing values."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "This option auto-generates the database column names based on the Display Text fields, so the contents of the database table are easier to read."; +$LANG["confirm_smart_fill_display_names"] = "Are you sure you want to Smart Fill the Display names? This will overwrite your existing values."; +$LANG["confirm_ungroup_option_list"] = "Are you sure you want to ungroup this option list? All options will be lumped into a single, ungrouped list."; +$LANG["confirm_uninstall_module"] = "Are you sure you want to uninstall this module? All module data will be lost."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Fri"; +$LANG["date_Friday"] = "Friday"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "Monday"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sat"; +$LANG["date_Saturday"] = "Saturday"; +$LANG["date_Sun"] = "Sun"; +$LANG["date_Sunday"] = "Sunday"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Thursday"; +$LANG["date_Tue"] = "Tue"; +$LANG["date_Tuesday"] = "Tuesday"; +$LANG["date_Wed"] = "Wed"; +$LANG["date_Wednesday"] = "Wednesday"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "August"; +$LANG["date_month_December"] = "December"; +$LANG["date_month_February"] = "February"; +$LANG["date_month_January"] = "January"; +$LANG["date_month_July"] = "July"; +$LANG["date_month_June"] = "June"; +$LANG["date_month_March"] = "March"; +$LANG["date_month_May"] = "May"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "October"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Apr"; +$LANG["date_month_short_Aug"] = "Aug"; +$LANG["date_month_short_Dec"] = "Dec"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "May"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Oct"; +$LANG["date_month_short_Sep"] = "Sep"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "The user account has been deleted."; +$LANG["notify_account_updated"] = "Your account has been successfully updated."; +$LANG["notify_add_display_values"] = "Add Display Values"; +$LANG["notify_admin_menu_updated"] = "The administration menu has been updated."; +$LANG["notify_admin_theme_overridden"] = "The administrator's theme has been manually overridden."; +$LANG["notify_allow_url_fopen_not_set"] = "Sorry, this test cannot be run on your web server. It requires allow_url_fopen to be set to 1 in your php.ini file. This setting allow PHP to access files through a URL, which is needed to execute this test. You can test it manually by uploading a file to that folder via FTP, then trying to access it at the URL you have supplied."; +$LANG["notify_change_temp_password"] = "You just logged in with a temporary password. You should reset your password now!"; +$LANG["notify_click_to_edit_new_submission"] = "Click here to edit the new submission."; +$LANG["notify_client_account_menus_updated"] = "The client account(s) have been updated to the {\$menu_name} menu. You may now delete the menu that was previously associated with the account(s)."; +$LANG["notify_client_account_not_updated"] = "The client account could not be updated."; +$LANG["notify_client_account_themes_updated"] = "The client account(s) have been updated to the {\$theme} theme. You may now disable the theme previously associated with the account(s)."; +$LANG["notify_client_account_updated"] = "The client account has been successfully updated."; +$LANG["notify_client_menu_deleted"] = "The client menu has been deleted."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "The menu has been deleted, but the following client accounts now no longer have a menu! You need to update the following accounts: "; +$LANG["notify_client_menu_updated"] = "The client menu has been updated."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Sorry, the menu you just tried to delete is already being used by the clients listed below. In order to delete the menu you will first need to assign the clients to other menus. Click on the client name to edit that individual account, or assign all accounts to a different menu using the dropdown below."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Sorry, one of the themes you just disabled are already being used by the following client accounts. In order to disable the theme you will first need to assign each client to another theme. Click on the client name to edit that individual account, or assign all accounts to a theme using the dropdown below."; +$LANG["notify_edit_email_fields_link"] = "Click here to specify which form fields are email fields, so you can target them in your email templates."; +$LANG["notify_edit_field_new_field"] = "This is a new field. You will need to update the main page before being able to fully edit this field."; +$LANG["notify_edit_option_list_after_save"] = "You must select an Option List and then Save Changes before being able to edit it."; +$LANG["notify_email_field_config_deleted"] = "The email configuration has been deleted."; +$LANG["notify_email_fields_not_updated"] = "Sorry, we could not update the email fields."; +$LANG["notify_email_fields_updated"] = "The email fields have been updated."; +$LANG["notify_email_not_sent"] = "Sorry, the email could not be sent."; +$LANG["notify_email_not_sent_c"] = "Sorry, the email could not be sent: "; +$LANG["notify_email_sent"] = "The email(s) have been sent."; +$LANG["notify_email_template_deleted"] = "The email template has been deleted."; +$LANG["notify_email_template_updated"] = "The email template has been updated."; +$LANG["notify_enabled_module_list_updated"] = "The list of enabled modules has been updated."; +$LANG["notify_error_saving_fields"] = "There was an error saving the fields."; +$LANG["notify_field_changes_saved"] = "The changes to your field(s) have been saved."; +$LANG["notify_field_options_smart_filled"] = "Your field options have been Smart Filled."; +$LANG["notify_field_selected"] = "The field has been selected. Click here to return to the main field list."; +$LANG["notify_field_updated"] = "This field has been updated."; +$LANG["notify_file_not_uploaded"] = "The file could not be uploaded."; +$LANG["notify_file_uploaded"] = "The file was successfully uploaded."; +$LANG["notify_filters_not_updated"] = "There was an error updating this client's submission filters."; +$LANG["notify_filters_updated"] = "The submission filters have been updated for this client."; +$LANG["notify_folder_correct_permissions"] = "This folder has the correct permissions."; +$LANG["notify_folder_url_match"] = "The folder and URL appear to correctly match."; +$LANG["notify_folder_url_no_access"] = "This test could not be performed since PHP was unable to access that URL. This is usually caused by the URL being password protected with a .htaccess file."; +$LANG["notify_folder_url_no_match"] = "This folder-URL combination does not appear to be a match."; +$LANG["notify_folder_url_unknown_error"] = "An unknown error occurred. You can test it manually by uploading a file to that folder via FTP, then trying to access it at the URL you have supplied."; +$LANG["notify_form_access_type_email_info"] = "This form has administrator access type, so no clients have access to it and are not listed in the dropdown below."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sorry, a form with that ID does not exist."; +$LANG["notify_form_field_not_added"] = "The form field '{\$fieldname}' could not be added."; +$LANG["notify_form_field_options_updated"] = "The form field options have been updated."; +$LANG["notify_form_field_removed"] = "The form field was successfully removed."; +$LANG["notify_form_fields_removed"] = "The form fields were successfully removed."; +$LANG["notify_form_not_updated_notify_admin"] = "Your form could not be updated. Please contact the site administrator to report this problem."; +$LANG["notify_form_settings_updated"] = "Your form settings have been updated successfully."; +$LANG["notify_form_submission_updated"] = "The form submission has been updated."; +$LANG["notify_form_tabs_updated"] = "The tabs have been updated."; +$LANG["notify_form_updated"] = "The form has been successfully updated."; +$LANG["notify_form_views_updated"] = "The form Views have been updated."; +$LANG["notify_install_invalid_db_info"] = "Sorry, we were unable to connect to the database using the information you supplied. The error message the database returned is: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Your form has been created! You can configure your form through these tabs."; +$LANG["notify_invalid_account_information_in_sessions"] = "The account information stored in sessions is invalid. Please log in again below."; +$LANG["notify_invalid_license_key"] = "Sorry, that does not appear to be a valid license key. Please try entering it again."; +$LANG["notify_invalid_permissions"] = "You do not have the permissions to access this page. You have been logged out."; +$LANG["notify_invalid_search_dates"] = "Please use the datepicker to enter a valid date or dates."; +$LANG["notify_invalid_upload_folder"] = "The upload folder is either invalid or is not writable."; +$LANG["notify_lang_list_updated"] = "The available UI language list has been updated."; +$LANG["notify_login_info_emailed"] = "Your login information has been emailed to you."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, this module is already installed!"; +$LANG["notify_module_installed"] = "The module has been installed. Click here to select the module."; +$LANG["notify_module_list_updated"] = "The module list has been updated."; +$LANG["notify_module_uninstalled"] = "The module has been uninstalled."; +$LANG["notify_module_updated"] = "The {\$module} module has been updated to {\$version}. Click here to select the module."; +$LANG["notify_multi_field_selected"] = "The field has been selected. Click here to view and edit the field options."; +$LANG["notify_multi_field_updated"] = "This field has been updated. You will be able to configure the field options after setting up the form."; +$LANG["notify_multiple_fields_found"] = "Multiple elements were found with this field name ({\$field_name}). This can occur if your page contains more than one form or if you accidentally named one of your forms the same as another. Please choose the one you want from the list below."; +$LANG["notify_new_default_view_created"] = "A new, default View containing all your form fields has been created."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "No user account ID was found in sessions. Please log in again below."; +$LANG["notify_no_api_installed"] = "You don't have the API installed"; +$LANG["notify_no_client_permissions"] = "There are no settings available to edit."; +$LANG["notify_no_email_template_selected"] = "Please select the email template."; +$LANG["notify_no_emails_defined"] = "No emails have been defined for this form. To add a new one, click the button below."; +$LANG["notify_no_field_settings"] = "This field type doesn't contain any extra settings."; +$LANG["notify_no_fields_in_tab"] = "This tab does not contain any fields."; +$LANG["notify_no_option_lists"] = "There are no option lists defined. Click the button below to create a new one."; +$LANG["notify_no_test_submission"] = "Form Tools hasn't received a successful test submission yet."; +$LANG["notify_no_user_email_fields_configured"] = "Note: if you want to send an email to any email address that was included in the form, you first need to configure the form email fields."; +$LANG["notify_no_views"] = "Your form doesn't have any Views set up! You will need at least one View in order to manage your form data."; +$LANG["notify_no_views_assigned_to_client_form"] = "It appears that your user account hasn't been assigned to any form Views, so you won't be able to see any data. Please contact the administrator for further help."; +$LANG["notify_no_views_defined"] = "You don't have any Views defined. You will not be able to view this form's submissions unless at least one View is created. Click the button below to create the default View."; +$LANG["notify_option_list_deleted"] = "The option list has been deleted."; +$LANG["notify_option_list_updated"] = "The option list has been updated."; +$LANG["notify_public_form_omit_list_updated"] = "The client omit list for this form has been updated."; +$LANG["notify_public_view_omit_list_updated"] = "The client omit list for this View has been updated."; +$LANG["notify_required_admin_pages"] = "The following pages are required in the administrator menu: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Sorry, there wasn't any activity for a while so we had to log you out. Please log in again below."; +$LANG["notify_setup_options_updated"] = "The setup options have been updated."; +$LANG["notify_smart_fill_field_not_found"] = "We were unable to find a field with this name ({\$field_name}) in the form(s) specified. You can either manually set the field type below, or click the Skip button to edit this field later."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Your file(s) were successfully uploaded. Try clicking the Smart Fill button to try again. If this step fails, you will need to skip this step and configure your form fields manally later."; +$LANG["notify_smart_fill_submitted"] = "The form has been submitted. Depending on the size of your form and number of field options, this may take some time."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Sorry, one or more of the files you entered could not be uploaded. You will need to skip this step and configure the fields manually."; +$LANG["notify_submission_and_files_deleted"] = "The submission and any file(s) associated with it were deleted successfully."; +$LANG["notify_submission_copied"] = "The submission has been copied."; +$LANG["notify_submission_copied_edit"] = "The submission has been copied. You can edit it below."; +$LANG["notify_submission_deleted"] = "The submission was deleted successfully."; +$LANG["notify_submission_deleted_with_problems"] = "The submission was deleted, but the following problems were encountered when attempting to delete the following file(s):"; +$LANG["notify_submission_id_not_found"] = "The submission ID was not found."; +$LANG["notify_submission_not_updated"] = "The submission could not be updated."; +$LANG["notify_submissions_and_files_deleted"] = "The submissions and any file(s) associated with them were deleted successfully."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} submissions have been copied."; +$LANG["notify_submissions_deleted"] = "The submissions were deleted successfully."; +$LANG["notify_submissions_deleted_with_problems"] = "The submissions were deleted, but the following problems were encountered when attempting to delete the following file(s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Your test email could not be sent."; +$LANG["notify_theme_cache_folder_not_writable"] = "This theme's cache folder is not writable. In order to enable this theme, the {\$folder} folder needs to have full read-write permissions."; +$LANG["notify_theme_list_updated"] = "The theme list has been updated."; +$LANG["notify_themes_settings_updated"] = "Your theme settings have been updated."; +$LANG["notify_view_deleted"] = "The View has been deleted."; +$LANG["notify_view_group_deleted"] = "The View group has been deleted."; +$LANG["notify_view_missing_columns"] = "Oops! Sorry, this View hasn't been fully set up yet."; +$LANG["notify_view_missing_columns_admin_fix"] = "Click here to specify which fields should appear as columns on this page."; +$LANG["notify_view_updated"] = "The View has been updated."; +$LANG["notify_your_email_sent"] = "Your email has been successfully sent."; +$LANG["phrase_100_per_page"] = "100 per page"; +$LANG["phrase_10_per_page"] = "10 per page"; +$LANG["phrase_15_per_page"] = "15 per page"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per page"; +$LANG["phrase_25_per_page"] = "25 per page"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 Columns"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 Columns"; +$LANG["phrase_4_columns"] = "4 Columns"; +$LANG["phrase_50_per_page"] = "50 per page"; +$LANG["phrase_accepting_submissions"] = "(accepting submissions)"; +$LANG["phrase_access_admin_account_c"] = "You can access your administration account here:"; +$LANG["phrase_access_type"] = "Access Type"; +$LANG["phrase_account_info"] = "Account Information"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Action Needed"; +$LANG["phrase_add_client"] = "Add Client"; +$LANG["phrase_add_client_menu"] = "Add Client Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Add default settings »"; +$LANG["phrase_add_field"] = "Add Field"; +$LANG["phrase_add_fields"] = "Add Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Add Field(s) »"; +$LANG["phrase_add_form"] = "Add Form"; +$LANG["phrase_add_form_external"] = "Add Form - External"; +$LANG["phrase_add_form_internal"] = "Add Form - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Add New Group »"; +$LANG["phrase_add_num_rows"] = "Add {\$number} Row(s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Add Submission Button"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Adding a multi-page form with the API"; +$LANG["phrase_adding_single_page_form"] = "Adding a single-page form with the API"; +$LANG["phrase_admin_menu"] = "Administrator Menu"; +$LANG["phrase_admin_only"] = "Administrator Only"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Advanced settings »"; +$LANG["phrase_all_X_results_selected"] = "All {\$numresults} Results Selected"; +$LANG["phrase_all_clients"] = "All clients"; +$LANG["phrase_all_clients_except_c"] = "All clients except:"; +$LANG["phrase_all_clients_have_access"] = "(all clients have access)"; +$LANG["phrase_all_fields"] = "All fields"; +$LANG["phrase_all_fields_displayed"] = "All fields are displayed"; +$LANG["phrase_all_statuses"] = "All statuses"; +$LANG["phrase_all_submissions"] = "All submissions"; +$LANG["phrase_allow_fields_edited"] = "Allow fields to be edited"; +$LANG["phrase_alphanumeric"] = "Alphanumeric (a-Z, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Apply Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Assign all listed client accounts to {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Assign all listed client accounts to {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "At End"; +$LANG["phrase_at_start"] = "At Start"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-disable account after # failed login attempts"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Available Clients"; +$LANG["phrase_available_fields"] = "Available Fields"; +$LANG["phrase_available_option_lists"] = "Available Option Lists"; +$LANG["phrase_available_swatches"] = "Available Swatches"; +$LANG["phrase_available_swatches_c"] = "Available Swatches:"; +$LANG["phrase_available_tabs"] = "Available Tabs"; +$LANG["phrase_available_views"] = "Available Views"; +$LANG["phrase_awaiting_form_submission"] = "Awaiting form submission."; +$LANG["phrase_back_to_field_list"] = "« back to field list"; +$LANG["phrase_back_to_search_results"] = "back to search results"; +$LANG["phrase_base_view_on"] = "Base View on..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Change Login Information"; +$LANG["phrase_characters_limit_p"] = "characters limit."; +$LANG["phrase_check_db_settings_try_again"] = "Please double-check your database settings and click the Continue button again."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Check URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Clear Omit List"; +$LANG["phrase_client_account_settings"] = "Client Account Settings"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Client Map Filters »"; +$LANG["phrase_client_may_edit"] = "Client may edit"; +$LANG["phrase_client_menu"] = "Client Menu"; +$LANG["phrase_clients_can_access_form"] = "Clients who can access the form"; +$LANG["phrase_clients_can_access_view"] = "Clients who can access the View"; +$LANG["phrase_clients_cannot_access_form"] = "Clients who cannot access the form"; +$LANG["phrase_clients_cannot_access_view"] = "Clients who cannot access the View"; +$LANG["phrase_clients_may_edit"] = "Clients may edit"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Code / Markup Field"; +$LANG["phrase_code_markup_type"] = "Code / Markup Type"; +$LANG["phrase_codes_c"] = "Error Codes:"; +$LANG["phrase_column_width"] = "Column Width"; +$LANG["phrase_company_name"] = "Company Name"; +$LANG["phrase_configure_form_email_fields"] = "Configure Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Confirm Folder-URL Match"; +$LANG["phrase_connect_rows"] = "Connect rows"; +$LANG["phrase_copy_email_settings_from"] = "Copy Email Settings From..."; +$LANG["phrase_copy_settings_from"] = "Copy Settings From..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Create Account"; +$LANG["phrase_create_admin_account"] = "Create Admin Account"; +$LANG["phrase_create_config_file"] = "Create Config File"; +$LANG["phrase_create_database_tables"] = "Create Database Tables"; +$LANG["phrase_create_default_view"] = "Create Default View"; +$LANG["phrase_create_file"] = "Create File"; +$LANG["phrase_create_group"] = "Create Group"; +$LANG["phrase_create_new_email"] = "Create New Email"; +$LANG["phrase_create_new_menu"] = "Create New Menu"; +$LANG["phrase_create_new_option_list"] = "Create New Option List"; +$LANG["phrase_create_new_option_list_group"] = "Create new option list group"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Create New Option List »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Create New View Group"; +$LANG["phrase_custom_display_format"] = "Custom Display Format"; +$LANG["phrase_custom_recipient"] = "Custom Recipient"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Data Type"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Database name"; +$LANG["phrase_database_password"] = "Database password"; +$LANG["phrase_database_settings"] = "Database Settings"; +$LANG["phrase_database_setup"] = "Database Setup"; +$LANG["phrase_database_table_prefix"] = "Database table prefix"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Date Format"; +$LANG["phrase_db_column"] = "DB Column"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Default Client Account Theme"; +$LANG["phrase_default_date_field_search_value"] = "Default date field search value"; +$LANG["phrase_default_language"] = "Default Language"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Default Sort Order"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Default value"; +$LANG["phrase_default_values"] = "Default values"; +$LANG["phrase_default_values_new_submissions"] = "Default Values for New Submissions"; +$LANG["phrase_delete_field"] = "Delete Field"; +$LANG["phrase_delete_form"] = "Delete Form"; +$LANG["phrase_delete_row"] = "Delete Row"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Delete associated files when deleting submission"; +$LANG["phrase_delete_view"] = "Delete View"; +$LANG["phrase_disconnect_rows"] = "Disconnect rows"; +$LANG["phrase_display_email"] = "Display Email"; +$LANG["phrase_display_name"] = "Display Name"; +$LANG["phrase_display_text"] = "Display Text"; +$LANG["phrase_display_value"] = "Display Value"; +$LANG["phrase_edit_admin_menu"] = "Edit Admin Menu"; +$LANG["phrase_edit_client"] = "Edit Client"; +$LANG["phrase_edit_client_menu"] = "Edit Client Menu"; +$LANG["phrase_edit_email_template"] = "Edit Email Template"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit form access type]"; +$LANG["phrase_edit_option_list"] = "Edit Option List"; +$LANG["phrase_edit_submission"] = "Edit Submission"; +$LANG["phrase_edit_submission_label"] = "Edit Submission Label"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "Email Settings"; +$LANG["phrase_email_template"] = "Email template"; +$LANG["phrase_email_template_name"] = "Email template name"; +$LANG["phrase_error_learn_more"] = "Learn more about this error."; +$LANG["phrase_error_text_intro"] = "Please fix the following error(s) and resubmit:"; +$LANG["phrase_errors_learn_more"] = "Click on the error codes to learn more."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "External Form"; +$LANG["phrase_external_form_info"] = "External Form Info"; +$LANG["phrase_external_your_own_form"] = "External (your own form)"; +$LANG["phrase_field_comments"] = "Field Comments"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Field Options"; +$LANG["phrase_field_size"] = "Field Size"; +$LANG["phrase_field_skipped"] = "Field Skipped"; +$LANG["phrase_field_specific_settings"] = "Field-Specific Settings"; +$LANG["phrase_field_type"] = "Field Type"; +$LANG["phrase_field_type_no_validation"] = "There are no validation rules available for this field type."; +$LANG["phrase_field_types"] = "Field Types"; +$LANG["phrase_field_value"] = "Field Value"; +$LANG["phrase_field_values_to_display_values"] = "Field Values » Display Values"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Touches"; +$LANG["phrase_finalize_form"] = "Finalize Form"; +$LANG["phrase_first_name"] = "First Name"; +$LANG["phrase_footer_text"] = "Footer Text"; +$LANG["phrase_for_any_form_submission"] = "For any form submission"; +$LANG["phrase_for_view_submissions"] = "Only submissions that fit into the following View(s)"; +$LANG["phrase_forgot_password"] = "Forgot your Password?"; +$LANG["phrase_form_already_selected"] = "Form already selected"; +$LANG["phrase_form_email_field_b_c"] = "[Form email field]:"; +$LANG["phrase_form_email_field_configuration"] = "Form Email Field Configuration"; +$LANG["phrase_form_email_fields"] = "Form Email Fields"; +$LANG["phrase_form_field"] = "Form Field"; +$LANG["phrase_form_field_contents"] = "Form Field Contents"; +$LANG["phrase_form_field_name"] = "Form Field Name"; +$LANG["phrase_form_field_placeholders"] = "Form field placeholders"; +$LANG["phrase_form_fields"] = "Form Fields"; +$LANG["phrase_form_info"] = "Form Information"; +$LANG["phrase_form_info_2"] = "2. Form Information"; +$LANG["phrase_form_list"] = "Form List"; +$LANG["phrase_form_name"] = "Form Name"; +$LANG["phrase_form_page"] = "Form Page"; +$LANG["phrase_form_placeholders"] = "Form Placeholders"; +$LANG["phrase_form_submission"] = "Form Submission"; +$LANG["phrase_form_submissions"] = "Form Submissions"; +$LANG["phrase_form_type"] = "Form Type"; +$LANG["phrase_form_url"] = "Form URL"; +$LANG["phrase_form_urls"] = "Form URLs"; +$LANG["phrase_forms_assigned_to_any_account"] = "Forms assigned to any account"; +$LANG["phrase_forms_page_default_message"] = "Forms page default message"; +$LANG["phrase_ft_installation"] = "Form Tools Installation Script"; +$LANG["phrase_full_width"] = "Full Width"; +$LANG["phrase_getting_started"] = "getting started"; +$LANG["phrase_global_placeholders"] = "Global Placeholders"; +$LANG["phrase_group_name"] = "Group Name"; +$LANG["phrase_group_options_q"] = "Group options?"; +$LANG["phrase_group_rows"] = "Group rows"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Highlight Colour"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Import Option List »"; +$LANG["phrase_input_length"] = "Input Length"; +$LANG["phrase_installation_help"] = "Installation Help"; +$LANG["phrase_internal_form"] = "Internal Form"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Is this a multi-page form?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response Placeholders"; +$LANG["phrase_large_300px"] = "Large (300px)"; +$LANG["phrase_large_400px"] = "Large (400px)"; +$LANG["phrase_last_7_days"] = "Last 7 days"; +$LANG["phrase_last_logged_in"] = "Last Logged In"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Last modified date"; +$LANG["phrase_last_name"] = "Last Name"; +$LANG["phrase_letters_only"] = "Letters Only"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Limit email content to fields in View"; +$LANG["phrase_loading_ellipsis"] = "Loading..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Log in as this user"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "« Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Username"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Main Settings"; +$LANG["phrase_manage_client"] = "Manage Client"; +$LANG["phrase_manage_client_omit_list"] = "Manage Client Omit List"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Max Length"; +$LANG["phrase_max_length_words_chars"] = "- Max length (words/chars)"; +$LANG["phrase_may_add_submissions"] = "Can add submissions"; +$LANG["phrase_may_copy_submissions"] = "Can copy submissions"; +$LANG["phrase_may_delete_submissions"] = "Can delete submissions"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menu Name"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "Minimum password length"; +$LANG["phrase_module_description"] = "Module Description"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Module Nav"; +$LANG["phrase_month_to_date"] = "Month to date"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Multi-select dropdown"; +$LANG["phrase_multiple_fields_found"] = "Multiple Fields Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Name / Last Name"; +$LANG["phrase_new_blank_email"] = "New Blank Email"; +$LANG["phrase_new_blank_option_list"] = "New Blank Option List"; +$LANG["phrase_new_blank_view"] = "New Blank View"; +$LANG["phrase_new_ft_installation"] = "New Form Tools Installation"; +$LANG["phrase_new_option_list"] = "New Option List"; +$LANG["phrase_new_password"] = "New Password"; +$LANG["phrase_new_password_reenter"] = "New Password (please re-enter)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "New View - All fields"; +$LANG["phrase_next_client"] = "next client »"; +$LANG["phrase_next_field"] = "next field »"; +$LANG["phrase_next_form"] = "next form »"; +$LANG["phrase_next_view"] = "next View »"; +$LANG["phrase_no_clients"] = "No clients"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "No offset"; +$LANG["phrase_no_option_lists_available"] = "No options lists available."; +$LANG["phrase_no_views"] = "No Views"; +$LANG["phrase_no_views_with_filters_p"] = "(No Views with filters defined)"; +$LANG["phrase_none_not_recommended"] = "None (not recommended)"; +$LANG["phrase_not_assigned_to_option_list"] = "This field isn't assigned to an Option List."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Does NOT Equal"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "NOT Like"; +$LANG["phrase_not_visible_to_client"] = "(not visible to client)"; +$LANG["phrase_num_clients_per_page"] = "Num Clients Per Page"; +$LANG["phrase_num_emails_per_page"] = "Num Emails Per Page"; +$LANG["phrase_num_fields"] = "Number of Fields"; +$LANG["phrase_num_forms_per_page"] = "Num Forms Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Menus Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Modules Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Num Option Lists Per Page"; +$LANG["phrase_num_options"] = "Num Options"; +$LANG["phrase_num_rows"] = "Num Rows"; +$LANG["phrase_numbers_only"] = "Numbers Only"; +$LANG["phrase_often_localhost"] = "(often \"localhost\")"; +$LANG["phrase_on_form_submission"] = "On form submission"; +$LANG["phrase_one_char_number"] = "At least one character is a number (0-9)"; +$LANG["phrase_one_char_upper"] = "At least one character is uppercase"; +$LANG["phrase_one_special_char"] = "At least one of {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(only specific clients have access)"; +$LANG["phrase_open_form_in_dialog"] = "Open form in dialog window"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Open this form in a new tab/window"; +$LANG["phrase_option_list"] = "Option List"; +$LANG["phrase_option_list_name"] = "Option List Name"; +$LANG["phrase_option_list_or_contents"] = "Option List / Contents"; +$LANG["phrase_option_lists"] = "Option Lists"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Page Titles"; +$LANG["phrase_pass_on"] = "Pass on"; +$LANG["phrase_password_min"] = "It must be at least {\$length} characters."; +$LANG["phrase_password_one_number"] = "It must contain at least one number (0-9)."; +$LANG["phrase_password_one_uppercase"] = "It must contain at least one uppercase letter."; +$LANG["phrase_password_requirements_c"] = "Password requirements:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "It must contain at least one of the following characters: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissions / Other Settings"; +$LANG["phrase_permitted_file_types"] = "Permitted file types"; +$LANG["phrase_phone_number"] = "Phone Number"; +$LANG["phrase_phone_number_format"] = "Phone Number Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max allowed file upload size:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Please Confirm"; +$LANG["phrase_please_enter_license_key"] = "Please enter your license key"; +$LANG["phrase_please_select"] = "Please Select"; +$LANG["phrase_please_select_form"] = "Please select a form"; +$LANG["phrase_prev_client"] = "« prev client"; +$LANG["phrase_prev_form"] = "« prev form"; +$LANG["phrase_prevent_password_reuse"] = "Prevent re-use of # last passwords"; +$LANG["phrase_previous_field"] = "« previous field"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "« prev View"; +$LANG["phrase_program_name"] = "Program Name"; +$LANG["phrase_public_form_omit_list"] = "Public Form Omit List"; +$LANG["phrase_public_view_omit_list"] = "Public View Omit List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "There was a problem with the following query: "; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Random form submission"; +$LANG["phrase_re_enter_password"] = "Re-enter Password"; +$LANG["phrase_recipient_type"] = "Recipient type"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Refresh List"; +$LANG["phrase_refresh_module_list"] = "Refresh Module List"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Refresh Theme List"; +$LANG["phrase_register_new_email"] = "Register New Email"; +$LANG["phrase_remaining_characters"] = "remaining characters"; +$LANG["phrase_remaining_words"] = "remaining words"; +$LANG["phrase_remove_tabs"] = "Remove Tabs"; +$LANG["phrase_required_password_chars"] = "Required password characters"; +$LANG["phrase_resend_test_submission"] = "Resend Test Submission"; +$LANG["phrase_return_form_list"] = "Return to Form List"; +$LANG["phrase_row_selected"] = "{\$num_rows} row selected"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rows selected"; +$LANG["phrase_sample_data"] = "Sample Data"; +$LANG["phrase_save_changes"] = "Save Changes"; +$LANG["phrase_search_keyword"] = "Search keyword"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Select All {\$numresults} Results"; +$LANG["phrase_select_all_on_page"] = "Select All On Page"; +$LANG["phrase_select_date"] = "Select date"; +$LANG["phrase_select_field"] = "Select Field"; +$LANG["phrase_select_swatch"] = "Select swatch"; +$LANG["phrase_selected_clients"] = "Selected Clients"; +$LANG["phrase_selected_views"] = "Selected Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Send Test Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Setting Value"; +$LANG["phrase_setup_options"] = "Setup Options"; +$LANG["phrase_show_all"] = "Show All"; +$LANG["phrase_show_form"] = "Show Form"; +$LANG["phrase_size_large"] = "Large (TEXT)"; +$LANG["phrase_size_medium"] = "Medium (<=256 chars)"; +$LANG["phrase_size_small"] = "Small (<=20 chars)"; +$LANG["phrase_size_tiny"] = "Tiny (<=5 chars)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Skip Step"; +$LANG["phrase_small_100px"] = "Small (100px)"; +$LANG["phrase_small_80px"] = "Small (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fill fields from:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill User Documentation »"; +$LANG["phrase_sort_as"] = "Sort As"; +$LANG["phrase_special_fields"] = "Special Fields"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Standard Filters »"; +$LANG["phrase_step_1"] = "Step 1"; +$LANG["phrase_step_2"] = "Step 2"; +$LANG["phrase_step_3"] = "Step 3"; +$LANG["phrase_step_4"] = "Step 4"; +$LANG["phrase_step_5"] = "Step 5"; +$LANG["phrase_step_6"] = "Step 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tags in form submissions"; +$LANG["phrase_subject_line"] = "Subject Line"; +$LANG["phrase_submission_date"] = "Submission date"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Submission made: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Submission Type"; +$LANG["phrase_submissions_per_page"] = "Submissions per Page"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "You may not add validation to system fields."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Folder Permissions"; +$LANG["phrase_test_submission"] = "Test Submission"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Received"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "Text Email"; +$LANG["phrase_text_template"] = "Text Template"; +$LANG["phrase_the_previous_month"] = "The previous Month"; +$LANG["phrase_theme_description"] = "Theme Description"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Unselect All"; +$LANG["phrase_update_accounts"] = "Update Accounts"; +$LANG["phrase_update_email_template"] = "Update Email Template"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Update Order"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Upload File"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Upload folder path"; +$LANG["phrase_upload_folder_url"] = "Upload folder URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Use Default Value?"; +$LANG["phrase_used_by_num_form_fields"] = "Used by # Form Fields"; +$LANG["phrase_uses_swatches"] = "Uses Swatches"; +$LANG["phrase_valid_email"] = "Valid Email"; +$LANG["phrase_validation_error"] = "Validation Error"; +$LANG["phrase_validation_rule"] = "Validation Rule"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "View Group"; +$LANG["phrase_view_id"] = "View ID"; +$LANG["phrase_view_name"] = "View Name"; +$LANG["phrase_view_placeholders"] = "View Placeholders"; +$LANG["phrase_view_submissions"] = "View Submissions"; +$LANG["phrase_view_uploaded_files"] = "view uploaded files"; +$LANG["phrase_viewing_range"] = " [viewing {\$startnum} to {\$endnum}]"; +$LANG["phrase_when_sent"] = "When sent"; +$LANG["phrase_when_submission_is_deleted"] = "When submission is deleted"; +$LANG["phrase_when_submission_is_edited"] = "When submission is edited"; +$LANG["phrase_who_can_access"] = "Who can access?"; +$LANG["phrase_word_limit_p"] = "word limit."; +$LANG["phrase_year_to_date"] = "Year to date"; +$LANG["phrase_yes_for_all_views"] = "Yes, for all Views"; +$LANG["phrase_yes_for_specific_views"] = "Yes, for specific Views"; +$LANG["phrase_your_account"] = "Your Account"; +$LANG["phrase_your_email"] = "Your Email"; +$LANG["phrase_your_email_address"] = "Your email address"; +$LANG["processing_form_disabled"] = "Sorry, this form has been disabled."; +$LANG["processing_form_incomplete"] = "Sorry, this form does not appear to be fully set up from within Form Tools. The most likely cause of this problem is that you removed the \"form_tools_initialize_form\" hidden form field, but didn't complete all the steps of the \"Add Form\" process.

    Please log in and review the form configuration."; +$LANG["processing_init_complete"] = "Thank you! Your test submission has been put through successfully. Please return to the Form Tools Administration panel and click the \"Refresh\" button at the bottom of the Add Form Step 3 page to finish setting up your form."; +$LANG["processing_invalid_form_id"] = "Sorry, this doesn't appear to be a valid form ID."; +$LANG["processing_no_form_id"] = "process.php requires a form ID for processing. Make sure your form contains a hidden field with the name \"form_tools_form_id\" that's passing along the form ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Tools is unable to determine where to redirect when they fail to enter the CAPTCHA properly. Please pass in a hidden field with the name form_tools_form_url containing the URL of the form."; +$LANG["processing_no_post_vars"] = "process.php is not receiving any data. Note: this script cannot be loaded directly in your browser.
    Make sure your form is sending via POST."; +$LANG["processing_no_redirect_url"] = "The submission was processed correctly, but you haven't specified a redirect URL for this form! Edit your form in the Form Tools UI and add the redirect URL."; +$LANG["special_language"] = "English"; +$LANG["special_language_locale"] = "English (US)"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "All new client accounts will be created with the settings and permissions defined below. To override a setting for a particular client, edit the client account and visit their Settings tab."; +$LANG["text_add_form_choose_integration_method"] = "Choose which method you want to use to integrate your form with Form Tools."; +$LANG["text_add_form_code_submission_benefits"] = "This method uses the Form Tools API, included in the main Form Tools script. The API provides a number of helpful functions to make the job of integrating your form with Form Tools as simple as possible. There are no restrictions to how your form may be submitted when you use the API. You can submit the content in one go, or page by page; you can add your own custom server-side validation, CAPTCHA images; you can choose to submit the information now, but only tell it to display the submission in the Form Tools UI at a later date (see the Finalized Submissions section in the API help documentation)."; +$LANG["text_add_form_code_submission_drawbacks"] = "In order to submit your form data via PHP, your form must be located on the same website as this Form Tools installation. Secondly, for non-technical and novice Form Tools users, this method can be a little intimidating at first. But there's plenty of documentation to help you out, including two simple tutorials for integrating your single- and multi-page forms (these are linked to on a later step)."; +$LANG["text_add_form_direct_submission_benefits"] = "This is the simplest way to submit your form to Form Tools. It doesn't require any knowledge of PHP and requires only a very small change to your form. It's great for smaller forms where you want to just submit the information to the database then redirect the user to a \"thankyou\" page."; +$LANG["text_add_form_direct_submission_drawbacks"] = "This submission method is very simple to use, but doesn't provide much control for more complicated forms. Multi-page forms or forms that require server-side validation are better suited to the second method: submitting via the Form Tools API."; +$LANG["text_add_form_field_types1"] = "Almost done! This page tries to find all your form fields and determine their field types. Click the Smart Fill button on the right to get started. You will be only allowed to proceed when all actions have been resolved - issues that need your attention appear in the \"Action Needed\" column."; +$LANG["text_add_form_field_types2"] = "If your form isn't in HTML, click the Skip Step button to proceed. This can all be configured later."; +$LANG["text_add_form_field_types3"] = "This reloads the contents of your form(s). Note: this will overwrite any changes you have made on this page."; +$LANG["text_add_form_field_types4"] = "In case you run into problems, click here to skip this step. All unresolved fields are set to use the default values. You can customize these fields later."; +$LANG["text_add_form_field_types_manual_upload"] = "If you have been unable to Smart Fill your fields, you may want to try an alternative solution: upload copies of your forms in the fields below."; +$LANG["text_add_form_field_types_manual_upload2"] = "Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML versions. To get this, view and save the page from your web browser."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "There were multiple fields that couldn't be found in the form page you specified. This is mostly likely caused by one of the following:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "You entered one or more of the form URLs of your multi-page form incorrectly."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "One or more pages of your form are password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "You incorrectly entered your form URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Click here to return to the Form Information page to check your settings."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "You changed your form(s) after making the test submission"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Click here to put through another test submission."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Your form is password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "In another tab / window of this browser, log into your form then click the Refresh Page button below to try to re-find the fields."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "If none of the above solutions work, you may also want to try manually uploading your forms for processing."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "There were multiple fields that couldn't be found in the form pages you specified. This is mostly likely caused by one of these:"; +$LANG["text_add_form_help_link"] = "If you run into any trouble during these steps, try reading our user documentation."; +$LANG["text_add_form_step_1_text_1"] = "The following pages lead you through the steps to configure Form Tools to store your form submissions. Before continuing, please check that:"; +$LANG["text_add_form_step_1_text_2"] = "your form has already been created and it's accessible via a URL (localhost is fine)"; +$LANG["text_add_form_step_1_text_3"] = "are able to edit your form"; +$LANG["text_add_form_step_2_para_2"] = "Open your form in an editor of your choice and change your form tag to the following, including the two hidden fields."; +$LANG["text_add_form_step_2_para_3"] = "Next, open your form in a web browser. Fill in every field and submit it. After submitting, you should see a notification message. Once this message is displayed, return to this page and click the refresh button below. When this process is complete, you will see a continue button below, taking you to the next step."; +$LANG["text_add_form_step_2_para_6"] = "In your form submission, include the following values. They may be set directly via PHP or passed along through the form itself. Below are examples of each. The {\$varname} is a hash (or associative array) of all form submission information - this is usually the {\$postvar} or {\$sessionvar} variable, but it may be custom built."; +$LANG["text_add_form_step_2_text_2"] = "Enter the URL of your \"thankyou\" page here. This is where you want people to be directed to after the form has been submitted."; +$LANG["text_add_form_step_3_para_1"] = "This page lists all fields in your form submission. Please examine each field and remove any that you don't need stored for every submission. If you delete a valid field by accident, or wish to change the information stored by your form, return to the previous page to send a new test submission."; +$LANG["text_add_form_step_3_para_2"] = "Note: if you're sending multiple values via checkboxes or a multi-select box, make sure your field name ends with the [] characters (see the user documentation for more information)."; +$LANG["text_add_form_step_3_text_1"] = "Here's where the fun starts! At this point, Form Tools is waiting for a test submission from your form. It will use this form submission to know what information should be stored in the database."; +$LANG["text_add_form_step_3_text_2"] = "by pointing your form to Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "using the Form Tools API"; +$LANG["text_add_form_step_3_text_4"] = "To help integrate your form, we suggest you read one of the following tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "They explain how to set up your form in preparation for the test submission, and include other information that may be of help. The line of PHP you will need is:"; +$LANG["text_add_form_step_3_text_6"] = "This ensures the data is actually sent to Form Tools. When you have put through your test submission, click the button below."; +$LANG["text_add_form_step_3_text_7"] = "On the page PRIOR to your final \"thank you\" page, be sure to add the following parameter to the \$params variable:"; +$LANG["text_add_form_step_5_para_1"] = "The database has been set up to for this form and the form has been activated for use. If you made the submission by pointing your form to process.php, please return to your form and remove the following hidden field:"; +$LANG["text_add_form_step_5_para_2"] = "Then visit your \"thank you\" page to empty the sessions. Once this is done, all new form submissions will be processed and stored by Form Tools. Try making a submission or two to verify the information is all uploading correctly."; +$LANG["text_add_form_step_5_para_3"] = "If you wish to fine-tune your form for options such as auto-emailing, adding extra form fields field, or customizing the form field types, you may edit your form at any point."; +$LANG["text_add_form_step_5_para_4"] = "Since your form contains file upload fields, you will need to configure each field to specify the file upload folder, what files are permitted and . This can be found on the Display tab of the edit form page."; +$LANG["text_add_form_step_5_para_5"] = "If the submission was sent via the API, change the \$api->initFormPage() line on the first page of your form to:"; +$LANG["text_add_submission_button"] = "The Add Submission button only appears for Views that have the \"May add submissions\" option set to \"yes\"."; +$LANG["text_admin_email_placeholder_info"] = "This is the email address of the Form Tools administrator, defined in your account settings. This only outputs the email address, so if you wish to use as an HTML link, you will need to wrap it in an <a> tag, like so: <a href=\"mailto:{\$ADMINEMAIL}\">{\$ADMINEMAIL}</a>"; +$LANG["text_also_default_login_page_theme"] = "(Also the default login page theme)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "First, please choose your form type."; +$LANG["text_client_form_page"] = "This page lists all the forms and Views assigned to this client. Tip: in order for them to see a form's submissions, they need to be assigned to at least one View."; +$LANG["text_client_map_filters_desc1"] = "Client Map filters let you limit the submissions that appear in this View by mapping the values in a form field to the values in a client account."; +$LANG["text_client_no_forms"] = "You currently have no forms available for review."; +$LANG["text_client_welcome"] = "Welcome! This program stores all information submitted by your website visitors. To view submissions for a particular form just click on the VIEW link, or see the leftmost navigation menu for other options."; +$LANG["text_config_file_created"] = "Your configuration file has been created."; +$LANG["text_config_file_not_created"] = "We couldn't create your config.php file. You will need to create the file manually."; +$LANG["text_config_file_not_created_instructions"] = "Copy and paste the contents from the section below into a file called config.php and upload it via FTP to the Form Tools /global folder (the folder that also contains file called library.php). Afterwards, click the button below to confirm it exists."; +$LANG["text_confirm_delete_form"] = "Yes, I want to delete this form"; +$LANG["text_create_admin_account"] = "Now we're going to create the administrator's account. This is used for managing all aspects of Form Tools such as adding forms and creating client accounts."; +$LANG["text_create_new_client_account"] = "Use the form below to create a new client account. All fields are required."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "see PHP {\$datefunctionlink} function for formatting options"; +$LANG["text_default_file_settings_page"] = "This page defines the file upload settings for your Form Tools installation. These rules apply to all files uploaded through Form Tools, unless explicitly overridden for an individual form field. Note: if you change the upload folder after files have been uploaded, they will be automatically moved to the new folder."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Before continuing, you will need to update your [form tools folder]/cache folder to allow full read and write permissions. Once this is done, this message will disappear and you can install the script."; +$LANG["text_default_values_in_view"] = "This section is optional. All submissions created with this View will contain the default values specified here."; +$LANG["text_delete_all_forms"] = "I want to delete all files that were uploaded via this form"; +$LANG["text_delete_form_warning"] = "Are you sure you want to delete this form? This action cannot be undone. All data will be permanently lost!"; +$LANG["text_edit_admin_menu_page"] = "You may edit your menu below. To ensure you always have access to all functionality available within Form Tools, the following pages are required: Forms, Clients, Your Account, Modules, Settings and Logout."; +$LANG["text_edit_client_menu_page"] = "This section lets you customize the left navigation column for each user. You may create as many client menus as you wish and assign any account to one of them. By default there are two menus: one for you, the administrator, and one for all client accounts. The administrator account may be modified but not removed."; +$LANG["text_edit_tab_summary"] = "If you wish to group this View's fields into tabs, just enter the tab names below. After you're done, select the appropriate tab for each field group in the Fields tab."; +$LANG["text_edit_view_list_page"] = "This tab controls which fields appear as columns on the Submission Listing page, and a few additional settings for those fields. Note: we recommend you add no more than 4 or 5 of the most important fields in the View."; +$LANG["text_email_settings_intro"] = "This page lets you identify which of your form fields store emails and their corresponding names. Once you define them here, you can use them in your email templates as recipients. This section is entirely optional."; +$LANG["text_email_tab_summary"] = "This section lets you construct any number of emails to be sent whenever your form is submitted, and other triggers."; +$LANG["text_email_template_tab"] = "This section lets you determine what content appears in the email. If you wish to send your email as only text or email, only enter a value for that section. If you enter a value for both, the email will be sent in both formats."; +$LANG["text_email_template_text_1"] = "There has been a submission made through your form, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "There has been a submission made through your form, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Thanks for your submission!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Error message to show if the field fails the validation"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "External forms are forms that already exist on your website, or somewhere on the web. Select this option if you have your own form which you'd like to integrate with Form Tools."; +$LANG["text_fields_tab_summary"] = "This page lists all of your form fields. To control how they appear when browsing submissions, see the Views tab. Deleting a field on this page will delete it from all submissions, so please be careful!"; +$LANG["text_file_extension_info"] = "Enter file extensions separated with commas (e.g. jpg,gif,png) or leave blank to allow any file type."; +$LANG["text_file_field_placeholders_info"] = "File fields have two special placeholders: FILEURL and FILENAME. FILEURL is the full URL to the file, so you can link directly to it in your emails; FILENAME is just the file name."; +$LANG["text_filters_page"] = "Only those submissions that meet the rules you define below will appear in this View."; +$LANG["text_filters_tips"] = "For tips on how to use submission filters, see the User Documentation."; +$LANG["text_forgot_password"] = "No problem. Just enter your username below and your login information will be sent to your email address on file. If you have forgotten your username, please email the site administrator at {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "This form contains one or more file upload fields:"; +$LANG["text_form_placeholder_info"] = "The following placeholders may be used in any email template and language placeholder field, regardless of whatever View the email template is assigned to. The QUESTION placeholders are the specific form question; the ANSWER placeholders are the answers to each question."; +$LANG["text_form_submission_date_placeholder"] = "The date when the submission was made."; +$LANG["text_form_tools_form_url"] = "The full URL of the form. This only has a value for External forms."; +$LANG["text_form_tools_login_url"] = "The login URL for Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Note: this form currently has Administrator access type, so none of the client accounts will be able to see this View."; +$LANG["text_form_view_permission_info_private"] = "Note: this form currently has Private access type so the Public and Private options here will be limited to that subset of clients."; +$LANG["text_ft_installed"] = "Congratulations, Form Tools has been successfully installed!"; +$LANG["text_global_placeholder_info"] = "These placeholders may be used in any template and any form."; +$LANG["text_group_name_explanation"] = "For fields added through the Add Form process, this value is pre-filled to the display text of whatever field uses the value. You may wish to change it to better characterize the contents."; +$LANG["text_install_create_config_file"] = "Form Tools stores your server and database settings in a file called config.php in your /global/ folder. Click the \"Create File\" button to automatically generate the file on your server."; +$LANG["text_install_create_database_tables"] = "Now we're going to create the Form Tools database tables. This step requires the database itself to already exist. If you're not sure how to create the database, please contact your hosting provider."; +$LANG["text_install_db_tables_error_tip_1"] = "\"Unknown MySQL Server Host\" usually means that the hostname you provided is incorrect. Perhaps try setting this to \"localhost\" - this is a common way to refer to the \"local\" database on a web server."; +$LANG["text_install_db_tables_error_tip_2"] = "\"Can't connect to local MySQL server through socket\" means the database hostname field is again incorrect."; +$LANG["text_install_db_tables_error_tip_3"] = "\"Access denied for user:\" means that there is a problem with your username / password combination."; +$LANG["text_install_db_tables_error_tip_4"] = "\"Access denied for user: ... to database ...\" means that although your username and password you supplied is correct, it was unable to connect to that particular database with that account. This can mean that either your database name is incorrect, or that this user account is not associated with that database."; +$LANG["text_install_email_content_text"] = "There's plenty of resources on our website to help you get started, including our online documentation (https://docs.formtools.org) and tutorials (https://docs.formtools.org/tutorials). If you find you get stuck or have a question, ask a question on github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Sorry, Form Tools will not be able to run on your server. Please click here for the minimum requirements."; +$LANG["text_install_system_check"] = "This page runs a few tests on your system to ensure it's able to run Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Internal forms exist only within Form Tools - not elsewhere on your site. Only Form Tools user accounts will have access to the form. Select this option if you don't have an existing form."; +$LANG["text_internal_form_intro"] = "Use the form below to create a new Internal form. All settings, including the number and content of the form fields can be be changed and configured later."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "In order to login and use Form Tools, you must have javascript enabled in your browser. Please enable it now, and click refresh in your browser."; +$LANG["text_last_modified_date_explanation_c"] = "The last time this submission was modified. For new submissions, this is the same as:"; +$LANG["text_limit_email_content_desc"] = "This option only works for HTML and text content generated with Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(only lists Views with one or more filters defined)"; +$LANG["text_log_in_to_ft"] = "Log in to Form Tools"; +$LANG["text_login"] = "Please log in below to access the {\$program_name} Administration Panel. If you have forgotten your password, click here."; +$LANG["text_login_info"] = "As requested, here is your login information."; +$LANG["text_name_of_form"] = "The name of the form."; +$LANG["text_no_clients"] = "There are currently no clients in the database. To add a new client account, click the Add Client button below."; +$LANG["text_no_clients_found"] = "No clients were found. Try broadening your search criteria."; +$LANG["text_no_fields_in_view"] = "This View doesn't have any fields in it. Click the link below."; +$LANG["text_no_forms"] = "There are currently no forms in the database. To add a new form, click the Add Form button below."; +$LANG["text_no_forms_found"] = "No forms were found."; +$LANG["text_no_forms_found_search"] = "No forms were found. Try broadening your search criteria."; +$LANG["text_no_modules_found"] = "No modules were found. Try broadening your search criteria."; +$LANG["text_no_recipients_added"] = "No recipients have been added."; +$LANG["text_no_search_results"] = "There are no results with this search criteria / View."; +$LANG["text_no_submissions_found"] = "Sorry, no submissions were found."; +$LANG["text_no_themes"] = "You do not have any themes defined. Click the button below to refresh your theme list, or check the Form Tools user documentation for information about adding themes."; +$LANG["text_non_deletable_fields"] = "This field is used by the Core script and cannot be edited or deleted without causing incompatibilities. If you wish to make changes to the field type, make a copy of it and edit the copy."; +$LANG["text_option_list_group_explanation"] = "If this is selected, it lets to group your options. How the groups are displayed depends on the field type using this option list."; +$LANG["text_option_list_page"] = "Radio buttons, checkboxes, dropdowns and multi-select dropdown fields all provide the user with multiple options from which they can select one or more items. In Form Tools, these are known as Option Lists. Generally, these are created automatically by the Add External Form process, but you can manually add or edit your option lists below if your form content changes or you construct fields that are only used internally."; +$LANG["text_option_list_used_by_fields"] = "This Option List is used by multiple form fields. If you update the information below, it will be changed for all of the fields (see the Form Fields tab to see the list of fields). If you wish to update the values for one, or a subset of the fields that are currently assigned, click here to create a new Option List with the same values as this one. Then you can assign the form fields you want to the new group."; +$LANG["text_public_form_omit_list_page"] = "Public forms give you the benefit of letting all client accounts access them without having to manually assign each client to them. This page lets you pinpoint those clients who may not access this form, even though the form is marked as public."; +$LANG["text_public_view_omit_list_page"] = "Public Views give you the benefit of letting all client accounts access them without having to manually assign each client to them. This page lets you pinpoint those clients who may not access this particular View."; +$LANG["text_reference_tab_info"] = "This page lists all placeholders available for your form. Placeholders are strings which can be used in the email templates, and fields marked with a special placeholder icon . When entered into a field, they are dynamically converted to the appropriate value when the field is viewed or the email is sent."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. After fixing the problem, click the button below to check again. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Review the user documentation"; +$LANG["text_send_email_from_edit_submission_page"] = "Include option to send this email from Edit Submission page"; +$LANG["text_smart_fill_option_list_problem"] = "We were unable to Smart Fill your field options. However, as an alternative, you can try uploading a copy of your form page in the field below. Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML version. To get this, view and save the page from your web browser."; +$LANG["text_submission_ip_address"] = "The IP Address of the user who made the submission."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Use the form below to either view or send yourself an email generated from this email template. The email is only sent to the email specified below; the main, cc and bcc email address recipients are ignored while testing."; +$LANG["text_test_email_templates_no_submissions"] = "In order to test your email templates, you must first put through at least one form submission."; +$LANG["text_theme_page_intro"] = "This page lists all of your themes. Click on a thumbnail to see a larger example of the theme's styles. The \"enabled\" checkbox determines whether or not that theme may be selected by clients. To browse all available themes, visit the Form Tools website."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Adding your first form!"; +$LANG["text_unique_submission_id"] = "The unique submission ID."; +$LANG["text_unused_option_list"] = "This option list is not being used by any form fields."; +$LANG["text_upgraded"] = "Your installation has been upgraded to {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "This Option List is used by the following fields."; +$LANG["text_view_fields_info"] = "This tab controls which fields show up when editing a submission in this View, their order and whether they are editable or not."; +$LANG["text_view_tab_summary"] = "This tab lets you create different ways to group and arrange your data. Views let you create custom subsets of your form data to split it into manageable chunks, and to limit what clients may see or edit."; +$LANG["validation_account_disabled"] = "Sorry, your account has been disabled."; +$LANG["validation_account_not_recognized"] = "Sorry, that username is not recognized."; +$LANG["validation_account_not_recognized_info"] = "Sorry, that username was not found. Please try again, or contact the site administrator at the address below."; +$LANG["validation_account_pending"] = "Your user account is pending approval by an administrator."; +$LANG["validation_check_delete_client"] = "Are you sure you want to delete this client account?"; +$LANG["validation_client_password_missing_number"] = "The client password must contain at least one number (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "The client password must contain at least one of the following characters: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "The client password must contain at least one uppercase letter."; +$LANG["validation_client_password_too_short"] = "The client password needs to be at least {\$number} characters long."; +$LANG["validation_col_name_is_reserved_word"] = "Sorry, this database column name is a reserved work in MySQL. Please rename it!"; +$LANG["validation_db_name"] = "Database names cannot contain periods or slashes."; +$LANG["validation_db_not_updated_invalid_input"] = "The database could not be updated. Please check to see the values you entered are valid."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Sorry, the default administrator and client themes must always be enabled."; +$LANG["validation_default_phone_num_required"] = "Please fill in the full telephone number for the <b>{\$field}</b> field - numbers only."; +$LANG["validation_default_rule_alpha"] = "Please only enter letters and numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_letters_only"] = "Please only enter letters for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_numbers_only"] = "Please only enter numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_required"] = "Please enter a value for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_valid_email"] = "Please enter a valid email address for the <b>{\$field}</b> field."; +$LANG["validation_delete_form_confirm"] = "Please check the box to confirm that you wish to delete this form."; +$LANG["validation_delete_non_empty_option_list"] = "Warning! This Option List is used by one or more form fields. Deleting it will make those fields cease to work properly."; +$LANG["validation_display_names_incomplete"] = "Please enter a value for all the Display Names, or click the Smart Fill option to enter them dynamically."; +$LANG["validation_duplicate_form_field_name"] = "You cannot have multiple fields with the same field name."; +$LANG["validation_email_not_found_or_invalid"] = "Sorry, the email associated with your account either doesn't exist or is invalid."; +$LANG["validation_folder_invalid_permissions"] = "In order to run this test, the permissions need to be set on the upload folder to allow for reading and writing files (777 on Unix)."; +$LANG["validation_folder_not_writable"] = "This folder is not writeable."; +$LANG["validation_internal_form_too_many_fields"] = "Sorry, you can only created forms with 1000 fields or less."; +$LANG["validation_invalid_admin_email"] = "Please enter a valid adminstrator's email address."; +$LANG["validation_invalid_admin_username"] = "Your username may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_invalid_client_username"] = "The client's user name may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_invalid_client_username2"] = "Sorry, username's may only contain letters, numbers and the underscore character. Please enter a new username."; +$LANG["validation_invalid_column_name"] = "Column names may only be alphanumeric (a-Z, 0-9). Please check the column names."; +$LANG["validation_invalid_custom_from_email"] = "Please enter a valid custom 'From' email address."; +$LANG["validation_invalid_custom_reply_to_email"] = "Please enter a valid custom 'Reply-to' email address."; +$LANG["validation_invalid_default_sessions_timeout"] = "Please enter a valid value (a number) for the default sessions timeout."; +$LANG["validation_invalid_email"] = "Please enter a valid email address."; +$LANG["validation_invalid_email_id"] = "Sorry, that's an invalid email ID."; +$LANG["validation_invalid_folder"] = "Sorry, this does not appear to be a valid folder."; +$LANG["validation_invalid_form_field_names"] = "Form fields may only be alphanumeric and underscores (a-Z, 0-9, _), with no spaces."; +$LANG["validation_invalid_num_clients_per_page"] = "Please only enter numbers in the Num Clients Per Page field."; +$LANG["validation_invalid_num_emails_per_page"] = "Please only enter digits for the emails per page."; +$LANG["validation_invalid_num_form_fields"] = "Please only enter numbers in the Number of Fields field."; +$LANG["validation_invalid_num_forms_per_page"] = "Please only enter numbers in the Num Forms Per Page field."; +$LANG["validation_invalid_num_menus_per_page"] = "Please only enter digits for the menus per page."; +$LANG["validation_invalid_num_modules_per_page"] = "Please only enter numbers in the Num Modules Per Page field."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Please only enter numbers in the Num Option Lists Per Page field."; +$LANG["validation_invalid_num_submissions_per_page"] = "Please enter a valid number of submissions per page."; +$LANG["validation_invalid_sessions_timeout"] = "Please enter a valid session timeout (integers only!)."; +$LANG["validation_invalid_tab_assign_values"] = "Please only enter numbers in the 'from' and 'to' fields."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Your server's installation of PHP has an invalid setting for the upload_tmp_dir value. \"{\$upload_folder}\" is not a valid folder."; +$LANG["validation_invalid_url"] = "Please enter a valid URL."; +$LANG["validation_invalid_username"] = "Your username may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_is_form_active"] = "Please indicate whether the form is active or not."; +$LANG["validation_menu_name_taken"] = "Sorry, this menu name is already taken. Please choose a new name."; +$LANG["validation_modules_search_no_status"] = "Please select either the Enabled or Disabled checkboxes."; +$LANG["validation_no_access_type"] = "Please enter the access type."; +$LANG["validation_no_account_logout_url"] = "Please enter your logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Please re-enter your new password."; +$LANG["validation_no_account_password_confirmed2"] = "Please re-enter the new password."; +$LANG["validation_no_admin_email"] = "Please enter the administrator's email address."; +$LANG["validation_no_admin_theme"] = "Please select the theme for the administrator account."; +$LANG["validation_no_admin_theme_swatch"] = "Please select a swatch for the administrator theme."; +$LANG["validation_no_client_email"] = "Please enter the client's email address."; +$LANG["validation_no_client_first_name"] = "Please enter the client's first name."; +$LANG["validation_no_client_last_name"] = "Please enter the client's last name."; +$LANG["validation_no_client_login_page"] = "Please indicate which page the client should be redirected to when they log in."; +$LANG["validation_no_client_password"] = "Please enter the client's password."; +$LANG["validation_no_client_theme_swatch"] = "Please select a default swatch for the client accounts."; +$LANG["validation_no_client_username"] = "Please enter the client's username."; +$LANG["validation_no_column_name"] = "Please enter all column names, or click the Smart Fill button to automatically fill them."; +$LANG["validation_no_column_selected"] = "Please select at least one field to appear as a column on the submission listing page."; +$LANG["validation_no_custom_from_email"] = "Please enter the custom 'From' email address."; +$LANG["validation_no_custom_recipient_email"] = "Please enter the custom recipient email address."; +$LANG["validation_no_custom_reply_to_email"] = "Please enter the custom 'Reply-to' email address."; +$LANG["validation_no_date_format"] = "Please enter a date format."; +$LANG["validation_no_db_column_single"] = "Please enter the Database Column name."; +$LANG["validation_no_db_hostname"] = "Please enter the database hostname."; +$LANG["validation_no_db_name"] = "Please enter the database name."; +$LANG["validation_no_db_username"] = "Please enter the database account username."; +$LANG["validation_no_default_client_theme"] = "Please select the default theme for all new client accounts."; +$LANG["validation_no_default_language"] = "Please select the default language for your installation of Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Please enter the default session timeout for user accounts."; +$LANG["validation_no_display_text"] = "Please enter the Display Text for each field."; +$LANG["validation_no_display_text_single"] = "Please enter the Display Text value."; +$LANG["validation_no_edit_submission_page_label"] = "Please enter the Edit Submission page label."; +$LANG["validation_no_email"] = "Please enter your email address."; +$LANG["validation_no_email_config_field"] = "Please specify which form field is the email field."; +$LANG["validation_no_email_content"] = "Please enter the email content for at least one of the formats (HTML or text)."; +$LANG["validation_no_email_from_field"] = "Please the email 'from' field."; +$LANG["validation_no_email_template_name"] = "Please enter the email template name."; +$LANG["validation_no_email_template_view_id"] = "Please select the View to which this email template should be mapped."; +$LANG["validation_no_email_template_view_mapping_value"] = "Please indicate when the email should be sent."; +$LANG["validation_no_enabled_themes"] = "Please ensure that at least one theme is enabled."; +$LANG["validation_no_first_name"] = "Please enter your first name."; +$LANG["validation_no_form_field_name"] = "Please enter all form field names."; +$LANG["validation_no_form_field_single"] = "Please enter the Form Field value."; +$LANG["validation_no_form_id"] = "The form ID was not specified. Please log out and try again."; +$LANG["validation_no_form_name"] = "Please enter the form name."; +$LANG["validation_no_form_url"] = "Please enter the form URL."; +$LANG["validation_no_last_name"] = "Please enter your last name."; +$LANG["validation_no_login_page"] = "Please indicate which page you would like to be sent each time you log in."; +$LANG["validation_no_logout_url"] = "Please enter the logout URL."; +$LANG["validation_no_main_email_recipient"] = "Please enter at least one main email recipient (i.e. not a cc or bcc)."; +$LANG["validation_no_menu"] = "Please select a menu for this user account."; +$LANG["validation_no_menu_id"] = "Please select a menu."; +$LANG["validation_no_num_clients_per_page"] = "Please enter the number of client accounts per page."; +$LANG["validation_no_num_emails_per_page"] = "Please enter the number of emails to list per page."; +$LANG["validation_no_num_form_fields"] = "Please enter the number of fields for your form."; +$LANG["validation_no_num_forms_per_page"] = "Please enter the number of forms per page."; +$LANG["validation_no_num_menus_per_page"] = "Please enter the number of menus to list per page."; +$LANG["validation_no_num_modules_per_page"] = "Please enter the number of modules per page."; +$LANG["validation_no_num_option_lists_per_page"] = "Please enter the number of option lists per page."; +$LANG["validation_no_num_submissions_per_page"] = "Please enter the number of submissions to display per page."; +$LANG["validation_no_option_list_name"] = "Please enter the option list name."; +$LANG["validation_no_page_titles"] = "Please enter the default page titles for the user accounts."; +$LANG["validation_no_password"] = "Please enter your password."; +$LANG["validation_no_program_name"] = "Please enter the program name."; +$LANG["validation_no_second_password"] = "Please re-enter your password."; +$LANG["validation_no_sessions_timeout"] = "Please enter the session timeout."; +$LANG["validation_no_smart_fill_values"] = "Please enter the form field name and the URL of the form."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "No tabs defined"; +$LANG["validation_no_test_email_recipient"] = "Please enter the email address of where we should send the test email."; +$LANG["validation_no_test_email_submission_id"] = "Please enter the submission ID number."; +$LANG["validation_no_theme"] = "Please select a theme."; +$LANG["validation_no_theme_swatch"] = "Please select a swatch for the selected theme."; +$LANG["validation_no_timezone_offset"] = "Please enter the timezone offset."; +$LANG["validation_no_titles"] = "Please enter the page titles."; +$LANG["validation_no_two_column_names"] = "Sorry, you may not enter the same database column name twice."; +$LANG["validation_no_ui_language"] = "Please select a language for the interface."; +$LANG["validation_no_url"] = "Please enter a URL."; +$LANG["validation_no_username"] = "Please enter your username."; +$LANG["validation_no_username_or_js"] = "You must enter your username. Please activate javascript in your browser."; +$LANG["validation_no_view_fields"] = "Your View doesn't contain any fields! You need to assign at least one field for there to be something to show up in your View."; +$LANG["validation_no_view_fields_selected"] = "Please select one or more fields to add to the View."; +$LANG["validation_no_view_name"] = "Please enter the name of your View."; +$LANG["validation_num_rows_to_add"] = "Please enter the number of rows to add."; +$LANG["validation_option_list_name_taken"] = "Sorry, this option list name is already taken. Please choose a new name."; +$LANG["validation_password_in_password_history"] = "For security, you cannot enter the same password as any of the last {\$history_size} passwords. Please enter a different password."; +$LANG["validation_passwords_different"] = "Please make sure the passwords are the same."; +$LANG["validation_please_enter_search_date_range"] = "Please select the search date range."; +$LANG["validation_please_enter_search_keyword"] = "Please enter the search keyword."; +$LANG["validation_select_field_type"] = "Please select a field type."; +$LANG["validation_select_submissions_to_copy"] = "Please select those submissions you would like to copy."; +$LANG["validation_select_submissions_to_delete"] = "Please select those submissions you would like to delete."; +$LANG["validation_smart_fill_cannot_fill"] = "Sorry, we could not fill this field."; +$LANG["validation_smart_fill_invalid_field_type"] = "We were unable to locate a field, but it is not a dropdown, checkbox or radio group."; +$LANG["validation_smart_fill_no_field_found"] = "Sorry, we couldn't find a form field with that name on the page specified."; +$LANG["validation_smart_fill_no_page"] = "Please locate the page containing the field you wish to Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Please upload all the pages in your form."; +$LANG["validation_upload_folder_not_writable"] = "This temporary upload folder specified by your PHP installation is not writable. Until this is fixed, files cannot be uploaded through Form Tools (or any other PHP program). Please contact your hosting provider."; +$LANG["validation_upload_html_files_only"] = "Please only upload HTML files."; +$LANG["validation_username_taken"] = "Sorry, that username is already taken. Please enter another username."; +$LANG["validation_wrong_password"] = "Sorry, that password does not match."; +$LANG["word_about"] = "About"; +$LANG["word_access"] = "Access"; +$LANG["word_account"] = "Account"; +$LANG["word_account_sp"] = "Account(s)"; +$LANG["word_accounts"] = "Accounts"; +$LANG["word_action"] = "Action"; +$LANG["word_active"] = "Active"; +$LANG["word_add"] = "Add"; +$LANG["word_add_rightarrow"] = "Add »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Administration"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "After"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Author:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« back"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Before"; +$LANG["word_benefits"] = "Benefits"; +$LANG["word_blue"] = "Blue"; +$LANG["word_cancel"] = "Cancel"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Client"; +$LANG["word_client_c"] = "Client:"; +$LANG["word_clients"] = "Clients"; +$LANG["word_close"] = "Close"; +$LANG["word_code"] = "Code"; +$LANG["word_column"] = "Column"; +$LANG["word_columns"] = "Columns"; +$LANG["word_columns_sp"] = "Column(s)"; +$LANG["word_complete"] = "Complete"; +$LANG["word_configuration"] = "Configuration"; +$LANG["word_content"] = "Content"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continue »"; +$LANG["word_copy"] = "Copy"; +$LANG["word_custom"] = "Custom"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Date"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Delete"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "Disabled"; +$LANG["word_documentation"] = "Documentation"; +$LANG["word_done"] = "Done"; +$LANG["word_drawbacks"] = "Drawbacks"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Edit"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Enabled"; +$LANG["word_equals"] = "Equals"; +$LANG["word_error"] = "Error"; +$LANG["word_error_c"] = "Error:"; +$LANG["word_examples_c"] = "Examples:"; +$LANG["word_external"] = "External"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Field"; +$LANG["word_field_sp"] = "Field(s)"; +$LANG["word_fields"] = "Fields"; +$LANG["word_fields_sp"] = "Field(s)"; +$LANG["word_file"] = "File"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Files"; +$LANG["word_filters"] = "Filters"; +$LANG["word_filters_sp"] = "Filter(s)"; +$LANG["word_for"] = "for"; +$LANG["word_form"] = "Form"; +$LANG["word_form_c"] = "Form:"; +$LANG["word_formatting"] = "Formatting"; +$LANG["word_forms"] = "Forms"; +$LANG["word_found"] = "Found"; +$LANG["word_from"] = "From"; +$LANG["word_from_c"] = "From:"; +$LANG["word_general"] = "General"; +$LANG["word_green"] = "Green"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Height"; +$LANG["word_help"] = "Help"; +$LANG["word_hidden"] = "Hidden"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Hour"; +$LANG["word_hours"] = "Hours"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Incomplete"; +$LANG["word_install"] = "Install"; +$LANG["word_installation"] = "Installation"; +$LANG["word_internal"] = "Internal"; +$LANG["word_language"] = "Language"; +$LANG["word_large"] = "Large"; +$LANG["word_like"] = "Like"; +$LANG["word_login"] = "Login"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Main"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "minutes"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N/A"; +$LANG["word_name"] = "Name"; +$LANG["word_name_c"] = "Name:"; +$LANG["word_never"] = "Never"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "NEXT STEP »"; +$LANG["word_no"] = "No"; +$LANG["word_none"] = "None"; +$LANG["word_notes"] = "Notes"; +$LANG["word_notification"] = "Notification"; +$LANG["word_number"] = "Number"; +$LANG["word_off"] = "Off"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "On"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Options"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Order"; +$LANG["word_other"] = "Other"; +$LANG["word_other_c"] = "Other:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Page:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Password"; +$LANG["word_password_c"] = "Password:"; +$LANG["word_pending"] = "Pending"; +$LANG["word_permissions"] = "Permissions"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« previous"; +$LANG["word_private"] = "Private"; +$LANG["word_public"] = "Public"; +$LANG["word_purple"] = "Purple"; +$LANG["word_recipient"] = "Recipient"; +$LANG["word_recipient_sp"] = "Recipient(s)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Remove"; +$LANG["word_remove_uc_leftarrow"] = "« REMOVE"; +$LANG["word_reply_to"] = "Reply-to"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Required"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Resolved"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "row"; +$LANG["word_search"] = "Search"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Select"; +$LANG["word_setting"] = "Setting"; +$LANG["word_settings"] = "Settings"; +$LANG["word_show"] = "Show"; +$LANG["word_size"] = "Size"; +$LANG["word_skipped"] = "Skipped"; +$LANG["word_small"] = "Small"; +$LANG["word_solution"] = "Solution"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Subject"; +$LANG["word_subject_c"] = "Subject"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab(s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Theme"; +$LANG["word_themes"] = "Themes"; +$LANG["word_time"] = "Time"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Today"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Unknown"; +$LANG["word_update"] = "Update"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "User"; +$LANG["word_username"] = "Username"; +$LANG["word_username_c"] = "Username:"; +$LANG["word_validation"] = "Validation"; +$LANG["word_value"] = "Value"; +$LANG["word_value_sp"] = "Value(s)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Verify"; +$LANG["word_version"] = "Version"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "View"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Warning!"; +$LANG["word_warning_c"] = "Warning:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Welcome!"; +$LANG["word_width_c"] = "width:"; +$LANG["word_words"] = "Words"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Yellow"; +$LANG["word_yes"] = "Yes"; \ No newline at end of file diff --git a/global/lang/es.php b/global/lang/es.php new file mode 100644 index 00000000..9709aa04 --- /dev/null +++ b/global/lang/es.php @@ -0,0 +1,1219 @@ +¡Advertencia! Has seleccionado {\$num_selected_on_page} envíos en esta página y {\$num_selected_on_other_pages} en otras páginas. Por favor, elije una de las siguientes opciones:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "¡Atención! No has seleccionado ningún envío en esta página, pero has seleccionado {\$num_selected_on_other_pages} en otras páginas. Por favor, confirma que deseas eliminar estos envíos.
    "; +$LANG["confirm_delete_view"] = "¿Seguro que quieres eliminar esta vista?"; +$LANG["confirm_refresh_page"] = "¿Está usted seguro de que quiere actualizar la página? Esto se pierden todos los cambios que ha realizado."; +$LANG["confirm_save_change_before_redirect"] = "Uno o más campos se han actualizado. ¿Desea guardar los cambios antes de redirigir?"; +$LANG["confirm_smart_fill_db_column_fields"] = "¿Seguro que deseas que \"autocompletar\" llene los nombres de columna de la base de datos? Esto sobrescribirá los valores actuales."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Esta opción genera automáticamente los nombres de columna de base de datos basándose en los campos de visualización de texto, por lo que el contenido de la tabla de base de datos son más fáciles de leer."; +$LANG["confirm_smart_fill_display_names"] = "¿Seguro que deseas que \"autocompletar\" llene los nombres de campo? Esto sobrescribirá los valores actuales."; +$LANG["confirm_ungroup_option_list"] = "¿Seguro de que desea desagrupar esta lista de opciones? Todas las opciones se agrupan en una sola lista, no agrupados."; +$LANG["confirm_uninstall_module"] = "¿Seguro que deseas desinstalar este módulo? Todos los datos del módulo se perderán."; +$LANG["date_AM"] = "am"; +$LANG["date_Fri"] = "Vie"; +$LANG["date_Friday"] = "Viernes"; +$LANG["date_Mon"] = "Lun"; +$LANG["date_Monday"] = "Lunes"; +$LANG["date_PM"] = "pm"; +$LANG["date_Sat"] = "Sab"; +$LANG["date_Saturday"] = "Sábado"; +$LANG["date_Sun"] = "Dom"; +$LANG["date_Sunday"] = "Domingo"; +$LANG["date_Thu"] = "Jue"; +$LANG["date_Thursday"] = "Jueves"; +$LANG["date_Tue"] = "Mar"; +$LANG["date_Tuesday"] = "Martes"; +$LANG["date_Wed"] = "Mie"; +$LANG["date_Wednesday"] = "Miércoles"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Abril"; +$LANG["date_month_August"] = "Agosto"; +$LANG["date_month_December"] = "Diciembre"; +$LANG["date_month_February"] = "Febrero"; +$LANG["date_month_January"] = "Enero"; +$LANG["date_month_July"] = "Julio"; +$LANG["date_month_June"] = "Junio"; +$LANG["date_month_March"] = "Marzo"; +$LANG["date_month_May"] = "May"; +$LANG["date_month_November"] = "Noviembre"; +$LANG["date_month_October"] = "Octubre"; +$LANG["date_month_September"] = "Septiemb"; +$LANG["date_month_short_Apr"] = "Abr"; +$LANG["date_month_short_Aug"] = "Ago"; +$LANG["date_month_short_Dec"] = "Dic"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Ene"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Mayo"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Oct"; +$LANG["date_month_short_Sep"] = "Sep"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "El usuario ha sido eliminado."; +$LANG["notify_account_updated"] = "Tu cuenta ha sido actualizada con éxito."; +$LANG["notify_add_display_values"] = "Añadir valores a mostrar"; +$LANG["notify_admin_menu_updated"] = "El menú de administración ha sido actualizado."; +$LANG["notify_admin_theme_overridden"] = "El tema del administrador ha sido reemplazado manualmente."; +$LANG["notify_allow_url_fopen_not_set"] = "Lo sentimos, esta prueba no se puede ejecutar en tu servidor web. Es necesario que allow_url_fopen se establezca en 1 en tu archivo php.ini. Esta configuración permite a PHP acceder a archivos a través de un URL, lo cual es requisito para ejecutar esta prueba. Puedes probar de forma manual subiendo un archivo a la carpeta via FTP y, a continuación, tratar de acceder a él en la dirección que has proporcionado."; +$LANG["notify_change_temp_password"] = "Usted acaba de iniciar sesión con una contraseña temporal. Usted debe restablecer su contraseña ahora!"; +$LANG["notify_click_to_edit_new_submission"] = "Haga clic aquí para editar la nueva presentación."; +$LANG["notify_client_account_menus_updated"] = "La(s) cuenta(s) de cliente han sido actualizadas en el menú {\$menu_name}. Ya puedes eliminar el menú previamente asociado con la(s) cuenta(s)."; +$LANG["notify_client_account_not_updated"] = "No fue posible actualizar la cuenta de cliente."; +$LANG["notify_client_account_themes_updated"] = "La(s) cuenta(s) de cliente han sido actualizadas al tema {\$theme}. Ya puedes desactivar el tema previamente asociads con la(s) cuenta(s)."; +$LANG["notify_client_account_updated"] = "La cuenta de cliente ha sido actualizada con éxito."; +$LANG["notify_client_menu_deleted"] = "El menú de cliente se ha eliminado."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "El menú ha sido eliminado, ¡pero las cuentas de cliente listadas aquí ya no tienen un menú! Es necesario actualizar las siguientes cuentas:"; +$LANG["notify_client_menu_updated"] = "El menú de cliente ha sido actualizado."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Lo sentimos, el menú que intentaste borrar ya está siendo utilizado por los clientes listados a continuación. Para poder eliminar el menú debes primero asignar los clientes a otros menús. Haz clic en el nombre del cliente para modificar una cuenta de manera individual, o asigna todas las cuentas a un menú diferente utilizando el menú desplegable que ves a continuación."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Lo sentimos, uno de los temas que acabas de inhabilitar ya está siendo utilizado por las cuentas de cliente listadas a continuación. Para poder desactivar el tema debes primero asignar cada cliente a algún otro tema. Haz clic en el nombre del cliente para modificar una cuenta de manera individual, o asigna todas las cuentas a otro tema usando el menú desplegable que ves a continuación."; +$LANG["notify_edit_email_fields_link"] = "Haga clic aquí para especificar los campos del formulario son campos de correo electrónico, para que pueda atacarlos en sus plantillas de correo electrónico."; +$LANG["notify_edit_field_new_field"] = "Este es un nuevo campo. Usted tendrá que actualizar la página principal, antes de poder editar completamente este campo."; +$LANG["notify_edit_option_list_after_save"] = "Debe seleccionar una opción de la Lista y guardar los cambios antes de poder editar."; +$LANG["notify_email_field_config_deleted"] = "La configuración de correo electrónico se ha eliminado."; +$LANG["notify_email_fields_not_updated"] = "Lo sentimos, no fue posible actualizar los campos de correo electrónico."; +$LANG["notify_email_fields_updated"] = "Los campos de correo electrónico han sido actualizados."; +$LANG["notify_email_not_sent"] = "Lo sentimos, el correo electrónico no pudo ser enviado. Por favor de contacta al administrador del sitio a la dirección que ves a continuación."; +$LANG["notify_email_not_sent_c"] = "Lo sentimos, el correo electrónico no se pudo enviar:"; +$LANG["notify_email_sent"] = "El(Los) correo(s) electrónico(s) fue(ron) enviado(s)."; +$LANG["notify_email_template_deleted"] = "La plantilla de correo electrónico se ha eliminado."; +$LANG["notify_email_template_updated"] = "La plantilla de correo electrónico ha sido actualizado."; +$LANG["notify_enabled_module_list_updated"] = "La lista de módulos permitidos ha sido actualizada."; +$LANG["notify_error_saving_fields"] = "Hubo un error al guardar los cambios."; +$LANG["notify_field_changes_saved"] = "Los cambios en el campo (s) se han salvado."; +$LANG["notify_field_options_smart_filled"] = "Las opciones de campo han sido llenadas inteligentemente."; +$LANG["notify_field_selected"] = "El campo ha sido seleccionado. Haz clic aquí para volver a la lista principal de campos."; +$LANG["notify_field_updated"] = "Este campo ha sido actualizado."; +$LANG["notify_file_not_uploaded"] = "No fue posible subir el archivo."; +$LANG["notify_file_uploaded"] = "El archivo fue subido con éxito."; +$LANG["notify_filters_not_updated"] = "Hubo un error actualizando los filtros de envío para este cliente."; +$LANG["notify_filters_updated"] = "Los filtros de envío han sido actualizados para éste cliente."; +$LANG["notify_folder_correct_permissions"] = "Esta carpeta contiene los permisos correctos."; +$LANG["notify_folder_url_match"] = "La carpeta y el URL compaginan de manera correcta."; +$LANG["notify_folder_url_no_access"] = "Esta prueba no pudo ser ejecutada ya que PHP no pudo acceder al URL. Normalmente esto sucede cuando un URL está protegido por contraseña desde un archivo .htaccess."; +$LANG["notify_folder_url_no_match"] = "Esta combinación de carpeta-URL no compagina de manera correcta."; +$LANG["notify_folder_url_unknown_error"] = "Ha ocurrido un error desconocido. Es posible hacer esta prueba manualmente subiendo un archivo a la carpeta vía FTP, y luego intentando acceder al mismo con el URL seleccionado anteriormente."; +$LANG["notify_form_access_type_email_info"] = "Este formulario tiene el tipo de acceso de administrador, por lo que no hay más clientes tienen acceso a ella y no se enumeran en el siguiente menú desplegable."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Lo sentimos, no existe ningún formulario con ese ID."; +$LANG["notify_form_field_not_added"] = "El campo de formulario '{\$fieldname}' No se pudo agregar."; +$LANG["notify_form_field_options_updated"] = "Las opciones de campo del formulario han sido actualizadas."; +$LANG["notify_form_field_removed"] = "El campo del formulario ha sido eliminado con éxito."; +$LANG["notify_form_fields_removed"] = "Los campos del formulario han sido eliminados con éxito."; +$LANG["notify_form_not_updated_notify_admin"] = "Este formulario no pudo ser actualizado. Por favor contacta al administrador y reporta éste problema."; +$LANG["notify_form_settings_updated"] = "La configuración de este formulario ha sido actualizada con éxito."; +$LANG["notify_form_submission_updated"] = "El envío del formulario ha sido actualizado."; +$LANG["notify_form_tabs_updated"] = "Las pestañas han sido actualizadas."; +$LANG["notify_form_updated"] = "El formulario ha sido actualizado con éxito."; +$LANG["notify_form_views_updated"] = "Los puntos de vista forma se han actualizado."; +$LANG["notify_install_invalid_db_info"] = "Lo sentimos, no fue posible la conexión con la base de datos usando la información que has suministrado. El mensaje de error que la base de datos retorna es: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Su formulario ha sido creado! Usted puede configurar su forma a través de estas fichas."; +$LANG["notify_invalid_account_information_in_sessions"] = "La información de cuenta almacenada en las sesiones no es válida. Por favor inicia sesión de nuevo a continuación."; +$LANG["notify_invalid_license_key"] = "Disculpe, parece no ser una clave de licencia válida. Por favor, reintente introducirla de nuevo."; +$LANG["notify_invalid_permissions"] = "No tienes los permisos necesarios para acceder a esta página. Se ha cerrado tu sesión."; +$LANG["notify_invalid_search_dates"] = "Por favor, utilice el selector de fechas para entrar en una fecha válida o fechas."; +$LANG["notify_invalid_upload_folder"] = "La carpeta de carga no es válida o no permite la escritura."; +$LANG["notify_lang_list_updated"] = "La lista de idiomas disponibles para la Interfaz de Usuario ha sido actualizada."; +$LANG["notify_login_info_emailed"] = "La información necesaria para que ingreses al sistema te ha sido enviada por correo electrónico."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Vaya, este módulo ya está instalado!"; +$LANG["notify_module_installed"] = "El módulo ha sido instalado. Haz clic aquí para seleccionar el módulo."; +$LANG["notify_module_list_updated"] = "La lista de módulos ha sido actualizada."; +$LANG["notify_module_uninstalled"] = "El módulo ha sido desinstalado."; +$LANG["notify_module_updated"] = "El módulo {\$module} ha sido actualizada a {\$version}. Haga clic aquí para seleccionar el módulo ."; +$LANG["notify_multi_field_selected"] = "El campo ha sido seleccionado. Haz clic aquí para ver y editar las opciones de campo."; +$LANG["notify_multi_field_updated"] = "Este campo ha sido actualizado. Podrás configurar las opciones de campo después haber creado el formulario."; +$LANG["notify_multiple_fields_found"] = "Múltiples elementos se encontraron con este nombre de campo: ({\$ field_name}). Esto puede ocurrir si la página contiene más de un formulario o si accidentalmente has nombrado dos formularios de igual manera. Por favor elije el que consideres conveniente de la lista que ves a continuación."; +$LANG["notify_new_default_view_created"] = "Una nueva visión, defecto que contiene todos los campos del formulario se ha creado."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "Ningún ID de cuenta de usuario no fue encontrado en las sesiones. Por favor inicia sesión de nuevo a continuación."; +$LANG["notify_no_api_installed"] = "No tienes instalada la API"; +$LANG["notify_no_client_permissions"] = "No hay ajustes disponibles para editar."; +$LANG["notify_no_email_template_selected"] = "Selecciona la plantilla de correo electrónico, Por favor."; +$LANG["notify_no_emails_defined"] = "Ningún mensaje de correo electrónico se ha definido para este formulario. Para añadir uno nuevo, haz clic en el botón a continuación."; +$LANG["notify_no_field_settings"] = "Este tipo de campo no contiene ninguna configuración adicional."; +$LANG["notify_no_fields_in_tab"] = "Esta pestaña no contiene ningún campo."; +$LANG["notify_no_option_lists"] = "No hay opción de listas definidas. Haga clic en el botón de abajo para crear una nueva."; +$LANG["notify_no_test_submission"] = "Form Tools no ha recibido ningún envío de prueba con éxito todavía."; +$LANG["notify_no_user_email_fields_configured"] = "Nota: si deseas enviar un correo electrónico a cualquier dirección de correo electrónico que haya sido incluida en el formulario, primero debes configurar los campos de correo electrónico del formulario ."; +$LANG["notify_no_views"] = "Su forma no tiene ningún Vistas creado! Usted necesitará por lo menos una vista con el fin de gestionar los datos del formulario."; +$LANG["notify_no_views_assigned_to_client_form"] = "Parece que tu cuenta de usuario no tiene asignada ninguna vista de formulario, por lo que no podrás ver dato alguno. Contacta al administrador para obtener ayuda."; +$LANG["notify_no_views_defined"] = "Usted no tiene los puntos de vista definido. Usted no será capaz de ver las presentaciones de este formulario a menos que una vista se crea. Haga clic en el botón de abajo para crear la vista por defecto."; +$LANG["notify_option_list_deleted"] = "La lista de opciones se ha eliminado."; +$LANG["notify_option_list_updated"] = "La lista de opciones se ha actualizado."; +$LANG["notify_public_form_omit_list_updated"] = "El cliente de omitir la lista de esta forma ha sido actualizada."; +$LANG["notify_public_view_omit_list_updated"] = "El cliente de omitir la lista para esta vista ha sido actualizado."; +$LANG["notify_required_admin_pages"] = "En las páginas siguientes se requieren en el menú del administrador: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Lo sentimos, no hubo ninguna actividad por un tiempo así que tuvimos que saldría. Inicia sesión de nuevo más adelante."; +$LANG["notify_setup_options_updated"] = "Las opciones de configuración del sistema han sido actualizadas."; +$LANG["notify_smart_fill_field_not_found"] = "No hemos podido encontrar un campo con ese nombre ({\$field_name}) en la forma (s) especificado. Puede establecer manualmente el tipo de campo de abajo, o haga clic en el botón Ir a editar este campo más tarde."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Su archivo (s) se han subido correctamente. Intenta hacer clic en el botón Smart Fill para intentarlo de nuevo. Si este paso no tendrá que saltar este paso y configurar sus campos de formulario manally más tarde."; +$LANG["notify_smart_fill_submitted"] = "El formulario ha sido enviado. Dependiendo del tamaño de su forma y el número de opciones de campo, esto puede tomar algún tiempo."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Lo sentimos, uno o más de los archivos que has introducido no pudo subirse. Usted tendrá que saltar este paso y configurar los campos manualmente."; +$LANG["notify_submission_and_files_deleted"] = "El envío y cualquier archivo(s) asociado(s) con el mismo han sido eliminados con éxito."; +$LANG["notify_submission_copied"] = "La presentación ha sido copiada."; +$LANG["notify_submission_copied_edit"] = "La presentación ha sido copiada. Puedes editarlo a continuación."; +$LANG["notify_submission_deleted"] = "El envío ha sido eliminado con éxito."; +$LANG["notify_submission_deleted_with_problems"] = "El envío fue eliminado, pero se encontraron los errores a continuación al intentar eliminar el(los) siguiente(s) archivo(s):"; +$LANG["notify_submission_id_not_found"] = "El ID de envío no fue encontrado."; +$LANG["notify_submission_not_updated"] = "No se pudo actualizar el envío."; +$LANG["notify_submissions_and_files_deleted"] = "Los envíos y cualquier archivo(s) asociado(s) con los mismos han sido eliminados con éxito."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} envíos han sido copiados."; +$LANG["notify_submissions_deleted"] = "Los envíos han sido eliminados con éxito."; +$LANG["notify_submissions_deleted_with_problems"] = "Los envíos fueron eliminados, pero se encontraron los errores a continuación al intentar eliminar el(los) siguiente(s) archivo(s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "El mensaje de prueba no pudo ser enviado."; +$LANG["notify_theme_cache_folder_not_writable"] = "Carpeta de caché Este tema no se puede escribir. A fin de que este tema, el {\$folder} carpeta necesita haber leído completo de permisos de escritura."; +$LANG["notify_theme_list_updated"] = "La lista de tema ha sido actualizado."; +$LANG["notify_themes_settings_updated"] = "La configuración de tema han sido actualizados."; +$LANG["notify_view_deleted"] = "La vista se ha eliminado."; +$LANG["notify_view_group_deleted"] = "El grupo de Vista se ha eliminado."; +$LANG["notify_view_missing_columns"] = "Oops! Lo sentimos, esta visión no ha sido establecido aún."; +$LANG["notify_view_missing_columns_admin_fix"] = "Haga clic aquí para especificar los campos que deben aparecer en forma de columnas en esta página."; +$LANG["notify_view_updated"] = "La vista ha sido actualizado."; +$LANG["notify_your_email_sent"] = "El E-mail ha sido enviado con éxito."; +$LANG["phrase_100_per_page"] = "100 por página"; +$LANG["phrase_10_per_page"] = "10 por página"; +$LANG["phrase_15_per_page"] = "15 por página"; +$LANG["phrase_1_direct"] = "1. Directo"; +$LANG["phrase_1char"] = "1 carácter"; +$LANG["phrase_20_per_page"] = "20 por página"; +$LANG["phrase_25_per_page"] = "25 por página"; +$LANG["phrase_2_code"] = "2. Código"; +$LANG["phrase_2_columns"] = "2 columnas"; +$LANG["phrase_2chars"] = "2 caracteres"; +$LANG["phrase_3_columns"] = "3 columnas"; +$LANG["phrase_4_columns"] = "4 Columnas"; +$LANG["phrase_50_per_page"] = "50 por página"; +$LANG["phrase_accepting_submissions"] = "(aceptando registros)"; +$LANG["phrase_access_admin_account_c"] = "Puede acceder a su cuenta de administración aquí:"; +$LANG["phrase_access_type"] = "Tipo de Acceso"; +$LANG["phrase_account_info"] = "Información de Cuenta"; +$LANG["phrase_account_settings"] = "Opciones de Cuenta"; +$LANG["phrase_action_needed"] = "Se necesita una acción"; +$LANG["phrase_add_client"] = "AÑADIR CLIENTE"; +$LANG["phrase_add_client_menu"] = "Agregar Menú de Cliente"; +$LANG["phrase_add_default_settings_rightarrow"] = "Agregar la configuración por defecto »"; +$LANG["phrase_add_field"] = "Agregar Campo"; +$LANG["phrase_add_fields"] = "Agregar Campos"; +$LANG["phrase_add_fields_rightarrow"] = "Agregar campo (s) »"; +$LANG["phrase_add_form"] = "Añadir Formulario"; +$LANG["phrase_add_form_external"] = "Agregar formulario - externa"; +$LANG["phrase_add_form_internal"] = "Agregar formulario - interna"; +$LANG["phrase_add_new_group_rightarrow"] = "Agregar nuevo grupo »"; +$LANG["phrase_add_num_rows"] = "Agregar {\$number} Columna(s)"; +$LANG["phrase_add_row"] = "Agregar Línea »"; +$LANG["phrase_add_submission_button"] = "Añadir botón de envío"; +$LANG["phrase_add_view_rightarrow"] = "Añadir Ver »"; +$LANG["phrase_adding_multi_page_form"] = "Agregando un formulario multi-página con el API"; +$LANG["phrase_adding_single_page_form"] = "Agregando un formulario de página única con el API"; +$LANG["phrase_admin_menu"] = "Menú de Administrador"; +$LANG["phrase_admin_only"] = "Sólo Administrador"; +$LANG["phrase_admin_panel"] = "Panel de Administrador"; +$LANG["phrase_administrator_theme"] = "Tema de Administrador"; +$LANG["phrase_advanced_settings_rightarrow"] = "Opciones avanzadas »"; +$LANG["phrase_all_X_results_selected"] = "Todos los {\$numresults} Resultados Seleccionados"; +$LANG["phrase_all_clients"] = "Todo los clientes"; +$LANG["phrase_all_clients_except_c"] = "Todos los clientes excepto:"; +$LANG["phrase_all_clients_have_access"] = "(todos los clientes tienen acceso)"; +$LANG["phrase_all_fields"] = "Todos los campos"; +$LANG["phrase_all_fields_displayed"] = "Todos los campos están visibles"; +$LANG["phrase_all_statuses"] = "Todos los estados"; +$LANG["phrase_all_submissions"] = "Todos los registros"; +$LANG["phrase_allow_fields_edited"] = "Permitir editar campos"; +$LANG["phrase_alphanumeric"] = "Alfanuméricos (AZ, 0-9)"; +$LANG["phrase_api_version"] = "Versión API"; +$LANG["phrase_apply_timezone_offset"] = "Aplicar desplazamiento de zona horaria"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Asignar todas las cuentas de clientes listadas a {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Asignar todas las cuentas de clientes listadas a {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "En el fin del"; +$LANG["phrase_at_start"] = "Al inicio"; +$LANG["phrase_author_link"] = "Enlace de autor"; +$LANG["phrase_auto_disable_account"] = "cuenta de Auto-después de deshabilitar los intentos fallidos de entrada #"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Clientes Disponibles"; +$LANG["phrase_available_fields"] = "Campos disponibles"; +$LANG["phrase_available_option_lists"] = "Listas disponibles Opción"; +$LANG["phrase_available_swatches"] = "Muestras disponibles"; +$LANG["phrase_available_swatches_c"] = "Muestras disponibles:"; +$LANG["phrase_available_tabs"] = "Disponible aquí"; +$LANG["phrase_available_views"] = "Vistas Disponibles"; +$LANG["phrase_awaiting_form_submission"] = "Esperando registro de formulario"; +$LANG["phrase_back_to_field_list"] = "« regresar a lista de campos"; +$LANG["phrase_back_to_search_results"] = "volver a resultados de búsqueda"; +$LANG["phrase_base_view_on"] = "Base Ver en el ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Cambiar infomación de inicio de sesión"; +$LANG["phrase_characters_limit_p"] = "personajes límite."; +$LANG["phrase_check_db_settings_try_again"] = "Por favor revise las opciones de su base de datos y haga click de nuevo en el boton de continuar"; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Compruebe URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Limpiar"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Borrar lista de exclusión"; +$LANG["phrase_client_account_settings"] = "Opciones de cuenta de usuario"; +$LANG["phrase_client_field"] = "Campo de Cliente"; +$LANG["phrase_client_map_filters"] = "Autogenerar nombre de columnas de base de datos"; +$LANG["phrase_client_may_edit"] = "Cliente puede editar"; +$LANG["phrase_client_menu"] = "Menú de Cliente"; +$LANG["phrase_clients_can_access_form"] = "Clientes que pueden tener acceso al formulario"; +$LANG["phrase_clients_can_access_view"] = "Clientes que pueden tener acceso a Ver"; +$LANG["phrase_clients_cannot_access_form"] = "Clientes que no pueden tener acceso al fomulario"; +$LANG["phrase_clients_cannot_access_view"] = "Clientes que no pueden tener acceso a Ver"; +$LANG["phrase_clients_may_edit"] = "Clientes pueden editar"; +$LANG["phrase_code_c"] = "Código de Error:"; +$LANG["phrase_code_markup_field"] = "Código / HTML del campo"; +$LANG["phrase_code_markup_type"] = "Código / Tipo de marcado"; +$LANG["phrase_codes_c"] = "Códigos de Error:"; +$LANG["phrase_column_width"] = "Ancho de columna"; +$LANG["phrase_company_name"] = "Nombre de la Compañía"; +$LANG["phrase_configure_form_email_fields"] = "Configurar campos de correo electrónico del formulario"; +$LANG["phrase_confirm_folder_url_match"] = "Confirmar el URL de la carpeta"; +$LANG["phrase_connect_rows"] = "Conecte filas"; +$LANG["phrase_copy_email_settings_from"] = "Copiar opciones de correo electrónico desde..."; +$LANG["phrase_copy_settings_from"] = "Copiar opciones desde..."; +$LANG["phrase_core_fields"] = "Campos de núcleo"; +$LANG["phrase_core_version"] = "Versión Básica"; +$LANG["phrase_create_account"] = "Crear Cuenta"; +$LANG["phrase_create_admin_account"] = "Crear Cuenta de Administrador"; +$LANG["phrase_create_config_file"] = "Crear archivo de configuración"; +$LANG["phrase_create_database_tables"] = "Crear tablas de base de datos"; +$LANG["phrase_create_default_view"] = "Crear vista por defecto"; +$LANG["phrase_create_file"] = "Crear archivo"; +$LANG["phrase_create_group"] = "Crear un grupo"; +$LANG["phrase_create_new_email"] = "Crear nuevo correo electrónico"; +$LANG["phrase_create_new_menu"] = "Crear nuevo Menú"; +$LANG["phrase_create_new_option_list"] = "Crear Lista Nueva Opción"; +$LANG["phrase_create_new_option_list_group"] = "Crear nuevo grupo de la lista de opciones"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Crear Lista Nueva Opción »"; +$LANG["phrase_create_new_view"] = "Crear nueva vista"; +$LANG["phrase_create_new_view_group"] = "Crear un nuevo Grupo de Vista"; +$LANG["phrase_custom_display_format"] = "Formato de presentación personalizado"; +$LANG["phrase_custom_recipient"] = "Recipiente personalizado"; +$LANG["phrase_custom_url"] = "URL personalizado"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Tipo de información"; +$LANG["phrase_database_hostname"] = "Nombre de servidor de la base de datos"; +$LANG["phrase_database_name"] = "Nombre de Base de Datos"; +$LANG["phrase_database_password"] = "Contraseña de Base de Datos"; +$LANG["phrase_database_settings"] = "Opciones de Base de Datos"; +$LANG["phrase_database_setup"] = "Instalación de Base de Datos"; +$LANG["phrase_database_table_prefix"] = "Prefijo de tabla de la Base de Datos"; +$LANG["phrase_database_username"] = "Nombre de usuario de la Base de Datos"; +$LANG["phrase_date_format"] = "Formato de Fecha"; +$LANG["phrase_db_column"] = "Columna de Base de Datos"; +$LANG["phrase_db_setup_page_4"] = "4. Configuración de la Base de Datos"; +$LANG["phrase_default_client_account_theme"] = "Tema predeterminado de Cuenta de Cliente"; +$LANG["phrase_default_date_field_search_value"] = "Fecha predeterminada campo de búsqueda de valor"; +$LANG["phrase_default_language"] = "Idioma Predeterminado"; +$LANG["phrase_default_menu"] = "Menú predeterminado"; +$LANG["phrase_default_sessions_timeout"] = "Tiempo máximo de sesión predeterminado "; +$LANG["phrase_default_sort_order"] = "Orden por defecto"; +$LANG["phrase_default_tab_label"] = "Información"; +$LANG["phrase_default_theme"] = "Tema predeterminado"; +$LANG["phrase_default_value"] = "El valor por defecto"; +$LANG["phrase_default_values"] = "Los valores por defecto"; +$LANG["phrase_default_values_new_submissions"] = "Los valores por defecto para las nuevas presentaciones"; +$LANG["phrase_delete_field"] = "Eliminar campo"; +$LANG["phrase_delete_form"] = "ELIMINAR FORMULARIO"; +$LANG["phrase_delete_row"] = "Eliminar fila"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Borrar archivos asociados al borrar registro"; +$LANG["phrase_delete_view"] = "Eliminar vista"; +$LANG["phrase_disconnect_rows"] = "Desconecte filas"; +$LANG["phrase_display_email"] = "Motrar correo electrónico"; +$LANG["phrase_display_name"] = "Nombre Mostrado"; +$LANG["phrase_display_text"] = "Texto Mostrado"; +$LANG["phrase_display_value"] = "Valor mostrado"; +$LANG["phrase_edit_admin_menu"] = "Editar Menú de Administrador"; +$LANG["phrase_edit_client"] = "Editar Cliente"; +$LANG["phrase_edit_client_menu"] = "Menú editar Cliente"; +$LANG["phrase_edit_email_template"] = "Editar plantilla de correo electrónico"; +$LANG["phrase_edit_field"] = "Editar Campo"; +$LANG["phrase_edit_field_c"] = "Editar campo:"; +$LANG["phrase_edit_form"] = "Editar Formulario"; +$LANG["phrase_edit_form_access_type_b"] = "[Editar tipo de formulario de acceso]"; +$LANG["phrase_edit_option_list"] = "Editar la lista de opciones"; +$LANG["phrase_edit_submission"] = "Editar Registro"; +$LANG["phrase_edit_submission_label"] = "Editar etiquetas Presentación"; +$LANG["phrase_edit_view"] = "Editar Visualización"; +$LANG["phrase_email_format"] = "Formato de Correo electrónico"; +$LANG["phrase_email_settings"] = "Configuración de Correo electrónico"; +$LANG["phrase_email_template"] = "Plantilla de Correo electrónico"; +$LANG["phrase_email_template_name"] = "Nombre de Plantilla de Correo electrónico"; +$LANG["phrase_error_learn_more"] = "Saber más acerca de este error."; +$LANG["phrase_error_text_intro"] = "Por favor corrija el (los) siguiente(s) error(es) y vuelva a registrar"; +$LANG["phrase_errors_learn_more"] = "Haga clic en los códigos de error para saber más."; +$LANG["phrase_event_trigger"] = "Evento detonador"; +$LANG["phrase_external_form"] = "De forma Externo"; +$LANG["phrase_external_form_info"] = "Información de forma Externo"; +$LANG["phrase_external_your_own_form"] = "Externo (el suyo propio)"; +$LANG["phrase_field_comments"] = "Comentarios de campo"; +$LANG["phrase_field_label"] = "Etiqueta de Campo"; +$LANG["phrase_field_options"] = "Opciones de Campo"; +$LANG["phrase_field_size"] = "Tamaño de campo"; +$LANG["phrase_field_skipped"] = "Campo ignorado"; +$LANG["phrase_field_specific_settings"] = "Campo de valores específicos"; +$LANG["phrase_field_type"] = "Tipo de Campo"; +$LANG["phrase_field_type_no_validation"] = "No hay reglas de validación para este tipo de campo."; +$LANG["phrase_field_types"] = "Tipos de Campo"; +$LANG["phrase_field_value"] = "Valor del Campo"; +$LANG["phrase_field_values_to_display_values"] = "Valores del Campo » Valores mostrados"; +$LANG["phrase_final_touches_page_6"] = "6. Toques finales"; +$LANG["phrase_finalize_form"] = "Finalizar Formulario"; +$LANG["phrase_first_name"] = "Nombre"; +$LANG["phrase_footer_text"] = "Pie de página"; +$LANG["phrase_for_any_form_submission"] = "Para cualquier registro de formulario"; +$LANG["phrase_for_view_submissions"] = "Sólo para registros mostrados"; +$LANG["phrase_forgot_password"] = "¿Olvidaste tu contraseña?"; +$LANG["phrase_form_already_selected"] = "Ya haz seleccionado el Fomulario "; +$LANG["phrase_form_email_field_b_c"] = "[Formulario] correo electrónico sobre el terreno:"; +$LANG["phrase_form_email_field_configuration"] = "Configuración del Campo de Correo electrónico del Formulario"; +$LANG["phrase_form_email_fields"] = "Campos de formulario de correo electrónico"; +$LANG["phrase_form_field"] = "Campo de Formulario"; +$LANG["phrase_form_field_contents"] = "Contenido del formulario de campo"; +$LANG["phrase_form_field_name"] = "Nombre de Campo del Formulario"; +$LANG["phrase_form_field_placeholders"] = "Marcadores de posición de campo de formulario"; +$LANG["phrase_form_fields"] = "Campos del Formulario"; +$LANG["phrase_form_info"] = "Información del Formulario"; +$LANG["phrase_form_info_2"] = "2. Información del Formulario"; +$LANG["phrase_form_list"] = "Formulario de Lista"; +$LANG["phrase_form_name"] = "Nombre del Formulario"; +$LANG["phrase_form_page"] = "Página de Formulario"; +$LANG["phrase_form_placeholders"] = "Posicionadores del Formulario"; +$LANG["phrase_form_submission"] = "Registro de Formulario"; +$LANG["phrase_form_submissions"] = "Registros de Formulario"; +$LANG["phrase_form_type"] = "Tipo de Formulario"; +$LANG["phrase_form_url"] = "URL del Formulario"; +$LANG["phrase_form_urls"] = "Formulario de URLs"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formas de asignar a cualquier cuenta"; +$LANG["phrase_forms_page_default_message"] = "Formas página predeterminada de un mensaje"; +$LANG["phrase_ft_installation"] = "Rutina de instalación de Form Tools"; +$LANG["phrase_full_width"] = "Ancho completo"; +$LANG["phrase_getting_started"] = "Primeros pasos"; +$LANG["phrase_global_placeholders"] = "Posicionadores Globales"; +$LANG["phrase_group_name"] = "Nombre de Grupo"; +$LANG["phrase_group_options_q"] = "Opciones de grupo?"; +$LANG["phrase_group_rows"] = "Filas del grupo"; +$LANG["phrase_have_fun"] = "Diviertase!"; +$LANG["phrase_highlight_colour"] = "Resaltar color"; +$LANG["phrase_html_email"] = "Correo electrónico en HTML"; +$LANG["phrase_html_template"] = "Plantilla HTML"; +$LANG["phrase_images_media"] = "Imágenes / Medios"; +$LANG["phrase_import_option_list_rightarrow"] = "Importar lista de opciones »"; +$LANG["phrase_input_length"] = "Longitud de entrada"; +$LANG["phrase_installation_help"] = "Instalación de Ayuda"; +$LANG["phrase_internal_form"] = "Forma interna"; +$LANG["phrase_ip_address"] = "Dirección IP"; +$LANG["phrase_is_multi_page_form_q"] = "¿Es este un formulario de varias páginas?"; +$LANG["phrase_label_response_placeholders"] = "Etiqueta / respuesta de marcadores de posición"; +$LANG["phrase_large_300px"] = "Grande (300px)"; +$LANG["phrase_large_400px"] = "Grande (400px)"; +$LANG["phrase_last_7_days"] = "Últimos 7 días"; +$LANG["phrase_last_logged_in"] = "Última entrada"; +$LANG["phrase_last_modified"] = "Última modificación"; +$LANG["phrase_last_modified_date"] = "Última fecha de modificación"; +$LANG["phrase_last_name"] = "Apellido"; +$LANG["phrase_letters_only"] = "Sólo letras"; +$LANG["phrase_light_brown"] = "Castaño claro"; +$LANG["phrase_limit_email_content"] = "Limitar el contenido de Correo electrónico a los campos mostrados"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "INICIAR SESIÓN"; +$LANG["phrase_login_as_user"] = "Inicie una sesión como este usuario"; +$LANG["phrase_login_info"] = "Información de Inicio de Sesión"; +$LANG["phrase_login_page"] = "Página de Inicio de Sesión"; +$LANG["phrase_login_panel_c"] = "Panel de Inicio de Sesión:"; +$LANG["phrase_login_panel_leftarrows"] = "« Panel de Inicio de Sesión"; +$LANG["phrase_login_password"] = "Contraseña de Inicio de Sesión"; +$LANG["phrase_login_username"] = "Nombre de Usuario para Inicio de Sesión"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "URL de fin de Sesión"; +$LANG["phrase_main_nav"] = "Menú principal"; +$LANG["phrase_main_settings"] = "Configuraciónes Generales"; +$LANG["phrase_manage_client"] = "Administrar Clientes"; +$LANG["phrase_manage_client_omit_list"] = "Omitir la gestión de clientes Lista"; +$LANG["phrase_max_file_size"] = "Tamaño máximo de archivo"; +$LANG["phrase_max_length"] = "Longitud máxima de"; +$LANG["phrase_max_length_words_chars"] = "- Longitud máxima (palabras / caracteres)"; +$LANG["phrase_may_add_submissions"] = "Las presentaciones pueden añadir"; +$LANG["phrase_may_copy_submissions"] = "Puede copiar presentaciones"; +$LANG["phrase_may_delete_submissions"] = "Puede eliminar trabajos"; +$LANG["phrase_medium_150px"] = "Mediano (150px)"; +$LANG["phrase_medium_200px"] = "Mediano (200 píxeles)"; +$LANG["phrase_menu_name"] = "Nombre de menú"; +$LANG["phrase_menu_type"] = "Tipo de menú"; +$LANG["phrase_min_password_length"] = "Duración mínima de la contraseña"; +$LANG["phrase_module_description"] = "Descripción del Módulo"; +$LANG["phrase_module_info"] = "Módulo de Información"; +$LANG["phrase_module_nav"] = "Módulo de navegación"; +$LANG["phrase_month_to_date"] = "Mes a la fecha"; +$LANG["phrase_multi_select"] = "Multi-selección"; +$LANG["phrase_multi_select_dropdown"] = "Selector multiple dezplegable"; +$LANG["phrase_multiple_fields_found"] = "Varios campos Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nombre / Apellido"; +$LANG["phrase_new_blank_email"] = "Nuevo correo electrónico en blanco"; +$LANG["phrase_new_blank_option_list"] = "Nueva lista de opciones en blanco"; +$LANG["phrase_new_blank_view"] = "Nueva blanco Ver"; +$LANG["phrase_new_ft_installation"] = "Nueva Forma de Herramientas de Instalación"; +$LANG["phrase_new_option_list"] = "Lista de opciones nuevas"; +$LANG["phrase_new_password"] = "Nueva Contraseña"; +$LANG["phrase_new_password_reenter"] = "Nueva contraseña (por favor, vuelva a entrar)"; +$LANG["phrase_new_view"] = "Nueva vista"; +$LANG["phrase_new_view_all_fields"] = "Nueva Vista - Todos los campos"; +$LANG["phrase_next_client"] = "próximo cliente »"; +$LANG["phrase_next_field"] = "»siguiente campo"; +$LANG["phrase_next_form"] = "siguiente formulario »"; +$LANG["phrase_next_view"] = "Ver siguiente »"; +$LANG["phrase_no_clients"] = "No hay clientes"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "No desplazamiento"; +$LANG["phrase_no_option_lists_available"] = "No hay opciones de las listas disponibles."; +$LANG["phrase_no_views"] = "No Vistas"; +$LANG["phrase_no_views_with_filters_p"] = "(No vistas con filtros definidos)"; +$LANG["phrase_none_not_recommended"] = "Ninguno (no recomendado)"; +$LANG["phrase_not_assigned_to_option_list"] = "Este campo no está asignado a una lista de opciones."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "NO es igual"; +$LANG["phrase_not_found"] = "No se ha encontrado!"; +$LANG["phrase_not_like"] = "NO Como"; +$LANG["phrase_not_visible_to_client"] = "(no visible para el cliente)"; +$LANG["phrase_num_clients_per_page"] = "Núm. de Clientes por página"; +$LANG["phrase_num_emails_per_page"] = "Mensajes de correo electrónico Número de votos por página"; +$LANG["phrase_num_fields"] = "Número de campos"; +$LANG["phrase_num_forms_per_page"] = "Núm. de Formas por página"; +$LANG["phrase_num_menus_per_page"] = "Número de votos Menús por página"; +$LANG["phrase_num_modules_per_page"] = "Número de votos módulos por página"; +$LANG["phrase_num_option_lists_per_page"] = "Num listas de opciones por página"; +$LANG["phrase_num_options"] = "Num Opciones"; +$LANG["phrase_num_rows"] = "Num Filas"; +$LANG["phrase_numbers_only"] = "Sólo los números"; +$LANG["phrase_often_localhost"] = "(a menudo "localhost")"; +$LANG["phrase_on_form_submission"] = "El envío del formulario"; +$LANG["phrase_one_char_number"] = "Al menos uno de los personajes es un número (0-9)"; +$LANG["phrase_one_char_upper"] = "Al menos uno de los personajes es mayúscula"; +$LANG["phrase_one_special_char"] = "Al menos uno de {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(sólo clientes específicos tienen acceso)"; +$LANG["phrase_open_form_in_dialog"] = "Forma abierta en la ventana de diálogo"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Abrir este formulario en una ventana nueva pestaña /"; +$LANG["phrase_option_list"] = "Lista de opciones"; +$LANG["phrase_option_list_name"] = "Opción Nombre de la lista"; +$LANG["phrase_option_list_or_contents"] = "Lista de opciones / Contenido"; +$LANG["phrase_option_lists"] = "Listas de opciones"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Títulos de Páginas"; +$LANG["phrase_pass_on"] = "Pasar"; +$LANG["phrase_password_min"] = "Debe ser por lo menos {\$length} caracteres."; +$LANG["phrase_password_one_number"] = "Debe contener al menos un número (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Debe contener al menos una letra mayúscula."; +$LANG["phrase_password_requirements_c"] = "Contraseña requisitos:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Debe contener al menos uno de los siguientes caracteres: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permisos / Otros"; +$LANG["phrase_permitted_file_types"] = "Tipos de archivos permitidos"; +$LANG["phrase_phone_number"] = "Número de teléfono"; +$LANG["phrase_phone_number_format"] = "Formato de número de teléfono"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini tamaño de archivo máximo permitido subir:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Por favor confirmar"; +$LANG["phrase_please_enter_license_key"] = "Por favor, introduzca su clave de licencia"; +$LANG["phrase_please_select"] = "Por favor elige"; +$LANG["phrase_please_select_form"] = "Por favor, seleccione una forma"; +$LANG["phrase_prev_client"] = "«Anterior cliente"; +$LANG["phrase_prev_form"] = "«Anterior forma"; +$LANG["phrase_prevent_password_reuse"] = "re-Evitar el uso de contraseñas por última #"; +$LANG["phrase_previous_field"] = "campo anterior «"; +$LANG["phrase_previous_page"] = "Página anterior"; +$LANG["phrase_previous_view"] = "«Anterior Ver"; +$LANG["phrase_program_name"] = "Nombre del Programa"; +$LANG["phrase_public_form_omit_list"] = "Forma público Omitir Lista"; +$LANG["phrase_public_view_omit_list"] = "De Vista Pública Omitir la lista"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Hubo un problema con la siguiente consulta:"; +$LANG["phrase_radio_buttons"] = "Botones Radio"; +$LANG["phrase_random_form_submission"] = "Envío de forma aleatorio"; +$LANG["phrase_re_enter_password"] = "Re-escribir Contraseña"; +$LANG["phrase_recipient_type"] = "El tipo de destinatario"; +$LANG["phrase_redirect_url"] = "URL de Redirección"; +$LANG["phrase_refresh_list"] = "Actualizar Lista"; +$LANG["phrase_refresh_module_list"] = "Actualizar Lista de módulos"; +$LANG["phrase_refresh_page"] = "ACTUALIZAR PÁGINA"; +$LANG["phrase_refresh_theme_list"] = "Actualizar por temas"; +$LANG["phrase_register_new_email"] = "Registro de Nuevo Email"; +$LANG["phrase_remaining_characters"] = "caracteres restantes"; +$LANG["phrase_remaining_words"] = "El resto del texto"; +$LANG["phrase_remove_tabs"] = "Retire aquí"; +$LANG["phrase_required_password_chars"] = "Requerido caracteres de la contraseña"; +$LANG["phrase_resend_test_submission"] = "REENVIAR ENVÍO DE PRUEBA"; +$LANG["phrase_return_form_list"] = "VOLVER A LA LISTA DE FORMULARIOS"; +$LANG["phrase_row_selected"] = "{\$num_rows} fila seleccionada"; +$LANG["phrase_rows_selected"] = "{\$num_rows} filas seleccionadas"; +$LANG["phrase_sample_data"] = "Información de Muestra"; +$LANG["phrase_save_changes"] = "Guardar cambios"; +$LANG["phrase_search_keyword"] = "Buscar palabra clave"; +$LANG["phrase_security_settings"] = "Configuración de seguridad"; +$LANG["phrase_select_all"] = "Seleccionar todo"; +$LANG["phrase_select_all_X_results"] = "Seleccionar todo {\$numresults} Resultados"; +$LANG["phrase_select_all_on_page"] = "Seleccionar toda la página"; +$LANG["phrase_select_date"] = "Seleccione la fecha"; +$LANG["phrase_select_field"] = "Seleccione el campo"; +$LANG["phrase_select_swatch"] = "Seleccione muestra"; +$LANG["phrase_selected_clients"] = "Clientes Seleccionados"; +$LANG["phrase_selected_views"] = "Selección de puntos de vista"; +$LANG["phrase_send_email"] = "Enviar correo"; +$LANG["phrase_send_test_email"] = "ENVIAR E-MAIL DE PRUEBA"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Tiempo de espera de sesiones de"; +$LANG["phrase_setting_value"] = "Valor de configuración"; +$LANG["phrase_setup_options"] = "Opciones de Instalación"; +$LANG["phrase_show_all"] = "Mostrar todo"; +$LANG["phrase_show_form"] = "Mostrar el Formulario"; +$LANG["phrase_size_large"] = "Grande (TEXTO)"; +$LANG["phrase_size_medium"] = "Mediano (<= 256 caracteres)"; +$LANG["phrase_size_small"] = "Pequeño (<= 20 caracteres)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 caracteres)"; +$LANG["phrase_size_very_large"] = "Muy Grande (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Pasar de Campo"; +$LANG["phrase_skip_step"] = "Omita el paso"; +$LANG["phrase_small_100px"] = "Pequeña (100px)"; +$LANG["phrase_small_80px"] = "Pequeños (80px)"; +$LANG["phrase_smart_fill"] = "LLENADO INTELIGENTE"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Rellene los campos de:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill la documentación del usuario »"; +$LANG["phrase_sort_as"] = "Clasificar como"; +$LANG["phrase_special_fields"] = "Campos especiales"; +$LANG["phrase_standard_fields"] = "Norma Campos"; +$LANG["phrase_standard_filters"] = "Estándar Filtros »"; +$LANG["phrase_step_1"] = "Paso 1"; +$LANG["phrase_step_2"] = "Paso 2"; +$LANG["phrase_step_3"] = "Paso 3"; +$LANG["phrase_step_4"] = "Paso 4"; +$LANG["phrase_step_5"] = "Paso 5"; +$LANG["phrase_step_6"] = "Paso 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Etiquetas de tiras en los envíos del formulario"; +$LANG["phrase_subject_line"] = "Línea de asunto"; +$LANG["phrase_submission_date"] = "Fecha de envío"; +$LANG["phrase_submission_id"] = "ID del Envío"; +$LANG["phrase_submission_made"] = "Documentos presentados: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Tipo de presentación"; +$LANG["phrase_submissions_per_page"] = "Envíos por página"; +$LANG["phrase_system_check"] = "Comprobación del sistema"; +$LANG["phrase_system_fields_no_validation"] = "Usted no puede agregar la validación de los campos del sistema."; +$LANG["phrase_system_time_offset"] = "Hora del Sistema"; +$LANG["phrase_tab_label"] = "Ficha Etiqueta"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Permisos de la carpeta de prueba"; +$LANG["phrase_test_submission"] = "Envío de Prueba"; +$LANG["phrase_test_submission_3"] = "3. Prueba de Entrega"; +$LANG["phrase_test_submission_received"] = "Fecha de presentación de prueba"; +$LANG["phrase_text_and_html"] = "De texto y HTML"; +$LANG["phrase_text_email"] = "Texto Email"; +$LANG["phrase_text_template"] = "Plantilla de texto"; +$LANG["phrase_the_previous_month"] = "El mes anterior"; +$LANG["phrase_theme_description"] = "Descripción del tema"; +$LANG["phrase_theme_info"] = "Tema Información"; +$LANG["phrase_tiny_30px"] = "Pequeños (30px)"; +$LANG["phrase_tiny_50px"] = "Pequeños (50px)"; +$LANG["phrase_total_results_c"] = "Resultados Totales"; +$LANG["phrase_type_c"] = "Tipo de error:"; +$LANG["phrase_unselect_all"] = "Deseleccionar Todo"; +$LANG["phrase_update_accounts"] = "Cuentas de actualización"; +$LANG["phrase_update_email_template"] = "Actualización de plantilla de correo electrónico"; +$LANG["phrase_update_field"] = "Actualizar campos"; +$LANG["phrase_update_order"] = "Actualización de la Orden"; +$LANG["phrase_update_view"] = "Actualización de Vista"; +$LANG["phrase_upload_file"] = "Subir archivo"; +$LANG["phrase_upload_files"] = "Cargar archivos"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Ruta de la carpeta para subir archivos"; +$LANG["phrase_upload_folder_url"] = "URL de la carpeta para subir archivos"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Use Valor predeterminado?"; +$LANG["phrase_used_by_num_form_fields"] = "Usado por # campos de formulario"; +$LANG["phrase_uses_swatches"] = "Utiliza Muestras"; +$LANG["phrase_valid_email"] = "De correo electrónico válida"; +$LANG["phrase_validation_error"] = "Error de validación"; +$LANG["phrase_validation_rule"] = "Regla de validación"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Ver Grupo"; +$LANG["phrase_view_id"] = "Ver ID"; +$LANG["phrase_view_name"] = "Nombre de vista"; +$LANG["phrase_view_placeholders"] = "Marcadores de vista"; +$LANG["phrase_view_submissions"] = "Ver colaboraciones"; +$LANG["phrase_view_uploaded_files"] = "ver archivos subidos"; +$LANG["phrase_viewing_range"] = "[ver {\$startnum} a {\$endnum}]"; +$LANG["phrase_when_sent"] = "Cuando se envía"; +$LANG["phrase_when_submission_is_deleted"] = "Cuando se elimina la presentación"; +$LANG["phrase_when_submission_is_edited"] = "Cuando se edita la presentación"; +$LANG["phrase_who_can_access"] = "¿Quién puede acceder?"; +$LANG["phrase_word_limit_p"] = "palabra límite."; +$LANG["phrase_year_to_date"] = "Que va de año"; +$LANG["phrase_yes_for_all_views"] = "Sí, para todas las vistas"; +$LANG["phrase_yes_for_specific_views"] = "Sí, por las opiniones concretas"; +$LANG["phrase_your_account"] = "Tu cuenta"; +$LANG["phrase_your_email"] = "Tu E-mail"; +$LANG["phrase_your_email_address"] = "Tu dirección de e-mail"; +$LANG["processing_form_disabled"] = "Lo sentimos, este formulario ha sido deshabilitado."; +$LANG["processing_form_incomplete"] = "Lo sentimos, esta formulario parece no haber sido configurado correctamente desde Form Tools. La causa más probable es que hayas eliminado el campo oculto \"form_tools_initialize_form\" de tu formulario, sin haber completado todos los pasos del proceso de \"Agregar formulario\".

    Por favor inicia sesión y revisa la configuración del formulario."; +$LANG["processing_init_complete"] = "Gracias! tu envío de prueba ha sido recibido con éxito. Por favor regresa al panel de administración de Form Tools y haz clic en el botón de \"Actualizar\", al final del la página del paso 3 del proceso de \"registrar formulario\", para finalizar la configuración de tu formulario."; +$LANG["processing_invalid_form_id"] = "Disculpe, esto no parece ser un ID de forma válido."; +$LANG["processing_no_form_id"] = "process.php requiere un identificador para poder procesar el formulario. Por favor revisa que tu formulario incluya un campo invisible de nombre \"form_tools_form_id\" que esté indicando el identificador del formulario."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Tools es incapaz de determinar a dónde dirigir los usuarios cuando no escriban el CAPTCHA correctamente. Por favor especifica la dirección URL del formulario en un campo oculto de nombre form_tools_form_url."; +$LANG["processing_no_post_vars"] = "process.php no está recibiendo información alguna. Nota: este programa no funciona si se carga directamente en el navegador. Asegurate de que el formulario esté enviando la información vía POST."; +$LANG["processing_no_redirect_url"] = "El envío fue procesado correctamente, pero no has especificado un URL de salida para este formulario. Puedes establecer un URL de salida para tu formulario desde la Interfaz de Usuario de Form Tools."; +$LANG["special_language"] = "Spanish"; +$LANG["special_language_locale"] = "Spanish"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Todas las cuentas de Cliente se crearán con las opciones y permisos definidos a continuación. Para reemplazar una opción para un cliente en particular, edita la cuenta de ese cliente y visita la correspondiente pestaña de Opciones."; +$LANG["text_add_form_choose_integration_method"] = "Elija el método que desea utilizar para integrar su forma con las herramientas de formulario."; +$LANG["text_add_form_code_submission_benefits"] = "Este método utiliza el formulario de herramientas API , incluida en el formulario principal de secuencia de comandos de herramientas. La API proporciona una serie de funciones útiles para hacer el trabajo de la integración de su forma con las herramientas de forma tan simple como sea posible. No hay restricciones a la forma en que su formulario puede ser presentado cuando se utiliza la API. Usted puede enviar el contenido de una sola vez, o página por página, usted puede agregar sus propias personalizada del lado del servidor de validación, imágenes CAPTCHA, usted puede optar por presentar la información ahora, sino que sólo lo dicen para mostrar la presentación en el Formulario de herramientas de interfaz de usuario en una fecha posterior (ver el Finalizado presentaciones en la documentación de ayuda de la API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Con el fin de presentar los datos del formulario a través de PHP, el formulario debe estar ubicado en el mismo sitio web que esta forma de instalación de Herramientas. En segundo lugar, por falta de técnicas y herramientas de principiante formulario los usuarios, este método puede ser un poco intimidante al principio. Pero hay un montón de documentación para ayudarle, entre ellos dos tutoriales sencillos para la integración de los formularios de una o varias páginas (se trata de un vínculo en un paso posterior)."; +$LANG["text_add_form_direct_submission_benefits"] = "Esta es la manera más simple de enviar su formulario a Form Tools. No requiere de ningún conocimiento en PHP y sólo necesita de un pequeño cambio en su formulario. Es perfecto para formularios pequeños y que sólo procuran enviar la información a la base de datos y redireccionar al usuario a una página de \"recibido\"."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Este método de registro es muy fácil de usar, pero no permite mucho control para el caso de formularios más complicados. Formularios de páginas múltiples o que requieren validación por parte del servidor son más apropiados para el segundo método: Registrar vía el API de Form Tools."; +$LANG["text_add_form_field_types1"] = "Ya está casi hecho! Esta página trata de encontrar todos los campos del formulario y determinar sus tipos de campo. Haga clic en el botón Relleno inteligente a la derecha para empezar. Se le permite solamente procederá cuando todas las acciones que se han resuelto - los problemas que requieren su atención aparecen en la carpeta "Es preciso actuar para " de la columna."; +$LANG["text_add_form_field_types2"] = "Si su forma no está en HTML, haga clic en el botón Paso Ir a continuar. Todo esto se puede configurar más tarde."; +$LANG["text_add_form_field_types3"] = "Esto vuelve a cargar el contenido de la forma (s). Nota: esto sobreescribirá los cambios que han hecho en esta página."; +$LANG["text_add_form_field_types4"] = "En caso de que tenga problemas, haga clic aquí para omitir este paso. Todos los campos sin resolver están configurados para utilizar los valores por defecto. Puede personalizar estos campos después."; +$LANG["text_add_form_field_types_manual_upload"] = "Si usted ha sido incapaz de Relleno inteligente sus campos, es posible que desee intentar una solución alternativa: cargar copias de los formularios en los campos de abajo."; +$LANG["text_add_form_field_types_manual_upload2"] = "Nota: no cargar primas páginas PHP (u otro código de servidor) - sólo subir las versiones de HTML. Para conseguir esto, ver y guardar la página desde su navegador web."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Hubo varios campos que no se pudo encontrar en la página del formulario que ha especificado. Esto es principalmente causado probablemente por uno de los siguientes:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Ha introducido uno o más de las URLs forma de varias páginas forma incorrecta."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Una o más páginas de su formulario están protegidos por contraseña y el guión no podía acceder a la página."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Que incorrectamente su dirección URL del formulario."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Haga clic aquí para volver a la página de información de forma que revisar su configuración."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "¿Ha cambiado su forma (s) después de hacer la presentación de prueba"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Haga clic aquí para poner a través de otra presentación de prueba."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Su forma está protegido con contraseña y el guión no podía acceder a la página."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "En otra pestaña / ventana del navegador, acceder a su formulario y haga clic en el botón Actualizar página de abajo para tratar de volver a encontrar el campo."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Si ninguna de las soluciones anteriores, también puede intentar subir manualmente los formularios para el procesamiento ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Hubo varios campos que no se pudo encontrar en las páginas del formulario especificado. Esto es principalmente causado probablemente por uno de estos:"; +$LANG["text_add_form_help_link"] = "Si surge algún problema durante estos pasos, pruebe la lectura de la documentación del usuario ."; +$LANG["text_add_form_step_1_text_1"] = "Las siguientes páginas lo guiarán por los pasos necesarios para configurar Form Tools para que guarde los registros de su formulario. Antes de continuar, por favor verifique que:"; +$LANG["text_add_form_step_1_text_2"] = "Tu formulario ya ha sido creado y es accesible a través de un URL (localhost está bien)"; +$LANG["text_add_form_step_1_text_3"] = "Usted puede editar su formulario"; +$LANG["text_add_form_step_2_para_2"] = "Abre tu formulario en cualquier editor de texto de tu elección y cambia las etiquetas del formulario por las siguientes, incluyendo los dos campos ocultos."; +$LANG["text_add_form_step_2_para_3"] = "A continuación, abra su formulario en un navegador. Llene todos los campos y registrelo. despues de registrarlo, usted deberá ver un mensaje de confirmación. Una vez este mensaje sea visible, regrese a esta página y haga clic en el boton de referescar abajo exhibido. Cuando esto suceda, aparecerá un boton de continuar, que lo llevará al siguiente paso."; +$LANG["text_add_form_step_2_para_6"] = "En su envío del formulario, incluir los siguientes valores. Se puede establecer directamente a través de PHP o transmitan a través de la misma forma. A continuación se presentan ejemplos de cada uno. La varname \$ () es un hash (o matriz asociativa) de toda la información de envío del formulario - esto es por lo general los \$ postvar) (o) (\$ sessionvar variable, pero puede ser a medida."; +$LANG["text_add_form_step_2_text_2"] = "Introduzca la dirección URL de su "Gracias " en la página aquí. Aquí es donde usted quiere que la gente se dirige a después de que el formulario ha sido enviado."; +$LANG["text_add_form_step_3_para_1"] = "Esta página enumera todos los campos en el registro de su formulario. Por favor revise cada campo y borre los que no necesite guardados para cada registro. Si borra algún campo accidentalmente, o quiere cambiar la información guardada por su formulario, regrese a la página anterior para enviar un nuevo registro de verificación."; +$LANG["text_add_form_step_3_para_2"] = "Nota: Si va a enviar varios valores a través de casillas de verificación o un multi-caja de selección, asegúrese de que su nombre de campo termina con el [] caracteres (ver la documentación del usuario para más información)."; +$LANG["text_add_form_step_3_text_1"] = "Aquí es donde comienza la diversión! En este punto, herramientas de forma es la espera de una presentación de prueba de su forma. Se utilizará esta presentación forma de saber qué información debe ser almacenada en la base de datos."; +$LANG["text_add_form_step_3_text_2"] = "señalando su forma a otra Herramientas"; +$LANG["text_add_form_step_3_text_3"] = "utilizando la API de herramientas de forma"; +$LANG["text_add_form_step_3_text_4"] = "Para ayudar a integrar a su forma, le sugerimos que lea uno de los siguientes tutoriales:"; +$LANG["text_add_form_step_3_text_5"] = "En ellas se explica cómo configurar el formulario en la preparación para la presentación de prueba, e incluir otra información que pueda ser de ayuda. La línea de PHP que se necesita es:"; +$LANG["text_add_form_step_3_text_6"] = "Esto asegura que la información se envíe a la Forma Herramientas. Cuando se han puesto a través de la presentación de pruebas, haga clic en el botón de abajo."; +$LANG["text_add_form_step_3_text_7"] = "Sobre el procedimiento página a su final "gracias" de página, asegúrese de agregar el siguiente parámetro a la variable \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "La base de datos ha sido creada para de esta forma y la forma se ha activado para su uso. Si usted hizo la presentación señalando su formulario para process.php, por favor, vuelva a su forma y eliminar el campo oculto siguientes:"; +$LANG["text_add_form_step_5_para_2"] = "A continuación, visita a su "gracias" página para vaciar las sesiones. Una vez hecho esto, todas las propuestas de nueva forma serán procesados y almacenados por un formulario de Herramientas. Trate de hacer una presentación o dos para verificar la información es cargar correctamente."; +$LANG["text_add_form_step_5_para_3"] = "Si desea afinar la forma para opciones tales como auto-correo electrónico, añadiendo más campos del formulario de campo, o la personalización de los tipos de campo de formulario, es posible editar el formulario en cualquier momento."; +$LANG["text_add_form_step_5_para_4"] = "Dado que el formulario contiene archivos subidos por el usuario, tendrá que configurar cada campo para especificar la carpeta de carga de archivos, ¿qué archivos son permitidas y. Esto se puede encontrar en la pestaña Pantalla de la página de modificación de la forma."; +$LANG["text_add_form_step_5_para_5"] = "Si la presentación fue enviada a través de la API, cambie la línea de ft_api_init_form_page en la primera página de su formulario a:"; +$LANG["text_add_submission_button"] = "El botón de envío Agregar sólo aparece para las vistas que tiene el "Puede agregar presentaciones " opción en "sí "."; +$LANG["text_admin_email_placeholder_info"] = "Esta es la dirección de correo electrónico del administrador de las herramientas de formulario, que se define en la configuración de la cuenta. Esto sólo se envía el correo electrónico, así que si usted desea utilizar como enlace HTML, usted tendrá que envolver en una etiqueta <a>, así:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ adminEmail) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(También el tema por defecto página de inicio de sesión)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "En primer lugar, elija su tipo de formulario."; +$LANG["text_client_form_page"] = "Esta página muestra todos los formularios y vistas asignado a este cliente. Sugerencia: para que ellos para ver las presentaciones de un formulario, que necesitan para ser asignados a al menos un punto de vista."; +$LANG["text_client_map_filters_desc1"] = "Filtros Mapa de clientes le permiten limitar las comunicaciones que aparecen en este punto de vista de la asignación de valores en un campo de formulario con los valores en una cuenta de cliente."; +$LANG["text_client_no_forms"] = "Actualmente no tienes formas disponibles para revisión."; +$LANG["text_client_welcome"] = "¡Bienvenido! Este programa almacena toda la información que los visitantes envían a tu página web. Para ver los envíos de un formulario en particular, simplemente haz clic en el enlace Vista, o revisa el menú de navegación izquierdo para otras opciones."; +$LANG["text_config_file_created"] = "Tu archivo config.php se ha creado."; +$LANG["text_config_file_not_created"] = "No hemos podido crear tu archivo config.php. Tendrás que crearlo manualmente."; +$LANG["text_config_file_not_created_instructions"] = "Copia y pega el contenido de la sección a continuación en un archivo de nombre config.php y cárgalo vía FTP a la carpeta /global del directorio de Form Tools. (Una carpeta que contiene otros directorios y algunos archivos, entre esos uno llamado library.php)."; +$LANG["text_confirm_delete_form"] = "Sí, quiero eliminar esta forma"; +$LANG["text_create_admin_account"] = "Ahora vamos a crear la cuenta del administrador. Se usa para gestionar todos los aspectos administrativos de Form Tools, tales como agregar formularios y la crear cuentas de clientes."; +$LANG["text_create_new_client_account"] = "Utiliza el siguiente formulario para crear una nueva cuenta de cliente. Todos los campos son obligatorios."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "ver la función PHP {\$datefunctionlink} para opciones de formato"; +$LANG["text_default_file_settings_page"] = "Esta página define la configuración de la carga de archivos para tu instalación de Form Tools. Estas normas se aplican a todos los archivos subidos través de Form Tools, a menos que aquellas sean sustituidas explícitamente para un campo de formulario de manera individual. Nota: si cambias la carpeta de carga después de haber subido archivos, estos se moverán automáticamente a la nueva carpeta."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Antes de continuar, tendrá que actualizar su carpeta/themes/default/cache para permitir acceso total de lectura y escritura. Una vez hecho esto, este mensaje desaparecerá y usted podrá instalar la secuencia de comandos."; +$LANG["text_default_values_in_view"] = "Esta sección es opcional. Todas las presentaciones creadas con esta opinión contendrá los valores predeterminados especificados aquí."; +$LANG["text_delete_all_forms"] = "Quiero eliminar todos los archivos subidos a través de esta forma"; +$LANG["text_delete_form_warning"] = "¿Estás seguro que quieres eliminar esta forma? Esta acción no se puede deshacer. ¡Toda la información se perderá permanentemente!"; +$LANG["text_edit_admin_menu_page"] = "Puedes editar tu menú a continuación. Para de que siempre tengas acceso a todas las funcionalidades disponibles de Form Tools, son requeridas las siguientes páginas: Formularios, Clientes, Tu cuenta, Módulos, Configuración y Salir."; +$LANG["text_edit_client_menu_page"] = "Esta sección te permite personalizar la columna de navegación izquierda para cada usuario. Puedes crear tantos menús de cliente como desees y asignarlos a cualquier cuenta. Hay dos menús por defecto: uno para el administrador (tú), y uno para las cuentas de cliente. La cuenta de administrador puede ser modificada, pero no puede ser eliminada."; +$LANG["text_edit_tab_summary"] = "Si usted desea agrupar los campos de esta vista es en pestañas, basta con introducir los nombres de las pestañas de abajo. Después de que hayas terminado, seleccione la ficha correspondiente a cada grupo de campo en la ficha Campos ."; +$LANG["text_edit_view_list_page"] = "Esta ficha Controles de los campos que aparecen como columnas en la página Listado de Presentación, y algunos ajustes adicionales para esos campos. Nota: se recomienda agregar no más de 4 o 5 de los campos más importantes en la vista."; +$LANG["text_email_settings_intro"] = "Esta página te permite identificar cuáles campos de formulario guardan direcciones de correo electrónico y sus nombres correspondientes. Una vez definidos aquí, puedes usarlos en tus plantillas de correo electrónico como destinatarios. Esta sección es totalmente opcional."; +$LANG["text_email_tab_summary"] = "Esta sección te permite crear un número ilimitado de correos electrónicos a enviar una vez sea enviado tu formulario, así como otros desencadenantes posibles."; +$LANG["text_email_template_tab"] = "Esta sección te permite determinar el contenido que aparece en el correo electrónico. Si deseas enviar el correo electrónico únicamente como texto o como correo electrónico, sólo introduce un valor para esa sección. Si introduces un valor para ambos, el correo electrónico será enviado en ambos formatos."; +$LANG["text_email_template_text_1"] = "Se ha hecho un envío hecho a través de tu formulario {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Se ha hecho un envío hecho a través de tu formulario {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "¡Gracias por el envío!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Mensaje de error para mostrar si el campo no pasa la validación"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Las formas externas son formas que ya existen en su sitio web, o en algún lugar de la web. Seleccione esta opción si usted tiene su propia forma que le gustaría integrarse con herramientas de formularios."; +$LANG["text_fields_tab_summary"] = "Esta página enumera todos los campos de formulario. Para controlar la forma en que aparecen cuando las presentaciones de navegación, consulte la ficha Vistas . Eliminar un campo en esta página, se suprimirá a partir de todas las presentaciones, así que por favor ten cuidado!"; +$LANG["text_file_extension_info"] = "Escribe las extensiones de archivos separadas por comas (ej. jpg, gif, png) o deja el campo en blanco para permitir cualquier extensión."; +$LANG["text_file_field_placeholders_info"] = "Campos que contienen archivos utilizan dos variables especiales: FILEURL y FILENAME. FILEURL es el URL en donde se encuentra el archivo, por lo que es factible apuntar a ellos en mensajes de e-mail; FILENAME es tan sólo el nombre del archvio."; +$LANG["text_filters_page"] = "Sólo las propuestas que cumplan con las reglas que definen a continuación aparecerán en esta vista."; +$LANG["text_filters_tips"] = "Para obtener consejos sobre cómo utilizar los filtros de presentación, consulte la documentación del usuario."; +$LANG["text_forgot_password"] = "No hay problema. Sólo tienes que introducir tu nombre de usuario a continuación y su información de acceso será enviado a tu dirección de correo electrónico en archivo. Si usted ha olvidado su nombre de usuario, por favor escriba al administrador del sitio en {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Esta forma contiene uno o más campos para subir archivos."; +$LANG["text_form_placeholder_info"] = "Los siguientes marcadores de posición se puede utilizar en cualquier plantilla de correo electrónico y el campo de marcador de posición lengua, independientemente de lo que ver la plantilla de correo electrónico está asignado. Los marcadores de posición PREGUNTA son la cuestión forma específica, los marcadores de posición de respuesta son las respuestas a cada pregunta."; +$LANG["text_form_submission_date_placeholder"] = "La fecha en que la presentación se hizo."; +$LANG["text_form_tools_form_url"] = "La dirección URL completa de la forma. Esto sólo tiene un valor de forma externa."; +$LANG["text_form_tools_login_url"] = "El URL de la página de ingreso de Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Nota: este formulario tiene actualmente el tipo de acceso de administrador, por lo que ninguna de las cuentas de los clientes serán capaces de ver esta vista."; +$LANG["text_form_view_permission_info_private"] = "Nota: este formulario tiene actualmente el tipo de acceso privado para las opciones públicas y privadas aquí se limitará a ese subconjunto de clientes."; +$LANG["text_ft_installed"] = "Felicidades, Formulario de Herramientas ha sido instalado con éxito!"; +$LANG["text_global_placeholder_info"] = "Estas variables pueden ser utilizadas en cualquier plantilla de este formulario."; +$LANG["text_group_name_explanation"] = "Para los campos de agregar a través del proceso Añadir Forma, este valor es pre-cargada a la pantalla de texto de cualquier campo utiliza el valor. Es posible que desee cambiar para caracterizar mejor los contenidos."; +$LANG["text_install_create_config_file"] = "Formulario de tiendas de herramientas y la configuración de su servidor de base de datos en un archivo llamado config.php, que se encuentra en su / global / carpeta. Haga clic en "Crear archivo" para generar automáticamente el archivo en su servidor."; +$LANG["text_install_create_database_tables"] = "Ahora vamos a crear las tablas de base de datos Formulario de Herramientas. Este paso requiere la misma base de datos ya se han creado. Si no estás seguro de cómo hacerlo, por favor, póngase en contacto con su proveedor de hosting."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" generalmente significa que el nombre que proporcionó es incorrecta. Tal vez intente establecer esto a "localhost" - esta es una forma común para referirse a la base de datos "local" en un servidor web."; +$LANG["text_install_db_tables_error_tip_2"] = ""No se puede conectar al servidor MySQL local a través de socket" significa que el campo de base de datos es de nuevo el nombre de host incorrecto."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" significa que hay un problema con su combinación de usuario / contraseña."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... a la base de datos ..." significa que, aunque su nombre de usuario y contraseña que proporcionó es correcta, no se pudo conectar a la base de datos especial con que cuenta. Esto puede significar que o bien su nombre de base de datos es incorrecto, o que esta cuenta de usuario no está asociado con la base de datos."; +$LANG["text_install_email_content_text"] = "Hay muchos recursos en nuestro sitio web para ayudarlo a comenzar, incluida nuestra documentación en línea (https://docs.formtools.org) y tutoriales (https://docs.formtools.org/tutorials). Si encuentras que te quedas atascado o tienes una pregunta, haz una pregunta en github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Lo sentimos, herramientas de forma que no será capaz de ejecutar en el servidor. Por favor, haga clic aquí para los requisitos mínimos."; +$LANG["text_install_system_check"] = "Esta página se ejecuta algunas pruebas en su sistema para asegurarse de que es capaz de ejecutar herramientas de formulario."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Formas internas sólo existen en herramientas de forma - no en otras partes de su sitio. Sólo herramientas Formulario cuentas de usuario tendrá acceso a la forma. Seleccione esta opción si usted no tiene un formulario existente."; +$LANG["text_internal_form_intro"] = "Utilice el formulario a continuación para crear una forma Interna. Todos los ámbitos, incluyendo el número y el contenido de los campos del formulario se puede modificar y configurar más tarde."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Para poder iniciar sesión y usar Form Tools debes habilitar Javascript en tu explorador. Por favor habilítalo y actualiza la página."; +$LANG["text_last_modified_date_explanation_c"] = "La última vez que esta petición ha sido modificado. Para las presentaciones de nuevo, esta es la misma:"; +$LANG["text_limit_email_content_desc"] = "Esta opción sólo funciona para contenido HTML y texto generado con Loops Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(sólo las listas de Vista con uno o más filtros definidos)"; +$LANG["text_log_in_to_ft"] = "Entra en el Formulario Herramientas"; +$LANG["text_login"] = "Inicia sesión a continuación para acceder al Panel de Administración de {\$program_name}. Si has olvidado tu contraseña, haz clic aquí."; +$LANG["text_login_info"] = "Como fue pedido, aquí está tu información de inicio de sesión."; +$LANG["text_name_of_form"] = "El nombre del formulario."; +$LANG["text_no_clients"] = "Actualmente no hay clientes en la base de datos. Para añadir un cliente nuevo, da clic en el botón Añadir Cliente."; +$LANG["text_no_clients_found"] = "No se han encontrado clientes. Intente ampliar sus criterios de búsqueda."; +$LANG["text_no_fields_in_view"] = "Esta opinión no tiene ningún campo en el mismo. Haga clic en el enlace de abajo."; +$LANG["text_no_forms"] = "Actualmente no hay formas en las base de datos. Para añadir una forma nueva, da clic en el botón Añadir Forma."; +$LANG["text_no_forms_found"] = "No se han encontrado formas."; +$LANG["text_no_forms_found_search"] = "No se han encontrado formas. Intenta alargar los criterios de búsqueda."; +$LANG["text_no_modules_found"] = "No se encontraron módulos. Intente ampliar sus criterios de búsqueda."; +$LANG["text_no_recipients_added"] = "No beneficiarios han sido añadidas."; +$LANG["text_no_search_results"] = "No hay resultados con este criterio de búsqueda / View."; +$LANG["text_no_submissions_found"] = "Mil disculpas, no hay se encontraron envíos."; +$LANG["text_no_themes"] = "Usted no tiene ninguna temas definidos. Haga clic en el botón de abajo para actualizar su lista de temas, o comprobar la documentación del Formulario de herramientas de usuario para obtener información sobre cómo agregar temas."; +$LANG["text_non_deletable_fields"] = "Este campo es utilizado por el guión básico y no puede ser editado o borrado sin causar incompatibilidades. Si desea realizar cambios en el tipo de campo, hacer una copia de la misma y editar la copia."; +$LANG["text_option_list_group_explanation"] = "Si esta opción está activada, permite al grupo de sus opciones. Cómo los grupos que se muestran depende del tipo de campo con esta lista de opciones."; +$LANG["text_option_list_page"] = "Los botones de opción, casillas de verificación, menús desplegables y seleccionar varios campos desplegables todos ofrecen al usuario varias opciones de las que puede seleccionar uno o más elementos. En las herramientas de forma, éstos se conocen como listas de opciones. En general, estos son creados automáticamente por el formulario de nuestro widget de proceso, pero puede agregar manualmente o editar las listas de las siguientes opciones, si cambia el contenido del formulario, o la construcción de campos que sólo se utilizan internamente."; +$LANG["text_option_list_used_by_fields"] = "Esta lista de opciones es utilizado por los campos de formulario. Si se actualiza la información de abajo, se va a cambiar para todos los campos (ver Campos de formulario ficha para ver la lista de campos). Si desea actualizar los valores de uno, o un subconjunto de los campos que están asignados, haga clic aquí para crear una lista de opciones nuevas con los mismos valores como éste. A continuación, puede asignar los campos del formulario que desea al nuevo grupo."; +$LANG["text_public_form_omit_list_page"] = "Formas públicas darle el beneficio de permitir que todas las cuentas de los clientes acceder a ellos sin tener que asignar manualmente a cada cliente para ellos. Esta página le permite identificar a aquellos clientes que no pueden acceder a este formulario, aunque la forma sea considerada pública."; +$LANG["text_public_view_omit_list_page"] = "Vistas Públicas darle el beneficio de permitir que todas las cuentas de los clientes acceder a ellos sin tener que asignar manualmente a cada cliente para ellos. Esta página le permite identificar a aquellos clientes que no pueden acceder a esta vista en particular."; +$LANG["text_reference_tab_info"] = "Esta página muestra todos los marcadores de posición para el formulario. Marcadores de posición son palabras que pueden ser utilizados en las plantillas de correo electrónico, y los campos marcados con un icono de marcador de posición especial . Cuando se introduce en un campo, se convierte de forma dinámica en el valor adecuado cuando el campo se ve o el correo electrónico enviado."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Revise la documentación de usuario"; +$LANG["text_send_email_from_edit_submission_page"] = "Incluir la opción de enviar un correo electrónico de edición de la página de presentación"; +$LANG["text_smart_fill_option_list_problem"] = "No hemos podido Relleno inteligente sus opciones de campo. Sin embargo, como alternativa, puede intentar cargar una copia de su página de formulario en el campo de abajo. Nota: no cargar primas páginas PHP (u otro código de servidor) - acaba de cargar la version de HTML. Para conseguir esto, ver y guardar la página desde su navegador web."; +$LANG["text_submission_ip_address"] = "La dirección IP del usuario que haga la presentación."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Utilice el formulario a continuación para ver o enviamos un correo electrónico generado por esta plantilla de correo electrónico. El correo electrónico sólo se envía al correo electrónico se indican a continuación, el principal, CC y CCO beneficiarios dirección de correo electrónico son ignorados durante las pruebas."; +$LANG["text_test_email_templates_no_submissions"] = "Para hacer pruebas con las plantillas de e-mail, es necesario recibir por lo menos un envío del formulario."; +$LANG["text_theme_page_intro"] = "Esta página muestra todos sus temas. Haga clic en una miniatura para ver un ejemplo más de los estilos del tema. El "activado" casilla de verificación determina si o no que el tema puede ser seleccionado por los clientes. Para navegar por todos los temas disponibles, visite el sitio web Formulario de Herramientas."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Agregar su primera forma!"; +$LANG["text_unique_submission_id"] = "El ID del envío."; +$LANG["text_unused_option_list"] = "Esta lista de opciones no está siendo utilizado por cualquiera de los campos de formulario."; +$LANG["text_upgraded"] = "Su instalación se ha actualizado a {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Esta lista de opciones es utilizada por los siguientes campos."; +$LANG["text_view_fields_info"] = "Esta ficha controla los campos que aparecen cuando se edita una presentación en esta vista, el orden y si se pueden modificar o no."; +$LANG["text_view_tab_summary"] = "Esta pestaña le permite crear diferentes formas de agrupar y organizar los datos. Puntos de vista le permiten crear subconjuntos personalizados de los datos de forma que se divide en partes manejables, y para limitar lo que los clientes pueden ver o editar."; +$LANG["validation_account_disabled"] = "Mil disculpas, tu cuenta ha sido deshabilitada."; +$LANG["validation_account_not_recognized"] = "Mil disculpas, no reconocemos el nombre de usuario."; +$LANG["validation_account_not_recognized_info"] = "Mil disculpas, no se encontró el nombre de usuario. Favor de intentar de nuevo, o contactar al administrador del sistema a la dirección de abajo."; +$LANG["validation_account_pending"] = "Su cuenta de usuario está pendiente de aprobación por un administrador."; +$LANG["validation_check_delete_client"] = "¿Seguro que deseas eliminar la cuenta de éste cliente?"; +$LANG["validation_client_password_missing_number"] = "La contraseña de cliente debe contener al menos un número (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "La contraseña de cliente debe contener al menos uno de los siguientes caracteres: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "La contraseña de cliente debe contener al menos una letra mayúscula."; +$LANG["validation_client_password_too_short"] = "La contraseña de cliente necesita ser por lo menos {\$number} caracteres."; +$LANG["validation_col_name_is_reserved_word"] = "Lo sentimos, este nombre de columna de base de datos es un trabajo reservado en MySQL. Por favor, cambie su nombre!"; +$LANG["validation_db_name"] = "Los nombres de las bases de datos no pueden contener puntos o barras."; +$LANG["validation_db_not_updated_invalid_input"] = "La base de datos no pudo ser actualizada. Favor de verificar que los valores ingresados son correctos."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Lo sentimos, el administrador por defecto y los temas cliente siempre debe estar activado."; +$LANG["validation_default_phone_num_required"] = "Por favor, rellene el número de teléfono completo para el <b> { \$ campo} </ b> - sólo números."; +$LANG["validation_default_rule_alpha"] = "Por favor, sólo escribir letras y números para la <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Por favor, introduzca las letras sólo para el <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Por favor, sólo introducir los números de la <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_required"] = "Por favor, introduzca un valor para el <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Por favor, introduzca una dirección de correo electrónico válida para el <b> { \$ campo} </ b>."; +$LANG["validation_delete_form_confirm"] = "Por favor, marque la casilla para confirmar que desea eliminar este formulario."; +$LANG["validation_delete_non_empty_option_list"] = "¡Advertencia! Esta lista se utiliza la opción por uno o más campos de formulario. Eliminar hará los campos dejan de funcionar correctamente."; +$LANG["validation_display_names_incomplete"] = "Por favor, introduzca un valor para todos los nombres de pantalla, o haga clic en la opción Smart Fill para entrar en ellos de forma dinámica."; +$LANG["validation_duplicate_form_field_name"] = "No se puede tener varios campos con el mismo nombre de campo."; +$LANG["validation_email_not_found_or_invalid"] = "Lo sentimos, el correo electrónico asociada a su cuenta, o no existe o no es válida."; +$LANG["validation_folder_invalid_permissions"] = "Para ejecutar esta prueba, la carpeta que recibirá los archivos de subida necesita tener permisos para leer y editar archvios (CHMOD 777 en Unix)."; +$LANG["validation_folder_not_writable"] = "Esta carpeta no es editable."; +$LANG["validation_internal_form_too_many_fields"] = "Lo sentimos, sólo se pueden crear formularios con campos de 1000 o menos."; +$LANG["validation_invalid_admin_email"] = "Por favor introduce la dirección de correo electrónico de un adminstrator válida."; +$LANG["validation_invalid_admin_username"] = "Su nombre de usuario sólo puede consistir de caracteres alfanuméricos (AZ y 0-9)."; +$LANG["validation_invalid_client_username"] = "Nombre de usuario, el cliente sólo puede consistir de caracteres alfanuméricos (AZ y 0-9)."; +$LANG["validation_invalid_client_username2"] = "Lo sentimos, nombre de usuario sólo puede contener letras, números y el carácter de subrayado. Por favor, introduzca un nombre de usuario nuevo."; +$LANG["validation_invalid_column_name"] = "Nombres de las columnas sólo pueden ser alfanuméricos (AZ, 0-9). Por favor, compruebe los nombres de columna."; +$LANG["validation_invalid_custom_from_email"] = "Por favor, introduzca una costumbre válida "De:" Dirección de correo electrónico."; +$LANG["validation_invalid_custom_reply_to_email"] = "Por favor, introduzca una costumbre válida "Responder a" dirección de correo electrónico."; +$LANG["validation_invalid_default_sessions_timeout"] = "Por favor, introduzca un valor válido (un número) para el tiempo de espera de las sesiones de forma predeterminada."; +$LANG["validation_invalid_email"] = "Favor de ingresar una dirección de correo electrónica válida."; +$LANG["validation_invalid_email_id"] = "Lo siento, eso es un correo electrónico válido de identificación."; +$LANG["validation_invalid_folder"] = "Lo sentimos, esta no parece ser una carpeta válida."; +$LANG["validation_invalid_form_field_names"] = "Los campos de formulario sólo podrá ser alfanuméricos y de subrayado (AZ, 0-9, _), sin espacios."; +$LANG["validation_invalid_num_clients_per_page"] = "Favor de sólo ingresar números en el campo de Núm. de Clientes por Página."; +$LANG["validation_invalid_num_emails_per_page"] = "Por favor, introduzca los dígitos sólo para los correos electrónicos por página."; +$LANG["validation_invalid_num_form_fields"] = "Por favor, sólo introducir los números en el campo Número de campos."; +$LANG["validation_invalid_num_forms_per_page"] = "Favor de sólo ingresar números en el campo de Núm. de Formularios por Página."; +$LANG["validation_invalid_num_menus_per_page"] = "Por favor, sólo introducir dígitos para los menús en cada página."; +$LANG["validation_invalid_num_modules_per_page"] = "Por favor, introduzca sólo números en los módulos de Número de votos por campo de página."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Por favor, sólo introducir los números en las listas de Num opción por el campo de página."; +$LANG["validation_invalid_num_submissions_per_page"] = "Favor de ingresar un número válido de envíos por página."; +$LANG["validation_invalid_sessions_timeout"] = "Por favor, introduzca un tiempo de espera de sesión válido (enteros solamente!)."; +$LANG["validation_invalid_tab_assign_values"] = "Por favor, introduzca sólo números en el campo 'De' y 'a' campos."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "De instalación de su servidor de PHP tiene una configuración no válida para el valor de upload_tmp_dir. "{\$upload_folder}" no es una carpeta válida."; +$LANG["validation_invalid_url"] = "Por favor, introduzca una URL válida."; +$LANG["validation_invalid_username"] = "Su nombre de usuario sólo puede consistir en caracteres alfanuméricos (AZ y 0-9)."; +$LANG["validation_is_form_active"] = "Favor de indicar si el formulario estará activos o no."; +$LANG["validation_menu_name_taken"] = "Lo sentimos, el nombre del menú está ya tomada. Por favor, elija un nuevo nombre."; +$LANG["validation_modules_search_no_status"] = "Por favor, seleccione las casillas de verificación activado o desactivado."; +$LANG["validation_no_access_type"] = "Por favor, introduzca el tipo de acceso."; +$LANG["validation_no_account_logout_url"] = "Por favor, introduzca su URL cerrar la sesión."; +$LANG["validation_no_account_password_confirmed"] = "Por favor, vuelva a introducir su nueva contraseña."; +$LANG["validation_no_account_password_confirmed2"] = "Vuelva a introducir la nueva contraseña."; +$LANG["validation_no_admin_email"] = "Por favor, introduzca la dirección de correo electrónico del administrador."; +$LANG["validation_no_admin_theme"] = "Por favor seleccione el tema de la cuenta de administrador."; +$LANG["validation_no_admin_theme_swatch"] = "Por favor, seleccione una muestra para el tema de administrador."; +$LANG["validation_no_client_email"] = "Por favor, introduzca la dirección de correo electrónico del cliente."; +$LANG["validation_no_client_first_name"] = "Por favor, introduzca el primer nombre del cliente."; +$LANG["validation_no_client_last_name"] = "Por favor, introduzca el apellido del cliente."; +$LANG["validation_no_client_login_page"] = "Por favor, indique que la página del cliente debe ser redirigido a cuando inician la sesión in"; +$LANG["validation_no_client_password"] = "Por favor, introduzca la contraseña del cliente."; +$LANG["validation_no_client_theme_swatch"] = "Por favor, seleccione una muestra por defecto para las cuentas de cliente."; +$LANG["validation_no_client_username"] = "Por favor, introduzca nombre de usuario del cliente."; +$LANG["validation_no_column_name"] = "Por favor, introduzca todos los nombres de las columnas, o haga clic en el botón Relleno inteligente que automáticamente llenar."; +$LANG["validation_no_column_selected"] = "Por favor, seleccione al menos un campo a aparecer como una columna en la página del anuncio de la presentación."; +$LANG["validation_no_custom_from_email"] = "Por favor, introduzca la costumbre "De:" Dirección de correo electrónico."; +$LANG["validation_no_custom_recipient_email"] = "Por favor, introduzca la dirección del receptor de correo electrónico personalizadas."; +$LANG["validation_no_custom_reply_to_email"] = "Por favor, introduzca la costumbre "Responder a" dirección de correo electrónico."; +$LANG["validation_no_date_format"] = "Favor de ingresar el formato para fechas."; +$LANG["validation_no_db_column_single"] = "Por favor, introduzca el nombre de la columna de base de datos."; +$LANG["validation_no_db_hostname"] = "Por favor, introduzca la base de datos el nombre de host."; +$LANG["validation_no_db_name"] = "Por favor, introduzca el nombre de base de datos."; +$LANG["validation_no_db_username"] = "Por favor, introduzca el nombre de usuario de base de datos."; +$LANG["validation_no_default_client_theme"] = "Por favor seleccione el tema por defecto para todas las nuevas cuentas de clientes."; +$LANG["validation_no_default_language"] = "Favor de ingresar el idioma por defecto para la instalación de Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Por favor introduce el período de tiempo de espera predeterminado para las cuentas de usuario."; +$LANG["validation_no_display_text"] = "Por favor, introduzca el texto de presentación para cada campo."; +$LANG["validation_no_display_text_single"] = "Por favor, introduzca el valor de texto en pantalla."; +$LANG["validation_no_edit_submission_page_label"] = "Por favor, introduzca la etiqueta de la página de presentación de edición."; +$LANG["validation_no_email"] = "Favor de ingresar tu dirección de correo."; +$LANG["validation_no_email_config_field"] = "Por favor, especifique que tipo de campo es el campo de correo electrónico."; +$LANG["validation_no_email_content"] = "Por favor introduce el contenido del correo electrónico para al menos uno de los formatos (HTML o texto)."; +$LANG["validation_no_email_from_field"] = "Por favor especifica el campo \"de:\"."; +$LANG["validation_no_email_template_name"] = "Por favor introduce el nombre de la plantilla de correo electrónico."; +$LANG["validation_no_email_template_view_id"] = "Por favor, selecciona la vista para la cuál esta plantilla de correo electrónico debe ser asignada."; +$LANG["validation_no_email_template_view_mapping_value"] = "Por favor indica cuándo debe ser enviado el mensaje."; +$LANG["validation_no_enabled_themes"] = "Asegúrese de que está habilitado por lo menos un tema."; +$LANG["validation_no_first_name"] = "Favor de ingresar tu nombre."; +$LANG["validation_no_form_field_name"] = "Por favor, introduzca todos los nombres de los campos de formulario."; +$LANG["validation_no_form_field_single"] = "Por favor, introduzca el valor de campo de formulario."; +$LANG["validation_no_form_id"] = "La ID del formulario no fue especificada. Favor de salir del sistema e intentar de nuevo."; +$LANG["validation_no_form_name"] = "Favor de ingresar el nombre del formulario."; +$LANG["validation_no_form_url"] = "Favor de ingresar el URL del formulario."; +$LANG["validation_no_last_name"] = "Favor de ingresar tu apellido."; +$LANG["validation_no_login_page"] = "Por favor, indica la página a la que deseas llegar cada vez que inicies sesión."; +$LANG["validation_no_logout_url"] = "Por favor escribe el URL de salida."; +$LANG["validation_no_main_email_recipient"] = "Por favor, escribe al menos un destinatario de correo electrónico principal (es decir, no un CC o CCO)."; +$LANG["validation_no_menu"] = "Por favor, selecciona un menú para esta cuenta de usuario."; +$LANG["validation_no_menu_id"] = "Por favor, selecciona un menú."; +$LANG["validation_no_num_clients_per_page"] = "Por favor escribe el número de cuentas de cliente por página."; +$LANG["validation_no_num_emails_per_page"] = "Por favor, escribe el número de mensajes de correo electrónico a mostrar por página."; +$LANG["validation_no_num_form_fields"] = "Por favor, introduzca el número de campos del formulario."; +$LANG["validation_no_num_forms_per_page"] = "Por favor de escribe el número de formularios por página."; +$LANG["validation_no_num_menus_per_page"] = "Por favor, escribe el número de menús a mostrar por página."; +$LANG["validation_no_num_modules_per_page"] = "Por favor, escribe el número de módulos por página."; +$LANG["validation_no_num_option_lists_per_page"] = "Por favor, introduzca el número de listas de opciones en cada página."; +$LANG["validation_no_num_submissions_per_page"] = "Por favor escribe el número de envíos a mostrar por página."; +$LANG["validation_no_option_list_name"] = "Por favor, introduzca el nombre de la lista de opciones."; +$LANG["validation_no_page_titles"] = "Por favor, escribe los títulos de página por defecto para las cuentas de usuario."; +$LANG["validation_no_password"] = "Por favor escribe tu contraseña."; +$LANG["validation_no_program_name"] = "Por favor escribe el nombre de programa."; +$LANG["validation_no_second_password"] = "Por favor, vuelva a introducir su contraseña."; +$LANG["validation_no_sessions_timeout"] = "Por favor, escribe el tiempo de espera de sesión."; +$LANG["validation_no_smart_fill_values"] = "Por favor, escribe el nombre de campo de formulario y el URL del formulario."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "No hay pestañas definidas"; +$LANG["validation_no_test_email_recipient"] = "Por favor, escribe la dirección de correo electrónico de donde debemos enviar el correo electrónico de prueba."; +$LANG["validation_no_test_email_submission_id"] = "Por favor, escribe el número de identificación del envío."; +$LANG["validation_no_theme"] = "Por favor, escoje un tema."; +$LANG["validation_no_theme_swatch"] = "Por favor, seleccione una muestra del tema seleccionado."; +$LANG["validation_no_timezone_offset"] = "Por favor, escoje la zona horaria."; +$LANG["validation_no_titles"] = "Por favor escribe los títulos de página."; +$LANG["validation_no_two_column_names"] = "Lo sentimos, no puedes escribir dos veces el mismo nombre de columna."; +$LANG["validation_no_ui_language"] = "Por favor, selecciona un idioma para la interfaz."; +$LANG["validation_no_url"] = "Por favor, escribe una dirección URL."; +$LANG["validation_no_username"] = "Por favor escribe tu nombre de usuario."; +$LANG["validation_no_username_or_js"] = "Debes escribir tu nombre de usuario. Por favor activa JavaScript en tu navegador."; +$LANG["validation_no_view_fields"] = "¡Tu vista actual no contiene ningún campo! Debes asignar al menos un campo para que haya algo que mostrar en la vista actual."; +$LANG["validation_no_view_fields_selected"] = "Por favor, selecciona uno o más campos para añadir a la vista."; +$LANG["validation_no_view_name"] = "Por favor, escribe el nombre de la vista."; +$LANG["validation_num_rows_to_add"] = "Por favor escribe el número de columnas a añadir."; +$LANG["validation_option_list_name_taken"] = "Lo sentimos, este nombre de la lista de opciones ya está tomada. Por favor, elija un nuevo nombre."; +$LANG["validation_password_in_password_history"] = "Para mayor seguridad, no se puede introducir la misma contraseña como cualquiera de los últimos {\$history_size} contraseñas. Por favor, introduzca una contraseña diferente."; +$LANG["validation_passwords_different"] = "Por favor revisa que ambas contraseñas sean idénticas."; +$LANG["validation_please_enter_search_date_range"] = "Por favor especifica el rango de fechas a buscar."; +$LANG["validation_please_enter_search_keyword"] = "Por favor especifica la palabra clave a buscar."; +$LANG["validation_select_field_type"] = "Por favor, selecciona un tipo de campo."; +$LANG["validation_select_submissions_to_copy"] = "Seleccione los envíos que desea copiar."; +$LANG["validation_select_submissions_to_delete"] = "Por favor selecciona los envíos que deseas eliminar."; +$LANG["validation_smart_fill_cannot_fill"] = "Lo sentimos, no pudimos llenar este campo."; +$LANG["validation_smart_fill_invalid_field_type"] = "No hemos podido localizar un campo, pero no es un menú desplegable, casilla de verificación o grupo selección."; +$LANG["validation_smart_fill_no_field_found"] = "Lo sentimos, no hemos podido encontrar un campo de formulario con ese nombre, en la página especificada."; +$LANG["validation_smart_fill_no_page"] = "Por favor, busca la página que contiene el campo que deseas llenar con Autocompletar."; +$LANG["validation_smart_fill_upload_all_pages"] = "Por favor, carga todas las páginas de tu formulario."; +$LANG["validation_upload_folder_not_writable"] = "Esta carpeta temporal para recibir archivos, especificada por la instalación PHP del servidor, no permite la escritura. Si esto persiste, Form Tools (o cualquier otro programa) no podrá subir archivos allí. Por favor contacta tu proveedor de hospedaje o modifica los permisos de dicha carpeta."; +$LANG["validation_upload_html_files_only"] = "Por favor, carga únicamente archivos HTML."; +$LANG["validation_username_taken"] = "Lo sentimos, este nombre de usuario ya está en uso. Por favor de escoje uno distinto."; +$LANG["validation_wrong_password"] = "Lo sentimos, la contraseña no es correcta."; +$LANG["word_about"] = "Acerca de"; +$LANG["word_access"] = "Acceso"; +$LANG["word_account"] = "Cuenta"; +$LANG["word_account_sp"] = "Cuenta(s)"; +$LANG["word_accounts"] = "Cuentas"; +$LANG["word_action"] = "Acción"; +$LANG["word_active"] = "Activo"; +$LANG["word_add"] = "Añadir"; +$LANG["word_add_rightarrow"] = "Añadir »"; +$LANG["word_add_uc_rightarrow"] = "Añadir »"; +$LANG["word_administration"] = "Administración"; +$LANG["word_administrator"] = "Administrador"; +$LANG["word_after"] = "Después de"; +$LANG["word_aquamarine"] = "Aguamarina"; +$LANG["word_asc"] = "ASC"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«volver"; +$LANG["word_bcc_c"] = "CCO:"; +$LANG["word_before"] = "Antes de"; +$LANG["word_benefits"] = "Beneficios"; +$LANG["word_blue"] = "Azul"; +$LANG["word_cancel"] = "Cancelar"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Casillas de verificaciónrnCasillas de verificación"; +$LANG["word_checklist"] = "Lista de verificación"; +$LANG["word_client"] = "Cliente"; +$LANG["word_client_c"] = "Cliente:"; +$LANG["word_clients"] = "Clientes"; +$LANG["word_close"] = "Cerrar"; +$LANG["word_code"] = "Código"; +$LANG["word_column"] = "Columna"; +$LANG["word_columns"] = "Columnas"; +$LANG["word_columns_sp"] = "Columna (s)"; +$LANG["word_complete"] = "Completo"; +$LANG["word_configuration"] = "Configuración"; +$LANG["word_content"] = "Contenido"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continuar »"; +$LANG["word_copy"] = "Dupdo"; +$LANG["word_custom"] = "Personalizado"; +$LANG["word_data"] = "Datos"; +$LANG["word_date"] = "Fecha"; +$LANG["word_debugging_c"] = "Depuración:"; +$LANG["word_delete"] = "Borrar"; +$LANG["word_desc"] = "DESC"; +$LANG["word_direct"] = "Directo"; +$LANG["word_disabled"] = "Deshabilitado"; +$LANG["word_documentation"] = "Documentación"; +$LANG["word_done"] = "Hecho"; +$LANG["word_drawbacks"] = "Desventajas"; +$LANG["word_dropdown"] = "Lista desplegable"; +$LANG["word_edit"] = "Editar"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Correo Electrónico"; +$LANG["word_email_c"] = "Correo-e:"; +$LANG["word_emails"] = "Correos-e"; +$LANG["word_enabled"] = "Habilitado"; +$LANG["word_equals"] = "Es igual a"; +$LANG["word_error"] = "Error"; +$LANG["word_error_c"] = "Error:"; +$LANG["word_examples_c"] = "Ejemplos:"; +$LANG["word_external"] = "Externo"; +$LANG["word_fail"] = "No aprobado"; +$LANG["word_field"] = "Campo"; +$LANG["word_field_sp"] = "Campo(s)"; +$LANG["word_fields"] = "Campos"; +$LANG["word_fields_sp"] = "Campo (s)"; +$LANG["word_file"] = "Archivo"; +$LANG["word_file_b_uc"] = "[ARCHIVO]"; +$LANG["word_files"] = "Archivos"; +$LANG["word_filters"] = "Filtros"; +$LANG["word_filters_sp"] = "Filtro (s)"; +$LANG["word_for"] = "para"; +$LANG["word_form"] = "Formulario"; +$LANG["word_form_c"] = "Formulario:"; +$LANG["word_formatting"] = "Formato"; +$LANG["word_forms"] = "Formularios"; +$LANG["word_found"] = "Encontrado"; +$LANG["word_from"] = "De"; +$LANG["word_from_c"] = "De:"; +$LANG["word_general"] = "General"; +$LANG["word_green"] = "Verde"; +$LANG["word_grey"] = "Gris"; +$LANG["word_height"] = "Altura"; +$LANG["word_help"] = "Ayuda"; +$LANG["word_hidden"] = "Oculto"; +$LANG["word_highlight"] = "Destacar"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Hora"; +$LANG["word_hours"] = "Horas"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Imagen"; +$LANG["word_incomplete"] = "Incompleto"; +$LANG["word_install"] = "Instale"; +$LANG["word_installation"] = "Instalación"; +$LANG["word_internal"] = "Interno"; +$LANG["word_language"] = "Idioma"; +$LANG["word_large"] = "Grande"; +$LANG["word_like"] = "Como = meaning equals to. Gustar, Gustaría, Gusta, Gusto = meaning I Like."; +$LANG["word_login"] = "INICIO"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Cerrar sesión"; +$LANG["word_main"] = "Principal"; +$LANG["word_medium"] = "Medio"; +$LANG["word_menu"] = "Menú"; +$LANG["word_menus"] = "Menús"; +$LANG["word_minutes"] = "minutos"; +$LANG["word_misc"] = "Varios"; +$LANG["word_module"] = "Módulo"; +$LANG["word_modules"] = "Módulos"; +$LANG["word_na"] = "N/A"; +$LANG["word_name"] = "Nombre"; +$LANG["word_name_c"] = "Nombre:"; +$LANG["word_never"] = "Nunca"; +$LANG["word_next_rightarrow"] = "Siguiente »"; +$LANG["word_next_step_rightarrow"] = "Paso siguiente »"; +$LANG["word_no"] = "No"; +$LANG["word_none"] = "Ninguno"; +$LANG["word_notes"] = "Notas"; +$LANG["word_notification"] = "Notificación"; +$LANG["word_number"] = "Número"; +$LANG["word_off"] = "Apagado"; +$LANG["word_offline"] = "Desconectado"; +$LANG["word_okay"] = "Bueno"; +$LANG["word_on"] = "Encendido"; +$LANG["word_online"] = "En Línea"; +$LANG["word_operator"] = "Operador"; +$LANG["word_options"] = "Opciones"; +$LANG["word_orange"] = "Naranja"; +$LANG["word_order"] = "Orden"; +$LANG["word_other"] = "Otro"; +$LANG["word_other_c"] = "Otros:"; +$LANG["word_page"] = "Página"; +$LANG["word_page_c"] = "Página:"; +$LANG["word_pass"] = "Aprobado"; +$LANG["word_password"] = "Contraseña"; +$LANG["word_password_c"] = "Contraseña:"; +$LANG["word_pending"] = "Pendiente"; +$LANG["word_permissions"] = "Autorizaciones"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«anterior"; +$LANG["word_private"] = "Privado"; +$LANG["word_public"] = "Pública"; +$LANG["word_purple"] = "Púrpura"; +$LANG["word_recipient"] = "Destinatario"; +$LANG["word_recipient_sp"] = "Destinatario(s)"; +$LANG["word_red"] = "Rojo"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Eliminar"; +$LANG["word_remove_uc_leftarrow"] = "«Eliminar"; +$LANG["word_reply_to"] = "Responder a"; +$LANG["word_reply_to_c"] = "Responder a:"; +$LANG["word_required"] = "Necesario"; +$LANG["word_reset"] = "Borrar"; +$LANG["word_resolved"] = "Descifrado"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "fila"; +$LANG["word_search"] = "Buscar"; +$LANG["word_searchable"] = "Disponible para búsqueda"; +$LANG["word_select"] = "Seleccione"; +$LANG["word_setting"] = "Opción"; +$LANG["word_settings"] = "Ajustes"; +$LANG["word_show"] = "Mostrar"; +$LANG["word_size"] = "Tamaño"; +$LANG["word_skipped"] = "Omitido"; +$LANG["word_small"] = "Pequeño"; +$LANG["word_solution"] = "Solución"; +$LANG["word_sortable"] = "Ordenable"; +$LANG["word_start"] = "Comienzo"; +$LANG["word_status"] = "Estado"; +$LANG["word_string"] = "Cadena"; +$LANG["word_subject"] = "Asunto"; +$LANG["word_subject_c"] = "Asunto"; +$LANG["word_submenu"] = "Submenú"; +$LANG["word_submission"] = "Envío"; +$LANG["word_submissions"] = "Envíos"; +$LANG["word_system"] = "Sistema"; +$LANG["word_tab"] = "Pestaña"; +$LANG["word_tabs"] = "Pestañas"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Prueba"; +$LANG["word_text"] = "Texto"; +$LANG["word_textarea"] = "Área de texto"; +$LANG["word_textbox"] = "Cuadro de texto"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temas"; +$LANG["word_time"] = "Tiempo"; +$LANG["word_tiny"] = "Diminuto"; +$LANG["word_tips"] = "Consejos"; +$LANG["word_today"] = "Hoy"; +$LANG["word_truncate_q"] = "Truncar?"; +$LANG["word_uninstall"] = "Desinstalar"; +$LANG["word_unknown"] = "Desconocido"; +$LANG["word_update"] = "Actualización"; +$LANG["word_upgrade"] = "Actualizar"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Usuario"; +$LANG["word_username"] = "Usuario"; +$LANG["word_username_c"] = "Usuario:"; +$LANG["word_validation"] = "Validación"; +$LANG["word_value"] = "Valor"; +$LANG["word_value_sp"] = "Valor(es)"; +$LANG["word_verified"] = "Verificado"; +$LANG["word_verify"] = "Verificar"; +$LANG["word_version"] = "Versión"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Vista"; +$LANG["word_views"] = "Vistas"; +$LANG["word_warning"] = "¡Advertencia!"; +$LANG["word_warning_c"] = "Advertencia:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Bienvenido!"; +$LANG["word_width_c"] = "ancho:"; +$LANG["word_words"] = "Palabras"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Amarillo"; +$LANG["word_yes"] = "Sí"; \ No newline at end of file diff --git a/global/lang/et.php b/global/lang/et.php new file mode 100644 index 00000000..dc1f3149 --- /dev/null +++ b/global/lang/et.php @@ -0,0 +1,1219 @@ +Hoiatus!
    Te valistite {\$num_selected_on_page} ettepanekuid selle lehe ja {\$num_selected_on_other_pages} teistel lehekülgedel. Palun valige üks järgmistest valikutest:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Hoiatus! Sa ei ole valitud ühtegi tõendust selle lehe, kuid olete valinud {\$num_selected_on_other_pages} teistel lehekülgedel. Kinnitage, et soovite kustutada need esildised.
    "; +$LANG["confirm_delete_view"] = "Kas olete kindel, et soovite kustutada selle seisukohaga?"; +$LANG["confirm_refresh_page"] = "Oled sa kindel, et soovite värskenda lehekülge? See kaotate kõik muudatused, mida olete teinud."; +$LANG["confirm_save_change_before_redirect"] = "Ühel või mitmel väljal on ajakohastatud. Kas soovite muudatused salvestada enne suunata?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Oled sa kindel, et tahad Smart Täida andmebaasi veerg nimed? See kirjutatakse oma olemasolevaid väärtusi."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "See valik auto-genereerib andmebaasi veerunimesid põhineb Kuvatekst valdkondades, nii sisu andmebaasi tabelisse on lihtsam lugeda."; +$LANG["confirm_smart_fill_display_names"] = "Oled sa kindel, et tahad Smart Täida Näita nimed? See kirjutatakse oma olemasolevaid väärtusi."; +$LANG["confirm_ungroup_option_list"] = "Oled sa kindel, et soovid Lõhu see võimalus nimekirja? Kõik valikud on tellimine ühte, grupist nimekirja."; +$LANG["confirm_uninstall_module"] = "Oled sa kindel, et soovid eemaldada selle mooduli? Kõik mooduli andmed lähevad kaduma."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "R"; +$LANG["date_Friday"] = "Reede"; +$LANG["date_Mon"] = "E"; +$LANG["date_Monday"] = "Esmaspäev"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "La"; +$LANG["date_Saturday"] = "Laupäev"; +$LANG["date_Sun"] = "Päike"; +$LANG["date_Sunday"] = "Pühapäev"; +$LANG["date_Thu"] = "N"; +$LANG["date_Thursday"] = "Neljapäev"; +$LANG["date_Tue"] = "T"; +$LANG["date_Tuesday"] = "Teisipäev"; +$LANG["date_Wed"] = "K"; +$LANG["date_Wednesday"] = "Kolmapäev"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Aprill"; +$LANG["date_month_August"] = "August"; +$LANG["date_month_December"] = "Detsember"; +$LANG["date_month_February"] = "Veebruar"; +$LANG["date_month_January"] = "Jaanuar"; +$LANG["date_month_July"] = "Juuli"; +$LANG["date_month_June"] = "Juuni"; +$LANG["date_month_March"] = "Märts"; +$LANG["date_month_May"] = "Mai"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Oktoober"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Aprill"; +$LANG["date_month_short_Aug"] = "August"; +$LANG["date_month_short_Dec"] = "Detsember"; +$LANG["date_month_short_Feb"] = "Veebruar"; +$LANG["date_month_short_Jan"] = "Jaan"; +$LANG["date_month_short_Jul"] = "Juuli"; +$LANG["date_month_short_Jun"] = "Juuni"; +$LANG["date_month_short_Mar"] = "Märts"; +$LANG["date_month_short_May"] = "Mai"; +$LANG["date_month_short_Nov"] = "November"; +$LANG["date_month_short_Oct"] = "Oktoober"; +$LANG["date_month_short_Sep"] = "September"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Kasutaja konto on kustutatud."; +$LANG["notify_account_updated"] = "Sinu konto on edukalt uuendatud."; +$LANG["notify_add_display_values"] = "Lisa Ekraan Väärtused"; +$LANG["notify_admin_menu_updated"] = "Haldamise menüüs on uuendatud."; +$LANG["notify_admin_theme_overridden"] = "Administraator teema on käsitsi seadistatavad."; +$LANG["notify_allow_url_fopen_not_set"] = "Kahjuks see test ei saa sõita server. See nõuab allow_url_fopen tuleb panna 1 oma php.ini fail. See seade võimaldab PHP juurdepääsu faile URL, mida on vaja täita testi. Võite katsetada seda käsitsi laadida fail kausta FTP, siis püüab kasutada seda URL on esitanud."; +$LANG["notify_change_temp_password"] = "Sa lihtsalt sisse loginud ajutine salasõna. Sa peaksid salasõna now!"; +$LANG["notify_click_to_edit_new_submission"] = "Uus esituse muutmiseks klõpsake siin."; +$LANG["notify_client_account_menus_updated"] = "Kliendi konto (de) on uuendatud {\$menu_name} menüü. Sa võid nüüd kustutada menüü, mis oli varem seotud konto (de)."; +$LANG["notify_client_account_not_updated"] = "Kliendi kontole ei saa uuendada."; +$LANG["notify_client_account_themes_updated"] = "Kliendi konto (de) on uuendatud {\$theme} teema. Sa võid nüüd kustutada teema varem seotud konto (de)."; +$LANG["notify_client_account_updated"] = "Kliendi konto on edukalt uuendatud."; +$LANG["notify_client_menu_deleted"] = "Kliendi menüüst on välja jäetud."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Menüüst on välja jäetud, kuid pärast kliendi kontod nüüd ei pea enam menüüst! Teil on vaja ajakohastada järgmised kontod:"; +$LANG["notify_client_menu_updated"] = "Kliendi menüü on uuendatud."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Vabandame, menüüs ainult proovinud kustutada, on juba mida kliendid on loetletud allpool. Et kustutada menüüs teile esmalt vaja määrata klientidele teiste menüüsid. Klõpsake kliendi nime muuta, et konkreetse konto või määrata kõikide kontode erinevas menüüs kasutades rippmenüüst allpool."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Vabandust, üks teemadele sa just puudega on juba kasutusel järgmise kliendi kontod. Et kustutada teema teile esmalt vaja määrata igale kliendile teise teema. Klõpsake kliendi nime muuta, et konkreetse konto või määrata kõikide kontode teema kasutades rippmenüüst allpool."; +$LANG["notify_edit_email_fields_link"] = "Vajuta siia , et määrata, millised väljad on e-posti väljad, siis võite suunata neid oma e-posti malle."; +$LANG["notify_edit_field_new_field"] = "See on uus valdkonnas. Sul on vaja ajakohastada pealehel enne kui nad saavad täielikult muuta selles valdkonnas."; +$LANG["notify_edit_option_list_after_save"] = "Tuleb valida variant List ja seejärel Save Changes enne kui nad saavad seda muuta."; +$LANG["notify_email_field_config_deleted"] = "Meilisätteid on kustutatud."; +$LANG["notify_email_fields_not_updated"] = "Vabandame, aga me ei saa uuendada emaili väljad."; +$LANG["notify_email_fields_updated"] = "E-posti väljad on uuendatud."; +$LANG["notify_email_not_sent"] = "Vabandame, e-posti ei saadetud. Palun pöörduge administraatori poole aadressil allpool."; +$LANG["notify_email_not_sent_c"] = "Vabandame, e-posti ei saa saata:"; +$LANG["notify_email_sent"] = "E-post (s) on saadetud."; +$LANG["notify_email_template_deleted"] = "E-post Mudel on välja jäetud."; +$LANG["notify_email_template_updated"] = "E-post Mudel on uuendatud."; +$LANG["notify_enabled_module_list_updated"] = "Nimekirja lülitatud moodulid on uuendatud."; +$LANG["notify_error_saving_fields"] = "Tekkis viga kokkuhoid väljad."; +$LANG["notify_field_changes_saved"] = "Muudatusi oma põllu (d) on salvestatud."; +$LANG["notify_field_options_smart_filled"] = "Oma valdkonnas võimalusi on Smart täis."; +$LANG["notify_field_selected"] = "Valdkonnas on valitud. Kliki siia tagasi peamise valdkonna loetelus."; +$LANG["notify_field_updated"] = "See väli on uuendatud."; +$LANG["notify_file_not_uploaded"] = "Faili ei saadeta."; +$LANG["notify_file_uploaded"] = "Fail edukalt üles laetud."; +$LANG["notify_filters_not_updated"] = "Tekkis viga ajakohastamine selle kliendi arvates filtrid."; +$LANG["notify_filters_updated"] = "Esitamise filtrid on uuendatud selle kliendiga."; +$LANG["notify_folder_correct_permissions"] = "See kaust on õiged load."; +$LANG["notify_folder_url_match"] = "Kausta URL tundub õigesti sobi."; +$LANG["notify_folder_url_no_access"] = "Seda katset ei saa teha, kuna PHP ei suutnud seda URL-i. See on tavaliselt tingitud URL on parooliga kaitstud. Htaccess faili."; +$LANG["notify_folder_url_no_match"] = "Seda kausta URL kombinatsiooni ei olevat kattu."; +$LANG["notify_folder_url_unknown_error"] = "Tekkis tundmatu viga. Võite katsetada seda käsitsi laadida fail kausta FTP, siis püüab kasutada seda URL on esitanud."; +$LANG["notify_form_access_type_email_info"] = "See vorm on administraatori juurdepääsu tüüp, seega ei ole klientidel on juurdepääs sellele ja ei ole loetletud rippmenüüst allpool."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Vabandame, vorm, et ID ei eksisteeri."; +$LANG["notify_form_field_not_added"] = "Vormi väli '{\$fieldname}' ei saa lisada."; +$LANG["notify_form_field_options_updated"] = "Vormi väli võimalusi on uuendatud."; +$LANG["notify_form_field_removed"] = "Vorm valdkonnas edukalt eemaldatud."; +$LANG["notify_form_fields_removed"] = "Vormi väljad on edukalt eemaldatud."; +$LANG["notify_form_not_updated_notify_admin"] = "Teie kujul ei saa uuendada. Palun pöördu administraatori probleemist aru."; +$LANG["notify_form_settings_updated"] = "Teie vorm seaded on edukalt uuendatud."; +$LANG["notify_form_submission_updated"] = "Vormis esitamine on uuendatud."; +$LANG["notify_form_tabs_updated"] = "Klapid on uuendatud."; +$LANG["notify_form_updated"] = "Vorm on edukalt uuendatud."; +$LANG["notify_form_views_updated"] = "Vorm Vaatamisi on ajakohastatud."; +$LANG["notify_install_invalid_db_info"] = "Vabandust, me ei suutnud ühendada andmebaasi, kasutades teavet, mida tarnitakse. Veateate andmebaasi tagastatud: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Teie vorm on valmis! Saate konfigureerida oma vormi kaudu neid sakke."; +$LANG["notify_invalid_account_information_in_sessions"] = "Kontole salvestatud teave istungid on kehtetu. Palun logige uuesti alla."; +$LANG["notify_invalid_license_key"] = "Vabandust, see ei paista olema kehtiv võti. Palun proovige uuesti sisestama."; +$LANG["notify_invalid_permissions"] = "Sul ei ole õigusi sellele lehele. You have been logitud."; +$LANG["notify_invalid_search_dates"] = "Palun kasutage datepicker sisestada kehtiv kuupäev või kuupäevad."; +$LANG["notify_invalid_upload_folder"] = "Upload kaust on kas vigane või ei ole kirjutatav."; +$LANG["notify_lang_list_updated"] = "Saadaval kasutajaliidese keel nimekiri on uuendatud."; +$LANG["notify_login_info_emailed"] = "Kirjautumistietojesi on meilitsi."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, see moodul on juba paigaldatud!"; +$LANG["notify_module_installed"] = "Moodul on installitud. Kliki siia, et valida moodul."; +$LANG["notify_module_list_updated"] = "Moodul nimekiri on uuendatud."; +$LANG["notify_module_uninstalled"] = "Moodul on eemaldatud."; +$LANG["notify_module_updated"] = "{\$module} moodul on uuendatud {\$version}. valimiseks klõpsake siia moodul ."; +$LANG["notify_multi_field_selected"] = "Valdkonnas on valitud. Kliki siia, et vaadata ja redigeerida valdkonna võimalusi."; +$LANG["notify_multi_field_updated"] = "See väli on uuendatud. Teil on võimalik seadistada valdkonnas valikutest pärast loomise vorm."; +$LANG["notify_multiple_fields_found"] = "Mitu elemendid olid selle välja nime ({\$field_name}). See võib juhtuda siis, kui lehel on rohkem kui üks vorm või kui te juhuslikult nime ühe oma vorme sama nagu teine. Palun vali soovitud allpool olevast nimekirjast."; +$LANG["notify_new_default_view_created"] = "Uus, vaikimisi View sisaldab kõiki vormi väljad on loodud."; +$LANG["notify_new_submission_created"] = "Esitamine on loodud. Te võite muuta sellest allpool."; +$LANG["notify_no_account_id_in_sessions"] = "Ükski kasutaja konto ID leiti istungid. Palun logige uuesti alla."; +$LANG["notify_no_api_installed"] = "Sul ei ole API paigaldatud"; +$LANG["notify_no_client_permissions"] = "Puuduvad seaded kättesaadavaks muuta."; +$LANG["notify_no_email_template_selected"] = "Palun valige e-posti malli."; +$LANG["notify_no_emails_defined"] = "No meile on määratletud käesoleva vormi. Et lisada uus, vajutage allolevale nupule."; +$LANG["notify_no_field_settings"] = "See väli tüüp ei sisalda mingeid täiendavaid seadistusi."; +$LANG["notify_no_fields_in_tab"] = "See kaart ei sisalda mis tahes valdkonnas."; +$LANG["notify_no_option_lists"] = "Puuduvad võimalus määratletud loetelud. Klikka allolevale nupule, et luua uus."; +$LANG["notify_no_test_submission"] = "Vorm Vahendid ei ole saanud edukas katse esitamiseks veel."; +$LANG["notify_no_user_email_fields_configured"] = "Märkus: Kui soovite saata e-posti tahes e-posti aadress, mis oli lisatud vormi, tuleb esmalt seadistada vormi emaili väljad."; +$LANG["notify_no_views"] = "Teie vorm ei ole Vaatamisi loodud! Sa vajad vähemalt ühte Vaata, et juhtida oma vormi andmeid."; +$LANG["notify_no_views_assigned_to_client_form"] = "Tundub, et teie kasutaja konto ei ole ühelegi vormivaadetega, nii et sa ei saa näha kõiki andmeid. Palun kontakteeru administraatoriga edasi aidata."; +$LANG["notify_no_views_defined"] = "Sa ei pea kõik seisukohad määratletud. Sa ei saa vaadata seda vormi väidetele kui vähemalt üks View on loodud. Klikka allolevale nupule, et luua vaikimisi View."; +$LANG["notify_option_list_deleted"] = "Valikloendist on kustutatud."; +$LANG["notify_option_list_updated"] = "Valikloendist on uuendatud."; +$LANG["notify_public_form_omit_list_updated"] = "Kliendile jätta nimekirja selles vormis on uuendatud."; +$LANG["notify_public_view_omit_list_updated"] = "Kliendile jätta nimekirja selles Vaade on uuendatud."; +$LANG["notify_required_admin_pages"] = "Järgmistel lehekülgedel on vaja administraatori menüü: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Vabandust, seal ei olnud ühtegi tegevust kui seda oli meil samamoodi teid. Palun logige uuesti alla."; +$LANG["notify_setup_options_updated"] = "Häälestust on uuendatud."; +$LANG["notify_smart_fill_field_not_found"] = "Me ei suutnud leida valdkonnas selle nimega ({\$field_name}) kujul (de). Saate käsitsi seada kirjuta alla, või kliki Otse nuppu, et muuta selles vallas hiljem."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Teie fail (id) on edukalt üles laetud. Proovi klikkida Smart Täida nuppu uuesti proovida. Kui see samm ei ole, pead selle sammu vahele jätta ja seadistada vormi väljad manally hiljem."; +$LANG["notify_smart_fill_submitted"] = "Vorm on esitatud. Sõltuvalt suurusest oma vormi ja arvu valdkonna võimalusi, võib see aega võtta."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Vabandame, ühe või mitme faili sisestatud ei saadeta. Te peate selle sammu vahele jätta ja seadistada väljad käsitsi."; +$LANG["notify_submission_and_files_deleted"] = "Esitamiseks ja mis tahes faili (d) sellega seotud on edukalt kustutatud."; +$LANG["notify_submission_copied"] = "Esitamine on kopeeritud."; +$LANG["notify_submission_copied_edit"] = "Esitamine on kopeeritud. Saate seda allpool redigeerida."; +$LANG["notify_submission_deleted"] = "Esitamine on edukalt kustutatud."; +$LANG["notify_submission_deleted_with_problems"] = "Esitamise kustutatud, kuid järgmised probleemid tekkisid, kui üritatakse kustutada fail (id):"; +$LANG["notify_submission_id_not_found"] = "Esitamise ID ei leitud."; +$LANG["notify_submission_not_updated"] = "Esitamist ei saa uuendada."; +$LANG["notify_submissions_and_files_deleted"] = "Ettepanekud ning mis tahes faili (d) nendega on edukalt kustutatud."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} esitust on kopeeritud."; +$LANG["notify_submissions_deleted"] = "Märkused olid edukalt kustutatud."; +$LANG["notify_submissions_deleted_with_problems"] = "Märkused olid välja jäetud, kuid järgmised probleemid tekkisid, kui üritatakse kustutada fail (id):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Teie testi e-posti ei saadetud."; +$LANG["notify_theme_cache_folder_not_writable"] = "See teema vahemälu kaust ei ole kirjutatav. Selleks, et võimaldada selle teema, {\$folder} kaust peab olema täielik kirjutatavuse õigused."; +$LANG["notify_theme_list_updated"] = "Teema nimekiri on uuendatud."; +$LANG["notify_themes_settings_updated"] = "Sinu teema seaded on uuendatud."; +$LANG["notify_view_deleted"] = "Vaade on kustutatud."; +$LANG["notify_view_group_deleted"] = "Vaata grupp on kustutatud."; +$LANG["notify_view_missing_columns"] = "Vabandust! Vabandame, see vaade ei ole täielikult veel loodud."; +$LANG["notify_view_missing_columns_admin_fix"] = "Vajuta siia , et määrata, millised väljad peaks ilmuma veerud sellel lehel."; +$LANG["notify_view_updated"] = "Vaade on uuendatud."; +$LANG["notify_your_email_sent"] = "Sõnum on edukalt saadetud."; +$LANG["phrase_100_per_page"] = "100 lehekülge"; +$LANG["phrase_10_per_page"] = "10 lehekülge"; +$LANG["phrase_15_per_page"] = "15 protsenti lehele"; +$LANG["phrase_1_direct"] = "1. Otsene"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 lehekülge"; +$LANG["phrase_25_per_page"] = "25 lehekülje kohta"; +$LANG["phrase_2_code"] = "2. Kood"; +$LANG["phrase_2_columns"] = "2 veerus"; +$LANG["phrase_2chars"] = "2 tähemärki"; +$LANG["phrase_3_columns"] = "3 veergu"; +$LANG["phrase_4_columns"] = "4 veergu"; +$LANG["phrase_50_per_page"] = "50 lehekülje kohta"; +$LANG["phrase_accepting_submissions"] = "(sisaldab taotlused)"; +$LANG["phrase_access_admin_account_c"] = "Te pääsete oma haldamine konto siin:"; +$LANG["phrase_access_type"] = "Juurdepääsu tüüp"; +$LANG["phrase_account_info"] = "Konto info"; +$LANG["phrase_account_settings"] = "Konto seaded"; +$LANG["phrase_action_needed"] = "Vajalikud meetmed"; +$LANG["phrase_add_client"] = "Lisa klient"; +$LANG["phrase_add_client_menu"] = "Lisa Kliendi Menüü"; +$LANG["phrase_add_default_settings_rightarrow"] = "Lisa vaikesätted »"; +$LANG["phrase_add_field"] = "Lisa väli"; +$LANG["phrase_add_fields"] = "Lisa Valdkonnad"; +$LANG["phrase_add_fields_rightarrow"] = "Lisa väli (s) »"; +$LANG["phrase_add_form"] = "Lisa Form"; +$LANG["phrase_add_form_external"] = "Lisa Vorm - Välised"; +$LANG["phrase_add_form_internal"] = "Lisa Vorm - Sisemised"; +$LANG["phrase_add_new_group_rightarrow"] = "Lisa uus rühm »"; +$LANG["phrase_add_num_rows"] = "Lisa {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Lisa rida »"; +$LANG["phrase_add_submission_button"] = "Lisa Submission Button"; +$LANG["phrase_add_view_rightarrow"] = "Lisa View »"; +$LANG["phrase_adding_multi_page_form"] = "Lisades mitme lehekülje vorm API"; +$LANG["phrase_adding_single_page_form"] = "Lisades ühe lehe vormi API"; +$LANG["phrase_admin_menu"] = "Administraator Menüü"; +$LANG["phrase_admin_only"] = "Administraator Ainult"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administraator teema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Lisaseaded »"; +$LANG["phrase_all_X_results_selected"] = "Kõik {\$numresults} tulemused Valitud"; +$LANG["phrase_all_clients"] = "Kõik kliendid"; +$LANG["phrase_all_clients_except_c"] = "Kõik kliendid, välja arvatud:"; +$LANG["phrase_all_clients_have_access"] = "(kõik kliendid on juurdepääs)"; +$LANG["phrase_all_fields"] = "Kõik väljad"; +$LANG["phrase_all_fields_displayed"] = "Kõik väljad on kuvatud"; +$LANG["phrase_all_statuses"] = "Kõik staatused"; +$LANG["phrase_all_submissions"] = "Kõiki esildisi"; +$LANG["phrase_allow_fields_edited"] = "Laske valdkondade redigeeritud"; +$LANG["phrase_alphanumeric"] = "Alphanumeric (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Rakenda Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Määra kõigi loetletud klientide kontodele {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Määra kõigi loetletud klientide kontodele {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Lõpus"; +$LANG["phrase_at_start"] = "Alguses"; +$LANG["phrase_author_link"] = "Autor Link"; +$LANG["phrase_auto_disable_account"] = "Auto-välja lülitada kontole pärast # ei login katseid"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Olemasolevad kliendid"; +$LANG["phrase_available_fields"] = "Saadaolevad väljad"; +$LANG["phrase_available_option_lists"] = "Saadaval Option Lists"; +$LANG["phrase_available_swatches"] = "Saadaval Swatches"; +$LANG["phrase_available_swatches_c"] = "Saadaval Swatches:"; +$LANG["phrase_available_tabs"] = "Saadaval Tabs"; +$LANG["phrase_available_views"] = "Saadaval Vaatamisi"; +$LANG["phrase_awaiting_form_submission"] = "Ootan vormi esitamist."; +$LANG["phrase_back_to_field_list"] = "«tagasi valdkonnas nimekirja"; +$LANG["phrase_back_to_search_results"] = "tagasi otsingutulemuste juurde"; +$LANG["phrase_base_view_on"] = "Base View on ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Muuda Sisene Informatsioon"; +$LANG["phrase_characters_limit_p"] = "märgi piirang."; +$LANG["phrase_check_db_settings_try_again"] = "Palun kontrolli oma andmebaasi seadeid ja klõpsake nuppu Jätka uuesti."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Check URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Puhastusmeetmed"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Selge jätta nimekiri"; +$LANG["phrase_client_account_settings"] = "Kliendi Konto seaded"; +$LANG["phrase_client_field"] = "Klient Väli"; +$LANG["phrase_client_map_filters"] = "Klient Kaart Filtrid »"; +$LANG["phrase_client_may_edit"] = "Klient saab muuta"; +$LANG["phrase_client_menu"] = "Klient Menüü"; +$LANG["phrase_clients_can_access_form"] = "Kliendid, kellel on juurdepääs vorm"; +$LANG["phrase_clients_can_access_view"] = "Kliendid, kellel on juurdepääs Vaata"; +$LANG["phrase_clients_cannot_access_form"] = "Kliendid, kes ei pääse vorm"; +$LANG["phrase_clients_cannot_access_view"] = "Kliendid, kes ei pääse Vaata"; +$LANG["phrase_clients_may_edit"] = "Kliente võib muuta"; +$LANG["phrase_code_c"] = "Viga Kood:"; +$LANG["phrase_code_markup_field"] = "Kood / Markup Field"; +$LANG["phrase_code_markup_type"] = "Kood / Markup Type"; +$LANG["phrase_codes_c"] = "Viga Koodid:"; +$LANG["phrase_column_width"] = "Veeru laius"; +$LANG["phrase_company_name"] = "Firma nimi"; +$LANG["phrase_configure_form_email_fields"] = "Seadista vorm Saada Valdkonnad"; +$LANG["phrase_confirm_folder_url_match"] = "Kinnita kausta URL mängu"; +$LANG["phrase_connect_rows"] = "Connect rida"; +$LANG["phrase_copy_email_settings_from"] = "Kopeeri Saada seaded ..."; +$LANG["phrase_copy_settings_from"] = "Kopeeri seaded ..."; +$LANG["phrase_core_fields"] = "Core Valdkonnad"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Loo konto"; +$LANG["phrase_create_admin_account"] = "Loo juhtimine konto"; +$LANG["phrase_create_config_file"] = "Loo seadistustefail"; +$LANG["phrase_create_database_tables"] = "Loo andmebaasi tabelid"; +$LANG["phrase_create_default_view"] = "Loo Vaikimisi vaade"; +$LANG["phrase_create_file"] = "Loo Fail"; +$LANG["phrase_create_group"] = "Loo grupp"; +$LANG["phrase_create_new_email"] = "Create New Post"; +$LANG["phrase_create_new_menu"] = "Loo uus menüü"; +$LANG["phrase_create_new_option_list"] = "Loo uus võimalus nimekiri"; +$LANG["phrase_create_new_option_list_group"] = "Loo uus võimalus nimekirja grupp"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Loo uus võimalus List »"; +$LANG["phrase_create_new_view"] = "Loo uus View"; +$LANG["phrase_create_new_view_group"] = "Loo uus View Group"; +$LANG["phrase_custom_display_format"] = "Custom Display Format"; +$LANG["phrase_custom_recipient"] = "Kohandatud Vastuvõtja"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Tumesinine"; +$LANG["phrase_data_type"] = "Andmete liik"; +$LANG["phrase_database_hostname"] = "Andmebaas hostname"; +$LANG["phrase_database_name"] = "Andmebaasi nimi"; +$LANG["phrase_database_password"] = "Andmebaas parooli"; +$LANG["phrase_database_settings"] = "Andmebaasi seadistused"; +$LANG["phrase_database_setup"] = "Andmebaas seaded"; +$LANG["phrase_database_table_prefix"] = "Andmebaasi tabelite eesliide"; +$LANG["phrase_database_username"] = "Andmebaas kasutajanimi"; +$LANG["phrase_date_format"] = "Kuupäeva formaat"; +$LANG["phrase_db_column"] = "EP veerg"; +$LANG["phrase_db_setup_page_4"] = "4. Andmebaas seaded"; +$LANG["phrase_default_client_account_theme"] = "Vaikimisi Kliendi Konto teema"; +$LANG["phrase_default_date_field_search_value"] = "Vaikimisi kuupäeva väli otsing väärtus"; +$LANG["phrase_default_language"] = "Vaikimisi keel"; +$LANG["phrase_default_menu"] = "Vaikimisi Menüü"; +$LANG["phrase_default_sessions_timeout"] = "Vaikimisi istungid Aegumine"; +$LANG["phrase_default_sort_order"] = "Vaikimisi Sort Order"; +$LANG["phrase_default_tab_label"] = "Andmed"; +$LANG["phrase_default_theme"] = "Vaiketeema"; +$LANG["phrase_default_value"] = "Vaikeväärtus"; +$LANG["phrase_default_values"] = "Vaikeväärtused"; +$LANG["phrase_default_values_new_submissions"] = "Vaikeväärtused uusi seisukohti"; +$LANG["phrase_delete_field"] = "Delete field"; +$LANG["phrase_delete_form"] = "Kustuta vorm"; +$LANG["phrase_delete_row"] = "Kustuta rida"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Kustuta seotud failide kustutamine esitamine"; +$LANG["phrase_delete_view"] = "Kustuta vaade"; +$LANG["phrase_disconnect_rows"] = "Ühendage rida"; +$LANG["phrase_display_email"] = "Näita Post"; +$LANG["phrase_display_name"] = "Ekraan Nimi"; +$LANG["phrase_display_text"] = "Näita tekst"; +$LANG["phrase_display_value"] = "Näita Väärtus"; +$LANG["phrase_edit_admin_menu"] = "Muuda Admin Menüü"; +$LANG["phrase_edit_client"] = "Muuda Klient"; +$LANG["phrase_edit_client_menu"] = "Muuda Klient Menüü"; +$LANG["phrase_edit_email_template"] = "Edit Post Template"; +$LANG["phrase_edit_field"] = "Muuda Väli"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit kujul juurdepääsu tüüp]"; +$LANG["phrase_edit_option_list"] = "Edit Option List"; +$LANG["phrase_edit_submission"] = "Muuda esitamine"; +$LANG["phrase_edit_submission_label"] = "Edit Submission Label"; +$LANG["phrase_edit_view"] = "Redigeerimine Vaade"; +$LANG["phrase_email_format"] = "Saada Formaat"; +$LANG["phrase_email_settings"] = "Post Seaded"; +$LANG["phrase_email_template"] = "E-post Mudel"; +$LANG["phrase_email_template_name"] = "Saada malli nimi"; +$LANG["phrase_error_learn_more"] = "Lisateavet selle vea."; +$LANG["phrase_error_text_intro"] = "Palun paranda järgmised vead (te) ja uuesti:"; +$LANG["phrase_errors_learn_more"] = "Vajuta tõrkekoodidest rohkem teada saada."; +$LANG["phrase_event_trigger"] = "Sündmus Trigger"; +$LANG["phrase_external_form"] = "Väline vorm"; +$LANG["phrase_external_form_info"] = "Väline vorm Info"; +$LANG["phrase_external_your_own_form"] = "Väliste (oma vormi)"; +$LANG["phrase_field_comments"] = "Field Kommentaarid"; +$LANG["phrase_field_label"] = "Väli Label"; +$LANG["phrase_field_options"] = "Väli Valikud"; +$LANG["phrase_field_size"] = "Field Size"; +$LANG["phrase_field_skipped"] = "Väli Vahele"; +$LANG["phrase_field_specific_settings"] = "Field-spetsiifilised seadistused"; +$LANG["phrase_field_type"] = "Väli Liik"; +$LANG["phrase_field_type_no_validation"] = "Puuduvad jõustamise reeglid saadaval väljal."; +$LANG["phrase_field_types"] = "Välju"; +$LANG["phrase_field_value"] = "Field Value"; +$LANG["phrase_field_values_to_display_values"] = "Kuvatud »Näita Väärtused"; +$LANG["phrase_final_touches_page_6"] = "6. Viimistlus"; +$LANG["phrase_finalize_form"] = "Finalize vorm"; +$LANG["phrase_first_name"] = "Eesnimi"; +$LANG["phrase_footer_text"] = "Footer Tekst"; +$LANG["phrase_for_any_form_submission"] = "Mis tahes vormis esitamine"; +$LANG["phrase_for_view_submissions"] = "Ainult kaastööd Vaade:"; +$LANG["phrase_forgot_password"] = "Unustasid parooli?"; +$LANG["phrase_form_already_selected"] = "Vorm on juba valitud"; +$LANG["phrase_form_email_field_b_c"] = "[Vorm emaili väljale]:"; +$LANG["phrase_form_email_field_configuration"] = "Vorm Saada Field Konfiguratsioon"; +$LANG["phrase_form_email_fields"] = "Vorm E-post Valdkonnad"; +$LANG["phrase_form_field"] = "Vormi väli"; +$LANG["phrase_form_field_contents"] = "Vormi väljade sisu"; +$LANG["phrase_form_field_name"] = "Vormi väli Nimi"; +$LANG["phrase_form_field_placeholders"] = "Vormiväljale kohatäited"; +$LANG["phrase_form_fields"] = "Vorm Valdkonnad"; +$LANG["phrase_form_info"] = "Form Information"; +$LANG["phrase_form_info_2"] = "2. Form Information"; +$LANG["phrase_form_list"] = "Vorm nimekiri"; +$LANG["phrase_form_name"] = "Vormi nimi"; +$LANG["phrase_form_page"] = "Vorm Page"; +$LANG["phrase_form_placeholders"] = "Vorm Kohanäitajad"; +$LANG["phrase_form_submission"] = "Vormi saatmine"; +$LANG["phrase_form_submissions"] = "Vorm Ettepanekud"; +$LANG["phrase_form_type"] = "Vorm tüüp"; +$LANG["phrase_form_url"] = "Vorm URL"; +$LANG["phrase_form_urls"] = "Vorm URLid"; +$LANG["phrase_forms_assigned_to_any_account"] = "Forms ühelegi konto"; +$LANG["phrase_forms_page_default_message"] = "Forms lehele default sõnum"; +$LANG["phrase_ft_installation"] = "Vorm Vahendid paigaldamine Script"; +$LANG["phrase_full_width"] = "Full Width"; +$LANG["phrase_getting_started"] = "alustanud"; +$LANG["phrase_global_placeholders"] = "Globaalne Kohanäitajad"; +$LANG["phrase_group_name"] = "Grupi nimi"; +$LANG["phrase_group_options_q"] = "Group võimalusi?"; +$LANG["phrase_group_rows"] = "Group rida"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Highlight Colour"; +$LANG["phrase_html_email"] = "HTML Post"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Pildid / Meedia"; +$LANG["phrase_import_option_list_rightarrow"] = "Import Option List »"; +$LANG["phrase_input_length"] = "Sisend Pikkus"; +$LANG["phrase_installation_help"] = "Paigaldus Abi"; +$LANG["phrase_internal_form"] = "Internal vorm"; +$LANG["phrase_ip_address"] = "IP-aadress"; +$LANG["phrase_is_multi_page_form_q"] = "Kas see on multi-page kujul?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response Kohanäitajad"; +$LANG["phrase_large_300px"] = "Large (300px)"; +$LANG["phrase_large_400px"] = "Large (400px)"; +$LANG["phrase_last_7_days"] = "Viimased 7 päeva"; +$LANG["phrase_last_logged_in"] = "Viimati sisse logitud"; +$LANG["phrase_last_modified"] = "Viimased muudatused"; +$LANG["phrase_last_modified_date"] = "Viimati muudetud kuupäev"; +$LANG["phrase_last_name"] = "Perekonnanimi"; +$LANG["phrase_letters_only"] = "Kirjade ainult"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Limit posti sisu väljad Vaata"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Logi sisse"; +$LANG["phrase_login_as_user"] = "Logi sisse kui see kasutaja"; +$LANG["phrase_login_info"] = "Sisene Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Logi sisse Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login paneel"; +$LANG["phrase_login_password"] = "Kasutajanimi Parool"; +$LANG["phrase_login_username"] = "Sisenen Kasutajanimi"; +$LANG["phrase_logo_link_url"] = "Logo Lingi URL"; +$LANG["phrase_logout_url"] = "Logi URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Main Seaded"; +$LANG["phrase_manage_client"] = "Halda Klient"; +$LANG["phrase_manage_client_omit_list"] = "Manage Client Jäta nimekiri"; +$LANG["phrase_max_file_size"] = "Maksimaalne faili suurus"; +$LANG["phrase_max_length"] = "Max pikkus"; +$LANG["phrase_max_length_words_chars"] = "- Max pikkus (sõnade / tähemärki)"; +$LANG["phrase_may_add_submissions"] = "Võib lisada Ettepanekud"; +$LANG["phrase_may_copy_submissions"] = "Esitada saab eksemplare"; +$LANG["phrase_may_delete_submissions"] = "Võib kustutada Ettepanekud"; +$LANG["phrase_medium_150px"] = "Keskmine (150px)"; +$LANG["phrase_medium_200px"] = "Keskmine (200px)"; +$LANG["phrase_menu_name"] = "Menüü nimi"; +$LANG["phrase_menu_type"] = "Menüü Tüüp"; +$LANG["phrase_min_password_length"] = "Minimaalne parooli pikkus"; +$LANG["phrase_module_description"] = "Mooduli kirjeldus"; +$LANG["phrase_module_info"] = "Moodul Info"; +$LANG["phrase_module_nav"] = "Moodul Nav"; +$LANG["phrase_month_to_date"] = "Kuu kuni tänaseni"; +$LANG["phrase_multi_select"] = "Multi-valige"; +$LANG["phrase_multi_select_dropdown"] = "Multi-vali rippmenüüst"; +$LANG["phrase_multiple_fields_found"] = "Mitu Valdkonnad leitud!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nimi / Perekonnanimi"; +$LANG["phrase_new_blank_email"] = "Uus Tühi Post"; +$LANG["phrase_new_blank_option_list"] = "New Blank variant nimekiri"; +$LANG["phrase_new_blank_view"] = "Uus Tühi View"; +$LANG["phrase_new_ft_installation"] = "Uus vorm Vahendid paigaldamine"; +$LANG["phrase_new_option_list"] = "Uus võimalus nimekiri"; +$LANG["phrase_new_password"] = "Uus parool"; +$LANG["phrase_new_password_reenter"] = "Uus parool (palun sisestage uuesti)"; +$LANG["phrase_new_view"] = "Uus vaade"; +$LANG["phrase_new_view_all_fields"] = "New View - kõik väljad"; +$LANG["phrase_next_client"] = "järgmise kliendi »"; +$LANG["phrase_next_field"] = "järgmisele väljale »"; +$LANG["phrase_next_form"] = "Järgmine vorm »"; +$LANG["phrase_next_view"] = "Järgmine Vaata »"; +$LANG["phrase_no_clients"] = "Nr klientidele"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Nr kompenseerida"; +$LANG["phrase_no_option_lists_available"] = "Ei Valikloendid saadaval."; +$LANG["phrase_no_views"] = "Nr Vaatamisi"; +$LANG["phrase_no_views_with_filters_p"] = "(No Vaatamisi filtrid määratletud)"; +$LANG["phrase_none_not_recommended"] = "Puuduvad (pole soovitatav)"; +$LANG["phrase_not_assigned_to_option_list"] = "See väli ei ole määratud Option List."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Ei võrdu"; +$LANG["phrase_not_found"] = "Ei leitud!"; +$LANG["phrase_not_like"] = "Ei meeldi"; +$LANG["phrase_not_visible_to_client"] = "(ei ole nähtav kliendile)"; +$LANG["phrase_num_clients_per_page"] = "Num Kliente Per Page"; +$LANG["phrase_num_emails_per_page"] = "Num kirjad Per Page"; +$LANG["phrase_num_fields"] = "Väljade arv"; +$LANG["phrase_num_forms_per_page"] = "Num Blanketid Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Menüüd Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Moodulid Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Num Option Nimekirjad Per Page"; +$LANG["phrase_num_options"] = "Num Valikud"; +$LANG["phrase_num_rows"] = "Num Rows"; +$LANG["phrase_numbers_only"] = "Ainult numbreid"; +$LANG["phrase_often_localhost"] = "(sageli "localhost")"; +$LANG["phrase_on_form_submission"] = "Esitatud kujul esitamine"; +$LANG["phrase_one_char_number"] = "Vähemalt üks märk on number (0-9)"; +$LANG["phrase_one_char_upper"] = "Vähemalt üks täht on suurtähed"; +$LANG["phrase_one_special_char"] = "Vähemalt üks {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(ainult konkreetsete klientide juurdepääs)"; +$LANG["phrase_open_form_in_dialog"] = "Avatud vorm akna"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Avatud käesolev vorm uue kaardi / akna"; +$LANG["phrase_option_list"] = "Valikute loetelu"; +$LANG["phrase_option_list_name"] = "Võimalus Nimekiri Nimi"; +$LANG["phrase_option_list_or_contents"] = "Option List / Contents"; +$LANG["phrase_option_lists"] = "Valik Nimekirjad"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Pealkirjas"; +$LANG["phrase_pass_on"] = "Edasi"; +$LANG["phrase_password_min"] = "See peab olema vähemalt {\$length} tähemärki."; +$LANG["phrase_password_one_number"] = "See peab sisaldama vähemalt ühte numbrit (0-9)."; +$LANG["phrase_password_one_uppercase"] = "See peab sisaldama vähemalt ühe suurtäheliseks."; +$LANG["phrase_password_requirements_c"] = "Parool nõuetele:"; +$LANG["phrase_password_reset"] = "Parooli taastamine"; +$LANG["phrase_password_special_char"] = "See peab sisaldama vähemalt ühe järgmisi märke: <b> ( \$ tähemärki) </ b>"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissions / Muud seaded"; +$LANG["phrase_permitted_file_types"] = "Lubatud failitüübid"; +$LANG["phrase_phone_number"] = "Telefoninumber"; +$LANG["phrase_phone_number_format"] = "Phone Number Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max lubatud faili üleslaadimise suurus:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Versioon"; +$LANG["phrase_please_confirm"] = "Kinnita"; +$LANG["phrase_please_enter_license_key"] = "Palun sisestage oma võti"; +$LANG["phrase_please_select"] = "Vali"; +$LANG["phrase_please_select_form"] = "Palun valige vorm"; +$LANG["phrase_prev_client"] = "«Eelmine klient"; +$LANG["phrase_prev_form"] = "«Eelmine vorm"; +$LANG["phrase_prevent_password_reuse"] = "Vältida taaskasutamise # viimane paroolid"; +$LANG["phrase_previous_field"] = "«eelmine valdkonnas"; +$LANG["phrase_previous_page"] = "Eelmine lehekülg"; +$LANG["phrase_previous_view"] = "«Eelmine View"; +$LANG["phrase_program_name"] = "Programmi nimi"; +$LANG["phrase_public_form_omit_list"] = "Avalik vorm jätta nimekiri"; +$LANG["phrase_public_view_omit_list"] = "Avalik Vaata jätta nimekiri"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Seal oli probleem järgmine küsimustik:"; +$LANG["phrase_radio_buttons"] = "Raadio nupud"; +$LANG["phrase_random_form_submission"] = "Juhuslikud vormi saatmine"; +$LANG["phrase_re_enter_password"] = "Sisesta parool"; +$LANG["phrase_recipient_type"] = "Vastuvõtja tüüp"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Värskenda nimekirja"; +$LANG["phrase_refresh_module_list"] = "Värskenda Moodul nimekiri"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Värskenda Teemade nimekiri"; +$LANG["phrase_register_new_email"] = "Registreeru New Post"; +$LANG["phrase_remaining_characters"] = "ülejäänud märkide"; +$LANG["phrase_remaining_words"] = "Ülejäänud sõnad"; +$LANG["phrase_remove_tabs"] = "Eemalda Tabs"; +$LANG["phrase_required_password_chars"] = "Nõutav parool tähemärki"; +$LANG["phrase_resend_test_submission"] = "Resend Test esitamine"; +$LANG["phrase_return_form_list"] = "Tagasi vorm nimekiri"; +$LANG["phrase_row_selected"] = "{\$num_rows} reas valitud"; +$LANG["phrase_rows_selected"] = "{\$num_rows} ridade valik"; +$LANG["phrase_sample_data"] = "Sample Data"; +$LANG["phrase_save_changes"] = "Save Changes"; +$LANG["phrase_search_keyword"] = "Otsi märksõna"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Vali kõik"; +$LANG["phrase_select_all_X_results"] = "Vali kõik {\$numresults} tulemused"; +$LANG["phrase_select_all_on_page"] = "Vali kõik Page"; +$LANG["phrase_select_date"] = "Vali kuupäev"; +$LANG["phrase_select_field"] = "Valige väli"; +$LANG["phrase_select_swatch"] = "Vali proovilapp"; +$LANG["phrase_selected_clients"] = "Valitud kliendid"; +$LANG["phrase_selected_views"] = "Valitud Vaatamisi"; +$LANG["phrase_send_email"] = "Saada e-kiri"; +$LANG["phrase_send_test_email"] = "Saada Test Post"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Istungite ajalõpp"; +$LANG["phrase_setting_value"] = "Setting Väärtus"; +$LANG["phrase_setup_options"] = "Häälestust"; +$LANG["phrase_show_all"] = "Näita Kõiki"; +$LANG["phrase_show_form"] = "Show vorm"; +$LANG["phrase_size_large"] = "Suur (tekst)"; +$LANG["phrase_size_medium"] = "Keskmine (<= 256 tähemärki)"; +$LANG["phrase_size_small"] = "Väike (<= 20 tähemärki)"; +$LANG["phrase_size_tiny"] = "Pisike (<= 5 tähemärki)"; +$LANG["phrase_size_very_large"] = "Väga Suur (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Jäta väli"; +$LANG["phrase_skip_step"] = "Jäta etapp"; +$LANG["phrase_small_100px"] = "Väike (100px)"; +$LANG["phrase_small_80px"] = "Väike (80px)"; +$LANG["phrase_smart_fill"] = "Smart Täitke"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Täida väljad:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Täida Kasutaja Dokumendid »"; +$LANG["phrase_sort_as"] = "Sorteeri Nagu"; +$LANG["phrase_special_fields"] = "Special Fields"; +$LANG["phrase_standard_fields"] = "Standard Valdkonnad"; +$LANG["phrase_standard_filters"] = "Standard Filtrid »"; +$LANG["phrase_step_1"] = "Samm 1"; +$LANG["phrase_step_2"] = "Samm 2"; +$LANG["phrase_step_3"] = "Step 3"; +$LANG["phrase_step_4"] = "Samm 4"; +$LANG["phrase_step_5"] = "Samm 5"; +$LANG["phrase_step_6"] = "Samm 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip sildid vormis esildised"; +$LANG["phrase_subject_line"] = "Teema Line"; +$LANG["phrase_submission_date"] = "Esitamise kuupäev"; +$LANG["phrase_submission_id"] = "Esitamise ID"; +$LANG["phrase_submission_made"] = "Esildise: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Esitamine tüüp"; +$LANG["phrase_submissions_per_page"] = "Ettepanekud lehel"; +$LANG["phrase_system_check"] = "Süsteemi kontroll"; +$LANG["phrase_system_fields_no_validation"] = "Sa ei saa lisada valideerimise süsteemi valdkondades."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test kaustaõiguste"; +$LANG["phrase_test_submission"] = "Test esitamine"; +$LANG["phrase_test_submission_3"] = "3. Test esitamine"; +$LANG["phrase_test_submission_received"] = "Test laekunud"; +$LANG["phrase_text_and_html"] = "Tekst ja HTML"; +$LANG["phrase_text_email"] = "Tekst Post"; +$LANG["phrase_text_template"] = "Tekst Mall"; +$LANG["phrase_the_previous_month"] = "Eelmise kuu"; +$LANG["phrase_theme_description"] = "Theme Kirjeldus"; +$LANG["phrase_theme_info"] = "Teemade Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Kokku Vastused:"; +$LANG["phrase_type_c"] = "Viga Type:"; +$LANG["phrase_unselect_all"] = "Tühista kõik valikud"; +$LANG["phrase_update_accounts"] = "Update Kontod"; +$LANG["phrase_update_email_template"] = "Update Email Template"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Uuenda Order"; +$LANG["phrase_update_view"] = "Seisuga Vaata"; +$LANG["phrase_upload_file"] = "Lae fail"; +$LANG["phrase_upload_files"] = "Faile üles laadida"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Laadi kausta tee"; +$LANG["phrase_upload_folder_url"] = "Laadi kausta URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Kasuta vaikimisi väärtus?"; +$LANG["phrase_used_by_num_form_fields"] = "Kasutab # Form Valdkonnad"; +$LANG["phrase_uses_swatches"] = "Kasutab Swatches"; +$LANG["phrase_valid_email"] = "Kehtiv e-posti"; +$LANG["phrase_validation_error"] = "Kinnitus viga"; +$LANG["phrase_validation_rule"] = "Valideerimisreegli"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Vaata Group"; +$LANG["phrase_view_id"] = "Vaata ID"; +$LANG["phrase_view_name"] = "Vaata Nimi"; +$LANG["phrase_view_placeholders"] = "Vaata Kohanäitajad"; +$LANG["phrase_view_submissions"] = "Vaata Ettepanekud"; +$LANG["phrase_view_uploaded_files"] = "Arvestades Üleslaetud failid"; +$LANG["phrase_viewing_range"] = "[vaatamise {\$startnum} ja {\$endnum}]"; +$LANG["phrase_when_sent"] = "Kui saadetud"; +$LANG["phrase_when_submission_is_deleted"] = "Kui esitamiseks on välja"; +$LANG["phrase_when_submission_is_edited"] = "Kui esitamise toimetab"; +$LANG["phrase_who_can_access"] = "Kes pääseb?"; +$LANG["phrase_word_limit_p"] = "sõna piiri."; +$LANG["phrase_year_to_date"] = "Aasta algusest"; +$LANG["phrase_yes_for_all_views"] = "Jah, kõik vaated"; +$LANG["phrase_yes_for_specific_views"] = "Jah, teatud Vaatamisi"; +$LANG["phrase_your_account"] = "Sinu konto"; +$LANG["phrase_your_email"] = "Sinu e-post"; +$LANG["phrase_your_email_address"] = "Sinu e-posti aadress"; +$LANG["processing_form_disabled"] = "Vabandame, see vorm on blokeeritud."; +$LANG["processing_form_incomplete"] = "Vabandame, see vorm ei näi olevat täielikult loodud seest vorm tööriistad. Kõige tõenäolisem põhjus see probleem on, et eemaldatud "form_tools_initialize_form" peidetud vormi väli, kuid ei lõpetanud kõik etapid "Lisa Vorm" protsessi.

    Logi sisse ja vormi läbivaatamine konfiguratsioon."; +$LANG["processing_init_complete"] = "Tänan! Teie katse esitamiseks on viidud läbi edukalt. Palun tagastage vorm Vahendid administratsiooni paneeli ja klõpsa "Värskenda" nuppu allservas Lisa Form 3. etapp lehekülje määramine lõpuni oma vormi."; +$LANG["processing_invalid_form_id"] = "Vabandust, see ei näi olevat kehtiv vorm ID."; +$LANG["processing_no_form_id"] = "process.php nõuab vormi ID töötlemiseks. Veenduge, et vorm on peidetud väli nimega "form_tools_form_id" see kulgeb piki vormi ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Vorm Tools ei suuda otsustada, kuhu suunata, kui nad ei suuda siseneda CAPTCHA korralikult. Palun passi peidetud väli nimega form_tools_form_url sisaldavate URL-i kujul."; +$LANG["processing_no_post_vars"] = "process.php ei ole saanud mingeid andmeid. Märkus: see skript ei saa laadida otse brauseris.
    Veenduge, et vorm on saatmine posti teel."; +$LANG["processing_no_redirect_url"] = "Esitamine on töödeldud nõuetekohaselt, kuid te ei ole määratletud URL-i jaoks selle vormi! Muuda oma vormi vorm Vahendid UI ja lisada URL-i."; +$LANG["special_language"] = "Estonian"; +$LANG["special_language_locale"] = "Estonian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Kõik uued kliendi kontod on loodud seaded ja õigused on määratletud allpool. Alistada seade konkreetse kliendi, muuta kliendi konto ja külasta nende sakk."; +$LANG["text_add_form_choose_integration_method"] = "Valida, millist meetodit te soovite kasutada, et integreerida oma vormi vorm Tools."; +$LANG["text_add_form_code_submission_benefits"] = "See meetod kasutab vorm Tools API , mis kuuluvad põhivormiks Tools script. API pakub mitmeid kasulikke funktsioone teha tööd, et integreerida oma vormi vorm Tools võimalikult lihtne. Puuduvad piirangud, kuidas oma vormi võib esitada, kui kasutate API. Võite esitada sisu korraga või lehekülje kaupa, saate lisada oma custom server-side kinnitamine, CAPTCHA pilte; saate valida teabe esitamiseks nüüd, kuid ainult öelda seda, et kuvada esitamise Vormi Tools UI hiljem (vt lõplikud Ettepanekud jagu API aidata dokumentatsiooni)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Et esitada oma vormi kaudu andmete PHP, oma vormi peavad asuma samal veebilehel, kuna see vorm Tools paigaldus. Teiseks, mitte-tehniline ja algajad vorm Tools kasutajatele, see meetod võib olla natuke hirmutav alguses. Aga seal on palju dokumente, mis aitavad teil välja, sealhulgas kaks lihtsat õpetused integreerides oma ühe-ja multi-page vormid (need on seotud hilisemal samm)."; +$LANG["text_add_form_direct_submission_benefits"] = "See on lihtsaim viis saata oma vormi vorm tööriistad. Ta ei vaja teadmisi PHP ja nõuab väga vähe muuta oma vormi. On tore, väiksemate vormide kui soovite lihtsalt esitada teavet andmebaasi seejärel suunata kasutaja "thankyou" lehel."; +$LANG["text_add_form_direct_submission_drawbacks"] = "See esitamise meetod on väga lihtne kasutada, kuid ei anna palju kontrolli keerulisemaks vorme. Multi-lehe vormi või vormid, mis nõuavad serveripoolses kinnitamine sobivad paremini teine meetod: esitada kaudu vorm Tools API."; +$LANG["text_add_form_field_types1"] = "Peaaegu valmis! See lehekülg püüab leida kõik vormi väljad ning määrab nende välju. Kliki Smart Täitke nuppu paremal alustada. Sul on ainult lubatud suunduda, kui kõik meetmed on lahendatud - teemad, mis vajavad Teie tähelepanu ilmuvad "Mida teha " veerus."; +$LANG["text_add_form_field_types2"] = "Kui teie vorm ei ole HTML, klõpsake Skip Step nuppu. See kõik võib seadistada hiljem."; +$LANG["text_add_form_field_types3"] = "See uuestilaadimise sisu oma vormi (d). Märkus: see kirjutatakse muutusi olete teinud sellel leheküljel."; +$LANG["text_add_form_field_types4"] = "Kui teil tekib probleeme, kliki siia, et selle sammu vahele jätta. Kõik lahendamata väljad on seadistatud kasutama vaikimisi väärtusi. Te saate kohandada nendes valdkondades hiljem."; +$LANG["text_add_form_field_types_manual_upload"] = "Kui te ei ole suutnud Smart Täitke oma valdkonnas, siis võiksite proovida alternatiivset lahendust: upload koopiad oma vormides allpool olevad väljad."; +$LANG["text_add_form_field_types_manual_upload2"] = "Märkus: ärge laadida toores PHP leheküljed (või muu server-side code) - lihtsalt laadige HTML versioonid. Saada see, vaadata ja salvestada lehel oma veebilehitsejat."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Seal oli mitu välja, et ei leitud kujul lehel määratud. See on enamasti põhjuseks ilmselt ühel järgmistest:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Sisestatud üks või mitu vormi URLid oma multi-lehe vormi valesti."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Üks või rohkem lehekülgi vorm on parooliga kaitstud ja skript ei pääse lehele."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Sa valesti sisestanud kujul URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Vajuta siia , et naasta Form Information lehel kontrollige oma seadeid."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Oled muutnud oma vormi (de) pärast teha test esitamine"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Vajuta siia panna läbi teine ​​katse esitamiseks."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Teie vorm on parooliga kaitstud ja skript ei pääse lehele."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Ühes teises tab / aken selle brauseriga sisse logida oma vormi seejärel käsku Värskenda Page allolevale nupule, et proovida uuesti leida väljad."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Kui ükski eespool lahendused töötavad, siis võib ka tahan proovida käsitsi üleslaadimisel vormid töötlemiseks ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Seal oli mitu välja, et ei leitud kujul lehekülgede määratud. See on enamasti põhjuseks ilmselt ühel neist:"; +$LANG["text_add_form_help_link"] = "Kui sul tekib mingeid probleeme ajal neid samme, proovida lugemine kasutaja dokumentatsiooni ."; +$LANG["text_add_form_step_1_text_1"] = "Järgmistel lehekülgedel viib teid läbi meetmed, et seadistada Form Vahendid salvestada vormis esildisi. Enne jätkamist kontrollige palun, et:"; +$LANG["text_add_form_step_1_text_2"] = "Teie vorm on juba loodud ja selle kaudu ligipääsetavad URL (localhost on hea)"; +$LANG["text_add_form_step_1_text_3"] = "on võimalik muuta oma vorm"; +$LANG["text_add_form_step_2_para_2"] = "Avage vorm toimetaja oma valikut ja muuda oma vormi sildi pärast, sealhulgas kaks peidetud väljad."; +$LANG["text_add_form_step_2_para_3"] = "Seejärel avage oma vormi veebibrauseris. Täida igas valdkonnas ning esitab selle. Kui olete saatnud, et sa näed teate. Kui see teade kuvatakse, tagasi sellele leheküljele ja klõpsake nuppu Värskenda allpool. Kui protsess on lõpule jõudnud, näed jätkuvalt nupp, võttes saate järgmiseks sammuks."; +$LANG["text_add_form_step_2_para_6"] = "Oma vormi esitamise sisaldama järgmisi väärtusi. Neid võib määrata otse läbi PHP või edasi piki vormi kaudu ise. Allpool on toodud iga. (\$ Vormingut VARNAME) on hash (või assotsiatiivne massiiv) kõikide vormi esitamise teave - see on tavaliselt (\$ postvar) või (\$ sessionvar) muutuv, kuid see võib olla kohandatud ehitatud."; +$LANG["text_add_form_step_2_text_2"] = "Sisestage URL "Thankyou " lehelt siin. See on koht, kus sa tahad inimesi suunata pärast vormi esitamist."; +$LANG["text_add_form_step_3_para_1"] = "Sellel leheküljel on loetletud kõik väljad oma vormi esitamist. Palun kontrollida igas valdkonnas ning kõrvaldada kõik, et te ei vaja hoida iga esitamist. Kui kustutate kehtiv valdkonna õnnetuste või soov muuta salvestatud andmed oma vormi tagasi eelmisele lehele saata uus katse esitamiseks."; +$LANG["text_add_form_step_3_para_2"] = "Märkus: kui te saadate mitme väärtuste kaudu ruudud või mitme valige lahter veenduge, et välja nime lõpus on [] märke (vt dokumentatsiooni lisainformatsiooni)."; +$LANG["text_add_form_step_3_text_1"] = "Siin, kus lõbu algab! Sel hetkel, vorm Tools ootab test esildisest oma vormi. Ta kasutab seda vormi esitamise teada, millist teavet tuleb hoida andmebaasis."; +$LANG["text_add_form_step_3_text_2"] = "suunates oma vormi vorm Tööriistad"; +$LANG["text_add_form_step_3_text_3"] = "vormi Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Selleks et aidata integreerida oma vormi, soovitame lugeda üht järgmistest õpetused:"; +$LANG["text_add_form_step_3_text_5"] = "Nad selgitavad, kuidas luua oma vormi ettevalmistamise katse esitamise ja sisaldab muud informatsiooni, mis võib olla abiks. Rida PHP, mida vaja on:"; +$LANG["text_add_form_step_3_text_6"] = "See tagab andmete tegelikult saadetakse vorm tööriistad. Kui olete teinud läbi oma test esitamist, klõpsake nuppu."; +$LANG["text_add_form_step_3_text_7"] = "Lehe EELNEV oma lõpliku aitäh lehele kindlasti lisada järgmise parameetri \$ parameetrid muutuja:"; +$LANG["text_add_form_step_5_para_1"] = "Andmebaas on loodud selle vorm ja vorm on aktiveeritud kasutama. Kui teil avaldusele suunates oma vormi process.php, pöörduge oma vormi ja eemaldada järgmised peidetud väli:"; +$LANG["text_add_form_step_5_para_2"] = "Siis külastage "aitäh" leheküljel tühi istungid. Kui see on tehtud, kõik uued vormis esildisi on töödeldud ja salvestatud vorm tööriistad. Proovige muuta esitamise või kaks andmeid kontrollida on kõik üleslaadimise õigesti."; +$LANG["text_add_form_step_5_para_3"] = "Kui soovid viimistleda oma vormi võimalused, nagu automaatne emailin, lisades täiendava vormi väljade valdkonnas või kohandamise vormi välju, siis võib muuta oma vormi igas kohas."; +$LANG["text_add_form_step_5_para_4"] = "Kuna teie vorm sisaldab faili üleslaadimise välju, peate konfigureerima iga valdkonna täpsustada file upload kausta, millised failid on lubatud ja. Seda võib leida sakk Ekraan on suure vormi leht."; +$LANG["text_add_form_step_5_para_5"] = "Kui esitamist oli saadetud API muuta ft_api_init_form_page liin esimesel lehel oma vormi:"; +$LANG["text_add_submission_button"] = "Lisa esitamine vaid nuppu ilmub Vaatamisi mis on "võib lisada ettepanekud " variant seatud "jah "."; +$LANG["text_admin_email_placeholder_info"] = "See on e-posti aadress vorm Vahendid administraator määratletud konto seaded. See ainult väljundeid e-posti aadressi, nii et kui soovite kasutada HTML-link, peate wrap seda <a> silt, nii nagu:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Ka vaikimisi kirjautumissivulla teema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Esiteks, palun valida oma vormi tüüp."; +$LANG["text_client_form_page"] = "See lehekülg loetleb kõik vormid ja vaated on määratud selle kliendi. Näpunäide: et neid näha vormi väidetele, need tuleb määrata vähemalt üht vaadet."; +$LANG["text_client_map_filters_desc1"] = "Klient Kaart filtrite abil saate piirata väidetele, mis ilmuvad käesoleva Vaata, mida kaardistamise väärtused vormi väli väärtusi kliendi kontole."; +$LANG["text_client_no_forms"] = "Sul ei ole praegu planke läbivaatamiseks."; +$LANG["text_client_welcome"] = "Tere tulemast! See programm salvestab kõik esitatud teabe oma veebilehe külastajad. Et vaadata kaastööd erivormi kliki Vaata linki või vaata vasakpoolseimat navigatsioonimenüü muid võimalusi."; +$LANG["text_config_file_created"] = "Your config.php fail on loodud."; +$LANG["text_config_file_not_created"] = "Me ei saanud luua oma config.php faili. Te peate looma faili käsitsi."; +$LANG["text_config_file_not_created_instructions"] = "Kopeeri ja kleebi sisu ei jagu allpool toodud fail nimega config.php ja laadige see FTP kaudu vorm Tööriistad ja maailma kaust (kaust, mis sisaldab ka mõningaid muid faile ja katalooge, üks fail nimega library.php)."; +$LANG["text_confirm_delete_form"] = "Jah, ma tahan kustutada seda vormi"; +$LANG["text_create_admin_account"] = "Nüüd lähed luua administraatori konto. Seda kasutatakse haldamise kõigi aspektide vorm Tööriistad, näiteks lisades vorme ja luua kliendi kontod."; +$LANG["text_create_new_client_account"] = "Kasutage allpool olevat vormi luua uue kliendi kontole. Kõik väljad on kohustuslikud."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "vt PHP {\$datefunctionlink} funktsiooni vormingusuvandid"; +$LANG["text_default_file_settings_page"] = "See leht määratleb faili üleslaadimise seadeid vorm Vahendid paigaldus. Need eeskirjad kehtivad kõigi faile alla laadinud kaudu vorm Tööriistad, kui ei ole otseselt kaalu üksiku vormi väli. Märkus: kui te muudate upload kausta pärast failid on saadetud, on nad automaatselt kolis uude kausta."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Enne jätkamist peate uuenda / themes / default / cache kataloogi, et võimaldada täielikult lugeda ja kirjutada õigused. Kui see on tehtud, see sõnum kaob ja saab paigaldada skript."; +$LANG["text_default_values_in_view"] = "See osa on vabatahtlik. Kõiki ettepanekuid loodud selle seisukohaga sisaldavad vaikeväärtused siin määratud."; +$LANG["text_delete_all_forms"] = "Ma tahan kustutada kõik failid, mis olid laadinud selle vormi kaudu"; +$LANG["text_delete_form_warning"] = "Kas olete kindel, et soovite kustutada selle vormi? Seda toimingut ei saa tagasi võtta. Kõik andmed jäädavalt kadunud!"; +$LANG["text_edit_admin_menu_page"] = "Võite muuta oma menüü alla. Et teil oleks alati juurdepääs kogu funktsionaalsus kättesaadavaks vorm Tööriistad, järgnevatel lehekülgedel on kohustatud: vormid, klientide konto Moodulid, Seaded ja Välju."; +$LANG["text_edit_client_menu_page"] = "Selles osas saab kohandada vasakus navigatsiooni tulbas igale kasutajale. Võid luua nii palju kliendi menüüsid soovid ja anna mingil ühele neist. Vaikimisi on kaks menüüd: üks Teile, administraator ja üks kõigi klientide kontodele. Administraatori konto võib muuta, kuid mitte ära."; +$LANG["text_edit_tab_summary"] = "Kui soovid grupeerida vaate väljad klapid, sisesta kaart nimed allpool. Pärast olete valmis, valige vastav sakk iga valdkonna rühma väljad sakk ."; +$LANG["text_edit_view_list_page"] = "See kaart kontrolle, mis väljad ilmuvad veergu Submission videod leht ja mõned täiendavad seadistused nimetatud valdkondades. Märkus: soovitame lisada mitte rohkem kui 4 või 5 tähtsamaid väljad View."; +$LANG["text_email_settings_intro"] = "Selle lehekülje abil saate määratleda, millist vormi väljad säilitada e-kirju ja neile vastavaid nimesid. Kui teil määratleda neid siin saate neid kasutama oma e-posti malle saajana. See osa on täiesti vabatahtlik."; +$LANG["text_email_tab_summary"] = "Selles osas saab ehitada suvalisel arvul kirju saata, kui teie vorm on esitatud, ja muud käivitab."; +$LANG["text_email_template_tab"] = "Selles osas saab määrata, millist sisu kuvatakse e-kirja. Kui soovite saata e-posti kui ainult teksti või e-posti, sisestada ainult väärtuse selle osa. Kui sisestate väärtuse nii, elektronposti teel mõlemas vormis."; +$LANG["text_email_template_text_1"] = "Seal on esitamise kaudu oma vormi, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Seal on esitamise kaudu oma vormi, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Täname esitamist!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Veateade näidata kui väli ei kinnitamine"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "External vormid on vormid, mis on juba olemas oma veebilehel, või kuskil veebis. Valige see, kui sul on oma vorm, kuhu soovite integreerida vorm Tools."; +$LANG["text_fields_tab_summary"] = "See lehekülg loetleb kõik vormi väljad. Kontrollida, kuidas nad ilmuvad sirvimisel esildised, vaata Vaatamisi tab . Kustutamine valdkonnas käesoleval leheküljel kustutada kõik esitatud, nii et palun ole ettevaatlik!"; +$LANG["text_file_extension_info"] = "Sisestage faililaiendid eraldatud komaga (näiteks jpg, gif, png) või jäta tühjaks, et võimaldada mis tahes failitüübi."; +$LANG["text_file_field_placeholders_info"] = "Fail väljad on kaks eri kohanäitajad: FILEURL ja failinimi. FILEURL on täielik URL faili, nii et saate otse talle oma e-kirju; FILENAME on ainult faili nime."; +$LANG["text_filters_page"] = "Ainult need ettepanekud, mis vastavad eeskirjad, saab määrata allpool ilmuvad seda vaadet."; +$LANG["text_filters_tips"] = "Näpunäiteid, kuidas kasutada esitamise filtrid vaata kasutaja Dokumentatsioon."; +$LANG["text_forgot_password"] = "Pole probleemi. Lihtsalt sisesta oma kasutajanimi allpool ja logini saadetakse teie e-posti aadress faili. Kui olete oma kasutajanime ära unustanud, saatke palun administraatori poole aadressil {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Käesolev vorm on üks või mitu faili üleslaadimise väljad:"; +$LANG["text_form_placeholder_info"] = "Järgmised kohatäited võib kasutada igas e-posti malli ja keele kohatäide valdkonnas, sõltumata sellest, mis iganes View email mall on määratud. KÜSIMUS Kohanäitajate konkreetse vormi küsimus; VASTUS kohatäited on vastused igale küsimusele."; +$LANG["text_form_submission_date_placeholder"] = "Kuupäev, millal esitamise tehti."; +$LANG["text_form_tools_form_url"] = "Täielik URL kujul. See on ainult väärtust External vorme."; +$LANG["text_form_tools_login_url"] = "Login URL vorm tööriistad."; +$LANG["text_form_view_permission_info_admin"] = "Märkus: käesolev vorm on praegu Administraator juurdepääsu tüüp, nii et ükski klient kontod on võimalik näha seda vaadet."; +$LANG["text_form_view_permission_info_private"] = "Märkus: käesolev vorm on praegu Private Ligipääsu tüüp nii avaliku ja erasektori võimalusi siin on piiratud, et alagrupis klientidele."; +$LANG["text_ft_installed"] = "Palju õnne, vorm Vahendid on edukalt installeeritud!"; +$LANG["text_global_placeholder_info"] = "Need kohanäitajad võib kasutada mistahes mall ja tahes kujul."; +$LANG["text_group_name_explanation"] = "For väljad lisatakse kaudu Lisa Form protsess, see väärtus on eeltäidetud ekraanile tekst mis tahes valdkonnas kasutab väärtust. Võite seda muuta, et paremini iseloomustada sisu."; +$LANG["text_install_create_config_file"] = "Vorm Vahendid salvestab teie serveri ja andmebaasi seaded faili nimega config.php, leida oma / maailma / kausta. Klõpsa "Loo fail" nupp automaatselt genereerida faili oma serverisse."; +$LANG["text_install_create_database_tables"] = "Nüüd lähed luua vorm Vahendid andmebaasi tabelites. See samm eeldab andmebaas ise on juba loodud. Kui te ei tea, kuidas seda teha, võtke ühendust isännöintipalveluntarjoajaasi."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server" Tavaliselt tähendab, et hostname teil on ebaõige. Võibolla proovida millega see "localhost" - see on üldine viis viidata "kohalike" andmebaasi serverist."; +$LANG["text_install_db_tables_error_tip_2"] = ""Ei saa ühendust kohaliku MySQL serveri kaudu pesa" tähendab andmebaasi hostname valdkonnas on jälle vale."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" tähendab, et probleem on olemas oma kasutajanime / parooli kombinatsiooni."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... andmebaasi ..." tähendab, et kuigi oma kasutajanimi ja parool, mida tarnitakse on õige, ei suuda ta ühendada, et eelkõige andmebaasi kontoga. See võib tähendada, et kas teie andmebaasi nimi on vale, või et selle kasutaja konto ei ole seotud andmebaasi."; +$LANG["text_install_email_content_text"] = "Meie veebisaidil on palju ressursse, mis aitavad teil alustada, sh meie veebidokumentide (https://docs.formtools.org) ja õpetuste (https://docs.formtools.org/tutorials). Kui leiate, et olete kinni või teil on küsimus, küsige githubist (https://github.com/formtools/core/issues/) küsimust."; +$LANG["text_install_form_tools_server_not_supported"] = "Vabandust, vorm Tools ei saa sõita oma server. Palun kliki siia, et miinimumnõuetele."; +$LANG["text_install_system_check"] = "See leht jookseb mõned katsed oma süsteemi, et tagada see on võimelised sõitma vorm tööriistad."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Internal vorme ainult vorm Tools - mujal saidil. Ainult vormi Tools kasutajakontod on juurdepääs vormis. Valige see, kui sul ei ole olemasoleva vormi."; +$LANG["text_internal_form_intro"] = "Kasutage allpool olevat vormi, et luua uus Internal vormis. Kõik seadistused, kaasaarvatud arv ja sisu väljad saab muuta ja seadistada hiljem."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Selleks, et sisselogimise ja kasutamise vorm Vahendid peab teil olema JavaScript lubatud brauseris. Palun võimaldada tal nüüd, ja klõpsake värskenda brauseris."; +$LANG["text_last_modified_date_explanation_c"] = "Viimasel ajal on see väide on muudetud. Uute esildised, see on sama nagu:"; +$LANG["text_limit_email_content_desc"] = "See valik toimib ainult HTML ja teksti sisu loodud Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(ainult nimekirjade Vaatamisi üks või mitu filtreid määratleda)"; +$LANG["text_log_in_to_ft"] = "Logi vorm Tööriistad"; +$LANG["text_login"] = "Logi sisse allpool juurdepääsu (\$ programmi_nimi) Administration Panel. Kui oled unustanud parooli, kliki siia."; +$LANG["text_login_info"] = "Kuna taotletud on siin logini."; +$LANG["text_name_of_form"] = "Nimi kujul."; +$LANG["text_no_clients"] = "Praegu ei ole klientide andmebaasi. Et lisada uue kliendi kontole, klõpsa Lisa Klient nupp."; +$LANG["text_no_clients_found"] = "Nr kliendid ei leitud. Proovige laiendada otsingu kriteeriumid."; +$LANG["text_no_fields_in_view"] = "See vaade ei ole väljad ta. Klõpsake linki allpool."; +$LANG["text_no_forms"] = "Praegu ei ole vorme andmebaasi. Et lisada uus vorm, klõpsake käsku Lisa Vorm nupp."; +$LANG["text_no_forms_found"] = "Ei vorme ei leitud."; +$LANG["text_no_forms_found_search"] = "Ei vorme ei leitud. Proovige laiendada oma otsingut."; +$LANG["text_no_modules_found"] = "Nr mooduleid ei leitud. Proovige laiendada otsingu kriteeriumid."; +$LANG["text_no_recipients_added"] = "Nr saajad on lisatud."; +$LANG["text_no_search_results"] = "Ei ole tulemusi käesoleva otsingukriteeriume / Vaade."; +$LANG["text_no_submissions_found"] = "Sorry, no väidetele ei leitud."; +$LANG["text_no_themes"] = "Sa ei pea iga teema määratletud. Klikka allolevale nupule, et värskendada oma teemade nimekirjas, või kontrollige vorm Tools kasutaja dokumentatsiooni teavet lisades teemasid."; +$LANG["text_non_deletable_fields"] = "See väli on kasutusel Core skripti ja ei saa redigeerida või kustutada, põhjustamata vastuolud. Kui soovite teha muudatusi valdkonnas tüübi, teha koopia ja muutke koopia."; +$LANG["text_option_list_group_explanation"] = "Kui see on valitud, see võimaldab grupeerida oma võimalusi. Kuidas rühmad kuvatakse sõltub väljal selle võimaluse kasutamise nimekiri."; +$LANG["text_option_list_page"] = "Raadio nupud, ruudud, ripploendid ja multi-vali rippmenüüst väljad kõik annavad kasutajale mitmeid võimalusi, kust nad saavad valida ühe või mitu üksust. Vormis Tööriistad, need on tuntud kui võimalus loendid. Tavaliselt on loodud automaatselt Lisa väline vorm protsess, kuid saate käsitsi lisada või muuta oma valik allpool esitatud nimekirju, kui oma vormi sisu muutub või siis ehitada valdkondades, mis on vaid kasutatakse ettevõttesiseselt."; +$LANG["text_option_list_used_by_fields"] = "See valik nimekiri on kasutada mitu vormi väljad. Kui sul ajakohastavad seda teavet allpool, siis on see muutunud kõik väljad (vt vormiväljad sakk näha nimekirja valdkondadest). Kui soovite uuendada väärtusi ühe või alagrupis valdkondades, mis on praegu määratud, kliki siin luua uus võimalus nimekirja samu väärtusi see üks. Siis saab määrata vormi väljadele soovite uue grupiga."; +$LANG["text_public_form_omit_list_page"] = "Avalik vormid teile kasu üürile kõigi klientide kontodele juurdepääsu neile ilma käsitsi määrata iga klient neile. Sellel leheküljel saate täpselt neid kliente, kes ei pruugi kasutada seda vormi, kuigi vorm on märgitud avalikuks kasutamiseks."; +$LANG["text_public_view_omit_list_page"] = "Avalik Vaatamisi teile kasu üürile kõigi klientide kontodele juurdepääsu neile ilma käsitsi määrata iga klient neile. Sellel leheküljel saate täpselt neid kliente, kes ei pruugi kasutada seda eelkõige silmas."; +$LANG["text_reference_tab_info"] = "Sellel lehel kuvatakse kõik kohatäited olemas oma vorm. Kohatäited on stringid, mida saab kasutada e-posti malle ja märgistatud väljad erilist placeholder ikoon . Kui sisestatud valdkonnas, nad on dünaamiliselt ümber asjakohasele väärtusele, kui väli on vaadatud või e-posti on saadetud."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Review kasutaja dokumentatsioon"; +$LANG["text_send_email_from_edit_submission_page"] = "Kaasa võimalus saata see e-kiri Muuda esitamine leht"; +$LANG["text_smart_fill_option_list_problem"] = "Me ei suutnud Smart Täitke oma valdkonna võimalusi. Aga alternatiivina võid proovida uploading koopia oma vormi lehe all olevale väljale. Märkus: ärge laadida toores PHP leheküljed (või muu server-side code) - lihtsalt laadige HTML versiooni. Saada see, vaadata ja salvestada lehel oma veebilehitsejat."; +$LANG["text_submission_ip_address"] = "IP-aadress, kasutaja, kes tegi selle esitamist."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Kasutage allpool olevat vormi, et kas vaadata või saata endale e-post saadud selle e malli. E-post on vaid saata e-posti allpool; peamine, cc ja bcc-posti aadress saajate ignoreeritakse, samas katsetamine."; +$LANG["text_test_email_templates_no_submissions"] = "Selleks, et testida oma e-posti malle, peate esmalt läbib vähemalt ühte vormi esitamist."; +$LANG["text_theme_page_intro"] = "See lehekülg loetleb kõik oma teemad. Klõpsa pisipildil, et näha suuremat näide teema on stiilid. "Võimalik" kast määrab, kas selle teema võib valitud klientidele. Sirvida kõiki olemasolevaid teemasid, külastage vorm Vahendid veebilehel."; +$LANG["text_tutorial_adding_first_form"] = "Loengumaterjal: lisamine oma esimese kujul!"; +$LANG["text_unique_submission_id"] = "Unikaalne esitamise ID."; +$LANG["text_unused_option_list"] = "See valik nimekirjas ei kasutata mis tahes vormi väljad."; +$LANG["text_upgraded"] = "Paigaldus on täiendatud, et {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "See valik nimekiri on kasutusel järgmised väljad."; +$LANG["text_view_fields_info"] = "See kaart kontrolle, mis välju näidata üles, kui muudate esitamine selles vaates, nende järjekorras ja kas nad on muudetav või mitte."; +$LANG["text_view_tab_summary"] = "Sellel kaardil saab luua erinevaid võimalusi, kuidas grupp ja korraldada oma andmed. Vaatamisi saate luua kohandatud alamhulkade oma vormi andmeid jagada selle juhitavuse tükkideks ning piirata mida kliendid võivad näha või muuta."; +$LANG["validation_account_disabled"] = "Vabandust, teie konto on blokeeritud."; +$LANG["validation_account_not_recognized"] = "Vabandust, et kasutajanimi ei tuvastata."; +$LANG["validation_account_not_recognized_info"] = "Vabandust, et kasutajanime ei leitud. Palun proovige uuesti või pöörduge oma administraatori poole aadressil allpool."; +$LANG["validation_account_pending"] = "Sinu kasutajakonto on menetluses heaks kiitnud administraator."; +$LANG["validation_check_delete_client"] = "Kas olete kindel, et soovite kustutada selle kliendi kontot?"; +$LANG["validation_client_password_missing_number"] = "Kliendi salasõna peab sisaldama vähemalt ühte numbrit (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Kliendi salasõna peab sisaldama vähemalt ühte järgmistest tähtedega: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Kliendi salasõna peab sisaldama vähemalt ühe suurtäheliseks."; +$LANG["validation_client_password_too_short"] = "Kliendi parool peab olema vähemalt {\$number} tähemärki."; +$LANG["validation_col_name_is_reserved_word"] = "Vabandame, see andmebaasi veerg nimi on reserveeritud tööd MySQL. Palun nimetada seda!"; +$LANG["validation_db_name"] = "Andmebaasi nimed ei tohi sisaldada perioodi ega kaldkriipsu."; +$LANG["validation_db_not_updated_invalid_input"] = "Andmebaasi ei saa uuendada. Palun vaadata, väärtused sisestatud kehtivad."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Vabandame, vaikimisi administraatori ja kliendi teemad tuleb alati sisse lülitatud."; +$LANG["validation_default_phone_num_required"] = "Palun täitke täis telefoninumber <b> { \$ valdkonnas} </ b> field - ainult numbreid."; +$LANG["validation_default_rule_alpha"] = "Palun siseneda ainult tähed ja numbrid <b> { \$ valdkonnas} </ b> väljale."; +$LANG["validation_default_rule_letters_only"] = "Palun siseneda ainult tähti <b> { \$ valdkonnas} </ b> väljale."; +$LANG["validation_default_rule_numbers_only"] = "Palun sisestada ainult numbreid <b> { \$ valdkonnas} </ b> väljale."; +$LANG["validation_default_rule_required"] = "Palun sisesta väärtus <b> { \$ valdkonnas} </ b> väljale."; +$LANG["validation_default_rule_valid_email"] = "Palun sisesta kehtiv e-posti aadressi <b> { \$ valdkonnas} </ b> väljale."; +$LANG["validation_delete_form_confirm"] = "Palun märgistage kast kinnitada, et soovite kustutada selle vormi."; +$LANG["validation_delete_non_empty_option_list"] = "Hoiatus! See valik nimekiri on kasutusel üks või mitu vormi väljad. Kustutamine see teeb neis valdkondades enam korralikult töötada."; +$LANG["validation_display_names_incomplete"] = "Palun sisestage väärtus kõigi nimede kasutamine või klõpsake Smart Täida võimalus siseneda neid dünaamiliselt."; +$LANG["validation_duplicate_form_field_name"] = "Sa ei saa mitut välja sama valdkonna nimetus."; +$LANG["validation_email_not_found_or_invalid"] = "Vabandame, e-posti kontoga kas puudub või on kehtetu."; +$LANG["validation_folder_invalid_permissions"] = "Et käesoleva katse, load tuleb kehtestada upload kausta, mis võimaldab lugemisel ja kirjutamisel failide (777 kohta, Unix)."; +$LANG["validation_folder_not_writable"] = "See kaust ei ole kirjutatav."; +$LANG["validation_internal_form_too_many_fields"] = "Vabandust, saab ainult luua vormid 1000 väljad või vähem."; +$LANG["validation_invalid_admin_email"] = "Palun sisesta kehtiv adminstrator e-posti aadress."; +$LANG["validation_invalid_admin_username"] = "Sinu kasutajanimi võivad sisaldada ainult tähti, numbreid (AZ ja 0-9)."; +$LANG["validation_invalid_client_username"] = "Kliendi kasutaja nimi võib koosneda ainult tähtedest ja numbritest (az ja 0-9)."; +$LANG["validation_invalid_client_username2"] = "Vabandame, kasutajanimi on see võib sisaldada ainult tähti, numbreid ja alakriips. Palun sisesta uus kasutajanimi."; +$LANG["validation_invalid_column_name"] = "Veerunimesid võib ainult tähti (AZ, 0-9). Palun kontrollige veeru nimed."; +$LANG["validation_invalid_custom_from_email"] = "Palun sisesta kehtiv kohandatud Saatja e-posti aadress."; +$LANG["validation_invalid_custom_reply_to_email"] = "Palun sisesta kehtiv tava Vastus e-posti aadress."; +$LANG["validation_invalid_default_sessions_timeout"] = "Palun sisesta kehtiv väärtus (number) vaikimisi istungid timeout."; +$LANG["validation_invalid_email"] = "Palun sisesta kehtiv e-posti aadress."; +$LANG["validation_invalid_email_id"] = "Vabandust, see on vigane email ID."; +$LANG["validation_invalid_folder"] = "Vabandust, aga see ei tundu olevat sobilik."; +$LANG["validation_invalid_form_field_names"] = "Vorm valdkondades võib ainult tähti ja alljooned (AZ, 0-9, _), kellel ei ole ruume."; +$LANG["validation_invalid_num_clients_per_page"] = "Palun sisestada ainult numbreid Num Kliente Per Page valdkonnas."; +$LANG["validation_invalid_num_emails_per_page"] = "Palun sisestada ainult numbreid võtta e-kirju iga lehekülje eest."; +$LANG["validation_invalid_num_form_fields"] = "Palun ainult numbreid mitmes valdkonnas valdkonnas."; +$LANG["validation_invalid_num_forms_per_page"] = "Palun sisestada ainult numbreid Num Blanketid Per Page valdkonnas."; +$LANG["validation_invalid_num_menus_per_page"] = "Palun sisestada ainult numbreid jaoks menüüd lehekülje kohta."; +$LANG["validation_invalid_num_modules_per_page"] = "Palun sisestada ainult numbreid Num Moodulid Per Page valdkonnas."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Palun ainult numbreid Num Option Nimekirjad Per Page valdkonnas."; +$LANG["validation_invalid_num_submissions_per_page"] = "Palun sisesta kehtiv number pakkumiste lehel."; +$LANG["validation_invalid_sessions_timeout"] = "Palun sisesta kehtiv ajalõpp (täisarvud ainult!)."; +$LANG["validation_invalid_tab_assign_values"] = "Palun sisestada vaid numbrid "alates" ja "" valdkondades."; +$LANG["validation_invalid_table_prefix"] = "Palun sisesta andmebaasi eesliite koosneb kirja ja alakriips ainult."; +$LANG["validation_invalid_upload_folder"] = "Serveri paigaldamist PHP on vigane seadistus upload_tmp_dir väärtus. "{\$upload_folder}" ei ole sobilik."; +$LANG["validation_invalid_url"] = "Palun sisesta kehtiv URL."; +$LANG["validation_invalid_username"] = "Sinu kasutajanimi võib koosneda ainult tähtedest ja numbritest (az ja 0-9)."; +$LANG["validation_is_form_active"] = "Palun märkige, kas vorm on aktiivne või mitte."; +$LANG["validation_menu_name_taken"] = "Vabandust, selle menüü nimi on juba võetud. Palun valige uus nimi."; +$LANG["validation_modules_search_no_status"] = "Palun vali kas lubada või keelata ruudud."; +$LANG["validation_no_access_type"] = "Palun sisestage Ligipääsu tüüp."; +$LANG["validation_no_account_logout_url"] = "Palun sisestage oma logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Palun sisesta uus parool."; +$LANG["validation_no_account_password_confirmed2"] = "Palun sisesta uuesti uus parool."; +$LANG["validation_no_admin_email"] = "Palun sisestage administraatori e-posti aadressi."; +$LANG["validation_no_admin_theme"] = "Valige teema administraatori konto."; +$LANG["validation_no_admin_theme_swatch"] = "Palun valige proovilapp administraator teema."; +$LANG["validation_no_client_email"] = "Palun sisestage kliendi aadress."; +$LANG["validation_no_client_first_name"] = "Palun sisestage kliendi eesnimi."; +$LANG["validation_no_client_last_name"] = "Palun sisestage kliendi perekonnanimi."; +$LANG["validation_no_client_login_page"] = "Palun märkige, millist lehte klient tuleb suunata, kui nad sisse logida"; +$LANG["validation_no_client_password"] = "Palun sisestage kliendi parool."; +$LANG["validation_no_client_theme_swatch"] = "Palun valige default proovilapp klientide kontodele."; +$LANG["validation_no_client_username"] = "Palun sisestage kliendi kasutajanime."; +$LANG["validation_no_column_name"] = "Palun sisestage kõik veerunimesid või klõpsake Smart Täitke nupp automaatselt täita neid."; +$LANG["validation_no_column_selected"] = "Palun valige vähemalt üks väli kuvatakse veerus esitamise nimekiri leheküljel."; +$LANG["validation_no_custom_from_email"] = "Palun sisestage kohandatud Saatja e-posti aadress."; +$LANG["validation_no_custom_recipient_email"] = "Palun sisestage kohandatud e-posti aadress."; +$LANG["validation_no_custom_reply_to_email"] = "Palun sisestage kohandatud Vastus e-posti aadress."; +$LANG["validation_no_date_format"] = "Sisestage kuupäev formaadis."; +$LANG["validation_no_db_column_single"] = "Palun sisestage andmebaasi veerg nimi."; +$LANG["validation_no_db_hostname"] = "Palun sisestage andmebaasi nime."; +$LANG["validation_no_db_name"] = "Palun sisestage andmebaasi nimi."; +$LANG["validation_no_db_username"] = "Palun sisestage andmebaasi konto kasutajanimi."; +$LANG["validation_no_default_client_theme"] = "Valige vaikimisi teema kõigi uute klientide kontodele."; +$LANG["validation_no_default_language"] = "Valige vaikimisi keel installi vorm tööriistad."; +$LANG["validation_no_default_sessions_timeout"] = "Palun sisestage default session timeout kasutaja kontod."; +$LANG["validation_no_display_text"] = "Palun sisesta Kuvatekst kõik väljad."; +$LANG["validation_no_display_text_single"] = "Palun sisesta Kuvatekst väärtus."; +$LANG["validation_no_edit_submission_page_label"] = "Palun sisestage Muuda esitamine leht etiketil."; +$LANG["validation_no_email"] = "Palun sisestage oma e-posti aadressi."; +$LANG["validation_no_email_config_field"] = "Palun täpsustage, mis moodustavad valdkonnas on e-posti välja."; +$LANG["validation_no_email_content"] = "Palun sisesta e-posti sisu vähemalt ühe formaadid (HTML või tekst)."; +$LANG["validation_no_email_from_field"] = "Palun e-posti "alates" väljale."; +$LANG["validation_no_email_template_name"] = "Palun sisesta e-posti malli nimi."; +$LANG["validation_no_email_template_view_id"] = "Palun valige Vaata, mis see e malli tuleks kaardistada."; +$LANG["validation_no_email_template_view_mapping_value"] = "Palun märkige, kui e-posti saata."; +$LANG["validation_no_enabled_themes"] = "Veenduge, et vähemalt üks teema on aktiveeritud."; +$LANG["validation_no_first_name"] = "Palun sisestage oma eesnimi."; +$LANG["validation_no_form_field_name"] = "Palun sisesta kõik vormi valdkonnas nimed."; +$LANG["validation_no_form_field_single"] = "Palun sisesta vormi välja väärtus."; +$LANG["validation_no_form_id"] = "Vorm ID ei ole määratud. Palun logi välja ja proovi uuesti."; +$LANG["validation_no_form_name"] = "Palun sisesta vormi nimi."; +$LANG["validation_no_form_url"] = "Palun sisesta vorm URL."; +$LANG["validation_no_last_name"] = "Palun sisestage oma perekonnanimi."; +$LANG["validation_no_login_page"] = "Palun märkige, millist lehte soovite saata iga kord kui logid sisse"; +$LANG["validation_no_logout_url"] = "Palun sisestage logout URL."; +$LANG["validation_no_main_email_recipient"] = "Palun sisesta vähemalt üks peamisi e-posti saaja (st mitte Cc või Bcc)."; +$LANG["validation_no_menu"] = "Palun valige menüüst selle kasutaja konto."; +$LANG["validation_no_menu_id"] = "Palun valige menüü."; +$LANG["validation_no_num_clients_per_page"] = "Palun sisesta arv kliendi kontod lehel."; +$LANG["validation_no_num_emails_per_page"] = "Palun sisestage e-meilide arv nimekirja iga lehekülje eest."; +$LANG["validation_no_num_form_fields"] = "Palun sisesta mitmes valdkonnas oma vormi."; +$LANG["validation_no_num_forms_per_page"] = "Palun sisestage vormide arvu lehel."; +$LANG["validation_no_num_menus_per_page"] = "Palun sisesta arv menüüde nimekirja iga lehekülje eest."; +$LANG["validation_no_num_modules_per_page"] = "Palun sisestage moodulite arv lehekülje kohta."; +$LANG["validation_no_num_option_lists_per_page"] = "Palun sisestage number variandi nimekirjade iga lehekülje eest."; +$LANG["validation_no_num_submissions_per_page"] = "Palun sisestage number Märkused kuvada lehel."; +$LANG["validation_no_option_list_name"] = "Palun sisesta valikloendist nimi."; +$LANG["validation_no_page_titles"] = "Palun sisesta vaikimisi lehe pealkirjad kasutaja kontosid."; +$LANG["validation_no_password"] = "Palun sisestage oma parool."; +$LANG["validation_no_program_name"] = "Palun sisesta programmi nimi."; +$LANG["validation_no_second_password"] = "Palun sisesta uuesti oma parool."; +$LANG["validation_no_sessions_timeout"] = "Palun sisestage ajalõpp."; +$LANG["validation_no_smart_fill_values"] = "Palun sisestage kujul välja nime ja URL-i kujul."; +$LANG["validation_no_table_prefix"] = "Palun sisesta andmebaasi eesliide."; +$LANG["validation_no_tabs_defined"] = "Nr kaardid määratletud"; +$LANG["validation_no_test_email_recipient"] = "Palun sisestage e-posti aadress kus me peaks saatma test email."; +$LANG["validation_no_test_email_submission_id"] = "Palun sisestage esitamise ID number."; +$LANG["validation_no_theme"] = "Palun valige teema."; +$LANG["validation_no_theme_swatch"] = "Palun valige proovilapp valitud teema."; +$LANG["validation_no_timezone_offset"] = "Palun sisestage ajavöönd kompenseerida."; +$LANG["validation_no_titles"] = "Palun sisestage pealkirjas."; +$LANG["validation_no_two_column_names"] = "Vabandame, sa ei tohi siseneda samas andmebaasis veeru nime kaks korda."; +$LANG["validation_no_ui_language"] = "Vali keel kasutajaliides."; +$LANG["validation_no_url"] = "Palun sisesta URL."; +$LANG["validation_no_username"] = "Palun sisesta kasutajanimi."; +$LANG["validation_no_username_or_js"] = "Peate sisestama oma kasutajanime. Palun aktiveeri JavaScript oma brauseri."; +$LANG["validation_no_view_fields"] = "Teie arvates ei sisalda väljad! Teil tuleb määrata vähemalt üks väli seal midagi näidata, kuni teie arvates."; +$LANG["validation_no_view_fields_selected"] = "Palun vali üks või rohkem välju lisada View."; +$LANG["validation_no_view_name"] = "Palun sisesta nimi oma vaade."; +$LANG["validation_num_rows_to_add"] = "Palun sisesta arv ridu lisada."; +$LANG["validation_option_list_name_taken"] = "Vabandame, see valikloendist nimi on juba võetud. Palun valige uus nimi."; +$LANG["validation_password_in_password_history"] = "Turvalisuse, ei saa te sisestada sama parool kui iga viimane {\$history_size} paroole. Palun sisestage erinev parool."; +$LANG["validation_passwords_different"] = "Palun veenduge, et paroolid on samad."; +$LANG["validation_please_enter_search_date_range"] = "Palun vali otsingu kuupäeva vahemik."; +$LANG["validation_please_enter_search_keyword"] = "Palun sisestage otsingusõna."; +$LANG["validation_select_field_type"] = "Palun valige kirjuta."; +$LANG["validation_select_submissions_to_copy"] = "Palun valige need esildised, mida soovite kopeerida."; +$LANG["validation_select_submissions_to_delete"] = "Palun valige neid nõudmisi, mida soovite kustutada."; +$LANG["validation_smart_fill_cannot_fill"] = "Vabandame, kuid me ei suutnud täita selles valdkonnas."; +$LANG["validation_smart_fill_invalid_field_type"] = "Me ei suutnud leida valdkonnas, kuid see ei ole siin omaette, ruut või raadio grupp."; +$LANG["validation_smart_fill_no_field_found"] = "Vabandame, aga me ei leidnud vorm valdkonnas selle nimega lehe täpsustada."; +$LANG["validation_smart_fill_no_page"] = "Palun leida leht, mis sisaldab valdkonna soovid Smart Täitke."; +$LANG["validation_smart_fill_upload_all_pages"] = "Palun laadige kõik lehed oma vormi."; +$LANG["validation_upload_folder_not_writable"] = "See ajutine upload kausta määratud teie PHP installi ei ole kirjutatav. Kuni see on kinnitatud, faile ei saadeta kaudu vorm Tööriistad (või mõne muu PHP programm). Palun pöörduge oma hostingu pakkujaga."; +$LANG["validation_upload_html_files_only"] = "Saada ainult HTML-faile."; +$LANG["validation_username_taken"] = "Vabandust, et kasutajanimi on juba võetud. Palun sisesta mõni teine kasutajanimi."; +$LANG["validation_wrong_password"] = "Vabandust, et parool ei sobi."; +$LANG["word_about"] = "Kohta"; +$LANG["word_access"] = "Juurdepääs"; +$LANG["word_account"] = "Konto"; +$LANG["word_account_sp"] = "Konto (de)"; +$LANG["word_accounts"] = "Kontod"; +$LANG["word_action"] = "Action"; +$LANG["word_active"] = "Aktiivne"; +$LANG["word_add"] = "Lisama"; +$LANG["word_add_rightarrow"] = "Lisa »"; +$LANG["word_add_uc_rightarrow"] = "Veel »"; +$LANG["word_administration"] = "Administratsioon"; +$LANG["word_administrator"] = "Administraator"; +$LANG["word_after"] = "Pärast"; +$LANG["word_aquamarine"] = "Akvamariin"; +$LANG["word_asc"] = "ASC"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«tagasi"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Enne"; +$LANG["word_benefits"] = "Kasu"; +$LANG["word_blue"] = "Sinine"; +$LANG["word_cancel"] = "Tühistama"; +$LANG["word_cc_c"] = "Koopia:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Ruudud"; +$LANG["word_checklist"] = "Meelespea"; +$LANG["word_client"] = "Klient"; +$LANG["word_client_c"] = "Klient:"; +$LANG["word_clients"] = "Kliendid"; +$LANG["word_close"] = "Sulgema"; +$LANG["word_code"] = "Kood"; +$LANG["word_column"] = "Veerg"; +$LANG["word_columns"] = "Veerud"; +$LANG["word_columns_sp"] = "Kolonn (id)"; +$LANG["word_complete"] = "Täielik"; +$LANG["word_configuration"] = "Konfiguratsioon"; +$LANG["word_content"] = "Sisu"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Jätka »"; +$LANG["word_copy"] = "Kopeeri"; +$LANG["word_custom"] = "Tava"; +$LANG["word_data"] = "Andmed"; +$LANG["word_date"] = "Kuupäev"; +$LANG["word_debugging_c"] = "Silumine:"; +$LANG["word_delete"] = "Kustutama"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Otsene"; +$LANG["word_disabled"] = "Puudega"; +$LANG["word_documentation"] = "Dokumentatsioon"; +$LANG["word_done"] = "Tehtud"; +$LANG["word_drawbacks"] = "Puudujäägid"; +$LANG["word_dropdown"] = "Avatavad"; +$LANG["word_edit"] = "Edit"; +$LANG["word_editable"] = "Redigeeritavus"; +$LANG["word_email"] = "Saada"; +$LANG["word_email_c"] = "E-post:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Lubatud"; +$LANG["word_equals"] = "Vastus"; +$LANG["word_error"] = "Viga"; +$LANG["word_error_c"] = "Viga:"; +$LANG["word_examples_c"] = "Näited:"; +$LANG["word_external"] = "External"; +$LANG["word_fail"] = "Negatiivse"; +$LANG["word_field"] = "Väli"; +$LANG["word_field_sp"] = "Tegevusala (d)"; +$LANG["word_fields"] = "Valdkonnad"; +$LANG["word_fields_sp"] = "Väli (s)"; +$LANG["word_file"] = "Fail"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Failid"; +$LANG["word_filters"] = "Filtrid"; +$LANG["word_filters_sp"] = "Filter (s)"; +$LANG["word_for"] = "jaoks"; +$LANG["word_form"] = "Vorm"; +$LANG["word_form_c"] = "Vorm:"; +$LANG["word_formatting"] = "Formatting"; +$LANG["word_forms"] = "Blanketid"; +$LANG["word_found"] = "Leidis"; +$LANG["word_from"] = "Alates"; +$LANG["word_from_c"] = "Kellelt:"; +$LANG["word_general"] = "Üldine"; +$LANG["word_green"] = "Roheline"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Kõrgus"; +$LANG["word_help"] = "Aitama"; +$LANG["word_hidden"] = "Peidetud"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Horisontaalne"; +$LANG["word_hour"] = "Tund"; +$LANG["word_hours"] = "Tunnid"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Pilt"; +$LANG["word_incomplete"] = "Mittetäielik"; +$LANG["word_install"] = "Install"; +$LANG["word_installation"] = "Paigaldamine"; +$LANG["word_internal"] = "Sisemine"; +$LANG["word_language"] = "Keel"; +$LANG["word_large"] = "Suur"; +$LANG["word_like"] = "Meeldima"; +$LANG["word_login"] = "Sisse logima"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Välju"; +$LANG["word_main"] = "Peamine"; +$LANG["word_medium"] = "Keskmine"; +$LANG["word_menu"] = "Menüü"; +$LANG["word_menus"] = "Menüüd"; +$LANG["word_minutes"] = "minutit"; +$LANG["word_misc"] = "Varia"; +$LANG["word_module"] = "Moodul"; +$LANG["word_modules"] = "Moodulid"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Nimi"; +$LANG["word_name_c"] = "Nimi:"; +$LANG["word_never"] = "Mitte kunagi"; +$LANG["word_next_rightarrow"] = "järgmine »"; +$LANG["word_next_step_rightarrow"] = "Järgmine etapp »"; +$LANG["word_no"] = "Ei"; +$LANG["word_none"] = "Mitte ükski"; +$LANG["word_notes"] = "Märkused"; +$LANG["word_notification"] = "Teade"; +$LANG["word_number"] = "Number"; +$LANG["word_off"] = "Maha"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Hästi"; +$LANG["word_on"] = "Peal"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operaator"; +$LANG["word_options"] = "Valikud"; +$LANG["word_orange"] = "Oranž"; +$LANG["word_order"] = "Kord"; +$LANG["word_other"] = "Muu"; +$LANG["word_other_c"] = "Muu:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Leht:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Parool"; +$LANG["word_password_c"] = "Parool:"; +$LANG["word_pending"] = "Ootel"; +$LANG["word_permissions"] = "Õigused"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«eelmine"; +$LANG["word_private"] = "Eraldi"; +$LANG["word_public"] = "Avalik"; +$LANG["word_purple"] = "Purpurne"; +$LANG["word_recipient"] = "Vastuvõtja"; +$LANG["word_recipient_sp"] = "Saaja (te)"; +$LANG["word_red"] = "Punane"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Eemaldama"; +$LANG["word_remove_uc_leftarrow"] = "«Eemalda"; +$LANG["word_reply_to"] = "Vastus"; +$LANG["word_reply_to_c"] = "Vastus:"; +$LANG["word_required"] = "Nõutav"; +$LANG["word_reset"] = "Nulli"; +$LANG["word_resolved"] = "Lahendatud"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rida"; +$LANG["word_search"] = "Otsima"; +$LANG["word_searchable"] = "Otsida"; +$LANG["word_select"] = "Vali"; +$LANG["word_setting"] = "Säte"; +$LANG["word_settings"] = "Seaded"; +$LANG["word_show"] = "Näitama"; +$LANG["word_size"] = "Suurus"; +$LANG["word_skipped"] = "Vahele"; +$LANG["word_small"] = "Väike"; +$LANG["word_solution"] = "Lahendus"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Staatus"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Teema"; +$LANG["word_subject_c"] = "Teema"; +$LANG["word_submenu"] = "Alammenüü"; +$LANG["word_submission"] = "Esitamine"; +$LANG["word_submissions"] = "Ettepanekud"; +$LANG["word_system"] = "Süsteem"; +$LANG["word_tab"] = "Sakk"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Testima"; +$LANG["word_text"] = "Tekst"; +$LANG["word_textarea"] = "Tekstiala"; +$LANG["word_textbox"] = "Tekstikast"; +$LANG["word_theme"] = "Teema"; +$LANG["word_themes"] = "Teemad"; +$LANG["word_time"] = "Aeg"; +$LANG["word_tiny"] = "Pisike"; +$LANG["word_tips"] = "Nõuanded"; +$LANG["word_today"] = "Täna"; +$LANG["word_truncate_q"] = "Kärpida?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Tundmatu"; +$LANG["word_update"] = "Värskendama"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Kasutaja"; +$LANG["word_username"] = "Kasutajanimi"; +$LANG["word_username_c"] = "Kasutajanimi:"; +$LANG["word_validation"] = "Kinnitamine"; +$LANG["word_value"] = "Väärtus"; +$LANG["word_value_sp"] = "Väärtus (ed)"; +$LANG["word_verified"] = "Kontrollitud"; +$LANG["word_verify"] = "Kontrollima"; +$LANG["word_version"] = "Versioon"; +$LANG["word_vertical"] = "Vertikaalne"; +$LANG["word_view"] = "Vaade"; +$LANG["word_views"] = "Vaatamisi"; +$LANG["word_warning"] = "Hoiatus!"; +$LANG["word_warning_c"] = "Hoiatus:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Tere tulemast!"; +$LANG["word_width_c"] = "laius:"; +$LANG["word_words"] = "Sõnad"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Kollane"; +$LANG["word_yes"] = "Jah"; \ No newline at end of file diff --git a/global/lang/fa.php b/global/lang/fa.php new file mode 100644 index 00000000..b596659a --- /dev/null +++ b/global/lang/fa.php @@ -0,0 +1,1219 @@ +اخطار!
    که شما انتخاب {\$num_selected_on_page} مطلب و مقاله در این صفحه و {\$num_selected_on_other_pages} در صفحات دیگر. لطفا انتخاب یکی از گزینه های زیر می باشد :
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "اخطار! شما هر گونه مطلب و مقاله در این صفحه انتخاب شده نیست بلکه انتخاب کرده اید {\$num_selected_on_other_pages} در صفحات دیگر. لطفا می خواهید پاک کنید این را تایید مطلب و مقاله.
    "; +$LANG["confirm_delete_view"] = "آیا مطمئن هستید که می خواهید پاک کنید این نمایش؟"; +$LANG["confirm_refresh_page"] = "آیا شما مطمئن هستید که می خواهید به روز کردن صفحه؟ با این کار هر گونه تغییرات شما را ساخته اند از دست بدهند."; +$LANG["confirm_save_change_before_redirect"] = "یک یا بیشتر زمینه های به روز شده اند. آیا می خواهید برای ذخیره کردن تغییرات خود را قبل از هدایت؟"; +$LANG["confirm_smart_fill_db_column_fields"] = "آیا مطمئن هستید که می خواهید پر کنید هوشمند به پایگاه نام ستون؟ با این کار ارزش های موجود خود را روی چیزی نوشتن."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "این گزینه خودکار تولید پایگاه داده نام ستون بر اساس زمینه متن نمایش ، بنابراین محتویات جدول بانک اطلاعاتی هستند راحت تر به خواندن."; +$LANG["confirm_smart_fill_display_names"] = "آیا مطمئن هستید که می خواهید پر کنید هوشمند به نام نمایش؟ با این کار ارزش های موجود خود را روی چیزی نوشتن."; +$LANG["confirm_ungroup_option_list"] = "آیا شما مطمئن هستید که می خواهید به ungroup این لیست گزینه؟ همه گزینه ها خواهد شد را به فهرست واحد ، ungrouped lumped."; +$LANG["confirm_uninstall_module"] = "آیا مطمئن هستید که می خواهید پاک کنید این ماژول؟ ماژول تمام اطلاعات از دست خواهند رفت."; +$LANG["date_AM"] = "هستم"; +$LANG["date_Fri"] = "جستجوی پیشرفته"; +$LANG["date_Friday"] = "جمعه"; +$LANG["date_Mon"] = "جستجوی پیشرفته"; +$LANG["date_Monday"] = "دوشنبه"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "جستجوی پیشرفته"; +$LANG["date_Saturday"] = "شنبه"; +$LANG["date_Sun"] = "جستجوی پیشرفته"; +$LANG["date_Sunday"] = "یکشنبه"; +$LANG["date_Thu"] = "جستجوی پیشرفته"; +$LANG["date_Thursday"] = "پنجشنبه"; +$LANG["date_Tue"] = "جستجوی پیشرفته"; +$LANG["date_Tuesday"] = "سه"; +$LANG["date_Wed"] = "جستجوی پیشرفته"; +$LANG["date_Wednesday"] = "چهارشنبه"; +$LANG["date_am"] = "هستم"; +$LANG["date_month_April"] = "یدلایمخیرات آوریل"; +$LANG["date_month_August"] = "یدلایمخیرات اوت"; +$LANG["date_month_December"] = "یدلایمخیرات دسامبر"; +$LANG["date_month_February"] = "یدلایمخیرات فوریه"; +$LANG["date_month_January"] = "یدلایمخیرات ژانویه"; +$LANG["date_month_July"] = "یدلایمخیرات ژوئیه"; +$LANG["date_month_June"] = "یدلایمخیرات ژوئن"; +$LANG["date_month_March"] = "مارس"; +$LANG["date_month_May"] = "مه"; +$LANG["date_month_November"] = "یدلایمخیرات نوامبر"; +$LANG["date_month_October"] = "یدلایمخیرات اکتبر"; +$LANG["date_month_September"] = "یدلایمخیرات سپتامبر"; +$LANG["date_month_short_Apr"] = "یدلایمخیرات آوریل"; +$LANG["date_month_short_Aug"] = "یدلایمخیرات اوت"; +$LANG["date_month_short_Dec"] = "یدلایمخیرات دسامبر"; +$LANG["date_month_short_Feb"] = "یدلایمخیرات فوریه"; +$LANG["date_month_short_Jan"] = "ژان"; +$LANG["date_month_short_Jul"] = "یدلایمخیرات ژوئیه"; +$LANG["date_month_short_Jun"] = "یدلایمخیرات ژوئن"; +$LANG["date_month_short_Mar"] = "مارس"; +$LANG["date_month_short_May"] = "مه"; +$LANG["date_month_short_Nov"] = "یدلایمخیرات نوامبر"; +$LANG["date_month_short_Oct"] = "یدلایمخیرات اکتبر"; +$LANG["date_month_short_Sep"] = "یدلایمخیرات سپتامبر"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "حساب کاربری حذف شده است."; +$LANG["notify_account_updated"] = "حساب کاربری شما با موفقیت به روزآوری شده است."; +$LANG["notify_add_display_values"] = "نمایش اضافه کردن ارزشها"; +$LANG["notify_admin_menu_updated"] = "منوی مدیریت به روز شده است."; +$LANG["notify_admin_theme_overridden"] = "تم ها مدیر بوده است دستی overridden."; +$LANG["notify_allow_url_fopen_not_set"] = "با عرض پوزش ، این آزمایش می تواند بر روی سرور وب شما قابل اجرا نمی باشند. نیاز به 1 allow_url_fopen در فایل php.ini شما تعیین می شود. این تنظیم اجازه دسترسی به فایل های پی اچ پی را از طریق یک آدرس اینترنتی است که مورد نیاز برای اجرای این آزمون. شما می توانید آن را دستی با آپلود یک فایل به آن فولدر از طریق FTP آزمون ، سپس آن را در تلاش برای دسترسی به آدرس شما می شوند."; +$LANG["notify_change_temp_password"] = "شما فقط با یک رمز عبور موقتی وارد شده است. شما باید کلمه رمز شما در حال حاضر تنظیم مجدد!"; +$LANG["notify_click_to_edit_new_submission"] = "برای ویرایش ارسال جدید اینجا را کلیک کنید."; +$LANG["notify_client_account_menus_updated"] = "حساب مشتری (ها) را به {\$menu_name} منو به روز شده است. شما در حال حاضر ممکن است این منو که قبلا با حساب (ها همراه بود) حذف کنید."; +$LANG["notify_client_account_not_updated"] = "حساب مشتری نمی تواند به روز شده."; +$LANG["notify_client_account_themes_updated"] = "حساب مشتری (ها) را به {\$theme} به روز شده در موضوع شده است. شما در حال حاضر ممکن است موضوع را قبلا با حساب (های همراه) غیرفعال کنید."; +$LANG["notify_client_account_updated"] = "حساب مشتری بوده است با موفقیت به روزآوری شد."; +$LANG["notify_client_menu_deleted"] = "مشتری منو حذف شده است."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "منو حذف شده است ، اما به شرح زیر است حساب مشتری در حال حاضر در دست ندارید منو! شما باید برای به روز رسانی حساب های زیر می باشد :"; +$LANG["notify_client_menu_updated"] = "منو مشتری به روز شده است."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "با عرض پوزش ، این منو شما فقط سعی در حذف شده است قبلا توسط مشتریان های زیر استفاده می شود. به منظور حذف منو برای بار اول شما باید به مشتریان اختصاص دهید به منوهای دیگر. بر روی نام آن کلیک کنید ، مشتری خود را برای ویرایش که حساب فرد ، اختصاص دهید یا به همه حسابهای مختلف با استفاده از منوی کشویی زیر وارد نمایید."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "با عرض پوزش ، یکی از تم شما فقط معلول در حال حاضر توسط حساب های مشتری زیر استفاده می شود. به منظور غیر فعال کردن تم برای بار اول شما باید هر مشتری را به او واگذار خود را به دیگری موضوعی است. بر روی نام آن کلیک کنید ، مشتری خود را برای ویرایش که حساب فرد ، اختصاص دهید یا به حساب تمام تم ها با استفاده از کشویی زیر وارد نمایید."; +$LANG["notify_edit_email_fields_link"] = "اینجا را کلیک کنید تا مشخص کنید که کدام فیلد های فرم میدانهای ایمیل ، بنابراین شما می توانید آنها را در قالب پست الکترونیکی شما را در هدف قرار دادن ."; +$LANG["notify_edit_field_new_field"] = "این یک رشته جدید به است. شما نیاز به صفحه اصلی ، قبل از اینکه بتواند به طور کامل ویرایش این زمینه برای به روز رسانی است."; +$LANG["notify_edit_option_list_after_save"] = "شما باید یک لیست اختیار (Options) را انتخاب کنید و سپس ذخیره تغییرات قبل از اینکه قادر به ویرایش آن."; +$LANG["notify_email_field_config_deleted"] = "تنظیمات ایمیل حذف شده است."; +$LANG["notify_email_fields_not_updated"] = "پوزش می طلبیم ، ما می تواند زمینه های ایمیل رسانی نیست."; +$LANG["notify_email_fields_updated"] = "زمینه های پست الکترونیک به روزآوری شده اند."; +$LANG["notify_email_not_sent"] = "با عرض پوزش ، نمی تواند ایمیل ارسال می شود. لطفا با مدیر سایت در آدرس زیر تماس بگیرید."; +$LANG["notify_email_not_sent_c"] = "با عرض پوزش ، ایمیل ارسال نمی شود :"; +$LANG["notify_email_sent"] = "پست الکترونیکی (ثانیه) است که ارسال می شود."; +$LANG["notify_email_template_deleted"] = "ایمیل الگو حذف شده است."; +$LANG["notify_email_template_updated"] = "ایمیل الگو به روز شده است."; +$LANG["notify_enabled_module_list_updated"] = "لیستی از ماژول ها را فعال کنید به روز شده است."; +$LANG["notify_error_saving_fields"] = "خطا صرفه جویی در زمینه وجود دارد."; +$LANG["notify_field_changes_saved"] = "تغییرات مربوط به رشته خود را (ها) ذخیره شده است."; +$LANG["notify_field_options_smart_filled"] = "گزینه های این زمینه خود شده اند هوشمند پر."; +$LANG["notify_field_selected"] = "زمینه بوده است انتخاب شده است. اینجا را کلیک کنید برای بازگشت به لیست رشته اصلی."; +$LANG["notify_field_updated"] = "این فیلد به روز شده است."; +$LANG["notify_file_not_uploaded"] = "نمی تواند فایل ارسال شده."; +$LANG["notify_file_uploaded"] = "فایل با موفقیت ارسال شد."; +$LANG["notify_filters_not_updated"] = "خطا بود به روز رسانی این فیلتر تسلیم مشتری وجود دارد."; +$LANG["notify_filters_updated"] = "فیلتر تسلیم را برای این مشتری به روز شده است."; +$LANG["notify_folder_correct_permissions"] = "این پوشه دارای مجوز درست باشد."; +$LANG["notify_folder_url_match"] = "آدرس پوشه و به نظر می رسد به درستی مطابقت."; +$LANG["notify_folder_url_no_access"] = "این آزمون نمی تواند از انجام پی اچ پی برای دسترسی به این بود که قادر آدرس. این معمولا از طریق آدرس رمز عبور محافظت شده است همراه با یک فایل. htaccess ایجاد می گردد."; +$LANG["notify_folder_url_no_match"] = "این پوشه - ترکیبی آدرس نمیرسد مطابقت داشته باشد."; +$LANG["notify_folder_url_unknown_error"] = "خطای ناشناخته رخ داده است. شما می توانید آن را دستی با آپلود یک فایل به آن فولدر از طریق FTP آزمون ، سپس آن را در تلاش برای دسترسی به آدرس شما می شوند."; +$LANG["notify_form_access_type_email_info"] = "این فرم نوع دسترسی مدیر ، بنابراین هیچ مشتریان به آن دسترسی دارند و در زیر منوی کرکره ای نیست."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "با عرض پوزش ، یک فرم با که ID مورد نظر وجود ندارد."; +$LANG["notify_form_field_not_added"] = "زمینه فرم '{\$fieldname}'نمی تواند اضافه شده است."; +$LANG["notify_form_field_options_updated"] = "فرم انتخاب رشته به روز شدهاند."; +$LANG["notify_form_field_removed"] = "زمینه فرم با موفقیت برداشته شد."; +$LANG["notify_form_fields_removed"] = "فیلد های فرم با موفقیت حذف شدند."; +$LANG["notify_form_not_updated_notify_admin"] = "فرم شما به روز نشد. لطفا با مدیر سایت گزارش این مشکل تماس بگیرید."; +$LANG["notify_form_settings_updated"] = "تنظیمات فرم شما با موفقیت به روزآوری شده اند."; +$LANG["notify_form_submission_updated"] = "فرم ارسال مقاله به روز شده است."; +$LANG["notify_form_tabs_updated"] = "زبانه ها به روز شدهاند."; +$LANG["notify_form_updated"] = "این فرم با موفقیت به روزآوری شده است."; +$LANG["notify_form_views_updated"] = "نمایش ها فرم به روز شده اند."; +$LANG["notify_install_invalid_db_info"] = "با عرض پوزش ، ما نتوانستیم برای اتصال به پایگاه داده با استفاده از اطلاعات شما می شوند. پیغام خطا پایگاه برگردانده می شود : {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "فرم شما ساخته شد! شما می توانید فرم خود را از طریق این زبانه پیکربندی کنید."; +$LANG["notify_invalid_account_information_in_sessions"] = "اطلاعات حساب ذخیره شده در جلسات نامعتبر است. لطفا در زیر را دوباره وارد شوید."; +$LANG["notify_invalid_license_key"] = "با عرض پوزش ، به نظر نمی رسد به یک کلید مجوز معتبر. لطفا وارد کردن دوباره آن را امتحان کنید."; +$LANG["notify_invalid_permissions"] = "شما اجازه دسترسی به این صفحه را ندارید. شما خارج شده اند."; +$LANG["notify_invalid_search_dates"] = "لطفا با استفاده از datepicker یک تاریخ معتبر یا تاریخ را وارد کنید."; +$LANG["notify_invalid_upload_folder"] = "پوشه آپلود شده است یا اشتباه است یا قابل نوشتن نیست."; +$LANG["notify_lang_list_updated"] = "در دسترس زبان رابط لیست به روز شده است."; +$LANG["notify_login_info_emailed"] = "اطلاعات ورود شما به شما ایمیل فرستاده شده است."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "اوه ، این ماژول در حال حاضر نصب شده!"; +$LANG["notify_module_installed"] = "ماژول نصب شده است. اینجا را کلیک کنید تا این ماژول را انتخاب کنید."; +$LANG["notify_module_list_updated"] = "لیست ماژول به روز شده است."; +$LANG["notify_module_uninstalled"] = "ماژول بوده است uninstalled."; +$LANG["notify_module_updated"] = "ماژول {\$module} {\$version} به روز شده است . اینجا را کلیک کنید ماژول را انتخاب کنید ."; +$LANG["notify_multi_field_selected"] = "زمینه بوده است انتخاب شده است. اینجا را کلیک کنید برای مشاهده و ویرایش گزینه های میدانی است."; +$LANG["notify_multi_field_updated"] = "این فیلد به روز شده است. شما قادر به تنظیم گزینه های فیلد بعد از تنظیم نام فرم."; +$LANG["notify_multiple_fields_found"] = "عناصر چندگانه ، با ذکر نام این زمینه ({\$field_name}) پیدا نشد). این می تواند اتفاق افتد اگر صفحه شما دارای بیش از یک فرم را پر و یا اگر شما به طور تصادفی به نام یکی از اشکال شما همان دیگر. لطفا یکی را انتخاب کنید که می خواهید از لیست زیر کلیک کنید."; +$LANG["notify_new_default_view_created"] = "جدید ، به طور پیش فرض حاوی مشاهده تمام فیلد های فرم شما ایجاد شده است."; +$LANG["notify_new_submission_created"] = "تسلیم ایجاد شده است. شما نمی توانید آن را ویرایش کنید."; +$LANG["notify_no_account_id_in_sessions"] = "هنوز ثبت نام شناسه کاربری در جلسات پیدا شد. لطفا در زیر را دوباره وارد شوید."; +$LANG["notify_no_api_installed"] = "شما API نصب ندارد"; +$LANG["notify_no_client_permissions"] = "به هیچ تنظیمات موجود برای ویرایش وجود دارد."; +$LANG["notify_no_email_template_selected"] = "لطفا ایمیل الگو را انتخاب کنید."; +$LANG["notify_no_emails_defined"] = "بدون ایمیل را برای این شکل تعریف شده است. برای اضافه کردن یک گذرواژه جدید ، کلیک بر روی دکمه زیر کلیک کنید."; +$LANG["notify_no_field_settings"] = "این نوع رشته را هیچ تنظیمات اضافی نیست."; +$LANG["notify_no_fields_in_tab"] = "این برگه هیچ زمینه نیست."; +$LANG["notify_no_option_lists"] = "هیچ گزینه ای لیست تعریف شده وجود دارد. برای ایجاد یک جدید روی دکمه زیر کلیک کنید."; +$LANG["notify_no_test_submission"] = "فرم ارسال مقالات تا به ابزار تست موفقیت آمیز را دریافت نکرده است."; +$LANG["notify_no_user_email_fields_configured"] = "توجه : اگر شما میخواهید ارسال ایمیل به هر آدرس ایمیل که در فرم گنجانده شد ، برای بار اول شما را به پیکربندی نیاز بهزمینه های شکل ایمیل."; +$LANG["notify_no_views"] = "فرم شما لازم نیست هر نمایش ها راه اندازی! شما حداقل یک مشاهده به منظور مدیریت دادههای فرم شما نیاز دارند."; +$LANG["notify_no_views_assigned_to_client_form"] = "به نظر می رسد که در حساب کاربری خود را به هیچ نمی پروفایل فرم اختصاص داده شده است ، بنابراین شما قادر به دیدن هر گونه داده ها باشد. لطفا با مدیر برای کمک بیشتر تماس بگیرید."; +$LANG["notify_no_views_defined"] = "شما لازم نیست که هر گونه نمایش ها تعریف شده است. شما نمی قادر خواهد بود برای دیدن ارسالی این فرم ، مگر اینکه حداقل یک مشاهده ایجاد شده است. روی دکمه زیر کلیک کنید مشاهده پیش فرض برای ایجاد کنید."; +$LANG["notify_option_list_deleted"] = "فهرست اختیار (Options) حذف شده است."; +$LANG["notify_option_list_updated"] = "فهرست اختیار (Options) به روز شده است."; +$LANG["notify_public_form_omit_list_updated"] = "حذف کردن لیست مشتری برای این فرم به روز شده است."; +$LANG["notify_public_view_omit_list_updated"] = "حذف کردن لیست مشتری برای این نمایش به روز شده است."; +$LANG["notify_required_admin_pages"] = "صفحات زیر را در منوی مدیر سایت مورد نیاز هستند : {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "با عرض پوزش ، در هر نوع فعالیت برای مدتی وجود ندارد پس ما به حال برای شما از سیستم خارج شوید. لطفا در زیر را دوباره وارد شوید."; +$LANG["notify_setup_options_updated"] = "گزینه های تنظیم را به روز شدهاند."; +$LANG["notify_smart_fill_field_not_found"] = "ما نتوانستیم برای یافتن یک فیلد با این نام ({\$field_name}) به صورت (ثانیه) مشخص شده است. شما می توانید تنظیم دستی نوع فیلد زیر ، یا کلیک بر روی دکمه پرش به ویرایش این زمینه بعدا تلاش نمایید."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "فایل (های) با موفقیت ارسال شد. سعی کنید با کلیک برروی دکمه هوشمند را پر کنید و مجددا امتحان کنید. اگر این مرحله را می افتد ، شما باید این مرحله را پیکربندی کنید و فیلد های فرم خود را به پرش manally بعدا تلاش نمایید."; +$LANG["notify_smart_fill_submitted"] = "فرم شده است را مشاهده کنید. با توجه به اندازه فرم شما و تعداد گزینه های زمینه ، این ممکن است کمی طول می کشد."; +$LANG["notify_smart_fill_upload_fields_fail"] = "با عرض پوزش ، یک یا چند فایل که وارد کرده اید نمی تواند ارسال شده. شما باید در این مرحله و پیکربندی زمینه های دستی را به صرف نظر کنید."; +$LANG["notify_submission_and_files_deleted"] = "تسلیم و هر نوع فایل (های) مرتبط با آن را با موفقیت حذف شد."; +$LANG["notify_submission_copied"] = "تسلیم کپی شده است"; +$LANG["notify_submission_copied_edit"] = "تسلیم کپی شده است شما می توانید آن را در زیر ویرایش کنید."; +$LANG["notify_submission_deleted"] = "ارسال با موفقیت حذف شد."; +$LANG["notify_submission_deleted_with_problems"] = "ارسال ، حذف شد اما مشکلات زیر به هنگام تلاش برای حذف فایل زیر را (ها) مواجه شدند :"; +$LANG["notify_submission_id_not_found"] = "شناسه تسلیم یافت نشد."; +$LANG["notify_submission_not_updated"] = "ارسال مقالات به روز نشد."; +$LANG["notify_submissions_and_files_deleted"] = "مطلب و مقاله و هر نوع فایل (های) در ارتباط با آنها را با موفقیت حذف شد."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} ارسال شده کپی شده اند"; +$LANG["notify_submissions_deleted"] = "مطلب و مقاله با موفقیت حذف شد."; +$LANG["notify_submissions_deleted_with_problems"] = "مطلب و مقاله ، حذف شده بودند ، اما مشکلات زیر به هنگام تلاش برای حذف فایل زیر را (ها) مواجه شدند :"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "ایمیل آزمایشی شما نمیتواند فرستاده شد."; +$LANG["notify_theme_cache_folder_not_writable"] = "پوشه کش این موضوع است که قابل نوشتن نیست. به منظور فعال کردن این موضوع ، {\$folder}باید پوشه را کامل خواندن و نوشتن مجوز."; +$LANG["notify_theme_list_updated"] = "لیست تم ها به روز شده است."; +$LANG["notify_themes_settings_updated"] = "تم تنظیمات شما به روز شدهاند."; +$LANG["notify_view_deleted"] = "نمایش حذف شده است."; +$LANG["notify_view_group_deleted"] = "گروه مشاهده شده است حذف شده است."; +$LANG["notify_view_missing_columns"] = "اوه! با عرض پوزش ، این نمایش بوده است نه به طور کامل راه اندازی رتبهدهی نشده است."; +$LANG["notify_view_missing_columns_admin_fix"] = "اینجا را کلیک کنید تا مشخص کنید که کدام زمینه باید به عنوان ستون ها در این صفحه ظاهر می شود."; +$LANG["notify_view_updated"] = "مشاهده به روز شده است."; +$LANG["notify_your_email_sent"] = "ایمیل شما با موفقیت ارسال می شود."; +$LANG["phrase_100_per_page"] = "100 در هر صفحه"; +$LANG["phrase_10_per_page"] = "10 در هر صفحه"; +$LANG["phrase_15_per_page"] = "15 صفحه در هر"; +$LANG["phrase_1_direct"] = "1. مستقیم"; +$LANG["phrase_1char"] = "1 کاراکتر"; +$LANG["phrase_20_per_page"] = "20 در هر صفحه"; +$LANG["phrase_25_per_page"] = "25 در هر صفحه"; +$LANG["phrase_2_code"] = "2. کد"; +$LANG["phrase_2_columns"] = "2 ستون"; +$LANG["phrase_2chars"] = "2 کاراکتر"; +$LANG["phrase_3_columns"] = "3 ستون"; +$LANG["phrase_4_columns"] = "4 ستون"; +$LANG["phrase_50_per_page"] = "50 در هر صفحه"; +$LANG["phrase_accepting_submissions"] = "(پذیرش مطلب و مقاله)"; +$LANG["phrase_access_admin_account_c"] = "شما می توانید حساب دولت شما در اینجا دسترسی داشته باشید :"; +$LANG["phrase_access_type"] = "نوع دسترسی"; +$LANG["phrase_account_info"] = "اطلاعات حساب"; +$LANG["phrase_account_settings"] = "تنظیمات حساب کاربری"; +$LANG["phrase_action_needed"] = "عمل مورد نیاز"; +$LANG["phrase_add_client"] = "اضافه کردن کارفرما"; +$LANG["phrase_add_client_menu"] = "اضافه کردن کارفرما منو"; +$LANG["phrase_add_default_settings_rightarrow"] = "اضافه کردن تنظیمات پیش فرض »"; +$LANG["phrase_add_field"] = "اضافه کردن فیلد"; +$LANG["phrase_add_fields"] = "اضافه کردن زمینه های"; +$LANG["phrase_add_fields_rightarrow"] = "اضافه کردن فیلد (ها) »"; +$LANG["phrase_add_form"] = "افزودن فرم"; +$LANG["phrase_add_form_external"] = "فرم اضافه -- خارجی"; +$LANG["phrase_add_form_internal"] = "فرم اضافه -- داخلی"; +$LANG["phrase_add_new_group_rightarrow"] = "اضافه کردن گروه جدید »"; +$LANG["phrase_add_num_rows"] = "اضافه کردن {\$number} شماره سطر (ها)"; +$LANG["phrase_add_row"] = "افزودنسطر »"; +$LANG["phrase_add_submission_button"] = "اضافه کردن دکمه ارسال مقاله"; +$LANG["phrase_add_view_rightarrow"] = "اضافه کردن مشاهده »"; +$LANG["phrase_adding_multi_page_form"] = "اضافه کردن یک فرم چند صفحه با API"; +$LANG["phrase_adding_single_page_form"] = "اضافه کردن یک صفحه فرم با API"; +$LANG["phrase_admin_menu"] = "منوی مدیر"; +$LANG["phrase_admin_only"] = "فقط مدیر"; +$LANG["phrase_admin_panel"] = "مدیر پانل"; +$LANG["phrase_administrator_theme"] = "مدیریت تم"; +$LANG["phrase_advanced_settings_rightarrow"] = "جستجوی پیشرفته »تنظیمات"; +$LANG["phrase_all_X_results_selected"] = "همه {\$numresults} نتیجه های برگزیده"; +$LANG["phrase_all_clients"] = "تمام مشتریان"; +$LANG["phrase_all_clients_except_c"] = "تمام مشتریان به جز :"; +$LANG["phrase_all_clients_have_access"] = "(تمام مشتریان دسترسی داشته باشند)"; +$LANG["phrase_all_fields"] = "همه فیلدها"; +$LANG["phrase_all_fields_displayed"] = "همه فیلدها نمایش داده شده اند"; +$LANG["phrase_all_statuses"] = "همه statuses"; +$LANG["phrase_all_submissions"] = "همه مطلب و مقاله"; +$LANG["phrase_allow_fields_edited"] = "اجازه دادن به زمینه ویرایش باشد"; +$LANG["phrase_alphanumeric"] = "عدد و الفبایی (AZ ، 0-9)"; +$LANG["phrase_api_version"] = "API نسخه"; +$LANG["phrase_apply_timezone_offset"] = "درخواست منطقه زمانی افست"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "اختصاص دادن تمام شده حساب مشتریان را به {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "اختصاص دادن تمام شده حساب مشتریان را به {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "در پایان"; +$LANG["phrase_at_start"] = "در شروع"; +$LANG["phrase_author_link"] = "لینک نویسنده"; +$LANG["phrase_auto_disable_account"] = "خودکار را غیر فعال کنید # پس از شکست تلاش های ورود به سایت"; +$LANG["phrase_auto_size"] = "خودکار اندازه"; +$LANG["phrase_available_clients"] = "مشتریان می کند"; +$LANG["phrase_available_fields"] = "زمینه شد"; +$LANG["phrase_available_option_lists"] = "لیست انتخابهای موجود"; +$LANG["phrase_available_swatches"] = "تکرار می کند"; +$LANG["phrase_available_swatches_c"] = "تکرار می کند :"; +$LANG["phrase_available_tabs"] = "زبانهها می کند"; +$LANG["phrase_available_views"] = "مشاهده شد"; +$LANG["phrase_awaiting_form_submission"] = "منتظر ارسال مقاله فرم ارسال."; +$LANG["phrase_back_to_field_list"] = "«بازگشت به عرصه لیست"; +$LANG["phrase_back_to_search_results"] = "بازگشت به نتیجه های جستجو"; +$LANG["phrase_base_view_on"] = "نمایش بر اساس..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "تغییر اطلاعات ورود"; +$LANG["phrase_characters_limit_p"] = "کاراکتر محدود است."; +$LANG["phrase_check_db_settings_try_again"] = "لطفا دو بررسی تنظیمات پایگاه داده شما و با کلیک بر روی دکمه ادامه دوباره."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "چک URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "تمیز کردن"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "پاک کردن لیست از قلم انداختن"; +$LANG["phrase_client_account_settings"] = "تنظیمات حساب مشتری"; +$LANG["phrase_client_field"] = "کارفرما فیلد"; +$LANG["phrase_client_map_filters"] = "کارفرما نقشه فیلترها »"; +$LANG["phrase_client_may_edit"] = "کارفرما ممکن است ویرایش"; +$LANG["phrase_client_menu"] = "منوی کارفرما"; +$LANG["phrase_clients_can_access_form"] = "مشتریان چه کسی می تواند به صورت دسترسی"; +$LANG["phrase_clients_can_access_view"] = "چه کسی می تواند مشتریان نمایش دسترسی"; +$LANG["phrase_clients_cannot_access_form"] = "مشتریان چه کسی می تواند به صورت دسترسی نیست"; +$LANG["phrase_clients_cannot_access_view"] = "مشتریان چه کسی می تواند مشاهده دسترسی نیست"; +$LANG["phrase_clients_may_edit"] = "مشتریان ممکن است ویرایش"; +$LANG["phrase_code_c"] = "کد خطا :"; +$LANG["phrase_code_markup_field"] = "فیلد کد / نشانه گذاری"; +$LANG["phrase_code_markup_type"] = "کد / نشانه گذاری نوع"; +$LANG["phrase_codes_c"] = "کد خطا :"; +$LANG["phrase_column_width"] = "عرض ستون"; +$LANG["phrase_company_name"] = "نام شرکت"; +$LANG["phrase_configure_form_email_fields"] = "فرم پیکربندی زمینه های پست الکترونیک"; +$LANG["phrase_confirm_folder_url_match"] = "تکرار آدرس پوشه - تطابق"; +$LANG["phrase_connect_rows"] = "اتصال ردیف"; +$LANG["phrase_copy_email_settings_from"] = "تنظیمات ایمیل کپی از..."; +$LANG["phrase_copy_settings_from"] = "کپی برداری از تنظیمات..."; +$LANG["phrase_core_fields"] = "زمینه های اصلی"; +$LANG["phrase_core_version"] = "هسته نسخه"; +$LANG["phrase_create_account"] = "ایجاد حساب کاربری"; +$LANG["phrase_create_admin_account"] = "مدیر ایجاد حساب کاربری"; +$LANG["phrase_create_config_file"] = "ایجاد فایل پیکربندی"; +$LANG["phrase_create_database_tables"] = "ایجاد جداول پایگاه داده"; +$LANG["phrase_create_default_view"] = "ایجاد نمایش پیش فرض"; +$LANG["phrase_create_file"] = "ایجاد فایل"; +$LANG["phrase_create_group"] = "ساختن گروه"; +$LANG["phrase_create_new_email"] = "ساخت ایمیل"; +$LANG["phrase_create_new_menu"] = "ایجاد منوی جدید"; +$LANG["phrase_create_new_option_list"] = "ایجاد لیست گزینه جدید"; +$LANG["phrase_create_new_option_list_group"] = "ایجاد گزینه جدید لیست گروه"; +$LANG["phrase_create_new_option_list_rightarrow"] = "ایجاد لیست گزینه جدید »"; +$LANG["phrase_create_new_view"] = "ساخت نمایش"; +$LANG["phrase_create_new_view_group"] = "ایجاد گروه جدید نمایش"; +$LANG["phrase_custom_display_format"] = "فرمت صفحه نمایش سفارشی"; +$LANG["phrase_custom_recipient"] = "سفارشی گیرنده"; +$LANG["phrase_custom_url"] = "سفارشی آدرس"; +$LANG["phrase_dark_blue"] = "آبی تیره"; +$LANG["phrase_data_type"] = "نوع داده"; +$LANG["phrase_database_hostname"] = "نام هاست بانک اطلاعات"; +$LANG["phrase_database_name"] = "نام پایگاه داده"; +$LANG["phrase_database_password"] = "رمز عبور پایگاه داده"; +$LANG["phrase_database_settings"] = "پایگاه تنظیمات"; +$LANG["phrase_database_setup"] = "راه اندازی بانک اطلاعات"; +$LANG["phrase_database_table_prefix"] = "بانک اطلاعات پیشوند جدول ها"; +$LANG["phrase_database_username"] = "نام کاربری پایگاه داده"; +$LANG["phrase_date_format"] = "قالب تاریخ"; +$LANG["phrase_db_column"] = "ستون دسی بل"; +$LANG["phrase_db_setup_page_4"] = "4. راه اندازی بانک اطلاعات"; +$LANG["phrase_default_client_account_theme"] = "پیش فرض تم حساب مشتری"; +$LANG["phrase_default_date_field_search_value"] = "پیش فرض تاریخ زمینه ارزش جستجو"; +$LANG["phrase_default_language"] = "زبان پیش فرض"; +$LANG["phrase_default_menu"] = "پیش فرض منو"; +$LANG["phrase_default_sessions_timeout"] = "پیش فرض جلسات اتماموقت"; +$LANG["phrase_default_sort_order"] = "پیش فرض مرتب کردن بر اساس سفارش"; +$LANG["phrase_default_tab_label"] = "داده ها"; +$LANG["phrase_default_theme"] = "پیش فرض تم ها"; +$LANG["phrase_default_value"] = "مقدار پیش فرض"; +$LANG["phrase_default_values"] = "مقادیر پیش فرض"; +$LANG["phrase_default_values_new_submissions"] = "مقادیر پیش فرض برای ارسالی جدید"; +$LANG["phrase_delete_field"] = "حذف فیلد"; +$LANG["phrase_delete_form"] = "حذف فرم"; +$LANG["phrase_delete_row"] = "حذفسطر"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "پاک کردن فایل های مربوط به زمانی که ارسال حذف"; +$LANG["phrase_delete_view"] = "حذف مشخصات"; +$LANG["phrase_disconnect_rows"] = "قطع ردیف"; +$LANG["phrase_display_email"] = "نمایش پست الکترونیکی"; +$LANG["phrase_display_name"] = "نام نمایش"; +$LANG["phrase_display_text"] = "نمایش متن"; +$LANG["phrase_display_value"] = "نمایش مقدار"; +$LANG["phrase_edit_admin_menu"] = "ویرایش منوی مدیریت"; +$LANG["phrase_edit_client"] = "ویرایش کارفرما"; +$LANG["phrase_edit_client_menu"] = "ویرایش منوی کارفرما"; +$LANG["phrase_edit_email_template"] = "ویرایش الگو ایمیل"; +$LANG["phrase_edit_field"] = "ویرایش فیلد"; +$LANG["phrase_edit_field_c"] = "ویرایش فیلد :"; +$LANG["phrase_edit_form"] = "ویرایش فرم"; +$LANG["phrase_edit_form_access_type_b"] = "[ویرایش دسترسی به فرم نوع]"; +$LANG["phrase_edit_option_list"] = "فهرست انتخاب را ویرایش کنید"; +$LANG["phrase_edit_submission"] = "ویرایش ارسال مقاله"; +$LANG["phrase_edit_submission_label"] = "ویرایش برچسب ارسال مقاله"; +$LANG["phrase_edit_view"] = "نمایش ویرایش"; +$LANG["phrase_email_format"] = "فرمت پست الکترونیک"; +$LANG["phrase_email_settings"] = "تنظیمات ایمیل"; +$LANG["phrase_email_template"] = "ایمیل الگو"; +$LANG["phrase_email_template_name"] = "پست الکترونیک نام الگو"; +$LANG["phrase_error_learn_more"] = "اطلاعات بیشتر در مورد این خطا."; +$LANG["phrase_error_text_intro"] = "لطفا خطای زیر (ها) و resubmit ثابت :"; +$LANG["phrase_errors_learn_more"] = "کلیک کنید ، در کدهای خطا برای یادگیری بیشتر."; +$LANG["phrase_event_trigger"] = "رویداد تریگر"; +$LANG["phrase_external_form"] = "فرم خارجی"; +$LANG["phrase_external_form_info"] = "اطلاعات فرم های خارجی"; +$LANG["phrase_external_your_own_form"] = "خارجی (شکل خود را)"; +$LANG["phrase_field_comments"] = "نظرات میدان"; +$LANG["phrase_field_label"] = "فیلد برچسب"; +$LANG["phrase_field_options"] = "انتخاب رشته"; +$LANG["phrase_field_size"] = "سایز فیلد"; +$LANG["phrase_field_skipped"] = "فیلد توقف عملیات"; +$LANG["phrase_field_specific_settings"] = "تنظیمات خاص میدان"; +$LANG["phrase_field_type"] = "نوع فیلد"; +$LANG["phrase_field_type_no_validation"] = "قوانین اعتبارسنجی برای این نوع رشته را در دسترس وجود دارد."; +$LANG["phrase_field_types"] = "انواع رشته"; +$LANG["phrase_field_value"] = "مقدار فیلد"; +$LANG["phrase_field_values_to_display_values"] = "رشته ارزش ها »نمایش ارزشها"; +$LANG["phrase_final_touches_page_6"] = "6. اتمام لمس"; +$LANG["phrase_finalize_form"] = "قطعی شدن فرم"; +$LANG["phrase_first_name"] = "نام"; +$LANG["phrase_footer_text"] = "پاورقی متن"; +$LANG["phrase_for_any_form_submission"] = "جهت کسب هر گونه فرم ارسال مطلب"; +$LANG["phrase_for_view_submissions"] = "فقط برای مطلب و مقاله در دفعات مشاهده :"; +$LANG["phrase_forgot_password"] = "رمز عبور را فراموش کرده اید؟"; +$LANG["phrase_form_already_selected"] = "فرم در حال حاضر انتخاب شده"; +$LANG["phrase_form_email_field_b_c"] = "[فرم ایمیل] زمینه :"; +$LANG["phrase_form_email_field_configuration"] = "فرم فیلد تنظیمات ایمیل"; +$LANG["phrase_form_email_fields"] = "فرم زمینه های ایمیل"; +$LANG["phrase_form_field"] = "فرم فیلد"; +$LANG["phrase_form_field_contents"] = "فرم محتویات فیلد"; +$LANG["phrase_form_field_name"] = "فرم نام فیلد"; +$LANG["phrase_form_field_placeholders"] = "فرم placeholders زمینه"; +$LANG["phrase_form_fields"] = "فرم پروژه"; +$LANG["phrase_form_info"] = "فرم اطلاعات"; +$LANG["phrase_form_info_2"] = "2. فرم اطلاعات"; +$LANG["phrase_form_list"] = "لیست فرم"; +$LANG["phrase_form_name"] = "نام فرم"; +$LANG["phrase_form_page"] = "فرم صفحه"; +$LANG["phrase_form_placeholders"] = "متغیرهایی فرم"; +$LANG["phrase_form_submission"] = "فرم ارسال مطلب"; +$LANG["phrase_form_submissions"] = "فرمهای"; +$LANG["phrase_form_type"] = "فرم نوع"; +$LANG["phrase_form_url"] = "فرم آدرس"; +$LANG["phrase_form_urls"] = "URL های موافق با فرم"; +$LANG["phrase_forms_assigned_to_any_account"] = "اشکال اختصاص یافته به هر حساب"; +$LANG["phrase_forms_page_default_message"] = "فرم ها صفحه پیام پیش فرض"; +$LANG["phrase_ft_installation"] = "فرم نصب ابزار فیلمنامه"; +$LANG["phrase_full_width"] = "عرض کامل"; +$LANG["phrase_getting_started"] = "شروع کار"; +$LANG["phrase_global_placeholders"] = "متغیرهایی جهانی"; +$LANG["phrase_group_name"] = "نام گروه"; +$LANG["phrase_group_options_q"] = "گزینه های گروه؟"; +$LANG["phrase_group_rows"] = "ردیف گروه"; +$LANG["phrase_have_fun"] = "جالب بود!"; +$LANG["phrase_highlight_colour"] = "رنگ هایی برجسته از"; +$LANG["phrase_html_email"] = "نسخه متنی ایمیل"; +$LANG["phrase_html_template"] = "نسخه متنی الگو"; +$LANG["phrase_images_media"] = "عکس / رسانه ها"; +$LANG["phrase_import_option_list_rightarrow"] = "واردات فهرست انتخاب »"; +$LANG["phrase_input_length"] = "طول ورودی"; +$LANG["phrase_installation_help"] = "راهنما نصب و راه اندازی"; +$LANG["phrase_internal_form"] = "فرم داخلی"; +$LANG["phrase_ip_address"] = "نشانی آیپی"; +$LANG["phrase_is_multi_page_form_q"] = "آیا این یک فرم چند صفحه؟"; +$LANG["phrase_label_response_placeholders"] = "برچسب / Placeholders پاسخ"; +$LANG["phrase_large_300px"] = "بزرگ (300px)"; +$LANG["phrase_large_400px"] = "بزرگ (400px)"; +$LANG["phrase_last_7_days"] = "گذشته 7 روز"; +$LANG["phrase_last_logged_in"] = "زمان آخرین ورود"; +$LANG["phrase_last_modified"] = "آخرین تغییر"; +$LANG["phrase_last_modified_date"] = "تاریخ و زمان آخرین تاریخ تغییر"; +$LANG["phrase_last_name"] = "نام خانوادگی"; +$LANG["phrase_letters_only"] = "فقط حروف"; +$LANG["phrase_light_brown"] = "قهوه ای روشن"; +$LANG["phrase_limit_email_content"] = "محتوای ایمیل به این حد در زمینه های نمایش"; +$LANG["phrase_loading_ellipsis"] = "در حال بارگذاری..."; +$LANG["phrase_log_in"] = "ورود به سیستم"; +$LANG["phrase_login_as_user"] = "ورود به عنوان این کاربر"; +$LANG["phrase_login_info"] = "ورود اطلاعات"; +$LANG["phrase_login_page"] = "ورود به صفحه"; +$LANG["phrase_login_panel_c"] = "ورود اعضا :"; +$LANG["phrase_login_panel_leftarrows"] = "«ورود اعضا"; +$LANG["phrase_login_password"] = "نام کاربری کلمه عبور"; +$LANG["phrase_login_username"] = "ورود به سیستم نام کاربری"; +$LANG["phrase_logo_link_url"] = "عالی آدرس پیوند"; +$LANG["phrase_logout_url"] = "آدرس خروج"; +$LANG["phrase_main_nav"] = "منو اصلی صفحه اصلی"; +$LANG["phrase_main_settings"] = "تنظیمات اصلی"; +$LANG["phrase_manage_client"] = "مدیریت مشتری"; +$LANG["phrase_manage_client_omit_list"] = "مدیریت مشتری حذف لیست"; +$LANG["phrase_max_file_size"] = "حداکثر حجم فایل"; +$LANG["phrase_max_length"] = "طول حداکثر"; +$LANG["phrase_max_length_words_chars"] = "-- حداکثر طول (کلمات / کاراکتر)"; +$LANG["phrase_may_add_submissions"] = "مه ارسالی اضافه کنید"; +$LANG["phrase_may_copy_submissions"] = "می توانید ارسال ها را کپی کنید"; +$LANG["phrase_may_delete_submissions"] = "مه ارسالی حذف"; +$LANG["phrase_medium_150px"] = "متوسط ​​(150px)"; +$LANG["phrase_medium_200px"] = "متوسط ​​(200px)"; +$LANG["phrase_menu_name"] = "نام منو"; +$LANG["phrase_menu_type"] = "منو نوع"; +$LANG["phrase_min_password_length"] = "حداقل طول رمز عبور"; +$LANG["phrase_module_description"] = "ماژول توضیحات"; +$LANG["phrase_module_info"] = "ماژول اطلاعات"; +$LANG["phrase_module_nav"] = "ماژول منو"; +$LANG["phrase_month_to_date"] = "ماه تا به امروز"; +$LANG["phrase_multi_select"] = "چند را انتخاب کنید"; +$LANG["phrase_multi_select_dropdown"] = "چند کشویی را انتخاب کنید"; +$LANG["phrase_multiple_fields_found"] = "چندگانه زمینه پیدا نشد!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "نام / نام خانوادگی"; +$LANG["phrase_new_blank_email"] = "جدید خالی ایمیل"; +$LANG["phrase_new_blank_option_list"] = "فهرست گزینه خالی جدید"; +$LANG["phrase_new_blank_view"] = "جدید خالی نمایش"; +$LANG["phrase_new_ft_installation"] = "ابزار جدید فرم نصب"; +$LANG["phrase_new_option_list"] = "فهرست گزینه جدید"; +$LANG["phrase_new_password"] = "کلمه عبور جدید"; +$LANG["phrase_new_password_reenter"] = "کلمه عبور جدید (لطفا دوباره وارد کنید)"; +$LANG["phrase_new_view"] = "نمایش جدید"; +$LANG["phrase_new_view_all_fields"] = "مشخصات -- همه فیلدها"; +$LANG["phrase_next_client"] = "مشتری بعدی »"; +$LANG["phrase_next_field"] = "»فیلد بعدی"; +$LANG["phrase_next_form"] = "فرم بعدی »"; +$LANG["phrase_next_view"] = "نمایش بعدی »"; +$LANG["phrase_no_clients"] = "بدون مشتریان"; +$LANG["phrase_no_limit"] = "هیچ محدودیتی"; +$LANG["phrase_no_offset"] = "بدون انحراف"; +$LANG["phrase_no_option_lists_available"] = "هیچ گزینه لیست موجود است."; +$LANG["phrase_no_views"] = "بدون پروفایل"; +$LANG["phrase_no_views_with_filters_p"] = "(بدون نمایش ها تعریف شده با فیلتر)"; +$LANG["phrase_none_not_recommended"] = "هیچ کدام (توصیه نمی شود)"; +$LANG["phrase_not_assigned_to_option_list"] = "این فیلد به لیست انتخاب قرار گرفتند."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "ندارد برابر"; +$LANG["phrase_not_found"] = "یافت نشد!"; +$LANG["phrase_not_like"] = "دوست ندارد"; +$LANG["phrase_not_visible_to_client"] = "(به مشتری قابل رویت نیست)"; +$LANG["phrase_num_clients_per_page"] = "مشتریان هر صفحه در هر صفحه"; +$LANG["phrase_num_emails_per_page"] = "ایمیل های هر صفحه در هر صفحه"; +$LANG["phrase_num_fields"] = "تعدادی از زمینه"; +$LANG["phrase_num_forms_per_page"] = "فرم ها هر صفحه در هر صفحه"; +$LANG["phrase_num_menus_per_page"] = "منوهای هر صفحه در هر صفحه"; +$LANG["phrase_num_modules_per_page"] = "ماژول ها هر صفحه در هر صفحه"; +$LANG["phrase_num_option_lists_per_page"] = "NUM گزینه لیست در هر صفحه"; +$LANG["phrase_num_options"] = "گزینه #"; +$LANG["phrase_num_rows"] = "سطرها #"; +$LANG["phrase_numbers_only"] = "تعداد فقط"; +$LANG["phrase_often_localhost"] = "(که اغلب به "localhost")"; +$LANG["phrase_on_form_submission"] = "در فرم ارسال مقاله"; +$LANG["phrase_one_char_number"] = "حداقل یکی از شخصیت ها شماره (0-9) است"; +$LANG["phrase_one_char_upper"] = "حداقل یکی از شخصیت ها بزرگ است"; +$LANG["phrase_one_special_char"] = "حداقل یکی از {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(فقط مشتریان خاص دسترسی دارند)"; +$LANG["phrase_open_form_in_dialog"] = "فرم باز در پنجره محاوره ای"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "باز کردن این فرم را در یک پنجره تب جدید /"; +$LANG["phrase_option_list"] = "فهرست انتخاب"; +$LANG["phrase_option_list_name"] = "لیست انتخاب نام"; +$LANG["phrase_option_list_or_contents"] = "فهرست انتخاب / مطالب"; +$LANG["phrase_option_lists"] = "لیست انتخابهای"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "عنوان صفحه"; +$LANG["phrase_pass_on"] = "در رمز عبور"; +$LANG["phrase_password_min"] = "باید حداقل{\$length} را وارد نمایید ب کاراکتر."; +$LANG["phrase_password_one_number"] = "باید حداقل یک شماره (0-9) باشد."; +$LANG["phrase_password_one_uppercase"] = "باید حداقل یک حرف بزرگ باشد."; +$LANG["phrase_password_requirements_c"] = "الزامات رمز عبور :"; +$LANG["phrase_password_reset"] = "بازیابی کلمه عبور"; +$LANG["phrase_password_special_char"] = "باید حداقل یکی از شخصیت های زیر است : {\$chars} شامل"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "ویرایش / تنظیمات دیگر"; +$LANG["phrase_permitted_file_types"] = "نوع فایل های مجاز"; +$LANG["phrase_phone_number"] = "شماره تلفن"; +$LANG["phrase_phone_number_format"] = "قالب شماره تلفن"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini حداکثر مجاز حجم فایل آپلود :"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "نسخه پی اچ پی"; +$LANG["phrase_please_confirm"] = "لطفا تأیید کنید"; +$LANG["phrase_please_enter_license_key"] = "لطفا کلید مجوز خود را وارد کنید"; +$LANG["phrase_please_select"] = "لطفا انتخاب کنید"; +$LANG["phrase_please_select_form"] = "لطفا فرم را انتخاب کنید"; +$LANG["phrase_prev_client"] = "«قبلی مشتری"; +$LANG["phrase_prev_form"] = "«فرم قبلی"; +$LANG["phrase_prevent_password_reuse"] = "جلوگیری از استفاده مجدد از رمزهای عبور به آخرین #"; +$LANG["phrase_previous_field"] = "«قبلی زمینه"; +$LANG["phrase_previous_page"] = "صفحه قبل"; +$LANG["phrase_previous_view"] = "«قبلی نمایش"; +$LANG["phrase_program_name"] = "نام برنامه"; +$LANG["phrase_public_form_omit_list"] = "عمومی فرم لیست از قلم انداختن"; +$LANG["phrase_public_view_omit_list"] = "مشاهده اطلاعات عمومی از قلم انداختن فهرست"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "مشکل با پرس و جو زیر وجود دارد :"; +$LANG["phrase_radio_buttons"] = "دکمه های رادیویی"; +$LANG["phrase_random_form_submission"] = "تصادفی فرم ارسال مقاله"; +$LANG["phrase_re_enter_password"] = "رمز عبور را دوباره وارد کنید"; +$LANG["phrase_recipient_type"] = "نوع گیرنده"; +$LANG["phrase_redirect_url"] = "تغییر مسیر آدرس"; +$LANG["phrase_refresh_list"] = "بازآوریفهرست"; +$LANG["phrase_refresh_module_list"] = "فهرست تازه کردن ماژول"; +$LANG["phrase_refresh_page"] = "تازه کردن صفحه"; +$LANG["phrase_refresh_theme_list"] = "تازه کردن فهرست تم ها"; +$LANG["phrase_register_new_email"] = "ثبت نام جدید ایمیل"; +$LANG["phrase_remaining_characters"] = "باقی مانده کاراکتر"; +$LANG["phrase_remaining_words"] = "باقی مانده کلمات"; +$LANG["phrase_remove_tabs"] = "چوبالفها حذف"; +$LANG["phrase_required_password_chars"] = "شخصیت های مورد نیاز رمز عبور"; +$LANG["phrase_resend_test_submission"] = "ارسال نامه تست ارسال مقاله"; +$LANG["phrase_return_form_list"] = "بازگشت به فرم فهرست"; +$LANG["phrase_row_selected"] = "{\$num_rows} سطر انتخاب شده"; +$LANG["phrase_rows_selected"] = "{\$num_rows} سطر انتخاب شده"; +$LANG["phrase_sample_data"] = "داده های نمونه"; +$LANG["phrase_save_changes"] = "ذخیره تغییرات"; +$LANG["phrase_search_keyword"] = "جستجو کلید واژه"; +$LANG["phrase_security_settings"] = "تنظیمات امنیتی"; +$LANG["phrase_select_all"] = "انتخاب همه"; +$LANG["phrase_select_all_X_results"] = "انتخاب همه) {\$numresults} نتایج"; +$LANG["phrase_select_all_on_page"] = "همه را انتخاب کنید در صفحه"; +$LANG["phrase_select_date"] = "انتخاب تاریخ"; +$LANG["phrase_select_field"] = "انتخاب رشته"; +$LANG["phrase_select_swatch"] = "انتخاب SWATCH"; +$LANG["phrase_selected_clients"] = "مشتریان منتخب"; +$LANG["phrase_selected_views"] = "مشاهدات برگزیده"; +$LANG["phrase_send_email"] = "ارسال ایمیل"; +$LANG["phrase_send_test_email"] = "تست ارسال پست الکترونیکی"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "جلسات اتماموقت"; +$LANG["phrase_setting_value"] = "تعیین ارزش"; +$LANG["phrase_setup_options"] = "گزینه های راه اندازی"; +$LANG["phrase_show_all"] = "نمایش همه"; +$LANG["phrase_show_form"] = "نمایش فرم"; +$LANG["phrase_size_large"] = "بزرگ (متن)"; +$LANG["phrase_size_medium"] = "متوسط (<= 256 کاراکتر)"; +$LANG["phrase_size_small"] = "کوچک (<= 20 کاراکتر)"; +$LANG["phrase_size_tiny"] = "کوچک (<= 5 کاراکتر)"; +$LANG["phrase_size_very_large"] = "بسیار بزرگ (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "پرش فیلد"; +$LANG["phrase_skip_step"] = "گام پرش"; +$LANG["phrase_small_100px"] = "اندازه کوچک (100px)"; +$LANG["phrase_small_80px"] = "اندازه کوچک (80px)"; +$LANG["phrase_smart_fill"] = "هوشمند را پر کنید"; +$LANG["phrase_smart_fill_fields_from_c"] = "هوشمند از زمینه های پر کنید :"; +$LANG["phrase_smart_fill_user_documentation"] = "هوشمند کاربر گامباس را پر کنید »"; +$LANG["phrase_sort_as"] = "مرتب کردن بر اساس به عنوان"; +$LANG["phrase_special_fields"] = "زمینه های ویژه"; +$LANG["phrase_standard_fields"] = "زمینه های استاندارد"; +$LANG["phrase_standard_filters"] = "فیلترهای استاندارد »"; +$LANG["phrase_step_1"] = "گام 1"; +$LANG["phrase_step_2"] = "مرحله 2"; +$LANG["phrase_step_3"] = "مرحله 3"; +$LANG["phrase_step_4"] = "گام 4"; +$LANG["phrase_step_5"] = "گام 5"; +$LANG["phrase_step_6"] = "گام 6"; +$LANG["phrase_strip_tags_in_submissions"] = "برچسب نوار در فرمهای"; +$LANG["phrase_subject_line"] = "موضوع خط"; +$LANG["phrase_submission_date"] = "تاریخ ارسال مقاله"; +$LANG["phrase_submission_id"] = "تاریخ ثبت شناسه"; +$LANG["phrase_submission_made"] = "تاریخ ثبت ساخته شده است : {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "نوع مقاله"; +$LANG["phrase_submissions_per_page"] = "مطلب و مقاله در هر صفحه"; +$LANG["phrase_system_check"] = "سیستم چک"; +$LANG["phrase_system_fields_no_validation"] = "شما ممکن است اعتبار سنجی در زمینه های سیستم اضافه نمی کند."; +$LANG["phrase_system_time_offset"] = "سیستم انحراف زمانی"; +$LANG["phrase_tab_label"] = "برگه لیبل"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "تست مجوزها پوشه"; +$LANG["phrase_test_submission"] = "تست ارسال مقاله"; +$LANG["phrase_test_submission_3"] = "3. تست ارسال مقاله"; +$LANG["phrase_test_submission_received"] = "تست مقاله های دریافتی"; +$LANG["phrase_text_and_html"] = "متن و نسخه متنی"; +$LANG["phrase_text_email"] = "متن ایمیل"; +$LANG["phrase_text_template"] = "متن الگو"; +$LANG["phrase_the_previous_month"] = "ماه گذشته"; +$LANG["phrase_theme_description"] = "توضیحات تم"; +$LANG["phrase_theme_info"] = "تم اطلاعات"; +$LANG["phrase_tiny_30px"] = "کوچک (30px)"; +$LANG["phrase_tiny_50px"] = "کوچک (50px)"; +$LANG["phrase_total_results_c"] = "نتایج : مجموع :"; +$LANG["phrase_type_c"] = "نوع خطا :"; +$LANG["phrase_unselect_all"] = "عدمگزینشهمه"; +$LANG["phrase_update_accounts"] = "به روز رسانی حساب"; +$LANG["phrase_update_email_template"] = "به روز رسانی پست الکترونیک الگو"; +$LANG["phrase_update_field"] = "به روز رسانی فیلد"; +$LANG["phrase_update_order"] = "ترتیب بروز رسانی"; +$LANG["phrase_update_view"] = "نمایش بروز رسانی"; +$LANG["phrase_upload_file"] = "آپلود فایل"; +$LANG["phrase_upload_files"] = "آپلود فایلها"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "مسیر پوشه آپلود"; +$LANG["phrase_upload_folder_url"] = "پوشه آپلود آدرس"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "استفاده از مقدار پیش فرض؟"; +$LANG["phrase_used_by_num_form_fields"] = "استفاده شده توسط فرم پروژه #"; +$LANG["phrase_uses_swatches"] = "استفاده از تکرار"; +$LANG["phrase_valid_email"] = "ایمیل معتبر"; +$LANG["phrase_validation_error"] = "خطا در اعتبار سنجی"; +$LANG["phrase_validation_rule"] = "قانون اعتبار سنجی"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "مشخصات گروه"; +$LANG["phrase_view_id"] = "نمایش ID"; +$LANG["phrase_view_name"] = "نام نمایش"; +$LANG["phrase_view_placeholders"] = "Placeholders مشاهده"; +$LANG["phrase_view_submissions"] = "مشاهده مطلب و مقاله"; +$LANG["phrase_view_uploaded_files"] = "نمایش ارسال فایل"; +$LANG["phrase_viewing_range"] = "[مشاهده {\$startnum} به {\$endnum}]"; +$LANG["phrase_when_sent"] = "هنگامی که خبر"; +$LANG["phrase_when_submission_is_deleted"] = "هنگامی که ارسال حذف شده است"; +$LANG["phrase_when_submission_is_edited"] = "وقتی که تسلیم است ویرایش"; +$LANG["phrase_who_can_access"] = "چه کسی می تواند دسترسی؟"; +$LANG["phrase_word_limit_p"] = "حد کلمه."; +$LANG["phrase_year_to_date"] = "سال تا به امروز"; +$LANG["phrase_yes_for_all_views"] = "بله ، برای همه پروفایل"; +$LANG["phrase_yes_for_specific_views"] = "بله ، به خاطر دیدگاههای خاص"; +$LANG["phrase_your_account"] = "حساب کاربری شما"; +$LANG["phrase_your_email"] = "ایمیل شما"; +$LANG["phrase_your_email_address"] = "آدرس ایمیل شما"; +$LANG["processing_form_disabled"] = "با عرض پوزش ، این فرم را غیرفعال شده است."; +$LANG["processing_form_incomplete"] = "با عرض پوزش ، این فرم را ندارد ، نمایش داده نمی شود تا به طور کامل از درون فرم ابزار تنظیم. به احتمال زیاد علت این مشکل این است که شما آن را برداشته form_tools_initialize_form "" زمینه فرم پنهان ، اما تمام مراحل "افزودن فرم" فرایند را انجام دهد.

    لطفا وارد شوید و فرم بررسی پیکربندی."; +$LANG["processing_init_complete"] = "با تشکر! ارسال مقالات شما را از طریق آزمون با موفقیت قرار داده شده است. لطفا به ابزار مدیریت فرم و کلیک بر روی "بازخوانی" را فشار دهید در پایین فرم مرحله اضافه کردن صفحه به 3 پایان تنظیم فرم شما برمی گرداند."; +$LANG["processing_invalid_form_id"] = "با عرض پوزش ، این به نظر نمی رسد ID فرم معتبر باشد."; +$LANG["processing_no_form_id"] = "process.php شناسه نیاز به یک فرم برای پردازش. مطمئن شوید که فرم شما حاوی یک فیلد مخفی با نام "form_tools_form_id" که در طول فرم عبور شناسه."; +$LANG["processing_no_form_url_for_recaptcha"] = "فرم ابزار قادر به تعیین که در آن به هنگام تغییر مسیر موفق به CAPTCHA درست را وارد کنید. لطفا در زمینه مخفی با نام form_tools_form_url حاوی آدرس فرم انتقال دهند."; +$LANG["processing_no_post_vars"] = "process.php است هر اطلاعات دریافت نکرده است. توجه : این اسکریپت را نمی توان به طور مستقیم در مرورگر شما لود.
    مطمئن شوید که فرم شما در حال ارسال از طریق پست."; +$LANG["processing_no_redirect_url"] = "پردازش به درستی ارسال شد ، اما شما باید یک آدرس اینترنتی هدایت برای این فرم تعیین شده نیست! ویرایش فرم خود را در فرم ابزارهای رابط کاربر و اضافه کردن آدرس اینترنتی هدایت."; +$LANG["special_language"] = "Persian"; +$LANG["special_language_locale"] = "Persian"; +$LANG["special_text_direction"] = "rtl"; +$LANG["text_account_settings_page"] = "همه حساب های مشتری جدید را با تنظیمات و مجوزهای تعریف شده در ذیل ایجاد می شود. برای نادیده گرفتن تنظیمات برای یک مشتری خاص ، ویرایش حساب مشتری و برگه خود را ببینید تنظیمات می پردازیم."; +$LANG["text_add_form_choose_integration_method"] = "را انتخاب کنید که روش شما مایل به استفاده از فرم خود را به ادغام با ابزار فرم."; +$LANG["text_add_form_code_submission_benefits"] = "این روش با استفاده از فرم ابزار API ، شامل اسکریپت ابزارهای در فرم اصلی. API فراهم می کند تعدادی از توابع مفید برای کار یکپارچه سازی فرم شما با ابزار فرم به سادگی امکان پذیر است. هیچ محدودیتی به چگونگی شکل گیری شما می شود را مشاهده کنید زمانی که شما استفاده از API وجود دارد. شما می توانید مطالب را در یک بروید ، یا صفحه به صفحه ارسال ، شما می توانید خود را سفارشی سمت سرور اعتبار سنجی ، عکس CAPTCHA را اضافه کنید ، شما می توانید انتخاب کنید برای ارسال اطلاعات در حال حاضر ، اما تنها آن را به تسلیم در فرم ابزارهای UI نمایش در تاریخ بعد (نگاه کنید به نهایی مقاله بخش در مستندات کمک API )."; +$LANG["text_add_form_code_submission_drawbacks"] = "به منظور ارسال داده های فرم خود را از طریق پی اچ پی ، فرم شما باید بر روی وب سایت همانند این شکل نصب ابزارهای واقع شده است. ثانیا ، برای تازه کار و غیر فنی کاربران ابزار فرم ، این روش را می توان کمی تهدید آمیز در ابتدا. اما مقدار زیادی از مستندات برای کمک به شما وجود دارد ، از جمله دو آموزش ساده برای یکپارچه سازی تک و چند صفحه فرم (این ها در یک مرحله بعد مرتبط)."; +$LANG["text_add_form_direct_submission_benefits"] = "این ساده ترین راه برای ارسال فرم فرم خود را به ابزار است. این هیچ دانش پی اچ پی نیاز نیست و تنها نیاز به یک تغییر بسیار کوچک به فرم شما. آن را برای فرم های کوچک خوبی است که در آن شما می خواهید فقط به ارائه اطلاعات به پایگاه داده و سپس تغییر مسیر کاربر به thankyou "" صفحه."; +$LANG["text_add_form_direct_submission_drawbacks"] = "این روش بسیار ساده ارسال شده است استفاده کنید ، اما برای کنترل اشکال بسیار پیچیده تر را فراهم نیست. فرم های چند صفحه یا فرم که نیاز به اعتبار سنجی سمت سرور بهتر است روش دوم مناسب : از طریق ارسال فرم ابزار ببینند."; +$LANG["text_add_form_field_types1"] = "تقریبا انجام شده است! این صفحه تلاش می کند تا پیدا کردن تمام فیلد های فرم شما و تعیین نوع رشته خود. با کلیک بر روی دکمه را پر کنید هوشمند در سمت راست برای شروع. شما خواهد شد تنها با اجازه برای ادامه زمانی که تمام اقدامات حل و فصل شده اند -- مسائلی که نیاز به توجه خود را در "لزوم عمل " ستون ظاهر شوند."; +$LANG["text_add_form_field_types2"] = "در صورتی که فرم شما در HTML ، روی دکمه پرش گام برای ادامه کلیک کنید. این همه می توانند پیکربندی شده باشد بعد."; +$LANG["text_add_form_field_types3"] = "این مجدد محتویات فرم شما () توجه : این بازنویسی هر گونه تغییر شما در این صفحه ساخته شده است."; +$LANG["text_add_form_field_types4"] = "در صورتی که شما را به مشکلات اجرا ، اینجا را کلیک کنید این مرحله به جست و خیز است. تمام زمینه های حل نشده را به استفاده از مقادیر پیش فرض. شما می توانید این زمینه را بعد از سفارشی."; +$LANG["text_add_form_field_types_manual_upload"] = "اگر شما شده اند قادر به زمینه های خود را هوشمند را پر کنید ، شما ممکن است بخواهید یک راه حل جایگزین برای امتحان کنید : آپلود نسخه از اشکال خود را در زمینه های زیر."; +$LANG["text_add_form_field_types_manual_upload2"] = "توجه : صفحات اولیه PHP (یا سایر کد سمت سرور) را آپلود کنید -- نسخه HTML آپلود . برای دریافت این ، مشاهده و صرفه جویی در صفحه را از مرورگر خود فعال کنید."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "در زمینه های متعدد است که می تواند در صفحه فرم که شما مشخص یافت نمی شود وجود دارد. این بیشتر به احتمال زیاد توسط یکی از موارد زیر ایجاد می شود :"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "شما وارد یک یا چند آدرس فرم چند صفحه فرم شما نادرست است."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "یک یا چند صفحه از فرم شما رمز محافظت شده و اسکریپت می تواند صفحه دسترسی پیدا کنید."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "شما اشتباه وارد آدرس فرم شما."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "اینجا را کلیک کنید برای بازگشت به صفحه اطلاعات فرم به بررسی تنظیمات شما."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "شما فرم شما () پس از ارائه آزمون تغییر"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "اینجا را کلیک کنید از طریق تسلیم آزمون دیگر قرار داده است."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "فرم شما با رمز محافظت شده و اسکریپت می تواند صفحه دسترسی پیدا کنید."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "در یکی دیگر از تب / پنجره از این مرورگر ، به صورت خود را وارد بخش مدیریت شوید ، سپس روی دکمه تازه کردن صفحه زیر را امتحان کنید برای یافتن مجدد مزارع کلیک کنید."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "اگر هیچ یک از کار راه حل های بالا ، شما نیز ممکن است را امتحان کنید می خواهید آپلود دستی فرم های خود را برای پردازش ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "در زمینه های متعدد است که می تواند در صفحات فرم که شما مشخص یافت نمی شود وجود دارد. این بیشتر به احتمال زیاد توسط یکی از این موارد ایجاد می شود :"; +$LANG["text_add_form_help_link"] = "اگر شما را به هر گونه مشکل در طی این مراحل اجرا ، سعی کنید به خواندن مستندات کاربر."; +$LANG["text_add_form_step_1_text_1"] = "صفحههای زیر به شما منجر شود را از طریق فرم مراحل به ابزار پیکربندی برای ذخیره فرمهای کنید. قبل از ادامه ، لطفا مطمئن شوید که :"; +$LANG["text_add_form_step_1_text_2"] = "فرم شما قبلا ایجاد شده و آن را از طریق یک آدرس اینترنتی (localhost قابل دسترس خوب است)"; +$LANG["text_add_form_step_1_text_3"] = "قادر به ویرایش فرم شما"; +$LANG["text_add_form_step_2_para_2"] = "باز فرم خود را در ویرایشگر انتخاب کنید و تغییر تگ فرم خود را به شرح زیر است ، از جمله دو زمینه پنهان است."; +$LANG["text_add_form_step_2_para_3"] = "بعد ، باز خود را در فرم از مرورگر وب. پر کنید ، در هر زمینه و ارائه آن را. پس از تسلیم ، شما باید یک پیام اطلاع رسانی مراجعه کنید. هنگامی که این پیام نمایش داده شده است ، بازگشت به این صفحه و با کلیک بر روی تازه کردن دکمه زیر کلیک کنید. هنگامی که این فرایند کامل است ، شما مشاهده خواهید کرد ادامه دکمه زیر ، مصرف شما به مرحله بعدی."; +$LANG["text_add_form_step_2_para_6"] = "در فرم ارسال مقاله خود ، از جمله ارزش های زیر است. آنها ممکن است به طور مستقیم از طریق پی اچ پی تنظیم و یا همراه خود را از طریق فرم منتقل شود. در زیر نمونه هایی از هر کدام. (\$ varname) هش (یا آرایه) انجمنی از همه اطلاعات فرم ارسال مطلب -- این است که معمولا postvar \$ () یا (\$) sessionvar متغیر است ، اما ممکن است آن را سفارشی ساخته شده است."; +$LANG["text_add_form_step_2_text_2"] = "URL خود را "نقل قول " صفحه را وارد کنید. این جایی است که شما می خواهید مردم را به به کارگردانی پس از فرم ارائه شده است."; +$LANG["text_add_form_step_3_para_1"] = "این صفحه حاوی تمامی زمینه ها در ارسال مقاله فرم ارسال کنید. لطفا در هر رشته و بررسی حذف هر کدام را که شما برای هر مقاله نیاز به ذخیره نمی شود. اگر در یک فیلد صحیح توسط شما حذف حادثه ، و یا تمایل به تغییر اطلاعات ذخیره شده توسط فرم شما ، بازگشت به صفحه قبلی ارسال ارسال تست جدید."; +$LANG["text_add_form_step_3_para_2"] = "توجه : اگر شما ارزش های چند گانه از طریق ارسال چک باکس ها و یا چند جعبه را انتخاب کنید ، مطمئن شوید که زمینه نام خود را به پایان می رسد با [] نویسه (نگاه کنید به اسناد کاربر برای اطلاعات بیشتر)."; +$LANG["text_add_form_step_3_text_1"] = "در اینجا که در آن سرگرم کننده شروع می شود! در این نقطه ، ابزار فرم در انتظار ارسال تست از فرم شما. این ارسال مقاله فرم بدانند چه اطلاعاتی را باید در پایگاه داده ذخیره می شود استفاده کنید."; +$LANG["text_add_form_step_3_text_2"] = "ضمنا فرم فرم خود را به ابزار"; +$LANG["text_add_form_step_3_text_3"] = "با استفاده از ابزار فرم API"; +$LANG["text_add_form_step_3_text_4"] = "برای کمک به کامل کردن فرم شما ، ما پیشنهاد میکنیم که به شما خواندن یکی از آموزشهای زیر می باشد :"; +$LANG["text_add_form_step_3_text_5"] = "توضیح دهید که چگونه آنها را در تعیین فرم خود را در آمادگی برای آزمون تسلیم ، و شامل اطلاعات دیگری که ممکن است کمک خواهد شد. خط پی اچ پی شما باید باشد :"; +$LANG["text_add_form_step_3_text_6"] = "این امر تضمین داده است در واقع به ابزار فرم ارسال می شود. هنگامی که شما را از طریق آزمون خود را ارسال ، با کلیک بر روی دکمه زیر را قرار داده است."; +$LANG["text_add_form_step_3_text_7"] = "در صفحه قبل خود را به نهایی "متشکرم" صفحه ، مطمئن باشید برای اضافه کردن پارامتر زیر را به متغیر \$ پارامترهای :"; +$LANG["text_add_form_step_5_para_1"] = "پایگاه داده شده است تا برای این فرم و فرم تعیین کرده است برای استفاده فعال شده است. اگر شما اشاره گر فرم ارائه شده توسط خود را به process.php ساخته شده ، لطفا با بازگشت به فرم شما و حذف پس زمینه صفحه :"; +$LANG["text_add_form_step_5_para_2"] = "سپس دیدار خود را "متشکرم" را برای خالی کردن صفحه جلسه است. به محض این که انجام شده است ، تمام فرمهای جدید خواهد شد فراوری شده و ذخیره شده توسط ابزار فرم. سعی کنید به این که تسلیم و یا دو تا صحت تمام اطلاعات به درستی آپلود شده است."; +$LANG["text_add_form_step_5_para_3"] = "اگر می خواهید به ریز برای کوک کردن فرم شما گزینه هایی مانند خودکار emailing ، فرم فیلد اضافی اضافه کردن زمینه و یا سفارشی کردن فرم انواع زمینه ، شما ممکن است فرم شما در هر نقطه ویرایش."; +$LANG["text_add_form_step_5_para_4"] = "از آنجایی که فرم شما حاوی فایل زمینه های آپلود ، شما نیاز به پیکربندی هر یک از زمینه فایل به پوشه آپلود را مشخص کنید ، چه فایل مجاز و. این را می توانید در برگه نمایش و ویرایش صفحه فرم یافت می شود."; +$LANG["text_add_form_step_5_para_5"] = "در صورت ارسال مقالات از طریق API فرستاده شده است ، تغییر خط ft_api_init_form_page در صفحه اول فرم خود را به آدرس"; +$LANG["text_add_submission_button"] = "اضافه کردن دکمه ثبت تنها برای نمایش ها که به نظر می رسد "ارسالی اضافه کردن " گزینه را به "بله "."; +$LANG["text_admin_email_placeholder_info"] = "این آدرس ایمیل از فرم مدیر ابزار ، تعریف شده را در قسمت تنظیمات حساب شما است. این فقط آدرس ایمیل در خروجی ، بنابراین اگر می خواهید به عنوان یک لینک متنی استفاده کنید ، شما باید آن را در تگ <a>بسته بندی کردن ، صورت :
    <ahref="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </>"; +$LANG["text_also_default_login_page_theme"] = "(همچنین این تم پیش فرض صفحه ورود به سایت)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "اول ، لطفا نوع فرم را انتخاب کنید."; +$LANG["text_client_form_page"] = "این صفحه حاوی تمام فرم ها و پروفایل اختصاص یافته به این سرویس گیرنده. نکته : منظور از آنها برای دیدن مطلب و مقاله فرم ، آنها باید به حداقل یک نمایش اختصاص داده خواهد شد."; +$LANG["text_client_map_filters_desc1"] = "نقشه فیلترهای کارفرما اجازه ارسالی که در این نمایش توسط نگاشت مقادیر در فیلد فرم به ارزشها در حساب مشتری ظاهر محدود شما خواهد شد."; +$LANG["text_client_no_forms"] = "شما در حال حاضر هیچ فرم های موجود برای بررسی."; +$LANG["text_client_welcome"] = "خوش آمدید! این فروشگاه برنامه همه اطلاعات ارسال شده توسط بازدید کنندگان وب سایت شما. برای مشاهده مطلب و مقاله برای یک شکل با کلیک بر روی لینک مشاهده و یا از منو چپ برای انتخاب های دیگر."; +$LANG["text_config_file_created"] = "فایل config.php شما ساخته شد."; +$LANG["text_config_file_not_created"] = "ما می تواند فایل config.php خود را ایجاد کنید. شما باید فایل را دستی ایجاد کنید."; +$LANG["text_config_file_not_created_instructions"] = "کپی کنید و آن مطالب را از قسمت زیر را به یک فایل با نام config.php و آن را از طریق FTP به ابزار فرم ارسال / پوشه جهانی (پوشه که همچنین دارای چند فایل و دایرکتوری دیگر ، یک فایل با نام library.php)."; +$LANG["text_confirm_delete_form"] = "بله ، من می خواهم این فرم را پاک کنید"; +$LANG["text_create_admin_account"] = "حالا ما قصد ایجاد حساب مدیر است. این برای مدیریت تمام جنبه های فرم ابزار ، مانند اضافه نمودن فرم و ایجاد حساب های مشتری مورد استفاده قرار میگیرد."; +$LANG["text_create_new_client_account"] = "با استفاده از فرم زیر برای ایجاد یک حساب مشتری جدید است. تمام اطلاعاتی که مورد نیاز است."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "پی اچ پی مراجعه کنید {\$datefunctionlink} تابع برای گزینه های قالب بندی"; +$LANG["text_default_file_settings_page"] = "این صفحه را تعریف می کند فایل تنظیمات فرم های فرستاده شده برای نصب شما ابزار ها باشد. این قوانین درخواست برای ورود به آپلود همه فایل ها را از طریق فرم ابزار ، مگر آن که صریحا برای زمینه فرم فردی overridden. توجه : اگر شما پوشه را تغییر دهید بعد از آپلود فایل آپلود شده اند ، آنها را به صورت خودکار به پوشه جدید منتقل شد."; +$LANG["text_default_theme_cache_folder_not_writable"] = "قبل از ادامه ، شما باید خود را برای به روز رسانی / تم ها / پیش فرض / پوشه کش که اجازه کامل دسترسی خواندن و نوشتن. به محض این که انجام شده است ، این پیام را محو نخواهد شد و شما می توانید اسکریپت را نصب کنید."; +$LANG["text_default_values_in_view"] = "این بخش اختیاری است. ارسالی های ایجاد شده با این دیدگاه ، مقادیر پیش فرض مشخص شده در اینجا باشد."; +$LANG["text_delete_all_forms"] = "من می خواهم به پاک کردن همه فایل ها است که از طریق این فرم ارسال شد"; +$LANG["text_delete_form_warning"] = "آیا مطمئن هستید که می خواهید پاک کنید این فرم را؟ این عمل قابل بازگشت نیست. همه داده خواهد شد برای همیشه از دست داده!"; +$LANG["text_edit_admin_menu_page"] = "شما نمی توانید منوی خود را ویرایش کنید. به شما اطمینان همیشه دسترسی به تمام قابلیت ها در دسترس است در داخل فرم ابزار ، صفحههای زیر ضروری هستند : فرم ها ، مشتریان ، شما در حساب ، ماژول ها ، تنظیمات و خروج."; +$LANG["text_edit_client_menu_page"] = "در این بخش به شما امکان سفارشی کردن ناوبری ستون سمت چپ را برای هر کاربر. شما نمی توانید ایجاد کنید به عنوان مشتری بسیاری از منوها به طور دلخواه و اختصاص دادن هر حساب را به یکی از آنها را. به طور پیش فرض دو منوها : یکی برای شما ، مدیریت ، و یکی برای همه حساب های مشتری وجود دارد. حساب کاربری مدیر ممکن است حذف شده اما بار ندارد."; +$LANG["text_edit_tab_summary"] = "اگر می خواهید به گروه زمینه های این نمایش را به زبانه ، فقط نام زبانه های زیر را وارد کنید. پس از شما انجام می شود ، زبانه مناسب برای گروه زمینه هر یک را انتخاب کنید در تب زمینه."; +$LANG["text_edit_view_list_page"] = "این کنترل تب که زمینه را به عنوان ستون در صفحه مثال ارسال مقاله و چند تنظیمات اضافی برای آن دسته از زمینه ها به نظر می رسد. توجه : توصیه می کنیم بیش از 4 یا 5 از زمینه های مهم در نظر اضافه کنید."; +$LANG["text_email_settings_intro"] = "این صفحه به شما اجازه می دهد که شناسایی از فیلد های فرم خود را ذخیره ایمیل و نام مربوطه است. هنگامی که شما آنها را تعریف کنید ، شما می توانید آنها را در پست الکترونیکی شما استفاده از الگوها به عنوان دریافت کنندگان. در این بخش کاملا اختیاری است."; +$LANG["text_email_tab_summary"] = "در این بخش ، امکان می دهد هر تعداد از ایمیل های ساخت باشند و به شما خبر هر زمان که فرم شما است را مشاهده کنید ، و دیگر باعث."; +$LANG["text_email_template_tab"] = "در این بخش به شما امکان تعیین محتوا به نظر می رسد در ایمیل. در صورت تمایل به ارسال پست الکترونیکی شما به صورت متن یا فقط ایمیل ، وارد کنید فقط یک مقدار برای آن بخش. اگر شما وارد یک ارزش برای هر دو گروه ، ایمیل خواهد شد در هر دو فرمت های فرستاده خواهد شد."; +$LANG["text_email_template_text_1"] = "شده است وجود دارد ساخته شده را از طریق فرم ارسال مقالات خود ، {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "شده است وجود دارد ساخته شده را از طریق فرم ارسال مقالات خود ، {\$FORMNAME} :"; +$LANG["text_email_template_thanks"] = "برای تشکر از ارسال شما!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "پیام خطا نشان می دهد اگر زمینه با شکست مواجه اعتبار"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "فرم های خارج از اشکال که در حال حاضر در وب سایت خود را ، و یا در جایی بر روی وب وجود دارد. این گزینه را انتخاب کنید اگر شما از شکل خود را که شما می خواهم برای ادغام با ابزار فرم."; +$LANG["text_fields_tab_summary"] = "این صفحه لیست تمام فرم شما است. برای کنترل آنها ظاهر می شود زمانی که ارسالی مرور ، نگاه کنید به زبانه نمایش ها. حذف یک فیلد را در این صفحه آن را از تمام ارسالی حذف ، بنابراین مراقب باشید!"; +$LANG["text_file_extension_info"] = "را وارد کنید پسوند فایل را با کاما از هم جدا (به عنوان مثال jpg ، قاب ، فعلی) خالی بگذارید و یا هر نوع فایل را داده باشد."; +$LANG["text_file_field_placeholders_info"] = "زمینه های دارای دو پرونده ویژه متغیرهایی : FILEURL و نام فایل. FILEURL آدرس کامل به پرونده است ، بنابراین شما میتوانید مستقیما به آن را در ایمیل های شما هستیم ؛ نام فایل است فقط نام فایل."; +$LANG["text_filters_page"] = "فقط مطلب و مقاله که با قوانین زیر را به شما ظاهر خواهد شد در این نمایش گیرید."; +$LANG["text_filters_tips"] = "برای راهنمایی در مورد نحوه استفاده از فیلتر های ارسال ، نگاه کنید به گامباس کاربر."; +$LANG["text_forgot_password"] = "مشکلی نیست. فقط خود را در زیر وارد کنید نام کاربری ورود به سیستم و اطلاعات شما به آدرس ایمیل شما که در فایل است ارسال می شود. در صورتی که نظر فراموش کردن کلمه عبور نام کاربری خود ، لطفا ایمیل مدیر سایت در {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "این فرم شامل یک یا چند فایل زمینه های آپلود :"; +$LANG["text_form_placeholder_info"] = "placeholders زیر ممکن است در هر زمینه حفره یا سوراخ قالب ایمیل و زبان استفاده می شود ، بدون در نظر گرفتن هر مشاهده قالب ایمیل ها تخصیص داده شده است. placeholders پرسش سوال به صورت خاص ، placeholders پاسخ پاسخ به هر سوال."; +$LANG["text_form_submission_date_placeholder"] = "این تاریخ زمانی که تسلیم ساخته شده بود."; +$LANG["text_form_tools_form_url"] = "URL کامل از فرم است. این فقط یک مقدار برای فرم های خارجی."; +$LANG["text_form_tools_login_url"] = "آدرس ورود به سایت به شکل ابزار ها باشد."; +$LANG["text_form_view_permission_info_admin"] = "توجه : این فرم در حال حاضر مدیر نوع دسترسی ، بنابراین هیچ یک از حساب های مشتری قادر خواهد بود برای دیدن این دیدگاه است."; +$LANG["text_form_view_permission_info_private"] = "توجه : این فرم در حال حاضر نوع دسترسی خصوصی تا گزینه های عمومی و خصوصی خواهد شد که زیر مجموعه ای از مشتریان محدود است."; +$LANG["text_ft_installed"] = "خوش آمدید ، ابزار فرم با موفقیت نصب شد!"; +$LANG["text_global_placeholder_info"] = "این متغیرهایی ممکن است در هر قالب و هر شکلی مورد استفاده قرار گیرد."; +$LANG["text_group_name_explanation"] = "در زمینه های اضافه شده را از طریق فرم اضافه کردن فرایند ، این مقدار از قبل پر شده است به متن صفحه نمایش از هر زمینه استفاده می کند مقدار است. ممکن است شما بخواهید آن را تغییر دهید تا بهتر مشخص کردن مطالب."; +$LANG["text_install_create_config_file"] = "فرم سرور خود را از فروشگاه های ابزار و تنظیمات پایگاه داده را در یک فایل به نام config.php ، در شما یافت نشد / جهانی / پوشه. با کلیک بر روی "ایجاد فایل" را فشار دهید تا فایل بر روی سرور خود به صورت خودکار تولید کند."; +$LANG["text_install_create_database_tables"] = "در حال حاضر ما قصد داریم برای ایجاد فرم جداول ابزار پایگاه داده باشد. این گام نیاز به پایگاه داده خود را به از قبل ساخته شد. اگر شما مطمئن نیستید که چگونه برای این کار ، لطفا با ارائه دهنده سرویس میزبانی خود."; +$LANG["text_install_db_tables_error_tip_1"] = ""نامعلوم MySQL سرور میزبان" معمولا بدان معنی است که نام هاست و به شما ارائه شده نادرست باشد. شاید سعی کنید این تنظیمات را در "localhost" -- این یک روش معمول برای اشاره به "محلی" پایگاه داده در وب سرور."; +$LANG["text_install_db_tables_error_tip_2"] = ""نمی تواند اتصال به سرور MySQL از طریق سوکت های محلی" به معنای زمینه پایگاه داده است دوباره نام هاست یا نادرست باشد."; +$LANG["text_install_db_tables_error_tip_3"] = ""دسترسی غیر ممکن برای کاربر :" بدان معنی است که یک مشکل با نام کاربری شما / ترکیبی رمز عبور وجود دارد."; +$LANG["text_install_db_tables_error_tip_4"] = ""دسترسی غیر ممکن برای کاربر :...... را به پایگاه داده" بدین معناست که اگر چه نام کاربری و رمز عبور خود را به شما عرضه درست است ، آن را قادر به اتصال به پایگاه داده است که با آن حساب خاص. این معنی است که می توانید یا نام پایگاه داده شما نادرست باشد ، و یا که این حساب کاربری که با آن پایگاه اطلاعاتی نمی دهد."; +$LANG["text_install_email_content_text"] = "منابع زیادی در وب سایت ما برای کمک به شما برای شروع کار، از جمله مستندات آنلاین ما (https://docs.formtools.org) و آموزش (https://docs.formtools.org/tutorials) وجود دارد. اگر متوجه شدید که گیر کرده یا سوال دارید، از github سوال کنید (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "با عرض پوزش ، ابزار فرم خواهد شد قادر به بر روی سرور خود اجرا کنید ، لطفا اینجا را کلیک کنید برای حداقل مورد نیاز."; +$LANG["text_install_system_check"] = "این صفحه اجرا می شود چند آزمایش بر روی سیستم شما برای اطمینان از آن قادر به اجرای ابزار فرم."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "فرم های داخلی وجود دارد تنها در داخل ابزار فرم -- و نه در جای دیگر در سایت شما. تنها ابزار فرم حساب های کاربری به فرم دسترسی داشته باشد. این گزینه را انتخاب کنید اگر شما یک فرم های موجود را ندارد."; +$LANG["text_internal_form_intro"] = "با استفاده از فرم زیر برای ایجاد یک فرم جدید داخلی. تمام تنظیمات مربوط به ، از جمله تعداد و محتوای فیلد های فرم را می توان بعد از تغییر و پیکربندی."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "به منظور ورود به سیستم و استفاده از ابزار فرم ، شما باید فعال کردن جاوا اسکریپت در مرورگر شما داشته باشد. لطفا آن را در حال حاضر ، بازآوری کلیک کنید و در مرورگر خود فعال کنید."; +$LANG["text_last_modified_date_explanation_c"] = "زمان این ارسال آخرین تغییر یافتهاست. برای مطلب و مقاله جدید ، این همان است :"; +$LANG["text_limit_email_content_desc"] = "این گزینه فقط برای HTML و محتوای متن تولید شده با حلقه های ناقلا کار می کند."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(فقط لیست توأم با یک یا چند فیلترهای تعریف شده)"; +$LANG["text_log_in_to_ft"] = "ورورد به فرم ابزار"; +$LANG["text_login"] = "لطفا در زیر وارد شوید برای دسترسی به \$ () program_name مرکز کنترل. اگر رمز ورود خود را فراموش کرده اند ، اینجا را کلیک کنید."; +$LANG["text_login_info"] = "همانطور که درخواست شده ، در اینجا اطلاعات ورود به سایت شما است."; +$LANG["text_name_of_form"] = "نام فرم."; +$LANG["text_no_clients"] = "در حال حاضر وجود ندارد مشتریان در پایگاه داده باشد. برای اضافه کردن حساب مشتری جدید ، روی دکمه زیر اضافه کردن کارفرما."; +$LANG["text_no_clients_found"] = "هیچ مشتری پیدا نشد. سعی کنید گسترش معیارهای جستجو کنید."; +$LANG["text_no_fields_in_view"] = "این دیدگاه هیچ زمینه در آن ندارد. بر روی لینک زیر کلیک کنید."; +$LANG["text_no_forms"] = "در حال حاضر وجود ندارد فرم ها در پایگاه داده باشد. برای اضافه کردن فرم جدید ، روی دکمه اضافه کردن فرم زیر وارد نمایید."; +$LANG["text_no_forms_found"] = "فرم های مورد در بر داشت."; +$LANG["text_no_forms_found_search"] = "فرم های مورد در بر داشت. سعی کنید گسترش بر اساس شرایط جستجوی شما یافت."; +$LANG["text_no_modules_found"] = "بدون ماژول یافت نشد. سعی کنید گسترش معیارهای جستجو کنید."; +$LANG["text_no_recipients_added"] = "بدون دریافت کنندگان را به آن اضافه شده."; +$LANG["text_no_search_results"] = "هیچ نتیجه ای با معیارهای جستجو در این مشاهده وجود دارد."; +$LANG["text_no_submissions_found"] = "با عرض پوزش ، هیچ مطلب و مقاله یافت نشد."; +$LANG["text_no_themes"] = "انجام هر گونه تم های تعریف شده نیست. به روز کردن لیست موضوع خود را چک کرده و یا ابزار فرم مستندات کاربر برای کسب اطلاعات در مورد اضافه کردن تم روی دکمه زیر کلیک کنید."; +$LANG["text_non_deletable_fields"] = "این فیلد توسط هسته اسکریپت مورد استفاده قرار می گیرد و نمی توان به ویرایش و یا حذف بدون باعث ناسازگار است. اگر شما مایل به ایجاد تغییرات به نوع رشته ، ایجاد یک کپی از آن و کپی را ویرایش کنید."; +$LANG["text_option_list_group_explanation"] = "اگر این انتخاب شده باشد ، به شما اجازه می دهد تا به گروه گزینه های خود را است. گروه نمایش داده می شود بستگی به نوع رشته را با استفاده از این لیست گزینه است."; +$LANG["text_option_list_page"] = "دکمه های رادیویی ، چک باکس ها ، dropdowns و زمینه را انتخاب کنید منوی کرکره ای چند کاربر را با گزینه های متعدد است که از آنها می توانید یک یا چند مورد را انتخاب کنید. در ابزار فرم ، این به عنوان لیست انتخابهای شناخته شده است. به طور کلی ، این به صورت خودکار توسط ایجاد فرم اضافه کردن به بیرون روند ، اما شما دستی می تواند به اضافه و یا ویرایش لیست گزینه شما اگر خود را به صورت تغییر در محتوا یا شما ساخت زمینه که تنها استفاده می شود داخلی."; +$LANG["text_option_list_used_by_fields"] = "این لیست اختیار (Options) توسط فرم های مختلف مورد استفاده قرار می گیرد. اگر اطلاعات شما به روز رسانی زیر ، آن را برای تمام زمینه ها (نگاه کنید به تغییر فرم زمینه زبانه برای دیدن لیستی از رشته ). اگر می خواهید برای به روز رسانی ارزش برای یک ، یا یک زیر مجموعه ای از زمینه های که در حال حاضر اختصاص داده ، اینجا را کلیک کنید برای ایجاد یک لیست گزینه های جدید که با ارزش های مشابه به عنوان یکی از این. سپس شما می توانید فرم شما می خواهید به گروه جدید اختصاص دهید."; +$LANG["text_public_form_omit_list_page"] = "فرم های عمومی به شما از تمام حساب های مشتری اجازه دسترسی به آنها را بدون اینکه به صورت دستی هر سرویس گیرنده اختصاص دادن به آنها بهره مند شوند. این صفحه اجازه می دهد که مشتریانی که ممکن است این فرم دسترسی نیست ، حتی اگر به شکل عمومی به عنوان مشخص شده است با دقت اشاره کردن شما خواهد شد."; +$LANG["text_public_view_omit_list_page"] = "مشاهده عمومی به شما از تمام حساب های مشتری اجازه دسترسی به آنها را بدون اینکه به صورت دستی هر سرویس گیرنده اختصاص دادن به آنها بهره مند شوند. این صفحه اجازه می دهد که مشتریانی که ممکن است این نمایش خاص با دقت اشاره کردن به شما دسترسی نیست."; +$LANG["text_reference_tab_info"] = "این صفحه لیست تمام placeholders برای فرم شما در دسترس است. Placeholders رشته است که می تواند در قالب های ایمیل استفاده می شود ، و زمینه های با آیکون حفره یا سوراخ مخصوص مشخص شده اند . هنگامی که به یک فیلد وارد شده ، آنها به صورت پویا تبدیل به مقدار مناسب زمانی زمینه مشاهده شده است و یا ایمیل فرستاده شده است."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "بررسی اسناد کاربر"; +$LANG["text_send_email_from_edit_submission_page"] = "گزینه شامل ارسال این ایمیل را از صفحه ویرایش ارسال مقاله"; +$LANG["text_smart_fill_option_list_problem"] = "ما قادر به پر کردن گزینه های این زمینه خود های هوشمند شد. با این حال ، به عنوان جایگزین ، شما می توانید آپلود یک کپی از صفحه فرم خود را در زمینه زیر را امتحان کنید. توجه : صفحات اولیه PHP (یا سایر کد سمت سرور) را آپلود کنید -- نسخه HTML آپلود . برای دریافت این ، مشاهده و صرفه جویی در صفحه را از مرورگر خود فعال کنید."; +$LANG["text_submission_ip_address"] = "آدرس اینترنتی کاربر است که ساخته شده تسلیم."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "با استفاده از فرم زیر به هر یک نمایش و یا ارسال خود از این ایمیل را ایجاد ایمیل الگو. ایمیل فقط به ایمیل مشخص شده در زیر خبر ؛ اصلی ، سی سی و رنم آدرس ایمیل گیرندگان را نادیده گرفته اند در حالی که آزمایش."; +$LANG["text_test_email_templates_no_submissions"] = "به منظور تست ایمیل خود الگوها ، باید ابتدا آن را از طریق فرم ارسال مقاله حداقل یک قرار داده است."; +$LANG["text_theme_page_intro"] = "این صفحه حاوی تمام تم ها کنید. کلیک بر روی تصویر بند انگشتی برای دیدن یک مثال بزرگتر از سبکهای موضوع است. "فعال" چک باکس تعیین یا نه موضوع که ممکن است توسط مشتری انتخاب خواهد شد. تمام تم ها به فهرست موجود ، دنیا را از فرم وب ابزار."; +$LANG["text_tutorial_adding_first_form"] = "آموزش : افزودن فرم اول شما!"; +$LANG["text_unique_submission_id"] = "ارسال شناسه منحصر به فرد."; +$LANG["text_unused_option_list"] = "این لیست گزینه با هر فرم استفاده نمی شود."; +$LANG["text_upgraded"] = "نصب ، شما به {\$version} ارتقاء داده شده است)"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "این لیست گزینه است زمینه های زیر مورد استفاده قرار می گیرد."; +$LANG["text_view_fields_info"] = "این تب را کنترل کدام زمینه نشان می دهد تا زمانی که در حال ویرایش تسلیم در این دیدگاه ، سفارش خود را و اینکه آیا آنها هستند قابل ویرایش است یا نه."; +$LANG["text_view_tab_summary"] = "این برگه به ​​شما اجازه می دهد تا روش های مختلف به گروه ایجاد کنید و داده های خود را را ترتیب. نمایش ها اجازه می دهد تا به زیر مجموعه های سفارشی از داده های فرم شما ایجاد شما آن را به تکه های قابل کنترل تقسیم ، و به منظور محدود کردن آنچه مشتریان ممکن است مراجعه کنید و یا ویرایش است."; +$LANG["validation_account_disabled"] = "با عرض پوزش ، حساب شما غیر فعال شده است."; +$LANG["validation_account_not_recognized"] = "با عرض پوزش ، نام کاربری است که به رسمیت شناخته شده نیست."; +$LANG["validation_account_not_recognized_info"] = "با عرض پوزش ، که نام کاربری یافت نشد. لطفا دوباره تلاش کنید ، یا تماس با مدیر سایت در آدرس زیر کلیک کنید."; +$LANG["validation_account_pending"] = "حساب کاربری شما در انتظار تائید توسط مدیر می باشد."; +$LANG["validation_check_delete_client"] = "آیا مطمئن هستید که می خواهید پاک کنید این حساب مشتری؟"; +$LANG["validation_client_password_missing_number"] = "مشتری کلمه عبور باید حداقل 1 عدد (0-9) باشد."; +$LANG["validation_client_password_missing_special_char"] = "رمز عبور مشتری باید شامل حداقل یکی از شخصیت های زیر : {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "مشتری کلمه عبور باید حداقل 1 حرف بزرگ باشد."; +$LANG["validation_client_password_too_short"] = "رمز عبور مشتری باید حداقل {\$number} کاراکتر باشد."; +$LANG["validation_col_name_is_reserved_word"] = "با عرض پوزش ، این پایگاه داده نام ستون است در MySQL کار محفوظ است. لطفا آن را تغییر نام دهید!"; +$LANG["validation_db_name"] = "نام بانک اطلاعاتی نمی تواند شامل دوره ها یا خطوط خالی باشد."; +$LANG["validation_db_not_updated_invalid_input"] = "پایگاه داده به روز نشد. لطفا برای دیدن مقادیر معتبر هستند که وارد کرده اید."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "با عرض پوزش ، مدیر پیش فرض ها و تم ها مشتری همیشه باید فعال باشد."; +$LANG["validation_default_phone_num_required"] = "لطفا را پر کنید شماره تلفن کامل برای <B>{ \$ میدان} </ B> زمینه -- تعداد تنها."; +$LANG["validation_default_rule_alpha"] = "لطفا فقط حروف و اعداد برای <B>{ \$ میدان} </ B> میدان را وارد کنید."; +$LANG["validation_default_rule_letters_only"] = "لطفا فقط نامه برای <B>{ \$ میدان} </ B> میدان را وارد کنید."; +$LANG["validation_default_rule_numbers_only"] = "لطفا فقط وارد کنید شماره برای <B>{ \$ میدان} </ B> زمینه."; +$LANG["validation_default_rule_required"] = "لطفا یک مقدار برای <B>{ \$ میدان} </ B> زمینه را وارد کنید."; +$LANG["validation_default_rule_valid_email"] = "لطفا یک آدرس ایمیل معتبر را وارد کنید <B>{ \$ میدان} </ B> زمینه."; +$LANG["validation_delete_form_confirm"] = "لطفا جعبه را تأیید کنم که شما مایل به حذف این فرم را بررسی می کند."; +$LANG["validation_delete_non_empty_option_list"] = "هشدار! این لیست گزینه است توسط یک یا چند فرم مورد استفاده قرار می گیرد. حذف آن را به کسانی که زمینه بس به درستی کار نکند."; +$LANG["validation_display_names_incomplete"] = "لطفا یک ارزش برای تمامی نامهای نمایش ، و یا با کلیک بر روی گزینه هوشمند را پر کنید تا آنها را به صورت پویا را وارد کنید را وارد کنید."; +$LANG["validation_duplicate_form_field_name"] = "شما می توانید به زمینه های متعدد را با نام همین رشته نیست."; +$LANG["validation_email_not_found_or_invalid"] = "با عرض پوزش ، ایمیل مرتبط با حساب کاربری خود شوید یا وجود ندارد یا معتبر نیست."; +$LANG["validation_folder_invalid_permissions"] = "به منظور اجرای این آزمایش ، به مجوز نیاز به تنظیم در پوشه آپلود شود را برای خواندن و نوشتن فایل های (777 در یونیکس) را داده باشد."; +$LANG["validation_folder_not_writable"] = "این پوشه است writeable نیست."; +$LANG["validation_internal_form_too_many_fields"] = "با عرض پوزش ، شما فقط می توانید فرم ها را با کمتر از 1000 زمینه و یا ایجاد."; +$LANG["validation_invalid_admin_email"] = "لطفا آدرس ایمیل adminstrator معتبر وارد کنید."; +$LANG["validation_invalid_admin_username"] = "حساب کاربری شما ممکن است تنها شامل کاراکتر الفبایی (AZ و 0-9)."; +$LANG["validation_invalid_client_username"] = "نام کاربری مشتری ممکن است تنها از حروف الفبایی (aZ و 0-9) تشکیل میدهند."; +$LANG["validation_invalid_client_username2"] = "با عرض پوزش ، نام کاربری و تنها ممکن است از حروف ، اعداد و شخصیت تاکید داشته باشد. لطفا یک نام کاربری جدید را وارد کنید."; +$LANG["validation_invalid_column_name"] = "نام ستون فقط ممکن است عدد و الفبایی (AZ ، 0-9). لطفا نام ستون را بررسی کنید."; +$LANG["validation_invalid_custom_from_email"] = "لطفا یک سفارشی 'معتبر از' آدرس ایمیل را وارد کنید."; +$LANG["validation_invalid_custom_reply_to_email"] = "لطفا پاسخ های سفارشی معتبر 'به' آدرس ایمیل."; +$LANG["validation_invalid_default_sessions_timeout"] = "لطفا یک مقدار صحیح (یک عدد) برای پیش فرض تایم جلسات را وارد کنید."; +$LANG["validation_invalid_email"] = "لطفا یک آدرس ایمیل معتبر وارد کنید."; +$LANG["validation_invalid_email_id"] = "با عرض پوزش ، که ایمیل نامعتبر است و شناسه."; +$LANG["validation_invalid_folder"] = "با عرض پوزش ، این نمیرسد پوشه معتبر باشد."; +$LANG["validation_invalid_form_field_names"] = "فیلد های فرم ممکن است تنها در عدد و الفبایی می شود و خط (aZ ، 0-9 ، _) ، با بدون فاصله."; +$LANG["validation_invalid_num_clients_per_page"] = "لطفا فقط تعداد مشتریان در هر صفحه در هر زمینه صفحه را وارد کنید."; +$LANG["validation_invalid_num_emails_per_page"] = "لطفا فقط رقم برای ایمیل های در یک صفحه را وارد کنید."; +$LANG["validation_invalid_num_form_fields"] = "لطفا فقط وارد کنید اعداد را در تعداد فیلد میدان."; +$LANG["validation_invalid_num_forms_per_page"] = "لطفا فقط عدد را در فرم هر صفحه در هر زمینه صفحه را وارد کنید."; +$LANG["validation_invalid_num_menus_per_page"] = "لطفا فقط رقم برای منوها در هر صفحه را وارد کنید."; +$LANG["validation_invalid_num_modules_per_page"] = "لطفا فقط عدد را در ماژول ها هر صفحه در هر زمینه صفحه را وارد کنید."; +$LANG["validation_invalid_num_option_lists_per_page"] = "لطفا فقط وارد کنید اعداد را در لیست انتخاب NUM صفحه در هر میدان."; +$LANG["validation_invalid_num_submissions_per_page"] = "لطفا یک شماره معتبر از مطلب و مقاله در هر صفحه را وارد کنید."; +$LANG["validation_invalid_sessions_timeout"] = "لطفا یک مهلت جلسه معتبر وارد کنید (فقط عدد صحیح!)."; +$LANG["validation_invalid_tab_assign_values"] = "لطفا فقط عدد را در را وارد کنید 'از' و 'زمینه به'."; +$LANG["validation_invalid_table_prefix"] = "لطفا یک پیشوند پایگاه داده شامل حرف و زیرین به شخصیت تنها."; +$LANG["validation_invalid_upload_folder"] = "نصب و راه اندازی پی اچ پی شما تا به تنظیمات نامعتبر است و برای ارزش upload_tmp_dir. "{\$upload_folder}" پوشه معتبر نیست."; +$LANG["validation_invalid_url"] = "لطفا یک آدرس معتبر وارد کنید."; +$LANG["validation_invalid_username"] = "حساب کاربری شما ممکن است فقط از حروف الفبایی (aZ و 0-9) تشکیل میدهند."; +$LANG["validation_is_form_active"] = "لطفا فرم نشان می دهد که آیا فعال است یا نه."; +$LANG["validation_menu_name_taken"] = "با عرض پوزش ، این نام منو قبلا گرفته شده. لطفا یک نام جدید انتخاب کنید."; +$LANG["validation_modules_search_no_status"] = "لطفا هر دو چک باکس فعال یا غیرفعال را انتخاب کنید."; +$LANG["validation_no_access_type"] = "لطفا نوع دسترسی را وارد کنید."; +$LANG["validation_no_account_logout_url"] = "لطفا آدرس خروج خود را وارد کنید."; +$LANG["validation_no_account_password_confirmed"] = "لطفا دوباره وارد کنید کلمه عبور جدید کنید."; +$LANG["validation_no_account_password_confirmed2"] = "لطفا دوباره وارد کنید کلمه عبور جدید."; +$LANG["validation_no_admin_email"] = "لطفا آدرس ایمیل مدیر را وارد کنید."; +$LANG["validation_no_admin_theme"] = "لطفا تم برای حساب کاربری مدیر سایت را انتخاب کنید."; +$LANG["validation_no_admin_theme_swatch"] = "لطفا برای تم مدیر انتخاب SWATCH."; +$LANG["validation_no_client_email"] = "لطفا آدرس ایمیل مشتری را وارد کنید."; +$LANG["validation_no_client_first_name"] = "لطفا نام اولین مشتری را وارد کنید."; +$LANG["validation_no_client_last_name"] = "لطفا نام خانوادگی مشتری را وارد کنید."; +$LANG["validation_no_client_login_page"] = "لطفا صفحه که مشتری باید به هنگام ورود تایپ کنید هدایت می شود نشان می دهد"; +$LANG["validation_no_client_password"] = "لطفا رمز عبور مشتری را وارد کنید."; +$LANG["validation_no_client_theme_swatch"] = "لطفا SWATCH به طور پیش فرض برای حساب های مشتری را انتخاب کنید."; +$LANG["validation_no_client_username"] = "لطفا نام کاربری مشتری را وارد کنید."; +$LANG["validation_no_column_name"] = "لطفا وارد کنید تمام نامهای ستون ، و یا کلیک بر روی دکمه های هوشمند را پر کنید به صورت خودکار آنها را پر."; +$LANG["validation_no_column_selected"] = "لطفا حداقل یک میدان به عنوان یک ستون را بر روی صفحه ظاهر شوند را انتخاب کنید لیست ارسال."; +$LANG["validation_no_custom_from_email"] = "لطفا وارد سفارشی 'از' آدرس ایمیل."; +$LANG["validation_no_custom_recipient_email"] = "لطفا آدرس ایمیل دریافت کننده سفارشی را وارد کنید."; +$LANG["validation_no_custom_reply_to_email"] = "لطفا پاسخ های سفارشی 'به' آدرس ایمیل."; +$LANG["validation_no_date_format"] = "لطفا یک فرمت تاریخ را وارد کنید."; +$LANG["validation_no_db_column_single"] = "لطفا وارد پایگاه داده نام ستون."; +$LANG["validation_no_db_hostname"] = "لطفا نام میزبان پایگاه داده باشد."; +$LANG["validation_no_db_name"] = "لطفا نام پایگاه داده باشد."; +$LANG["validation_no_db_username"] = "لطفا نام کاربری پایگاه داده را وارد کنید."; +$LANG["validation_no_default_client_theme"] = "لطفا تم پیش فرض برای تمام حساب های مشتری جدید را انتخاب کنید."; +$LANG["validation_no_default_language"] = "لطفا زبان پیش فرض برای نصب خود را در فرم ابزار را انتخاب کنید."; +$LANG["validation_no_default_sessions_timeout"] = "لطفا پیش فرض مهلت جلسه برای حساب های کاربری را وارد کنید."; +$LANG["validation_no_display_text"] = "لطفا متن نمایش را برای هر فیلد را وارد کنید."; +$LANG["validation_no_display_text_single"] = "لطفا ارزش متن نمایش را وارد کنید."; +$LANG["validation_no_edit_submission_page_label"] = "لطفا فرم ویرایش برچسب صفحه را وارد کنید."; +$LANG["validation_no_email"] = "لطفا آدرس ایمیل خود را وارد کنید."; +$LANG["validation_no_email_config_field"] = "لطفا مشخص کنید که فرم فیلد زمینه ایمیل است."; +$LANG["validation_no_email_content"] = "لطفا محتوای ایمیل را برای حداقل یکی از فرمت ها را وارد کنید (متنی یا متن)."; +$LANG["validation_no_email_from_field"] = "لطفا ایمیل 'از طرف' در عرصه بود."; +$LANG["validation_no_email_template_name"] = "لطفا ایمیل الگو نام را وارد کنید."; +$LANG["validation_no_email_template_view_id"] = "لطفا برای مشاهده ایمیل می باشد که این الگو باید ترسیم را انتخاب کنید."; +$LANG["validation_no_email_template_view_mapping_value"] = "لطفا مشخص میکند که چه باید به ایمیل ارسال می شود."; +$LANG["validation_no_enabled_themes"] = "لطفا حداقل یک موضوع فعال باشد تضمین می کند."; +$LANG["validation_no_first_name"] = "لطفا نام خود را وارد کنید."; +$LANG["validation_no_form_field_name"] = "لطفا تمام فرم نام فیلد را وارد کنید."; +$LANG["validation_no_form_field_single"] = "لطفا فرم مقدار فیلد را وارد کنید."; +$LANG["validation_no_form_id"] = "فرم شناسه شد مشخص نشده است. لطفا خارج شوید و دوباره تلاش کنید."; +$LANG["validation_no_form_name"] = "لطفا نام فرم را وارد کنید."; +$LANG["validation_no_form_url"] = "لطفا فرم آدرس را وارد کنید."; +$LANG["validation_no_last_name"] = "لطفا نام خانوادگی خود را وارد کنید."; +$LANG["validation_no_login_page"] = "لطفا صفحه به شما نشان می دهد که می خواهم به شما خبر هر بار ورود تایپ کنید"; +$LANG["validation_no_logout_url"] = "لطفا آدرس خروج را وارد کنید."; +$LANG["validation_no_main_email_recipient"] = "لطفا حداقل یک گیرنده ایمیل اصلی (یعنی نه یک سی سی و یا رنم)."; +$LANG["validation_no_menu"] = "لطفا منو برای این حساب کاربری را انتخاب کنید."; +$LANG["validation_no_menu_id"] = "لطفا یک منو را انتخاب کنید."; +$LANG["validation_no_num_clients_per_page"] = "لطفا شماره حساب مشتری در هر صفحه را وارد کنید."; +$LANG["validation_no_num_emails_per_page"] = "لطفا تعدادی از ایمیل های ارسالی به کاربران در هر صفحه را وارد کنید."; +$LANG["validation_no_num_form_fields"] = "لطفا با وارد کردن شماره از زمینه برای فرم شما."; +$LANG["validation_no_num_forms_per_page"] = "لطفا تعدادی از فرم های در یک صفحه را وارد کنید."; +$LANG["validation_no_num_menus_per_page"] = "لطفا تعدادی از منوها را به لیست در هر صفحه را وارد کنید."; +$LANG["validation_no_num_modules_per_page"] = "لطفا چند ماجول در هر صفحه را وارد کنید."; +$LANG["validation_no_num_option_lists_per_page"] = "لطفا با وارد کردن شماره از فهرست گزینه در هر صفحه."; +$LANG["validation_no_num_submissions_per_page"] = "لطفا تعداد مطلب و مقاله به نمایش در هر صفحه را وارد کنید."; +$LANG["validation_no_option_list_name"] = "لطفا نام را وارد کنید گزینه."; +$LANG["validation_no_page_titles"] = "لطفا عنوان صفحه پیش فرض برای حساب های کاربری را وارد کنید."; +$LANG["validation_no_password"] = "لطفا رمز عبور خود را وارد کنید."; +$LANG["validation_no_program_name"] = "لطفا نام برنامه را وارد کنید."; +$LANG["validation_no_second_password"] = "لطفا مجددا رمز عبور خود را وارد کنید."; +$LANG["validation_no_sessions_timeout"] = "لطفا مهلت جلسه را وارد کنید."; +$LANG["validation_no_smart_fill_values"] = "لطفا فرم نام فیلد را وارد کنید و آدرس به صورت."; +$LANG["validation_no_table_prefix"] = "لطفا یک پیشوند پایگاه داده را وارد کنید."; +$LANG["validation_no_tabs_defined"] = "بدون زبانه ها تعریف شده"; +$LANG["validation_no_test_email_recipient"] = "لطفا آدرس ایمیل از جایی که ما باید تست ارسال ایمیل را وارد کنید."; +$LANG["validation_no_test_email_submission_id"] = "لطفا ارسال شماره شناسنامه."; +$LANG["validation_no_theme"] = "لطفا یک موضوع را انتخاب کنید."; +$LANG["validation_no_theme_swatch"] = "لطفا SWATCH برای موضوع انتخاب شده را انتخاب کنید."; +$LANG["validation_no_timezone_offset"] = "لطفا افست منطقه زمانی را وارد کنید."; +$LANG["validation_no_titles"] = "لطفا عنوان صفحه را وارد کنید."; +$LANG["validation_no_two_column_names"] = "با عرض پوزش ، شما ممکن است همان پایگاه داده نام ستون را وارد کنید نه دو بار."; +$LANG["validation_no_ui_language"] = "لطفا برای زبان رابط را انتخاب کنید."; +$LANG["validation_no_url"] = "لطفا یک آدرس را وارد کنید."; +$LANG["validation_no_username"] = "لطفا نام کاربری خود را وارد کنید."; +$LANG["validation_no_username_or_js"] = "شما باید نام کاربری را وارد کنید. لطفا جاوا اسکریپت را در مرورگر را فعال کنید."; +$LANG["validation_no_view_fields"] = "نظر شما هیچ زمینه نیست! شما نیاز به اختصاص حداقل یک زمینه وجود دارد برای به چیزی به ظاهر در نمایش دهید."; +$LANG["validation_no_view_fields_selected"] = "لطفا یکی را انتخاب کنید و یا زمینه های بیشتر برای اضافه کردن به نمایش."; +$LANG["validation_no_view_name"] = "لطفا نام نمایش را وارد کنید."; +$LANG["validation_num_rows_to_add"] = "لطفا تعدادی از سطرها را به اضافه کنید را وارد کنید."; +$LANG["validation_option_list_name_taken"] = "با عرض پوزش ، این گزینه نام قبلا گرفته شده. لطفا یک نام جدید را انتخاب کنید."; +$LANG["validation_password_in_password_history"] = "برای امنیت بیشتر ، شما می توانید همان رمز عبور هر یک از {\$history_size} کلمه عبور ب> وارد کنید. لطفا رمز عبور متفاوت است."; +$LANG["validation_passwords_different"] = "لطفا مطمئن شوید که کلمه عبور هر دو یکسان کنند."; +$LANG["validation_please_enter_search_date_range"] = "لطفا یک جستجوی محدوده تاریخ را انتخاب کنید."; +$LANG["validation_please_enter_search_keyword"] = "لطفا کلمه کلیدی مورد جستجو را وارد کنید."; +$LANG["validation_select_field_type"] = "لطفا نوع رشته را انتخاب کنید."; +$LANG["validation_select_submissions_to_copy"] = "لطفا مواردی را که می خواهید کپی کنید، انتخاب کنید."; +$LANG["validation_select_submissions_to_delete"] = "لطفا کسانی که می خواهید مطلب و مقاله را حذف کنید انتخاب کنید."; +$LANG["validation_smart_fill_cannot_fill"] = "پوزش می طلبیم ، ما می تواند این زمینه را پر کنید نیست."; +$LANG["validation_smart_fill_invalid_field_type"] = "ما قادر به مکانیابی در یک فیلد ، اما کشویی ، چک باکس و یا گروه های رادیویی است."; +$LANG["validation_smart_fill_no_field_found"] = "پوزش می طلبیم ، ما می تواند در یک فیلد فرم با نام که در صفحه مشخص شده را پیدا کند."; +$LANG["validation_smart_fill_no_page"] = "لطفا صفحه که شامل رشته شما را به هوشمند را پر کنید میخواهید پیدا کنید."; +$LANG["validation_smart_fill_upload_all_pages"] = "لطفا در تمامی صفحات آپلود در داخل فرم شما."; +$LANG["validation_upload_folder_not_writable"] = "این پوشه فایل های موقت مشخص شده توسط شما را نصب پی اچ پی قابل نوشتن نیست. تا هنگامی که ثابت است ، فایل ها می توانید از طریق فرم ابزار (و یا دیگر برنامه های پی اچ پی) آپلود نمی شود. لطفا با ارائه دهنده سرویس میزبانی خود."; +$LANG["validation_upload_html_files_only"] = "لطفا فقط فایلها را اچ."; +$LANG["validation_username_taken"] = "با عرض پوزش ، که نام کاربری قبلا گرفته شده. لطفا یک نام کاربری را وارد کنید."; +$LANG["validation_wrong_password"] = "با عرض پوزش ، که رمز عبور مطابقت ندارد."; +$LANG["word_about"] = "درباره"; +$LANG["word_access"] = "دسترسی"; +$LANG["word_account"] = "حساب کاربری"; +$LANG["word_account_sp"] = "حسابهای کاربری"; +$LANG["word_accounts"] = "حسابهای کاربری"; +$LANG["word_action"] = "انجام بده"; +$LANG["word_active"] = "فعال"; +$LANG["word_add"] = "اضافه کردن"; +$LANG["word_add_rightarrow"] = "اضافه کردن »"; +$LANG["word_add_uc_rightarrow"] = "افزودن »"; +$LANG["word_administration"] = "مدیریت"; +$LANG["word_administrator"] = "مدیر"; +$LANG["word_after"] = "بعد"; +$LANG["word_aquamarine"] = "زمرد کبود"; +$LANG["word_asc"] = "صعودی"; +$LANG["word_author"] = "نویسنده"; +$LANG["word_author_c"] = "نویسنده :"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«بازگشت"; +$LANG["word_bcc_c"] = "رونوشت پنهان :"; +$LANG["word_before"] = "قبل"; +$LANG["word_benefits"] = "امتیازها"; +$LANG["word_blue"] = "آبی"; +$LANG["word_cancel"] = "انصراف"; +$LANG["word_cc_c"] = "رونوشت :"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "انتخاب باکسها"; +$LANG["word_checklist"] = "فهرست"; +$LANG["word_client"] = "کاربر"; +$LANG["word_client_c"] = "کارفرما :"; +$LANG["word_clients"] = "کاربرها"; +$LANG["word_close"] = "ببند"; +$LANG["word_code"] = "کد"; +$LANG["word_column"] = "ستون"; +$LANG["word_columns"] = "ستون"; +$LANG["word_columns_sp"] = "ستون (ها)"; +$LANG["word_complete"] = "کامل"; +$LANG["word_configuration"] = "تنظیمات"; +$LANG["word_content"] = "مطالب و محتوا"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "ادامه »"; +$LANG["word_copy"] = "کپی کنید"; +$LANG["word_custom"] = "ویژه"; +$LANG["word_data"] = "داده ها"; +$LANG["word_date"] = "تاریخ"; +$LANG["word_debugging_c"] = "اشکال زدایی :"; +$LANG["word_delete"] = "حذف"; +$LANG["word_desc"] = "نزولی"; +$LANG["word_direct"] = "مستقیم"; +$LANG["word_disabled"] = "غیرفعال"; +$LANG["word_documentation"] = "مستندات"; +$LANG["word_done"] = "انجام شده"; +$LANG["word_drawbacks"] = "اشکال"; +$LANG["word_dropdown"] = "لیست"; +$LANG["word_edit"] = "اصلاح"; +$LANG["word_editable"] = "قابل ویرایش"; +$LANG["word_email"] = "پست الکترونیک"; +$LANG["word_email_c"] = "پست الکترونیکی :"; +$LANG["word_emails"] = "ایمیل"; +$LANG["word_enabled"] = "کوکی ها"; +$LANG["word_equals"] = "تساوی"; +$LANG["word_error"] = "خطا"; +$LANG["word_error_c"] = "خطا :"; +$LANG["word_examples_c"] = "مثالها :"; +$LANG["word_external"] = "خارجی"; +$LANG["word_fail"] = "شکست"; +$LANG["word_field"] = "فیلد"; +$LANG["word_field_sp"] = "فیلد (ها)"; +$LANG["word_fields"] = "زمینه"; +$LANG["word_fields_sp"] = "فیلد (ها)"; +$LANG["word_file"] = "پرونده"; +$LANG["word_file_b_uc"] = "[فایل]"; +$LANG["word_files"] = "فایلها"; +$LANG["word_filters"] = "فیلترها"; +$LANG["word_filters_sp"] = "فیلتر (ها)"; +$LANG["word_for"] = "برای"; +$LANG["word_form"] = "فره"; +$LANG["word_form_c"] = "فرم:"; +$LANG["word_formatting"] = "قالب بندی"; +$LANG["word_forms"] = "فرمها"; +$LANG["word_found"] = "یافت نشد"; +$LANG["word_from"] = "از"; +$LANG["word_from_c"] = "از :"; +$LANG["word_general"] = "عمومی"; +$LANG["word_green"] = "سبز"; +$LANG["word_grey"] = "خاکستری"; +$LANG["word_height"] = "ارتفاع"; +$LANG["word_help"] = "کمک"; +$LANG["word_hidden"] = "پنهان"; +$LANG["word_highlight"] = "نماد"; +$LANG["word_horizontal"] = "افقی"; +$LANG["word_hour"] = "ساعت"; +$LANG["word_hours"] = "ساعت قبل"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "شناسه"; +$LANG["word_image"] = "تصویر"; +$LANG["word_incomplete"] = "ناقص"; +$LANG["word_install"] = "نصب"; +$LANG["word_installation"] = "نصب"; +$LANG["word_internal"] = "داخلی"; +$LANG["word_language"] = "زبان"; +$LANG["word_large"] = "بزرگ"; +$LANG["word_like"] = "شبیه"; +$LANG["word_login"] = "ورود"; +$LANG["word_logo"] = "نشان"; +$LANG["word_logout"] = "خروج"; +$LANG["word_main"] = "صفحه اصلی"; +$LANG["word_medium"] = "متوسط"; +$LANG["word_menu"] = "منو"; +$LANG["word_menus"] = "منوها"; +$LANG["word_minutes"] = "دقیقه"; +$LANG["word_misc"] = "متفرقه"; +$LANG["word_module"] = "ماژول"; +$LANG["word_modules"] = "ماژول ها"; +$LANG["word_na"] = "ñ /"; +$LANG["word_name"] = "نام"; +$LANG["word_name_c"] = "نام:"; +$LANG["word_never"] = "هرگز"; +$LANG["word_next_rightarrow"] = "بعدی »"; +$LANG["word_next_step_rightarrow"] = "قدم بعدی »"; +$LANG["word_no"] = "بدون"; +$LANG["word_none"] = "هیچ کدام"; +$LANG["word_notes"] = "یادداشت"; +$LANG["word_notification"] = "هشدار از طریق"; +$LANG["word_number"] = "شماره"; +$LANG["word_off"] = "خاموش"; +$LANG["word_offline"] = "غیرفعال"; +$LANG["word_okay"] = "خوب"; +$LANG["word_on"] = "در"; +$LANG["word_online"] = "فعال"; +$LANG["word_operator"] = "اپراتور"; +$LANG["word_options"] = "گزینه ها"; +$LANG["word_orange"] = "نارنجی"; +$LANG["word_order"] = "سفارش"; +$LANG["word_other"] = "سایر"; +$LANG["word_other_c"] = "دیگر :"; +$LANG["word_page"] = "صفحه"; +$LANG["word_page_c"] = "صفحه :"; +$LANG["word_pass"] = "رمز عبور"; +$LANG["word_password"] = "گذر واژه"; +$LANG["word_password_c"] = "گذر واژه:"; +$LANG["word_pending"] = "در انتظار"; +$LANG["word_permissions"] = "دسترسی ها"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«قبلی"; +$LANG["word_private"] = "خصوصی"; +$LANG["word_public"] = "عمومی"; +$LANG["word_purple"] = "رنگ ارغوانی"; +$LANG["word_recipient"] = "گیرنده"; +$LANG["word_recipient_sp"] = "دریافت کننده (ها)"; +$LANG["word_red"] = "قرمز"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "حذف"; +$LANG["word_remove_uc_leftarrow"] = "«حذف"; +$LANG["word_reply_to"] = "پاسخ به"; +$LANG["word_reply_to_c"] = "پاسخ به :"; +$LANG["word_required"] = "ضروری"; +$LANG["word_reset"] = "بازنشانی"; +$LANG["word_resolved"] = "حل و فصل"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "ردیف"; +$LANG["word_search"] = "جستجو"; +$LANG["word_searchable"] = "جستجو"; +$LANG["word_select"] = "انتخاب"; +$LANG["word_setting"] = "تنظیمات"; +$LANG["word_settings"] = "تنظیمات"; +$LANG["word_show"] = "نمایش"; +$LANG["word_size"] = "اندازه"; +$LANG["word_skipped"] = "توقف عملیات"; +$LANG["word_small"] = "کوچک"; +$LANG["word_solution"] = "راه حل"; +$LANG["word_sortable"] = "جورکردنی"; +$LANG["word_start"] = "شروع"; +$LANG["word_status"] = "وضعیت"; +$LANG["word_string"] = "رشته"; +$LANG["word_subject"] = "عنوان"; +$LANG["word_subject_c"] = "موضوع"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "درخواست"; +$LANG["word_submissions"] = "درخواستها"; +$LANG["word_system"] = "سیستم"; +$LANG["word_tab"] = "زبانهها"; +$LANG["word_tabs"] = "زبانهها"; +$LANG["word_tabs_sp"] = "سون ()"; +$LANG["word_test"] = "تست"; +$LANG["word_text"] = "متن"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "کادر"; +$LANG["word_theme"] = "تم ها"; +$LANG["word_themes"] = "تم ها"; +$LANG["word_time"] = "زمان"; +$LANG["word_tiny"] = "کوچک"; +$LANG["word_tips"] = "راهنمایی"; +$LANG["word_today"] = "امروز"; +$LANG["word_truncate_q"] = "کوتاه؟"; +$LANG["word_uninstall"] = "عزل"; +$LANG["word_unknown"] = "ناشناخته"; +$LANG["word_update"] = "بروزرسانی"; +$LANG["word_upgrade"] = "ارتقا"; +$LANG["word_url_c"] = "آدرس :"; +$LANG["word_user"] = "کاربر"; +$LANG["word_username"] = "نام کاربری"; +$LANG["word_username_c"] = "نام کاربری:"; +$LANG["word_validation"] = "اعتبار"; +$LANG["word_value"] = "ارزش"; +$LANG["word_value_sp"] = "مقدار ( مقادیر )"; +$LANG["word_verified"] = "تایید شده"; +$LANG["word_verify"] = "نگارش دوباره"; +$LANG["word_version"] = "نسخه"; +$LANG["word_vertical"] = "عمودی"; +$LANG["word_view"] = "نمایش دادن"; +$LANG["word_views"] = "مشاهدات"; +$LANG["word_warning"] = "اخطار!"; +$LANG["word_warning_c"] = "اخطار :"; +$LANG["word_web"] = "وب سایت"; +$LANG["word_welcome"] = "خوش آمدید!"; +$LANG["word_width_c"] = "عرض :"; +$LANG["word_words"] = "واژه ها"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "زرد"; +$LANG["word_yes"] = "بله"; \ No newline at end of file diff --git a/global/lang/fi.php b/global/lang/fi.php new file mode 100644 index 00000000..e47a8d66 --- /dev/null +++ b/global/lang/fi.php @@ -0,0 +1,1219 @@ +Varoitus! Olet valinnut {\$num_selected_on_page} väitteet tältä sivulta {\$num_selected_on_other_pages} muille sivuille. Valitse yksi seuraavista vaihtoehdoista:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Varoitus! Et ole valinnut mitään huomautuksia tällä sivulla, mutta olet valinnut {\$num_selected_on_other_pages} muille sivuille. Vahvista, että haluat poistaa nämä väitteet.
    "; +$LANG["confirm_delete_view"] = "Oletko varma että haluat poistaa tämän näkemyksen?"; +$LANG["confirm_refresh_page"] = "Oletko varma että haluat päivittää sivun? Tämä menettää muutoksia olet tehnyt."; +$LANG["confirm_save_change_before_redirect"] = "Yksi tai useampi kenttä on päivitetty. Haluatko tallentaa muutokset ennen uudelleenohjausta?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Oletko varma, että haluat Smart Kirjoita tietokannan sarake nimet? Tämä korvaa olemassa olevia arvoja."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Tämä vaihtoehto automaattista tuottaa tietokannan sarakkeen nimet perustuvat näyttötekstien kentät, joten tietokannan sisällön taulukossa on helpompi lukea."; +$LANG["confirm_smart_fill_display_names"] = "Oletko varma, että haluat Smart Täytä Näytön nimet? Tämä korvaa olemassa olevia arvoja."; +$LANG["confirm_ungroup_option_list"] = "Oletko varma että haluat purkaa tämän vaihtoehdon luettelosta? Kaikki vaihtoehdot ovat niputetaan yhdeksi, ungrouped luettelo."; +$LANG["confirm_uninstall_module"] = "Oletko varma että haluat poistaa tämän moduulin? Kaikki moduulin tiedot häviävät."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Pe"; +$LANG["date_Friday"] = "Perjantai"; +$LANG["date_Mon"] = "Ma"; +$LANG["date_Monday"] = "Maanantai"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "La"; +$LANG["date_Saturday"] = "Lauantai"; +$LANG["date_Sun"] = "Su"; +$LANG["date_Sunday"] = "Sunnuntai"; +$LANG["date_Thu"] = "To"; +$LANG["date_Thursday"] = "Torstai"; +$LANG["date_Tue"] = "Ti"; +$LANG["date_Tuesday"] = "Tiistai"; +$LANG["date_Wed"] = "Ke"; +$LANG["date_Wednesday"] = "Keskiviikko"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Huhtikuu"; +$LANG["date_month_August"] = "Elokuu"; +$LANG["date_month_December"] = "Lokakuu"; +$LANG["date_month_February"] = "Helmikuu"; +$LANG["date_month_January"] = "Tammikuu"; +$LANG["date_month_July"] = "Heinäkuu"; +$LANG["date_month_June"] = "Kesäkuu"; +$LANG["date_month_March"] = "Maaliskuu"; +$LANG["date_month_May"] = "Toukokuu"; +$LANG["date_month_November"] = "Marraskuu"; +$LANG["date_month_October"] = "Lokakuu"; +$LANG["date_month_September"] = "Syyskuu"; +$LANG["date_month_short_Apr"] = "Huhtikuu"; +$LANG["date_month_short_Aug"] = "Elokuu"; +$LANG["date_month_short_Dec"] = "Joulukuu"; +$LANG["date_month_short_Feb"] = "Helmikuu"; +$LANG["date_month_short_Jan"] = "Tam"; +$LANG["date_month_short_Jul"] = "Heinäkuu"; +$LANG["date_month_short_Jun"] = "Kesäkuu"; +$LANG["date_month_short_Mar"] = "Maalis"; +$LANG["date_month_short_May"] = "Toukokuu"; +$LANG["date_month_short_Nov"] = "Marraskuu"; +$LANG["date_month_short_Oct"] = "Lokakuu"; +$LANG["date_month_short_Sep"] = "Syyskuu"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Käyttäjätili on poistettu."; +$LANG["notify_account_updated"] = "Tilisi on päivitetty onnistuneesti."; +$LANG["notify_add_display_values"] = "Lisää Näyttö Arvot"; +$LANG["notify_admin_menu_updated"] = "Hallinto-valikko on päivitetty."; +$LANG["notify_admin_theme_overridden"] = "Järjestelmänvalvojan teema on käsin tehtäviä."; +$LANG["notify_allow_url_fopen_not_set"] = "Anteeksi, tätä testiä ei voi käyttää Web-palvelimella. Se edellyttää allow_url_fopen on asetettu 1 in your php.ini arkistoida. Tämä asetus mahdollistaa PHP tiedostoja kautta URL, joka on tarpeen suorittaa tämän testin. Voit testata sen manuaalisesti lataamalla tiedoston tähän kansioon FTP, sitten yrittää saada sen URL-osoite on toimitettu."; +$LANG["notify_change_temp_password"] = "Olet juuri kirjautunut sisään väliaikainen salasana. Sinun tulisi vaihtaa salasanasi nyt!"; +$LANG["notify_click_to_edit_new_submission"] = "Napsauta tätä, jos haluat muokata uutta lähetystä."; +$LANG["notify_client_account_menus_updated"] = "Asiakastili (t) on päivitetty {\$menu_name} valikosta. Voit nyt poistaa valikosta, joka oli aiemmin mukana tili (s)."; +$LANG["notify_client_account_not_updated"] = "Asiakkaan tili ei voi päivittää."; +$LANG["notify_client_account_themes_updated"] = "Asiakastili (t) on päivitetty {\$theme} teema. Voit nyt poistaa teema aiemmin liittyvät tili (s)."; +$LANG["notify_client_account_updated"] = "Asiakkaan tili on päivitetty."; +$LANG["notify_client_menu_deleted"] = "Asiakas valikko on poistettu."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Valikko on poistettu, mutta seuraavat asiakastileihin nyt ei enää ole valikossa! Sinun täytyy päivittää seuraavat tilit:"; +$LANG["notify_client_menu_updated"] = "Asiakas-valikko on päivitetty."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Anteeksi, valikon juuri yrittänyt poistaa jo käyttävät asiakkaat alla. Jotta voidaan poistaa valikosta sinun täytyy ensin siirtää asiakkaiden muihin valikoihin. Klikkaa asiakkaan nimi muokata, että henkilökohtaisen tilin tai siirtää kaikki tilit eri valikossa avattavaa alla."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Anteeksi, yksi aiheista juuri vammaiset ovat jo käytössä seuraavat asiakastileihin. Jotta voidaan poistaa teema sinun täytyy ensin määrittää kullekin asiakkaalle toisen teeman. Klikkaa asiakkaan nimi muokata, että henkilökohtaisen tilin tai siirtää kaikki tilit teeman avulla avattavaa alla."; +$LANG["notify_edit_email_fields_link"] = "Klikkaa tästä yksilöidä, mitkä lomakkeen kentät ovat sähköposti kenttiä, joten voit kohdistaa ne sähköpostiisi malleja."; +$LANG["notify_edit_field_new_field"] = "Tämä on uusi kenttä. Sinun tulee päivittää etusivulle ennen kuin ne voivat täydellisesti muuttaa kentän."; +$LANG["notify_edit_option_list_after_save"] = "Sinun tulee valita vaihtoehto luettelosta ja valitse Tallenna muutokset ennen kuin hän voi muokata sitä."; +$LANG["notify_email_field_config_deleted"] = "Sähköpostin kokoonpano on poistettu."; +$LANG["notify_email_fields_not_updated"] = "Olemme pahoillamme, emme voineet päivittää sähköpostia kentät."; +$LANG["notify_email_fields_updated"] = "Email kentät on päivitetty."; +$LANG["notify_email_not_sent"] = "Anteeksi, Sähköpostia ei voitu lähettää. Ota yhteyttä sivuston ylläpitäjään alla olevaan osoitteeseen."; +$LANG["notify_email_not_sent_c"] = "Anteeksi, sähköposti ei voi lähettää:"; +$LANG["notify_email_sent"] = "Sähköposti (t) on lähetetty."; +$LANG["notify_email_template_deleted"] = "Sähköpostimalli on poistettu."; +$LANG["notify_email_template_updated"] = "Sähköpostimalli on päivitetty."; +$LANG["notify_enabled_module_list_updated"] = "Luettelo ansiosta moduuleja on päivitetty."; +$LANG["notify_error_saving_fields"] = "Oli virhe säästää kentät."; +$LANG["notify_field_changes_saved"] = "Muutoksia kenttä (s) on tallennettu."; +$LANG["notify_field_options_smart_filled"] = "Oman alan vaihtoehdot on Smart täytetty."; +$LANG["notify_field_selected"] = "Kenttä on valittu. Napsauttamalla palata tärkeimmät kenttää."; +$LANG["notify_field_updated"] = "Tämä kenttä on päivitetty."; +$LANG["notify_file_not_uploaded"] = "Tiedostoa ei voitu ladata."; +$LANG["notify_file_uploaded"] = "Tiedosto on ladattu."; +$LANG["notify_filters_not_updated"] = "Oli virhe päivittää tämän asiakkaan mukaan suodattimet."; +$LANG["notify_filters_updated"] = "Toimittamisesta suodattimet on päivitetty tälle asiakkaalle."; +$LANG["notify_folder_correct_permissions"] = "Tämä kansio on oikeat käyttöoikeudet."; +$LANG["notify_folder_url_match"] = "Kansio ja URL-osoite näyttää oikein täsmää."; +$LANG["notify_folder_url_no_access"] = "Tätä testiä ei voitu suorittaa, koska PHP ei voinut käyttää URL-osoitteen. Tämä aiheutuu yleensä URL-osoite on salasanalla suojattu. Htaccess-tiedostoa."; +$LANG["notify_folder_url_no_match"] = "Tämä kansio-URL-yhdistelmä ei näytä olevan ottelun."; +$LANG["notify_folder_url_unknown_error"] = "Tuntematon virhe. Voit testata sen manuaalisesti lataamalla tiedoston tähän kansioon FTP, sitten yrittää saada sen URL-osoite on toimitettu."; +$LANG["notify_form_access_type_email_info"] = "Tämä lomake on ylläpitäjän tyyppi, joten ei asiakkaamme saavat sitä ja ei ole lueteltu avattavasta alla."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sorry, lomake, että ID ei ole olemassa."; +$LANG["notify_form_field_not_added"] = "Lomakkeen kentän '{\$fieldname}' ei voitu lisätä."; +$LANG["notify_form_field_options_updated"] = "Lomakkeen kentän vaihtoehtoja on päivitetty."; +$LANG["notify_form_field_removed"] = "Lomakkeen kenttä poistettiin onnistuneesti."; +$LANG["notify_form_fields_removed"] = "Lomakekentät onnistuneesti poistettu."; +$LANG["notify_form_not_updated_notify_admin"] = "Lomake ei voitu päivittää. Ota yhteyttä sivuston ylläpitäjään raportoi ongelmasta."; +$LANG["notify_form_settings_updated"] = "Lomake on päivitetty onnistuneesti."; +$LANG["notify_form_submission_updated"] = "Lomakkeen lähettäminen on päivitetty."; +$LANG["notify_form_tabs_updated"] = "Välilehdet on päivitetty."; +$LANG["notify_form_updated"] = "Lomake on päivitetty onnistuneesti."; +$LANG["notify_form_views_updated"] = "Muodostamaan käsitys on päivitetty."; +$LANG["notify_install_invalid_db_info"] = "Valitettavasti emme voineet muodostaa yhteyden tietokantaan käyttäen tietoja annoit. Virheilmoitus tietokanta palautettujen: (\$ db_connection_error)"; +$LANG["notify_internal_form_created"] = "Lomake on luotu! Voit määrittää lomakkeen kautta näihin välilehtiin."; +$LANG["notify_invalid_account_information_in_sessions"] = "Tilin tiedot tallennetaan istunnoissa ei kelpaa. Kirjaudu uudelleen alla."; +$LANG["notify_invalid_license_key"] = "Anteeksi, että ei näytä olevan voimassa lisenssiavain. Yritä kirjoittamalla se uudelleen."; +$LANG["notify_invalid_permissions"] = "Sinulla ei ole oikeuksia käyttää tätä sivua. Olet kirjautunut ulos."; +$LANG["notify_invalid_search_dates"] = "Käytä datepicker syöttää kelvollinen päivämäärä tai päivämäärät."; +$LANG["notify_invalid_upload_folder"] = "Lataa kansio on joko virheellinen tai ei ole kirjoitettavissa."; +$LANG["notify_lang_list_updated"] = "Käytettävissä käyttöliittymän kieli luettelo on päivitetty."; +$LANG["notify_login_info_emailed"] = "Kirjautumistietojasi on sähköpostiisi."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oho, tämä moduuli on jo asennettu!"; +$LANG["notify_module_installed"] = "Moduuli on asennettu. Napsauttamalla Valitse moduuli."; +$LANG["notify_module_list_updated"] = "Moduuli luettelo on päivitetty."; +$LANG["notify_module_uninstalled"] = "Moduuli on poistettu."; +$LANG["notify_module_updated"] = "{\$module} moduuli on päivitetty {\$version}. Klikkaa tästä valita moduulin ."; +$LANG["notify_multi_field_selected"] = "Kenttä on valittu. Klikkaa tästä jos haluat nähdä ja muokata alan vaihtoehtoja."; +$LANG["notify_multi_field_updated"] = "Tämä kenttä on päivitetty. Sinulla on mahdollisuus määrittää alan määrittämisen jälkeen lomakkeen."; +$LANG["notify_multiple_fields_found"] = "Useiden tekijöiden todettiin tämän kentän nimi ({\$field_name}). Tämä voi ilmetä, jos sivulla on useampi kuin yksi tai jos vahingossa nimetty joku muodostaa sama kuin toinen. Ole hyvä ja valitse haluamasi alla olevasta listasta."; +$LANG["notify_new_default_view_created"] = "Uusi, Oletusnäkymä sisältää kaikki lomakkeen kentät on luotu."; +$LANG["notify_new_submission_created"] = "Jättämiselle on luotu. Voit muokata sen alle."; +$LANG["notify_no_account_id_in_sessions"] = "O käyttäjätili ID löytyi istuntoihin. Kirjaudu uudelleen alla."; +$LANG["notify_no_api_installed"] = "Sinulla ei ole API asennettu"; +$LANG["notify_no_client_permissions"] = "Ei ole asetuksia käytettävissä muokata."; +$LANG["notify_no_email_template_selected"] = "Valitse sähköpostimalli."; +$LANG["notify_no_emails_defined"] = "Tälle lomakkeelle ei ole määritelty sähköpostimalleja. Lisää uusi malli alla olevalla painikkeella."; +$LANG["notify_no_field_settings"] = "Tämä kenttä tyyppi ei sisällä mitään lisäasetuksia."; +$LANG["notify_no_fields_in_tab"] = "Tämä välilehti ei sisällä yhtään kenttää."; +$LANG["notify_no_option_lists"] = "Ei ole olemassa vaihtoehtoa määrittelemät luettelot. Klikkaa alla olevaa painiketta luo uusi."; +$LANG["notify_no_test_submission"] = "Form Tools ei ole vielä saanut onnistunutta testilähetystä."; +$LANG["notify_no_user_email_fields_configured"] = "Huomaa: Jos haluat lähettää sähköpostia johonkin sähköpostiosoitteeseen, joka on mukana muodossa, sinun on ensin määritettävä muodossa sähköpostin kentät."; +$LANG["notify_no_views"] = "Lomake ei ole mitään mielipidettä perustettu! Tarvitset vähintään yksi näkymä, jotta hallita lomaketietoja."; +$LANG["notify_no_views_assigned_to_client_form"] = "Näyttää siltä, että käyttäjätiliäsi ei ole yhdistetty mihinkään näkymään, joten et näe mitään tietoja. Ota yhteyttä järjestelmänvalvojaan saadaksesi apua."; +$LANG["notify_no_views_defined"] = "Sinulla ei ole mitään mielipidettä määritelty. Et voi katsella tätä lomaketta väittää, ellei vähintään yksi näkymä on luotu. Klikkaa alla olevaa painiketta luoda oletusnäkymään."; +$LANG["notify_option_list_deleted"] = "Vaihtoehto luettelosta on poistettu."; +$LANG["notify_option_list_updated"] = "Vaihtoehto luettelo on päivitetty."; +$LANG["notify_public_form_omit_list_updated"] = "Lomakkeen käyttäjäestolista on päivitetty."; +$LANG["notify_public_view_omit_list_updated"] = "Näkymän käyttäjäestolista on päivitetty."; +$LANG["notify_required_admin_pages"] = "Seuraavat sivut ovat tarpeen ylläpitäjä valikossa: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Istuntosi lopetettiin, koska se oli toimettomana liian pitkään. Ole hyvä ja kirjaudu uudelleen."; +$LANG["notify_setup_options_updated"] = "Asetusvaihtoehtoja on päivitetty."; +$LANG["notify_smart_fill_field_not_found"] = "Emme pystyneet löytämään kentän tämän nimen ({\$field_name}) muodossa (t) määritelty. Voit joko manuaalisesti kenttätyypin alla, tai napsauta Siirry-painiketta muokata tätä alaa myöhemmin."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Tiedosto (t) on ladattu. Kokeile klikkaamalla Smart Täytä painiketta yritä uudelleen. Jos tämä vaihe ei, sinun täytyy ohittaa tämän vaiheen ja määrittää lomakekentät manally myöhemmin."; +$LANG["notify_smart_fill_submitted"] = "Lomake on toimitettu. Riippuen koosta lomakkeen ja useita alan vaihtoehtoja, tämä voi kestää jonkin aikaa."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Anteeksi, yhden tai useamman tiedoston kirjoittamasi ei voitu ladata. Sinun täytyy hypätä tämän ja määrittää kentät manuaalisesti."; +$LANG["notify_submission_and_files_deleted"] = "Jättämisen ja jokin tiedosto (t) liittyy se poistettiin onnistuneesti."; +$LANG["notify_submission_copied"] = "Hakemus on kopioitu."; +$LANG["notify_submission_copied_edit"] = "Hakemus on kopioitu. Voit muokata sitä alla."; +$LANG["notify_submission_deleted"] = "Näkökanta deleted successfully."; +$LANG["notify_submission_deleted_with_problems"] = "Mukaan poistettu, mutta seuraavat ongelmat havaittiin, kun yrität poistaa seuraavan tiedoston (t):"; +$LANG["notify_submission_id_not_found"] = "Esittämisen tunnus ei löytynyt."; +$LANG["notify_submission_not_updated"] = "Jättämistä ei voi päivittää."; +$LANG["notify_submissions_and_files_deleted"] = "Huomautukset ja mahdolliset tiedosto (t) niihin liittyvät poistettiin onnistuneesti."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} asiakirjaa on kopioitu."; +$LANG["notify_submissions_deleted"] = "Huomautuksensa poistettiin onnistuneesti."; +$LANG["notify_submissions_deleted_with_problems"] = "Huomautukset on poistettu, mutta seuraavat ongelmat havaittiin, kun yrität poistaa seuraavan tiedoston (t):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Testisivu Sähköpostia ei voitu lähettää."; +$LANG["notify_theme_cache_folder_not_writable"] = "Tämä teema välimuisti kansio ei ole kirjoitettavissa. Jotta tätä aihetta, {\$folder} on oltava täydellinen luku-ja kirjoitusoikeudet."; +$LANG["notify_theme_list_updated"] = "Teema luettelo on päivitetty."; +$LANG["notify_themes_settings_updated"] = "Teemaa asetukset on päivitetty."; +$LANG["notify_view_deleted"] = "View on poistettu."; +$LANG["notify_view_group_deleted"] = "Näytä ryhmä on poistettu."; +$LANG["notify_view_missing_columns"] = "Oho! Anteeksi, tämä näkemys ei ole täysin vielä määritelty."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klikkaa tästä määrittää, mitkä kentät pitäisi näkyä sarakkeissa tällä sivulla."; +$LANG["notify_view_updated"] = "View on päivitetty."; +$LANG["notify_your_email_sent"] = "Sähköpostiosoitteesi on onnistuneesti lähetetty."; +$LANG["phrase_100_per_page"] = "100 per sivu"; +$LANG["phrase_10_per_page"] = "10 per sivu"; +$LANG["phrase_15_per_page"] = "15 per sivu"; +$LANG["phrase_1_direct"] = "1. Suora"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per sivu"; +$LANG["phrase_25_per_page"] = "25 per sivu"; +$LANG["phrase_2_code"] = "2. Koodi"; +$LANG["phrase_2_columns"] = "2 palstaa"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 palstaa"; +$LANG["phrase_4_columns"] = "4 palstaa"; +$LANG["phrase_50_per_page"] = "50 per sivu"; +$LANG["phrase_accepting_submissions"] = "(hyväksyy lähetykset)"; +$LANG["phrase_access_admin_account_c"] = "Pääset järjestelmänvalvojan tilillesi tästä:"; +$LANG["phrase_access_type"] = "Tilin tyyppi"; +$LANG["phrase_account_info"] = "Tilin tiedot"; +$LANG["phrase_account_settings"] = "Tilin asetukset"; +$LANG["phrase_action_needed"] = "Tarvittava toimenpide"; +$LANG["phrase_add_client"] = "Lisää asiakas"; +$LANG["phrase_add_client_menu"] = "Lisää asiakkaan valikko"; +$LANG["phrase_add_default_settings_rightarrow"] = "Lisää oletusasetukset »"; +$LANG["phrase_add_field"] = "Lisää kenttä"; +$LANG["phrase_add_fields"] = "Lisää kenttiä"; +$LANG["phrase_add_fields_rightarrow"] = "Lisää kenttä (s) »"; +$LANG["phrase_add_form"] = "Lisää lomake"; +$LANG["phrase_add_form_external"] = "Lisää muoto - Ulkoinen"; +$LANG["phrase_add_form_internal"] = "Lisää muoto - sisäinen"; +$LANG["phrase_add_new_group_rightarrow"] = "Lisää uusi ryhmä »"; +$LANG["phrase_add_num_rows"] = "Lisää {\$number} rivi(ä)"; +$LANG["phrase_add_row"] = "Lisää rivi »"; +$LANG["phrase_add_submission_button"] = "Lisää Submission Button"; +$LANG["phrase_add_view_rightarrow"] = "Lisää Katso »"; +$LANG["phrase_adding_multi_page_form"] = "Lisää monisivuinen lomake rajapinnan määritysten avulla"; +$LANG["phrase_adding_single_page_form"] = "LIsää yksisivuinen lomake rajapinnan määritysten avulla"; +$LANG["phrase_admin_menu"] = "Järjestelmänvalvojan valikko"; +$LANG["phrase_admin_only"] = "Vain järjestelmänvalvojille"; +$LANG["phrase_admin_panel"] = "Hallintapaneeli"; +$LANG["phrase_administrator_theme"] = "Järjestelmänvalvojan teema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Edistyneet asetukset »"; +$LANG["phrase_all_X_results_selected"] = "Kaikki {\$numresults} Tulokset Valitut"; +$LANG["phrase_all_clients"] = "Kaikki asiakkaat"; +$LANG["phrase_all_clients_except_c"] = "Kaikki asiakkaat, paitsi:"; +$LANG["phrase_all_clients_have_access"] = "(kaikki asiakkaat pääsevät)"; +$LANG["phrase_all_fields"] = "Kaikki kentät"; +$LANG["phrase_all_fields_displayed"] = "Kaikki kentät näytetään"; +$LANG["phrase_all_statuses"] = "Kaikki tilat"; +$LANG["phrase_all_submissions"] = "Kaikki näkökannat"; +$LANG["phrase_allow_fields_edited"] = "Salli kentät voidaan muokata"; +$LANG["phrase_alphanumeric"] = "Aakkosnumeerinen (az, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Käytä Aikavyöhyke Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Siirtää kaikki luetellut asiakastileihin {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Siirtää kaikki luetellut asiakastileihin {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Lopussa"; +$LANG["phrase_at_start"] = "Alussa"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-poistaa tilin jälkeen epäonnistui kirjautumisyrityksiä"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Saatavilla Asiakkaat"; +$LANG["phrase_available_fields"] = "Käytettävissä olevat kentät"; +$LANG["phrase_available_option_lists"] = "Käytettävissä oleva vaihtoehto Luettelot"; +$LANG["phrase_available_swatches"] = "Käytettävissä Väriluettelot"; +$LANG["phrase_available_swatches_c"] = "Käytettävissä Väriluettelot:"; +$LANG["phrase_available_tabs"] = "Käytettävissä Tabs"; +$LANG["phrase_available_views"] = "Saatavilla Näkymät"; +$LANG["phrase_awaiting_form_submission"] = "Odotetaan lomakkeen jättämisestä."; +$LANG["phrase_back_to_field_list"] = "«takaisin kenttää"; +$LANG["phrase_back_to_search_results"] = "Takaisin hakutuloksiin"; +$LANG["phrase_base_view_on"] = "Base Katso ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Muuta Kirjautumistiedot"; +$LANG["phrase_characters_limit_p"] = "merkin rajoitus."; +$LANG["phrase_check_db_settings_try_again"] = "Ole hyvä ja tarkista tietokannan asetukset ja napsauta Jatka-painiketta uudelleen."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Tarkista URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Siivoamaan"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Vapaa poissulje List"; +$LANG["phrase_client_account_settings"] = "Client Account Settings"; +$LANG["phrase_client_field"] = "Client kentän"; +$LANG["phrase_client_map_filters"] = "Client Kartta Suodattimet »"; +$LANG["phrase_client_may_edit"] = "Asiakas voi muokata"; +$LANG["phrase_client_menu"] = "Client Valikko"; +$LANG["phrase_clients_can_access_form"] = "Asiakkaat, jotka voivat käyttää muotoa"; +$LANG["phrase_clients_can_access_view"] = "Asiakkaat, jotka voivat käyttää View"; +$LANG["phrase_clients_cannot_access_form"] = "Asiakkaat, jotka eivät voi käyttää muotoa"; +$LANG["phrase_clients_cannot_access_view"] = "Asiakkaat, jotka eivät voi käyttää View"; +$LANG["phrase_clients_may_edit"] = "Asiakkaat voivat muokata"; +$LANG["phrase_code_c"] = "Virhekoodi:"; +$LANG["phrase_code_markup_field"] = "Koodi / Markup Field"; +$LANG["phrase_code_markup_type"] = "Koodi / Markup tyyppi"; +$LANG["phrase_codes_c"] = "Virhekoodit:"; +$LANG["phrase_column_width"] = "Sarakeleveys"; +$LANG["phrase_company_name"] = "Yrityksen nimi"; +$LANG["phrase_configure_form_email_fields"] = "Määritä muoto Email kentät"; +$LANG["phrase_confirm_folder_url_match"] = "Vahvista kansion-URL Match"; +$LANG["phrase_connect_rows"] = "Liitä rivit"; +$LANG["phrase_copy_email_settings_from"] = "Kopioi Sähköposti Asetukset ..."; +$LANG["phrase_copy_settings_from"] = "Kopioi Asetukset ..."; +$LANG["phrase_core_fields"] = "Core kentät"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Tilinavaus"; +$LANG["phrase_create_admin_account"] = "Luo admin-tili"; +$LANG["phrase_create_config_file"] = "Luomaan määritystiedosto"; +$LANG["phrase_create_database_tables"] = "Luo tietokanta Taulukot"; +$LANG["phrase_create_default_view"] = "Luo Default View"; +$LANG["phrase_create_file"] = "Luo tiedosto"; +$LANG["phrase_create_group"] = "Luo ryhmä"; +$LANG["phrase_create_new_email"] = "Luo uusi sähköposti"; +$LANG["phrase_create_new_menu"] = "Luo uusi valikko"; +$LANG["phrase_create_new_option_list"] = "Luo uusi Asetusluettelo"; +$LANG["phrase_create_new_option_list_group"] = "Luo uusi vaihtoehto lista ryhmään"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Luo uusi Asetusluettelo »"; +$LANG["phrase_create_new_view"] = "Luo uusi View"; +$LANG["phrase_create_new_view_group"] = "Luo uusi tarkastella ryhmän"; +$LANG["phrase_custom_display_format"] = "Custom Näyttömuoto"; +$LANG["phrase_custom_recipient"] = "Custom Vastaanottaja"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Tietotyyppi"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Tietokannan nimi"; +$LANG["phrase_database_password"] = "Tietokannan salasana"; +$LANG["phrase_database_settings"] = "Tietokanta-asetukset"; +$LANG["phrase_database_setup"] = "Tietokanta asetukset"; +$LANG["phrase_database_table_prefix"] = "Tietokannan taulujen etuliite"; +$LANG["phrase_database_username"] = "Tietokannan käyttäjätunnus"; +$LANG["phrase_date_format"] = "Date Format"; +$LANG["phrase_db_column"] = "TE sarakkeen"; +$LANG["phrase_db_setup_page_4"] = "4. Tietokanta asetukset"; +$LANG["phrase_default_client_account_theme"] = "Oletus asiakastili Theme"; +$LANG["phrase_default_date_field_search_value"] = "Oletus päivämääräkenttä haku arvo"; +$LANG["phrase_default_language"] = "Oletuskieltä"; +$LANG["phrase_default_menu"] = "Oletus Valikko"; +$LANG["phrase_default_sessions_timeout"] = "Oletus Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Järjestys Tilaa"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Oletusteema"; +$LANG["phrase_default_value"] = "Oletusarvo"; +$LANG["phrase_default_values"] = "Oletusarvot"; +$LANG["phrase_default_values_new_submissions"] = "Oletusarvot uusia näkökantoja"; +$LANG["phrase_delete_field"] = "Poista kenttä"; +$LANG["phrase_delete_form"] = "Poista muoto"; +$LANG["phrase_delete_row"] = "Poista rivi"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Poista liittyviä tiedostoja poistaessasi mukaan"; +$LANG["phrase_delete_view"] = "Poista näkymä"; +$LANG["phrase_disconnect_rows"] = "Katkaise rivit"; +$LANG["phrase_display_email"] = "Näytä Sähköposti"; +$LANG["phrase_display_name"] = "Näyttönimi"; +$LANG["phrase_display_text"] = "Näyttötekstien"; +$LANG["phrase_display_value"] = "Näytä Vastinetta"; +$LANG["phrase_edit_admin_menu"] = "Muokkaus ylläpitovalikko"; +$LANG["phrase_edit_client"] = "Muokkaa Client"; +$LANG["phrase_edit_client_menu"] = "Muokkaa Client Valikko"; +$LANG["phrase_edit_email_template"] = "Muokkaa sähköpostimalli"; +$LANG["phrase_edit_field"] = "Muokkauskenttään"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Muokkaa lomakkeen"; +$LANG["phrase_edit_form_access_type_b"] = "[Muokkaa lomake pääsyn tyyppi]"; +$LANG["phrase_edit_option_list"] = "Muokkaa Asetusluettelo"; +$LANG["phrase_edit_submission"] = "Muokkaa Submission"; +$LANG["phrase_edit_submission_label"] = "Muokkaa Submission Label"; +$LANG["phrase_edit_view"] = "Edit Tarkastele"; +$LANG["phrase_email_format"] = "Email Formaatti"; +$LANG["phrase_email_settings"] = "Sähköpostiasetukset"; +$LANG["phrase_email_template"] = "Sähköpostimalli"; +$LANG["phrase_email_template_name"] = "Sähköpostimalli nimi"; +$LANG["phrase_error_learn_more"] = "Lisätietoja tästä virheestä."; +$LANG["phrase_error_text_intro"] = "Korjaa seuraavan virheen (t) ja lähetä se uudelleen:"; +$LANG["phrase_errors_learn_more"] = "Klikkaa virhekoodit oppia lisää."; +$LANG["phrase_event_trigger"] = "Tapahtuma Trigger"; +$LANG["phrase_external_form"] = "Ulkoinen muoto"; +$LANG["phrase_external_form_info"] = "Ulkoinen muoto Info"; +$LANG["phrase_external_your_own_form"] = "Ulkoinen (oma lomake)"; +$LANG["phrase_field_comments"] = "Kenttä Comments"; +$LANG["phrase_field_label"] = "Kenttä Label"; +$LANG["phrase_field_options"] = "Field Options"; +$LANG["phrase_field_size"] = "Kentän koko"; +$LANG["phrase_field_skipped"] = "Kenttä ohitettu"; +$LANG["phrase_field_specific_settings"] = "Kenttä-asetukset"; +$LANG["phrase_field_type"] = "Kenttätyypissä"; +$LANG["phrase_field_type_no_validation"] = "Ei ole validointisäännöt saatavilla tällä kenttään."; +$LANG["phrase_field_types"] = "Kenttätyypit"; +$LANG["phrase_field_value"] = "Kentän arvo"; +$LANG["phrase_field_values_to_display_values"] = "Kentän Arvot »Näytä Arvot"; +$LANG["phrase_final_touches_page_6"] = "6. Viimeisteli"; +$LANG["phrase_finalize_form"] = "Finalize muoto"; +$LANG["phrase_first_name"] = "Etunimi"; +$LANG["phrase_footer_text"] = "Alatunnisteen teksti"; +$LANG["phrase_for_any_form_submission"] = "Millekään mukaan"; +$LANG["phrase_for_view_submissions"] = "Vain materiaaleja, jotka sopivat seuraaviin View (s)"; +$LANG["phrase_forgot_password"] = "Salasana unohtunut?"; +$LANG["phrase_form_already_selected"] = "Muoto on jo valittu"; +$LANG["phrase_form_email_field_b_c"] = "[Lomake email kenttä]:"; +$LANG["phrase_form_email_field_configuration"] = "Muoto Email Field Configuration"; +$LANG["phrase_form_email_fields"] = "Lomake Email kentät"; +$LANG["phrase_form_field"] = "Lomakekentän"; +$LANG["phrase_form_field_contents"] = "Lomakekentän Sisältö"; +$LANG["phrase_form_field_name"] = "Lomakkeen Kentän nimi"; +$LANG["phrase_form_field_placeholders"] = "Lomakekentän paikkamerkit"; +$LANG["phrase_form_fields"] = "Lomakekentät"; +$LANG["phrase_form_info"] = "Lomakkeen tiedot"; +$LANG["phrase_form_info_2"] = "2. Lomakkeen tiedot"; +$LANG["phrase_form_list"] = "Lomake List"; +$LANG["phrase_form_name"] = "Lomakkeen nimi"; +$LANG["phrase_form_page"] = "Lomakkeen Page"; +$LANG["phrase_form_placeholders"] = "Muoto paikkamerkit"; +$LANG["phrase_form_submission"] = "Lomakkeen lähetys"; +$LANG["phrase_form_submissions"] = "Muoto Submissions"; +$LANG["phrase_form_type"] = "Lomaketyyppi"; +$LANG["phrase_form_url"] = "Muodossa URL"; +$LANG["phrase_form_urls"] = "Lomake URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Lomakkeet määritetty millekään tilille"; +$LANG["phrase_forms_page_default_message"] = "Lomakkeet sivu oletusviestiä"; +$LANG["phrase_ft_installation"] = "Muoto Tools asennus Script"; +$LANG["phrase_full_width"] = "Täysi leveys"; +$LANG["phrase_getting_started"] = "Aloittaminen"; +$LANG["phrase_global_placeholders"] = "Global paikkamerkit"; +$LANG["phrase_group_name"] = "Ryhmän nimi"; +$LANG["phrase_group_options_q"] = "Ryhmä vaihtoehtoja?"; +$LANG["phrase_group_rows"] = "Ryhmitellä rivejä"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Korosta väri"; +$LANG["phrase_html_email"] = "HTML Sähköposti"; +$LANG["phrase_html_template"] = "HTML-mallipohjan"; +$LANG["phrase_images_media"] = "Kuvat / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Tuo Asetusluettelo »"; +$LANG["phrase_input_length"] = "Tulo Pituus"; +$LANG["phrase_installation_help"] = "Asennus ohje"; +$LANG["phrase_internal_form"] = "Sisäinen muoto"; +$LANG["phrase_ip_address"] = "IP-osoite"; +$LANG["phrase_is_multi_page_form_q"] = "Onko tämä monisivuisen muodossa?"; +$LANG["phrase_label_response_placeholders"] = "Label / vastaus paikkamerkit"; +$LANG["phrase_large_300px"] = "Suuri (300px)"; +$LANG["phrase_large_400px"] = "Suuri (400px)"; +$LANG["phrase_last_7_days"] = "Viimeiset 7 päivää"; +$LANG["phrase_last_logged_in"] = "Viimeksi kirjautuneet In"; +$LANG["phrase_last_modified"] = "Viimeksi"; +$LANG["phrase_last_modified_date"] = "Muutospäivämäärän"; +$LANG["phrase_last_name"] = "Sukunimi"; +$LANG["phrase_letters_only"] = "Kirjaimilla"; +$LANG["phrase_light_brown"] = "Vaaleanruskea"; +$LANG["phrase_limit_email_content"] = "Rajoittaa sähköpostin sisältöä aloilla View"; +$LANG["phrase_loading_ellipsis"] = "Ladataan ..."; +$LANG["phrase_log_in"] = "Sisään"; +$LANG["phrase_login_as_user"] = "Kirjaudu sisään tämän käyttäjän"; +$LANG["phrase_login_info"] = "Kirjautumistiedot"; +$LANG["phrase_login_page"] = "Kirjautumissivulle"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Sisäänkirjaussalasanasi"; +$LANG["phrase_login_username"] = "Kirjaudu Käyttäjätunnus"; +$LANG["phrase_logo_link_url"] = "Logo Linkin URL"; +$LANG["phrase_logout_url"] = "Uloskirjautumista URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Pääasetussivu"; +$LANG["phrase_manage_client"] = "Manage Client"; +$LANG["phrase_manage_client_omit_list"] = "Manage Client Jätä pois List"; +$LANG["phrase_max_file_size"] = "Tiedoston enimmäiskoko"; +$LANG["phrase_max_length"] = "Max pituus"; +$LANG["phrase_max_length_words_chars"] = "- Max pituus (sanaa / merkkiä)"; +$LANG["phrase_may_add_submissions"] = "Voi lisätä Vastauksissa"; +$LANG["phrase_may_copy_submissions"] = "Kopioi lähetykset"; +$LANG["phrase_may_delete_submissions"] = "Voi poistaa Vastauksissa"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Valikon nimi"; +$LANG["phrase_menu_type"] = "Valikko Tyyppi"; +$LANG["phrase_min_password_length"] = "Salasanan pituus"; +$LANG["phrase_module_description"] = "Moduuli Kuvaus"; +$LANG["phrase_module_info"] = "Moduulin tiedot"; +$LANG["phrase_module_nav"] = "Moduuli Nav"; +$LANG["phrase_month_to_date"] = "Tässä kuussa"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Multi-valitse avattavasta"; +$LANG["phrase_multiple_fields_found"] = "Useita kenttiä Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nimi ja sukunimi"; +$LANG["phrase_new_blank_email"] = "Uusi tyhjä Sähköposti"; +$LANG["phrase_new_blank_option_list"] = "Uusi tyhjä Asetusluettelo"; +$LANG["phrase_new_blank_view"] = "Uusi tyhjä Näytä"; +$LANG["phrase_new_ft_installation"] = "Uudenlaista Tools asennus"; +$LANG["phrase_new_option_list"] = "Uuden optio-lista"; +$LANG["phrase_new_password"] = "Uusi salasana"; +$LANG["phrase_new_password_reenter"] = "Uusi salasana (Please re-enter)"; +$LANG["phrase_new_view"] = "Uusi näkymä"; +$LANG["phrase_new_view_all_fields"] = "New View - Kaikki kentät"; +$LANG["phrase_next_client"] = "seuraavan asiakkaan »"; +$LANG["phrase_next_field"] = "Seuraava kenttä »"; +$LANG["phrase_next_form"] = "Seuraava lomake »"; +$LANG["phrase_next_view"] = "Seuraava Näytä »"; +$LANG["phrase_no_clients"] = "O asiakkaita"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "No offset"; +$LANG["phrase_no_option_lists_available"] = "Ei Valintaluettelot käytettävissä."; +$LANG["phrase_no_views"] = "O Näkymät"; +$LANG["phrase_no_views_with_filters_p"] = "(Ei näkemyksiä suodattimet määritelty)"; +$LANG["phrase_none_not_recommended"] = "Ei mitään (ei suositella)"; +$LANG["phrase_not_assigned_to_option_list"] = "Tämä kenttä ei ole määritetty Asetusluettelo."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Ei ole sama"; +$LANG["phrase_not_found"] = "Ei löydy!"; +$LANG["phrase_not_like"] = "Not Like"; +$LANG["phrase_not_visible_to_client"] = "(ei näy asiakkaalle)"; +$LANG["phrase_num_clients_per_page"] = "Num Asiakkaat per sivu"; +$LANG["phrase_num_emails_per_page"] = "Num Sähköpostit per sivu"; +$LANG["phrase_num_fields"] = "Kenttien määrä"; +$LANG["phrase_num_forms_per_page"] = "Num Lomakkeet per sivu"; +$LANG["phrase_num_menus_per_page"] = "Num Valikot per sivu"; +$LANG["phrase_num_modules_per_page"] = "Num Moduulit per sivu"; +$LANG["phrase_num_option_lists_per_page"] = "Eiden Vaihtoehto Luettelot per sivu"; +$LANG["phrase_num_options"] = "Num Options"; +$LANG["phrase_num_rows"] = "Num Rivit"; +$LANG["phrase_numbers_only"] = "Vain numeroita"; +$LANG["phrase_often_localhost"] = "(usein "localhost")"; +$LANG["phrase_on_form_submission"] = "Lomakkeen lähetykset"; +$LANG["phrase_one_char_number"] = "Ainakin yksi merkki on numero (0-9)"; +$LANG["phrase_one_char_upper"] = "Ainakin yksi merkki on iso"; +$LANG["phrase_one_special_char"] = "Ainakin yksi {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(vain tietyt asiakkaat pääsevät)"; +$LANG["phrase_open_form_in_dialog"] = "Avaa lomake ikkunan"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Avaa lomake uuteen välilehteen / ikkunaan"; +$LANG["phrase_option_list"] = "Vaihtoehto List"; +$LANG["phrase_option_list_name"] = "Vaihtoehto List Name"; +$LANG["phrase_option_list_or_contents"] = "Vaihtoehto List / Sisältö"; +$LANG["phrase_option_lists"] = "Vaihtoehto Luettelot"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Sivun otsikot"; +$LANG["phrase_pass_on"] = "Siirtämään"; +$LANG["phrase_password_min"] = "On ainakin {\$length} merkkiä."; +$LANG["phrase_password_one_number"] = "Sen on oltava vähintään yksi numero (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Sen on oltava vähintään yksi iso kirjain."; +$LANG["phrase_password_requirements_c"] = "Salasana vaatimukset:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Sen on oltava ainakin yksi seuraavista merkeistä: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Oikeudet / Muut asetukset"; +$LANG["phrase_permitted_file_types"] = "Sallitut tiedostotyyppejä"; +$LANG["phrase_phone_number"] = "Puhelinnumero"; +$LANG["phrase_phone_number_format"] = "Puhelinnumeron muoto"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini Suurin sallittu tiedostokoko ladata koko:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP versio"; +$LANG["phrase_please_confirm"] = "Vahvista,"; +$LANG["phrase_please_enter_license_key"] = "Kirjoita lisenssiavaimen"; +$LANG["phrase_please_select"] = "Ole hyvä ja valitse"; +$LANG["phrase_please_select_form"] = "Valitse lomake"; +$LANG["phrase_prev_client"] = "«Edellinen client"; +$LANG["phrase_prev_form"] = "«Edellinen lomake"; +$LANG["phrase_prevent_password_reuse"] = "Estä uudelleenkäyttö # viimeksi salasanoja"; +$LANG["phrase_previous_field"] = "«edellinen kenttä"; +$LANG["phrase_previous_page"] = "Edellinen sivu"; +$LANG["phrase_previous_view"] = "«Edellinen Näytä"; +$LANG["phrase_program_name"] = "Ohjelman nimi"; +$LANG["phrase_public_form_omit_list"] = "Julkiset Lomake jätetään väliin List"; +$LANG["phrase_public_view_omit_list"] = "Julkiset View poissulje List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Oli ongelma seuraavan kyselyn:"; +$LANG["phrase_radio_buttons"] = "Valintanapeilla"; +$LANG["phrase_random_form_submission"] = "Random lomakkeen lähettäminen"; +$LANG["phrase_re_enter_password"] = "Kirjoita salasana uudelleen"; +$LANG["phrase_recipient_type"] = "Vastaanottajan tyyppi"; +$LANG["phrase_redirect_url"] = "URL-osoitteen"; +$LANG["phrase_refresh_list"] = "Päivitäluettelo"; +$LANG["phrase_refresh_module_list"] = "Päivitä Module List"; +$LANG["phrase_refresh_page"] = "Päivitä sivu"; +$LANG["phrase_refresh_theme_list"] = "Päivitä Theme List"; +$LANG["phrase_register_new_email"] = "Rekisteröidy New Email"; +$LANG["phrase_remaining_characters"] = "loput merkit"; +$LANG["phrase_remaining_words"] = "Loput sanat"; +$LANG["phrase_remove_tabs"] = "Poista Tabs"; +$LANG["phrase_required_password_chars"] = "Pakollinen salasana merkkejä"; +$LANG["phrase_resend_test_submission"] = "Lähetä Test Submission"; +$LANG["phrase_return_form_list"] = "Return to Form List"; +$LANG["phrase_row_selected"] = "{\$num_rows} rivi valitun"; +$LANG["phrase_rows_selected"] = "{\$num_rows} riviä valittu"; +$LANG["phrase_sample_data"] = "Sample Data"; +$LANG["phrase_save_changes"] = "Tallenna muutokset"; +$LANG["phrase_search_keyword"] = "Hakusana"; +$LANG["phrase_security_settings"] = "Suojausasetukset"; +$LANG["phrase_select_all"] = "Valitse kaikki"; +$LANG["phrase_select_all_X_results"] = "Valitse Kaikki {\$numresults} Tulokset"; +$LANG["phrase_select_all_on_page"] = "Valitse kaikki Sivu"; +$LANG["phrase_select_date"] = "Valitse päivämäärä"; +$LANG["phrase_select_field"] = "Valitse kenttä"; +$LANG["phrase_select_swatch"] = "Valitse Swatch"; +$LANG["phrase_selected_clients"] = "Valikoidut Asiakkaat"; +$LANG["phrase_selected_views"] = "Valittu Näkymät"; +$LANG["phrase_send_email"] = "Lähetettävä Email"; +$LANG["phrase_send_test_email"] = "Lähetä Test Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Asetusarvo"; +$LANG["phrase_setup_options"] = "Asetusvaihtoehtoja"; +$LANG["phrase_show_all"] = "Näytä kaikki"; +$LANG["phrase_show_form"] = "Näytä lomake"; +$LANG["phrase_size_large"] = "Large (Text)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 merkkiä)"; +$LANG["phrase_size_small"] = "Pieni (<= 20 merkkiä)"; +$LANG["phrase_size_tiny"] = "Pieni (<= 5 merkkiä)"; +$LANG["phrase_size_very_large"] = "Erittäin suuri (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Ohita kentän"; +$LANG["phrase_skip_step"] = "Ohita vaihe"; +$LANG["phrase_small_100px"] = "Pieni (100px)"; +$LANG["phrase_small_80px"] = "Pieni (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Täytä kentät:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Täytä User Documentation »"; +$LANG["phrase_sort_as"] = "Lajittele Kuten"; +$LANG["phrase_special_fields"] = "Special Fields"; +$LANG["phrase_standard_fields"] = "Standard kentät"; +$LANG["phrase_standard_filters"] = "Standard suodattimet »"; +$LANG["phrase_step_1"] = "Vaihe 1"; +$LANG["phrase_step_2"] = "Vaihe 2"; +$LANG["phrase_step_3"] = "Vaihe 3"; +$LANG["phrase_step_4"] = "Vaihe 4"; +$LANG["phrase_step_5"] = "Vaihe 5"; +$LANG["phrase_step_6"] = "Vaihe 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tageja muodossa huomautukset"; +$LANG["phrase_subject_line"] = "Aiherivi"; +$LANG["phrase_submission_date"] = "Jättöpäivän"; +$LANG["phrase_submission_id"] = "Submission-tunnus"; +$LANG["phrase_submission_made"] = "Submission tehty: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Submission Tyyppi"; +$LANG["phrase_submissions_per_page"] = "Näkökannat per sivu"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Et voi lisätä validointi järjestelmän kenttiin."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Välilehteen"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test-kansion käyttöoikeuksia"; +$LANG["phrase_test_submission"] = "Test Submission"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission vastaanotettu"; +$LANG["phrase_text_and_html"] = "Teksti-ja HTML"; +$LANG["phrase_text_email"] = "Teksti Sähköposti"; +$LANG["phrase_text_template"] = "Teksti Template"; +$LANG["phrase_the_previous_month"] = "Edellinen kuukausi"; +$LANG["phrase_theme_description"] = "Teema Kuvaus"; +$LANG["phrase_theme_info"] = "Theme Yhteystied"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Yhteensä Tulokset:"; +$LANG["phrase_type_c"] = "Virhe Type:"; +$LANG["phrase_unselect_all"] = "Poista Kaikki"; +$LANG["phrase_update_accounts"] = "Päivityksen Tilit"; +$LANG["phrase_update_email_template"] = "Päivityksen sähköpostimalli"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Päivitä Tilaa"; +$LANG["phrase_update_view"] = "Päivitys Näytä"; +$LANG["phrase_upload_file"] = "Lataa tiedosto"; +$LANG["phrase_upload_files"] = "Tiedostojen lataaminen"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Lataa kansion polku"; +$LANG["phrase_upload_folder_url"] = "Lataa kansiossa URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Käytä oletusarvoa?"; +$LANG["phrase_used_by_num_form_fields"] = "Käyttämät # Lomakekentät"; +$LANG["phrase_uses_swatches"] = "Käyttää Väriluettelot"; +$LANG["phrase_valid_email"] = "Voimassa Sähköposti"; +$LANG["phrase_validation_error"] = "Kelpoisuustarkistusvirhe"; +$LANG["phrase_validation_rule"] = "Kelpoisuussäännön"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Näytä ryhmä"; +$LANG["phrase_view_id"] = "Näytä ID"; +$LANG["phrase_view_name"] = "Näytä nimi"; +$LANG["phrase_view_placeholders"] = "Näytä paikkamerkit"; +$LANG["phrase_view_submissions"] = "View Submissions"; +$LANG["phrase_view_uploaded_files"] = "otetaan uploaded files"; +$LANG["phrase_viewing_range"] = "[viewing {\$startnum} ja {\$endnum}]"; +$LANG["phrase_when_sent"] = "Kun lähetetään"; +$LANG["phrase_when_submission_is_deleted"] = "Kun mukaan on poistettu"; +$LANG["phrase_when_submission_is_edited"] = "Kun mukaan on muokattu"; +$LANG["phrase_who_can_access"] = "Kuka voi käyttää?"; +$LANG["phrase_word_limit_p"] = "sanan raja."; +$LANG["phrase_year_to_date"] = "Vuoden alusta"; +$LANG["phrase_yes_for_all_views"] = "Kyllä, kaikki Näkymät"; +$LANG["phrase_yes_for_specific_views"] = "Kyllä, erityisiä Näkymät"; +$LANG["phrase_your_account"] = "Tililläsi"; +$LANG["phrase_your_email"] = "Sähköpostiosoitteesi"; +$LANG["phrase_your_email_address"] = "Sähköpostiosoitteeseesi"; +$LANG["processing_form_disabled"] = "Anteeksi, tämä lomake on poistettu käytöstä."; +$LANG["processing_form_incomplete"] = "Anteeksi, tämä muoto ei näytä olevan täysin perustaa käsin muoto Tools. Todennäköisin syy tähän ongelmaan on, että olet poistanut "form_tools_initialize_form" piilotetun lomakkeen kentän, mutta ei suorittaa kaikki vaiheet "Lisää muoto" prosessi.

    Kirjaudu sisään ja tarkistaa lomakkeen kokoonpano."; +$LANG["processing_init_complete"] = "Kiitos! Sinun testin mukaan on käynyt läpi onnistuneesti. Palaa lomakkeen Työkalut hallinto-paneeli ja klikkaa "Päivitä"-painiketta alareunassa Lisää muoto Vaihe 3 sivun loppuun perustamiseen lomakkeeseen."; +$LANG["processing_invalid_form_id"] = "Anteeksi, tämä ei näytä olevan pätevä muoto tunnus."; +$LANG["processing_no_form_id"] = "process.php edellyttää lomakkeen tunnus käsittelyyn. Varmista, että lomake sisältää piilotetun kentän nimi "form_tools_form_id" Se kulkee pitkin lomakkeen tunnus."; +$LANG["processing_no_form_url_for_recaptcha"] = "Muoto Tools ei pysty päättämään, mihin suunnata, kun ne eivät anna JOHTAA kunnolla. Kertokaa ja piilotetun kentän nimi form_tools_form_url sisältää URL-muodossa."; +$LANG["processing_no_post_vars"] = "process.php ei saa mitään tietoja. Huomaa: Tämä komentosarja ei voi ladata suoraan selaimessa.
    Varmista, että lomake lähettää postin kautta."; +$LANG["processing_no_redirect_url"] = "Mukaan oli käsitelty oikein, mutta et ole määritetty URL-osoitteen on tässä muodossa! Muokkaa lomake muoto Työkalut käyttöliittymän ja lisää URL-osoitteen."; +$LANG["special_language"] = "Finnish"; +$LANG["special_language_locale"] = "Finnish"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Kaikki uudet asiakastileihin on luotu asetukset ja oikeudet on määritelty. Voit ohittaa jossa tietylle asiakkaalle, muokata asiakkaan tilin vierailemaan Asetukset-välilehti."; +$LANG["text_add_form_choose_integration_method"] = "Valitse mitä tapaa haluat käyttää integroida lomakkeen lomakkeella Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Tässä menetelmässä käytetään Form Työkalut API , mukaan tärkeimmäksi Työkalut script. API tarjoaa useita hyödyllisiä toimintoja, tehdä työtä integroida lomakkeen lomakkeella Työkalut mahdollisimman yksinkertainen. Ei rajoituksia kuinka Lomake voidaan jättää, kun käytät API. Voit lähettää sisältöä yhdellä kertaa, tai sivu sivulta, voit lisätä oman server-side validointi, CAPTCHA kuvia, voit toimittaa tiedot nyt, mutta vain kertoa sen näyttämään esitys vuonna Form Työkalut UI myöhemmin (katso Finalized Vastauksissa osio API auttaa dokumentaatio)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Jotta lähettää lomaketiedot kautta PHP, lomakkeen tulee olla samassa sivustossa kuin tämän lomakkeen Työkalut asennus. Toiseksi, ei-teknisiä ja aloittelevat muoto Työkalut käyttäjää, tämä menetelmä voi olla hieman uhkaava aluksi. Mutta on paljon asiakirjoja auttaa sinut ulos, mukaan lukien kaksi yksinkertaista tutorials integroimalla yhden ja monisivuisia lomakkeita (nämä ovat yhteydessä on myöhemmässä vaiheessa)."; +$LANG["text_add_form_direct_submission_benefits"] = "Tämä on helpoin tapa lähettää lomakkeen lomakkeen Tools. Se ei edellytä mitään tietoa PHP ja vaatii vain hyvin pieniä muutoksia lomakkeeseen. It's great pienemmille lomakkeita, joissa haluat vain lähettää tiedot tietokantaan sitten ohjaa käyttäjän "Kiitos"-sivulla."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Tämän mukaan menetelmä on hyvin yksinkertainen käyttää, mutta ei juurikaan valvonta monimutkaisempia muotoja. Monisivuista lomakkeita tai lomakkeita, jotka edellyttävät server-side validointi ovat paremmin toinen menetelmä: toimit muoto Tools API."; +$LANG["text_add_form_field_types1"] = "Melkein valmis! Tämä sivu yrittää löytää kaikki lomakkeen kentät ja määrittää niiden kenttätyyppejä. Klikkaa Smart Täytä painiketta oikealla päästä alkuun. Sinut vain saa edetä, kun kaikki toimet on selvitettävä - asioita, joihin kannattaa kiinnittää huomiota näkyvät "tarvittavista toimista "-sarakkeeseen."; +$LANG["text_add_form_field_types2"] = "Jos lomake ei ole HTML, napsauta Ohita vaihe painiketta jatkaaksesi. Tämä kaikki voidaan määrittää myöhemmin."; +$LANG["text_add_form_field_types3"] = "Tämä lataa sisällön muodossa (s). Huom: Tämä korvaa mitään muutoksia olet tehnyt tällä sivulla."; +$LANG["text_add_form_field_types4"] = "Jos olet joutunut ongelmia, klikkaa tästä ohita tämä vaihe. Kaikki ratkaisemattomat kentät on määritetty käyttämään oletusarvoja. Voit muokata näitä kenttiä myöhemmin."; +$LANG["text_add_form_field_types_manual_upload"] = "Jos et ole pystyneet Smart Täytä kentät, voit kokeilla vaihtoehtoista ratkaisua: lataa kopioita lomakkeita alla olevat kentät."; +$LANG["text_add_form_field_types_manual_upload2"] = "Huomaa: Älä lataa raaka PHP sivuja (tai muu server-side-koodi) - sinun tarvitsee vain lähettää HTML-versiot. Jotta saat tämän, tarkastella ja tallentaa sivun selaimeesi."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Oli useita kenttiä, joita ei löydy muodossa sivulta määritetty. Tämä on useimmiten johtuu todennäköisesti jostain seuraavista:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Kirjoitit yhden tai useamman lomakkeen URL-osoitteiden monisivuisen lomakkeen väärin."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Yksi tai useampi sivut lomake on suojattu salasanalla ja käsikirjoitus ei voinut avata sivua."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Voit väärin merkitty lomakkeen URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klikkaa tästä palataksesi lomakkeen tiedot sivu tarkistaa asetuksesi."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Oletko muuttanut muotoa (s) jälkeen tehdä testi jättämistä"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klikkaa tästä laittaa vielä toinen testi jättämisestä."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Lomake on suojattu salasanalla ja käsikirjoitus ei voinut avata sivua."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Toisessa välilehdessä / ikkuna tämän selaimen, kirjaudu lomake ja napsauta Päivitä sivu-painiketta alla yrittää uudelleen löytää kentät."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Jos mikään yllä olevista ratkaisuista ei toimi, voit myös kokeilla manuaalisesti lataamalla lomakkeita käsittelyyn ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Oli useita kenttiä, joita ei löydy muodossa sivujen määritetty. Tämä on useimmiten johtuu todennäköisesti jostain näistä:"; +$LANG["text_add_form_help_link"] = "Jos olet joutunut mitään ongelmia aikana nämä vaiheet, yritä lukea ulos käyttöohjeissa ."; +$LANG["text_add_form_step_1_text_1"] = "Seuraavilla sivuilla johtaa läpi vaiheet määrittää lomakkeen Työkalut tallentaa lomakkeen huomautuksia. Ennen kuin jatkat, tarkista, että:"; +$LANG["text_add_form_step_1_text_2"] = "lomake on jo luotu, ja se pääsee URL (localhost on hieno)"; +$LANG["text_add_form_step_1_text_3"] = "voivat muokata lomakkeen"; +$LANG["text_add_form_step_2_para_2"] = "Avaa lomake toimittaja valinta ja muuttaa muotoa tunnisteen jälkeen, mukaan lukien kaksi piilotetut kentät."; +$LANG["text_add_form_step_2_para_3"] = "Seuraavaksi avaa lomakkeen Web-selaimessa. Täytä joka alalla ja lähetä se. Lähettämisen jälkeen, sinun pitäisi nähdä ilmoituksen viestin. Kun tämä sanoma tulee näyttöön, palaa tälle sivulle ja napsauta Päivitä-painiketta. Kun tämä prosessi on valmis, näet edelleen painiketta, kun olet seuraavaan vaiheeseen."; +$LANG["text_add_form_step_2_para_6"] = "Kun lomake mukaan seuraavat arvot. Ne voidaan asettaa suoraan kautta PHP tai siirrettävissä lomakkeen kautta itse. Alla on esimerkkejä kustakin. (\$ Varname) on tiiviste (tai yhdistystoiminnan array) kaikki lomakkeen lähettäminen tietoa - tämä on yleensä (\$ postvar) tai (\$ sessionvar) vaihtelee, mutta se voi olla muokattuihin."; +$LANG["text_add_form_step_2_text_2"] = "Anna URL-osoite "Kiitos " sivuilta. Tämä on, jos haluat ihmisiä voidaan ohjata jälkeen lomake on toimitettu."; +$LANG["text_add_form_step_3_para_1"] = "Tällä sivulla on lueteltu kaikki kentät muodossa mukaan. Ole hyvä ja tutkii jokaisen kentän ja poista, joita et tarvitse säilyttää jokaisen jättämistä. Jos poistat voimassa kentän vahingossa, tai haluat vaihtaa tallentamat tiedot lomakkeeseen, palaa edelliselle sivulle lähettää uuden testin mukaan."; +$LANG["text_add_form_step_3_para_2"] = "Huomaa: Jos lähetät useita arvoja kautta valintaruudut tai usean valitse valintaruutu, varmista, että kentän nimi päättyy [] merkit (ks. käyttöohjeisiin lisätietoja)."; +$LANG["text_add_form_step_3_text_1"] = "Tässä missä hauskuus alkaa! Tässä vaiheessa lomake Työkalut odottaa testi huomautuksen, lomakkeen. Se käyttää lomakkeen lähettäminen tietää, mitä tietoja on tallennettu tietokantaan."; +$LANG["text_add_form_step_3_text_2"] = "osoittamalla lomake lomakkeen Työkalut"; +$LANG["text_add_form_step_3_text_3"] = "lomakkeella Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Auttaa integroimaan lomakkeeseen, sinun kannattaa lukea jokin seuraavista tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "Ne selittävät seikkaperäisesti, miten perustaa lomake Testin valmistelu mukaan, ja myös muut tiedot, jotka voivat olla avuksi. Rivi PHP tarvitset on:"; +$LANG["text_add_form_step_3_text_6"] = "Tämä takaa tiedon todella lähettää lomakkeen Tools. Kun olet sijoittanut läpi testin mukaan, napsauttamalla alla olevaa painiketta."; +$LANG["text_add_form_step_3_text_7"] = "Sivulla ennen teidän lopullinen "kiitos"-sivu, muista lisätä seuraavan parametrin \$ params muuttuja:"; +$LANG["text_add_form_step_5_para_1"] = "Tietokanta on perustettu tähän lomakkeeseen ja lomake on aktivoitu käyttöön. Jos olet tehnyt toimittamisesta osoittamalla lomake ja process.php, ole hyvä ja palauta lomake ja poista seuraavat piilotettu kenttä:"; +$LANG["text_add_form_step_5_para_2"] = "Sitten käy "kiitos"-sivulla tyhjentää istuntoihin. Kun tämä on tehty, kaikki uusi lomake huomautukset käsitellään ja varastoidaan lomakkeen Tools. Kokeile tehdä jättämisestä tai kaksi tarkistaa tiedot kaikista lähettäminen oikein."; +$LANG["text_add_form_step_5_para_3"] = "Jos haluat hienosäätää lomakkeen vaihtoehdot, kuten auto-sähköpostia, lisäämällä ylimääräinen lomakekentät alalla, tai mukauttamalla lomakkeen kentän tyyppiä, voit muokata lomakkeen milloin tahansa."; +$LANG["text_add_form_step_5_para_4"] = "Koska lomake sisältää tiedostonlähetyskiintiö kentät, sinun täytyy määrittää kunkin kentän määrittää tiedoston ladata kansio, mitkä tiedostot ovat sallittuja ja. Tämä löytyy Näyttö-välilehti ja muokkaa lomakkeen sivulla."; +$LANG["text_add_form_step_5_para_5"] = "Jos mukaan lähetettiin API: n kautta, vaihtaa ft_api_init_form_page linja ensimmäisen sivun lomake:"; +$LANG["text_add_submission_button"] = "Lisää Submission painike näkyy vain Näkymät jotka ovat "voi lisätä huomautuksia " vaihtoehto asetettu "kyllä ​​"."; +$LANG["text_admin_email_placeholder_info"] = "Tämä on sähköpostiosoite lomakkeen Työkalut ylläpitäjä, tiliin määritetyt asetukset. Tämä vain tuotokset sähköpostiosoitteeseen, joten jos haluat käyttää HTML-linkkiä, sinun täytyy kääri se <a>, esimerkiksi näin:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Myös oletus kirjautumissivulle teema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Valitse ensiksi lomakkeen tyyppi."; +$LANG["text_client_form_page"] = "Tällä sivulla on lueteltu kaikki lomakkeet ja näkymät tälle asiakkaalle. Vihje: jotta ne voivat nähdä muotoa väittää, ne on osoitettava vähintään yhdestä kuvakulmasta."; +$LANG["text_client_map_filters_desc1"] = "Client Kartta suodattimet voit rajoittaa väitteet, jotka näkyvät tässä näkymässä kartoittamalla arvot lomakkeen kentän arvojen asiakkaan tilille."; +$LANG["text_client_no_forms"] = "Sinulla ei tällä hetkellä ole lomakkeita nähtävillä."; +$LANG["text_client_welcome"] = "Tervetuloa! Tämä ohjelma tallentaa kaikki tiedot lähettäneet sivuston kävijät. Jos haluat nähdä huomautuksia tietyn muodon napsauttamalla Näytä-linkkiä, ja katso vasemmanpuoleisesta navigointivalikko muita vaihtoehtoja."; +$LANG["text_config_file_created"] = "Sinun config.php tiedosto on luotu."; +$LANG["text_config_file_not_created"] = "Emme voineet luoda config.php tiedoston. Sinun tulee luoda tiedoston manuaalisesti."; +$LANG["text_config_file_not_created_instructions"] = "Kopioida ja liittää sisältöä osiosta alla oleva tiedosto nimeltä config.php ja lähettää sen FTP-lomakkeen Tools / global (kansio, joka sisältää myös muutamia muita tiedostoja ja hakemistoja, että yksi tiedosto nimeltä library.php)."; +$LANG["text_confirm_delete_form"] = "Kyllä, haluan poistaa tämän lomakkeen"; +$LANG["text_create_admin_account"] = "Nyt aiomme luoda järjestelmänvalvojan tili. Tätä käytetään kaikkien puolien hallinnoinnista muoto työkalut, kuten lisäämällä muotoja ja luoda asiakkaan tilit."; +$LANG["text_create_new_client_account"] = "Alla olevan lomakkeen avulla voit luoda uuden asiakkaan tilille. Kaikki kentät ovat pakollisia."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "Katso PHP {\$datefunctionlink} toiminto muotoiluvaihtoehtoja"; +$LANG["text_default_file_settings_page"] = "Sivua määritellään tiedoston lataa tallentaminen muoto Tools asennus. Näitä sääntöjä sovelletaan kaikkiin ladatut tiedostot kautta muoto Työkalut, ellei nimenomaisesti ohittaa yksittäisen lomakkeen kenttään. Huomautus: Jos muutat Siirrä kansioon, kun tiedostoja ei ole ladattu, ne siirretään automaattisesti uuteen kansioon."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Ennen kuin jatkat, sinun täytyy päivittää / themes / default / cache kansio, jotta täydet luku-ja kirjoitusoikeudet. Kun tämä on tehty, viesti katoaa, ja voit asentaa script."; +$LANG["text_default_values_in_view"] = "Tämä osio on valinnainen. Kaikki näkökannat luotu tähän näkemykseen sisältää oletusarvot tässä määritetty."; +$LANG["text_delete_all_forms"] = "Haluan poistaa kaikki tiedostot, jotka on ladattu tällä lomakkeella"; +$LANG["text_delete_form_warning"] = "Oletko varma että haluat poistaa tämän lomakkeen? Tätä toimintoa ei voi kumota. Kaikki tiedot menetetään pysyvästi!"; +$LANG["text_edit_admin_menu_page"] = "Voit muokata valikon alla. Varmistaa aina käyttää kaikkia toimintoja käytettävissä muoto Työkalut, seuraavat sivut ovat tarpeen: Forms, Asiakkaat, Tili, moduulit, Asetukset ja ulos."; +$LANG["text_edit_client_menu_page"] = "Tässä osiossa voit muokata vasemmassa reunassa sarake kullekin käyttäjälle. Voit luoda niin monta asiakasta valikot kuin haluat ja määrittää kaikki huomioon yksi niistä. Oletusarvona on kaksi valikot: yksi sinulle, ylläpitäjä, ja yksi kaikkien asiakastileillä. Järjestelmänvalvojan tili voidaan muuttaa, mutta ei poistaa."; +$LANG["text_edit_tab_summary"] = "Jos haluat ryhmään tämän näkemyksen pellot välilehtiin, kirjoita välilehti nimen alla. Kun olet valmis, valitse sopiva välilehti kunkin kentän ryhmä Kentät-välilehti ."; +$LANG["text_edit_view_list_page"] = "Tämä välilehti ohjaa, mitkä kentät näkyvät sarakkeet Submission Listing sivu, ja muutamia lisäasetuksia näillä aloilla. Huom: Suosittelemme lisätä enintään 4 tai 5 tärkeimmistä kentät View."; +$LANG["text_email_settings_intro"] = "Tämän sivun avulla voit selvittää, mikä lomakekentät tallentaa sähköposteja ja niitä vastaavat nimet. Kun olet määritellä ne täällä, voit käyttää niitä sähköpostisi malleja saajina. Tämä osio on täysin vapaaehtoista."; +$LANG["text_email_tab_summary"] = "Tässä osassa voit luoda mikä tahansa määrä sähköpostit lähetetään aina, kun lomake on jätetty, ja muut laukaisee."; +$LANG["text_email_template_tab"] = "Tässä osiossa voit määrittää, mikä sisältö näkyy sähköpostitse. Jos haluat lähettää sähköpostia, koska vain teksti-tai sähköpostitse, vain anna arvo kyseiseen osioon. Jos syötät arvon niin, sähköposti lähetetään molemmissa muodoissa."; +$LANG["text_email_template_text_1"] = "On ollut esittämisen kautta lomakkeen, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "On ollut esittämisen kautta lomakkeen, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Kiitoksia jättämistä!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Virheilmoitus näyttää, jos kenttä ei validointi"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Ulkoiset muodot ovat muotoja jo olemassa sivustossasi, tai jonnekin www. Valitse tämä vaihtoehto, jos sinulla on oma lomake, joka haluat integroida lomakkeen Tools."; +$LANG["text_fields_tab_summary"] = "Tämä sivu listaa kaikki lomakkeen kentät. Kontrolloida sitä, miten ne näkyvät selattaessa väittää, katso Näkymät-välilehti . Poistaminen kenttä tämän sivun poistaa sen kaikkiin materiaaleihin, joten ole varovainen!"; +$LANG["text_file_extension_info"] = "Anna tiedostotunnisteet erotettu toisistaan pilkulla (esim. jpg, gif, png) tai jätä tyhjäksi, jotta minkä tahansa tiedoston tyyppi."; +$LANG["text_file_field_placeholders_info"] = "Tiedoston kentät on kaksi erityistä paikkamerkit: FILEURL ja tiedostonimen. FILEURL on täydellinen URL-tiedosto, joten voit liittää suoraan siihen sähköpostit, FILENAME on vain tiedoston nimi."; +$LANG["text_filters_page"] = "Vain ne väitteet, jotka täyttävät sääntöjen voit määrittää alla näkyvät tässä näkymässä."; +$LANG["text_filters_tips"] = "Vinkkejä siitä, miten käyttää väittää suodattimia, katso User Documentation."; +$LANG["text_forgot_password"] = "No problem. Syötä käyttäjätunnuksesi alla ja kirjautumistiedot lähetetään sähköpostiosoitteeseesi arkistossa. Jos olet unohtanut käyttäjätunnuksesi, lähetä sähköpostia sivuston ylläpitäjä on {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Tämä lomake sisältää yhden tai useamman tiedoston ladata aloilla:"; +$LANG["text_form_placeholder_info"] = "Seuraavat paikkamerkkejä voidaan käyttää mitä tahansa sähköpostiosoite mallin ja kielen paikkamerkki alalla, riippumatta siitä mitä View sähköpostimalli on määritetty. KYSYMYS paikkamerkit ovat erityinen muoto kysymys; VASTAUS paikkamerkit ovat vastausvaihtoehtoja kuhunkin kysymykseen."; +$LANG["text_form_submission_date_placeholder"] = "Jolloin jättämisestä tehtiin."; +$LANG["text_form_tools_form_url"] = "Koko URL-muotoa. Tämä vain on arvo Ulkoiset muodot."; +$LANG["text_form_tools_login_url"] = "Login URL lomake Tools."; +$LANG["text_form_view_permission_info_admin"] = "Huomaa: Tässä lomakkeessa on järjestelmänvalvojan oikeudet tyyppi, niin mikään asiakastileistä voi nähdä tätä näkemystä."; +$LANG["text_form_view_permission_info_private"] = "Huomaa: Tässä lomakkeessa on oma käynti tyyppi niin julkiset ja yksityiset vaihtoehtoja täällä on rajoitettu, että osajoukon asiakkaita."; +$LANG["text_ft_installed"] = "Onnittelut, muoto työkalut on asennettu!"; +$LANG["text_global_placeholder_info"] = "Nämä paikkamerkeillä voidaan käyttää minkä tahansa mallin ja kaikenlaista."; +$LANG["text_group_name_explanation"] = "Pelloille lisättiin Lisää muoto prosessi, tämä arvo on esitäytetty ja näytön tekstin riippumatta kenttä käyttää arvoa. Voit halutessasi vaihtaa sen paremmin kuvaamaan sisältöä."; +$LANG["text_install_create_config_file"] = "Muoto Työkalut tallentaa palvelimen ja tietokannan asetukset tiedoston nimeltä config.php, löytyy your / global / kansio. Klikkaa "Luo tiedosto"-painiketta automaattisesti tiedosto palvelimelle."; +$LANG["text_install_create_database_tables"] = "Nyt aiomme luoda lomakkeen Työkalut tietokannan taulukot. Tämä vaihe edellyttää tietokannan itse on jo luotu. Jos et ole varma, miten tämä tehdään, ota yhteyttä palveluntarjoajaasi."; +$LANG["text_install_db_tables_error_tip_1"] = ""Tuntematon MySQL-palvelimen" yleensä tarkoittaa, että palvelimen nimi annoit on virheellinen. Ehkä kokeile tätä "localhost" - tämä on yleinen tapa viitata "paikallinen" tietokannan web-palvelin."; +$LANG["text_install_db_tables_error_tip_2"] = ""Can't connect to paikallisen MySQL-palvelimen kautta socket" tarkoitetaan tietokannan hostname kenttä on jälleen virheellinen."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" tarkoittaa, että on ongelma käyttäjätunnus / salasana-yhdistelmää."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... tietokantaan ..." tarkoittaa, että vaikka käyttäjätunnus ja salasana toimitetaan on oikea, se voi muodostaa, että erityisesti tietokannan kanssa huomioon. Tämä voi tarkoittaa, että joko tietokannan nimi on virheellinen, tai että kyseinen käyttäjä ei ole liitetty kyseiseen tietokantaan."; +$LANG["text_install_email_content_text"] = "Verkkosivustossamme on paljon resursseja, joiden avulla pääset alkuun, mukaan lukien verkko-ohjeet (https://docs.formtools.org) ja opetusohjelmat (https://docs.formtools.org/tutorials). Jos huomaat, että jumissa on kysymys, kysy kysymys githubista (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Anteeksi, muoto Tools ei voi ajaa palvelimella. Klikkaa tästä ja vähimmäisvaatimukset."; +$LANG["text_install_system_check"] = "Tämä sivu toimii muutamia testit järjestelmän, jotta se voi suorittaa Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Sisäinen muotoja on olemassa vain muoto Työkalut - muualle sivustossasi. Ainoa Työkalut käyttäjätunnukset pääsevät muodossa. Valitse tämä vaihtoehto, jos sinulla ei ole nykyisessä muodossaan."; +$LANG["text_internal_form_intro"] = "Käytä alla olevaa lomaketta luodaksesi uuden sisäisen muodon. Kaikki asetukset, mukaan lukien määrä ja sisältö lomakkeen kenttiä voi muuttaa ja määrittää myöhemmin."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Jotta kirjautuminen ja lomakkeella Työkalut, sinulla on oltava JavaScript käytössä selaimessa. Ota se nyt, ja sitten Päivitä selaimesi."; +$LANG["text_last_modified_date_explanation_c"] = "Edellisen kerran mukaan oli muutettu. Uusia huomautuksia, tämä on sama kuin:"; +$LANG["text_limit_email_content_desc"] = "Tämä vaihtoehto toimii vain HTML ja tekstin sisällöstä generoidaan Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(vain luetellaan Katsojat yhden tai useampia suodattimia määritelty)"; +$LANG["text_log_in_to_ft"] = "Kirjaudu Form Työkalut"; +$LANG["text_login"] = "Kirjaudu sisään alla pääsy (\$ ohjelman_nimi) hallinto paneeli. Jos olet unohtanut salasanasi, klikkaa tästä."; +$LANG["text_login_info"] = "Pyynnöstä, tässä kirjautumistiedot."; +$LANG["text_name_of_form"] = "Nimi muodossa."; +$LANG["text_no_clients"] = "Tällä hetkellä ei ole asiakkaita tietokantaan. Haluat lisätä uuden asiakkaan tilin, valitse Lisää Client-painiketta."; +$LANG["text_no_clients_found"] = "Ole asiakkaita ei löytynyt. Yritä laajentaa hakuehtojasi."; +$LANG["text_no_fields_in_view"] = "Tämä näkemys ei ole kenttiä sitä. Klikkaa alla olevaa linkkiä."; +$LANG["text_no_forms"] = "Tällä hetkellä ei ole muotoja tietokantaan. Haluat lisätä uuden muodon, napsauta Lisää muoto-painiketta."; +$LANG["text_no_forms_found"] = "Ei lomakkeita ei löytynyt."; +$LANG["text_no_forms_found_search"] = "Ei lomakkeita ei löytynyt. Yritä laajentaa hakuehtojasi."; +$LANG["text_no_modules_found"] = "No moduulit löytynyt. Yritä laajentaa hakuehtojasi."; +$LANG["text_no_recipients_added"] = "O vastaanottajien on lisätty."; +$LANG["text_no_search_results"] = "Tuloksia ei ole tämän hakuehdot / Näytä."; +$LANG["text_no_submissions_found"] = "Sorry, ei huomautuksia ei löytynyt."; +$LANG["text_no_themes"] = "Sinulla ei ole mitään teemoja määritelty. Klikkaa alla olevaa painiketta piristää teema luettelostamme, tai vilkaista muoto Työkalut käyttöohjeet tietoa lisäämällä teemoista."; +$LANG["text_non_deletable_fields"] = "Tämä kenttää käyttää Core script, eikä niitä voi muokata tai poistaa aiheuttamatta yhteensopivuusongelmia. Jos haluat tehdä muutoksia kenttään, kopioi se ja muokata kopiota."; +$LANG["text_option_list_group_explanation"] = "Jos tämä on valittu, se antaa ryhmitellä vaihtoehtoja. Miten ryhmät näkyvät riippuu kenttään käyttämällä tätä vaihtoehtoa luettelosta."; +$LANG["text_option_list_page"] = "Radio painikkeet, valintaruudut, dropdowns ja multi-valitse pudotusvalikosta kentät kaikki antaa käyttäjälle useita vaihtoehtoja, joista he voivat valita yhden tai useamman kohteita. Muodossa Työkalut Näitä kutsutaan asetusvalikkoon. Yleensä nämä ovat luo automaattisesti Lisää ulkoinen muoto prosessi, mutta voit manuaalisesti lisätä tai muokata vaihtoehto luettelot alta, jos lomakkeen sisältö muuttuu tai piirrät kenttiä, joita käytetään ainoastaan ​​sisäisesti."; +$LANG["text_option_list_used_by_fields"] = "Tämä vaihtoehto listaa käytetään useiden lomakekentät. Jos päivityksen alla, se muuttuu kaikkien kenttien (katso Lomakekentät välilehteä nähdä kenttien luettelo). Jos haluat päivittää arvot yhden tai osajoukko kentät osoitettu tällä hetkellä, klikkaa tästä Luo uusi vaihtoehto listan samat arvot kuin tämä. Sitten voit määrittää lomakkeen kentät haluat uuteen ryhmään."; +$LANG["text_public_form_omit_list_page"] = "Julkiset lomakkeet antavat sinulle hyötyä kerroit kaikki asiakkaan tilit käyttää niitä ilman käsin määrittää kunkin asiakkaan niitä. Tämän sivun avulla voit paikantaa ne asiakkaat, jotka eivät voi käyttää tätä lomaketta, vaikka lomake on merkitty julkisiksi."; +$LANG["text_public_view_omit_list_page"] = "Julkiset Näkymät antaa sinulle hyötyä kerroit kaikki asiakkaan tilit käyttää niitä ilman käsin määrittää kunkin asiakkaan niitä. Tämän sivun avulla voit paikantaa ne asiakkaat, jotka eivät voi käyttää tähän erityistä huomiota."; +$LANG["text_reference_tab_info"] = "Tämä sivu listaa kaikki paikkamerkit käytettävissä lomakkeen. Paikkamerkit ovat merkkijonoja, joita voidaan käyttää sähköpostin malleja, ja kentät, joissa erityinen paikkamerkki kuvake . Kun tuli kenttään, ne dynaamisesti muunnetaan sopiva arvo, kun kenttä on katseltu tai sähköpostin lähettämisestä."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Review käyttäjätiedot"; +$LANG["text_send_email_from_edit_submission_page"] = "Sisältyy mahdollisuus lähettää sähköpostia Muokkaa lähetyssivulla"; +$LANG["text_smart_fill_option_list_problem"] = "Emme pystyneet Smart Täytä kenttä vaihtoehtoja. Kuitenkin vaihtoehtona, voit kokeilla lataamalla kopion muodossa sivun alla olevaan kenttään. Huomaa: Älä lataa raaka PHP sivuja (tai muu server-side-koodi) - sinun tarvitsee vain lähettää HTML-version. Jotta saat tämän, tarkastella ja tallentaa sivun selaimeesi."; +$LANG["text_submission_ip_address"] = "IP-osoite käyttäjän teki jättämisestä."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Käytä alla olevaa lomaketta joko katsoa tai lähettää itsellesi sähköpostia syntyvät tämän sähköpostimalli. Sähköpostiosoite on vain sähköpostitse määritelty alla, pää-, Kopio ja Piilokopio sähköpostiosoite vastaanottajille ohitetaan ja testaus."; +$LANG["text_test_email_templates_no_submissions"] = "Jotta testata sähköpostisi malleja, sinun on ensin läpi ainakin jossakin muodossa mukaan."; +$LANG["text_theme_page_intro"] = "Tällä sivulla on lueteltu kaikki sinun teemoja. Klikkaa pikkukuvaa nähdäksesi suuremman esimerkki teeman tyylejä. "Käytössä"-valintaneliö ratkaisee onko kyseisen teeman voi valita asiakkaita. Voit selata kaikkia käytettävissä olevia aiheita löydät muoto Työkalut verkkosivuilla."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: lisääminen ensimmäinen muodossa!"; +$LANG["text_unique_submission_id"] = "Ainutlaatuinen jättämisen tunnus."; +$LANG["text_unused_option_list"] = "Tämä vaihtoehto luettelo ei käytetä minkäänlainen kentät."; +$LANG["text_upgraded"] = "Asennusta on päivitetty {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Tämä vaihtoehto listaa käytetään seuraavasti kentät."; +$LANG["text_view_fields_info"] = "Tämä välilehti ohjaa, mitkä kentät näkyvät muokatessasi jättämistä tässä näkymässä, niiden järjestys ja ovatko ne muokattavissa tai ei."; +$LANG["text_view_tab_summary"] = "Tällä välilehdellä voit luoda erilaisia ​​tapoja ryhmitellä ja järjestää tietoja. Luettu voit luoda mukautettuja osajoukkoja lomakkeen tiedot jakaa sen hallittavissa palasina, ja rajoittaa mitä asiakkaat voivat nähdä tai muokata."; +$LANG["validation_account_disabled"] = "Valitettavasti tilisi on poissa käytöstä."; +$LANG["validation_account_not_recognized"] = "Antamaasi käyttäjänimeä ei tunnistettu."; +$LANG["validation_account_not_recognized_info"] = "Antamaasi käyttäjänimeä ei löytynyt. Yritä uudelleen tai ota yhteyttä sivuston ylläpitoon. Tiedot löytyvät sivun alalaidasta."; +$LANG["validation_account_pending"] = "Järjestelmän ylläpito ei ole vielä aktivoinut tiliäsi."; +$LANG["validation_check_delete_client"] = "Oletko varma että haluat poistaa tämän asiakkaan?"; +$LANG["validation_client_password_missing_number"] = "Asiakkaan salasana on oltava vähintään yksi numero (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Asiakkaan salasana on oltava vähintään yksi seuraavista merkeistä: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Asiakkaan salasana on oltava vähintään yksi iso kirjain."; +$LANG["validation_client_password_too_short"] = "Asiakkaan salasana on vähintään {\$number} merkkiä pitkä."; +$LANG["validation_col_name_is_reserved_word"] = "Tietokannassa on jo tällä nimellä oleva sarake. Ole hyvä ja nimeä se uudelleen."; +$LANG["validation_db_name"] = "Tietokannan nimet eivät voi sisältää kausia tai viivoja."; +$LANG["validation_db_not_updated_invalid_input"] = "Tietokantaa ei voitu päivittää. Tarkista antamasi tiedot."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Järjestelmänvalvojan oletusteema tulee aina olla käytettävissä."; +$LANG["validation_default_phone_num_required"] = "Täytä koko puhelinnumero <b> { \$ kenttä} </ b> kenttä - numeroita."; +$LANG["validation_default_rule_alpha"] = "Ole hyvä vain kirjaimia ja numeroita <b> { \$ kenttä} </ b>-kenttään."; +$LANG["validation_default_rule_letters_only"] = "Ole hyvä vain kirjaimia varten <b> { \$ kenttä} </ b>-kenttään."; +$LANG["validation_default_rule_numbers_only"] = "Ole hyvä vain kirjoittaa numerot <b> { \$ kenttä} </ b>-kenttään."; +$LANG["validation_default_rule_required"] = "Anna arvo <b> { \$ kenttä} </ b>-kenttään."; +$LANG["validation_default_rule_valid_email"] = "Anna voimassa oleva sähköpostiosoite <b> { \$ kenttä} </ b>-kenttään."; +$LANG["validation_delete_form_confirm"] = "Valitse valintaruutu varmistaaksesi tämän lomakkeen poistamisen."; +$LANG["validation_delete_non_empty_option_list"] = "Varoitus! Tämä vaihtoehto listaa käytetään yhden tai useamman lomakekenttiä. Poistaminen se tekee nämä kentät lakkaa toimimasta kunnolla."; +$LANG["validation_display_names_incomplete"] = "Anna arvo kaikille Näyttö nimet, tai valitse Smart Täytä mahdollisuus syöttää niitä dynaamisesti."; +$LANG["validation_duplicate_form_field_name"] = "Et voi olla useita kenttiä samalla kentän nimi."; +$LANG["validation_email_not_found_or_invalid"] = "Anteeksi, email tilisi yhteydessä joko ei ole tai se ei kelpaa."; +$LANG["validation_folder_invalid_permissions"] = "Jotta voit suorittaa tämän testin, käyttöoikeudet on asetettu Siirrä kansioon, jotta lukeminen ja kirjoittaminen tiedostoja (777 Unix)."; +$LANG["validation_folder_not_writable"] = "Tätä kansiota ei voi kirjoittaa."; +$LANG["validation_internal_form_too_many_fields"] = "Valitettavasti voit vain luoda lomakkeita 1000 kenttiin tai vähemmän."; +$LANG["validation_invalid_admin_email"] = "Anna kelvollinen adminstrator sähköpostiosoitteen."; +$LANG["validation_invalid_admin_username"] = "Käyttäjätunnuksesi voi muodostua ainoastaan ​​aakkosnumeerisia merkkejä (AZ ja 0-9)."; +$LANG["validation_invalid_client_username"] = "Asiakkaan käyttäjätunnus voi koostua vain aakkosnumeerisia merkkejä (A ja 0-9)."; +$LANG["validation_invalid_client_username2"] = "Anteeksi, käyttäjätunnus: n voi sisältää vain kirjaimia, numeroita ja alaviiva. Anna uusi käyttäjätunnus."; +$LANG["validation_invalid_column_name"] = "Sarake nimet voivat olla vain aakkosnumeerisia (az, 0-9). Tarkista sarakkeen nimiä."; +$LANG["validation_invalid_custom_from_email"] = "Anna kelvollinen Custom "Valitse" sähköpostiosoite."; +$LANG["validation_invalid_custom_reply_to_email"] = "Anna kelvollinen Custom "Reply-to-sähköpostiosoitteeseen."; +$LANG["validation_invalid_default_sessions_timeout"] = "Anna kelvollinen arvo (numero) on oletusarvoisesti istuntojen aikakatkaisu."; +$LANG["validation_invalid_email"] = "Anna voimassa oleva sähköpostiosoite."; +$LANG["validation_invalid_email_id"] = "Anteeksi, että on Virheellinen sähköpostiosoite tunnus."; +$LANG["validation_invalid_folder"] = "Anteeksi, tämä ei näytä olevan kelvollinen kansio."; +$LANG["validation_invalid_form_field_names"] = "Lomakkeen kentät voi vain aakkosnumeerisia ja korostaa (AZ, 0-9, _), ilman välilyöntejä."; +$LANG["validation_invalid_num_clients_per_page"] = "Ole hyvä vain kirjoittaa numeroita Num Asiakkaat Per Page kenttään."; +$LANG["validation_invalid_num_emails_per_page"] = "Ole hyvä vain anna numeroa sähköpostia per sivu."; +$LANG["validation_invalid_num_form_fields"] = "Ole hyvä kirjoittaa vain numeroita kenttien määrä kenttään."; +$LANG["validation_invalid_num_forms_per_page"] = "Ole hyvä vain kirjoittaa numeroita Num Lomakkeet Per Page kenttään."; +$LANG["validation_invalid_num_menus_per_page"] = "Ole hyvä vain anna numeroa valikoihin per sivu."; +$LANG["validation_invalid_num_modules_per_page"] = "Ole hyvä vain kirjoittaa numeroita Num Moduulit Per Page kenttään."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Ole hyvä kirjoittaa vain numeroita Num asetusvalikkoon Per sivukentän."; +$LANG["validation_invalid_num_submissions_per_page"] = "Anna voimassa useita huomautuksia sivulla."; +$LANG["validation_invalid_sessions_timeout"] = "Anna kelvollinen istunnon aikakatkaisu (kokonaisluvut vain!)."; +$LANG["validation_invalid_tab_assign_values"] = "Ole hyvä vain kirjoittaa numeroita "alkaen" ja "-kenttiin."; +$LANG["validation_invalid_table_prefix"] = "Anna tietokannan etuliite muodostuu kirjaimen ja alaviivan vain."; +$LANG["validation_invalid_upload_folder"] = "Palvelimen asennus PHP on virheellinen puitteet upload_tmp_dir arvon. "{\$upload_folder}" ei ole kelvollinen kansio."; +$LANG["validation_invalid_url"] = "Anna kelvollinen URL-osoite."; +$LANG["validation_invalid_username"] = "Käyttäjätunnus voi koostua vain aakkosnumeerisia merkkejä (A ja 0-9)."; +$LANG["validation_is_form_active"] = "Ilmoittakaa, onko lomake käytössä vai ei."; +$LANG["validation_menu_name_taken"] = "Anteeksi, tämä valikko nimi on jo varattu. Ole hyvä ja valitse uusi nimi."; +$LANG["validation_modules_search_no_status"] = "Valitse joko Enabled tai Disabled valintaruutuja."; +$LANG["validation_no_access_type"] = "Anna pääsy tyyppi."; +$LANG["validation_no_account_logout_url"] = "Syötä logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Anna uudelleen uuden salasanan."; +$LANG["validation_no_account_password_confirmed2"] = "Anna uudelleen uusi salasana."; +$LANG["validation_no_admin_email"] = "Anna järjestelmänvalvojan sähköpostiosoite."; +$LANG["validation_no_admin_theme"] = "Valitse teema järjestelmänvalvojan tili."; +$LANG["validation_no_admin_theme_swatch"] = "Valitse Swatch järjestelmänvalvojan teema."; +$LANG["validation_no_client_email"] = "Anna asiakkaan sähköpostiosoite."; +$LANG["validation_no_client_first_name"] = "Anna asiakkaan etunimi."; +$LANG["validation_no_client_last_name"] = "Anna asiakkaan sukunimi."; +$LANG["validation_no_client_login_page"] = "Ilmoittakaa, millä sivulla asiakkaan olisi suunnattava uudelleen, kun he kirjautuvat sisään"; +$LANG["validation_no_client_password"] = "Anna asiakkaan salasanan."; +$LANG["validation_no_client_theme_swatch"] = "Valitse oletuksena Swatch asiakkaan tilit."; +$LANG["validation_no_client_username"] = "Syötä asiakkaan käyttäjätunnus."; +$LANG["validation_no_column_name"] = "Anna kaikki sarakkeen nimet, tai valitse Smart Täytä painiketta automaattisesti täyttää ne."; +$LANG["validation_no_column_selected"] = "Valitse ainakin yksi kenttä näkyy sarakkeessa mukaan listalle sivulla."; +$LANG["validation_no_custom_from_email"] = "Anna Custom "From" sähköpostiosoite."; +$LANG["validation_no_custom_recipient_email"] = "Anna Custom vastaanottajan sähköpostiosoite."; +$LANG["validation_no_custom_reply_to_email"] = "Anna Custom "Reply-to-sähköpostiosoitteeseen."; +$LANG["validation_no_date_format"] = "Anna päivämäärä muodossa."; +$LANG["validation_no_db_column_single"] = "Anna tietokannan sarakkeen nimeä."; +$LANG["validation_no_db_hostname"] = "Anna tietokannan palvelimen nimi."; +$LANG["validation_no_db_name"] = "Anna tietokannan nimi."; +$LANG["validation_no_db_username"] = "Anna tietokannan tilin käyttäjänimi."; +$LANG["validation_no_default_client_theme"] = "Valitse oletusteema kaikille uusille asiakkailleen."; +$LANG["validation_no_default_language"] = "Valitse oletuskieli asennus lomakkeen Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Anna oletus istunnon aikakatkaisu käyttäjien tilejä."; +$LANG["validation_no_display_text"] = "Anna näkyy teksti kullekin kenttään."; +$LANG["validation_no_display_text_single"] = "Anna näyttötekstien arvo."; +$LANG["validation_no_edit_submission_page_label"] = "Anna Muokkaa lähetyssivulla etiketissä."; +$LANG["validation_no_email"] = "Anna sähköpostiosoitteesi."; +$LANG["validation_no_email_config_field"] = "Please, mitkä ovat kentän email-kenttään."; +$LANG["validation_no_email_content"] = "Anna sähköpostien sisällön ainakin yksi muodossa (HTML tai teksti)."; +$LANG["validation_no_email_from_field"] = "Please email "alkaen"-kenttään."; +$LANG["validation_no_email_template_name"] = "Anna sähköpostiosoite mallin nimi."; +$LANG["validation_no_email_template_view_id"] = "Valitse Näytä, johon tämä sähköpostimalli olisi kartoitettava."; +$LANG["validation_no_email_template_view_mapping_value"] = "Ilmoittakaa jos sähköposti lähetetään."; +$LANG["validation_no_enabled_themes"] = "Varmista, että ainakin yksi teema on käytössä."; +$LANG["validation_no_first_name"] = "Syötä etunimi."; +$LANG["validation_no_form_field_name"] = "Anna kaikki lomakkeen kenttien nimiä."; +$LANG["validation_no_form_field_single"] = "Anna Lomakekentän arvo."; +$LANG["validation_no_form_id"] = "Muodossa ID ei ole määritelty. Kirjaudu ulos ja yritä uudelleen."; +$LANG["validation_no_form_name"] = "Anna lomakkeen nimi."; +$LANG["validation_no_form_url"] = "Anna lomakkeen URL-osoite."; +$LANG["validation_no_last_name"] = "Anna sukunimesi."; +$LANG["validation_no_login_page"] = "Ilmoittakaa joka sivulla haluat lähettää joka kerta kun kirjaudut sisään"; +$LANG["validation_no_logout_url"] = "Anna logout URL."; +$LANG["validation_no_main_email_recipient"] = "Anna vähintään yksi tärkeimmistä sähköpostin vastaanottajan (eli ei Kopio tai Piilokopio)."; +$LANG["validation_no_menu"] = "Valitse valikosta tämän käyttäjän tilin."; +$LANG["validation_no_menu_id"] = "Valitse valikosta."; +$LANG["validation_no_num_clients_per_page"] = "Anna määrä asiakastileistä sivulla."; +$LANG["validation_no_num_emails_per_page"] = "Anna sähköpostiviestien määrä on lista sivulla."; +$LANG["validation_no_num_form_fields"] = "Syötä määrä kenttiä lomakkeeseen."; +$LANG["validation_no_num_forms_per_page"] = "Anna lomakkeiden määrää sivulla."; +$LANG["validation_no_num_menus_per_page"] = "Syötä määrä valikot luettelon sivulla."; +$LANG["validation_no_num_modules_per_page"] = "Anna moduulien lukumäärän sivulla."; +$LANG["validation_no_num_option_lists_per_page"] = "Anna Optio luetteloiden per sivu."; +$LANG["validation_no_num_submissions_per_page"] = "Syötä määrä huomautuksia näyttää sivulla."; +$LANG["validation_no_option_list_name"] = "Anna vaihtoehto listan nimi."; +$LANG["validation_no_page_titles"] = "Anna oletuksena sivun otsikot käyttäjätunnukset."; +$LANG["validation_no_password"] = "Syötä salasana."; +$LANG["validation_no_program_name"] = "Anna ohjelman nimi."; +$LANG["validation_no_second_password"] = "Anna uudelleen salasanasi."; +$LANG["validation_no_sessions_timeout"] = "Anna istunnon aikakatkaisun."; +$LANG["validation_no_smart_fill_values"] = "Anna lomakkeen kentän nimi ja URL-muotoa."; +$LANG["validation_no_table_prefix"] = "Anna tietokannan etuliite."; +$LANG["validation_no_tabs_defined"] = "No tabs määritelty"; +$LANG["validation_no_test_email_recipient"] = "Anna sähköpostiosoite, jos meidän pitäisi lähettää testi sähköpostia."; +$LANG["validation_no_test_email_submission_id"] = "Anna jättämisen tunnus."; +$LANG["validation_no_theme"] = "Valitse teema."; +$LANG["validation_no_theme_swatch"] = "Valitse Swatch valittua teemaa."; +$LANG["validation_no_timezone_offset"] = "Anna aikavyöhyke offset."; +$LANG["validation_no_titles"] = "Anna sivun otsikot."; +$LANG["validation_no_two_column_names"] = "Anteeksi, et voi kirjoittaa samaan tietokantaan sarakkeen nimeä kahdesti."; +$LANG["validation_no_ui_language"] = "Valitse kieli liitäntä."; +$LANG["validation_no_url"] = "Anna URL-osoite."; +$LANG["validation_no_username"] = "Syötä käyttäjätunnuksesi."; +$LANG["validation_no_username_or_js"] = "Sinun täytyy syöttää käyttäjätunnus. Aktivoi Javascript in your browser."; +$LANG["validation_no_view_fields"] = "Näkymää ei ole mitään kenttiä! Sinun täytyy varata ainakin yksi kenttä, että on jotain, näkyvät View."; +$LANG["validation_no_view_fields_selected"] = "Valitse yksi tai useampi kenttä lisätä View."; +$LANG["validation_no_view_name"] = "Anna nimi mieltä."; +$LANG["validation_num_rows_to_add"] = "Anna rivien määrää lisätä."; +$LANG["validation_option_list_name_taken"] = "Anteeksi, tämä vaihtoehto listan nimi on jo varattu. Valitse uusi nimi."; +$LANG["validation_password_in_password_history"] = "Turvallisuussyistä et voi kirjoittaa sama salasana kuin jokin viimeisen {\$history_size} salasanoja. Anna uusi salasana."; +$LANG["validation_passwords_different"] = "Varmista, että salasanat ovat samat."; +$LANG["validation_please_enter_search_date_range"] = "Valitse hakuun ajanjaksoon."; +$LANG["validation_please_enter_search_keyword"] = "Syötä Hakusana."; +$LANG["validation_select_field_type"] = "Valitse Kentän tyyppi."; +$LANG["validation_select_submissions_to_copy"] = "Valitse ne kommentit, jotka haluat kopioida."; +$LANG["validation_select_submissions_to_delete"] = "Valitse ne väitteet, jonka haluat poistaa."; +$LANG["validation_smart_fill_cannot_fill"] = "Olemme pahoillamme, emme voi täyttää tällä alalla."; +$LANG["validation_smart_fill_invalid_field_type"] = "Emme pystyneet paikantamaan kenttään, mutta se ei ole avattavaa, valintaruutu tai radio-ryhmä."; +$LANG["validation_smart_fill_no_field_found"] = "Olemme pahoillamme, mutta emme löytäneet lomakkeen kentän kanssa nimen sivulla määritelty."; +$LANG["validation_smart_fill_no_page"] = "Ole hyvä ja etsi sivu, joka sisältää alan haluat Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Lataa kaikki sivujen muodossa."; +$LANG["validation_upload_folder_not_writable"] = "Tämä väliaikainen Siirrä kansioon määritelty PHP asennus ei ole kirjoitettavissa. Kunnes vika on korjattu, tiedostoja ei voi ladata kautta muoto Tools (tai muu PHP-ohjelma). Ota yhteyttä palveluntarjoajaasi."; +$LANG["validation_upload_html_files_only"] = "Lähetä vain HTML-tiedostoja."; +$LANG["validation_username_taken"] = "Anteeksi, että käyttäjätunnus on jo varattu. Anna toinen käyttäjätunnus."; +$LANG["validation_wrong_password"] = "Anteeksi, että salasana ei täsmää."; +$LANG["word_about"] = "Lisää"; +$LANG["word_access"] = "Avaa"; +$LANG["word_account"] = "Tili"; +$LANG["word_account_sp"] = "Tili(t)"; +$LANG["word_accounts"] = "Tilit"; +$LANG["word_action"] = "Toiminto"; +$LANG["word_active"] = "Aktiivinen"; +$LANG["word_add"] = "Lisää"; +$LANG["word_add_rightarrow"] = "Lisää »"; +$LANG["word_add_uc_rightarrow"] = "LISÄÄ »"; +$LANG["word_administration"] = "Järjestelmänvalvonta"; +$LANG["word_administrator"] = "Järjestelmänvalvoja"; +$LANG["word_after"] = "Jälkeen"; +$LANG["word_aquamarine"] = "Akvamariini"; +$LANG["word_asc"] = "Aakkosjärjestys"; +$LANG["word_author"] = "Kirjoittaja"; +$LANG["word_author_c"] = "Kirjoittaja:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« takaisin"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Ennen"; +$LANG["word_benefits"] = "Hyödyt"; +$LANG["word_blue"] = "Sininen"; +$LANG["word_cancel"] = "Peruuta"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Valintaruudut"; +$LANG["word_checklist"] = "Tarkistuslista"; +$LANG["word_client"] = "Asiakas"; +$LANG["word_client_c"] = "Asiakas:"; +$LANG["word_clients"] = "Asiakkaat"; +$LANG["word_close"] = "Sulje"; +$LANG["word_code"] = "Koodi"; +$LANG["word_column"] = "Kolumni"; +$LANG["word_columns"] = "Sarakkeet"; +$LANG["word_columns_sp"] = "Sarake (s)"; +$LANG["word_complete"] = "Valmis"; +$LANG["word_configuration"] = "Asetukset"; +$LANG["word_content"] = "Sisältö"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Jatka »"; +$LANG["word_copy"] = "Kopio"; +$LANG["word_custom"] = "Muokattu"; +$LANG["word_data"] = "Tiedot"; +$LANG["word_date"] = "Päiväys"; +$LANG["word_debugging_c"] = "Debuggaus:"; +$LANG["word_delete"] = "Poista"; +$LANG["word_desc"] = "käänteinen järjestys"; +$LANG["word_direct"] = "Suora"; +$LANG["word_disabled"] = "Pois käytöstä"; +$LANG["word_documentation"] = "Dokumentointi"; +$LANG["word_done"] = "Tehty"; +$LANG["word_drawbacks"] = "Huonot puolet"; +$LANG["word_dropdown"] = "Alasveto"; +$LANG["word_edit"] = "Muokkaa"; +$LANG["word_editable"] = "Muokattava"; +$LANG["word_email"] = "Sähköposti"; +$LANG["word_email_c"] = "Sähköposti:"; +$LANG["word_emails"] = "Sähköpostit"; +$LANG["word_enabled"] = "Päällä"; +$LANG["word_equals"] = "Yhtäsuuri"; +$LANG["word_error"] = "Virhe"; +$LANG["word_error_c"] = "Virhe:"; +$LANG["word_examples_c"] = "Esimerkit:"; +$LANG["word_external"] = "Ulkoinen"; +$LANG["word_fail"] = "Virhe"; +$LANG["word_field"] = "Kenttä"; +$LANG["word_field_sp"] = "Kentät"; +$LANG["word_fields"] = "Kentät"; +$LANG["word_fields_sp"] = "Field (s)"; +$LANG["word_file"] = "Tiedosto"; +$LANG["word_file_b_uc"] = "[TIEDOSTO]"; +$LANG["word_files"] = "Tiedostot"; +$LANG["word_filters"] = "Suotimet"; +$LANG["word_filters_sp"] = "Suodatin (s)"; +$LANG["word_for"] = "kohteesta"; +$LANG["word_form"] = "Lomake"; +$LANG["word_form_c"] = "Lomake:"; +$LANG["word_formatting"] = "Muotoilu"; +$LANG["word_forms"] = "Lomakkeet"; +$LANG["word_found"] = "Löytynyt"; +$LANG["word_from"] = "Lähettäjä"; +$LANG["word_from_c"] = "Lähettäjä:"; +$LANG["word_general"] = "Yleinen"; +$LANG["word_green"] = "Vihreä"; +$LANG["word_grey"] = "Harmaa"; +$LANG["word_height"] = "Korkeus"; +$LANG["word_help"] = "Apua"; +$LANG["word_hidden"] = "Kätketty"; +$LANG["word_highlight"] = "Kohokohta"; +$LANG["word_horizontal"] = "Vaaka"; +$LANG["word_hour"] = "Tunti"; +$LANG["word_hours"] = "Tunnit"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Kuva"; +$LANG["word_incomplete"] = "Keskeneräinen"; +$LANG["word_install"] = "Asenna"; +$LANG["word_installation"] = "Asennus"; +$LANG["word_internal"] = "Sisäinen"; +$LANG["word_language"] = "Kieli"; +$LANG["word_large"] = "Suuri"; +$LANG["word_like"] = "Kuten"; +$LANG["word_login"] = "Kirjaudu"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Kirjaudu ulos"; +$LANG["word_main"] = "Perus"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Valikko"; +$LANG["word_menus"] = "Valikot"; +$LANG["word_minutes"] = "minuutit"; +$LANG["word_misc"] = "Sekalaiset"; +$LANG["word_module"] = "Moduuli"; +$LANG["word_modules"] = "Moduulit"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Nimi"; +$LANG["word_name_c"] = "Nimi:"; +$LANG["word_never"] = "Ei koskaan"; +$LANG["word_next_rightarrow"] = "Seuraava »"; +$LANG["word_next_step_rightarrow"] = "Seuraava vaihe »"; +$LANG["word_no"] = "Ei"; +$LANG["word_none"] = "Ei mitään"; +$LANG["word_notes"] = "Huomauttaa"; +$LANG["word_notification"] = "Ilmoituksessa"; +$LANG["word_number"] = "Numerolla"; +$LANG["word_off"] = "Pois"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okei"; +$LANG["word_on"] = "Päällä"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Toiminnanharjoittajan"; +$LANG["word_options"] = "Valinnat"; +$LANG["word_orange"] = "Oranssi"; +$LANG["word_order"] = "Tilata"; +$LANG["word_other"] = "Muu"; +$LANG["word_other_c"] = "Muut:"; +$LANG["word_page"] = "Sivusta"; +$LANG["word_page_c"] = "Sivulle:"; +$LANG["word_pass"] = "Kulkevat"; +$LANG["word_password"] = "Salasanasi"; +$LANG["word_password_c"] = "Salasana:"; +$LANG["word_pending"] = "Odottava"; +$LANG["word_permissions"] = "Permissions"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«edellinen"; +$LANG["word_private"] = "Yksityistä"; +$LANG["word_public"] = "Julkisia"; +$LANG["word_purple"] = "Violetti"; +$LANG["word_recipient"] = "Saajan"; +$LANG["word_recipient_sp"] = "Vastaanottaja (t)"; +$LANG["word_red"] = "Punainen"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Poistaa"; +$LANG["word_remove_uc_leftarrow"] = "«poista"; +$LANG["word_reply_to"] = "Vastausosoite"; +$LANG["word_reply_to_c"] = "Vastausosoitteen"; +$LANG["word_required"] = "Pakollinen"; +$LANG["word_reset"] = "Nollataan"; +$LANG["word_resolved"] = "Ratkaistua"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rivi"; +$LANG["word_search"] = "Haku"; +$LANG["word_searchable"] = "Etsittävät"; +$LANG["word_select"] = "Valitse"; +$LANG["word_setting"] = "Asetus"; +$LANG["word_settings"] = "Asetuksista"; +$LANG["word_show"] = "Näyttää"; +$LANG["word_size"] = "Koko"; +$LANG["word_skipped"] = "Ohitettiin"; +$LANG["word_small"] = "Pienet"; +$LANG["word_solution"] = "Ratkaisu"; +$LANG["word_sortable"] = "Lajitella"; +$LANG["word_start"] = "Alkaa"; +$LANG["word_status"] = "Tila"; +$LANG["word_string"] = "Merkkijonoa"; +$LANG["word_subject"] = "Aihe"; +$LANG["word_subject_c"] = "Aihe"; +$LANG["word_submenu"] = "Alivalikon"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Näkökannat"; +$LANG["word_system"] = "Järjestelmästä"; +$LANG["word_tab"] = "Välilehti"; +$LANG["word_tabs"] = "Välilehdistä"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Testi"; +$LANG["word_text"] = "Tekstiin"; +$LANG["word_textarea"] = "Tekstilaatikon"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Theme"; +$LANG["word_themes"] = "Aihealueiden"; +$LANG["word_time"] = "Aika"; +$LANG["word_tiny"] = "Pikkuruinen"; +$LANG["word_tips"] = "Vihjeitä"; +$LANG["word_today"] = "Tänään"; +$LANG["word_truncate_q"] = "Katkaista?"; +$LANG["word_uninstall"] = "Poistat"; +$LANG["word_unknown"] = "Tuntematon"; +$LANG["word_update"] = "Päivittää"; +$LANG["word_upgrade"] = "Päivityksen"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Käyttäjien"; +$LANG["word_username"] = "Käyttäjätunnuksella"; +$LANG["word_username_c"] = "Käyttäjätunnus:"; +$LANG["word_validation"] = "Validation"; +$LANG["word_value"] = "Arvo"; +$LANG["word_value_sp"] = "Arvo (s)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Todentaa"; +$LANG["word_version"] = "Versiota"; +$LANG["word_vertical"] = "Pystysuoran"; +$LANG["word_view"] = "Näytä"; +$LANG["word_views"] = "Näkemyksiä"; +$LANG["word_warning"] = "Varoitus"; +$LANG["word_warning_c"] = "Varoitus:"; +$LANG["word_web"] = "Höyty"; +$LANG["word_welcome"] = "Tervetuloa!"; +$LANG["word_width_c"] = "leveys:"; +$LANG["word_words"] = "Sanat"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Keltainen"; +$LANG["word_yes"] = "Kyllä"; \ No newline at end of file diff --git a/global/lang/fr.php b/global/lang/fr.php new file mode 100644 index 00000000..956816fe --- /dev/null +++ b/global/lang/fr.php @@ -0,0 +1,1219 @@ +Attention! Vous avez choisi {\$num_selected_on_page} mémoires sur cette page et {\$num_selected_on_other_pages} sur d'autres pages. S'il vous plaît choisir l'une des options suivantes:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Attention! Vous n'avez pas encore sélectionné mémoires sur cette page, mais vous avez sélectionné {\$num_selected_on_other_pages} sur d'autres pages. S'il vous plaît confirmer que vous souhaitez supprimer ces arguments.
    "; +$LANG["confirm_delete_view"] = "Etes-vous sûr de vouloir supprimer cet avis?"; +$LANG["confirm_refresh_page"] = "Etes-vous sûr de vouloir actualiser la page? Cette perdrez toutes les modifications que vous avez fait."; +$LANG["confirm_save_change_before_redirect"] = "Un ou plusieurs champs ont été mis à jour. Voulez-vous enregistrer vos modifications avant de rediriger?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Êtes-vous sûr de vouloir Smart Remplissez les noms des colonnes de base de données? Cela va écraser vos valeurs existantes."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Cette option d'auto-génère les noms des colonnes de données basé sur les champs de texte d'affichage, de sorte que le contenu de la table de base sont faciles à lire."; +$LANG["confirm_smart_fill_display_names"] = "Êtes vous sûr de vouloir auto-générer les noms? Ceci aura pour effet d'écraser les valeurs existantes."; +$LANG["confirm_ungroup_option_list"] = "Etes-vous sûr de vouloir dissocier de cette liste d'option? Toutes les options seront regroupés dans une seule liste non groupée."; +$LANG["confirm_uninstall_module"] = "Êtes-vous sûr de vouloir désinstaller ce module? Toutes les données module sera perdu."; +$LANG["date_AM"] = "am"; +$LANG["date_Fri"] = "Ven"; +$LANG["date_Friday"] = "Vendredi"; +$LANG["date_Mon"] = "Lun"; +$LANG["date_Monday"] = "Lundi"; +$LANG["date_PM"] = "pm"; +$LANG["date_Sat"] = "Sam"; +$LANG["date_Saturday"] = "Samedi"; +$LANG["date_Sun"] = "Dim"; +$LANG["date_Sunday"] = "Dimanche"; +$LANG["date_Thu"] = "Jeu"; +$LANG["date_Thursday"] = "Jeudi"; +$LANG["date_Tue"] = "Mar"; +$LANG["date_Tuesday"] = "Mardi"; +$LANG["date_Wed"] = "Mer"; +$LANG["date_Wednesday"] = "Mercredi"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Avril"; +$LANG["date_month_August"] = "Août"; +$LANG["date_month_December"] = "Décembre"; +$LANG["date_month_February"] = "Février"; +$LANG["date_month_January"] = "Janvier"; +$LANG["date_month_July"] = "Juillet"; +$LANG["date_month_June"] = "Juin"; +$LANG["date_month_March"] = "Mars"; +$LANG["date_month_May"] = "Mai"; +$LANG["date_month_November"] = "Novembre"; +$LANG["date_month_October"] = "Octobre"; +$LANG["date_month_September"] = "Septembre"; +$LANG["date_month_short_Apr"] = "Avr"; +$LANG["date_month_short_Aug"] = "Aou"; +$LANG["date_month_short_Dec"] = "Déc"; +$LANG["date_month_short_Feb"] = "Fev"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Juil"; +$LANG["date_month_short_Jun"] = "Juin"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Mai"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Oct"; +$LANG["date_month_short_Sep"] = "Sep"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Le compte utilisateur a été supprimé."; +$LANG["notify_account_updated"] = "Votre compte a bien été mis à jour."; +$LANG["notify_add_display_values"] = "Ajouter afficher des valeurs"; +$LANG["notify_admin_menu_updated"] = "Le menu d'administration a été mis à jour."; +$LANG["notify_admin_theme_overridden"] = "Thème de l'administrateur a été remplacé manuellement."; +$LANG["notify_allow_url_fopen_not_set"] = "Désolé, cet essai ne peut être exécuté sur votre serveur web. Elle exige allow_url_fopen à être mis à 1 dans votre fichier php.ini. Ce paramètre permet à PHP d'accéder à des fichiers via une URL, qui est nécessaire pour exécuter ce test. Vous pouvez le tester manuellement en téléchargeant un fichier dans ce dossier via FTP, puis tenter d'y accéder à l'URL que vous avez fournis."; +$LANG["notify_change_temp_password"] = "Vous vient de se connecter avec un mot de passe temporaire. Vous devez réinitialiser votre mot de passe maintenant!"; +$LANG["notify_click_to_edit_new_submission"] = "Cliquez ici pour modifier la nouvelle soumission."; +$LANG["notify_client_account_menus_updated"] = "Le compte client (s) ont été mis à jour le fichier menu. Vous mai maintenant supprimer le menu qui était auparavant associée au compte (s)."; +$LANG["notify_client_account_not_updated"] = "Le compte gestionnaire ne peut pas être mis à jour."; +$LANG["notify_client_account_themes_updated"] = "Le compte client (s) ont été mis à jour le fichier {\$theme} thème. Vous mai maintenant désactiver le thème précédemment associée au compte (s)."; +$LANG["notify_client_account_updated"] = "Le compte gestionnaire a bien été mis à jour."; +$LANG["notify_client_menu_deleted"] = "Le menu du client a été supprimée."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Le menu a été supprimé, mais les comptes des clients suivants ne disposent plus de un menu! Vous devez mettre à jour les comptes suivants:"; +$LANG["notify_client_menu_updated"] = "Le menu du client a été mis à jour."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Désolé, le menu que vous venez juste essayé de supprimer est déjà utilisé par les clients de la liste ci-dessous. Afin de supprimer le menu, vous devez d'abord assigner les clients à d'autres menus. Cliquez sur le nom du client de modifier ce compte individuel, ou de céder tous les comptes à un menu différent en utilisant le menu déroulant ci-dessous."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Désolé, l'un des thèmes que vous venez de handicapés sont déjà utilisées par les comptes des clients suivants. Pour désactiver le thème que vous aurez d'abord besoin d'assigner à chaque client d'un autre thème. Cliquez sur le nom du client de modifier ce compte individuel, ou de céder tous les comptes à un thème en utilisant le menu déroulant ci-dessous."; +$LANG["notify_edit_email_fields_link"] = "Cliquez ici pour spécifier les champs du formulaire sont les champs e-mail, vous pouvez donc les cibler dans vos modèles de courrier électronique."; +$LANG["notify_edit_field_new_field"] = "Ceci est un nouveau champ. Vous aurez besoin de mettre à jour la page principale avant de pouvoir totalement modifier ce champ."; +$LANG["notify_edit_option_list_after_save"] = "Vous devez sélectionner une liste d'options puis sur Enregistrer les modifications avant de pouvoir l'éditer."; +$LANG["notify_email_field_config_deleted"] = "La configuration e-mail a été supprimée."; +$LANG["notify_email_fields_not_updated"] = "Désolé, nous n'avons pas pu mettre à jour les champs e-mail."; +$LANG["notify_email_fields_updated"] = "Les champs de courriel ont été mis à jour."; +$LANG["notify_email_not_sent"] = "Désolé, l'email ne peut pas être envoyé. Merci de contacter l'administrateur du site à l'adresse suivante."; +$LANG["notify_email_not_sent_c"] = "Désolé, l'e-mail n'a pas pu être envoyé:"; +$LANG["notify_email_sent"] = "L'e-mail (s) ont été envoyés."; +$LANG["notify_email_template_deleted"] = "Le Modèle de courrier électronique a été supprimée."; +$LANG["notify_email_template_updated"] = "Le Modèle de courrier électronique a été mis à jour."; +$LANG["notify_enabled_module_list_updated"] = "La liste des modules activés a été mis à jour."; +$LANG["notify_error_saving_fields"] = "Il y avait une erreur d'économie dans les champs."; +$LANG["notify_field_changes_saved"] = "Les modifications apportées à votre domaine (s) ont été sauvés."; +$LANG["notify_field_options_smart_filled"] = "Vos options de terrain ont été intelligente Rempli."; +$LANG["notify_field_selected"] = "Le champ a été sélectionné. Cliquez ici pour retourner à la liste des champs principaux."; +$LANG["notify_field_updated"] = "Ce champ a été mis à jour."; +$LANG["notify_file_not_uploaded"] = "Le fichier ne peut pas être envoyé."; +$LANG["notify_file_uploaded"] = "Le fichier a bien été envoyé."; +$LANG["notify_filters_not_updated"] = "Il ya eu une erreur de mise à jour des filtres de présentation de ce client."; +$LANG["notify_filters_updated"] = "Le filtre de soumission a été mis à jour pour ce gestionnaire."; +$LANG["notify_folder_correct_permissions"] = "Ce répertoire a les bonnes permissions."; +$LANG["notify_folder_url_match"] = "Le répertoire et l'URL semblent correspondre."; +$LANG["notify_folder_url_no_access"] = "Ce test ne peut pas être exécuté tant que PHP ne peut accéder à l'URL. Ceci est habituellement du à une URL protégée par mot de passe dans un fichier .htaccess."; +$LANG["notify_folder_url_no_match"] = "La combinaison Répertoire-URL ne semble pas correspondre."; +$LANG["notify_folder_url_unknown_error"] = "Une erreur inconnue s'est produite. Vous pouvez tester manuellement en envoyant un fichier via FTP, puis en essayant d'y accéder par l'URL que vous avez fourni."; +$LANG["notify_form_access_type_email_info"] = "Cette forme a le type d'accès administrateur, donc pas de clients ont accès à elle et ne sont pas énumérés ci-dessous dans le menu déroulant."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Désolé, un formulaire avec cet ID n'existe pas."; +$LANG["notify_form_field_not_added"] = "Le champ du formulaire '{\$fieldname}' ne peut être ajouté."; +$LANG["notify_form_field_options_updated"] = "Les options champs du formulaire ont été mises à jour."; +$LANG["notify_form_field_removed"] = "Le champ de formulaire a été supprimé."; +$LANG["notify_form_fields_removed"] = "Les champs de formulaire ont été supprimés."; +$LANG["notify_form_not_updated_notify_admin"] = "Votre formulaire ne peut pas être mis à jour. Merci de rapporter ce problème à l'administrateur du site."; +$LANG["notify_form_settings_updated"] = "Vos paramètres de formulaire ont été mis à jour."; +$LANG["notify_form_submission_updated"] = "La soumission de formulaire a été mise à jour."; +$LANG["notify_form_tabs_updated"] = "Les onglets ont été mis à jour."; +$LANG["notify_form_updated"] = "Le formualire a bien été mis à jour."; +$LANG["notify_form_views_updated"] = "Les vues du formulaire ont été mis à jour."; +$LANG["notify_install_invalid_db_info"] = "Désolé, nous n'avons pas pu vous connecter à la base de données en utilisant les informations fournies. Le message d'erreur renvoyé est la base de données: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Votre formulaire a été créé! Vous pouvez configurer votre formulaire par le biais de ces onglets."; +$LANG["notify_invalid_account_information_in_sessions"] = "Les informations de compte stockés dans les sessions n'est pas valide. S'il vous plaît vous connecter à nouveau ci-dessous."; +$LANG["notify_invalid_license_key"] = "Désolé, cela ne semble pas être une clé de licence valide. S'il vous plaît essayer d'entrer à nouveau."; +$LANG["notify_invalid_permissions"] = "Vous n'avez pas les autorisations pour accéder à cette page. Vous avez été déconnecté."; +$LANG["notify_invalid_search_dates"] = "S'il vous plaît utiliser le sélecteur de date pour entrer une date valide ou des dates."; +$LANG["notify_invalid_upload_folder"] = "Le dossier de téléchargement n'est pas valide ou n'est pas inscriptible."; +$LANG["notify_lang_list_updated"] = "La liste des langues disponibles pour l'interface utilisateur a été mise à jour."; +$LANG["notify_login_info_emailed"] = "Vos informations de connexion vous ont été envoyées."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oups, ce module est déjà installé!"; +$LANG["notify_module_installed"] = "Le module a été installé. Cliquez ici pour sélectionner le module."; +$LANG["notify_module_list_updated"] = "La liste module a été mis à jour."; +$LANG["notify_module_uninstalled"] = "Le module a été désinstallée."; +$LANG["notify_module_updated"] = "Le module {\$module} a été mis à jour {\$version}. Cliquez ici pour sélectionner le module ."; +$LANG["notify_multi_field_selected"] = "Le champ a été sélectionné. Cliquez ici pour afficher et modifier les options de champ."; +$LANG["notify_multi_field_updated"] = "Ce champ a été mis à jour. Vous serez en mesure de configurer les options de champ après la configuration du formulaire."; +$LANG["notify_multiple_fields_found"] = "Plusieurs éléments ont été trouvés avec ce nom de champ ({\$field_name}). Cela peut se produire si votre page contient plus d'un formulaire ou si vous avez accidentellement nommé l'un de vos formulaires le même que l'autre. S'il vous plaît choisir celui que vous souhaitez dans la liste ci-dessous."; +$LANG["notify_new_default_view_created"] = "Une nouvelle vue par défaut, contenant tous vos champs de formulaire a été créé."; +$LANG["notify_new_submission_created"] = "La présentation a été créée. Vous pouvez le modifier ci-dessous."; +$LANG["notify_no_account_id_in_sessions"] = "Aucun compte d'utilisateur ID n'a été trouvée dans les sessions. S'il vous plaît vous connecter à nouveau ci-dessous."; +$LANG["notify_no_api_installed"] = "Vous n'avez pas installé l'API"; +$LANG["notify_no_client_permissions"] = "Il n'ya pas de réglages disponibles à modifier."; +$LANG["notify_no_email_template_selected"] = "S'il vous plaît sélectionner le modèle de courrier électronique."; +$LANG["notify_no_emails_defined"] = "No emails ont été définis pour ce formulaire. Pour ajouter un nouveau, cliquez sur le bouton ci-dessous."; +$LANG["notify_no_field_settings"] = "Ce type de champ ne contient pas de paramètres supplémentaires."; +$LANG["notify_no_fields_in_tab"] = "Cet onglet ne contient pas de champs."; +$LANG["notify_no_option_lists"] = "Il n'y a pas l'option des listes définies. Cliquez sur le bouton ci-dessous pour créer un nouveau."; +$LANG["notify_no_test_submission"] = "Outils de formulaire n'a pas reçu une demande d'essai réussi pour le moment."; +$LANG["notify_no_user_email_fields_configured"] = "Note: si vous voulez envoyer un e-mail à n'importe quelle adresse e-mail qui a été inclus dans le formulaire, vous devez d'abord configurer les champs de formulaire d'email."; +$LANG["notify_no_views"] = "Votre formulaire n'a pas Vues mettre en place! Vous aurez besoin d'au moins une vue afin de gérer les données de votre formulaire."; +$LANG["notify_no_views_assigned_to_client_form"] = "Il semble que votre compte d'utilisateur n'a pas été confiée à aucun Vues forme, ainsi vous ne serez pas en mesure de voir toutes les données. S'il vous plaît contactez l'administrateur pour plus d'aide."; +$LANG["notify_no_views_defined"] = "Vous n'avez pas vues définies. Vous ne serez pas en mesure de consulter les mémoires ce formulaire, sauf si au moins une vue est créée. Cliquez sur le bouton ci-dessous pour créer la vue par défaut."; +$LANG["notify_option_list_deleted"] = "La liste des options a été supprimé."; +$LANG["notify_option_list_updated"] = "La liste des options a été mis à jour."; +$LANG["notify_public_form_omit_list_updated"] = "Le client omettre liste pour ce formulaire a été mis à jour."; +$LANG["notify_public_view_omit_list_updated"] = "Le client omettre la liste pour cette vue a été mis à jour."; +$LANG["notify_required_admin_pages"] = "Les pages suivantes sont requises dans le menu d'administration: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Désolé, il n'y avait pas d'activité pendant un certain temps et nous avons dû vous vous déconnectez. S'il vous plaît vous connecter à nouveau ci-dessous."; +$LANG["notify_setup_options_updated"] = "Les options de paramètrage ont été mise à jour."; +$LANG["notify_smart_fill_field_not_found"] = "Nous avons été incapables de trouver un champ avec ce nom ({\$field_name}) dans la forme (s) spécifiée. Vous pouvez soit définir manuellement le type de champ ci-dessous, ou cliquez sur le bouton Passer à modifier ce champ plus tard."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Votre fichier (s) ont été envoyées. Essayez de cliquer sur le bouton Smart Fill pour réessayer. Si cette étape échoue, vous aurez besoin pour passer cette étape et configurez vos champs de formulaire manally plus tard."; +$LANG["notify_smart_fill_submitted"] = "Le formulaire a été soumis. En fonction de la taille de votre forme et le nombre d'options de terrain, cette mai prendre un certain temps."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Désolé, un ou plusieurs des fichiers que vous avez entré ne peut être téléchargé. Vous aurez besoin de sauter cette étape et de configurer manuellement les champs."; +$LANG["notify_submission_and_files_deleted"] = "La soumission et le(s) fichier(s) associé(s) a été supprimée."; +$LANG["notify_submission_copied"] = "La soumission a été copiée."; +$LANG["notify_submission_copied_edit"] = "La soumission a été copiée. Vous pouvez le modifier ci-dessous."; +$LANG["notify_submission_deleted"] = "La soumission a été supprimée."; +$LANG["notify_submission_deleted_with_problems"] = "Lasoumission aété supprimée, mais il y a un problème avec le(s) fichier(s) suivant(s):"; +$LANG["notify_submission_id_not_found"] = "L'ID de soumission n'a pas été trouvé."; +$LANG["notify_submission_not_updated"] = "La soumission ne peut pas être mise à jour."; +$LANG["notify_submissions_and_files_deleted"] = "Les soumissions ainsi que le(s) fichier(s) associé(s) ont été supprimés."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} soumissions ont été copiées."; +$LANG["notify_submissions_deleted"] = "Les soumissions ont été supprimées."; +$LANG["notify_submissions_deleted_with_problems"] = "Les soumissions ont été supprimées, mais il y a un problème avec le(s) fichier(s) suivant(s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Votre email de test ne peut pas être envoyé."; +$LANG["notify_theme_cache_folder_not_writable"] = "Dossier de cache de ce thème n'est pas inscriptible. Afin de permettre à ce thème, le {\$folder} dossier doit d'avoir lu plein d'écriture."; +$LANG["notify_theme_list_updated"] = "La liste des thèmes a été mis à jour."; +$LANG["notify_themes_settings_updated"] = "Les paramètres de votre thème ont été mis à jour."; +$LANG["notify_view_deleted"] = "L'opinion a été supprimé."; +$LANG["notify_view_group_deleted"] = "Le groupe View a été supprimée."; +$LANG["notify_view_missing_columns"] = "Oops! Désolé, cette vision n'a pas été entièrement mis en place encore."; +$LANG["notify_view_missing_columns_admin_fix"] = "Cliquez ici pour spécifier quels champs apparaissent comme des colonnes sur cette page."; +$LANG["notify_view_updated"] = "L'opinion a été mis à jour."; +$LANG["notify_your_email_sent"] = "Votre email a bien été envoyé."; +$LANG["phrase_100_per_page"] = "100 par page"; +$LANG["phrase_10_per_page"] = "10 par page"; +$LANG["phrase_15_per_page"] = "15 par page"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 par page"; +$LANG["phrase_25_per_page"] = "25 par page"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 Colonnes"; +$LANG["phrase_2chars"] = "2 caractères"; +$LANG["phrase_3_columns"] = "3 Colonnes"; +$LANG["phrase_4_columns"] = "4 Colonnes"; +$LANG["phrase_50_per_page"] = "50 par page"; +$LANG["phrase_accepting_submissions"] = "(mémoires accepter)"; +$LANG["phrase_access_admin_account_c"] = "Vous pouvez accéder à votre compte d'administration ici :"; +$LANG["phrase_access_type"] = "Type d'accès"; +$LANG["phrase_account_info"] = "Informations sur le compte"; +$LANG["phrase_account_settings"] = "Paramètres du compte"; +$LANG["phrase_action_needed"] = "Action Needed"; +$LANG["phrase_add_client"] = "AJOUT GESTIONNAIRE"; +$LANG["phrase_add_client_menu"] = "Ajouter Client Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Ajouter les paramètres par défaut »"; +$LANG["phrase_add_field"] = "Ajouter un champ"; +$LANG["phrase_add_fields"] = "AJOUT CHAMPS"; +$LANG["phrase_add_fields_rightarrow"] = "Ajouter un champ (s) »"; +$LANG["phrase_add_form"] = "Ajouter formulaire"; +$LANG["phrase_add_form_external"] = "Ajouter un formulaire - Externe"; +$LANG["phrase_add_form_internal"] = "Ajouter un formulaire - Interne"; +$LANG["phrase_add_new_group_rightarrow"] = "Ajouter un nouveau groupe »"; +$LANG["phrase_add_num_rows"] = "Ajoutez {\$number} ligne (s)"; +$LANG["phrase_add_row"] = "Ajouter une ligne »"; +$LANG["phrase_add_submission_button"] = "Ajouter un bouton de soumission"; +$LANG["phrase_add_view_rightarrow"] = "Ajouter Vue »"; +$LANG["phrase_adding_multi_page_form"] = "Ajout d'un formulaire multi-page avec l'API"; +$LANG["phrase_adding_single_page_form"] = "Ajout d'une fiche d'une seule page avec l'API"; +$LANG["phrase_admin_menu"] = "Administrateur Menu"; +$LANG["phrase_admin_only"] = "Administrator Only"; +$LANG["phrase_admin_panel"] = "Panneau d'administration"; +$LANG["phrase_administrator_theme"] = "Administrateur Créateur de Thème"; +$LANG["phrase_advanced_settings_rightarrow"] = "Paramètres »Avancé"; +$LANG["phrase_all_X_results_selected"] = "Tous les {\$numresults} Résultats choisis"; +$LANG["phrase_all_clients"] = "Tous les clients"; +$LANG["phrase_all_clients_except_c"] = "Tous les clients, sauf:"; +$LANG["phrase_all_clients_have_access"] = "(tous les clients ont accès)"; +$LANG["phrase_all_fields"] = "Tous les champs"; +$LANG["phrase_all_fields_displayed"] = "Tous les champs sont affichés"; +$LANG["phrase_all_statuses"] = "Tous les statuts"; +$LANG["phrase_all_submissions"] = "Tous les commentaires"; +$LANG["phrase_allow_fields_edited"] = "Autoriser les champs à éditer"; +$LANG["phrase_alphanumeric"] = "Alphanumériques (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Appliquer décalage horaire"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Attribuer tous inscrits les comptes de clients à {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Attribuer tous inscrits les comptes de clients à {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Jusqu'au bout"; +$LANG["phrase_at_start"] = "Au démarrage"; +$LANG["phrase_author_link"] = "Auteur Lien"; +$LANG["phrase_auto_disable_account"] = "compte autobloquantes après # tentatives de connexion infructueuses"; +$LANG["phrase_auto_size"] = "Auto-taille"; +$LANG["phrase_available_clients"] = "Gestionnaires enregistrés"; +$LANG["phrase_available_fields"] = "Champs disponibles"; +$LANG["phrase_available_option_lists"] = "Listes Option disponible"; +$LANG["phrase_available_swatches"] = "Nuancier Disponible"; +$LANG["phrase_available_swatches_c"] = "Nuancier disponible:"; +$LANG["phrase_available_tabs"] = "Onglets disponibles"; +$LANG["phrase_available_views"] = "Views disponibles"; +$LANG["phrase_awaiting_form_submission"] = "En attente de soumission du formulaire."; +$LANG["phrase_back_to_field_list"] = "«Retour à la zone de liste"; +$LANG["phrase_back_to_search_results"] = "Retour aux résultats"; +$LANG["phrase_base_view_on"] = "Voir la Base de ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Changer Informations de connexion"; +$LANG["phrase_characters_limit_p"] = "caractères limite."; +$LANG["phrase_check_db_settings_try_again"] = "S'il vous plaît vérifiez les paramètres de votre base de données et cliquez sur le bouton Continuer à nouveau."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Vérifier l'URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Effacer la liste Omettre"; +$LANG["phrase_client_account_settings"] = "Client Account Settings"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Filtres Carte Client »"; +$LANG["phrase_client_may_edit"] = "Client mai modifier"; +$LANG["phrase_client_menu"] = "Menu Client"; +$LANG["phrase_clients_can_access_form"] = "Les clients qui peuvent accéder au formulaire"; +$LANG["phrase_clients_can_access_view"] = "Clients qui peuvent accéder à la vue"; +$LANG["phrase_clients_cannot_access_form"] = "Les clients qui ne peuvent pas avoir accès au formulaire"; +$LANG["phrase_clients_cannot_access_view"] = "Les clients qui ne peuvent pas accéder à la vue"; +$LANG["phrase_clients_may_edit"] = "Clients mai modifier"; +$LANG["phrase_code_c"] = "Code d'erreur:"; +$LANG["phrase_code_markup_field"] = "Code / balisage sur le terrain"; +$LANG["phrase_code_markup_type"] = "Code / balisage de type"; +$LANG["phrase_codes_c"] = "Les codes d'erreur:"; +$LANG["phrase_column_width"] = "Largeur de colonne"; +$LANG["phrase_company_name"] = "Nom de la société"; +$LANG["phrase_configure_form_email_fields"] = "Configurer Formulaire Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Confirmer la correspondance \"Répertoire-URL\""; +$LANG["phrase_connect_rows"] = "Connectez rangées"; +$LANG["phrase_copy_email_settings_from"] = "Copiez Paramètres de courriel à partir de ..."; +$LANG["phrase_copy_settings_from"] = "Copier les paramètres à partir de ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Créer un compte"; +$LANG["phrase_create_admin_account"] = "Créer Admin Account"; +$LANG["phrase_create_config_file"] = "Créer un fichier de configuration"; +$LANG["phrase_create_database_tables"] = "Create Database Tables"; +$LANG["phrase_create_default_view"] = "Créer une vue par défaut"; +$LANG["phrase_create_file"] = "Créer un dossier"; +$LANG["phrase_create_group"] = "Créer un groupe"; +$LANG["phrase_create_new_email"] = "Créer un nouveau courriel"; +$LANG["phrase_create_new_menu"] = "Créer un nouveau menu"; +$LANG["phrase_create_new_option_list"] = "Créer une liste Nouvelle option"; +$LANG["phrase_create_new_option_list_group"] = "Créer un nouveau groupe de la liste des options"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Créer une liste Nouvelle option »"; +$LANG["phrase_create_new_view"] = "Créer une nouvelle vue"; +$LANG["phrase_create_new_view_group"] = "Créer un nouveau groupe de"; +$LANG["phrase_custom_display_format"] = "Format d'affichage personnalisé"; +$LANG["phrase_custom_recipient"] = "Destinataire personnalisé"; +$LANG["phrase_custom_url"] = "URL personnalisée"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Type de données"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Nom de la base"; +$LANG["phrase_database_password"] = "Base de données de passe"; +$LANG["phrase_database_settings"] = "Base de données des paramètres"; +$LANG["phrase_database_setup"] = "Configuration Base de données"; +$LANG["phrase_database_table_prefix"] = "Database table prefix"; +$LANG["phrase_database_username"] = "Base de données nom d'utilisateur"; +$LANG["phrase_date_format"] = "Format de date"; +$LANG["phrase_db_column"] = "Colonne"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Thème par défaut de compte client"; +$LANG["phrase_default_date_field_search_value"] = "La date par défaut champ de recherche de valeur"; +$LANG["phrase_default_language"] = "Langue par défaut"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default Timeout Sessions"; +$LANG["phrase_default_sort_order"] = "Ordre de tri par défaut"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Thème par défaut"; +$LANG["phrase_default_value"] = "La valeur par défaut"; +$LANG["phrase_default_values"] = "Les valeurs par défaut"; +$LANG["phrase_default_values_new_submissions"] = "Valeurs par défaut pour les nouvelles présentations"; +$LANG["phrase_delete_field"] = "Supprimer le champ"; +$LANG["phrase_delete_form"] = "SUPPRIMER FORMULAIRE"; +$LANG["phrase_delete_row"] = "Supprimer la ligne"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Supprimer les fichiers associés lors de la suppression de soumission"; +$LANG["phrase_delete_view"] = "Supprimer Voir"; +$LANG["phrase_disconnect_rows"] = "Débranchez les lignes"; +$LANG["phrase_display_email"] = "Annonce Email"; +$LANG["phrase_display_name"] = "Afficher nom"; +$LANG["phrase_display_text"] = "Afficher Texte"; +$LANG["phrase_display_value"] = "Valeur d'affichage"; +$LANG["phrase_edit_admin_menu"] = "Admin Edit Menu"; +$LANG["phrase_edit_client"] = "Modifier la clientèle"; +$LANG["phrase_edit_client_menu"] = "Edit Menu Client"; +$LANG["phrase_edit_email_template"] = "Modifier modèle de courrier électronique"; +$LANG["phrase_edit_field"] = "Éditer le champ"; +$LANG["phrase_edit_field_c"] = "Modifier le terrain:"; +$LANG["phrase_edit_form"] = "Modifier le formulaire"; +$LANG["phrase_edit_form_access_type_b"] = "[Modifier le type d'accès formulaire]"; +$LANG["phrase_edit_option_list"] = "Modifier la liste des options"; +$LANG["phrase_edit_submission"] = "Modifier soumission"; +$LANG["phrase_edit_submission_label"] = "Modifier le libellé de soumission"; +$LANG["phrase_edit_view"] = "Éditer la vue"; +$LANG["phrase_email_format"] = "Format d'email"; +$LANG["phrase_email_settings"] = "PARAMÈTRES EMAIL"; +$LANG["phrase_email_template"] = "Modèle d'email"; +$LANG["phrase_email_template_name"] = "Nom du modèle d'email"; +$LANG["phrase_error_learn_more"] = "En savoir plus sur cette erreur."; +$LANG["phrase_error_text_intro"] = "S'il vous plaît corriger l'erreur suivante (s) et soumettre à nouveau:"; +$LANG["phrase_errors_learn_more"] = "Cliquez sur les codes d'erreur pour en savoir plus."; +$LANG["phrase_event_trigger"] = "Événement de déclenchement"; +$LANG["phrase_external_form"] = "Forme Externe"; +$LANG["phrase_external_form_info"] = "Infos forme Externe"; +$LANG["phrase_external_your_own_form"] = "Externe (votre propre forme)"; +$LANG["phrase_field_comments"] = "Commentaires sur le terrain"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Champ Options"; +$LANG["phrase_field_size"] = "Taille du champ"; +$LANG["phrase_field_skipped"] = "Field Skipped"; +$LANG["phrase_field_specific_settings"] = "Champ de paramètres spécifiques"; +$LANG["phrase_field_type"] = "Type de champ"; +$LANG["phrase_field_type_no_validation"] = "Il n'ya pas de règles de validation disponibles pour ce type de terrain."; +$LANG["phrase_field_types"] = "Les types de champ"; +$LANG["phrase_field_value"] = "Champ Valeur"; +$LANG["phrase_field_values_to_display_values"] = "Field Values »afficher des valeurs"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Touches"; +$LANG["phrase_finalize_form"] = "Finaliser le formulaire"; +$LANG["phrase_first_name"] = "Prénom"; +$LANG["phrase_footer_text"] = "Texte de bas de page"; +$LANG["phrase_for_any_form_submission"] = "Pour tout formulaire de soumission"; +$LANG["phrase_for_view_submissions"] = "Seuls les soumissions qui s'inscrivent dans la vue suivante (s)"; +$LANG["phrase_forgot_password"] = "MOT DE PASSE OUBLIÉ?"; +$LANG["phrase_form_already_selected"] = "Formulaire déjà sélectionné"; +$LANG["phrase_form_email_field_b_c"] = "[Formulaire] champ e-mail:"; +$LANG["phrase_form_email_field_configuration"] = "Formulaire Email champ de configuration"; +$LANG["phrase_form_email_fields"] = "Les champs Email Formulaire"; +$LANG["phrase_form_field"] = "Champ de formulaire"; +$LANG["phrase_form_field_contents"] = "Contenu du champ de formulaire"; +$LANG["phrase_form_field_name"] = "Nom du champ de formulaire"; +$LANG["phrase_form_field_placeholders"] = "Espaces réservés champ de formulaire"; +$LANG["phrase_form_fields"] = "Des champs de formulaire"; +$LANG["phrase_form_info"] = "Formulaire de renseignements"; +$LANG["phrase_form_info_2"] = "2. Formulaire de renseignements"; +$LANG["phrase_form_list"] = "Formulaire de liste"; +$LANG["phrase_form_name"] = "Nom du formulaire"; +$LANG["phrase_form_page"] = "Formulaire de la page"; +$LANG["phrase_form_placeholders"] = "VARIABLES FORMULAIRE"; +$LANG["phrase_form_submission"] = "SOUMISSION FORMULAIRE"; +$LANG["phrase_form_submissions"] = "La soumission de formulaire"; +$LANG["phrase_form_type"] = "Type de formulaire"; +$LANG["phrase_form_url"] = "URL du formulaire"; +$LANG["phrase_form_urls"] = "URL Formulaire"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formulaires affecté à un compte"; +$LANG["phrase_forms_page_default_message"] = "Message de formulaires par défaut la page"; +$LANG["phrase_ft_installation"] = "Constituent des outils de script d'installation"; +$LANG["phrase_full_width"] = "Pleine largeur"; +$LANG["phrase_getting_started"] = "Mise en route"; +$LANG["phrase_global_placeholders"] = "VARIABLES GLOBALES"; +$LANG["phrase_group_name"] = "Nom du groupe"; +$LANG["phrase_group_options_q"] = "Options de groupe?"; +$LANG["phrase_group_rows"] = "Rangs du Groupe"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Surlignage couleur"; +$LANG["phrase_html_email"] = "Email HTML"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Liste option d'importation »"; +$LANG["phrase_input_length"] = "Longueur d'entrée"; +$LANG["phrase_installation_help"] = "Aide à l'installation"; +$LANG["phrase_internal_form"] = "Formulaire interne"; +$LANG["phrase_ip_address"] = "Adresse IP"; +$LANG["phrase_is_multi_page_form_q"] = "Est-ce une forme multi-pages?"; +$LANG["phrase_label_response_placeholders"] = "Label / Réponse Placeholders"; +$LANG["phrase_large_300px"] = "Grande (300px)"; +$LANG["phrase_large_400px"] = "Grande (400px)"; +$LANG["phrase_last_7_days"] = "Les 7 derniers jours"; +$LANG["phrase_last_logged_in"] = "Derniers connectés"; +$LANG["phrase_last_modified"] = "Dernière modification"; +$LANG["phrase_last_modified_date"] = "Dernière date de modification"; +$LANG["phrase_last_name"] = "Nom"; +$LANG["phrase_letters_only"] = "Seules les lettres"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Limitez le contenu de e-mail à des champs dans la vue"; +$LANG["phrase_loading_ellipsis"] = "Chargement en cours ..."; +$LANG["phrase_log_in"] = "CONNEXION"; +$LANG["phrase_login_as_user"] = "Connectez-vous comme cet utilisateur"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Page de connexion"; +$LANG["phrase_login_panel_c"] = "Panneau de connexion:"; +$LANG["phrase_login_panel_leftarrows"] = "« Panneau de connexion"; +$LANG["phrase_login_password"] = "Login Mot de passe"; +$LANG["phrase_login_username"] = "Connexion Nom d'utilisateur"; +$LANG["phrase_logo_link_url"] = "Logo du lien URL"; +$LANG["phrase_logout_url"] = "URL de déconnexion"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Paramètres principaux"; +$LANG["phrase_manage_client"] = "Gestion gestionnaires"; +$LANG["phrase_manage_client_omit_list"] = "Gérer client Omettre Liste"; +$LANG["phrase_max_file_size"] = "Taille maximale des fichiers"; +$LANG["phrase_max_length"] = "Longueur max"; +$LANG["phrase_max_length_words_chars"] = "- Longueur max (mots / caractères)"; +$LANG["phrase_may_add_submissions"] = "Les soumissions peuvent ajouter"; +$LANG["phrase_may_copy_submissions"] = "Peut copier des soumissions"; +$LANG["phrase_may_delete_submissions"] = "Peut supprimer des soumissions"; +$LANG["phrase_medium_150px"] = "Moyenne (150px)"; +$LANG["phrase_medium_200px"] = "Moyenne (200px)"; +$LANG["phrase_menu_name"] = "Nom du menu"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "longueur minimale de mot de passe"; +$LANG["phrase_module_description"] = "Description du module"; +$LANG["phrase_module_info"] = "Module d'information"; +$LANG["phrase_module_nav"] = "Module Nav"; +$LANG["phrase_month_to_date"] = "Mois à ce jour"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Liste déroulante multi-sélection"; +$LANG["phrase_multiple_fields_found"] = "Multiples champs trouvés!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nom / Prénom"; +$LANG["phrase_new_blank_email"] = "Nouveau message vide"; +$LANG["phrase_new_blank_option_list"] = "Nouvelle liste option vide"; +$LANG["phrase_new_blank_view"] = "Nouvelle Nuls Voir"; +$LANG["phrase_new_ft_installation"] = "Nouveau formulaire Outils d'installation"; +$LANG["phrase_new_option_list"] = "Liste des options nouvelles"; +$LANG["phrase_new_password"] = "Nouveau mot de passe"; +$LANG["phrase_new_password_reenter"] = "Nouveau mot de passe (s'il vous plaît de rentrer)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "Nouvelle - Tous les champs"; +$LANG["phrase_next_client"] = "prochain client »"; +$LANG["phrase_next_field"] = "domaine suivant »"; +$LANG["phrase_next_form"] = "forme suivant »"; +$LANG["phrase_next_view"] = "Suivante View »"; +$LANG["phrase_no_clients"] = "Pas de clients"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Pas de décalage"; +$LANG["phrase_no_option_lists_available"] = "Aucune option listes disponibles."; +$LANG["phrase_no_views"] = "Aucune vue"; +$LANG["phrase_no_views_with_filters_p"] = "(Pas de Vues avec des filtres définis)"; +$LANG["phrase_none_not_recommended"] = "Aucun (non recommandé)"; +$LANG["phrase_not_assigned_to_option_list"] = "Ce champ n'est pas affecté à une liste d'options."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Ne doit pas être égal"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "Différent"; +$LANG["phrase_not_visible_to_client"] = "(non visible pour le client)"; +$LANG["phrase_num_clients_per_page"] = "Nombre de gestionnaires par page"; +$LANG["phrase_num_emails_per_page"] = "Num e-mails par page"; +$LANG["phrase_num_fields"] = "Nombre de champs"; +$LANG["phrase_num_forms_per_page"] = "Nombre de formulaires par page"; +$LANG["phrase_num_menus_per_page"] = "Num Menus Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num modules par page"; +$LANG["phrase_num_option_lists_per_page"] = "Listes option Num par page"; +$LANG["phrase_num_options"] = "Options de Num"; +$LANG["phrase_num_rows"] = "Des rangées Num"; +$LANG["phrase_numbers_only"] = "Seuls les nombres"; +$LANG["phrase_often_localhost"] = "(souvent \"localhost\")"; +$LANG["phrase_on_form_submission"] = "Lors de la présentation sous forme"; +$LANG["phrase_one_char_number"] = "Au moins un caractère est un chiffre (0-9)"; +$LANG["phrase_one_char_upper"] = "Au moins un caractère est en majuscules"; +$LANG["phrase_one_special_char"] = "Au moins un des {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(uniquement des clients particuliers ont accès)"; +$LANG["phrase_open_form_in_dialog"] = "Sous forme de dialogue Ouvrir dans la fenêtre"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Ouvrez ce formulaire dans une nouvelle fenêtre / onglet"; +$LANG["phrase_option_list"] = "Liste des options"; +$LANG["phrase_option_list_name"] = "Nom de la liste d'options"; +$LANG["phrase_option_list_or_contents"] = "Liste des options / Contenu"; +$LANG["phrase_option_lists"] = "Listes d'options"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Titres de page"; +$LANG["phrase_pass_on"] = "Transmettre"; +$LANG["phrase_password_min"] = "Il doit être au moins {\$length} caractères."; +$LANG["phrase_password_one_number"] = "Il doit contenir au moins un chiffre (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Il doit contenir au moins une lettre majuscule."; +$LANG["phrase_password_requirements_c"] = "exigences Mot de passe:"; +$LANG["phrase_password_reset"] = "Mot de passe oublié"; +$LANG["phrase_password_special_char"] = "Il doit contenir au moins un des caractères suivants: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Autorisations / Autres paramètres"; +$LANG["phrase_permitted_file_types"] = "Type de fichiers autorisés"; +$LANG["phrase_phone_number"] = "Numéro de téléphone"; +$LANG["phrase_phone_number_format"] = "Format Numéro de téléphone"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini maximum autorisée taille upload:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Version de PHP"; +$LANG["phrase_please_confirm"] = "S'il vous plaît confirmer"; +$LANG["phrase_please_enter_license_key"] = "S'il vous plaît entrer votre clé de licence"; +$LANG["phrase_please_select"] = "Merci de choisir"; +$LANG["phrase_please_select_form"] = "S'il vous plaît sélectionnez une forme"; +$LANG["phrase_prev_client"] = "«Diff clients"; +$LANG["phrase_prev_form"] = "«Formulaire de diff"; +$LANG["phrase_prevent_password_reuse"] = "re de prévenir l'utilisation de mots de passe # dernier"; +$LANG["phrase_previous_field"] = "«champ précédent"; +$LANG["phrase_previous_page"] = "Page Précédente"; +$LANG["phrase_previous_view"] = "« préc vue"; +$LANG["phrase_program_name"] = "Nom du programme"; +$LANG["phrase_public_form_omit_list"] = "Publics constituent Omettre Liste"; +$LANG["phrase_public_view_omit_list"] = "Public Voir Omettre Liste"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Il y avait un problème avec la requête suivante:"; +$LANG["phrase_radio_buttons"] = "Boutons radio"; +$LANG["phrase_random_form_submission"] = "Soumission de formulaire aléatoire"; +$LANG["phrase_re_enter_password"] = "Re-composer le mot de passe"; +$LANG["phrase_recipient_type"] = "Type de bénéficiaire"; +$LANG["phrase_redirect_url"] = "URL de redirection"; +$LANG["phrase_refresh_list"] = "Actualiser liste"; +$LANG["phrase_refresh_module_list"] = "Rafraîchir la liste Module"; +$LANG["phrase_refresh_page"] = "ACTUALISER LA PAGE"; +$LANG["phrase_refresh_theme_list"] = "Rafraîchir la liste Thème"; +$LANG["phrase_register_new_email"] = "Inscription d'un nouvel E-mail"; +$LANG["phrase_remaining_characters"] = "caractères restants"; +$LANG["phrase_remaining_words"] = "mots restants"; +$LANG["phrase_remove_tabs"] = "Supprimer des onglets"; +$LANG["phrase_required_password_chars"] = "caractères mot de passe requis"; +$LANG["phrase_resend_test_submission"] = "RENVOYER TEST SOUMISSION"; +$LANG["phrase_return_form_list"] = "RETOUR A LA LISTE FORMULAIRE"; +$LANG["phrase_row_selected"] = "{\$num_rows} ligne sélectionnée"; +$LANG["phrase_rows_selected"] = "{\$num_rows} lignes sélectionnées"; +$LANG["phrase_sample_data"] = "Données exemple"; +$LANG["phrase_save_changes"] = "Enregistrer les modifications"; +$LANG["phrase_search_keyword"] = "Mot-clé Recherche"; +$LANG["phrase_security_settings"] = "Paramètres de sécurité"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Sélectionnez Tous les {\$numresults} Résultats"; +$LANG["phrase_select_all_on_page"] = "Tout sélectionner"; +$LANG["phrase_select_date"] = "Sélectionnez la date"; +$LANG["phrase_select_field"] = "Sélectionner un champ"; +$LANG["phrase_select_swatch"] = "Sélectionnez Swatch"; +$LANG["phrase_selected_clients"] = "Gestionnaires sélectionnés"; +$LANG["phrase_selected_views"] = "Selected Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "ENVOYER EMAIL D'ESSAI"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Valeur de réglage"; +$LANG["phrase_setup_options"] = "Options de Configuration"; +$LANG["phrase_show_all"] = "Voir tout"; +$LANG["phrase_show_form"] = "Voir formulaire"; +$LANG["phrase_size_large"] = "Grande (TEXT)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 caractères)"; +$LANG["phrase_size_small"] = "Petit (<= 20 caractères)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 caractères)"; +$LANG["phrase_size_very_large"] = "(Very Large MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Sauter le terrain"; +$LANG["phrase_skip_step"] = "Sautez l'étape"; +$LANG["phrase_small_100px"] = "Petit (100px)"; +$LANG["phrase_small_80px"] = "Petit (80px)"; +$LANG["phrase_smart_fill"] = "Remplissage automatique"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Remplissez les champs à partir de:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill User Documentation »"; +$LANG["phrase_sort_as"] = "Classer comme"; +$LANG["phrase_special_fields"] = "Les champs spéciaux"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Standard filtres »"; +$LANG["phrase_step_1"] = "Etape 1"; +$LANG["phrase_step_2"] = "Étape 2"; +$LANG["phrase_step_3"] = "Étape 3"; +$LANG["phrase_step_4"] = "Étape 4"; +$LANG["phrase_step_5"] = "Étape 5"; +$LANG["phrase_step_6"] = "Étape 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Enlever les balises dans les soumissions de formulaires"; +$LANG["phrase_subject_line"] = "Objet Line"; +$LANG["phrase_submission_date"] = "Date de soumission"; +$LANG["phrase_submission_id"] = "ID de soumission"; +$LANG["phrase_submission_made"] = "Mémoire déposé: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Type de présentation"; +$LANG["phrase_submissions_per_page"] = "Soumissions par page"; +$LANG["phrase_system_check"] = "Vérifiez la configuration système"; +$LANG["phrase_system_fields_no_validation"] = "Vous ne pouvez pas ajouter de validation pour les champs du système."; +$LANG["phrase_system_time_offset"] = "Décalage horaire"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test des permissions répertoire"; +$LANG["phrase_test_submission"] = "Test soumission"; +$LANG["phrase_test_submission_3"] = "3. Test de soumission"; +$LANG["phrase_test_submission_received"] = "Test Submission received"; +$LANG["phrase_text_and_html"] = "Texte et HTML"; +$LANG["phrase_text_email"] = "Texte de l'email"; +$LANG["phrase_text_template"] = "Text Template"; +$LANG["phrase_the_previous_month"] = "Le mois précédent"; +$LANG["phrase_theme_description"] = "Description Thème"; +$LANG["phrase_theme_info"] = "Thème Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total:"; +$LANG["phrase_type_c"] = "Type d'erreur:"; +$LANG["phrase_unselect_all"] = "Désélectionner tout"; +$LANG["phrase_update_accounts"] = "Mise à jour des comptes"; +$LANG["phrase_update_email_template"] = "Mise à jour de Modèle de courrier électronique"; +$LANG["phrase_update_field"] = "Mettre à jour le"; +$LANG["phrase_update_order"] = "Ordre à jour"; +$LANG["phrase_update_view"] = "Voir mise à jour"; +$LANG["phrase_upload_file"] = "Envoyer un fichier"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Chemin du répertoire d'envoi de fichier"; +$LANG["phrase_upload_folder_url"] = "URL du répertoire d'envoi de fichier"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Utiliser la valeur par défaut?"; +$LANG["phrase_used_by_num_form_fields"] = "Utilisé par # Champs de formulaire"; +$LANG["phrase_uses_swatches"] = "Utilise Nuancier"; +$LANG["phrase_valid_email"] = "E-mail valide"; +$LANG["phrase_validation_error"] = "Erreur de validation"; +$LANG["phrase_validation_rule"] = "Règle de validation"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Afficher le groupe"; +$LANG["phrase_view_id"] = "Afficher ID"; +$LANG["phrase_view_name"] = "Afficher le nom de"; +$LANG["phrase_view_placeholders"] = "Voir Placeholders"; +$LANG["phrase_view_submissions"] = "Voir les présentations"; +$LANG["phrase_view_uploaded_files"] = "voir les fichiers envoyés"; +$LANG["phrase_viewing_range"] = "[Affichage {\$startnum} et {\$endnum}]"; +$LANG["phrase_when_sent"] = "En cas d'envoi"; +$LANG["phrase_when_submission_is_deleted"] = "Lorsque la soumission est supprimé"; +$LANG["phrase_when_submission_is_edited"] = "Lorsque la soumission est édité"; +$LANG["phrase_who_can_access"] = "Qui peut accéder?"; +$LANG["phrase_word_limit_p"] = "limite de mots."; +$LANG["phrase_year_to_date"] = "Année à ce jour"; +$LANG["phrase_yes_for_all_views"] = "Oui, pour toutes les vues"; +$LANG["phrase_yes_for_specific_views"] = "Oui, pour les points de vue spécifiques"; +$LANG["phrase_your_account"] = "Votre compte"; +$LANG["phrase_your_email"] = "Votre email"; +$LANG["phrase_your_email_address"] = "Votre adresse Email"; +$LANG["processing_form_disabled"] = "Désolé, ce formulaire a été désactivé."; +$LANG["processing_form_incomplete"] = "Désolé, cette formule ne semble pas être entièrement créée à partir de formulaire Outils. La cause la plus probable de ce problème est que vous avez retiré le form_tools_initialize_form "" champ de formulaire cachés, mais n'a pas terminé toutes les étapes de la "Ajouter un formulaire" process.

    S'il vous plaît vous connecter et d'examiner la configuration du formulaire."; +$LANG["processing_init_complete"] = "Merci! Votre soumission de test a été correctement enregistrée. Veuillez s'il vous plaît retourner au panneau d'administration de Form Tools et cliquez sur le bouton \"Actualiser\" au bas de la page de l'étape 3 (i.e. \"Ajouter un formulaire\") pour terminer la configuration de votre formulaire."; +$LANG["processing_invalid_form_id"] = "Sorry, this doesn't appear to be a valid form ID."; +$LANG["processing_no_form_id"] = "process.php requires a form ID for processing. Make sure your form contains a hidden field with the name \"form_tools_form_id\" that's passing along the form ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Constituent des outils n'est pas en mesure de déterminer le lieu de réorienter lorsqu'ils n'arrivent pas à entrer dans le CAPTCHA correctement. S'il vous plaît passer dans un champ caché avec le nom form_tools_form_url contenant l'URL de la forme."; +$LANG["processing_no_post_vars"] = "process.php is not receiving any data. Note: this script cannot be loaded directly in your browser.
    Make sure your form is sending via POST."; +$LANG["processing_no_redirect_url"] = "The submission was processed correctly, but you haven't specified a redirect URL for this form! Edit your form in the Form Tools UI and add the redirect URL."; +$LANG["special_language"] = "French"; +$LANG["special_language_locale"] = "French"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Tous les nouveaux comptes clients seront créés avec les paramètres et permissions définies ci-dessous. Pour modifier un paramètre pour un client particulier, de modifier le compte client et visiter leurs onglet Paramètres."; +$LANG["text_add_form_choose_integration_method"] = "Choisissez la méthode que vous souhaitez utiliser pour intégrer votre formulaire avec les outils de formulaire."; +$LANG["text_add_form_code_submission_benefits"] = "Cette méthode utilise le formulaire Outils API , inclus dans le formulaire Outils script principal. L'API fournit un certain nombre de fonctions utiles pour rendre le travail d'intégration avec les outils de votre formulaire formulaire aussi simple que possible. Il n'ya aucune restriction à la façon dont votre formulaire peut être soumis lorsque vous utilisez l'API. Vous pouvez soumettre du contenu en une seule fois, ou page par page, vous pouvez ajouter votre propre validation côté serveur, les images CAPTCHA, vous pouvez choisir de soumettre l'information maintenant, mais seulement lui dire d'afficher la soumission dans le Formulaire des outils d'interface à une date ultérieure (voir le Finalisé soumissions section dans la documentation d'aide API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Afin de soumettre vos données sous forme via PHP, votre formulaire doit être situé sur le même site que former des outils à cette installation. Deuxièmement, pour les outils de forme non-techniques et les utilisateurs novices, cette méthode peut être un peu intimidant au début. Mais il ya beaucoup de documentation pour vous aider, y compris les deux tutoriels simples pour intégrer vos formulaires mono et multi-page (elles sont liées à un stade ultérieur)."; +$LANG["text_add_form_direct_submission_benefits"] = "C'est la plus simple façon de soumettre votre formulaire au formulaire Tools. Il ne nécessite aucune connaissance de PHP et nécessite seulement une très légère modification à votre formulaire. C'est formidable pour les plus petites formes où vous voulez soumettre que des informations à la base de données puis rediriger l'utilisateur vers une thankyou "" page."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Cette méthode de soumission est très simple à utiliser, mais ne fournit pas beaucoup de contrôle pour des formes plus compliquées. Formes multi-page ou des formulaires qui nécessitent la validation côté serveur sont mieux adaptés à la seconde méthode: la présentation via l'API Tools Form."; +$LANG["text_add_form_field_types1"] = "Presque fini! Cette page tente de trouver tous vos champs de formulaire et de déterminer leurs types de terrain. Cliquez sur le bouton Smart Remplissez le droit d'obtenir commencé. Vous serez uniquement autorisé à procéder lorsque toutes les actions ont été résolus - des questions qui requièrent votre attention apparaissent dans le "Des mesures s'imposent " colonne."; +$LANG["text_add_form_field_types2"] = "Si votre formulaire n'est pas en HTML, cliquez sur le bouton Étape Passer de procéder. Tout cela peut être configuré plus tard."; +$LANG["text_add_form_field_types3"] = "Cette recharge le contenu de votre formulaire (s). Note: cette écrasera tous les changements que vous avez fait sur cette page."; +$LANG["text_add_form_field_types4"] = "Dans le cas où vous rencontrez des problèmes, cliquez ici pour sauter cette étape. Tous les champs non résolus sont configurés pour utiliser les valeurs par défaut. Vous pouvez personnaliser ces champs plus tard."; +$LANG["text_add_form_field_types_manual_upload"] = "Si vous avez été incapable de puce Remplissez vos champs, vous pouvez essayer une autre solution: télécharger des copies de vos formulaires dans le champs ci-dessous."; +$LANG["text_add_form_field_types_manual_upload2"] = "Remarque: ne téléchargez pas les pages PHP premières (ou autre code côté serveur) - il suffit de télécharger la version HTML. Pour l'obtenir, de visualiser et d'enregistrer la page dans votre navigateur web."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Il y avait plusieurs champs qui ne pouvait pas être trouvée dans la page du formulaire que vous avez spécifié. Ceci est probablement due à l'un des suivants:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Vous avez entré un ou plusieurs des URL sous forme de votre multi-page du formulaire incorrectement."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Une ou plusieurs pages de votre formulaire sont protégés par mot et le script ne pouvait pas accéder à la page."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Vous incorrectement entré l'URL de votre formulaire."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Cliquez ici pour retourner à la page d'informations du formulaire à vérifier vos paramètres."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Vous avez changé votre formulaire (s) après avoir fait le test de la soumission"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Cliquez ici pour mettre à une autre présentation de test."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Votre formulaire est protégé par mot et le script ne pouvait pas accéder à la page."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Dans un autre onglet / fenêtre de ce navigateur, vous connecter à votre formulaire puis cliquez sur le bouton Actualiser la page ci-dessous pour essayer de re-trouver dans les champs."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Si aucune des solutions ci-dessus le travail, vous pouvez également essayer de télécharger votre manuel pour le traitement des formulaires ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Il y avait plusieurs champs qui ne pouvait pas être trouvé dans les pages du formulaire que vous avez spécifié. Ceci est probablement due à l'un de ces:"; +$LANG["text_add_form_help_link"] = "Si vous rencontrez un problème lors de ces étapes, essayez de lire sur la documentation utilisateur ."; +$LANG["text_add_form_step_1_text_1"] = "Les pages qui suivent vous guideront à travers les étapes pour configurer les outils Formulaire pour stocker vos formulaires. Avant de continuer, s'il vous plaît vérifier que:"; +$LANG["text_add_form_step_1_text_2"] = "votre formulaire a déjà été créé et est accessible via une URL (localhost est très bien)"; +$LANG["text_add_form_step_1_text_3"] = "sont en mesure de modifier votre formulaire"; +$LANG["text_add_form_step_2_para_2"] = "Ouvrez votre formulaire dans un outil de mise en forme de votre choix et échangez votre balise de formulaire contre la suivante, y compris les deux champs cachés."; +$LANG["text_add_form_step_2_para_3"] = "Ensuite, ouvrez votre formulaire dans un navigateur web. Remplissez tous les domaines et l'envoyer. Après la soumission, vous devriez voir un message de notification. Une fois que ce message est affiché, revenir à cette page et cliquez sur le bouton d'actualisation ci-dessous. Une fois ce processus terminé, vous verrez un bouton «Continuer» ci-dessous, et vous emmène à l'étape suivante."; +$LANG["text_add_form_step_2_para_6"] = "Dans votre formulaire, inclure les valeurs suivantes. Ils mai être fixé directement via PHP ou transmis lors de la forme elle-même. Voici des exemples de chacun. Le varname \$ () est une table de hachage (ou tableau associatif) de toutes les informations Formulaire de soumission - ce n'est généralement le postvar \$ () ou (\$) sessionvar variable, mais elle mai être fabriqués sur mesure."; +$LANG["text_add_form_step_2_text_2"] = "Entrez l'URL de votre "merci " page ici. C'est là que vous voulez que les gens pour être dirigé vers après le formulaire a été soumis."; +$LANG["text_add_form_step_3_para_1"] = "Cette page liste tous les champs de votre formulaire. S'il vous plaît examiner chaque domaine et de supprimer ceux que vous n'avez pas besoin stockées, pour chaque présentation. Si vous supprimez un champ valide par accident, ou qui voudraient changer les informations stockées par votre formulaire, retournez à la page précédente pour envoyer une soumission nouveau test."; +$LANG["text_add_form_step_3_para_2"] = "Note: si vous envoyez plusieurs valeurs via des cases à cocher ou un multi-boîte de sélection, assurez-vous que votre nom de domaine se termine par le [] caractères (voir la documentation utilisateur pour plus d'informations)."; +$LANG["text_add_form_step_3_text_1"] = "Voici où le fun commence! À ce stade, Outils de formulaire est en attente d'une soumission de test à partir de votre formulaire. Il va utiliser ce formulaire de soumission de savoir quelles informations doivent être stockées dans la base de données."; +$LANG["text_add_form_step_3_text_2"] = "en pointant votre formulaire Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "en utilisant le formulaire Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Pour aider à intégrer votre formulaire, nous vous suggérons de lire l'un des guides suivants:"; +$LANG["text_add_form_step_3_text_5"] = "Ils expliquent comment configurer votre formulaire en prévision de la présentation de test, et comporter des informations autres que mai-être répondre. La ligne de PHP, vous aurez besoin est:"; +$LANG["text_add_form_step_3_text_6"] = "Cela garantit que les données sont effectivement envoyées au formulaire Tools. Lorsque vous avez mis à soumettre votre essai, cliquez sur le bouton ci-dessous."; +$LANG["text_add_form_step_3_text_7"] = "Sur la procédure de page à votre dernier «merci» à la page, n'oubliez pas d'ajouter le paramètre suivant à la variable \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "La base de données a été mis en place au titre de ce formulaire et le formulaire a été activé pour l'utiliser. Si vous avez fait la présentation en pointant votre formulaire pour process.php, s'il vous plaît revenir à votre formulaire et de supprimer le champ caché suivant:"; +$LANG["text_add_form_step_5_para_2"] = "Ensuite visite à votre «merci» à la page de vider les sessions. Une fois cela fait, toutes les présentations sous forme de nouvelles seront traitées et stockées par le formulaire Tools. Essayez de faire une présentation ou deux pour vérifier l'information est d'autant télécharger correctement."; +$LANG["text_add_form_step_5_para_3"] = "Si vous souhaitez affiner votre formulaire d'options telles que Auto-emailing, ajoutant des champs de formulaire sur le terrain, ou de personnaliser les types de champ de formulaire, vous mai modifier votre formulaire à tout moment."; +$LANG["text_add_form_step_5_para_4"] = "Étant donné que votre formulaire contient des champs de fichier télécharger, vous aurez besoin de configurer chaque champ pour spécifier le dossier de téléchargement de fichier, les fichiers sont permises et. Cela peut être trouvé sur le onglet Affichage de la page d'édition de formulaire."; +$LANG["text_add_form_step_5_para_5"] = "Si la présentation a été envoyé via l'API, modifiez la ligne ft_api_init_form_page sur la première page de votre formulaire à:"; +$LANG["text_add_submission_button"] = "Ajouter le bouton de soumission apparaît uniquement pour les vues qui ont le "mai ajoutez soumissions " option sur "oui "."; +$LANG["text_admin_email_placeholder_info"] = "C'est l'adresse mail de l'administrateur outils de forme, défini dans les paramètres de votre compte. Ceci affichera uniquement l'adresse e-mail, donc si vous souhaitez utiliser comme un lien HTML, vous aurez besoin de l'envelopper dans une balise <a>, comme ceci:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ AdminEmail) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Egalement le login par défaut page thématique)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "D'abord, s'il vous plaît choisir votre type de formulaire."; +$LANG["text_client_form_page"] = "Cette page liste toutes les formes et Vues affecté à ce client. Astuce: pour eux de voir mémoires d'un formulaire, dont ils ont besoin d'être attribué à au moins une vue."; +$LANG["text_client_map_filters_desc1"] = "Filtres Carte Client vous permettent de limiter les communications qui apparaissent dans cette opinion par la cartographie des valeurs dans un champ de formulaire pour les valeurs d'un compte client."; +$LANG["text_client_no_forms"] = "Vous n'avez actuellement aucun formulaire disponible pour examen."; +$LANG["text_client_welcome"] = "Bienvenue! Ce programme stocke toutes les informations fournies par vos visiteurs visite votre site web. Pour consulter les soumissions pour une forme particulière il suffit de cliquer sur le lien Affichage, ou voir le menu de navigation de gauche d'autres options."; +$LANG["text_config_file_created"] = "Votre fichier config.php a été créé."; +$LANG["text_config_file_not_created"] = "Nous n'avons pas pu créer votre fichier config.php. Vous aurez besoin pour créer le fichier manuellement."; +$LANG["text_config_file_not_created_instructions"] = "Copiez et collez le contenu de la section ci-dessous dans un fichier nommé config.php et de le transférer par FTP sur les Outils / Formulaire de dossier global (le dossier qui contient également quelques autres fichiers et répertoires, un fichier appelé library.php)."; +$LANG["text_confirm_delete_form"] = "Oui, je veux supprimer ce formulaire"; +$LANG["text_create_admin_account"] = "Maintenant, nous allons créer un compte de l'administrateur. Il est utilisé pour gérer tous les aspects de la formule Outils, comme l'ajout de formulaires et la création de comptes client."; +$LANG["text_create_new_client_account"] = "Utilisez le formulaire ci-dessous pour créer un nouveau compte client. Tous les champs sont obligatoires."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "voir PHP {\$datefunctionlink} fonction pour les options de formatage"; +$LANG["text_default_file_settings_page"] = "Cette page définit les paramètres de transfert de fichier pour votre installation des outils de formulaire. Ces règles s'appliquent à tous les fichiers téléchargés par le biais Form Tools, sauf si explicitement spécifié pour un champ de formulaire individuel. Note: si vous modifiez le dossier de téléchargement après que des fichiers ont été téléchargés, ils seront automatiquement déplacés vers le nouveau dossier."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Avant de continuer, vous devrez mettre à jour votre fichier / themes / / dossier du cache par défaut pour permettre total en lecture et en écriture. Une fois cela fait, ce message disparaît et vous pouvez installer le script."; +$LANG["text_default_values_in_view"] = "Cette section est facultative. Toutes les soumissions créé avec cette vue contient les valeurs par défaut spécifiées ici."; +$LANG["text_delete_all_forms"] = "Je veux supprimer tous les fichiers qui ont été envoyés via ce formulaire "; +$LANG["text_delete_form_warning"] = "Êtes-vous sûr de vouloir supprimer ce formulaire? Cette action ne peut pas être annulée. Toutes les données seront définitivement perdues!"; +$LANG["text_edit_admin_menu_page"] = "Vous mai modifier votre menu ci-dessous. Pour vous assurer de l'avoir toujours accès à toutes les fonctionnalités disponibles dans les Outils de formulaire, les pages suivantes sont nécessaires: Forms, clients, votre compte, modules, Paramètres et Déconnexion."; +$LANG["text_edit_client_menu_page"] = "Cette section vous permet de personnaliser la colonne de navigation de gauche pour chaque utilisateur. Vous mai créer autant de menus de clients que vous souhaitez et céder aucun compte à l'un d'entre eux. Par défaut, il ya deux menus: un pour vous, l'administrateur, et un pour tous les comptes client. Le compte administrateur mai être modifié mais pas supprimé."; +$LANG["text_edit_tab_summary"] = "Si vous souhaitez grouper les champs de cette Voir en onglets, il suffit d'entrer les noms onglet ci-dessous. Après vous avez terminé, sélectionnez l'onglet approprié pour chaque groupe dans le domaine de l'onglet Champs ."; +$LANG["text_edit_view_list_page"] = "Ce contrôle onglet champs qui apparaissent comme des colonnes sur la page Liste de soumission, et quelques réglages supplémentaires pour ces champs. Remarque: nous vous recommandons de ne pas ajouter plus de 4 ou 5 des domaines les plus importants dans la vue."; +$LANG["text_email_settings_intro"] = "Cette page vous permet d'identifier lequel de vos e-mails des champs de formulaire de restaurants et leurs noms correspondants. Une fois que vous les définir ici, vous pouvez les utiliser dans vos modèles de courriels comme receveurs. Cette section est entièrement facultative."; +$LANG["text_email_tab_summary"] = "Cette section vous permet de construire un nombre quelconque d'e-mails doivent être envoyés dès que votre formulaire est soumis, et d'autres déclencheurs."; +$LANG["text_email_template_tab"] = "Cette section vous permet de déterminer quel contenu apparaît dans le courriel. Si vous souhaitez envoyer votre e-mail au format texte ou par courriel, seulement entrer une valeur pour cet article. Si vous entrez une valeur pour les deux, l'e-mail sera envoyé dans les deux formats."; +$LANG["text_email_template_text_1"] = "Il ya eu une présentation faite par le biais de votre formulaire, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Il ya eu une présentation faite par le biais de votre formulaire, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Merci pour votre soumission !"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Message d'erreur pour montrer si le domaine de la validation échoue"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Formes externes sont des formes qui existent déjà sur votre site web, ou quelque part sur le web. Sélectionnez cette option si vous avez votre propre formulaire dont vous souhaitez intégrer avec les outils de formulaire."; +$LANG["text_fields_tab_summary"] = "Cette page répertorie tous vos champs de formulaire. Pour contrôler la façon dont ils apparaissent lorsque soumissions de navigation, voir l' onglet Vues . Suppression d'un terrain sur cette page le supprimer de toutes les soumissions, de sorte s'il vous plaît soyez prudent!"; +$LANG["text_file_extension_info"] = "Entrez les extensions de fichier séparées avec des virgules (par exemple jpg, Gif, png) ou laissez vide pour autoriser n'importe quel type de fichier."; +$LANG["text_file_field_placeholders_info"] = "Les champs de fichier ont deux variables spéciales : URL FICHIER et NOM DE FICHIER. URL FICHIER est l'URL complète vers le fichier, afin que vous puissiez mettre un lien direct vers lui dans vos Emails ; le NOM DE FICHIER est juste le nom de fichier."; +$LANG["text_filters_page"] = "Seules les observations qui répondent aux règles que vous définissez ci-dessous apparaît dans cette vue."; +$LANG["text_filters_tips"] = "Pour obtenir des conseils sur la façon d'utiliser des filtres présentation, consultez la documentation utilisateur."; +$LANG["text_forgot_password"] = "Pas de problème. Il suffit d'entrer votre nom d'utilisateur ci-dessous et vos informations de connexion vous sera envoyé à votre adresse e-mail dans le dossier. Si vous avez oublié votre nom d'utilisateur, s'il vous plaît e-mail l'administrateur du site à l'adresse {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Ce formulaire contient un ou plusieurs champ(s) autorisant l'envoi de fichier(s):"; +$LANG["text_form_placeholder_info"] = "Les espaces réservés suivants peuvent être utilisés dans n'importe quel modèle de courrier électronique et sur le terrain placeholder langue, indépendamment de tout Vue du modèle e-mail est assigné. Les espaces réservés sont la question QUESTION forme spécifique; les espaces réservés RÉPONSE sont les réponses à chaque question."; +$LANG["text_form_submission_date_placeholder"] = "La date à laquelle la soumission a été faite."; +$LANG["text_form_tools_form_url"] = "L'URL complète de la forme. Cela a seulement une valeur pour les formes extérieures."; +$LANG["text_form_tools_login_url"] = "L'URL de la connexion pour Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Remarque: ce formulaire est actuellement le type d'accès d'administrateur, de sorte qu'aucun des comptes clients seront en mesure d'afficher cette vue."; +$LANG["text_form_view_permission_info_private"] = "Remarque: ce formulaire est actuellement le type d'accès privé pour les options communes et privées sont ici sera limitée à ce sous-ensemble de clients."; +$LANG["text_ft_installed"] = "Félicitations, Outils de formulaire a été installé avec succès!"; +$LANG["text_global_placeholder_info"] = "Ces variables peuvent être utilisées dans n'importe quel modèle et n'importe quel formulaire."; +$LANG["text_group_name_explanation"] = "Pour les champs ajoutés par l'intermédiaire du processus d'ajout de formulaire, cette valeur est pré-rempli à l'affichage du texte de tout ce champ utilise la valeur. Vous mai tiens à en changer pour mieux caractériser le contenu."; +$LANG["text_install_create_config_file"] = "Constituent des outils stocke les paramètres de votre serveur et base de données dans un fichier nommé config.php, trouvé dans votre / global / dossier. Cliquez sur le bouton "Créer fichier pour générer automatiquement le fichier sur votre serveur."; +$LANG["text_install_create_database_tables"] = "Maintenant, nous allons créer les tables de bases de données Outils Form. Cette étape nécessite la base elle-même d'avoir déjà été créé. Si vous n'êtes pas sûr de savoir comment faire cela, s'il vous plaît contacter votre fournisseur d'hébergement."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" signifie généralement que le nom d'hôte que vous avez fournie est incorrecte. Peut-être essayer de définir ce paramètre à "localhost" - c'est une manière commune de se référer au "local" base de données sur un serveur web."; +$LANG["text_install_db_tables_error_tip_2"] = "«Impossible de se connecter au serveur MySQL local à travers le socket", le champ de la base est à nouveau le nom d'hôte incorrect."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" signifie qu'il ya un problème avec votre nom d'utilisateur / mot de passe."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... à la base de données ..." signifie que même si votre nom d'utilisateur et mot de passe fourni est correct, il a été incapable de se connecter à cette base de données avec ce compte. Cela peut signifier que soit le nom de votre base de données est incorrect, ou que ce compte d'utilisateur n'est pas associé à cette base de données."; +$LANG["text_install_email_content_text"] = "Notre site Web contient de nombreuses ressources pour vous aider à démarrer, notamment notre documentation en ligne (https://docs.formtools.org) et nos didacticiels (https://docs.formtools.org/tutorials). Si vous trouvez que vous êtes bloqué ou avez une question, posez une question sur github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Désolé, Outils de formulaire ne sera pas en mesure de s'exécuter sur votre serveur. S'il vous plaît cliquez ici pour les exigences minimales."; +$LANG["text_install_system_check"] = "Cette page s'exécute quelques tests sur votre système afin de s'assurer qu'il est capable d'exécuter des outils de formulaire."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Formes internes existent seulement dans Outils Formulaire - pas ailleurs sur votre site. Seuls les comptes de formulaire utilisateur Outils auront accès au formulaire. Sélectionnez cette option si vous n'avez pas un formulaire existant."; +$LANG["text_internal_form_intro"] = "Utilisez le formulaire ci-dessous pour créer une nouvelle forme interne. Tous les paramètres, y compris le nombre et le contenu des champs de formulaire peut être être modifiée et configurée ultérieurement."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Afin de vous connecter et d'utiliser Form Tools, vous devez avoir javascript activé dans votre navigateur. Merci de l'activer maintenant, et cliquez Actualiser dans votre navigateur."; +$LANG["text_last_modified_date_explanation_c"] = "La dernière fois que cet argument a été modifié. Pour les nouvelles présentations, c'est la même chose que:"; +$LANG["text_limit_email_content_desc"] = "Cette option ne fonctionne que pour le HTML et le contenu du texte généré avec boucles Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(listes seulement des vues avec un ou plusieurs filtres à définir)"; +$LANG["text_log_in_to_ft"] = "Connectez-vous à Form Tools"; +$LANG["text_login"] = "S'il vous plaît connectez-vous ci-dessous pour accéder à la {\$program_name} Panneau d'administration. Si vous avez oublié votre mot de passe, cliquez ici."; +$LANG["text_login_info"] = "Conformément à votre demande, voici vos informations de connexion."; +$LANG["text_name_of_form"] = "Le nom du formulaire."; +$LANG["text_no_clients"] = "Il n'y a actuellement aucun gestionnaire dans la base de données. Pour ajouter un nouveau compte gestionnaire, cliquez sur le bouton Ajouter Gestionnaire ci-dessous."; +$LANG["text_no_clients_found"] = "Aucun client n'a été trouvé. Essayez d'élargir vos critères de recherche."; +$LANG["text_no_fields_in_view"] = "Cette vision n'est pas tous les champs en elle. Cliquez sur le lien ci-dessous."; +$LANG["text_no_forms"] = "Il n'y a actuellement aucun formulaire dans la base de données. Pour ajouter un nouveau formulaire, cliquez sur le bouton Ajouter Formulaire ci-dessous."; +$LANG["text_no_forms_found"] = "Pas de formulaires ont été trouvés."; +$LANG["text_no_forms_found_search"] = "Pas de formulaires ont été trouvés. Essayez d'élargir vos critères de recherche."; +$LANG["text_no_modules_found"] = "Pas de modules ont été trouvés. Essayez d'élargir vos critères de recherche."; +$LANG["text_no_recipients_added"] = "Pas de bénéficiaires ont été ajoutées."; +$LANG["text_no_search_results"] = "Il n'ya pas de résultats avec ce critère de recherche / View."; +$LANG["text_no_submissions_found"] = "Désolé, aucune soumission n'a été trouvée."; +$LANG["text_no_themes"] = "Vous n'avez pas tous les thèmes définis. Cliquez sur le bouton ci-dessous pour vous rafraîchir la liste des thèmes, ou vérifier la documentation de l'utilisateur former des outils pour savoir comment ajouter des thèmes."; +$LANG["text_non_deletable_fields"] = "Ce champ est utilisé par le script de base et ne peuvent pas être modifiés ou supprimés sans entraîner des incompatibilités. Si vous souhaitez apporter des modifications au type de terrain, faire une copie et modifier la copie."; +$LANG["text_option_list_group_explanation"] = "Si cette option est sélectionnée, elle permet de regrouper vos options. Comment les groupes sont affichés dépend du type de terrain en utilisant cette liste d'options."; +$LANG["text_option_list_page"] = "Les boutons radio, cases à cocher, menus déroulants et multi-sélectionner les champs déroulant tous les fournir à l'utilisateur de multiples options à partir duquel ils peuvent choisir un ou plusieurs éléments. Dans Outils de formulaire, ces derniers sont connus comme les listes d'options. Généralement, ce sont créées automatiquement par le Formulaire extérieur Ajouter un processus, mais vous pouvez ajouter manuellement ou éditer vos listes option ci-dessous si votre contenu change forme ou vous construisez des champs qui ne sont utilisés en interne."; +$LANG["text_option_list_used_by_fields"] = "Cette liste d'options est utilisé par de multiples champs du formulaire. Si vous mettez à jour les informations ci-dessous, il sera modifié pour tous les champs (voir le formulaire Champs onglet pour voir la liste des champs). Si vous souhaitez mettre à jour les valeurs pour une ou un sous-ensemble des champs qui sont actuellement attribuées, cliquez ici pour créer une liste d'options nouvelles avec les mêmes valeurs que celui-ci. Ensuite, vous pouvez assigner les champs du formulaire que vous voulez le nouveau groupe."; +$LANG["text_public_form_omit_list_page"] = "Formes publiques vous donnent l'avantage de laisser tous les comptes clients y accéder sans avoir à attribuer manuellement à chaque client d'eux. Cette page vous permet de repérer les clients qui mai pas accéder à ce formulaire, même si le formulaire est marqué comme public."; +$LANG["text_public_view_omit_list_page"] = "Opinions du public vous donne l'avantage de laisser tous les comptes clients y accéder sans avoir à attribuer manuellement à chaque client d'eux. Cette page vous permet de repérer les clients qui mai pas accéder à ce point de vue particulier."; +$LANG["text_reference_tab_info"] = "Cette page liste tous les mots-clefs disponibles pour votre formulaire. Les espaces réservés sont des chaînes qui peuvent être utilisées dans les modèles d'email, et les champs marqués d'une icône de substitution spéciaux . Lorsque entré dans un champ, ils sont dynamiquement convertis à la valeur appropriée lorsque le champ est vu ou l'e-mail est envoyé."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Examen de la documentation utilisateur"; +$LANG["text_send_email_from_edit_submission_page"] = "Inclure l'option de vous envoyer cet email à partir de la page Modifier des présentations"; +$LANG["text_smart_fill_option_list_problem"] = "Nous avons été incapables de puce Remplir vos options sur le terrain. Cependant, comme alternative, vous pouvez essayer de télécharger une copie de votre page de formulaire dans le champ ci-dessous. Remarque: ne téléchargez pas les pages PHP premières (ou autre code côté serveur) - il suffit de télécharger la version HTML. Pour l'obtenir, de visualiser et d'enregistrer la page dans votre navigateur web."; +$LANG["text_submission_ip_address"] = "L'adresse IP de l'utilisateur qui a fait la présentation."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Utilisez le formulaire ci-dessous pour voir ou vous envoyer un e-mail généré par ce modèle de courrier électronique. L'email est envoyé uniquement à l'e-mail indiquée ci-dessous, les destinataires adresse principale, cc et bcc email sont ignorés lors des tests."; +$LANG["text_test_email_templates_no_submissions"] = "Pour évaluer vos modèles d'Email, vous devez d'abord effectuer au moins une soumission de formulaire."; +$LANG["text_theme_page_intro"] = "Cette page liste l'ensemble de vos thèmes. Cliquez sur une vignette pour voir un exemple plus de styles du thème. Le "permis" case à cocher détermine si oui ou non ce thème mai être choisis par les clients. Pour naviguer dans tous les thèmes disponibles, visitez le site Web Form Tools."; +$LANG["text_tutorial_adding_first_form"] = "Tutoriel: L'ajout de votre première forme!"; +$LANG["text_unique_submission_id"] = "L'ID de l'unique soumission."; +$LANG["text_unused_option_list"] = "Cette liste d'option n'est pas utilisée par tout les champs du formulaire."; +$LANG["text_upgraded"] = "Votre installation a été amélioré de {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Cette liste d'options est utilisée par les champs suivants."; +$LANG["text_view_fields_info"] = "Cet onglet contrôle les champs qui apparaissent lors de l'édition d'une présentation dans cette vue, leur ordre et si elles sont modifiables ou non."; +$LANG["text_view_tab_summary"] = "Cet onglet vous permet de créer différentes façons de regrouper et d'organiser vos données. Vues vous permettent de créer des sous-ensembles personnalisés de vos données sous forme de la diviser en morceaux maniables, et de limiter ce que les clients peuvent voir ou modifier."; +$LANG["validation_account_disabled"] = "Désolé, votre compte a été désactivé."; +$LANG["validation_account_not_recognized"] = "Désolé, l'identifiant n'est pas reconnu."; +$LANG["validation_account_not_recognized_info"] = "Désolé, l'identifiant n'a pas été trouvé. Merci de bien vouloir essayer de nouveau, ou de contacter l'administrateur du site à l'adresse suivante."; +$LANG["validation_account_pending"] = "Votre compte utilisateur est en attente d'approbation par un administrateur."; +$LANG["validation_check_delete_client"] = "Êtes vous sûr de vouloir supprimer ce compte?"; +$LANG["validation_client_password_missing_number"] = "Le mot de passe du client doit contenir au moins un chiffre (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Le mot de passe du client doit contenir au moins un des caractères suivants: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Le mot de passe du client doit contenir au moins une lettre majuscule."; +$LANG["validation_client_password_too_short"] = "Le mot de passe client doit avoir au moins {\$number} caractères."; +$LANG["validation_col_name_is_reserved_word"] = "Désolé, ce nom de colonne de base de données est un travail réservé dans MySQL. S'il vous plaît le renommer!"; +$LANG["validation_db_name"] = "Les noms de base de données ne peuvent pas contenir de points ou de barres obliques."; +$LANG["validation_db_not_updated_invalid_input"] = "La base de données ne peut être mise à jour. Merci de vérifier que les valeurs indiquées sont valides."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Désolé, l'administrateur par défaut et les thèmes client doit toujours être activé."; +$LANG["validation_default_phone_num_required"] = "S'il vous plaît remplir le numéro de téléphone complet pour la <b> { \$ champ} </ b> - numéros seulement."; +$LANG["validation_default_rule_alpha"] = "S'il vous plaît ne saisissez des lettres et des chiffres pour le <b> { \$ champ} </ b>."; +$LANG["validation_default_rule_letters_only"] = "S'il vous plaît entrer les lettres que pour les <b> { \$ champ} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "S'il vous plaît entrer les chiffres que pour le <b> { \$ champ} </ b>."; +$LANG["validation_default_rule_required"] = "S'il vous plaît entrer une valeur pour l'<b> { \$ champ} </ b>."; +$LANG["validation_default_rule_valid_email"] = "S'il vous plaît entrer une adresse email valide pour la <b> { \$ champ} </ b>."; +$LANG["validation_delete_form_confirm"] = "S'il vous plaît cocher la case pour confirmer que vous souhaitez supprimer ce formulaire."; +$LANG["validation_delete_non_empty_option_list"] = "Attention! Cette liste d'options est utilisée par un ou plusieurs champs du formulaire. Suppression qu'il fera ces domaines cesse de fonctionner correctement."; +$LANG["validation_display_names_incomplete"] = "S'il vous plaît entrer une valeur pour tous les noms affichés sur la, ou cliquez sur l'option Smart Fill à les saisir de manière dynamique."; +$LANG["validation_duplicate_form_field_name"] = "Vous ne pouvez pas avoir plusieurs champs avec le même nom de champ."; +$LANG["validation_email_not_found_or_invalid"] = "Désolé, l'e-mail associée à votre compte soit n'existe pas ou n'est pas valide."; +$LANG["validation_folder_invalid_permissions"] = "Pour pouvoir exécuter le test, les permissions doivent être positionnés, sur le répertoire d'envoi de fichiers, de façon à pouvoir lire et écrire les fichiers (777 sur UNIX)"; +$LANG["validation_folder_not_writable"] = "Répertoire non inscriptible."; +$LANG["validation_internal_form_too_many_fields"] = "Désolé, vous ne pouvez créer des formulaires avec des champs 1000 ou moins."; +$LANG["validation_invalid_admin_email"] = "S'il vous plaît entrez l'adresse e-mail un adminstrator valide."; +$LANG["validation_invalid_admin_username"] = "Votre nom d'utilisateur ne peut comporter des caractères alphanumériques (AZ et 0-9)."; +$LANG["validation_invalid_client_username"] = "Nom d'utilisateur du client mai n'impliquent que des caractères alphanumériques (az et 0-9)."; +$LANG["validation_invalid_client_username2"] = "Désolé, nom d'utilisateur de mai contenir uniquement des lettres, des chiffres et des caractères de soulignement. S'il vous plaît entrer un nouveau nom d'utilisateur."; +$LANG["validation_invalid_column_name"] = "Les noms de colonnes ne peuvent être alphanumériques (AZ, 0-9). S'il vous plaît vérifiez les noms de colonnes."; +$LANG["validation_invalid_custom_from_email"] = "S'il vous plaît entrer une coutume valide 'From' adresse de courriel."; +$LANG["validation_invalid_custom_reply_to_email"] = "S'il vous plaît entrer une coutume valide "Répondre à 'adresse de courriel."; +$LANG["validation_invalid_default_sessions_timeout"] = "S'il vous plaît entrer une valeur valide (un numéro) pour le timeout par défaut sessions."; +$LANG["validation_invalid_email"] = "Merci d'indiquer une adresse email valide."; +$LANG["validation_invalid_email_id"] = "Désolé, c'est un e-mail valide d'identité."; +$LANG["validation_invalid_folder"] = "Désolé, cela ne semble pas être un dossier valide."; +$LANG["validation_invalid_form_field_names"] = "Les champs de formulaire mai seulement être alphanumériques et caractères de soulignement (az, 0-9, _), sans espace."; +$LANG["validation_invalid_num_clients_per_page"] = "Merci d'indiquer uniquement des nombres dans le champ \"Nombre de comptes gestionnaire par page\"."; +$LANG["validation_invalid_num_emails_per_page"] = "S'il vous plaît entrer uniquement des chiffres pour les emails par page."; +$LANG["validation_invalid_num_form_fields"] = "S'il vous plaît ne entrer des chiffres dans le champ Nombre de champs."; +$LANG["validation_invalid_num_forms_per_page"] = "Merci d'indiquer uniquement des nombres dans le champ \"Nombre de formulaires par page\"."; +$LANG["validation_invalid_num_menus_per_page"] = "S'il vous plaît entrer uniquement des chiffres pour les menus par page."; +$LANG["validation_invalid_num_modules_per_page"] = "S'il vous plaît entrez uniquement des nombres dans les modules Num par champ Page."; +$LANG["validation_invalid_num_option_lists_per_page"] = "S'il vous plaît entrer les chiffres que dans les listes d'options Num par champ de page."; +$LANG["validation_invalid_num_submissions_per_page"] = "Merci d'indiquer un \"Nombre de soumissions par page\" valide."; +$LANG["validation_invalid_sessions_timeout"] = "S'il vous plaît entrer un timeout de session valide (entiers seulement!)."; +$LANG["validation_invalid_tab_assign_values"] = "S'il vous plaît entrez uniquement des nombres dans le 'from' et 'en' domaines."; +$LANG["validation_invalid_table_prefix"] = "S'il vous plaît entrer un préfixe base de données se compose de la lettre et le caractère de soulignement seulement."; +$LANG["validation_invalid_upload_folder"] = "Installation de votre serveur de PHP dispose d'un paramètre non valide pour la valeur upload_tmp_dir. "{\$upload_folder}" n'est pas un dossier valide."; +$LANG["validation_invalid_url"] = "S'il vous plaît entrer une URL valide."; +$LANG["validation_invalid_username"] = "Votre nom d'utilisateur mai n'impliquent que des caractères alphanumériques (az et 0-9)."; +$LANG["validation_is_form_active"] = "Merci d'indiquer si le formulaire est activé ou non."; +$LANG["validation_menu_name_taken"] = "Désolé, ce nom de menu est déjà pris. S'il vous plaît choisir un nouveau nom."; +$LANG["validation_modules_search_no_status"] = "S'il vous plaît sélectionner les cases à cocher Activé ou Désactivé."; +$LANG["validation_no_access_type"] = "S'il vous plaît entrez le type d'accès."; +$LANG["validation_no_account_logout_url"] = "S'il vous plaît entrez l'URL de votre déconnexion."; +$LANG["validation_no_account_password_confirmed"] = "S'il vous plaît entrer à nouveau votre nouveau mot de passe."; +$LANG["validation_no_account_password_confirmed2"] = "S'il vous plaît ré-entrer le nouveau mot de passe."; +$LANG["validation_no_admin_email"] = "S'il vous plaît entrez l'adresse e-mail de l'administrateur."; +$LANG["validation_no_admin_theme"] = "S'il vous plaît choisir le thème pour le compte d'administrateur."; +$LANG["validation_no_admin_theme_swatch"] = "S'il vous plaît sélectionner un échantillon pour le thème d'administrateur."; +$LANG["validation_no_client_email"] = "S'il vous plaît entrez l'adresse email du client."; +$LANG["validation_no_client_first_name"] = "S'il vous plaît entrez le prénom du client."; +$LANG["validation_no_client_last_name"] = "S'il vous plaît entrez le nom de famille du client."; +$LANG["validation_no_client_login_page"] = "S'il vous plaît indiquer sur quelle page le client doit être redirigé vers quand ils se connectent po"; +$LANG["validation_no_client_password"] = "S'il vous plaît entrer le mot de passe client."; +$LANG["validation_no_client_theme_swatch"] = "S'il vous plaît sélectionner une nuance par défaut pour les comptes clients."; +$LANG["validation_no_client_username"] = "S'il vous plaît entrez le nom du client."; +$LANG["validation_no_column_name"] = "S'il vous plaît entrer tous les noms de colonnes, ou cliquez sur le bouton Smart Remplissez automatiquement les remplir."; +$LANG["validation_no_column_selected"] = "S'il vous plaît sélectionner au moins un champ d'apparaître comme une colonne sur la page d'annonce de soumission."; +$LANG["validation_no_custom_from_email"] = "S'il vous plaît entrez le custom 'From' adresse de courriel."; +$LANG["validation_no_custom_recipient_email"] = "S'il vous plaît entrez l'email du destinataire personnalisé."; +$LANG["validation_no_custom_reply_to_email"] = "S'il vous plaît entrez le custom 'Répondre à' adresse de courriel."; +$LANG["validation_no_date_format"] = "Merci d'indiquer un format de date."; +$LANG["validation_no_db_column_single"] = "S'il vous plaît entrez le nom de colonne de base."; +$LANG["validation_no_db_hostname"] = "S'il vous plaît entrez le nom d'hôte de base de données."; +$LANG["validation_no_db_name"] = "S'il vous plaît entrez le nom de base de données."; +$LANG["validation_no_db_username"] = "S'il vous plaît entrez le nom d'utilisateur de base de données."; +$LANG["validation_no_default_client_theme"] = "S'il vous plaît sélectionner le thème par défaut pour tous les nouveaux comptes clients."; +$LANG["validation_no_default_language"] = "Merci d'indiquer la langue pour l'installation de Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "S'il vous plaît entrez le délai de session par défaut pour les comptes d'utilisateurs."; +$LANG["validation_no_display_text"] = "S'il vous plaît entrez le texte à afficher pour chaque champ."; +$LANG["validation_no_display_text_single"] = "S'il vous plaît entrez la valeur de texte d'affichage."; +$LANG["validation_no_edit_submission_page_label"] = "S'il vous plaît entrez la commande Edition Soumission label page."; +$LANG["validation_no_email"] = "Merci d'indiquer votre adresse email."; +$LANG["validation_no_email_config_field"] = "S'il vous plaît spécifier quels champ de formulaire est le champ email."; +$LANG["validation_no_email_content"] = "S'il vous plaît entrer le contenu des e-mail pour au moins l'un des formats (HTML ou texte)."; +$LANG["validation_no_email_from_field"] = "S'il vous plaît l'email de champ 'From'."; +$LANG["validation_no_email_template_name"] = "S'il vous plaît entrez l'email nom de modèle."; +$LANG["validation_no_email_template_view_id"] = "S'il vous plaît sélectionnez la vue à laquelle le présent modèle de courrier électronique devraient être cartographiés."; +$LANG["validation_no_email_template_view_mapping_value"] = "S'il vous plaît indiquer le moment où l'e-mail doit être envoyé."; +$LANG["validation_no_enabled_themes"] = "S'il vous plaît veiller à ce qu'au moins un thème est activé."; +$LANG["validation_no_first_name"] = "Merci d'indiquer votre prénom."; +$LANG["validation_no_form_field_name"] = "S'il vous plaît entrer tous les noms de champ de formulaire."; +$LANG["validation_no_form_field_single"] = "S'il vous plaît entrez la valeur du champ de formulaire."; +$LANG["validation_no_form_id"] = "L'ID de formulaire n'a pas été spécifié. Merci de vous déconnecter et d'essayer à nouveau."; +$LANG["validation_no_form_name"] = "Merci d'indiquer le nom du formulaire."; +$LANG["validation_no_form_url"] = "Merci d'indiquer l'URL du formulaire."; +$LANG["validation_no_last_name"] = "Merci d'indiquer votre nom."; +$LANG["validation_no_login_page"] = "S'il vous plaît indiquer sur quelle page vous souhaitez être envoyé chaque fois que vous ouvrez une session"; +$LANG["validation_no_logout_url"] = "Merci d'indiquer l'URL de déconnexion."; +$LANG["validation_no_main_email_recipient"] = "S'il vous plaît entrer au moins un destinataire de messagerie électronique principal (donc pas un CC ou BCC)."; +$LANG["validation_no_menu"] = "S'il vous plaît sélectionner un menu pour ce compte utilisateur."; +$LANG["validation_no_menu_id"] = "S'il vous plaît sélectionner un menu."; +$LANG["validation_no_num_clients_per_page"] = "Merci d'indiquer le nombre de comptes gestionnaire par page."; +$LANG["validation_no_num_emails_per_page"] = "S'il vous plaît entrez le nombre de courriels à la liste par page."; +$LANG["validation_no_num_form_fields"] = "S'il vous plaît entrez le nombre de champs de votre formulaire."; +$LANG["validation_no_num_forms_per_page"] = "d'indiquer le nombre de formulaires par page."; +$LANG["validation_no_num_menus_per_page"] = "S'il vous plaît entrez le nombre de menus à la liste par page."; +$LANG["validation_no_num_modules_per_page"] = "S'il vous plaît entrez le nombre de modules par page."; +$LANG["validation_no_num_option_lists_per_page"] = "S'il vous plaît entrez le nombre de listes d'options par page."; +$LANG["validation_no_num_submissions_per_page"] = "Merci d'indiquer le nombre de soumissions à afficher par page."; +$LANG["validation_no_option_list_name"] = "S'il vous plaît entrez le nom de la liste des options."; +$LANG["validation_no_page_titles"] = "S'il vous plaît entrez les titres de page par défaut pour les comptes d'utilisateurs."; +$LANG["validation_no_password"] = "Merci d'indiquer votre mot de passe."; +$LANG["validation_no_program_name"] = "Merci d'indiquer le nom du programme."; +$LANG["validation_no_second_password"] = "S'il vous plaît entrer à nouveau votre mot de passe."; +$LANG["validation_no_sessions_timeout"] = "S'il vous plaît entrez le timeout session."; +$LANG["validation_no_smart_fill_values"] = "S'il vous plaît entrez le nom du champ de formulaire, l'URL de la forme."; +$LANG["validation_no_table_prefix"] = "S'il vous plaît entrer un préfixe base de données."; +$LANG["validation_no_tabs_defined"] = "Pas de tabulation définie"; +$LANG["validation_no_test_email_recipient"] = "S'il vous plaît entrez l'adresse électronique de l'endroit où nous devons envoyer le message de test."; +$LANG["validation_no_test_email_submission_id"] = "S'il vous plaît entrer le numéro d'identification de la soumission."; +$LANG["validation_no_theme"] = "S'il vous plaît sélectionnez un thème."; +$LANG["validation_no_theme_swatch"] = "S'il vous plaît sélectionner un échantillon pour le thème choisi."; +$LANG["validation_no_timezone_offset"] = "S'il vous plaît entrer le décalage horaire."; +$LANG["validation_no_titles"] = "Merci d'indiquer le titre des pages."; +$LANG["validation_no_two_column_names"] = "Désolé, vous ne pouvez utiliser le même nom de colonne deux fois."; +$LANG["validation_no_ui_language"] = "S'il vous plaît sélectionnez une langue pour l'interface."; +$LANG["validation_no_url"] = "S'il vous plaît entrer une URL."; +$LANG["validation_no_username"] = "Merci d'indiquer votre identifiant."; +$LANG["validation_no_username_or_js"] = "Vous devez indiquer votre identifiant. Merci d'activer javascript dans votre navigateur."; +$LANG["validation_no_view_fields"] = "Votre vue ne contient pas de champs! Vous devez affecter au moins un champ pour qu'il y ait quelque chose à montrer dans votre vue."; +$LANG["validation_no_view_fields_selected"] = "S'il vous plaît sélectionner un ou plusieurs champs à ajouter à la vue."; +$LANG["validation_no_view_name"] = "S'il vous plaît entrez le nom de votre vue."; +$LANG["validation_num_rows_to_add"] = "Merci d'indiquer le nombre de lignes à ajouter."; +$LANG["validation_option_list_name_taken"] = "Désolé, ce nom liste d'option est déjà prise. S'il vous plaît choisir un nouveau nom."; +$LANG["validation_password_in_password_history"] = "Par sécurité, vous ne pouvez pas entrer le mot de passe identique à l'une des dernières{\$history_size} mots de passe. S'il vous plaît entrer un mot de passe différent."; +$LANG["validation_passwords_different"] = "Merci de vous assurer que les mots de passe sont identiques."; +$LANG["validation_please_enter_search_date_range"] = "Merci d'indiquer la période de recherche."; +$LANG["validation_please_enter_search_keyword"] = "Merci d'indiquer le mot à rechercher."; +$LANG["validation_select_field_type"] = "S'il vous plaît sélectionner un type de champ."; +$LANG["validation_select_submissions_to_copy"] = "Veuillez sélectionner les soumissions que vous souhaitez copier."; +$LANG["validation_select_submissions_to_delete"] = "Merci d'indiquer les lignes de soumission que vous souhaitez supprimer."; +$LANG["validation_smart_fill_cannot_fill"] = "Désolé, nous ne pourrions pas remplir ce champ."; +$LANG["validation_smart_fill_invalid_field_type"] = "Nous n'avons pas pu trouver un terrain, mais ce n'est pas une liste déroulante, case à cocher ou un groupe de radio."; +$LANG["validation_smart_fill_no_field_found"] = "Désolé, nous n'avons pas pu trouver un champ de formulaire avec ce nom sur la page indiquée."; +$LANG["validation_smart_fill_no_page"] = "S'il vous plaît localiser la page contenant le champ que vous souhaitez Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "S'il vous plaît télécharger toutes les pages de votre formulaire."; +$LANG["validation_upload_folder_not_writable"] = "Le répertoire temporaire, réservé à l'envoi de fichiers, spécifié dans l'installation PHP n'est pas inscriptible. Tant que ce n'est pas corrigé, les fichiers ne peuvent être envoyé vers Form Tools (ou tout autre programme PHP). Merci de contacter votre fournisseur d'hébergement."; +$LANG["validation_upload_html_files_only"] = "S'il vous plaît des fichiers HTML uniquement télécharger."; +$LANG["validation_username_taken"] = "Désolé, l'identifiant indiqué est déjà utilisé. Merci d'indiquer un autre identifiant."; +$LANG["validation_wrong_password"] = "Désolé, le mot de passe ne correspond pas."; +$LANG["word_about"] = "À propos de"; +$LANG["word_access"] = "Accès"; +$LANG["word_account"] = "Compte"; +$LANG["word_account_sp"] = "Compte (s)"; +$LANG["word_accounts"] = "Comptes"; +$LANG["word_action"] = "Action"; +$LANG["word_active"] = "Actif"; +$LANG["word_add"] = "Ajouter"; +$LANG["word_add_rightarrow"] = "Ajouter »"; +$LANG["word_add_uc_rightarrow"] = "Ajouter »"; +$LANG["word_administration"] = "Administration"; +$LANG["word_administrator"] = "Administrateur"; +$LANG["word_after"] = "Après"; +$LANG["word_aquamarine"] = "Aigue-marine"; +$LANG["word_asc"] = "ASC"; +$LANG["word_author"] = "Auteur"; +$LANG["word_author_c"] = "Auteur:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«retour"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Avant"; +$LANG["word_benefits"] = "Avantages"; +$LANG["word_blue"] = "Bleu"; +$LANG["word_cancel"] = "Annuler"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Cases à cocher"; +$LANG["word_checklist"] = "Liste de contrôle"; +$LANG["word_client"] = "Gestionnaire"; +$LANG["word_client_c"] = "Client:"; +$LANG["word_clients"] = "Gestionnaire"; +$LANG["word_close"] = "FERMÉ"; +$LANG["word_code"] = "Code"; +$LANG["word_column"] = "Colonne"; +$LANG["word_columns"] = "Colonnes"; +$LANG["word_columns_sp"] = "Colonne (s)"; +$LANG["word_complete"] = "COMPLÉTÉ"; +$LANG["word_configuration"] = "Configuration"; +$LANG["word_content"] = "Contenu"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continuer »"; +$LANG["word_copy"] = "Copie"; +$LANG["word_custom"] = "Personnaliser"; +$LANG["word_data"] = "Données"; +$LANG["word_date"] = "Date"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "EFFACER"; +$LANG["word_desc"] = "DESC"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "Désactivé"; +$LANG["word_documentation"] = "Documentation"; +$LANG["word_done"] = "Fait"; +$LANG["word_drawbacks"] = "Inconvénients"; +$LANG["word_dropdown"] = "Liste déroulante"; +$LANG["word_edit"] = "ÉDITER"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "EMAIL"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Activé"; +$LANG["word_equals"] = "Egale"; +$LANG["word_error"] = "Erreur"; +$LANG["word_error_c"] = "Erreur :"; +$LANG["word_examples_c"] = "Exemples:"; +$LANG["word_external"] = "Externe"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Champ"; +$LANG["word_field_sp"] = "Champ(s)"; +$LANG["word_fields"] = "Domaines"; +$LANG["word_fields_sp"] = "Champ (s)"; +$LANG["word_file"] = "Fichier"; +$LANG["word_file_b_uc"] = "[FICHIER]"; +$LANG["word_files"] = "Fichiers"; +$LANG["word_filters"] = "Filtres"; +$LANG["word_filters_sp"] = "Filtre (s)"; +$LANG["word_for"] = "pour"; +$LANG["word_form"] = "Formulaire"; +$LANG["word_form_c"] = "Formulaire:"; +$LANG["word_formatting"] = "Formatage"; +$LANG["word_forms"] = "Formulaires"; +$LANG["word_found"] = "Trouvé"; +$LANG["word_from"] = "De"; +$LANG["word_from_c"] = "De :"; +$LANG["word_general"] = "Général"; +$LANG["word_green"] = "Vert"; +$LANG["word_grey"] = "Gris"; +$LANG["word_height"] = "Hauteur"; +$LANG["word_help"] = "Aide"; +$LANG["word_hidden"] = "Invisible"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Heure"; +$LANG["word_hours"] = "Heures"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Incomplet"; +$LANG["word_install"] = "Installez"; +$LANG["word_installation"] = "Installation"; +$LANG["word_internal"] = "Interne"; +$LANG["word_language"] = "Langue"; +$LANG["word_large"] = "Grand"; +$LANG["word_like"] = "Comme"; +$LANG["word_login"] = "IDENTIFIANT"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Fermeture de session"; +$LANG["word_main"] = "Principal"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "minutes"; +$LANG["word_misc"] = "Divers"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N/A"; +$LANG["word_name"] = "Nom"; +$LANG["word_name_c"] = "Nom:"; +$LANG["word_never"] = "Jamais"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "Étape suivante »"; +$LANG["word_no"] = "Non"; +$LANG["word_none"] = "Aucun"; +$LANG["word_notes"] = "Notes"; +$LANG["word_notification"] = "Notification"; +$LANG["word_number"] = "Nombre"; +$LANG["word_off"] = "Hors tension"; +$LANG["word_offline"] = "Hors ligne"; +$LANG["word_okay"] = "Bien"; +$LANG["word_on"] = "Sur"; +$LANG["word_online"] = "En ligne"; +$LANG["word_operator"] = "Opérateur"; +$LANG["word_options"] = "Options"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Ordre"; +$LANG["word_other"] = "Autre"; +$LANG["word_other_c"] = "Autres:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Page :"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Mot de passe"; +$LANG["word_password_c"] = "Mot de passe:"; +$LANG["word_pending"] = "En attente"; +$LANG["word_permissions"] = "Permissions"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«previous"; +$LANG["word_private"] = "Privé"; +$LANG["word_public"] = "Public"; +$LANG["word_purple"] = "Violet"; +$LANG["word_recipient"] = "Destinataire"; +$LANG["word_recipient_sp"] = "Destinataire(s)"; +$LANG["word_red"] = "Rouge"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Supprimer"; +$LANG["word_remove_uc_leftarrow"] = "«Enlevez"; +$LANG["word_reply_to"] = "Répondre à"; +$LANG["word_reply_to_c"] = "Répondre à :"; +$LANG["word_required"] = "Obligatoires"; +$LANG["word_reset"] = "Réinitialisation"; +$LANG["word_resolved"] = "Résolue"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "consécutive"; +$LANG["word_search"] = "Chercher"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Sélectionnez"; +$LANG["word_setting"] = "Paramètre"; +$LANG["word_settings"] = "PARAMÈTRES"; +$LANG["word_show"] = "Montrer"; +$LANG["word_size"] = "Taille"; +$LANG["word_skipped"] = "Skipped"; +$LANG["word_small"] = "Petite"; +$LANG["word_solution"] = "Solution"; +$LANG["word_sortable"] = "Tri"; +$LANG["word_start"] = "Démarrer"; +$LANG["word_status"] = "État"; +$LANG["word_string"] = "Chaîne"; +$LANG["word_subject"] = "Sujet"; +$LANG["word_subject_c"] = "Sujet"; +$LANG["word_submenu"] = "Sous-menu"; +$LANG["word_submission"] = "Soumission"; +$LANG["word_submissions"] = "Soumissions"; +$LANG["word_system"] = "Système"; +$LANG["word_tab"] = "Onglet"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Tester"; +$LANG["word_text"] = "Texte"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Thème"; +$LANG["word_themes"] = "Thèmes"; +$LANG["word_time"] = "Temps"; +$LANG["word_tiny"] = "Minuscules"; +$LANG["word_tips"] = "Conseils"; +$LANG["word_today"] = "Aujourd'hui"; +$LANG["word_truncate_q"] = "Tronquer?"; +$LANG["word_uninstall"] = "Désinstaller"; +$LANG["word_unknown"] = "Inconnue"; +$LANG["word_update"] = "METTRE Á JOUR"; +$LANG["word_upgrade"] = "Mise à niveau"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Utilisateur"; +$LANG["word_username"] = "Identifiant"; +$LANG["word_username_c"] = "Identifiant:"; +$LANG["word_validation"] = "Validation"; +$LANG["word_value"] = "Valeur"; +$LANG["word_value_sp"] = "Valeur(s)"; +$LANG["word_verified"] = "Vérifié"; +$LANG["word_verify"] = "Vérifiez"; +$LANG["word_version"] = "Version"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Voir"; +$LANG["word_views"] = "Vues"; +$LANG["word_warning"] = "Avertissement!"; +$LANG["word_warning_c"] = "Avertissement:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Bienvenue!"; +$LANG["word_width_c"] = "largeur:"; +$LANG["word_words"] = "Mots"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Jaune"; +$LANG["word_yes"] = "Oui"; \ No newline at end of file diff --git a/global/lang/ga.php b/global/lang/ga.php new file mode 100644 index 00000000..152fe50f --- /dev/null +++ b/global/lang/ga.php @@ -0,0 +1,1219 @@ +Rabhadh! Agat roghnaigh {\$num_selected_on_page} aighneachtaí ar an leathanach seo agus {\$num_selected_on_other_pages} ar leathanaigh eile. Roghnaigh ceann amháin de na roghanna seo a leanas:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Rabhadh! Níor thug tú roghnaithe aon aighneachtaí ar an leathanach seo ach tú atá roghnaithe {\$num_selected_on_other_pages} ar leathanaigh eile. Cinntigh gur mhaith leat a scriosadh na aighneachtaí.
    "; +$LANG["confirm_delete_view"] = "An bhfuil tú cinnte gur mian leat seo a scriosadh View?"; +$LANG["confirm_refresh_page"] = "An bhfuil tú cinnte gur mian leat a athnuachan ar an leathanach seo? Beidh sé seo chailleann aon athruithe déanta agat."; +$LANG["confirm_save_change_before_redirect"] = "Amháin nó níos mó réimsí tugtha cothrom le dáta. Ar mhaith leat do chuid athruithe a shábháil roimh atreorú?"; +$LANG["confirm_smart_fill_db_column_fields"] = "An bhfuil tú cinnte gur mian leat a Cliste Líon na n-ainmneacha colún mbunachar sonraí? Beidh an scríobh do luachanna atá ann cheana."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "An rogha seo uathoibríoch Gineann-ainmneacha colún database bunaithe ar na réimsí Taispeáin Téacs, mar sin an t-ábhar ar an tábla bunachar sonraí atá níos éasca le léamh."; +$LANG["confirm_smart_fill_display_names"] = "An bhfuil tú cinnte gur mian leat a Cliste Líon na n-ainmneacha Taispeáin? Beidh an scríobh do luachanna atá ann cheana."; +$LANG["confirm_ungroup_option_list"] = "An bhfuil tú cinnte gur mian leat a Díghrúpáil rogha an liosta seo? Beidh gach roghanna lumped isteach i liosta amháin, ungrouped."; +$LANG["confirm_uninstall_module"] = "An bhfuil tú cinnte gur mian leat a dhíshuiteáil an modúl seo? Beidh na sonraí uile modúl a chailliúint."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Aoine"; +$LANG["date_Friday"] = "Dé hAoine"; +$LANG["date_Mon"] = "Luan"; +$LANG["date_Monday"] = "Dé luain"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sath"; +$LANG["date_Saturday"] = "Dé Sathairn"; +$LANG["date_Sun"] = "Grian"; +$LANG["date_Sunday"] = "Dé domhnaigh"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Déardaoin"; +$LANG["date_Tue"] = "Máirt"; +$LANG["date_Tuesday"] = "Dé máirt"; +$LANG["date_Wed"] = "Céad"; +$LANG["date_Wednesday"] = "Dé Céadaoin"; +$LANG["date_am"] = "rn"; +$LANG["date_month_April"] = "Aibreán"; +$LANG["date_month_August"] = "Lúnasa"; +$LANG["date_month_December"] = "Nollaig"; +$LANG["date_month_February"] = "Feabhra"; +$LANG["date_month_January"] = "Eanáir"; +$LANG["date_month_July"] = "Iúil"; +$LANG["date_month_June"] = "Meitheamh"; +$LANG["date_month_March"] = "Márta"; +$LANG["date_month_May"] = "Seans"; +$LANG["date_month_November"] = "Samhain"; +$LANG["date_month_October"] = "Deireadh Fómhair"; +$LANG["date_month_September"] = "Meán Fómhair"; +$LANG["date_month_short_Apr"] = "Aibreán"; +$LANG["date_month_short_Aug"] = "Lúnasa"; +$LANG["date_month_short_Dec"] = "Nollaig"; +$LANG["date_month_short_Feb"] = "Feabhra"; +$LANG["date_month_short_Jan"] = "Ean"; +$LANG["date_month_short_Jul"] = "Iúil"; +$LANG["date_month_short_Jun"] = "Meitheamh"; +$LANG["date_month_short_Mar"] = "Már"; +$LANG["date_month_short_May"] = "Seans"; +$LANG["date_month_short_Nov"] = "Samhain"; +$LANG["date_month_short_Oct"] = "Deireadh Fómhair"; +$LANG["date_month_short_Sep"] = "Meán Fómhair"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Tá an cuntas úsáideora seo scriosta."; +$LANG["notify_account_updated"] = "Tá do chuntas a thabhairt suas chun dáta go rathúil."; +$LANG["notify_add_display_values"] = "Cuir Taispeáin Luachanna"; +$LANG["notify_admin_menu_updated"] = "Tá an roghchlár riarachán tugtha cothrom le dáta."; +$LANG["notify_admin_theme_overridden"] = "Tá an riarthóir téama curtha de láimh shárú."; +$LANG["notify_allow_url_fopen_not_set"] = "Tá brón orainn, ní féidir an tástáil a reáchtáil ar do fhreastalaí gréasáin. Éilíonn sé go allow_url_fopen a shocrú go 1 i do chomhad php.ini. Seo a leagan síos ar chumas PHP chun comhaid a rochtain trí URL, a bhfuil riachtanach chun a bhfeidhmeanna seo tástála. Is féidir leat tástála de láimh ag uaslódáil comhad leis an fillteán via FTP, ansin ag iarraidh rochtain a fháil air ag an URL agat ar fáil."; +$LANG["notify_change_temp_password"] = "Logáilte isteach tú díreach i le focal faire sealadach. Ba chóir duit do phasfhocal a athshocrú anois!"; +$LANG["notify_click_to_edit_new_submission"] = "Cliceáil anseo chun an t-aighneacht nua a eagrú."; +$LANG["notify_client_account_menus_updated"] = "Tá an cuntas cliant (í) curtha suas chun dáta chun an {\$menu_name} roghchlár. Is féidir leat anois scriosadh an roghchlár a bhí roimhe sin a bhaineann leis an gcuntas (s)."; +$LANG["notify_client_account_not_updated"] = "Níorbh fhéidir an cuntas chliaint a thabhairt suas chun dáta."; +$LANG["notify_client_account_themes_updated"] = "Tá an cuntas cliant (s) tugtha cothrom le dáta ar an {\$theme} Is féidir leat a dhíchumasú anois an téama roimhe sin a bhaineann leis an gcuntas (s)."; +$LANG["notify_client_account_updated"] = "Tá an cuntas cliant tugtha cothrom le dáta go rathúil."; +$LANG["notify_client_menu_deleted"] = "Tá an roghchlár cliant scriosadh."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Tá an roghchlár a scriosadh, ach na cuntais seo a leanas cliant anois a thuilleadh a bheith roghchlár! Ní mór duit a thabhairt suas chun dáta na cuntais seo a leanas:"; +$LANG["notify_client_menu_updated"] = "Tá an roghchlár cliant tugtha cothrom le dáta."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Tá brón orainn, an roghchlár a rinne tú ach go scriosadh é á úsáid cheana féin ag na cliaint atá liostaithe thíos. D'fhonn a scriosadh roghchlár beidh ort ar dtús chun na cliaint a shannadh do biachláir eile. Cliceáil ar an ainm cliant a chur in eagar go cuntas ar leith, nó ar na cuntais go léir a shannadh go roghchlár éagsúla ag baint úsáide as an dropdown thíos."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Tá brón orainn, ceann de na téamaí faoi mhíchumas tú díreach á n-úsáid cheana féin ag an gcliant cuntais seo a leanas. D'fhonn a dhíchumasú an téama, beidh ort an chéad do gach cliant a shannadh do téama eile. Cliceáil ar an ainm cliant a chur in eagar go cuntas ar leith, nó ar na cuntais go léir a shannadh ar an téama úsáid a bhaint as an dropdown thíos."; +$LANG["notify_edit_email_fields_link"] = "Cliceáil anseo a shonrú a bhfuil réimsí bhfoirm páirceanna r-phost, ionas gur féidir leat díriú orthu i do teimpléid ríomhphost."; +$LANG["notify_edit_field_new_field"] = "Is é seo an réimse nua. Beidh ort a thabhairt cothrom le dáta an príomh-leathanach roimh a bheith in ann a chur in eagar go hiomlán leis an réimse seo."; +$LANG["notify_edit_option_list_after_save"] = "Ní mór duit a roghnú agus ansin Rogha Liosta Sábháil Athruithe roimh a bheith in ann a chur in eagar é."; +$LANG["notify_email_field_config_deleted"] = "Tá an chumraíocht ríomhphoist a scriosadh."; +$LANG["notify_email_fields_not_updated"] = "Tá brón orm, ní raibh muid ábalta tabhairt cothrom le dáta an réimsí ríomhphost."; +$LANG["notify_email_fields_updated"] = "Na réimsí ríomhphoist tugtha cothrom le dáta."; +$LANG["notify_email_not_sent"] = "Tá brón orm, ní fhéadfadh an ríomhphost a sheoladh. Téigh i dteagmháil le riarthóir an tsuímh ag an seoladh thíos."; +$LANG["notify_email_not_sent_c"] = "Tá brón orm, ní fhéadfadh an ríomhphost a sheoladh:"; +$LANG["notify_email_sent"] = "An ríomhphost (í) a sheoladh."; +$LANG["notify_email_template_deleted"] = "An ríomhphost Tá an teimpléad seo scriosta."; +$LANG["notify_email_template_updated"] = "An ríomhphost Tá teimpléad a thabhairt suas chun dáta."; +$LANG["notify_enabled_module_list_updated"] = "Tá an liosta de na modúil ar chumas tugtha cothrom le dáta."; +$LANG["notify_error_saving_fields"] = "Tharla earráid agus sábháil na páirceanna."; +$LANG["notify_field_changes_saved"] = "Tá na hathruithe ar do réimse (í) a bheith sábháilte."; +$LANG["notify_field_options_smart_filled"] = "Do réimse roghanna curtha Cliste Líonta."; +$LANG["notify_field_selected"] = "Tá an réimse a roghnaíodh. Cliceáil anseo chun filleadh ar an liosta réimse is mó."; +$LANG["notify_field_updated"] = "Tá an réimse seo a thabhairt suas chun dáta."; +$LANG["notify_file_not_uploaded"] = "Níorbh fhéidir an comhad a uaslódáil."; +$LANG["notify_file_uploaded"] = "An comhad a uaslódáil go rathúil."; +$LANG["notify_filters_not_updated"] = "Tharla earráid thabhairt cothrom le dáta scagairí aighneacht seo chliaint."; +$LANG["notify_filters_updated"] = "Na scagairí aighneacht tugtha cothrom le dáta ar an chliaint."; +$LANG["notify_folder_correct_permissions"] = "Tá an fillteán an cead a cheartú."; +$LANG["notify_folder_url_match"] = "An fillteán agus URL dealraitheach a mheaitseáil gceart."; +$LANG["notify_folder_url_no_access"] = "Ní fhéadfaí an tástáil a dhéanamh toisc go raibh PHP in ann rochtain a fháil ar a URL. Tá sé seo de ghnáth ba chúis leis an focal faire URL á chosaint le comhaid. Htaccess."; +$LANG["notify_folder_url_no_match"] = "Ní dhéanann an fillteán-URL gcomhar le fáil a bheith ar chluiche."; +$LANG["notify_folder_url_unknown_error"] = "Tharla earráid anaithnid. Is féidir leat tástála de láimh ag uaslódáil comhad leis an fillteán via FTP, ansin ag iarraidh rochtain a fháil air ag an URL agat ar fáil."; +$LANG["notify_form_access_type_email_info"] = "Tá an fhoirm seo a rochtain cineál riarthóir, mar sin níl aon chliaint rochtain a bheith air agus nach bhfuil liostaithe sa thíos dropdown."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Tá brón orainn, ní mór foirm le nach ID ann."; +$LANG["notify_form_field_not_added"] = "Ní fhéadfadh an réimse an fhoirm '{\$fieldname}' a chur leis."; +$LANG["notify_form_field_options_updated"] = "An réimse roghanna fhoirm tugtha cothrom le dáta."; +$LANG["notify_form_field_removed"] = "An réimse fhoirm Baineadh go rathúil."; +$LANG["notify_form_fields_removed"] = "Na réimsí fhoirm baineadh go rathúil."; +$LANG["notify_form_not_updated_notify_admin"] = "Níorbh fhéidir do an fhoirm a thabhairt suas chun dáta. Téigh i dteagmháil le riarthóir an tsuímh le tuarascáil an fhadhb seo."; +$LANG["notify_form_settings_updated"] = "Do socruithe bhfoirm tugtha cothrom le dáta go rathúil."; +$LANG["notify_form_submission_updated"] = "Tá an aighneacht fhoirm tugtha cothrom le dáta."; +$LANG["notify_form_tabs_updated"] = "An Cluaisíní tugtha cothrom le dáta."; +$LANG["notify_form_updated"] = "Tá an fhoirm a thabhairt suas chun dáta go rathúil."; +$LANG["notify_form_views_updated"] = "An fhoirm Tuairimí tugtha cothrom le dáta."; +$LANG["notify_install_invalid_db_info"] = "Tá brón orainn, bhí muid in ann ceangal leis an mbunachar sonraí ag baint úsáide as an eolas ar fáil duit. Is é an teachtaireacht earráide an bunachar sonraí ar ais: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Tá d'fhoirm cruthaithe! Is féidir leat a chumrú d'fhoirm trí na tabs."; +$LANG["notify_invalid_account_information_in_sessions"] = "An fhaisnéis arna stóráil áireamh i seisiúin a neamhbhailí. Le do thoil, logáil isteach arís thíos."; +$LANG["notify_invalid_license_key"] = "Tá brón orainn, nach dealraitheach a bheith ina eochair ceadúnas bailí. Bain triail as ag dul isteach arís."; +$LANG["notify_invalid_permissions"] = "Ní gá duit na ceadanna a leathanach seo a rochtain. Tú curtha amach tú logáilte isteach."; +$LANG["notify_invalid_search_dates"] = "Bain úsáid as an datepicker a chur isteach le dáta nó dátaí bailí."; +$LANG["notify_invalid_upload_folder"] = "Is é an fillteán a uaslódáil neamhbhailí ceachtar bhfuil nó nach bhfuil inscríofa."; +$LANG["notify_lang_list_updated"] = "Tá an liosta teanga atá ar fáil Chomhéadain tugtha cothrom le dáta."; +$LANG["notify_login_info_emailed"] = "Tá do faisnéis logáil isteach ar ríomhphost duit."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, tá an modúl suiteáilte cheana féin!"; +$LANG["notify_module_installed"] = "Tá an modúl curtha isteach. Cliceáil anseo chun roghnú an mhodúil."; +$LANG["notify_module_list_updated"] = "Tá an liosta modúl tugtha cothrom le dáta."; +$LANG["notify_module_uninstalled"] = "Tá an modúl a bhfuil suiteáilte."; +$LANG["notify_module_updated"] = "Tá an modúl {\$module} tugtha cothrom le dáta chun {\$version}. Cliceáil anseo chun an roghnaigh an mhodúil ."; +$LANG["notify_multi_field_selected"] = "Tá an réimse a roghnaíodh. Cliceáil anseo chun amharc agus an réimse roghanna a athrú."; +$LANG["notify_multi_field_updated"] = "Tá an réimse seo a thabhairt suas chun dáta. Beidh tú in ann a chumrú an réimse roghanna tar éis bhunú an bhfoirm."; +$LANG["notify_multiple_fields_found"] = "Fuarthas go raibh gnéithe iomadúla leis an ainm seo réimse ({\$field_name}). Is féidir seo tarlú má tá do leathanach níos mó ná foirm amháin nó má tá tú ainmnithe de thaisme ceann de do chuid foirmeacha mar an gcéanna eile. Roghnaigh an ceann is mian leat as an liosta thíos."; +$LANG["notify_new_default_view_created"] = "Tá Féach ar mhainneachtain nua, ina bhfuil gach do páirceanna a cruthaíodh."; +$LANG["notify_new_submission_created"] = "Tá an aighneacht cruthaithe. Is féidir leat in eagar air thíos."; +$LANG["notify_no_account_id_in_sessions"] = "Níor aimsíodh aon ID cuntas úsáideora i seisiún. Le do thoil, logáil isteach arís thíos."; +$LANG["notify_no_api_installed"] = "Ní gá duit an API suiteáilte"; +$LANG["notify_no_client_permissions"] = "Níl aon socruithe ar fáil a chur in eagar."; +$LANG["notify_no_email_template_selected"] = "Roghnaigh an ríomhphost teimpléad."; +$LANG["notify_no_emails_defined"] = "Uimh ríomhphoist a bhí sainithe le haghaidh an fhoirm seo. Chun add a ceann nua, cliceáil ar an cnaipe thíos."; +$LANG["notify_no_field_settings"] = "Ní chiallaíonn sé seo go bhfuil réimse den chineál aon socruithe breise."; +$LANG["notify_no_fields_in_tab"] = "Ní dhéanann an cluaisín bhfuil aon réimsí."; +$LANG["notify_no_option_lists"] = "Níl aon rogha atá sainithe liostaí. Cliceáil ar an gcnaipe seo thíos a chruthú ceann nua."; +$LANG["notify_no_test_submission"] = "Nach bhfuil Foirm Uirlisí fuair aighneacht tástáil rathúil go fóill."; +$LANG["notify_no_user_email_fields_configured"] = "Nóta: más mian leat ríomhphost a sheoladh chuig aon seoladh ríomhphoist san áireamh gur i bhfoirm, caithfidh tú an chéad a chumrú na réimsí ríomhphost fhoirm."; +$LANG["notify_no_views"] = "Ní bheidh ar do fhoirm ar bith Tuairimí ar bun! Beidh ort amháin ar a laghad Féach d'fhonn a bhainistiú do shonraí fhoirm."; +$LANG["notify_no_views_assigned_to_client_form"] = "Dealraíonn sé nach bhfuil do chuntas úsáideora sannta chuig aon Radhairc bhfoirm, mar sin ní bheidh tú in ann a fheiceáil aon sonraí. Déan teagmháil leis an riarthóir chun cabhair a thuilleadh."; +$LANG["notify_no_views_defined"] = "Ní gá duit aon Radhairc sainithe. Ní bheidh tú in ann féachaint ar an bhfoirm seo mura gcuirtear in aighneachtaí amháin ar a laghad View cruthaithe. Cliceáil ar an gcnaipe seo thíos a chruthú ar an Féach ar réamhshocraithe."; +$LANG["notify_option_list_deleted"] = "Tá an liosta rogha been deleted."; +$LANG["notify_option_list_updated"] = "Tá an liosta rogha tugtha cothrom le dáta."; +$LANG["notify_public_form_omit_list_updated"] = "Ag an gcliant liosta fhágáil ar lár as an bhfoirm seo curtha suas chun dáta."; +$LANG["notify_public_view_omit_list_updated"] = "Ag an gcliant fhágáil ar lár as liosta seo Féach Tá suas chun dáta."; +$LANG["notify_required_admin_pages"] = "Na leathanaigh seo a leanas ag teastáil sa roghchlár riarthóir: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Tá brón orm, ní raibh aon ghníomhaíocht ar feadh tamaill bhí sin againn a logáil tú amach. Le do thoil, logáil isteach arís thíos."; +$LANG["notify_setup_options_updated"] = "Na roghanna thus tugtha cothrom le dáta."; +$LANG["notify_smart_fill_field_not_found"] = "Bhí muid in ann teacht ar réimse leis an ainm ({\$field_name}) i bhfoirm (í) atá sonraithe. Is féidir leat a leagtar ceachtar de láimh an cineál réimse thíos, nó cliceáil an cnaipe Skip to in eagar sa réimse seo níos déanaí."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Do comhaid (í) a bhí a uaslódáil go rathúil. Bain triail as cliceáil ar an Líon Cliste cnaipe iarracht arís. Má theipeann ar an chéim seo, beidh ort skip an chéim seo agus a chumrú do réimsí fhoirm manally níos déanaí."; +$LANG["notify_smart_fill_submitted"] = "Tá an fhoirm curtha isteach. Ag brath ar an méid d'fhoirm agus roinnt roghanna réimse, d'fhéadfadh sé sin a chur san am éigin."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Tá brón orm, ní fhéadfadh ceann amháin nó níos mó de na comhaid a d'iontráil tú a uaslódáil. Beidh ort skip an chéim seo a chumrú agus na réimsí de láimh."; +$LANG["notify_submission_and_files_deleted"] = "Bhí scriostar an aighneacht agus aon chomhad (í) a bhaineann leis rathúil."; +$LANG["notify_submission_copied"] = "Tá an aighneacht cóipeáilte."; +$LANG["notify_submission_copied_edit"] = "Tá an aighneacht cóipeáilte. Is féidir leat é a eagrú thíos."; +$LANG["notify_submission_deleted"] = "Bhí scriosadh an aighneacht go rathúil."; +$LANG["notify_submission_deleted_with_problems"] = "Bhí scriosadh an aighneacht, ach bhí a dtagtar ar na fadhbanna seo a leanas nuair a iarraidh a scriosadh na comhaid seo a leanas (s):"; +$LANG["notify_submission_id_not_found"] = "Ní raibh an aighneacht ID bhí aimsithe."; +$LANG["notify_submission_not_updated"] = "Níorbh fhéidir an aighneacht a thabhairt suas chun dáta."; +$LANG["notify_submissions_and_files_deleted"] = "Bhí scriostar na haighneachtaí agus aon chomhad (í) a bhaineann leo go rathúil."; +$LANG["notify_submissions_copied"] = "Cóipeáil {\$num_submissions} aighneacht."; +$LANG["notify_submissions_deleted"] = "Bhí scriosadh na haighneachtaí go rathúil."; +$LANG["notify_submissions_deleted_with_problems"] = "Bhí scriostar na haighneachtaí, ach bhí a dtagtar ar na fadhbanna seo a leanas nuair a iarraidh a scriosadh na comhaid seo a leanas (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Níorbh fhéidir do ríomhphost tástáil a sheoladh."; +$LANG["notify_theme_cache_folder_not_writable"] = "Ní fillteán taisce ar an téama seo ar inscríofa. D'fhonn cur ar chumas an téama seo, an {\$folder} fillteán mór go mbeadh read full-ceadanna a scríobh."; +$LANG["notify_theme_list_updated"] = "Tá an liosta téama tugtha cothrom le dáta."; +$LANG["notify_themes_settings_updated"] = "Do socruithe Téama tugtha cothrom le dáta."; +$LANG["notify_view_deleted"] = "Féach ar an scriosta cheana féin."; +$LANG["notify_view_group_deleted"] = "Tá an grúpa Féach been deleted."; +$LANG["notify_view_missing_columns"] = "Oops! Tá brón orainn, nach bhfuil an Féach curtha ar bun go hiomlán go fóill."; +$LANG["notify_view_missing_columns_admin_fix"] = "Cliceáil anseo a shonrú ar chóir do réimsí le feiceáil mar cholúin ar an leathanach seo."; +$LANG["notify_view_updated"] = "Féach ar an curtha suas chun dáta."; +$LANG["notify_your_email_sent"] = "Tá do r-phost a sheoladh go rathúil."; +$LANG["phrase_100_per_page"] = "100 sa leathanach"; +$LANG["phrase_10_per_page"] = "10 in aghaidh an leathanaigh"; +$LANG["phrase_15_per_page"] = "15 in aghaidh an leathanaigh"; +$LANG["phrase_1_direct"] = "1. Díreach"; +$LANG["phrase_1char"] = "1 Ruabhreac"; +$LANG["phrase_20_per_page"] = "20 in aghaidh an leathanaigh"; +$LANG["phrase_25_per_page"] = "25 in aghaidh an leathanaigh"; +$LANG["phrase_2_code"] = "2. Cód"; +$LANG["phrase_2_columns"] = "2 Colúin"; +$LANG["phrase_2chars"] = "2 chars"; +$LANG["phrase_3_columns"] = "3 Colúin"; +$LANG["phrase_4_columns"] = "4 Colúin"; +$LANG["phrase_50_per_page"] = "50 sa leathanach"; +$LANG["phrase_accepting_submissions"] = "(aighneachtaí glacadh)"; +$LANG["phrase_access_admin_account_c"] = "Is féidir leat teacht ar do chuntas riarachán anseo:"; +$LANG["phrase_access_type"] = "Cineál Rochtana"; +$LANG["phrase_account_info"] = "Cuntas Faisnéise"; +$LANG["phrase_account_settings"] = "Cuntas Socruithe"; +$LANG["phrase_action_needed"] = "Gníomh ag teastáil"; +$LANG["phrase_add_client"] = "Cuir Cliant"; +$LANG["phrase_add_client_menu"] = "Cuir Cliant Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Cuir réamhshocruithe »"; +$LANG["phrase_add_field"] = "Cuir Réimse"; +$LANG["phrase_add_fields"] = "Cuir Réimsí"; +$LANG["phrase_add_fields_rightarrow"] = "Cuir Réimse (í) »"; +$LANG["phrase_add_form"] = "Cuir Foirm"; +$LANG["phrase_add_form_external"] = "Cuir Foirm - Seachtrach"; +$LANG["phrase_add_form_internal"] = "Cuir Foirm - Inmheánach"; +$LANG["phrase_add_new_group_rightarrow"] = "Cuir Grúpa Nua »"; +$LANG["phrase_add_num_rows"] = "Cuir {\$number} Ró (s)"; +$LANG["phrase_add_row"] = "Cuir Ró »"; +$LANG["phrase_add_submission_button"] = "Cuir Cnaipe Aighneacht"; +$LANG["phrase_add_view_rightarrow"] = "Cuir Amharc »"; +$LANG["phrase_adding_multi_page_form"] = "Nuair a chuirfear il-foirm leathanach leis an API"; +$LANG["phrase_adding_single_page_form"] = "Nuair a chuirfear i bhfoirm leathanach amháin leis an API"; +$LANG["phrase_admin_menu"] = "Riarthóir Menu"; +$LANG["phrase_admin_only"] = "Riarthóir Amháin"; +$LANG["phrase_admin_panel"] = "Painéal Riaracháin"; +$LANG["phrase_administrator_theme"] = "Riarthóir Téama"; +$LANG["phrase_advanced_settings_rightarrow"] = "Ard socruithe »"; +$LANG["phrase_all_X_results_selected"] = "Gach {\$numresults} Torthaí Roghnaithe"; +$LANG["phrase_all_clients"] = "Gach cliaint"; +$LANG["phrase_all_clients_except_c"] = "Gach cliaint ach amháin:"; +$LANG["phrase_all_clients_have_access"] = "(Tá gach cliant le rochtain)"; +$LANG["phrase_all_fields"] = "Gach réimsí"; +$LANG["phrase_all_fields_displayed"] = "Gach réimsí ar taispeáint"; +$LANG["phrase_all_statuses"] = "Gach statuses"; +$LANG["phrase_all_submissions"] = "Gach aighneachtaí"; +$LANG["phrase_allow_fields_edited"] = "Ceadaigh réimsí a edited"; +$LANG["phrase_alphanumeric"] = "Alfa-uimhriúla (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Leagan"; +$LANG["phrase_apply_timezone_offset"] = "Cuir iarratas isteach Amchrios Fritháireamh"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Cuir na cuntais go léir a liostaítear cliant chun {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Cuir na cuntais go léir a liostaítear cliant chun {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Ag Deireadh na"; +$LANG["phrase_at_start"] = "Ag Tosaigh"; +$LANG["phrase_author_link"] = "Nasc Údar"; +$LANG["phrase_auto_disable_account"] = "Auto-chuntas a dhíchumasú tar éis theip ar iarrachtaí login ""; +$LANG["phrase_auto_size"] = "Auto-mhéid"; +$LANG["phrase_available_clients"] = "Cliaint Fáil"; +$LANG["phrase_available_fields"] = "Réimsí ar Fáil"; +$LANG["phrase_available_option_lists"] = "Liostaí Rogha ar Fáil"; +$LANG["phrase_available_swatches"] = "Swatches ar Fáil"; +$LANG["phrase_available_swatches_c"] = "Swatches ar fáil:"; +$LANG["phrase_available_tabs"] = "Cluaisíní Fáil"; +$LANG["phrase_available_views"] = "Tuairimí ar fáil"; +$LANG["phrase_awaiting_form_submission"] = "Feitheamh ar aighneacht bhfoirm."; +$LANG["phrase_back_to_field_list"] = "«ar ais chuig réimse an liosta"; +$LANG["phrase_back_to_search_results"] = "ar ais go search results"; +$LANG["phrase_base_view_on"] = "Féach ar Bonn ar ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Athraigh Logáil isteach Faisnéise"; +$LANG["phrase_characters_limit_p"] = "carachtair teorainn."; +$LANG["phrase_check_db_settings_try_again"] = "Le do thoil dúbailte-seiceáil ar do shuíomhanna bunachar sonraí agus cliceáil an cnaipe Lean ar aghaidh arís."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Seiceáil URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Glan Suas"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Glan fhágáil ar lár Liosta"; +$LANG["phrase_client_account_settings"] = "Cuntas Cliant Socruithe"; +$LANG["phrase_client_field"] = "Réimse Cliaint"; +$LANG["phrase_client_map_filters"] = "Cliant Léarscáil Scagairí »"; +$LANG["phrase_client_may_edit"] = "Féadfaidh Cliant in eagar"; +$LANG["phrase_client_menu"] = "Cliant Menu"; +$LANG["phrase_clients_can_access_form"] = "Is féidir le cliaint a rochtain ar an bhfoirm"; +$LANG["phrase_clients_can_access_view"] = "Is féidir le cliaint a rochtain ar an View"; +$LANG["phrase_clients_cannot_access_form"] = "Chliaint nach féidir a rochtain ar an bhfoirm"; +$LANG["phrase_clients_cannot_access_view"] = "Chliaint nach féidir a rochtain ar an View"; +$LANG["phrase_clients_may_edit"] = "Cliaint a chur in eagar"; +$LANG["phrase_code_c"] = "Earráid Code:"; +$LANG["phrase_code_markup_field"] = "Cód / Markup Allamuigh"; +$LANG["phrase_code_markup_type"] = "Cód / Markup Cineál"; +$LANG["phrase_codes_c"] = "Cóid Earráid:"; +$LANG["phrase_column_width"] = "Leithead Colún"; +$LANG["phrase_company_name"] = "Ainm na Cuideachta"; +$LANG["phrase_configure_form_email_fields"] = "Cumraigh Foirm Ríomhphost Réimsí"; +$LANG["phrase_confirm_folder_url_match"] = "Deimhnigh Fillteán-URL Match"; +$LANG["phrase_connect_rows"] = "Sraitheanna Connect"; +$LANG["phrase_copy_email_settings_from"] = "Cóip Ríomhphost Socruithe Ó ..."; +$LANG["phrase_copy_settings_from"] = "Cóip Socruithe Ó ..."; +$LANG["phrase_core_fields"] = "Réimsí Lárnach"; +$LANG["phrase_core_version"] = "Lárnach Leagan"; +$LANG["phrase_create_account"] = "Cruthaigh Cuntas"; +$LANG["phrase_create_admin_account"] = "Cruthaigh Cuntas Riaracháin"; +$LANG["phrase_create_config_file"] = "Cruthaigh Cumraíocht Comhad"; +$LANG["phrase_create_database_tables"] = "Cruthaigh Táblaí Bunachar Sonraí"; +$LANG["phrase_create_default_view"] = "Cruthaigh Féach Réamhshocrú"; +$LANG["phrase_create_file"] = "Cruthaigh Comhad"; +$LANG["phrase_create_group"] = "Cruthaigh Grúpa"; +$LANG["phrase_create_new_email"] = "Cruthaigh Nua Ríomhphost"; +$LANG["phrase_create_new_menu"] = "Cruthaigh Nua Menu"; +$LANG["phrase_create_new_option_list"] = "Cruthaigh Liosta Rogha Nua"; +$LANG["phrase_create_new_option_list_group"] = "Cruthaigh grúpa liosta nua rogha"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Cruthaigh Liosta Rogha Nua »"; +$LANG["phrase_create_new_view"] = "Cruthaigh Nua Amharc"; +$LANG["phrase_create_new_view_group"] = "Cruthaigh Nua Féach ar Ghrúpa"; +$LANG["phrase_custom_display_format"] = "Formáid Taispeáin an Chustaim"; +$LANG["phrase_custom_recipient"] = "Faighteoir Saincheaptha"; +$LANG["phrase_custom_url"] = "Saincheaptha URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Cineál Sonraí"; +$LANG["phrase_database_hostname"] = "Bunachar Sonraí óstainm"; +$LANG["phrase_database_name"] = "Ainm an bhunachair sonraí"; +$LANG["phrase_database_password"] = "Bunachar Sonraí focal faire"; +$LANG["phrase_database_settings"] = "Bunachar Sonraí na Socruithe"; +$LANG["phrase_database_setup"] = "Bunachar Sonraí Socrú"; +$LANG["phrase_database_table_prefix"] = "Réimír tábla Bunachar Sonraí"; +$LANG["phrase_database_username"] = "Bunachar Sonraí username"; +$LANG["phrase_date_format"] = "Dáta Format"; +$LANG["phrase_db_column"] = "DB Colún"; +$LANG["phrase_db_setup_page_4"] = "4. Bunachar Sonraí Socrú"; +$LANG["phrase_default_client_account_theme"] = "Réamhshocraithe Cuntas Cliant Téama"; +$LANG["phrase_default_date_field_search_value"] = "Réamhshocrú dáta luach cuardaigh réimse"; +$LANG["phrase_default_language"] = "Réamhshocraithe Teanga"; +$LANG["phrase_default_menu"] = "Réamhshocraithe Menu"; +$LANG["phrase_default_sessions_timeout"] = "Seisiúin réamhshocraithe Fanachta"; +$LANG["phrase_default_sort_order"] = "Ordú Sórtáil réamhshocraithe"; +$LANG["phrase_default_tab_label"] = "Sonraí"; +$LANG["phrase_default_theme"] = "Réamhshocraithe Téama"; +$LANG["phrase_default_value"] = "Luach réamhshocraithe"; +$LANG["phrase_default_values"] = "Luachanna réamhshocraithe"; +$LANG["phrase_default_values_new_submissions"] = "Luachanna Réamhshocrú Aighneachtaí á Nua"; +$LANG["phrase_delete_field"] = "Scrios Allamuigh"; +$LANG["phrase_delete_form"] = "Scrios Foirm"; +$LANG["phrase_delete_row"] = "Scrios Ró"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Comhaid a bhaineann Scrios nuair a scriosadh isteach"; +$LANG["phrase_delete_view"] = "Scrios Féach ar"; +$LANG["phrase_disconnect_rows"] = "Sraitheanna dhícheangal"; +$LANG["phrase_display_email"] = "Taispeáin Ríomhphost"; +$LANG["phrase_display_name"] = "Taispeáin Ainm"; +$LANG["phrase_display_text"] = "Taispeáin Téacs"; +$LANG["phrase_display_value"] = "Taispeáin Luach"; +$LANG["phrase_edit_admin_menu"] = "Cuir Riarachán Menu"; +$LANG["phrase_edit_client"] = "Cuir Cliant"; +$LANG["phrase_edit_client_menu"] = "Cuir Cliant Menu"; +$LANG["phrase_edit_email_template"] = "Cuir Ríomhphost Teimpléad"; +$LANG["phrase_edit_field"] = "Cuir Réimse"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Cuir Foirm"; +$LANG["phrase_edit_form_access_type_b"] = "[Cuir cineál rochtain fhoirm]"; +$LANG["phrase_edit_option_list"] = "Cuir Liosta Rogha"; +$LANG["phrase_edit_submission"] = "Cuir Aighneacht"; +$LANG["phrase_edit_submission_label"] = "Cuir Lipéad Aighneacht"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Ríomhphost Format"; +$LANG["phrase_email_settings"] = "Ríomhphost Socruithe"; +$LANG["phrase_email_template"] = "Ríomhphost teimpléad"; +$LANG["phrase_email_template_name"] = "Ríomhphost teimpléad ainm"; +$LANG["phrase_error_learn_more"] = "Níos mó a fhoghlaim faoin earráid seo."; +$LANG["phrase_error_text_intro"] = "Shocrú le do thoil an earráid seo a leanas (í) agus resubmit:"; +$LANG["phrase_errors_learn_more"] = "Cliceáil ar an chóid earráid níos mó a fhoghlaim."; +$LANG["phrase_event_trigger"] = "Imeacht truicear"; +$LANG["phrase_external_form"] = "Foirm Seachtracha"; +$LANG["phrase_external_form_info"] = "Eolas Foirm Seachtracha"; +$LANG["phrase_external_your_own_form"] = "Seachtrach (d'fhoirm féin)"; +$LANG["phrase_field_comments"] = "Tuairimí Allamuigh"; +$LANG["phrase_field_label"] = "Réimse Lipéad"; +$LANG["phrase_field_options"] = "Roghanna Réimse"; +$LANG["phrase_field_size"] = "Réimse Méid"; +$LANG["phrase_field_skipped"] = "Réimse Léimeadh thar"; +$LANG["phrase_field_specific_settings"] = "Field-sonracha Socruithe"; +$LANG["phrase_field_type"] = "Réimse Cineál"; +$LANG["phrase_field_type_no_validation"] = "Níl aon rialacha bailíochtaithe ar fáil don chineál seo réimse seo."; +$LANG["phrase_field_types"] = "Réimse Cineálacha"; +$LANG["phrase_field_value"] = "Réimse Luach"; +$LANG["phrase_field_values_to_display_values"] = "Réimse Luachanna »Taispeáin Luachanna"; +$LANG["phrase_final_touches_page_6"] = "6. Críochnú baint"; +$LANG["phrase_finalize_form"] = "Foirm Finalize"; +$LANG["phrase_first_name"] = "Ainm Baiste"; +$LANG["phrase_footer_text"] = "Footer Téacs"; +$LANG["phrase_for_any_form_submission"] = "Chun aon fhoirm isteach"; +$LANG["phrase_for_view_submissions"] = "Amháin le haghaidh aighneachtaí i View:"; +$LANG["phrase_forgot_password"] = "Forgot your password?"; +$LANG["phrase_form_already_selected"] = "Foirm roghnaithe cheana"; +$LANG["phrase_form_email_field_b_c"] = "[] Foirm réimse an r-phost:"; +$LANG["phrase_form_email_field_configuration"] = "Foirm Ríomhphost Réimse Cumraíocht"; +$LANG["phrase_form_email_fields"] = "Réimsí Foirm Ríomhphost"; +$LANG["phrase_form_field"] = "Foirm Réimse"; +$LANG["phrase_form_field_contents"] = "Réimse Ábhar Foirm"; +$LANG["phrase_form_field_name"] = "Foirm Ainm Réimse"; +$LANG["phrase_form_field_placeholders"] = "Placeholders réimse Foirm"; +$LANG["phrase_form_fields"] = "Foirm Réimsí"; +$LANG["phrase_form_info"] = "Foirm Faisnéise"; +$LANG["phrase_form_info_2"] = "2. Foirm Faisnéise"; +$LANG["phrase_form_list"] = "Liosta Foirm"; +$LANG["phrase_form_name"] = "Ainm Foirm"; +$LANG["phrase_form_page"] = "Foirm Page"; +$LANG["phrase_form_placeholders"] = "Foirm ionadchoinneálaithe"; +$LANG["phrase_form_submission"] = "Foirm Aighneacht"; +$LANG["phrase_form_submissions"] = "Foirm Iarratais"; +$LANG["phrase_form_type"] = "Foirm Cineál"; +$LANG["phrase_form_url"] = "Foirm URL"; +$LANG["phrase_form_urls"] = "Foirm URLanna"; +$LANG["phrase_forms_assigned_to_any_account"] = "Foirmeacha a shanntar aon chuntas"; +$LANG["phrase_forms_page_default_message"] = "Foirmeacha teachtaireacht réamhshocraithe leathanach"; +$LANG["phrase_ft_installation"] = "Foirm Uirlisí Suiteáil Script"; +$LANG["phrase_full_width"] = "Iomlán Leithead"; +$LANG["phrase_getting_started"] = "ag tosú"; +$LANG["phrase_global_placeholders"] = "Ionadchoinneálaithe Domhanda"; +$LANG["phrase_group_name"] = "Ainm an Ghrúpa"; +$LANG["phrase_group_options_q"] = "Roghanna Grúpa?"; +$LANG["phrase_group_rows"] = "Sraitheanna Grúpa"; +$LANG["phrase_have_fun"] = "Bain sult as!"; +$LANG["phrase_highlight_colour"] = "Dath Highlight"; +$LANG["phrase_html_email"] = "HTML Ríomhphost"; +$LANG["phrase_html_template"] = "HTML Teimpléad"; +$LANG["phrase_images_media"] = "Íomhánna / Meáin"; +$LANG["phrase_import_option_list_rightarrow"] = "Liosta Rogha Iompórtáil »"; +$LANG["phrase_input_length"] = "Fad Ionchur"; +$LANG["phrase_installation_help"] = "Cabhair Suiteála"; +$LANG["phrase_internal_form"] = "Foirm Inmheánach"; +$LANG["phrase_ip_address"] = "Seoladh IP"; +$LANG["phrase_is_multi_page_form_q"] = "An é seo foirm il-leathanach seo?"; +$LANG["phrase_label_response_placeholders"] = "Lipéad / Freagra Placeholders"; +$LANG["phrase_large_300px"] = "Móra (300px)"; +$LANG["phrase_large_400px"] = "Móra (400px)"; +$LANG["phrase_last_7_days"] = "Last 7 lá"; +$LANG["phrase_last_logged_in"] = "Last Logáilte I"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Dáta athraithe is déanaí"; +$LANG["phrase_last_name"] = "Sloinne"; +$LANG["phrase_letters_only"] = "Litreacha Amháin"; +$LANG["phrase_light_brown"] = "Solas Brown"; +$LANG["phrase_limit_email_content"] = "Teorainn ábhar ríomhphost chuig réimsí i Amharc"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Logáil isteach mar úsáideoir seo"; +$LANG["phrase_login_info"] = "Logáil isteach Eolas"; +$LANG["phrase_login_page"] = "Logáil isteach Page"; +$LANG["phrase_login_panel_c"] = "Logáil isteach Painéal:"; +$LANG["phrase_login_panel_leftarrows"] = "«Painéal Logáil isteach"; +$LANG["phrase_login_password"] = "Logáil isteach Pasfhocal"; +$LANG["phrase_login_username"] = "Logáil isteach Ainm Úsáideora"; +$LANG["phrase_logo_link_url"] = "URL Link Logo"; +$LANG["phrase_logout_url"] = "Logáil URL"; +$LANG["phrase_main_nav"] = "Príomh NAV"; +$LANG["phrase_main_settings"] = "Príomh Socruithe"; +$LANG["phrase_manage_client"] = "Bainistigh Cliant"; +$LANG["phrase_manage_client_omit_list"] = "Bainistigh Fág Liosta Cliaint"; +$LANG["phrase_max_file_size"] = "Max Méid an Chomhaid"; +$LANG["phrase_max_length"] = "Max Fad"; +$LANG["phrase_max_length_words_chars"] = "- Max fad (focail / chars)"; +$LANG["phrase_may_add_submissions"] = "Is féidir aighneachtaí a chur"; +$LANG["phrase_may_copy_submissions"] = "An féidir le haighneachtaí a chóipeáil"; +$LANG["phrase_may_delete_submissions"] = "Is féidir aighneachtaí a scriosadh"; +$LANG["phrase_medium_150px"] = "Meánach (150px)"; +$LANG["phrase_medium_200px"] = "Meánach (200px)"; +$LANG["phrase_menu_name"] = "Ainm Menu"; +$LANG["phrase_menu_type"] = "Cineál Menu"; +$LANG["phrase_min_password_length"] = "Focal faire fad íosta"; +$LANG["phrase_module_description"] = "Modúl Cur Síos"; +$LANG["phrase_module_info"] = "Modúl Faisnéise"; +$LANG["phrase_module_nav"] = "Modúl NAV"; +$LANG["phrase_month_to_date"] = "Míosa go dtí seo"; +$LANG["phrase_multi_select"] = "Il-roghnú"; +$LANG["phrase_multi_select_dropdown"] = "Il-dropdown roghnú"; +$LANG["phrase_multiple_fields_found"] = "Multiple Réimsí Aimsíodh!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Ainm / Ainm Last"; +$LANG["phrase_new_blank_email"] = "Nua Folamh Ríomhphost"; +$LANG["phrase_new_blank_option_list"] = "Liosta Rogha Nua Blank"; +$LANG["phrase_new_blank_view"] = "Nua Folamh Amharc"; +$LANG["phrase_new_ft_installation"] = "Nua Foirm Suiteáil Uirlisí"; +$LANG["phrase_new_option_list"] = "Liosta Rogha Nua"; +$LANG["phrase_new_password"] = "Pasfhocal Nua"; +$LANG["phrase_new_password_reenter"] = "Pasfhocal Nua (do thoil ath-iontráil)"; +$LANG["phrase_new_view"] = "Féach Nua"; +$LANG["phrase_new_view_all_fields"] = "Nua Féach ar - Gach réimsí"; +$LANG["phrase_next_client"] = "cliant ar aghaidh »"; +$LANG["phrase_next_field"] = "»réimse eile"; +$LANG["phrase_next_form"] = "bhfoirm ar aghaidh »"; +$LANG["phrase_next_view"] = "View next »"; +$LANG["phrase_no_clients"] = "Uimh cliaint"; +$LANG["phrase_no_limit"] = "Gan Teorainn"; +$LANG["phrase_no_offset"] = "Uimh fhritháireamh"; +$LANG["phrase_no_option_lists_available"] = "Uimh roghanna liostaí atá ar fáil."; +$LANG["phrase_no_views"] = "Uimh Radhairc"; +$LANG["phrase_no_views_with_filters_p"] = "(Uimh Radhairc le scagairí atá sainithe)"; +$LANG["phrase_none_not_recommended"] = "Ní Neamhní (molta)"; +$LANG["phrase_not_assigned_to_option_list"] = "Ní hé seo an réimse a shanntar ar Liosta Rogha."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "An NACH Comhionann"; +$LANG["phrase_not_found"] = "Gan Aimsíodh!"; +$LANG["phrase_not_like"] = "NOT like"; +$LANG["phrase_not_visible_to_client"] = "(nach bhfuil infheicthe do chliaint)"; +$LANG["phrase_num_clients_per_page"] = "Cliaint Num sa leathanach"; +$LANG["phrase_num_emails_per_page"] = "Ríomhphost Num sa leathanach"; +$LANG["phrase_num_fields"] = "Líon na Réimsí"; +$LANG["phrase_num_forms_per_page"] = "Foirmeacha Num sa leathanach"; +$LANG["phrase_num_menus_per_page"] = "Num Roghchláir sa leathanach"; +$LANG["phrase_num_modules_per_page"] = "Num Modúil sa leathanach"; +$LANG["phrase_num_option_lists_per_page"] = "Liostaí Rogha Num Per Page"; +$LANG["phrase_num_options"] = "Roghanna Num"; +$LANG["phrase_num_rows"] = "Rónna Num"; +$LANG["phrase_numbers_only"] = "Uimhreacha Amháin"; +$LANG["phrase_often_localhost"] = "(go minic "localhost")"; +$LANG["phrase_on_form_submission"] = "Ar aighneacht bhfoirm"; +$LANG["phrase_one_char_number"] = "Tá carachtar amháin ar a laghad roinnt (0-9)"; +$LANG["phrase_one_char_upper"] = "Tá carachtar amháin ar a laghad sa chás uachtair"; +$LANG["phrase_one_special_char"] = "Amháin ar a laghad de {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(ach amháin ag cliaint ar leith rochtain)"; +$LANG["phrase_open_form_in_dialog"] = "Fhoirm Oscail i bhfuinneog dialóg"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Oscail an fhoirm seo i bhfuinneog nua cluaisín /"; +$LANG["phrase_option_list"] = "Liosta Rogha"; +$LANG["phrase_option_list_name"] = "Ainm Liosta Rogha"; +$LANG["phrase_option_list_or_contents"] = "Liosta Rogha / Clár"; +$LANG["phrase_option_lists"] = "Liostaí Rogha"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Teidil Page"; +$LANG["phrase_pass_on"] = "Pass ar"; +$LANG["phrase_password_min"] = "Caithfidh sé a bheith ar a laghad {\$length} carachtair."; +$LANG["phrase_password_one_number"] = "Ní mór go mbeadh an uimhir amháin ar a laghad (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Ní mór go mbeadh an litir amháin ar a laghad sa chás uachtair."; +$LANG["phrase_password_requirements_c"] = "ceanglais Pasfhocal:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Ní mór ar a laghad ceann amháin de na carachtair seo a leanas: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Ceadanna / Socruithe Eile"; +$LANG["phrase_permitted_file_types"] = "Cineálacha comhaid ceadaithe"; +$LANG["phrase_phone_number"] = "Uimhir Theileafóin"; +$LANG["phrase_phone_number_format"] = "Formáid Uimhir Theileafóin"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini uas cead méid comhaid a uaslódáil:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Leagan"; +$LANG["phrase_please_confirm"] = "Dearbhaigh le do thoil"; +$LANG["phrase_please_enter_license_key"] = "Cuir isteach do eochair cheadúnas"; +$LANG["phrase_please_select"] = "Roghnaigh do thoil"; +$LANG["phrase_please_select_form"] = "Roghnaigh bhfoirm"; +$LANG["phrase_prev_client"] = "«Dé cliant"; +$LANG["phrase_prev_form"] = "«Dé fhoirm"; +$LANG["phrase_prevent_password_reuse"] = "Cosc a chur ar ath-úsáid an focal faire # deireanach"; +$LANG["phrase_previous_field"] = "réimse roimhe «"; +$LANG["phrase_previous_page"] = "Page Roimhe Seo"; +$LANG["phrase_previous_view"] = "«Dé Amharc"; +$LANG["phrase_program_name"] = "Ainm an Chláir"; +$LANG["phrase_public_form_omit_list"] = "Foirm Poiblí fhágáil ar lár Liosta"; +$LANG["phrase_public_view_omit_list"] = "Poiblí Féach ar fhágáil ar lár Liosta"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Bhí fadhb leis an cheist seo a leanas:"; +$LANG["phrase_radio_buttons"] = "Cnaipí Raidió"; +$LANG["phrase_random_form_submission"] = "Aighneacht bhfoirm Randamach"; +$LANG["phrase_re_enter_password"] = "Ath-iontráil Pasfhocal"; +$LANG["phrase_recipient_type"] = "Faighteoir cineál"; +$LANG["phrase_redirect_url"] = "Athsheolaidh URL"; +$LANG["phrase_refresh_list"] = "Athnuaigh an Liosta"; +$LANG["phrase_refresh_module_list"] = "Modúl Athnuaigh an Liosta"; +$LANG["phrase_refresh_page"] = "Athnuaigh an leathanach"; +$LANG["phrase_refresh_theme_list"] = "Téama Athnuaigh an Liosta"; +$LANG["phrase_register_new_email"] = "Clár Nua Ríomhphost"; +$LANG["phrase_remaining_characters"] = "carachtair atá fágtha"; +$LANG["phrase_remaining_words"] = "focail atá fágtha"; +$LANG["phrase_remove_tabs"] = "Cluaisíní Bain"; +$LANG["phrase_required_password_chars"] = "carachtair pasfhocal de dhíth"; +$LANG["phrase_resend_test_submission"] = "Tástáil Athsheol Aighneacht"; +$LANG["phrase_return_form_list"] = "Ar ais go Foirm Liosta"; +$LANG["phrase_row_selected"] = "{\$num_rows} róroghnaithe"; +$LANG["phrase_rows_selected"] = "{\$num_rows} ró roghnaithe"; +$LANG["phrase_sample_data"] = "Sampla Sonraí"; +$LANG["phrase_save_changes"] = "Athruithe Sábháil"; +$LANG["phrase_search_keyword"] = "Eochairfhocal Cuardaigh"; +$LANG["phrase_security_settings"] = "Socruithe Slándála"; +$LANG["phrase_select_all"] = "Roghnaigh Uile"; +$LANG["phrase_select_all_X_results"] = "Roghnaigh Uile {\$numresults} Torthaí"; +$LANG["phrase_select_all_on_page"] = "Roghnaigh Ar Gach Leathanach"; +$LANG["phrase_select_date"] = "Roghnaigh dáta"; +$LANG["phrase_select_field"] = "Roghnaigh Allamuigh"; +$LANG["phrase_select_swatch"] = "Roghnaigh swatch"; +$LANG["phrase_selected_clients"] = "Cliaint Roghnaithe"; +$LANG["phrase_selected_views"] = "Radhairc Roghnaithe"; +$LANG["phrase_send_email"] = "Seol Ríomhphost"; +$LANG["phrase_send_test_email"] = "Tástáil Seol Ríomhphost"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Seisiúin Fanachta"; +$LANG["phrase_setting_value"] = "Socrú Luach"; +$LANG["phrase_setup_options"] = "Roghanna Socrú"; +$LANG["phrase_show_all"] = "Taispeáin uile"; +$LANG["phrase_show_form"] = "Taispeáin Foirm"; +$LANG["phrase_size_large"] = "Mór (TEXT)"; +$LANG["phrase_size_medium"] = "Measartha (<= 256 gCarachtar @ item:)"; +$LANG["phrase_size_small"] = "Beag (<= 20 gCarachtar @ item:)"; +$LANG["phrase_size_tiny"] = "Bheag (<= 5 gCarachtar @ item:)"; +$LANG["phrase_size_very_large"] = "An-Mór (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Réimse"; +$LANG["phrase_skip_step"] = "Skip Céim"; +$LANG["phrase_small_100px"] = "Beag (100px)"; +$LANG["phrase_small_80px"] = "Beag (80px)"; +$LANG["phrase_smart_fill"] = "Cliste Líon"; +$LANG["phrase_smart_fill_fields_from_c"] = "Cliste réimsí Líon ó:"; +$LANG["phrase_smart_fill_user_documentation"] = "Cliste Líon Úsáideoir Dhoiciméadú »"; +$LANG["phrase_sort_as"] = "Sórtáil de réir mar a"; +$LANG["phrase_special_fields"] = "Réimsí Speisialta"; +$LANG["phrase_standard_fields"] = "Réimsí Simplí"; +$LANG["phrase_standard_filters"] = "Simplí Scagairí »"; +$LANG["phrase_step_1"] = "Céim 1"; +$LANG["phrase_step_2"] = "Céim 2"; +$LANG["phrase_step_3"] = "Céim 3"; +$LANG["phrase_step_4"] = "Céim 4"; +$LANG["phrase_step_5"] = "Céim 5"; +$LANG["phrase_step_6"] = "Céim 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Clibeanna Stráice aighneachtaí i bhfoirm"; +$LANG["phrase_subject_line"] = "Ábhar Líne"; +$LANG["phrase_submission_date"] = "Aighneacht dáta"; +$LANG["phrase_submission_id"] = "Aighneacht ID"; +$LANG["phrase_submission_made"] = "Aighneacht a rinneadh: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Aighneacht Cineál"; +$LANG["phrase_submissions_per_page"] = "Aighneachtaí in aghaidh Page"; +$LANG["phrase_system_check"] = "Seiceáil an Córas"; +$LANG["phrase_system_fields_no_validation"] = "Ní féidir leat bailíochtú a chur le córas páirceanna."; +$LANG["phrase_system_time_offset"] = "Córas Ama Fritháireamh"; +$LANG["phrase_tab_label"] = "Cluaisíní Lipéad"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Tástáil Ceadanna Fillteán"; +$LANG["phrase_test_submission"] = "Tástáil Aighneacht"; +$LANG["phrase_test_submission_3"] = "3. Tástáil Aighneacht"; +$LANG["phrase_test_submission_received"] = "Tástáil Aighneacht a Fuarthas"; +$LANG["phrase_text_and_html"] = "Téacs & HTML"; +$LANG["phrase_text_email"] = "Téacs Ríomhphost"; +$LANG["phrase_text_template"] = "Téacs Teimpléad"; +$LANG["phrase_the_previous_month"] = "An Mhí roimhe seo"; +$LANG["phrase_theme_description"] = "Cur Síos Téama"; +$LANG["phrase_theme_info"] = "Téama Eolas"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Torthaí Iomlán:"; +$LANG["phrase_type_c"] = "Earráid Cineál:"; +$LANG["phrase_unselect_all"] = "Gach Díroghnaigh"; +$LANG["phrase_update_accounts"] = "Cuntais Nuashonraigh"; +$LANG["phrase_update_email_template"] = "Nuashonraigh Ríomhphost Teimpléad"; +$LANG["phrase_update_field"] = "Nuashonraigh Réimse"; +$LANG["phrase_update_order"] = "Nuashonrú Ordú"; +$LANG["phrase_update_view"] = "Nuashonraigh Amharc"; +$LANG["phrase_upload_file"] = "Uaslódáil comhad"; +$LANG["phrase_upload_files"] = "Upload Comhaid"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Conair an fhillteáin Upload"; +$LANG["phrase_upload_folder_url"] = "Fillteán URL Upload"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Bain úsáid as Luach Réamhshocrú?"; +$LANG["phrase_used_by_num_form_fields"] = "Úsáidte le # Foirm Réimsí"; +$LANG["phrase_uses_swatches"] = "Swatches Úsáidí"; +$LANG["phrase_valid_email"] = "Ríomhphost Bailí"; +$LANG["phrase_validation_error"] = "Earráid Bailíochtú"; +$LANG["phrase_validation_rule"] = "Riail Bailíochtú"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Féach ar Ghrúpa"; +$LANG["phrase_view_id"] = "Féach ar ID"; +$LANG["phrase_view_name"] = "Féach Ainm"; +$LANG["phrase_view_placeholders"] = "Placeholders Féach ar"; +$LANG["phrase_view_submissions"] = "Féach ar Aighneachtaí"; +$LANG["phrase_view_uploaded_files"] = "view comhaid a uaslódáil"; +$LANG["phrase_viewing_range"] = "[breathnú {\$startnum} a {\$endnum}]"; +$LANG["phrase_when_sent"] = "Nuair a seoladh"; +$LANG["phrase_when_submission_is_deleted"] = "Nuair a bheidh an aighneacht scriostar"; +$LANG["phrase_when_submission_is_edited"] = "Nuair a bheidh an aighneacht edited"; +$LANG["phrase_who_can_access"] = "Cé is féidir rochtain a fháil?"; +$LANG["phrase_word_limit_p"] = "teorainn focal."; +$LANG["phrase_year_to_date"] = "Bliain go dtí"; +$LANG["phrase_yes_for_all_views"] = "Tá, le haghaidh gach Radhairc"; +$LANG["phrase_yes_for_specific_views"] = "Tá, le haghaidh Tuairimí ar leith"; +$LANG["phrase_your_account"] = "Do Cuntas"; +$LANG["phrase_your_email"] = "Do Ríomhphost"; +$LANG["phrase_your_email_address"] = "Do sheoladh ríomhphoist"; +$LANG["processing_form_disabled"] = "Tá brón orainn, tá an fhoirm seo a bhí faoi mhíchumas."; +$LANG["processing_form_incomplete"] = "Tá brón orm, ní an fhoirm seo le fáil a shocrú go hiomlán ó laistigh Foirm Uirlisí. Is é an chúis is dócha a bheidh an fhadhb seo a bhaint tú an form_tools_initialize_form "" réimse foirme i bhfolach, ach ní raibh fad iomlán na céimeanna ar an "Add Foirm" phróiseas.

    Le do thoil, logáil isteach agus cumraíocht an fhoirm athbhreithnithe."; +$LANG["processing_init_complete"] = "Go raibh maith agat! Tá aighneacht Do tástála curtha tríd go rathúil. Seol ar ais chuig an Uirlisí Foirm phainéil Riarachán agus cliceáil ar an "Athnuaigh" cnaipe ag bun an Cuir Foirm Céim 3 leathanaigh a chríochnú ar bun d'fhoirm."; +$LANG["processing_invalid_form_id"] = "Tá brón orainn, ní hionann sin is dealraitheach a bheith le haitheantas ar fhoirm bailí."; +$LANG["processing_no_form_id"] = "Éilíonn process.php foirm aitheantais le haghaidh próiseála. Déan cinnte go bhfuil d'fhoirm réimse bhfolach leis an ainm "form_tools_form_id" sin a rith feadh an fhoirm ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Tá Foirm Uirlisí ann chun a chinneadh nuair a atreorú nuair a theipeann orthu sin a isteach an CAPTCHA i gceart. Cuir pas i réimse bhfolach leis an ainm form_tools_form_url ina bhfuil an URL an fhoirm."; +$LANG["processing_no_post_vars"] = "Ní process.php éis aon sonraí. Nóta: Script seo nach féidir a luchtú go díreach i do bhrabhsálaí.
    Déan cinnte go bhfuil d'fhoirm a sheoladh tríd an bpost."; +$LANG["processing_no_redirect_url"] = "Bhí a phróiseáil an aighneacht i gceart, ach nach bhfuil tú sonraithe URL athdhíriú chun an fhoirm seo! Cuir d'fhoirm an Uirlisí Foirm Chomhéadain agus an URL a athdhíriú leis."; +$LANG["special_language"] = "Irish"; +$LANG["special_language_locale"] = "Irish"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Beidh gach cliant cuntais nua a chruthú leis na suímh agus ceadanna sainmhínithe thíos. A shárú a leagan síos le haghaidh cliant go háirithe, a eagrú an cuntas cliant agus a Socruithe cluaisín cuairt."; +$LANG["text_add_form_choose_integration_method"] = "Roghnaigh cén modh a ba mhaith leat a úsáid a chomhtháthú le d'fhoirm Foirm Uirlisí."; +$LANG["text_add_form_code_submission_benefits"] = "Úsáideann an modh seo an Fhoirm Uirlisí API , san áireamh i bhFoirm script an príomh Uirlisí. An API Soláthraíonn roinnt feidhmeanna cabhrach a dhéanamh ar an post a chomhtháthú le d'fhoirm Uirlisí Foirm chomh simplí agus is féidir. Níl aon srianta maidir le conas is féidir d'fhoirm a chur isteach nuair a úsáideann tú an API. Is féidir leat an t-ábhar in aon dul, nó leathanach trí leathanach; is féidir leat a chur ar do chuid féin saincheaptha fhreastalaí-taobh bailíochtú, íomhánna CAPTCHA; féidir leat a roghnú a chur faoi bhráid an t-eolas anois, ach amháin é a insint a chur ar taispeáint ar an aighneacht san Fhoirm Uirlisí Chomhéadain ag dáta níos déanaí (féach na críche Aighneachtaí alt sa cháipéisíocht cabhrú API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "D'fhonn a chur isteach do shonraí fhoirm trí PHP, ní mór d'fhoirm a bheith suite ar an láithreán gréasáin seo a shuiteáil céanna Foirm Uirlisí. Dara dul síos, do neamh-theicniúil agus novice Foirm Uirlisí d'úsáideoirí, is féidir an modh seo beag imeaglaithe é ar dtús. Ach níl neart doiciméadú chun cabhrú leat amach, lena n-áirítear dhá ranganna teagaisc simplí a chomhtháthú do chuid foirmeacha agus singil-il-leathanach (tá siad nasctha le ar chéim níos déanaí)."; +$LANG["text_add_form_direct_submission_benefits"] = "Is é seo an bealach simplí le d'fhoirm a chur faoi bhráid Foirm Uirlisí. Ní chuireann sé a cheangal ar aon eolas ar PHP agus éilíonn ach athrú an-bheag ar d'fhoirm. Tá sé iontach le haghaidh foirmeacha níos lú áit ar mhaith leat a chur isteach ach an fhaisnéis ar an mbunachar sonraí ansin an t-úsáideoir athdhíriú go thankyou "" leathanach."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Tá an modh seo faoi bhráid an-simplí a úsáid, ach ní ar fáil a rialú i bhfad le haghaidh foirmeacha níos casta. Il-fhoirmeacha leathanach nó foirmeacha a cheangal ar an bhfreastalaí-bhailíochtaithe taobh a oireann níos fearr leis an modh dara: a chur isteach tríd an Uirlisí Foirm API."; +$LANG["text_add_form_field_types1"] = "Beagnach thú! Déanann an leathanach seo a fháil gach do réimsí fhoirm agus a n-réimse cineálacha a chinneadh. Cliceáil an cnaipe Cliste Líon isteach ar an gceart chun tús a chur leis. Beidh tú a cheadú ach amháin chun dul ar aghaidh nuair atá gach gníomh réitithe - saincheisteanna nach mór do aire le feiceáil sa "Gníomh ag Teastáil " colún."; +$LANG["text_add_form_field_types2"] = "Mura bhfuil d'fhoirm i HTML, cliceáil ar an cnaipe Céim Scipeáil ar aghaidh. Is féidir é seo a chumrú ar fad ina dhiaidh sin."; +$LANG["text_add_form_field_types3"] = "Reloads seo an t-ábhar d'fhoirm (í). Nóta: Beidh seo a scríobh ar aon athruithe déanta agat ar an leathanach seo."; +$LANG["text_add_form_field_types4"] = "I gcás ritheann tú i fadhbanna, cliceáil anseo chun an skip an taisceadh sin. Gach réimsí gan réiteach leagtha úsáid a bhaint as na luachanna réamhshocraithe. Is féidir leat a shaincheapadh ar na réimsí sin ina dhiaidh sin."; +$LANG["text_add_form_field_types_manual_upload"] = "Má tá tú in ann Cliste Líon isteach do réimsí, b'fhéidir gur mhaith leat triail a réiteach eile: uaslódáil cóipeanna de do foirmeacha i réimsí thíos."; +$LANG["text_add_form_field_types_manual_upload2"] = "Tabhair faoi deara: uaslódáil leathanaigh PHP amh (nó eile fhreastalaí-taobh chód) - uaslódáil ach na leaganacha HTML. Chun seo a fháil, a fheiceáil agus a shábháil ar an leathanach seo ó do bhrabhsálaí gréasáin."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Bhí réimsí éagsúla nach bhféadfaí a fháil i bhfoirm ar an leathanach sonraithe agat. Tá sé seo de bharr den chuid is mó is dócha ag ceann amháin díobh seo a leanas:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Ndeachaigh tú ceann amháin nó níos mó de na URLanna bhfoirm foirm do il-leathanach go mícheart."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Tá ceann amháin nó níos mó leathanaigh ar do fhoirm cosanta ag pasfhocal agus nach bhféadfadh an script teacht ar an leathanach."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Iontráil tú mícheart do URL fhoirm."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Cliceáil anseo chun filleadh ar an suíomh Faisnéise Foirm a sheiceáil le do suímh."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Athraigh tú d'fhoirm (í) a dhéanamh tar éis an aighneacht tástáil"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Cliceáil anseo chun a chur trí aighneacht eile tástála."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Tá d'fhoirm cosanta ag pasfhocal agus nach bhféadfadh an script teacht ar an leathanach."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "I gcás eile cluaisín / fhuinneog an bhrabhsálaí, logáil isteach i do fhoirm ansin cliceáil an cnaipe Leathanach Athnuaigh thíos chun iarracht a dhéanamh teacht ar an ath-réimsí."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Má tá aon cheann de na hoibre réitigh thuas, b'fhéidir gur mhaith leat freisin triail a uaslódáil láimh do na foirmeacha le haghaidh próiseála ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Bhí réimsí éagsúla nach bhféadfaí a fháil sna leathanaigh fhoirm shonraithe tú. Tá sé seo de bharr den chuid is mó is dócha ag ceann de na:"; +$LANG["text_add_form_help_link"] = "Má ritheann tú isteach in aon deacracht le linn na céimeanna seo, déan iarracht léamh amach doiciméadú úsáideoir ."; +$LANG["text_add_form_step_1_text_1"] = "Luaidhe na leathanaigh seo a leanas a dhéanamh leat tríd na céimeanna go Uirlisí Foirm chumrú a shábháil ar do aighneachtaí fhoirm. Sula leanúnach, seiceáil le do thoil go bhfuil:"; +$LANG["text_add_form_step_1_text_2"] = "Tá d'fhoirm cruthaithe cheana féin agus tá sé ar fáil tríd URL (localhost is fíneáil)"; +$LANG["text_add_form_step_1_text_3"] = "in ann a chur in eagar d'fhoirm"; +$LANG["text_add_form_step_2_para_2"] = "Oscail do fhoirm i eagarthóir ar do rogha agus do chlib foirm athrú ar an méid seo a leanas, lena n-áirítear an dá réimsí i bhfolach."; +$LANG["text_add_form_step_2_para_3"] = "Next, oscailte d'fhoirm i bhrabhsálaí gréasáin. Líon isteach i ngach réimse agus é a chur faoi bhráid. Tar éis a chur isteach, ba chóir duit a fheiceáil teachtaireacht fógra. Nuair atá an teachtaireacht seo ar taispeáint, ar ais chuig an leathanach seo, agus cliceáil ar an gcnaipe athnuachan thíos. Nuair a bhíonn an próiseas seo críochnaithe, feicfidh tú cnaipe aghaidh thíos, ag cur leat chun an chéad chéim eile."; +$LANG["text_add_form_step_2_para_6"] = "I d'aighneacht fhoirm, san áireamh na luachanna seo a leanas. Féadfar iad a shocrú go díreach trí PHP nó a rith feadh trí fhoirm féin. Thíos samplaí de gach ceann acu. Is é an varname \$) (a hash (nó eagar associative) ar an bhfaisnéis uile a thíolacadh Pack - é seo de ghnáth \$ (postvar nó) (\$ sessionvar) athraitheach, ach d'fhéadfadh sé a bheith tógtha saincheaptha."; +$LANG["text_add_form_step_2_text_2"] = "Cuir isteach an URL do leathanach "Thankyou " anseo. Tá sé seo nuair is mian leat do dhaoine a sheoladh chuig tar éis an fhoirm isteach."; +$LANG["text_add_form_step_3_para_1"] = "Liostaíonn an leathanach seo go léir i réimsí d'aighneacht bhfoirm. Cuir gach scrúdú a dhéanamh ar réimse agus ar bith a bhaint nach tú, ní gá a stóráiltear le haghaidh gach aighneacht. Má tá tú scriosadh réimse bailí le timpiste, nó ar mian leo athrú an fhaisnéis arna stóráil le d'fhoirm, ar ais chuig an leathanach roimhe seo a sheoladh isteach le tástáil nua."; +$LANG["text_add_form_step_3_para_2"] = "Nóta: má tá tú ag seoladh na luachanna il trí checkboxes nó il-bosca a roghnú, a dhéanamh cinnte foircinn do ainm réimse leis an [] carachtair (féach an doiciméadacht úsáideoir le haghaidh tuilleadh eolais)."; +$LANG["text_add_form_step_3_text_1"] = "Seo nuair a thosaíonn an spraoi! Ag an bpointe seo, tá Uirlisí Foirm ag fanacht ar aighneacht a thástáil ó d'fhoirm. Beidh sé an fhoirm seo a úsáid aighneacht a fhios cad ba chóir faisnéis a stóráil sa bhunachar sonraí."; +$LANG["text_add_form_step_3_text_2"] = "ag déanamh tagairt do fhoirm a Foirm Uirlisí"; +$LANG["text_add_form_step_3_text_3"] = "úsáid a bhaint as an Uirlisí Foirm API"; +$LANG["text_add_form_step_3_text_4"] = "Chun cabhrú le d'fhoirm, molaimid duit léamh ar cheann de na ranganna teagaisc seo a leanas:"; +$LANG["text_add_form_step_3_text_5"] = "Siad a mhíniú conas a chur ar bun d'fhoirm i ullmhú le haghaidh an aighneacht tástála, agus faisnéis eile a d'fhéadfadh a bheith cabhrú leat. Tá an líne de PHP, beidh ort:"; +$LANG["text_add_form_step_3_text_6"] = "Cinntíonn sé seo go sonraí a sheoltar iarbhír ar Foirm Uirlisí. Nuair atá tú a chur tríd d'aighneacht tástála, cliceáil an cnaipe an thíos."; +$LANG["text_add_form_step_3_text_7"] = "Ar an leathanach ROIMH do deiridh "buíochas a ghabháil leat" leathanach, a bheith cinnte do pharaiméadair an méid seo a leanas a chur leis an athróg \$ Paraiméadair:"; +$LANG["text_add_form_step_5_para_1"] = "Tá an bunachar sonraí ar bun le haghaidh an fhoirm seo agus an fhoirm curtha i ngníomh lena n-úsáid. Má rinne tú an aighneacht ag déanamh tagairt do fhoirm a process.php, le do thoil ar ais chuig d'fhoirm agus an réimse seo a leanas a bhaint i bhfolach:"; +$LANG["text_add_form_step_5_para_2"] = "Ansin, cuairt a thabhairt do "buíochas a ghabháil leat" chun an leathanach folamh na seisiúin. Nuair a dhéantar seo, beidh gach foirm iarratais nua a phróiseáil agus a stóráil ag Foirm Uirlisí. Bain triail as é a dhéanamh aighneacht nó dhá chun a fhíorú an fhaisnéis uile a uaslódáil gceart."; +$LANG["text_add_form_step_5_para_3"] = "Más mian leat, fíneáil-tune d'fhoirm le haghaidh roghanna amhail uathoibríoch-emailing, ag cur breise fhoirm réimsí réimse, nó customizing na cineálacha réimse foirme, féadfaidh tú in eagar d'fhoirm ag aon phointe."; +$LANG["text_add_form_step_5_para_4"] = "Ós rud é go bhfuil d'fhoirm comhad réimsí upload, beidh ort a chumrú gach réimse a shonrú ar an fillteán file upload, cad iad na comhaid atá ceadaithe agus. Is féidir seo a fháil ar an cluaisín Taispeáin an leathanach in eagar fhoirm."; +$LANG["text_add_form_step_5_para_5"] = "Má seoladh an aighneacht tríd an API, athrú na líne ft_api_init_form_page ar an gcéad leathanach ar d'fhoirm chuig:"; +$LANG["text_add_submission_button"] = "Aighneacht an cnaipe Cuir dealraitheach ach amháin le haghaidh Tuairimí go bhfuil an t "Bealtaine aighneachtaí a chur " rogha a leagtar a "yes "."; +$LANG["text_admin_email_placeholder_info"] = "Is é seo an seoladh ríomhphoist an riarthóir an Uirlisí Foirm, atá sainithe i socruithe do chuntas. Aschur seo ach amháin an seoladh r-phoist, mar sin más mian leat a úsáid mar nasc HTML, beidh ort Timfhilleadh sé i <a> chlib, mar sin:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Chomh maith leis an téama default leathanach logála isteach)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Gcéad dul síos, le do thoil a roghnú do chineál fhoirm."; +$LANG["text_client_form_page"] = "Liostaíonn an leathanach seo go léir na foirmeacha agus Tuairimí a shanntar leis an gcliant. Leid: d'fhonn dóibh a fheiceáil foirm ar aighneachtaí, ní mór iad a shannadh ar a laghad ceann amháin Amharc."; +$LANG["text_client_map_filters_desc1"] = "Ligean scagairí Léarscáil an Chliaint tú teorainn ar na haighneachtaí a thaispeánfar sa Amharc seo trí mhapáil na luachanna i réimse bhfoirm ar na luachanna i gcuntas chliaint."; +$LANG["text_client_no_forms"] = "Agat faoi láthair aon foirmeacha seo ar fáil le haghaidh athbhreithnithe."; +$LANG["text_client_welcome"] = "Fáilte! Siopaí an clár gach eolas curtha isteach ag cuairteoirí ar do láithreán gréasáin. Chun amharc aighneachtaí le haghaidh foirm ar leith ach cliceáil ar an nasc FHONN, nó an doiciméad a fheiceáil roghchlár nascleanúna leftmost do roghanna eile."; +$LANG["text_config_file_created"] = "Tá Do comhad config.php cruthaithe."; +$LANG["text_config_file_not_created"] = "Ní fhéadfadh muid a chruthú do chomhad config.php. Beidh ort a chruthú chun an comhad a láimh."; +$LANG["text_config_file_not_created_instructions"] = "Cóipeáil agus greamaigh an t-ábhar as an roinn thíos i comhad a d'iarr config.php agus upload it via FTP chun an Uirlisí Foirm / fillteán domhanda (an fillteán nach bhfuil chomh maith le roinnt comhaid eile agus eolairí, comhad amháin ar a dtugtar library.php)."; +$LANG["text_confirm_delete_form"] = "Sea, is mian liom a scriosadh an fhoirm seo"; +$LANG["text_create_admin_account"] = "Anois táimid ag dul a chruthú ar an riarthóir i gcuntas. Is é seo a úsáid chun bainistíocht a dhéanamh ar gach gné de Foirm Uirlisí, cosúil le foirmeacha a chur leis agus a chruthú cuntais cliant."; +$LANG["text_create_new_client_account"] = "Úsáid an foirm anseo thíos chun a chruthú le cuntas nua a cliant. Gach réimsí ag teastáil."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "féach PHP {\$datefunctionlink} feidhm do roghanna fhormáidiú"; +$LANG["text_default_file_settings_page"] = "Sainmhínítear an leathanach seo na socruithe file upload do shuiteáil do Foirm Uirlisí. Feidhm ag na rialacha go léir a uaslódáil comhad trí Foirm Uirlisí, mura shárú go sainráite do réimse foirm ar leith. Nóta: má athraíonn tú an fillteán tar éis upload files have been uploaded, déanfar iad a bhogadh go huathoibríoch chuig an fillteán nua."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Sula leanúint ar aghaidh, beidh ort thabhairt suas chun dáta do / themes / default fillteán taisce / chun cead a thabhairt iomlán a léamh agus a scríobh cead. Nuair a dhéantar seo, beidh an teachtaireacht seo thiachóga agus is féidir leat a shuiteáil script."; +$LANG["text_default_values_in_view"] = "Tá an rannóg seo roghnach. Beidh gach aighneacht a cruthaíodh leis seo go bhfuil na luachanna réamhshocraithe Féach shonraítear anseo."; +$LANG["text_delete_all_forms"] = "Is mian liom a scriosadh na comhaid a uaslódáil a bhí go tríd an fhoirm seo"; +$LANG["text_delete_form_warning"] = "An bhfuil tú cinnte gur mian leat é a scrios an fhoirm seo? Ní féidir an gníomh seo a undone. Beidh na sonraí uile a chailliúint buan!"; +$LANG["text_edit_admin_menu_page"] = "Is féidir leat do chur in eagar roghchlár thíos. Chun a chinntiú go bhfuil tú i gcónaí rochtain a fháil ar gach fheidhmiúlacht ar fáil laistigh de Foirm Uirlisí, na leathanaigh seo a leanas de dhíth: Foirmeacha, cliaint, Do Cuntas, Modúil, Socruithe agus Logáil."; +$LANG["text_edit_client_menu_page"] = "Ligeann an chuid seo shaincheapadh tú an colún nascleanúint chlé do gach úsáideoir. Is féidir leat a chruthú mar chliaint biachláir agus is mian leat a shannadh agus aon chuntas ar cheann acu. By default tá dhá biachláir: ceann amháin do duit, an riarthóir, agus ceann do na cuntais go léir cliaint. Féadfaidh an cuntas riarthóir a mhodhnú ach ní bhaintear."; +$LANG["text_edit_tab_summary"] = "Más mian leat ghrúpa seo Féach faoi réimsí isteach tabs, dul isteach ach na hainmneacha cluaisín thíos. Tar éis tú ag déanamh, roghnaigh an táb chuí do gach grúpa réimse sa chluaisín Réimsí ."; +$LANG["text_edit_view_list_page"] = "Rialuithe seo cluaisín a bheith le feiceáil réimsí mar cholúin ar an leathanach Liosta Aighneacht, agus cúpla suíomhanna breise do na réimsí sin. Nóta: cuir molaimid duit nach mó ná 4 nó 5 de na réimsí is tábhachtaí sa View."; +$LANG["text_email_settings_intro"] = "Ligeann an leathanach seo tú a aithint do r-phoist a stóráil bhfoirm páirceanna agus a n-ainmneacha a fhreagraíonn. Chomh luath agus a shainiú tú orthu anseo, is féidir leat iad a úsáid i do r-phost teimpléid mar fhaighteoirí. Tá an chuid seo roghnach go hiomlán."; +$LANG["text_email_tab_summary"] = "Ligeann an alt seo a thógáil leat aon líon ríomhphoist a sheoladh nuair a bhfuil do foirm isteach, agus triggers eile."; +$LANG["text_email_template_tab"] = "Ligeann an alt seo a chinneadh cad tú ábhar cosúil sa ríomhphost. Más mian leat do sheoladh ríomhphost mar théacs amháin nó ríomhphost, ach luach ar alt sin isteach. Má tá tú isteach luach ar araon, beidh an ríomhphost a sheoladh i bhformáidí araon."; +$LANG["text_email_template_text_1"] = "Tá aighneacht a dhéanamh trí d'fhoirm, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Tá aighneacht a dhéanamh trí d'fhoirm, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Go raibh maith agat as d'aighneacht!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Teachtaireacht earráide a thaispeáint má theipeann ar an réimse an bhailíochtaithe"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Tá foirmeacha Seachtracha foirmeacha atá ann cheana féin ar do láithreán gréasáin, nó áit éigin ar an ngréasán. Roghnaigh an rogha seo má tá tú d'fhoirm féin a mhaith leat a chomhtháthú le Foirm Uirlisí."; +$LANG["text_fields_tab_summary"] = "Liostaíonn an leathanach seo ar fad do réimsí fhoirm. Chun rialú conas a láithreoidh siad nuair a aighneachtaí brabhsáil, féach ar an táb Radhairc . Beidh trí réimse ar an leathanach seo a scriosadh ó na haighneachtaí go léir, le do thoil mar sin a bheith cúramach!"; +$LANG["text_file_extension_info"] = "Iontráil comhad Eisínteachtaí scartha le camóga (m.sh. jpg, gif, png) nó a fhágáil bán chun go bhféadfar aon chineál comhaid."; +$LANG["text_file_field_placeholders_info"] = "Tá réimsí Comhad dhá ionadchoinneálaithe speisialta: FILEURL agus ainm an chomhaid. Is é an FILEURL URL iomlán chun an comhad, mar sin is féidir leat nasc díreach chun é i do r-phoist; ainm comhaid bhfuil ach an t-ainm comhaid."; +$LANG["text_filters_page"] = "Ní fhéadfar ach na haighneachtaí a chomhlíonann na rialacha atá tú a shainiú thíos le fáil i Amharc seo."; +$LANG["text_filters_tips"] = "Chun leideanna a úsáid scagairí aighneacht, féach an Dhoiciméadú úsáideora."; +$LANG["text_forgot_password"] = "Fadhb ar bith. Beidh Díreach isteach d'ainm úsáideora thíos agus do chuid faisnéise logáil isteach chuig do sheoladh ríomhphoist ar comhad. Má tá tú dearmad ar do ainm úsáideora, r-phost le do thoil le riarthóir an tsuímh ag {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Tá an fhoirm seo amháin nó níos mó réimsí comhaid a uaslódáil:"; +$LANG["text_form_placeholder_info"] = "Féadfaidh an placeholders a leanas a úsáid in aon teimpléad r-phost, agus réimse placeholder teanga, beag beann ar cibé Féach ar an teimpléad r-phost a shanntar. Is iad na placeholders CEIST an cheist fhoirm sonrach; na placeholders FREAGAIR bhfuil na freagraí ar gach ceist."; +$LANG["text_form_submission_date_placeholder"] = "An dáta nuair a rinneadh an aighneacht."; +$LANG["text_form_tools_form_url"] = "An URL iomlán ar an bhfoirm. Tá sé seo ach luach ar fhoirmeacha Seachtracha."; +$LANG["text_form_tools_login_url"] = "An URL logáil isteach le Foirm Uirlisí."; +$LANG["text_form_view_permission_info_admin"] = "Nóta: Tá an fhoirm seo faoi láthair cineál rochtain Riarthóir, mar sin beidh aon cheann de na cuntais cliaint a bheith in ann a fheiceáil Féach ar seo."; +$LANG["text_form_view_permission_info_private"] = "Nóta: Tá an fhoirm seo faoi láthair de chineál a fhágann go mbeidh rochtain ar na roghanna Príobháideacha Poiblí agus Príobháideacha anseo a theorannú do gur fo-thacar na gcliant."; +$LANG["text_ft_installed"] = "Comhghairdeas, tá Foirm Uirlisí curtha isteach go rathúil!"; +$LANG["text_global_placeholder_info"] = "Féadfaidh na ionadchoinneálaithe a úsáid in aon teimpléad agus bhfoirm ar bith."; +$LANG["text_group_name_explanation"] = "I gcás réimsí leanas tríd an bpróiseas Cuir Foirm, tá an luach réamh-líonadh chun an téacs a thaispeáint ar cibé réimse úsáidí an luach. B'fhéidir gur mhaith leat a athrú ar bhealach níos fearr characterize an ábhar."; +$LANG["text_install_create_config_file"] = "Foirm siopaí Uirlisí do fhreastalaí agus suímh bunachar sonraí i comhad a dtugtar config.php, aimsíodh i do / domhanda / fillteán. Cliceáil ar an "Cruthaigh Comhad" cnaipe a ghiniúint go huathoibríoch an comhad ar do fhreastalaí."; +$LANG["text_install_create_database_tables"] = "Anois táimid ag dul a chruthú sna táblaí a léiríonn Foirm mbunachar sonraí Uirlisí. Éilíonn an chéim ar an mbunachar sonraí é féin a bheith cruthaithe cheana. Mura bhfuil tú cinnte conas é sin a dhéanamh, déan teagmháil le do sholáthraí a óstáil."; +$LANG["text_install_db_tables_error_tip_1"] = ""Anaithnid MySQL Server Óstach ciallaíonn" de ghnáth go bhfuil an óstainm fáil tú mícheart. B'fhéidir iarracht socrú seo chun "localhost" - é seo ar bhealach is coiteann do tharchur chuig an "áitiúil" bunachar sonraí ar fhreastalaí gréasáin."; +$LANG["text_install_db_tables_error_tip_2"] = "Ní féidir "ceangal leis an bhfreastalaí MySQL áitiúil trí soicéad ciallaíonn" an bunachar sonraí réimse óstainm Tá mícheart arís."; +$LANG["text_install_db_tables_error_tip_3"] = "Ciallaíonn "Rochtain dhiúltú don úsáideoir:" go bhfuil fadhb ann le d'ainm úsáideora / teaglaim focal faire."; +$LANG["text_install_db_tables_error_tip_4"] = ""Cead rochtana diúltaithe don úsáideoir: ... chun bunachar sonraí ... ciallaíonn" cé go bhfuil d'ainm úsáideora agus do phasfhocal a sholáthair tú i gceart é, bhí sé in ann ceangal leis an mbunachar sonraí áirithe leis an áireamh. Is féidir Ciallaíonn sé seo go bhfuil ceachtar d'ainm mbunachar sonraí mícheart, nó nach bhfuil an cuntas úsáideora a bhaineann leis an mbunachar sonraí."; +$LANG["text_install_email_content_text"] = "Tá go leor acmhainní ar ár suíomh gréasáin chun cabhrú leat tosú, lena n-áirítear ár gcáipéisíocht ar líne (https://docs.formtools.org) agus ranganna teagaisc (https://docs.formtools.org/tutorials). Má aimsíonn tú go bhfuil tú ceangailte nó má tá ceist agat, cuir ceist ar github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Tá brón orm, ní bheidh Uirlisí Foirm bheith in ann a reáchtáil ar do fhreastalaí. Cliceáil anseo le haghaidh na ceanglais íosta."; +$LANG["text_install_system_check"] = "Ritheann an leathanach seo tá roinnt tástálacha ar do chórais a chinntiú sé in ann a reáchtáil Foirm Uirlisí."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Foirmeacha inmheánach ann ach amháin laistigh de Uirlisí Foirm - nach bhfuil aon áit eile ar do shuíomh. Ní bheidh ach Foirm cuntais úsáideora Uirlisí rochtain a fháil ar an fhoirm. Roghnaigh an rogha seo más rud é nach bhfuil tú an fhoirm atá ann cheana féin."; +$LANG["text_internal_form_intro"] = "Bain úsáid as an bhfoirm thíos a chruthú foirm nua Inmheánach. Is féidir le gach suímh, lena n-áirítear líon agus ábhar an fhoirm a réimsí a athrú agus a chumrú níos déanaí."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "D'fhonn a logáil isteach agus Uirlisí Foirm a úsáid, ní mór duit javascript chumasú i do bhrabhsálaí. Chumasú do thoil é anois, a athnuachan agus cliceáil i do bhrabhsálaí."; +$LANG["text_last_modified_date_explanation_c"] = "An t-am deireanach Athraíodh an aighneacht seo. Le haghaidh aighneachtaí nua, tá sé seo mar an gcéanna le:"; +$LANG["text_limit_email_content_desc"] = "An rogha seo ach amháin le haghaidh oibreacha HTML agus ábhar an téacs a ghintear le Lúb Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(liostaí ach Radhairc le ceann amháin nó níos mó sainithe scagairí)"; +$LANG["text_log_in_to_ft"] = "Logáil isteach chun Foirm Uirlisí"; +$LANG["text_login"] = "Logáil isteach i thíos chun rochtain a fháil ar \$ program_name) (Riarachán Painéal. Má tá tú dearmad ar do phasfhocal, cliceáil anseo."; +$LANG["text_login_info"] = "De réir mar a iarrtar é, anseo do chuid faisnéise logáil isteach."; +$LANG["text_name_of_form"] = "An t-ainm ar an bhfoirm."; +$LANG["text_no_clients"] = "Faoi láthair tá aon chliaint sa bhunachar sonraí. Chun cur le cuntas nua a cliant, cliceáil an cnaipe Cuir Cliant thíos."; +$LANG["text_no_clients_found"] = "Níor aimsíodh aon cliaint. Bain triail as a leathnú do chritéir chuardaigh."; +$LANG["text_no_fields_in_view"] = "Ní chiallaíonn sé seo Féach ar bith réimsí ann. Cliceáil an nasc thíos."; +$LANG["text_no_forms"] = "Faoi láthair tá aon fhoirmeacha ar an mbunachar sonraí. Chun cur le foirm nua, cliceáil an cnaipe Cuir Foirm thíos."; +$LANG["text_no_forms_found"] = "Ní raibh foirmeacha."; +$LANG["text_no_forms_found_search"] = "Ní raibh foirmeacha. Bain triail as a leathnú do chritéir chuardaigh."; +$LANG["text_no_modules_found"] = "Níor aimsíodh aon modúil. Bain triail as a leathnú do chritéir chuardaigh."; +$LANG["text_no_recipients_added"] = "Uimh faighteoirí curtha leis."; +$LANG["text_no_search_results"] = "Níl aon leis na torthaí seo critéir chuardaigh / View."; +$LANG["text_no_submissions_found"] = "Tá brón orainn, bhí bhfuarthas aon aighneachtaí."; +$LANG["text_no_themes"] = "Ní gá duit aon téamaí sainithe. Cliceáil ar an gcnaipe seo thíos a athnuachan do liosta téama, nó an seic úsáideoir Uirlisí Foirm doiciméadú ar fhaisnéis faoi théamaí a chur leis."; +$LANG["text_non_deletable_fields"] = "Tá an réimse seo in úsáid ag an script Croí agus ní féidir iad a chur in eagar nó a scriosadh gan cúis neamhluí sin. Más mian leat a dhéanamh ar athruithe ar an gcineál réimse, cóip a dhéanamh de é agus an chóip in eagar."; +$LANG["text_option_list_group_explanation"] = "Más é seo roghnaithe, ligeann sé do ghrúpa do roghanna. Conas na grúpaí ar taispeáint ag brath ar an gcineál réimse ag baint úsáide as an liosta seo rogha."; +$LANG["text_option_list_page"] = "A chur ar fáil cnaipí Raidió, ticbhoscaí, dropdowns agus roghnaigh il-réimsí anuas go léir an t-úsáideoir le roghanna éagsúla as ar féidir leo a roghnú amháin nó níos mó míreanna. I Uirlisí Foirm, tá siad seo ar a dtugtar Liostaí Rogha. Go ginearálta, tá siad seo a cruthaíodh go huathoibríoch ag an Fhoirm Cuir Seachtrach bpróiseas, ach is féidir leat a chur de láimh nó in eagar do liostaí dá rogha thíos má tá do chuid athruithe ábhar fhoirm nó tú a thógáil ar réimsí nach n-úsáidtear ach go hinmheánach."; +$LANG["text_option_list_used_by_fields"] = "Is é seo an Liosta Rogha úsáid ag réimsí bhfoirm il. Má tá tú thabhairt cothrom le dáta an t-eolas thíos, beidh sé a athrú le haghaidh gach ceann de na réimsí (féach an Fhoirm Réimsí cluaisín a fheiceáil ar an liosta de na réimsí). Más mian leat a thabhairt cothrom le dáta na luachanna ar cheann amháin, nó fo-thacar de na réimsí atá sannta faoi láthair, cliceáil anseo a chruthú Liosta Rogha nua leis na luachanna céanna mar an gceann seo. Ansin, is féidir leat a shannadh na réimsí fhoirm mhaith leat chun an grúpa nua."; +$LANG["text_public_form_omit_list_page"] = "Foirmeacha a thabhairt duit Poiblí an tairbhe an ligin na cuntais go léir cliant le rochtain orthu gan a bheith a shannadh de láimh gach cliant chun iad. Ligeann an leathanach seo leat pinpoint cliaint sin nach féidir a rochtain ar an fhoirm seo, cé go bhfuil an fhoirm marcáilte mar poiblí."; +$LANG["text_public_view_omit_list_page"] = "Tuairimí a thabhairt duit Poiblí an tairbhe an ligin na cuntais go léir cliant le rochtain orthu gan a bheith a shannadh de láimh gach cliant chun iad. Ligeann an leathanach seo leat pinpoint cliaint sin nach féidir a rochtain ar an Féach ar leith."; +$LANG["text_reference_tab_info"] = "Liostaíonn an leathanach seo go léir ar fáil do d'fhoirm placeholders. Tá Placeholders teaghráin ar féidir a úsáid sa teimpléid r-phost, agus réimsí marcáilte le icon placeholder speisialta . Nuair a tháinig i réimse, iad a chomhshó dinimiciúil leis an luach is cuí nuair a bhíonn an réimse fheiceáil nó a bhfuil an r-phost chuig."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Athbhreithniú ar an doiciméadú úsáideora"; +$LANG["text_send_email_from_edit_submission_page"] = "Cuir rogha seo a sheoladh r-phost ón leathanach in eagar Aighneacht"; +$LANG["text_smart_fill_option_list_problem"] = "Bhí muid in ann Cliste do roghanna réimse Líon. Mar sin féin, mar mhalairt, is féidir leat triail a uaslódáil cóip de do leathanach fhoirm sa réimse thíos. Tabhair faoi deara: uaslódáil leathanaigh PHP amh (nó eile fhreastalaí-taobh chód) - uaslódáil ach an leagan HTML. Chun seo a fháil, a fheiceáil agus a shábháil ar an leathanach seo ó do bhrabhsálaí gréasáin."; +$LANG["text_submission_ip_address"] = "An Seoladh IP an úsáideoir a rinne an aighneacht."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "An foirm anseo thíos chun a ceachtar dearcadh nó tú féin a chur ar r-phost a ghintear as an ríomhphost seo teimpléad. Is é an ríomhphost chuig ach amháin chun na r-phoist a shonraítear thíos; an príomh, cc agus BCC faighteoirí seoladh ríomhphoist Neamhaird agus tástála."; +$LANG["text_test_email_templates_no_submissions"] = "D'fhonn a thástáil do r-phost teimpléid, caithfidh tú a chur ar dtús trí ar a laghad ceann amháin isteach foirm."; +$LANG["text_theme_page_intro"] = "Liostaíonn an leathanach seo go léir do na téamaí. Cliceáil ar mionsamhail a fheiceáil sampla níos mó ar an téama ar stíleanna. An "chumas" ticbhosca a chinneann cé acu atá nó nach féidir an téama a bheidh roghnaithe ag cliaint. Chun amharc ar na téamaí ar fáil, cuairt a thabhairt ar na Uirlisí Foirm láithreán gréasáin."; +$LANG["text_tutorial_adding_first_form"] = "Cúrsa Teagaisc: chuirfear d'fhoirm an chéad!"; +$LANG["text_unique_submission_id"] = "An aighneacht Aitheantas uathúil."; +$LANG["text_unused_option_list"] = "Níl an liosta seo an rogha atá á úsáid ag aon réimsí fhoirm."; +$LANG["text_upgraded"] = "Tá Do suiteáil a uasghrádú chun {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Is é seo an Liosta Rogha in úsáid ag na réimsí seo a leanas."; +$LANG["text_view_fields_info"] = "Rialuithe seo a cluaisín réimsí thaispeáint suas nuair a eagarthóireacht aighneacht seo Féach, a n-ord agus cibé an bhfuil siad eagarthóireacht a dhéanamh air nó nach bhfuil."; +$LANG["text_view_tab_summary"] = "Ligeann sé seo duit cluaisín ar bhealaí éagsúla a chruthú do ghrúpa agus do shonraí a shocrú. Radhairc lig a chruthú duit de do shonraí fo-thacair saincheaptha fhoirm a scoilt sé i smután inbhainistithe, agus teorainn a chur cad is féidir leis na cliaint a fheiceáil nó in eagar."; +$LANG["validation_account_disabled"] = "Tá brón orainn, tá do chuntas faoi mhíchumas."; +$LANG["validation_account_not_recognized"] = "Tá brón orainn, nach bhfuil ainm úsáideora aitheanta."; +$LANG["validation_account_not_recognized_info"] = "Tá brón orainn, nach raibh ainm úsáideora aimsithe. Please try again, nó an riarthóir an tsuímh teagmháil ag an seoladh thíos."; +$LANG["validation_account_pending"] = "Tá do chuntas úsáideora cheadú ar feitheamh ag riarthóir."; +$LANG["validation_check_delete_client"] = "An bhfuil tú cinnte gur mian leat é a scrios an cuntas seo cliant?"; +$LANG["validation_client_password_missing_number"] = "Caithfidh an focal faire cliant ar a laghad, ar aon uimhir amháin (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "cliant Ní mór focal faire an beidh, ar a laghad ceann amháin de na carachtair seo a leanas: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Caithfidh an focal faire cliant beidh ar a laghad litir amháin sa chás uachtair."; +$LANG["validation_client_password_too_short"] = "riachtanais cliant faire ar an a bheith ar a laghad, {\$number} carachtair fada."; +$LANG["validation_col_name_is_reserved_word"] = "Tá brón orainn, tá ainm an gcolún ar bhunachar sonraí ar obair áirithe i MySQL. Athainmnigh é!"; +$LANG["validation_db_name"] = "Os nomes da base de datos non poden conter períodos nin barras."; +$LANG["validation_db_not_updated_invalid_input"] = "Níorbh fhéidir an bunachar sonraí a thabhairt cothrom le dáta. Seiceáil le do thoil chun an doiciméad a luachanna a d'iontráil tú bailí."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Tá brón orainn, ní mór an riarthóir réamhshocraithe agus téamaí cliant a chumasú i gcónaí."; +$LANG["validation_default_phone_num_required"] = "Líon isteach an uimhir theileafóin iomlán don <b> { \$ réimse} </ b> réimse - uimhreacha amháin."; +$LANG["validation_default_rule_alpha"] = "Cuir isteach ach litreacha agus uimhreacha don <b> { \$ réimse} </ b> allamuigh."; +$LANG["validation_default_rule_letters_only"] = "Cuir isteach litreacha ach amháin le haghaidh an <b> { \$ réimse} </ b> allamuigh."; +$LANG["validation_default_rule_numbers_only"] = "Cuir ach líon isteach do na <b> { \$ réimse} </ b> allamuigh."; +$LANG["validation_default_rule_required"] = "Iontráil luach don réimse { \$} <b> </ b> allamuigh."; +$LANG["validation_default_rule_valid_email"] = "Cuir isteach seoladh ríomhphoist bailí ar feadh an réimse { \$} <b> </ b> allamuigh."; +$LANG["validation_delete_form_confirm"] = "Seiceáil an bosca a dheimhniú gur mian leat é a scrios an fhoirm seo."; +$LANG["validation_delete_non_empty_option_list"] = "Rabhadh! Is é seo an Liosta Rogha a úsáid ag amháin nó níos mó réimsí fhoirm. Beidh sé sin a scriosadh réimsí d'fheidhm a bheith ag obair i gceart."; +$LANG["validation_display_names_incomplete"] = "Cuir isteach luach do na Taispeáin Ainmneacha, nó cliceáil ar an Líon Cliste rogha dul isteach orthu dinimiciúil."; +$LANG["validation_duplicate_form_field_name"] = "Ní féidir leat a bheith réimsí il leis an ainm réimse céanna."; +$LANG["validation_email_not_found_or_invalid"] = "Tá brón orainn, an ríomhphost a bhaineann le do chuntas Níl ceachtar ann nó go bhfuil sé neamhbhailí."; +$LANG["validation_folder_invalid_permissions"] = "D'fhonn a rith an tástáil, is gá an cead a shocrú ar an fillteán a uaslódáil chun cead a thabhairt do léitheoireachta agus na scríbhneoireachta comhaid (777 ar Unix)."; +$LANG["validation_folder_not_writable"] = "Níl an fillteán writeable."; +$LANG["validation_internal_form_too_many_fields"] = "Tá brón orainn, is féidir leat a cruthaíodh ach le foirmeacha le réimsí 1000 nó níos lú."; +$LANG["validation_invalid_admin_email"] = "Cuir isteach adminstrator bailí le seoladh r-phoist."; +$LANG["validation_invalid_admin_username"] = "D'fhéadfadh d'ainm úsáideora comhdhéanta amháin de charachtair alfa-uimhriúla (AZ agus 0-9)."; +$LANG["validation_invalid_client_username"] = "Féadfaidh ainm úsáideora an chliaint a bheidh ach na carachtair alfa-uimhriúla (AZ agus 0-9)."; +$LANG["validation_invalid_client_username2"] = "Féadfaidh Tá brón orainn, ainm úsáideora a bhfuil ach litreacha, uimhreacha agus an carachtar underscore. Cuir isteach ainm úsáideora nua."; +$LANG["validation_invalid_column_name"] = "Is féidir ainmneacha Colún ach alfa-uimhriúla (AZ, 0-9). Seiceáil le do thoil na hainmneacha colún."; +$LANG["validation_invalid_custom_from_email"] = "Cuir isteach saincheaptha bailí 'Ó' seoladh r-phoist."; +$LANG["validation_invalid_custom_reply_to_email"] = "Cuir isteach saincheaptha bailí "Reply-to" seoladh r-phoist."; +$LANG["validation_invalid_default_sessions_timeout"] = "Cuir isteach luach bailí (líon) Teorainn ama chun na seisiúin réamhshocraithe."; +$LANG["validation_invalid_email"] = "Cuir isteach seoladh ríomhphoist bailí."; +$LANG["validation_invalid_email_id"] = "Tá brón orainn, go bhfuil an ríomhphost neamhbhailí ID."; +$LANG["validation_invalid_folder"] = "Tá brón orm, ní hionann sin cosúil le bheith ina fillteán bailí."; +$LANG["validation_invalid_form_field_names"] = "Féadfaidh réimsí Foirm ach a alfa-uimhriúla agus underscores (AZ, 0-9, _), gan aon spásanna."; +$LANG["validation_invalid_num_clients_per_page"] = "Cuir isteach ach amháin i líon na gCliant Num Sa réimse Leathanach."; +$LANG["validation_invalid_num_emails_per_page"] = "Iontráil dhigit ach amháin le haghaidh ríomhphoist in aghaidh an leathanaigh."; +$LANG["validation_invalid_num_form_fields"] = "Cuir ach líon isteach i Líon na páirce Réimsí."; +$LANG["validation_invalid_num_forms_per_page"] = "Cuir isteach ach amháin i líon na Foirmeacha Num Per Leathanach réimse."; +$LANG["validation_invalid_num_menus_per_page"] = "Cuir isteach ach amháin dhigit do na biachláir in aghaidh an leathanaigh."; +$LANG["validation_invalid_num_modules_per_page"] = "Cuir isteach ach amháin i líon na Modúil Num Sa réimse Leathanach."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Cuir ach líon isteach sna Liostaí Rogha Num Per réimse Leathanach."; +$LANG["validation_invalid_num_submissions_per_page"] = "Cuir isteach uimhir bailí aighneachtaí in aghaidh an leathanaigh."; +$LANG["validation_invalid_sessions_timeout"] = "Cuir isteach Teorainn ama sheisiún bailí (ach amháin integers!)."; +$LANG["validation_invalid_tab_assign_values"] = "Cuir isteach ach i líon an 'ó' agus 'go' réimsí."; +$LANG["validation_invalid_table_prefix"] = "Cuir isteach éard atá réimír bunachar sonraí de litir agus an béim carachtar amháin."; +$LANG["validation_invalid_upload_folder"] = "Tá do fhreastalaí a shuiteáil PHP suíomh neamhbhailí chun an luach upload_tmp_dir. "{\$upload_folder} nach bhfuil" fillteán bailí."; +$LANG["validation_invalid_url"] = "Cuir isteach URL bailí."; +$LANG["validation_invalid_username"] = "Is féidir do ainm úsáideora a bheidh ach na carachtair alfa-uimhriúla (AZ agus 0-9)."; +$LANG["validation_is_form_active"] = "Cur in iúl an bhfuil an fhoirm gníomhach nó nach bhfuil."; +$LANG["validation_menu_name_taken"] = "Tá brón orainn, tá ainm an roghchlár a glacadh cheana. Roghnaigh ainm nua."; +$LANG["validation_modules_search_no_status"] = "Roghnaigh ceachtar an ticbhoscaí Cumasaithe nó faoi Mhíchumas."; +$LANG["validation_no_access_type"] = "Cuir isteach an cineál rochtana."; +$LANG["validation_no_account_logout_url"] = "Cuir isteach do URL logála."; +$LANG["validation_no_account_password_confirmed"] = "Cuir ath-isteach do phasfhocal nua."; +$LANG["validation_no_account_password_confirmed2"] = "Cuir ar ais isteach an focal faire nua."; +$LANG["validation_no_admin_email"] = "Cuir isteach an riarthóir le seoladh r-phoist."; +$LANG["validation_no_admin_theme"] = "Roghnaigh an téama don chuntas riarthóir."; +$LANG["validation_no_admin_theme_swatch"] = "Roghnaigh téama swatch don riarthóir."; +$LANG["validation_no_client_email"] = "Cuir isteach an cliant le seoladh r-phoist."; +$LANG["validation_no_client_first_name"] = "Cuir isteach an cliant ar an chéad ainm."; +$LANG["validation_no_client_last_name"] = "Cuir isteach an cliant a ainm go deireanach."; +$LANG["validation_no_client_login_page"] = "Cuir in iúl Ba chóir leathanach a bhfuil an cliant a Athsheolta chun logáil isteach nuair siad isteach"; +$LANG["validation_no_client_password"] = "Cuir isteach an chliaint focal faire."; +$LANG["validation_no_client_theme_swatch"] = "Roghnaigh swatch réamhshocraithe do na cuntais chliaint."; +$LANG["validation_no_client_username"] = "Cuir isteach an chliaint ainm úsáideora."; +$LANG["validation_no_column_name"] = "Cuir isteach ainmneacha gach colún, nó cliceáil an cnaipe Cliste Líon a líonadh isteach go huathoibríoch iad."; +$LANG["validation_no_column_selected"] = "Roghnaigh amháin ar a laghad réimse láithriú mar colún ar an leathanach liostú aighneacht."; +$LANG["validation_no_custom_from_email"] = "Cuir isteach an saincheaptha 'Ó' seoladh r-phoist."; +$LANG["validation_no_custom_recipient_email"] = "Cuir isteach an saincheaptha do sheoladh ríomhphoist fhaighteora."; +$LANG["validation_no_custom_reply_to_email"] = "Cuir isteach an saincheaptha a "Reply-to" seoladh r-phoist."; +$LANG["validation_no_date_format"] = "Cuir isteach dáta formáid."; +$LANG["validation_no_db_column_single"] = "Cuir isteach an t-ainm Colún Bunachar Sonraí."; +$LANG["validation_no_db_hostname"] = "Cuir isteach óstainm an mbunachar sonraí."; +$LANG["validation_no_db_name"] = "Cuir isteach ainm an mbunachar sonraí."; +$LANG["validation_no_db_username"] = "Cuir isteach ainm úsáideora cuntas ar an mbunachar sonraí."; +$LANG["validation_no_default_client_theme"] = "Roghnaigh an téama réamhshocraithe do na cuntais go léir cliaint nua."; +$LANG["validation_no_default_language"] = "Roghnaigh an teanga réamhshocraithe do shuiteáil Foirm Uirlisí."; +$LANG["validation_no_default_sessions_timeout"] = "Cuir isteach an teorainn ama sheisiún réamhshocraithe le haghaidh cuntais úsáideora."; +$LANG["validation_no_display_text"] = "Cuir isteach an Téacs Taispeáin do gach réimse."; +$LANG["validation_no_display_text_single"] = "Cuir isteach an luach Téacs Taispeáin."; +$LANG["validation_no_edit_submission_page_label"] = "Cuir isteach an lipéad Cuir isteach leathanach."; +$LANG["validation_no_email"] = "Cuir isteach do sheoladh r-phoist."; +$LANG["validation_no_email_config_field"] = "Tá sonraigh le do thoil réimse foirm a réimse an ríomhphost."; +$LANG["validation_no_email_content"] = "Cuir isteach an t-ábhar ríomhphost amháin ar a laghad de na formáidí (HTML nó téacs)."; +$LANG["validation_no_email_from_field"] = "Cuir an ríomhphost 'ó' réimse."; +$LANG["validation_no_email_template_name"] = "Cuir isteach an ríomhphost teimpléad ainm."; +$LANG["validation_no_email_template_view_id"] = "Roghnaigh an View a teimpléid an ríomhphost seo, ba chóir go mbeadh mapped."; +$LANG["validation_no_email_template_view_mapping_value"] = "Cuir in iúl nuair ba chóir an r-phost a sheoladh."; +$LANG["validation_no_enabled_themes"] = "Cinntigh go bhfuil ar a laghad ceann amháin téama cumasaithe."; +$LANG["validation_no_first_name"] = "Cuir isteach do chéad ainm."; +$LANG["validation_no_form_field_name"] = "Cuir isteach ainmneacha gach réimse foirme."; +$LANG["validation_no_form_field_single"] = "Cuir isteach an luach Field Fhoirm."; +$LANG["validation_no_form_id"] = "An fhoirm aitheantais Ní raibh sonraithe. Logáil isteach amach agus bain triail eile as."; +$LANG["validation_no_form_name"] = "Cuir isteach ainm an bhfoirm."; +$LANG["validation_no_form_url"] = "Cuir isteach an fhoirm URL."; +$LANG["validation_no_last_name"] = "Cuir isteach d'ainm seo caite."; +$LANG["validation_no_login_page"] = "Cuir in iúl ar leathanach ba mhaith leat a sheoladh gach uair a logáil tú isteach"; +$LANG["validation_no_logout_url"] = "Cuir isteach an URL logála."; +$LANG["validation_no_main_email_recipient"] = "Cuir isteach ar a laghad ceann amháin faighteoir ríomhphost nach mó (ie cc nó BCC)."; +$LANG["validation_no_menu"] = "Roghnaigh roghchlár chun an cuntas úsáideora."; +$LANG["validation_no_menu_id"] = "Roghnaigh roghchlár."; +$LANG["validation_no_num_clients_per_page"] = "Cuir isteach líon na gcliant cuntais in aghaidh an leathanaigh."; +$LANG["validation_no_num_emails_per_page"] = "Le do thoil líon na ríomhphoist a iontráil ar liosta in aghaidh an leathanaigh."; +$LANG["validation_no_num_form_fields"] = "Cuir isteach líon na réimsí le haghaidh d'fhoirm."; +$LANG["validation_no_num_forms_per_page"] = "Cuir isteach líon na foirmeacha in aghaidh an leathanaigh."; +$LANG["validation_no_num_menus_per_page"] = "Le do thoil líon na biachláir isteach chun an liosta in aghaidh an leathanaigh."; +$LANG["validation_no_num_modules_per_page"] = "Cuir isteach líon na modúil in aghaidh an leathanaigh."; +$LANG["validation_no_num_option_lists_per_page"] = "Cuir isteach líon na liostaí rogha in aghaidh an leathanaigh."; +$LANG["validation_no_num_submissions_per_page"] = "Cuir isteach líon na n-aighneachtaí a chur ar taispeáint in aghaidh an leathanaigh."; +$LANG["validation_no_option_list_name"] = "Cuir isteach an t-ainm liosta rogha."; +$LANG["validation_no_page_titles"] = "Cuir isteach an leathanach teidil réamhshocraithe do na cuntais úsáideora."; +$LANG["validation_no_password"] = "Cuir isteach do phasfhocal."; +$LANG["validation_no_program_name"] = "Cuir isteach ainm an chláir."; +$LANG["validation_no_second_password"] = "Cuir isteach do phasfhocal arís."; +$LANG["validation_no_sessions_timeout"] = "Cuir isteach an teorainn ama seisiún."; +$LANG["validation_no_smart_fill_values"] = "Cuir isteach ainm an réimse an fhoirm agus an URL an fhoirm."; +$LANG["validation_no_table_prefix"] = "Iontráil réimír mbunachar sonraí."; +$LANG["validation_no_tabs_defined"] = "Uimh Cluaisíní sainithe"; +$LANG["validation_no_test_email_recipient"] = "Cuir isteach seoladh ríomhphoist an áit ar cheart dúinn a sheoladh ar an ríomhphost tástála."; +$LANG["validation_no_test_email_submission_id"] = "Cuir isteach an aighneacht ID uimhir."; +$LANG["validation_no_theme"] = "Roghnaigh téama."; +$LANG["validation_no_theme_swatch"] = "Roghnaigh swatch don téama a roghnaíodh."; +$LANG["validation_no_timezone_offset"] = "Cuir isteach an crios fhritháireamh."; +$LANG["validation_no_titles"] = "Cuir isteach an leathanach teidil."; +$LANG["validation_no_two_column_names"] = "Tá brón orainn, ní féidir leat dul isteach sa cholún ainm céanna faoi dhó sa bhunachar sonraí."; +$LANG["validation_no_ui_language"] = "Roghnaigh teanga chun comhéadan."; +$LANG["validation_no_url"] = "Cuir isteach URL."; +$LANG["validation_no_username"] = "Cuir isteach d'ainm úsáideora."; +$LANG["validation_no_username_or_js"] = "Ní mór duit d'ainm úsáideora. Le do thoil a ghníomhachtú javascript i do bhrabhsálaí."; +$LANG["validation_no_view_fields"] = "Ní Do Féach ar aon réimsí! Ní mór duit a shannadh amháin ar a laghad le haghaidh réimse go mbeadh rud éigin a thaispeáint suas i do Amharc."; +$LANG["validation_no_view_fields_selected"] = "Roghnaigh ceann amháin nó níos mó réimsí a chur leis an View."; +$LANG["validation_no_view_name"] = "Cuir isteach an t-ainm do Amharc."; +$LANG["validation_num_rows_to_add"] = "Cuir isteach líon na sraitheanna a chur leis."; +$LANG["validation_option_list_name_taken"] = "Tá brón orm, tá an t-ainm liosta rogha a glacadh cheana féin. Roghnaigh ainm nua."; +$LANG["validation_password_in_password_history"] = "Maidir le slándáil, ní féidir leat dul isteach an focal faire céanna le haon cheann de na deireanach {\$history_size} pasfhocail. Cuir isteach focal faire difriúla."; +$LANG["validation_passwords_different"] = "Déan cinnte an focal faire mar an gcéanna."; +$LANG["validation_please_enter_search_date_range"] = "Roghnaigh an raon dáta cuardaigh."; +$LANG["validation_please_enter_search_keyword"] = "Cuir isteach an eochairfhocal cuardaigh."; +$LANG["validation_select_field_type"] = "Roghnaigh cineál réimse."; +$LANG["validation_select_submissions_to_copy"] = "Roghnaigh na haighneachtaí sin ar mhaith leat cóip a dhéanamh."; +$LANG["validation_select_submissions_to_delete"] = "Roghnaigh na haighneachtaí ar mhaith leat a scriosadh."; +$LANG["validation_smart_fill_cannot_fill"] = "Tá brón orm, ní raibh muid ábalta a líonadh sa réimse seo."; +$LANG["validation_smart_fill_invalid_field_type"] = "Bhí muid in ann a aimsiú ar réimse, ach nach bhfuil sé ar dropdown, ticbhosca nó grúpa raidió."; +$LANG["validation_smart_fill_no_field_found"] = "Tá brón orm, ní raibh muid ábalta a aimsiú réimse foirm leis an ainm sin ar an leathanach sonraithe."; +$LANG["validation_smart_fill_no_page"] = "Le do thoil a aimsiú ar an leathanach a bhfuil an réimse mian leat go Smart Líon."; +$LANG["validation_smart_fill_upload_all_pages"] = "Le do thoil upload na leathanaigh i do bhfoirm."; +$LANG["validation_upload_folder_not_writable"] = "Níl an fillteán a uaslódáil sealadach a shonraítear leis do chóras PHP inscríofa. Go dtí seo tá socraithe, ní féidir comhaid a uaslódáil trí Foirm Uirlisí (nó ar bith eile PHP Clár). Déan teagmháil le do sholáthraí a óstáil."; +$LANG["validation_upload_html_files_only"] = "Le do thoil uaslódáil ach comhaid HTML."; +$LANG["validation_username_taken"] = "Tá brón orainn, go ainm úsáideora tógtha cheana féin. Cuir isteach ainm úsáideora eile."; +$LANG["validation_wrong_password"] = "Tá brón orainn, nach fhocal faire difriúla."; +$LANG["word_about"] = "I dtaobh"; +$LANG["word_access"] = "Rochtain"; +$LANG["word_account"] = "Cuntas"; +$LANG["word_account_sp"] = "Cuntas (s)"; +$LANG["word_accounts"] = "Cuntais"; +$LANG["word_action"] = "Gníomh"; +$LANG["word_active"] = "Gníomhach"; +$LANG["word_add"] = "Cuir le"; +$LANG["word_add_rightarrow"] = "Cuir »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Riarachán"; +$LANG["word_administrator"] = "Riarthóir"; +$LANG["word_after"] = "Tar éis"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Údar"; +$LANG["word_author_c"] = "Údar:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«back"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Roimh"; +$LANG["word_benefits"] = "Sochair"; +$LANG["word_blue"] = "Gorm"; +$LANG["word_cancel"] = "Cealaigh"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Seicliosta"; +$LANG["word_client"] = "Cliant"; +$LANG["word_client_c"] = "Cliant:"; +$LANG["word_clients"] = "Cliaint"; +$LANG["word_close"] = "Dún"; +$LANG["word_code"] = "Cód"; +$LANG["word_column"] = "Colún"; +$LANG["word_columns"] = "Colúin"; +$LANG["word_columns_sp"] = "Colún (í)"; +$LANG["word_complete"] = "Críochnaithe"; +$LANG["word_configuration"] = "Cumraíocht"; +$LANG["word_content"] = "Sásta"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Lean »"; +$LANG["word_copy"] = "Cóip"; +$LANG["word_custom"] = "Custam"; +$LANG["word_data"] = "Sonraí"; +$LANG["word_date"] = "Dáta"; +$LANG["word_debugging_c"] = "Dífhabhtaithe:"; +$LANG["word_delete"] = "Scrios"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Díreach"; +$LANG["word_disabled"] = "Faoi Mhíchumas"; +$LANG["word_documentation"] = "Doiciméadú"; +$LANG["word_done"] = "Arna dhéanamh"; +$LANG["word_drawbacks"] = "Drawbacks"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Edit"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Ríomhphost"; +$LANG["word_email_c"] = "Ríomhphost:"; +$LANG["word_emails"] = "Ríomhphost"; +$LANG["word_enabled"] = "Cumasaithe"; +$LANG["word_equals"] = "Cothrom"; +$LANG["word_error"] = "Earráid"; +$LANG["word_error_c"] = "Earráid:"; +$LANG["word_examples_c"] = "Samplaí:"; +$LANG["word_external"] = "Seachtrach"; +$LANG["word_fail"] = "Teip"; +$LANG["word_field"] = "Páirc"; +$LANG["word_field_sp"] = "Réimse (í)"; +$LANG["word_fields"] = "Réimsí"; +$LANG["word_fields_sp"] = "Réimse (í)"; +$LANG["word_file"] = "Comhad"; +$LANG["word_file_b_uc"] = "[COMHAD]"; +$LANG["word_files"] = "Comhaid"; +$LANG["word_filters"] = "Scagairí"; +$LANG["word_filters_sp"] = "Scagaire (í)"; +$LANG["word_for"] = "le haghaidh"; +$LANG["word_form"] = "Foirm"; +$LANG["word_form_c"] = "Foirm:"; +$LANG["word_formatting"] = "Formáidiú"; +$LANG["word_forms"] = "Foirmeacha"; +$LANG["word_found"] = "Faighte"; +$LANG["word_from"] = "Ó"; +$LANG["word_from_c"] = "From:"; +$LANG["word_general"] = "Ginearálta"; +$LANG["word_green"] = "Glas"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Airde"; +$LANG["word_help"] = "Cabhair"; +$LANG["word_hidden"] = "Hidden"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Cothrománach"; +$LANG["word_hour"] = "Uair"; +$LANG["word_hours"] = "Uaireanta"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Íomhá"; +$LANG["word_incomplete"] = "Neamhiomlán"; +$LANG["word_install"] = "Suiteáil"; +$LANG["word_installation"] = "Suiteáil"; +$LANG["word_internal"] = "Inmheánach"; +$LANG["word_language"] = "Teanga"; +$LANG["word_large"] = "Móra"; +$LANG["word_like"] = "Cosúil le"; +$LANG["word_login"] = "Logáil isteach"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Príomha"; +$LANG["word_medium"] = "Measartha"; +$LANG["word_menu"] = "Roghchlár"; +$LANG["word_menus"] = "Roghchláir"; +$LANG["word_minutes"] = "nóiméad"; +$LANG["word_misc"] = "Éagsúil"; +$LANG["word_module"] = "Modúl"; +$LANG["word_modules"] = "Modúil"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Ainm"; +$LANG["word_name_c"] = "Ainm:"; +$LANG["word_never"] = "Ná"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "Next Step »"; +$LANG["word_no"] = "Ní hea"; +$LANG["word_none"] = "Ar bith"; +$LANG["word_notes"] = "Nótaí"; +$LANG["word_notification"] = "Fógra"; +$LANG["word_number"] = "Uimhir"; +$LANG["word_off"] = "As"; +$LANG["word_offline"] = "Líne"; +$LANG["word_okay"] = "Maith go leor"; +$LANG["word_on"] = "Ar"; +$LANG["word_online"] = "Líne"; +$LANG["word_operator"] = "Oibreoir"; +$LANG["word_options"] = "Roghanna"; +$LANG["word_orange"] = "Oráiste"; +$LANG["word_order"] = "Ordú"; +$LANG["word_other"] = "Eile"; +$LANG["word_other_c"] = "Eile:"; +$LANG["word_page"] = "Leathanach"; +$LANG["word_page_c"] = "Page:"; +$LANG["word_pass"] = "Pas"; +$LANG["word_password"] = "Focal Faire"; +$LANG["word_password_c"] = "Pasfhocal:"; +$LANG["word_pending"] = "Ar feitheamh"; +$LANG["word_permissions"] = "Ceadanna"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«roimhe seo"; +$LANG["word_private"] = "Príobháideach"; +$LANG["word_public"] = "Poiblí"; +$LANG["word_purple"] = "Corcra"; +$LANG["word_recipient"] = "Faighteoir"; +$LANG["word_recipient_sp"] = "Faighteoir (s)"; +$LANG["word_red"] = "Dearg"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Bain amach"; +$LANG["word_remove_uc_leftarrow"] = "«Bain"; +$LANG["word_reply_to"] = "Freagair-go"; +$LANG["word_reply_to_c"] = "Reply-To:"; +$LANG["word_required"] = "Ag Teastáil"; +$LANG["word_reset"] = "Athshocraigh"; +$LANG["word_resolved"] = "Réitithe"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "as a chéile"; +$LANG["word_search"] = "Cuardaigh"; +$LANG["word_searchable"] = "Inchuardaithe"; +$LANG["word_select"] = "Roghnaigh"; +$LANG["word_setting"] = "Socrú"; +$LANG["word_settings"] = "Socruithe"; +$LANG["word_show"] = "Taispeáin"; +$LANG["word_size"] = "Méid"; +$LANG["word_skipped"] = "Léimeadh thar"; +$LANG["word_small"] = "Beaga"; +$LANG["word_solution"] = "Réiteach"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Tosaigh"; +$LANG["word_status"] = "Stádas"; +$LANG["word_string"] = "Teaghrán"; +$LANG["word_subject"] = "Ábhar"; +$LANG["word_subject_c"] = "Ábhar"; +$LANG["word_submenu"] = "Fo-Roghchlár"; +$LANG["word_submission"] = "Aighneacht"; +$LANG["word_submissions"] = "Aighneachtaí"; +$LANG["word_system"] = "Córas"; +$LANG["word_tab"] = "Cluaisíní"; +$LANG["word_tabs"] = "Cluaisíní"; +$LANG["word_tabs_sp"] = "Tab (í)"; +$LANG["word_test"] = "Triail"; +$LANG["word_text"] = "Téacs"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Téama"; +$LANG["word_themes"] = "Téamaí"; +$LANG["word_time"] = "Am"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Leideanna"; +$LANG["word_today"] = "Sa lá atá inniu"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Díshuiteáil"; +$LANG["word_unknown"] = "Anaithnid"; +$LANG["word_update"] = "Nuashonraigh"; +$LANG["word_upgrade"] = "Uasghrádú"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Úsáideoir"; +$LANG["word_username"] = "Ainm Úsáideora"; +$LANG["word_username_c"] = "Ainm Úsáideora:"; +$LANG["word_validation"] = "Bailíochtú"; +$LANG["word_value"] = "Luach"; +$LANG["word_value_sp"] = "Luach (s)"; +$LANG["word_verified"] = "Deimhnithe"; +$LANG["word_verify"] = "Fíoraigh"; +$LANG["word_version"] = "Leagan"; +$LANG["word_vertical"] = "Ingearach"; +$LANG["word_view"] = "Radharc"; +$LANG["word_views"] = "Radhairc"; +$LANG["word_warning"] = "Rabhadh!"; +$LANG["word_warning_c"] = "Rabhadh:"; +$LANG["word_web"] = "Gréasán"; +$LANG["word_welcome"] = "Fáilte!"; +$LANG["word_width_c"] = "leithead:"; +$LANG["word_words"] = "Focail"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Buí"; +$LANG["word_yes"] = "Is ea"; \ No newline at end of file diff --git a/global/lang/gl.php b/global/lang/gl.php new file mode 100644 index 00000000..77f5629d --- /dev/null +++ b/global/lang/gl.php @@ -0,0 +1,1219 @@ +Atención! Vostede seleccionou {\$num_selected_on_page} notas sobre esta páxina e {\$num_selected_on_other_pages} desde outras páxinas. Por favor, seleccione unha das seguintes opcións:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Atención! Non seleccionou ningún observacións nesta páxina, pero escolleu {\$num_selected_on_other_pages} desde outras páxinas. Por favor, confirme que desexa eliminar estas alegacións.
    "; +$LANG["confirm_delete_view"] = "Vostede está seguro que quere eliminar esta visión?"; +$LANG["confirm_refresh_page"] = "¿Está seguro de que quere actualizar a páxina? Este perderá os cambios que fixo."; +$LANG["confirm_save_change_before_redirect"] = "Un ou máis campos foron actualizados. Quere gardar os cambios antes de redireccionar?"; +$LANG["confirm_smart_fill_db_column_fields"] = "¿Está seguro que desexa Smart Encha os nomes de columna de base de datos? Isto ha substituír os valores existentes."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Esta opción xera automaticamente os nomes de base de datos columna a partir dos campos texto da pantalla, de xeito que o contido da táboa de base de datos son máis fáciles de ler."; +$LANG["confirm_smart_fill_display_names"] = "¿Está seguro que desexa Smart Encha os nomes de visualización? Isto ha substituír os valores existentes."; +$LANG["confirm_ungroup_option_list"] = "¿Está seguro de querer desagrupar esta lista de opcións? Todas as opcións serán agrupados nunha lista única, non agrupada."; +$LANG["confirm_uninstall_module"] = "¿Está seguro que desexa desinstalar este módulo? Todos os datos do módulo será perdido."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Ven"; +$LANG["date_Friday"] = "Venres"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "Luns"; +$LANG["date_PM"] = "AM"; +$LANG["date_Sat"] = "Sáb"; +$LANG["date_Saturday"] = "Sábado"; +$LANG["date_Sun"] = "Sol"; +$LANG["date_Sunday"] = "Domingo"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Xoves"; +$LANG["date_Tue"] = "Tue"; +$LANG["date_Tuesday"] = "Martes"; +$LANG["date_Wed"] = "Mér"; +$LANG["date_Wednesday"] = "Mércores"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Abril"; +$LANG["date_month_August"] = "Agosto"; +$LANG["date_month_December"] = "Decembro"; +$LANG["date_month_February"] = "Febreiro"; +$LANG["date_month_January"] = "Xaneiro"; +$LANG["date_month_July"] = "Xullo"; +$LANG["date_month_June"] = "Xuño"; +$LANG["date_month_March"] = "Marzo"; +$LANG["date_month_May"] = "Poder"; +$LANG["date_month_November"] = "Novembro"; +$LANG["date_month_October"] = "Outubro"; +$LANG["date_month_September"] = "Setembro"; +$LANG["date_month_short_Apr"] = "Abril"; +$LANG["date_month_short_Aug"] = "Agosto"; +$LANG["date_month_short_Dec"] = "Decembro"; +$LANG["date_month_short_Feb"] = "Febreiro"; +$LANG["date_month_short_Jan"] = "Xan"; +$LANG["date_month_short_Jul"] = "Xullo"; +$LANG["date_month_short_Jun"] = "Xuño"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Poder"; +$LANG["date_month_short_Nov"] = "Novembro"; +$LANG["date_month_short_Oct"] = "Outubro"; +$LANG["date_month_short_Sep"] = "Setembro"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "A conta de usuario foi borrada."; +$LANG["notify_account_updated"] = "A súa conta foi actualizada correctamente."; +$LANG["notify_add_display_values"] = "Engadir Amosar Valores"; +$LANG["notify_admin_menu_updated"] = "O menú de administración foi actualizado."; +$LANG["notify_admin_theme_overridden"] = "O tema do administrador foi substituído manualmente."; +$LANG["notify_allow_url_fopen_not_set"] = "Sentímolo, esta proba non pode ser executado no seu servidor web. Esixe allow_url_fopen para ser definido como 1 no seu ficheiro php.ini. Esta configuración permite o PHP para acceder os arquivos a través dunha URL, que é necesario para realizar esta proba. Pode proba-lo manualmente, a carga dun ficheiro para esa carpeta vía FTP, despois intentando acceder-lo na URL que proporcionou."; +$LANG["notify_change_temp_password"] = "Só dentro do sistema cun contrasinal temporal. Ten que reiniciar o seu contrasinal agora!"; +$LANG["notify_click_to_edit_new_submission"] = "Fai clic aquí para editar a nova presentación."; +$LANG["notify_client_account_menus_updated"] = "A conta de cliente (s) foron actualizados para o {\$menu_name} menú. Agora podes borrar o menú que foi anteriormente asociado á conta (s)."; +$LANG["notify_client_account_not_updated"] = "A conta de cliente non puido ser actualizado."; +$LANG["notify_client_account_themes_updated"] = "A conta de cliente (s) foron actualizados para o {\$theme} tema. Agora podes desactivar o tema anteriormente asociado á conta (s)."; +$LANG["notify_client_account_updated"] = "A conta de cliente foi actualizado correctamente."; +$LANG["notify_client_menu_deleted"] = "O menú de cliente foi eliminado."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "O menú foi borrado, pero as contas de cliente que segue agora xa non teñen un menú! Debe actualizar as seguintes contas:"; +$LANG["notify_client_menu_updated"] = "O menú do cliente foi actualizado."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Sentímolo, o menú que só intentou borrar xa está sendo usado polos clientes enumerados a continuación. Co fin de eliminar o menú primeiro necesitas para asignar a clientes de outros menús. Prema no nome do cliente para editar esta conta individual, ou atribuír todas as contas de un menú diferente empregando a lista de correo embaixo."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Sentímolo, un dos temas que acabou de discapacidade xa están sendo utilizados polas contas de cliente que se segue. Para desactivar o tema terá primeiro de asignar a cada cliente a outro tema. Prema no nome do cliente para editar esta conta individual, ou atribuír todas as contas a un tema utilizando a lista de correo embaixo."; +$LANG["notify_edit_email_fields_link"] = "Prema aquí para especificar que os campos do formulario son campos de correo-e, para que poida oriente-las nos seus modelos de correo-e."; +$LANG["notify_edit_field_new_field"] = "Este é un novo campo. Vai ter actualizar a páxina principal, antes de ser plenamente capaz de editar este campo."; +$LANG["notify_edit_option_list_after_save"] = "Debe seleccionar unha lista de opcións e despois en Gardar cambios antes de poder editalo."; +$LANG["notify_email_field_config_deleted"] = "A configuración do correo-e foi eliminada."; +$LANG["notify_email_fields_not_updated"] = "Sentímolo, non se pode actualizar os campos e-mail."; +$LANG["notify_email_fields_updated"] = "Os campos de correo-e foron actualizados."; +$LANG["notify_email_not_sent"] = "Sentímolo, o e-mail non puido ser enviada. Entre en contato co o administrador do sitio, no enderezo seguinte."; +$LANG["notify_email_not_sent_c"] = "Sentímolo, o correo electrónico non puido ser enviado:"; +$LANG["notify_email_sent"] = "O correo-e (s) foron enviados."; +$LANG["notify_email_template_deleted"] = "O correo-e Template foi borrada."; +$LANG["notify_email_template_updated"] = "O correo-e Template foi actualizado."; +$LANG["notify_enabled_module_list_updated"] = "A lista de módulos habilitados foi actualizado."; +$LANG["notify_error_saving_fields"] = "Houbo un erro ao gardar os campos."; +$LANG["notify_field_changes_saved"] = "Os cambios no seu campo (s) foron gardadas."; +$LANG["notify_field_options_smart_filled"] = "As súas opcións de campo foron intelixentes Cheo."; +$LANG["notify_field_selected"] = "O campo foi seleccionado. Prema aquí para voltar á lista de campo principal."; +$LANG["notify_field_updated"] = "Este campo foi actualizado."; +$LANG["notify_file_not_uploaded"] = "O ficheiro non puido ser cargado."; +$LANG["notify_file_uploaded"] = "O arquivo foi enviado con éxito."; +$LANG["notify_filters_not_updated"] = "Houbo un erro na actualización filtros este cliente submisión."; +$LANG["notify_filters_updated"] = "Os filtros de presentación foron actualizados para este cliente."; +$LANG["notify_folder_correct_permissions"] = "Este cartafol ten os permisos correctos."; +$LANG["notify_folder_url_match"] = "A pasta e URL parecen corresponder correctamente."; +$LANG["notify_folder_url_no_access"] = "Esta proba non pode ser realizada dende o PHP non foi capaz de acceder a URL. Xeralmente isto é causado por contrasinal URL protexido con un arquivo. Htaccess."; +$LANG["notify_folder_url_no_match"] = "Esta carpeta combinación de URL non parecen ser unha partida."; +$LANG["notify_folder_url_unknown_error"] = "Produciuse un erro descoñecido. Pode proba-lo manualmente, a carga dun ficheiro para esa carpeta vía FTP, despois intentando acceder-lo na URL que proporcionou."; +$LANG["notify_form_access_type_email_info"] = "Esta forma ten o tipo de acceso de administrador, polo que non os clientes teñen acceso a ela e non están listados abaixo na lista de correo."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sentímolo, un formulario co ID non existe."; +$LANG["notify_form_field_not_added"] = "O campo de formulario '{\$fieldname}' Non se puido engadir."; +$LANG["notify_form_field_options_updated"] = "As opcións de campo de formulario foron actualizados."; +$LANG["notify_form_field_removed"] = "O campo de formulario foi eliminada con éxito."; +$LANG["notify_form_fields_removed"] = "Os campos do formulario foron eliminados satisfactoriamente."; +$LANG["notify_form_not_updated_notify_admin"] = "A súa forma non podería ser actualizado. Entre en contato co o administrador do sitio web para informar deste problema."; +$LANG["notify_form_settings_updated"] = "Súas opcións de xeito foron actualizados con éxito."; +$LANG["notify_form_submission_updated"] = "O envío do formulario foi actualizado."; +$LANG["notify_form_tabs_updated"] = "Os separadores foron actualizados."; +$LANG["notify_form_updated"] = "O formulario foi actualizado correctamente."; +$LANG["notify_form_views_updated"] = "Modos de Vista forma foron actualizados."; +$LANG["notify_install_invalid_db_info"] = "Sentímolo, non se pode conectar á base de datos utilizando a información proporcionada. A mensaxe de erro da base de datos de retorno é: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "O seu formulario foi creado! Pode configurar o formulario a través destas guías."; +$LANG["notify_invalid_account_information_in_sessions"] = "A información de conta almacenadas en sesións non é válido. Faga o login de novo embaixo."; +$LANG["notify_invalid_license_key"] = "Sentímolo, iso non parece ser unha clave de licenza válida. Por favor, inténteo entrar de novo."; +$LANG["notify_invalid_permissions"] = "Non tes permiso para acceder a esta páxina. Vostede foi desconectado."; +$LANG["notify_invalid_search_dates"] = "Por favor, use o datepicker para introducir unha data válida ou datas."; +$LANG["notify_invalid_upload_folder"] = "O directorio de subida non é válido ou non é gravadora."; +$LANG["notify_lang_list_updated"] = "A listaxe de idiomas dispoñibles UI foi actualizado."; +$LANG["notify_login_info_emailed"] = "A súa información de login foi enviada para vostede."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, este módulo xa está instalado!"; +$LANG["notify_module_installed"] = "Este módulo foi instalado. Prema aquí para seleccionar o módulo."; +$LANG["notify_module_list_updated"] = "A lista de módulos foi actualizada."; +$LANG["notify_module_uninstalled"] = "Este módulo foi desinstalados."; +$LANG["notify_module_updated"] = "O módulo {\$module} foi actualizado para {\$version}. Prema aquí para seleccionar o módulo ."; +$LANG["notify_multi_field_selected"] = "O campo foi seleccionado. Clique aqui para ver e editar as opcións de campo."; +$LANG["notify_multi_field_updated"] = "Este campo foi actualizado. Será capaz de configurar as opcións de campo despois da creación do formulario."; +$LANG["notify_multiple_fields_found"] = "Varios elementos se atoparon con este nome de campo ({\$field_name}). Isto pode ocorrer se a páxina contén máis de unha forma ou se accidentalmente nomeado un dos seus formularios igual a outro. Por favor, escolla o que quere na lista seguinte."; +$LANG["notify_new_default_view_created"] = "A View novo estándar, contendo todos os seus campos de formulario foi creado."; +$LANG["notify_new_submission_created"] = "A presentación foi creada. Podes editalo continuación."; +$LANG["notify_no_account_id_in_sessions"] = "No ID conta de usuario foi atopada en sesións. Faga o login de novo embaixo."; +$LANG["notify_no_api_installed"] = "Non ten a API instalado"; +$LANG["notify_no_client_permissions"] = "Non hai opcións dispoñibles para edición."; +$LANG["notify_no_email_template_selected"] = "Por favor, seleccione o correo-e modelo."; +$LANG["notify_no_emails_defined"] = "No emails foron definidas para este formulario. Para engadir un novo nome, prema no botón de abaixo."; +$LANG["notify_no_field_settings"] = "Este tipo de campo non contén os axustes extra."; +$LANG["notify_no_fields_in_tab"] = "Esta guía non contén todos os campos."; +$LANG["notify_no_option_lists"] = "Non hai posibilidade de listas definidas. Prema no botón de abaixo para crear un novo."; +$LANG["notify_no_test_submission"] = "Formulario de ferramentas non recibiu unha presentación proba exitoso aínda."; +$LANG["notify_no_user_email_fields_configured"] = "Nota: se quere enviar un correo electrónico para calquera enderezo de correo-e que se incluíu no formulario, vostede primeiro que configurar os campos de correo-e forma."; +$LANG["notify_no_views"] = "O seu formulario non ten ningún Views set up! Vai ter polo menos unha vista, a fin de xestionar datos do seu formulario."; +$LANG["notify_no_views_assigned_to_client_form"] = "Semella que a súa conta de usuario non teña sido atribuído a calquera visto formulario, así que non será capaz de ver todos os datos. Por favor, contacte co administrador para máis axuda."; +$LANG["notify_no_views_defined"] = "Non ten ningún Views definido. Non será capaz de ver presentacións deste xeito, a non ser que, polo menos, unha View é creado. Prema no botón de abaixo para crear a vista por defecto."; +$LANG["notify_option_list_deleted"] = "A lista de opción non está presente."; +$LANG["notify_option_list_updated"] = "A lista de opcións foi actualizado."; +$LANG["notify_public_form_omit_list_updated"] = "O cliente omitir lista para este formulario foi actualizado."; +$LANG["notify_public_view_omit_list_updated"] = "O cliente omitir a esta lista foi actualizada."; +$LANG["notify_required_admin_pages"] = "As seguintes páxinas son obrigatorios no menú de administración: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Sentímolo, non houbo ningunha actividade por un tempo así que tivemos de desconectar-lo. Faga o login de novo embaixo."; +$LANG["notify_setup_options_updated"] = "As opcións de configuración foron actualizados."; +$LANG["notify_smart_fill_field_not_found"] = "Non se puido atopar un campo con ese nome ({\$field_name}) como (s) especificado. Pode configurar manualmente o tipo de campo de abaixo, ou faga clic no botón "Pasar a editar este campo máis tarde."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "O seu ficheiro (s) foi cargado con éxito. Proba premer no botón Smart Fill para tentar de novo. Se este paso non funciona, ten que saltar esta etapa e configurar os campos do formulario manally máis tarde."; +$LANG["notify_smart_fill_submitted"] = "O formulario foi enviado. Dependendo do tamaño da súa forma eo número de opcións de campo, isto pode levar algún tempo."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Sentímolo, un ou máis dos arquivos que escribiu non puido ser cargado. Vostede ten que saltar esta etapa e configurar os campos a man."; +$LANG["notify_submission_and_files_deleted"] = "A presentación e calquera ficheiro (s) a ela asociados foron eliminados correctamente."; +$LANG["notify_submission_copied"] = "Enviouse o envío."; +$LANG["notify_submission_copied_edit"] = "Enviouse o envío. Podes editalo a continuación."; +$LANG["notify_submission_deleted"] = "A presentación foi eliminado correctamente."; +$LANG["notify_submission_deleted_with_problems"] = "A presentación foi eliminado, pero os seguintes problemas foron atopados ao intentar eliminar o arquivo (s):"; +$LANG["notify_submission_id_not_found"] = "A presentación ID non se atopou."; +$LANG["notify_submission_not_updated"] = "A presentación non puido ser actualizado."; +$LANG["notify_submissions_and_files_deleted"] = "As declaracións e calquera ficheiro (s) que lles están asociados foron eliminados correctamente."; +$LANG["notify_submissions_copied"] = "Enviouse {\$num_submissions} envíos."; +$LANG["notify_submissions_deleted"] = "As notas foron borrado con éxito."; +$LANG["notify_submissions_deleted_with_problems"] = "As conclusións foron eliminados, pero os seguintes problemas foron atopados ao intentar eliminar o arquivo (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "O seu correo-e de proba non puido ser enviada."; +$LANG["notify_theme_cache_folder_not_writable"] = "Esta cartafol de caché do tema non é gravadora. Co fin de que este tema, o {\$folder} cartafol precisa ler enteiro teñen permisos de gravación."; +$LANG["notify_theme_list_updated"] = "A lista tema foi actualizado."; +$LANG["notify_themes_settings_updated"] = "Súas opcións de tema foron actualizados."; +$LANG["notify_view_deleted"] = "The View foi borrada."; +$LANG["notify_view_group_deleted"] = "Ver o grupo foi eliminado."; +$LANG["notify_view_missing_columns"] = "Oops! Sentímolo, esta visión non foi totalmente configurado aínda."; +$LANG["notify_view_missing_columns_admin_fix"] = "Prema aquí para especificar que campos debe aparecer como columnas nesta páxina."; +$LANG["notify_view_updated"] = "The View foi actualizado."; +$LANG["notify_your_email_sent"] = "O seu correo electrónico foi enviado con éxito."; +$LANG["phrase_100_per_page"] = "100 por páxina"; +$LANG["phrase_10_per_page"] = "10 por páxina"; +$LANG["phrase_15_per_page"] = "15 por páxina"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 por páxina"; +$LANG["phrase_25_per_page"] = "25 por páxina"; +$LANG["phrase_2_code"] = "2. Código"; +$LANG["phrase_2_columns"] = "2 Columnas"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 columnas"; +$LANG["phrase_4_columns"] = "4 Columnas"; +$LANG["phrase_50_per_page"] = "50 por páxina"; +$LANG["phrase_accepting_submissions"] = "(peticións aceptar)"; +$LANG["phrase_access_admin_account_c"] = "Podes acceder á túa conta de administración aquí:"; +$LANG["phrase_access_type"] = "Tipo de Acceso"; +$LANG["phrase_account_info"] = "Información sobre a conta"; +$LANG["phrase_account_settings"] = "Configuración da conta"; +$LANG["phrase_action_needed"] = "Acción requerida"; +$LANG["phrase_add_client"] = "Engadir Cliente"; +$LANG["phrase_add_client_menu"] = "Engadir Menú Cliente"; +$LANG["phrase_add_default_settings_rightarrow"] = "Engadir configuración por defecto »"; +$LANG["phrase_add_field"] = "Engadir Campo"; +$LANG["phrase_add_fields"] = "Engadir Campos"; +$LANG["phrase_add_fields_rightarrow"] = "Engadir Campo (s) »"; +$LANG["phrase_add_form"] = "Engadir formulario"; +$LANG["phrase_add_form_external"] = "Add Form - External"; +$LANG["phrase_add_form_internal"] = "Add Form - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Engadir novo grupo »"; +$LANG["phrase_add_num_rows"] = "Engadir {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Engadir botón de envío"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Engadir un formulario de varias páxinas a API"; +$LANG["phrase_adding_single_page_form"] = "Engadindo unha forma única páxina coa API"; +$LANG["phrase_admin_menu"] = "Menú administrador"; +$LANG["phrase_admin_only"] = "Só o administrador"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrador theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Advanced »Configuración"; +$LANG["phrase_all_X_results_selected"] = "Todos os {\$numresults} Resultados seleccionados"; +$LANG["phrase_all_clients"] = "Todos os clientes"; +$LANG["phrase_all_clients_except_c"] = "Todos os clientes, excepto:"; +$LANG["phrase_all_clients_have_access"] = "(todos os clientes teñen acceso)"; +$LANG["phrase_all_fields"] = "Todos os campos"; +$LANG["phrase_all_fields_displayed"] = "Todos os campos son mostrados"; +$LANG["phrase_all_statuses"] = "Todos os estados"; +$LANG["phrase_all_submissions"] = "Todas as observacións"; +$LANG["phrase_allow_fields_edited"] = "Permitir que os campos a seren editados"; +$LANG["phrase_alphanumeric"] = "Alfanuméricos (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Aplicar desprazamento de zona horaria"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Asignar todas as contas de clientes listados en {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Asignar todas as contas de clientes listados en {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "No Fin"; +$LANG["phrase_at_start"] = "En Inicio"; +$LANG["phrase_author_link"] = "Link Autor"; +$LANG["phrase_auto_disable_account"] = "Auto-conta desactivar despois dun intento de login #"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Clientes dispoñibles"; +$LANG["phrase_available_fields"] = "Campos dispoñibles"; +$LANG["phrase_available_option_lists"] = "Listas dispoñibles Opción"; +$LANG["phrase_available_swatches"] = "Mostras dispoñibles"; +$LANG["phrase_available_swatches_c"] = "Mostras dispoñibles:"; +$LANG["phrase_available_tabs"] = "Tabs dispoñibles"; +$LANG["phrase_available_views"] = "Visto Libre"; +$LANG["phrase_awaiting_form_submission"] = "Agardando envío do formulario."; +$LANG["phrase_back_to_field_list"] = "lista «voltar ao campo"; +$LANG["phrase_back_to_search_results"] = "Voltar aos resultados"; +$LANG["phrase_base_view_on"] = "Ver base a ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Cambiar información de login"; +$LANG["phrase_characters_limit_p"] = "caracteres de límite."; +$LANG["phrase_check_db_settings_try_again"] = "Por favor, verifique as súas opcións de base de datos e prema no botón Continuar novo."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Comprobe URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Borrar Lista omitir"; +$LANG["phrase_client_account_settings"] = "Cliente Configuración da conta"; +$LANG["phrase_client_field"] = "Campo Cliente"; +$LANG["phrase_client_map_filters"] = "Cliente Mapa filtros »"; +$LANG["phrase_client_may_edit"] = "Cliente pode editar"; +$LANG["phrase_client_menu"] = "Menú Cliente"; +$LANG["phrase_clients_can_access_form"] = "Clientes que pode acceder ao formulario"; +$LANG["phrase_clients_can_access_view"] = "Os clientes que poden acceder a Ver"; +$LANG["phrase_clients_cannot_access_form"] = "Clientes que non pode acceder ao formulario"; +$LANG["phrase_clients_cannot_access_view"] = "Clientes que non pode acceder o Vista"; +$LANG["phrase_clients_may_edit"] = "Os clientes poden editar"; +$LANG["phrase_code_c"] = "Código de erro:"; +$LANG["phrase_code_markup_field"] = "Código / Markup Campo"; +$LANG["phrase_code_markup_type"] = "Código / Tipo Markup"; +$LANG["phrase_codes_c"] = "Os códigos de erro:"; +$LANG["phrase_column_width"] = "Ancho da columna"; +$LANG["phrase_company_name"] = "Nome de Empresa"; +$LANG["phrase_configure_form_email_fields"] = "Configurar Email Form Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Confirm Folder match-URL"; +$LANG["phrase_connect_rows"] = "Conectarse liñas"; +$LANG["phrase_copy_email_settings_from"] = "Copiar Configuración de correo ..."; +$LANG["phrase_copy_settings_from"] = "Copiar Configuración De ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Crea unha"; +$LANG["phrase_create_admin_account"] = "Crea unha admin"; +$LANG["phrase_create_config_file"] = "Crear un arquivo de configuración"; +$LANG["phrase_create_database_tables"] = "Crear táboas de banco"; +$LANG["phrase_create_default_view"] = "Crear Vista estándar"; +$LANG["phrase_create_file"] = "Crear Arquivo"; +$LANG["phrase_create_group"] = "Crear Grupo"; +$LANG["phrase_create_new_email"] = "Crear un novo e-mail"; +$LANG["phrase_create_new_menu"] = "Crear un novo menú"; +$LANG["phrase_create_new_option_list"] = "Crear lista nova opción"; +$LANG["phrase_create_new_option_list_group"] = "Crear grupo de lista nova opción"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Crear lista nova opción »"; +$LANG["phrase_create_new_view"] = "Crear nova Vista"; +$LANG["phrase_create_new_view_group"] = "Crear Grupo Nova Vista"; +$LANG["phrase_custom_display_format"] = "Formato de visualización personalizado"; +$LANG["phrase_custom_recipient"] = "Destinatario Personalizado"; +$LANG["phrase_custom_url"] = "URL personalizada"; +$LANG["phrase_dark_blue"] = "Azul escuro"; +$LANG["phrase_data_type"] = "Tipo de datos"; +$LANG["phrase_database_hostname"] = "Hostname Database"; +$LANG["phrase_database_name"] = "Base de datos"; +$LANG["phrase_database_password"] = "Database password"; +$LANG["phrase_database_settings"] = "Database Settings"; +$LANG["phrase_database_setup"] = "Base de datos de configuración"; +$LANG["phrase_database_table_prefix"] = "Prefixo de táboa de base de datos"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Formato de Data"; +$LANG["phrase_db_column"] = "DB Columna"; +$LANG["phrase_db_setup_page_4"] = "4. Base de datos de configuración"; +$LANG["phrase_default_client_account_theme"] = "Default Client Account theme"; +$LANG["phrase_default_date_field_search_value"] = "Padrón de data valor de investigación de campo"; +$LANG["phrase_default_language"] = "Idioma por defecto"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Timeout estándar Sessions"; +$LANG["phrase_default_sort_order"] = "Orde de clasificación por defecto"; +$LANG["phrase_default_tab_label"] = "Datos"; +$LANG["phrase_default_theme"] = "Tema por defecto"; +$LANG["phrase_default_value"] = "Valor por defecto"; +$LANG["phrase_default_values"] = "Valores por defecto"; +$LANG["phrase_default_values_new_submissions"] = "Os valores por defecto para novas submissões"; +$LANG["phrase_delete_field"] = "Borrar campo"; +$LANG["phrase_delete_form"] = "Borrar Formulario"; +$LANG["phrase_delete_row"] = "Eliminar Liña"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Borrar arquivos asociados ao eliminar presentación"; +$LANG["phrase_delete_view"] = "Eliminar Ver"; +$LANG["phrase_disconnect_rows"] = "Desconectar liñas"; +$LANG["phrase_display_email"] = "Amosar E-mail"; +$LANG["phrase_display_name"] = "Alcume"; +$LANG["phrase_display_text"] = "Mostrar Texto"; +$LANG["phrase_display_value"] = "Mostrar Valor"; +$LANG["phrase_edit_admin_menu"] = "Editar Admin Menu"; +$LANG["phrase_edit_client"] = "Editar Cliente"; +$LANG["phrase_edit_client_menu"] = "Edit Menú Cliente"; +$LANG["phrase_edit_email_template"] = "Editar e-mail Template"; +$LANG["phrase_edit_field"] = "Editar campo"; +$LANG["phrase_edit_field_c"] = "Editar campo:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit tipo de acceso formulario]"; +$LANG["phrase_edit_option_list"] = "Editar Lista de Radio"; +$LANG["phrase_edit_submission"] = "Edit Submission"; +$LANG["phrase_edit_submission_label"] = "Editar Etiqueta Submission"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "Email Settings"; +$LANG["phrase_email_template"] = "E-mail Template"; +$LANG["phrase_email_template_name"] = "E-mail nome do modelo"; +$LANG["phrase_error_learn_more"] = "Máis información sobre este erro."; +$LANG["phrase_error_text_intro"] = "Corrixa o seguinte erro (s) e de novo:"; +$LANG["phrase_errors_learn_more"] = "Prema sobre os códigos de erro para aprender máis."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Forma exterior"; +$LANG["phrase_external_form_info"] = "Información do formulario externo"; +$LANG["phrase_external_your_own_form"] = "Externa (a súa propia forma)"; +$LANG["phrase_field_comments"] = "Comentarios campo"; +$LANG["phrase_field_label"] = "Campo Label"; +$LANG["phrase_field_options"] = "Opcións do campo de"; +$LANG["phrase_field_size"] = "Tamaño do Campo"; +$LANG["phrase_field_skipped"] = "Campo Skipped"; +$LANG["phrase_field_specific_settings"] = "Campo características específicas"; +$LANG["phrase_field_type"] = "Tipo de pista"; +$LANG["phrase_field_type_no_validation"] = "Non existen regras de validación dispoñibles para este tipo de campo."; +$LANG["phrase_field_types"] = "Tipos de campo"; +$LANG["phrase_field_value"] = "Valor do Campo"; +$LANG["phrase_field_values_to_display_values"] = "Valores de Campo »Mostrar Valores"; +$LANG["phrase_final_touches_page_6"] = "6. Últimos retoques"; +$LANG["phrase_finalize_form"] = "Finaliza Forma"; +$LANG["phrase_first_name"] = "Nome"; +$LANG["phrase_footer_text"] = "Footer Text"; +$LANG["phrase_for_any_form_submission"] = "Para calquera forma de presentación"; +$LANG["phrase_for_view_submissions"] = "Só para a presentación de Consulta:"; +$LANG["phrase_forgot_password"] = "Esqueceches o contrasinal?"; +$LANG["phrase_form_already_selected"] = "Forma xa seleccionados"; +$LANG["phrase_form_email_field_b_c"] = "Forma [campo] e-mail:"; +$LANG["phrase_form_email_field_configuration"] = "Forma-mail Field Configuration"; +$LANG["phrase_form_email_fields"] = "Email campos de formulario"; +$LANG["phrase_form_field"] = "Campo de formulario"; +$LANG["phrase_form_field_contents"] = "Campo Contido forma"; +$LANG["phrase_form_field_name"] = "Forma Nome do Campo"; +$LANG["phrase_form_field_placeholders"] = "Campo de espazos reservados forma"; +$LANG["phrase_form_fields"] = "Campos de formulario"; +$LANG["phrase_form_info"] = "Solicitude de Información"; +$LANG["phrase_form_info_2"] = "2. Solicitude de Información"; +$LANG["phrase_form_list"] = "Lista de forma"; +$LANG["phrase_form_name"] = "Nome do Formulario"; +$LANG["phrase_form_page"] = "Forma Páxina"; +$LANG["phrase_form_placeholders"] = "Espacios reservados Forma"; +$LANG["phrase_form_submission"] = "Formulario de Presentación"; +$LANG["phrase_form_submissions"] = "Submissões do formulario"; +$LANG["phrase_form_type"] = "Tipo de formulario"; +$LANG["phrase_form_url"] = "Forma URL"; +$LANG["phrase_form_urls"] = "URL forma"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formas asignado a calquera conta"; +$LANG["phrase_forms_page_default_message"] = "Formas mensaxe de páxina por defecto"; +$LANG["phrase_ft_installation"] = "Forma Ferramentas de Instalación de Script"; +$LANG["phrase_full_width"] = "Ancho total"; +$LANG["phrase_getting_started"] = "comezando"; +$LANG["phrase_global_placeholders"] = "Espacios reservados Global"; +$LANG["phrase_group_name"] = "Nome do Grupo"; +$LANG["phrase_group_options_q"] = "Opcións de grupo?"; +$LANG["phrase_group_rows"] = "Agrupar liñas"; +$LANG["phrase_have_fun"] = "Disfrútao!"; +$LANG["phrase_highlight_colour"] = "Cor destaque"; +$LANG["phrase_html_email"] = "E-mail HTML"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Fotos / Medios de Comunicación"; +$LANG["phrase_import_option_list_rightarrow"] = "Lista opción de importación »"; +$LANG["phrase_input_length"] = "Lonxitude de entrada"; +$LANG["phrase_installation_help"] = "Axuda instalación"; +$LANG["phrase_internal_form"] = "Formulario interna"; +$LANG["phrase_ip_address"] = "Enderezo IP"; +$LANG["phrase_is_multi_page_form_q"] = "Isto é unha forma de varias páxinas?"; +$LANG["phrase_label_response_placeholders"] = "Rótulo / response Placeholders"; +$LANG["phrase_large_300px"] = "Grande (300px)"; +$LANG["phrase_large_400px"] = "Grande (400px)"; +$LANG["phrase_last_7_days"] = "Últimos 7 días"; +$LANG["phrase_last_logged_in"] = "Ultima sesión en"; +$LANG["phrase_last_modified"] = "Última modificación"; +$LANG["phrase_last_modified_date"] = "Última data modificada"; +$LANG["phrase_last_name"] = "Apelidos"; +$LANG["phrase_letters_only"] = "Só letras"; +$LANG["phrase_light_brown"] = "Luz Brown"; +$LANG["phrase_limit_email_content"] = "Límite de teoría de correo-e a campos en Vista"; +$LANG["phrase_loading_ellipsis"] = "Cargando ..."; +$LANG["phrase_log_in"] = "Entrar"; +$LANG["phrase_login_as_user"] = "Entrar como este usuario"; +$LANG["phrase_login_info"] = "Entrar Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Iniciar sesión do Foro:"; +$LANG["phrase_login_panel_leftarrows"] = "«Entrar en Panel"; +$LANG["phrase_login_password"] = "Login Contraseña"; +$LANG["phrase_login_username"] = "Login Nome de usuario"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Saír URL"; +$LANG["phrase_main_nav"] = "Principal Nav"; +$LANG["phrase_main_settings"] = "Axustes principais"; +$LANG["phrase_manage_client"] = "Manage Client"; +$LANG["phrase_manage_client_omit_list"] = "Administrar Cliente omitir Lista"; +$LANG["phrase_max_file_size"] = "Max tamaño do arquivo"; +$LANG["phrase_max_length"] = "Lonxitude Max"; +$LANG["phrase_max_length_words_chars"] = "- Lonxitude Max (palabras / caracteres)"; +$LANG["phrase_may_add_submissions"] = "É posible engadir submissões"; +$LANG["phrase_may_copy_submissions"] = "Pode copiar presentacións"; +$LANG["phrase_may_delete_submissions"] = "Pode eliminar inscricións"; +$LANG["phrase_medium_150px"] = "Medio (150px)"; +$LANG["phrase_medium_200px"] = "Medio (200px)"; +$LANG["phrase_menu_name"] = "Nome do menú"; +$LANG["phrase_menu_type"] = "Menú Tipo"; +$LANG["phrase_min_password_length"] = "Lonxitude mínima contrasinal"; +$LANG["phrase_module_description"] = "Descrición do Módulo"; +$LANG["phrase_module_info"] = "Información do Módulo"; +$LANG["phrase_module_nav"] = "Módulo Nav"; +$LANG["phrase_month_to_date"] = "Mes ata a data"; +$LANG["phrase_multi_select"] = "Multi-seleccionar"; +$LANG["phrase_multi_select_dropdown"] = "Multi-dropdown seleccione"; +$LANG["phrase_multiple_fields_found"] = "Múltiples campos encontrados!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nome / Última"; +$LANG["phrase_new_blank_email"] = "New Blank e-mail"; +$LANG["phrase_new_blank_option_list"] = "Lista de Radio New Blank"; +$LANG["phrase_new_blank_view"] = "New Blank Ver"; +$LANG["phrase_new_ft_installation"] = "Nova Forma Ferramentas de Instalación"; +$LANG["phrase_new_option_list"] = "Lista de Radio de novos"; +$LANG["phrase_new_password"] = "Nova Contrasinal"; +$LANG["phrase_new_password_reenter"] = "Nova Contrasinal (escriba de novo)"; +$LANG["phrase_new_view"] = "Nova Vista"; +$LANG["phrase_new_view_all_fields"] = "New View - Todos os campos"; +$LANG["phrase_next_client"] = "próximo cliente »"; +$LANG["phrase_next_field"] = "»Próximo campo"; +$LANG["phrase_next_form"] = "forma seguinte »"; +$LANG["phrase_next_view"] = "Ver arquivo seguinte »"; +$LANG["phrase_no_clients"] = "Non clientes"; +$LANG["phrase_no_limit"] = "Sen Límite"; +$LANG["phrase_no_offset"] = "No offset"; +$LANG["phrase_no_option_lists_available"] = "Sen opcións de listas dispoñibles."; +$LANG["phrase_no_views"] = "No exhibicións"; +$LANG["phrase_no_views_with_filters_p"] = "(Aínda non hai Vistas con filtros definidos)"; +$LANG["phrase_none_not_recommended"] = "Ningún (non recomendado)"; +$LANG["phrase_not_assigned_to_option_list"] = "Este campo non é atribuída a unha lista de opcións."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Non é igual"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "NON Like"; +$LANG["phrase_not_visible_to_client"] = "(non visible ao cliente)"; +$LANG["phrase_num_clients_per_page"] = "Clientes Nun Per Page"; +$LANG["phrase_num_emails_per_page"] = "Nun correo-e por páxina"; +$LANG["phrase_num_fields"] = "Número de campos"; +$LANG["phrase_num_forms_per_page"] = "Nun Forms Por Portada"; +$LANG["phrase_num_menus_per_page"] = "Nun Menús por páxina"; +$LANG["phrase_num_modules_per_page"] = "Nun Módulos por Portada"; +$LANG["phrase_num_option_lists_per_page"] = "Nun Listas Opción por páxina"; +$LANG["phrase_num_options"] = "Nun Opcións"; +$LANG["phrase_num_rows"] = "Nun Liñas"; +$LANG["phrase_numbers_only"] = "Só números"; +$LANG["phrase_often_localhost"] = "(moitas veces "localhost")"; +$LANG["phrase_on_form_submission"] = "No envío do formulario"; +$LANG["phrase_one_char_number"] = "Polo menos unha personaxe é un número (0-9)"; +$LANG["phrase_one_char_upper"] = "Polo menos unha personaxe é maiúscula"; +$LANG["phrase_one_special_char"] = "Polo menos un dos {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(só clientes específicos teñen acceso)"; +$LANG["phrase_open_form_in_dialog"] = "Forma aberta na fiestra de diálogo"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Abre o formulario nunha fiestra de guía / new"; +$LANG["phrase_option_list"] = "Lista de opción"; +$LANG["phrase_option_list_name"] = "Nome da lista de opción"; +$LANG["phrase_option_list_or_contents"] = "Lista opción / Contents"; +$LANG["phrase_option_lists"] = "Listas de opción"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Page Titles"; +$LANG["phrase_pass_on"] = "Repercutir"; +$LANG["phrase_password_min"] = "Debe ser polo menos {\$length} caracteres."; +$LANG["phrase_password_one_number"] = "Debe conter polo menos un número (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Debe conter polo menos unha letra maiúscula."; +$LANG["phrase_password_requirements_c"] = "requisitos Contrasinal:"; +$LANG["phrase_password_reset"] = "Esquecín o meu contrasinal"; +$LANG["phrase_password_special_char"] = "Debe conter polo menos un dos seguintes caracteres: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permisos / Configuración Outros"; +$LANG["phrase_permitted_file_types"] = "Autorizada tipos de arquivo"; +$LANG["phrase_phone_number"] = "Número de teléfono"; +$LANG["phrase_phone_number_format"] = "Formato de número de teléfono"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini tamaño máximo permitido a subir:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Versión de PHP"; +$LANG["phrase_please_confirm"] = "Confirmar"; +$LANG["phrase_please_enter_license_key"] = "Por favor introduza o seu clave de licenza"; +$LANG["phrase_please_select"] = "Please Select"; +$LANG["phrase_please_select_form"] = "Por favor, seleccione unha forma"; +$LANG["phrase_prev_client"] = "«Prev cliente"; +$LANG["phrase_prev_form"] = "«Forma prev"; +$LANG["phrase_prevent_password_reuse"] = "re impedir a utilización de claves pasado #"; +$LANG["phrase_previous_field"] = "campo anterior «"; +$LANG["phrase_previous_page"] = "Precedente"; +$LANG["phrase_previous_view"] = "«Anterior Ver"; +$LANG["phrase_program_name"] = "Nome do programa"; +$LANG["phrase_public_form_omit_list"] = "Lista Pública Forma omitir"; +$LANG["phrase_public_view_omit_list"] = "View Public omitir List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Houbo un problema coa seguinte consulta:"; +$LANG["phrase_radio_buttons"] = "Botóns de Radio"; +$LANG["phrase_random_form_submission"] = "Random envío do formulario"; +$LANG["phrase_re_enter_password"] = "Re-enter Contrasinal"; +$LANG["phrase_recipient_type"] = "Tipo de destinatario"; +$LANG["phrase_redirect_url"] = "URL de redirección"; +$LANG["phrase_refresh_list"] = "Actualizar lista"; +$LANG["phrase_refresh_module_list"] = "Refresh List Module"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Refresh List theme"; +$LANG["phrase_register_new_email"] = "Register New Email"; +$LANG["phrase_remaining_characters"] = "caracteres restantes"; +$LANG["phrase_remaining_words"] = "palabras restantes"; +$LANG["phrase_remove_tabs"] = "Eliminar Tabs"; +$LANG["phrase_required_password_chars"] = "Necesario caracteres contrasinal"; +$LANG["phrase_resend_test_submission"] = "Reenviar Test Submission"; +$LANG["phrase_return_form_list"] = "Return to Form List"; +$LANG["phrase_row_selected"] = "{\$num_rows} liña seleccionada"; +$LANG["phrase_rows_selected"] = "{\$num_rows} liñas seleccionadas"; +$LANG["phrase_sample_data"] = "Datos da Mostra"; +$LANG["phrase_save_changes"] = "Gardar cambios"; +$LANG["phrase_search_keyword"] = "Procurar palabras clave"; +$LANG["phrase_security_settings"] = "Configuración de Seguridade"; +$LANG["phrase_select_all"] = "Seleccionar todo"; +$LANG["phrase_select_all_X_results"] = "Seleccione Todos {\$numresults} Resultados"; +$LANG["phrase_select_all_on_page"] = "Na páxina Seleccionar Todos"; +$LANG["phrase_select_date"] = "Seleccione a data"; +$LANG["phrase_select_field"] = "Seleccione Campo"; +$LANG["phrase_select_swatch"] = "Seleccione Swatch"; +$LANG["phrase_selected_clients"] = "Clientes seleccionados"; +$LANG["phrase_selected_views"] = "Vistas seleccionados"; +$LANG["phrase_send_email"] = "Enviar correo-e"; +$LANG["phrase_send_test_email"] = "Send Test E-mail"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sesións Timeout"; +$LANG["phrase_setting_value"] = "Indicación Valor"; +$LANG["phrase_setup_options"] = "Opcións de configuración"; +$LANG["phrase_show_all"] = "Show All"; +$LANG["phrase_show_form"] = "Amosar Form"; +$LANG["phrase_size_large"] = "Grande (TEXTO)"; +$LANG["phrase_size_medium"] = "Medio (<= 256 caracteres)"; +$LANG["phrase_size_small"] = "Pequeno (<= 20 caracteres)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 caracteres)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Campo"; +$LANG["phrase_skip_step"] = "Paso Pasar"; +$LANG["phrase_small_100px"] = "Pequena (100px)"; +$LANG["phrase_small_80px"] = "Pequenos (80px)"; +$LANG["phrase_smart_fill"] = "Enchido intelixente"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Enche os campos a partir de:"; +$LANG["phrase_smart_fill_user_documentation"] = "Enchido intelixente Documentación do usuario »"; +$LANG["phrase_sort_as"] = "Como clasificar"; +$LANG["phrase_special_fields"] = "Campos especiais"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Filtros por defecto »"; +$LANG["phrase_step_1"] = "Paso 1"; +$LANG["phrase_step_2"] = "Paso 2"; +$LANG["phrase_step_3"] = "Paso 3"; +$LANG["phrase_step_4"] = "Paso 4"; +$LANG["phrase_step_5"] = "Paso 5"; +$LANG["phrase_step_6"] = "Paso 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Tags Strip en submissões do formulario"; +$LANG["phrase_subject_line"] = "Asunto Line"; +$LANG["phrase_submission_date"] = "Data de presentación"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Presentación feita: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Tipo de presentación"; +$LANG["phrase_submissions_per_page"] = "Submissões por páxina"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Non podes engadir validación para campos do sistema."; +$LANG["phrase_system_time_offset"] = "Sistema Time Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Permisos de pasta de proba"; +$LANG["phrase_test_submission"] = "Test Submission"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Received"; +$LANG["phrase_text_and_html"] = "Texto e HTML"; +$LANG["phrase_text_email"] = "Texto e-mail"; +$LANG["phrase_text_template"] = "Texto modelo"; +$LANG["phrase_the_previous_month"] = "Ao mes anterior"; +$LANG["phrase_theme_description"] = "Descrición tema"; +$LANG["phrase_theme_info"] = "Tema Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total:"; +$LANG["phrase_type_c"] = "Tipo de erro:"; +$LANG["phrase_unselect_all"] = "Desmarcada Todos"; +$LANG["phrase_update_accounts"] = "Actualización de Contas"; +$LANG["phrase_update_email_template"] = "Actualización de correo-e Template"; +$LANG["phrase_update_field"] = "Actualizar campo"; +$LANG["phrase_update_order"] = "Orde de actualización"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Subida de Arquivos"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Camiño do cartafol Upload"; +$LANG["phrase_upload_folder_url"] = "Upload carpeta URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Usar o valor por defecto?"; +$LANG["phrase_used_by_num_form_fields"] = "Usado por # campos do formulario"; +$LANG["phrase_uses_swatches"] = "Úsase Swatch"; +$LANG["phrase_valid_email"] = "Correo-e válido"; +$LANG["phrase_validation_error"] = "Erro de validación"; +$LANG["phrase_validation_rule"] = "Regra de Validación"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Ver Grupo"; +$LANG["phrase_view_id"] = "Ver ID"; +$LANG["phrase_view_name"] = "Vendo Nome"; +$LANG["phrase_view_placeholders"] = "Placeholders vista"; +$LANG["phrase_view_submissions"] = "Ver artigos enviados"; +$LANG["phrase_view_uploaded_files"] = "ver os ficheiros enviados"; +$LANG["phrase_viewing_range"] = "[ver {\$startnum} a {\$endnum}]"; +$LANG["phrase_when_sent"] = "Cando enviado"; +$LANG["phrase_when_submission_is_deleted"] = "Cando a presentación é eliminado"; +$LANG["phrase_when_submission_is_edited"] = "Cando a presentación é editado"; +$LANG["phrase_who_can_access"] = "¿Quen pode acceder?"; +$LANG["phrase_word_limit_p"] = "límite de palabras."; +$LANG["phrase_year_to_date"] = "No acumulado do ano"; +$LANG["phrase_yes_for_all_views"] = "Si, a todas as vistas"; +$LANG["phrase_yes_for_specific_views"] = "Si, para visións específicas"; +$LANG["phrase_your_account"] = "A túa Conta"; +$LANG["phrase_your_email"] = "O seu e-mail"; +$LANG["phrase_your_email_address"] = "Enderezo de correo electrónico"; +$LANG["processing_form_disabled"] = "Sentímolo, este formulario foi deshabilitada."; +$LANG["processing_form_incomplete"] = "Sentímolo, esta forma non parece ser creada a partir do Formulario de ferramentas. A causa máis probable deste problema é que eliminou os form_tools_initialize_form "campo de formulario oculto, pero non completaron todos os pasos do" Add Form "do proceso.

    Por favor, faga o login e revisar a configuración do formulario."; +$LANG["processing_init_complete"] = "Grazas! A súa presentación de proba foi publicada con éxito. Por favor, volte ao panel Forma de ferramentas administrativas e prema no botón "Actualizar" na parte inferior do formulario Engadir Paso 3 páxina para completar a configuración do seu formulario."; +$LANG["processing_invalid_form_id"] = "Sentímolo, este non parece ser unha identificación de forma válida."; +$LANG["processing_no_form_id"] = "process.php require un formulario de identificación para o procesamento. Asegúrese o formulario contén un campo oculto co nome "form_tools_form_id" que está pasando ao longo do formulario de identificación."; +$LANG["processing_no_form_url_for_recaptcha"] = "Forma Tools é incapaz de determinar onde redirección cando eles non lograron entrar no CAPTCHA correctamente. Por favor, pase nun campo oculto co nome form_tools_form_url contén a URL do formulario."; +$LANG["processing_no_post_vars"] = "process.php non está recibindo os datos. NOTA: Este script non pode ser cargado directamente no seu navegador.
    Asegúrese de que o formulario está enviando vía POST."; +$LANG["processing_no_redirect_url"] = "A presentación foi procesada correctamente, pero non especificou un URL de redirección para este formulario! Edita o teu formulario no Formulario de ferramentas interface de usuario e engadir a URL de redirección."; +$LANG["special_language"] = "Galician"; +$LANG["special_language_locale"] = "Galician"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Todas as novas contas de clientes será creada con a configuración e permisos definidas a continuación. Para substituír unha definición dun cliente, editar a conta do cliente e visitar o seu guía Configuración."; +$LANG["text_add_form_choose_integration_method"] = "Escoller cal o método que desexa utilizar para integrar o seu formulario Ferramentas do formulario."; +$LANG["text_add_form_code_submission_benefits"] = "Este método utiliza o Form Tools API , incluídos no principal guión Ferramentas formulario. A API ofrece unha serie de funcións útiles para facer o traballo de integración do seu formulario con ferramentas de forma máis sinxela posible. Non hai restricións á forma en que o seu formulario pode ser presentado cando usa a API. Pode enviar o contido dunha soa vez ou páxina por páxina, podes engadir as súas propias de validación do lado do servidor personalizados, imaxes de CAPTCHA, pode optar por presentar a información agora, só dicirlle para mostrar a presentación no Formulario de ferramentas UI nunha data posterior (vexa a Fin submissões sección na documentación de axuda API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Co fin de presentar os datos do formulario PHP, o formulario debe estar situado no mesmo sitio web como a instalación Tools formulario. En segundo lugar, a Ferramentas usuarios Form non técnicos e principiantes, este método pode ser un pouco intimidante no comezo. Pero hai unha abundancia de documentación para axudar, incluíndo dous tutoriais simple para integrar as súas formas simples e multi-page (estes están ligados a unha etapa posterior)."; +$LANG["text_add_form_direct_submission_benefits"] = "Esta é a maneira máis sinxela de enviar o seu formulario para Formulario ferramentas. Non require ningún coñecemento de PHP e require só un cambio moi pequena a súa forma. É gran para formas máis pequenos, onde quere só enviar a información á base de datos, a continuación, redireccionar ao usuario a un thankyou "páxina."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Ese método de envío é moi sinxelos, pero non dá moito control para formas máis complicadas. Formularios de varias páxinas ou formularios que requiren validación do lado do servidor son máis axeitadas para o segundo método: presentación a través das ferramentas de Ciencias da API."; +$LANG["text_add_form_field_types1"] = "Case listo! Esta páxina intenta atopar todos os campos do formulario e determinar os seus tipos de campo. Preme o botón Enchido intelixente á dereita para comezar. Será só permitido proceder cando todas as accións sexan resoltos - cuestións que precisan da súa atención aparecer na "Action Needed " columna."; +$LANG["text_add_form_field_types2"] = "Se o formulario non é HTML, prema no botón Step Ir a continuar. Iso todo se pode configurar máis tarde."; +$LANG["text_add_form_field_types3"] = "Este recarga o contido da súa forma (s). Nota: esta pode substituír todas as modificacións feitas nesta páxina."; +$LANG["text_add_form_field_types4"] = "No caso de que ten problemas, prema aquí para saltar este paso. Todos os campos non resoltos son definidas para usar os valores por defecto. Pode personalizar estes campos despois."; +$LANG["text_add_form_field_types_manual_upload"] = "Se non puido Enchido intelixente seus campos, pode querer probar unha solución alternativa: subida copias das súas formas nos campos de abaixo."; +$LANG["text_add_form_field_types_manual_upload2"] = "Nota: non cargar as páxinas PHP prima (ou código server-side outros) - pode subir as versións de HTML. Para conseguir isto, ver e gardar a páxina do seu navegador."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Había varios campos que non puideron ser atopados na páxina do formulario que especificou. Isto é máis probabelmente causada por unha das seguintes opcións:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Escribiu un ou máis dos URLs forma do seu formulario de varias páxinas de forma incorrecta."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Unha ou máis páxinas do formulario son protexidos por contrasinal eo script non poderían acceder á páxina."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Escribe incorrectamente a súa URL formulario."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Preme aquí para volver á páxina de información do formulario para comprobar as súas opcións."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Vostede cambiou a súa forma (s) despois de facer a presentación de proba"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Prema aquí para poñer a submisión a través de outra proba."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "A súa forma é protexido por contrasinal eo script non poderían acceder á páxina."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Noutra separador / xanela do navegador, entrar no seu formulario fai clic no botón Actualizar páxina seguinte para tentar re-atopar os campos."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Se ningunha das solucións anteriores o traballo, tamén se pode querer tratar de enviar a man os seus formularios para o procesamento ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Había varios campos que non podían ser encontradas nas páxinas de formulario que especificou. Isto é máis probabelmente causada por un destes:"; +$LANG["text_add_form_help_link"] = "Se ten calquera problema durante estas etapas, proba ler en documentación de usuario ."; +$LANG["text_add_form_step_1_text_1"] = "As seguintes páxinas levalo a través dos pasos para configurar ferramentas de formulario para almacenar as súas submissões do formulario. Antes de continuar, comproba que:"; +$LANG["text_add_form_step_1_text_2"] = "o formulario xa foi creado e é accesible a través dunha URL (localhost é bo)"; +$LANG["text_add_form_step_1_text_3"] = "son capaces de modificar a súa forma"; +$LANG["text_add_form_step_2_para_2"] = "Abre o formulario nun editor da súa elección e cambiar a súa tag de formulario para a seguinte, incluíndo os dous campos ocultos."; +$LANG["text_add_form_step_2_para_3"] = "A continuación, abrir o formulario nun navegador web. Cubrir todos os campos e presenta-lo. Despois da presentación, ten que ver unha mensaxe de notificación. Unha vez que esta mensaxe é exhibida, volva a esta páxina e prema no botón de actualización. Cando este proceso estea concluído, podes ver un botón continuar embaixo, levando-o para a próxima etapa."; +$LANG["text_add_form_step_2_para_6"] = "Na súa presentación do formulario, incluír os seguintes valores. Eles poden ser creados directamente a través de PHP ou pasar a través do formulario propio. Abaixo móstranse algúns exemplos de cada un. Os US \$ varName () é un hash (matriz ou asociativa) de todas as informacións de envío de formulário - este é xeralmente o postvar \$ (ou)) (\$ SESSIONVAR variable, pero poden ser construídas."; +$LANG["text_add_form_step_2_text_2"] = "Introduza o URL do seu page "grazas " aquí. Isto é onde quere que a xente se dirixidos para despois de que o formulario foi sometido."; +$LANG["text_add_form_step_3_para_1"] = "Esta páxina lista os campos no seu formulario de inscrición. Por favor, analizar cada campo e eliminar calquera que non precisa almacenado para cada presentación. Se eliminas un campo válido por accidente, ou se queres cambiar as informacións almacenadas pola súa forma, volver á páxina anterior enviar unha presentación proba de novo."; +$LANG["text_add_form_step_3_para_2"] = "Nota: se está enviando varios valores a través de caixas ou un multi-selección, comproba-se do seu nome de dominio remata coa [] caracteres (consulte a documentación do usuario para máis información)."; +$LANG["text_add_form_step_3_text_1"] = "Aquí é onde a diversión comeza! Neste punto, ferramentas Form está esperando por unha presentación de proba da súa forma. El vai usar ese envío do formulario de saber que información deben ser almacenadas na base de datos."; +$LANG["text_add_form_step_3_text_2"] = "sinalando o formulario para Formulario Caixa de ferramentas"; +$LANG["text_add_form_step_3_text_3"] = "utilizando o formulario Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Para axudar a integrar a súa forma, suxerímoslle que lea un dos tutoriais a continuación:"; +$LANG["text_add_form_step_3_text_5"] = "Aí se explica como configurar o formulario na preparación para a presentación de probas, e incluír outra información que poidan ser de axuda. A liña do PHP necesita é:"; +$LANG["text_add_form_step_3_text_6"] = "Isto garante que os datos son realmente enviada ao Formulario ferramentas. Cando pór a súa presentación a través de proba, prema no botón de abaixo."; +$LANG["text_add_form_step_3_text_7"] = "No PREVIA páxina aos seus fins "gracias", non esquezas de engadir o seguinte parámetro para a variable \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "A base de datos foi creado para a este formulario eo formulario foi activado para uso. Se fixo a presentación, sinalando o formulario para process.php, por favor, regresa á súa forma e eliminar o seguinte campo oculto:"; +$LANG["text_add_form_step_5_para_2"] = "Entón visita o seu "agradecemento" para baleirar as sesións. Unha vez feito isto, todas as submissões novo formulario serán procesados e almacenados polo formulario ferramentas. Probe facer unha presentación ou dous para verificar a información é todo a carga correctamente."; +$LANG["text_add_form_step_5_para_3"] = "Se desexa axustar a súa forma de opcións, tales como auto-mail, engadindo extra campo de formulario campos, ou personalizar os tipos de campo de formulario, pode editar o formulario en calquera punto."; +$LANG["text_add_form_step_5_para_4"] = "Dende o formulario contén campos de subida de arquivos, terá que configurar cada campo para indicar a carpeta upload do ficheiro, a cales arquivos están permitidas e. Isto pódese atopar na guía vista da páxina de edición do formulario."; +$LANG["text_add_form_step_5_para_5"] = "Se a presentación foi enviada a través da API, cambie a liña ft_api_init_form_page na primeira páxina do formulario para:"; +$LANG["text_add_submission_button"] = "O botón Engadir Submission só aparece para as visións que teñen o "de maio engadir submissões " opción definido como "si "."; +$LANG["text_admin_email_placeholder_info"] = "Este é o enderezo de correo-e do administrador de ferramentas de formulario, definida nas súas opcións de conta. Isto só xera o enderezo de correo electrónico, por exemplo, se quere utilizar como unha ligazón HTML, necesitará de implica-la nunha marca <a>, así:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ adminEmail) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Vexa tamén o tema por defecto páxina de usuario)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Primeiro, seleccione o tipo de formulario."; +$LANG["text_client_form_page"] = "Esta páxina lista todas as formas e modos de visualización asignado a este cliente. Consello: para que eles vexan envíos de un formulario, eles precisan ser asignados a unha ou varias View."; +$LANG["text_client_map_filters_desc1"] = "Filtros Mapa do cliente permiten limitar a presentación de propostas que aparecen nesta Ver mapeando os valores en un campo de formulário para os valores en unha conta de cliente."; +$LANG["text_client_no_forms"] = "Vostede actualmente non teñen formularios dispoñibles para a revisión."; +$LANG["text_client_welcome"] = "Benvido! Este programa almacena toda a información presentadas polos visitantes do seu sitio. Para ver as propostas para unha forma particular basta con premer no enlace "Ver, ou consulte o menú de navegación da esquerda para outras opcións."; +$LANG["text_config_file_created"] = "O seu ficheiro config.php que foi creado."; +$LANG["text_config_file_not_created"] = "Non poderiamos crear o ficheiro config.php. Necesitará crear o ficheiro de xeito manual."; +$LANG["text_config_file_not_created_instructions"] = "Copie e pegue o contido da sección seguinte nun ficheiro chamado config.php e enviá-lo vía FTP para as ferramentas de formulario / carpeta global (no cartafol que contén tamén algúns outros arquivos e directorios, un arquivo chamado library.php)."; +$LANG["text_confirm_delete_form"] = "Si, quero eliminar esa forma"; +$LANG["text_create_admin_account"] = "Agora imos crear a conta de administrador. Isto é usado para xestionar todos os aspectos da forma de instrumentos, tales como a adición de formularios e creación de contas de clientes."; +$LANG["text_create_new_client_account"] = "Use o seguinte formulario para crear unha nova conta de cliente. Todos os campos son obrigatorios."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "ver PHP {\$datefunctionlink} función das opcións de formato"; +$LANG["text_default_file_settings_page"] = "Esta páxina define as opcións de subida de arquivos para a súa instalación Ferramentas de formulario. Estas normas son aplicables a todos os ficheiros enviados a través de formulario de ferramentas, a menos que explicitamente substituída por un campo de formulário individual. Nota: se cambiar a carpeta de subida despois os arquivos teren sido carregados, eles serán automaticamente movidos para a nova carpeta."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Antes de continuar, terá de actualizar o seu / themes / default cartafol / caché para permitir a plena lectura e escritura permisos. Unha vez feito isto, esta mensaxe desaparecerá e pode instalar o script."; +$LANG["text_default_values_in_view"] = "Esta sección é opcional. Todas as submissões creado con esa visión contén os valores estándar especifique aquí."; +$LANG["text_delete_all_forms"] = "Quero borrar todos os ficheiros que foron enviados a través deste formulario"; +$LANG["text_delete_form_warning"] = "Está seguro de querer eliminar esta forma? Esta acción non se pode desfacer. Tódolos datos serán perdidos!"; +$LANG["text_edit_admin_menu_page"] = "Podes editar o seu menú a continuación. Para garantir que sempre terá acceso a todas as funcións dispoñibles no formulario de ferramentas, nas páxinas seguintes son necesarias: Formularios, clientes, a súa conta, Modules, Definicións e Saír."; +$LANG["text_edit_client_menu_page"] = "Esta sección permite personalizar a columna de navegación da esquerda para cada usuario. Pode crear tantos menús cliente que desexe e atribua calquera conta de un deles. Por defecto, hai dous menús: un para ti, o administrador e unha a todas as contas de clientes. A conta de administrador pode ser modificado, pero non eliminada."; +$LANG["text_edit_tab_summary"] = "Se desexa agrupar os campos deste Ver en pestanas, escriba os nomes seguinte ligazón. Despois de que termine, seleccione a pestana apropiada para cada grupo de campos na guía Campos ."; +$LANG["text_edit_view_list_page"] = "Esta guía, que controla os campos aparecen como columnas na páxina de Selección Submission, e algunhas opcións adicionais para estes campos. Nota: recomendamos que engadir non máis que 4 ou 5 dos campos máis importantes da View."; +$LANG["text_email_settings_intro"] = "Esta páxina permite identificar cal dos campos de formulario almacenar e-mails e os nomes correspondentes. Despois de definilo los aquí, pode usalos no seu correo-e modelos como destinatarios. Esta sección está totalmente opcional."; +$LANG["text_email_tab_summary"] = "Esta sección permite-lle construír calquera número de e-mails para ser enviado sempre que o formulario que se somete, e outros gatillo."; +$LANG["text_email_template_tab"] = "Esta sección permite determinar o contido aparece no correo. Se desexa enviar o teu correo só como texto ou correo-e, só escribe un valor para esta sección. Se vostede escriba un valor para ambos, o correo será enviado en ambos os formatos."; +$LANG["text_email_template_text_1"] = "Houbo unha presentación feita a través de formulario, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Houbo unha presentación feita a través de formulario, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Grazas polo seu interese!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Mensaxe de erro para amosar o campo non a validación"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Formas exteriores son formas que xa existen na súa páxina web, ou nalgún lugar na web. Seleccione esta opción se ten a súa propia forma que desexa integrar-se con ferramentas de formulario."; +$LANG["text_fields_tab_summary"] = "Esta lista todos os seus campos de formulario. Para controlar o xeito no que aparecen cando submissões de navegación, ver o guía Views . A exclusión dun campo nesta páxina pode borrar-lo de todas as submissões, polo que teña coidado!"; +$LANG["text_file_extension_info"] = "Introduza extensións de ficheiros separados por comas (por exemplo, JPG, GIF, PNG) ou déixeo en branco para permitir que calquera tipo de arquivo."; +$LANG["text_file_field_placeholders_info"] = "Os campos de arquivo ten dous espazos especiais: fileURL e Arquivo. FileURL é a URL completa ao arquivo, así que pode conectarse directamente a el no seu correo; Arquivo é só o nome do ficheiro."; +$LANG["text_filters_page"] = "Só as peticións que cumpran as regras que definen a continuación aparecerá nesta vista."; +$LANG["text_filters_tips"] = "Para obter consellos sobre como usar filtros de presentación, consulte a documentación do usuario."; +$LANG["text_forgot_password"] = "Non hai ningún problema. Simplemente introduza o seu nome de usuario abaixo e súa información de login serán enviados ao enderezo de correo electrónico en arquivo. Se esqueceu o seu nome de usuario, o correo electrónico do administrador do sitio {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Este formulario contén un ou máis campos do arquivo de subida:"; +$LANG["text_form_placeholder_info"] = "Os espazos reservados a seguir pode ser usado en calquera modelo de correo-e e espazo reservado campo de linguaxe, independentemente de calquera Ver o modelo de correo-e está asignada. Os espazos reservados cuestión son a cuestión formulario específico, os espazos reservados RESPOSTA están as respostas a cada pregunta."; +$LANG["text_form_submission_date_placeholder"] = "A data na que a presentación foi feita."; +$LANG["text_form_tools_form_url"] = "A URL completo do formulario. Isto ten un valor para as formas externas."; +$LANG["text_form_tools_login_url"] = "A URL de sesión para o formulario de ferramentas."; +$LANG["text_form_view_permission_info_admin"] = "Nota: este formulario ten actualmente o tipo de acceso de administrador, para que ningunha das contas do cliente será capaz de ver este View."; +$LANG["text_form_view_permission_info_private"] = "Nota: este formulario actualmente ten o tipo de acceso privado para as opcións públicos e privados aquí será limitado a ese subconjunto de clientes."; +$LANG["text_ft_installed"] = "Parabéns, Formulario de ferramentas foi instalado con éxito!"; +$LANG["text_global_placeholder_info"] = "Estes espazos poden ser utilizados en calquera modelo e calquera outra condición."; +$LANG["text_group_name_explanation"] = "Para campos engadidos a través do Add proceso formulario, este valor é pre-chea para o texto de presentación de calquera campo utilízase o valor. Pode querer cambiar a mellor caracteriza o contido."; +$LANG["text_install_create_config_file"] = "Forma tendas ferramentas e configuración do servidor de base de datos a un ficheiro chamado config.php, atopou no seu ficheiro / global / cartafol. Prema no botón "Crear" Arquivo para xerar automaticamente o ficheiro no seu servidor."; +$LANG["text_install_create_database_tables"] = "Agora imos crear o Formulario de táboas de banco de ferramentas. Esta etapa esixe que o propio banco de datos que xa foran creados. Se non está seguro de como facelo, contacta teu proveedor de hospedaxe."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" xeralmente significa que o nome da máquina que lle forneceu está incorrecta. Quizais intente definir esta opción para "localhost" - esta é unha forma común de referirse ao "lugar da base de datos en un servidor web."; +$LANG["text_install_db_tables_error_tip_2"] = ""Non se puido conectar co servidor de MySQL local a través de socket" significa que o campo do banco nome é novo incorrectos."; +$LANG["text_install_db_tables_error_tip_3"] = ""Ingreso para o usuario:" significa que hai un problema co seu nome de usuario / contrasinal."; +$LANG["text_install_db_tables_error_tip_4"] = ""Ingreso para o usuario: ... a base de datos ..." significa que, aínda que o seu nome de usuario eo contrasinal dada está correcta, non foi quen de se conectar a esta base de datos específica con esa conta. Isto pode significar que o nome é o seu banco de datos incorrectos, ou que esta conta de usuario non está asociado a esta base de datos."; +$LANG["text_install_email_content_text"] = "Hai moitos recursos no noso sitio web para axudarche a comezar, incluída a nosa documentación en liña (https://docs.formtools.org) e tutoriais (https://docs.formtools.org/tutorials). Se pensas que estás atrapado ou tes unha pregunta, fai unha pregunta sobre github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Sentímolo, ferramentas de formulario non será capaz de executar no seu servidor. Por favor, prema aquí para a requisitos mínimos."; +$LANG["text_install_system_check"] = "Esta páxina é executado algunhas probas no seu sistema para garantir que é capaz de executar ferramentas de formulario."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Formas internas só existen dentro Tools Form - non especificados no seu sitio web. Ferramentas só a Solicitude de contas de usuario pode acceder ao formulario. Seleccione esta opción se non ten un formulario existente."; +$LANG["text_internal_form_intro"] = "Use o seguinte formulario para crear unha nova forma interna. Todos os axustes, incluíndo o número e contido dos campos do formulario pode ser ser modificados e configurados máis tarde."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Para acceder e utilizar ferramentas de formulario, necesitas ter o Javascript activado no seu navegador. Active-o agora, e prema en actualizar do seu navegador."; +$LANG["text_last_modified_date_explanation_c"] = "A última vez que esa presentación foi modificado. Para novas submissões, este é o mesmo que:"; +$LANG["text_limit_email_content_desc"] = "Esta opción só funciona para HTML e contido de texto xerado con loops Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(só listas de Visitas con un ou máis filtros definidos)"; +$LANG["text_log_in_to_ft"] = "Entrar no Formulario de ferramentas"; +$LANG["text_login"] = "Por favor login embaixo para acceder ó \$) (program_name Panel de Administración. Se ten esquecido o teu contrasinal, preme aquí."; +$LANG["text_login_info"] = "Segundo proceda, está aquí a información de login."; +$LANG["text_name_of_form"] = "O nome do formulario."; +$LANG["text_no_clients"] = "De momento non hai clientes na base de datos. Para engadir unha nova conta de cliente, preme no botón Engadir Client embaixo."; +$LANG["text_no_clients_found"] = "Ningún cliente se atopou. Probe a ampliar os seus criterios de búsqueda."; +$LANG["text_no_fields_in_view"] = "Ver esta non ten ningunha campos nel. Prema na ligazón seguinte."; +$LANG["text_no_forms"] = "De momento non existen formularios na base de datos. Para engadir un novo formulario, faga clic no botón Engadir seguinte formulario."; +$LANG["text_no_forms_found"] = "Non se atoparon formas."; +$LANG["text_no_forms_found_search"] = "Non se atoparon formas. Probe ampliar os seus criterios de busca."; +$LANG["text_no_modules_found"] = "N º módulos foron atopados. Probe a ampliar os seus criterios de búsqueda."; +$LANG["text_no_recipients_added"] = "No destinatarios foron engadidos."; +$LANG["text_no_search_results"] = "Non hai resultados con este criterio de busca / View."; +$LANG["text_no_submissions_found"] = "Sentímolo, non se atoparon propostas."; +$LANG["text_no_themes"] = "Non ten ningún tema definido. Preme o botón de embaixo para actualizar a súa lista de tema ou comprobar a documentación de usuario Form Tools para obter información sobre a adición de temas."; +$LANG["text_non_deletable_fields"] = "Este campo é utilizado polo guión de núcleo e non poden ser editados ou eliminados sen causar incompatibilidades. Se desexa realizar cambios no tipo de campo, faga unha copia do mesmo e editar a copia."; +$LANG["text_option_list_group_explanation"] = "Se este é seleccionado, permite agrupar as súas opcións. Como os grupos aparecen depende do tipo de campo empregando esta lista de opcións."; +$LANG["text_option_list_page"] = "Botóns de radio, caixas, dropdowns e multi-seleccionar os campos dropdown todas proporcionar ao usuario con varias opcións a partir do cal pode seleccionar un ou máis elementos. En Ferramentas Formulario, estes son coñecidos como Listas de Radio. Xeralmente, estes son creados automaticamente polo Form Add External proceso, pero pode engadir manualmente ou editar as súas listas de opción abaixo o seu contido cambia de forma, ou constrúe campos que se usan só internamente."; +$LANG["text_option_list_used_by_fields"] = "Esta lista de opcións é utilizada por varios campos do formulario. Se actualizar a información a continuación, será alterado para todos os campos (ver o formulario de Campos guía para visitar o listado de campos). Se desexa actualizar os valores para un ou un subconxunto dos campos que están actualmente asignados, prema aquí para facer unha lista de opcións cos mesmos valores coma este. Despois, pode asignar os campos do formulario que quere para o novo grupo."; +$LANG["text_public_form_omit_list_page"] = "Formas públicas darlle o beneficio de deixar todas as contas de cliente acceder a eles sen ter que asignar manualmente cada cliente para eles. Esta páxina permite identificar aqueles clientes que non poden acceder a este formulario, aínda que o formulario está marcada como pública."; +$LANG["text_public_view_omit_list_page"] = "Vistas públicas darlle o beneficio de deixar todas as contas de cliente acceder a eles sen ter que asignar manualmente cada cliente para eles. Esta páxina permite identificar aqueles clientes que non poden acceder a esta visión particular."; +$LANG["text_reference_tab_info"] = "Esta lista todos os espazos reservados dispoñible para a súa forma. Espazos reservados son secuencias que se poden usar os modelos de correo-e, e os campos marcados cun icona de marcador especial . Cando entrou nun campo, son dinámicamente convertidos ao valor axeitado cando o campo e vista ou o correo electrónico é enviado."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Revise a documentación do usuario"; +$LANG["text_send_email_from_edit_submission_page"] = "Incluir posibilidade de enviar este correo-e da páxina Edit Submission"; +$LANG["text_smart_fill_option_list_problem"] = "Non fomos capaces de Recheo intelixente opcións do seu campo. Con todo, como alternativa, pode probar enviar unha copia da súa páxina do formulario no campo abaixo. Nota: non cargar as páxinas PHP prima (ou código server-side outros) - só cargar a versión HTML. Para conseguir isto, ver e gardar a páxina do seu navegador."; +$LANG["text_submission_ip_address"] = "O enderezo IP do usuario que fixo a presentación."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Use o seguinte formulario para ver ou enviar un correo electrónico xerado a partir deste correo-e modelo. O correo-e é enviado para o correo-e abaixo indicado, o principal, cc e BCC destinatarios enderezo de correo-e son ignorados durante a proba."; +$LANG["text_test_email_templates_no_submissions"] = "Co fin de probar o seu correo-e modelos, primeiro ten que poñer polo menos a través de un formulario de inscrición."; +$LANG["text_theme_page_intro"] = "Esta páxina lista os seus temas. Prema na imaxe para ver un exemplo máis de estilos do tema. O "habilitado" opción determina se ou non este tema poden ser escollidos polos clientes. Para percorrer todos os temas dispoñibles, visite o sitio web Forma ferramentas."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial Engadido o formulario en primeiro lugar!"; +$LANG["text_unique_submission_id"] = "A presentación única identificación."; +$LANG["text_unused_option_list"] = "A lista mencionada opción non está a ser usado por todos os campos do formulario."; +$LANG["text_upgraded"] = "A súa instalación foi actualizado para a {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Esta lista de opcións é usado polos seguintes campos."; +$LANG["text_view_fields_info"] = "Esta guía controla cales campos aparecen na edición dunha submisión neste View, a súa orde e se son editábeis ou non."; +$LANG["text_view_tab_summary"] = "Esta guía permite que cree diferentes xeitos para agrupar e organizar os seus datos. Visualizacións permiten crear subconxuntos personalizado dos seus datos para dividídelo en anacos máis pequenos, e para limitar o que os clientes poden ver ou editar."; +$LANG["validation_account_disabled"] = "Sentímolo, a súa conta foi desactivada."; +$LANG["validation_account_not_recognized"] = "Sentímolo, ese nome non é recoñecido."; +$LANG["validation_account_not_recognized_info"] = "Sentímolo, ese nome non se atopou. Por favor, ténteo de novo, ou contacte co administrador do sitio, no enderezo seguinte."; +$LANG["validation_account_pending"] = "A túa conta de usuario está esperando aprobación polo equipo de xestión."; +$LANG["validation_check_delete_client"] = "¿Está seguro de querer eliminar esta conta de cliente?"; +$LANG["validation_client_password_missing_number"] = "O contrasinal do cliente debe conter polo menos un número (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "O contrasinal do cliente debe conter polo menos un dos seguintes caracteres: {\$chars})"; +$LANG["validation_client_password_missing_uppercase"] = "O contrasinal do cliente debe conter polo menos unha letra maiúscula."; +$LANG["validation_client_password_too_short"] = "O contrasinal do cliente debe ser polo menos {\$number} caracteres."; +$LANG["validation_col_name_is_reserved_word"] = "Sentímolo, o nome da columna na base de datos é un traballo reservado no MySQL Por favor, sona-lo!"; +$LANG["validation_db_name"] = "Os nomes das bases de datos non poden conter períodos ou barras."; +$LANG["validation_db_not_updated_invalid_input"] = "A base de datos non puido ser actualizado. Por favor, verifique se os valores indicados son válidos."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Sentímolo, o administrador estándar e temas cliente debe ser sempre habilitado."; +$LANG["validation_default_phone_num_required"] = "Por favor, enche o número de teléfono completo para o <b> { \$ campo} </ b> campo - só números."; +$LANG["validation_default_rule_alpha"] = "Por favor, só escribir letras e números para o <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Por favor, só escribir letras para o <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Por favor, só escribir os números para o <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_required"] = "Introduza un valor para o <b> { field \$} </ b> campo."; +$LANG["validation_default_rule_valid_email"] = "Introduza un enderezo de correo-e válido para o <b> { field \$} </ b> campo."; +$LANG["validation_delete_form_confirm"] = "Por favor, marca a caixa para confirmar que desexa eliminar este formulario."; +$LANG["validation_delete_non_empty_option_list"] = "Atención! Esta lista de opcións é usado por un ou máis campos do formulario. Borrar-lo fará que eses campos deixan de funcionar correctamente."; +$LANG["validation_display_names_incomplete"] = "Por favor, indique un valor para todos os nomes de exhibición, ou faga clic na opción Smart Fill para inserir-los dinamicamente."; +$LANG["validation_duplicate_form_field_name"] = "Non pode ter varios campos co mesmo nome de campo."; +$LANG["validation_email_not_found_or_invalid"] = "Sentímolo, o correo asociado á súa conta ou non existe ou non é válido."; +$LANG["validation_folder_invalid_permissions"] = "Para realizar esta proba, os permisos deben ser definidas na carpeta de subida para permitir a lectura e escritura de arquivos (777 en Unix)."; +$LANG["validation_folder_not_writable"] = "Esta carpeta non é gravadora."; +$LANG["validation_internal_form_too_many_fields"] = "Sentímolo, só se pode crear formas con 1000 campos ou menos."; +$LANG["validation_invalid_admin_email"] = "Por favor, indique un enderezo de correo-e adminstrator válida."; +$LANG["validation_invalid_admin_username"] = "O seu nome de usuario só pode conter caracteres alfanuméricos (az e 0-9)."; +$LANG["validation_invalid_client_username"] = "O nome do cliente de usuario só pode conter caracteres alfanuméricos (AZ e 0-9)."; +$LANG["validation_invalid_client_username2"] = "Sentímolo, o nome de usuario só pode conter letras, números e caracter de subliñado. Por favor, introduza un nome novo."; +$LANG["validation_invalid_column_name"] = "Nomes das columnas só poden ser alfanuméricos (AZ, 0-9). Por favor, comprobe os nomes das columnas."; +$LANG["validation_invalid_custom_from_email"] = "Por favor, indique un costume válido 'From'-mail."; +$LANG["validation_invalid_custom_reply_to_email"] = "Por favor, indique un costume válido 'Respostar a' e-mail."; +$LANG["validation_invalid_default_sessions_timeout"] = "Por favor, introduza un valor válido (número un) para o tempo límite de sesións estándar."; +$LANG["validation_invalid_email"] = "Introduza un enderezo de correo-e válido."; +$LANG["validation_invalid_email_id"] = "Sentímolo, iso é un e-mail válido ID."; +$LANG["validation_invalid_folder"] = "Sentímolo, pero este non parece ser unha carpeta válida."; +$LANG["validation_invalid_form_field_names"] = "Os campos do formulario só poderá ser alfanuméricos e subliñados (AZ, 0-9, _), sen espazos."; +$LANG["validation_invalid_num_clients_per_page"] = "Por favor, só escribir números no campo Clientes Nun Per Page."; +$LANG["validation_invalid_num_emails_per_page"] = "Por favor, non entra díxitos para os correos por páxina."; +$LANG["validation_invalid_num_form_fields"] = "Por favor, só escribir os números no campo Número de Campos."; +$LANG["validation_invalid_num_forms_per_page"] = "Por favor, só escribir números no campo Formas Nun Per Page."; +$LANG["validation_invalid_num_menus_per_page"] = "Por favor, non entra díxitos para os menús por páxina."; +$LANG["validation_invalid_num_modules_per_page"] = "Por favor, só escribir números no campo Módulos Nun Per Page."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Por favor, só escribir os números nas listas Nun campo Opción Per Page."; +$LANG["validation_invalid_num_submissions_per_page"] = "Por favor, introduza un número válido de submissões por páxina."; +$LANG["validation_invalid_sessions_timeout"] = "Por favor, indique un tempo límite de sesión válido (só números enteiros!)."; +$LANG["validation_invalid_tab_assign_values"] = "Por favor, só escribir números no campo 'de' e 'para' campos."; +$LANG["validation_invalid_table_prefix"] = "Por favor, escriba un prefixo da base de datos consiste en letra eo carácter subliñado só."; +$LANG["validation_invalid_upload_folder"] = "Instalación do seu servidor de PHP ten unha configuración válida para o valor upload_tmp_dir. "{\$upload_folder}" non é un cartafol válida."; +$LANG["validation_invalid_url"] = "Por favor, introduza un URL válido."; +$LANG["validation_invalid_username"] = "O seu nome de usuario só pode conter caracteres alfanuméricos (AZ e 0-9)."; +$LANG["validation_is_form_active"] = "Por favor, indicar se o formulario está activado ou non."; +$LANG["validation_menu_name_taken"] = "Sentímolo, este nome de menú xa está tomada. Por favor, escolla un novo nome."; +$LANG["validation_modules_search_no_status"] = "Escolla as caixas activar ou desactivar."; +$LANG["validation_no_access_type"] = "Por favor, indique o tipo de acceso."; +$LANG["validation_no_account_logout_url"] = "Por favor, escriba a URL de logout."; +$LANG["validation_no_account_password_confirmed"] = "Introduce de novo a unha nova contrasinal."; +$LANG["validation_no_account_password_confirmed2"] = "Introduce de novo a novo contrasinal."; +$LANG["validation_no_admin_email"] = "Insira o enderezo de correo-e do administrador."; +$LANG["validation_no_admin_theme"] = "Por favor, seleccione o tema a conta de administrador."; +$LANG["validation_no_admin_theme_swatch"] = "Escolla unha mostra para o tema administrador."; +$LANG["validation_no_client_email"] = "Insira o enderezo de correo-e do cliente."; +$LANG["validation_no_client_first_name"] = "Por favor, escriba o nome do cliente."; +$LANG["validation_no_client_last_name"] = "Por favor, escriba o apelido do cliente."; +$LANG["validation_no_client_login_page"] = "Por favor, indique cal páxina o cliente debe ser redirixido para cando eles log in"; +$LANG["validation_no_client_password"] = "Por favor, introduza o contrasinal do cliente."; +$LANG["validation_no_client_theme_swatch"] = "Escolla unha mostra por defecto para as contas de cliente."; +$LANG["validation_no_client_username"] = "Por favor, indique o nome do cliente."; +$LANG["validation_no_column_name"] = "Por favor indique os nomes de columna, ou prema no botón Enchido intelixente para encher automáticamente eles."; +$LANG["validation_no_column_selected"] = "Seleccione polo menos, un campo para aparecer como unha columna na páxina de información de submisión."; +$LANG["validation_no_custom_from_email"] = "Por favor, indique o 'De' personalizado enderezo de correo electrónico."; +$LANG["validation_no_custom_recipient_email"] = "Por favor, indique o enderezo de correo personalizado destinatario."; +$LANG["validation_no_custom_reply_to_email"] = "Por favor, indique o costume 'Respostar a' e-mail."; +$LANG["validation_no_date_format"] = "Por favor, indique un formato de data."; +$LANG["validation_no_db_column_single"] = "Introduza o nome da columna da base de datos."; +$LANG["validation_no_db_hostname"] = "Por favor, informa ao nome da base de datos."; +$LANG["validation_no_db_name"] = "Por favor, escriba o nome da base de datos."; +$LANG["validation_no_db_username"] = "Por favor, indique o nome de conta de base de datos."; +$LANG["validation_no_default_client_theme"] = "Por favor, seleccione o tema por defecto para todas as novas contas de clientes."; +$LANG["validation_no_default_language"] = "Por favor, seleccione o idioma por defecto para a instalación dun formulario ferramentas."; +$LANG["validation_no_default_sessions_timeout"] = "Por favor, indique o tempo límite de sesión estándar para contas de usuario."; +$LANG["validation_no_display_text"] = "Introduza o texto de visualización para cada campo."; +$LANG["validation_no_display_text_single"] = "Introduza o valor de texto de visualización."; +$LANG["validation_no_edit_submission_page_label"] = "Por favor, escriba o rótulo Editar páxina de envío."; +$LANG["validation_no_email"] = "Por favor, escriba o seu enderezo de correo electrónico."; +$LANG["validation_no_email_config_field"] = "Por favor, especifica cal campo de formulario é o campo e-mail."; +$LANG["validation_no_email_content"] = "Por favor, indique o contido de correo-e, polo menos, un dos formatos (HTML ou texto)."; +$LANG["validation_no_email_from_field"] = "Por favor, o e-mail 'de' campo."; +$LANG["validation_no_email_template_name"] = "Por favor, indique o correo-e nome do modelo."; +$LANG["validation_no_email_template_view_id"] = "Por favor, seleccione o Vista para que este correo modelo debe ser mapeado."; +$LANG["validation_no_email_template_view_mapping_value"] = "Por favor, indicar cando o correo-e debe ser enviada."; +$LANG["validation_no_enabled_themes"] = "Asegúrese de que, polo menos, un tema está activado."; +$LANG["validation_no_first_name"] = "Por favor introduza o seu nome."; +$LANG["validation_no_form_field_name"] = "Por favor, indique os nomes de campo de formulario."; +$LANG["validation_no_form_field_single"] = "Introduza o valor do campo de formulario."; +$LANG["validation_no_form_id"] = "O formulario de identificación non foi especificado. Por favor, saia e ténteo de novo."; +$LANG["validation_no_form_name"] = "Por favor, escriba o nome do formulario."; +$LANG["validation_no_form_url"] = "Por favor, escriba a URL do formulario."; +$LANG["validation_no_last_name"] = "Por favor, introduza o seu apelido."; +$LANG["validation_no_login_page"] = "Por favor, indique que a páxina que desexa ser enviado á vez que log in"; +$LANG["validation_no_logout_url"] = "Por favor, escriba a URL de logout."; +$LANG["validation_no_main_email_recipient"] = "Por favor, introduza polo menos un destinatario de correo principal (ou sexa, non CC ou BCC)."; +$LANG["validation_no_menu"] = "Por favor, seleccione un menú para esta conta de usuario."; +$LANG["validation_no_menu_id"] = "Por favor, seleccione un menú."; +$LANG["validation_no_num_clients_per_page"] = "Por favor, indique o número de contas de clientes por páxina."; +$LANG["validation_no_num_emails_per_page"] = "Por favor, indique o número de e-mails para listar por páxina."; +$LANG["validation_no_num_form_fields"] = "Por favor introduza o número de campos para o formulario."; +$LANG["validation_no_num_forms_per_page"] = "Por favor, indique o número de formularios por páxina."; +$LANG["validation_no_num_menus_per_page"] = "Por favor, indique o número de menús de lista por páxina."; +$LANG["validation_no_num_modules_per_page"] = "Por favor, indique o número de módulos por páxina."; +$LANG["validation_no_num_option_lists_per_page"] = "Introduza o número de listas de opción por páxina."; +$LANG["validation_no_num_submissions_per_page"] = "Por favor, indique o número de submissões para mostrar por páxina."; +$LANG["validation_no_option_list_name"] = "Introduza o nome da lista de opcións."; +$LANG["validation_no_page_titles"] = "Por favor, insira os títulos de páxina por defecto para as contas de usuario."; +$LANG["validation_no_password"] = "Por favor introduza o seu contrasinal."; +$LANG["validation_no_program_name"] = "Por favor, escriba o nome do programa."; +$LANG["validation_no_second_password"] = "Por favor re-introduza o seu contrasinal."; +$LANG["validation_no_sessions_timeout"] = "Por favor, indique o tempo límite da sesión."; +$LANG["validation_no_smart_fill_values"] = "Por favor, escriba o nome de campo de formulario e dirección do formulario."; +$LANG["validation_no_table_prefix"] = "Por favor, escriba un prefixo da base de datos."; +$LANG["validation_no_tabs_defined"] = "No guías definidas"; +$LANG["validation_no_test_email_recipient"] = "Por favor, indique o enderezo de correo-e onde debemos enviar o correo-e de proba."; +$LANG["validation_no_test_email_submission_id"] = "Por favor, indique o número de identificación de presentación."; +$LANG["validation_no_theme"] = "Por favor, seleccione un tema."; +$LANG["validation_no_theme_swatch"] = "Escolla unha mostra para o tema seleccionado."; +$LANG["validation_no_timezone_offset"] = "Por favor, indique o desprazamento de fuso horario."; +$LANG["validation_no_titles"] = "Por favor, insira os títulos da páxina."; +$LANG["validation_no_two_column_names"] = "Sentímolo, non pode entrar o nome da columna mesmo banco de datos dúas veces."; +$LANG["validation_no_ui_language"] = "Por favor, escolle unha lingua para a interface."; +$LANG["validation_no_url"] = "Introduza unha URL."; +$LANG["validation_no_username"] = "Por favor introduza o seu nome de usuario."; +$LANG["validation_no_username_or_js"] = "Ten que escribir o seu nome de usuario. Por favor, habilitar Javascript no seu navegador."; +$LANG["validation_no_view_fields"] = "A súa opinión non conteñen todos os campos! Ten que escoller polo menos, un campo para que haxa algo para mostrar-se na súa opinión."; +$LANG["validation_no_view_fields_selected"] = "Por favor, seleccione un ou máis campos para engadir á View."; +$LANG["validation_no_view_name"] = "Por favor, indique o nome da súa exhibición."; +$LANG["validation_num_rows_to_add"] = "Por favor, indique o número de liñas a engadir."; +$LANG["validation_option_list_name_taken"] = "Sentímolo, este nome da lista de opción xa está tomada. Por favor, selecciona outro nome."; +$LANG["validation_password_in_password_history"] = "Por razóns de seguridade, non pode escribir o mesmo contrasinal que calquera dos pasado {\$history_size} contrasinais. Introduce un contrasinal diferente."; +$LANG["validation_passwords_different"] = "Por favor, asegúrese as contrasinais son os mesmos."; +$LANG["validation_please_enter_search_date_range"] = "Por favor, seleccione o período de investigación."; +$LANG["validation_please_enter_search_keyword"] = "Por favor, escriba a palabra de procura."; +$LANG["validation_select_field_type"] = "Por favor, seleccione un tipo de campo."; +$LANG["validation_select_submissions_to_copy"] = "Selecciona os envíos que queres copiar."; +$LANG["validation_select_submissions_to_delete"] = "Por favor, seleccione os argumentos que desexa borrar."; +$LANG["validation_smart_fill_cannot_fill"] = "Sentímolo, non podemos encher este campo."; +$LANG["validation_smart_fill_invalid_field_type"] = "Non se puido atopar un campo, pero non é un dropdown, caixa ou grupo de radio."; +$LANG["validation_smart_fill_no_field_found"] = "Sentímolo, non podemos atopar un campo de formulario co nome da páxina especificado."; +$LANG["validation_smart_fill_no_page"] = "Por favor, localizar a páxina que contén o campo que quere Preenchimento intelixente."; +$LANG["validation_smart_fill_upload_all_pages"] = "Subir todas as páxinas do formulario."; +$LANG["validation_upload_folder_not_writable"] = "Esta carpeta subida temporal indicado pola súa instalación do PHP non está gravadora. Ata que isto sexa corrixido, os arquivos non poden ser enviados a través de formulario de ferramentas (ou calquera outro programa PHP). Contacta teu proveedor de hospedaxe."; +$LANG["validation_upload_html_files_only"] = "Por favor, só a subida de arquivos HTML."; +$LANG["validation_username_taken"] = "Sentímolo, ese nome xa está tomada. Por favor, indique outro nome."; +$LANG["validation_wrong_password"] = "Sentímolo, o teu contrasinal non corresponde."; +$LANG["word_about"] = "Sobre"; +$LANG["word_access"] = "Acceso"; +$LANG["word_account"] = "Conta"; +$LANG["word_account_sp"] = "Conta (s)"; +$LANG["word_accounts"] = "Contas"; +$LANG["word_action"] = "Acción"; +$LANG["word_active"] = "Active"; +$LANG["word_add"] = "Engadir"; +$LANG["word_add_rightarrow"] = "Engadir »"; +$LANG["word_add_uc_rightarrow"] = "Engadir »"; +$LANG["word_administration"] = "Administración"; +$LANG["word_administrator"] = "Administrador"; +$LANG["word_after"] = "Despois"; +$LANG["word_aquamarine"] = "Auga-mariña"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Voltar"; +$LANG["word_bcc_c"] = "BCC:"; +$LANG["word_before"] = "Antes"; +$LANG["word_benefits"] = "Beneficios"; +$LANG["word_blue"] = "Azul"; +$LANG["word_cancel"] = "Cancelar"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkbox"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Cliente"; +$LANG["word_client_c"] = "Cliente:"; +$LANG["word_clients"] = "Clientes"; +$LANG["word_close"] = "Pechar"; +$LANG["word_code"] = "Código"; +$LANG["word_column"] = "Columna"; +$LANG["word_columns"] = "Columnas"; +$LANG["word_columns_sp"] = "Columna (s)"; +$LANG["word_complete"] = "Complete"; +$LANG["word_configuration"] = "Configuración"; +$LANG["word_content"] = "Advertencias"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continuar »"; +$LANG["word_copy"] = "Copiar"; +$LANG["word_custom"] = "Práctica"; +$LANG["word_data"] = "Datos"; +$LANG["word_date"] = "Data"; +$LANG["word_debugging_c"] = "Depuración:"; +$LANG["word_delete"] = "Borrar"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "Persoas con mobilidade condicionada"; +$LANG["word_documentation"] = "Documentación"; +$LANG["word_done"] = "Feito"; +$LANG["word_drawbacks"] = "Inconvenientes"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Editar"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Correos"; +$LANG["word_enabled"] = "Habilitado"; +$LANG["word_equals"] = "Equals"; +$LANG["word_error"] = "Erro"; +$LANG["word_error_c"] = "Erro:"; +$LANG["word_examples_c"] = "Exemplos:"; +$LANG["word_external"] = "Externo"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Campo"; +$LANG["word_field_sp"] = "Campo (s)"; +$LANG["word_fields"] = "Campos"; +$LANG["word_fields_sp"] = "Campo (s)"; +$LANG["word_file"] = "Arquivo"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Arquivos"; +$LANG["word_filters"] = "Filtros"; +$LANG["word_filters_sp"] = "Filtro (s)"; +$LANG["word_for"] = "a"; +$LANG["word_form"] = "Forma"; +$LANG["word_form_c"] = "Forma:"; +$LANG["word_formatting"] = "Formato"; +$LANG["word_forms"] = "Formularios"; +$LANG["word_found"] = "Atopado"; +$LANG["word_from"] = "De"; +$LANG["word_from_c"] = "De:"; +$LANG["word_general"] = "Xeral"; +$LANG["word_green"] = "Verde"; +$LANG["word_grey"] = "Gris"; +$LANG["word_height"] = "Altura"; +$LANG["word_help"] = "Axuda"; +$LANG["word_hidden"] = "Escondido"; +$LANG["word_highlight"] = "Destacar"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Hora"; +$LANG["word_hours"] = "Horas"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Imaxe"; +$LANG["word_incomplete"] = "Incompleto"; +$LANG["word_install"] = "Instalar"; +$LANG["word_installation"] = "Instalación"; +$LANG["word_internal"] = "Interior"; +$LANG["word_language"] = "Linguaxe"; +$LANG["word_large"] = "Grande"; +$LANG["word_like"] = "Como"; +$LANG["word_login"] = "Iniciar sesión"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Saír"; +$LANG["word_main"] = "Principal"; +$LANG["word_medium"] = "Medio"; +$LANG["word_menu"] = "Menú"; +$LANG["word_menus"] = "Menús"; +$LANG["word_minutes"] = "minutos"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Módulo"; +$LANG["word_modules"] = "Módulos"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Nome"; +$LANG["word_name_c"] = "Nome:"; +$LANG["word_never"] = "Nunca"; +$LANG["word_next_rightarrow"] = "Seguinte »"; +$LANG["word_next_step_rightarrow"] = "Seguinte paso »"; +$LANG["word_no"] = "Non"; +$LANG["word_none"] = "Ningún"; +$LANG["word_notes"] = "Notas"; +$LANG["word_notification"] = "Notificación"; +$LANG["word_number"] = "Número"; +$LANG["word_off"] = "Desactivado"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Ok"; +$LANG["word_on"] = "Ligado"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operador"; +$LANG["word_options"] = "Opcións"; +$LANG["word_orange"] = "Laranxa"; +$LANG["word_order"] = "Solicitude"; +$LANG["word_other"] = "Outro"; +$LANG["word_other_c"] = "Outros:"; +$LANG["word_page"] = "Portada"; +$LANG["word_page_c"] = "Páxina:"; +$LANG["word_pass"] = "Paso"; +$LANG["word_password"] = "Contrasinal"; +$LANG["word_password_c"] = "Contrasinal:"; +$LANG["word_pending"] = "Pendente"; +$LANG["word_permissions"] = "Permisos"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Anterior"; +$LANG["word_private"] = "Privado"; +$LANG["word_public"] = "Público"; +$LANG["word_purple"] = "Roxo"; +$LANG["word_recipient"] = "Destinatario"; +$LANG["word_recipient_sp"] = "Destinatario (s)"; +$LANG["word_red"] = "Vermello"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Eliminar"; +$LANG["word_remove_uc_leftarrow"] = "«Eliminar"; +$LANG["word_reply_to"] = "Responder a"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Esixido"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Resoltas"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "liña"; +$LANG["word_search"] = "Procura"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Seleccione"; +$LANG["word_setting"] = "Axuste"; +$LANG["word_settings"] = "Definicións"; +$LANG["word_show"] = "Amosar"; +$LANG["word_size"] = "Tamaño"; +$LANG["word_skipped"] = "Ignorado"; +$LANG["word_small"] = "Pequeno"; +$LANG["word_solution"] = "Resolución"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Comezar"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Asunto"; +$LANG["word_subject_c"] = "Asunto"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Presentación"; +$LANG["word_submissions"] = "Submissões"; +$LANG["word_system"] = "Sistema"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Guía (s)"; +$LANG["word_test"] = "Proba"; +$LANG["word_text"] = "Texto"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temas"; +$LANG["word_time"] = "Tempo"; +$LANG["word_tiny"] = "Pequeno"; +$LANG["word_tips"] = "Consellos"; +$LANG["word_today"] = "Hoxe"; +$LANG["word_truncate_q"] = "Truncar?"; +$LANG["word_uninstall"] = "Desinstalar"; +$LANG["word_unknown"] = "Descoñecido"; +$LANG["word_update"] = "Actualizar"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Usuario"; +$LANG["word_username"] = "Nome de usuario"; +$LANG["word_username_c"] = "Nome de usuario:"; +$LANG["word_validation"] = "Validación"; +$LANG["word_value"] = "Valor"; +$LANG["word_value_sp"] = "Valor (es)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Comprobar"; +$LANG["word_version"] = "Versión"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Visualizar"; +$LANG["word_views"] = "Vistas"; +$LANG["word_warning"] = "Atención!"; +$LANG["word_warning_c"] = "Atención:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Benvido!"; +$LANG["word_width_c"] = "width:"; +$LANG["word_words"] = "Palabras"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Amarelo"; +$LANG["word_yes"] = "Si"; \ No newline at end of file diff --git a/global/lang/hi.php b/global/lang/hi.php new file mode 100644 index 00000000..9c662902 --- /dev/null +++ b/global/lang/hi.php @@ -0,0 +1,1219 @@ +चेतावनी! आप चयनित {\$num_selected_on_page} इस पृष्ठ पर प्रस्तुतियाँ और {\$num_selected_on_other_pages} अन्य पृष्ठों पर है. कृपया निम्नलिखित में से एक विकल्प चुनें:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "चेतावनी आप किसी भी प्रस्तुतियाँ इस पृष्ठ पर चयनित नहीं किया है लेकिन आप चयनित (है अन्य पन्नों पर {\$num_selected_on_other_pages} कृपया पुष्टि करें कि आप इन प्रस्तुतियाँ को हटाना चाहते हैं.
    "; +$LANG["confirm_delete_view"] = "क्या आप सुनिश्चित हैं कि आप इस सारे हटाना चाहते हैं?"; +$LANG["confirm_refresh_page"] = "क्या आप सुनिश्चित करें कि आप पृष्ठ को ताज़ा करना चाहते हैं? यह तुम्हें बनाया है किसी भी परिवर्तन खो देंगे."; +$LANG["confirm_save_change_before_redirect"] = "एक या अधिक फ़ील्ड्स अद्यतन किया गया है. आप पर पुनः निर्देशित करने से पहले अपने परिवर्तनों को सहेजने के करना चाहते हैं?"; +$LANG["confirm_smart_fill_db_column_fields"] = "क्या आप सुनिश्चित हैं कि आप स्मार्ट भरने के लिए डेटाबेस कॉलम नाम करना चाहते हैं? यह अपने वर्तमान मूल्यों के ऊपर लिख देगा."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "यह विकल्प डेटाबेस स्तंभ प्रदर्शन पाठ क्षेत्रों पर आधारित नामों ऑटो उत्पन्न है, तो डेटाबेस तालिका की सामग्री को पढ़ने के लिए आसान कर रहे हैं."; +$LANG["confirm_smart_fill_display_names"] = "क्या आप सुनिश्चित हैं कि आप स्मार्ट भरने के लिए प्रदर्शन नाम करना चाहते हैं? यह अपने वर्तमान मूल्यों के ऊपर लिख देगा."; +$LANG["confirm_ungroup_option_list"] = "क्या आप यकीन है कि आप इस विकल्प सूची असमूहीकृत करना चाहते हैं? सभी विकल्पों के एक एकल, असमूहीकृत सूची में lumped हो जाएगा."; +$LANG["confirm_uninstall_module"] = "क्या आप सुनिश्चित हैं कि आप इस मॉड्यूल की स्थापना रद्द करना चाहते हैं? सभी मॉड्यूल डेटा खो जाएगा."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "शुक्र"; +$LANG["date_Friday"] = "शुक्रवार"; +$LANG["date_Mon"] = "सोम"; +$LANG["date_Monday"] = "सोमवार"; +$LANG["date_PM"] = "प्रधानमंत्री"; +$LANG["date_Sat"] = "शनि"; +$LANG["date_Saturday"] = "शनिवार"; +$LANG["date_Sun"] = "सूरज"; +$LANG["date_Sunday"] = "रविवार"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "गुरुवार"; +$LANG["date_Tue"] = "मंगल"; +$LANG["date_Tuesday"] = "मंगलवार"; +$LANG["date_Wed"] = "बुध"; +$LANG["date_Wednesday"] = "बुधवार"; +$LANG["date_am"] = "हूँ"; +$LANG["date_month_April"] = "अप्रैल"; +$LANG["date_month_August"] = "अगस्त"; +$LANG["date_month_December"] = "दिसम्बर"; +$LANG["date_month_February"] = "फ़रवरी"; +$LANG["date_month_January"] = "जनवरी"; +$LANG["date_month_July"] = "जुलाई"; +$LANG["date_month_June"] = "जून"; +$LANG["date_month_March"] = "मार्च"; +$LANG["date_month_May"] = "सकना"; +$LANG["date_month_November"] = "नवम्बर"; +$LANG["date_month_October"] = "अक्तूबर"; +$LANG["date_month_September"] = "सितम्बर"; +$LANG["date_month_short_Apr"] = "अप्रैल"; +$LANG["date_month_short_Aug"] = "अगस्त"; +$LANG["date_month_short_Dec"] = "दिसम्बर"; +$LANG["date_month_short_Feb"] = "फ़रवरी"; +$LANG["date_month_short_Jan"] = "जन"; +$LANG["date_month_short_Jul"] = "जुलाई"; +$LANG["date_month_short_Jun"] = "जून"; +$LANG["date_month_short_Mar"] = "मार्च"; +$LANG["date_month_short_May"] = "सकना"; +$LANG["date_month_short_Nov"] = "नवम्बर"; +$LANG["date_month_short_Oct"] = "अक्तूबर"; +$LANG["date_month_short_Sep"] = "सितम्बर"; +$LANG["date_pm"] = "बजे"; +$LANG["notify_account_deleted"] = "उपयोगकर्ता खाता हटा दिया गया है."; +$LANG["notify_account_updated"] = "आपका खाता सफलतापूर्वक अद्यतन किया गया है."; +$LANG["notify_add_display_values"] = "प्रदर्शित मान जोड़ें"; +$LANG["notify_admin_menu_updated"] = "प्रशासन मेनू अद्यतन किया गया है."; +$LANG["notify_admin_theme_overridden"] = "व्यवस्थापक की विषय गया मैन्युअल रूप से अधिरोहित है."; +$LANG["notify_allow_url_fopen_not_set"] = "क्षमा करें, यह परीक्षण अपने वेब सर्वर पर नहीं चला जा सकता है. यह अपने php.ini फ़ाइल में 1 से स्थापित हो allow_url_fopen की आवश्यकता है. इस सेटिंग PHP एक यूआरएल, जो इस परीक्षा के माध्यम से क्रियान्वित की जरूरत है फ़ाइलों तक पहुँचने के लिए अनुमति देते हैं. आप इसे FTP के द्वारा उस फ़ोल्डर में एक फ़ाइल अपलोड करने से मैन्युअल रूप से जांच कर सकता है, तो यह URL पर उपयोग आप की आपूर्ति की कोशिश कर रही है."; +$LANG["notify_change_temp_password"] = "तुम सिर्फ एक अस्थायी पासवर्ड के साथ लॉग इन किया. अब आप अपना पासवर्ड रीसेट करना चाहिए!"; +$LANG["notify_click_to_edit_new_submission"] = "नया सबमिशन संपादित करने के लिए यहां क्लिक करें।"; +$LANG["notify_client_account_menus_updated"] = "ग्राहक खाते (नों) {\$menu_name} मेनू को अद्यतन किया गया है. अब आप मेनू कि पहले खाते (नों के साथ जुड़े थे हटाना) कर सकते हैं."; +$LANG["notify_client_account_not_updated"] = "ग्राहक खाते को अद्यतन नहीं किया जा सका."; +$LANG["notify_client_account_themes_updated"] = "ग्राहक खाते (नों) {\$theme} विषय को अद्यतन किया गया है. अब आप पहले खाते (नों से संबंधित विषय को निष्क्रिय कर सकता है)."; +$LANG["notify_client_account_updated"] = "ग्राहक खाते को सफलतापूर्वक अद्यतन किया गया है."; +$LANG["notify_client_menu_deleted"] = "ग्राहक मेनू हटा दिया गया है."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "मेनू हटा दिया गया है, लेकिन निम्नलिखित ग्राहक खातों अब नहीं रह गया एक मेनू है! आप निम्नलिखित लेखा अद्यतन करने की आवश्यकता है:"; +$LANG["notify_client_menu_updated"] = "ग्राहक मेनू अद्यतन किया गया है."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "क्षमा करें, मेनू तुम बस को नष्ट करने की कोशिश की पहले से ही नीचे सूचीबद्ध ग्राहकों द्वारा किया जा रहा है. आदेश में मेनू आपको पहले दूसरे मेनू के लिए ग्राहकों को प्रदान की आवश्यकता होगी नष्ट करने के लिए. ग्राहक के नाम पर क्लिक करें कि व्यक्तिगत खाते, या संपादित करने के लिए एक अलग से नीचे ड्रॉपडाउन मेनू का उपयोग कर के सभी खातों आवंटित."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "क्षमा करें, आप केवल विकलांग विषयों में से एक पहले से ही निम्न ग्राहक खातों के द्वारा की जा रही थी. के क्रम में विषय आपको सबसे पहले एक और विषय के लिए एक ग्राहक प्रदान की आवश्यकता होगी अक्षम है. ग्राहक के नाम पर क्लिक करें कि व्यक्तिगत खाते, संपादित करने के लिए या एक से नीचे ड्रॉपडाउन प्रयोग विषय पर सभी खातों आवंटित."; +$LANG["notify_edit_email_fields_link"] = "जो प्रपत्र फ़ील्ड ईमेल क्षेत्र हैं, तो आप उन्हें अपने ईमेल टेम्पलेट्स में लक्षित कर सकते हैं निर्दिष्ट करने के लिए यहाँ क्लिक करें ."; +$LANG["notify_edit_field_new_field"] = "यह एक नया क्षेत्र है. आप के लिए पूरी तरह से इस क्षेत्र को संपादित करने में सक्षम होने से पहले मुख्य पृष्ठ अद्यतन की आवश्यकता होगी."; +$LANG["notify_edit_option_list_after_save"] = "तुम एक विकल्प सूची का चयन करें और फिर से पहले इसे संपादित करने में सक्षम किया जा रहा परिवर्तन सहेजें."; +$LANG["notify_email_field_config_deleted"] = "ईमेल विन्यास हटा दिया गया है."; +$LANG["notify_email_fields_not_updated"] = "क्षमा करें, हम ईमेल के खेतों का अद्यतन नहीं कर सका."; +$LANG["notify_email_fields_updated"] = "ईमेल क्षेत्रों अद्यतन किया गया है."; +$LANG["notify_email_not_sent"] = "क्षमा करें, ईमेल भेजा नहीं जा सका. कृपया नीचे दिए गए पते पर साइट एडमिनिस्ट्रेटर से सम्पर्क करें."; +$LANG["notify_email_not_sent_c"] = "क्षमा करें, ईमेल भेजा नहीं जा सका:"; +$LANG["notify_email_sent"] = "ईमेल (एस) को भेजा गया है."; +$LANG["notify_email_template_deleted"] = "ईमेल टेम्पलेट हटा दिया गया है."; +$LANG["notify_email_template_updated"] = "ईमेल टेम्पलेट अद्यतन किया गया है."; +$LANG["notify_enabled_module_list_updated"] = "सक्रिय मॉड्यूल की सूची को अद्यतन किया गया है."; +$LANG["notify_error_saving_fields"] = "क्षेत्रों की बचत करने में त्रुटि थी."; +$LANG["notify_field_changes_saved"] = "अपने क्षेत्र (नों) के लिए परिवर्तनों को सहेजा गया है."; +$LANG["notify_field_options_smart_filled"] = "अपने क्षेत्र विकल्पों स्मार्ट भरा गया है."; +$LANG["notify_field_selected"] = "क्षेत्र का चयन किया गया है. यहाँ क्लिक करें को मुख्य क्षेत्र की सूची पर वापस."; +$LANG["notify_field_updated"] = "इस क्षेत्र को अद्यतन किया गया है."; +$LANG["notify_file_not_uploaded"] = "फ़ाइल अपलोड नहीं किया जा सका."; +$LANG["notify_file_uploaded"] = "फ़ाइल सफलतापूर्वक अपलोड की गई थी."; +$LANG["notify_filters_not_updated"] = "वहाँ एक इस ग्राहक जमा फ़िल्टर अद्यतन करने में त्रुटि हुई."; +$LANG["notify_filters_updated"] = "प्रस्तुत फ़िल्टर इस ग्राहक के लिए अद्यतन किया गया है."; +$LANG["notify_folder_correct_permissions"] = "इस फ़ोल्डर के लिए उचित अनुमति है."; +$LANG["notify_folder_url_match"] = "फ़ोल्डर और सही ढंग से मैच प्रदर्शित यूआरएल."; +$LANG["notify_folder_url_no_access"] = "इस परीक्षण के बाद PHP का उपयोग करने में असमर्थ था नहीं किया जा सकता है कि URL. यह आमतौर पर एक यूआरएल जा रहा है. Htaccess फ़ाइल के साथ सुरक्षित पासवर्ड के कारण होता है."; +$LANG["notify_folder_url_no_match"] = "इस फ़ोल्डर-यूआरएल संयोजन के लिए एक मैच प्रतीत नहीं होता."; +$LANG["notify_folder_url_unknown_error"] = "एक अज्ञात त्रुटि हो गई. आप इसे FTP के द्वारा उस फ़ोल्डर में एक फ़ाइल अपलोड करने से मैन्युअल रूप से जांच कर सकता है, तो यह URL पर उपयोग आप की आपूर्ति की कोशिश कर रही है."; +$LANG["notify_form_access_type_email_info"] = "इस प्रपत्र व्यवस्थापक पहुँच प्रकार है, तो कोई भी ग्राहकों को यह करने के लिए उपयोग किया है और ड्रॉपडाउन नीचे में सूचीबद्ध नहीं हैं."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "क्षमा करें, आईडी मौजूद नहीं है कि के साथ एक फार्म."; +$LANG["notify_form_field_not_added"] = "फार्म क्षेत्र '{\$fieldname}' जोड़ा नहीं जा सका."; +$LANG["notify_form_field_options_updated"] = "फार्म क्षेत्र विकल्प अद्यतन किया गया है."; +$LANG["notify_form_field_removed"] = "फार्म क्षेत्र सफलतापूर्वक हटा दी गई है."; +$LANG["notify_form_fields_removed"] = "प्रपत्र फ़ील्ड्स सफलतापूर्वक हटा दिया गया."; +$LANG["notify_form_not_updated_notify_admin"] = "अपने फार्म का अद्यतन नहीं किया जा सका. कृपया साइट एडमिनिस्ट्रेटर से इस समस्या की रिपोर्ट से संपर्क करें."; +$LANG["notify_form_settings_updated"] = "अपने फार्म सेटिंग्स को सफलतापूर्वक अद्यतन किया गया है."; +$LANG["notify_form_submission_updated"] = "फार्म जमा अद्यतन किया गया है."; +$LANG["notify_form_tabs_updated"] = "टैब अद्यतन किया गया है."; +$LANG["notify_form_updated"] = "फार्म का सफलतापूर्वक अद्यतन किया गया है."; +$LANG["notify_form_views_updated"] = "फार्म दृश्य को अद्यतन किया गया है."; +$LANG["notify_install_invalid_db_info"] = "क्षमा करें, हम आप की आपूर्ति की जानकारी का उपयोग डेटाबेस से कनेक्ट करने में असमर्थ रहे. त्रुटि संदेश डेटाबेस लौटा है: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "आपका फार्म बनाया गया है! आप इन टैब के माध्यम से अपने प्रपत्र कॉन्फ़िगर कर सकते हैं."; +$LANG["notify_invalid_account_information_in_sessions"] = "खाते की जानकारी सत्र में रखे अवैध है. कृपया फिर से नीचे में लॉग इन करें."; +$LANG["notify_invalid_license_key"] = "क्षमा करें, यह एक वैध लाइसेंस कुंजी प्रतीत नहीं होता है. इसे फिर से प्रवेश करने की कोशिश करें."; +$LANG["notify_invalid_permissions"] = "आप अनुमति के लिए इस पृष्ठ का उपयोग नहीं है. तुम बाहर लॉग इन किया गया है."; +$LANG["notify_invalid_search_dates"] = "Datepicker का उपयोग करने के लिए कोई मान्य दिनांक या दिनांक दर्ज करें."; +$LANG["notify_invalid_upload_folder"] = "अपलोड फ़ोल्डर या तो अमान्य है या नहीं है writable."; +$LANG["notify_lang_list_updated"] = "उपलब्ध UI भाषा सूची अद्यतन किया गया है."; +$LANG["notify_login_info_emailed"] = "अपनी प्रवेश जानकारी आपको ईमेल कर दी गई है."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "ओह, इस मॉड्यूल पहले से स्थापित है!"; +$LANG["notify_module_installed"] = "मॉड्यूल स्थापित किया गया है. लिए यहाँ क्लिक करें मॉड्यूल का चयन करें."; +$LANG["notify_module_list_updated"] = "मॉड्यूल सूची को अद्यतन किया गया है."; +$LANG["notify_module_uninstalled"] = "मॉड्यूल की स्थापना रद्द हो गया है."; +$LANG["notify_module_updated"] = "मॉड्यूल {\$module} {\$version} अद्यतन किया गया है. लिए यहाँ क्लिक करें मॉड्यूल का चयन करें ."; +$LANG["notify_multi_field_selected"] = "क्षेत्र का चयन किया गया है. यहाँ क्लिक करें देखने और क्षेत्र के विकल्प संपादित करें."; +$LANG["notify_multi_field_updated"] = "इस क्षेत्र को अद्यतन किया गया है. आप विन्यस्त करने में सक्षम हो जाएगा ऊपर के फार्म स्थापित करने के बाद क्षेत्र के विकल्प."; +$LANG["notify_multiple_fields_found"] = "एकाधिक तत्वों को इस क्षेत्र का नाम ({\$field_name}) के साथ मिल) थे. यह भी हो अगर आपके पृष्ठ और एक रूप से शामिल है या यदि आप गलती से एक के रूप में अपने ही रूपों में से एक के नाम कर सकते हैं. कृपया चुनें नीचे दी गई सूची में से एक तुम चाहते हो."; +$LANG["notify_new_default_view_created"] = "एक नया, डिफ़ॉल्ट देखें अपने सभी प्रपत्र फ़ील्ड्स युक्त बनाया गया है."; +$LANG["notify_new_submission_created"] = "प्रस्तुत बनाया गया है. आप इसे नीचे संपादित कर सकते हैं."; +$LANG["notify_no_account_id_in_sessions"] = "कोई उपयोगकर्ता खाता आईडी सत्र में पाया गया. कृपया फिर से नीचे में लॉग इन करें."; +$LANG["notify_no_api_installed"] = "आप स्थापित एपीआई नहीं है"; +$LANG["notify_no_client_permissions"] = "कोई सेटिंग्स संपादित उपलब्ध हैं."; +$LANG["notify_no_email_template_selected"] = "कृपया ईमेल टेम्पलेट का चयन करें."; +$LANG["notify_no_emails_defined"] = "कोई ईमेल इस फार्म के लिए परिभाषित किया गया है. एक नया एक, बटन के नीचे क्लिक करें जोड़ें."; +$LANG["notify_no_field_settings"] = "इस फ़ील्ड प्रकार किसी भी अतिरिक्त सेटिंग्स को शामिल नहीं करता है."; +$LANG["notify_no_fields_in_tab"] = "यह टैब किसी भी क्षेत्र शामिल नहीं करता है."; +$LANG["notify_no_option_lists"] = "वहाँ कोई विकल्प सूची परिभाषित कर रहे हैं. नीचे के बटन के लिए एक नया एक बनाने के लिए क्लिक करें."; +$LANG["notify_no_test_submission"] = "उपकरण फार्म का सफल परीक्षण जमा अभी तक प्राप्त नहीं हुआ है."; +$LANG["notify_no_user_email_fields_configured"] = "नोट: यदि आप कोई ईमेल पता है कि रूप में शामिल किया गया था के लिए एक ईमेल भेजना चाहते हैं, तो आपको पहले विन्यस्त करने के फार्म का ईमेल क्षेत्रों की जरूरत है."; +$LANG["notify_no_views"] = "आपका फार्म नहीं है किसी भी दृश्य की स्थापना! आप एक कम से कम दृश्य की जरूरत है क्रम में करने के लिए अपने प्रपत्र डेटा का प्रबंधन."; +$LANG["notify_no_views_assigned_to_client_form"] = "ऐसा लगता है कि आपके उपयोगकर्ता खाते के किसी भी रूप दर्शाव को नहीं सौंपा गया है, तो आप कोई डेटा नहीं देख सकेंगे. कृपया और अधिक मदद के लिए व्यवस्थापक से संपर्क करें."; +$LANG["notify_no_views_defined"] = "आप नहीं है किसी भी दृश्य में परिभाषित किया है. तुम जब तक कम से कम एक दृश्य बनाया है करने के लिए इस प्रपत्र प्रस्तुतियाँ देखने में सक्षम नहीं होगा. डिफ़ॉल्ट दृश्य बनाने के बटन के नीचे क्लिक करें."; +$LANG["notify_option_list_deleted"] = "विकल्प सूची हटा दिया गया है."; +$LANG["notify_option_list_updated"] = "विकल्प सूची को अद्यतन किया गया है."; +$LANG["notify_public_form_omit_list_updated"] = "ग्राहक इस फार्म के लिए छोड़ सूची अद्यतन कर दिया गया."; +$LANG["notify_public_view_omit_list_updated"] = "ग्राहक इस दृश्य के लिए छोड़ सूची अद्यतन कर दिया गया."; +$LANG["notify_required_admin_pages"] = "निम्नलिखित पन्ने व्यवस्थापक मेनू में अपेक्षित: {\$remaining_pages} हैं."; +$LANG["notify_sessions_timeout"] = "क्षमा करें, वहाँ थोड़ी देर के लिए किसी भी गतिविधि तो हम आपको लॉग आउट किया था नहीं था. कृपया फिर से नीचे में लॉग इन करें."; +$LANG["notify_setup_options_updated"] = "सेटअप विकल्पों का अद्यतन किया गया है."; +$LANG["notify_smart_fill_field_not_found"] = "हमें इस नाम ({\$field_name}) के साथ एक क्षेत्र फार्म (एस निर्दिष्ट) में) खोजने में असमर्थ थे. या तो आप मैन्युअल रूप से नीचे खेत प्रकार, या क्लिक करें छोड़ें बटन को इस क्षेत्र को संपादित बाद में सेट कर सकते हैं."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "आपकी फ़ाइल (ओं) को सफलतापूर्वक अपलोड किया गया. कोशिश स्मार्ट भरें बटन पर क्लिक करने के लिए फिर से प्रयास करें. यदि यह कदम विफल रहता है, आप इस कदम और configure अपने फार्म के खेतों को छोड़ manally बाद में की आवश्यकता होगी."; +$LANG["notify_smart_fill_submitted"] = "फार्म जमा किया गया है. अपने फार्म का और क्षेत्र के विकल्प की संख्या के आकार पर निर्भर करता है, यह कुछ समय लग सकता है."; +$LANG["notify_smart_fill_upload_fields_fail"] = "माफ करना, एक या फ़ाइलें आपके द्वारा दर्ज की और अधिक अपलोड नहीं किया जा सका. आप इस कदम और कॉन्फ़िगर मैन्युअल रूप से छोड़ खेतों की आवश्यकता होगी."; +$LANG["notify_submission_and_files_deleted"] = "प्रस्तुत करने और किसी भी फ़ाइल (s) इसके साथ जुड़े सफलतापूर्वक नष्ट कर दिया गया."; +$LANG["notify_submission_copied"] = "सबमिशन की प्रतिलिपि बनाई गई है।"; +$LANG["notify_submission_copied_edit"] = "सबमिशन की प्रतिलिपि बनाई गई है। आप इसे नीचे संपादित कर सकते हैं।"; +$LANG["notify_submission_deleted"] = "प्रस्तुत सफलतापूर्वक नष्ट कर दिया गया."; +$LANG["notify_submission_deleted_with_problems"] = "जमा, नष्ट कर दिया लेकिन बाद समस्याओं का सामना करना पड़ा था जब में निम्नलिखित फाइल (ओं) को हटाने का प्रयास किया गया:"; +$LANG["notify_submission_id_not_found"] = "प्रस्तुत आईडी नहीं मिला."; +$LANG["notify_submission_not_updated"] = "प्रस्तुत अद्यतन नहीं किया जा सका."; +$LANG["notify_submissions_and_files_deleted"] = "प्रस्तुतियाँ और कोई फ़ाइल (s) उनके साथ जुड़े सफलतापूर्वक नष्ट कर दिया गया."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} सबमिशन की प्रतिलिपि बनाई गई है।"; +$LANG["notify_submissions_deleted"] = "प्रस्तुतियाँ सफलतापूर्वक नष्ट कर दिया गया."; +$LANG["notify_submissions_deleted_with_problems"] = "पर्चे जमा होना, नष्ट कर दिया लेकिन बाद समस्याओं का सामना करना पड़ा था जब में निम्नलिखित फाइल (ओं) को हटाने की कोशिश कर रहे थे:"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "अपने परीक्षण ईमेल भेजा नहीं जा सका."; +$LANG["notify_theme_cache_folder_not_writable"] = "इस विषय कैश फ़ोल्डर writable नहीं है. आदेश में इस विषय को सक्षम करने के लिए, {\$folder} फ़ोल्डर में है पूरा पढ़ने की जरूरत है-permissions लिखें."; +$LANG["notify_theme_list_updated"] = "विषय सूची को अद्यतन किया गया है."; +$LANG["notify_themes_settings_updated"] = "अपने विषय सेटिंग्स अद्यतन किया गया है."; +$LANG["notify_view_deleted"] = "देखें हटा दिया गया है."; +$LANG["notify_view_group_deleted"] = "देखें समूह हटा दिया गया है."; +$LANG["notify_view_missing_columns"] = "उफ़! क्षमा करें, यह दृश्य पूरी तरह से नहीं किया गया है अभी तक सेट."; +$LANG["notify_view_missing_columns_admin_fix"] = "यहाँ क्लिक करें निर्दिष्ट करने के लिए जो फ़ील्ड इस पृष्ठ पर स्तंभ के रूप में प्रकट करना चाहिए."; +$LANG["notify_view_updated"] = "देखें अद्यतन किया गया है."; +$LANG["notify_your_email_sent"] = "आपका ईमेल सफलतापूर्वक भेज दिया गया है."; +$LANG["phrase_100_per_page"] = "प्रति पृष्ठ 100"; +$LANG["phrase_10_per_page"] = "प्रति पृष्ठ 10"; +$LANG["phrase_15_per_page"] = "15 प्रति पेज"; +$LANG["phrase_1_direct"] = "1. प्रत्यक्ष"; +$LANG["phrase_1char"] = "एक चार"; +$LANG["phrase_20_per_page"] = "20 प्रति पेज"; +$LANG["phrase_25_per_page"] = "प्रति पृष्ठ 25"; +$LANG["phrase_2_code"] = "2. कोड"; +$LANG["phrase_2_columns"] = "2 कॉलम"; +$LANG["phrase_2chars"] = "2 chars"; +$LANG["phrase_3_columns"] = "3 कॉलम"; +$LANG["phrase_4_columns"] = "4 कॉलम"; +$LANG["phrase_50_per_page"] = "प्रति पृष्ठ 50"; +$LANG["phrase_accepting_submissions"] = "(स्वीकार प्रस्तुतियाँ)"; +$LANG["phrase_access_admin_account_c"] = "आप अपने खाते के प्रशासन को यहाँ का उपयोग कर सकते हैं:"; +$LANG["phrase_access_type"] = "प्रवेश प्रकार"; +$LANG["phrase_account_info"] = "खाता जानकारी"; +$LANG["phrase_account_settings"] = "खाता सेटिंग्स"; +$LANG["phrase_action_needed"] = "कार्रवाई की आवश्यकता"; +$LANG["phrase_add_client"] = "ग्राहक जोड़ें"; +$LANG["phrase_add_client_menu"] = "ग्राहक मेनू जोड़ें"; +$LANG["phrase_add_default_settings_rightarrow"] = "डिफ़ॉल्ट सेटिंग्स जोड़ें »"; +$LANG["phrase_add_field"] = "फ़ील्ड जोड़ें"; +$LANG["phrase_add_fields"] = "फ़ील्ड जोड़ें"; +$LANG["phrase_add_fields_rightarrow"] = "फ़ील्ड (ओं) को जोड़ें »"; +$LANG["phrase_add_form"] = "फार्म जोड़ें"; +$LANG["phrase_add_form_external"] = "प्रपत्र जोड़ें - बाहरी"; +$LANG["phrase_add_form_internal"] = "प्रपत्र जोड़ें - आंतरिक"; +$LANG["phrase_add_new_group_rightarrow"] = "नया समूह जोड़ें »"; +$LANG["phrase_add_num_rows"] = "{\$number} पंक्ति (S)"; +$LANG["phrase_add_row"] = "पंक्ति जोड़ें »"; +$LANG["phrase_add_submission_button"] = "प्रस्तुत बटन जोड़ें"; +$LANG["phrase_add_view_rightarrow"] = "दृश्य जोड़ें »"; +$LANG["phrase_adding_multi_page_form"] = "एपीआई के साथ एक बहु पृष्ठ फार्म जोड़ना"; +$LANG["phrase_adding_single_page_form"] = "एक एपीआई के साथ एक पृष्ठ के रूप जोड़ना"; +$LANG["phrase_admin_menu"] = "व्यवस्थापक मेनू"; +$LANG["phrase_admin_only"] = "केवल प्रशासक"; +$LANG["phrase_admin_panel"] = "व्यवस्थापक पैनल"; +$LANG["phrase_administrator_theme"] = "व्यवस्थापक थीम"; +$LANG["phrase_advanced_settings_rightarrow"] = "उन्नत सेटिंग्स »"; +$LANG["phrase_all_X_results_selected"] = "{\$numresults} परिणाम चयनित सभी"; +$LANG["phrase_all_clients"] = "सभी ग्राहकों"; +$LANG["phrase_all_clients_except_c"] = "को छोड़कर सभी ग्राहकों:"; +$LANG["phrase_all_clients_have_access"] = "(सभी ग्राहकों का उपयोग किया है)"; +$LANG["phrase_all_fields"] = "सभी क्षेत्रों"; +$LANG["phrase_all_fields_displayed"] = "सभी क्षेत्रों प्रदर्शित किए जाते हैं"; +$LANG["phrase_all_statuses"] = "सभी स्थितियों"; +$LANG["phrase_all_submissions"] = "सभी प्रस्तुतियाँ"; +$LANG["phrase_allow_fields_edited"] = "फ़ील्ड संपादित करने की अनुमति दें"; +$LANG["phrase_alphanumeric"] = "अल्फ़ान्यूमेरिक (AZ, 0-9)"; +$LANG["phrase_api_version"] = "एपीआई संस्करणः"; +$LANG["phrase_apply_timezone_offset"] = "ऑफसेट समय क्षेत्र लागू करें"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "निर्दिष्ट सभी सूचीबद्ध ग्राहक खातों {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "निर्दिष्ट सभी सूचीबद्ध ग्राहक खातों {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "अंत में"; +$LANG["phrase_at_start"] = "शुरू में"; +$LANG["phrase_author_link"] = "लेखक लिंक"; +$LANG["phrase_auto_disable_account"] = "स्वत: निष्क्रिय करने के बाद खाता # लॉगिन प्रयास विफल"; +$LANG["phrase_auto_size"] = "ऑटो आकार"; +$LANG["phrase_available_clients"] = "उपलब्ध ग्राहक"; +$LANG["phrase_available_fields"] = "उपलब्ध फ़ील्ड"; +$LANG["phrase_available_option_lists"] = "उपलब्ध विकल्प सूचियाँ"; +$LANG["phrase_available_swatches"] = "उपलब्ध नमूने"; +$LANG["phrase_available_swatches_c"] = "उपलब्ध नमूने:"; +$LANG["phrase_available_tabs"] = "उपलब्ध टैब्स"; +$LANG["phrase_available_views"] = "उपलब्ध दर्शाव"; +$LANG["phrase_awaiting_form_submission"] = "फार्म जमा करने की प्रतीक्षा."; +$LANG["phrase_back_to_field_list"] = "क्षेत्र «वापस सूची"; +$LANG["phrase_back_to_search_results"] = "खोज परिणामों पर वापस"; +$LANG["phrase_base_view_on"] = "कोष पर देखें ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "बदलें लॉगिन जानकारी"; +$LANG["phrase_characters_limit_p"] = "वर्ण सीमा."; +$LANG["phrase_check_db_settings_try_again"] = "कृपया डबल अपने डेटाबेस सेटिंग्स क्लिक करें और जारी रखें बटन को फिर से जाँच करें."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "URL की जाँच करें"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "सफाई"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "स्पष्ट छोड़ सूची"; +$LANG["phrase_client_account_settings"] = "ग्राहक खाते की सेटिंग्स"; +$LANG["phrase_client_field"] = "ग्राहक फील्ड"; +$LANG["phrase_client_map_filters"] = "ग्राहक मानचित्र फ़िल्टर »"; +$LANG["phrase_client_may_edit"] = "हमारे ग्राहकों का संपादन कर सकते हैं"; +$LANG["phrase_client_menu"] = "हमारे ग्राहकों का मेन्यू"; +$LANG["phrase_clients_can_access_form"] = "ग्राहकों के फार्म का जो उपयोग कर सकते हैं"; +$LANG["phrase_clients_can_access_view"] = "ग्राहकों को देखें, जो प्रयोग कर सकते हैं"; +$LANG["phrase_clients_cannot_access_form"] = "ग्राहकों के फार्म का उपयोग नहीं कर सकते जो"; +$LANG["phrase_clients_cannot_access_view"] = "ग्राहकों को देखें, जो उपयोग नहीं कर सकते"; +$LANG["phrase_clients_may_edit"] = "ग्राहकों को संपादित कर सकते हैं"; +$LANG["phrase_code_c"] = "त्रुटि कोड:"; +$LANG["phrase_code_markup_field"] = "कोड / मार्कअप फील्ड"; +$LANG["phrase_code_markup_type"] = "कोड / मार्कअप प्रकार"; +$LANG["phrase_codes_c"] = "त्रुटि कोड:"; +$LANG["phrase_column_width"] = "स्तंभ चौड़ाई"; +$LANG["phrase_company_name"] = "कंपनी नाम"; +$LANG["phrase_configure_form_email_fields"] = "कॉन्फ़िगर फार्म ईमेल कोष्ठक"; +$LANG["phrase_confirm_folder_url_match"] = "पुष्टि फ़ोल्डर-यूआरएल मिलान"; +$LANG["phrase_connect_rows"] = "पंक्तियों कनेक्ट"; +$LANG["phrase_copy_email_settings_from"] = "कॉपी ईमेल से सेटिंग्स ..."; +$LANG["phrase_copy_settings_from"] = "कॉपी से सेटिंग्स ..."; +$LANG["phrase_core_fields"] = "कोर फील्ड्स"; +$LANG["phrase_core_version"] = "कोर संस्करणः"; +$LANG["phrase_create_account"] = "खाता बनाएँ"; +$LANG["phrase_create_admin_account"] = "व्यवस्थापक खाता बनाएँ"; +$LANG["phrase_create_config_file"] = "Config फाइल बनाएँ"; +$LANG["phrase_create_database_tables"] = "बनाएँ डेटाबेस तालिकाएँ"; +$LANG["phrase_create_default_view"] = "डिफ़ॉल्ट दृश्य बनाएँ"; +$LANG["phrase_create_file"] = "फ़ाइल बनाएँ"; +$LANG["phrase_create_group"] = "समूह बनाएँ"; +$LANG["phrase_create_new_email"] = "नई ईमेल बनाएँ"; +$LANG["phrase_create_new_menu"] = "नई सूची बनाएँ"; +$LANG["phrase_create_new_option_list"] = "नया विकल्प सूची बनाएँ"; +$LANG["phrase_create_new_option_list_group"] = "नया विकल्प सूची समूह बनाएँ"; +$LANG["phrase_create_new_option_list_rightarrow"] = "नया विकल्प सूची बनाएँ »"; +$LANG["phrase_create_new_view"] = "नई सारे बनाएँ"; +$LANG["phrase_create_new_view_group"] = "नया देखें समूह बनाएँ"; +$LANG["phrase_custom_display_format"] = "कस्टम प्रदर्शन स्वरूप"; +$LANG["phrase_custom_recipient"] = "कस्टम प्राप्तकर्ता"; +$LANG["phrase_custom_url"] = "कस्टम यूआरएल"; +$LANG["phrase_dark_blue"] = "डार्क ब्लू"; +$LANG["phrase_data_type"] = "डेटा प्रकार"; +$LANG["phrase_database_hostname"] = "डाटाबेस होस्टनाम"; +$LANG["phrase_database_name"] = "डेटाबेस नाम"; +$LANG["phrase_database_password"] = "डेटाबेस पासवर्ड"; +$LANG["phrase_database_settings"] = "डाटाबेस सेटिंग्स"; +$LANG["phrase_database_setup"] = "डेटाबेस सेटअप"; +$LANG["phrase_database_table_prefix"] = "डेटाबेस तालिका उपसर्ग"; +$LANG["phrase_database_username"] = "डेटाबेस उपयोगकर्ता नाम"; +$LANG["phrase_date_format"] = "दिनांक स्वरूप"; +$LANG["phrase_db_column"] = "DB स्तम्भ"; +$LANG["phrase_db_setup_page_4"] = "4. डेटाबेस सेटअप"; +$LANG["phrase_default_client_account_theme"] = "डिफ़ॉल्ट ग्राहकों का खाता थीम"; +$LANG["phrase_default_date_field_search_value"] = "डिफ़ॉल्ट दिनांक फ़ील्ड खोज मूल्य"; +$LANG["phrase_default_language"] = "डिफ़ॉल्ट भाषा"; +$LANG["phrase_default_menu"] = "डिफ़ॉल्ट मेनू"; +$LANG["phrase_default_sessions_timeout"] = "डिफ़ॉल्ट सत्र टाइम"; +$LANG["phrase_default_sort_order"] = "डिफ़ॉल्ट सॉर्ट आदेश"; +$LANG["phrase_default_tab_label"] = "डेटा"; +$LANG["phrase_default_theme"] = "डिफ़ॉल्ट थीम"; +$LANG["phrase_default_value"] = "डिफ़ॉल्ट मान"; +$LANG["phrase_default_values"] = "डिफ़ॉल्ट मान"; +$LANG["phrase_default_values_new_submissions"] = "नई प्रस्तुतियाँ के लिए डिफ़ॉल्ट मान"; +$LANG["phrase_delete_field"] = "फ़ील्ड हटाएँ"; +$LANG["phrase_delete_form"] = "हटाएँ फार्म"; +$LANG["phrase_delete_row"] = "पंक्ति हटाएँ"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "हटाएँ संबंधित फाइलें जब जमा हटाने"; +$LANG["phrase_delete_view"] = "हटाएँ देखें"; +$LANG["phrase_disconnect_rows"] = "पंक्तियों डिस्कनेक्ट"; +$LANG["phrase_display_email"] = "प्रदर्शन ईमेल"; +$LANG["phrase_display_name"] = "प्रदर्शन नाम"; +$LANG["phrase_display_text"] = "प्रदर्शित आलेख"; +$LANG["phrase_display_value"] = "प्रदर्शित मान"; +$LANG["phrase_edit_admin_menu"] = "संपादित करें व्यवस्थापक मेनू"; +$LANG["phrase_edit_client"] = "संपादित करें ग्राहकों का"; +$LANG["phrase_edit_client_menu"] = "संपादित करें ग्राहकों का मेन्यू"; +$LANG["phrase_edit_email_template"] = "संपादित करें ईमेल टेम्पलेट"; +$LANG["phrase_edit_field"] = "संपादित करें फील्ड"; +$LANG["phrase_edit_field_c"] = "फ़ील्ड संपादित करें:"; +$LANG["phrase_edit_form"] = "संपादित करें फ़ॉर्म"; +$LANG["phrase_edit_form_access_type_b"] = "[फार्म का उपयोग प्रकार संपादित करें]"; +$LANG["phrase_edit_option_list"] = "विकल्प सूची संपादित करें"; +$LANG["phrase_edit_submission"] = "संपादित करें प्रस्तुत"; +$LANG["phrase_edit_submission_label"] = "प्रस्तुत लेबल संपादित करें"; +$LANG["phrase_edit_view"] = "संपादित करें देखें"; +$LANG["phrase_email_format"] = "ईमेल प्रारूप"; +$LANG["phrase_email_settings"] = "ईमेल सेटिंग्स"; +$LANG["phrase_email_template"] = "ईमेल टेम्पलेट"; +$LANG["phrase_email_template_name"] = "ईमेल का नाम टेम्पलेट"; +$LANG["phrase_error_learn_more"] = "इस त्रुटि के बारे में अधिक जानें."; +$LANG["phrase_error_text_intro"] = "कृपया निम्नलिखित त्रुटि (एस पुनः भेजने के लिये) और तय:"; +$LANG["phrase_errors_learn_more"] = "त्रुटि कोड पर क्लिक करें और अधिक जानने के लिए."; +$LANG["phrase_event_trigger"] = "घटना उत्प्रेरक"; +$LANG["phrase_external_form"] = "बाहरी फॉर्म"; +$LANG["phrase_external_form_info"] = "बाहरी फॉर्म जानकारी"; +$LANG["phrase_external_your_own_form"] = "बाहरी (अपने खुद के फार्म)"; +$LANG["phrase_field_comments"] = "फील्ड टिप्पणियाँ"; +$LANG["phrase_field_label"] = "फील्ड लेबल"; +$LANG["phrase_field_options"] = "फील्ड विकल्प"; +$LANG["phrase_field_size"] = "फील्ड का आकार"; +$LANG["phrase_field_skipped"] = "मैदान छोड़ा"; +$LANG["phrase_field_specific_settings"] = "फील्ड - विशिष्ट सेटिंग्स"; +$LANG["phrase_field_type"] = "फील्ड प्रकार"; +$LANG["phrase_field_type_no_validation"] = "वहाँ कोई मान्यता नियमों इस फ़ील्ड प्रकार के लिए उपलब्ध हैं."; +$LANG["phrase_field_types"] = "फील्ड प्रकार"; +$LANG["phrase_field_value"] = "फील्ड वैल्यू"; +$LANG["phrase_field_values_to_display_values"] = "क्षेत्र मान »प्रदर्शित मूल्य"; +$LANG["phrase_final_touches_page_6"] = "6. अंतिम"; +$LANG["phrase_finalize_form"] = "अंतिम रूप देने के फार्म"; +$LANG["phrase_first_name"] = "प्रथम नाम"; +$LANG["phrase_footer_text"] = "पाद लेख पाठ"; +$LANG["phrase_for_any_form_submission"] = "किसी भी रूप प्रस्तुत करने के लिए"; +$LANG["phrase_for_view_submissions"] = "केवल प्रस्तुतियाँ कि निम्नलिखित देखें (ओं) में फिट"; +$LANG["phrase_forgot_password"] = "अपना पासवर्ड भूल गए?"; +$LANG["phrase_form_already_selected"] = "फार्म पहले से चयनित"; +$LANG["phrase_form_email_field_b_c"] = "[ईमेल पर्चा क्षेत्र]:"; +$LANG["phrase_form_email_field_configuration"] = "फार्म ईमेल फील्ड विन्यास"; +$LANG["phrase_form_email_fields"] = "ईमेल फार्म फील्ड्स"; +$LANG["phrase_form_field"] = "फार्म फील्ड"; +$LANG["phrase_form_field_contents"] = "प्रपत्र फ़ील्ड सामग्री"; +$LANG["phrase_form_field_name"] = "फार्म फील्ड का नाम"; +$LANG["phrase_form_field_placeholders"] = "प्रपत्र फ़ील्ड प्लेसहोल्डर"; +$LANG["phrase_form_fields"] = "प्रपत्र फ़ील्ड्स"; +$LANG["phrase_form_info"] = "फार्म सूचना"; +$LANG["phrase_form_info_2"] = "2. फार्म सूचना"; +$LANG["phrase_form_list"] = "प्रपत्र सूची"; +$LANG["phrase_form_name"] = "फार्म का नाम"; +$LANG["phrase_form_page"] = "फार्म पेज"; +$LANG["phrase_form_placeholders"] = "फार्म Placeholders"; +$LANG["phrase_form_submission"] = "फार्म प्रस्तुत"; +$LANG["phrase_form_submissions"] = "फार्म प्रस्तुतियाँ"; +$LANG["phrase_form_type"] = "फार्म प्रकार"; +$LANG["phrase_form_url"] = "फार्म का यूआरएल"; +$LANG["phrase_form_urls"] = "फॉर्म यूआरएल"; +$LANG["phrase_forms_assigned_to_any_account"] = "किसी भी खाते को सौंपा प्रपत्र"; +$LANG["phrase_forms_page_default_message"] = "प्रपत्र पृष्ठ डिफ़ॉल्ट संदेश"; +$LANG["phrase_ft_installation"] = "फार्म उपकरण अधिष्ठापन स्क्रिप्ट"; +$LANG["phrase_full_width"] = "पूरी चौड़ाई"; +$LANG["phrase_getting_started"] = "शुरू हो रही है"; +$LANG["phrase_global_placeholders"] = "वैश्विक Placeholders"; +$LANG["phrase_group_name"] = "समूह नाम"; +$LANG["phrase_group_options_q"] = "समूह विकल्प?"; +$LANG["phrase_group_rows"] = "समूह पंक्तियाँ"; +$LANG["phrase_have_fun"] = "मजा करो!"; +$LANG["phrase_highlight_colour"] = "हाइलाइट रंगीन"; +$LANG["phrase_html_email"] = "HTML ईमेल"; +$LANG["phrase_html_template"] = "टेम्पलेट HTML"; +$LANG["phrase_images_media"] = "छवियाँ मीडिया /"; +$LANG["phrase_import_option_list_rightarrow"] = "आयात विकल्प सूची »"; +$LANG["phrase_input_length"] = "इनपुट लंबाई"; +$LANG["phrase_installation_help"] = "संस्थापन सहायता"; +$LANG["phrase_internal_form"] = "आंतरिक फॉर्म"; +$LANG["phrase_ip_address"] = "आईपी पता"; +$LANG["phrase_is_multi_page_form_q"] = "यह एक बहु - पृष्ठ के फार्म का है?"; +$LANG["phrase_label_response_placeholders"] = "लेबल / रिस्पांस प्लेसहोल्डर"; +$LANG["phrase_large_300px"] = "बड़े (300px)"; +$LANG["phrase_large_400px"] = "बड़े (400px)"; +$LANG["phrase_last_7_days"] = "पिछले 7 दिन"; +$LANG["phrase_last_logged_in"] = "पिछले लॉग इन"; +$LANG["phrase_last_modified"] = "अंतिम बार संशोधित"; +$LANG["phrase_last_modified_date"] = "अंतिम बार संशोधित तारीख"; +$LANG["phrase_last_name"] = "अंतिम नाम"; +$LANG["phrase_letters_only"] = "पत्र केवल"; +$LANG["phrase_light_brown"] = "हल्के भूरे रंग"; +$LANG["phrase_limit_email_content"] = "सीमा को ध्यान में रखते हुए क्षेत्रों को ईमेल सामग्री"; +$LANG["phrase_loading_ellipsis"] = "लोड हो रहा है ..."; +$LANG["phrase_log_in"] = "लॉग इन"; +$LANG["phrase_login_as_user"] = "इस उपयोगकर्ता के रूप में प्रवेश"; +$LANG["phrase_login_info"] = "लॉगिन जानकारी"; +$LANG["phrase_login_page"] = "प्रवेश पृष्ठ"; +$LANG["phrase_login_panel_c"] = "लॉगिन पैनल:"; +$LANG["phrase_login_panel_leftarrows"] = "«लॉगिन पैनल"; +$LANG["phrase_login_password"] = "लॉगिन पासवर्ड"; +$LANG["phrase_login_username"] = "लॉगिन उपयोगकर्ता नाम"; +$LANG["phrase_logo_link_url"] = "लोगो कड़ी यूआरएल"; +$LANG["phrase_logout_url"] = "लॉगआउट यूआरएल"; +$LANG["phrase_main_nav"] = "मुख्य एनएवी"; +$LANG["phrase_main_settings"] = "मुख्य सेटिंग्स"; +$LANG["phrase_manage_client"] = "प्रबंधित क्लाइंट"; +$LANG["phrase_manage_client_omit_list"] = "प्रबंधित क्लाइंट सूची छोड़ें"; +$LANG["phrase_max_file_size"] = "अधिकतम फ़ाइल आकार"; +$LANG["phrase_max_length"] = "अधिकतम लंबाई"; +$LANG["phrase_max_length_words_chars"] = "- अधिकतम लंबाई (शब्दों वर्ण /)"; +$LANG["phrase_may_add_submissions"] = "प्रस्तुतियाँ जोड़ने के हो सकते हैं"; +$LANG["phrase_may_copy_submissions"] = "सबमिशन कॉपी कर सकते हैं"; +$LANG["phrase_may_delete_submissions"] = "प्रस्तुतियाँ हटाने के हो सकते हैं"; +$LANG["phrase_medium_150px"] = "मध्यम (150px)"; +$LANG["phrase_medium_200px"] = "मध्यम (200px)"; +$LANG["phrase_menu_name"] = "मेनू का नाम"; +$LANG["phrase_menu_type"] = "मेनू प्रकार"; +$LANG["phrase_min_password_length"] = "न्यूनतम पासवर्ड लंबाई"; +$LANG["phrase_module_description"] = "मॉड्यूल विवरण"; +$LANG["phrase_module_info"] = "मॉड्यूल सूचना"; +$LANG["phrase_module_nav"] = "मॉड्यूल एनएवी"; +$LANG["phrase_month_to_date"] = "तिथि करने के लिए महीना"; +$LANG["phrase_multi_select"] = "बहु चुनें"; +$LANG["phrase_multi_select_dropdown"] = "बहु चुनें ड्रॉपडाउन"; +$LANG["phrase_multiple_fields_found"] = "कई क्षेत्रों मिला!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "/ नाम अंतिम नाम"; +$LANG["phrase_new_blank_email"] = "नई खाली ईमेल"; +$LANG["phrase_new_blank_option_list"] = "नई रिक्त विकल्प सूची"; +$LANG["phrase_new_blank_view"] = "नई खाली देखें"; +$LANG["phrase_new_ft_installation"] = "नए रूप उपकरण स्थापना"; +$LANG["phrase_new_option_list"] = "नई विकल्प सूची"; +$LANG["phrase_new_password"] = "नया पासवर्ड"; +$LANG["phrase_new_password_reenter"] = "नया पासवर्ड (कृपया पुन: दर्ज करें)"; +$LANG["phrase_new_view"] = "नई देखें"; +$LANG["phrase_new_view_all_fields"] = "न्यू देखें - सभी क्षेत्रों"; +$LANG["phrase_next_client"] = "अगले ग्राहक »"; +$LANG["phrase_next_field"] = "अगले क्षेत्र »"; +$LANG["phrase_next_form"] = "अगले रूप »"; +$LANG["phrase_next_view"] = "अगले देखें »"; +$LANG["phrase_no_clients"] = "कोई ग्राहक"; +$LANG["phrase_no_limit"] = "कोई सीमा नहीं"; +$LANG["phrase_no_offset"] = "ऑफसेट नहीं"; +$LANG["phrase_no_option_lists_available"] = "कोई विकल्प उपलब्ध को सूचीबद्ध करता है."; +$LANG["phrase_no_views"] = "नहीं दर्शाव"; +$LANG["phrase_no_views_with_filters_p"] = "(फिल्टर के साथ कोई दृश्य परिभाषित)"; +$LANG["phrase_none_not_recommended"] = "कोई सिफारिश नहीं है ()"; +$LANG["phrase_not_assigned_to_option_list"] = "यह क्षेत्र एक विकल्प सूची में नहीं सौंपा है."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "नहीं समान"; +$LANG["phrase_not_found"] = "नहीं मिला!"; +$LANG["phrase_not_like"] = "पसंद नहीं"; +$LANG["phrase_not_visible_to_client"] = "ग्राहक को दिखाई (नहीं)"; +$LANG["phrase_num_clients_per_page"] = "प्रति पेज नंबर ग्राहक"; +$LANG["phrase_num_emails_per_page"] = "Num प्रति पेज ईमेल"; +$LANG["phrase_num_fields"] = "फील्ड्स संख्या"; +$LANG["phrase_num_forms_per_page"] = "Num प्रति पेज फार्म"; +$LANG["phrase_num_menus_per_page"] = "Num प्रति पेज मेनू"; +$LANG["phrase_num_modules_per_page"] = "Num प्रति पेज मॉड्यूल"; +$LANG["phrase_num_option_lists_per_page"] = "अंक प्रति पेज विकल्प सूचियाँ"; +$LANG["phrase_num_options"] = "अंक विकल्प"; +$LANG["phrase_num_rows"] = "अंक पंक्तियाँ"; +$LANG["phrase_numbers_only"] = "केवल संख्या"; +$LANG["phrase_often_localhost"] = "(अक्सर "लोकलहोस्ट")"; +$LANG["phrase_on_form_submission"] = "फार्म जमा करने पर"; +$LANG["phrase_one_char_number"] = "कम से कम एक चरित्र एक नंबर (0-9) है"; +$LANG["phrase_one_char_upper"] = "कम से कम एक वर्ण अपरकेस है"; +$LANG["phrase_one_special_char"] = "कम से कम {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(केवल विशिष्ट ग्राहकों का उपयोग किया है)"; +$LANG["phrase_open_form_in_dialog"] = "संवाद विंडो में खोलें फार्म"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "इस प्रपत्र को एक नए टैब / विंडो में खोलें"; +$LANG["phrase_option_list"] = "विकल्प सूची"; +$LANG["phrase_option_list_name"] = "विकल्प सूची का नाम"; +$LANG["phrase_option_list_or_contents"] = "विकल्प सूची / सामग्री"; +$LANG["phrase_option_lists"] = "विकल्प सूचियाँ"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "पृष्ठ शीर्षक"; +$LANG["phrase_pass_on"] = "दर्रा पर"; +$LANG["phrase_password_min"] = "यह कम से कम {\$length} होना चाहिए."; +$LANG["phrase_password_one_number"] = "यह एक कम से कम संख्या (0-9) होना चाहिए."; +$LANG["phrase_password_one_uppercase"] = "यह कम से कम एक uppercase पत्र होना चाहिए."; +$LANG["phrase_password_requirements_c"] = "पासवर्ड आवश्यकताओं:"; +$LANG["phrase_password_reset"] = "पासवर्ड रीसेट करें"; +$LANG["phrase_password_special_char"] = "इसे कम से कम निम्न वर्णों में से एक: {\$chars} होनी चाहिए"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "अनुमतियाँ / अन्य सेटिंग्स"; +$LANG["phrase_permitted_file_types"] = "अनुमति फ़ाइल प्रकार"; +$LANG["phrase_phone_number"] = "फ़ोन नंबर"; +$LANG["phrase_phone_number_format"] = "फ़ोन नंबर स्वरूप"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini फ़ाइल अपलोड आकार की अनुमति अधिकतम:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP संस्करणः"; +$LANG["phrase_please_confirm"] = "कृपया पुष्टि करें"; +$LANG["phrase_please_enter_license_key"] = "कृपया अपने लाइसेंस कुंजी दर्ज करें"; +$LANG["phrase_please_select"] = "कृपया चुनें"; +$LANG["phrase_please_select_form"] = "कृपया एक फार्म का चयन करें"; +$LANG["phrase_prev_client"] = "«पिछला ग्राहक"; +$LANG["phrase_prev_form"] = "«पिछला फार्म"; +$LANG["phrase_prevent_password_reuse"] = "# पिछले पासवर्ड की पुनः उपयोग रोकें"; +$LANG["phrase_previous_field"] = "«पिछले क्षेत्र"; +$LANG["phrase_previous_page"] = "पिछले पृष्ठ"; +$LANG["phrase_previous_view"] = "«पिछला देखें"; +$LANG["phrase_program_name"] = "कार्यक्रम का नाम"; +$LANG["phrase_public_form_omit_list"] = "सार्वजनिक फार्म छोड़ सूची"; +$LANG["phrase_public_view_omit_list"] = "सार्वजनिक देखें छोड़ सूची"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "निम्न क्वेरी के साथ एक समस्या थी:"; +$LANG["phrase_radio_buttons"] = "रेडियो बटन"; +$LANG["phrase_random_form_submission"] = "यादृच्छिक फार्म जमा"; +$LANG["phrase_re_enter_password"] = "पुनः पासवर्ड दर्ज करें"; +$LANG["phrase_recipient_type"] = "प्राप्तकर्ता प्रकार"; +$LANG["phrase_redirect_url"] = "पुनर्निर्देशन यूआरएल"; +$LANG["phrase_refresh_list"] = "ताज़ा सूची"; +$LANG["phrase_refresh_module_list"] = "ताज़ा मॉड्यूल सूची"; +$LANG["phrase_refresh_page"] = "ताज़ा समाचार"; +$LANG["phrase_refresh_theme_list"] = "ताज़ा विषय सूची"; +$LANG["phrase_register_new_email"] = "रजिस्टर नई ईमेल"; +$LANG["phrase_remaining_characters"] = "शेष वर्ण"; +$LANG["phrase_remaining_words"] = "शेष शब्द"; +$LANG["phrase_remove_tabs"] = "निकालें टैब्स"; +$LANG["phrase_required_password_chars"] = "पासवर्ड वर्णों की आवश्यकता"; +$LANG["phrase_resend_test_submission"] = "पुनः भेजें टेस्ट प्रस्तुत"; +$LANG["phrase_return_form_list"] = "फार्म की सूची पर लौटें"; +$LANG["phrase_row_selected"] = "{\$num_rows} चयनित पंक्ति"; +$LANG["phrase_rows_selected"] = "{\$num_rows} पंक्तियों का चयन"; +$LANG["phrase_sample_data"] = "नमूना डेटा"; +$LANG["phrase_save_changes"] = "परिवर्तन सहेजें"; +$LANG["phrase_search_keyword"] = "खोज कीवर्ड"; +$LANG["phrase_security_settings"] = "सुरक्षा सेटिंग्स"; +$LANG["phrase_select_all"] = "सभी का चयन करें"; +$LANG["phrase_select_all_X_results"] = "सभी का चयन करें {\$numresults} परिणाम"; +$LANG["phrase_select_all_on_page"] = "चुनें पन्ने पर सभी"; +$LANG["phrase_select_date"] = "तिथि का चयन करें"; +$LANG["phrase_select_field"] = "फ़ील्ड का चयन करें"; +$LANG["phrase_select_swatch"] = "पैवंद का चयन करें"; +$LANG["phrase_selected_clients"] = "चयनित ग्राहक"; +$LANG["phrase_selected_views"] = "चयनित दर्शाव"; +$LANG["phrase_send_email"] = "ईमेल भेजें"; +$LANG["phrase_send_test_email"] = "परीक्षण ईमेल भेजें"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "सत्र टाइम"; +$LANG["phrase_setting_value"] = "मूल्य निर्धारण"; +$LANG["phrase_setup_options"] = "सेटअप विकल्प"; +$LANG["phrase_show_all"] = "सभी दिखाएँ"; +$LANG["phrase_show_form"] = "फॉर्म दिखाएँ"; +$LANG["phrase_size_large"] = "बड़े (पाठ)"; +$LANG["phrase_size_medium"] = "मध्यम (<= 256 वर्ण)"; +$LANG["phrase_size_small"] = "छोटा (<= 20 वर्ण)"; +$LANG["phrase_size_tiny"] = "टिनी (<= 5 वर्ण)"; +$LANG["phrase_size_very_large"] = "बहुत बड़ा MEDIUMTEXT ()"; +$LANG["phrase_skip_field"] = "छोड़ें फील्ड"; +$LANG["phrase_skip_step"] = "छोड़ें कदम"; +$LANG["phrase_small_100px"] = "छोटा (100px)"; +$LANG["phrase_small_80px"] = "लघु (80px)"; +$LANG["phrase_smart_fill"] = "स्मार्ट भरें"; +$LANG["phrase_smart_fill_fields_from_c"] = "स्मार्ट से भरें क्षेत्र:"; +$LANG["phrase_smart_fill_user_documentation"] = "स्मार्ट भरें उपयोगकर्ता प्रलेखन »"; +$LANG["phrase_sort_as"] = "के रूप में क्रमबद्ध करें"; +$LANG["phrase_special_fields"] = "विशेष फील्ड्स"; +$LANG["phrase_standard_fields"] = "मानक फील्ड्स"; +$LANG["phrase_standard_filters"] = "मानक फ़िल्टर »"; +$LANG["phrase_step_1"] = "चरण 1"; +$LANG["phrase_step_2"] = "चरण 2"; +$LANG["phrase_step_3"] = "चरण 3"; +$LANG["phrase_step_4"] = "चरण 4"; +$LANG["phrase_step_5"] = "चरण 5"; +$LANG["phrase_step_6"] = "चरण 6"; +$LANG["phrase_strip_tags_in_submissions"] = "प्रस्तुतियाँ रूप में पट्टी टैग"; +$LANG["phrase_subject_line"] = "विषय पंक्ति"; +$LANG["phrase_submission_date"] = "प्रस्तुत करने की तारीख"; +$LANG["phrase_submission_id"] = "प्रस्तुत आईडी"; +$LANG["phrase_submission_made"] = "प्रस्तुत किया: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "प्रस्तुत प्रकार"; +$LANG["phrase_submissions_per_page"] = "प्रति पृष्ठ प्रस्तुतियाँ"; +$LANG["phrase_system_check"] = "प्रणाली की जाँच करें"; +$LANG["phrase_system_fields_no_validation"] = "आप सत्यापन प्रणाली क्षेत्रों के लिए नहीं जोड़ सकते."; +$LANG["phrase_system_time_offset"] = "प्रणाली समय ऑफसेट"; +$LANG["phrase_tab_label"] = "टैब लेबल"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "टेस्ट फ़ोल्डर अनुमतियाँ"; +$LANG["phrase_test_submission"] = "टेस्ट प्रस्तुत"; +$LANG["phrase_test_submission_3"] = "3. टेस्ट प्रस्तुत"; +$LANG["phrase_test_submission_received"] = "टेस्ट प्रस्तुत प्राप्त"; +$LANG["phrase_text_and_html"] = "पाठ और HTML"; +$LANG["phrase_text_email"] = "आलेख ई मेल"; +$LANG["phrase_text_template"] = "पाठ टेम्पलेट"; +$LANG["phrase_the_previous_month"] = "पिछले महीने"; +$LANG["phrase_theme_description"] = "थीम विवरण"; +$LANG["phrase_theme_info"] = "थीम जानकारी"; +$LANG["phrase_tiny_30px"] = "टिनी (30px)"; +$LANG["phrase_tiny_50px"] = "टिनी (50px)"; +$LANG["phrase_total_results_c"] = "कुल परिणाम:"; +$LANG["phrase_type_c"] = "त्रुटि प्रकार:"; +$LANG["phrase_unselect_all"] = "Unselect सब"; +$LANG["phrase_update_accounts"] = "अद्यतन लेखा"; +$LANG["phrase_update_email_template"] = "अद्यतन ईमेल टेम्पलेट"; +$LANG["phrase_update_field"] = "अद्यतन फील्ड"; +$LANG["phrase_update_order"] = "अद्यतन आदेश"; +$LANG["phrase_update_view"] = "अद्यतन देखें"; +$LANG["phrase_upload_file"] = "फ़ाइल अपलोड करें"; +$LANG["phrase_upload_files"] = "फ़ाइलें अपलोड करें"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "अपलोड फ़ोल्डर पथ"; +$LANG["phrase_upload_folder_url"] = "अपलोड फ़ोल्डर यूआरएल"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "डिफ़ॉल्ट मान का उपयोग करें?"; +$LANG["phrase_used_by_num_form_fields"] = "# प्रपत्र फ़ील्ड्स द्वारा प्रयुक्त"; +$LANG["phrase_uses_swatches"] = "नमूने का उपयोग करता है"; +$LANG["phrase_valid_email"] = "मान्य ईमेल"; +$LANG["phrase_validation_error"] = "मान्यता त्रुटि"; +$LANG["phrase_validation_rule"] = "मान्यता नियम"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "देखें समूह"; +$LANG["phrase_view_id"] = "देखें आईडी"; +$LANG["phrase_view_name"] = "सारे नाम"; +$LANG["phrase_view_placeholders"] = "देखें प्लेसहोल्डर"; +$LANG["phrase_view_submissions"] = "देखें प्रस्तुतियाँ"; +$LANG["phrase_view_uploaded_files"] = "देखें फाइल अपलोड"; +$LANG["phrase_viewing_range"] = "[{\$startnum} {\$endnum} को देखने]"; +$LANG["phrase_when_sent"] = "जब भेजा"; +$LANG["phrase_when_submission_is_deleted"] = "जब जमा हटा दिया गया है"; +$LANG["phrase_when_submission_is_edited"] = "जब जमा संपादित है"; +$LANG["phrase_who_can_access"] = "कौन का उपयोग कर सकते हैं?"; +$LANG["phrase_word_limit_p"] = "शब्द सीमा."; +$LANG["phrase_year_to_date"] = "तिथि करने के लिए वर्ष"; +$LANG["phrase_yes_for_all_views"] = "हाँ, सभी के लिए दर्शाव"; +$LANG["phrase_yes_for_specific_views"] = "हाँ, विशिष्ट दर्शाव के लिए"; +$LANG["phrase_your_account"] = "अपने खाता"; +$LANG["phrase_your_email"] = "आपका ईमेल"; +$LANG["phrase_your_email_address"] = "आपका ईमेल पता"; +$LANG["processing_form_disabled"] = "क्षमा करें, इस प्रपत्र को अक्षम कर दिया गया है."; +$LANG["processing_form_incomplete"] = "क्षमा करें, इस प्रपत्र प्रकट नहीं होता है के लिए पूरी तरह से फॉर्म उपकरण के भीतर से की स्थापना की. इस समस्या का सबसे संभावित कारण यह है कि तुम "form_tools_initialize_form" छिपा फार्म क्षेत्र हटा दिया है, लेकिन किया "फार्म की प्रक्रिया जोड़ें" के सभी चरणों को पूरा नहीं है.

    कृपया लॉग इन करें और फार्म का विन्यास की समीक्षा करें."; +$LANG["processing_init_complete"] = "धन्यवाद! अपने परीक्षण सफलतापूर्वक प्रस्तुत करने के माध्यम से रखा गया है. कृपया फार्म उपकरण प्रशासन समिति और क्लिक करें "फार्म चरण 3 पृष्ठ जोड़ें अपने फार्म स्थापित करने समाप्त के नीचे ताज़ा करें" बटन पर वापस जाएँ."; +$LANG["processing_invalid_form_id"] = "क्षमा करें, यह एक वैध फार्म आईडी प्रतीत नहीं होता है."; +$LANG["processing_no_form_id"] = "process.php एक फार्म की आवश्यकता है प्रसंस्करण के लिए आईडी. सुनिश्चित कर लें कि आपके फार्म का नाम "form_tools_form_id" कि फार्म के साथ जा रहा है के साथ एक छिपा क्षेत्र शामिल आईडी."; +$LANG["processing_no_form_url_for_recaptcha"] = "प्रपत्र उपकरण के लिए निर्धारित जहां अनुप्रेषित को जब वे कॅप्चा ठीक तरह से दर्ज करें विफल करने में असमर्थ है. कृपया नाम के फार्म का URL युक्त form_tools_form_url के साथ छिपा क्षेत्र में प्रवेश करते हैं."; +$LANG["processing_no_post_vars"] = "process.php किसी भी डेटा प्राप्त नहीं है. नोट: इस कहानी सीधे अपने ब्राउज़र में लोड नहीं किया जा सकता है.
    सुनिश्चित कर लें कि आपके फार्म का डाक द्वारा भेज रहा है."; +$LANG["processing_no_redirect_url"] = "प्रस्तुत सही ढंग से कार्रवाई की थी, लेकिन तुम एक पुनर्निर्देशित URL इस फार्म के लिए निर्दिष्ट नहीं किया है! प्रपत्र उपकरण UI में अपने फार्म को संपादित करें और पुनर्निर्देशित URL जोड़ें."; +$LANG["special_language"] = "Hindi"; +$LANG["special_language_locale"] = "Hindi"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "सभी नए ग्राहक खातों सेटिंग्स और नीचे परिभाषित अनुमति के साथ बनाया जाएगा. एक विशेष रूप से ग्राहक के लिए एक सेटिंग ओवरराइड, ग्राहक के खाते को संपादित करें और अपनी सेटिंग्स टैब पर जाएँ."; +$LANG["text_add_form_choose_integration_method"] = "चुनें जो विधि आप करने के लिए प्रपत्र उपकरण के साथ अपने फार्म को एकीकृत करने के लिए उपयोग करना चाहते हैं."; +$LANG["text_add_form_code_submission_benefits"] = "इस विधि का उपयोग करता प्रपत्र उपकरण एपीआई, मुख्य प्रपत्र उपकरण स्क्रिप्ट में शामिल है. एपीआई फार्म उपकरण के साथ संभव के रूप में सरल रूप में अपने फार्म को एकीकृत करने का काम करने के लिए उपयोगी कार्यों का एक नंबर प्रदान करता है. कैसे अपने फार्म जब आप एपीआई का उपयोग प्रस्तुत किया जा सकता है कोई प्रतिबंध नहीं कर रहे हैं. आप एक जाना, पृष्ठ या पृष्ठ में सामग्री प्रस्तुत कर सकते हैं, आप अपने स्वयं के कस्टम सर्वर साइड सत्यापन, कॅप्चा छवियों को जोड़ सकते हैं, आप जानकारी सबमिट अब चुन सकते हैं, लेकिन केवल यह बताने के लिए फार्म उपकरण यूआई में प्रस्तुत प्रदर्शित एक बाद की तारीख में (देखें अंतिम रूप दिया प्रस्तुतियाँ API मदद प्रलेखन खंड में)."; +$LANG["text_add_form_code_submission_drawbacks"] = "आदेश में अपने PHP के माध्यम से प्रपत्र डेटा सबमिट करने के लिए, आपके प्रपत्र इस प्रपत्र उपकरण अधिष्ठापन के रूप में एक ही वेबसाइट पर स्थित होना चाहिए. दूसरे, गैर - तकनीकी और नौसिखिया प्रपत्र उपकरण उपयोगकर्ताओं के लिए, इस विधि थोड़ा पहले डरा देता जा सकता है. लेकिन वहाँ प्रलेखन तुम्हारी मदद करने के बहुत अपने एकल और बहु ​​- पृष्ठ रूपों (इन करने के लिए बाद में एक चरण पर जुड़े हुए हैं) को एकीकृत करने के लिए दो सरल ट्यूटोरियल सहित."; +$LANG["text_add_form_direct_submission_benefits"] = "यह सबसे आसान तरीका फार्म उपकरण को अपने फार्म जमा है. यह PHP के किसी भी ज्ञान की आवश्यकता नहीं है और अपने फॉर्म के लिए केवल एक बहुत छोटे परिवर्तन की आवश्यकता है. यह छोटे रूपों के लिए महान जहाँ आप बस डेटाबेस के लिए जानकारी सबमिट करें, तो एक thankyou "के लिए उपयोगकर्ता अनुप्रेषित पृष्ठ" चाहता है."; +$LANG["text_add_form_direct_submission_drawbacks"] = "इस जमा विधि का प्रयोग बहुत साधारण है, लेकिन और अधिक जटिल रूप प्रदान करने के लिए ज्यादा नियंत्रण नहीं है. बहु पृष्ठ रूपों या रूपों कि सर्वर साइड सत्यापन की आवश्यकता बेहतर दूसरी विधि से अनुकूल हैं: फार्म उपकरण एपीआई के माध्यम से प्रस्तुत करने."; +$LANG["text_add_form_field_types1"] = "लगभग हो चुका! इस पृष्ठ पर अपने सभी प्रपत्र फ़ील्ड्स को मिल रहा है और अपने क्षेत्र के प्रकार को निर्धारित करने की कोशिश करता है. शुरू करने के लिए सही पर स्मार्ट भरें बटन पर क्लिक करें. मुद्दों है कि आपका ध्यान की जरूरत है "लड़ाई आवश्यकता" स्तंभ में दिखाई देते हैं - आप केवल करने के लिए आगे बढ़ना है जब सभी कार्यों को हल किया गया है की अनुमति होगी."; +$LANG["text_add_form_field_types2"] = "यदि आपके प्रपत्र HTML में नहीं है, छोड़ें कदम आगे बढ़ने के लिए बटन क्लिक करें. यह सब बाद में विन्यस्त किया जा सकता है."; +$LANG["text_add_form_field_types3"] = "यह reloads आपके प्रपत्र की सामग्री (ओं). नोट: यह किसी भी परिवर्तन आप इस पृष्ठ पर बनाया है अधिलेखित कर देगा."; +$LANG["text_add_form_field_types4"] = "मामले में आप समस्याओं में चलाने के लिए, इस कदम को छोड़ करने के लिए यहाँ क्लिक करें. सभी अनसुलझे क्षेत्रों के लिए डिफ़ॉल्ट मान का उपयोग करने के लिए सेट कर रहे हैं. आप बाद में इन क्षेत्रों को अनुकूलित कर सकते हैं."; +$LANG["text_add_form_field_types_manual_upload"] = "यदि आप स्मार्ट करने के लिए अपने फ़ील्ड भरें करने में असमर्थ किया गया है, तो आप एक वैकल्पिक समाधान की कोशिश करना चाहते हो सकता है: नीचे के क्षेत्रों में अपने रूपों की प्रतियां अपलोड."; +$LANG["text_add_form_field_types_manual_upload2"] = "नोट: कच्चे PHP पृष्ठों (या अन्य सर्वर साइड कोड) अपलोड नहीं है - बस HTML संस्करणों अपलोड . इस मिल देखने के लिए, है और अपने वेब ब्राउज़र से पेज को सहेजने."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "एकाधिक क्षेत्रों है कि आपके द्वारा निर्दिष्ट फार्म पृष्ठ में नहीं पाया जा सका थे. यह ज्यादातर संभावना है निम्न में से कोई एक कार्य की वजह से:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "आप एक या एक से अधिक अपने बहु - पृष्ठ फार्म के रूप यूआरएल की गलत तरीके से प्रवेश किया."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "अपने प्रपत्र के एक या अधिक पृष्ठों पासवर्ड संरक्षित कर रहे हैं और स्क्रिप्ट पृष्ठ का उपयोग नहीं कर सका."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "तुम गलत तरीके से अपने प्रपत्र यूआरएल में प्रवेश किया."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "यहाँ क्लिक करें प्रपत्र जानकारी पृष्ठ पर लौटने के लिए अपनी सेटिंग्स की जाँच करें."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "परीक्षण प्रस्तुत करने के बाद आप अपने प्रपत्र (ओं) को बदल"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "एक और परीक्षण प्रस्तुत करने के माध्यम से डाल करने के लिए यहाँ क्लिक करें."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "आपका फार्म पासवर्ड से सुरक्षित है और स्क्रिप्ट पृष्ठ का उपयोग नहीं कर सका."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "एक और / इस ब्राउज़र के टैब विंडो में, तो अपने प्रपत्र में लॉग इन ताज़ा पेज नीचे बटन करने के लिए क्षेत्रों को फिर से खोजने की कोशिश करें क्लिक करें."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "ऊपर समाधान काम की कोई भी अगर, आप भी करने की कोशिश करना चाहते हो सकता है मैन्युअल रूप से प्रसंस्करण के लिए अपने रूपों अपलोड."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "एकाधिक क्षेत्रों है कि आपके द्वारा निर्दिष्ट फार्म पन्नों में नहीं पाया जा सका थे. यह है कि ज्यादातर संभावना की वजह से इन में से एक है:"; +$LANG["text_add_form_help_link"] = "यदि आप इन चरणों के दौरान किसी भी मुसीबत में चलाते हैं, बाहर पढ़ने की कोशिश उपयोगकर्ता दस्तावेज़ीकरण."; +$LANG["text_add_form_step_1_text_1"] = "अगले पन्नों आप विन्यस्त प्रपत्र उपकरण के लिए कदम के माध्यम से नेतृत्व अपने फार्म प्रस्तुतियाँ की दुकान. जारी रखने से पहले, कृपया जाँचें कि:"; +$LANG["text_add_form_step_1_text_2"] = "अपने फार्म का पहले से ही बनाया है और यह लोकलहोस्ट (यूआरएल द्वारा पहुँच गया है ठीक)"; +$LANG["text_add_form_step_1_text_3"] = "कर रहे हैं अपने फार्म को संपादित करने में सक्षम"; +$LANG["text_add_form_step_2_para_2"] = "अपनी पसंद का एक संपादक में अपने फार्म खोलें और निम्न के अपने फार्म का टैग बदलने के लिए, दो छिपा क्षेत्र भी शामिल है."; +$LANG["text_add_form_step_2_para_3"] = "अगले, एक वेब ब्राउज़र में अपने फार्म खोलने. हर क्षेत्र में भरें और सबमिट करें. सबमिट करने के बाद, आप एक सूचना संदेश देखना चाहिए. एक बार यह संदेश, इस पृष्ठ पर क्लिक करें और नीचे ताज़ा करें बटन पर वापस प्रदर्शित होता है. जब इस प्रक्रिया के पूरा हो गया है, आप एक बटन के नीचे जारी रखने के देखो, तुम अगले चरण पर ले जाएगा."; +$LANG["text_add_form_step_2_para_6"] = "अपने फार्म जमा करने में, निम्न मान शामिल हैं. वे PHP माध्यम से सीधे सेट कर सकते हैं या खुद फार्म के माध्यम से साथ पारित कर दिया. नीचे प्रत्येक के उदाहरण हैं. Varname \$ () एक हैश (सभी फार्म जमा सूचना के या साहचर्य सरणी) - यह आमतौर पर postvar \$ () या sessionvar \$ () है चर रहा है, लेकिन यह भी हो कस्टम बना सकते हैं."; +$LANG["text_add_form_step_2_text_2"] = "आपके thankyou "" यहाँ पृष्ठ के URL दर्ज करें. यह वह जगह है जहाँ आप लोगों को निर्देशित करने के बाद प्रपत्र सबमिट किया गया है चाहता हूँ."; +$LANG["text_add_form_step_3_para_1"] = "इस पृष्ठ को अपने फार्म जमा करने में सभी क्षेत्रों की सूची. कृपया प्रत्येक क्षेत्र की जांच करने और हटाने के किसी भी है कि आप हर प्रस्तुत करने के लिए नहीं जमा करना होगा. यदि आप दुर्घटना ने एक वैध क्षेत्र हटाने के लिए, या जानकारी का परिवर्तन आपके प्रपत्र, पिछले पृष्ठ पर लौटने के द्वारा संग्रहित एक नए परीक्षण जमा भेजना चाहते हैं."; +$LANG["text_add_form_step_3_para_2"] = "नोट: यदि आप चेक बॉक्स या एक बहु के द्वारा कई मूल्यों को भेज रहे हैं-बॉक्स का चयन करें, सुनिश्चित करें कि आपके क्षेत्र का नाम [] अक्षर (अधिक जानकारी के लिए उपयोगकर्ता दस्तावेज़ देखने के साथ समाप्त करना)."; +$LANG["text_add_form_step_3_text_1"] = "यहाँ है जहाँ मजा शुरू होता है! इस बिंदु पर, प्रपत्र उपकरण अपने फार्म से एक परीक्षण प्रस्तुत करने के लिए इंतज़ार कर रही है. यह इस प्रपत्र सबमिशन का उपयोग करने के लिए पता है क्या जानकारी डेटाबेस में संग्रहित किया जाना चाहिए."; +$LANG["text_add_form_step_3_text_2"] = "फार्म उपकरण को अपने फार्म का इशारा द्वारा"; +$LANG["text_add_form_step_3_text_3"] = "प्रपत्र उपकरण API का उपयोग"; +$LANG["text_add_form_step_3_text_4"] = "मदद के अपने फार्म का एकीकृत, हम सुझाव है कि आप निम्नलिखित ट्यूटोरियल की एक पढ़ें:"; +$LANG["text_add_form_step_3_text_5"] = "वे समझाने कैसे परीक्षण प्रस्तुत करने के लिए तैयार करने में अपने फार्म स्थापित करने, और अन्य जानकारी है कि मदद की हो सकती है शामिल है. PHP आप की आवश्यकता होगी की पंक्ति है:"; +$LANG["text_add_form_step_3_text_6"] = "इस डाटा सुनिश्चित वास्तव में प्रपत्र उपकरण के लिए भेजा है. आप अपने परीक्षण पर क्लिक करें बटन के नीचे जमा के माध्यम से जब डाल दिया है."; +$LANG["text_add_form_step_3_text_7"] = "के लिए पहले पृष्ठ पर अपनी अंतिम 'धन्यवाद' पृष्ठ हो params \$ चर के लिए निम्न पैरामीटर जोड़ें यकीन है कि:"; +$LANG["text_add_form_step_5_para_1"] = "डेटाबेस है इस फार्म के लिए और फार्म की स्थापना की गई है उपयोग के लिए सक्रिय हो गया है. यदि आप अपने को process.php फार्म का इशारा द्वारा प्रस्तुत किया, अपने फार्म में लौटने कृपया और निम्नलिखित छिपा क्षेत्र निकालने के लिए:"; +$LANG["text_add_form_step_5_para_2"] = "तब यात्रा अपने "धन्यवाद" पृष्ठ के सत्र खाली है. एक बार यह किया है, सभी नए रूप प्रस्तुतियाँ और कार्रवाई की जाएगी फार्म उपकरण द्वारा संग्रहीत. एक या दो जमा करने की जानकारी को सत्यापित करने की कोशिश करो सब अपलोड सही है."; +$LANG["text_add_form_step_5_para_3"] = "यदि आप ठीक करना चाहते ऐसे ऑटो ईमेल के रूप में विकल्प के लिए अपने फार्म धुन, अतिरिक्त प्रपत्र फ़ील्ड्स क्षेत्र, या प्रपत्र फ़ील्ड प्रकार अनुकूलित जोड़ने से, आप किसी भी बिंदु पर अपने फार्म को संपादित कर सकते हैं."; +$LANG["text_add_form_step_5_para_4"] = "के बाद से अपने फार्म का क्षेत्र शामिल है फ़ाइल अपलोड करें, आप विन्यस्त प्रत्येक क्षेत्र की आवश्यकता को फाइल अपलोड फ़ोल्डर निर्दिष्ट करना होगा, जो और फ़ाइलों की अनुमति है. इस फार्म का संपादन पृष्ठ के प्रदर्शन टैब पर पाया जा सकता है."; +$LANG["text_add_form_step_5_para_5"] = "यदि प्रस्तुत एपीआई के द्वारा भेजा, अपने फार्म के पहले पृष्ठ पर ft_api_init_form_page लाइन बदल गया था:"; +$LANG["text_add_submission_button"] = "जोड़ें प्रस्तुत बटन केवल दृश्य है कि है के लिए प्रकट होता है "प्रस्तुतियाँ जोड़ने मई " "हां " सेट विकल्प."; +$LANG["text_admin_email_placeholder_info"] = "इस फार्म उपकरण प्रशासक, आपके खाते की सेटिंग्स में परिभाषित के ईमेल पता है. यह केवल ईमेल पते outputs है, इसलिए यदि आप एक HTML लिंक के रूप में उपयोग करना चाहते हैं, तो आपको बहुत पसंद है यह एक टैग <a> में, रैप की आवश्यकता होगी:
    <a href="mailto:{\$ADMINEMAIL}"> (ADMINEMAIL \$) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(इसके अलावा, डिफ़ॉल्ट प्रवेश पृष्ठ विषय)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "सबसे पहले, आपके प्रपत्र प्रकार का चयन करें."; +$LANG["text_client_form_page"] = "इस पृष्ठ पर सभी रूपों और इस ग्राहक को सौंपा दर्शाव सूचीबद्ध करता है. सुझाव: क्रम में उनके लिए एक फार्म प्रस्तुतियाँ देखने के लिए, वे जरूरत कम से कम एक दृश्य को सौंपा जाएगा."; +$LANG["text_client_map_filters_desc1"] = "ग्राहक मानचित्र फ़िल्टर तुम्हें प्रस्तुतियाँ कि एक फार्म क्षेत्र में मूल्यों को एक ग्राहक के खाते में मूल्यों के मानचित्रण द्वारा इस दृश्य में प्रदर्शित की सीमा."; +$LANG["text_client_no_forms"] = "आप वर्तमान में कोई समीक्षा के लिए फार्म उपलब्ध है."; +$LANG["text_client_welcome"] = "स्वागत! इस कार्यक्रम के भंडार सभी अपनी वेबसाइट आगंतुकों द्वारा प्रस्तुत जानकारी. एक विशेष रूप लिंक देखें, या अन्य विकल्पों के लिए leftmost नेविगेशन मेनू देखने पर सिर्फ क्लिक के लिए प्रस्तुतियाँ देखें."; +$LANG["text_config_file_created"] = "अपने config.php फाइल बना दिया गया है."; +$LANG["text_config_file_not_created"] = "हम आपके config.php फाइल नहीं बना सका. आप मैन्युअल रूप से फ़ाइल बनाने की आवश्यकता होगी."; +$LANG["text_config_file_not_created_instructions"] = "और प्रतिलिपि नीचे अनुभाग से एक फ़ाइल में सामग्री चस्पा config.php बुलाया और FTP के द्वारा प्रपत्र उपकरण को अपलोड / वैश्विक फ़ोल्डर (फ़ोल्डर वह भी कुछ अन्य फ़ाइलें और निर्देशिका शामिल है, एक library.php बुलाया फ़ाइल)."; +$LANG["text_confirm_delete_form"] = "हाँ, मैं इस प्रपत्र को हटाना चाहते हैं"; +$LANG["text_create_admin_account"] = "अब हमें व्यवस्थापक खाता बनाने जा रहे हैं. यह ऐसे रूपों जोड़ने और ग्राहक खातों बनाने के रूप में प्रपत्र उपकरण, के सभी पहलुओं के प्रबंधन के लिए प्रयोग किया जाता है."; +$LANG["text_create_new_client_account"] = "नीचे के फार्म का उपयोग करें एक नए ग्राहक के खाते बनाने के लिए. सभी फ़ील्ड अनिवार्य हैं."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "स्वरूपण विकल्प के लिए PHP {\$datefunctionlink} समारोह देखने"; +$LANG["text_default_file_settings_page"] = "इस पृष्ठ को अपने फार्म उपकरण स्थापित करने के लिए फ़ाइल अपलोड सेटिंग में परिभाषित करता है. इन नियमों के सभी प्रपत्र उपकरण के माध्यम से अपलोड की गई फ़ाइलों पर लागू होते हैं, जब तक कि एक व्यक्ति के रूप क्षेत्र के लिए स्पष्ट रूप से अधिरोहित. नोट: यदि आप अपलोड के बाद फ़ोल्डर फ़ाइलें अपलोड की गई है बदल गया है, वे स्वतः ही नए फ़ोल्डर में आ जाएंगे."; +$LANG["text_default_theme_cache_folder_not_writable"] = "जारी रखने से पहले, आप अपने विषयों / / डिफ़ॉल्ट / कैश फ़ोल्डर अद्यतन करने की आवश्यकता को पूरा पढ़ना और लिखना अनुमति देगा. इस बार, इस संदेश को गायब किया जाएगा और आप स्क्रिप्ट स्थापित कर सकते है."; +$LANG["text_default_values_in_view"] = "इस अनुभाग में वैकल्पिक है. इस दृश्य के साथ बनाया सभी प्रस्तुतियाँ यहाँ निर्दिष्ट डिफ़ॉल्ट मान में शामिल होंगे."; +$LANG["text_delete_all_forms"] = "मैं सभी फ़ाइलें है कि इस फ़ॉर्म के द्वारा अपलोड की गई थी नष्ट करना चाहते हैं"; +$LANG["text_delete_form_warning"] = "क्या आप सुनिश्चित हैं कि आप इस फ़ॉर्म को हटाना चाहते हैं? यह क्रिया नहीं किया जा सकता है. स्थायी रूप से सभी डेटा खो जाएगा!"; +$LANG["text_edit_admin_menu_page"] = "आप नीचे अपनी सूची को संपादित कर सकते हैं. यह सुनिश्चित करने के लिए आप हमेशा सभी प्रपत्र उपकरण: निम्नलिखित पृष्ठों की आवश्यकता हैं फार्मों, ग्राहक, के भीतर उपलब्ध कार्यशीलता के लिए उपयोग किया है आपका खाता, मॉड्यूल, सेटिंग्स और लॉगआउट."; +$LANG["text_edit_client_menu_page"] = "इस विभाग की मदद से आप प्रत्येक उपयोगकर्ता के लिए बाईं नेविगेशन कॉलम को अनुकूलित. तुम बना सकते हैं के रूप में कई ग्राहक मेनू के रूप में आप चाहते हैं और आवंटित उनमें से एक के लिए किसी भी खाते. डिफ़ॉल्ट द्वारा दो मेनू: आप के लिए एक, प्रशासक, और सभी ग्राहक खातों के लिए एक हो. व्यवस्थापक खाते पर संशोधित की जा सकती नहीं हटाया."; +$LANG["text_edit_tab_summary"] = "यदि आप इस दृश्य टैब में फ़ील्ड समूह चाहते हैं, बस टैब पर नाम के नीचे दर्ज है. के बाद आप कर रहे हैं, फ़ील्ड में प्रत्येक फ़ील्ड समूह के लिए उपयुक्त टैब का चयन करें टैब."; +$LANG["text_edit_view_list_page"] = "यह टैब नियंत्रण जो क्षेत्रों प्रस्तुत लिस्टिंग पृष्ठ पर, स्तंभ, और उन क्षेत्रों के लिए कुछ अतिरिक्त सेटिंग्स के रूप में दिखाई देते हैं. नोट: हम अनुशंसा करते हैं आप अधिक नहीं की तुलना में 4 या दृश्य में सबसे महत्वपूर्ण क्षेत्रों में से 5 जोड़ें."; +$LANG["text_email_settings_intro"] = "इस पृष्ठ की मदद से आप की पहचान जो आपके प्रपत्र फ़ील्ड्स स्टोर ईमेल की और उनके इसी नाम. एक बार जब आप उन्हें यहाँ परिभाषित है, तुम उन्हें अपनी ईमेल में उपयोग कर सकते हैं प्राप्तकर्ताओं को टेम्पलेट के रूप में. यह खंड पूरी तरह से वैकल्पिक है."; +$LANG["text_email_tab_summary"] = "इस विभाग की मदद से आप ईमेल की किसी भी संख्या के निर्माण के लिए जब भी अपने फार्म जमा है भेजा है, और अन्य से चलाता है."; +$LANG["text_email_template_tab"] = "इस विभाग की मदद से आप यह निर्धारित क्या सामग्री ईमेल में प्रकट होता है. यदि आप केवल पाठ या ईमेल के रूप में अपना ईमेल भेजने के लिए, केवल उस अनुभाग के लिए मान दर्ज करें चाहते हैं. अगर तुम दोनों के लिए एक मान दर्ज करें, ईमेल दोनों स्वरूपों में भेजा जाएगा."; +$LANG["text_email_template_text_1"] = "वहाँ एक अपने फार्म, {\$FORMNAME} के माध्यम से प्रस्तुत किया गया है."; +$LANG["text_email_template_text_1_c"] = "वहाँ एक अपने फार्म के माध्यम से प्रस्तुत किया गया है, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "आपके सबमिशन के लिए धन्यवाद!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "त्रुटि संदेश दिखाने के लिए यदि फ़ील्ड सत्यापन विफल रहता है"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "बाहरी रूपों रूपों है कि पहले से ही अपनी वेबसाइट पर, या वेब पर कहीं न कहीं मौजूद हैं. इस विकल्प का चयन करें यदि आप अपने खुद के रूप है जो आप प्रपत्र उपकरण के साथ एकीकृत करना चाहते है."; +$LANG["text_fields_tab_summary"] = "यह पृष्ठ अपने प्रपत्र फ़ील्ड्स के सभी सूचीबद्ध करता है. यह नियंत्रण करने के लिए कि वे कैसे दिखाई देते हैं जब ब्राउज़िंग प्रस्तुतियाँ देखने के लिए दृश्य टैब. इस पेज पर किसी फ़ील्ड हटाना यह सभी प्रस्तुतियाँ से हटाना होगा, तो कृपया सावधान रहना!"; +$LANG["text_file_extension_info"] = "दर्ज करें अल्पविराम से अलग एक्सटेंशन फ़ाइल (, gif, png) jpg जैसे या खाली छोड़ने के लिए किसी भी फ़ाइल प्रकार अनुमति देते हैं."; +$LANG["text_file_field_placeholders_info"] = "फ़ाइल क्षेत्रों दो विशेष placeholders: FILEURL और FILENAME है. FILEURL फ़ाइल को पूर्ण यूआरएल है, तो आप सीधे आपके ईमेल में लिंक कर सकते हैं; FILENAME बस फाइल का नाम है."; +$LANG["text_filters_page"] = "केवल वे ही लोग पर्चे जमा होना है कि आप इस नियम को ध्यान में दिखाई देगा नीचे परिभाषित मिलते हैं."; +$LANG["text_filters_tips"] = "कैसे प्रस्तुत करने के लिए फ़िल्टर का उपयोग करने के लिए उपयोगकर्ता प्रलेखन पर युक्तियाँ देखें."; +$LANG["text_forgot_password"] = "कोई बात नहीं. बस नीचे अपना उपयोगकर्ता नाम और अपनी प्रवेश जानकारी दर्ज करें फ़ाइल पर अपने ईमेल पते पर भेजा जाएगा. यदि आप अपना उपयोगकर्ता नाम भूल गए हैं, तो कृपया में साइट एडमिनिस्ट्रेटर {\$site_admin_email} ईमेल करें."; +$LANG["text_form_contains_file_fields"] = "इस फार्म का एक या एक से अधिक क्षेत्रों अपलोड फ़ाइल मौजूद है:"; +$LANG["text_form_placeholder_info"] = "निम्नलिखित प्लेसहोल्डर्स किसी भी ईमेल टेम्पलेट और भाषा प्लेसहोल्डर क्षेत्र में इस्तेमाल किया जा सकता है, की परवाह किए बिना जो कुछ भी देखें ईमेल टेम्पलेट को सौंपा है. प्रश्न प्लेसहोल्डर्स विशेष रूप सवाल कर रहे हैं, उत्तर प्लेसहोल्डर्स प्रत्येक प्रश्न के जवाब हैं."; +$LANG["text_form_submission_date_placeholder"] = "तारीख जब प्रस्तुत किया गया था."; +$LANG["text_form_tools_form_url"] = "फार्म का पूरा URL. यह केवल बाहरी प्रपत्रों के लिए एक मूल्य है."; +$LANG["text_form_tools_login_url"] = "प्रपत्र उपकरण के लिए लॉगिन URL."; +$LANG["text_form_view_permission_info_admin"] = "नोट: इस प्रपत्र वर्तमान प्रशासक का उपयोग प्रकार है, तो ग्राहक खातों में से कोई भी इस दृश्य को देखने के लिए सक्षम हो जाएगा."; +$LANG["text_form_view_permission_info_private"] = "नोट: इस प्रपत्र वर्तमान में निजी उपयोग प्रकार है तो यहाँ सार्वजनिक और निजी विकल्प है कि ग्राहकों के सबसेट तक ही सीमित रहेगा."; +$LANG["text_ft_installed"] = "बधाई हो, प्रपत्र उपकरण सफलतापूर्वक स्थापित किया गया है!"; +$LANG["text_global_placeholder_info"] = "इन placeholders किसी टेम्पलेट और किसी भी रूप में इस्तेमाल किया जा सकता है."; +$LANG["text_group_name_explanation"] = "खेतों के लिए फार्म जोड़ें प्रक्रिया के माध्यम से कहा, इस मान से पहले जो कुछ भी क्षेत्र के प्रदर्शन को पाठ में भर जाता है मूल्य का उपयोग करता है. तुम इसे बदलना चाहते हैं बेहतर सामग्री चिह्नित कर सकते हैं."; +$LANG["text_install_create_config_file"] = "फार्म उपकरण स्टोर अपने सर्वर और एक फाइल में डेटाबेस सेटिंग्स config.php कहा जाता है, आपकी विश्व / में पाया / फ़ोल्डर. पर क्लिक करें "फाइल" बटन बनाएँ के लिए स्वचालित रूप से आपके सर्वर पर फ़ाइल उत्पन्न करते हैं."; +$LANG["text_install_create_database_tables"] = "अब हमें फार्म उपकरण डाटाबेस टेबल बनाने जा रहे हैं. इस कदम डेटाबेस स्वयं की आवश्यकता के लिए पहले से ही निर्मित किया गया है. यदि आप सुनिश्चित नहीं हैं कि यह कैसे करना है, तो कृपया अपने होस्टिंग प्रदाता से संपर्क करें."; +$LANG["text_install_db_tables_error_tip_1"] = ""आमतौर पर अज्ञात MySQL सर्वर मेजबान" का मतलब है कि होस्टनाम आपके द्वारा प्रदान गलत है. शायद "लोकलहोस्ट" - यह एक आम तरीका है एक वेब सर्वर पर "स्थानीय डेटाबेस" का उल्लेख है कि इस सेटिंग की कोशिश करो."; +$LANG["text_install_db_tables_error_tip_2"] = ""गर्तिका के माध्यम से" स्थानीय MySQL सर्वर से कनेक्ट नहीं कर सकते डेटाबेस होस्टनाम क्षेत्र का अर्थ है फिर गलत है."; +$LANG["text_install_db_tables_error_tip_3"] = ""प्रयोक्ता के लिए प्रवेश से वंचित:" मतलब यह है कि आपके उपयोगकर्ता नाम / कूटशब्द संयोजन के साथ एक समस्या है."; +$LANG["text_install_db_tables_error_tip_4"] = ""प्रयोक्ता के लिए प्रवेश से वंचित: डेटाबेस के लिए ... ... कि यद्यपि अपने उपयोगकर्ता नाम और पासवर्ड की आपूर्ति सही है, तो उस खाते के साथ उस विशेष डेटाबेस से कनेक्ट करने में असमर्थ था अर्थ है '. इसका मतलब यह कर सकते हैं कि या तो अपने डेटाबेस का नाम गलत है, या कि है कि डाटाबेस के साथ इस उपयोगकर्ता खाते जुड़ा नहीं है."; +$LANG["text_install_email_content_text"] = "हमारी ऑनलाइन प्रलेखन (https://docs.formtools.org) और ट्यूटोरियल (https://docs.formtools.org/tutorials) सहित, आरंभ करने में आपकी सहायता के लिए हमारी वेबसाइट पर बहुत से संसाधन हैं। अगर आपको लगता है कि आप अटक गए हैं या कोई सवाल है, तो github (https://github.com/formtools/core/issues/) पर एक प्रश्न पूछें।"; +$LANG["text_install_form_tools_server_not_supported"] = "क्षमा करें, प्रपत्र उपकरण के लिए अपने सर्वर पर चलाने के लिए सक्षम नहीं हो जाएगा . कृपया न्यूनतम आवश्यकताओं के लिए यहाँ क्लिक करें."; +$LANG["text_install_system_check"] = "यह पृष्ठ आपके सुनिश्चित करने के लिए यह फार्म उपकरण चलाने में समर्थ है सिस्टम पर कुछ परीक्षण चलाते हैं."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "नहीं अपनी साइट पर कहीं - आंतरिक रूपों फार्म उपकरण के भीतर ही मौजूद हैं. केवल प्रपत्र उपकरण उपयोगकर्ता खातों के फार्म करने के लिए उपयोग होगा. इस विकल्प का चयन करें यदि आप किसी मौजूदा प्रपत्र नहीं है."; +$LANG["text_internal_form_intro"] = "नीचे दिए गए फार्म का प्रयोग करने के लिए एक नई आंतरिक फार्म बनाने के लिए. प्रपत्र फ़ील्ड्स की संख्या और सामग्री सहित सभी सेटिंग्स, और परिवर्तित किया जा सकता है बाद में कॉन्फ़िगर."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "आदेश में और प्रवेश के लिए फार्म उपकरण उपयोग करते हैं, आप अपने ब्राउज़र में जावास्क्रिप्ट सक्रिय होना चाहिए. कृपया इसे अब, अपने ब्राउज़र में ताज़ा करें क्लिक करें और सक्षम करें."; +$LANG["text_last_modified_date_explanation_c"] = "पिछली बार इस प्रस्तुत संशोधित किया गया था. नई प्रस्तुतियाँ के लिए, इस रूप में ही है:"; +$LANG["text_limit_email_content_desc"] = "यह विकल्प केवल HTML और पाठ समझदार लूप्स के साथ सामग्री उत्पन्न के लिए काम करता है."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(केवल एक या एक से अधिक परिभाषित फ़िल्टर के साथ दर्शाव सूची)"; +$LANG["text_log_in_to_ft"] = "फार्म उपकरण में प्रवेश करें"; +$LANG["text_login"] = "कृपया नीचे में प्रवेश के लिए program_name \$ () प्रशासन पैनल का उपयोग. यदि आप अपना पासवर्ड, यहाँ क्लिक करें भूल गए हैं."; +$LANG["text_login_info"] = "के रूप में अनुरोध किया, यहाँ अपनी प्रवेश जानकारी है."; +$LANG["text_name_of_form"] = "फार्म का नाम है."; +$LANG["text_no_clients"] = "वर्तमान में डेटाबेस में कोई ग्राहक. एक नए ग्राहक के खाते पर क्लिक करें जोड़ने के नीचे ग्राहकों का बटन जोड़ें."; +$LANG["text_no_clients_found"] = "कोई ग्राहक नहीं पाए गए. कोशिश आपके खोज मानदंडों का विस्तार."; +$LANG["text_no_fields_in_view"] = "यह दृश्य किसी भी क्षेत्र में नहीं है. नीचे दिए गए लिंक पर क्लिक करें."; +$LANG["text_no_forms"] = "वर्तमान में डेटाबेस में कोई रूपों. एक नए रूप में, क्लिक करें नीचे फार्म बटन जोड़ें."; +$LANG["text_no_forms_found"] = "कोई रूपों पाए गए."; +$LANG["text_no_forms_found_search"] = "कोई रूपों पाए गए. आपके खोज मानदंडों को व्यापक बनाने की कोशिश करो."; +$LANG["text_no_modules_found"] = "मॉड्यूल नहीं पाए गए. कोशिश आपके खोज मानदंडों का विस्तार."; +$LANG["text_no_recipients_added"] = "कोई प्राप्तकर्ता जोड़ दिया गया है."; +$LANG["text_no_search_results"] = "इस खोज विकल्पों के साथ कोई परिणाम नहीं / देखें हैं."; +$LANG["text_no_submissions_found"] = "क्षमा करें, कोई प्रस्तुतियाँ पाए गए."; +$LANG["text_no_themes"] = "आप किसी भी विषयों को परिभाषित नहीं है. नीचे बटन करने के लिए अपने विषय सूची को ताज़ा करने के लिए , या जांच करने के लिए क्लिक करें प्रपत्र उपकरण उपयोगकर्ता प्रलेखन विषयों को जोड़ने के बारे में जानकारी के लिए."; +$LANG["text_non_deletable_fields"] = "यह क्षेत्र कोर स्क्रिप्ट के द्वारा प्रयोग किया जाता है और संपादित नहीं किया जा सकता है या incompatibilities के कारण के बिना नष्ट कर दिया. यदि आप फ़ील्ड प्रकार में परिवर्तन करना चाहते हैं, यह की एक प्रतिलिपि बनाने और संपादित प्रतिलिपि."; +$LANG["text_option_list_group_explanation"] = "यदि यह चयनित है, यह करने के लिए अपने विकल्पों का समूह देता है. समूहों प्रदर्शित कर रहे हैं कि कैसे इस विकल्प सूची का उपयोग कर फ़ील्ड प्रकार पर निर्भर करता है."; +$LANG["text_option_list_page"] = "रेडियो बटन, चेक बॉक्स, dropdowns और बहु ​​का चयन करें ड्रॉपडाउन क्षेत्रों सभी जिसमें से वे एक या अधिक आइटम्स का चयन कर सकते हैं कई विकल्प के साथ उपयोगकर्ता प्रदान करते हैं. प्रपत्र उपकरण में, इन विकल्प सूचियाँ के रूप में जाना जाता है. आम तौर पर, इन स्वचालित रूप से के द्वारा बनाई गई जोड़ें बाहरी फॉर्म प्रक्रिया है, लेकिन आप मैन्युअल रूप से जोड़ या संपादित कर सकते हैं अपने विकल्प सूची नीचे अगर आपके प्रपत्र सामग्री में परिवर्तन आप या क्षेत्रों है कि केवल आंतरिक रूप से उपयोग किया जाता है का निर्माण."; +$LANG["text_option_list_used_by_fields"] = "यह विकल्प सूची एकाधिक प्रपत्र फ़ील्ड्स के द्वारा प्रयोग किया जाता है. यदि आप नीचे दी गई जानकारी अद्यतन करने के लिए, यह के सभी क्षेत्रों (देखें के लिए बदल जाएगा प्रपत्र फ़ील्ड्स टैब क्षेत्रों की सूची देखने के लिए). यदि आप एक के लिए मान, या क्षेत्रों है कि वर्तमान में आवंटित कर रहे हैं की एक सबसेट को अद्यतन करना चाहते हैं हैं, यहाँ क्लिक करने के लिए यह एक के रूप में एक ही मूल्यों के साथ एक नया विकल्प सूची बनाने के लिए. तब आप प्रपत्र फ़ील्ड्स नए समूह के लिए इच्छित असाइन कर सकते हैं."; +$LANG["text_public_form_omit_list_page"] = "सार्वजनिक रूप तुम्हें दे दे सभी ग्राहक खातों उन्हें मैन्युअल रूप से उन्हें एक ग्राहक आवंटित बिना उपयोग के लाभ. इस पृष्ठ की मदद से आप उन ग्राहकों को जो इस प्रपत्र का उपयोग नहीं कर सकते, भले ही सार्वजनिक रूप के रूप में चिह्नित है तुच्छ."; +$LANG["text_public_view_omit_list_page"] = "सार्वजनिक दर्शाव तुम्हें दे दे सभी ग्राहक खातों उन्हें मैन्युअल रूप से उन्हें एक ग्राहक आवंटित बिना उपयोग के लाभ. इस पृष्ठ की मदद से आप उन ग्राहकों को जो इस विशेष दृश्य का उपयोग नहीं कर सकते हैं तुच्छ."; +$LANG["text_reference_tab_info"] = "यह पृष्ठ सभी प्लेसहोल्डर्स अपने फार्म के लिए उपलब्ध को सूचीबद्ध करता है. प्लेसहोल्डर तार जो ईमेल टेम्पलेट्स में इस्तेमाल किया जा सकता है, और एक विशेष प्लेसहोल्डर चिह्न के साथ चिह्नित क्षेत्रों . जब एक क्षेत्र में प्रवेश किया, वे गतिशील रूप से उचित मूल्य जब फ़ील्ड देखी गयी है या ईमेल भेजा है परिवर्तित कर रहे हैं."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "समीक्षा उपयोगकर्ता प्रलेखन"; +$LANG["text_send_email_from_edit_submission_page"] = "शामिल विकल्प को संपादित प्रस्तुत पृष्ठ से इस ईमेल भेजें"; +$LANG["text_smart_fill_option_list_problem"] = "हम अपने क्षेत्र विकल्प भरें स्मार्ट में असमर्थ थे. हालांकि, एक विकल्प के रूप में, आप नीचे दिए गए क्षेत्र में आपके प्रपत्र पृष्ठ की एक प्रतिलिपि अपलोड की कोशिश कर सकते हैं. नोट: कच्चे PHP पृष्ठों (या अन्य सर्वर साइड कोड) अपलोड नहीं - बस HTML संस्करण अपलोड. इस मिल देखने के लिए, है और अपने वेब ब्राउज़र से पेज को सहेजने."; +$LANG["text_submission_ip_address"] = "आईपी उपयोगकर्ता जो प्रस्तुत किए का पता."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "या तो अपने आप को देखने या भेज एक इस ईमेल से उत्पन्न टेम्पलेट ईमेल के नीचे के फार्म का उपयोग करें. ईमेल केवल नीचे निर्दिष्ट ईमेल भेजा है,, मुख्य सीसी और बीसीसी ईमेल पते प्राप्तकर्ताओं परीक्षण करते हुए की अनदेखी कर रहे हैं."; +$LANG["text_test_email_templates_no_submissions"] = "आदेश में अपने ईमेल जाँच के लिए टेम्पलेट्स, तो आपको पहले कम से कम एक फार्म के माध्यम से प्रस्तुत करना होगा."; +$LANG["text_theme_page_intro"] = "इस पृष्ठ को अपने विषय के सभी सूचीबद्ध करता है. थम्बनेल पर क्लिक करें है थीम शैलियों का एक बड़ा उदाहरण देखने के लिए. "सक्षम" चेकबॉक्स को निर्धारित करता है या नहीं है कि विषय ग्राहकों द्वारा चुनी जा सकती है. सभी उपलब्ध विषयों को ब्राउज़ करें, प्रपत्र उपकरण वेबसाइट पर जाएँ."; +$LANG["text_tutorial_adding_first_form"] = "ट्यूटोरियल: अपने फार्म को जोड़ने से पहले!"; +$LANG["text_unique_submission_id"] = "अद्वितीय प्रस्तुत आईडी."; +$LANG["text_unused_option_list"] = "यह विकल्प सूची में किसी प्रपत्र फ़ील्ड्स द्वारा नहीं किया जा रहा है."; +$LANG["text_upgraded"] = "अपने स्थापना \$ (को उन्नत किया गया है {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "यह विकल्प सूची में निम्नलिखित क्षेत्रों द्वारा प्रयोग किया जाता है."; +$LANG["text_view_fields_info"] = "यह टैब नियंत्रित क्षेत्रों में जो बताते हैं जब इस दृश्य में प्रस्तुत संपादन, उनके आदेश और चाहे वे संपादन या नहीं कर रहे हैं."; +$LANG["text_view_tab_summary"] = "यह टैब आप समूह के लिए अलग अलग तरीकों से बना सकते हैं और अपने डेटा को व्यवस्थित करने देता है. दृश्य चलो आप अपने प्रपत्र डेटा के कस्टम सबसेट बना यह प्रबंधनीय विखंडू में विभाजित है, और सीमा ग्राहकों क्या देख या संपादित कर सकते हैं."; +$LANG["validation_account_disabled"] = "क्षमा करें, आपका खाता अक्षम कर दिया गया है."; +$LANG["validation_account_not_recognized"] = "क्षमा करें, कि उपयोगकर्ता नाम पहचाना नहीं है."; +$LANG["validation_account_not_recognized_info"] = "क्षमा करें, कि उपयोगकर्ता नाम नहीं मिला. कृपया पुन: प्रयास करें, या नीचे दिए पते पर साइट एडमिनिस्ट्रेटर से सम्पर्क करें."; +$LANG["validation_account_pending"] = "आपके उपयोगकर्ता खाते में एक व्यवस्थापक द्वारा अनुमोदन लंबित है."; +$LANG["validation_check_delete_client"] = "क्या आप सुनिश्चित हैं कि आप इस ग्राहक के खाते को नष्ट करना चाहते हैं?"; +$LANG["validation_client_password_missing_number"] = "ग्राहक पासवर्ड कम से कम एक नंबर (0-9) होना चाहिए."; +$LANG["validation_client_password_missing_special_char"] = "ग्राहक कूटशब्द {\$chars} होना चाहिए की कम से कम एक निम्न वर्ण"; +$LANG["validation_client_password_missing_uppercase"] = "ग्राहक पासवर्ड कम से कम एक uppercase पत्र होना चाहिए."; +$LANG["validation_client_password_too_short"] = "ग्राहक की जरूरत लंबे समय पासवर्ड वर्णों {\$number} कम से कम"; +$LANG["validation_col_name_is_reserved_word"] = "क्षमा करें, यह कॉलम नाम MySQL डाटाबेस में आरक्षित काम है. कृपया इसे नाम बदलने और!"; +$LANG["validation_db_name"] = "डेटाबेस नामों में अवधि या स्लेश नहीं हो सकते हैं।"; +$LANG["validation_db_not_updated_invalid_input"] = "डाटाबेस को अद्यतन नहीं किया जा सका. कृपया मान आपके द्वारा दर्ज देखने की जांच मान्य हैं."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "क्षमा करें, डिफ़ॉल्ट व्यवस्थापक और ग्राहक विषयों हमेशा सक्षम होना चाहिए."; +$LANG["validation_default_phone_num_required"] = "केवल संख्या - <b> { \$ क्षेत्र} </ b> फ़ील्ड के लिए पूर्ण टेलीफोन संख्या में भरें."; +$LANG["validation_default_rule_alpha"] = "कृपया केवल <b> {क्षेत्र \$ } </ b> फ़ील्ड के लिए अक्षरों और संख्याओं को दर्ज करें."; +$LANG["validation_default_rule_letters_only"] = "<b> {क्षेत्र \$ } </ b> फ़ील्ड के लिए अक्षरों दर्ज करें केवल कृपया."; +$LANG["validation_default_rule_numbers_only"] = "कृपया केवल <b> {क्षेत्र \$ } </ b> फ़ील्ड के लिए संख्या दर्ज करें."; +$LANG["validation_default_rule_required"] = "<b> {क्षेत्र \$ } </ b> फ़ील्ड के लिए एक मूल्य दर्ज करें."; +$LANG["validation_default_rule_valid_email"] = "<b> {\$ क्षेत्र} </ b> फ़ील्ड के लिए एक मान्य ईमेल पता दर्ज करें."; +$LANG["validation_delete_form_confirm"] = "कृपया बॉक्स की जांच के लिए पुष्टि करें कि आप इस फ़ॉर्म को हटाना चाहते हैं."; +$LANG["validation_delete_non_empty_option_list"] = "चेतावनी! यह विकल्प सूची से एक या एक से अधिक प्रपत्र फ़ील्ड्स के द्वारा प्रयोग किया जाता है. इसे हटाने से उन क्षेत्रों के ठीक से काम करने के लिए संघर्ष कर देगा."; +$LANG["validation_display_names_incomplete"] = "कृपया सभी प्रदर्शित नाम, या क्लिक करें स्मार्ट भरने के लिए उन्हें गतिशील रूप में प्रवेश के लिए एक विकल्प मान दर्ज करें."; +$LANG["validation_duplicate_form_field_name"] = "आप कई क्षेत्रों में समान फ़ील्ड के नाम के साथ नहीं हो सकता."; +$LANG["validation_email_not_found_or_invalid"] = "क्षमा करें, आपके खाते से संबंधित या तो मौजूद नहीं है ईमेल अवैध है."; +$LANG["validation_folder_invalid_permissions"] = "आदेश में इस परीक्षण चलाने के लिए अनुमति की आवश्यकता अपलोड फ़ोल्डर पर सेट करने के लिए पढ़ने और फ़ाइलें (Unix पर 777) लिखने के लिए अनुमति देते हैं."; +$LANG["validation_folder_not_writable"] = "इस फ़ोल्डर लेखनीय नहीं है."; +$LANG["validation_internal_form_too_many_fields"] = "क्षमा करें, आप केवल कम 1000 या फ़ील्ड के साथ प्रपत्र बनाया जा सकता है."; +$LANG["validation_invalid_admin_email"] = "कृपया एक वैध है adminstrator ईमेल पता दर्ज करें."; +$LANG["validation_invalid_admin_username"] = "आपका उपयोगकर्ता नाम केवल अल्फ़ान्यूमेरिक वर्ण (az और 0-9)."; +$LANG["validation_invalid_client_username"] = "ग्राहक उपयोगकर्ता नाम केवल अक्षरांकीय अक्षर AZ (और 0-9) से मिलकर कर सकते हैं."; +$LANG["validation_invalid_client_username2"] = "क्षमा करें, उपयोगकर्ता नाम है केवल अक्षर, संख्या और जांच चरित्र हो सकता है. कृपया एक नया उपयोगकर्ता नाम दर्ज करें."; +$LANG["validation_invalid_column_name"] = "स्तंभ नाम केवल अक्षरांकीय (AZ, 0-9). स्तंभ नाम की जाँच करें."; +$LANG["validation_invalid_custom_from_email"] = "कृपया 'से ईमेल पता एक मान्य कस्टम' दर्ज करें."; +$LANG["validation_invalid_custom_reply_to_email"] = "कृपया प्रवेश एक वैध 'कस्टम उत्तर दें' के लिए ईमेल पता."; +$LANG["validation_invalid_default_sessions_timeout"] = "कृपया एक वैध मूल्य (डिफ़ॉल्ट सत्र मध्यांतर के लिए एक संख्या) दर्ज करें."; +$LANG["validation_invalid_email"] = "कृपया एक मान्य ईमेल पता दर्ज करें."; +$LANG["validation_invalid_email_id"] = "आईडी क्षमा करें, कि एक अवैध ईमेल है."; +$LANG["validation_invalid_folder"] = "क्षमा करें, यह एक फ़ोल्डर मान्य प्रतीत नहीं होता."; +$LANG["validation_invalid_form_field_names"] = "प्रपत्र फ़ील्ड्स केवल अक्षरांकीय जा सकता है रेखांकित (AZ, 0-9, _), कोई रिक्त स्थान के साथ."; +$LANG["validation_invalid_num_clients_per_page"] = "कृपया केवल मैदान प्रति पेज नंबर में ग्राहकों की संख्या दर्ज करें."; +$LANG["validation_invalid_num_emails_per_page"] = "कृपया केवल प्रति पृष्ठ ईमेल के लिए अंक दर्ज करें."; +$LANG["validation_invalid_num_form_fields"] = "कृपया केवल फ़ील्ड फ़ील्ड की संख्या में संख्या दर्ज करें."; +$LANG["validation_invalid_num_forms_per_page"] = "कृपया केवल प्रति अंक रूपों में संख्या पेज क्षेत्र दर्ज करें."; +$LANG["validation_invalid_num_menus_per_page"] = "कृपया केवल प्रति पृष्ठ मेनू के लिए अंक दर्ज करें."; +$LANG["validation_invalid_num_modules_per_page"] = "कृपया केवल अंक मॉड्यूल में प्रति पेज क्षेत्र संख्या दर्ज करें."; +$LANG["validation_invalid_num_option_lists_per_page"] = "केवल पृष्ठ फ़ील्ड प्रति अंक विकल्प सूचियों में नंबर दर्ज करें."; +$LANG["validation_invalid_num_submissions_per_page"] = "कृपया प्रति पृष्ठ प्रस्तुतियाँ के एक वैध संख्या दर्ज करें."; +$LANG["validation_invalid_sessions_timeout"] = "कृपया एक वैध सत्र आउटः integers दर्ज करें (केवल!)."; +$LANG["validation_invalid_tab_assign_values"] = "कृपया केवल संख्या दर्ज करें 'से' और 'को खेत."; +$LANG["validation_invalid_table_prefix"] = "कृपया में प्रवेश एक डेटाबेस उपसर्ग पत्र के होते हैं और चरित्र केवल अंडरस्कोर."; +$LANG["validation_invalid_upload_folder"] = "PHP की आपके सर्वर अधिष्ठापन upload_tmp_dir मूल्य के लिए एक अवैध स्थापना की है. एक मान्य फ़ोल्डर "{\$upload_folder}" नहीं है."; +$LANG["validation_invalid_url"] = "कृपया एक मान्य URL दर्ज करें."; +$LANG["validation_invalid_username"] = "अपना उपयोगकर्ता नाम केवल अक्षरांकीय अक्षर AZ (और 0-9) से मिलकर कर सकते हैं."; +$LANG["validation_is_form_active"] = "कृपया संकेत मिलता है कि फार्म का है या नहीं सक्रिय है."; +$LANG["validation_menu_name_taken"] = "क्षमा करें, यह मेनू का नाम पहले ही लिया जाता है. कृपया एक नया नाम का चयन करें."; +$LANG["validation_modules_search_no_status"] = "कृपया या तो सक्षम या अक्षम जांचपेटी चुनें."; +$LANG["validation_no_access_type"] = "कृपया प्रकार का उपयोग करें."; +$LANG["validation_no_account_logout_url"] = "कृपया अपने लॉगआउट URL दर्ज करें."; +$LANG["validation_no_account_password_confirmed"] = "कृपया फिर से अपना नया पासवर्ड दर्ज करें."; +$LANG["validation_no_account_password_confirmed2"] = "कृपया फिर से नया पासवर्ड दर्ज करें."; +$LANG["validation_no_admin_email"] = "कृपया व्यवस्थापक की ईमेल पता दर्ज करें."; +$LANG["validation_no_admin_theme"] = "कृपया व्यवस्थापक खाते के लिए विषय का चयन करें."; +$LANG["validation_no_admin_theme_swatch"] = "व्यवस्थापक विषय के लिए एक नमूना का चयन करें."; +$LANG["validation_no_client_email"] = "कृपया ग्राहक का ईमेल पता दर्ज करें."; +$LANG["validation_no_client_first_name"] = "कृपया ग्राहक के प्रथम नाम दर्ज करें."; +$LANG["validation_no_client_last_name"] = "कृपया ग्राहक के अंतिम नाम दर्ज करें."; +$LANG["validation_no_client_login_page"] = "कृपया संकेत मिलता है जो पृष्ठ ग्राहक जब वे अंदर प्रवेश करने पर पुनः निर्देशित किया जाना चाहिए"; +$LANG["validation_no_client_password"] = "कृपया ग्राहक पासवर्ड दर्ज करें."; +$LANG["validation_no_client_theme_swatch"] = "ग्राहक खातों के लिए एक डिफ़ॉल्ट पैवंद का चयन करें."; +$LANG["validation_no_client_username"] = "कृपया ग्राहक उपयोगकर्ता नाम दर्ज करें."; +$LANG["validation_no_column_name"] = "सभी स्तंभ नाम दर्ज करें, या स्मार्ट भरण बटन पर क्लिक करें को स्वचालित रूप से उन्हें भरने."; +$LANG["validation_no_column_selected"] = "कृपया कम से कम एक क्षेत्र को चुनने के लिए प्रस्तुत लिस्टिंग के पृष्ठ पर एक स्तम्भ के रूप में दिखाई देते हैं."; +$LANG["validation_no_custom_from_email"] = "कृपया प्रवेश 'से ईमेल पते' कस्टम."; +$LANG["validation_no_custom_recipient_email"] = "कृपया कस्टम प्राप्तकर्ता ईमेल पता दर्ज करें."; +$LANG["validation_no_custom_reply_to_email"] = "कृपया प्रवेश 'कस्टम उत्तर दें' के लिए ईमेल पता."; +$LANG["validation_no_date_format"] = "कृपया कोई तिथि प्रारूप दर्ज करें."; +$LANG["validation_no_db_column_single"] = "डेटाबेस स्तंभ नाम दर्ज करें."; +$LANG["validation_no_db_hostname"] = "कृपया डेटाबेस hostname दर्ज करें."; +$LANG["validation_no_db_name"] = "कृपया डेटाबेस नाम दर्ज करें."; +$LANG["validation_no_db_username"] = "कृपया डेटाबेस खाते का उपयोगकर्ता नाम दर्ज करें."; +$LANG["validation_no_default_client_theme"] = "कृपया सभी नए ग्राहक खातों के लिए डिफ़ॉल्ट थीम चुनें."; +$LANG["validation_no_default_language"] = "कृपया फार्म उपकरण की स्थापना के लिए अपनी डिफ़ॉल्ट भाषा चुनें."; +$LANG["validation_no_default_sessions_timeout"] = "कृपया उपयोगकर्ता खातों के लिए डिफ़ॉल्ट सत्र आउटः दर्ज करें."; +$LANG["validation_no_display_text"] = "प्रत्येक फ़ील्ड के लिए प्रदर्शित पाठ दर्ज करें."; +$LANG["validation_no_display_text_single"] = "प्रदर्शन पाठ मान दर्ज करें."; +$LANG["validation_no_edit_submission_page_label"] = "कृपया संपादित करें प्रस्तुत पृष्ठ लेबल दर्ज करें."; +$LANG["validation_no_email"] = "कृपया अपना ईमेल पता दर्ज करें."; +$LANG["validation_no_email_config_field"] = "कृपया जो फार्म क्षेत्र निर्दिष्ट ईमेल क्षेत्र है."; +$LANG["validation_no_email_content"] = "कृपया प्रारूप के कम से कम एक ईमेल के लिए सामग्री दर्ज HTML (या पाठ)."; +$LANG["validation_no_email_from_field"] = "कृपया 'से क्षेत्र' ईमेल करें."; +$LANG["validation_no_email_template_name"] = "कृपया प्रवेश ईमेल टेम्पलेट के नाम."; +$LANG["validation_no_email_template_view_id"] = "कृपया देखें, जो इस ईमेल मैप किया जाना चाहिए टेम्पलेट का चयन करें."; +$LANG["validation_no_email_template_view_mapping_value"] = "कृपया संकेत मिलता है जब ईमेल भेजा जाना चाहिए."; +$LANG["validation_no_enabled_themes"] = "कृपया सुनिश्चित करें कि कम से कम एक विषय सक्षम है."; +$LANG["validation_no_first_name"] = "कृपया अपने पहले नाम दर्ज करें."; +$LANG["validation_no_form_field_name"] = "कृपया सभी फार्म क्षेत्र के नाम दर्ज करें."; +$LANG["validation_no_form_field_single"] = "प्रपत्र फ़ील्ड मान दर्ज करें."; +$LANG["validation_no_form_id"] = "फार्म आईडी निर्दिष्ट नहीं थी. कृपया लॉग इन करें और फिर कोशिश करें."; +$LANG["validation_no_form_name"] = "कृपया फार्म का नाम दर्ज करें."; +$LANG["validation_no_form_url"] = "कृपया फार्म का URL दर्ज करें."; +$LANG["validation_no_last_name"] = "कृपया अपने अंतिम नाम दर्ज करें."; +$LANG["validation_no_login_page"] = "कृपया जो पृष्ठ आप चाहेंगे संकेत मिलता है एक बार जब आप प्रवेश के लिए भेजा जाएगा अंदर"; +$LANG["validation_no_logout_url"] = "कृपया लॉगआउट URL दर्ज करें."; +$LANG["validation_no_main_email_recipient"] = "कृपया कम से कम एक मुख्य ईमेल प्राप्तकर्ता दर्ज करें अर्थात् नहीं (एक सीसी या बीसीसी)."; +$LANG["validation_no_menu"] = "कृपया इस प्रयोक्ता के खाते के लिए एक मेनू का चयन करें."; +$LANG["validation_no_menu_id"] = "कृपया एक मेनू का चयन करें."; +$LANG["validation_no_num_clients_per_page"] = "कृपया प्रति पृष्ठ ग्राहक खातों की संख्या दर्ज करें."; +$LANG["validation_no_num_emails_per_page"] = "कृपया प्रति पृष्ठ की सूची पर ईमेल की संख्या दर्ज करें."; +$LANG["validation_no_num_form_fields"] = "अपने प्रपत्र के लिए क्षेत्रों की संख्या दर्ज करें."; +$LANG["validation_no_num_forms_per_page"] = "कृपया प्रति पृष्ठ रूपों की संख्या दर्ज करें."; +$LANG["validation_no_num_menus_per_page"] = "कृपया प्रति पृष्ठ की सूची पर मेनू की संख्या दर्ज करें."; +$LANG["validation_no_num_modules_per_page"] = "कृपया प्रति पृष्ठ मॉड्यूल की संख्या दर्ज करें."; +$LANG["validation_no_num_option_lists_per_page"] = "प्रति पृष्ठ विकल्प सूचियों की संख्या दर्ज करें."; +$LANG["validation_no_num_submissions_per_page"] = "कृपया प्रस्तुतियाँ की संख्या में प्रवेश के लिए प्रति पृष्ठ प्रदर्शन."; +$LANG["validation_no_option_list_name"] = "विकल्प सूची का नाम दर्ज करें."; +$LANG["validation_no_page_titles"] = "कृपया उपयोगकर्ता खातों के लिए डिफ़ॉल्ट पृष्ठ शीर्षक दर्ज करें."; +$LANG["validation_no_password"] = "कृपया अपना पासवर्ड दर्ज करें."; +$LANG["validation_no_program_name"] = "कृपया प्रोग्राम नाम दर्ज करें."; +$LANG["validation_no_second_password"] = "कृपया अपना पासवर्ड पुनः दर्ज करें."; +$LANG["validation_no_sessions_timeout"] = "कृपया सत्र आउटः दर्ज करें."; +$LANG["validation_no_smart_fill_values"] = "कृपया फार्म क्षेत्र का नाम दर्ज करें और फार्म का URL."; +$LANG["validation_no_table_prefix"] = "एक डेटाबेस उपसर्ग दर्ज करें."; +$LANG["validation_no_tabs_defined"] = "कोई परिभाषित टैब"; +$LANG["validation_no_test_email_recipient"] = "कृपया हमें परीक्षण ईमेल भेजना चाहिए, जहां के ईमेल पता दर्ज करें."; +$LANG["validation_no_test_email_submission_id"] = "कृपया प्रस्तुत सङ्ख्या प्रविष्ट करें."; +$LANG["validation_no_theme"] = "कृपया एक विषय चुनें."; +$LANG["validation_no_theme_swatch"] = "चयनित विषय के लिए एक नमूना का चयन करें."; +$LANG["validation_no_timezone_offset"] = "कृपया ऑफसेट समयक्षेत्र दर्ज करें."; +$LANG["validation_no_titles"] = "कृपया पृष्ठ शीर्षक दर्ज करें."; +$LANG["validation_no_two_column_names"] = "क्षमा करें, आप एक ही डाटाबेस कॉलम नाम दो बार प्रवेश नहीं कर सकते हैं."; +$LANG["validation_no_ui_language"] = "कृपया अंतरफलक के लिए एक भाषा का चयन करें."; +$LANG["validation_no_url"] = "कृपया एक URL दर्ज करें."; +$LANG["validation_no_username"] = "कृपया अपना उपयोगकर्ता नाम दर्ज करें."; +$LANG["validation_no_username_or_js"] = "आप अपने उपयोगकर्ता नाम दर्ज करना होगा. कृपया अपने ब्राउज़र में जावास्क्रिप्ट सक्रिय करें."; +$LANG["validation_no_view_fields"] = "आपके सारे किसी भी क्षेत्र शामिल नहीं है! तुम वहाँ के लिए कम से कम एक क्षेत्र आवंटित करने की जरूरत है कुछ आपके विचार में दिखा सकता है."; +$LANG["validation_no_view_fields_selected"] = "कृपया एक या एक से अधिक क्षेत्रों को चुनने के लिए देखें में जोड़ें."; +$LANG["validation_no_view_name"] = "कृपया अपने सारे के नाम दर्ज करें."; +$LANG["validation_num_rows_to_add"] = "कृपया पंक्तियों की संख्या दर्ज करने में जोड़ें."; +$LANG["validation_option_list_name_taken"] = "क्षमा करें, इस विकल्प सूची में नाम पहले ही ले लिया है. एक नया नाम चुनें."; +$LANG["validation_password_in_password_history"] = "सुरक्षा के लिए, आप पिछले {\$history_size} पासवर्ड <प्रवेश नहीं कर सकते हैं. कृपया एक अलग पासवर्ड दर्ज करें."; +$LANG["validation_passwords_different"] = "कृपया सुनिश्चित करें कि पासवर्ड वही कर रहे हैं."; +$LANG["validation_please_enter_search_date_range"] = "कृपया खोज तिथि सीमा चुनें."; +$LANG["validation_please_enter_search_keyword"] = "कृपया खोज कीवर्ड दर्ज करें."; +$LANG["validation_select_field_type"] = "कृपया एक क्षेत्र प्रकार का चयन करें."; +$LANG["validation_select_submissions_to_copy"] = "कृपया उन सबमिशन का चयन करें जिन्हें आप कॉपी करना चाहते हैं।"; +$LANG["validation_select_submissions_to_delete"] = "कृपया उन प्रस्तुतियाँ आप नष्ट करना चाहते हैं को चुनें."; +$LANG["validation_smart_fill_cannot_fill"] = "क्षमा करें, हम इस क्षेत्र को भरने नहीं कर सका."; +$LANG["validation_smart_fill_invalid_field_type"] = "हम एक क्षेत्र का पता लगाने में असमर्थ रहे थे, लेकिन यह एक ड्रॉपडाउन, चेकबॉक्स या रेडियो समूह नहीं है."; +$LANG["validation_smart_fill_no_field_found"] = "क्षमा करें, हम एक फार्म क्षेत्र निर्दिष्ट पृष्ठ पर उस नाम के साथ नहीं मिल सकता है."; +$LANG["validation_smart_fill_no_page"] = "कृपया आप स्मार्ट क्षेत्र को भरने के लिए करना चाहते हैं पृष्ठ खोजें."; +$LANG["validation_smart_fill_upload_all_pages"] = "कृपया अपने फार्म में सभी पृष्ठों पर अपलोड करें."; +$LANG["validation_upload_folder_not_writable"] = "यह अस्थायी अपलोड अपने PHP स्थापना द्वारा निर्दिष्ट फ़ोल्डर writable नहीं है. जब तक यह तय हो गई है, फ़ाइलें प्रपत्र उपकरण (या किसी अन्य PHP प्रोग्राम) के माध्यम से अपलोड नहीं किया जा सकता है. कृपया अपने होस्टिंग प्रदाता से संपर्क करें."; +$LANG["validation_upload_html_files_only"] = "कृपया केवल अपलोड HTML फ़ाइलें."; +$LANG["validation_username_taken"] = "क्षमा करें, कि उपयोगकर्ता नाम पहले ही लिया जाता है. कृपया एक और उपयोगकर्ता नाम दर्ज करें."; +$LANG["validation_wrong_password"] = "क्षमा करें, जो पासवर्ड से मेल नहीं खाता."; +$LANG["word_about"] = "के बारे में"; +$LANG["word_access"] = "प्रवेश"; +$LANG["word_account"] = "खाता"; +$LANG["word_account_sp"] = "खाता (S)"; +$LANG["word_accounts"] = "लेखा"; +$LANG["word_action"] = "कार्रवाई"; +$LANG["word_active"] = "सक्रिय"; +$LANG["word_add"] = "जोड़ना"; +$LANG["word_add_rightarrow"] = "जोड़ें »"; +$LANG["word_add_uc_rightarrow"] = "जोड़ें »"; +$LANG["word_administration"] = "प्रशासन"; +$LANG["word_administrator"] = "व्यवस्थापक"; +$LANG["word_after"] = "बाद में"; +$LANG["word_aquamarine"] = "अक्वामरीन"; +$LANG["word_asc"] = "ए एस सी"; +$LANG["word_author"] = "लेखक"; +$LANG["word_author_c"] = "लेखक:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«वापस"; +$LANG["word_bcc_c"] = "गुप्त प्रति:"; +$LANG["word_before"] = "पहले"; +$LANG["word_benefits"] = "लाभ"; +$LANG["word_blue"] = "नीला"; +$LANG["word_cancel"] = "रद्द करना"; +$LANG["word_cc_c"] = "प्रति:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "चेक बॉक्स"; +$LANG["word_checklist"] = "चेकलिस्ट"; +$LANG["word_client"] = "ग्राहक"; +$LANG["word_client_c"] = "ग्राहक:"; +$LANG["word_clients"] = "ग्राहकों"; +$LANG["word_close"] = "बंद करना"; +$LANG["word_code"] = "कोड"; +$LANG["word_column"] = "कॉलम"; +$LANG["word_columns"] = "स्तंभ"; +$LANG["word_columns_sp"] = "स्तंभ ()"; +$LANG["word_complete"] = "पूरा"; +$LANG["word_configuration"] = "विन्यास"; +$LANG["word_content"] = "सामग्री"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "जारी रखें »"; +$LANG["word_copy"] = "प्रतिलिपि"; +$LANG["word_custom"] = "प्रथा"; +$LANG["word_data"] = "डेटा"; +$LANG["word_date"] = "तिथि"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "मिटाना"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "प्रत्यक्ष"; +$LANG["word_disabled"] = "अक्षम"; +$LANG["word_documentation"] = "दस्तावेज़ीकरण"; +$LANG["word_done"] = "ठीक है"; +$LANG["word_drawbacks"] = "कमियां"; +$LANG["word_dropdown"] = "ड्रापडाउन"; +$LANG["word_edit"] = "संपादित करें"; +$LANG["word_editable"] = "संपादन योग्य"; +$LANG["word_email"] = "ईमेल"; +$LANG["word_email_c"] = "ईमेल:"; +$LANG["word_emails"] = "ईमेल"; +$LANG["word_enabled"] = "सक्रिय"; +$LANG["word_equals"] = "बराबरी"; +$LANG["word_error"] = "त्रुटि"; +$LANG["word_error_c"] = "त्रुटि:"; +$LANG["word_examples_c"] = "उदाहरण:"; +$LANG["word_external"] = "विदेश"; +$LANG["word_fail"] = "असफल"; +$LANG["word_field"] = "मैदान"; +$LANG["word_field_sp"] = "फील्ड (S)"; +$LANG["word_fields"] = "खेतों"; +$LANG["word_fields_sp"] = "फील्ड ()"; +$LANG["word_file"] = "फ़ाइल"; +$LANG["word_file_b_uc"] = "िंजदगीः []"; +$LANG["word_files"] = "फ़ाइलें"; +$LANG["word_filters"] = "फ़िल्टर"; +$LANG["word_filters_sp"] = "फ़िल्टर ()"; +$LANG["word_for"] = "के लिए"; +$LANG["word_form"] = "रूप"; +$LANG["word_form_c"] = "फार्म:"; +$LANG["word_formatting"] = "स्वरूपण"; +$LANG["word_forms"] = "रूपों"; +$LANG["word_found"] = "मिला"; +$LANG["word_from"] = "से"; +$LANG["word_from_c"] = "से:"; +$LANG["word_general"] = "सामान्य"; +$LANG["word_green"] = "हरा"; +$LANG["word_grey"] = "ग्रे"; +$LANG["word_height"] = "ऊंचाई"; +$LANG["word_help"] = "मदद"; +$LANG["word_hidden"] = "हिडन"; +$LANG["word_highlight"] = "हाइलाइट"; +$LANG["word_horizontal"] = "क्षैतिज"; +$LANG["word_hour"] = "घंटे"; +$LANG["word_hours"] = "घंटे"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "आईडी"; +$LANG["word_image"] = "छवि"; +$LANG["word_incomplete"] = "अधूरा"; +$LANG["word_install"] = "स्थापित"; +$LANG["word_installation"] = "स्थापना"; +$LANG["word_internal"] = "आंतरिक"; +$LANG["word_language"] = "भाषा"; +$LANG["word_large"] = "बड़ा"; +$LANG["word_like"] = "पसंद करना"; +$LANG["word_login"] = "लॉग इन"; +$LANG["word_logo"] = "लोगो"; +$LANG["word_logout"] = "लॉगआउट"; +$LANG["word_main"] = "मुख्य"; +$LANG["word_medium"] = "मध्यम"; +$LANG["word_menu"] = "मेनू"; +$LANG["word_menus"] = "मेनू"; +$LANG["word_minutes"] = "मिनट"; +$LANG["word_misc"] = "विविध"; +$LANG["word_module"] = "मॉड्यूल"; +$LANG["word_modules"] = "मॉड्यूल"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "नाम"; +$LANG["word_name_c"] = "नाम:"; +$LANG["word_never"] = "कभी नहीं"; +$LANG["word_next_rightarrow"] = "अगला »"; +$LANG["word_next_step_rightarrow"] = "अगला कदम »"; +$LANG["word_no"] = "नहीं"; +$LANG["word_none"] = "कोई नहीं"; +$LANG["word_notes"] = "नोट्स"; +$LANG["word_notification"] = "अधिसूचना"; +$LANG["word_number"] = "संख्या"; +$LANG["word_off"] = "बंद"; +$LANG["word_offline"] = "ऑफ़लाइन"; +$LANG["word_okay"] = "अच्छा"; +$LANG["word_on"] = "नहीं"; +$LANG["word_online"] = "ऑनलाइन"; +$LANG["word_operator"] = "ऑपरेटर"; +$LANG["word_options"] = "विकल्प"; +$LANG["word_orange"] = "नारंगी"; +$LANG["word_order"] = "आदेश"; +$LANG["word_other"] = "अन्य"; +$LANG["word_other_c"] = "अन्य:"; +$LANG["word_page"] = "पृष्ठ"; +$LANG["word_page_c"] = "पृष्ठ:"; +$LANG["word_pass"] = "दर्रा"; +$LANG["word_password"] = "पासवर्ड"; +$LANG["word_password_c"] = "पासवर्ड:"; +$LANG["word_pending"] = "लम्बित"; +$LANG["word_permissions"] = "अनुमतियाँ"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«पिछला"; +$LANG["word_private"] = "निजी"; +$LANG["word_public"] = "सार्वजनिक"; +$LANG["word_purple"] = "बैंगनी"; +$LANG["word_recipient"] = "प्राप्तकर्ता"; +$LANG["word_recipient_sp"] = "प्राप्तकर्ता (S)"; +$LANG["word_red"] = "लाल"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "हटाना"; +$LANG["word_remove_uc_leftarrow"] = "«निकालें"; +$LANG["word_reply_to"] = "उत्तर को"; +$LANG["word_reply_to_c"] = "को उत्तर दें:"; +$LANG["word_required"] = "अपेक्षित"; +$LANG["word_reset"] = "रीसेट करें"; +$LANG["word_resolved"] = "हल"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "पंक्ति"; +$LANG["word_search"] = "खोज"; +$LANG["word_searchable"] = "खोज"; +$LANG["word_select"] = "चुनें"; +$LANG["word_setting"] = "स्थापना"; +$LANG["word_settings"] = "सेटिंग्स"; +$LANG["word_show"] = "दिखाना"; +$LANG["word_size"] = "आकार"; +$LANG["word_skipped"] = "छोड़ा"; +$LANG["word_small"] = "छोटा"; +$LANG["word_solution"] = "समाधान"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "प्रारंभ"; +$LANG["word_status"] = "स्थिति"; +$LANG["word_string"] = "स्ट्रिंग"; +$LANG["word_subject"] = "विषय"; +$LANG["word_subject_c"] = "विषय"; +$LANG["word_submenu"] = "सबमेनू"; +$LANG["word_submission"] = "जमा"; +$LANG["word_submissions"] = "प्रस्तुतियाँ"; +$LANG["word_system"] = "प्रणाली"; +$LANG["word_tab"] = "टैब"; +$LANG["word_tabs"] = "टैब"; +$LANG["word_tabs_sp"] = "टैब (एस)"; +$LANG["word_test"] = "परीक्षण"; +$LANG["word_text"] = "पाठ"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "विषय"; +$LANG["word_themes"] = "विषयों"; +$LANG["word_time"] = "समय"; +$LANG["word_tiny"] = "टिनी"; +$LANG["word_tips"] = "सुझाव"; +$LANG["word_today"] = "आज"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "स्थापना रद्द करें"; +$LANG["word_unknown"] = "अज्ञात"; +$LANG["word_update"] = "अद्यतन करना"; +$LANG["word_upgrade"] = "अद्यतन"; +$LANG["word_url_c"] = "यूआरएल:"; +$LANG["word_user"] = "उपयोगकर्ता"; +$LANG["word_username"] = "उपयोगकर्ता नाम"; +$LANG["word_username_c"] = "प्रयोक्ता नाम:"; +$LANG["word_validation"] = "मान्यकरण"; +$LANG["word_value"] = "मूल्य"; +$LANG["word_value_sp"] = "मूल्य (S)"; +$LANG["word_verified"] = "सत्यापित"; +$LANG["word_verify"] = "सत्यापित करें"; +$LANG["word_version"] = "संस्करणः"; +$LANG["word_vertical"] = "कार्यक्षेत्र"; +$LANG["word_view"] = "दृश्य"; +$LANG["word_views"] = "दर्शाव"; +$LANG["word_warning"] = "चेतावनी!"; +$LANG["word_warning_c"] = "चेतावनी:"; +$LANG["word_web"] = "वेब"; +$LANG["word_welcome"] = "स्वागत!"; +$LANG["word_width_c"] = "चौड़ाई:"; +$LANG["word_words"] = "शब्द"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "पीला"; +$LANG["word_yes"] = "हाँ"; \ No newline at end of file diff --git a/global/lang/hr.php b/global/lang/hr.php new file mode 100644 index 00000000..1e11a09d --- /dev/null +++ b/global/lang/hr.php @@ -0,0 +1,1219 @@ +Upozorenje! Odabrali ste {\$num_selected_on_page} podneske na ovoj stranici, a {\$num_selected_on_other_pages} na drugim stranicama. Molimo Vas odaberite jednu od sljedećih opcija:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Upozorenje! Niste odabrali bilo podneske na ovoj stranici, ali vi ste odabrali {\$num_selected_on_other_pages} na drugim stranicama. Molimo potvrdite da želite izbrisati te podneske.
    "; +$LANG["confirm_delete_view"] = "Jeste li sigurni da želite izbrisati ovaj prikaz?"; +$LANG["confirm_refresh_page"] = "Jeste li sigurni da želite osvježiti stranicu? To će izgubiti sve promjene koje ste napravili."; +$LANG["confirm_save_change_before_redirect"] = "Jedno ili više polja su ažurirani. Želite li spremiti promjene prije preusmjeravanja?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Jeste li sigurni da želite Smart Ispunite imena baze podataka stupca? To će prebrisati postojeće vrijednosti."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Ova opcija automatski generira nazive stupaca baze podataka temelji se na poljima za prikaz teksta, tako da je sadržaj tablice baze podataka su lakše za čitanje."; +$LANG["confirm_smart_fill_display_names"] = "Jeste li sigurni da želite Smart Ispunite Prikaz imena? To će prebrisati postojeće vrijednosti."; +$LANG["confirm_ungroup_option_list"] = "Jeste li sigurni da želite razgrupiranje ovu opciju popis? Sve opcije će biti svedeni na jednu, negrupirano popis."; +$LANG["confirm_uninstall_module"] = "Jeste li sigurni da želite deinstalirati ovaj modul? Svi modul podaci će biti izgubljeni."; +$LANG["date_AM"] = "PM"; +$LANG["date_Fri"] = "Pet"; +$LANG["date_Friday"] = "Petak"; +$LANG["date_Mon"] = "Pon"; +$LANG["date_Monday"] = "Ponedjeljak"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sub"; +$LANG["date_Saturday"] = "Subota"; +$LANG["date_Sun"] = "Sunce"; +$LANG["date_Sunday"] = "Nedjelja"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Četvrtak"; +$LANG["date_Tue"] = "Uto"; +$LANG["date_Tuesday"] = "Utorak"; +$LANG["date_Wed"] = "Wed"; +$LANG["date_Wednesday"] = "Srijeda"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Travanj"; +$LANG["date_month_August"] = "Kolovoz"; +$LANG["date_month_December"] = "Prosinac"; +$LANG["date_month_February"] = "Veljača"; +$LANG["date_month_January"] = "Siječanj"; +$LANG["date_month_July"] = "Srpanj"; +$LANG["date_month_June"] = "Lipanj"; +$LANG["date_month_March"] = "Ožujak"; +$LANG["date_month_May"] = "Svibanj"; +$LANG["date_month_November"] = "Studeni"; +$LANG["date_month_October"] = "Listopad"; +$LANG["date_month_September"] = "Rujan"; +$LANG["date_month_short_Apr"] = "Travanj"; +$LANG["date_month_short_Aug"] = "Kolovoz"; +$LANG["date_month_short_Dec"] = "Prosinac"; +$LANG["date_month_short_Feb"] = "Veljača"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Srpanj"; +$LANG["date_month_short_Jun"] = "Lipanj"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Svibanj"; +$LANG["date_month_short_Nov"] = "Studeni"; +$LANG["date_month_short_Oct"] = "Listopad"; +$LANG["date_month_short_Sep"] = "Rujan"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Korisnički račun je izbrisan."; +$LANG["notify_account_updated"] = "Vaš korisnički račun je uspješno ažuriran."; +$LANG["notify_add_display_values"] = "Dodaj Prikaz vrijednosti"; +$LANG["notify_admin_menu_updated"] = "Izbornik upravljanja je obnovljeno."; +$LANG["notify_admin_theme_overridden"] = "Administratora tema je ručno nadjačati."; +$LANG["notify_allow_url_fopen_not_set"] = "Nažalost, ovaj test ne može biti trčanje na temelju tvoj web server. To zahtijeva allow_url_fopen biti postavljen na 1 u php.ini datoteci. Ovaj postavljanje dopustiti PHP-u za pristup datotekama putem URL-a, koji je potreban da bi se izvršiti ovaj test. Možete ga testirati ručno tako da pošaljete datoteku na toj mapi putem FTP-a, a zatim težak to pristup na URL koji ste dobili."; +$LANG["notify_change_temp_password"] = "Vi samo prijavljeni s privremenom lozinkom. Trebali biste ponovo postavili zaporku sada!"; +$LANG["notify_click_to_edit_new_submission"] = "Kliknite ovdje da biste uredili novi podnesak."; +$LANG["notify_client_account_menus_updated"] = "Klijenta račun (e) su ažurirani na {\$menu_name} izbornika. Sada svibanj izbrisati izbornik koji je bio povezan s ranije račun (e)."; +$LANG["notify_client_account_not_updated"] = "Račun klijenta nije mogao biti ažuriran."; +$LANG["notify_client_account_themes_updated"] = "Klijenta račun (e) su ažurirani na {\$theme} temu. Sada svibanj onemogućiti temu ranije povezan s računom (e)."; +$LANG["notify_client_account_updated"] = "Račun klijenta je uspješno ažuriran."; +$LANG["notify_client_menu_deleted"] = "Klijent meni je bila izbrisana."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Meni je izbrisati, ali sljedeće račune klijenata sada više nemaju izbornik! Morate ažurirati sljedeće račune:"; +$LANG["notify_client_menu_updated"] = "Klijent meni je obnovljeno."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Žao nam je, meni se samo pokušao to izbrisati već se koristi od strane klijenata navedene u nastavku. Kako bi izbrisali izbornik najprije morate dodijeliti korisnicima na druge izbornike. Kliknite na ime za uređivanje klijenta da pojedini račun ili dodijeliti sve račune u različitim pomoću padajućeg izbornika u nastavku."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Nažalost, jedan od teme samo s invaliditetom već se koristi u sljedećim računa klijenta. Kako bi onemogućili temu najprije morate dodijeliti svakom klijentu na drugu temu. Kliknite na ime za uređivanje klijenta da pojedini račun ili dodijeliti sve račune na temu koristeći padajući ispod."; +$LANG["notify_edit_email_fields_link"] = "Kliknite ovdje da biste odredili koji je oblik polja su e-mail polja, tako da ih možete ciljati u vašem e-mail predložaka."; +$LANG["notify_edit_field_new_field"] = "To je novo područje. Morat ćete ažurirati na glavnu stranicu prije nego bitak u mogućnosti da u potpunosti urediti to područje."; +$LANG["notify_edit_option_list_after_save"] = "Morate odabrati Popis opciju, a zatim Spremi promjene prije nego bitak u mogućnosti to urediti."; +$LANG["notify_email_field_config_deleted"] = "E-mail konfiguracija je bila izbrisana."; +$LANG["notify_email_fields_not_updated"] = "Nažalost, nismo mogli ažurirati e-mail polja."; +$LANG["notify_email_fields_updated"] = "E-mail polja su ažurirane."; +$LANG["notify_email_not_sent"] = "Žao nam je, e nije mogla biti poslana. Molimo kontaktirajte administratora na niže navedenoj adresi."; +$LANG["notify_email_not_sent_c"] = "Nažalost, e-mail ne može biti poslana:"; +$LANG["notify_email_sent"] = "E-mail (e) su poslane."; +$LANG["notify_email_template_deleted"] = "E-mail predložak je bila izbrisana."; +$LANG["notify_email_template_updated"] = "E-mail predložak je obnovljeno."; +$LANG["notify_enabled_module_list_updated"] = "Popis modula omogućeno je obnovljeno."; +$LANG["notify_error_saving_fields"] = "Došlo je do pogreške spremanja polja."; +$LANG["notify_field_changes_saved"] = "Promjene na polju (e) su spremljene."; +$LANG["notify_field_options_smart_filled"] = "Svom području opcije su Smart popunjena."; +$LANG["notify_field_selected"] = "Polje je izabran. Kliknite ovdje za povratak na glavnu popisu polja."; +$LANG["notify_field_updated"] = "Ovo polje je ažuriran."; +$LANG["notify_file_not_uploaded"] = "Datoteka se ne može učitati."; +$LANG["notify_file_uploaded"] = "Datoteka je uspješno učitane."; +$LANG["notify_filters_not_updated"] = "Došlo je do pogreške u ažuriranju ovog klijenta podnošenje filtre."; +$LANG["notify_filters_updated"] = "Podnošenje filteri su ažurirane za ovog klijenta."; +$LANG["notify_folder_correct_permissions"] = "Ova mapa ima odgovarajuće ovlasti."; +$LANG["notify_folder_url_match"] = "Mapu i URL-a čini se da ispravno utakmicu."; +$LANG["notify_folder_url_no_access"] = "Ovaj test ne može biti izvedena od PHP-u nije bio u mogućnosti to pristup taj URL. To je obično uzrokovano URL su zaštićeni lozinkom. Htaccess datoteku."; +$LANG["notify_folder_url_no_match"] = "Ova mapa URL-kombinacija ne čini se da utakmicu."; +$LANG["notify_folder_url_unknown_error"] = "Nepoznata pogreška. Možete ga testirati ručno tako da pošaljete datoteku na toj mapi putem FTP-a, a zatim težak to pristup na URL koji ste dobili."; +$LANG["notify_form_access_type_email_info"] = "Ovaj oblik je tip administratorski pristup, tako da nema klijenti imaju pristup na njega, a nisu nabrojane u padajućem izborniku ispod."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Nažalost, obrazac s tim ID ne postoji."; +$LANG["notify_form_field_not_added"] = "Polje obrasca '{\$fieldname}' nije mogla biti dodan."; +$LANG["notify_form_field_options_updated"] = "Polje obrasca opcije su ažurirane."; +$LANG["notify_form_field_removed"] = "Polje obrasca je uspješno uklonjen."; +$LANG["notify_form_fields_removed"] = "Polja obrasca su uspješno uklonjene."; +$LANG["notify_form_not_updated_notify_admin"] = "Vaš oblik nije mogao biti ažuriran. Molimo kontaktirajte administratora kako bi prijavili problem."; +$LANG["notify_form_settings_updated"] = "Vaše obrazac postavke su uspješno ažurirani."; +$LANG["notify_form_submission_updated"] = "Podnošenje obrasca je obnovljeno."; +$LANG["notify_form_tabs_updated"] = "Kartice su ažurirane."; +$LANG["notify_form_updated"] = "Obrazac je uspješno ažuriran."; +$LANG["notify_form_views_updated"] = "Obrazac Pregleda su ažurirani."; +$LANG["notify_install_invalid_db_info"] = "Nažalost, nismo mogli spojiti na bazu podataka koristeći informacije koje ste dobili. Poruka o pogrešci baze podataka vraćen je: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Tvoj oblik je stvoren! Možete konfigurirati svoj oblik kroz ove kartice."; +$LANG["notify_invalid_account_information_in_sessions"] = "Obzir podatke pohranjene na sjednicama je neispravno. Molimo, prijavite se opet ispod."; +$LANG["notify_invalid_license_key"] = "Nažalost, to ne izgleda kao valjani ključ licence. Molimo pokušajte ga ponovno ulazi."; +$LANG["notify_invalid_permissions"] = "Nemate ovlasti za pristup ovoj stranici. Vi ste odjavljeni."; +$LANG["notify_invalid_search_dates"] = "Molimo koristite datepicker da unesete valjani datum ili datume."; +$LANG["notify_invalid_upload_folder"] = "Upload mapa ili je neispravna ili nije writable."; +$LANG["notify_lang_list_updated"] = "Dostupna jezik korisničkog sučelja lista je ažurirana."; +$LANG["notify_login_info_emailed"] = "Vaše podatke za prijavu je e-poštom."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Ups, ovaj modul već instaliran!"; +$LANG["notify_module_installed"] = "Modul je instaliran. Kliknite ovdje da biste odabrali modul."; +$LANG["notify_module_list_updated"] = "Modul Lista je ažurirana."; +$LANG["notify_module_uninstalled"] = "Modul je deinstalirana."; +$LANG["notify_module_updated"] = "{\$module} je ažuriran na {\$version}. Kliknite ovdje da biste odabrali modul ."; +$LANG["notify_multi_field_selected"] = "Polje je izabran. Kliknite ovdje za pregled i uređivanje polje opcije."; +$LANG["notify_multi_field_updated"] = "Ovo polje je ažuriran. Te moći konfigurirati opcije polje nakon postavljanja obrasca."; +$LANG["notify_multiple_fields_found"] = "Višestruki elementi su pronađeni u ovom polju ime ({\$field_name}). To se može dogoditi ako se na stranici sadrži više od jedan obrazac ili, ako slučajno zove jedan od obrazaca isti kao i drugi. Molimo odaberite onu koju želite na popisu u nastavku."; +$LANG["notify_new_default_view_created"] = "Novi, zadani prikaz koji sadrži sve vaše polja obrasca je stvorio."; +$LANG["notify_new_submission_created"] = "Podnošenje je stvoren. Možete ga urediti u nastavku."; +$LANG["notify_no_account_id_in_sessions"] = "Nema korisnički račun ID-pronađen je na sjednicama. Molimo, prijavite se opet ispod."; +$LANG["notify_no_api_installed"] = "Nemate instaliran API"; +$LANG["notify_no_client_permissions"] = "Nema postavke dostupne za uređivanje."; +$LANG["notify_no_email_template_selected"] = "Molimo odaberite predložak e-pošte."; +$LANG["notify_no_emails_defined"] = "Nema e-poruke su definirane za ovaj obrazac. Da biste dodali novi, kliknite na gumb ispod."; +$LANG["notify_no_field_settings"] = "Ova vrsta polje ne sadrži nikakve dodatne postavke."; +$LANG["notify_no_fields_in_tab"] = "Ova kartica ne sadrži polja."; +$LANG["notify_no_option_lists"] = "Nema mogućnosti liste definirana. Kliknite gumb ispod kako bi stvorili novu."; +$LANG["notify_no_test_submission"] = "Obrazac Alati nije dobio uspješan test podnošenje još."; +$LANG["notify_no_user_email_fields_configured"] = "Napomena: ako želite to poslati elektronička pošta to bilo koji e-mail adresu koja je bila uključena u obliku, najprije morate konfigurirati polja obrasca e-pošte."; +$LANG["notify_no_views"] = "Vaš oblik nema Pregleda postaviti! Trebat će vam barem jedan pogled, kako bi se upravljanje Vašim podataka obrasca."; +$LANG["notify_no_views_assigned_to_client_form"] = "Čini se da je Vaš korisnički račun nije dodijeljen bilo kojem obliku, Views, tako da nećete biti u mogućnosti vidjeti sve podatke. Molimo kontaktirajte administratora za daljnje pomoći."; +$LANG["notify_no_views_defined"] = "Vi nemate Pregleda definirani. Nećete moći vidjeti ovaj oblik tvrdnje osim ako barem jedan Pregled je stvorio. Kliknite gumb ispod kako bi stvorili zadani prikaz."; +$LANG["notify_option_list_deleted"] = "Opcija Popis je obrisana."; +$LANG["notify_option_list_updated"] = "Opcija Popis je ažuriran."; +$LANG["notify_public_form_omit_list_updated"] = "Klijent ispustiti lista za ovaj oblik je obnovljeno."; +$LANG["notify_public_view_omit_list_updated"] = "Klijent ispustiti liste za ovaj prikaz je obnovljeno."; +$LANG["notify_required_admin_pages"] = "Sljedeće stranice su potrebni u upravnik izbornik: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Nažalost, nije mu bilo aktivnost za vrijeme, pa smo morali da se odjavite. Molimo, prijavite se opet ispod."; +$LANG["notify_setup_options_updated"] = "Postava opcije su ažurirane."; +$LANG["notify_smart_fill_field_not_found"] = "Nismo bili u mogućnosti pronaći polja s ovim imenom ({\$field_name}) u obliku (s) specified. Možete ručno podesiti tip polja ispod, i pritisnite dugme Preskoči za uređivanje ove oblasti kasnije."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Your file (s) su uspješno učitane. Pokušajte klikom na gumb Smart Ispuni pokušati ponovno. Ako ovaj korak ne uspije, morat ćete preskočiti ovaj korak i konfigurirati polja obrasca manally kasnije."; +$LANG["notify_smart_fill_submitted"] = "Obrazac je dostavljen. Ovisno o veličini Vaše oblik i broj terenskih mogućnosti, ovaj svibanj potrajati neko vrijeme."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Nažalost, jednu ili više datoteka koje ste unijeli nisu mogli biti postavljeni. Morat ćete preskočiti ovaj korak i konfigurirati ručno polja."; +$LANG["notify_submission_and_files_deleted"] = "Podnošenje i bilo koju datoteku (e) povezane s njom bili uspješno izbrisan."; +$LANG["notify_submission_copied"] = "Podnesak je kopiran."; +$LANG["notify_submission_copied_edit"] = "Podnesak je kopiran. Možete ga urediti u nastavku."; +$LANG["notify_submission_deleted"] = "Podnošenje je uspješno izbrisana."; +$LANG["notify_submission_deleted_with_problems"] = "Podnošenje je izbrisan, ali problemi su slijedeći naišao našto pokus to izbrisati sljedeću datoteku (e):"; +$LANG["notify_submission_id_not_found"] = "Podnošenje ID nije pronađen."; +$LANG["notify_submission_not_updated"] = "Podnošenje nije mogao biti ažuriran."; +$LANG["notify_submissions_and_files_deleted"] = "Podneske i bilo koju datoteku (e) povezane s njima bili su uspješno izbrisan."; +$LANG["notify_submissions_copied"] = "Kopirane su {\$num_submissions} podnesaka."; +$LANG["notify_submissions_deleted"] = "Podnesci je uspješno izbrisana."; +$LANG["notify_submissions_deleted_with_problems"] = "Podnesaka su izbrisane, ali sljedeće probleme naišli kad su se trudi izbrisati sljedeću datoteku (e):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Vaša e-mail test nije mogla biti poslana."; +$LANG["notify_theme_cache_folder_not_writable"] = "Ova tema je mapu predmemorije nije writable. Kako bi omogućili ovu temu, {\$folder} mapu treba imati pune čitanje-pisati dopuštenje."; +$LANG["notify_theme_list_updated"] = "Lista tema je obnovljeno."; +$LANG["notify_themes_settings_updated"] = "Vaša tema postavke su ažurirane."; +$LANG["notify_view_deleted"] = "Pogled je bila izbrisana."; +$LANG["notify_view_group_deleted"] = "Pregled grupa je izbrisana."; +$LANG["notify_view_missing_columns"] = "Ups! Nažalost, ovaj pogled nije u potpunosti postavljen još."; +$LANG["notify_view_missing_columns_admin_fix"] = "Kliknite ovdje kako biste odredili koja polja treba se pojaviti kao stupce na ovoj stranici."; +$LANG["notify_view_updated"] = "Pogled je obnovljeno."; +$LANG["notify_your_email_sent"] = "Vaša e-mail je uspješno poslan."; +$LANG["phrase_100_per_page"] = "100 po stranici"; +$LANG["phrase_10_per_page"] = "10 po stranici"; +$LANG["phrase_15_per_page"] = "15 po stranici"; +$LANG["phrase_1_direct"] = "1. Izravno"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 po stranici"; +$LANG["phrase_25_per_page"] = "25 po stranici"; +$LANG["phrase_2_code"] = "2. Šifra"; +$LANG["phrase_2_columns"] = "2 stupca"; +$LANG["phrase_2chars"] = "2 znakova"; +$LANG["phrase_3_columns"] = "3 stupaca"; +$LANG["phrase_4_columns"] = "4 Kolumne"; +$LANG["phrase_50_per_page"] = "50 po stranici"; +$LANG["phrase_accepting_submissions"] = "(prihvaćanje podnesci)"; +$LANG["phrase_access_admin_account_c"] = "Možete pristupiti svom računu uprave ovdje:"; +$LANG["phrase_access_type"] = "Vrsta pristupa"; +$LANG["phrase_account_info"] = "Account Information"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Action Needed"; +$LANG["phrase_add_client"] = "DODAJ KLIJENTA"; +$LANG["phrase_add_client_menu"] = "Dodaj Client Izbornik"; +$LANG["phrase_add_default_settings_rightarrow"] = "Dodaj zadane postavke ""; +$LANG["phrase_add_field"] = "Dodaj polje"; +$LANG["phrase_add_fields"] = "Dodavanje polja"; +$LANG["phrase_add_fields_rightarrow"] = "Dodaj Polje (e) »"; +$LANG["phrase_add_form"] = "Add Form"; +$LANG["phrase_add_form_external"] = "Dodaj Obrazac - Vanjski"; +$LANG["phrase_add_form_internal"] = "Dodaj Obrazac - unutarnje"; +$LANG["phrase_add_new_group_rightarrow"] = "Dodaj novu grupu »"; +$LANG["phrase_add_num_rows"] = "Dodajte {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Dodaj Podnošenje gumb"; +$LANG["phrase_add_view_rightarrow"] = "Dodaj Pregled »"; +$LANG["phrase_adding_multi_page_form"] = "Dodavanje više stranica obrazac s API"; +$LANG["phrase_adding_single_page_form"] = "Dodavanje jednoj stranici obrazac s API"; +$LANG["phrase_admin_menu"] = "Administrator Izbornik"; +$LANG["phrase_admin_only"] = "Samo administrator"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Tema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Napredne postavke »"; +$LANG["phrase_all_X_results_selected"] = "Sve {\$numresults} Rezultati Odabrano"; +$LANG["phrase_all_clients"] = "Svi klijenti"; +$LANG["phrase_all_clients_except_c"] = "Sve klijente, osim:"; +$LANG["phrase_all_clients_have_access"] = "(svi klijenti imaju pristup)"; +$LANG["phrase_all_fields"] = "Sva polja"; +$LANG["phrase_all_fields_displayed"] = "Sva polja su prikazani"; +$LANG["phrase_all_statuses"] = "Sve Statusi"; +$LANG["phrase_all_submissions"] = "Svi podnesci"; +$LANG["phrase_allow_fields_edited"] = "Dopusti da se uređivati polja"; +$LANG["phrase_alphanumeric"] = "Alfanumerički (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Primijeni Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Dodijelite sve navedene račune klijenata na {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Dodijelite sve navedene račune klijenata na {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Na kraju"; +$LANG["phrase_at_start"] = "Na Početak"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-onemogućite račun nakon pokušaja # neuspješnu prijavu"; +$LANG["phrase_auto_size"] = "Auto-veličine"; +$LANG["phrase_available_clients"] = "Dostupan Klijenti"; +$LANG["phrase_available_fields"] = "Dostupni polja"; +$LANG["phrase_available_option_lists"] = "Dostupni Opcija Popisi"; +$LANG["phrase_available_swatches"] = "Dostupni uzoraka"; +$LANG["phrase_available_swatches_c"] = "Dostupni uzoraka:"; +$LANG["phrase_available_tabs"] = "Dostupni Kartice"; +$LANG["phrase_available_views"] = "Dostupan Pregleda"; +$LANG["phrase_awaiting_form_submission"] = "Čeka na slanje obrasca."; +$LANG["phrase_back_to_field_list"] = "«natrag na popisu polja"; +$LANG["phrase_back_to_search_results"] = "nazad na rezultate pretraživanja"; +$LANG["phrase_base_view_on"] = "Baza Pogled na ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Promijeni podatke o prijavi"; +$LANG["phrase_characters_limit_p"] = "znakova granica."; +$LANG["phrase_check_db_settings_try_again"] = "Molimo Vas da provjerite svoje postavke baze podataka i klik Nastaviti gumb opet."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Provjerite URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Izvor: Clear List"; +$LANG["phrase_client_account_settings"] = "Client Postavke računa"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Klijent Karta Filteri »"; +$LANG["phrase_client_may_edit"] = "Client svibanj uredi"; +$LANG["phrase_client_menu"] = "Client Izbornik"; +$LANG["phrase_clients_can_access_form"] = "Klijenti koji mogu pristupiti obrasca"; +$LANG["phrase_clients_can_access_view"] = "Klijenti koji mogu pristupiti View"; +$LANG["phrase_clients_cannot_access_form"] = "Klijenti koji ne mogu pristupiti obrasca"; +$LANG["phrase_clients_cannot_access_view"] = "Klijenti koji ne mogu pristupiti View"; +$LANG["phrase_clients_may_edit"] = "Klijenti svibanj uredi"; +$LANG["phrase_code_c"] = "Greška Kod:"; +$LANG["phrase_code_markup_field"] = "Šifra / Markup polja"; +$LANG["phrase_code_markup_type"] = "Šifra / Markup Tip"; +$LANG["phrase_codes_c"] = "Error Codes:"; +$LANG["phrase_column_width"] = "Širina stupca"; +$LANG["phrase_company_name"] = "Ime tvrtke"; +$LANG["phrase_configure_form_email_fields"] = "Konfiguracija Obrazac E-Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Confirm Folder-URL Odgovara"; +$LANG["phrase_connect_rows"] = "Connect redaka"; +$LANG["phrase_copy_email_settings_from"] = "Kopiraj E-mail postavke iz ..."; +$LANG["phrase_copy_settings_from"] = "Kopiraj postavke iz ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Create Account"; +$LANG["phrase_create_admin_account"] = "Admin Create Account"; +$LANG["phrase_create_config_file"] = "Napravite Config File"; +$LANG["phrase_create_database_tables"] = "Stvaranje baze podataka Tablice"; +$LANG["phrase_create_default_view"] = "Stvaranje Zadani prikaz"; +$LANG["phrase_create_file"] = "Stvaranje datoteke"; +$LANG["phrase_create_group"] = "Napravite grupu"; +$LANG["phrase_create_new_email"] = "Create New Email"; +$LANG["phrase_create_new_menu"] = "Create New Izbornik"; +$LANG["phrase_create_new_option_list"] = "Napravi novi popis opcija"; +$LANG["phrase_create_new_option_list_group"] = "Stvori novu skupinu popisa opcija"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Napravi novi popis opcija »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Stvaranje novog prikaza grupa"; +$LANG["phrase_custom_display_format"] = "Prilagođeni prikaz formata"; +$LANG["phrase_custom_recipient"] = "Custom primatelja"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Vrsta podataka"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Naziv baze"; +$LANG["phrase_database_password"] = "Database lozinka"; +$LANG["phrase_database_settings"] = "Database Settings"; +$LANG["phrase_database_setup"] = "Database Setup"; +$LANG["phrase_database_table_prefix"] = "Prefiks tablica baze podataka"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Date Format"; +$LANG["phrase_db_column"] = "DB Column"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Propust račun klijenta Tema"; +$LANG["phrase_default_date_field_search_value"] = "Zadani datumski polje za pretraživanje vrijednost"; +$LANG["phrase_default_language"] = "Default language"; +$LANG["phrase_default_menu"] = "Default Meni"; +$LANG["phrase_default_sessions_timeout"] = "Zadana Sjednice Vrijeme"; +$LANG["phrase_default_sort_order"] = "Default Sort Order"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Zadana vrijednost"; +$LANG["phrase_default_values"] = "Default vrijednosti"; +$LANG["phrase_default_values_new_submissions"] = "Zadane vrijednosti za nove Podnesci"; +$LANG["phrase_delete_field"] = "Brisanje polja"; +$LANG["phrase_delete_form"] = "Delete Form"; +$LANG["phrase_delete_row"] = "Brisanje redaka"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Brisanje datoteke pridružene pri brisanju podnošenje"; +$LANG["phrase_delete_view"] = "Brisanje Pregled"; +$LANG["phrase_disconnect_rows"] = "Isključite redaka"; +$LANG["phrase_display_email"] = "Display E-mail"; +$LANG["phrase_display_name"] = "Display Name"; +$LANG["phrase_display_text"] = "Prikaz teksta"; +$LANG["phrase_display_value"] = "Display Vrijednost"; +$LANG["phrase_edit_admin_menu"] = "Uređivanje Admin Menu"; +$LANG["phrase_edit_client"] = "Uredi za klijente"; +$LANG["phrase_edit_client_menu"] = "Uređivanje Client Izbornik"; +$LANG["phrase_edit_email_template"] = "Edit Email Predložak"; +$LANG["phrase_edit_field"] = "Uređivanje polja"; +$LANG["phrase_edit_field_c"] = "Uredi Područje:"; +$LANG["phrase_edit_form"] = "Uredi Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Uredi tip obliku pristup]"; +$LANG["phrase_edit_option_list"] = "Uredi Opcija Popis"; +$LANG["phrase_edit_submission"] = "Uredi Podnošenje"; +$LANG["phrase_edit_submission_label"] = "Uredi Podnošenje oznaka"; +$LANG["phrase_edit_view"] = "Uredi prikaz"; +$LANG["phrase_email_format"] = "E-mail Format"; +$LANG["phrase_email_settings"] = "E-mail postavke"; +$LANG["phrase_email_template"] = "E-mail predložak"; +$LANG["phrase_email_template_name"] = "E-mail naziv predloška"; +$LANG["phrase_error_learn_more"] = "Saznajte više o ovoj pogrešci."; +$LANG["phrase_error_text_intro"] = "Molimo škripac slijedeće greška (a) i ponovno:"; +$LANG["phrase_errors_learn_more"] = "Kliknite na greška koda kako biste saznali više."; +$LANG["phrase_event_trigger"] = "Trigger Event"; +$LANG["phrase_external_form"] = "Vanjski oblik"; +$LANG["phrase_external_form_info"] = "Vanjski oblik Info"; +$LANG["phrase_external_your_own_form"] = "Vanjski (svoj vlastiti oblik)"; +$LANG["phrase_field_comments"] = "Polje Komentari"; +$LANG["phrase_field_label"] = "Polje oznake"; +$LANG["phrase_field_options"] = "Field Options"; +$LANG["phrase_field_size"] = "Field Size"; +$LANG["phrase_field_skipped"] = "Field preskočene"; +$LANG["phrase_field_specific_settings"] = "Polje postavke za određenu"; +$LANG["phrase_field_type"] = "Tip polja"; +$LANG["phrase_field_type_no_validation"] = "Ne postoje pravila za provjeru valjanosti dostupna za ovu vrstu polja."; +$LANG["phrase_field_types"] = "Područje Vrste"; +$LANG["phrase_field_value"] = "Vrijednost polja"; +$LANG["phrase_field_values_to_display_values"] = "Vrijednosti polja »Prikaz vrijednosti"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Touches"; +$LANG["phrase_finalize_form"] = "Završiti Form"; +$LANG["phrase_first_name"] = "Ime"; +$LANG["phrase_footer_text"] = "Tekst zaglavlja"; +$LANG["phrase_for_any_form_submission"] = "Za bilo koji oblik podnošenje"; +$LANG["phrase_for_view_submissions"] = "Samo za prijavu na Vidi:"; +$LANG["phrase_forgot_password"] = "Zaboravili ste lozinku?"; +$LANG["phrase_form_already_selected"] = "Obrazac već odabranih"; +$LANG["phrase_form_email_field_b_c"] = "[Forma polje email]:"; +$LANG["phrase_form_email_field_configuration"] = "Obrazac E-Field Configuration"; +$LANG["phrase_form_email_fields"] = "Obrazac Email Polja"; +$LANG["phrase_form_field"] = "Polje obrasca"; +$LANG["phrase_form_field_contents"] = "Sadržaj polja obrasca"; +$LANG["phrase_form_field_name"] = "Obrazac Naziv polja"; +$LANG["phrase_form_field_placeholders"] = "Polje obrasca rezerviranih mjesta"; +$LANG["phrase_form_fields"] = "Polja obrasca"; +$LANG["phrase_form_info"] = "Forma Informacije"; +$LANG["phrase_form_info_2"] = "2. Forma Informacije"; +$LANG["phrase_form_list"] = "Obrazac Popis"; +$LANG["phrase_form_name"] = "Obrazac Ime"; +$LANG["phrase_form_page"] = "Obrazac za stranicu"; +$LANG["phrase_form_placeholders"] = "Obrazac Rezervirana mjesta"; +$LANG["phrase_form_submission"] = "Obrazac za prijavu"; +$LANG["phrase_form_submissions"] = "Obrazac Podnesci"; +$LANG["phrase_form_type"] = "Tip obrasca"; +$LANG["phrase_form_url"] = "Obrazac URL"; +$LANG["phrase_form_urls"] = "Obrazac URL-ove"; +$LANG["phrase_forms_assigned_to_any_account"] = "Obrasci dodijeljen bilo koji račun"; +$LANG["phrase_forms_page_default_message"] = "Obrasci stranicu Default poruku"; +$LANG["phrase_ft_installation"] = "Obrazac Alati Instalacija skripte"; +$LANG["phrase_full_width"] = "Puna širina"; +$LANG["phrase_getting_started"] = "početak"; +$LANG["phrase_global_placeholders"] = "Global Rezervirana mjesta"; +$LANG["phrase_group_name"] = "Naziv grupe"; +$LANG["phrase_group_options_q"] = "Grupa mogućnosti?"; +$LANG["phrase_group_rows"] = "Grupa redaka"; +$LANG["phrase_have_fun"] = "Zabavite se!"; +$LANG["phrase_highlight_colour"] = "Isticanje boje"; +$LANG["phrase_html_email"] = "HTML e-mail"; +$LANG["phrase_html_template"] = "HTML predloška"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Uvoz Opcija Popis »"; +$LANG["phrase_input_length"] = "Ulaz Duljina"; +$LANG["phrase_installation_help"] = "Instalacija Pomoć"; +$LANG["phrase_internal_form"] = "Unutarnja Obrazac"; +$LANG["phrase_ip_address"] = "IP adresa"; +$LANG["phrase_is_multi_page_form_q"] = "Je li to više stranica obrasca?"; +$LANG["phrase_label_response_placeholders"] = "Label / odgovor Placeholders"; +$LANG["phrase_large_300px"] = "Veliki (300px)"; +$LANG["phrase_large_400px"] = "Veliki (400px)"; +$LANG["phrase_last_7_days"] = "Zadnjih 7 dana"; +$LANG["phrase_last_logged_in"] = "Last logged in"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Datum zadnje izmjene"; +$LANG["phrase_last_name"] = "Prezime"; +$LANG["phrase_letters_only"] = "Pisma Samo"; +$LANG["phrase_light_brown"] = "Svijetlo smeđa"; +$LANG["phrase_limit_email_content"] = "Ograniči sadržaj e-pošte u polja za prikaz"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Login"; +$LANG["phrase_login_as_user"] = "Prijavite se u ovom korisničkom"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Lozinka"; +$LANG["phrase_login_username"] = "Login Username"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Glavni Nav"; +$LANG["phrase_main_settings"] = "Osnovne postavke"; +$LANG["phrase_manage_client"] = "Upravljanje Client"; +$LANG["phrase_manage_client_omit_list"] = "Upravljanje klijenta Izostaviti Popis"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Max dužina"; +$LANG["phrase_max_length_words_chars"] = "- Max dužina (riječi / znakova)"; +$LANG["phrase_may_add_submissions"] = "Može dodati Podnesci"; +$LANG["phrase_may_copy_submissions"] = "Može kopirati podneske"; +$LANG["phrase_may_delete_submissions"] = "Može izbrisati Podnesci"; +$LANG["phrase_medium_150px"] = "Srednja (150px)"; +$LANG["phrase_medium_200px"] = "Srednja (200px)"; +$LANG["phrase_menu_name"] = "Meni Ime"; +$LANG["phrase_menu_type"] = "Meni Tip"; +$LANG["phrase_min_password_length"] = "Minimalna duljina lozinke"; +$LANG["phrase_module_description"] = "Opis modula"; +$LANG["phrase_module_info"] = "Modul Informacije"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Mjesec do danas"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Multi-odaberite padajući"; +$LANG["phrase_multiple_fields_found"] = "Višestruki Polja pronađena!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Ime / Prezime"; +$LANG["phrase_new_blank_email"] = "New Blank E-mail"; +$LANG["phrase_new_blank_option_list"] = "Novi prazni Opcija Popis"; +$LANG["phrase_new_blank_view"] = "New Blank Pogledaj"; +$LANG["phrase_new_ft_installation"] = "Nova Forma Alati za instalaciju"; +$LANG["phrase_new_option_list"] = "Nova opcija popis"; +$LANG["phrase_new_password"] = "Novi Lozinka"; +$LANG["phrase_new_password_reenter"] = "New Password (Please re-enter)"; +$LANG["phrase_new_view"] = "Novi View"; +$LANG["phrase_new_view_all_fields"] = "Novi View - Sva polja"; +$LANG["phrase_next_client"] = "Sljedeća klijenta »"; +$LANG["phrase_next_field"] = "slijedeće polje »"; +$LANG["phrase_next_form"] = "sljedeći oblik »"; +$LANG["phrase_next_view"] = "View next »"; +$LANG["phrase_no_clients"] = "Nema klijenata"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Nema offset"; +$LANG["phrase_no_option_lists_available"] = "Nema opcije liste dostupne."; +$LANG["phrase_no_views"] = "Nema Pregleda"; +$LANG["phrase_no_views_with_filters_p"] = "(Ne Pregleda s filtrima definirana)"; +$LANG["phrase_none_not_recommended"] = "None (ne preporučuje se)"; +$LANG["phrase_not_assigned_to_option_list"] = "Ovo polje nije dodijeljena opcija popis."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "NE jednako"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "NE slično"; +$LANG["phrase_not_visible_to_client"] = "(nije vidljiv za klijenta)"; +$LANG["phrase_num_clients_per_page"] = "Num Klijenti Per Page"; +$LANG["phrase_num_emails_per_page"] = "Num Emails Per Page"; +$LANG["phrase_num_fields"] = "Broj polja"; +$LANG["phrase_num_forms_per_page"] = "Num Obrasci Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Izbornici Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Moduli Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Broj Opcija Popisi po stranici"; +$LANG["phrase_num_options"] = "Broj Mogućnosti"; +$LANG["phrase_num_rows"] = "Broj redaka"; +$LANG["phrase_numbers_only"] = "Brojevi Samo"; +$LANG["phrase_often_localhost"] = "(često "localhost")"; +$LANG["phrase_on_form_submission"] = "Na podnošenje obrasca"; +$LANG["phrase_one_char_number"] = "Barem jedan lik je broj (0-9)"; +$LANG["phrase_one_char_upper"] = "Barem jedan lik je velika"; +$LANG["phrase_one_special_char"] = "Barem jedan od {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(samo određenih klijenti imaju pristup)"; +$LANG["phrase_open_form_in_dialog"] = "Otvorite obrazac u dijaloškom prozoru"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Otvorite ovaj obrazac u novoj kartici / prozor"; +$LANG["phrase_option_list"] = "Opcija Popis"; +$LANG["phrase_option_list_name"] = "Opcija Popis Naziv"; +$LANG["phrase_option_list_or_contents"] = "Opcija Popis / Sadržaj"; +$LANG["phrase_option_lists"] = "Opcija Popis"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Naslovi stranica"; +$LANG["phrase_pass_on"] = "Pass on"; +$LANG["phrase_password_min"] = "To mora biti najmanje <b> ( \$ dužina) </ b> znakova."; +$LANG["phrase_password_one_number"] = "Ona mora sadržavati barem jedan broj (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Ona mora sadržavati barem jedno slovo veliko."; +$LANG["phrase_password_requirements_c"] = "Lozinka zahtjevi:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Ona mora sadržavati barem jednu od sljedeće znakove: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Dozvole / Ostale postavke"; +$LANG["phrase_permitted_file_types"] = "Dozvoljena vrsta datoteka"; +$LANG["phrase_phone_number"] = "Broj telefona"; +$LANG["phrase_phone_number_format"] = "Telefonski broj Oblik"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max dopuštena veličina datoteke:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Potvrdite"; +$LANG["phrase_please_enter_license_key"] = "Molimo unesite svoje licence"; +$LANG["phrase_please_select"] = "Molimo odaberite"; +$LANG["phrase_please_select_form"] = "Molimo odaberite oblik"; +$LANG["phrase_prev_client"] = "«Prethodna klijenta"; +$LANG["phrase_prev_form"] = "«Prethodna obliku"; +$LANG["phrase_prevent_password_reuse"] = "Spriječiti ponovno korištenje # prošle lozinka"; +$LANG["phrase_previous_field"] = "«prethodna polje"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "«Prethodna Prikaži"; +$LANG["phrase_program_name"] = "Naziv programa"; +$LANG["phrase_public_form_omit_list"] = "Javna Obrazac Izvor: List"; +$LANG["phrase_public_view_omit_list"] = "View Public Izvor: List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Došlo je do problema sa sljedećim upitom:"; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Random podnošenje obrasca"; +$LANG["phrase_re_enter_password"] = "Ponovite lozinku"; +$LANG["phrase_recipient_type"] = "Vrsta primatelja"; +$LANG["phrase_redirect_url"] = "URL preusmjeravanja"; +$LANG["phrase_refresh_list"] = "Osvježi popis"; +$LANG["phrase_refresh_module_list"] = "Osvježi Lista Modula"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Osvježi Theme List"; +$LANG["phrase_register_new_email"] = "Registrirajte Novi E-mail"; +$LANG["phrase_remaining_characters"] = "preostalo znakova"; +$LANG["phrase_remaining_words"] = "preostalih riječi"; +$LANG["phrase_remove_tabs"] = "Ukloni Tabs"; +$LANG["phrase_required_password_chars"] = "Potrebna lozinka znakova"; +$LANG["phrase_resend_test_submission"] = "Resend Test Podnošenje"; +$LANG["phrase_return_form_list"] = "Povratak na listu Obrazac"; +$LANG["phrase_row_selected"] = "{\$num_rows} red odabrane"; +$LANG["phrase_rows_selected"] = "{\$num_rows} odabranih redaka"; +$LANG["phrase_sample_data"] = "Sample Data"; +$LANG["phrase_save_changes"] = "Spremi izmjene"; +$LANG["phrase_search_keyword"] = "Ključna Riječ"; +$LANG["phrase_security_settings"] = "Sigurnosne postavke"; +$LANG["phrase_select_all"] = "Odaberi Sve"; +$LANG["phrase_select_all_X_results"] = "Odaberi Sve (\$ numresults) Stranice"; +$LANG["phrase_select_all_on_page"] = "Select All On Page"; +$LANG["phrase_select_date"] = "Odaberite datum"; +$LANG["phrase_select_field"] = "Izaberite područje"; +$LANG["phrase_select_swatch"] = "Odaberite uzorak"; +$LANG["phrase_selected_clients"] = "Odabrana Klijenti"; +$LANG["phrase_selected_views"] = "Odabrana Pregleda"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Test Send Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sjednice Vrijeme"; +$LANG["phrase_setting_value"] = "Postavljanje vrijednosti"; +$LANG["phrase_setup_options"] = "Postava Opcije"; +$LANG["phrase_show_all"] = "Pokaži sve"; +$LANG["phrase_show_form"] = "Prikaži obrazac"; +$LANG["phrase_size_large"] = "Large (tekst)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 znakova)"; +$LANG["phrase_size_small"] = "Mala (<= 20 znakova)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 znakova)"; +$LANG["phrase_size_very_large"] = "Vrlo velike (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Preskoči Field"; +$LANG["phrase_skip_step"] = "Preskoči Korak"; +$LANG["phrase_small_100px"] = "Mali (100px)"; +$LANG["phrase_small_80px"] = "Mali (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Popunite polja sa:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Ispunite Korisnik Documentation »"; +$LANG["phrase_sort_as"] = "Sortiraj kao"; +$LANG["phrase_special_fields"] = "Specijalna polja"; +$LANG["phrase_standard_fields"] = "Standardni Polja"; +$LANG["phrase_standard_filters"] = "Standard Filteri »"; +$LANG["phrase_step_1"] = "Korak 1"; +$LANG["phrase_step_2"] = "Korak 2"; +$LANG["phrase_step_3"] = "Korak 3"; +$LANG["phrase_step_4"] = "Korak 4"; +$LANG["phrase_step_5"] = "Korak 5"; +$LANG["phrase_step_6"] = "Korak 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip oznaka u obliku podnesci"; +$LANG["phrase_subject_line"] = "Subject Line"; +$LANG["phrase_submission_date"] = "Podnošenje datum"; +$LANG["phrase_submission_id"] = "Predaja oglasa"; +$LANG["phrase_submission_made"] = "Podnošenje napravio: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Podnošenje Tip"; +$LANG["phrase_submissions_per_page"] = "Podnesci po stranici"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Ne možete dodati provjeru u sustavu područja."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Kartica Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test mape"; +$LANG["phrase_test_submission"] = "Test Podnošenje"; +$LANG["phrase_test_submission_3"] = "3. Test Podnošenje"; +$LANG["phrase_test_submission_received"] = "Test Podnošenje Primljeno"; +$LANG["phrase_text_and_html"] = "Text i HTML"; +$LANG["phrase_text_email"] = "Tekst E-mail"; +$LANG["phrase_text_template"] = "Tekst Predložak"; +$LANG["phrase_the_previous_month"] = "Prethodna godina Prethodni mjesec"; +$LANG["phrase_theme_description"] = "Tema Opis"; +$LANG["phrase_theme_info"] = "Tema Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Greška Tip:"; +$LANG["phrase_unselect_all"] = "Poništite sve"; +$LANG["phrase_update_accounts"] = "Update Računi"; +$LANG["phrase_update_email_template"] = "Update Email Predložak"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Update reda"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Postavi datoteku"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Upload Put do mape"; +$LANG["phrase_upload_folder_url"] = "Upload folder URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Koristite Zadana vrijednost?"; +$LANG["phrase_used_by_num_form_fields"] = "Used by # polja obrasca"; +$LANG["phrase_uses_swatches"] = "Koristi uzoraka"; +$LANG["phrase_valid_email"] = "Valjanu e-mail"; +$LANG["phrase_validation_error"] = "Provjera Greška"; +$LANG["phrase_validation_rule"] = "Provjere valjanosti Pravilo"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Vidi Grupe"; +$LANG["phrase_view_id"] = "Pregled oglasa"; +$LANG["phrase_view_name"] = "View Ime"; +$LANG["phrase_view_placeholders"] = "Pregled Placeholders"; +$LANG["phrase_view_submissions"] = "View Podnesci"; +$LANG["phrase_view_uploaded_files"] = "pogled učitanih datoteka"; +$LANG["phrase_viewing_range"] = "[gledanja {\$startnum} do {\$endnum}]"; +$LANG["phrase_when_sent"] = "Kada poslana"; +$LANG["phrase_when_submission_is_deleted"] = "Kada je izbrisati podnošenje"; +$LANG["phrase_when_submission_is_edited"] = "Kada je uredio podnošenje"; +$LANG["phrase_who_can_access"] = "Tko može pristupiti?"; +$LANG["phrase_word_limit_p"] = "Riječ granica."; +$LANG["phrase_year_to_date"] = "Godine do danas"; +$LANG["phrase_yes_for_all_views"] = "Da, za sve Pregleda"; +$LANG["phrase_yes_for_specific_views"] = "Da, za određene Pregleda"; +$LANG["phrase_your_account"] = "Your Account"; +$LANG["phrase_your_email"] = "Vaš e-mail"; +$LANG["phrase_your_email_address"] = "Vaša e-mail adresa"; +$LANG["processing_form_disabled"] = "Nažalost, ovaj obrazac je onemogućen."; +$LANG["processing_form_incomplete"] = "Nažalost, ovaj oblik ne pojavljuje se u potpunosti postaviti u roku od Obrazac Alati. Najvjerojatniji uzrok ovog problema je u tome što ste uklonili "form_tools_initialize_form" skriveno polje obrasca, ali nije potpuna sve korake "Dodaj Form" proces.

    Molimo Vas prijavite u obrascu i pregled konfiguracije."; +$LANG["processing_init_complete"] = "Hvala! Vaš test podnošenje je stavljen kroz uspješno. Molimo vratite se na obrascu Alati uprave panel i kliknite "Osvježi" gumb na dnu Dodaj Obrazac 3. korak stranicu završiti postavljanje obrasca."; +$LANG["processing_invalid_form_id"] = "Sorry, this doesn't appear to be a valid form ID."; +$LANG["processing_no_form_id"] = "process.php zahtijeva ID obrazac za obradu. Pobrinite se da Vaš obrazac sadrži skriveni polja sa imenom "form_tools_form_id", koja je prolazeći uz obrazac ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Oblik Alat je ne može odrediti gdje će preusmjeriti kad oni ne uspijevaju ući KAPETAN ispravno. Molimo proći u skriveno polje s imenom form_tools_form_url sadrži URL obrasca."; +$LANG["processing_no_post_vars"] = "process.php ne prima nikakve podatke. Napomena: ova skripta ne može se učitati izravno u browseru.
    Provjerite je li vaš obrazac šalje se poštom."; +$LANG["processing_no_redirect_url"] = "Podnošenje je obrađen korektno, ali niste naveli preusmjeriti URL za ovaj obrazac! Uredite svoj oblik u oblik Alati UI i dodajte URL za preusmjeravanje."; +$LANG["special_language"] = "Croatian"; +$LANG["special_language_locale"] = "Croatian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Sve račune novih klijenata će biti kreiran s postavkama i dozvole je niže definirano. Za nadjačati postavku za određenog klijenta, urediti račun klijenta i posjetiti njihovu karticu Postavke."; +$LANG["text_add_form_choose_integration_method"] = "Odaberite koji način želite koristiti za integraciju obrazac Obrazac s alati."; +$LANG["text_add_form_code_submission_benefits"] = "Ova metoda koristi obrazac Alati API , u glavnom obrascu Alati skripte. API pruža niz korisnih funkcija kako bi posao integrirajući obrasca s Forma Alati kao jednostavan kao moguć. Nema ograničenja kako obrasca može se podnijeti kada koristite API-ja. Možete poslati sadržaj u jednom pokretu, ili stranicu po stranicu, možete dodati i vlastitu prilagođenu server-side validacije, KAPETAN slike, možete odabrati da podnese informacije sada, ali samo to reći da bi se prikazao doprinos u obrascu Alati UI kasnije (vidi finaliziran Prijave dio u dokumentaciji API pomoći)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Kako da pošaljete svoje podatke obrasca putem PHP-u, obrasca moraju biti smješteni na istoj stranici kao i ove instalacije Obrazac Alati. Drugo, za ne-tehničke i novajlija Obrazac Alati korisnika, ova metoda može biti malo zastrašivanjem na prvom mjestu. No, postoji mnogo dokumentacije kako bi vam pomoći, uključujući i dva jednostavna tutoriali za integriranje Vaše jedinstveno-i multi-stranica forme (to su povezani na kasnije korak)."; +$LANG["text_add_form_direct_submission_benefits"] = "To je najjednostavniji način da pošaljete svoje obrazac Obrazac Alat. To ne zahtijeva bilo poznavanje PHP-a zahtijeva samo vrlo malu promjenu u svoj oblik. To je odlično za manji oblika gdje želite da samo dostaviti informacije za bazu podataka a zatim preusmjeriti korisnika na "hvala" stranici."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Ovaj podnošenje metoda je vrlo jednostavno koristiti, ali ne daje mnogo kontrolu za složenije oblike. Multi-page oblike ili oblike koji zahtijevaju server-side valjanosti su pogodnije za drugi način: putem podnošenja obrasca Alati API-ja."; +$LANG["text_add_form_field_types1"] = "Gotovo učinio! Ova stranica pokušava pronaći sve vaše polja obrasca i odrediti njihov vrsta polja. Kliknite Smart Ispunite gumb na desnoj da biste započeli. Bit ćete samo biti dopušteno da nastavi kada sve radnje su riješeni - pitanja koja treba vašu pažnju pojavljuju u "mjere koje su neophodne " stupcu."; +$LANG["text_add_form_field_types2"] = "Ako obrazac ne u HTML, kliknite gumb Preskoči nastaviti korak. To sve se može konfigurirati kasnije."; +$LANG["text_add_form_field_types3"] = "To ponovo učitava sadržaj obrasca (e). Napomena: ovaj će prebrisati sve promjene koje ste napravili na ovoj stranici."; +$LANG["text_add_form_field_types4"] = "U slučaju da naiđete na probleme, kliknite ovdje kako bi preskočiti ovaj korak. Sva neriješena polja postavljena na korištenje zadane vrijednosti. Možete prilagoditi tim područjima kasnije."; +$LANG["text_add_form_field_types_manual_upload"] = "Ako ste u mogućnosti Smart Ispunite polja, vi svibanj želite probati alternativno rješenje: upload kopije obrazaca u polja ispod."; +$LANG["text_add_form_field_types_manual_upload2"] = "Napomena: nemojte uploadati sirovine PHP stranicama (ili neki drugi server-side koda) - samo učitavanje HTML verzije. Da biste dobili ovaj, pregledavanje i spremanje stranica iz web preglednika."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Bilo je više polja koje se nisu mogle naći u obliku stranica koju ste naveli. To je uglavnom uzrokovano vjerojatno jedno od sljedećeg:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Unijeli ste jedan ili više oblika URL-ove više stranica obrasca na pogrešan način."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Jedan ili više stranica obrasca su zaštićeni lozinkom, a scenarij nije mogao pristupiti stranici."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Vi netočno unijeli oblik URL-a."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Kliknite ovdje za povratak na stranicu obrazac informacije kako biste provjerili postavke."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Vi promijenili oblik (e) nakon što test podnošenja"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Kliknite ovdje staviti preko drugi test podnošenje."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Vaš oblik je zaštićen lozinkom, a scenarij nije mogao pristupiti stranici."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "U drugoj kartici / prozora ovog preglednika, prijavite se obrazac zatim pritisnite gumb Osvježi stranicu u nastavku pokušati ponovno pronaći polja."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Ako nijedna od gore navedenih rješenja rad, vi svibanj također žele probati ručno upload obrasce za obradu ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Bilo je više polja koje se nisu mogle naći u obliku stranice koji ste naveli. To je uglavnom uzrokovano vjerojatno jedan od ovih:"; +$LANG["text_add_form_help_link"] = "Ako naiđete na bilo kakve poteškoće tijekom ove korake, pokušajte čitati iz korisničke dokumentacije ."; +$LANG["text_add_form_step_1_text_1"] = "Sljedeće stranice vode vas kroz korake za konfiguriranje Form Alati za spremanje obrasca. Prije nego što nastavite, provjerite da je:"; +$LANG["text_add_form_step_1_text_2"] = "oblik već je stvoren i to je dostupan putem URL-a (localhost je u redu)"; +$LANG["text_add_form_step_1_text_3"] = "jesu u mogućnosti to uređivati tvoj obrasca"; +$LANG["text_add_form_step_2_para_2"] = "Otvorite svoj oblik u editor od tvoj izbor i promijeniti oblik oznake na sljedeće, uključujući i dva skrivena polja."; +$LANG["text_add_form_step_2_para_3"] = "Dalje, otvoriti obrazac u web-pregledniku. Ispunite u svakom polju i predati. Nakon podnošenja, te bi trebao vidjeti poruka obavijesti. Kad se to prikazat će se poruka, vratite na ovu stranicu i kliknite osvježiti gumb ispod. Kada taj proces završi, vidjet ćete nastaviti gumb ispod, vodeći vas na sljedeći korak."; +$LANG["text_add_form_step_2_para_6"] = "U vašem slanje obrasca, uključuju sljedeće vrijednosti. Oni svibanj biti postavljena direktno preko PHP ili prošli zajedno kroz samog obrasca. U nastavku se nalaze primjeri za svaki. (\$ Varname) je mljeveno meso (ili asocijativna polja) svih informacija slanje obrasca - to je obično (\$ postvar) ili (\$ sessionvar) varijable, ali svibanj biti prilagođeni izgrađena."; +$LANG["text_add_form_step_2_text_2"] = "Unesite URL vaše "hvala " stranicu ovdje. Ovo je mjesto gdje želite da ljudi biti usmjerena nakon što je obrazac podnesen."; +$LANG["text_add_form_step_3_para_1"] = "Ova stranica navodi sva polja u obrascu dostave. Molimo ispitati svako polje i uklonite sve one koje ne morate pohranjuju za svaku pokornost. Ako izbrišete valjane polja slučajno, ili želite promijeniti podatke pohranjene vaše obrasca, povratak na prethodnu stranicu poslati novi test podnošenje."; +$LANG["text_add_form_step_3_para_2"] = "Napomena: Ako šaljete više vrijednosti pomoću potvrdnih okvira ili multi-odaberite okvir, provjerite je li vaš naziv polja završava s [] znakova (vidi korisničkoj dokumentaciji za više informacija)."; +$LANG["text_add_form_step_3_text_1"] = "Evo gdje zabava počinje! U ovom trenutku, Obrazac Alati čeka test iz podnošenje obrasca. To će koristiti ovaj obrazac za slanje znati koje informacije trebaju biti pohranjeni u bazi podataka."; +$LANG["text_add_form_step_3_text_2"] = "tako da pokažete svoje obrazac Obrazac Alati"; +$LANG["text_add_form_step_3_text_3"] = "na obrascu Alati API"; +$LANG["text_add_form_step_3_text_4"] = "Kako bi pomogli integrirati vaše obliku, predlažemo Vam da pročitate jedan od sljedećih tutoriali:"; +$LANG["text_add_form_step_3_text_5"] = "Oni objasniti kako da postavite svoj oblik u pripremi za test podnošenje, te uključiti i druge informacije koje svibanj biti od pomoći. Linija PHP trebat će vam je:"; +$LANG["text_add_form_step_3_text_6"] = "To osigurava podaci se zapravo šalje obrazac Alat. Kada ste stavili kroz testne podnošenje, kliknite gumb ispod."; +$LANG["text_add_form_step_3_text_7"] = "Na stranici Prije konačnog "thank you" stranica, svakako dodati sljedeći parametar za \$ params varijabla:"; +$LANG["text_add_form_step_5_para_1"] = "Baza podataka je postavljen da za ovaj obrazac i obrazac je aktiviran za korištenje. Ako ste napravili tako da pokažete svoju predaju obrasca za process.php, molimo da vratite vaš obrazac i ukloniti skrivene sljedeće polje:"; +$LANG["text_add_form_step_5_para_2"] = "Onda posjetite tvoj "hvala" na stranici prazni sjednicama. Kada se to učini, svi novi oblik podnesci će biti obrađena i pohranjena po Obrazac Alat. Pokušajte što podnošenje ili dva da biste provjerili je sve podatke ispravno učitavanje."; +$LANG["text_add_form_step_5_para_3"] = "Ako želite da fino podesili Vaš obrazac za opcije, kao što su auto-elektronička pošta, dodavanje dodatnih polja obrasca polje, odnosno prilagođavanje vrste polje obrasca, svibanj uređivati svoje obliku u bilo kojem trenutku."; +$LANG["text_add_form_step_5_para_4"] = "Budući obrasca sadrži datoteke polja, morat ćete konfigurirati svako polje odrediti mapu datoteke, koje datoteke su dozvoljeni i. Ovo se može naći na karticu Prikaz i uređivanje oblika stranicu."; +$LANG["text_add_form_step_5_para_5"] = "Ako podnošenje je poslana putem API-ja, promijenite ft_api_init_form_page liniju na prvoj stranici obrasca:"; +$LANG["text_add_submission_button"] = "Dodaj Podnošenje Gumb se pojavljuje samo za poglede koji su "može dodati podnesaka " opciju postavljena na "Da "."; +$LANG["text_admin_email_placeholder_info"] = "Ovo je e-mail adresa administratora Obrazac Alati, definiran u postavkama Vašeg računa. To samo izlazi adresu e-pošte, tako da ako želite koristiti kao HTML vezu, morat ćete ga zamotati u <a> oznake, kao što su na taj način:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Također stranicu zadanu temu prijava)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Prvo, molimo odaberite svoj oblik tipa."; +$LANG["text_client_form_page"] = "Ova stranica navodi sve oblike i Pregledano dodijeljenih ovog klijenta. Savjet: kako bi ih vidjeti obrasca podneske, oni trebaju biti dodijeljeni barem jedan prikaz."; +$LANG["text_client_map_filters_desc1"] = "Klijent Karta filtri omogućuju vam granica podnesci koji se pojavljuju u ovom Pregled prema kartiranje vrijednosti u polja obrasca na vrijednosti u računu klijenta."; +$LANG["text_client_no_forms"] = "Trenutno nemate obrasce dostupne za pregled."; +$LANG["text_client_welcome"] = "Dobro došli! Ovaj program pohranjuje sve podatke podnosi tvoj website posjetilac. Da biste vidjeli podnesaka na posebnom obrascu samo kliknite na link POGLEDOM, ili pogledajte krajnje lijeve navigacije izbornika za druge opcije."; +$LANG["text_config_file_created"] = "Vaša config.php datoteka stvorena."; +$LANG["text_config_file_not_created"] = "Nismo mogli stvoriti datoteke config.php. Te htijenje trebate kupiti stvoriti datoteku ručno."; +$LANG["text_config_file_not_created_instructions"] = "Kopirajte i zalijepite sadržaj iz odjeljka niže na datoteku pod nazivom config.php i postavite je putem FTP-a Obrazac Tools / globalne mape (mapu koja sadrži malo druge datoteke i direktorije, jedan file zvan library.php)."; +$LANG["text_confirm_delete_form"] = "Da, želim izbrisati ovaj obrazac"; +$LANG["text_create_admin_account"] = "Sada smo si idući u izraditi administratorski račun. Ovo se koristi za upravljanje svim aspektima Obrazac alati, kao što su dodavanje oblika i stvaranje računa klijenta."; +$LANG["text_create_new_client_account"] = "Koristite donji obrazac za stvaranje novog računa klijenta. Sva polja su obavezna."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "vidi PHP {\$datefunctionlink} funkcija za formatiranje opcije"; +$LANG["text_default_file_settings_page"] = "Ova stranica se definira postavke datoteka za upload vaš oblik Alati instalacije. Ova pravila primjenjuju se na sve učitane datoteke putem obrasca Alati, osim ako nije izričito nadjačati za pojedine polje obrasca. Napomena: Ako promijenite mapu nakon upload kartoteka imati bio upload, oni će automatski biti premještena u novu mapu."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Prije nastavka, morat ćete ažurirati / themes / default / predmemorija mapu kako bi se omogućilo puno čitati i pisati dozvolama. Nakon što je to učinjeno, ova poruka nestati, a vi možete instalirati skriptu."; +$LANG["text_default_values_in_view"] = "Ovaj dio nije obavezan. Svi podnesci stvoren s tom Pregled će sadržavati zadane vrijednosti navedene ovdje."; +$LANG["text_delete_all_forms"] = "Želim izbrisati sve datoteke koje su učitali putem ovog obrasca"; +$LANG["text_delete_form_warning"] = "Jeste li sigurni da želite izbrisati ovaj obrazac? This action cannot be undone. Svi podaci će biti trajno izgubljen!"; +$LANG["text_edit_admin_menu_page"] = "Vi svibanj uređivati svoje izborniku ispod. Da bi se osiguralo ste uvijek imati pristup svim funkcijama na raspolaganju u roku od Obrazac alati, potrebne su sljedeće stranice: Obrasci, klijenti, Vaš račun, Modules, Postavke i Odjava."; +$LANG["text_edit_client_menu_page"] = "Ova sekcija vam omogućuje da prilagodite lijevoj navigacijskoj stupac za svakog korisnika. Vi svibanj stvoriti koliko god mušterija izbornici kao što želite i dodijeliti bilo koji račun u jednom od njih. Po defaultu postoje dva izbornika: jedan za vas, administrator, i jedan za sve korisničke račune klijenata. Upravnik račun svibanj biti promjene, ali ne i ukloniti."; +$LANG["text_edit_tab_summary"] = "Ako želite grupe ovaj pogled na polja u kartice, samo unesite imena karticu u nastavku. Nakon što ste učinili, odaberite odgovarajuću karticu za svako polje grupu u polja na kartici ."; +$LANG["text_edit_view_list_page"] = "Ova kartica kontrole koja polja pojavljuju kao stupaca na stranici podnošenje Broj i nekoliko dodatnih postavki za ta polja. Napomena: preporučamo vam dodati ne više od 4 ili 5 od najvažnijih polja u prikazu."; +$LANG["text_email_settings_intro"] = "Ova stranica omogućava Vam utvrditi koji od tvoj polja obrasca priče elektronička pošta i njihova odgovarajuća imena. Nakon što ih ovdje definiraju, možete ih koristiti na svoju e-mail predložaka kao primatelja. Ovaj dio je potpuno neobavezno."; +$LANG["text_email_tab_summary"] = "Ovaj odjeljak omogućuje vam konstruirati bilo koji broj e-poruka će biti poslana kada se podnosi svoj oblik, i ostale trigera."; +$LANG["text_email_template_tab"] = "Ova sekcija vam omogućuje da odredite što se u sadržaju e-mail. Ako želite da pošaljete svoju e-mail samo kao tekst ili e-mail, samo unesite vrijednost za taj dio. Ako unesete vrijednost za obje, e-mail će biti poslan u oba formata."; +$LANG["text_email_template_text_1"] = "Došlo je do podnošenja se putem obrasca, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Došlo je do podnošenja se putem obrasca, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Thanks for your podnošenje!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Poruka o pogrešci prikazati ako polje ne provjere valjanosti"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Vanjski oblici su oblici koji već postoje na Vašoj web stranici, ili negdje na webu. Odaberite ovu opciju ako imate svoj vlastiti oblik kojem želite da se integriraju s Forma alati."; +$LANG["text_fields_tab_summary"] = "Na stranici se prikazuje sve vaše polja obrasca. Za kontrolu kako se pojavljuju prilikom pregledavanja podneske, pogledajte Pregleda karticu . Brisanje polja na ovoj stranici će ga izbrisati iz svih podnesaka, pa molimo budite oprezni!"; +$LANG["text_file_extension_info"] = "Unesite varalica protezanje odvojena zarezima (npr. jpg, gif, png) ili ostavite prazno za dopustiti bilo koji tip datoteke."; +$LANG["text_file_field_placeholders_info"] = "File polja su dva posebna rezervirana mjesta: FILEURL i FILENAME. FILEURL je puni URL za datoteku, tako da možete direktno povezati se s njom u Vaše e-pošte, FILENAME je samo ime datoteke."; +$LANG["text_filters_page"] = "Samo oni podnesci koje zadovoljavaju pravila koje ste definirali u nastavku će se pojaviti u ovom prikazu."; +$LANG["text_filters_tips"] = "Za savjete o tome kako koristiti podnošenje filteri, vidi korisničkoj dokumentaciji."; +$LANG["text_forgot_password"] = "Bez problema. Samo unesite vaše korisničko ime i ispod vaše podatke za prijavu bit će poslane na Vašu email adresu na datoteci. Ako ste zaboravili Vaše korisničko ime, molimo pošaljite email administratora na {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Ovaj obrazac sadrži jedan ili više polja datoteke:"; +$LANG["text_form_placeholder_info"] = "Sljedeći rezerviranih mjesta može se koristiti u bilo kojem e-mail predložak i jezik rezervirano područje, bez obzira na bilo koje Pregled e-mail predložak je dodijeljen. PITANJE rezerviranih mjesta su specifičan oblik pitanje, odgovor rezervirana mjesta su odgovore na svako pitanje."; +$LANG["text_form_submission_date_placeholder"] = "Datum podnošenja je napravio."; +$LANG["text_form_tools_form_url"] = "Puni URL obrasca. To ima samo vrijednost za vanjske oblike."; +$LANG["text_form_tools_login_url"] = "Obrazac za prijavu URL Alati."; +$LANG["text_form_view_permission_info_admin"] = "Napomena: ovaj obrazac trenutno ima vrstu administratorski pristup, tako da nitko od klijenata račune će moći vidjeti ovaj prikaz."; +$LANG["text_form_view_permission_info_private"] = "Napomena: ovaj obrazac trenutno ima privatni pristup upišite tako da javnim i privatnim opcije ovdje će biti ograničena na to podskup klijenata."; +$LANG["text_ft_installed"] = "Čestitamo, Obrazac Alati uspješno je instaliran!"; +$LANG["text_global_placeholder_info"] = "Ove rezerviranih mjesta svibanj se koristiti u bilo koji predložak i bilo kojem obliku."; +$LANG["text_group_name_explanation"] = "Za polja dodano kroz Dodaj Obrazac procesa, ova vrijednost je unaprijed popunjena za prikaz teksta bilo koje polje koristi vrijednost. Vi svibanj želite ga promijeniti kako bi se bolje opisali sadržaja."; +$LANG["text_install_create_config_file"] = "Obrazac Alati pohranjuje vaš server i bazu podataka postavke u datoteci config.php zove, našao u svom / globalne / folder. Kliknite na "Izradi File" gumb da se automatski generirati datoteku na vašem poslužitelju."; +$LANG["text_install_create_database_tables"] = "Sada smo si idući u izraditi obrazac Alati baze podataka tablica. Ovaj korak zahtijeva baze podataka sama da je već stvoren. Ako niste sigurni kako to učiniti, molimo kontaktirajte davatelja usluge hostinga."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL server host" obično znači da hostname ste unijeli nije ispravan. Možda pokušati postavljanje to "localhost" - ovo je uobičajen način da se odnose na "lokalni" bazu podataka na web server."; +$LANG["text_install_db_tables_error_tip_2"] = ""Ne moći povezivanje to lokalni MySQL poslužitelj preko utičnica" znači baze podataka hostname polje je opet kriv."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" znači da postoji problem sa svoje korisničko ime / password kombinacija."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... to database ..." znači da, iako svoje korisničko ime i zaporku koje ste dobili ispravan, to nije bio u mogućnosti to povezivanje to da određenu bazu podataka s tom računu. To može značiti da je bilo vaše naziv baze podataka nije ispravan, ili da je ovaj korisnički račun nije povezan sa tom bazom podataka."; +$LANG["text_install_email_content_text"] = "Na našoj web stranici ima mnogo resursa koji će vam pomoći da započnete, uključujući našu online dokumentaciju (https://docs.formtools.org) i vodiče (https://docs.formtools.org/tutorials). Ako smatrate da ste zaglavili ili imate pitanje, postavite pitanje o githubu (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Nažalost, obrazac Alati neće biti u mogućnosti to trčanje na vašem poslužitelju. Molimo kliknite ovdje za minimalne zahtjeve."; +$LANG["text_install_system_check"] = "Ova stranica radi nekoliko testova na vašem sustavu kako bi se osiguralo da je u mogućnosti to trčanje Form Alat."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Unutarnja oblici postoje samo u Obrazac Alati - nisu drugdje na vašim stranicama. Jedini oblik Alati korisničke račune će imati pristup obrascu. Odaberite ovu opciju ako nemate postojeći obrazac."; +$LANG["text_internal_form_intro"] = "Koristite donji obrazac za stvaranje nove unutarnje obliku. Sve postavke, uključujući broj i sadržaj polja obrasca može se promijeniti i konfigurirati kasnije."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Da bi prijava i obrazaca Tools, morate imati omogućen JavaScript u pregledniku. Molimo omogućite sada, i kliknite na refresh u vašem browseru."; +$LANG["text_last_modified_date_explanation_c"] = "Posljednji put ove predaje je put. Za nove podnesaka, to je isto kao:"; +$LANG["text_limit_email_content_desc"] = "Ova opcija radi samo za HTML i tekst sadržaj generirana sa Smarty petlje."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(samo listama Pregleda s jednim ili više filtera definiran)"; +$LANG["text_log_in_to_ft"] = "Prijavite se u obrazac Alati"; +$LANG["text_login"] = "Molimo prijavite se ispod kako biste pristupili (\$ program_name) Administration Panel. Ako ste zaboravili vašu lozinku, kliknite ovdje."; +$LANG["text_login_info"] = "Kao što je zatraženo, ovdje je svoje podatke za prijavu."; +$LANG["text_name_of_form"] = "Naziv obrasca."; +$LANG["text_no_clients"] = "Trenutno nema klijentima u bazu podataka. Da biste dodali novi račun klijenta, kliknite Dodaj Client gumb ispod."; +$LANG["text_no_clients_found"] = "Nema klijentima were found. Pokušajte širenje kriterije pretraživanja."; +$LANG["text_no_fields_in_view"] = "Ovaj pogled nema polja u njega. Kliknite na link ispod."; +$LANG["text_no_forms"] = "Trenutno nema obrazaca u bazu podataka. Da biste dodali novi obrazac, kliknite gumb Dodaj obrazac u nastavku."; +$LANG["text_no_forms_found"] = "Nema oblici su pronađeni."; +$LANG["text_no_forms_found_search"] = "Nema oblici su pronađeni. Pokušajte proširenje kriterije pretraživanja."; +$LANG["text_no_modules_found"] = "Nema moduli were found. Pokušajte širenje kriterije pretraživanja."; +$LANG["text_no_recipients_added"] = "Nema primatelji su dodani."; +$LANG["text_no_search_results"] = "Nema rezultata s ovim kriterijima pretraživanja / Pregled."; +$LANG["text_no_submissions_found"] = "Nažalost, nije pronađena su podnesaka."; +$LANG["text_no_themes"] = "Vi ne imati bilo koji definirani teme. Kliknite gumb ispod kako biste osvježili temu popisa, ili provjeriti korisnički Obrazac Alati dokumentacije za informacije o dodavanju teme."; +$LANG["text_non_deletable_fields"] = "Ovo polje se koristi Core skripta i ne može se uređivati ​​ili brisati bez uzrokovanja nekompatibilnosti. Ako želite napraviti izmjene na vrstu polja, napraviti kopiju i uređivati ​​kopije."; +$LANG["text_option_list_group_explanation"] = "Ako je odabrano, omogućuje grupi mogućnosti. Kako su prikazane grupe ovisi o vrstu polja koristite ovu opciju popis."; +$LANG["text_option_list_page"] = "Gumbe, okvire, padajućim popisima i multi-odaberite padajući polja sve osigurati korisnik s više opcija koje možete odabrati jednu ili više stavki. U Obrazac Alati, to su poznat kao opcija popise. Općenito, ovi se stvaraju automatski Dodaj vanjski oblik proces, ali možete i ručno dodati ili urediti opcije popisa u nastavku, ako obrazac izmjene sadržaja ili izgraditi polja koja se koriste samo interno."; +$LANG["text_option_list_used_by_fields"] = "Ova opcija Popis koristi više polja obrasca. Ako ažurirate podatke ispod, to će se promijeniti za sva polja (pogledajte polja obrasca da biste vidjeli popis polja). Ako želite ažurirati vrijednosti za jednu, ili podskup polja koja su trenutno dodijeljene, kliknite ovdje kako bi stvorili novu opciju popis s iste vrijednosti kao i ovaj. Zatim možete dodijeliti polja obrasca koje želite nove grupe."; +$LANG["text_public_form_omit_list_page"] = "Javna obrascima dati prednost ostavljajući svih računa klijenta im pristupiti bez da ručno dodijeliti svakom klijentu za njih. Ova stranica omogućuje vam djelić one klijente koji svibanj ne pristupa ovom obliku, čak i oblik je označeno kao javno."; +$LANG["text_public_view_omit_list_page"] = "Javna Pregleda vam korist računa klijenta ostavljajući sve im pristupiti bez da ručno dodijeliti svakom klijentu za njih. Ova stranica omogućuje vam djelić one klijente koji svibanj ne pristupa ovom View."; +$LANG["text_reference_tab_info"] = "Ova stranica popis svih rezerviranih mjesta na raspolaganju za svoj oblik. Placeholders su nizovi koji se mogu koristiti u e-mail predložaka, te polja označena sa posebnim rezervirano ikonu . Kada je ušla u polju, oni dinamički se pretvaraju u odgovarajuće vrijednosti kada polje gleda ili e-mail je poslan."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Pregled korisničkoj dokumentaciji"; +$LANG["text_send_email_from_edit_submission_page"] = "Uključite ovu opciju za slanje e-pošte od Uredi Podnošenje stranice"; +$LANG["text_smart_fill_option_list_problem"] = "Nismo bili u mogućnosti Smart Ispunite polja mogućnosti. Međutim, kao alternativu, možete pokušati učitati kopiju obrasca stranice u polje ispod. Napomena: nemojte uploadati sirovine PHP stranicama (ili neki drugi server-side koda) - samo učitavanje HTML verziju. Da biste dobili ovaj, pregledavanje i spremanje stranica iz web preglednika."; +$LANG["text_submission_ip_address"] = "IP adresa korisnika koji je predaju."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Koristite donji obrazac za ni vidjeli ili sami pošaljite e-mail generirani od ove e-mail predložak. E-mail je poslan samo na e-mail naveden ispod, glavni, CC i BCC e-mail adresa primatelja se ignoriraju prilikom testiranja."; +$LANG["text_test_email_templates_no_submissions"] = "Kako bi se testirati svoju e-mail predložaka, prvo morate staviti kroz barem jedan oblik pokornosti."; +$LANG["text_theme_page_intro"] = "Ova stranica navodi sve svoje teme. Kliknite na sličicu da vidite veću primjer temu u stilove. "Enabled" ček određuje je li ili ne da je tema svibanj biti odabrani od strane klijenata. Za pregledavanje svih dostupnih tema, posjetite web-obrasca Alati."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Dodavanje svoj prvi oblik!"; +$LANG["text_unique_submission_id"] = "Podnošenje jedinstveni ID."; +$LANG["text_unused_option_list"] = "Ova opcija popis se ne koriste bilo koji oblik polja."; +$LANG["text_upgraded"] = "Instalacija je ažurirati na to {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Ova opcija Popis se koristi u sljedećim poljima."; +$LANG["text_view_fields_info"] = "Ova kartica kontrole koja polja se pojaviti prilikom uređivanja doprinos u ovom pogledu, njihov redoslijed i jesu li uređivati ​​ili ne."; +$LANG["text_view_tab_summary"] = "Ova kartica vam omogućuje da napravite različite načine u grupu i organizirati vaše podatke. Pregleda vam stvoriti prilagođene podskupova svojih podataka obrasca ga podijeliti na rukovanje chunks, i da se ograniči ono što klijenti mogu vidjeti ili urediti."; +$LANG["validation_account_disabled"] = "Na žalost, Vaš račun je onemogućen."; +$LANG["validation_account_not_recognized"] = "Žao nam je, da korisničko ime ne prepoznaje."; +$LANG["validation_account_not_recognized_info"] = "Nažalost, da korisničko ime nije pronađeno. Pokušajte ponovo, ili kontaktirajte administratora na niže navedenoj adresi."; +$LANG["validation_account_pending"] = "Vaš korisnički račun se čeka odobrenje od strane administratora."; +$LANG["validation_check_delete_client"] = "Jeste li sigurni da želite izbrisati ovaj račun klijenta?"; +$LANG["validation_client_password_missing_number"] = "Lozinka klijent mora sadržavati barem jedan broj (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Lozinka klijent mora sadržavati barem jednu od sljedećih znakova: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Lozinka klijent mora sadržavati barem jedno slovo veliko."; +$LANG["validation_client_password_too_short"] = "Klijent lozinku treba biti najmanje {\$number} znakova."; +$LANG["validation_col_name_is_reserved_word"] = "Nažalost, ovaj naziv baze podataka stupac rezerviran rad u MySQL. Molimo preimenovati!"; +$LANG["validation_db_name"] = "Imena baza podataka ne mogu sadržavati razdoblja ili kose crte."; +$LANG["validation_db_not_updated_invalid_input"] = "Baza podataka nije mogao biti ažuriran. Molimo provjerite vrijednosti koje ste unijeli su važeće."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Na žalost, zadanim administrator i klijent teme uvijek mora biti omogućena."; +$LANG["validation_default_phone_num_required"] = "Molimo Vas da ispunite u punom telefonski broj za <b> { \$ polje} </ b> - samo brojevi."; +$LANG["validation_default_rule_alpha"] = "Molimo unesite samo slova i brojevi za <b> { \$ polje} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Molimo unesite samo slova za <b> { \$ polje} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Molimo unesite samo brojeve za <b> { \$ polje} </ b>."; +$LANG["validation_default_rule_required"] = "Unesite vrijednost za <b> { \$ polje} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Molimo unesite važeću e-mail adresu za <b> { \$ polje} </ b>."; +$LANG["validation_delete_form_confirm"] = "Molimo, potvrdite okvir da biste potvrdili da želite izbrisati ovaj obrazac."; +$LANG["validation_delete_non_empty_option_list"] = "Upozorenje! Ova opcija Popis se koristi jedan ili više polja obrasca. To Brisanje će ta polja prestati raditi ispravno."; +$LANG["validation_display_names_incomplete"] = "Molimo unesite vrijednost za sve Prikaz Imena, ili kliknite opciju Smart Ispuni im ulazak dinamički."; +$LANG["validation_duplicate_form_field_name"] = "Ne možete imati više polja s istim naziv polja."; +$LANG["validation_email_not_found_or_invalid"] = "Nažalost, e-pošte povezanu s Vašim računom ili ne postoji ili nije ispravna."; +$LANG["validation_folder_invalid_permissions"] = "Kako bi se pokrenuti ovaj test, dozvole moraju se postaviti na upload mapu kako bi se omogućilo čitanje i pisanje kartoteka (777 na Unixu)."; +$LANG["validation_folder_not_writable"] = "Ova mapa nije writeable."; +$LANG["validation_internal_form_too_many_fields"] = "Nažalost, možete samo stvorili obrasce s 1000 polja ili manje."; +$LANG["validation_invalid_admin_email"] = "Molimo unesite adminstrator valjanu adresu e-pošte."; +$LANG["validation_invalid_admin_username"] = "Vaše korisničko ime mogu se sastojati od alfanumeričkih znakova (AZ i 0-9)."; +$LANG["validation_invalid_client_username"] = "Klijenta korisničko ime samo svibanj sastojati od alfanumeričkih znakova (AZ i 0-9)."; +$LANG["validation_invalid_client_username2"] = "Nažalost, korisničko ime je svibanj sadržati samo slova, brojeva i podvlaka. Molimo unesite novo korisničko ime."; +$LANG["validation_invalid_column_name"] = "Nazive stupaca može biti samo alfanumeričke (az, 0-9). Molimo provjerite nazive stupaca."; +$LANG["validation_invalid_custom_from_email"] = "Unesite valjani običaj 'Od' e-mail adresa."; +$LANG["validation_invalid_custom_reply_to_email"] = "Unesite valjani običaj 'Odgovor-na' e-mail adresa."; +$LANG["validation_invalid_default_sessions_timeout"] = "Molimo unesite valjanu vrijednost (broj) za zadani timeout sjednice."; +$LANG["validation_invalid_email"] = "Unesite valjanu adresu e-pošte."; +$LANG["validation_invalid_email_id"] = "Nažalost, to je nevažeća e-mail ID-a."; +$LANG["validation_invalid_folder"] = "Nažalost, to se ne pojaviti se biti ispravan."; +$LANG["validation_invalid_form_field_names"] = "Polja obrasca svibanj biti samo alfanumeričke i podvlake (AZ, 0-9, _), bez razmaka."; +$LANG["validation_invalid_num_clients_per_page"] = "Molimo unesite samo brojeve u Num Klijenti Per Page polju."; +$LANG["validation_invalid_num_emails_per_page"] = "Molimo unesite samo znamenke za e-poštu po stranici."; +$LANG["validation_invalid_num_form_fields"] = "Molimo unesite samo brojevi u brojnim područjima polja."; +$LANG["validation_invalid_num_forms_per_page"] = "Molimo unesite samo brojeve u Num Obrasci Per Page polju."; +$LANG["validation_invalid_num_menus_per_page"] = "Molimo unesite samo znamenke za izbornike po stranici."; +$LANG["validation_invalid_num_modules_per_page"] = "Molimo unesite samo brojeve u Num Moduli Per Page polju."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Molimo unesite samo brojevi u popisima Num opcija po stranici polju."; +$LANG["validation_invalid_num_submissions_per_page"] = "Unesite valjani broj podnesaka po stranici."; +$LANG["validation_invalid_sessions_timeout"] = "Unesite valjani session timeout (integers samo!)."; +$LANG["validation_invalid_tab_assign_values"] = "Molimo unesite samo brojeve u 'iz' i 'u' polja."; +$LANG["validation_invalid_table_prefix"] = "Molimo unesite baze podataka sastoji se od prefiksa pisma i podvlaka jedini."; +$LANG["validation_invalid_upload_folder"] = "Vaš server je instalacija PHP je nevažeći postavka za upload_tmp_dir vrijednost. "{\$upload_folder}" nije ispravan."; +$LANG["validation_invalid_url"] = "Molimo unesite valjani URL."; +$LANG["validation_invalid_username"] = "Vaše korisničko ime samo svibanj sastojati od alfanumeričkih znakova (AZ i 0-9)."; +$LANG["validation_is_form_active"] = "Molimo naznačite da li je obrazac aktivan ili ne."; +$LANG["validation_menu_name_taken"] = "Nažalost, ovaj meni ime je već zauzeto. Molimo odaberite novo ime."; +$LANG["validation_modules_search_no_status"] = "Molimo odaberite omogućeni ili onemogućeni kućice."; +$LANG["validation_no_access_type"] = "Molimo unesite vrstu pristupa."; +$LANG["validation_no_account_logout_url"] = "Molimo unesite URL logout."; +$LANG["validation_no_account_password_confirmed"] = "Molim ponovo unesite novu lozinku."; +$LANG["validation_no_account_password_confirmed2"] = "Molimo ponovno unesite novu lozinku."; +$LANG["validation_no_admin_email"] = "Molimo unesite administratorski e-mail adresa."; +$LANG["validation_no_admin_theme"] = "Molimo odaberite temu za administratorski račun."; +$LANG["validation_no_admin_theme_swatch"] = "Molimo odaberite uzorak za administratora temu."; +$LANG["validation_no_client_email"] = "Molimo unesite klijenta e-mail adresa."; +$LANG["validation_no_client_first_name"] = "Molimo unesite ime klijenta."; +$LANG["validation_no_client_last_name"] = "Molimo unesite klijenta prezime."; +$LANG["validation_no_client_login_page"] = "Molimo navedite koju stranicu klijent bi trebao biti redirekcija to kada su se prijavili"; +$LANG["validation_no_client_password"] = "Molimo unesite mušterija 'lozinka."; +$LANG["validation_no_client_theme_swatch"] = "Molimo odaberite zadani uzorak za klijenta račune."; +$LANG["validation_no_client_username"] = "Molimo, unesite korisničko ime klijenta."; +$LANG["validation_no_column_name"] = "Molimo unesite sve nazive stupaca, ili kliknite Smart Ispuni gumb za automatsko ih ispuniti."; +$LANG["validation_no_column_selected"] = "Molimo odaberite barem jedno polje će se pojaviti kao stupac na stranici podnošenje unos."; +$LANG["validation_no_custom_from_email"] = "Molimo unesite običaj 'Od' e-mail adresa."; +$LANG["validation_no_custom_recipient_email"] = "Molimo unesite adresu e-pošte primatelja običaj."; +$LANG["validation_no_custom_reply_to_email"] = "Molimo unesite običaj 'Odgovor-na' e-mail adresa."; +$LANG["validation_no_date_format"] = "Molimo unesite format datuma."; +$LANG["validation_no_db_column_single"] = "Molimo unesite ime baze podataka stupca."; +$LANG["validation_no_db_hostname"] = "Molimo unesite naziv hosta baze podataka."; +$LANG["validation_no_db_name"] = "Molimo unesite ime baze podataka."; +$LANG["validation_no_db_username"] = "Molimo unesite korisničko ime za račun bazu podataka."; +$LANG["validation_no_default_client_theme"] = "Molimo odaberite zadanu temu za sve račune novih klijenata."; +$LANG["validation_no_default_language"] = "Molimo odaberite zadani jezik za instalaciju Obrasca Alat."; +$LANG["validation_no_default_sessions_timeout"] = "Molimo unesite timeout zadani za korisničke račune sjednice."; +$LANG["validation_no_display_text"] = "Molimo unesite prikaz teksta za svako polje."; +$LANG["validation_no_display_text_single"] = "Unesite vrijednost za prikaz teksta."; +$LANG["validation_no_edit_submission_page_label"] = "Molimo unesite stranica Uređivanje Podnošenje oznake."; +$LANG["validation_no_email"] = "Unesite svoju adresu e-pošte."; +$LANG["validation_no_email_config_field"] = "Molimo, odredite koji je oblik polja je polje email."; +$LANG["validation_no_email_content"] = "Molimo unesite adresu e-sadržaja za barem jedan od formata (HTML ili tekst)."; +$LANG["validation_no_email_from_field"] = "Molimo Vas e-mail ', s' polja."; +$LANG["validation_no_email_template_name"] = "Molimo unesite adresu e-naziv predloška."; +$LANG["validation_no_email_template_view_id"] = "Molimo odaberite Pogled na koje se ovaj e-mail predložak treba mapirati."; +$LANG["validation_no_email_template_view_mapping_value"] = "Molimo naznačite kada e-mail bi trebao biti poslan."; +$LANG["validation_no_enabled_themes"] = "Molimo provjerite je li uključen najmanje jedne teme."; +$LANG["validation_no_first_name"] = "Molimo unesite svoje ime."; +$LANG["validation_no_form_field_name"] = "Molimo unesite sve nazive polja obrasca."; +$LANG["validation_no_form_field_single"] = "Molimo unesite vrijednost polja obrasca."; +$LANG["validation_no_form_id"] = "Obrazac ID nije naveden. Molimo, prijavite se i pokušajte ponovo."; +$LANG["validation_no_form_name"] = "Molimo unesite naziv obrasca."; +$LANG["validation_no_form_url"] = "Molimo unesite URL obrazac."; +$LANG["validation_no_last_name"] = "Molimo unesite svoje prezime."; +$LANG["validation_no_login_page"] = "Molimo naznačite koje stranice želite biti poslane svaki put kada se prijavite"; +$LANG["validation_no_logout_url"] = "Molimo unesite URL logout."; +$LANG["validation_no_main_email_recipient"] = "Molimo unesite barem jedan glavni primatelja e-pošte (tj. ne CC ili BCC)."; +$LANG["validation_no_menu"] = "Molimo odaberite izbornik za ovaj korisnički račun."; +$LANG["validation_no_menu_id"] = "Molimo odaberite izbornik."; +$LANG["validation_no_num_clients_per_page"] = "Molimo unesite broj računa klijenta po stranici."; +$LANG["validation_no_num_emails_per_page"] = "Molimo unesite broj e-pošte na popisu po stranici."; +$LANG["validation_no_num_form_fields"] = "Molimo unesite broj polja za obrazac."; +$LANG["validation_no_num_forms_per_page"] = "Molimo unesite broj oblika po stranici."; +$LANG["validation_no_num_menus_per_page"] = "Molimo unesite broj izbornika do liste po stranici."; +$LANG["validation_no_num_modules_per_page"] = "Molimo unesite broj modula po stranici."; +$LANG["validation_no_num_option_lists_per_page"] = "Molimo unesite broj opcija popisa po stranici."; +$LANG["validation_no_num_submissions_per_page"] = "Molimo unesite broj podnesaka prikazati po stranici."; +$LANG["validation_no_option_list_name"] = "Molimo unesite ime opciju popis."; +$LANG["validation_no_page_titles"] = "Molimo unesite naslove zadani za korisničke račune stranicu."; +$LANG["validation_no_password"] = "Unesite svoju lozinku."; +$LANG["validation_no_program_name"] = "Molimo unesite ime programa."; +$LANG["validation_no_second_password"] = "Molimo ponovno upišite svoju lozinku."; +$LANG["validation_no_sessions_timeout"] = "Molimo unesite session timeout."; +$LANG["validation_no_smart_fill_values"] = "Molimo unesite naziv polja obrasca i URL obrasca."; +$LANG["validation_no_table_prefix"] = "Molimo unesite baze podataka prefiks."; +$LANG["validation_no_tabs_defined"] = "Nema Kartice definirani"; +$LANG["validation_no_test_email_recipient"] = "Molimo unesite adresu e-pošte, gdje bismo trebali poslati e-test."; +$LANG["validation_no_test_email_submission_id"] = "Molimo unesite podnošenje ID broj."; +$LANG["validation_no_theme"] = "Molimo odaberite temu."; +$LANG["validation_no_theme_swatch"] = "Molimo odaberite uzorak za odabranu temu."; +$LANG["validation_no_timezone_offset"] = "Molimo unesite zonu offset."; +$LANG["validation_no_titles"] = "Molimo unesite naslov stranice."; +$LANG["validation_no_two_column_names"] = "Nažalost, ne svibanj unijeti isti naziv stupca baze podataka dvaput."; +$LANG["validation_no_ui_language"] = "Molimo odaberite jezik za sučelje."; +$LANG["validation_no_url"] = "Molimo unesite URL."; +$LANG["validation_no_username"] = "Molimo unesite Vaše korisničko ime."; +$LANG["validation_no_username_or_js"] = "Morate unijeti svoje korisničko ime. Please activate javascript u svom pregledniku."; +$LANG["validation_no_view_fields"] = "Vaša Pregled ne sadrži polja! Morate dodijeliti barem jedno polje da postoji nešto za pokazati se u svom View."; +$LANG["validation_no_view_fields_selected"] = "Molimo odaberite jedan ili više polja za dodavanje na View."; +$LANG["validation_no_view_name"] = "Molimo unesite naziv svoje View."; +$LANG["validation_num_rows_to_add"] = "Molimo unesite broj redaka za dodati."; +$LANG["validation_option_list_name_taken"] = "Žao nam je, ovaj naziv mogućnost popis već je preuzeta. Molimo odaberite novo ime."; +$LANG["validation_password_in_password_history"] = "Za sigurnost, ne mogu ući u istu lozinku kao bilo koji od posljednjih {\$history_size} lozinka. Molimo unesite drugi lozinku."; +$LANG["validation_passwords_different"] = "Molimo provjerite lozinka su isti."; +$LANG["validation_please_enter_search_date_range"] = "Molimo odaberite raspon datuma za pretraživanje."; +$LANG["validation_please_enter_search_keyword"] = "Unesite ključne riječi za pretraživanje."; +$LANG["validation_select_field_type"] = "Molimo Vas odaberite vrstu polja."; +$LANG["validation_select_submissions_to_copy"] = "Odaberite one podneske koje želite kopirati."; +$LANG["validation_select_submissions_to_delete"] = "Molimo Vas da odaberete one podnesaka želite izbrisati."; +$LANG["validation_smart_fill_cannot_fill"] = "Nažalost, nismo mogli popuniti ovo polje."; +$LANG["validation_smart_fill_invalid_field_type"] = "Nismo bili u mogućnosti locirati polja, ali nije dropdown, kućicu ili radio grupe."; +$LANG["validation_smart_fill_no_field_found"] = "Nažalost, nismo mogli pronaći polje obrasca s tim imenom na stranici naveden."; +$LANG["validation_smart_fill_no_page"] = "Molimo pronađite stranicu koja sadrži polje koje želite Smart ispune."; +$LANG["validation_smart_fill_upload_all_pages"] = "Molimo učitajte sve stranice u obliku."; +$LANG["validation_upload_folder_not_writable"] = "Ta privremena upload mapa odredio Vaš PHP instalacija nije writable. Dok ne riješite ovaj, datoteke ne mogu biti učitane kroz obrazac Alati (ili bilo koje druge PHP program). Molimo kontaktirajte Vašeg hosting providera."; +$LANG["validation_upload_html_files_only"] = "Molimo Vas da učitavate samo HTML datoteke."; +$LANG["validation_username_taken"] = "Nažalost, to ime je već zauzeto. Molimo unesite drugo korisničko ime."; +$LANG["validation_wrong_password"] = "Žao nam je, da se zaporka ne podudaraju."; +$LANG["word_about"] = "O"; +$LANG["word_access"] = "Pristup"; +$LANG["word_account"] = "Račun"; +$LANG["word_account_sp"] = "Račun (e)"; +$LANG["word_accounts"] = "Računi"; +$LANG["word_action"] = "Akcija"; +$LANG["word_active"] = "Aktivan"; +$LANG["word_add"] = "Dodati"; +$LANG["word_add_rightarrow"] = "Dodaj »"; +$LANG["word_add_uc_rightarrow"] = "DODAJ »"; +$LANG["word_administration"] = "Administracija"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Poslje"; +$LANG["word_aquamarine"] = "Akvamarin"; +$LANG["word_asc"] = "Uzlazno"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«povratak"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Prije"; +$LANG["word_benefits"] = "Benefits"; +$LANG["word_blue"] = "Plava"; +$LANG["word_cancel"] = "Otkazati"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Okvir za izbor"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Klijent"; +$LANG["word_client_c"] = "Klijent:"; +$LANG["word_clients"] = "Klijenti"; +$LANG["word_close"] = "ZATVORI"; +$LANG["word_code"] = "Kod"; +$LANG["word_column"] = "Stupac"; +$LANG["word_columns"] = "Stupci"; +$LANG["word_columns_sp"] = "Stupac (a)"; +$LANG["word_complete"] = "POTPUN"; +$LANG["word_configuration"] = "Konfiguracija"; +$LANG["word_content"] = "Sadržaj"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Nastavak »"; +$LANG["word_copy"] = "Kopirati"; +$LANG["word_custom"] = "Prilagođen"; +$LANG["word_data"] = "Podaci"; +$LANG["word_date"] = "Datum"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Izbriši"; +$LANG["word_desc"] = "Silazno"; +$LANG["word_direct"] = "Direktno"; +$LANG["word_disabled"] = "Onemogućen"; +$LANG["word_documentation"] = "Dokumentacija"; +$LANG["word_done"] = "Gotovo"; +$LANG["word_drawbacks"] = "Nedostataka"; +$LANG["word_dropdown"] = "Padajući"; +$LANG["word_edit"] = "Uredi"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "E-pošta"; +$LANG["word_email_c"] = "E-mail:"; +$LANG["word_emails"] = "E-pošte"; +$LANG["word_enabled"] = "Omogućeno"; +$LANG["word_equals"] = "Jednako"; +$LANG["word_error"] = "Greška"; +$LANG["word_error_c"] = "Greška:"; +$LANG["word_examples_c"] = "Primjeri:"; +$LANG["word_external"] = "Vanjski"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Polje"; +$LANG["word_field_sp"] = "Polje/a"; +$LANG["word_fields"] = "Polja"; +$LANG["word_fields_sp"] = "Područje (a)"; +$LANG["word_file"] = "Datoteka"; +$LANG["word_file_b_uc"] = "[DATOTEKA]"; +$LANG["word_files"] = "Files"; +$LANG["word_filters"] = "Filteri"; +$LANG["word_filters_sp"] = "Filter (e)"; +$LANG["word_for"] = "za"; +$LANG["word_form"] = "Formular"; +$LANG["word_form_c"] = "Formular:"; +$LANG["word_formatting"] = "Oblikovanje"; +$LANG["word_forms"] = "Formulari"; +$LANG["word_found"] = "Pronašao"; +$LANG["word_from"] = "Formular"; +$LANG["word_from_c"] = "Od:"; +$LANG["word_general"] = "Opći"; +$LANG["word_green"] = "Zelenilo"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Visina"; +$LANG["word_help"] = "Pomoć"; +$LANG["word_hidden"] = "Skriven"; +$LANG["word_highlight"] = "Istaknuti"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Sat"; +$LANG["word_hours"] = "Sati"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Nepotpun"; +$LANG["word_install"] = "Instalacija"; +$LANG["word_installation"] = "Instalacija"; +$LANG["word_internal"] = "Interni"; +$LANG["word_language"] = "Jezik"; +$LANG["word_large"] = "Veliki"; +$LANG["word_like"] = "Nalik"; +$LANG["word_login"] = "Prijavi se"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Odjavi se"; +$LANG["word_main"] = "Glavne"; +$LANG["word_medium"] = "Srednji"; +$LANG["word_menu"] = "Izbornik"; +$LANG["word_menus"] = "Jelovnici"; +$LANG["word_minutes"] = "minuta"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Moduli"; +$LANG["word_na"] = "Nije dostupno"; +$LANG["word_name"] = "Ime"; +$LANG["word_name_c"] = "Ime:"; +$LANG["word_never"] = "Nikada"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "Sljedeći korak »"; +$LANG["word_no"] = "Ne"; +$LANG["word_none"] = "Bez"; +$LANG["word_notes"] = "Bilješke"; +$LANG["word_notification"] = "Obavijest"; +$LANG["word_number"] = "Broj"; +$LANG["word_off"] = "Izvan"; +$LANG["word_offline"] = "Nije spojen na mrežu"; +$LANG["word_okay"] = "U redu"; +$LANG["word_on"] = "Na"; +$LANG["word_online"] = "Spojen na mrežu"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Opcije"; +$LANG["word_orange"] = "Naranča"; +$LANG["word_order"] = "Narudžba"; +$LANG["word_other"] = "Drugi"; +$LANG["word_other_c"] = "Ostalo:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Stranica:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Lozinka"; +$LANG["word_password_c"] = "Lozinka:"; +$LANG["word_pending"] = "Neriješen"; +$LANG["word_permissions"] = "Dozvole"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«prethodna"; +$LANG["word_private"] = "Private"; +$LANG["word_public"] = "Javna"; +$LANG["word_purple"] = "Ljubičasta"; +$LANG["word_recipient"] = "Primalac"; +$LANG["word_recipient_sp"] = "Primalac(i)"; +$LANG["word_red"] = "Crveni"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Ukloniti"; +$LANG["word_remove_uc_leftarrow"] = "«Ukloni"; +$LANG["word_reply_to"] = "Odgovori"; +$LANG["word_reply_to_c"] = "Odgovori:"; +$LANG["word_required"] = "Potreban"; +$LANG["word_reset"] = "Resetiraj"; +$LANG["word_resolved"] = "Resolved"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "red"; +$LANG["word_search"] = "Traži"; +$LANG["word_searchable"] = "Pretraživati"; +$LANG["word_select"] = "Odaberi"; +$LANG["word_setting"] = "Postavka"; +$LANG["word_settings"] = "POSTAVKE"; +$LANG["word_show"] = "Pokazati"; +$LANG["word_size"] = "Veličina"; +$LANG["word_skipped"] = "Preskakivanje"; +$LANG["word_small"] = "Mali"; +$LANG["word_solution"] = "Otopina"; +$LANG["word_sortable"] = "Sortiranje"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Niz podataka"; +$LANG["word_subject"] = "Predmet"; +$LANG["word_subject_c"] = "Predmet"; +$LANG["word_submenu"] = "Podmeni"; +$LANG["word_submission"] = "Prijavak"; +$LANG["word_submissions"] = "Prijavci"; +$LANG["word_system"] = "Sistem"; +$LANG["word_tab"] = "Kartica"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (e)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Tekst"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "TextBox"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Teme"; +$LANG["word_time"] = "Vrijeme"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Savjeti"; +$LANG["word_today"] = "Danas"; +$LANG["word_truncate_q"] = "Odreži?"; +$LANG["word_uninstall"] = "Deinstalacija"; +$LANG["word_unknown"] = "Nepoznat"; +$LANG["word_update"] = "OSVJEŽAVANJE"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Korisnik"; +$LANG["word_username"] = "Korisničko ime"; +$LANG["word_username_c"] = "Korisničko ime:"; +$LANG["word_validation"] = "Provjera valjanosti"; +$LANG["word_value"] = "Vrijednost"; +$LANG["word_value_sp"] = "Vrijednosti"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Provjeriti"; +$LANG["word_version"] = "Verzija"; +$LANG["word_vertical"] = "Vertikalni"; +$LANG["word_view"] = "Izgled"; +$LANG["word_views"] = "Pregleda"; +$LANG["word_warning"] = "Upozorenje!"; +$LANG["word_warning_c"] = "Upozorenje:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Dobro došli!"; +$LANG["word_width_c"] = "širina:"; +$LANG["word_words"] = "Riječi"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Žuta"; +$LANG["word_yes"] = "Da"; \ No newline at end of file diff --git a/global/lang/hu.php b/global/lang/hu.php new file mode 100644 index 00000000..b5ded415 --- /dev/null +++ b/global/lang/hu.php @@ -0,0 +1,1219 @@ +Figyelem! Választotta {\$num_selected_on_page} beadványokat ezen az oldalon és a {\$num_selected_on_other_pages} más oldalakon. Kérjük válasszon az alábbi lehetőségek közül:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Figyelem! Nem választott észrevételt ezen az oldalon, de választott {\$num_selected_on_other_pages} más oldalakon. Kérjük, erősítse meg a törölni kívánt ezeket a beadványokat.
    "; +$LANG["confirm_delete_view"] = "Biztos benne, hogy törölni kívánja ezt a nézetet?"; +$LANG["confirm_refresh_page"] = "Biztos benne, hogy szeretné frissíteni kell az oldalt? Ez vesztett Ön által végzett módosításokat."; +$LANG["confirm_save_change_before_redirect"] = "Egy vagy több mező frissítésre kerültek. Szeretné menteni a változtatásokat, mielőtt átirányítás?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Biztos benne, hogy szeretné Smart fill töltse ki az adatbázis oszlop nevét? Ez felülírja a meglévő értékeket."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Ez az opció automatikusan generálja az adatbázis oszlop nevek alapján kijelz területén, így a tartalma az adatbázis tábla könnyebb olvasni."; +$LANG["confirm_smart_fill_display_names"] = "Biztos benne, hogy szeretné Smart Fill töltse ki a kijelezendő nevét? Ez felülírja a meglévő értékeket."; +$LANG["confirm_ungroup_option_list"] = "Biztos benne, hogy szeretné szétválasztani ezt a lehetőséget listán? Minden lehetőség lesz koncentrált egyetlen, csoportosított listáját."; +$LANG["confirm_uninstall_module"] = "Biztos benne, hogy el akarja távolítani ezt a modult? Minden modul adat elvész."; +$LANG["date_AM"] = "De"; +$LANG["date_Fri"] = "P"; +$LANG["date_Friday"] = "Péntek"; +$LANG["date_Mon"] = "H"; +$LANG["date_Monday"] = "Hétfő"; +$LANG["date_PM"] = "Du"; +$LANG["date_Sat"] = "Szo"; +$LANG["date_Saturday"] = "Szombat"; +$LANG["date_Sun"] = "V"; +$LANG["date_Sunday"] = "Vasárnap"; +$LANG["date_Thu"] = "Cs"; +$LANG["date_Thursday"] = "Csütörtök"; +$LANG["date_Tue"] = "K"; +$LANG["date_Tuesday"] = "Kedd"; +$LANG["date_Wed"] = "Sze"; +$LANG["date_Wednesday"] = "Szerda"; +$LANG["date_am"] = "de"; +$LANG["date_month_April"] = "Április"; +$LANG["date_month_August"] = "Augusztus"; +$LANG["date_month_December"] = "December"; +$LANG["date_month_February"] = "Február"; +$LANG["date_month_January"] = "Január"; +$LANG["date_month_July"] = "Július"; +$LANG["date_month_June"] = "Június"; +$LANG["date_month_March"] = "Március"; +$LANG["date_month_May"] = "Május"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Október"; +$LANG["date_month_September"] = "Szeptember"; +$LANG["date_month_short_Apr"] = "Április"; +$LANG["date_month_short_Aug"] = "Augusztus"; +$LANG["date_month_short_Dec"] = "December"; +$LANG["date_month_short_Feb"] = "Február"; +$LANG["date_month_short_Jan"] = "Január"; +$LANG["date_month_short_Jul"] = "Július"; +$LANG["date_month_short_Jun"] = "Június"; +$LANG["date_month_short_Mar"] = "Március"; +$LANG["date_month_short_May"] = "Május"; +$LANG["date_month_short_Nov"] = "November"; +$LANG["date_month_short_Oct"] = "Október"; +$LANG["date_month_short_Sep"] = "Szeptember"; +$LANG["date_pm"] = "du"; +$LANG["notify_account_deleted"] = "A felhasználói fiók törlésre került."; +$LANG["notify_account_updated"] = "Fiókjának frissítése sikeresen megtörtént."; +$LANG["notify_add_display_values"] = "Add hozzá megjelenítése értékek"; +$LANG["notify_admin_menu_updated"] = "Az adminisztráció menü frissült."; +$LANG["notify_admin_theme_overridden"] = "A rendszergazda témája volt manuálisan manipulálhatók."; +$LANG["notify_allow_url_fopen_not_set"] = "Sajnáljuk, ez a vizsgálat nem fut a web szerver. Megköveteli allow_url_fopen kell beállítani, hogy 1-php.ini fájlban. Ez a beállítás lehetővé teszi a PHP-hoz belépés fájlokat egy URL-t, amely szükséges végrehajtani ezt a vizsgálatot. Tudod teszt kézzel feltöltésével egy fájlt a mappába FTP-n keresztül, majd megpróbál hozzáférni az URL-t szállítottak."; +$LANG["notify_change_temp_password"] = "Csak bejelentkezett egy ideiglenes jelszót. Meg kell törölni a jelszót most!"; +$LANG["notify_click_to_edit_new_submission"] = "Kattintson ide az új beadvány szerkesztéséhez."; +$LANG["notify_client_account_menus_updated"] = "Az ügyfél számláján (számláin) frissítve lett az {\$menu_name} menüben. Most törölni a menüt, hogy korábban kapcsolódó számla (k)."; +$LANG["notify_client_account_not_updated"] = "Az ügyfél számlája nem lehet frissíteni."; +$LANG["notify_client_account_themes_updated"] = "Az ügyfél számláján (számláin) frissítve lett a {\$theme} téma. Most tiltsa le a témát korábban kapcsolódó számla (k)."; +$LANG["notify_client_account_updated"] = "Az ügyfél számlát frissítése sikeresen megtörtént."; +$LANG["notify_client_menu_deleted"] = "Az ügyfél menü törölték."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "A menü törölték, de a következő ügyfél-számlák most már nem a menüt! Frissíteni kell a következő számlákban szerepelnek:"; +$LANG["notify_client_menu_updated"] = "Az ügyfél menü frissült."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Sajnáljuk, a menüben csak próbált törölni már most is használják az ügyfelek az alább felsorolt. Annak érdekében, hogy törölje a menüben először kell hozzá az ügyfelek az egyéb menüket. Kattintson az ügyfél nevére szerkeszteni, hogy az egyéni számlára, vagy a hozzá minden fiók egy másik menü segítségével legördülő alul."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Sajnáljuk, az egyik téma az imént fogyatékkal már használják a következő ügyfél számlákat. Annak érdekében, hogy tiltsa le a témát először kell rendelni minden ügyfél egy másik téma. Kattintson az ügyfél nevére szerkeszteni, hogy az egyéni számlára, vagy kiosztja az összes beszámolót egy témát használja a legördülő alul."; +$LANG["notify_edit_email_fields_link"] = "Kattintson ide , hogy meghatározza, hogy milyen formában mezők email mezőket, így hogy azokat az e-mail sablonok."; +$LANG["notify_edit_field_new_field"] = "Ez egy új terület. Meg kell frissíteni a főoldalra mielőtt képes teljes mértékben módosítani ezen a területen."; +$LANG["notify_edit_option_list_after_save"] = "Ki kell választani egy opciós lista, majd a Változások mentése előtt, hogy képes szerkeszteni."; +$LANG["notify_email_field_config_deleted"] = "Az email funkció törölve lett."; +$LANG["notify_email_fields_not_updated"] = "Sajnáljuk, nem tudtuk frissíteni az e-mail mezőket."; +$LANG["notify_email_fields_updated"] = "Az e-mail mezők frissítve lett."; +$LANG["notify_email_not_sent"] = "Sajnáljuk, az e-mail nem lehet elküldeni. Kérjük, forduljon a webhely adminisztrátorától az alábbi címen."; +$LANG["notify_email_not_sent_c"] = "Sajnos, az e-mail nem lehet elküldeni:"; +$LANG["notify_email_sent"] = "Az e-mail (ka) t küldtek."; +$LANG["notify_email_template_deleted"] = "Az e-mail sablon törölték."; +$LANG["notify_email_template_updated"] = "Az e-mail sablon frissült."; +$LANG["notify_enabled_module_list_updated"] = "A listát a bekapcsolt modulok frissítésre került."; +$LANG["notify_error_saving_fields"] = "Hiba történt mentés területén."; +$LANG["notify_field_changes_saved"] = "A változások a terület (ek) volna menteni."; +$LANG["notify_field_options_smart_filled"] = "A területen lehetőség lett Intelligens töltött."; +$LANG["notify_field_selected"] = "A mező ki van jelölve. Kattintson ide , hogy visszatérjen a fő téren listán."; +$LANG["notify_field_updated"] = "Ez a mező frissítésre került."; +$LANG["notify_file_not_uploaded"] = "A fájlt nem lehet feltölteni."; +$LANG["notify_file_uploaded"] = "A fájl sikeresen feltöltve."; +$LANG["notify_filters_not_updated"] = "Hiba frissítésével ügyfél állításával szűrők."; +$LANG["notify_filters_updated"] = "Benyújtásának szűrők már frissítették a kliens."; +$LANG["notify_folder_correct_permissions"] = "Ez a mappa a megfelelő engedélyekkel."; +$LANG["notify_folder_url_match"] = "A mappát, és úgy tűnik, hogy helyes URL-t párja."; +$LANG["notify_folder_url_no_access"] = "Ezt a vizsgálatot nem lehetett elvégezni, mivel a PHP nem tudott belépni az URL-t. Ennek oka általában az URL-t, hogy a jelszóval védett. Htaccess fájlt."; +$LANG["notify_folder_url_no_match"] = "Ez a mappa URL-kombináció nem tűnik a mérkőzés."; +$LANG["notify_folder_url_unknown_error"] = "Ismeretlen hiba történt. Tudod teszt kézzel feltöltésével egy fájlt a mappába FTP-n keresztül, majd megpróbál hozzáférni az URL-t szállítottak."; +$LANG["notify_form_access_type_email_info"] = "Ez a forma rendszergazdai hozzáférés típusa, így nem az ügyfelek férnek hozzá, és nem szerepelnek a legördülő alább."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sajnáljuk, a forma, hogy ID nem létezik."; +$LANG["notify_form_field_not_added"] = "Az űrlap mező '{\$fieldname}' nem sikerült hozzáadni."; +$LANG["notify_form_field_options_updated"] = "Az űrlap mező lehetőségeket frissült."; +$LANG["notify_form_field_removed"] = "Az űrlap mező sikeresen eltávolították."; +$LANG["notify_form_fields_removed"] = "Az űrlap mezők sikeresen eltávolították."; +$LANG["notify_form_not_updated_notify_admin"] = "Az űrlapot nem lehet frissíteni. Kérjük, lépjen kapcsolatba az Adminisztrátorral, hogy jelentse ezt a problémát."; +$LANG["notify_form_settings_updated"] = "Űrlapot beállítások frissítése sikeresen megtörtént."; +$LANG["notify_form_submission_updated"] = "Az űrlap benyújtása frissült."; +$LANG["notify_form_tabs_updated"] = "A lapok frissítve lett."; +$LANG["notify_form_updated"] = "Az űrlap frissítése sikeresen megtörtént."; +$LANG["notify_form_views_updated"] = "Az űrlap Views frissítve lett."; +$LANG["notify_install_invalid_db_info"] = "Sajnáljuk, nem tudtuk, hogy csatlakozni az adatbázis segítségével a megadott adatok. A hibaüzenet az adatbázis visszaadott: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "A forma jött létre! Beállíthatja a formában ezeken a lapokon."; +$LANG["notify_invalid_account_information_in_sessions"] = "A fiók tárolt információ ülés érvénytelen. Kérjük, jelentkezzen be újra az alábbiakban."; +$LANG["notify_invalid_license_key"] = "Sajnálom, hogy nem tűnik egy érvényes licensz kulcsot. Kérjük, próbálja be újra."; +$LANG["notify_invalid_permissions"] = "Önnek nincs jogosultsága erre a lapra. Ön már kijelentkezett."; +$LANG["notify_invalid_search_dates"] = "Kérjük, használja a datepicker, hogy adjon meg egy érvényes napon vagy napokon."; +$LANG["notify_invalid_upload_folder"] = "A feltöltési mappa érvénytelen vagy nem írható."; +$LANG["notify_lang_list_updated"] = "A rendelkezésre álló nyelvek listája UI frissítésre került."; +$LANG["notify_login_info_emailed"] = "A bejelentkezési adatokat nem elküldjük Önnek."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Hoppá, ez a modul már telepítve van!"; +$LANG["notify_module_installed"] = "A modul telepítése megtörtént. kattintson ide, hogy jelölje ki a modult ."; +$LANG["notify_module_list_updated"] = "A modul lista frissítve lett."; +$LANG["notify_module_uninstalled"] = "A modul el lett távolítva."; +$LANG["notify_module_updated"] = "A {\$module} frissítve lett a {\$version}. kattintson ide, hogy kiválassza a modult ."; +$LANG["notify_multi_field_selected"] = "A mező ki van jelölve. Kattintson ide , hogy megtekintheti és szerkesztheti a lehetőségek terén."; +$LANG["notify_multi_field_updated"] = "Ez a mező frissítésre került. Ön képes lesz beállítani területén lehetőség beállítása után az űrlapot."; +$LANG["notify_multiple_fields_found"] = "Több elemeket találtak ezen a területen nevét ({\$field_name}). Ez akkor fordulhat elő, ha az oldalon több mint egy űrlap vagy ha véletlenül nevezték el az egyik formája ugyanolyan, mint egy másik. Kérjük, válassza ki a kívánt az alábbi listából."; +$LANG["notify_new_default_view_created"] = "Egy új, az alapértelmezett nézetet, amely az összes űrlapmező hoztak létre."; +$LANG["notify_new_submission_created"] = "A benyújtási hoztak létre. Lehet szerkeszteni az alábbiakban."; +$LANG["notify_no_account_id_in_sessions"] = "Nem felhasználói azonosítót találtunk ülés. Kérjük, jelentkezzen be újra az alábbiakban."; +$LANG["notify_no_api_installed"] = "Önnek nincs telepítve API"; +$LANG["notify_no_client_permissions"] = "Nincsenek rendelkezésre álló beállítások szerkesztéséhez."; +$LANG["notify_no_email_template_selected"] = "Kérjük, válassza ki az e-mail sablon."; +$LANG["notify_no_emails_defined"] = "Nem e-maileket nem határozták meg ezt az űrlapot. Egy új egy, kattintson az alábbi gombra."; +$LANG["notify_no_field_settings"] = "Ez a mező típusa nem tartalmaz semmilyen extra beállítást."; +$LANG["notify_no_fields_in_tab"] = "Ez a lap nem tartalmaz olyan mezőket."; +$LANG["notify_no_option_lists"] = "Nincs lehetőség listák meg. Kattintson az alábbi gombra hozzon létre egy újat."; +$LANG["notify_no_test_submission"] = "Eszközök formában nem kapott sikeres tesztet még benyújtását."; +$LANG["notify_no_user_email_fields_configured"] = "Megjegyzés: ha ön akar-hoz küld egy e-mailt, hogy olyan e-mail címét, hogy benne volt a formában, akkor először meg kell állítani az e-mail formájában mezőket ."; +$LANG["notify_no_views"] = "A forma nem rendelkezik Views létre! Szükséged lesz legalább egy nézet kezelése érdekében az űrlap adatait."; +$LANG["notify_no_views_assigned_to_client_form"] = "Úgy tűnik, hogy a felhasználói fiók nem rendeltek semmilyen formában nézetek, így nem fogja látni semmilyen adatot. Kérjük, forduljon a rendszergazda számára további segítséget."; +$LANG["notify_no_views_defined"] = "Ön nincs Views meg. Ön nem tudja megtekinteni az alábbi űrlapot állításaival, ha legalább az egyik nézet jön létre. Kattintson az alábbi gombra létre az alapértelmezett nézet."; +$LANG["notify_option_list_deleted"] = "Az opció lista törlésre került."; +$LANG["notify_option_list_updated"] = "Az opció lista frissítésre került."; +$LANG["notify_public_form_omit_list_updated"] = "Az ügyfél kihagyja listája ezen az űrlapon frissült."; +$LANG["notify_public_view_omit_list_updated"] = "Az ügyfél kihagyja ezt a lista megtekintése frissült."; +$LANG["notify_required_admin_pages"] = "A következő oldalra szükség van az adminisztrációs menüben: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Sajnáljuk, nem volt olyan tevékenység egy ideig így kellett kijelentkezik. Kérjük, jelentkezzen be újra az alábbiakban."; +$LANG["notify_setup_options_updated"] = "A beállítási lehetőségek is frissült."; +$LANG["notify_smart_fill_field_not_found"] = "Nem tudtuk megtalálni a mező ezzel a névvel ({\$field_name}) formájában (ok). Tudod egyik kézzel állítsa be a mezőben típust, vagy kattintson az Ugrás gombra a szerkesztés ezen a területen később."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "A fájl (ok) sikeresen feltöltve. Próbálja ki a Smart kattintva töltse gombot próbálja újra. Ha ezt a lépést nem sikerül, akkor kell ezt a lépést kihagyhatja, és konfigurálja a űrlapmezőket manally később."; +$LANG["notify_smart_fill_submitted"] = "Az űrlap benyújtásra került. Méretétől függően az űrlapot, és számos területen lehetőséget, ez eltarthat egy ideig."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Elnézést, egy vagy több fájl beírt nem lehet feltölteni. Lesz szükség, hogy kihagyja ezt a lépést, és konfigurálja a területen kézzel."; +$LANG["notify_submission_and_files_deleted"] = "Benyújtására és minden fájl (ok) kapcsolódó lenne sikeresen törölve."; +$LANG["notify_submission_copied"] = "A beadványt másolták."; +$LANG["notify_submission_copied_edit"] = "A beadványt másolták. Az alábbiakban szerkesztheti."; +$LANG["notify_submission_deleted"] = "Benyújtásának sikeresen törlésre került."; +$LANG["notify_submission_deleted_with_problems"] = "Benyújtásának törölve lett, de a következő problémák merültek fel, amikor megpróbálja törölni a következő fájl (ok):"; +$LANG["notify_submission_id_not_found"] = "Benyújtásának ID nem található."; +$LANG["notify_submission_not_updated"] = "Benyújtása nem lehet frissíteni."; +$LANG["notify_submissions_and_files_deleted"] = "A beadványok és minden fájl (ok) a velük kapcsolatban is sikeresen törölve."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} beadványt másolt."; +$LANG["notify_submissions_deleted"] = "A beadványt sikeresen törölve."; +$LANG["notify_submissions_deleted_with_problems"] = "A beadvány törölték, de a következő problémák merültek fel, amikor megpróbál törölni a következő fájl (ok):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "A teszt e-mail nem lehet elküldeni."; +$LANG["notify_theme_cache_folder_not_writable"] = "Ez a téma a cache mappa nem írható. Annak érdekében, hogy ezt a témát, a {\$folder} mappában van szüksége a teljes írási-olvasási jogosultságot."; +$LANG["notify_theme_list_updated"] = "A téma listája frissült."; +$LANG["notify_themes_settings_updated"] = "A téma mentése megtörtént."; +$LANG["notify_view_deleted"] = "A View törölték."; +$LANG["notify_view_group_deleted"] = "Az A csoport törlésre került."; +$LANG["notify_view_missing_columns"] = "Hoppá! Sajnos, ez a nézet még nem teljesen létre még."; +$LANG["notify_view_missing_columns_admin_fix"] = "Kattintson ide , hogy meghatározza, hogy milyen mezőket kell megjelennie az oszlopokat ezen az oldalon."; +$LANG["notify_view_updated"] = "A nézet nem frissült."; +$LANG["notify_your_email_sent"] = "Az e-mail sikeresen elküldve."; +$LANG["phrase_100_per_page"] = "100 oldal"; +$LANG["phrase_10_per_page"] = "10 oldalanként"; +$LANG["phrase_15_per_page"] = "15 oldalanként"; +$LANG["phrase_1_direct"] = "1. Közvetlen"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 oldal"; +$LANG["phrase_25_per_page"] = "25 oldalanként"; +$LANG["phrase_2_code"] = "2. Kód"; +$LANG["phrase_2_columns"] = "2 oszlop"; +$LANG["phrase_2chars"] = "2 karakterek"; +$LANG["phrase_3_columns"] = "3 oszlop"; +$LANG["phrase_4_columns"] = "4 oszlopos"; +$LANG["phrase_50_per_page"] = "50 oldal"; +$LANG["phrase_accepting_submissions"] = "(Elfogadó beadványok)"; +$LANG["phrase_access_admin_account_c"] = "Akkor érheti el a közigazgatás fiók van:"; +$LANG["phrase_access_type"] = "Hozzáférés típusa"; +$LANG["phrase_account_info"] = "Számlainformáció"; +$LANG["phrase_account_settings"] = "Fiókbeállítások"; +$LANG["phrase_action_needed"] = "Cselekedni kell"; +$LANG["phrase_add_client"] = "Add hozzá Ügyfél"; +$LANG["phrase_add_client_menu"] = "Add hozzá Ügyfél menü"; +$LANG["phrase_add_default_settings_rightarrow"] = "Add alapértelmezett beállítások »"; +$LANG["phrase_add_field"] = "Mezõ hozzáadása"; +$LANG["phrase_add_fields"] = "Add hozzá Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Add Field (s) »"; +$LANG["phrase_add_form"] = "Add forma"; +$LANG["phrase_add_form_external"] = "Add Form - Külső"; +$LANG["phrase_add_form_internal"] = "Add Form - Belső"; +$LANG["phrase_add_new_group_rightarrow"] = "Új csoport »"; +$LANG["phrase_add_num_rows"] = "Add {\$number} Sor (ok)"; +$LANG["phrase_add_row"] = "Sor hozzáadása »"; +$LANG["phrase_add_submission_button"] = "Add benyújtása gomb"; +$LANG["phrase_add_view_rightarrow"] = "Add megtekintése »"; +$LANG["phrase_adding_multi_page_form"] = "Összeadás egy több oldalas formában, az API"; +$LANG["phrase_adding_single_page_form"] = "Összeadás egy egyoldalas formában, az API"; +$LANG["phrase_admin_menu"] = "Administrator Menü"; +$LANG["phrase_admin_only"] = "Csak a rendszergazda"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator téma"; +$LANG["phrase_advanced_settings_rightarrow"] = "Haladó beállítások »"; +$LANG["phrase_all_X_results_selected"] = "Minden {\$numresults} Eredmények Kiválasztott"; +$LANG["phrase_all_clients"] = "Minden ügyfél"; +$LANG["phrase_all_clients_except_c"] = "Minden ügyfél, kivéve:"; +$LANG["phrase_all_clients_have_access"] = "(Az összes kliens hozzáfér)"; +$LANG["phrase_all_fields"] = "Minden mező"; +$LANG["phrase_all_fields_displayed"] = "Minden mezők jelennek meg,"; +$LANG["phrase_all_statuses"] = "Minden állapot"; +$LANG["phrase_all_submissions"] = "Minden beadványt"; +$LANG["phrase_allow_fields_edited"] = "Hagyjuk mezőket lehet szerkeszteni"; +$LANG["phrase_alphanumeric"] = "Alfanumerikus (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API verzió"; +$LANG["phrase_apply_timezone_offset"] = "Jelentkezzen Időzóna Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Kiosztja az összes felsorolt ügyfél-számlák {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Kiosztja az összes felsorolt ügyfél-számlák {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Végén"; +$LANG["phrase_at_start"] = "Az Indítás"; +$LANG["phrase_author_link"] = "Szerző Link"; +$LANG["phrase_auto_disable_account"] = "Auto-megbénít számla után # sikertelen belépési kísérlet"; +$LANG["phrase_auto_size"] = "Auto-méret"; +$LANG["phrase_available_clients"] = "A rendelkezésre álló ügyfelek"; +$LANG["phrase_available_fields"] = "Elérhető mezők"; +$LANG["phrase_available_option_lists"] = "Elérhető opció listák"; +$LANG["phrase_available_swatches"] = "Elérhető Színtár"; +$LANG["phrase_available_swatches_c"] = "Elérhető Színtár:"; +$LANG["phrase_available_tabs"] = "Elérhető Tabs"; +$LANG["phrase_available_views"] = "A rendelkezésre álló nézetek"; +$LANG["phrase_awaiting_form_submission"] = "Váró formában benyújtását."; +$LANG["phrase_back_to_field_list"] = "«Vissza a mezőlista"; +$LANG["phrase_back_to_search_results"] = "vissza a találatokhoz"; +$LANG["phrase_base_view_on"] = "Alap nézet ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Változás bejelentkezési adatok"; +$LANG["phrase_characters_limit_p"] = "karakter limit."; +$LANG["phrase_check_db_settings_try_again"] = "Kérjük még egyszer ellenőrizze az adatbázis beállításokat, és kattintson a Tovább gombra újra."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Check URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Tiszta Megjelöl"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Egyértelmű elhagyása lista"; +$LANG["phrase_client_account_settings"] = "Ügyfél Fiókbeállítások"; +$LANG["phrase_client_field"] = "Ügyfél Field"; +$LANG["phrase_client_map_filters"] = "Ügyfél Térkép szűrők »"; +$LANG["phrase_client_may_edit"] = "Ügyfél szerkesztés"; +$LANG["phrase_client_menu"] = "Ügyfél Menü"; +$LANG["phrase_clients_can_access_form"] = "Ügyfelek, akik hozzáférhetnek az űrlapot"; +$LANG["phrase_clients_can_access_view"] = "Ügyfelek, akik hozzáférhetnek a Nézet"; +$LANG["phrase_clients_cannot_access_form"] = "Ügyfelek, akik nem férhetnek hozzá az űrlapot"; +$LANG["phrase_clients_cannot_access_view"] = "Ügyfelek, akik nem férhetnek hozzá a View"; +$LANG["phrase_clients_may_edit"] = "Ügyfelek szerkesztés"; +$LANG["phrase_code_c"] = "Hibakód:"; +$LANG["phrase_code_markup_field"] = "Code / Markup Field"; +$LANG["phrase_code_markup_type"] = "Code / Markup típus"; +$LANG["phrase_codes_c"] = "Hibakódok:"; +$LANG["phrase_column_width"] = "Oszlopszélesség"; +$LANG["phrase_company_name"] = "A cég neve"; +$LANG["phrase_configure_form_email_fields"] = "Configure Forma-mail területek"; +$LANG["phrase_confirm_folder_url_match"] = "Confirm Folder-URL meccs"; +$LANG["phrase_connect_rows"] = "Csatlakozás sorok"; +$LANG["phrase_copy_email_settings_from"] = "Copy-mail beállítások ..."; +$LANG["phrase_copy_settings_from"] = "Copy beállítások ..."; +$LANG["phrase_core_fields"] = "Core területek"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Regisztráció"; +$LANG["phrase_create_admin_account"] = "Admin fiók létrehozásához"; +$LANG["phrase_create_config_file"] = "Config file létrehozása"; +$LANG["phrase_create_database_tables"] = "Teremt Adatbázis táblázatok"; +$LANG["phrase_create_default_view"] = "Létrehozása Alapértelmezett nézet"; +$LANG["phrase_create_file"] = "Fájlt létrehozni"; +$LANG["phrase_create_group"] = "Csoport létrehozása"; +$LANG["phrase_create_new_email"] = "Teremt Új e-mail"; +$LANG["phrase_create_new_menu"] = "Új létrehozása Menü"; +$LANG["phrase_create_new_option_list"] = "Új opció listája"; +$LANG["phrase_create_new_option_list_group"] = "Új opciók listáját csoport"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Új opció lista »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Új nézet csoport"; +$LANG["phrase_custom_display_format"] = "Egyéni Display Format"; +$LANG["phrase_custom_recipient"] = "Egyéni Címzett"; +$LANG["phrase_custom_url"] = "Egyéni URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Adattípus"; +$LANG["phrase_database_hostname"] = "Adatbázis hostname"; +$LANG["phrase_database_name"] = "Adatbázis neve"; +$LANG["phrase_database_password"] = "Adatbázis jelszó"; +$LANG["phrase_database_settings"] = "Adatbázis beállítások"; +$LANG["phrase_database_setup"] = "Adatbázis beállítása"; +$LANG["phrase_database_table_prefix"] = "Adatbázis tábla előtag"; +$LANG["phrase_database_username"] = "Adatbázis-felhasználónév"; +$LANG["phrase_date_format"] = "Dátum formátum"; +$LANG["phrase_db_column"] = "DB oszlop"; +$LANG["phrase_db_setup_page_4"] = "4. Adatbázis beállítása"; +$LANG["phrase_default_client_account_theme"] = "Alapértelmezett Ügyfél Számla téma"; +$LANG["phrase_default_date_field_search_value"] = "Alapértelmezett dátummező keresett érték"; +$LANG["phrase_default_language"] = "Alapértelmezett nyelv"; +$LANG["phrase_default_menu"] = "Alapértelmezett menü"; +$LANG["phrase_default_sessions_timeout"] = "Alapértelmezett Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Alapértelmezett sorrend"; +$LANG["phrase_default_tab_label"] = "Adat"; +$LANG["phrase_default_theme"] = "Alapértelmezett téma"; +$LANG["phrase_default_value"] = "Alapértelmezett érték"; +$LANG["phrase_default_values"] = "Alapértelmezett értékek"; +$LANG["phrase_default_values_new_submissions"] = "Alapértelmezett értékek új beadvány"; +$LANG["phrase_delete_field"] = "Mező törlése"; +$LANG["phrase_delete_form"] = "Törlés forma"; +$LANG["phrase_delete_row"] = "Sor törlése"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Törlés kapcsolódó fájlok törlése benyújtása"; +$LANG["phrase_delete_view"] = "Nézet törlése"; +$LANG["phrase_disconnect_rows"] = "Húzza ki sorok"; +$LANG["phrase_display_email"] = "Kijelző E-mail"; +$LANG["phrase_display_name"] = "Megjelenítési név"; +$LANG["phrase_display_text"] = "Szöveg megjelenítése"; +$LANG["phrase_display_value"] = "Érték megjelenítése"; +$LANG["phrase_edit_admin_menu"] = "Edit Admin menü"; +$LANG["phrase_edit_client"] = "Edit Ügyfél"; +$LANG["phrase_edit_client_menu"] = "Szerkesztés menü Ügyfél"; +$LANG["phrase_edit_email_template"] = "E-mail sablon szerkesztése"; +$LANG["phrase_edit_field"] = "Mező szerkesztése"; +$LANG["phrase_edit_field_c"] = "Szerkesztés mező:"; +$LANG["phrase_edit_form"] = "Edit forma"; +$LANG["phrase_edit_form_access_type_b"] = "[Szerkesztés formában való típus]"; +$LANG["phrase_edit_option_list"] = "Szerkesztése opció listája"; +$LANG["phrase_edit_submission"] = "Edit benyújtása"; +$LANG["phrase_edit_submission_label"] = "Szerkesztés benyújtása címke"; +$LANG["phrase_edit_view"] = "Szerkesztés nézet"; +$LANG["phrase_email_format"] = "E-mail formátum"; +$LANG["phrase_email_settings"] = "E-mail beállítások"; +$LANG["phrase_email_template"] = "E-mail sablon"; +$LANG["phrase_email_template_name"] = "E-mail sablon neve"; +$LANG["phrase_error_learn_more"] = "Tudjon meg többet ezt a hibát."; +$LANG["phrase_error_text_intro"] = "Javítsa ki a következő hiba (ek) és újra:"; +$LANG["phrase_errors_learn_more"] = "Kattintson a hibakódok többet."; +$LANG["phrase_event_trigger"] = "Trigger esemény"; +$LANG["phrase_external_form"] = "Külső formája"; +$LANG["phrase_external_form_info"] = "Külső formája Info"; +$LANG["phrase_external_your_own_form"] = "Külső (a saját forma)"; +$LANG["phrase_field_comments"] = "Field Hozzászólások"; +$LANG["phrase_field_label"] = "Mező címke"; +$LANG["phrase_field_options"] = "Beállítások terén"; +$LANG["phrase_field_size"] = "Mező mérete"; +$LANG["phrase_field_skipped"] = "Kihagyott területén"; +$LANG["phrase_field_specific_settings"] = "Mező-specifikus beállítások"; +$LANG["phrase_field_type"] = "Mező típusa"; +$LANG["phrase_field_type_no_validation"] = "Nincs érvényességi szabályok elérhető ezen a területen típusú."; +$LANG["phrase_field_types"] = "Mező típusa"; +$LANG["phrase_field_value"] = "Mező Érték"; +$LANG["phrase_field_values_to_display_values"] = "Mezõértékek »Display értékek"; +$LANG["phrase_final_touches_page_6"] = "6. Simítások"; +$LANG["phrase_finalize_form"] = "Véglegesíti forma"; +$LANG["phrase_first_name"] = "Keresztnév"; +$LANG["phrase_footer_text"] = "Lábléc szövege"; +$LANG["phrase_for_any_form_submission"] = "Bármilyen formában benyújtott"; +$LANG["phrase_for_view_submissions"] = "Csak beadványt, hogy illeszkedjenek a következő View (s)"; +$LANG["phrase_forgot_password"] = "Elfelejtette a jelszavát?"; +$LANG["phrase_form_already_selected"] = "Formában már kiválasztott"; +$LANG["phrase_form_email_field_b_c"] = "[Forma email mező]:"; +$LANG["phrase_form_email_field_configuration"] = "E-mail formájában mező beállítása"; +$LANG["phrase_form_email_fields"] = "E-mail formájában területek"; +$LANG["phrase_form_field"] = "Form Field"; +$LANG["phrase_form_field_contents"] = "Form Field tartalma"; +$LANG["phrase_form_field_name"] = "Formában Mezőnév"; +$LANG["phrase_form_field_placeholders"] = "Űrlapmező helyőrzői"; +$LANG["phrase_form_fields"] = "Űrlapmezők"; +$LANG["phrase_form_info"] = "Formában információk"; +$LANG["phrase_form_info_2"] = "2. Formában információk"; +$LANG["phrase_form_list"] = "Form listája"; +$LANG["phrase_form_name"] = "Formában neve"; +$LANG["phrase_form_page"] = "Formában oldal"; +$LANG["phrase_form_placeholders"] = "Formában helyőrzők"; +$LANG["phrase_form_submission"] = "Formanyomtatvány benyújtása"; +$LANG["phrase_form_submissions"] = "Formában leadott"; +$LANG["phrase_form_type"] = "Formanyomtatvány típusa"; +$LANG["phrase_form_url"] = "Formában URL"; +$LANG["phrase_form_urls"] = "Form URL-ek"; +$LANG["phrase_forms_assigned_to_any_account"] = "Nyomtatványok rendelt minden számla"; +$LANG["phrase_forms_page_default_message"] = "Forms oldal alapértelmezett üzenet"; +$LANG["phrase_ft_installation"] = "Form Script eszközök telepítése"; +$LANG["phrase_full_width"] = "Teljes szélesség"; +$LANG["phrase_getting_started"] = "első lépések"; +$LANG["phrase_global_placeholders"] = "Globális helyőrzők"; +$LANG["phrase_group_name"] = "Csoport neve"; +$LANG["phrase_group_options_q"] = "Csoportos opció?"; +$LANG["phrase_group_rows"] = "Csoport sorok"; +$LANG["phrase_have_fun"] = "Jó szórakozást!"; +$LANG["phrase_highlight_colour"] = "Kiemelés színe"; +$LANG["phrase_html_email"] = "HTML e-mail"; +$LANG["phrase_html_template"] = "HTML-sablon"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Import opció listája »"; +$LANG["phrase_input_length"] = "Bemenet hossza"; +$LANG["phrase_installation_help"] = "Telepítési segítség"; +$LANG["phrase_internal_form"] = "Belső formája"; +$LANG["phrase_ip_address"] = "IP-cím"; +$LANG["phrase_is_multi_page_form_q"] = "Ez egy több oldalas formában?"; +$LANG["phrase_label_response_placeholders"] = "Címke / Response helyőrzők"; +$LANG["phrase_large_300px"] = "Nagy (300px)"; +$LANG["phrase_large_400px"] = "Nagy (400px)"; +$LANG["phrase_last_7_days"] = "Az utolsó 7 napban"; +$LANG["phrase_last_logged_in"] = "Utolsó bejelentkezve"; +$LANG["phrase_last_modified"] = "Utoljára módosítva"; +$LANG["phrase_last_modified_date"] = "Utolsó módosítás dátuma"; +$LANG["phrase_last_name"] = "Vezetéknév"; +$LANG["phrase_letters_only"] = "Levelek csak"; +$LANG["phrase_light_brown"] = "Világosbarna"; +$LANG["phrase_limit_email_content"] = "Korlátozza e-mail tartalom mező megtekintése"; +$LANG["phrase_loading_ellipsis"] = "Betöltése ..."; +$LANG["phrase_log_in"] = "Bejelentkezés"; +$LANG["phrase_login_as_user"] = "Jelentkezzen be a felhasználó"; +$LANG["phrase_login_info"] = "Bejelentkezés Info"; +$LANG["phrase_login_page"] = "Login oldal"; +$LANG["phrase_login_panel_c"] = "Bejelentkezés Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Belépés Panel"; +$LANG["phrase_login_password"] = "Login Jelszó"; +$LANG["phrase_login_username"] = "Bejelentkezés Felhasználónév"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Fő Nav"; +$LANG["phrase_main_settings"] = "Fő beállítások"; +$LANG["phrase_manage_client"] = "Kezelésére Ügyfél"; +$LANG["phrase_manage_client_omit_list"] = "Kezelése Client kihagyása listája"; +$LANG["phrase_max_file_size"] = "Max fájl méret"; +$LANG["phrase_max_length"] = "Max hossz"; +$LANG["phrase_max_length_words_chars"] = "- Max hossz (szó / karakter)"; +$LANG["phrase_may_add_submissions"] = "Május add Beadványok"; +$LANG["phrase_may_copy_submissions"] = "Képes másolni a beadványokat"; +$LANG["phrase_may_delete_submissions"] = "Törölheti Beadványok"; +$LANG["phrase_medium_150px"] = "Közepes (150px)"; +$LANG["phrase_medium_200px"] = "Közepes (200px)"; +$LANG["phrase_menu_name"] = "Menü neve"; +$LANG["phrase_menu_type"] = "Menü típusa"; +$LANG["phrase_min_password_length"] = "A jelszó minimális hossza"; +$LANG["phrase_module_description"] = "Modul leírása"; +$LANG["phrase_module_info"] = "Modul információk"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Hónap eddig"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Multi-select dropdown"; +$LANG["phrase_multiple_fields_found"] = "Több területek Megtaláltam!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Név / Vezetéknév"; +$LANG["phrase_new_blank_email"] = "Üres új e-mail"; +$LANG["phrase_new_blank_option_list"] = "Új üres opció listája"; +$LANG["phrase_new_blank_view"] = "Új Üres megtekintése"; +$LANG["phrase_new_ft_installation"] = "Új forma eszközök telepítése"; +$LANG["phrase_new_option_list"] = "Új opció lista"; +$LANG["phrase_new_password"] = "Új jelszó"; +$LANG["phrase_new_password_reenter"] = "Új jelszó (kérjük, adja meg újra)"; +$LANG["phrase_new_view"] = "Új megtekintése"; +$LANG["phrase_new_view_all_fields"] = "New View - Minden mező"; +$LANG["phrase_next_client"] = "következő ügyfelet »"; +$LANG["phrase_next_field"] = "következő mezőt »"; +$LANG["phrase_next_form"] = "következő formában »"; +$LANG["phrase_next_view"] = "következő megtekintése »"; +$LANG["phrase_no_clients"] = "Nincs ügyfelek"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Nincs eltolás"; +$LANG["phrase_no_option_lists_available"] = "Nincs lehetőség listák."; +$LANG["phrase_no_views"] = "Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Nem szór a szűrők definiált)"; +$LANG["phrase_none_not_recommended"] = "Nincs (nem ajánlott)"; +$LANG["phrase_not_assigned_to_option_list"] = "Ez a mező nincs hozzárendelve egy opció lista."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Nem egyenlő"; +$LANG["phrase_not_found"] = "Nem talált!"; +$LANG["phrase_not_like"] = "Nem úgy, mint"; +$LANG["phrase_not_visible_to_client"] = "(Nem látható a kliens)"; +$LANG["phrase_num_clients_per_page"] = "Num Ügyfeleink Oldalanként"; +$LANG["phrase_num_emails_per_page"] = "Num-mailek Oldalanként"; +$LANG["phrase_num_fields"] = "Mezők száma"; +$LANG["phrase_num_forms_per_page"] = "Num Forms Oldalanként"; +$LANG["phrase_num_menus_per_page"] = "Num menük Oldalanként"; +$LANG["phrase_num_modules_per_page"] = "Num modulok Oldalanként"; +$LANG["phrase_num_option_lists_per_page"] = "Num opció listák Oldalanként"; +$LANG["phrase_num_options"] = "Num opciók"; +$LANG["phrase_num_rows"] = "Num Sorok"; +$LANG["phrase_numbers_only"] = "Csak számok"; +$LANG["phrase_often_localhost"] = "(Gyakran "localhost")"; +$LANG["phrase_on_form_submission"] = "-Nyomtatvány benyújtása"; +$LANG["phrase_one_char_number"] = "Legalább egy karaktert egy szám (0-9)"; +$LANG["phrase_one_char_upper"] = "Legalább egy karakter nagybetű"; +$LANG["phrase_one_special_char"] = "Legalább az egyik {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(Csak az adott ügyféllel rendelkezik hozzáféréssel)"; +$LANG["phrase_open_form_in_dialog"] = "Nyitott formában párbeszédablakban"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Nyissa meg ezt a formáját egy új fül / ablak"; +$LANG["phrase_option_list"] = "Opció lista"; +$LANG["phrase_option_list_name"] = "Opció lista neve"; +$LANG["phrase_option_list_or_contents"] = "Option Lista / Tartalom"; +$LANG["phrase_option_lists"] = "Opció listák"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Az oldal címe"; +$LANG["phrase_pass_on"] = "Áthárítani"; +$LANG["phrase_password_min"] = "Meg kell legalább {\$length} karaktereket."; +$LANG["phrase_password_one_number"] = "Kell legalább egy számot (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Kell legalább egy nagybetűt."; +$LANG["phrase_password_requirements_c"] = "Jelszó követelmények:"; +$LANG["phrase_password_reset"] = "Jelszó törlése"; +$LANG["phrase_password_special_char"] = "Kell legalább az alábbi karaktereket: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Engedélyek / Egyéb beállítások"; +$LANG["phrase_permitted_file_types"] = "Engedélyezett fájltípusok"; +$LANG["phrase_phone_number"] = "Telefonszám"; +$LANG["phrase_phone_number_format"] = "Telefonszám formátum"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max megengedett file feltöltési méret:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP verzió"; +$LANG["phrase_please_confirm"] = "Kérjük megerősítése"; +$LANG["phrase_please_enter_license_key"] = "Kérjük, adja meg a licenc kulcsot"; +$LANG["phrase_please_select"] = "Kérem válasszon"; +$LANG["phrase_please_select_form"] = "Kérjük, válasszon ki egy űrlapot"; +$LANG["phrase_prev_client"] = "«Előző ügyfél"; +$LANG["phrase_prev_form"] = "«Előző formában"; +$LANG["phrase_prevent_password_reuse"] = "Újbóli felhasználásának megakadályozása az # utolsó jelszó"; +$LANG["phrase_previous_field"] = "«Előző mezőben"; +$LANG["phrase_previous_page"] = "Előző oldal"; +$LANG["phrase_previous_view"] = "«Előző megtekintése"; +$LANG["phrase_program_name"] = "Program neve"; +$LANG["phrase_public_form_omit_list"] = "Nyilvános forma elhagyása listája"; +$LANG["phrase_public_view_omit_list"] = "Nyilvános megtekintése elhagyása listája"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Volt egy probléma a következő lekérdezést:"; +$LANG["phrase_radio_buttons"] = "Rádió gombok"; +$LANG["phrase_random_form_submission"] = "Véletlen formában benyújtott"; +$LANG["phrase_re_enter_password"] = "Jelszó újra"; +$LANG["phrase_recipient_type"] = "Kedvezményezett típusa"; +$LANG["phrase_redirect_url"] = "URL átirányítás"; +$LANG["phrase_refresh_list"] = "Frissítés"; +$LANG["phrase_refresh_module_list"] = "Frissítés modul lista"; +$LANG["phrase_refresh_page"] = "Oldal frissítése"; +$LANG["phrase_refresh_theme_list"] = "Frissítés téma listája"; +$LANG["phrase_register_new_email"] = "Regisztráljon Új e-mail"; +$LANG["phrase_remaining_characters"] = "fennmaradó karakterek"; +$LANG["phrase_remaining_words"] = "fennmaradó szó"; +$LANG["phrase_remove_tabs"] = "Eltávolítás Lapok"; +$LANG["phrase_required_password_chars"] = "Szükséges jelszót karakterek"; +$LANG["phrase_resend_test_submission"] = "Resend Teszt benyújtása"; +$LANG["phrase_return_form_list"] = "Vissza a forma listája"; +$LANG["phrase_row_selected"] = "{\$num_rows} sorban a kiválasztott"; +$LANG["phrase_rows_selected"] = "{\$num_rows} kiválasztott sorok"; +$LANG["phrase_sample_data"] = "Minta adatok"; +$LANG["phrase_save_changes"] = "Változtatások mentése"; +$LANG["phrase_search_keyword"] = "Keresés kulcsszó"; +$LANG["phrase_security_settings"] = "Biztonsági beállítások"; +$LANG["phrase_select_all"] = "Válasszuk a Minden"; +$LANG["phrase_select_all_X_results"] = "Válasszuk a Minden {\$numresults} eredménye"; +$LANG["phrase_select_all_on_page"] = "Az összes kijelölése oldal"; +$LANG["phrase_select_date"] = "Válassza ki a dátumot"; +$LANG["phrase_select_field"] = "Válassza ki a mező"; +$LANG["phrase_select_swatch"] = "Válassza swatch"; +$LANG["phrase_selected_clients"] = "Kiválasztott ügyfelek"; +$LANG["phrase_selected_views"] = "Válasszon Views"; +$LANG["phrase_send_email"] = "E-mail küldése"; +$LANG["phrase_send_test_email"] = "E-mail küldés teszt"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Beállítást Érték"; +$LANG["phrase_setup_options"] = "Setup beállítások"; +$LANG["phrase_show_all"] = "Összes"; +$LANG["phrase_show_form"] = "Megjelenítés Űrlap"; +$LANG["phrase_size_large"] = "Nagy (TEXT)"; +$LANG["phrase_size_medium"] = "Közepes (<= 256 karakter)"; +$LANG["phrase_size_small"] = "Kicsi (<= 20 karakter)"; +$LANG["phrase_size_tiny"] = "Apró (<= 5 karakter)"; +$LANG["phrase_size_very_large"] = "Nagyon nagy (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Ugrás Field"; +$LANG["phrase_skip_step"] = "Ugrás lépés"; +$LANG["phrase_small_100px"] = "Kicsi (100px)"; +$LANG["phrase_small_80px"] = "Kicsi (80px)"; +$LANG["phrase_smart_fill"] = "Smart kitöltése"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Töltse mezőket:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Töltse Felhasználói dokumentáció »"; +$LANG["phrase_sort_as"] = "Rendezés Mint"; +$LANG["phrase_special_fields"] = "Speciális mezők"; +$LANG["phrase_standard_fields"] = "Szokásos mezők"; +$LANG["phrase_standard_filters"] = "Standard szűrők »"; +$LANG["phrase_step_1"] = "1. lépés"; +$LANG["phrase_step_2"] = "2. lépés"; +$LANG["phrase_step_3"] = "3. lépés"; +$LANG["phrase_step_4"] = "4. lépés"; +$LANG["phrase_step_5"] = "5. lépés"; +$LANG["phrase_step_6"] = "6. lépés"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip címkék formában benyújtott"; +$LANG["phrase_subject_line"] = "Tárgy Line"; +$LANG["phrase_submission_date"] = "Benyújtás dátuma"; +$LANG["phrase_submission_id"] = "Benyújtását ID"; +$LANG["phrase_submission_made"] = "Beadványában: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Benyújtását típusa"; +$LANG["phrase_submissions_per_page"] = "Beadványok laponként"; +$LANG["phrase_system_check"] = "Rendszer ellenőrzése"; +$LANG["phrase_system_fields_no_validation"] = "Lehet, hogy nem hozzá érvényesítése a rendszer területeken."; +$LANG["phrase_system_time_offset"] = "Rendszer időeltérés"; +$LANG["phrase_tab_label"] = "Tab címke"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Teszt mappa jogosultságok"; +$LANG["phrase_test_submission"] = "Vizsgálati kérelem benyújtása"; +$LANG["phrase_test_submission_3"] = "3. Vizsgálati kérelem benyújtása"; +$LANG["phrase_test_submission_received"] = "Teszt beérkezett beadványt"; +$LANG["phrase_text_and_html"] = "Szöveges és HTML"; +$LANG["phrase_text_email"] = "Szöveges e-mail"; +$LANG["phrase_text_template"] = "Sablon szöveg"; +$LANG["phrase_the_previous_month"] = "Az előző hónap"; +$LANG["phrase_theme_description"] = "Téma leírása"; +$LANG["phrase_theme_info"] = "Info téma"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Összesített:"; +$LANG["phrase_type_c"] = "Hiba típusa:"; +$LANG["phrase_unselect_all"] = "Minden önzetlen"; +$LANG["phrase_update_accounts"] = "Update számlák"; +$LANG["phrase_update_email_template"] = "Update-mail sablon"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Frissítés Order"; +$LANG["phrase_update_view"] = "Update megtekintése"; +$LANG["phrase_upload_file"] = "Fájl feltöltése"; +$LANG["phrase_upload_files"] = "Tölthetnek fel fájlokat"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Feltöltési mappa elérési útja"; +$LANG["phrase_upload_folder_url"] = "Feltöltési mappa URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Alapértelmezett érték?"; +$LANG["phrase_used_by_num_form_fields"] = "Által használt # űrlapmezők"; +$LANG["phrase_uses_swatches"] = "Felhasználás Színtár"; +$LANG["phrase_valid_email"] = "Érvényes e-mail"; +$LANG["phrase_validation_error"] = "Érvényesítési hiba"; +$LANG["phrase_validation_rule"] = "Érvényességi szabály"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "A csoport"; +$LANG["phrase_view_id"] = "Nézet ID"; +$LANG["phrase_view_name"] = "Név megtekintése"; +$LANG["phrase_view_placeholders"] = "Megtekintése helyőrzők"; +$LANG["phrase_view_submissions"] = "Beadványok megtekintése"; +$LANG["phrase_view_uploaded_files"] = "Tekintettel feltöltött kép"; +$LANG["phrase_viewing_range"] = "[Megtekintése {\$startnum} a {\$endnum}]"; +$LANG["phrase_when_sent"] = "Küldéskor"; +$LANG["phrase_when_submission_is_deleted"] = "Ha a benyújtás el kell hagyni"; +$LANG["phrase_when_submission_is_edited"] = "Ha a benyújtás szerkesztése"; +$LANG["phrase_who_can_access"] = "Ki férhet hozzá?"; +$LANG["phrase_word_limit_p"] = "szó limit."; +$LANG["phrase_year_to_date"] = "Év eddigi"; +$LANG["phrase_yes_for_all_views"] = "Igen, minden Megtekintés"; +$LANG["phrase_yes_for_specific_views"] = "Igen, bizonyos nézetek"; +$LANG["phrase_your_account"] = "A Fiók"; +$LANG["phrase_your_email"] = "Az Ön e-mail"; +$LANG["phrase_your_email_address"] = "Az Ön e-mail címe"; +$LANG["processing_form_disabled"] = "Sajnáljuk, ez a forma van tiltva."; +$LANG["processing_form_incomplete"] = "Sajnáljuk, ez a forma nem tűnik teljesen létrehozni belül Forma eszközök. A legvalószínűbb oka a probléma, hogy eltávolította a "form_tools_initialize_form" rejtett űrlapmező, de nem teljes minden lépést az "Add Form" folyamat.

    Kérjük, jelentkezzen be és felülvizsgálata formájában konfiguráció."; +$LANG["processing_init_complete"] = "Köszönöm! Tesztoldal benyújtási került át sikeresen. Kérjük, térjen vissza a Forma Eszközök Adminisztráció panelen, majd kattintson a "Frissítés" gomb alul az Add formanyomtatvány 3. lépés az oldalt beállításának befejezéséhez formában."; +$LANG["processing_invalid_form_id"] = "Sajnos, ez nem tűnik egy érvényes azonosítót formában."; +$LANG["processing_no_form_id"] = "process.php igényel formában ID feldolgozásra. Győződjön meg róla, hogy formában tartalmaz egy rejtett mező a neve "form_tools_form_id" ez haladtak formában ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Formában Tools nem tudja meghatározni, hogy irányítsák át, amikor nem adjuk meg a CAPTCHA megfelelő. Kérjük, adja át egy rejtett mező a neve form_tools_form_url tartalmazó URL formájában."; +$LANG["processing_no_post_vars"] = "process.php nem kap semmilyen adatot. Megjegyzés: ez a script nem tölthető be közvetlenül a böngészőben.
    Győződjön meg róla, hogy a nyomtatványt küld POST-on keresztül."; +$LANG["processing_no_redirect_url"] = "A beadvány feldolgozása helyesen, de nem adtunk meg egy redirect URL-t az alábbi űrlapot! Edit űrlapot a Forma Eszközök és UI hozzá az átirányítás URL-t."; +$LANG["special_language"] = "Hungarian"; +$LANG["special_language_locale"] = "Hungarian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Minden új ügyfélfiókok jön létre a beállításokat és jogosultságokat az alábbiakban meghatározott. Hogy felülírja a beállítás egy adott ügyfél számára, szerkeszteni az ügyfél számlájára és látogasson el a Beállítások fülre."; +$LANG["text_add_form_choose_integration_method"] = "Válassza ki, melyik módszert kívánja használni, hogy integrálja a formát Form eszközök."; +$LANG["text_add_form_code_submission_benefits"] = "Ez a módszer a Form Tools API , amely szerepel a fő Form Tools script. Az API számos olyan hasznos funkciót, hogy a munka integrálása a formát Form eszközök a lehető legegyszerűbb. Nincsenek korlátozások, hogy milyen a formája lehet benyújtani, ha az API. Elküldheti a tartalmat egy menetben, vagy oldalanként, felveheti a saját egyéni szerver oldali validálás, CAPTCHA képek, választhat, hogy nyújtson be az információkat most, csak mondd meg, hogy megjelenjen a benyújtás a Form Tools UI egy későbbi időpontban (lásd a véglegesített Beadványok részt a API segítségével dokumentációt)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Annak érdekében, hogy küldje el űrlapadatokat keresztül PHP, űrlapot kell elhelyezni, ugyanazon a honlapon, mert ez Form eszközök telepítését. Másodszor, a nem-technikai és kezdő Form eszközök a felhasználók, ez a módszer egy kicsit félelmetes az elején. De van rengeteg dokumentációt, hogy segítsen ki, köztük két egyszerű útmutatók integrálása az egy-és többoldalas formák (ezek kapcsolódnak egy későbbi lépés)."; +$LANG["text_add_form_direct_submission_benefits"] = "Ez a legegyszerűbb módja annak, hogy küldje el az űrlapot Űrlap eszközök. Nem igényel semmilyen ismerete PHP, és szükség csak egy nagyon kis változás az űrlapot. Nagyon jó a kisebb formákat, ahol szeretné, hogy csak benyújtják az információt az adatbázisba, akkor irányítsa át a felhasználót, hogy egy "köszönöm" oldalra."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Ez a kifogás a módszer nagyon egyszerű a használata, de nem nyújt túlzottan sok ellenőrzést a bonyolultabb formák. Több oldalas űrlapok, illetve formanyomtatványok igénylő szerver oldali validálás amelyek jobban illeszkednek a második módszer: benyújtásával keresztül a Forma Tools API-t."; +$LANG["text_add_form_field_types1"] = "Majdnem kész! Ez az oldal megpróbálja megtalálni az összes űrlapmező és megtudhatjuk, hogy mezőtípusok. Kattintson a Smart Fill gombot a jobb oldalon az induláshoz. Önnek csak szabad folytatni, ha minden olyan tevékenységet is megoldódott - kérdés van a figyelmet jelenik meg a "cselekvés szükséges " oszlopban."; +$LANG["text_add_form_field_types2"] = "Ha a forma nem a HTML-ben, kattintson a Tovább lépés gombra a folytatáshoz. Ez az összes konfigurálható később."; +$LANG["text_add_form_field_types3"] = "Ez újratölti az Ön űrlap (ok). Megjegyzés: ez felülírja minden Ön által végzett módosításokat ezen az oldalon."; +$LANG["text_add_form_field_types4"] = "Abban az esetben, ha befut problémái, kattintson ide, hogy kihagyja ezt a lépést. Minden megoldatlan mezők vannak beállítva, hogy az alapértelmezett értékeket. Testreszabhatja ezeken a területeken később."; +$LANG["text_add_form_field_types_manual_upload"] = "Ha nem tudták, hogy intelligens Töltse a mezőket, akkor érdemes kipróbálni egy alternatív megoldás: töltsd példányban űrlapok az alábbi mezőket."; +$LANG["text_add_form_field_types_manual_upload2"] = "Megjegyzés: Ne töltsön nyers PHP oldalak (vagy egyéb szerver-oldali kód) - csak töltse fel a HTML verzió. Ahhoz, hogy ez, nézze meg és mentse az oldalt böngészőjében."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Voltak több mező, hogy nem található formában oldalon megadott. Ez a leginkább valószínűsíthető oka a következő:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Beírt egy vagy több formában URL-jét a többoldalas formában helytelen."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Egy vagy több oldalnyi űrlapot jelszóval védettek, és a script nem tudta elérni az oldalt."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Ön helytelenül adta meg a formáját URL-jét."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Kattintson ide , hogy visszatérjen a Forma információs oldalán, hogy ellenőrizze a beállításokat."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Megváltoztatta az űrlap (ok) elvégzése után a teszt benyújtása"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Kattintson ide , hogy terjesszen egy másik teszt benyújtását."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Az űrlap jelszóval védett, és a script nem tudta elérni az oldalt."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Egy másik lapon / ablakban a böngésző, jelentkezzen be űrlapot, majd kattintson a Frissítés gombra oldal megpróbálja újra megtalálni a mezőket."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Ha a fentiek egyike sem megoldás a munka, akkor is ki szeretné próbálni kézzel feltölteni az űrlapok feldolgozására ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Voltak több mező, hogy nem található formában oldalakon megadott. Ez a leginkább valószínű oka egy ilyen:"; +$LANG["text_add_form_help_link"] = "Ha befut bajt során ezeket a lépéseket, próbálja felolvasott felhasználói dokumentáció ."; +$LANG["text_add_form_step_1_text_1"] = "A következő oldalakon vezet végig a lépéseket configure forma eszközök tárolására a form elküldést. Mielőtt folytatná, kérjük, ellenőrizze, hogy:"; +$LANG["text_add_form_step_1_text_2"] = "A forma már létre, és ez elérhető egy URL-t (localhost van finom)"; +$LANG["text_add_form_step_1_text_3"] = "képesek módosítani az űrlapot"; +$LANG["text_add_form_step_2_para_2"] = "Nyissa meg a formában egy szerkesztő a választ, és változtassa meg a form tag a következő, beleértve a két rejtett mezőt."; +$LANG["text_add_form_step_2_para_3"] = "Következő, nyissa meg a formáját a böngészőben . Töltse ki minden területen, és azt benyújtja. Benyújtása után, látnod kell egy figyelmeztető üzenetet. Miután ez az üzenet jelenik meg, térjen vissza erre az oldalra és kattintson a frissítés gombra. Ha ez a folyamat befejeződött, akkor megjelenik egy gomb alatt is, figyelembe, hogy a következő lépés."; +$LANG["text_add_form_step_2_para_6"] = "Az a forma szerint a következő értékeket. Ezek lehetnek meghatározott keresztül közvetlenül vagy PHP át mentén keresztül az űrlapban. Az alábbiakban példák minden. A (\$ varname) egy hash (vagy asszociatív tömb) minden formában benyújtott információt - ez általában a (\$ postvar) vagy (\$ sessionvar) változó, de lehet egyéni épül."; +$LANG["text_add_form_step_2_text_2"] = "Adja meg az URL-jét "köszönöm " oldalon van. Ez az, ahol szeretné, hogy az emberek irányítani után az űrlap benyújtásra került."; +$LANG["text_add_form_step_3_para_1"] = "Ezen az oldalon az összes mezőt a benyújtott formában. Kérjük, vizsgálja meg az egyes területen, és távolítsa el, hogy nem kell tárolni minden benyújtására. Ha töröl egy érvényes területen baleset, vagy meg kívánja változtatni által tárolt információ a formában térjen vissza az előző oldalra küldeni egy új teszt benyújtását."; +$LANG["text_add_form_step_3_para_2"] = "Megjegyzés: Ha több értéket keresztül küldött jelölőnégyzeteket, vagy több legördülő lista, győződjön meg róla Ön neve mezőben végződik a [] karaktereket (lásd a felhasználói dokumentációt további információért)."; +$LANG["text_add_form_step_3_text_1"] = "Itt, ahol a szórakozás kezdődik! Ezen a ponton, Form Tools vár egy teszt beadvány az űrlapot. Ez használja ezt az űrlapot benyújtott tudni, milyen információkat kell tárolni az adatbázisban."; +$LANG["text_add_form_step_3_text_2"] = "mutatva az űrlapot Űrlap Eszközök"; +$LANG["text_add_form_step_3_text_3"] = "űrlapon Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Annak érdekében, hogy integrálja a formában, javasoljuk, hogy olvassa el az alábbi tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "Elmondják, hogyan állítsd be formában való felkészülés során a vizsgált benyújtási, és magában foglalja az egyéb információkat is a segítséget. A vonal a PHP lesz szükséged van:"; +$LANG["text_add_form_step_3_text_6"] = "Ez biztosítja az adatok valóban küldött Forma eszközök. Ha megy keresztül a vizsgálat szerint, kattintson az alábbi gombra."; +$LANG["text_add_form_step_3_text_7"] = "Az oldalon ELŐTT a végső "Köszönjük" oldal, akkor tegyük hozzá a következő paramétert a \$ változó paraméterek:"; +$LANG["text_add_form_step_5_para_1"] = "Az adatbázist hoztak létre, hogy ezen az űrlapon, és a formanyomtatvány aktív használatra. Ha nyilatkozott, mutatva a nyomtatványt process.php, kérjük vissza a formáját, és távolítsa el a következő rejtett mező:"; +$LANG["text_add_form_step_5_para_2"] = "Akkor látogasson el a "köszönöm" oldalra, hogy üres az ülés. Ha ez megtörtént, minden új formában beadványt lesz feldolgozni és tárolni a Forma Tools. Próbálja meg így a benyújtott két információk ellenőrzése az egész feltöltése helyesen."; +$LANG["text_add_form_step_5_para_3"] = "Ha szeretné finomítani a formában a lehetőségek, mint például az automatikus elektronikus levél, hozzátéve, extra mezők területen, vagy a megszokott formában mezőtípusok, akkor szerkesztheti a formában az adott időpontban."; +$LANG["text_add_form_step_5_para_4"] = "Mivel az űrlapot tartalmaz fájlfeltöltés mezőket, akkor kell beállítani, hogy minden területen meg a feltöltés mappát, milyen fájlokat és engedélyezett. Ez megtalálható a Képernyő fülre a szerkesztési forma oldalt."; +$LANG["text_add_form_step_5_para_5"] = "Ha a beadvány keresztül küldött API változás a ft_api_init_form_page sor az első oldalán a formában, hogy:"; +$LANG["text_add_submission_button"] = "Az Add gombbal benyújtása csak akkor jelenik meg a véleményét, hogy van a "Május hozzá benyújtott " opciót beállítva, hogy "igen "."; +$LANG["text_admin_email_placeholder_info"] = "Ez az e-mail címét a Forma-kezelő eszközök meghatározott, a fiók beállításait. Ez csak az eredmények az e-mail címét, így ha használni akarjuk, mint a HTML link, akkor kell csavarja egy <a> tag, valahogy így:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Szintén az alapértelmezett bejelentkezési oldalt téma)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Először is, kérjük válasszon az űrlap típusát."; +$LANG["text_client_form_page"] = "Ezen az oldalon minden formáját, és Views rendelt a kliens. Tipp: ahhoz, hogy egyfajta állításával, hogy kell hozzárendelni legalább egy nézet."; +$LANG["text_client_map_filters_desc1"] = "Ügyfél Térkép szűrők segítségével korlátozzák a beadványt, hogy jelenik meg ebben a megtekintése feltérképezésével értékek formában mező értékeit az ügyfél számla."; +$LANG["text_client_no_forms"] = "Ön jelenleg nincs formája megtekinthető."; +$LANG["text_client_welcome"] = "Üdvözöljük! Ez a program tárolja az összes információt be a webhely látogatói. Megtekintéséhez a beadványt egy adott formában csak kattintson a képre! Linkre, vagy lásd a bal oldali navigációs menü más lehetőség."; +$LANG["text_config_file_created"] = "A config.php file jött létre."; +$LANG["text_config_file_not_created"] = "Nem tudtuk létrehozni a config.php fájlt. Akkor létre kell hozni a fájlt kézzel."; +$LANG["text_config_file_not_created_instructions"] = "Másolja be a tartalmát a szakaszt alább egy config.php nevű fájlt és töltsd fel FTP-n keresztül az űrlap Tools / globális mappát (a mappa is tartalmaz néhány más fájlokat és könyvtárakat, az egyik nevű fájl library.php)."; +$LANG["text_confirm_delete_form"] = "Igen, szeretném törölni ezt a formáját"; +$LANG["text_create_admin_account"] = "Most fogunk létrehozni a rendszergazda fiók. Ez kezelésére használt valamennyi aspektusát Form eszközök, mint például a hozzá formákat és teremtő ügyfél számlák."; +$LANG["text_create_new_client_account"] = "Az alábbi űrlap segítségével hozzon létre egy új ügyfél számla. Az összes mező kitöltése kötelező."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "lásd a PHP {\$datefunctionlink} funkció formázási lehetőségek"; +$LANG["text_default_file_settings_page"] = "Az oldal határozza meg a feltöltés beállításait Form eszközök telepítését. Ezek a szabályok vonatkoznak az összes feltöltött fájlok révén forma eszközök, kivéve, ha kifejezetten felülírja az egyedi formába. Megjegyzés: Ha megváltoztatjuk a feltöltés után a mappa fájl lett feltöltve, akkor automatikusan átkerül az új mappába."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Mielőtt folytatnád, meg kell frissíteni a / themes / default / cache mappát, hogy lehetővé tegye a teljes olvasási és írási. Ha ez megtörtént, ez az üzenet eltűnik, és telepítheti a szkriptet."; +$LANG["text_default_values_in_view"] = "Ez a rész nem kötelező. Minden beadványt készített a nézet tartalmazza az alapértelmezett értékek az itt megadott."; +$LANG["text_delete_all_forms"] = "Azt akarom, hogy törölje az összes fájlt, hogy volt feltöltött keresztül az alábbi űrlapot"; +$LANG["text_delete_form_warning"] = "Biztos benne, hogy törölni kívánja ezt az űrlapot? Ez a művelet nem vonható vissza. Minden adat véglegesen elveszik!"; +$LANG["text_edit_admin_menu_page"] = "Lehet szerkeszteni a lenti menü. Annak biztosítására, hogy mindig hozzájusson minden funkció rendelkezésre álló forma Tools, a következő oldalra szükség van: Forms, Ügyfeleink, A fiók, modulok, Beállítások és Kijelentkezés."; +$LANG["text_edit_client_menu_page"] = "Ez a szakasz lehetővé teszi, hogy testre a bal oldali oszlopban az egyes felhasználók. Létre lehet hozni annyi ügyfél menük kíván rendelni, és minden véve, hogy az egyik közülük. Alapértelmezés szerint két menük: egyet neked, a rendszergazda, és egy minden ügyfél számlák. A rendszergazdai fiók lehet módosítani, de nem távolítja el."; +$LANG["text_edit_tab_summary"] = "Ha szeretnél csoport ezt a nézetet a mezőket lapok, csak adja meg a lap nevét az alábbiakban. Miután elkészült, válassza ki a megfelelő lapot minden területen csoport a mezők lapon ."; +$LANG["text_edit_view_list_page"] = "Ez a lap ellenőrzések területén jelennek meg oszlopok a Submission lista oldalra, és néhány további beállításokat ezeken a területeken. Megjegyzés: javasoljuk, hogy hozzá nem több, mint 4 vagy 5 legfontosabb területek a nézet."; +$LANG["text_email_settings_intro"] = "Az oldal lehetővé teszi, melyik az a mezők tárolják e-mailek és a hozzájuk tartozó neveket. Miután az azokat itt, akkor is használja azokat az e-mail sablonokat címzettnek. Ez a rész nem kötelező."; +$LANG["text_email_tab_summary"] = "Ez a szakasz lehetővé teszi a szerkezet tetszőleges számú e-mailt kell küldeni, ha az űrlap elküldésekor, és egyéb ravaszt."; +$LANG["text_email_template_tab"] = "Ez a szakasz lehetővé teszi, hogy meghatározzák, milyen tartalom jelenik meg az e-mailt. Ha szeretné, hogy küldjük el az emailt, hiszen csak szöveges vagy e-mail, csak írjon be egy értéket az adott szakaszt. Ha megad egy értéket is, az elektronikus levél lesz küldött mindkét formátumban."; +$LANG["text_email_template_text_1"] = "Volt egy beadványával keresztül formában, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Volt egy beadványával keresztül formában, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Köszönjük a benyújtás!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Hibaüzenet jelenik meg, ha a mező nem az érvényesítés"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "A külső formák formái, amelyek már a honlapon, vagy valahol a weben. Válassza ki ezt a lehetőséget, ha saját formában szeretne integrálni Form eszközök."; +$LANG["text_fields_tab_summary"] = "Ezen az oldalon az összes űrlapmező. A szabályozás hogyan jelenik meg, ha böngészés beadványát, lásd a Views fülre . Törlése területen ezen az oldalon törli az összes beadványt, ezért kérjük, legyen óvatos!"; +$LANG["text_file_extension_info"] = "Adja meg fájlkiterjesztés elválasztva vesszővel (pl. jpg, gif, png), vagy hagyjuk üresen, hogy minden fájltípus."; +$LANG["text_file_field_placeholders_info"] = "File mezők két speciális helykitöltõvel: FILEURL és FILENAME. FILEURL a teljes URL-t, hogy a fájl, így közvetlenül kapcsolódhat bele a maileket, FILENAME csak a fájl nevét."; +$LANG["text_filters_page"] = "Csak azok a beadványok, amelyek megfelelnek a szabályokat határozná meg az alábbi jelenik meg ebben a nézetben."; +$LANG["text_filters_tips"] = "A tippeket, hogyan kell használni benyújtás szűrő, lásd a Felhasználói dokumentációban ."; +$LANG["text_forgot_password"] = "Nem probléma. Csak adja meg felhasználónevét és alatt a bejelentkezési adatokat küld az e-mail címre. Ha elfelejtette a felhasználói nevét, kérem írjon az Adminisztrátorral a {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Ez a nyomtatvány tartalmaz egy vagy több fájlt feltölteni területeken:"; +$LANG["text_form_placeholder_info"] = "Az alábbi helyőrzőket lehet használni e-mail sablon és nyelvi helyfoglaló területén, függetlenül attól, amit megtekintése az e-mail sablon van rendelve. A kérdéses helyőrzőket a sajátos formáját kérdés, a VÁLASZ helyőrzőket a választ minden kérdésre."; +$LANG["text_form_submission_date_placeholder"] = "A dátum, amikor a benyújtási készült."; +$LANG["text_form_tools_form_url"] = "A teljes URL-je az űrlapot. Ez csak egy értéket a külső formákat."; +$LANG["text_form_tools_login_url"] = "A bejelentkezési URL-Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Megjegyzés: ebben a formában jelenleg adminisztrátor hozzáférés típusa, így sem az ügyfél számlák képes lesz látni ezt a nézetet."; +$LANG["text_form_view_permission_info_private"] = "Megjegyzés: ebben a formában jelenleg Private hozzáférés típusa, így a köz-és magánszféra lehetőség itt is csak a részhalmaza az ügyfelek."; +$LANG["text_ft_installed"] = "Gratulálunk, Form Eszközök sikeresen telepítve!"; +$LANG["text_global_placeholder_info"] = "Ezek helyőrzők lehet használni bármely sablonok és semmilyen formában."; +$LANG["text_group_name_explanation"] = "A mező hozzáadása révén Add forma folyamat, ez az érték előretöltött a szöveg megjelenítése bármilyen területen használja az értéket. Ha szeretné megváltoztatni, hogy jobban jellemzik a tartalmát."; +$LANG["text_install_create_config_file"] = "Eszközök formában tárolja a szerver és az adatbázis-beállítások nevű fájlt config.php talált a / világ / mappába. Kattintson a "Create File" gombra, hogy automatikusan generálja a fájl a szerveren."; +$LANG["text_install_create_database_tables"] = "Most fogunk létrehozni a Form Tools adatbázis táblák. Ez a lépés maga az adatbázis, hogy már létrejött. Ha nem biztos abban, hogyan kell ezt csinálni, vegye fel a kapcsolatot a tárhely szolgáltató."; +$LANG["text_install_db_tables_error_tip_1"] = ""Ismeretlen MySQL Server Host" általában azt jelenti, hogy a megadott gépnév helytelen. Talán próbáljuk meg a "localhost" - ez egy gyakori módja annak, hogy olvassa el a "helyi" adatbázis egy webszerveren."; +$LANG["text_install_db_tables_error_tip_2"] = ""Nem lehet csatlakozni a helyi MySQL szerver segítségével socket": az adatbázis hostname mező újra hibás."; +$LANG["text_install_db_tables_error_tip_3"] = ""A hozzáférés megtagadva a felhasználó:" azt jelenti, hogy van egy probléma a felhasználónév / jelszó párost."; +$LANG["text_install_db_tables_error_tip_4"] = ""A hozzáférés megtagadva felhasználó: ... az adatbázis ..." azt jelenti, hogy bár a felhasználónevet és jelszót, helyes, hogy nem tudott kapcsolódni az adott adatbázist, hogy figyelembe. Ez azt jelenti, hogy sem az adatbázis neve helytelen, vagy hogy ez a felhasználói fiók nem kapcsolódik az adatbázis."; +$LANG["text_install_email_content_text"] = "Rengeteg erőforrás van a honlapunkon, hogy segítsen neked elkezdeni, beleértve az online dokumentációt (https://docs.formtools.org) és az oktatóanyagokat (https://docs.formtools.org/tutorials). Ha úgy találja, hogy elakadt vagy kérdésed van, kérdezze meg a github-ot (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Sajnálom, Form eszközök nem lesz képes futtatni a szerveren. Kattintson ide a minimális követelményeknek."; +$LANG["text_install_system_check"] = "Ezen az oldalon fut egy pár vizsgálatokat a rendszer annak érdekében, hogy az képes-hoz fuss Forma eszközök."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "A belső formák léteznek kizárólag Form Tools - máshol nem a webhelyen. Csak Form eszközök felhasználói fiókok férhetnek hozzá az űrlapot. Válassza ezt az opciót, ha nincs egy meglévő űrlapot."; +$LANG["text_internal_form_intro"] = "Használd az alábbi űrlapot, hogy hozzon létre egy új belső űrlapot. Minden beállítás, beleértve a számát és tartalmát űrlapmezők lehet változtatni, és konfigurálni később."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "A belépéshez és a nyomtatványt használja az Eszközök, akkor kell a Javascript használatát a böngészőjében. Kérjük, hogy ez most, és kattintson frissítse a böngészőben."; +$LANG["text_last_modified_date_explanation_c"] = "Az utóbbi időben ez a kifogás módosították. Az új beadvány, ez ugyanaz, mint:"; +$LANG["text_limit_email_content_desc"] = "Ez az opció csak akkor működik, a HTML és a szöveges tartalom generálta Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(Csak a listák Megtekintések egy vagy több meghatározott szűrőkre)"; +$LANG["text_log_in_to_ft"] = "Jelentkezzen be a Forma Eszközök"; +$LANG["text_login"] = "Kérjük, jelentkezzen be alább való a (\$ programnév) Adminisztráció panel. Ha elfelejtette jelszavát, kattintson ide ."; +$LANG["text_login_info"] = "Ahogy kérte, itt van a bejelentkezési adatokat."; +$LANG["text_name_of_form"] = "A neve az űrlapot."; +$LANG["text_no_clients"] = "Jelenleg nincs ügyfelek az adatbázisban. Egy új ügyfél, kattintson a Hozzáadás Ügyfél gombra."; +$LANG["text_no_clients_found"] = "Nem ügyfelei találtak. Próbálja ki kiterjesztése a keresési feltételeknek."; +$LANG["text_no_fields_in_view"] = "Ez a nézet nincs mezőket is. Kattintson az alábbi linkre."; +$LANG["text_no_forms"] = "Jelenleg nincs formája az adatbázisban. Egy új űrlapot, kattintson a Hozzáadás gombra forma alul."; +$LANG["text_no_forms_found"] = "Nem formák találtak."; +$LANG["text_no_forms_found_search"] = "Nem formák találtak. Kérjük módositsa a keresési feltételeknek."; +$LANG["text_no_modules_found"] = "Nem modulok találtak. Próbálja ki kiterjesztése a keresési feltételeknek."; +$LANG["text_no_recipients_added"] = "Nincs címzett adtak."; +$LANG["text_no_search_results"] = "Nincsenek eredmények a keresési feltételeknek / megtekintése."; +$LANG["text_no_submissions_found"] = "Sajnáljuk, nincs beadvány találtak."; +$LANG["text_no_themes"] = "Ön nincs téma határozza meg. Kattintson az alábbi gombra, hogy frissítse a téma listára, vagy ellenőrizze a Form eszközök felhasználói dokumentáció az információk hozzáadásával témákat."; +$LANG["text_non_deletable_fields"] = "Ezt a mezőt használja a Core script, és nem lehet szerkeszteni vagy törölni anélkül, hogy inkompatibilitás. Ha szeretnél változtatni a mezőbe írja be, hogy egy másolatot, és módosítsa a másolatot."; +$LANG["text_option_list_group_explanation"] = "Ha ez ki van választva, ez lehetővé teszi a csoport a lehetőségeket. Milyen a csoportok jelennek meg függ a mezőbe írja be ezzel az opciók listáját."; +$LANG["text_option_list_page"] = "Gombok, jelölőnégyzetek, dropdown és több válassza legördülő mezők együttesen biztosítják a felhasználó számára több lehetőséget is, ahonnan kiválaszthat egy vagy több elemet. Az űrlap eszközök, ezek az úgynevezett opciós listája. Általában ezek automatikusan létrehozza az Új külső forma folyamat, de manuálisan is hozzáadhatja vagy szerkesztheti a lehetőséget az alábbi listákat, ha az űrlap tartalma változik, vagy építésére mezőt, amik csak belsőleg használható."; +$LANG["text_option_list_used_by_fields"] = "Ez az opció lista által használt több űrlapmezőket. Ha frissíti az alábbi információkat, akkor meg fog változni az összes területen (lásd az űrlap mezők fülre listájának megtekintéséhez mezők). Ha szeretne frissíteni az értékeket egy, vagy egy részét a mezők, amelyek jelenleg hozzárendelt, kattintson ide , hogy hozzon létre egy új opció lista az azonos értékeket, mint ez. Ezután hozzárendelheti az űrlap mezőket az új csoport."; +$LANG["text_public_form_omit_list_page"] = "Nyilvános formák Önnek javára bérbeadás minden ügyfélfiókok férni, anélkül, hogy manuálisan hozzárendelni minden ügyfél rájuk. Az oldal lehetővé teszi, hogy pontosan azon ügyfelek, akik nem érheti el ezt a formáját, bár a forma van megjelölve nyilvános."; +$LANG["text_public_view_omit_list_page"] = "Nyilvános nézetek Önnek javára bérbeadás minden ügyfélfiókok férni, anélkül, hogy manuálisan hozzárendelni minden ügyfél rájuk. Az oldal lehetővé teszi, hogy pontosan azon ügyfelek, akik nem juthatnak hozzá az adott megtekintése."; +$LANG["text_reference_tab_info"] = "Ezen az oldalon az összes helyőrzőket elérhető az űrlap. Helyőrzőket a húrok amit fel lehet használni az e-mail sablonok, és jelölt mezőt speciális placeholder ikon . Amikor lépett egy mezőt, akkor dinamikusan alakítja a megfelelő értéket, ha a mező megtekinthető, vagy e-mail érkezik."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Nézze át a felhasználói dokumentáció"; +$LANG["text_send_email_from_edit_submission_page"] = "Közé küldhetnek e-mail-től Edit benyújtása oldal"; +$LANG["text_smart_fill_option_list_problem"] = "Nem tudtuk intelligens Töltse a területen lehetőségeket. Azonban, mint alternatív, akkor próbáljon meg feltölteni egy másolatot az űrlap oldalra az alábbi mezőben. Megjegyzés: Ne töltsön nyers PHP oldalak (vagy egyéb szerver-oldali kód) - csak töltse fel a HTML verzió. Ahhoz, hogy ez, nézze meg és mentse az oldalt böngészőjében."; +$LANG["text_submission_ip_address"] = "Az IP-cím a felhasználó, aki nyilatkozott."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Használja az alábbi űrlapot, hogy egyik vagy másik vélemény, vagy küldjön e-mailt magát generált e-mail sablon. Az e-mail csak akkor kerül kiküldésre, hogy az e-mail az alábbiakban meghatározott, a fő, cc és bcc címzett e-mail címet figyelmen kívül hagyja tesztelése közben."; +$LANG["text_test_email_templates_no_submissions"] = "Annak érdekében, hogy teszteljék az e-mail sablonok, először meg kell alávetni, legalább egy űrlap benyújtását."; +$LANG["text_theme_page_intro"] = "Ezen az oldalon az összes témát. Kattints az indexképre, hogy egy nagyobb példa a téma stílusokat. Az "engedélyezett" opciót határozza meg, hogy ebben a témában lehet kiválasztani az ügyfelek. Böngészhet az összes rendelkezésre álló témákat, látogasson el a Form Tools honlapján ."; +$LANG["text_tutorial_adding_first_form"] = "Bemutató: az első hozzáadása formában!"; +$LANG["text_unique_submission_id"] = "Az egyedi azonosító benyújtása."; +$LANG["text_unused_option_list"] = "Ez az opció a lista nem fog semmilyen formában területeken."; +$LANG["text_upgraded"] = "Telepítési lett {\$version})"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Ez az opció lista használja az alábbi mezőket."; +$LANG["text_view_fields_info"] = "Ez a lap ellenőrzések területén jelennek meg, amikor szerkesztés beadványát, ezt a nézetet, hogy rend és függetlenül attól, hogy szerkeszthető-e vagy sem."; +$LANG["text_view_tab_summary"] = "Ez a fül lehetővé teszi, hogy hozzon létre különböző módon csoportosítani és rendezni az adatokat. Views segítségével létrehozhatunk egyéni részhalmazát az űrlap adatokat osztott meg könnyen kezelhető darabokat, és korlátozni kell, mi ügyfelek látni vagy szerkeszteni."; +$LANG["validation_account_disabled"] = "Sajnáljuk, fiókja le van tiltva."; +$LANG["validation_account_not_recognized"] = "Sajnálom, hogy a felhasználónév nem ismeri."; +$LANG["validation_account_not_recognized_info"] = "Sajnálom, hogy a felhasználói név nem található. Kérjük, próbálja újra, vagy lépjen kapcsolatba a webhely adminisztrátorától az alábbi címen."; +$LANG["validation_account_pending"] = "A felhasználó számla van függőben lévő jóváhagyási egy rendszergazda."; +$LANG["validation_check_delete_client"] = "Biztos benne, hogy törölni kívánja ezt a ügyfélszámla?"; +$LANG["validation_client_password_missing_number"] = "Az ügyfél jelszavát tartalmaznia kell legalább egy számot (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Az ügyfél jelszavát tartalmaznia kell legalább a következő karakterek: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Az ügyfél jelszavát tartalmaznia kell legalább egy nagybetűt."; +$LANG["validation_client_password_too_short"] = "Az ügyfél jelszavát kell legalább {\$number} karakter hosszú."; +$LANG["validation_col_name_is_reserved_word"] = "Elnézést, ez az adatbázis oszlop név fenntartott munka MySQL. Kérem, nevezze meg!"; +$LANG["validation_db_name"] = "Az adatbázisnevek nem tartalmazhatnak periódusokat vagy sávokat."; +$LANG["validation_db_not_updated_invalid_input"] = "Az adatbázist nem lehet frissíteni. Kérjük, ellenőrizze, hogy a beírt értékek érvényesek."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Sajnáljuk, az alapértelmezett kezelő és ügyfél témák mindig bekapcsolva."; +$LANG["validation_default_phone_num_required"] = "Kérjük, töltse ki a teljes telefonszámát a <b> { \$ területén} </ b> területen - csak számok."; +$LANG["validation_default_rule_alpha"] = "Kérjük, csak betűk és számok a <b> { \$ területén} </ b> mezőbe."; +$LANG["validation_default_rule_letters_only"] = "Kérjük, csak a betűk a <b> { \$ területén} </ b> mezőbe."; +$LANG["validation_default_rule_numbers_only"] = "Kérjük, csak a számok a <b> { \$ területén} </ b> mezőbe."; +$LANG["validation_default_rule_required"] = "Kérjük, adjon meg egy értéket a <b> { \$ területén} </ b> mezőbe."; +$LANG["validation_default_rule_valid_email"] = "Adj meg egy érvényes e-mail címet a <b> { \$ területén} </ b> mezőbe."; +$LANG["validation_delete_form_confirm"] = "Kérjük, ellenőrizze a dobozt, hogy erősítse meg, hogy a törölni kívánt e formáját."; +$LANG["validation_delete_non_empty_option_list"] = "Figyelem! Ez az opció lista által használt egy vagy több formában területeken. Törlése azt, hogy ezeken a területeken már nem működik megfelelően."; +$LANG["validation_display_names_incomplete"] = "Írjon be egy értéket az összes megjelenítési nevek, vagy kattintson a Smart Kitöltés opció be őket dinamikusan."; +$LANG["validation_duplicate_form_field_name"] = "Nem lehet több területén az azonos mezőnév."; +$LANG["validation_email_not_found_or_invalid"] = "Sajnáljuk, az e-mail fiókjához kapcsolódó vagy nem létezik, vagy érvénytelen."; +$LANG["validation_folder_invalid_permissions"] = "Annak érdekében, hogy futtatni ezt a tesztet, a jogosultságokat kell beállítani a feltöltési mappa, hogy a fájlok olvasása és írása (777 Unix)."; +$LANG["validation_folder_not_writable"] = "Ez a mappa nem írható."; +$LANG["validation_internal_form_too_many_fields"] = "Sajnos, akkor csak létre űrlapokat 1000 mező vagy annál kevesebb."; +$LANG["validation_invalid_admin_email"] = "Adjon meg egy érvényes adminstrator e-mail címét."; +$LANG["validation_invalid_admin_username"] = "A felhasználónév csak alfanumerikus karakterek (AZ és 0-9)."; +$LANG["validation_invalid_client_username"] = "Az ügyfél felhasználói neve csak alfanumerikus karakterek (AZ és 0-9)."; +$LANG["validation_invalid_client_username2"] = "Sajnáljuk, az azonosító az csak betűket, számokat és az aláhúzás karaktert. Kérjük, adja meg az új felhasználónevet."; +$LANG["validation_invalid_column_name"] = "Oszlopnevek csak alfanumerikus (AZ, 0-9). Kérjük, ellenőrizze az oszlop nevek."; +$LANG["validation_invalid_custom_from_email"] = "Adjon meg egy érvényes egyéni "A" e-mail címét."; +$LANG["validation_invalid_custom_reply_to_email"] = "Adjon meg egy érvényes egyéni "Válasz-hoz" e-mail címre."; +$LANG["validation_invalid_default_sessions_timeout"] = "Adjon meg egy érvényes értéket (a szám) az alapértelmezett ülések várakozási idő."; +$LANG["validation_invalid_email"] = "Adjon meg egy érvényes e-mail címet."; +$LANG["validation_invalid_email_id"] = "Sajnálom, hogy az érvénytelen e-mail azonosítót."; +$LANG["validation_invalid_folder"] = "Sajnáljuk, de ez nem tűnik egy érvényes mappa."; +$LANG["validation_invalid_form_field_names"] = "Mezők csak alfanumerikus és aláhúzás (AZ, 0-9, _), szóköz nélkül."; +$LANG["validation_invalid_num_clients_per_page"] = "Kérjük, csak a számok a szám Ügyfeleink Oldalanként területén."; +$LANG["validation_invalid_num_emails_per_page"] = "Kérjük, csak akkor lép számjegy az e-mailek megjelenítése."; +$LANG["validation_invalid_num_form_fields"] = "Kérjük, csak számok a mezők száma mezőben."; +$LANG["validation_invalid_num_forms_per_page"] = "Kérjük, csak a számok a szám Forms Oldalanként területén."; +$LANG["validation_invalid_num_menus_per_page"] = "Kérjük, csak akkor lép számjegy a menük megjelenítése."; +$LANG["validation_invalid_num_modules_per_page"] = "Kérjük, csak a számok a szám modulok Oldalanként területén."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Kérjük, csak számok a Num opciós listák Oldalanként területen."; +$LANG["validation_invalid_num_submissions_per_page"] = "Adjon meg egy érvényes számos beadvány egy oldalon."; +$LANG["validation_invalid_sessions_timeout"] = "Adjon meg egy érvényes session timeout (egész csak!)."; +$LANG["validation_invalid_tab_assign_values"] = "Kérjük, csak a számok a "-tól" és "a" mezők."; +$LANG["validation_invalid_table_prefix"] = "Kérjük, adja meg az adatbázis előtag áll a levél és az aláhúzás csak."; +$LANG["validation_invalid_upload_folder"] = "A szerver telepítése PHP érvénytelen beállítást a upload_tmp_dir értéket. ") {\$upload_folder}" nem érvényes mappát."; +$LANG["validation_invalid_url"] = "Adjon meg egy érvényes URL-t."; +$LANG["validation_invalid_username"] = "A felhasználónevét csak állhat, alfanumerikus karakterek (AZ és 0-9)."; +$LANG["validation_is_form_active"] = "Kérjük, jelölje meg, hogy a forma aktív, vagy sem."; +$LANG["validation_menu_name_taken"] = "Sajnáljuk, ez a menü neve már foglalt. Kérjük, válasszon egy új nevet."; +$LANG["validation_modules_search_no_status"] = "Kérjük, válassza ki az Engedélyezve vagy Letiltva jelölőnégyzeteket."; +$LANG["validation_no_access_type"] = "Kérjük, adja meg a hozzáférés típusa."; +$LANG["validation_no_account_logout_url"] = "Kérjük, adja meg a logout URL-t."; +$LANG["validation_no_account_password_confirmed"] = "Kérjük, adja meg újra az új jelszót."; +$LANG["validation_no_account_password_confirmed2"] = "Kérjük, adja meg újra az új jelszót."; +$LANG["validation_no_admin_email"] = "Kérjük, adja meg az adminisztrátor e-mail címét."; +$LANG["validation_no_admin_theme"] = "Kérjük, válassza ki a témát a rendszergazda fiók."; +$LANG["validation_no_admin_theme_swatch"] = "Kérjük, válasszon egy színmintát a rendszergazda téma."; +$LANG["validation_no_client_email"] = "Kérjük, adja meg az ügyfél e-mail címét."; +$LANG["validation_no_client_first_name"] = "Kérjük, adja meg az ügyfél neve."; +$LANG["validation_no_client_last_name"] = "Kérjük, adja meg az ügyfél vezetéknevét."; +$LANG["validation_no_client_login_page"] = "Kérjük, jelölje meg a kliens oldalon kell irányítva, ha bejelentkezéshez"; +$LANG["validation_no_client_password"] = "Kérjük, adja meg az ügyfél jelszavát."; +$LANG["validation_no_client_theme_swatch"] = "Kérjük, válassza ki az alapértelmezett színmintát az ügyfél számlák."; +$LANG["validation_no_client_username"] = "Kérjük, adja meg az ügyfél felhasználónevét."; +$LANG["validation_no_column_name"] = "Kérjük, adja meg az összes oszlop nevét, vagy kattintson a Smart Fill gombot, hogy automatikusan töltse ki őket."; +$LANG["validation_no_column_selected"] = "Kérjük, válasszon legalább egy területen jelenik meg, mint egy oszlop a benyújtott tőzsdei oldal."; +$LANG["validation_no_custom_from_email"] = "Kérjük, adja meg az egyedi "A" e-mail címre."; +$LANG["validation_no_custom_recipient_email"] = "Kérjük, adja meg az egyéni címzett e-mail címét."; +$LANG["validation_no_custom_reply_to_email"] = "Kérjük, adja meg az egyedi "Válasz-hoz" e-mail címre."; +$LANG["validation_no_date_format"] = "Kérjük, adja meg a dátumot formátumban."; +$LANG["validation_no_db_column_single"] = "Kérjük, adja meg az adatbázis oszlop nevét."; +$LANG["validation_no_db_hostname"] = "Kérjük, adja meg az adatbázis nevével."; +$LANG["validation_no_db_name"] = "Kérjük, adja meg az adatbázis nevét."; +$LANG["validation_no_db_username"] = "Kérjük, adja meg az adatbázis-felhasználónevet."; +$LANG["validation_no_default_client_theme"] = "Kérjük, válassza ki az alapértelmezett témát minden új ügyfél számlák."; +$LANG["validation_no_default_language"] = "Kérjük, válassza ki az alapértelmezett nyelv a telepített eszközök forma."; +$LANG["validation_no_default_sessions_timeout"] = "Kérjük, adja meg az alapértelmezett session timeout a felhasználói fiókok."; +$LANG["validation_no_display_text"] = "Kérjük, adja meg a kijelz minden területen."; +$LANG["validation_no_display_text_single"] = "Kérjük, adja meg a kijelz értékét."; +$LANG["validation_no_edit_submission_page_label"] = "Kérjük, adja meg a Szerkesztés benyújtása oldal címkét."; +$LANG["validation_no_email"] = "Kérjük, adja meg email címét."; +$LANG["validation_no_email_config_field"] = "Kérjük, adja meg milyen formában mező az e-mail mezőbe."; +$LANG["validation_no_email_content"] = "Kérjük, adja meg e-mail tartalmát legalább egy a formátumban (HTML vagy szöveg)."; +$LANG["validation_no_email_from_field"] = "Kérjük, az e-mail "-tól" mezőben."; +$LANG["validation_no_email_template_name"] = "Kérjük, adja meg az e-mail sablon nevét."; +$LANG["validation_no_email_template_view_id"] = "Kérjük, válassza ki a nézet, hogy e-mail sablont kell feltérképezni."; +$LANG["validation_no_email_template_view_mapping_value"] = "Kérjük, jelezze, ha az e-mailt kell küldeni."; +$LANG["validation_no_enabled_themes"] = "Kérjük, hogy legalább egy téma engedélyezve van."; +$LANG["validation_no_first_name"] = "Kérjük, adja meg a keresztnevét."; +$LANG["validation_no_form_field_name"] = "Kérjük, adja meg az összes űrlapmező nevét."; +$LANG["validation_no_form_field_single"] = "Kérjük, adja meg az űrlapmező értékét."; +$LANG["validation_no_form_id"] = "Az űrlap azonosítója nincs megadva. Kérjük, jelentkezzen ki, majd próbálkozzon újra."; +$LANG["validation_no_form_name"] = "Kérjük, adja meg a név."; +$LANG["validation_no_form_url"] = "Kérjük, adja meg az űrlap URL-t."; +$LANG["validation_no_last_name"] = "Kérjük, adja meg a vezetéknevét."; +$LANG["validation_no_login_page"] = "Kérjük, jelezze oldalt szeretne küldeni minden egyes alkalommal, amikor bejelentkezik"; +$LANG["validation_no_logout_url"] = "Kérjük, adja meg a logout URL-t."; +$LANG["validation_no_main_email_recipient"] = "Kérem, adjon meg legalább egy fő e-mail címzett (azaz nem a cc vagy BCC)."; +$LANG["validation_no_menu"] = "Kérjük, válasszon egy menüt az e felhasználói fiókhoz."; +$LANG["validation_no_menu_id"] = "Kérjük, válasszon ki egy menüt."; +$LANG["validation_no_num_clients_per_page"] = "Kérjük, írja be a számot az ügyfél-számlák oldalanként."; +$LANG["validation_no_num_emails_per_page"] = "Kérjük, írja be a számot az e-maileket lista megjelenítése."; +$LANG["validation_no_num_form_fields"] = "Kérjük, adja meg a mezők az űrlap."; +$LANG["validation_no_num_forms_per_page"] = "Kérjük, írja be a számot a formák megjelenítése."; +$LANG["validation_no_num_menus_per_page"] = "Kérjük, írja be a számot a menük lista megjelenítése."; +$LANG["validation_no_num_modules_per_page"] = "Kérjük, adja meg a modulok száma egy oldalon."; +$LANG["validation_no_num_option_lists_per_page"] = "Kérjük, adja meg a lehetőséget listák oldalanként."; +$LANG["validation_no_num_submissions_per_page"] = "Kérjük, írja be a számot a beadványok megjeleníteni egy oldalon."; +$LANG["validation_no_option_list_name"] = "Kérjük, adja meg a lehetőséget lista nevét."; +$LANG["validation_no_page_titles"] = "Kérjük, adja meg az alapértelmezett oldalcímeket a felhasználói fiókok."; +$LANG["validation_no_password"] = "Kérjük, adja meg a jelszavát."; +$LANG["validation_no_program_name"] = "Kérjük, adja meg a program nevét."; +$LANG["validation_no_second_password"] = "Kérjük, adja meg újra a jelszót."; +$LANG["validation_no_sessions_timeout"] = "Kérjük, adja meg a session timeout."; +$LANG["validation_no_smart_fill_values"] = "Kérjük, adja meg űrlapmező nevét és az URL-t az űrlap."; +$LANG["validation_no_table_prefix"] = "Kérjük, adja meg az adatbázis előtagot."; +$LANG["validation_no_tabs_defined"] = "Nincs lapok meg"; +$LANG["validation_no_test_email_recipient"] = "Kérjük, adja meg e-mail címet, ahol meg kell küldeni a teszt e-mailt."; +$LANG["validation_no_test_email_submission_id"] = "Kérjük, adja meg a benyújtás azonosító számot."; +$LANG["validation_no_theme"] = "Kérjük, válasszon egy témát."; +$LANG["validation_no_theme_swatch"] = "Kérjük, válasszon egy színmintát a kiválasztott témát."; +$LANG["validation_no_timezone_offset"] = "Kérjük, adja meg az időzóna offset."; +$LANG["validation_no_titles"] = "Kérjük, adja meg az oldal címét."; +$LANG["validation_no_two_column_names"] = "Bocs, lehet, hogy nem adja meg ugyanazt adatbázis oszlop nevére kétszer."; +$LANG["validation_no_ui_language"] = "Kérjük, válasszon egy nyelvet a felület."; +$LANG["validation_no_url"] = "Írjon be egy URL-t."; +$LANG["validation_no_username"] = "Adja meg a felhasználónevét."; +$LANG["validation_no_username_or_js"] = "Meg kell adnod a nevedet. Kérjük, engedélyezze a JavaScriptet a böngészőjében."; +$LANG["validation_no_view_fields"] = "Véleménye szerint nem tartalmaz olyan mezőket! Be kell hozzá legalább egy területen van, hogy valamit mutat fel a nézet."; +$LANG["validation_no_view_fields_selected"] = "Kérjük, válasszon egy vagy több mező, hogy adjunk a nézet."; +$LANG["validation_no_view_name"] = "Kérjük, adja meg nevét megtekintése."; +$LANG["validation_num_rows_to_add"] = "Kérjük, adja meg a sorok számát hozzá."; +$LANG["validation_option_list_name_taken"] = "Sajnos, ez az opció lista név már foglalt. Kérjük, válasszon egy új nevet."; +$LANG["validation_password_in_password_history"] = "A biztonság, akkor nem adja meg ugyanazt a jelszót, mint bármelyik az elmúlt {\$history_size} jelszót. Adjon meg egy másik jelszót."; +$LANG["validation_passwords_different"] = "Kérjük, ellenőrizze, hogy a jelszó ugyanaz."; +$LANG["validation_please_enter_search_date_range"] = "Kérjük, válassza ki a keresési dátumtartományt."; +$LANG["validation_please_enter_search_keyword"] = "Kérjük, adja meg a keresési kulcsszót."; +$LANG["validation_select_field_type"] = "Kérjük, válassza ki a mező típusát."; +$LANG["validation_select_submissions_to_copy"] = "Válassza ki azokat a beadványokat, amelyeket másolni szeretne."; +$LANG["validation_select_submissions_to_delete"] = "Kérjük, válassza ki az észrevételeket szeretné törölni."; +$LANG["validation_smart_fill_cannot_fill"] = "Sajnáljuk, de nem tudta kitölteni ezt a területen."; +$LANG["validation_smart_fill_invalid_field_type"] = "Nem tudtuk megtalálni a területen, de ez nem egy legördülő, jelölőnégyzetet vagy rádiós csoport."; +$LANG["validation_smart_fill_no_field_found"] = "Sajnáljuk, nem találtunk olyan formában, hogy a mező nevét a megadott oldalra."; +$LANG["validation_smart_fill_no_page"] = "Kérjük, keresse az oldal tartalmazza a területen szeretne Smart kitöltése."; +$LANG["validation_smart_fill_upload_all_pages"] = "Kérjük, töltse fel az összes oldalt a formában."; +$LANG["validation_upload_folder_not_writable"] = "Ez az ideiglenes feltölt megadott mappába a PHP nem írható. Amíg ez nem rögzített, fájlokat nem lehet feltölteni keresztül Form Tools (vagy bármilyen más PHP program). Kérjük, forduljon a tárhely szolgáltató."; +$LANG["validation_upload_html_files_only"] = "Kérjük, csak feltölteni HTML fájlokat."; +$LANG["validation_username_taken"] = "Sajnálom, hogy a felhasználónév már foglalt. Kérjük, adja meg egy másik felhasználónevet."; +$LANG["validation_wrong_password"] = "Sajnálom, hogy a jelszó nem egyezik."; +$LANG["word_about"] = "Rólunk"; +$LANG["word_access"] = "Hozzáférés"; +$LANG["word_account"] = "Fiók"; +$LANG["word_account_sp"] = "Számlá (k)"; +$LANG["word_accounts"] = "Fiókok"; +$LANG["word_action"] = "Tevékenység"; +$LANG["word_active"] = "Aktív"; +$LANG["word_add"] = "Hozzáad"; +$LANG["word_add_rightarrow"] = "Add »"; +$LANG["word_add_uc_rightarrow"] = "Hozzáad »"; +$LANG["word_administration"] = "Adminisztráció"; +$LANG["word_administrator"] = "Adminisztrátor"; +$LANG["word_after"] = "Után"; +$LANG["word_aquamarine"] = "Akvamarin"; +$LANG["word_asc"] = "Növekvő"; +$LANG["word_author"] = "Szerző"; +$LANG["word_author_c"] = "Szerző:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Vissza"; +$LANG["word_bcc_c"] = "Titkos másolat:"; +$LANG["word_before"] = "Előtt"; +$LANG["word_benefits"] = "Előnyök"; +$LANG["word_blue"] = "Kék"; +$LANG["word_cancel"] = "Mégse"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Jelölő négyzet"; +$LANG["word_checklist"] = "Ellenőrzőlista"; +$LANG["word_client"] = "Ügyfél"; +$LANG["word_client_c"] = "Ügyfél:"; +$LANG["word_clients"] = "Ügyfeleink"; +$LANG["word_close"] = "Bezár"; +$LANG["word_code"] = "Kód"; +$LANG["word_column"] = "Oszlop"; +$LANG["word_columns"] = "Oszlopok"; +$LANG["word_columns_sp"] = "Oszlop (ok)"; +$LANG["word_complete"] = "Kész"; +$LANG["word_configuration"] = "Konfiguráció"; +$LANG["word_content"] = "Tartalom"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Folytatás »"; +$LANG["word_copy"] = "Másolat"; +$LANG["word_custom"] = "Egyedi"; +$LANG["word_data"] = "Adat"; +$LANG["word_date"] = "Dátum"; +$LANG["word_debugging_c"] = "Hibakereső:"; +$LANG["word_delete"] = "Töröl"; +$LANG["word_desc"] = "Leírás"; +$LANG["word_direct"] = "Közvetlen"; +$LANG["word_disabled"] = "Letilt"; +$LANG["word_documentation"] = "Dokumentáció"; +$LANG["word_done"] = "Kész"; +$LANG["word_drawbacks"] = "Hátrányai"; +$LANG["word_dropdown"] = "Legördülő"; +$LANG["word_edit"] = "Szerkesztés"; +$LANG["word_editable"] = "Szerkeszthető"; +$LANG["word_email"] = "E-mail"; +$LANG["word_email_c"] = "E-mail:"; +$LANG["word_emails"] = "E-mailek"; +$LANG["word_enabled"] = "Engedélyezve"; +$LANG["word_equals"] = "Egyenlõ"; +$LANG["word_error"] = "Hiba"; +$LANG["word_error_c"] = "Hiba:"; +$LANG["word_examples_c"] = "Példák:"; +$LANG["word_external"] = "Külső"; +$LANG["word_fail"] = "Hamis"; +$LANG["word_field"] = "Mező"; +$LANG["word_field_sp"] = "Mező (k)"; +$LANG["word_fields"] = "Mezők"; +$LANG["word_fields_sp"] = "Field (ek)"; +$LANG["word_file"] = "Fájl"; +$LANG["word_file_b_uc"] = "[FÁJL]"; +$LANG["word_files"] = "Fájlok"; +$LANG["word_filters"] = "Szűrők"; +$LANG["word_filters_sp"] = "Szűrő (k)"; +$LANG["word_for"] = "A"; +$LANG["word_form"] = "Mező"; +$LANG["word_form_c"] = "Mező:"; +$LANG["word_formatting"] = "Formázás"; +$LANG["word_forms"] = "Mezők"; +$LANG["word_found"] = "Talált"; +$LANG["word_from"] = "-Tól"; +$LANG["word_from_c"] = "-Tól:"; +$LANG["word_general"] = "Általános"; +$LANG["word_green"] = "Zöld"; +$LANG["word_grey"] = "Szürke"; +$LANG["word_height"] = "Magasság"; +$LANG["word_help"] = "Segítség"; +$LANG["word_hidden"] = "Rejtett"; +$LANG["word_highlight"] = "Kiemelés"; +$LANG["word_horizontal"] = "Horizontális"; +$LANG["word_hour"] = "Óra"; +$LANG["word_hours"] = "Órák"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Kép"; +$LANG["word_incomplete"] = "Befejezetlen"; +$LANG["word_install"] = "Telepít"; +$LANG["word_installation"] = "Telepítés"; +$LANG["word_internal"] = "Belső"; +$LANG["word_language"] = "Nyelv"; +$LANG["word_large"] = "Nagy"; +$LANG["word_like"] = "Akar"; +$LANG["word_login"] = "Bejelentkezés"; +$LANG["word_logo"] = "Logó"; +$LANG["word_logout"] = "Kijelentkezés"; +$LANG["word_main"] = "Fő"; +$LANG["word_medium"] = "Közepes"; +$LANG["word_menu"] = "Menü"; +$LANG["word_menus"] = "Menük"; +$LANG["word_minutes"] = "jegyzet"; +$LANG["word_misc"] = "Egyéb"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Modulok"; +$LANG["word_na"] = "N/A"; +$LANG["word_name"] = "Név"; +$LANG["word_name_c"] = "Név:"; +$LANG["word_never"] = "Soha"; +$LANG["word_next_rightarrow"] = "következő »"; +$LANG["word_next_step_rightarrow"] = "Következő lépés »"; +$LANG["word_no"] = "Nem"; +$LANG["word_none"] = "Egyik sem"; +$LANG["word_notes"] = "Jegyzetek"; +$LANG["word_notification"] = "Bejelentés"; +$LANG["word_number"] = "Szám"; +$LANG["word_off"] = "Ki"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Rendben"; +$LANG["word_on"] = "Be"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Kezelő"; +$LANG["word_options"] = "Opciók"; +$LANG["word_orange"] = "Narancs"; +$LANG["word_order"] = "Érdekében"; +$LANG["word_other"] = "Egyéb"; +$LANG["word_other_c"] = "Egyéb:"; +$LANG["word_page"] = "Oldal"; +$LANG["word_page_c"] = "Oldal:"; +$LANG["word_pass"] = "Igazolvány"; +$LANG["word_password"] = "Jelszó"; +$LANG["word_password_c"] = "Jelszó:"; +$LANG["word_pending"] = "Függőben"; +$LANG["word_permissions"] = "Engedélyek"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Előző"; +$LANG["word_private"] = "Magán"; +$LANG["word_public"] = "Nyilvános"; +$LANG["word_purple"] = "Bíbor"; +$LANG["word_recipient"] = "Címzett"; +$LANG["word_recipient_sp"] = "Címzett (ek)"; +$LANG["word_red"] = "Piros"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Eltávolít"; +$LANG["word_remove_uc_leftarrow"] = "«Eltávolít"; +$LANG["word_reply_to"] = "Válasz"; +$LANG["word_reply_to_c"] = "Válasz:"; +$LANG["word_required"] = "Kötelező"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Megoldott"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "sor"; +$LANG["word_search"] = "Keresés"; +$LANG["word_searchable"] = "Kereshető"; +$LANG["word_select"] = "Válasszuk"; +$LANG["word_setting"] = "Beállítás"; +$LANG["word_settings"] = "Beállítások"; +$LANG["word_show"] = "Mutat"; +$LANG["word_size"] = "Méret"; +$LANG["word_skipped"] = "Kihagyott"; +$LANG["word_small"] = "Kicsi"; +$LANG["word_solution"] = "Megoldás"; +$LANG["word_sortable"] = "Csoportosítható"; +$LANG["word_start"] = "Indul"; +$LANG["word_status"] = "Állapot"; +$LANG["word_string"] = "Karaktersor"; +$LANG["word_subject"] = "Tárgy"; +$LANG["word_subject_c"] = "Tárgy"; +$LANG["word_submenu"] = "Almenü"; +$LANG["word_submission"] = "Beadvány"; +$LANG["word_submissions"] = "Beadványok"; +$LANG["word_system"] = "Rendszer"; +$LANG["word_tab"] = "Lap"; +$LANG["word_tabs"] = "Lapok"; +$LANG["word_tabs_sp"] = "Tab (ek)"; +$LANG["word_test"] = "Teszt"; +$LANG["word_text"] = "Szöveg"; +$LANG["word_textarea"] = "Szövegmező"; +$LANG["word_textbox"] = "Szövegboboz"; +$LANG["word_theme"] = "Téma"; +$LANG["word_themes"] = "Témák"; +$LANG["word_time"] = "Idő"; +$LANG["word_tiny"] = "Apró"; +$LANG["word_tips"] = "Tippek"; +$LANG["word_today"] = "Ma"; +$LANG["word_truncate_q"] = "Csonkolni?"; +$LANG["word_uninstall"] = "Eltávolítás"; +$LANG["word_unknown"] = "Ismeretlen"; +$LANG["word_update"] = "Frissítés"; +$LANG["word_upgrade"] = "Frissítés"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Felhasználó"; +$LANG["word_username"] = "Felhasználónév"; +$LANG["word_username_c"] = "Felhasználónév:"; +$LANG["word_validation"] = "Érvényesítés"; +$LANG["word_value"] = "Érték"; +$LANG["word_value_sp"] = "Érték(ek)"; +$LANG["word_verified"] = "Ellenőrzött"; +$LANG["word_verify"] = "Ellenőrizze"; +$LANG["word_version"] = "Verzió"; +$LANG["word_vertical"] = "Függőleges"; +$LANG["word_view"] = "Megnéz"; +$LANG["word_views"] = "Megtekintés"; +$LANG["word_warning"] = "Figyelem!"; +$LANG["word_warning_c"] = "Figyelmeztetés:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Üdvözöljük!"; +$LANG["word_width_c"] = "szélesség:"; +$LANG["word_words"] = "Szavak"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Sárga"; +$LANG["word_yes"] = "Igen"; \ No newline at end of file diff --git a/global/lang/id.php b/global/lang/id.php new file mode 100644 index 00000000..13c04452 --- /dev/null +++ b/global/lang/id.php @@ -0,0 +1,1219 @@ +Peringatan! Anda telah memilih {\$num_selected_on_page} pengajuan pada halaman ini dan {\$num_selected_on_other_pages} pada halaman lainnya. Silakan pilih salah satu dari pilihan berikut:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Peringatan! Anda belum memilih submissions apapun pada halaman ini, tapi Anda telah memilih {\$num_selected_on_other_pages} pada halaman lainnya. Konfirmasikan bahwa Anda ingin menghapus kiriman ini.
    "; +$LANG["confirm_delete_view"] = "Apakah Anda yakin ingin menghapus ini View?"; +$LANG["confirm_refresh_page"] = "Apakah Anda yakin ingin refresh halaman? Ini akan kehilangan perubahan yang telah dibuat."; +$LANG["confirm_save_change_before_redirect"] = "Satu atau lebih field telah diperbarui. Apakah Anda ingin menyimpan perubahan Anda sebelum mengarahkan?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Apakah Anda yakin ingin ke Smart Isilah nama kolom database? Ini akan menghapus nilai-nilai yang ada."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Pilihan ini otomatis menghasilkan nama kolom database berdasarkan bidang Tampilan Teks, sehingga isi dari tabel database yang lebih mudah dibaca."; +$LANG["confirm_smart_fill_display_names"] = "Apakah Anda yakin ingin ke Smart Isi nama Tampilan? Ini akan menghapus nilai-nilai yang ada."; +$LANG["confirm_ungroup_option_list"] = "Apakah Anda yakin ingin ungroup daftar ini pilihan? Semua pilihan akan dikelompokkan ke dalam daftar, satu groupnya."; +$LANG["confirm_uninstall_module"] = "Apakah Anda yakin ingin menghapus modul ini? Semua modul data akan hilang."; +$LANG["date_AM"] = "PM"; +$LANG["date_Fri"] = "Jum"; +$LANG["date_Friday"] = "Jumat"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "Senin"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sat"; +$LANG["date_Saturday"] = "Sabtu"; +$LANG["date_Sun"] = "Matahari"; +$LANG["date_Sunday"] = "Minggu"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Kamis"; +$LANG["date_Tue"] = "Tue"; +$LANG["date_Tuesday"] = "Selasa"; +$LANG["date_Wed"] = "Wed"; +$LANG["date_Wednesday"] = "Rabu"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "Agustus"; +$LANG["date_month_December"] = "Desember"; +$LANG["date_month_February"] = "Februari"; +$LANG["date_month_January"] = "Januari"; +$LANG["date_month_July"] = "Juli"; +$LANG["date_month_June"] = "Juni"; +$LANG["date_month_March"] = "Maret"; +$LANG["date_month_May"] = "Boleh"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Oktober"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "April"; +$LANG["date_month_short_Aug"] = "Agustus"; +$LANG["date_month_short_Dec"] = "Desember"; +$LANG["date_month_short_Feb"] = "Februari"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Juli"; +$LANG["date_month_short_Jun"] = "Juni"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Boleh"; +$LANG["date_month_short_Nov"] = "November"; +$LANG["date_month_short_Oct"] = "Oktober"; +$LANG["date_month_short_Sep"] = "September"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Akun pengguna telah dihapus."; +$LANG["notify_account_updated"] = "Account Anda telah berhasil diperbarui."; +$LANG["notify_add_display_values"] = "Tambahkan Tampilan Nilai"; +$LANG["notify_admin_menu_updated"] = "Menu administrasi telah diperbarui."; +$LANG["notify_admin_theme_overridden"] = "Administrator theme telah diganti secara manual."; +$LANG["notify_allow_url_fopen_not_set"] = "Maaf, tes ini tidak dapat dijalankan di server web Anda. Hal ini membutuhkan allow_url_fopen harus di set ke 1 di file php.ini Anda. Pengaturan ini memungkinkan untuk mengakses file PHP melalui URL, yang diperlukan untuk melaksanakan tes ini. Anda dapat menguji secara manual dengan meng-upload file ke folder itu melalui FTP, kemudian mencoba untuk mengaksesnya di URL yang anda telah disediakan."; +$LANG["notify_change_temp_password"] = "Anda hanya login dengan password sementara. Anda harus me-reset password Anda sekarang!"; +$LANG["notify_click_to_edit_new_submission"] = "Klik di sini untuk mengedit pengajuan baru."; +$LANG["notify_client_account_menus_updated"] = "Account klien (s) telah diperbarui ke {\$menu_name} menu. Sekarang Anda dapat menghapus menu yang sebelumnya dikaitkan dengan account (s)."; +$LANG["notify_client_account_not_updated"] = "Account klien tidak dapat diperbarui."; +$LANG["notify_client_account_themes_updated"] = "Account klien (s) telah diperbarui ke {\$theme} tema. Sekarang Anda dapat menonaktifkan sebelumnya tema yang terkait dengan account (s)."; +$LANG["notify_client_account_updated"] = "Account klien telah berhasil diperbarui."; +$LANG["notify_client_menu_deleted"] = "Menu klien telah dihapus."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Menu telah dihapus, tapi account klien berikut sekarang tidak lagi memiliki menu! Anda perlu memperbarui rekening berikut:"; +$LANG["notify_client_menu_updated"] = "Menu klien telah diperbarui."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Maaf, menu Anda hanya mencoba untuk menghapus yang sudah digunakan oleh klien di bawah ini. Untuk menghapus menu pertama anda perlu untuk menetapkan klien ke menu yang lain. Klik pada nama klien untuk mengedit rekening perorangan, atau menetapkan semua account untuk menu yang berbeda dengan menggunakan menu dropdown di bawah ini."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Maaf, salah satu tema yang baru saja anda sudah dinonaktifkan digunakan oleh account klien berikut. Dalam rangka untuk menonaktifkan tema pertama anda perlu untuk menetapkan setiap klien untuk tema lain. Klik pada nama klien untuk mengedit rekening perorangan, atau menetapkan semua account ke salah satu tema menggunakan menu dropdown di bawah ini."; +$LANG["notify_edit_email_fields_link"] = "Klik di sini untuk menentukan kolom formulir adalah bidang email, sehingga Anda dapat menargetkan mereka dalam template email Anda."; +$LANG["notify_edit_field_new_field"] = "Ini adalah bidang baru. Anda harus memperbarui halaman utama sebelum dapat sepenuhnya mengedit bidang ini."; +$LANG["notify_edit_option_list_after_save"] = "Anda harus memilih Daftar Option dan kemudian Simpan Perubahan sebelum dapat mengeditnya."; +$LANG["notify_email_field_config_deleted"] = "Konfigurasi email yang telah dihapus."; +$LANG["notify_email_fields_not_updated"] = "Maaf, kami tidak dapat memperbarui bidang email."; +$LANG["notify_email_fields_updated"] = "Bidang email yang telah diperbarui."; +$LANG["notify_email_not_sent"] = "Maaf, email tidak dapat dikirim. Silahkan hubungi administrator di alamat di bawah ini."; +$LANG["notify_email_not_sent_c"] = "Maaf, email tidak dapat dikirim:"; +$LANG["notify_email_sent"] = "Email (s) telah dikirim."; +$LANG["notify_email_template_deleted"] = "Template email yang telah dihapus."; +$LANG["notify_email_template_updated"] = "Template email yang telah diperbarui."; +$LANG["notify_enabled_module_list_updated"] = "Daftar diaktifkan modul telah diperbarui."; +$LANG["notify_error_saving_fields"] = "Ada galat saat menyimpan ladang."; +$LANG["notify_field_changes_saved"] = "Perubahan ke bidang Anda (s) telah disimpan."; +$LANG["notify_field_options_smart_filled"] = "Pilihan bidang Anda telah Cerdas Dipenuhi."; +$LANG["notify_field_selected"] = "Lapangan telah dipilih. Klik di sini untuk kembali ke daftar bidang utama."; +$LANG["notify_field_updated"] = "Bidang ini telah diperbarui."; +$LANG["notify_file_not_uploaded"] = "File tidak bisa upload."; +$LANG["notify_file_uploaded"] = "File tersebut berhasil diupload."; +$LANG["notify_filters_not_updated"] = "Ada kesalahan saat memperbarui ketaatan klien ini filter."; +$LANG["notify_filters_updated"] = "Filter penyerahan telah diperbarui untuk klien ini."; +$LANG["notify_folder_correct_permissions"] = "Folder ini memiliki perizinan yang benar."; +$LANG["notify_folder_url_match"] = "Folder dan URL tampaknya benar cocok."; +$LANG["notify_folder_url_no_access"] = "Tes ini tidak dapat dilakukan karena PHP tidak dapat mengakses URL tersebut. Hal ini biasanya disebabkan oleh URL yang dilindungi dengan password. Htaccess file."; +$LANG["notify_folder_url_no_match"] = "Folder-URL ini kombinasi tidak muncul untuk menjadi sebuah pertandingan."; +$LANG["notify_folder_url_unknown_error"] = "Terjadi kesalahan yang tidak diketahui. Anda dapat menguji secara manual dengan meng-upload file ke folder itu melalui FTP, kemudian mencoba untuk mengaksesnya di URL yang anda telah disediakan."; +$LANG["notify_form_access_type_email_info"] = "Formulir ini memiliki tipe akses administrator, sehingga tidak ada klien memiliki akses untuk itu dan tidak tercantum dalam dropdown di bawah ini."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Maaf, bentuk dengan ID tersebut tidak ada."; +$LANG["notify_form_field_not_added"] = "Bidang bentuk '{\$fieldname}' tidak bisa ditambahkan."; +$LANG["notify_form_field_options_updated"] = "Bentuk pilihan lapangan telah diperbarui."; +$LANG["notify_form_field_removed"] = "Bidang Bentuk berhasil dihapus."; +$LANG["notify_form_fields_removed"] = "Kolom isian telah berhasil dihapus."; +$LANG["notify_form_not_updated_notify_admin"] = "Formulir Anda tidak dapat diperbarui. Silakan hubungi administrator situs untuk melaporkan masalah ini."; +$LANG["notify_form_settings_updated"] = "Pengaturan formulir Anda telah berhasil diupdate."; +$LANG["notify_form_submission_updated"] = "Pengiriman data pada form telah diperbarui."; +$LANG["notify_form_tabs_updated"] = "Tab telah diperbarui."; +$LANG["notify_form_updated"] = "Bentuk telah berhasil diperbarui."; +$LANG["notify_form_views_updated"] = "Views bentuk telah diperbarui."; +$LANG["notify_install_invalid_db_info"] = "Maaf, kami tidak dapat melakukan koneksi ke database dengan menggunakan informasi yang disediakan. Pesan kesalahan database kembali adalah: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Formulir Anda telah diciptakan! Anda dapat mengkonfigurasi formulir Anda melalui tab."; +$LANG["notify_invalid_account_information_in_sessions"] = "Informasi account yang disimpan dalam sesi tidak valid. Silakan log in lagi di bawah ini."; +$LANG["notify_invalid_license_key"] = "Maaf, yang tidak muncul menjadi kunci lisensi yang valid. Silakan coba masukkan lagi."; +$LANG["notify_invalid_permissions"] = "Anda tidak memiliki izin untuk mengakses halaman ini. Anda telah log out."; +$LANG["notify_invalid_search_dates"] = "Harap menggunakan datepicker untuk memasukkan tanggal yang valid atau tanggal."; +$LANG["notify_invalid_upload_folder"] = "Folder upload entah valid atau tidak dapat ditulis."; +$LANG["notify_lang_list_updated"] = "UI yang tersedia dalam daftar bahasa yang telah diperbarui."; +$LANG["notify_login_info_emailed"] = "Informasi login Anda telah diemail ke Anda."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Ups, modul ini sudah terinstall!"; +$LANG["notify_module_installed"] = "Modul tersebut telah terinstal. Klik di sini untuk memilih modul."; +$LANG["notify_module_list_updated"] = "Daftar modul telah diperbarui."; +$LANG["notify_module_uninstalled"] = "Modul telah dihapus."; +$LANG["notify_module_updated"] = "Modul {\$module} telah diperbarui untuk {\$version}. Klik di sini untuk memilih modul ."; +$LANG["notify_multi_field_selected"] = "Lapangan telah dipilih. Klik di sini untuk melihat dan mengedit pilihan lapangan."; +$LANG["notify_multi_field_updated"] = "Bidang ini telah diperbarui. Anda akan dapat mengkonfigurasi opsi lapangan setelah membuat formulir."; +$LANG["notify_multiple_fields_found"] = "Beberapa unsur yang ditemukan dengan nama field ({\$field_name}). Hal ini dapat terjadi jika halaman Anda berisi lebih dari satu bentuk atau jika Anda secara tidak sengaja nama salah satu bentuk sama lain. Silakan memilih salah satu yang Anda inginkan dari daftar di bawah ini."; +$LANG["notify_new_default_view_created"] = "A, baru standar Lihat berisi semua kolom formulir Anda telah dibuat."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "Tidak ada account user ID yang ditemukan dalam sesi. Silakan log in lagi di bawah ini."; +$LANG["notify_no_api_installed"] = "Anda tidak memiliki API diinstal"; +$LANG["notify_no_client_permissions"] = "Tidak ada pengaturan yang tersedia untuk mengedit."; +$LANG["notify_no_email_template_selected"] = "Silakan pilih template email."; +$LANG["notify_no_emails_defined"] = "Tidak ada email yang telah ditetapkan untuk formulir ini. Untuk menambahkan yang baru, klik tombol di bawah ini."; +$LANG["notify_no_field_settings"] = "Jenis bidang ini tidak berisi pengaturan tambahan."; +$LANG["notify_no_fields_in_tab"] = "Tab ini tidak berisi bidang."; +$LANG["notify_no_option_lists"] = "Tidak ada pilihan daftar ditetapkan. Klik tombol di bawah ini untuk membuat yang baru."; +$LANG["notify_no_test_submission"] = "Formulir Peralatan belum menerima pengajuan uji belum berhasil."; +$LANG["notify_no_user_email_fields_configured"] = "Catatan: jika Anda ingin mengirim email ke alamat email yang dimasukkan dalam bentuk, pertama anda perlu mengkonfigurasi bentuk bidang email."; +$LANG["notify_no_views"] = "Formulir Anda tidak memiliki Views mengatur! Anda akan membutuhkan setidaknya satu Lihat untuk mengelola data formulir Anda."; +$LANG["notify_no_views_assigned_to_client_form"] = "Tampaknya account pengguna Anda belum ditugaskan Views bentuk apapun, sehingga Anda tidak akan dapat melihat data apapun. Silahkan hubungi administrator untuk bantuan lebih lanjut."; +$LANG["notify_no_views_defined"] = "Anda tidak memiliki Dilihat didefinisikan. Anda tidak akan dapat melihat kiriman ini form kecuali setidaknya satu Lihat dibuat. Klik tombol di bawah ini untuk membuat View default."; +$LANG["notify_option_list_deleted"] = "Daftar pilihan telah dihapus."; +$LANG["notify_option_list_updated"] = "Daftar pilihan telah diperbarui."; +$LANG["notify_public_form_omit_list_updated"] = "Daftar klien untuk menghilangkan formulir ini telah diperbarui."; +$LANG["notify_public_view_omit_list_updated"] = "Daftar menghilangkan klien ini Lihat telah diperbarui."; +$LANG["notify_required_admin_pages"] = "Halaman berikut diperlukan di menu administrator: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Maaf, tidak ada aktivitas selama beberapa waktu sehingga kami harus log Anda. Silakan log in lagi di bawah ini."; +$LANG["notify_setup_options_updated"] = "Pilihan setup telah diperbarui."; +$LANG["notify_smart_fill_field_not_found"] = "Kami tidak dapat menemukan lapangan dengan nama ini ({\$field_name}) dalam bentuk (s) ditentukan. Anda dapat secara manual mengatur jenis bidang di bawah ini, atau klik tombol Skip untuk mengedit bidang ini nanti."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "File (s) telah berhasil diupload. Coba Isi mengklik tombol Smart untuk mencoba lagi. Jika langkah ini gagal, Anda akan perlu untuk melewatkan langkah ini dan mengkonfigurasi kolom formulir manally kemudian."; +$LANG["notify_smart_fill_submitted"] = "Bentuk sudah diserahkan. Tergantung pada ukuran bentuk dan jumlah pilihan lapangan, hal ini mungkin memakan waktu."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Maaf, satu atau lebih file yang Anda masukkan tidak bisa upload. Anda akan perlu untuk melewatkan langkah ini dan mengkonfigurasi ladang secara manual."; +$LANG["notify_submission_and_files_deleted"] = "Penyerahan dan setiap file (s) yang terkait dengan itu berhasil dihapus."; +$LANG["notify_submission_copied"] = "Pengajuan telah disalin."; +$LANG["notify_submission_copied_edit"] = "Pengajuan telah disalin. Anda dapat mengeditnya di bawah ini."; +$LANG["notify_submission_deleted"] = "Penyerahan telah dihapus dengan sukses."; +$LANG["notify_submission_deleted_with_problems"] = "Penyerahan telah dihapus, tetapi masalah-masalah berikut ditemui saat mencoba untuk menghapus file berikut (s):"; +$LANG["notify_submission_id_not_found"] = "Penyerahan ID tidak ditemukan."; +$LANG["notify_submission_not_updated"] = "Penyerahan tidak dapat diperbarui."; +$LANG["notify_submissions_and_files_deleted"] = "The pengajuan dan setiap file (s) yang berhubungan dengan mereka berhasil dihapus."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} pengiriman telah disalin."; +$LANG["notify_submissions_deleted"] = "Para pengajuan itu berhasil dihapus."; +$LANG["notify_submissions_deleted_with_problems"] = "Para pengajuan itu dihapus, tetapi masalah-masalah berikut ditemui saat mencoba untuk menghapus file berikut (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Email pengujian Anda tidak dapat dikirim."; +$LANG["notify_theme_cache_folder_not_writable"] = "Tema ini cache folder tidak dapat ditulis. Untuk mengaktifkan tema ini, para {\$folder} folder penuh harus memiliki hak akses baca-tulis."; +$LANG["notify_theme_list_updated"] = "Daftar tema telah diperbarui."; +$LANG["notify_themes_settings_updated"] = "Setting theme Anda telah diperbarui."; +$LANG["notify_view_deleted"] = "Lihat telah dihapus."; +$LANG["notify_view_group_deleted"] = "Kelompok Lihat telah dihapus."; +$LANG["notify_view_missing_columns"] = "Ups! Maaf, Lihat ini belum sepenuhnya diatur belum."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klik di sini untuk menentukan bidang yang akan muncul sebagai kolom pada halaman ini."; +$LANG["notify_view_updated"] = "Lihat telah diperbarui."; +$LANG["notify_your_email_sent"] = "Email Anda telah berhasil dikirim."; +$LANG["phrase_100_per_page"] = "100 per halaman"; +$LANG["phrase_10_per_page"] = "10 per halaman"; +$LANG["phrase_15_per_page"] = "15 per halaman"; +$LANG["phrase_1_direct"] = "1. Langsung"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per halaman"; +$LANG["phrase_25_per_page"] = "25 per halaman"; +$LANG["phrase_2_code"] = "2. Kode"; +$LANG["phrase_2_columns"] = "2 Kolom"; +$LANG["phrase_2chars"] = "2 Karakter"; +$LANG["phrase_3_columns"] = "3 Kolom"; +$LANG["phrase_4_columns"] = "4 Kolom"; +$LANG["phrase_50_per_page"] = "50 per halaman"; +$LANG["phrase_accepting_submissions"] = "(menerima pengajuan)"; +$LANG["phrase_access_admin_account_c"] = "Anda dapat mengakses account administrasi Anda di sini:"; +$LANG["phrase_access_type"] = "Jenis Akses"; +$LANG["phrase_account_info"] = "Informasi Account"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Action Needed"; +$LANG["phrase_add_client"] = "Tambah Klien"; +$LANG["phrase_add_client_menu"] = "Tambahkan Klien Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Tambahkan pengaturan default »"; +$LANG["phrase_add_field"] = "Tambah Field"; +$LANG["phrase_add_fields"] = "Tambahkan Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Tambahkan Lapangan (s) »"; +$LANG["phrase_add_form"] = "tambah form"; +$LANG["phrase_add_form_external"] = "Tambahkan Formulir - Eksternal"; +$LANG["phrase_add_form_internal"] = "Tambahkan Formulir - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Tambahkan Grup Baru »"; +$LANG["phrase_add_num_rows"] = "Tambahkan {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Tambahkan Row »"; +$LANG["phrase_add_submission_button"] = "Tambahkan Tombol Submission"; +$LANG["phrase_add_view_rightarrow"] = "Tambahkan Lihat »"; +$LANG["phrase_adding_multi_page_form"] = "Menambahkan halaman multi-formulir dengan API"; +$LANG["phrase_adding_single_page_form"] = "Menambahkan satu halaman formulir dengan API"; +$LANG["phrase_admin_menu"] = "Administrator Menu"; +$LANG["phrase_admin_only"] = "Administrator Only"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Pengaturan lanjutan »"; +$LANG["phrase_all_X_results_selected"] = "All {\$numresults} Hasil Dipilih"; +$LANG["phrase_all_clients"] = "Semua klien"; +$LANG["phrase_all_clients_except_c"] = "Semua klien kecuali:"; +$LANG["phrase_all_clients_have_access"] = "(semua klien memiliki akses)"; +$LANG["phrase_all_fields"] = "Semua bidang"; +$LANG["phrase_all_fields_displayed"] = "Semua kolom ditampilkan"; +$LANG["phrase_all_statuses"] = "Semua Status"; +$LANG["phrase_all_submissions"] = "Semua permohonan"; +$LANG["phrase_allow_fields_edited"] = "Biarkan field yang akan diedit"; +$LANG["phrase_alphanumeric"] = "Alfanumerik (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Versi"; +$LANG["phrase_apply_timezone_offset"] = "Terapkan Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Tetapkan semua account klien yang terdaftar untuk {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Tetapkan semua account klien yang terdaftar untuk {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Akhir"; +$LANG["phrase_at_start"] = "Di Mulai"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-menonaktifkan account setelah # gagal mencoba login"; +$LANG["phrase_auto_size"] = "Otomatis ukuran"; +$LANG["phrase_available_clients"] = "Klien yang ada"; +$LANG["phrase_available_fields"] = "Tersedia Fields"; +$LANG["phrase_available_option_lists"] = "Tersedia Opsi Daftar"; +$LANG["phrase_available_swatches"] = "Tersedia potongan-potongan"; +$LANG["phrase_available_swatches_c"] = "Tersedia potongan-potongan:"; +$LANG["phrase_available_tabs"] = "Tersedia Tab"; +$LANG["phrase_available_views"] = "Tersedia Views"; +$LANG["phrase_awaiting_form_submission"] = "Form menunggu."; +$LANG["phrase_back_to_field_list"] = "«kembali ke daftar bidang"; +$LANG["phrase_back_to_search_results"] = "kembali ke hasil pencarian"; +$LANG["phrase_base_view_on"] = "Basis Lihat di ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Perubahan Informasi Login"; +$LANG["phrase_characters_limit_p"] = "karakter batas."; +$LANG["phrase_check_db_settings_try_again"] = "Silakan periksa pengaturan database Anda dan klik tombol Lanjutkan lagi."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Periksa URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Bersihkan"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Jelas menghilangkan List"; +$LANG["phrase_client_account_settings"] = "Pengaturan Account Klien"; +$LANG["phrase_client_field"] = "Klien Field"; +$LANG["phrase_client_map_filters"] = "Peta Klien Filter »"; +$LANG["phrase_client_may_edit"] = "Klien dapat mengedit"; +$LANG["phrase_client_menu"] = "Client Menu"; +$LANG["phrase_clients_can_access_form"] = "Klien yang dapat mengakses formulir"; +$LANG["phrase_clients_can_access_view"] = "Klien yang dapat mengakses View"; +$LANG["phrase_clients_cannot_access_form"] = "Klien yang tidak dapat mengakses formulir"; +$LANG["phrase_clients_cannot_access_view"] = "Klien yang tidak dapat mengakses View"; +$LANG["phrase_clients_may_edit"] = "Klien dapat mengedit"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Kode / Markup Lapangan"; +$LANG["phrase_code_markup_type"] = "Kode / Markup Jenis"; +$LANG["phrase_codes_c"] = "Error Codes:"; +$LANG["phrase_column_width"] = "Lebar Kolom"; +$LANG["phrase_company_name"] = "Nama Perusahaan"; +$LANG["phrase_configure_form_email_fields"] = "Konfigurasi Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Konfirmasi Folder-URL Match"; +$LANG["phrase_connect_rows"] = "Hubungkan baris"; +$LANG["phrase_copy_email_settings_from"] = "Salin Email Pengaturan Dari ..."; +$LANG["phrase_copy_settings_from"] = "Salin Pengaturan Dari ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Versi"; +$LANG["phrase_create_account"] = "Buat Account"; +$LANG["phrase_create_admin_account"] = "Buat Account Admin"; +$LANG["phrase_create_config_file"] = "Buat File Config"; +$LANG["phrase_create_database_tables"] = "Membuat Tabel Database"; +$LANG["phrase_create_default_view"] = "Membuat Tampilan Default"; +$LANG["phrase_create_file"] = "Membuat File"; +$LANG["phrase_create_group"] = "Buat Grup"; +$LANG["phrase_create_new_email"] = "Buat Email Baru"; +$LANG["phrase_create_new_menu"] = "Buat Menu"; +$LANG["phrase_create_new_option_list"] = "Buat Daftar Baru Opsi"; +$LANG["phrase_create_new_option_list_group"] = "Buat grup pilihan daftar baru"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Buat Daftar Opsi Baru »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Buat Grup Baru Lihat"; +$LANG["phrase_custom_display_format"] = "Format Tampilan kustom"; +$LANG["phrase_custom_recipient"] = "Custom Penerima"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Biru tua"; +$LANG["phrase_data_type"] = "Jenis Data"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Nama database"; +$LANG["phrase_database_password"] = "Database password"; +$LANG["phrase_database_settings"] = "Pengaturan database"; +$LANG["phrase_database_setup"] = "Setup Database"; +$LANG["phrase_database_table_prefix"] = "Prefix tabel database"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Format Tanggal"; +$LANG["phrase_db_column"] = "DB Kolom"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Account Klien default Theme"; +$LANG["phrase_default_date_field_search_value"] = "Standar nilai kolom pencarian tanggal"; +$LANG["phrase_default_language"] = "Default Bahasa"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Default Sort Order"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Nilai default"; +$LANG["phrase_default_values"] = "Nilai default"; +$LANG["phrase_default_values_new_submissions"] = "Nilai standar untuk Pengajuan Baru"; +$LANG["phrase_delete_field"] = "Hapus Lapangan"; +$LANG["phrase_delete_form"] = "HAPUS FORM"; +$LANG["phrase_delete_row"] = "Hapus Row"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Menghapus file yang terkait saat menghapus penyerahan"; +$LANG["phrase_delete_view"] = "Hapus View"; +$LANG["phrase_disconnect_rows"] = "Putus baris"; +$LANG["phrase_display_email"] = "Tampilkan Email"; +$LANG["phrase_display_name"] = "Nama Display"; +$LANG["phrase_display_text"] = "Teks Display"; +$LANG["phrase_display_value"] = "Tampilan Nilai"; +$LANG["phrase_edit_admin_menu"] = "Edit Admin Menu"; +$LANG["phrase_edit_client"] = "Edit Klien"; +$LANG["phrase_edit_client_menu"] = "Klien Edit Menu"; +$LANG["phrase_edit_email_template"] = "Edit Template Email"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Mengedit Lapangan:"; +$LANG["phrase_edit_form"] = "Edit Formulir"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit jenis bentuk akses]"; +$LANG["phrase_edit_option_list"] = "Edit Daftar Pilihan"; +$LANG["phrase_edit_submission"] = "Ubah Masukan"; +$LANG["phrase_edit_submission_label"] = "Mengedit Label Submission"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "Email Pengaturan"; +$LANG["phrase_email_template"] = "Email template"; +$LANG["phrase_email_template_name"] = "Email nama template"; +$LANG["phrase_error_learn_more"] = "Pelajari lebih lanjut tentang kesalahan ini."; +$LANG["phrase_error_text_intro"] = "Please fix error berikut (s) dan kirimkan kembali:"; +$LANG["phrase_errors_learn_more"] = "Klik pada kode kesalahan untuk belajar lebih banyak."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Eksternal Formulir"; +$LANG["phrase_external_form_info"] = "Formulir Eksternal Info"; +$LANG["phrase_external_your_own_form"] = "Eksternal (bentuk sendiri)"; +$LANG["phrase_field_comments"] = "Lapangan Komentar"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Bidang Pilihan"; +$LANG["phrase_field_size"] = "Panjang Kolom"; +$LANG["phrase_field_skipped"] = "Lapangan Dilewati"; +$LANG["phrase_field_specific_settings"] = "Bidang Khusus Pengaturan"; +$LANG["phrase_field_type"] = "Jenis Field"; +$LANG["phrase_field_type_no_validation"] = "Tidak ada aturan validasi yang tersedia untuk jenis lapangan."; +$LANG["phrase_field_types"] = "Jenis Field"; +$LANG["phrase_field_value"] = "Nilai Field"; +$LANG["phrase_field_values_to_display_values"] = "Field Nilai »Tampilan Nilai"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Sentuhan"; +$LANG["phrase_finalize_form"] = "Akhir Formulir"; +$LANG["phrase_first_name"] = "Nama Depan"; +$LANG["phrase_footer_text"] = "Teks Footer"; +$LANG["phrase_for_any_form_submission"] = "Untuk setiap pengiriman formulir"; +$LANG["phrase_for_view_submissions"] = "Hanya untuk pengajuan di Lihat:"; +$LANG["phrase_forgot_password"] = "LUPA PASSWORD?"; +$LANG["phrase_form_already_selected"] = "Formulir yang sudah dipilih"; +$LANG["phrase_form_email_field_b_c"] = "[Email] lapangan Formulir:"; +$LANG["phrase_form_email_field_configuration"] = "Formulir Email Lapangan Konfigurasi"; +$LANG["phrase_form_email_fields"] = "Email Form Fields"; +$LANG["phrase_form_field"] = "Kolom Formulir"; +$LANG["phrase_form_field_contents"] = "Isi Formulir Lapangan"; +$LANG["phrase_form_field_name"] = "Nama Kolom Formulir"; +$LANG["phrase_form_field_placeholders"] = "Formulir bidang placeholder"; +$LANG["phrase_form_fields"] = "Formulir Isian"; +$LANG["phrase_form_info"] = "Form Information"; +$LANG["phrase_form_info_2"] = "2. Form Information"; +$LANG["phrase_form_list"] = "Formulir Daftar"; +$LANG["phrase_form_name"] = "Nama Form"; +$LANG["phrase_form_page"] = "Formulir Page"; +$LANG["phrase_form_placeholders"] = "Formulir placeholder"; +$LANG["phrase_form_submission"] = "FORM MASUKAN"; +$LANG["phrase_form_submissions"] = "Form Submissions"; +$LANG["phrase_form_type"] = "Jenis Formulir"; +$LANG["phrase_form_url"] = "Form URL"; +$LANG["phrase_form_urls"] = "Formulir URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formulir ditugaskan ke account apapun"; +$LANG["phrase_forms_page_default_message"] = "Bentuk halaman default pesan"; +$LANG["phrase_ft_installation"] = "Formulir Peralatan Instalasi Script"; +$LANG["phrase_full_width"] = "Kendali Lebar"; +$LANG["phrase_getting_started"] = "memulai"; +$LANG["phrase_global_placeholders"] = "Global placeholder"; +$LANG["phrase_group_name"] = "Nama Grup"; +$LANG["phrase_group_options_q"] = "Pilihan grup?"; +$LANG["phrase_group_rows"] = "Kelompok baris"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Sorot Warna"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Opsi Impor Daftar »"; +$LANG["phrase_input_length"] = "Masukan Panjang"; +$LANG["phrase_installation_help"] = "Bantuan Instalasi"; +$LANG["phrase_internal_form"] = "Formulir internal"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Apakah ini bentuk multi-halaman?"; +$LANG["phrase_label_response_placeholders"] = "Label / Respon Placeholder"; +$LANG["phrase_large_300px"] = "Besar (300px)"; +$LANG["phrase_large_400px"] = "Besar (400px)"; +$LANG["phrase_last_7_days"] = "7 hari terakhir"; +$LANG["phrase_last_logged_in"] = "Last Logged In"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Last modified date"; +$LANG["phrase_last_name"] = "Nama Belakang"; +$LANG["phrase_letters_only"] = "Hanya surat-surat"; +$LANG["phrase_light_brown"] = "Cahaya Brown"; +$LANG["phrase_limit_email_content"] = "Batasi isi email untuk bidang di Lihat"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "LOG IN"; +$LANG["phrase_login_as_user"] = "Login sebagai pengguna ini"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "panel login:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Pengguna"; +$LANG["phrase_logo_link_url"] = "URL Link Logo"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Pengaturan Utama"; +$LANG["phrase_manage_client"] = "Kelola Klien"; +$LANG["phrase_manage_client_omit_list"] = "Kelola Klien Daftar Abaikan"; +$LANG["phrase_max_file_size"] = "Ukuran File max"; +$LANG["phrase_max_length"] = "Panjang max"; +$LANG["phrase_max_length_words_chars"] = "- Max length (kata / karakter)"; +$LANG["phrase_may_add_submissions"] = "Dapat menambahkan Submissions"; +$LANG["phrase_may_copy_submissions"] = "Dapat menyalin kiriman"; +$LANG["phrase_may_delete_submissions"] = "Dapat menghapus Submissions"; +$LANG["phrase_medium_150px"] = "Menengah (150px)"; +$LANG["phrase_medium_200px"] = "Menengah (200px)"; +$LANG["phrase_menu_name"] = "Menu Nama"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "Minimal panjang password"; +$LANG["phrase_module_description"] = "Modul Deskripsi"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Bulan-to-date"; +$LANG["phrase_multi_select"] = "Multi-pilih"; +$LANG["phrase_multi_select_dropdown"] = "Multi-pilih dropdown"; +$LANG["phrase_multiple_fields_found"] = "Multiple Fields Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nama Nama / Terakhir"; +$LANG["phrase_new_blank_email"] = "New Blank Email"; +$LANG["phrase_new_blank_option_list"] = "Opsi Baru Daftar Kosong"; +$LANG["phrase_new_blank_view"] = "New Blank View"; +$LANG["phrase_new_ft_installation"] = "Formulir baru Peralatan Instalasi"; +$LANG["phrase_new_option_list"] = "Opsi Baru Daftar"; +$LANG["phrase_new_password"] = "Password Baru"; +$LANG["phrase_new_password_reenter"] = "New Password (masukkan kembali)"; +$LANG["phrase_new_view"] = "Baru Lihat"; +$LANG["phrase_new_view_all_fields"] = "Baru Lihat - Semua bidang"; +$LANG["phrase_next_client"] = "klien berikutnya »"; +$LANG["phrase_next_field"] = "lapangan selanjutnya »"; +$LANG["phrase_next_form"] = "bentuk berikutnya »"; +$LANG["phrase_next_view"] = "next Lihat »"; +$LANG["phrase_no_clients"] = "Tidak klien"; +$LANG["phrase_no_limit"] = "Batas Tidak ada"; +$LANG["phrase_no_offset"] = "Tidak offset"; +$LANG["phrase_no_option_lists_available"] = "Tidak ada pilihan daftar yang tersedia."; +$LANG["phrase_no_views"] = "Tidak Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Tidak ada Dilihat dengan filter ditentukan)"; +$LANG["phrase_none_not_recommended"] = "Tidak ada (tidak disarankan)"; +$LANG["phrase_not_assigned_to_option_list"] = "Bidang ini tidak ditugaskan ke Daftar Option."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Tidak SAMA Dengan"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "TIDAK seperti"; +$LANG["phrase_not_visible_to_client"] = "(tidak terlihat oleh klien)"; +$LANG["phrase_num_clients_per_page"] = "Jumlah Klien Per Halaman"; +$LANG["phrase_num_emails_per_page"] = "Email Num Per Halaman"; +$LANG["phrase_num_fields"] = "Jumlah Fields"; +$LANG["phrase_num_forms_per_page"] = "Jumlah Formulir Per Halaman"; +$LANG["phrase_num_menus_per_page"] = "Menu Num Per Halaman"; +$LANG["phrase_num_modules_per_page"] = "Modul Num Per Halaman"; +$LANG["phrase_num_option_lists_per_page"] = "Opsi num Daftar Per Halaman"; +$LANG["phrase_num_options"] = "Num Pilihan"; +$LANG["phrase_num_rows"] = "Num Baris"; +$LANG["phrase_numbers_only"] = "Hanya nomor"; +$LANG["phrase_often_localhost"] = "(sering "localhost")"; +$LANG["phrase_on_form_submission"] = "Pada form"; +$LANG["phrase_one_char_number"] = "Setidaknya satu karakter adalah angka (0-9)"; +$LANG["phrase_one_char_upper"] = "Setidaknya satu karakter adalah huruf besar"; +$LANG["phrase_one_special_char"] = "Setidaknya salah satu dari {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(hanya klien tertentu memiliki akses)"; +$LANG["phrase_open_form_in_dialog"] = "Buka form dalam jendela dialog"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Buka form ini di jendela tab / baru"; +$LANG["phrase_option_list"] = "Opsi Daftar"; +$LANG["phrase_option_list_name"] = "Opsi Daftar Nama"; +$LANG["phrase_option_list_or_contents"] = "Opsi Daftar / Isi"; +$LANG["phrase_option_lists"] = "Opsi Daftar"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Judul Halaman"; +$LANG["phrase_pass_on"] = "Pass on"; +$LANG["phrase_password_min"] = "Ini harus setidaknya {\$length} karakter."; +$LANG["phrase_password_one_number"] = "Ini harus berisi setidaknya satu angka (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Ini harus berisi setidaknya satu huruf besar."; +$LANG["phrase_password_requirements_c"] = "Password persyaratan:"; +$LANG["phrase_password_reset"] = "Reset Password"; +$LANG["phrase_password_special_char"] = "Ini harus berisi setidaknya satu dari karakter berikut: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Perizinan / Pengaturan lain"; +$LANG["phrase_permitted_file_types"] = "Jenis file yang diizinkan"; +$LANG["phrase_phone_number"] = "Telepon Nomor"; +$LANG["phrase_phone_number_format"] = "Format Nomor Telepon"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max upload file diperbolehkan ukuran:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Versi PHP"; +$LANG["phrase_please_confirm"] = "Harap Konfirmasi"; +$LANG["phrase_please_enter_license_key"] = "Masukkan kunci lisensi Anda"; +$LANG["phrase_please_select"] = "Silakan Pilih"; +$LANG["phrase_please_select_form"] = "Silakan pilih bentuk"; +$LANG["phrase_prev_client"] = "«Prev klien"; +$LANG["phrase_prev_form"] = "«Prev bentuk"; +$LANG["phrase_prevent_password_reuse"] = "Mencegah penggunaan ulang password terakhir #"; +$LANG["phrase_previous_field"] = "«sebelumnya lapangan"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "«Prev View"; +$LANG["phrase_program_name"] = "Nama Program"; +$LANG["phrase_public_form_omit_list"] = "Formulir publik menghilangkan List"; +$LANG["phrase_public_view_omit_list"] = "Publik Lihat menghilangkan List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Ada masalah dengan query berikut:"; +$LANG["phrase_radio_buttons"] = "Tombol radio"; +$LANG["phrase_random_form_submission"] = "Random form"; +$LANG["phrase_re_enter_password"] = "Ulangi Password"; +$LANG["phrase_recipient_type"] = "Jenis penerima"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Refresh Daftar"; +$LANG["phrase_refresh_module_list"] = "Refresh Modul List"; +$LANG["phrase_refresh_page"] = "REFRESH HALAMAN"; +$LANG["phrase_refresh_theme_list"] = "Refresh Theme List"; +$LANG["phrase_register_new_email"] = "Daftar Email Baru"; +$LANG["phrase_remaining_characters"] = "karakter tersisa"; +$LANG["phrase_remaining_words"] = "sisa kata"; +$LANG["phrase_remove_tabs"] = "Hapus Tab"; +$LANG["phrase_required_password_chars"] = "Diperlukan sandi karakter"; +$LANG["phrase_resend_test_submission"] = "KIRIM ULANG TEST MASUKAN "; +$LANG["phrase_return_form_list"] = "KEMBALI KE DAFTAR FORM"; +$LANG["phrase_row_selected"] = "{\$num_rows} baris terpilih"; +$LANG["phrase_rows_selected"] = "{\$num_rows} baris terpilih"; +$LANG["phrase_sample_data"] = "Contoh Data"; +$LANG["phrase_save_changes"] = "Simpan Perubahan"; +$LANG["phrase_search_keyword"] = "Pencarian kata kunci"; +$LANG["phrase_security_settings"] = "Pengaturan Keamanan"; +$LANG["phrase_select_all"] = "Pilih Semua"; +$LANG["phrase_select_all_X_results"] = "Pilih Semua {\$numresults} Hasil"; +$LANG["phrase_select_all_on_page"] = "Pilih Semua Aktif Page"; +$LANG["phrase_select_date"] = "Pilih tanggal"; +$LANG["phrase_select_field"] = "Pilih Lapangan"; +$LANG["phrase_select_swatch"] = "Pilih carikan"; +$LANG["phrase_selected_clients"] = "Klien Terpilih"; +$LANG["phrase_selected_views"] = "Dipilih Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Send Uji Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Setting Nilai"; +$LANG["phrase_setup_options"] = "Pilihan Setup"; +$LANG["phrase_show_all"] = "Tampilkan Semua"; +$LANG["phrase_show_form"] = "Tampilkan Formulir"; +$LANG["phrase_size_large"] = "Besar (TEKS)"; +$LANG["phrase_size_medium"] = "Sedang (<= 256 chars)"; +$LANG["phrase_size_small"] = "Kecil (<= 20 chars)"; +$LANG["phrase_size_tiny"] = "Kecil (<= 5 chars)"; +$LANG["phrase_size_very_large"] = "Sangat Besar (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Skip Langkah"; +$LANG["phrase_small_100px"] = "Kecil (100px)"; +$LANG["phrase_small_80px"] = "Kecil (80px)"; +$LANG["phrase_smart_fill"] = "ISIAN PINTAR"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Isi kolom dari:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Isi User Dokumentasi »"; +$LANG["phrase_sort_as"] = "Urutkan Sebagai"; +$LANG["phrase_special_fields"] = "Khusus Bidang"; +$LANG["phrase_standard_fields"] = "Standar Fields"; +$LANG["phrase_standard_filters"] = "Standar Filter »"; +$LANG["phrase_step_1"] = "Langkah 1"; +$LANG["phrase_step_2"] = "Langkah 2"; +$LANG["phrase_step_3"] = "Langkah 3"; +$LANG["phrase_step_4"] = "Langkah 4"; +$LANG["phrase_step_5"] = "Langkah 5"; +$LANG["phrase_step_6"] = "Langkah 6"; +$LANG["phrase_strip_tags_in_submissions"] = "String tag pada form masukan"; +$LANG["phrase_subject_line"] = "Perihal Line"; +$LANG["phrase_submission_date"] = "Tanggal penyerahan"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Submission dibuat: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Jenis Submission"; +$LANG["phrase_submissions_per_page"] = "Submissions per Halaman"; +$LANG["phrase_system_check"] = "Periksa sistem"; +$LANG["phrase_system_fields_no_validation"] = "Anda tidak dapat menambahkan validasi untuk bidang sistem."; +$LANG["phrase_system_time_offset"] = "Sistem Sisa Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Folder Permissions"; +$LANG["phrase_test_submission"] = "Tes Pengisian"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Received"; +$LANG["phrase_text_and_html"] = "Teks & HTML"; +$LANG["phrase_text_email"] = "Teks Email"; +$LANG["phrase_text_template"] = "Teks Template"; +$LANG["phrase_the_previous_month"] = "Bulan sebelumnya"; +$LANG["phrase_theme_description"] = "Tema Deskripsi"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Kecil (30px)"; +$LANG["phrase_tiny_50px"] = "Kecil (50px)"; +$LANG["phrase_total_results_c"] = "Total Hasil:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Hapuskan tanda Semua"; +$LANG["phrase_update_accounts"] = "Update Account"; +$LANG["phrase_update_email_template"] = "Update Template Email"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Perbarui Orde"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Upload File"; +$LANG["phrase_upload_files"] = "Upload File"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Jalur folder upload"; +$LANG["phrase_upload_folder_url"] = "Folder upload URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Gunakan Default Value?"; +$LANG["phrase_used_by_num_form_fields"] = "Digunakan oleh # Formulir Isian"; +$LANG["phrase_uses_swatches"] = "Menggunakan potongan-potongan"; +$LANG["phrase_valid_email"] = "Hari Email"; +$LANG["phrase_validation_error"] = "Kesalahan Validasi"; +$LANG["phrase_validation_rule"] = "Aturan Validasi"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Lihat Grup"; +$LANG["phrase_view_id"] = "Lihat ID"; +$LANG["phrase_view_name"] = "View Nama"; +$LANG["phrase_view_placeholders"] = "Lihat Placeholder"; +$LANG["phrase_view_submissions"] = "View Submissions"; +$LANG["phrase_view_uploaded_files"] = "lihat file yang telah diupload"; +$LANG["phrase_viewing_range"] = "[melihat {\$startnum} ke {\$endnum}]"; +$LANG["phrase_when_sent"] = "Ketika terkirim"; +$LANG["phrase_when_submission_is_deleted"] = "Ketika ketundukan dihapus"; +$LANG["phrase_when_submission_is_edited"] = "Ketika ketundukan edited"; +$LANG["phrase_who_can_access"] = "Siapa yang bisa akses?"; +$LANG["phrase_word_limit_p"] = "kata batas."; +$LANG["phrase_year_to_date"] = "Tahun ke tanggal"; +$LANG["phrase_yes_for_all_views"] = "Ya, untuk semua Views"; +$LANG["phrase_yes_for_specific_views"] = "Ya, untuk spesifik Views"; +$LANG["phrase_your_account"] = "Account"; +$LANG["phrase_your_email"] = "Email anda"; +$LANG["phrase_your_email_address"] = "Alamat email"; +$LANG["processing_form_disabled"] = "Maaf, formulir ini telah dinonaktifkan."; +$LANG["processing_form_incomplete"] = "Maaf, formulir ini tampaknya tidak sepenuhnya ditetapkan dari dalam Formulir Tools. Yang paling mungkin penyebab masalah ini adalah bahwa Anda menghapus "form_tools_initialize_form" lapangan formulir tersembunyi, tetapi tidak menyelesaikan semua langkah dari "Tambah Formulir" proses.

    Silakan login dan meninjau bentuk konfigurasi."; +$LANG["processing_init_complete"] = "Terima kasih! Pengajuan pengujian Anda telah diajukan melalui sukses. Silahkan kembali ke Tools Administrasi Formulir panel dan klik tombol "Refresh" tombol di bagian bawah Formulir Langkah 3 Tambahkan halaman untuk menyelesaikan setting formulir Anda."; +$LANG["processing_invalid_form_id"] = "Maaf, ini tidak muncul menjadi bentuk ID yang valid."; +$LANG["processing_no_form_id"] = "memerlukan bentuk process.php ID untuk diproses. Pastikan formulir Anda berisi bidang yang tersembunyi dengan nama "form_tools_form_id" itu lewat di sepanjang bentuk ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Formulir Tools ini tidak dapat menentukan di mana untuk mengarahkan ketika mereka gagal untuk memasuki CAPTCHA dengan benar. Tolong sampaikan di lapangan tersembunyi dengan nama form_tools_form_url berisi URL dari bentuk."; +$LANG["processing_no_post_vars"] = "process.php tidak menerima data apapun. Catatan: script ini tidak dapat diambil secara langsung di browser Anda.
    Pastikan formulir Anda mengirimkan melalui POST."; +$LANG["processing_no_redirect_url"] = "Pengajuan itu diproses dengan benar, tetapi Anda tidak menentukan sebuah URL redirect formulir ini! Edit formulir di Formulir Peralatan UI dan tambahkan URL redirect."; +$LANG["special_language"] = "Indonesian"; +$LANG["special_language_locale"] = "Indonesian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Semua account klien baru akan dibuat dengan pengaturan dan izin yang didefinisikan di bawah ini. Untuk mengganti setting untuk klien tertentu, edit account klien dan kunjungi tab Pengaturan mereka."; +$LANG["text_add_form_choose_integration_method"] = "Pilih metode mana yang ingin Anda gunakan untuk mengintegrasikan formulir Anda dengan Tools Formulir."; +$LANG["text_add_form_code_submission_benefits"] = "Metode ini menggunakan Formulir Alat API , termasuk dalam script Alat Formulir utama. API menyediakan sejumlah fungsi membantu untuk membuat pekerjaan mengintegrasikan formulir Anda dengan Tools Formulir sesederhana mungkin. Tidak ada batasan untuk bagaimana bentuk Anda dapat diajukan bila Anda menggunakan API. Anda dapat mengirimkan konten dalam satu pergi, atau halaman demi halaman, Anda dapat menambahkan kustom Anda sendiri validasi sisi-server, gambar CAPTCHA, Anda dapat memilih untuk mengirimkan informasi sekarang, tetapi hanya memberitahu untuk menampilkan pengajuan dalam Formulir Alat UI di kemudian hari (lihat Submissions selesai bagian dalam dokumentasi membantu API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Dalam rangka untuk mengirimkan formulir data Anda melalui PHP, formulir Anda harus berada di situs yang sama seperti ini instalasi Formulir Tools. Kedua, untuk pengguna Formulir Peralatan non-teknis dan pemula, metode ini dapat sedikit menakutkan pada awalnya. Tapi ada banyak dokumentasi untuk membantu Anda keluar, termasuk dua tutorial sederhana untuk mengintegrasikan formulir Anda tunggal dan multi-halaman (ini link ke langkah berikutnya)."; +$LANG["text_add_form_direct_submission_benefits"] = "Ini adalah cara paling sederhana untuk mengirimkan formulir Anda ke Formulir Tools. Tidak memerlukan pengetahuan tentang PHP dan hanya memerlukan sangat sedikit perubahan pada formulir Anda. It's great untuk bentuk-bentuk yang lebih kecil di mana Anda hanya ingin menyampaikan informasi ke database kemudian mengarahkan ulang pengguna ke sebuah "thankyou" halaman."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Metode pengiriman ini sangat mudah digunakan, tetapi tidak memberikan banyak kendali untuk bentuk-bentuk lebih rumit. Multi-page bentuk atau bentuk yang memerlukan validasi sisi server lebih sesuai dengan metode kedua: mengirimkan melalui Formulir Tools API."; +$LANG["text_add_form_field_types1"] = "Hampir selesai! Halaman ini mencoba untuk menemukan semua kolom formulir Anda dan menentukan jenis bidang mereka. Klik tombol Isi Cerdas di sebelah kanan untuk memulai. Anda hanya akan diizinkan untuk melanjutkan ketika semua tindakan telah diselesaikan - hal yang perlu perhatian Anda muncul dalam "Aksi Dibutuhkan " kolom."; +$LANG["text_add_form_field_types2"] = "Jika formulir Anda tidak dalam HTML, klik tombol Loncat Langkah untuk melanjutkan. Ini semua dapat dikonfigurasi kemudian."; +$LANG["text_add_form_field_types3"] = "Ini ulang isi formulir Anda (s). Catatan: ini akan menimpa perubahan yang telah Anda buat pada halaman ini."; +$LANG["text_add_form_field_types4"] = "Dalam kasus Anda mengalami masalah, klik di sini untuk melewatkan langkah ini. Semua bidang terselesaikan diatur untuk menggunakan nilai default. Anda dapat menyesuaikan bidang ini kemudian."; +$LANG["text_add_form_field_types_manual_upload"] = "Jika Anda telah mampu Cerdas Isi bidang Anda, Anda mungkin ingin mencoba solusi alternatif: meng-upload salinan dari formulir Anda dalam bidang di bawah ini."; +$LANG["text_add_form_field_types_manual_upload2"] = "Catatan: jangan meng-upload halaman PHP mentah (atau kode sisi server) - hanya meng-upload versi HTML. Untuk mendapatkan ini, melihat dan menyimpan halaman dari browser web Anda."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Ada beberapa bidang yang tidak dapat ditemukan di halaman formulir yang Anda tentukan. Hal ini mungkin sebagian besar disebabkan oleh salah satu dari berikut:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Anda memasukkan satu atau lebih URL bentuk multi-halaman formulir yang salah."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Satu atau lebih halaman formulir Anda dilindungi sandi dan script tidak dapat mengakses halaman."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Anda salah memasukkan URL formulir Anda."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klik di sini untuk kembali ke halaman Formulir Informasi untuk memeriksa pengaturan Anda."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Anda berubah bentuk Anda (s) setelah membuat pengajuan uji"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klik di sini untuk menempatkan melalui lain pengajuan uji."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Formulir Anda dilindungi kata sandi dan script tidak dapat mengakses halaman."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Di lain tab / jendela browser ini, login ke formulir Anda kemudian klik tombol Refresh di bawah ini untuk mencoba untuk kembali menemukan ladang."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Jika tidak ada pekerjaan solusi di atas, Anda juga mungkin ingin mencoba secara manual meng-upload formulir Anda untuk diproses ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Ada beberapa bidang yang tidak bisa ditemukan dalam bentuk halaman yang Anda tentukan. Hal ini mungkin sebagian besar disebabkan oleh salah satu dari ini:"; +$LANG["text_add_form_help_link"] = "Jika Anda mengalami masalah apapun selama langkah ini, cobalah membaca keluar dokumentasi pengguna ."; +$LANG["text_add_form_step_1_text_1"] = "Halaman berikut ini menuntun Anda melalui langkah-langkah untuk mengkonfigurasi Formulir Alat untuk menyimpan pengiriman form. Sebelum melanjutkan, silakan pastikan bahwa:"; +$LANG["text_add_form_step_1_text_2"] = "formulir Anda telah dibuat dan dapat diakses melalui sebuah URL (localhost baik-baik saja)"; +$LANG["text_add_form_step_1_text_3"] = "dapat mengedit formulir"; +$LANG["text_add_form_step_2_para_2"] = "Buka formulir Anda dalam editor pilihan Anda dan mengubah tag formulir Anda berikut, termasuk dua bidang tersembunyi."; +$LANG["text_add_form_step_2_para_3"] = "Selanjutnya, buka formulir Anda dalam browser web. Isi dalam setiap bidang dan mengirimkannya. Setelah mengirimkan, Anda akan melihat pesan pemberitahuan. Setelah pesan ini ditampilkan, kembali ke halaman ini dan klik tombol refresh di bawah ini. Ketika proses ini selesai, Anda akan melihat tombol di bawah ini terus, membawa Anda ke langkah berikutnya."; +$LANG["text_add_form_step_2_para_6"] = "Dalam pengiriman formulir Anda, termasuk nilai-nilai berikut. Mereka mungkin diatur secara langsung melalui PHP atau diteruskan melalui form itu sendiri. Di bawah ini adalah contoh dari masing-masing. The (\$ varname) adalah sebuah hash (atau associative array) dari semua informasi form - ini biasanya adalah (\$ postvar) atau (\$ sessionvar) variabel, tapi mungkin bisa kustom dibangun."; +$LANG["text_add_form_step_2_text_2"] = "Masukkan URL "thankyou " page Anda di sini. Ini adalah di mana Anda ingin orang untuk diarahkan ke setelah formulir telah disampaikan."; +$LANG["text_add_form_step_3_para_1"] = "Halaman ini berisi semua field dalam form Anda. Harap memeriksa setiap bidang dan menghapus apapun yang Anda tidak perlu disimpan untuk setiap pengajuan. Jika Anda menghapus lapangan yang valid oleh kecelakaan, atau ingin mengubah informasi yang disimpan oleh formulir Anda, kembali ke halaman sebelumnya untuk mengirim pengajuan pengujian baru."; +$LANG["text_add_form_step_3_para_2"] = "Catatan: jika Anda mengirim beberapa nilai melalui kotak centang atau multi-pilih kotak, pastikan nama field berakhir dengan [] karakter (lihat dokumentasi pengguna untuk informasi lebih lanjut)."; +$LANG["text_add_form_step_3_text_1"] = "Berikut ini tempat yang menyenangkan dimulai! Pada titik ini, Alat Formulir sedang menunggu pengajuan uji dari formulir Anda. Ini akan menggunakan pengiriman formulir untuk mengetahui informasi apa yang harus disimpan dalam database."; +$LANG["text_add_form_step_3_text_2"] = "dengan mengarahkan formulir Anda ke Formulir Tools"; +$LANG["text_add_form_step_3_text_3"] = "menggunakan Formulir Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Untuk membantu mengintegrasikan formulir Anda, kami menyarankan Anda membaca salah satu tutorial berikut:"; +$LANG["text_add_form_step_3_text_5"] = "Mereka menjelaskan bagaimana menyiapkan formulir dalam persiapan untuk ujian ketundukan, dan mencakup informasi lain yang mungkin bisa membantu. Garis PHP anda perlu adalah:"; +$LANG["text_add_form_step_3_text_6"] = "Hal ini memastikan data tersebut dikirimkan ke Formulir Tools. Bila Anda memasukkan melalui pengajuan pengujian Anda, klik tombol di bawah ini."; +$LANG["text_add_form_step_3_text_7"] = "Pada halaman TERLEBIH ke akhir Anda "terima kasih", pastikan untuk menambahkan parameter berikut pada variabel \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Basis data telah dibentuk untuk untuk formulir ini dan bentuk telah diaktifkan untuk digunakan. Jika Anda membuat pengajuan dengan menunjuk formulir Anda ke process.php, silakan kembali ke bentuk dan menghapus field tersembunyi berikut:"; +$LANG["text_add_form_step_5_para_2"] = "Kemudian mengunjungi "terima kasih" untuk mengosongkan sesi. Setelah ini selesai, semua baru pengiriman form akan diproses dan disimpan oleh Formulir Tools. Cobalah membuat penyerahan atau dua untuk memverifikasi informasi semua upload dengan benar."; +$LANG["text_add_form_step_5_para_3"] = "Jika Anda ingin menyempurnakan formulir untuk pilihan seperti auto-email, menambahkan kolom formulir tambahan lapangan, atau menyesuaikan bentuk jenis lapangan, Anda dapat mengedit formulir pada titik apapun."; +$LANG["text_add_form_step_5_para_4"] = "Karena formulir Anda meng-upload file berisi bidang, anda perlu mengkonfigurasi setiap bidang untuk menentukan meng-upload file folder, file apa yang diperbolehkan dan. Hal ini dapat ditemukan pada tab Display dari halaman formulir edit."; +$LANG["text_add_form_step_5_para_5"] = "Jika pengajuan dikirim melalui API, ubah baris ft_api_init_form_page pada halaman pertama formulir Anda ke:"; +$LANG["text_add_submission_button"] = "Tombol Pengajuan Tambah hanya muncul Views yang memiliki yang "menambahkan Mei kiriman " pilihan set ke "ya "."; +$LANG["text_admin_email_placeholder_info"] = "Ini adalah alamat email dari administrator Alat Formulir, didefinisikan dalam pengaturan account Anda. Ini hanya menampilkan alamat email, jadi jika Anda ingin menggunakan link sebagai HTML, Anda akan perlu untuk bungkus dalam sebuah <a> tag, seperti:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Juga halaman login default theme)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Pertama, silakan memilih jenis formulir Anda."; +$LANG["text_client_form_page"] = "Halaman ini mencantumkan semua bentuk dan Tampilan ditugaskan untuk klien ini. Tip: agar mereka untuk melihat formulir pengajuan, mereka harus ditugaskan ke sedikitnya satu View."; +$LANG["text_client_map_filters_desc1"] = "Peta klien filter membiarkan Anda membatasi pengiriman yang muncul dalam pemetaan ini Lihat oleh nilai-nilai dalam bentuk lapangan untuk nilai-nilai dalam account klien."; +$LANG["text_client_no_forms"] = "Anda saat ini tidak memiliki bentuk yang tersedia untuk ditinjau."; +$LANG["text_client_welcome"] = "Selamat datang! Program ini menyimpan semua informasi yang disampaikan oleh pengunjung situs Anda. Untuk melihat pengajuan formulir tertentu klik pada link VIEW, atau melihat menu navigasi paling kiri untuk pilihan lain."; +$LANG["text_config_file_created"] = "Config.php Anda telah dibuat."; +$LANG["text_config_file_not_created"] = "Kami tidak dapat membuat file config.php Anda. Anda akan perlu untuk menciptakan file konfigurasi secara manual."; +$LANG["text_config_file_not_created_instructions"] = "Salin dan sisipkan konten dari bagian di bawah ini ke file bernama config.php dan upload melalui FTP ke Formulir Tools / global folder (folder yang juga berisi beberapa file dan direktori yang lain, satu file bernama library.php)."; +$LANG["text_confirm_delete_form"] = "Ya, saya ingin menghapus formulir ini"; +$LANG["text_create_admin_account"] = "Sekarang kita akan menciptakan account administrator. Ini digunakan untuk mengelola semua aspek Formulir Tools, misalnya menambahkan bentuk dan menciptakan account klien."; +$LANG["text_create_new_client_account"] = "Gunakan formulir di bawah ini untuk membuat account klien baru. Semua kolom wajib diisi."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "lihat PHP {\$datefunctionlink} fungsi untuk pilihan pemformatan"; +$LANG["text_default_file_settings_page"] = "Halaman ini mendefinisikan pengaturan upload file untuk Formulir Peralatan instalasi. Aturan-aturan ini berlaku untuk semua file di-upload melalui Form Tools, kecuali secara eksplisit ditolak untuk setiap bidang bentuk. Catatan: jika Anda mengubah folder upload setelah file sudah di-upload, mereka akan dipindahkan secara otomatis ke folder baru."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Sebelum melanjutkan, anda perlu memperbarui / themes / default / cache folder untuk memungkinkan membaca dan menulis penuh permissions. Setelah ini dilakukan, pesan ini akan hilang dan anda dapat menginstal script."; +$LANG["text_default_values_in_view"] = "Bagian ini adalah opsional. Semua pengajuan yang dibuat dengan Lihat ini akan mengandung nilai-nilai default yang ditentukan di sini."; +$LANG["text_delete_all_forms"] = "Saya ingin menghapus semua file-file yang di-upload melalui formulir ini"; +$LANG["text_delete_form_warning"] = "Apakah Anda yakin ingin menghapus bentuk ini? Tindakan ini tidak bisa dibatalkan. Semua data akan hilang secara permanen!"; +$LANG["text_edit_admin_menu_page"] = "Anda dapat mengedit menu di bawah ini. Untuk memastikan bahwa Anda selalu memiliki akses ke semua fungsi yang tersedia dalam Formulir Tools, halaman berikut diperlukan: Formulir, Klien, Account Anda, Modul, Pengaturan dan Logout."; +$LANG["text_edit_client_menu_page"] = "Bagian ini memungkinkan Anda menyesuaikan kolom navigasi kiri untuk setiap pengguna. Anda dapat membuat banyak klien menu seperti yang anda inginkan dan menetapkan suatu rekening ke salah satu dari mereka. Secara default ada dua menu: satu untuk Anda, administrator, dan satu untuk semua account klien. Account administrator dapat dimodifikasi tapi tidak dihapus."; +$LANG["text_edit_tab_summary"] = "Jika Anda ingin kelompok bidang ini Lihat ke tab, cukup masukkan nama tab di bawah ini. Setelah Anda selesai, pilih tab yang sesuai untuk setiap kelompok lapangan di tab Fields ."; +$LANG["text_edit_view_list_page"] = "Ini mengontrol tab yang muncul sebagai bidang kolom pada halaman properti Penyampaian, dan pengaturan beberapa tambahan untuk bidang-bidang. Catatan: kami sarankan Anda menambahkan tidak lebih dari 4 atau 5 bidang yang paling penting dalam View."; +$LANG["text_email_settings_intro"] = "Halaman ini memungkinkan Anda mengidentifikasi mana kolom formulir Anda menyimpan email dan nama-nama yang sesuai. Setelah Anda menentukan nasib mereka di sini, Anda dapat menggunakannya dalam template email Anda sebagai penerima. Bagian ini seluruhnya opsional."; +$LANG["text_email_tab_summary"] = "Bagian ini memungkinkan Anda membangun sejumlah email yang akan dikirim setiap kali formulir dikirimkan, dan pemicu."; +$LANG["text_email_template_tab"] = "Bagian ini memungkinkan Anda menentukan konten apa yang muncul dalam email. Jika Anda ingin mengirimkan email yang hanya teks atau email, hanya masukkan nilai untuk bagian tersebut. Jika Anda memasukkan nilai untuk keduanya, email akan dikirim dalam kedua format."; +$LANG["text_email_template_text_1"] = "Telah ada penyerahan dilakukan melalui bentuk, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Telah ada penyerahan dilakukan melalui bentuk, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Terima kasih untuk kiriman Anda!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Pesan kesalahan untuk menunjukkan jika lapangan gagal validasi"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Bentuk eksternal adalah bentuk-bentuk yang sudah ada di situs Anda, atau di suatu tempat di web. Pilih opsi ini jika Anda memiliki bentuk sendiri yang Anda ingin untuk mengintegrasikan dengan Tools Formulir."; +$LANG["text_fields_tab_summary"] = "Halaman ini mencantumkan semua kolom formulir Anda. Untuk mengontrol bagaimana mereka muncul ketika pengajuan browsing, lihat tab Views . Menghapus field pada halaman ini akan menghapusnya dari semua kiriman, jadi harap berhati-hati!"; +$LANG["text_file_extension_info"] = "Masukkan ekstensi file yang dipisahkan dengan tanda koma (misalnya jpg, gif, png) atau biarkan kosong untuk mengizinkan semua jenis file."; +$LANG["text_file_field_placeholders_info"] = "File bidang memiliki dua placeholder khusus: FILEURL dan FILENAME. FILEURL adalah URL lengkap ke file tersebut, sehingga Anda dapat menghubungkan secara langsung ke dalam email Anda; FILENAME hanya nama file."; +$LANG["text_filters_page"] = "Hanya orang-orang kiriman yang memenuhi aturan yang Anda tetapkan di bawah ini akan muncul di View ini."; +$LANG["text_filters_tips"] = "Untuk tips tentang cara menggunakan filter pengiriman, lihat User Documentation."; +$LANG["text_forgot_password"] = "Ada masalah. Cukup masukkan nama pengguna Anda di bawah ini dan informasi login Anda akan dikirim ke alamat email anda di file. Jika Anda lupa nama pengguna, silakan email administrator situs pada {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Formulir ini mengandung satu atau lebih file upload fields:"; +$LANG["text_form_placeholder_info"] = "Penampung berikut dapat digunakan dalam setiap template email dan bidang bahasa pengganti, terlepas dari apapun Lihat template email ditugaskan. Penampung PERTANYAAN adalah pertanyaan bentuk spesifik; penampung JAWABAN adalah jawaban untuk setiap pertanyaan."; +$LANG["text_form_submission_date_placeholder"] = "Tanggal ketika penyerahan itu dibuat."; +$LANG["text_form_tools_form_url"] = "URL lengkap formulir. Ini hanya memiliki nilai untuk bentuk eksternal."; +$LANG["text_form_tools_login_url"] = "URL untuk login Formulir Tools."; +$LANG["text_form_view_permission_info_admin"] = "Catatan: formulir ini saat ini memiliki tipe akses Administrator, sehingga tidak ada account klien akan dapat melihat Lihat ini."; +$LANG["text_form_view_permission_info_private"] = "Catatan: formulir ini saat ini memiliki jenis akses pribadi sehingga pilihan umum dan pribadi di sini akan dibatasi dengan subset dari klien."; +$LANG["text_ft_installed"] = "Selamat, Formulir Peralatan telah berhasil diinstal!"; +$LANG["text_global_placeholder_info"] = "Placeholder ini dapat digunakan dalam template manapun dan bentuk apapun."; +$LANG["text_group_name_explanation"] = "Untuk bidang ditambahkan melalui proses Formulir Tambah, nilai ini diisi dengan tampilan teks apa pun Bidang tersebut menggunakan nilai. Anda mungkin ingin mengubahnya menjadi lebih mencirikan isinya."; +$LANG["text_install_create_config_file"] = "Formulir Peralatan toko dan database server Anda pengaturan dalam file bernama config.php, ditemukan di / global / folder. Klik "Buat File" tombol untuk secara otomatis menghasilkan file di server Anda."; +$LANG["text_install_create_database_tables"] = "Sekarang kita akan menciptakan tabel database Formulir Tools. Langkah ini memerlukan database itu sendiri untuk telah dibuat. Jika Anda tidak yakin bagaimana melakukan ini, silakan hubungi penyedia hosting Anda."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" biasanya berarti bahwa nama host yang Anda berikan tidak benar. Mungkin cobalah mengaturnya ke "localhost" - ini adalah cara yang umum untuk menyebut "lokal" database pada web server."; +$LANG["text_install_db_tables_error_tip_2"] = ""Tidak dapat tersambung ke server MySQL setempat melalui soket" berarti database field nama host adalah salah lagi."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" berarti bahwa ada masalah dengan kombinasi username / password."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... to database ..." berarti bahwa walaupun username dan password yang Anda berikan sudah benar, maka tidak dapat terhubung ke database tertentu dengan account tersebut. Hal ini dapat berarti bahwa salah satu nama database Anda tidak benar, atau account pengguna ini tidak terkait dengan database tersebut."; +$LANG["text_install_email_content_text"] = "Ada banyak sumber daya di situs web kami untuk membantu Anda memulai, termasuk dokumentasi online kami (https://docs.formtools.org) dan tutorial (https://docs.formtools.org/tutorials). Jika Anda menemukan Anda terjebak atau memiliki pertanyaan, ajukan pertanyaan di github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Maaf, Alat Formulir tidak akan dapat menjalankan pada server Anda. Silahkan klik di sini untuk persyaratan minimum."; +$LANG["text_install_system_check"] = "Halaman ini menjalankan beberapa tes pada sistem anda untuk memastikan itu dapat menjalankan Formulir Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Bentuk internal hanya ada dalam Peralatan Formulir - tidak di tempat lain di situs Anda. Alat Formulir Hanya account pengguna akan memiliki akses untuk membentuk. Pilih opsi ini jika Anda tidak memiliki bentuk yang ada."; +$LANG["text_internal_form_intro"] = "Gunakan formulir di bawah untuk membuat bentuk internal baru. Semua pengaturan, termasuk jumlah dan isi kolom formulir dapat diubah dan dikonfigurasi kemudian."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Dalam rangka untuk login dan menggunakan Formulir Tools, Anda harus mengaktifkan javascript di browser Anda. Silakan aktifkan sekarang, dan klik refresh pada browser Anda."; +$LANG["text_last_modified_date_explanation_c"] = "Kali terakhir penyerahan ini sudah diubah. Pengajuan baru, ini adalah sama dengan:"; +$LANG["text_limit_email_content_desc"] = "Pilihan ini hanya bekerja untuk HTML dan konten teks dihasilkan dengan Loops Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(hanya daftar Tampilan dengan satu atau lebih filter ditentukan)"; +$LANG["text_log_in_to_ft"] = "Log in ke Formulir Tools"; +$LANG["text_login"] = "Silakan log in di bawah ini untuk mengakses (\$ program_name) Administrasi Panel. Jika Anda lupa sandi, klik di sini."; +$LANG["text_login_info"] = "Seperti yang diminta, di sini adalah informasi login Anda."; +$LANG["text_name_of_form"] = "Nama formulir."; +$LANG["text_no_clients"] = "Saat ini tidak ada klien dalam database. Untuk menambahkan account klien baru, klik tombol Tambah Klien di bawah ini."; +$LANG["text_no_clients_found"] = "Tidak ada klien yang ditemukan. Coba memperluas kriteria pencarian Anda."; +$LANG["text_no_fields_in_view"] = "Lihat ini tidak memiliki ladang di dalamnya. Klik link di bawah ini."; +$LANG["text_no_forms"] = "Saat ini tidak ada bentuk-bentuk dalam database. Untuk menambahkan bentuk baru, klik Tambah tombol Form di bawah ini."; +$LANG["text_no_forms_found"] = "Tidak ada bentuk-bentuk yang ditemukan."; +$LANG["text_no_forms_found_search"] = "Tidak ada bentuk-bentuk yang ditemukan. Cobalah memperluas kriteria pencarian Anda."; +$LANG["text_no_modules_found"] = "Tidak ada modul yang ditemukan. Coba memperluas kriteria pencarian Anda."; +$LANG["text_no_recipients_added"] = "Tidak ada penerima telah ditambahkan."; +$LANG["text_no_search_results"] = "Tidak ada hasil dengan kriteria pencarian ini / Lihat."; +$LANG["text_no_submissions_found"] = "Maaf, tidak ada pengajuan yang ditemukan."; +$LANG["text_no_themes"] = "Anda tidak memiliki tema yang ditetapkan. Klik tombol di bawah ini untuk menyegarkan daftar tema Anda, atau periksa Formulir Alat dokumentasi pengguna untuk informasi tentang menambahkan tema."; +$LANG["text_non_deletable_fields"] = "Bidang ini digunakan oleh script Core dan tidak dapat diedit atau dihapus tanpa menyebabkan tidak kompatibel. Jika Anda ingin membuat perubahan pada jenis lapangan, membuat salinan dan mengedit pengaturan salinan."; +$LANG["text_option_list_group_explanation"] = "Jika ini dipilih, itu memungkinkan ke grup pilihan Anda. Bagaimana kelompok ditampilkan tergantung pada jenis lapangan dengan menggunakan daftar pilihan."; +$LANG["text_option_list_page"] = "Tombol radio, checkbox, dropdown dan multi-pilih field dropdown semua menyediakan pengguna dengan beberapa pilihan dari mana mereka dapat memilih satu atau lebih item. Dalam Perangkat Formulir, yang dikenal sebagai Opsi Daftar. Umumnya, ini dibuat secara otomatis oleh Formulir Tambahkan Eksternal proses, tapi Anda dapat secara manual menambahkan atau mengedit daftar pilihan Anda di bawah ini jika form perubahan konten Anda atau Anda membangun bidang yang hanya digunakan secara internal."; +$LANG["text_option_list_used_by_fields"] = "Ini Daftar Option digunakan oleh beberapa kolom formulir. Jika Anda memperbarui informasi di bawah ini, maka akan berubah untuk semua field (lihat Formulir Fields tab untuk melihat daftar bidang). Jika Anda ingin memperbarui nilai-nilai untuk satu, atau subset dari bidang yang saat ini ditugaskan, klik di sini untuk membuat Daftar Option baru dengan nilai yang sama seperti yang satu ini. Kemudian Anda dapat menetapkan kolom formulir yang Anda inginkan ke kelompok baru."; +$LANG["text_public_form_omit_list_page"] = "Bentuk publik memberikan manfaat membiarkan semua akses account klien mereka tanpa harus secara manual menetapkan setiap klien untuk mereka. Halaman ini memungkinkan Anda untuk menunjukkan klien yang tidak dapat mengakses form ini, meskipun bentuk ditandai sebagai umum."; +$LANG["text_public_view_omit_list_page"] = "Publik Tampilan memberikan manfaat membiarkan semua akses account klien mereka tanpa harus secara manual menetapkan setiap klien untuk mereka. Halaman ini memungkinkan Anda untuk menunjukkan klien yang tidak dapat mengakses View khusus ini."; +$LANG["text_reference_tab_info"] = "Halaman ini berisi semua penampung yang tersedia untuk form Anda. Placeholder adalah string yang dapat digunakan dalam template email, dan bidang yang ditandai dengan ikon placeholder khusus . Ketika masuk ke lapangan, mereka secara dinamis dikonversi ke nilai yang sesuai ketika lapangan dilihat atau email tersebut dikirim."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Meninjau dokumentasi pengguna"; +$LANG["text_send_email_from_edit_submission_page"] = "Sertakan pilihan untuk mengirim email ini dari Edit halaman Submission"; +$LANG["text_smart_fill_option_list_problem"] = "Kami tidak dapat Cerdas Isi pilihan bidang Anda. Namun, sebagai alternatif, Anda dapat mencoba meng-upload salinan dari halaman formulir Anda di kolom bawah. Catatan: jangan meng-upload halaman PHP mentah (atau kode sisi server) - hanya meng-upload versi HTML. Untuk mendapatkan ini, melihat dan menyimpan halaman dari browser web Anda."; +$LANG["text_submission_ip_address"] = "Alamat IP dari user yang membuat pengajuan."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Gunakan formulir di bawah untuk baik melihat atau mengirim email sendiri dihasilkan dari template email ini. Email hanya dikirim ke email yang ditentukan di bawah ini; utama, cc dan bcc alamat email penerima diabaikan saat pengujian."; +$LANG["text_test_email_templates_no_submissions"] = "Untuk menguji template email Anda, Anda harus terlebih dahulu memasukkan melalui setidaknya satu bentuk penyerahan diri."; +$LANG["text_theme_page_intro"] = "Halaman ini berisi semua tema Anda. Klik pada thumbnail untuk melihat contoh yang lebih besar dari tema yang gaya. The "memungkinkan" kotak centang atau tidak menentukan apakah tema yang dapat dipilih oleh klien. Untuk menelusuri semua tema yang tersedia, kunjungi situs Tools Formulir."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Menambahkan bentuk pertama Anda!"; +$LANG["text_unique_submission_id"] = "Penyerahan unik ID."; +$LANG["text_unused_option_list"] = "Ini daftar pilihan tidak sedang digunakan oleh setiap kolom formulir."; +$LANG["text_upgraded"] = "Instalasi anda telah diupgrade ke {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Ini Daftar Option digunakan oleh bidang-bidang berikut."; +$LANG["text_view_fields_info"] = "Tab ini bidang kontrol yang muncul saat mengedit pengajuan di Lihat ini, pesanan mereka dan apakah mereka dapat diedit atau tidak."; +$LANG["text_view_tab_summary"] = "Tab ini memungkinkan Anda membuat cara yang berbeda untuk kelompok dan mengatur data Anda. Tampilan memungkinkan Anda membuat kustom subset data formulir Anda untuk membaginya menjadi potongan dikelola, dan untuk membatasi apa yang klien dapat melihat atau mengedit."; +$LANG["validation_account_disabled"] = "Maaf, account Anda telah dinonaktifkan."; +$LANG["validation_account_not_recognized"] = "Maaf, username yang tidak diakui."; +$LANG["validation_account_not_recognized_info"] = "Maaf, bahwa nama pengguna tidak ditemukan. Silakan coba lagi, atau hubungi administrator di alamat di bawah ini."; +$LANG["validation_account_pending"] = "Account pengguna Anda menunggu persetujuan oleh administrator."; +$LANG["validation_check_delete_client"] = "Apakah Anda yakin ingin menghapus account klien ini?"; +$LANG["validation_client_password_missing_number"] = "Password klien harus berisi setidaknya satu angka (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Password klien harus berisi minimal salah satu karakter berikut: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Password klien harus mengandung setidaknya satu huruf besar."; +$LANG["validation_client_password_too_short"] = "Password klien harus setidaknya {\$number} karakter."; +$LANG["validation_col_name_is_reserved_word"] = "Maaf, nama kolom database ini adalah sebuah karya cipta di MySQL. Silakan ubah nama itu!"; +$LANG["validation_db_name"] = "Nama database tidak boleh berisi titik atau garis miring."; +$LANG["validation_db_not_updated_invalid_input"] = "Basis data tidak dapat diperbarui. Periksa untuk melihat nilai-nilai yang Anda masukkan valid."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Maaf, default administrator dan tema klien harus selalu diaktifkan."; +$LANG["validation_default_phone_num_required"] = "Silahkan mengisi nomor telepon penuh untuk <b> { \$ bidang} </ b> - angka saja."; +$LANG["validation_default_rule_alpha"] = "Harap hanya memasukkan huruf dan angka untuk <b> { \$ bidang} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Harap hanya memasukkan huruf untuk <b> { \$ bidang} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Harap hanya memasukkan angka untuk <b> { \$ bidang} </ b>."; +$LANG["validation_default_rule_required"] = "Masukkan nilai untuk bidang { \$} </ b> lapangan."; +$LANG["validation_default_rule_valid_email"] = "Silakan masukkan alamat email yang valid untuk bidang { \$} </ b> lapangan."; +$LANG["validation_delete_form_confirm"] = "Silakan periksa kotak untuk mengkonfirmasi bahwa Anda ingin menghapus formulir ini."; +$LANG["validation_delete_non_empty_option_list"] = "Peringatan! Ini Daftar Option digunakan oleh satu atau lebih kolom formulir. Menghapus itu akan membuat ladang-ladang berhenti bekerja dengan baik."; +$LANG["validation_display_names_incomplete"] = "Harap masukkan sebuah nilai untuk semua Nama Tampilan, atau klik Isi Smart pilihan untuk memasukkannya secara dinamis."; +$LANG["validation_duplicate_form_field_name"] = "Anda tidak dapat memiliki beberapa bidang dengan nama field yang sama."; +$LANG["validation_email_not_found_or_invalid"] = "Maaf, email yang diasosiasikan dengan account Anda baik tidak ada atau tidak valid."; +$LANG["validation_folder_invalid_permissions"] = "Dalam rangka untuk menjalankan tes ini, hak akses harus ditetapkan pada folder upload untuk memungkinkan membaca dan menulis file-file (777 di Unix)."; +$LANG["validation_folder_not_writable"] = "Folder ini tidak ditulisi."; +$LANG["validation_internal_form_too_many_fields"] = "Maaf, Anda hanya bisa menciptakan bentuk dengan 1000 bidang atau kurang."; +$LANG["validation_invalid_admin_email"] = "Silakan masukkan alamat email adminstrator."; +$LANG["validation_invalid_admin_username"] = "Nama pengguna Anda hanya dapat terdiri dari karakter alfanumerik (az dan 0-9)."; +$LANG["validation_invalid_client_username"] = "Klien nama pengguna hanya boleh terdiri dari karakter alfanumerik (aZ dan 0-9)."; +$LANG["validation_invalid_client_username2"] = "Maaf, username's mungkin hanya mengandung huruf, angka dan karakter garis bawah. Harap masukkan nama pengguna baru."; +$LANG["validation_invalid_column_name"] = "Nama kolom mungkin hanya alfanumerik (az, 0-9). Silakan periksa nama kolom."; +$LANG["validation_invalid_custom_from_email"] = "Silakan masukkan adat yang valid 'Dari' alamat email."; +$LANG["validation_invalid_custom_reply_to_email"] = "Harap masukkan valid adat 'Balas-ke' alamat email."; +$LANG["validation_invalid_default_sessions_timeout"] = "Harap masukkan nilai yang sah (angka) untuk sesi default timeout."; +$LANG["validation_invalid_email"] = "Silakan masukkan alamat email yang valid."; +$LANG["validation_invalid_email_id"] = "Maaf, itu ID email yang tidak valid."; +$LANG["validation_invalid_folder"] = "Maaf, ini tidak muncul untuk menjadi folder yang valid."; +$LANG["validation_invalid_form_field_names"] = "Kolom formulir hanya dapat alfanumerik dan garis bawah (aZ, 0-9, _), tanpa spasi."; +$LANG["validation_invalid_num_clients_per_page"] = "Harap hanya memasukkan angka di Klien Num Per Page lapangan."; +$LANG["validation_invalid_num_emails_per_page"] = "Harap hanya memasukkan angka untuk email per halaman."; +$LANG["validation_invalid_num_form_fields"] = "Harap hanya memasukkan angka dalam field Jumlah Fields."; +$LANG["validation_invalid_num_forms_per_page"] = "Harap hanya memasukkan angka dalam Formulir Num Per Page lapangan."; +$LANG["validation_invalid_num_menus_per_page"] = "Harap hanya memasukkan angka untuk menu per halaman."; +$LANG["validation_invalid_num_modules_per_page"] = "Harap hanya memasukkan angka dalam Modul Num Per Page lapangan."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Harap hanya memasukkan nomor dalam Daftar Bil Opsi Per field Halaman."; +$LANG["validation_invalid_num_submissions_per_page"] = "Harap masukkan jumlah yang valid pengajuan per halaman."; +$LANG["validation_invalid_sessions_timeout"] = "Harap masukkan batas waktu sesi yang valid (hanya bilangan bulat!)."; +$LANG["validation_invalid_tab_assign_values"] = "Harap hanya memasukkan angka dalam 'dari' dan 'ke' bidang."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Anda instalasi server PHP memiliki pengaturan yang tidak valid untuk nilai upload_tmp_dir. "{\$upload_folder}" bukan merupakan folder yang valid."; +$LANG["validation_invalid_url"] = "Harap masukkan URL yang valid."; +$LANG["validation_invalid_username"] = "Nama pengguna Anda hanya boleh terdiri dari karakter alfanumerik (aZ dan 0-9)."; +$LANG["validation_is_form_active"] = "Harap menunjukkan apakah bentuk aktif atau tidak."; +$LANG["validation_menu_name_taken"] = "Maaf, nama menu ini sudah diambil. Silakan pilih nama baru."; +$LANG["validation_modules_search_no_status"] = "Silakan pilih salah satu kotak centang Enabled atau Disabled."; +$LANG["validation_no_access_type"] = "Harap masukkan tipe akses."; +$LANG["validation_no_account_logout_url"] = "Harap masukkan URL logout Anda."; +$LANG["validation_no_account_password_confirmed"] = "Silakan masukkan kembali password baru Anda."; +$LANG["validation_no_account_password_confirmed2"] = "Silakan masukkan kembali sandi baru."; +$LANG["validation_no_admin_email"] = "Silahkan masukkan alamat email administrator."; +$LANG["validation_no_admin_theme"] = "Silahkan pilih tema untuk account administrator."; +$LANG["validation_no_admin_theme_swatch"] = "Silahkan pilih carikan untuk tema administrator."; +$LANG["validation_no_client_email"] = "Silahkan masukkan alamat email klien."; +$LANG["validation_no_client_first_name"] = "Silakan masukkan nama pertama klien."; +$LANG["validation_no_client_last_name"] = "Silakan masukkan nama klien."; +$LANG["validation_no_client_login_page"] = "Harap menunjukkan halaman yang klien harus diarahkan ke ketika mereka log in"; +$LANG["validation_no_client_password"] = "Harap masukkan password klien."; +$LANG["validation_no_client_theme_swatch"] = "Silahkan pilih carikan default untuk account klien."; +$LANG["validation_no_client_username"] = "Silakan masukkan nama pengguna klien."; +$LANG["validation_no_column_name"] = "Masukkan semua nama kolom, atau klik tombol Isi Smart untuk secara otomatis mengisi mereka."; +$LANG["validation_no_column_selected"] = "Harap pilih setidaknya satu field untuk muncul sebagai kolom pada halaman daftar pengajuan."; +$LANG["validation_no_custom_from_email"] = "Harap masukkan adat 'Dari' alamat email."; +$LANG["validation_no_custom_recipient_email"] = "Silahkan masukkan alamat email penerima kustom."; +$LANG["validation_no_custom_reply_to_email"] = "Harap masukkan adat 'Balas-ke' alamat email."; +$LANG["validation_no_date_format"] = "Harap masukkan format tanggal."; +$LANG["validation_no_db_column_single"] = "Silahkan masukkan nama Kolom Database."; +$LANG["validation_no_db_hostname"] = "Silakan masukkan nama host database."; +$LANG["validation_no_db_name"] = "Silahkan masukkan nama database."; +$LANG["validation_no_db_username"] = "Silakan masukkan nama pengguna account database."; +$LANG["validation_no_default_client_theme"] = "Silahkan pilih tema default untuk semua account klien baru."; +$LANG["validation_no_default_language"] = "Silakan pilih bahasa default untuk instalasi Formulir Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Harap masukkan batas waktu sesi standar untuk account pengguna."; +$LANG["validation_no_display_text"] = "Masukkan Teks Display untuk setiap bidang."; +$LANG["validation_no_display_text_single"] = "Masukkan nilai Teks Tampilan."; +$LANG["validation_no_edit_submission_page_label"] = "Harap masukkan Edit halaman Submission label."; +$LANG["validation_no_email"] = "Silakan masukkan alamat email Anda."; +$LANG["validation_no_email_config_field"] = "Silakan tentukan field yang membentuk bidang email."; +$LANG["validation_no_email_content"] = "Harap masukkan isi email untuk setidaknya satu dari format (HTML atau teks)."; +$LANG["validation_no_email_from_field"] = "Silakan email 'dari' lapangan."; +$LANG["validation_no_email_template_name"] = "Silahkan masukkan nama template email."; +$LANG["validation_no_email_template_view_id"] = "Silakan pilih Lihat untuk email ini template yang harus dipetakan."; +$LANG["validation_no_email_template_view_mapping_value"] = "Harap menunjukkan bila email harus dikirim."; +$LANG["validation_no_enabled_themes"] = "Harap pastikan bahwa setidaknya satu tema diaktifkan."; +$LANG["validation_no_first_name"] = "Silakan masukkan nama pertama Anda."; +$LANG["validation_no_form_field_name"] = "Harap masukkan semua bentuk nama field."; +$LANG["validation_no_form_field_single"] = "Masukkan nilai Lapangan Formulir."; +$LANG["validation_no_form_id"] = "ID bentuk tidak ditentukan. Silakan keluar dan coba lagi."; +$LANG["validation_no_form_name"] = "Silahkan masukkan nama bentuk."; +$LANG["validation_no_form_url"] = "Harap masukkan URL bentuk."; +$LANG["validation_no_last_name"] = "Silakan masukkan nama terakhir Anda."; +$LANG["validation_no_login_page"] = "Harap menunjukkan halaman yang Anda ingin untuk dikirim setiap kali Anda log in"; +$LANG["validation_no_logout_url"] = "Harap masukkan URL logout."; +$LANG["validation_no_main_email_recipient"] = "Harap masukkan setidaknya satu penerima email utama (yaitu bukan cc atau bcc)."; +$LANG["validation_no_menu"] = "Silahkan pilih menu untuk account pengguna ini."; +$LANG["validation_no_menu_id"] = "Silahkan pilih menu."; +$LANG["validation_no_num_clients_per_page"] = "Harap masukkan jumlah account klien per halaman."; +$LANG["validation_no_num_emails_per_page"] = "Harap masukkan jumlah email ke daftar per halaman."; +$LANG["validation_no_num_form_fields"] = "Masukkan jumlah kolom untuk formulir Anda."; +$LANG["validation_no_num_forms_per_page"] = "Harap masukkan jumlah bentuk-bentuk per halaman."; +$LANG["validation_no_num_menus_per_page"] = "Harap masukkan jumlah menu ke daftar per halaman."; +$LANG["validation_no_num_modules_per_page"] = "Harap masukkan jumlah modul per halaman."; +$LANG["validation_no_num_option_lists_per_page"] = "Silakan masukkan nomor daftar pilihan per halaman."; +$LANG["validation_no_num_submissions_per_page"] = "Harap masukkan jumlah pengajuan untuk menampilkan per halaman."; +$LANG["validation_no_option_list_name"] = "Masukkan nama daftar pilihan."; +$LANG["validation_no_page_titles"] = "Silakan masukkan judul halaman default untuk account pengguna."; +$LANG["validation_no_password"] = "Harap masukkan password Anda."; +$LANG["validation_no_program_name"] = "Silakan masukkan nama program."; +$LANG["validation_no_second_password"] = "Silakan masukkan kembali sandi Anda."; +$LANG["validation_no_sessions_timeout"] = "Harap masukkan batas waktu sesi."; +$LANG["validation_no_smart_fill_values"] = "Silakan masukkan nama field bentuk dan URL dari bentuk."; +$LANG["validation_no_table_prefix"] = "Harap masukkan prefiks database."; +$LANG["validation_no_tabs_defined"] = "Tidak tab didefinisikan"; +$LANG["validation_no_test_email_recipient"] = "Silakan masukkan alamat email di mana kami harus mengirim email pengujian."; +$LANG["validation_no_test_email_submission_id"] = "Silakan masukkan nomor ID pengajuan."; +$LANG["validation_no_theme"] = "Silakan pilih salah satu tema."; +$LANG["validation_no_theme_swatch"] = "Silahkan pilih carikan untuk tema yang dipilih."; +$LANG["validation_no_timezone_offset"] = "Harap masukkan offset zona waktu."; +$LANG["validation_no_titles"] = "Silakan masukkan judul halaman."; +$LANG["validation_no_two_column_names"] = "Maaf, Anda mungkin tidak memasukkan nama kolom database yang sama dua kali."; +$LANG["validation_no_ui_language"] = "Silakan pilih bahasa untuk antarmuka."; +$LANG["validation_no_url"] = "Harap masukkan URL."; +$LANG["validation_no_username"] = "Silakan masukkan nama pengguna Anda."; +$LANG["validation_no_username_or_js"] = "Anda harus memasukkan nama pengguna Anda. Silahkan mengaktifkan javascript di browser Anda."; +$LANG["validation_no_view_fields"] = "Lihat Anda tidak memiliki ladang! Anda harus menetapkan setidaknya satu field untuk menjadi sesuatu yang ada untuk ditampilkan di View."; +$LANG["validation_no_view_fields_selected"] = "Silahkan pilih satu atau lebih field untuk menambah View."; +$LANG["validation_no_view_name"] = "Silakan masukkan nama View."; +$LANG["validation_num_rows_to_add"] = "Harap masukkan jumlah baris yang ditambahkan."; +$LANG["validation_option_list_name_taken"] = "Maaf, ini daftar nama pilihan sudah diambil. Silakan pilih nama baru."; +$LANG["validation_password_in_password_history"] = "Untuk keamanan, Anda tidak dapat memasukkan password yang sama sebagai salah satu terakhir {\$history_size} password. Silakan masukkan sandi berbeda."; +$LANG["validation_passwords_different"] = "Pastikan password yang sama."; +$LANG["validation_please_enter_search_date_range"] = "Silakan pilih rentang tanggal pencarian."; +$LANG["validation_please_enter_search_keyword"] = "Silakan masukkan kata kunci pencarian."; +$LANG["validation_select_field_type"] = "Silakan pilih jenis lapangan."; +$LANG["validation_select_submissions_to_copy"] = "Silakan pilih kiriman yang ingin Anda salin."; +$LANG["validation_select_submissions_to_delete"] = "Silakan pilih yang pengajuan ingin Anda hapus."; +$LANG["validation_smart_fill_cannot_fill"] = "Maaf, kami tidak bisa mengisi bidang ini."; +$LANG["validation_smart_fill_invalid_field_type"] = "Kami tidak dapat menemukan sebuah lapangan, tapi itu bukan dropdown, grup kotak centang atau radio."; +$LANG["validation_smart_fill_no_field_found"] = "Maaf, kami tidak dapat menemukan bentuk lapangan dengan nama itu pada halaman yang ditentukan."; +$LANG["validation_smart_fill_no_page"] = "Silakan cari halaman yang berisi bidang yang ingin Anda Smart Isi."; +$LANG["validation_smart_fill_upload_all_pages"] = "Silakan upload semua halaman di formulir Anda."; +$LANG["validation_upload_folder_not_writable"] = "Folder upload sementara ini ditentukan oleh instalasi PHP Anda tidak dapat ditulis. Sampai hal ini tetap, file tidak dapat di-upload melalui Formulir Tools (atau program PHP lainnya). Silakan hubungi penyedia hosting Anda."; +$LANG["validation_upload_html_files_only"] = "Harap hanya meng-upload file HTML."; +$LANG["validation_username_taken"] = "Maaf, username yang sudah diambil. Silakan masukkan nama pengguna lain."; +$LANG["validation_wrong_password"] = "Maaf, bahwa sandi tidak cocok."; +$LANG["word_about"] = "Tentang"; +$LANG["word_access"] = "Akses"; +$LANG["word_account"] = "Rekening"; +$LANG["word_account_sp"] = "Account (s)"; +$LANG["word_accounts"] = "Account"; +$LANG["word_action"] = "Aksi"; +$LANG["word_active"] = "Aktif"; +$LANG["word_add"] = "Tambah"; +$LANG["word_add_rightarrow"] = "Tambah »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Administrasi"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Setelah"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "ASC"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Author:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«kembali"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Sebelum"; +$LANG["word_benefits"] = "Manfaat"; +$LANG["word_blue"] = "Biru"; +$LANG["word_cancel"] = "Membatalkan"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Cekbox"; +$LANG["word_checklist"] = "Pilihan"; +$LANG["word_client"] = "Klien"; +$LANG["word_client_c"] = "Klien:"; +$LANG["word_clients"] = "klien"; +$LANG["word_close"] = "TUTUP"; +$LANG["word_code"] = "Kode"; +$LANG["word_column"] = "Kolom"; +$LANG["word_columns"] = "Kolom"; +$LANG["word_columns_sp"] = "Kolom (s)"; +$LANG["word_complete"] = "LENGKAP"; +$LANG["word_configuration"] = "Pengaturan"; +$LANG["word_content"] = "Isi"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Lanjutkan »"; +$LANG["word_copy"] = "Salinan"; +$LANG["word_custom"] = "Kustom"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Tanggal"; +$LANG["word_debugging_c"] = "Debug:"; +$LANG["word_delete"] = "HAPUS"; +$LANG["word_desc"] = "DESC"; +$LANG["word_direct"] = "Langsung"; +$LANG["word_disabled"] = "Non-aktif"; +$LANG["word_documentation"] = "Dokumentasi"; +$LANG["word_done"] = "Selesai"; +$LANG["word_drawbacks"] = "Kekurangan"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "UBAH"; +$LANG["word_editable"] = "Dapat diubah"; +$LANG["word_email"] = "EMAIL"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Imel"; +$LANG["word_enabled"] = "Aktif"; +$LANG["word_equals"] = "Samadengan"; +$LANG["word_error"] = "Kesalahan"; +$LANG["word_error_c"] = "Kesalahan:"; +$LANG["word_examples_c"] = "Contoh:"; +$LANG["word_external"] = "Eksternal"; +$LANG["word_fail"] = "Kesalahan"; +$LANG["word_field"] = "Bidang"; +$LANG["word_field_sp"] = "Bidang"; +$LANG["word_fields"] = "Kolom"; +$LANG["word_fields_sp"] = "Lapangan (s)"; +$LANG["word_file"] = "File"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "File"; +$LANG["word_filters"] = "Saring"; +$LANG["word_filters_sp"] = "Filter (s)"; +$LANG["word_for"] = "untuk"; +$LANG["word_form"] = "Formulir"; +$LANG["word_form_c"] = "Formulir:"; +$LANG["word_formatting"] = "Memformat"; +$LANG["word_forms"] = "Formulir"; +$LANG["word_found"] = "Ditemukan"; +$LANG["word_from"] = "Dari"; +$LANG["word_from_c"] = "Dari:"; +$LANG["word_general"] = "Umum"; +$LANG["word_green"] = "Hijau"; +$LANG["word_grey"] = "Abu-abu"; +$LANG["word_height"] = "Tinggi"; +$LANG["word_help"] = "Bantuan"; +$LANG["word_hidden"] = "Tersembunyi"; +$LANG["word_highlight"] = "Menyoroti"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Jam"; +$LANG["word_hours"] = "Jam"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Tidaklengkap"; +$LANG["word_install"] = "Install"; +$LANG["word_installation"] = "Instalasi"; +$LANG["word_internal"] = "Intern"; +$LANG["word_language"] = "Bahasa"; +$LANG["word_large"] = "Besar"; +$LANG["word_like"] = "Seperti"; +$LANG["word_login"] = "LOGIN"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Utama"; +$LANG["word_medium"] = "Menengah"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "menit"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Modul"; +$LANG["word_na"] = "N/A"; +$LANG["word_name"] = "Nama"; +$LANG["word_name_c"] = "Nama:"; +$LANG["word_never"] = "Tidak pernah"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "LANGKAH SELANJUTNYA »"; +$LANG["word_no"] = "Tidak"; +$LANG["word_none"] = "Tak satupun"; +$LANG["word_notes"] = "Catatan"; +$LANG["word_notification"] = "Pemberitahuan"; +$LANG["word_number"] = "Nomor"; +$LANG["word_off"] = "Lepas"; +$LANG["word_offline"] = "offline"; +$LANG["word_okay"] = "Oke"; +$LANG["word_on"] = "Di"; +$LANG["word_online"] = "online"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Pilihan"; +$LANG["word_orange"] = "Jeruk"; +$LANG["word_order"] = "Order"; +$LANG["word_other"] = "Lain"; +$LANG["word_other_c"] = "Lain:"; +$LANG["word_page"] = "Halaman"; +$LANG["word_page_c"] = "Halaman:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Password"; +$LANG["word_password_c"] = "Password:"; +$LANG["word_pending"] = "Tertunda"; +$LANG["word_permissions"] = "Ijin"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«sebelumnya"; +$LANG["word_private"] = "Swasta"; +$LANG["word_public"] = "Publik"; +$LANG["word_purple"] = "Ungu"; +$LANG["word_recipient"] = "Penerima"; +$LANG["word_recipient_sp"] = "Penerima"; +$LANG["word_red"] = "Merah"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Melepas"; +$LANG["word_remove_uc_leftarrow"] = "«MEMINDAHKAN"; +$LANG["word_reply_to"] = "Balas-ke"; +$LANG["word_reply_to_c"] = "Balas-ke:"; +$LANG["word_required"] = "Diperlukan"; +$LANG["word_reset"] = "Set-ulang"; +$LANG["word_resolved"] = "Diselesaikan"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "baris"; +$LANG["word_search"] = "Cari"; +$LANG["word_searchable"] = "Dicari"; +$LANG["word_select"] = "Pilih"; +$LANG["word_setting"] = "Pengaturan"; +$LANG["word_settings"] = "SETING"; +$LANG["word_show"] = "Pertunjukan"; +$LANG["word_size"] = "Ukuran"; +$LANG["word_skipped"] = "Diabaikan"; +$LANG["word_small"] = "Kecil"; +$LANG["word_solution"] = "Solusi"; +$LANG["word_sortable"] = "Urutkan"; +$LANG["word_start"] = "Mulai"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Subyek"; +$LANG["word_subject_c"] = "Subyek"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Pengisian"; +$LANG["word_submissions"] = "Pengisian"; +$LANG["word_system"] = "Sistem"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Tes"; +$LANG["word_text"] = "Teks"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Theme"; +$LANG["word_themes"] = "Tema"; +$LANG["word_time"] = "Waktu"; +$LANG["word_tiny"] = "Kecil"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Hari ini"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Tidak diketahui"; +$LANG["word_update"] = "PERBARUI"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Pengguna"; +$LANG["word_username"] = "Username"; +$LANG["word_username_c"] = "Username:"; +$LANG["word_validation"] = "Pengesahan"; +$LANG["word_value"] = "Nilai"; +$LANG["word_value_sp"] = "Nilai"; +$LANG["word_verified"] = "Diverifikasi"; +$LANG["word_verify"] = "Memeriksa"; +$LANG["word_version"] = "Versi"; +$LANG["word_vertical"] = "Vertikal"; +$LANG["word_view"] = "Lihat"; +$LANG["word_views"] = "Tinjauan"; +$LANG["word_warning"] = "Perhatian!"; +$LANG["word_warning_c"] = "Peringatan"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Selamat datang!"; +$LANG["word_width_c"] = "Lebar:"; +$LANG["word_words"] = "Kata-kata"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Kuning"; +$LANG["word_yes"] = "Ya"; \ No newline at end of file diff --git a/global/lang/index.html b/global/lang/index.html new file mode 100644 index 00000000..30e84fdd --- /dev/null +++ b/global/lang/index.html @@ -0,0 +1 @@ + diff --git a/global/lang/is.php b/global/lang/is.php new file mode 100644 index 00000000..aed813ca --- /dev/null +++ b/global/lang/is.php @@ -0,0 +1,1219 @@ +Viðvörun! Þú hefur valið {\$num_selected_on_page} innsendingar á þessari síðu og {\$num_selected_on_other_pages} á öðrum síðum. Vinsamlegast veldu einn af eftirfarandi valkostum:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Viðvörun! Þú hefur ekki valið neinar innsendingar á þessari síðu en sem þú hefur valið {\$num_selected_on_other_pages} á öðrum síðum. Vinsamlegast staðfestu að þú viljir eyða þessum submissions.
    "; +$LANG["confirm_delete_view"] = "Ertu viss um að þú viljir eyða þessu sniði?"; +$LANG["confirm_refresh_page"] = "Ertu viss um að þú viljir endurnýja síðuna? Þetta mun missa allar breytingar sem þú hefur gert."; +$LANG["confirm_save_change_before_redirect"] = "Ein eða fleiri sviðum hafa verið uppfærðar. Viltu vista breytingarnar áður Áframsendi?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Ertu viss um að þú viljir Smart Fylltu út dálk gagnagrunninn nöfn? Þetta mun skrifa yfir núverandi gildum þínum."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Þessi möguleiki sjálfvirka býr dálkinum gagnasafn nöfn byggð á texta sýna sviðum, þannig að efni gagnagrunnsins töflunni er auðveldara að lesa."; +$LANG["confirm_smart_fill_display_names"] = "Ertu viss um að þú viljir Smart Fylltu Sýna nöfn? Þetta mun skrifa yfir núverandi gildum þínum."; +$LANG["confirm_ungroup_option_list"] = "Ertu viss um að þú viljir ungroup þennan valkost lista? Allir valkostir verða lumped í eitt ungrouped lista."; +$LANG["confirm_uninstall_module"] = "Ertu viss um að þú viljir fjarlægja þennan áfanga? Öll mát gögn munu tapast."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Fös"; +$LANG["date_Friday"] = "Föstudagur"; +$LANG["date_Mon"] = "Mán"; +$LANG["date_Monday"] = "Mánudagur"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Lau"; +$LANG["date_Saturday"] = "Laugardagur"; +$LANG["date_Sun"] = "Sól"; +$LANG["date_Sunday"] = "Sunnudagur"; +$LANG["date_Thu"] = "Fim"; +$LANG["date_Thursday"] = "Fimmtudagur"; +$LANG["date_Tue"] = "Þri"; +$LANG["date_Tuesday"] = "Þriðjudagur"; +$LANG["date_Wed"] = "Mið"; +$LANG["date_Wednesday"] = "Miðvikudagur"; +$LANG["date_am"] = "er"; +$LANG["date_month_April"] = "Apríl"; +$LANG["date_month_August"] = "Ágúst"; +$LANG["date_month_December"] = "Desember"; +$LANG["date_month_February"] = "Febrúar"; +$LANG["date_month_January"] = "Janúar"; +$LANG["date_month_July"] = "Júlí"; +$LANG["date_month_June"] = "Júní"; +$LANG["date_month_March"] = "Mars"; +$LANG["date_month_May"] = "Mega"; +$LANG["date_month_November"] = "Nóvember"; +$LANG["date_month_October"] = "Október"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Apríl"; +$LANG["date_month_short_Aug"] = "Ágúst"; +$LANG["date_month_short_Dec"] = "Desember"; +$LANG["date_month_short_Feb"] = "Febrúar"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Júlí"; +$LANG["date_month_short_Jun"] = "Júní"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Mega"; +$LANG["date_month_short_Nov"] = "Nóvember"; +$LANG["date_month_short_Oct"] = "Október"; +$LANG["date_month_short_Sep"] = "September"; +$LANG["date_pm"] = "am"; +$LANG["notify_account_deleted"] = "The notandi reikningur hefur verið eytt."; +$LANG["notify_account_updated"] = "Reikningur þinn hefur verið uppfærður."; +$LANG["notify_add_display_values"] = "Bæta Sýna Values"; +$LANG["notify_admin_menu_updated"] = "Í stjórn matseðill hefur verið uppfærður."; +$LANG["notify_admin_theme_overridden"] = "Theme The stjórnandi hefur verið handvirkt overridden."; +$LANG["notify_allow_url_fopen_not_set"] = "Því miður er þetta próf ekki að keyra á vefþjóninum þínum. Það þarf allow_url_fopen að vera stillt á 1 í skrá php.ini þinni. Þessi stilling gerir PHP til að opna skrá með slóð sem er nauðsynlegt til að framkvæma þessa prófun. Þú getur prófað hana handvirkt með því að hlaða upp til að mappa með FTP, þá að reyna að nálgast það á vefslóðina sem þú hefur til staðar."; +$LANG["notify_change_temp_password"] = "Þú innskráður bara með tímabundið lykilorð. Þú ættir að endurstilla aðgangsorðið þitt núna!"; +$LANG["notify_click_to_edit_new_submission"] = "Klik di sini untuk mengedit pengajuan baru...."; +$LANG["notify_client_account_menus_updated"] = "The viðskiptavinur reikning (a) hefur verið uppfærð í {\$menu_name} valmyndinni. Þú getur nú eytt valmyndinni sem áður var tengt við reikninginn (s)."; +$LANG["notify_client_account_not_updated"] = "The þjónustustjórareikning gæti ekki verið uppfærð."; +$LANG["notify_client_account_themes_updated"] = "The viðskiptavinur reikning (a) hefur verið uppfærð í {\$theme}) þema. Þú getur nú slökkt á þema sem áður var tengt við reikninginn (s)."; +$LANG["notify_client_account_updated"] = "The viðskiptavinur reikningur hefur verið uppfærður."; +$LANG["notify_client_menu_deleted"] = "Viðskiptavinurinn matseðill hefur verið eytt."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Í valmyndinni hefur verið eytt, en eftirfarandi viðskiptavinareikninga nú ekki lengur hafa valmynd! Þú þarft að uppfæra eftirfarandi reikninga:"; +$LANG["notify_client_menu_updated"] = "The viðskiptavinur matseðill hefur verið uppfærður."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Því miður, valmyndinni þú reyndir bara að eyða nú þegar verið notað af viðskiptavinunum hér að neðan. Til að eyða valmyndinni þú verður fyrst að úthluta viðskiptavinum öðrum valmyndum. Smelltu á nafn viðskiptavinar til að breyta því að einstaklingur reikning, eða setja alla reikninga til mismunandi matseðill með listanum hér að neðan."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Því miður, er ein af þeim þemum sem þú bara slökkt þegar verið notaður af eftirfarandi viðskiptavinareikninga. Til að slökkva á þema sem þú verður fyrst að setja hvern viðskiptavin í annað þema. Smelltu á nafn viðskiptavinar til að breyta því að einstaklingur reikning, eða setja alla reikninga til að þema með listanum hér að neðan."; +$LANG["notify_edit_email_fields_link"] = "Smelltu hér til að skilgreina hvaða formi sviðum eru tölvupósti sviðum, svo þú getur miðað þá í sniðmát netfangið þitt."; +$LANG["notify_edit_field_new_field"] = "Þetta er ný sviði. Þú þarft að uppfæra aðalsíðuna áður að vera fær um að fullu breytt þessu sviði."; +$LANG["notify_edit_option_list_after_save"] = "Þú verður að velja valkost Listi og þá Vista breytingar áður en hægt að breyta því."; +$LANG["notify_email_field_config_deleted"] = "Netfangið stillingar hefur verið eytt."; +$LANG["notify_email_fields_not_updated"] = "Því miður gátum við ekki að uppfæra í tölvupósti reitina."; +$LANG["notify_email_fields_updated"] = "Netfangið sviðum hefur verið uppfærð."; +$LANG["notify_email_not_sent"] = "Því miður gat á netfangið ekki sendur. Vinsamlegast hafðu samband við umsjónarmann á netfangið hér fyrir neðan."; +$LANG["notify_email_not_sent_c"] = "Því miður gat í tölvupósti ekki hægt að senda:"; +$LANG["notify_email_sent"] = "Í tölvupóstinum (s) hafa verið send."; +$LANG["notify_email_template_deleted"] = "Í Sniðmát hefur verið eytt."; +$LANG["notify_email_template_updated"] = "Í Sniðmát hefur verið uppfærður."; +$LANG["notify_enabled_module_list_updated"] = "Listi yfir virkt modules hefur verið uppfærður."; +$LANG["notify_error_saving_fields"] = "Villa kom upp vista reitina."; +$LANG["notify_field_changes_saved"] = "Breytingarnar á sviði (s) hafa verið vistaðar."; +$LANG["notify_field_options_smart_filled"] = "Sviði þínir hafa verið Smart fyllt."; +$LANG["notify_field_selected"] = "Á þessu sviði hefur verið valinn. Smelltu hér til að fara aftur í helstu sviði lista."; +$LANG["notify_field_updated"] = "Svæðið hefur verið uppfærður."; +$LANG["notify_file_not_uploaded"] = "Skráin gæti ekki verið hlaðið."; +$LANG["notify_file_uploaded"] = "Skránni hefur verið hlaðið."; +$LANG["notify_filters_not_updated"] = "Villa uppfæra uppgjöf síur þessa viðskiptavinar."; +$LANG["notify_filters_updated"] = "Í uppgjöf síur hafa verið uppfærð fyrir þessa viðskiptavini."; +$LANG["notify_folder_correct_permissions"] = "Þessi mappa hefur rétt leyfi."; +$LANG["notify_folder_url_match"] = "Mappan og vefslóð birtast rétt passa."; +$LANG["notify_folder_url_no_access"] = "Þetta próf gæti ekki verið gerðar síðan PHP var ófær til að fá aðgang að vefslóð. Þetta er venjulega vegna slóðina að lykilorði verndað með. Htaccess skrána."; +$LANG["notify_folder_url_no_match"] = "Þessi mappa-slóð samsetning virðist ekki vera jafningi."; +$LANG["notify_folder_url_unknown_error"] = "Óþekkt villa kom upp. Þú getur prófað hana handvirkt með því að hlaða upp til að mappa með FTP, þá að reyna að nálgast það á vefslóðina sem þú hefur til staðar."; +$LANG["notify_form_access_type_email_info"] = "Þessi mynd hefur stjórnandi aðgang gerð, þannig að ekki viðskiptavinir hafa aðgang að því og eru ekki skráð í listanum hér að neðan."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Því miður, form með því að ID er ekki til."; +$LANG["notify_form_field_not_added"] = "Formið reitinn '{\$fieldname}' gat ekki bætt við."; +$LANG["notify_form_field_options_updated"] = "Á sviði formi valkostir hafa verið uppfærð."; +$LANG["notify_form_field_removed"] = "Formið akur var eytt."; +$LANG["notify_form_fields_removed"] = "Formið sviðum var eytt."; +$LANG["notify_form_not_updated_notify_admin"] = "Formi þín gæti ekki verið uppfærð. Vinsamlegast hafðu samband við umsjónarmann til að skýrsla þessi vandamál."; +$LANG["notify_form_settings_updated"] = "Mynd Stillingarnar þínar hafa verið uppfærðir."; +$LANG["notify_form_submission_updated"] = "Formið undirgefni hefur verið uppfærður."; +$LANG["notify_form_tabs_updated"] = "The flipa hefur verið uppfærð."; +$LANG["notify_form_updated"] = "Formið hefur verið uppfærður."; +$LANG["notify_form_views_updated"] = "Form Views hafa verið uppfærðar."; +$LANG["notify_install_invalid_db_info"] = "Því miður gátum við ekki að tengja við gagnagrunn með þeim upplýsingum sem þú fylgir. The villuboð gagnagrunn sem skilað er: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Mynd þín hefur verið búið til! Hægt er að stilla mynd í gegnum þessa flipa."; +$LANG["notify_invalid_account_information_in_sessions"] = "Reikningurinn upplýsingar sem geymdar eru á fundum er ógilt. Vinsamlegast skráðu þig inn aftur hér að neðan."; +$LANG["notify_invalid_license_key"] = "Því miður, það virðist ekki vera gilt leyfi lykill. Vinsamlegast reyndu að slá aftur."; +$LANG["notify_invalid_permissions"] = "Þú hefur ekki réttindi til að opna þessa síðu. Þú hefur skráð þig út."; +$LANG["notify_invalid_search_dates"] = "Vinsamlegast notaðu datepicker að slá inn gilda dagsetningu eða dagsetningar."; +$LANG["notify_invalid_upload_folder"] = "Hlaða mappa er annað hvort öryrki eða ekki skrifanleg."; +$LANG["notify_lang_list_updated"] = "Í boði UI tungumál listi hefur verið uppfærður."; +$LANG["notify_login_info_emailed"] = "Innskráning þínar hafa verið sendar til þín."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Úbbs, er þetta mát þegar uppsett!"; +$LANG["notify_module_installed"] = "Einingin hefur verið sett upp. Smelltu hér til að velja mát."; +$LANG["notify_module_list_updated"] = "Einingin listi hefur verið uppfærður."; +$LANG["notify_module_uninstalled"] = "Einingin hefur verið fjarlægð."; +$LANG["notify_module_updated"] = "The {\$module} eining hefur verið uppfærð {\$version}. Smelltu hér til að velja mát ."; +$LANG["notify_multi_field_selected"] = "Á þessu sviði hefur verið valinn. Smelltu hér til að skoða og breyta á sviði valkostum."; +$LANG["notify_multi_field_updated"] = "Svæðið hefur verið uppfærður. Þú vilja vera fær til stilla á sviði valkosti eftir að setja upp mynd."; +$LANG["notify_multiple_fields_found"] = "Mörg atriði fundust með þessum reit nafn ({\$field_name}). Þetta getur átt sér stað ef síða inniheldur fleiri en eina mynd eða ef þú heitir tilviljun einn af þín sama og annað. Vinsamlegast veldu það sem þú vilt af listanum hér fyrir neðan."; +$LANG["notify_new_default_view_created"] = "Ný, sjálfgefinn skjá með öllum mynd sviðum hefur verið búinn til."; +$LANG["notify_new_submission_created"] = "Skil hefur verið búinn til. Þú getur breytt henni hér fyrir neðan."; +$LANG["notify_no_account_id_in_sessions"] = "Enginn notandi auðkenni fannst á fundum. Vinsamlegast skráðu þig inn aftur hér að neðan."; +$LANG["notify_no_api_installed"] = "Þú hefur ekki API upp"; +$LANG["notify_no_client_permissions"] = "Það eru engar stillingar til að breyta."; +$LANG["notify_no_email_template_selected"] = "Veldu tölvupósti sniðmát."; +$LANG["notify_no_emails_defined"] = "Engin bréf hafa verið skilgreind fyrir þetta eyðublað. Til að bæta við nýjum einn skaltu smella á hnappinn hér fyrir neðan."; +$LANG["notify_no_field_settings"] = "Þessi reitur tegund inniheldur engin auka stillingar."; +$LANG["notify_no_fields_in_tab"] = "Þessi flipi hjartarskinn ekki innihalda allir reitir."; +$LANG["notify_no_option_lists"] = "Það eru ekki valkostur listum skilgreind. Smelltu á hnappinn hér fyrir neðan til að búa til nýjan."; +$LANG["notify_no_test_submission"] = "Form Tools hefur ekki fengið vel próf uppgjöf enn."; +$LANG["notify_no_user_email_fields_configured"] = "Ath: Ef þú vilt senda tölvupóst á hvaða netfang sem var innifalin í formi, þarftu fyrst að stilla póstinn mynd reitina."; +$LANG["notify_no_views"] = "Formi þinn styður ekki hafa allir Views sett upp! Þú þarft að minnsta kosti einn View í því skyni að stjórna mynda gögnunum."; +$LANG["notify_no_views_assigned_to_client_form"] = "Það virðist sem notandi hefur ekki verið úthlutað hvaða formi Views, þannig að þú munt ekki geta séð nein gögn. Vinsamlegast hafðu samband við kerfisstjóra fyrir frekari aðstoð."; +$LANG["notify_no_views_defined"] = "Þú ert ekki með neina Views skilgreind. Þú munt ekki hægt að skoða skráningar þetta eyðublað er nema að minnsta kosti eitt View er stofnaður. Smelltu á hnappinn hér fyrir neðan til að búa til the vanræksla Skoða."; +$LANG["notify_option_list_deleted"] = "Þessi valkostur skrá hefur verið eytt."; +$LANG["notify_option_list_updated"] = "Þessi valkostur listi hefur verið uppfærð."; +$LANG["notify_public_form_omit_list_updated"] = "The viðskiptavinur sleppt listanum fyrir þetta form hefur verið uppfærður."; +$LANG["notify_public_view_omit_list_updated"] = "The viðskiptavinur sleppt listanum fyrir View hefur verið uppfærður."; +$LANG["notify_required_admin_pages"] = "Eftirfarandi síður eru nauðsynleg í Stjórnandi valmyndinni: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Því miður, það var ekki allir starfsemi fyrir meðan svo við þurftum að skrá þig út. Vinsamlegast skráðu þig inn aftur hér að neðan."; +$LANG["notify_setup_options_updated"] = "Það skipulag valkostir hafa verið uppfærð."; +$LANG["notify_smart_fill_field_not_found"] = "Við gátum að finna svæði með þessu nafni ({\$field_name}) í formi (s) tilgreint. Þú getur annað hvort handvirkt velja reitinn gerð hér fyrir neðan eða smellt á Hoppa hnappinn til að breyta þessu sviði síðar."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Skráin (s) var verið hlaðið. Prófaðu að smella á Smart Fylltu hnappinn til að prófa aftur. Ef þetta skref mistakast, þú þarft að sleppa þessu skrefi og stilla mynd reitina þinn manally síðar."; +$LANG["notify_smart_fill_submitted"] = "Eyðublaðið hefur verið skilað. Það fer eftir stærð á mynd og fjölda valkosta sviði, þetta getur tekið smá tíma."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Því miður, eitt eða fleiri skrár sem þú slóst inn gat ekki hlaðið. Þú þarft að sleppa þessu skrefi og stilla reitina handvirkt."; +$LANG["notify_submission_and_files_deleted"] = "Í undirgefni og hvaða skrá (r) í tengslum við það var eytt."; +$LANG["notify_submission_copied"] = "Uppgjöf hefur verið afrituð."; +$LANG["notify_submission_copied_edit"] = "Uppgjöf hefur verið afrituð. Þú getur breytt því hér að neðan."; +$LANG["notify_submission_deleted"] = "The uppgjöf var eytt."; +$LANG["notify_submission_deleted_with_problems"] = "The uppgjöf var eytt, en eftirfarandi vandamál var komið upp þegar reynt er að eyða eftirfarandi skrá (s):"; +$LANG["notify_submission_id_not_found"] = "Í uppgjöf auðkenni fannst ekki."; +$LANG["notify_submission_not_updated"] = "The uppgjöf gæti ekki verið uppfærð."; +$LANG["notify_submissions_and_files_deleted"] = "Í innsendingar og hvaða skrá (r) í tengslum við þau var eytt."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} skjöl hafa verið afrituð."; +$LANG["notify_submissions_deleted"] = "Í innsendingar var eytt."; +$LANG["notify_submissions_deleted_with_problems"] = "Í innsendingar var eytt, en eftirfarandi vandamál var komið upp þegar reynt er að eyða eftirfarandi skrá (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Próf netfang þitt gæti ekki verið send."; +$LANG["notify_theme_cache_folder_not_writable"] = "Cache möppu Þetta þema er ekki skrifanleg. Til að gera þetta þema á {\$folder} mappa þarf að hafa fulla lesa-skrifa leyfi."; +$LANG["notify_theme_list_updated"] = "Þema listi hefur verið uppfærður."; +$LANG["notify_themes_settings_updated"] = "Þema Stillingarnar þínar hafa verið uppfærðar."; +$LANG["notify_view_deleted"] = "Í Skoða hefur verið eytt."; +$LANG["notify_view_group_deleted"] = "View Hópurinn hefur verið eytt."; +$LANG["notify_view_missing_columns"] = "Úps! Því miður hefur þetta View ekki verið að fullu sett upp enn."; +$LANG["notify_view_missing_columns_admin_fix"] = "Smelltu hér til að skilgreina hvaða sviðum ætti að birtast eins og dálka á síðunni."; +$LANG["notify_view_updated"] = "Í Skoða hefur verið uppfærður."; +$LANG["notify_your_email_sent"] = "Netfang þitt hefur verið send."; +$LANG["phrase_100_per_page"] = "100 á síðu"; +$LANG["phrase_10_per_page"] = "10 á síðu"; +$LANG["phrase_15_per_page"] = "15 á síðu"; +$LANG["phrase_1_direct"] = "1. Bein"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 á síðu"; +$LANG["phrase_25_per_page"] = "25 á síðu"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 dálka"; +$LANG["phrase_2chars"] = "2 stafir"; +$LANG["phrase_3_columns"] = "3 dálka"; +$LANG["phrase_4_columns"] = "4 dálkar"; +$LANG["phrase_50_per_page"] = "50 á síðu"; +$LANG["phrase_accepting_submissions"] = "(samþykkt innsendingar)"; +$LANG["phrase_access_admin_account_c"] = "Þú getur fengið aðgang að stjórnun reikninga þína hér:"; +$LANG["phrase_access_type"] = "Aðgangur Tegund"; +$LANG["phrase_account_info"] = "Reikningsupplýsingar"; +$LANG["phrase_account_settings"] = "Póststillingar"; +$LANG["phrase_action_needed"] = "Action Needed"; +$LANG["phrase_add_client"] = "Bæta Client"; +$LANG["phrase_add_client_menu"] = "Bæta Viðskiptavinur Valmynd"; +$LANG["phrase_add_default_settings_rightarrow"] = "Bæta við vanræksla stilling »"; +$LANG["phrase_add_field"] = "Bæta Field"; +$LANG["phrase_add_fields"] = "Bæta Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Bæta Field (s) »"; +$LANG["phrase_add_form"] = "Bæta Form"; +$LANG["phrase_add_form_external"] = "Bæta við Form - External"; +$LANG["phrase_add_form_internal"] = "Bæta við Form - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Bæta við nýjum Group »"; +$LANG["phrase_add_num_rows"] = "Setja {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Bæta Row »"; +$LANG["phrase_add_submission_button"] = "Bæta Uppgjöf Button"; +$LANG["phrase_add_view_rightarrow"] = "Bæta Skoða »"; +$LANG["phrase_adding_multi_page_form"] = "Bæta við mörgum síðunni formi með API"; +$LANG["phrase_adding_single_page_form"] = "Bætt við einni síðu eyðublað með API"; +$LANG["phrase_admin_menu"] = "Stjórnandi Valmynd"; +$LANG["phrase_admin_only"] = "Stjórnandi Only"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Stjórnandi Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Ítarlegar stillingar »"; +$LANG["phrase_all_X_results_selected"] = "Allar {\$numresults} Niðurstöður Valdar"; +$LANG["phrase_all_clients"] = "Viðskiptavina"; +$LANG["phrase_all_clients_except_c"] = "Allir viðskiptavinir nema:"; +$LANG["phrase_all_clients_have_access"] = "(allir viðskiptavinir hafa aðgang að)"; +$LANG["phrase_all_fields"] = "Allir reitir"; +$LANG["phrase_all_fields_displayed"] = "Allir reitir eru birtar"; +$LANG["phrase_all_statuses"] = "Allur staða"; +$LANG["phrase_all_submissions"] = "Allar innsendingar"; +$LANG["phrase_allow_fields_edited"] = "Leyfa reiti til að breyta"; +$LANG["phrase_alphanumeric"] = "Tölustafi (az, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Sækja Tímabelti Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Velja allar skráðar viðskiptavinareikninga á {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Velja allar skráðar viðskiptavinareikninga á {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Á End"; +$LANG["phrase_at_start"] = "Á byrjun"; +$LANG["phrase_author_link"] = "Höfundur Link"; +$LANG["phrase_auto_disable_account"] = "Sjálfvirk gera reikning eftir # tókst tenging tilraunir"; +$LANG["phrase_auto_size"] = "Sjálfvirk stærð"; +$LANG["phrase_available_clients"] = "Laus Viðskiptavinir"; +$LANG["phrase_available_fields"] = "Laus Fields"; +$LANG["phrase_available_option_lists"] = "Laus Listar Valkostur"; +$LANG["phrase_available_swatches"] = "Laus Swatches"; +$LANG["phrase_available_swatches_c"] = "Laus Swatches:"; +$LANG["phrase_available_tabs"] = "Laus Tabs"; +$LANG["phrase_available_views"] = "Laus Views"; +$LANG["phrase_awaiting_form_submission"] = "Bíð eftir mynd senda."; +$LANG["phrase_back_to_field_list"] = "«til baka sviði lista"; +$LANG["phrase_back_to_search_results"] = "Til baka í leitarniðurstöður"; +$LANG["phrase_base_view_on"] = "Base Skoða eftir ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Breyta Login Information"; +$LANG["phrase_characters_limit_p"] = "stafir hámark."; +$LANG["phrase_check_db_settings_try_again"] = "Vinsamlegast athugaðu gagnasafn þínum og smelltu á Halda áfram hnappinn aftur."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Athugaðu slóð"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Hreinsa"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Hreinsa sleppt List"; +$LANG["phrase_client_account_settings"] = "Client Account Settings"; +$LANG["phrase_client_field"] = "Viðskiptavinur Field"; +$LANG["phrase_client_map_filters"] = "Viðskiptavinur Map Síur »"; +$LANG["phrase_client_may_edit"] = "Viðskiptavinur má breyta"; +$LANG["phrase_client_menu"] = "Viðskiptavinur Valmynd"; +$LANG["phrase_clients_can_access_form"] = "Viðskiptavinir sem geta nálgast eyðublað"; +$LANG["phrase_clients_can_access_view"] = "Viðskiptavinir sem geta nálgast Skoða"; +$LANG["phrase_clients_cannot_access_form"] = "Viðskiptavinir sem geta ekki opnað mynd"; +$LANG["phrase_clients_cannot_access_view"] = "Viðskiptavinir sem geta ekki opnað View"; +$LANG["phrase_clients_may_edit"] = "Viðskiptavinir geta breytt"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Kóði / Álagning Field"; +$LANG["phrase_code_markup_type"] = "Kóði / Álagning Tegund"; +$LANG["phrase_codes_c"] = "Villa Codes:"; +$LANG["phrase_column_width"] = "Column Breidd"; +$LANG["phrase_company_name"] = "Nafn fyrirtækis"; +$LANG["phrase_configure_form_email_fields"] = "Stilla Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Staðfesta Mappa-slóð Match"; +$LANG["phrase_connect_rows"] = "Tengjast raðir"; +$LANG["phrase_copy_email_settings_from"] = "Afrita Email stillingum ..."; +$LANG["phrase_copy_settings_from"] = "Afrita stillingum ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Stofna reikning"; +$LANG["phrase_create_admin_account"] = "Búa Admin Account"; +$LANG["phrase_create_config_file"] = "Búa Config File"; +$LANG["phrase_create_database_tables"] = "Búa Database Tables"; +$LANG["phrase_create_default_view"] = "Búa Default View"; +$LANG["phrase_create_file"] = "Búa skrá"; +$LANG["phrase_create_group"] = "Búa til hóp"; +$LANG["phrase_create_new_email"] = "Búa til nýtt netfang"; +$LANG["phrase_create_new_menu"] = "Búa til nýja valmynd"; +$LANG["phrase_create_new_option_list"] = "Búa til nýja Valkostur List"; +$LANG["phrase_create_new_option_list_group"] = "Búa til nýjan valkost hópalistanum"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Búa til nýja Valkostur List »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Búa til nýjan Skoða Group"; +$LANG["phrase_custom_display_format"] = "Custom sýna snið"; +$LANG["phrase_custom_recipient"] = "Custom Viðtakandi"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Data Type"; +$LANG["phrase_database_hostname"] = "Gagnasafn hostname"; +$LANG["phrase_database_name"] = "Gagnasafn nafn"; +$LANG["phrase_database_password"] = "Gagnasafn lykilorð"; +$LANG["phrase_database_settings"] = "Gagnasafn Stillingar"; +$LANG["phrase_database_setup"] = "Gagnasafn Skipulag"; +$LANG["phrase_database_table_prefix"] = "Gagnasafn borð forskeyti"; +$LANG["phrase_database_username"] = "Gagnasafn notandanafn"; +$LANG["phrase_date_format"] = "Dagsetningu"; +$LANG["phrase_db_column"] = "DB Column"; +$LANG["phrase_db_setup_page_4"] = "4. Gagnasafn Skipulag"; +$LANG["phrase_default_client_account_theme"] = "Sjálfgefin Viðskiptavinur Reikningur Theme"; +$LANG["phrase_default_date_field_search_value"] = "Default dagsetningu sviði leit value"; +$LANG["phrase_default_language"] = "Sjálfgefin Tungumál"; +$LANG["phrase_default_menu"] = "Sjálfgefin Valmynd"; +$LANG["phrase_default_sessions_timeout"] = "Sjálfgefin Sessions Tími"; +$LANG["phrase_default_sort_order"] = "Sjálfgefin Sort Order"; +$LANG["phrase_default_tab_label"] = "Gögn"; +$LANG["phrase_default_theme"] = "Sjálfgefin Theme"; +$LANG["phrase_default_value"] = "Sjálfgefið gildi"; +$LANG["phrase_default_values"] = "Sjálfgefið gildi"; +$LANG["phrase_default_values_new_submissions"] = "Sjálfgefið gildi fyrir nýja Uppgjöf"; +$LANG["phrase_delete_field"] = "Eyða Field"; +$LANG["phrase_delete_form"] = "Eyða Form"; +$LANG["phrase_delete_row"] = "Eyða Row"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Eyða tengt skrám er eytt uppgjöf"; +$LANG["phrase_delete_view"] = "Eyða View"; +$LANG["phrase_disconnect_rows"] = "Aftengja raðir"; +$LANG["phrase_display_email"] = "Sýna Email"; +$LANG["phrase_display_name"] = "Birtingarnafn"; +$LANG["phrase_display_text"] = "Texta"; +$LANG["phrase_display_value"] = "Sýna Value"; +$LANG["phrase_edit_admin_menu"] = "Breyta Admin Menu"; +$LANG["phrase_edit_client"] = "Breyta Client"; +$LANG["phrase_edit_client_menu"] = "Breyta Viðskiptavinur Valmynd"; +$LANG["phrase_edit_email_template"] = "Breyta Sniðmát"; +$LANG["phrase_edit_field"] = "Breyta Field"; +$LANG["phrase_edit_field_c"] = "Breyta Field:"; +$LANG["phrase_edit_form"] = "Breyta Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Breyta formi aðgangs]"; +$LANG["phrase_edit_option_list"] = "Breyta Valkostur List"; +$LANG["phrase_edit_submission"] = "Breyta Skil"; +$LANG["phrase_edit_submission_label"] = "Breyta Uppgjöf Label"; +$LANG["phrase_edit_view"] = "Breyta View"; +$LANG["phrase_email_format"] = "Netfang Format"; +$LANG["phrase_email_settings"] = "Netfang Stillingar"; +$LANG["phrase_email_template"] = "Sniðmát"; +$LANG["phrase_email_template_name"] = "Email Template Name"; +$LANG["phrase_error_learn_more"] = "Frekari upplýsingar um þessa villu."; +$LANG["phrase_error_text_intro"] = "Vinsamlegast lagaðu eftirfarandi villa (s) og endursenda:"; +$LANG["phrase_errors_learn_more"] = "Smelltu á villa merkjamál til að læra meira."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Ytri Form"; +$LANG["phrase_external_form_info"] = "Ytri Form Info"; +$LANG["phrase_external_your_own_form"] = "Ytri (eigin mynd þína)"; +$LANG["phrase_field_comments"] = "Field Comments"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Field Options"; +$LANG["phrase_field_size"] = "Field Stærð"; +$LANG["phrase_field_skipped"] = "Field Sleppti"; +$LANG["phrase_field_specific_settings"] = "Field-Specific Settings"; +$LANG["phrase_field_type"] = "Field Tegund"; +$LANG["phrase_field_type_no_validation"] = "Það eru engin staðfesting reglur í boði fyrir þennan reit tegund."; +$LANG["phrase_field_types"] = "Field Tegund"; +$LANG["phrase_field_value"] = "Field Value"; +$LANG["phrase_field_values_to_display_values"] = "Field Values »Sýna Values"; +$LANG["phrase_final_touches_page_6"] = "6. Klára touches"; +$LANG["phrase_finalize_form"] = "Fullgera Form"; +$LANG["phrase_first_name"] = "Fornafn"; +$LANG["phrase_footer_text"] = "Footer Text"; +$LANG["phrase_for_any_form_submission"] = "Fyrir hvaða formi undirgefni"; +$LANG["phrase_for_view_submissions"] = "Aðeins tillögur sem passa í eftirfarandi Skoða (s)"; +$LANG["phrase_forgot_password"] = "Gleymdirðu lykilorðinu þínu?"; +$LANG["phrase_form_already_selected"] = "Form þegar valið"; +$LANG["phrase_form_email_field_b_c"] = "[Mynd reitinn email]:"; +$LANG["phrase_form_email_field_configuration"] = "Form Email Field stillingar"; +$LANG["phrase_form_email_fields"] = "Form Email Fields"; +$LANG["phrase_form_field"] = "Form Field"; +$LANG["phrase_form_field_contents"] = "Form Field Efnisyfirlit"; +$LANG["phrase_form_field_name"] = "Form Field Name"; +$LANG["phrase_form_field_placeholders"] = "Form sviði staðgengla"; +$LANG["phrase_form_fields"] = "Form Fields"; +$LANG["phrase_form_info"] = "Form Information"; +$LANG["phrase_form_info_2"] = "2. Form Information"; +$LANG["phrase_form_list"] = "Form List"; +$LANG["phrase_form_name"] = "Form Nafn"; +$LANG["phrase_form_page"] = "Form Page"; +$LANG["phrase_form_placeholders"] = "Form Placeholders"; +$LANG["phrase_form_submission"] = "Form Skil"; +$LANG["phrase_form_submissions"] = "Form Athugaðu"; +$LANG["phrase_form_type"] = "Form Tegund"; +$LANG["phrase_form_url"] = "Form URL"; +$LANG["phrase_form_urls"] = "Form slóðir"; +$LANG["phrase_forms_assigned_to_any_account"] = "Eyðublöð úthlutað hvaða reikning"; +$LANG["phrase_forms_page_default_message"] = "Eyðublöð síðu sjálfgefið skilaboð"; +$LANG["phrase_ft_installation"] = "Form Tools Installation Script"; +$LANG["phrase_full_width"] = "Full Breidd"; +$LANG["phrase_getting_started"] = "að byrja"; +$LANG["phrase_global_placeholders"] = "Global Placeholders"; +$LANG["phrase_group_name"] = "Hópur Nafn"; +$LANG["phrase_group_options_q"] = "Group valkostur?"; +$LANG["phrase_group_rows"] = "Group raðir"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Highlight Litur"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Sniðmát"; +$LANG["phrase_images_media"] = "Myndir / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Import Option List »"; +$LANG["phrase_input_length"] = "Inntak Spila"; +$LANG["phrase_installation_help"] = "Uppsetning Hjálp"; +$LANG["phrase_internal_form"] = "Innri Form"; +$LANG["phrase_ip_address"] = "Vistfang"; +$LANG["phrase_is_multi_page_form_q"] = "Er þetta multi-síðu formi?"; +$LANG["phrase_label_response_placeholders"] = "Merki / Svar staðgengla"; +$LANG["phrase_large_300px"] = "Stór (300px)"; +$LANG["phrase_large_400px"] = "Stór (400px)"; +$LANG["phrase_last_7_days"] = "Síðustu 7 dagar"; +$LANG["phrase_last_logged_in"] = "Síðast innskráður"; +$LANG["phrase_last_modified"] = "Síðast breytt"; +$LANG["phrase_last_modified_date"] = "Síðast breytt dagsetning"; +$LANG["phrase_last_name"] = "Eftirnafn"; +$LANG["phrase_letters_only"] = "Letters Aðeins"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Takmarka tölvupósti efni á sviði í View"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Innskráning"; +$LANG["phrase_login_as_user"] = "Innskráning sem þessi notandi"; +$LANG["phrase_login_info"] = "Innskráningarupplýsingar"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Username"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Útskrá URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Stillingar"; +$LANG["phrase_manage_client"] = "Stjórna Client"; +$LANG["phrase_manage_client_omit_list"] = "Stjórna Viðskiptavinur sleppt List"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Hámarks lengd"; +$LANG["phrase_max_length_words_chars"] = "- Max lengd (orð / stafir)"; +$LANG["phrase_may_add_submissions"] = "Mátt bæta við Uppgjöf"; +$LANG["phrase_may_copy_submissions"] = "Hægt er að afrita tilmæli"; +$LANG["phrase_may_delete_submissions"] = "Maí eyða Uppgjöf"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Valmynd Nafn"; +$LANG["phrase_menu_type"] = "Valmynd Tegund"; +$LANG["phrase_min_password_length"] = "Lágmark lykilorð Lengd"; +$LANG["phrase_module_description"] = "Module Lýsing"; +$LANG["phrase_module_info"] = "Module Upplýsingar"; +$LANG["phrase_module_nav"] = "Module Nav"; +$LANG["phrase_month_to_date"] = "Mánuður hingað"; +$LANG["phrase_multi_select"] = "Multi-velja"; +$LANG["phrase_multi_select_dropdown"] = "Multi-velja listanum"; +$LANG["phrase_multiple_fields_found"] = "Margar Fields Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nafn / Eftirnafn"; +$LANG["phrase_new_blank_email"] = "New Blank Email"; +$LANG["phrase_new_blank_option_list"] = "New Blank Valkostur List"; +$LANG["phrase_new_blank_view"] = "Nýr Blank View"; +$LANG["phrase_new_ft_installation"] = "New Form Tools uppsetning"; +$LANG["phrase_new_option_list"] = "Nýr valkostur List"; +$LANG["phrase_new_password"] = "Nýtt lykilorð"; +$LANG["phrase_new_password_reenter"] = "Nýtt lykilorð (vinsamlegast sláðu það inn aftur)"; +$LANG["phrase_new_view"] = "Ný sýn"; +$LANG["phrase_new_view_all_fields"] = "New View - Allir reitir"; +$LANG["phrase_next_client"] = "næsta viðskiptavin »"; +$LANG["phrase_next_field"] = "næsta reit »"; +$LANG["phrase_next_form"] = "Næsta mynd »"; +$LANG["phrase_next_view"] = "Næsta Skoða »"; +$LANG["phrase_no_clients"] = "Engir viðskiptavinir"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Engin hliðrun"; +$LANG["phrase_no_option_lists_available"] = "Engar Valkostir listum í boði."; +$LANG["phrase_no_views"] = "Nei Views"; +$LANG["phrase_no_views_with_filters_p"] = "(No Views með síur skilgreint)"; +$LANG["phrase_none_not_recommended"] = "Engin (ekki mælt með)"; +$LANG["phrase_not_assigned_to_option_list"] = "Þessi reitur er ekki úthlutað að valkosti List."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Er ekki jafnt"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "NOT Like"; +$LANG["phrase_not_visible_to_client"] = "(ekki sýnilegt til viðskiptavinar)"; +$LANG["phrase_num_clients_per_page"] = "Num Viðskiptavinir Per Page"; +$LANG["phrase_num_emails_per_page"] = "Num póst Per Page"; +$LANG["phrase_num_fields"] = "Fjöldi Fields"; +$LANG["phrase_num_forms_per_page"] = "Num Forms Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Matseðlar Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Modules Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "NUM Valkostur Lists á hverri síðu"; +$LANG["phrase_num_options"] = "NUM Options"; +$LANG["phrase_num_rows"] = "NUM Rows"; +$LANG["phrase_numbers_only"] = "Numbers Aðeins"; +$LANG["phrase_often_localhost"] = "(oft "localhost")"; +$LANG["phrase_on_form_submission"] = "Á submission form"; +$LANG["phrase_one_char_number"] = "Að minnsta kosti einn staf er númer (0-9)"; +$LANG["phrase_one_char_upper"] = "Að minnsta kosti einn staf er hástafi"; +$LANG["phrase_one_special_char"] = "Að minnsta kosti einn af {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(einungis tilteknum viðskiptavinir hafa aðgang að)"; +$LANG["phrase_open_form_in_dialog"] = "Opna mynd í valmynd gluggi"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Open þetta form í a nýr flipi / glugga"; +$LANG["phrase_option_list"] = "Valkostur List"; +$LANG["phrase_option_list_name"] = "Valkostur List Nafn"; +$LANG["phrase_option_list_or_contents"] = "Valkostur Listi / Contents"; +$LANG["phrase_option_lists"] = "Valkostur Lists"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Page Titles"; +$LANG["phrase_pass_on"] = "Miðla"; +$LANG["phrase_password_min"] = "Það verður að vera að minnsta kosti {\$length} stafi."; +$LANG["phrase_password_one_number"] = "Það verður að innihalda að minnsta kosti einn tölustaf (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Það verður að innihalda að minnsta kosti einn hástafi bréf."; +$LANG["phrase_password_requirements_c"] = "Lykilorð kröfur:"; +$LANG["phrase_password_reset"] = "Endurstilla lykilorð"; +$LANG["phrase_password_special_char"] = "Það verður að innihalda að minnsta kosti einn af eftirfarandi stafi: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Heimildir / Aðrar stillingar"; +$LANG["phrase_permitted_file_types"] = "Heimilt að skrá tegund"; +$LANG["phrase_phone_number"] = "Símanúmer"; +$LANG["phrase_phone_number_format"] = "Símanúmer Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max leyfa skrá senda stærð:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Vinsamlegast Staðfesta"; +$LANG["phrase_please_enter_license_key"] = "Vinsamlega sláðu inn leyfisveitandi lykill"; +$LANG["phrase_please_select"] = "Veljið"; +$LANG["phrase_please_select_form"] = "Vinsamlegast veldu mynd"; +$LANG["phrase_prev_client"] = "«Fyrri viðskiptavinur"; +$LANG["phrase_prev_form"] = "«Fyrri mynd"; +$LANG["phrase_prevent_password_reuse"] = "Koma í veg fyrir endurnotkun # síðustu lykilorð"; +$LANG["phrase_previous_field"] = "«Fyrri sviði"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "«Fyrri View"; +$LANG["phrase_program_name"] = "Program Name"; +$LANG["phrase_public_form_omit_list"] = "Almenn Form sleppt List"; +$LANG["phrase_public_view_omit_list"] = "Almenn View sleppt List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Vandamál kom upp með eftirfarandi fyrirspurn:"; +$LANG["phrase_radio_buttons"] = "Valhnappa"; +$LANG["phrase_random_form_submission"] = "Random mynd uppgjöf"; +$LANG["phrase_re_enter_password"] = "Sláðu lykilorð"; +$LANG["phrase_recipient_type"] = "Viðtakandi tegund"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Refresh List"; +$LANG["phrase_refresh_module_list"] = "Uppfæra Module List"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Uppfæra Theme List"; +$LANG["phrase_register_new_email"] = "Register New Email"; +$LANG["phrase_remaining_characters"] = "Stafir"; +$LANG["phrase_remaining_words"] = "eftir orðum"; +$LANG["phrase_remove_tabs"] = "Fjarlægja Tabs"; +$LANG["phrase_required_password_chars"] = "Þurfa lykilorð stafir"; +$LANG["phrase_resend_test_submission"] = "Endursenda Próf Skil"; +$LANG["phrase_return_form_list"] = "Return to Form List"; +$LANG["phrase_row_selected"] = "{\$num_rows} röð valið"; +$LANG["phrase_rows_selected"] = "{\$num_rows} línur valdar"; +$LANG["phrase_sample_data"] = "Dæmi Data"; +$LANG["phrase_save_changes"] = "Vista breytingar"; +$LANG["phrase_search_keyword"] = "Leitarorð"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Select All {\$numresults} Niðurstöður"; +$LANG["phrase_select_all_on_page"] = "Select All á síðu"; +$LANG["phrase_select_date"] = "Veldu dagsetningu"; +$LANG["phrase_select_field"] = "Veldu Field"; +$LANG["phrase_select_swatch"] = "Veldu swatch"; +$LANG["phrase_selected_clients"] = "Valin Viðskiptavinir"; +$LANG["phrase_selected_views"] = "Valin Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Senda Test Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Tími"; +$LANG["phrase_setting_value"] = "Setting Value"; +$LANG["phrase_setup_options"] = "Skipulag Options"; +$LANG["phrase_show_all"] = "Sýna allar"; +$LANG["phrase_show_form"] = "Sýna Form"; +$LANG["phrase_size_large"] = "Stór (texti)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 stafir)"; +$LANG["phrase_size_small"] = "Lítil (<= 20 stafir)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 stafir)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Skip Step"; +$LANG["phrase_small_100px"] = "Small (100px)"; +$LANG["phrase_small_80px"] = "Small (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fylla"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fylltu út reitina Frá:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fylltu User Documentation »"; +$LANG["phrase_sort_as"] = "Raða Eins"; +$LANG["phrase_special_fields"] = "Sérstök Fields"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Standard síur »"; +$LANG["phrase_step_1"] = "Skref 1"; +$LANG["phrase_step_2"] = "Skref 2"; +$LANG["phrase_step_3"] = "Skref 3"; +$LANG["phrase_step_4"] = "Skref 4"; +$LANG["phrase_step_5"] = "Skref 5"; +$LANG["phrase_step_6"] = "Skref 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tags í uppgjöf mynd"; +$LANG["phrase_subject_line"] = "Efnislínuna"; +$LANG["phrase_submission_date"] = "Skil dagsetningu"; +$LANG["phrase_submission_id"] = "Skil ID"; +$LANG["phrase_submission_made"] = "Skil gerð: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Skil Tegund"; +$LANG["phrase_submissions_per_page"] = "Athugaðu á síðu"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Þú getur ekki bætt staðfestingu til kerfi sviðum."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test möppu Permissions"; +$LANG["phrase_test_submission"] = "Próf Skil"; +$LANG["phrase_test_submission_3"] = "3. Próf Skil"; +$LANG["phrase_test_submission_received"] = "Próf Skil Received"; +$LANG["phrase_text_and_html"] = "Text / HTML"; +$LANG["phrase_text_email"] = "Texti Email"; +$LANG["phrase_text_template"] = "Text Template"; +$LANG["phrase_the_previous_month"] = "Fyrri mánuður"; +$LANG["phrase_theme_description"] = "Þema Lýsing"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Villa Tegund:"; +$LANG["phrase_unselect_all"] = "Afmerkja allar"; +$LANG["phrase_update_accounts"] = "Uppfæra reikningar"; +$LANG["phrase_update_email_template"] = "Uppfæra Email Template"; +$LANG["phrase_update_field"] = "Uppfæra Field"; +$LANG["phrase_update_order"] = "Uppfæra Order"; +$LANG["phrase_update_view"] = "Uppfæra View"; +$LANG["phrase_upload_file"] = "Innhlaða"; +$LANG["phrase_upload_files"] = "Hlaða inn skrá"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Hlaða mappa gangstígur"; +$LANG["phrase_upload_folder_url"] = "Hlaða möppu URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Nota sjálfgefið gildi?"; +$LANG["phrase_used_by_num_form_fields"] = "Notað af # Form Fields"; +$LANG["phrase_uses_swatches"] = "Notar Swatches"; +$LANG["phrase_valid_email"] = "Gildir Email"; +$LANG["phrase_validation_error"] = "Mat Villa"; +$LANG["phrase_validation_rule"] = "Mat Regla"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Skoða Group"; +$LANG["phrase_view_id"] = "Skoða ID"; +$LANG["phrase_view_name"] = "Skoða Nafn"; +$LANG["phrase_view_placeholders"] = "Skoða staðgengla"; +$LANG["phrase_view_submissions"] = "Skoða Athugaðu"; +$LANG["phrase_view_uploaded_files"] = "View hlaðið skrá"; +$LANG["phrase_viewing_range"] = "[skoða {\$startnum} á {\$endnum}]"; +$LANG["phrase_when_sent"] = "Þegar send"; +$LANG["phrase_when_submission_is_deleted"] = "Þegar uppgjöf er eytt"; +$LANG["phrase_when_submission_is_edited"] = "Þegar uppgjöf er breytt"; +$LANG["phrase_who_can_access"] = "Hver hefur aðgang að?"; +$LANG["phrase_word_limit_p"] = "orð takmörk."; +$LANG["phrase_year_to_date"] = "Frá áramótum"; +$LANG["phrase_yes_for_all_views"] = "Já, fyrir alla Views"; +$LANG["phrase_yes_for_specific_views"] = "Já, fyrir tilteknar Views"; +$LANG["phrase_your_account"] = "Account"; +$LANG["phrase_your_email"] = "Netfang þitt"; +$LANG["phrase_your_email_address"] = "Netfangið þitt"; +$LANG["processing_form_disabled"] = "Því miður hefur þessi mynd verið gerð óvirk."; +$LANG["processing_form_incomplete"] = "Því miður, þessi mynd virðist ekki vera að fullu komið á fót innan Form Tools. Líklegasta orsök af this vandamál er að þú fjarlægja the "form_tools_initialize_form" falinn mynd sviði, en ekki að ljúka öllum skrefum á "Bæta við Form" aðferð.

    Skráðu þig inn og skoða mynd stillingar."; +$LANG["processing_init_complete"] = "Þakka þér fyrir! Próf uppgjöf þín hefur verið sett með góðum árangri. Vinsamlega farðu til eyðublað Verkfæri stjórnsvæði og smelltu á "Refresh" hnappinn neðst á Bæta við eyðublað skref 3 til að klára að setja upp mynd þína."; +$LANG["processing_invalid_form_id"] = "Því miður, það virðist ekki vera gilt mynd auðkenni."; +$LANG["processing_no_form_id"] = "process.php krefst formi auðkenni fyrir vinnslu. Gakktu úr skugga um að geyma mynd þín er falin reit með nafninu "form_tools_form_id" sem er farið með eyðublaðið kt."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Tools er ekki að ákvarða hvar redirect þegar þeir mistakast til að slá inn Kapteinn almennilega. Vinsamlegast framhjá í falinn sviði með nafni form_tools_form_url sem inniheldur slóð á mynd."; +$LANG["processing_no_post_vars"] = "process.php er ekki að fá nein gögn. Ath: Þessi handrit geta ekki verið hlaðinn beint í vafranum þínum.
    Gakktu mynd þína viss um er að senda með pósti."; +$LANG["processing_no_redirect_url"] = "The uppgjöf var unnið rétt, en þú hefur ekki skilgreint redirect URL fyrir þessa mynd! Breyta mynd þína í formi Verkfæri HÍ og bæta redirect URL."; +$LANG["special_language"] = "Icelandic"; +$LANG["special_language_locale"] = "Icelandic"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Allar nýjar viðskiptavinareikninga verður til með stillingar og leyfi skilgreint hér að neðan. Til að hunsa stillingu fyrir tiltekinn viðskiptavin, breyta þjónustustjórareikning og heimsækja Settings flipann þeirra."; +$LANG["text_add_form_choose_integration_method"] = "Valið hvaða aðferð sem þú vilt nota til að samþætta mynda með Tools Form."; +$LANG["text_add_form_code_submission_benefits"] = "Þessi aðferð notar Form Tools API , í helstu Form Tools handriti. API afla a tala af gagnlegum aðgerðum til að gera starfið að samþætta mynd með Tools Form eins einfalt og mögulegt er. Það eru engar takmarkanir á því hvernig mynd getur skilað þegar þú notar API. Þú getur sent inn efni í einu, eða síðu með síðu, þú getur bætt við þinn eiga siðvenja framreiðslumaður-hlið löggilding, CAPTCHA myndir, þú getur valið um að senda upplýsingarnar núna, en bara segja það að sýna uppgjöf í Form Tools HÍ síðar (sjá gengið Uppgjöf kafla í API hjálpar gögnum)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Til að senda inn mynd gögn í gegnum PHP verður mynd þín að vera staðsett á sama vefsvæði og þetta eyðublað Verkfæri uppsetningu. Í öðru lagi, fyrir utan tæknileg og nýliði Form Tools notendur, þessi aðferð geta vera a lítill erfið í fyrstu. En það er nóg af gögnum til að hjálpa þér út, þar á meðal tvær einfaldar leiðbeiningar til að samþætta einstaklings-og multi-síðu gerðir þína (þau eru tengd á seinna þrep)."; +$LANG["text_add_form_direct_submission_benefits"] = "Þetta er einfaldasta leiðin til að senda mynd til Form Tools. Það krefst ekki allir þekkingu á PHP og þurfa aðeins mjög lítill breyting á mynd þinni. Það er frábært fyrir smærri form sem þú vilt bara senda þær upplýsingar að gagnagrunninum þá utanáskrift á notandi til að "thankyou" síðunni."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Þessi undirgefni aðferð er mjög einfalt í notkun, en ekki veita mun stjórna til flóknari form. Multi-síðu eyðublöð eða form sem þarfnast framreiðslumaður-hlið löggilding er betur fallið til seinni aðferð: að senda í gegnum formið Verkfæri API."; +$LANG["text_add_form_field_types1"] = "Næstum búið! Þessi síða reynir að finna öll mynda högum þínum og ákveða sviði gerðir þeirra. Smelltu á Smart Fylltu hnappur á the réttur til að byrja. Þú verður einungis leyft að halda áfram þegar öllum aðgerðum hafa verið leyst - málefni sem þarfnast athygli þín birtast á "Action Needed " dálknum."; +$LANG["text_add_form_field_types2"] = "Ef eyðublaðið er ekki í HTML, smellt á Skip Step hnappinn til að halda áfram. Þetta getur allt verið stillt síðar."; +$LANG["text_add_form_field_types3"] = "Þetta endurhleðslu innihald mynd þín (s). Ath: Þetta mun skrifa yfir allar breytingar sem þú hefur gert á þessari síðu."; +$LANG["text_add_form_field_types4"] = "Ef þú lendir í vandræðum, smelltu hér til að sleppa þessu skrefi. Allir óleyst reitir eru sett til að nota sjálfgefin gildi. Þú getur sérsniðið þessum sviðum síðar."; +$LANG["text_add_form_field_types_manual_upload"] = "Ef þú hefur ekki getað Smart Fylltu högum þínum, getur þú vilt prófa aðra lausn: Hlaða upp afrit af mynd í reitina hér fyrir neðan."; +$LANG["text_add_form_field_types_manual_upload2"] = "Ath: Ekki senda inn hrátt PHP síður (eða öðrum miðlara-hlið númer) - bara senda HTML útgáfur. Til að fá þetta, skoða og vista síðu vefskoðaranum."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Það voru margar sviðum gæti ekki hægt að finna í formi síðu sem þú tilgreindir. Þetta er að mestu leyti líklega orsakast af einu af eftirfarandi:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Þú færð eitt eða fleiri af formi slóðir af multi-síðu formi þitt rangt inn."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Ein eða fleiri síður á mynd eru lykilorð og handritið gat ekki opnað síðuna."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Þú slóst rangt mynd slóðina þína."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Smelltu hér til að fara aftur Information Form síðunni til að athuga stillingarnar."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Þú breyttri mynd (ir) á eftir að gera próf uppgjöf"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Smelltu hér til að setja í gegnum aðra próf uppgjöf."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Mynd er varið með lykilorði og handritið gat ekki opnað síðuna."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Í öðrum flipa / glugga þessa vafra skaltu skrá þig inn mynd þína þá smellirðu á Refresh Page hnappinn hér fyrir neðan til að reyna að koma aftur finna reitina."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Ef ekkert af ofangreindum lausnum vinnu getur þú einnig vilja til reyna höndunum senda eyðublöð fyrir vinnslu ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Það voru margar sviðum gæti ekki hægt að finna í formi síður sem þú tilgreindir. Þetta er að mestu leyti líklega af völdum einn af þessum:"; +$LANG["text_add_form_help_link"] = "Ef þú keyrir inn í vandræði á þessum skrefum, reyna að lesa út notandi heimildasöfnun ."; +$LANG["text_add_form_step_1_text_1"] = "Eftirfarandi síður leiða þig í gegnum skrefin til að stilla Form Tól til að geyma mynd uppgjöf þinni. Áður en haldið er áfram skaltu athuga að:"; +$LANG["text_add_form_step_1_text_2"] = "mynd hefur verið búin til og hún er aðgengileg á vefslóð (localhost er fínn)"; +$LANG["text_add_form_step_1_text_3"] = "er hægt að breyta mynd þína"; +$LANG["text_add_form_step_2_para_2"] = "Opna mynd þína í ritstjóri eigin vali og breyta mynd merkimiði til eftirfarandi, þar á meðal tvö falinn reitina."; +$LANG["text_add_form_step_2_para_3"] = "Næst opna mynd þín í a vefur flettitæki. Fylltu út í hverju sviði og senda hana. Eftir að senda inn, ættirðu að sjá tilkynningu skilaboð. Þegar þessi skilaboð birtist aftur á þessa síðu og smelltu á Refresh hnappinn hér fyrir neðan. Þegar þessu ferli er lokið, munt þú sjá að halda áfram hnappinn hér fyrir neðan tekur þú á næsta skref."; +$LANG["text_add_form_step_2_para_6"] = "Í submission form þínum eru eftirfarandi gildi. Þeir geta sett beint með PHP eða staðist eftir í gegnum formið sjálft. Hér fyrir neðan eru dæmi um hvert. Í (\$ varname) er Hash (eða associative array) allra submission form upplýsingar - þetta er yfirleitt (\$ postvar) eða (\$ sessionvar) breytu, en það getur verið siðvenja innbyggður."; +$LANG["text_add_form_step_2_text_2"] = "Sláðu inn vefslóð þinn "Þakka " síðunni hér. Þetta er þar sem þú vilt að fólk til að beina til eftir að mynd hefur verið lögð fram."; +$LANG["text_add_form_step_3_para_1"] = "Þessari síðu er listi yfir alla reiti í að senda mynd þína. Vinsamlegast athuga hvern reit og fjarlægðu þau sem þú þarft ekki að geyma fyrir hverja uppgjöf. Ef þú eyðir gilt sviði eftir slys, eða vilt breyta upplýsingum sem eru geymdar við mynd skaltu fara til baka á fyrri síðu til að senda nýtt próf uppgjöf."; +$LANG["text_add_form_step_3_para_2"] = "Ath: Ef þú ætlar að senda mörg gildi um reitina eða mörgum að velja reitinn tryggja reit nafn þitt lýkur með [] stafir (sjá notendur gögnum fyrir frekari upplýsingar)."; +$LANG["text_add_form_step_3_text_1"] = "Hér er þar sem gaman byrjar! Á þessum tímapunkti, Form Tools er að bíða eftir að prófa senda frá mynd þinni. Það mun nota þetta eyðublað leggja til að vita hvaða upplýsingar ættu að vera geymdar í gagnagrunni."; +$LANG["text_add_form_step_3_text_2"] = "með því að benda mynd til Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "því að nota eyðublaðið Tól API"; +$LANG["text_add_form_step_3_text_4"] = "Til að hjálpa samþætta mynd þína, ráðleggjum við þér að lesa eitt af eftirfarandi einkatími:"; +$LANG["text_add_form_step_3_text_5"] = "Þeir útskýra hvernig á að setja upp mynd þína í undirbúningi fyrir próf uppgjöf, og innihalda aðrar upplýsingar sem gætu hjálpað. Línan PHP þú þarft er:"; +$LANG["text_add_form_step_3_text_6"] = "Þetta tryggir að gögn er raunverulega send til Form Tools. Þegar þú hefur sett í uppgjöf próf skaltu smella á hnappinn hér fyrir neðan."; +$LANG["text_add_form_step_3_text_7"] = "Á síðunni áður en á síðustu "þakka þér" síðu, vera viss um að bæta við eftirfarandi breytu í \$ params breytu:"; +$LANG["text_add_form_step_5_para_1"] = "Gagnagrunnurinn hefur verið sett upp fyrir þessa mynd og mynd hefur verið virkjaður til notkunar. Ef að þú sendir eftir bendir mynd til process.php skaltu fara aftur að mynda og fjarlægja eftirfarandi falinn reitinn:"; +$LANG["text_add_form_step_5_para_2"] = "Þá fara á "þakka þér" síðunni til að tæma fundur. Þegar þessu er lokið, mun allur nýr innsendingar mynd vera meðhöndlaðar og geymdar fyrir Form Tools. Reyndu að gera er að senda eða tvær til að staðfesta upplýsingar eru allar að hlaða rétt."; +$LANG["text_add_form_step_5_para_3"] = "Ef þú vilt fínstilla eyðublað fyrir valkosti eins og Auto-póst, að bæta við auka mynd sviðum sviði, eða sérsníða á sviði mynd gerðir, þú getur breytt mynd þinni hvenær sem er."; +$LANG["text_add_form_step_5_para_4"] = "Þar sem formið á inniheldur skrá hlaða sviðum, þarftu að stilla hvern reit til að tilgreina Hlaða inn skrá mappa, hvaða skrár eru leyfðar og. Þetta má finna á Sýna flipi sem breyta formi síðunni."; +$LANG["text_add_form_step_5_para_5"] = "Ef senda var send API, breyta ft_api_init_form_page línu á fyrstu síðu á mynd til að:"; +$LANG["text_add_submission_button"] = "The Bæta Uppgjöf hnappur birtist aðeins fyrir Views sem hafa "May bæta við uppgjöf " valkostur stillt á "Já "."; +$LANG["text_admin_email_placeholder_info"] = "Þetta netfang formi Verkfæri stjórnandi, skilgreint í stillingum reiknings þíns. Þessi eini niðurstöður netfang, svo ef þú vilt nota sem HTML hlekkur, þú vilja þörf til að sett það í <a> merkimiði, eins og svo:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Einnig er tenging sjálfgefna síðu þema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Fyrst skaltu velja mynd tegund."; +$LANG["text_client_form_page"] = "Þessari síðu er listi yfir allar umsóknir og Skoðað úthlutað til þessa þjónustustjóra. Ábending: Til að þeim að sjá uppgjöf eyðublað er, þeir þurfa að vera úthlutað að minnsta kosti einn View."; +$LANG["text_client_map_filters_desc1"] = "Viðskiptavinur Kort filters láta þig takmarka uppgjöf sem birtast á þessari Skoða kortleggja gildi í formi reit til gildi í reikning þjónustustjóra."; +$LANG["text_client_no_forms"] = "Þú ert ekki með nein eyðublöð boði til skoðunar."; +$LANG["text_client_welcome"] = "Velkomin! Þetta kerfi geymir allar upplýsingar Sent inn af vefsvæði þínu. Til að skoða uppgjöf fyrir tiltekna mynd bara smella á Skoða tengil eða sjá leftmost siglingar Matseðill fyrir aðra valkosti."; +$LANG["text_config_file_created"] = "Config.php skrá hefur verið búið til."; +$LANG["text_config_file_not_created"] = "Við gátum ekki búið til config.php skrána þína. Þú þarft að búa til skrá handvirkt."; +$LANG["text_config_file_not_created_instructions"] = "Afrita og líma efni úr kafla hér fyrir neðan inn í a skrá gestur config.php og senda það í gegnum FTP til eyðublað Tools / Global möppu (í möppu sem einnig eru nokkrar aðrar skrár og möppur, eina skrá gestur library.php)."; +$LANG["text_confirm_delete_form"] = "Já, ég vil eyða þessu formi"; +$LANG["text_create_admin_account"] = "Nú við erum að fara að stofna reikning stjórnandahandbókinni. Þetta er notað til að stjórna öllum þáttum Form Verkfæri, svo sem að bæta form og búa viðskiptavinareikninga."; +$LANG["text_create_new_client_account"] = "Notaðu eyðublaðið hér fyrir neðan til að stofna nýjan reikning þjónustustjóra. Allir reitir eru nauðsynleg."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "Sjá PHP {\$datefunctionlink} virka fyrir stílsnið"; +$LANG["text_default_file_settings_page"] = "Þessari síðu skilgreinir Innhlaða stillingar þínar Form Verkfæri uppsetningu. Þessar reglur gilda um allar skrár hlaðið gegnum Form Tools, nema sérstaklega overridden fyrir einstaka mynd sviði. Ath: Ef þú breytir senda möppu eftir að skrá hefur verið hlaðið upp, munu þau verða sjálfkrafa færð í nýja möppu."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Áður en haldið er áfram, þarftu að uppfæra / þema á / default / Cache möppu til að leyfa fullt lesa og skrifa leyfi. Þegar þetta er gert, þessi skilaboð munu hverfa og þú getur sett á handriti."; +$LANG["text_default_values_in_view"] = "Þessi hluti er valfrjáls. Allar tillögur til með þessu View mun innihalda sjálfgefið gildi sem hér eru tilgreind."; +$LANG["text_delete_all_forms"] = "Mig langar að eyða öllum skrám sem var hlaðið upp í gegnum þetta form"; +$LANG["text_delete_form_warning"] = "Ertu viss um að þú viljir eyða þessari mynd? This action cannot be undone. Öll gögn verða varanlega!"; +$LANG["text_edit_admin_menu_page"] = "Þú getur breytt í valmyndinni hér fyrir neðan. Til að tryggja að alltaf hafa aðgang að öllum virkni í boði innan Form Tools Eftirfarandi síður eru nauðsynleg: Form, Viðskiptavinir, Reikningurinn þinn, Modules, Stillingar og Útskrá."; +$LANG["text_edit_client_menu_page"] = "Þetta leyfir þér að sérsníða vinstri siglingar dálkinn fyrir hvern notanda. Þú getur búið til eins margar valmyndir viðskiptavinur eins og þú vilt og tilgreina hvaða reikningur að einn af þeim. Sjálfgefin eru tvær valmyndir: einn fyrir þig, sem stjórnandi, og einn fyrir alla viðskiptavinareikninga. The stjórnandi reikningur getur verið breytt, en ekki eytt."; +$LANG["text_edit_tab_summary"] = "Ef þú vilt hóp sviðum við mynd inn tabs, bara slá inn flipann nöfn hér að neðan. Þegar þú ert búinn að velja viðeigandi flipa fyrir hvern reit hóp í Fields flipann ."; +$LANG["text_edit_view_list_page"] = "Þessi flipi eftirlit sem svið birtast eins og dálka um skráningu Uppgjöf síðu, og nokkrar fleiri stillingar fyrir þessum sviðum. Ath: Við mælum með að þú bætir ekki fleiri en 4 eða 5 af mikilvægustu sviðum í View."; +$LANG["text_email_settings_intro"] = "Þessi síða gerir þér kleift að bera kennsl á hvaða mynd sviðum birgðir tölvupóst og samsvarandi nöfn þeirra. Þegar þú skilgreina þá hér, þú getur notað þá í þinn email templates og viðtakendur. Þessi hluti er algjörlega valfrjáls."; +$LANG["text_email_tab_summary"] = "Þetta leyfir þér að búa til einhver fjöldi af emails til að senda þegar mynd er skilað, og annar gikkur."; +$LANG["text_email_template_tab"] = "Þetta leyfir þér að ákveða hvaða efni birtist í tölvupósti. Ef þú vilt senda tölvupóstinn sem aðeins texta eða email, bara slá inn gildi fyrir hluti. Ef þú slærð inn gildi fyrir bæði verður tölvupóstur sendur á báðum sniði."; +$LANG["text_email_template_text_1"] = "Það hefur verið að senda í gegnum mynd þína, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Það hefur verið að senda í gegnum mynd þína, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Takk fyrir að senda inn!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Villuboð til að sýna ef sviði mistakast the löggilding"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Ytri eyðublöð eru tegundir sem þegar eru fyrir hendi á vefsvæði þínu, eða einhvers staðar á vefnum. Veldu þennan valkost ef þú ert með eigin mynd, sem þú vilt að samþætta við Tools Form."; +$LANG["text_fields_tab_summary"] = "Þessi síða lista yfir alla reiti mynd þinni. Til að stjórna hvernig þeir birtast þegar þú vafrar gögn, sjá Views flipann . Eyðing reit á þessari síðu mun eyða því úr öllum skráningar, svo vinsamlegast vera varkár!"; +$LANG["text_file_extension_info"] = "Sláðu inn skrá eftirnafn aðskilin með kommum (td JPG, GIF, PNG) eða skildu eftir autt til að leyfa hvaða skrá tegund."; +$LANG["text_file_field_placeholders_info"] = "Skrá sviðum hefur tvö sérstök placeholders: FILEURL og FILENAME. FILEURL er fulla vefslóð til að skrá, svo er hægt að tengja beint við hann í tölvupósti þínum, filename er bara að skrá nafn."; +$LANG["text_filters_page"] = "Aðeins þeir uppgjöf sem uppfyllir reglur sem þú skilgreinir hér fyrir neðan mun birtast í þessari skoðun."; +$LANG["text_filters_tips"] = "Fyrir heilræði um hvernig á að nota uppgjöf síur, sjá User Documentation."; +$LANG["text_forgot_password"] = "Ekkert vandamál. Sláðu bara inn notandanafnið þitt hér fyrir neðan og tenging þínar verða sendar á netfang þitt á skrá. Ef þú hefur gleymt notandanafninu þínu, hafðu samband við kerfisstjóra vefsvæðisins á {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Þessi mynd inniheldur eina eða fleiri skrár hlaða reitir:"; +$LANG["text_form_placeholder_info"] = "Eftirfarandi staðgengla má nota í hvaða tölvupósti sniðmát og tungumál tákn sviði, óháð hvaða View the email sniðmát er úthlutað. Spurningin staðgengla eru sérstakt eyðublað um ræðir, en SVAR staðgengla eru svör við hverri spurningu."; +$LANG["text_form_submission_date_placeholder"] = "Dagsetningin þegar uppgjöf var gerð."; +$LANG["text_form_tools_form_url"] = "The fullur URL af the mynd. Þetta hefur aðeins gildi fyrir Ytri form."; +$LANG["text_form_tools_login_url"] = "The tenging slóð fyrir Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Ath: þetta form hefur nú Stjórnandi aðgang gerð, svo enginn viðskiptavinur reikningur vilja vera fær til sjá þessa View."; +$LANG["text_form_view_permission_info_private"] = "Ath: þetta form hefur nú einka aðgang gerð þannig að opinber og persónulegur valkostur hér verður takmörkuð við það hlutmengi viðskiptavina."; +$LANG["text_ft_installed"] = "Til hamingju, Form Verkfæri hefur verið sett upp!"; +$LANG["text_global_placeholder_info"] = "Þessi placeholders má nota í hvaða sniðmát og hvaða mynd."; +$LANG["text_group_name_explanation"] = "Fyrir reiti bætt í gegnum Bæta Form ferli, þetta gildi er áfyllt að birta texta á hvaða sviði notar gildið. Þú gætir viljað breyta því til betri einkenna efni."; +$LANG["text_install_create_config_file"] = "Form Tools birgðir miðlara og gagnasafn stillingar í skrá sem kallast config.php, fundust í / á heimsvísu þinn / mappa. Smelltu á "Create File" hnappinn til að búa til skrána á vefþjóninum þínum."; +$LANG["text_install_create_database_tables"] = "Nú við erum að fara að búa til form Verkfæri gagnasafn matskeið. Þetta skref þarf gagnagrunninum sjálft að hafa verið búin til. Ef þú ert ekki viss um hvernig á að gera þetta, skaltu hafa samband við hýsingaraðilann þinn."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" yfirleitt þýðir að hostname sem þú gafst upp er ekki rétt. Kannski reyna að stilla þetta á "localhost" - þetta er algeng leið til að vísa til "heimamaður" gagnagrunnur á vefþjóni."; +$LANG["text_install_db_tables_error_tip_2"] = ""Get ekki tengst við staðbundin MySQL miðlara gegnum socket" þýðir gagnagrunninum hostname sviði er aftur rangt."; +$LANG["text_install_db_tables_error_tip_3"] = ""Aðgangur neitun fyrir notandi:" þýðir að það er vandamál með notandanafn / lykilorð samsetningu."; +$LANG["text_install_db_tables_error_tip_4"] = ""Aðgangur neitun fyrir notandi: ... gagnagrunni ..." þýðir að þótt notendanafn þitt og lykilorð sem þú staðar er rétt, það var ófær til tengja til að sérstakur gagnagrunnur með þessi reikningur. Þetta getur þýtt að annað hvort gagnasafn nafn þitt er rangt, eða að þessi notandi sé ekki tengd við þessi gagnasafn."; +$LANG["text_install_email_content_text"] = "Það er nóg af fjármagni á heimasíðu okkar til að hjálpa þér að byrja, þ.mt online skjöl okkar (https://docs.formtools.org) og námskeið (https://docs.formtools.org/tutorials). Ef þú finnur að þú setur eða hefur spurningu skaltu spyrja spurningu um github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Því miður, Form Tools vilja ekki vera fær til að keyra á vefþjóninum þínum. Vinsamlegast smelltu hér til að lágmarkskröfur."; +$LANG["text_install_system_check"] = "Þessi síða keyrir nokkrar prófanir á kerfinu til að tryggja að það fær að hlaupa Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Innri eyðublöð eru aðeins innan Tools Form - ekki annars staðar á síðuna þína. Aðeins Form Verkfæri notandi reikningur vilja hafa aðgang að mynda. Veldu þennan valkost ef þú ert ekki með núverandi mynd."; +$LANG["text_internal_form_intro"] = "Notaðu formið hér fyrir neðan til að búa til nýjan innri mynd. Allar stillingar, þ.mt fjöldi og innihald formi sviðum sem hægt er að breyta og stilla síðar."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Til að skrá þig inn og nota eyðublað Tools, þú þarf að hafa javascript virkt í vafranum þínum. Vinsamlegast gera það núna, og smellur hressa í vafranum þínum."; +$LANG["text_last_modified_date_explanation_c"] = "Í síðasta tíma þessa uppgjöf var breytt. Fyrir nýja submissions, this er the sami eins og:"; +$LANG["text_limit_email_content_desc"] = "Þessi valkostur virkar aðeins fyrir HTML og texta efni búin til með Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(aðeins lista Views með einu eða fleiri síur skilgreint)"; +$LANG["text_log_in_to_ft"] = "Skráðu þig inn til að mynda Tools"; +$LANG["text_login"] = "Skráðu þig inn hér fyrir neðan til að opna (\$ program_name) Administration Panel. Ef þú hefur gleymt lykilorðinu þínu, smelltu hér."; +$LANG["text_login_info"] = "Þegar beiðni, hér er notandanafn þitt."; +$LANG["text_name_of_form"] = "Heiti á mynd."; +$LANG["text_no_clients"] = "Það eru engar viðskiptavini í gagnagrunninum. Til að bæta við nýjum viðskiptavinur reikning skaltu smella á Bæta við viðskiptavinar hnappinn hér fyrir neðan."; +$LANG["text_no_clients_found"] = "Engir viðskiptavinir fundust. Prófaðu að breikka leit þína."; +$LANG["text_no_fields_in_view"] = "Þessi skoðun hefur ekki allir reitir í henni. Smelltu á tengilinn hér að neðan."; +$LANG["text_no_forms"] = "Það eru engar myndar í gagnagrunninum. Til að bæta við nýju mynd skaltu smella á Bæta við Form hnappinn hér fyrir neðan."; +$LANG["text_no_forms_found"] = "Engin eyðublöð fundust."; +$LANG["text_no_forms_found_search"] = "Engin eyðublöð fundust. Prófaðu að víkka leitarskilyrði."; +$LANG["text_no_modules_found"] = "Engar modules fundust. Prófaðu að breikka leit þína."; +$LANG["text_no_recipients_added"] = "Engar viðtakandi hefur verið bætt við."; +$LANG["text_no_search_results"] = "Það eru engar niðurstöður með þessu leitarskilyrði / View."; +$LANG["text_no_submissions_found"] = "Því miður var ekki innsendingar fundust."; +$LANG["text_no_themes"] = "Þú ert ekki með neina þemu skilgreind. Smelltu á hnappinn hér fyrir neðan til að hressa þema listanum þínum, eða athuga Form Tools notandi heimildasöfnun fyrir upplýsingar um að bæta við þemu."; +$LANG["text_non_deletable_fields"] = "Þessi reitur er notuð af Core handrit og ekki hægt að breyta eða eyða án þess að valda ósamrýmanleika. Ef þú vilt gera breytingar á sviði tegund, gera afrit af því og breyta stillingum fyrir afritun."; +$LANG["text_option_list_group_explanation"] = "Ef þetta er valið, leyfir það við hóp stillingar þínar. Hvernig hópar eru birtar veltur á sviði tegund nota þennan valkost lista."; +$LANG["text_option_list_page"] = "Útvarp hnappur, gátreiti, dropdowns og Fjölval dropdown reiti veita allar notanda með marga valkosti sem þeir geta valið eitt eða fleiri atriði. Í Tools Form, eru þessar þekkt sem Lists Valkostur. Almennt eru þessar búið til sjálfkrafa með Add External Form aðferð, en þú getur handvirkt bæta við eða breyta möguleika þína hér að neðan ef mynd efni breytingar þínar eða þú búa reitir eru aðeins notuð innan."; +$LANG["text_option_list_used_by_fields"] = "Þennan valkost er notaður af mörgum sviðum formi. Ef þú uppfærir upplýsingarnar hér að neðan, verður breytt fyrir alla reitina (sjá eyðublað Fields flipann til að sjá lista yfir sviðum). Ef þú vilt uppfæra gildi fyrir einn eða hluti af því hvaða reitir eru falin, smelltu hér til að búa til nýjan möguleika Listi með sömu gildum eins og this einn. Þá er hægt að tengja mynd reiti sem þú vilt í nýjan hóp."; +$LANG["text_public_form_omit_list_page"] = "Almenn eyðublöð gefa þú the hagur af að láta alla reikninga viðskiptavina fá aðgang að þeim án þess að þurfa að höndunum úthluta hverjum viðskiptavini þeirra. Þessi síða gerir þér kleift að ákvarða nákvæmlega þeim viðskiptavinum sem geta ekki opnað þessa mynd, jafnvel þó að formið sé merkt sem almennings."; +$LANG["text_public_view_omit_list_page"] = "Almenn Views gefa þú the hagur af að láta alla reikninga viðskiptavina fá aðgang að þeim án þess að þurfa að höndunum úthluta hverjum viðskiptavini þeirra. Þessi síða gerir þér kleift að ákvarða nákvæmlega þeim viðskiptavinum sem geta ekki opnað þessa tilteknu View."; +$LANG["text_reference_tab_info"] = "Þessi síða lista yfir alla staðgengla í boði fyrir mynd þinni. Staðgengla eru strengir sem hægt er að nota í tölvupósti sniðmát og reitir sem eru merktir með sérstöku tákn tákn . Þegar gert sviði, eru þeir breytt mjög virk til viðeigandi gildi þegar svæðið er skoðað eða tölvupóstur er sendur."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Skoðaðu notandi skjöl"; +$LANG["text_send_email_from_edit_submission_page"] = "Hafa valkostur til að senda þetta bréf frá Edit Skil síðu"; +$LANG["text_smart_fill_option_list_problem"] = "Við gátum ekki Smart Fylltu akur þinn valkostur. Hins vegar í stað, þú geta reyna senda afrit af síðunni mynd í reitinn hér að neðan. Ath: Ekki senda inn hrátt PHP síður (eða öðrum miðlara-hlið númer) - bara senda HTML útgáfu. Til að fá þetta, skoða og vista síðu vefskoðaranum."; +$LANG["text_submission_ip_address"] = "IP-tölu notandans sem gert uppgjöf."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Notaðu formið hér að neðan til að annaðhvort skoða eða senda þér tölvupóst mynda frá þessum tölvupósti sniðmáti. Það bréf er einungis sendur á uppgefið tilgreind hér að neðan, helstu, cc og Bcc netfang viðtakanda netfang er hunsað meðan prófun."; +$LANG["text_test_email_templates_no_submissions"] = "Til að prófa þinn email templates, verður þú fyrst að setja í að minnsta kosti eina mynd senda."; +$LANG["text_theme_page_intro"] = "Þessari síðu er listi yfir öll þemum þínum. Smelltu á smámynd til að sjá stærri dæmi um stíl við þemað er. The "virkt" stöðva ákveður hvort sem þema geta valið um viðskiptavini. Til að skoða öll tiltæk þemu, fara Form Verkfæri website."; +$LANG["text_tutorial_adding_first_form"] = "Kennsla: Bæta fyrsta mynd þinni!"; +$LANG["text_unique_submission_id"] = "Í einstaka uppgjöf kt."; +$LANG["text_unused_option_list"] = "Þessi valkostur listi er ekki notuð af hvers konar sviðum."; +$LANG["text_upgraded"] = "Uppsetning þín hefur verið uppfærð í {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Þennan valkost List er notað af eftirfarandi reiti."; +$LANG["text_view_fields_info"] = "Þessi flipi eftirlit sem svið mæta við breytingar á uppgjöf í þessari skoðun, röð þeirra og hvort þeir eru editable eða ekki."; +$LANG["text_view_tab_summary"] = "Þessi flipi leyfir þér að búa til mismunandi leiðir til að hópnum og raða gögnunum. Views láta þig búa til sérsniðnar hlutar af gögnum mynd til að kljúfa það inn í viðráðanleg klumpur, og til að takmarka það sem viðskiptavinir sjái eða breyta."; +$LANG["validation_account_disabled"] = "Því miður hefur reikningur þinn verið gerð óvirk."; +$LANG["validation_account_not_recognized"] = "Því miður, er að notendanafnið ekki viðurkennt."; +$LANG["validation_account_not_recognized_info"] = "Því miður var það notandanafn fannst ekki. Reyndu aftur, eða hafðu samband við umsjónarmann á netfangið hér fyrir neðan."; +$LANG["validation_account_pending"] = "Notandi er bið samþykki sem stjórnandi."; +$LANG["validation_check_delete_client"] = "Ertu viss um að þú viljir eyða þessum þjónustustjórareikning?"; +$LANG["validation_client_password_missing_number"] = "Viðskiptavinurinn lykilorð verða að innihalda að minnsta kosti einn tölustaf (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Viðskiptavinurinn lykilorð verða að innihalda að minnsta kosti einn af eftirfarandi stafi: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Viðskiptavinurinn lykilorð verða að innihalda að minnsta kosti einn hástafi bréf."; +$LANG["validation_client_password_too_short"] = "Viðskiptavinurinn lykilorð þarf að vera að minnsta kosti {\$number} stafir að lengd."; +$LANG["validation_col_name_is_reserved_word"] = "Því miður, þessi dálkur gagnasafn nafn er áskilinn vinna í MySQL. Vinsamlegast endurnefna það!"; +$LANG["validation_db_name"] = "Gagnasafn heiti getur ekki innihaldið tímabil eða rista."; +$LANG["validation_db_not_updated_invalid_input"] = "Gagnagrunnurinn gæti ekki verið uppfærð. Vinsamlegast athugaðu að sjá þau gildi sem þú slóst inn eru í gildi."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Því miður verður sjálfgefna stjórnandi og viðskiptavinur þema alltaf að vera virkt."; +$LANG["validation_default_phone_num_required"] = "Vinsamlegast fyllið í fullri Símanúmer fyrir <b> { \$ sviði} </ b> sviði - númer eini."; +$LANG["validation_default_rule_alpha"] = "Vinsamlegast aðeins slá inn stafi og tölur fyrir <b> { \$ sviði} </ b> sviði."; +$LANG["validation_default_rule_letters_only"] = "Vinsamlegast aðeins slá inn stafi fyrir <b> { \$ sviði} </ b> sviði."; +$LANG["validation_default_rule_numbers_only"] = "Vinsamlegast aðeins slá inn tölur fyrir <b> { \$ sviði} </ b> sviði."; +$LANG["validation_default_rule_required"] = "Vinsamlega sláðu inn gildi fyrir <b> { \$ sviði} </ b> sviði."; +$LANG["validation_default_rule_valid_email"] = "Vinsamlega sláðu inn gilt netfang fyrir <b> { \$ sviði} </ b> sviði."; +$LANG["validation_delete_form_confirm"] = "Vinsamlega merktu við reitinn til að staðfesta að þú viljir eyða þessari mynd."; +$LANG["validation_delete_non_empty_option_list"] = "Viðvörun! Þennan valkost er notaður af einum eða fleiri mynd sviðum. Eyðing það mun gera þeim sviðum hætta að virka."; +$LANG["validation_display_names_incomplete"] = "Vinsamlegast sláðu inn gildi fyrir öll Display Nöfn, eða smella á Smart Fylltu möguleika að slá þá breytilegar."; +$LANG["validation_duplicate_form_field_name"] = "Þú getur ekki haft margar reiti með sama sviði nafn."; +$LANG["validation_email_not_found_or_invalid"] = "Því miður er netfangið sem tengist reikningnum þínum annað hvort ekki til eða er ógilt."; +$LANG["validation_folder_invalid_permissions"] = "Til að keyra þessa prófun, sem leyfi þarf til að setja á senda möppu til að gera fyrir lestur og ritun skrár (777 á Unix)."; +$LANG["validation_folder_not_writable"] = "Þessi mappa er ekki writeable."; +$LANG["validation_internal_form_too_many_fields"] = "Því miður getur þú aðeins skapa eyðublöð með 1000 sviðum eða minna."; +$LANG["validation_invalid_admin_email"] = "Vinsamlegast sláðu inn netfang gilt adminstrator dag."; +$LANG["validation_invalid_admin_username"] = "Notandanafnið þitt getur aðeins felast í tölustafi, bókstafi (AZ og 0-9)."; +$LANG["validation_invalid_client_username"] = "Notandanafn Viðskiptavinurinn getur aðeins vera tölustafi, bókstafi (az og 0-9)."; +$LANG["validation_invalid_client_username2"] = "Því miður, username getur einungis innihalda stafi, tölur og undirstrik staf. Vinsamlegast sláðu inn nýtt notandanafn."; +$LANG["validation_invalid_column_name"] = "Dálkur nöfn má eingöngu tölustafi (AZ, 0-9). Athugaðu dálki nöfn."; +$LANG["validation_invalid_custom_from_email"] = "Vinsamlegast sláðu inn gilt sérsniðna 'From' email heimilisfang."; +$LANG["validation_invalid_custom_reply_to_email"] = "Sláðu Svara gilt sérsniðna 'til' netfang."; +$LANG["validation_invalid_default_sessions_timeout"] = "Vinsamlegast sláðu inn gilt gildi (númer) fyrir sjálfgefna fundur tími."; +$LANG["validation_invalid_email"] = "Vinsamlegast sláðu inn gilt netfang."; +$LANG["validation_invalid_email_id"] = "Því miður, þessi er ógildur tölvupósti kt."; +$LANG["validation_invalid_folder"] = "Því miður, þetta virðist ekki vera gild mappa."; +$LANG["validation_invalid_form_field_names"] = "Form reitina má aðeins tölustafi og undirstrikar (az, 0-9, _), og engin bil."; +$LANG["validation_invalid_num_clients_per_page"] = "Vinsamlegast sláðu aðeins tölur á fjölda Viðskiptavinir Per Page sviði."; +$LANG["validation_invalid_num_emails_per_page"] = "Vinsamlegast sláðu aðeins tölur fyrir tölvupóst á síðunni."; +$LANG["validation_invalid_num_form_fields"] = "Vinsamlegast aðeins slá inn tölur í ýmsum sviðum sviði."; +$LANG["validation_invalid_num_forms_per_page"] = "Vinsamlegast sláðu aðeins tölur á fjölda Eyðublöð Per Page sviði."; +$LANG["validation_invalid_num_menus_per_page"] = "Vinsamlegast aðeins inn tölur fyrir valmyndir á hverri síðu."; +$LANG["validation_invalid_num_modules_per_page"] = "Vinsamlegast sláðu aðeins tölur á fjölda Modules Per Page sviði."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Vinsamlegast aðeins slá inn tölur í Valkostur Num Lists Per sviði Page."; +$LANG["validation_invalid_num_submissions_per_page"] = "Vinsamlegast sláðu inn gilt tala um uppgjöf á síðunni."; +$LANG["validation_invalid_sessions_timeout"] = "Vinsamlegast sláðu inn gilt fundur tími (heiltölur aðeins!)."; +$LANG["validation_invalid_tab_assign_values"] = "Vinsamlegast sláðu aðeins tölur í 'úr' og 'reitina til'."; +$LANG["validation_invalid_table_prefix"] = "Vinsamlega sláðu inn gagnagrunni forskeyti samanstendur af bréfi og undirstrika karakter eingöngu."; +$LANG["validation_invalid_upload_folder"] = "Uppsetning miðlara þíns af PHP hefur ógilt stilling fyrir upload_tmp_dir gildi. "{\$upload_folder}" er ekki gild mappa."; +$LANG["validation_invalid_url"] = "Vinsamlegast sláðu inn gilt veffang."; +$LANG["validation_invalid_username"] = "Notandanafnið þitt má aðeins innihalda tölustafi, bókstafi (az og 0-9)."; +$LANG["validation_is_form_active"] = "Vinsamlegast tilgreina hvort formið sé virk eða ekki."; +$LANG["validation_menu_name_taken"] = "Því miður er þessi valmynd nafn þegar tekið. Vinsamlega veldu nýtt nafn."; +$LANG["validation_modules_search_no_status"] = "Vinsamlegast veldu annað hvort Kveikt eða fatlaður gátreitina."; +$LANG["validation_no_access_type"] = "Vinsamlegast sláðu inn aðgang tegund."; +$LANG["validation_no_account_logout_url"] = "Vinsamlegast sláðu inn Logout slóðina þína."; +$LANG["validation_no_account_password_confirmed"] = "Vinsamlega sláðu inn nýja lykilorðið þitt."; +$LANG["validation_no_account_password_confirmed2"] = "Vinsamlega sláðu aftur inn nýtt lykilorð."; +$LANG["validation_no_admin_email"] = "Vinsamlegast sláðu inn netfang stjórnandahandbókinni."; +$LANG["validation_no_admin_theme"] = "Vinsamlegast veldu þema fyrir stjórnandi reikningur."; +$LANG["validation_no_admin_theme_swatch"] = "Vinsamlegast veldu swatch fyrir kerfisstjóra þema."; +$LANG["validation_no_client_email"] = "Vinsamlegast sláðu inn netfang viðskiptavinarins."; +$LANG["validation_no_client_first_name"] = "Vinsamlegast sláðu inn fyrstu nafn viðskiptavinar."; +$LANG["validation_no_client_last_name"] = "Vinsamlegast sláðu inn eftirnafn viðskiptavinarins."; +$LANG["validation_no_client_login_page"] = "Vinsamlegast tilgreina hvaða síðu sem viðskiptavinurinn skal beint til þegar þeir skrá þig inn"; +$LANG["validation_no_client_password"] = "Vinsamlegast sláðu inn lykilorðið viðskiptavinarins."; +$LANG["validation_no_client_theme_swatch"] = "Vinsamlegast veldu sjálfgefið swatch fyrir viðskiptavinareikninga."; +$LANG["validation_no_client_username"] = "Vinsamlegast sláðu inn notandanafn viðskiptavinarins."; +$LANG["validation_no_column_name"] = "Vinsamlegast sláðu inn allt dálki nöfn eða smella á Smart Fylltu hnappinn til að fylla þá."; +$LANG["validation_no_column_selected"] = "Vinsamlegast veldu að minnsta kosti einn reit til að birtast sem dálk á skráningu senda síðu."; +$LANG["validation_no_custom_from_email"] = "Vinsamlegast sláðu inn sérsniðna 'From' email heimilisfang."; +$LANG["validation_no_custom_recipient_email"] = "Vinsamlegast sláðu inn sérsniðna netfang."; +$LANG["validation_no_custom_reply_to_email"] = "Vinsamlegast sláðu inn Svara við sérsniðna 'til' netfang."; +$LANG["validation_no_date_format"] = "Vinsamlega sláðu inn dagsetningu sniði."; +$LANG["validation_no_db_column_single"] = "Vinsamlegast sláðu inn Column gagnasafn nafn."; +$LANG["validation_no_db_hostname"] = "Vinsamlegast sláðu inn í gagnagrunninn hostname."; +$LANG["validation_no_db_name"] = "Vinsamlegast sláðu inn gagnasafn nafn."; +$LANG["validation_no_db_username"] = "Vinsamlegast sláðu þá inn gagnasafn notandanafn."; +$LANG["validation_no_default_client_theme"] = "Vinsamlegast veldu sjálfgefið þema fyrir alla nýja reikninga þjónustustjóra."; +$LANG["validation_no_default_language"] = "Vinsamlegast veldu sjálfgefið tungumál fyrir uppsetningu þinni Form Verkfæri."; +$LANG["validation_no_default_sessions_timeout"] = "Vinsamlegast sláðu inn fundur sjálfgefið tími til notandi reikningur."; +$LANG["validation_no_display_text"] = "Vinsamlegast sláðu inn Sýna Texti fyrir hvern reit."; +$LANG["validation_no_display_text_single"] = "Vinsamlegast sláðu inn texta sýna gildi."; +$LANG["validation_no_edit_submission_page_label"] = "Vinsamlegast sláðu inn Edit Skil síðu merki."; +$LANG["validation_no_email"] = "Vinsamlegast sláðu inn netfangið þitt."; +$LANG["validation_no_email_config_field"] = "Tilgreindu hvaða eyðublað Svæðið er á reit tölvupóstsins."; +$LANG["validation_no_email_content"] = "Vinsamlega sláðu inn netfang innihald að minnsta kosti eitt af formi (HTML eða texta)."; +$LANG["validation_no_email_from_field"] = "Vinsamlegast netfang 'úr' reitinn."; +$LANG["validation_no_email_template_name"] = "Vinsamlega sláðu inn netfang sniðmát nafn."; +$LANG["validation_no_email_template_view_id"] = "Vinsamlegast veldu Skoða sem þetta Sniðmát skal kortlagning."; +$LANG["validation_no_email_template_view_mapping_value"] = "Vinsamlegast kynna þegar tölvupósti skal senda."; +$LANG["validation_no_enabled_themes"] = "Vinsamlegast tryggja að minnsta kosti eitt þema er virkt."; +$LANG["validation_no_first_name"] = "Vinsamlegast sláðu inn fyrstu nafn þitt."; +$LANG["validation_no_form_field_name"] = "Vinsamlegast sláðu inn öll reit mynd nafni."; +$LANG["validation_no_form_field_single"] = "Vinsamlegast sláðu inn Field Form gildi."; +$LANG["validation_no_form_id"] = "Formið ID var ekki tilgreind. Vinsamlegast skráðu þig út og reyndu aftur."; +$LANG["validation_no_form_name"] = "Vinsamlegast sláðu inn formið nafn."; +$LANG["validation_no_form_url"] = "Vinsamlegast sláðu inn mynd vefslóð."; +$LANG["validation_no_last_name"] = "Vinsamlegast sláðu inn eftirnafn þitt."; +$LANG["validation_no_login_page"] = "Vinsamlegast benda á hvaða síðu þú vildi eins og til að senda í hvert skipti sem þú skráir þig inn"; +$LANG["validation_no_logout_url"] = "Vinsamlegast sláðu inn Logout vefslóð."; +$LANG["validation_no_main_email_recipient"] = "Vinsamlega sláðu inn að minnsta kosti eitt helsta viðtakanda (þ.e. ekki cc eða Falið afrit)."; +$LANG["validation_no_menu"] = "Vinsamlegast veldu valmynd fyrir þennan notanda reikning."; +$LANG["validation_no_menu_id"] = "Vinsamlegast veldu valmynd."; +$LANG["validation_no_num_clients_per_page"] = "Vinsamlegast sláðu inn númerið á reikningum viðskiptavina á síðunni."; +$LANG["validation_no_num_emails_per_page"] = "Vinsamlegast sláðu inn númerið sem tölvupóst til lista á síðunni."; +$LANG["validation_no_num_form_fields"] = "Vinsamlegast sláðu inn númerið sviðum fyrir mynd þinni."; +$LANG["validation_no_num_forms_per_page"] = "Vinsamlegast sláðu inn númerið sem form á síðunni."; +$LANG["validation_no_num_menus_per_page"] = "Vinsamlegast sláðu inn númerið sem valmyndir á lista á síðunni."; +$LANG["validation_no_num_modules_per_page"] = "Vinsamlegast sláðu inn númerið sem mát á síðunni."; +$LANG["validation_no_num_option_lists_per_page"] = "Vinsamlegast sláðu inn númerið skráa möguleika á hverri síðu."; +$LANG["validation_no_num_submissions_per_page"] = "Vinsamlegast sláðu inn númerið sem uppgjöf til að birta á síðunni."; +$LANG["validation_no_option_list_name"] = "Vinsamlega sláðu inn lista valkostur nafn."; +$LANG["validation_no_page_titles"] = "Vinsamlegast sláðu inn á síðuna sjálfgefið titla fyrir notendur."; +$LANG["validation_no_password"] = "Vinsamlegast sláðu inn lykilorðið þitt."; +$LANG["validation_no_program_name"] = "Vinsamlegast sláðu inn forritið nafn."; +$LANG["validation_no_second_password"] = "Vinsamlegast sláðu inn lykilorðið þitt."; +$LANG["validation_no_sessions_timeout"] = "Vinsamlegast sláðu inn fundur tími."; +$LANG["validation_no_smart_fill_values"] = "Vinsamlegast sláðu inn í reitinn mynd nafn og slóð á mynd."; +$LANG["validation_no_table_prefix"] = "Vinsamlega sláðu inn gagnasafn forskeyti."; +$LANG["validation_no_tabs_defined"] = "Nei flipa skilgreint"; +$LANG["validation_no_test_email_recipient"] = "Vinsamlegast sláðu inn netfang þar sem við ættum að senda prófið í tölvupósti."; +$LANG["validation_no_test_email_submission_id"] = "Vinsamlegast sláðu inn að senda kennitölu."; +$LANG["validation_no_theme"] = "Vinsamlegast veldu þema."; +$LANG["validation_no_theme_swatch"] = "Vinsamlegast veldu swatch fyrir valið þema."; +$LANG["validation_no_timezone_offset"] = "Vinsamlegast sláðu inn Tímabelti offsetprentun."; +$LANG["validation_no_titles"] = "Vinsamlegast sláðu inn á síðuna titla."; +$LANG["validation_no_two_column_names"] = "Því miður getur þú ekki inn í sama gagnasafn dálkheiti tvisvar."; +$LANG["validation_no_ui_language"] = "Veldu tungumál fyrir viðmótið."; +$LANG["validation_no_url"] = "Vinsamlegast sláðu inn vefslóð."; +$LANG["validation_no_username"] = "Vinsamlega sláðu inn notandanafnið þitt."; +$LANG["validation_no_username_or_js"] = "Þú verður að slá inn notandanafnið þitt. Vinsamlegast virkja JavaScript í vafranum þínum."; +$LANG["validation_no_view_fields"] = "View þín ekki innihalda allir reitir! Þú þarft að setja að minnsta kosti einn reit fyrir það að vera eitthvað að sýna sig í ljósi þínu."; +$LANG["validation_no_view_fields_selected"] = "Vinsamlegast veldu einn eða fleiri sviðum til að bæta við að skoða."; +$LANG["validation_no_view_name"] = "Vinsamlegast sláðu inn heiti View þitt."; +$LANG["validation_num_rows_to_add"] = "Vinsamlegast sláðu inn númerið í röðum til að bæta við."; +$LANG["validation_option_list_name_taken"] = "Því miður, er á þessum lista valkostur nafn þegar tekið. Vinsamlega veldu nýtt nafn."; +$LANG["validation_password_in_password_history"] = "Af öryggisástæðum er ekki hægt að slá inn sama lykilorð eins og allir af síðustu {\$history_size} lykilorð. Vinsamlegast sláðu inn annað lykilorð."; +$LANG["validation_passwords_different"] = "Vinsamlegast gakktu úr skugga um að lykilorð eru sömu."; +$LANG["validation_please_enter_search_date_range"] = "Veldu dagsetningu leit tímabil."; +$LANG["validation_please_enter_search_keyword"] = "Vinsamlegast sláðu inn leitar leitarorð."; +$LANG["validation_select_field_type"] = "Vinsamlegast veldu reit tegund."; +$LANG["validation_select_submissions_to_copy"] = "Vinsamlegast veldu þær sendingar sem þú vilt afrita."; +$LANG["validation_select_submissions_to_delete"] = "Vinsamlegast veldu þá uppgjöf sem þú vilt eyða."; +$LANG["validation_smart_fill_cannot_fill"] = "Því miður gátum við ekki að fylla út þennan reit."; +$LANG["validation_smart_fill_invalid_field_type"] = "Við gátum að finna á sviði, en það er ekki í listanum, stöðva eða útvarp hóp."; +$LANG["validation_smart_fill_no_field_found"] = "Því miður gátum við ekki fundið form sviði með þessu nafni á síðunni sem tilgreind."; +$LANG["validation_smart_fill_no_page"] = "Vinsamlegast finna á síðu sem inniheldur svæði sem þú vilt Smart Fylla."; +$LANG["validation_smart_fill_upload_all_pages"] = "Vinsamlegast hlaðið öllum síðum á mynd þinni."; +$LANG["validation_upload_folder_not_writable"] = "Þessi tímabundna senda mappa tilgreind með PHP uppsetninguna er ekki skrifanleg. Þangað til þetta er fastur getur skrá ekki hlaðið upp með Form Verkfæri (eða önnur PHP program). Hafðu samband hýsingaraðilann þinn."; +$LANG["validation_upload_html_files_only"] = "Vinsamlegast aðeins senda HTML skrár."; +$LANG["validation_username_taken"] = "Því miður, er að notendanafnið þegar tekið. Vinsamlegast sláðu inn annað notendanafn."; +$LANG["validation_wrong_password"] = "Því miður, þessi lykilorðið passar ekki."; +$LANG["word_about"] = "Um"; +$LANG["word_access"] = "Aðgangur"; +$LANG["word_account"] = "Reikningur"; +$LANG["word_account_sp"] = "Reikningur (s)"; +$LANG["word_accounts"] = "Reikningar"; +$LANG["word_action"] = "Action"; +$LANG["word_active"] = "Virk"; +$LANG["word_add"] = "Bæta við"; +$LANG["word_add_rightarrow"] = "Bæta við »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Administration"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Eftir"; +$LANG["word_aquamarine"] = "Glær eða blágrænn eðalsteinn"; +$LANG["word_asc"] = "Hækkandi"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Rithöfundur"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Til baka"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Á undan"; +$LANG["word_benefits"] = "Kostir"; +$LANG["word_blue"] = "Blue"; +$LANG["word_cancel"] = "Hætta við"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Gátreitina"; +$LANG["word_checklist"] = "Gátlisti"; +$LANG["word_client"] = "Viðskiptavinur"; +$LANG["word_client_c"] = "Viðskiptavinur:"; +$LANG["word_clients"] = "Viðskiptavinir"; +$LANG["word_close"] = "Náinn"; +$LANG["word_code"] = "Code"; +$LANG["word_column"] = "Súla"; +$LANG["word_columns"] = "Dálkar"; +$LANG["word_columns_sp"] = "Column (s)"; +$LANG["word_complete"] = "Complete"; +$LANG["word_configuration"] = "Stillingar"; +$LANG["word_content"] = "Innihald"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Áfram »"; +$LANG["word_copy"] = "Afrita"; +$LANG["word_custom"] = "Venja"; +$LANG["word_data"] = "Gögn"; +$LANG["word_date"] = "Dagsetning"; +$LANG["word_debugging_c"] = "Kembiforrit:"; +$LANG["word_delete"] = "Eyða"; +$LANG["word_desc"] = "Niðurröðun"; +$LANG["word_direct"] = "Bein"; +$LANG["word_disabled"] = "Fatlaðir"; +$LANG["word_documentation"] = "Skjölun"; +$LANG["word_done"] = "Lokið"; +$LANG["word_drawbacks"] = "Galli"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Breyta"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Netfang"; +$LANG["word_email_c"] = "Netfang:"; +$LANG["word_emails"] = "Póst"; +$LANG["word_enabled"] = "Virkt"; +$LANG["word_equals"] = "Er"; +$LANG["word_error"] = "Villa"; +$LANG["word_error_c"] = "Villa:"; +$LANG["word_examples_c"] = "Dæmi:"; +$LANG["word_external"] = "External"; +$LANG["word_fail"] = "Mistakast"; +$LANG["word_field"] = "Svæði"; +$LANG["word_field_sp"] = "Field (s)"; +$LANG["word_fields"] = "Fields"; +$LANG["word_fields_sp"] = "Field (s)"; +$LANG["word_file"] = "Skrá"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Skrá"; +$LANG["word_filters"] = "Síur"; +$LANG["word_filters_sp"] = "Sía (s)"; +$LANG["word_for"] = "fyrir"; +$LANG["word_form"] = "Form"; +$LANG["word_form_c"] = "Form:"; +$LANG["word_formatting"] = "Formatting"; +$LANG["word_forms"] = "Eyðublöð"; +$LANG["word_found"] = "Stofna"; +$LANG["word_from"] = "Frá"; +$LANG["word_from_c"] = "Frá:"; +$LANG["word_general"] = "Almennt"; +$LANG["word_green"] = "Grænn"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Hæð"; +$LANG["word_help"] = "Hjálp"; +$LANG["word_hidden"] = "Falinn"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Lárétt"; +$LANG["word_hour"] = "Klukkustund"; +$LANG["word_hours"] = "Klukkustundir"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Mistök"; +$LANG["word_install"] = "Uppsetning"; +$LANG["word_installation"] = "Uppsetning"; +$LANG["word_internal"] = "Innri"; +$LANG["word_language"] = "Tungumál"; +$LANG["word_large"] = "Stór"; +$LANG["word_like"] = "Líka"; +$LANG["word_login"] = "Innskráning"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Útskrá"; +$LANG["word_main"] = "Aðal -"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Valmynd"; +$LANG["word_menus"] = "Matseðlar"; +$LANG["word_minutes"] = "mínútur"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Nafn"; +$LANG["word_name_c"] = "Nafn:"; +$LANG["word_never"] = "Aldrei"; +$LANG["word_next_rightarrow"] = "Næsta »"; +$LANG["word_next_step_rightarrow"] = "Næsta skref »"; +$LANG["word_no"] = "Nei"; +$LANG["word_none"] = "Enginn"; +$LANG["word_notes"] = "Notes"; +$LANG["word_notification"] = "Tilkynning"; +$LANG["word_number"] = "Fjöldi"; +$LANG["word_off"] = "Af"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Allt í lagi"; +$LANG["word_on"] = "Á"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Stjórnandi"; +$LANG["word_options"] = "Options"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Skipa"; +$LANG["word_other"] = "Annar"; +$LANG["word_other_c"] = "Annað:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Page:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Lykilorð"; +$LANG["word_password_c"] = "Lykilorð:"; +$LANG["word_pending"] = "Fyrirhugaður"; +$LANG["word_permissions"] = "Heimildir"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Fyrri"; +$LANG["word_private"] = "Einkamál"; +$LANG["word_public"] = "Almenn"; +$LANG["word_purple"] = "Purple"; +$LANG["word_recipient"] = "Viðtakandi"; +$LANG["word_recipient_sp"] = "Viðtakandi (s)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Fjarlægja"; +$LANG["word_remove_uc_leftarrow"] = "«Fjarlægja"; +$LANG["word_reply_to"] = "Netfang"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Áskilið"; +$LANG["word_reset"] = "Endurstilla"; +$LANG["word_resolved"] = "Leyst"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "röð"; +$LANG["word_search"] = "Leita"; +$LANG["word_searchable"] = "Leit"; +$LANG["word_select"] = "Velja"; +$LANG["word_setting"] = "Stilling"; +$LANG["word_settings"] = "Stillingar"; +$LANG["word_show"] = "Sýna"; +$LANG["word_size"] = "Stærð"; +$LANG["word_skipped"] = "Sleppti"; +$LANG["word_small"] = "Lítil"; +$LANG["word_solution"] = "Lausn"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Byrja"; +$LANG["word_status"] = "Staða"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Efni"; +$LANG["word_subject_c"] = "Efni"; +$LANG["word_submenu"] = "Undirvalmynd"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Próf"; +$LANG["word_text"] = "Texti"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Kennslubók"; +$LANG["word_theme"] = "Theme"; +$LANG["word_themes"] = "Þemu"; +$LANG["word_time"] = "Tími"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Ábendingar"; +$LANG["word_today"] = "Í dag"; +$LANG["word_truncate_q"] = "HÃ?"; +$LANG["word_uninstall"] = "Fjarlægja"; +$LANG["word_unknown"] = "Unknown"; +$LANG["word_update"] = "Uppfæra"; +$LANG["word_upgrade"] = "Uppfærsla"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Notandi"; +$LANG["word_username"] = "Notandanafn"; +$LANG["word_username_c"] = "Notandanafn:"; +$LANG["word_validation"] = "Löggilding"; +$LANG["word_value"] = "Value"; +$LANG["word_value_sp"] = "Value (s)"; +$LANG["word_verified"] = "Staðfest"; +$LANG["word_verify"] = "Staðfesta"; +$LANG["word_version"] = "Útgáfa"; +$LANG["word_vertical"] = "Lóðrétt"; +$LANG["word_view"] = "Útsýni"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Viðvörun!"; +$LANG["word_warning_c"] = "Viðvörun:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Velkomin!"; +$LANG["word_width_c"] = "breidd:"; +$LANG["word_words"] = "Orð"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Yellow"; +$LANG["word_yes"] = "Já"; \ No newline at end of file diff --git a/global/lang/it.php b/global/lang/it.php new file mode 100644 index 00000000..cca82a90 --- /dev/null +++ b/global/lang/it.php @@ -0,0 +1,1219 @@ +Attenzione! Hai scelto {\$num_selected_on_page} osservazioni su questa pagina e {\$num_selected_on_other_pages} in altre pagine. Si prega di scegliere una delle seguenti opzioni:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Attenzione! Non hai selezionato alcuna osservazioni su questa pagina, ma che hai selezionato {\$num_selected_on_other_pages} in altre pagine. Si prega di confermare che si desidera eliminare tali osservazioni.
    "; +$LANG["confirm_delete_view"] = "Siete sicuri di voler cancellare questa vista?"; +$LANG["confirm_refresh_page"] = "Siete sicuri di voler aggiornare la pagina? In questo modo perderà tutte le modifiche apportate."; +$LANG["confirm_save_change_before_redirect"] = "Uno o più campi sono stati aggiornati. Volete salvare le modifiche prima di reindirizzare?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Siete sicuri di voler usare la funzione di compilazione automatica dei nomi delle colonne del database? Questa operazione cancellerà i valori pre-esistenti."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Questa opzione genera automaticamente i nomi dei database colonna in base ai campi di testo sul display, in modo che il contenuto della tabella del database sono più facili da leggere."; +$LANG["confirm_smart_fill_display_names"] = "Siete sicuri di volere che il riempimento intelligenti visualizzi i nomi? L'operazione cancellerà eventuali valori già esistenti."; +$LANG["confirm_ungroup_option_list"] = "Sei sicuro che si desidera separare questa lista di opzioni? Tutte le opzioni saranno concentrati in un unico elenco di separati."; +$LANG["confirm_uninstall_module"] = "Siete sicuri di voler disinstallare questo modulo? Tutti i dati del modulo andranno persi."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Ven"; +$LANG["date_Friday"] = "Venerdì"; +$LANG["date_Mon"] = "Lun"; +$LANG["date_Monday"] = "Lunedì"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sab"; +$LANG["date_Saturday"] = "Sabato"; +$LANG["date_Sun"] = "Dom"; +$LANG["date_Sunday"] = "Domenica"; +$LANG["date_Thu"] = "Gio"; +$LANG["date_Thursday"] = "Giovedì"; +$LANG["date_Tue"] = "Mar"; +$LANG["date_Tuesday"] = "Martedì"; +$LANG["date_Wed"] = "Mer"; +$LANG["date_Wednesday"] = "Mercoledì"; +$LANG["date_am"] = "AM"; +$LANG["date_month_April"] = "Aprile"; +$LANG["date_month_August"] = "Agosto"; +$LANG["date_month_December"] = "Dicembre"; +$LANG["date_month_February"] = "Febbraio"; +$LANG["date_month_January"] = "Gennaio"; +$LANG["date_month_July"] = "Luglio"; +$LANG["date_month_June"] = "Giugno"; +$LANG["date_month_March"] = "Marzo"; +$LANG["date_month_May"] = "Mag"; +$LANG["date_month_November"] = "Novembre"; +$LANG["date_month_October"] = "Ottobre"; +$LANG["date_month_September"] = "Settembre"; +$LANG["date_month_short_Apr"] = "Apr"; +$LANG["date_month_short_Aug"] = "Ago"; +$LANG["date_month_short_Dec"] = "Dic"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Gen"; +$LANG["date_month_short_Jul"] = "Lug"; +$LANG["date_month_short_Jun"] = "Giu"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Maggio"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Ott"; +$LANG["date_month_short_Sep"] = "Set"; +$LANG["date_pm"] = "PM"; +$LANG["notify_account_deleted"] = "I dati di questo utente sono stati cancellati."; +$LANG["notify_account_updated"] = "L'aggiornamento dei vostri dati di registrazione ha avuto successo."; +$LANG["notify_add_display_values"] = "Aggiungi valori da visualizzare"; +$LANG["notify_admin_menu_updated"] = "Il menù di amministrazione è stato aggiornato"; +$LANG["notify_admin_theme_overridden"] = "Il tema dell'amministratore è stato derogato manualmente."; +$LANG["notify_allow_url_fopen_not_set"] = "Ci dispiace, questo test non può essere eseguito sul server web. Richiede allow_url_fopen essere impostato su 1 nel file php.ini. Questa impostazione consente PHP per accedere ai file tramite un URL, che è necessario per eseguire questo test. È possibile verificare manualmente caricando un file in quella cartella via FTP, poi cercando di accedere alla URL che hai fornito."; +$LANG["notify_change_temp_password"] = "Appena effettuato l'accesso con una password temporanea. È necessario reimpostare la tua password!"; +$LANG["notify_click_to_edit_new_submission"] = "Clicca qui per modificare la nuova submission."; +$LANG["notify_client_account_menus_updated"] = "L'account del cliente (s) sono stati aggiornati per il {\$menu_name} menu. È ora possibile eliminare il menu che è stato precedentemente associato con l'account (s)."; +$LANG["notify_client_account_not_updated"] = "Non è stato possibile aggiornare i dati di registrazione del cliente."; +$LANG["notify_client_account_themes_updated"] = "L'account del cliente (s) sono stati aggiornati al {\$theme} tema. È ora possibile disattivare il tema precedentemente associati con l'account (s)."; +$LANG["notify_client_account_updated"] = "L'aggiornamento dei dati di registrazione del cliente ha avuto successo."; +$LANG["notify_client_menu_deleted"] = "Il menù cliente è stato cancellato."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Il menu è stato soppresso, ma i conti seguenti client ora non hanno più un menu! È necessario aggiornare i conti seguenti:"; +$LANG["notify_client_menu_updated"] = "Il menù cliente è stato aggiornato."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Ci dispiace, il menu che avete appena tentato di eliminare è già utilizzato dal client elencati di seguito. Al fine di eliminare il menu che si dovranno prima di assegnare i clienti di altri menu. Fare clic sul nome del client di modificare tale conto individuale, o assegnare tutti i conti a un menu diverso utilizzando la tendina sottostante."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Ci dispiace, uno dei temi che hai appena disabili vengono già utilizzati dai seguenti conti client. Al fine di disattivare il tema sarà prima necessario assegnare a ciascun cliente di un altro tema. Fare clic sul nome del client di modificare tale conto individuale, o assegnare tutti gli account di un tema utilizzando la tendina sottostante."; +$LANG["notify_edit_email_fields_link"] = "Clicca qui per specificare quali campi del modulo sono i campi e-mail, in modo da poterli bersaglio nei modelli di e-mail."; +$LANG["notify_edit_field_new_field"] = "Si tratta di un nuovo campo. Sarà necessario aggiornare la pagina principale, prima di essere in grado di modificare completamente questo campo."; +$LANG["notify_edit_option_list_after_save"] = "È necessario selezionare una lista di opzioni e poi su Salva modifiche prima di essere in grado di modificarlo."; +$LANG["notify_email_field_config_deleted"] = "La configurazione di posta elettronica è stato eliminato."; +$LANG["notify_email_fields_not_updated"] = "Ci dispiace, non abbiamo potuto aggiornare i campi e-mail."; +$LANG["notify_email_fields_updated"] = "I campi email sono stati aggiornati."; +$LANG["notify_email_not_sent"] = "Spiacenti, non è stato possibile inviare il messaggio email. Vi preghiamo di contattare l'amministratore del sistema all'indirizzo qui in basso."; +$LANG["notify_email_not_sent_c"] = "Spiacente, l'email non è stato possibile inviare:"; +$LANG["notify_email_sent"] = "Il messaggio email è stato inviato."; +$LANG["notify_email_template_deleted"] = "Il modello email è stato cancellato."; +$LANG["notify_email_template_updated"] = "Il modello email è stato aggiornato."; +$LANG["notify_enabled_module_list_updated"] = "La lista dei moduli attivati è stata aggiornata."; +$LANG["notify_error_saving_fields"] = "C'è stato un errore il salvataggio dei campi."; +$LANG["notify_field_changes_saved"] = "Le modifiche al campo (s) sono state salvate."; +$LANG["notify_field_options_smart_filled"] = "Le opzioni di campo sono stati riempiti intelligente."; +$LANG["notify_field_selected"] = "Il campo è stato selezionato. Clicca qui per tornare alla lista principale campo."; +$LANG["notify_field_updated"] = "Questo campo è stato aggiornato."; +$LANG["notify_file_not_uploaded"] = "Non è stato possibile caricare il file."; +$LANG["notify_file_uploaded"] = "Il caricamento del file ha avuto successo."; +$LANG["notify_filters_not_updated"] = "Si è verificato un errore durante l'aggiornamento filtri di questo client's presentazione."; +$LANG["notify_filters_updated"] = "L'aggiornamento dei filtri di invio di questo cliente ha avuto successo."; +$LANG["notify_folder_correct_permissions"] = "Questo folder dispone dei permessi corretti."; +$LANG["notify_folder_url_match"] = "Sembra che la cartella e l'URL si accordino correttamente."; +$LANG["notify_folder_url_no_access"] = "Il test non può essere effettuate perché PHP non è stato in grado di accedere all'URL. Questo problema in genere è provocato dal fatto che l'URL è protetto da un file .htaccess."; +$LANG["notify_folder_url_no_match"] = "Pare che questa combinazione cartella-URL non si accordi correttamente."; +$LANG["notify_folder_url_unknown_error"] = "Si è verificato un errore sconosciuto. Potete effettuare un test manuale caricando un file via FTP a quella cartella e quindi provare ad accedervi all'URL che avete fornito."; +$LANG["notify_form_access_type_email_info"] = "Questa forma ha un accesso di tipo amministratore, quindi non clienti hanno accesso ad esso e non sono elencati nella seguente discesa."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Ci dispiace, un modulo con tale ID non esiste."; +$LANG["notify_form_field_not_added"] = "Il campo di modulo '{\$fieldname}' non può essere aggiunto."; +$LANG["notify_form_field_options_updated"] = "Le opzioni dei campi del modulo sono state aggiornate."; +$LANG["notify_form_field_removed"] = "La rimozione del campo del modulo ha avuto successo."; +$LANG["notify_form_fields_removed"] = "La rimozione dei campi del modulo ha avuto successo."; +$LANG["notify_form_not_updated_notify_admin"] = "Il vostro modulo non ha potuto essere aggiornato. Vi preghamo di contattare l'amministratore del sistema per notificare il problema."; +$LANG["notify_form_settings_updated"] = "L'aggiornamento delle impostazioni del modulo ha avuto successo."; +$LANG["notify_form_submission_updated"] = "L'invio del modulo è stato aggiornato."; +$LANG["notify_form_tabs_updated"] = "Le schede sono state aggiornate."; +$LANG["notify_form_updated"] = "L'aggiornamento di questo modulo ha avuto successo."; +$LANG["notify_form_views_updated"] = "Visto il modulo sono stati aggiornati."; +$LANG["notify_install_invalid_db_info"] = "Ci dispiace, non siamo riusciti a connettersi al database utilizzando le informazioni fornite. Il messaggio di errore del database restituito è: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Il modulo è stato creato! È possibile configurare il modulo attraverso queste schede."; +$LANG["notify_invalid_account_information_in_sessions"] = "Le informazioni sull'account memorizzate in sessioni non è valido. Si prega di accedere nuovamente al di sotto."; +$LANG["notify_invalid_license_key"] = "Ci dispiace, che non sembra essere una chiave di licenza valida. Prova a entrare di nuovo."; +$LANG["notify_invalid_permissions"] = "Non hai i permessi per accedere a questa pagina. Sei stato disconnesso."; +$LANG["notify_invalid_search_dates"] = "Si prega di utilizzare il DatePicker di inserire una data valida o date."; +$LANG["notify_invalid_upload_folder"] = "La cartella upload è valido o non è scrivibile."; +$LANG["notify_lang_list_updated"] = "La lista delle lingue dell'interfaccia utente disponibili è stata aggiornata."; +$LANG["notify_login_info_emailed"] = "Le informazioni di accesso sono state inviate al vostro indirizzo email."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Ops, questo modulo è già installato!"; +$LANG["notify_module_installed"] = "Il modulo è stato installato. Clic qui per selezionare il modulo."; +$LANG["notify_module_list_updated"] = "L'elenco dei moduli è stato aggiornato."; +$LANG["notify_module_uninstalled"] = "Il modulo è stato disinstallato"; +$LANG["notify_module_updated"] = "Il {\$module} modulo è stato aggiornato per {\$version}. Clicca qui per selezionare il modulo ."; +$LANG["notify_multi_field_selected"] = "Il campo è stato selezionato. Cliccate qui per vedere e modificare le opzioni del campo."; +$LANG["notify_multi_field_updated"] = "Il campo è stato aggiornato. Sarete in grado di configurare le opzioni di campo dopo aver realizzato il modulo dati."; +$LANG["notify_multiple_fields_found"] = "Sono stati reperiti elementi multipli con questo nome di campo ({\$field_name}). Ciò può accadere se la vostra pagina contiene più di un modulo invio dati o se accidentalmente avete dato lo stesso nome a due moduli diversi. Vi preghiamo di selezionare quello desiderato dalla lista sottostnte."; +$LANG["notify_new_default_view_created"] = "Un nuovo, Vista predefinita contenente tutti i campi del modulo è stato creato."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "Non è stato reperito l'ID di nessun account. Vi preghiamo di connettervi nuovamente qui in basso. "; +$LANG["notify_no_api_installed"] = "Non avete installato l'API"; +$LANG["notify_no_client_permissions"] = "Non vi sono impostazioni disponibili da modificare."; +$LANG["notify_no_email_template_selected"] = "Vi preghiamo di selezionare il modello email."; +$LANG["notify_no_emails_defined"] = "E-mail non sono state definite per questo modulo. Per aggiungere uno nuovo, fare clic sul bottone qui sotto."; +$LANG["notify_no_field_settings"] = "Questo tipo di campo non contiene ulteriori impostazioni."; +$LANG["notify_no_fields_in_tab"] = "Questa linguetta non contiene alcun campo."; +$LANG["notify_no_option_lists"] = "Non ci sono opzione elenchi definiti. Fare clic sul pulsante qui sotto per crearne uno nuovo."; +$LANG["notify_no_test_submission"] = "Strumenti di forma non ha ricevuto una comunicazione di successo prova ancora."; +$LANG["notify_no_user_email_fields_configured"] = "Nota: se si desidera inviare una mail a qualsiasi indirizzo di posta elettronica che è stato incluso nella forma, è necessario prima configurare i campi modulo e-mail."; +$LANG["notify_no_views"] = "Il modulo non ha nessun Visite creato! Avrete bisogno di almeno un Vista in modo da gestire i dati del modulo."; +$LANG["notify_no_views_assigned_to_client_form"] = "Sembra che l'account utente non è stato assegnato a qualsiasi forma Viste, quindi non sarà in grado di visualizzare tutti i dati. Si prega di contattare l'amministratore per ulteriori informazioni."; +$LANG["notify_no_views_defined"] = "Non è necessario alcun Visto definito. Non sarà in grado di visualizzare affermazioni di tale modulo, a meno che almeno uno View è creato. Clicca sul bottone qui sotto per creare la visualizzazione di default."; +$LANG["notify_option_list_deleted"] = "L'elenco delle opzioni è stato eliminato."; +$LANG["notify_option_list_updated"] = "L'elenco delle opzioni è stato aggiornato."; +$LANG["notify_public_form_omit_list_updated"] = "Il client omettere lista per questo modulo è stato aggiornato."; +$LANG["notify_public_view_omit_list_updated"] = "Il client omettere lista per questo Vista è stato aggiornato."; +$LANG["notify_required_admin_pages"] = "Le pagine seguenti sono richieste nel menu amministratore: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Ci dispiace, non c'era alcuna attività per un po 'così abbiamo dovuto si uscirà. Si prega di accedere nuovamente al di sotto."; +$LANG["notify_setup_options_updated"] = "L'aggiornamento delle opzioni di configurazione ha avuto successo."; +$LANG["notify_smart_fill_field_not_found"] = "Non siamo riusciti a trovare un campo con questo nome ({\$field_name}) nella forma (s) specificati. È possibile impostare manualmente il tipo di campo sottostante, oppure fare clic sul pulsante Vai per modificare questo campo in seguito."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Il file (s) sono state caricate correttamente. Prova a cliccare sul pulsante Smart Fill per riprovare. Se questo passaggio non riesce, avrete bisogno di saltare questo passaggio e configurare i campi modulo manally più tardi."; +$LANG["notify_smart_fill_submitted"] = "La forma è stata presentata. A seconda delle dimensioni del vostro modello e numero di opzioni di campo, questo potrebbe richiedere del tempo."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Ci dispiace, uno o più file che hai inserito non può essere caricato. Hai bisogno di saltare questo passaggio e configurare i campi manualmente."; +$LANG["notify_submission_and_files_deleted"] = "La cancellazione dell'invio e di ogni file ad esso associato/i ha avuto successo."; +$LANG["notify_submission_copied"] = "L'invio è stato copiato."; +$LANG["notify_submission_copied_edit"] = "L'invio è stato copiato. Puoi modificarlo qui sotto."; +$LANG["notify_submission_deleted"] = "La cancellazione dell'invio ha avuto successo."; +$LANG["notify_submission_deleted_with_problems"] = "L'invio è stato cancllato, ma si sono verificati i seguenti problemi nel corso della cancellazione del/dei seguenti file:"; +$LANG["notify_submission_id_not_found"] = "L'ID di invio non è stato trovato."; +$LANG["notify_submission_not_updated"] = "Non è stato possibile aggiornare l'invio."; +$LANG["notify_submissions_and_files_deleted"] = "La cancellazione degli invii e di ogni file ad esso associato ha avuto successo."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} invii sono stati copiati."; +$LANG["notify_submissions_deleted"] = "La cancellazione degli invii ha avuto successo."; +$LANG["notify_submissions_deleted_with_problems"] = "Gli invii sono stati cancellati, ma si sono verificati i seguento problemi nel corso della cancellazione del/dei seguenti file:"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Il vostro messaggio email di prova non può essere spedito."; +$LANG["notify_theme_cache_folder_not_writable"] = "Questo tema cartella della cache non è modificabile. Al fine di consentire questo tema, la {\$folder} cartella ha bisogno di avere accesso completo in lettura-scrittura."; +$LANG["notify_theme_list_updated"] = "La lista dei temi è stata aggiornata"; +$LANG["notify_themes_settings_updated"] = "Le impostazioni del tema sono state aggiornate."; +$LANG["notify_view_deleted"] = "La vista è stata cancellata."; +$LANG["notify_view_group_deleted"] = "Il gruppo di Vista è stato eliminato."; +$LANG["notify_view_missing_columns"] = "Oops! Ci dispiace, questa visione non è stato ancora completamente allestita."; +$LANG["notify_view_missing_columns_admin_fix"] = "Clicca qui per specificare quali campi devono apparire come colonne in questa pagina."; +$LANG["notify_view_updated"] = "La vista è statat aggiornata."; +$LANG["notify_your_email_sent"] = "La spedizione del messaggio email ha avuto successo."; +$LANG["phrase_100_per_page"] = "100 per pagina"; +$LANG["phrase_10_per_page"] = "10 per pagina"; +$LANG["phrase_15_per_page"] = "15 per pagina"; +$LANG["phrase_1_direct"] = "1. Diretto"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per pagina"; +$LANG["phrase_25_per_page"] = "25 per pagina"; +$LANG["phrase_2_code"] = "2. Con codice"; +$LANG["phrase_2_columns"] = "2 Colonne"; +$LANG["phrase_2chars"] = "2 caratteri"; +$LANG["phrase_3_columns"] = "3 colonne"; +$LANG["phrase_4_columns"] = "4 colonne"; +$LANG["phrase_50_per_page"] = "50 Per pagina"; +$LANG["phrase_accepting_submissions"] = "(accetta invii)"; +$LANG["phrase_access_admin_account_c"] = "Potete accedere all'account amministratore da qui:"; +$LANG["phrase_access_type"] = "Tipo di accesso"; +$LANG["phrase_account_info"] = "Informazioni account"; +$LANG["phrase_account_settings"] = "Configurazione account"; +$LANG["phrase_action_needed"] = "Azione necessaria"; +$LANG["phrase_add_client"] = "AGGIUNGI CLIENTE"; +$LANG["phrase_add_client_menu"] = "Aggiungi menù cliente"; +$LANG["phrase_add_default_settings_rightarrow"] = "Aggiungi impostazioni predefinite »"; +$LANG["phrase_add_field"] = "Aggiungi campo"; +$LANG["phrase_add_fields"] = "AGGIUNGI CAMPI"; +$LANG["phrase_add_fields_rightarrow"] = "Aggiungi campo (s) »"; +$LANG["phrase_add_form"] = "Aggiungi modulo"; +$LANG["phrase_add_form_external"] = "Aggiungi form - Esterno"; +$LANG["phrase_add_form_internal"] = "Aggiungi form - Interno"; +$LANG["phrase_add_new_group_rightarrow"] = "Aggiungi nuovo gruppo »"; +$LANG["phrase_add_num_rows"] = "Aggiungi {\$number} riga/righe"; +$LANG["phrase_add_row"] = "Aggiungi riga »"; +$LANG["phrase_add_submission_button"] = "Aggiungi pulsante invio"; +$LANG["phrase_add_view_rightarrow"] = "Aggiungi Visualizza »"; +$LANG["phrase_adding_multi_page_form"] = "Aggiungi un modulo multi pagina con API"; +$LANG["phrase_adding_single_page_form"] = "Aggiungi un modulo a pagina singola con API"; +$LANG["phrase_admin_menu"] = "Menù amministratore"; +$LANG["phrase_admin_only"] = "Solo per amministratore"; +$LANG["phrase_admin_panel"] = "Pannello Amministratore"; +$LANG["phrase_administrator_theme"] = "Tema amministratore"; +$LANG["phrase_advanced_settings_rightarrow"] = "Configurazione avanzata »"; +$LANG["phrase_all_X_results_selected"] = "Tutti i {\$numresults} risultati selezionati"; +$LANG["phrase_all_clients"] = "Tutti i clienti"; +$LANG["phrase_all_clients_except_c"] = "Tutti i clienti tranne:"; +$LANG["phrase_all_clients_have_access"] = "(accesso per tutti i clienti)"; +$LANG["phrase_all_fields"] = "Tutti i campi"; +$LANG["phrase_all_fields_displayed"] = "Tutti i campi sono mostrati"; +$LANG["phrase_all_statuses"] = "Tutte le condizioni"; +$LANG["phrase_all_submissions"] = "Tutti gli invii"; +$LANG["phrase_allow_fields_edited"] = "Consenti la modifica dei campi"; +$LANG["phrase_alphanumeric"] = "Alfanumerici (AZ, 0-9)"; +$LANG["phrase_api_version"] = "Versione API"; +$LANG["phrase_apply_timezone_offset"] = "Applicare differenza di fuso orario"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Assegnare tutti gli account di cui client di {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Assegnare tutti gli account di cui client di {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Ai confini del"; +$LANG["phrase_at_start"] = "All'avvio"; +$LANG["phrase_author_link"] = "Link dell'autore"; +$LANG["phrase_auto_disable_account"] = "conto autobloccanti # dopo tentativi falliti di login"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Clienti disponibili"; +$LANG["phrase_available_fields"] = "Campi disponibili"; +$LANG["phrase_available_option_lists"] = "Elenchi opzioni disponibili"; +$LANG["phrase_available_swatches"] = "Campioni disponibili"; +$LANG["phrase_available_swatches_c"] = "Campioni disponibili:"; +$LANG["phrase_available_tabs"] = "Schede disponibili"; +$LANG["phrase_available_views"] = "Viste disponibili"; +$LANG["phrase_awaiting_form_submission"] = "In attesa di invio del modulo."; +$LANG["phrase_back_to_field_list"] = "« torna alla lista dei campi"; +$LANG["phrase_back_to_search_results"] = "torna ai risultati di ricerca"; +$LANG["phrase_base_view_on"] = "Base Vista sul ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Cambia le credenziali di accesso"; +$LANG["phrase_characters_limit_p"] = "personaggi limite."; +$LANG["phrase_check_db_settings_try_again"] = "Per favore controlla nuovamente la configurazione del database e clicca di nuovo il pulsante Continua"; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Verifica URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Pulisci"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Elimina lista di esclusione"; +$LANG["phrase_client_account_settings"] = "Configurazione account cliente"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Client Filtri mappa »"; +$LANG["phrase_client_may_edit"] = "Il cliente può modificare"; +$LANG["phrase_client_menu"] = "Menù cliente"; +$LANG["phrase_clients_can_access_form"] = "Clienti che possono accedere al modulo"; +$LANG["phrase_clients_can_access_view"] = "Clienti che possono accedere alla vista"; +$LANG["phrase_clients_cannot_access_form"] = "Clienti che non possono accedere al modulo"; +$LANG["phrase_clients_cannot_access_view"] = "Clienti che non possono accedere alla vista"; +$LANG["phrase_clients_may_edit"] = "I clienti possono modificare"; +$LANG["phrase_code_c"] = "Codice di errore:"; +$LANG["phrase_code_markup_field"] = "Codice / Markup campo"; +$LANG["phrase_code_markup_type"] = "Codice / Markup Tipo"; +$LANG["phrase_codes_c"] = "Codici di errore:"; +$LANG["phrase_column_width"] = "Larghezza colonna"; +$LANG["phrase_company_name"] = "Nome della società"; +$LANG["phrase_configure_form_email_fields"] = "Configura i campi del modulo email"; +$LANG["phrase_confirm_folder_url_match"] = "Conferma cartella - controllo URL"; +$LANG["phrase_connect_rows"] = "Collegare file"; +$LANG["phrase_copy_email_settings_from"] = "Copia la configurazione email da..."; +$LANG["phrase_copy_settings_from"] = "Copia la configurazione da..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Versione Core"; +$LANG["phrase_create_account"] = "Crea account"; +$LANG["phrase_create_admin_account"] = "Crea account amministratore"; +$LANG["phrase_create_config_file"] = "Crea file di configurazione"; +$LANG["phrase_create_database_tables"] = "Crea tabelle del database"; +$LANG["phrase_create_default_view"] = "Crea vista di default"; +$LANG["phrase_create_file"] = "Crea file"; +$LANG["phrase_create_group"] = "Crea gruppo"; +$LANG["phrase_create_new_email"] = "Crea nuova email"; +$LANG["phrase_create_new_menu"] = "Crea nuovo menù"; +$LANG["phrase_create_new_option_list"] = "Crea nuovo elenco Opzione"; +$LANG["phrase_create_new_option_list_group"] = "Crea nuovo gruppo lista delle opzioni"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Crea nuovo elenco Opzione »"; +$LANG["phrase_create_new_view"] = "Crea nuova vista"; +$LANG["phrase_create_new_view_group"] = "Crea nuovo gruppo di Vista"; +$LANG["phrase_custom_display_format"] = "Formato di visualizzazione personalizzati"; +$LANG["phrase_custom_recipient"] = "Destinatario personalizzato"; +$LANG["phrase_custom_url"] = "URL personalizzato"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Tipo di dati"; +$LANG["phrase_database_hostname"] = "Nome host del database"; +$LANG["phrase_database_name"] = "Nome del database"; +$LANG["phrase_database_password"] = "Password del database"; +$LANG["phrase_database_settings"] = "Configurazione del database"; +$LANG["phrase_database_setup"] = "Impostazione database"; +$LANG["phrase_database_table_prefix"] = "Prefisso delle tavole del database"; +$LANG["phrase_database_username"] = "Nome utente del database"; +$LANG["phrase_date_format"] = "Formato della data"; +$LANG["phrase_db_column"] = "Colonna DB"; +$LANG["phrase_db_setup_page_4"] = "4. Configurazione del database"; +$LANG["phrase_default_client_account_theme"] = "Tema di base per gli account cliente"; +$LANG["phrase_default_date_field_search_value"] = "Data predefinita campo del valore di ricerca"; +$LANG["phrase_default_language"] = "Lingua di base"; +$LANG["phrase_default_menu"] = "Menù di base"; +$LANG["phrase_default_sessions_timeout"] = "Scadenza sessione di base"; +$LANG["phrase_default_sort_order"] = "Ordinamento di base"; +$LANG["phrase_default_tab_label"] = "Dati"; +$LANG["phrase_default_theme"] = "Tema di base"; +$LANG["phrase_default_value"] = "Valore di default"; +$LANG["phrase_default_values"] = "Valori predefiniti"; +$LANG["phrase_default_values_new_submissions"] = "I valori di default per nuove presentazioni"; +$LANG["phrase_delete_field"] = "Elimina campo"; +$LANG["phrase_delete_form"] = "CANCELLA MODULO"; +$LANG["phrase_delete_row"] = "Elimina riga"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Cancella file associati assieme all'invio"; +$LANG["phrase_delete_view"] = "Cancella vista"; +$LANG["phrase_disconnect_rows"] = "Scollegare filari"; +$LANG["phrase_display_email"] = "Mostra email"; +$LANG["phrase_display_name"] = "Mostra nome"; +$LANG["phrase_display_text"] = "Mostra testo"; +$LANG["phrase_display_value"] = "Mostra valore"; +$LANG["phrase_edit_admin_menu"] = "Modifica menù amministratore"; +$LANG["phrase_edit_client"] = "Modifica cliente"; +$LANG["phrase_edit_client_menu"] = "Modifica menù cliente"; +$LANG["phrase_edit_email_template"] = "Modifica modello email"; +$LANG["phrase_edit_field"] = "Modifica campo"; +$LANG["phrase_edit_field_c"] = "Modifica campo:"; +$LANG["phrase_edit_form"] = "Modifica modulo"; +$LANG["phrase_edit_form_access_type_b"] = "[Modifica accesso di tipo forma]"; +$LANG["phrase_edit_option_list"] = "Modifica elenco Opzione"; +$LANG["phrase_edit_submission"] = "Modifica invio"; +$LANG["phrase_edit_submission_label"] = "Modifica Etichetta invio"; +$LANG["phrase_edit_view"] = "Modifica vista"; +$LANG["phrase_email_format"] = "Formato email"; +$LANG["phrase_email_settings"] = "IMPOSTAZIONI EMAIL"; +$LANG["phrase_email_template"] = "Template email"; +$LANG["phrase_email_template_name"] = "Nome modello email"; +$LANG["phrase_error_learn_more"] = "Ulteriori informazioni su questo errore."; +$LANG["phrase_error_text_intro"] = "Per favore rimediate al seguente errore/i e inviate nuovamente:"; +$LANG["phrase_errors_learn_more"] = "Cliccate sui codici di errore per avere ulteriori informazioni."; +$LANG["phrase_event_trigger"] = "Evento Trigger"; +$LANG["phrase_external_form"] = "Modulo esterno"; +$LANG["phrase_external_form_info"] = "Modulo Info esterni"; +$LANG["phrase_external_your_own_form"] = "Esterno (il modulo proprio)"; +$LANG["phrase_field_comments"] = "Commenti campo"; +$LANG["phrase_field_label"] = "Etichetta del campo"; +$LANG["phrase_field_options"] = "Opzioni del campo"; +$LANG["phrase_field_size"] = "Grandezza del campo"; +$LANG["phrase_field_skipped"] = "Campo non considerato"; +$LANG["phrase_field_specific_settings"] = "Campo Impostazioni specifiche"; +$LANG["phrase_field_type"] = "Tipo di campo"; +$LANG["phrase_field_type_no_validation"] = "Non ci sono regole di validazione disponibile per questo tipo di campo."; +$LANG["phrase_field_types"] = "Tipi di campo"; +$LANG["phrase_field_value"] = "Valore del campo"; +$LANG["phrase_field_values_to_display_values"] = "Valori del campo » Valori mostrati"; +$LANG["phrase_final_touches_page_6"] = "6. Ultimi tocchi"; +$LANG["phrase_finalize_form"] = "Approva modulo"; +$LANG["phrase_first_name"] = "Nome"; +$LANG["phrase_footer_text"] = "Testo a piè di pagina"; +$LANG["phrase_for_any_form_submission"] = "Per qualunque invio di modulo"; +$LANG["phrase_for_view_submissions"] = "Solo per gli invii nella pagina Vista:"; +$LANG["phrase_forgot_password"] = "PAROLA CHIAVE DIMENTICATA?"; +$LANG["phrase_form_already_selected"] = "Modulo già selezionato"; +$LANG["phrase_form_email_field_b_c"] = "Modulo [email campo]:"; +$LANG["phrase_form_email_field_configuration"] = "Configurazione campo email modulo"; +$LANG["phrase_form_email_fields"] = "Campi modulo e-mail"; +$LANG["phrase_form_field"] = "Campo del modulo"; +$LANG["phrase_form_field_contents"] = "Modulo di campo Contenuto"; +$LANG["phrase_form_field_name"] = "Nome del campo del modulo"; +$LANG["phrase_form_field_placeholders"] = "Forma di campo segnaposto"; +$LANG["phrase_form_fields"] = "Campi del modulo"; +$LANG["phrase_form_info"] = "Informazioni sul modulo"; +$LANG["phrase_form_info_2"] = "2. Informazioni sul modulo"; +$LANG["phrase_form_list"] = "Modulo Lista"; +$LANG["phrase_form_name"] = "Nome del modulo"; +$LANG["phrase_form_page"] = "Pagina del modulo"; +$LANG["phrase_form_placeholders"] = "SEGNAPOSTO DEL MODULO"; +$LANG["phrase_form_submission"] = "INVIO MODULO"; +$LANG["phrase_form_submissions"] = "Invii del modulo"; +$LANG["phrase_form_type"] = "Tipo di modulo"; +$LANG["phrase_form_url"] = "URL del modulo"; +$LANG["phrase_form_urls"] = "Modulo di URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Forme assegnato a qualsiasi account"; +$LANG["phrase_forms_page_default_message"] = "Forme pagina messaggio predefinito"; +$LANG["phrase_ft_installation"] = "Script di installazione di Form Tools"; +$LANG["phrase_full_width"] = "Larghezza totale"; +$LANG["phrase_getting_started"] = "iniziare"; +$LANG["phrase_global_placeholders"] = "SEGNAPOSTO GLOBALI"; +$LANG["phrase_group_name"] = "Nome del gruppo"; +$LANG["phrase_group_options_q"] = "Opzioni di gruppo?"; +$LANG["phrase_group_rows"] = "Gruppo di file"; +$LANG["phrase_have_fun"] = "Divertiti!"; +$LANG["phrase_highlight_colour"] = "Evidenziare Colore"; +$LANG["phrase_html_email"] = "Email HTML"; +$LANG["phrase_html_template"] = "Modello HTML"; +$LANG["phrase_images_media"] = "Immagini / media"; +$LANG["phrase_import_option_list_rightarrow"] = "Importa Opzione Lista »"; +$LANG["phrase_input_length"] = "Lunghezza di ingresso"; +$LANG["phrase_installation_help"] = "Guida installazione"; +$LANG["phrase_internal_form"] = "Modulo interno"; +$LANG["phrase_ip_address"] = "Indirizzo IP"; +$LANG["phrase_is_multi_page_form_q"] = "Si tratta di un form a più pagine?"; +$LANG["phrase_label_response_placeholders"] = "Etichetta / Response Segnaposto"; +$LANG["phrase_large_300px"] = "Di grandi dimensioni (300px)"; +$LANG["phrase_large_400px"] = "Di grandi dimensioni (400px)"; +$LANG["phrase_last_7_days"] = "Ultimi 7 giorni"; +$LANG["phrase_last_logged_in"] = "Ultima connessione"; +$LANG["phrase_last_modified"] = "Ultima modifica"; +$LANG["phrase_last_modified_date"] = "Data dell'ultima modifica"; +$LANG["phrase_last_name"] = "Cognome"; +$LANG["phrase_letters_only"] = "Solo lettere"; +$LANG["phrase_light_brown"] = "Nocciola"; +$LANG["phrase_limit_email_content"] = "Limita il contenuto email nei campi nella pagina Vista"; +$LANG["phrase_loading_ellipsis"] = "Caricamento in corso ..."; +$LANG["phrase_log_in"] = "CONNESSIONE"; +$LANG["phrase_login_as_user"] = "Accedere come questo utente"; +$LANG["phrase_login_info"] = "Informazioni di connessione"; +$LANG["phrase_login_page"] = "Pagina di connessione"; +$LANG["phrase_login_panel_c"] = "Pannello di connessione:"; +$LANG["phrase_login_panel_leftarrows"] = "« Pannello di connessione"; +$LANG["phrase_login_password"] = "Password di connessione"; +$LANG["phrase_login_username"] = "Nome utente per la connessione"; +$LANG["phrase_logo_link_url"] = "URL per il link del logo"; +$LANG["phrase_logout_url"] = "URL di disconnessione"; +$LANG["phrase_main_nav"] = "Nav principale"; +$LANG["phrase_main_settings"] = "Impostazioni principali"; +$LANG["phrase_manage_client"] = "Gestisci cliente"; +$LANG["phrase_manage_client_omit_list"] = "Gestire client Omettere Lista"; +$LANG["phrase_max_file_size"] = "Taglia massima file"; +$LANG["phrase_max_length"] = "Lunghezza massima"; +$LANG["phrase_max_length_words_chars"] = "- Lunghezza massima (parole / caratteri)"; +$LANG["phrase_may_add_submissions"] = "Può aggiungere Presentato"; +$LANG["phrase_may_copy_submissions"] = "Can copy submissions"; +$LANG["phrase_may_delete_submissions"] = "Presentato può cancellare"; +$LANG["phrase_medium_150px"] = "Medio (150px)"; +$LANG["phrase_medium_200px"] = "Medio (200px)"; +$LANG["phrase_menu_name"] = "Nome del menù"; +$LANG["phrase_menu_type"] = "Tipo di menù"; +$LANG["phrase_min_password_length"] = "Lunghezza minima password"; +$LANG["phrase_module_description"] = "Descrizione plug-in"; +$LANG["phrase_module_info"] = "Informazioni plug-in"; +$LANG["phrase_module_nav"] = "Nav plug-in"; +$LANG["phrase_month_to_date"] = "Mese fino ad oggi"; +$LANG["phrase_multi_select"] = "Selezione multipla"; +$LANG["phrase_multi_select_dropdown"] = "Menù a discesa a selezione multipla"; +$LANG["phrase_multiple_fields_found"] = "Trovati campi multipli!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nome e Cognome"; +$LANG["phrase_new_blank_email"] = "Nuova email vuota"; +$LANG["phrase_new_blank_option_list"] = "Nuovo elenco Opzione vuoto"; +$LANG["phrase_new_blank_view"] = "Nuova vista vuota"; +$LANG["phrase_new_ft_installation"] = "Nuova installazione di Form Tools"; +$LANG["phrase_new_option_list"] = "Opzione Nuovo elenco"; +$LANG["phrase_new_password"] = "Nuova password"; +$LANG["phrase_new_password_reenter"] = "Nuova password (riscrivetela)"; +$LANG["phrase_new_view"] = "Nuova vista"; +$LANG["phrase_new_view_all_fields"] = "New View - Tutti i campi"; +$LANG["phrase_next_client"] = "prossimo cliente »"; +$LANG["phrase_next_field"] = "campo successivo »"; +$LANG["phrase_next_form"] = "modulo successivo »"; +$LANG["phrase_next_view"] = "vista successiva »"; +$LANG["phrase_no_clients"] = "Nessun cliente"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Nessuna differenza"; +$LANG["phrase_no_option_lists_available"] = "Nessuna opzione elenchi disponibili."; +$LANG["phrase_no_views"] = "Nessuna vista"; +$LANG["phrase_no_views_with_filters_p"] = "(Senza vista con filtri definiti)"; +$LANG["phrase_none_not_recommended"] = "Nessuno (non consigliato)"; +$LANG["phrase_not_assigned_to_option_list"] = "Questo campo non è assegnato a una lista di opzioni."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "NON è uguale a"; +$LANG["phrase_not_found"] = "Non trovato!"; +$LANG["phrase_not_like"] = "NON simile a"; +$LANG["phrase_not_visible_to_client"] = "(non visibile al cliente)"; +$LANG["phrase_num_clients_per_page"] = "N. di clienti per pagina"; +$LANG["phrase_num_emails_per_page"] = "N. di email per pagina"; +$LANG["phrase_num_fields"] = "Numero di campi"; +$LANG["phrase_num_forms_per_page"] = "N. di moduli per pagina"; +$LANG["phrase_num_menus_per_page"] = "N. di menù per pagina"; +$LANG["phrase_num_modules_per_page"] = "N. di moduli per pagina"; +$LANG["phrase_num_option_lists_per_page"] = "Elenchi Opzione numero per pagina"; +$LANG["phrase_num_options"] = "Num Opzioni"; +$LANG["phrase_num_rows"] = "Num Righe"; +$LANG["phrase_numbers_only"] = "Solo numeri"; +$LANG["phrase_often_localhost"] = "(spesso \"localhost\")"; +$LANG["phrase_on_form_submission"] = "All'invio del modulo"; +$LANG["phrase_one_char_number"] = "Almeno un carattere è un numero (0-9)"; +$LANG["phrase_one_char_upper"] = "Almeno un carattere maiuscolo"; +$LANG["phrase_one_special_char"] = "Almeno uno dei {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(possono accedere solo clienti specifici)"; +$LANG["phrase_open_form_in_dialog"] = "Forma aperta nella finestra di dialogo"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Aprire il modulo in una nuova finestra scheda /"; +$LANG["phrase_option_list"] = "Opzione Lista"; +$LANG["phrase_option_list_name"] = "Opzione Lista Nome"; +$LANG["phrase_option_list_or_contents"] = "Opzione Elenco / Contents"; +$LANG["phrase_option_lists"] = "Opzione Elenchi"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Titoli di pagina"; +$LANG["phrase_pass_on"] = "Passa"; +$LANG["phrase_password_min"] = "Essa deve essere di almeno {\$length} caratteri."; +$LANG["phrase_password_one_number"] = "Deve contenere almeno un numero (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Essa deve contenere almeno una lettera maiuscola."; +$LANG["phrase_password_requirements_c"] = "Password requisiti:"; +$LANG["phrase_password_reset"] = "Azzeramento password"; +$LANG["phrase_password_special_char"] = "Deve contenere almeno uno dei seguenti caratteri: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permessi / Altre impostazioni"; +$LANG["phrase_permitted_file_types"] = "Tipi di file consentiti"; +$LANG["phrase_phone_number"] = "Numero di telefono"; +$LANG["phrase_phone_number_format"] = "Formato numero di telefono"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "Taglia massima dei file caricabili:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Versione PHP"; +$LANG["phrase_please_confirm"] = "Conferma"; +$LANG["phrase_please_enter_license_key"] = "Inserisci il tuo codice di licenza"; +$LANG["phrase_please_select"] = "Seleziona"; +$LANG["phrase_please_select_form"] = "Selezionate un modulo"; +$LANG["phrase_prev_client"] = "«Precedente cliente"; +$LANG["phrase_prev_form"] = "«Precedente forma"; +$LANG["phrase_prevent_password_reuse"] = "Impedire il riutilizzo delle # password scorso"; +$LANG["phrase_previous_field"] = "« campo precedente"; +$LANG["phrase_previous_page"] = "Pagina precedente"; +$LANG["phrase_previous_view"] = "«Precedente Vista"; +$LANG["phrase_program_name"] = "Nome del programma"; +$LANG["phrase_public_form_omit_list"] = "Lista di esclusione da modulo pubblico"; +$LANG["phrase_public_view_omit_list"] = "Lista di esclusione da vista pubblica"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "C'è stato un problema con la seguente query:"; +$LANG["phrase_radio_buttons"] = "Pulsanti radio"; +$LANG["phrase_random_form_submission"] = "Invio di un modulo a caso"; +$LANG["phrase_re_enter_password"] = "Immettete nuovamente la parola chiave"; +$LANG["phrase_recipient_type"] = "Tipo di destinatario"; +$LANG["phrase_redirect_url"] = "Rinvia all'URL"; +$LANG["phrase_refresh_list"] = "Aggiorna lista"; +$LANG["phrase_refresh_module_list"] = "Aggiorna lista plug-in"; +$LANG["phrase_refresh_page"] = "AGGIORNA PAGINA"; +$LANG["phrase_refresh_theme_list"] = "Aggiorna lista temi"; +$LANG["phrase_register_new_email"] = "Nuovo registro e-mail"; +$LANG["phrase_remaining_characters"] = "caratteri rimanenti"; +$LANG["phrase_remaining_words"] = "parole rimanenti"; +$LANG["phrase_remove_tabs"] = "Elimina linguette"; +$LANG["phrase_required_password_chars"] = "caratteri della password necessaria"; +$LANG["phrase_resend_test_submission"] = "NUOVO INVIO DI PROVA"; +$LANG["phrase_return_form_list"] = "TORNA ALLA LISTA DEI MODULI"; +$LANG["phrase_row_selected"] = "{\$num_rows} riga selezionata"; +$LANG["phrase_rows_selected"] = "{\$num_rows} righe selezionate"; +$LANG["phrase_sample_data"] = "Dati di esempio"; +$LANG["phrase_save_changes"] = "Salva le modifiche"; +$LANG["phrase_search_keyword"] = "Ricerca per parole chiave"; +$LANG["phrase_security_settings"] = "Impostazioni di sicurezza"; +$LANG["phrase_select_all"] = "Seleziona tutti"; +$LANG["phrase_select_all_X_results"] = "Selezionate tutti i {\$numresults} risultati"; +$LANG["phrase_select_all_on_page"] = "Seleziona tutti sulla pagina"; +$LANG["phrase_select_date"] = "Selezionare la data"; +$LANG["phrase_select_field"] = "Seleziona Campo"; +$LANG["phrase_select_swatch"] = "Seleziona campione"; +$LANG["phrase_selected_clients"] = "Clienti selezionati"; +$LANG["phrase_selected_views"] = "Viste selezionate"; +$LANG["phrase_send_email"] = "Invia email"; +$LANG["phrase_send_test_email"] = "INVIA EMAIL DI PROVA"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Scadenza sessione"; +$LANG["phrase_setting_value"] = "Valore di impostazione"; +$LANG["phrase_setup_options"] = "Opzioni di configurazione"; +$LANG["phrase_show_all"] = "Mostra tutti"; +$LANG["phrase_show_form"] = "Mostra modulo"; +$LANG["phrase_size_large"] = "Grande (TEXT)"; +$LANG["phrase_size_medium"] = "Medio (<=256 caratt.)"; +$LANG["phrase_size_small"] = "Piccolo (<=20 caratt.)"; +$LANG["phrase_size_tiny"] = "Minimo (<=5 caratt.)"; +$LANG["phrase_size_very_large"] = "Molto grande (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Salta campo"; +$LANG["phrase_skip_step"] = "Salta passo"; +$LANG["phrase_small_100px"] = "Piccolo (100px)"; +$LANG["phrase_small_80px"] = "Piccola (80px)"; +$LANG["phrase_smart_fill"] = "RIEMPIMENTO AUTOMATICO"; +$LANG["phrase_smart_fill_fields_from_c"] = "Riempi campi con riferimento da:"; +$LANG["phrase_smart_fill_user_documentation"] = "Documentazione utente sul riempimento campi »"; +$LANG["phrase_sort_as"] = "Ordina come"; +$LANG["phrase_special_fields"] = "Campi speciali"; +$LANG["phrase_standard_fields"] = "I campi di serie"; +$LANG["phrase_standard_filters"] = "Standard filtri »"; +$LANG["phrase_step_1"] = "Passo 1"; +$LANG["phrase_step_2"] = "Passo 2"; +$LANG["phrase_step_3"] = "Passo 3"; +$LANG["phrase_step_4"] = "Passo 4"; +$LANG["phrase_step_5"] = "Passo 5"; +$LANG["phrase_step_6"] = "Passo 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Elimina etichette dagli invii del modulo"; +$LANG["phrase_subject_line"] = "Oggetto"; +$LANG["phrase_submission_date"] = "Data di invio"; +$LANG["phrase_submission_id"] = "ID invio"; +$LANG["phrase_submission_made"] = "Invio effettuato il {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Tipo di invio"; +$LANG["phrase_submissions_per_page"] = "Invii per pagina"; +$LANG["phrase_system_check"] = "Controllo del sistema"; +$LANG["phrase_system_fields_no_validation"] = "Non si può aggiungere la convalida a campi di sistema."; +$LANG["phrase_system_time_offset"] = "Differenza oraria del server"; +$LANG["phrase_tab_label"] = "Etichetta della linguetta"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Controlla permessi della cartella"; +$LANG["phrase_test_submission"] = "Invio di prova"; +$LANG["phrase_test_submission_3"] = "3. Invio di prova"; +$LANG["phrase_test_submission_received"] = "L'invio di prova è stato ricevuto"; +$LANG["phrase_text_and_html"] = "Testo & HTML"; +$LANG["phrase_text_email"] = "Email di testo"; +$LANG["phrase_text_template"] = "Modello di testo"; +$LANG["phrase_the_previous_month"] = "Il mese precedente"; +$LANG["phrase_theme_description"] = "Tema Descrizione"; +$LANG["phrase_theme_info"] = "Informazioni sul tema"; +$LANG["phrase_tiny_30px"] = "Piccola (30px)"; +$LANG["phrase_tiny_50px"] = "Piccola (50px)"; +$LANG["phrase_total_results_c"] = "Totale risultati:"; +$LANG["phrase_type_c"] = "Tipo di errore:"; +$LANG["phrase_unselect_all"] = "Deseleziona tutti"; +$LANG["phrase_update_accounts"] = "Aggiorna account"; +$LANG["phrase_update_email_template"] = "Aggiorna modello email"; +$LANG["phrase_update_field"] = "Aggiorna campo"; +$LANG["phrase_update_order"] = "Aggiorna Ordine"; +$LANG["phrase_update_view"] = "Aggiorna vista"; +$LANG["phrase_upload_file"] = "Aggiorna file"; +$LANG["phrase_upload_files"] = "Aggiorna file"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Percorso cartella di caricamento"; +$LANG["phrase_upload_folder_url"] = "URL della cartella di caricamento"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Usa il valore predefinito?"; +$LANG["phrase_used_by_num_form_fields"] = "Utilizzati da # campi modulo"; +$LANG["phrase_uses_swatches"] = "Utilizza Campioni"; +$LANG["phrase_valid_email"] = "E-mail valido"; +$LANG["phrase_validation_error"] = "Errore di convalida"; +$LANG["phrase_validation_rule"] = "Regola di convalida"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Visualizza Group"; +$LANG["phrase_view_id"] = "Vedi ID"; +$LANG["phrase_view_name"] = "Mostra nome"; +$LANG["phrase_view_placeholders"] = "Visualizza Segnaposto"; +$LANG["phrase_view_submissions"] = "Rivedi invii"; +$LANG["phrase_view_uploaded_files"] = "mostra file allegati"; +$LANG["phrase_viewing_range"] = "[sto visualizzando da {\$startnum} a {\$endnum}]"; +$LANG["phrase_when_sent"] = "Dopo l'invio"; +$LANG["phrase_when_submission_is_deleted"] = "Quando l'invio viene cancellato"; +$LANG["phrase_when_submission_is_edited"] = "Quando l'invio viene modificato"; +$LANG["phrase_who_can_access"] = "Chi può accedere?"; +$LANG["phrase_word_limit_p"] = "parola limite."; +$LANG["phrase_year_to_date"] = "Da inizio anno"; +$LANG["phrase_yes_for_all_views"] = "Sì, per tutte le viste"; +$LANG["phrase_yes_for_specific_views"] = "Sì, per viste specifiche"; +$LANG["phrase_your_account"] = "Il vostro account"; +$LANG["phrase_your_email"] = "Email"; +$LANG["phrase_your_email_address"] = "Indirizzo email"; +$LANG["processing_form_disabled"] = "Spiacenti, questo modulo è stato disabilitato."; +$LANG["processing_form_incomplete"] = "Spiacenti, ma questo modulo non sembra essere stato pienamente configurato da Form Tools. La causa più probabile del problema è che avete cancellato il campo nascosto \"form_tools_initialize_form\", ma non avete completato tutti i passi del procedimento di \"Aggiunta modulo\".

    Connettetevi e ricontrollate la configurazione del modulo."; +$LANG["processing_init_complete"] = "Grazie! Il vostro invio di prova è stato ricevuto correttamente. Ritornate al pannello di amministrazione di Form Tools e cliccate il pulsante \"Ricarica\" nella parte inferiore della pagina \"Aggiunta modulo - Passo 3\" per completare la configurazione del modulo."; +$LANG["processing_invalid_form_id"] = "Spiacenti, questo non sembra essere un ID di forma valida."; +$LANG["processing_no_form_id"] = "process.php ha bisogno dell'ID del modulo per poter effettuare l'elaborazione. Sinceratevi che il vostro modulo contenga un campo nascosto denominato \"form_tools_form_id\" che possa inviare l'ID attraverso il modulo."; +$LANG["processing_no_form_url_for_recaptcha"] = "Forma Tools è in grado di determinare dove reindirizzare se non riescono a entrare nel CAPTCHA correttamente. Si prega di passare in un campo nascosto con il nome form_tools_form_url contenente l'URL del modulo."; +$LANG["processing_no_post_vars"] = "process.php non sta ricevendo alcun dato. Nota: questo script non può essere caricato direttamente nel vostro browser.Sinceratevi che il vostro modulo effettui l'invio via POST."; +$LANG["processing_no_redirect_url"] = "L'invio è stato elaborato correttamente, ma non avete specificato un URL di reindirizzamento di questo modulo! Modificate il modulo nell'IU di Form Tools, aggiungendo l'URL di reindirizzamento."; +$LANG["special_language"] = "Italian"; +$LANG["special_language_locale"] = "Italian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Tutti i nuovi account client saranno creati con le impostazioni e le autorizzazioni di seguito definiti. Per ignorare le impostazioni di un client particolare, modificare l'account del cliente e di visitare la loro scheda Impostazioni."; +$LANG["text_add_form_choose_integration_method"] = "Scegliere il metodo da utilizzare per integrare il modulo con gli strumenti di modulo."; +$LANG["text_add_form_code_submission_benefits"] = "Questo metodo utilizza il Modulo Strumenti API , incluso nello script principale Strumenti modulo. L'API fornisce una serie di funzioni utili per rendere il lavoro di integrare il modulo con Form Tools il più semplice possibile. Non ci sono restrizioni per quanto il modulo può essere presentata quando si utilizza l'API. È possibile inviare il contenuto in un colpo solo, o pagina per pagina, è possibile aggiungere il vostro personalizzati convalida sul lato server, le immagini CAPTCHA, si può scegliere di presentare le informazioni ora, ma solo raccontare per visualizzare la presentazione nel Modulo Strumenti UI in un secondo momento (vedere la Finalizzato Presentato nella sezione documentazione di aiuto API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Per presentare i dati del modulo tramite PHP, il modulo deve trovarsi sullo stesso sito come in questa installazione Modulo Strumenti. In secondo luogo, per gli utenti di forma non tecnici e novizio Strumenti, questo metodo può essere un po 'intimidatorio in un primo momento. Ma c'è un sacco di documentazione per aiutarli fuori, tra cui due tutorial semplici per integrare i moduli single-e multi-pagina (questi sono collegati a un passaggio successivo)."; +$LANG["text_add_form_direct_submission_benefits"] = "Questo è il modo più semplice per inviare la tua forma a forma Tools. Non richiede alcuna conoscenza di PHP e richiede solo una piccolissima modifica al form. È grande per le forme più piccole in cui si desidera solo inviare le informazioni al database quindi reindirizzare l'utente a una thankyou "" pagina."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Questo metodo di invio è molto semplice da usare, ma non fornisce un controllo molto per forme più complesse. Multi-Form o forme che richiedono convalida sul lato server sono più adatti per il secondo metodo: la presentazione tramite il modulo Tools API."; +$LANG["text_add_form_field_types1"] = "Quasi fatto! Questa pagina cerca di trovare tutti i campi del modulo e di determinare i loro tipi di campo. Fare clic sul pulsante Riempimento assistito a destra per iniziare. Vi sarà consentito solo a procedere quando tutte le azioni sono state risolte - le questioni che richiedono attenzione appaiono nel "Interventi necessari " colonna."; +$LANG["text_add_form_field_types2"] = "Se il modulo non è in HTML, fare clic sul pulsante Vai Passo per procedere. Tutto questo può essere configurato in seguito."; +$LANG["text_add_form_field_types3"] = "Questa ricarica il contenuto dei form (s). Nota: questo sovrascriverà le modifiche apportate in questa pagina."; +$LANG["text_add_form_field_types4"] = "Nel caso in cui si esegue in problemi, clicca qui per saltare questo passaggio. Tutti i campi irrisolti sono impostati per utilizzare i valori predefiniti. È possibile personalizzare questi campi più tardi."; +$LANG["text_add_form_field_types_manual_upload"] = "Se siete stati in grado di Riempimento assistito vostri campi, si consiglia di provare una soluzione alternativa: caricare le copie dei moduli nei campi sottostanti."; +$LANG["text_add_form_field_types_manual_upload2"] = "Nota: non caricare le prime pagine PHP (o altro codice lato server) - basta caricare le versioni HTML. Per ottenere questo, visualizzare e salvare la pagina dal browser web."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Ci sono stati più campi che non poteva essere trovato nella pagina del form specificata. Questo è molto probabilmente causato da uno dei seguenti:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Hai inserito uno o più degli URL del vostro modulo form a più pagine in modo errato."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Una o più pagine del modulo sono protetti da password e lo script non potevano accedere alla pagina."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Tu inserito correttamente l'URL modulo."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Clicca qui per tornare alla pagina di Informazioni per controllare le impostazioni."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Hai cambiato il modulo (s) dopo aver fatto la presentazione di prova"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Clicca qui per mettere attraverso un'altra presentazione di prova."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Il modulo è protetto da password e lo script non potevano accedere alla pagina."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "In un'altra scheda / finestra del browser, accedere al proprio modulo fare clic sul pulsante Aggiorna pagina qui sotto per cercare di ritrovare i campi."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Se nessuna delle operazioni descritte sopra soluzioni, si può anche provare a caricare manualmente i moduli per l'elaborazione ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Ci sono stati più campi che non potevano essere trovate nelle pagine modulo specificato. Questo è molto probabilmente causato da uno di questi:"; +$LANG["text_add_form_help_link"] = "Se incappate in qualche problema durante questi passaggi, provare a leggere le documentazione per l'utente ."; +$LANG["text_add_form_step_1_text_1"] = "Le pagine seguenti vi guideranno attraverso i diversi passi per configurare Form Tools in modo che registri gli invii effettuati con il vostro modulo. Prima di continuare, sinceratevi che: "; +$LANG["text_add_form_step_1_text_2"] = "il modulo è già stato creato ed è accessibile tramite un URL (localhost va bene)"; +$LANG["text_add_form_step_1_text_3"] = "sono in grado di modificare il modulo"; +$LANG["text_add_form_step_2_para_2"] = "Aprite il vostro modulo in un editor di vostra scelta e cambiate il tag del modulo come segue, inclusi i due campi nascosti."; +$LANG["text_add_form_step_2_para_3"] = "Successivamente, aprire il modulo in un browser web. Compilare in ogni campo e la presenta. Dopo la presentazione, si dovrebbe vedere un messaggio di notifica. Una volta che questo messaggio viene visualizzato, tornare a questa pagina e fare clic sul pulsante di aggiornamento di seguito. Quando questo processo è completato, verrà visualizzato un pulsante Continua qui sotto, che vi porterà alla fase successiva."; +$LANG["text_add_form_step_2_para_6"] = "Nel tuo invio del modulo, comprendono i seguenti valori. Essi possono essere fissati direttamente tramite PHP o passava attraverso il modulo stesso. Qui di seguito sono esempi di ciascuno. Il \$ () varname è un hash (o array associativo) di tutte le informazioni invio di un modulo - questo è di solito il postvar \$ () o \$ () sessionvar variabile, ma può essere personalizzato costruito."; +$LANG["text_add_form_step_2_text_2"] = "Inserire l'URL del vostro "thankyou " pagina qui. Questo è dove si vuole che la gente di essere diretto a dopo il modulo è stato inviato."; +$LANG["text_add_form_step_3_para_1"] = "Questa pagina elenca tutti i campi nel modulo di presentazione. Vi preghiamo di esaminare ogni campo ed elimina quelle che non avete bisogno memorizzati per ogni presentazione. Se si elimina un campo valido per caso, oppure se desideri modificare le informazioni memorizzate dal vostro modulo, tornare alla pagina precedente per inviare una presentazione nuova prova."; +$LANG["text_add_form_step_3_para_2"] = "Nota: Se si sta inviando valori multipli tramite caselle di controllo o una casella di selezionare, assicurarsi che il nome di campo si conclude con l'[] caratteri (vedere la documentazione utente per maggiori informazioni)."; +$LANG["text_add_form_step_3_text_1"] = "Ecco dove inizia il divertimento! A questo punto, Strumenti Forma è in attesa di una presentazione di prova dalla forma. Userà questo invio dei moduli di sapere quali informazioni devono essere conservati nel database."; +$LANG["text_add_form_step_3_text_2"] = "puntando il modulo per modulo Tools"; +$LANG["text_add_form_step_3_text_3"] = "utilizzando il Modulo Strumenti API"; +$LANG["text_add_form_step_3_text_4"] = "Per aiutare a integrare il modulo, vi suggeriamo di leggere uno dei tutorial seguenti:"; +$LANG["text_add_form_step_3_text_5"] = "Spiegano come impostare il modulo in preparazione per la presentazione di prova, e includere altre informazioni che possono essere di aiuto. La linea di PHP hai bisogno è:"; +$LANG["text_add_form_step_3_text_6"] = "Questo assicura che i dati effettivamente inviati al modulo Tools. Quando avete messo attraverso la presentazione di prova, fare clic sul pulsante sottostante."; +$LANG["text_add_form_step_3_text_7"] = "Sulla PRIMA pagina al tuo finale "ringraziamento", assicurarsi di aggiungere il seguente parametro alla variabile \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Il database è stato istituito per questa forma e la forma è stato attivato per l'uso. Se hai fatto la presentazione puntando il modulo per process.php, si prega di tornare alla forma e rimuovere il seguente campo nascosto:"; +$LANG["text_add_form_step_5_para_2"] = "Poi visitare il "ringraziamento" per svuotare le sessioni. Una volta fatto questo, tutti i mezzi nuovi modulo saranno trattati e conservati dal modulo Tools. Provare a fare una presentazione o due per verificare le informazioni è tutto corretto caricamento."; +$LANG["text_add_form_step_5_para_3"] = "Se si desidera mettere a punto il modulo per le opzioni come auto-email, l'aggiunta di campi aggiuntivi campo modulo, o personalizzando i tipi di campo di modulo, è possibile modificare il modulo in qualsiasi punto."; +$LANG["text_add_form_step_5_para_4"] = "Dal momento che il form contenga campi di upload di file, è necessario configurare ogni campo per specificare la cartella upload di file, quali file sono consentiti e. Questo può essere trovato sulla scheda Visualizzazione della pagina di modifica modulo."; +$LANG["text_add_form_step_5_para_5"] = "Se la presentazione è stato inviato tramite l'API, modificare la riga ft_api_init_form_page sulla prima pagina del modulo a:"; +$LANG["text_add_submission_button"] = "Il pulsante di invio Aggiungi appare solo per le viste che hanno la "Può aggiungere contributi " opzione impostata su "sì "."; +$LANG["text_admin_email_placeholder_info"] = "Questo è l'indirizzo email dell'amministratore del Modulo Strumenti, definito nelle impostazioni del tuo account. L'output è solo l'indirizzo e-mail, quindi se si desidera utilizzare come un link HTML, è necessario avvolgere in un tag <a>, in questo modo:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Anche il tema pagina di login di default)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "In primo luogo, si prega di scegliere il tipo di modulo."; +$LANG["text_client_form_page"] = "Questa pagina elenca tutte le forme e le Viste assegnato a questo client. Suggerimento: per consentire loro di vedere una forma di osservazioni, hanno bisogno di essere assegnato ad almeno un punto di vista."; +$LANG["text_client_map_filters_desc1"] = "Filtri Carta Client consente di limitare le osservazioni che appaiono in questo Visualizza mappando i valori in un campo di modulo per i valori in un conto del cliente."; +$LANG["text_client_no_forms"] = "Attualmente non ci sono moduli disponibili che possono essere visualizzati"; +$LANG["text_client_welcome"] = "Benvenuto! Questo programma memorizza tutte le informazioni fornite dal tuo sito web visitatori. Per visualizzare le candidature per una particolare forma è sufficiente cliccare sul link "Visualizza o vedere il menu di navigazione a sinistra per altre opzioni."; +$LANG["text_config_file_created"] = "Il file config.php è stato creato."; +$LANG["text_config_file_not_created"] = "Non siamo riusciti a creare il file config.php. Sarà necessario creare il file manualmente."; +$LANG["text_config_file_not_created_instructions"] = "Copia e incolla il contenuto dalla sezione di seguito in un file chiamato config.php e caricarlo via FTP per gli Strumenti di Form / cartella globale (la cartella che contiene anche un file di pochi altri e directory, un file chiamato library.php)."; +$LANG["text_confirm_delete_form"] = "Sì, voglio cancellare questo modulo"; +$LANG["text_create_admin_account"] = "Ora stiamo andando a creare l'account di amministratore. Questo viene utilizzato per la gestione di tutti gli aspetti del Modulo Strumenti, come l'aggiunta di moduli e la creazione di account cliente."; +$LANG["text_create_new_client_account"] = "Usa il modulo qui sotto per creare un nuovo account client. Tutti i campi sono obbligatori."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "vedi PHP {\$datefunctionlink} funzione per le opzioni di formattazione"; +$LANG["text_default_file_settings_page"] = "Questa pagina definisce le impostazioni di upload di file per il modulo di installazione Tools. Queste regole valgono per tutti i file caricati tramite form Strumenti, se non esplicitamente ignorato per un singolo campo modulo. Nota: se si modifica la cartella upload dopo che i file sono stati caricati, saranno automaticamente spostati nella nuova cartella."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Prima di continuare, è necessario aggiornare il file / themes / / cartella predefinita di cache per consentire la piena lettura e scrittura. Una volta fatto questo, questo messaggio scomparirà e sarà possibile installare lo script."; +$LANG["text_default_values_in_view"] = "Questa sezione è facoltativa. Tutte le presentazioni create con questo Vista conterrà i valori predefiniti specificati qui."; +$LANG["text_delete_all_forms"] = "Voglio cancellare tutti i file che sono stati inviati attraverso questo modulo"; +$LANG["text_delete_form_warning"] = "Siete sicuri di voler cancellare questo modulo? Se approvata, questa operazione non può essere annullata e tutti i dati saranno persi per sempre!"; +$LANG["text_edit_admin_menu_page"] = "È possibile modificare il menu sottostante. Al fine di garantire di avere sempre accesso a tutte le funzionalità disponibili nel modulo Strumenti, le pagine sono necessarie le seguenti: Forms, clienti, il tuo account, Moduli, Impostazioni e Logout."; +$LANG["text_edit_client_menu_page"] = "Questa sezione permette di personalizzare la colonna di sinistra di navigazione per ciascun utente. Si può creare il menu del client che vuoi e assegnare qualsiasi considerazione di uno di loro. Per impostazione predefinita ci sono due menu: uno per te, l'amministratore, e uno per tutti gli account cliente. L'account amministratore può essere modificato, ma non rimossi."; +$LANG["text_edit_tab_summary"] = "Se volete gruppo campi questa Mostra in schede, basta inserire i nomi delle schede qui sotto. Dopo aver finito, selezionate la scheda appropriata per ogni gruppo di campo nella scheda Campi ."; +$LANG["text_edit_view_list_page"] = "Questa scheda controlla che i campi appaiono come colonne nella pagina Elenco Materiale e alcune impostazioni aggiuntive per quei campi. Nota: si consiglia di aggiungere non più di 4 o 5 dei campi più importanti nella vista."; +$LANG["text_email_settings_intro"] = "Questa pagina permette di identificare quali dei vostri campi modulo e-mail e archiviare i loro nomi corrispondenti. Dopo aver definito qui, è possibile utilizzare nel vostro modelli di posta elettronica come destinatari. Questa sezione è del tutto facoltativa."; +$LANG["text_email_tab_summary"] = "Questa sezione ti permette di costruire qualsiasi numero di email da inviare ogni volta che il modulo viene inviato, e altre cause."; +$LANG["text_email_template_tab"] = "Questa sezione consente di determinare il contenuto viene visualizzato nella email. Se si desidera inviare il messaggio solo come testo o e-mail, immettere un valore solo per quella sezione. Se si immette un valore per entrambi, l'email verrà inviata in entrambi i formati."; +$LANG["text_email_template_text_1"] = "Vi è stata una presentazione effettuata tramite il modulo, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Vi è stata una presentazione effettuata tramite il modulo, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Grazie per il vostro invio!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Messaggio di errore per mostrare se il campo non riesce la convalida"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Forme esterne sono forme che già esistono sul tuo sito web, o da qualche parte sul web. Selezionare questa opzione se hai la tua forma che si desidera integrarsi con gli strumenti di modulo."; +$LANG["text_fields_tab_summary"] = "Questa pagina elenca tutti i campi del modulo. Per controllare il modo in cui appaiono quando presentazione di navigazione, vedere la scheda Viste . L'eliminazione di un campo in questa pagina verrà cancellata da tutte le presentazioni, quindi fate attenzione!"; +$LANG["text_file_extension_info"] = "Immettete le estensioni dei file separate da una virgola (ad esempio jpg,gif,png) o lasciate la casella in bianco per consentire qualunque tipo di file."; +$LANG["text_file_field_placeholders_info"] = "I campi file hanno due segnaposto speciali: FILEURL e FILENAME. FILEURL è l'URL completo al file, di modo che possiate avere un link diretto ad esso nei vostri messaggi email; FILENAME è semplicemente il nome del file."; +$LANG["text_filters_page"] = "Solo quelle osservazioni che soddisfano le norme si definiscono di seguito apparirà in questa visualizzazione."; +$LANG["text_filters_tips"] = "Per suggerimenti su come utilizzare i filtri presentazione, vedere la documentazione utente."; +$LANG["text_forgot_password"] = "Nessun problema. Basta inserire il tuo username e le informazioni di accesso verranno inviate al tuo indirizzo email su file. Se hai dimenticato il tuo username, e-mail l'amministratore del sito a {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Questo modulo cotniene uno o più campi per il caricamento di file:"; +$LANG["text_form_placeholder_info"] = "I segnaposto possono essere utilizzati in qualsiasi modello di posta elettronica e segnaposto del campo linguistico, indipendentemente da cosa Vedi il modello e-mail è assegnato. I segnaposto sono DOMANDA la questione specifica forma, i segnaposto RISPOSTA sono le risposte ad ogni domanda."; +$LANG["text_form_submission_date_placeholder"] = "La data in cui la presentazione è stata fatta."; +$LANG["text_form_tools_form_url"] = "L'URL completo del modulo. Questo è solo un valore per le forme esterne."; +$LANG["text_form_tools_login_url"] = "L'URL per la connessione a Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Nota: il presente modulo ha attualmente accesso di tipo Administrator, in modo nessuno degli account cliente sarà in grado di vedere questo View."; +$LANG["text_form_view_permission_info_private"] = "Nota: il presente modulo dispone attualmente di tipo privato in modo da accedere alle opzioni pubbliche e private qui sarà limitata a tale sottoinsieme di clienti."; +$LANG["text_ft_installed"] = "Congratulazioni, Forma Tools è stato installato con successo!"; +$LANG["text_global_placeholder_info"] = "Questi segnaposto possono essere usati in qualunque template e in qualunque modulo."; +$LANG["text_group_name_explanation"] = "Per i campi aggiunto attraverso il processo Aggiungi Modulo, questo valore è pre-riempita di visualizzare il testo di qualsiasi campo utilizza il valore. Si potrebbe desiderare di cambiare per meglio caratterizzare il contenuto."; +$LANG["text_install_create_config_file"] = "Strumenti modulo memorizza il server di database e le impostazioni in un file chiamato config.php, che si trova in / global / cartella. Fare clic su "Crea File" per generare automaticamente il file sul vostro server."; +$LANG["text_install_create_database_tables"] = "Ora stiamo andando a creare le tabelle del database Modulo Strumenti. Questo passaggio richiede il database stesso di avere già stato creato. Se non siete sicuri di come effettuare questa operazione, si prega di contattare il fornitore di hosting."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host", di solito significa che il nome dell'host che hai fornito non è corretto. Forse provare a impostare questo valore a "localhost" - questo è un modo comune per riferirsi al "locale" di database su un server web."; +$LANG["text_install_db_tables_error_tip_2"] = ""Impossibile connettersi al server MySQL locali attraverso socket", il campo del database hostname è ancora corretto."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" significa che c'è un problema con il tuo username / password."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... al database ..." significa che, anche se il tuo nome utente e la password fornita è corretta, è stato in grado di connettersi a tale database particolare con l'account. Questo può significare che o il nome del vostro database non è corretto, o che questo account utente non è associato a tale database."; +$LANG["text_install_email_content_text"] = "Sul sito Web sono disponibili numerose risorse per aiutarti a iniziare, tra cui la nostra documentazione online (https://docs.formtools.org) e le esercitazioni (https://docs.formtools.org/tutorials). Se trovi di rimanere bloccato o di fare una domanda, fai una domanda su github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Ci dispiace, strumenti Form non sarà in grado di funzionare sul vostro server. Clicca qui per i requisiti minimi."; +$LANG["text_install_system_check"] = "Questa pagina viene eseguito alcuni test sul vostro sistema per assicurarsi che sia in grado di eseguire strumenti modulo."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Forme interne esistere solo all'interno di Strumenti Form - non altrove sul tuo sito. Solo Strumenti Form account utente avrà accesso al modulo. Selezionare questa opzione se non si dispone di un modulo esistente."; +$LANG["text_internal_form_intro"] = "Utilizza il modulo qui sotto per creare una nuova forma interna. Tutte le impostazioni, compreso il numero e il contenuto dei campi del modulo può essere essere modificato e configurato più tardi."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Per connettersi ed usare Form Tools, dovete attivare javascript sul vostro browser. Fatelo ora e cliccate dal browser il pulsante di aggiornamento della pagina."; +$LANG["text_last_modified_date_explanation_c"] = "L'ultima volta che questa presentazione è stato modificato. Per la trasmissione di nuovo, questa è la stessa:"; +$LANG["text_limit_email_content_desc"] = "Questa opzione funziona solo per HTML e il contenuto del testo generato con Loops Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(elenca solo Viste con uno o più filtri definiti)"; +$LANG["text_log_in_to_ft"] = "Accedi al modulo Tools"; +$LANG["text_login"] = "Accedi qui sotto per accedere al \$ () nome_programma Pannello di Amministrazione. Se hai dimenticato la tua password, clicca qui."; +$LANG["text_login_info"] = "Come da vostra richiesta, ecco le informazioni per la connessione."; +$LANG["text_name_of_form"] = "Il nome del modulo."; +$LANG["text_no_clients"] = "Attualmente non vi sono clienti nel database. Per registrare un nuovo cliente, cliccate sul pulsante Aggiugi Cliente qui in basso."; +$LANG["text_no_clients_found"] = "N. clienti sono stati trovati. Provare ampliando i criteri di ricerca."; +$LANG["text_no_fields_in_view"] = "Questa vista non ha tutti i campi in esso. Clicca sul link sottostante."; +$LANG["text_no_forms"] = "Attualmente non vi sono moduli presenti nel database. Per aggiungere un nuovo modulo, cliccate il pulsante Aggiungi Modulo qui in basso."; +$LANG["text_no_forms_found"] = "Nessuna forma sono stati trovati."; +$LANG["text_no_forms_found_search"] = "Nessuna forma sono stati trovati. Prova estendere i criteri di ricerca."; +$LANG["text_no_modules_found"] = "Non sono stati trovati moduli. Cercate di ampliare i criteri di ricerca."; +$LANG["text_no_recipients_added"] = "Non sono stati aggiunti destinatari."; +$LANG["text_no_search_results"] = "Non ci sono risultati con questo criterio di ricerca / Vista."; +$LANG["text_no_submissions_found"] = "Spiacenti, non sono stati trovati invii."; +$LANG["text_no_themes"] = "Non è necessario alcun temi definiti. Clicca sul bottone qui sotto per aggiornare l'elenco tema, oppure controllare il modulo di documentazione per l'utente strumenti per informazioni sull'aggiunta di temi."; +$LANG["text_non_deletable_fields"] = "Questo campo è utilizzato dallo script core e non possono essere modificati o eliminati senza causare incompatibilità. Se si desidera apportare modifiche al tipo di campo, fare una copia di esso e modificare la copia."; +$LANG["text_option_list_group_explanation"] = "Se questa è selezionata, permette di raggruppare le opzioni. Come i gruppi vengono visualizzate dipende dal tipo di campo utilizzando questa lista di opzioni."; +$LANG["text_option_list_page"] = "Pulsanti di opzione, caselle di controllo, menu a discesa e campi discesa multi-selezionare tutte forniscono all'utente diverse opzioni da cui si possono selezionare uno o più elementi. In Strumenti di forma, questi sono conosciuti come gli elenchi delle opzioni. In genere, questi vengono creati automaticamente dal Aggiungere forma Esterno processo, ma è possibile aggiungere manualmente o modificare le vostre liste opzione qui sotto se le modifiche contenuto del modulo o si costruiscono campi che sono usati solo internamente."; +$LANG["text_option_list_used_by_fields"] = "Questo elenco di opzioni sono utilizzate da più campi modulo. Se si aggiornano le informazioni qui di seguito, sarà cambiato per tutti i campi (vedi Campi modulo scheda per visualizzare l'elenco dei campi). Se si desidera aggiornare i valori per uno, o un sottoinsieme di campi che sono attualmente assegnati, fai clic qui per creare un nuovo Elenco Opzione con gli stessi valori di questa. Quindi è possibile assegnare i campi modulo che si desidera il nuovo gruppo."; +$LANG["text_public_form_omit_list_page"] = "Forme pubbliche darvi il vantaggio di lasciare tutti gli account client di accesso senza dover assegnare manualmente ogni client ad essi. Questa pagina permette di individuare quei clienti che non possono accedere a questo modulo, anche se il modulo è contrassegnato come pubblico."; +$LANG["text_public_view_omit_list_page"] = "Viste pubblica darvi il vantaggio di lasciare tutti gli account client di accesso senza dover assegnare manualmente ogni client ad essi. Questa pagina permette di individuare quei clienti che non possono accedere a questa visione particolare."; +$LANG["text_reference_tab_info"] = "Questa pagina elenca tutti i segnaposto disponibili per il modulo. I segnaposto sono stringhe che possono essere usati nei modelli di e-mail, e campi contrassegnati con l'icona di un segnaposto speciale . Quando è entrato in un campo, sono dinamicamente convertito il valore appropriato quando il campo viene visualizzato o l'e-mail viene inviata."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Rivedere la documentazione per l'utente"; +$LANG["text_send_email_from_edit_submission_page"] = "Includere l'opzione di inviare questa e-mail da Modifica pagina di presentazione"; +$LANG["text_smart_fill_option_list_problem"] = "Non siamo riusciti a Riempimento assistito le opzioni sul campo. Tuttavia, in alternativa, si può provare a caricare una copia della pagina del modulo nel campo sottostante. Nota: non caricare le prime pagine PHP (o altro codice lato server) - basta caricare la versione HTML. Per ottenere questo, visualizzare e salvare la pagina dal browser web."; +$LANG["text_submission_ip_address"] = "L'indirizzo IP dell'utente che ha effettuato la presentazione."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Utilizzare il modulo sottostante per visualizzare o inviare una e-mail te stesso generato da questo modello e-mail. L'email è inviata all'indirizzo email specificato di seguito, le principali, CC e BCC destinatari indirizzo e-mail vengono ignorati durante la prova."; +$LANG["text_test_email_templates_no_submissions"] = "Per provare i vostri template email, dovete innanzitutto disporre di almeno un invio."; +$LANG["text_theme_page_intro"] = "Questa pagina elenca tutti i temi. Clicca su una miniatura per visualizzare un esempio più esaustivo di stili del tema. Il "permesso" checkbox determina o meno questo tema possono essere scelti dai clienti. Per passare in rassegna tutti i temi disponibili, visitare il sito Web Form Tools."; +$LANG["text_tutorial_adding_first_form"] = "Esercitazione: Aggiunta la prima forma!"; +$LANG["text_unique_submission_id"] = "L'ID unico dell'invio."; +$LANG["text_unused_option_list"] = "Questa lista opzione non è utilizzato da tutti i campi modulo."; +$LANG["text_upgraded"] = "La vostra installazione è stata aggiornata alla versione {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Questo elenco di opzioni vengono usate da i seguenti campi."; +$LANG["text_view_fields_info"] = "Questa scheda controlla i campi che compaiono quando si modifica una sottomissione In questa visione, il loro ordine e se sono modificabili o meno."; +$LANG["text_view_tab_summary"] = "Questa scheda consente di creare diversi modi di raggruppare e organizzare i vostri dati. Viste consentono di creare sottoinsiemi personalizzate dei dati del modulo a dividerlo in parti gestibili, e di limitare ciò che i clienti possono visualizzare o modificare."; +$LANG["validation_account_disabled"] = "Spiacenti, i vostri dati di registrazione sono stati disabilitati."; +$LANG["validation_account_not_recognized"] = "Spiacenti, questo nome utente non è stato riconosciuto."; +$LANG["validation_account_not_recognized_info"] = "Spiacenti, non è stato trovato il nome utente che avete immesso. Vi preghiamo di provare di nuovo, oppure contattate l'amministratore del sistema all'indirizzo qui in basso."; +$LANG["validation_account_pending"] = "Il vostro account utente è stato sottoposto all'amministratore per approvazione."; +$LANG["validation_check_delete_client"] = "Siete sicuri di voler cancellare i dati di registrazione di questo cliente?"; +$LANG["validation_client_password_missing_number"] = "La password del client deve contenere almeno un numero (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "La password del client deve contenere almeno uno dei seguenti caratteri: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "La password del client deve contenere almeno una lettera maiuscola."; +$LANG["validation_client_password_too_short"] = "La password client deve essere di almeno {\$number} caratteri."; +$LANG["validation_col_name_is_reserved_word"] = "Spiacenti, il nome di questa colonna del database è riservato al sistema MySQL. Per favore, rinominatela!"; +$LANG["validation_db_name"] = "I nomi dei database non possono contenere punti o barre."; +$LANG["validation_db_not_updated_invalid_input"] = "Non è stato possibile aggiornare il database. Vi preghiamo di controllare se i valori immessi sono validi."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Spiacenti, i temi di base per l'amministratore e il cliente devono sempre essere attivati."; +$LANG["validation_default_phone_num_required"] = "Si prega di compilare il numero di telefono completo per il <b> { \$ campo} </ b> - solo numeri."; +$LANG["validation_default_rule_alpha"] = "Si prega di inserire solo lettere e numeri per il <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Si prega di inserire solo le lettere per la <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Si prega di inserire solo numeri per l'<b> { \$ campo} </ b>."; +$LANG["validation_default_rule_required"] = "Inserisci un valore per il <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Inserisci un indirizzo email valido per il <b> { \$ campo} </ b>."; +$LANG["validation_delete_form_confirm"] = "Vi preghiamo di selezionare il riquadro per confermare che volete cancellare questo modulo."; +$LANG["validation_delete_non_empty_option_list"] = "Attenzione! Questo elenco di opzioni è utilizzato da uno o più campi modulo. L'eliminazione farà quei campi cessano di funzionare correttamente."; +$LANG["validation_display_names_incomplete"] = "Si prega di inserire un valore per tutti i nomi visualizzati, oppure scegliere l'opzione Smart Fill per entrare in modo dinamico."; +$LANG["validation_duplicate_form_field_name"] = "Non si può avere più campi con il nome del campo stesso."; +$LANG["validation_email_not_found_or_invalid"] = "Sorry, l'email associato al tuo account o non esiste o non è valido."; +$LANG["validation_folder_invalid_permissions"] = "Per far sì che questo test possa iniziare, si devono impostare i permessi sulla cartella di caricamento in modo che vi si possano leggere e scrivere file (777 su Unix)"; +$LANG["validation_folder_not_writable"] = "Questa cartella non è scrivibile."; +$LANG["validation_internal_form_too_many_fields"] = "Ci dispiace, si può solo creare forme con 1000 campi o meno."; +$LANG["validation_invalid_admin_email"] = "Si prega di inserire l'indirizzo email di un adminstrator valida."; +$LANG["validation_invalid_admin_username"] = "Il tuo nome utente può essere costituito solo da caratteri alfanumerici (az e 0-9)."; +$LANG["validation_invalid_client_username"] = "Nome utente del client può consistere solo di caratteri alfanumerici (az e 0-9)."; +$LANG["validation_invalid_client_username2"] = "Ci dispiace, nome utente può contenere solo lettere, numeri e il carattere di sottolineatura. Si prega di inserire un nuovo nome utente."; +$LANG["validation_invalid_column_name"] = "I nomi delle colonne possono essere alfanumerico (AZ, 0-9). Si prega di controllare i nomi delle colonne."; +$LANG["validation_invalid_custom_from_email"] = "Inserisci un valido personalizzato 'Da' indirizzo e-mail."; +$LANG["validation_invalid_custom_reply_to_email"] = "Inserisci un valido personalizzato 'Reply-to' indirizzo e-mail."; +$LANG["validation_invalid_default_sessions_timeout"] = "Si prega di inserire un valore valido (un numero) per il timeout sessioni di default."; +$LANG["validation_invalid_email"] = "Vi preghiamo di immettere un indirizzo email valido."; +$LANG["validation_invalid_email_id"] = "Ci dispiace, questa è una e-mail non valido ID."; +$LANG["validation_invalid_folder"] = "Ci dispiace, questo non sembra essere una cartella valida."; +$LANG["validation_invalid_form_field_names"] = "I campi di modulo possono essere alfanumerici e underscore (AZ, 0-9, _), senza spazi."; +$LANG["validation_invalid_num_clients_per_page"] = "Vi preghiamo di immettere solo numeri nel campo Numero di Clienti per Pagina."; +$LANG["validation_invalid_num_emails_per_page"] = "Si prega di inserire solo le cifre per le e-mail per pagina."; +$LANG["validation_invalid_num_form_fields"] = "Si prega di inserire solo numeri nel campo Numero di campi."; +$LANG["validation_invalid_num_forms_per_page"] = "Vi preghiamo di immettere solo numeri nel campo Numero di Moduli per Pagina."; +$LANG["validation_invalid_num_menus_per_page"] = "Si prega di inserire solo le cifre per i menu per pagina."; +$LANG["validation_invalid_num_modules_per_page"] = "Si prega di inserire solo numeri nei moduli di Num per campo pagina."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Si prega di inserire solo numeri negli elenchi Option Num Per campo Pagina."; +$LANG["validation_invalid_num_submissions_per_page"] = "Vi preghiamo di immettere un numero valido di invii per pagina."; +$LANG["validation_invalid_sessions_timeout"] = "Si prega di inserire un timeout di sessione valida (solo numeri interi!)."; +$LANG["validation_invalid_tab_assign_values"] = "Si prega di inserire solo numeri nel 'da' e 'a' campi."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Il server di installazione di PHP è un ambiente valido per il valore upload_tmp_dir. "{\$upload_folder}" non è una cartella valida."; +$LANG["validation_invalid_url"] = "Si prega di inserire un URL valido."; +$LANG["validation_invalid_username"] = "Il tuo nome utente può consistere solo di caratteri alfanumerici (az e 0-9)."; +$LANG["validation_is_form_active"] = "Vi preghiamo di indicare se questo modulo è attivo oppure no."; +$LANG["validation_menu_name_taken"] = "Siamo spiacenti, questo il nome del menu è già presa. Si prega di scegliere un nuovo nome."; +$LANG["validation_modules_search_no_status"] = "Si prega di selezionare le caselle di controllo Abilitato o Disabilitato."; +$LANG["validation_no_access_type"] = "Si prega di inserire il tipo di accesso."; +$LANG["validation_no_account_logout_url"] = "Inserisci il tuo URL logout."; +$LANG["validation_no_account_password_confirmed"] = "Si prega di inserire nuovamente la nuova password."; +$LANG["validation_no_account_password_confirmed2"] = "Si prega di inserire nuovamente la nuova password."; +$LANG["validation_no_admin_email"] = "Si prega di inserire l'indirizzo email dell'amministratore."; +$LANG["validation_no_admin_theme"] = "Si prega di selezionare il tema per l'account amministratore."; +$LANG["validation_no_admin_theme_swatch"] = "Si prega di selezionare un campione per il tema amministratore."; +$LANG["validation_no_client_email"] = "Inserisci indirizzo e-mail del cliente."; +$LANG["validation_no_client_first_name"] = "Si prega di inserire il nome del primo cliente."; +$LANG["validation_no_client_last_name"] = "Si prega di inserire il cognome del cliente."; +$LANG["validation_no_client_login_page"] = "Si prega di indicare la pagina che il cliente dovrebbe essere reindirizzato a quando login"; +$LANG["validation_no_client_password"] = "Si prega di inserire la password del cliente."; +$LANG["validation_no_client_theme_swatch"] = "Si prega di selezionare un campione predefinito per l'account cliente."; +$LANG["validation_no_client_username"] = "Si prega di inserire nome utente del client."; +$LANG["validation_no_column_name"] = "Si prega di inserire tutti i nomi delle colonne, oppure fare clic sul pulsante Riempimento automatico per riempirli."; +$LANG["validation_no_column_selected"] = "Si prega di selezionare almeno un campo di apparire come una colonna nella pagina di presentazione lista."; +$LANG["validation_no_custom_from_email"] = "Inserisci il custom 'Da' indirizzo e-mail."; +$LANG["validation_no_custom_recipient_email"] = "Si prega di inserire l'indirizzo e-mail destinatario personalizzato."; +$LANG["validation_no_custom_reply_to_email"] = "Inserisci il custom 'Reply-to' indirizzo e-mail."; +$LANG["validation_no_date_format"] = "Vi preghiamo di immettere un formato di data."; +$LANG["validation_no_db_column_single"] = "Si prega di inserire il nome della colonna del database."; +$LANG["validation_no_db_hostname"] = "Si prega di inserire il nome host del database."; +$LANG["validation_no_db_name"] = "Inserisci il nome del database."; +$LANG["validation_no_db_username"] = "Si prega di inserire il nome utente database."; +$LANG["validation_no_default_client_theme"] = "Si prega di selezionare il tema di default per tutti i nuovi account client."; +$LANG["validation_no_default_language"] = "Vi preghiamo di selezionare la lingua di base per l'installazione di Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Si prega di inserire il timeout della sessione di default per gli account utente."; +$LANG["validation_no_display_text"] = "Inserisci il testo visualizzato per ogni campo."; +$LANG["validation_no_display_text_single"] = "Si prega di inserire il valore del testo nel display."; +$LANG["validation_no_edit_submission_page_label"] = "Si prega di inserire l'etichetta Modifica pagina di presentazione."; +$LANG["validation_no_email"] = "Vi preghiamo di immettere il vostro indirizzo email."; +$LANG["validation_no_email_config_field"] = "Si prega di specificare quale campo di modulo è il campo e-mail."; +$LANG["validation_no_email_content"] = "Inserisci il contenuto della posta elettronica per almeno uno dei formati (HTML o testo)."; +$LANG["validation_no_email_from_field"] = "Si prega di e-mail 'da' campo."; +$LANG["validation_no_email_template_name"] = "Vi preghiamo di immettere il nome del modello email."; +$LANG["validation_no_email_template_view_id"] = "Si prega di selezionare la visualizzazione a cui questo modello e-mail devono essere mappati."; +$LANG["validation_no_email_template_view_mapping_value"] = "Vi preghiamo di indicare quando dev'essere inviato il messaggio email"; +$LANG["validation_no_enabled_themes"] = "Si prega di garantire che almeno un tema è abilitato."; +$LANG["validation_no_first_name"] = "Vi preghiamo di immettere il vostro nome."; +$LANG["validation_no_form_field_name"] = "Si prega di inserire tutti i nomi di campo di modulo."; +$LANG["validation_no_form_field_single"] = "Si prega di inserire il valore di campo modulo."; +$LANG["validation_no_form_id"] = "Non è stato pecificato l'ID del modulo. Vi preghiamo di disconnettervi e di provare di nuovo."; +$LANG["validation_no_form_name"] = "Vi preghiamo di immettere il nome del modulo."; +$LANG["validation_no_form_url"] = "Vi preghiamo di immettere l'URL del modulo."; +$LANG["validation_no_last_name"] = "Vi preghiamo di immettere il vostro cognome."; +$LANG["validation_no_login_page"] = "Si prega di indicare quale pagina si desidera essere inviato ogni volta che si accede a."; +$LANG["validation_no_logout_url"] = "Vi preghiamo di immettere l'URL per la disconnessione."; +$LANG["validation_no_main_email_recipient"] = "Si prega di inserire almeno un indirizzo e-mail principale (cioè non un cc o bcc)."; +$LANG["validation_no_menu"] = "Si prega di selezionare un menu per questo account utente."; +$LANG["validation_no_menu_id"] = "Si prega di selezionare un menu."; +$LANG["validation_no_num_clients_per_page"] = "Vi preghiamo di immettere il numero di account di clienti per pagina."; +$LANG["validation_no_num_emails_per_page"] = "Inserisci il numero di email alla lista per pagina."; +$LANG["validation_no_num_form_fields"] = "Si prega di inserire il numero di campi per il modulo."; +$LANG["validation_no_num_forms_per_page"] = "Vi preghiamo di immettere il numero di moduli per pagina."; +$LANG["validation_no_num_menus_per_page"] = "Si prega di inserire il numero di menu alla lista per pagina."; +$LANG["validation_no_num_modules_per_page"] = "Si prega di inserire il numero di moduli per pagina."; +$LANG["validation_no_num_option_lists_per_page"] = "Si prega di inserire il numero di liste di opzione per pagina."; +$LANG["validation_no_num_submissions_per_page"] = "Vi preghiamo di immettere il numero di invii da mostrare su ogni pagina."; +$LANG["validation_no_option_list_name"] = "Inserisci il nome della lista di opzione."; +$LANG["validation_no_page_titles"] = "Si prega di inserire i titoli delle pagine predefinite per gli account utente."; +$LANG["validation_no_password"] = "Vi preghiamo di immettere la vostra password."; +$LANG["validation_no_program_name"] = "Vi preghiamo di immettere il nome del programma."; +$LANG["validation_no_second_password"] = "Si prega di inserire nuovamente la password."; +$LANG["validation_no_sessions_timeout"] = "Inserisci il timeout della sessione."; +$LANG["validation_no_smart_fill_values"] = "Si prega di inserire il nome del campo del modulo e l'URL della forma."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "N. schede definito"; +$LANG["validation_no_test_email_recipient"] = "Inserisci l'indirizzo email di cui si dovrebbe inviare l'email di prova."; +$LANG["validation_no_test_email_submission_id"] = "Si prega di inserire la presentazione numero di ID."; +$LANG["validation_no_theme"] = "Si prega di selezionare un tema."; +$LANG["validation_no_theme_swatch"] = "Si prega di selezionare un campione per il tema selezionato."; +$LANG["validation_no_timezone_offset"] = "Inserisci il fuso orario."; +$LANG["validation_no_titles"] = "Vi preghiamo di immettere il titolo della pagina."; +$LANG["validation_no_two_column_names"] = "Spiacenti, non è possibile immettere lo stesso nome della colonna del database per due volte."; +$LANG["validation_no_ui_language"] = "Si prega di selezionare una lingua per l'interfaccia."; +$LANG["validation_no_url"] = "Si prega di inserire un URL."; +$LANG["validation_no_username"] = "Vi preghiamo di immettere il vostro nome utente."; +$LANG["validation_no_username_or_js"] = "Dovete immettere il vostro nome utente. Vi preghiamo di attivare javascript nel vostro browser."; +$LANG["validation_no_view_fields"] = "Vista la tua non contiene i campi! È necessario assegnare almeno un campo che ci sia qualcosa da mostrare fino a Suo avviso."; +$LANG["validation_no_view_fields_selected"] = "Si prega di selezionare uno o più campi per aggiungere alla vista."; +$LANG["validation_no_view_name"] = "Si prega di inserire il nome del vostro Vista."; +$LANG["validation_num_rows_to_add"] = "Vi preghiamo di immettere il numero di righe da aggiungere."; +$LANG["validation_option_list_name_taken"] = "Spiacente, questo nome lista di opzioni è già preso. Si prega di scegliere un nuovo nome."; +$LANG["validation_password_in_password_history"] = "Per ragioni di sicurezza, non è possibile inserire la password come qualsiasi degli ultimi {\$history_size} password. Si prega di inserire una password diversa."; +$LANG["validation_passwords_different"] = "Vi preghiamo di controllare che le password siano identiche."; +$LANG["validation_please_enter_search_date_range"] = "Vi preghiamo di immettere l'intervallo di tempo da considerare nella ricerca."; +$LANG["validation_please_enter_search_keyword"] = "Vi preghiamo di immettere il termine da ricercare."; +$LANG["validation_select_field_type"] = "Si prega di selezionare un tipo di campo."; +$LANG["validation_select_submissions_to_copy"] = "Si prega di selezionare quelle proposte che si desidera copiare."; +$LANG["validation_select_submissions_to_delete"] = "Vi preghiamo di selezionare gli invii che desiderate cancellare."; +$LANG["validation_smart_fill_cannot_fill"] = "Ci dispiace, non siamo riusciti a riempire questo campo."; +$LANG["validation_smart_fill_invalid_field_type"] = "Siamo stati in grado di individuare un campo, ma non è una discesa, casella di controllo o di un gruppo radio."; +$LANG["validation_smart_fill_no_field_found"] = "Ci dispiace, ma non abbiamo trovato un campo di modulo con quel nome sulla pagina specificata."; +$LANG["validation_smart_fill_no_page"] = "Si prega di individuare la pagina contenente il campo che si desidera Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Si prega di caricare tutte le pagine del modulo."; +$LANG["validation_upload_folder_not_writable"] = "La cartella di caricamento temporaneo specificata nell'installazione PHP non è scrivibile. Fino a quando ciò non sarà risolto, non si potrà caricare file attraverso Form Tools (o qualunque altro programma PHP). Vi preghiamo di contattare il vostro fornitore di hosting."; +$LANG["validation_upload_html_files_only"] = "Si prega di caricare solo i file HTML."; +$LANG["validation_username_taken"] = "Spiacenti, il nome utente che avete scelto è già in uso. Vi preghiamo di immettere un altro nome utente."; +$LANG["validation_wrong_password"] = "Spiacenti, la password è sbagliata."; +$LANG["word_about"] = "Informazioni su"; +$LANG["word_access"] = "Accesso"; +$LANG["word_account"] = "Account"; +$LANG["word_account_sp"] = "Account"; +$LANG["word_accounts"] = "Accounts"; +$LANG["word_action"] = "Azione"; +$LANG["word_active"] = "Attivo"; +$LANG["word_add"] = "Aggiungi"; +$LANG["word_add_rightarrow"] = "Aggiungi »"; +$LANG["word_add_uc_rightarrow"] = "AGGIUNGI »"; +$LANG["word_administration"] = "Amministrazione"; +$LANG["word_administrator"] = "Amministrazione"; +$LANG["word_after"] = "Dopo"; +$LANG["word_aquamarine"] = "Acquamarina"; +$LANG["word_asc"] = "ASC"; +$LANG["word_author"] = "Autore"; +$LANG["word_author_c"] = "Autore:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« indietro"; +$LANG["word_bcc_c"] = "CCn:"; +$LANG["word_before"] = "Prima"; +$LANG["word_benefits"] = "Lati positivi"; +$LANG["word_blue"] = "Blu"; +$LANG["word_cancel"] = "Annullare"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Caselle selezionabili"; +$LANG["word_checklist"] = "Lista di controllo"; +$LANG["word_client"] = "Cliente"; +$LANG["word_client_c"] = "Cliente:"; +$LANG["word_clients"] = "Clienti"; +$LANG["word_close"] = "Chiudi"; +$LANG["word_code"] = "Codice"; +$LANG["word_column"] = "Colonna"; +$LANG["word_columns"] = "Colonne"; +$LANG["word_columns_sp"] = "Colonna (s)"; +$LANG["word_complete"] = "COMPLETO"; +$LANG["word_configuration"] = "Configurazione"; +$LANG["word_content"] = "Contenuto"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continua »"; +$LANG["word_copy"] = "Copia"; +$LANG["word_custom"] = "Personalizzato"; +$LANG["word_data"] = "Dati"; +$LANG["word_date"] = "Data"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "CANCELLA"; +$LANG["word_desc"] = "DISC"; +$LANG["word_direct"] = "Diretto"; +$LANG["word_disabled"] = "Disabilitato"; +$LANG["word_documentation"] = "Documentazione"; +$LANG["word_done"] = "Fatto"; +$LANG["word_drawbacks"] = "Lati negativi"; +$LANG["word_dropdown"] = "Menù a discesa"; +$LANG["word_edit"] = "MODIFICA"; +$LANG["word_editable"] = "Modificabile"; +$LANG["word_email"] = "EMAIL"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Email"; +$LANG["word_enabled"] = "Abilitato"; +$LANG["word_equals"] = "È uguale a"; +$LANG["word_error"] = "Errore"; +$LANG["word_error_c"] = "Errore:"; +$LANG["word_examples_c"] = "Esempi:"; +$LANG["word_external"] = "Esterno"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Campo"; +$LANG["word_field_sp"] = "Campo/i"; +$LANG["word_fields"] = "Campi"; +$LANG["word_fields_sp"] = "Field (s)"; +$LANG["word_file"] = "File"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "File"; +$LANG["word_filters"] = "Filtri"; +$LANG["word_filters_sp"] = "Filtro (s)"; +$LANG["word_for"] = "per"; +$LANG["word_form"] = "Modulo"; +$LANG["word_form_c"] = "Modulo:"; +$LANG["word_formatting"] = "Formattazione"; +$LANG["word_forms"] = "Moduli"; +$LANG["word_found"] = "Trovato"; +$LANG["word_from"] = "Da"; +$LANG["word_from_c"] = "Da:"; +$LANG["word_general"] = "Generale"; +$LANG["word_green"] = "Verde"; +$LANG["word_grey"] = "Grigio"; +$LANG["word_height"] = "Altezza"; +$LANG["word_help"] = "Aiuto"; +$LANG["word_hidden"] = "Nascosto"; +$LANG["word_highlight"] = "Evidenziare"; +$LANG["word_horizontal"] = "Orizzontale"; +$LANG["word_hour"] = "Ora"; +$LANG["word_hours"] = "Ore"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Immagine"; +$LANG["word_incomplete"] = "Incompleto"; +$LANG["word_install"] = "Installa"; +$LANG["word_installation"] = "Installazione"; +$LANG["word_internal"] = "Interno"; +$LANG["word_language"] = "Lingua"; +$LANG["word_large"] = "Grande"; +$LANG["word_like"] = "È simile a"; +$LANG["word_login"] = "CONNESSIONE"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Disconnessione"; +$LANG["word_main"] = "Principale"; +$LANG["word_medium"] = "Medio"; +$LANG["word_menu"] = "Menù"; +$LANG["word_menus"] = "Menù"; +$LANG["word_minutes"] = "minuti"; +$LANG["word_misc"] = "Vari"; +$LANG["word_module"] = "Modulo"; +$LANG["word_modules"] = "Moduli"; +$LANG["word_na"] = "N.D."; +$LANG["word_name"] = "Nome"; +$LANG["word_name_c"] = "Nome:"; +$LANG["word_never"] = "Mai"; +$LANG["word_next_rightarrow"] = "successivo »"; +$LANG["word_next_step_rightarrow"] = "PASSO SUCCESSIVO »"; +$LANG["word_no"] = "No"; +$LANG["word_none"] = "Nessuno"; +$LANG["word_notes"] = "Note"; +$LANG["word_notification"] = "Notifica"; +$LANG["word_number"] = "Numero"; +$LANG["word_off"] = "Non attivo"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Va bene"; +$LANG["word_on"] = "Attivo"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operatore"; +$LANG["word_options"] = "Opzioni"; +$LANG["word_orange"] = "Arancione"; +$LANG["word_order"] = "Ordine"; +$LANG["word_other"] = "Altro"; +$LANG["word_other_c"] = "Altro:"; +$LANG["word_page"] = "Pagina"; +$LANG["word_page_c"] = "Pagina:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Parola chiave"; +$LANG["word_password_c"] = "Parola chiave:"; +$LANG["word_pending"] = "In attesa"; +$LANG["word_permissions"] = "Permessi"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« precedente"; +$LANG["word_private"] = "Privato"; +$LANG["word_public"] = "Pubblico"; +$LANG["word_purple"] = "Porpora"; +$LANG["word_recipient"] = "Destinatario"; +$LANG["word_recipient_sp"] = "Destinatario/i"; +$LANG["word_red"] = "Rosso"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Cancella"; +$LANG["word_remove_uc_leftarrow"] = "« CANCELLA"; +$LANG["word_reply_to"] = "Rispondi a"; +$LANG["word_reply_to_c"] = "Rispondi a:"; +$LANG["word_required"] = "Richiesto"; +$LANG["word_reset"] = "Azzera"; +$LANG["word_resolved"] = "Risolto"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "fila"; +$LANG["word_search"] = "Cerca"; +$LANG["word_searchable"] = "Ricercabili"; +$LANG["word_select"] = "Seleziona"; +$LANG["word_setting"] = "Configurazione"; +$LANG["word_settings"] = "CONFIGURAZIONE"; +$LANG["word_show"] = "Mostra"; +$LANG["word_size"] = "Dimensione"; +$LANG["word_skipped"] = "Saltato"; +$LANG["word_small"] = "Piccolo"; +$LANG["word_solution"] = "Soluzione"; +$LANG["word_sortable"] = "Ordinabile"; +$LANG["word_start"] = "Inizio"; +$LANG["word_status"] = "Condizione"; +$LANG["word_string"] = "Termine"; +$LANG["word_subject"] = "Oggetto"; +$LANG["word_subject_c"] = "Oggetto"; +$LANG["word_submenu"] = "Sottomenù"; +$LANG["word_submission"] = "Invio"; +$LANG["word_submissions"] = "Invii"; +$LANG["word_system"] = "Sistema"; +$LANG["word_tab"] = "Linguetta"; +$LANG["word_tabs"] = "Linguette"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Prova"; +$LANG["word_text"] = "Testo"; +$LANG["word_textarea"] = "Area di testo"; +$LANG["word_textbox"] = "Riquadro di testo"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temi"; +$LANG["word_time"] = "Tempo"; +$LANG["word_tiny"] = "Piccolo"; +$LANG["word_tips"] = "Consigli"; +$LANG["word_today"] = "Oggi"; +$LANG["word_truncate_q"] = "Troncare?"; +$LANG["word_uninstall"] = "Disinstalla"; +$LANG["word_unknown"] = "Sconosciuto"; +$LANG["word_update"] = "AGGIORNA"; +$LANG["word_upgrade"] = "Aggiorna"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Utente"; +$LANG["word_username"] = "Nome utente"; +$LANG["word_username_c"] = "Nome utente:"; +$LANG["word_validation"] = "Validazione"; +$LANG["word_value"] = "Valore"; +$LANG["word_value_sp"] = "Valore/i"; +$LANG["word_verified"] = "Verificato"; +$LANG["word_verify"] = "Verificare"; +$LANG["word_version"] = "Versione"; +$LANG["word_vertical"] = "Verticale"; +$LANG["word_view"] = "Mostra"; +$LANG["word_views"] = "Viste"; +$LANG["word_warning"] = "Attenzione!"; +$LANG["word_warning_c"] = "Avviso:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Benvenuto!"; +$LANG["word_width_c"] = "larghezza:"; +$LANG["word_words"] = "Parole"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Giallo"; +$LANG["word_yes"] = "Sì"; \ No newline at end of file diff --git a/global/lang/ja.php b/global/lang/ja.php new file mode 100644 index 00000000..48eff8f3 --- /dev/null +++ b/global/lang/ja.php @@ -0,0 +1,1219 @@ +警告!
    あなたは、{\$num_selected_on_page}このページに提出し、{\$num_selected_on_other_pages}他のページ上で選択している。下記のいずれか、次のオプションを選択します:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "警告!このページ上の任意提出を選択していないが選択した{\$num_selected_on_other_pages}他のページで。してください、これらの投稿を削除することを確認。
    "; +$LANG["confirm_delete_view"] = "あなたは、このプロフィールを削除してもよろしいですか?"; +$LANG["confirm_refresh_page"] = "あなたはページを更新してもよろしいですか?これは、あなたが行った変更は失われます。"; +$LANG["confirm_save_change_before_redirect"] = "つまたは複数のフィールドが更新されました。あなたは、リダイレクトする前に、変更内容を保存しますか?"; +$LANG["confirm_smart_fill_db_column_fields"] = "あなたのスマートFillにデータベースのカラム名もよろしいですか?これはあなたの既存の値が上書きされます。"; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "このオプションは、表示テキストフ​​ィールドに基づいて、データベースの列名を自動生成、データベースのテーブルの内容が読みやすくなりますので。"; +$LANG["confirm_smart_fill_display_names"] = "あなたのスマートFillに表示する名前をよろしいですか?これはあなたの既存の値が上書きされます。"; +$LANG["confirm_ungroup_option_list"] = "あなたは、このオプションのリストをグループ化を解除してもよろしいですか?すべてのオプションは、単一の、グループ化されていないリストにひとまとめにされます。"; +$LANG["confirm_uninstall_module"] = "あなたは、このモジュールをアンインストールしてもよろしいですか?すべてのモジュールのデータが失われます。"; +$LANG["date_AM"] = "午前"; +$LANG["date_Fri"] = "金"; +$LANG["date_Friday"] = "金曜日"; +$LANG["date_Mon"] = "月"; +$LANG["date_Monday"] = "月曜日"; +$LANG["date_PM"] = "午後"; +$LANG["date_Sat"] = "土"; +$LANG["date_Saturday"] = "土曜日"; +$LANG["date_Sun"] = "太陽"; +$LANG["date_Sunday"] = "日曜日"; +$LANG["date_Thu"] = "木"; +$LANG["date_Thursday"] = "木曜日"; +$LANG["date_Tue"] = "火曜"; +$LANG["date_Tuesday"] = "火曜日"; +$LANG["date_Wed"] = "水"; +$LANG["date_Wednesday"] = "水曜日"; +$LANG["date_am"] = "午前"; +$LANG["date_month_April"] = "4月"; +$LANG["date_month_August"] = "8月"; +$LANG["date_month_December"] = "12月"; +$LANG["date_month_February"] = "2月"; +$LANG["date_month_January"] = "1月"; +$LANG["date_month_July"] = "7月"; +$LANG["date_month_June"] = "6月"; +$LANG["date_month_March"] = "2007年3月"; +$LANG["date_month_May"] = "〜かもしれない"; +$LANG["date_month_November"] = "11月"; +$LANG["date_month_October"] = "10月"; +$LANG["date_month_September"] = "9月"; +$LANG["date_month_short_Apr"] = "4月"; +$LANG["date_month_short_Aug"] = "8月"; +$LANG["date_month_short_Dec"] = "12月"; +$LANG["date_month_short_Feb"] = "2月"; +$LANG["date_month_short_Jan"] = "09年01月"; +$LANG["date_month_short_Jul"] = "7月"; +$LANG["date_month_short_Jun"] = "6月"; +$LANG["date_month_short_Mar"] = "03"; +$LANG["date_month_short_May"] = "〜かもしれない"; +$LANG["date_month_short_Nov"] = "11月"; +$LANG["date_month_short_Oct"] = "10月"; +$LANG["date_month_short_Sep"] = "9月"; +$LANG["date_pm"] = "午後"; +$LANG["notify_account_deleted"] = "ユーザーアカウントが削除されている。"; +$LANG["notify_account_updated"] = "お客様のアカウントは正常に更新されています。"; +$LANG["notify_add_display_values"] = "表示する値を追加"; +$LANG["notify_admin_menu_updated"] = "管理メニューが更新されている。"; +$LANG["notify_admin_theme_overridden"] = "管理者のテーマは、手動で上書きされています。"; +$LANG["notify_allow_url_fopen_not_set"] = "申し訳ありませんが、このテストは、Webサーバー上で実行することはできません。 1には、php.iniファイルで設定することがallow_url_fopenが必要です。この設定は、PHPのURLは、このテストを実行する必要があるを介してファイルにアクセスすることができます。手動でFTP経由でそのフォルダにファイルをアップロードし、その後のURLを指定してそれにアクセスしようとしてそれをテストすることができます。"; +$LANG["notify_change_temp_password"] = "あなただけの一時的なパスワードでログイン。これで、パスワードをリセットする必要があります!"; +$LANG["notify_click_to_edit_new_submission"] = "新しい投稿を編集するには、ここをクリックしてください。"; +$LANG["notify_client_account_menus_updated"] = "s)は{\$menu_name}メニューに更新されているクライアントアカウント(。あなたが現在)は、以前にアカウント(sに関連付けられたメニューを削除する場合があります。"; +$LANG["notify_client_account_not_updated"] = "クライアントのアカウントを更新できませんでした。"; +$LANG["notify_client_account_themes_updated"] = "s)は{\$theme}をテーマに更新されているクライアントアカウント(。あなたが現在)をテーマに、以前にアカウント(sに関連付けられて無効にすることがあります。"; +$LANG["notify_client_account_updated"] = "クライアントのアカウントが正常に更新されています。"; +$LANG["notify_client_menu_deleted"] = "クライアントのメニューが削除されています。"; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "メニューには、削除されている次のクライアントのアカウントはもはやメニューを持って!次のアカウントを更新する必要があります:"; +$LANG["notify_client_menu_updated"] = "クライアントのメニューを更新しています。"; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "申し訳ありませんが、メニューを使用するだけで削除しようとしましたがすでにクライアントは次のとおりで使用されています。ために、まず、他のメニューにクライアントに割り当てる必要があるメニューを削除する。クライアント名をクリックすると、個々のアカウントを編集したり、別のメニューの下のドロップダウンリストを使用して、すべてのアカウントに割り当てます。"; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "申し訳ありませんが、1つだけ無効にしたテーマは、既に次のクライアントのアカウントで使用されている。ために、まず別のテーマが各クライアントに割り当てることが必要となるテーマを無効にします。クライアント名をクリックすると、個々のアカウントを編集するかをテーマに、以下のドロップダウンリストを使用して、すべてのアカウントに割り当てます。"; +$LANG["notify_edit_email_fields_link"] = "ここをクリックしてフォームフィールドは、電子メールフィールドなので、あなたの電子メールテンプレートでそれらをターゲットにできるかを指定する。"; +$LANG["notify_edit_field_new_field"] = "これは新しいフィールドです 。あなたは完全にこのフィールドを編集できるようになる前に、メインページを更新する必要があります。"; +$LANG["notify_edit_option_list_after_save"] = "あなたは、オプションのリストを選択し、それを編集できるようになる前に、変更内容を保存する必要があります。"; +$LANG["notify_email_field_config_deleted"] = "Eメールの設定が削除されています。"; +$LANG["notify_email_fields_not_updated"] = "申し訳ありませんが、我々は電子メールのフィールドを更新できませんでした。"; +$LANG["notify_email_fields_updated"] = "Eメールのフィールドが更新されている。"; +$LANG["notify_email_not_sent"] = "申し訳ありませんが、メールを送信できませんでした。下記のアドレスでは、サイト管理者にお問い合わせください。"; +$LANG["notify_email_not_sent_c"] = "申し訳ありませんが、メールを送信できませんでした。"; +$LANG["notify_email_sent"] = "掲載)が送信されている電子メール(。"; +$LANG["notify_email_template_deleted"] = "このメールは削除されているテンプレートです。"; +$LANG["notify_email_template_updated"] = "電子メールに更新されているテンプレートです。"; +$LANG["notify_enabled_module_list_updated"] = "有効なモジュールのリストが更新されています。"; +$LANG["notify_error_saving_fields"] = "フィールドを保存するエラーが発生しました。"; +$LANG["notify_field_changes_saved"] = "あなたのフィールド(複数可)への変更内容が保存されています。"; +$LANG["notify_field_options_smart_filled"] = "あなたのフィールドのオプションは、スマート入力されている。"; +$LANG["notify_field_selected"] = "フィールドが選択されています。 ここをクリックし 、メインフィールドのリストに戻ります。"; +$LANG["notify_field_updated"] = "このフィールドが更新されている。"; +$LANG["notify_file_not_uploaded"] = "ファイルをアップロードすることができませんでした。"; +$LANG["notify_file_uploaded"] = "ファイルが正常にアップロードされました。"; +$LANG["notify_filters_not_updated"] = "エラーが発生、このクライアントの提出フィルタ更新されました。"; +$LANG["notify_filters_updated"] = "送信フィルタは、このクライアントのために更新されている。"; +$LANG["notify_folder_correct_permissions"] = "このフォルダには、適切な権限を持ちます。"; +$LANG["notify_folder_url_match"] = "フォルダが正しく一致するように表示されるURLです。"; +$LANG["notify_folder_url_no_access"] = "これは、PHPにアクセスすることができませんでしたこのテストは実行されませんでしたがそのURL。これは、通常のURLをされてパスワード。htaccessファイルで保護さによって引き起こされます。"; +$LANG["notify_folder_url_no_match"] = "このフォルダのURLの組み合わせと一致する必要は表示されません。"; +$LANG["notify_folder_url_unknown_error"] = "不明なエラーが発生しました。手動でFTP経由でそのフォルダにファイルをアップロードし、その後のURLを指定してそれにアクセスしようとしてそれをテストすることができます。"; +$LANG["notify_form_access_type_email_info"] = "このフォームは管理者のアクセスのタイプを持って、どのクライアントがそれへのアクセスを持たないし、ドロップダウン下記に記載されていないので。"; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "申し訳ありませんが、IDが存在しないとフォーム。"; +$LANG["notify_form_field_not_added"] = "フォームフィールド '{\$fieldname}' を追加できませんでした。"; +$LANG["notify_form_field_options_updated"] = "フォームフィールドのオプションが更新されている。"; +$LANG["notify_form_field_removed"] = "フォームフィールドを正常に削除されました。"; +$LANG["notify_form_fields_removed"] = "フォームフィールドを正常に削除された。"; +$LANG["notify_form_not_updated_notify_admin"] = "フォームを更新することができませんでした。この問題を報告するには、サイト管理者にお問い合わせください。"; +$LANG["notify_form_settings_updated"] = "フォームの設定が正常に更新されている。"; +$LANG["notify_form_submission_updated"] = "フォームの送信が更新されている。"; +$LANG["notify_form_tabs_updated"] = "タブが更新されている。"; +$LANG["notify_form_updated"] = "フォームが正常に更新されています。"; +$LANG["notify_form_views_updated"] = "フォームのビューが更新されました。"; +$LANG["notify_install_invalid_db_info"] = "申し訳ありませんが、データベースを提供された情報を使用して接続することができませんでした。データベースに返されるエラーメッセージが表示されます:{\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "フォームが作成されました!あなたがこれらのタブを使用してフォームを構成することができます。"; +$LANG["notify_invalid_account_information_in_sessions"] = "アカウント情報をセッションに格納さが無効です。もう一度下でログインします。"; +$LANG["notify_invalid_license_key"] = "申し訳ありませんが、それは有効なライセンスキーではないようです。もう一度入力してみてください。"; +$LANG["notify_invalid_permissions"] = "このページにアクセスする権限がありません。ログアウトしています。"; +$LANG["notify_invalid_search_dates"] = "有効な日付または日付を入力するDatePickerを使用してください。"; +$LANG["notify_invalid_upload_folder"] = "アップロード先のフォルダのいずれかが無効であるか、または書き込めません。"; +$LANG["notify_lang_list_updated"] = "利用可能なUI言語のリストが更新されています。"; +$LANG["notify_login_info_emailed"] = "お客様のログイン情報をメールで送信されている。"; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "おっと、このモジュールがすでにインストールされています!"; +$LANG["notify_module_installed"] = "モジュールがインストールされています。 ここをクリックしモジュールを選択します 。"; +$LANG["notify_module_list_updated"] = "モジュールのリストが更新されています。"; +$LANG["notify_module_uninstalled"] = "このモジュールはアンインストールされています。"; +$LANG["notify_module_updated"] = "{\$module}はモジュールが{\$version}に更新されました。 モジュールを選択するにはここをクリックします 。"; +$LANG["notify_multi_field_selected"] = "フィールドが選択されています。 ここをクリックし表示するために、フィールドのオプションを編集します。"; +$LANG["notify_multi_field_updated"] = "このフィールドが更新されている。を設定することができるフォームを設定した後、フィールドのオプション。"; +$LANG["notify_multiple_fields_found"] = "複数の要素をこのフィールド名({\$field_name})で)発見された。あなたのページに1つのフォームより、または含まれている場合、誤って1つの別のフォームを同一の名前のこの問題が発生することができます。選択してくださいあなたが欲しい下記のリストから。"; +$LANG["notify_new_default_view_created"] = "すべてのフォームフィールドを含む新しい、デフォルトのビューが作成されました。"; +$LANG["notify_new_submission_created"] = "提出が作成されました。あなたは以下のように編集することがあります。"; +$LANG["notify_no_account_id_in_sessions"] = "は、ユーザーのアカウントIDのセッションで発見された。もう一度下でログインします。"; +$LANG["notify_no_api_installed"] = "場合は、APIをインストールしていない"; +$LANG["notify_no_client_permissions"] = "ない設定を編集するご利用いただけます。"; +$LANG["notify_no_email_template_selected"] = "してください電子メールテンプレートを選択します。"; +$LANG["notify_no_emails_defined"] = "いいえメールはこのフォーム用に定義されている。新しいものを、下のボタンをクリックして追加してください。"; +$LANG["notify_no_field_settings"] = "このフィールドタイプは、余分な設定が含まれていません。"; +$LANG["notify_no_fields_in_tab"] = "このタブには任意のフィールドが含まれていません。"; +$LANG["notify_no_option_lists"] = "定義されたオプションリストがありません。新しいものを作成するには、下記のボタンをクリックしてください。"; +$LANG["notify_no_test_submission"] = "フォームツールはまだテストが成功した提出を受けていない。"; +$LANG["notify_no_user_email_fields_configured"] = "注:場合は、フォームに記載されたすべての電子メールアドレスに電子メールを送信したい場合は、最初の設定にあるフォームを電子メールフィールドが必要。"; +$LANG["notify_no_views"] = "フォームは、セットアップされたビューを持っていません!あなたのフォームデータを管理するために少なくとも1つのビューが必要になります。"; +$LANG["notify_no_views_assigned_to_client_form"] = "これは、ユーザーアカウントのすべてのフォームを再生するので、任意のデータを参照することができなくなりますが割り当てられていないようです。してください。より詳細なヘルプについては、管理者にお問い合わせください。"; +$LANG["notify_no_views_defined"] = "任意のビューが定義されていません。あなたは、少なくとも1つのビューが作成されていない限り、このフォームの送信を表示することができなくなります。デフォルトのビューを作成するには下のボタンをクリックしてください。"; +$LANG["notify_option_list_deleted"] = "オプションのリストが削除されました。"; +$LANG["notify_option_list_updated"] = "オプションのリストが更新されました。"; +$LANG["notify_public_form_omit_list_updated"] = "クライアントが更新されている、このフォームのリストを省略する。"; +$LANG["notify_public_view_omit_list_updated"] = "クライアントが更新されている、このビューのリストは省略します。"; +$LANG["notify_required_admin_pages"] = "次のページ管理者メニューで必要とされます:{\$remaining_pages}。"; +$LANG["notify_sessions_timeout"] = "ので、いったんログアウトする必要がありました申し訳ありませんが、しばらくの間、すべての活動ではなかった。もう一度下でログインします。"; +$LANG["notify_setup_options_updated"] = "セットアップオプションが更新されている。"; +$LANG["notify_smart_fill_field_not_found"] = "私たちはこの名前({\$field_name})で)掲載)指定されたフォーム(内のフィールドを見つけることができませんでした。のいずれかを手動で以下のフィールドタイプをクリックするか、ナビゲーションボタンをクリック後、このフィールドを編集に設定することができます。"; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "掲載)が正常にアップロードされたあなたのファイル(。もう一度やり直してくださいスマート塗りつぶし]ボタンをクリックしてください。このステップが失敗した場合、manally後にこの手順を設定し、フォームフィールドをスキップする必要があります。"; +$LANG["notify_smart_fill_submitted"] = "フォームが送信されている。あなたのフォームフィールドのオプションの数の大きさに応じて、ある程度時間がかかることがあります。"; +$LANG["notify_smart_fill_upload_fields_fail"] = "、すみません、1つまたは入力した複数のファイルがアップロードされませんでした。この手順は、設定のフィールドを手動でスキップする必要があります。"; +$LANG["notify_submission_and_files_deleted"] = "提出し、任意の(秒)に関連付けられたファイルが正常に削除されました。"; +$LANG["notify_submission_copied"] = "提出がコピーされました。"; +$LANG["notify_submission_copied_edit"] = "提出がコピーされました。 下で編集することができます。"; +$LANG["notify_submission_deleted"] = "送信が正常に削除されました。"; +$LANG["notify_submission_deleted_with_problems"] = "提出は、削除された以下の問題は、以下のファイル(秒)を削除しようとすると発生しました:"; +$LANG["notify_submission_id_not_found"] = "提出番号が見つかりませんでした。"; +$LANG["notify_submission_not_updated"] = "提出は更新されませんでした。"; +$LANG["notify_submissions_and_files_deleted"] = "提出し、任意の(秒)に関連付けられたファイルが正常に削除されました。"; +$LANG["notify_submissions_copied"] = "{\$num_submissions}件の投稿がコピーされています。"; +$LANG["notify_submissions_deleted"] = "応募が正常に削除されました。"; +$LANG["notify_submissions_deleted_with_problems"] = "応募には、削除された以下の問題は、以下のファイル(秒)を削除しようとすると発生しました:"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "テストメールを送信できませんでした。"; +$LANG["notify_theme_cache_folder_not_writable"] = "このテーマのキャッシュフォルダに書き込み可能ではありません。ためには{\$folder}フォルダをする必要があります完全な読み取りニーズに書き込みのアクセス許可は、このテーマを有効にします。"; +$LANG["notify_theme_list_updated"] = "テーマのリストが更新されています。"; +$LANG["notify_themes_settings_updated"] = "あなたのテーマの設定が更新されている。"; +$LANG["notify_view_deleted"] = "プロフィールが削除されています。"; +$LANG["notify_view_group_deleted"] = "表示グループが削除されました。"; +$LANG["notify_view_missing_columns"] = "おっと!申し訳ありませんが、このビューは、まだ完全にセットアップされていません。"; +$LANG["notify_view_missing_columns_admin_fix"] = "ここをクリックしてフィールドに、このページのカラムとして表示するのかを指定する。"; +$LANG["notify_view_updated"] = "プロフィール更新されています。"; +$LANG["notify_your_email_sent"] = "あなたのメールが正常に送信されている。"; +$LANG["phrase_100_per_page"] = "1ページあたり100"; +$LANG["phrase_10_per_page"] = "ページあたり10"; +$LANG["phrase_15_per_page"] = "ページあたり15"; +$LANG["phrase_1_direct"] = "1。ダイレクト"; +$LANG["phrase_1char"] = "1文字"; +$LANG["phrase_20_per_page"] = "ページあたり20"; +$LANG["phrase_25_per_page"] = "1ページあたり25"; +$LANG["phrase_2_code"] = "2。コード"; +$LANG["phrase_2_columns"] = "2カラム"; +$LANG["phrase_2chars"] = "2文字"; +$LANG["phrase_3_columns"] = "3列"; +$LANG["phrase_4_columns"] = "4列"; +$LANG["phrase_50_per_page"] = "1ページあたり50件"; +$LANG["phrase_accepting_submissions"] = "(受付登録)"; +$LANG["phrase_access_admin_account_c"] = "ここにあなたの管理アカウントにアクセスすることができます:"; +$LANG["phrase_access_type"] = "アクセスタイプ"; +$LANG["phrase_account_info"] = "アカウント情報"; +$LANG["phrase_account_settings"] = "アカウントの設定"; +$LANG["phrase_action_needed"] = "対処が必要です"; +$LANG["phrase_add_client"] = "クライアントを追加する"; +$LANG["phrase_add_client_menu"] = "クライアントのメニューを追加する"; +$LANG["phrase_add_default_settings_rightarrow"] = "デフォルトの設定を追加»"; +$LANG["phrase_add_field"] = "フィールドを追加する"; +$LANG["phrase_add_fields"] = "フィールドを追加する"; +$LANG["phrase_add_fields_rightarrow"] = "フィールド(複数可)を追加»"; +$LANG["phrase_add_form"] = "フォームの追加"; +$LANG["phrase_add_form_external"] = "フォームを追加 - 外部"; +$LANG["phrase_add_form_internal"] = "フォームを追加 - 内部"; +$LANG["phrase_add_new_group_rightarrow"] = "新しいグループを追加»"; +$LANG["phrase_add_num_rows"] = "( \$)行(秒)の番号を追加"; +$LANG["phrase_add_row"] = "行を追加»"; +$LANG["phrase_add_submission_button"] = "送信ボタンを追加します。"; +$LANG["phrase_add_view_rightarrow"] = "ビューを追加»"; +$LANG["phrase_adding_multi_page_form"] = "APIを使用したマルチページのフォームを追加する"; +$LANG["phrase_adding_single_page_form"] = "APIを使って1つのページのフォームを追加する"; +$LANG["phrase_admin_menu"] = "管理者メニュー"; +$LANG["phrase_admin_only"] = "管理者のみ"; +$LANG["phrase_admin_panel"] = "管理者パネル"; +$LANG["phrase_administrator_theme"] = "管理者のテーマ"; +$LANG["phrase_advanced_settings_rightarrow"] = "高度な設定»"; +$LANG["phrase_all_X_results_selected"] = "すべての {\$numresults} 件中選択"; +$LANG["phrase_all_clients"] = "すべてのクライアント"; +$LANG["phrase_all_clients_except_c"] = "を除くすべてのクライアントの場合:"; +$LANG["phrase_all_clients_have_access"] = "(すべてのクライアント)にアクセスして"; +$LANG["phrase_all_fields"] = "すべてのフィールド"; +$LANG["phrase_all_fields_displayed"] = "すべてのフィールドが表示されます。"; +$LANG["phrase_all_statuses"] = "すべてのステータス"; +$LANG["phrase_all_submissions"] = "すべての応募"; +$LANG["phrase_allow_fields_edited"] = "を許可する各フィールドを編集する"; +$LANG["phrase_alphanumeric"] = "英数字(A〜Z、0〜9)"; +$LANG["phrase_api_version"] = "APIバージョン"; +$LANG["phrase_apply_timezone_offset"] = "タイムゾーンオフセットを適用します。"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "割り当てる上記のすべてのクライアントアカウントの {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "割り当てる上記のすべてのクライアントアカウントの{\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "終了時"; +$LANG["phrase_at_start"] = "スタート時"; +$LANG["phrase_author_link"] = "著者標目リンク"; +$LANG["phrase_auto_disable_account"] = "後自動アカウントを無効に#がログイン試行に失敗しました"; +$LANG["phrase_auto_size"] = "自動サイズ"; +$LANG["phrase_available_clients"] = "クライアントから利用可能"; +$LANG["phrase_available_fields"] = "利用可能なフィールド"; +$LANG["phrase_available_option_lists"] = "利用可能なオプションリスト"; +$LANG["phrase_available_swatches"] = "利用可能なスウォッチ"; +$LANG["phrase_available_swatches_c"] = "利用可能なスウォッチ:"; +$LANG["phrase_available_tabs"] = "利用可能なタブ"; +$LANG["phrase_available_views"] = "使用可能なビュー"; +$LANG["phrase_awaiting_form_submission"] = "フォームの送信を待機中。"; +$LANG["phrase_back_to_field_list"] = "«戻るフィールドのリスト"; +$LANG["phrase_back_to_search_results"] = "戻る検索結果"; +$LANG["phrase_base_view_on"] = "上のベースビュー..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "ログインの変更情報"; +$LANG["phrase_characters_limit_p"] = "文字が制限される。"; +$LANG["phrase_check_db_settings_try_again"] = "してくださいダブル再度データベースの設定をクリックし、[続行]ボタンをチェックします。"; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "URLを確認してください"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "クリーンアップ"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "クリアを省略一覧"; +$LANG["phrase_client_account_settings"] = "クライアントアカウントの設定"; +$LANG["phrase_client_field"] = "クライアントフィールド"; +$LANG["phrase_client_map_filters"] = "クライアント地図フィルタ»"; +$LANG["phrase_client_may_edit"] = "クライアントを編集することが"; +$LANG["phrase_client_menu"] = "Clientメニュー"; +$LANG["phrase_clients_can_access_form"] = "クライアントはフォームにアクセスすることができます"; +$LANG["phrase_clients_can_access_view"] = "クライアントはプロフィールにアクセスすることができます"; +$LANG["phrase_clients_cannot_access_form"] = "クライアントはフォームにアクセスすることはできません"; +$LANG["phrase_clients_cannot_access_view"] = "クライアントはプロフィールにアクセスできません 。"; +$LANG["phrase_clients_may_edit"] = "クライアントを編集することが"; +$LANG["phrase_code_c"] = "エラーコード:"; +$LANG["phrase_code_markup_field"] = "コー​​ド/マークアップフィールド"; +$LANG["phrase_code_markup_type"] = "コー​​ド/マークアップタイプ"; +$LANG["phrase_codes_c"] = "エラーコード:"; +$LANG["phrase_column_width"] = "列の幅"; +$LANG["phrase_company_name"] = "会社名"; +$LANG["phrase_configure_form_email_fields"] = "構成フォームのEメールのフィールド"; +$LANG["phrase_confirm_folder_url_match"] = "を確認するフォルダのベースURLマッチ"; +$LANG["phrase_connect_rows"] = "行を接続する"; +$LANG["phrase_copy_email_settings_from"] = "コピーを電子メールの設定から..."; +$LANG["phrase_copy_settings_from"] = "コピーの設定から..."; +$LANG["phrase_core_fields"] = "コアフィールド"; +$LANG["phrase_core_version"] = "Coreバージョン"; +$LANG["phrase_create_account"] = "アカウントを作成する"; +$LANG["phrase_create_admin_account"] = "管理者アカウントを作成します。"; +$LANG["phrase_create_config_file"] = "Configファイルを作成します。"; +$LANG["phrase_create_database_tables"] = "を作成するデータベースのテーブル"; +$LANG["phrase_create_default_view"] = "デフォルトビューを作成します。"; +$LANG["phrase_create_file"] = "ファイルを作成する"; +$LANG["phrase_create_group"] = "グループを作成します。"; +$LANG["phrase_create_new_email"] = "新しいメールを作成します。"; +$LANG["phrase_create_new_menu"] = "新しいメニューを作成します。"; +$LANG["phrase_create_new_option_list"] = "新しいオプションのリストを作成"; +$LANG["phrase_create_new_option_list_group"] = "新しいオプションのリストのグループを作成します。"; +$LANG["phrase_create_new_option_list_rightarrow"] = "新しいオプションのリストを作成する»"; +$LANG["phrase_create_new_view"] = "新しいビューを作成する"; +$LANG["phrase_create_new_view_group"] = "新規ビューのグループを作成します。"; +$LANG["phrase_custom_display_format"] = "カスタムの表示形式"; +$LANG["phrase_custom_recipient"] = "カスタム受信者"; +$LANG["phrase_custom_url"] = "カスタムURL"; +$LANG["phrase_dark_blue"] = "暗いブルー"; +$LANG["phrase_data_type"] = "データ型"; +$LANG["phrase_database_hostname"] = "データベースのホスト名"; +$LANG["phrase_database_name"] = "データベース名"; +$LANG["phrase_database_password"] = "データベースのパスワード"; +$LANG["phrase_database_settings"] = "データベースの設定"; +$LANG["phrase_database_setup"] = "データベースのセットアップ"; +$LANG["phrase_database_table_prefix"] = "データベーステーブルの接頭辞"; +$LANG["phrase_database_username"] = "データベースユーザ名"; +$LANG["phrase_date_format"] = "日付書式"; +$LANG["phrase_db_column"] = "DBのカラム"; +$LANG["phrase_db_setup_page_4"] = "4。データベースのセットアップ"; +$LANG["phrase_default_client_account_theme"] = "デフォルトのクライアントアカウントのテーマ"; +$LANG["phrase_default_date_field_search_value"] = "デフォルトの日付フィールドの検索値"; +$LANG["phrase_default_language"] = "デフォルトの言語"; +$LANG["phrase_default_menu"] = "デフォルトのメニュー"; +$LANG["phrase_default_sessions_timeout"] = "デフォルトのセッションタイムアウト"; +$LANG["phrase_default_sort_order"] = "デフォルトのソート順"; +$LANG["phrase_default_tab_label"] = "データ"; +$LANG["phrase_default_theme"] = "デフォルトテーマ"; +$LANG["phrase_default_value"] = "デフォルト値は"; +$LANG["phrase_default_values"] = "デフォルト値"; +$LANG["phrase_default_values_new_submissions"] = "新規提出のデフォルト値"; +$LANG["phrase_delete_field"] = "フィールドを削除します。"; +$LANG["phrase_delete_form"] = "削除フォーム"; +$LANG["phrase_delete_row"] = "行を削除する"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "削除関連のファイルが投稿を削除"; +$LANG["phrase_delete_view"] = "ビューを削除する"; +$LANG["phrase_disconnect_rows"] = "行を切断"; +$LANG["phrase_display_email"] = "ディスプレイ電子メール"; +$LANG["phrase_display_name"] = "表示名"; +$LANG["phrase_display_text"] = "表示テキスト"; +$LANG["phrase_display_value"] = "表示値"; +$LANG["phrase_edit_admin_menu"] = "[編集]管理メニュー"; +$LANG["phrase_edit_client"] = "[編集]クライアント"; +$LANG["phrase_edit_client_menu"] = "[編集] Clientメニュー"; +$LANG["phrase_edit_email_template"] = "[編集]電子メール用テンプレート"; +$LANG["phrase_edit_field"] = "フィールドの編集]"; +$LANG["phrase_edit_field_c"] = "フィールドを編集します。"; +$LANG["phrase_edit_form"] = "編集フォーム"; +$LANG["phrase_edit_form_access_type_b"] = "[フォームのアクセスの種類を編集]"; +$LANG["phrase_edit_option_list"] = "オプションのリストを編集する"; +$LANG["phrase_edit_submission"] = "[編集]発表"; +$LANG["phrase_edit_submission_label"] = "提出のラベルを編集する"; +$LANG["phrase_edit_view"] = "ビューの編集]"; +$LANG["phrase_email_format"] = "電子メールの形式"; +$LANG["phrase_email_settings"] = "電子メールの設定"; +$LANG["phrase_email_template"] = "電子メールテンプレート"; +$LANG["phrase_email_template_name"] = "電子メールテンプレートの名前"; +$LANG["phrase_error_learn_more"] = "このエラーに関する詳細をご覧ください。"; +$LANG["phrase_error_text_intro"] = "してくださいs)と再送信して、次のエラー(修正:"; +$LANG["phrase_errors_learn_more"] = "エラーコードをクリックして詳細をご覧ください。"; +$LANG["phrase_event_trigger"] = "イベントトリガ"; +$LANG["phrase_external_form"] = "外部フォーム"; +$LANG["phrase_external_form_info"] = "外部フォーム情報"; +$LANG["phrase_external_your_own_form"] = "外部(独自形式)"; +$LANG["phrase_field_comments"] = "フィールドのコメント"; +$LANG["phrase_field_label"] = "フィールドラベル"; +$LANG["phrase_field_options"] = "フィールドのオプション"; +$LANG["phrase_field_size"] = "フィールドのサイズ"; +$LANG["phrase_field_skipped"] = "フィールドのスキップ"; +$LANG["phrase_field_specific_settings"] = "フィールド固有の設定"; +$LANG["phrase_field_type"] = "フィールドタイプ"; +$LANG["phrase_field_type_no_validation"] = "このフィールドのタイプで利用可能な検証ルールはありません。"; +$LANG["phrase_field_types"] = "フィールドタイプ"; +$LANG["phrase_field_value"] = "フィールド値"; +$LANG["phrase_field_values_to_display_values"] = "フィールド値»値が表示さ"; +$LANG["phrase_final_touches_page_6"] = "6。最後の仕上げ"; +$LANG["phrase_finalize_form"] = "確定フォーム"; +$LANG["phrase_first_name"] = "名前"; +$LANG["phrase_footer_text"] = "フッターテキスト"; +$LANG["phrase_for_any_form_submission"] = "任意のフォームの送信について"; +$LANG["phrase_for_view_submissions"] = "次の表示(S)に収まるのみ提出"; +$LANG["phrase_forgot_password"] = "パスワードをお忘れですか?"; +$LANG["phrase_form_already_selected"] = "Formが既に選択された"; +$LANG["phrase_form_email_field_b_c"] = "[フォームのメールフィールド]:"; +$LANG["phrase_form_email_field_configuration"] = "フォームメールでのフィールドの設定"; +$LANG["phrase_form_email_fields"] = "フォームメールフィールド"; +$LANG["phrase_form_field"] = "フォームフィールド"; +$LANG["phrase_form_field_contents"] = "フォームフィールドの内容"; +$LANG["phrase_form_field_name"] = "フォームフィールドの名前"; +$LANG["phrase_form_field_placeholders"] = "フォームフィールドのプレースホルダ"; +$LANG["phrase_form_fields"] = "フォームフィールド"; +$LANG["phrase_form_info"] = "フォーム情報"; +$LANG["phrase_form_info_2"] = "2。フォーム情報"; +$LANG["phrase_form_list"] = "フォームのリスト"; +$LANG["phrase_form_name"] = "フォーム名"; +$LANG["phrase_form_page"] = "フォームページ"; +$LANG["phrase_form_placeholders"] = "フォームのプレースホルダ"; +$LANG["phrase_form_submission"] = "フォームの提出"; +$LANG["phrase_form_submissions"] = "フォームの提出"; +$LANG["phrase_form_type"] = "フォームの種類"; +$LANG["phrase_form_url"] = "フォームのURL"; +$LANG["phrase_form_urls"] = "フォームのURL"; +$LANG["phrase_forms_assigned_to_any_account"] = "任意のアカウントに割り当てられているフォーム"; +$LANG["phrase_forms_page_default_message"] = "フォームのページのデフォルトのメッセージ"; +$LANG["phrase_ft_installation"] = "フォームツールのインストールスクリプト"; +$LANG["phrase_full_width"] = "フル幅"; +$LANG["phrase_getting_started"] = "始まったばかり"; +$LANG["phrase_global_placeholders"] = "グローバルプレースホルダ"; +$LANG["phrase_group_name"] = "グループ名"; +$LANG["phrase_group_options_q"] = "グループのオプション?"; +$LANG["phrase_group_rows"] = "行をグループ化"; +$LANG["phrase_have_fun"] = "お楽しみに!"; +$LANG["phrase_highlight_colour"] = "ハイライトカラー"; +$LANG["phrase_html_email"] = "HTMLの電子メール"; +$LANG["phrase_html_template"] = "HTMLテンプレート"; +$LANG["phrase_images_media"] = "画像/メディア"; +$LANG["phrase_import_option_list_rightarrow"] = "インポートオプションのリスト»"; +$LANG["phrase_input_length"] = "入力の長さ"; +$LANG["phrase_installation_help"] = "インストールに関するヘルプ"; +$LANG["phrase_internal_form"] = "内部フォーム"; +$LANG["phrase_ip_address"] = "IPアドレス"; +$LANG["phrase_is_multi_page_form_q"] = "これは、マルチページフォームです?"; +$LANG["phrase_label_response_placeholders"] = "ラベル/レスポンスプレースホルダ"; +$LANG["phrase_large_300px"] = "大(300ピクセル)"; +$LANG["phrase_large_400px"] = "大(400ピクセル)"; +$LANG["phrase_last_7_days"] = "最後の7日間"; +$LANG["phrase_last_logged_in"] = "で最後にログオン"; +$LANG["phrase_last_modified"] = "最終変更日"; +$LANG["phrase_last_modified_date"] = "最終更新日"; +$LANG["phrase_last_name"] = "姓"; +$LANG["phrase_letters_only"] = "文字のみ"; +$LANG["phrase_light_brown"] = "ライトブラウン"; +$LANG["phrase_limit_email_content"] = "ビュー内のフィールドに制限する電子メールの内容"; +$LANG["phrase_loading_ellipsis"] = "読み込み中..."; +$LANG["phrase_log_in"] = "ログイン"; +$LANG["phrase_login_as_user"] = "このユーザーとしてログインします。"; +$LANG["phrase_login_info"] = "ログイン情報"; +$LANG["phrase_login_page"] = "ログインページ"; +$LANG["phrase_login_panel_c"] = "ログインパネル:"; +$LANG["phrase_login_panel_leftarrows"] = "«ログインパネル"; +$LANG["phrase_login_password"] = "ログインパスワード"; +$LANG["phrase_login_username"] = "ログインユーザ名"; +$LANG["phrase_logo_link_url"] = "ロゴのリンク先URL"; +$LANG["phrase_logout_url"] = "ログアウトURL"; +$LANG["phrase_main_nav"] = "主な純資産"; +$LANG["phrase_main_settings"] = "[メイン設定]"; +$LANG["phrase_manage_client"] = "管理クライアント"; +$LANG["phrase_manage_client_omit_list"] = "管理クライアントがリストを省略"; +$LANG["phrase_max_file_size"] = "最大ファイルサイズ"; +$LANG["phrase_max_length"] = "最大長さ"; +$LANG["phrase_max_length_words_chars"] = "- 最大長(ワード/文字)"; +$LANG["phrase_may_add_submissions"] = "サブミッションを追加することがあります"; +$LANG["phrase_may_copy_submissions"] = "投稿をコピーできます"; +$LANG["phrase_may_delete_submissions"] = "提出物を削除する場合があります"; +$LANG["phrase_medium_150px"] = "培地(150px)"; +$LANG["phrase_medium_200px"] = "培地(200pxの)"; +$LANG["phrase_menu_name"] = "メニュー名"; +$LANG["phrase_menu_type"] = "メニュータイプ"; +$LANG["phrase_min_password_length"] = "最小パスワード長"; +$LANG["phrase_module_description"] = "モジュールの説明"; +$LANG["phrase_module_info"] = "モジュール情報"; +$LANG["phrase_module_nav"] = "モジュール純資産"; +$LANG["phrase_month_to_date"] = "日付の月"; +$LANG["phrase_multi_select"] = "複数選択"; +$LANG["phrase_multi_select_dropdown"] = "複数選択]ドロップダウン"; +$LANG["phrase_multiple_fields_found"] = "複数のフィールドが見つかりました!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "名前/姓"; +$LANG["phrase_new_blank_email"] = "新しい空白の電子メール"; +$LANG["phrase_new_blank_option_list"] = "新しい空白のオプション一覧"; +$LANG["phrase_new_blank_view"] = "新しい空白のプロフィール"; +$LANG["phrase_new_ft_installation"] = "フォームの新規作成ツールのインストール"; +$LANG["phrase_new_option_list"] = "新しいオプションのリスト"; +$LANG["phrase_new_password"] = "新しいパスワード"; +$LANG["phrase_new_password_reenter"] = "新しいパスワード(再入力)してください。"; +$LANG["phrase_new_view"] = "新しいプロフィール"; +$LANG["phrase_new_view_all_fields"] = "新しいビュー - すべてのフィールド"; +$LANG["phrase_next_client"] = "次のクライアント»"; +$LANG["phrase_next_field"] = "次のフィールド»"; +$LANG["phrase_next_form"] = "次のフォーム»"; +$LANG["phrase_next_view"] = "次を見る»"; +$LANG["phrase_no_clients"] = "クライアントがない"; +$LANG["phrase_no_limit"] = "いいえ制限なし"; +$LANG["phrase_no_offset"] = "オフセットなし"; +$LANG["phrase_no_option_lists_available"] = "利用可能なオプションを示しますない。"; +$LANG["phrase_no_views"] = "いいえ再生回数"; +$LANG["phrase_no_views_with_filters_p"] = "(定義されたフィルタを使用しない回数)"; +$LANG["phrase_none_not_recommended"] = "なし(推奨されません)"; +$LANG["phrase_not_assigned_to_option_list"] = "このフィールドは、オプションのリストに割り当てられていない。"; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "しない均等"; +$LANG["phrase_not_found"] = "が見つかりません!"; +$LANG["phrase_not_like"] = "ないよう"; +$LANG["phrase_not_visible_to_client"] = "(クライアント)が表示されない"; +$LANG["phrase_num_clients_per_page"] = "1ページあたりテンキーのクライアント"; +$LANG["phrase_num_emails_per_page"] = "テンキーのメール1ページあたり"; +$LANG["phrase_num_fields"] = "フィールドの数"; +$LANG["phrase_num_forms_per_page"] = "テンキーのフォームページあたり"; +$LANG["phrase_num_menus_per_page"] = "テンキーのメニューの1ページあたり"; +$LANG["phrase_num_modules_per_page"] = "テンキーのモジュールを1ページあたり"; +$LANG["phrase_num_option_lists_per_page"] = "ページ毎のnumオプションリスト"; +$LANG["phrase_num_options"] = "num個のオプション"; +$LANG["phrase_num_rows"] = "num個の行"; +$LANG["phrase_numbers_only"] = "数字のみ"; +$LANG["phrase_often_localhost"] = "(多くの場合""はlocalhost)"; +$LANG["phrase_on_form_submission"] = "フォームの送信で"; +$LANG["phrase_one_char_number"] = "少なくとも1つの文字が数字(0-9)は、"; +$LANG["phrase_one_char_upper"] = "少なくとも1つの文字が大文字である"; +$LANG["phrase_one_special_char"] = "{\$chars} の少なくとも一つ"; +$LANG["phrase_only_specific_clients_have_access"] = "(のみ、特定のクライアント)にアクセスして"; +$LANG["phrase_open_form_in_dialog"] = "ダイアログウィンドウでフォームを開きます"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "新しいタブ/ウィンドウでこのフォームを開きます"; +$LANG["phrase_option_list"] = "オプションのリスト"; +$LANG["phrase_option_list_name"] = "オプションのリストの名前"; +$LANG["phrase_option_list_or_contents"] = "オプションの一覧/目次"; +$LANG["phrase_option_lists"] = "オプションリスト"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "ページタイトル"; +$LANG["phrase_pass_on"] = "パスで"; +$LANG["phrase_password_min"] = "これは、/ bの>文字以上にある {\$length} する必要があります。"; +$LANG["phrase_password_one_number"] = "これは、少なくとも1つの番号(0-9)を含む必要があります。"; +$LANG["phrase_password_one_uppercase"] = "これは、少なくとも1つの大文字を含める必要があります。"; +$LANG["phrase_password_requirements_c"] = "パスワードの要件:"; +$LANG["phrase_password_reset"] = "パスワードのリセット"; +$LANG["phrase_password_special_char"] = "これは、少なくとも次のいずれかの文字:<b>ダウンロードは {\$chars} と含まれている必要があります"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "アクセス権/その他の設定"; +$LANG["phrase_permitted_file_types"] = "許可されたファイルの種類"; +$LANG["phrase_phone_number"] = "電話番号"; +$LANG["phrase_phone_number_format"] = "電話番号のフォーマット"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.iniをアップロードするファイルサイズ許容上限:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHPバージョン"; +$LANG["phrase_please_confirm"] = "確認してください"; +$LANG["phrase_please_enter_license_key"] = "ライセンスキーを入力してください"; +$LANG["phrase_please_select"] = "選択してください"; +$LANG["phrase_please_select_form"] = "してくださいフォームを選択します"; +$LANG["phrase_prev_client"] = "«前のクライアント"; +$LANG["phrase_prev_form"] = "«前のフォーム"; +$LANG["phrase_prevent_password_reuse"] = "#最後のパスワードの防止の再利用"; +$LANG["phrase_previous_field"] = "«前のフィールド"; +$LANG["phrase_previous_page"] = "前のページへ"; +$LANG["phrase_previous_view"] = "«前のビュー"; +$LANG["phrase_program_name"] = "プログラム名"; +$LANG["phrase_public_form_omit_list"] = "公共のフォームを除外リスト"; +$LANG["phrase_public_view_omit_list"] = "公開プロフィールを省略一覧"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "次のクエリに問題がありました。"; +$LANG["phrase_radio_buttons"] = "ラジオボタン"; +$LANG["phrase_random_form_submission"] = "ランダムなフォームを送信"; +$LANG["phrase_re_enter_password"] = "パスワードの再入力"; +$LANG["phrase_recipient_type"] = "受信者の種類"; +$LANG["phrase_redirect_url"] = "リダイレクト先のURL"; +$LANG["phrase_refresh_list"] = "Refresh List]を"; +$LANG["phrase_refresh_module_list"] = "リフレッシュモジュールリスト"; +$LANG["phrase_refresh_page"] = "リフレッシュページ"; +$LANG["phrase_refresh_theme_list"] = "リフレッシュのテーマ一覧"; +$LANG["phrase_register_new_email"] = "レジスタの新しい電子メール"; +$LANG["phrase_remaining_characters"] = "残りの文字"; +$LANG["phrase_remaining_words"] = "残りの単語"; +$LANG["phrase_remove_tabs"] = "と削除]タブ"; +$LANG["phrase_required_password_chars"] = "必要なパスワードの文字"; +$LANG["phrase_resend_test_submission"] = "再送テスト発表"; +$LANG["phrase_return_form_list"] = "フォームに戻り一覧"; +$LANG["phrase_row_selected"] = "{\$num_rows} 行を選択する"; +$LANG["phrase_rows_selected"] = "{\$num_rows} の行を選択"; +$LANG["phrase_sample_data"] = "サンプルデータ"; +$LANG["phrase_save_changes"] = "変更の保存"; +$LANG["phrase_search_keyword"] = "検索キーワード"; +$LANG["phrase_security_settings"] = "セキュリティの設定"; +$LANG["phrase_select_all"] = "すべて選択"; +$LANG["phrase_select_all_X_results"] = "[すべて選択] {\$numresults} 件中"; +$LANG["phrase_select_all_on_page"] = "[すべて選択]ページで"; +$LANG["phrase_select_date"] = "日付を選択します。"; +$LANG["phrase_select_field"] = "フィールドを選択します。"; +$LANG["phrase_select_swatch"] = "色見本を選択する"; +$LANG["phrase_selected_clients"] = "選択したクライアント"; +$LANG["phrase_selected_views"] = "選択された回数"; +$LANG["phrase_send_email"] = "メールを送信する"; +$LANG["phrase_send_test_email"] = "テストメールを送信"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "セッションのタイムアウト"; +$LANG["phrase_setting_value"] = "値を設定する"; +$LANG["phrase_setup_options"] = "セットアップオプション"; +$LANG["phrase_show_all"] = "すべて表示"; +$LANG["phrase_show_form"] = "フォームを表示する"; +$LANG["phrase_size_large"] = "大規模な(TEXT)は"; +$LANG["phrase_size_medium"] = "媒体("= 256文字)"; +$LANG["phrase_size_small"] = "小("= 20文字)"; +$LANG["phrase_size_tiny"] = "小型("= 5文字)"; +$LANG["phrase_size_very_large"] = "非常に大(はMEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "ナビゲーションフィールド"; +$LANG["phrase_skip_step"] = "スキップステップ"; +$LANG["phrase_small_100px"] = "小(100pxに)"; +$LANG["phrase_small_80px"] = "小(80px)"; +$LANG["phrase_smart_fill"] = "スマートフィル"; +$LANG["phrase_smart_fill_fields_from_c"] = "よりスマートな入力フィールド:"; +$LANG["phrase_smart_fill_user_documentation"] = "スマートフィルのユーザードキュメントは、»"; +$LANG["phrase_sort_as"] = "ソートとして"; +$LANG["phrase_special_fields"] = "特殊フィールド"; +$LANG["phrase_standard_fields"] = "標準フィールド"; +$LANG["phrase_standard_filters"] = "標準フィルタ»"; +$LANG["phrase_step_1"] = "ステップ1"; +$LANG["phrase_step_2"] = "ステップ2"; +$LANG["phrase_step_3"] = "ステップ3"; +$LANG["phrase_step_4"] = "ステップ4"; +$LANG["phrase_step_5"] = "ステップ5"; +$LANG["phrase_step_6"] = "ステップ6"; +$LANG["phrase_strip_tags_in_submissions"] = "フォームの送信にあるストリップタグ"; +$LANG["phrase_subject_line"] = "件名行"; +$LANG["phrase_submission_date"] = "発表日"; +$LANG["phrase_submission_id"] = "発表番号"; +$LANG["phrase_submission_made"] = "発表した:{\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "発表のタイプ"; +$LANG["phrase_submissions_per_page"] = "ページあたりの提出"; +$LANG["phrase_system_check"] = "システムチェック"; +$LANG["phrase_system_fields_no_validation"] = "あなたは、システムのフィールドに検証を追加することはできません。"; +$LANG["phrase_system_time_offset"] = "システム時刻のオフセット"; +$LANG["phrase_tab_label"] = "タブのラベル"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "テストフォルダのアクセス許可"; +$LANG["phrase_test_submission"] = "テスト発表"; +$LANG["phrase_test_submission_3"] = "3。テスト発表"; +$LANG["phrase_test_submission_received"] = "テスト発表受信"; +$LANG["phrase_text_and_html"] = "テキストとHTMLの"; +$LANG["phrase_text_email"] = "テキストメール"; +$LANG["phrase_text_template"] = "テキストテンプレート"; +$LANG["phrase_the_previous_month"] = "前の月"; +$LANG["phrase_theme_description"] = "テーマの説明"; +$LANG["phrase_theme_info"] = "テーマ情報"; +$LANG["phrase_tiny_30px"] = "(30pxの)小さな"; +$LANG["phrase_tiny_50px"] = "タイニー(50px)"; +$LANG["phrase_total_results_c"] = "検索結果の合計:"; +$LANG["phrase_type_c"] = "エラーの種類:"; +$LANG["phrase_unselect_all"] = "選択解除全て"; +$LANG["phrase_update_accounts"] = "更新アカウント"; +$LANG["phrase_update_email_template"] = "更新メールテンプレート"; +$LANG["phrase_update_field"] = "フィールドの更新"; +$LANG["phrase_update_order"] = "アップデート順"; +$LANG["phrase_update_view"] = "更新を見る"; +$LANG["phrase_upload_file"] = "ファイルのアップロード"; +$LANG["phrase_upload_files"] = "ファイルをアップロード"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "アップロードするフォルダのパス"; +$LANG["phrase_upload_folder_url"] = "アップロードするフォルダのURL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "デフォルト値を使用しますか?"; +$LANG["phrase_used_by_num_form_fields"] = "#フォームフィールドで使用される"; +$LANG["phrase_uses_swatches"] = "スウォッチを使用しています"; +$LANG["phrase_valid_email"] = "有効なメールアドレス"; +$LANG["phrase_validation_error"] = "検証エラー"; +$LANG["phrase_validation_rule"] = "検証ルール"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "ビューグループ"; +$LANG["phrase_view_id"] = "ビューID"; +$LANG["phrase_view_name"] = "ビューの名前"; +$LANG["phrase_view_placeholders"] = "プレースホルダを表示"; +$LANG["phrase_view_submissions"] = "プロフィール提出"; +$LANG["phrase_view_uploaded_files"] = "表示するファイルをアップロード"; +$LANG["phrase_viewing_range"] = "[表示{\$startnum} {\$endnum}する]"; +$LANG["phrase_when_sent"] = "送信時には"; +$LANG["phrase_when_submission_is_deleted"] = "いつ提出が削除されます"; +$LANG["phrase_when_submission_is_edited"] = "いつ提出が編集される"; +$LANG["phrase_who_can_access"] = "誰がアクセスできますか?"; +$LANG["phrase_word_limit_p"] = "字数制限。"; +$LANG["phrase_year_to_date"] = "日付の年"; +$LANG["phrase_yes_for_all_views"] = "はい、すべての再生のため"; +$LANG["phrase_yes_for_specific_views"] = "はい、特定の回数の"; +$LANG["phrase_your_account"] = "お客様のアカウント"; +$LANG["phrase_your_email"] = "あなたのEメール"; +$LANG["phrase_your_email_address"] = "あなたのメールアドレス"; +$LANG["processing_form_disabled"] = "申し訳ありませんが、このフォームを無効にされています。"; +$LANG["processing_form_incomplete"] = "申し訳ありませんが、このフォームは表示されません完全にフォームツールの中から設定されています。この問題の最も可能性が高い原因は、あなたの"form_tools_initialize_form"非表示のフォームフィールドが削除がされている""プロセスフォームの追加]のすべてのステップを完了していない。

    ログインしてからフォームの構成を確認します。"; +$LANG["processing_init_complete"] = "ありがとうございました!テストの提出に成功を介して配置されている。してくださいフォームツール管理パネルをクリックしてフォームの設定が終了する3ページフォームのステップの追加の下部にある"Refresh"ボタンに戻ります。"; +$LANG["processing_invalid_form_id"] = "申し訳ありませんが、これは有効なフォームのIDではないようです。"; +$LANG["processing_no_form_id"] = "process.phpフォームに必要な処理のためのID。ことを確認し、フォーム名"は、フォームに沿って通過のform_tools_form_id"で非表示のフィールドIDが含まれます。"; +$LANG["processing_no_form_url_for_recaptcha"] = "フォームツールはときに、正しくは、CAPTCHAを入力しないとリダイレクトするかを決定することはできません。してください。隠されたフィールドの名前form_tools_form_urlフォームのURLを含んで渡します。"; +$LANG["processing_no_post_vars"] = "process.php任意のデータを受信していません。注:ブラウザに直接読み込むことができない、このスクリプトです。
    確認してくださいフォームのPOSTを介して送信してください。"; +$LANG["processing_no_redirect_url"] = "送信が正常に処理されたが、このフォームにリダイレクトするURLを指定していない!フォームツールのUIでフォームを編集して、リダイレクト先のURLを追加します。"; +$LANG["special_language"] = "Japanese"; +$LANG["special_language_locale"] = "Japanese"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "すべての新しいクライアントアカウントの設定とアクセス許可を以下の定義が作成されます。特定のクライアントでは、クライアントのアカウントを編集して[設定]タブを参照して設定を上書きする。"; +$LANG["text_add_form_choose_integration_method"] = "[フォームツールを使用してフォームを統合するために使用する方法を選択します。"; +$LANG["text_add_form_code_submission_benefits"] = "この方式では、 フォームツールAPIメインフォームの[ツール]スクリプトに含まれているが、。 APIは、可能な限り単純にフォームツールを使用してフォームを統合するための仕事を作っておくと便利な機能が多数用意されています。あなたがAPIを使用するときにフォームが送信されることがありますどのように制限はありません。あなたがページで一度、またはページ内のコンテンツを提出することができます。あなたは、CAPTCHA画像を独自のカスタムサーバー側の検証を追加することができます。あなたは今の情報を提出するなどの選択が唯一のフォームツールUIの提出を表示するためにそれを伝えることができます後日(参照してくださいファイナライズ提出の APIのヘルプドキュメントのセクションを)。"; +$LANG["text_add_form_code_submission_drawbacks"] = "PHP経由でフォームデータを送信するためには、あなたのフォームは、このフォームツールのインストールと同じサイトに配置する必要があります。第二に、非技術と初心者フォームツールユーザーのために、このメソッドは最初は少し威圧することができます。しかし、あなたのシングルおよびマルチページのフォームを(これらは後のステップにリンクされている)の統合の2つの簡単なチュートリアルを含めて、あなたを手助けするドキュメントがたっぷりです。"; +$LANG["text_add_form_direct_submission_benefits"] = "このフォームのツールには、フォームを送信する最も簡単な方法です。これはPHPの知識は一切必要としませんし、フォームは、非常に小さな変更が必要です。それは小さなフォームの場所だけをデータベースにして情報を送信するには、"感謝の意を"のページにユーザーをリダイレクトする素晴らしいことだ。"; +$LANG["text_add_form_direct_submission_drawbacks"] = "この提出方法は非常に使用して、シンプルだが、より複雑なフォームの多くのコントロールを提供していません。マルチページのフォームまたはそのサーバー側の検証を必要とするフォームより、2番目の方法に適しています:フォームツールAPIを介して提出した。"; +$LANG["text_add_form_field_types1"] = "ほぼ完了!このページは、すべてのフォームフィールドを検索し、そのフィールドタイプを決定しようとします。開始するには右上のスマート塗りつぶし]ボタンをクリック。あなたの注意がに表示される必要のある問題コラム"アクションは、が必要" - あなたはすべてのアクションが解決されているときに続行することになります。"; +$LANG["text_add_form_field_types2"] = "フォームはHTMLにない場合は、続行するスキップのステップのボタンをクリックします。これはすべて、後で設定することができます。"; +$LANG["text_add_form_field_types3"] = "このリロードしてフォームの内容(複数可)。注:これはあなたがこのページで行った変更が上書きされます。"; +$LANG["text_add_form_field_types4"] = "問題が発生した場合には、このステップをスキップしてここをクリックしてください。すべての未解決のフィールドはデフォルト値を使用するように設定されています。後でこれらのフィールドをカスタマイズすることができます。"; +$LANG["text_add_form_field_types_manual_upload"] = "あなたのフィールドを埋めるスマートができなくなっている場合は、別の解決策を試してみてください:下のフィールドにフォームのコピーをアップロードする。"; +$LANG["text_add_form_field_types_manual_upload2"] = "注:生のPHPページ(または他のサーバーサイドコード)をアップロードしない -単にHTMLバージョンをアップロード。これを取得するには、Webブラウザからページを表示して保存します。"; +$LANG["text_add_form_field_types_multiple_fields_found"] = "指定したフォームのページで見つけることができなかった複数のフィールドがあった。これは、通常、以下のいずれかが原因で発生します。"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "あなたは間違ってマルチページフォームのフォームのURLのいずれかまたは複数を入力する。"; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "フォームの1つ以上のページはパスワード保護されており、スクリプトがページにアクセスすることができませんでした。"; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "あなたは間違ってフォームのURLを入力する。"; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "ここをクリックして設定を確認するためにフォーム情報のページに戻ります。"; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "あなたがテスト申請を行った後に、フォーム(s)を変更"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "ここをクリックして別のテストの提出にあてないように。"; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "フォームは、パスワードで保護され、スクリプトがページにアクセスすることができませんでした。"; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "このブラウザの別タブ/ウィンドウで、フィールドを再度見つけることを試みるために、以下の[更新]ページのボタンをクリックしてフォームにログインします。"; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "上記のソリューションの作業なしなら、あなたも試してみてください手動で処理するために、フォームをアップロードする 。"; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "指定したフォームのページで見つけることができなかった複数のフィールドがあった。これは、通常、これらのいずれかが原因で発生します。"; +$LANG["text_add_form_help_link"] = "これらの手順中にトラブルに遭遇した場合、読み出すてみてくださいユーザーマニュアルを 。"; +$LANG["text_add_form_step_1_text_1"] = "次のページ設定フォームツールするための手順を介して、フォームの送信を格納するために導く。続行する前に、チェックしてくださいは:"; +$LANG["text_add_form_step_1_text_2"] = "フォームが既に作成されており、それはURL(localhostを介してアクセスすることが良いです)"; +$LANG["text_add_form_step_1_text_3"] = "あなたのフォームを編集することができます"; +$LANG["text_add_form_step_2_para_2"] = "お好みのエディタでフォームを開き、次のように、2つの隠しフィールドを含むフォームタグを変更します。"; +$LANG["text_add_form_step_2_para_3"] = "次に、Webブラウザでフォームを開きますすべてのフィールドに記入して提出します。を提出したら、通知メッセージを参照してください。このメッセージが、このページをクリックして下の[更新]ボタンに戻りますが表示されます。このプロセスが完了したら、下のボタンを続行すると、次の手順に撮影が表示されます。"; +$LANG["text_add_form_step_2_para_6"] = "フォームの提出には、次の値が含まれます。彼らは、直接PHPを介して設定される可能性がありますまたはフォーム自体を介して一緒に渡されます。以下にそれぞれの例です。 (\$変数名)はハッシュのすべてのフォームの提出(情報の配列または連想配列) - これは、通常は、(\$ postvar)または(\$ sessionvar)変数ですが、それがありますが、カスタム建てた。"; +$LANG["text_add_form_step_2_text_2"] = "ここに"ありがとう"ページのURLを入力してください。もしフォームが送信された後に人々がにダイレクトさせる場所です。"; +$LANG["text_add_form_step_3_para_1"] = "このページでは、フォーム送信のすべてのフィールドを示します。各フィールドを調べ、すべてを削除する場合すべての提出を保存する必要はありません。場合は事故では、有効なフィールドを削除するか、フォームには、前のページに戻るには、新しいテスト提出を送るに保存された情報を変更したいと思います。"; +$LANG["text_add_form_step_3_para_2"] = "注:場合は、チェックボックスまたは複数を介して、フィールド名は[]文字(詳細については、 ユーザーマニュアルを参照してくださいで終わっていることを確認、選択ボックスは、複数の値を送信している)。"; +$LANG["text_add_form_step_3_text_1"] = "楽しみが始めるところです!この時点で、フォームのツールは、フォームからのテストの提出を待っています。それは、データベースに格納すべきかの情報を知るためにこのフォーム送信を使用します。"; +$LANG["text_add_form_step_3_text_2"] = "フォームツールにフォームを指摘することによって"; +$LANG["text_add_form_step_3_text_3"] = "フォームツールのAPIを使用して"; +$LANG["text_add_form_step_3_text_4"] = "フォームの統合を支援するために、次のいずれかのチュートリアルを読むことをお勧め:"; +$LANG["text_add_form_step_3_text_5"] = "彼らはどのようにテスト提出の準備のため、フォームを設定し、説明し、その助けになることがあります他の情報が含まれます。 PHPの必要となるの行です:"; +$LANG["text_add_form_step_3_text_6"] = "これは実際にフォームツールに送信されるデータを確認します。ときに、テスト送信ボタンをクリックし、以下を介して配置している。"; +$LANG["text_add_form_step_3_text_7"] = "には、ページ先立ち、最後の""のページでは、\$ PARAMSを変数には、次のパラメータを追加することを確認することを感謝する:"; +$LANG["text_add_form_step_5_para_1"] = "このデータベースは、このフォームのために使用するために活性化されているが設定されています。あなたのフォームprocess.phpを指し示すことによって、フォームへお戻りください、次の隠しフィールドを削除して提出した:"; +$LANG["text_add_form_step_5_para_2"] = "次にアクセスしてください"ページの"セッションを空にするあなたに感謝します。これが終わったら、すべての新しいフォームの送信処理され、フォームツールが格納されます。つまたは2つの情報を確認するための提出を作ってみましょうすべてのアップロードが正常です。"; +$LANG["text_add_form_step_5_para_3"] = "場合は罰金を願い、余分なフォームフィールドのフィールド、またはフォームフィールドの種類のカスタマイズを追加する場合、任意の時点であなたのフォームを編集することがあります自動メール送信などのオプションについては、フォームを調整。"; +$LANG["text_add_form_step_5_para_4"] = "以来、お客様のフォームをアップロードするファイルフィールドが含まれて設定するためのファイルをアップロードするフォルダを指定し、ファイル、および許可される各フィールドが必要になります。このフォームを編集ページの[ 表示 ] タブで発見することができます。"; +$LANG["text_add_form_step_5_para_5"] = "場合は、提出は、APIを経由して、フォームの最初のページにft_api_init_form_pageの行を変更されました:"; +$LANG["text_add_submission_button"] = "追加提出]ボタンは、を持っているビューが表示されます"はい"に設定されて"提出物が追加される"オプション。"; +$LANG["text_admin_email_placeholder_info"] = "これは、フォームツール、管理者アカウントの設定で定義された電子メールアドレスです。これだけなので、場合は、HTMLのリンクとして使用するメールアドレスを出力すると、<a>タグに、次のようにラップする必要があります:
    <a href="mailto:{\$ADMINEMAIL}">(\$ ADMINEMAIL)"/""; +$LANG["text_also_default_login_page_theme"] = "(また、デフォルトのログインページのテーマ)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "最初に、フォームのタイプを選択してください。"; +$LANG["text_client_form_page"] = "このページのすべてのフォームとビューは、このクライアントに割り当てられて表示されます。ヒント:ためにそれらは、フォームの提出を見て、彼らが少なくとも1つのビューに割り当てることができます。"; +$LANG["text_client_map_filters_desc1"] = "クライアントのマップフィルタを使用し、このビューでフォームフィールド内のクライアントアカウントの値に値をマッピングすることによって表示される投稿を制限できます。"; +$LANG["text_client_no_forms"] = "現在のフォームを見るご利用している。"; +$LANG["text_client_welcome"] = "ようこそ!このプログラムは、店舗すべての情報をあなたのウェブサイトの訪問者に提出した。特定のフォーム 、VIEWのリンク、またはその他のオプションについては、左端のナビゲーションメニューを参照してクリックするだけでの提出を表示する。"; +$LANG["text_config_file_created"] = "あなたのconfig.phpファイルが作成されています。"; +$LANG["text_config_file_not_created"] = "私たちはあなたのconfig.phpファイルを作成できませんでした。ファイルを手動で作成する必要があります。"; +$LANG["text_config_file_not_created_instructions"] = "コピーして、以下のセクションからファイルへのconfig.phpと呼ばれる内容を貼り付けると、FTP経由でフォームツールにアップロード/グローバルフォルダ(フォルダには、また、いくつかの他のファイルとディレクトリが含まれ、1つのlibrary.phpを)と呼ばれるファイルです。"; +$LANG["text_confirm_delete_form"] = "はい、私はこのフォームを削除する"; +$LANG["text_create_admin_account"] = "今は管理者のアカウントを作成するつもりだ。このようなフォームを追加し、クライアントアカウントの作成、フォームツールのすべての側面を管理するために使用されます。"; +$LANG["text_create_new_client_account"] = "下記のフォームを使用して、新しいクライアントアカウントを作成します。すべてのフィールドが必要です。"; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "オプションの書式設定用のPHP {\$datefunctionlink} 関数を参照してください"; +$LANG["text_default_file_settings_page"] = "このページでは、フォームツールのインストール用のファイルをアップロードの設定を定義します。これらの規則はすべてのファイルをフォームツールを介してアップロードする場合を除き、明示的に個々のフォームフィールドのオーバーライドを適用します。注:場合は、アップロードするフォルダの後にファイルをアップロードされている変更は、自動的に新しいフォルダに移動されます。"; +$LANG["text_default_theme_cache_folder_not_writable"] = "続行する前には、/デフォルトでは/キャッシュフォルダを/テーマを更新するために完全な読み取りと書き込みのアクセス許可を許可する必要があります。一度この、このメッセージが表示されなくなります行われ、このスクリプトをインストールすることができます。"; +$LANG["text_default_values_in_view"] = "このセクションは省略可​​能です。このビューで作成されたすべての提出物は、ここで指定したデフォルト値が含まれます。"; +$LANG["text_delete_all_forms"] = "私は、このフォームを使ってアップロードされたすべてのファイルを削除する"; +$LANG["text_delete_form_warning"] = "あなたは、このフォームを削除してもよろしいですか?この操作を元に戻すことはできません。すべてのデータが永久に失われてしまいます!"; +$LANG["text_edit_admin_menu_page"] = "下記のメニューを編集することがあります。を確保するためには、常にすべての機能をフォームツールは、以下のページが必要です:フォーム、クライアント内で利用できるアクセス権がユーザーアカウント、モジュール、[設定]および[Logout。"; +$LANG["text_edit_client_menu_page"] = "このセクションでは、ユーザーごとに、左側のナビゲーションの列をカスタマイズすることができます。あなたが作成することが、多くのクライアントのメニューを希望どおりに割り当てる任意のアカウントのいずれかに。デフォルトでは、2つのメニュー:1あなたのために、管理者、および1つのすべてのクライアントのアカウントです。管理者アカウントが変更される可能性があります削除されません。"; +$LANG["text_edit_tab_summary"] = "あなたがタブにこのビューのフィールドをグループ化したい場合は、下のタブ名を入力してください。設定が完了したら後は、各フィールドのグループのための適切なタブを選択して[フィールド]タブ 。"; +$LANG["text_edit_view_list_page"] = "フィールドは、提出のリストページの列、およびそれらのフィールドのいくつかの追加の設定として表示され、このタブコントロール。注:我々はあなたがこれ以上のビューの中で最も重要なフィールドの5よりもやを追加しないことをお勧めします。"; +$LANG["text_email_settings_intro"] = "このページを識別することができますこれに対応する名前のフォームフィールドに格納する電子メールおよび。一度ここに定義すると、あなたの電子メールでそれらを使用することができます受信者としてテンプレートです。このセクションでは完全に任意です。"; +$LANG["text_email_tab_summary"] = "このセクションでは、たびに、フォームが送信され送信されるメールの任意の番号を構築することができますし、他のトリガ。"; +$LANG["text_email_template_tab"] = "このセクションでは、コンテンツを電子メールで何が表示さを決定することができます。場合は、テキストのみ、または電子メールとしてメールを送信するだけ、そのセクションの値を入力してください。場合の両方の値を入力すると、Eメールの両方の形式で送信されます。"; +$LANG["text_email_template_text_1"] = "が提出フォーム、{\$FORMNAME} を介して行われています。"; +$LANG["text_email_template_text_1_c"] = "が提出フォームを介して行われている、{\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "あなたの提出をありがとう!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "フィールドが検証に失敗した場合に表示するエラーメッセージ"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "外部形態は、すでにあなたのウェブサイト上、またはどこかのWeb上に存在する形態である。あなたはフォームツールと統合したいのですが、独自のフォームを持っている場合、このオプションを選択します。"; +$LANG["text_fields_tab_summary"] = "このページは、フォームフィールドのすべてが一覧表示されます。提出をブラウズするとき、それらの表示方法を制御するには、参照してください[ビュー]タブを 。このページ上のフィールドを削除すると、すべての応募作品の中からそれを削除しますので、ご注意ください!"; +$LANG["text_file_extension_info"] = "拡張子をカンマで区切られたファイルを入力します(で、gif)PNG形式のJPG例えば、または空白の任意のファイルタイプを許可するままにします。"; +$LANG["text_file_field_placeholders_info"] = "ファイルのフィールドを2つの特別なプレースホルダ:FILEURLおよびFILENAMEをしている。 FILEURLファイルへの完全なURLをするので、直接それをお使いのメールにリンクすることができます。FILENAMEを、単にファイルの名前です。"; +$LANG["text_filters_page"] = "のみ提出では、このビューに表示される以下の定義のルールを満たしています。"; +$LANG["text_filters_tips"] = "どのようにユーザマニュアルを参照して提出フィルタを使用するためのヒントについて。"; +$LANG["text_forgot_password"] = "問題ありません。すぐ下にユーザー名とパスワードでログイン情報を入力してファイルをあなたのメールアドレスに送信されます。場合は、\$では、サイト管理者 {\$site_admin_email}メールしてくださいあなたのユーザ名を忘れている。"; +$LANG["text_form_contains_file_fields"] = "このフォームは1つまたは複数のアップロードフィールドのファイルが含まれます:"; +$LANG["text_form_placeholder_info"] = "次のプレースホルダは関係なく、電子メールテンプレートが割り当てられているビューの、任意のメールテンプレートと言語のプレースホルダのフィールドで使用することができます。質問のプレースホルダは、特定のフォームの質問です。ANSWERのプレースホルダは、各質問への回答です。"; +$LANG["text_form_submission_date_placeholder"] = "提出が行われた日付。"; +$LANG["text_form_tools_form_url"] = "フォームの完全なURL。これは、外部フォームの値を持ちます。"; +$LANG["text_form_tools_login_url"] = "フォームツールのログインURLです。"; +$LANG["text_form_view_permission_info_admin"] = "注:このフォームは、現在管理者のアクセスのタイプを持っているので、クライアントのアカウントにはどれもこの図を参照することができなくなります。"; +$LANG["text_form_view_permission_info_private"] = "注:ここでパブリックとプライベートのオプションは、クライアントのそのサブセットに制限されるので、このフォームは現在プライベートアクセスのタイプを持っている。"; +$LANG["text_ft_installed"] = "おめでとう、フォームツールが正常にインストールされています!"; +$LANG["text_global_placeholder_info"] = "これらのプレースホルダは、任意のフォームテンプレートで使用されることがあります。"; +$LANG["text_group_name_explanation"] = "フィールドは、フォームの追加プロセスを介して、この値は事前に何のフィールドの表示テキストを記入の値を使用しました。それを変更するより良い内容の特徴を希望する場合があります。"; +$LANG["text_install_create_config_file"] = "ファイル内のサーバーおよびデータベースの設定のconfig.phpと呼ばれるフォームツール店、あなたの/世界で発見/フォルダを開きます。 "自動的にサーバー上のファイルを生成するファイルの作成"ボタンをクリックします。"; +$LANG["text_install_create_database_tables"] = "今は、フォームツールのデータベーステーブルを作成するつもりだ。この手順は、既に作成されているため、データベース自体が必要です。場合、これを行う方法がわからない、ご利用のホストプロバイダにお問い合わせください。"; +$LANG["text_install_db_tables_error_tip_1"] = ""不明なMySQLサーバのホスト"通常は、提供されたホスト名が正しくないことを意味します。おそらく、"localhost"を - これは"ローカル"のデータベースには、Webサーバー上で参照するための一般的な方法ですが、この設定をしてください。"; +$LANG["text_install_db_tables_error_tip_2"] = ""ローカルのMySQLサーバへのソケット"を介して接続することはできませんデータベースのホスト名フィールドの意味を再度間違っています。"; +$LANG["text_install_db_tables_error_tip_3"] = ""Accessユーザーのため拒否されました:"それはそちらにあなたのユーザ名/パスワードの組み合わせに問題があるということです。"; +$LANG["text_install_db_tables_error_tip_4"] = ""Accessのユーザーが拒否さ:...データベースに..."ただし、ユーザー名とパスワードが正しいこと指定されたパスワードは、そのアカウントでは、特定のデータベースに接続することができなかったということです。これは、いずれかのデータベース名、または間違っていますが、このユーザアカウントは、データベースに関連付けられていないことを意味することができます。"; +$LANG["text_install_email_content_text"] = "Googleのオンラインドキュメント(https://docs.formtools.org)やチュートリアル(https://docs.formtools.org/tutorials)をはじめ、弊社のWebサイトには多くのリソースが用意されています。 立ち往生したり、質問がある場合は、github(https://github.com/formtools/core/issues/)で質問してください。"; +$LANG["text_install_form_tools_server_not_supported"] = "申し訳ありませんが、フォームツールは、サーバ上で実行することができなくなります。 こちらをクリックしてください最小要件のために。"; +$LANG["text_install_system_check"] = "このページはあなたのシステムは、フォームツールを実行することができるのを確保するためにいくつかのテストを実行します。"; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "ではない別の場所であなたのサイトに - 内部のフォームは、フォームのツール内にのみ存在します。フォームツールのユーザーアカウントのみがフォームにアクセスできるようになります。既存のフォームを持っていない場合は、このオプションを選択します。"; +$LANG["text_internal_form_intro"] = "新しい内部フォームを作成するには、以下のフォームを使用してください。フォームフィールドの数と内容を含むすべての設定は、変更し、後で設定することができます。"; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "ためにログインして、フォームツールを使用する場合、ブラウザでJavaScriptが有効になっている必要があります。お使いのブラウザでは現在、クリックして更新することができます。"; +$LANG["text_last_modified_date_explanation_c"] = "更新時間は、この提出されました。新しい投稿については、これと同じです:"; +$LANG["text_limit_email_content_desc"] = "このオプションは、Smartyのループで生成されたHTMLとテキストの内容で動作します。"; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(1つまたは複数のフィルタが定義された)再生リスト"; +$LANG["text_log_in_to_ft"] = "でフォームツールにログインする"; +$LANG["text_login"] = "どうぞ下記の(\$ program_nameの)の管理者パネルへのアクセスにログインします。もしあなたのパスワードは、 ここをクリックし忘れている。"; +$LANG["text_login_info"] = "要求どおりに、ここにあなたのログイン情報です。"; +$LANG["text_name_of_form"] = "フォームの名前です。"; +$LANG["text_no_clients"] = "現在、データベース内のクライアントがないです。下記のクライアントの追加]ボタンを新しいクライアントアカウントをクリックして追加します。"; +$LANG["text_no_clients_found"] = "いいえ、クライアントが発見された。あなたの検索条件を広げてみてください。"; +$LANG["text_no_fields_in_view"] = "このビューは、その中に任意のフィールドを持っていません。下のリンクをクリックしてください。"; +$LANG["text_no_forms"] = "現在、データベース内のフォームがあります。新しいフォームは、下記のフォームの追加]ボタンをクリックして追加してください。"; +$LANG["text_no_forms_found"] = "フォームは見つかりませんでした。"; +$LANG["text_no_forms_found_search"] = "フォームは見つかりませんでした。検索条件を拡大してみてください。"; +$LANG["text_no_modules_found"] = "なしモジュールが見つかりませんでした。あなたの検索条件を広げてみてください。"; +$LANG["text_no_recipients_added"] = "いいえ受信者が追加されている。"; +$LANG["text_no_search_results"] = "この検索条件での検索結果/表示されます。"; +$LANG["text_no_submissions_found"] = "申し訳ありませんが、応募が発見された。"; +$LANG["text_no_themes"] = "あなたが定義されているテーマを持っていない。あなたのテーマのリストをリフレッシュするには、以下のボタンをクリック、またはチェックフォームツールのユーザーマニュアルのテーマの追加については、を。"; +$LANG["text_non_deletable_fields"] = "このフィールドは、コアのスクリプトによって使用され、互換性の問題を発生させることなく編集または削除することはできません。もしフィールドの型を変更したい場合は、それのコピーを作成し、そのコピーを編集します。"; +$LANG["text_option_list_group_explanation"] = "これが選択されている場合、それはあなたの選択肢をグループ化することができます。どのようにグループが表示されていると、このオプションのリストを使用してフィールドのタイプによって異なります。"; +$LANG["text_option_list_page"] = "ラジオボタン、チェックボックス、ドロップダウンと複数選択のドロップダウンフィールドは、すべてそれらが1つ以上のアイテムを選択できる複数のオプションをユーザーに提供します。フォームツールでは、これらのオプションリストとして知られています。一般に、これらはによって自動的に作成されている追加の外部形式のプロセスが、あなたのフォームの内容が変更またはあなたが内部でのみ使用されるフィールドを構築する場合は、手動で下記にオプションのリストを追加または編集できます。"; +$LANG["text_option_list_used_by_fields"] = "このオプションリストは、複数のフォームフィールドで使用されます。あなたが以下の情報を更新する場合、それはすべてのフィールド(参照用に変更されるフォームフィールドのタブのフィールドのリストを参照する)。あなたがいずれかの値、または現在割り当てられているフィールドのサブセットを更新する場合は、 こちらをクリックしてこれと同じ値を持つ新しいオプションのリストを作成する。次に、あなたが新しいグループ化するフォームフィールドを割り当てることができます。"; +$LANG["text_public_form_omit_list_page"] = "公共のフォームを使用するすべてのクライアントアカウントを手動でそれらを各クライアントに割り当てることなく、それらにアクセスできるの恩恵を与える。このページでは、このフォームにアクセスできないことがあります、これらのクライアントにもかかわらず、フォームをパブリックとしてマークされて特定することができます。"; +$LANG["text_public_view_omit_list_page"] = "パブリックビューをすべてのクライアントアカウントを手動でそれらを各クライアントに割り当てることなく、それらにアクセスできるの恩恵を与える。このページでは、この特定のビューにアクセスできないことがあります、これらのクライアントを特定することができます。"; +$LANG["text_reference_tab_info"] = "このページは、フォームで使用可能なすべてのプレースホルダを示します。プレースホルダは、特殊なプレースホルダアイコンでマークされた電子メールテンプレートで使用できる文字列、およびフィールドです 。フィールドに入力するとき、それらは動的にフィールドが表示されたり、電子メールが送信された適切な値に変換されます。"; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "レビューは、ユーザマニュアル"; +$LANG["text_send_email_from_edit_submission_page"] = "[編集]発表のページからこのメールを送信するを含めるオプション"; +$LANG["text_smart_fill_option_list_problem"] = "我々はスマート、フィールドのオプションを記入することができませんでした。しかし、代替手段としては、以下のフィールドにフォームのページのコピーをアップロードしてみてください。注:生のPHPページ(または他のサーバーサイドコード)をアップロードしない -単にHTMLバージョンをアップロードする。これを取得するには、Webブラウザからページを表示して保存します。"; +$LANG["text_submission_ip_address"] = "IPアドレスは、送信したユーザーのパスワード。"; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "のいずれかを表示したり、自分は、このメールテンプレートから生成された電子メールを送信するには下のフォームを使用します。メールのみメールを下記の指定に送信されます、CCをメインおよびbccメールアドレスの受信者間のテストは無視されます。"; +$LANG["text_test_email_templates_no_submissions"] = "お客様の電子メールアドレスをテストするためのテンプレートは、まず、少なくとも1つのフォームの送信を介して配置する必要があります。"; +$LANG["text_theme_page_intro"] = "このページはあなたのテーマのすべての一覧を示します。サムネイルをクリックして、テーマのスタイルを取り上げている例を参照してください。 ""チェックボックスをオンかどうかは、そのテーマのクライアントによって選択されることが決定有効。は、 フォームツールのWebサイトを参照して、すべての利用可能なテーマを参照する。"; +$LANG["text_tutorial_adding_first_form"] = "チュートリアル:あなたの最初のフォームを追加する!"; +$LANG["text_unique_submission_id"] = "ユニークな提出のID。"; +$LANG["text_unused_option_list"] = "このオプションリストは、任意のフォームフィールドで使用されていません。"; +$LANG["text_upgraded"] = "インストールにアップグレードされている"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "このオプションリストは、次のフィールドで使用されます。"; +$LANG["text_view_fields_info"] = "このタブには、このビューで提出を編集するときにどのフィールドが、その順序を示し、それらが編集可能であるか否かを制御します。"; +$LANG["text_view_tab_summary"] = "このタブでは、グループにさまざまな方法を作成し、データを配置できます。ビューでは、管理可能なチャンクに分割すること、そしてクライアントに表示または編集することができる内容を制限するために、フォームデータのカスタムサブセットを作成してみましょう。"; +$LANG["validation_account_disabled"] = "すみません、あなたのアカウントを無効にされている。"; +$LANG["validation_account_not_recognized"] = "申し訳ありませんが、そのユーザー名が認識されていません。"; +$LANG["validation_account_not_recognized_info"] = "申し訳ありませんが、そのユーザー名が見つかりませんでした。もう一度、試すか、または下記のアドレスでは、サイト管理者にお問い合わせください。"; +$LANG["validation_account_pending"] = "ユーザーアカウントが管理者によって承認を保留している。"; +$LANG["validation_check_delete_client"] = "あなたは、このクライアントのアカウントを削除してもよろしいですか?"; +$LANG["validation_client_password_missing_number"] = "クライアントのパスワードは、少なくとも1つの番号(0-9)を含む必要があります。"; +$LANG["validation_client_password_missing_special_char"] = "クライアントのパスワードが) 文字含める必要があります少なくとも1つを次の文字: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "クライアントのパスワードは少なくとも1つの大文字を含める必要があります。"; +$LANG["validation_client_password_too_short"] = "クライアントのパスワードは長い文字{\$number}になる、少なくとも。"; +$LANG["validation_col_name_is_reserved_word"] = "申し訳ありませんが、このデータベースの列名をMySQLでの予約作業です。してください名前を変更します!"; +$LANG["validation_db_name"] = "データベース名にピリオドやスラッシュを含めることはできません。"; +$LANG["validation_db_not_updated_invalid_input"] = "データベースの更新ができませんでした。してください入力された値を確認するチェックが有効です。"; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "申し訳ありませんが、デフォルトの管理者およびクライアントのテーマ常に有効にする必要があります。"; +$LANG["validation_default_phone_num_required"] = "数字のみ - ある[<b> { \$フィールド} </ b>のフィールドの完全な電話番号を記入してください。"; +$LANG["validation_default_rule_alpha"] = "ある[<b> { \$フィールド} </ b>のフィールドの文字と数字を入力するだけしてください。"; +$LANG["validation_default_rule_letters_only"] = "ある[<b> { \$フィールド} </ b>のフィールドに文字を入力するだけしてください。"; +$LANG["validation_default_rule_numbers_only"] = "だけある[<b> { \$フィールド} </ b>のフィールドに数値を入力してください。"; +$LANG["validation_default_rule_required"] = "ある[<b> { \$フィールド}の値</ b>のフィールドを入力してください。"; +$LANG["validation_default_rule_valid_email"] = "ある[<b> { \$フィールド} </ b>のフィールドに有効なメールアドレスを入力してください。"; +$LANG["validation_delete_form_confirm"] = "してくださいでは、このフォームを削除することを確認するためにボックスをチェックします。"; +$LANG["validation_delete_non_empty_option_list"] = "警告!このオプションリストは、1つまたは複数のフォームフィールドで使用されます。それを削除すると、それらのフィールドが正しく動作するために停止になります。"; +$LANG["validation_display_names_incomplete"] = "してくださいすべての表示名をクリックするか、スマート塗りつぶしオプションを動的に入力するための値を入力します。"; +$LANG["validation_duplicate_form_field_name"] = "あなたは、同じフィールド名を持つ複数のフィールドを持つことはできません。"; +$LANG["validation_email_not_found_or_invalid"] = "申し訳ありませんが、メールアカウントのいずれかが存在しないか、または無効ですられた。"; +$LANG["validation_folder_invalid_permissions"] = "ためにこのテストを実行するには、権限が必要ですアップロードするフォルダにファイルの読み取りと(777 Unix上で)書き込みを可能にする設定されています。"; +$LANG["validation_folder_not_writable"] = "このフォルダは書き込み可能ではありません。"; +$LANG["validation_internal_form_too_many_fields"] = "申し訳ありませんが、あなたは1000フィールドまたは以下でフォームを作成できます。"; +$LANG["validation_invalid_admin_email"] = "有効なadminstratorの電子メールアドレスを入力します。"; +$LANG["validation_invalid_admin_username"] = "ユーザー名は、英数字(AZと0-9)で構成することができます。"; +$LANG["validation_invalid_client_username"] = "クライアントのユーザー名は英数字のみ文字(az、0-9)で構成されることがあります。"; +$LANG["validation_invalid_client_username2"] = "申し訳ありませんが、ユーザ名には、文字、数字、およびアンダースコア文字が含まれる場合があります。してください、新しいユーザー名を入力します。"; +$LANG["validation_invalid_column_name"] = "列名のみ(A〜Z、0〜9)英数字の可能性があります。列名を確認してください。"; +$LANG["validation_invalid_custom_from_email"] = "メールアドレスを[差出人有効なカスタム'を入力します。"; +$LANG["validation_invalid_custom_reply_to_email"] = "入力してください有効なカスタム'返信先'に電子メールアドレス。"; +$LANG["validation_invalid_default_sessions_timeout"] = "有効な値は、デフォルトのセッションタイムアウト(数値)を入力します。"; +$LANG["validation_invalid_email"] = "有効なメールアドレスを入力します。"; +$LANG["validation_invalid_email_id"] = "申し訳ありませんが、無効な電子メールのIDです。"; +$LANG["validation_invalid_folder"] = "申し訳ありませんが、これは有効なフォルダが表示されません。"; +$LANG["validation_invalid_form_field_names"] = "フォームフィールドは英数字のみで構成されることとします(AZ、0-9、アンダースコア、_)、スペースは使用しません。"; +$LANG["validation_invalid_num_clients_per_page"] = "してください。のみページ数]フィールドは、Numクライアントでの番号を入力します。"; +$LANG["validation_invalid_num_emails_per_page"] = "してください。のみ1ページあたりのメールには、数字を入力します。"; +$LANG["validation_invalid_num_form_fields"] = "フィールドのフィールドの数で数字のみを入力してください。"; +$LANG["validation_invalid_num_forms_per_page"] = "してください。のみPage]フィールドには、Numフォームごとに数値を入力します。"; +$LANG["validation_invalid_num_menus_per_page"] = "してくださいのみ、1ページあたりのメニューには、数字を入力します。"; +$LANG["validation_invalid_num_modules_per_page"] = "してくださいだけは、Numモジュールでのページフィールドごとの数値を入力します。"; +$LANG["validation_invalid_num_option_lists_per_page"] = "ページのフィールド毎のnumオプションリストで数字のみを入力してください。"; +$LANG["validation_invalid_num_submissions_per_page"] = "してくださいページごとの応募作品の有効な番号を入力します。"; +$LANG["validation_invalid_sessions_timeout"] = "有効なセッションのタイムアウトを入力します(整数のみ!)。"; +$LANG["validation_invalid_tab_assign_values"] = "してくださいのみの数字を入力して'から'するためのフィールド。"; +$LANG["validation_invalid_table_prefix"] = "データベースの接頭辞は文字で構成され、唯一のアンダースコア文字を入力してください。"; +$LANG["validation_invalid_upload_folder"] = "PHPのサーバーのインストール upload_tmp_dir値に無効な設定をしています。 "{\$upload_folder}"有効なフォルダではありません。"; +$LANG["validation_invalid_url"] = "有効なURLを入力します。"; +$LANG["validation_invalid_username"] = "あなたのユーザ名は英数字のみ文字(az、0-9)で構成されることがあります。"; +$LANG["validation_is_form_active"] = "してくださいいるかどうかは、フォームまたはがアクティブであることを示す。"; +$LANG["validation_menu_name_taken"] = "申し訳ありませんが、このメニュー名が既に取得されます。新しい名前を選択します。"; +$LANG["validation_modules_search_no_status"] = "EnabledまたはDisabledのいずれかのチェックボックスを選択してください。"; +$LANG["validation_no_access_type"] = "してください、アクセスタイプを入力します。"; +$LANG["validation_no_account_logout_url"] = "あなたのログアウトURLを入力します。"; +$LANG["validation_no_account_password_confirmed"] = "もう一度新しいパスワードを入力します。"; +$LANG["validation_no_account_password_confirmed2"] = "もう一度新しいパスワードを入力してください。"; +$LANG["validation_no_admin_email"] = "してください管理者の電子メールアドレスを入力します。"; +$LANG["validation_no_admin_theme"] = "してください管理者アカウント用のテーマを選択します。"; +$LANG["validation_no_admin_theme_swatch"] = "管理者のテーマの色見本を選択してください。"; +$LANG["validation_no_client_email"] = "してくださいクライアントの電子メールアドレスを入力します。"; +$LANG["validation_no_client_first_name"] = "してくださいクライアントの最初の名前を入力します。"; +$LANG["validation_no_client_last_name"] = "してくださいクライアントの最後の名前を入力します。"; +$LANG["validation_no_client_login_page"] = "してくださいどのページがクライアントには、ログインするリダイレクトされるべきことを示す"; +$LANG["validation_no_client_password"] = "してくださいクライアントのパスワードを入力します。"; +$LANG["validation_no_client_theme_swatch"] = "クライアントアカウントのデフォルトの色見本を選択してください。"; +$LANG["validation_no_client_username"] = "してくださいクライアントのユーザー名を入力します。"; +$LANG["validation_no_column_name"] = "すべての列名を入力してください、または自動的にそれらを埋めるためにスマート塗りつぶし]ボタンをクリックします。"; +$LANG["validation_no_column_selected"] = "してください提出一覧のページに列として表示されるには、少なくとも1つのフィールドを選択します。"; +$LANG["validation_no_custom_from_email"] = "入力してください電子メールアドレス:'からカスタム'。"; +$LANG["validation_no_custom_recipient_email"] = "してください。カスタム受信者のメールアドレスを入力します。"; +$LANG["validation_no_custom_reply_to_email"] = "入力してくださいカスタム'返信先'に電子メールアドレス。"; +$LANG["validation_no_date_format"] = "してください日付の書式を入力します。"; +$LANG["validation_no_db_column_single"] = "データベース列の名前を入力してください。"; +$LANG["validation_no_db_hostname"] = "してくださいデータベースのホスト名を入力します。"; +$LANG["validation_no_db_name"] = "してくださいデータベースの名前を入力します。"; +$LANG["validation_no_db_username"] = "してくださいデータベースアカウントのユーザー名を入力します。"; +$LANG["validation_no_default_client_theme"] = "してくださいすべての新しいクライアントアカウントのデフォルトのテーマを選択します。"; +$LANG["validation_no_default_language"] = "してくださいフォームツールのインストールのためのデフォルトの言語を選択します。"; +$LANG["validation_no_default_sessions_timeout"] = "してくださいユーザーアカウントのデフォルトのセッションタイムアウトを入力します。"; +$LANG["validation_no_display_text"] = "各フィールドの表示テキストを入力してください。"; +$LANG["validation_no_display_text_single"] = "表示テキストの値を入力してください。"; +$LANG["validation_no_edit_submission_page_label"] = "してください[編集]発表申込ページのラベルを入力します。"; +$LANG["validation_no_email"] = "あなたのメールアドレスを入力します。"; +$LANG["validation_no_email_config_field"] = "してくださいどちらのフォームフィールドを指定する電子メールのフィールドです。"; +$LANG["validation_no_email_content"] = "少なくとも1つのフォーマットのための電子メールの内容を入力します(HTMLまたはテキスト)。"; +$LANG["validation_no_email_from_field"] = "してください'フィールドからの電子メール'。"; +$LANG["validation_no_email_template_name"] = "してください電子メールテンプレートの名前を入力します。"; +$LANG["validation_no_email_template_view_id"] = "してくださいこれは、このメールをマッピングする必要がテンプレートを選択します。"; +$LANG["validation_no_email_template_view_mapping_value"] = "してくださいことを示すときに、メールを送信する必要があります。"; +$LANG["validation_no_enabled_themes"] = "してください少なくとも1つのテーマが有効であることを確認。"; +$LANG["validation_no_first_name"] = "あなたの最初の名前を入力します。"; +$LANG["validation_no_form_field_name"] = "してくださいすべてのフォームフィールドの名前を入力します。"; +$LANG["validation_no_form_field_single"] = "フォームフィールドの値を入力してください。"; +$LANG["validation_no_form_id"] = "フォームのIDが指定されませんでした。してください。ログアウトして、もう一度やり直してください。"; +$LANG["validation_no_form_name"] = "してくださいフォームの名前を入力します。"; +$LANG["validation_no_form_url"] = "してくださいフォームのURLを入力します。"; +$LANG["validation_no_last_name"] = "あなたの最後の名前を入力します。"; +$LANG["validation_no_login_page"] = "ご希望のどのページを示すインチログオンするたびに送信する"; +$LANG["validation_no_logout_url"] = "してください。ログアウトURLを入力します。"; +$LANG["validation_no_main_email_recipient"] = "少なくとも1つのメインのメール受信者を入力します(ないつまり、CCまたはBCC)。"; +$LANG["validation_no_menu"] = "このユーザーアカウント用のメニューを選択します。"; +$LANG["validation_no_menu_id"] = "してくださいメニューを選択します。"; +$LANG["validation_no_num_clients_per_page"] = "してください1ページあたりのクライアントアカウントの番号を入力します。"; +$LANG["validation_no_num_emails_per_page"] = "してくださいページごとのリストに電子メールの数を入力します。"; +$LANG["validation_no_num_form_fields"] = "フォームのフィールドの数を入力してください。"; +$LANG["validation_no_num_forms_per_page"] = "してください1ページあたりのフォームの番号を入力します。"; +$LANG["validation_no_num_menus_per_page"] = "してください1ページあたりの一覧にメニューの番号を入力します。"; +$LANG["validation_no_num_modules_per_page"] = "してください1ページあたりのモジュールの数を入力します。"; +$LANG["validation_no_num_option_lists_per_page"] = "ページごとのオプションリストの番号を入力してください。"; +$LANG["validation_no_num_submissions_per_page"] = "してください1ページに表示する投稿の数を入力します。"; +$LANG["validation_no_option_list_name"] = "オプションのリスト名を入力してください。"; +$LANG["validation_no_page_titles"] = "してくださいユーザーアカウントのデフォルトのページのタイトルを入力します。"; +$LANG["validation_no_password"] = "あなたのパスワードを入力します。"; +$LANG["validation_no_program_name"] = "してくださいプログラム名を入力します。"; +$LANG["validation_no_second_password"] = "もう一度パスワードを入力してください。"; +$LANG["validation_no_sessions_timeout"] = "してください。セッションのタイムアウトを入力します。"; +$LANG["validation_no_smart_fill_values"] = "してくださいと、フォームのURLは、フォームのフィールド名を入力します。"; +$LANG["validation_no_table_prefix"] = "データベースの接頭辞を入力してください。"; +$LANG["validation_no_tabs_defined"] = "いいえタブ定義されて"; +$LANG["validation_no_test_email_recipient"] = "してくださいここで我々は、テストメールを送信するの電子メールアドレスを入力します。"; +$LANG["validation_no_test_email_submission_id"] = "してください提出ID番号を入力。"; +$LANG["validation_no_theme"] = "してくださいテーマを選択します。"; +$LANG["validation_no_theme_swatch"] = "選択したテーマの色見本を選択してください。"; +$LANG["validation_no_timezone_offset"] = "してくださいタイムゾーンのオフセットを入力します。"; +$LANG["validation_no_titles"] = "してくださいページタイトルを入力します。"; +$LANG["validation_no_two_column_names"] = "申し訳ありませんが、2回は、同じデータベース列の名前を入力しない場合があります。"; +$LANG["validation_no_ui_language"] = "してくださいインターフェイスの言語を選択します。"; +$LANG["validation_no_url"] = "してくださいURLを入力します。"; +$LANG["validation_no_username"] = "あなたのユーザ名を入力します。"; +$LANG["validation_no_username_or_js"] = "あなたのユーザー名を入力する必要があります。お使いのブラウザでJavaScriptを有効にします。"; +$LANG["validation_no_view_fields"] = "あなたのプロフィールの任意のフィールドが含まれていません!そこには、少なくとも1つのフィールドを割り当てるにあなたのプロフィールに表示さに何かをする必要があります。"; +$LANG["validation_no_view_fields_selected"] = "してくださいプロフィールに追加する1つまたは複数のフィールドを選択します。"; +$LANG["validation_no_view_name"] = "あなたのプロフィールの名前を入力します。"; +$LANG["validation_num_rows_to_add"] = "してください追加する行の番号を入力します。"; +$LANG["validation_option_list_name_taken"] = "申し訳ありませんが、このオプションのリスト名は既に使用されています。新しい名前を選択してください。"; +$LANG["validation_password_in_password_history"] = "セキュリティのために、あなたが/ bの>パスワードは最後の;ダウンロード( \$と同じパスワードを {\$history_size} 入力できません。別のパスワードを入力してください。"; +$LANG["validation_passwords_different"] = "してくださいパスワードが同一であることを確認します。"; +$LANG["validation_please_enter_search_date_range"] = "してください検索の日付範囲を選択します。"; +$LANG["validation_please_enter_search_keyword"] = "してください検索キーワードを入力します。"; +$LANG["validation_select_field_type"] = "してください]フィールドのタイプを選択します。"; +$LANG["validation_select_submissions_to_copy"] = "コピーしたい投稿を選択してください。"; +$LANG["validation_select_submissions_to_delete"] = "してください削除するようになるこれらの提出を選択します。"; +$LANG["validation_smart_fill_cannot_fill"] = "申し訳ありませんが、このフィールドを埋めることはできなかった。"; +$LANG["validation_smart_fill_invalid_field_type"] = "我々のフィールドを見つけることができませんでしたが、それはドロップダウンリスト、チェックボックスまたはラジオグループではありません。"; +$LANG["validation_smart_fill_no_field_found"] = "申し訳ありませんが、ページを指定した上で、その名前を持つフォームフィールドを見つけることができませんでした。"; +$LANG["validation_smart_fill_no_page"] = "してください]ページでは、スマート記入したいフィールドを含むを探します。"; +$LANG["validation_smart_fill_upload_all_pages"] = "あなたのフォーム内のすべてのページをアップロードします。"; +$LANG["validation_upload_folder_not_writable"] = "これは一時的にアップロードするフォルダをPHPのインストールで指定された書き込み可能ではありません。まで、この問題が修正され、ファイル、フォームツール(または任意の他のPHPプログラム)を介してアップロードすることはできません。あなたのホストプロバイダにお問い合わせください。"; +$LANG["validation_upload_html_files_only"] = "してください。のみをアップロードするHTMLファイル。"; +$LANG["validation_username_taken"] = "申し訳ありませんが、そのユーザー名はすでに使用されます。別のユーザー名を入力します。"; +$LANG["validation_wrong_password"] = "申し訳ありませんが、そのパスワードが一致しません。"; +$LANG["word_about"] = "〜について"; +$LANG["word_access"] = "アクセス"; +$LANG["word_account"] = "口座"; +$LANG["word_account_sp"] = "アカウント(s)"; +$LANG["word_accounts"] = "アカウント"; +$LANG["word_action"] = "アクション"; +$LANG["word_active"] = "アクティブ"; +$LANG["word_add"] = "追加する"; +$LANG["word_add_rightarrow"] = "追加»"; +$LANG["word_add_uc_rightarrow"] = "追加»"; +$LANG["word_administration"] = "管理"; +$LANG["word_administrator"] = "管理者"; +$LANG["word_after"] = "〜の後で"; +$LANG["word_aquamarine"] = "アクアマリン"; +$LANG["word_asc"] = "昇順"; +$LANG["word_author"] = "著者"; +$LANG["word_author_c"] = "著者:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«戻る"; +$LANG["word_bcc_c"] = "Bcc:の"; +$LANG["word_before"] = "〜の前に"; +$LANG["word_benefits"] = "利点"; +$LANG["word_blue"] = "青"; +$LANG["word_cancel"] = "キャンセル"; +$LANG["word_cc_c"] = "のcc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "チェックボックス"; +$LANG["word_checklist"] = "チェックリスト"; +$LANG["word_client"] = "クライアント"; +$LANG["word_client_c"] = "名前:"; +$LANG["word_clients"] = "クライアント"; +$LANG["word_close"] = "閉じる"; +$LANG["word_code"] = "コード"; +$LANG["word_column"] = "列"; +$LANG["word_columns"] = "カラム"; +$LANG["word_columns_sp"] = "列(複数可)"; +$LANG["word_complete"] = "完了"; +$LANG["word_configuration"] = "構成"; +$LANG["word_content"] = "内容"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "続行»"; +$LANG["word_copy"] = "コピー"; +$LANG["word_custom"] = "風習"; +$LANG["word_data"] = "データ"; +$LANG["word_date"] = "日付"; +$LANG["word_debugging_c"] = "デバッグ:"; +$LANG["word_delete"] = "削除する"; +$LANG["word_desc"] = "拡大"; +$LANG["word_direct"] = "ダイレクト"; +$LANG["word_disabled"] = "バリアフリー"; +$LANG["word_documentation"] = "ドキュメント"; +$LANG["word_done"] = "行わ"; +$LANG["word_drawbacks"] = "欠点"; +$LANG["word_dropdown"] = "ドロップダウン"; +$LANG["word_edit"] = "[編集]"; +$LANG["word_editable"] = "編集"; +$LANG["word_email"] = "Eメール"; +$LANG["word_email_c"] = "Eメール:"; +$LANG["word_emails"] = "電子メール"; +$LANG["word_enabled"] = "有効"; +$LANG["word_equals"] = "等しい"; +$LANG["word_error"] = "エラー"; +$LANG["word_error_c"] = "エラー:"; +$LANG["word_examples_c"] = "例:"; +$LANG["word_external"] = "外部"; +$LANG["word_fail"] = "失敗"; +$LANG["word_field"] = "競技場"; +$LANG["word_field_sp"] = "フィールド(s)"; +$LANG["word_fields"] = "フィールド"; +$LANG["word_fields_sp"] = "フィールド(S)"; +$LANG["word_file"] = "ファイル"; +$LANG["word_file_b_uc"] = "[ファイル]"; +$LANG["word_files"] = "ファイル"; +$LANG["word_filters"] = "フィルタ"; +$LANG["word_filters_sp"] = "フィルタ(秒)"; +$LANG["word_for"] = "〜のために"; +$LANG["word_form"] = "フォーム"; +$LANG["word_form_c"] = "フォーム:"; +$LANG["word_formatting"] = "フォーマット"; +$LANG["word_forms"] = "フォーム"; +$LANG["word_found"] = "設立する"; +$LANG["word_from"] = "〜から"; +$LANG["word_from_c"] = "投稿者:"; +$LANG["word_general"] = "一般"; +$LANG["word_green"] = "緑"; +$LANG["word_grey"] = "グレー"; +$LANG["word_height"] = "高さ"; +$LANG["word_help"] = "ヘルプ"; +$LANG["word_hidden"] = "隠し"; +$LANG["word_highlight"] = "ハイライト"; +$LANG["word_horizontal"] = "水平方向の"; +$LANG["word_hour"] = "時間"; +$LANG["word_hours"] = "営業時間"; +$LANG["word_html"] = "HTMLの"; +$LANG["word_id"] = "番号"; +$LANG["word_image"] = "イメージ"; +$LANG["word_incomplete"] = "不完全な"; +$LANG["word_install"] = "インストール"; +$LANG["word_installation"] = "インストール"; +$LANG["word_internal"] = "内部"; +$LANG["word_language"] = "言語"; +$LANG["word_large"] = "大規模な"; +$LANG["word_like"] = "好き"; +$LANG["word_login"] = "ログイン"; +$LANG["word_logo"] = "ロゴ"; +$LANG["word_logout"] = "ログアウト"; +$LANG["word_main"] = "主な"; +$LANG["word_medium"] = "中"; +$LANG["word_menu"] = "メニュー"; +$LANG["word_menus"] = "メニュー"; +$LANG["word_minutes"] = "分"; +$LANG["word_misc"] = "その他"; +$LANG["word_module"] = "モジュール"; +$LANG["word_modules"] = "モジュール"; +$LANG["word_na"] = "ム/"; +$LANG["word_name"] = "名前"; +$LANG["word_name_c"] = "名前:"; +$LANG["word_never"] = "決してない"; +$LANG["word_next_rightarrow"] = "次のページ»"; +$LANG["word_next_step_rightarrow"] = "次のステップ»"; +$LANG["word_no"] = "いいえ"; +$LANG["word_none"] = "何もない"; +$LANG["word_notes"] = "ノート"; +$LANG["word_notification"] = "通知"; +$LANG["word_number"] = "品番"; +$LANG["word_off"] = "切れて"; +$LANG["word_offline"] = "オフライン"; +$LANG["word_okay"] = "良い"; +$LANG["word_on"] = "〜の上に"; +$LANG["word_online"] = "オンライン"; +$LANG["word_operator"] = "演算子"; +$LANG["word_options"] = "オプション"; +$LANG["word_orange"] = "オレンジ"; +$LANG["word_order"] = "順番"; +$LANG["word_other"] = "その他の"; +$LANG["word_other_c"] = "その他:"; +$LANG["word_page"] = "ページ"; +$LANG["word_page_c"] = "ページ数:"; +$LANG["word_pass"] = "パス"; +$LANG["word_password"] = "パスワード"; +$LANG["word_password_c"] = "パスワード:"; +$LANG["word_pending"] = "未決定の"; +$LANG["word_permissions"] = "アクセス許可"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«前のページ"; +$LANG["word_private"] = "プライベート"; +$LANG["word_public"] = "パブリック"; +$LANG["word_purple"] = "紫"; +$LANG["word_recipient"] = "受信者"; +$LANG["word_recipient_sp"] = "受信者(秒)"; +$LANG["word_red"] = "レッド"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "取り外す"; +$LANG["word_remove_uc_leftarrow"] = "«削除"; +$LANG["word_reply_to"] = "返信する"; +$LANG["word_reply_to_c"] = "返信先:"; +$LANG["word_required"] = "必要"; +$LANG["word_reset"] = "リセット"; +$LANG["word_resolved"] = "解決"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "の行"; +$LANG["word_search"] = "探す"; +$LANG["word_searchable"] = "検索"; +$LANG["word_select"] = "を選択する"; +$LANG["word_setting"] = "設定"; +$LANG["word_settings"] = "[設定]"; +$LANG["word_show"] = "見せる"; +$LANG["word_size"] = "サイズ"; +$LANG["word_skipped"] = "をスキップ"; +$LANG["word_small"] = "小型"; +$LANG["word_solution"] = "ソリューション"; +$LANG["word_sortable"] = "ソート"; +$LANG["word_start"] = "開始"; +$LANG["word_status"] = "地位"; +$LANG["word_string"] = "文字列"; +$LANG["word_subject"] = "主題"; +$LANG["word_subject_c"] = "主題"; +$LANG["word_submenu"] = "サブメニュー"; +$LANG["word_submission"] = "発表"; +$LANG["word_submissions"] = "提出"; +$LANG["word_system"] = "システム"; +$LANG["word_tab"] = "タブ"; +$LANG["word_tabs"] = "タブ"; +$LANG["word_tabs_sp"] = "タブ(複数可)"; +$LANG["word_test"] = "試験"; +$LANG["word_text"] = "テキスト"; +$LANG["word_textarea"] = "Textareaの"; +$LANG["word_textbox"] = "テキストボックス"; +$LANG["word_theme"] = "テーマ"; +$LANG["word_themes"] = "テーマ"; +$LANG["word_time"] = "タイム"; +$LANG["word_tiny"] = "小さな"; +$LANG["word_tips"] = "ヒント"; +$LANG["word_today"] = "今日の"; +$LANG["word_truncate_q"] = "切り捨てる?"; +$LANG["word_uninstall"] = "をアンインストールする"; +$LANG["word_unknown"] = "未知"; +$LANG["word_update"] = "更新する"; +$LANG["word_upgrade"] = "アップグレード"; +$LANG["word_url_c"] = "のURL:"; +$LANG["word_user"] = "ユーザー"; +$LANG["word_username"] = "ユーザー名"; +$LANG["word_username_c"] = "ユーザー名:"; +$LANG["word_validation"] = "検証"; +$LANG["word_value"] = "の値"; +$LANG["word_value_sp"] = "値(複数可)"; +$LANG["word_verified"] = "検証"; +$LANG["word_verify"] = "確認"; +$LANG["word_version"] = "バージョン"; +$LANG["word_vertical"] = "垂直"; +$LANG["word_view"] = "視野"; +$LANG["word_views"] = "再生回数"; +$LANG["word_warning"] = "警告!"; +$LANG["word_warning_c"] = "警告:"; +$LANG["word_web"] = "ウェブ"; +$LANG["word_welcome"] = "ようこそ!"; +$LANG["word_width_c"] = "幅:"; +$LANG["word_words"] = "ワード"; +$LANG["word_wysiwyg"] = "WYSIWYGの"; +$LANG["word_yellow"] = "イエロー"; +$LANG["word_yes"] = "はい"; \ No newline at end of file diff --git a/global/lang/ko.php b/global/lang/ko.php new file mode 100644 index 00000000..42b5eb3c --- /dev/null +++ b/global/lang/ko.php @@ -0,0 +1,1219 @@ +경고! 당신 {\$num_selected_on_page} 페이지에서 제출 및 {\$num_selected_on_other_pages} 다른 페이지를 선택했습니다. 제발 다음 옵션 중 하나를 선택하십시오 :
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "경고! 당신은이 페이지에서 선택하지 않은 모든 제출했지만 {\$num_selected_on_other_pages} 다른 페이지에있다. 제발 이런 제출 삭제할 것인지 확인합니다.
    "; +$LANG["confirm_delete_view"] = "당신이보기를 삭제하시겠습니까?"; +$LANG["confirm_refresh_page"] = "당신은 페이지를 새로 고치시겠습니까? 이것은 당신이 만든 변경 사항을 잃게됩니다."; +$LANG["confirm_save_change_before_redirect"] = "하나 이상의 필드가 업데이 트되었습니다. 당신이 리디렉션하기 전에 변경 사항을 저장하시겠습니까?"; +$LANG["confirm_smart_fill_db_column_fields"] = "당신은 똑똑한 채우기 위해 데이터베이스의 열 이름시겠습니까? 이렇게하면 기존 값을 덮어 쓰게됩니다."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "이 옵션은 디스플레이 텍스트 필드에 따라 데이터베이스 열 이름을 자동 생성, 데이터베이스 테이블의 내용을 읽기 쉽게되도록."; +$LANG["confirm_smart_fill_display_names"] = "당신은 똑똑한 채우기를 표시 이름시겠습니까? 이렇게하면 기존 값을 덮어 쓰게됩니다."; +$LANG["confirm_ungroup_option_list"] = "당신이이 옵션 목록을 그룹 해제 하시겠습니까? 모든 옵션은 하나의 분리할 목록으로 일괄 처리됩니다."; +$LANG["confirm_uninstall_module"] = "당신이이 모듈을 제거하겠습니까? 모든 모듈은 데이터가 손실됩니다."; +$LANG["date_AM"] = "오전"; +$LANG["date_Fri"] = "금"; +$LANG["date_Friday"] = "금요일"; +$LANG["date_Mon"] = "월"; +$LANG["date_Monday"] = "월요일"; +$LANG["date_PM"] = "오후"; +$LANG["date_Sat"] = "토"; +$LANG["date_Saturday"] = "토요일"; +$LANG["date_Sun"] = "해"; +$LANG["date_Sunday"] = "일요일"; +$LANG["date_Thu"] = "목"; +$LANG["date_Thursday"] = "목요일"; +$LANG["date_Tue"] = "화"; +$LANG["date_Tuesday"] = "화요일"; +$LANG["date_Wed"] = "수요일"; +$LANG["date_Wednesday"] = "수요일"; +$LANG["date_am"] = "오전"; +$LANG["date_month_April"] = "4월"; +$LANG["date_month_August"] = "8월"; +$LANG["date_month_December"] = "12월"; +$LANG["date_month_February"] = "2월"; +$LANG["date_month_January"] = "1월"; +$LANG["date_month_July"] = "7월"; +$LANG["date_month_June"] = "6월"; +$LANG["date_month_March"] = "월"; +$LANG["date_month_May"] = "일 수있다"; +$LANG["date_month_November"] = "11월"; +$LANG["date_month_October"] = "10월"; +$LANG["date_month_September"] = "9월"; +$LANG["date_month_short_Apr"] = "4월"; +$LANG["date_month_short_Aug"] = "8월"; +$LANG["date_month_short_Dec"] = "12월"; +$LANG["date_month_short_Feb"] = "2월"; +$LANG["date_month_short_Jan"] = "월"; +$LANG["date_month_short_Jul"] = "7월"; +$LANG["date_month_short_Jun"] = "6월"; +$LANG["date_month_short_Mar"] = "월"; +$LANG["date_month_short_May"] = "일 수있다"; +$LANG["date_month_short_Nov"] = "11월"; +$LANG["date_month_short_Oct"] = "10월"; +$LANG["date_month_short_Sep"] = "9월"; +$LANG["date_pm"] = "오후"; +$LANG["notify_account_deleted"] = "사용자 계정이 삭제되었습니다."; +$LANG["notify_account_updated"] = "귀하의 계정이 성공적으로 업데이 트되었습니다."; +$LANG["notify_add_display_values"] = "표시 값 추가"; +$LANG["notify_admin_menu_updated"] = "관리 메뉴가 업데이 트되었습니다."; +$LANG["notify_admin_theme_overridden"] = "관리자의 테마를 수동으로 재정의되었습니다."; +$LANG["notify_allow_url_fopen_not_set"] = "죄송합니다,이 테스트를 귀하의 웹 서버에서 실행할 수없습니다. 그것은 1 귀하의 php.ini 파일에서 allow_url_fopen을 설정해야합니다. 이 설정은 PHP가 URL은이 테스트를 실행하는 데 필요한 통해 파일에 액세스할 수있습니다. 수동 FTP를 통해 해당 폴더에 파일을 업로드하여, 다음의 URL에서 제공한에 액세스하려고 그것을 테스트할 수있습니다."; +$LANG["notify_change_temp_password"] = "당신은 임시 비밀 번호로 로그인. 이제 비밀 번호를 재설정해야합니다!"; +$LANG["notify_click_to_edit_new_submission"] = "여기를 클릭하여 새 제출물을 편집하십시오."; +$LANG["notify_client_account_menus_updated"] = "들) {\$menu_name} 메뉴에 업데이 트되었습니다 고객 계정 (. 이제) 이전 계정 (들와 관련이 있었다 메뉴를 삭제할 수있습니다."; +$LANG["notify_client_account_not_updated"] = "고객 계정이 업데이 트되지 않을 수있습니다."; +$LANG["notify_client_account_themes_updated"] = "들) {\$theme} 테마 테마가 업데이 트되었습니다 고객 계정 (. 이제)의 테마는 이전에 계정을 (들과 관련된 비활성화할 수있습니다."; +$LANG["notify_client_account_updated"] = "고객 계정이 성공적으로 업데이 트되었습니다."; +$LANG["notify_client_menu_deleted"] = "클라이언트는 메뉴가 삭제되었습니다."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "메뉴에서 삭제되었습니다하지만 다음과 같은 클라이언트 계정은 이제 더 이상 메뉴! 다음과 같은 계정을 업데이 트해야합니다 :"; +$LANG["notify_client_menu_updated"] = "클라이언트는 메뉴가 업데이 트되었습니다."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "죄송합니다, 그냥 메뉴에서 삭제했지만 이미 클라이언트가 아래에 나열된 사용되고있다. 위해서는 먼저 다른 메뉴로 고객을 할당해야합니다 메뉴에서 삭제합니다. 클라이언트 이름을 클릭하여 개인 계정을 편집하거나 다른 메뉴 아래의 드롭 다운 메뉴를 사용하는 모든 계정을 지정할 수있습니다."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "미안 해요, 당신은 단지 하나의 장애 테마는 이미 다음과 같은 클라이언트 계정에 의해 사용되고있습니다. 위해서는 먼저 다른 테마를 각 클라이언트에 할당해야합니다 테마를 해제합니다. 클라이언트 이름을 클릭하여 개인 계정을 수정하거나 주제 아래 드롭 다운 메뉴를 사용하는 모든 계정을 지정할 수있습니다."; +$LANG["notify_edit_email_fields_link"] = "여기를 클릭하십시오 양식 필드 이메일 필드되므로, 귀하의 이메일 템플릿에서 그들을 타겟팅할 수 지정할 수 있습니다."; +$LANG["notify_edit_field_new_field"] = "이것은 새로운 분야입니다. 당신은 완전히이 필드를 편집할 수되기 전에 기본 페이지를 업데이 트해야합니다."; +$LANG["notify_edit_option_list_after_save"] = "이 옵션 목록을 선택하고 다음을 수정할 수되기 전에 변경 사항 저장을해야합니다."; +$LANG["notify_email_field_config_deleted"] = "이메일 설정이 삭제되었습니다."; +$LANG["notify_email_fields_not_updated"] = "죄송합니다, 우리는 이메일 필드를 업데이 트하지 못했습니다."; +$LANG["notify_email_fields_updated"] = "이메일 입력란에 업데이 트되었습니다."; +$LANG["notify_email_not_sent"] = "죄송합니다, 이메일을 보낼 수없습니다. 아래 주소에서 사이트 관리자에게 문의하십시오."; +$LANG["notify_email_not_sent_c"] = "죄송합니다, 이메일을 보낼 수 없습니다 :"; +$LANG["notify_email_sent"] = "들)을 보냈습니다 메일 (."; +$LANG["notify_email_template_deleted"] = "이메일 템플릿 삭제되었습니다."; +$LANG["notify_email_template_updated"] = "이메일 템플릿을 업데이 트되었습니다."; +$LANG["notify_enabled_module_list_updated"] = "활성화된 모듈의 목록이 업데이 트되었습니다."; +$LANG["notify_error_saving_fields"] = "필드를 저장하는 중 오류가 발생했습니다."; +$LANG["notify_field_changes_saved"] = "귀하의 현장 (S)에 대한 변경 사항이 저장되었습니다."; +$LANG["notify_field_options_smart_filled"] = "당신의 필드 옵션이 스마트 가득차있다."; +$LANG["notify_field_selected"] = "필드에 선정되었습니다. 보시려면 여기를 클릭 주요 필드 목록으로 돌아갑니다."; +$LANG["notify_field_updated"] = "이 필드는 업데이 트되었습니다."; +$LANG["notify_file_not_uploaded"] = "파일이 업로드되지 않을 수있습니다."; +$LANG["notify_file_uploaded"] = "파일이 성공적으로 업로드되었습니다."; +$LANG["notify_filters_not_updated"] = "거기에 오류가 발생 클라이언트의 제출 필터를 업데이 트했다."; +$LANG["notify_filters_updated"] = "제출 필터는이 클라이언트에 대한 업데이 트되었습니다."; +$LANG["notify_folder_correct_permissions"] = "이 폴더에 올바른 사용 권한이있다."; +$LANG["notify_folder_url_match"] = "폴더와 정확하게 일치하는 표시 URL입니다."; +$LANG["notify_folder_url_no_access"] = "이후 PHP를 액세스할 수없습니다이 테스트는 수행되지 않을 수있다는 URL입니다. 이것은 일반적으로 URL이되는 암호. htaccess 파일 보호에 의해 발생합니다."; +$LANG["notify_folder_url_no_match"] = "이 폴더의 URL이 조합이 일치하는 표시되지 않습니다."; +$LANG["notify_folder_url_unknown_error"] = "알 수없는 오류가 발생했습니다. 수동 FTP를 통해 해당 폴더에 파일을 업로드하여, 다음의 URL에서 제공한에 액세스하려고 그것을 테스트할 수있습니다."; +$LANG["notify_form_access_type_email_info"] = "이 양식은 관리자 권한이 유형이, 어떤 클라이언트가 그것에 액세스할 수없고 드롭 다운 아래에 나열되지 않도록."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "미안 해요, ID가 존재하지 않는가있는 형태."; +$LANG["notify_form_field_not_added"] = "양식 필드를 '{\$fieldname}' 를 추가하지 못했습니다."; +$LANG["notify_form_field_options_updated"] = "양식 필드 옵션이 업데이 트되었습니다."; +$LANG["notify_form_field_removed"] = "양식 필드를 성공적으로 제거되었습니다."; +$LANG["notify_form_fields_removed"] = "양식 필드를 성공적으로 제거되었습니다."; +$LANG["notify_form_not_updated_notify_admin"] = "귀하의 양식을 업데이 트되지 않을 수있습니다. 이 문제를보고 사이트 관리자에게 문의하십시오."; +$LANG["notify_form_settings_updated"] = "귀하의 형태로 설정이 성공적으로 업데이 트되었습니다."; +$LANG["notify_form_submission_updated"] = "양식 제출을 업데이 트되었습니다."; +$LANG["notify_form_tabs_updated"] = "탭이 업데이 트되었습니다."; +$LANG["notify_form_updated"] = "양식이 성공적으로 업데이 트되었습니다."; +$LANG["notify_form_views_updated"] = "양식보기가 업데이 트되었습니다."; +$LANG["notify_install_invalid_db_info"] = "죄송합니다, 우리는 데이터베이스에 제공한 정보를 사용하여 연결할 수없습니다. 데이터베이스 오류 메시지가 반환됩니다 : {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "당신의 양식이 만들어졌습니다! 당신은이 탭을 통해 양식을 구성할 수 있습니다."; +$LANG["notify_invalid_account_information_in_sessions"] = "계정 정보를 세션에 저장이 잘못되었습니다. 잠시 후 다시 아래에서 로그 인해주세요."; +$LANG["notify_invalid_license_key"] = "죄송합니다, 그렇게 유효한 라이센스 키가으로 나타나지 않습니다. 다시 입력 시도해 보시기 바랍니다."; +$LANG["notify_invalid_permissions"] = "이 페이지에 액세스하는 권한을 가지고 있지 않습니다. 로그아웃되었습니다."; +$LANG["notify_invalid_search_dates"] = "유효한 날짜 또는 날짜를 입력 datepicker를 사용하십시오."; +$LANG["notify_invalid_upload_folder"] = "업로드 폴더 중 하나가 잘못되었거나 쓰기 권한이없습니다."; +$LANG["notify_lang_list_updated"] = "해당 UI 언어 목록을 업데이 트되었습니다."; +$LANG["notify_login_info_emailed"] = "귀하의 로그인 정보를 당신에게 이메일로 전송되었습니다."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "죄송합니다,이 모듈이 이미 설치되어 있습니다!"; +$LANG["notify_module_installed"] = "모듈이 설치되었습니다. 여기를 클릭하여 모듈을 선택합니다."; +$LANG["notify_module_list_updated"] = "모듈 목록이 업데이 트되었습니다."; +$LANG["notify_module_uninstalled"] = "모듈이 제거되었습니다."; +$LANG["notify_module_updated"] = "{\$module} 모듈 모듈 {\$version} 업데이 트되었습니다 것은. 모듈을 선택하려면 여기를 클릭하십시오 ."; +$LANG["notify_multi_field_selected"] = "필드에 선정되었습니다. 보시려면 여기를 클릭하십시오 및 필드 옵션을 편집할 수있습니다."; +$LANG["notify_multi_field_updated"] = "이 필드는 업데이 트되었습니다. 를 구성할 수있을 것입니다 양식 필드를 설정 후 옵션을 누릅니다."; +$LANG["notify_multiple_fields_found"] = "여러 요소를이 필드에 이름 ({\$field_name})를 발견했다. 만약 귀하의 페이지를 하나의 양식 이상이있는 경우 또는 실수로 다른 사용자의 형태와 동일한의 이름이 문제가 발생할 수있습니다. 선택하십시오 당신이 하나를 원하는 아래의 목록에서."; +$LANG["notify_new_default_view_created"] = "모든 양식 필드를 포함하는 새로운 기본보기가 생성되었습니다."; +$LANG["notify_new_submission_created"] = "제출이 생성되었습니다. 당신은 아래를 수정할 수 있습니다."; +$LANG["notify_no_account_id_in_sessions"] = "아무 사용자 계정 ID를 세션에서 발견됐다. 잠시 후 다시 아래에서 로그 인해주세요."; +$LANG["notify_no_api_installed"] = "당신이 API를 설치하지 않은"; +$LANG["notify_no_client_permissions"] = "아무 설정을 수정할 수없습니다."; +$LANG["notify_no_email_template_selected"] = "제발 이메일 템플릿을 선택합니다."; +$LANG["notify_no_emails_defined"] = "아니 이메일을 해당 양식에 대한 정의되었습니다. 새 하나, 아래의 버튼을 추가하려면 클릭하십시오."; +$LANG["notify_no_field_settings"] = "이 필드 유형은 추가 설정이 포함되어 있지 않습니다."; +$LANG["notify_no_fields_in_tab"] = "이 탭은 모든 필드가 포함되어 있지 않습니다."; +$LANG["notify_no_option_lists"] = "정의된 옵션 목록이 없습니다. 새로 만들 아래의 버튼을 클릭하십시오."; +$LANG["notify_no_test_submission"] = "양식 도구는 아직 성공적으로 테스트를 제출받지 못했다."; +$LANG["notify_no_user_email_fields_configured"] = "참고 : 만약 당신이 양식에 포함된 모든 이메일 주소로 이메일을 보내려면, 먼저 구성하는 양식을 이메일 입력란에 필요합니다."; +$LANG["notify_no_views"] = "당신의 양식은 어떤보기가 설정되지 않습니다! 당신은 폼 데이터를 관리하기 위해 적어도 하나의보기가 필요합니다."; +$LANG["notify_no_views_assigned_to_client_form"] = "그것은 사용자 계정에 어떠한 형태의 조회, 그래서 당신은 모든 데이터를 볼 수 없을 것입니다 할당되지 않은 경우에 나타납니다. 자세한 도움을 관리자에게 문의하십시오."; +$LANG["notify_no_views_defined"] = "당신은 어떤보기가 정의한하지 않습니다. 하나 이상의보기가 생성하지 않는 한이 양식의 제출을​​ 볼 수 없습니다. 기본보기를 생성하려면 아래 버튼을 클릭하십시오."; +$LANG["notify_option_list_deleted"] = "옵션 목록은 삭제되었습니다."; +$LANG["notify_option_list_updated"] = "옵션 목록은 업데이 트되었습니다."; +$LANG["notify_public_form_omit_list_updated"] = "클라이언트가 업데이 트되었습니다이 양식에 대한 목록을 생략하면됩니다."; +$LANG["notify_public_view_omit_list_updated"] = "클라이언트가 업데이 트되었습니다이보기에 대한 목록을 생략하면됩니다."; +$LANG["notify_required_admin_pages"] = "다음 페이지 관리자 메뉴가 필요합니다 : {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "그래서 우리는 로그아웃했다 죄송합니다, 거기에 얼마 동안 어떤 활동을 안했다. 잠시 후 다시 아래에서 로그 인해주세요."; +$LANG["notify_setup_options_updated"] = "설치 옵션이 업데이 트되었습니다."; +$LANG["notify_smart_fill_field_not_found"] = "우리는이 이름 ({\$field_name}) 를들)에 지정된 양식 (의 필드를 찾을 수 없었습니다. 당신이 중 하나를 수동으로 아래의 입력란에 입력을 클릭하거나 저장 버튼을 클릭 건너뛰기이 필드를 편집할 수 설정할 수있습니다."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "들)이 성공적으로 업로드되었습니다 귀하의 파일 (. 다시 시도해 스마트 채움 버튼을 클릭하십시오. 이 단계가 실패하면, 당신은 manally 나중에이 단계를 구성하는 양식 필드를 생략해야합니다."; +$LANG["notify_smart_fill_submitted"] = "양식을 제출되었습니다. 귀하의 양식 필드 옵션의 숫자의 크기에 따라 시간이 좀 걸릴 수있습니다."; +$LANG["notify_smart_fill_upload_fields_fail"] = "미안 해요, 하나 이상의 입력 파일의 이상 업로드할 수없습니다. 이 단계를 구성하는 필드를 수동으로 건너가 필요합니다."; +$LANG["notify_submission_and_files_deleted"] = "제출 및 기타 (들)과 관련된 파일이 성공적으로 삭제되었습니다."; +$LANG["notify_submission_copied"] = "제출이 복사되었습니다."; +$LANG["notify_submission_copied_edit"] = "제출이 복사되었습니다. 아래에서 편집 할 수 있습니다."; +$LANG["notify_submission_deleted"] = "제출이 성공적으로 삭제되었습니다."; +$LANG["notify_submission_deleted_with_problems"] = "제출하지만, 삭제되었다 다음과 같은 문제는 다음과 같은 파일 (들)을 삭제하려고 시도하는가 발생했습니다 :"; +$LANG["notify_submission_id_not_found"] = "제출 ID를 찾을 수없습니다."; +$LANG["notify_submission_not_updated"] = "제출 업데이 트되지 않을 수있습니다."; +$LANG["notify_submissions_and_files_deleted"] = "제출 및 기타 (들)와 관련된 파일이 성공적으로 삭제되었습니다."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} 개의 제출물이 복사되었습니다."; +$LANG["notify_submissions_deleted"] = "제출이 성공적으로 삭제되었습니다."; +$LANG["notify_submissions_deleted_with_problems"] = "제출하지만, 삭제된 다음과 같은 문제는 다음과 같은 파일 (들)을 삭제하려고 시도하는가 발생했습니다 :"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "테스트 이메일을 보낼 수없습니다."; +$LANG["notify_theme_cache_folder_not_writable"] = "이 테마의 캐시 폴더에 쓰기 권한이없습니다. 주문 있음, {\$folder} 폴더 전체를 읽을 필요로 쓰기 권한이 테마를 사용합니다."; +$LANG["notify_theme_list_updated"] = "테마 목록을 업데이 트되었습니다."; +$LANG["notify_themes_settings_updated"] = "테마 설정이 업데이 트되었습니다."; +$LANG["notify_view_deleted"] = "보기가 삭제되었습니다."; +$LANG["notify_view_group_deleted"] = "보기 그룹이 삭제되었습니다."; +$LANG["notify_view_missing_columns"] = "죄송합니다! 죄송합니다,이보기는 아직 완전히 설치되지 않았습니다."; +$LANG["notify_view_missing_columns_admin_fix"] = "여기를 클릭하십시오 입력란이 페이지에 열로 나타납니다 지정할 수 있습니다."; +$LANG["notify_view_updated"] = "보기가 업데이 트되었습니다."; +$LANG["notify_your_email_sent"] = "귀하의 이메일을 성공적으로 전송되었습니다."; +$LANG["phrase_100_per_page"] = "페이 지당 100"; +$LANG["phrase_10_per_page"] = "페이 지당 10"; +$LANG["phrase_15_per_page"] = "15 페이 지당"; +$LANG["phrase_1_direct"] = "1. 직접"; +$LANG["phrase_1char"] = "1 챠"; +$LANG["phrase_20_per_page"] = "20 페이 지당"; +$LANG["phrase_25_per_page"] = "페이 지당 25"; +$LANG["phrase_2_code"] = "2. 코드"; +$LANG["phrase_2_columns"] = "이 열"; +$LANG["phrase_2chars"] = "이 문자"; +$LANG["phrase_3_columns"] = "3 열"; +$LANG["phrase_4_columns"] = "4 열"; +$LANG["phrase_50_per_page"] = "페이 지당 50"; +$LANG["phrase_accepting_submissions"] = "(접수 제출)"; +$LANG["phrase_access_admin_account_c"] = "당신은 여기에 귀하의 관리 계정에 액세스할 수있습니다 :"; +$LANG["phrase_access_type"] = "액세스 유형"; +$LANG["phrase_account_info"] = "계정 정보"; +$LANG["phrase_account_settings"] = "계정 설정"; +$LANG["phrase_action_needed"] = "액션 필요"; +$LANG["phrase_add_client"] = "클라이언트 추가"; +$LANG["phrase_add_client_menu"] = "고객 메뉴 추가"; +$LANG["phrase_add_default_settings_rightarrow"] = "기본 설정을 추가»"; +$LANG["phrase_add_field"] = "필드 추가"; +$LANG["phrase_add_fields"] = "필드 추가"; +$LANG["phrase_add_fields_rightarrow"] = "필드 (들)»추가"; +$LANG["phrase_add_form"] = "Form을 추가합니다"; +$LANG["phrase_add_form_external"] = "양식 추가 - 외부"; +$LANG["phrase_add_form_internal"] = "양식 추가 - 내부"; +$LANG["phrase_add_new_group_rightarrow"] = "새 그룹을 추가»"; +$LANG["phrase_add_num_rows"] = "( \$) 행 {\$number} 번호 추가"; +$LANG["phrase_add_row"] = "행 추가»"; +$LANG["phrase_add_submission_button"] = "제출 버튼 추가"; +$LANG["phrase_add_view_rightarrow"] = "보기 추가»"; +$LANG["phrase_adding_multi_page_form"] = "API를 통해 다중 페이지 양식을 추가"; +$LANG["phrase_adding_single_page_form"] = "API를 단일 페이지에 양식을 추가"; +$LANG["phrase_admin_menu"] = "관리자 메뉴"; +$LANG["phrase_admin_only"] = "관리자 전용"; +$LANG["phrase_admin_panel"] = "관리 패널"; +$LANG["phrase_administrator_theme"] = "관리자 테마"; +$LANG["phrase_advanced_settings_rightarrow"] = "고급 설정»"; +$LANG["phrase_all_X_results_selected"] = "전체 {\$numresults} 결과 선정"; +$LANG["phrase_all_clients"] = "모든 고객"; +$LANG["phrase_all_clients_except_c"] = "를 제외한 모든 클라이언트 :"; +$LANG["phrase_all_clients_have_access"] = "(모든 고객)에 액세스할 수"; +$LANG["phrase_all_fields"] = "전체 분야"; +$LANG["phrase_all_fields_displayed"] = "모든 필드가 표시됩니다"; +$LANG["phrase_all_statuses"] = "전체 상태"; +$LANG["phrase_all_submissions"] = "모든 제출"; +$LANG["phrase_allow_fields_edited"] = "허용 필드를 편집할 수"; +$LANG["phrase_alphanumeric"] = "영숫자 (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API는 버전"; +$LANG["phrase_apply_timezone_offset"] = "시간대 오프셋을 적용"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "할당 나열된 모든 고객 계정 {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "할당 나열된 모든 고객 계정 {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "끝에"; +$LANG["phrase_at_start"] = "시작에서"; +$LANG["phrase_author_link"] = "저자 링크"; +$LANG["phrase_auto_disable_account"] = "후 자동 해제 계정 #은 로그인 시도 실패"; +$LANG["phrase_auto_size"] = "자동 크기"; +$LANG["phrase_available_clients"] = "사용 가능한 클라이언트"; +$LANG["phrase_available_fields"] = "해당 입력란"; +$LANG["phrase_available_option_lists"] = "사용 가능한 옵션 목록"; +$LANG["phrase_available_swatches"] = "사용 가능한 견본"; +$LANG["phrase_available_swatches_c"] = "사용 가능한 견본 :"; +$LANG["phrase_available_tabs"] = "사용 가능한 탭"; +$LANG["phrase_available_views"] = "사용 가능한 조회"; +$LANG["phrase_awaiting_form_submission"] = "양식 제출을 기다리고있습니다."; +$LANG["phrase_back_to_field_list"] = "«이전 필드 목록"; +$LANG["phrase_back_to_search_results"] = "다시 검색 결과를"; +$LANG["phrase_base_view_on"] = "에 기본보기 ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "로그인 정보 변경"; +$LANG["phrase_characters_limit_p"] = "문자 제한하고 있습니다."; +$LANG["phrase_check_db_settings_try_again"] = "제발 두 번 다시는 당신의 데이터베이스 설정을 클릭하고 계속 버튼을 확인합니다."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "URL을 체크"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up을"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "지우기 생략리스트"; +$LANG["phrase_client_account_settings"] = "고객 계정 설정"; +$LANG["phrase_client_field"] = "고객 필드"; +$LANG["phrase_client_map_filters"] = "고객 맵 필터»"; +$LANG["phrase_client_may_edit"] = "클라이언트를 편집할 수있습니다"; +$LANG["phrase_client_menu"] = "고객 메뉴"; +$LANG["phrase_clients_can_access_form"] = "고객이 누군지 양식으로 이동할수있습니다"; +$LANG["phrase_clients_can_access_view"] = "클라이언트는 누가보기에 액세스할 수있습니다"; +$LANG["phrase_clients_cannot_access_form"] = "고객이 누군지 양식에 액세스할 수없습니다"; +$LANG["phrase_clients_cannot_access_view"] = "클라이언트는 누가보기에 액세스할 수없습니다"; +$LANG["phrase_clients_may_edit"] = "클라이언트를 편집할 수있습니다"; +$LANG["phrase_code_c"] = "오류 코드 :"; +$LANG["phrase_code_markup_field"] = "코드 / 마크업 필드"; +$LANG["phrase_code_markup_type"] = "코드 / 마크업 유형"; +$LANG["phrase_codes_c"] = "오류 코드 :"; +$LANG["phrase_column_width"] = "열 너비"; +$LANG["phrase_company_name"] = "회사 이름"; +$LANG["phrase_configure_form_email_fields"] = "구성 양식을 이메일 입력란에"; +$LANG["phrase_confirm_folder_url_match"] = "확인 폴더의 URL이 검색"; +$LANG["phrase_connect_rows"] = "행 연결"; +$LANG["phrase_copy_email_settings_from"] = "복사 이메일 설정에서 ..."; +$LANG["phrase_copy_settings_from"] = "복사 설정에서 ..."; +$LANG["phrase_core_fields"] = "코어 필드"; +$LANG["phrase_core_version"] = "코어 버전"; +$LANG["phrase_create_account"] = "계정 만들기"; +$LANG["phrase_create_admin_account"] = "관리자 계정 만들기"; +$LANG["phrase_create_config_file"] = "구성 파일 만들기"; +$LANG["phrase_create_database_tables"] = "데이터베이스 테이블 만들기"; +$LANG["phrase_create_default_view"] = "기본보기 만들기"; +$LANG["phrase_create_file"] = "파일 만들기"; +$LANG["phrase_create_group"] = "그룹 만들기"; +$LANG["phrase_create_new_email"] = "새 전자 메일 만들기"; +$LANG["phrase_create_new_menu"] = "새 메뉴 만들기"; +$LANG["phrase_create_new_option_list"] = "새 옵션리스트 만들기"; +$LANG["phrase_create_new_option_list_group"] = "새 옵션리스트 그룹 만들기"; +$LANG["phrase_create_new_option_list_rightarrow"] = "새 옵션리스트 만들기»"; +$LANG["phrase_create_new_view"] = "새보기 만들기"; +$LANG["phrase_create_new_view_group"] = "뉴 뷰 그룹 만들기"; +$LANG["phrase_custom_display_format"] = "사용자 지정 표시 형식"; +$LANG["phrase_custom_recipient"] = "사용자 지정받는 사람"; +$LANG["phrase_custom_url"] = "사용자 설정 URL"; +$LANG["phrase_dark_blue"] = "다크 블루"; +$LANG["phrase_data_type"] = "데이터 유형"; +$LANG["phrase_database_hostname"] = "데이터베이스 호스트 이름"; +$LANG["phrase_database_name"] = "데이터베이스 이름"; +$LANG["phrase_database_password"] = "데이터베이스 비밀 번호"; +$LANG["phrase_database_settings"] = "데이터베이스 설정"; +$LANG["phrase_database_setup"] = "데이터베이스 설치"; +$LANG["phrase_database_table_prefix"] = "데이터베이스 테이블 접두사"; +$LANG["phrase_database_username"] = "데이터베이스 사용자 이름"; +$LANG["phrase_date_format"] = "날짜 형식"; +$LANG["phrase_db_column"] = "DB를 열"; +$LANG["phrase_db_setup_page_4"] = "4. 데이터베이스 설치"; +$LANG["phrase_default_client_account_theme"] = "기본 고객 계정 테마"; +$LANG["phrase_default_date_field_search_value"] = "기본 날짜 필드 검색 값"; +$LANG["phrase_default_language"] = "기본 언어"; +$LANG["phrase_default_menu"] = "기본 메뉴"; +$LANG["phrase_default_sessions_timeout"] = "기본 세션 시간 초과"; +$LANG["phrase_default_sort_order"] = "기본 정렬 순서"; +$LANG["phrase_default_tab_label"] = "데이터"; +$LANG["phrase_default_theme"] = "기본 테마"; +$LANG["phrase_default_value"] = "기본값"; +$LANG["phrase_default_values"] = "기본값"; +$LANG["phrase_default_values_new_submissions"] = "새로운 제출물에 대한 기본값"; +$LANG["phrase_delete_field"] = "필드 삭제"; +$LANG["phrase_delete_form"] = "삭제 양식"; +$LANG["phrase_delete_row"] = "행 삭제"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "관련 파일을 삭제하면 삭제 제출"; +$LANG["phrase_delete_view"] = "뷰 삭제"; +$LANG["phrase_disconnect_rows"] = "행 분리"; +$LANG["phrase_display_email"] = "표시 이메일"; +$LANG["phrase_display_name"] = "표시 이름"; +$LANG["phrase_display_text"] = "표시 문자"; +$LANG["phrase_display_value"] = "표시 값"; +$LANG["phrase_edit_admin_menu"] = "편집 관리자 메뉴"; +$LANG["phrase_edit_client"] = "편집 클라이언트"; +$LANG["phrase_edit_client_menu"] = "편집 클라이언트 메뉴"; +$LANG["phrase_edit_email_template"] = "이메일 템플릿 편집"; +$LANG["phrase_edit_field"] = "편집 필드"; +$LANG["phrase_edit_field_c"] = "필드를 편집합니다 :"; +$LANG["phrase_edit_form"] = "편집 양식"; +$LANG["phrase_edit_form_access_type_b"] = "[양식 액세스 유형을 편집]"; +$LANG["phrase_edit_option_list"] = "옵션 목록을 편집합니다"; +$LANG["phrase_edit_submission"] = "수정 제출"; +$LANG["phrase_edit_submission_label"] = "제출 레이블을 편집합니다"; +$LANG["phrase_edit_view"] = "편집보기"; +$LANG["phrase_email_format"] = "이메일 형식"; +$LANG["phrase_email_settings"] = "이메일 설정"; +$LANG["phrase_email_template"] = "이메일 템플릿"; +$LANG["phrase_email_template_name"] = "이메일 템플릿 이름"; +$LANG["phrase_error_learn_more"] = "이 오류에 대해 자세히 알아보십시오."; +$LANG["phrase_error_text_intro"] = "제발들)을 다시 제출하십시오 다음과 같은 오류 (수정 :"; +$LANG["phrase_errors_learn_more"] = "오류 코드에 대한 자세한 내용은 클릭하세요."; +$LANG["phrase_event_trigger"] = "이벤트 트리거"; +$LANG["phrase_external_form"] = "외부 서식"; +$LANG["phrase_external_form_info"] = "외부 양식 정보"; +$LANG["phrase_external_your_own_form"] = "외부 (자신의 양식)"; +$LANG["phrase_field_comments"] = "필드 설명"; +$LANG["phrase_field_label"] = "필드 레이블"; +$LANG["phrase_field_options"] = "필드 옵션"; +$LANG["phrase_field_size"] = "필드 크기"; +$LANG["phrase_field_skipped"] = "필드 건너뜀"; +$LANG["phrase_field_specific_settings"] = "필드 - 특정 설정"; +$LANG["phrase_field_type"] = "필드 종류"; +$LANG["phrase_field_type_no_validation"] = "이 필드 형식에 사용할 유효성 검사 규칙이 있습니다 없습니다."; +$LANG["phrase_field_types"] = "필드 종류"; +$LANG["phrase_field_value"] = "필드 값"; +$LANG["phrase_field_values_to_display_values"] = "필드 값»디스플레이 값"; +$LANG["phrase_final_touches_page_6"] = "6. 마지막 처리"; +$LANG["phrase_finalize_form"] = "마무리 양식"; +$LANG["phrase_first_name"] = "이름"; +$LANG["phrase_footer_text"] = "바닥글 텍스트"; +$LANG["phrase_for_any_form_submission"] = "어떤 양식 제출"; +$LANG["phrase_for_view_submissions"] = "보기 제출 전용 :"; +$LANG["phrase_forgot_password"] = "비밀 번호를 잊으 셨나요?"; +$LANG["phrase_form_already_selected"] = "양식은 이미 선택"; +$LANG["phrase_form_email_field_b_c"] = "[양식 이메일 필드] :"; +$LANG["phrase_form_email_field_configuration"] = "이메일 폼 필드 구성"; +$LANG["phrase_form_email_fields"] = "양식 이메일 입력란"; +$LANG["phrase_form_field"] = "양식 필드"; +$LANG["phrase_form_field_contents"] = "양식 필드 내용"; +$LANG["phrase_form_field_name"] = "폼 필드 이름"; +$LANG["phrase_form_field_placeholders"] = "양식 필드 자리 표시"; +$LANG["phrase_form_fields"] = "양식 필드"; +$LANG["phrase_form_info"] = "양식 정보"; +$LANG["phrase_form_info_2"] = "2. 양식 정보"; +$LANG["phrase_form_list"] = "양식 목록"; +$LANG["phrase_form_name"] = "폼 이름"; +$LANG["phrase_form_page"] = "양식 페이지"; +$LANG["phrase_form_placeholders"] = "양식을 나타내지 않음"; +$LANG["phrase_form_submission"] = "신청서 제출"; +$LANG["phrase_form_submissions"] = "신청서 제출"; +$LANG["phrase_form_type"] = "양식 유형"; +$LANG["phrase_form_url"] = "양식 홈페이지"; +$LANG["phrase_form_urls"] = "폼 URL을"; +$LANG["phrase_forms_assigned_to_any_account"] = "모든 계정에 할당된 양식"; +$LANG["phrase_forms_page_default_message"] = "양식 페이지 기본 메시지"; +$LANG["phrase_ft_installation"] = "양식 도구를 설치 스크립트"; +$LANG["phrase_full_width"] = "전폭"; +$LANG["phrase_getting_started"] = "시작"; +$LANG["phrase_global_placeholders"] = "글로벌 나타내지 않음"; +$LANG["phrase_group_name"] = "그룹 이름"; +$LANG["phrase_group_options_q"] = "그룹 옵션?"; +$LANG["phrase_group_rows"] = "그룹 행"; +$LANG["phrase_have_fun"] = "재밌게 보내!"; +$LANG["phrase_highlight_colour"] = "강조 색상"; +$LANG["phrase_html_email"] = "HTML 이메일"; +$LANG["phrase_html_template"] = "HTML을 템플릿"; +$LANG["phrase_images_media"] = "이미지 / 미디어"; +$LANG["phrase_import_option_list_rightarrow"] = "가져오기 옵션 목록»"; +$LANG["phrase_input_length"] = "입력 시간"; +$LANG["phrase_installation_help"] = "설치 도움말"; +$LANG["phrase_internal_form"] = "내부 양식"; +$LANG["phrase_ip_address"] = "IP 주소"; +$LANG["phrase_is_multi_page_form_q"] = "이것은 다중 페이지 형식인가요?"; +$LANG["phrase_label_response_placeholders"] = "라벨 / 응답 개체 틀"; +$LANG["phrase_large_300px"] = "대형 (300px)"; +$LANG["phrase_large_400px"] = "대형 (400px)"; +$LANG["phrase_last_7_days"] = "지난 7 일"; +$LANG["phrase_last_logged_in"] = "에서 마지막으로 로그온한"; +$LANG["phrase_last_modified"] = "수정일"; +$LANG["phrase_last_modified_date"] = "마지막으로 수정된 날짜"; +$LANG["phrase_last_name"] = "성"; +$LANG["phrase_letters_only"] = "문자 전용"; +$LANG["phrase_light_brown"] = "라이트 브라운"; +$LANG["phrase_limit_email_content"] = "보기에서 필드에 이메일 내용 제한"; +$LANG["phrase_loading_ellipsis"] = "로드 중입니다 ..."; +$LANG["phrase_log_in"] = "로그인"; +$LANG["phrase_login_as_user"] = "이 사용자로 로그인"; +$LANG["phrase_login_info"] = "로그인 정보"; +$LANG["phrase_login_page"] = "로그인 페이지"; +$LANG["phrase_login_panel_c"] = "로그인 패널 :"; +$LANG["phrase_login_panel_leftarrows"] = "«로그인 패널"; +$LANG["phrase_login_password"] = "로그인 비밀 번호"; +$LANG["phrase_login_username"] = "로그인 사용자 이름"; +$LANG["phrase_logo_link_url"] = "로고 링크 URL"; +$LANG["phrase_logout_url"] = "로그아웃 URL을"; +$LANG["phrase_main_nav"] = "메인 네비게이션"; +$LANG["phrase_main_settings"] = "메인 설정"; +$LANG["phrase_manage_client"] = "고객 관리"; +$LANG["phrase_manage_client_omit_list"] = "관리 클라이언트 목록을 생략"; +$LANG["phrase_max_file_size"] = "최대 파일 크기"; +$LANG["phrase_max_length"] = "최대 길이"; +$LANG["phrase_max_length_words_chars"] = "- 최대 길이 (단어 / 문자)"; +$LANG["phrase_may_add_submissions"] = "제출을 추가할 수 있습니다"; +$LANG["phrase_may_copy_submissions"] = "제출물을 복사 할 수 있습니다."; +$LANG["phrase_may_delete_submissions"] = "제출을 삭제할 수 있습니다"; +$LANG["phrase_medium_150px"] = "중간 (150px)"; +$LANG["phrase_medium_200px"] = "중간 (200px)"; +$LANG["phrase_menu_name"] = "메뉴 이름"; +$LANG["phrase_menu_type"] = "메뉴 유형"; +$LANG["phrase_min_password_length"] = "최소 암호 길이"; +$LANG["phrase_module_description"] = "모듈 설명"; +$LANG["phrase_module_info"] = "모듈 정보"; +$LANG["phrase_module_nav"] = "모듈 네비게이션"; +$LANG["phrase_month_to_date"] = "날짜 월"; +$LANG["phrase_multi_select"] = "다중 선택"; +$LANG["phrase_multi_select_dropdown"] = "멀티 드롭 다운 메뉴를 선택하십시오"; +$LANG["phrase_multiple_fields_found"] = "여러 개의 필드를 찾았어요!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "이름 / 성"; +$LANG["phrase_new_blank_email"] = "새로운 빈 이메일을"; +$LANG["phrase_new_blank_option_list"] = "비어있는 새 옵션리스트"; +$LANG["phrase_new_blank_view"] = "비어있는 새보기"; +$LANG["phrase_new_ft_installation"] = "새 양식 도구 설치"; +$LANG["phrase_new_option_list"] = "새 옵션리스트"; +$LANG["phrase_new_password"] = "새 비밀 번호"; +$LANG["phrase_new_password_reenter"] = "새 암호를 (다시 입력)하시기 바랍니다"; +$LANG["phrase_new_view"] = "새보기"; +$LANG["phrase_new_view_all_fields"] = "뉴 뷰 - 전체 분야"; +$LANG["phrase_next_client"] = "다음 클라이언트»"; +$LANG["phrase_next_field"] = "다음 필드»"; +$LANG["phrase_next_form"] = "다음 양식»"; +$LANG["phrase_next_view"] = "다음보기»"; +$LANG["phrase_no_clients"] = "아니 클라이언트"; +$LANG["phrase_no_limit"] = "제한 없음"; +$LANG["phrase_no_offset"] = "아니 오프셋"; +$LANG["phrase_no_option_lists_available"] = "아무 옵션을 사용할 수 있습니다 나열하지 않습니다."; +$LANG["phrase_no_views"] = "아니오 조회"; +$LANG["phrase_no_views_with_filters_p"] = "(필터와 함께 더보기 정의하지 않음)"; +$LANG["phrase_none_not_recommended"] = "연중 무휴 ()하지 않는 것이 좋습니다"; +$LANG["phrase_not_assigned_to_option_list"] = "이 필드는 옵션 목록에 할당되지 않습니다."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "평등하지 않습니다"; +$LANG["phrase_not_found"] = "를 찾을 수없습니다!"; +$LANG["phrase_not_like"] = "같지는 않지만"; +$LANG["phrase_not_visible_to_client"] = "(클라이언트에게 표시하지 않음)"; +$LANG["phrase_num_clients_per_page"] = "페이 지당 인분 클라이언트"; +$LANG["phrase_num_emails_per_page"] = "인분 이메일 페이지 당"; +$LANG["phrase_num_fields"] = "필드 수"; +$LANG["phrase_num_forms_per_page"] = "인분 Forms 페이지 당"; +$LANG["phrase_num_menus_per_page"] = "인분 메뉴 페이지 당"; +$LANG["phrase_num_modules_per_page"] = "인분 모듈 페이지 당"; +$LANG["phrase_num_option_lists_per_page"] = "페이 지당 NUM 옵션리스트"; +$LANG["phrase_num_options"] = "숫자판 옵션"; +$LANG["phrase_num_rows"] = "NUM 개의 행"; +$LANG["phrase_numbers_only"] = "숫자"; +$LANG["phrase_often_localhost"] = "(종종 "") localhost를"; +$LANG["phrase_on_form_submission"] = "양식 제출"; +$LANG["phrase_one_char_number"] = "적어도 하나의 문자는 숫자 (0-9)입니다"; +$LANG["phrase_one_char_upper"] = "적어도 하나의 문자는 대문자입니다"; +$LANG["phrase_one_special_char"] = "{\$chars} 중 적어도 하나"; +$LANG["phrase_only_specific_clients_have_access"] = "(단 특정 클라이언트)에 액세스할 수"; +$LANG["phrase_open_form_in_dialog"] = "대화 창에서 열기 양식"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "새 탭 / 창에서이 양식을 엽니다"; +$LANG["phrase_option_list"] = "옵션리스트"; +$LANG["phrase_option_list_name"] = "옵션 목록 이름"; +$LANG["phrase_option_list_or_contents"] = "옵션 목록 / 내용"; +$LANG["phrase_option_lists"] = "옵션 목록"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "페이지 타이틀"; +$LANG["phrase_pass_on"] = "패스"; +$LANG["phrase_password_min"] = "그것은 / b 정보> 캐릭터 적어도 {\$length} 되어야합니다."; +$LANG["phrase_password_one_number"] = "그것은 적어도 하나의 숫자 (0-9) 포함되어야합니다."; +$LANG["phrase_password_one_uppercase"] = "그것은 적어도 하나의 대문자 문자를 포함해야합니다."; +$LANG["phrase_password_requirements_c"] = "비밀 번호 요구 사항 :"; +$LANG["phrase_password_reset"] = "비밀 번호 재설정"; +$LANG["phrase_password_special_char"] = "그것은 적어도 다음 중 하나를 문자 : {\$chars} 가 포함되어야합니다"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "권한 / 기타 설정"; +$LANG["phrase_permitted_file_types"] = "허용되는 파일 형식"; +$LANG["phrase_phone_number"] = "전화 번호"; +$LANG["phrase_phone_number_format"] = "전화 번호 형식"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini 파일이 업로드 허용되는 최대 파일 크기 :"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP 버전"; +$LANG["phrase_please_confirm"] = "확인하세요"; +$LANG["phrase_please_enter_license_key"] = "라이센스 키를 입력하십시오"; +$LANG["phrase_please_select"] = "선택하시기 바랍니다"; +$LANG["phrase_please_select_form"] = "양식을 선택하시기 바랍니다"; +$LANG["phrase_prev_client"] = "«이전 클라이언트"; +$LANG["phrase_prev_form"] = "«이전 양식"; +$LANG["phrase_prevent_password_reuse"] = "# 마지막으로 암호를 방지 재사용"; +$LANG["phrase_previous_field"] = "«이전 필드"; +$LANG["phrase_previous_page"] = "이전 페이지"; +$LANG["phrase_previous_view"] = "«이전보기"; +$LANG["phrase_program_name"] = "프로그램 이름"; +$LANG["phrase_public_form_omit_list"] = "공공 양식을 생략리스트"; +$LANG["phrase_public_view_omit_list"] = "공공 생략리스트보기"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "다음 쿼리에 문제가 발생했습니다 :"; +$LANG["phrase_radio_buttons"] = "라디오 버튼"; +$LANG["phrase_random_form_submission"] = "임의 양식 제출"; +$LANG["phrase_re_enter_password"] = "비밀 번호 다시 입력"; +$LANG["phrase_recipient_type"] = "받는 사람 유형"; +$LANG["phrase_redirect_url"] = "리디렉션 URL"; +$LANG["phrase_refresh_list"] = "목록 새로 고침"; +$LANG["phrase_refresh_module_list"] = "새로고침 모듈 목록"; +$LANG["phrase_refresh_page"] = "새로 고침 페이지"; +$LANG["phrase_refresh_theme_list"] = "새로고침 테마리스트"; +$LANG["phrase_register_new_email"] = "등록 새 이메일"; +$LANG["phrase_remaining_characters"] = "남은 자"; +$LANG["phrase_remaining_words"] = "나머지 단어"; +$LANG["phrase_remove_tabs"] = "제거 탭"; +$LANG["phrase_required_password_chars"] = "필수 암호 문자"; +$LANG["phrase_resend_test_submission"] = "재발송 시험 제출"; +$LANG["phrase_return_form_list"] = "양식 목록으로 돌아가기"; +$LANG["phrase_row_selected"] = "{\$num_rows} 개 행을 선택한"; +$LANG["phrase_rows_selected"] = "{\$num_rows} 행 선택"; +$LANG["phrase_sample_data"] = "샘플 데이터"; +$LANG["phrase_save_changes"] = "변경 사항 저장"; +$LANG["phrase_search_keyword"] = "검색 키워드"; +$LANG["phrase_security_settings"] = "보안 설정"; +$LANG["phrase_select_all"] = "모두 선택"; +$LANG["phrase_select_all_X_results"] = "전체 선택 {\$numresults} 결과"; +$LANG["phrase_select_all_on_page"] = "모두 선택 페이지에서"; +$LANG["phrase_select_date"] = "날짜 선택"; +$LANG["phrase_select_field"] = "필드를 선택"; +$LANG["phrase_select_swatch"] = "견본을 선택합니다"; +$LANG["phrase_selected_clients"] = "선택된 클라이언트"; +$LANG["phrase_selected_views"] = "선택된 조회"; +$LANG["phrase_send_email"] = "이메일 보내기"; +$LANG["phrase_send_test_email"] = "테스트 이메일 보내기"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "세션 시간 초과"; +$LANG["phrase_setting_value"] = "값 설정"; +$LANG["phrase_setup_options"] = "설치 옵션"; +$LANG["phrase_show_all"] = "모두보기"; +$LANG["phrase_show_form"] = "양식보기"; +$LANG["phrase_size_large"] = "대형 (텍스트)"; +$LANG["phrase_size_medium"] = "매체 ( "= 256 문자)"; +$LANG["phrase_size_small"] = "소형 ( "= 20 문자)"; +$LANG["phrase_size_tiny"] = "작은 ( "= 5 문자)"; +$LANG["phrase_size_very_large"] = "아주 큰 (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "스킵 필드"; +$LANG["phrase_skip_step"] = "스킵 단계"; +$LANG["phrase_small_100px"] = "작게 (100px)"; +$LANG["phrase_small_80px"] = "소형 (80px)"; +$LANG["phrase_smart_fill"] = "스마트 채움"; +$LANG["phrase_smart_fill_fields_from_c"] = "에서 스마트 채움 분야 :"; +$LANG["phrase_smart_fill_user_documentation"] = "스마트 채움 사용자 설명서»"; +$LANG["phrase_sort_as"] = "일종의"; +$LANG["phrase_special_fields"] = "전문 분야"; +$LANG["phrase_standard_fields"] = "표준 필드"; +$LANG["phrase_standard_filters"] = "표준 필터»"; +$LANG["phrase_step_1"] = "1 단계"; +$LANG["phrase_step_2"] = "2 단계"; +$LANG["phrase_step_3"] = "3 단계"; +$LANG["phrase_step_4"] = "4 단계"; +$LANG["phrase_step_5"] = "5 단계"; +$LANG["phrase_step_6"] = "6 단계"; +$LANG["phrase_strip_tags_in_submissions"] = "양식 제출에 스트립 태그"; +$LANG["phrase_subject_line"] = "제목 선"; +$LANG["phrase_submission_date"] = "제출 일자"; +$LANG["phrase_submission_id"] = "제출 자료 ID"; +$LANG["phrase_submission_made"] = "제출 제출 : {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "접수 유형"; +$LANG["phrase_submissions_per_page"] = "페이 지당 제출"; +$LANG["phrase_system_check"] = "시스템 확인"; +$LANG["phrase_system_fields_no_validation"] = "당신은 시스템 필드에 유효성 검사를 추가할 수 없습니다."; +$LANG["phrase_system_time_offset"] = "시스템 시간 오프셋"; +$LANG["phrase_tab_label"] = "탭 레이블"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "테스트 폴더 사용 권한"; +$LANG["phrase_test_submission"] = "시험 제출"; +$LANG["phrase_test_submission_3"] = "3. 시험 제출"; +$LANG["phrase_test_submission_received"] = "시험 제출받은"; +$LANG["phrase_text_and_html"] = "텍스트 및 HTML을"; +$LANG["phrase_text_email"] = "텍스트 이메일"; +$LANG["phrase_text_template"] = "텍스트 템플릿"; +$LANG["phrase_the_previous_month"] = "이전 달"; +$LANG["phrase_theme_description"] = "테마 설명"; +$LANG["phrase_theme_info"] = "테마 정보"; +$LANG["phrase_tiny_30px"] = "작은 (30px)"; +$LANG["phrase_tiny_50px"] = "작은 (50 픽셀)"; +$LANG["phrase_total_results_c"] = "총 검색 결과 :"; +$LANG["phrase_type_c"] = "오류 유형 :"; +$LANG["phrase_unselect_all"] = "전체 해제"; +$LANG["phrase_update_accounts"] = "계정 업데이트"; +$LANG["phrase_update_email_template"] = "업데이트 이메일 템플릿"; +$LANG["phrase_update_field"] = "필드 업데이트"; +$LANG["phrase_update_order"] = "업데이트 순서"; +$LANG["phrase_update_view"] = "업데이트보기"; +$LANG["phrase_upload_file"] = "파일 업로드"; +$LANG["phrase_upload_files"] = "파일 업로드"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "업로드 폴더 경로"; +$LANG["phrase_upload_folder_url"] = "업로드 폴더의 URL을"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "기본값을 사용?"; +$LANG["phrase_used_by_num_form_fields"] = "# 양식 필드로 사용"; +$LANG["phrase_uses_swatches"] = "견본을 사용하여"; +$LANG["phrase_valid_email"] = "올바른 이메일"; +$LANG["phrase_validation_error"] = "유효성 검사 오류"; +$LANG["phrase_validation_rule"] = "유효성 검사 규칙"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "그룹보기"; +$LANG["phrase_view_id"] = "뷰 ID"; +$LANG["phrase_view_name"] = "이름보기"; +$LANG["phrase_view_placeholders"] = "보기 나타내지"; +$LANG["phrase_view_submissions"] = "제출 내용보기"; +$LANG["phrase_view_uploaded_files"] = "보기 파일 업로드"; +$LANG["phrase_viewing_range"] = "[보기 {\$startnum} {\$endnum}로]"; +$LANG["phrase_when_sent"] = "언제 보내"; +$LANG["phrase_when_submission_is_deleted"] = "제출하면 삭제됩니다"; +$LANG["phrase_when_submission_is_edited"] = "제출 편집할 때"; +$LANG["phrase_who_can_access"] = "누가 액세스할 수 있습니까?"; +$LANG["phrase_word_limit_p"] = "단어 제한하고 있습니다."; +$LANG["phrase_year_to_date"] = "최신 년도"; +$LANG["phrase_yes_for_all_views"] = "예, 모든 조회에 대한"; +$LANG["phrase_yes_for_specific_views"] = "예, 특정보기에 대한"; +$LANG["phrase_your_account"] = "귀하의 계정"; +$LANG["phrase_your_email"] = "귀하의 이메일"; +$LANG["phrase_your_email_address"] = "귀하의 이메일 주소"; +$LANG["processing_form_disabled"] = "죄송합니다,이 양식을 비활성화되었습니다."; +$LANG["processing_form_incomplete"] = "죄송합니다,이 양식에 표시되지 않습니다 완전 양식 도구 내에서 설정할 수있습니다. 이 문제의 가장 큰 원인은 당신이 "form_tools_initialize_form"숨겨진 양식 필드를 제거하지만 ""양식을 추가 프로세스의 모든 단계를 완료하지 않았습니다.

    로그 인한 후 양식을 구성을 검토합니다."; +$LANG["processing_init_complete"] = "감사합니다! 귀하의 테스트를 성공적으로 연결해 제출되었습니다. 제발 양식 도구 행정 패널의 양식을 클릭하여 설정을 마무리 3 페이지의 양식에 담기 단계의 하단에있는 "새로 고침"버튼을 반환합니다."; +$LANG["processing_invalid_form_id"] = "죄송합니다, 이것은 유효한 양식 ID로 표시되지 않습니다."; +$LANG["processing_no_form_id"] = "process.php 양식을 필요로 처리를위한 ID입니다. 있는지 확인하십시오 양식의 이름은 "양식에 따라 합격의 form_tools_form_id"와 숨겨진 필드를 포함 ID입니다."; +$LANG["processing_no_form_url_for_recaptcha"] = "양식 도구를 어디에 그들이 제대로 captcha를 입력 리디렉션이 실패를 결정하는 데없습니다. 제발 숨겨진 필드에 이름을 form_tools_form_url 형태의 URL을 포함하는 전달합니다."; +$LANG["processing_no_post_vars"] = "process.php 모든 데이터를 수신하지 않습니다. 참고 : 귀하의 브라우저에서 직접 로드할 수없습니다이 스크립트.
    물론 양식 POST를 통해 전송되어 있는지 확인합니다."; +$LANG["processing_no_redirect_url"] = "접수가 제대로 처리했습니다,하지만 당신은이 양식에 대한 리디렉션 URL을 지정하지 않았습니다! 양식 도구 UI에서 양식을 수정하고 리디렉션 URL을 추가할 수있습니다."; +$LANG["special_language"] = "Korean"; +$LANG["special_language_locale"] = "Korean"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "모든 새 클라이언트 계정을 설정 및 사용 권한을 아래에 정의된로 만든 것입니다. 특정 클라이언트에 대한 클라이언트의 계정을 수정하고 자신의 설정 탭에서 설정을 재정의를 참조하십시오."; +$LANG["text_add_form_choose_integration_method"] = "당신은 양식 도구와 양식을 통합하는 데 사용하려는 방법을 선택합니다."; +$LANG["text_add_form_code_submission_benefits"] = "이 방법은 사용하는 양식 도구 API 의 주요 양식 도구 스크립트에 포함을. API는 가능한 한 간단하게 양식 도구와 양식을 통합하는 작업을하기 위해 도움이 기능을 제공합니다. 당신이 API를 사용하면 양식 제출 수 방법에 제한이 없습니다. 이 페이지에서 한 가지, 또는 페이지의 콘텐츠를 제출할 수 있습니다 당신은 사용자 정의 서버 쪽 유효성 검사, CAPTCHA 이미지를 추가할 수 있습니다 당신은 지금 정보를 제출하도록 선택할 있으나, 양식 도구 UI에 제출을 표시하는 그것을 말할 수 나중에 (확인 완료 제출물의 API 도움말 설명서의 섹션을)."; +$LANG["text_add_form_code_submission_drawbacks"] = "PHP를 통해 양식 데이터를 제출하기 위해서는 양식이 양식 도구 설치와 같은 웹 사이트에 위치해야합니다. 둘째, 비 기술 및 초보자 양식 도구 사용자를 위해,이 방법은 처음에는 위협 조금 수 있습니다. 하지만 당신을 도울 설명서 충분한은 단일 및 다중 페이지 양식을 (이것도 나중 단계에서 연결된) 통합을위한 두 가지 간단한 자습서를 포함하여,있다."; +$LANG["text_add_form_direct_submission_benefits"] = "이것은 양식 도구를 귀하의 양식을 제출하려면 가장 간단한 방법입니다. 그것은 PHP의 모든 지식을 필요로하지 않는 양식에만 아주 작은 변화가 필요합니다. 그것은 작은 형태의 어디에 당신이 데이터베이스에 대한 다음 정보를 제출할 때 "감사"페이지를 원하는 사용자를 리디렉션합니다 멋지 네요."; +$LANG["text_add_form_direct_submission_drawbacks"] = "이 제출 방법은 매우 사용은 간단합니다 그러나 더 복잡한 형태의 많은 컨트롤을 제공하지 않습니다. 다중 페이지 양식 또는 서버측 유효성 검사를 필요로 양식을보다 두 번째 방법에 적합한 위치 : 양식 도구 API를 통해 제출하십시오."; +$LANG["text_add_form_field_types1"] = "거의 완료! 이 페이지는 모든 양식 필드를 찾아 자신의 필드 형식을 결정하려고합니다. 시작하려면 오른쪽에있는 스마트 채움 버튼을 클릭합니다. 주의를 필요 문제 "액션 필요한"열을 나타납니다 - 당신은 모든 조치가 해결되어있을 때 진행하는 허용됩니다."; +$LANG["text_add_form_field_types2"] = "귀하의 형태가 HTML에 없을 경우, 진행 건너뛰기 단계 버튼을 클릭합니다. 이것은 모두 나중에 구성할 수 있습니다."; +$LANG["text_add_form_field_types3"] = "당신의 양식이 다시로드는 내용 (S). 참고 : 이것은이 페이지에서 만든 변경 사항을 덮어 쓰게됩니다."; +$LANG["text_add_form_field_types4"] = "이 문제에 실행할 경우에는이 단계를 건너 뛰려면 여기를 클릭하십시오. 모든 해결되지 않은 필드는 기본값을 사용하도록 설정되어 있습니다. 나중에 해당 필드를 사용자 정의할 수 있습니다."; +$LANG["text_add_form_field_types_manual_upload"] = "당신이 필드를 채우 스마트 수없는 경우, 당신은 대안 솔루션을보십시오 : 아래의 입력란에 양식의 사본을 업로드할 수 있습니다."; +$LANG["text_add_form_field_types_manual_upload2"] = "참고 : 원시 PHP 페이지 (또는 다른 서버 쪽 코드)를 업로드하지 않아 - 단지 HTML 버전을 업로드하십시오. 이것을하려면, 웹 브라우저에서 페이지를보고 저장할 수 있습니다."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "지정한 양식 페이지에서 찾을 수 없습니다 여러 필드가있었습니다. 이것은 주로 가능성이 다음 중 하나에 의해 발생합니다 :"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "당신은 잘못 다중 페이지 양식의 형태로 URL이 중 하나 이상을 입력했습니다."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "귀하의 형태로 하나 이상의 페이지는 암호로 보호되고 스크립트가 페이지에 액세스할 수 없습니다."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "당신은 잘못 양식 URL을 입력했습니다."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "여기를 클릭 하여 설정을 확인하는 양식 정보 페이지로 돌아갑니다."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "당신은 시험 제출을 제작 후 양식 (들)을 변경"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "여기를 클릭하십시오 다른 테스트를 통해 제출 넣어."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "귀하의 양식을 암호로 보호되고 스크립트가 페이지에 액세스할 수 없습니다."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "이 브라우저의 다른 탭 / 창에서 필드를 다시 찾으려고 아래 새로 고침 페이지 버튼을 클릭 후 양식에 로그인합니다."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "위의 솔루션 작업 없음 경우에는보십시오 수동 처리에 대한 양식을 업로드 ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "지정한 양식 페이지에서 찾을 수 없습니다 여러 필드가있었습니다. 이것은 대부분의 가능성이 중 하나에 의해 발생합니다 :"; +$LANG["text_add_form_help_link"] = "이 단계 중에 어떤 문제로 실행하는 경우, 밖으로 읽어보세요 사용자 설명서를 ."; +$LANG["text_add_form_step_1_text_1"] = "다음 페이지 양식 도구를 구성하는 단계를 통해 양식을 제출 저장소로 리드. 계속하기 전에 확인하시기 바랍니다 :"; +$LANG["text_add_form_step_1_text_2"] = "양식이 이미 만들어졌습니다 그리고 URL을 (localhost를 통해 접근할 수있어 괜찮 아요)입니다"; +$LANG["text_add_form_step_1_text_3"] = "양식을 수정하실 수있습니다"; +$LANG["text_add_form_step_2_para_2"] = "원하는 편집기에서 폼을 엽니다 다음에 두 개의 숨겨진 필드를 포함하여 양식에 태그를 변경할 수있습니다."; +$LANG["text_add_form_step_2_para_3"] = "다음으로, 웹 브라우저에서 양식을 엽니다. 모든 필드에 입력하고 제출하십시오. 제출 후, 당신은 알림 메시지가 나타납니다. 일단이 메시지이 페이지 아래를 클릭하여 새로 고침 단추를 반환 표시됩니다. 이 프로세스가 완료되면, 당신은 아래의 버튼을 계속해서 다음 단계로 데리고가 나타납니다."; +$LANG["text_add_form_step_2_para_6"] = "양식 제출에 다음과 같은 값을 포함합니다. 그들은 바로 PHP를 통해 설정할 수있습니다 또는 자체 양식을 통해 함께 통과시켰다. 다음은 각 구성의 예입니다. (\$ varname) 해시 모든 양식 제출 정보 (또는 연관 배열) -이 시간 이내 (\$ postvar) 또는 (\$ sessionvar) 변수이지만, 그것을 수도 사용자 지정 기본."; +$LANG["text_add_form_step_2_text_2"] = "여기에 "감사 "페이지의 URL을 입력합니다. 당신이 양식을 제출 이후 사람들이로 이동하려는 곳이예요."; +$LANG["text_add_form_step_3_para_1"] = "이 페이지 양식 제출의 모든 필드를 나열합니다. 각 필드를 검사 및 제거하면 저장된 모든 제출하지 않아도됩니다. 만약 당신이 사고에 의해 유효한 필드를 삭제하거나 양식, 이전 페이지로 돌아가 새로운 테스트를 보내 제출에 저장된 정보를 변경하고 싶습니다."; +$LANG["text_add_form_step_3_para_2"] = "참고 : 만약 당신이 확인란을 선택 또는 다중를 통해 귀하의 필드 이름을 [] 문자 (자세한 내용은 사용자 설명서를 볼 수 있는지 확인합니다 - 종료를 선택하십시오 상자에서 여러 개의 값을 보내는거야)."; +$LANG["text_add_form_step_3_text_1"] = "즐거움이 시작하는 위치를 여기있어! 이 시점에서, 양식 도구는 양식에서 시험 제출을 기다리고 있습니다. 이것은 데이터베이스에 저장되어야 어떤 정보를 알고이 양식 제출을 사용합니다."; +$LANG["text_add_form_step_3_text_2"] = "양식 도구를 귀하의 양식을 가리 키"; +$LANG["text_add_form_step_3_text_3"] = "양식 도구 API를 사용하여"; +$LANG["text_add_form_step_3_text_4"] = "귀하의 형태로 통합할 수 있도록 지원하기 위해, 우리는 당신이 다음 중 하나 자습서 읽어보실 것을 권해 :"; +$LANG["text_add_form_step_3_text_5"] = "그들은 시험을 제출하는 방법에 대한 준비 과정에서 귀하의 양식을 설정, 설명 및 도움이 될 수있는 다른 정보가 포함됩니다. PHP는 당신이 필요합니다의 라인이다 :"; +$LANG["text_add_form_step_3_text_6"] = "이 사실은 양식 도구로 전송되는 데이터를 보장합니다. 언제 당신이 테스트를 제출 버튼을 클릭하여, 아래에 연결해있다."; +$LANG["text_add_form_step_3_text_7"] = "페이지를 사전에 귀하의 최종 ""페이지에서 매개 변수 \$ 변수에 다음과 같은 매개 변수를 추가하셔야합니다 감사합니다 :"; +$LANG["text_add_form_step_5_para_1"] = "데이터베이스에 양식이 양식을위한 사용이 활성화되었습니다 설정되었습니다. 만약 당신이 양식을 process.php을 가리키고, 귀하의 형태로 돌아가십시오 다음과 같은 숨겨진 필드를 제거 제출 제출 :"; +$LANG["text_add_form_step_5_para_2"] = "그렇다면 참조하십시오 ""페이지에서 세션 빈에게 감사합니다. 일단이 완료되면, 모든 새로운 양식을 접수 처리되며, 양식 도구에 의해 저장됩니다. 또는 두 가지 정보를 확인하고 제출하려고 모든 업로드가 제대로입니다."; +$LANG["text_add_form_step_5_para_3"] = "만약 당신이 괜찮하려면, 별도의 양식 필드를 필드 또는 양식 필드 유형을 사용자 정의 추가, 당신은 어떤 시점에서 양식을 편집할 수있습니다 자동으로 이메일을 보내는 등의 옵션에 대한 귀하의 형태로 조정."; +$LANG["text_add_form_step_5_para_4"] = "이후 양식 파일 업로드 필드가 포함되어 있으면 구성 파일을 업로드하는 폴더를 지정하려면, 파일, 무엇이 허용되는 각 필드가 필요합니다. 이 양식 페이지 편집 디스플레이 탭에서 찾을 수있습니다."; +$LANG["text_add_form_step_5_para_5"] = "제출하는 경우 API를 통해, 귀하의 양식의 첫 번째 페이지에서 다음 줄을 변경 ft_api_init_form_page 보냈습니다 :"; +$LANG["text_add_submission_button"] = "추가 제출 버튼은 를보기 위해 나타납니다 "예 "로 설정 "제출을 추가할 수 있습니다 "옵션을 제공합니다."; +$LANG["text_admin_email_placeholder_info"] = "이것은 양식 도구를 관리자 사용자 계정 설정에 정의된 전자 메일 주소입니다. 이 밖에, 그래서 만약 당신이 HTML을 링크로 사용하고자하는 이메일 주소를 출력, 당신은 <a> 태그에서 이렇게 급한 마음에 포장해야합니다 :
    은 <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) "/""; +$LANG["text_also_default_login_page_theme"] = "(또한 기본 로그인 페이지에 테마)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "먼저 양식 유형을 선택하십시오."; +$LANG["text_client_form_page"] = "이 페이지의 모든 양식 및보기이 클라이언트에 할당을 나열합니다. 팁 : 순서대로 그들에게 양식 제출보고, 그들이 필요로 적어도 하나의보기로 할당됩니다."; +$LANG["text_client_map_filters_desc1"] = "고객 맵 필터를 사용하면이보기에서 양식 필드에 클라이언트 계정에 값을 값을 매핑에 의해 나타납니다 제출을 제한하자."; +$LANG["text_client_no_forms"] = "당신은 현재 형태의 검토를 위해 사용할 수있습니다."; +$LANG["text_client_welcome"] = "환영! 이 프로그램은 저장하시면 모든 정보를 귀하의 웹사이트 방문자에 의해 제출했다. 특정 양식을보기 링크, 또는 다른 옵션에 대한 가장 왼쪽 네비게이션 메뉴에서 참조를 제출을 클릭하십시오."; +$LANG["text_config_file_created"] = "귀하의 config.php 파일이 만들어졌습니다."; +$LANG["text_config_file_not_created"] = "귀하의 config.php 파일을 만들 수없습니다. 당신은 수동으로 파일을 생성해야합니다."; +$LANG["text_config_file_not_created_instructions"] = "복사하고 아래의 섹션에서 config.php라는 파일에 내용을 붙여 및 FTP를 통해 양식 도구에 업로드 / 세계 폴더 (폴더는 또한 몇 가지 다른 파일과 디렉토리를 포함, 하나 library.php)라는 파일을 엽니다."; +$LANG["text_confirm_delete_form"] = "그래,이 양식을 삭제하려면"; +$LANG["text_create_admin_account"] = "이제 관리자 계정을 만들거야. 이 같은 양식을 추가하고 클라이언트 계정을 만들 양식 도구의 모든 측면을 관리하는 데 사용됩니다."; +$LANG["text_create_new_client_account"] = "아래의 양식을 사용하여 새 고객 계정을 만들 수있습니다. 모든 필드가 필수입니다."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "서식 옵션에 대한 PHP는 {\$datefunctionlink} 함수를 참조하십시오"; +$LANG["text_default_file_settings_page"] = "이 페이지는 귀하의 양식 도구를 설치하기 위해 파일을 업로드 설정을 정의합니다. 이러한 규칙은 모든 파일을 양식 도구를 통해 업로드하려면 명시적으로 개별 양식 필드에 대한 재정의에 적용됩니다. 참고 : 만약 여러분이 폴더에 업로드 후 파일을 업로드되었습니다 변화, 그들은 자동으로 새 폴더로 이동됩니다."; +$LANG["text_default_theme_cache_folder_not_writable"] = "계속하기 전에, 당신은 / 기본 / 캐시 폴더 / 테마 업데이 트의 전체 읽기 및 쓰기 권한을 허용하도록해야합니다. 이렇게되면,이 메시지가 사라집니다 이루어집니다 당신 스크립트를 설치할 수있습니다."; +$LANG["text_default_values_in_view"] = "이 섹션은 선택 사항입니다. 이보기로 만든 모든 작품이 여기에 지정된 기본값을 포함합니다."; +$LANG["text_delete_all_forms"] = "나는이 양식을 통해 업로드된 모든 파일을 삭제하려면"; +$LANG["text_delete_form_warning"] = "당신이이 양식을 삭제하시겠습니까? 이 작업은 취소할 수없습니다. 모든 데이터가 영구적으로 손실됩니다!"; +$LANG["text_edit_admin_menu_page"] = "당신은 아래의 메뉴를 편집할 수있습니다. 당신을 위해 항상 모든 기능은 양식 도구, 다음 페이지가 필요합니다 : 양식, 고객, 24 시간 이용 가능한 액세스 권한이 귀하의 계정, 모듈, 설정 및 로그아웃."; +$LANG["text_edit_client_menu_page"] = "이 섹션에서는 각 사용자에 대한 왼쪽 네비게이션 열을 사용자 정의할 수있습니다. 당신이 만들 수있을만큼 많은 클라이언트의 메뉴를 당신이 원하는 모든 계정을 할당 그들 중 하나있다. 기본적으로 두 가지 메뉴 : 1, 당신을 위해 관리자는 하나 모든 클라이언트 계정에 대한됩니다. 하지만, 관리자 계정을 수정할 수있습니다 제거되지 않습니다."; +$LANG["text_edit_tab_summary"] = "이 탭에이보기의 필드를 그룹으로 원하시면, 아래의 탭 이름을 입력합니다. 이 과정을 마친 후, 각 필드 그룹에 대한 적절한 탭을 선택 필드 탭 ."; +$LANG["text_edit_view_list_page"] = "필드가 제출 목록 페이지에서 열 및 해당 분야에 대한 몇 가지 추가 설정으로 나타납니다 이것은 탭 제어합니다. 참고 : 우리는 이제 더 이상보기에서 가장 중요한 분야 중 5 4 이상의 추가 또는없는 것이 좋습니다."; +$LANG["text_email_settings_intro"] = "이 페이지에서 확인할 수있다는 자신에 해당하는 이름이 귀하의 양식 필드를 저장할 이메일 및. 일단 당신이 여기에 정의, 당신은 귀하의 이메일에 사용할 수있는받는 사람 템플릿. 이 섹션은 전적으로 선택 사항입니다."; +$LANG["text_email_tab_summary"] = "이 섹션은 언제든지 귀하의 양식을 제출 보낼 수있는 이메일을 구성할 수 있도록 임의의 숫자, 그리고 다른 트리거합니다."; +$LANG["text_email_template_tab"] = "이 섹션에서는 콘텐츠를 이메일에 어떤 표시를 확인하실 수있습니다. 경우에만 텍스트 또는 이메일로 귀하의 이메일을 보내에만 해당 섹션에 값을 입력합니다 좋겠어. 만약 당신이 모두를위한 값을 입력, 이메일을 두 형식으로 전송됩니다."; +$LANG["text_email_template_text_1"] = "저기 제출 양식, {\$FORMNAME} 를 통해 만들어왔다."; +$LANG["text_email_template_text_1_c"] = "저기 제출 양식을 통해 만들어왔다 (\$ FormName) :"; +$LANG["text_email_template_thanks"] = "귀하의 제출 주셔서 감사합니다!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "필드 유효성 검사에 실패하면 표시 오류 메시지가 나타난다"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "외부 형태는 이미 귀하의 웹사이트에, 또는 어딘가의 웹 존재 양식입니다. 당신이 양식 도구와 통합하려는 자신의 양식을 사용하는 경우이 옵션을 선택합니다."; +$LANG["text_fields_tab_summary"] = "이 페이지는 양식 필드를 모두 나열합니다. 검색 제출하면 그들이 표시되는 방식을 제어하려면 보려면 보기 탭을 . 이 페이지에서 필드를 삭제하면 모든 작품에서 삭제되므로주의하시기 바랍니다!"; +$LANG["text_file_extension_info"] = "확장 쉼표로 구분된 파일을 입력합니다 (지프)는 PNG 예 : jpg이 비어 있거나 모든 파일 형식을 허용하도록 둡니다."; +$LANG["text_file_field_placeholders_info"] = "파일 필드를 두 가지 특별한 자리 표시자 : FILEURL 및 파일 이름이있습니다. FILEURL 파일의 전체 URL을, 그래서 당신이 직접 귀하의 이메일에있는 링크 수있습니다; FILENAME 그냥 파일 이름입니다."; +$LANG["text_filters_page"] = "오직 그 제출 당신이보기에 나타납니다 아래의 정의 규칙을 만나보십시오."; +$LANG["text_filters_tips"] = "어떻게 사용자 설명서를 참조하십시오 제출 필터를 사용하는 방법에 대한 도움말을 보려면."; +$LANG["text_forgot_password"] = "문제없습니다. 바로 아래에 귀하의 사용자 이름과 로그인 정보를 입력 파일에 귀하의 이메일 주소로 발송됩니다. 만약 당신이, 에서 사이트 관리자에게 이메일을 보내주십시오 {\$site_admin_email} 사용자 이름을 잊어버린 경우."; +$LANG["text_form_contains_file_fields"] = "이 양식은 하나 이상의 파일 업로드 필드를 포함 :"; +$LANG["text_form_placeholder_info"] = "다음 자리 표시자에 관계없이 이메일 템플릿에 지정된대로보기의 모든 이메일 템플릿 및 언어 자리 표시자 분야에서 사용될 수 있습니다. 질문 나타내지는 특정 양식의 문제되며 답변 나타내지는 각 질문에 대한 답변입니다."; +$LANG["text_form_submission_date_placeholder"] = "제출이 만들어진 날짜입니다."; +$LANG["text_form_tools_form_url"] = "양식의 전체 URL입니다. 이것은 외부 형태의 값을 갖습니다."; +$LANG["text_form_tools_login_url"] = "양식 도구에 대한 로그인 URL입니다."; +$LANG["text_form_view_permission_info_admin"] = "참고 :이 양식은 현재 관리자 액세스 유형이 있으므로, 고객 계정과 상관이보기를 볼 수 없습니다."; +$LANG["text_form_view_permission_info_private"] = "참고 : 여기에 공적 영역과 사적 옵션이 클라이언트의 하위 집합으로 제한을 받게 될 것입니다이 양식은 현재 개인 액세스 유형이 있습니다."; +$LANG["text_ft_installed"] = "축하합니다, 양식 도구를 성공적으로 설치되었습니다!"; +$LANG["text_global_placeholder_info"] = "이러한 자리 표시자 어떠한 및 모든 양식 서식 파일에서 사용할 수있습니다."; +$LANG["text_group_name_explanation"] = "필드 추가 폼 과정을 통해,이 값을 미리 원하는 필드를 표시 텍스트로 가득 차 값을 사용했다. 당신은 그것을 변경하는 내용의 특성을 잘하실 수있습니다."; +$LANG["text_install_create_config_file"] = "파일 서버 및 데이터베이스 설정은 config.php라는 양식 도구 상점, 여러분의 / 세계에서 발견 / 폴더에있습니다. "자동으로 귀하의 서버에 파일을 생성하는 파일 만들기"버튼을 클릭합니다."; +$LANG["text_install_create_database_tables"] = "이제 우리는 양식 도구를 데이터베이스 테이블을 만들거야. 이 단계는 이미 만들어진 데이터베이스 자체가 필요합니다. 만약 당신이 어떻게 이렇게 확실하지 않은시기 바랍니다 호스팅 제공 업체에 문의하시기 바랍니다."; +$LANG["text_install_db_tables_error_tip_1"] = ""알 수없는 MySQL 서버 호스트"일반적으로 귀하가 제공한 호스트 이름이 잘못된 것을 의미합니다. 아마에 "localhost"-이 "로컬"데이터베이스에 웹 서버를 참조하는 일반적인 방법입니다이 설정을 시도해보십시오."; +$LANG["text_install_db_tables_error_tip_2"] = ""로컬 MySQL 서버 소켓"을 통해 연결할 수없습니다 호스트 이름 필드에 데이터베이스의 의미를 다시 잘못된 것입니다."; +$LANG["text_install_db_tables_error_tip_3"] = ""사용자에 대한 액세스가 거부되었습니다 :"거기에 귀하의 사용자 이름 / 암호 조합에 문제가있는 것을 의미합니다."; +$LANG["text_install_db_tables_error_tip_4"] = ""사용자에 대한 액세스가 거부되었습니다 : ... 데이터베이스에 ..."비록 귀하의 사용자 이름과 비밀 번호가 정확한지 공급 즉, 그 계정에 특정 데이터베이스에 연결하지 못했습니다 의미합니다. 이것도 당신의 데이터베이스 이름, 또는 올바르지 않습니다이 사용자 계정은 데이터베이스와 연결되어 있지 않습니다 의미할 수있습니다."; +$LANG["text_install_email_content_text"] = "온라인 문서 (https://docs.formtools.org) 및 자습서 (https://docs.formtools.org/tutorials)를 비롯하여 시작에 도움이되는 많은 정보가 웹 사이트에 있습니다. 문제가 있거나 질문이있는 경우 github (https://github.com/formtools/core/issues/)에서 질문하십시오."; +$LANG["text_install_form_tools_server_not_supported"] = "죄송합니다, 양식 도구는 서버에서 실행하실 수 없습니다. 여기를 클릭하십시오 최소 요구 사항."; +$LANG["text_install_system_check"] = "이 페이지는 귀하의 시스템을 사용하면 양식 도구를 실행할 수의 보장에 관한 몇 가지 검사를 실행합니다."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "아니라 다른 사이트에서 - 내부 양식은 양식 도구에서만 존재합니다. 전용 양식 도구 사용자 계정 양식에 액세스할 수 있습니다. 당신이 기존의 양식을 가지고 있지 않다면이 옵션을 선택합니다."; +$LANG["text_internal_form_intro"] = "새로운 내부 양식을 작성하려면 아래의 양식을 사용하십시오. 양식 필드의 수와 내용을 포함한 모든 설정, 변경 나중에 구성할 수 있습니다."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "하기 위해서는 로그인 및 양식 도구를 사용하면 브라우저에서 JavaScript가 활성화되어 있어야합니다. 귀하의 브라우저에있는 지금, 그리고 새로 고침을 누릅니다 수있습니다."; +$LANG["text_last_modified_date_explanation_c"] = "지난번에이 제출 바뀌었습니다. 새로운 제출 들어, 다음과 같습니다 :"; +$LANG["text_limit_email_content_desc"] = "이 옵션은 HTML과 스마티 루프로 생성된 텍스트 콘텐츠에 대해 작동합니다."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(단 하나 이상의 필터를 정의한) 플레이 목록"; +$LANG["text_log_in_to_ft"] = "양식의 도구에 로그인합니다"; +$LANG["text_login"] = "제발 아래의 () \$ Program_name의 관리 제어판에 액세스하려면 로그 인해주세요. 만약 귀하의 비밀 번호를, 여기를 클릭 잊어버린."; +$LANG["text_login_info"] = "요청하신대로, 여기에 귀하의 로그인 정보입니다."; +$LANG["text_name_of_form"] = "양식의 이름입니다."; +$LANG["text_no_clients"] = "현재 데이터베이스에서 클라이언트가있습니다. 아래에 클라이언트 추가 버튼을 새 고객 계정을 추가하려면 클릭하십시오."; +$LANG["text_no_clients_found"] = "아니 고객을 발견했다. 귀하의 검색 기준을 넓혀보십시오."; +$LANG["text_no_fields_in_view"] = "이보기는 어떤 분야가 없습니다. 아래의 링크를 클릭하십시오."; +$LANG["text_no_forms"] = "현재 데이터베이스에 양식입니다. 새 양식, 아래의 양식 버튼을 추가하려면 추가를 누릅니다."; +$LANG["text_no_forms_found"] = "형태를 찾을 수 없습니다."; +$LANG["text_no_forms_found_search"] = "형태를 찾을 수 없습니다. 귀하의 검색 기준을 넓혀보십시오."; +$LANG["text_no_modules_found"] = "아니 모듈을 찾을 수없습니다. 귀하의 검색 기준을 넓혀보십시오."; +$LANG["text_no_recipients_added"] = "안받는 사람이 추가되었습니다."; +$LANG["text_no_search_results"] = "이 검색 결과가없습니다 기준 /보기입니다."; +$LANG["text_no_submissions_found"] = "죄송합니다, 아니 제출을 발견했다."; +$LANG["text_no_themes"] = "당신은 정의된 테마가 없습니다. 테마 목록을 새로 고치거나 확인하려면 아래 버튼을 클릭 양식 도구 사용자 문서 테마를 추가에 대한 자세한 내용은합니다."; +$LANG["text_non_deletable_fields"] = "이 필드는 코어 스크립트에 의해 사용되며 편집 또는 비호환성을 유발하지 않고 삭제할 수 없습니다. 이 필드 유형을 변경하고자 할 경우, 그것의 복사본을 만들어 복사본을 편집합니다."; +$LANG["text_option_list_group_explanation"] = "이것이 선택되어 있으면 옵션을 그룹에 있습니다. 어떻게 그룹이 표시됩니다하면이 옵션 목록을 사용하여 필드 종류에 따라 다릅니다."; +$LANG["text_option_list_page"] = "라디오 버튼, 체크 박스, 드롭 다운 및 다중 선택 드롭 다운 필드는 모든 사람들이 하나 이상의 항목을 선택할 수있는 여러 옵션을 사용자에게 제공합니다. 양식 도구에서 이러한 옵션 목록으로 알려져 있습니다. 일반적으로, 이들은에 의해 자동으로 생성됩니다 추가 외부 폼 처리하지만 양식 내용 변경 또는 내부 적으로만 사용하는 필드를 만들 경우에는 수동으로 아래에 옵션 목록을 추가하거나 편집할 수 있습니다."; +$LANG["text_option_list_used_by_fields"] = "이 옵션은 목록은 여러 양식 필드에 의해 사용됩니다. 당신은 아래의 정보를 업데이 트하는 경우, 그것은 모든 필드 (참조에 대한 변경됩니다 폼 필드 탭을 필드의 목록을 보려면.) 하나에 대한 값 또는 현재 할당되어있는 필드의 하위 집합을 업데이 트하려는 경우, 여기를 클릭하십시오 이 같은 값을 가진 새로운 옵션 목록을 만들 수 있습니다. 그렇다면 당신은 새로운 그룹에 원하는 양식 필드를 지정할 수 있습니다."; +$LANG["text_public_form_omit_list_page"] = "공공 형태의 모든 클라이언트 계정을 수동으로 각 클라이언트에 할당하지 않고 액세스 해줘서의 혜택을주고. 이 페이지에서이 양식에 액세스하지 못할 수있습니다 이러한 클라이언트 비록 양식을 공용으로 정확하게 표시되고있습니다."; +$LANG["text_public_view_omit_list_page"] = "공용 조회하면 모든 클라이언트 계정을 수동으로 각 클라이언트에 할당하지 않고 액세스 해줘서의 혜택을주고. 이 페이지는 당신이 특정보기에 액세스하지 못할 수있습니다 이러한 클라이언트를 정확하게 할 수있습니다."; +$LANG["text_reference_tab_info"] = "이 페이지는 양식에서 사용할 수있는 모든 자리 표시자를 나열합니다. 자리 표시자은 이메일 템플릿에서 사용할 수있는 문자열이며, 필드는 특별한 자리 표시자 아이콘으로 표시 . 필드에 입력하면, 그들은 동적으로 필드가 조회하거나 이메일이 보내집니다 적절한 값으로 변환됩니다."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "검토 사용자 설명서"; +$LANG["text_send_email_from_edit_submission_page"] = "접수 수정 페이지에서이 이메일을 보내도록 포함 옵션"; +$LANG["text_smart_fill_option_list_problem"] = "우리는 스마트 귀하의 필드 옵션을 선택하실 수 없습니다. 그러나, 대안으로, 아래의 입력란에 양식 페이지의 사본을 업로드하실 수 있습니다. 참고 : 원시 PHP 페이지 (또는 다른 서버 쪽 코드)를 업로드하지 않아 - 단지 HTML 버전을 업로드하십시오. 이것을하려면, 웹 브라우저에서 페이지를보고 저장할 수 있습니다."; +$LANG["text_submission_ip_address"] = "IP 주소 제출 누가 만든 사용자의."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "중 하나를 보거나 자신이 이메일에서 템플릿을 생성 이메일을 보낼 아래 양식을 사용하십시오. 이메일은 이메일을 아래에 지정된에게 보내집니다;, 참조 및 숨은 참조 기본 이메일 주소를받는 동안 테스트를 무시됩니다."; +$LANG["text_test_email_templates_no_submissions"] = "위해서 귀하의 이메일을 테스트 템플릿을 먼저 적어도 하나의 양식을 제출 연결해합니다."; +$LANG["text_theme_page_intro"] = "이 페이지는 귀하의 테마를 모두 나열됩니다. 엄지 손톱을 클릭 테마 스타일의 큰 예를 볼 수있습니다. ""확인란의 여부에 상관없이 클라이언트에 의해 그 테마를 선택할 수있습니다 결정 사용할 수있습니다. , 양식 도구 웹 사이트를 방문하십시오 사용할 수있는 모든 주제를 검색하십시오."; +$LANG["text_tutorial_adding_first_form"] = "자습서 : 첫 번째 양식을 추가!"; +$LANG["text_unique_submission_id"] = "제출 고유 ID입니다."; +$LANG["text_unused_option_list"] = "이 옵션 목록은 모든 양식 필드에서 사용되지 않습니다."; +$LANG["text_upgraded"] = "귀하의 설치를 {\$version} 업그레이 드되었습니다"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "이 옵션 목록은 다음과 같은 분야에서 사용됩니다."; +$LANG["text_view_fields_info"] = "이 탭은이보기에서 제출을 편집할 때 어떤 분야가 자신의 순서를 표시하고 그들이 편집할 여부 제어합니다."; +$LANG["text_view_tab_summary"] = "이 탭은 당신이 그룹에 서로 다른 방법을 만들고 데이터를 정렬하실 수 있습니다. 보기는 관리 청크로 분할하고, 클라이언트가 보거나 수정할 수 있습니다 어떤 한계에 양식 데이터의 사용자 정의 하위 집합을 만들."; +$LANG["validation_account_disabled"] = "죄송합니다, 귀하의 계정이 비활성화되었습니다."; +$LANG["validation_account_not_recognized"] = "죄송합니다, 그 이름을 인식하지 않습니다."; +$LANG["validation_account_not_recognized_info"] = "죄송합니다, 그 이름을 찾을 수없습니다. 잠시 후 다시 시도하거나, 아래의 주소로 사이트 관리자에게 문의하십시오."; +$LANG["validation_account_pending"] = "사용자 계정에 관리자에 의해 승인을 보류했다."; +$LANG["validation_check_delete_client"] = "당신이 고객 계정을 삭제하시겠습니까?"; +$LANG["validation_client_password_missing_number"] = "고객의 비밀 번호는 적어도 하나의 숫자 (0-9) 포함되어야합니다."; +$LANG["validation_client_password_missing_special_char"] = "클라이언트는 암호) 문자가 포함되어야합니다에서 최소 중 하나를 다음 문자: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "고객의 비밀 번호는 적어도 하나의 대문자 문자를 포함해야합니다."; +$LANG["validation_client_password_too_short"] = "클라이언트 암호 길이 할 최소한 {\$number}"; +$LANG["validation_col_name_is_reserved_word"] = "죄송합니다,이 데이터베이스의 열 이름을 MySQL에서 예약된 작업입니다. 제발 이름을 바꿉니다!"; +$LANG["validation_db_name"] = "데이터베이스 이름에는 마침표 나 슬래시를 사용할 수 없습니다."; +$LANG["validation_db_not_updated_invalid_input"] = "데이터베이스를 업데이트할 수없습니다. 입력한 값이 유효한지 확인합니다."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "죄송합니다, 기본적으로 관리자와 클라이언트의 테마는 항상 활성화되어 있어야합니다."; +$LANG["validation_default_phone_num_required"] = "숫자 -의 <b> { \$ 분야} </ b> 필드의 전체 전화 번호를 기입하여주십시오."; +$LANG["validation_default_rule_alpha"] = "의 <b> { \$ 분야} </ b> 필드에 대한 문자와 숫자를 입력에만하시기 바랍니다."; +$LANG["validation_default_rule_letters_only"] = "의 <b> { \$ 분야} </ b> 필드에 대한 문자를 입력에만하시기 바랍니다."; +$LANG["validation_default_rule_numbers_only"] = "전용의 <b> { \$ 분야} </ b> 필드에 대한 숫자를 입력하십시오."; +$LANG["validation_default_rule_required"] = "의 <b> { \$} 필드에 대한 값을 </ b> 입력란에 입력하십시오."; +$LANG["validation_default_rule_valid_email"] = "의 <b> { \$ 분야} </ b> 입력란에 유효한 이메일 주소를 입력하십시오."; +$LANG["validation_delete_form_confirm"] = "제발 당신이 양식을 삭제하려면 확인 상자를 확인합니다."; +$LANG["validation_delete_non_empty_option_list"] = "경고! 이 옵션은 목록은 하나 이상의 양식 필드에 의해 사용됩니다. 그것을 삭제하면 해당 필드가 제대로 작동 중단하게됩니다."; +$LANG["validation_display_names_incomplete"] = "해당 사항을 모두 표시 이름, 스마트 클릭하거나 채우기 옵션을 동적으로 입력에 대한 값을 입력합니다."; +$LANG["validation_duplicate_form_field_name"] = "당신은 동일한 필드 이름을 가진 여러 개의 필드를 가질 수 없습니다."; +$LANG["validation_email_not_found_or_invalid"] = "죄송합니다, 이메일 계정 중 하나가 존재하지 않거나 잘못된 연결된."; +$LANG["validation_folder_invalid_permissions"] = "하기 위해서는이 테스트를 실행하려면 사용 권한이 필요 업로드 폴더에서 파일을 읽고 (777 유닉스)에 쓰기를 허용하도록 설정되어야합니다."; +$LANG["validation_folder_not_writable"] = "이 폴더는 쓰기하지 않습니다."; +$LANG["validation_internal_form_too_many_fields"] = "죄송합니다, 당신은 단지 1,000 필드 또는 적은 비용으로 양식을 만들 수 있습니다."; +$LANG["validation_invalid_admin_email"] = "제발 올바른 adminstrator의 이메일 주소를 입력하십시오."; +$LANG["validation_invalid_admin_username"] = "귀하의 사용자 이름은 (AZ 및 0-9) 영문자로 구성되어 있습니다."; +$LANG["validation_invalid_client_username"] = "클라이언트의 사용자 이름은 영숫자 문자 (AZ와 0-9)로 구성되어있습니다."; +$LANG["validation_invalid_client_username2"] = "죄송합니다,이 사용자 이름 : 오직 문자, 숫자 및 밑줄 문자를 포함할 수있습니다. 제발 새 사용자 이름을 입력하십시오."; +$LANG["validation_invalid_column_name"] = "열 이름은 (AZ, 0-9) 영숫자 수 있습니다. 열 이름을 확인하시기 바랍니다."; +$LANG["validation_invalid_custom_from_email"] = "이메일 주소 '에서 유효한 사용자 정의'를 입력하십시오."; +$LANG["validation_invalid_custom_reply_to_email"] = "입력하십시오 유효한 사용자 정의 '답장'이메일 주소입니다."; +$LANG["validation_invalid_default_sessions_timeout"] = "제발 올바른 값을 기본 세션 시간 제한을위한 (전화 번호)를 입력합니다."; +$LANG["validation_invalid_email"] = "유효한 이메일 주소를 입력하십시오."; +$LANG["validation_invalid_email_id"] = "미안, 잘못된 이메일의 ID입니다."; +$LANG["validation_invalid_folder"] = "죄송합니다,이 올바른 폴더가 표시되지 않습니다."; +$LANG["validation_invalid_form_field_names"] = "양식 필드에만있을 수 있으며 영숫자 문자 (az, 0-9, 밑줄 _), 공백이다."; +$LANG["validation_invalid_num_clients_per_page"] = "제발 전용 페이지 필드 당 인분 고객 번호를 입력합니다."; +$LANG["validation_invalid_num_emails_per_page"] = "제발 페이 지당 메일에 대한 숫자를 입력합니다."; +$LANG["validation_invalid_num_form_fields"] = "필드 필드의 번호에 숫자만을 입력하십시오."; +$LANG["validation_invalid_num_forms_per_page"] = "제발 전용 페이지 필드 인분 양식 당에 숫자를 입력합니다."; +$LANG["validation_invalid_num_menus_per_page"] = "제발 페이 지당 메뉴에 숫자를 입력합니다."; +$LANG["validation_invalid_num_modules_per_page"] = "제발에만 인분 모듈 분야마다 페이지 번호를 입력합니다."; +$LANG["validation_invalid_num_option_lists_per_page"] = "페이지 필드 당 숫자판 옵션 목록에 숫자만을 입력하십시오."; +$LANG["validation_invalid_num_submissions_per_page"] = "제발 페이 지당 제출의 유효한 숫자를 입력하세요."; +$LANG["validation_invalid_sessions_timeout"] = "유효한 세션 시간 초과를 입력하십시오 (정수에서만!)."; +$LANG["validation_invalid_tab_assign_values"] = "제발에만 번호를 입력 '에서'필드."; +$LANG["validation_invalid_table_prefix"] = "데이터베이스 접두사가 문자로 구성되어 있으며, 단지 문자를 밑줄 입력하십시오."; +$LANG["validation_invalid_upload_folder"] = "PHP의 서버의 설치 upload_tmp_dir을 값을 잘못 설정하고있다. "{\$upload_folder}"폴더가 유효하지 않습니다."; +$LANG["validation_invalid_url"] = "제발 올바른 URL을 입력하십시오."; +$LANG["validation_invalid_username"] = "귀하의 사용자 이름은 영숫자 문자 (AZ와 0-9)로 구성되어있습니다."; +$LANG["validation_is_form_active"] = "제발 여부 양식이나하지 활성을 나타냅니다."; +$LANG["validation_menu_name_taken"] = "죄송합니다,이 메뉴 이름이 이미 사용 중입니다. 제발 새 이름을 선택하십시오."; +$LANG["validation_modules_search_no_status"] = "중 활성화 또는 비활성 확인란을 선택하십시오."; +$LANG["validation_no_access_type"] = "제발 액세스 유형을 입력합니다."; +$LANG["validation_no_account_logout_url"] = "로그아웃하시기 바랍니다 URL을 입력하십시오."; +$LANG["validation_no_account_password_confirmed"] = "제발 다시 귀하의 새 비밀 번호를 입력하십시오."; +$LANG["validation_no_account_password_confirmed2"] = "제발 다시 새 암호를 입력하십시오."; +$LANG["validation_no_admin_email"] = "제발 관리자의 이메일 주소를 입력하십시오."; +$LANG["validation_no_admin_theme"] = "제발 관리자 계정에 대한 테마를 선택합니다."; +$LANG["validation_no_admin_theme_swatch"] = "관리자 테마 견본을 선택하십시오."; +$LANG["validation_no_client_email"] = "제발 고객의 이메일 주소를 입력하십시오."; +$LANG["validation_no_client_first_name"] = "제발 고객의 첫 번째 이름을 입력합니다."; +$LANG["validation_no_client_last_name"] = "제발 고객의 마지막 이름을 입력합니다."; +$LANG["validation_no_client_login_page"] = "제발이 페이지를 클라이언트에 로그인할 때 리디렉션되어야한다는 것을 가리킨다"; +$LANG["validation_no_client_password"] = "제발 고객의 비밀 번호를 입력합니다."; +$LANG["validation_no_client_theme_swatch"] = "고객 계정에 대한 기본 견본을 선택하십시오."; +$LANG["validation_no_client_username"] = "제발 클라이언트의 사용자 이름을 입력합니다."; +$LANG["validation_no_column_name"] = "모든 칼럼 이름을 입력하거나 자동으로 채울 수있는 스마트 채움 버튼을 클릭하십시오."; +$LANG["validation_no_column_selected"] = "제출하시기 바랍니다리스트 페이지에 열로 표시하려면 적어도 하나의 필드를 선택합니다."; +$LANG["validation_no_custom_from_email"] = "입력하십시오 이메일 주소가 '에서 사용자 정의'."; +$LANG["validation_no_custom_recipient_email"] = "제발 사용자 정의받는 사람의 이메일 주소를 입력하십시오."; +$LANG["validation_no_custom_reply_to_email"] = "입력하십시오 정의 '답장'이메일 주소입니다."; +$LANG["validation_no_date_format"] = "제발 날짜 형식을 입력합니다."; +$LANG["validation_no_db_column_single"] = "데이터베이스 열 이름을 입력하십시오."; +$LANG["validation_no_db_hostname"] = "제발 데이터베이스 호스트 이름을 입력하십시오."; +$LANG["validation_no_db_name"] = "제발 데이터베이스 이름을 입력합니다."; +$LANG["validation_no_db_username"] = "제발 데이터베이스 계정의 사용자 이름을 입력하십시오."; +$LANG["validation_no_default_client_theme"] = "제발 모든 새로운 고객 계정에 대한 기본 테마를 선택합니다."; +$LANG["validation_no_default_language"] = "제발 양식 도구의 설치에 대한 기본 언어를 선택하십시오."; +$LANG["validation_no_default_sessions_timeout"] = "제발 사용자 계정에 대한 기본 세션 시간 제한을 입력합니다."; +$LANG["validation_no_display_text"] = "각 필드에 대한 표시 텍스트를 입력하십시오."; +$LANG["validation_no_display_text_single"] = "표시 텍스트 값을 입력하세요."; +$LANG["validation_no_edit_submission_page_label"] = "제출하시기 바랍니다 편집 페이지에 레이블을 입력하십시오."; +$LANG["validation_no_email"] = "귀하의 이메일 주소를 입력하십시오."; +$LANG["validation_no_email_config_field"] = "제발 어떤 양식 필드를 지정한 이메일 입력란입니다."; +$LANG["validation_no_email_content"] = "제발 적어도 하나의 형식의 이메일 내용을 입력하십시오 (HTML 또는 텍스트)."; +$LANG["validation_no_email_from_field"] = "제발 필드 '에서 이메일을'."; +$LANG["validation_no_email_template_name"] = "제발 이메일 템플릿 이름을 입력합니다."; +$LANG["validation_no_email_template_view_id"] = "제발이이 이메일에 매핑되어야 서식 파일보기를 선택합니다."; +$LANG["validation_no_email_template_view_mapping_value"] = "표시주십시오 때 이메일을 보낼 수있습니다."; +$LANG["validation_no_enabled_themes"] = "제발 최소한 하나의 테마가 활성화되어 있는지 확인합니다."; +$LANG["validation_no_first_name"] = "귀하의 첫 번째 이름을 입력하십시오."; +$LANG["validation_no_form_field_name"] = "제발 모든 양식 필드 이름을 입력합니다."; +$LANG["validation_no_form_field_single"] = "양식 필드 값을 입력하세요."; +$LANG["validation_no_form_id"] = "양식에 ID가 지정되지 않았습니다. 제발 나가 로그 인한 후 다시 시도해주십시오."; +$LANG["validation_no_form_name"] = "제발 양식 이름을 입력합니다."; +$LANG["validation_no_form_url"] = "제발 양식에 URL을 입력하십시오."; +$LANG["validation_no_last_name"] = "귀하의 마지막 이름을 입력합니다."; +$LANG["validation_no_login_page"] = "제발 당신이 원한다면 어느 페이지를 나타냅니다 안으로 로그인할 때마다 전송이"; +$LANG["validation_no_logout_url"] = "로그아웃하시기 바랍니다 URL을 입력하십시오."; +$LANG["validation_no_main_email_recipient"] = "제발 최소한 하나를 주로 사용하는 이메일 수신자를 입력하십시오 (즉, 안 주사해 또는 숨은 참조)."; +$LANG["validation_no_menu"] = "이 사용자 계정에 대한 메뉴를 선택합니다."; +$LANG["validation_no_menu_id"] = "메뉴를 선택하시기 바랍니다."; +$LANG["validation_no_num_clients_per_page"] = "제발 페이 지당 고객 계정 번호를 입력합니다."; +$LANG["validation_no_num_emails_per_page"] = "제발 페이 지당 목록 이메일 전화 번호를 입력합니다."; +$LANG["validation_no_num_form_fields"] = "양식의 필드 번호를 입력하세요."; +$LANG["validation_no_num_forms_per_page"] = "페이 지당하시기 바랍니다 형태의 번호를 입력합니다."; +$LANG["validation_no_num_menus_per_page"] = "제발 페이 지당 목록 메뉴의 번호를 입력합니다."; +$LANG["validation_no_num_modules_per_page"] = "페이 지당하시기 바랍니다 모듈의 번호를 입력합니다."; +$LANG["validation_no_num_option_lists_per_page"] = "페이 지당 옵션 목록의 번호를 입력하세요."; +$LANG["validation_no_num_submissions_per_page"] = "제발 페이 지당 표시할 제출의 번호를 입력합니다."; +$LANG["validation_no_option_list_name"] = "옵션 목록의 이름을 입력하십시오."; +$LANG["validation_no_page_titles"] = "제발 사용자 계정에 대한 기본 페이지 제목을 입력하세요."; +$LANG["validation_no_password"] = "귀하의 비밀 번호를 입력하시기 바랍니다."; +$LANG["validation_no_program_name"] = "제발 프로그램 이름을 입력합니다."; +$LANG["validation_no_second_password"] = "제발 다시 비밀 번호를 입력하십시오."; +$LANG["validation_no_sessions_timeout"] = "제발 세션 시간 제한을 입력합니다."; +$LANG["validation_no_smart_fill_values"] = "주십시오 형태의 URL은 폼 필드 이름을 입력합니다."; +$LANG["validation_no_table_prefix"] = "데이터베이스 접두어를 입력하십시오."; +$LANG["validation_no_tabs_defined"] = "아니 탭 정의"; +$LANG["validation_no_test_email_recipient"] = "제발 우리가 테스트 이메일을 보내야의 이메일 주소를 입력하십시오."; +$LANG["validation_no_test_email_submission_id"] = "제출하시기 바랍니다 ID 번호를 입력."; +$LANG["validation_no_theme"] = "테마를 선택하시기 바랍니다."; +$LANG["validation_no_theme_swatch"] = "선택한 테마에 대한 견본을 선택하십시오."; +$LANG["validation_no_timezone_offset"] = "제발 시간대 오프셋을 입력하십시오."; +$LANG["validation_no_titles"] = "제발 페이지 제목을 입력합니다."; +$LANG["validation_no_two_column_names"] = "죄송합니다, 당신은 두 번 같은 데이터베이스 열 이름을 입력할 수없습니다."; +$LANG["validation_no_ui_language"] = "제발 인터페이스 언어를 선택하십시오."; +$LANG["validation_no_url"] = "URL을 입력하시기 바랍니다."; +$LANG["validation_no_username"] = "사용자 이름을 입력하시기 바랍니다."; +$LANG["validation_no_username_or_js"] = "귀하의 사용자 이름을 입력합니다. 귀하의 브라우저에서 JavaScript를 활성화해야합니다."; +$LANG["validation_no_view_fields"] = "귀하보기 모든 필드가 포함되어 있지 않습니다! 거기에 대해 최소한 하나의 필드를 지정하려면보기를 보여 줄게 있어야합니다."; +$LANG["validation_no_view_fields_selected"] = "제발보기를 추가하려면 하나 이상의 필드를 선택합니다."; +$LANG["validation_no_view_name"] = "귀하의보기의 이름을 입력합니다."; +$LANG["validation_num_rows_to_add"] = "원하는 사항을 추가하려면 행 수를 입력합니다."; +$LANG["validation_option_list_name_taken"] = "죄송합니다,이 옵션 목록 이름이 이미 사용 중입니다. 새 이름을 선택하십시오."; +$LANG["validation_password_in_password_history"] = "보안을 위해, 당신은 / b 정보> 암호 언제 마지막 {\$history_size} 입력할 수 없습니다. 제발 다른 암호를 입력하십시오."; +$LANG["validation_passwords_different"] = "제발 비밀 번호 동일해야합니다."; +$LANG["validation_please_enter_search_date_range"] = "제발 검색 기간을 선택합니다."; +$LANG["validation_please_enter_search_keyword"] = "제발 검색 키워드를 입력하십시오."; +$LANG["validation_select_field_type"] = "제발 필드 유형을 선택합니다."; +$LANG["validation_select_submissions_to_copy"] = "복사하려는 제출물을 선택하십시오."; +$LANG["validation_select_submissions_to_delete"] = "제발 삭제하고자하는 해당 제출을 선택합니다."; +$LANG["validation_smart_fill_cannot_fill"] = "죄송합니다, 우리는이 필드를 채울 수없습니다."; +$LANG["validation_smart_fill_invalid_field_type"] = "우리는 필드를 찾을 수없습니다,하지만, 드롭 다운, 체크 박스 또는 라디오 그룹이없습니다."; +$LANG["validation_smart_fill_no_field_found"] = "죄송합니다, 우리는 페이지에 지정된 이름으로 양식 필드를 찾을 수없습니다."; +$LANG["validation_smart_fill_no_page"] = "제발 페이지 스마트 작성하고자하는 필드가 포함된 찾습니다."; +$LANG["validation_smart_fill_upload_all_pages"] = "귀하의 양식에있는 모든 페이지를 업로드할 수있습니다."; +$LANG["validation_upload_folder_not_writable"] = "이 임시 업로드 폴더에 PHP 설치에 의해 지정된 쓰기 권한이없습니다. 이 문제가 해결될 때까지는 경우, 파일의 양식 도구 (또는 다른 PHP 프로그램)를 통해 업로드하실 수없습니다. 여러분의 호스팅 제공 업체에 문의하시기 바랍니다."; +$LANG["validation_upload_html_files_only"] = "제발 HTML 파일만을 업로드."; +$LANG["validation_username_taken"] = "죄송합니다, 그 이름이 이미 반영되어있습니다. 제발 다른 이름을 입력하십시오."; +$LANG["validation_wrong_password"] = "죄송 해요, 비밀 번호가 일치하지 않습니다."; +$LANG["word_about"] = "정보"; +$LANG["word_access"] = "교통"; +$LANG["word_account"] = "계정"; +$LANG["word_account_sp"] = "계정 (들)"; +$LANG["word_accounts"] = "계정"; +$LANG["word_action"] = "액션"; +$LANG["word_active"] = "액티브"; +$LANG["word_add"] = "추가"; +$LANG["word_add_rightarrow"] = "추가»"; +$LANG["word_add_uc_rightarrow"] = "ADD가»"; +$LANG["word_administration"] = "행정"; +$LANG["word_administrator"] = "관리자"; +$LANG["word_after"] = "이후"; +$LANG["word_aquamarine"] = "남옥"; +$LANG["word_asc"] = "오름차순"; +$LANG["word_author"] = "저자"; +$LANG["word_author_c"] = "작성자 :"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«뒤로"; +$LANG["word_bcc_c"] = "숨은 참조 :"; +$LANG["word_before"] = "이전"; +$LANG["word_benefits"] = "장점"; +$LANG["word_blue"] = "푸른"; +$LANG["word_cancel"] = "취소"; +$LANG["word_cc_c"] = "참조 :"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "체크 박스"; +$LANG["word_checklist"] = "점검표"; +$LANG["word_client"] = "클라이언트"; +$LANG["word_client_c"] = "클라이언트 :"; +$LANG["word_clients"] = "클라이언트"; +$LANG["word_close"] = "닫기"; +$LANG["word_code"] = "코드"; +$LANG["word_column"] = "칼럼"; +$LANG["word_columns"] = "열"; +$LANG["word_columns_sp"] = "열 (S)"; +$LANG["word_complete"] = "완료"; +$LANG["word_configuration"] = "구성"; +$LANG["word_content"] = "내용"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "계속»"; +$LANG["word_copy"] = "부"; +$LANG["word_custom"] = "사용자 지정"; +$LANG["word_data"] = "데이터"; +$LANG["word_date"] = "날짜"; +$LANG["word_debugging_c"] = "디버깅 :"; +$LANG["word_delete"] = "삭제"; +$LANG["word_desc"] = "묘사"; +$LANG["word_direct"] = "직접"; +$LANG["word_disabled"] = "사용 불가"; +$LANG["word_documentation"] = "문서"; +$LANG["word_done"] = "완료"; +$LANG["word_drawbacks"] = "단점"; +$LANG["word_dropdown"] = "드롭 다운"; +$LANG["word_edit"] = "편집"; +$LANG["word_editable"] = "편집 가능한"; +$LANG["word_email"] = "이메일"; +$LANG["word_email_c"] = "이메일 :"; +$LANG["word_emails"] = "이메일"; +$LANG["word_enabled"] = "사용함"; +$LANG["word_equals"] = "같음"; +$LANG["word_error"] = "오류"; +$LANG["word_error_c"] = "오류 :"; +$LANG["word_examples_c"] = "예 :"; +$LANG["word_external"] = "외부"; +$LANG["word_fail"] = "실패"; +$LANG["word_field"] = "들"; +$LANG["word_field_sp"] = "필드 (들)"; +$LANG["word_fields"] = "필드"; +$LANG["word_fields_sp"] = "필드 (S)"; +$LANG["word_file"] = "파일"; +$LANG["word_file_b_uc"] = "[파일]"; +$LANG["word_files"] = "파일"; +$LANG["word_filters"] = "필터"; +$LANG["word_filters_sp"] = "필터 (S)"; +$LANG["word_for"] = "을 위해"; +$LANG["word_form"] = "양식"; +$LANG["word_form_c"] = "양식 :"; +$LANG["word_formatting"] = "서식"; +$LANG["word_forms"] = "양식"; +$LANG["word_found"] = "발견했다"; +$LANG["word_from"] = "로부터"; +$LANG["word_from_c"] = "올린사람 :"; +$LANG["word_general"] = "일반"; +$LANG["word_green"] = "녹색"; +$LANG["word_grey"] = "그레이"; +$LANG["word_height"] = "고도"; +$LANG["word_help"] = "도움"; +$LANG["word_hidden"] = "숨겨진"; +$LANG["word_highlight"] = "하이라이트"; +$LANG["word_horizontal"] = "수평"; +$LANG["word_hour"] = "시간"; +$LANG["word_hours"] = "시간"; +$LANG["word_html"] = "HTML을"; +$LANG["word_id"] = "아이디"; +$LANG["word_image"] = "이미지"; +$LANG["word_incomplete"] = "불완전"; +$LANG["word_install"] = "설치"; +$LANG["word_installation"] = "설치"; +$LANG["word_internal"] = "내부의"; +$LANG["word_language"] = "언어"; +$LANG["word_large"] = "큰"; +$LANG["word_like"] = "같은"; +$LANG["word_login"] = "로그인"; +$LANG["word_logo"] = "로고"; +$LANG["word_logout"] = "로그아웃"; +$LANG["word_main"] = "주된"; +$LANG["word_medium"] = "중"; +$LANG["word_menu"] = "메뉴"; +$LANG["word_menus"] = "메뉴"; +$LANG["word_minutes"] = "분"; +$LANG["word_misc"] = "기타"; +$LANG["word_module"] = "모듈"; +$LANG["word_modules"] = "모듈"; +$LANG["word_na"] = "N /"; +$LANG["word_name"] = "이름"; +$LANG["word_name_c"] = "이름 :"; +$LANG["word_never"] = "못"; +$LANG["word_next_rightarrow"] = "다음»"; +$LANG["word_next_step_rightarrow"] = "다음 단계»"; +$LANG["word_no"] = "아니오"; +$LANG["word_none"] = "없음"; +$LANG["word_notes"] = "노트"; +$LANG["word_notification"] = "알림"; +$LANG["word_number"] = "번호"; +$LANG["word_off"] = "끄기"; +$LANG["word_offline"] = "오프라인"; +$LANG["word_okay"] = "좋아요"; +$LANG["word_on"] = "켜기"; +$LANG["word_online"] = "온라인"; +$LANG["word_operator"] = "운영자"; +$LANG["word_options"] = "옵션"; +$LANG["word_orange"] = "오렌지"; +$LANG["word_order"] = "순서"; +$LANG["word_other"] = "기타"; +$LANG["word_other_c"] = "기타 :"; +$LANG["word_page"] = "페이지"; +$LANG["word_page_c"] = "페이지 :"; +$LANG["word_pass"] = "패스"; +$LANG["word_password"] = "비밀 번호"; +$LANG["word_password_c"] = "비밀 번호 :"; +$LANG["word_pending"] = "미정의"; +$LANG["word_permissions"] = "권한"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«이전"; +$LANG["word_private"] = "사립"; +$LANG["word_public"] = "공개"; +$LANG["word_purple"] = "퍼플"; +$LANG["word_recipient"] = "받는 사람"; +$LANG["word_recipient_sp"] = "받는 사람 (들)"; +$LANG["word_red"] = "붉은"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "제거"; +$LANG["word_remove_uc_leftarrow"] = "«제거"; +$LANG["word_reply_to"] = "답장"; +$LANG["word_reply_to_c"] = "답장 :"; +$LANG["word_required"] = "필수"; +$LANG["word_reset"] = "재설정"; +$LANG["word_resolved"] = "해결"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "열"; +$LANG["word_search"] = "검색"; +$LANG["word_searchable"] = "검색"; +$LANG["word_select"] = "선택"; +$LANG["word_setting"] = "설정"; +$LANG["word_settings"] = "설정"; +$LANG["word_show"] = "보이다"; +$LANG["word_size"] = "크기"; +$LANG["word_skipped"] = "건너뜀"; +$LANG["word_small"] = "작은"; +$LANG["word_solution"] = "용액"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "시작"; +$LANG["word_status"] = "상태"; +$LANG["word_string"] = "문자열"; +$LANG["word_subject"] = "주제"; +$LANG["word_subject_c"] = "주제"; +$LANG["word_submenu"] = "하위 메뉴"; +$LANG["word_submission"] = "제출"; +$LANG["word_submissions"] = "제출"; +$LANG["word_system"] = "시스템"; +$LANG["word_tab"] = "탭"; +$LANG["word_tabs"] = "탭"; +$LANG["word_tabs_sp"] = "탭 (S)"; +$LANG["word_test"] = "시험"; +$LANG["word_text"] = "텍스트"; +$LANG["word_textarea"] = "텍스트 영역"; +$LANG["word_textbox"] = "텍스트 상자"; +$LANG["word_theme"] = "테마"; +$LANG["word_themes"] = "테마"; +$LANG["word_time"] = "시간"; +$LANG["word_tiny"] = "작은"; +$LANG["word_tips"] = "도움말"; +$LANG["word_today"] = "오늘"; +$LANG["word_truncate_q"] = "자르기?"; +$LANG["word_uninstall"] = "제거"; +$LANG["word_unknown"] = "알 수없는"; +$LANG["word_update"] = "업데이트"; +$LANG["word_upgrade"] = "업그레 이드"; +$LANG["word_url_c"] = "홈페이지 :"; +$LANG["word_user"] = "사용자"; +$LANG["word_username"] = "아이디"; +$LANG["word_username_c"] = "아이디 :"; +$LANG["word_validation"] = "확인"; +$LANG["word_value"] = "값"; +$LANG["word_value_sp"] = "값 (들)"; +$LANG["word_verified"] = "안심 클릭 서비스"; +$LANG["word_verify"] = "확인"; +$LANG["word_version"] = "버전"; +$LANG["word_vertical"] = "수직"; +$LANG["word_view"] = "보기"; +$LANG["word_views"] = "조회"; +$LANG["word_warning"] = "경고!"; +$LANG["word_warning_c"] = "경고 :"; +$LANG["word_web"] = "웹"; +$LANG["word_welcome"] = "환영!"; +$LANG["word_width_c"] = "폭 :"; +$LANG["word_words"] = "말"; +$LANG["word_wysiwyg"] = "WYSIWYG 방식"; +$LANG["word_yellow"] = "황색"; +$LANG["word_yes"] = "예"; \ No newline at end of file diff --git a/global/lang/la.php b/global/lang/la.php new file mode 100644 index 00000000..17d00efe --- /dev/null +++ b/global/lang/la.php @@ -0,0 +1,1219 @@ +Uzmanību! Jūs esat izvēlējies {\$num_selected_on_page} iesniegumu šajā lapā un {\$num_selected_on_other_pages} citās lapās. Lūdzu, izvēlieties vienu no šīm iespējām:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Uzmanību! Jūs neesat izvēlējies nevienu argumentu šajā lapā, bet esat izvēlējies {\$num_selected_on_other_pages} citās lapās. Lūdzu, apstipriniet, ka vēlaties dzēst šos iesniegumus.
    "; +$LANG["confirm_delete_view"] = "Vai jūs tiešām vēlaties izdzēst šo skatu?"; +$LANG["confirm_refresh_page"] = "Vai tiešām vēlaties, lai atsvaidzinātu lapu? Tas zaudēsiet visus Jūsu izdarītās izmaiņas."; +$LANG["confirm_save_change_before_redirect"] = "Viens vai vairāki lauki ir atjaunoti. Vai vēlaties, lai saglabātu izmaiņas pirms pārprofilējot?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Vai esat pārliecināts, ka vēlaties Smart Aizpildīt datubāzē kolonnu nosaukumus? Tas būs pārrakstīt esošo vērtību."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Šī opcija automātiski ģenerē datu bāzes kolonnu nosaukumi, pamatojoties uz displeja tekstu laukiem, tāpēc no datubāzes tabulas saturu ir vieglāk lasīt."; +$LANG["confirm_smart_fill_display_names"] = "Vai esat pārliecināts, ka vēlaties Smart Aizpildīt Display nosaukumus? Tas būs pārrakstīt esošo vērtību."; +$LANG["confirm_ungroup_option_list"] = "Vai esat pārliecināts, ka vēlaties atgrupēt šo iespēju sarakstā? Visas iespējas tiks salikti vienā, atlasītu sarakstā."; +$LANG["confirm_uninstall_module"] = "Vai esat pārliecināts, ka vēlaties atinstalēt šo moduli? Visas moduļa dati tiks zaudēti."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Fri"; +$LANG["date_Friday"] = "Piektdiena"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "Pirmdiena"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sat"; +$LANG["date_Saturday"] = "Sestdiena"; +$LANG["date_Sun"] = "Saule"; +$LANG["date_Sunday"] = "Svētdiena"; +$LANG["date_Thu"] = "Ce"; +$LANG["date_Thursday"] = "Ceturtdiena"; +$LANG["date_Tue"] = "Ot"; +$LANG["date_Tuesday"] = "Otrdiena"; +$LANG["date_Wed"] = "Tr"; +$LANG["date_Wednesday"] = "Trešdiena"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Aprīlis"; +$LANG["date_month_August"] = "Augusts"; +$LANG["date_month_December"] = "Decembris"; +$LANG["date_month_February"] = "Februāris"; +$LANG["date_month_January"] = "Janvāris"; +$LANG["date_month_July"] = "Jūlijs"; +$LANG["date_month_June"] = "Jūnijs"; +$LANG["date_month_March"] = "Marts"; +$LANG["date_month_May"] = "Drīkst"; +$LANG["date_month_November"] = "Novembris"; +$LANG["date_month_October"] = "Oktobris"; +$LANG["date_month_September"] = "Septembris"; +$LANG["date_month_short_Apr"] = "Aprīlis"; +$LANG["date_month_short_Aug"] = "Augusts"; +$LANG["date_month_short_Dec"] = "Decembris"; +$LANG["date_month_short_Feb"] = "Februāris"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jūlijs"; +$LANG["date_month_short_Jun"] = "Jūnijs"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Drīkst"; +$LANG["date_month_short_Nov"] = "Novembris"; +$LANG["date_month_short_Oct"] = "Oktobris"; +$LANG["date_month_short_Sep"] = "Septembris"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Lietotāja konts ir izdzēsts."; +$LANG["notify_account_updated"] = "Jūsu konts ir veiksmīgi atjaunināts."; +$LANG["notify_add_display_values"] = "Pievienot Display Vērtības"; +$LANG["notify_admin_menu_updated"] = "Administrācija izvēlne ir atjaunota."; +$LANG["notify_admin_theme_overridden"] = "Administrators tēma ir manipulāciju iespēja."; +$LANG["notify_allow_url_fopen_not_set"] = "Atvainojiet, šo pārbaudi nevar palaist Web serveri. Tā prasa allow_url_fopen jānosaka līdz 1 no jūsu php.ini failā. Šis iestatījums ļauj PHP piekļūt failiem, izmantojot URL, kas ir nepieciešams veikt šo testu. Jūs varat pārbaudīt to manuāli, augšupielādējot failu uz šīs mapes caur FTP, tad mēģina tai piekļūt pie URL ir piegādājuši."; +$LANG["notify_change_temp_password"] = "Jūs vienkārši pieteicies ar pagaidu paroli. Jums vajadzētu nomainīt paroli tūlīt!"; +$LANG["notify_click_to_edit_new_submission"] = "Noklikšķiniet šeit, lai rediģētu jauno iesniegumu."; +$LANG["notify_client_account_menus_updated"] = "Klienta kontam (-iem) ir jāatjaunina, lai {\$menu_name} izvēlni. Tagad Jūs varat dzēst izvēlnes, kas iepriekš bija saistīts ar kontu (iem)."; +$LANG["notify_client_account_not_updated"] = "Klienta konts nevar tikt atjaunota."; +$LANG["notify_client_account_themes_updated"] = "Klienta kontam (-iem) ir jāatjaunina, lai {\$theme} tēmu. Tagad jūs varat atspējot tēma iepriekš saistīta ar kontu (iem)."; +$LANG["notify_client_account_updated"] = "Klienta konts ir veiksmīgi atjaunināts."; +$LANG["notify_client_menu_deleted"] = "Klients izvēlne ir izdzēsts."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Izvēlne tika svītrots, taču pēc klienta kontiem, tagad vairs nav menu! Jums nepieciešams atjaunināt šādus kontus:"; +$LANG["notify_client_menu_updated"] = "Klients izvēlne ir atjaunota."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Atvainojiet, izvēlnes jūs vienkārši mēģinājis izdzēst jau tiek izmantota ar klientiem, kas uzskaitīti turpmāk. Lai izdzēstu menu jums vispirms ir nepieciešams piešķirt klientiem citās izvēlnēs. Noklikšķiniet uz klienta vārda rediģēt šo individuālo kontu, vai arī nodot visu kontu citā izvēlnē, izmantojot nolaižamo zemāk."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Žēl, viena no tēmām, kuru tikko invalīdu jau izmanto šādu klientu kontiem. Lai atspējotu tēma jums vispirms ir nepieciešams piešķirt katram klientam uz citu tēmu. Noklikšķiniet uz klienta vārda rediģēt šo individuālo kontu, vai arī nodot visu kontu tēmu, izmantojot nolaižamo zemāk."; +$LANG["notify_edit_email_fields_link"] = "Noklikšķiniet šeit, lai norādītu, kurus veido lauki ir e-pasta lauki, lai jūs varat mērķēt tos jūsu e-pasta veidnes."; +$LANG["notify_edit_field_new_field"] = "Šis ir jauns lauks. Jums būs nepieciešams atjaunināt galveno lapu pirms to var pilnībā labot šajā jomā."; +$LANG["notify_edit_option_list_after_save"] = "Jums ir jāizvēlas variants saraksts un pēc tam saglabājiet izmaiņas, pirms to var rediģēt."; +$LANG["notify_email_field_config_deleted"] = "E-pasts konfigurācija ir izdzēsts."; +$LANG["notify_email_fields_not_updated"] = "Atvainojiet, mēs nevarējām update e-pasta laukos."; +$LANG["notify_email_fields_updated"] = "E-pasts lauki ir atjaunoti."; +$LANG["notify_email_not_sent"] = "Atvainojiet, e-pastu nevarēja nosūtīt. Lūdzu, sazinieties ar vietnes administrators zemāk norādīto adresi."; +$LANG["notify_email_not_sent_c"] = "Atvainojiet, e-pastu nevarēja nosūtīt:"; +$LANG["notify_email_sent"] = "E-pasts (s) tikuši nosūtīti."; +$LANG["notify_email_template_deleted"] = "E-pasts veidne ir svītrots."; +$LANG["notify_email_template_updated"] = "E-pasts veidne ir atjaunināta."; +$LANG["notify_enabled_module_list_updated"] = "Saraksts ļāva moduļu ir atjaunota."; +$LANG["notify_error_saving_fields"] = "Radās kļūda, saglabājot laukus."; +$LANG["notify_field_changes_saved"] = "Jūsu lauku (s) izmaiņas ir saglabātas."; +$LANG["notify_field_options_smart_filled"] = "Jūsu lauka opcijas ir Smart pildījumu."; +$LANG["notify_field_selected"] = "Lauks ir atlasīts. Klikšķiniet šeit, lai atgrieztos uz galveno jomu sarakstā."; +$LANG["notify_field_updated"] = "Šajā jomā ir atjaunota."; +$LANG["notify_file_not_uploaded"] = "Failu nevar augšupielādēt."; +$LANG["notify_file_uploaded"] = "Fails bija veiksmīgi augšupielādēti."; +$LANG["notify_filters_not_updated"] = "Radās kļūda atjauninātu šo klienta iesniegumu filtri."; +$LANG["notify_filters_updated"] = "Iesniegšana filtri ir atjaunināts attiecībā uz šo klientu."; +$LANG["notify_folder_correct_permissions"] = "Šī mape ir pareizs atļaujas."; +$LANG["notify_folder_url_match"] = "Mape un URL, šķiet, pareizi maču."; +$LANG["notify_folder_url_no_access"] = "Šo pārbaudi nevar veikt, jo PHP nevarēja piekļūt šai URL. To parasti izraisa URL ir aizsargāta ar paroli ar. Htaccess failu."; +$LANG["notify_folder_url_no_match"] = "Šī mape-URL apvienojums neatbilst šķiet maču."; +$LANG["notify_folder_url_unknown_error"] = "Nezināma kļūda. Jūs varat pārbaudīt to manuāli, augšupielādējot failu uz šīs mapes caur FTP, tad mēģina tai piekļūt pie URL ir piegādājuši."; +$LANG["notify_form_access_type_email_info"] = "Šī veidlapa ir administratora piekļuves veidu, tāpēc neviens klients nevar piekļūt tai un nav uzskaitīti nolaižamajā zemāk."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Atvainojiet, veidlapa ar šo ID nav."; +$LANG["notify_form_field_not_added"] = "Formas laukā '{\$fieldname}' nevar pievienot."; +$LANG["notify_form_field_options_updated"] = "Formas laukā iespējas tika atjaunināts."; +$LANG["notify_form_field_removed"] = "Formas laukā veiksmīgi noņemts."; +$LANG["notify_form_fields_removed"] = "Veidlapas lauki ir veiksmīgi noņemts."; +$LANG["notify_form_not_updated_notify_admin"] = "Veidlapas nevar atjaunināt. Lūdzu, sazinieties ar vietnes administratoru, lai par šo problēmu."; +$LANG["notify_form_settings_updated"] = "Veidlapas iestatījumi ir veiksmīgi atjaunināti."; +$LANG["notify_form_submission_updated"] = "Veidlapu iesniegšana ir atjaunota."; +$LANG["notify_form_tabs_updated"] = "Tabs ir atjaunoti."; +$LANG["notify_form_updated"] = "Veidlapa ir veiksmīgi atjaunināts."; +$LANG["notify_form_views_updated"] = "Veidlapa Views ir atjaunoti."; +$LANG["notify_install_invalid_db_info"] = "Atvainojiet, mēs nevarējām izveidot savienojumu ar datu bāzi izmantojot informāciju, kas jums sniedz. Kļūdas ziņojums datu bāzē atpakaļ, ir: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Jūsu veidlapa ir izveidots! Jūs varat konfigurēt veidā, izmantojot šīs cilnes."; +$LANG["notify_invalid_account_information_in_sessions"] = "Konta informācija glabājas sesijām ir nederīgs. Lūdzu, piesakieties atkal tālāk."; +$LANG["notify_invalid_license_key"] = "Atvainojiet, ka nav, šķiet, ir derīgas licences atslēgu. Lūdzu, mēģiniet ievadot to vēlreiz."; +$LANG["notify_invalid_permissions"] = "Jums nav atļaujas piekļūt šai lapai. Jūs esat izgājis."; +$LANG["notify_invalid_search_dates"] = "Lūdzu, izmantojiet datepicker ievadīt derīgu datumu vai datumus."; +$LANG["notify_invalid_upload_folder"] = "Upload mape ir vai nu par spēkā neesošu, vai tas nav rakstāms."; +$LANG["notify_lang_list_updated"] = "Pieejams UI valodu saraksts ir atjaunināts."; +$LANG["notify_login_info_emailed"] = "Jūsu pieteikšanās informācija ir pa e-pastu uz Jums."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Uzmanību, šis modulis jau ir uzstādīts!"; +$LANG["notify_module_installed"] = "Modulis ir uzstādīts. Klikšķiniet šeit, lai izvēlētos modulis."; +$LANG["notify_module_list_updated"] = "Modulis sarakstu ir atjaunota."; +$LANG["notify_module_uninstalled"] = "Modulis ir atinstalēta."; +$LANG["notify_module_updated"] = "{\$module} modulis ir atjaunināts līdz {\$version}. Klikšķiniet šeit, lai izvēlētos moduli ."; +$LANG["notify_multi_field_selected"] = "Lauks ir atlasīts. Klikšķiniet šeit, lai apskatītu un rediģētu lauka variantiem."; +$LANG["notify_multi_field_updated"] = "Šajā jomā ir atjaunota. Jums būs iespēja konfigurēt lauka iespējas pēc izveido formu."; +$LANG["notify_multiple_fields_found"] = "Multiple elementi tika atrasts ar šī lauka nosaukuma ({\$field_name}). Tas var notikt, ja jūsu lapa satur vairāk nekā viena veida vai jūs nejauši nosauca vienu no jūsu formām pati kā citas. Lūdzu, izvēlieties vienu, kuru vēlaties no saraksta zemāk."; +$LANG["notify_new_default_view_created"] = "Jauna, Noklusētais skats, kas satur visus jūsu veidlapas lauki ir izveidota."; +$LANG["notify_new_submission_created"] = "Iesniegšana ir izveidots. Jūs varat rediģēt to šeit."; +$LANG["notify_no_account_id_in_sessions"] = "Nav lietotāja konta ID, tika atrasts sesijās. Lūdzu, piesakieties atkal tālāk."; +$LANG["notify_no_api_installed"] = "Jums nav API uzstādītas"; +$LANG["notify_no_client_permissions"] = "Nav pieejamie uzstādījumi rediģēt."; +$LANG["notify_no_email_template_selected"] = "Lūdzu, izvēlieties e-pasta veidne."; +$LANG["notify_no_emails_defined"] = "Ne e-pasta vēstules ir noteiktas šo formu. Lai pievienotu jaunu, noklikšķiniet uz pogas zemāk."; +$LANG["notify_no_field_settings"] = "Šī lauka tips nesatur papildu iestatījumus."; +$LANG["notify_no_fields_in_tab"] = "Šajā cilnē nesatur laukus."; +$LANG["notify_no_option_lists"] = "Nav iespējas noteiktie saraksti. Noklikšķiniet pogu zemāk, lai izveidotu jaunu."; +$LANG["notify_no_test_submission"] = "Form Tools nav saņēmusi Veiksmīgs tests iesniegšanas yet."; +$LANG["notify_no_user_email_fields_configured"] = "Piezīme: Ja Jūs vēlaties nosūtīt e-pastu uz jebkuru e-pasta adresi, kas ir iekļauts formu, vispirms ir nepieciešams konfigurēt veidlapu email laukus."; +$LANG["notify_no_views"] = "Jūsu veidlapa nav neviena Views izveidotas! Jums būs nepieciešams vismaz viens skats, lai pārvaldītu jūsu veidlapu datus."; +$LANG["notify_no_views_assigned_to_client_form"] = "Šķiet, ka Jūsu lietotāja konts nav piešķirta nekāda veida viedokļus, lai jūs nevarēsiet redzēt datus. Lūdzu, sazinieties ar administratoru, lai iegūtu papildu palīdzību."; +$LANG["notify_no_views_defined"] = "Jums nav neviena Views definēti. Jūs nevarēsiet Lai skatītu šo veidlapu apgalvojumiem, ja vismaz viens skats ir izveidots. Noklikšķiniet pogu zemāk, lai izveidotu noklusējuma skatu."; +$LANG["notify_option_list_deleted"] = "Izvēles sarakstā ir dzēsta."; +$LANG["notify_option_list_updated"] = "Variants saraksts ir atjaunināts."; +$LANG["notify_public_form_omit_list_updated"] = "Klients neiekļaut sarakstā šīs veidlapas ir atjaunota."; +$LANG["notify_public_view_omit_list_updated"] = "Klientu izlaist saraksts šo skatu ir atjaunota."; +$LANG["notify_required_admin_pages"] = "Turpmākajās lappusēs ir vajadzīgas administratora izvēlnē: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Atvainojiet, nebija jebkuru darbību, kamēr tā mums bija log tevi. Lūdzu, piesakieties atkal tālāk."; +$LANG["notify_setup_options_updated"] = "Iestatīšanas opcijas ir atjaunoti."; +$LANG["notify_smart_fill_field_not_found"] = "Mēs nevarējām atrast jomā, ar šo vārdu ({\$field_name}) in veidlapu (-u). Jūs varat vai nu manuāli noteikt lauka tipu zemāk, vai noklikšķiniet Skip pogas rediģēt šo jomu vēlāk."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Jūsu fails (-i) sekmīgi tika augšupielādēti. Mēģiniet noklikšķināt Smart Aizpildīt pogas, lai mēģinātu vēlreiz. Ja šis solis neizdodas, jums nāksies izlaist šo soli un konfigurētu veidlapas laukus manally vēlāk."; +$LANG["notify_smart_fill_submitted"] = "Forma ir iesniegta. Atkarībā no lieluma veidlapas un skaits lauka variantiem, tas var aizņemt kādu laiku."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Sorry, vienu vai vairākus failus ieraksta nevar augšupielādēt. Jums nāksies izlaist šo soli un konfigurēt laukus manuāli."; +$LANG["notify_submission_and_files_deleted"] = "Iesniegšanas un jebkura faila (iem), kas saistīta ar to tika svītroti veiksmīgi."; +$LANG["notify_submission_copied"] = "Iesniegums ir ticis nokopēts."; +$LANG["notify_submission_copied_edit"] = "Iesniegums ir ticis nokopēts. Jūs varat to rediģēt tālāk."; +$LANG["notify_submission_deleted"] = "Iesniegums tika svītrots veiksmīgi."; +$LANG["notify_submission_deleted_with_problems"] = "Iesniegums tika svītrots, taču šādas problēmas radās, mēģinot izdzēst šādu failu (s):"; +$LANG["notify_submission_id_not_found"] = "Iesniegšana ID netika atrasta."; +$LANG["notify_submission_not_updated"] = "Iesniegšana nevar tikt atjaunota."; +$LANG["notify_submissions_and_files_deleted"] = "Iesniegumus un citus dokumentus (-i) saistībā ar tiem tika svītrots veiksmīgi."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} iesniegumi ir nokopēti."; +$LANG["notify_submissions_deleted"] = "Iesniegumi tika svītroti veiksmīgi."; +$LANG["notify_submissions_deleted_with_problems"] = "Iesniegumi tika svītroti, bet šādas problēmas radās, mēģinot izdzēst šādu failu (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Jūsu pārbaudes e-pastu nevarēja nosūtīt."; +$LANG["notify_theme_cache_folder_not_writable"] = "Šī tēma ir cache folder nav rakstāms. Lai iespējotu šo tēmu, {\$folder} mape ir pilnībā lasīt-rakstīt atļaujas."; +$LANG["notify_theme_list_updated"] = "Tēmu saraksts ir atjaunota."; +$LANG["notify_themes_settings_updated"] = "Jūsu tēmas uzstàdïjumi ir atjaunoti."; +$LANG["notify_view_deleted"] = "Skats ir izdzēsts."; +$LANG["notify_view_group_deleted"] = "Skatīt kopa ir dzēsta."; +$LANG["notify_view_missing_columns"] = "Oops! Atvainojiet, šis skats nav pilnībā izveidots vēl."; +$LANG["notify_view_missing_columns_admin_fix"] = "Noklikšķiniet šeit, lai norādītu, kuri lauki ir parādīti kā kolonnas šajā lapā."; +$LANG["notify_view_updated"] = "Skats ir atjaunota."; +$LANG["notify_your_email_sent"] = "Jūsu e-pasta adrese ir veiksmīgi nosūtīts."; +$LANG["phrase_100_per_page"] = "100 vienā lapā"; +$LANG["phrase_10_per_page"] = "10 vienā lapā"; +$LANG["phrase_15_per_page"] = "15 vienā lapā"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 vienā lapā"; +$LANG["phrase_25_per_page"] = "25 vienā lapā"; +$LANG["phrase_2_code"] = "2. Kods"; +$LANG["phrase_2_columns"] = "2 Columns"; +$LANG["phrase_2chars"] = "2 Palijas"; +$LANG["phrase_3_columns"] = "3 Columns"; +$LANG["phrase_4_columns"] = "4 Columns"; +$LANG["phrase_50_per_page"] = "50 vienā lapā"; +$LANG["phrase_accepting_submissions"] = "(pieņemot pieteikumus)"; +$LANG["phrase_access_admin_account_c"] = "Jūs varat piekļūt savam administrācija kontu šeit:"; +$LANG["phrase_access_type"] = "Access Type"; +$LANG["phrase_account_info"] = "Konta informācija"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Darbība jāveic"; +$LANG["phrase_add_client"] = "Pievienot Client"; +$LANG["phrase_add_client_menu"] = "Pievienot Client Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Pievienot noklusējuma iestatījumus »"; +$LANG["phrase_add_field"] = "Add Field"; +$LANG["phrase_add_fields"] = "Pievienot Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Pievienot lauku (s) »"; +$LANG["phrase_add_form"] = "Pievienot Form"; +$LANG["phrase_add_form_external"] = "Pievienot veidlapa - Ārējās"; +$LANG["phrase_add_form_internal"] = "Pievienot veidlapa - Iekšējā"; +$LANG["phrase_add_new_group_rightarrow"] = "Pievienot jaunu grupu »"; +$LANG["phrase_add_num_rows"] = "Pievienot {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Pievienot iesniegšana Button"; +$LANG["phrase_add_view_rightarrow"] = "Pievienot Apskatīt »"; +$LANG["phrase_adding_multi_page_form"] = "Pievienojot vairāku lapu formā ar API"; +$LANG["phrase_adding_single_page_form"] = "Pievienojot vienu lapu formā ar API"; +$LANG["phrase_admin_menu"] = "Administrator Menu"; +$LANG["phrase_admin_only"] = "Administrator Tikai"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Advanced settings »"; +$LANG["phrase_all_X_results_selected"] = "Visi {\$numresults} Results Izvēlētie"; +$LANG["phrase_all_clients"] = "Visi klienti"; +$LANG["phrase_all_clients_except_c"] = "Visas, izņemot klienti:"; +$LANG["phrase_all_clients_have_access"] = "(visi klienti ir piekļuve)"; +$LANG["phrase_all_fields"] = "Visi lauki"; +$LANG["phrase_all_fields_displayed"] = "Visi lauki tiek parādīti"; +$LANG["phrase_all_statuses"] = "Visi statusi"; +$LANG["phrase_all_submissions"] = "Visi iesniegumi"; +$LANG["phrase_allow_fields_edited"] = "Ļauj laukus labot"; +$LANG["phrase_alphanumeric"] = "Burtciparu (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Pieteikties Laika nobīde"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Piešķirt visiem uzskaitītajiem klienta kontu {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Piešķirt visiem uzskaitītajiem klienta kontu {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Gada beigās"; +$LANG["phrase_at_start"] = "Pie Start"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-atslēgt kontu pēc # neizdevās pieteikšanās mēģinājumi"; +$LANG["phrase_auto_size"] = "Auto izmēra"; +$LANG["phrase_available_clients"] = "Pieejams Klienti"; +$LANG["phrase_available_fields"] = "Pieejamie lauki"; +$LANG["phrase_available_option_lists"] = "Pieejamo opciju saraksts"; +$LANG["phrase_available_swatches"] = "Pieejams swatches"; +$LANG["phrase_available_swatches_c"] = "Pieejams swatches:"; +$LANG["phrase_available_tabs"] = "Pieejams Tabs"; +$LANG["phrase_available_views"] = "Pieejams Skatīts"; +$LANG["phrase_awaiting_form_submission"] = "Gaida veidlapu iesniegšanai."; +$LANG["phrase_back_to_field_list"] = "«atpakaļ uz Lauku saraksts"; +$LANG["phrase_back_to_search_results"] = "atpakaļ uz meklēšanas rezultātiem"; +$LANG["phrase_base_view_on"] = "Base View on ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Change Login Information"; +$LANG["phrase_characters_limit_p"] = "rakstzīmju ierobežojumu."; +$LANG["phrase_check_db_settings_try_again"] = "Lūdzu, veiciet dubultklikšķi uz datu bāzes iestatījumus un noklikšķiniet uz pogas Turpināt vēlreiz."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Pārbaudīt URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Clear Izlaist saraksts"; +$LANG["phrase_client_account_settings"] = "Client Account Settings"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Klienta karte Filtri »"; +$LANG["phrase_client_may_edit"] = "Klients var rediģēt"; +$LANG["phrase_client_menu"] = "Client Menu"; +$LANG["phrase_clients_can_access_form"] = "Klientiem, kuriem var piekļūt forma"; +$LANG["phrase_clients_can_access_view"] = "Klientiem, kuriem var piekļūt View"; +$LANG["phrase_clients_cannot_access_form"] = "Klienti, kuri nevar piekļūt forma"; +$LANG["phrase_clients_cannot_access_view"] = "Klienti, kuri nevar piekļūt View"; +$LANG["phrase_clients_may_edit"] = "Klienti var rediģēt"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Kods / Markup Field"; +$LANG["phrase_code_markup_type"] = "Kods / Atzīmes tips"; +$LANG["phrase_codes_c"] = "Error Codes:"; +$LANG["phrase_column_width"] = "Kolonnas platums"; +$LANG["phrase_company_name"] = "Uzņēmuma nosaukums"; +$LANG["phrase_configure_form_email_fields"] = "Konfigurēt Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Apstiprināt Mape-URL Match"; +$LANG["phrase_connect_rows"] = "Pievienojiet rindas"; +$LANG["phrase_copy_email_settings_from"] = "Copy e-pasta iestatījumus No ..."; +$LANG["phrase_copy_settings_from"] = "Kopēt iestatījumi No ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Izveidot kontu"; +$LANG["phrase_create_admin_account"] = "Izveidot Admin Account"; +$LANG["phrase_create_config_file"] = "Izveidot Config File"; +$LANG["phrase_create_database_tables"] = "Izveidot datu bāzes tabulām"; +$LANG["phrase_create_default_view"] = "Izveidot Noklusējuma skats"; +$LANG["phrase_create_file"] = "Izveidot failu"; +$LANG["phrase_create_group"] = "Izveidot grupu"; +$LANG["phrase_create_new_email"] = "Izveidot jaunu e-pasts"; +$LANG["phrase_create_new_menu"] = "Izveidot jaunu Menu"; +$LANG["phrase_create_new_option_list"] = "Izveidot jaunu variants saraksts"; +$LANG["phrase_create_new_option_list_group"] = "Izveidot jaunu opciju saraksts grupa"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Izveidot jaunu variants saraksts »"; +$LANG["phrase_create_new_view"] = "Izveidot jaunu View"; +$LANG["phrase_create_new_view_group"] = "Izveidot jaunu Skatīt Group"; +$LANG["phrase_custom_display_format"] = "Custom Display Format"; +$LANG["phrase_custom_recipient"] = "Custom Recipient"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Zils"; +$LANG["phrase_data_type"] = "Datu veids"; +$LANG["phrase_database_hostname"] = "Database resursdatora"; +$LANG["phrase_database_name"] = "Datubāzes nosaukums"; +$LANG["phrase_database_password"] = "Database parole"; +$LANG["phrase_database_settings"] = "Database Iestatījumi"; +$LANG["phrase_database_setup"] = "Database Setup"; +$LANG["phrase_database_table_prefix"] = "Datubāzes tabulu prefikss"; +$LANG["phrase_database_username"] = "Database lietotājvārds"; +$LANG["phrase_date_format"] = "Datuma formāts"; +$LANG["phrase_db_column"] = "DB sleja"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Default Klienta konts Theme"; +$LANG["phrase_default_date_field_search_value"] = "Noklusētā datuma laukā meklēšanu vērtība"; +$LANG["phrase_default_language"] = "Noklusējuma valoda"; +$LANG["phrase_default_menu"] = "Noklus º lne"; +$LANG["phrase_default_sessions_timeout"] = "Default Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Default Šķirot"; +$LANG["phrase_default_tab_label"] = "Dati"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Noklusētā vērtība"; +$LANG["phrase_default_values"] = "Noklusējuma vērtības"; +$LANG["phrase_default_values_new_submissions"] = "Standartvērtības jaunu iesniegumu"; +$LANG["phrase_delete_field"] = "Dzēst Field"; +$LANG["phrase_delete_form"] = "Dzēst Form"; +$LANG["phrase_delete_row"] = "Dzēst rindu"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Dzēst saistītie faili, dzēšot iesniegšana"; +$LANG["phrase_delete_view"] = "Dzēst skatu"; +$LANG["phrase_disconnect_rows"] = "Atvienot rindas"; +$LANG["phrase_display_email"] = "Display E-pasts"; +$LANG["phrase_display_name"] = "Displejs Name"; +$LANG["phrase_display_text"] = "Parādīt tekstu"; +$LANG["phrase_display_value"] = "Display Value"; +$LANG["phrase_edit_admin_menu"] = "Rediģēt Admin Menu"; +$LANG["phrase_edit_client"] = "Rediģēt klientu"; +$LANG["phrase_edit_client_menu"] = "Rediģēt Client Menu"; +$LANG["phrase_edit_email_template"] = "Rediģēt e-pasta Template"; +$LANG["phrase_edit_field"] = "Rediģēt Field"; +$LANG["phrase_edit_field_c"] = "Rediģēt Field:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Rediģēt veidlapu piekļuves veids]"; +$LANG["phrase_edit_option_list"] = "Rediģēt izvēles sarakstā"; +$LANG["phrase_edit_submission"] = "Rediģēt iesniegšana"; +$LANG["phrase_edit_submission_label"] = "Rediģēt iesniegšana Label"; +$LANG["phrase_edit_view"] = "Rediģēt View"; +$LANG["phrase_email_format"] = "E-pasts formāts"; +$LANG["phrase_email_settings"] = "E-pasta iestatījumi"; +$LANG["phrase_email_template"] = "E-pasta veidne"; +$LANG["phrase_email_template_name"] = "E-pasta veidnes nosaukuma"; +$LANG["phrase_error_learn_more"] = "Uzzināt vairāk par šo kļūdu."; +$LANG["phrase_error_text_intro"] = "Lūdzu noteikt šādu kļūdu (-as) un atkārtoti:"; +$LANG["phrase_errors_learn_more"] = "Noklikšķiniet uz kļūdas kodus, lai uzzinātu vairāk."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Ārējā forma"; +$LANG["phrase_external_form_info"] = "Ārējā forma Info"; +$LANG["phrase_external_your_own_form"] = "Ārējie (savu veidlapu)"; +$LANG["phrase_field_comments"] = "Field Komentāri"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Field Options"; +$LANG["phrase_field_size"] = "Field Size"; +$LANG["phrase_field_skipped"] = "Field Skipped"; +$LANG["phrase_field_specific_settings"] = "Lauka specifiski iestatījumi"; +$LANG["phrase_field_type"] = "Lauka tips"; +$LANG["phrase_field_type_no_validation"] = "Nav validācijas kārtulas pieejama šajā jomā veidu."; +$LANG["phrase_field_types"] = "Field veidi"; +$LANG["phrase_field_value"] = "Field Value"; +$LANG["phrase_field_values_to_display_values"] = "Lauka vērtībām »Display Vērtības"; +$LANG["phrase_final_touches_page_6"] = "6. Apdares skar"; +$LANG["phrase_finalize_form"] = "Pabeigt Form"; +$LANG["phrase_first_name"] = "Vārds"; +$LANG["phrase_footer_text"] = "Footer Text"; +$LANG["phrase_for_any_form_submission"] = "Jebkura veida iesniegšanu"; +$LANG["phrase_for_view_submissions"] = "Tikai iesniegumi, kas iederas šādas Skatīt (s)"; +$LANG["phrase_forgot_password"] = "Aizmirsāt paroli?"; +$LANG["phrase_form_already_selected"] = "Forma jau ir atlasīta"; +$LANG["phrase_form_email_field_b_c"] = "[Forma e-pasts lauks]:"; +$LANG["phrase_form_email_field_configuration"] = "Veidlapa E Field konfigurācija"; +$LANG["phrase_form_email_fields"] = "Veidlapa E-pasts lauki"; +$LANG["phrase_form_field"] = "Form Field"; +$LANG["phrase_form_field_contents"] = "Form Field Saturs"; +$LANG["phrase_form_field_name"] = "Form Lauka nosaukums"; +$LANG["phrase_form_field_placeholders"] = "Veidlapas laukā vietturi"; +$LANG["phrase_form_fields"] = "Form Fields"; +$LANG["phrase_form_info"] = "Form Informācija"; +$LANG["phrase_form_info_2"] = "2. Form Informācija"; +$LANG["phrase_form_list"] = "Veidlapa saraksts"; +$LANG["phrase_form_name"] = "Formas nosaukums"; +$LANG["phrase_form_page"] = "Form Page"; +$LANG["phrase_form_placeholders"] = "Form vietturi"; +$LANG["phrase_form_submission"] = "Veidlapu iesniegšana"; +$LANG["phrase_form_submissions"] = "Form Iesniegumi"; +$LANG["phrase_form_type"] = "Formas tips"; +$LANG["phrase_form_url"] = "Form URL"; +$LANG["phrase_form_urls"] = "Form URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Veidlapas piešķirts uz jebkuru kontu"; +$LANG["phrase_forms_page_default_message"] = "Veidlapas lapa noklusējuma ziņojumu"; +$LANG["phrase_ft_installation"] = "Form Tools Installation Script"; +$LANG["phrase_full_width"] = "Pilns platums"; +$LANG["phrase_getting_started"] = "iesākumam"; +$LANG["phrase_global_placeholders"] = "Global vietturi"; +$LANG["phrase_group_name"] = "Grupas nosaukums"; +$LANG["phrase_group_options_q"] = "Grupa iespējas?"; +$LANG["phrase_group_rows"] = "Grupa rindas"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Izcelt krāsu"; +$LANG["phrase_html_email"] = "HTML e-pasts"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Importa iespēja saraksts »"; +$LANG["phrase_input_length"] = "Ievades Garums"; +$LANG["phrase_installation_help"] = "Uzstādīšana Palīdzība"; +$LANG["phrase_internal_form"] = "Iekšējā forma"; +$LANG["phrase_ip_address"] = "IP adrese"; +$LANG["phrase_is_multi_page_form_q"] = "Vai šis ir multi-page formu?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response vietturi"; +$LANG["phrase_large_300px"] = "Liels (300px)"; +$LANG["phrase_large_400px"] = "Liels (400px)"; +$LANG["phrase_last_7_days"] = "Pēdējās 7 dienas"; +$LANG["phrase_last_logged_in"] = "Pēdējais apmeklējums"; +$LANG["phrase_last_modified"] = "Pēdējās izmaiņas"; +$LANG["phrase_last_modified_date"] = "Last modified datums"; +$LANG["phrase_last_name"] = "Uzvārds"; +$LANG["phrase_letters_only"] = "Vēstules Tikai"; +$LANG["phrase_light_brown"] = "Gaiši Brūna"; +$LANG["phrase_limit_email_content"] = "Limit e-pasta saturu uz laukiem View"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Piesakieties kā šajā lietotāja"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Pievienoties Lietotājvārds"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Main Settings"; +$LANG["phrase_manage_client"] = "Administrēt klientu"; +$LANG["phrase_manage_client_omit_list"] = "Pārvaldīt Klientu Izlaist saraksts"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Max garums"; +$LANG["phrase_max_length_words_chars"] = "- Maksimālais garums (vārdi / simb)"; +$LANG["phrase_may_add_submissions"] = "Var pievienot Iesniegumi"; +$LANG["phrase_may_copy_submissions"] = "Var kopēt iesniegumus"; +$LANG["phrase_may_delete_submissions"] = "Var dzēst Iesniegumi"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Izvēlnes vārds"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "Minimālais paroles garums"; +$LANG["phrase_module_description"] = "Modulis Apraksts"; +$LANG["phrase_module_info"] = "Modulis Informācija"; +$LANG["phrase_module_nav"] = "Modulis Nav"; +$LANG["phrase_month_to_date"] = "Mēnesis līdz šim"; +$LANG["phrase_multi_select"] = "Multi-izvēlēties"; +$LANG["phrase_multi_select_dropdown"] = "Multi-izvēlēties nolaižamajā"; +$LANG["phrase_multiple_fields_found"] = "Multiple Fields Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Vārds / Uzvārds"; +$LANG["phrase_new_blank_email"] = "New Blank E-pasts"; +$LANG["phrase_new_blank_option_list"] = "Jauns Tukšs variants saraksts"; +$LANG["phrase_new_blank_view"] = "New Blank View"; +$LANG["phrase_new_ft_installation"] = "New Form Tools uzstādīšana"; +$LANG["phrase_new_option_list"] = "Jaunais variants saraksts"; +$LANG["phrase_new_password"] = "Jaunā parole"; +$LANG["phrase_new_password_reenter"] = "Jaunā parole (lūdzu vēlreiz ievadiet)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "New View - Visi lauki"; +$LANG["phrase_next_client"] = "nākamais klients »"; +$LANG["phrase_next_field"] = "nākamais lauks »"; +$LANG["phrase_next_form"] = "nākamais veidlapa »"; +$LANG["phrase_next_view"] = "next View »"; +$LANG["phrase_no_clients"] = "Neviens klients"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Nē kompensēt"; +$LANG["phrase_no_option_lists_available"] = "Nav iespējas sarakstiem pieejams."; +$LANG["phrase_no_views"] = "Nav Skatīts"; +$LANG["phrase_no_views_with_filters_p"] = "(Nr. ar filtriem Views definēts)"; +$LANG["phrase_none_not_recommended"] = "Nav (nav ieteicams)"; +$LANG["phrase_not_assigned_to_option_list"] = "Šo lauku nav piešķirta izvēles sarakstā."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Nav vienāds"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "Nepatīk"; +$LANG["phrase_not_visible_to_client"] = "(nav redzams klients)"; +$LANG["phrase_num_clients_per_page"] = "Num Klienti Per Page"; +$LANG["phrase_num_emails_per_page"] = "Num E-pasti Per Page"; +$LANG["phrase_num_fields"] = "Vairākās jomās"; +$LANG["phrase_num_forms_per_page"] = "Num Veidlapas Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Izvēlnes Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Modules Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Num variants Saraksti skaits lapā"; +$LANG["phrase_num_options"] = "Num iespējas"; +$LANG["phrase_num_rows"] = "Num rindas"; +$LANG["phrase_numbers_only"] = "Skaitļi Tikai"; +$LANG["phrase_often_localhost"] = "(bieži "localhost")"; +$LANG["phrase_on_form_submission"] = "Veidlapas iesniegšana"; +$LANG["phrase_one_char_number"] = "Vismaz viena rakstzīme ir vairākas (0-9)"; +$LANG["phrase_one_char_upper"] = "Vismaz viena rakstzīme ir lielais burts"; +$LANG["phrase_one_special_char"] = "Vismaz viena no {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(tikai īpašiem klientiem ir pieejama)"; +$LANG["phrase_open_form_in_dialog"] = "Atveriet veidlapu, dialoglodziņš"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Atvērt šo veidlapu jaunā cilnē / logā"; +$LANG["phrase_option_list"] = "Variants saraksts"; +$LANG["phrase_option_list_name"] = "Variants saraksta nosaukums"; +$LANG["phrase_option_list_or_contents"] = "Variants saraksts / Saturs"; +$LANG["phrase_option_lists"] = "Variants saraksti"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Lapas sadaļa"; +$LANG["phrase_pass_on"] = "Nodot"; +$LANG["phrase_password_min"] = "Ir jābūt vismaz {\$length} rakstzīmes."; +$LANG["phrase_password_one_number"] = "Tajā jābūt vismaz vienam ciparam (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Tajā jāietver vismaz viens lielais burts."; +$LANG["phrase_password_requirements_c"] = "Parole prasībām:"; +$LANG["phrase_password_reset"] = "Paroles nomaiņa"; +$LANG["phrase_password_special_char"] = "Tai ir jābūt vismaz vienai no šīm rakstzīmēm: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Atļaujas / Citi iestatījumi"; +$LANG["phrase_permitted_file_types"] = "Atļautie failu tipi"; +$LANG["phrase_phone_number"] = "Tālruņa numurs"; +$LANG["phrase_phone_number_format"] = "Tālrunis formāts"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max atļauts file upload izmērs:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Lūdzu, apstipriniet"; +$LANG["phrase_please_enter_license_key"] = "Lūdzu, ievadiet jūsu licences atslēga"; +$LANG["phrase_please_select"] = "Please Select"; +$LANG["phrase_please_select_form"] = "Lūdzu izvēlieties forma"; +$LANG["phrase_prev_client"] = "«Prev klients"; +$LANG["phrase_prev_form"] = "«Prev forma"; +$LANG["phrase_prevent_password_reuse"] = "Novērst atkalizmantošanu # pēdējās paroles"; +$LANG["phrase_previous_field"] = "«iepriekšējā laukā"; +$LANG["phrase_previous_page"] = "Iepriekšējā lapa"; +$LANG["phrase_previous_view"] = "«Prev Apskatīt"; +$LANG["phrase_program_name"] = "Programmas nosaukums"; +$LANG["phrase_public_form_omit_list"] = "Valsts Form Izlaist saraksts"; +$LANG["phrase_public_view_omit_list"] = "Valsts View Izlaist saraksts"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Bija ar šādu vaicājumu problēmu:"; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Random veidlapu iesniegšana"; +$LANG["phrase_re_enter_password"] = "Vēlreiz ievadiet paroli"; +$LANG["phrase_recipient_type"] = "Saņēmēja veids"; +$LANG["phrase_redirect_url"] = "Novirzīšanas URL"; +$LANG["phrase_refresh_list"] = "Atsvaidzināt sarakstu"; +$LANG["phrase_refresh_module_list"] = "Atsvaidzināt Module List"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Atsvaidzināt tēmu saraksts"; +$LANG["phrase_register_new_email"] = "Reģistrēt jaunu e-pasts"; +$LANG["phrase_remaining_characters"] = "atlikušais rakstzīmju"; +$LANG["phrase_remaining_words"] = "atlikušo vārdi"; +$LANG["phrase_remove_tabs"] = "Noņemt Tabs"; +$LANG["phrase_required_password_chars"] = "Nepieciešama parole rakstzīmes"; +$LANG["phrase_resend_test_submission"] = "Resend Test iesniegšana"; +$LANG["phrase_return_form_list"] = "Atgriezties uz Form saraksts"; +$LANG["phrase_row_selected"] = "{\$num_rows} rinda cikls"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rindas cikls"; +$LANG["phrase_sample_data"] = "Sample Data"; +$LANG["phrase_save_changes"] = "Saglabāt izmaiņas"; +$LANG["phrase_search_keyword"] = "Meklēšana pēc atslēgas vārda"; +$LANG["phrase_security_settings"] = "Drošības iestatījumi"; +$LANG["phrase_select_all"] = "Atlasīt visu"; +$LANG["phrase_select_all_X_results"] = "Select All {\$numresults} Results"; +$LANG["phrase_select_all_on_page"] = "Iezīmēt visu lappusē"; +$LANG["phrase_select_date"] = "Izvēlieties datumu"; +$LANG["phrase_select_field"] = "Select Field"; +$LANG["phrase_select_swatch"] = "Izvēlieties Swatch"; +$LANG["phrase_selected_clients"] = "Selected Klienti"; +$LANG["phrase_selected_views"] = "Selected Skatīts"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Send Test Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Setting Value"; +$LANG["phrase_setup_options"] = "Setup Options"; +$LANG["phrase_show_all"] = "Parādīt visus"; +$LANG["phrase_show_form"] = "Rādīt forma"; +$LANG["phrase_size_large"] = "Large (teksts)"; +$LANG["phrase_size_medium"] = "Vidējs (<= 256 chars)"; +$LANG["phrase_size_small"] = "Neliels (<= 20 chars)"; +$LANG["phrase_size_tiny"] = "Niecīga (<= 5 chars)"; +$LANG["phrase_size_very_large"] = "Ļoti liels (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Izlaist Field"; +$LANG["phrase_skip_step"] = "Izlaist Step"; +$LANG["phrase_small_100px"] = "Mazs (100px)"; +$LANG["phrase_small_80px"] = "Mazs (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Aizpildiet laukus:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Aizpildīt User Documentation »"; +$LANG["phrase_sort_as"] = "Kārtot kā"; +$LANG["phrase_special_fields"] = "Īpaši lauki"; +$LANG["phrase_standard_fields"] = "Standarta lauki"; +$LANG["phrase_standard_filters"] = "Standarta filtri »"; +$LANG["phrase_step_1"] = "Step 1"; +$LANG["phrase_step_2"] = "Step 2"; +$LANG["phrase_step_3"] = "Step 3"; +$LANG["phrase_step_4"] = "Step 4"; +$LANG["phrase_step_5"] = "Solis 5"; +$LANG["phrase_step_6"] = "Solis 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tags formas iesniegumu"; +$LANG["phrase_subject_line"] = "Subject Line"; +$LANG["phrase_submission_date"] = "Iesniegšanas datums"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Iesniegumā: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Iesniegšanas veids"; +$LANG["phrase_submissions_per_page"] = "Iesniegumi par lapu"; +$LANG["phrase_system_check"] = "Sistēmas pārbaude"; +$LANG["phrase_system_fields_no_validation"] = "Jūs nevarat pievienot validācijas sistēmas laukiem."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test mapju atļaujas"; +$LANG["phrase_test_submission"] = "Test iesniegšana"; +$LANG["phrase_test_submission_3"] = "3. Test iesniegšana"; +$LANG["phrase_test_submission_received"] = "Test iesniegumi, kas saņemti"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "Teksts e-pasts"; +$LANG["phrase_text_template"] = "Teksts Template"; +$LANG["phrase_the_previous_month"] = "Iepriekšējo mēnesi"; +$LANG["phrase_theme_description"] = "Tēma Apraksts"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Noņemt Visi"; +$LANG["phrase_update_accounts"] = "Update kontu"; +$LANG["phrase_update_email_template"] = "Update Email Template"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Update Pasūtīt"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Upload File"; +$LANG["phrase_upload_files"] = "Augšupielādēt failus"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Upload mapes ceļš"; +$LANG["phrase_upload_folder_url"] = "Upload mape URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Izmantot noklusējuma vērtība?"; +$LANG["phrase_used_by_num_form_fields"] = "Izmanto # Form Fields"; +$LANG["phrase_uses_swatches"] = "Izmanto swatches"; +$LANG["phrase_valid_email"] = "Derīgas e-pasta"; +$LANG["phrase_validation_error"] = "Validācijas kļūda"; +$LANG["phrase_validation_rule"] = "Validācijas noteikumus"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Skatīt Group"; +$LANG["phrase_view_id"] = "Skatīt ID"; +$LANG["phrase_view_name"] = "View Vārds"; +$LANG["phrase_view_placeholders"] = "Skatīt vietturi"; +$LANG["phrase_view_submissions"] = "View Iesniegumi"; +$LANG["phrase_view_uploaded_files"] = "uzskata, augšupielādēto failu"; +$LANG["phrase_viewing_range"] = "[apskatei {\$startnum} līdz {\$endnum}]"; +$LANG["phrase_when_sent"] = "Nosūtot"; +$LANG["phrase_when_submission_is_deleted"] = "Kad iesniegumu svītrots"; +$LANG["phrase_when_submission_is_edited"] = "Kad iesniegumu edited"; +$LANG["phrase_who_can_access"] = "Kas var piekļūt?"; +$LANG["phrase_word_limit_p"] = "vārdu limitu."; +$LANG["phrase_year_to_date"] = "Gada sākuma"; +$LANG["phrase_yes_for_all_views"] = "Jā, uz visiem Views"; +$LANG["phrase_yes_for_specific_views"] = "Jā, īpašu Views"; +$LANG["phrase_your_account"] = "Your Account"; +$LANG["phrase_your_email"] = "Jūsu E-pasts"; +$LANG["phrase_your_email_address"] = "Jūsu e-pasta adrese"; +$LANG["processing_form_disabled"] = "Atvainojiet, šī veidlapa ir atspējota."; +$LANG["processing_form_incomplete"] = "Atvainojiet, šo veidlapu nešķiet pilnībā izveidot no iekšpuses Form Tools. Visdrīzāk iemesls šī problēma ir tā, ka tu noņem "form_tools_initialize_form" slēptās formas laukā, bet nebija pilnīgi visu posmiem "Pievienot Forma" procesu.

    Lūdzu, piesakieties un pārskata veidlapu konfigurāciju."; +$LANG["processing_init_complete"] = "Paldies! Jūsu pārbaudes iesniegums ir nodots cauri veiksmīgi. Lūdzu, atgriezieties Form Tools Administrācijas panelis un noklikšķiniet uz "Atsvaidzināt" pogas apakšā Pievienot Form Step 3 lapu, lai pabeigtu izveidot savu formu."; +$LANG["processing_invalid_form_id"] = "Atvainojiet, tas nav, šķiet, ir derīgs formas ID."; +$LANG["processing_no_form_id"] = "process.php prasa veidlapa ID pārstrādei. Pārliecinieties, ka jūsu veidlapa ietver slēptu lauku ar nosaukumu "form_tools_form_id", kas ir gar formas ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Forma Tools nevar noteikt, kur novirzīt kad tie neienāk CAPTCHA pareizi. Lūdzu apliecību slēptā laukā ar nosaukumu form_tools_form_url satur URL formā."; +$LANG["processing_no_post_vars"] = "process.php nesaņem datus. Piezīme: šo skriptu nevar tikt iekrautas tieši jūsu pārlūkprogrammā.
    Pārliecinieties, ka jūsu veidlapu nosūtot pa pastu."; +$LANG["processing_no_redirect_url"] = "Iesniegšana ir apstrādāti pareizi, bet jums nav noteikts novirzīšanas URL šo formu! Rediģēt jūsu veidlapas forma Rīki UI un pievienot novirzīšanas URL."; +$LANG["special_language"] = "Latvian"; +$LANG["special_language_locale"] = "Latvian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Visiem jauniem klientu kontiem tiks izveidota ar iestatījumiem un atļaujas, kas noteiktas turpmāk. Ignorēt iestatījumus konkrētajam klientam, rediģēt klienta kontam un apmeklēt viņu Settings tab."; +$LANG["text_add_form_choose_integration_method"] = "Izvēlēties metodi, kuru vēlaties izmantot, lai integrētu jūsu veidlapas ar veidlapu Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Šī metode izmanto veidlapu Tools API , kas iekļauta galvenā forma Tools skriptu. API nodrošina vairākas noderīgas funkcijas, lai padarītu darbu integrēt jūsu veidlapas ar Form Tools tik vienkāršu, cik iespējams. Nav nekādu ierobežojumu, kā jūsu veidlapu var iesniegt, ja jūs izmantojat API. Jūs varat iesniegt saturu vienā piegājienā, vai lapu pēc lapas, jūs varat pievienot savu pielāgoto servera puses validāciju, CAPTCHA attēlu, varat izvēlēties iesniegt informāciju tagad, bet tikai pateikt to, lai parādītu iesnieguma veidlapas Tools UI vēlāk (sk. pabeigts Iesniegumi sadaļu API palīdzības dokumentācija)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Lai iesniegtu veidlapas datus, izmantojot PHP, veidlapas jāatrodas tajā pašā tīmekļa vietnē, kā šīs formas Tools uzstādīšanu. Otrkārt, nav tehnisks, un iesācēju Form Tools lietotājiem, šo metodi var nedaudz iebiedēt sākumā. Bet tur ir daudz dokumentāciju, lai palīdzētu jums, kas, ieskaitot divus vienkāršus konsultācijas par integrēt jūsu vienu un vairāku lapu veidlapas (tās ir saistītas ar vēlāku pasākumu)."; +$LANG["text_add_form_direct_submission_benefits"] = "Tas ir vienkāršākais veids, lai iesniegtu veidlapu forma Tools. Tas neprasa nekādu zināšanu par PHP un prasa tikai ļoti nelielas izmaiņas savā veidā. Tas ir liels uz mazākām formām, ja vēlaties tikai sniegt informāciju datu bāzē, tad pārvirzīt lietotājam "thankyou" lapā."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Šī iesniegšana metode ir ļoti viegli lietojamas, bet nav pietiekami daudz kontroles sarežģītāk veidlapas. Multi-page veidlapas vai veidlapu, kas prasa server-side apstiprināšanu ir labāk piemēroti otro metodi: iesniegšanai, izmantojot veidlapu Tools API."; +$LANG["text_add_form_field_types1"] = "Gandrīz darīts! Šī lapa mēģina atrast visu savu veidlapas laukus, un nosaka to lauku tipi. Noklikšķiniet Smart Aizpildiet pogas labajā pusē, lai sāktu. Jums būs atļauts tikai turpināt, ja visām darbībām, ir atrisinātas - tie ir jautājumi, kas nepieciešama jūsu uzmanību parādās "rīcību, kas vajadzīga " ailē."; +$LANG["text_add_form_field_types2"] = "Ja jūsu veidlapas nav HTML, noklikšķiniet izlaist pogu, lai turpinātu. To visu var konfigurēt vēlāk."; +$LANG["text_add_form_field_types3"] = "Tas pārlādējas saturs veidlapas (s). Piezīme: šī pārrakstīs Jūsu izdarītās izmaiņas šajā lapā."; +$LANG["text_add_form_field_types4"] = "Ja jums rodas problēmas, klikšķiniet šeit, lai izlaistu šo soli. Visi neatrisināti lauki ir noteikts, lai izmantotu noklusējuma vērtībām. Jūs varat pielāgot šos laukus vēlāk."; +$LANG["text_add_form_field_types_manual_upload"] = "Ja Jums nav izdevies Smart Aizpildiet jūsu laukus, jūs varētu vēlēties mēģināt alternatīvu risinājumu: augšupielādes kopijas jūsu veidlapu laukus zemāk."; +$LANG["text_add_form_field_types_manual_upload2"] = "Piezīme: nav augšupielādēt izejvielu PHP lapas (vai citu server-side kodu) - vienkārši augšupielādēt HTML versijas. Lai iegūtu šo, apskatīt un saglabāt lapu, no jūsu interneta pārlūkā."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Bija vairākus laukus, kas nevar atrast tādā formā lapā norādīto. Tas ir galvenokārt iespējams izraisījis viens no šādiem:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Jūs ievadījāt vienu vai vairākas veidlapas URL jūsu multi-page formā nepareizi."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Viena vai vairākas lapas veidlapas ir aizsargāta ar paroli, un skripts nevar piekļūt lapai."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Jūs nepareizi ievadījis formā URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Noklikšķiniet šeit, lai atgrieztos veidlapas informācijas lapu, lai pārbaudītu iestatījumus."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Esat mainījis savu formu (-ām), pēc tam, kad testa iesniegšanu"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Noklikšķiniet šeit, lai laiž cauri citam testam iesniegšanas."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Jūsu veidlapa ir aizsargāts ar paroli un skripts nevar piekļūt lapai."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Citā cilnē / logā šo pārlūku, ieejiet savā formā, tad noklikšķiniet uz Atsvaidzināt Page pogu zemāk, lai mēģinātu vēlreiz atrast laukus."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Ja neviens no iepriekš minētajiem risinājumiem darbu, jūs arī varat mēģināt manuāli augšupielādējot savu formu apstrādei ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Bija vairākus laukus, kas nevar atrast tādā formā lapās Jūs esat izvēlējies. Tas ir galvenokārt iespējams izraisa kādu no šiem:"; +$LANG["text_add_form_help_link"] = "Ja jūs satikt nepatikšanas laikā šiem soļiem, izmēģiniet nolasīt lietotāja dokumentāciju ."; +$LANG["text_add_form_step_1_text_1"] = "Turpmākajās lappusēs palīdzēs jums konfigurēt veidlapu Tools pasākumus, lai saglabātu savu formu iesniegumus. Pirms turpināt, lūdzu, pārbaudiet, ka:"; +$LANG["text_add_form_step_1_text_2"] = "veidlapas jau ir izveidots, un tas ir pieejama caur URL (localhost ir fine)"; +$LANG["text_add_form_step_1_text_3"] = "var rediģēt jūsu veidlapas"; +$LANG["text_add_form_step_2_para_2"] = "Atveriet savu formu redaktors pēc Jūsu izvēles un mainīt formu taga, lai turpmāk, ieskaitot divus slēptos laukus."; +$LANG["text_add_form_step_2_para_3"] = "Tālāk, atveriet veidlapu Web pārlūkprogrammā. Aizpildīt jebkurā darbības jomā, un iesniedz to. Pēc tam, kad, jums vajadzētu redzēt ziņojumu. Kad šī ziņa tiek parādīta, atgriezieties šajā lapā un noklikšķiniet uz atsvaidzināšanas pogas. Kad šis process būs pabeigts, jūs redzēsiet turpmāk pogu zemāk, ņemot jums nākamo soli."; +$LANG["text_add_form_step_2_para_6"] = "Jūsu veidlapu iesniegšanu, ietver šādas vērtības. Tās var noteikt tieši, izmantojot PHP vai izlaista kopā ar veidlapu pati. Zemāk ir piemēri katrā. (\$ Varname) ir hash (vai asociatīvais masīvs) visu veidlapu iesniedz informāciju - tā ir parasti (\$ postvar) vai (\$ sessionvar) mainīgs, bet tā var būt pasūtījuma veidošanai."; +$LANG["text_add_form_step_2_text_2"] = "Ievadiet URL "thankyou " lapā šeit. Tas ir, ja jūs vēlaties no cilvēkiem, kas vērsta uz pēc tam, kad veidlapa ir iesniegta."; +$LANG["text_add_form_step_3_para_1"] = "Šajā lapā ir uzskaitītas visas jomas, veidlapas iesniegšanu. Lūdzu izskatīt katrā jomā un novērstu, ka jums nav nepieciešams glabāt uz katru iesniegšanai. Ja izdzēšat derīgs jomā, nelaimes gadījums, vai vēlas mainīt saglabātās informācijas veidlapas, atgrieztos iepriekšējā lapā, lai nosūtītu jaunu testu iesniegumu."; +$LANG["text_add_form_step_3_para_2"] = "Piezīme: ja jūs sūtāt vairākas vērtības, izmantojot izvēles rūtiņas, vai vairāku atlasītu kaste, pārliecinieties, vai lauka nosaukums beidzas ar [] rakstzīmes (skatīt lietotāja dokumentācijai vairāk informāciju)."; +$LANG["text_add_form_step_3_text_1"] = "Lūk, kur jautri sākas! Šajā brīdī, veidlapa Instrumenti gaida testam iesniegumu veidlapas. Tā izmantos šo veidlapu iesniegšanas zināt, kāda informācija būtu saglabāti datu bāzē."; +$LANG["text_add_form_step_3_text_2"] = ", norādot savu formu Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "izmantojot veidlapu Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Lai palīdzētu integrēt veidlapas, mēs iesakām izlasīt vienu no šādiem konsultācijas:"; +$LANG["text_add_form_step_3_text_5"] = "Tās paskaidro, kā izveidot veidlapas, gatavojoties pārbaudes iesniegšanas un arī citu informāciju, kas var palīdzēt. PHP jums būs nepieciešama līnija ir:"; +$LANG["text_add_form_step_3_text_6"] = "Tas nodrošina datus faktiski nosūta veidlapu Tools. Kad esat pakļaut savu testu uzskata, noklikšķiniet pogu zemāk."; +$LANG["text_add_form_step_3_text_7"] = "Uz lapas pirms jūsu final "paldies" lapa, pārliecinieties, pievienot šādu parametru \$ parametri mainīgais lielums:"; +$LANG["text_add_form_step_5_para_1"] = "Datu bāze ir izveidota, lai šo formu un veidlapa ir aktivizēts lietošanai. Ja jūs noslēdzat iesniegumu, norādot savu formu process.php, lūdzu, atgriezieties savā veidā un novērst šādu slēpto jomā:"; +$LANG["text_add_form_step_5_para_2"] = "Tad apmeklējiet jūsu "paldies" lapa iztukšot sesijas. Kad tas ir izdarīts, visu jauno formu iesniegumi tiks apstrādāta un uzglabāta veidlapa Tools. Mēģināt padarīt iesniegšanas vai divus, lai pārbaudītu informāciju visiem augšupielādējot pareizi."; +$LANG["text_add_form_step_5_para_3"] = "Ja jūs vēlaties precizēt savu forma iespējas, piemēram, automātiska e-pastu, pievienojot papildu veidlapas lauki jomā, vai pielāgot veidlapu lauka tipu, varat rediģēt savu veidlapu jebkurā vietā."; +$LANG["text_add_form_step_5_para_4"] = "Tā kā jūsu Veidlapa satur failu augšupielādes laukus, būs jākonfigurē katrā jomā, lai norādītu file upload mapi, kādi faili ir atļauti un. To var atrast cilnes Displejs un rediģēt veidlapas lapā."; +$LANG["text_add_form_step_5_para_5"] = "Ja iesniegums tika nosūtīts, izmantojot API, mainīt ft_api_init_form_page līniju pirmajā lapā jūsu veidlapu:"; +$LANG["text_add_submission_button"] = "Pievienot iesniegšana poga parādās tikai uzskatus, kas "var pievienot iesniegumu " iespēju, kas uz "jā "."; +$LANG["text_admin_email_placeholder_info"] = "Šī ir e-pasta adrese Form Tools administratora definēts jūsu konta iestatījumus. Tas tikai Rezultātu e-pasta adresi, tādēļ, ja jūs vēlaties izmantot kā HTML saiti, jums būs nepieciešams wrap to <a> tag, piemēram, tā:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Arī default pieteikšanās lapu tēma)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Vispirms, lūdzu, izvēlieties veidlapas veidu."; +$LANG["text_client_form_page"] = "Šajā lapā ir uzskaitītas visas veidlapas un skati piešķirts šai klientu. Padoms: lai viņus skatīt veidlapas iesniegumiem, tiem piešķir vismaz vienu skatu."; +$LANG["text_client_map_filters_desc1"] = "Klienta karte filtri ļauj ierobežot apsvērumus, kas parādās šajā Aplūkot pēc kartēšanas vērtības veidā jomā ar klienta kontā vērtības."; +$LANG["text_client_no_forms"] = "Jums šobrīd nav veidlapas pārskatīšanai."; +$LANG["text_client_welcome"] = "Laipni lūdzam! Šī programma veikali visa informācija, ko jūsu portāla apmeklētājiem. Lai apskatītu iesniegumus par īpašā veidā vienkārši uzklikšķiniet uz SKATĪT saiti, vai skatiet atrodas visvairāk pa kreisi navigācijas izvēlni citas iespējas."; +$LANG["text_config_file_created"] = "Jūsu config.php fails ir izveidots."; +$LANG["text_config_file_not_created"] = "Mēs nevarējām izveidot savu config.php failu. Jums būs nepieciešams izveidot failu manuāli."; +$LANG["text_config_file_not_created_instructions"] = "Nokopējiet un ielīmējiet saturu no iedaļā stājas failu ar nosaukumu config.php un augšupielādēt to, izmantojot FTP Form Tools / pasaules mapi (mape, kas satur arī dažus citus failus un direktorijas, vienu failu ar nosaukumu library.php)."; +$LANG["text_confirm_delete_form"] = "Jā, es vēlos dzēst šo formu"; +$LANG["text_create_admin_account"] = "Tagad mēs spēsim radīt administratora kontu. Tas ir, lai pārvaldītu visas veidlapas rīki aspektus, piemēram, pievienojot veidlapas un veidojot klientu kontiem."; +$LANG["text_create_new_client_account"] = "Izmantojiet zemāk esošo formu, lai izveidotu jaunu klientu kontu. Visi lauki ir jāaizpilda obligāti."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "skatīt PHP {\$datefunctionlink} funkciju formatēšanas iespējām"; +$LANG["text_default_file_settings_page"] = "Šī lapa nosaka failu augšupielāde iestatījumus Form Tools uzstādīšana. Šie noteikumi attiecas uz visām faili augšupielādēti caur Form Tools, ja nav skaidri ignorē par atsevišķu veidlapu jomā. Piezīme: ja maināt upload mape pēc faili ir augšupielādēts, tie tiks automātiski pārvietota uz jaunu mapi."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Pirms turpināt, jums vajadzēs atjaunināt jūsu / themes / default / cache mapi, lai varētu pilnībā lasīt un rakstīt atļaujas. Kad tas ir izdarīts, šī ziņa izzudīs, un jūs varat instalēt skriptu."; +$LANG["text_default_values_in_view"] = "Šī sadaļa nav obligāta. Visa informācija radīts ar šo View saturēs noklusējuma vērtības, kas norādītas šeit."; +$LANG["text_delete_all_forms"] = "Es vēlos izdzēst visus failus, kas tika augšupielādēti, izmantojot šo veidlapu"; +$LANG["text_delete_form_warning"] = "Vai jūs tiešām vēlaties izdzēst šo veidlapu? This action cannot be undone. Visi dati tiks neatgriezeniski zaudēti!"; +$LANG["text_edit_admin_menu_page"] = "Jūs varat rediģēt savas izvēlnes zemāk. Lai nodrošinātu jums vienmēr ir pieejama visa funkcionalitāte pieejama veidlapa rīki šādas lapas ir nepieciešams: formas, Klienti, Jūsu kontu, moduļi, Uzstàdïjumi un Iziet."; +$LANG["text_edit_client_menu_page"] = "Šajā sadaļā jūs varat pielāgot kreisajā navigācijas slejā par katru lietotāju. Jūs varat izveidot tik daudz klientu izvēlnes, cik vēlaties un nodot konta uz vienu no tiem. Pēc noklusējuma tur ir divas izvēlnēm: viena jums, administrators, un viens par visiem klientu kontiem. Administratora konta var tikt mainīta, bet nav noņemts."; +$LANG["text_edit_tab_summary"] = "Ja vēlaties grupai šo skatu ir lauki cilnēs, vienkārši ievadiet cilnes nosaukumus zemāk. Pēc tam, kad esat pabeidzis, izvēlieties atbilstošu tab katra lauka grupas Lauki tab ."; +$LANG["text_edit_view_list_page"] = "Šī cilne kontroli, kas lauki tiek parādīti kā kolonnas uz iesnieguma Listing lapā, un dažas papildu iestatījumus šajās jomās. Piezīme: Mēs iesakām jums pievienot ne vairāk kā 4 vai 5 no svarīgākajām jomām Skata."; +$LANG["text_email_settings_intro"] = "Šajā lapā jūs varat noteikt, kuras veidlapas laukus veikals e-pastu un tām atbilstošie nosaukumi. Kad jūs definētu tos šeit, Jūs varat tos izmantot jūsu e-pasta veidnes, kas saņēmējiem. Šajā sadaļā ir pilnīgi obligāta."; +$LANG["text_email_tab_summary"] = "Šajā sadaļā jūs varat izveidot jebkādu skaitu e-pasti, kas jānosūta, ja veidlapas ir jāiesniedz un citi izraisa."; +$LANG["text_email_template_tab"] = "Šajā sadaļā jūs varat noteikt, kāds saturs parādās e-pastu. Ja jūs vēlaties nosūtīt savu e-pastu, jo tikai teksts vai e-pastu, ievadīt tikai vērtības, kas sadaļā. Ja ievadāt vērtību, gan e-pastu tiks nosūtīti abos formātos."; +$LANG["text_email_template_text_1"] = "Ir notikusi iesniegumā, izmantojot veidlapas, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Ir notikusi iesniegumā, izmantojot veidlapas, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Paldies par Jūsu iesniegumu!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Kļūdas ziņojums, kas apliecina, ka laukā nav validāciju"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Ārējās formas ir formas, kas jau eksistē jūsu mājas lapā, vai kaut kur internetā. Atlasiet šo opciju, ja jums ir jūsu pašu veidlapu, kuru vēlaties, lai integrētu ar Form Tools."; +$LANG["text_fields_tab_summary"] = "Šajā lapā ir uzskaitīti visi jūsu veidlapas laukus. Kontrolēt, kā tie parādās, kad pārlūkošanas iesniegumi, skatiet Views tab . Dzēšot lauku šajā lapā būs izdzēst to no visiem iesniegumiem, tāpēc esiet uzmanīgi!"; +$LANG["text_file_extension_info"] = "Ievadiet failu paplašinājumi atdalītas ar komatiem (piemēram, jpg, gif, png) vai atstāt tukšu, lai varētu nodrošināt kādu faila tipu."; +$LANG["text_file_field_placeholders_info"] = "File lauki ir divas īpašas vietturi: FILEURL un faila nosaukums. FILEURL ir pilns URL failu, lai jūs varat piesaistīt tieši to savā e-pastu; FILENAME ir tikai faila nosaukumu."; +$LANG["text_filters_page"] = "Tikai tie iesniegumi, kas atbilst noteikumiem, jūs definētu turpmāk parādīsies šo skatu."; +$LANG["text_filters_tips"] = "Lai iegūtu padomus par to, kā izmantot iesniegšanas filtrus, skatīt lietotāja dokumentācijai."; +$LANG["text_forgot_password"] = "Nekādu problēmu. Tikai ievadiet savu lietotāja vārdu zemāk, un savu pieteikšanās informāciju tiks nosūtīta uz jūsu e-pasta adresi failu. Ja esat aizmirsis savu lietotāja vārdu, lūdzu, rakstiet vietnes administrators {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Šī veidlapa ir viena vai vairāku failu augšupielāde jomās:"; +$LANG["text_form_placeholder_info"] = "Turpmāk vietturus var izmantot jebkuru e-pasta veidnes un valodu viettura jomā, neatkarīgi no tā, kāds skats e-pasta veidne ir piešķirts. JAUTĀJUMS vietturi ir īpašā forma jautājumu; ATBILDE vietturus ir atbildes uz katru jautājumu."; +$LANG["text_form_submission_date_placeholder"] = "Datums, kad iesniegums tika veikts."; +$LANG["text_form_tools_form_url"] = "Pilnu URL formā. Tas ir tikai vērtība, ārējo formu."; +$LANG["text_form_tools_login_url"] = "Login URL Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Piezīme: šo veidlapu šobrīd ir administratora piekļuves veidu, lai neviens no klientu kontiem būs iespēja redzēt šo skatu."; +$LANG["text_form_view_permission_info_private"] = "Piezīme: šo veidlapu šobrīd ir Private piekļuves veidu, lai publiskās, gan privātās iespējas šeit būs tikai uz to apakškopu klientiem."; +$LANG["text_ft_installed"] = "Sveicieni, veidlapa Tools ir veiksmīgi ieinstalēts!"; +$LANG["text_global_placeholder_info"] = "Šie vietturi var izmantot jebkurā veidni un jebkurā formā."; +$LANG["text_group_name_explanation"] = "Laukiem pievieno caur Add Form process, šī vērtība ir pilnšļirces, lai attēlotu tekstu neatkarīgi no lauka izmantošanas vērtību. Jūs varat to mainīt, lai labāk raksturotu saturu."; +$LANG["text_install_create_config_file"] = "Form Tools veikali Jūsu servera un datu bāzes iestatījumus failu ar nosaukumu config.php atrodamas jūsu / pasaules / mapi. Noklikšķiniet uz "Izveidot File" pogu, lai automātiski ģenerētu failu servera."; +$LANG["text_install_create_database_tables"] = "Tagad mēs spēsim radīt Form Tools datu bāzes tabulām. Šis solis nepieciešams datubāzē sevi jau ir izveidoti. Ja neesat pārliecināts, kā to izdarīt, lūdzu, sazinieties ar jūsu hostinga sniedzēju."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" parasti nozīmē to, ka resursdatora jums ir neprecīza. Varbūt mēģiniet nosakot to par "localhost" - tas ir kopēju ceļu, lai atsauktos uz "vietējā" datu bāzes par web serveri."; +$LANG["text_install_db_tables_error_tip_2"] = ""Nevar izveidot savienojumu ar vietējo MySQL serveri caur ligzda" ir datu bāzes resursdatora jomā ir atkal nepareizi."; +$LANG["text_install_db_tables_error_tip_3"] = ""Piekļuve liegta lietotājs" nozīmē, ka pastāv problēma ar jūsu lietotājvārda / paroles kombināciju."; +$LANG["text_install_db_tables_error_tip_4"] = ""Piekļuve liegta lietotāju: ... datubāzei ..." nozīmē, ka, lai gan savu lietotājvārdu un paroli sniegto ir pareizs, tā nevar izveidot savienojumu ar šo konkrēto datu bāzi ar šo kontu. Tas var nozīmēt, ka vai nu Jūsu datu bāzes nosaukums ir nepareizs, vai šī lietotāja konts nav saistīts ar šo datu bāzi."; +$LANG["text_install_email_content_text"] = "Mūsu vietnē ir daudz resursu, lai palīdzētu jums sākt darbu, tostarp mūsu tiešsaistes dokumentāciju (https://docs.formtools.org) un apmācības (https://docs.formtools.org/tutorials). Ja konstatējat, ka jums ir iestrēdzis vai jums rodas jautājums, uzdodiet jautājumu par github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Atvainojiet, forma Tools nevarēs palaist uz jūsu servera. Lūdzu, klikšķiniet šeit , lai minimālās prasības."; +$LANG["text_install_system_check"] = "Šī lapa darbojas daži testi Jūsu sistēmu, lai nodrošinātu, ka tas ir spējīgs darboties Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Iekšējā veidlapas pastāv tikai forma Tools - citur jūsu vietnē. Tikai Form Tools lietotāju kontiem būs piekļuve formā. Atlasiet šo opciju, ja jums nav esošo formu."; +$LANG["text_internal_form_intro"] = "Izmantojiet šo veidlapu, lai izveidotu jaunu iekšējo formu. Visi iestatījumi, ieskaitot skaitu un saturu, veidlapas laukus var mainīt un konfigurēt vēlāk."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Lai pieslēgtos un lietošanas veids Instrumenti, Jums ir jābūt aktivizētam Javascript, jūsu pārlūkprogrammā. Lūdzu, aktivizējiet to tagad, un noklikšķiniet atsvaidzināt jūsu pārlūkprogrammā."; +$LANG["text_last_modified_date_explanation_c"] = "Pēdējo reizi šis iesniegums tika mainīta. Jauniem iesniegumiem, tas pats kā:"; +$LANG["text_limit_email_content_desc"] = "Šī opcija darbojas tikai HTML un teksta saturu, kas iegūti ar Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(tikai saraksta Views ar vienu vai vairākus filtrus defined)"; +$LANG["text_log_in_to_ft"] = "Log in to Form Tools"; +$LANG["text_login"] = "Please log in zemāk, lai piekļūtu (\$ Programmas_nosaukums) administrācijas panelis. Ja esat aizmirsis savu paroli, klikšķiniet šeit."; +$LANG["text_login_info"] = "Kā prasīts, šeit ir jūsu pieteikšanās informāciju."; +$LANG["text_name_of_form"] = "Nosaukums formu."; +$LANG["text_no_clients"] = "Pašlaik neviena datubāzē klientiem. Pievienot jauna klienta kontam, noklikšķiniet uz Pievienot Klientu pogu zemāk."; +$LANG["text_no_clients_found"] = "Neviens klients netika atrasts. Mēģiniet paplašināt meklēšanas kritērijiem."; +$LANG["text_no_fields_in_view"] = "Šis skats nav neviena lauku tajā. Noklikšķiniet uz saites zemāk."; +$LANG["text_no_forms"] = "Pašlaik neviena datu bāze. Lai pievienotu jaunu veidlapu, noklikšķiniet uz Pievienot Form pogu zemāk."; +$LANG["text_no_forms_found"] = "Nr veidlapas netika atrasts."; +$LANG["text_no_forms_found_search"] = "Nr veidlapas netika atrasts. Mēģiniet paplašināt meklēšanas kritērijiem."; +$LANG["text_no_modules_found"] = "Nē moduļi tika atrasti. Mēģiniet paplašināt meklēšanas kritērijiem."; +$LANG["text_no_recipients_added"] = "Ne saņēmēji nav pievienots."; +$LANG["text_no_search_results"] = "Nav ar šo meklēšanas kritērijiem rezultāti / View."; +$LANG["text_no_submissions_found"] = "Atvainojiet, nav atbildes netika atrasts."; +$LANG["text_no_themes"] = "Jums nav neviena definēti motīvi. Noklikšķiniet pogu zemāk, lai atsvaidzinātu jūsu tēmu saraksts, vai pārbaudīt Form Tools lietotāja dokumentācijā informāciju par pievienojot tēmām."; +$LANG["text_non_deletable_fields"] = "Šo lauku izmanto Core skriptu, un to nevar rediģēt vai dzēst neradot neatbilstības. Ja vēlaties veikt izmaiņas lauka tips, marka kopiju un rediģēt kopiju."; +$LANG["text_option_list_group_explanation"] = "Ja tas ir izvēlēts, tas ļauj grupēt savas iespējas. Kā grupas ir parādīti atkarīgs lauka tipu, izmantojot šo opciju sarakstu."; +$LANG["text_option_list_page"] = "Radio pogas, izvēles rūtiņas, dropdowns un multi-izvēlēties nolaižamajā laukus visiem nodrošināt lietotāju ar vairākas iespējas, no kurām var izvēlēties vienu vai vairākus vienumus. In Form Tools, tie ir pazīstami kā iespēja saraksti. Parasti šie ir izveidots automātiski pievienot ārējo Form process, bet jūs varat manuāli pievienot vai rediģēt jūsu izvēles saraksta zemāk, ja jūsu veidlapas satura izmaiņas vai jums izveidot lauki, tiek izmantotas tikai iekšēji."; +$LANG["text_option_list_used_by_fields"] = "Šis variants saraksts ir izmanto vairāki veidlapas laukus. Ja jūs atjaunināt informāciju zemāk, tas tiks mainīts visi lauki (sk. veidlapas laukus cilni, lai redzētu lauku sarakstu). Ja vēlaties, lai atjauninātu vērtības uz vienu, vai lauki, kas pašlaik ir piešķirti apakškopa, noklikšķiniet šeit, lai izveidotu jaunu variants Saraksts ar tām pašām vērtībām, kā šis. Tad jūs varat piešķirt veidlapas laukus, kurus vēlaties jaunu grupu."; +$LANG["text_public_form_omit_list_page"] = "Valsts veidi jums labu izīrēšanas visiem klientu kontiem tiem piekļūt bez rokām piešķirt katram klientam uz tiem. Šī lapa ļauj precīzi tiem klientiem, kuri nevar piekļūt šo veidlapu, lai gan forma ir marķēta kā publiska."; +$LANG["text_public_view_omit_list_page"] = "Valsts skati nodrošina labu izīrēšanas visiem klientu kontiem tiem piekļūt bez rokām piešķirt katram klientam uz tiem. Šī lapa ļauj precīzi tiem klientiem, kuri nevar piekļūt šo konkrēto skatu."; +$LANG["text_reference_tab_info"] = "Šajā lapā ir uzskaitītas visas vietturi pieejamas veidlapas. Vietturi ir virknes, ko var izmantot e-pasta veidnes, un laukus, kas atzīmēti ar īpašu viettura ikona . Kad stājās laukā, tie ir dinamiski pārveido par atbilstošu vērtību, kad lauks ir apskatīts, vai e-pasts ir nosūtīts."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Review lietotāja dokumentācija"; +$LANG["text_send_email_from_edit_submission_page"] = "Ietver iespējas nosūtīt šo e-pastu no Rediģēt iesniegšana page"; +$LANG["text_smart_fill_option_list_problem"] = "Mēs nevarējām Smart Piepildiet savu lauks iespējas. Tomēr, kā alternatīvu, varat mēģināt augšupielādēt kopiju veidlapas lapu zemāk. Piezīme: nav augšupielādēt izejvielu PHP lapas (vai citu server-side kodu) - vienkārši augšupielādējiet HTML versija. Lai iegūtu šo, apskatīt un saglabāt lapu, no jūsu interneta pārlūkā."; +$LANG["text_submission_ip_address"] = "IP lietotājs, kurš veic iesniegšanas adresi."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Izmantojiet zemāk esošo formu, vai nu uzskata, vai nosūtīt sev e-pastu, kas iegūti no šo e-pastu veidnes. E-pasts ir tikai nosūtīts uz e-pastu norādīts turpmāk, galvenais, cc un bcc-pasta adrese saņēmējiem tiek ignorētas, bet testēšanu."; +$LANG["text_test_email_templates_no_submissions"] = "Lai pārbaudītu jūsu e-pasta veidnes, vispirms pakļaut vismaz viena veida iesniegšanu."; +$LANG["text_theme_page_intro"] = "Šajā lapā ir redzami visi jūsu tēmām. Noklikšķiniet uz sīktēla, lai redzētu lielāku piemērs tēmas stilus. "Palīdzēja" Atzīmēšanas kastītes nosaka, vai šīs tēmas var izvēlēties klientu. Lai pārlūkotu visas pieejamās tēmas, apmeklējiet Form Tools mājas lapā."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: pievienošana jūsu pirmo formu!"; +$LANG["text_unique_submission_id"] = "Sludinājumu iesniegšanas ID."; +$LANG["text_unused_option_list"] = "Šī iespēja saraksts netiek izmantota neviena veidlapas laukus."; +$LANG["text_upgraded"] = "Jūsu iekārta ir modernizēta līdz {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Šis variants List izmanto šādus laukus."; +$LANG["text_view_fields_info"] = "Šī cilne kontroli, kas laukiem parādās, kad rediģēšanas iesniegums, šajā View, to secību un vai tie ir rediģējams vai ne."; +$LANG["text_view_tab_summary"] = "Šī cilne ļauj izveidot dažādus veidus, grupu un sakārtot datus. Skati ļauj jums izveidot pielāgotas apakšgrupām jūsu veidlapu datus sadalīt to pārskatāmām daļām, un lai ierobežotu to, ko klienti var skatīt vai rediģēt."; +$LANG["validation_account_disabled"] = "Atvainojiet, jūsu konts ir atspējots."; +$LANG["validation_account_not_recognized"] = "Atvainojiet, šis lietotājvārds nav atzītas."; +$LANG["validation_account_not_recognized_info"] = "Atvainojiet, šis lietotājvārds nav atrasta. Lūdzu, mēģiniet vēlreiz vai sazinieties ar vietnes administrators zemāk norādīto adresi."; +$LANG["validation_account_pending"] = "Jūsu lietotāja konts ir līdz apstiprinājums administrators."; +$LANG["validation_check_delete_client"] = "Vai jūs tiešām vēlaties izdzēst šo klienta konta?"; +$LANG["validation_client_password_missing_number"] = "Klienta parole jābūt vismaz vienam ciparam (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Klienta parole jāsatur vismaz viens no šādiem burtiem: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Klienta parole ir jābūt vismaz vienu lielo burtu."; +$LANG["validation_client_password_too_short"] = "Klienta parole ir jābūt vismaz {\$number} rakstzīmes garš."; +$LANG["validation_col_name_is_reserved_word"] = "Atvainojiet, šī datubāze kolonnas nosaukuma ir rezervēts darbu MySQL. Lūdzu pārdēvēt to!"; +$LANG["validation_db_name"] = "Datubāzes nosaukumos nedrīkst būt periodi vai slikti."; +$LANG["validation_db_not_updated_invalid_input"] = "Datubāzes nevar atjaunināt. Lūdzu pārbaudiet, vērtības ievadījāt ir derīgas."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Atvainojiet, noklusējuma administratora un klientu tēmas vienmēr ir iespējots."; +$LANG["validation_default_phone_num_required"] = "Lūdzu, aizpildiet pilnu tālruņa numuru <b> { \$ lauka} </ b> - numuriem."; +$LANG["validation_default_rule_alpha"] = "Lūdzu, ievadiet tikai burtus un ciparus, lai <b> { \$ lauka} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Lūdzu, ievadiet tikai burtus <b> { \$ lauka} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Lūdzu, ievadiet tikai numurus <b> { \$ lauka} </ b>."; +$LANG["validation_default_rule_required"] = "Lūdzu, ievadiet vērtību <b> { \$ lauka} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Lūdzu, ievadiet derīgu e-pasta adresi <b> { \$ lauka} </ b>."; +$LANG["validation_delete_form_confirm"] = "Lūdzu, pārbaudiet lodziņu, lai apstiprinātu, ka vēlaties dzēst šo formu."; +$LANG["validation_delete_non_empty_option_list"] = "Uzmanību! Šis variants sarakstu izmanto viena vai vairākas veidlapas laukus. Izdzēšot tas dos šajās jomās beigusies pareizi."; +$LANG["validation_display_names_incomplete"] = "Lūdzu, ievadiet vērtību visiem Rādīt vārdus, vai noklikšķiniet Smart Aizpildīt iespēju iekļūt tajās dinamiski."; +$LANG["validation_duplicate_form_field_name"] = "Jūs nevar būt vairākus laukus ar pašu lauka nosaukumu."; +$LANG["validation_email_not_found_or_invalid"] = "Atvainojiet, e-pasts saistīts ar jūsu kontu, vai nu neeksistē, vai ir nederīgs."; +$LANG["validation_folder_invalid_permissions"] = "Lai veiktu šo pārbaudi, atļaujas, ir jānosaka par upload mapi, lai varētu lasīt un rakstīt failus (777 par Unix)."; +$LANG["validation_folder_not_writable"] = "Šī mape nav writeable."; +$LANG["validation_internal_form_too_many_fields"] = "Atvainojiet, jūs varat tikai izveidotas veidlapas ar 1000 laukiem vai mazāk."; +$LANG["validation_invalid_admin_email"] = "Lūdzu, ievadiet derīgu adminstrator e-pasta adresi."; +$LANG["validation_invalid_admin_username"] = "Jūsu lietotājvārds var ietvert tikai burtciparu rakstzīmes (AZ un 0-9)."; +$LANG["validation_invalid_client_username"] = "Klienta lietotāja vārds drīkst sastāvēt burtciparu rakstzīmēm (AZ un 0-9)."; +$LANG["validation_invalid_client_username2"] = "Atvainojiet, lietotājvārds ir drīkst saturēt tikai burtus, ciparus un pasvītrojuma rakstzīmes. Lūdzu, ievadiet jaunu lietotājvārdu."; +$LANG["validation_invalid_column_name"] = "Kolonnu nosaukumus var būt tikai burtciparu (AZ, 0-9). Lūdzu, pārbaudiet kolonnu nosaukumi."; +$LANG["validation_invalid_custom_from_email"] = "Lūdzu, ievadiet derīgu custom 'From' E-pasta adresi."; +$LANG["validation_invalid_custom_reply_to_email"] = "Lūdzu, ievadiet derīgu pasūtījuma "Atbildēt-uz" e-pasta adresi."; +$LANG["validation_invalid_default_sessions_timeout"] = "Lūdzu, ievadiet derīgu vērtība () numurs noklusēto sesijas taimautu."; +$LANG["validation_invalid_email"] = "Lūdzu, ievadiet derīgu e-pasta adresi."; +$LANG["validation_invalid_email_id"] = "Atvainojiet, tas ir nederīgs e-pasta ID."; +$LANG["validation_invalid_folder"] = "Atvainojiet, tas nevar būt derīgs mapi."; +$LANG["validation_invalid_form_field_names"] = "Formas laukos var tikai burtciparu un apakšsvītra (az, 0-9, _), bez atstarpēm."; +$LANG["validation_invalid_num_clients_per_page"] = "Lūdzu ievadīt tikai numurus Num Klienti Per Page jomā."; +$LANG["validation_invalid_num_emails_per_page"] = "Lūdzu ievadīt tikai ciparu vienu lapu e-pastiem."; +$LANG["validation_invalid_num_form_fields"] = "Lūdzu, ievadiet tikai skaitu vairākās jomās jomā."; +$LANG["validation_invalid_num_forms_per_page"] = "Lūdzu ievadīt tikai numurus Num Veidlapas Per Page jomā."; +$LANG["validation_invalid_num_menus_per_page"] = "Lūdzu ievadīt tikai ciparu vienu lapu izvēlnes."; +$LANG["validation_invalid_num_modules_per_page"] = "Lūdzu ievadīt tikai numurus Num Modules Per Page jomā."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Lūdzu, ievadiet tikai skaitļus Cipari variants Lists Per Page jomā."; +$LANG["validation_invalid_num_submissions_per_page"] = "Lūdzu, ievadiet derīgu vairākus iesniegumus par lapu."; +$LANG["validation_invalid_sessions_timeout"] = "Lūdzu, ievadiet derīgu sesijas taimautu (veselus skaitļus only!)."; +$LANG["validation_invalid_tab_assign_values"] = "Lūdzu ievadīt tikai skaitu "no" un "uz" laukiem."; +$LANG["validation_invalid_table_prefix"] = "Lūdzu, ievadiet datu bāzes prefiksu sastāv no burtu un pasvītrojuma rakstzīmi tikai."; +$LANG["validation_invalid_upload_folder"] = "Jūsu servera uzstādīšana PHP ir nederīgs iestatījumu upload_tmp_dir vērtību. "{\$upload_folder}" nav derīgs mapi."; +$LANG["validation_invalid_url"] = "Lūdzu, ievadiet derīgu URL."; +$LANG["validation_invalid_username"] = "Jūsu lietotājvārds drīkst būt burtciparu rakstzīmēm (AZ un 0-9)."; +$LANG["validation_is_form_active"] = "Lūdzu, norādiet, vai veidlapa ir aktīva vai ne."; +$LANG["validation_menu_name_taken"] = "Atvainojiet, šī izvēlnes nosaukums jau tiek izmantots. Lūdzu, izvēlieties citu nosaukumu."; +$LANG["validation_modules_search_no_status"] = "Lūdzu, izvēlieties vai nu iespējotu, vai atspējotu izvēles rūtiņas."; +$LANG["validation_no_access_type"] = "Lūdzu, ievadiet piekļuves veids."; +$LANG["validation_no_account_logout_url"] = "Lūdzu, ievadiet savu logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Lūdzu vēlreiz ievadiet savu jauno paroli."; +$LANG["validation_no_account_password_confirmed2"] = "Lūdzu, vēlreiz ievadiet jauno paroli."; +$LANG["validation_no_admin_email"] = "Lūdzu, ievadiet administratora e-pasta adresi."; +$LANG["validation_no_admin_theme"] = "Lūdzu, izvēlieties tēmu administratora kontu."; +$LANG["validation_no_admin_theme_swatch"] = "Lūdzu, izvēlieties vāls administratora tēmu."; +$LANG["validation_no_client_email"] = "Lūdzu, ievadiet klienta e-pasta adresi."; +$LANG["validation_no_client_first_name"] = "Lūdzu, ievadiet klienta vārds."; +$LANG["validation_no_client_last_name"] = "Lūdzu, ievadiet klienta uzvārdu."; +$LANG["validation_no_client_login_page"] = "Lūdzu norādīt kuru lapu klientam, ir jāmaina, kad viņi ieietu"; +$LANG["validation_no_client_password"] = "Lūdzu, ievadiet klienta parole."; +$LANG["validation_no_client_theme_swatch"] = "Lūdzu, izvēlieties noklusēto vāls par klientu kontiem."; +$LANG["validation_no_client_username"] = "Lūdzu, ievadiet klienta lietotājvārdu."; +$LANG["validation_no_column_name"] = "Lūdzu, ievadiet visas kolonnu nosaukumiem, vai noklikšķiniet Smart Aizpildiet pogas, lai automātiski aizpildītu tos."; +$LANG["validation_no_column_selected"] = "Lūdzu, izvēlieties vismaz vienu jomā parādās kā kolonna iesniegšanas sarakstā lapā."; +$LANG["validation_no_custom_from_email"] = "Lūdzu, ievadiet "pasūtījuma No 'e-pasta adresi."; +$LANG["validation_no_custom_recipient_email"] = "Lūdzu, ievadiet pasūtījuma saņēmēja e-pasta adresi."; +$LANG["validation_no_custom_reply_to_email"] = "Lūdzu, ievadiet pasūtījuma "Atbildēt-uz" e-pasta adresi."; +$LANG["validation_no_date_format"] = "Lūdzu, ievadiet datumu formātā."; +$LANG["validation_no_db_column_single"] = "Lūdzu, ievadiet datu bāzes Kolonnas nosaukums."; +$LANG["validation_no_db_hostname"] = "Lūdzu, ievadiet datu bāzes resursdatora."; +$LANG["validation_no_db_name"] = "Lūdzu, ievadiet datu bāzes nosaukumu."; +$LANG["validation_no_db_username"] = "Lūdzu, ievadiet datu bāzes konta lietotājvārds."; +$LANG["validation_no_default_client_theme"] = "Lūdzu, izvēlieties noklusēto tēmu visiem jauniem klientu kontiem."; +$LANG["validation_no_default_language"] = "Lūdzu, izvēlieties noklusēto valodu instalācijas Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Lūdzu, ievadiet noklusējuma sesijas taimautu lietotāja kontu."; +$LANG["validation_no_display_text"] = "Lūdzu, ievadiet displeja tekstu katram laukam."; +$LANG["validation_no_display_text_single"] = "Lūdzu, ievadiet displeja tekstu vērtību."; +$LANG["validation_no_edit_submission_page_label"] = "Lūdzu, ievadiet Rediģēt iesniegšana lapu etiķeti."; +$LANG["validation_no_email"] = "Lūdzu, ievadiet savu e-pasta adresi."; +$LANG["validation_no_email_config_field"] = "Lūdzu, norādiet, kas ir lauks ir e-pasta laukā."; +$LANG["validation_no_email_content"] = "Lūdzu, ievadiet e-pasta saturu vismaz vienu formātu (HTML vai teksts)."; +$LANG["validation_no_email_from_field"] = "Lūdzu ", e-pastu no" laukā."; +$LANG["validation_no_email_template_name"] = "Lūdzu, ievadiet e-pasta veidnes nosaukuma."; +$LANG["validation_no_email_template_view_id"] = "Lūdzu, izvēlieties View, kas šo e-pastu Lekālu kartē."; +$LANG["validation_no_email_template_view_mapping_value"] = "Lūdzu norādiet, ja e-pastu jāsūta."; +$LANG["validation_no_enabled_themes"] = "Lūdzu nodrošināt, ka vismaz viena tēma ir iespējots."; +$LANG["validation_no_first_name"] = "Lūdzu, ievadiet savu pirmo vārdu."; +$LANG["validation_no_form_field_name"] = "Lūdzu, ievadiet visas veidlapas lauku nosaukumiem."; +$LANG["validation_no_form_field_single"] = "Lūdzu, ievadiet veidlapas lauka vērtību."; +$LANG["validation_no_form_id"] = "Forma ID netika precizēts. Please log out un mēģiniet vēlreiz."; +$LANG["validation_no_form_name"] = "Lūdzu, ievadiet veidlapas nosaukumu."; +$LANG["validation_no_form_url"] = "Lūdzu, ievadiet formu URL."; +$LANG["validation_no_last_name"] = "Lūdzu, ievadiet savu uzvārdu."; +$LANG["validation_no_login_page"] = "Lūdzu, norādiet, kuru lapu vēlaties nosūtīt katru reizi, kad piesakāties collas"; +$LANG["validation_no_logout_url"] = "Lūdzu, ievadiet logout URL."; +$LANG["validation_no_main_email_recipient"] = "Lūdzu, ievadiet vismaz vienu galveno e-pasta saņēmējam (ti, ne cc vai Diskrētā kopija)."; +$LANG["validation_no_menu"] = "Lūdzu, izvēlieties izvēlni šī lietotāja kontu."; +$LANG["validation_no_menu_id"] = "Lūdzu, izvēlieties izvēlni."; +$LANG["validation_no_num_clients_per_page"] = "Lūdzu, ievadiet skaitu klientu kontiem vienā lapā."; +$LANG["validation_no_num_emails_per_page"] = "Lūdzu, ievadiet numuru un e-pastus uz sarakstu vienā lapā."; +$LANG["validation_no_num_form_fields"] = "Lūdzu, ievadiet vairākās jomās, lai jūsu veidā."; +$LANG["validation_no_num_forms_per_page"] = "Lūdzu, ievadiet veidlapu skaitu vienā lapā."; +$LANG["validation_no_num_menus_per_page"] = "Lūdzu, ievadiet numuru un izvēlnes, lai sarakstā vienā lapā."; +$LANG["validation_no_num_modules_per_page"] = "Lūdzu, ievadiet numuru Moduļu vienā lapā."; +$LANG["validation_no_num_option_lists_per_page"] = "Lūdzu, ievadiet numuru izvēles sarakstu par lapu."; +$LANG["validation_no_num_submissions_per_page"] = "Lūdzu, ievadiet numuru iesniegumu rādīt vienā lapā."; +$LANG["validation_no_option_list_name"] = "Lūdzu, ievadiet opciju saraksta nosaukumu."; +$LANG["validation_no_page_titles"] = "Lūdzu, ievadiet noklusējuma lapu nosaukumi lietotāju kontus."; +$LANG["validation_no_password"] = "Lūdzu, ievadiet savu paroli."; +$LANG["validation_no_program_name"] = "Lūdzu, ievadiet programmas nosaukumu."; +$LANG["validation_no_second_password"] = "Lūdzu, vēlreiz ievadiet paroli."; +$LANG["validation_no_sessions_timeout"] = "Lūdzu, ievadiet sesijas taimautu."; +$LANG["validation_no_smart_fill_values"] = "Lūdzu, ievadiet formu lauka nosaukumu un URL formā."; +$LANG["validation_no_table_prefix"] = "Lūdzu, ievadiet datu bāzes prefiksu."; +$LANG["validation_no_tabs_defined"] = "Neviens tabs definēts"; +$LANG["validation_no_test_email_recipient"] = "Lūdzu, ievadiet e-pasta adresi, kur mums vajadzētu sūtīt tests e-pastu."; +$LANG["validation_no_test_email_submission_id"] = "Lūdzu, ievadiet iesniegšanas ID numuru."; +$LANG["validation_no_theme"] = "Lūdzu, izvēlieties motīvu."; +$LANG["validation_no_theme_swatch"] = "Lūdzu, izvēlieties vāls izvēlētajai tēmai."; +$LANG["validation_no_timezone_offset"] = "Lūdzu, ievadiet laika joslu nobīde."; +$LANG["validation_no_titles"] = "Lūdzu, ievadiet lapas nosaukumu."; +$LANG["validation_no_two_column_names"] = "Atvainojiet, jūs nedrīkstat ievadīt pašu datu bāzes kolonnas nosaukuma divreiz."; +$LANG["validation_no_ui_language"] = "Lūdzu, izvēlieties valodu interfeisu."; +$LANG["validation_no_url"] = "Lūdzu, ievadiet URL."; +$LANG["validation_no_username"] = "Lūdzu, ievadiet savu lietotājvārdu."; +$LANG["validation_no_username_or_js"] = "Jums ir jāievada jūsu lietotājvārds. Lūdzu aktivizēt JavaScript savā pārlūkprogrammā."; +$LANG["validation_no_view_fields"] = "Jūsu View nesatur laukus! Jums nepieciešams piešķirt vismaz vienā jomā, lai būtu kaut kas parādās jūsu View."; +$LANG["validation_no_view_fields_selected"] = "Lūdzu, izvēlieties vienu vai vairākus laukus, lai pievienotu View."; +$LANG["validation_no_view_name"] = "Lūdzu, ievadiet nosaukumu jūsu View."; +$LANG["validation_num_rows_to_add"] = "Lūdzu, ievadiet rindu skaitu pievienot."; +$LANG["validation_option_list_name_taken"] = "Atvainojiet, šī opcija Saraksta nosaukums ir jau veikti. Lūdzu, izvēlieties citu nosaukumu."; +$LANG["validation_password_in_password_history"] = "Par drošību, nevar ievadīt to pašu paroli kā jebkurš no pēdējās {\$history_size} paroles. Lūdzu, ievadiet citu paroli."; +$LANG["validation_passwords_different"] = "Lūdzu, pārliecinieties, paroles nav vienādas."; +$LANG["validation_please_enter_search_date_range"] = "Lūdzu izvēlieties meklēšanas datumu diapazonu."; +$LANG["validation_please_enter_search_keyword"] = "Lūdzu ievadiet meklēšanas atslēgvārdu."; +$LANG["validation_select_field_type"] = "Lūdzu izvēlieties lauka tips."; +$LANG["validation_select_submissions_to_copy"] = "Lūdzu, atlasiet tos iesniegumus, kurus vēlaties kopēt."; +$LANG["validation_select_submissions_to_delete"] = "Lūdzu, izvēlieties šo iesniegto vēlaties dzēst."; +$LANG["validation_smart_fill_cannot_fill"] = "Atvainojiet, mēs nevarējām aizpildītu šo lauku."; +$LANG["validation_smart_fill_invalid_field_type"] = "Mēs nevarējām atrast jomā, bet tas nav nolaižamajā, izvēles rūtiņa vai radio grupai."; +$LANG["validation_smart_fill_no_field_found"] = "Atvainojiet, mēs nevarējām atrast formas laukā ar šo nosaukumu lapā norādīto."; +$LANG["validation_smart_fill_no_page"] = "Lūdzu, atrodiet lapu, kurā lauka vēlaties Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Lūdzu augšupielādēt visus lapas veidlapas."; +$LANG["validation_upload_folder_not_writable"] = "Šī pagaidu upload mape norādījis Jūsu PHP uzstādīšana nav rakstāms. Līdz brīdim, kad tas ir noteikts, failus nevar augšupielādēti caur Form Tools (vai jebkuru citu PHP programmā). Lūdzu, sazinieties ar hostinga sniedzēju."; +$LANG["validation_upload_html_files_only"] = "Lūdzu, augšupielādējiet tikai HTML failus."; +$LANG["validation_username_taken"] = "Atvainojiet, šis lietotājvārds ir jau veikti. Lūdzu, ievadiet citu lietotājvārdu."; +$LANG["validation_wrong_password"] = "Žēl, ka paroles nesakrīt."; +$LANG["word_about"] = "Par"; +$LANG["word_access"] = "Access"; +$LANG["word_account"] = "Konts"; +$LANG["word_account_sp"] = "Konts (i)"; +$LANG["word_accounts"] = "Konti"; +$LANG["word_action"] = "Darbības"; +$LANG["word_active"] = "Active"; +$LANG["word_add"] = "Pievienot"; +$LANG["word_add_rightarrow"] = "Pievienot »"; +$LANG["word_add_uc_rightarrow"] = "Pievienot »"; +$LANG["word_administration"] = "Administrācija"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Pēc"; +$LANG["word_aquamarine"] = "Akvamarīns"; +$LANG["word_asc"] = "ASC"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Autors:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«atpakaļ"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Pirms"; +$LANG["word_benefits"] = "Ieguvumi"; +$LANG["word_blue"] = "Blue"; +$LANG["word_cancel"] = "Atcelt"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Rūtiņas"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Client"; +$LANG["word_client_c"] = "Klients:"; +$LANG["word_clients"] = "Klienti"; +$LANG["word_close"] = "Aizvērt"; +$LANG["word_code"] = "Kods"; +$LANG["word_column"] = "Kolonna"; +$LANG["word_columns"] = "Columns"; +$LANG["word_columns_sp"] = "Column (s)"; +$LANG["word_complete"] = "Complete"; +$LANG["word_configuration"] = "Konfigurācija"; +$LANG["word_content"] = "Saturs"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Turpināt »"; +$LANG["word_copy"] = "Kopēt"; +$LANG["word_custom"] = "Paradums"; +$LANG["word_data"] = "Dati"; +$LANG["word_date"] = "Datums"; +$LANG["word_debugging_c"] = "Atkļūdošana:"; +$LANG["word_delete"] = "Dzēst"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "Disabled"; +$LANG["word_documentation"] = "Dokumentācija"; +$LANG["word_done"] = "Done"; +$LANG["word_drawbacks"] = "Trūkumi"; +$LANG["word_dropdown"] = "Nolaižamajā"; +$LANG["word_edit"] = "Rediģēt"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "E-pasts"; +$LANG["word_email_c"] = "E-pasts:"; +$LANG["word_emails"] = "E-pastu"; +$LANG["word_enabled"] = "Enabled"; +$LANG["word_equals"] = "Vienāds"; +$LANG["word_error"] = "Kļūda"; +$LANG["word_error_c"] = "Kļūda:"; +$LANG["word_examples_c"] = "Piemēri:"; +$LANG["word_external"] = "External"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Lauks"; +$LANG["word_field_sp"] = "Jomā (s)"; +$LANG["word_fields"] = "Jomas"; +$LANG["word_fields_sp"] = "Field (-i)"; +$LANG["word_file"] = "Fails"; +$LANG["word_file_b_uc"] = "[File]"; +$LANG["word_files"] = "Faili"; +$LANG["word_filters"] = "Filtri"; +$LANG["word_filters_sp"] = "Filter (-i)"; +$LANG["word_for"] = "dēļ"; +$LANG["word_form"] = "Forma"; +$LANG["word_form_c"] = "Veids:"; +$LANG["word_formatting"] = "Formatēšana"; +$LANG["word_forms"] = "Veidlapas"; +$LANG["word_found"] = "Atrasts"; +$LANG["word_from"] = "No"; +$LANG["word_from_c"] = "No:"; +$LANG["word_general"] = "Vispārīgi"; +$LANG["word_green"] = "Zaļā"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Augstums"; +$LANG["word_help"] = "Palīdzība"; +$LANG["word_hidden"] = "Slēpts"; +$LANG["word_highlight"] = "Izcelt"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Stunda"; +$LANG["word_hours"] = "Stundas"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Nepabeigta"; +$LANG["word_install"] = "Install"; +$LANG["word_installation"] = "Uzstādīšana"; +$LANG["word_internal"] = "Iekšējā"; +$LANG["word_language"] = "Valoda"; +$LANG["word_large"] = "Liels"; +$LANG["word_like"] = "Kā"; +$LANG["word_login"] = "Pieteikšanās"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Galvenais"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Izvēlnes"; +$LANG["word_minutes"] = "minūtes"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modulis"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Vārds"; +$LANG["word_name_c"] = "Vārds:"; +$LANG["word_never"] = "Nekad"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "Nākamais solis »"; +$LANG["word_no"] = "Nē"; +$LANG["word_none"] = "Neviens"; +$LANG["word_notes"] = "Piezīmes"; +$LANG["word_notification"] = "Notification"; +$LANG["word_number"] = "Numurs"; +$LANG["word_off"] = "Prom"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Labi"; +$LANG["word_on"] = "Uz"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operators"; +$LANG["word_options"] = "Options"; +$LANG["word_orange"] = "Oranžs"; +$LANG["word_order"] = "Kārtība"; +$LANG["word_other"] = "Cits"; +$LANG["word_other_c"] = "Citi:"; +$LANG["word_page"] = "Lapa"; +$LANG["word_page_c"] = "Page:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Parole"; +$LANG["word_password_c"] = "Parole:"; +$LANG["word_pending"] = "Iekams"; +$LANG["word_permissions"] = "Atļaujas"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«iepriekšējā"; +$LANG["word_private"] = "Private"; +$LANG["word_public"] = "Valsts"; +$LANG["word_purple"] = "Purpurs"; +$LANG["word_recipient"] = "Recipient"; +$LANG["word_recipient_sp"] = "Saņēmēja (-s)"; +$LANG["word_red"] = "Sarkans"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Aizvākt"; +$LANG["word_remove_uc_leftarrow"] = "«DZĒST"; +$LANG["word_reply_to"] = "Atbildēt"; +$LANG["word_reply_to_c"] = "Reply-To:"; +$LANG["word_required"] = "Nepieciešamie"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Atrisināt"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rinda"; +$LANG["word_search"] = "Meklēt"; +$LANG["word_searchable"] = "Meklēšanu"; +$LANG["word_select"] = "Izvēlēties"; +$LANG["word_setting"] = "Iestatījums"; +$LANG["word_settings"] = "Settings"; +$LANG["word_show"] = "Rādīt"; +$LANG["word_size"] = "Izmērs"; +$LANG["word_skipped"] = "Izlaidis"; +$LANG["word_small"] = "Mazs"; +$LANG["word_solution"] = "Risinājums"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Sākums"; +$LANG["word_status"] = "Statuss"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Temats"; +$LANG["word_subject_c"] = "Temats"; +$LANG["word_submenu"] = "Apakšizvēlne"; +$LANG["word_submission"] = "Iesniegšana"; +$LANG["word_submissions"] = "Iesniegumi"; +$LANG["word_system"] = "Sistēma"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (-i)"; +$LANG["word_test"] = "Pārbaude"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Tēma"; +$LANG["word_themes"] = "Tēmas"; +$LANG["word_time"] = "Laiks"; +$LANG["word_tiny"] = "Niecīgs"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Šodien"; +$LANG["word_truncate_q"] = "Nogriezt?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Nezināms"; +$LANG["word_update"] = "Atjaunot"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Lietotājs"; +$LANG["word_username"] = "Lietotājvārds"; +$LANG["word_username_c"] = "Lietotāja vārds:"; +$LANG["word_validation"] = "Validācijas"; +$LANG["word_value"] = "Cenas"; +$LANG["word_value_sp"] = "Vērtība (s)"; +$LANG["word_verified"] = "Pārbaudīts"; +$LANG["word_verify"] = "Pārbaudīt"; +$LANG["word_version"] = "Versija"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Skats"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Uzmanību!"; +$LANG["word_warning_c"] = "Brīdinājums:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Laipni lūdzam!"; +$LANG["word_width_c"] = "platums:"; +$LANG["word_words"] = "Vārdi"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Dzeltens"; +$LANG["word_yes"] = "Jā"; \ No newline at end of file diff --git a/global/lang/lt.php b/global/lang/lt.php new file mode 100644 index 00000000..8416acb3 --- /dev/null +++ b/global/lang/lt.php @@ -0,0 +1,1219 @@ +Dėmesio! Jūs pasirinkote {\$num_selected_on_page} pastabas dėl šiame puslapyje ir {\$num_selected_on_other_pages} į kitus puslapius. Prašome pasirinkti vieną iš šių parinkčių:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Įspėjimas! Jūs nepasirinkote jokių pastabų dėl šio puslapio, bet jūs pasirinkote {\$num_selected_on_other_pages} į kitus puslapius. Patvirtinkite, kad norite ištrinti šiuos pareiškimus.
    "; +$LANG["confirm_delete_view"] = "Ar tikrai norite ištrinti šį View?"; +$LANG["confirm_refresh_page"] = "Ar jūs tikrai norite atnaujinti puslapio? Tai bus prarasti bet kokius pakeitimus, kuriuos padarė."; +$LANG["confirm_save_change_before_redirect"] = "Vienas ar daugiau laukų buvo atnaujintas. Ar norėtumėte, kad išsaugotumėte pakeitimus, prieš nukreipiant?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Ar jūs tikrai norite Smart Fill bazės stulpelių pavadinimus? Tai bus perrašyti esamas vertybes."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Ši parinktis automatiškai generuoja Rodyti teksto laukų duomenų bazės stulpelių pavadinimus, taigi duomenų bazės lentelės turinį, būtų lengviau skaityti."; +$LANG["confirm_smart_fill_display_names"] = "Ar jūs tikrai norite Smart Užpildykite Rodyti vardus? Tai bus perrašyti esamas vertybes."; +$LANG["confirm_ungroup_option_list"] = "Ar jūs tikrai norite išgrupuoti šią parinktį, sąraše? Visi variantai bus grupuojami į vieną, išskirstytų sąrašas."; +$LANG["confirm_uninstall_module"] = "Ar jūs tikrai norite pašalinti šį modulį? Visi modulio duomenys bus prarasti."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Pn"; +$LANG["date_Friday"] = "Penktadienis"; +$LANG["date_Mon"] = "Pr"; +$LANG["date_Monday"] = "Pirmadienis"; +$LANG["date_PM"] = "MM"; +$LANG["date_Sat"] = "Š"; +$LANG["date_Saturday"] = "Šeštadienis"; +$LANG["date_Sun"] = "Saulė"; +$LANG["date_Sunday"] = "Sekmadienis"; +$LANG["date_Thu"] = "Kt"; +$LANG["date_Thursday"] = "Ketvirtadienis"; +$LANG["date_Tue"] = "An"; +$LANG["date_Tuesday"] = "Antradienis"; +$LANG["date_Wed"] = "Tr"; +$LANG["date_Wednesday"] = "Trečiadienis"; +$LANG["date_am"] = "AM"; +$LANG["date_month_April"] = "Balandis"; +$LANG["date_month_August"] = "Rugpjūtis"; +$LANG["date_month_December"] = "Gruodis"; +$LANG["date_month_February"] = "Vasaris"; +$LANG["date_month_January"] = "Sausis"; +$LANG["date_month_July"] = "Liepa"; +$LANG["date_month_June"] = "Birželis"; +$LANG["date_month_March"] = "Kovas"; +$LANG["date_month_May"] = "Gali"; +$LANG["date_month_November"] = "Lapkritis"; +$LANG["date_month_October"] = "Spalis"; +$LANG["date_month_September"] = "Rugsėjis"; +$LANG["date_month_short_Apr"] = "Balandis"; +$LANG["date_month_short_Aug"] = "Rugpjūtis"; +$LANG["date_month_short_Dec"] = "Gruodis"; +$LANG["date_month_short_Feb"] = "Vasaris"; +$LANG["date_month_short_Jan"] = "Sau"; +$LANG["date_month_short_Jul"] = "Liepa"; +$LANG["date_month_short_Jun"] = "Birželis"; +$LANG["date_month_short_Mar"] = "Kov"; +$LANG["date_month_short_May"] = "Gali"; +$LANG["date_month_short_Nov"] = "Lapkritis"; +$LANG["date_month_short_Oct"] = "Spalis"; +$LANG["date_month_short_Sep"] = "Rugsėjis"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Naudotojo paskyra buvo ištrintas."; +$LANG["notify_account_updated"] = "Jūsų sąskaita buvo sėkmingai atnaujintas."; +$LANG["notify_add_display_values"] = "Pridėti Rodyti vertybės"; +$LANG["notify_admin_menu_updated"] = "Administracija meniu buvo atnaujintas."; +$LANG["notify_admin_theme_overridden"] = "Administratorius tema buvo rankiniu būdu."; +$LANG["notify_allow_url_fopen_not_set"] = "Atsiprašome, šio tyrimo negalima paleisti savo interneto serverį. Jis reikalauja allow_url_fopen būti nustatytas iki 1 iš savo php.ini failą. Šis parametras leidžia PHP pasiekti failus per URL, kuris yra būtinas atlikti šį bandymą. Galite išbandyti jį rankiniu būdu įkelti failą, kad per FTP aplanke, tada bando prieiti prie URL, kurį pateikti."; +$LANG["notify_change_temp_password"] = "Jums tik prisijungę laikinas slaptažodis. Turėtumėte Vėl nustatykite savo slaptažodį dabar!"; +$LANG["notify_click_to_edit_new_submission"] = "Spustelėkite čia, jei norite redaguoti naują pateikimą."; +$LANG["notify_client_account_menus_updated"] = "Klientų sąskaitos (-ų) buvo atnaujintas iki {\$menu_name} meniu. Dabar galite panaikinti meniu, kuris anksčiau buvo susiję su sąskaitos (-ų)."; +$LANG["notify_client_account_not_updated"] = "Kliento sąskaita negali būti atnaujinta."; +$LANG["notify_client_account_themes_updated"] = "Klientų sąskaitos (-ų) buvo atnaujintas iki {\$theme} tema. Dabar galite išjungti tema anksčiau su sąskaita (-ų)."; +$LANG["notify_client_account_updated"] = "Kliento sąskaitą buvo sėkmingai atnaujintas."; +$LANG["notify_client_menu_deleted"] = "Klientų meniu buvo ištrintas."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Meniu buvo panaikinta, tačiau šių klientų sąskaitose dabar nebeturi meniu! Jums reikia atnaujinti šias sąskaitas:"; +$LANG["notify_client_menu_updated"] = "Klientų meniu buvo atnaujintas."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Atsiprašome, meniu tiesiog bandė naikinti jau naudojasi klientai žemiau. Siekiant panaikinti meniu pirmiausia reikia priskirti klientams kitas meniu. Spauskite ant kliento pavadinimą pakeisti, kad atskiros sąskaitos, ar priskirti visas sąskaitas į kitą meniu, naudojant žemiau esančio sąrašo intervalo."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Atsiprašome, viena iš temų, kurią ką tik neįgalieji jau naudojamas po klientų sąskaitas. Norėdami išjungti tema jums pirmiausia reikia priskirti kiekvienam klientui į kitą temą. Spauskite ant kliento pavadinimą pakeisti, kad atskiros sąskaitos, ar perleisti visas sąskaitas su tema, naudojant žemiau esančio sąrašo intervalo."; +$LANG["notify_edit_email_fields_link"] = "Spauskite čia norėdami nurodyti formos laukus elektroniniu paštu srityse, todėl jūs galite nukreipti juos į savo elektroninio pašto šablonus."; +$LANG["notify_edit_field_new_field"] = "Tai nauja sritis. Jums reikės atnaujinti pagrindinį puslapį prieš gali visiškai pakeisti šioje srityje."; +$LANG["notify_edit_option_list_after_save"] = "Jūs turite pasirinkti pasirinkimo sąrašas ir tada išsaugokite pakeitimus prieš ją redaguoti."; +$LANG["notify_email_field_config_deleted"] = "Pašto adresą buvo ištrintas."; +$LANG["notify_email_fields_not_updated"] = "Deja, mums nepavyko atnaujinti laukelius."; +$LANG["notify_email_fields_updated"] = "Laukelius, buvo atnaujintas."; +$LANG["notify_email_not_sent"] = "Atsiprašome, elektroninio pašto išsiųsti nepavyko. Prašome susisiekti su svetainės administratoriumi adresu žemiau."; +$LANG["notify_email_not_sent_c"] = "Atsiprašome, elektroninio pašto adresas negali būti siunčiami:"; +$LANG["notify_email_sent"] = "Paštu (-ų) buvo išsiųstas."; +$LANG["notify_email_template_deleted"] = "Šablonas buvo ištrintas."; +$LANG["notify_email_template_updated"] = "Šablonas buvo atnaujintas."; +$LANG["notify_enabled_module_list_updated"] = "Nuo įjungta modulių sąrašas buvo atnaujintas."; +$LANG["notify_error_saving_fields"] = "Įvyko klaida taupymo srityse."; +$LANG["notify_field_changes_saved"] = "Keisti savo srityje (-ų) buvo išsaugotas."; +$LANG["notify_field_options_smart_filled"] = "Jūsų srityje variantų buvo "Smart Įdaryti."; +$LANG["notify_field_selected"] = "Srityje buvo pasirinktas. Spauskite čia, jei norite grįžti prie pagrindinių laukų sąrašas."; +$LANG["notify_field_updated"] = "Šis laukas buvo atnaujintas."; +$LANG["notify_file_not_uploaded"] = "Byla negali būti įkeltas."; +$LANG["notify_file_uploaded"] = "Failas sėkmingai įkeltas."; +$LANG["notify_filters_not_updated"] = "Įvyko klaida atnaujinti šį klientą pateikimo filtrus."; +$LANG["notify_filters_updated"] = "Pateikimo filtrai buvo atnaujinta šio kliento."; +$LANG["notify_folder_correct_permissions"] = "Šis aplankas turi reikiamus leidimus."; +$LANG["notify_folder_url_match"] = "Aplanką ir URL atrodo teisingai suderinti."; +$LANG["notify_folder_url_no_access"] = "Šis bandymas gali būti atliekamas nuo PHP nesugebėjo pasiekti nurodytą URL. Tai paprastai sukelia adresas yra apsaugotas slaptažodžiu. Htaccess failas."; +$LANG["notify_folder_url_no_match"] = "Šiame kataloge URL derinys neatrodo, kad reikia suderinti."; +$LANG["notify_folder_url_unknown_error"] = "Nežinoma klaida. Galite išbandyti jį rankiniu būdu įkelti failą, kad per FTP aplanke, tada bando prieiti prie URL, kurį pateikti."; +$LANG["notify_form_access_type_email_info"] = "Ši forma turi administratoriaus prieigos tipą, todėl jokie klientai negali prieiti prie jo ir nėra sąraše, išskleidžiamajame žemiau."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Atsiprašome, su tokiu ID nėra forma."; +$LANG["notify_form_field_not_added"] = "Laukelyje '{\$fieldname}' negalėjo būti įtrauktos."; +$LANG["notify_form_field_options_updated"] = "Formos lauko galimybės buvo atnaujintas."; +$LANG["notify_form_field_removed"] = "Formos srityje, buvo sėkmingai pašalinta."; +$LANG["notify_form_fields_removed"] = "Formos laukų buvo sėkmingai pašalinta."; +$LANG["notify_form_not_updated_notify_admin"] = "Savo forma negali būti atnaujintas. Prašome susisiekti su svetainės administratoriui apie šią problemą."; +$LANG["notify_form_settings_updated"] = "Forma nustatymai buvo sėkmingai atnaujintas."; +$LANG["notify_form_submission_updated"] = "Formos pateikimo buvo atnaujintas."; +$LANG["notify_form_tabs_updated"] = "Kortelės buvo atnaujintos."; +$LANG["notify_form_updated"] = "Forma buvo sėkmingai atnaujintas."; +$LANG["notify_form_views_updated"] = "Forma Peržiūrėjo buvo atnaujintas."; +$LANG["notify_install_invalid_db_info"] = "Deja, mums nepavyko prisijungti prie duomenų bazės, naudojant informaciją, kurią pateikti. Klaidos pranešimas yra grąžinama bazėje: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Savo forma buvo sukurta! Jūs galite sukonfigūruoti savo formos per šiuos skirtukus."; +$LANG["notify_invalid_account_information_in_sessions"] = "Sąskaitos informacija saugoma sesija yra neteisingas. Prašome prisijungti iš naujo žemiau."; +$LANG["notify_invalid_license_key"] = "Atsiprašome, kad neatrodo, kad būti galiojančios licencijos raktą. Bandykite įvesdami jį dar kartą."; +$LANG["notify_invalid_permissions"] = "Jūs neturite teisių patekti į šį puslapį. You have been logged out."; +$LANG["notify_invalid_search_dates"] = "Prašome naudoti datepicker įvesti teisingą datą arba datas."; +$LANG["notify_invalid_upload_folder"] = "Upload kataloge yra neteisingi arba nėra įrašomas."; +$LANG["notify_lang_list_updated"] = "Rasti sąsajos kalbą sąrašas buvo atnaujintas."; +$LANG["notify_login_info_emailed"] = "Jūsų prisijungimo informacija buvo išsiųsta elektroniniu paštu."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oi, šis modulis jau įdiegtas!"; +$LANG["notify_module_installed"] = "Modulis jau įdiegtas. Spustelėkite čia norėdami pasirinkti modulį."; +$LANG["notify_module_list_updated"] = "Modulis sąrašas buvo atnaujintas."; +$LANG["notify_module_uninstalled"] = "Modulis buvo pašalinta."; +$LANG["notify_module_updated"] = "{\$module} modulis buvo atnaujintas {\$version}. Spustelėkite čia norėdami pasirinkti modulį ."; +$LANG["notify_multi_field_selected"] = "Srityje buvo pasirinktas. Spustelėkite čia norėdami peržiūrėti ir redaguoti srityje galimybes."; +$LANG["notify_multi_field_updated"] = "Šis laukas buvo atnaujintas. Jūs galėsite konfigūruoti srityje po sukūrimo formą."; +$LANG["notify_multiple_fields_found"] = "Kelių elementų buvo rasta šios srities vardas ({\$field_name}). Tai gali atsitikti, jei jūsų puslapis turi daugiau nei viena dalyvavimo forma, arba jei jūs netyčia pavadintas vienas iš jūsų formų pat kaip kitos. Prašome pasirinkti vieną norimą iš sąrašo apačioje."; +$LANG["notify_new_default_view_created"] = "Buvo sukurta nauja, numatytasis rodinys, kuriame visų jūsų formos laukų."; +$LANG["notify_new_submission_created"] = "Pateikimo buvo sukurta. Jūs galite jį redaguoti žemiau."; +$LANG["notify_no_account_id_in_sessions"] = "Nr vartotojo ID sąskaitos buvo rasta sesijų. Prašome prisijungti iš naujo žemiau."; +$LANG["notify_no_api_installed"] = "Jūs neturite API įrengtas"; +$LANG["notify_no_client_permissions"] = "Nėra parametrus galima keisti."; +$LANG["notify_no_email_template_selected"] = "Prašome pasirinkti šabloną el."; +$LANG["notify_no_emails_defined"] = "Nr laiškų buvo nustatyti šioje formoje. Norėdami įdėti naują, paspauskite žemiau esantį mygtuką."; +$LANG["notify_no_field_settings"] = "Šioje srityje nėra jokių papildomų nustatymų."; +$LANG["notify_no_fields_in_tab"] = "Šioje kortelėje nėra jokių laukų."; +$LANG["notify_no_option_lists"] = "Yra Galimybė nepateikti jokių apibrėžti sąrašai. Paspauskite mygtuką žemiau, norėdami sukurti naują."; +$LANG["notify_no_test_submission"] = "Forma Įrankiai negavo sėkmingas bandymas pateikti dar."; +$LANG["notify_no_user_email_fields_configured"] = "Pastaba: Jei norite išsiųsti laišką į elektroninio pašto adreso, kuris buvo įtrauktas į formą, pirmiausia jūs turite sukonfigūruoti formos laukelius."; +$LANG["notify_no_views"] = "Jūsų formoje nėra, bet Peržiūrėjo! Jums reikės bent vieną Peržiūrėti siekiant valdyti savo formos duomenis."; +$LANG["notify_no_views_assigned_to_client_form"] = "Atrodo, kad jūsų vartotojo sąskaita nebuvo priskirti prie jokių parodymų forma, todėl jūs negalėsite matyti jokių duomenų. Prašome kreiptis dėl papildomos pagalbos administratorius."; +$LANG["notify_no_views_defined"] = "Jūs neturite, bet Peržiūrėjo apibrėžta. Jūs negalėsite peržiūrėti šios formos pateikimo, išskyrus atvejus, kai yra sukurta bent viena Peržiūrėti. Norėdami sukurti numatytąjį rodinį, spustelėkite žemiau esantį mygtuką."; +$LANG["notify_option_list_deleted"] = "Parinktį sąrašo buvo išbraukta."; +$LANG["notify_option_list_updated"] = "Galimybė sąrašas buvo atnaujintas."; +$LANG["notify_public_form_omit_list_updated"] = "Klientų praleisti už šią formą, buvo atnaujinta."; +$LANG["notify_public_view_omit_list_updated"] = "Klientų praleisti už tai vaizdas buvo atnaujintas."; +$LANG["notify_required_admin_pages"] = "Šie puslapiai yra reikalingos administratoriaus meniu: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Atsiprašome, nebuvo jokios veiklos, o todėl mums teko Prisijungti jus. Prašome prisijungti iš naujo žemiau."; +$LANG["notify_setup_options_updated"] = "Įdiegimo galimybės buvo atnaujintas."; +$LANG["notify_smart_fill_field_not_found"] = "Mums nepavyko rasti šio lauko pavadinimas ({\$field_name}) forma (-iuose). Jūs galite rankiniu būdu nustatyti lauką įveskite žemiau, arba paspauskite mygtuką Pereiti redaguoti šioje srityje vėliau."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Jūsų failas (-ai) buvo sėkmingai įkelta. Bandykite spausti Smart Fill mygtuką dar kartą. Jei šis veiksmas nepadeda, jums reikės praleisti šį žingsnį ir sukonfigūruoti formos laukų manally vėliau."; +$LANG["notify_smart_fill_submitted"] = "Forma buvo pateikta. Priklausomai nuo savo forma ir numeris lauko puslapį dydžio, tai gali užtrukti."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Atsiprašome, vieną ar daugiau failų įvedėte negali būti įkeltas. Jums reikės praleisti šį žingsnį ir sukonfigūruoti laukus rankiniu būdu."; +$LANG["notify_submission_and_files_deleted"] = "Pateikimo ir bet koks failas (-ai) su ja buvo sėkmingai ištrintas."; +$LANG["notify_submission_copied"] = "Pateikimas buvo nukopijuotas."; +$LANG["notify_submission_copied_edit"] = "Pateikimas buvo nukopijuotas. Galite jį redaguoti žemiau."; +$LANG["notify_submission_deleted"] = "Pateikimo buvo sėkmingai ištrintas."; +$LANG["notify_submission_deleted_with_problems"] = "Pateikimo buvo panaikinta, tačiau šių problemų iškilo bandant ištrinti šį failą (-us):"; +$LANG["notify_submission_id_not_found"] = "Pateikimo ID nerastas."; +$LANG["notify_submission_not_updated"] = "Pateikimas negali būti atnaujintas."; +$LANG["notify_submissions_and_files_deleted"] = "Pareiškimus ir bet kokį failą (-ų) su jais buvo sėkmingai ištrintas."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} paraiška buvo nukopijuoti."; +$LANG["notify_submissions_deleted"] = "Pareiškimai buvo sėkmingai ištrintas."; +$LANG["notify_submissions_deleted_with_problems"] = "Pareiškimai buvo panaikinta, tačiau šių problemų iškilo bandant ištrinti šį failą (-us):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Jūsų elektroninio pašto testas negali būti išsiųstas."; +$LANG["notify_theme_cache_folder_not_writable"] = "Ši tema talpyklos kataloge nėra įrašomas. Kad būtų galima šią temą, {\$folder} aplankas turi turėti visišką skaitymo-rašymo teises."; +$LANG["notify_theme_list_updated"] = "Tema sąrašas buvo atnaujintas."; +$LANG["notify_themes_settings_updated"] = "Jūsų tema nustatymai buvo atnaujinti."; +$LANG["notify_view_deleted"] = "Rodyti buvo ištrintas."; +$LANG["notify_view_group_deleted"] = "Rodymas grupėje buvo ištrintas."; +$LANG["notify_view_missing_columns"] = "OOPS! Atsiprašome, šis požiūris nebuvo visiškai įsteigti dar."; +$LANG["notify_view_missing_columns_admin_fix"] = "Spauskite čia , jei norite nurodyti, kurie laukai turėtų pasirodyti šį puslapį stulpelių."; +$LANG["notify_view_updated"] = "Rodyti buvo atnaujintas."; +$LANG["notify_your_email_sent"] = "Jūsų pranešimas sėkmingai išsiųsta."; +$LANG["phrase_100_per_page"] = "100 už puslapį"; +$LANG["phrase_10_per_page"] = "10 už puslapį"; +$LANG["phrase_15_per_page"] = "15 per puslapį"; +$LANG["phrase_1_direct"] = "1. Tiesioginis"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per puslapį"; +$LANG["phrase_25_per_page"] = "25 už puslapį"; +$LANG["phrase_2_code"] = "2. Kodas"; +$LANG["phrase_2_columns"] = "2 stulpeliai"; +$LANG["phrase_2chars"] = "2 eilutė"; +$LANG["phrase_3_columns"] = "3 skiltyse"; +$LANG["phrase_4_columns"] = "4 stulpelių"; +$LANG["phrase_50_per_page"] = "50 už puslapį"; +$LANG["phrase_accepting_submissions"] = "(priimti pareiškimus)"; +$LANG["phrase_access_admin_account_c"] = "Jūs galite prisijungti prie administravimo sąskaitą čia"; +$LANG["phrase_access_type"] = "Prieigos tipas"; +$LANG["phrase_account_info"] = "Paskyros informacija"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Reikalingas veiksmas"; +$LANG["phrase_add_client"] = "Pridėti klientas"; +$LANG["phrase_add_client_menu"] = "Pridėti klientų Meniu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Pridėti numatytuosius nustatymus »"; +$LANG["phrase_add_field"] = "Pridėti laukas"; +$LANG["phrase_add_fields"] = "Pridėti sritys"; +$LANG["phrase_add_fields_rightarrow"] = "Pridėti laukas (-ai) »"; +$LANG["phrase_add_form"] = "Pridėti forma"; +$LANG["phrase_add_form_external"] = "Pridėti forma - Išorės"; +$LANG["phrase_add_form_internal"] = "Pridėti forma - Vidaus"; +$LANG["phrase_add_new_group_rightarrow"] = "Pridėti naują grupę »"; +$LANG["phrase_add_num_rows"] = "Įtraukti {\$number} Row (-ai)"; +$LANG["phrase_add_row"] = "Pridėti Row »"; +$LANG["phrase_add_submission_button"] = "Pridėti pateikimas mygtukas"; +$LANG["phrase_add_view_rightarrow"] = "Pridėti Peržiūrėti »"; +$LANG["phrase_adding_multi_page_form"] = "Įrašyta Multi-page formą su API"; +$LANG["phrase_adding_single_page_form"] = "Įrašyta vieno puslapio formą su API"; +$LANG["phrase_admin_menu"] = "Administratoriaus Meniu"; +$LANG["phrase_admin_only"] = "Tik administratorius"; +$LANG["phrase_admin_panel"] = "Admin panel"; +$LANG["phrase_administrator_theme"] = "Administratoriaus tema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Papildomi nustatymai »"; +$LANG["phrase_all_X_results_selected"] = "Visos {\$numresults} rezultatai Rinktiniai"; +$LANG["phrase_all_clients"] = "Visi klientai"; +$LANG["phrase_all_clients_except_c"] = "Visiems klientams, išskyrus:"; +$LANG["phrase_all_clients_have_access"] = "(visi klientai turi prieigą)"; +$LANG["phrase_all_fields"] = "Visi laukai"; +$LANG["phrase_all_fields_displayed"] = "Visi laukai yra rodomas"; +$LANG["phrase_all_statuses"] = "Visos statusai"; +$LANG["phrase_all_submissions"] = "Visi pareiškimai"; +$LANG["phrase_allow_fields_edited"] = "Leisti laukai turi būti parengta"; +$LANG["phrase_alphanumeric"] = "Raidžių (AZ, 0-9)"; +$LANG["phrase_api_version"] = "Api Version"; +$LANG["phrase_apply_timezone_offset"] = "Taikyti Laiko juosta ofsetinė"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Susieti visų išvardytų kliento sąskaitas {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Susieti visų išvardytų kliento sąskaitas {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Pabaigoje"; +$LANG["phrase_at_start"] = "Tuo Pradėti"; +$LANG["phrase_author_link"] = "Autorius Nuoroda"; +$LANG["phrase_auto_disable_account"] = "Saviblokiai sąskaitą po # nesėkmingą prisijungimą bandymai"; +$LANG["phrase_auto_size"] = "Auto dydžio"; +$LANG["phrase_available_clients"] = "Esami klientai"; +$LANG["phrase_available_fields"] = "Galimus laukus"; +$LANG["phrase_available_option_lists"] = "Turima galimybė sąrašus"; +$LANG["phrase_available_swatches"] = "Prieinamas swatches"; +$LANG["phrase_available_swatches_c"] = "Galimi swatches:"; +$LANG["phrase_available_tabs"] = "Prieinamas Skirtukai"; +$LANG["phrase_available_views"] = "Galimos Žiūrėti"; +$LANG["phrase_awaiting_form_submission"] = "Laukiama formos pateikimą."; +$LANG["phrase_back_to_field_list"] = "«atgal į lauką sąrašą"; +$LANG["phrase_back_to_search_results"] = "Atgal į paieškos rezultatus"; +$LANG["phrase_base_view_on"] = "Bazė Peržiūrėti ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Prisijungimo informacija"; +$LANG["phrase_characters_limit_p"] = "simbolių riba."; +$LANG["phrase_check_db_settings_try_again"] = "Atidžiai patikrinkite savo duomenų bazės nustatymus ir spustelėkite mygtuką Tęsti, jei dar kartą."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Patikrinkite URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Išvalyti"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Išvalyti Praleisti sąrašą"; +$LANG["phrase_client_account_settings"] = "Kliento sąskaitos"; +$LANG["phrase_client_field"] = "Klientų sritis"; +$LANG["phrase_client_map_filters"] = "Kliento Filtrai »"; +$LANG["phrase_client_may_edit"] = "Klientas gali redaguoti"; +$LANG["phrase_client_menu"] = "Kliento meniu"; +$LANG["phrase_clients_can_access_form"] = "Klientai, kurie gali gauti forma"; +$LANG["phrase_clients_can_access_view"] = "Klientai, kurie gali naudotis Žiūrėti"; +$LANG["phrase_clients_cannot_access_form"] = "Klientai, kurie negali gauti forma"; +$LANG["phrase_clients_cannot_access_view"] = "Klientai, kurie negali patekti vaizdas"; +$LANG["phrase_clients_may_edit"] = "Klientai gali redaguoti"; +$LANG["phrase_code_c"] = "Klaidos kodas:"; +$LANG["phrase_code_markup_field"] = "Kodas / aprašų laukas"; +$LANG["phrase_code_markup_type"] = "Kodas / Žymėjimo tipas"; +$LANG["phrase_codes_c"] = "Klaidų kodai:"; +$LANG["phrase_column_width"] = "Stulpelio plotis"; +$LANG["phrase_company_name"] = "Pavadinimas"; +$LANG["phrase_configure_form_email_fields"] = "Konfigūruoti formos laukelius"; +$LANG["phrase_confirm_folder_url_match"] = "Patvirtinkite aplanko URL Match"; +$LANG["phrase_connect_rows"] = "Prisijungti eilučių"; +$LANG["phrase_copy_email_settings_from"] = "Kopijuoti Siųsti nustatymai ..."; +$LANG["phrase_copy_settings_from"] = "Kopijuoti nustatymus ..."; +$LANG["phrase_core_fields"] = "Pagrindinės sritys"; +$LANG["phrase_core_version"] = "Branduolio versija"; +$LANG["phrase_create_account"] = "Sukurti sąskaitą"; +$LANG["phrase_create_admin_account"] = "Sukurti sąskaita administratorius"; +$LANG["phrase_create_config_file"] = "Sukurti konfigūracijos failą"; +$LANG["phrase_create_database_tables"] = "Sukurti duomenų lenteles"; +$LANG["phrase_create_default_view"] = "Sukurti Numatytasis rodinys"; +$LANG["phrase_create_file"] = "Sukurkite failą"; +$LANG["phrase_create_group"] = "Sukurti grupę"; +$LANG["phrase_create_new_email"] = "Create New Email"; +$LANG["phrase_create_new_menu"] = "Sukurti naują meniu"; +$LANG["phrase_create_new_option_list"] = "Sukurti nauja galimybė sąrašas"; +$LANG["phrase_create_new_option_list_group"] = "Sukurti nauja galimybė sąrašas grupė"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Sukurti nauja galimybė sąrašas »"; +$LANG["phrase_create_new_view"] = "Sukurti naują Peržiūrėti"; +$LANG["phrase_create_new_view_group"] = "Sukurti naują Peržiūrėti grupę"; +$LANG["phrase_custom_display_format"] = "Pasirinktinis formatas"; +$LANG["phrase_custom_recipient"] = "Custom Gavėjas"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Tamsiai mėlyna"; +$LANG["phrase_data_type"] = "Duomenų tipas"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Duomenų bazės pavadinimas"; +$LANG["phrase_database_password"] = "Database slaptažodis"; +$LANG["phrase_database_settings"] = "Database Nustatymai"; +$LANG["phrase_database_setup"] = "Duomenų bazės nustatymas"; +$LANG["phrase_database_table_prefix"] = "Duomenų bazės lentelės prefiksas"; +$LANG["phrase_database_username"] = "Database Username"; +$LANG["phrase_date_format"] = "Datos formatas"; +$LANG["phrase_db_column"] = "BP skiltis"; +$LANG["phrase_db_setup_page_4"] = "4. Duomenų bazės nustatymas"; +$LANG["phrase_default_client_account_theme"] = "Numatytasis kliento sąskaita tema"; +$LANG["phrase_default_date_field_search_value"] = "Numatytasis datos laukas paieškos vertę"; +$LANG["phrase_default_language"] = "Numatytoji kalba"; +$LANG["phrase_default_menu"] = "Numatytasis Meniu"; +$LANG["phrase_default_sessions_timeout"] = "Numatytasis sesijos timeout"; +$LANG["phrase_default_sort_order"] = "Numatytasis Rūšiuoti"; +$LANG["phrase_default_tab_label"] = "Duomenys"; +$LANG["phrase_default_theme"] = "Numatytasis tema"; +$LANG["phrase_default_value"] = "Reikšmė pagal nutylėjimą"; +$LANG["phrase_default_values"] = "Reikšmes pagal nutylėjimą"; +$LANG["phrase_default_values_new_submissions"] = "Numatytąsias vertes naujų pareiškimų"; +$LANG["phrase_delete_field"] = "Ištrinti laukas"; +$LANG["phrase_delete_form"] = "Ištrinti forma"; +$LANG["phrase_delete_row"] = "Ištrinti eilutę"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Ištrinti susijusius failus trindami pateikimo"; +$LANG["phrase_delete_view"] = "Ištrinti Peržiūrėti"; +$LANG["phrase_disconnect_rows"] = "Atjunkite eilučių"; +$LANG["phrase_display_email"] = "Rodyti paštas"; +$LANG["phrase_display_name"] = "Rodomas vardas"; +$LANG["phrase_display_text"] = "Rodyti Tekstas"; +$LANG["phrase_display_value"] = "Rodyti Reikšmė"; +$LANG["phrase_edit_admin_menu"] = "Redaguoti Meniu Admin"; +$LANG["phrase_edit_client"] = "Redaguoti klientas"; +$LANG["phrase_edit_client_menu"] = "Redaguoti klientų Meniu"; +$LANG["phrase_edit_email_template"] = "Redaguoti Šablonas"; +$LANG["phrase_edit_field"] = "Redaguoti sritis"; +$LANG["phrase_edit_field_c"] = "Redaguoti Veiklos sritis:"; +$LANG["phrase_edit_form"] = "Redaguoti formos"; +$LANG["phrase_edit_form_access_type_b"] = "[Redaguoti forma prieigos tipą]"; +$LANG["phrase_edit_option_list"] = "Redaguoti variantas sąrašą"; +$LANG["phrase_edit_submission"] = "Redaguoti pateikimas"; +$LANG["phrase_edit_submission_label"] = "Redaguoti pateikimas etiketė"; +$LANG["phrase_edit_view"] = "Keisti išvaizdą"; +$LANG["phrase_email_format"] = "Paštas formatas"; +$LANG["phrase_email_settings"] = "Siųsti Nustatymai"; +$LANG["phrase_email_template"] = "Email Template"; +$LANG["phrase_email_template_name"] = "Siųsti šablono pavadinimą"; +$LANG["phrase_error_learn_more"] = "Sužinokite daugiau apie šią klaidą."; +$LANG["phrase_error_text_intro"] = "Ištaisykite šias klaidas (-ai) ir iš naujo:"; +$LANG["phrase_errors_learn_more"] = "Spauskite ant klaidų kodais, ir sužinokite daugiau."; +$LANG["phrase_event_trigger"] = "Įvykio Trigger"; +$LANG["phrase_external_form"] = "Išorės forma"; +$LANG["phrase_external_form_info"] = "Išorės formai informacija"; +$LANG["phrase_external_your_own_form"] = "Išorės (savo forma)"; +$LANG["phrase_field_comments"] = "Lauko Komentarai"; +$LANG["phrase_field_label"] = "Lauko etiketė"; +$LANG["phrase_field_options"] = "Lauko Funkcijos"; +$LANG["phrase_field_size"] = "Lauko dydis"; +$LANG["phrase_field_skipped"] = "Lauko praleistas"; +$LANG["phrase_field_specific_settings"] = "Lauko Nustatymai"; +$LANG["phrase_field_type"] = "Lauko tipas"; +$LANG["phrase_field_type_no_validation"] = "Nėra įteisintos taisyklės šioje srityje tipo."; +$LANG["phrase_field_types"] = "Laukų tipai"; +$LANG["phrase_field_value"] = "Lauko reikšmė"; +$LANG["phrase_field_values_to_display_values"] = "Laukų reikšmių »Rodyti vertybės"; +$LANG["phrase_final_touches_page_6"] = "6. Baigiamuosius darbus"; +$LANG["phrase_finalize_form"] = "Baigia forma"; +$LANG["phrase_first_name"] = "Vardas"; +$LANG["phrase_footer_text"] = "Poraštės tekstą"; +$LANG["phrase_for_any_form_submission"] = "Dėl bet kokios formos pateikimas"; +$LANG["phrase_for_view_submissions"] = "Tik teikimus Rodyti:"; +$LANG["phrase_forgot_password"] = "Pamiršote slaptažodį?"; +$LANG["phrase_form_already_selected"] = "Forma jau atrinktų"; +$LANG["phrase_form_email_field_b_c"] = "[Forma el field]:"; +$LANG["phrase_form_email_field_configuration"] = "Forma Siųsti lauko konfigūracija"; +$LANG["phrase_form_email_fields"] = "Forma E-mail sritys"; +$LANG["phrase_form_field"] = "Laukelyje"; +$LANG["phrase_form_field_contents"] = "Formos lauko turinys"; +$LANG["phrase_form_field_name"] = "Formos lauko vardas"; +$LANG["phrase_form_field_placeholders"] = "Formos srityje vietos rezervavimo ženklų"; +$LANG["phrase_form_fields"] = "Formos laukai"; +$LANG["phrase_form_info"] = "Forma"; +$LANG["phrase_form_info_2"] = "2. Forma"; +$LANG["phrase_form_list"] = "Forma Sąrašas"; +$LANG["phrase_form_name"] = "Vardas"; +$LANG["phrase_form_page"] = "Forma Page"; +$LANG["phrase_form_placeholders"] = "Forma pamainymai"; +$LANG["phrase_form_submission"] = "Prašymo forma"; +$LANG["phrase_form_submissions"] = "Paraiškos forma"; +$LANG["phrase_form_type"] = "Type"; +$LANG["phrase_form_url"] = "Forma URL"; +$LANG["phrase_form_urls"] = "Forma URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formų priskiriamos bet kokios sąskaitos"; +$LANG["phrase_forms_page_default_message"] = "Formas puslapis numatytąjį žinutės"; +$LANG["phrase_ft_installation"] = "Forma Įrankiai installation script"; +$LANG["phrase_full_width"] = "Visas plotis"; +$LANG["phrase_getting_started"] = "pradžia"; +$LANG["phrase_global_placeholders"] = "Global pamainymai"; +$LANG["phrase_group_name"] = "Grupės pavadinimas"; +$LANG["phrase_group_options_q"] = "Grupė variantų?"; +$LANG["phrase_group_rows"] = "Sugrupuokite eilutes"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Paryškinti Spalva"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Importo variantas sąrašas »"; +$LANG["phrase_input_length"] = "Įėjimo ilgis"; +$LANG["phrase_installation_help"] = "Įdiegimo pagalbos"; +$LANG["phrase_internal_form"] = "Vidaus forma"; +$LANG["phrase_ip_address"] = "IP Addresas"; +$LANG["phrase_is_multi_page_form_q"] = "Ar tai kelių puslapių?"; +$LANG["phrase_label_response_placeholders"] = "Etiketė / reagavimo Pamainymai"; +$LANG["phrase_large_300px"] = "Didelis (300px)"; +$LANG["phrase_large_400px"] = "Didelis (400px)"; +$LANG["phrase_last_7_days"] = "Paskutines 7 dienas"; +$LANG["phrase_last_logged_in"] = "Paskutinis apsilankymas"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Atnaujinimo data"; +$LANG["phrase_last_name"] = "Pavardė"; +$LANG["phrase_letters_only"] = "Laiškai tik"; +$LANG["phrase_light_brown"] = "Šviesiai ruda"; +$LANG["phrase_limit_email_content"] = "Riba paštu turinio laukai vaizdas"; +$LANG["phrase_loading_ellipsis"] = "Kraunama ..."; +$LANG["phrase_log_in"] = "Prisijungti"; +$LANG["phrase_login_as_user"] = "Prisijungti šį klientą"; +$LANG["phrase_login_info"] = "Prisijungti Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Vardas Slaptažodis"; +$LANG["phrase_login_username"] = "Prisijunkite Vartotojo vardas"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Photoshop"; +$LANG["phrase_main_settings"] = "Pagrindiniai parametrai"; +$LANG["phrase_manage_client"] = "Valdyti klientų"; +$LANG["phrase_manage_client_omit_list"] = "Valdyti klientų praleisti sąrašas"; +$LANG["phrase_max_file_size"] = "Maksimalus failo dydis"; +$LANG["phrase_max_length"] = "Maksimalus ilgis"; +$LANG["phrase_max_length_words_chars"] = "- Didžiausias ilgis (žodžių / simbolių)"; +$LANG["phrase_may_add_submissions"] = "Gali pridėti Pristatymai"; +$LANG["phrase_may_copy_submissions"] = "Galite kopijuoti dokumentus"; +$LANG["phrase_may_delete_submissions"] = "Gali ištrinti Pristatymai"; +$LANG["phrase_medium_150px"] = "Vidutinis (150px)"; +$LANG["phrase_medium_200px"] = "Vidutinis (200px)"; +$LANG["phrase_menu_name"] = "Meniu pavadinimas"; +$LANG["phrase_menu_type"] = "Meniu tipas"; +$LANG["phrase_min_password_length"] = "Minimalus slaptažodžio ilgis"; +$LANG["phrase_module_description"] = "Modulio aprašymas"; +$LANG["phrase_module_info"] = "Modulis Informacija"; +$LANG["phrase_module_nav"] = "Modulio Nav"; +$LANG["phrase_month_to_date"] = "Mėnesį pradžios"; +$LANG["phrase_multi_select"] = "Multi-pasirinkite"; +$LANG["phrase_multi_select_dropdown"] = "Multi-pasirinkite išskleidžiamajame"; +$LANG["phrase_multiple_fields_found"] = "Kelis laukus Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Vardas / Pavardė"; +$LANG["phrase_new_blank_email"] = "Naujas tuščią laišką"; +$LANG["phrase_new_blank_option_list"] = "Naują tuščią variantas sąrašas"; +$LANG["phrase_new_blank_view"] = "Naujas Tuščia vaizdas"; +$LANG["phrase_new_ft_installation"] = "New Form Įrankiai įrengimas"; +$LANG["phrase_new_option_list"] = "Naujas variantas sąrašas"; +$LANG["phrase_new_password"] = "Naujas slaptažodis"; +$LANG["phrase_new_password_reenter"] = "Naujoji Slaptažodis (Prašome iš naujo įvesti)"; +$LANG["phrase_new_view"] = "Naujas vaizdas"; +$LANG["phrase_new_view_all_fields"] = "View - Visi laukai"; +$LANG["phrase_next_client"] = "tolimesnis klientui »"; +$LANG["phrase_next_field"] = "Kitas laukas »"; +$LANG["phrase_next_form"] = "tolimesnis forma »"; +$LANG["phrase_next_view"] = "Kitas Žiūrėti »"; +$LANG["phrase_no_clients"] = "Nr klientams"; +$LANG["phrase_no_limit"] = "Be Limito"; +$LANG["phrase_no_offset"] = "Nr kompensuoti"; +$LANG["phrase_no_option_lists_available"] = "Nr galimybių sąrašus."; +$LANG["phrase_no_views"] = "Nr Parodymų"; +$LANG["phrase_no_views_with_filters_p"] = "(Jokių filtrų Peržiūrėjo apibrėžta)"; +$LANG["phrase_none_not_recommended"] = "Nėra (nerekomenduojama)"; +$LANG["phrase_not_assigned_to_option_list"] = "Šis laukas nėra priskiriamas variantas sąrašas."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Nėra lygi"; +$LANG["phrase_not_found"] = "Not found!"; +$LANG["phrase_not_like"] = "Not Like"; +$LANG["phrase_not_visible_to_client"] = "(nematomas klientui)"; +$LANG["phrase_num_clients_per_page"] = "Skaičiai Klientai Per Page"; +$LANG["phrase_num_emails_per_page"] = "Skaičiai laiškų per puslapį"; +$LANG["phrase_num_fields"] = "Laukų skaičius"; +$LANG["phrase_num_forms_per_page"] = "Skaičiai Blankai Per Page"; +$LANG["phrase_num_menus_per_page"] = "Skaičiai Meniu Per Page"; +$LANG["phrase_num_modules_per_page"] = "Skaičiai Moduliai Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Skaičiai variantas skaičius puslapyje sąrašas"; +$LANG["phrase_num_options"] = "Skaičiai parinktys"; +$LANG["phrase_num_rows"] = "Skaičiai Eilučių"; +$LANG["phrase_numbers_only"] = "Tik skaičiai"; +$LANG["phrase_often_localhost"] = "(dažnai "localhost")"; +$LANG["phrase_on_form_submission"] = "Dėl formos pateikimo"; +$LANG["phrase_one_char_number"] = "Bent vienas iš požymių yra skaitmuo (0-9)"; +$LANG["phrase_one_char_upper"] = "Bent vienas iš požymių yra didžiųjų"; +$LANG["phrase_one_special_char"] = "Bent viena {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(tik tam tikri klientai turi prieigą)"; +$LANG["phrase_open_form_in_dialog"] = "Atidarykite dialogo lange"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Atidaryti naują skirtuką / langų šią formą"; +$LANG["phrase_option_list"] = "Variantas sąrašas"; +$LANG["phrase_option_list_name"] = "Pasirinkimo Sąrašo pavadinimas"; +$LANG["phrase_option_list_or_contents"] = "Variantas sąrašas / Turinys"; +$LANG["phrase_option_lists"] = "Variantas sąrašai"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Puslapio pavadinimo"; +$LANG["phrase_pass_on"] = "Perduoti"; +$LANG["phrase_password_min"] = "Ji turi būti bent {\$length} simbolių."; +$LANG["phrase_password_one_number"] = "Jame turi būti bent vienas skaitmuo (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Jame turi būti bent viena didžioji raidė."; +$LANG["phrase_password_requirements_c"] = "Slaptažodis reikalavimus:"; +$LANG["phrase_password_reset"] = "Slaptažodžio keitimas"; +$LANG["phrase_password_special_char"] = "Ji turi būti iš šių simbolių bent vieną: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissions / Kiti nustatymai"; +$LANG["phrase_permitted_file_types"] = "Leidžiami failų tipai"; +$LANG["phrase_phone_number"] = "Telefono numeris"; +$LANG["phrase_phone_number_format"] = "Telefono numerį formatą"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini maksimalus leidžiamas failo įkėlimo dydis:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP versija"; +$LANG["phrase_please_confirm"] = "Patvirtinkite"; +$LANG["phrase_please_enter_license_key"] = "Prašome įvesti savo licencijos raktą"; +$LANG["phrase_please_select"] = "Pasirinkite"; +$LANG["phrase_please_select_form"] = "Prašome pasirinkti formą"; +$LANG["phrase_prev_client"] = "«Ankstesnė klientas"; +$LANG["phrase_prev_form"] = "«Ankstesnė forma"; +$LANG["phrase_prevent_password_reuse"] = "Išvengti pakartotinio naudojimo # paskutiniais slaptažodžius"; +$LANG["phrase_previous_field"] = "«ankstesnis laukas"; +$LANG["phrase_previous_page"] = "Ankstesnis"; +$LANG["phrase_previous_view"] = "«Ankstesnė Peržiūrėti"; +$LANG["phrase_program_name"] = "Programos pavadinimas"; +$LANG["phrase_public_form_omit_list"] = "Viešieji forma Praleisti sąrašą"; +$LANG["phrase_public_view_omit_list"] = "Visuomenės Žiūrėti Praleisti sąrašą"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Buvo problemų su šią užklausą:"; +$LANG["phrase_radio_buttons"] = "Mygtukai"; +$LANG["phrase_random_form_submission"] = "Atsitiktinė pateikimo forma"; +$LANG["phrase_re_enter_password"] = "Pakartokite slaptažodį"; +$LANG["phrase_recipient_type"] = "Gavėjo tipas"; +$LANG["phrase_redirect_url"] = "URL peradresavimo"; +$LANG["phrase_refresh_list"] = "Atnaujinti sąrašą"; +$LANG["phrase_refresh_module_list"] = "Atnaujinti modulis sąrašą"; +$LANG["phrase_refresh_page"] = "Atnaujinti puslapį"; +$LANG["phrase_refresh_theme_list"] = "Atnaujinti Tema sąrašą"; +$LANG["phrase_register_new_email"] = "Registracija Naujas paštas"; +$LANG["phrase_remaining_characters"] = "likusių simbolių"; +$LANG["phrase_remaining_words"] = "likusių žodžiai"; +$LANG["phrase_remove_tabs"] = "Pašalinti Kortelės"; +$LANG["phrase_required_password_chars"] = "Reikalinga slaptažodį ženklai"; +$LANG["phrase_resend_test_submission"] = "Persiųsti testas pateikimas"; +$LANG["phrase_return_form_list"] = "Atgal į sąrašą forma"; +$LANG["phrase_row_selected"] = "{\$num_rows} eilutėje eiga"; +$LANG["phrase_rows_selected"] = "{\$num_rows} eilučių eiga"; +$LANG["phrase_sample_data"] = "Pavyzdžio duomenys"; +$LANG["phrase_save_changes"] = "Išsaugoti pakeitimus"; +$LANG["phrase_search_keyword"] = "Paieškos žodis"; +$LANG["phrase_security_settings"] = "Saugumo nustatymai"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Atrinkti visus {\$numresults} rezultatai"; +$LANG["phrase_select_all_on_page"] = "Žymėti viską Puslapis"; +$LANG["phrase_select_date"] = "Pasirinkite datą"; +$LANG["phrase_select_field"] = "Pasirinkite sritį"; +$LANG["phrase_select_swatch"] = "Pasirinkite Swatch"; +$LANG["phrase_selected_clients"] = "Rinktiniai Klientai"; +$LANG["phrase_selected_views"] = "Rinktiniai Žiūrėti"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Siųsti bandom laišką"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Seansai timeout"; +$LANG["phrase_setting_value"] = "Setting Value"; +$LANG["phrase_setup_options"] = "Options"; +$LANG["phrase_show_all"] = "Rodyti visus"; +$LANG["phrase_show_form"] = "Rodyti forma"; +$LANG["phrase_size_large"] = "Didelis (tekstas)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 simbolių)"; +$LANG["phrase_size_small"] = "Mažas (<= 20 simbolių)"; +$LANG["phrase_size_tiny"] = "Maža (<= 5 simbolių)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Pereiti laukas"; +$LANG["phrase_skip_step"] = "Pereiti veiksmas"; +$LANG["phrase_small_100px"] = "Mažas (100px)"; +$LANG["phrase_small_80px"] = "Mažas (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Užpildykite laukus:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Užpildykite Vartotojo Dokumentacija »"; +$LANG["phrase_sort_as"] = "Rūšiuoti Kaip"; +$LANG["phrase_special_fields"] = "Specialusis sritys"; +$LANG["phrase_standard_fields"] = "Standartinis sritys"; +$LANG["phrase_standard_filters"] = "Standartinis Filtrai »"; +$LANG["phrase_step_1"] = "1 pakopa"; +$LANG["phrase_step_2"] = "2 pakopa"; +$LANG["phrase_step_3"] = "Step 3"; +$LANG["phrase_step_4"] = "Žingsnis 4"; +$LANG["phrase_step_5"] = "5 etapas"; +$LANG["phrase_step_6"] = "6 etapas"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip Tags formos pastabose"; +$LANG["phrase_subject_line"] = "Antraštė"; +$LANG["phrase_submission_date"] = "Pateikimo"; +$LANG["phrase_submission_id"] = "Pateikimas ID"; +$LANG["phrase_submission_made"] = "Pateikimo, {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Pateikimas tipas"; +$LANG["phrase_submissions_per_page"] = "Argumentai už puslapis"; +$LANG["phrase_system_check"] = "Sistemos patikrinimas"; +$LANG["phrase_system_fields_no_validation"] = "Jūs negalite pridėti patvirtinimo sistemos srityse."; +$LANG["phrase_system_time_offset"] = "Sistemos Laiko juosta"; +$LANG["phrase_tab_label"] = "Skirtuke etiketė"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Bandymo Folder Permissions"; +$LANG["phrase_test_submission"] = "Bandymo pateikimas"; +$LANG["phrase_test_submission_3"] = "3. Bandymo pateikimas"; +$LANG["phrase_test_submission_received"] = "Bandymo pateikimas įstojo"; +$LANG["phrase_text_and_html"] = "Tekstas & HTML"; +$LANG["phrase_text_email"] = "Tekstas paštas"; +$LANG["phrase_text_template"] = "Tekstas Šablonas"; +$LANG["phrase_the_previous_month"] = "Praėjusį mėnesį"; +$LANG["phrase_theme_description"] = "Tema aprašymas"; +$LANG["phrase_theme_info"] = "Tema Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50 taškų)"; +$LANG["phrase_total_results_c"] = "Iš viso rezultatų:"; +$LANG["phrase_type_c"] = "Klaidos tipas:"; +$LANG["phrase_unselect_all"] = "Pašalinti visas varneles"; +$LANG["phrase_update_accounts"] = "Atnaujinti sąskaitos"; +$LANG["phrase_update_email_template"] = "Atnaujinti Šablonas"; +$LANG["phrase_update_field"] = "Naujinti lauką"; +$LANG["phrase_update_order"] = "Atnaujinti užsakymą"; +$LANG["phrase_update_view"] = "Atnaujinti vaizdas"; +$LANG["phrase_upload_file"] = "Įkelti failą"; +$LANG["phrase_upload_files"] = "Įkelti failai"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Įkelti aplanke"; +$LANG["phrase_upload_folder_url"] = "Įkelti aplanko URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Naudokite Numatytoji reikšmė?"; +$LANG["phrase_used_by_num_form_fields"] = "Naudojamų # formos laukai"; +$LANG["phrase_uses_swatches"] = "Naudoja swatches"; +$LANG["phrase_valid_email"] = "Galioja paštas"; +$LANG["phrase_validation_error"] = "Klaida patvirtinant"; +$LANG["phrase_validation_rule"] = "Įteisinimo taisyklės"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Peržiūrėti grupės"; +$LANG["phrase_view_id"] = "Peržiūrėti ID"; +$LANG["phrase_view_name"] = "Peržiūrėti Vardas"; +$LANG["phrase_view_placeholders"] = "Peržiūrėti vietos rezervavimo ženklų"; +$LANG["phrase_view_submissions"] = "Peržiūrėti Pristatymai"; +$LANG["phrase_view_uploaded_files"] = "peržiūrėti atsisiųstus failus"; +$LANG["phrase_viewing_range"] = "[Peržiūri {\$startnum} į {\$endnum}]"; +$LANG["phrase_when_sent"] = "Siunčiant"; +$LANG["phrase_when_submission_is_deleted"] = "Jei argumentas yra išbraukta"; +$LANG["phrase_when_submission_is_edited"] = "Kai pateikimas edited"; +$LANG["phrase_who_can_access"] = "Kas gali naudotis?"; +$LANG["phrase_word_limit_p"] = "žodžio ribą."; +$LANG["phrase_year_to_date"] = "Šiais metais"; +$LANG["phrase_yes_for_all_views"] = "Taip, už visas nuomones"; +$LANG["phrase_yes_for_specific_views"] = "Taip, dėl konkrečių Žiūrėti"; +$LANG["phrase_your_account"] = "Jūsų sąskaita"; +$LANG["phrase_your_email"] = "Jūsų paštas"; +$LANG["phrase_your_email_address"] = "Jūsų elektroninio pašto adresas"; +$LANG["processing_form_disabled"] = "Atsiprašome, ši forma yra išjungta."; +$LANG["processing_form_incomplete"] = "Atsiprašome, šios formos, jei nėra iki galo sukurta iš vidaus forma Priemonės. Labiausiai tikėtina priežastis, kad ši problema yra ta, kad nuimti "form_tools_initialize_form" paslėptos formos lauką, bet nepavyko užbaigti visi "Pridėti Forma" proceso etapai.

    Prašome prisijungti ir peržiūrėti formą konfigūracijos."; +$LANG["processing_init_complete"] = "Ačiū! Jūsų nuomone bandymas buvo įgyvendinta per sėkmingai. Prašome grįžti į formą priemonės administravimo skydelio ir spauskite "Atnaujinti" mygtuką, esantį Pridėti forma Žingsnis 3 puslapis baigti kurti savo formos apačioje."; +$LANG["processing_invalid_form_id"] = "Atsiprašome, tai neatrodo, galiojantį ID."; +$LANG["processing_no_form_id"] = "process.php reikalaujama forma ID perdirbimui. Įsitikinkite, kad jūsų formoje yra paslėpta lauko pavadinimas "form_tools_form_id", kuris yra išlaikęs palei forma ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Forma Įrankiai negali nustatyti, kur nukreipti, kai jie nesugeba patekti CAPTCHA tinkamai. Prašome perduoti paslėptą lauko pavadinimas form_tools_form_url kuriame formą adresą."; +$LANG["processing_no_post_vars"] = "process.php negauna jokių duomenų. Pastaba: Šis scenarijus gali būti pakraunami tiesiai savo naršyklėje.
    Įsitikinkite, kad jūsų formą siųsti per POST."; +$LANG["processing_no_redirect_url"] = "Pateikimo buvo tvarkomi teisingai, tačiau jūs nenurodėte nukreipti adresą į šią formą! Įveskite savo forma, forma Priemonės sąsaja ir pridėti URL peradresavimo."; +$LANG["special_language"] = "Lithuanian"; +$LANG["special_language_locale"] = "Lithuanian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Visų naujų klientų sąskaitas bus sukurta parametrai ir leidimus, kurių apibrėžimai pateikiami žemiau. Norėdami pakeisti nustatymus konkretaus kliento, pakeisti kliento paskyros ir eikite į skirtuką Parametrai."; +$LANG["text_add_form_choose_integration_method"] = "Pasirinkti, kurį metodą, kurį norite naudoti, integruoti savo formą su forma Įrankiai."; +$LANG["text_add_form_code_submission_benefits"] = "Šis metodas naudoja forma Įrankiai API , pagrindinės formos Įrankiai scenarijų. API "suteikia daug naudingų funkcijų darbą įtraukti savo formą su forma Įrankiai, kaip paprasta, kaip įmanoma. Nėra jokių apribojimų, kaip savo forma gali būti pateikta, kai jūs naudojate API. Galite pateikti vienu ypu, ar puslapis po puslapio turinį, galite pridėti savo serverio pusėje patvirtinimo, CAPTCHA vaizdus galite pasirinkti pateikti informaciją, tačiau tik pasakyti, parodyti pateikimo formos Įrankiai UI vėliau (žr. skyriuje baigtas Pristatymai API pagalbos dokumentacija)."; +$LANG["text_add_form_code_submission_drawbacks"] = ", Kad galėtų pateikti savo formos duomenis per PHP, savo forma turi būti įsikūrusi tame pačiame tinklalapyje, kaip šią formą priemonių įdiegimą. Antra, yra ne techninis ir pradedantiesiems forma Įrankiai vartotojai, šis metodas gali būti šiek tiek bauginanti pirmojo. Bet yra daug dokumentų, kurie padės jums, įskaitant du paprastus samouczków integruojant vienos ir kelių puslapių savo formas (tai yra susiję su vėliau žingsnis)."; +$LANG["text_add_form_direct_submission_benefits"] = "Tai paprasčiausias būdas pateikti savo formos blankas Tools. Ji nereikalauja jokių PHP žinių, ir reikia tik labai maža keisti savo formą. It's great mažesnių formų, kur norite tiesiog pateikti informaciją apie duomenų bazę, tada nukreipti klientą į "Ačiū" puslapyje."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Šis pateikimo būdas yra labai paprasta naudoti, tačiau nesuteikia daug valdymo daugiau sudėtingų formų. Multi-page formas arba formas, kurias reikia server-side įteisinimo geriau tinka antrasis metodas: pateikti per formą Įrankiai API."; +$LANG["text_add_form_field_types1"] = "Beveik baigta! Šis puslapis bando surasti visus formos laukus ir nustatyti jų laukų tipai. Spustelėkite Smart Fill mygtuką teisę pradėti. Jums bus leidžiama tik pradėti, kai visi veiksmai buvo išspręsti klausimus, kad reikia jūsų dėmesio atsiras "priemonės " stulpelio."; +$LANG["text_add_form_field_types2"] = "Jei jūsų forma yra ne HTML formatu, spustelėkite Praleisti Žingsnis mygtuką, jei norite tęsti. Gali būti konfigūruojamas vėliau."; +$LANG["text_add_form_field_types3"] = "Šis Reload jūsų formos turinys (-ų). Pastaba: tai bus perrašyti visus pakeitimus, kuriuos padarė šį puslapį."; +$LANG["text_add_form_field_types4"] = "Tuo atveju, jei paleisti į problemų, spustelėkite čia praleisti šį žingsnį. Visi neišspręsti srityse naudoti numatytąsias vertes. Galite tinkinti šiuos laukus vėliau."; +$LANG["text_add_form_field_types_manual_upload"] = "Jei turite negalėjo Smart Užpildykite savo laukus, jūs galbūt norėsite pabandyti alternatyvus sprendimas: nusiųsti savo formas kopijas žemiau esančius laukelius."; +$LANG["text_add_form_field_types_manual_upload2"] = "Pastaba: nesiųskite žaliavinio PHP puslapius (arba kitų serverio pusės kodas) - tiesiog įkelkite HTML versijos. Gauti, peržiūrėti ir išsaugoti iš savo interneto naršyklės puslapis."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Buvo kelis laukus, kad negalėjo būti rasti puslapyje jūs. Tai labiausiai tikėtina, sukelia vieną iš šių:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Jūs įvedėte vieną ar daugiau savo Multi-page forma forma URL neteisingai."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Vieną ar daugiau puslapių savo forma yra apsaugotas slaptažodžiu ir scenarijų negalėjo patekti į šį puslapį."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Jūs neteisingai įvedėte savo formos URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Grįžti į formą informacijos puslapyje patikrinti savo parametrus , spustelėkite čia ."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Ar pakeitėte savo forma (-os) atlikus testus pateikimo"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Spauskite čia norėdami pateikti per kitą bandymą pateikimo."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Savo forma yra apsaugota slaptažodžiu ir scenarijų negalėjo patekti į šį puslapį."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Į kitą skirtuką / šį naršyklės langą, prisijungti į jūsų formą, tada spustelėkite Atnaujinti mygtuką žemiau pabandyti iš naujo rasti laukus."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Jeigu nė vienas iš minėtų sprendimų, taip pat galite bandyti rankiniu būdu įkelti tvarkymo formos ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Buvo kelis laukus, kad negalėjo rasti jūsų nurodytą formą puslapių. Tai labiausiai tikėtina, sukelia vieną iš šių:"; +$LANG["text_add_form_help_link"] = "Jei paleisti į kokių nors problemų, per šiuos veiksmus, bandykite skaityti vartotojo dokumentacijoje ."; +$LANG["text_add_form_step_1_text_1"] = "Šiuose puslapiuose sukelti jums reikia sukonfigūruoti formos Įrankiai laikyti savo formos pareiškimus. Prieš tęsdami, patikrinkite, kad:"; +$LANG["text_add_form_step_1_text_2"] = "Jūsų forma jau sukurta ir ji yra prieinama per URL (localhost is fine)"; +$LANG["text_add_form_step_1_text_3"] = "gali pakeisti savo formą"; +$LANG["text_add_form_step_2_para_2"] = "Atidarykite savo forma, savo pasirinkimą redaktorius ir keisti savo formą tag taip, įskaitant du paslėptus laukus."; +$LANG["text_add_form_step_2_para_3"] = "Kitas, atidarykite formą žiniatinklio naršyklėje. Užpildykite kiekvienoje srityje ir pateikia ją. Po pateikimo, jūs turėtumėte pamatyti pranešimą. Kai šis pranešimas yra rodomas, grįžkite į šį puslapį ir paspauskite Refresh mygtuką. Kai šis procesas bus baigtas, matysite mygtuką Tęsti, esantį žemiau, atsižvelgiant į jūsų kitą žingsnį."; +$LANG["text_add_form_step_2_para_6"] = "Be savo formos pateikimo, įtraukti šias vertybes. Jie gali būti nustatyta tiesiogiai ar naudojant PHP plaukė per formą pati. Toliau pateikiami pavyzdžiai kiekvienam. (\$ Varname) yra maišos (arba asocjacyjnej) visos informacijos pateikimo forma - tai paprastai (\$ postvar) arba (\$ sessionvar) kintamasis, bet jis gali būti pastatytas pagal užsakymą."; +$LANG["text_add_form_step_2_text_2"] = "Įveskite savo "Ačiū " puslapio čia URL. Tai, kur norite, žmonėms turi būti nukreiptas į po formą buvo pateikta."; +$LANG["text_add_form_step_3_para_1"] = "Šiame puslapyje pateikiami visi laukai formos pateikimą. Prašome patikrinti kiekvieną lauką ir pašalinti bet kokius, kad jums nereikia laikyti kiekvienas pateikimo. Jei pašalinsite svarbių srityje avariją, ar norite pakeisti informaciją, saugomą jūsų formą, reikia grįžti į ankstesnį puslapį siųsti naujas testas pateikimo."; +$LANG["text_add_form_step_3_para_2"] = "Pastaba: Jei jūs siunčiate keletą reikšmių naudojant vėliavėles ar multi-pasirinkite langelį, įsitikinkite, kad lauko pavadinimą baigiasi [] ženklų (žr. vartotojo dokumentaciją daugiau informacijos)."; +$LANG["text_add_form_step_3_text_1"] = "Štai kur prasideda linksmybės! Šiuo metu, forma Įrankiai laukia bandymas pateikti savo formą. Jis naudos šį formos pateikimo žinoti, kokia informacija turėtų būti saugoma duomenų bazėje."; +$LANG["text_add_form_step_3_text_2"] = "nurodydamas savo formos blankas Įrankiai"; +$LANG["text_add_form_step_3_text_3"] = "naudodami formą Įrankiai API"; +$LANG["text_add_form_step_3_text_4"] = "Padėti integruoti savo formą, mes rekomenduojame jums perskaityti vieną iš šių Tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "Jos paaiškina, kaip sukurti savo formą, skirtą pasirengti bandomojo pateikimo ir pridėti kitą informaciją, kuri gali būti padėti. PHP turėsite eilutė:"; +$LANG["text_add_form_step_3_text_6"] = "Tai užtikrina duomenų iš tikrųjų išsiųstas forma Priemonės. Kai turite pateikti per savo bandymo teigimu, paspauskite žemiau esantį mygtuką."; +$LANG["text_add_form_step_3_text_7"] = "Puslapyje iki Jūsų galutinis "ačiū" puslapį, nepamirškite pridėti šį parametrą \$ params kintamąjį:"; +$LANG["text_add_form_step_5_para_1"] = "Duomenų bazė buvo sukurta, kad už šią formą ir forma buvo aktyvuota naudoti. Jei buvo pateikti, nurodydamas savo forma process.php, grįžkite į savo formą ir pašalinti šią paslėptą sritis:"; +$LANG["text_add_form_step_5_para_2"] = "Tada eikite į "ačiū" puslapyje tuščia sesijų. Kai tai bus padaryta, visos naujos formos pareiškimus bus tvarkomi ir saugomi forma Priemonės. Pabandykite pateikimo ar du patikrinti informaciją visiems įkelti teisingai."; +$LANG["text_add_form_step_5_para_3"] = "Jei norite suderinti savo formą ir galimybes, pavyzdžiui, auto-paštu, pridėti papildomų laukų formos srityje, arba tinkinti formos laukų tipus, galite keisti savo forma, bet kuriame taške."; +$LANG["text_add_form_step_5_para_4"] = "Kadangi savo forma yra file upload laukai, jums reikia nustatyti kiekvieno lauko nurodyti failo įkėlimo aplanką, kokie failai yra leidžiami ir. Tai galima rasti skirtukas Ekranas "Redaguoti formą puslapio."; +$LANG["text_add_form_step_5_para_5"] = "Jeigu pareiškimas buvo išsiųstas per API, pakeisti ft_api_init_form_page linija pirmojo puslapio formą:"; +$LANG["text_add_submission_button"] = "Pridėti pateikimas mygtukas pasirodo tik vaizdų, "gali pridėti paduoti " "yes " pasirinkimo galimybe, nurodyta."; +$LANG["text_admin_email_placeholder_info"] = "Tai elektroninio pašto adresą forma Įrankiai administratorius, apibrėžtus parametrus savo paskyroje. Tai tik Rezultatų pašto adresą, tad jei norite naudoti HTML ryšį, jums reikės WRAP jį <a> žymeles, štai taip:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Numatytasis prisijungimo puslapis tema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Pirma, prašome pasirinkti formos tipas."; +$LANG["text_client_form_page"] = "Šiame puslapyje rasite visas formas ir galite priskirtas šiam klientui. Patarimas: kad jie matytų ir formos pareiškimus, jie turi būti priskirtas bent vienas vaizdas."; +$LANG["text_client_map_filters_desc1"] = "Kliento Žemėlapis filtrai leidžia jums apriboti pareiškimus, kurie rodomi šiame rodinyje, topografinio žemėlapio vertybes formos lauką į kliento sąskaitą vertybes."; +$LANG["text_client_no_forms"] = "Šiuo metu jūs neturite formas galima peržiūrėti."; +$LANG["text_client_welcome"] = "Sveiki atvykę! Ši programa saugo visą informaciją, pateiktą pagal savo svetainės lankytojai. Norėdami peržiūrėti paraiškų tikros formos tiesiog paspauskite nuorodą "Rodyti arba pamatyti kairiausias navigacijos meniu ir kiti variantai."; +$LANG["text_config_file_created"] = "Jūsų config.php failas buvo sukurtas."; +$LANG["text_config_file_not_created"] = "Mums nepavyko sukurti savo failo config.php. Jums reikia sukurti failą rankiniu būdu."; +$LANG["text_config_file_not_created_instructions"] = "Nukopijuokite ir įklijuokite šį turinį iš toliau nurodyto skyriaus į failą config.php ir įkelti per FTP forma Įrankiai / pasaulio aplanką (katalogą, taip pat yra keletas kitų failus ir katalogus, vieną failą pavadinimu library.php)."; +$LANG["text_confirm_delete_form"] = "Taip, aš noriu ištrinti šią formą"; +$LANG["text_create_admin_account"] = "Dabar mes ketiname sukurti administratoriaus sąskaitą. Tai yra naudojami valdyti visus formos Įrankiai aspektus, pavyzdžiui, pridėti formas bei kuriant klientų sąskaitas."; +$LANG["text_create_new_client_account"] = "Naudokite šią formą, norėdami sukurti naują kliento sąskaita. Visi laukai yra privalomi."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "rodyti PHP {\$datefunctionlink} funkcija formatavimą"; +$LANG["text_default_file_settings_page"] = "Šis puslapis apibrėžia file upload nustatymus savo forma priemonių įdiegimą. Šios taisyklės taikomos visiems failai įkeliami per formą įrankiai, nebent aiškiai viršesni už atskirų formos lauką. Pastaba: jei jūs keičiate įkėlimo aplanką po failai nebuvo įkelti, jie bus automatiškai perkeltas į naują katalogą."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Prieš tęsdami, jums reikia atnaujinti savo / themes / default / talpyklos aplanką, kad būtų galima visiškai skaityti ir rašyti leidimus. Kai tai bus padaryta, tai žinutė dings, ir jūs galite įdiegti scenarijų."; +$LANG["text_default_values_in_view"] = "Ši dalis yra neprivaloma. Visi su šia nuomone pastabas, sukurta, yra numatytosios vertės, nurodytos čia."; +$LANG["text_delete_all_forms"] = "Noriu ištrinti visus failus, kurie buvo įkeltas per šią formą"; +$LANG["text_delete_form_warning"] = "Ar tikrai norite ištrinti šią formą? Šis veiksmas negali būti atšauktas. Visi duomenys bus prarasti visam laikui!"; +$LANG["text_edit_admin_menu_page"] = "Jūs galite redaguoti savo meniu žemiau. Siekiant užtikrinti, jūs visada turite prieigą prie visų funkcijų turimų forma įrankiai, šiuose puslapiuose, reikia: Formos, Klientai, jūsų sąskaita, moduliai, Parametrai ir pabaiga."; +$LANG["text_edit_client_menu_page"] = "Šiame skyriuje galite pritaikyti kairėje navigacijos skiltyje kiekvienam vartotojui. Galite sukurti tiek daug klientų meniu kaip norite ir perleis bet kokią sąskaitą, kad vienas iš jų. Pagal nutylėjimą yra du meniu: vieną tau, administratorius, ir vienas už visus klientų sąskaitas. Administratoriaus sąskaitą gali būti keičiamas, bet ne pašalinti."; +$LANG["text_edit_tab_summary"] = "Jei norite sugrupuoti į skirtukų šio rodinio laukai, tiesiog įveskite žemiau skirtukų pavadinimai. Po to, kai baigsite, pasirinkite atitinkamą kortelę kiekvieno lauko grupėje Laukai " ."; +$LANG["text_edit_view_list_page"] = "Šis skirtukas kontrolės, kuri atrodo kaip stulpelių pateikimo sąrašo puslapį, ir keletas papildomų nustatymų šiose srityse srityse. Pastaba: rekomenduojame, galite pridėti ne daugiau kaip 4 ar 5 svarbiausių sričių Peržiūrėti."; +$LANG["text_email_settings_intro"] = "Šis puslapis leidžia jums nustatyti, kuris iš jūsų laukų formą parduotuvė laiškus ir atitinkami jų pavadinimai. Kai jūs nustatote jų čia, galėsite jas naudoti savo elektroninio pašto šablonus gavėjams. Šiame skirsnyje yra visiškai neprivalomi."; +$LANG["text_email_tab_summary"] = "Šiame skyriuje galite statyti bet kokį laiškų turi būti siunčiami, jei savo forma yra pateikta, ir kitos priežastys."; +$LANG["text_email_template_tab"] = "Šis skirsnis leidžia jums nustatyti, koks turinys pasirodo el. Jei norite siųsti laišką kaip tik tekstas arba elektroniniu paštu, įveskite tik už tame skirsnyje vertės. Jei įvesite tiek vertės, elektroniniu paštu bus išsiųsta į abu formatus."; +$LANG["text_email_template_text_1"] = "Nebuvo pateikimo, per savo forma, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Nebuvo pateikimo, per savo forma, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Ačiū už Jūsų pranešimą!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Klaidos pranešimą, jei laukas neatitinka patvirtinimo"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Išorės formos formas, kurios jau yra jūsų svetainėje, ar kažkur internete. Pasirinkite šią parinktį, jei turite savo formą, kurią norite integruoti su forma Įrankiai."; +$LANG["text_fields_tab_summary"] = "Šiame puslapyje rasite sąrašą visų jūsų formos laukų. Kontroliuoti, kaip jie atrodo kai naršymo pateikimo, pamatyti Rodiniai skirtuke . Ištrynus lauką šiame puslapyje bus ištrinti iš visų atsakymų, todėl būkite atsargūs!"; +$LANG["text_file_extension_info"] = "Įveskite plėtinių atskirtus kableliais (pvz., JPG, GIF, PNG) arba palikite tuščią, kad bet kokio tipo failo."; +$LANG["text_file_field_placeholders_info"] = "Failo laukai turi dvi specialios vietos rezervavimo ženklai: FILEURL ir failo pavadinimas. FILEURL yra visiškai URL failo, kad būtų galima tiesiogiai susieti jį į savo laiškus, failo vardas yra tik failo pavadinimą."; +$LANG["text_filters_page"] = "Tik tie pareiškimai, kurie atitinka taisykles, galite nustatyti toliau bus rodomi šiame rodinyje."; +$LANG["text_filters_tips"] = "Norėdami gauti patarimų, kaip naudotis pateikimo filtrai, žr Vartotojo dokumentacija."; +$LANG["text_forgot_password"] = "Jokių problemų. Tiesiog įveskite savo vartotojo vardą žemiau ir jūsų prisijungimo informacija bus išsiųstas į jūsų elektroninio pašto adresą į failą. Jei pamiršote savo vartotojo vardą, rašykite svetainės administratoriui {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Ši forma turi vieną ar daugiau failų įkėlimo sritys:"; +$LANG["text_form_placeholder_info"] = "Vietos rezervavimo ženklų, gali būti naudojamas bet kurioje elektroninio pašto šabloną ir kalbos vietos rezervavimo ženklo srityje, nepriklausomai nuo bet Peržiūrėti pašto šablonas priskirtas. KLAUSIMAS rezervuotų vietų yra specialios formos klausimas ATSAKYMAS vietos rezervavimo ženklų atsakymus į kiekvieną klausimą."; +$LANG["text_form_submission_date_placeholder"] = "Tos dienos, kai buvo pateikti."; +$LANG["text_form_tools_form_url"] = "URL formos. Tai tik išorinėmis formomis vertę."; +$LANG["text_form_tools_login_url"] = "URL prisijungimo forma Priemonės."; +$LANG["text_form_view_permission_info_admin"] = "Pastaba: ši forma šiuo metu turi administratoriaus prieigos tipą, todėl nė vienas iš kliento sąskaitos bus galima pamatyti šį Peržiūrėti."; +$LANG["text_form_view_permission_info_private"] = "Pastaba: ši forma šiuo metu turi Asmeninis prieigos tipą, todėl Viešųjų ir privačių galimybės čia bus tik, kad klientų pogrupis."; +$LANG["text_ft_installed"] = "Sveikinu, forma Priemonės buvo sėkmingai įdiegta!"; +$LANG["text_global_placeholder_info"] = "Šios vietos rezervavimo ženklai gali būti naudojami bet šabloną ir bet kokia forma."; +$LANG["text_group_name_explanation"] = "Laukų pridėtinės per Pridėti forma procesą, ši vertė yra užpildyta iki kalbomis tekstą bet lauke naudojama vertė. Jeigu norite, galite pakeisti jį geriau apibūdinti turinį."; +$LANG["text_install_create_config_file"] = "Forma Įrankiai saugo jūsų serveryje ir duomenų bazės parametrus failą config.php, rasti savo / Global / kataloge. Paspauskite "Sukurti failą" mygtuką, automatiškai generuoti savo serveryje failą."; +$LANG["text_install_create_database_tables"] = "Dabar mes ketiname sukurti forma Įrankiai duomenų bazės lenteles. Šis etapas reikalauja duomenų bazė pati jau buvo sukurta. Jei nesate tikras, kaip tai padaryti, kreipkitės į savo paslaugų teikėju."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" paprastai reiškia, kad jūs hostname yra neteisinga. Patikrinkite pabandyti nustatyti, kad tai "localhost" - tai įprastas būdas kreiptis į "vietos" duomenų bazės serverio."; +$LANG["text_install_db_tables_error_tip_2"] = ""Nepavyko prisijungti prie MySQL serverio per vietos lizdas" reiškia duomenų bazės prieglobos srityje vėl neteisinga."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" reiškia, kad jūsų vartotojo vardo / slaptažodžio kombinacija problema."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... prie duomenų bazės ..." reiškia, kad nors savo vartotojo vardą ir slaptažodį pateikta teisinga, ji negali prisijungti prie duomenų bazės, kad ypač su ta sąskaita. Tai gali reikšti, kad arba savo duomenų bazės pavadinimas yra neteisingas, arba kad šis naudotojas yra ne susijusi su duomenų bazės."; +$LANG["text_install_email_content_text"] = "Mūsų svetainėje yra daug išteklių, kad padėtų jums pradėti, įskaitant mūsų internetinę dokumentaciją (https://docs.formtools.org) ir vadovėlius (https://docs.formtools.org/tutorials). Jei pastebėjote, kad įstrigo arba turite klausimą, paklauskite apie \"github\" (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Atsiprašome, įrankiai gali paleisti savo serverį. Prašome spausti čia, minimalius reikalavimus."; +$LANG["text_install_system_check"] = "Šis puslapis veikia kelios bandymų sistemos, siekiant užtikrinti tai galima paleisti forma Priemonės."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Vidaus formų egzistuoja tik per formą Įrankiai - ne kitoje svetainės vietoje. Tik forma Įrankiai vartotojo sąskaitas turės prieigą prie formos. Pasirinkite šią parinktį, jei jūs neturite esamą formą."; +$LANG["text_internal_form_intro"] = "Naudokite formą žemiau, norėdami sukurti naują Vidaus forma. Visi nustatymai, įskaitant formos laukų skaičius ir turinys gali būti pakeistas ir sukonfigūruota vėliau."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Norėdami prisijungti ir naudotis forma Įrankiai, turite įjungti JavaScript jūsų naršyklėje. Prašome įjunkite dabar, ir spustelėkite Atnaujinti savo naršyklėje."; +$LANG["text_last_modified_date_explanation_c"] = "Paskutinį kartą šis argumentas buvo pakeistas. Naujų pareiškimų, tai yra tas pats kaip:"; +$LANG["text_limit_email_content_desc"] = "Ši galimybė veikia tik HTML ir teksto turinį su Smarty linijų."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(tik sąrašuose nuomonėmis su viena ar daugiau filtrų neapibūdintus)"; +$LANG["text_log_in_to_ft"] = "Prisijunkite prie formos Įrankiai"; +$LANG["text_login"] = "Prašome prisijungti, jei norite gauti (\$) programos_pavadinimas administravimo skydelį. Jei pamiršote savo slaptažodį, spauskite čia."; +$LANG["text_login_info"] = "Kaip paprašė, čia yra jūsų prisijungimo informaciją."; +$LANG["text_name_of_form"] = "Rūšies pavadinimas."; +$LANG["text_no_clients"] = "Šiuo metu nėra duomenų bazėje klientams. Norėdami pridėti naują kliento sąskaita, spustelėkite Pridėti kliento žemiau esantį mygtuką."; +$LANG["text_no_clients_found"] = "Nr klientams nerasta. Gauta išplėsti jūsų paieškos kriterijus."; +$LANG["text_no_fields_in_view"] = "Šis požiūris neturi jokių laukus. Paspauskite žemiau esančią nuorodą."; +$LANG["text_no_forms"] = "Šiuo metu nėra duomenų bazėje formos. Norėdami pridėti naują formą, paspauskite Įdėti formoje žemiau esantį mygtuką."; +$LANG["text_no_forms_found"] = "Formų buvo rasta."; +$LANG["text_no_forms_found_search"] = "Formų buvo rasta. Pabandykite išplėsti jūsų paieškos kriterijus."; +$LANG["text_no_modules_found"] = "Nr moduliai nerasta. Gauta išplėsti jūsų paieškos kriterijus."; +$LANG["text_no_recipients_added"] = "Nr gavėjams buvo pridėta."; +$LANG["text_no_search_results"] = "Nėra jokių šios paieškos kriterijus rezultatai / vaizdas."; +$LANG["text_no_submissions_found"] = "Atsiprašome, nerasta jokių teikimų."; +$LANG["text_no_themes"] = "Jūs neturite jokių temų apibrėžta. Paspauskite mygtuką žemiau, norėdami atnaujinti savo temą sąrašo arba patikrinti informaciją apie tai, kaip pridėti temas forma Įrankiai vartotojo dokumentaciją ."; +$LANG["text_non_deletable_fields"] = "Šis laukas yra naudojamas Core scenarijų ir negali redaguoti arba ištrinti nesukeliant nesuderinamumo. Jei norite keisti lauko tipą, padaryti jo kopiją ir redaguoti kopiją."; +$LANG["text_option_list_group_explanation"] = "Jei tai bus pasirinkta, ji leidžia grupuoti savo galimybes. Kaip grupės rodomos, priklauso nuo lauko tipo, naudodami šią parinktį, sąraše."; +$LANG["text_option_list_page"] = "Radijo mygtukus, žymės langelius, meniu ir įvairių pasirinkite išplečiamajame sričių vartotojo su daug galimybių, iš kurių jie gali pasirinkti vieną ar daugiau elementų. Formos Įrankiai, tai yra žinomas kaip variantas sąrašai. Apskritai, tai yra sukuriamas automatiškai Pridėti išorės formai , bet galite rankiniu būdu pridėti arba redaguoti savo nuožiūra sąrašus žemiau, jei jūsų formos turinio pakeitimus ar jūs statyti laukų, kurie naudojami tik šalies viduje."; +$LANG["text_option_list_used_by_fields"] = "Šią parinktį, sąraše yra vartojamas kelis formos laukus. Jei atnaujinti informaciją žemiau, jis bus pakeistas visų laukų (žr. formos laukų skirtuką, kad peržiūrėtumėte sričių sąrašas). Jei norite atnaujinti vieną vertybes, arba srityse, kurios šiuo metu priskirtos pogrupį, spustelėkite čia sukurti naują Sąrašas su tomis pačiomis vertybėmis kaip šis variantas. Tada galite nustatyti formos laukus, kuriuos norite į naują grupę."; +$LANG["text_public_form_omit_list_page"] = "Viešieji formų jums pasinaudoti nuomos visus kliento sąskaitas, naudotis jais be būtinybės rankiniu būdu priskirti kiekvienam klientui jiems. Šis puslapis leidžia jums tiksliai tiems klientams, kurie negali gauti šios formos, nors forma yra pažymėta kaip vieša."; +$LANG["text_public_view_omit_list_page"] = "Visuomenės nuomonę jums pasinaudoti nuomos visus kliento sąskaitas, naudotis jais be būtinybės rankiniu būdu priskirti kiekvienam klientui į juos. Šis puslapis leidžia jums tiksliai tiems klientams, kurie negali naudotis šiuo vaizdas."; +$LANG["text_reference_tab_info"] = "Šiame puslapyje pateikiami visi vietos rezervavimo ženklus galima jūsų formos. Vietos rezervavimo ženklų eilutes, kurios gali būti naudojamas elektroninio pašto šablonus, ir laukai su specialios vietos rezervavimo ženklas piktogramą . Kai įrašytas į lauką, jie dinamiškai konvertuojami į atitinkamos vertės, kai laukas yra žiūrima, ar laiškas yra išsiųstas."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Peržiūra vartotojo dokumentaciją"; +$LANG["text_send_email_from_edit_submission_page"] = "Įtraukti galimybę išsiųsti šį Redaguoti pridėjimo puslapyje laišką"; +$LANG["text_smart_fill_option_list_problem"] = "Mes negalėjome Smart užpildyti savo srityje galimybes. Tačiau, kaip alternatyva, galite pabandyti įkelti savo formą puslapio kopiją žemiau esančiame laukelyje. Pastaba: nesiųskite žaliavinio PHP puslapius (arba kitų serverio pusės kodas) - tiesiog įkelti HTML versija. Gauti, peržiūrėti ir išsaugoti iš savo interneto naršyklės puslapis."; +$LANG["text_submission_ip_address"] = "IP adresas vartotojo, kuris padarė pateikimo."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Naudokite žemiau esančią formą arba peržiūrėti ar išsiųsti sau elektroniniu paštu gaunamų iš šio laiško šabloną. Laiškas yra siunčiamas tik į pašto nurodyta toliau; pagrindinis, CC ir BCC pašto adresą gavėjai yra ignoruojamos, o bandymai."; +$LANG["text_test_email_templates_no_submissions"] = "Siekiant patikrinti savo elektroninio pašto šablonus, pirma turite įdėti bent vieną formos pateikimą."; +$LANG["text_theme_page_intro"] = "Šiame puslapyje rasite visas jūsų temas. Paspauskite paveiksliuką, kad pamatyti didesnę pavyzdys tema's stilius. "Enabled" langelį nustato, ar ta tema gali būti pasirinktas pagal kliento. Norėdami peržiūrėti visus galimus temas, apsilankykite forma Įrankiai svetainėje."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Adding savo pirmąją forma!"; +$LANG["text_unique_submission_id"] = "Unikalus pateikti ID."; +$LANG["text_unused_option_list"] = "Šią parinktį, sąraše nėra naudojamas bet kokios formos laukus."; +$LANG["text_upgraded"] = "Įrenginys buvo atnaujintas iki {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Šią parinktį, sąraše yra naudojami šiose srityse."; +$LANG["text_view_fields_info"] = "Šis skirtukas kontrolės laukai rodo redagavimo pateikti šiame rodinyje, jų eiliškumą ir ar jie yra redaguoti, ar ne."; +$LANG["text_view_tab_summary"] = "Šis skirtukas leidžia jums sukurti įvairiais būdais grupės ir sutvarkyti savo duomenų. Rodiniai leidžia jums kurti pasirinktinius sutrumpinti savo formos duomenis suskirstyti ją į valdomus gabaliukus, ir apriboti, kokie klientai gali matyti arba redaguoti."; +$LANG["validation_account_disabled"] = "Atsiprašome, Jūsų sąskaita užblokuota."; +$LANG["validation_account_not_recognized"] = "Atsiprašome, kad vartotojo vardas yra neatpažįstamas."; +$LANG["validation_account_not_recognized_info"] = "Atsiprašau, kad vardą nerastas. Bandykite dar kartą arba susisiekite su svetainės administratoriumi adresu žemiau."; +$LANG["validation_account_pending"] = "Jūsų vartotojo sąskaitos iki patvirtinimo administratorius."; +$LANG["validation_check_delete_client"] = "Ar tikrai norite ištrinti šią kliento sąskaitą?"; +$LANG["validation_client_password_missing_number"] = "Kliento slaptažodis turi būti bent vienas skaitmuo (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Kliento slaptažodis turi būti šie simboliai bent vienas iš {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Kliento slaptažodis turi būti bent vienas didžiąja raide."; +$LANG["validation_client_password_too_short"] = "Kliento slaptažodis turi būti simbolių ilgio."; +$LANG["validation_col_name_is_reserved_word"] = "Atsiprašome, šios duomenų bazės stulpelio pavadinimas yra saugomos darbą MySQL. Prašome pervadint jį!"; +$LANG["validation_db_name"] = "Duomenų bazių pavadinimuose negali būti periodų ar susiaurėjimų."; +$LANG["validation_db_not_updated_invalid_input"] = "Duomenų bazės negali būti atnaujintas. Patikrinkite vertybės įvedėte, yra neteisingas."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Atsiprašome, bet pagal nutylėjimą administratorius ir klientų temos visuomet turi būti įjungtas."; +$LANG["validation_default_phone_num_required"] = "Prašome užpildyti visą telefono numerį <b> { \$ srityje} </ b> - numeriai."; +$LANG["validation_default_rule_alpha"] = "Prašome įvesti tik raidės ir numeriai <b> { \$ srityje} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Prašome įvesti tik raidžių <b> { \$ srityje} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Prašome įvesti tik skaičių <b> { \$ srityje} </ b>."; +$LANG["validation_default_rule_required"] = "Prašome įvesti <b> { \$ srityje} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Prašome įvesti galiojantį el.pašto adresą <b> { \$ srityje} </ b>."; +$LANG["validation_delete_form_confirm"] = "Prašome pažymėkite langelį, patvirtinkite, kad norite ištrinti šią formą."; +$LANG["validation_delete_non_empty_option_list"] = "Įspėjimas! Šis variantas sąrašas yra naudojamas vienas arba daugiau formos laukų. Ištrynimas bus tose srityse nustoja dirbti tinkamai."; +$LANG["validation_display_names_incomplete"] = "Įveskite vertę visiems Rodyti vardus, arba spustelėkite "Smart Fill galimybė patekti į jas dinamiškai."; +$LANG["validation_duplicate_form_field_name"] = "Jūs negalite turėti kelis laukus to paties lauko pavadinimą."; +$LANG["validation_email_not_found_or_invalid"] = "Atsiprašome, el susijęs su jūsų sąskaita arba neegzistuoja arba yra negaliojantis."; +$LANG["validation_folder_invalid_permissions"] = "Norėdami paleisti šį testą, leidimus, turi būti nustatyti dėl įkėlimo aplanką, kad būtų galima skaityti ir rašyti rinkmenas, Unix 777 ()."; +$LANG["validation_folder_not_writable"] = "Šiame aplanke nėra galimus įrašymo."; +$LANG["validation_internal_form_too_many_fields"] = "Atsiprašome, bet jūs galite tik sukurtas formas su 1000 ar mažiau laukų."; +$LANG["validation_invalid_admin_email"] = "Prašome įvesti galiojantį adminstrator elektroninio pašto adresą."; +$LANG["validation_invalid_admin_username"] = "Jūsų vartotojo vardas gali sudaryti tik raidiniai skaitmeniniai simboliai (az, 0-9)."; +$LANG["validation_invalid_client_username"] = "Kliento vartotojo vardas gali būti sudarytas iš raidžių ir ženklų (AZ and 0-9)."; +$LANG["validation_invalid_client_username2"] = "Atsiprašome, Nick's gali būti tik raidės, skaičiai ir pabraukimo ženklas. Įveskite naują vartotojo vardą."; +$LANG["validation_invalid_column_name"] = "Stulpelių pavadinimai gali būti tik raidinę skaitmeninę (az, 0-9). Prašome patikrinkite, ar stulpelių pavadinimai."; +$LANG["validation_invalid_custom_from_email"] = "Prašome įvesti galiojantį Custom 'From' elektroninio pašto adresą."; +$LANG["validation_invalid_custom_reply_to_email"] = "Prašome įvesti galiojantį Custom "Atsakyti", elektroninio pašto adresą."; +$LANG["validation_invalid_default_sessions_timeout"] = "Prašome įvesti teisingą reikšmę (skaičių) pagal nutylėjimą sesijos timeout."; +$LANG["validation_invalid_email"] = "Prašome įvesti galiojantį elektroninio pašto adresą."; +$LANG["validation_invalid_email_id"] = "Atsiprašome, tai neteisingas elektroninio pašto ID."; +$LANG["validation_invalid_folder"] = "Atsiprašome, bet neatrodo, kad svarbių kataloge."; +$LANG["validation_invalid_form_field_names"] = "Formos laukai gali būti tik raidinius ir skaitmeninius bei brūkšniais (AZ, 0-9, _), be tarpų."; +$LANG["validation_invalid_num_clients_per_page"] = "Prašome įvesti tik skaičių Skaičiai Klientai Per Page srityje."; +$LANG["validation_invalid_num_emails_per_page"] = "Prašome įvesti tik skaitmenis į puslapį el."; +$LANG["validation_invalid_num_form_fields"] = "Prašome įvesti tik skaičių sritys srityje skaičius."; +$LANG["validation_invalid_num_forms_per_page"] = "Prašome įvesti tik skaičių Skaičiai Blankai Per Page srityje."; +$LANG["validation_invalid_num_menus_per_page"] = "Prašome įvesti tik skaitmenis į puslapio meniu."; +$LANG["validation_invalid_num_modules_per_page"] = "Prašome įvesti tik skaičių Skaičiai Moduliai Per Page srityje."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Prašome įvesti tik skaičių Num variantas už puslapį srityje sąrašai."; +$LANG["validation_invalid_num_submissions_per_page"] = "Įveskite teisingą skaičių pateikimo puslapyje."; +$LANG["validation_invalid_sessions_timeout"] = "Prašome įvesti galiojantį sesijos timeout (sveikieji tik!)."; +$LANG["validation_invalid_tab_assign_values"] = "Prašome įvesti tik skaičių "nuo" ir "iki" srityse."; +$LANG["validation_invalid_table_prefix"] = "Prašome įvesti duomenų bazės priešdėlis sudaro raidė ir pabraukimai tik."; +$LANG["validation_invalid_upload_folder"] = "Jūsų diegimo serveryje PHP yra neteisingas nustatymas upload_tmp_dir vertė. "{\$upload_folder}" nėra galiojančių kataloge."; +$LANG["validation_invalid_url"] = "Įveskite URL."; +$LANG["validation_invalid_username"] = "Jūsų vartotojo vardas gali būti sudarytas iš raidžių ir ženklų (AZ and 0-9)."; +$LANG["validation_is_form_active"] = "Prašome nurodyti, ar forma yra aktyvus ar ne."; +$LANG["validation_menu_name_taken"] = "Atsiprašome, šis meniu vardas jau užimtas. Prašome pasirinkti naują pavadinimą."; +$LANG["validation_modules_search_no_status"] = "Prašome pasirinkti arba įjungti arba išjungti varneles."; +$LANG["validation_no_access_type"] = "Įveskite prieigos tipą."; +$LANG["validation_no_account_logout_url"] = "Įveskite savo logout adresą."; +$LANG["validation_no_account_password_confirmed"] = "Prašome iš naujo įvesti naują slaptažodį."; +$LANG["validation_no_account_password_confirmed2"] = "Įveskite naują slaptažodį."; +$LANG["validation_no_admin_email"] = "Prašome įvesti administratoriaus el."; +$LANG["validation_no_admin_theme"] = "Prašome pasirinkti sąskaitos administratoriaus tema."; +$LANG["validation_no_admin_theme_swatch"] = "Prašome pasirinkti administratoriaus tema Swatch."; +$LANG["validation_no_client_email"] = "Prašome įvesti kliento elektroninio pašto adresą."; +$LANG["validation_no_client_first_name"] = "Prašome įvesti kliento vardas."; +$LANG["validation_no_client_last_name"] = "Prašome įvesti kliento pavardę."; +$LANG["validation_no_client_login_page"] = "Nurodykite, kurie puslapis klientas turi būti nukreiptas į tai, kada jos prisijungti"; +$LANG["validation_no_client_password"] = "Prašome įvesti kliento slaptažodį."; +$LANG["validation_no_client_theme_swatch"] = "Prašome pasirinkti numatytąjį Swatch kliento sąskaitas."; +$LANG["validation_no_client_username"] = "Prašome įvesti kliento vardą."; +$LANG["validation_no_column_name"] = "Prašome įvesti visus stulpelių pavadinimai, arba spustelėkite "Smart Fill mygtuką juos automatiškai užpildyti."; +$LANG["validation_no_column_selected"] = "Prašome pasirinkti bent vieną lauką atrodo kaip dėl pateikimo aukciono skiltyje."; +$LANG["validation_no_custom_from_email"] = "Įveskite Custom 'From' elektroninio pašto adresą."; +$LANG["validation_no_custom_recipient_email"] = "Prašome įvesti pasirinktinį gavėjo elektroninio pašto adresą."; +$LANG["validation_no_custom_reply_to_email"] = "Prašome įvesti pasirinktinį "Atsakyti", elektroninio pašto adresą."; +$LANG["validation_no_date_format"] = "Įveskite datos formatą."; +$LANG["validation_no_db_column_single"] = "Prašome įveskite stulpelio duomenų bazės pavadinimą."; +$LANG["validation_no_db_hostname"] = "Įveskite duomenų bazės hostname."; +$LANG["validation_no_db_name"] = "Įveskite duomenų bazės pavadinimą."; +$LANG["validation_no_db_username"] = "Įveskite duomenų bazės vartotojo vardą."; +$LANG["validation_no_default_client_theme"] = "Prašome pasirinkti Default theme visų naujų klientų sąskaitas."; +$LANG["validation_no_default_language"] = "Prašome pasirinkti numatytąją kalbą savo įrenginio formos Priemonės."; +$LANG["validation_no_default_sessions_timeout"] = "Įveskite numatytąjį sesijos timeout vartotojo sąskaitas."; +$LANG["validation_no_display_text"] = "Prašome įvesti kiekvieno lauko rodomą tekstą."; +$LANG["validation_no_display_text_single"] = "Prašome įveskite rodomą tekstą vertė."; +$LANG["validation_no_edit_submission_page_label"] = "Įveskite Redaguoti pridėjimo puslapyje etiketės."; +$LANG["validation_no_email"] = "Įveskite savo elektroninio pašto adresą."; +$LANG["validation_no_email_config_field"] = "Nurodykite, kurie yra laukas el srityje."; +$LANG["validation_no_email_content"] = "Prašome įvesti elektroninio pašto turinio ir formato bent vieną (HTML arba tekstas)."; +$LANG["validation_no_email_from_field"] = "Prašome paštas "nuo" srityje."; +$LANG["validation_no_email_template_name"] = "Prašome įvesti elektroninio pašto šablono pavadinimą."; +$LANG["validation_no_email_template_view_id"] = "Pasirinkite Rodyti, kuriems šis Šablonas turi būti prijungti."; +$LANG["validation_no_email_template_view_mapping_value"] = "Prašome nurodyti, kada turėtų būti siunčiamas el."; +$LANG["validation_no_enabled_themes"] = "Prašome užtikrinti, kad bent viena tema yra įjungtas."; +$LANG["validation_no_first_name"] = "Prašome įvesti savo vardą."; +$LANG["validation_no_form_field_name"] = "Prašome įvesti visus formos laukų pavadinimus."; +$LANG["validation_no_form_field_single"] = "Prašome įvesti formos lauko reikšmė."; +$LANG["validation_no_form_id"] = "ID forma nebuvo nurodyta. Atsijunkite ir bandykite dar kartą."; +$LANG["validation_no_form_name"] = "Prašome įvesti formos pavadinimą."; +$LANG["validation_no_form_url"] = "Įveskite URL forma."; +$LANG["validation_no_last_name"] = "Įveskite savo pavardę."; +$LANG["validation_no_login_page"] = "Nurodykite, kurie puslapis norėtumėte būti siunčiami kiekvieną kartą prisijungiant"; +$LANG["validation_no_logout_url"] = "Įveskite logout adresą."; +$LANG["validation_no_main_email_recipient"] = "Įveskite bent vienas pagrindinis laiško gavėjas (ty ne Kopija arba Nematoma kopija)."; +$LANG["validation_no_menu"] = "Pasirinkite šį vartotoją į meniu."; +$LANG["validation_no_menu_id"] = "Pasirinkite meniu."; +$LANG["validation_no_num_clients_per_page"] = "Įveskite klientų sąskaitų skaičių puslapyje."; +$LANG["validation_no_num_emails_per_page"] = "Įveskite el numeris sąraše puslapyje."; +$LANG["validation_no_num_form_fields"] = "Prašome įvesti savo formos laukų skaičių."; +$LANG["validation_no_num_forms_per_page"] = "Įveskite formų skaičių puslapyje."; +$LANG["validation_no_num_menus_per_page"] = "Įveskite meniu numeris sąraše puslapyje."; +$LANG["validation_no_num_modules_per_page"] = "Įveskite modulių skaičių puslapyje."; +$LANG["validation_no_num_option_lists_per_page"] = "Prašome įvesti parinktį sąrašus viename puslapyje."; +$LANG["validation_no_num_submissions_per_page"] = "Įveskite Pateiktų skaičių rodyti viename puslapyje."; +$LANG["validation_no_option_list_name"] = "Prašome įveskite sąrašo pavadinimą."; +$LANG["validation_no_page_titles"] = "Įveskite numatytąjį puslapio antraščių vartotojų sąskaitas."; +$LANG["validation_no_password"] = "Prašome įvesti savo slaptažodį."; +$LANG["validation_no_program_name"] = "Įveskite programos pavadinimą."; +$LANG["validation_no_second_password"] = "Prašome iš naujo įvesti slaptažodį."; +$LANG["validation_no_sessions_timeout"] = "Įveskite sesijos timeout."; +$LANG["validation_no_smart_fill_values"] = "Prašome įvesti laukelyje pavadinimą ir formą adresą."; +$LANG["validation_no_table_prefix"] = "Prašome įvesti duomenų bazės priešdėlis."; +$LANG["validation_no_tabs_defined"] = "Nr skirtukų apibrėžta"; +$LANG["validation_no_test_email_recipient"] = "Prašome įvesti elektroninio pašto adresą, kai mes turime siųsti bandymas el."; +$LANG["validation_no_test_email_submission_id"] = "Įveskite pateikimo numerį."; +$LANG["validation_no_theme"] = "Prašome pasirinkti temą."; +$LANG["validation_no_theme_swatch"] = "Prašome pasirinkti pasirinktos temos Swatch."; +$LANG["validation_no_timezone_offset"] = "Įveskite juostą kompensuoti."; +$LANG["validation_no_titles"] = "Įveskite puslapio pavadinimą."; +$LANG["validation_no_two_column_names"] = "Atsiprašome, Jūs neturite teisės patekti į tos pačios duomenų bazės stulpelio pavadinimo du kartus."; +$LANG["validation_no_ui_language"] = "Prašome pasirinkti už kalbą."; +$LANG["validation_no_url"] = "Įveskite URL adresą."; +$LANG["validation_no_username"] = "Prašome įvesti savo vartotojo vardą."; +$LANG["validation_no_username_or_js"] = "Jūs turite įvesti savo vartotojo vardą. Prašome aktyvuoti JavaScript jūsų naršyklėje."; +$LANG["validation_no_view_fields"] = "Jūsų Peržiūrėti neturi jokių laukų! Jūs turite paskirti bent vieną lauką, nes ten yra ką parodyti iki Jūsų nuomone."; +$LANG["validation_no_view_fields_selected"] = "Prašome pasirinkti vieną ar daugiau laukų įtraukti į vaizdas."; +$LANG["validation_no_view_name"] = "Prašome įvesti jūsų peržiūrėti, pavadinimą."; +$LANG["validation_num_rows_to_add"] = "Prašome įvesti eilučių skaičių pridėti."; +$LANG["validation_option_list_name_taken"] = "Atsiprašome, šią parinktį, sąrašo pavadinimas yra jau užimtas. Prašome pasirinkti naują vardą."; +$LANG["validation_password_in_password_history"] = "Dėl saugumo, negalima įvesti tą patį slaptažodį kaip ir bet kuris iš paskutinių {\$history_size} slaptažodžius. Įveskite naują slaptažodį."; +$LANG["validation_passwords_different"] = "Prašome įsitikinti, kad slaptažodžiai yra tie patys."; +$LANG["validation_please_enter_search_date_range"] = "Prašome pasirinkti paieškos dat."; +$LANG["validation_please_enter_search_keyword"] = "Prašome įvesti paieškos žodį."; +$LANG["validation_select_field_type"] = "Prašome pasirinkti lauko tipo."; +$LANG["validation_select_submissions_to_copy"] = "Pasirinkite tas pastabas, kurias norėtumėte kopijuoti."; +$LANG["validation_select_submissions_to_delete"] = "Prašome pasirinkti šias pastabas norite ištrinti."; +$LANG["validation_smart_fill_cannot_fill"] = "Atsiprašome, mes negalime užpildyti šį lauką."; +$LANG["validation_smart_fill_invalid_field_type"] = "Mums nepavyko rasti lauke, tačiau tai ne meniu, varnelę ar radijo grupė."; +$LANG["validation_smart_fill_no_field_found"] = "Atsiprašome, bet mes negalėjome rasti formos lauką, kad puslapyje nurodytą pavadinimą."; +$LANG["validation_smart_fill_no_page"] = "Prašome rasti puslapį, kuriame yra lauko, kurį norite Smart pildyti."; +$LANG["validation_smart_fill_upload_all_pages"] = "Prašome siųsti visas savo forma puslapių."; +$LANG["validation_upload_folder_not_writable"] = "Šis laikinas įkėlimo aplanką nurodytas jūsų įrenginys PHP nėra įrašomas. Kol tai yra nustatyta, failai gali būti įkeliami per formą Įrankiai (ar kito PHP programos). Prašome susisiekti su savo paslaugų teikėju."; +$LANG["validation_upload_html_files_only"] = "Prašome įkelti tik HTML failus."; +$LANG["validation_username_taken"] = "Atsiprašome, kad vartotojo vardas jau užimtas. Įveskite kitą vardą."; +$LANG["validation_wrong_password"] = "Atsiprašome, kad slaptažodis netinka."; +$LANG["word_about"] = "Apie"; +$LANG["word_access"] = "Prieiga"; +$LANG["word_account"] = "Sąskaita"; +$LANG["word_account_sp"] = "Sąskaitos (-ų)"; +$LANG["word_accounts"] = "Sąskaitų"; +$LANG["word_action"] = "Veiksmai"; +$LANG["word_active"] = "Aktyvus"; +$LANG["word_add"] = "Pridėti"; +$LANG["word_add_rightarrow"] = "Pridėti »"; +$LANG["word_add_uc_rightarrow"] = "Pridėti »"; +$LANG["word_administration"] = "Administracija"; +$LANG["word_administrator"] = "Administratorius"; +$LANG["word_after"] = "Po"; +$LANG["word_aquamarine"] = "Akvamarinas"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Autorius"; +$LANG["word_author_c"] = "Autorius:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Atgal"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Prieš"; +$LANG["word_benefits"] = "Privalumai"; +$LANG["word_blue"] = "Mėlynas"; +$LANG["word_cancel"] = "Atšaukti"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Langeliais"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Klientas"; +$LANG["word_client_c"] = "Klientas:"; +$LANG["word_clients"] = "Klientai"; +$LANG["word_close"] = "Uždaryti"; +$LANG["word_code"] = "Kodas"; +$LANG["word_column"] = "Stulpelis"; +$LANG["word_columns"] = "Stulpeliai"; +$LANG["word_columns_sp"] = "Stulpelyje (-iai)"; +$LANG["word_complete"] = "Complete"; +$LANG["word_configuration"] = "Konfigūracija"; +$LANG["word_content"] = "Turinys"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Toliau »"; +$LANG["word_copy"] = "Kopijuoti"; +$LANG["word_custom"] = "Paprotys"; +$LANG["word_data"] = "Duomenys"; +$LANG["word_date"] = "Data"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Ištrinti"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Tiesioginis"; +$LANG["word_disabled"] = "Neįgaliesiems"; +$LANG["word_documentation"] = "Dokumentacija"; +$LANG["word_done"] = "Priimta"; +$LANG["word_drawbacks"] = "Trūkumai"; +$LANG["word_dropdown"] = "Iškrenta"; +$LANG["word_edit"] = "Redaguoti"; +$LANG["word_editable"] = "Redaguojamą"; +$LANG["word_email"] = "Paštas"; +$LANG["word_email_c"] = "Paštas:"; +$LANG["word_emails"] = "Laiškai"; +$LANG["word_enabled"] = "Įjungta"; +$LANG["word_equals"] = "Lygus"; +$LANG["word_error"] = "Klaida"; +$LANG["word_error_c"] = "Klaida:"; +$LANG["word_examples_c"] = "Pavyzdžiai:"; +$LANG["word_external"] = "Išorės"; +$LANG["word_fail"] = "Neatitinka"; +$LANG["word_field"] = "Laukas"; +$LANG["word_field_sp"] = "Laukas (-ai)"; +$LANG["word_fields"] = "Veiklos"; +$LANG["word_fields_sp"] = "Sritis (-ys)"; +$LANG["word_file"] = "Failas"; +$LANG["word_file_b_uc"] = "[File]"; +$LANG["word_files"] = "Failai"; +$LANG["word_filters"] = "Filtrai"; +$LANG["word_filters_sp"] = "Filtras (-ai)"; +$LANG["word_for"] = "dėl"; +$LANG["word_form"] = "Forma"; +$LANG["word_form_c"] = "Forma:"; +$LANG["word_formatting"] = "Formatavimą"; +$LANG["word_forms"] = "Blankai"; +$LANG["word_found"] = "Rado"; +$LANG["word_from"] = "Nuo"; +$LANG["word_from_c"] = "Nuo:"; +$LANG["word_general"] = "Bendras"; +$LANG["word_green"] = "Žalias"; +$LANG["word_grey"] = "Pilka"; +$LANG["word_height"] = "Aukštis"; +$LANG["word_help"] = "Padėti"; +$LANG["word_hidden"] = "Paslėptas"; +$LANG["word_highlight"] = "Išryškinti"; +$LANG["word_horizontal"] = "Horizontalus"; +$LANG["word_hour"] = "Valanda"; +$LANG["word_hours"] = "Valandos"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Vaizdas"; +$LANG["word_incomplete"] = "Incomplete"; +$LANG["word_install"] = "Įdiegti"; +$LANG["word_installation"] = "Montavimas"; +$LANG["word_internal"] = "Vidaus"; +$LANG["word_language"] = "Kalba"; +$LANG["word_large"] = "Didelis"; +$LANG["word_like"] = "Mėgti"; +$LANG["word_login"] = "Prisijungimas"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Atsijungti"; +$LANG["word_main"] = "Svarbiausias"; +$LANG["word_medium"] = "Terpė"; +$LANG["word_menu"] = "Meniu"; +$LANG["word_menus"] = "Meniu"; +$LANG["word_minutes"] = "min"; +$LANG["word_misc"] = "Įvairūs"; +$LANG["word_module"] = "Modulis"; +$LANG["word_modules"] = "Moduliai"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Vardas"; +$LANG["word_name_c"] = "Vardas:"; +$LANG["word_never"] = "Niekada"; +$LANG["word_next_rightarrow"] = "Sekantis »"; +$LANG["word_next_step_rightarrow"] = "Kitas žingsnis »"; +$LANG["word_no"] = "Ne"; +$LANG["word_none"] = "Nė vienas"; +$LANG["word_notes"] = "Pastabos"; +$LANG["word_notification"] = "Pranešimas"; +$LANG["word_number"] = "Skaičius"; +$LANG["word_off"] = "Išjungta"; +$LANG["word_offline"] = "Neprisijungęs"; +$LANG["word_okay"] = "Gerai"; +$LANG["word_on"] = "Ant"; +$LANG["word_online"] = "Naršo"; +$LANG["word_operator"] = "Operatoriaus"; +$LANG["word_options"] = "Funkcijos"; +$LANG["word_orange"] = "Apelsinas"; +$LANG["word_order"] = "Užsakymas"; +$LANG["word_other"] = "Kitas"; +$LANG["word_other_c"] = "Kiti:"; +$LANG["word_page"] = "Puslapis"; +$LANG["word_page_c"] = "Puslapis:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Slaptažodis"; +$LANG["word_password_c"] = "Slaptažodis:"; +$LANG["word_pending"] = "Nagrinėjamas"; +$LANG["word_permissions"] = "Leidimai"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Ankstesnis"; +$LANG["word_private"] = "Asmeninis"; +$LANG["word_public"] = "Valstybinis"; +$LANG["word_purple"] = "Purpurinis"; +$LANG["word_recipient"] = "Gavėjas"; +$LANG["word_recipient_sp"] = "Gavėjas (-ai)"; +$LANG["word_red"] = "Raudonas"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Pašalinti"; +$LANG["word_remove_uc_leftarrow"] = "«Pašalinti"; +$LANG["word_reply_to"] = "Atsakymas į"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Reikalinga"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Išspręsta"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "eilė"; +$LANG["word_search"] = "Ieškoti"; +$LANG["word_searchable"] = "Ieškoti"; +$LANG["word_select"] = "Pasirinkite"; +$LANG["word_setting"] = "Nustatymas"; +$LANG["word_settings"] = "Nustatymai"; +$LANG["word_show"] = "Rodyti"; +$LANG["word_size"] = "Dydis"; +$LANG["word_skipped"] = "Praleistas"; +$LANG["word_small"] = "Mažas"; +$LANG["word_solution"] = "Sprendimas"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Pradžia"; +$LANG["word_status"] = "Padėtis"; +$LANG["word_string"] = "Styga"; +$LANG["word_subject"] = "Dalykas"; +$LANG["word_subject_c"] = "Dalykas"; +$LANG["word_submenu"] = "Submeniu"; +$LANG["word_submission"] = "Pateikimas"; +$LANG["word_submissions"] = "Pristatymai"; +$LANG["word_system"] = "Sistema"; +$LANG["word_tab"] = "Žymė"; +$LANG["word_tabs"] = "Kortelės"; +$LANG["word_tabs_sp"] = "TAB (-ų)"; +$LANG["word_test"] = "Tikrinti"; +$LANG["word_text"] = "Tekstas"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Išsiūsti"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temos"; +$LANG["word_time"] = "Laikas"; +$LANG["word_tiny"] = "Mažyčiai"; +$LANG["word_tips"] = "Patarimai"; +$LANG["word_today"] = "Šiandien"; +$LANG["word_truncate_q"] = "Trumpinti?"; +$LANG["word_uninstall"] = "Šalinti"; +$LANG["word_unknown"] = "Nežinomas"; +$LANG["word_update"] = "Atnaujinti"; +$LANG["word_upgrade"] = "Atnaujinti"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Vartotojas"; +$LANG["word_username"] = "Vardas"; +$LANG["word_username_c"] = "Vardas:"; +$LANG["word_validation"] = "Patvirtinimas"; +$LANG["word_value"] = "Vertė"; +$LANG["word_value_sp"] = "Vertė (-ų)"; +$LANG["word_verified"] = "Patikrinti"; +$LANG["word_verify"] = "Patikrinti"; +$LANG["word_version"] = "Versija"; +$LANG["word_vertical"] = "Vertikali"; +$LANG["word_view"] = "Vaizdas"; +$LANG["word_views"] = "Parodymų"; +$LANG["word_warning"] = "Įspėjimas!"; +$LANG["word_warning_c"] = "Įspėjimas:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Sveiki atvykę!"; +$LANG["word_width_c"] = "plotis:"; +$LANG["word_words"] = "Žodžiai"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Geltonas"; +$LANG["word_yes"] = "Taip"; \ No newline at end of file diff --git a/global/lang/manifest.json b/global/lang/manifest.json new file mode 100644 index 00000000..e630dd07 --- /dev/null +++ b/global/lang/manifest.json @@ -0,0 +1,57 @@ +{ + "languages": [ + { "lang": "Afrikaans", "file": "af.php", "code": "af" }, + { "lang": "Arabic", "file": "ar.php", "code": "ar" }, + { "lang": "Azerbaijani", "file": "az.php", "code": "az" }, + { "lang": "Byelorussian", "file": "be.php", "code": "be" }, + { "lang": "Bulgarian", "file": "bg.php", "code": "bg" }, + { "lang": "Catalan", "file": "ca.php", "code": "ca" }, + { "lang": "Czech", "file": "cs.php", "code": "cs" }, + { "lang": "Welsh", "file": "cy.php", "code": "cy" }, + { "lang": "Danish", "file": "da.php", "code": "da" }, + { "lang": "German", "file": "de.php", "code": "de" }, + { "lang": "Greek", "file": "el.php", "code": "el" }, + { "lang": "English (US)", "file": "en_us.php", "code": "en_us" }, + { "lang": "Spanish", "file": "es.php", "code": "es" }, + { "lang": "Estonian", "file": "et.php", "code": "et" }, + { "lang": "Persian", "file": "fa.php", "code": "fa" }, + { "lang": "Finnish", "file": "fi.php", "code": "fi" }, + { "lang": "French", "file": "fr.php", "code": "fr" }, + { "lang": "Irish", "file": "ga.php", "code": "ga" }, + { "lang": "Galician", "file": "gl.php", "code": "gl" }, + { "lang": "Hindi", "file": "hi.php", "code": "hi" }, + { "lang": "Croatian", "file": "hr.php", "code": "hr" }, + { "lang": "Hungarian", "file": "hu.php", "code": "hu" }, + { "lang": "Indonesian", "file": "id.php", "code": "id" }, + { "lang": "Icelandic", "file": "is.php", "code": "is" }, + { "lang": "Italian", "file": "it.php", "code": "it" }, + { "lang": "Japanese", "file": "ja.php", "code": "ja" }, + { "lang": "Korean", "file": "ko.php", "code": "ko" }, + { "lang": "Latvian", "file": "la.php", "code": "la" }, + { "lang": "Lithuanian", "file": "lt.php", "code": "lt" }, + { "lang": "Macedonian", "file": "mk.php", "code": "mk" }, + { "lang": "Malay", "file": "ms.php", "code": "ms" }, + { "lang": "Maltese", "file": "mt.php", "code": "mt" }, + { "lang": "Dutch", "file": "nl.php", "code": "nl" }, + { "lang": "Norwegian", "file": "no.php", "code": "no" }, + { "lang": "Polish", "file": "pl.php", "code": "pl" }, + { "lang": "Portuguese", "file": "pt.php", "code": "pt" }, + { "lang": "Portuguese (Brazilian)", "file": "pt_br.php", "code": "pt_br" }, + { "lang": "Portuguese (European)", "file": "pt_eu.php", "code": "pt_eu" }, + { "lang": "Romanian", "file": "ro.php", "code": "ro" }, + { "lang": "Russian", "file": "ru.php", "code": "ru" }, + { "lang": "Slovak", "file": "sk.php", "code": "sk" }, + { "lang": "Slovenian", "file": "sl.php", "code": "sl" }, + { "lang": "Serbian", "file": "sr.php", "code": "sr" }, + { "lang": "Swedish", "file": "sv.php", "code": "sv" }, + { "lang": "Swahili", "file": "sw.php", "code": "sw" }, + { "lang": "Thai", "file": "th.php", "code": "th" }, + { "lang": "Filipino", "file": "tl.php", "code": "tl" }, + { "lang": "Turkish", "file": "tr.php", "code": "tr" }, + { "lang": "Ukrainian", "file": "uk.php", "code": "uk" }, + { "lang": "Vietnamese", "file": "vi.php", "code": "vi" }, + { "lang": "Yiddish", "file": "yi.php", "code": "yi" }, + { "lang": "Chinese (Simplified)", "file": "zh_cn.php", "code": "zh_cn" }, + { "lang": "Chinese (Traditional)", "file": "zh_tw.php", "code": "zh_tw" } + ] +} diff --git a/global/lang/mk.php b/global/lang/mk.php new file mode 100644 index 00000000..7d283cdb --- /dev/null +++ b/global/lang/mk.php @@ -0,0 +1,1219 @@ +Предупредување! Одбравте {\$num_selected_on_page} поднесоци на оваа страница и {\$num_selected_on_other_pages} на други страници. Ве молам изберете еден од следниве опции:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Предупредување! Не сте избрани сите поднесоци на оваа страница, но сте избрани {\$num_selected_on_other_pages} на други страници. Ве молиме потврдете дека сакате да ги избришете овие поднесоци.
    "; +$LANG["confirm_delete_view"] = "Дали сте сигурни дека сакате да ја избришете оваа Погледнете?"; +$LANG["confirm_refresh_page"] = "Дали сте сигурни дека сакате да го обновите страницата? Ова ќе го изгуби било какви промени сте ги направиле."; +$LANG["confirm_save_change_before_redirect"] = "Еден или повеќе полиња се ажурирани. Дали сакате да ги зачувате вашите промени пред пренасочување?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Дали сте сигурни дека сакате да Smart Пополнете базата на податоци колона имиња? Ова ќе ги избрише вашиот постоечки вредности."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Оваа опција автоматски генерира база на податоци колона имиња врз основа на текстот на екранот области, така што содржината на базата на податоци маса е полесно да се прочита."; +$LANG["confirm_smart_fill_display_names"] = "Дали сте сигурни дека сакате да Smart Наполнете Покажи имиња? Ова ќе ги избрише вашиот постоечки вредности."; +$LANG["confirm_ungroup_option_list"] = "Дали сте сигурни дека сакате да Ungroup оваа опција листа? Сите опции ќе биде опишан во една, ungrouped листа."; +$LANG["confirm_uninstall_module"] = "Дали сте сигурни дека сакате да го избришам овој модул? Модул Сите податоци ќе бидат изгубени."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Пет"; +$LANG["date_Friday"] = "Петок"; +$LANG["date_Mon"] = "Пон"; +$LANG["date_Monday"] = "Понеделник"; +$LANG["date_PM"] = "Сочувана"; +$LANG["date_Sat"] = "Саб"; +$LANG["date_Saturday"] = "Сабота"; +$LANG["date_Sun"] = "Сонце"; +$LANG["date_Sunday"] = "Недела"; +$LANG["date_Thu"] = "Чет"; +$LANG["date_Thursday"] = "Четврток"; +$LANG["date_Tue"] = "Вто"; +$LANG["date_Tuesday"] = "Вторник"; +$LANG["date_Wed"] = "Сре"; +$LANG["date_Wednesday"] = "Среда"; +$LANG["date_am"] = "сум"; +$LANG["date_month_April"] = "Април"; +$LANG["date_month_August"] = "Август"; +$LANG["date_month_December"] = "Декември"; +$LANG["date_month_February"] = "Февруари"; +$LANG["date_month_January"] = "Јануари"; +$LANG["date_month_July"] = "Јули"; +$LANG["date_month_June"] = "Јуни"; +$LANG["date_month_March"] = "Март"; +$LANG["date_month_May"] = "Може"; +$LANG["date_month_November"] = "Ноември"; +$LANG["date_month_October"] = "Октомври"; +$LANG["date_month_September"] = "Септември"; +$LANG["date_month_short_Apr"] = "Април"; +$LANG["date_month_short_Aug"] = "Август"; +$LANG["date_month_short_Dec"] = "Декември"; +$LANG["date_month_short_Feb"] = "Февруари"; +$LANG["date_month_short_Jan"] = "Јан"; +$LANG["date_month_short_Jul"] = "Јули"; +$LANG["date_month_short_Jun"] = "Јуни"; +$LANG["date_month_short_Mar"] = "Март"; +$LANG["date_month_short_May"] = "Може"; +$LANG["date_month_short_Nov"] = "Ноември"; +$LANG["date_month_short_Oct"] = "Октомври"; +$LANG["date_month_short_Sep"] = "Септември"; +$LANG["date_pm"] = "Сочувана"; +$LANG["notify_account_deleted"] = "Профил на корисникот е избришана."; +$LANG["notify_account_updated"] = "Вашата сметка е успешно ажуриран."; +$LANG["notify_add_display_values"] = "Додај Покажи Вредности"; +$LANG["notify_admin_menu_updated"] = "Администрацијата мени е ажуриран."; +$LANG["notify_admin_theme_overridden"] = "Администраторот Темата е рачен overridden."; +$LANG["notify_allow_url_fopen_not_set"] = "За жал, овој тест не може да биде извршена на вашиот веб сервер. Се бара allow_url_fopen да се постави на 1 во php.ini датотеката. Оваа поставка на PHP да дозволи пристап до фајлови преку URL-то, која е потребно да се изврши овој тест. Можеш да пробаш рачно од Неуспешно датотека за таа папка преку FTP, а потоа обидот за пристап до тоа на адресата имате во собата."; +$LANG["notify_change_temp_password"] = "Вие само сте најавени со привремена лозинка. Треба да ја ресетирате вашата лозинка сега!"; +$LANG["notify_click_to_edit_new_submission"] = "Кликни тука за да го уредите новиот поднесок."; +$LANG["notify_client_account_menus_updated"] = "Сметка на клиентот (а) се ажурирани на {\$menu_name} мени. Сега можете да ги избришете мени, кој беше поврзан со претходно профил (а)."; +$LANG["notify_client_account_not_updated"] = "Сметка на клиентот не може да биде преработен."; +$LANG["notify_client_account_themes_updated"] = "Сметка на клиентот (а) се ажурирани на {\$theme} тема. Сега можете да го оневозможите тема биле поврзани со профилот (и)."; +$LANG["notify_client_account_updated"] = "Сметка на клиентот беше успешно ажуриран."; +$LANG["notify_client_menu_deleted"] = "Мени на клиентот е избришана."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Менито е избришан, но следните сметки на клиенти сега веќе не се мени! You need to ажурирање на следниве сметки:"; +$LANG["notify_client_menu_updated"] = "Мени на клиентот е ажуриран."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "За жал, само мени ти се обиде да ги избришете веќе се користи од страна на клиентите се наведени подолу. Со цел да се избрише од менито ќе треба прво да го додели на клиенти со други менија. Кликнете на името на клиентот да се уреди дека индивидуална сметка, или додели сите профили на различни мени користејќи опаѓачкото подолу."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "За жал, една од темите ти само Петров веќе се користи од страна на следниве сметки на клиенти. Со цел да се оневозможи на темата ќе треба прво да го додели на секој клиент во друга тема. Кликнете на името на клиентот да се уреди дека индивидуална сметка, или додели сите сметки на тема користење на опаѓачкото подолу."; +$LANG["notify_edit_email_fields_link"] = "Кликни тука за да се определи кои полиња се е-мејл области, па можете да ги наведете во вашата e-mail шаблони."; +$LANG["notify_edit_field_new_field"] = "Ова е ново поле. Ќе треба да се ажурира на главната страница пред да биде во можност целосно да ја уредите оваа област."; +$LANG["notify_edit_option_list_after_save"] = "Мора да изберете опција листа и потоа да го снимите промени пред се во можност да го уреди."; +$LANG["notify_email_field_config_deleted"] = "-Мејл конфигурација е избришана."; +$LANG["notify_email_fields_not_updated"] = "Извинување, не можевме да ги ажурирате мејл полиња."; +$LANG["notify_email_fields_updated"] = "-Мејл полиња се ажурирани."; +$LANG["notify_email_not_sent"] = "За жал, пораката не можеше да биде испратен. Ве молиме контактирајте го администраторот на страницата на адресата подолу."; +$LANG["notify_email_not_sent_c"] = "За жал, е-мејл не може да се испраќаат:"; +$LANG["notify_email_sent"] = "E-mail пораката (а) да се испратат."; +$LANG["notify_email_template_deleted"] = "-Мејл дефиниција е избришана."; +$LANG["notify_email_template_updated"] = "-Мејл дефиниција е ажуриран."; +$LANG["notify_enabled_module_list_updated"] = "Листата на модулот е овозможено групно."; +$LANG["notify_error_saving_fields"] = "Имаше грешка спасување на полиња."; +$LANG["notify_field_changes_saved"] = "Промените за вашата област (а) се зачувани."; +$LANG["notify_field_options_smart_filled"] = "Својата област опции биле паметни пополнети."; +$LANG["notify_field_selected"] = "На полето биле избрани. Кликни тука за да се вратите на главното поле листа."; +$LANG["notify_field_updated"] = "Ова поле е ажуриран."; +$LANG["notify_file_not_uploaded"] = "Датотеката не можеше да бидат подигнати."; +$LANG["notify_file_uploaded"] = "Датотеката беше успешно подигнати."; +$LANG["notify_filters_not_updated"] = "Имаше грешка при ажурирање на овој клиент е поднесување филтри."; +$LANG["notify_filters_updated"] = "Поднесување филтри се ажурирани за овој клиент."; +$LANG["notify_folder_correct_permissions"] = "Оваа папка ги содржи точни дозволи."; +$LANG["notify_folder_url_match"] = "Папката и URL-то изгледа правилно натпревар."; +$LANG["notify_folder_url_no_access"] = "Овој тест не може да се изведува, бидејќи PHP не беше во можност за пристап до оваа адреса. Ова е обично предизвикано од URL-то да биде заштитена со лозинка. Htaccess датотека."; +$LANG["notify_folder_url_no_match"] = "Оваа папка URL-комбинација не треба да се појави на натпреварот."; +$LANG["notify_folder_url_unknown_error"] = "Непозната грешка. Можеш да пробаш рачно од Неуспешно датотека за таа папка преку FTP, а потоа обидот за пристап до тоа на адресата имате во собата."; +$LANG["notify_form_access_type_email_info"] = "Оваа форма има администраторски пристап тип, така што нема клиенти имаат пристап до неа и не се наведени во паѓачкото мени подолу."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "За жал, форма со тоа ID не постои."; +$LANG["notify_form_field_not_added"] = "Форма поле '{\$fieldname}' не може да се додаде."; +$LANG["notify_form_field_options_updated"] = "Форма областа опции се ажурирани."; +$LANG["notify_form_field_removed"] = "Форма областа е успешно отстранета."; +$LANG["notify_form_fields_removed"] = "Форма полиња се успешно отстранети."; +$LANG["notify_form_not_updated_notify_admin"] = "Вашата форма не може да биде преработен. Ве молиме контактирајте го администраторот на страницата за пријавување на овој проблем."; +$LANG["notify_form_settings_updated"] = "Твојата форма поставувања се ажурирани успешно."; +$LANG["notify_form_submission_updated"] = "На образец е ажуриран."; +$LANG["notify_form_tabs_updated"] = "На јазичиња се ажурирани."; +$LANG["notify_form_updated"] = "Форма беше успешно ажуриран."; +$LANG["notify_form_views_updated"] = "Формата Видено се ажурирани."; +$LANG["notify_install_invalid_db_info"] = "Извинување, не можевме да се поврзете на базата на податоци со користење на информациите кои испорачуваат. На порака за грешка на базата на податоци се врати е: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Твојата форма е создаден! Можете да го конфигурирате вашиот форма преку овие јазичиња."; +$LANG["notify_invalid_account_information_in_sessions"] = "Сметка информации се чуваат во сесии е неправилен. Ве молиме најавете се повторно во истата."; +$LANG["notify_invalid_license_key"] = "За жал, тоа не се појави да биде валидна лиценцен клуч. Ве молиме обидете се повторно внесување."; +$LANG["notify_invalid_permissions"] = "Немате привилегии за да пристапите на оваа страница. You have been logged out."; +$LANG["notify_invalid_search_dates"] = "Ве молиме користете DatePicker да внесете валиден датум или датуми."; +$LANG["notify_invalid_upload_folder"] = "Подигни датотека или папка е валиден или не е запишување."; +$LANG["notify_lang_list_updated"] = "На располагање на графичката околина јазик листата е ажуриран."; +$LANG["notify_login_info_emailed"] = "Вашите информации за најава е испратена до вас."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Упс, овој модул е ​​веќе инсталиран!"; +$LANG["notify_module_installed"] = "Модулот е инсталиран. Кликни тука за да изберете модул."; +$LANG["notify_module_list_updated"] = "Модулот листата е ажуриран."; +$LANG["notify_module_uninstalled"] = "Модулот е деинсталиран."; +$LANG["notify_module_updated"] = "На {\$module} модул е надграден за {\$version}. Кликни тука за да изберете модул ."; +$LANG["notify_multi_field_selected"] = "На полето биле избрани. Кликни тука за да ја погледнете и уредување на областа опции."; +$LANG["notify_multi_field_updated"] = "Ова поле е ажуриран. Ќе можеш да одбереш полето опции по формирањето форма."; +$LANG["notify_multiple_fields_found"] = "Мултиплекс елементи беа пронајдени со ова поле име ({\$field_name}). Ова може да се појави, ако страната содржи повеќе од една форма или ако случајно сте именуван еден од вашите формулари ист како друг. Ве молам изберете еден сакате од листата подолу."; +$LANG["notify_new_default_view_created"] = "Новиот, стандардно ги содржи сите ваши полиња се создаде."; +$LANG["notify_new_submission_created"] = "Поднесувањето беше замислен. Можете да ја уредувате подолу."; +$LANG["notify_no_account_id_in_sessions"] = "Нема корисник ID беше пронајдена во сесии. Ве молиме најавете се повторно во истата."; +$LANG["notify_no_api_installed"] = "Немате инсталирано на API"; +$LANG["notify_no_client_permissions"] = "Нема достапна конфигурација за уредување."; +$LANG["notify_no_email_template_selected"] = "Ве молиме изберете мејл дефиниција."; +$LANG["notify_no_emails_defined"] = "Нема пораки се дефинирани за оваа форма. За да додадете нов еден, кликнете на копчето подолу."; +$LANG["notify_no_field_settings"] = "Ова поле тип не содржи никакви дополнителни подесувања."; +$LANG["notify_no_fields_in_tab"] = "Ова јазичето не содржи сите полиња."; +$LANG["notify_no_option_lists"] = "Нема опција листи дефинирани. Кликнете на копчето подолу за да се создаде нов."; +$LANG["notify_no_test_submission"] = "Алатник форма не добила ниту еден успешен тест за поднесување уште."; +$LANG["notify_no_user_email_fields_configured"] = "Забелешка: ако сакате да испратите е-пошта до сите е-мејл адреса, кој беше вклучен во форма, прво треба да одбереш форма мејл полиња."; +$LANG["notify_no_views"] = "Твојата форма нема Видено постави! Ќе треба најмалку еден поглед, со цел да управуваат со својата форма податоци."; +$LANG["notify_no_views_assigned_to_client_form"] = "Се чини дека вашиот кориснички профил сеуште не е доделена на каква било форма, Прегледи, така што нема да може да се види какви било податоци. Ве молиме контактирајте го администраторот за понатамошна помош."; +$LANG["notify_no_views_defined"] = "Вие не имате било какви Видено е дефиниран. Вие нема да бидете во можност да ги поднесоци оваа форма, освен ако најмалку еден поглед се создава. Кликнете на копчето подолу за да создаде добра."; +$LANG["notify_option_list_deleted"] = "Опцијата листата била претходно бришена."; +$LANG["notify_option_list_updated"] = "Опцијата листа е обновено."; +$LANG["notify_public_form_omit_list_updated"] = "На клиентот зададеш листа за овој образец е ажуриран."; +$LANG["notify_public_view_omit_list_updated"] = "На клиентот зададеш листа за овој Погледнете е ажуриран."; +$LANG["notify_required_admin_pages"] = "Следните страници се бара во менито на администратор: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "За жал, немаше никакви активности за некое време, па моравме да ви се логирате. Ве молиме најавете се повторно во истата."; +$LANG["notify_setup_options_updated"] = "Подесување на опции се ажурирани."; +$LANG["notify_smart_fill_field_not_found"] = "Ние не можевме да се најде област со тоа име ({\$field_name}) во форма (а) назначено. Можете или рачно да поставите тип полето подолу, или кликнете на копчето Промени за уредување на оваа област подоцна."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Вашиот фајл (ови) беа успешно подигнати. Обидете се паметно Пополнете кликнување на копчето за да се обидат повторно. Ако овој чекор не успее, ќе треба да го прескокнете овој чекор и да го конфигурирате вашиот полиња manally подоцна."; +$LANG["notify_smart_fill_submitted"] = "Формата е доставен. Во зависност од големината на својата форма и бројот на полето опции, тоа може да потрае некое време."; +$LANG["notify_smart_fill_upload_fields_fail"] = "За жал, една или повеќе датотеки што ги внесе не можеше да биде качен. Ќе треба да го прескокнете овој чекор и одбереш рачно полиња."; +$LANG["notify_submission_and_files_deleted"] = "Поднесување и сите фајлови (и) поврзани со него беа успешно избришана."; +$LANG["notify_submission_copied"] = "Поднесокот е копиран."; +$LANG["notify_submission_copied_edit"] = "Поднесокот е копиран. Можете да го промените подолу."; +$LANG["notify_submission_deleted"] = "Поднесување беше успешно избришана."; +$LANG["notify_submission_deleted_with_problems"] = "Поднесување е избришан, но следниве проблеми се соочиле при обидот да ги избришете следниве фајлови (и):"; +$LANG["notify_submission_id_not_found"] = "Поднесување проект не беше пронајден."; +$LANG["notify_submission_not_updated"] = "На поднесување не може да биде преработен."; +$LANG["notify_submissions_and_files_deleted"] = "Поднесоците и сите фајлови (и) поврзани со нив биле успешно избришана."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} поднесоци се копирани."; +$LANG["notify_submissions_deleted"] = "Поднесоците беше успешно избришана."; +$LANG["notify_submissions_deleted_with_problems"] = "Поднесоците беа избришани, но по проблемите се соочиле при обидот да ги избришете следниве фајлови (и):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Твојот тест-мејл не можеше да биде испратен."; +$LANG["notify_theme_cache_folder_not_writable"] = "Оваа тема е кешот папка не е запишување. Со цел да се овозможи оваа тема, на {\$folder} фолдер треба да имаат целосна читање-пишување дозволи."; +$LANG["notify_theme_list_updated"] = "Темата листата е ажуриран."; +$LANG["notify_themes_settings_updated"] = "Твојот тема поставувања се ажурирани."; +$LANG["notify_view_deleted"] = "Преглед на е избришана."; +$LANG["notify_view_group_deleted"] = "Поглед група била претходно бришена."; +$LANG["notify_view_missing_columns"] = "Упс! За жал, овој став не е целосно воспоставен."; +$LANG["notify_view_missing_columns_admin_fix"] = "Кликни тука за да се определи кои области треба да се појави како колумни на оваа страница."; +$LANG["notify_view_updated"] = "Преглед на has been updated."; +$LANG["notify_your_email_sent"] = "Вашата e-mail е успешно пратена."; +$LANG["phrase_100_per_page"] = "100 на страница"; +$LANG["phrase_10_per_page"] = "10 на страница"; +$LANG["phrase_15_per_page"] = "15 на страница"; +$LANG["phrase_1_direct"] = "1. Директно"; +$LANG["phrase_1char"] = "1 привлечност"; +$LANG["phrase_20_per_page"] = "20 на страница"; +$LANG["phrase_25_per_page"] = "25 на страница"; +$LANG["phrase_2_code"] = "2. Шифра"; +$LANG["phrase_2_columns"] = "2 колони"; +$LANG["phrase_2chars"] = "2 карактери"; +$LANG["phrase_3_columns"] = "3 колони"; +$LANG["phrase_4_columns"] = "4 колони"; +$LANG["phrase_50_per_page"] = "50 на страница"; +$LANG["phrase_accepting_submissions"] = "(прифаќа поднесоци)"; +$LANG["phrase_access_admin_account_c"] = "Можете да пристапите до вашиот профил администрација тука:"; +$LANG["phrase_access_type"] = "Тип на пристап"; +$LANG["phrase_account_info"] = "Информации за профилот"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Потребните акција"; +$LANG["phrase_add_client"] = "Додај клиентот"; +$LANG["phrase_add_client_menu"] = "Додај клиентот Мени"; +$LANG["phrase_add_default_settings_rightarrow"] = "Додај стандардните поставувања »"; +$LANG["phrase_add_field"] = "Додај поле"; +$LANG["phrase_add_fields"] = "Додај сфера"; +$LANG["phrase_add_fields_rightarrow"] = "Додаде поле (а) »"; +$LANG["phrase_add_form"] = "Додај форма"; +$LANG["phrase_add_form_external"] = "Додај Образец - Надворешен"; +$LANG["phrase_add_form_internal"] = "Додај Образец - внатрешна"; +$LANG["phrase_add_new_group_rightarrow"] = "Внеси нов Група »"; +$LANG["phrase_add_num_rows"] = "Додадете {\$number} број Row (и)"; +$LANG["phrase_add_row"] = "Додај Row »"; +$LANG["phrase_add_submission_button"] = "Додај Поднесување Батон"; +$LANG["phrase_add_view_rightarrow"] = "Додади ги коментарите »"; +$LANG["phrase_adding_multi_page_form"] = "Додавањето на мулти-страница со форма на API"; +$LANG["phrase_adding_single_page_form"] = "Додавање на еден-страница со форма на API"; +$LANG["phrase_admin_menu"] = "Администратор Мени"; +$LANG["phrase_admin_only"] = "Само Администратор"; +$LANG["phrase_admin_panel"] = "Админ панел"; +$LANG["phrase_administrator_theme"] = "Администратор Тема"; +$LANG["phrase_advanced_settings_rightarrow"] = "Напредни поставувања »"; +$LANG["phrase_all_X_results_selected"] = "Сите {\$numresults} Резултати Одбрана"; +$LANG["phrase_all_clients"] = "Сите клиенти"; +$LANG["phrase_all_clients_except_c"] = "Сите клиенти, освен:"; +$LANG["phrase_all_clients_have_access"] = "(сите клиенти имаат пристап)"; +$LANG["phrase_all_fields"] = "Сите полиња"; +$LANG["phrase_all_fields_displayed"] = "Сите полиња се прикажани"; +$LANG["phrase_all_statuses"] = "Сите статуси"; +$LANG["phrase_all_submissions"] = "Сите поднесоци"; +$LANG["phrase_allow_fields_edited"] = "Дозволете полиња да бидат сменети"; +$LANG["phrase_alphanumeric"] = "Алфанумерички (AZ, 0-9)"; +$LANG["phrase_api_version"] = "Верзија за API"; +$LANG["phrase_apply_timezone_offset"] = "Примени временска зона Офсет"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Доделете сите останатите сметки на клиенти до {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Доделете сите останатите сметки на клиенти до {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "На крајот на"; +$LANG["phrase_at_start"] = "На почетокот"; +$LANG["phrase_author_link"] = "Автор Врска"; +$LANG["phrase_auto_disable_account"] = "Авто-оневозможи пристапот по # неуспешно најавување обиди"; +$LANG["phrase_auto_size"] = "Авто-големина"; +$LANG["phrase_available_clients"] = "На располагање на клиентите"; +$LANG["phrase_available_fields"] = "Формуларот"; +$LANG["phrase_available_option_lists"] = "Опција на располагање листи"; +$LANG["phrase_available_swatches"] = "Достапни Swatches"; +$LANG["phrase_available_swatches_c"] = "Достапни Swatches:"; +$LANG["phrase_available_tabs"] = "Достапни Батерии"; +$LANG["phrase_available_views"] = "Достапни Прегледи"; +$LANG["phrase_awaiting_form_submission"] = "Чекам на образец."; +$LANG["phrase_back_to_field_list"] = "«назад кон полето листа"; +$LANG["phrase_back_to_search_results"] = "назад кон резултатите од пребарувањето"; +$LANG["phrase_base_view_on"] = "База ги на ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Промена Најави Информации"; +$LANG["phrase_characters_limit_p"] = "карактери граница."; +$LANG["phrase_check_db_settings_try_again"] = "-Ве молиме проверете ја вашата база на податоци на параметрите и кликнете на копчето Продолжи повторно."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Проверете рачно"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Исчисти"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Ведро Те молам без Листа"; +$LANG["phrase_client_account_settings"] = "Клиент Account Settings"; +$LANG["phrase_client_field"] = "Клиент поле"; +$LANG["phrase_client_map_filters"] = "Потрошувач на сајтот Филтри »"; +$LANG["phrase_client_may_edit"] = "Клиентот може да се уреди"; +$LANG["phrase_client_menu"] = "Клиент Мени"; +$LANG["phrase_clients_can_access_form"] = "Клиенти кои можат да имаат пристап форма"; +$LANG["phrase_clients_can_access_view"] = "Клиенти кои може да пристапите до Преглед"; +$LANG["phrase_clients_cannot_access_form"] = "Клиенти кои не можат да пристап форма"; +$LANG["phrase_clients_cannot_access_view"] = "Клиенти кои не можат да пристап до Преглед"; +$LANG["phrase_clients_may_edit"] = "Клиентите може да се уреди"; +$LANG["phrase_code_c"] = "Грешка на кодот:"; +$LANG["phrase_code_markup_field"] = "Код / Селектирај поле"; +$LANG["phrase_code_markup_type"] = "Код / Селектирај Тип"; +$LANG["phrase_codes_c"] = "Грешка Код:"; +$LANG["phrase_column_width"] = "Колона Ширина"; +$LANG["phrase_company_name"] = "Име на компанијата"; +$LANG["phrase_configure_form_email_fields"] = "Конфигурирај Образец-мејл сфера"; +$LANG["phrase_confirm_folder_url_match"] = "Потврди папка-натпревар URL"; +$LANG["phrase_connect_rows"] = "Поврзете редови"; +$LANG["phrase_copy_email_settings_from"] = "Копирај Email Settings Од ..."; +$LANG["phrase_copy_settings_from"] = "Копирај поставувања од ..."; +$LANG["phrase_core_fields"] = "Core сфера"; +$LANG["phrase_core_version"] = "Верзија Core"; +$LANG["phrase_create_account"] = "Креирај профил"; +$LANG["phrase_create_admin_account"] = "Направете admin account"; +$LANG["phrase_create_config_file"] = "Направете фајлот"; +$LANG["phrase_create_database_tables"] = "Направете База на податоци Табели"; +$LANG["phrase_create_default_view"] = "Креирај добра"; +$LANG["phrase_create_file"] = "Направете датотеката"; +$LANG["phrase_create_group"] = "Креирај група"; +$LANG["phrase_create_new_email"] = "Create New E-mail"; +$LANG["phrase_create_new_menu"] = "Create New Мени"; +$LANG["phrase_create_new_option_list"] = "Креирај нова опција Листа"; +$LANG["phrase_create_new_option_list_group"] = "Креирај нова опција листа група"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Креирај нова опција Листа »"; +$LANG["phrase_create_new_view"] = "Create New Преглед"; +$LANG["phrase_create_new_view_group"] = "Креирај нов поглед група"; +$LANG["phrase_custom_display_format"] = "Прилагодено формат"; +$LANG["phrase_custom_recipient"] = "Custom Примател"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Темно Сина"; +$LANG["phrase_data_type"] = "Тип на податоци"; +$LANG["phrase_database_hostname"] = "Database Хост"; +$LANG["phrase_database_name"] = "Име на базата на податоци"; +$LANG["phrase_database_password"] = "База на податоци лозинка"; +$LANG["phrase_database_settings"] = "База на податоци Опции"; +$LANG["phrase_database_setup"] = "База на податоци за инсталација"; +$LANG["phrase_database_table_prefix"] = "База на податоци маса префикс"; +$LANG["phrase_database_username"] = "Корисничко име за базата на податоци"; +$LANG["phrase_date_format"] = "Формат на датата"; +$LANG["phrase_db_column"] = "ДБ Колона"; +$LANG["phrase_db_setup_page_4"] = "4. База на податоци за инсталација"; +$LANG["phrase_default_client_account_theme"] = "Default клиентот профил Тема"; +$LANG["phrase_default_date_field_search_value"] = "Аватарот на датум поле за пребарување вредност"; +$LANG["phrase_default_language"] = "Default Јазик"; +$LANG["phrase_default_menu"] = "Default Мени"; +$LANG["phrase_default_sessions_timeout"] = "Default Седници Истекнавреме"; +$LANG["phrase_default_sort_order"] = "Default Подреди го редоследот"; +$LANG["phrase_default_tab_label"] = "Податоци"; +$LANG["phrase_default_theme"] = "Default Тема"; +$LANG["phrase_default_value"] = "Вообичаената вредност"; +$LANG["phrase_default_values"] = "Основни вредности"; +$LANG["phrase_default_values_new_submissions"] = "Основни вредности за нови Пријавите"; +$LANG["phrase_delete_field"] = "Избриши поле"; +$LANG["phrase_delete_form"] = "Избриши форма"; +$LANG["phrase_delete_row"] = "Избриши ред"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Избриши поврзани бришење на фајлови кога поднесување"; +$LANG["phrase_delete_view"] = "Избриши ги"; +$LANG["phrase_disconnect_rows"] = "Исклучете редови"; +$LANG["phrase_display_email"] = "Покажи-мејл"; +$LANG["phrase_display_name"] = "Покажи Име"; +$LANG["phrase_display_text"] = "Прикажи текст"; +$LANG["phrase_display_value"] = "Покажи Вредност"; +$LANG["phrase_edit_admin_menu"] = "Измени Админ Мени"; +$LANG["phrase_edit_client"] = "Уредување на клиентот"; +$LANG["phrase_edit_client_menu"] = "Уредување на клиентот Мени"; +$LANG["phrase_edit_email_template"] = "Edit Email Шаблон"; +$LANG["phrase_edit_field"] = "Уредување на поле"; +$LANG["phrase_edit_field_c"] = "Измени поле:"; +$LANG["phrase_edit_form"] = "Уреди Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Уреди форма пристап тип]"; +$LANG["phrase_edit_option_list"] = "Измени Опција Листа"; +$LANG["phrase_edit_submission"] = "Измени Поднесување"; +$LANG["phrase_edit_submission_label"] = "Измени Поднесување Етикета"; +$LANG["phrase_edit_view"] = "Преглед на уреди"; +$LANG["phrase_email_format"] = "Email формат"; +$LANG["phrase_email_settings"] = "Email Опции"; +$LANG["phrase_email_template"] = "Email дефиниција"; +$LANG["phrase_email_template_name"] = "Име на шаблон-мејл"; +$LANG["phrase_error_learn_more"] = "Дознајте повеќе за оваа грешка."; +$LANG["phrase_error_text_intro"] = "Ве молиме одреди следната грешка (а) и поднесете:"; +$LANG["phrase_errors_learn_more"] = "Кликнете на грешка кодови за да дознаете повеќе."; +$LANG["phrase_event_trigger"] = "Настан Trigger"; +$LANG["phrase_external_form"] = "Надворешната форма"; +$LANG["phrase_external_form_info"] = "Надворешната форма Информации"; +$LANG["phrase_external_your_own_form"] = "Надворешни (свој форма)"; +$LANG["phrase_field_comments"] = "Теренски Коментари"; +$LANG["phrase_field_label"] = "Полето Ознака"; +$LANG["phrase_field_options"] = "Областа Опции"; +$LANG["phrase_field_size"] = "Големина на полето"; +$LANG["phrase_field_skipped"] = "Областа престана да чука"; +$LANG["phrase_field_specific_settings"] = "Терен специфични подесувања"; +$LANG["phrase_field_type"] = "Вид на поле"; +$LANG["phrase_field_type_no_validation"] = "Нема валидација правила Информации за ова поле тип."; +$LANG["phrase_field_types"] = "Областа Типови"; +$LANG["phrase_field_value"] = "Вредност на поле"; +$LANG["phrase_field_values_to_display_values"] = "Областа вредности »Покажи Вредности"; +$LANG["phrase_final_touches_page_6"] = "6. Завршно Touches"; +$LANG["phrase_finalize_form"] = "Финализирајте форма"; +$LANG["phrase_first_name"] = "Име"; +$LANG["phrase_footer_text"] = "Footer Текст"; +$LANG["phrase_for_any_form_submission"] = "За каква било форма, поднесување"; +$LANG["phrase_for_view_submissions"] = "Само поднесоци кои се вклопуваат во следниве Види (и)"; +$LANG["phrase_forgot_password"] = "Ја заборавивте лозинката?"; +$LANG["phrase_form_already_selected"] = "Форма веќе избрани"; +$LANG["phrase_form_email_field_b_c"] = "[Форма-мејл областа]:"; +$LANG["phrase_form_email_field_configuration"] = "Образец-мејл Теренски Конфигурација"; +$LANG["phrase_form_email_fields"] = "Форма Email сфера"; +$LANG["phrase_form_field"] = "Форма на поле"; +$LANG["phrase_form_field_contents"] = "Форма поле Содржина"; +$LANG["phrase_form_field_name"] = "Име на поле форма"; +$LANG["phrase_form_field_placeholders"] = "Форма областа placeholders"; +$LANG["phrase_form_fields"] = "Форма сфера"; +$LANG["phrase_form_info"] = "Формулар Информации"; +$LANG["phrase_form_info_2"] = "2. Формулар Информации"; +$LANG["phrase_form_list"] = "Форма Листа"; +$LANG["phrase_form_name"] = "Име форма"; +$LANG["phrase_form_page"] = "Форма Page"; +$LANG["phrase_form_placeholders"] = "Placeholders форма"; +$LANG["phrase_form_submission"] = "Образец за Поднесување"; +$LANG["phrase_form_submissions"] = "Submissions форма"; +$LANG["phrase_form_type"] = "Вид форма"; +$LANG["phrase_form_url"] = "URL форма"; +$LANG["phrase_form_urls"] = "Форма адреси"; +$LANG["phrase_forms_assigned_to_any_account"] = "Форми доделен на било која сметка"; +$LANG["phrase_forms_page_default_message"] = "Форми страната порака"; +$LANG["phrase_ft_installation"] = "Алатник форма Инсталација сценарио"; +$LANG["phrase_full_width"] = "Комплетна Ширина"; +$LANG["phrase_getting_started"] = "Getting Started"; +$LANG["phrase_global_placeholders"] = "Глобална Placeholders"; +$LANG["phrase_group_name"] = "Име на групата"; +$LANG["phrase_group_options_q"] = "Група опции?"; +$LANG["phrase_group_rows"] = "Група редови"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Селектирај боја"; +$LANG["phrase_html_email"] = "HTML-мејл"; +$LANG["phrase_html_template"] = "HTML Шаблон"; +$LANG["phrase_images_media"] = "Images / Медиуми"; +$LANG["phrase_import_option_list_rightarrow"] = "Увоз Опција Листа »"; +$LANG["phrase_input_length"] = "Влез Должина на"; +$LANG["phrase_installation_help"] = "Инсталација Помош"; +$LANG["phrase_internal_form"] = "Внатрешна форма"; +$LANG["phrase_ip_address"] = "ИП адреса"; +$LANG["phrase_is_multi_page_form_q"] = "Дали е ова мулти-страница форма?"; +$LANG["phrase_label_response_placeholders"] = "Етикета / одговор placeholders"; +$LANG["phrase_large_300px"] = "Големи (300px)"; +$LANG["phrase_large_400px"] = "Големи (400 пиксели)"; +$LANG["phrase_last_7_days"] = "Последните 7 дена"; +$LANG["phrase_last_logged_in"] = "Последна logged in"; +$LANG["phrase_last_modified"] = "Последна промена"; +$LANG["phrase_last_modified_date"] = "Последна промена датум"; +$LANG["phrase_last_name"] = "Презиме"; +$LANG["phrase_letters_only"] = "Само букви"; +$LANG["phrase_light_brown"] = "Светло-кафеава"; +$LANG["phrase_limit_email_content"] = "Гранични области на мејл со содржина во Поглед"; +$LANG["phrase_loading_ellipsis"] = "Се вчитува ..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Вклучи се како овој корисник"; +$LANG["phrase_login_info"] = "Најави Инфо"; +$LANG["phrase_login_page"] = "Најави Страница"; +$LANG["phrase_login_panel_c"] = "Најави панел:"; +$LANG["phrase_login_panel_leftarrows"] = "«Најави панел"; +$LANG["phrase_login_password"] = "Најави Лозинка"; +$LANG["phrase_login_username"] = "Корисничко име"; +$LANG["phrase_logo_link_url"] = "Logo линкови URL"; +$LANG["phrase_logout_url"] = "Одјави URL"; +$LANG["phrase_main_nav"] = "Главно Nav"; +$LANG["phrase_main_settings"] = "Главни поставувања"; +$LANG["phrase_manage_client"] = "Управување со клиентот"; +$LANG["phrase_manage_client_omit_list"] = "Управување со клиентот Пишувајте Листа"; +$LANG["phrase_max_file_size"] = "Макс Големина на датотеката"; +$LANG["phrase_max_length"] = "Макс Должина на"; +$LANG["phrase_max_length_words_chars"] = "- Макс должина (зборови / карактери)"; +$LANG["phrase_may_add_submissions"] = "Пријавите може да се додаде"; +$LANG["phrase_may_copy_submissions"] = "Може да копира поднесоци"; +$LANG["phrase_may_delete_submissions"] = "Пријавите може да ги избрише"; +$LANG["phrase_medium_150px"] = "Медиум (150px)"; +$LANG["phrase_medium_200px"] = "Медиум (200px)"; +$LANG["phrase_menu_name"] = "Мени Име"; +$LANG["phrase_menu_type"] = "Мени Тип"; +$LANG["phrase_min_password_length"] = "Минимална должина на лозинката"; +$LANG["phrase_module_description"] = "Опис на модулот"; +$LANG["phrase_module_info"] = "Информации за модулот"; +$LANG["phrase_module_nav"] = "Модул Nav"; +$LANG["phrase_month_to_date"] = "Месец до денес"; +$LANG["phrase_multi_select"] = "Избери мулти -"; +$LANG["phrase_multi_select_dropdown"] = "Мулти-избери опаѓачкото"; +$LANG["phrase_multiple_fields_found"] = "Мултиплекс сфера Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Име / Презиме"; +$LANG["phrase_new_blank_email"] = "Нови Слепа-мејл"; +$LANG["phrase_new_blank_option_list"] = "Нов празен Опција Листа"; +$LANG["phrase_new_blank_view"] = "Нови Слепа View"; +$LANG["phrase_new_ft_installation"] = "Нова форма за алатки за инсталација"; +$LANG["phrase_new_option_list"] = "Нова опција Листа"; +$LANG["phrase_new_password"] = "Нова лозинка"; +$LANG["phrase_new_password_reenter"] = "Нова лозинка (ве молиме повторно внесете)"; +$LANG["phrase_new_view"] = "Ново Преглед"; +$LANG["phrase_new_view_all_fields"] = "Нов поглед - Сите полиња"; +$LANG["phrase_next_client"] = "следниот клиент »"; +$LANG["phrase_next_field"] = "следната област »"; +$LANG["phrase_next_form"] = "следната форма »"; +$LANG["phrase_next_view"] = "Види следно »"; +$LANG["phrase_no_clients"] = "Не клиенти"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Не се компензира"; +$LANG["phrase_no_option_lists_available"] = "Не опции листи на располагање."; +$LANG["phrase_no_views"] = "Не Прегледи"; +$LANG["phrase_no_views_with_filters_p"] = "(Не ставови со филтри дефинирани)"; +$LANG["phrase_none_not_recommended"] = "Никој (не се препорачува)"; +$LANG["phrase_not_assigned_to_option_list"] = "Ова поле не е доделен до некоја опција листа."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "НЕ еднакви"; +$LANG["phrase_not_found"] = "Не е пронајдено!"; +$LANG["phrase_not_like"] = "Како НЕ"; +$LANG["phrase_not_visible_to_client"] = "(не се видливи на клиентот)"; +$LANG["phrase_num_clients_per_page"] = "Бр клиенти на страница"; +$LANG["phrase_num_emails_per_page"] = "Бр пораки на страница"; +$LANG["phrase_num_fields"] = "Број на полиња"; +$LANG["phrase_num_forms_per_page"] = "Бр Форми на страница"; +$LANG["phrase_num_menus_per_page"] = "Бр менија на страница"; +$LANG["phrase_num_modules_per_page"] = "Бр модули на страница"; +$LANG["phrase_num_option_lists_per_page"] = "Број Опција листи на страница"; +$LANG["phrase_num_options"] = "Број Опции"; +$LANG["phrase_num_rows"] = "Број Редови"; +$LANG["phrase_numbers_only"] = "Само бројки"; +$LANG["phrase_often_localhost"] = "(често "localhost")"; +$LANG["phrase_on_form_submission"] = "На образец"; +$LANG["phrase_one_char_number"] = "Барем еден знак е број (0-9)"; +$LANG["phrase_one_char_upper"] = "Барем еден знак е големи букви"; +$LANG["phrase_one_special_char"] = "Барем еден од {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(само за одредени клиенти имаат пристап)"; +$LANG["phrase_open_form_in_dialog"] = "Отвори форма во дијалог прозорецот"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Отворете го овој формулар во нов таб / прозорец"; +$LANG["phrase_option_list"] = "Опција Листа"; +$LANG["phrase_option_list_name"] = "Опција Листа Име"; +$LANG["phrase_option_list_or_contents"] = "Опција листа / Содржина"; +$LANG["phrase_option_lists"] = "Опција листи"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Наслови страница"; +$LANG["phrase_pass_on"] = "Минете"; +$LANG["phrase_password_min"] = "Таа мора да биде најмалку {\$length} ликови."; +$LANG["phrase_password_one_number"] = "Таа мора да содржи барем еден број (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Таа мора да содржи барем една латинична буква."; +$LANG["phrase_password_requirements_c"] = "Лозинка барања:"; +$LANG["phrase_password_reset"] = "Ресетирање на лозинка"; +$LANG["phrase_password_special_char"] = "Таа мора да содржи барем еден од следниве знаци: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Дозволи / други параметри"; +$LANG["phrase_permitted_file_types"] = "Дозволено типови на датотеки"; +$LANG["phrase_phone_number"] = "Телефонски број"; +$LANG["phrase_phone_number_format"] = "Телефонски број формат"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini максимум дозволено Подигни датотека големина:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Верзија PHP"; +$LANG["phrase_please_confirm"] = "Потврди"; +$LANG["phrase_please_enter_license_key"] = "Ве молиме внесете го вашиот лиценцен клуч"; +$LANG["phrase_please_select"] = "Please Select"; +$LANG["phrase_please_select_form"] = "Ве молиме изберете форма"; +$LANG["phrase_prev_client"] = "«Претходна клиент"; +$LANG["phrase_prev_form"] = "«Претходна форма"; +$LANG["phrase_prevent_password_reuse"] = "Спречување на повторна употреба на # последно лозинки"; +$LANG["phrase_previous_field"] = "«претходни поле"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "«Претходна ги"; +$LANG["phrase_program_name"] = "Име на програмата"; +$LANG["phrase_public_form_omit_list"] = "Те молам без јавен Образец Листа"; +$LANG["phrase_public_view_omit_list"] = "Види јавен Те молам без Листа"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Имаше проблем со следниве пребарување:"; +$LANG["phrase_radio_buttons"] = "Радио копчиња"; +$LANG["phrase_random_form_submission"] = "Случајни образец"; +$LANG["phrase_re_enter_password"] = "Re-enter Лозинка"; +$LANG["phrase_recipient_type"] = "Тип на примачот"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Освежи Листа"; +$LANG["phrase_refresh_module_list"] = "Освежи Модул Листа"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Освежи Тема Листа"; +$LANG["phrase_register_new_email"] = "Регистрација на нов Email"; +$LANG["phrase_remaining_characters"] = "Останатите ликови"; +$LANG["phrase_remaining_words"] = "Останатите зборови"; +$LANG["phrase_remove_tabs"] = "Отстрани Батерии"; +$LANG["phrase_required_password_chars"] = "Бара лозинка карактери"; +$LANG["phrase_resend_test_submission"] = "Resend Тест Поднесување"; +$LANG["phrase_return_form_list"] = "Врати се на Образец Листа"; +$LANG["phrase_row_selected"] = "{\$num_rows} ред избрана"; +$LANG["phrase_rows_selected"] = "{\$num_rows} избраните редови"; +$LANG["phrase_sample_data"] = "Пример на податоци"; +$LANG["phrase_save_changes"] = "Зачувај промени"; +$LANG["phrase_search_keyword"] = "Барај клучни зборови"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Изберете Сите {\$numresults} Резултати"; +$LANG["phrase_select_all_on_page"] = "Избор на сите На Страница"; +$LANG["phrase_select_date"] = "Избери датум"; +$LANG["phrase_select_field"] = "Изберете поле"; +$LANG["phrase_select_swatch"] = "Изберете Swatch"; +$LANG["phrase_selected_clients"] = "Избрани клиенти"; +$LANG["phrase_selected_views"] = "Избрани Прегледи"; +$LANG["phrase_send_email"] = "Испрати E-mail"; +$LANG["phrase_send_test_email"] = "Тест Испрати E-mail"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Седници Истекнавреме"; +$LANG["phrase_setting_value"] = "Поставување Вредност"; +$LANG["phrase_setup_options"] = "Опции за подесување"; +$LANG["phrase_show_all"] = "Прикажи ги Сите"; +$LANG["phrase_show_form"] = "Прикажи Форма"; +$LANG["phrase_size_large"] = "Големи (текст)"; +$LANG["phrase_size_medium"] = "Медиум (<= 256 chars)"; +$LANG["phrase_size_small"] = "Мала (<= 20 карактери)"; +$LANG["phrase_size_tiny"] = "Мали (<= 5 chars)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Прескокни на поле"; +$LANG["phrase_skip_step"] = "Skip Чекор"; +$LANG["phrase_small_100px"] = "Мали (100пк)"; +$LANG["phrase_small_80px"] = "Мали (80px)"; +$LANG["phrase_smart_fill"] = "Smart Пополнете"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Пополнете полиња од:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Пополнете Корисник Документација »"; +$LANG["phrase_sort_as"] = "Сортирај Како"; +$LANG["phrase_special_fields"] = "Специјални сфера"; +$LANG["phrase_standard_fields"] = "Стандардна Полињата"; +$LANG["phrase_standard_filters"] = "Стандарден Филтри »"; +$LANG["phrase_step_1"] = "Чекор 1"; +$LANG["phrase_step_2"] = "Чекор 2"; +$LANG["phrase_step_3"] = "Чекор 3"; +$LANG["phrase_step_4"] = "Чекор 4"; +$LANG["phrase_step_5"] = "Чекор 5"; +$LANG["phrase_step_6"] = "Чекор 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Стрип етикети во форма поднесоци"; +$LANG["phrase_subject_line"] = "Тема линија"; +$LANG["phrase_submission_date"] = "Датум на поднесување"; +$LANG["phrase_submission_id"] = "Поднесување проект"; +$LANG["phrase_submission_made"] = "Поднесување направи: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Поднесување Тип"; +$LANG["phrase_submissions_per_page"] = "Поднесоци на страница"; +$LANG["phrase_system_check"] = "Проверете систем"; +$LANG["phrase_system_fields_no_validation"] = "Вие не смеете да додадете валидација на системот полиња."; +$LANG["phrase_system_time_offset"] = "Време систем Офсет"; +$LANG["phrase_tab_label"] = "Tab Етикета"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Тест папка дозволи"; +$LANG["phrase_test_submission"] = "Тест за Поднесување"; +$LANG["phrase_test_submission_3"] = "3. Тест за Поднесување"; +$LANG["phrase_test_submission_received"] = "Тест Поднесување Received"; +$LANG["phrase_text_and_html"] = "Текст и HTML -"; +$LANG["phrase_text_email"] = "Текст-мејл"; +$LANG["phrase_text_template"] = "Текст Шаблон"; +$LANG["phrase_the_previous_month"] = "Претходниот месец"; +$LANG["phrase_theme_description"] = "Тема Опис"; +$LANG["phrase_theme_info"] = "Тема Инфо"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Вкупно резултати:"; +$LANG["phrase_type_c"] = "Грешка Тип:"; +$LANG["phrase_unselect_all"] = "Одизберигисите"; +$LANG["phrase_update_accounts"] = "Ажурирање профил"; +$LANG["phrase_update_email_template"] = "Update-мејл Шаблон"; +$LANG["phrase_update_field"] = "Ажурирање поле"; +$LANG["phrase_update_order"] = "Ажурирање ред"; +$LANG["phrase_update_view"] = "Ажурирање View"; +$LANG["phrase_upload_file"] = "Upload file"; +$LANG["phrase_upload_files"] = "Подигни датотека"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Додавање папка патот"; +$LANG["phrase_upload_folder_url"] = "Додавање URL на папка"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Користете Вообичаената вредност?"; +$LANG["phrase_used_by_num_form_fields"] = "Користат # Образец сфера"; +$LANG["phrase_uses_swatches"] = "Користи Swatches"; +$LANG["phrase_valid_email"] = "Валидна e-mail"; +$LANG["phrase_validation_error"] = "Валидација Грешка"; +$LANG["phrase_validation_rule"] = "Валидација член"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Прикажи група"; +$LANG["phrase_view_id"] = "Прикажи ги проект"; +$LANG["phrase_view_name"] = "Преглед Име"; +$LANG["phrase_view_placeholders"] = "Прикажи ги placeholders"; +$LANG["phrase_view_submissions"] = "Преглед на Submissions"; +$LANG["phrase_view_uploaded_files"] = "View качените датотеки"; +$LANG["phrase_viewing_range"] = "[гледање {\$startnum} до {\$endnum}]"; +$LANG["phrase_when_sent"] = "Кога испрати"; +$LANG["phrase_when_submission_is_deleted"] = "При поднесување е избришан"; +$LANG["phrase_when_submission_is_edited"] = "Кога е поднесување edited"; +$LANG["phrase_who_can_access"] = "Кој може пристап?"; +$LANG["phrase_word_limit_p"] = "збор граница."; +$LANG["phrase_year_to_date"] = "Година до денес"; +$LANG["phrase_yes_for_all_views"] = "Да, за сите Прегледи"; +$LANG["phrase_yes_for_specific_views"] = "Да, за одредени Прегледи"; +$LANG["phrase_your_account"] = "Твојот профил"; +$LANG["phrase_your_email"] = "Вашиот Email"; +$LANG["phrase_your_email_address"] = "Вашата email адреса"; +$LANG["processing_form_disabled"] = "За жал, овој формулар е оневозможено."; +$LANG["processing_form_incomplete"] = "За жал, овој образец не се појавува целосно да се воспостави во рок од Form Tools. Најверојатно причина за овој проблем е во тоа што сте отстранети од "form_tools_initialize_form" скриена форма поле, но не комплетно сите чекори на "Додади Образец" процес.

    Ве молиме да се логирате и преглед форма конфигурација."; +$LANG["processing_init_complete"] = "Благодарам! Твојот тест за поднесување е тури низ успешно. Ве молиме да се врати во форма Алатник администрација панел и кликнете на "Освежи" копчето на дното од Додади Образец Чекор 3 страница да заврши создавање на своја форма."; +$LANG["processing_invalid_form_id"] = "За жал, ова не се појави да биде валидна форма проект."; +$LANG["processing_no_form_id"] = "process.php бара форма проект за преработка. Бидете сигурни дека вашиот формулар содржи скриени област со името "form_tools_form_id" тоа е донесување по форма проект."; +$LANG["processing_no_form_url_for_recaptcha"] = "Алатник форма не е во можност да се утврди каде да го пренасочи кога тие не успеваат да влезат во CAPTCHA правилно. Ве молиме да мине скриен поле со името form_tools_form_url содржат URL-то на форма."; +$LANG["processing_no_post_vars"] = "process.php не добиваат никакви податоци. Забелешка: оваа скрипта не може да се бутира директно во вашиот интернет пребарувач.
    Бидете сигурни дека вашиот форма е преку испраќање на POST."; +$LANG["processing_no_redirect_url"] = "Поднесување била обработена правилно, но не сте определени со пренасочите URL-то за оваа форма! Променете ја вашата форма во форма Алатник адаптери и додадете го пренасочите URL-то."; +$LANG["special_language"] = "Macedonian"; +$LANG["special_language_locale"] = "Macedonian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Сите нови сметки на клиенти ќе бидат создадени со поставките и дозволи дефинирани подолу. За да се вратиш назад поставка за одреден клиент, клиент за уредување на профил и да ја посетат нивната Settings tab."; +$LANG["text_add_form_choose_integration_method"] = "Изберете кој метод сакате да го користите да ги интегрира својата форма со форма алатки."; +$LANG["text_add_form_code_submission_benefits"] = "Овој метод користи Формулар Алатки API , вклучени во главна форма Алатки сценариото. API, обезбедува голем број на корисни функции за работа на интегрирање на вашата форма со форма Алатки едноставно како е можно. Не постојат ограничувања за тоа како вашата форма може да се поднесе кога ќе го користите API. Можете да поднесете содржината во еден да одам, или страница по страница, можете да додадете свој сопствен сервер од страна на валидација, CAPTCHA слики, вие може да избере да ја достави информации сега, туку само го кажам за да се прикаже на поднесување во форма Алатки адаптери подоцна (види Финализирајте Пријавите дел во помош API документација)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Со цел да ја поднесете вашата форма податоци преку PHP, вашиот формулар мора да се наоѓа на истата веб-сајт како оваа форма Алатки инсталација. Второ, за не-технички и почетниците форма Алатки корисници, овој метод може да биде малку застрашувачки на прв план. Но, има многу документација за да ви помогнеме, вклучувајќи и две едноставни упатства за интегрирање на вашиот единствен и мулти-страница форми (тие се поврзани со за подоцна чекор)."; +$LANG["text_add_form_direct_submission_benefits"] = "Ова е наједноставен начин да ја поднесете вашата форма за да Form Tools. Тоа не бара никакви познавање на PHP и бара само една мала промена на вашата форма. Таа е одлична за помали форми каде сакате само да ги достави информации за базата на податоци потоа се пренасочи на корисникот на "thankyou" страница."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Овој начин на претставување е многу едноставен за користење, но не предвидува контрола за многу покомплицирано форми. Мулти-страница форми или форми за кои е потребна проверка од страна на серверот се најсоодветни за вториот метод: преку поднесување на Образец Алатник API."; +$LANG["text_add_form_field_types1"] = "Речиси се направи! Оваа страница се обидува да ги најдете сите вашата полиња и да се одреди нивната област типови. Кликнете на Smart Пополнете копче на десната страна за да започнете. Ќе биде дозволено само да се продолжи кога сите активности да се реши - прашања на кои треба вашето внимание се појави во "акција потребни " колумна."; +$LANG["text_add_form_field_types2"] = "Ако вашиот форма не е во HTML, кликнете на копчето Чекор Скокни да се продолжи. Сето ова може да се конфигурира подоцна."; +$LANG["text_add_form_field_types3"] = "Ова Освежувања содржината на вашата форма (а). Забелешка: Ова ќе ги избрише сите промени сте ги направиле на оваа страница."; +$LANG["text_add_form_field_types4"] = "Во случај да наидат на проблеми, кликнете тука за да го прескокнете овој чекор. Сите нерешени полиња се постави за користење на стандардните вредности. Можете да изберете овие области подоцна."; +$LANG["text_add_form_field_types_manual_upload"] = "Ако сте биле во можност да Smart Пополнете вашите ниви, можеби ќе сакате да се обиде алтернативно решение: Внеси копии од вашите форми во полињата подолу."; +$LANG["text_add_form_field_types_manual_upload2"] = "Забелешка: не Внеси суровини PHP страници (или други серверски код) - само аплоадираш на HTML верзии. За да се добие ова, и да ги зачувате страница од вашиот веб прелистувач."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Имаше повеќе полиња кои не можат да се најдат во форма страница имаш специфицирано. Ова е најчесто, најверојатно предизвикана од еден од следниве:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Внесовте една или повеќе од форма адреси на вашиот мулти-страница форма погрешно."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Една или повеќе страници на вашиот форма се заштитени со лозинка и сценариото не може да пристапите на страната."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Вие погрешно сте го внеле Вашиот форма рачно."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Кликни тука за да се врати во форма информации страница за да ја проверите вашата конфигурација."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Вие промениле форма (а) по што тест поднесување"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Кликни тука за да се стави, преку уште еден тест поднесување."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Твојата форма е заштитен со лозинка и сценариото не може да пристапите на страната."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Во друг таб / прозорец на овој интернет пребарувач, влезете во вашиот форма потоа кликнете на страница освежи копчето подолу за да се обиде повторно да се најде на полиња."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Ако ниту еден од горенаведените решенија работа, исто така, можеби ќе сакате да се обиде рачно качувањето на форми за обработка ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Имаше повеќе полиња кои не можат да се најдат во форма страници имаш специфицирано. Ова е најчесто, најверојатно предизвикана од еден од овие:"; +$LANG["text_add_form_help_link"] = "Ако наидете на никакви проблеми за време на овие чекори, обидете се читање на корисникот документација ."; +$LANG["text_add_form_step_1_text_1"] = "Следните страници те води низ чекорите да одбереш Образец Алатки за да ја запази својата форма поднесоци. Пред да продолжиш, ве молиме да проверите дека:"; +$LANG["text_add_form_step_1_text_2"] = "Ви форма веќе е основан и е достапна преку адреса (localhost е чисто)"; +$LANG["text_add_form_step_1_text_3"] = "се во состојба да ги менувате вашите форма"; +$LANG["text_add_form_step_2_para_2"] = "Отвори во својата форма уредник на вашиот избор и промена на начинот на следниов таг, вклучувајќи две скриени полиња."; +$LANG["text_add_form_step_2_para_3"] = "Потоа, отворете во форма на веб прелистувачот. Пополнете во секое поле и ќе го поднесе. По поднесување, вие треба да видите најава. Откако оваа порака е прикажана, враќање на оваа страница и кликнете на копчето refresh подолу. При овој процес е завршен, ќе видите продолжи копчето подолу, заземајќи да следниот чекор."; +$LANG["text_add_form_step_2_para_6"] = "Во твојот образец, ги вклучуваат следните вредности. Тие може да бидат поставени непосредно преку PHP или поминаа заедно преку форма себе. Долу се примери за секој. На \$ () varname е хеш (или асоцијативна низа) на сите форма за доставување информации - ова е обично (\$ postvar) или () \$ sessionvar променлива, но може да биде изграден обичај."; +$LANG["text_add_form_step_2_text_2"] = "Внесете го URL-то на вашиот "Ти благодарам " страница тука. Ова е местото каде што сакате луѓето да бидат насочени кон по форма била доставена."; +$LANG["text_add_form_step_3_para_1"] = "Оваа страница списоци на сите полиња во вашиот образец. Ве молиме испита секоја област и да ги отстраните сите дека не е потребно да чуваат за секој поднесување. Ако избришете валидна областа случајно, или сакате да ја промените информации зачувани од вашиот формулар, за да се врати на претходната страна да испрати нов тест поднесување."; +$LANG["text_add_form_step_3_para_2"] = "Забелешка: ако праќаш повеќе вредности преку обележувачи или мулти-избери кутија, бидете сигурни дека вашата област име завршува со [] ликови (види на корисник документација за повеќе информации)."; +$LANG["text_add_form_step_3_text_1"] = "Еве каде што забава ќе почне! Во овој момент, формата Алатки е на чекање за тест поднесување од вашата форма. Тоа ќе го искористите овој образец да се знае кои информации треба да се чуваат во базата на податоци."; +$LANG["text_add_form_step_3_text_2"] = "со отворите вашата форма за да Образец Алатник"; +$LANG["text_add_form_step_3_text_3"] = "Образец за користење на алатки за API"; +$LANG["text_add_form_step_3_text_4"] = "Да им помогне на интегрирате вашата форма, Ви препорачуваме да прочитате една од следниве упатства:"; +$LANG["text_add_form_step_3_text_5"] = "Тие објаснуваат како да го наместите вашиот вид во подготовките за тестот поднесам, а вклучува и други информации кои можат да бидат од помош. Линијата на PHP, ќе ви треба е:"; +$LANG["text_add_form_step_3_text_6"] = "Ова обезбедува податоците е всушност праќаат до Form Tools. Кога ќе се постави во текот на пробната поднесување, кликнете на копчето подолу."; +$LANG["text_add_form_step_3_text_7"] = "На страната пред вашето конечна "благодарам" страница, не заборавајте да додадете следниов параметар до \$ params променлива"; +$LANG["text_add_form_step_5_para_1"] = "Базата на податоци е формирана за оваа форма и облик има овозможено користење. Ако сте направиле поднесување со отворите вашата форма за да process.php, Ве молиме да се вратат во својата форма и одстранување на следниве скриено поле:"; +$LANG["text_add_form_step_5_para_2"] = "Потоа посета на својата "благодарам" за да го испразните сесии. Откако ова е направено, сите поднесоци нова форма ќе бидат обработени и зачувани од страна Form Tools. Обидете се да направите поднесување или две за да ја потврди оваа информација се сите Неуспешно правилно."; +$LANG["text_add_form_step_5_para_3"] = "Ако сакате да шлифоване вашата форма за опциите како на пример автоматско испраќање, додавајќи дополнителни полиња поле, или измената на формуларот поле типа, може да ги менувате вашите форма во која било точка."; +$LANG["text_add_form_step_5_para_4"] = "Од вашиот формулар содржи Подигни датотека полиња, ќе треба да одбереш секоја област да се утврдат Подигни датотека фолдерот, што и датотеките се дозволени. Ова може да се најдат на табулаторот Покажи на уреди форма страница."; +$LANG["text_add_form_step_5_para_5"] = "Ако доставувањето е испратен преку API, промена на ft_api_init_form_page линија на првата страница на вашата форма за да:"; +$LANG["text_add_submission_button"] = "Додади Поднесување копчето се појавува само за ставови кои имаат "да додадете поднесоци " опција во собата да се "Да "."; +$LANG["text_admin_email_placeholder_info"] = "Оваа е-мејл адреса на Образец Алатник администратор, што е дефинирано во подесувањата на профилот. Ова само излези на е-мејл адреса, така да ако сакаш да се користи како HTML линкот, ќе треба да ги комбинирате тоа во <a> ознака, како и тоа:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Исто така се стандардно логирање страница тема)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Прво, ве молиме изберете ја вашата форма тип."; +$LANG["text_client_form_page"] = "Оваа страница содржи сите форми и Views доделени на овој клиент. Совет: за да ги видите форма на предлози, тие треба да бидат доделени на најмалку еден Погледнете."; +$LANG["text_client_map_filters_desc1"] = "Потрошувач на сајтот филтри да те ограничи поднесоци кои се појавуваат во оваа Преглед на мапирање на вредностите во форма областа на вредностите во сметката на клиентот."; +$LANG["text_client_no_forms"] = "Во моментов немате форми, достапни за разгледување."; +$LANG["text_client_welcome"] = "Добредојде! Оваа програма ги чува сите податоци поднесени од страна на својата веб-страница посетители. За да го видиш поднесоци за одредена форма само кликнете на Види линк, или видите leftmost навигација мени за други опции."; +$LANG["text_config_file_created"] = "Твојот config.php file беше замислен."; +$LANG["text_config_file_not_created"] = "Ние не може да креирате config.php file. Ќе треба да се создаде датотеката рачно."; +$LANG["text_config_file_not_created_instructions"] = "Копирај го и поставете го содржини од делот подолу во фајл наречен config.php и испратите преку FTP во форма Алатник / глобален директориум (фолдер во кој, исто така, содржи неколку други датотеки и директориуми, една датотека со име license.txt)."; +$LANG["text_confirm_delete_form"] = "Да, јас сакам да ја избришете оваа форма"; +$LANG["text_create_admin_account"] = "Сега ние ќе создаде администраторот на сметката. Ова се користи за управување со сите аспекти на Образец алатки, како што се додавање на форми и создавање на клиентски сметки."; +$LANG["text_create_new_client_account"] = "Користете ја формата подолу можете да создадете сметка нов клиент. Сите полиња се задолжителни."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "види PHP {\$datefunctionlink} функција за опциите за форматирање"; +$LANG["text_default_file_settings_page"] = "Оваа страница ја дефинира Подигни датотека за вашата конфигурација Образец Алатник инсталација. Овие правила важат за сите датотеки качен преку Form Tools, освен ако експлицитно overridden за одделен вид терен. Забелешка: Ако промена на фолдерот испратите по датотеки се подигнати, тие ќе бидат автоматски преместена во новата папка."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Пред да продолжиш, ќе треба да го обновите вашиот / темите / default / кеш папка да се овозможи целосна чита и пишува дозволи. Откако ова е направено, ова порака ќе исчезне и ќе можеш да инсталираш скрипта."; +$LANG["text_default_values_in_view"] = "Овој дел не е задолжително. Сите поднесоци создадени со овој став ќе ги содржи стандардните вредности наведени тука."; +$LANG["text_delete_all_forms"] = "Сакам да ги избришете сите датотеки кои биле подигнати преку оваа форма"; +$LANG["text_delete_form_warning"] = "Дали сте сигурни дека сакате да ја избришете оваа форма? Оваа акција не може да се вратиш назад. Сите податоци ќе бидат трајно изгубени!"; +$LANG["text_edit_admin_menu_page"] = "Можете да ги менувате вашите менито подолу. За да се обезбеди секогаш имаат пристап до сите функции достапни во форма на Алатник, на следните страници се бараат: форми, клиенти, вашиот профил, модули, Settings и Одјави."; +$LANG["text_edit_client_menu_page"] = "Овој дел Ви овозможува да изберете навигација на левата колона за секој корисник. Вие може да создаде толку клиентот менија како сакаш и ја додели секој профил, за да еден од нив. По default постојат две менија: едниот за тебе, администратор, и еден за сите сметки на клиенти. Администраторот сметка може да се менува, но не и отстрани."; +$LANG["text_edit_tab_summary"] = "Ако сакате да се групираат полиња Ова гледиште е во јазичиња, само внесете го јазичето имиња подолу. Откако ќе завршиш, изберете соодветна јазичето за секоја област група во Полиња табот ."; +$LANG["text_edit_view_list_page"] = "Ова јазичето контролите кои полиња се појави како колумни на поднесување листата страница, и неколку дополнителни подесувања за тие области. Забелешка: Ние Ви препорачуваме да додадете не повеќе од 4 или 5 од најважните области во поглед."; +$LANG["text_email_settings_intro"] = "Оваа страница ви овозможува да се идентификуваат, кои на своите полиња магазин пораки и нивните соодветни имиња. Откако ќе се дефинираат ги тука, може да ги користите во вашата email шаблони како приматели. Овој дел е целосно опција."; +$LANG["text_email_tab_summary"] = "Овој дел ви овозможува изградба на неограничен број на пораки за да биде испратен секогаш кога твојот вид е поднесена, и други причини."; +$LANG["text_email_template_tab"] = "Овој дел Ви овозможува да се одреди каква содржина се појавува во пораката. Ако сакате да испратите вашата e-mail само како текст, или мејл, само внесете вредност за таа секција. Ако внесете вредност за двете, пораката ќе биде пратена во двата формати."; +$LANG["text_email_template_text_1"] = "Имаше поднесување направени преку вашиот формулар, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Имаше поднесување направени преку вашиот формулар, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Ви благодариме за вашиот имиџ!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Грешка порака до покаже дали на полето не валидација"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Надворешни форми и форми кои веќе постојат на вашиот сајт, или некаде на интернет. Изберете ја оваа опција ако имаш свој форма која сакате да се интегрираат со форма алатки."; +$LANG["text_fields_tab_summary"] = "Оваа страница ги прикажува сите на вашиот полиња. Да контролираат како се појавуваат кога бараат поднесоци, види Видено табот . Бришење на полето на оваа страница ќе ја избришете од сите поднесоци, па ве молиме да бидете внимателни!"; +$LANG["text_file_extension_info"] = "Внесете екстензии на датотеки одвоени со запирки (на пример, jpg, gif, png) или остави празно да дозволи кој било тип на датотека."; +$LANG["text_file_field_placeholders_info"] = "File области имаат две посебни placeholders: FILEURL и името на датотеката. FILEURL е целосна адреса до датотеката, па можете да води директно до него во вашите пораки, датотеката е само името на датотеката."; +$LANG["text_filters_page"] = "Само оние предлози кои ги исполнуваат правилата ќе се дефинираат подолу ќе се појави во овој поглед."; +$LANG["text_filters_tips"] = "За совети како да се користи поднесување филтри, видете на корисникот документација."; +$LANG["text_forgot_password"] = "Нема проблем. Само внесете вашето корисничко име подолу и вашиот логин информации ќе бидат испратени на вашиот e-mail адреса на датотеката. Ако сте заборавиле вашето корисничко име, Ве молиме мејл на страницата администратор на {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Овој формулар содржи едно или повеќе полиња Подигни датотека:"; +$LANG["text_form_placeholder_info"] = "Следниве местата за чување, може да се користи во било која e-mail дефиниција и јазик случаеви поле, без оглед на она што ги го внесувачот на Е дефиниција е доделен на. Прашањето местата за чување, се посебна форма станува збор; СО ОДГОВОРИ placeholders се одговори на секое прашање."; +$LANG["text_form_submission_date_placeholder"] = "Датумот кога поднесување беше направено."; +$LANG["text_form_tools_form_url"] = "Целосната рачно форма. Ова само има вредност за надворешни форми."; +$LANG["text_form_tools_login_url"] = "Влезот на URL-то за Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Забелешка: оваа форма во моментов има администраторски пристап тип, така што ниту еден од клиентски сметки ќе бидат во можност да се види овој став."; +$LANG["text_form_view_permission_info_private"] = "Забелешка: оваа форма во моментов има приватни пристап тип толку јавниот и приватниот опции овде ќе биде ограничено на тоа подмножество на клиенти."; +$LANG["text_ft_installed"] = "Честитки, Form Tools е успешно инсталиран!"; +$LANG["text_global_placeholder_info"] = "Овие placeholders може да се користат во било дефиниција и било каква форма."; +$LANG["text_group_name_explanation"] = "За додавање полиња низ Додади Образец процес, оваа вредност е претходно да се исполнети на екранот од текст полето што го користи вредност. Можеби ќе сакате да ја промените за подобро да опишам содржината."; +$LANG["text_install_create_config_file"] = "Алатник форма чува на серверот и базата на податоци поставувања во датотека наречена config.php, се најде во вашата / глобален / директориумот. Click the "Создади датотека" копчето за да автоматски генерира датотека на вашиот сервер."; +$LANG["text_install_create_database_tables"] = "Сега ние ќе креира формулар Алатник база на податоци маси. Овој чекор за базата на податоци се бара самата да се веќе креиран. Ако не сте сигурни како да го направите ова, ве молиме контактирајте со вашиот хостинг провајдер."; +$LANG["text_install_db_tables_error_tip_1"] = ""Непознат на MySQL серверот домаќин", најчесто значи дека во име на домаќин ќе предвидено е неправилна. Можеби се обиде оваа поставка на "localhost" - ова е заеднички начин да се однесуваат на "локалните" базата на податоци на веб серверот."; +$LANG["text_install_db_tables_error_tip_2"] = ""Не може да се поврзе со локалните на MySQL серверот преку гнездо" се однесува на базата на податоци hostname поле е повторно неточни."; +$LANG["text_install_db_tables_error_tip_3"] = ""Пристапот е одбиен за корисникот:" значи дека има проблем со вашето корисничко име / лозинка тастатурата."; +$LANG["text_install_db_tables_error_tip_4"] = ""Пристапот е одбиен за корисникот: ... на база на податоци ..." значи дека иако Вашето корисничко име и лозинка за да испорачува е точно, тој беше во можност да се поврзе со кои особено база на податоци со таа сметка. Ова може да значи дека ниту со името на базата на податоци се неточни, или дека овој корисник не се поврзани со таа база на податоци."; +$LANG["text_install_email_content_text"] = "Има многу ресурси на нашата веб-страница за да ви помогнеме да започнете, вклучувајќи ја нашата онлајн документација (https://docs.formtools.org) и вежби (https://docs.formtools.org/tutorials). Ако најдете дека сте заглавени или имате прашање, поставете прашање за github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "За жал, формата Алатки не ќе можат да работат на вашиот сервер. Ве молиме кликнете овде за минималните барања."; +$LANG["text_install_system_check"] = "Оваа страница трае неколку тестови на вашиот систем, да се осигура дека може да ги стартувате Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Внатрешна форми постојат само во форма Алатки - не на друго место на вашиот сајт. Само форма Алатки кориснички сметки ќе имаат пристап до форма. Изберете ја оваа опција ако не веќе постоечки облик."; +$LANG["text_internal_form_intro"] = "Од формата подолу можете да создадете нова внатрешна форма. Сите поставувања, вклучувајќи го и бројот и содржината на образецот полиња се може да се промени и конфигуриран подоцна."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Со цел да се најавите и употреба Алатник форма, мора да го вклучите Javascript-от на вашиот пребарувач. Ве молиме овозможи тоа сега, и кликнете на освежување во вашиот интернет пребарувач."; +$LANG["text_last_modified_date_explanation_c"] = "Во последно време, овој пат беше поднесувањето. За нови поднесоци, ова е исто како и:"; +$LANG["text_limit_email_content_desc"] = "Оваа опција работи само за HTML и текст содржина генериран со Smarty петелки."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(само Прегледи списоци со една или повеќе дефинирани филтри)"; +$LANG["text_log_in_to_ft"] = "Логирајте се за да Образец Алатник"; +$LANG["text_login"] = "Ве молиме најавете подолу за да пристапите на \$ () program_name администрација панел. Ако сте ја заборавиле лозинката, кликнете тука."; +$LANG["text_login_info"] = "Како што се бара, тука е вашиот логин информации."; +$LANG["text_name_of_form"] = "Името на формулар."; +$LANG["text_no_clients"] = "Во моментов нема клиенти во базата на податоци. За да додадете нов клиент сметка, кликнете на копчето Додај клиентот подолу."; +$LANG["text_no_clients_found"] = "Не се пронајдени клиенти. Обидете се проширува вашите критериуми за пребарување."; +$LANG["text_no_fields_in_view"] = "Овој став не се имате било какви области во неа. Кликнете на линкот подолу."; +$LANG["text_no_forms"] = "Во моментов нема форми во базата на податоци. За да додадете нова форма, кликнете на копчето Додај Образец подолу."; +$LANG["text_no_forms_found"] = "Не форми беа пронајдени."; +$LANG["text_no_forms_found_search"] = "Не форми беа пронајдени. Обидете се проширува вашиот критериум на пребарување."; +$LANG["text_no_modules_found"] = "Не модули беа пронајдени. Обидете се проширува вашите критериуми за пребарување."; +$LANG["text_no_recipients_added"] = "Нема примачи се додадени."; +$LANG["text_no_search_results"] = "Нема резултати со ова пребарување критериуми / Погледнете."; +$LANG["text_no_submissions_found"] = "За жал, не беа пронајдени поднесоци."; +$LANG["text_no_themes"] = "Вие не имате било какви теми дефинирани. Кликнете на копчето подолу за да го освежи вашата тема листа, или проверка на формата Алатки корисник документација за информации за додавање на теми."; +$LANG["text_non_deletable_fields"] = "Ова поле се користи од страна на јадрото сценариото и не можат да се менуваат или бришат без да предизвика нееднаквости. Ако сакате да направите промени во областа тип, направи копија од тоа и уредување на копија."; +$LANG["text_option_list_group_explanation"] = "Ако ова е избрано, тоа им овозможува да ги групирате вашите опции. Како групите се прикажани зависи од областа тип користење на оваа опција листа."; +$LANG["text_option_list_page"] = "Радио копчиња, обележувачи, dropdowns и мулти-избери паѓачкото мени полиња сите обезбеди корисник со повеќе опции, од кои тие можат да изберете една или повеќе ставки. Во форма алатки, овие се познати како опција листи. Општо земено, овие се создадени автоматски од Додај надворешната форма процес, но можете рачно да додадете или уредувате своите опција листи подолу ако вашиот форма промени во содржината или изградба на полиња, кои се користат само внатрешно."; +$LANG["text_option_list_used_by_fields"] = "Оваа опција Листа се користи од страна на повеќе полиња. Ако ажурирање на информациите подолу, тоа ќе се смени за сите области (види полиња јазичето за да ја видите листата на полиња). Ако сакате да се ажурира на вредности за еден, или подгрупа на областите кои се во моментов доделен, кликнете тука за да се создаде нова опција листа со истите вредности како и оваа. Потоа можете да го доделите на полиња што сакате да го новата група."; +$LANG["text_public_form_omit_list_page"] = "Јавни форми ви овозможи во корист на сите сметки на клиенти пристап до нив без да мора рачно да го додели на секој клиент за нив. Оваа страница ви овозможува многу мал оние клиенти кои не можат да пристап до оваа форма, иако на формата е означен како јавни."; +$LANG["text_public_view_omit_list_page"] = "Јавни Прегледи ви овозможи во корист на сите сметки на клиенти пристап до нив без да мора рачно да го додели на секој клиент за нив. Оваа страница ви овозможува многу мал оние клиенти кои не можат да пристап на оваа особено Погледнете."; +$LANG["text_reference_tab_info"] = "Оваа страница ги прикажува сите места за чување на располагање за вашата форма. Placeholders се стрингови кои може да се користи во е-маил шаблони, и Полињата означени со посебни случаеви икона . Кога влезе во теренот, тие се динамички конвертира во соодветната вредност кога се гледа на поле или мејл е пратен."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Преглед на корисникот документација"; +$LANG["text_send_email_from_edit_submission_page"] = "Вклучува и можност за испраќање оваа email Измени од Поднесување страница"; +$LANG["text_smart_fill_option_list_problem"] = "Ние не можевме да Smart Пополнете својата област опции. Сепак, како алтернатива, може да се обидете да испратите копија од вашата форма страница во полето подолу. Забелешка: не Внеси суровини PHP страници (или други серверски код) - само испраќате HTML верзија. За да се добие ова, и да ги зачувате страница од вашиот веб прелистувач."; +$LANG["text_submission_ip_address"] = "IP адресата на корисникот кој го направија поднесување."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Користете ја формата подолу за да ја видите или сами или пратете е-маил генерирани од оваа email дефиниција. Е-мејл е само да се испрати на мејл што е специфицирано подолу; главните, кубика и bcc e-mail адреса примачи се игнорирани при тестирање."; +$LANG["text_test_email_templates_no_submissions"] = "Со цел да се тест вашата email templates, прво мора да стави преку најмалку еден образец."; +$LANG["text_theme_page_intro"] = "Оваа страница списоци на сите твои теми. Кликнете на сликата за да ја видите поголема пример на темата на стилови. На "от" наога утврдува дали или не таа тема може да биде избран од страна на клиентите. За да ја разгледате сите достапни теми, посетете го веб-сајтот Алатки форма."; +$LANG["text_tutorial_adding_first_form"] = "Упатство: Додавање на вашиот прв форма!"; +$LANG["text_unique_submission_id"] = "Поднесување на уникатен проект."; +$LANG["text_unused_option_list"] = "Оваа опција листа не се користи од страна на било каква форма полиња."; +$LANG["text_upgraded"] = "Вашата инсталација е надградена на "; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Оваа опција Листа се користи од страна на следните области."; +$LANG["text_view_fields_info"] = "Ова јазичето контролите кои полиња се појави при уредување на поднесување во овој поглед, нивната цел и дали тие се едитирање или не."; +$LANG["text_view_tab_summary"] = "Ова јазичето ви овозможува да креирате различни начини да се организира група и на вашите податоци. Видено ви овозможи да креирате сопствени подмножества на вашата форма податоци да се подели во податлив парчиња, и за ограничување на она што клиентите може да го види или променат."; +$LANG["validation_account_disabled"] = "За жал, вашата сметка е оневозможен."; +$LANG["validation_account_not_recognized"] = "За жал, тоа име не е призната."; +$LANG["validation_account_not_recognized_info"] = "За жал, тоа име не е пронајдена. Ве молиме обидете се повторно, или контактирајте го администраторот на страницата на адресата подолу."; +$LANG["validation_account_pending"] = "Твојот кориснички профил е во очекување на одобрување од страна на администраторот."; +$LANG["validation_check_delete_client"] = "Дали сте сигурни дека сакате да го избришете овој клиент профил?"; +$LANG["validation_client_password_missing_number"] = "На клиентот лозинка мора да содржи барем еден број (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "На клиентот лозинка мора да содржи барем еден од следниве знаци: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "На клиентот лозинка мора да содржи барем една латинична буква."; +$LANG["validation_client_password_too_short"] = "На клиентот лозинка треба да биде најмалку {\$number} карактери."; +$LANG["validation_col_name_is_reserved_word"] = "За жал, оваа база на податоци колона име е задржани работа во MySQL. Ве молиме преименувајте го!"; +$LANG["validation_db_name"] = "Имињата на базите на податоци не можат да содржат периоди или коси црти."; +$LANG["validation_db_not_updated_invalid_input"] = "Базата на податоци не може да биде преработен. Ве молиме проверете да видите што ги внесе вредностите се валидни."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "За жал, стандардно администратор и клиент, мора секогаш да бидат теми от."; +$LANG["validation_default_phone_num_required"] = "Ве молиме пополнете во целосна телефонски број за <b> { \$ областа} </ b> - само бројки."; +$LANG["validation_default_rule_alpha"] = "Ве молиме внесете само букви и бројки за <b> { \$ областа} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Ве молиме внесете само букви за <b> { \$ областа} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Ве молиме внесете само броеви за <b> { \$ областа} </ b>."; +$LANG["validation_default_rule_required"] = "Ве молиме внесете вредност за <b> { \$ областа} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Ве молиме внесете валидна е-мејл адреса за <b> { \$ областа} </ b>."; +$LANG["validation_delete_form_confirm"] = "Ве молиме проверете на поле, за да потврдите дека сакате да ја избришете оваа форма."; +$LANG["validation_delete_non_empty_option_list"] = "Предупредување! Оваа опција Листа се користи од страна на еден или повеќе полиња. Бришење тоа ќе го направи тие области престане да работи правилно."; +$LANG["validation_display_names_incomplete"] = "Ве молиме внесете вредност за сите Display Names, или кликнете на Smart Пополнете опција да се внеси ги динамички."; +$LANG["validation_duplicate_form_field_name"] = "Вие не може да има повеќе полиња со истата област име."; +$LANG["validation_email_not_found_or_invalid"] = "За жал, е-мејл поврзани со вашиот профил или не постои или е невалидно."; +$LANG["validation_folder_invalid_permissions"] = "Со цел да го стартувате овој тест, треба да дозволи да се постави за да им се овозможи испратите папка за читање и пишување на датотеки (777 на Unix)."; +$LANG["validation_folder_not_writable"] = "Оваа папка не е writeable."; +$LANG["validation_internal_form_too_many_fields"] = "За жал, може да создаде само форми со 1000 полиња или помалку."; +$LANG["validation_invalid_admin_email"] = "Ве молиме внесете валидна adminstrator's e-mail адреса."; +$LANG["validation_invalid_admin_username"] = "Вашето корисничко име може да се состојат од алфанумерички карактери (az и 0-9)."; +$LANG["validation_invalid_client_username"] = "На клиентот корисничко име може да се состои само од алфанумерички карактери (AZ and 0-9)."; +$LANG["validation_invalid_client_username2"] = "За жал, на корисничко име може да содржи само букви, броеви и истакне карактер. Ве молиме внесете ново корисничко име."; +$LANG["validation_invalid_column_name"] = "Колона имиња може да биде само алфанумерички (AZ, 0-9). Ве молиме проверете колона имиња."; +$LANG["validation_invalid_custom_from_email"] = "Ве молиме внесете валидна обичај 'From' email адреса."; +$LANG["validation_invalid_custom_reply_to_email"] = "Ве молиме внесете валидна обичај "Одговори-на" е-мејл адреса."; +$LANG["validation_invalid_default_sessions_timeout"] = "Ве молиме внесете валидна вредност (голем број) за стандардно сесии завршиле."; +$LANG["validation_invalid_email"] = "Ве молиме внесете валидна email адреса."; +$LANG["validation_invalid_email_id"] = "За жал, тоа е еден валиден мејл проект."; +$LANG["validation_invalid_folder"] = "За жал, ова не се појави да биде валидна папка."; +$LANG["validation_invalid_form_field_names"] = "Полиња може да биде само алфанумерички и Долни (AZ, 0-9, _), без празни места."; +$LANG["validation_invalid_num_clients_per_page"] = "Ве молиме внесете броеви само во Num клиенти на страница поле."; +$LANG["validation_invalid_num_emails_per_page"] = "Ве молиме внесете само бројки за пораки на една страница."; +$LANG["validation_invalid_num_form_fields"] = "Ве молиме внесете само броеви во бројот на полиња поле."; +$LANG["validation_invalid_num_forms_per_page"] = "Ве молиме внесете броеви само во Num Форми на страница поле."; +$LANG["validation_invalid_num_menus_per_page"] = "Ве молиме внесете само бројки за менија на страната."; +$LANG["validation_invalid_num_modules_per_page"] = "Ве молиме внесете броеви само во Num модули на страница поле."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Ве молиме внесете само броеви во Опција Број листи На страна поле."; +$LANG["validation_invalid_num_submissions_per_page"] = "Ве молиме внесете валидна број поднесоци на една страница."; +$LANG["validation_invalid_sessions_timeout"] = "Ве молиме внесете валидна сесија завршиле (само броеви!)."; +$LANG["validation_invalid_tab_assign_values"] = "Ве молиме внесете броеви само во "од" и "за да 'полиња."; +$LANG["validation_invalid_table_prefix"] = "Ве молиме внесете база на податоци префикс се состои од буква и подвлечено карактер само."; +$LANG["validation_invalid_upload_folder"] = "Вашиот сервер на инсталацијата на PHP има валиден за поставување на upload_tmp_dir вредност. "{\$upload_folder}" не е валидна папка."; +$LANG["validation_invalid_url"] = "Ве молиме внесете валидна URL."; +$LANG["validation_invalid_username"] = "Вашето корисничко име може да се состои само од алфанумерички карактери (AZ and 0-9)."; +$LANG["validation_is_form_active"] = "Ве молиме наведете дали во форма е активна или не."; +$LANG["validation_menu_name_taken"] = "За жал, ова мени име веќе е донесена. Ве молиме изберете ново име."; +$LANG["validation_modules_search_no_status"] = "Ве молиме одберете или вклучат или исклучат обележувачи."; +$LANG["validation_no_access_type"] = "Ве молиме внесете го пристап тип."; +$LANG["validation_no_account_logout_url"] = "Ве молиме внесете URL на вашата излезеш."; +$LANG["validation_no_account_password_confirmed"] = "Please re-enter вашата нова лозинка."; +$LANG["validation_no_account_password_confirmed2"] = "Ве молиме повторно внесете ја новата лозинка."; +$LANG["validation_no_admin_email"] = "Ве молиме внесете го администраторот на e-mail адреса."; +$LANG["validation_no_admin_theme"] = "Ве молиме изберете тема за администратор на профил."; +$LANG["validation_no_admin_theme_swatch"] = "Ве молиме изберете Swatch за администратор тема."; +$LANG["validation_no_client_email"] = "Ве молиме внесете го клиентот е-мејл адреса."; +$LANG["validation_no_client_first_name"] = "Ве молиме внесете го клиентот прво име."; +$LANG["validation_no_client_last_name"] = "Ве молиме внесете го клиентот презиме."; +$LANG["validation_no_client_login_page"] = "Ве молиме наведете која страница на клиентот мора да бидете пренасочени на кога се логирам"; +$LANG["validation_no_client_password"] = "Ве молиме внесете го клиентот лозинка."; +$LANG["validation_no_client_theme_swatch"] = "Изберете стандардно Swatch за клиент сметки."; +$LANG["validation_no_client_username"] = "Ве молиме внесете го клиентот корисничко име."; +$LANG["validation_no_column_name"] = "Ве молиме внесете ги сите колона имиња, или кликнете на Smart Пополнете копчето автоматски да ги пополни."; +$LANG["validation_no_column_selected"] = "Ве молиме одберете барем еден областа да се појави како колона од поднесувањето листата страница."; +$LANG["validation_no_custom_from_email"] = "Ве молиме внесете го обичај 'From' email адреса."; +$LANG["validation_no_custom_recipient_email"] = "Ве молиме внесете го обичајот примачот e-mail адреса."; +$LANG["validation_no_custom_reply_to_email"] = "Ве молиме внесете го обичај "Одговори-на" е-мејл адреса."; +$LANG["validation_no_date_format"] = "Ве молиме внесете формат на датум."; +$LANG["validation_no_db_column_single"] = "Ве молиме внесете го името на колоната база на податоци."; +$LANG["validation_no_db_hostname"] = "Ве молиме внесете го името на домаќинот база на податоци."; +$LANG["validation_no_db_name"] = "Ве молиме внесете базата на податоци име."; +$LANG["validation_no_db_username"] = "Ве молиме внесете базата на податоци корисничко име."; +$LANG["validation_no_default_client_theme"] = "Ве молиме изберете стандардна тема за сите нови купувачи сметки."; +$LANG["validation_no_default_language"] = "Ве молиме изберете јазик стандардно за вашата инсталација на Образец алатки."; +$LANG["validation_no_default_sessions_timeout"] = "Ве молиме внесете го стандардно сесија завршиле за кориснички профили."; +$LANG["validation_no_display_text"] = "Ве молиме внесете го текстот на екранот за секоја област."; +$LANG["validation_no_display_text_single"] = "Ве молиме внесете го текстот на екранот вредност."; +$LANG["validation_no_edit_submission_page_label"] = "Ве молиме внесете го Измени Поднесување страница етикета."; +$LANG["validation_no_email"] = "Ве молиме внесете вашата email адреса."; +$LANG["validation_no_email_config_field"] = "Ве молиме да наведете кои форма полето е поле на е-мејл."; +$LANG["validation_no_email_content"] = "Ве молиме внесете го мејл содржина за барем еден од формати (HTML или текст)."; +$LANG["validation_no_email_from_field"] = "Ве молиме мејл "од" поле."; +$LANG["validation_no_email_template_name"] = "Ве молиме внесете го мејл дефиниција име."; +$LANG["validation_no_email_template_view_id"] = "Ве молиме изберете Преглед на кои оваа email дефиниција треба да бидат наименувани."; +$LANG["validation_no_email_template_view_mapping_value"] = "Ве молиме наведете кога треба да се испрати е-мејл."; +$LANG["validation_no_enabled_themes"] = "Ве молиме да се осигура дека најмалку една тема е точно."; +$LANG["validation_no_first_name"] = "Ве молиме внесете вашето прво име."; +$LANG["validation_no_form_field_name"] = "Ве молиме внесете ги сите форма областа имиња."; +$LANG["validation_no_form_field_single"] = "Ве молиме внесете го форма поле вредност."; +$LANG["validation_no_form_id"] = "Форма проект не беше наведен. Ве молиме да се одјавите и пробајте повторно."; +$LANG["validation_no_form_name"] = "Ве молиме внесете го формуларот име."; +$LANG["validation_no_form_url"] = "Ве молиме внесете го URL-то форма."; +$LANG["validation_no_last_name"] = "Ве молиме внесете вашето презиме."; +$LANG["validation_no_login_page"] = "Ве молиме наведете која страница би сакале да бидат испратени секој пат кога ќе се логирате"; +$LANG["validation_no_logout_url"] = "Ве молиме внесете го излезеш URL-то."; +$LANG["validation_no_main_email_recipient"] = "Ве молиме внесете најмалку еден главен мејл примач (т.е. не е кубика или bcc)."; +$LANG["validation_no_menu"] = "Ве молиме одберете менито за овој корисник."; +$LANG["validation_no_menu_id"] = "Ве молиме изберете мени."; +$LANG["validation_no_num_clients_per_page"] = "Ве молиме внесете го бројот на сметки на клиенти на една страница."; +$LANG["validation_no_num_emails_per_page"] = "Ве молиме внесете го бројот на пораки на листата на страница."; +$LANG["validation_no_num_form_fields"] = "Ве молиме внесете го бројот на полиња за вашата форма."; +$LANG["validation_no_num_forms_per_page"] = "Ве молиме внесете го бројот на формите на една страница."; +$LANG["validation_no_num_menus_per_page"] = "Ве молиме внесете го бројот на менија на листата на страница."; +$LANG["validation_no_num_modules_per_page"] = "Ве молиме внесете го бројот на модулите на една страница."; +$LANG["validation_no_num_option_lists_per_page"] = "Ве молиме внесете го бројот на опција листи на една страница."; +$LANG["validation_no_num_submissions_per_page"] = "Ве молиме внесете го бројот на поднесоци за прикажување на една страница."; +$LANG["validation_no_option_list_name"] = "Ве молиме внесете го опција листа име."; +$LANG["validation_no_page_titles"] = "Ве молиме внесете го стандардно страница наслови за кориснички профили."; +$LANG["validation_no_password"] = "Ве молиме внесете ја вашата лозинка."; +$LANG["validation_no_program_name"] = "Ве молиме внесете го името на програмата."; +$LANG["validation_no_second_password"] = "Ве молиме повторно внесете ја вашата лозинка."; +$LANG["validation_no_sessions_timeout"] = "Ве молиме внесете го завршиле на сесија."; +$LANG["validation_no_smart_fill_values"] = "Ве молиме внесете во формуларот поле име и адресата на формата."; +$LANG["validation_no_table_prefix"] = "Ве молиме внесете база на податоци префикс."; +$LANG["validation_no_tabs_defined"] = "Не е дефинирано јазичиња"; +$LANG["validation_no_test_email_recipient"] = "Ве молиме внесете го на e-mail адреса каде што треба да испрати на тестирање е-мејл."; +$LANG["validation_no_test_email_submission_id"] = "Ве молиме внесете го ID број поднесување."; +$LANG["validation_no_theme"] = "Ве молиме изберете тема."; +$LANG["validation_no_theme_swatch"] = "Ве молиме изберете Swatch за секоја одбрана тема."; +$LANG["validation_no_timezone_offset"] = "Ве молиме внесете ја вашата временска зона се компензира."; +$LANG["validation_no_titles"] = "Ве молиме внесете го страница наслови."; +$LANG["validation_no_two_column_names"] = "За жал, не може да влезе во истата база колона име двапати."; +$LANG["validation_no_ui_language"] = "Ве молиме изберете јазик за интерфејс."; +$LANG["validation_no_url"] = "Ве молиме внесете URL адреса."; +$LANG["validation_no_username"] = "Ве молиме внесете го Вашето корисничко име."; +$LANG["validation_no_username_or_js"] = "Мора да внесете вашето корисничко име. Please activate JavaScript во твојот пребарувач."; +$LANG["validation_no_view_fields"] = "Преглед на вашите не содржи никакви полиња! Вие треба да го додели барем едно поле за да се има нешто да се појави во вашиот Погледнете."; +$LANG["validation_no_view_fields_selected"] = "Ве молиме изберете еден или повеќе полиња, за да додадете на Погледнете."; +$LANG["validation_no_view_name"] = "Ве молиме внесете го името на вашата Погледнете."; +$LANG["validation_num_rows_to_add"] = "Ве молиме внесете го бројот на линии за да додадеш."; +$LANG["validation_option_list_name_taken"] = "За жал, оваа опција листа име е веќе зафатено. Ве молиме изберете ново име."; +$LANG["validation_password_in_password_history"] = "За безбедност, не може да внесувате ја истата лозинка како и секој од последните {\$history_size}, за лозинки. Ве молиме внесете различни лозинка."; +$LANG["validation_passwords_different"] = "Треба да внимавате на лозинки се исти."; +$LANG["validation_please_enter_search_date_range"] = "Ве молам изберете од пребарувањето период."; +$LANG["validation_please_enter_search_keyword"] = "Ве молиме внесете го пребарување со клучни зборови."; +$LANG["validation_select_field_type"] = "Ве молиме изберете едно поле тип."; +$LANG["validation_select_submissions_to_copy"] = "Изберете оние поднесоци кои сакате да ги копирате."; +$LANG["validation_select_submissions_to_delete"] = "Ве молиме одберете оние поднесоци сакате да го избришете."; +$LANG["validation_smart_fill_cannot_fill"] = "Извинување, не можевме да пополни ова поле."; +$LANG["validation_smart_fill_invalid_field_type"] = "Ние не можевме да најдеме едно поле, но тоа не е опаѓачкото, наога или радио група."; +$LANG["validation_smart_fill_no_field_found"] = "Извинување, не можевме да најде форма област со тоа име од страната назначено."; +$LANG["validation_smart_fill_no_page"] = "Ве молиме да се лоцира страница содржи полето сакате да Smart Пополнете."; +$LANG["validation_smart_fill_upload_all_pages"] = "Ве молиме да испратите сите страници во својата форма."; +$LANG["validation_upload_folder_not_writable"] = "Оваа привремена папка испратите назначено од вашиот PHP инсталација не е запишување. До ова е фиксна, додадени фајлови не можат да бидат подигнати преку формулар Алатник (или било која друга програма PHP). Ве молиме контактирајте со вашиот хостинг провајдер."; +$LANG["validation_upload_html_files_only"] = "Те молам само испратите HTML датотеки."; +$LANG["validation_username_taken"] = "За жал, тоа корисничко име е веќе донесена. Ве молиме внесете друго корисничко име."; +$LANG["validation_wrong_password"] = "За жал, тоа не се поклопува."; +$LANG["word_about"] = "За"; +$LANG["word_access"] = "Пристап"; +$LANG["word_account"] = "Сметка"; +$LANG["word_account_sp"] = "Account (s)"; +$LANG["word_accounts"] = "Сметки"; +$LANG["word_action"] = "Акција"; +$LANG["word_active"] = "Активни"; +$LANG["word_add"] = "Додај"; +$LANG["word_add_rightarrow"] = "Додај »"; +$LANG["word_add_uc_rightarrow"] = "Додај »"; +$LANG["word_administration"] = "Администрација"; +$LANG["word_administrator"] = "Администратор"; +$LANG["word_after"] = "По"; +$LANG["word_aquamarine"] = "Аквамарин"; +$LANG["word_asc"] = "Константен"; +$LANG["word_author"] = "Автор"; +$LANG["word_author_c"] = "Автор:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«назад"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Пред"; +$LANG["word_benefits"] = "Предности"; +$LANG["word_blue"] = "Сина"; +$LANG["word_cancel"] = "Откажи"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Обележувачите"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Клиент"; +$LANG["word_client_c"] = "Клиент:"; +$LANG["word_clients"] = "Клиенти"; +$LANG["word_close"] = "Затвора"; +$LANG["word_code"] = "Шифра"; +$LANG["word_column"] = "Колона"; +$LANG["word_columns"] = "Колумни"; +$LANG["word_columns_sp"] = "Колона (и)"; +$LANG["word_complete"] = "Целосно"; +$LANG["word_configuration"] = "Конфигурација"; +$LANG["word_content"] = "Содржина"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Продолжи »"; +$LANG["word_copy"] = "Копирај"; +$LANG["word_custom"] = "Обичај"; +$LANG["word_data"] = "Податоци"; +$LANG["word_date"] = "Состанок"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Брише"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Директно"; +$LANG["word_disabled"] = "Петров"; +$LANG["word_documentation"] = "Документација"; +$LANG["word_done"] = "Признаена"; +$LANG["word_drawbacks"] = "Недостатоци"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Уреди"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "E-mail"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "E-mail"; +$LANG["word_enabled"] = "От"; +$LANG["word_equals"] = "Е еднаква на"; +$LANG["word_error"] = "Грешка"; +$LANG["word_error_c"] = "Грешка:"; +$LANG["word_examples_c"] = "Примери:"; +$LANG["word_external"] = "Вон"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Поле"; +$LANG["word_field_sp"] = "Поле (а)"; +$LANG["word_fields"] = "Сфера"; +$LANG["word_fields_sp"] = "Поле (и)"; +$LANG["word_file"] = "Датотека"; +$LANG["word_file_b_uc"] = "[Фајл]"; +$LANG["word_files"] = "Датотеки"; +$LANG["word_filters"] = "Филтри"; +$LANG["word_filters_sp"] = "Филтер (и)"; +$LANG["word_for"] = "за"; +$LANG["word_form"] = "Форма"; +$LANG["word_form_c"] = "Форма:"; +$LANG["word_formatting"] = "Форматирање"; +$LANG["word_forms"] = "Формулари"; +$LANG["word_found"] = "Пронајде"; +$LANG["word_from"] = "Од"; +$LANG["word_from_c"] = "Од:"; +$LANG["word_general"] = "Генералниот"; +$LANG["word_green"] = "Зелен"; +$LANG["word_grey"] = "Греј"; +$LANG["word_height"] = "Висина"; +$LANG["word_help"] = "Помош"; +$LANG["word_hidden"] = "Скриени"; +$LANG["word_highlight"] = "Селектирај"; +$LANG["word_horizontal"] = "Хоризонтална"; +$LANG["word_hour"] = "Час"; +$LANG["word_hours"] = "Часа"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "Проект"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Нецелосна"; +$LANG["word_install"] = "Инсталирајте"; +$LANG["word_installation"] = "Инсталација"; +$LANG["word_internal"] = "Внатрешна"; +$LANG["word_language"] = "Јазик"; +$LANG["word_large"] = "Голем"; +$LANG["word_like"] = "Сака"; +$LANG["word_login"] = "Пријавување"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Главно"; +$LANG["word_medium"] = "Медиум"; +$LANG["word_menu"] = "Мени"; +$LANG["word_menus"] = "Менија"; +$LANG["word_minutes"] = "минути"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Модул"; +$LANG["word_modules"] = "Модули"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Име"; +$LANG["word_name_c"] = "Име:"; +$LANG["word_never"] = "Никогаш"; +$LANG["word_next_rightarrow"] = "следно »"; +$LANG["word_next_step_rightarrow"] = "Следен чекор »"; +$LANG["word_no"] = "Не"; +$LANG["word_none"] = "Ниту едно"; +$LANG["word_notes"] = "Белешки"; +$LANG["word_notification"] = "Известување"; +$LANG["word_number"] = "Број"; +$LANG["word_off"] = "Исклучен"; +$LANG["word_offline"] = "Надвор од мрежа"; +$LANG["word_okay"] = "Океј"; +$LANG["word_on"] = "Вклучено"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Оператор"; +$LANG["word_options"] = "Опции"; +$LANG["word_orange"] = "Портокал"; +$LANG["word_order"] = "Редослед"; +$LANG["word_other"] = "Друго"; +$LANG["word_other_c"] = "Друго:"; +$LANG["word_page"] = "Страница"; +$LANG["word_page_c"] = "Страница:"; +$LANG["word_pass"] = "Пас"; +$LANG["word_password"] = "Лозинка"; +$LANG["word_password_c"] = "Лозинка:"; +$LANG["word_pending"] = "Во тек"; +$LANG["word_permissions"] = "Дозволи"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Претходна"; +$LANG["word_private"] = "Приватни"; +$LANG["word_public"] = "Јавен"; +$LANG["word_purple"] = "Виолетова"; +$LANG["word_recipient"] = "Примател"; +$LANG["word_recipient_sp"] = "Примач (и)"; +$LANG["word_red"] = "Црвениот"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Отстранува"; +$LANG["word_remove_uc_leftarrow"] = "«REMOVE"; +$LANG["word_reply_to"] = "Одговор-да"; +$LANG["word_reply_to_c"] = "Одговор на:"; +$LANG["word_required"] = "Потребни"; +$LANG["word_reset"] = "Ресетирај"; +$LANG["word_resolved"] = "Решени"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "ред"; +$LANG["word_search"] = "Пребарување"; +$LANG["word_searchable"] = "Пребарување"; +$LANG["word_select"] = "Изберете"; +$LANG["word_setting"] = "Нагодување"; +$LANG["word_settings"] = "Подесувања"; +$LANG["word_show"] = "Покажува"; +$LANG["word_size"] = "Големина на"; +$LANG["word_skipped"] = "Прескокнаа"; +$LANG["word_small"] = "Мали"; +$LANG["word_solution"] = "Решение"; +$LANG["word_sortable"] = "Сортирања"; +$LANG["word_start"] = "Почеток"; +$LANG["word_status"] = "Статус"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Предмет"; +$LANG["word_subject_c"] = "Предмет"; +$LANG["word_submenu"] = "Подменито"; +$LANG["word_submission"] = "Поднесување"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "Систем"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Батерии"; +$LANG["word_tabs_sp"] = "Јазичето (и)"; +$LANG["word_test"] = "Тест"; +$LANG["word_text"] = "Текст"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "TextBox"; +$LANG["word_theme"] = "Тема"; +$LANG["word_themes"] = "Теми"; +$LANG["word_time"] = "Време"; +$LANG["word_tiny"] = "Шпрт"; +$LANG["word_tips"] = "Совети"; +$LANG["word_today"] = "Денес"; +$LANG["word_truncate_q"] = "Скрати?"; +$LANG["word_uninstall"] = "Избриши"; +$LANG["word_unknown"] = "Непознат"; +$LANG["word_update"] = "Ажурирање"; +$LANG["word_upgrade"] = "Надградба"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Корисник"; +$LANG["word_username"] = "Корисничко име"; +$LANG["word_username_c"] = "Корисничко име:"; +$LANG["word_validation"] = "Валидација"; +$LANG["word_value"] = "Вредност"; +$LANG["word_value_sp"] = "Вредност (и)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Потврди"; +$LANG["word_version"] = "Version"; +$LANG["word_vertical"] = "Вертикална"; +$LANG["word_view"] = "Изглед"; +$LANG["word_views"] = "Прегледи"; +$LANG["word_warning"] = "Предупредување!"; +$LANG["word_warning_c"] = "Предупредување:"; +$LANG["word_web"] = "Веб"; +$LANG["word_welcome"] = "Добредојде!"; +$LANG["word_width_c"] = "ширина:"; +$LANG["word_words"] = "Зборови"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Жолта"; +$LANG["word_yes"] = "Да"; \ No newline at end of file diff --git a/global/lang/ms.php b/global/lang/ms.php new file mode 100644 index 00000000..c3bf5108 --- /dev/null +++ b/global/lang/ms.php @@ -0,0 +1,1219 @@ +Amaran! Anda telah memilih {\$num_selected_on_page} pengajuan pada laman ini dan {\$num_selected_on_other_pages} pada laman lain. Sila pilih salah satu daripada pilihan berikut:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Amaran! Anda belum memilih submissions apapun tentang laman ini, tapi anda telah memilih {\$num_selected_on_other_pages} pada laman lain. Sahkan bahawa anda mahu menghapuskan kiriman ini.
    "; +$LANG["confirm_delete_view"] = "Adakah anda pasti hendak memadam ini View?"; +$LANG["confirm_refresh_page"] = "Adakah anda pasti anda mahu refresh halaman? Ini akan kehilangan apa-apa perubahan yang anda buat."; +$LANG["confirm_save_change_before_redirect"] = "Satu atau lebih bidang telah dikemaskini. Adakah anda ingin menyimpan perubahan anda sebelum mengubah hala?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Adakah anda pasti ingin ke Smart Isilah nama kolom database? Ini akan menghapuskan nilai-nilai yang ada."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Pilihan ini secara automatik menghasilkan nama-nama lajur pangkalan data berdasarkan bidang Teks Paparan, jadi kandungan jadual pangkalan data adalah lebih mudah untuk membaca."; +$LANG["confirm_smart_fill_display_names"] = "Adakah anda pasti ingin ke Smart Isi nama Display? Ini akan menghapuskan nilai-nilai yang ada."; +$LANG["confirm_ungroup_option_list"] = "Adakah anda pasti anda mahu ungroup ini senarai pilihan? Semua pilihan akan tergumpal ke dalam senarai tunggal, ungrouped."; +$LANG["confirm_uninstall_module"] = "Adakah anda pasti hendak memadam modul ini? Semua modul data akan hilang."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Kam"; +$LANG["date_Friday"] = "Jumaat"; +$LANG["date_Mon"] = "Thu"; +$LANG["date_Monday"] = "Isnin"; +$LANG["date_PM"] = "AM"; +$LANG["date_Sat"] = "Thu"; +$LANG["date_Saturday"] = "Sabtu"; +$LANG["date_Sun"] = "Matahari"; +$LANG["date_Sunday"] = "Minggu"; +$LANG["date_Thu"] = "Mon"; +$LANG["date_Thursday"] = "Rabu"; +$LANG["date_Tue"] = "Thu"; +$LANG["date_Tuesday"] = "Selasa"; +$LANG["date_Wed"] = "Thu"; +$LANG["date_Wednesday"] = "Rabu"; +$LANG["date_am"] = "pm"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "Ogos"; +$LANG["date_month_December"] = "Disember"; +$LANG["date_month_February"] = "Februari"; +$LANG["date_month_January"] = "Januari"; +$LANG["date_month_July"] = "Julai"; +$LANG["date_month_June"] = "Jun"; +$LANG["date_month_March"] = "Mac"; +$LANG["date_month_May"] = "Boleh"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Oktober"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "April"; +$LANG["date_month_short_Aug"] = "Ogos"; +$LANG["date_month_short_Dec"] = "Disember"; +$LANG["date_month_short_Feb"] = "Februari"; +$LANG["date_month_short_Jan"] = "Feb"; +$LANG["date_month_short_Jul"] = "Julai"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Feb"; +$LANG["date_month_short_May"] = "Boleh"; +$LANG["date_month_short_Nov"] = "November"; +$LANG["date_month_short_Oct"] = "Oktober"; +$LANG["date_month_short_Sep"] = "September"; +$LANG["date_pm"] = "am"; +$LANG["notify_account_deleted"] = "Akaun pengguna telah dipadam."; +$LANG["notify_account_updated"] = "Akaun anda telah berjaya dikemaskini."; +$LANG["notify_add_display_values"] = "Tambah Display Undian"; +$LANG["notify_admin_menu_updated"] = "Menu pentadbiran telah dikemaskini."; +$LANG["notify_admin_theme_overridden"] = "Administrator tema telah diganti secara manual."; +$LANG["notify_allow_url_fopen_not_set"] = "Maaf, ujian ini tidak dapat dijalankan di pelayan web anda. Hal ini memerlukan allow_url_fopen harus di set ke 1 di file php.ini anda. Tetapan ini membolehkan anda mengakses fail PHP melalui URL, yang diperlukan untuk melaksanakan ujian ini. Anda boleh menguji secara manual dengan meng-upload file ke folder itu melalui FTP, kemudian cuba untuk mengaksesnya di URL yang anda telah disediakan."; +$LANG["notify_change_temp_password"] = "Anda hanya log masuk dengan kata laluan sementara. Anda perlu menetapkan semula kata laluan anda sekarang!"; +$LANG["notify_click_to_edit_new_submission"] = "Klik di sini untuk mengedit penyerahan baru."; +$LANG["notify_client_account_menus_updated"] = "Akaun klien (s) telah dikemaskini ke {\$menu_name} menu. Sekarang anda boleh menghapuskan menu yang sebelumnya dikaitkan dengan akaun (s)."; +$LANG["notify_client_account_not_updated"] = "Akaun pelanggan tidak dapat dikemaskini."; +$LANG["notify_client_account_themes_updated"] = "Akaun klien (s) telah dikemaskini kepada {\$theme} tema. Sekarang anda boleh mematikan dahulu tema yang berkaitan dengan akaun (s)."; +$LANG["notify_client_account_updated"] = "Akaun klien telah berjaya dikemaskini."; +$LANG["notify_client_menu_deleted"] = "Menu pelanggan telah dihapuskan."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Menu telah dihapuskan, tapi akaun pelanggan seterusnya sekarang tidak lagi mempunyai menu! Anda perlu mengemaskini akaun berikut:"; +$LANG["notify_client_menu_updated"] = "Menu pelanggan telah dikemaskini."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Maaf, menu anda hanya cuba untuk menghapuskan yang sudah digunakan oleh pelanggan di bawah ini. Untuk memadam menu pertama anda perlu untuk menetapkan klien ke menu yang lain. Klik pada nama pelanggan untuk mengedit akaun individu, atau menetapkan semua akaun anda menu yang berbeza dengan menggunakan menu dropdown di bawah ini."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Maaf, salah satu tema yang baru saja anda sudah dinyahdayakan digunakan oleh akaun pelanggan seterusnya. Dalam rangka untuk mematikan tema pertama anda perlu untuk menetapkan setiap pelanggan untuk tema lain. Klik pada nama pelanggan untuk mengedit akaun individu, atau menetapkan semua akaun kepada satu tema menggunakan menu dropdown di bawah ini."; +$LANG["notify_edit_email_fields_link"] = "Klik di sini untuk menentukan medan borang bidang e-mel, jadi anda boleh sasaran mereka dalam template e-mel anda."; +$LANG["notify_edit_field_new_field"] = "Ini adalah satu bidang yang baru . Anda akan perlu untuk mengemaskini laman utama sebelum dapat mengedit bidang ini sepenuhnya."; +$LANG["notify_edit_option_list_after_save"] = "Anda mesti memilih Senarai Pilihan dan kemudian Simpan Perubahan sebelum dapat mengedit."; +$LANG["notify_email_field_config_deleted"] = "Konfigurasi emel yang telah dihapuskan."; +$LANG["notify_email_fields_not_updated"] = "Maaf, kami tidak dapat mengemaskini bidang email."; +$LANG["notify_email_fields_updated"] = "Bidang email yang telah dikemaskini."; +$LANG["notify_email_not_sent"] = "Maaf, email tidak boleh dihantar. Sila hubungi penyelaras di alamat di bawah ini."; +$LANG["notify_email_not_sent_c"] = "Maaf, e-mel tidak dapat dihantar:"; +$LANG["notify_email_sent"] = "Email (s) telah dihantar."; +$LANG["notify_email_template_deleted"] = "Template email yang telah dihapuskan."; +$LANG["notify_email_template_updated"] = "Template email yang telah dikemaskini."; +$LANG["notify_enabled_module_list_updated"] = "Senarai dihidupkan modul telah dikemaskini."; +$LANG["notify_error_saving_fields"] = "Terdapat ralat menyimpan ladang."; +$LANG["notify_field_changes_saved"] = "Perubahan kepada bidang (s) anda telah disimpan."; +$LANG["notify_field_options_smart_filled"] = "Pilihan bidang anda telah Smart diisi."; +$LANG["notify_field_selected"] = "Padang telah dipilih. Klik di sini untuk kembali ke senarai bidang utama."; +$LANG["notify_field_updated"] = "Bidang ini telah dikemaskini."; +$LANG["notify_file_not_uploaded"] = "File tidak bisa upload."; +$LANG["notify_file_uploaded"] = "Gambar tersebut berjaya diupload."; +$LANG["notify_filters_not_updated"] = "Ada kesalahan saat mengemas ketaatan pelanggan ini penapis."; +$LANG["notify_filters_updated"] = "Penapis penyerahan telah dikemaskini untuk klien ini."; +$LANG["notify_folder_correct_permissions"] = "Folder ini memiliki perizinan yang benar."; +$LANG["notify_folder_url_match"] = "Folder dan URL tampaknya benar berpadanan."; +$LANG["notify_folder_url_no_access"] = "Ujian ini tidak dapat dilakukan kerana PHP tidak dapat mengakses URL tersebut. Hal ini biasanya disebabkan oleh URL yang dilindungi dengan password. Htaccess fail."; +$LANG["notify_folder_url_no_match"] = "Folder-URL ini kombinasi tidak muncul untuk menjadi sebuah perlawanan."; +$LANG["notify_folder_url_unknown_error"] = "Terjadi kesalahan yang tidak diketahui. Anda boleh menguji secara manual dengan meng-upload file ke folder itu melalui FTP, kemudian cuba untuk mengaksesnya di URL yang anda telah disediakan."; +$LANG["notify_form_access_type_email_info"] = "Borang ini mempunyai jenis akses pentadbir, jadi tiada pelanggan mempunyai akses kepada maklumat itu dan tidak disenaraikan di bawah jatuh."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Maaf, bentuk dengan ID tersebut tidak ada."; +$LANG["notify_form_field_not_added"] = "Bidang bentuk '{\$fieldname}' tidak boleh ditambah."; +$LANG["notify_form_field_options_updated"] = "Bentuk pilihan gelanggang telah dikemaskini."; +$LANG["notify_form_field_removed"] = "Bidang Bentuk berjaya dihapuskan."; +$LANG["notify_form_fields_removed"] = "Kolom isian telah berjaya dihapuskan."; +$LANG["notify_form_not_updated_notify_admin"] = "Borang anda tidak dapat dikemaskini. Sila hubungi pentadbir laman untuk melaporkan masalah ini."; +$LANG["notify_form_settings_updated"] = "Tetapan borang anda telah berjaya diupdate."; +$LANG["notify_form_submission_updated"] = "Pengiriman data pada form telah dikemaskini."; +$LANG["notify_form_tabs_updated"] = "Tab telah dikemaskini."; +$LANG["notify_form_updated"] = "Bentuk telah berjaya dikemaskini."; +$LANG["notify_form_views_updated"] = "Views borang telah dikemaskini."; +$LANG["notify_install_invalid_db_info"] = "Maaf, kami tidak dapat melakukan koneksi ke database dengan menggunakan maklumat yang disediakan. Mesej kesalahan database semula adalah: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Borang anda telah dibuka! Anda boleh mengkonfigurasi borang anda melalui tab ini."; +$LANG["notify_invalid_account_information_in_sessions"] = "Maklumat akaun yang disimpan dalam sesi tidak sah. Sila log in lagi di bawah ini."; +$LANG["notify_invalid_license_key"] = "Maaf, yang tidak kelihatan menjadi kunci lesen yang sah. Sila cuba memasukkannya sekali lagi."; +$LANG["notify_invalid_permissions"] = "Anda tidak memiliki izin untuk mengakses halaman ini. Anda telah log out."; +$LANG["notify_invalid_search_dates"] = "Sila gunakan datepicker masukkan tarikh yang sah atau tarikh."; +$LANG["notify_invalid_upload_folder"] = "Folder upload entah sah atau tidak boleh ditulis."; +$LANG["notify_lang_list_updated"] = "UI yang terdapat dalam senarai bahasa yang telah dikemaskini."; +$LANG["notify_login_info_emailed"] = "Maklumat log masuk anda telah diemail kepada anda."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, modul ini telah dipasang!"; +$LANG["notify_module_installed"] = "Modul tersebut telah dipasang. Klik di sini untuk memilih modul."; +$LANG["notify_module_list_updated"] = "Senarai modul telah dikemaskini."; +$LANG["notify_module_uninstalled"] = "Modul telah dihapuskan."; +$LANG["notify_module_updated"] = "Modul {\$module} telah dikemaskini untuk {\$version}. Klik di sini untuk memilih modul ."; +$LANG["notify_multi_field_selected"] = "Padang telah dipilih. Klik di sini untuk melihat dan mengedit pilihan gelanggang."; +$LANG["notify_multi_field_updated"] = "Bidang ini telah dikemaskini. Anda akan dapat menetapkan opsyen gelanggang selepas membuat borang."; +$LANG["notify_multiple_fields_found"] = "Beberapa unsur yang ditemui dengan nama field ({\$field_name}). Hal ini boleh terjadi jika laman anda mengandungi lebih daripada satu bentuk atau jika anda secara tidak sengaja nama salah satu bentuk sama lain. Silakan memilih salah satu yang anda inginkan daripada senarai di bawah ini."; +$LANG["notify_new_default_view_created"] = "View default yang baru, yang mengandungi semua bidang borang telah dibuka."; +$LANG["notify_new_submission_created"] = "Penyerahan telah dibuka. Anda boleh mengedit di bawah."; +$LANG["notify_no_account_id_in_sessions"] = "Tidak ada account user ID yang ditemui dalam sesi. Sila log in lagi di bawah ini."; +$LANG["notify_no_api_installed"] = "Anda tidak mempunyai API dipasang"; +$LANG["notify_no_client_permissions"] = "Tidak ada tatacara yang sedia untuk mengedit."; +$LANG["notify_no_email_template_selected"] = "Sila pilih template email."; +$LANG["notify_no_emails_defined"] = "Tidak ada email yang telah ditetapkan untuk borang ini. Untuk menambah yang baru, klik butang di bawah ini."; +$LANG["notify_no_field_settings"] = "Medan jenis ini tidak mengandungi apa-apa tetapan tambahan."; +$LANG["notify_no_fields_in_tab"] = "Tab ini tidak mengandungi bidang."; +$LANG["notify_no_option_lists"] = "Terdapat tiada pilihan menyenaraikan ditakrifkan. Klik butang di bawah untuk mencipta yang baru."; +$LANG["notify_no_test_submission"] = "Borang Alatan belum menerima pengajuan uji belum berjaya."; +$LANG["notify_no_user_email_fields_configured"] = "Nota: jika anda ingin menghantar email kepada alamat email yang dimasukkan dalam bentuk, pertama anda perlu mengkonfigurasikan bentuk bidang email."; +$LANG["notify_no_views"] = "Borang anda tidak mempunyai apa-apa Views ditubuhkan! Anda akan memerlukan sekurang-kurangnya satu View untuk menguruskan data borang anda."; +$LANG["notify_no_views_assigned_to_client_form"] = "Nampaknya akaun pengguna anda belum ditugaskan Views bentuk apapun, sehingga anda tidak akan dapat melihat data apapun. Sila hubungi pentadbir untuk bantuan lebih lanjut."; +$LANG["notify_no_views_defined"] = "Anda tidak mempunyai apa-apa Views ditakrifkan. Anda tidak akan dapat melihat penyerahan borang ini melainkan jika sekurang-kurangnya satu View diwujudkan. Klik butang di bawah untuk mencipta View lalai."; +$LANG["notify_option_list_deleted"] = "Senarai opsyen telah dipadam."; +$LANG["notify_option_list_updated"] = "Senarai opsyen telah dikemaskini."; +$LANG["notify_public_form_omit_list_updated"] = "Senarai pelanggan untuk menghilangkan borang ini telah dikemaskini."; +$LANG["notify_public_view_omit_list_updated"] = "Senarai menghilangkan pelanggan ini Lihat telah dikemaskini."; +$LANG["notify_required_admin_pages"] = "Laman berikut diperlukan di menu pentadbir: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Maaf, tidak ada aktiviti selama beberapa waktu sehingga kami harus log anda. Sila log in lagi di bawah ini."; +$LANG["notify_setup_options_updated"] = "Pilihan setup telah dikemaskini."; +$LANG["notify_smart_fill_field_not_found"] = "Kami tidak dapat mencari gelanggang dengan nama ini ({\$field_name}) dalam bentuk (s) ditentukan. Anda boleh secara manual menetapkan jenis bidang di bawah ini, atau klik butang Skip untuk mengedit bidang ini nanti."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "File (s) telah berjaya diupload. Cuba Isi mengklik butang Smart untuk mencuba lagi. Jika langkah ini gagal, anda akan perlu untuk melewatkan langkah ini dan mengkonfigurasikan medan borang manally kemudian."; +$LANG["notify_smart_fill_submitted"] = "Bentuk sudah diserahkan. Bergantung pada saiz bentuk dan jumlah pilihan gelanggang, hal ini mungkin memakan masa."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Maaf, satu atau lebih fail yang anda masukkan tidak bisa upload. Anda akan perlu untuk melewatkan langkah ini dan mengkonfigurasikan ladang secara manual."; +$LANG["notify_submission_and_files_deleted"] = "Penyerahan dan setiap file (s) yang berkaitan dengan itu berjaya dihapuskan."; +$LANG["notify_submission_copied"] = "Penyerahan telah disalin."; +$LANG["notify_submission_copied_edit"] = "Penyerahan telah disalin. Anda boleh mengeditnya di bawah."; +$LANG["notify_submission_deleted"] = "Penyerahan telah dihapuskan dengan sukses."; +$LANG["notify_submission_deleted_with_problems"] = "Penyerahan telah dihapuskan, tetapi masalah-masalah berikut ditemui saat mencoba untuk memadam fail seterusnya (s):"; +$LANG["notify_submission_id_not_found"] = "Penyerahan ID tidak dijumpai."; +$LANG["notify_submission_not_updated"] = "Penyerahan tidak dapat dikemaskini."; +$LANG["notify_submissions_and_files_deleted"] = "The pengajuan dan setiap file (s) yang berkaitan dengan mereka berjaya dihapuskan."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} penyerahan telah disalin."; +$LANG["notify_submissions_deleted"] = "Para pengajuan itu berjaya dihapuskan."; +$LANG["notify_submissions_deleted_with_problems"] = "Para pengajuan itu dihapuskan, tetapi masalah-masalah berikut ditemui saat mencoba untuk memadam fail seterusnya (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Email percubaan anda tidak boleh dihantar."; +$LANG["notify_theme_cache_folder_not_writable"] = "Tema ini cache folder tidak boleh ditulis. Untuk mengaktifkan tema ini, para {\$folder} folder penuh harus mempunyai hak akses baca-tulis."; +$LANG["notify_theme_list_updated"] = "Senarai tema telah dikemaskini."; +$LANG["notify_themes_settings_updated"] = "Setting tema anda telah dikemaskini."; +$LANG["notify_view_deleted"] = "Lihat telah dihapuskan."; +$LANG["notify_view_group_deleted"] = "Group Lihat telah dipadam."; +$LANG["notify_view_missing_columns"] = "Oops! Maaf, Lihat ini belum sepenuhnya ditubuhkan lagi."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klik di sini untuk menentukan bidang yang perlu muncul sebagai lajur pada halaman ini."; +$LANG["notify_view_updated"] = "Lihat telah dikemaskini."; +$LANG["notify_your_email_sent"] = "Email anda telah berjaya dihantar."; +$LANG["phrase_100_per_page"] = "100 per halaman"; +$LANG["phrase_10_per_page"] = "10 per halaman"; +$LANG["phrase_15_per_page"] = "15 halaman per"; +$LANG["phrase_1_direct"] = "1. Lompat"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 halaman per"; +$LANG["phrase_25_per_page"] = "25 per halaman"; +$LANG["phrase_2_code"] = "2. Kod"; +$LANG["phrase_2_columns"] = "2 Lajur"; +$LANG["phrase_2chars"] = "2 Aksara"; +$LANG["phrase_3_columns"] = "3 Lajur"; +$LANG["phrase_4_columns"] = "4 Lajur"; +$LANG["phrase_50_per_page"] = "50 per halaman"; +$LANG["phrase_accepting_submissions"] = "(menerima pengajuan)"; +$LANG["phrase_access_admin_account_c"] = "Anda boleh mengakses akaun pentadbiran anda di sini:"; +$LANG["phrase_access_type"] = "Jenis Akses"; +$LANG["phrase_account_info"] = "Maklumat Akaun"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Action Needed"; +$LANG["phrase_add_client"] = "Tambah Pelanggan"; +$LANG["phrase_add_client_menu"] = "Tambah Pelanggan Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Tambah tetapan lalai »"; +$LANG["phrase_add_field"] = "Tambah Field"; +$LANG["phrase_add_fields"] = "Tambah Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Tambah Medan (s) »"; +$LANG["phrase_add_form"] = "Tambah Borang"; +$LANG["phrase_add_form_external"] = "Tambah Borang - Luar"; +$LANG["phrase_add_form_internal"] = "Tambah Borang - Dalaman"; +$LANG["phrase_add_new_group_rightarrow"] = "Tambah Kumpulan Baru »"; +$LANG["phrase_add_num_rows"] = "Tambah {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Tambah Row »"; +$LANG["phrase_add_submission_button"] = "Tambah Butang Penyerahan"; +$LANG["phrase_add_view_rightarrow"] = "Tambah View »"; +$LANG["phrase_adding_multi_page_form"] = "Menambahkan halaman multi-borang dengan API"; +$LANG["phrase_adding_single_page_form"] = "Menambahkan satu laman borang dengan API"; +$LANG["phrase_admin_menu"] = "Administrator Menu"; +$LANG["phrase_admin_only"] = "Administrator Only"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Tetapan lanjutan »"; +$LANG["phrase_all_X_results_selected"] = "All {\$numresults} Keputusan Dipilih"; +$LANG["phrase_all_clients"] = "Semua pelanggan"; +$LANG["phrase_all_clients_except_c"] = "Semua klien kecuali:"; +$LANG["phrase_all_clients_have_access"] = "(semua pelanggan mempunyai akses)"; +$LANG["phrase_all_fields"] = "Semua bidang"; +$LANG["phrase_all_fields_displayed"] = "Semua medan dipaparkan"; +$LANG["phrase_all_statuses"] = "Semua Status"; +$LANG["phrase_all_submissions"] = "Semua permohonan"; +$LANG["phrase_allow_fields_edited"] = "Biarkan field yang akan diedit"; +$LANG["phrase_alphanumeric"] = "Abjad angka (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Sejarah"; +$LANG["phrase_apply_timezone_offset"] = "Sapukan Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Dirikan semua akaun pelanggan yang berdaftar untuk {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Dirikan semua akaun pelanggan yang berdaftar untuk {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Pada Akhir"; +$LANG["phrase_at_start"] = "Di Memulakan"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-mematikan akaun selepas # gagal cuba login"; +$LANG["phrase_auto_size"] = "Auto saiz"; +$LANG["phrase_available_clients"] = "Tersedia Pelanggan"; +$LANG["phrase_available_fields"] = "Bidang Available"; +$LANG["phrase_available_option_lists"] = "Opsyen Senarai Available"; +$LANG["phrase_available_swatches"] = "Sampel Available"; +$LANG["phrase_available_swatches_c"] = "Sampel Available:"; +$LANG["phrase_available_tabs"] = "Tabs Available"; +$LANG["phrase_available_views"] = "Tersedia Views"; +$LANG["phrase_awaiting_form_submission"] = "Form menunggu."; +$LANG["phrase_back_to_field_list"] = "«Kembali ke senarai bidang"; +$LANG["phrase_back_to_search_results"] = "kembali ke keputusan carian"; +$LANG["phrase_base_view_on"] = "View asas di ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Perubahan Maklumat Masuk"; +$LANG["phrase_characters_limit_p"] = "had aksara."; +$LANG["phrase_check_db_settings_try_again"] = "Sila semak tatacara database anda dan klik butang Teruskan lagi."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Semak URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Bersihkan"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Jelas menghilangkan List"; +$LANG["phrase_client_account_settings"] = "Tetapan Akaun Pelanggan"; +$LANG["phrase_client_field"] = "Pelanggan Field"; +$LANG["phrase_client_map_filters"] = "Peta Pelanggan Penapis »"; +$LANG["phrase_client_may_edit"] = "Pelanggan boleh mengedit"; +$LANG["phrase_client_menu"] = "Client Menu"; +$LANG["phrase_clients_can_access_form"] = "Pelanggan yang boleh mengakses borang"; +$LANG["phrase_clients_can_access_view"] = "Pelanggan yang boleh mengakses View"; +$LANG["phrase_clients_cannot_access_form"] = "Pelanggan yang tidak dapat mengakses borang"; +$LANG["phrase_clients_cannot_access_view"] = "Pelanggan yang tidak dapat mengakses View"; +$LANG["phrase_clients_may_edit"] = "Pelanggan boleh mengedit"; +$LANG["phrase_code_c"] = "Perhatian Code:"; +$LANG["phrase_code_markup_field"] = "Kod / Markup Field"; +$LANG["phrase_code_markup_type"] = "Jenis Kod / Markup"; +$LANG["phrase_codes_c"] = "Perhatian Codes:"; +$LANG["phrase_column_width"] = "Lebar Lajur"; +$LANG["phrase_company_name"] = "Nama Syarikat"; +$LANG["phrase_configure_form_email_fields"] = "Tatarajah Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Konfirmasi Folder-URL Match"; +$LANG["phrase_connect_rows"] = "Sambungkan baris"; +$LANG["phrase_copy_email_settings_from"] = "Salin Email Tetapan Dari ..."; +$LANG["phrase_copy_settings_from"] = "Salin Tetapan Dari ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Sejarah"; +$LANG["phrase_create_account"] = "Buat Akaun"; +$LANG["phrase_create_admin_account"] = "Buat Akaun Admin"; +$LANG["phrase_create_config_file"] = "Buat File Config"; +$LANG["phrase_create_database_tables"] = "Membuat Tabel Database"; +$LANG["phrase_create_default_view"] = "Buat Paparan Default"; +$LANG["phrase_create_file"] = "Membuat Gambar"; +$LANG["phrase_create_group"] = "Buat Group"; +$LANG["phrase_create_new_email"] = "Buat Email Baru"; +$LANG["phrase_create_new_menu"] = "Buat Menu"; +$LANG["phrase_create_new_option_list"] = "Buat Senarai Pilihan Baru"; +$LANG["phrase_create_new_option_list_group"] = "Buat kumpulan senarai baru pilihan"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Buat Senarai Pilihan Baru »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Buat Kumpulan Baru View"; +$LANG["phrase_custom_display_format"] = "Custom Paparan Format"; +$LANG["phrase_custom_recipient"] = "Custom Penerima"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Jenis Data"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Nama database"; +$LANG["phrase_database_password"] = "Database password"; +$LANG["phrase_database_settings"] = "Tetapan database"; +$LANG["phrase_database_setup"] = "Database Setup"; +$LANG["phrase_database_table_prefix"] = "Prefix jadual database"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Format Tarikh"; +$LANG["phrase_db_column"] = "DB Kolom"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Akaun Pelanggan default Tema"; +$LANG["phrase_default_date_field_search_value"] = "Default tarikh nilai medan carian"; +$LANG["phrase_default_language"] = "Default BAHASA"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default Sessions Masa tamat"; +$LANG["phrase_default_sort_order"] = "Default Sort Order"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Nilai lalai"; +$LANG["phrase_default_values"] = "Default nilai-nilai"; +$LANG["phrase_default_values_new_submissions"] = "Nilai lalai untuk Penyerahan Baru"; +$LANG["phrase_delete_field"] = "Padam Field"; +$LANG["phrase_delete_form"] = "Padam Borang"; +$LANG["phrase_delete_row"] = "Hapuskan Baris"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Menghapus fail yang berkaitan saat memadam penyerahan"; +$LANG["phrase_delete_view"] = "Padam View"; +$LANG["phrase_disconnect_rows"] = "Putuskan sambungan baris"; +$LANG["phrase_display_email"] = "Papar Email"; +$LANG["phrase_display_name"] = "Nama Display"; +$LANG["phrase_display_text"] = "Display Teks"; +$LANG["phrase_display_value"] = "Display Undian"; +$LANG["phrase_edit_admin_menu"] = "Edit Admin Menu"; +$LANG["phrase_edit_client"] = "Edit Pelanggan"; +$LANG["phrase_edit_client_menu"] = "Pelanggan Edit Menu"; +$LANG["phrase_edit_email_template"] = "Edit Template Email"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Edit Borang"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit bentuk jenis akses]"; +$LANG["phrase_edit_option_list"] = "Edit Senarai Pilihan"; +$LANG["phrase_edit_submission"] = "Edit Submission"; +$LANG["phrase_edit_submission_label"] = "Edit Label Penyerahan"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "Email Tetapan"; +$LANG["phrase_email_template"] = "Email template"; +$LANG["phrase_email_template_name"] = "Email nama template"; +$LANG["phrase_error_learn_more"] = "Belajar tentang kesalahan ini."; +$LANG["phrase_error_text_intro"] = "Please fix error seterusnya (s) dan kirimkan kembali:"; +$LANG["phrase_errors_learn_more"] = "Klik pada kod kesalahan untuk belajar lebih banyak."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Borang Luar"; +$LANG["phrase_external_form_info"] = "Borang Info Luar"; +$LANG["phrase_external_your_own_form"] = "Luar (bentuk anda sendiri)"; +$LANG["phrase_field_comments"] = "Bidang Comments"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Bidang Pilihan"; +$LANG["phrase_field_size"] = "Saiz gelanggang"; +$LANG["phrase_field_skipped"] = "Lapangan Dilangkau"; +$LANG["phrase_field_specific_settings"] = "Tetapan bidang-Khusus"; +$LANG["phrase_field_type"] = "Jenis Field"; +$LANG["phrase_field_type_no_validation"] = "Tiada peraturan pengesahan yang disediakan untuk jenis bidang ini."; +$LANG["phrase_field_types"] = "Jenis Field"; +$LANG["phrase_field_value"] = "Undian Field"; +$LANG["phrase_field_values_to_display_values"] = "Field Undian »Tayangan Undian"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Sentuhan"; +$LANG["phrase_finalize_form"] = "Menyelesaikan Borang"; +$LANG["phrase_first_name"] = "Nama Depan"; +$LANG["phrase_footer_text"] = "Footer Teks"; +$LANG["phrase_for_any_form_submission"] = "Untuk setiap penghantaran borang"; +$LANG["phrase_for_view_submissions"] = "Penyerahan hanya yang patut ke dalam View berikut (s)"; +$LANG["phrase_forgot_password"] = "Lupa Password anda?"; +$LANG["phrase_form_already_selected"] = "Borang yang sudah dipilih"; +$LANG["phrase_form_email_field_b_c"] = "[Email] Gelanggang borang:"; +$LANG["phrase_form_email_field_configuration"] = "Form Email Padang Tatarajah"; +$LANG["phrase_form_email_fields"] = "Email Form Fields"; +$LANG["phrase_form_field"] = "Borang Field"; +$LANG["phrase_form_field_contents"] = "Borang Kandungan Field"; +$LANG["phrase_form_field_name"] = "Borang Nama Field"; +$LANG["phrase_form_field_placeholders"] = "Borang ruang letak bidang"; +$LANG["phrase_form_fields"] = "Formulir Isian"; +$LANG["phrase_form_info"] = "Form Information"; +$LANG["phrase_form_info_2"] = "2. Form Information"; +$LANG["phrase_form_list"] = "Senarai Borang"; +$LANG["phrase_form_name"] = "Form Nama"; +$LANG["phrase_form_page"] = "Borang Page"; +$LANG["phrase_form_placeholders"] = "Borang placeholder"; +$LANG["phrase_form_submission"] = "Borang Submission"; +$LANG["phrase_form_submissions"] = "Form Submissions"; +$LANG["phrase_form_type"] = "Jenis Borang"; +$LANG["phrase_form_url"] = "Borang URL"; +$LANG["phrase_form_urls"] = "URL Borang"; +$LANG["phrase_forms_assigned_to_any_account"] = "Borang yang diberikan kepada mana-mana akaun"; +$LANG["phrase_forms_page_default_message"] = "Borang halaman lalai mesej"; +$LANG["phrase_ft_installation"] = "Borang Alatan Instalasi Script"; +$LANG["phrase_full_width"] = "Lebar Penuh"; +$LANG["phrase_getting_started"] = "memulakan"; +$LANG["phrase_global_placeholders"] = "Global placeholder"; +$LANG["phrase_group_name"] = "Nama Kumpulan"; +$LANG["phrase_group_options_q"] = "Pilihan Kumpulan?"; +$LANG["phrase_group_rows"] = "Kumpulan baris"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Warna Highlight"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Senarai Pilihan Import »"; +$LANG["phrase_input_length"] = "Length input"; +$LANG["phrase_installation_help"] = "Bantuan pemasangan"; +$LANG["phrase_internal_form"] = "Borang Dalaman"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Adakah ini satu bentuk multi-page?"; +$LANG["phrase_label_response_placeholders"] = "Label / Pemegang tempat Response"; +$LANG["phrase_large_300px"] = "Besar (300px)"; +$LANG["phrase_large_400px"] = "Besar (400px)"; +$LANG["phrase_last_7_days"] = "7 hari yang lalu"; +$LANG["phrase_last_logged_in"] = "Last Logged In"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Last modified date"; +$LANG["phrase_last_name"] = "Nama belakang"; +$LANG["phrase_letters_only"] = "Hanya huruf"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Hadkan kandungan email untuk bidang di Lihat"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Masuk"; +$LANG["phrase_login_as_user"] = "Log masuk sebagai pengguna ini"; +$LANG["phrase_login_info"] = "Masuk Maklumat"; +$LANG["phrase_login_page"] = "Masuk Page"; +$LANG["phrase_login_panel_c"] = "Masuk Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Masuk Panel"; +$LANG["phrase_login_password"] = "Masuk Password"; +$LANG["phrase_login_username"] = "Masuk pengguna"; +$LANG["phrase_logo_link_url"] = "URL Link imej"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Tetapan Utama"; +$LANG["phrase_manage_client"] = "Urus Pelanggan"; +$LANG["phrase_manage_client_omit_list"] = "Menguruskan Pelanggan Mengeluarkan Senarai"; +$LANG["phrase_max_file_size"] = "Saiz fail max"; +$LANG["phrase_max_length"] = "Length Max"; +$LANG["phrase_max_length_words_chars"] = "- Panjang Max (perkataan / chars)"; +$LANG["phrase_may_add_submissions"] = "Mungkin menambah Penyerahan"; +$LANG["phrase_may_copy_submissions"] = "Boleh menyalin penyerahan"; +$LANG["phrase_may_delete_submissions"] = "Boleh memadam Penyerahan"; +$LANG["phrase_medium_150px"] = "Sederhana (150px)"; +$LANG["phrase_medium_200px"] = "Sederhana (200px)"; +$LANG["phrase_menu_name"] = "Menu Nama"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "Minimal panjang password"; +$LANG["phrase_module_description"] = "Modul Penerangan"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Bulan setakat ini"; +$LANG["phrase_multi_select"] = "Multi-pilih"; +$LANG["phrase_multi_select_dropdown"] = "Multi-pilih dropdown"; +$LANG["phrase_multiple_fields_found"] = "Multiple Fields Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nama Nama / Terkini"; +$LANG["phrase_new_blank_email"] = "New Blank Email"; +$LANG["phrase_new_blank_option_list"] = "Senarai Pilihan Blank Baru"; +$LANG["phrase_new_blank_view"] = "New Blank View"; +$LANG["phrase_new_ft_installation"] = "Borang baru Alatan Instalasi"; +$LANG["phrase_new_option_list"] = "Opsyen Senarai Baru"; +$LANG["phrase_new_password"] = "Password Teratas"; +$LANG["phrase_new_password_reenter"] = "New Password (masukkan semula)"; +$LANG["phrase_new_view"] = "Teratas Lihat"; +$LANG["phrase_new_view_all_fields"] = "New View - Semua medan"; +$LANG["phrase_next_client"] = "klien di sebelah »"; +$LANG["phrase_next_field"] = "gelanggang selanjutnya »"; +$LANG["phrase_next_form"] = "borang seterusnya »"; +$LANG["phrase_next_view"] = "next Lihat »"; +$LANG["phrase_no_clients"] = "Tidak klien"; +$LANG["phrase_no_limit"] = "Had Tiada"; +$LANG["phrase_no_offset"] = "Tidak offset"; +$LANG["phrase_no_option_lists_available"] = "Tiada opsyen menyenaraikan disediakan."; +$LANG["phrase_no_views"] = "Tidak Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Tiada Views menggunakan penapis ditentukan)"; +$LANG["phrase_none_not_recommended"] = "Tidak ada (tidak disarankan)"; +$LANG["phrase_not_assigned_to_option_list"] = "Bidang ini tidak diberikan kepada Senarai Pilihan."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "TIDAK Equal"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "TIDAK Seperti"; +$LANG["phrase_not_visible_to_client"] = "(tidak terlihat oleh pelanggan)"; +$LANG["phrase_num_clients_per_page"] = "Pelanggan Num Per Laman"; +$LANG["phrase_num_emails_per_page"] = "Email Num Per Laman"; +$LANG["phrase_num_fields"] = "Bilangan Bidang"; +$LANG["phrase_num_forms_per_page"] = "Borang Num Per Laman"; +$LANG["phrase_num_menus_per_page"] = "Menu Num Per Laman"; +$LANG["phrase_num_modules_per_page"] = "Modul Num Per Laman"; +$LANG["phrase_num_option_lists_per_page"] = "Opsyen Senarai Bilangan Per Page"; +$LANG["phrase_num_options"] = "Num Pilihan"; +$LANG["phrase_num_rows"] = "Bilangan Baris"; +$LANG["phrase_numbers_only"] = "Hanya nombor"; +$LANG["phrase_often_localhost"] = "(sering "localhost")"; +$LANG["phrase_on_form_submission"] = "Pada form"; +$LANG["phrase_one_char_number"] = "Setidaknya satu watak adalah nombor (0-9)"; +$LANG["phrase_one_char_upper"] = "Setidaknya satu watak adalah huruf besar"; +$LANG["phrase_one_special_char"] = "Sekurang-kurangnya satu daripada {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(hanya pelanggan tertentu mempunyai akses)"; +$LANG["phrase_open_form_in_dialog"] = "Bentuk terbuka dalam tetingkap dialog"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Buka borang ini dalam tetingkap baru tab /"; +$LANG["phrase_option_list"] = "Senarai pilihan"; +$LANG["phrase_option_list_name"] = "Nama Pilihan Senarai"; +$LANG["phrase_option_list_or_contents"] = "Senarai pilihan / Kandungan"; +$LANG["phrase_option_lists"] = "Opsyen Senarai"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Laman Tajuk"; +$LANG["phrase_pass_on"] = "Menyampaikan"; +$LANG["phrase_password_min"] = "Ini harus setidaknya {\$length} karakter."; +$LANG["phrase_password_one_number"] = "Ini harus mengandungi sekurang-kurangnya satu nombor (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Ini harus mengandungi sekurang-kurangnya satu huruf besar."; +$LANG["phrase_password_requirements_c"] = "Password keperluan:"; +$LANG["phrase_password_reset"] = "Reset Password"; +$LANG["phrase_password_special_char"] = "Ini harus mengandungi sekurang-kurangnya satu daripada huruf yang berikut: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Keizinan / Tetapan Lain-lain"; +$LANG["phrase_permitted_file_types"] = "Jenis fail yang dibenarkan"; +$LANG["phrase_phone_number"] = "Nombor Telefon"; +$LANG["phrase_phone_number_format"] = "Nombor Format Telefon"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max upload file dibenarkan saiz:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Sejarah PHP"; +$LANG["phrase_please_confirm"] = "Sila Sahkan"; +$LANG["phrase_please_enter_license_key"] = "Sila masukkan kunci lesen anda"; +$LANG["phrase_please_select"] = "Sila Pilih"; +$LANG["phrase_please_select_form"] = "Sila pilih bentuk"; +$LANG["phrase_prev_client"] = "«Prev pelanggan"; +$LANG["phrase_prev_form"] = "«Prev borang"; +$LANG["phrase_prevent_password_reuse"] = "Mencegah penggunaan semula password diubah #"; +$LANG["phrase_previous_field"] = "«Sebelumnya gelanggang"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "«Prev View"; +$LANG["phrase_program_name"] = "Nama Program"; +$LANG["phrase_public_form_omit_list"] = "Borang awam menghilangkan List"; +$LANG["phrase_public_view_omit_list"] = "Umum Lihat menghilangkan List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Terdapat masalah dengan query berikut:"; +$LANG["phrase_radio_buttons"] = "Butang radio"; +$LANG["phrase_random_form_submission"] = "Random form"; +$LANG["phrase_re_enter_password"] = "Masukkan semula Password"; +$LANG["phrase_recipient_type"] = "Jenis penerima"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Refresh Pendaftaran"; +$LANG["phrase_refresh_module_list"] = "Refresh Modul List"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Refresh Theme List"; +$LANG["phrase_register_new_email"] = "Senarai Email Baru"; +$LANG["phrase_remaining_characters"] = "baki aksara"; +$LANG["phrase_remaining_words"] = "baki perkataan"; +$LANG["phrase_remove_tabs"] = "Padam Tab"; +$LANG["phrase_required_password_chars"] = "Diperlukan kata laluan watak"; +$LANG["phrase_resend_test_submission"] = "Resend Test Submission"; +$LANG["phrase_return_form_list"] = "Kembali ke Form Pendaftaran"; +$LANG["phrase_row_selected"] = "{\$num_rows} baris terpilih"; +$LANG["phrase_rows_selected"] = "{\$num_rows} baris terpilih"; +$LANG["phrase_sample_data"] = "Contoh Data"; +$LANG["phrase_save_changes"] = "Simpan Perubahan"; +$LANG["phrase_search_keyword"] = "Kata kunci carian"; +$LANG["phrase_security_settings"] = "Tetapan Keselamatan"; +$LANG["phrase_select_all"] = "Pilih Semua"; +$LANG["phrase_select_all_X_results"] = "Pilih Semua (\$ numresults) Keputusan"; +$LANG["phrase_select_all_on_page"] = "Pilih Semua Aktif Page"; +$LANG["phrase_select_date"] = "Pilih tarikh"; +$LANG["phrase_select_field"] = "Pilih Bidang"; +$LANG["phrase_select_swatch"] = "Pilih carikan"; +$LANG["phrase_selected_clients"] = "Dipilih Pelanggan"; +$LANG["phrase_selected_views"] = "Dipilih Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Send Uji Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Masa tamat"; +$LANG["phrase_setting_value"] = "Setting Undian"; +$LANG["phrase_setup_options"] = "Setup Pilihan"; +$LANG["phrase_show_all"] = "Papar Semua"; +$LANG["phrase_show_form"] = "Show Borang"; +$LANG["phrase_size_large"] = "Besar (TEXT)"; +$LANG["phrase_size_medium"] = "Sedang (<= 256 chars)"; +$LANG["phrase_size_small"] = "Kecil (<= 20 chars)"; +$LANG["phrase_size_tiny"] = "Kecil (<= 5 chars)"; +$LANG["phrase_size_very_large"] = "Sangat Besar (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Skip Langkah"; +$LANG["phrase_small_100px"] = "Kecil (100px)"; +$LANG["phrase_small_80px"] = "Kecil (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Isi medan daripada:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Isi User Dokumentasi »"; +$LANG["phrase_sort_as"] = "Susun Sebagai"; +$LANG["phrase_special_fields"] = "Medan Khas"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Standard Filter »"; +$LANG["phrase_step_1"] = "Langkah 1"; +$LANG["phrase_step_2"] = "Langkah 2"; +$LANG["phrase_step_3"] = "Langkah 3"; +$LANG["phrase_step_4"] = "Langkah 4"; +$LANG["phrase_step_5"] = "Langkah 5"; +$LANG["phrase_step_6"] = "Langkah 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tags melalui penghantaran form"; +$LANG["phrase_subject_line"] = "Subject Line"; +$LANG["phrase_submission_date"] = "Tarikh penyerahan"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Submission dibuat: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Jenis Submission"; +$LANG["phrase_submissions_per_page"] = "Submissions per Laman"; +$LANG["phrase_system_check"] = "Semak sistem"; +$LANG["phrase_system_fields_no_validation"] = "Anda tidak boleh menambah pengesahan kepada bidang sistem."; +$LANG["phrase_system_time_offset"] = "Sistem Sisa Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Folder Permissions"; +$LANG["phrase_test_submission"] = "Test Submission"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Received"; +$LANG["phrase_text_and_html"] = "Teks & HTML"; +$LANG["phrase_text_email"] = "Teks Email"; +$LANG["phrase_text_template"] = "Teks Template"; +$LANG["phrase_the_previous_month"] = "Bulan sebelumnya"; +$LANG["phrase_theme_description"] = "Description Tema"; +$LANG["phrase_theme_info"] = "Tema Maklumat"; +$LANG["phrase_tiny_30px"] = "Kecil (30px)"; +$LANG["phrase_tiny_50px"] = "Kecil (50px)"; +$LANG["phrase_total_results_c"] = "Jumlah Keputusan:"; +$LANG["phrase_type_c"] = "Perhatian Type:"; +$LANG["phrase_unselect_all"] = "Hapuskan tanda Semua"; +$LANG["phrase_update_accounts"] = "Update Akaun"; +$LANG["phrase_update_email_template"] = "Update Template Email"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Update"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Gambar Gambar"; +$LANG["phrase_upload_files"] = "Gambar Gambar"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Jalur folder upload"; +$LANG["phrase_upload_folder_url"] = "Folder upload URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Gunakan nilai default?"; +$LANG["phrase_used_by_num_form_fields"] = "Digunakan oleh # Formulir Isian"; +$LANG["phrase_uses_swatches"] = "Menggunakan sampel"; +$LANG["phrase_valid_email"] = "E-mel Sah"; +$LANG["phrase_validation_error"] = "Ralat Pengesahan"; +$LANG["phrase_validation_rule"] = "Peraturan Pengesahan"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "View Group"; +$LANG["phrase_view_id"] = "View ID"; +$LANG["phrase_view_name"] = "View Nama"; +$LANG["phrase_view_placeholders"] = "View Pemegang tempat"; +$LANG["phrase_view_submissions"] = "View Submissions"; +$LANG["phrase_view_uploaded_files"] = "view-upload file"; +$LANG["phrase_viewing_range"] = "[melihat {\$startnum} kepada {\$endnum}]"; +$LANG["phrase_when_sent"] = "Ketika dihantar"; +$LANG["phrase_when_submission_is_deleted"] = "Ketika ketundukan dihapuskan"; +$LANG["phrase_when_submission_is_edited"] = "Ketika ketundukan edited"; +$LANG["phrase_who_can_access"] = "Siapa yang bisa akses?"; +$LANG["phrase_word_limit_p"] = "had perkataan."; +$LANG["phrase_year_to_date"] = "Tahun ke tarikh"; +$LANG["phrase_yes_for_all_views"] = "Ya, untuk semua Views"; +$LANG["phrase_yes_for_specific_views"] = "Ya, untuk spesifik Views"; +$LANG["phrase_your_account"] = "Akaun"; +$LANG["phrase_your_email"] = "Your Email"; +$LANG["phrase_your_email_address"] = "Alamat email"; +$LANG["processing_form_disabled"] = "Maaf, borang ini telah dimatikan."; +$LANG["processing_form_incomplete"] = "Maaf, borang ini tampaknya tidak sepenuhnya ditentukan dari dalam Borang Tools. Yang paling mungkin penyebab masalah ini ialah bahawa anda menghapuskan "form_tools_initialize_form" gelanggang borang tersembunyi, tetapi tidak menyelesaikan semua langkah daripada "Tambah Borang" muat.

    Sila log masuk dan meninjau bentuk tatarajah."; +$LANG["processing_init_complete"] = "Terima kasih! Pengajuan percubaan anda telah diajukan melalui sukses. Sila kembali ke Tools Administrasi Borang panel dan klik butang "Refresh" butang di bahagian bawah borang Langkah 3 Tambahkan laman untuk menyelesaikan setting borang anda."; +$LANG["processing_invalid_form_id"] = "Maaf, ini tidak muncul untuk menjadi ID bentuk yang sah."; +$LANG["processing_no_form_id"] = "memerlukan bentuk process.php ID anda diproses. Pastikan borang anda mengandungi bidang yang tersembunyi dengan nama "form_tools_form_id" itu lewat di sepanjang bentuk ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Borang Tools ini tidak dapat menentukan di mana untuk mengarahkan ketika mereka gagal untuk memasuki CAPTCHA dengan benar. Tolong sampaikan di gelanggang tersembunyi dengan nama form_tools_form_url mengandungi URL daripada bentuk."; +$LANG["processing_no_post_vars"] = "process.php tidak menerima data apapun. Nota: script ini tidak boleh diambil secara langsung di pelayar anda.
    Pastikan borang anda menghantar melalui POST."; +$LANG["processing_no_redirect_url"] = "Pengajuan itu diproses dengan benar, tetapi anda tidak menentukan sebuah URL redirect borang ini! Edit borang di borang Alatan UI dan tambah URL redirect."; +$LANG["special_language"] = "Malay"; +$LANG["special_language_locale"] = "Malay"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Semua akaun pelanggan baru akan dibuat dengan tatacara dan izin yang ditakrifkan di bawah ini. Untuk menukar setting untuk klien tertentu, edit akaun pelanggan dan lawati tab Tetapan mereka."; +$LANG["text_add_form_choose_integration_method"] = "Pilih kaedah yang anda ingin gunakan untuk mengintegrasikan borang anda dengan Tools Borang."; +$LANG["text_add_form_code_submission_benefits"] = "Kaedah ini menggunakan Borang Tools API , dimasukkan ke dalam Borang Tools script utama. API menyediakan beberapa fungsi yang dapat membantu untuk membuat kerja menyepadukan borang anda dengan Tools Borang semudah mungkin. Tiada sebarang sekatan bagaimana borang anda boleh dikemukakan apabila anda menggunakan API. Anda boleh menghantar kandungan dalam satu pergi, atau halaman dengan halaman, anda boleh menambah tersuai anda sendiri pengesahan server-side, imej CAPTCHA, anda boleh memilih untuk menyerahkan maklumat itu sekarang, tetapi hanya memberitahu untuk memaparkan penyerahan dalam Borang Tools UI pada tarikh yang lain (lihat seksyen Penyerahan dimuktamadkan dalam dokumentasi bantuan API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Dalam usaha untuk mengemukakan borang data anda melalui PHP, borang anda mesti terletak di laman web yang sama seperti ini pemasangan Tools Borang. Kedua, untuk Borang Tools pengguna bukan teknikal dan novis, kaedah ini boleh sedikit menakutkan pada mulanya. Tetapi ada banyak dokumentasi untuk membantu anda, termasuk dua tutorial mudah untuk mengintegrasikan bentuk tunggal dan multi-page anda (ini adalah dikaitkan dengan langkah kemudian)."; +$LANG["text_add_form_direct_submission_benefits"] = "Ini adalah cara paling sederhana untuk menghantar borang anda ke Borang Tools. Tidak memerlukan pengetahuan tentang PHP dan hanya memerlukan sangat sedikit perubahan pada borang anda. It's great untuk bentuk-bentuk yang lebih kecil di mana anda hanya ingin menyampaikan maklumat ke database kemudian mengarahkan ulang pengguna ke sebuah "thankyou" laman."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Kaedah penghantaran ini sangat mudah digunakan, tetapi tidak memberikan banyak berpandu untuk bentuk-bentuk lebih rumit. Multi-page bentuk atau bentuk yang memerlukan validasi sisi pelayan lebih sesuai dengan kaedah kedua: menghantar melalui borang Tools API."; +$LANG["text_add_form_field_types1"] = "Hampir selesai! Laman ini cuba untuk mencari semua medan borang anda dan menentukan jenis bidang. Klik butang Smart mengisi di sebelah kanan untuk memulakan. Anda hanya akan dibenarkan untuk meneruskan apabila semua tindakan telah diselesaikan - isu-isu yang memerlukan perhatian anda muncul dalam "Tindakan Diperlukan " lajur."; +$LANG["text_add_form_field_types2"] = "Jika borang anda tidak dalam HTML, klik butang Langkau Langkah untuk teruskan. Ini semua boleh dikonfigurasikan kemudian."; +$LANG["text_add_form_field_types3"] = "Ini tambah nilai kandungan borang anda (s). Nota: ini akan menggantikan apa-apa perubahan yang anda buat pada halaman ini."; +$LANG["text_add_form_field_types4"] = "Dalam kes anda menghadapi masalah, klik di sini untuk langkah ini. Semua bidang yang tidak dapat diselesaikan menggunakan nilai-nilai lalai. Anda boleh menyesuaikan bidang ini kemudian."; +$LANG["text_add_form_field_types_manual_upload"] = "Jika anda telah dapat Smart mengisi bidang anda, anda mungkin mahu mencuba penyelesaian alternatif: upload salinan borang anda dalam bidang-bidang di bawah."; +$LANG["text_add_form_field_types_manual_upload2"] = "Nota: tidak upload halaman PHP mentah (atau lain server-side code) - hanya memuat naik versi HTML . Untuk mendapatkan ini, melihat dan menyimpan halaman dari pelayar web anda."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Terdapat pelbagai bidang yang tidak dapat ditemui di halaman bentuk yang anda tetapkan. Ini adalah kebanyakannya mungkin disebabkan oleh salah satu daripada berikut:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Anda memasuki salah satu atau lebih URL bentuk bentuk multi-page anda salah."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Satu atau lebih halaman borang anda dilindungi kata laluan dan skrip tidak dapat mengakses halaman."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Anda salah memasukkan URL borang anda."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klik di sini untuk kembali ke laman Borang Maklumat untuk memeriksa tetapan anda."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Anda telah berubah bentuk (s) selepas membuat penyerahan ujian"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klik di sini untuk meletakkan melalui penyerahan ujian yang lain ."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Borang anda adalah kata laluan yang dilindungi dan skrip tidak dapat mengakses halaman."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Dalam lain tab / tetingkap pelayar ini, log masuk ke borang anda kemudian klik butang Refresh Page di bawah untuk cuba mencari semula ladang-ladang."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Jika tiada kerja-kerja penyelesaian di atas, anda juga mungkin mahu mencuba manual memuat naik borang anda untuk diproses ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Terdapat pelbagai bidang yang tidak dapat ditemui di muka surat borang yang anda tetapkan. Ini adalah kebanyakannya mungkin disebabkan oleh salah satu:"; +$LANG["text_add_form_help_link"] = "Jika anda menghadapi masalah apa-apa semasa langkah-langkah ini, cuba membaca dokumentasi pengguna ."; +$LANG["text_add_form_step_1_text_1"] = "Laman berikut ini menuntun anda melalui langkah-langkah untuk menetapkan borang Pencetak untuk menyimpan penghantaran form. Sebelum meneruskan, sila pastikan bahawa:"; +$LANG["text_add_form_step_1_text_2"] = "borang anda telah dicipta dan boleh diakses melalui sebuah URL (localhost baik-baik saja)"; +$LANG["text_add_form_step_1_text_3"] = "boleh mengedit borang"; +$LANG["text_add_form_step_2_para_2"] = "Buka borang anda dalam editor pilihan anda dan menukar tag borang anda seterusnya, termasuk dua bidang tersembunyi."; +$LANG["text_add_form_step_2_para_3"] = "Selanjutnya, buka borang anda dalam pelayar web. Kandungan dalam setiap bidang dan menghantarnya. Setelah menghantar, anda akan melihat mesej notis. Selepas mesej ini dipaparkan, kembali ke laman ini dan klik butang refresh di bawah ini. Ketika proses ini selesai, anda akan melihat butang di bawah ini terus, membawa anda ke langkah seterusnya."; +$LANG["text_add_form_step_2_para_6"] = "Dalam penghantaran borang anda, termasuk nilai-nilai seterusnya. Mereka mungkin ditetapkan secara langsung melalui PHP atau diteruskan melalui form itu sendiri. Di bawah ini adalah contoh dari masing-masing. The (\$ varname) adalah sebuah hash (atau associative array) daripada semua maklumat form - ini biasanya adalah (\$ postvar) atau (\$ sessionvar) variabel, tapi mungkin bisa tersuai dibina."; +$LANG["text_add_form_step_2_text_2"] = "Masukkan URL halaman anda "Dolar " di sini. Ini adalah di mana anda mahu orang ramai akan diarahkan selepas borang telah diserahkan."; +$LANG["text_add_form_step_3_para_1"] = "Laman ini mengandungi semua field dalam form anda. Sila menyemak setiap bidang dan memadam apapun yang anda tidak perlu disimpan untuk setiap pengajuan. Jika anda memadam gelanggang yang sah oleh kemalangan, atau ingin menukar maklumat yang disimpan oleh borang anda, kembali ke halaman sebelumnya untuk menghantar pengajuan percubaan baru."; +$LANG["text_add_form_step_3_para_2"] = "Nota: jika anda menghantar beberapa nilai melalui kotak semakan atau multi-pilih tempat, pastikan nama field berakhir dengan [] aksara (lihat dokumentasi pengguna untuk maklumat lanjut)."; +$LANG["text_add_form_step_3_text_1"] = "Berikut adalah di mana keseronokan bermula! Pada ketika ini, Peralatan Borang menunggu untuk penyerahan ujian dari borang anda. Ia akan menggunakan penghantaran borang ini untuk mengetahui maklumat apa yang harus disimpan dalam pangkalan data."; +$LANG["text_add_form_step_3_text_2"] = "dengan mengarahkan borang anda ke Borang Tools"; +$LANG["text_add_form_step_3_text_3"] = "menggunakan borang Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Untuk membantu mengintegrasikan borang anda, kami menyarankan anda membaca salah satu tutorial berikut:"; +$LANG["text_add_form_step_3_text_5"] = "Mereka menjelaskan bagaimana menyiapkan borang dalam persiapan untuk ujian ketundukan, dan merangkumi maklumat lain yang mungkin boleh membantu. Garis PHP anda perlu ialah:"; +$LANG["text_add_form_step_3_text_6"] = "Hal ini memastikan data tersebut dihantar ke Borang Tools. Bila anda memasukkan melalui pengajuan percubaan anda, klik butang di bawah ini."; +$LANG["text_add_form_step_3_text_7"] = "Pada halaman TERLEBIH ke akhir anda "terima kasih", pastikan untuk menambah parameter berikut pada variabel \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Pangkalan data telah dibentuk untuk untuk borang ini dan bentuk telah diaktifkan untuk digunakan. Jika anda membuat pengajuan dengan menunjuk borang anda ke process.php, silakan kembali ke bentuk dan menghapus field tersembunyi berikut:"; +$LANG["text_add_form_step_5_para_2"] = "Kemudian melawat "terima kasih" untuk mengosongkan sesi. Setelah ini selesai, semua baru penghantaran form akan diproses dan disimpan oleh Borang Tools. Cobalah membuat penyerahan atau dua untuk mengesahkan maklumat semua upload dengan benar."; +$LANG["text_add_form_step_5_para_3"] = "Jika anda ingin menyempurnakan borang untuk pilihan seperti auto-email, menambah medan borang tambahan gelanggang, atau menyesuaikan bentuk jenis gelanggang, anda boleh mengedit borang pada titik apapun."; +$LANG["text_add_form_step_5_para_4"] = "Kerana borang anda meng-upload file mengandungi bidang, anda perlu mengkonfigurasikan setiap bidang untuk menentukan meng-upload file folder, file apa yang dibenarkan dan. Hal ini boleh ditemui pada tab Display daripada laman borang edit."; +$LANG["text_add_form_step_5_para_5"] = "Jika pengajuan dihantar melalui API, tukar baris ft_api_init_form_page pada halaman pertama borang anda kepada:"; +$LANG["text_add_submission_button"] = "Butang Tambah Penyerahan hanya muncul Views yang mempunyai "Mei menambah penyerahan " pilihan yang ditetapkan "ya "."; +$LANG["text_admin_email_placeholder_info"] = "Ini adalah alamat email daripada pentadbir Pencetak borang, ditakrifkan dalam tatacara akaun anda. Ini hanya menampilkan alamat email, jadi jika anda ingin menggunakan link sebagai HTML, anda akan perlu untuk bungkus dalam sebuah <a> tag, seperti:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Juga laman login default theme)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Pertama, sila pilih jenis borang."; +$LANG["text_client_form_page"] = "Laman ini menyenaraikan semua bentuk dan Tayangan ditugaskan untuk klien ini. Tip: agar mereka untuk melihat borang pengajuan, mereka harus ditugaskan kepada sedikitnya satu View."; +$LANG["text_client_map_filters_desc1"] = "Peta pelanggan penapis membiarkan anda menyekat penghantaran yang muncul dalam pemetaan ini Lihat mengikut nilai-nilai dalam bentuk gelanggang untuk nilai-nilai dalam akaun pelanggan."; +$LANG["text_client_no_forms"] = "Anda saat ini tidak mempunyai bentuk yang sedia untuk ditinjau."; +$LANG["text_client_welcome"] = "Selamat datang! Program ini menyimpan semua maklumat yang disampaikan oleh pengunjung halaman anda. Untuk melihat pengajuan borang tertentu klik pada link VIEW, atau melihat menu navigation paling kiri untuk pilihan lain."; +$LANG["text_config_file_created"] = "Config.php anda telah dicipta."; +$LANG["text_config_file_not_created"] = "Kami tidak boleh membuat file config.php anda. Anda akan perlu untuk mencipta fail tatarajah secara manual."; +$LANG["text_config_file_not_created_instructions"] = "Salin dan tampal kandungan daripada bahagian di bawah ini ke file bernama config.php dan upload melalui FTP ke Borang Tools / global folder (folder yang juga mengandungi beberapa fail dan direktori yang lain, satu fail bernama library.php)."; +$LANG["text_confirm_delete_form"] = "Ya, saya ingin menghapuskan borang ini"; +$LANG["text_create_admin_account"] = "Sekarang kita akan mencipta akaun pentadbir. Ini digunakan untuk menguruskan semua aspek Borang Tools, misalnya menambah bentuk dan mencipta akaun pelanggan."; +$LANG["text_create_new_client_account"] = "Gunakan borang di bawah ini untuk membuat akaun pelanggan baru. Semua medan wajib diisi."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "lihat PHP {\$datefunctionlink} fungsi untuk pilihan pemformatan"; +$LANG["text_default_file_settings_page"] = "Laman ini mentakrif tatacara upload fail untuk Borang Alatan pemasangan. Peraturan-Peraturan ini berlaku untuk semua file di-upload melalui Form Tools, kecuali secara eksplisit ditolak untuk setiap bidang bentuk. Nota: jika anda menukar folder upload selepas fail sudah di-upload, mereka akan dipindahkan secara automatik ke folder baru."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Sebelum meneruskan, anda perlu mengemas / themes / default / cache folder untuk membolehkan membaca dan menulis penuh permissions. Setelah ini dilakukan, mesej ini akan hilang dan anda boleh memasang script."; +$LANG["text_default_values_in_view"] = "Seksyen ini adalah pilihan. Semua penyertaan yang dicipta dengan Paparan ini akan mengandungi nilai-nilai lalai yang dinyatakan di sini."; +$LANG["text_delete_all_forms"] = "Saya ingin memadam semua fail-fail yang di-upload melalui borang ini"; +$LANG["text_delete_form_warning"] = "Adakah anda pasti hendak memadam bentuk ini? Tindakan ini tidak boleh dibatalkan. Semua data akan hilang secara kekal!"; +$LANG["text_edit_admin_menu_page"] = "Anda boleh mengedit menu di bawah ini. Untuk memastikan bahawa anda sentiasa mempunyai akses kepada semua fungsi yang disediakan dalam borang Tools, laman berikut diperlukan: Borang, Pelanggan, Akaun anda, Modul, Tetapan dan Logout."; +$LANG["text_edit_client_menu_page"] = "Bahagian ini membolehkan anda melaraskan medan navigation kiri untuk setiap pengguna. Anda boleh membuat banyak klien menu seperti yang anda inginkan dan menetapkan suatu akaun kepada salah satu daripada mereka. Secara default ada dua menu: satu untuk anda, pentadbir, dan satu untuk semua akaun pelanggan. Akaun pentadbir boleh diubahsuai tapi tidak dihapuskan."; +$LANG["text_edit_tab_summary"] = "Jika anda ingin kumpulan bidang ini Lihat ke dalam tab, hanya masukkan tab nama-nama di bawah. Selepas anda selesai, pilih tab yang sesuai bagi setiap kumpulan bidang dalam tab Medan ."; +$LANG["text_edit_view_list_page"] = "Ini tab kawalan bidang yang muncul sebagai lajur pada halaman Senarai Penyerahan, dan tetapan beberapa tambahan bagi orang-orang bidang. Nota: kami cadangkan anda tambah tidak lebih daripada 4 atau 5 bidang yang paling penting dalam View."; +$LANG["text_email_settings_intro"] = "Laman ini membolehkan anda mengenalpasti mana medan borang anda menyimpan email dan nama-nama yang sesuai. Selepas anda menentukan nasib mereka di sini, anda boleh menggunakannya dalam template email anda sebagai penerima. Bahagian ini seluruhnya pilihan."; +$LANG["text_email_tab_summary"] = "Bahagian ini membolehkan anda membina sejumlah email yang akan dihantar setiap kali borang dihantar, dan pemicu."; +$LANG["text_email_template_tab"] = "Bahagian ini membolehkan anda menentukan kandungan apa yang muncul dalam email. Jika anda ingin menghantar emel yang hanya teks atau email, hanya masukkan nilai untuk bahagian tersebut. Jika anda memasukkan nilai untuk keduanya, email akan dihantar dalam kedua format."; +$LANG["text_email_template_text_1"] = "Telah ada penyerahan dilakukan melalui bentuk, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Telah ada penyerahan dilakukan melalui bentuk, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Terima kasih untuk kiriman anda!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Mesej ralat untuk menunjukkan jika bidang gagal pengesahan"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Bentuk luar adalah bentuk yang sudah wujud di laman web anda, atau tempat di web. Pilih pilihan ini jika anda mempunyai bentuk anda sendiri yang anda ingin untuk mengintegrasikan dengan Tools Borang."; +$LANG["text_fields_tab_summary"] = "Laman ini menyenaraikan semua bidang borang. Untuk mengawal bagaimana mereka muncul apabila penyerahan melayari, lihat tab Views . Memotong bidang pada halaman ini akan memadamnya dari semua penyerahan, jadi sila berhati-hati!"; +$LANG["text_file_extension_info"] = "Masukkan ekstensi file yang dipisahkan dengan tanda koma (misalnya jpg, gif, png) atau biarkan kosong untuk membenarkan semua jenis fail."; +$LANG["text_file_field_placeholders_info"] = "Gambar bidang mempunyai dua placeholder khusus: FILEURL dan FILENAME. FILEURL adalah URL penuh ke fail tersebut, sehingga anda boleh menyambung secara langsung ke dalam email anda; FILENAME hanya nama fail."; +$LANG["text_filters_page"] = "Hanya orang-orang kiriman yang memenuhi peraturan yang anda tetapkan di bawah ini akan muncul di View ini."; +$LANG["text_filters_tips"] = "Untuk tips tentang cara menggunakan penapis penghantaran, lihat pengguna Dokumentasi."; +$LANG["text_forgot_password"] = "Ada masalah. Cukup masukkan nama pengguna anda di bawah ini dan maklumat log masuk anda akan dihantar ke alamat email anda di fail. Jika anda lupa nama pengguna, silakan email pentadbir laman pada {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Borang ini mengandungi satu atau lebih file upload fields:"; +$LANG["text_form_placeholder_info"] = "Pemegang tempat berikut boleh digunakan dalam bidang placeholder template mana-mana e-mel dan bahasa, tanpa mengira apa-apa View template e-mel yang diberikan kepadanya. Ruang letak SOALAN soalan bentuk tertentu; ruang letak JAWAPAN jawapan kepada setiap soalan."; +$LANG["text_form_submission_date_placeholder"] = "Tarikh apabila penyerahan dibuat."; +$LANG["text_form_tools_form_url"] = "URL lengkap borang. Ini hanya mempunyai nilai untuk bentuk Luar."; +$LANG["text_form_tools_login_url"] = "URL untuk login Borang Tools."; +$LANG["text_form_view_permission_info_admin"] = "Nota: borang ini pada masa ini mempunyai akses Pentadbir jenis, jadi tiada account klien akan dapat lihat Lihat ini."; +$LANG["text_form_view_permission_info_private"] = "Nota: borang ini pada masa ini mempunyai jenis akses swasta jadi pilihan awam dan persendirian di sini akan terhad kepada subset yang pelanggan."; +$LANG["text_ft_installed"] = "Selamat, Borang Alatan telah berjaya dipasang!"; +$LANG["text_global_placeholder_info"] = "Placeholder ini boleh digunakan dalam template manapun dan bentuk apapun."; +$LANG["text_group_name_explanation"] = "Untuk bidang ditambah melalui muat Borang Tambah, nilai ini diisi dengan paparan teks apa pun Bidang tersebut menggunakan nilai. Anda mungkin ingin mengubahnya menjadi lebih mencirikan isinya."; +$LANG["text_install_create_config_file"] = "Borang Alatan kedai dan database server anda tatacara dalam fail bernama config.php, ditemui di / global / folder. Klik "Buat Fail" butang untuk secara automatik menghasilkan fail di pelayan anda."; +$LANG["text_install_create_database_tables"] = "Sekarang kita akan menciptakan tabel database Borang Tools. Langkah ini memerlukan database itu sendiri untuk telah dibuat. Jika anda tidak yakin bagaimana melakukan ini, sila hubungi pembekal hosting anda."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" biasanya bermaksud bahawa nama host yang anda berikan tidak benar. Mungkin cubalah menetapkannya ke "localhost" - ini adalah cara yang umum untuk menyebut "tempatan" database pada web server."; +$LANG["text_install_db_tables_error_tip_2"] = ""Tidak dapat disambungkan ke pelayan MySQL tempatan melalui soket" berarti database field nama host adalah salah lagi."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" bererti bahawa ada masalah dengan kombinasi username / password."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... to database ..." bererti bahawa walaupun username dan password yang anda berikan sudah benar, maka tidak dapat terhubung ke database tertentu dengan akaun tersebut. Hal ini boleh bermakna bahawa salah satu nama database anda tidak benar, atau bahawa akaun ini tidak berkaitan dengan database tersebut."; +$LANG["text_install_email_content_text"] = "Terdapat banyak sumber di laman web kami untuk membantu anda memulakan, termasuk dokumentasi dalam talian kami (https://docs.formtools.org) dan tutorial (https://docs.formtools.org/tutorials). Jika anda mendapati anda terjebak atau mempunyai soalan, tanyakan pada github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Maaf, Peralatan Borang tidak akan dapat berjalan pada pelayan anda. Sila klik di sini untuk keperluan minimum."; +$LANG["text_install_system_check"] = "Laman ini menjalankan beberapa tes pada sistem anda untuk memastikan itu dapat menjalankan Borang Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Bentuk dalaman wujud hanya dalam tempoh Tools Borang - tidak di tempat lain di laman web anda. Hanya akaun Borang Tools pengguna akan mempunyai akses kepada borang. Pilih pilihan ini jika anda tidak mempunyai borang yang sedia ada."; +$LANG["text_internal_form_intro"] = "Gunakan borang di bawah untuk mewujudkan satu bentuk Dalaman yang baru. Semua setting, termasuk nombor dan kandungan medan borang boleh diubah dan ditetapkan kemudian."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Dalam rangka untuk log masuk dan menggunakan Borang Tools, anda harus mengaktifkan javascript di browser anda. Sila aktifkan sekarang, dan klik refresh pada browser anda."; +$LANG["text_last_modified_date_explanation_c"] = "Kali terakhir penyerahan ini sudah diubah. Pengajuan baru, ini adalah sama dengan:"; +$LANG["text_limit_email_content_desc"] = "Pilihan ini hanya berfungsi untuk HTML dan teks kandungan yang dijana dengan gelung Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(hanya pendaftaran Display dengan satu atau lebih penapis ditentukan)"; +$LANG["text_log_in_to_ft"] = "Log in ke Borang Tools"; +$LANG["text_login"] = "Sila log in di bawah ini untuk mengakses (\$ program_name) Pentadbiran Panel. Jika anda lupa kata laluan, klik di sini."; +$LANG["text_login_info"] = "Seperti yang diminta, di sini adalah maklumat log masuk anda."; +$LANG["text_name_of_form"] = "Nama borang."; +$LANG["text_no_clients"] = "Saat ini tidak ada pelanggan dalam database. Untuk menambah akaun pelanggan baru, klik butang Tambah Pelanggan di bawah ini."; +$LANG["text_no_clients_found"] = "Tidak ada pelanggan yang ditemui. Cuba memperluaskan kriteria carian anda."; +$LANG["text_no_fields_in_view"] = "Lihat ini tidak mempunyai apa-apa bidang di dalamnya. Klik pautan di bawah."; +$LANG["text_no_forms"] = "Saat ini tidak ada bentuk-bentuk dalam database. Untuk menambah bentuk baru, klik butang Tambah borang di bawah ini."; +$LANG["text_no_forms_found"] = "Tiada borang yang ditemui."; +$LANG["text_no_forms_found_search"] = "Tiada borang yang ditemui. Cuba meluaskan kriteria carian anda."; +$LANG["text_no_modules_found"] = "Tidak ada modul yang ditemui. Cuba memperluaskan kriteria carian anda."; +$LANG["text_no_recipients_added"] = "Tidak ada penerima telah ditambah."; +$LANG["text_no_search_results"] = "Tidak ada keputusan dengan kriteria carian ini / Lihat."; +$LANG["text_no_submissions_found"] = "Maaf, tidak ada pengajuan yang ditemui."; +$LANG["text_no_themes"] = "Anda tidak mempunyai apa-apa tema yang telah ditentukan. Klik butang di bawah untuk muat semula senarai tema anda, atau mendaftar Borang Tools dokumentasi pengguna untuk mendapatkan maklumat tentang menambah tema ."; +$LANG["text_non_deletable_fields"] = "Medan ini digunakan oleh skrip Teras dan tidak boleh diedit atau dipadam tanpa menyebabkan ketidakserasian. Jika anda ingin membuat perubahan kepada jenis bidang, membuat salinan dan menyunting salinan itu."; +$LANG["text_option_list_group_explanation"] = "Jika ini dipilih, ia boleh digunakan kepada kumpulan pilihan anda. Bagaimana kumpulan yang dipaparkan bergantung kepada jenis bidang menggunakan ini senarai pilihan."; +$LANG["text_option_list_page"] = "Butang radio, kotak semak, dropdowns dan pilih pelbagai bidang jatuh semua menyediakan pengguna dengan beberapa pilihan dari mana mereka boleh memilih satu atau lebih item. Dalam Tools Borang ini dikenali sebagai Senarai Pilihan. Secara amnya, ini adalah dibuat secara automatik oleh Borang Luar Tambah proses, tetapi secara manual, anda boleh menambah atau mengedit senarai pilihan anda di bawah jika perubahan kandungan borang anda atau anda membina bidang yang hanya digunakan dalaman."; +$LANG["text_option_list_used_by_fields"] = "Senarai Opsyen ini digunakan oleh beberapa medan borang. Jika anda mengemas kini maklumat di bawah, ia akan berubah untuk semua bidang ( lihat Medan Borang tab untuk melihat senarai bidang) . Jika anda ingin mengemas kini nilai-nilai untuk satu, atau subset bidang yang sedang ditugaskan, klik di sini untuk membuat Senarai Pilihan baru dengan nilai-nilai yang sama sebagai salah satu ini. Kemudian anda boleh menetapkan bidang borang yang anda ingin kumpulan baru."; +$LANG["text_public_form_omit_list_page"] = "Bentuk awam memberikan manfaat membiarkan semua akses akaun pelanggan mereka tanpa harus secara manual menetapkan setiap pelanggan untuk mereka. Laman ini membolehkan anda untuk menunjukkan klien yang tidak dapat mengakses form ini, walaupun bentuk ditandakan sebagai umum."; +$LANG["text_public_view_omit_list_page"] = "Umum Views memberikan manfaat membiarkan semua akses akaun pelanggan mereka tanpa harus secara manual menetapkan setiap pelanggan untuk mereka. Laman ini membolehkan anda untuk menunjukkan klien yang tidak dapat mengakses View khusus ini."; +$LANG["text_reference_tab_info"] = "Laman ini menyenaraikan semua ruang letak tersedia untuk borang anda. Ruang letak tali yang boleh digunakan dalam template e-mel, dan bidang-bidang yang ditandakan dengan ikon placeholder khas . Apabila memasuki padang, mereka adalah dinamik ditukar kepada nilai yang sesuai apabila bidang dilihat atau e-mel dihantar."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Meninjau dokumentasi pengguna"; +$LANG["text_send_email_from_edit_submission_page"] = "Sertakan pilihan untuk menghantar email ini dari Edit halaman Submission"; +$LANG["text_smart_fill_option_list_problem"] = "Kami tidak dapat untuk Smart mengisi pilihan bidang anda. Walau bagaimanapun, sebagai alternatif, anda boleh cuba mengupload salinan halaman bentuk anda dalam bidang di bawah. Nota: tidak upload halaman PHP mentah (atau lain server-side code) - hanya memuat naik versi HTML . Untuk mendapatkan ini, melihat dan menyimpan halaman dari pelayar web anda."; +$LANG["text_submission_ip_address"] = "Alamat IP dari user yang membuat pengajuan."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Gunakan borang di bawah untuk baik melihat atau menghantar email sendiri terhasil dari template email ini. Email hanya dihantar ke email yang ditentukan di bawah ini; utama, cc dan bcc alamat email penerima diabaikan saat pengujian."; +$LANG["text_test_email_templates_no_submissions"] = "Untuk menguji template email anda, anda harus terlebih dahulu memasukkan melalui setidaknya satu bentuk penyerahan diri."; +$LANG["text_theme_page_intro"] = "Laman ini mengandungi semua tema anda. Klik pada thumbnail untuk melihat contoh yang lebih besar daripada tema yang gaya. The "membolehkan" kotak semak atau tidak menentukan apakah tema yang boleh dipilih oleh pelanggan. Untuk menelusuri semua tema yang tersedia, kunjungi halaman Tools borang."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Menambah bentuk pertama anda!"; +$LANG["text_unique_submission_id"] = "Penyerahan unik ID."; +$LANG["text_unused_option_list"] = "Senarai pilihan ini tidak digunakan oleh mana-mana medan borang."; +$LANG["text_upgraded"] = "Instalasi anda telah diupgrade kepada {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Senarai Opsyen ini digunakan oleh bidang-bidang berikut."; +$LANG["text_view_fields_info"] = "Tab ini kawalan yang bidang muncul apabila mengedit penyerahan View this, perintah mereka dan sama ada mereka boleh disunting atau tidak."; +$LANG["text_view_tab_summary"] = "Tab ini membolehkan anda membuat cara yang berbeza untuk kumpulan dan menyusun data anda. Views membolehkan anda membuat subset custom data borang anda untuk berpecah ke dalam ketulan yang diuruskan, dan untuk menghadkan apa yang pelanggan boleh melihat atau mengedit."; +$LANG["validation_account_disabled"] = "Maaf, akaun anda telah dinyahdayakan."; +$LANG["validation_account_not_recognized"] = "Maaf, username yang tidak diiktiraf."; +$LANG["validation_account_not_recognized_info"] = "Maaf, bahawa nama pengguna tidak dijumpai. Sila cuba lagi, atau hubungi administrator di alamat di bawah ini."; +$LANG["validation_account_pending"] = "Akaun pengguna anda menunggu kelulusan oleh pentadbir."; +$LANG["validation_check_delete_client"] = "Adakah anda pasti hendak memadam akaun pelanggan ini?"; +$LANG["validation_client_password_missing_number"] = "Password pelanggan harus mengandungi sekurang-kurangnya satu nombor (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Password pelanggan harus mengandungi minimum salah satu watak berikut: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Password pelanggan mesti mengandungi sekurang-kurangnya satu huruf besar."; +$LANG["validation_client_password_too_short"] = "Password pelanggan harus sekurang-kurangnya {\$number} aksara."; +$LANG["validation_col_name_is_reserved_word"] = "Maaf, nama kolom database ini adalah sebuah karya cipta di MySQL. Sila tukar nama itu!"; +$LANG["validation_db_name"] = "Nama pangkalan data tidak boleh mengandungi tempoh atau garis miring."; +$LANG["validation_db_not_updated_invalid_input"] = "Pangkalan data tidak dapat dikemaskini. Semak untuk melihat nilai-nilai yang anda masukkan valid."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Maaf, lalai pentadbir dan tema pelanggan harus selalu dihidupkan."; +$LANG["validation_default_phone_num_required"] = "Sila isikan nombor telefon yang lengkap untuk <b> { \$ bidang} </ b> - nombor sahaja."; +$LANG["validation_default_rule_alpha"] = "Sila hanya memasukkan huruf dan nombor untuk <b> { \$ bidang} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Sila hanya masukkan surat untuk <b> { \$ bidang} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Sila hanya memasukkan nombor untuk <b> { \$ bidang} </ b> Bidang."; +$LANG["validation_default_rule_required"] = "Sila masukkan nilai untuk <b> {bidang \$} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Sila masukkan alamat e-mel yang sah untuk <b> {bidang \$} </ b>."; +$LANG["validation_delete_form_confirm"] = "Sila semak peti untuk mengesahkan bahawa anda ingin mengosongkan borang ini."; +$LANG["validation_delete_non_empty_option_list"] = "Amaran! Senarai Opsyen ini digunakan oleh satu atau lebih bidang borang. Memotong ia akan membuat orang-orang bidang terhenti berfungsi dengan baik."; +$LANG["validation_display_names_incomplete"] = "Sila masukkan sebuah nilai untuk semua Nama Display, atau klik Isi Smart pilihan untuk memasukkannya secara dinamik."; +$LANG["validation_duplicate_form_field_name"] = "Anda tidak boleh mempunyai pelbagai bidang dengan nama bidang yang sama."; +$LANG["validation_email_not_found_or_invalid"] = "Maaf, email yang bersekutu dengan akaun anda baik tidak ada atau tidak sah."; +$LANG["validation_folder_invalid_permissions"] = "Dalam rangka untuk menjalankan ujian ini, hak akses harus ditetapkan pada folder upload untuk membolehkan membaca dan menulis fail-fail (777 di Unix)."; +$LANG["validation_folder_not_writable"] = "Folder ini tidak ditulisi."; +$LANG["validation_internal_form_too_many_fields"] = "Maaf, anda hanya boleh diwujudkan bentuk dengan 1000 bidang atau kurang."; +$LANG["validation_invalid_admin_email"] = "Sila masukkan alamat email adminstrator."; +$LANG["validation_invalid_admin_username"] = "Nama samaran anda hanya boleh terdiri daripada huruf (AZ dan 0-9)."; +$LANG["validation_invalid_client_username"] = "Pelanggan nama pengguna hanya boleh terdiri daripada aksara alfanumerik (aZ dan 0-9)."; +$LANG["validation_invalid_client_username2"] = "Maaf, username's mungkin hanya mengandungi huruf, nombor dan aksara garis bawah. Sila masukkan nama pengguna baru."; +$LANG["validation_invalid_column_name"] = "Nama-nama lajur hanya boleh abjad angka (AZ, 0-9). Sila semak nama-nama lajur."; +$LANG["validation_invalid_custom_from_email"] = "Sila masukkan adat yang sah 'Dari' alamat email."; +$LANG["validation_invalid_custom_reply_to_email"] = "Sila masukkan valid adat 'Balas-ke' alamat email."; +$LANG["validation_invalid_default_sessions_timeout"] = "Sila masukkan nilai yang sah (nombor) untuk sesi default timeout."; +$LANG["validation_invalid_email"] = "Sila masukkan alamat email yang sah."; +$LANG["validation_invalid_email_id"] = "Maaf, itu ID email yang tidak sah."; +$LANG["validation_invalid_folder"] = "Maaf, ini tidak muncul untuk menjadi folder yang sah."; +$LANG["validation_invalid_form_field_names"] = "Kolom borang hanya boleh alfanumerik dan garis bawah (aZ, 0-9, _), tanpa spasi."; +$LANG["validation_invalid_num_clients_per_page"] = "Sila hanya memasukkan nombor di Klien Num Per Page gelanggang."; +$LANG["validation_invalid_num_emails_per_page"] = "Sila hanya memasukkan nombor untuk email per halaman."; +$LANG["validation_invalid_num_form_fields"] = "Sila hanya memasukkan nombor dalam Nombor medan Medan."; +$LANG["validation_invalid_num_forms_per_page"] = "Sila hanya memasukkan nombor dalam borang Num Per Page gelanggang."; +$LANG["validation_invalid_num_menus_per_page"] = "Sila hanya memasukkan nombor untuk menu per halaman."; +$LANG["validation_invalid_num_modules_per_page"] = "Sila hanya memasukkan nombor dalam Modul Num Per Page gelanggang."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Sila hanya memasukkan nombor dalam Senarai Pilihan Num Per bidang Page."; +$LANG["validation_invalid_num_submissions_per_page"] = "Sila masukkan jumlah yang sah pengajuan per halaman."; +$LANG["validation_invalid_sessions_timeout"] = "Sila masukkan batas waktu sesi yang sah (hanya bilangan bulat!)."; +$LANG["validation_invalid_tab_assign_values"] = "Sila hanya memasukkan nombor dalam 'daripada' dan 'kepada' bidang."; +$LANG["validation_invalid_table_prefix"] = "Sila masukkan awalan pangkalan data terdiri daripada huruf dan aksara garis hanya."; +$LANG["validation_invalid_upload_folder"] = "Anda pemasangan pelayan PHP mempunyai tatacara yang tidak sah untuk nilai upload_tmp_dir. "{\$upload_folder}" bukan merupakan folder yang sah."; +$LANG["validation_invalid_url"] = "Sila masukkan URL yang sah."; +$LANG["validation_invalid_username"] = "Nama pengguna anda hanya boleh terdiri daripada aksara alfanumerik (aZ dan 0-9)."; +$LANG["validation_is_form_active"] = "Sila menunjukkan apakah bentuk aktif atau tidak."; +$LANG["validation_menu_name_taken"] = "Maaf, nama menu ini sudah diambil. Sila pilih nama baru."; +$LANG["validation_modules_search_no_status"] = "Sila pilih sama ada check box Enabled atau Kurang Upaya."; +$LANG["validation_no_access_type"] = "Sila masukkan taip akses."; +$LANG["validation_no_account_logout_url"] = "Sila masukkan URL logout anda."; +$LANG["validation_no_account_password_confirmed"] = "Sila masukkan kembali password baru anda."; +$LANG["validation_no_account_password_confirmed2"] = "Sila masukkan semula kata laluan baru."; +$LANG["validation_no_admin_email"] = "Sila masukkan alamat email pentadbir."; +$LANG["validation_no_admin_theme"] = "Sila pilih tema untuk akaun pentadbir."; +$LANG["validation_no_admin_theme_swatch"] = "Sila pilih satu carikan untuk tema pentadbir."; +$LANG["validation_no_client_email"] = "Sila masukkan alamat email pelanggan."; +$LANG["validation_no_client_first_name"] = "Sila masukkan nama pertama pelanggan."; +$LANG["validation_no_client_last_name"] = "Sila masukkan nama pelanggan."; +$LANG["validation_no_client_login_page"] = "Sila menunjukkan laman yang klien harus diarahkan kepada ketika mereka log in"; +$LANG["validation_no_client_password"] = "Sila masukkan password pelanggan."; +$LANG["validation_no_client_theme_swatch"] = "Sila pilih carikan lalai untuk akaun pelanggan."; +$LANG["validation_no_client_username"] = "Sila masukkan nama pengguna klien."; +$LANG["validation_no_column_name"] = "Sila masukkan semua nama-nama lajur, atau klik butang mengisi Smart untuk memasukkan secara automatik mereka."; +$LANG["validation_no_column_selected"] = "Sila pilih setidaknya satu field untuk muncul sebagai medan pada halaman pendaftaran pengajuan."; +$LANG["validation_no_custom_from_email"] = "Sila masukkan adat 'Dari' alamat email."; +$LANG["validation_no_custom_recipient_email"] = "Sila masukkan alamat email penerima tersuai."; +$LANG["validation_no_custom_reply_to_email"] = "Sila masukkan adat 'Balas-ke' alamat email."; +$LANG["validation_no_date_format"] = "Sila masukkan format tarikh."; +$LANG["validation_no_db_column_single"] = "Sila masukkan nama Lajur Pangkalan Data."; +$LANG["validation_no_db_hostname"] = "Sila masukkan nama host database."; +$LANG["validation_no_db_name"] = "Sila masukkan nama database."; +$LANG["validation_no_db_username"] = "Sila masukkan nama pengguna akaun database."; +$LANG["validation_no_default_client_theme"] = "Sila pilih tema default untuk semua akaun pelanggan baru."; +$LANG["validation_no_default_language"] = "Sila pilih bahasa default untuk instalasi Borang Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Sila masukkan batas waktu sesi standard untuk akaun pengguna."; +$LANG["validation_no_display_text"] = "Sila masukkan Teks Paparan bagi setiap bidang."; +$LANG["validation_no_display_text_single"] = "Sila masukkan nilai Teks Paparan."; +$LANG["validation_no_edit_submission_page_label"] = "Sila masukkan Edit halaman Submission teg."; +$LANG["validation_no_email"] = "Sila masukkan alamat email anda."; +$LANG["validation_no_email_config_field"] = "Sila nyatakan field yang membentuk bidang email."; +$LANG["validation_no_email_content"] = "Sila masukkan kandungan email anda setidaknya satu dari format (HTML atau teks)."; +$LANG["validation_no_email_from_field"] = "Sila email 'daripada' gelanggang."; +$LANG["validation_no_email_template_name"] = "Sila masukkan nama template email."; +$LANG["validation_no_email_template_view_id"] = "Sila pilih Lihat untuk email ini template yang harus dipetakan."; +$LANG["validation_no_email_template_view_mapping_value"] = "Sila menunjukkan bila email harus dihantar."; +$LANG["validation_no_enabled_themes"] = "Sila pastikan bahawa setidaknya satu tema dihidupkan."; +$LANG["validation_no_first_name"] = "Sila masukkan nama pertama anda."; +$LANG["validation_no_form_field_name"] = "Sila masukkan semua bentuk nama field."; +$LANG["validation_no_form_field_single"] = "Sila masukkan nilai Field Borang."; +$LANG["validation_no_form_id"] = "ID bentuk tidak ditentukan. Silakan keluar dan cuba lagi."; +$LANG["validation_no_form_name"] = "Sila masukkan nama bentuk."; +$LANG["validation_no_form_url"] = "Sila masukkan URL bentuk."; +$LANG["validation_no_last_name"] = "Sila masukkan nama terkini anda."; +$LANG["validation_no_login_page"] = "Sila menunjukkan halaman yang anda ingin untuk dihantar setiap kali anda log in"; +$LANG["validation_no_logout_url"] = "Sila masukkan URL logout."; +$LANG["validation_no_main_email_recipient"] = "Sila masukkan setidaknya satu penerima email utama (iaitu bukan cc atau bcc)."; +$LANG["validation_no_menu"] = "Sila pilih menu untuk akaun pengguna ini."; +$LANG["validation_no_menu_id"] = "Sila pilih menu."; +$LANG["validation_no_num_clients_per_page"] = "Sila masukkan jumlah akaun pelanggan per halaman."; +$LANG["validation_no_num_emails_per_page"] = "Sila masukkan jumlah email ke senarai per halaman."; +$LANG["validation_no_num_form_fields"] = "Sila masukkan nombor bidang untuk borang anda."; +$LANG["validation_no_num_forms_per_page"] = "Sila masukkan jumlah bentuk-bentuk per halaman."; +$LANG["validation_no_num_menus_per_page"] = "Sila masukkan jumlah menu ke senarai per halaman."; +$LANG["validation_no_num_modules_per_page"] = "Sila masukkan jumlah modul per halaman."; +$LANG["validation_no_num_option_lists_per_page"] = "Sila masukkan nombor senarai pilihan per halaman."; +$LANG["validation_no_num_submissions_per_page"] = "Sila masukkan jumlah pengajuan untuk menampilkan per halaman."; +$LANG["validation_no_option_list_name"] = "Sila masukkan nama senarai pilihan."; +$LANG["validation_no_page_titles"] = "Sila masukkan tajuk halaman default untuk akaun pengguna."; +$LANG["validation_no_password"] = "Sila masukkan password anda."; +$LANG["validation_no_program_name"] = "Sila masukkan nama program."; +$LANG["validation_no_second_password"] = "Sila masukkan semula kata laluan anda."; +$LANG["validation_no_sessions_timeout"] = "Sila masukkan batas waktu sesi."; +$LANG["validation_no_smart_fill_values"] = "Sila masukkan nama field bentuk dan URL daripada bentuk."; +$LANG["validation_no_table_prefix"] = "Sila masukkan awalan pangkalan data."; +$LANG["validation_no_tabs_defined"] = "Tidak tab ditakrifkan"; +$LANG["validation_no_test_email_recipient"] = "Sila masukkan alamat emel di mana kami perlu menghantar email percubaan."; +$LANG["validation_no_test_email_submission_id"] = "Sila masukkan nombor ID pengajuan."; +$LANG["validation_no_theme"] = "Sila pilih salah satu tema."; +$LANG["validation_no_theme_swatch"] = "Sila pilih carikan untuk tema yang dipilih."; +$LANG["validation_no_timezone_offset"] = "Sila masukkan offset zon waktu."; +$LANG["validation_no_titles"] = "Sila masukkan tajuk halaman."; +$LANG["validation_no_two_column_names"] = "Maaf, anda mungkin tidak memasukkan nama kolom database yang sama dua kali."; +$LANG["validation_no_ui_language"] = "Sila pilih bahasa anda antara muka."; +$LANG["validation_no_url"] = "Sila masukkan URL."; +$LANG["validation_no_username"] = "Sila masukkan nama pengguna anda."; +$LANG["validation_no_username_or_js"] = "Anda perlu memasukkan nama pengguna anda. Sila mengaktifkan javascript di browser anda."; +$LANG["validation_no_view_fields"] = "Lihat anda tidak mempunyai ladang! Anda harus menetapkan setidaknya satu field untuk menjadi sesuatu yang ada untuk dipaparkan di View."; +$LANG["validation_no_view_fields_selected"] = "Sila pilih satu atau lebih field untuk menambah View."; +$LANG["validation_no_view_name"] = "Sila masukkan nama View."; +$LANG["validation_num_rows_to_add"] = "Sila masukkan jumlah baris yang ditambah."; +$LANG["validation_option_list_name_taken"] = "Maaf, ini nama senarai pilihan sudah diambil. Sila pilih nama yang baru."; +$LANG["validation_password_in_password_history"] = "Untuk keselamatan, anda tidak boleh memasukkan kata laluan yang sama dengan salah satu terkini {\$history_size}. Sila masukkan password yang berbeza."; +$LANG["validation_passwords_different"] = "Pastikan password yang sama."; +$LANG["validation_please_enter_search_date_range"] = "Sila pilih rentang tarikh carian."; +$LANG["validation_please_enter_search_keyword"] = "Sila masukkan kata kunci carian."; +$LANG["validation_select_field_type"] = "Sila pilih jenis gelanggang."; +$LANG["validation_select_submissions_to_copy"] = "Sila pilih penyerahan yang ingin disalin."; +$LANG["validation_select_submissions_to_delete"] = "Sila pilih yang pengajuan ingin anda hapus."; +$LANG["validation_smart_fill_cannot_fill"] = "Maaf, kami tidak boleh mengisi bidang ini."; +$LANG["validation_smart_fill_invalid_field_type"] = "Kami tidak dapat menemukan sebuah gelanggang, tapi itu bukan dropdown, kumpulan kotak semakan atau radio."; +$LANG["validation_smart_fill_no_field_found"] = "Maaf, kami tidak dapat menemukan bentuk gelanggang dengan nama itu pada laman yang ditentukan."; +$LANG["validation_smart_fill_no_page"] = "Sila cari laman yang mengandungi bidang yang ingin anda Smart Isi."; +$LANG["validation_smart_fill_upload_all_pages"] = "Sila upload semua laman di borang anda."; +$LANG["validation_upload_folder_not_writable"] = "Folder upload sementara ini ditentukan oleh pemasangan PHP anda tidak boleh ditulis. Sampai hal ini tetap, fail tidak boleh di-upload melalui borang Tools (atau program PHP lainnya). Sila hubungi pembekal hosting anda."; +$LANG["validation_upload_html_files_only"] = "Sila hanya meng-upload file HTML."; +$LANG["validation_username_taken"] = "Maaf, username yang sudah diambil. Sila masukkan nama pengguna lain."; +$LANG["validation_wrong_password"] = "Maaf, bahawa laluan tidak berpadanan."; +$LANG["word_about"] = "Tentang"; +$LANG["word_access"] = "Akses"; +$LANG["word_account"] = "Rekening"; +$LANG["word_account_sp"] = "Account (s)"; +$LANG["word_accounts"] = "Akaun"; +$LANG["word_action"] = "Tindakan"; +$LANG["word_active"] = "Aktif"; +$LANG["word_add"] = "Tambah"; +$LANG["word_add_rightarrow"] = "Tambah »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Pentadbiran"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Selepas"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Author:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Kembali"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Sebelum"; +$LANG["word_benefits"] = "Manfaat"; +$LANG["word_blue"] = "Blue"; +$LANG["word_cancel"] = "Batal"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Tanda"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Pelanggan"; +$LANG["word_client_c"] = "Klien:"; +$LANG["word_clients"] = "Pelanggan"; +$LANG["word_close"] = "Tutup"; +$LANG["word_code"] = "Kod"; +$LANG["word_column"] = "Kolom"; +$LANG["word_columns"] = "Kolum"; +$LANG["word_columns_sp"] = "Ruang ()"; +$LANG["word_complete"] = "Lengkap"; +$LANG["word_configuration"] = "Tatarajah"; +$LANG["word_content"] = "Isi"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Teruskan »"; +$LANG["word_copy"] = "Salinan"; +$LANG["word_custom"] = "Kebiasaan"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Tarikh"; +$LANG["word_debugging_c"] = "Debug:"; +$LANG["word_delete"] = "Menghapus"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Lompat"; +$LANG["word_disabled"] = "Cacat"; +$LANG["word_documentation"] = "Dokumentasi"; +$LANG["word_done"] = "Selesai"; +$LANG["word_drawbacks"] = "Kekurangan"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Edit"; +$LANG["word_editable"] = "Diedit"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Email"; +$LANG["word_enabled"] = "Diaktifkan"; +$LANG["word_equals"] = "Sama"; +$LANG["word_error"] = "Perhatian"; +$LANG["word_error_c"] = "Kesalahan:"; +$LANG["word_examples_c"] = "Contoh:"; +$LANG["word_external"] = "Governments"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Padang"; +$LANG["word_field_sp"] = "Padang (s)"; +$LANG["word_fields"] = "Fields"; +$LANG["word_fields_sp"] = "Field ()"; +$LANG["word_file"] = "Gambar"; +$LANG["word_file_b_uc"] = "[Fail]"; +$LANG["word_files"] = "Gambar"; +$LANG["word_filters"] = "Filter"; +$LANG["word_filters_sp"] = "Penapis ()"; +$LANG["word_for"] = "untuk"; +$LANG["word_form"] = "Borang"; +$LANG["word_form_c"] = "Borang:"; +$LANG["word_formatting"] = "Pemformatan"; +$LANG["word_forms"] = "Borang"; +$LANG["word_found"] = "Menemukan"; +$LANG["word_from"] = "Dari"; +$LANG["word_from_c"] = "From:"; +$LANG["word_general"] = "Ketua"; +$LANG["word_green"] = "Hijau"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Ketinggian"; +$LANG["word_help"] = "Bantuan"; +$LANG["word_hidden"] = "Tersembunyi"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Jam"; +$LANG["word_hours"] = "Jam"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Lengkap"; +$LANG["word_install"] = "Install"; +$LANG["word_installation"] = "Pemasangan"; +$LANG["word_internal"] = "Dalaman"; +$LANG["word_language"] = "BAHASA"; +$LANG["word_large"] = "Besar"; +$LANG["word_like"] = "Seperti"; +$LANG["word_login"] = "Masuk"; +$LANG["word_logo"] = "Imej"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Utama"; +$LANG["word_medium"] = "Sederhana"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "minit"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Modul"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Nama"; +$LANG["word_name_c"] = "Nama:"; +$LANG["word_never"] = "Jangan sekali-kali"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "LANGKAH SELANJUTNYA »"; +$LANG["word_no"] = "Tidak"; +$LANG["word_none"] = "Tak satupun"; +$LANG["word_notes"] = "Nota"; +$LANG["word_notification"] = "Notis"; +$LANG["word_number"] = "Nombor"; +$LANG["word_off"] = "Lepas"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "Di"; +$LANG["word_online"] = "Popular"; +$LANG["word_operator"] = "Pembekal"; +$LANG["word_options"] = "Pilihan"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Urutan"; +$LANG["word_other"] = "Lain"; +$LANG["word_other_c"] = "Lain:"; +$LANG["word_page"] = "Laman"; +$LANG["word_page_c"] = "Laman:"; +$LANG["word_pass"] = "Laluan"; +$LANG["word_password"] = "Password"; +$LANG["word_password_c"] = "Password:"; +$LANG["word_pending"] = "Tertunda"; +$LANG["word_permissions"] = "Perizinan"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Sebelumnya"; +$LANG["word_private"] = "Swasta"; +$LANG["word_public"] = "Umum"; +$LANG["word_purple"] = "Ungu"; +$LANG["word_recipient"] = "Penerima"; +$LANG["word_recipient_sp"] = "Recipient (s)"; +$LANG["word_red"] = "Merah"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Melepas"; +$LANG["word_remove_uc_leftarrow"] = "«MEMINDAHKAN"; +$LANG["word_reply_to"] = "Balas-ke"; +$LANG["word_reply_to_c"] = "Balas-kepada:"; +$LANG["word_required"] = "Dikehendaki"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Diselesaikan"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "berturut-turut"; +$LANG["word_search"] = "Cari"; +$LANG["word_searchable"] = "Dicari"; +$LANG["word_select"] = "Pilih"; +$LANG["word_setting"] = "Tetapan"; +$LANG["word_settings"] = "Tetapan"; +$LANG["word_show"] = "Pertunjukan"; +$LANG["word_size"] = "Saiz"; +$LANG["word_skipped"] = "Diabaikan"; +$LANG["word_small"] = "Kecil"; +$LANG["word_solution"] = "Penyelesaian"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Mula"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Subyek"; +$LANG["word_subject_c"] = "Subyek"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "Sistem"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Ujian"; +$LANG["word_text"] = "Teks"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Tema"; +$LANG["word_time"] = "Masa"; +$LANG["word_tiny"] = "Kecil"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Hari ini"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Unknown"; +$LANG["word_update"] = "Kemas"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Pengguna"; +$LANG["word_username"] = "Username"; +$LANG["word_username_c"] = "Username:"; +$LANG["word_validation"] = "Pengesahan"; +$LANG["word_value"] = "Nilai"; +$LANG["word_value_sp"] = "Undian (s)"; +$LANG["word_verified"] = "Disahkan"; +$LANG["word_verify"] = "Mengesahkan"; +$LANG["word_version"] = "Sejarah"; +$LANG["word_vertical"] = "Menegak"; +$LANG["word_view"] = "Lihat"; +$LANG["word_views"] = "Tinjauan"; +$LANG["word_warning"] = "Amaran!"; +$LANG["word_warning_c"] = "Amaran"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Selamat datang!"; +$LANG["word_width_c"] = "width:"; +$LANG["word_words"] = "Perkataan"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Kuning"; +$LANG["word_yes"] = "Ya"; \ No newline at end of file diff --git a/global/lang/mt.php b/global/lang/mt.php new file mode 100644 index 00000000..e190b4f4 --- /dev/null +++ b/global/lang/mt.php @@ -0,0 +1,1219 @@ +Twissija! Int għazilt {\$num_selected_on_page} sottomissjonijiet dwar din il-paġna {\$num_selected_on_other_pages} fil-paġni l-oħra. Jekk jogħġbok agħżel waħda mill-għażliet li ġejjin:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Twissija! Inti ma jkunux magħżula xi sottomissjonijiet dwar din il-paġna iżda li tkun ħadthom magħżula {\$num_selected_on_other_pages} fil-paġni l-oħra. Jekk jogħġbok ikkonferma li trid tneħħi dawn is-sottomissjonijiet.
    "; +$LANG["confirm_delete_view"] = "Inti żgur li int tixtieq li tiġi mħassra din View?"; +$LANG["confirm_refresh_page"] = "Int żgur li trid jġedded il-paġna? Dan se jitilfu kull tibdil li tkun għamilt."; +$LANG["confirm_save_change_before_redirect"] = "Wieħed jew aktar oqsma ġew aġġornati. Tixtieq li tiffranka bidliet tiegħek qabel ma tingħata direzzjoni ġdida?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Are you sure inti tixtieq li Smart Imla l-ismijiet kolonna database? Dan se jissostitwixxu l-valuri eżistenti tiegħek."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Din l-għażla awto-tiġġenera l-ismijiet kolonna database ibbażata fuq l-oqsma Test Wiri, sabiex il-kontenut tat-tabella database huma aktar faċli biex jinqara."; +$LANG["confirm_smart_fill_display_names"] = "Are you sure inti tixtieq li Smart Imla l-ismijiet Display? Dan se jissostitwixxu l-valuri eżistenti tiegħek."; +$LANG["confirm_ungroup_option_list"] = "Int żgur li trid ungroup din il-lista l-għażla? L-għażliet kollha se jitħalltu f'Direttiva waħdanija, lista ungrouped."; +$LANG["confirm_uninstall_module"] = "Are you sure tixtieq uninstall dan il-modulu? Id-data kollha modulu se tintilef."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Fri"; +$LANG["date_Friday"] = "Il-ġimgħa"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "It-tnejn"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sat"; +$LANG["date_Saturday"] = "Is-Sibt"; +$LANG["date_Sun"] = "Xemx"; +$LANG["date_Sunday"] = "Il-ħadd"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Il-ħamis"; +$LANG["date_Tue"] = "Tue"; +$LANG["date_Tuesday"] = "It-tlieta"; +$LANG["date_Wed"] = "Wed"; +$LANG["date_Wednesday"] = "L-Erbgħa"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "Awissu"; +$LANG["date_month_December"] = "Diċembru"; +$LANG["date_month_February"] = "Frar"; +$LANG["date_month_January"] = "Jannar"; +$LANG["date_month_July"] = "Lulju"; +$LANG["date_month_June"] = "Ġunju"; +$LANG["date_month_March"] = "Marzu"; +$LANG["date_month_May"] = "Jista '"; +$LANG["date_month_November"] = "Novembru"; +$LANG["date_month_October"] = "Ottubru"; +$LANG["date_month_September"] = "Settembru"; +$LANG["date_month_short_Apr"] = "April"; +$LANG["date_month_short_Aug"] = "Awissu"; +$LANG["date_month_short_Dec"] = "Diċembru"; +$LANG["date_month_short_Feb"] = "Frar"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Lulju"; +$LANG["date_month_short_Jun"] = "Ġunju"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Jista '"; +$LANG["date_month_short_Nov"] = "Novembru"; +$LANG["date_month_short_Oct"] = "Ottubru"; +$LANG["date_month_short_Sep"] = "Settembru"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Il-kont ta 'utent ġie mħassar."; +$LANG["notify_account_updated"] = "Kont tiegħek ġie aġġornat b'suċċess."; +$LANG["notify_add_display_values"] = "Żid Display Valuri"; +$LANG["notify_admin_menu_updated"] = "Il-menu amministrazzjoni ġiet aġġornata."; +$LANG["notify_admin_theme_overridden"] = "Tema ta 'l-amministratur ġie manwalment."; +$LANG["notify_allow_url_fopen_not_set"] = "Jiddispjacini, dan it-test ma jistax jiġi jimxu fuq il-web server tiegħek. Hija teħtieġ allow_url_fopen jiġu stabbiliti għal 1 fil-fajl php.ini tiegħek. Dan l-iffissar PHP jippermetti l-aċċess permezz ta 'fajls URL, li hija meħtieġa biex jeżegwixxu dan it-test. Tista 'tat-test hija manwalment minn uploading fajl għal dak folder permezz ta' FTP, allura jippruvaw li jkollhom aċċess għaliha fil-URL ikollok fornuti."; +$LANG["notify_change_temp_password"] = "Inti biss illoggjat bil-password temporanja. Għandek reset password tiegħek issa!"; +$LANG["notify_click_to_edit_new_submission"] = "Ikklikkja hawn biex teditja s-sottomissjoni ġdida."; +$LANG["notify_client_account_menus_updated"] = "Il-kont tal-klijent (i) ġew aġġornati lill-{\$menu_name} menu. Inti issa tista 'tħassar l-menu li qabel kienet assoċjata mal-kont (ijiet)."; +$LANG["notify_client_account_not_updated"] = "Il-kont tal-klijent ma jkunx jista 'jiġi aġġornat."; +$LANG["notify_client_account_themes_updated"] = "Il-kont tal-klijent (i) ġew aġġornati {\$theme} tema. Inti tista 'issa jiskonnettja l-tema preċedentement assoċjati mal-kont (ijiet)."; +$LANG["notify_client_account_updated"] = "Il-kont klijent ġie aġġornat b'suċċess."; +$LANG["notify_client_menu_deleted"] = "Il-menu klijent ġie mħassar."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Il-menu ġiet imħassra, imma l-kontijiet tal-klijenti li ġejjin issa m'għadx għandhom menu! Ikollok bżonn li taġġorna l-kontijiet li ġejjin:"; +$LANG["notify_client_menu_updated"] = "Il-menu klijent ġiet aġġornata."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Jiddispjacini, il-menu inti biss ippruvaw biex titħassar diġà qed jintużaw mill-klijenti elenkati hawn taħt. Sabiex jitħassar il-menu ser ikollok l-ewwel ħtieġa li jiġu assenjati l-klijenti għall-menus oħra. Ikklikkja fuq l-isem li jeditjaw il-klijent f'dak il-kont individwali, jew jassenja l-kontijiet kollha li f'menu differenti bl-użu dropdown hawn taħt."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Jiddispjacini, waħda mit-temi inti biss b'diżabilità diġà qed jintużaw mill-kontijiet tal-klijenti li ġejjin. Sabiex jiskonnettja t-tema ser ikollok l-ewwel ħtieġa li jassenja kull klijent għall-ieħor tema. Ikklikkja fuq l-isem li jeditjaw il-klijent f'dak il-kont individwali, jew jassenja l-kontijiet kollha ma 'tema bl-użu dropdown hawn taħt."; +$LANG["notify_edit_email_fields_link"] = "Ikklikkja hawn biex jispeċifikaw liema oqsma forma huma oqsma email, sabiex inti tista 'mira fil templates email tiegħek."; +$LANG["notify_edit_field_new_field"] = "Dan huwa qasam ġdid. Ikollok bżonn li taġġorna l-paġna prinċipali qabel ma jkunu jistgħu kompletament jeditjaw il-qasam."; +$LANG["notify_edit_option_list_after_save"] = "Trid tagħżel Lista Għażla u mbagħad Save Bidliet qabel ma jkunu jistgħu tbiddilha."; +$LANG["notify_email_field_config_deleted"] = "Il-konfigurazzjoni email ġie mħassar."; +$LANG["notify_email_fields_not_updated"] = "Jiddispjacini, aħna ma stajniex taġġorna l-oqsma ta 'email."; +$LANG["notify_email_fields_updated"] = "L-oqsma email ġew aġġornati."; +$LANG["notify_email_not_sent"] = "Jiddispjacini, il-posta elettronika ma tista 'tintbagħat. Jekk jogħġbok ikkuntattja l-amministratur tas-sit fl-indirizz hawn taħt."; +$LANG["notify_email_not_sent_c"] = "Jiddispjacini, l-email ma setgħux jintbagħtu:"; +$LANG["notify_email_sent"] = "L-email (i) ikunu ntbagħtu."; +$LANG["notify_email_template_deleted"] = "L-email mudell ġie mħassar."; +$LANG["notify_email_template_updated"] = "L-email template ġiet aġġornata."; +$LANG["notify_enabled_module_list_updated"] = "Il-lista ta 'moduli ippermetta ġiet aġġornata."; +$LANG["notify_error_saving_fields"] = "Kien hemm żball iffrankar l-oqsma."; +$LANG["notify_field_changes_saved"] = "Il-bidliet għall-qasam tiegħek (i) ġew salvati."; +$LANG["notify_field_options_smart_filled"] = "Għażliet qasam tiegħek ġew Mimlijin Smart."; +$LANG["notify_field_selected"] = "Il-qasam ġiet magħżula. Ikklikkja hawn biex jirritorna lejn il-lista qasam prinċipali."; +$LANG["notify_field_updated"] = "Dan il-qasam ġiet aġġornata."; +$LANG["notify_file_not_uploaded"] = "Il-fajl ma setgħetx tiġi uploaded."; +$LANG["notify_file_uploaded"] = "Il-fajl ġie uploaded b'suċċess."; +$LANG["notify_filters_not_updated"] = "Ma kien hemm żball aġġornament filtri sottomissjoni ta 'din klijent."; +$LANG["notify_filters_updated"] = "Il-filtri sottomissjoni ġew aġġornati għal dan il-klijent."; +$LANG["notify_folder_correct_permissions"] = "Dan għandu l-folder ta 'permessi korretta."; +$LANG["notify_folder_url_match"] = "Il-folder u URL jidhru li jaqblu b'mod korrett."; +$LANG["notify_folder_url_no_access"] = "Dan it-test ma jistgħux ikunu mwettqa peress li PHP ma setax ikollhom aċċess għal dak URL. Dan normalment huwa kkawżat mill-password URL protett bil-fajl. Htaccess."; +$LANG["notify_folder_url_no_match"] = "This folder-kombinazzjoni URL ma jidhirx li jaqblu."; +$LANG["notify_folder_url_unknown_error"] = "Żball mhux magħruf seħħet. Tista 'tat-test hija manwalment minn uploading fajl għal dak folder permezz ta' FTP, allura jippruvaw li jkollhom aċċess għaliha fil-URL ikollok fornuti."; +$LANG["notify_form_access_type_email_info"] = "Din il-formola għandha tip aċċess amministratur, sabiex l-ebda klijenti jkollhom aċċess għaliha u li mhumiex elenkati fl-hawn taħt dropdown."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Jiddispjacini, forma ma 'din ID ma teżistix."; +$LANG["notify_form_field_not_added"] = "Il-qasam formola ta '{\$fieldname}' ma jistgħu jiġu miżjuda."; +$LANG["notify_form_field_options_updated"] = "L-għażliet qasam formola ġew aġġornati."; +$LANG["notify_form_field_removed"] = "Il-qasam formola kienet jitneħħew b'suċċess."; +$LANG["notify_form_fields_removed"] = "L-oqsma formola kienu jitneħħew b'suċċess."; +$LANG["notify_form_not_updated_notify_admin"] = "Formola tiegħek ma setax jiġi aġġornat. Jekk jogħġbok ikkuntattja l-amministratur tas-sit li jirrapporta din il-problema."; +$LANG["notify_form_settings_updated"] = "Settings formola tiegħek ġew aġġornati b'suċċess."; +$LANG["notify_form_submission_updated"] = "Is-sottomissjoni formola ġiet aġġornata."; +$LANG["notify_form_tabs_updated"] = "Il-Korpi għal Valutazzjoni Teknika ġew aġġornati."; +$LANG["notify_form_updated"] = "Il-formola ġiet aġġornata b'suċċess."; +$LANG["notify_form_views_updated"] = "Il-formola Views ġew aġġornati."; +$LANG["notify_install_invalid_db_info"] = "Jiddispjacini, konna kapaċi li jgħaqqdu l-database jużaw l-informazzjoni li inti fornuta. Il-messaġġ ta 'żball-database huwa ritornat: {\$db_connection_error})"; +$LANG["notify_internal_form_created"] = "Formola tiegħek ġie maħluq! Tista 'jiġi kkonfigurat l-formola tiegħek permezz ta' dawn tabs."; +$LANG["notify_invalid_account_information_in_sessions"] = "L-informazzjoni maħżuna fil-kont sessjonijiet huwa invalidu. Jekk jogħġbok login għal darb'oħra 'l isfel."; +$LANG["notify_invalid_license_key"] = "Jiddispjacini, li ma jidhirx li tkun essenzjali liċenzja valida. Jekk jogħġbok jippruvaw jidħlu mill-ġdid."; +$LANG["notify_invalid_permissions"] = "Inti ma għandekx il-permessi għall-aċċess din il-paġna. Ġejt logged out."; +$LANG["notify_invalid_search_dates"] = "Jekk jogħġbok uża l datepicker li jidħlu data valida jew dati."; +$LANG["notify_invalid_upload_folder"] = "Il-folder upload huwa jew hija invalida jew ma writable."; +$LANG["notify_lang_list_updated"] = "Il-lista disponibbli lingwa UI ġiet aġġornata."; +$LANG["notify_login_info_emailed"] = "Informazzjoni login tiegħek ġie emailed lilek."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, dan il-modulu huwa diġà installat!"; +$LANG["notify_module_installed"] = "Il-modulu ikun ġie installat. Ikklikkja hawn biex jagħżel il-modulu."; +$LANG["notify_module_list_updated"] = "Il-lista modulu ġiet aġġornata."; +$LANG["notify_module_uninstalled"] = "Il-modulu ġiet uninstalled."; +$LANG["notify_module_updated"] = "Il-modulu {\$module} ġiet aġġornata biex {\$version}. Ikklikkja hawn biex tagħżel il-modulu ."; +$LANG["notify_multi_field_selected"] = "Il-qasam ġiet magħżula. Ikklikkja hawn biex tara u jeditjaw l-għażliet qasam."; +$LANG["notify_multi_field_updated"] = "Dan il-qasam ġiet aġġornata. Inti tkun kapaċi biex jiġi kkonfigurat l-għażliet qasam wara li tistabbilixxi l-formola."; +$LANG["notify_multiple_fields_found"] = "Elementi multipli kienu nstabu ma 'dan l-isem il-qasam ({\$field_name}). Dan jista 'jseħħ jekk il-paġna tiegħek fih aktar minn forma waħda jew jekk inti aċċidentalment bl-isem ta' waħda mill-forom l-istess bħal tiegħek ieħor. Jekk jogħġbok agħżel il-waħda tixtieq mil-lista hawn taħt."; +$LANG["notify_new_default_view_created"] = "Ġdida, nuqqas Ara l-oqsma kollha li fihom l-formola tiegħek ġie maħluq."; +$LANG["notify_new_submission_created"] = "Il-preżentazzjoni ġiet maħluqa. Inti tista 'tbiddilha hawn taħt."; +$LANG["notify_no_account_id_in_sessions"] = "Nru ID kont ta 'utent instab fis-sessjonijiet. Jekk jogħġbok login għal darb'oħra 'l isfel."; +$LANG["notify_no_api_installed"] = "Inti ma għandekx il-API installati"; +$LANG["notify_no_client_permissions"] = "M'hemm l-ebda settings disponibbli biex jeditjaw."; +$LANG["notify_no_email_template_selected"] = "Jekk jogħġbok agħżel l-email template."; +$LANG["notify_no_emails_defined"] = "Nru emails ġew definiti għal din il-formola. Biex żid waħda ġdida, ikklikkja l-buttuna hawn taħt."; +$LANG["notify_no_field_settings"] = "Dan it-tip il-qasam ma jkunx fihom xi settings żejda."; +$LANG["notify_no_fields_in_tab"] = "Dan tab ma fihiex l-oqsma."; +$LANG["notify_no_option_lists"] = "M'hemm l-ebda għażla listi definiti. Ikklikkja l-buttuna hawn taħt biex toħloq waħda ġdida."; +$LANG["notify_no_test_submission"] = "Formola Għodod ma jkunx irċieva sottomissjoni test b'suċċess s'issa."; +$LANG["notify_no_user_email_fields_configured"] = "Nota: jekk inti trid tibgħat email lil xi indirizz email li kienet inkluża fil-formola, inti l-ewwel jeħtieġ li jiġi kkonfigurat l-oqsma email formola."; +$LANG["notify_no_views"] = "Formola tiegħek ma jkollu ebda Views stabbilit! Ikollok bżonn mill-inqas wieħed Ara sabiex ġestjoni tad-data formola tiegħek."; +$LANG["notify_no_views_assigned_to_client_form"] = "Jidher li l-kont ta 'utent tiegħek ma ġiex assenjat lil xi Views forma, allura inti mhux se tkun tista' tara l-ebda data. Jekk jogħġbok ikkuntattja l-amministratur għall-għajnuna ulterjuri."; +$LANG["notify_no_views_defined"] = "Inti ma għandekx xi Views definiti. Inti mhux se jkunu jistgħu jaraw din il-formola ta 'sottomissjonijiet sakemm mill-inqas wieħed Ara hija maħluqa. Ikklikkja l-buttuna hawn taħt biex joħolqu l-Ara default."; +$LANG["notify_option_list_deleted"] = "Il-lista għażla ġiet imħassra."; +$LANG["notify_option_list_updated"] = "Il-lista għażla ġiet aġġornata."; +$LANG["notify_public_form_omit_list_updated"] = "Il-klijent iħallu barra l-lista għal din il-formola ġiet aġġornata."; +$LANG["notify_public_view_omit_list_updated"] = "Il-klijent iħallu barra l-lista għal dan View ġiet aġġornata."; +$LANG["notify_required_admin_pages"] = "Il-paġni li ġejjin huma meħtieġa fil-menu amministratur: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Jiddispjacini, ma kienx hemm ebda attività għal filwaqt hekk kellna log out. Jekk jogħġbok login għal darb'oħra 'l isfel."; +$LANG["notify_setup_options_updated"] = "L-għażliet setup ġew aġġornati."; +$LANG["notify_smart_fill_field_not_found"] = "Aħna ma konniex kapaċi ssib il-qasam ma 'dan l-isem ({\$field_name}) fil-formola (i) speċifikat. Inti tista 'jew manwalment stabbilit it-tip taħt il-qasam, jew ikklikkja l-buttuna Skip to jeditjaw il-qasam aktar tard."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Your fajl (s) kienu uploaded b'suċċess. Ipprova tikklikkja l-buttuna Imla Smart li erġa 'pprova. Jekk dan il-pass ma jirnexxix, ser ikollok bżonn biex jaqbżu dan il-pass u kkonfigurat l-oqsma l-formola tiegħek manally aktar tard."; +$LANG["notify_smart_fill_submitted"] = "Il-formola ġiet sottomessa. Skond id-daqs tal-formola tiegħek u numru ta 'għażliet qasam, dan jista' jieħu ftit taż-żmien."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Jiddispjacini, wieħed jew aktar tal-fajls li inti tista 'tiddaħħal ma' jittella '. Ikollok bżonn biex jaqbżu dan il-pass u kkonfigurat l-oqsma manwalment."; +$LANG["notify_submission_and_files_deleted"] = "Is-sottomissjoni u kull fajl (s) assoċjati magħha ġew imħassra b'suċċess."; +$LANG["notify_submission_copied"] = "Is-sottomissjoni ġiet ikkupjata."; +$LANG["notify_submission_copied_edit"] = "Is-sottomissjoni ġiet ikkupjata. Tista 'teditha hawn taħt."; +$LANG["notify_submission_deleted"] = "Is-sottomissjoni tħassret b'suċċess."; +$LANG["notify_submission_deleted_with_problems"] = "Is-sottomissjoni kienet imħassra, imma l-problemi li ġejjin kienu jiltaqgħu magħhom meta jippruvaw li jitħassar il-fajls li ġejjin (i):"; +$LANG["notify_submission_id_not_found"] = "Is-sottomissjoni ID ma nstabx."; +$LANG["notify_submission_not_updated"] = "Is-sottomissjoni ma jista 'jiġi aġġornat."; +$LANG["notify_submissions_and_files_deleted"] = "Is-sottomissjonijiet u kull fajl (s) assoċjati magħhom ġew imħassra b'suċċess."; +$LANG["notify_submissions_copied"] = "Ġew ikkupjati {\$num_submissions} sottomissjonijiet."; +$LANG["notify_submissions_deleted"] = "Is-sottomissjonijiet kienu mħassra b'suċċess."; +$LANG["notify_submissions_deleted_with_problems"] = "Il-sottomissjonijiet ġew imħassra, imma l-problemi li ġejjin kienu jiltaqgħu magħhom meta jippruvaw li jitħassar il-fajls li ġejjin (i):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Your email tat-test ma jista 'jintbagħat."; +$LANG["notify_theme_cache_folder_not_writable"] = "Cache folder Din it-tema hija ma writable. Sabiex tippermetti din it-tema, l {\$folder} folder jeħtieġ li qrajt sħiħa tikteb permessi."; +$LANG["notify_theme_list_updated"] = "Il-lista tema ġiet aġġornata."; +$LANG["notify_themes_settings_updated"] = "Settings tema tiegħek ġew aġġornati."; +$LANG["notify_view_deleted"] = "Il View ġie mħassar."; +$LANG["notify_view_group_deleted"] = "Il-grupp Ara ġie mħassar."; +$LANG["notify_view_missing_columns"] = "Oops! Jiddispjacini, dan Ara ma ġiex kompletament stabbilit s'issa."; +$LANG["notify_view_missing_columns_admin_fix"] = "Ikklikkja hawn biex jispeċifikaw liema oqsma għandhom jidhru bħala kolonni f'din il-paġna."; +$LANG["notify_view_updated"] = "Il View ġiet aġġornata."; +$LANG["notify_your_email_sent"] = "Your email kienet intbagħtet b'suċċess."; +$LANG["phrase_100_per_page"] = "100 għal kull paġna"; +$LANG["phrase_10_per_page"] = "10 għal kull paġna"; +$LANG["phrase_15_per_page"] = "15 għal kull paġna"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 għal kull paġna"; +$LANG["phrase_25_per_page"] = "25 għal kull paġna"; +$LANG["phrase_2_code"] = "2. Kodiċi"; +$LANG["phrase_2_columns"] = "Kolonni 2"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "Kolonni 3"; +$LANG["phrase_4_columns"] = "Kolonni 4"; +$LANG["phrase_50_per_page"] = "50 għal kull paġna"; +$LANG["phrase_accepting_submissions"] = "(sottomissjonijiet taċċetta)"; +$LANG["phrase_access_admin_account_c"] = "Tista 'aċċess għall-kont amministrazzjoni tiegħek hawnhekk:"; +$LANG["phrase_access_type"] = "Aċċess Tip"; +$LANG["phrase_account_info"] = "Kont Information"; +$LANG["phrase_account_settings"] = "Kont Settings"; +$LANG["phrase_action_needed"] = "Azzjoni Needed"; +$LANG["phrase_add_client"] = "Żid Klijent"; +$LANG["phrase_add_client_menu"] = "Żid Klijent Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Żid default settings »"; +$LANG["phrase_add_field"] = "Żid Field"; +$LANG["phrase_add_fields"] = "Żid Oqsma"; +$LANG["phrase_add_fields_rightarrow"] = "Żid Qasam (s) »"; +$LANG["phrase_add_form"] = "Żid Form"; +$LANG["phrase_add_form_external"] = "Żid Formola - Esterni"; +$LANG["phrase_add_form_internal"] = "Żid Formola - Intern"; +$LANG["phrase_add_new_group_rightarrow"] = "Żid New Grupp »"; +$LANG["phrase_add_num_rows"] = "Żid {\$number} Ringiela (i)"; +$LANG["phrase_add_row"] = "Żid Row »"; +$LANG["phrase_add_submission_button"] = "Żid Button Sottomissjoni"; +$LANG["phrase_add_view_rightarrow"] = "Żid Ara »"; +$LANG["phrase_adding_multi_page_form"] = "Żieda ta 'forma multi-paġna ma' l-API"; +$LANG["phrase_adding_single_page_form"] = "Żieda ta 'paġna waħda ta' forma ma 'l-API"; +$LANG["phrase_admin_menu"] = "Amministratur Menu"; +$LANG["phrase_admin_only"] = "Amministratur biss"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Amministratur Tema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Advanced settings »"; +$LANG["phrase_all_X_results_selected"] = "Kollha {\$numresults} Riżultati Magħżula"; +$LANG["phrase_all_clients"] = "Klijenti kollha"; +$LANG["phrase_all_clients_except_c"] = "Klijenti kollha ħlief:"; +$LANG["phrase_all_clients_have_access"] = "(klijenti kollha jkollhom aċċess)"; +$LANG["phrase_all_fields"] = "L-oqsma kollha"; +$LANG["phrase_all_fields_displayed"] = "L-oqsma kollha huma murija"; +$LANG["phrase_all_statuses"] = "All status"; +$LANG["phrase_all_submissions"] = "Is-sottomissjonijiet kollha"; +$LANG["phrase_allow_fields_edited"] = "Ħalli l-oqsma li jridu jiġu editjati"; +$LANG["phrase_alphanumeric"] = "Alfanumeriku (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Applika TIMEZONE offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Jassenja l-kontijiet tal-klijenti elenkati għall {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Jassenja l-kontijiet tal-klijenti elenkati għall {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Fil-Tmiem"; +$LANG["phrase_at_start"] = "Fil-Bidu"; +$LANG["phrase_author_link"] = "Link Author"; +$LANG["phrase_auto_disable_account"] = "kont Auto-jiskonnettja wara # naqas tentattivi login"; +$LANG["phrase_auto_size"] = "Auto-daqs"; +$LANG["phrase_available_clients"] = "Clients Disponibbli"; +$LANG["phrase_available_fields"] = "Oqsma disponibbli"; +$LANG["phrase_available_option_lists"] = "Listi disponibbli Għażla"; +$LANG["phrase_available_swatches"] = "Swatches disponibbli"; +$LANG["phrase_available_swatches_c"] = "Swatches disponibbli:"; +$LANG["phrase_available_tabs"] = "Tabs disponibbli"; +$LANG["phrase_available_views"] = "Views Disponibbli"; +$LANG["phrase_awaiting_form_submission"] = "Fl-istennija tal-sottomissjoni formola."; +$LANG["phrase_back_to_field_list"] = "«lura għall-qasam ta 'lista"; +$LANG["phrase_back_to_search_results"] = "lura għall-tiftix riżultati"; +$LANG["phrase_base_view_on"] = "Ara l-bażi fuq ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Bidla Login Information"; +$LANG["phrase_characters_limit_p"] = "karattri limitu."; +$LANG["phrase_check_db_settings_try_again"] = "Jekk jogħġbok iċċekkja settings database tiegħek u ikklikkja l-buttuna Kompli pprova."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Iċċekkja URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Clear Lista Tagħtix"; +$LANG["phrase_client_account_settings"] = "Client Kont Settings"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Client Map Filtri »"; +$LANG["phrase_client_may_edit"] = "Klijent jista edit"; +$LANG["phrase_client_menu"] = "Client Menu"; +$LANG["phrase_clients_can_access_form"] = "Klijenti li jistgħu jaċċedu għall-formola"; +$LANG["phrase_clients_can_access_view"] = "Klijenti li jistgħu jaċċedu għall-View"; +$LANG["phrase_clients_cannot_access_form"] = "Klijenti li ma jistgħux jaċċessaw il-forma"; +$LANG["phrase_clients_cannot_access_view"] = "Klijenti li ma jistgħux jaċċessaw il View"; +$LANG["phrase_clients_may_edit"] = "Clients jista edit"; +$LANG["phrase_code_c"] = "Error Kodiċi:"; +$LANG["phrase_code_markup_field"] = "Kodiċi / Markup Qasam"; +$LANG["phrase_code_markup_type"] = "Kodiċi / Markup Tip"; +$LANG["phrase_codes_c"] = "Error Kodiċi:"; +$LANG["phrase_column_width"] = "Wisa Kolonna"; +$LANG["phrase_company_name"] = "Isem tal-Kumpanija"; +$LANG["phrase_configure_form_email_fields"] = "Kkonfigurat Form Email Oqsma"; +$LANG["phrase_confirm_folder_url_match"] = "Ikkonferma Folder-URL Match"; +$LANG["phrase_connect_rows"] = "Għamel kuntatt ringieli"; +$LANG["phrase_copy_email_settings_from"] = "Kopja Email Settings Minn ..."; +$LANG["phrase_copy_settings_from"] = "Kopja Settings Minn ..."; +$LANG["phrase_core_fields"] = "Core Oqsma"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Create Account"; +$LANG["phrase_create_admin_account"] = "Admin Create Account"; +$LANG["phrase_create_config_file"] = "Oħloq konfigurazzjoni File"; +$LANG["phrase_create_database_tables"] = "Oħloq Tabelli Database"; +$LANG["phrase_create_default_view"] = "Oħloq Ara Default"; +$LANG["phrase_create_file"] = "Oħloq File"; +$LANG["phrase_create_group"] = "Waqqaf il-grupp"; +$LANG["phrase_create_new_email"] = "Create New Email"; +$LANG["phrase_create_new_menu"] = "Create New Menu"; +$LANG["phrase_create_new_option_list"] = "Oħloq Lista Għażla Ġodda"; +$LANG["phrase_create_new_option_list_group"] = "Oħloq ġdid tal-grupp lista għażla"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Oħloq Lista Għażla Ġdid »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Oħloq New Grupp Ara"; +$LANG["phrase_custom_display_format"] = "Format tad-dwana tal-Wiri"; +$LANG["phrase_custom_recipient"] = "Custom Recipient"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Blu skur"; +$LANG["phrase_data_type"] = "Data tat-Tip"; +$LANG["phrase_database_hostname"] = "Hostname Database"; +$LANG["phrase_database_name"] = "Isem Database"; +$LANG["phrase_database_password"] = "Password Database"; +$LANG["phrase_database_settings"] = "Database Settings"; +$LANG["phrase_database_setup"] = "Database Setup"; +$LANG["phrase_database_table_prefix"] = "Prefiss tabella Database"; +$LANG["phrase_database_username"] = "Username Database"; +$LANG["phrase_date_format"] = "Data Format"; +$LANG["phrase_db_column"] = "DB Kolonna"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Default Klijent Kont Tema"; +$LANG["phrase_default_date_field_search_value"] = "Data default qasam tat-tiftix valur"; +$LANG["phrase_default_language"] = "Default Lingwa"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default Sessjonijiet timeout"; +$LANG["phrase_default_sort_order"] = "Ordni Sort Default"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Tema"; +$LANG["phrase_default_value"] = "Valur awtomatiċi"; +$LANG["phrase_default_values"] = "Valuri awtomatiċi"; +$LANG["phrase_default_values_new_submissions"] = "Default valuri għall Sottomissjonijiet Ġodda"; +$LANG["phrase_delete_field"] = "Ħassar Qasam"; +$LANG["phrase_delete_form"] = "Ħassar Form"; +$LANG["phrase_delete_row"] = "Ħassar Ringiela"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Ħassar files assoċjati meta tħassir sottomissjoni"; +$LANG["phrase_delete_view"] = "Ħassar Ara"; +$LANG["phrase_disconnect_rows"] = "Skonnettja ringieli"; +$LANG["phrase_display_email"] = "Display Email"; +$LANG["phrase_display_name"] = "Isem Display"; +$LANG["phrase_display_text"] = "Display Test"; +$LANG["phrase_display_value"] = "Display Valur"; +$LANG["phrase_edit_admin_menu"] = "Edit Admin Menu"; +$LANG["phrase_edit_client"] = "Edit Klijent"; +$LANG["phrase_edit_client_menu"] = "Edit Klijent Menu"; +$LANG["phrase_edit_email_template"] = "Edit Email Template"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Edit Qasam:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit tip aċċess forma]"; +$LANG["phrase_edit_option_list"] = "Edit Lista Għażla"; +$LANG["phrase_edit_submission"] = "Edit Sottomissjoni"; +$LANG["phrase_edit_submission_label"] = "Edit Label Sottomissjoni"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "Email Settings"; +$LANG["phrase_email_template"] = "Email template"; +$LANG["phrase_email_template_name"] = "Email template isem"; +$LANG["phrase_error_learn_more"] = "Tgħallem aktar dwar dan l-iżball."; +$LANG["phrase_error_text_intro"] = "Jekk jogħġbok tiffissa l-iżball li ġejjin (i) u terġa 'tissottometti:"; +$LANG["phrase_errors_learn_more"] = "Ikklikkja fuq il-kodiċi żball li jitgħallmu aktar."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Esterni Formola"; +$LANG["phrase_external_form_info"] = "Informazzjoni esterni Formola"; +$LANG["phrase_external_your_own_form"] = "Esterni (formola tiegħek stess)"; +$LANG["phrase_field_comments"] = "Qasam Kummenti"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Options Field"; +$LANG["phrase_field_size"] = "Daqs Field"; +$LANG["phrase_field_skipped"] = "Field Skipped"; +$LANG["phrase_field_specific_settings"] = "Kamp speċifiċi Settings"; +$LANG["phrase_field_type"] = "Field Tip"; +$LANG["phrase_field_type_no_validation"] = "M'hemm l-ebda regoli ta 'validazzjoni disponibbli għal dan it-tip il-qasam."; +$LANG["phrase_field_types"] = "Field Tipi"; +$LANG["phrase_field_value"] = "Field Valur"; +$LANG["phrase_field_values_to_display_values"] = "Field Valuri »Display Valuri"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing jmiss"; +$LANG["phrase_finalize_form"] = "Jiffinalizzaw Form"; +$LANG["phrase_first_name"] = "Isem"; +$LANG["phrase_footer_text"] = "Footer Test"; +$LANG["phrase_for_any_form_submission"] = "Għal kull formola ta 'sottomissjoni"; +$LANG["phrase_for_view_submissions"] = "Sottomissjonijiet biss li jaqblu fil-View (s)"; +$LANG["phrase_forgot_password"] = "Forgot your Password?"; +$LANG["phrase_form_already_selected"] = "Form diġa magħżula"; +$LANG["phrase_form_email_field_b_c"] = "[Qasam Formola] email:"; +$LANG["phrase_form_email_field_configuration"] = "Form Email Field Konfigurazzjoni"; +$LANG["phrase_form_email_fields"] = "Email Oqsma Formola"; +$LANG["phrase_form_field"] = "Form Field"; +$LANG["phrase_form_field_contents"] = "Qasam Kontenut Formola"; +$LANG["phrase_form_field_name"] = "Form Isem Field"; +$LANG["phrase_form_field_placeholders"] = "Qasam placeholders Formola"; +$LANG["phrase_form_fields"] = "Form Oqsma"; +$LANG["phrase_form_info"] = "Formola ta 'Informazzjoni"; +$LANG["phrase_form_info_2"] = "2. Formola ta 'Informazzjoni"; +$LANG["phrase_form_list"] = "Lista forma"; +$LANG["phrase_form_name"] = "Isem Form"; +$LANG["phrase_form_page"] = "Form Page"; +$LANG["phrase_form_placeholders"] = "Form Placeholders"; +$LANG["phrase_form_submission"] = "Form Sottomissjoni"; +$LANG["phrase_form_submissions"] = "Form Submissions"; +$LANG["phrase_form_type"] = "Formola Tip"; +$LANG["phrase_form_url"] = "Form URL"; +$LANG["phrase_form_urls"] = "URLs Formola"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formoli assenjat lil xi kont"; +$LANG["phrase_forms_page_default_message"] = "Paġna Formoli nuqqas messaġġ"; +$LANG["phrase_ft_installation"] = "Form Installazzjoni Tools Script"; +$LANG["phrase_full_width"] = "Wisa 'Sħiħa"; +$LANG["phrase_getting_started"] = "ser tibda"; +$LANG["phrase_global_placeholders"] = "Placeholders Globali"; +$LANG["phrase_group_name"] = "Isem Grupp"; +$LANG["phrase_group_options_q"] = "Għażliet Grupp?"; +$LANG["phrase_group_rows"] = "Grupp ringieli"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Kulur jenfasizzaw"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Lista Għażla importazzjoni »"; +$LANG["phrase_input_length"] = "Tul input"; +$LANG["phrase_installation_help"] = "Għajnuna Installazzjoni"; +$LANG["phrase_internal_form"] = "Intern Formola"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Huwa dan il-forom multi-paġna?"; +$LANG["phrase_label_response_placeholders"] = "Tikketta / Rispons placeholders"; +$LANG["phrase_large_300px"] = "Kbar (300px)"; +$LANG["phrase_large_400px"] = "Kbar (400px)"; +$LANG["phrase_last_7_days"] = "Aħħar 7 ijiem"; +$LANG["phrase_last_logged_in"] = "Fl-aħħar Logged"; +$LANG["phrase_last_modified"] = "Immodifikat l-aħħar"; +$LANG["phrase_last_modified_date"] = "Immodifikat l-aħħar data"; +$LANG["phrase_last_name"] = "Kunjom"; +$LANG["phrase_letters_only"] = "Ittri biss"; +$LANG["phrase_light_brown"] = "Dawl Brown"; +$LANG["phrase_limit_email_content"] = "Limitu tal-kontenut email lil oqsma View"; +$LANG["phrase_loading_ellipsis"] = "Tagħbija ..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Log fl kif dan l-utent"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Username"; +$LANG["phrase_logo_link_url"] = "Link Logo URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Main Settings"; +$LANG["phrase_manage_client"] = "Manage Klijent"; +$LANG["phrase_manage_client_omit_list"] = "Manage Klijent Tagħtix Lista"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Tul Max"; +$LANG["phrase_max_length_words_chars"] = "- It-tul Max (kliem / Chars)"; +$LANG["phrase_may_add_submissions"] = "Jista 'jżid Sottomissjonijiet"; +$LANG["phrase_may_copy_submissions"] = "Jista 'jikkopja s-sottomissjonijiet"; +$LANG["phrase_may_delete_submissions"] = "Tista 'tħassar Sottomissjonijiet"; +$LANG["phrase_medium_150px"] = "Medju (150px)"; +$LANG["phrase_medium_200px"] = "Medju (200px)"; +$LANG["phrase_menu_name"] = "Isem Menu"; +$LANG["phrase_menu_type"] = "Menu Tip"; +$LANG["phrase_min_password_length"] = "tul il-password minimu"; +$LANG["phrase_module_description"] = "Modulu Deskrizzjoni"; +$LANG["phrase_module_info"] = "Modulu ta 'Informazzjoni"; +$LANG["phrase_module_nav"] = "Modulu Nav"; +$LANG["phrase_month_to_date"] = "Xahar sal-lum"; +$LANG["phrase_multi_select"] = "Multi-tagħżel"; +$LANG["phrase_multi_select_dropdown"] = "Multi-dropdown tagħżel"; +$LANG["phrase_multiple_fields_found"] = "Multiple Oqsma Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Isem / Isem l-aħħar"; +$LANG["phrase_new_blank_email"] = "New Blank Email"; +$LANG["phrase_new_blank_option_list"] = "Ġdid Lista Blank Għażla"; +$LANG["phrase_new_blank_view"] = "New Blank View"; +$LANG["phrase_new_ft_installation"] = "New Form Tools Installazzjoni"; +$LANG["phrase_new_option_list"] = "Lista ġodda Għażla"; +$LANG["phrase_new_password"] = "New Password"; +$LANG["phrase_new_password_reenter"] = "New Password (jekk jogħġbok jidħlu mill-ġdid)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "Ara l-ġodda - L-oqsma kollha"; +$LANG["phrase_next_client"] = "li jmiss klijent »"; +$LANG["phrase_next_field"] = "»qasam li jmiss"; +$LANG["phrase_next_form"] = "li jmiss f'forma »"; +$LANG["phrase_next_view"] = "View jmiss »"; +$LANG["phrase_no_clients"] = "Nru klijenti"; +$LANG["phrase_no_limit"] = "Nru Limitu"; +$LANG["phrase_no_offset"] = "Nru offset"; +$LANG["phrase_no_option_lists_available"] = "Ebda għażliet listi disponibbli."; +$LANG["phrase_no_views"] = "Nru Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Nru Views bil-filtri definiti)"; +$LANG["phrase_none_not_recommended"] = "Xejn (mhux rakkomandat)"; +$LANG["phrase_not_assigned_to_option_list"] = "Dan il-qasam ma jkunx assenjat lil Lista Għażla."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "MA Indaqs"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "MHUX Bħall"; +$LANG["phrase_not_visible_to_client"] = "(mhux viżibbli lill-klijent)"; +$LANG["phrase_num_clients_per_page"] = "Num Clients Per Page"; +$LANG["phrase_num_emails_per_page"] = "Emails Num Per Page"; +$LANG["phrase_num_fields"] = "Numru ta 'Oqsma"; +$LANG["phrase_num_forms_per_page"] = "Formoli Num Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Menus Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Moduli Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Num Listi Għażla Per Page"; +$LANG["phrase_num_options"] = "Num Għażliet"; +$LANG["phrase_num_rows"] = "Num Ringieli"; +$LANG["phrase_numbers_only"] = "Numri biss"; +$LANG["phrase_often_localhost"] = "(ħafna drabi "localhost")"; +$LANG["phrase_on_form_submission"] = "Fis-sottomissjoni forma"; +$LANG["phrase_one_char_number"] = "Mill-inqas wieħed karattru huwa numru (0-9)"; +$LANG["phrase_one_char_upper"] = "Għall-inqas waħda karattru huwa majjuskoli ta 'kulur"; +$LANG["phrase_one_special_char"] = "Mill-inqas wieħed mill {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(biss klijenti speċifiċi jkollhom aċċess)"; +$LANG["phrase_open_form_in_dialog"] = "Forma tiftaħ tieqa dialog"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Open din il-formola tieqa ġdida tab /"; +$LANG["phrase_option_list"] = "Lista Għażla"; +$LANG["phrase_option_list_name"] = "Isem Lista Għażla"; +$LANG["phrase_option_list_or_contents"] = "Lista Għażla / Werrej"; +$LANG["phrase_option_lists"] = "Għażla Listi"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Titoli Page"; +$LANG["phrase_pass_on"] = "Pass dwar"; +$LANG["phrase_password_min"] = "Għandu jkun għall-inqas {\$length} karattri."; +$LANG["phrase_password_one_number"] = "Għandu jkun fiha mill-inqas numru wieħed (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Għandu jkun fiha ittra kapitali mill-inqas wieħed."; +$LANG["phrase_password_requirements_c"] = "Password rekwiżiti:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Għandu jkun fiha mill-inqas wieħed mill-karattri li ġejjin: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permessi / Settings Oħrajn"; +$LANG["phrase_permitted_file_types"] = "Tipi permess fajl"; +$LANG["phrase_phone_number"] = "Numru tat-telefon"; +$LANG["phrase_phone_number_format"] = "Format numru tat-telefon"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max permess tal-fajl upload:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Jekk jogħġbok Ikkonferma"; +$LANG["phrase_please_enter_license_key"] = "Jekk jogħġbok jidħol ewlenin liċenzja tiegħek"; +$LANG["phrase_please_select"] = "Please Select"; +$LANG["phrase_please_select_form"] = "Jekk jogħġbok agħżel formola"; +$LANG["phrase_prev_client"] = "«Prev klijent"; +$LANG["phrase_prev_form"] = "«Prev forma"; +$LANG["phrase_prevent_password_reuse"] = "mill-ġdid Prevenzjoni ta 'użu ta' passwords # aħħar"; +$LANG["phrase_previous_field"] = "qasam preċedenti «"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "«Prev Ara"; +$LANG["phrase_program_name"] = "Isem Program"; +$LANG["phrase_public_form_omit_list"] = "Pubbliku Form Tagħtix List"; +$LANG["phrase_public_view_omit_list"] = "View Public Tagħtix List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Kien hemm problema bil-mistoqsija li ġejja:"; +$LANG["phrase_radio_buttons"] = "Buttuni Radio"; +$LANG["phrase_random_form_submission"] = "Sottomissjoni forma Random"; +$LANG["phrase_re_enter_password"] = "Jidħlu mill-ġdid Password"; +$LANG["phrase_recipient_type"] = "Tip Recipient"; +$LANG["phrase_redirect_url"] = "Direzzjoni ġdida URL"; +$LANG["phrase_refresh_list"] = "Lista Riffriskar"; +$LANG["phrase_refresh_module_list"] = "Riffriskar Lista Modulu"; +$LANG["phrase_refresh_page"] = "Riffriskar Page"; +$LANG["phrase_refresh_theme_list"] = "Riffriskar Lista Tema"; +$LANG["phrase_register_new_email"] = "Register New Email"; +$LANG["phrase_remaining_characters"] = "karattri li jibqa"; +$LANG["phrase_remaining_words"] = "kliem jibqa '"; +$LANG["phrase_remove_tabs"] = "Neħħi Tabs"; +$LANG["phrase_required_password_chars"] = "karattri Meħtieġa password"; +$LANG["phrase_resend_test_submission"] = "Resend Test Sottomissjoni"; +$LANG["phrase_return_form_list"] = "Return to List Form"; +$LANG["phrase_row_selected"] = "{\$num_rows} ringiela magħżula"; +$LANG["phrase_rows_selected"] = "{\$num_rows} ringieli magħżula"; +$LANG["phrase_sample_data"] = "Kampjun tad-Data"; +$LANG["phrase_save_changes"] = "Ħlief Bidliet"; +$LANG["phrase_search_keyword"] = "Keyword tfittxija"; +$LANG["phrase_security_settings"] = "Sigurtà Settings"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Select kollha {\$numresults} Riżultati"; +$LANG["phrase_select_all_on_page"] = "Select All Fit Page"; +$LANG["phrase_select_date"] = "Agħżel data"; +$LANG["phrase_select_field"] = "Agħżel Qasam"; +$LANG["phrase_select_swatch"] = "Agħżel swatch"; +$LANG["phrase_selected_clients"] = "Clients Magħżula"; +$LANG["phrase_selected_views"] = "Views Magħżula"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Test Send Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessjonijiet timeout"; +$LANG["phrase_setting_value"] = "Twaqqif Valur"; +$LANG["phrase_setup_options"] = "Options Setup"; +$LANG["phrase_show_all"] = "Show Kollha"; +$LANG["phrase_show_form"] = "Uri Formola"; +$LANG["phrase_size_large"] = "Kbar (KITBA)"; +$LANG["phrase_size_medium"] = "Medju (<= 256 Chars)"; +$LANG["phrase_size_small"] = "Żgħar (<= 20 Chars)"; +$LANG["phrase_size_tiny"] = "Żgħar ħafna (<= 5 Chars)"; +$LANG["phrase_size_very_large"] = "Kbar ħafna (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Pass Skip"; +$LANG["phrase_small_100px"] = "Żgħar (100px)"; +$LANG["phrase_small_80px"] = "Żgħar (80px)"; +$LANG["phrase_smart_fill"] = "Smart Imla"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart oqsma Imla minn:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Imla User Documentation »"; +$LANG["phrase_sort_as"] = "Sort Kif"; +$LANG["phrase_special_fields"] = "Oqsma Speċjali"; +$LANG["phrase_standard_fields"] = "Standard Oqsma"; +$LANG["phrase_standard_filters"] = "Standard Filtri »"; +$LANG["phrase_step_1"] = "Stadju 1"; +$LANG["phrase_step_2"] = "Pass 2"; +$LANG["phrase_step_3"] = "Stadju 3"; +$LANG["phrase_step_4"] = "Pass 4"; +$LANG["phrase_step_5"] = "Pass 5"; +$LANG["phrase_step_6"] = "Pass 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Istrixxa ta 'widnejn fil-sottomissjonijiet forma"; +$LANG["phrase_subject_line"] = "Suġġett Line"; +$LANG["phrase_submission_date"] = "Data Sottomissjoni"; +$LANG["phrase_submission_id"] = "Sottomissjoni ID"; +$LANG["phrase_submission_made"] = "Sottomissjoni magħmula: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Sottomissjoni tat-Tip"; +$LANG["phrase_submissions_per_page"] = "Sottomissjonijiet kull Page"; +$LANG["phrase_system_check"] = "Sistema ta 'Kontroll"; +$LANG["phrase_system_fields_no_validation"] = "Inti ma jista 'jżid l-validazzjoni għal oqsma tas-sistema."; +$LANG["phrase_system_time_offset"] = "Sistema tal-ħin Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Permessi Folder"; +$LANG["phrase_test_submission"] = "Sottomissjoni tat-test"; +$LANG["phrase_test_submission_3"] = "3. Sottomissjoni tat-test"; +$LANG["phrase_test_submission_received"] = "Test Sottomissjoni Received"; +$LANG["phrase_text_and_html"] = "Test HTML &"; +$LANG["phrase_text_email"] = "Test Email"; +$LANG["phrase_text_template"] = "Test Template"; +$LANG["phrase_the_previous_month"] = "Ta 'qabel Xahar"; +$LANG["phrase_theme_description"] = "Deskrizzjoni Tema"; +$LANG["phrase_theme_info"] = "Tema Info"; +$LANG["phrase_tiny_30px"] = "Ċkejkna (30px)"; +$LANG["phrase_tiny_50px"] = "Ċkejkna (50px)"; +$LANG["phrase_total_results_c"] = "Riżultati Total:"; +$LANG["phrase_type_c"] = "Tip Error:"; +$LANG["phrase_unselect_all"] = "Unselect Kollha"; +$LANG["phrase_update_accounts"] = "Kontijiet Update"; +$LANG["phrase_update_email_template"] = "Update Email Template"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Ordni Aġġornament"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "File upload"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Path Upload folder"; +$LANG["phrase_upload_folder_url"] = "Folder URL Upload"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Uża valur ta 'default?"; +$LANG["phrase_used_by_num_form_fields"] = "Użati minn Formola Oqsma #"; +$LANG["phrase_uses_swatches"] = "Użi swatches"; +$LANG["phrase_valid_email"] = "Validu Email"; +$LANG["phrase_validation_error"] = "Żball ta 'validazzjoni"; +$LANG["phrase_validation_rule"] = "Artikolu Validazzjoni"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Ara l-Grupp"; +$LANG["phrase_view_id"] = "Ara l-ID"; +$LANG["phrase_view_name"] = "Isem View"; +$LANG["phrase_view_placeholders"] = "Ara placeholders"; +$LANG["phrase_view_submissions"] = "View Submissions"; +$LANG["phrase_view_uploaded_files"] = "fehma uploaded fajls"; +$LANG["phrase_viewing_range"] = "[viewing {\$startnum} li {\$endnum}]"; +$LANG["phrase_when_sent"] = "Meta jintbagħtu"; +$LANG["phrase_when_submission_is_deleted"] = "Meta l-sottomissjoni hija mħassra"; +$LANG["phrase_when_submission_is_edited"] = "Meta l-sottomissjoni hija editjat"; +$LANG["phrase_who_can_access"] = "Min jista 'aċċess?"; +$LANG["phrase_word_limit_p"] = "limitu kelma."; +$LANG["phrase_year_to_date"] = "Sena sal-lum"; +$LANG["phrase_yes_for_all_views"] = "Iva, għal kulħadd Views"; +$LANG["phrase_yes_for_specific_views"] = "Iva, għall Views speċifiċi"; +$LANG["phrase_your_account"] = "Your Account"; +$LANG["phrase_your_email"] = "Your email"; +$LANG["phrase_your_email_address"] = "Your email address"; +$LANG["processing_form_disabled"] = "Jiddispjacini, din il-formola ġiet b'diżabilità."; +$LANG["processing_form_incomplete"] = "Jiddispjacini, din il-formola ma jidhirx li jkunu kompletament stabbiliti minn ġewwa Formola Tools. Il-kawża l-aktar probabbli ta 'din il-problema hija li tkun neħħejt l-form_tools_initialize_form "qasam forma moħbija, iżda ma lestewx l-passi kollha tal-" Żid Formola "proċess.

    Jekk jogħġbok login u tirrevedi l-konfigurazzjoni formola."; +$LANG["processing_init_complete"] = "Grazzi! Sottomissjoni tat-test tiegħek ġiet stabbilita permezz ta b'suċċess. Jekk jogħġbok jirritorna lejn il-Formola Tools panel Amministrazzjoni u kklikkja l-"Riffriskar ta '" buttuna fil-qiegħ tal-Pass Żid Formola 3 paġna finitura twaqqif ta' formola tiegħek."; +$LANG["processing_invalid_form_id"] = "Jiddispjacini, dan ma jidhirx li huwa ID forma valida."; +$LANG["processing_no_form_id"] = "process.php teħtieġ formola l-identità għall-ipproċessar. Kun ċert li l-formola tiegħek fiha qasam moħbija bl-isem "form_tools_form_id" li għaddej matul il-formola l-identità."; +$LANG["processing_no_form_url_for_recaptcha"] = "Formola Għodod mhix f'pożizzjoni li tiddetermina fejn biex idawwru meta dawn jonqsu li jidħlu fil-CAPTCHA kif suppost. Jekk jogħġbok jgħaddu fil-qasam moħbija mal-form_tools_form_url isem li jkun fih il-URL tal-formola."; +$LANG["processing_no_post_vars"] = "process.php mhux qed jirċievi xi data. Nota: din l-iskrittura ma jistax ikun imgħobbi direttament fil-browser tiegħek.
    Kun ċert li l-formola tiegħek hija li jibgħat permezz POST."; +$LANG["processing_no_redirect_url"] = "Il-preżentazzjoni ġiet ipproċessata korrettement, imma int ma speċifikaw URL rindirizz għal din il-formola! Edit-formola tiegħek fil-UI Tools Formola u żid il-URL direzzjoni ġdida."; +$LANG["special_language"] = "Maltese"; +$LANG["special_language_locale"] = "Maltese"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Kollha kontijiet tal-klijenti ġodda se jinħolqu mal-settings u l-permessi definiti hawn taħt. Li jiskarta l-iffissar għal klijent partikolari, jeditjaw il-kont tal-klijent u taż-żjara Settings tab tagħhom."; +$LANG["text_add_form_choose_integration_method"] = "Agħżel liema metodu li trid tuża biex jintegraw l-formola tiegħek bil Għodod Formola."; +$LANG["text_add_form_code_submission_benefits"] = "Dan il-metodu juża l- API Formola Għodod , inklużi fil-iskrittura Għodda prinċipali Formola. L-API jipprovdi numru ta 'funzjonijiet utli li jagħmlu l-impjieg ta' integrazzjoni formola tiegħek bil-Formola Għodod sempliċi kemm jista 'jkun. M'hemm l-ebda restrizzjonijiet kif formola tiegħek tista 'tiġi ppreżentata meta tuża l-API. Tista 'tissottometti l-kontenut f'darba waħda, jew paġna minn paġna, inti tista' żżid stess tad-dwana tiegħek server-ġenb ta 'validazzjoni, immaġini CAPTCHA, inti tista' tagħżel li tippreżenta l-informazzjoni issa, imma biss għid li juru l-preżentazzjoni fil-Formola Għodda UI f'data aktar tard (ara l- Sottomissjonijiet ffinalizzat sezzjoni fid-dokumentazzjoni jgħinu API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Sabiex jagħtu l-informazzjoni formola tiegħek permezz PHP, formola tiegħek għandu jkun jinsab fl-istess websajt bħal din l-installazzjoni Għodod Formola. It-tieni nett, għall-utenti mhux tekniku u novizzi Għodda Formola, dan il-metodu jista 'jkun ftit fl-ewwel intimidanti. Iżda hemm ħafna ta 'dokumentazzjoni biex jgħinuk, inklużi żewġ sessjonijiet tutorjali sempliċi għall-integrazzjoni forom wieħed u multi-paġna tiegħek (dawn huma marbuta ma' fuq pass aktar tard)."; +$LANG["text_add_form_direct_submission_benefits"] = "Dan huwa l-eħfef mod biex jissottomettu l-formola tiegħek għall-Formola Tools. Hija ma jeħtieġ l-ebda għarfien tal-PHP u teħtieġ biss bidla żgħira ħafna għall-formola tiegħek. Hija xi ħaġa kbira għal forom iżgħar fejn inti tixtieq li biss jippreżentaw l-informazzjoni għad-database imbagħad direzzjoni ġdida l-utent għal thankyou "page."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Dan il-metodu sottomissjoni hija sempliċi ħafna sabiex tintuża, imma ma tipprovdix kontroll ta 'ħafna għal forom aktar ikkumplikati. Forom multi-paġna jew forom li jeħtieġu server-validazzjoni sekondarji huma adattati aħjar għall-metodu tat-tieni: sottomissjoni permezz ta 'l API Tools Formola."; +$LANG["text_add_form_field_types1"] = "Kważi isir! Din il-paġna tipprova ssib oqsma kollha formola tiegħek u jiddeterminaw tipi qasam tagħhom. Ikklikkja l-buttuna Imla Smart fuq il-lemin biex tibda. Inti ser tkun biss jitħallew ikomplu meta l-azzjonijiet kollha ġew solvuti - kwistjonijiet li jeħtieġu attenzjoni tiegħek jidhru fil- "Azzjoni Meħtieġ " kolonna."; +$LANG["text_add_form_field_types2"] = "Jekk il-formola tiegħek ma tkunx fil-HTML, ikklikkja l-buttuna Pass Aqbeż għall tipproċedi. Dan kollha jistgħu jiġu kkonfigurati aktar tard."; +$LANG["text_add_form_field_types3"] = "Dan rikarigi-kontenut tal-formola (i) tiegħek. Nota: dan ser jissostitwixxu kwalunkwe bidliet li jkunu saru f'din il-paġna."; +$LANG["text_add_form_field_types4"] = "Fil-każ li tiffaċċja xi problemi, ikklikkja hawn biex skip dan il-pass. L-oqsma kollha mhux solvuti huma stabbiliti li jużaw il-valuri awtomatiċi. Tista jippersonalizzaw dawn l-oqsma aktar tard."; +$LANG["text_add_form_field_types_manual_upload"] = "Jekk inti ma setgħux Smart Imla oqsma tiegħek, inti tista 'tixtieq tipprova soluzzjoni alternattiva: ittella kopji ta' formoli tiegħek fl-oqsma t'hawn taħt."; +$LANG["text_add_form_field_types_manual_upload2"] = "Nota: ma ittella paġni PHP prima (jew server-ġenb kodiċi) - biss ittella il-verżjonijiet HTML. Biex tikseb dan, il-fehma u jiffranka l-paġna mill-web browser tiegħek."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Kien hemm oqsma multipli li ma tista 'tinstab fil-paġna forma inti speċifikat. Dan huwa l-aktar probabbli kkawżata minn wieħed minn dawn li ġejjin:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Inti daħlu f'wieħed jew aktar mill-URLs forma ta 'multi-paġna formola tiegħek ħażin."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Wieħed jew aktar paġni tal-formola tiegħek huma password protetti u l-iskrittura ma jistgħu jkollhom aċċess il-paġna."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Inti żbaljat daħal URL formola tiegħek."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Ikklikkja hawn biex lura għall-paġna ta 'Informazzjoni Formola biex jiċċekkjaw settings tiegħek."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Inti inbidlu l-formola tiegħek (i) wara li tagħmel il-preżentazzjoni tat-test"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Ikklikkja hawn biex permezz ieħor sottomissjoni tat-test."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Formola tiegħek huwa password protetti u l-iskrittura ma jistgħu jkollhom aċċess il-paġna."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Ieħor tab / tieqa ta 'dan il-browser, log fis-formola tiegħek imbagħad ikklikkja l-buttuna Page Riffriskar hawn taħt biex jippruvaw jerġgħu isibu l-oqsma."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Jekk l-ebda xogħol soluzzjonijiet hawn fuq, inti tista 'ukoll tixtieq li tipprova manwalment uploading formoli tiegħek għall-ipproċessar ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Kien hemm oqsma multipli li ma tista 'tinstab fil-paġni kollha jiffurmaw inti speċifikat. Dan huwa l-aktar probabbli kkawżata minn wieħed minn dawn:"; +$LANG["text_add_form_help_link"] = "Jekk inti tmexxi fi kwalunkwe problemi matul dawn il-passi, ipprova qari dokumentazzjoni għall-utent ."; +$LANG["text_add_form_step_1_text_1"] = "Il-paġni segwenti iwasslu inti permezz tal-passi li Tools Formola kkonfigurat taħżen sottomissjonijiet formola tiegħek. Qabel ma tkompli, jekk jogħġbok iċċekkja li:"; +$LANG["text_add_form_step_1_text_2"] = "formola tiegħek diġà ġiet maħluqa u huwa aċċessibbli permezz ta 'l-URL (localhost huwa multa)"; +$LANG["text_add_form_step_1_text_3"] = "huma kapaċi li jeditjaw il-formola tiegħek"; +$LANG["text_add_form_step_2_para_2"] = "Iftaħ l-formola tiegħek fi editur ta 'l-għażla tiegħek u l-bidla tag formola tiegħek għal dawn li ġejjin, inklużi l-oqsma żewġ moħbija."; +$LANG["text_add_form_step_2_para_3"] = "Sussegwentement, miftuħa l-formola tiegħek fil-web browser. Imla kull qasam u tissottomettih. Wara s-sottomissjoni, għandek tara messaġġ ta 'notifika. Ladarba dan il-messaġġ huwa muri, ir-ritorn għal din il-paġna u kklikkja l-buttuna 'riffriskar ta' hawn taħt. Meta dan il-proċess ikun komplut, se tara li tkompli buttuna hawn taħt, filwaqt li inti l-pass li jmiss."; +$LANG["text_add_form_step_2_para_6"] = "Fil-sottomissjoni formola tiegħek, jinkludu l-valuri li ġejjin. Jistgħu jiġu stabbiliti direttament permezz PHP jew għadda tul permezz tal-formola stess. Hawn taħt huma eżempji ta 'kull wieħed. Il-) \$ (varname huwa hash (jew assoċjattiva array) ta 'l-informazzjoni kollha sottomissjoni forma - normalment dan ikun \$ (postvar) jew () \$ sessionvar varjabbli, imma jista' jkun custom mibnija."; +$LANG["text_add_form_step_2_text_2"] = "Ikteb il-URL ta ' "thankyou " tiegħek paġna hawn. Dan huwa fejn inti tixtieq nies li jkunu diretti lejn wara li l-formola tkun ġiet sottomessa."; +$LANG["text_add_form_step_3_para_1"] = "Din il-paġna telenka l-oqsma kollha fit-tressiq formola tiegħek. Jekk jogħġbok jeżamina kull qasam u neħħi kull li inti m'għandekx bżonn maħżuna għal kull sottomissjoni. Jekk inti tħassar qasam valida minn inċident, jew jixtiequ jibdlu l-informazzjoni maħżuna mill-formola tiegħek, ritorn lejn il-paġna ta 'qabel li jibgħat sottomissjoni test ġdid."; +$LANG["text_add_form_step_3_para_2"] = "Nota: jekk int tibgħat valuri multiplu minn checkboxes jew multi-kaxxa tagħżel, kun żgur isem qasam tiegħek tispiċċa bil-[] karattri (ara l-dokumentazzjoni għall-utent għal aktar informazzjoni)."; +$LANG["text_add_form_step_3_text_1"] = "Hawn fejn tibda l-gost! F'dan il-punt, Għodda Formola qed jistenna għal preżentazzjoni tat-test minn formola tiegħek. Dan se juża din is-sottomissjoni formola li tkun taf liema informazzjoni għandha tkun maħżuna fid-database."; +$LANG["text_add_form_step_3_text_2"] = "billi tenfasizza l-formola tiegħek għall-Formola Tools"; +$LANG["text_add_form_step_3_text_3"] = "tuża l-Formola API Tools"; +$LANG["text_add_form_step_3_text_4"] = "Biex tgħin sabiex tintegra l-formola tiegħek, nissuġġerixxu li taqra waħda mill-tutorials li ġejjin:"; +$LANG["text_add_form_step_3_text_5"] = "Huma jispjegaw kif jitwaqqfu l-formola tiegħek fil-preparazzjoni għas-sottomissjoni tat-test, u jinkludu informazzjoni oħra li tista 'tkun ta' għajnuna. Il-linja ta 'PHP ser ikollok bżonn huwa:"; +$LANG["text_add_form_step_3_text_6"] = "Dan jiżgura d-data hija fil-fatt li tintbagħat Formola Tools. Meta inti poġġew permezz tas-sottomissjoni tat-test tiegħek, ikklikkja l-buttuna hawn taħt."; +$LANG["text_add_form_step_3_text_7"] = "Fuq il-QABEL paġna tiegħek finali "thank you" paġna, kun żgur li jżidu l-parametru li ġejjin għall-varjabbli \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Id-database ġiet stabbilita biex għal din il-formola u l-formola tkun ġiet attivata għall-użu. Jekk inti ssir il-preżentazzjoni billi tenfasizza l-formola tiegħek biex process.php, jekk jogħġbok ritorn għall-formola tiegħek u neħħi l-qasam moħbija li ġejjin:"; +$LANG["text_add_form_step_5_para_2"] = "Imbagħad iż-żjara tiegħek "thank you" paġna vojta-sessjonijiet. Ladarba dan isir, is-sottomissjonijiet kollha forma l-ġdida ser tkun ipproċessata u maħżuna mill-Formola Tools. Ipprova jagħmel sottomissjoni jew tnejn biex tivverifika l-informazzjoni hija kollha uploading b'mod korrett."; +$LANG["text_add_form_step_5_para_3"] = "Jekk inti tixtieq li jirfinaw l-formola tiegħek għal għażliet bħal awto-posta elettronika, u żżid extra forma oqsma qasam, jew customizing-tipi qasam formola, inti tista 'jeditjaw formola tiegħek fi kwalunkwe punt."; +$LANG["text_add_form_step_5_para_4"] = "Peress li l-formola tiegħek fiha fajl oqsma upload, ser ikollok bżonn biex jiġi kkonfigurat f'kull qasam biex jispeċifikaw il-folder upload fajl, liema fajls u huma permessi. Dan jista 'jinstab fuq il-tab-Wiri tal-editja paġna formola."; +$LANG["text_add_form_step_5_para_5"] = "Jekk il-sottomissjoni intbagħat permezz ta 'l-API, jibdlu l-linja ft_api_init_form_page fl-ewwel paġna tal-formola tiegħek lil:"; +$LANG["text_add_submission_button"] = "Il-buttuna Żid Sottomissjoni jidher biss għal Views li jkollhom l- "Jista 'jżid is-sottomissjonijiet " għażla stabbilit li "iva "."; +$LANG["text_admin_email_placeholder_info"] = "Dan huwa l-indirizz elettroniku ta 'l-amministratur Tools Formola, definiti fl-settings-kont tiegħek. Dan biss outputs l-indirizz elettroniku, jekk hekk tixtieq tuża bħala link HTML, ser ikollok bżonn biex nagħlaq fil lametta <a>, bħal so:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Barra l-default login paġna tema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "L-ewwel, jekk jogħġbok agħżel it-tip formola tiegħek."; +$LANG["text_client_form_page"] = "Din il-paġna telenka il-formoli kollha u Views assenjat lil dan il-klijent. Tip: sabiex dawn biex tara d-sottomissjonijiet ta 'forma, dawn jeħtieġ li jiġu assenjati għal mill-inqas wieħed View."; +$LANG["text_client_map_filters_desc1"] = "Filtri Mappa Client tavżak jillimitaw is-sottomissjonijiet li jidher f'dan View bl-immappjar tal-valuri fil-qasam formola li l-valuri fil-kont tal-klijent."; +$LANG["text_client_no_forms"] = "Inti bħalissa m'għandhom l-ebda formoli disponibbli għal reviżjoni."; +$LANG["text_client_welcome"] = "Merħba! Dan imħażen program-informazzjoni kollha sottomessa mill viżitaturi website tiegħek. Biex tara sottomissjonijiet għal forma partikolari kemm tikklikkja fuq il-link ĦSIEB, jew ara l-menu tan-navigazzjoni fuq ix-xellug għal għażliet oħra."; +$LANG["text_config_file_created"] = "Fajl config.php tiegħek ġie maħluq."; +$LANG["text_config_file_not_created"] = "Aħna ma setgħetx toħloq fajl config.php tiegħek. Ikollok bżonn li jinħoloq il-fajl manwalment."; +$LANG["text_config_file_not_created_instructions"] = "Copy and paste-kontenut mit-taqsima ta 'hawn taħt għal ġo fajl imsejjaħ config.php u upload huwa permezz ta' FTP għall-Formola Tools / folder globali (il-folder li wkoll fih fajls oħrajn ftit u direttorji, f'fajl wieħed imsejjaħ library.php)."; +$LANG["text_confirm_delete_form"] = "Iva, nixtieq li tħassar din il-formola"; +$LANG["text_create_admin_account"] = "Issa aħna qed tmur biex joħolqu l-amministratur. Dan huwa użati biex imexxu l-aspetti kollha tal-Formola Għodod, bħal żieda formoli u l-ħolqien kontijiet tal-klijenti."; +$LANG["text_create_new_client_account"] = "Uża l-formola t'hawn taħt biex joħloq kont klijent ġdid. L-oqsma kollha huma meħtieġa."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "ara PHP {\$datefunctionlink} funzjoni għall-ifformattjar għażliet"; +$LANG["text_default_file_settings_page"] = "Din il-paġna jiddefinixxi s-settings upload file għall-installazzjoni tiegħek Għodod Form. Dawn ir-regoli japplikaw għall-fajls kollha jittellgħu permezz ta 'Formola Għodod, sakemm ma jiġix megħluba għal qasam formola individwali. Nota: jekk tibdel il-folder ta 'upload wara fajls ġew imtella', dawn se jkunu awtomatikament trasferita għall-folder ġodda."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Qabel ma tkompli, ser ikollok bżonn li taġġorna / temi tiegħek / default cache folder / sabiex jippermettu sħiħ jaqraw u jiktbu l-permessi. Ladarba dan isir, dan il-messaġġ se jisparixxi u inti tista 'tinstalla l-iskrittura."; +$LANG["text_default_values_in_view"] = "Din is-sezzjoni hija fakultattiva. Is-sottomissjonijiet kollha maħluqa ma 'dan Ara se jkun fiha l-valuri awtomatiċi speċifikati hawn."; +$LANG["text_delete_all_forms"] = "Irrid li titħassar kull fajls li ġew imtella 'permezz ta' din il-formola"; +$LANG["text_delete_form_warning"] = "Inti żgur li trid tneħħi din il-formola? This action cannot be undone. Id-data kollha ser ikunu mitlufa għal dejjem!"; +$LANG["text_edit_admin_menu_page"] = "Inti tista 'jeditjaw menu tiegħek hawn taħt. Biex jiżgura li inti dejjem ikollhom aċċess għall-funzjonalità disponibbli fi ħdan il-Formola Għodod, il-paġni li ġejjin huma meħtieġa: Forom, Clients, Your Account, Moduli, Settings u Logout."; +$LANG["text_edit_client_menu_page"] = "Din is-sezzjoni ihallik customize-kolonna tax-xellug tan-navigazzjoni għal kull utent. Inti tista 'toħloq bħala menus ħafna klijent kif tixtieq u jassenja kull kont li wieħed minnhom. Permezz ta 'default hemm żewġ listi: waħda għalik, l-amministratur, u wieħed għall-kontijiet tal-klijenti. Il-kont amministratur jista 'jkun modifikat imma mhux jitneħħa."; +$LANG["text_edit_tab_summary"] = "Jekk tixtieq grupp oqsma dan Ara l-Korpi għal Valutazzjoni Teknika fis, biss tidħol l-ismijiet tab hawn taħt. Wara li tkun qed isir, tagħżel it-tab xierqa għal kull grupp fil-qasam tab Oqsma ."; +$LANG["text_edit_view_list_page"] = "Dan il-kontrolli tab li oqsma jidhru bħala kolonni fuq il-paġna Elenku Sottomissjoni, u settings addizzjonali ftit għal dawk l-oqsma. Nota: aħna nirrikkmandawlek żid mhux aktar minn 4 jew 5 ta 'l-oqsma l-aktar importanti fil-Ara."; +$LANG["text_email_settings_intro"] = "Din il-paġna ihallik tidentifika liema emails formola tiegħek taħżen l-oqsma u l-ismijiet korrispondenti tagħhom. Ladarba inti jiddefinixxu lilhom hawnhekk, tista 'tuża fil-email tiegħek templates bħala benefiċjarji. Din it-taqsima hija kompletament obbligatorja."; +$LANG["text_email_tab_summary"] = "Din is-sezzjoni ihallik tibni kull numru ta 'emails li għandhom jintbagħtu kull meta l-formola tiegħek hija sottomessa, u oħrajn jqajjem."; +$LANG["text_email_template_tab"] = "Din is-sezzjoni ihallik jiddeterminaw liema kontenut tidher fl-email. Jekk tixtieq tibgħat email tiegħek bħala test biss jew email, biss tidħol valur għal dik it-taqsima. Jekk inti tidħol valur għat-tnejn, l-email se tintbat fiż-żewġ formati."; +$LANG["text_email_template_text_1"] = "Kien hemm sottomissjoni magħmula permezz tal-formola tiegħek, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Kien hemm sottomissjoni magħmula permezz tal-formola tiegħek, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Grazzi għas-sottomissjoni tiegħek!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Messaġġ ta 'żball li juri jekk il-qasam jonqos l-validazzjoni"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Forom esterni huma forom li diġà jeżistu fuq il-websajt tiegħek, jew x'imkien fuq il-web. Agħżel din l-għażla jekk għandek formola tiegħek fejn inti tixtieq li jintegraw ma Għodod Formola."; +$LANG["text_fields_tab_summary"] = "Din il-paġna listi kollha ta 'oqsma formola tiegħek. Għall-kontroll kif jidhru meta sottomissjonijiet browsing, ara l- tab Views . Tħassir ta 'qasam dwar din il-paġna se titħassar mill-sottomissjonijiet kollha, għalhekk jekk jogħġbok oqgħod attent!"; +$LANG["text_file_extension_info"] = "Daħħal fajl estensjonijiet separati ma virgoli (per eżempju jpg, gif, png) jew ħalli vojt biex jippermettu lil kwalunkwe tip ta 'fajl."; +$LANG["text_file_field_placeholders_info"] = "Oqsma File jkollha żewġ placeholders speċjali: FILEURL u Filename. FILEURL hija l-URL sħiħ għall-fajl, sabiex inti tista 'rabta direttament lilha fl-emails tiegħek; Filename huwa biss l-isem fajl."; +$LANG["text_filters_page"] = "Biss dawk is-sottomissjonijiet li jissodisfaw ir-regoli jiddefinixxu hawn taħt inti ser jidher f'dan View."; +$LANG["text_filters_tips"] = "Għall-suġġerimenti dwar kif jintużaw filtri sottomissjoni, ara l-Dokumentazzjoni Utent."; +$LANG["text_forgot_password"] = "M'hemmx problema. Just jidħol username tiegħek hawn taħt u l-informazzjoni login tiegħek se tintbagħat fl-indirizz email tiegħek fuq il-fajl. Jekk tkun insejt username tiegħek, jekk jogħġbok email l-amministratur tas-sit fil-{\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Din il-formola fiha wieħed jew aktar fajl oqsma upload:"; +$LANG["text_form_placeholder_info"] = "Il-placeholders li ġejjin jistgħu jintużaw fi kwalunkwe mudell email u qasam placeholder lingwa, irrispettivament ta 'kwalunkwe Ara l-mudell email huwa assenjat. Il-placeholders MISTOQSIJA huma l-kwistjoni forma speċifika; l-placeholders TWEĠIBA huma l-tweġibiet għal kull mistoqsija."; +$LANG["text_form_submission_date_placeholder"] = "Id-data meta l-preżentazzjoni saret."; +$LANG["text_form_tools_form_url"] = "L-URL sħiħ tal-formola. Dan biss għandu valur għall-forom esterni."; +$LANG["text_form_tools_login_url"] = "Il-URL login għal Formola Tools."; +$LANG["text_form_view_permission_info_admin"] = "Nota: din il-formola bħalissa għandha tip aċċess Amministratur, sabiex l-ebda kontijiet tal-klijenti se tkun tista 'tara dan Ara."; +$LANG["text_form_view_permission_info_private"] = "Nota: din il-formola bħalissa għandha tip aċċess Privat sabiex l-għażliet Pubbliċi u Privati ​​hawnhekk se tkun limitata għal dak subsett tal-klijenti."; +$LANG["text_ft_installed"] = "Congratulations, Formola Tools ġie b'suċċess installata!"; +$LANG["text_global_placeholder_info"] = "Dawn placeholders jistgħu jintużaw fi kwalunkwe template u kwalunkwe forma."; +$LANG["text_group_name_explanation"] = "Għall-oqsma miżjuda permezz tal-proċess Żid Formola, dan il-valur huwa mimlija għat-test ta 'wiri irrispettivament mill-qasam tuża l-valur. Inti tista jixtiequ jibdlu l-aħjar li jikkaratterizza l-kontenut."; +$LANG["text_install_create_config_file"] = "Form stores Għodod server tiegħek u settings database f'fajl imsejjaħ config.php, misjuba fl / globali tiegħek / folder. Ikklikkja fuq il-"Oħloq File" buttuna biex jiġġeneraw awtomatikament il-fajl fuq is-server tiegħek."; +$LANG["text_install_create_database_tables"] = "Issa we're se toħloq il-tabelli database Formola Tools. Dan il-pass jirrikjedi-database ruħha li diġà ġew maħluqa. Jekk int ċert kif tagħmel dan, jekk jogħġbok ikkuntattja hosting provider tiegħek."; +$LANG["text_install_db_tables_error_tip_1"] = ""Mhux magħruf MySQL Server Ospitanti" normalment ifisser li l-hostname inti provduta ma tkunx korretta. Forsi tipprova tistabbilixxi li dan "localhost" - dan huwa mod komuni li tirreferi għall-"lokali" database fuq web server."; +$LANG["text_install_db_tables_error_tip_2"] = ""Ma tistax tikkonnettja mal MySQL server lokali permezz ta 'socket" tfisser il-kamp database hostname hija għal darb'oħra żbaljata."; +$LANG["text_install_db_tables_error_tip_3"] = ""Aċċess miċħuda għall-utent:" tfisser li hemm problema bil-username / kombinazzjoni password."; +$LANG["text_install_db_tables_error_tip_4"] = ""Aċċess miċħuda għall-utent: ... għad-database ..." tfisser li għalkemm l-username u password inti fornuti hija korretta, kien kapaċi li jgħaqqdu l-imsemmija database partikolari ma 'dak il-kont. Dan jista 'jfisser li jew isem id-database tiegħek hija żbaljata, jew li dan il-kont l-utent ma jkunx assoċjat ma' dik id-database."; +$LANG["text_install_email_content_text"] = "Hemm ħafna riżorsi fuq il-websajt tagħna biex jgħinuk tibda, inkluża d-dokumentazzjoni onlajn tagħna (https://docs.formtools.org) u tutorials (https://docs.formtools.org/tutorials). Jekk issib li tħossok mwaħħal jew ikollok xi mistoqsija, staqsi mistoqsija dwar github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Jiddispjacini, Għodda Formola mhux se jkunu kapaċi li jimxu fuq server tiegħek. Jekk jogħġbok ikklikkja hawn il-ħtiġiet minimi."; +$LANG["text_install_system_check"] = "Din il-paġna imexxi testijiet ftit fis-sistema tiegħek biex tiżgura huwa kapaċi li jimxu Tools Form."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Forom interna jeżistu biss fil Għodda Formola - ma humiex x'imkien ieħor fuq is-sit tiegħek. Biss kontijiet Formola utent għodod se jkollhom aċċess għall-formola. Agħżel din l-għażla jekk inti ma jkollhom forma eżistenti."; +$LANG["text_internal_form_intro"] = "Uża l-formola t'hawn taħt li joħloq forma ġdida Intern. Settings kollha, inkluż in-numru u l-kontenut ta 'l-oqsma formola tista' tiġi mibdula u konfigurati aktar tard."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Sabiex login u l-użu Għodod Formola, irid ikollok javascript in your browser. Jekk jogħġbok jippermettu issa, u ikklikkja jġedded in your browser."; +$LANG["text_last_modified_date_explanation_c"] = "L-aħħar darba din is-sottomissjoni kienet modifikata. Għall-sottomissjonijiet ġodda, dan huwa l-istess bħal:"; +$LANG["text_limit_email_content_desc"] = "Din l-għażla jaħdem biss għall-HTML u kontenut ta 'test iġġenerat ma loops Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(biss listi Views ma 'wieħed jew aktar definiti filtri)"; +$LANG["text_log_in_to_ft"] = "Log in fil-Formola Tools"; +$LANG["text_login"] = "Jekk jogħġbok login hawn taħt għall-aċċess għall \$ (program_name) Amministrazzjoni Panel. Jekk insejt il-password tiegħek, ikklikkja hawn."; +$LANG["text_login_info"] = "Kif mitlub, hawnhekk hija informazzjoni login tiegħek."; +$LANG["text_name_of_form"] = "L-isem tal-formola."; +$LANG["text_no_clients"] = "Bħalissa ma hemm ebda klijenti fid-database. Biex iżżid kont klijent ġdid, ikklikkja l-buttuna Żid Klijent hawn taħt."; +$LANG["text_no_clients_found"] = "Nru klijenti nstabu. Ipprova twessigħ kriterji ta 'tiftix tiegħek."; +$LANG["text_no_fields_in_view"] = "Dan Ara ma jkollu ebda oqsma fiha. Ikklikkja l-link hawn taħt."; +$LANG["text_no_forms"] = "Bħalissa ma hemm ebda formoli fid-database. Biex iżżid forma ġdida, ikklikkja l-buttuna Żid Formola hawn taħt."; +$LANG["text_no_forms_found"] = "Ebda forma nstabu."; +$LANG["text_no_forms_found_search"] = "Ebda forma nstabu. Ipprova twessigħ kriterji ta 'tiftix tiegħek."; +$LANG["text_no_modules_found"] = "Nru moduli nstabu. Ipprova twessigħ kriterji ta 'tiftix tiegħek."; +$LANG["text_no_recipients_added"] = "Nru reċipjenti ġew miżjuda."; +$LANG["text_no_search_results"] = "M'hemm l-ebda riżultati ma 'din id-kriterji tat-tiftix / View."; +$LANG["text_no_submissions_found"] = "Jiddispjacini, l-ebda sottomissjonijiet nstabu."; +$LANG["text_no_themes"] = "Inti ma għandekx xi temi definiti. Ikklikkja l-buttuna hawn taħt li jġedded il-lista tema tiegħek, jew jiċċekkja l- Formola Għodda utent dokumentazzjoni għall-informazzjoni dwar żżid it-temi."; +$LANG["text_non_deletable_fields"] = "Dan il-qasam huwa użat mill-iskrittura Core u ma jistgħux jiġu editjati jew imħassra mingħajr ma jikkawżaw inkompatibilitajiet. Jekk inti tixtieq li tagħmel tibdil fil-tip tal-qasam, jagħmel kopja ta 'dan u jeditjaw il-kopja."; +$LANG["text_option_list_group_explanation"] = "Jekk dan huwa magħżul, hija tikri lill-grupp l-għażliet tiegħek. Kif il-gruppi huma murija jiddependi mit-tip qasam bl-użu din il-lista l-għażla."; +$LANG["text_option_list_page"] = "Buttuni tar-radju, checkboxes, dropdowns u multi-tagħżel oqsma dropdown kollha jipprovdu l-utent ma 'għażliet multipli li minnhom jistgħu jagħżlu wieħed jew iktar punti. Fil Għodod Formola, dawn huma magħrufa bħala Listi Għażla. Ġeneralment, dawn huma maħluqa awtomatikament mill- Formola Żid Esterni proċess, iżda tista 'manwalment iżżid jew tbiddel il-listi l-għażla tiegħek hawn taħt jekk il-bidliet l-formola tiegħek kontenut jew inti tibni oqsma li huma użati biss internament."; +$LANG["text_option_list_used_by_fields"] = "Din il-Lista Għażla huwa użat mill-oqsma forma multipli. Jekk jaġġornaw l-informazzjoni hawn taħt, se jinbidlu għal kulħadd ta 'l-oqsma (ara l- Oqsma Formola tab biex tara l-lista ta 'oqsma). Jekk inti tixtieq li taġġorna l-valuri għal wieħed, jew subsett ta 'l-oqsma li huma attwalment allokati, ikklikkja hawn biex joħolqu Lista Għażla ġdid bl-istess valuri kif dan wieħed. Imbagħad inti tista 'tassenja l-oqsma forma li trid il-grupp ġdid."; +$LANG["text_public_form_omit_list_page"] = "Forom Pubbliku jagħtuk l-benefiċċju ta 'kiri kollha kontijiet tal-klijenti jkollhom aċċess għalihom mingħajr ma jkollhom manwalment tassenja kull klijent lilhom. Din il-paġna ihallik jindikaw dawk il-klijenti li ma jkunux jistgħu jkollhom aċċess għal din il-formola, anki jekk il-formola tkun immarkata bħala pubblika."; +$LANG["text_public_view_omit_list_page"] = "Views Pubbliku jagħtuk l-benefiċċju ta 'kiri kollha kontijiet tal-klijenti jkollhom aċċess għalihom mingħajr ma jkollhom manwalment tassenja kull klijent lilhom. Din il-paġna ihallik jindikaw dawk il-klijenti li ma jkunux jistgħu jkollhom aċċess għal dan View partikolari."; +$LANG["text_reference_tab_info"] = "Din il-paġna telenka l placeholders disponibbli għall-formola tiegħek. Placeholders huma kordi li jistgħu jintużaw fil-mudelli l-email, u l-oqsma mmarkati b 'ikona placeholder speċjali . Meta daħal fis-qasam, huma dinamikament konvertiti għall-valur xieraq meta l-kamp hija meqjusa jew l-email tintbagħat."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Irrevedi l-dokumentazzjoni għall-utent"; +$LANG["text_send_email_from_edit_submission_page"] = "Inkludi l-għażla li jibagħtu din l-email minn Edit paġna Sottomissjoni"; +$LANG["text_smart_fill_option_list_problem"] = "Aħna ma konniex kapaċi Smart Imla l-għażliet qasam tiegħek. Madankollu, bħala alternattiva, inti tista 'tipprova uploading kopja tal-paġna formola tiegħek fil-qasam ta' hawn taħt. Nota: ma ittella paġni PHP prima (jew server-ġenb kodiċi) - biss ittella 'l-verżjoni HTML. Biex tikseb dan, il-fehma u jiffranka l-paġna mill-web browser tiegħek."; +$LANG["text_submission_ip_address"] = "L-indirizz IP ta 'l-utent li għamlet is-sottomissjoni."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Uża l-formola t'hawn taħt biex kemm għan jew jibgħat email lilek innifsek iġġenerat minn dan l-email template. L-email jintbagħat biss lill-email speċifikati hawn taħt;-reċipjenti prinċipali, cc u Bcc indirizz elettroniku jiġu injorati waqt l-ittestjar."; +$LANG["text_test_email_templates_no_submissions"] = "Sabiex test templates email tiegħek, inti għandek għall-ewwel darba permezz ta 'sottomissjoni jiffurmaw mill-inqas wieħed."; +$LANG["text_theme_page_intro"] = "Din il-paġna telenka kollha ta 'temi tiegħek. Ikklikkja fuq thumbnail biex tara eżempju akbar ta 'stili tat-tema kkonċernata. Il-"enabled" Checkbox tiddetermina jekk jew le dik it-tema tista 'tkun magħżula mill-klijenti. Jibbrawżjaw-temi kollha disponibbli, żur il-websajt Tools Formola."; +$LANG["text_tutorial_adding_first_form"] = "Tutorja: Żieda ewwel forma tiegħek!"; +$LANG["text_unique_submission_id"] = "Is-sottomissjoni ID unika."; +$LANG["text_unused_option_list"] = "Din il-lista l-għażla ma jkunx qed jintuża minn xi oqsma forma."; +$LANG["text_upgraded"] = "Installazzjoni tiegħek kien aġġornat għal {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Din il-Lista Għażla huwa użat mill-oqsma li ġejjin."; +$LANG["text_view_fields_info"] = "Dan tab kontrolli li juru oqsma sa meta editjar sottomissjoni f'dan Ara, l-ordni tagħhom u jekk humiex editable jew le."; +$LANG["text_view_tab_summary"] = "Dan tab ihallik toħloq modi differenti għall-grupp u jirranġa d-data tiegħek. Views tavżak toħloq sottogruppi tad-dwana tad-data formola tiegħek li jaqsmu fis-biċċiet maniġġabbli, u biex jillimitaw liema klijenti tista 'tara jew jeditjaw."; +$LANG["validation_account_disabled"] = "Skużani, kont tiegħek ġie b'diżabilità."; +$LANG["validation_account_not_recognized"] = "Jiddispjacini, li username mhijiex rikonoxxuta."; +$LANG["validation_account_not_recognized_info"] = "Jiddispjacini, li username ma nstabx. Jekk jogħġbok erġa 'pprova, jew jikkuntattja lill-amministratur tas-sit fl-indirizz hawn taħt."; +$LANG["validation_account_pending"] = "Kont ta 'utent tiegħek huwa approvazzjoni pendenti minn amministratur."; +$LANG["validation_check_delete_client"] = "Inti żgur li trid tneħħi dan il-kont tal-klijenti?"; +$LANG["validation_client_password_missing_number"] = "Il-password klijent għandu jkollha fiha għallinqas numru wieħed (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Il-password klijent għandu jkun fiha mill-inqas wieħed mill-karattri li ġejjin: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Il-password klijent għandu jkun fiha ittra kapitali mill-inqas wieħed."; +$LANG["validation_client_password_too_short"] = "Il-password klijent teħtieġ li tkun mill-inqas {\$number} karattri."; +$LANG["validation_col_name_is_reserved_word"] = "Jiddispjacini, dan l-isem kolonna database hija xogħol riservat fil MySQL. Jekk jogħġbok semmi mill-ġdid it!"; +$LANG["validation_db_name"] = "L-ismijiet tad-database ma jistgħux jinkludu perjodi jew slashes."; +$LANG["validation_db_not_updated_invalid_input"] = "Id-database ma jkunx jista 'jiġi aġġornat. Jekk jogħġbok iċċekkja biex tara l-valuri li tkun daħħalt huma validi."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Jiddispjacini, l-amministratur default u t-temi klijent irid dejjem ikunu jistgħu."; +$LANG["validation_default_phone_num_required"] = "Jekk jogħġbok imla n-numru tat-telefon sħiħa għall-<b> { \$ qasam} </ b> qasam - numri biss."; +$LANG["validation_default_rule_alpha"] = "Jekk jogħġbok biss jidħlu ittri u numri għall-<b> { \$ qasam} </ b> qasam."; +$LANG["validation_default_rule_letters_only"] = "Jekk jogħġbok biss jidħlu ittri għall-<b> { \$ qasam} </ b> qasam."; +$LANG["validation_default_rule_numbers_only"] = "Jekk jogħġbok biss jidħol numri għall-<b> { \$ qasam} </ b> qasam."; +$LANG["validation_default_rule_required"] = "Jekk joghgbok ikteb valur għall-<b> { \$ qasam} </ b> qasam."; +$LANG["validation_default_rule_valid_email"] = "Jekk joghgbok ikteb email address validu għall-<b> { \$ qasam} </ b> qasam."; +$LANG["validation_delete_form_confirm"] = "Jekk jogħġbok iċċekkja l-kaxxa sabiex tikkonferma li tixtieq li tiġi mħassra din il-formola."; +$LANG["validation_delete_non_empty_option_list"] = "Twissija! Din il-Lista Għażla huwa użat mill-oqsma forma waħda jew aktar. It-tħassir hija ser tagħmel dawk l-oqsma ma jibqgħux jaħdmu sew."; +$LANG["validation_display_names_incomplete"] = "Jekk joghgbok ikteb valur għal kulħadd l-Ismijiet Display, jew ikklikkja l-għażla Imla Smart li jidħlu fihom dinamiku."; +$LANG["validation_duplicate_form_field_name"] = "Ma jistax ikollok oqsma multipli bl-isem istess qasam."; +$LANG["validation_email_not_found_or_invalid"] = "Jiddispjacini, il-posta elettronika assoċjata mal-kont tiegħek jew ma jeżistix jew huwa invalidu."; +$LANG["validation_folder_invalid_permissions"] = "Sabiex jiddekorri dan it-test, il-permessi bżonn li jiġu ffissati fuq il-folder ta 'upload sabiex jippermettu għall-qari u kitba fajls (777 dwar Unix)."; +$LANG["validation_folder_not_writable"] = "This folder mhix writeable."; +$LANG["validation_internal_form_too_many_fields"] = "Jiddispjacini, inti tista 'biss maħluqa formoli bl-oqsma 1000 jew inqas."; +$LANG["validation_invalid_admin_email"] = "Jekk jogħġbok ikteb l-indirizz elettroniku ta 'adminstrator valida's."; +$LANG["validation_invalid_admin_username"] = "Username jistgħu jikkonsistu biss karattri alfanumeriċi (az u 0-9)."; +$LANG["validation_invalid_client_username"] = "Isem l-utent tal-klijent tista 'tikkonsisti biss minn karattri alfanumeriċi (az u 0-9)."; +$LANG["validation_invalid_client_username2"] = "Jiddispjacini, username jista 'jkun fih biss ittri, numri u l-karattru enfasizzati. Jekk joghgbok ikteb username ġdid."; +$LANG["validation_invalid_column_name"] = "Ismijiet kolonna jista 'biss jkun alfanumeriku (az, 0-9). Jekk jogħġbok iċċekkja l-ismijiet kolonna."; +$LANG["validation_invalid_custom_from_email"] = "Jekk joghgbok ikteb konswetudini valida "Minn" email address."; +$LANG["validation_invalid_custom_reply_to_email"] = "Jekk joghgbok ikteb Reply konswetudini validi "għal" email address."; +$LANG["validation_invalid_default_sessions_timeout"] = "Jekk joghgbok ikteb valur valida (numru) għall-timeout sessjonijiet default."; +$LANG["validation_invalid_email"] = "Jekk joghgbok ikteb email address validu."; +$LANG["validation_invalid_email_id"] = "Jiddispjacini, li l-email invalidu ID."; +$LANG["validation_invalid_folder"] = "Jiddispjacini, dan ma jidhirx li folder valida."; +$LANG["validation_invalid_form_field_names"] = "Oqsma Formola biss jista 'jkun alfanumeriku u tenfasizza (az, 0-9, _), bl-ebda spazji."; +$LANG["validation_invalid_num_clients_per_page"] = "Jekk jogħġbok jidħol biss numri fil-Clients Num Per Page qasam."; +$LANG["validation_invalid_num_emails_per_page"] = "Jekk jogħġbok jidħol biss ċifri għall-emails kull paġna."; +$LANG["validation_invalid_num_form_fields"] = "Jekk jogħġbok biss jidħlu numri fil-Numru ta 'Oqsma qasam."; +$LANG["validation_invalid_num_forms_per_page"] = "Jekk jogħġbok jidħol biss numri fil-Formoli Num Per Page qasam."; +$LANG["validation_invalid_num_menus_per_page"] = "Jekk jogħġbok jidħol biss ċifri għall-menus għal kull paġna."; +$LANG["validation_invalid_num_modules_per_page"] = "Jekk jogħġbok jidħol biss numri fil-Moduli Num Per Page qasam."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Jekk jogħġbok biss jidħlu numri fil-Listi Għażla Num Per Page qasam."; +$LANG["validation_invalid_num_submissions_per_page"] = "Jekk jogħġbok daħħal numru validu ta 'sottomissjonijiet għal kull paġna."; +$LANG["validation_invalid_sessions_timeout"] = "Jekk joghgbok ikteb timeout sessjoni valida (interi biss!)."; +$LANG["validation_invalid_tab_assign_values"] = "Jekk jogħġbok biss tidħol fil-għadd ta 'minn' u 'oqsma għal "."; +$LANG["validation_invalid_table_prefix"] = "Jekk jogħġbok jidħol prefiss database tikkonsisti ittra u l-karattru jenfasizzaw biss."; +$LANG["validation_invalid_upload_folder"] = "Installazzjoni server Tiegħek ta PHP għandu jistabbilixxi invalidu għall-valur upload_tmp_dir. "{\$upload_folder}" mhix folder validu."; +$LANG["validation_invalid_url"] = "Jekk joghgbok ikteb URL validu."; +$LANG["validation_invalid_username"] = "Username tiegħek tista 'tikkonsisti biss minn karattri alfanumeriċi (az u 0-9)."; +$LANG["validation_is_form_active"] = "Jekk jogħġbok indika jekk il-forma hija attiva jew le."; +$LANG["validation_menu_name_taken"] = "Jiddispjacini, dan l-isem menu huwa diġà ttieħdu. Jekk jogħġbok agħżel isem ġdid."; +$LANG["validation_modules_search_no_status"] = "Jekk jogħġbok agħżel jew l-checkboxes Iffaċilitati jew b'Diżabilità."; +$LANG["validation_no_access_type"] = "Jekk jogħġbok ikteb it-tip ta 'aċċess."; +$LANG["validation_no_account_logout_url"] = "Jekk jogħġbok jidħol URL logout tiegħek."; +$LANG["validation_no_account_password_confirmed"] = "Jekk jogħġbok jerġgħu jidħlu password ġdida tiegħek."; +$LANG["validation_no_account_password_confirmed2"] = "Jekk jogħġbok jerġgħu jidħlu fis-password ġdida."; +$LANG["validation_no_admin_email"] = "Jekk jogħġbok ikteb l-indirizz elettroniku tal-amministratur."; +$LANG["validation_no_admin_theme"] = "Jekk jogħġbok agħżel it-tema għall-kont amministratur."; +$LANG["validation_no_admin_theme_swatch"] = "Jekk jogħġbok agħżel swatch għat-tema amministratur."; +$LANG["validation_no_client_email"] = "Jekk jogħġbok ikteb l-indirizz elettroniku tal-klijent."; +$LANG["validation_no_client_first_name"] = "Jekk jogħġbok ikteb l-ewwel isem tal-klijent."; +$LANG["validation_no_client_last_name"] = "Jekk jogħġbok ikteb l-isem l-aħħar tal-klijent."; +$LANG["validation_no_client_login_page"] = "Jekk jogħġbok indika liema paġna l-klijent għandhom jiġu dirottati lejn meta log pulzieri"; +$LANG["validation_no_client_password"] = "Jekk jogħġbok ikteb il-password tal-klijent."; +$LANG["validation_no_client_theme_swatch"] = "Jekk jogħġbok agħżel swatch default għall-kontijiet tal-klijenti."; +$LANG["validation_no_client_username"] = "Jekk jogħġbok ikteb username tal-klijent."; +$LANG["validation_no_column_name"] = "Jekk jogħġbok ikteb l-ismijiet kollha kolonna, jew ikklikkja l-buttuna Imla Smart li awtomatikament jimlewhom."; +$LANG["validation_no_column_selected"] = "Jekk jogħġbok agħżel mill-inqas wieħed mill-qasam li jidhru bħala kolonna dwar il-paġna ta 'elenkar sottomissjoni."; +$LANG["validation_no_custom_from_email"] = "Jekk jogħġbok ikteb l-użanza "Minn" email address."; +$LANG["validation_no_custom_recipient_email"] = "Jekk jogħġbok ikteb il-konswetudini l-indirizz email reċipjent."; +$LANG["validation_no_custom_reply_to_email"] = "Jekk jogħġbok ikteb Reply d-drawwa "għal" email address."; +$LANG["validation_no_date_format"] = "Jekk joghgbok ikteb format data."; +$LANG["validation_no_db_column_single"] = "Jekk jogħġbok niżżel l-isem Kolonna Database."; +$LANG["validation_no_db_hostname"] = "Jekk jogħġbok ikteb l-hostname database."; +$LANG["validation_no_db_name"] = "Jekk jogħġbok niżżel l-isem database."; +$LANG["validation_no_db_username"] = "Jekk jogħġbok ikteb il-username kont database."; +$LANG["validation_no_default_client_theme"] = "Jekk jogħġbok agħżel it-tema default għall-kontijiet tal-klijenti ġodda."; +$LANG["validation_no_default_language"] = "Jekk jogħġbok agħżel il-lingwa tiegħek default għall-istallazzjoni ta 'Formola Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Jekk jogħġbok ikteb l-timeout sessjoni default għall-kontijiet utent."; +$LANG["validation_no_display_text"] = "Jekk jogħġbok ikteb l Test Wiri għal kull qasam."; +$LANG["validation_no_display_text_single"] = "Jekk jogħġbok ikteb l-valur Test Wiri."; +$LANG["validation_no_edit_submission_page_label"] = "Jekk jogħġbok ikteb it-tikketta Edit paġna Sottomissjoni."; +$LANG["validation_no_email"] = "Jekk jogħġbok ikteb l-indirizz email tiegħek."; +$LANG["validation_no_email_config_field"] = "Jekk jogħġbok speċifika qasam formola li hija l-qasam ta 'email."; +$LANG["validation_no_email_content"] = "Jekk jogħġbok ikteb l-kontenut email għal mill-inqas wieħed mill-formati (HTML jew test)."; +$LANG["validation_no_email_from_field"] = "Jekk jogħġbok-email "mill-" qasam."; +$LANG["validation_no_email_template_name"] = "Jekk jogħġbok ikteb l-email template isem."; +$LANG["validation_no_email_template_view_id"] = "Jekk jogħġbok agħżel il-View għal liema din l-email template għandhom jiġu identifikati."; +$LANG["validation_no_email_template_view_mapping_value"] = "Jekk jogħġbok indika meta l-posta elettronika għandhom ikunu mibgħuta."; +$LANG["validation_no_enabled_themes"] = "Jekk jogħġbok jiżguraw li talanqas wieħed tema tiġi attivata."; +$LANG["validation_no_first_name"] = "Jekk jogħġbok ikteb l-ewwel isem tiegħek."; +$LANG["validation_no_form_field_name"] = "Jekk jogħġbok ikteb l-ismijiet ta 'qasam ta' forma."; +$LANG["validation_no_form_field_single"] = "Jekk jogħġbok ikteb l-valur Qasam Formola."; +$LANG["validation_no_form_id"] = "Il-forma ID ma jkunx speċifikat. Jekk jogħġbok log out u erġa 'pprova."; +$LANG["validation_no_form_name"] = "Jekk jogħġbok ikteb l-isem formola."; +$LANG["validation_no_form_url"] = "Jekk jogħġbok ikteb il-URL formola."; +$LANG["validation_no_last_name"] = "Jekk jogħġbok ikteb l-isem tiegħek aħħar."; +$LANG["validation_no_login_page"] = "Jekk jogħġbok indika liema paġna, inti tixtieq li jiġu mibgħuta kull darba li tilloggja pulzieri"; +$LANG["validation_no_logout_url"] = "Jekk jogħġbok ikteb il-URL logout."; +$LANG["validation_no_main_email_recipient"] = "Jekk jogħġbok ikteb l-inqas wieħed jirċievi email prinċipali (jiġifieri mhux cc jew Bcc)."; +$LANG["validation_no_menu"] = "Jekk jogħġbok agħżel menu għal dan il-kont l-utent."; +$LANG["validation_no_menu_id"] = "Jekk jogħġbok agħżel il-menu."; +$LANG["validation_no_num_clients_per_page"] = "Jekk jogħġbok daħħal in-numru ta 'kontijiet tal-klijenti għal kull paġna."; +$LANG["validation_no_num_emails_per_page"] = "Jekk jogħġbok daħħal in-numru ta 'emails kull paġna għal-lista."; +$LANG["validation_no_num_form_fields"] = "Jekk jogħġbok daħħal in-numru ta 'oqsma għall-formola tiegħek."; +$LANG["validation_no_num_forms_per_page"] = "Jekk jogħġbok daħħal in-numru ta 'formoli għal kull paġna."; +$LANG["validation_no_num_menus_per_page"] = "Jekk jogħġbok daħħal in-numru ta 'menus-lista għal kull paġna."; +$LANG["validation_no_num_modules_per_page"] = "Jekk jogħġbok daħħal in-numru ta 'moduli għal kull paġna."; +$LANG["validation_no_num_option_lists_per_page"] = "Jekk jogħġbok daħħal in-numru ta 'listi għażla għal kull paġna."; +$LANG["validation_no_num_submissions_per_page"] = "Jekk jogħġbok daħħal in-numru ta 'sottomissjonijiet li jintwerew f'kull paġna."; +$LANG["validation_no_option_list_name"] = "Jekk jogħġbok niżżel l-isem lista għażla."; +$LANG["validation_no_page_titles"] = "Jekk jogħġbok ikteb il-paġna titoli default għall-kontijiet utent."; +$LANG["validation_no_password"] = "Jekk jogħġbok ikteb il-password."; +$LANG["validation_no_program_name"] = "Jekk jogħġbok ikteb l-isem tal-programm."; +$LANG["validation_no_second_password"] = "Jekk jogħġbok jidħlu mill-ġdid il-password tiegħek."; +$LANG["validation_no_sessions_timeout"] = "Jekk jogħġbok ikteb l-timeout sessjoni."; +$LANG["validation_no_smart_fill_values"] = "Jekk jogħġbok ikteb l-isem qasam forma u l-URL tal-formola."; +$LANG["validation_no_table_prefix"] = "Jekk jogħġbok jidħol prefiss database."; +$LANG["validation_no_tabs_defined"] = "Nru tabs definiti"; +$LANG["validation_no_test_email_recipient"] = "Jekk jogħġbok ikteb l-indirizz elettroniku ta 'fejn ninsabu għandhom jibagħtu l-email tat-test."; +$LANG["validation_no_test_email_submission_id"] = "Jekk jogħġbok ikteb l-sottomissjoni ID numru."; +$LANG["validation_no_theme"] = "Jekk jogħġbok agħżel it-tema."; +$LANG["validation_no_theme_swatch"] = "Jekk jogħġbok agħżel swatch għat-tema magħżula."; +$LANG["validation_no_timezone_offset"] = "Jekk jogħġbok ikteb l-TIMEZONE offset."; +$LANG["validation_no_titles"] = "Jekk jogħġbok ikteb il-paġna titoli."; +$LANG["validation_no_two_column_names"] = "Jiddispjacini, inti ma jistax jidħol l-istess isem kolonna database darbtejn."; +$LANG["validation_no_ui_language"] = "Jekk jogħġbok agħżel-lingwa għall-interface."; +$LANG["validation_no_url"] = "Jekk joghgbok ikteb URL."; +$LANG["validation_no_username"] = "Jekk jogħġbok jidħol username tiegħek."; +$LANG["validation_no_username_or_js"] = "Inti trid tidħol username tiegħek. Jekk jogħġbok jattiva javascript browser tiegħek."; +$LANG["validation_no_view_fields"] = "View tiegħek ma jkunx fiha xi oqsma! Ikollok bżonn li jassenja mill-inqas il-qasam sabiex ikun hemm xi ħaġa li turi fil View tiegħek."; +$LANG["validation_no_view_fields_selected"] = "Jekk jogħġbok agħżel waħda jew aktar oqsma li żżid mal-View."; +$LANG["validation_no_view_name"] = "Jekk jogħġbok ikteb l-isem ta View tiegħek."; +$LANG["validation_num_rows_to_add"] = "Jekk jogħġbok daħħal in-numru ta 'ringieli li jżid."; +$LANG["validation_option_list_name_taken"] = "Jiddispjacini, dan l-isem il-lista l-għażla hija diġà ttieħdu. Jekk jogħġbok agħżel isem ġdid."; +$LANG["validation_password_in_password_history"] = "Għas-sigurtà, inti ma tistax tidħol il-password istess bħal kull {\$history_size} passwords. Jekk jogħġbok daħħal password differenti."; +$LANG["validation_passwords_different"] = "Jekk jogħġbok kun żgur li l-passwords huma l-istess."; +$LANG["validation_please_enter_search_date_range"] = "Jekk jogħġbok agħżel il-firxa data tfittxija."; +$LANG["validation_please_enter_search_keyword"] = "Jekk jogħġbok ikteb l-keyword search."; +$LANG["validation_select_field_type"] = "Jekk jogħġbok agħżel it-tip il-qasam."; +$LANG["validation_select_submissions_to_copy"] = "Jekk jogħġbok agħżel dawk is-sottomissjonijiet li tixtieq kopja."; +$LANG["validation_select_submissions_to_delete"] = "Jekk jogħġbok agħżel dawk is-sottomissjonijiet tixtieq tħassar."; +$LANG["validation_smart_fill_cannot_fill"] = "Jiddispjacini, aħna ma stajniex timla dan il-qasam."; +$LANG["validation_smart_fill_invalid_field_type"] = "Aħna ma konniex kapaċi jsibu qasam, iżda mhuwiex dropdown, Checkbox jew grupp tar-radju."; +$LANG["validation_smart_fill_no_field_found"] = "Jiddispjacini, aħna ma setgħetx issib il-qasam forma ma 'dak l-isem fuq il-paġna speċifikati."; +$LANG["validation_smart_fill_no_page"] = "Jekk jogħġbok jillokalizza l-paġna li fiha l-qasam li tixtieq Smart Imla."; +$LANG["validation_smart_fill_upload_all_pages"] = "Jekk jogħġbok upload-paġni kollha tal-formola tiegħek."; +$LANG["validation_upload_folder_not_writable"] = "This folder upload temporanja speċifikati mill-istallazzjoni PHP tiegħek mhux writable. Sakemm dan huwa ffissat, fajls ma jista 'jittella' permezz tal-Formola Tools (jew xi program PHP oħra). Jekk jogħġbok ikkuntattja lill-fornitur tiegħek hosting."; +$LANG["validation_upload_html_files_only"] = "Jekk jogħġbok fajls biss upload HTML."; +$LANG["validation_username_taken"] = "Jiddispjacini, li username hija diġà ttieħdu. Jekk joghgbok ikteb ieħor username."; +$LANG["validation_wrong_password"] = "Jiddispjacini, li ma taqbilx ma 'l-password."; +$LANG["word_about"] = "Dwar"; +$LANG["word_access"] = "Aċċess"; +$LANG["word_account"] = "Kont"; +$LANG["word_account_sp"] = "Kont (ijiet)"; +$LANG["word_accounts"] = "Accounts"; +$LANG["word_action"] = "Azzjoni"; +$LANG["word_active"] = "Active"; +$LANG["word_add"] = "Żid"; +$LANG["word_add_rightarrow"] = "Żid »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Amministrazzjoni"; +$LANG["word_administrator"] = "Amministratur"; +$LANG["word_after"] = "Wara"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Author:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«back"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Qabel"; +$LANG["word_benefits"] = "Benefiċċji"; +$LANG["word_blue"] = "Blu"; +$LANG["word_cancel"] = "Ikkanċella"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Lista ta 'kontroll"; +$LANG["word_client"] = "Klijent"; +$LANG["word_client_c"] = "Client:"; +$LANG["word_clients"] = "Clients"; +$LANG["word_close"] = "Viċin"; +$LANG["word_code"] = "Kodiċi"; +$LANG["word_column"] = "Kolonna"; +$LANG["word_columns"] = "Kolonni"; +$LANG["word_columns_sp"] = "Kolonna (i)"; +$LANG["word_complete"] = "Tlesti"; +$LANG["word_configuration"] = "Konfigurazzjoni"; +$LANG["word_content"] = "Kuntent"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Kompli »"; +$LANG["word_copy"] = "Kopja"; +$LANG["word_custom"] = "Drawwa"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Data"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Ħassar"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "Disabled"; +$LANG["word_documentation"] = "Dokumentazzjoni"; +$LANG["word_done"] = "Magħmula"; +$LANG["word_drawbacks"] = "Żvantaġġi"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Edit"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Iffaċilitati"; +$LANG["word_equals"] = "Ugwali"; +$LANG["word_error"] = "Error"; +$LANG["word_error_c"] = "Error:"; +$LANG["word_examples_c"] = "Eżempji:"; +$LANG["word_external"] = "Esterni"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Għalqa"; +$LANG["word_field_sp"] = "Field (i)"; +$LANG["word_fields"] = "Oqsma"; +$LANG["word_fields_sp"] = "Qasam (i)"; +$LANG["word_file"] = "Fajl"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Files"; +$LANG["word_filters"] = "Filtri"; +$LANG["word_filters_sp"] = "Filtru (i)"; +$LANG["word_for"] = "għal"; +$LANG["word_form"] = "Form"; +$LANG["word_form_c"] = "Form:"; +$LANG["word_formatting"] = "Ifformattjar"; +$LANG["word_forms"] = "Formoli"; +$LANG["word_found"] = "Instab"; +$LANG["word_from"] = "Mingħand"; +$LANG["word_from_c"] = "From:"; +$LANG["word_general"] = "Ġenerali"; +$LANG["word_green"] = "Aħdar"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Għoli"; +$LANG["word_help"] = "Għajnuna"; +$LANG["word_hidden"] = "Moħbija"; +$LANG["word_highlight"] = "Jenfasizzaw"; +$LANG["word_horizontal"] = "Orizzontali"; +$LANG["word_hour"] = "Hour"; +$LANG["word_hours"] = "Sigħat"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Inkompleti"; +$LANG["word_install"] = "Installa"; +$LANG["word_installation"] = "Installazzjoni"; +$LANG["word_internal"] = "Intern"; +$LANG["word_language"] = "Lingwa"; +$LANG["word_large"] = "Kbir"; +$LANG["word_like"] = "Bħal"; +$LANG["word_login"] = "Illoggja"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Ewlieni"; +$LANG["word_medium"] = "Medji"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "minuti"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modulu"; +$LANG["word_modules"] = "Moduli"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Isem"; +$LANG["word_name_c"] = "Isem:"; +$LANG["word_never"] = "Qatt"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "NEXT STEP »"; +$LANG["word_no"] = "Le"; +$LANG["word_none"] = "L-ebda"; +$LANG["word_notes"] = "Noti"; +$LANG["word_notification"] = "Notifika"; +$LANG["word_number"] = "Numru"; +$LANG["word_off"] = "Mitfi"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "Fuq"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operatur"; +$LANG["word_options"] = "Options"; +$LANG["word_orange"] = "Oranġjo"; +$LANG["word_order"] = "Ordni"; +$LANG["word_other"] = "Ieħor"; +$LANG["word_other_c"] = "Oħrajn:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Page:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Password"; +$LANG["word_password_c"] = "Password:"; +$LANG["word_pending"] = "Pendenti"; +$LANG["word_permissions"] = "Permessi"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«preċedenti"; +$LANG["word_private"] = "Private"; +$LANG["word_public"] = "Public"; +$LANG["word_purple"] = "Vjola"; +$LANG["word_recipient"] = "Destinatarju"; +$LANG["word_recipient_sp"] = "Reċipjent (i)"; +$LANG["word_red"] = "Aħmar"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Neħħi"; +$LANG["word_remove_uc_leftarrow"] = "«Neħħi"; +$LANG["word_reply_to"] = "Tweġiba għall -"; +$LANG["word_reply_to_c"] = "Risposta għall-:"; +$LANG["word_required"] = "Meħtieġa"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Solvuti"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "ringiela"; +$LANG["word_search"] = "Fittex"; +$LANG["word_searchable"] = "Tiftix"; +$LANG["word_select"] = "Select"; +$LANG["word_setting"] = "Setting"; +$LANG["word_settings"] = "Settings"; +$LANG["word_show"] = "Juri"; +$LANG["word_size"] = "Daqs"; +$LANG["word_skipped"] = "Skipped"; +$LANG["word_small"] = "Żgħar"; +$LANG["word_solution"] = "Soluzzjoni"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Bidu"; +$LANG["word_status"] = "Stat"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Suġġett"; +$LANG["word_subject_c"] = "Suġġett"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Sottomissjoni"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "Sistema"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (i)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Test"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Kaxxa"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temi"; +$LANG["word_time"] = "Ħin"; +$LANG["word_tiny"] = "Ċkejkna"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Illum"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Mhux magħruf"; +$LANG["word_update"] = "Aġġornament"; +$LANG["word_upgrade"] = "Taġġorna"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Utent"; +$LANG["word_username"] = "Username"; +$LANG["word_username_c"] = "Username:"; +$LANG["word_validation"] = "Validazzjoni"; +$LANG["word_value"] = "Valur"; +$LANG["word_value_sp"] = "Valur (i)"; +$LANG["word_verified"] = "Vverifikati"; +$LANG["word_verify"] = "Ivverifika"; +$LANG["word_version"] = "Version"; +$LANG["word_vertical"] = "Vertikali"; +$LANG["word_view"] = "Ara"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Twissija!"; +$LANG["word_warning_c"] = "Twissija:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Merħba!"; +$LANG["word_width_c"] = "wisa ':"; +$LANG["word_words"] = "Kliem"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Isfar"; +$LANG["word_yes"] = "Iva"; \ No newline at end of file diff --git a/global/lang/nl.php b/global/lang/nl.php new file mode 100644 index 00000000..b0a29dc4 --- /dev/null +++ b/global/lang/nl.php @@ -0,0 +1,1219 @@ +Waarschuwing! U hebt {\$num_selected_on_page} opmerkingen op deze pagina en {\$num_selected_on_other_pages} op andere pagina's. Kies een van de volgende opties:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Waarschuwing: U heeft niet geselecteerd geen opmerkingen over deze pagina, maar je hebt geselecteerd {\$num_selected_on_other_pages} op andere pagina's. Bevestig dat u wilt deze opmerkingen te verwijderen.
    "; +$LANG["confirm_delete_view"] = "Weet u zeker dat u dit wilt bekijken verwijderen?"; +$LANG["confirm_refresh_page"] = "Ben je zeker dat je naar de pagina te vernieuwen? Dit zal gaan alle wijzigingen die u hebt gemaakt."; +$LANG["confirm_save_change_before_redirect"] = "Een of meerdere velden zijn bijgewerkt. Wilt u uw wijzigingen op te slaan voordat omgeleid?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Weet u zeker dat u wilt Smart Vul de database kolom namen? Dit zal overschrijven uw bestaande waarden."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Deze optie van de database kolomnamen gebaseerd op de display tekstvelden auto-genereert, zodat de inhoud van de database tabel zijn gemakkelijker te lezen."; +$LANG["confirm_smart_fill_display_names"] = "Weet u zeker dat u de scherm(veld)namen automatisch wilt laten vullen? Bestaande waarden zullen worden overschreven. "; +$LANG["confirm_ungroup_option_list"] = "Weet je zeker dat je deze optie lijst opheffen? Alle opties zullen worden een hoop gegooid in een enkele, gegroepeerde lijst."; +$LANG["confirm_uninstall_module"] = "Weet u zeker dat u deze module verwijderen? Alle module gegevens zullen verloren gaan."; +$LANG["date_AM"] = "vm"; +$LANG["date_Fri"] = "Vr"; +$LANG["date_Friday"] = "Vrijdag"; +$LANG["date_Mon"] = "Ma"; +$LANG["date_Monday"] = "Maandag"; +$LANG["date_PM"] = "nm"; +$LANG["date_Sat"] = "Za"; +$LANG["date_Saturday"] = "Zaterdag"; +$LANG["date_Sun"] = "Zo"; +$LANG["date_Sunday"] = "Zondag"; +$LANG["date_Thu"] = "Do"; +$LANG["date_Thursday"] = "Donderdag"; +$LANG["date_Tue"] = "Di"; +$LANG["date_Tuesday"] = "Dinsdag"; +$LANG["date_Wed"] = "Wo"; +$LANG["date_Wednesday"] = "Woensdag"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "Augustus"; +$LANG["date_month_December"] = "December"; +$LANG["date_month_February"] = "Februari"; +$LANG["date_month_January"] = "Januari"; +$LANG["date_month_July"] = "Juli"; +$LANG["date_month_June"] = "Juni"; +$LANG["date_month_March"] = "Maart"; +$LANG["date_month_May"] = "Mei"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Oktober"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Apr"; +$LANG["date_month_short_Aug"] = "Aug"; +$LANG["date_month_short_Dec"] = "Dec"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mrt"; +$LANG["date_month_short_May"] = "Kan"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Okt"; +$LANG["date_month_short_Sep"] = "Sep"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Het gebruikersaccount is verwijderd."; +$LANG["notify_account_updated"] = "Uw account is succesvol bijgewerkt."; +$LANG["notify_add_display_values"] = "Voeg Display Waarden"; +$LANG["notify_admin_menu_updated"] = "De administratie menu is bijgewerkt."; +$LANG["notify_admin_theme_overridden"] = "Het thema van de beheerder is manueel te bewerken."; +$LANG["notify_allow_url_fopen_not_set"] = "Sorry, kan deze test niet worden uitgevoerd op uw webserver. Het vereist allow_url_fopen worden ingesteld op 1 in je php.ini bestand. Deze instelling kan PHP bestanden benaderen via een URL, die nodig is om deze test uit te voeren. U kunt handmatig testen door het uploaden van een bestand naar die map via FTP, dan probeert te verkrijgen op de URL die u heeft verstrekt."; +$LANG["notify_change_temp_password"] = "U hoeft alleen ingelogd met een tijdelijk wachtwoord. U moet uw wachtwoord opnieuw instellen nu!"; +$LANG["notify_click_to_edit_new_submission"] = "Klik hier om de nieuwe inzending te bewerken."; +$LANG["notify_client_account_menus_updated"] = "De klant rekening (en) zijn bijgewerkt naar de {\$menu_name} menu. U kunt nu het menu dat voorheen werd geassocieerd met de account (s)."; +$LANG["notify_client_account_not_updated"] = "Het client-account kon niet worden bijgewerkt."; +$LANG["notify_client_account_themes_updated"] = "De klant rekening (en) zijn aangepast aan het thema. U kunt nu uitschakelen het thema eerder in verband met de account (s)."; +$LANG["notify_client_account_updated"] = "Het client-account is succesvol bijgewerkt."; +$LANG["notify_client_menu_deleted"] = "De cliënt menu is verwijderd."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Het menu is verwijderd, maar de volgende klantaccounts nu niet meer over een menu! Je moet het bijwerken van de volgende rekeningen:"; +$LANG["notify_client_menu_updated"] = "De klant menu is bijgewerkt."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Sorry, het menu dat u probeerde te verwijderen wordt al gebruikt door de klanten hieronder opgesomd. Om het menu te verwijderen zal je eerst moeten de klanten toe te wijzen aan andere menu's. Klik op de naam van cliënt te bewerken dat individuele rekening, of alle accounts toewijzen aan een ander menu met behulp van de keuzelijst hieronder."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Sorry, een van de thema's die u zojuist met een handicap reeds gebruikt door de volgende klantaccounts. Om uit te schakelen het thema zal je eerst moet elke client toewijzen aan een ander thema. Klik op de naam van cliënt te bewerken dat de individuele rekening, of alle accounts toewijzen aan een thema met behulp van de keuzelijst hieronder."; +$LANG["notify_edit_email_fields_link"] = "Klik hier om aan te geven welke vorm velden zijn e-mail velden, zodat u ze kunt richten op uw e-mail templates."; +$LANG["notify_edit_field_new_field"] = "Dit is een nieuw veld. U moet naar de hoofdpagina voordat ze volledig kunnen bewerken op dit terrein te werken."; +$LANG["notify_edit_option_list_after_save"] = "U moet een lijst met opties te selecteren en vervolgens op Wijzigingen opslaan alvorens te kunnen bewerken."; +$LANG["notify_email_field_config_deleted"] = "De e-mail configuratie is verwijderd."; +$LANG["notify_email_fields_not_updated"] = "Sorry, we kunnen niet updaten de e-mail velden."; +$LANG["notify_email_fields_updated"] = "De e-mail velden zijn bijgewerkt."; +$LANG["notify_email_not_sent"] = "Sorry, de email kon niet worden verzonden. Neem AUB contact op met de sitebeheerder"; +$LANG["notify_email_not_sent_c"] = "Sorry, kon de e-mail niet worden verzonden:"; +$LANG["notify_email_sent"] = "De e-mail (s) zijn verzonden."; +$LANG["notify_email_template_deleted"] = "De e-mail sjabloon is verwijderd."; +$LANG["notify_email_template_updated"] = "De e-mail sjabloon is bijgewerkt."; +$LANG["notify_enabled_module_list_updated"] = "De lijst van modules geactiveerd is bijgewerkt."; +$LANG["notify_error_saving_fields"] = "Er is een fout opgetreden het opslaan van de velden."; +$LANG["notify_field_changes_saved"] = "De wijzigingen in uw vakgebied (s) zijn opgeslagen."; +$LANG["notify_field_options_smart_filled"] = "Uw vakgebied opties zijn Smart gevuld."; +$LANG["notify_field_selected"] = "Het veld is geselecteerd. Klik hier om terug te keren naar het belangrijkste gebied lijst."; +$LANG["notify_field_updated"] = "Dit veld is bijgewerkt."; +$LANG["notify_file_not_uploaded"] = "Het bestand kon niet worden geupload"; +$LANG["notify_file_uploaded"] = "Het bestand is succesvol geupload"; +$LANG["notify_filters_not_updated"] = "Er is een fout opgetreden bijwerking van indiening van deze cliënt filters."; +$LANG["notify_filters_updated"] = "De inzendingenfilters voor deze client zijn bijgewerkt."; +$LANG["notify_folder_correct_permissions"] = "Deze map bevat de juiste rechten."; +$LANG["notify_folder_url_match"] = "De map en URL komen overeen."; +$LANG["notify_folder_url_no_access"] = "Deze test kon niet worden uitgevoerd aangezien PHP niet in staat was deze URL te benaderen. Meestal is dit als gevolg van het feit dat de bewuste URL beveiligd is met een wachtwoord via een .htaccess bestand."; +$LANG["notify_folder_url_no_match"] = "Deze map-URL combinatie lijkt niet overeen te komen."; +$LANG["notify_folder_url_unknown_error"] = "Er is een onbekende fout opgetreden. U kunt het testen door handmatig een bestand te uploaden via FTP en het vervolgens via de browser proberen te bereiken via de door u verstrekte URL"; +$LANG["notify_form_access_type_email_info"] = "Deze vorm heeft de beheerder toegang tot het type, dus geen klanten hebben toegang tot, en zijn niet opgenomen in de dropdown hieronder."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sorry, een formulier met het ID bestaat niet."; +$LANG["notify_form_field_not_added"] = "Het formulier veld '{\$fieldname}' kan niet worden toegevoegd."; +$LANG["notify_form_field_options_updated"] = "De formulierveld opties zijn bijgewerkt."; +$LANG["notify_form_field_removed"] = "Het formulierveld is succesvol verwijderd."; +$LANG["notify_form_fields_removed"] = "De formuliervelden zijn succesvol verwijderd."; +$LANG["notify_form_not_updated_notify_admin"] = "Uw formulier kon niet worden bijgewerkt. Neem AUB contact op met de sitebeheerder om dit probleem te melden"; +$LANG["notify_form_settings_updated"] = "Uw formulierinstellingen zijn succesvol bijgewerkt."; +$LANG["notify_form_submission_updated"] = "De formulierverzending is bijgewerkt."; +$LANG["notify_form_tabs_updated"] = "De tabbladen zijn bijgewerkt."; +$LANG["notify_form_updated"] = "Het formulier is succesvol bijgewerkt."; +$LANG["notify_form_views_updated"] = "De vorm Views zijn bijgewerkt."; +$LANG["notify_install_invalid_db_info"] = "Sorry, we waren niet in staat om verbinding met de database met behulp van de informatie die u verstrekt. De foutmelding de database terug is: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Uw formulier is gemaakt! U kunt uw formulier door middel van deze tabbladen."; +$LANG["notify_invalid_account_information_in_sessions"] = "De account informatie die is opgeslagen in sessies is ongeldig. Gelieve in te loggen opnieuw hieronder."; +$LANG["notify_invalid_license_key"] = "Sorry, betekent dat niet om een ​​geldige licentie sleutel. Probeer het nogmaals intoetsen."; +$LANG["notify_invalid_permissions"] = "Je hebt niet de rechten om deze pagina te bezoeken. U bent afgemeld."; +$LANG["notify_invalid_search_dates"] = "Gebruik de datepicker om een ​​geldige datum of data in te voeren."; +$LANG["notify_invalid_upload_folder"] = "De upload map is ongeldig of is niet beschrijfbaar."; +$LANG["notify_lang_list_updated"] = "De beschikbare talen zijn bijgewerkt."; +$LANG["notify_login_info_emailed"] = "Uw login informatie is per email naar u verzonden"; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, is deze module al geïnstalleerd!"; +$LANG["notify_module_installed"] = "De module is geïnstalleerd. Klik hier om de module te selecteren."; +$LANG["notify_module_list_updated"] = "De module lijst is bijgewerkt."; +$LANG["notify_module_uninstalled"] = "De module is verwijderd."; +$LANG["notify_module_updated"] = "De {\$module} module is bijgewerkt om {\$version}. Klik hier om de module te selecteren ."; +$LANG["notify_multi_field_selected"] = "Het veld is geselecteerd. Klik hier om te bekijken en te bewerken het veld opties."; +$LANG["notify_multi_field_updated"] = "Dit veld is bijgewerkt. U kunt het configureren van het veld opties na de oprichting van het formulier."; +$LANG["notify_multiple_fields_found"] = "Meerdere elementen werden gevonden met de veldnaam ({\$field_name}). Dit kan gebeuren als uw pagina bevat meer dan een vorm of als u per ongeluk genoemd als een van uw formulieren hetzelfde als een ander. Kies de gewenste uit de lijst hieronder."; +$LANG["notify_new_default_view_created"] = "Een nieuwe, standaard weergave met al uw formuliervelden is gemaakt."; +$LANG["notify_new_submission_created"] = "De inzending is gemaakt. U kunt hieronder bewerken."; +$LANG["notify_no_account_id_in_sessions"] = "Geen user account-ID werd gevonden in sessies. Gelieve in te loggen opnieuw hieronder."; +$LANG["notify_no_api_installed"] = "U hoeft niet de API geïnstalleerd"; +$LANG["notify_no_client_permissions"] = "Er zijn geen instellingen beschikbaar om te bewerken."; +$LANG["notify_no_email_template_selected"] = "Selecteer de e-mail sjabloon."; +$LANG["notify_no_emails_defined"] = "Geen e-mails zijn gedefinieerd voor dit formulier. Als u een nieuwe, klikt u op de knop hieronder."; +$LANG["notify_no_field_settings"] = "Dit veld soort bevat geen extra instellingen."; +$LANG["notify_no_fields_in_tab"] = "Dit tabblad bevat geen velden."; +$LANG["notify_no_option_lists"] = "Er zijn geen optie lijsten gedefinieerd. Klik op de onderstaande knop om een ​​nieuwe aan te maken."; +$LANG["notify_no_test_submission"] = "Vorm Tools heeft ontvangen een succesvolle test indiening nog niet."; +$LANG["notify_no_user_email_fields_configured"] = "Opmerking: als u een email sturen naar een e-mailadres dat is opgenomen in de vorm, moet u eerst het configureren van de e-mail formulier velden."; +$LANG["notify_no_views"] = "Uw formulier heeft geen Bekeken opgezet! U moet ten minste een View in om uw formulier gegevens te beheren."; +$LANG["notify_no_views_assigned_to_client_form"] = "Het lijkt erop dat uw gebruikersaccount niet is toegewezen aan elke vorm bekeken, zodat u niet in staat zullen zijn om alle gegevens te zien. Neem contact op met de beheerder voor verdere hulp."; +$LANG["notify_no_views_defined"] = "Je hebt geen Bekeken gedefinieerd. U zult niet in staat zijn om dit formulier betoog te bekijken, tenzij ten minste een View wordt gemaakt. Klik op de onderstaande knop om de standaardweergave te creëren."; +$LANG["notify_option_list_deleted"] = "De optie lijst is verwijderd."; +$LANG["notify_option_list_updated"] = "De optie lijst is bijgewerkt."; +$LANG["notify_public_form_omit_list_updated"] = "De klant weglaten lijst voor deze vorm is bijgewerkt."; +$LANG["notify_public_view_omit_list_updated"] = "De klant weglaten lijst voor deze visie is bijgewerkt."; +$LANG["notify_required_admin_pages"] = "De volgende pagina's moeten in de administrator menu: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Sorry, er was geen activiteit voor een tijdje dus we moesten je uitlogt. Gelieve in te loggen opnieuw hieronder."; +$LANG["notify_setup_options_updated"] = "De opties voor instellingen zijn bijgewerkt."; +$LANG["notify_smart_fill_field_not_found"] = "We waren niet in staat om een veld te vinden met deze naam({\$field_name}) in de vorm (en) opgegeven. U kunt handmatig instellen het veldtype hieronder, of klik op de Skip-knop om dit veld bewerken later."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Uw bestand (en) zijn geüpload. Probeer te klikken op de Smart Vul knop om opnieuw te proberen. Als deze stap mislukt, moet u deze stap en configureer uw formuliervelden manally later overslaan."; +$LANG["notify_smart_fill_submitted"] = "Het formulier is ingediend. Afhankelijk van de grootte van uw formulier en het aantal opties van het veld kan dit enige tijd duren."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Sorry, een of meer van de bestanden die u hebt ingevoerd niet kon worden geladen. U moet deze stap overslaan en configureren van de velden handmatig."; +$LANG["notify_submission_and_files_deleted"] = "De inzending en gekoppelde bestand(en) zijn succesvol verwijderd."; +$LANG["notify_submission_copied"] = "De inzending is gekopieerd."; +$LANG["notify_submission_copied_edit"] = "De inzending is gekopieerd. Je kunt het hieronder bewerken."; +$LANG["notify_submission_deleted"] = "De inzending is succesvol verwijderd"; +$LANG["notify_submission_deleted_with_problems"] = "De inzending is verwijderd, maar de volgende problemen zijn opgetreden bij het verwijderen van de volgende bestand(en):"; +$LANG["notify_submission_id_not_found"] = "Het inzending-ID is niet gevonden."; +$LANG["notify_submission_not_updated"] = "De inzending kon niet worden bijgewerkt"; +$LANG["notify_submissions_and_files_deleted"] = "De inzendingen en gekoppelde bestand(en) zijn succesvol verwijderd."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} inzendingen zijn gekopieerd."; +$LANG["notify_submissions_deleted"] = "De inzendingen zijn succesvol verwijderd"; +$LANG["notify_submissions_deleted_with_problems"] = "De inzendingen zijn verwijderd, maar de volgende problemen zijn opgetreden bij het verwijderen van de volgende bestand(en):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Uw test-email kon niet worden verzonden."; +$LANG["notify_theme_cache_folder_not_writable"] = "Dit thema's cache map is niet beschrijfbaar. Met het oog op dit thema, de {\$folder} map dient te beschikken over een volledige lees-en schrijfrechten."; +$LANG["notify_theme_list_updated"] = "Het thema lijst is bijgewerkt."; +$LANG["notify_themes_settings_updated"] = "Uw thema instellingen zijn bijgewerkt."; +$LANG["notify_view_deleted"] = "The View is verwijderd."; +$LANG["notify_view_group_deleted"] = "The View groep is verwijderd."; +$LANG["notify_view_missing_columns"] = "Oops! Sorry, deze View niet volledig ingesteld nog niet."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klik hier om aan te geven welke velden moeten verschijnen als kolommen op deze pagina."; +$LANG["notify_view_updated"] = "The View is bijgewerkt."; +$LANG["notify_your_email_sent"] = "Uw email is succesvol verzonden"; +$LANG["phrase_100_per_page"] = "100 per pagina"; +$LANG["phrase_10_per_page"] = "10 per pagina"; +$LANG["phrase_15_per_page"] = "15 per pagina"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per pagina"; +$LANG["phrase_25_per_page"] = "25 per pagina"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 kolommen"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 kolommen"; +$LANG["phrase_4_columns"] = "4 Kolommen"; +$LANG["phrase_50_per_page"] = "50 per pagina"; +$LANG["phrase_accepting_submissions"] = "(aanvaardt inzendingen)"; +$LANG["phrase_access_admin_account_c"] = "U kan hier toegang krijgen tot uw adminaccount:"; +$LANG["phrase_access_type"] = "Toegangsniveau"; +$LANG["phrase_account_info"] = "Accountinformatie"; +$LANG["phrase_account_settings"] = "Accountinstellingen"; +$LANG["phrase_action_needed"] = "Actie Vereist"; +$LANG["phrase_add_client"] = "GEBRUIKER TOEVOEGEN"; +$LANG["phrase_add_client_menu"] = "Gebruikersmenu Toevoegen"; +$LANG["phrase_add_default_settings_rightarrow"] = "Voeg standaardinstellingen »"; +$LANG["phrase_add_field"] = "Veld Toevoegen"; +$LANG["phrase_add_fields"] = "Velden Toevoegen"; +$LANG["phrase_add_fields_rightarrow"] = "Veld toevoegen (s) »"; +$LANG["phrase_add_form"] = "Formulier Toevoegen"; +$LANG["phrase_add_form_external"] = "Add Form - Extern"; +$LANG["phrase_add_form_internal"] = "Add Form - Interne"; +$LANG["phrase_add_new_group_rightarrow"] = "Nieuwe groep toevoegen »"; +$LANG["phrase_add_num_rows"] = "{\$number} Rij(en) Toevoegen"; +$LANG["phrase_add_row"] = "Rij Toevoegen »"; +$LANG["phrase_add_submission_button"] = "Voeg Submission Button"; +$LANG["phrase_add_view_rightarrow"] = "Weergave toevoegen »"; +$LANG["phrase_adding_multi_page_form"] = "Een formulier, bestaande uit meerdere paginas, toevoegen met de API"; +$LANG["phrase_adding_single_page_form"] = "Een formulier, bestaande uit één pagina, toevoegen met de API"; +$LANG["phrase_admin_menu"] = "Administrator Menu"; +$LANG["phrase_admin_only"] = "Enkel Administrator"; +$LANG["phrase_admin_panel"] = "Administrator Paneel"; +$LANG["phrase_administrator_theme"] = "Administrator Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Geavanceerde instellingen »"; +$LANG["phrase_all_X_results_selected"] = "Alle {\$numresults} Resultaten Geselecteerd"; +$LANG["phrase_all_clients"] = "Alle gebruikers"; +$LANG["phrase_all_clients_except_c"] = "Alle gebruikers behalve:"; +$LANG["phrase_all_clients_have_access"] = "(alle gebruikers hebben toegang)"; +$LANG["phrase_all_fields"] = "Alle velden"; +$LANG["phrase_all_fields_displayed"] = "Alle velden worden getoond"; +$LANG["phrase_all_statuses"] = "Alle statussen"; +$LANG["phrase_all_submissions"] = "Alle inzendingen"; +$LANG["phrase_allow_fields_edited"] = "Bewerken van velden toestaan"; +$LANG["phrase_alphanumeric"] = "Alfanumerieke (az, 0-9)"; +$LANG["phrase_api_version"] = "API Versie"; +$LANG["phrase_apply_timezone_offset"] = "Toe te passen Tijdzone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Wijs alle opgesomde gebruikersaccounts toe aan {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Wijs alle opgesomde gebruikersaccounts toe aan {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Op het einde"; +$LANG["phrase_at_start"] = "Bij Start"; +$LANG["phrase_author_link"] = "Auteur Link"; +$LANG["phrase_auto_disable_account"] = "Auto-account uit te schakelen na # mislukte login pogingen"; +$LANG["phrase_auto_size"] = "Auto-maat"; +$LANG["phrase_available_clients"] = "Beschikbare Gebruikers"; +$LANG["phrase_available_fields"] = "Beschikbare velden"; +$LANG["phrase_available_option_lists"] = "Mogelijkheid Lijsten"; +$LANG["phrase_available_swatches"] = "Stalen beschikbaar"; +$LANG["phrase_available_swatches_c"] = "Stalen beschikbaar:"; +$LANG["phrase_available_tabs"] = "Beschikbaar Tabs"; +$LANG["phrase_available_views"] = "Beschikbare Views"; +$LANG["phrase_awaiting_form_submission"] = "Wachtend op verzending formulier"; +$LANG["phrase_back_to_field_list"] = "« Terug naar Veldlijst"; +$LANG["phrase_back_to_search_results"] = "Terug naar zoekresultaten"; +$LANG["phrase_base_view_on"] = "Base op ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Wijzig Login-info"; +$LANG["phrase_characters_limit_p"] = "tekens te beperken."; +$LANG["phrase_check_db_settings_try_again"] = "Gelieve uw databaseinstellingen te controleren en opnieuw op Volgende te klikken."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Controleer URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Opkuisen"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Ledig weg-te-laten-lijst"; +$LANG["phrase_client_account_settings"] = "Gebruikersaccount Instellingen"; +$LANG["phrase_client_field"] = "Klant Veld"; +$LANG["phrase_client_map_filters"] = "Opdrachtgever Kaart Filters »"; +$LANG["phrase_client_may_edit"] = "Gebruiker mag bewerken"; +$LANG["phrase_client_menu"] = "Gebruikersmenu"; +$LANG["phrase_clients_can_access_form"] = "Gebruikers die toegang hebben tot het formulier"; +$LANG["phrase_clients_can_access_view"] = "Gebruikers die toegang hebben tot de View"; +$LANG["phrase_clients_cannot_access_form"] = "Gebruikers die geen toegang hebben tot het formulier"; +$LANG["phrase_clients_cannot_access_view"] = "Gebruikers die geen toegang hebben tot de View"; +$LANG["phrase_clients_may_edit"] = "Gebruikers mogen bewerken"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Code / Markup Field"; +$LANG["phrase_code_markup_type"] = "Code / Markup Type"; +$LANG["phrase_codes_c"] = "Error Codes:"; +$LANG["phrase_column_width"] = "Kolombreedte"; +$LANG["phrase_company_name"] = "Bedrijfsnaam"; +$LANG["phrase_configure_form_email_fields"] = "Configureer Formulier E-mailvelden"; +$LANG["phrase_confirm_folder_url_match"] = "Bevestig Map-URL"; +$LANG["phrase_connect_rows"] = "Sluit de rijen"; +$LANG["phrase_copy_email_settings_from"] = "Kopieer E-mail Instellingen Van…"; +$LANG["phrase_copy_settings_from"] = "Kopieer Instellingen Van…"; +$LANG["phrase_core_fields"] = "Core Velden"; +$LANG["phrase_core_version"] = "Core Versie"; +$LANG["phrase_create_account"] = "Creëer Account"; +$LANG["phrase_create_admin_account"] = "Creëer Admin-account"; +$LANG["phrase_create_config_file"] = "Creëer Configuratie-bestand"; +$LANG["phrase_create_database_tables"] = "Creëer Database-tabellen"; +$LANG["phrase_create_default_view"] = "Maak Default View"; +$LANG["phrase_create_file"] = "Creëer Bestand"; +$LANG["phrase_create_group"] = "Groep maken"; +$LANG["phrase_create_new_email"] = "Creëer Nieuwe E-mail"; +$LANG["phrase_create_new_menu"] = "Creëer Nieuw Menu"; +$LANG["phrase_create_new_option_list"] = "Nieuwe Optielijst"; +$LANG["phrase_create_new_option_list_group"] = "Maak een nieuwe lijst met opties groep"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Nieuwe Optielijst »"; +$LANG["phrase_create_new_view"] = "Creëer Nieuwe View"; +$LANG["phrase_create_new_view_group"] = "Nieuwe View Group"; +$LANG["phrase_custom_display_format"] = "Aangepaste weergave-indeling"; +$LANG["phrase_custom_recipient"] = "Aangepaste Ontvanger"; +$LANG["phrase_custom_url"] = "Aangepaste URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Datatype"; +$LANG["phrase_database_hostname"] = "Database hostnaam"; +$LANG["phrase_database_name"] = "Database naam"; +$LANG["phrase_database_password"] = "Database wachtwoord"; +$LANG["phrase_database_settings"] = "Database instellingen"; +$LANG["phrase_database_setup"] = "Database Instellingen"; +$LANG["phrase_database_table_prefix"] = "Database tabel voorvoegsel"; +$LANG["phrase_database_username"] = "Database gebruikersnaam"; +$LANG["phrase_date_format"] = "Datum Formaat"; +$LANG["phrase_db_column"] = "DB kolom"; +$LANG["phrase_db_setup_page_4"] = "4. Database Instellingen"; +$LANG["phrase_default_client_account_theme"] = "Standaard Gebruikersaccount Theme"; +$LANG["phrase_default_date_field_search_value"] = "Standaard datumveld zoekwaarde"; +$LANG["phrase_default_language"] = "Standaard taal"; +$LANG["phrase_default_menu"] = "Standaard Menu"; +$LANG["phrase_default_sessions_timeout"] = "Standaard Sessie Timeout"; +$LANG["phrase_default_sort_order"] = "Standaard sorteervolgorde"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Standaard Theme"; +$LANG["phrase_default_value"] = "Standaardwaarde"; +$LANG["phrase_default_values"] = "Standaardwaarden"; +$LANG["phrase_default_values_new_submissions"] = "Standaardwaarden voor nieuwe inzendingen"; +$LANG["phrase_delete_field"] = "Veld verwijderen"; +$LANG["phrase_delete_form"] = "VERWIJDER FORMULIER"; +$LANG["phrase_delete_row"] = "Rij verwijderen"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Verwijder geassocieerde bestanden bij verwijderen inzending"; +$LANG["phrase_delete_view"] = "Verwijderen View"; +$LANG["phrase_disconnect_rows"] = "Koppel rijen"; +$LANG["phrase_display_email"] = "Toon E-mail"; +$LANG["phrase_display_name"] = "Weergave Naam"; +$LANG["phrase_display_text"] = "Weergave Tekst"; +$LANG["phrase_display_value"] = "Toon Waarde"; +$LANG["phrase_edit_admin_menu"] = "Bewerk Admin Menu"; +$LANG["phrase_edit_client"] = "Bewerk Gebruiker"; +$LANG["phrase_edit_client_menu"] = "Bewerk Gebruikersmenu"; +$LANG["phrase_edit_email_template"] = "Bewerk E-mail Template"; +$LANG["phrase_edit_field"] = "Bewerk Veld"; +$LANG["phrase_edit_field_c"] = "Veld bewerken:"; +$LANG["phrase_edit_form"] = "Bewerk Formulier"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit vorm toegang type]"; +$LANG["phrase_edit_option_list"] = "Edit optie Lijst"; +$LANG["phrase_edit_submission"] = "Bewerk inzending"; +$LANG["phrase_edit_submission_label"] = "Edit Submission Label"; +$LANG["phrase_edit_view"] = "Bewerk View"; +$LANG["phrase_email_format"] = "E-mail Formaat"; +$LANG["phrase_email_settings"] = "EMAIL INSTELLINGEN"; +$LANG["phrase_email_template"] = "E-mail template"; +$LANG["phrase_email_template_name"] = "Naam E-mail Template"; +$LANG["phrase_error_learn_more"] = "Leer meer over deze error."; +$LANG["phrase_error_text_intro"] = "Gelieve de volgende fout(en) op te lossen en opnieuw te verzenden:"; +$LANG["phrase_errors_learn_more"] = "Klik op de error codes voor meer info."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Externe Formulier"; +$LANG["phrase_external_form_info"] = "Externe Formulier Info"; +$LANG["phrase_external_your_own_form"] = "Externe (uw eigen formulier)"; +$LANG["phrase_field_comments"] = "Reacties veld"; +$LANG["phrase_field_label"] = "Veldlabel"; +$LANG["phrase_field_options"] = "Veld Opties"; +$LANG["phrase_field_size"] = "Veldgrootte"; +$LANG["phrase_field_skipped"] = "Veld Overgeslaan"; +$LANG["phrase_field_specific_settings"] = "Field-specifieke instellingen"; +$LANG["phrase_field_type"] = "Veldtype"; +$LANG["phrase_field_type_no_validation"] = "Er zijn geen validatieregels beschikbaar voor dit veldtype."; +$LANG["phrase_field_types"] = "Veldtypes"; +$LANG["phrase_field_value"] = "Veldwaarde"; +$LANG["phrase_field_values_to_display_values"] = "Veldwaardes » Toon Waardes"; +$LANG["phrase_final_touches_page_6"] = "6. Afwerking"; +$LANG["phrase_finalize_form"] = "Rond formulier af"; +$LANG["phrase_first_name"] = "Voornaam"; +$LANG["phrase_footer_text"] = "Voettekst"; +$LANG["phrase_for_any_form_submission"] = "Voor elke inzending"; +$LANG["phrase_for_view_submissions"] = "Enkel voor inzendingen in View"; +$LANG["phrase_forgot_password"] = "Wachtwoord vergeten?"; +$LANG["phrase_form_already_selected"] = "Formulier reeds geselecteerd"; +$LANG["phrase_form_email_field_b_c"] = "[Formulier veld E-mail]:"; +$LANG["phrase_form_email_field_configuration"] = "Formulier E-mail veld Configuratie"; +$LANG["phrase_form_email_fields"] = "Formulier E-mail Velden"; +$LANG["phrase_form_field"] = "Formulier Veld"; +$LANG["phrase_form_field_contents"] = "Vorm Inhoud van het veld"; +$LANG["phrase_form_field_name"] = "Formulier Veldnaam"; +$LANG["phrase_form_field_placeholders"] = "Formulierveld plaatsaanduidingen"; +$LANG["phrase_form_fields"] = "Formulier Velden"; +$LANG["phrase_form_info"] = "Formulier Informatie"; +$LANG["phrase_form_info_2"] = "2. Formulier Informatie"; +$LANG["phrase_form_list"] = "Formulier Lijst"; +$LANG["phrase_form_name"] = "Formulier Naam"; +$LANG["phrase_form_page"] = "Formulier Pagina"; +$LANG["phrase_form_placeholders"] = "FORMULIER PLACEHOLDERS"; +$LANG["phrase_form_submission"] = "FORMULIER INZENDING"; +$LANG["phrase_form_submissions"] = "Formulier Inzendingen"; +$LANG["phrase_form_type"] = "Formulier Type"; +$LANG["phrase_form_url"] = "Formulier URL"; +$LANG["phrase_form_urls"] = "Formulier URL's"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formulieren toegewezen aan een account"; +$LANG["phrase_forms_page_default_message"] = "Formulieren pagina standaard bericht"; +$LANG["phrase_ft_installation"] = "Form Tools Installatie Script"; +$LANG["phrase_full_width"] = "Volle breedte"; +$LANG["phrase_getting_started"] = "Aan de slag"; +$LANG["phrase_global_placeholders"] = "GLOBALE PLACEHOLDERS"; +$LANG["phrase_group_name"] = "Groepsnaam"; +$LANG["phrase_group_options_q"] = "Groep opties?"; +$LANG["phrase_group_rows"] = "Groepeer rijen"; +$LANG["phrase_have_fun"] = "Veel plezier!"; +$LANG["phrase_highlight_colour"] = "Highlight kleur"; +$LANG["phrase_html_email"] = "HTML E-mail"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Afbeeldingen/Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Import Option List »"; +$LANG["phrase_input_length"] = "Input Lengte"; +$LANG["phrase_installation_help"] = "Hulp bij de installatie"; +$LANG["phrase_internal_form"] = "Intern Model"; +$LANG["phrase_ip_address"] = "IP-adres"; +$LANG["phrase_is_multi_page_form_q"] = "Is dit een multi-pagina vorm?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response Placeholders"; +$LANG["phrase_large_300px"] = "Groot (300px)"; +$LANG["phrase_large_400px"] = "Groot (400px)"; +$LANG["phrase_last_7_days"] = "Laatste 7 dagen"; +$LANG["phrase_last_logged_in"] = "Laatst ingelogd"; +$LANG["phrase_last_modified"] = "Laatst gewijzigd"; +$LANG["phrase_last_modified_date"] = "Datum Laatst gewijzigd"; +$LANG["phrase_last_name"] = "Achternaam"; +$LANG["phrase_letters_only"] = "Alleen letters"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Beperk e-mail inhoud tot velden in View"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Inloggen"; +$LANG["phrase_login_as_user"] = "Log in als deze gebruiker"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Pagina"; +$LANG["phrase_login_panel_c"] = "Inlogpagina:"; +$LANG["phrase_login_panel_leftarrows"] = "« Loginpagina"; +$LANG["phrase_login_password"] = "Login Wachtwoord"; +$LANG["phrase_login_username"] = "Login Gebruikersnaam"; +$LANG["phrase_logo_link_url"] = "Logo link URL"; +$LANG["phrase_logout_url"] = "Uitlog URL"; +$LANG["phrase_main_nav"] = "Hoofdnavigatie"; +$LANG["phrase_main_settings"] = "Algemene instellingen"; +$LANG["phrase_manage_client"] = "Bewerk Gebruiker"; +$LANG["phrase_manage_client_omit_list"] = "Beheren Client weglaten Lijst"; +$LANG["phrase_max_file_size"] = "Max. Bestandsgrootte"; +$LANG["phrase_max_length"] = "Max Lengte"; +$LANG["phrase_max_length_words_chars"] = "- Max lengte (woorden / karakters)"; +$LANG["phrase_may_add_submissions"] = "Inzendingen kunnen toevoegen"; +$LANG["phrase_may_copy_submissions"] = "Kan inzendingen kopiëren"; +$LANG["phrase_may_delete_submissions"] = "Kunnen verwijderen Inzending"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menunaam"; +$LANG["phrase_menu_type"] = "Menu type"; +$LANG["phrase_min_password_length"] = "Minimale lengte van een wachtwoord"; +$LANG["phrase_module_description"] = "Beschrijving Module"; +$LANG["phrase_module_info"] = "Informatie Module"; +$LANG["phrase_module_nav"] = "Module navigatie"; +$LANG["phrase_month_to_date"] = "Maand tot nu toe"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Meervoudige keuzelijst"; +$LANG["phrase_multiple_fields_found"] = "Meerdere velden gevonden!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Voornaam / Achternaam"; +$LANG["phrase_new_blank_email"] = "Nieuwe Blanco E-mail"; +$LANG["phrase_new_blank_option_list"] = "Nieuwe Blank Optielijst"; +$LANG["phrase_new_blank_view"] = "Nieuwe Blanco View"; +$LANG["phrase_new_ft_installation"] = "Nieuwe Form Tools installatie"; +$LANG["phrase_new_option_list"] = "Nieuwe optie Lijst"; +$LANG["phrase_new_password"] = "Nieuw Wachtwoord"; +$LANG["phrase_new_password_reenter"] = "Nieuw Wachtwoord (opnieuw invoeren)"; +$LANG["phrase_new_view"] = "Nieuwe View"; +$LANG["phrase_new_view_all_fields"] = "New View - Alle velden"; +$LANG["phrase_next_client"] = "volgende klant »"; +$LANG["phrase_next_field"] = "volgend veld »"; +$LANG["phrase_next_form"] = "volgende formulier »"; +$LANG["phrase_next_view"] = "volgende view »"; +$LANG["phrase_no_clients"] = "Geen Gebruikers"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Geen offset"; +$LANG["phrase_no_option_lists_available"] = "Geen opties lijsten beschikbaar."; +$LANG["phrase_no_views"] = "Geen Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Geen uitzicht met filters gedefinieerd)"; +$LANG["phrase_none_not_recommended"] = "Geen (niet aangeraden)"; +$LANG["phrase_not_assigned_to_option_list"] = "Dit veld is niet toegewezen aan een lijst met opties."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Is NIET Gelijk Aan"; +$LANG["phrase_not_found"] = "Niet gevonden!"; +$LANG["phrase_not_like"] = "NIET Als"; +$LANG["phrase_not_visible_to_client"] = "(niet zichtbaar voor gebruiker)"; +$LANG["phrase_num_clients_per_page"] = "Aantal Gebruikers per Pagina"; +$LANG["phrase_num_emails_per_page"] = "Aantal E-mails Per Pagina"; +$LANG["phrase_num_fields"] = "Aantal velden"; +$LANG["phrase_num_forms_per_page"] = "Aantal Formulieren Per Pagina"; +$LANG["phrase_num_menus_per_page"] = "Aantal Menus Per Pagina"; +$LANG["phrase_num_modules_per_page"] = "Aantal Modules Per Pagina"; +$LANG["phrase_num_option_lists_per_page"] = "Num Optie Lijsten per pagina"; +$LANG["phrase_num_options"] = "Num-opties"; +$LANG["phrase_num_rows"] = "Num Rijen"; +$LANG["phrase_numbers_only"] = "Alleen nummers"; +$LANG["phrase_often_localhost"] = "(vaak \"localhost\")"; +$LANG["phrase_on_form_submission"] = "Bij formulier verzenden"; +$LANG["phrase_one_char_number"] = "Ten minste een teken is van een aantal (0-9)"; +$LANG["phrase_one_char_upper"] = "Ten minste een teken is hoofdletter"; +$LANG["phrase_one_special_char"] = "Ten minste een van de {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(enkel specifieke gebruikers hebben toegang)"; +$LANG["phrase_open_form_in_dialog"] = "Open vorm in dialoog venster"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Open deze vorm in een nieuw tabblad / venster"; +$LANG["phrase_option_list"] = "Optielijst"; +$LANG["phrase_option_list_name"] = "Optie Lijstnaam"; +$LANG["phrase_option_list_or_contents"] = "Optie Lijst / Contents"; +$LANG["phrase_option_lists"] = "Optie Lijsten"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Pagina Titels"; +$LANG["phrase_pass_on"] = "Doorgeven"; +$LANG["phrase_password_min"] = "Het moet minstens een {\$length} karakters."; +$LANG["phrase_password_one_number"] = "Zij moet ten minste een cijfer (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Zij moet ten minste een hoofdletter."; +$LANG["phrase_password_requirements_c"] = "Wachtwoord eisen:"; +$LANG["phrase_password_reset"] = "Wachtwoord Opnieuw Instellen"; +$LANG["phrase_password_special_char"] = "Zij moet ten minste een van de volgende tekens: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissies / Andere instellingen"; +$LANG["phrase_permitted_file_types"] = "Toegestane bestandstypen"; +$LANG["phrase_phone_number"] = "Telefoonnummer"; +$LANG["phrase_phone_number_format"] = "Telefoonnummer Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max. toegelaten upload bestandsgrootte"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Versie"; +$LANG["phrase_please_confirm"] = "Gelieve te bevestigen"; +$LANG["phrase_please_enter_license_key"] = "Geef uw licentiecode"; +$LANG["phrase_please_select"] = "Selecteer a.u.b."; +$LANG["phrase_please_select_form"] = "Gelieve een formulier te selecteren"; +$LANG["phrase_prev_client"] = "«Vorige klant"; +$LANG["phrase_prev_form"] = "«Vorige formulier"; +$LANG["phrase_prevent_password_reuse"] = "Voorkom hergebruik van wachtwoorden # laatst"; +$LANG["phrase_previous_field"] = "« vorig veld"; +$LANG["phrase_previous_page"] = "Vorige Pagina"; +$LANG["phrase_previous_view"] = "«Vorige View"; +$LANG["phrase_program_name"] = "Programma Naam"; +$LANG["phrase_public_form_omit_list"] = "Publieke laat-form-weg Lijst"; +$LANG["phrase_public_view_omit_list"] = "Publieke laat-view-weg Lijst"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Er was een probleem met de volgende query:"; +$LANG["phrase_radio_buttons"] = "Keuzerondjes"; +$LANG["phrase_random_form_submission"] = "Willekeurige formulier inzending"; +$LANG["phrase_re_enter_password"] = "Bevestig Wachtwoord"; +$LANG["phrase_recipient_type"] = "Ontvanger Type"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Vernieuw Lijst"; +$LANG["phrase_refresh_module_list"] = "Vernieuw Module Lijst"; +$LANG["phrase_refresh_page"] = "Vernieuw Pagina"; +$LANG["phrase_refresh_theme_list"] = "Vernieuw Theme Lijst"; +$LANG["phrase_register_new_email"] = "Registreer New E-mail"; +$LANG["phrase_remaining_characters"] = "overige tekens"; +$LANG["phrase_remaining_words"] = "resterende woorden"; +$LANG["phrase_remove_tabs"] = "Verwijder Tabs"; +$LANG["phrase_required_password_chars"] = "Wachtwoord vereist karakters"; +$LANG["phrase_resend_test_submission"] = "TESTINZENDING NOGMAALS VERZENDEN"; +$LANG["phrase_return_form_list"] = "TERUG NAAR FORMULIER OVERZICHT"; +$LANG["phrase_row_selected"] = "{\$num_rows} rij geselecteerd"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rijen geselecteerd"; +$LANG["phrase_sample_data"] = "Voorbeeldgegevens"; +$LANG["phrase_save_changes"] = "Wijzigingen opslaan"; +$LANG["phrase_search_keyword"] = "Zoek trefwoord"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Selecteer Alles"; +$LANG["phrase_select_all_X_results"] = "Selecteer alle {\$numresults} resultaten"; +$LANG["phrase_select_all_on_page"] = "Selecteer alles op deze pagina"; +$LANG["phrase_select_date"] = "Selecteer een datum"; +$LANG["phrase_select_field"] = "Selecteer Veld"; +$LANG["phrase_select_swatch"] = "Selecteer staal"; +$LANG["phrase_selected_clients"] = "Geselecteerde Gebruikers"; +$LANG["phrase_selected_views"] = "Geselecteerde Views"; +$LANG["phrase_send_email"] = "Verzend E-mail"; +$LANG["phrase_send_test_email"] = "VERZEND TEST EMAIL"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessies Timeout"; +$LANG["phrase_setting_value"] = "Instellen Waarde"; +$LANG["phrase_setup_options"] = "Instellingen Opties"; +$LANG["phrase_show_all"] = "Toon Alle"; +$LANG["phrase_show_form"] = "Toon Formulier"; +$LANG["phrase_size_large"] = "Groot (TEKST)"; +$LANG["phrase_size_medium"] = "Medium (<=256 kar.)"; +$LANG["phrase_size_small"] = "Klein (<=20 kar.)"; +$LANG["phrase_size_tiny"] = "Zeer Klein (<=5 kar.)"; +$LANG["phrase_size_very_large"] = "Zeer Groot (MEDIUM TEKST)"; +$LANG["phrase_skip_field"] = "Veld Overslaan"; +$LANG["phrase_skip_step"] = "Stap Overslaan"; +$LANG["phrase_small_100px"] = "Klein (100px)"; +$LANG["phrase_small_80px"] = "Small (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fill velden van:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill Gebruikersdocumentie »"; +$LANG["phrase_sort_as"] = "Sorteer als"; +$LANG["phrase_special_fields"] = "Speciale velden"; +$LANG["phrase_standard_fields"] = "Standaard velden"; +$LANG["phrase_standard_filters"] = "Standard Filters »"; +$LANG["phrase_step_1"] = "Stap 1"; +$LANG["phrase_step_2"] = "Stap 2"; +$LANG["phrase_step_3"] = "Stap 3"; +$LANG["phrase_step_4"] = "Stap 4"; +$LANG["phrase_step_5"] = "Stap 5"; +$LANG["phrase_step_6"] = "Stap 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Filter tags uit formulier inzendingen"; +$LANG["phrase_subject_line"] = "Onderwerp regel"; +$LANG["phrase_submission_date"] = "Inzenddatum"; +$LANG["phrase_submission_id"] = "Inzend-ID"; +$LANG["phrase_submission_made"] = "Inzending gemaakt: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Inzending Type"; +$LANG["phrase_submissions_per_page"] = "Inzendingen per pagina"; +$LANG["phrase_system_check"] = "Systeem Check"; +$LANG["phrase_system_fields_no_validation"] = "Je mag niet toevoegen validatie systeem velden."; +$LANG["phrase_system_time_offset"] = "Systeemtijd offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test map-rechten"; +$LANG["phrase_test_submission"] = "Test Inzending"; +$LANG["phrase_test_submission_3"] = "3. Test Inzending"; +$LANG["phrase_test_submission_received"] = "Test Inzending Ontvangen"; +$LANG["phrase_text_and_html"] = "Tekst & HTML"; +$LANG["phrase_text_email"] = "Tekst E-mail"; +$LANG["phrase_text_template"] = "Tekst Template"; +$LANG["phrase_the_previous_month"] = "De vorige maand"; +$LANG["phrase_theme_description"] = "Beschrijving thema"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Totale Resultaten:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Deselecteer alles"; +$LANG["phrase_update_accounts"] = "Update Accounts"; +$LANG["phrase_update_email_template"] = "Update E-mail Template"; +$LANG["phrase_update_field"] = "Update Veld"; +$LANG["phrase_update_order"] = "Update order"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Update Bestand"; +$LANG["phrase_upload_files"] = "Update Bestanden"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Upload map pad"; +$LANG["phrase_upload_folder_url"] = "Upload map URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Standaardwaarde gebruiken?"; +$LANG["phrase_used_by_num_form_fields"] = "Gebruikt door # Formuliervelden"; +$LANG["phrase_uses_swatches"] = "Maakt gebruik van Stalen"; +$LANG["phrase_valid_email"] = "Geldig e-mail"; +$LANG["phrase_validation_error"] = "Validatiefout"; +$LANG["phrase_validation_rule"] = "Validatieregel"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Bekijk Group"; +$LANG["phrase_view_id"] = "Bekijk ID"; +$LANG["phrase_view_name"] = "Bekijk Naam"; +$LANG["phrase_view_placeholders"] = "Bekijk Placeholders"; +$LANG["phrase_view_submissions"] = "Bekijk Inzendingen"; +$LANG["phrase_view_uploaded_files"] = "bekijk ingezonden bestanden"; +$LANG["phrase_viewing_range"] = "[record {\$startnum} tot {\$endnum}]"; +$LANG["phrase_when_sent"] = "Wanneer verzonden"; +$LANG["phrase_when_submission_is_deleted"] = "Wanneer inzending is verwijderd"; +$LANG["phrase_when_submission_is_edited"] = "Wanneer inzending is aangepast"; +$LANG["phrase_who_can_access"] = "Wie heeft toegang?"; +$LANG["phrase_word_limit_p"] = "woord te beperken."; +$LANG["phrase_year_to_date"] = "Year to date"; +$LANG["phrase_yes_for_all_views"] = "Ja, voor alle Views"; +$LANG["phrase_yes_for_specific_views"] = "Ja, voor specifieke Views"; +$LANG["phrase_your_account"] = "Uw Account"; +$LANG["phrase_your_email"] = "Uw E-mail"; +$LANG["phrase_your_email_address"] = "Uw e-mailadres"; +$LANG["processing_form_disabled"] = "Sorry, dit formulier is uitgeschakeld."; +$LANG["processing_form_incomplete"] = "Sorry, dit formulier niet volledig schijnt te worden opgezet vanuit Form Tools. De meest waarschijnlijke oorzaak van dit probleem is dat u hebt verwijderd van de "form_tools_initialize_form" verborgen formulier veld, maar niet alle stappen van de "Add Formulier" proces.

    Log in en bekijk de vorm configuratie."; +$LANG["processing_init_complete"] = "Dank je wel! Uw test inzending is geplaatst door succes. Ga terug naar de Form Extra administratie-paneel en de "Refresh" knop aan de onderkant van de Add Form Stap 3 pagina om te voltooien het opzetten van uw formulier."; +$LANG["processing_invalid_form_id"] = "Sorry, lijkt dit niet aan een geldig id."; +$LANG["processing_no_form_id"] = "process.php vereist een vorm ID voor verwerking. Zorg ervoor dat uw formulier bevat een verborgen veld met de naam "form_tools_form_id" dat is passeren langs de vorm ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Vorm Tools is niet in staat om te bepalen waar om te buigen wanneer zij niet aan de CAPTCHA correct invoeren. Please pass in een verborgen veld met de naam form_tools_form_url met daarin de URL van het formulier."; +$LANG["processing_no_post_vars"] = "process.php ontvangt geen gegevens. Let op: dit script kan niet rechtstreeks worden geladen in uw browser.
    Zorg ervoor dat uw formulier verzenden via POST."; +$LANG["processing_no_redirect_url"] = "De inzending was goed verwerkt, maar je hebt niet opgegeven een redirect URL voor dit formulier! Bewerk uw formulier in de vorm Extra UI en voeg de redirect URL."; +$LANG["special_language"] = "Dutch"; +$LANG["special_language_locale"] = "Dutch"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Alle nieuwe klant accounts worden aangemaakt met de instellingen en rechten die hieronder zijn gedefinieerd. Om de instelling te veranderen voor een bepaalde cliënt, bewerk de klant account en ga naar het tabblad Instellingen."; +$LANG["text_add_form_choose_integration_method"] = "Kiezen welke methode u wilt gebruiken om uw formulier te integreren met Form Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Deze methode maakt gebruik van de Form API's , opgenomen in de belangrijkste vorm Extra script. De API biedt een aantal handige functies om de taak van het integreren van uw formulier met Form Extra zo eenvoudig mogelijk te maken. Er zijn geen beperkingen aan hoe uw formulier kan worden ingediend bij het gebruik van de API. Daar kan je de inhoud in een keer, of pagina per pagina, u kunt uw eigen server-side validatie, CAPTCHA afbeeldingen toe te voegen, u kunt ervoor kiezen om de informatie die nu in te dienen, maar alleen vertel het aan de indiening weer te geven in de vorm Extra UI op een later tijdstip (zie de Gefinaliseerde Inzending sectie in de API help documentatie)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Om uw formulier gegevens via PHP in te dienen, moet uw formulier worden op dezelfde website als dit formulier Extra installatie. Ten tweede, voor niet-technische en beginnende Form Extra gebruikers, kan deze methode een beetje intimiderend zijn. Maar er is genoeg documentatie om u te helpen, waaronder twee simpele tutorials voor de integratie van uw single-en multi-pagina formulieren (deze zijn gekoppeld aan op een latere stap)."; +$LANG["text_add_form_direct_submission_benefits"] = "Dit is de eenvoudigste manier om uw formulier indienen bij Form Tools. Het vereist geen kennis van PHP en vereist slechts een zeer kleine verandering aan uw formulier. Het is geweldig voor kleinere formulieren waar de informatie in de database wordt opgeslagen en dan wordt de gebruiker omgeleid naar een \"dank u\" pagina."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Deze toevoeging methode is zeer eenvoudig te gebruiken, maar niet voorzien van veel controle voor meer ingewikkelde formulieren. Multi-pagina formulieren of formulieren die server-side validatie vereisen zijn beter geschikt voor de tweede methode: toevoegen via het Form Tools API."; +$LANG["text_add_form_field_types1"] = "Bijna klaar! Deze pagina probeert op al uw formuliervelden te vinden en hun veldtypen te bepalen. Klik op de Slim vullen knop aan de rechterkant om te beginnen. Je zal alleen worden toegestaan ​​om door te gaan wanneer alle acties zijn opgelost - zaken die uw aandacht nodig hebben in de "Action Needed " kolom."; +$LANG["text_add_form_field_types2"] = "Als uw formulier niet in HTML, klikt u op de Skip-Step om verder te gaan. Dit alles kan later worden geconfigureerd."; +$LANG["text_add_form_field_types3"] = "Dit herladen van de inhoud van uw formulier (en). Let op: dit zal overschrijven alle wijzigingen die u hebt gemaakt op deze pagina."; +$LANG["text_add_form_field_types4"] = "In het geval dat je in de problemen, klik hier om deze stap overslaan. Alle onopgeloste velden zijn ingesteld op de standaardwaarden te gebruiken. U kunt later aanpassen deze velden."; +$LANG["text_add_form_field_types_manual_upload"] = "Als u niet in staat geweest om Smart uw velden in te vullen, kunt u een alternatieve oplossing te proberen: uploaden kopieën van je vormen in de onderstaande velden in."; +$LANG["text_add_form_field_types_manual_upload2"] = "Let op: niet uploaden raw PHP-pagina's (of andere server-side code) - net upload de HTML-versies. Om dit te bekijken en sla de pagina van uw web browser."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Er waren meerdere velden die niet konden worden gevonden in de vorm pagina die u hebt opgegeven. Dit is vooral waarschijnlijk veroorzaakt door een van de volgende:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "U heeft een of meer van de vorm URL's van uw multi-pagina vorm verkeerd."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Een of meer pagina's van uw formulier zijn met een wachtwoord beveiligd en het script kan geen toegang krijgen tot de pagina."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "U ten onrechte het invoeren van uw formulier URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klik hier om terug te keren naar het formulier Informatie pagina toe aan uw instellingen te controleren."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Je veranderd uw formulier (en) na het maken van de test indienen"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klik hier om gebracht door middel van een test indienen."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Uw formulier is beveiligd met een wachtwoord en het script kan geen toegang krijgen tot de pagina."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "In een ander tabblad / venster van deze browser, dan is inloggen op uw formulier klikt u op Vernieuwen Pagina onderstaande knop om te proberen opnieuw te vinden van de velden."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Als geen van de bovenstaande oplossingen werkt, kunt u ook willen proberen handmatig te uploaden van uw formulieren voor de verwerking ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Er waren meerdere velden die niet konden worden gevonden in de vorm pagina's die u hebt opgegeven. Dit is vooral waarschijnlijk veroorzaakt door een van deze:"; +$LANG["text_add_form_help_link"] = "Als je in de problemen tijdens deze stappen, probeer dan het uitlezen van gebruikersdocumentatie ."; +$LANG["text_add_form_step_1_text_1"] = "De volgende pagina's leiden u stapsgewijs door de configuratie van Form Tools om zo uw ingezonden formulier te bewaren. Voordat u verdergaat, controleert u dat:"; +$LANG["text_add_form_step_1_text_2"] = "uw formulier is al gemaakt en deze is toegankelijk via een URL (localhost is prima)"; +$LANG["text_add_form_step_1_text_3"] = "zijn in staat om uw formulier te bewerken"; +$LANG["text_add_form_step_2_para_2"] = "Open uw formulier in een editor van uw keuze en verander uw form-tag als volgt, inclusief de 2 verborgen velden"; +$LANG["text_add_form_step_2_para_3"] = "Vervolgens opent u het formulier in een webbrowser. Vul in elk veld op en legt dit. Na het verzenden ziet u een melding. Zodra dit bericht wordt weergegeven, terug naar deze pagina en klik op de refresh knop hieronder. Wanneer dit proces is voltooid, ziet u een verder onderstaande knop, waarbij u naar de volgende stap."; +$LANG["text_add_form_step_2_para_6"] = "In uw formulier indienen, omvatten de volgende waarden. Zij kunnen rechtstreeks worden ingesteld via PHP of doorgegeven via het formulier zelf. Hieronder zijn voorbeelden van elk. De (\$ VARNAAM) is een hash (of associatieve array) van alle vormen indiening informatie - dit is meestal de (\$ postvar) of (\$ sessionvar) variabel, maar het kan op maat worden gebouwd."; +$LANG["text_add_form_step_2_text_2"] = "Geef de URL van uw "thankyou " pagina hier. Dit is waar je wilt dat mensen worden gericht aan nadat het formulier is ingediend."; +$LANG["text_add_form_step_3_para_1"] = "Deze pagina bevat alle velden in uw formulier indienen. Gelieve onderzoekt elk veld en verwijder die je niet nodig hebt opgeslagen voor elke inzending. Als u een geldig veld door ongeval, of de wens om de gegevens te wijzigen opgeslagen door uw formulier, terug naar de vorige pagina om een nieuwe test indiening sturen."; +$LANG["text_add_form_step_3_para_2"] = "Opmerking: Als u meerdere waarden bent verzenden via keuzes of een multi-select box, zorg ervoor dat uw veld de naam eindigt op de [] tekens (de gebruiker documentatie zie voor meer informatie)."; +$LANG["text_add_form_step_3_text_1"] = "Hier is waar de pret begint! Op dit moment is het Formulier Extra wachten voor een test het indienen van uw formulier. Het zal gebruik maken van dit formulier indienen om te weten welke informatie moet worden opgeslagen in de database."; +$LANG["text_add_form_step_3_text_2"] = "door te wijzen uw formulier bij formulier Tools"; +$LANG["text_add_form_step_3_text_3"] = "via het formulier Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Om u te helpen integreren uw formulier, raden we u leest een van de volgende tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "Zij leggen uit hoe u uw formulier in voorbereiding voor de test indiening, en ook andere informatie die kan helpen. De lijn van PHP u nodig heeft is:"; +$LANG["text_add_form_step_3_text_6"] = "Dit zorgt ervoor dat de gegevens daadwerkelijk naar Formulier Tools. Wanneer u hebben gebracht door middel van uw test indienen, klikt u op de knop hieronder."; +$LANG["text_add_form_step_3_text_7"] = "Op de pagina voorafgaand aan uw uiteindelijke "dank u" pagina, moet u de volgende parameter toe te voegen aan de \$ params variabele:"; +$LANG["text_add_form_step_5_para_1"] = "De databank is opgezet om voor deze vorm en de vorm is geactiveerd voor gebruik. Als u gemaakt de indiening door te wijzen op uw formulier process.php, kunt u terugkeren naar uw vorm en verwijder de volgende verborgen veld:"; +$LANG["text_add_form_step_5_para_2"] = "Bezoek dan je "dank u" pagina te legen de sessies. Zodra dit gebeurt, zullen alle nieuwe vorm inzendingen worden verwerkt en opgeslagen door Vorm Tools. Probeer het maken van een of twee indiening van de informatie te verifiëren is alles uploaden correct."; +$LANG["text_add_form_step_5_para_3"] = "Als u wilt afstemmen van uw formulier voor opties, zoals automatische e-mailen, het toevoegen van extra formuliervelden veld of het aanpassen van de vorm veldtypen, kunt u uw formulier bewerken op elk punt."; +$LANG["text_add_form_step_5_para_4"] = "Aangezien uw formulier bevat bestand uploaden velden, moet u voor het configureren van elk veld aan te geven het bestand uploaden map, welke bestanden zijn toegestaan en. Dit is te vinden op het tabblad Weergave van het bewerken formulier pagina."; +$LANG["text_add_form_step_5_para_5"] = "Als de indiening werd verzonden via de API, verander de ft_api_init_form_page lijn op de eerste pagina van uw formulier naar:"; +$LANG["text_add_submission_button"] = "De Add Submission knop wordt alleen weergegeven voor Bekeken op dat de hebben "mei toe te voegen inzendingen " optie ingesteld op "ja "."; +$LANG["text_admin_email_placeholder_info"] = "Dit is het e-mailadres van het formulier Tools beheerder, zoals omschreven in uw account instellingen. Dit betreft alleen de resultaten van de e-mail adres, dus als u wenst te gebruiken als een HTML-link, moet u om het te verpakken in een <a>-tag, als volgt:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Ook de standaard login pagina thema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "De eerste, kies uw formulier type."; +$LANG["text_client_form_page"] = "Deze pagina bevat alle formulieren en bekeken toegewezen aan deze cliënt. Tip: om voor hen inzendingen van een formulier te zien, moeten ze worden toegewezen aan ten minste een View."; +$LANG["text_client_map_filters_desc1"] = "Klant Kaart filters kunt u beperken de middelen die worden weergegeven in deze bekijken door in kaart brengen van de waarden in een formulier veld om de waarden in een client-account."; +$LANG["text_client_no_forms"] = "U hebt momenteel geen formulieren beschikbaar ter controle"; +$LANG["text_client_welcome"] = "Welkom! Dit programma slaat alle informatie afkomstig van bezoekers van uw website. Om inzendingen bekijken voor een bepaalde vorm klikt u op de VIEW link, of zie de meest linkse navigatie menu voor andere opties."; +$LANG["text_config_file_created"] = "Uw config.php bestand is aangemaakt."; +$LANG["text_config_file_not_created"] = "We konden niet maken je config.php bestand. U moet het bestand handmatig te maken."; +$LANG["text_config_file_not_created_instructions"] = "Kopieer en plak de inhoud van de hieronder in een bestand genaamd config.php en uploaden via FTP naar de Form Tools / global folder (de map die ook een paar andere bestanden en directories, een bestand genaamd library.php)."; +$LANG["text_confirm_delete_form"] = "Ja, ik wil dit formulier verwijderen"; +$LANG["text_create_admin_account"] = "Nu gaan we te maken met de beheerder. Dit wordt gebruikt voor het beheer van alle aspecten van het formulier Tools, zoals het toevoegen van formulieren en het creëren van klantaccounts."; +$LANG["text_create_new_client_account"] = "Gebruik het onderstaande formulier om een nieuwe klant account. Alle velden zijn verplicht."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "zie de PHP {\$datefunctionlink} functie voor het formatteren van opties"; +$LANG["text_default_file_settings_page"] = "Deze pagina wordt het bestand uploaden instellingen voor uw formulier Tools installatie. Deze regels gelden voor alle bestanden geupload via Vorm Tools, tenzij uitdrukkelijk overschreven voor een individuele vorm veld. Opmerking: als u de upload map na de bestanden zijn geüpload veranderen, worden ze automatisch verplaatst naar de nieuwe map."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Voordat u verdergaat, moet u uw / thema update / default / cache map om volledige lees en schrijf permissies. Zodra dit gedaan is, zal dit bericht verdwijnen en u kunt installeren het script."; +$LANG["text_default_values_in_view"] = "Deze sectie is optioneel. Alle inzendingen die met dit View bevat de hier genoemde standaardwaarden."; +$LANG["text_delete_all_forms"] = "Ik wil alle bestanden verwijderen die zijn geupload via dit formulier"; +$LANG["text_delete_form_warning"] = "Weet u zeker dat u dit formulier wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt. Alle gegevens zijn dan voorgoed verloren!"; +$LANG["text_edit_admin_menu_page"] = "U kunt de onderstaande menu. Om ervoor te zorgen u altijd toegang hebt tot alle functionaliteit beschikbaar binnen Vorm Tools, de volgende pagina's zijn vereist: Forms, Clients, Uw account, Modules, Instellingen en Afmelden."; +$LANG["text_edit_client_menu_page"] = "Dit gedeelte kun je aanpassen van de linker navigatie kolom voor elke gebruiker. U mag zoveel client-menu's als je wilt en toewijzen van alle account om een van hen. Standaard worden er twee menu's: een voor u, de beheerder, en een voor alle client accounts. De beheerder rekening kan worden gewijzigd, maar niet verwijderd."; +$LANG["text_edit_tab_summary"] = "Als u dit Bekijk de velden van de groep in tabbladen, net hieronder de tab namen. Nadat je klaar bent, kiest u het juiste tabblad voor elk veld groep in het tabblad Velden ."; +$LANG["text_edit_view_list_page"] = "Op dit tabblad bepaalt welke velden als kolommen op de Submission Lijst pagina, en een paar extra instellingen voor die velden. Let op: wij raden u toevoegt niet meer dan 4 of 5 van de meest belangrijke velden in de weergave."; +$LANG["text_email_settings_intro"] = "Op deze pagina kunt u bepalen welke van uw formulier velden winkel e-mails en de bijbehorende namen. Zodra u hier te definiëren, kunt u ze gebruiken in uw e-mail sjablonen als ontvangers. Deze sectie is volledig optioneel."; +$LANG["text_email_tab_summary"] = "Dit gedeelte kun je bouwen een aantal e-mails worden verzonden zodra uw formulier wordt ingediend, en andere triggers."; +$LANG["text_email_template_tab"] = "In dit gedeelte kunt u bepalen welke inhoud wordt weergegeven in de e-mail. Als u uw e-mail als alleen tekst of e-mail sturen, alleen een waarde voor dat gedeelte te betreden. Als u een waarde voor beide invoert, zal de e-mail worden verzonden in beide formaten."; +$LANG["text_email_template_text_1"] = "Er is een indiening via uw formulier, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Er is een indiening via uw formulier, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Bedankt voor uw inzending!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Foutmelding te laten zien als het veld niet aan de validatie"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Uiterlijke vormen zijn vormen die reeds bestaan ​​op uw website, of ergens op het web. Selecteer deze optie als u uw eigen formulier dat u wilt integreren met Form Tools."; +$LANG["text_fields_tab_summary"] = "Op deze pagina worden voor al uw formuliervelden. Om te bepalen hoe ze worden weergegeven tijdens het browsen inzendingen, zie de tab Views . Het verwijderen van een veld op deze pagina te verwijderen uit alle inzendingen, dus wees voorzichtig!"; +$LANG["text_file_extension_info"] = "Voer de toegestane bestandsformaten in, gescheiden door komma's (bv jpg,gif,png) of laat het veld leeg om alle bestandstyeps toe te staan."; +$LANG["text_file_field_placeholders_info"] = "Bestandvelden hebben 2 speciale tekstlabels: FILEURL en FILENAME. FILEURL is de volledige URL naar het bestand, u kunt hier direct naartoe linken in uw email; FILENAME is gewoon de bestandsnaam."; +$LANG["text_filters_page"] = "Alleen de inzendingen die voldoen aan de regels definieert u hieronder weergegeven in deze visie."; +$LANG["text_filters_tips"] = "Voor tips over hoe de indiening filters, raadpleegt u de gebruikersdocumentatie."; +$LANG["text_forgot_password"] = "Geen probleem. Geef hieronder uw gebruikersnaam en uw login gegevens worden verzonden naar uw e-mailadres in ons bestand. Als je je gebruikersnaam bent vergeten, stuur een email naar de beheerder van deze site op het {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Dit formulier bevat één of meer upload-velden:"; +$LANG["text_form_placeholder_info"] = "De volgende tijdelijke aanduidingen mogen worden gebruikt in elke e-mail template en taal placeholder gebied, ongeacht van welke Bekijk de e-mail template is toegewezen. De VRAAG plaatshouders zijn de specifieke vorm vraag; de ANTWOORD plaatsaanduidingen zijn de antwoorden op elke vraag."; +$LANG["text_form_submission_date_placeholder"] = "De datum waarop de inzending werd gemaakt."; +$LANG["text_form_tools_form_url"] = "De volledige URL van het formulier. Deze heeft alleen een waarde voor de uiterlijke vormen."; +$LANG["text_form_tools_login_url"] = "De loginpgina (URL) van Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Let op: dit formulier heeft momenteel Administrator toegang tot het type, dus geen van de klantaccounts in staat zal zijn om dit te bekijken."; +$LANG["text_form_view_permission_info_private"] = "Let op: dit formulier heeft momenteel prive-toegang tot het type, zodat de openbare en prive-opties zal hier worden beperkt tot die subset van de cliënten."; +$LANG["text_ft_installed"] = "Gefeliciteerd, heeft Vorm Tools succesvol geïnstalleerd!"; +$LANG["text_global_placeholder_info"] = "Deze tekstlabels kunnen in elk willekeurig formulier en sjabloon gebruikt worden."; +$LANG["text_group_name_explanation"] = "Voor velden toegevoegd door het toevoegen Vorm proces, deze waarde vooraf is gevuld tot de weergave van tekst veld gebruikt, ongeacht de waarde. U kunt om het te veranderen om beter karakteriseren de inhoud."; +$LANG["text_install_create_config_file"] = "Vorm Tools slaat uw server en database-instellingen in een bestand genaamd config.php, gevonden in uw / global / map. Klik op de "Create File" knop om automatisch het bestand op uw server."; +$LANG["text_install_create_database_tables"] = "Nu gaan we om het formulier Tools database tabellen. Deze stap moet de database zelf reeds zijn gemaakt. Als u niet zeker weet hoe u dit moet doen, neem dan contact op met uw provider."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host 'betekent meestal dat de hostnaam die u heeft opgegeven is onjuist. Misschien proberen deze instelling op "localhost" - dit is een veel voorkomende manier om te verwijzen naar de "lokale" database op een webserver."; +$LANG["text_install_db_tables_error_tip_2"] = ""Kan geen verbinding maken met de lokale MySQL server via socket" verstaan de database hostnaam veld is weer onjuist."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" betekent dat er een probleem is met uw gebruikersnaam / wachtwoord combinatie."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... naar de database ..." betekent dat, hoewel uw gebruikersnaam en wachtwoord dat u heeft opgegeven juist is, niet in staat was om verbinding te maken met die specifieke database met die account. Dit kan betekenen dat uw database naam onjuist is, of dat dit account niet is gekoppeld aan die database."; +$LANG["text_install_email_content_text"] = "Er zijn voldoende bronnen op onze website om u op weg te helpen, inclusief onze online documentatie (https://docs.formtools.org) en tutorials (https://docs.formtools.org/tutorials). Als je merkt dat je vastloopt of een vraag hebt, stel een vraag op github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Sorry, Vorm Tools niet te kunnen draaien op je server. U kunt hier klikken voor de minimale vereisten."; +$LANG["text_install_system_check"] = "Deze pagina draait een paar tests op uw systeem om ervoor te zorgen dat het in staat om Form Tools lopen."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Interne vormen bestaan ​​alleen in Form Tools - niet elders op uw site. Enige vorm Extra user accounts hebben toegang tot het formulier. Selecteer deze optie als u niet beschikt over een bestaand formulier."; +$LANG["text_internal_form_intro"] = "Gebruik het formulier hieronder in om een ​​nieuwe interne vorm te creëren. Alle instellingen, inclusief het aantal en de inhoud van de formuliervelden kunnen worden gewijzigd en later geconfigureerd."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Om in te kunnen loggen en gebruik te kunnen maken van Form Tools dient javascript in uw browser ingeschakeld te zijn. Schakel javascript AUB in en klik \"ververs of vernieuw\" in uw browser"; +$LANG["text_last_modified_date_explanation_c"] = "De laatste keer dat dit argument werd gewijzigd. Voor nieuwe inzendingen, dit is hetzelfde als:"; +$LANG["text_limit_email_content_desc"] = "Deze optie werkt alleen voor HTML en tekst-inhoud gegenereerd met Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(alleen lijsten bekeken met een gedefinieerde een of meer filters)"; +$LANG["text_log_in_to_ft"] = "Log in om Form Tools"; +$LANG["text_login"] = "Gelieve hieronder inloggen voor toegang tot de programmanaam) (\$ Administration Panel. Als u uw wachtwoord vergeten, klik hier."; +$LANG["text_login_info"] = "Op uw verzoek, hier is uw login-informatie."; +$LANG["text_name_of_form"] = "De naam van het formulier."; +$LANG["text_no_clients"] = "Er zijn momenteel geen clienten in het bestand. Om een nieuwe client aan te maken, klik hieronder op de \"Client toevoegen\" knop. "; +$LANG["text_no_clients_found"] = "Geen klanten gevonden. Probeer verbreding uw zoekcriteria."; +$LANG["text_no_fields_in_view"] = "Deze weergave heeft geen velden in. Klik op de link hieronder."; +$LANG["text_no_forms"] = "Er zijn momenteel geen formulieren in het bestand. Om een nieuw formulier aan te maken, klik hieronder op de \"Formulier toevoegen\" knop. "; +$LANG["text_no_forms_found"] = "Geen formulieren gevonden."; +$LANG["text_no_forms_found_search"] = "Geen formulieren gevonden. Probeer het verbreden van je zoekcriteria."; +$LANG["text_no_modules_found"] = "Geen modules gevonden. Probeer verbreding uw zoekcriteria."; +$LANG["text_no_recipients_added"] = "Geen ontvangers zijn toegevoegd."; +$LANG["text_no_search_results"] = "Er zijn geen resultaten met deze zoekcriteria / View."; +$LANG["text_no_submissions_found"] = "Sorry, er zijn geen inzendingen gevonden."; +$LANG["text_no_themes"] = "Je hebt geen gedefinieerd geen thema's. Klik op de onderstaande knop om uw thema lijst te vernieuwen, of kijk op de Form Extra gebruikersdocumentatie voor informatie over het toevoegen van thema's."; +$LANG["text_non_deletable_fields"] = "Dit veld wordt gebruikt door de Core script en kunnen niet worden bewerkt of verwijderd zonder dat onverenigbaarheden. Wilt u wijzigingen in het veldtype te maken, maakt u een kopie van en bewerken van de kopie."; +$LANG["text_option_list_group_explanation"] = "Als dit is geselecteerd, laat het aan de groep van uw opties. Hoe de groepen worden weergegeven is afhankelijk van het type veld met behulp van deze optie lijst."; +$LANG["text_option_list_page"] = "Keuzerondjes, selectievakjes, dropdowns en multi-select dropdown velden al bieden de gebruiker met meerdere opties, waaruit ze kunnen kiezen een of meer items. In formulier Tools, worden deze bekend staat als optie Lijsten. Over het algemeen worden deze automatisch aangemaakt door de Add uiterlijke vorm proces, maar u kunt handmatig toevoegen of onder bewerken optielijsten als uw formulier wijzigingen in de inhoud of construeer je velden die alleen intern worden gebruikt."; +$LANG["text_option_list_used_by_fields"] = "In deze keuzelijst wordt gebruikt door meerdere formuliervelden. Als u hieronder bijwerken van de gegevens, zal het worden gewijzigd voor alle van de velden (zie de Formuliervelden tabblad om de lijst met velden te zien). Wilt u de waarden voor een, of een subset van de velden die momenteel zijn toegewezen update, klik hier om een nieuwe optie Lijst met dezelfde waarden als deze een te maken. Dan kunt u toewijzen formulier velden die u wilt de nieuwe groep."; +$LANG["text_public_form_omit_list_page"] = "Openbare formulieren geven u het voordeel van verhuur alle klantaccounts hen toegang zonder handmatig elke cliënt toevertrouwen. Op deze pagina kunt u aangeven op klanten die geen toegang kunnen dit formulier, ook al is de vorm is gemarkeerd als publiek."; +$LANG["text_public_view_omit_list_page"] = "Openbare weergaven kunt u het voordeel van alle client accounts laten hen toegang zonder handmatig elke cliënt toevertrouwen. Op deze pagina kunt u aangeven op klanten die mogelijk geen toegang tot deze bijzondere uitzicht."; +$LANG["text_reference_tab_info"] = "Op deze pagina een overzicht van alle plaatsaanduidingen beschikbaar zijn voor uw formulier. Tijdelijke aanduidingen zijn strings die gebruikt kunnen worden in de e-mail templates, en velden gemarkeerd met een speciale tijdelijke aanduiding icoon . Wanneer ingevoerd in een veld, worden ze dynamisch omgezet naar de juiste waarde wanneer het veld wordt bekeken of de e-mail wordt verzonden."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Raadpleeg de gebruikersdocumentatie"; +$LANG["text_send_email_from_edit_submission_page"] = "Inclusief optie voor het verzenden van deze e-mail Bewerken Submission pagina"; +$LANG["text_smart_fill_option_list_problem"] = "We waren niet in staat om slimme uw vakgebied opties Fill. Echter, als een alternatief, kunt u proberen uploaden van een kopie van uw formulier pagina in het onderstaande veld. Let op: niet uploaden raw PHP-pagina's (of andere server-side code) - net upload de HTML-versie. Om dit te bekijken en sla de pagina van uw web browser."; +$LANG["text_submission_ip_address"] = "Het IP-adres van de gebruiker die de indiening."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Gebruik het formulier hieronder om ofwel bekijken of stuur zelf een e-mail gegenereerd uit deze e-mail sjabloon. De e-mail wordt alleen verzonden naar de e-mail hieronder gespecificeerd, de belangrijkste, CC en BCC e-mailadres van de ontvangers worden genegeerd tijdens het testen."; +$LANG["text_test_email_templates_no_submissions"] = "Om uw emailsjablonen te kunnen testen dient u minimaal een formulier inzending te doen."; +$LANG["text_theme_page_intro"] = "Deze pagina bevat al je thema's. Klik op een thumbnail om een groter voorbeeld van stijlen van de thema's. De "ingeschakeld" checkbox bepaalt of dat thema kan worden geselecteerd door de klanten. Als u wilt bladeren alle beschikbare thema's, bezoek de website van Vorm Tools."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Het toevoegen van uw eerste formulier!"; +$LANG["text_unique_submission_id"] = "Het unieke inzend-ID"; +$LANG["text_unused_option_list"] = "Deze optie lijst is niet gebruikt wordt door enige vorm velden."; +$LANG["text_upgraded"] = "Uw installatie is opgewaardeerd naar {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "In deze keuzelijst wordt gebruikt door de volgende velden."; +$LANG["text_view_fields_info"] = "Op dit tabblad bepaalt welke velden verschijnen bij het bewerken van een inzending in deze weergave, hun bestelling en of ze kunnen worden bewerkt of niet."; +$LANG["text_view_tab_summary"] = "Op dit tabblad kunt u op verschillende manieren maken aan de groep en regelen van uw gegevens. Bekeken kunt u aangepaste subsets van uw formulier gegevens op te splitsen in hanteerbare brokken, en te beperken wat de cliënt kan zien of bewerken."; +$LANG["validation_account_disabled"] = "Sorry, uw account is inactief gemaakt."; +$LANG["validation_account_not_recognized"] = "Sorry, die gebruikersnaam is niet bekend."; +$LANG["validation_account_not_recognized_info"] = "Sorry, die gebruikersnaam is niet gevonden. Probeer het AUB nog een keer, of neem contact op met de sitebeheerder via onderstaan emailadres."; +$LANG["validation_account_pending"] = "Uw gebruikersaccount is in afwachting van goedkeuring door een beheerder."; +$LANG["validation_check_delete_client"] = "Weet u zeker dat u die clientaccount wilt verwijderen."; +$LANG["validation_client_password_missing_number"] = "De klant wachtwoord moet ten minste een cijfer (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "De klant wachtwoord moet ten minste een van de volgende tekens: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "De klant wachtwoord moet ten minste een hoofdletter."; +$LANG["validation_client_password_too_short"] = "De klant wachtwoord moet tenminste {\$number} tekens lang zijn."; +$LANG["validation_col_name_is_reserved_word"] = "Sorry, deze database kolom naam is een gereserveerde werk in MySQL. Gelieve hernoemen it!"; +$LANG["validation_db_name"] = "Databasenamen mogen geen punten of schuine strepen bevatten."; +$LANG["validation_db_not_updated_invalid_input"] = "De database kon niet worden bijgewerkt. Controleer AUB de of de ingevoerde waarden correct zijn."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Sorry, moet de standaard beheerder en opdrachtgever thema's altijd worden ingeschakeld."; +$LANG["validation_default_phone_num_required"] = "Vul het volledige telefoonnummer van de <b> { \$ field} </ b> veld - alleen cijfers."; +$LANG["validation_default_rule_alpha"] = "Voer alleen letters en cijfers voor de <b> { \$ field} </ b> veld."; +$LANG["validation_default_rule_letters_only"] = "Voer alleen letters voor de <b> { \$ field} </ b> veld."; +$LANG["validation_default_rule_numbers_only"] = "Gelieve enkel cijfers in te voeren voor de <b> { \$ field} </ b> veld."; +$LANG["validation_default_rule_required"] = "Geef een waarde voor de <b> { \$ field} </ b> veld."; +$LANG["validation_default_rule_valid_email"] = "Vul een geldig e-mailadres voor de <b> { \$ field} </ b> veld."; +$LANG["validation_delete_form_confirm"] = "Controleer de doos om te bevestigen dat u dit formulier te verwijderen."; +$LANG["validation_delete_non_empty_option_list"] = "Waarschuwing! In deze keuzelijst wordt gebruikt door een of meer formuliervelden. Het verwijderen van het zal deze velden niet meer goed te laten werken."; +$LANG["validation_display_names_incomplete"] = "Voer een waarde voor alle de Display Namen, of klik op de Smart Vul optie om ze te voeren dynamisch."; +$LANG["validation_duplicate_form_field_name"] = "U kunt niet meerdere velden met dezelfde veldnaam."; +$LANG["validation_email_not_found_or_invalid"] = "Sorry, het e-mailadres bij uw account ofwel bestaat niet of is ongeldig."; +$LANG["validation_folder_invalid_permissions"] = "Om deze test uit te kunnen voeren dienen de rechten op de uploadmap ingesteld te zijn voor lezen en schrijven (in unix 777)."; +$LANG["validation_folder_not_writable"] = "In deze map zijn geen schrijfrechten."; +$LANG["validation_internal_form_too_many_fields"] = "Sorry, kunt u alleen gemaakt formulieren met 1000 velden of minder."; +$LANG["validation_invalid_admin_email"] = "Geef een geldig e-mailadres adminstrator's."; +$LANG["validation_invalid_admin_username"] = "Uw gebruikersnaam mag alleen bestaan ​​uit alfanumerieke tekens (AZ en 0-9)."; +$LANG["validation_invalid_client_username"] = "Gebruiker van de klant naam mag alleen bestaan uit alfanumerieke tekens (AZ en 0-9)."; +$LANG["validation_invalid_client_username2"] = "Sorry, gebruikersnaam mag alleen letters, cijfers en het onderstrepingsteken. Geef een nieuwe gebruikersnaam."; +$LANG["validation_invalid_column_name"] = "Kolomnamen mag alleen worden alfanumeriek (AZ, 0-9). Controleer de kolomnamen."; +$LANG["validation_invalid_custom_from_email"] = "Voer een geldige aangepaste 'Van' e-mailadres."; +$LANG["validation_invalid_custom_reply_to_email"] = "Voer een geldige maat 'Reply-to' e-mailadres."; +$LANG["validation_invalid_default_sessions_timeout"] = "Voer een geldige waarde (een aantal) voor de standaard time-out."; +$LANG["validation_invalid_email"] = "Voer AUB een geldig emailadres in."; +$LANG["validation_invalid_email_id"] = "Sorry, dat is een ongeldig e-ID."; +$LANG["validation_invalid_folder"] = "Sorry, dit niet lijkt te zijn van een geldige map."; +$LANG["validation_invalid_form_field_names"] = "Formulier velden mogen alleen alfanumerieke worden en onderstrepingstekens (AZ, 0-9, _), zonder spaties."; +$LANG["validation_invalid_num_clients_per_page"] = "Voer AUB alleen numerieke waarden in in het aantal-clients-per-pagina-veld."; +$LANG["validation_invalid_num_emails_per_page"] = "Gelieve alleen cijfers opgeven voor de e-mails per pagina."; +$LANG["validation_invalid_num_form_fields"] = "Gelieve alleen nummers invoeren in het aantal velden veld."; +$LANG["validation_invalid_num_forms_per_page"] = "Voer AUB alleen numeriek waarden in in het aantal-formulieren-per-pagina-veld."; +$LANG["validation_invalid_num_menus_per_page"] = "Gelieve alleen cijfers in voor de menu's per pagina."; +$LANG["validation_invalid_num_modules_per_page"] = "Gelieve alleen nummers invoeren in de Num modules per pagina veld."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Gelieve alleen nummers invoeren in het Num optie Lijsten per pagina veld."; +$LANG["validation_invalid_num_submissions_per_page"] = "Voer AUB een geldig aantal inzendingen per pagina in."; +$LANG["validation_invalid_sessions_timeout"] = "Voer een geldige sessie time-out (integers only!)."; +$LANG["validation_invalid_tab_assign_values"] = "Gelieve alleen getallen in te voeren in de 'uit' en 'naar' velden."; +$LANG["validation_invalid_table_prefix"] = "Vul een database prefix bestaat uit van de brief en het onderstrepingsteken alleen."; +$LANG["validation_invalid_upload_folder"] = "Installatie van uw server van PHP heeft een ongeldige instelling voor de upload_tmp_dir waarde. "{\$upload_folder}" is geen geldige map."; +$LANG["validation_invalid_url"] = "Voer een geldige URL."; +$LANG["validation_invalid_username"] = "Uw gebruikersnaam mag alleen bestaan uit alfanumerieke tekens (AZ en 0-9)."; +$LANG["validation_is_form_active"] = "Geef AUB aan of het formulier actief is of niet."; +$LANG["validation_menu_name_taken"] = "Sorry, dit menu naam reeds genomen. Kies een nieuwe naam."; +$LANG["validation_modules_search_no_status"] = "Selecteer ofwel de Ingeschakeld of Uitgeschakeld selectievakjes."; +$LANG["validation_no_access_type"] = "Vul de toegang type."; +$LANG["validation_no_account_logout_url"] = "Geef uw uitloggen URL."; +$LANG["validation_no_account_password_confirmed"] = "Vul nogmaals uw nieuwe wachtwoord."; +$LANG["validation_no_account_password_confirmed2"] = "Voer nogmaals het nieuwe wachtwoord."; +$LANG["validation_no_admin_email"] = "Vul e-mailadres van de beheerder."; +$LANG["validation_no_admin_theme"] = "Selecteer het thema voor de administrator account."; +$LANG["validation_no_admin_theme_swatch"] = "Selecteer een staal voor de beheerder thema."; +$LANG["validation_no_client_email"] = "Vul e-mailadres van de klant."; +$LANG["validation_no_client_first_name"] = "Geef de voornaam van de klant."; +$LANG["validation_no_client_last_name"] = "Vul de achternaam van de cliënt."; +$LANG["validation_no_client_login_page"] = "Gelieve aan te geven welke pagina van de cliënt moet worden doorgestuurd naar wanneer ze inloggen inch"; +$LANG["validation_no_client_password"] = "Voer het wachtwoord van de klant."; +$LANG["validation_no_client_theme_swatch"] = "Selecteer een standaard staal voor de client accounts."; +$LANG["validation_no_client_username"] = "Voer de gebruikersnaam van de klant."; +$LANG["validation_no_column_name"] = "Vul alle kolomnamen, of de Smart Fill klikken om automatisch in te vullen zijn."; +$LANG["validation_no_column_selected"] = "Selecteer minimaal een veld wordt weergegeven als een kolom voor de indiening aanbieding pagina."; +$LANG["validation_no_custom_from_email"] = "Vul de aangepaste 'Van' e-mailadres."; +$LANG["validation_no_custom_recipient_email"] = "Vul het aangepaste ontvanger e-mailadres."; +$LANG["validation_no_custom_reply_to_email"] = "Vul de aangepaste 'Reply-to' e-mailadres."; +$LANG["validation_no_date_format"] = "Voer AUB een datumformaat in"; +$LANG["validation_no_db_column_single"] = "Vul de Database Column naam."; +$LANG["validation_no_db_hostname"] = "Vul de database hostnaam."; +$LANG["validation_no_db_name"] = "Vul de naam van de databank."; +$LANG["validation_no_db_username"] = "Vul de database account."; +$LANG["validation_no_default_client_theme"] = "Selecteer het standaard thema voor alle nieuwe klantaccounts."; +$LANG["validation_no_default_language"] = "Selecteer AUB de gewenste taal voor uw Form Tools installatie."; +$LANG["validation_no_default_sessions_timeout"] = "Vul de standaard sessie time-out voor gebruikersaccounts."; +$LANG["validation_no_display_text"] = "Vul het scherm tekst voor elk veld."; +$LANG["validation_no_display_text_single"] = "Vul het scherm Tekst waarde."; +$LANG["validation_no_edit_submission_page_label"] = "Vul de Edit Submission pagina label."; +$LANG["validation_no_email"] = "Voer AUB uw emailadres in."; +$LANG["validation_no_email_config_field"] = "Geef aan welke vorm veld is het e-veld."; +$LANG["validation_no_email_content"] = "Geef het e-inhoud voor ten minste een van de formaten (HTML of tekst)."; +$LANG["validation_no_email_from_field"] = "Gelieve de e-mail 'van' veld."; +$LANG["validation_no_email_template_name"] = "Geef het e-sjabloon naam."; +$LANG["validation_no_email_template_view_id"] = "Selecteer het oog waarop deze e-mail sjabloon moet in kaart worden gebracht."; +$LANG["validation_no_email_template_view_mapping_value"] = "Gelieve aan te geven wanneer de e-mail moet worden verzonden."; +$LANG["validation_no_enabled_themes"] = "Zorg ervoor dat ten minste een thema is ingeschakeld."; +$LANG["validation_no_first_name"] = "Voer AUB uw voornaam in."; +$LANG["validation_no_form_field_name"] = "Gelieve alle vormen veldnamen."; +$LANG["validation_no_form_field_single"] = "Vul het formulier Field waarde."; +$LANG["validation_no_form_id"] = "Het formulier-ID is niet ingevuld. Log AUB uit en probeer het nog een keer."; +$LANG["validation_no_form_name"] = "Voer AUB de formuliernaam in."; +$LANG["validation_no_form_url"] = "Voer AUB de formulier-URL in."; +$LANG["validation_no_last_name"] = "Voer AUB uw achternaam in."; +$LANG["validation_no_login_page"] = "Gelieve aan te geven welke pagina u wilt worden verzonden iedere keer dat u zich aanmeldt inch"; +$LANG["validation_no_logout_url"] = "Voer AUB de afmeld-URL in."; +$LANG["validation_no_main_email_recipient"] = "Vul ten minste een belangrijke e-mail ontvanger (dwz niet een cc of bcc)."; +$LANG["validation_no_menu"] = "Selecteer een menu voor deze gebruikersaccount."; +$LANG["validation_no_menu_id"] = "Selecteer een menu."; +$LANG["validation_no_num_clients_per_page"] = "Voer het aantal clientaccounts per pagina in AUB."; +$LANG["validation_no_num_emails_per_page"] = "Vul het aantal e-mails naar de lijst per pagina."; +$LANG["validation_no_num_form_fields"] = "Vul het aantal velden voor uw formulier."; +$LANG["validation_no_num_forms_per_page"] = "Voer AUB het aantal formulieren per pagina in."; +$LANG["validation_no_num_menus_per_page"] = "Vul het aantal menu's naar de lijst per pagina."; +$LANG["validation_no_num_modules_per_page"] = "Vul het aantal modules per pagina."; +$LANG["validation_no_num_option_lists_per_page"] = "Vul het aantal optie-lijsten per pagina."; +$LANG["validation_no_num_submissions_per_page"] = "Voer AUB het aantal inzendingen dat per pagina getoond moet worden in."; +$LANG["validation_no_option_list_name"] = "Vul de optielijst naam."; +$LANG["validation_no_page_titles"] = "Vul de standaard pagina titels voor de gebruiker accounts."; +$LANG["validation_no_password"] = "Voer AUB uw wachtwoord in."; +$LANG["validation_no_program_name"] = "Voer de programmanaamin AUB."; +$LANG["validation_no_second_password"] = "Voer nogmaals uw wachtwoord in."; +$LANG["validation_no_sessions_timeout"] = "Vul de sessie time-out."; +$LANG["validation_no_smart_fill_values"] = "Vul het formulier veld naam en de URL van het formulier."; +$LANG["validation_no_table_prefix"] = "Vul een database prefix."; +$LANG["validation_no_tabs_defined"] = "Geen gedefinieerd tabbladen"; +$LANG["validation_no_test_email_recipient"] = "Vul het e-mailadres van waar we moeten sturen de test e-mail."; +$LANG["validation_no_test_email_submission_id"] = "Vul de indiening ID-nummer."; +$LANG["validation_no_theme"] = "Selecteer een thema."; +$LANG["validation_no_theme_swatch"] = "Selecteer een staal voor het gekozen thema."; +$LANG["validation_no_timezone_offset"] = "Vul de offset tijdzone."; +$LANG["validation_no_titles"] = "Voer AUB de paginatitels in."; +$LANG["validation_no_two_column_names"] = "Sorry, u kunt niet twee keer dezelfde database kolomnaam gebruiken."; +$LANG["validation_no_ui_language"] = "Selecteer een taal voor de interface."; +$LANG["validation_no_url"] = "Geef een URL."; +$LANG["validation_no_username"] = "Voer AUB uw gebruikersnaam in."; +$LANG["validation_no_username_or_js"] = "U dient een gebruikersnaam in te voeren. Activeer AUB javascript in uw browser."; +$LANG["validation_no_view_fields"] = "Uw Bekijk bevat geen velden! U moet ten minste een veld toewijzen voor er sprake zijn van iets te worden weergegeven in uw uitzicht."; +$LANG["validation_no_view_fields_selected"] = "Selecteer een of meer velden toe te voegen aan de weergave."; +$LANG["validation_no_view_name"] = "Vul de naam van uw uitzicht."; +$LANG["validation_num_rows_to_add"] = "Voer AUB het aantal toe te voegen rijen in."; +$LANG["validation_option_list_name_taken"] = "Sorry, wordt deze optie lijst naam al genomen. Kies een nieuwe naam."; +$LANG["validation_password_in_password_history"] = "Voor de veiligheid kun je niet hetzelfde wachtwoord als een van de laatste {\$history_size} wachtwoorden. Vul een ander wachtwoord."; +$LANG["validation_passwords_different"] = "Beide wachtwoorden dienen gelijk te zijn."; +$LANG["validation_please_enter_search_date_range"] = "Vul AUB de zoek datumbereik in."; +$LANG["validation_please_enter_search_keyword"] = "Vul AUB het zoek trefwoord in."; +$LANG["validation_select_field_type"] = "Selecteer een veldtype."; +$LANG["validation_select_submissions_to_copy"] = "Selecteer de inzendingen die u wilt kopiëren."; +$LANG["validation_select_submissions_to_delete"] = "Selecteer AUB de inzendingen die u wenst te verwijderen."; +$LANG["validation_smart_fill_cannot_fill"] = "Sorry, we kunnen niet vullen dit gebied."; +$LANG["validation_smart_fill_invalid_field_type"] = "We waren niet in staat om een veld te vinden, maar het is niet een dropdown, checkbox of radio-groep."; +$LANG["validation_smart_fill_no_field_found"] = "Sorry, we kunnen niet vinden een formulier veld met die naam op de aangegeven pagina."; +$LANG["validation_smart_fill_no_page"] = "Gelieve de pagina op met het veld dat u wilt Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Upload alle pagina's in uw formulier."; +$LANG["validation_upload_folder_not_writable"] = "De tijdelijke upload-map ingesteld in uw PHP instellingen is niet beschrijfbaar. Totdat dit probleem opgelost is kunnen geen bestanden worden geupload door middel van Form Tools (of willekeurig ander PHP programma. (neem AUB contact op met uw hosting-provider)."; +$LANG["validation_upload_html_files_only"] = "Upload alleen HTML-bestanden."; +$LANG["validation_username_taken"] = "Sorry die gebruikersnaam bestaat al. Kies AUB een andere gebruikersnaam."; +$LANG["validation_wrong_password"] = "Sorry, dat wachtwoord klopt niet."; +$LANG["word_about"] = "Over"; +$LANG["word_access"] = "Toegang"; +$LANG["word_account"] = "Account"; +$LANG["word_account_sp"] = "Account(s)"; +$LANG["word_accounts"] = "Accounts"; +$LANG["word_action"] = "Actie"; +$LANG["word_active"] = "Actief"; +$LANG["word_add"] = "Toevoegen"; +$LANG["word_add_rightarrow"] = "Toe te voegen »"; +$LANG["word_add_uc_rightarrow"] = "TOEVOEGEN »"; +$LANG["word_administration"] = "Administratie"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Na"; +$LANG["word_aquamarine"] = "Aquamarijn"; +$LANG["word_asc"] = "Oplopend"; +$LANG["word_author"] = "Auteur"; +$LANG["word_author_c"] = "Auteur:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« terug"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Voor"; +$LANG["word_benefits"] = "Voordelen"; +$LANG["word_blue"] = "Blauw"; +$LANG["word_cancel"] = "Annuleren"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Selectievakjes"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Gebruiker"; +$LANG["word_client_c"] = "Gebruiker:"; +$LANG["word_clients"] = "Gebruikers"; +$LANG["word_close"] = "SLUITEN"; +$LANG["word_code"] = "Code"; +$LANG["word_column"] = "Kolom"; +$LANG["word_columns"] = "Columns"; +$LANG["word_columns_sp"] = "Kolom (men)"; +$LANG["word_complete"] = "COMPLEET"; +$LANG["word_configuration"] = "Configuratie"; +$LANG["word_content"] = "Inhoud"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Volgende »"; +$LANG["word_copy"] = "Kopiëren"; +$LANG["word_custom"] = "Eigen"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Datum"; +$LANG["word_debugging_c"] = "Debuggen:"; +$LANG["word_delete"] = "VERWIJDEREN"; +$LANG["word_desc"] = "Aflopend"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "Geblokkeerd"; +$LANG["word_documentation"] = "Documentatie"; +$LANG["word_done"] = "Gedaan"; +$LANG["word_drawbacks"] = "Nadelen"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "BEWERKEN"; +$LANG["word_editable"] = "Aanpasbaar"; +$LANG["word_email"] = "E-MAIL"; +$LANG["word_email_c"] = "E-mail:"; +$LANG["word_emails"] = "E-mails"; +$LANG["word_enabled"] = "Ingeschakeld"; +$LANG["word_equals"] = "is gelijk aan"; +$LANG["word_error"] = "Fout"; +$LANG["word_error_c"] = "Fout:"; +$LANG["word_examples_c"] = "Voorbeelden:"; +$LANG["word_external"] = "Extern"; +$LANG["word_fail"] = "Falen"; +$LANG["word_field"] = "Veld"; +$LANG["word_field_sp"] = "Veld(en)"; +$LANG["word_fields"] = "Velden"; +$LANG["word_fields_sp"] = "Veld (en)"; +$LANG["word_file"] = "Bestand"; +$LANG["word_file_b_uc"] = "[BESTAND]"; +$LANG["word_files"] = "Bestanden"; +$LANG["word_filters"] = "Filters"; +$LANG["word_filters_sp"] = "Filter (s)"; +$LANG["word_for"] = "voor"; +$LANG["word_form"] = "Formulier"; +$LANG["word_form_c"] = "Formulier:"; +$LANG["word_formatting"] = "Opmaak"; +$LANG["word_forms"] = "Formulieren"; +$LANG["word_found"] = "Gevonden"; +$LANG["word_from"] = "Van"; +$LANG["word_from_c"] = "Van:"; +$LANG["word_general"] = "Algemeen"; +$LANG["word_green"] = "Groen"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Hoogte"; +$LANG["word_help"] = "Help"; +$LANG["word_hidden"] = "Verborgen"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Horizontaal"; +$LANG["word_hour"] = "Uur"; +$LANG["word_hours"] = "Uren"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Afbeelding"; +$LANG["word_incomplete"] = "Incompleet"; +$LANG["word_install"] = "Installeren"; +$LANG["word_installation"] = "Installatie"; +$LANG["word_internal"] = "Intern"; +$LANG["word_language"] = "Taal"; +$LANG["word_large"] = "Groot"; +$LANG["word_like"] = "Als"; +$LANG["word_login"] = "LOGIN"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Uitloggen"; +$LANG["word_main"] = "Hoofd"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "minuten"; +$LANG["word_misc"] = "Divers"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "NVT"; +$LANG["word_name"] = "Naam"; +$LANG["word_name_c"] = "Naam:"; +$LANG["word_never"] = "Nooit"; +$LANG["word_next_rightarrow"] = "volgende »"; +$LANG["word_next_step_rightarrow"] = "VOLGENDE STAP »"; +$LANG["word_no"] = "Nee"; +$LANG["word_none"] = "Geen"; +$LANG["word_notes"] = "Notities"; +$LANG["word_notification"] = "Verwittiging"; +$LANG["word_number"] = "Nummer"; +$LANG["word_off"] = "Uit"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "Op"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Bewerking"; +$LANG["word_options"] = "Opties"; +$LANG["word_orange"] = "Oranje"; +$LANG["word_order"] = "Volgorde"; +$LANG["word_other"] = "Andere"; +$LANG["word_other_c"] = "Andere:"; +$LANG["word_page"] = "Pagina"; +$LANG["word_page_c"] = "Pagina:"; +$LANG["word_pass"] = "Slagen"; +$LANG["word_password"] = "Wachtwoord"; +$LANG["word_password_c"] = "Wachtwoord:"; +$LANG["word_pending"] = "In behandeling"; +$LANG["word_permissions"] = "Rechten"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« vorige"; +$LANG["word_private"] = "Privaat"; +$LANG["word_public"] = "Publiek"; +$LANG["word_purple"] = "Purper"; +$LANG["word_recipient"] = "Ontvanger"; +$LANG["word_recipient_sp"] = "Ontvanger(s)"; +$LANG["word_red"] = "Rood"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Verwijderen"; +$LANG["word_remove_uc_leftarrow"] = "« VERWIJDEREN"; +$LANG["word_reply_to"] = "Beantwoorden aan"; +$LANG["word_reply_to_c"] = "Beantwoorden aan:"; +$LANG["word_required"] = "Nodig"; +$LANG["word_reset"] = "Opnieuw"; +$LANG["word_resolved"] = "Opgelost"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rij"; +$LANG["word_search"] = "Zoeken"; +$LANG["word_searchable"] = "Doorzoekbaar"; +$LANG["word_select"] = "Selecteer"; +$LANG["word_setting"] = "Instelling"; +$LANG["word_settings"] = "INSTELLINGEN"; +$LANG["word_show"] = "Tonen"; +$LANG["word_size"] = "Maat"; +$LANG["word_skipped"] = "Overgeslaan"; +$LANG["word_small"] = "Klein"; +$LANG["word_solution"] = "Oplossing"; +$LANG["word_sortable"] = "Sorteerbaar"; +$LANG["word_start"] = "Beginnen"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Reeks"; +$LANG["word_subject"] = "Onderwerp"; +$LANG["word_subject_c"] = "Onderwerp"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Inzending"; +$LANG["word_submissions"] = "Inzendingen"; +$LANG["word_system"] = "Systeem"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Tekst"; +$LANG["word_textarea"] = "Tekstvak"; +$LANG["word_textbox"] = "Tekstveld"; +$LANG["word_theme"] = "Theme"; +$LANG["word_themes"] = "Themes"; +$LANG["word_time"] = "Tijd"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Vandaag"; +$LANG["word_truncate_q"] = "Afkappen?"; +$LANG["word_uninstall"] = "Uninstalleren"; +$LANG["word_unknown"] = "Onbekende"; +$LANG["word_update"] = "BIJWERKEN"; +$LANG["word_upgrade"] = "Upgraden"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Gebruiker"; +$LANG["word_username"] = "Gebruikersnaam"; +$LANG["word_username_c"] = "Gebruikersnaam:"; +$LANG["word_validation"] = "Validatie"; +$LANG["word_value"] = "Waarde"; +$LANG["word_value_sp"] = "Waarde(s)"; +$LANG["word_verified"] = "Geverifiëerd"; +$LANG["word_verify"] = "Controleren"; +$LANG["word_version"] = "Versie"; +$LANG["word_vertical"] = "Vertikaal"; +$LANG["word_view"] = "Bekijk"; +$LANG["word_views"] = "View"; +$LANG["word_warning"] = "Waarschuwing!"; +$LANG["word_warning_c"] = "Waarschuwing:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Welkom!"; +$LANG["word_width_c"] = "breedte:"; +$LANG["word_words"] = "Woorden"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Geel"; +$LANG["word_yes"] = "Ja"; \ No newline at end of file diff --git a/global/lang/no.php b/global/lang/no.php new file mode 100644 index 00000000..254f1499 --- /dev/null +++ b/global/lang/no.php @@ -0,0 +1,1219 @@ +Advarsel: Du har valgt {\$num_selected_on_page} innleveringer på denne siden og {\$num_selected_on_other_pages} på andre sider. Velg ett av følgende alternativer:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Advarsel! Du har ikke valgt noen innleveringer på denne siden, men du har valgt {\$num_selected_on_other_pages} på andre sider. Bekreft at du vil slette disse innleveringer.
    "; +$LANG["confirm_delete_view"] = "Er du sikker på at du vil slette denne View?"; +$LANG["confirm_refresh_page"] = "Er du sikker på at du vil oppdatere siden? Dette vil miste alle endringer du har gjort."; +$LANG["confirm_save_change_before_redirect"] = "Ett eller flere felt har blitt oppdatert. Vil du lagre endringene før omdirigere?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Er du sikker på at du vil Smart Fyll databasen kolonnenavn? Dette vil overskrive eksisterende verdier."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Dette alternativet auto-genererer databasen kolonnenavnene basert på Display Tekstfelt, slik at innholdet av databasen tabellen er lettere å lese."; +$LANG["confirm_smart_fill_display_names"] = "Er du sikker på at du vil auto-utfylle alle visnings navnene? Dette vil overskrive dine eksisterende verdier."; +$LANG["confirm_ungroup_option_list"] = "Er du sikker på at du vil dele opp dette alternativet listen? Alle alternativene vil være lumped i en enkelt, ugrupperte liste."; +$LANG["confirm_uninstall_module"] = "Er du sikker på at du vil avinstallere denne modulen? Alle modul vil gå tapt."; +$LANG["date_AM"] = "am"; +$LANG["date_Fri"] = "Fre"; +$LANG["date_Friday"] = "Fredag"; +$LANG["date_Mon"] = "Man"; +$LANG["date_Monday"] = "Mandag"; +$LANG["date_PM"] = "pm"; +$LANG["date_Sat"] = "Lør"; +$LANG["date_Saturday"] = "Lørdag"; +$LANG["date_Sun"] = "Søn"; +$LANG["date_Sunday"] = "Søndag"; +$LANG["date_Thu"] = "Tor"; +$LANG["date_Thursday"] = "Torsdag"; +$LANG["date_Tue"] = "Tir"; +$LANG["date_Tuesday"] = "Tirsdag"; +$LANG["date_Wed"] = "Ons"; +$LANG["date_Wednesday"] = "Onsdag"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "August"; +$LANG["date_month_December"] = "Desember"; +$LANG["date_month_February"] = "Februar"; +$LANG["date_month_January"] = "Januar"; +$LANG["date_month_July"] = "Juli"; +$LANG["date_month_June"] = "Juni"; +$LANG["date_month_March"] = "Mars"; +$LANG["date_month_May"] = "Mai"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Oktober"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Apr"; +$LANG["date_month_short_Aug"] = "Aug"; +$LANG["date_month_short_Dec"] = "Des"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Kan"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Okt"; +$LANG["date_month_short_Sep"] = "Sep"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Brukerkontoen har blitt slettet."; +$LANG["notify_account_updated"] = "Kontoen din er oppdatert."; +$LANG["notify_add_display_values"] = "Legg Display Verdier"; +$LANG["notify_admin_menu_updated"] = "Administrasjonen menyen har blitt oppdatert."; +$LANG["notify_admin_theme_overridden"] = "Administratoren tema har vært manuelt overstyrt."; +$LANG["notify_allow_url_fopen_not_set"] = "Beklager, denne testen ikke kan kjøres på webserveren din. Det krever allow_url_fopen settes til 1 i php.ini filen. Denne innstillingen lar PHP tilgang til filene via en nettadresse som er nødvendig for å utføre denne testen. Du kan teste det manuelt ved å laste opp en fil til denne mappen via FTP, og deretter prøve å få tilgang til den på nettadressen du har levert."; +$LANG["notify_change_temp_password"] = "Du bare logget inn med et midlertidig passord. Du bør nullstille passordet ditt nå!"; +$LANG["notify_click_to_edit_new_submission"] = "Klikk her for å redigere det nye innlegget."; +$LANG["notify_client_account_menus_updated"] = "Klienten kontoen (e) har blitt oppdatert til {\$menu_name} menyen. Du kan nå slette menyen som tidligere var knyttet til kontoen (e)."; +$LANG["notify_client_account_not_updated"] = "Kundekontoen kunne ikke bli oppdatert."; +$LANG["notify_client_account_themes_updated"] = "Klienten kontoen (e) har blitt oppdatert til {\$theme} tema. Nå kan du deaktivere temaet tidligere tilknyttet kontoen (e)."; +$LANG["notify_client_account_updated"] = "Klienten din er oppdatert."; +$LANG["notify_client_menu_deleted"] = "Klienten menyen har blitt slettet."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Menyen har blitt slettet, men følgende kundekontoer nå ikke lenger har en meny! Du må oppdatere følgende kontoer:"; +$LANG["notify_client_menu_updated"] = "Klienten menyen har blitt oppdatert."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Beklager, menyen du bare prøvde å slette allerede brukes av klientene nedenfor. For å slette menyen må du først tildele klientene til andre menyer. Klikk på klienten for å redigere den enkelte konto, eller tildele alle kontoene til en annen ved hjelp av rullegardinmenyen nedenfor."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Beklager, en av de temaene du nettopp ufør allerede brukes av følgende kundekontoer. For å deaktivere temaet må du først tildele hver kunde til et annet tema. Klikk på klienten for å redigere den enkelte konto, eller tildele alle kontoene til et tema ved hjelp av rullegardinmenyen nedenfor."; +$LANG["notify_edit_email_fields_link"] = "Klikk her for å angi hvilke skjemafelt er e-felt, slik at du kan målrette dem i e-maler."; +$LANG["notify_edit_field_new_field"] = "Dette er et nytt felt. Du må oppdatere hovedsiden før han ble forhindret i å fullt redigere dette feltet."; +$LANG["notify_edit_option_list_after_save"] = "Du må velge et alternativ List og deretter Lagre endringer før du kan redigere den."; +$LANG["notify_email_field_config_deleted"] = "Den e-konfigurasjon har blitt slettet."; +$LANG["notify_email_fields_not_updated"] = "Beklager, vi kunne ikke oppdatere e-feltene."; +$LANG["notify_email_fields_updated"] = "Den e-feltene har blitt oppdatert."; +$LANG["notify_email_not_sent"] = "Beklager, det e ikke sendes. Vennligst kontakt administrator på adressen nedenfor."; +$LANG["notify_email_not_sent_c"] = "Beklager, det e ikke sendes:"; +$LANG["notify_email_sent"] = "E (e) er sendt."; +$LANG["notify_email_template_deleted"] = "Den e-malen har blitt slettet."; +$LANG["notify_email_template_updated"] = "Den e-malen har blitt oppdatert."; +$LANG["notify_enabled_module_list_updated"] = "Listen over aktiverte modulene har blitt oppdatert."; +$LANG["notify_error_saving_fields"] = "Det oppstod en feil lagring av feltene."; +$LANG["notify_field_changes_saved"] = "Endringene i feltet (e) har blitt lagret."; +$LANG["notify_field_options_smart_filled"] = "Din feltet alternativer har blitt Smart Fylt."; +$LANG["notify_field_selected"] = "Feltet har blitt valgt. Klikk her for å gå tilbake til hovedfeltet listen."; +$LANG["notify_field_updated"] = "Dette feltet har blitt oppdatert."; +$LANG["notify_file_not_uploaded"] = "Filen kunne ikke lastes opp."; +$LANG["notify_file_uploaded"] = "Filen ble lastet opp."; +$LANG["notify_filters_not_updated"] = "Det oppstod en feil oppdaterer denne klienten framlegg filtre."; +$LANG["notify_filters_updated"] = "Innleveringen filtrene har blitt oppdatert for denne klienten."; +$LANG["notify_folder_correct_permissions"] = "Denne mappen har de riktige tillatelsene."; +$LANG["notify_folder_url_match"] = "Mappen og URL vises til riktig match."; +$LANG["notify_folder_url_no_access"] = "Denne testen kan ikke utføres fordi PHP fikk ikke tilgang til denne nettadressen. Dette skyldes vanligvis webadressen blir passordbeskyttet med. Htaccess fil."; +$LANG["notify_folder_url_no_match"] = "Denne mappen-URL kombinasjon synes ikke å være en kamp."; +$LANG["notify_folder_url_unknown_error"] = "En ukjent feil oppstod. Du kan teste det manuelt ved å laste opp en fil til denne mappen via FTP, og deretter prøve å få tilgang til den på nettadressen du har levert."; +$LANG["notify_form_access_type_email_info"] = "Dette skjemaet har administrator tilgang type, slik at ingen kunder har tilgang til det og er ikke oppført i rullemenyen nedenfor."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Beklager, et skjema med denne IDen ikke finnes."; +$LANG["notify_form_field_not_added"] = "Skjemaet feltet '{\$fieldname}' kunne ikke legges til."; +$LANG["notify_form_field_options_updated"] = "Skjemaet feltet valgene har blitt oppdatert."; +$LANG["notify_form_field_removed"] = "Skjemaet feltet ble fjernet."; +$LANG["notify_form_fields_removed"] = "Skjemafeltene ble fjernet."; +$LANG["notify_form_not_updated_notify_admin"] = "Skjemaet kunne ikke bli oppdatert. Vennligst kontakt administrator å rapportere dette problemet."; +$LANG["notify_form_settings_updated"] = "Skjemaet innstillinger har blitt oppdatert."; +$LANG["notify_form_submission_updated"] = "Skjemainnsendingen har blitt oppdatert."; +$LANG["notify_form_tabs_updated"] = "Fanene har blitt oppdatert."; +$LANG["notify_form_updated"] = "Skjemaet er oppdatert."; +$LANG["notify_form_views_updated"] = "Skjemaet Views har blitt oppdatert."; +$LANG["notify_install_invalid_db_info"] = "Beklager, men vi kan ikke koble til databasen ved hjelp av informasjonen du har oppgitt. Feilmeldingen databasen tilbake er: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Skjemaet har blitt opprettet! Du kan konfigurere form gjennom disse kategoriene."; +$LANG["notify_invalid_account_information_in_sessions"] = "Kontoen informasjon lagret i økter er ugyldig. Logg inn på nytt under."; +$LANG["notify_invalid_license_key"] = "Beklager, som ikke synes å være en gyldig lisensnøkkel. Prøv å legge inn det igjen."; +$LANG["notify_invalid_permissions"] = "Du har ikke tillatelse til å få tilgang til denne siden. Du er blitt logget ut."; +$LANG["notify_invalid_search_dates"] = "Vennligst bruk datepicker å skrive inn en gyldig dato eller datoer."; +$LANG["notify_invalid_upload_folder"] = "Opplastingen mappen er enten ugyldig eller ikke er skrivbar."; +$LANG["notify_lang_list_updated"] = "De tilgjengelige UI språket listen har blitt oppdatert."; +$LANG["notify_login_info_emailed"] = "Påloggingsinformasjonen din er sendt til deg."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, er denne modulen allerede installert!"; +$LANG["notify_module_installed"] = "Modulen er installert. Klikk her for å velge modulen."; +$LANG["notify_module_list_updated"] = "Modulen listen er blitt oppdatert."; +$LANG["notify_module_uninstalled"] = "Modulen er avinstallert."; +$LANG["notify_module_updated"] = "Den {\$module} modulen har blitt oppdatert til {\$version}. Klikk her for å velge modulen ."; +$LANG["notify_multi_field_selected"] = "Feltet har blitt valgt. Klikk her for å vise og redigere feltet alternativer."; +$LANG["notify_multi_field_updated"] = "Dette feltet har blitt oppdatert. Du vil kunne konfigurere feltet alternativene etter at du har konfigurert skjemaet."; +$LANG["notify_multiple_fields_found"] = "Flere elementer ble funnet med dette feltet navn ({\$field_name}). Dette kan skje hvis siden inneholder mer enn én form eller hvis du tilfeldigvis kåret til en av dine former det samme som en annen. Velg den du ønsker fra listen nedenfor."; +$LANG["notify_new_default_view_created"] = "En ny, standard Se inneholder alle skjemafeltene er opprettet."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "Ingen brukerkonto ID ble funnet i økter. Logg inn på nytt under."; +$LANG["notify_no_api_installed"] = "Du har ikke API installert"; +$LANG["notify_no_client_permissions"] = "Det er ingen innstillinger tilgjengelig for å redigere."; +$LANG["notify_no_email_template_selected"] = "Velg e-malen."; +$LANG["notify_no_emails_defined"] = "Ingen e-poster har blitt definert for dette skjemaet. For å legge et nytt, klikker du på knappen nedenfor."; +$LANG["notify_no_field_settings"] = "Dette feltet typen inneholder ikke noen ekstra innstillinger."; +$LANG["notify_no_fields_in_tab"] = "Denne kategorien inneholder ingen felt."; +$LANG["notify_no_option_lists"] = "Det finnes ingen alternativ lister definert. Klikk på knappen nedenfor for å opprette en ny."; +$LANG["notify_no_test_submission"] = "Form Tools har ikke mottatt en vellykket test underkastelse ennå."; +$LANG["notify_no_user_email_fields_configured"] = "Merk: Dersom du ønsker å sende en e-post til den e-postadressen som ble inkludert i skjemaet, må du først konfigurere skjemaet e-feltene."; +$LANG["notify_no_views"] = "Skjemaet har ingen Views satt opp! Du trenger minst én visning for å administrere dine skjemadata."; +$LANG["notify_no_views_assigned_to_client_form"] = "Det ser ut til at din brukerkonto har ikke blitt tildelt noen form Views, så du vil ikke kunne se noen data. Ta kontakt med administrator for ytterligere hjelp."; +$LANG["notify_no_views_defined"] = "Du har ingen Views definert. Du vil ikke kunne se dette skjemaet anførsler mindre minst én View er opprettet. Klikk på knappen nedenfor for å opprette standard View."; +$LANG["notify_option_list_deleted"] = "Alternativet Listen har blitt slettet."; +$LANG["notify_option_list_updated"] = "Alternativet listen har blitt oppdatert."; +$LANG["notify_public_form_omit_list_updated"] = "Klienten utelate listen for dette skjemaet har blitt oppdatert."; +$LANG["notify_public_view_omit_list_updated"] = "Klienten utelate listen for dette synet har blitt oppdatert."; +$LANG["notify_required_admin_pages"] = "De neste sidene er nødvendige i administrator-menyen: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Beklager, det var ingen aktivitet på en stund så vi måtte logge deg ut. Logg inn på nytt under."; +$LANG["notify_setup_options_updated"] = "Konfigureringsalternativene har blitt oppdatert."; +$LANG["notify_smart_fill_field_not_found"] = "Vi kunne ikke finne et felt med dette navnet ({\$field_name}) på formen (e) angitt. Du kan enten manuelt sette feltet skriver under, eller klikk på Gå-knappen for å endre dette feltet senere."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Filen (e) er lastet opp. Prøv å klikke på Smart Fyll-knappen for å prøve igjen. Hvis dette trinnet mislykkes, må du hoppe over dette trinnet og konfigurere skjemafeltene manally senere."; +$LANG["notify_smart_fill_submitted"] = "Skjemaet er sendt inn. Avhengig av størrelsen på formen og antall felt alternativer, kan dette ta litt tid."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Beklager, en eller flere av filene du har angitt, ikke kunne lastes opp. Du må hoppe over dette trinnet og konfigurere feltene manuelt."; +$LANG["notify_submission_and_files_deleted"] = "Innleveringen og enhver fil (er) forbundet med det ble slettet."; +$LANG["notify_submission_copied"] = "Innleveringen er kopiert."; +$LANG["notify_submission_copied_edit"] = "Innleveringen er kopiert. Du kan redigere det nedenfor."; +$LANG["notify_submission_deleted"] = "Innleveringen ble slettet."; +$LANG["notify_submission_deleted_with_problems"] = "Innleveringen ble slettet, men følgende problemer oppstod under forsøk på å slette følgende fil (er):"; +$LANG["notify_submission_id_not_found"] = "Innleveringen ID ble ikke funnet."; +$LANG["notify_submission_not_updated"] = "Innleveringen kunne ikke bli oppdatert."; +$LANG["notify_submissions_and_files_deleted"] = "Den innleveringer og enhver fil (er) forbundet med dem var slettet."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} innlegg har blitt kopiert."; +$LANG["notify_submissions_deleted"] = "Materialet var slettet."; +$LANG["notify_submissions_deleted_with_problems"] = "Materialet var slettet, men følgende problemer oppstod under forsøk på å slette følgende fil (er):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Din e-testen kunne ikke sendes."; +$LANG["notify_theme_cache_folder_not_writable"] = "Dette temaet hurtigbuffer mappe er ikke skrivbar. For å aktivere dette temaet, den {\$folder} mappen må ha full lese-og skriverettigheter."; +$LANG["notify_theme_list_updated"] = "Temaet listen er blitt oppdatert."; +$LANG["notify_themes_settings_updated"] = "Temaet har blitt oppdatert."; +$LANG["notify_view_deleted"] = "The View har blitt slettet."; +$LANG["notify_view_group_deleted"] = "The View gruppen har blitt slettet."; +$LANG["notify_view_missing_columns"] = "Oops! Beklager, har denne visningen ikke er fullt satt opp ennå."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klikk her for å angi hvilke felt som skal vises som kolonner på denne siden."; +$LANG["notify_view_updated"] = "The View har blitt oppdatert."; +$LANG["notify_your_email_sent"] = "E-posten er sendt."; +$LANG["phrase_100_per_page"] = "100 per side"; +$LANG["phrase_10_per_page"] = "10 per side"; +$LANG["phrase_15_per_page"] = "15 per side"; +$LANG["phrase_1_direct"] = "1. Direkte"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per side"; +$LANG["phrase_25_per_page"] = "25 per side"; +$LANG["phrase_2_code"] = "2. Kode"; +$LANG["phrase_2_columns"] = "2 kolonner"; +$LANG["phrase_2chars"] = "2 tegn"; +$LANG["phrase_3_columns"] = "3 kolonner"; +$LANG["phrase_4_columns"] = "4 kolonner"; +$LANG["phrase_50_per_page"] = "50 per side"; +$LANG["phrase_accepting_submissions"] = "(aksepterer innsendinger)"; +$LANG["phrase_access_admin_account_c"] = "Du kan tillgang til din administrator konto her:"; +$LANG["phrase_access_type"] = "Tillgangs Type"; +$LANG["phrase_account_info"] = "Konto Informasjon"; +$LANG["phrase_account_settings"] = "Konto Instillinger"; +$LANG["phrase_action_needed"] = "Action Needed"; +$LANG["phrase_add_client"] = "LEGG TIL KLIENT"; +$LANG["phrase_add_client_menu"] = "Legg til Klient Meny"; +$LANG["phrase_add_default_settings_rightarrow"] = "Legg til standardinnstillingene »"; +$LANG["phrase_add_field"] = "Legg til Felt"; +$LANG["phrase_add_fields"] = "LEGG TIL FELT"; +$LANG["phrase_add_fields_rightarrow"] = "Legg Field (s) »"; +$LANG["phrase_add_form"] = "Legg til Skjema"; +$LANG["phrase_add_form_external"] = "Legg Form - Ekstern"; +$LANG["phrase_add_form_internal"] = "Legg Form - Intern"; +$LANG["phrase_add_new_group_rightarrow"] = "Legg til ny gruppe »"; +$LANG["phrase_add_num_rows"] = "Legg til {\$number} Rad(er)"; +$LANG["phrase_add_row"] = "Legg til Rad »"; +$LANG["phrase_add_submission_button"] = "Legg Submission Button"; +$LANG["phrase_add_view_rightarrow"] = "Legg View »"; +$LANG["phrase_adding_multi_page_form"] = "Legge en flersidig skjemaet med API"; +$LANG["phrase_adding_single_page_form"] = "Legge en enkeltsidig form med API"; +$LANG["phrase_admin_menu"] = "Administrator Meny"; +$LANG["phrase_admin_only"] = "Kun Administrator"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Utseende"; +$LANG["phrase_advanced_settings_rightarrow"] = "Avanserte instillinger »"; +$LANG["phrase_all_X_results_selected"] = "Alle {\$numresults} Resultater Valgt"; +$LANG["phrase_all_clients"] = "Alle klienter"; +$LANG["phrase_all_clients_except_c"] = "Alle klienter, utenom:"; +$LANG["phrase_all_clients_have_access"] = "(alle klienter har adgang)"; +$LANG["phrase_all_fields"] = "Alle felt"; +$LANG["phrase_all_fields_displayed"] = "Alle felt er vist"; +$LANG["phrase_all_statuses"] = "Alle statuser"; +$LANG["phrase_all_submissions"] = "Alle innsendinger"; +$LANG["phrase_allow_fields_edited"] = "Tillat felt som skal redigeres"; +$LANG["phrase_alphanumeric"] = "Alfanumerisk (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Versjon"; +$LANG["phrase_apply_timezone_offset"] = "Påfør Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Tildele alle oppførte kundekontoer til {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Tildele alle oppførte kundekontoer til {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Ved utgangen av"; +$LANG["phrase_at_start"] = "Ved start"; +$LANG["phrase_author_link"] = "Forfatter Link"; +$LANG["phrase_auto_disable_account"] = "Auto-deaktivere kontoen etter # mislykkede innloggingsforsøk"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Tilgjengelige Klienter"; +$LANG["phrase_available_fields"] = "Tilgjengelige felt"; +$LANG["phrase_available_option_lists"] = "Tilgjengelig Option Lister"; +$LANG["phrase_available_swatches"] = "Tilgjengelig fargeprøver"; +$LANG["phrase_available_swatches_c"] = "Tilgjengelig fargeprøver:"; +$LANG["phrase_available_tabs"] = "Tilgjengelig Tabs"; +$LANG["phrase_available_views"] = "Ledige Visninger"; +$LANG["phrase_awaiting_form_submission"] = "Venter skjemainnsendinger."; +$LANG["phrase_back_to_field_list"] = "«tilbake til feltlisten"; +$LANG["phrase_back_to_search_results"] = "tilbake til søkeresultatet"; +$LANG["phrase_base_view_on"] = "Base Vis på ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Endre Loginn Informasjon"; +$LANG["phrase_characters_limit_p"] = "tegn grensen."; +$LANG["phrase_check_db_settings_try_again"] = "Dobbeltsjekk databasen innstillingene og klikk på Fortsett-knappen igjen."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Sjekk URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Rydd Opp"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Clear Utelat List"; +$LANG["phrase_client_account_settings"] = "Client Kontoinnstillinger"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Klient Kart Filters »"; +$LANG["phrase_client_may_edit"] = "Kunden kan endre"; +$LANG["phrase_client_menu"] = "Client Meny"; +$LANG["phrase_clients_can_access_form"] = "Klienter som har tilgang til skjemaet"; +$LANG["phrase_clients_can_access_view"] = "Klienter som har tilgang til View"; +$LANG["phrase_clients_cannot_access_form"] = "Klienter som ikke kan åpne skjemaet"; +$LANG["phrase_clients_cannot_access_view"] = "Klienter som ikke kan få tilgang til Vis"; +$LANG["phrase_clients_may_edit"] = "Klienter kan redigere"; +$LANG["phrase_code_c"] = "Feilkode:"; +$LANG["phrase_code_markup_field"] = "Kode / Markup Felt"; +$LANG["phrase_code_markup_type"] = "Kode / Markup Type"; +$LANG["phrase_codes_c"] = "Feilkoder:"; +$LANG["phrase_column_width"] = "Kolonnebredde"; +$LANG["phrase_company_name"] = "Firma Navn"; +$LANG["phrase_configure_form_email_fields"] = "Konfigurer Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Bekreft Folder-URL Match"; +$LANG["phrase_connect_rows"] = "Koble rader"; +$LANG["phrase_copy_email_settings_from"] = "Kopier E-post-innstillinger fra ..."; +$LANG["phrase_copy_settings_from"] = "Kopier innstillinger fra ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Opprett konto"; +$LANG["phrase_create_admin_account"] = "Opprett administratorkonto"; +$LANG["phrase_create_config_file"] = "Create Config File"; +$LANG["phrase_create_database_tables"] = "Create Database Tabeller"; +$LANG["phrase_create_default_view"] = "Lag Standard Vis"; +$LANG["phrase_create_file"] = "Lag fil"; +$LANG["phrase_create_group"] = "Opprett gruppe"; +$LANG["phrase_create_new_email"] = "Opprett ny e-post"; +$LANG["phrase_create_new_menu"] = "Opprett ny meny"; +$LANG["phrase_create_new_option_list"] = "Lag nytt alternativ liste"; +$LANG["phrase_create_new_option_list_group"] = "Lag nytt alternativ liste gruppe"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Lag nytt alternativ liste »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Opprett Ny visning gruppe"; +$LANG["phrase_custom_display_format"] = "Custom Visningsformat"; +$LANG["phrase_custom_recipient"] = "Custom Mottaker"; +$LANG["phrase_custom_url"] = "Tilpasset URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Datatype"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Database navn"; +$LANG["phrase_database_password"] = "Database passord"; +$LANG["phrase_database_settings"] = "Database Innstillinger"; +$LANG["phrase_database_setup"] = "Database Installering"; +$LANG["phrase_database_table_prefix"] = "Database table prefix"; +$LANG["phrase_database_username"] = "Database brukernavn"; +$LANG["phrase_date_format"] = "Dato Format"; +$LANG["phrase_db_column"] = "DB Column"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Standard kundekonti Theme"; +$LANG["phrase_default_date_field_search_value"] = "Standard datofeltet søk verdi"; +$LANG["phrase_default_language"] = "Standard Språk"; +$LANG["phrase_default_menu"] = "Standard Meny"; +$LANG["phrase_default_sessions_timeout"] = "Standard Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Standard Sorteringsrekkefølge"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Standardverdi"; +$LANG["phrase_default_values"] = "Standardverdiene"; +$LANG["phrase_default_values_new_submissions"] = "Standardverdier for nye partnere"; +$LANG["phrase_delete_field"] = "Slett felt"; +$LANG["phrase_delete_form"] = "SLETT SKJEMA"; +$LANG["phrase_delete_row"] = "Slett rad"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Slett tilknyttede filene når du sletter innsending"; +$LANG["phrase_delete_view"] = "Slett Vis"; +$LANG["phrase_disconnect_rows"] = "Koble rader"; +$LANG["phrase_display_email"] = "Display Email"; +$LANG["phrase_display_name"] = "Visningsnavn"; +$LANG["phrase_display_text"] = "Display Tekst"; +$LANG["phrase_display_value"] = "Display Value"; +$LANG["phrase_edit_admin_menu"] = "Rediger Admin Meny"; +$LANG["phrase_edit_client"] = "Rediger Client"; +$LANG["phrase_edit_client_menu"] = "Rediger Client Meny"; +$LANG["phrase_edit_email_template"] = "Rediger Email Template"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Rediger skjema tilgang type]"; +$LANG["phrase_edit_option_list"] = "Edit Option List"; +$LANG["phrase_edit_submission"] = "Rediger Innsending"; +$LANG["phrase_edit_submission_label"] = "Edit Submission Labelnavn"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "EPOST INSTILLINGER"; +$LANG["phrase_email_template"] = "E-post mal"; +$LANG["phrase_email_template_name"] = "Email malnavnet"; +$LANG["phrase_error_learn_more"] = "Lær mer om denne feilen."; +$LANG["phrase_error_text_intro"] = "Rett opp følgende feil (r) og send:"; +$LANG["phrase_errors_learn_more"] = "Klikk på feilkoder å lære mer."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Eksterne skjema"; +$LANG["phrase_external_form_info"] = "Ekstern Form Info"; +$LANG["phrase_external_your_own_form"] = "Ekstern (din egen form)"; +$LANG["phrase_field_comments"] = "Felt Comments"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Field Valg"; +$LANG["phrase_field_size"] = "Felt Størrelse"; +$LANG["phrase_field_skipped"] = "Field Hoppet over"; +$LANG["phrase_field_specific_settings"] = "Feltspesifikke innstillinger"; +$LANG["phrase_field_type"] = "Felt Type"; +$LANG["phrase_field_type_no_validation"] = "Det er ingen valideringsregler tilgjengelig for dette feltet typen."; +$LANG["phrase_field_types"] = "Felttyper"; +$LANG["phrase_field_value"] = "Field Value"; +$LANG["phrase_field_values_to_display_values"] = "Felt Verdier »viser verdier"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Touches"; +$LANG["phrase_finalize_form"] = "Fullfør Skjema"; +$LANG["phrase_first_name"] = "Fornavn"; +$LANG["phrase_footer_text"] = "Bunntekst"; +$LANG["phrase_for_any_form_submission"] = "For noen form innsending"; +$LANG["phrase_for_view_submissions"] = "Kun innleveringer som passer inn i følgende View (s)"; +$LANG["phrase_forgot_password"] = "GLEMT PASSORD?"; +$LANG["phrase_form_already_selected"] = "Form allerede valgt"; +$LANG["phrase_form_email_field_b_c"] = "[Skjema epost felt]:"; +$LANG["phrase_form_email_field_configuration"] = "Form Email Field Configuration"; +$LANG["phrase_form_email_fields"] = "Form E Felt"; +$LANG["phrase_form_field"] = "Skjema Felt"; +$LANG["phrase_form_field_contents"] = "Form Felt Innhold"; +$LANG["phrase_form_field_name"] = "Skjema Feltnavn"; +$LANG["phrase_form_field_placeholders"] = "Skjemafelt plassholdere"; +$LANG["phrase_form_fields"] = "Form Fields"; +$LANG["phrase_form_info"] = "Form Informasjon"; +$LANG["phrase_form_info_2"] = "2. Form Informasjon"; +$LANG["phrase_form_list"] = "Form List"; +$LANG["phrase_form_name"] = "Skjema Navn"; +$LANG["phrase_form_page"] = "Form Side"; +$LANG["phrase_form_placeholders"] = "Form Plassholdere"; +$LANG["phrase_form_submission"] = "Innsending av skjema"; +$LANG["phrase_form_submissions"] = "Form Submissions"; +$LANG["phrase_form_type"] = "Form Type"; +$LANG["phrase_form_url"] = "Skjemaets URL"; +$LANG["phrase_form_urls"] = "Form URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Skjemaer tildelt noen konto"; +$LANG["phrase_forms_page_default_message"] = "Skjemaer side default melding"; +$LANG["phrase_ft_installation"] = "Form Tools Installation Script"; +$LANG["phrase_full_width"] = "Full Bredde"; +$LANG["phrase_getting_started"] = "komme i gang"; +$LANG["phrase_global_placeholders"] = "Global Plassholdere"; +$LANG["phrase_group_name"] = "Group Name"; +$LANG["phrase_group_options_q"] = "Gruppe alternativer?"; +$LANG["phrase_group_rows"] = "Gruppe rader"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Marker Farge"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Mal"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Import Option List »"; +$LANG["phrase_input_length"] = "Input Lengde"; +$LANG["phrase_installation_help"] = "Installasjon Hjelp"; +$LANG["phrase_internal_form"] = "Intern Form"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Er dette et flersidig form?"; +$LANG["phrase_label_response_placeholders"] = "Etikett / Response Plassholdere"; +$LANG["phrase_large_300px"] = "Stor (300px)"; +$LANG["phrase_large_400px"] = "Stor (400 piksler)"; +$LANG["phrase_last_7_days"] = "Siste 7 dager"; +$LANG["phrase_last_logged_in"] = "Sist innlogget"; +$LANG["phrase_last_modified"] = "Sist endret"; +$LANG["phrase_last_modified_date"] = "Sist endret dato"; +$LANG["phrase_last_name"] = "Etternavn"; +$LANG["phrase_letters_only"] = "Letters Only"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Begrens e-innhold til felt i View"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "LOGG INN"; +$LANG["phrase_login_as_user"] = "Logg inn som denne brukeren"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Passord"; +$LANG["phrase_login_username"] = "Logg inn Brukernavn"; +$LANG["phrase_logo_link_url"] = "Logokobling URL"; +$LANG["phrase_logout_url"] = "Logg ut URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Hovedinnstillingene"; +$LANG["phrase_manage_client"] = "Behandle Klienter"; +$LANG["phrase_manage_client_omit_list"] = "Behandle Client Utelat List"; +$LANG["phrase_max_file_size"] = "Max Filstørrelse"; +$LANG["phrase_max_length"] = "Max lengde"; +$LANG["phrase_max_length_words_chars"] = "- Maks lengde (ord / tegn)"; +$LANG["phrase_may_add_submissions"] = "Kan legge partnere"; +$LANG["phrase_may_copy_submissions"] = "Kan kopiere innleveringer"; +$LANG["phrase_may_delete_submissions"] = "Kan slette partnere"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Meny Navn"; +$LANG["phrase_menu_type"] = "Meny Type"; +$LANG["phrase_min_password_length"] = "Minimum passord lengde"; +$LANG["phrase_module_description"] = "Modul Beskrivelse"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Måned til dato"; +$LANG["phrase_multi_select"] = "Multi-velger"; +$LANG["phrase_multi_select_dropdown"] = "Multi-velger dropdown"; +$LANG["phrase_multiple_fields_found"] = "Flere felt Funnet!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Navn / Etternavn"; +$LANG["phrase_new_blank_email"] = "New Blank Email"; +$LANG["phrase_new_blank_option_list"] = "Nye Blank Option liste"; +$LANG["phrase_new_blank_view"] = "New Blank View"; +$LANG["phrase_new_ft_installation"] = "Nytt skjema Tools Installasjon"; +$LANG["phrase_new_option_list"] = "Nytt alternativ liste"; +$LANG["phrase_new_password"] = "Nytt passord"; +$LANG["phrase_new_password_reenter"] = "Nytt passord (please re-enter)"; +$LANG["phrase_new_view"] = "Ny visning"; +$LANG["phrase_new_view_all_fields"] = "Nye View - Alle felt"; +$LANG["phrase_next_client"] = "neste klient »"; +$LANG["phrase_next_field"] = "neste felt »"; +$LANG["phrase_next_form"] = "neste skjemaet »"; +$LANG["phrase_next_view"] = "neste View »"; +$LANG["phrase_no_clients"] = "Ingen kunder"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Ingen offset"; +$LANG["phrase_no_option_lists_available"] = "Ingen alternativer lister tilgjengelig."; +$LANG["phrase_no_views"] = "Ingen Visninger"; +$LANG["phrase_no_views_with_filters_p"] = "(Ingen Views med filtre definert)"; +$LANG["phrase_none_not_recommended"] = "Ingen (anbefales ikke)"; +$LANG["phrase_not_assigned_to_option_list"] = "Dette feltet er ikke tildelt en alternativ liste."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Er IKKE lik"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "IKKE Like"; +$LANG["phrase_not_visible_to_client"] = "(ikke synlig for kunden)"; +$LANG["phrase_num_clients_per_page"] = "Antall Klienter pr. Side"; +$LANG["phrase_num_emails_per_page"] = "Num Emails Per Side"; +$LANG["phrase_num_fields"] = "Antall Fields"; +$LANG["phrase_num_forms_per_page"] = "Antall Skjemaer pr. Side"; +$LANG["phrase_num_menus_per_page"] = "Num Menyer Per Side"; +$LANG["phrase_num_modules_per_page"] = "Num Moduler per side"; +$LANG["phrase_num_option_lists_per_page"] = "Num Alternativ Lister Per Side"; +$LANG["phrase_num_options"] = "Num Alternativer"; +$LANG["phrase_num_rows"] = "Num Rader"; +$LANG["phrase_numbers_only"] = "Tall Only"; +$LANG["phrase_often_localhost"] = "(ofte "localhost")"; +$LANG["phrase_on_form_submission"] = "På skjemainnsendinger"; +$LANG["phrase_one_char_number"] = "Minst ett tegn er et tall (0-9)"; +$LANG["phrase_one_char_upper"] = "Minst ett tegn er store bokstaver"; +$LANG["phrase_one_special_char"] = "Minst én av {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(bare bestemte klienter har tilgang)"; +$LANG["phrase_open_form_in_dialog"] = "Åpne skjemaet i dialogvinduet"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Åpne dette skjemaet i en ny fane / vindu"; +$LANG["phrase_option_list"] = "Alternativ List"; +$LANG["phrase_option_list_name"] = "Alternativ List Navn"; +$LANG["phrase_option_list_or_contents"] = "Alternativ List / Contents"; +$LANG["phrase_option_lists"] = "Alternativ Lister"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Side Tittel"; +$LANG["phrase_pass_on"] = "Pass på"; +$LANG["phrase_password_min"] = "Det må være minst {\$length} tegn."; +$LANG["phrase_password_one_number"] = "Det må inneholde minst ett tall (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Det må inneholde minst én stor bokstav."; +$LANG["phrase_password_requirements_c"] = "Passord krav:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Det må inneholde minst ett av følgende tegn: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Tillatelser / Andre innstillinger"; +$LANG["phrase_permitted_file_types"] = "Tillatte fil typer"; +$LANG["phrase_phone_number"] = "Telefonnummer"; +$LANG["phrase_phone_number_format"] = "Telefonnummer Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini maks tillatt filopplasting størrelse:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Vennligst Bekreft"; +$LANG["phrase_please_enter_license_key"] = "Vennligst skriv inn din lisensnøkkel"; +$LANG["phrase_please_select"] = "Vennligst Velg"; +$LANG["phrase_please_select_form"] = "Vennligst velg et skjema"; +$LANG["phrase_prev_client"] = "«Forrige klient"; +$LANG["phrase_prev_form"] = "«Forrige skjema"; +$LANG["phrase_prevent_password_reuse"] = "Hindre gjenbruk av # sist passord"; +$LANG["phrase_previous_field"] = "«forrige felt"; +$LANG["phrase_previous_page"] = "Forrige Side"; +$LANG["phrase_previous_view"] = "«Forrige Vis"; +$LANG["phrase_program_name"] = "Program Navn"; +$LANG["phrase_public_form_omit_list"] = "Offentlig Form Utelat List"; +$LANG["phrase_public_view_omit_list"] = "Offentlig View Utelat List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Det var et problem med følgende spørring:"; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Random skjemainnsendinger"; +$LANG["phrase_re_enter_password"] = "Gjenta passord"; +$LANG["phrase_recipient_type"] = "Mottakertype"; +$LANG["phrase_redirect_url"] = "Vidresend URL"; +$LANG["phrase_refresh_list"] = "Oppdater Liste"; +$LANG["phrase_refresh_module_list"] = "Oppdater Module List"; +$LANG["phrase_refresh_page"] = "OPPDATER SIDE"; +$LANG["phrase_refresh_theme_list"] = "Oppdater Theme List"; +$LANG["phrase_register_new_email"] = "Register New Email"; +$LANG["phrase_remaining_characters"] = "gjenværende tegn"; +$LANG["phrase_remaining_words"] = "gjenværende ord"; +$LANG["phrase_remove_tabs"] = "Fjern Tabs"; +$LANG["phrase_required_password_chars"] = "Nødvendig passord tegn"; +$LANG["phrase_resend_test_submission"] = "Send Test Innlevering"; +$LANG["phrase_return_form_list"] = "Tilbake til Form List"; +$LANG["phrase_row_selected"] = "{\$num_rows} rad valgt"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rader valgt"; +$LANG["phrase_sample_data"] = "Eksempel Data"; +$LANG["phrase_save_changes"] = "Lagre endringer"; +$LANG["phrase_search_keyword"] = "Søkeord"; +$LANG["phrase_security_settings"] = "Sikkerhetsinnstillinger"; +$LANG["phrase_select_all"] = "Velg alle"; +$LANG["phrase_select_all_X_results"] = "Velg Alle {\$numresults} resultater"; +$LANG["phrase_select_all_on_page"] = "Select All på siden"; +$LANG["phrase_select_date"] = "Velg dato"; +$LANG["phrase_select_field"] = "Velg felt"; +$LANG["phrase_select_swatch"] = "Velg swatch"; +$LANG["phrase_selected_clients"] = "Merkede Klienter"; +$LANG["phrase_selected_views"] = "Valgte Visninger"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "SEND TEST EPOST"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Innstilling Value"; +$LANG["phrase_setup_options"] = "Oppsett Valg"; +$LANG["phrase_show_all"] = "Vis alle"; +$LANG["phrase_show_form"] = "Vis skjema"; +$LANG["phrase_size_large"] = "Stor (TEKST)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 tegn)"; +$LANG["phrase_size_small"] = "Små (<= 20 tegn)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 tegn)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Skip Step"; +$LANG["phrase_small_100px"] = "Liten (100px)"; +$LANG["phrase_small_80px"] = "Liten (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fyll"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fyll ut feltene fra:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fyll User Documentation »"; +$LANG["phrase_sort_as"] = "Sorter Som"; +$LANG["phrase_special_fields"] = "Spesielle Fields"; +$LANG["phrase_standard_fields"] = "Standard felt"; +$LANG["phrase_standard_filters"] = "Standard Filters »"; +$LANG["phrase_step_1"] = "Trinn 1"; +$LANG["phrase_step_2"] = "Trinn 2"; +$LANG["phrase_step_3"] = "Trinn 3"; +$LANG["phrase_step_4"] = "Trinn 4"; +$LANG["phrase_step_5"] = "Trinn 5"; +$LANG["phrase_step_6"] = "Trinn 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip koder i form innleveringer"; +$LANG["phrase_subject_line"] = "Subject Line"; +$LANG["phrase_submission_date"] = "Innsendings dato"; +$LANG["phrase_submission_id"] = "Innsendings ID"; +$LANG["phrase_submission_made"] = "Innlevering laget: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Innlevering Type"; +$LANG["phrase_submissions_per_page"] = "Innsendinger pr. Side"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Du kan ikke legge til validering i system felt."; +$LANG["phrase_system_time_offset"] = "System Tidsforskyvning"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test mappe rettigheter"; +$LANG["phrase_test_submission"] = "Test Innsending"; +$LANG["phrase_test_submission_3"] = "3. Test Innlevering"; +$LANG["phrase_test_submission_received"] = "Test Submission Mottatt"; +$LANG["phrase_text_and_html"] = "Tekst og HTML"; +$LANG["phrase_text_email"] = "Tekst E-post"; +$LANG["phrase_text_template"] = "Tekstmal"; +$LANG["phrase_the_previous_month"] = "Den forrige måned"; +$LANG["phrase_theme_description"] = "Tema Beskrivelse"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Feil Type:"; +$LANG["phrase_unselect_all"] = "Fjern Alle"; +$LANG["phrase_update_accounts"] = "Oppdater kontoer"; +$LANG["phrase_update_email_template"] = "Oppdater Email Template"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Update bestilling"; +$LANG["phrase_update_view"] = "Oppdater View"; +$LANG["phrase_upload_file"] = "Last opp fil"; +$LANG["phrase_upload_files"] = "Last opp filer"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Last Mappebanen"; +$LANG["phrase_upload_folder_url"] = "Last opp mappen URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Bruk standardverdi?"; +$LANG["phrase_used_by_num_form_fields"] = "Brukes av # Form Fields"; +$LANG["phrase_uses_swatches"] = "Bruker fargeprøver"; +$LANG["phrase_valid_email"] = "Gyldig e-post"; +$LANG["phrase_validation_error"] = "Validering Feil"; +$LANG["phrase_validation_rule"] = "Validering Rule"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Vis gruppe"; +$LANG["phrase_view_id"] = "Vis ID"; +$LANG["phrase_view_name"] = "Se Navn"; +$LANG["phrase_view_placeholders"] = "Vis Plassholdere"; +$LANG["phrase_view_submissions"] = "Se registreringer"; +$LANG["phrase_view_uploaded_files"] = "vis opplastede filer"; +$LANG["phrase_viewing_range"] = "[visning {\$startnum} til {\$endnum}]"; +$LANG["phrase_when_sent"] = "Når sendt"; +$LANG["phrase_when_submission_is_deleted"] = "Når anførsel er slettet"; +$LANG["phrase_when_submission_is_edited"] = "Når anførsel er redigert"; +$LANG["phrase_who_can_access"] = "Hvem får tilgang?"; +$LANG["phrase_word_limit_p"] = "Ordet grensen."; +$LANG["phrase_year_to_date"] = "Hittil i år"; +$LANG["phrase_yes_for_all_views"] = "Ja, for alle Visninger"; +$LANG["phrase_yes_for_specific_views"] = "Ja, for bestemte Visninger"; +$LANG["phrase_your_account"] = "Din konto"; +$LANG["phrase_your_email"] = "Din Epost"; +$LANG["phrase_your_email_address"] = "Din epost adresse"; +$LANG["processing_form_disabled"] = "Beklager, dette skjemaet her blitt deaktivert."; +$LANG["processing_form_incomplete"] = "Beklager, denne form ikke synes å være helt stille opp innenfra Form Tools. Den mest sannsynlige årsaken til dette problemet er at du har fjernet "form_tools_initialize_form" skjult skjema feltet, men ikke fullført alle trinnene i "Add Form"-prosessen.

    Vennligst logg inn og vurdere form konfigurasjonen."; +$LANG["processing_init_complete"] = "Takk! Din test innlevering har blitt satt gjennom vellykket. Gå tilbake til Form Verktøy Administrasjon panel og klikk på "Refresh"-knappen nederst Legg Form Trinn 3 side for å fullføre oppsettet av skjemaet."; +$LANG["processing_invalid_form_id"] = "Beklager, ikke dette synes å være en gyldig form ID."; +$LANG["processing_no_form_id"] = "process.php krever en form ID for behandling. Sørg for at skjemaet inneholder et skjult felt med navnet "form_tools_form_id" som passerer langs skjemaet ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Skjema Tools er ikke å finne ut hvor å omdirigere når de unnlater å oppgi KAPTEIN riktig. Vennligst pass i et skjult felt med navnet form_tools_form_url inneholder nettadressen til skjemaet."; +$LANG["processing_no_post_vars"] = "process.php mottar ikke data. Merk: Dette skriptet kan ikke lastes direkte i nettleseren din.
    Sørg for at formen er sending via POST."; +$LANG["processing_no_redirect_url"] = "Innsending ble behandlet riktig, men du har ikke spesifisert en omdirigering URL for dette skjemaet! Rediger skjema i form Tools UI og legge til omdirigere URL."; +$LANG["special_language"] = "Norwegian"; +$LANG["special_language_locale"] = "Norwegian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Alle nye kundekontoer vil bli opprettet med innstillingene og rettighetene definert nedenfor. Hvis du vil overstyre en innstilling for en bestemt klient, redigere kundekontoen og besøke deres kategorien Innstillinger."; +$LANG["text_add_form_choose_integration_method"] = "Velg hvilken metode du vil bruke til å integrere skjemaet med Form Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Denne metoden bruker Form Tools API , som inngår i hoved Form Verktøy script. API gir en rekke nyttige funksjoner for å gjøre jobben med å integrere skjemaet med Form Tools så enkelt som mulig. Det er ingen begrensninger for hvordan skjemaet kan sendes inn når du bruker API. Du kan sende innholdet på én gang, eller side ved side, du kan legge til dine egne server-side validering, CAPTCHA bilder, du kan velge å sende informasjonen nå, men bare si det for å vise underkastelse i form Tools UI på et senere tidspunkt (se Ferdigstilt partnere delen i API hjelpe dokumentasjon)."; +$LANG["text_add_form_code_submission_drawbacks"] = "For å sende skjemadata via PHP, må skjemaet være plassert på samme nettsted som dette Form Verktøy installasjon. Dernest, for ikke-tekniske og uerfarne Form Tools brukere, kan denne metoden være litt skremmende i begynnelsen. Men det er nok av dokumentasjon for å hjelpe deg ut, inkludert to enkle opplæringsprogrammer for å integrere din single-og multi-page former (disse er knyttet til på et senere trinn)."; +$LANG["text_add_form_direct_submission_benefits"] = "Dette er den enkleste måten å sende inn skjemaet Skjema Tools. Det krever ikke noen kjennskap til PHP og krever bare en svært liten endring i skjemaet. Det er flott for mindre skjemaer der du bare vil sende inn opplysninger til databasen deretter omdirigere brukeren til en "takk" siden."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Dette brevet metoden er svært enkel å bruke, men gir ikke mye kontroll for mer kompliserte former. Flersidige skjemaer eller skjemaer som krever server-side validering er bedre egnet til den andre metoden: å sende inn via skjemaet Tools API."; +$LANG["text_add_form_field_types1"] = "Nesten ferdig! Denne siden prøver å finne alle dine skjemafelt og bestemme deres felttyper. Klikk på Smart Fyll knappen til høyre for å komme i gang. Du vil kun lov til å fortsette når alle handlinger har blitt løst - problemer som trenger din oppmerksomhet vises i "Action Needed " kolonnen."; +$LANG["text_add_form_field_types2"] = "Hvis formen ikke er i HTML, klikker Hopp Step-knappen for å fortsette. Dette kan alle bli konfigurert senere."; +$LANG["text_add_form_field_types3"] = "Dette laster innholdet av skjemaet (e). Merk: dette vil overskrive eventuelle endringer du har gjort på denne siden."; +$LANG["text_add_form_field_types4"] = "I tilfelle du får problemer, kan du klikke her for å hoppe over dette trinnet. Alle uløste feltene er satt til å bruke standardverdiene. Du kan tilpasse disse feltene senere."; +$LANG["text_add_form_field_types_manual_upload"] = "Hvis du har vært ute av stand til Smart Fyll felt, kan det være lurt å prøve en alternativ løsning: laste opp kopier av skjemaene i feltene nedenfor."; +$LANG["text_add_form_field_types_manual_upload2"] = "Merk: Ikke last rå PHP sider (eller andre server-side kode) - bare laste opp HTML-versjoner. For å få dette, vise og lagre siden fra nettleseren."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Det var flere felt som ikke kunne finnes i form siden du har angitt. Dette er mest sannsynlig forårsaket av en av følgende:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Du skrev ett eller flere av form nettadressene til flersidige skjema feil."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "En eller flere sider av skjemaet er passordbeskyttet og manuset kunne ikke tilgang til siden."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Du angitt feil skjemaet URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klikk her for å gå tilbake til Form Information siden for å kontrollere innstillingene."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Du endret form (e) etter at testen innsending"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klikk her for å sette gjennom en annen test underkastelse."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Din form er passordbeskyttet og manuset kunne ikke tilgang til siden."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "I en annen fane / vindu av denne nettleseren, logge deg inn skjemaet og klikk på Oppdater side-knappen nedenfor for å prøve å re-finne feltene."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Hvis ingen av løsningene over arbeidet, kan du også prøve å manuelt laste opp former for behandling ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Det var flere felt som ikke kunne finnes i form sidene du har angitt. Dette er mest sannsynlig forårsaket av en av disse:"; +$LANG["text_add_form_help_link"] = "Hvis du får noen problemer i løpet av disse trinnene, prøv å lese ut brukerdokumentasjon ."; +$LANG["text_add_form_step_1_text_1"] = "Følgende sider leder deg gjennom trinnene for å konfigurere Form Verktøy for å lagre skjemaet innleveringer. Før du fortsetter, må du kontrollere at:"; +$LANG["text_add_form_step_1_text_2"] = "skjemaet er allerede opprettet og det er tilgjengelig via en URL (localhost er fin)"; +$LANG["text_add_form_step_1_text_3"] = "er i stand til å redigere skjemaet"; +$LANG["text_add_form_step_2_para_2"] = "Åpne skjemaet i en redaktør av valg og endre form merke til følgende, inkludert de to skjulte feltene."; +$LANG["text_add_form_step_2_para_3"] = "Deretter åpner du skjemaet i en webleser. Fyll ut alle felt og send den. Etter innsending, bør du se en melding. Når denne meldingen vises, tilbake til denne siden og klikk på oppdater knappen nedenfor. Når denne prosessen er fullført, vil du se en fortsatt knappen nedenfor, tar du til neste trinn."; +$LANG["text_add_form_step_2_para_6"] = "I din skjemainnsendinger, omfatter følgende verdier. De kan settes direkte via PHP eller sendt gjennom selve skjemaet. Nedenfor finner du eksempler på hver. The (\$ varname) er en hash (eller assosiativ array) av alle skjemainnsendinger informasjon - dette er vanligvis den (\$ postvar) eller (\$ sessionvar) variabel, men det kan være tilpasset bygget."; +$LANG["text_add_form_step_2_text_2"] = "Skriv inn nettadressen til din "takk " side her. Det er der du vil at folk skal rettes til etter at skjemaet er sendt inn."; +$LANG["text_add_form_step_3_para_1"] = "Denne siden viser alle feltene i skjemaet underkastelse. Vennligst undersøke hvert felt, og fjerne det du ikke trenger lagret for hver innlevering. Hvis du sletter en gyldig felt ved et uhell, eller ønsker å endre informasjonen som lagres av skjemaet, gå tilbake til forrige side for å sende en ny test underkastelse."; +$LANG["text_add_form_step_3_para_2"] = "Merk: Hvis du sender flere verdier via boksene eller et multi-velger boksen, må du kontrollere at feltnavnet ender med [] tegn (se brukerdokumentasjonen for mer informasjon)."; +$LANG["text_add_form_step_3_text_1"] = "Her er der moroa starter! På dette punktet er Form Tools venter på en test innsending av skjemaet. Den vil bruke dette skjemaet innsending å vite hvilken informasjon som skal lagres i databasen."; +$LANG["text_add_form_step_3_text_2"] = "ved å peke skjemaet Skjema Verktøy"; +$LANG["text_add_form_step_3_text_3"] = "ved å bruke skjemaet Tools API"; +$LANG["text_add_form_step_3_text_4"] = "For å hjelpe integrere din form, anbefaler vi at du leser ett av følgende opplæring:"; +$LANG["text_add_form_step_3_text_5"] = "De forklarer hvordan du setter opp et skjema som forberedelse til testen underkastelse, og inkludere andre opplysninger som kan være til hjelp. Linjen av PHP du trenger er:"; +$LANG["text_add_form_step_3_text_6"] = "Dette sikrer at dataene er faktisk sendt til Form Tools. Når du har satt gjennom test-innlevering, klikk på knappen under."; +$LANG["text_add_form_step_3_text_7"] = "På siden før din endelige "takk" siden, sørg for å legge til følgende parameter til \$ params variabel:"; +$LANG["text_add_form_step_5_para_1"] = "Databasen er satt opp til for dette skjemaet, og skjemaet er aktivert for bruk. Hvis du har gjort underkastelse ved å peke skjemaet til process.php, gå tilbake til skjemaet og fjerne disse skjulte feltet:"; +$LANG["text_add_form_step_5_para_2"] = "Deretter kan du gå til "takk" siden for å tømme økter. Når dette er gjort, vil alle nye formen innleveringer skal behandles og lagres av Form Tools. Prøv å lage en underkastelse eller to for å verifisere informasjonen er alt du laster opp på riktig måte."; +$LANG["text_add_form_step_5_para_3"] = "Hvis du ønsker å finpusse formen for alternativer som automatisk e-post, og legger ekstra skjemafelt feltet, eller tilpasser skjemaet felttyper, kan du redigere skjemaet på noe punkt."; +$LANG["text_add_form_step_5_para_4"] = "Siden skjemaet inneholder filopplasting felt, må du konfigurere hvert felt for å spesifisere filopplasting mappen, hvilke filer er tillatt og. Dette kan bli funnet på kategorien Visning på endre form siden."; +$LANG["text_add_form_step_5_para_5"] = "Hvis sendingen ble sendt via API, endre ft_api_init_form_page linjen på den første siden av skjemaet til:"; +$LANG["text_add_submission_button"] = "Den Legg Submission knappen vises bare for visninger som har "Måtte legge innleveringer " alternativet satt til "ja "."; +$LANG["text_admin_email_placeholder_info"] = "Dette er e-postadressen i skjemaet Verktøy administrator, definert i kontoinnstillinger. Dette bare utganger e-postadressen, så hvis du ønsker å bruke som en HTML-kobling, må du pakke det inn i en <a>-koden, slik:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Også standard påloggingssiden tema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Først bør du velge skjema type."; +$LANG["text_client_form_page"] = "Denne siden viser alle former og Visninger tilordnet denne klienten. Tips: For dem til å se et skjema er innleveringer, de må være tilordnet minst én visning."; +$LANG["text_client_map_filters_desc1"] = "Klient Kart filtre lar deg begrense innsendinger som vises i denne visningen ved å kartlegge verdiene i et skjemafelt til verdiene i en kundekonto."; +$LANG["text_client_no_forms"] = "Du har for øyeblikket ingen former for vurdering."; +$LANG["text_client_welcome"] = "Velkommen! Dette programmet lagrer all informasjon presentert av nettstedet besøkende. Hvis du vil vise innleveringer for en bestemt form bare å klikke på VIS linken, eller se lengst til venstre navigeringsmenyen for andre alternativer."; +$LANG["text_config_file_created"] = "Din config.php filen har blitt opprettet."; +$LANG["text_config_file_not_created"] = "Vi kunne ikke lage din config.php filen. Du må opprette filen manuelt."; +$LANG["text_config_file_not_created_instructions"] = "Kopier og lim inn innholdet fra avsnittet nedenfor i en fil som heter config.php og laste den opp via FTP til skjema Verktøy / global mappen (mappen som også inneholder noen andre filer og kataloger, arkiv ett kalt library.php)."; +$LANG["text_confirm_delete_form"] = "Ja, jeg vil slette dette skjemaet"; +$LANG["text_create_admin_account"] = "Nå skal vi lage administrator konto. Dette brukes for å administrere alle aspekter av skjema verktøy, for eksempel legge former og skaper kundekontoer."; +$LANG["text_create_new_client_account"] = "Bruk skjemaet nedenfor til å opprette en ny kundekonto. Alle feltene er obligatoriske."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "se PHP {\$datefunctionlink} funksjon for formatering alternativer"; +$LANG["text_default_file_settings_page"] = "Denne siden definerer filopplasting innstillingene for Form Tools installasjonen. Disse reglene gjelder for alle filer lastet opp via skjema Verktøy, med mindre eksplisitt overstyres for en individuell form feltet. Merk: Hvis du endrer laster opp mappen etter filer har blitt lastet opp, vil de automatisk bli flyttet til den nye mappen."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Før du fortsetter, må du oppdatere / themes / default / hurtigbuffermappen å tillate full lese og skrive rettigheter. Når dette er gjort, vil denne meldingen forsvinne og du kan installere skriptet."; +$LANG["text_default_values_in_view"] = "Denne delen er valgfri. Alle innleveringer opprettet med denne visningen skal inneholde standard verdiene angitt her."; +$LANG["text_delete_all_forms"] = "Jeg ønsker å slette alle filene som ble lastet opp via dette skjemaet"; +$LANG["text_delete_form_warning"] = "Er du sikker på at du vil slette denne formen? Denne handlingen kan ikke angres. Alle data vil bli tapt!"; +$LANG["text_edit_admin_menu_page"] = "Du kan redigere menyen nedenfor. Å sikre at du alltid har tilgang til all funksjonalitet i form Tools, de følgende sidene er nødvendig: Forms, klienter, en konto, Modules, Settings og Logg."; +$LANG["text_edit_client_menu_page"] = "Denne delen kan du tilpasse navigasjonsfeltet til venstre kolonne for hver bruker. Du kan opprette så mange klient menyer som du ønsker og overdra kontoen til en av dem. Som standard er det to menyer: én for deg, administrator, og én for alle kundekontoer. Administratorkontoen kan endres, men ikke fjernet."; +$LANG["text_edit_tab_summary"] = "Hvis du ønsker å gruppere denne visningen er felt inn i faner, bare skriv kategorien navnene nedenfor. Når du er ferdig, velg den aktuelle kategorien for hvert felt gruppe i Felt kategorien ."; +$LANG["text_edit_view_list_page"] = "Denne kategorien styrer hvilke felt som vises som kolonner på Submission Listing siden, og noen få andre innstillinger for disse feltene. Merk: Vi anbefaler at du legger ikke mer enn 4 eller 5 av de viktigste feltene i View."; +$LANG["text_email_settings_intro"] = "Denne siden lar deg finne ut hvilken av skjemafeltene lagre e-poster med tilhørende navn. Når du definerer dem her, kan du bruke dem i e-malene som mottakere. Denne delen er helt valgfritt."; +$LANG["text_email_tab_summary"] = "Denne delen kan du lage et ubegrenset antall e-poster som skal sendes når skjemaet er sendt, og andre triggere."; +$LANG["text_email_template_tab"] = "Denne delen kan du bestemme hvilket innhold som vises i e-posten. Hvis du ønsker å sende e-post som kun tekst eller e-post, bare angi en verdi for den delen. Hvis du skriver inn en verdi for begge, vil e-posten sendes i begge formater."; +$LANG["text_email_template_text_1"] = "Det har vært en innlevering gjøres via skjemaet, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Det har vært en innlevering gjøres via skjemaet ditt, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Takk for ditt bidrag!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Feilmelding for å vise om feltet ikke består valideringen"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Eksterne former er former som allerede finnes på nettstedet ditt, eller et sted på nettet. Velg dette alternativet hvis du har ditt eget skjema som du ønsker å integrere med Form Tools."; +$LANG["text_fields_tab_summary"] = "Denne siden lister opp alle skjemafelt. For å kontrollere hvordan de vises når du surfer innleveringer, se Visninger kategorien . Slette et felt på denne siden vil slette den fra alle påmeldinger, så vær forsiktig!"; +$LANG["text_file_extension_info"] = "Angi filtyper skilt med komma (f.eks jpg, gif, png) eller stå tomt for å tillate en filtype."; +$LANG["text_file_field_placeholders_info"] = "File feltene har to spesielle plassholdere: FILEURL og filnavn. FILEURL er den fullstendige webadressen til filen, slik at du kan koble direkte til den i din e-poster; FILENAME er bare filnavnet."; +$LANG["text_filters_page"] = "Bare de anførsler som oppfyller reglene du definerer nedenfor vises i denne visningen."; +$LANG["text_filters_tips"] = "For tips om hvordan du bruker underkastelse filtre, se User Documentation."; +$LANG["text_forgot_password"] = "Ikke noe problem. Bare skriv inn ditt brukernavn nedenfor og påloggingsinformasjonen blir sendt til din e-postadresse på filen. Hvis du har glemt brukernavn, vennligst e-administrator på {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Dette skjemaet inneholder ett eller flere filopplasting felt:"; +$LANG["text_form_placeholder_info"] = "Følgende plassholdere kan brukes i alle e-mal og språk plassholder feltet, uavhengig av hva Vis email malen er tildelt. Den SPØRSMÅL plassholdere er de spesifikke formen spørsmålet, svaret plassholderne er svarene på hvert spørsmål."; +$LANG["text_form_submission_date_placeholder"] = "Datoen da innleveringen ble gjort."; +$LANG["text_form_tools_form_url"] = "Den fullstendige URL av skjemaet. Dette har bare en verdi for ekstern former."; +$LANG["text_form_tools_login_url"] = "Påloggingsinformasjonen URL for Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Merk: Denne formen for tiden har administrator tilgang type, så ingen av kundekontoene vil kunne se denne View."; +$LANG["text_form_view_permission_info_private"] = "Merk: Dette skjemaet har i dag privat adkomst skriver, slik at offentlige og private alternativer her vil være begrenset til den del av klienter."; +$LANG["text_ft_installed"] = "Gratulerer, har Form Verktøy blitt installert!"; +$LANG["text_global_placeholder_info"] = "Disse plassholdere kan brukes i en mal, og enhver form."; +$LANG["text_group_name_explanation"] = "For felt lagt gjennom Add Form prosessen, er denne verdien pre-fylt til vise tekst uansett feltet bruker verdien. Du ønsker kanskje å endre den til bedre karakterisere innholdet."; +$LANG["text_install_create_config_file"] = "Form Verktøy lagrer din server og database innstillingene i en fil som heter config.php, funnet i / global / mappe. Klikk på "Create File" for å automatisk generere filen på serveren."; +$LANG["text_install_create_database_tables"] = "Nå skal vi opprette Form Verktøy databasetabeller. Dette trinnet krever selve databasen har allerede opprettet. Hvis du er usikker på hvordan du gjør dette, kan du kontakte din leverandør."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" betyr vanligvis at vertsnavnet du oppga er feil. Kanskje prøve å sette denne til "localhost" - dette er en vanlig måte å referere til den "lokale" database på en webserver."; +$LANG["text_install_db_tables_error_tip_2"] = ""Kan ikke koble til lokale MySQL server via socket" betyr databasen vertsnavnet feltet er igjen feil."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" betyr at det er et problem med ditt brukernavn / passord kombinasjon."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... til databasen ..." betyr at selv om ditt brukernavn og passord du har gitt er riktig, det var ikke koble til en bestemt database med denne kontoen. Dette kan bety at enten databasen er feil, eller at denne brukerkontoen ikke er knyttet til denne databasen."; +$LANG["text_install_email_content_text"] = "Det er mange ressurser på nettstedet vårt for å hjelpe deg med å komme i gang, inkludert vår online dokumentasjon (https://docs.formtools.org) og opplæringsprogrammer (https://docs.formtools.org/tutorials). Hvis du finner deg fast eller har spørsmål, still et spørsmål på github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Beklager, vil Form Verktøy ikke kunne kjøres på serveren din. Vennligst klikk her for minstekravene."; +$LANG["text_install_system_check"] = "Denne siden kjører et par tester på systemet for å sikre at det er i stand til å kjøre Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Intern former eksisterer bare innenfor Form Verktøy - ikke andre steder på nettstedet ditt. Kun Form Verktøy brukerkontoer vil ha tilgang til skjemaet. Velg dette alternativet hvis du ikke har et eksisterende skjema."; +$LANG["text_internal_form_intro"] = "Bruk skjemaet nedenfor for å opprette en ny intern form. Alle innstillinger, inkludert antallet og innholdet i skjemafelt kan endres og konfigureres senere."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "For å logge inn og bruke Form Tools, må du ha JavaScript aktivert i nettleseren din. Vennligst aktiver det nå, og klikk oppdater i nettleseren din."; +$LANG["text_last_modified_date_explanation_c"] = "Den siste gangen dette brevet ble endret. For nye innleveringer, er dette det samme som:"; +$LANG["text_limit_email_content_desc"] = "Dette alternativet fungerer bare for HTML og tekst-innhold generert med Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(viser bare Visninger med ett eller flere filtre definert)"; +$LANG["text_log_in_to_ft"] = "Logg på skjema Verktøy"; +$LANG["text_login"] = "Vennligst logg inn nedenfor for å få tilgang til (\$ programnavn) Administration Panel. Hvis du har glemt passordet ditt, klikk her."; +$LANG["text_login_info"] = "Som forespurt, her påloggingsinformasjonen."; +$LANG["text_name_of_form"] = "Navnet på skjemaet."; +$LANG["text_no_clients"] = "Det er ingen kunder i databasen. Hvis du vil legge til en ny kundekonto, klikker du Add Client knappen nedenfor."; +$LANG["text_no_clients_found"] = "Ingen klienter ble funnet. Prøv å utvide dine søkekriterier."; +$LANG["text_no_fields_in_view"] = "Dette Vis ikke har noen felt i det. Klikk på linken nedenfor."; +$LANG["text_no_forms"] = "Det er ingen former i databasen. For å legge et nytt skjema, klikk på Legg til skjema nedenfor."; +$LANG["text_no_forms_found"] = "Ingen former ble funnet."; +$LANG["text_no_forms_found_search"] = "Ingen former ble funnet. Prøv å utvide søkekriteriene."; +$LANG["text_no_modules_found"] = "Ingen moduler ble funnet. Prøv å utvide dine søkekriterier."; +$LANG["text_no_recipients_added"] = "Ingen mottakerne har blitt lagt til."; +$LANG["text_no_search_results"] = "Det er ingen resultater med denne søkekriterier / View."; +$LANG["text_no_submissions_found"] = "Beklager, ingen innleveringer funnet."; +$LANG["text_no_themes"] = "Du har ikke noen temaer definert. Klikk på knappen under for å oppdatere temaet liste, eller sjekke Form Verktøy brukerdokumentasjonen for informasjon om å legge til temaer."; +$LANG["text_non_deletable_fields"] = "Dette feltet brukes av Core-script og kan ikke redigeres eller slettes uten å forårsake inkompatibilitet. Hvis du ønsker å gjøre endringer i feltet type, lage en kopi av det og redigere kopien."; +$LANG["text_option_list_group_explanation"] = "Hvis dette er valgt, kan det å gruppere alternativene. Hvordan gruppene vises avhenger felttype bruker dette alternativet listen."; +$LANG["text_option_list_page"] = "Radioknapper, avkrysningsbokser, rullegardinlistene og multi-velg dropdown feltene alle gir brukeren flere alternativer der de kan velge ett eller flere elementer. I Form Tools, er disse kjent som Alternativ Lister. Vanligvis er disse opprettes automatisk av Legg ytre form prosess, men du kan manuelt legge til eller redigere ditt valg listene nedenfor hvis skjemaet innhold endres eller du konstruere felt som bare brukes internt."; +$LANG["text_option_list_used_by_fields"] = "Dette Alternativ listen brukes av flere skjemafelt. Hvis du oppdaterer informasjonen nedenfor, vil det bli forandret for alle feltene (se skjemafelt kategorien for å se listen over felt). Hvis du ønsker å oppdatere verdiene for ett, eller et delsett av de feltene som er tildelt, klikk her for å lage et nytt alternativ liste med de samme verdiene som denne. Deretter kan du tilordne skjemafeltene du vil den nye gruppen."; +$LANG["text_public_form_omit_list_page"] = "Offentlige skjemaer gir deg fordelen av å la alle kundekontoer tilgang til dem uten å måtte manuelt tildele hver kunde til dem. Denne siden lar deg finne de klienter som kanskje ikke tilgang til dette skjemaet, selv om formen er markert som offentlige."; +$LANG["text_public_view_omit_list_page"] = "Offentlig Visninger gir deg fordelen av å la alle kundekontoer tilgang til dem uten å måtte manuelt tildele hver kunde til dem. Denne siden lar deg finne de klienter som kanskje ikke tilgang til dette spesielle View."; +$LANG["text_reference_tab_info"] = "Denne siden lister opp alle plassholdere tilgjengelig for skjemaet. Plassholdere er strenger som kan brukes i e-posten maler, og felt som er merket med en spesiell plassholderikon . Når inngått et felt, de er dynamisk konvertert til riktig verdi når feltet er vist eller e-posten er sendt."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Gjennomgå brukerdokumentasjon"; +$LANG["text_send_email_from_edit_submission_page"] = "Inkluder alternativ for å sende denne e-posten fra Edit Submission side"; +$LANG["text_smart_fill_option_list_problem"] = "Vi kunne ikke Smart Fyll feltet alternativer. Men, som et alternativ, kan du prøve å laste opp en kopi av skjemaet side i feltet nedenfor. Merk: Ikke last rå PHP sider (eller andre server-side kode) - bare laste opp HTML-versjonen. For å få dette, vise og lagre siden fra nettleseren."; +$LANG["text_submission_ip_address"] = "IP-adressen til brukeren som gjorde underkastelse."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Bruk skjemaet nedenfor for å enten vise eller sende deg en e-post som genereres fra denne e-malen. E-posten er kun sendt til den e spesifisert nedenfor; hovedsak cc og Blindkopi epostadresse mottakere ignoreres under testingen."; +$LANG["text_test_email_templates_no_submissions"] = "For å teste din e maler, må du først legge til minst én innsending av skjemaet."; +$LANG["text_theme_page_intro"] = "Denne siden viser alle temaer. Klikk på et av bildene for å se et større eksempel på temaets stiler. Den "aktivert" sjekkheftet avgjør om det temaet kan velges av klienter. For å bla gjennom alle tilgjengelige temaer, besøk Form Verktøy website."; +$LANG["text_tutorial_adding_first_form"] = "Veiledere: Legge din første skjemaet!"; +$LANG["text_unique_submission_id"] = "Den unike innsending ID."; +$LANG["text_unused_option_list"] = "Dette alternativet listen er ikke brukes av noen form felt."; +$LANG["text_upgraded"] = "Installasjonen har blitt oppgradert til {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Dette Alternativ List brukes av følgende felt."; +$LANG["text_view_fields_info"] = "Denne kategorien styrer hvilke felt som dukker opp når du redigerer en innlevering i denne visningen, rekkefølgen og om de kan redigeres eller ikke."; +$LANG["text_view_tab_summary"] = "Denne kategorien lar deg lage forskjellige måter å gruppere og ordne data. Visninger lar deg opprette egendefinerte undergrupper av skjemadataene å splitte det i håndterbare biter, og å begrense hva kundene kan se eller redigere."; +$LANG["validation_account_disabled"] = "Beklager, kontoen din er deaktivert."; +$LANG["validation_account_not_recognized"] = "Beklager, det brukernavnet ikke gjenkjent."; +$LANG["validation_account_not_recognized_info"] = "Beklager, det brukernavnet ikke funnet. Vennligst prøv igjen, eller kontakte administrator på adressen nedenfor."; +$LANG["validation_account_pending"] = "Brukerkontoen din venter på godkjenning av en administrator."; +$LANG["validation_check_delete_client"] = "Er du sikker på at du vil slette denne kundekonto?"; +$LANG["validation_client_password_missing_number"] = "Kunden Passordet må inneholde minst ett tall (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Kunden Passordet må inneholde minst ett av følgende tegn: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Kunden Passordet må inneholde minst én stor bokstav."; +$LANG["validation_client_password_too_short"] = "Klienten passord må være minst {\$number} tegn."; +$LANG["validation_col_name_is_reserved_word"] = "Beklager, denne databasen kolonnenavn en reservert arbeid i MySQL. Vennligst endre navn på den!"; +$LANG["validation_db_name"] = "Databasenavn kan ikke inneholde perioder eller skråstreker."; +$LANG["validation_db_not_updated_invalid_input"] = "Databasen kunne ikke bli oppdatert. Vennligst sjekk for å se verdiene du har oppgitt er gyldige."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Beklager, må standard administrator og klient temaer alltid være aktivert."; +$LANG["validation_default_phone_num_required"] = "Vennligst fyll i full telefonnummer for <b> { \$ feltet} </ b> - bare tall."; +$LANG["validation_default_rule_alpha"] = "Vennligst bare skrive bokstaver og tall for <b> { \$ feltet} </ b>-feltet."; +$LANG["validation_default_rule_letters_only"] = "Vennligst bare taste inn bokstaver for <b> { \$ feltet} </ b>-feltet."; +$LANG["validation_default_rule_numbers_only"] = "Vennligst bare taste inn tall for <b> { \$ feltet} </ b>-feltet."; +$LANG["validation_default_rule_required"] = "Vennligst skriv inn en verdi for <b> { \$ feltet} </ b>-feltet."; +$LANG["validation_default_rule_valid_email"] = "Vennligst skriv inn en gyldig e-postadresse for <b> { \$ feltet} </ b>-feltet."; +$LANG["validation_delete_form_confirm"] = "Vennligst merk boksen for å bekrefte at du ønsker å slette dette skjemaet."; +$LANG["validation_delete_non_empty_option_list"] = "Advarsel! Dette Alternativ List er brukt av ett eller flere skjemafelt. Slette det vil gjøre disse feltene slutte å fungere ordentlig."; +$LANG["validation_display_names_incomplete"] = "Angi en verdi for alle Skjerm navn, eller klikk på Smart Fyll alternativet for å angi dem dynamisk."; +$LANG["validation_duplicate_form_field_name"] = "Du kan ikke ha flere felt med det samme feltnavnet."; +$LANG["validation_email_not_found_or_invalid"] = "Beklager, e tilknyttet kontoen din enten ikke finnes eller er ugyldig."; +$LANG["validation_folder_invalid_permissions"] = "For å kjøre denne testen, hvilke tillatelser må være innstilt på opplastingen mappen for å gi rom for lesing og skriving av filer (777 på Unix)."; +$LANG["validation_folder_not_writable"] = "Denne mappen er ikke skrivbar."; +$LANG["validation_internal_form_too_many_fields"] = "Beklager, du kan bare skapt former med 1000 felt eller mindre."; +$LANG["validation_invalid_admin_email"] = "Angi en gyldig adminstrator e-postadresse."; +$LANG["validation_invalid_admin_username"] = "Ditt brukernavn kan bare bestå av alfanumeriske tegn (AZ og 0-9)."; +$LANG["validation_invalid_client_username"] = "Kundens brukernavn kan bare inneholde alfanumeriske tegn (AZ og 0-9)."; +$LANG["validation_invalid_client_username2"] = "Beklager, brukernavn og kan bare inneholde bokstaver, tall og understrekingstegnet. Angi et nytt brukernavn."; +$LANG["validation_invalid_column_name"] = "Kolonnenavn kan bare alfanumeriske (AZ, 0-9). Vennligst sjekk kolonnenavnene."; +$LANG["validation_invalid_custom_from_email"] = "Angi en gyldig egendefinert "Fra 'e-postadresse."; +$LANG["validation_invalid_custom_reply_to_email"] = "Angi en gyldig egendefinert "Svar til e-postadresse."; +$LANG["validation_invalid_default_sessions_timeout"] = "Skriv inn en gyldig verdi (et tall) for standard økter timeout."; +$LANG["validation_invalid_email"] = "Vennligst skriv inn en gyldig epost adresse."; +$LANG["validation_invalid_email_id"] = "Beklager, det er en ugyldig e-ID."; +$LANG["validation_invalid_folder"] = "Beklager, ikke dette ut til å være en gyldig mappe."; +$LANG["validation_invalid_form_field_names"] = "Feltene kan bare inneholde alfanumeriske og understreking (AZ, 0-9, _), uten mellomrom."; +$LANG["validation_invalid_num_clients_per_page"] = "Vennligst kun inn tall i Num Klienter Per Page feltet."; +$LANG["validation_invalid_num_emails_per_page"] = "Vennligst bare skriv sifre for e-poster per side."; +$LANG["validation_invalid_num_form_fields"] = "Vennligst bare inn tall på hvor mange felt feltet."; +$LANG["validation_invalid_num_forms_per_page"] = "Vennligst kun inn tall i Num Skjemaer Per Page feltet."; +$LANG["validation_invalid_num_menus_per_page"] = "Vennligst bare skriv sifre for menyene per side."; +$LANG["validation_invalid_num_modules_per_page"] = "Vennligst kun inn tall i Num Moduler Per Page feltet."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Vennligst bare inn tall i Num Option Lister Per sidefelt."; +$LANG["validation_invalid_num_submissions_per_page"] = "Angi et gyldig antall innsendinger per side."; +$LANG["validation_invalid_sessions_timeout"] = "Angi en gyldig økt tidsavbrudd (heltall only!)."; +$LANG["validation_invalid_tab_assign_values"] = "Vennligst kun inn tall i 'fra' og 'å' felt."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Serveren din installasjon av PHP har en ugyldig innstilling for upload_tmp_dir verdi. "{\$upload_folder}" er ikke en gyldig mappe."; +$LANG["validation_invalid_url"] = "Angi en gyldig webadresse."; +$LANG["validation_invalid_username"] = "Ditt brukernavn kan bare inneholde alfanumeriske tegn (AZ og 0-9)."; +$LANG["validation_is_form_active"] = "Angi om skjemaet er aktiv eller ikke."; +$LANG["validation_menu_name_taken"] = "Beklager, denne menyen navnet allerede tatt. Velg et nytt navn."; +$LANG["validation_modules_search_no_status"] = "Velg enten Aktivert eller Deaktivert avmerkingsboksene."; +$LANG["validation_no_access_type"] = "Oppgi tilgang type."; +$LANG["validation_no_account_logout_url"] = "Fyll inn logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Angi det nye passordet."; +$LANG["validation_no_account_password_confirmed2"] = "Angi det nye passordet."; +$LANG["validation_no_admin_email"] = "Vennligst skriv inn administrator e-postadresse."; +$LANG["validation_no_admin_theme"] = "Vennligst velg tema for administratorkontoen."; +$LANG["validation_no_admin_theme_swatch"] = "Velg en fargeprøve for administratoren temaet."; +$LANG["validation_no_client_email"] = "Fyll inn kundens e-postadresse."; +$LANG["validation_no_client_first_name"] = "Fyll inn kundens fornavn."; +$LANG["validation_no_client_last_name"] = "Fyll inn kundens etternavn."; +$LANG["validation_no_client_login_page"] = "Angi hvilken side kunden skal bli omdirigert til når de logger"; +$LANG["validation_no_client_password"] = "Fyll inn kundens passord."; +$LANG["validation_no_client_theme_swatch"] = "Velg en standard swatch for kundekontoer."; +$LANG["validation_no_client_username"] = "Fyll inn kundens brukernavn."; +$LANG["validation_no_column_name"] = "Vennligst fyll inn alle kolonnenavn, eller klikk på Smart Fyll knappen for å automatisk fylle dem."; +$LANG["validation_no_column_selected"] = "Velg minst ett felt skal vises som en kolonne på innlevering liste siden."; +$LANG["validation_no_custom_from_email"] = "Vennligst fyll inn egendefinerte "Fra 'e-postadresse."; +$LANG["validation_no_custom_recipient_email"] = "Vennligst fyll inn egendefinerte mottakerens e-postadresse."; +$LANG["validation_no_custom_reply_to_email"] = "Vennligst fyll inn egendefinert "Svar til e-postadresse."; +$LANG["validation_no_date_format"] = "Angi en dato-format."; +$LANG["validation_no_db_column_single"] = "Vennligst skriv inn Database kolonnenavnet."; +$LANG["validation_no_db_hostname"] = "Vennligst skriv inn database vertsnavn."; +$LANG["validation_no_db_name"] = "Vennligst oppgi databasenavnet."; +$LANG["validation_no_db_username"] = "Vennligst fyll inn databasen for kontoen."; +$LANG["validation_no_default_client_theme"] = "Vennligst velg standard tema for alle nye kundekontoer."; +$LANG["validation_no_default_language"] = "Velg standard språk for installasjonen av Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Angi standard økten tidsavbrudd for brukerkontoer."; +$LANG["validation_no_display_text"] = "Vennligst skriv inn Display Tekst for hvert felt."; +$LANG["validation_no_display_text_single"] = "Vennligst skriv inn Display Tekst verdi."; +$LANG["validation_no_edit_submission_page_label"] = "Oppgi Edit Submission siden etiketten."; +$LANG["validation_no_email"] = "Vennligst skriv inn din epost adresse. "; +$LANG["validation_no_email_config_field"] = "Vennligst angi hvilken form feltet er e-feltet."; +$LANG["validation_no_email_content"] = "Skriv inn e-innhold for minst ett av formatene (HTML eller tekst)."; +$LANG["validation_no_email_from_field"] = "Please e 'fra feltet."; +$LANG["validation_no_email_template_name"] = "Skriv inn e malnavnet."; +$LANG["validation_no_email_template_view_id"] = "Velg Vis som denne e-malen skal kartlegges."; +$LANG["validation_no_email_template_view_mapping_value"] = "Oppgi når e-posten skal sendes."; +$LANG["validation_no_enabled_themes"] = "Sørg for at minst ett tema er aktivert."; +$LANG["validation_no_first_name"] = "Vennligst skriv inn ditt fornavn."; +$LANG["validation_no_form_field_name"] = "Fyll inn all form feltnavn."; +$LANG["validation_no_form_field_single"] = "Vennligst skriv inn skjemafelt verdi."; +$LANG["validation_no_form_id"] = "Skjemaet ID ble ikke spesifisert. Vennligst logg ut og prøv igjen."; +$LANG["validation_no_form_name"] = "Fyll inn skjemaet navnet."; +$LANG["validation_no_form_url"] = "Fyll inn skjemaet URL."; +$LANG["validation_no_last_name"] = "Vennligst skriv inn ditt etternavn."; +$LANG["validation_no_login_page"] = "Angi hvilken side du vil bli sendt hver gang du logger deg"; +$LANG["validation_no_logout_url"] = "Vennligst fyll inn logout URL."; +$LANG["validation_no_main_email_recipient"] = "Fyll inn minst ett hoved e-mottaker (dvs. ikke en cc eller bcc)."; +$LANG["validation_no_menu"] = "Velg en meny for denne brukerkontoen."; +$LANG["validation_no_menu_id"] = "Velg en meny."; +$LANG["validation_no_num_clients_per_page"] = "Vennligst fyll inn antall kundekontoer per side."; +$LANG["validation_no_num_emails_per_page"] = "Vennligst fyll inn antall e-postmeldinger til listen per side."; +$LANG["validation_no_num_form_fields"] = "Vennligst fyll inn antall felt for skjemaet."; +$LANG["validation_no_num_forms_per_page"] = "Vennligst fyll inn antall skjemaer per side."; +$LANG["validation_no_num_menus_per_page"] = "Vennligst fyll inn antall menyer til listen per side."; +$LANG["validation_no_num_modules_per_page"] = "Vennligst fyll inn antall moduler per side."; +$LANG["validation_no_num_option_lists_per_page"] = "Vennligst fyll inn antall alternativet lister per side."; +$LANG["validation_no_num_submissions_per_page"] = "Vennligst fyll inn antall innsendinger skal vises per side."; +$LANG["validation_no_option_list_name"] = "Vennligst skriv inn alternativ liste navnet."; +$LANG["validation_no_page_titles"] = "Angi standard siden titler for brukerkontoer."; +$LANG["validation_no_password"] = "Vennligst skriv inn ditt passord."; +$LANG["validation_no_program_name"] = "Vennligst skriv inn programnavnet."; +$LANG["validation_no_second_password"] = "Vennligst oppgi passordet."; +$LANG["validation_no_sessions_timeout"] = "Oppgi økten tidsavbrudd."; +$LANG["validation_no_smart_fill_values"] = "Fyll inn skjemaet feltnavnet og nettadressen til skjemaet."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "Ingen kategorier definert"; +$LANG["validation_no_test_email_recipient"] = "Vennligst skriv inn e-postadressen til hvor vi skal sende testen e-post."; +$LANG["validation_no_test_email_submission_id"] = "Vennligst fyll inn underkastelse ID-nummeret."; +$LANG["validation_no_theme"] = "Vennligst velg et tema."; +$LANG["validation_no_theme_swatch"] = "Velg en fargeprøve for det valgte temaet."; +$LANG["validation_no_timezone_offset"] = "Vennligst fyll inn tidssone utlignet."; +$LANG["validation_no_titles"] = "Oppgi sidetitlar."; +$LANG["validation_no_two_column_names"] = "Beklager, du kan ikke delta i samme database kolonnen navn to ganger."; +$LANG["validation_no_ui_language"] = "Velg et språk for grensesnitt."; +$LANG["validation_no_url"] = "Skriv inn en nettadresse."; +$LANG["validation_no_username"] = "Vennligst skriv inn ditt brukernavn."; +$LANG["validation_no_username_or_js"] = "Du må angi brukernavnet ditt. Vennligst aktiver JavaScript i nettleseren."; +$LANG["validation_no_view_fields"] = "Ditt Se inneholder ikke noe felt! Du må tildele minst ett felt for at det skal bli noe å vise i visningen."; +$LANG["validation_no_view_fields_selected"] = "Velg ett eller flere felt for å legge til Vis."; +$LANG["validation_no_view_name"] = "Fyll inn navnet på visningen."; +$LANG["validation_num_rows_to_add"] = "Angi antallet rader som skal legge til."; +$LANG["validation_option_list_name_taken"] = "Beklager, er dette alternativet Listen navnet allerede tatt. Vennligst velg et nytt navn."; +$LANG["validation_password_in_password_history"] = "For sikkerhet, kan du ikke skrive inn det samme passordet som noen av de siste {\$history_size} passord. Vennligst skriv inn et annet passord."; +$LANG["validation_passwords_different"] = "Kontroller at passordene er de samme."; +$LANG["validation_please_enter_search_date_range"] = "Velg søk datoperiode."; +$LANG["validation_please_enter_search_keyword"] = "Fyll inn søkeord."; +$LANG["validation_select_field_type"] = "Velg et felt type."; +$LANG["validation_select_submissions_to_copy"] = "Vennligst velg de innleveringene du vil kopiere."; +$LANG["validation_select_submissions_to_delete"] = "Velg de anførsler du ønsker å slette."; +$LANG["validation_smart_fill_cannot_fill"] = "Beklager, vi kunne ikke fylle dette feltet."; +$LANG["validation_smart_fill_invalid_field_type"] = "Vi kunne ikke finne et felt, men det er ikke en dropdown, sjekkheftet eller radio gruppe."; +$LANG["validation_smart_fill_no_field_found"] = "Beklager, vi kunne ikke finne et skjema felt med at navnet på siden spesifisert."; +$LANG["validation_smart_fill_no_page"] = "Vennligst finn siden som inneholder feltet du ønsker å Smart Fyll."; +$LANG["validation_smart_fill_upload_all_pages"] = "Last opp alle sidene i skjemaet."; +$LANG["validation_upload_folder_not_writable"] = "Denne midlertidige laste opp mappen angitt av PHP installasjonen er ikke skrivbar. Inntil dette er løst, kan ikke filene lastes opp via skjema Tools (eller andre PHP program). Ta kontakt med din leverandør."; +$LANG["validation_upload_html_files_only"] = "Last bare opp HTML-filer."; +$LANG["validation_username_taken"] = "Beklager, det brukernavnet allerede tatt. Vennligst oppgi et annet brukernavn."; +$LANG["validation_wrong_password"] = "Beklager, at passordet ikke samsvarer."; +$LANG["word_about"] = "Om"; +$LANG["word_access"] = "Tilgang"; +$LANG["word_account"] = "Konto"; +$LANG["word_account_sp"] = "Konto(er)"; +$LANG["word_accounts"] = "Kontoer"; +$LANG["word_action"] = "Handling"; +$LANG["word_active"] = "Aktiv"; +$LANG["word_add"] = "Legg til"; +$LANG["word_add_rightarrow"] = "Legg til »"; +$LANG["word_add_uc_rightarrow"] = "Legg til »"; +$LANG["word_administration"] = "Administrasjon"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Etter"; +$LANG["word_aquamarine"] = "Akvamarin"; +$LANG["word_asc"] = "Stigende"; +$LANG["word_author"] = "Forfatter"; +$LANG["word_author_c"] = "Forfatter:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« tilbake"; +$LANG["word_bcc_c"] = "Blindkopi:"; +$LANG["word_before"] = "Før"; +$LANG["word_benefits"] = "Fordeler"; +$LANG["word_blue"] = "Blå"; +$LANG["word_cancel"] = "Avbryt"; +$LANG["word_cc_c"] = "Kopi:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Avmerkingsboks"; +$LANG["word_checklist"] = "Sjekkliste"; +$LANG["word_client"] = "Klient"; +$LANG["word_client_c"] = "Klienter:"; +$LANG["word_clients"] = "Klienter"; +$LANG["word_close"] = "LUKK"; +$LANG["word_code"] = "Kode"; +$LANG["word_column"] = "Kolonne"; +$LANG["word_columns"] = "Kolonner"; +$LANG["word_columns_sp"] = "Column (s)"; +$LANG["word_complete"] = "FERDIG"; +$LANG["word_configuration"] = "Konfigurasjon"; +$LANG["word_content"] = "Innhold"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Fortsett »"; +$LANG["word_copy"] = "Kopiere"; +$LANG["word_custom"] = "Egendefinert"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Dato"; +$LANG["word_debugging_c"] = "Feilsøking:"; +$LANG["word_delete"] = "SLETT"; +$LANG["word_desc"] = "Synkende"; +$LANG["word_direct"] = "Direkte"; +$LANG["word_disabled"] = "Deaktivert"; +$LANG["word_documentation"] = "Dokumentasjon"; +$LANG["word_done"] = "Ferdig"; +$LANG["word_drawbacks"] = "Tilbaketrukket"; +$LANG["word_dropdown"] = "Rullegardinliste"; +$LANG["word_edit"] = "REDIGER"; +$LANG["word_editable"] = "Redigerbar"; +$LANG["word_email"] = "EPOST"; +$LANG["word_email_c"] = "Epost:"; +$LANG["word_emails"] = "Eposter"; +$LANG["word_enabled"] = "Aktiver"; +$LANG["word_equals"] = "Er lik"; +$LANG["word_error"] = "Error"; +$LANG["word_error_c"] = "Feil:"; +$LANG["word_examples_c"] = "Eksempel:"; +$LANG["word_external"] = "Ekstern"; +$LANG["word_fail"] = "Feil"; +$LANG["word_field"] = "Felt"; +$LANG["word_field_sp"] = "Felt(er)"; +$LANG["word_fields"] = "Felter"; +$LANG["word_fields_sp"] = "Field (s)"; +$LANG["word_file"] = "Fil"; +$LANG["word_file_b_uc"] = "[FIL]"; +$LANG["word_files"] = "Filer"; +$LANG["word_filters"] = "Filtere"; +$LANG["word_filters_sp"] = "Filter (s)"; +$LANG["word_for"] = "etter"; +$LANG["word_form"] = "Skjema"; +$LANG["word_form_c"] = "Skjema:"; +$LANG["word_formatting"] = "Formatering"; +$LANG["word_forms"] = "Skjemaer"; +$LANG["word_found"] = "Funnet"; +$LANG["word_from"] = "Fra"; +$LANG["word_from_c"] = "Fra:"; +$LANG["word_general"] = "Generell"; +$LANG["word_green"] = "Grønn"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Høyde"; +$LANG["word_help"] = "Hjelp"; +$LANG["word_hidden"] = "Skjulte"; +$LANG["word_highlight"] = "Uthev"; +$LANG["word_horizontal"] = "Horisontal"; +$LANG["word_hour"] = "Time"; +$LANG["word_hours"] = "Timer"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Bilde"; +$LANG["word_incomplete"] = "UFERDIG"; +$LANG["word_install"] = "Installer"; +$LANG["word_installation"] = "Installasjon"; +$LANG["word_internal"] = "Intern"; +$LANG["word_language"] = "Språk"; +$LANG["word_large"] = "Stor"; +$LANG["word_like"] = "Like"; +$LANG["word_login"] = "LOGG INN"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logg ut"; +$LANG["word_main"] = "Hoved"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Meny"; +$LANG["word_menus"] = "Menyer"; +$LANG["word_minutes"] = "Minutter"; +$LANG["word_misc"] = "Diverse"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Moduler"; +$LANG["word_na"] = "Ikke tilgjengelig"; +$LANG["word_name"] = "Navn"; +$LANG["word_name_c"] = "Navn:"; +$LANG["word_never"] = "Aldri"; +$LANG["word_next_rightarrow"] = "Neste »"; +$LANG["word_next_step_rightarrow"] = "NESTE STEG »"; +$LANG["word_no"] = "Nei"; +$LANG["word_none"] = "Ingen"; +$LANG["word_notes"] = "Notater"; +$LANG["word_notification"] = "Merknader"; +$LANG["word_number"] = "Nummer"; +$LANG["word_off"] = "Av"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "På"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operatør"; +$LANG["word_options"] = "Egenskaper"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Rekkefølge"; +$LANG["word_other"] = "Andre"; +$LANG["word_other_c"] = "Andre:"; +$LANG["word_page"] = "Side"; +$LANG["word_page_c"] = "Side:"; +$LANG["word_pass"] = "Hopp over"; +$LANG["word_password"] = "Passord"; +$LANG["word_password_c"] = "Passord:"; +$LANG["word_pending"] = "Venter"; +$LANG["word_permissions"] = "Tillatelse"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« forrige"; +$LANG["word_private"] = "Privat"; +$LANG["word_public"] = "Offentlig"; +$LANG["word_purple"] = "Purple"; +$LANG["word_recipient"] = "Mottaker"; +$LANG["word_recipient_sp"] = "Mottaker(e)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Fjern"; +$LANG["word_remove_uc_leftarrow"] = "« FJERN"; +$LANG["word_reply_to"] = "Svar"; +$LANG["word_reply_to_c"] = "Svar:"; +$LANG["word_required"] = "Påkrevd"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Løst"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rad"; +$LANG["word_search"] = "Søk"; +$LANG["word_searchable"] = "Søkbar"; +$LANG["word_select"] = "Velg"; +$LANG["word_setting"] = "Instilling"; +$LANG["word_settings"] = "INSTILLINGER"; +$LANG["word_show"] = "Vis"; +$LANG["word_size"] = "Størrelse"; +$LANG["word_skipped"] = "Hoppet over"; +$LANG["word_small"] = "Liten"; +$LANG["word_solution"] = "Oppløsning"; +$LANG["word_sortable"] = "Sorterbar"; +$LANG["word_start"] = "Begynn"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Bokstaver"; +$LANG["word_subject"] = "Emne"; +$LANG["word_subject_c"] = "Emne"; +$LANG["word_submenu"] = "Undermeny"; +$LANG["word_submission"] = "Innsending"; +$LANG["word_submissions"] = "Innsendinger"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Tekst"; +$LANG["word_textarea"] = "Tekstfelt"; +$LANG["word_textbox"] = "Tekstboks"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temaer"; +$LANG["word_time"] = "Tid"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "I dag"; +$LANG["word_truncate_q"] = "Avkort?"; +$LANG["word_uninstall"] = "Avinstaller"; +$LANG["word_unknown"] = "Ukjent"; +$LANG["word_update"] = "OPPDATER"; +$LANG["word_upgrade"] = "Oppgrader"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Bruker"; +$LANG["word_username"] = "Brukernavn"; +$LANG["word_username_c"] = "Brukernavn:"; +$LANG["word_validation"] = "Validering"; +$LANG["word_value"] = "Verdi"; +$LANG["word_value_sp"] = "Verdi(er)"; +$LANG["word_verified"] = "Godkjent"; +$LANG["word_verify"] = "Bekreft"; +$LANG["word_version"] = "Versjon"; +$LANG["word_vertical"] = "Vertikal"; +$LANG["word_view"] = "Se på"; +$LANG["word_views"] = "Vist"; +$LANG["word_warning"] = "Advarsel!"; +$LANG["word_warning_c"] = "Advarsel:"; +$LANG["word_web"] = "Internett"; +$LANG["word_welcome"] = "Velkommen:"; +$LANG["word_width_c"] = "bredde:"; +$LANG["word_words"] = "Ord"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Gul"; +$LANG["word_yes"] = "Ja"; \ No newline at end of file diff --git a/global/lang/pl.php b/global/lang/pl.php new file mode 100644 index 00000000..74f819bb --- /dev/null +++ b/global/lang/pl.php @@ -0,0 +1,1219 @@ +Uwaga! Wybrałeś {\$num_selected_on_page} uwagi na tę stronę i {\$num_selected_on_other_pages} na innych stronach. Proszę wybrać jedną z następujących opcji:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Uwaga! Nie wybrano żadnych wyjaśnień na tej stronie, ale wybrano {\$num_selected_on_other_pages} na innych stronach. Potwierdź, że chcesz usunąć te wnioski.
    "; +$LANG["confirm_delete_view"] = "Czy na pewno chcesz usunąć tę View?"; +$LANG["confirm_refresh_page"] = "Czy na pewno chcesz odświeżyć stronę? Spowoduje to utratę wszystkich wprowadzonych zmian."; +$LANG["confirm_save_change_before_redirect"] = "Jednego lub więcej pól zostały zaktualizowane. Czy chcesz zapisać zmiany przed przekierowaniem?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Czy na pewno chcesz Smart Fill nazw kolumn bazy danych? To nadpisze istniejące wartości."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Ta opcja auto-generuje nazwy kolumn bazy danych na podstawie pól Text Display, tak, aby zawartość tabeli bazy danych są łatwiejsze do odczytania."; +$LANG["confirm_smart_fill_display_names"] = "Czy na pewno chcesz Smart Fill Wyświetlane nazwy? To nadpisze istniejące wartości."; +$LANG["confirm_ungroup_option_list"] = "Czy na pewno chcesz rozgrupować tej liście opcji? Wszystkie opcje będą skupionych w jednym, lista rozgrupować."; +$LANG["confirm_uninstall_module"] = "Czy na pewno chcesz odinstalować ten moduł? Wszystkie modułu dane zostaną utracone."; +$LANG["date_AM"] = "przed południem"; +$LANG["date_Fri"] = "Pt"; +$LANG["date_Friday"] = "Piątek"; +$LANG["date_Mon"] = "Pon"; +$LANG["date_Monday"] = "Poniedziałek"; +$LANG["date_PM"] = "po południu"; +$LANG["date_Sat"] = "So"; +$LANG["date_Saturday"] = "Sobota"; +$LANG["date_Sun"] = "Nd"; +$LANG["date_Sunday"] = "Niedziela"; +$LANG["date_Thu"] = "Czw"; +$LANG["date_Thursday"] = "Czwartek"; +$LANG["date_Tue"] = "Wt"; +$LANG["date_Tuesday"] = "Wtorek"; +$LANG["date_Wed"] = "Śr"; +$LANG["date_Wednesday"] = "Środa"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Kwiecień"; +$LANG["date_month_August"] = "Sierpień"; +$LANG["date_month_December"] = "Grudzień"; +$LANG["date_month_February"] = "Luty"; +$LANG["date_month_January"] = "Styczeń"; +$LANG["date_month_July"] = "Lipiec"; +$LANG["date_month_June"] = "Czerwiec"; +$LANG["date_month_March"] = "Marzec"; +$LANG["date_month_May"] = "Maj"; +$LANG["date_month_November"] = "Listopad"; +$LANG["date_month_October"] = "Październik"; +$LANG["date_month_September"] = "Wrzesień"; +$LANG["date_month_short_Apr"] = "Kwiecień"; +$LANG["date_month_short_Aug"] = "Sierpień"; +$LANG["date_month_short_Dec"] = "Grudzień"; +$LANG["date_month_short_Feb"] = "Luty"; +$LANG["date_month_short_Jan"] = "Styczeń"; +$LANG["date_month_short_Jul"] = "Lipiec"; +$LANG["date_month_short_Jun"] = "Czerwiec"; +$LANG["date_month_short_Mar"] = "Marzec"; +$LANG["date_month_short_May"] = "Może"; +$LANG["date_month_short_Nov"] = "Listopad"; +$LANG["date_month_short_Oct"] = "Październik"; +$LANG["date_month_short_Sep"] = "Wrzesień"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Użytkownik konta został usunięty."; +$LANG["notify_account_updated"] = "Twoje konto zostało zaktualizowane."; +$LANG["notify_add_display_values"] = "Dodaj wyświetlania wartości"; +$LANG["notify_admin_menu_updated"] = "Menu administracyjnego została zaktualizowana."; +$LANG["notify_admin_theme_overridden"] = "Administratora temat został ręcznej."; +$LANG["notify_allow_url_fopen_not_set"] = "Niestety, test ten nie może być uruchomiony na serwerze. Wymaga allow_url_fopen być ustawiona na 1 w pliku php.ini. To ustawienie pozwala PHP dostęp do plików przez adres URL, który jest potrzebny do wykonania tego badania. Można go przetestować ręcznie przesłać plik do tego folderu za pomocą protokołu FTP, a następnie stara się uzyskać do niego dostęp w adresie URL po dostarczeniu."; +$LANG["notify_change_temp_password"] = "Wystarczy zalogować się jako hasło tymczasowe. Należy zresetować hasło teraz!"; +$LANG["notify_click_to_edit_new_submission"] = "Kliknij tutaj, aby edytować nowe zgłoszenie."; +$LANG["notify_client_account_menus_updated"] = "Konto klienta (s) została zaktualizowana do {\$menu_name} menu. Możesz teraz usunąć menu, które wcześniej były związane z rachunku (-ach)."; +$LANG["notify_client_account_not_updated"] = "Nie można zaktualizować konta klienta."; +$LANG["notify_client_account_themes_updated"] = "Konto klienta (s) została zaktualizowana do {\$theme} tematu. Możesz teraz wyłączyć temat wcześniej związany z kontem (s)."; +$LANG["notify_client_account_updated"] = "Konto klienta zostało zaktualizowane."; +$LANG["notify_client_menu_deleted"] = "Menu klienta została usunięta."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Menu zostało usunięte, ale po kontach klientów już nie ma menu! Musisz uaktualnić następujące rachunki:"; +$LANG["notify_client_menu_updated"] = "Menu klienta zostało zaktualizowane."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Niestety, menu po prostu próbował usunąć jest już wykorzystywany przez klientów wymienionych poniżej. Aby usunąć menu, trzeba najpierw przypisać klientów do innych menu. Kliknij na nazwę klienta, aby edytować, że indywidualne konta lub przypisanie wszystkich kont do innego menu, za pomocą rozwijanej poniżej."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Niestety, jeden z tematów po prostu wyłączone są już używane przez następujących kont klientów. Aby wyłączyć temat trzeba najpierw przypisać każdego klienta do innego tematu. Kliknij na nazwę klienta, aby edytować, że indywidualne konta lub przypisać wszystkie rachunki do tematu przy użyciu poniższej listy rozwijanej."; +$LANG["notify_edit_email_fields_link"] = "Kliknij tutaj, aby określić, które pola formularza są email pola, więc można kierować ich w szablony e-mail."; +$LANG["notify_edit_field_new_field"] = "Jest to nowe pole. Musisz aktualizacja strony głównej, zanim będzie mógł w pełni edycję tego pola."; +$LANG["notify_edit_option_list_after_save"] = "Należy wybrać opcję Lista, a następnie Zapisz zmiany, zanim będzie mógł go edytować."; +$LANG["notify_email_field_config_deleted"] = "E-mail konfiguracja została usunięta."; +$LANG["notify_email_fields_not_updated"] = "Niestety, nie możemy aktualizować pola formularza."; +$LANG["notify_email_fields_updated"] = "E pola zostały zaktualizowane."; +$LANG["notify_email_not_sent"] = "Przykro nam lecz e-mail nie może być przesłany. Prosimy o kontakt z administratorem strony na poniższy adres."; +$LANG["notify_email_not_sent_c"] = "Przykro nam, e-mail nie mogła zostać wysłana:"; +$LANG["notify_email_sent"] = "E-mail (s) zostały wysłane."; +$LANG["notify_email_template_deleted"] = "E-mail szablon został usunięty."; +$LANG["notify_email_template_updated"] = "E-mail szablon został zaktualizowany."; +$LANG["notify_enabled_module_list_updated"] = "Lista aktywna modułów został zaktualizowany."; +$LANG["notify_error_saving_fields"] = "Wystąpił błąd podczas zapisywania pól."; +$LANG["notify_field_changes_saved"] = "Zmiany w zakresie (i) zostały zapisane."; +$LANG["notify_field_options_smart_filled"] = "Opcje pola zostały wypełnione inteligentne."; +$LANG["notify_field_selected"] = "Pole zostało wybrane. Kliknij tutaj, aby wrócić do głównej listy pól."; +$LANG["notify_field_updated"] = "To pole zostało zaktualizowane."; +$LANG["notify_file_not_uploaded"] = "Nie można przesłać pliku."; +$LANG["notify_file_uploaded"] = "Przesłano plik."; +$LANG["notify_filters_not_updated"] = "Wystąpił błąd podczas aktualizowania tego klienta filtry złożenia."; +$LANG["notify_filters_updated"] = "Filtry przesyłania danych dla danego klienta zostały zaktualizowane."; +$LANG["notify_folder_correct_permissions"] = "Ten folder ma wymagane prawa dostępu."; +$LANG["notify_folder_url_match"] = "Folder URL wyświetlane poprawnie meczu."; +$LANG["notify_folder_url_no_access"] = "Ten test nie może być wykonywana, ponieważ PHP nie był w stanie uzyskać dostępu do adresu URL. Jest to zwykle spowodowane przez adres URL jest chroniony hasłem za pomocą pliku. Htaccess."; +$LANG["notify_folder_url_no_match"] = "Ten folder kombinacja adresu URL nie wydają się być identyczne."; +$LANG["notify_folder_url_unknown_error"] = "Wystąpił nieznany błąd. Można go przetestować ręcznie przesłać plik do tego folderu za pomocą protokołu FTP, a następnie stara się uzyskać do niego dostęp w adresie URL po dostarczeniu."; +$LANG["notify_form_access_type_email_info"] = "Formularz ten typ dostępu administratora, więc klienci nie mają dostępu do niego i nie są wymienione w poniższej listy rozwijanej."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Przepraszam, że formularz z ID nie istnieje."; +$LANG["notify_form_field_not_added"] = "Pola formularza '{\$fieldname}' nie mógł zostać dodany."; +$LANG["notify_form_field_options_updated"] = "Opcje pola formularza zostały zaktualizowane."; +$LANG["notify_form_field_removed"] = "Pole formularza zostało usunięte."; +$LANG["notify_form_fields_removed"] = "Pola formularza zostały usunięte."; +$LANG["notify_form_not_updated_notify_admin"] = "Formularz nie został zaktualizowany. Prosimy o kontakt z administratorem witryny, aby zgłosić problem."; +$LANG["notify_form_settings_updated"] = "Twoje ustawienia postaci zostały pomyślnie zaktualizowane."; +$LANG["notify_form_submission_updated"] = "Przesłanie danych formularza zostało zaktualizowane."; +$LANG["notify_form_tabs_updated"] = "Karty zostały zaktualizowane."; +$LANG["notify_form_updated"] = "Formularz został zaktualizowany."; +$LANG["notify_form_views_updated"] = "Wyświetleń postaci zostały zaktualizowane."; +$LANG["notify_install_invalid_db_info"] = "Niestety, nie udało nam się połączyć z bazą danych przy użyciu informacji dostarczonych. Komunikat o błędzie w bazie zwróciło to: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Formularz został stworzony! Możesz skonfigurować formularz za pośrednictwem tych kart."; +$LANG["notify_invalid_account_information_in_sessions"] = "Informacje o kontach przechowywane w sesji jest nieprawidłowy. Zaloguj się ponownie poniżej."; +$LANG["notify_invalid_license_key"] = "Przykro nam, że nie wydaje się być klucz licencyjny. Prosimy spróbować wprowadzić go ponownie."; +$LANG["notify_invalid_permissions"] = "Nie masz uprawnień dostępu do tej strony. Zostałeś wylogowany."; +$LANG["notify_invalid_search_dates"] = "Proszę używać datepicker, aby wprowadzić poprawną datę lub daty."; +$LANG["notify_invalid_upload_folder"] = "Upload folderu jest nieprawidłowa lub nie jest zapisywalny."; +$LANG["notify_lang_list_updated"] = "Listy dostępnych języków interfejsu użytkownika został zaktualizowany."; +$LANG["notify_login_info_emailed"] = "Twoje dane logowania zostały przesłane w e-mailu do Ciebie."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Niestety, moduł ten jest już zainstalowany!"; +$LANG["notify_module_installed"] = "Moduł został zainstalowany. Kliknij tutaj, aby wybrać moduł."; +$LANG["notify_module_list_updated"] = "Moduł lista została zaktualizowana."; +$LANG["notify_module_uninstalled"] = "Moduł został odinstalowany."; +$LANG["notify_module_updated"] = "{\$module} moduł został zaktualizowany do {\$version}. Kliknij tutaj, aby wybrać moduł ."; +$LANG["notify_multi_field_selected"] = "Pole zostało wybrane. Kliknij tutaj, aby wyświetlić i edytować opcje dziedzinie."; +$LANG["notify_multi_field_updated"] = "To pole zostało zaktualizowane. Będziesz mieć możliwość konfigurowania opcji pola po utworzeniu formy."; +$LANG["notify_multiple_fields_found"] = "Wiele elementów było znaleźć o tej nazwie pola ({\$field_name}). Ten problem może wystąpić, jeśli strona zawiera więcej niż jeden formularz lub jeśli przypadkiem tytuł jednej z formularzy w innym to samo. Proszę wybrać ten, który chcesz z poniższej listy."; +$LANG["notify_new_default_view_created"] = "Nowy, domyślny widok zawierający wszystkie pola formularza został utworzony."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "Nr konta użytkownika została znaleziona w sesji. Zaloguj się ponownie poniżej."; +$LANG["notify_no_api_installed"] = "Nie masz zainstalowanego API"; +$LANG["notify_no_client_permissions"] = "Nie ma ustawienia dostępne do edycji."; +$LANG["notify_no_email_template_selected"] = "Proszę wybrać z szablonu."; +$LANG["notify_no_emails_defined"] = "Brak e-maile zostały określone dla tej formy. Aby dodać nowe, kliknij przycisk poniżej."; +$LANG["notify_no_field_settings"] = "Ten typ pola nie zawiera żadnych dodatkowych ustawień."; +$LANG["notify_no_fields_in_tab"] = "Ta karta nie zawiera żadnych pól."; +$LANG["notify_no_option_lists"] = "Nie ma opcji listy określone. Kliknij przycisk, aby utworzyć nowy."; +$LANG["notify_no_test_submission"] = "Rodzaj Narzędzia nie otrzymała skuteczne złożenie testowa."; +$LANG["notify_no_user_email_fields_configured"] = "Uwaga: jeśli chcesz wysłać e-maila pod dowolny adres, jaki był zawarty w formie, trzeba najpierw skonfigurować pola formularza e-mail."; +$LANG["notify_no_views"] = "Formularza nie ma żadnych Wyświetleń skonfigurować! Będziesz potrzebował co najmniej jednego Zobacz w celu zarządzania danymi formularz."; +$LANG["notify_no_views_assigned_to_client_form"] = "Wydaje się, że konto użytkownika nie została przypisana do każdego wyświetleń formie, więc nie będziesz mógł zobaczyć danych. Prosimy o kontakt z administratorem w celu uzyskania dalszej pomocy."; +$LANG["notify_no_views_defined"] = "Nie masz żadnych Wyświetleń zdefiniowane. Nie będziesz mógł zobaczyć formularza zgłoszenia, chyba że co najmniej jeden View jest tworzone. Kliknij przycisk, aby utworzyć widok domyślny."; +$LANG["notify_option_list_deleted"] = "Lista opcja została usunięta."; +$LANG["notify_option_list_updated"] = "Lista opcji została zaktualizowana."; +$LANG["notify_public_form_omit_list_updated"] = "Klient pominąć lista ta forma została zaktualizowana."; +$LANG["notify_public_view_omit_list_updated"] = "Klient pominąć lista ta została zaktualizowana."; +$LANG["notify_required_admin_pages"] = "Na kolejnych stronach są wymagane w menu administratora: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Niestety, nie było żadnej działalności a więc musieliśmy wylogowanie. Zaloguj się ponownie poniżej."; +$LANG["notify_setup_options_updated"] = "Zaktualizowano opcje ustawień."; +$LANG["notify_smart_fill_field_not_found"] = "Nie udało nam się znaleźć pole o tej nazwie ({\$field_name}) w postaci (y) określone. Można ręcznie ustawić typ pola poniżej, lub kliknij przycisk Przejdź do edycji tej dziedzinie później."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Plik (y) zostały pomyślnie załadowane. Spróbuj kliknąć przycisk Smart Fill, aby spróbować ponownie. Jeżeli ten krok się nie powiedzie, trzeba będzie pominąć ten krok i skonfigurować pola formularza manally później."; +$LANG["notify_smart_fill_submitted"] = "Formularz został przesłany. W zależności od rozmiaru i formy liczby opcji pola, może to zająć trochę czasu."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Niestety, jeden lub więcej plików, które nie mogły być wprowadzone wysłał. Będziesz musiał pominąć ten krok i skonfigurować pola ręcznie."; +$LANG["notify_submission_and_files_deleted"] = "Składania i dowolnego pliku (ów) z tym związane zostały usunięte pomyślnie."; +$LANG["notify_submission_copied"] = "Zgłoszenie zostało skopiowane."; +$LANG["notify_submission_copied_edit"] = "Zgłoszenie zostało skopiowane. Możesz edytować poniżej."; +$LANG["notify_submission_deleted"] = "Usunięto przesłanie danych."; +$LANG["notify_submission_deleted_with_problems"] = "Składania został usunięty, ale następujące problemy napotkane podczas próby usunąć plik (ów):"; +$LANG["notify_submission_id_not_found"] = "Nie odnaleziono ID-u przesłania danych."; +$LANG["notify_submission_not_updated"] = "Nie można zaktualizować przesłania danych."; +$LANG["notify_submissions_and_files_deleted"] = "Zgłoszenia oraz wszelkie file (s) związane z nich została usunięta."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} zgłoszeń zostało skopiowanych."; +$LANG["notify_submissions_deleted"] = "Usunięto przesłania danych."; +$LANG["notify_submissions_deleted_with_problems"] = "Wniosków zostało usunięte, ale następujące problemy napotkane podczas próby usunąć plik (ów):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Twój testowy e-mail nie mógł być wysłany."; +$LANG["notify_theme_cache_folder_not_writable"] = "Temat ten folder cache nie jest zapisywalny. W celu umożliwienia tego tematu, {\$folder} folder musi mieć pełne uprawnienia do odczytu i zapisu."; +$LANG["notify_theme_list_updated"] = "Lista temat został zaktualizowany."; +$LANG["notify_themes_settings_updated"] = "Ustawienia temat zostały zaktualizowane."; +$LANG["notify_view_deleted"] = "Zobacz została usunięta."; +$LANG["notify_view_group_deleted"] = "Widok grupy został usunięty."; +$LANG["notify_view_missing_columns"] = "Oops! Przepraszamy, ten widok nie został w pełni jeszcze skonfigurowane."; +$LANG["notify_view_missing_columns_admin_fix"] = "Kliknij tutaj, aby określić, które pola powinny być wyświetlane jako kolumny na tej stronie."; +$LANG["notify_view_updated"] = "Zobacz została zaktualizowana."; +$LANG["notify_your_email_sent"] = "Twój e-mail został wysłany."; +$LANG["phrase_100_per_page"] = "100 na stronę"; +$LANG["phrase_10_per_page"] = "10 na stronę"; +$LANG["phrase_15_per_page"] = "15 na stronę"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 na stronę"; +$LANG["phrase_25_per_page"] = "25 na stronę"; +$LANG["phrase_2_code"] = "2. Kod"; +$LANG["phrase_2_columns"] = "2 Kolumny"; +$LANG["phrase_2chars"] = "2 znaki"; +$LANG["phrase_3_columns"] = "3 kolumny"; +$LANG["phrase_4_columns"] = "4 kolumny"; +$LANG["phrase_50_per_page"] = "50 na stronę"; +$LANG["phrase_accepting_submissions"] = "(przyjmowanie wniosków)"; +$LANG["phrase_access_admin_account_c"] = "Możesz uzyskać dostęp do konta administracji tutaj:"; +$LANG["phrase_access_type"] = "Typ dostępu"; +$LANG["phrase_account_info"] = "Informacje o koncie"; +$LANG["phrase_account_settings"] = "Ustawienia konta"; +$LANG["phrase_action_needed"] = "Konieczne działania"; +$LANG["phrase_add_client"] = "DODAJ KLIENTA"; +$LANG["phrase_add_client_menu"] = "Dodaj klienta Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Dodaj ustawienia domyślne »"; +$LANG["phrase_add_field"] = "Dodaj pole"; +$LANG["phrase_add_fields"] = "DODAJ POLA"; +$LANG["phrase_add_fields_rightarrow"] = "Dodaj Field (s) »"; +$LANG["phrase_add_form"] = "Dodaj Formularz"; +$LANG["phrase_add_form_external"] = "Dodaj Form - zewnętrzne"; +$LANG["phrase_add_form_internal"] = "Dodaj Formularz - Wewnętrzne"; +$LANG["phrase_add_new_group_rightarrow"] = "Dodaj nową grupę »"; +$LANG["phrase_add_num_rows"] = "Dodaj {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Przycisk Dodaj Submission"; +$LANG["phrase_add_view_rightarrow"] = "Dodaj Zobacz »"; +$LANG["phrase_adding_multi_page_form"] = "Dodawanie wielu postaci strony z API"; +$LANG["phrase_adding_single_page_form"] = "Dodawanie pojedynczych postaci strony z API"; +$LANG["phrase_admin_menu"] = "Menu Administratora"; +$LANG["phrase_admin_only"] = "Administrator Tylko"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Ustawienia zaawansowane »"; +$LANG["phrase_all_X_results_selected"] = "Wszystkie {\$numresults} Wyniki Wybrane"; +$LANG["phrase_all_clients"] = "Wszyscy klienci"; +$LANG["phrase_all_clients_except_c"] = "Wszyscy klienci, z wyjątkiem:"; +$LANG["phrase_all_clients_have_access"] = "(wszyscy klienci mają dostęp)"; +$LANG["phrase_all_fields"] = "Wszystkie pola"; +$LANG["phrase_all_fields_displayed"] = "Wszystkie pola są wyświetlane"; +$LANG["phrase_all_statuses"] = "Wszystkie stany"; +$LANG["phrase_all_submissions"] = "Wszystkie zgłoszenia"; +$LANG["phrase_allow_fields_edited"] = "Zgoda na polach do edycji"; +$LANG["phrase_alphanumeric"] = "Alfanumeryczne (AZ, 0-9)"; +$LANG["phrase_api_version"] = "Wersja API"; +$LANG["phrase_apply_timezone_offset"] = "Zastosuj Timezone offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Przypisywanie wszystkich wymienionych kont klientów do {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Przypisywanie wszystkich wymienionych kont klientów do {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Na koniec"; +$LANG["phrase_at_start"] = "Na Początek"; +$LANG["phrase_author_link"] = "Link Autor"; +$LANG["phrase_auto_disable_account"] = "Auto-wyłączyć konto po nieudanych prób zalogowania #"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Dostępni klienci"; +$LANG["phrase_available_fields"] = "Dostępne pola"; +$LANG["phrase_available_option_lists"] = "Opcja dostępna listy"; +$LANG["phrase_available_swatches"] = "Dostępny Próbki"; +$LANG["phrase_available_swatches_c"] = "Dostępny Próbki:"; +$LANG["phrase_available_tabs"] = "Dostępny Tabs"; +$LANG["phrase_available_views"] = "Dostępne odsłon"; +$LANG["phrase_awaiting_form_submission"] = "Oczekiwanie na złożenie formularza."; +$LANG["phrase_back_to_field_list"] = "«powrót do pola listy"; +$LANG["phrase_back_to_search_results"] = "powrót do wyników wyszukiwania"; +$LANG["phrase_base_view_on"] = "Zobacz Base ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Zmień informacje o logowaniu"; +$LANG["phrase_characters_limit_p"] = "znaków granicznych."; +$LANG["phrase_check_db_settings_try_again"] = "Proszę dokładnie sprawdzić ustawienia bazy danych i kliknij przycisk Kontynuuj ponownie."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Sprawdź URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Wyczyść Pomiń listę"; +$LANG["phrase_client_account_settings"] = "Ustawienia konta klienta"; +$LANG["phrase_client_field"] = "Klient Field"; +$LANG["phrase_client_map_filters"] = "Klient Mapa filtry »"; +$LANG["phrase_client_may_edit"] = "Klient może edytować"; +$LANG["phrase_client_menu"] = "Menu klienta"; +$LANG["phrase_clients_can_access_form"] = "Klienci, którzy mogą przejść do formularza"; +$LANG["phrase_clients_can_access_view"] = "Klienci, którzy mają dostęp Zobacz"; +$LANG["phrase_clients_cannot_access_form"] = "Klienci, którzy nie mogą przejść do formularza"; +$LANG["phrase_clients_cannot_access_view"] = "Klienci, którzy nie mają dostępu Zobacz"; +$LANG["phrase_clients_may_edit"] = "Klienci mogą edytować"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Kod / Markup Pole"; +$LANG["phrase_code_markup_type"] = "Kod / Markup Typ"; +$LANG["phrase_codes_c"] = "Kody błędów:"; +$LANG["phrase_column_width"] = "Szerokość kolumny"; +$LANG["phrase_company_name"] = "Nazwa Firmy"; +$LANG["phrase_configure_form_email_fields"] = "Konfiguracja pól formularza!"; +$LANG["phrase_confirm_folder_url_match"] = "Potwierdź Folder-URL Match"; +$LANG["phrase_connect_rows"] = "Podłącz wiersze"; +$LANG["phrase_copy_email_settings_from"] = "Kopiowanie Email ustawienia ..."; +$LANG["phrase_copy_settings_from"] = "Skopiuj ustawienia ..."; +$LANG["phrase_core_fields"] = "Core Obszary"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Załóż konto"; +$LANG["phrase_create_admin_account"] = "Tworzenie konta administratora"; +$LANG["phrase_create_config_file"] = "Tworzenie pliku config"; +$LANG["phrase_create_database_tables"] = "Tworzenie bazy danych Tabele"; +$LANG["phrase_create_default_view"] = "Tworzenie Default"; +$LANG["phrase_create_file"] = "Tworzenie pliku"; +$LANG["phrase_create_group"] = "Tworzenie grupy"; +$LANG["phrase_create_new_email"] = "Utwórz nowe Email"; +$LANG["phrase_create_new_menu"] = "Tworzenie nowego menu"; +$LANG["phrase_create_new_option_list"] = "Utwórz nową listę opcji"; +$LANG["phrase_create_new_option_list_group"] = "Utwórz nową grupę liście opcji"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Utwórz nową listę opcji »"; +$LANG["phrase_create_new_view"] = "Tworzenie nowego widoku"; +$LANG["phrase_create_new_view_group"] = "Utwórz nową grupę Zobacz"; +$LANG["phrase_custom_display_format"] = "Niestandardowy format wyświetlania"; +$LANG["phrase_custom_recipient"] = "Custom Recipient"; +$LANG["phrase_custom_url"] = "Niestandardowy adres URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Typ Daty"; +$LANG["phrase_database_hostname"] = "Hosta bazy danych"; +$LANG["phrase_database_name"] = "Nazwa bazy danych"; +$LANG["phrase_database_password"] = "Hasło bazy danych"; +$LANG["phrase_database_settings"] = "Ustawienia bazy danych"; +$LANG["phrase_database_setup"] = "Ustawienia bazy danych"; +$LANG["phrase_database_table_prefix"] = "Prefix tabeli bazy danych"; +$LANG["phrase_database_username"] = "Nazwa użytkownika bazy danych"; +$LANG["phrase_date_format"] = "Format daty"; +$LANG["phrase_db_column"] = "Kolumna DB"; +$LANG["phrase_db_setup_page_4"] = "4. Konfiguracja bazy danych"; +$LANG["phrase_default_client_account_theme"] = "Default Theme konta klienta"; +$LANG["phrase_default_date_field_search_value"] = "Data polu Wartość domyślna wyszukiwarka"; +$LANG["phrase_default_language"] = "Domyślny Język"; +$LANG["phrase_default_menu"] = "Domyślne Menu"; +$LANG["phrase_default_sessions_timeout"] = "Domyślny limit czasu sesji"; +$LANG["phrase_default_sort_order"] = "Domyślny porządek sortowania"; +$LANG["phrase_default_tab_label"] = "Dane"; +$LANG["phrase_default_theme"] = "Domyślny motyw"; +$LANG["phrase_default_value"] = "Wartość domyślna"; +$LANG["phrase_default_values"] = "Wartości domyślnych"; +$LANG["phrase_default_values_new_submissions"] = "Wartości domyślnych dla nowych dokumentów"; +$LANG["phrase_delete_field"] = "Usuń pola"; +$LANG["phrase_delete_form"] = "USUŃ FORMULARZ"; +$LANG["phrase_delete_row"] = "Usuń wiersz"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Usuń powiązane pliki podczas usuwania składania"; +$LANG["phrase_delete_view"] = "Usuń Zobacz"; +$LANG["phrase_disconnect_rows"] = "Odłącz wiersze"; +$LANG["phrase_display_email"] = "Wyświetlacz Email"; +$LANG["phrase_display_name"] = "Nazwa Widoku"; +$LANG["phrase_display_text"] = "Tekst Widoku"; +$LANG["phrase_display_value"] = "Wyświetlania wartości"; +$LANG["phrase_edit_admin_menu"] = "Edycja Admin Menu"; +$LANG["phrase_edit_client"] = "Edytuj klienta"; +$LANG["phrase_edit_client_menu"] = "Edytuj Menu klienta"; +$LANG["phrase_edit_email_template"] = "Edycja Email Template"; +$LANG["phrase_edit_field"] = "Edycja pola"; +$LANG["phrase_edit_field_c"] = "Edycja pól:"; +$LANG["phrase_edit_form"] = "Edycja formularza"; +$LANG["phrase_edit_form_access_type_b"] = "[Edytuj typ dostępu formularz]"; +$LANG["phrase_edit_option_list"] = "Edycja listy opcji"; +$LANG["phrase_edit_submission"] = "Edytuj przesłane dane"; +$LANG["phrase_edit_submission_label"] = "Edycja Label Submission"; +$LANG["phrase_edit_view"] = "Edycja Widok"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "USTAWIENIA E-MAIL"; +$LANG["phrase_email_template"] = "Szablon e-maila"; +$LANG["phrase_email_template_name"] = "Email nazwę szablonu"; +$LANG["phrase_error_learn_more"] = "Dowiedz się więcej o tym błędzie."; +$LANG["phrase_error_text_intro"] = "Należy ustalić następujące error (s) i ponownie:"; +$LANG["phrase_errors_learn_more"] = "Kliknij na kodów błędów, aby dowiedzieć się więcej."; +$LANG["phrase_event_trigger"] = "Zdarzeń alarmowych"; +$LANG["phrase_external_form"] = "Formularz zewnętrzne"; +$LANG["phrase_external_form_info"] = "Informacje zewnętrzne Formularz"; +$LANG["phrase_external_your_own_form"] = "Zewnętrzne (własny formularz)"; +$LANG["phrase_field_comments"] = "Komentarze Pole"; +$LANG["phrase_field_label"] = "Pole Etykieta"; +$LANG["phrase_field_options"] = "Opcje pola"; +$LANG["phrase_field_size"] = "Rozmiar pola"; +$LANG["phrase_field_skipped"] = "Pole Pominięto"; +$LANG["phrase_field_specific_settings"] = "Pole ustawień związanych"; +$LANG["phrase_field_type"] = "Rodzaj Pola"; +$LANG["phrase_field_type_no_validation"] = "Nie ma żadnych zasad walidacji dostępne dla tego typu pola."; +$LANG["phrase_field_types"] = "Typy pól"; +$LANG["phrase_field_value"] = "Pole Wartość"; +$LANG["phrase_field_values_to_display_values"] = "Wartości pól »wyświetlania wartości"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Touches"; +$LANG["phrase_finalize_form"] = "Zatwierdź formularz"; +$LANG["phrase_first_name"] = "Imię"; +$LANG["phrase_footer_text"] = "Tekst w Stopce"; +$LANG["phrase_for_any_form_submission"] = "W jakiejkolwiek formie przedstawienia"; +$LANG["phrase_for_view_submissions"] = "Tylko wnioski, które pasują do następujących Zobacz (s)"; +$LANG["phrase_forgot_password"] = "ZAPOMNIAŁEŚ HASŁA?"; +$LANG["phrase_form_already_selected"] = "Rodzaj już wybrane"; +$LANG["phrase_form_email_field_b_c"] = "] [Email pola formularza:"; +$LANG["phrase_form_email_field_configuration"] = "Formularz E-mail Pole Konfiguracja"; +$LANG["phrase_form_email_fields"] = "Pola formularza e-mail"; +$LANG["phrase_form_field"] = "Pole formularza"; +$LANG["phrase_form_field_contents"] = "Zawartość pola formularza"; +$LANG["phrase_form_field_name"] = "Nazwa pola formularza"; +$LANG["phrase_form_field_placeholders"] = "Zastępcze pola formularza"; +$LANG["phrase_form_fields"] = "Pola formularza"; +$LANG["phrase_form_info"] = "Formularze"; +$LANG["phrase_form_info_2"] = "2. Formularze"; +$LANG["phrase_form_list"] = "Lista postaci"; +$LANG["phrase_form_name"] = "Nazwa formularza"; +$LANG["phrase_form_page"] = "Rodzaj strony"; +$LANG["phrase_form_placeholders"] = "FORMULARZ PLACEHOLDERS"; +$LANG["phrase_form_submission"] = "PRZESŁANIE FORMULARZA"; +$LANG["phrase_form_submissions"] = "Formularz zgłoszenia"; +$LANG["phrase_form_type"] = "Rodzaj Rodzaj"; +$LANG["phrase_form_url"] = "URL formularza"; +$LANG["phrase_form_urls"] = "URL formie"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formularze przypisany do konta"; +$LANG["phrase_forms_page_default_message"] = "Formy strony domyślnej wiadomości"; +$LANG["phrase_ft_installation"] = "Rodzaj narzędzia do instalacji skryptu"; +$LANG["phrase_full_width"] = "Full Width"; +$LANG["phrase_getting_started"] = "Pierwsze kroki"; +$LANG["phrase_global_placeholders"] = "GLOBALNE PLACEHOLDERS"; +$LANG["phrase_group_name"] = "Nazwa grupy"; +$LANG["phrase_group_options_q"] = "Grupa opcji?"; +$LANG["phrase_group_rows"] = "Grupa wierszy"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Kolor Highlight"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "Szablonu HTML"; +$LANG["phrase_images_media"] = "Grafika / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Lista opcji Importuj »"; +$LANG["phrase_input_length"] = "Czas wejścia"; +$LANG["phrase_installation_help"] = "Pomoc Instalacja"; +$LANG["phrase_internal_form"] = "Wewnętrzne Formularz"; +$LANG["phrase_ip_address"] = "Adres IP"; +$LANG["phrase_is_multi_page_form_q"] = "Czy to wielostronicowy formularz?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response zastępcze"; +$LANG["phrase_large_300px"] = "Duże (300px)"; +$LANG["phrase_large_400px"] = "Duże (400px)"; +$LANG["phrase_last_7_days"] = "Ostatnie 7 dni"; +$LANG["phrase_last_logged_in"] = "Ostatnio zalogowany"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Data ostatniej modyfikacji"; +$LANG["phrase_last_name"] = "Nazwisko"; +$LANG["phrase_letters_only"] = "Tylko litery"; +$LANG["phrase_light_brown"] = "Jasny brąz"; +$LANG["phrase_limit_email_content"] = "Limit treści e-maili do pól Zobacz"; +$LANG["phrase_loading_ellipsis"] = "Ładowanie ..."; +$LANG["phrase_log_in"] = "ZALOGUJ"; +$LANG["phrase_login_as_user"] = "Zaloguj się jako ten użytkownik"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Strona logowania"; +$LANG["phrase_login_panel_c"] = "Panel Logowania:"; +$LANG["phrase_login_panel_leftarrows"] = "«Panel logowania"; +$LANG["phrase_login_password"] = "Login Hasło"; +$LANG["phrase_login_username"] = "Login Login"; +$LANG["phrase_logo_link_url"] = "Logo URL Link"; +$LANG["phrase_logout_url"] = "URL wylogowania"; +$LANG["phrase_main_nav"] = "Główne Nav"; +$LANG["phrase_main_settings"] = "Ustawienia główne"; +$LANG["phrase_manage_client"] = "Zarządzaj Klientem"; +$LANG["phrase_manage_client_omit_list"] = "Manage Client Pominięcie listy"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Długość Max"; +$LANG["phrase_max_length_words_chars"] = "- Maks. długość (słów / znaków)"; +$LANG["phrase_may_add_submissions"] = "Może dodać Zgłoszenia"; +$LANG["phrase_may_copy_submissions"] = "Potrafi kopiować zgłoszenia"; +$LANG["phrase_may_delete_submissions"] = "Może usunąć Zgłoszenia"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Nazwa menu"; +$LANG["phrase_menu_type"] = "Menu Typ"; +$LANG["phrase_min_password_length"] = "Minimalna długość hasła"; +$LANG["phrase_module_description"] = "Opis modułu"; +$LANG["phrase_module_info"] = "Moduł Informacje"; +$LANG["phrase_module_nav"] = "Moduł Nav"; +$LANG["phrase_month_to_date"] = "Miesiąc do daty"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Multi-select rozwijanej"; +$LANG["phrase_multiple_fields_found"] = "Wielu pól Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nazwa / Nazwisko"; +$LANG["phrase_new_blank_email"] = "Nowy pusty e-mail"; +$LANG["phrase_new_blank_option_list"] = "Nowy, pusty Lista opcji"; +$LANG["phrase_new_blank_view"] = "Nowy, pusty Zobacz"; +$LANG["phrase_new_ft_installation"] = "Nowy formularz narzędzia instalacyjne"; +$LANG["phrase_new_option_list"] = "Nowa lista opcji"; +$LANG["phrase_new_password"] = "Nowe hasło"; +$LANG["phrase_new_password_reenter"] = "Nowe hasło (należy ponownie wejść)"; +$LANG["phrase_new_view"] = "Nowy widok"; +$LANG["phrase_new_view_all_fields"] = "Nowy widok - Wszystkie pola"; +$LANG["phrase_next_client"] = "następnego klienta »"; +$LANG["phrase_next_field"] = "następna »dziedzinie"; +$LANG["phrase_next_form"] = "obok formularz »"; +$LANG["phrase_next_view"] = "Zobacz następny »"; +$LANG["phrase_no_clients"] = "Brak klientów"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Nr offset"; +$LANG["phrase_no_option_lists_available"] = "Brak opcji listy dostępnych."; +$LANG["phrase_no_views"] = "Brak wyświetleń"; +$LANG["phrase_no_views_with_filters_p"] = "(Brak Wyświetleń ze zdefiniowanych filtrów)"; +$LANG["phrase_none_not_recommended"] = "Brak (nie zalecane)"; +$LANG["phrase_not_assigned_to_option_list"] = "To pole nie jest przypisany do listy opcji."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "NIE jest równe"; +$LANG["phrase_not_found"] = "Nie znaleziono!"; +$LANG["phrase_not_like"] = "Bez"; +$LANG["phrase_not_visible_to_client"] = "(nie widoczne dla klienta)"; +$LANG["phrase_num_clients_per_page"] = "Liczba klientów na stronie"; +$LANG["phrase_num_emails_per_page"] = "Num wiadomości e-mail na stronie"; +$LANG["phrase_num_fields"] = "Liczba pól"; +$LANG["phrase_num_forms_per_page"] = "Liczba formularzy na stronie"; +$LANG["phrase_num_menus_per_page"] = "Num menu na stronie"; +$LANG["phrase_num_modules_per_page"] = "Num modułów na stronie"; +$LANG["phrase_num_option_lists_per_page"] = "Num listy opcji na stronie"; +$LANG["phrase_num_options"] = "Opcje Num"; +$LANG["phrase_num_rows"] = "Wiersze Num"; +$LANG["phrase_numbers_only"] = "Tylko liczby"; +$LANG["phrase_often_localhost"] = "(często "localhost")"; +$LANG["phrase_on_form_submission"] = "Przy składaniu formularza"; +$LANG["phrase_one_char_number"] = "Co najmniej jeden znak to liczba (0-9)"; +$LANG["phrase_one_char_upper"] = "Co najmniej jeden znak jest wielkie"; +$LANG["phrase_one_special_char"] = "Przynajmniej jeden z {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(tylko w szczególnych klienci nie mają dostępu)"; +$LANG["phrase_open_form_in_dialog"] = "Otwórz formularz w oknie dialogowym"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Otwórz formularz w nowej karcie / oknie"; +$LANG["phrase_option_list"] = "Lista opcji"; +$LANG["phrase_option_list_name"] = "Nazwa listy opcji"; +$LANG["phrase_option_list_or_contents"] = "Lista opcji / Contents"; +$LANG["phrase_option_lists"] = "Listy opcji"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Tytuł Strony"; +$LANG["phrase_pass_on"] = "Przekazać"; +$LANG["phrase_password_min"] = "Musi być co najmniej {\$length} znaków."; +$LANG["phrase_password_one_number"] = "Musi ona zawierać przynajmniej jedną cyfrę (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Musi ona zawierać co najmniej jedno wielkie litery."; +$LANG["phrase_password_requirements_c"] = "wymagania Hasło:"; +$LANG["phrase_password_reset"] = "Resetowanie hasła"; +$LANG["phrase_password_special_char"] = "Musi ona zawierać co najmniej jeden z następujących znaków: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Uprawnienia / Inne ustawienia"; +$LANG["phrase_permitted_file_types"] = "Dozwolone typy plików"; +$LANG["phrase_phone_number"] = "Numer telefonu"; +$LANG["phrase_phone_number_format"] = "Format numeru telefonu"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max dozwolony rozmiar wysyłanego pliku:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Wersja PHP"; +$LANG["phrase_please_confirm"] = "Potwierdź"; +$LANG["phrase_please_enter_license_key"] = "Wpisz klucz licencyjny"; +$LANG["phrase_please_select"] = "Proszę zaznaczyć"; +$LANG["phrase_please_select_form"] = "Proszę wybrać formę"; +$LANG["phrase_prev_client"] = "«Poprzednie klienta"; +$LANG["phrase_prev_form"] = "«Formie poprz."; +$LANG["phrase_prevent_password_reuse"] = "Re zapobieganiu wykorzystywania # ostatnio hasła"; +$LANG["phrase_previous_field"] = "«poprzednie pole"; +$LANG["phrase_previous_page"] = "Poprzednia strona"; +$LANG["phrase_previous_view"] = "«Poprzednie Zobacz"; +$LANG["phrase_program_name"] = "Nazwa programu"; +$LANG["phrase_public_form_omit_list"] = "Public Rodzaj Pomiń listę"; +$LANG["phrase_public_view_omit_list"] = "Widok publiczny Pomiń listę"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Wystąpił problem z następującego zapytania:"; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Losowe formularze"; +$LANG["phrase_re_enter_password"] = "Powtórz Hasło"; +$LANG["phrase_recipient_type"] = "Rodzaj odbiorcy"; +$LANG["phrase_redirect_url"] = "Przekierowanie URL"; +$LANG["phrase_refresh_list"] = "Aktualizuj listę"; +$LANG["phrase_refresh_module_list"] = "Odśwież module list"; +$LANG["phrase_refresh_page"] = "ODŚWIEŻ STRONĘ"; +$LANG["phrase_refresh_theme_list"] = "Odśwież listę Theme"; +$LANG["phrase_register_new_email"] = "Rejestracja nowego Email"; +$LANG["phrase_remaining_characters"] = "pozostałych znaków"; +$LANG["phrase_remaining_words"] = "Pozostałe słowa"; +$LANG["phrase_remove_tabs"] = "Usuń Tabs"; +$LANG["phrase_required_password_chars"] = "Wymaganych znaków hasła"; +$LANG["phrase_resend_test_submission"] = "PONÓW PRZESYŁANIE DANYCH"; +$LANG["phrase_return_form_list"] = "POWRÓT DO LISTY FORMULARZY"; +$LANG["phrase_row_selected"] = "{\$num_rows} wybrano wiersze"; +$LANG["phrase_rows_selected"] = "{\$num_rows} wiersze wybrane"; +$LANG["phrase_sample_data"] = "Przykładowe dane"; +$LANG["phrase_save_changes"] = "Zapisz zmiany"; +$LANG["phrase_search_keyword"] = "Szukane słowo"; +$LANG["phrase_security_settings"] = "Ustawienia zabezpieczeń"; +$LANG["phrase_select_all"] = "Zaznacz wszystko"; +$LANG["phrase_select_all_X_results"] = "Zaznacz wszystko {\$numresults} Wyniki"; +$LANG["phrase_select_all_on_page"] = "Zaznacz Wszystko Na Stronie"; +$LANG["phrase_select_date"] = "Wybierz datę"; +$LANG["phrase_select_field"] = "Wybierz pole"; +$LANG["phrase_select_swatch"] = "Wybierz próbkę"; +$LANG["phrase_selected_clients"] = "Zaznaczeni klienci"; +$LANG["phrase_selected_views"] = "Liczba stron"; +$LANG["phrase_send_email"] = "Wyślij e-mail"; +$LANG["phrase_send_test_email"] = "PRZEŚLIJ TESTOWEGO E-MAILA"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sesje Timeout"; +$LANG["phrase_setting_value"] = "Ustawianie wartości"; +$LANG["phrase_setup_options"] = "Opcje instalacji"; +$LANG["phrase_show_all"] = "Pokaż wszystkie"; +$LANG["phrase_show_form"] = "Pokaż Formularz"; +$LANG["phrase_size_large"] = "Duże (tekst)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 znaków)"; +$LANG["phrase_size_small"] = "Małe (<= 20 znaków)"; +$LANG["phrase_size_tiny"] = "Małe (<= 5 znaków)"; +$LANG["phrase_size_very_large"] = "Bardzo duże (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Przejdź Field"; +$LANG["phrase_skip_step"] = "Krok Przejdź"; +$LANG["phrase_small_100px"] = "Mały (100px)"; +$LANG["phrase_small_80px"] = "Mały (80px)"; +$LANG["phrase_smart_fill"] = "SZYBKIE WYPEŁNIENIE"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fill z pola:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill Dokumentacja użytkownika »"; +$LANG["phrase_sort_as"] = "Sortuj W"; +$LANG["phrase_special_fields"] = "Specjalne Obszary"; +$LANG["phrase_standard_fields"] = "Standardowe pola"; +$LANG["phrase_standard_filters"] = "Standardowe filtry »"; +$LANG["phrase_step_1"] = "Krok 1"; +$LANG["phrase_step_2"] = "Krok 2"; +$LANG["phrase_step_3"] = "Krok 3"; +$LANG["phrase_step_4"] = "Krok 4"; +$LANG["phrase_step_5"] = "Krok 5"; +$LANG["phrase_step_6"] = "Krok 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Tagi Gazy w formie oświadczenia"; +$LANG["phrase_subject_line"] = "Temat"; +$LANG["phrase_submission_date"] = "Data wypełnienia"; +$LANG["phrase_submission_id"] = "ID Przesłania danych"; +$LANG["phrase_submission_made"] = "Składanie się {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Składanie Typ"; +$LANG["phrase_submissions_per_page"] = "Zgłoszenia na stronie"; +$LANG["phrase_system_check"] = "Kontrola systemu"; +$LANG["phrase_system_fields_no_validation"] = "Nie możesz dodać walidacji pól systemu."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Tab Wytwórnia"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test praw dostępu do folderu"; +$LANG["phrase_test_submission"] = "Testowe Przesyłanie Danych"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test wniosków otrzymanych"; +$LANG["phrase_text_and_html"] = "Tekst i HTML"; +$LANG["phrase_text_email"] = "Tekst e-mail"; +$LANG["phrase_text_template"] = "Tekst szablonu"; +$LANG["phrase_the_previous_month"] = "W poprzednim miesiącu"; +$LANG["phrase_theme_description"] = "Opis tematu"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Wyniki ogólne:"; +$LANG["phrase_type_c"] = "Typ błędu:"; +$LANG["phrase_unselect_all"] = "Odznacz wszystko"; +$LANG["phrase_update_accounts"] = "Aktualizacja Konta"; +$LANG["phrase_update_email_template"] = "Aktualizacja Email Template"; +$LANG["phrase_update_field"] = "Aktualizuj pole"; +$LANG["phrase_update_order"] = "Zamówienie aktualizacji"; +$LANG["phrase_update_view"] = "Update Zobacz"; +$LANG["phrase_upload_file"] = "Prześlij plik"; +$LANG["phrase_upload_files"] = "Prześlij pliki"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Folder upload'u"; +$LANG["phrase_upload_folder_url"] = "Prześlij folder URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Użyj wartości domyślnej?"; +$LANG["phrase_used_by_num_form_fields"] = "Używane przez # pól formularza"; +$LANG["phrase_uses_swatches"] = "Używa Próbki"; +$LANG["phrase_valid_email"] = "Prawidłowy e-mail"; +$LANG["phrase_validation_error"] = "Błąd sprawdzania poprawności"; +$LANG["phrase_validation_rule"] = "Reguła sprawdzania poprawności"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Zobacz Grupa"; +$LANG["phrase_view_id"] = "Zobacz ID"; +$LANG["phrase_view_name"] = "Imię i nazwisko Zobacz"; +$LANG["phrase_view_placeholders"] = "Zobacz zastępcze"; +$LANG["phrase_view_submissions"] = "Zgłoszenia Zobacz"; +$LANG["phrase_view_uploaded_files"] = "zobacz przesłane pliki"; +$LANG["phrase_viewing_range"] = "[przeglądanie {\$startnum} do {\$endnum}]"; +$LANG["phrase_when_sent"] = "Kiedy została wysłana"; +$LANG["phrase_when_submission_is_deleted"] = "Podczas składania skreśla się"; +$LANG["phrase_when_submission_is_edited"] = "Kiedy upływa edited"; +$LANG["phrase_who_can_access"] = "Kto może uzyskać dostęp?"; +$LANG["phrase_word_limit_p"] = "granicy słowa."; +$LANG["phrase_year_to_date"] = "Narastająco od początku roku"; +$LANG["phrase_yes_for_all_views"] = "Tak, dla wszystkich odsłon"; +$LANG["phrase_yes_for_specific_views"] = "Tak, dla konkretnych odsłon"; +$LANG["phrase_your_account"] = "Twoje konto"; +$LANG["phrase_your_email"] = "Twój e-mail"; +$LANG["phrase_your_email_address"] = "Twój adres e-mail"; +$LANG["processing_form_disabled"] = "Przepraszamy, ten formularz został zablokowany."; +$LANG["processing_form_incomplete"] = "Niestety, ta forma nie wydaje się być w pełni ustanowiona w formularzu Narzędzia. Najbardziej prawdopodobną przyczyną tego problemu jest to, że usunięto "form_tools_initialize_form" ukryte pole formularza, ale nie wykonać wszystkie kroki w "Dodaj formularz" procesu.

    Zaloguj się i przegląd konfiguracji postaci."; +$LANG["processing_init_complete"] = "Dziękujemy! Złożenie testu został wprowadzony przez powodzeniem. Proszę wrócić do formularza Administration Tools panelu i kliknij przycisk "Odśwież" na dole Dodaj Krok formularzu 3 strony, aby zakończyć konfigurowanie formularza."; +$LANG["processing_invalid_form_id"] = "Przepraszamy, nie wydaje się być ważne ID formie."; +$LANG["processing_no_form_id"] = "process.php wymaga ID formy do przetwórstwa. Upewnij się, że formularz zawiera ukryte pole o nazwie "form_tools_form_id" to ruch wzdłuż ID formie."; +$LANG["processing_no_form_url_for_recaptcha"] = "Rodzaj narzędzi nie jest w stanie określić, gdzie przekierować gdy nie wchodzi KAPITAN prawidłowo. Prosimy o przekazanie w ukryte pole z form_tools_form_url nazwę zawierającą adres URL do formularza."; +$LANG["processing_no_post_vars"] = "process.php nie odbiera żadnych danych. Uwaga: ten skrypt nie mogą być ładowane bezpośrednio w przeglądarce.
    Upewnij się, że formularz wysyła pocztą."; +$LANG["processing_no_redirect_url"] = "Zgłoszenie zostało poprawnie przetworzone, ale nie określono adresu URL przekierowania do tej formie! Edycja formularza w interfejsie Narzędzia Forma i dodać przekierowanie URL."; +$LANG["special_language"] = "Polish"; +$LANG["special_language_locale"] = "Polish"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Wszystkie nowe konta klienta zostanie utworzony przy użyciu ustawień i uprawnień określonych poniżej. Aby zastąpić ustawienia dla konkretnego klienta, edytowanie konta klienta i odwiedzić ich kartę Ustawienia."; +$LANG["text_add_form_choose_integration_method"] = "Wybrać metodę, której chcesz użyć do zintegrowania z formularza Narzędzia formularza."; +$LANG["text_add_form_code_submission_benefits"] = "Metoda ta wykorzystuje formularz Tools API , zawarte w głównym skrypt Narzędzia formularza. API udostępnia wiele przydatnych funkcji, aby zadanie integracji formularza z Narzędzia Formularz jak najprostsze. Nie ma żadnych ograniczeń, w jaki sposób formularz można składać w przypadku korzystania z interfejsu API. Możesz przesłać zawartość za jednym razem, lub strona po stronie, można dodać własne walidacji po stronie serwera, CAPTCHA zdjęć, możesz zdecydować się na przedłożenie informacji teraz, ale tylko powiedzieć, że do wyświetlenia złożenia w Formularzu Narzędzia UI w późniejszym terminie (patrz Zakończone Zgłoszenia sekcji w dokumentacji API pomocy)."; +$LANG["text_add_form_code_submission_drawbacks"] = "W celu złożenia danych formularza za pomocą PHP, formularz musi znajdować się na tej samej stronie internetowej, ponieważ instalacja Narzędzia formularza. Po drugie, dla nie-technicznych i początkujący użytkownicy Narzędzia Forma, metoda ta może być nieco zastraszenia w pierwszej kolejności. Ale jest dużo dokumentacji ci pomóc, w tym dwa proste tutoriale do włączenia się jedno-i wielostronicowe formularze (te są związane na późniejszym etapie)."; +$LANG["text_add_form_direct_submission_benefits"] = "Jest to najprostszy sposób, aby wysłać formularz Form Narzędzia. Nie wymaga znajomości PHP i wymaga jedynie bardzo małe zmiany w formularzu. It's great dla mniejszych form, w którym chcesz tylko przedstawienie informacji do bazy danych, a następnie przekierować użytkownika do "thankyou" stronie."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Ta metoda składania jest bardzo prosta w użyciu, ale nie podaje zbyt wielu kontroli na bardziej skomplikowane formy. Multi-form strony lub formularze, które wymagają weryfikacji po stronie serwera są lepiej dopasowane do drugiej metody: poprzez złożenie formularza Narzędzia API."; +$LANG["text_add_form_field_types1"] = "Prawie gotowe! Ta strona stara się znaleźć wszystkie pola formularza i określić ich typy pól. Kliknij Inteligentne wypełnienie przycisk po prawej stronie, aby zacząć. Będziesz tylko pozwolono udać się, gdy wszystkie działania zostały rozwiązane - kwestie, które wymagają uwagi pojawiają się w "niezbędnych działań " kolumny."; +$LANG["text_add_form_field_types2"] = "Jeśli formularz nie jest w formacie HTML, kliknij przycisk Krok Pomiń, aby kontynuować. To wszystko może być skonfigurowane później."; +$LANG["text_add_form_field_types3"] = "To odświeża zawartość formularza (y). Uwaga: to usunie wszelkie zmiany dokonane na tej stronie."; +$LANG["text_add_form_field_types4"] = "W przypadku napotkasz problemy, kliknij tutaj, aby pominąć ten krok. Wszystkie nierozwiązane pola są ustawione na korzystanie z wartości domyślnych. Można dostosować te pola później."; +$LANG["text_add_form_field_types_manual_upload"] = "Jeśli nie udało się Inteligentne wypełnienie pól, może chcesz spróbować alternatywnego rozwiązania: przesłać kopie formularzy w polach poniżej."; +$LANG["text_add_form_field_types_manual_upload2"] = "Uwaga: nie przesyłanie surowców strony PHP (lub inny kod po stronie serwera) - wystarczy przesłać wersji HTML. Aby to uzyskać, przeglądać i zapisywać strony z poziomu przeglądarki internetowej."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Było wiele pól, których nie można znaleźć na stronie formularz określony. To jest, najprawdopodobniej spowodowane przez jedną z następujących czynności:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Wprowadzono jeden lub więcej adresów URL postaci formularza wielostronicowego nieprawidłowo."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Jedną lub więcej stron z formularza są chronione hasłem i skrypt nie może uzyskać dostępu do strony."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Niepoprawna wprowadzeniu URL formie."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Kliknij tutaj , aby powrócić do strony Formularze sprawdzić ustawienia."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Czy zmieniłeś formularz (e) po dokonaniu składania testu"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Kliknij tutaj, aby umieścić za pośrednictwem innego złożenia testu."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Formularz jest chroniony hasłem i skrypt nie może uzyskać dostępu do strony."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "W innej karcie / okno z tej przeglądarki, zalogować się do formularza a następnie kliknij przycisk Odśwież stronę poniżej, aby spróbować ponownie znaleźć pola."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Jeśli żadna z powyższych prac rozwiązań, można również spróbować ręcznie przesyłania formularzy do przetwarzania ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Było wiele pól, których nie można znaleźć na stronach formie określonej przez użytkownika. Jest to głównie spowodowane prawdopodobnie przez jednego z nich:"; +$LANG["text_add_form_help_link"] = "Jeśli napotkasz jakiekolwiek problemy podczas czynności, spróbuj odczytywania dokumentacji użytkownika ."; +$LANG["text_add_form_step_1_text_1"] = "Na kolejnych stronach prowadzi użytkownika przez kolejne etapy Narzędzia Rodzaj skonfigurować, aby zapisać formularz zgłoszenia. Zanim przejdziemy dalej, należy sprawdzić, czy:"; +$LANG["text_add_form_step_1_text_2"] = "formularzu zostały już utworzone i jest dostępny poprzez URL (localhost is fine)"; +$LANG["text_add_form_step_1_text_3"] = "są w stanie zmienić formę"; +$LANG["text_add_form_step_2_para_2"] = "Otwórz formularz w wybranym edytorze i zmień znacznik formularza poniżej, w tym dwa ukryte pola."; +$LANG["text_add_form_step_2_para_3"] = "Następnie otwórz formularz w przeglądarce internetowej. Wypełnij wszystkie pola i przedkłada go. Po złożeniu, powinieneś zobaczyć komunikat powiadomienia. Gdy wyświetlany jest komunikat, powrót do tej strony i kliknij przycisk 'odśwież' poniżej. Po zakończeniu tego procesu, widać nadal przycisk poniżej, biorąc do następnego kroku."; +$LANG["text_add_form_step_2_para_6"] = "W przesłaniu formularza, obejmują następujące wartości. Mogą być ustanawiane bezpośrednio przez PHP lub szła przez samą formę. Poniżej przedstawiono przykłady każdego z nich. (\$ Nazwa_zmiennej) to hash (lub tablica asocjacyjna) wszelkich informacji złożenia formularza - zazwyczaj jest to (\$ postvar) lub (\$ sessionvar) zmienna, ale może to być dowolny zbudowany."; +$LANG["text_add_form_step_2_text_2"] = "Wpisz adres URL "thankyou " na stronie tutaj. To gdzie chcesz, aby być skierowane do po formularz został przesłany."; +$LANG["text_add_form_step_3_para_1"] = "Na tej stronie znajdziesz wszystkie pola w przesłaniu formularza. Należy podchodzić do każdego pola i usuń, że nie trzeba przechowywać przez co złożenia. Jeśli usuniesz ważnych dziedzinach przez przypadek, lub chcesz zmienić informacje przechowywane przez formularz, powrót do poprzedniej strony, aby wysłać nowy składania badania."; +$LANG["text_add_form_step_3_para_2"] = "Uwaga: Jeśli wysyłasz wiele wartości poprzez pola wyboru lub wielo-wybierz pole, upewnij się, że nazwa pola kończy się [] znaków (patrz dokumentacja uzyskać więcej informacji)."; +$LANG["text_add_form_step_3_text_1"] = "Oto, gdzie zaczyna się zabawa! W tym momencie Narzędzia Formularz czeka na złożenie testu z formularza. Wykorzysta ten złożenia formularza, aby wiedzieć, jakie informacje powinny być przechowywane w bazie danych."; +$LANG["text_add_form_step_3_text_2"] = "wskazując formularz Formularz Narzędzia"; +$LANG["text_add_form_step_3_text_3"] = "przy użyciu formularza Narzędzia API"; +$LANG["text_add_form_step_3_text_4"] = "Aby pomóc w zintegrowaniu formularza, radzimy przeczytać jedną z następujących tutoriali:"; +$LANG["text_add_form_step_3_text_5"] = "Wyjaśniają, w jaki sposób skonfigurować postaci w ramach przygotowań do przedłożenia badań, i zawierać inne informacje, które mogą być pomocne. PHP z linii będzie potrzebna:"; +$LANG["text_add_form_step_3_text_6"] = "Dzięki temu dane są faktycznie przesyłane do formularza Narzędzia. Po poddane przesłaniu testu, kliknij przycisk poniżej."; +$LANG["text_add_form_step_3_text_7"] = "W sprawie procedury stronę do ostatecznego "dziękuję", trzeba dodać następujący parametr do zmiennej \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Baza danych została utworzona do tej postaci i formie został aktywowany do użytku. Jeśli popełnimy składania wskazując formularza do process.php, należy powrócić do formy i usunąć następujące ukryte pole:"; +$LANG["text_add_form_step_5_para_2"] = "Następnie przejdź na "dziękuję", aby puste sesje. Gdy to nastąpi, wszystkie nowe wnioski formularzu będą przetwarzane i przechowywane przez formularz Narzędzia. Spróbuj podejmowania składania lub dwa w celu weryfikacji informacji jest przesłanie prawidłowo."; +$LANG["text_add_form_step_5_para_3"] = "Jeśli chcesz dostosować formularz do opcji, takich jak automatyczne wysyłanie e-maili, dodając dodatkowe pole pól formularza, lub dostosowując typy pól formularza może się zmienić formę w dowolnym momencie."; +$LANG["text_add_form_step_5_para_4"] = "Ponieważ formularz przesłać plik zawiera pola, trzeba skonfigurować każdej dziedzinie, aby określić folder upload plików, jakie pliki są dozwolone, a. Można go znaleźć na karcie Ekran edycji strony formularza."; +$LANG["text_add_form_step_5_para_5"] = "W przypadku składania został przesłany za pośrednictwem interfejsu API, zmiany ft_api_init_form_page linii na pierwszej stronie formularza:"; +$LANG["text_add_submission_button"] = "Przycisk Dodaj Składanie pojawia się tylko dla widoków, które mają "Niech dodać zgłoszeń " opcja została ustawiona na "tak "."; +$LANG["text_admin_email_placeholder_info"] = "Jest to adres e-mail administratora Narzędzia formularzu, określonym w ustawieniach konta. To tylko wyjść adres e-mail, więc jeśli chcesz używać jako link HTML, należy owinąć ją w <a> tag, tak jak poniżej:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Również logowania domyślnego motywu stronie)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Najpierw wybierz typ postaci."; +$LANG["text_client_form_page"] = "Na tej stronie znajdziesz wszystkie formularze i widoki przeznaczone na ten cel klienta. Wskazówka: aby je zobaczyć formularza zgłoszenia, muszą być przypisane przynajmniej jeden rzut."; +$LANG["text_client_map_filters_desc1"] = "Filtry Mapa klienta pozwala ograniczyć wnioski, które pojawiają się w tym widoku poprzez mapowanie wartości w pola formularza do wartości rachunku klienta."; +$LANG["text_client_no_forms"] = "Obecnie brak formularzy do przeglądania."; +$LANG["text_client_welcome"] = "Witamy! Ten program przechowuje wszystkie informacje podane przez odwiedzających. Aby wyświetlić uwagi na szczególną formę po prostu kliknij na link "Wyświetl lub zobacz lewej menu dla innych opcji."; +$LANG["text_config_file_created"] = "Plik config.php został stworzony."; +$LANG["text_config_file_not_created"] = "Nie możemy utworzyć plik config.php. Musisz stworzyć plik ręcznie."; +$LANG["text_config_file_not_created_instructions"] = "Skopiuj i wklej zawartość z sekcji poniżej w pliku o nazwie config.php i przesłać za pośrednictwem protokołu FTP do formularza Narzędzia / Światowy katalog (folder zawiera również kilka innych plików i katalogów, jeden plik o nazwie library.php)."; +$LANG["text_confirm_delete_form"] = "Tak, chcę usunąć ten formularz"; +$LANG["text_create_admin_account"] = "Teraz idziemy do stworzenia konta administratora. Jest to wykorzystywane do zarządzania wszystkimi aspektami Rodzaj narzędzi, takich jak dodawanie formularzy i tworzenia kont klientów."; +$LANG["text_create_new_client_account"] = "Skorzystaj z poniższego formularza, aby utworzyć nowe konto klienta. Wszystkie pola są wymagane."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "zobacz PHP {\$datefunctionlink} funkcji formatowania"; +$LANG["text_default_file_settings_page"] = "Tę stronę definiuje ustawienia przesłać plik do instalacji Narzędzia formularza. Zasady te mają zastosowanie do wszystkich plików przesłanych za pośrednictwem formularza Narzędzia, chyba że wyraźnie przeważa na poszczególne pola formularza. Uwaga: jeśli zmienisz upload folderu po akta zostały przesłane, zostaną one automatycznie przeniesione do nowego folderu."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Zanim przejdziemy dalej, trzeba będzie zaktualizować / themes / default / folder pamięci podręcznej w celu umożliwienia pełnego odczytu i zapisu. Gdy to nastąpi, to zniknie i będzie można zainstalować skrypt."; +$LANG["text_default_values_in_view"] = "Ta sekcja jest opcjonalna. Wszystkie zgłoszenia utworzone tę będzie zawierać wartości domyślne podane tutaj."; +$LANG["text_delete_all_forms"] = "Chcę usunąć wszystkie pliki przesłane poprzez ten formularz"; +$LANG["text_delete_form_warning"] = "Jesteś pewien, że chcesz usunąć ten formularz? To działanie jest nieodwracalne. Wszystkie dane zostaną definitywnie utracone."; +$LANG["text_edit_admin_menu_page"] = "Możesz edytować swoje menu poniżej. Aby zapewnić zawsze masz dostęp do wszystkich funkcji dostępnych w formularzu Narzędzia, wymagane są następujące strony: Formularze Klienci, Twoje konto, moduły, Ustawienia i Wyloguj."; +$LANG["text_edit_client_menu_page"] = "Ta sekcja pozwala dostosować lewej kolumnie nawigacji dla każdego użytkownika. Można utworzyć dowolną liczbę menu klienta, jak chcesz i przypisać konta do jednego z nich. Domyślnie są dwie menu: jeden dla Ciebie, administrator, a jeden dla wszystkich rachunków klienta. Konto administratora może zostać zmieniony, ale nie usunięto."; +$LANG["text_edit_tab_summary"] = "Jeśli chcesz to grupa Zobacz pól na karty, wystarczy wpisać nazwy kart poniżej. Po zakończeniu, wybierz odpowiednią kartę dla każdej grupy pola w zakładce Fields ."; +$LANG["text_edit_view_list_page"] = "Kontroluje kartę pola, które pojawiają się jako kolumny na stronie aukcji Składanie i kilka dodatkowych ustawień dla tych pól. Uwaga: zalecamy dodać nie więcej niż 4 lub 5 z najważniejszych pól w widoku."; +$LANG["text_email_settings_intro"] = "Na tej stronie możesz określić, które e-maile pól formularza sklepu oraz odpowiadające im nazwy. Po określić je tutaj, można z nich korzystać w e-mailu szablonów jako odbiorcy. Ta sekcja jest opcjonalna."; +$LANG["text_email_tab_summary"] = "Ta sekcja pozwala budować dowolną liczbę wiadomości e-mail, który zostanie wysłany, gdy formularz jest składany i innych wyzwala."; +$LANG["text_email_template_tab"] = "Ta sekcja pozwala określić, co znajduje się w treści wiadomości e-mail. Jeżeli chcesz wysłać e-mail, ponieważ tylko tekst lub e-mail, tylko wpisać wartość tej sekcji. Jeśli wprowadzisz wartość zarówno dla, e-mail zostanie wysłany w obu formatach."; +$LANG["text_email_template_text_1"] = "Odnotowano składania za pośrednictwem formularza, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Odnotowano składania za pośrednictwem formularza, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Dziękujemy za przesłanie danych!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Komunikat o błędzie, aby pokazać, jeśli pole nie walidacji"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Zewnętrzne formy są formami, które już istnieją na swojej stronie lub gdzieś w internecie. Wybierz tę opcję, jeśli masz własny formularz, który chcesz zintegrować z narzędzi formularza."; +$LANG["text_fields_tab_summary"] = "Ta strona zawiera listę wszystkich pól formularza. Aby kontrolować, jak są wyświetlane podczas przeglądania zgłoszeń można znaleźć w zakładce Widok . Usuwanie pola na tej stronie usunie go ze wszystkich zgłoszeń, więc należy uważać!"; +$LANG["text_file_extension_info"] = "Wpisz rozszerzeń plików oddzielonych przecinkami (np. jpg, gif, png) lub pozostawić puste, aby umożliwić wszelkiego rodzaju plików."; +$LANG["text_file_field_placeholders_info"] = "Pola pliku dwa specjalne symbole zastępcze: FILEURL i nazwę pliku. FILEURL jest pełny adres URL do pliku, więc można połączyć się bezpośrednio do niej e-maile; FILENAME jest tylko nazwa pliku."; +$LANG["text_filters_page"] = "Tylko te wnioski, które spełniają przepisy zdefiniować poniżej pojawią się w tym widoku."; +$LANG["text_filters_tips"] = "Aby uzyskać porady na temat korzystania z filtrów składania patrz Dokumentacja użytkownika."; +$LANG["text_forgot_password"] = "Nie ma problemu. Wystarczy wpisać nazwę użytkownika poniżej i informacji logowania zostaną wysłane na podany adres mailowy w pliku. Jeśli nie pamiętasz nazwy użytkownika, napisz do administratora strony na {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Ten formularz zawiera co najmniej jedno pole upload'u pliku:"; +$LANG["text_form_placeholder_info"] = "Następujące symbole zastępcze mogą być stosowane w każdej dziedzinie e-mail szablon i język zastępczy, bez względu na cokolwiek Zobacz szablon e-mail jest przypisany. PYTANIE zastępcze są konkretne pytanie formie; zastępczych ODPOWIEDŹ są odpowiedzi na każde pytanie."; +$LANG["text_form_submission_date_placeholder"] = "Dnia, w którym zgłoszenie zostało dokonane."; +$LANG["text_form_tools_form_url"] = "Pełny adres URL do formularza. To tylko ma wartość dla zewnętrznych form."; +$LANG["text_form_tools_login_url"] = "URL logowania do Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Uwaga: ten formularz obecnie typ dostępu Administrator, więc żaden z kont klientów będą mogli zobaczyć ten widok."; +$LANG["text_form_view_permission_info_private"] = "Uwaga: ten formularz obecnie prywatny typ dostępu, tak ogólnodostępnych i prywatnych opcji tutaj będzie ograniczone do tego podzbioru klientów."; +$LANG["text_ft_installed"] = "Gratulacje Rodzaj Narzędzia został pomyślnie zainstalowany!"; +$LANG["text_global_placeholder_info"] = "Te zmienne mogą zostać użyte w dowolnym szablonie czy formularzu."; +$LANG["text_group_name_explanation"] = "Na polach dodane przez Dodaj procesu Forma ta wartość jest wstępnie napełniony do wyświetlania tekstu w każdej dziedzinie używa wartości. Możesz spróbować zmienić to, aby lepiej scharakteryzować treść."; +$LANG["text_install_create_config_file"] = "Formularz sklepów Narzędzia i ustawienia serwera bazy danych w pliku o nazwie config.php, znalezionych w / global / folder. Kliknij przycisk "Utwórz plik", aby automatycznie wygenerować plik na serwer."; +$LANG["text_install_create_database_tables"] = "Teraz będziemy tworzyć tabele Rodzaj Narzędzia bazy danych. Ten krok wymaga samej bazy danych zostały już utworzone. Jeśli nie wiesz, jak to zrobić, skontaktuj się z dostawcą usług hostingowych."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" zwykle oznacza, że nazwa hosta, który podałeś jest niepoprawny. Być może spróbuj ustawić to "localhost" - jest to powszechny sposób odnoszą się do "lokalnego" bazy danych na serwerze internetowym."; +$LANG["text_install_db_tables_error_tip_2"] = ""Nie można połączyć się z lokalnego serwera MySQL poprzez gniazdo" oznacza bazę danych hosta dziedzinie jest jeszcze niepoprawne."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" oznacza, że istnieje problem z nazwy użytkownika i hasła."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... do bazy danych ..." oznacza, że chociaż nazwę użytkownika i hasło podane są prawdziwe, to nie może połączyć się do konkretnej bazy danych, z tego konta. Może to oznaczać, że albo Nazwa bazy danych jest nieprawidłowa, lub, że konto użytkownika nie jest związany z tą bazą danych."; +$LANG["text_install_email_content_text"] = "Na naszej stronie znajdziesz mnóstwo zasobów, które pomogą Ci zacząć, w tym naszą dokumentację online (https://docs.formtools.org) i samouczki (https://docs.formtools.org/tutorials). Jeśli zauważysz, że utknąłeś lub masz pytanie, zadaj pytanie na github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Przykro nam, Narzędzia Formularz nie będzie w stanie uruchomić na serwerze. Proszę kliknąć tutaj na minimalne wymagania."; +$LANG["text_install_system_check"] = "Ta strona jest kilka testów na komputerze w celu zapewnienia, to nic nie stanie uruchomić Narzędzia formularza."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Wewnętrzne formy istnieją tylko wewnątrz Narzędzia Form - gdzie indziej nie na miejscu. Tylko konta, Narzędzia formularza użytkownik będzie miał dostęp do formularza. Wybierz tę opcję, jeśli nie masz istniejącego formularza."; +$LANG["text_internal_form_intro"] = "Skorzystaj z poniższego formularza, aby utworzyć nowy wewnętrzne postaci. Wszystkie ustawienia, w tym liczby i zawartości pól formularza można zmienić i skonfigurować później."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Aby zalogować się i używać narzędzi formularz, musisz mieć włączoną obsługę JavaScript w przeglądarce. Musisz go włączyć teraz i kliknij przycisk Odśwież w przeglądarce."; +$LANG["text_last_modified_date_explanation_c"] = "Ostatni raz ten wniosek został zmodyfikowany. Do nowych dokumentów, to jest to samo co:"; +$LANG["text_limit_email_content_desc"] = "Ta opcja działa tylko dla HTML i treści tekst generowany z Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(tylko wymienia poglądy z jednego lub kilku filtrów zdefiniowanych)"; +$LANG["text_log_in_to_ft"] = "Zaloguj się w formularzu Narzędzia"; +$LANG["text_login"] = "Zaloguj się poniżej, aby przejść do (\$ nazwa_programu) Panel administracyjny. Jeśli nie pamiętasz hasła, kliknij tutaj."; +$LANG["text_login_info"] = "Wedle prośby - oto dane logowania."; +$LANG["text_name_of_form"] = "Nazwa formularza."; +$LANG["text_no_clients"] = "Aktualnie brak klientów w bazie danych. By dodać nowe konto klienta kliknij poniżej przycisk Dodaj Klienta."; +$LANG["text_no_clients_found"] = "Klienci nie stwierdzono. Spróbuj poszerzenie kryteria wyszukiwania."; +$LANG["text_no_fields_in_view"] = "Pogląd ten nie ma żadnego pola w nim. Kliknij poniższy link."; +$LANG["text_no_forms"] = "Aktualnie brak formularzy w bazie danych. By dodać nowy formularz kliknij poniżej przycisk Dodaj Formularz. "; +$LANG["text_no_forms_found"] = "Brak formy znalazła."; +$LANG["text_no_forms_found_search"] = "Brak formy znalazła. Spróbuj rozszerzyć kryteria wyszukiwania."; +$LANG["text_no_modules_found"] = "Nie znaleziono modułów. Spróbuj poszerzenie kryteria wyszukiwania."; +$LANG["text_no_recipients_added"] = "Nr odbiorców zostały dodane."; +$LANG["text_no_search_results"] = "Nie ma wyników z kryteriów wyszukiwania / Widok."; +$LANG["text_no_submissions_found"] = "Przykro mi, nie odnaleziono żadnych przesłań danych."; +$LANG["text_no_themes"] = "Nie masz żadnych tematów zdefiniowane. Kliknij przycisk poniżej, aby odświeżyć listę tematów, lub sprawdzić Formularz użytkownika Narzędzia dokumentacji dla informacji na temat dodawania motywów."; +$LANG["text_non_deletable_fields"] = "To pole jest wykorzystywane przez skrypt Core i nie mogą być edytowane lub usuwane bez powodowania niezgodności. Jeśli chcesz dokonać zmian typu pola, zrób kopię i jego edycji."; +$LANG["text_option_list_group_explanation"] = "Po wybraniu tej opcji, pozwala na grupy opcji. Jak wyświetlane są grupy zależy od rodzaju pola przy użyciu tej listy opcji."; +$LANG["text_option_list_page"] = "Przyciski radiowe, pola wyboru, menu rozwijane i wielokrotnego wyboru rozwijanej pola wszystkie dostarczają użytkownikowi wiele opcji, z których mogą wybrać jeden lub więcej elementów. W formularzu Narzędzia te znane są jako listy opcji. Ogólnie, są tworzone automatycznie przez Dodaj zewnętrzną formę procesu, ale można ręcznie dodać lub edytować listy opcji poniżej, jeśli zmiany treści formularza lub skonstruować pola, które są używane tylko wewnętrznie."; +$LANG["text_option_list_used_by_fields"] = "Ta lista opcji jest używany przez wielu pól formularza. W przypadku aktualizacji informacji poniżej, będzie zmieniane dla wszystkich pól (patrz pól formularza kartę, aby wyświetlić listę pól). Jeśli chcesz, aby zaktualizować wartości dla jednego lub podzbiór pól, które są obecnie przypisane, kliknij tutaj , aby utworzyć nową listę opcji o tej samej wartości jak ten. Następnie można przypisać do pola formularza, które chcesz do nowej grupy."; +$LANG["text_public_form_omit_list_page"] = "Formy publicznego daje korzyści z wynajmu wszystkich kont klientów do nich dostęp bez konieczności ręcznego przypisania każdego klienta do nich. Na tej stronie możesz wskazać tych klientów, którzy nie mogą uzyskać dostęp do tej formy, choć forma jest oznaczone jako publiczne."; +$LANG["text_public_view_omit_list_page"] = "Liczba publicznych daje korzyści z wynajmu wszystkich kont klientów do nich dostęp bez konieczności ręcznego przypisania każdego klienta do nich. Na tej stronie możesz wskazać tych klientów, którzy nie mogą uzyskać dostęp do tego szczególnego widok."; +$LANG["text_reference_tab_info"] = "Ta strona zawiera wszystkie symbole zastępcze dostępne dla formularza. Symbole zastępcze są ciągi znaków, które mogą być używane w szablonach e-mail, a pola oznaczone specjalną ikoną zastępczy . Po wprowadzeniu do pola, są one dynamicznie konwertowane na odpowiednią wartość, gdy pole jest wyświetlane lub e-mail zostanie wysłana."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Przegląd dokumentacji użytkownika"; +$LANG["text_send_email_from_edit_submission_page"] = "Opcja Włącz, aby wysłać e-maila od Edycja Składanie strona"; +$LANG["text_smart_fill_option_list_problem"] = "Nie udało się Inteligentne wypełnienie opcje dziedzinie. Jednakże, jako alternatywa, możesz spróbować przesłać kopię swojej stronie formularz w polu poniżej. Uwaga: nie przesyłanie surowców strony PHP (lub inny kod po stronie serwera) - wystarczy przesłać w wersji HTML. Aby to uzyskać, przeglądać i zapisywać strony z poziomu przeglądarki internetowej."; +$LANG["text_submission_ip_address"] = "Adres IP użytkownika, który dokonał zgłoszenia."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Skorzystaj z poniższego formularza na wyświetlanie lub wysłać do siebie wiadomość e-mail generowane z tego szablonu. E-mail będą wysyłane do e-mail podanych poniżej; główne, CC i BCC adres e-mail odbiorcy są ignorowane podczas testowania."; +$LANG["text_test_email_templates_no_submissions"] = "By przetestować szablony e-maili musisz najpierw wypełnić i przesłać dane co najmniej jednego formularza."; +$LANG["text_theme_page_intro"] = "Na tej stronie znajdziesz wszystkie tematy. Kliknij na miniaturę, aby zobaczyć większy przykład motywu stylów. "Aktywne" pole wyboru określa, czy ten temat mogą być wybierane przez klientów. Aby przeglądać wszystkie dostępne tematy, odwiedź stronę internetową Rodzaj Narzędzia."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Dodawanie pierwszej formie!"; +$LANG["text_unique_submission_id"] = "Unikalny ID przesłania danych."; +$LANG["text_unused_option_list"] = "Lista ta opcja nie jest używany przez wszystkie pola formularza."; +$LANG["text_upgraded"] = "Instalacji został zaktualizowany do {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Ta lista opcji jest używany na następujących polach."; +$LANG["text_view_fields_info"] = "Ta karta kontroli pola, które pojawiają się podczas edycji materiałów w tę, ich kolejności i czy są one edytowalne, czy nie."; +$LANG["text_view_tab_summary"] = "Zakładka ta pozwala na tworzenie różnych sposobów, aby grupy i rozmieścić dane. Wyświetleń umożliwiają tworzenie niestandardowych podzbiorów danych formularza rozbić go na kawałki zarządzania i ograniczenie co klienci mogą zobaczyć lub edytować."; +$LANG["validation_account_disabled"] = "Niestety, konto zostało zablokowane."; +$LANG["validation_account_not_recognized"] = "Przepraszamy, że nazwa użytkownika nie jest rozpoznany."; +$LANG["validation_account_not_recognized_info"] = "Przepraszamy, że nazwa użytkownika nie została znaleziona. Prosimy spróbować ponownie lub skontaktować się z administratorem serwisu na adres podany poniżej."; +$LANG["validation_account_pending"] = "Konto użytkownika oczekuje na zatwierdzenie przez administratora."; +$LANG["validation_check_delete_client"] = "Czy na pewno chcesz usunąć to konto klienta?"; +$LANG["validation_client_password_missing_number"] = "Hasło klienta musi zawierać przynajmniej jedną cyfrę (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Hasło klient musi zawierać co najmniej jeden z następujących znaków: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Hasło klient musi zawierać co najmniej jeden wielkie litery."; +$LANG["validation_client_password_too_short"] = "Hasło klienta musi być co najmniej {\$number} znaków."; +$LANG["validation_col_name_is_reserved_word"] = "Niestety, ta nazwa kolumny bazy danych jest zastrzeżone pracy w MySQL. Proszę to zmienić!"; +$LANG["validation_db_name"] = "Nazwy baz danych nie mogą zawierać kropek ani ukośników."; +$LANG["validation_db_not_updated_invalid_input"] = "W bazie danych nie mogą być aktualizowane. Proszę sprawdzić wartości wprowadzone są ważne."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Przepraszamy, administrator domyślne tematy klient musi być zawsze aktywny."; +$LANG["validation_default_phone_num_required"] = "Proszę podać pełny numer telefonu dla <b> { \$ pole} </ b> - tylko liczby."; +$LANG["validation_default_rule_alpha"] = "Proszę tylko wprowadzania liter i cyfr dla <b> { \$ pole} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Proszę tylko wpisywać litery dla <b> { \$ pole} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Proszę tylko podać numery <b> { \$ pole} </ b>."; +$LANG["validation_default_rule_required"] = "Proszę podać wartość dla <b> { \$ pole} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Proszę podać adres e-mail do <b> { \$ pole} </ b>."; +$LANG["validation_delete_form_confirm"] = "Zaznacz pole wyboru, aby potwierdzić, że chcesz usunąć ten formularz."; +$LANG["validation_delete_non_empty_option_list"] = "Uwaga! Ta lista opcji jest używany przez jednego lub więcej pól formularza. Usuwanie to będzie tych dziedzinach przestaje działać prawidłowo."; +$LANG["validation_display_names_incomplete"] = "Proszę podać wartość dla wszystkich wyświetlania nazwy, lub kliknij opcję Smart Fill, aby wprowadzić je dynamicznie."; +$LANG["validation_duplicate_form_field_name"] = "Nie można mieć wiele pól o tej samej nazwie pola."; +$LANG["validation_email_not_found_or_invalid"] = "Przepraszamy, e-mail powiązany z kontem nie istnieje lub jest nieprawidłowy."; +$LANG["validation_folder_invalid_permissions"] = "Aby przeprowadzić ten test, uprawnienia powinny być ustawione na upload folderu, aby podczas czytania i zapisywania plików (777 na Unix)."; +$LANG["validation_folder_not_writable"] = "Ten folder nie jest zapisywalny."; +$LANG["validation_internal_form_too_many_fields"] = "Niestety, można tylko stworzył formy z 1000 pól lub mniej."; +$LANG["validation_invalid_admin_email"] = "Podaj prawidłowy adminstrator adres e-mail."; +$LANG["validation_invalid_admin_username"] = "Twoja nazwa użytkownika może składać się jedynie ze znaków alfanumerycznych (az oraz 0-9)."; +$LANG["validation_invalid_client_username"] = "Klienta, nazwa użytkownika może składać się znaki alfanumeryczne (az oraz 0-9)."; +$LANG["validation_invalid_client_username2"] = "Niestety, nazwa użytkownika może zawierać tylko litery, cyfry i znak podkreślenia. Wprowadź nową nazwę użytkownika."; +$LANG["validation_invalid_column_name"] = "Nazwy kolumn mogą być alfanumeryczne (AZ, 0-9). Proszę sprawdzić nazwy kolumn."; +$LANG["validation_invalid_custom_from_email"] = "Proszę podać poprawny zwyczaj "Od" adres e-mail."; +$LANG["validation_invalid_custom_reply_to_email"] = "Proszę podać poprawny zwyczaj "Odpowiedź do" e-mail."; +$LANG["validation_invalid_default_sessions_timeout"] = "Proszę wprowadzić prawidłową wartość (liczba) na timeout sesji domyślne."; +$LANG["validation_invalid_email"] = "Proszę podać poprawny adres email."; +$LANG["validation_invalid_email_id"] = "Niestety, to nieważne e-ID."; +$LANG["validation_invalid_folder"] = "Niestety, to nie wydaje się być poprawny katalog."; +$LANG["validation_invalid_form_field_names"] = "Pól formularza może być alfanumeryczne i podkreślenia (AZ 0-9, _), bez spacji."; +$LANG["validation_invalid_num_clients_per_page"] = "Proszę wprowadzić tylko numery Klienci Num jedno pole strony."; +$LANG["validation_invalid_num_emails_per_page"] = "Proszę wprowadzić tylko cyfry do wiadomości na stronie."; +$LANG["validation_invalid_num_form_fields"] = "Proszę tylko wpisać cyfry w polu Liczba pól."; +$LANG["validation_invalid_num_forms_per_page"] = "Proszę wprowadzić tylko numery Num Formularze jedno pole strony."; +$LANG["validation_invalid_num_menus_per_page"] = "Proszę wprowadzić tylko cyfry do menu na stronie."; +$LANG["validation_invalid_num_modules_per_page"] = "Proszę wprowadzić tylko numery Num Moduły jedno pole strony."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Proszę tylko podać numery list Opcja Num na pole strony."; +$LANG["validation_invalid_num_submissions_per_page"] = "Proszę podać prawidłową liczbę zgłoszeń na stronie."; +$LANG["validation_invalid_sessions_timeout"] = "Podaj prawidłowy czasu sesji (tylko liczby całkowite!)."; +$LANG["validation_invalid_tab_assign_values"] = "Proszę tylko wpisać numery od "a" do "pola."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Twojego serwera instalacji PHP nieprawidłowe ustawienie upload_tmp_dir wartości. "(\$ upload_folder)" nie ważne jest folder."; +$LANG["validation_invalid_url"] = "Proszę podać poprawny adres URL."; +$LANG["validation_invalid_username"] = "Twoja nazwa użytkownika może składać się znaki alfanumeryczne (az oraz 0-9)."; +$LANG["validation_is_form_active"] = "Wskaż czy dany formularz jest aktywny czy nie."; +$LANG["validation_menu_name_taken"] = "Niestety, ta nazwa menu jest już zajęta. Proszę wybrać nową nazwę."; +$LANG["validation_modules_search_no_status"] = "Proszę wybrać opcję Enabled pola wyboru."; +$LANG["validation_no_access_type"] = "Proszę podać typ dostępu."; +$LANG["validation_no_account_logout_url"] = "Wpisz swój adres wyloguj się."; +$LANG["validation_no_account_password_confirmed"] = "Wprowadź ponownie nowe hasło."; +$LANG["validation_no_account_password_confirmed2"] = "Wpisz ponownie nowe hasło."; +$LANG["validation_no_admin_email"] = "Proszę podać adres e-mail administratora."; +$LANG["validation_no_admin_theme"] = "Proszę wybrać temat do konta administratora."; +$LANG["validation_no_admin_theme_swatch"] = "Proszę wybrać próbkę na temat administratora."; +$LANG["validation_no_client_email"] = "Proszę podać adres e-mail klienta."; +$LANG["validation_no_client_first_name"] = "Podaj imię klienta."; +$LANG["validation_no_client_last_name"] = "Proszę wpisać nazwisko klienta."; +$LANG["validation_no_client_login_page"] = "Proszę wskazać, która strona klient powinien zostać przekierowany do kiedy zalogować"; +$LANG["validation_no_client_password"] = "Podaj hasło klienta."; +$LANG["validation_no_client_theme_swatch"] = "Proszę wybrać próbkę domyślne kont klientów."; +$LANG["validation_no_client_username"] = "Wprowadź nazwę użytkownika klienta."; +$LANG["validation_no_column_name"] = "Proszę wpisać wszystkie nazwy kolumn, lub kliknij przycisk Smart Fill przycisk, aby automatycznie wypełnić je."; +$LANG["validation_no_column_selected"] = "Proszę wybrać co najmniej jedno pole do stawienia się w kolumnie na stronie aukcji złożenia."; +$LANG["validation_no_custom_from_email"] = "Proszę wprowadzić zwyczaj "Od" adres e-mail."; +$LANG["validation_no_custom_recipient_email"] = "Proszę podać adres e-mail odbiorcy niestandardowych."; +$LANG["validation_no_custom_reply_to_email"] = "Proszę wprowadzić zwyczaj "Odpowiedź do" e-mail."; +$LANG["validation_no_date_format"] = "Proszę podać format daty."; +$LANG["validation_no_db_column_single"] = "Proszę podać nazwę kolumny bazy danych."; +$LANG["validation_no_db_hostname"] = "Wprowadź nazwę hosta bazy danych."; +$LANG["validation_no_db_name"] = "Wprowadź nazwę bazy danych."; +$LANG["validation_no_db_username"] = "Proszę podać nazwę użytkownika konta bazy danych."; +$LANG["validation_no_default_client_theme"] = "Wybierz motyw domyślny dla wszystkich nowych kont klientów."; +$LANG["validation_no_default_language"] = "Wybierz domyślny język twojej instalacji Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Proszę wprowadzić limit czasu sesji domyślnych dla kont użytkowników."; +$LANG["validation_no_display_text"] = "Prosimy wprowadzić Wyświetlanie tekstu dla każdego pola."; +$LANG["validation_no_display_text_single"] = "Proszę podać wartość Text Display."; +$LANG["validation_no_edit_submission_page_label"] = "Wprowadź etykiety Edytuj stronę Submission."; +$LANG["validation_no_email"] = "Wpisz swój adres e-mail."; +$LANG["validation_no_email_config_field"] = "Proszę określić, jakie pola formularza pole e-mail."; +$LANG["validation_no_email_content"] = "Proszę wpisać treść wiadomości co najmniej jednym z formatów (HTML lub tekst)."; +$LANG["validation_no_email_from_field"] = "Prosimy o e-mail "z pola"."; +$LANG["validation_no_email_template_name"] = "Podaj e-mail nazwę szablonu."; +$LANG["validation_no_email_template_view_id"] = "Wybierz Pokaż, aby co tę wiadomość szablonu powinny być udokumentowane."; +$LANG["validation_no_email_template_view_mapping_value"] = "Proszę wskazać, kiedy należy wysłać e-mail."; +$LANG["validation_no_enabled_themes"] = "Proszę upewnić się, że co najmniej jednego tematu jest aktywne."; +$LANG["validation_no_first_name"] = "Proszę podać swoje imię."; +$LANG["validation_no_form_field_name"] = "Proszę podać wszystkie nazwy pól formularza."; +$LANG["validation_no_form_field_single"] = "Proszę podać wartość pola formularza."; +$LANG["validation_no_form_id"] = "Formularz ID nie został określony. Zaloguj się i spróbuj ponownie."; +$LANG["validation_no_form_name"] = "Wprowadź nazwę formularza."; +$LANG["validation_no_form_url"] = "Proszę podać adres URL formularza."; +$LANG["validation_no_last_name"] = "Proszę podać swoje nazwisko."; +$LANG["validation_no_login_page"] = "Proszę wskazać, która strona planują zostać wysłane po każdym zalogowaniu"; +$LANG["validation_no_logout_url"] = "Podaj wyloguj URL."; +$LANG["validation_no_main_email_recipient"] = "Proszę podać co najmniej jednego głównego odbiorcy wiadomości e-mail (tj. nie CC lub BCC)."; +$LANG["validation_no_menu"] = "Wybierz menu dla tego konta."; +$LANG["validation_no_menu_id"] = "Wybierz menu."; +$LANG["validation_no_num_clients_per_page"] = "Proszę podać liczbę kont klienta na stronie."; +$LANG["validation_no_num_emails_per_page"] = "Podaj liczbę wiadomości e-mail do listy na stronie."; +$LANG["validation_no_num_form_fields"] = "Proszę podać liczbę pól do formularza."; +$LANG["validation_no_num_forms_per_page"] = "Proszę wpisać liczbę formularzy na stronie."; +$LANG["validation_no_num_menus_per_page"] = "Proszę podać numer menu do listy na stronie."; +$LANG["validation_no_num_modules_per_page"] = "Proszę podać liczbę modułów na stronie."; +$LANG["validation_no_num_option_lists_per_page"] = "Proszę podać numer z listy opcji na stronie."; +$LANG["validation_no_num_submissions_per_page"] = "Proszę podać liczbę wniosków do wyświetlenia na stronie."; +$LANG["validation_no_option_list_name"] = "Proszę podać nazwę listy opcji."; +$LANG["validation_no_page_titles"] = "Proszę podać tytuły stronę domyślną dla kont użytkowników."; +$LANG["validation_no_password"] = "Proszę wpisać hasło."; +$LANG["validation_no_program_name"] = "Podaj nazwę programu."; +$LANG["validation_no_second_password"] = "Wpisz ponownie swoje hasło."; +$LANG["validation_no_sessions_timeout"] = "Proszę wprowadzić limit czasu sesji."; +$LANG["validation_no_smart_fill_values"] = "Wprowadź nazwę pola formularza oraz adresu URL formularza."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "Nie określono zakładki"; +$LANG["validation_no_test_email_recipient"] = "Proszę podać adres e-mail, gdzie należy wysłać wiadomość testową."; +$LANG["validation_no_test_email_submission_id"] = "Proszę podać numer ID składania."; +$LANG["validation_no_theme"] = "Proszę wybrać temat."; +$LANG["validation_no_theme_swatch"] = "Proszę wybrać próbkę do wybranego tematu."; +$LANG["validation_no_timezone_offset"] = "Podaj offset strefy czasowej."; +$LANG["validation_no_titles"] = "Proszę podać tytuł strony."; +$LANG["validation_no_two_column_names"] = "Przepraszamy, ale nie mogą wejść do tej samej nazwie kolumny bazy danych dwa razy."; +$LANG["validation_no_ui_language"] = "Wybierz język interfejsu."; +$LANG["validation_no_url"] = "Proszę podać adres URL."; +$LANG["validation_no_username"] = "Podaj swoją nazwę użytkownika."; +$LANG["validation_no_username_or_js"] = "Należy wpisać nazwę użytkownika. Proszę włączyć obsługę JavaScript w przeglądarce."; +$LANG["validation_no_view_fields"] = "Twoje stanowisko nie zawiera żadnych pól! Musisz przypisać przynajmniej jedno pole aby można było mówić coś pokazać się w widoku."; +$LANG["validation_no_view_fields_selected"] = "Proszę wybrać jeden lub więcej pól, aby dodać do widoku."; +$LANG["validation_no_view_name"] = "Proszę podać nazwę widoku."; +$LANG["validation_num_rows_to_add"] = "Określ liczbę dodawanych wierszy."; +$LANG["validation_option_list_name_taken"] = "Niestety, nazwa ta lista opcji jest już zajęta. Proszę wybrać nową nazwę."; +$LANG["validation_password_in_password_history"] = "Bezpieczeństwa, nie można wpisać to samo hasło, jak każdy z ostatnich {\$history_size} hasła. Wprowadź inne hasło."; +$LANG["validation_passwords_different"] = "Proszę się upewnić czy hasła są identyczne."; +$LANG["validation_please_enter_search_date_range"] = "Wybierz zakres dat wyszukiwania."; +$LANG["validation_please_enter_search_keyword"] = "Wprowadź słowa kluczowe."; +$LANG["validation_select_field_type"] = "Proszę wybrać typ pola."; +$LANG["validation_select_submissions_to_copy"] = "Wybierz te zgłoszenia, które chcesz skopiować."; +$LANG["validation_select_submissions_to_delete"] = "Proszę wybrać te wnioski chcesz usunąć."; +$LANG["validation_smart_fill_cannot_fill"] = "Niestety, nie możemy wypełnić tego pola."; +$LANG["validation_smart_fill_invalid_field_type"] = "Nie udało nam się znaleźć pole, ale nie jest rozwijane, pola wyboru lub grupy radiowej."; +$LANG["validation_smart_fill_no_field_found"] = "Niestety, nie mogliśmy znaleźć pole formularza o tej samej nazwie na określonej stronie."; +$LANG["validation_smart_fill_no_page"] = "Proszę znaleźć stronę zawierającą pole, które chcesz wypełnić automatycznie przykładowymi danymi."; +$LANG["validation_smart_fill_upload_all_pages"] = "Proszę przesłać wszystkie strony w formularzu."; +$LANG["validation_upload_folder_not_writable"] = "Ten folder tymczasowy przesłać określone przez instalacji PHP nie jest zapisywalny. Do tego jest stały, pliki nie mogą być przesłane za pośrednictwem formularza Tools (lub jakiegokolwiek innego programu PHP). Proszę skontaktować się z dostawcą usług hostingowych."; +$LANG["validation_upload_html_files_only"] = "Proszę przesłać tylko pliki HTML."; +$LANG["validation_username_taken"] = "Przepraszamy, że nazwa użytkownika jest już zajęta. Podaj inną nazwę."; +$LANG["validation_wrong_password"] = "Przepraszamy, że hasło nie pasuje."; +$LANG["word_about"] = "O"; +$LANG["word_access"] = "Access"; +$LANG["word_account"] = "Konto"; +$LANG["word_account_sp"] = "Konto (s)"; +$LANG["word_accounts"] = "Konta"; +$LANG["word_action"] = "Działanie"; +$LANG["word_active"] = "Aktywny"; +$LANG["word_add"] = "Dodaj"; +$LANG["word_add_rightarrow"] = "Dodaj »"; +$LANG["word_add_uc_rightarrow"] = "Dodaj »"; +$LANG["word_administration"] = "Administracja"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Po"; +$LANG["word_aquamarine"] = "Akwamaryn"; +$LANG["word_asc"] = "Rosnąco"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«powrót"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Przed"; +$LANG["word_benefits"] = "Zalety"; +$LANG["word_blue"] = "Niebieski"; +$LANG["word_cancel"] = "Anulować"; +$LANG["word_cc_c"] = "DW:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Lista kontrolna"; +$LANG["word_client"] = "Klient"; +$LANG["word_client_c"] = "Klient:"; +$LANG["word_clients"] = "Klienci"; +$LANG["word_close"] = "ZAMKNIJ"; +$LANG["word_code"] = "Kod"; +$LANG["word_column"] = "Kolumna"; +$LANG["word_columns"] = "Kolumny"; +$LANG["word_columns_sp"] = "Kolumna (s)"; +$LANG["word_complete"] = "KOMPLETNE"; +$LANG["word_configuration"] = "Konfiguracja"; +$LANG["word_content"] = "Treść"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Dalej »"; +$LANG["word_copy"] = "Kopiuj"; +$LANG["word_custom"] = "Niestandardowy"; +$LANG["word_data"] = "Dane"; +$LANG["word_date"] = "Data"; +$LANG["word_debugging_c"] = "Debugowanie:"; +$LANG["word_delete"] = "USUŃ"; +$LANG["word_desc"] = "Malejąco"; +$LANG["word_direct"] = "Bezpośrednio"; +$LANG["word_disabled"] = "Dezaktywowany"; +$LANG["word_documentation"] = "Dokumentacja"; +$LANG["word_done"] = "Sporządzono"; +$LANG["word_drawbacks"] = "Wady"; +$LANG["word_dropdown"] = "Rozwijane"; +$LANG["word_edit"] = "EDYTUJ"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "E-MAIL"; +$LANG["word_email_c"] = "E-mail:"; +$LANG["word_emails"] = "E-maile"; +$LANG["word_enabled"] = "Włączone"; +$LANG["word_equals"] = "Równe"; +$LANG["word_error"] = "Błąd"; +$LANG["word_error_c"] = "Błąd:"; +$LANG["word_examples_c"] = "Przykłady:"; +$LANG["word_external"] = "Zewnętrzne"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Pole"; +$LANG["word_field_sp"] = "Pole(a)"; +$LANG["word_fields"] = "Obszary"; +$LANG["word_fields_sp"] = "Field (s)"; +$LANG["word_file"] = "Plik"; +$LANG["word_file_b_uc"] = "[PLIK]"; +$LANG["word_files"] = "Pliki"; +$LANG["word_filters"] = "Filtry"; +$LANG["word_filters_sp"] = "Filtr (s)"; +$LANG["word_for"] = "by znaleźć"; +$LANG["word_form"] = "Formularz"; +$LANG["word_form_c"] = "Formularz:"; +$LANG["word_formatting"] = "Formatowanie"; +$LANG["word_forms"] = "Formularze"; +$LANG["word_found"] = "Znalazł"; +$LANG["word_from"] = "Od"; +$LANG["word_from_c"] = "Od:"; +$LANG["word_general"] = "Ogólny"; +$LANG["word_green"] = "Zielony"; +$LANG["word_grey"] = "Szary"; +$LANG["word_height"] = "Wysokość"; +$LANG["word_help"] = "Pomocy"; +$LANG["word_hidden"] = "Ukryty"; +$LANG["word_highlight"] = "Wyróżnij"; +$LANG["word_horizontal"] = "Poziome"; +$LANG["word_hour"] = "Godzina"; +$LANG["word_hours"] = "Godziny"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Grafika"; +$LANG["word_incomplete"] = "Niekompletne"; +$LANG["word_install"] = "Zainstaluj"; +$LANG["word_installation"] = "Instalacja"; +$LANG["word_internal"] = "Wewnętrzny"; +$LANG["word_language"] = "Język"; +$LANG["word_large"] = "Duży"; +$LANG["word_like"] = "Zawierające"; +$LANG["word_login"] = "LOGIN"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Wyloguj"; +$LANG["word_main"] = "Podstawowe"; +$LANG["word_medium"] = "Średni"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menu"; +$LANG["word_minutes"] = "minut"; +$LANG["word_misc"] = "Różne"; +$LANG["word_module"] = "Moduł"; +$LANG["word_modules"] = "Moduły"; +$LANG["word_na"] = "Niedostępny"; +$LANG["word_name"] = "Imię"; +$LANG["word_name_c"] = "Nazwa:"; +$LANG["word_never"] = "Nigdy"; +$LANG["word_next_rightarrow"] = "następna »"; +$LANG["word_next_step_rightarrow"] = "NEXT STEP »"; +$LANG["word_no"] = "Nie"; +$LANG["word_none"] = "Żaden"; +$LANG["word_notes"] = "Notatki"; +$LANG["word_notification"] = "Powiadomienia"; +$LANG["word_number"] = "Numer"; +$LANG["word_off"] = "Wyłączony"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "W porządku"; +$LANG["word_on"] = "Na"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Opcje"; +$LANG["word_orange"] = "Pomarańczowy"; +$LANG["word_order"] = "Porządkuj"; +$LANG["word_other"] = "Inny"; +$LANG["word_other_c"] = "Inne:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Strona:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Hasło"; +$LANG["word_password_c"] = "Hasło:"; +$LANG["word_pending"] = "Oczekujący"; +$LANG["word_permissions"] = "Dozwolenia"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«poprzednie"; +$LANG["word_private"] = "Prywatne"; +$LANG["word_public"] = "Public"; +$LANG["word_purple"] = "Purpurowy"; +$LANG["word_recipient"] = "Odbiorcy"; +$LANG["word_recipient_sp"] = "Odbiorca(y)"; +$LANG["word_red"] = "Czerwony"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Usunąć"; +$LANG["word_remove_uc_leftarrow"] = "«usuń"; +$LANG["word_reply_to"] = "Odpowiedź-do"; +$LANG["word_reply_to_c"] = "Odpowiedź-do:"; +$LANG["word_required"] = "Wymagany"; +$LANG["word_reset"] = "Wyzeruj"; +$LANG["word_resolved"] = "Rozwiązane"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rząd"; +$LANG["word_search"] = "Szukaj"; +$LANG["word_searchable"] = "Przeszukiwać"; +$LANG["word_select"] = "Wybierz"; +$LANG["word_setting"] = "Ustawienie"; +$LANG["word_settings"] = "USTAWIENIA"; +$LANG["word_show"] = "Pokazać"; +$LANG["word_size"] = "Rozmiar"; +$LANG["word_skipped"] = "Pominięto"; +$LANG["word_small"] = "Mały"; +$LANG["word_solution"] = "Rozwiązanie"; +$LANG["word_sortable"] = "Porządkujące"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Wyrażenie"; +$LANG["word_subject"] = "Temat"; +$LANG["word_subject_c"] = "Temat"; +$LANG["word_submenu"] = "Podmenu"; +$LANG["word_submission"] = "Zgłoszenie"; +$LANG["word_submissions"] = "Zgłoszenia"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Tekst"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Tekstowe"; +$LANG["word_theme"] = "Theme"; +$LANG["word_themes"] = "Tematy"; +$LANG["word_time"] = "Czas"; +$LANG["word_tiny"] = "Malutki"; +$LANG["word_tips"] = "Porady"; +$LANG["word_today"] = "Dzisiaj"; +$LANG["word_truncate_q"] = "Obciąć?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Nieznany"; +$LANG["word_update"] = "AKTUALIZUJ"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Użytkownik"; +$LANG["word_username"] = "Nazwa użytkownika"; +$LANG["word_username_c"] = "Nazwa użytkownika:"; +$LANG["word_validation"] = "Walidacja"; +$LANG["word_value"] = "Wartość"; +$LANG["word_value_sp"] = "Wartość(i)"; +$LANG["word_verified"] = "Zweryfikowane"; +$LANG["word_verify"] = "Zweryfikować"; +$LANG["word_version"] = "Wersja"; +$LANG["word_vertical"] = "Pionowe"; +$LANG["word_view"] = "Widok"; +$LANG["word_views"] = "Widok"; +$LANG["word_warning"] = "Uwaga!"; +$LANG["word_warning_c"] = "Ostrzeżenie:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Witamy!"; +$LANG["word_width_c"] = "szerokość:"; +$LANG["word_words"] = "Słowa"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Żółty"; +$LANG["word_yes"] = "Tak"; \ No newline at end of file diff --git a/global/lang/pt.php b/global/lang/pt.php new file mode 100644 index 00000000..14d3aea2 --- /dev/null +++ b/global/lang/pt.php @@ -0,0 +1,1219 @@ +Atenção! Você selecionou {\$num_selected_on_page} observações sobre esta página e {\$num_selected_on_other_pages} em outras páginas. Por favor, escolha uma das seguintes opções:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Atenção! Você não selecionou nenhum observações nesta página, mas você selecionou {\$num_selected_on_other_pages} em outras páginas. Por favor, confirme que deseja excluir estas alegações.
    "; +$LANG["confirm_delete_view"] = "Você tem certeza que quer apagar esta visão?"; +$LANG["confirm_refresh_page"] = "Tem certeza de que quer atualizar a página? Este perderá as alterações que você fez."; +$LANG["confirm_save_change_before_redirect"] = "Um ou mais campos foram atualizados. Gostaria de salvar as alterações antes de redirecionar?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Tem certeza que deseja Smart Preencha os nomes de coluna de banco de dados? Isso irá substituir os valores existentes."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Esta opção gera automaticamente os nomes de banco de dados coluna com base nos campos texto do ecrã, de modo que o conteúdo da tabela de banco de dados são mais fáceis de ler."; +$LANG["confirm_smart_fill_display_names"] = "Tem certeza que deseja Smart Preencha os nomes de exibição? Isso irá substituir os valores existentes."; +$LANG["confirm_ungroup_option_list"] = "Tem certeza de que deseja desagrupar esta lista de opções? Todas as opções serão agrupados em uma lista única, não agrupada."; +$LANG["confirm_uninstall_module"] = "Tem certeza que pretende desinstalar este módulo? Todos os dados do módulo será perdido."; +$LANG["date_AM"] = "am"; +$LANG["date_Fri"] = "Sex"; +$LANG["date_Friday"] = "Sexta"; +$LANG["date_Mon"] = "Seg"; +$LANG["date_Monday"] = "Segunda"; +$LANG["date_PM"] = "pm"; +$LANG["date_Sat"] = "Sab"; +$LANG["date_Saturday"] = "Sábado"; +$LANG["date_Sun"] = "Dom"; +$LANG["date_Sunday"] = "Domingo"; +$LANG["date_Thu"] = "Qui"; +$LANG["date_Thursday"] = "Quinta"; +$LANG["date_Tue"] = "Ter"; +$LANG["date_Tuesday"] = "Terça"; +$LANG["date_Wed"] = "Qua"; +$LANG["date_Wednesday"] = "Quarta"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Abril"; +$LANG["date_month_August"] = "Agosto"; +$LANG["date_month_December"] = "Dezembro"; +$LANG["date_month_February"] = "Fevereiro"; +$LANG["date_month_January"] = "Janeiro"; +$LANG["date_month_July"] = "Julho"; +$LANG["date_month_June"] = "Junho"; +$LANG["date_month_March"] = "Março"; +$LANG["date_month_May"] = "Mai"; +$LANG["date_month_November"] = "Novembro"; +$LANG["date_month_October"] = "Outubro"; +$LANG["date_month_September"] = "Setembro"; +$LANG["date_month_short_Apr"] = "Abr"; +$LANG["date_month_short_Aug"] = "Ago"; +$LANG["date_month_short_Dec"] = "Dez"; +$LANG["date_month_short_Feb"] = "Fev"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Poder"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Out"; +$LANG["date_month_short_Sep"] = "Set"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "A conta de usuário foi eliminada."; +$LANG["notify_account_updated"] = "Sua conta foi atualizada com sucesso."; +$LANG["notify_add_display_values"] = "Adicionar Mostrar Valores"; +$LANG["notify_admin_menu_updated"] = "O menu de administração foi atualizado."; +$LANG["notify_admin_theme_overridden"] = "O tema do administrador foi substituído manualmente."; +$LANG["notify_allow_url_fopen_not_set"] = "Desculpe, este teste não pode ser executado em seu servidor web. Exige allow_url_fopen para ser definido como 1 no seu arquivo php.ini. Esta configuração permite o PHP para acessar os arquivos através de uma URL, que é necessário para executar este teste. Você pode testá-lo manualmente, o upload de um arquivo para essa pasta via FTP, depois tentando acessá-lo na URL que você forneceu."; +$LANG["notify_change_temp_password"] = "Você só logado com uma senha temporária. Você deve redefinir sua senha agora!"; +$LANG["notify_click_to_edit_new_submission"] = "Clique aqui para editar o novo envio."; +$LANG["notify_client_account_menus_updated"] = "A conta de cliente (s) foram atualizados para o {\$menu_name} menu. Agora você pode excluir o menu que foi anteriormente associado à conta (s)."; +$LANG["notify_client_account_not_updated"] = "A conta de cliente não pôde ser atualizado."; +$LANG["notify_client_account_themes_updated"] = "A conta de cliente (s) foram atualizados para o {\$theme} tema. Agora você pode desativar o tema anteriormente associado à conta (s)."; +$LANG["notify_client_account_updated"] = "A conta de cliente foi atualizado com sucesso."; +$LANG["notify_client_menu_deleted"] = "O menu de cliente foi excluído."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "O menu foi apagado, mas as contas de cliente que se segue agora já não têm um menu! Você precisa atualizar as seguintes contas:"; +$LANG["notify_client_menu_updated"] = "O menu do cliente foi atualizado."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Desculpe, o menu que apenas tentou excluir já está sendo usado pelos clientes listados abaixo. A fim de excluir o menu primeiro você precisa para atribuir a clientes de outros menus. Clique no nome do cliente para editar essa conta individual, ou atribuir todas as contas de um menu diferente usando a lista suspensa abaixo."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Desculpe, um dos temas que você acabou de deficiência já estão sendo utilizados pelas contas de cliente que se segue. Para desativar o tema terá primeiro de atribuir a cada cliente para outro tema. Clique no nome do cliente para editar essa conta individual, ou atribuir todas as contas a um tema usando a lista suspensa abaixo."; +$LANG["notify_edit_email_fields_link"] = "Clique aqui para especificar quais os campos do formulário são campos de e-mail, para que possa orientá-las em seus modelos de e-mail."; +$LANG["notify_edit_field_new_field"] = "Este é um novo campo. Você vai precisar atualizar a página principal, antes de ser plenamente capaz de editar este campo."; +$LANG["notify_edit_option_list_after_save"] = "Você deve selecionar uma lista de opções e depois em Salvar alterações antes de ser capaz de editá-lo."; +$LANG["notify_email_field_config_deleted"] = "A configuração do e-mail foi excluída."; +$LANG["notify_email_fields_not_updated"] = "Desculpe, não foi possível atualizar os campos e-mail."; +$LANG["notify_email_fields_updated"] = "Os campos de e-mail foram atualizados."; +$LANG["notify_email_not_sent"] = "Desculpe, o e-mail não pôde ser enviada. Entre em contato com o administrador do site, no endereço abaixo."; +$LANG["notify_email_not_sent_c"] = "Desculpe, o e-mail não pôde ser enviado:"; +$LANG["notify_email_sent"] = "O e-mail (s) foram enviados."; +$LANG["notify_email_template_deleted"] = "O e-mail Template foi eliminada."; +$LANG["notify_email_template_updated"] = "O e-mail Template foi atualizado."; +$LANG["notify_enabled_module_list_updated"] = "A lista de módulos habilitados foi atualizado."; +$LANG["notify_error_saving_fields"] = "Houve um erro ao salvar os campos."; +$LANG["notify_field_changes_saved"] = "As alterações no seu campo (s) foram salvas."; +$LANG["notify_field_options_smart_filled"] = "Suas opções de campo foram inteligentes Cheio."; +$LANG["notify_field_selected"] = "O campo foi selecionado. Clique aqui para voltar à lista de campo principal."; +$LANG["notify_field_updated"] = "Este campo tem sido atualizado."; +$LANG["notify_file_not_uploaded"] = "O arquivo não pôde ser carregado."; +$LANG["notify_file_uploaded"] = "O arquivo foi enviado com sucesso."; +$LANG["notify_filters_not_updated"] = "Houve um erro na atualização filtros este cliente submissão."; +$LANG["notify_filters_updated"] = "Os filtros de apresentação foram atualizados para este cliente."; +$LANG["notify_folder_correct_permissions"] = "Esta pasta tem as permissões corretas."; +$LANG["notify_folder_url_match"] = "A pasta e URL parecem corresponder corretamente."; +$LANG["notify_folder_url_no_access"] = "Este teste não pôde ser realizada desde o PHP não foi capaz de acessar o URL. Isto é geralmente causado pela senha URL protegido com um arquivo. Htaccess."; +$LANG["notify_folder_url_no_match"] = "Esta pasta combinação de URL não parecem ser uma partida."; +$LANG["notify_folder_url_unknown_error"] = "Ocorreu um erro desconhecido. Você pode testá-lo manualmente, o upload de um arquivo para essa pasta via FTP, depois tentando acessá-lo na URL que você forneceu."; +$LANG["notify_form_access_type_email_info"] = "Esta forma tem o tipo de acesso de administrador, por isso não os clientes têm acesso a ela e não estão listados abaixo na lista suspensa."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Desculpe, um formulário com o ID não existe."; +$LANG["notify_form_field_not_added"] = "O campo de formulário '{\$fieldname}' não pode ser adicionado."; +$LANG["notify_form_field_options_updated"] = "As opções de campo de formulário foram atualizados."; +$LANG["notify_form_field_removed"] = "O campo de formulário foi removido com sucesso."; +$LANG["notify_form_fields_removed"] = "Os campos do formulário foram removidos com sucesso."; +$LANG["notify_form_not_updated_notify_admin"] = "Sua forma não poderia ser atualizado. Entre em contato com o administrador do site para relatar esse problema."; +$LANG["notify_form_settings_updated"] = "Suas configurações de forma foram atualizados com sucesso."; +$LANG["notify_form_submission_updated"] = "O envio do formulário foi atualizado."; +$LANG["notify_form_tabs_updated"] = "Os separadores foram atualizados."; +$LANG["notify_form_updated"] = "O formulário foi atualizado com sucesso."; +$LANG["notify_form_views_updated"] = "Modos de Exibição forma foram atualizados."; +$LANG["notify_install_invalid_db_info"] = "Desculpe, não foi possível conectar ao banco de dados usando as informações fornecidas. A mensagem de erro do banco de dados retornado é: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Seu formulário foi criado! Você pode configurar o formulário através destas guias."; +$LANG["notify_invalid_account_information_in_sessions"] = "As informações de conta armazenadas em sessões é inválido. Faça o login novamente abaixo."; +$LANG["notify_invalid_license_key"] = "Desculpe, isso não parece ser uma chave de licença válida. Por favor, tente entrar novamente."; +$LANG["notify_invalid_permissions"] = "Você não tem permissão para acessar esta página. Você foi desconectado."; +$LANG["notify_invalid_search_dates"] = "Por favor use o datepicker para introduzir uma data válida ou datas."; +$LANG["notify_invalid_upload_folder"] = "A pasta de upload é inválido ou não é gravável."; +$LANG["notify_lang_list_updated"] = "A lista de idiomas disponíveis UI foi atualizado."; +$LANG["notify_login_info_emailed"] = "Suas informações de login foi enviada para você."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, este módulo já está instalado!"; +$LANG["notify_module_installed"] = "O módulo foi instalado. Clique aqui para selecionar o módulo."; +$LANG["notify_module_list_updated"] = "A lista de módulos foi atualizada."; +$LANG["notify_module_uninstalled"] = "O módulo foi desinstalado."; +$LANG["notify_module_updated"] = "O módulo {\$module} foi atualizada para {\$version}. Clique aqui para selecionar o módulo ."; +$LANG["notify_multi_field_selected"] = "O campo foi selecionado. Clique aqui para visualizar e editar as opções de campo."; +$LANG["notify_multi_field_updated"] = "Este campo tem sido atualizado. Você será capaz de configurar as opções de campo após a criação do formulário."; +$LANG["notify_multiple_fields_found"] = "Vários elementos foram encontrados com este nome de campo ({\$field_name}). Isso pode ocorrer se a página contiver mais de uma forma ou se você acidentalmente nomeado um dos seus formulários igual a outro. Por favor, escolha o que deseja na lista abaixo."; +$LANG["notify_new_default_view_created"] = "A View novo padrão, contendo todos os seus campos de formulário foi criado."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "No ID conta do usuário foi encontrada em sessões. Faça o login novamente abaixo."; +$LANG["notify_no_api_installed"] = "Você não tem a API instalado"; +$LANG["notify_no_client_permissions"] = "Não há configurações disponíveis para edição."; +$LANG["notify_no_email_template_selected"] = "Por favor, selecione o e-mail modelo."; +$LANG["notify_no_emails_defined"] = "No emails foram definidas para este formulário. Para adicionar um novo nome, clique no botão abaixo."; +$LANG["notify_no_field_settings"] = "Este tipo de campo não contém quaisquer definições extra."; +$LANG["notify_no_fields_in_tab"] = "Este guia não contém todos os campos."; +$LANG["notify_no_option_lists"] = "Não há opção de listas definidas. Clique no botão abaixo para criar um novo."; +$LANG["notify_no_test_submission"] = "Formulário de Ferramentas não recebeu uma apresentação teste bem-sucedido ainda."; +$LANG["notify_no_user_email_fields_configured"] = "Observação: se você quiser enviar um e-mail para qualquer endereço de e-mail que foi incluído no formulário, você primeiro precisa configurar os campos de e-mail forma."; +$LANG["notify_no_views"] = "Seu formulário não tem nenhum Views set up! Você vai precisar de pelo menos uma vista, a fim de gerenciar dados de seu formulário."; +$LANG["notify_no_views_assigned_to_client_form"] = "Parece que a sua conta de usuário não tenha sido atribuído a qualquer Vistas formulário, assim você não será capaz de ver todos os dados. Entre em contato com o administrador para obter mais ajuda."; +$LANG["notify_no_views_defined"] = "Você não tem qualquer Views definido. Você não será capaz de visualizar apresentações desta forma, a menos que, pelo menos, uma View é criado. Clique no botão abaixo para criar a visualização padrão."; +$LANG["notify_option_list_deleted"] = "A lista de opção foi excluída."; +$LANG["notify_option_list_updated"] = "A lista de opções foi atualizado."; +$LANG["notify_public_form_omit_list_updated"] = "O cliente omitir lista para este formulário foi atualizado."; +$LANG["notify_public_view_omit_list_updated"] = "O cliente omitir para esta lista foi atualizada."; +$LANG["notify_required_admin_pages"] = "As páginas seguintes são obrigatórios no menu de administração: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Desculpe, não houve qualquer atividade por um tempo por isso tivemos de desconectá-lo. Faça o login novamente abaixo."; +$LANG["notify_setup_options_updated"] = "As opções de configuração foram atualizados."; +$LANG["notify_smart_fill_field_not_found"] = "Não foi possível encontrar um campo com esse nome ({\$field_name}) na forma (s) especificado. Você pode configurar manualmente o tipo de campo abaixo, ou clique no botão "Passar para editar este campo mais tarde."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Seu arquivo (s) foi carregado com sucesso. Experimente clicar no botão Smart Fill para tentar novamente. Se este passo falhar, você terá de pular esta etapa e configurar os campos do formulário manally mais tarde."; +$LANG["notify_smart_fill_submitted"] = "O formulário foi enviado. Dependendo do tamanho da sua forma eo número de opções de campo, isso pode demorar algum tempo."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Desculpe, um ou mais dos arquivos que você digitou não pôde ser carregado. Você terá de pular esta etapa e configurar os campos manualmente."; +$LANG["notify_submission_and_files_deleted"] = "A apresentação e qualquer arquivo (s) a ela associados foram eliminados com êxito."; +$LANG["notify_submission_copied"] = "O envio foi copiado."; +$LANG["notify_submission_copied_edit"] = "O envio foi copiado. Você pode editá-lo abaixo."; +$LANG["notify_submission_deleted"] = "A apresentação foi excluído com êxito."; +$LANG["notify_submission_deleted_with_problems"] = "A apresentação foi excluído, mas os seguintes problemas foram encontrados ao tentar excluir o seguinte arquivo (s):"; +$LANG["notify_submission_id_not_found"] = "A apresentação ID não foi encontrado."; +$LANG["notify_submission_not_updated"] = "A apresentação não pôde ser atualizado."; +$LANG["notify_submissions_and_files_deleted"] = "As declarações e qualquer arquivo (s) que lhes estão associados foram eliminados com êxito."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} submissões foram copiadas."; +$LANG["notify_submissions_deleted"] = "As observações foram apagados com sucesso."; +$LANG["notify_submissions_deleted_with_problems"] = "As conclusões foram excluídos, mas os seguintes problemas foram encontrados ao tentar excluir o seguinte arquivo (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Seu e-mail de teste não pôde ser enviada."; +$LANG["notify_theme_cache_folder_not_writable"] = "Esta pasta de cache do tema não é gravável. A fim de que este tema, o {\$folder} pasta precisa ler inteiro têm permissões de gravação."; +$LANG["notify_theme_list_updated"] = "A lista tema foi atualizado."; +$LANG["notify_themes_settings_updated"] = "Suas configurações de tema foram atualizados."; +$LANG["notify_view_deleted"] = "The View foi eliminada."; +$LANG["notify_view_group_deleted"] = "Ver o grupo foi excluído."; +$LANG["notify_view_missing_columns"] = "Oops! Desculpe, esta visão não foi totalmente configurado ainda."; +$LANG["notify_view_missing_columns_admin_fix"] = "Clique aqui para especificar quais campos devem aparecer como colunas nesta página."; +$LANG["notify_view_updated"] = "The View foi atualizado."; +$LANG["notify_your_email_sent"] = "Seu e-mail foi enviado com sucesso."; +$LANG["phrase_100_per_page"] = "100 por página"; +$LANG["phrase_10_per_page"] = "10 por página"; +$LANG["phrase_15_per_page"] = "15 por página"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 por página"; +$LANG["phrase_25_per_page"] = "25 por página"; +$LANG["phrase_2_code"] = "2. Código"; +$LANG["phrase_2_columns"] = "2 Colunas"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 Colunas"; +$LANG["phrase_4_columns"] = "4 Colunas"; +$LANG["phrase_50_per_page"] = "50 por página"; +$LANG["phrase_accepting_submissions"] = "(pedidos aceitar)"; +$LANG["phrase_access_admin_account_c"] = "Você pode acessar sua conta de administração aqui:"; +$LANG["phrase_access_type"] = "Tipo de Acesso"; +$LANG["phrase_account_info"] = "Informações sobre a conta"; +$LANG["phrase_account_settings"] = "Configurações da Conta"; +$LANG["phrase_action_needed"] = "Ação Necessária"; +$LANG["phrase_add_client"] = "ADICIONAR CLIENTE"; +$LANG["phrase_add_client_menu"] = "Adicionar Menu Cliente"; +$LANG["phrase_add_default_settings_rightarrow"] = "Adicionar configurações padrão »"; +$LANG["phrase_add_field"] = "Adicionar Campo"; +$LANG["phrase_add_fields"] = "ADICIONAR CAMPOS"; +$LANG["phrase_add_fields_rightarrow"] = "Adicionar Campo (s) »"; +$LANG["phrase_add_form"] = "Adicionar Formulário"; +$LANG["phrase_add_form_external"] = "Add Form - External"; +$LANG["phrase_add_form_internal"] = "Add Form - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Adicionar novo grupo »"; +$LANG["phrase_add_num_rows"] = "Adicione {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Adicionar botão de submissão"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Adicionando um formulário de várias páginas com a API"; +$LANG["phrase_adding_single_page_form"] = "Adicionando uma forma única página com a API"; +$LANG["phrase_admin_menu"] = "Menu Administrador"; +$LANG["phrase_admin_only"] = "Somente Administrador"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrador Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Advanced »Configurações"; +$LANG["phrase_all_X_results_selected"] = "Todos os {\$numresults} Resultados seleccionados"; +$LANG["phrase_all_clients"] = "Todos os clientes"; +$LANG["phrase_all_clients_except_c"] = "Todos os clientes, exceto:"; +$LANG["phrase_all_clients_have_access"] = "(todos os clientes têm acesso)"; +$LANG["phrase_all_fields"] = "Todos os campos"; +$LANG["phrase_all_fields_displayed"] = "Todos os campos são exibidos"; +$LANG["phrase_all_statuses"] = "Todos os estados"; +$LANG["phrase_all_submissions"] = "Todas as observações"; +$LANG["phrase_allow_fields_edited"] = "Permitir que os campos a serem editados"; +$LANG["phrase_alphanumeric"] = "Alfanuméricos (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Aplicar deslocamento de fuso horário"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Atribuir todas as contas de clientes listados em {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Atribuir todas as contas de clientes listados em {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "No Fim"; +$LANG["phrase_at_start"] = "Em Iniciar"; +$LANG["phrase_author_link"] = "Link Autor"; +$LANG["phrase_auto_disable_account"] = "Auto-conta desactivar após tentativas fracassadas de login #"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Clientes Disponíveis"; +$LANG["phrase_available_fields"] = "Campos disponíveis"; +$LANG["phrase_available_option_lists"] = "Listas disponíveis Opção"; +$LANG["phrase_available_swatches"] = "Amostras disponíveis"; +$LANG["phrase_available_swatches_c"] = "Amostras disponíveis:"; +$LANG["phrase_available_tabs"] = "Tabs disponíveis"; +$LANG["phrase_available_views"] = "Visto Livre"; +$LANG["phrase_awaiting_form_submission"] = "Aguardando envio do formulário."; +$LANG["phrase_back_to_field_list"] = "lista «voltar ao campo"; +$LANG["phrase_back_to_search_results"] = "voltar aos resultados de pesquisa"; +$LANG["phrase_base_view_on"] = "Ver base em ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Mudar informações de login"; +$LANG["phrase_characters_limit_p"] = "caracteres de limite."; +$LANG["phrase_check_db_settings_try_again"] = "Por favor, verifique novamente suas configurações de banco de dados e clique no botão Continuar novamente."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Verifique URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Limpar Lista Omitir"; +$LANG["phrase_client_account_settings"] = "Cliente Configurações da Conta"; +$LANG["phrase_client_field"] = "Campo Cliente"; +$LANG["phrase_client_map_filters"] = "Cliente Mapa filtros »"; +$LANG["phrase_client_may_edit"] = "Cliente pode editar"; +$LANG["phrase_client_menu"] = "Menu Cliente"; +$LANG["phrase_clients_can_access_form"] = "Clientes que pode acessar o formulário"; +$LANG["phrase_clients_can_access_view"] = "Os clientes que podem acessar a Ver"; +$LANG["phrase_clients_cannot_access_form"] = "Clientes que não pode acessar o formulário"; +$LANG["phrase_clients_cannot_access_view"] = "Clientes que não pode acessar o Vista"; +$LANG["phrase_clients_may_edit"] = "Os clientes podem editar"; +$LANG["phrase_code_c"] = "Código de erro:"; +$LANG["phrase_code_markup_field"] = "Código / Markup Campo"; +$LANG["phrase_code_markup_type"] = "Código / Tipo Markup"; +$LANG["phrase_codes_c"] = "Os códigos de erro:"; +$LANG["phrase_column_width"] = "Largura da coluna"; +$LANG["phrase_company_name"] = "Nome da Empresa"; +$LANG["phrase_configure_form_email_fields"] = "Configurar Email Form Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Confirmar a concordância Pasta-URL"; +$LANG["phrase_connect_rows"] = "Conectar linhas"; +$LANG["phrase_copy_email_settings_from"] = "Copiar Configurações de e-mail ..."; +$LANG["phrase_copy_settings_from"] = "Copiar Configurações De ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Criar Conta"; +$LANG["phrase_create_admin_account"] = "Criar Conta admin"; +$LANG["phrase_create_config_file"] = "Criar arquivo de configuração"; +$LANG["phrase_create_database_tables"] = "Criar tabelas de banco"; +$LANG["phrase_create_default_view"] = "Criar Vista padrão"; +$LANG["phrase_create_file"] = "Criar Arquivo"; +$LANG["phrase_create_group"] = "Criar Grupo"; +$LANG["phrase_create_new_email"] = "Criar novo e-mail"; +$LANG["phrase_create_new_menu"] = "Criar novo menu"; +$LANG["phrase_create_new_option_list"] = "Criar lista nova opção"; +$LANG["phrase_create_new_option_list_group"] = "Criar grupo de lista nova opção"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Criar lista nova opção »"; +$LANG["phrase_create_new_view"] = "Criar Nova Vista"; +$LANG["phrase_create_new_view_group"] = "Criar Grupo Nova Vista"; +$LANG["phrase_custom_display_format"] = "Formato de exibição personalizado"; +$LANG["phrase_custom_recipient"] = "Destinatário Personalizado"; +$LANG["phrase_custom_url"] = "URL personalizada"; +$LANG["phrase_dark_blue"] = "Azul escuro"; +$LANG["phrase_data_type"] = "Tipo de Dados"; +$LANG["phrase_database_hostname"] = "Hostname Database"; +$LANG["phrase_database_name"] = "Base de dados"; +$LANG["phrase_database_password"] = "Database password"; +$LANG["phrase_database_settings"] = "Database Settings"; +$LANG["phrase_database_setup"] = "Configuração Base de Dados"; +$LANG["phrase_database_table_prefix"] = "Prefixo de tabela de banco de dados"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Formato de Data"; +$LANG["phrase_db_column"] = "Coluna BD"; +$LANG["phrase_db_setup_page_4"] = "4. Banco de dados de configuração"; +$LANG["phrase_default_client_account_theme"] = "Default Client Account Theme"; +$LANG["phrase_default_date_field_search_value"] = "Padrão de data valor de pesquisa de campo"; +$LANG["phrase_default_language"] = "Idioma padrão"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Timeout padrão Sessions"; +$LANG["phrase_default_sort_order"] = "Ordenação padrão"; +$LANG["phrase_default_tab_label"] = "Dados"; +$LANG["phrase_default_theme"] = "Tema padrão"; +$LANG["phrase_default_value"] = "Valor padrão"; +$LANG["phrase_default_values"] = "Valores padrão"; +$LANG["phrase_default_values_new_submissions"] = "Os valores padrão para novas submissões"; +$LANG["phrase_delete_field"] = "Excluir campo"; +$LANG["phrase_delete_form"] = "APAGAR FORMULÁRIO"; +$LANG["phrase_delete_row"] = "Excluir Linha"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Excluir arquivos associados ao excluir apresentação"; +$LANG["phrase_delete_view"] = "Excluir Ver"; +$LANG["phrase_disconnect_rows"] = "Desconectar linhas"; +$LANG["phrase_display_email"] = "Mostrar E-mail"; +$LANG["phrase_display_name"] = "Visualizar Nome"; +$LANG["phrase_display_text"] = "Visualizar Texto"; +$LANG["phrase_display_value"] = "Display Valor"; +$LANG["phrase_edit_admin_menu"] = "Editar Admin Menu"; +$LANG["phrase_edit_client"] = "Editar Cliente"; +$LANG["phrase_edit_client_menu"] = "Edit Menu Cliente"; +$LANG["phrase_edit_email_template"] = "Editar e-mail Template"; +$LANG["phrase_edit_field"] = "Editar campo"; +$LANG["phrase_edit_field_c"] = "Editar campo:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit tipo de acesso formulário]"; +$LANG["phrase_edit_option_list"] = "Editar Lista de Opção"; +$LANG["phrase_edit_submission"] = "Editar Envio"; +$LANG["phrase_edit_submission_label"] = "Editar Etiqueta Submission"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "CONFIGURAÇÃO DE EMAIL"; +$LANG["phrase_email_template"] = "Modelo de Email"; +$LANG["phrase_email_template_name"] = "E-mail nome do modelo"; +$LANG["phrase_error_learn_more"] = "Saiba mais sobre esse erro."; +$LANG["phrase_error_text_intro"] = "Corrija o seguinte erro (s) e novamente:"; +$LANG["phrase_errors_learn_more"] = "Clique sobre os códigos de erro para aprender mais."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "Forma externa"; +$LANG["phrase_external_form_info"] = "Informações do formulário externo"; +$LANG["phrase_external_your_own_form"] = "Externa (a sua própria forma)"; +$LANG["phrase_field_comments"] = "Comentários campo"; +$LANG["phrase_field_label"] = "Campo Label"; +$LANG["phrase_field_options"] = "Opções do campo de"; +$LANG["phrase_field_size"] = "Tamanho do Campo"; +$LANG["phrase_field_skipped"] = "Campo Skipped"; +$LANG["phrase_field_specific_settings"] = "Campo Configurações Específicas"; +$LANG["phrase_field_type"] = "Tipo de Campo"; +$LANG["phrase_field_type_no_validation"] = "Não existem regras de validação disponíveis para este tipo de campo."; +$LANG["phrase_field_types"] = "Tipos de campo"; +$LANG["phrase_field_value"] = "Valor do Campo"; +$LANG["phrase_field_values_to_display_values"] = "Valores de Campo »Display Valores"; +$LANG["phrase_final_touches_page_6"] = "6. Últimos retoques"; +$LANG["phrase_finalize_form"] = "Finalizar Formulário"; +$LANG["phrase_first_name"] = "Primeiro Nome"; +$LANG["phrase_footer_text"] = "Texto de Rodapé"; +$LANG["phrase_for_any_form_submission"] = "Para qualquer forma de apresentação"; +$LANG["phrase_for_view_submissions"] = "Submissões apenas que se encaixam no Ver seguinte (s)"; +$LANG["phrase_forgot_password"] = "ESQUECEU A SUA PALAVRA-PASSE?"; +$LANG["phrase_form_already_selected"] = "Forma já seleccionados"; +$LANG["phrase_form_email_field_b_c"] = "Forma [campo] e-mail:"; +$LANG["phrase_form_email_field_configuration"] = "Forma-mail Field Configuration"; +$LANG["phrase_form_email_fields"] = "Email campos de formulário"; +$LANG["phrase_form_field"] = "Campo de Formulário"; +$LANG["phrase_form_field_contents"] = "Campo Conteúdo forma"; +$LANG["phrase_form_field_name"] = "Nome do Campo de Formulário"; +$LANG["phrase_form_field_placeholders"] = "Campo de espaços reservados forma"; +$LANG["phrase_form_fields"] = "Campos de formulário"; +$LANG["phrase_form_info"] = "Formulário de Informações"; +$LANG["phrase_form_info_2"] = "2. Formulário de Informações"; +$LANG["phrase_form_list"] = "Lista de forma"; +$LANG["phrase_form_name"] = "Nome do Formulário"; +$LANG["phrase_form_page"] = "Forma Página"; +$LANG["phrase_form_placeholders"] = "PLACEHOLDERS FORMULÁRIO"; +$LANG["phrase_form_submission"] = "ENVIO DE FORMULÁRIO"; +$LANG["phrase_form_submissions"] = "Submissões do formulário"; +$LANG["phrase_form_type"] = "Tipo de formulário"; +$LANG["phrase_form_url"] = "URL do Formulário"; +$LANG["phrase_form_urls"] = "URLs forma"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formas atribuído a qualquer conta"; +$LANG["phrase_forms_page_default_message"] = "Formas mensagem de página padrão"; +$LANG["phrase_ft_installation"] = "Forma Ferramentas de Instalação de Script"; +$LANG["phrase_full_width"] = "Largura total"; +$LANG["phrase_getting_started"] = "começando"; +$LANG["phrase_global_placeholders"] = "PLACEHOLDERS GLOBAIS"; +$LANG["phrase_group_name"] = "Nome do Grupo"; +$LANG["phrase_group_options_q"] = "Opções de grupo?"; +$LANG["phrase_group_rows"] = "Agrupar linhas"; +$LANG["phrase_have_fun"] = "Divirta-se!"; +$LANG["phrase_highlight_colour"] = "Cor destaque"; +$LANG["phrase_html_email"] = "E-mail HTML"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Imagens / Mídia"; +$LANG["phrase_import_option_list_rightarrow"] = "Lista opção de importação »"; +$LANG["phrase_input_length"] = "Comprimento de entrada"; +$LANG["phrase_installation_help"] = "Ajuda instalação"; +$LANG["phrase_internal_form"] = "Formulário interna"; +$LANG["phrase_ip_address"] = "Endereço IP"; +$LANG["phrase_is_multi_page_form_q"] = "Isso é um formulário de várias páginas?"; +$LANG["phrase_label_response_placeholders"] = "Rótulo / Response Placeholders"; +$LANG["phrase_large_300px"] = "Grande (300px)"; +$LANG["phrase_large_400px"] = "Grande (400px)"; +$LANG["phrase_last_7_days"] = "Últimos 7 dias"; +$LANG["phrase_last_logged_in"] = "Ultima sessão em"; +$LANG["phrase_last_modified"] = "Última modificação"; +$LANG["phrase_last_modified_date"] = "Última data modificada"; +$LANG["phrase_last_name"] = "Sobrenome"; +$LANG["phrase_letters_only"] = "Somente letras"; +$LANG["phrase_light_brown"] = "Luz Brown"; +$LANG["phrase_limit_email_content"] = "Limite de teor de e-mail para campos em Vista"; +$LANG["phrase_loading_ellipsis"] = "Carregando ..."; +$LANG["phrase_log_in"] = "ENTRAR"; +$LANG["phrase_login_as_user"] = "Entrar como esse usuário"; +$LANG["phrase_login_info"] = "Entrar Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Painel de Entrada:"; +$LANG["phrase_login_panel_leftarrows"] = "«Entrar em Painel"; +$LANG["phrase_login_password"] = "Login Senha"; +$LANG["phrase_login_username"] = "Login Nome de Utilizador"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "URL de Saída"; +$LANG["phrase_main_nav"] = "Principal Nav"; +$LANG["phrase_main_settings"] = "Configurações principais"; +$LANG["phrase_manage_client"] = "Gerir Cliente"; +$LANG["phrase_manage_client_omit_list"] = "Gerenciar Cliente Omitir Lista"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Comprimento Max"; +$LANG["phrase_max_length_words_chars"] = "- Comprimento Max (palavras / caracteres)"; +$LANG["phrase_may_add_submissions"] = "Pode adicionar Submissões"; +$LANG["phrase_may_copy_submissions"] = "Pode copiar envios"; +$LANG["phrase_may_delete_submissions"] = "Pode excluir inscrições"; +$LANG["phrase_medium_150px"] = "Médio (150px)"; +$LANG["phrase_medium_200px"] = "Médio (200px)"; +$LANG["phrase_menu_name"] = "Nome do Menu"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "Comprimento mínimo da senha"; +$LANG["phrase_module_description"] = "Descrição do Módulo"; +$LANG["phrase_module_info"] = "Informações do Módulo"; +$LANG["phrase_module_nav"] = "Módulo Nav"; +$LANG["phrase_month_to_date"] = "Mês até a data"; +$LANG["phrase_multi_select"] = "Multi-seleccionar"; +$LANG["phrase_multi_select_dropdown"] = "Caixa Multi-selecção"; +$LANG["phrase_multiple_fields_found"] = "Múltiplos campos encontrados!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nome / Última"; +$LANG["phrase_new_blank_email"] = "New Blank e-mail"; +$LANG["phrase_new_blank_option_list"] = "Lista de Opção New Blank"; +$LANG["phrase_new_blank_view"] = "New Blank Ver"; +$LANG["phrase_new_ft_installation"] = "Nova Forma Ferramentas de Instalação"; +$LANG["phrase_new_option_list"] = "Lista de Opção de novos"; +$LANG["phrase_new_password"] = "Nova Senha"; +$LANG["phrase_new_password_reenter"] = "Nova Senha (digite novamente)"; +$LANG["phrase_new_view"] = "Nova Vista"; +$LANG["phrase_new_view_all_fields"] = "New View - Todos os campos"; +$LANG["phrase_next_client"] = "próximo cliente »"; +$LANG["phrase_next_field"] = "»próximo campo"; +$LANG["phrase_next_form"] = "forma seguinte »"; +$LANG["phrase_next_view"] = "Ver próxima »"; +$LANG["phrase_no_clients"] = "Não clientes"; +$LANG["phrase_no_limit"] = "Sem Limite"; +$LANG["phrase_no_offset"] = "Sem Desvio"; +$LANG["phrase_no_option_lists_available"] = "Sem opções de listas disponíveis."; +$LANG["phrase_no_views"] = "No exibições"; +$LANG["phrase_no_views_with_filters_p"] = "(Nenhum Visualizações com filtros definidos)"; +$LANG["phrase_none_not_recommended"] = "Nenhum (não recomendado)"; +$LANG["phrase_not_assigned_to_option_list"] = "Este campo não é atribuída a uma lista de opções."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "NÃO Igual a"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "DIFERENTE de"; +$LANG["phrase_not_visible_to_client"] = "(não visível ao cliente)"; +$LANG["phrase_num_clients_per_page"] = "Número de Clientes por Página"; +$LANG["phrase_num_emails_per_page"] = "Num e-mails por página"; +$LANG["phrase_num_fields"] = "Número de campos"; +$LANG["phrase_num_forms_per_page"] = "Número de Formulários por Página"; +$LANG["phrase_num_menus_per_page"] = "Num Menus por página"; +$LANG["phrase_num_modules_per_page"] = "Num Módulos por Página"; +$LANG["phrase_num_option_lists_per_page"] = "Num Listas Opção por página"; +$LANG["phrase_num_options"] = "Num Opções"; +$LANG["phrase_num_rows"] = "Num Linhas"; +$LANG["phrase_numbers_only"] = "Apenas números"; +$LANG["phrase_often_localhost"] = "(muitas vezes "localhost")"; +$LANG["phrase_on_form_submission"] = "No envio do formulário"; +$LANG["phrase_one_char_number"] = "Pelo menos um personagem é um número (0-9)"; +$LANG["phrase_one_char_upper"] = "Pelo menos um personagem é maiúscula"; +$LANG["phrase_one_special_char"] = "Pelo menos um dos {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(somente clientes específicos têm acesso)"; +$LANG["phrase_open_form_in_dialog"] = "Forma aberta na janela de diálogo"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Abra o formulário em uma janela de guia / new"; +$LANG["phrase_option_list"] = "Lista de opção"; +$LANG["phrase_option_list_name"] = "Nome da lista de opção"; +$LANG["phrase_option_list_or_contents"] = "Lista opção / Contents"; +$LANG["phrase_option_lists"] = "Listas de opção"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Titulos de Página"; +$LANG["phrase_pass_on"] = "Passar"; +$LANG["phrase_password_min"] = "Deve ser pelo menos {\$length} caracteres."; +$LANG["phrase_password_one_number"] = "Ela deve conter pelo menos um número (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Ela deve conter pelo menos uma letra maiúscula."; +$LANG["phrase_password_requirements_c"] = "requisitos Senha:"; +$LANG["phrase_password_reset"] = "Esqueci minha senha"; +$LANG["phrase_password_special_char"] = "Deve conter pelo menos um dos seguintes caracteres: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissões / Configurações Outros"; +$LANG["phrase_permitted_file_types"] = "Tipos de ficheiros permitidos"; +$LANG["phrase_phone_number"] = "Número de telefone"; +$LANG["phrase_phone_number_format"] = "Formato de número de telefone"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini tamanho máximo permitido para upload:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Versão do PHP"; +$LANG["phrase_please_confirm"] = "Confirme"; +$LANG["phrase_please_enter_license_key"] = "Por favor digite sua chave de licença"; +$LANG["phrase_please_select"] = "Por Favor Seleccione"; +$LANG["phrase_please_select_form"] = "Por favor, selecione uma forma"; +$LANG["phrase_prev_client"] = "«Prev cliente"; +$LANG["phrase_prev_form"] = "«Forma prev"; +$LANG["phrase_prevent_password_reuse"] = "re impedir a utilização de senhas passado #"; +$LANG["phrase_previous_field"] = "campo anterior «"; +$LANG["phrase_previous_page"] = "Precedente"; +$LANG["phrase_previous_view"] = "«Anterior Ver"; +$LANG["phrase_program_name"] = "Nome do Programa"; +$LANG["phrase_public_form_omit_list"] = "Lista Pública Forma Omitir"; +$LANG["phrase_public_view_omit_list"] = "View Public Omitir List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Houve um problema com a seguinte consulta:"; +$LANG["phrase_radio_buttons"] = "Botões de Rádio"; +$LANG["phrase_random_form_submission"] = "Envio de formulário aleatório"; +$LANG["phrase_re_enter_password"] = "Re-escreva a Palavra-passe"; +$LANG["phrase_recipient_type"] = "Tipo de destinatário"; +$LANG["phrase_redirect_url"] = "URL de redirecionamento"; +$LANG["phrase_refresh_list"] = "Recarregar Lista"; +$LANG["phrase_refresh_module_list"] = "Refresh List Module"; +$LANG["phrase_refresh_page"] = "RECARREGAR PÁGINA"; +$LANG["phrase_refresh_theme_list"] = "Refresh List Theme"; +$LANG["phrase_register_new_email"] = "Register New Email"; +$LANG["phrase_remaining_characters"] = "caracteres restantes"; +$LANG["phrase_remaining_words"] = "palavras restantes"; +$LANG["phrase_remove_tabs"] = "Remover Tabs"; +$LANG["phrase_required_password_chars"] = "Necessário caracteres da senha"; +$LANG["phrase_resend_test_submission"] = "REENVIAR TESTE DE ENVIO"; +$LANG["phrase_return_form_list"] = "VOLTAR À LISTA DE FORMULÁRIOS"; +$LANG["phrase_row_selected"] = "{\$num_rows} linha selecionada"; +$LANG["phrase_rows_selected"] = "{\$num_rows} linhas selecionadas"; +$LANG["phrase_sample_data"] = "Dados de Exemplo"; +$LANG["phrase_save_changes"] = "Salvar alterações"; +$LANG["phrase_search_keyword"] = "Pesquisar palavra-chave"; +$LANG["phrase_security_settings"] = "Configurações de Segurança"; +$LANG["phrase_select_all"] = "Selecionar Tudo"; +$LANG["phrase_select_all_X_results"] = "Selecione Todos) {\$numresults} Resultados"; +$LANG["phrase_select_all_on_page"] = "Seleccionar Todos na Página"; +$LANG["phrase_select_date"] = "Selecione a data"; +$LANG["phrase_select_field"] = "Selecione Campo"; +$LANG["phrase_select_swatch"] = "Selecione swatch"; +$LANG["phrase_selected_clients"] = "Clientes Seleccionados"; +$LANG["phrase_selected_views"] = "Vistas Selecionados"; +$LANG["phrase_send_email"] = "Enviar e-mail"; +$LANG["phrase_send_test_email"] = "ENVIAR TESTE DE EMAIL"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessões Timeout"; +$LANG["phrase_setting_value"] = "Definindo Valor"; +$LANG["phrase_setup_options"] = "Opções de Configuração"; +$LANG["phrase_show_all"] = "Show All"; +$LANG["phrase_show_form"] = "Mostrar Form"; +$LANG["phrase_size_large"] = "Grande (TEXTO)"; +$LANG["phrase_size_medium"] = "Médio (<= 256 caracteres)"; +$LANG["phrase_size_small"] = "Pequeno (<= 20 caracteres)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 caracteres)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Campo"; +$LANG["phrase_skip_step"] = "Passo Passar"; +$LANG["phrase_small_100px"] = "Pequena (100px)"; +$LANG["phrase_small_80px"] = "Pequenos (80px)"; +$LANG["phrase_smart_fill"] = "PREENCHIMENTO AUTOMÁTICO"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Preencha os campos a partir de:"; +$LANG["phrase_smart_fill_user_documentation"] = "Preenchimento inteligente Documentação do usuário »"; +$LANG["phrase_sort_as"] = "Como classificar"; +$LANG["phrase_special_fields"] = "Campos especiais"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Filtros Padrão »"; +$LANG["phrase_step_1"] = "Passo 1"; +$LANG["phrase_step_2"] = "Etapa 2"; +$LANG["phrase_step_3"] = "Passo 3"; +$LANG["phrase_step_4"] = "Passo 4"; +$LANG["phrase_step_5"] = "Passo 5"; +$LANG["phrase_step_6"] = "Passo 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Remover tags nos envios de formulários"; +$LANG["phrase_subject_line"] = "Assunto Line"; +$LANG["phrase_submission_date"] = "Data de Envio"; +$LANG["phrase_submission_id"] = "ID de Envio"; +$LANG["phrase_submission_made"] = "Apresentação feita: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Tipo de apresentação"; +$LANG["phrase_submissions_per_page"] = "Envios por Página"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Você não pode adicionar validação para campos do sistema."; +$LANG["phrase_system_time_offset"] = "Desvio do Tempo de Sistema"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Testar Permissões de Pasta"; +$LANG["phrase_test_submission"] = "Teste de Envio"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Received"; +$LANG["phrase_text_and_html"] = "Texto e HTML"; +$LANG["phrase_text_email"] = "Texto e-mail"; +$LANG["phrase_text_template"] = "Texto modelo"; +$LANG["phrase_the_previous_month"] = "Ao mês anterior"; +$LANG["phrase_theme_description"] = "Descrição tema"; +$LANG["phrase_theme_info"] = "Tema Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Resultados Totais:"; +$LANG["phrase_type_c"] = "Tipo de erro:"; +$LANG["phrase_unselect_all"] = "Deseleccionar Todos"; +$LANG["phrase_update_accounts"] = "Atualização de Contas"; +$LANG["phrase_update_email_template"] = "Atualização de e-mail Template"; +$LANG["phrase_update_field"] = "Actualizar campo"; +$LANG["phrase_update_order"] = "Ordem de atualização"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Upload de Arquivos"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Caminho da pasta de carregamentos"; +$LANG["phrase_upload_folder_url"] = "URL da pasta de carregamentos"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Usar o valor padrão?"; +$LANG["phrase_used_by_num_form_fields"] = "Usado por # campos de formulário"; +$LANG["phrase_uses_swatches"] = "Usa Swatches"; +$LANG["phrase_valid_email"] = "E-mail válido"; +$LANG["phrase_validation_error"] = "Erro de validação"; +$LANG["phrase_validation_rule"] = "Regra de Validação"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Ver Grupo"; +$LANG["phrase_view_id"] = "Ver ID"; +$LANG["phrase_view_name"] = "Exibir Nome"; +$LANG["phrase_view_placeholders"] = "Placeholders vista"; +$LANG["phrase_view_submissions"] = "Ver artigos enviados"; +$LANG["phrase_view_uploaded_files"] = "ver ficheiros enviados"; +$LANG["phrase_viewing_range"] = "[vendo {\$startnum} a {\$endnum}]"; +$LANG["phrase_when_sent"] = "Quando enviado"; +$LANG["phrase_when_submission_is_deleted"] = "Quando a apresentação é eliminado"; +$LANG["phrase_when_submission_is_edited"] = "Quando a apresentação é editado"; +$LANG["phrase_who_can_access"] = "Quem pode aceder?"; +$LANG["phrase_word_limit_p"] = "limite de palavras."; +$LANG["phrase_year_to_date"] = "No acumulado do ano"; +$LANG["phrase_yes_for_all_views"] = "Sim, para todas as vistas"; +$LANG["phrase_yes_for_specific_views"] = "Sim, para visões específicas"; +$LANG["phrase_your_account"] = "Sua Conta"; +$LANG["phrase_your_email"] = "O seu Email"; +$LANG["phrase_your_email_address"] = "O seu endereço de email"; +$LANG["processing_form_disabled"] = "Desculpe, este formulário foi desactivada."; +$LANG["processing_form_incomplete"] = "Desculpe, esta forma não parece ser criada a partir do Formulário de Ferramentas. A causa mais provável desse problema é que removeu os form_tools_initialize_form "campo de formulário oculto, mas não completaram todas as etapas do" Add Form "do processo.

    Por favor, faça o login e rever a configuração do formulário."; +$LANG["processing_init_complete"] = "Obrigado! Sua submissão teste foi colocada com sucesso. Por favor retorne para o painel de Administração Formulário de Ferramentas e clique no botão "Atualizar" na parte inferior do formulário de Passo 3 Adicionar página para terminar de configurar seu formulário."; +$LANG["processing_invalid_form_id"] = "Desculpe, este não parece ser uma identificação de forma válida."; +$LANG["processing_no_form_id"] = "process.php requer um ID de formulário para processamento. Verifique se o seu formulário contém um campo oculto com o nome "form_tools_form_id" que está passando ao longo da ID formulário."; +$LANG["processing_no_form_url_for_recaptcha"] = "Forma Tools é incapaz de determinar para onde redirecionar quando eles não conseguem entrar no CAPTCHA corretamente. Por favor, passe em um campo oculto com o nome form_tools_form_url contendo a URL do formulário."; +$LANG["processing_no_post_vars"] = "process.php não está recebendo nenhum dado. Nota: este script não pode ser carregado diretamente no seu navegador.
    Verifique se o seu formulário está enviando via POST."; +$LANG["processing_no_redirect_url"] = "A apresentação foi processada corretamente, mas você não especificou uma URL de redirecionamento para esta forma! Editar o formulário na interface do usuário Ferramentas Forma e adicionar a URL de redirecionamento."; +$LANG["special_language"] = "Portuguese"; +$LANG["special_language_locale"] = "Portuguese"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Todas as novas contas de clientes será criada com as configurações e permissões definidas abaixo. Para substituir uma definição para um determinado cliente, editar a conta do cliente e visitar seu guia Configurações."; +$LANG["text_add_form_choose_integration_method"] = "Escolher qual o método que deseja usar para integrar o seu formulário com Ferramentas do formulário."; +$LANG["text_add_form_code_submission_benefits"] = "Este método usa o Form Tools API , incluídos no principal roteiro Ferramentas formulário. A API fornece uma série de funções úteis para fazer o trabalho de integração de seu formulário com ferramentas de formulário o mais simples possível. Não há restrições à forma como o seu formulário pode ser apresentado quando você usa a API. Você pode enviar o conteúdo de uma só vez, ou página por página, você pode adicionar os seus próprios de validação do lado do servidor personalizados, imagens de CAPTCHA, você pode optar por apresentar as informações agora, mas apenas dizer-lhe para mostrar a apresentação no Formulário de Ferramentas UI em uma data posterior (veja a Finalizado Submissões seção na documentação de ajuda API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "A fim de apresentar os dados do formulário via PHP, o formulário deve estar localizado no mesmo site como a instalação Tools formulário. Em segundo lugar, para Ferramentas usuários Form não técnicos e iniciantes, este método pode ser um pouco intimidante no começo. Mas há uma abundância de documentação para ajudá-lo, incluindo dois tutoriais simples para integrar suas formas simples e multi-page (estes estão ligados a em uma etapa posterior)."; +$LANG["text_add_form_direct_submission_benefits"] = "Esta é a maneira mais simples de enviar seu formulário para Formulário Ferramentas. Ele não requer qualquer conhecimento de PHP e requer apenas uma mudança muito pequena para sua forma. É ótimo para formas menores, onde você quiser apenas enviar as informações ao banco de dados, em seguida, redirecionar o usuário para um thankyou "página."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Esse método de envio é muito simples de usar, mas não dá muito controle para formas mais complicadas. Formulários de várias páginas ou formulários que requerem validação do lado do servidor são mais adequadas para o segundo método: apresentação através das ferramentas de Form API."; +$LANG["text_add_form_field_types1"] = "Quase pronto! Esta página tenta encontrar todos os campos do formulário e determinar seus tipos de campo. Clique no botão Preenchimento inteligente à direita para começar. Você será apenas permitido proceder quando todas as ações tenham sido resolvidos - questões que precisam de sua atenção aparecer na "Action Needed " coluna."; +$LANG["text_add_form_field_types2"] = "Se o formulário não é em HTML, clique no botão Step Ir para prosseguir. Isso tudo pode ser configurado mais tarde."; +$LANG["text_add_form_field_types3"] = "Este recarrega o conteúdo de sua forma (s). Nota: esta irá substituir todas as alterações feitas nesta página."; +$LANG["text_add_form_field_types4"] = "No caso você tiver problemas, clique aqui para pular esta etapa. Todos os campos não resolvidos são definidas para usar os valores padrão. Você pode personalizar esses campos depois."; +$LANG["text_add_form_field_types_manual_upload"] = "Se você foi incapaz de Preenchimento inteligente seus campos, você pode querer tentar uma solução alternativa: upload cópias de suas formas nos campos abaixo."; +$LANG["text_add_form_field_types_manual_upload2"] = "Nota: não carregar páginas PHP-prima (ou código server-side outros) - basta fazer upload das versões HTML. Para conseguir isso, visualizar e salvar a página de seu navegador web."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Havia vários campos que não puderam ser encontrados na página do formulário que você especificou. Isto é mais provavelmente causada por uma das seguintes opções:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Você digitou um ou mais dos URLs forma de seu formulário de várias páginas de forma incorreta."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Uma ou mais páginas do formulário são protegidos por senha eo script não poderiam acessar a página."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Você digitado incorretamente sua URL formulário."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Clique aqui para voltar à página de informações do formulário para verificar suas configurações."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Você mudou sua forma (s) depois de fazer a apresentação de teste"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Clique aqui para colocar a submissão através de outro teste."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Sua forma é protegido por senha eo script não poderiam acessar a página."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Em outra aba / janela do browser, entrar em seu formulário clique no botão Atualizar página abaixo para tentar re-encontrar os campos."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Se nenhuma das soluções acima o trabalho, você também pode querer tentar enviar manualmente seus formulários para o processamento ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Havia vários campos que não podiam ser encontradas nas páginas de formulário que você especificou. Isto é mais provavelmente causada por um destes:"; +$LANG["text_add_form_help_link"] = "Se você tiver qualquer problema durante essas etapas, tente ler em documentação do usuário ."; +$LANG["text_add_form_step_1_text_1"] = "As páginas seguintes levá-lo através dos passos para configurar ferramentas de formulário para armazenar suas submissões do formulário. Antes de continuar, verifique se:"; +$LANG["text_add_form_step_1_text_2"] = "o formulário já foi criado e é acessível através de uma URL (localhost é bom)"; +$LANG["text_add_form_step_1_text_3"] = "são capazes de modificar sua forma"; +$LANG["text_add_form_step_2_para_2"] = "Abra seu formulário em um editor de sua escolha e troque sua etiqueta de formulário para o seguinte, incluindo os dois campos ocultos."; +$LANG["text_add_form_step_2_para_3"] = "Em seguida, abrir o formulário em um navegador web. Preencher todos os campos e apresentá-lo. Após a apresentação, você deve ver uma mensagem de notificação. Uma vez que esta mensagem é exibida, retorne à esta página e clique no botão de atualização. Quando este processo estiver concluído, você verá um botão continuar abaixo, levando-o para a próxima etapa."; +$LANG["text_add_form_step_2_para_6"] = "Em sua apresentação de formulário, incluir os seguintes valores. Eles podem ser criados diretamente através de PHP ou repassados através do formulário próprio. Abaixo estão alguns exemplos de cada um. Os US \$ varName () é um hash (matriz ou associativa) de todas as informações de envio de formulário - este é geralmente o postvar \$ (ou)) (\$ SESSIONVAR variável, mas podem ser construídas."; +$LANG["text_add_form_step_2_text_2"] = "Digite a URL do seu page "obrigado " aqui. Isto é onde você quer que as pessoas sejam direcionados para depois que o formulário foi submetido."; +$LANG["text_add_form_step_3_para_1"] = "Esta página lista todos os campos em seu formulário de inscrição. Por favor analisar cada campo e remover qualquer um que você não precisa armazenado para cada apresentação. Se você excluir um campo válido por acidente, ou se pretender alterar as informações armazenadas pela sua forma, retornar à página anterior enviar uma apresentação teste de novo."; +$LANG["text_add_form_step_3_para_2"] = "Observação: se você está enviando vários valores através de caixas ou um multi-seleção, certifique-se de seu nome de domínio termina com a [] caracteres (consulte a documentação do usuário para mais informações)."; +$LANG["text_add_form_step_3_text_1"] = "Aqui é onde a diversão começa! Neste ponto, Ferramentas Form está esperando por uma apresentação de teste da sua forma. Ele vai usar esse envio do formulário de saber quais informações devem ser armazenadas no banco de dados."; +$LANG["text_add_form_step_3_text_2"] = "apontando o formulário para Formulário Ferramentas"; +$LANG["text_add_form_step_3_text_3"] = "utilizando o formulário Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Para ajudar a integrar a sua forma, sugerimos que você leia um dos tutoriais a seguir:"; +$LANG["text_add_form_step_3_text_5"] = "Eles explicam como configurar o formulário na preparação para a apresentação de teste, e incluir outras informações que possam ser de ajuda. A linha do PHP você precisa é:"; +$LANG["text_add_form_step_3_text_6"] = "Isso garante que os dados são realmente enviada ao Formulário Ferramentas. Quando você colocar a sua apresentação por meio de teste, clique no botão abaixo."; +$LANG["text_add_form_step_3_text_7"] = "No PRÉVIA página aos seus finais "agradecimento", não se esqueça de adicionar o seguinte parâmetro para a variável \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "O banco de dados foi criado para para este formulário eo formulário foi ativado para uso. Se você fez a apresentação, apontando o formulário para process.php, por favor, retornar à sua forma e remover o seguinte campo oculto:"; +$LANG["text_add_form_step_5_para_2"] = "Então visite o seu "agradecimento" para esvaziar as sessões. Uma vez feito isso, todas as submissões novo formulário serão processados e armazenados pelo formulário Ferramentas. Tente fazer uma apresentação ou dois para verificar a informação é tudo o upload corretamente."; +$LANG["text_add_form_step_5_para_3"] = "Se você deseja ajustar sua forma de opções, tais como auto-mail, adicionando extra campo de formulário campos, ou personalizar os tipos de campo de formulário, você pode editar o formulário em qualquer ponto."; +$LANG["text_add_form_step_5_para_4"] = "Desde o formulário contém campos de upload de arquivos, você precisará configurar cada campo para especificar a pasta upload do arquivo, quais arquivos são permitidas e. Isto pode ser encontrado na guia Exibição da página de edição de formulário."; +$LANG["text_add_form_step_5_para_5"] = "Se a apresentação foi enviada através da API, altere a linha ft_api_init_form_page na primeira página do formulário para:"; +$LANG["text_add_submission_button"] = "O botão Adicionar Submission só aparece para as visões que têm o "de maio adicionar submissões " opção definido como "sim "."; +$LANG["text_admin_email_placeholder_info"] = "Este é o endereço de e-mail do administrador de ferramentas de formulário, definida em suas configurações de conta. Isso só gera o endereço de email, por isso, se você deseja usar como um link HTML, você precisará de envolvê-la em uma marca <a>, assim:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ adminEmail) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Veja também o tema padrão página de login)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Primeiro, escolha o seu tipo de formulário."; +$LANG["text_client_form_page"] = "Esta página lista todas as formas e modos de exibição atribuído a este cliente. Dica: para que eles vejam envios de um formulário, eles precisam ser atribuídos a pelo menos uma View."; +$LANG["text_client_map_filters_desc1"] = "Filtros Mapa do cliente permitem limitar a apresentação de propostas que aparecem nesta Ver mapeando os valores em um campo de formulário para os valores em uma conta de cliente."; +$LANG["text_client_no_forms"] = "Atualmente você não tem formulários para visualizar."; +$LANG["text_client_welcome"] = "Bem-vindo! Este programa armazena todas as informações apresentadas pelos visitantes do seu site. Para ver as propostas para uma forma particular basta clicar no link "Visualizar, ou consulte o menu de navegação à esquerda para outras opções."; +$LANG["text_config_file_created"] = "Seu arquivo config.php ter sido criado."; +$LANG["text_config_file_not_created"] = "Nós não poderíamos criar o arquivo config.php. Você precisará criar o arquivo manualmente."; +$LANG["text_config_file_not_created_instructions"] = "Copie e cole o conteúdo da seção abaixo em um arquivo chamado config.php e enviá-lo via FTP para as ferramentas de formulário / pasta global (na pasta que contém também alguns outros arquivos e diretórios, um arquivo chamado library.php)."; +$LANG["text_confirm_delete_form"] = "Sim, eu quero deletar este formulário"; +$LANG["text_create_admin_account"] = "Agora vamos criar a conta do administrador. Isto é usado para gerenciar todos os aspectos da forma de instrumentos, tais como a adição de formulários e criação de contas de clientes."; +$LANG["text_create_new_client_account"] = "Utilize o formulário abaixo para criar uma nova conta de cliente. Todos os campos são obrigatórios."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "ver PHP {\$datefunctionlink} função de opções de formatação"; +$LANG["text_default_file_settings_page"] = "Esta página define as configurações do upload de arquivos para sua instalação Ferramentas de formulário. Estas regras são aplicáveis a todos os arquivos enviados através de formulário de Ferramentas, a menos que explicitamente substituída por um campo de formulário individual. Observação: se você alterar a pasta de upload após os arquivos terem sido carregados, eles serão automaticamente movidos para a nova pasta."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Antes de continuar, você terá de atualizar seu / themes / default pasta / cache para permitir a plena leitura e escrita permissões. Uma vez feito isso, essa mensagem desaparecerá e você pode instalar o script."; +$LANG["text_default_values_in_view"] = "Esta seção é opcional. Todas as submissões criado com essa visão irá conter os valores padrão especificado aqui."; +$LANG["text_delete_all_forms"] = "Eu quero deletar todos os arquivos que foram enviados através deste formulário"; +$LANG["text_delete_form_warning"] = "Você tem certeza que deseja apagar este formulário? Esta ação não poderá ser desfeita. Todos os dados serão perdidos permanentemente!"; +$LANG["text_edit_admin_menu_page"] = "Você pode editar o seu menu abaixo. Para garantir que você sempre terá acesso a todas as funcionalidades disponíveis no formulário de Ferramentas, nas páginas seguintes são necessários: Formulários, clientes, sua conta, Modules, Definições e Sair."; +$LANG["text_edit_client_menu_page"] = "Esta seção permite que você personalize a coluna de navegação à esquerda para cada usuário. Você pode criar quantos menus cliente que desejar e atribua qualquer conta de um deles. Por padrão, há dois menus: um para você, o administrador e uma para todas as contas de clientes. A conta de administrador pode ser modificado, mas não removida."; +$LANG["text_edit_tab_summary"] = "Se você deseja agrupar os campos deste Ver em abas, basta digitar os nomes link abaixo. Depois que você terminar, selecione a guia apropriada para cada grupo de campos na guia Campos ."; +$LANG["text_edit_view_list_page"] = "Este guia, que controla os campos aparecem como colunas na página de Listagem Submission, e algumas configurações adicionais para esses campos. Nota: recomendamos que você adicionar não mais que 4 ou 5 dos campos mais importantes na View."; +$LANG["text_email_settings_intro"] = "Esta página permite que você identifique qual dos campos de formulário armazenar e-mails e os nomes correspondentes. Depois de defini-los aqui, você pode usá-los em seu e-mail modelos como destinatários. Esta seção é totalmente opcional."; +$LANG["text_email_tab_summary"] = "Esta seção permite a você construir qualquer número de e-mails para ser enviado sempre que o formulário é submetido, e outros gatilhos."; +$LANG["text_email_template_tab"] = "Esta seção permite determinar o conteúdo aparece no e-mail. Caso deseje enviar seu e-mail apenas como texto ou e-mail, apenas digite um valor para essa seção. Se você digitar um valor para ambos, o e-mail será enviado em ambos os formatos."; +$LANG["text_email_template_text_1"] = "Houve uma apresentação feita através de formulário, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Houve uma apresentação feita através de formulário, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Obrigado pelo seu interesse!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Mensagem de erro para mostrar se o campo não a validação"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Formas externas são formas que já existem em seu site, ou em algum lugar na web. Selecione esta opção se você tem a sua própria forma que você gostaria de integrar-se com ferramentas de formulário."; +$LANG["text_fields_tab_summary"] = "Esta página lista todos os seus campos de formulário. Para controlar a forma como eles aparecem quando submissões de navegação, ver o guia Views . A exclusão de um campo nesta página irá excluí-lo de todas as submissões, por isso tenha cuidado!"; +$LANG["text_file_extension_info"] = "Digite extensões de arquivos separados por vírgulas (por exemplo, JPG, GIF, PNG) ou deixe em branco para permitir que qualquer tipo de arquivo."; +$LANG["text_file_field_placeholders_info"] = "Os campos de arquivo tem dois espaços especiais: fileURL e FILENAME. FileURL é o URL completo para o arquivo, assim você pode ligar diretamente para ele em seus e-mails; FILENAME é apenas o nome do arquivo."; +$LANG["text_filters_page"] = "Apenas os pedidos que cumpram as regras que definem a seguir será exibida nesta vista."; +$LANG["text_filters_tips"] = "Para obter dicas sobre como usar filtros de apresentação, consulte a documentação do usuário."; +$LANG["text_forgot_password"] = "Não tem problema. Basta digitar seu nome de utilizador abaixo e suas informações de login serão enviados para o endereço de email em arquivo. Se você esqueceu seu nome de usuário, e-mail do administrador do site {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Este formulário contém um ou mais campos de envio de arquivo:"; +$LANG["text_form_placeholder_info"] = "Os espaços reservados a seguir pode ser usado em qualquer modelo de e-mail e espaço reservado campo de linguagem, independentemente de qualquer Ver o modelo de e-mail está atribuída. Os espaços reservados questão são a questão formulário específico; os espaços reservados RESPOSTA estão as respostas para cada pergunta."; +$LANG["text_form_submission_date_placeholder"] = "A data em que a apresentação foi feita."; +$LANG["text_form_tools_form_url"] = "O URL completo do formulário. Isto só tem um valor para as formas externas."; +$LANG["text_form_tools_login_url"] = "O URL de login para o formulário de ferramentas."; +$LANG["text_form_view_permission_info_admin"] = "Nota: esse formulário tem atualmente o tipo de acesso de administrador, de modo que nenhuma das contas do cliente será capaz de ver este View."; +$LANG["text_form_view_permission_info_private"] = "Observação: este formulário atualmente tem o tipo de acesso privado para as opções públicos e privados aqui será limitado a esse subconjunto de clientes."; +$LANG["text_ft_installed"] = "Parabéns, Formulário de Ferramentas foi instalada com sucesso!"; +$LANG["text_global_placeholder_info"] = "Estes espaços podem ser utilizados em qualquer modelo e qualquer outra forma."; +$LANG["text_group_name_explanation"] = "Para campos adicionados através do Add processo formulário, este valor é pré-cheia para o texto de apresentação de qualquer campo utiliza o valor. Você pode querer mudar para melhor caracterizar o conteúdo."; +$LANG["text_install_create_config_file"] = "Forma lojas Ferramentas e configurações de seu servidor de banco de dados em um arquivo chamado config.php, encontrou em seu arquivo / global / pasta. Clique no botão "Criar" Arquivo para gerar automaticamente o arquivo em seu servidor."; +$LANG["text_install_create_database_tables"] = "Agora vamos criar o Formulário de tabelas de banco de Ferramentas. Esta etapa exige que o próprio banco de dados que já foram criados. Se você não tiver certeza de como fazer isso, contate seu provedor de hospedagem."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" geralmente significa que o nome da máquina que você forneceu está incorreta. Talvez tente definir esta opção para "localhost" - esta é uma forma comum de se referir ao "local do banco de dados" em um servidor web."; +$LANG["text_install_db_tables_error_tip_2"] = ""Não é possível conectar ao servidor MySQL local através de socket" significa que o campo do banco hostname é novamente incorretos."; +$LANG["text_install_db_tables_error_tip_3"] = ""Acesso negado para o usuário:" significa que há um problema com o seu username / senha."; +$LANG["text_install_db_tables_error_tip_4"] = ""Acesso negado para o usuário: ... a base de dados ..." significa que, embora seu nome de usuário ea senha fornecida está correta, ele não foi capaz de se conectar a esse banco de dados específico com essa conta. Isto pode significar que o nome é o seu banco de dados incorretos, ou que esta conta de utilizador não está associado a esse banco de dados."; +$LANG["text_install_email_content_text"] = "Há muitos recursos em nosso site para ajudá-lo a começar, incluindo nossa documentação on-line (https://docs.formtools.org) e tutoriais (https://docs.formtools.org/tutorials). Se você achar que ficou preso ou tiver uma pergunta, faça uma pergunta no github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Desculpe, Ferramentas de formulário não será capaz de rodar em seu servidor. Por favor, clique aqui para a requisitos mínimos."; +$LANG["text_install_system_check"] = "Esta página é executado alguns testes em seu sistema para garantir que ele é capaz de executar ferramentas de formulário."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Formas internas só existem dentro Tools Form - não especificados no seu site. Ferramentas apenas o Formulário de contas de usuário terá acesso ao formulário. Selecione esta opção se você não tem um formulário existente."; +$LANG["text_internal_form_intro"] = "Use o formulário abaixo para criar uma nova forma interna. Todas as configurações, incluindo o número e conteúdo dos campos do formulário pode ser ser alterados e configurados mais tarde."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Para entrar e usar o Formtools, você precisa estar com o javascript ativado no seu navegador. Por favor ative agora, e clique em atualizar no seu navegador."; +$LANG["text_last_modified_date_explanation_c"] = "A última vez que essa apresentação foi modificado. Para novas submissões, este é o mesmo que:"; +$LANG["text_limit_email_content_desc"] = "Esta opção só funciona para HTML e conteúdo de texto gerado com Loops Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(somente listas de Visitas com um ou mais filtros definidos)"; +$LANG["text_log_in_to_ft"] = "Entrar no Formulário de Ferramentas"; +$LANG["text_login"] = "Por favor login abaixo para acessar o \$) (program_name Painel de Administração. Se você tiver esquecido sua senha, clique aqui."; +$LANG["text_login_info"] = "Conforme pedido, aqui está sua informação de entrada."; +$LANG["text_name_of_form"] = "O nome do formulário."; +$LANG["text_no_clients"] = "Atualmente não existe nenhum cliente no banco de dados. Para adicionar a conta de um novo cliente, clique no botão Adicionar Cliente abaixo."; +$LANG["text_no_clients_found"] = "Nenhum cliente foi encontrado. Tente alargar os seus critérios de busca."; +$LANG["text_no_fields_in_view"] = "Ver esta não tem quaisquer campos nele. Clique no link abaixo."; +$LANG["text_no_forms"] = "Atualmente não existe nenhum formulário no banco de dados. Para adicionar um novo formulário, clique no botão Adicionar Formulário abaixo."; +$LANG["text_no_forms_found"] = "Não foram encontradas formas."; +$LANG["text_no_forms_found_search"] = "Não foram encontradas formas. Tente alargar os seus critérios de pesquisa."; +$LANG["text_no_modules_found"] = "N º módulos foram encontrados. Tente alargar os seus critérios de busca."; +$LANG["text_no_recipients_added"] = "No destinatários foram adicionados."; +$LANG["text_no_search_results"] = "Não existem resultados com este critério de pesquisa / View."; +$LANG["text_no_submissions_found"] = "Desculpe, não foram encontradas propostas."; +$LANG["text_no_themes"] = "Você não tem nenhum tema definido. Clique no botão abaixo para atualizar sua lista de tema, ou verifique a documentação do usuário Form Tools para obter informações sobre a adição de temas."; +$LANG["text_non_deletable_fields"] = "Este campo é utilizado pelo script de núcleo e não podem ser editados ou apagados sem causar incompatibilidades. Se você deseja fazer alterações no tipo de campo, faça uma cópia do mesmo e editar a cópia."; +$LANG["text_option_list_group_explanation"] = "Se este for selecionado, ele permite agrupar suas opções. Como os grupos são exibidos depende do tipo de campo usando esta lista de opções."; +$LANG["text_option_list_page"] = "Botões de rádio, caixas de seleção, dropdowns e multi-selecionar os campos dropdown todas fornecer ao usuário com várias opções a partir do qual pode selecionar um ou mais itens. Em Ferramentas Formulário, estes são conhecidos como Listas de Opção. Geralmente, estes são criados automaticamente pelo Form Add External processo, mas você pode adicionar manualmente ou editar as suas listas de opção abaixo se o seu conteúdo muda de forma, ou você constrói campos que são usados ​​apenas internamente."; +$LANG["text_option_list_used_by_fields"] = "Esta lista de opções é utilizada por vários campos do formulário. Se você atualizar as informações abaixo, ele será alterado para todos os campos (ver o formulário de Campos guia para ver a lista de campos). Se você deseja atualizar os valores para um ou um subconjunto dos campos que estão atualmente atribuídos, clique aqui para criar uma nova lista de opções com os mesmos valores como este. Depois, você pode atribuir os campos do formulário que você deseja para o novo grupo."; +$LANG["text_public_form_omit_list_page"] = "Formas públicas dar-lhe o benefício de deixar todas as contas de cliente acessá-los sem ter de atribuir manualmente cada cliente para eles. Esta página permite identificar aqueles clientes que não podem aceder a este formulário, mesmo que o formulário está marcada como pública."; +$LANG["text_public_view_omit_list_page"] = "Exibições públicas dar-lhe o benefício de deixar todas as contas de cliente acessá-los sem ter de atribuir manualmente cada cliente para eles. Esta página permite identificar aqueles clientes que não podem aceder a esta visão particular."; +$LANG["text_reference_tab_info"] = "Esta página lista todos os espaços reservados disponível para o seu formulário. Espaços reservados são seqüências que podem ser usados ​​nos modelos de e-mail, e os campos marcados com um ícone de marcador especial . Quando entrou em um campo, eles são dinamicamente convertidos para o valor adequado quando o campo é visto ou o e-mail é enviado."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Reveja a documentação do usuário"; +$LANG["text_send_email_from_edit_submission_page"] = "Incluir opção de enviar este e-mail da página Edit Submission"; +$LANG["text_smart_fill_option_list_problem"] = "Não fomos capazes de Preenchimento inteligente opções de seu campo. No entanto, como alternativa, você pode tentar enviar uma cópia de sua página do formulário no campo abaixo. Nota: não carregar páginas PHP-prima (ou código server-side outros) - apenas carregar a versão HTML. Para conseguir isso, visualizar e salvar a página de seu navegador web."; +$LANG["text_submission_ip_address"] = "O endereço IP do usuário que fez a apresentação."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Utilize o formulário abaixo para visualizar ou enviar um email gerado a partir deste e-mail modelo. O e-mail é enviado para o e-mail abaixo indicado; o principal, cc e bcc destinatários endereço de e-mail são ignorados durante o teste."; +$LANG["text_test_email_templates_no_submissions"] = "A fim de testar o seu e-mail modelos, primeiro você deve colocar pelo menos através de um formulário de inscrição."; +$LANG["text_theme_page_intro"] = "Esta página lista todos os seus temas. Clique na foto para ver um exemplo maior de estilos do tema. O "habilitado" opção determina se ou não esse tema podem ser escolhidos pelos clientes. Para percorrer todos os temas disponíveis, visite o website Forma Ferramentas."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Adicionando o formulário em primeiro lugar!"; +$LANG["text_unique_submission_id"] = "A apresentação única identificação."; +$LANG["text_unused_option_list"] = "Esta lista opção não está sendo usado por todos os campos do formulário."; +$LANG["text_upgraded"] = "Sua instalação foi atualizado para a {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Esta lista de opções é usado pelos seguintes campos."; +$LANG["text_view_fields_info"] = "Este guia controla quais campos aparecem na edição de uma submissão neste View, sua ordem e se eles são editáveis ​​ou não."; +$LANG["text_view_tab_summary"] = "Essa guia permite que você crie diferentes maneiras para agrupar e organizar seus dados. Visualizações permitem criar subconjuntos personalizado de seus dados de forma a dividi-lo em pedaços menores, e para limitar o que os clientes podem ver ou editar."; +$LANG["validation_account_disabled"] = "Desculpe, sua conta foi desativada."; +$LANG["validation_account_not_recognized"] = "Desculpe, esse nome não é reconhecido."; +$LANG["validation_account_not_recognized_info"] = "Desculpe, esse nome não foi encontrado. Por favor, tente novamente, ou contacte o administrador do site, no endereço abaixo."; +$LANG["validation_account_pending"] = "Sua conta de usuário está aguardando aprovação por um administrador."; +$LANG["validation_check_delete_client"] = "Tem certeza de que deseja excluir esta conta de cliente?"; +$LANG["validation_client_password_missing_number"] = "A senha do cliente deve conter pelo menos um número (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "A senha do cliente deve conter pelo menos um dos seguintes caracteres: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "A senha do cliente deve conter pelo menos uma letra maiúscula."; +$LANG["validation_client_password_too_short"] = "A senha do cliente deve ser pelo menos {\$number} caracteres."; +$LANG["validation_col_name_is_reserved_word"] = "Desculpe, o nome da coluna do banco de dados é um trabalho reservado no MySQL. Por favor, renomeá-lo!"; +$LANG["validation_db_name"] = "Nomes de bancos de dados não podem conter períodos ou barras."; +$LANG["validation_db_not_updated_invalid_input"] = "O banco de dados não pôde ser atualizado. Por favor, verifique se os valores indicados são válidos."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Desculpe, o administrador padrão e temas cliente deve sempre ser habilitado."; +$LANG["validation_default_phone_num_required"] = "Por favor, preencha o número de telefone completo para o <b> { \$ campo} </ b> campo - apenas números."; +$LANG["validation_default_rule_alpha"] = "Por favor, só digitar letras e números para o <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Por favor, só digitar letras para o <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Por favor, só digitar os números para o <b> { \$ campo} </ b>."; +$LANG["validation_default_rule_required"] = "Por favor insira um valor para o <b> { field \$} </ b> campo."; +$LANG["validation_default_rule_valid_email"] = "Digite um endereço de e-mail válido para o <b> { field \$} </ b> campo."; +$LANG["validation_delete_form_confirm"] = "Por favor, marque a caixa para confirmar que deseja apagar este formulário."; +$LANG["validation_delete_non_empty_option_list"] = "Atenção! Esta lista de opções é usado por um ou mais campos do formulário. Excluí-lo fará com que esses campos deixam de funcionar corretamente."; +$LANG["validation_display_names_incomplete"] = "Por favor, indique um valor para todos os nomes de exibição, ou clique na opção Smart Fill para inseri-los dinamicamente."; +$LANG["validation_duplicate_form_field_name"] = "Você não pode ter vários campos com o mesmo nome de campo."; +$LANG["validation_email_not_found_or_invalid"] = "Desculpe, o e-mail associado à sua conta ou não existe ou é inválido."; +$LANG["validation_folder_invalid_permissions"] = "Para executar este teste, as permissões devem ser definidas na pasta upload para permitir a leitura e escrita de arquivos (777 em Unix)."; +$LANG["validation_folder_not_writable"] = "Esta pasta não é gravável."; +$LANG["validation_internal_form_too_many_fields"] = "Desculpe, você só pode criar formas com 1000 campos ou menos."; +$LANG["validation_invalid_admin_email"] = "Por favor, indique um endereço de e-mail adminstrator válida."; +$LANG["validation_invalid_admin_username"] = "Seu nome de usuário só pode consistir de caracteres alfanuméricos (az e 0-9)."; +$LANG["validation_invalid_client_username"] = "O nome do cliente do usuário só pode consistir de caracteres alfanuméricos (AZ e 0-9)."; +$LANG["validation_invalid_client_username2"] = "Desculpe, nome de usuário só pode conter letras, números e caractere de sublinhado. Por favor, digite um novo nome."; +$LANG["validation_invalid_column_name"] = "Nomes das colunas só podem ser alfanuméricos (AZ, 0-9). Por favor verifique os nomes das colunas."; +$LANG["validation_invalid_custom_from_email"] = "Por favor, indique um costume válido 'From' email address."; +$LANG["validation_invalid_custom_reply_to_email"] = "Por favor, indique um costume válido 'Responder a' e-mail."; +$LANG["validation_invalid_default_sessions_timeout"] = "Por favor, introduza um valor válido (número um) para o tempo limite de sessões padrão."; +$LANG["validation_invalid_email"] = "Digite um endereço de e-mail válido."; +$LANG["validation_invalid_email_id"] = "Desculpe, isso é um e-mail inválido ID."; +$LANG["validation_invalid_folder"] = "Lamentamos, mas este não parece ser uma pasta válida."; +$LANG["validation_invalid_form_field_names"] = "Os campos do formulário só poderá ser alfanuméricos e sublinhados (AZ, 0-9, _), sem espaços."; +$LANG["validation_invalid_num_clients_per_page"] = "Por favor, só digitar números no campo Clientes Num Per Page."; +$LANG["validation_invalid_num_emails_per_page"] = "Por favor, só entra dígitos para os e-mails por página."; +$LANG["validation_invalid_num_form_fields"] = "Por favor, só digitar os números no campo Número de Campos."; +$LANG["validation_invalid_num_forms_per_page"] = "Por favor, só digitar números no campo Formas Num Per Page."; +$LANG["validation_invalid_num_menus_per_page"] = "Por favor, só entra dígitos para os menus por página."; +$LANG["validation_invalid_num_modules_per_page"] = "Por favor, só digitar números no campo Módulos Num Per Page."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Por favor, só digitar os números nas listas Num campo Opção Per Page."; +$LANG["validation_invalid_num_submissions_per_page"] = "Por favor, digite um número válido de submissões por página."; +$LANG["validation_invalid_sessions_timeout"] = "Por favor, indique um tempo limite de sessão válido (apenas números inteiros!)."; +$LANG["validation_invalid_tab_assign_values"] = "Por favor, só digitar números no campo 'De' e 'para' campos."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Instalação do seu servidor do PHP tem uma configuração inválida para o valor upload_tmp_dir. "{\$upload_folder}" não é uma pasta válida."; +$LANG["validation_invalid_url"] = "Por favor introduza um URL válido."; +$LANG["validation_invalid_username"] = "Seu nome de usuário só pode consistir de caracteres alfanuméricos (AZ e 0-9)."; +$LANG["validation_is_form_active"] = "Por favor indicar se o formulário está ativo ou não."; +$LANG["validation_menu_name_taken"] = "Desculpe, este nome de menu já está tomada. Por favor, escolha um novo nome."; +$LANG["validation_modules_search_no_status"] = "Por favor, selecione as caixas de seleção Ativado ou Desativado."; +$LANG["validation_no_access_type"] = "Por favor, indique o tipo de acesso."; +$LANG["validation_no_account_logout_url"] = "Por favor, digite a URL de logout."; +$LANG["validation_no_account_password_confirmed"] = "Digite novamente a nova senha."; +$LANG["validation_no_account_password_confirmed2"] = "Digite novamente a nova senha."; +$LANG["validation_no_admin_email"] = "Digite o endereço de e-mail do administrador."; +$LANG["validation_no_admin_theme"] = "Por favor, selecione o tema para a conta de administrador."; +$LANG["validation_no_admin_theme_swatch"] = "Por favor, selecione uma amostra para o tema administrador."; +$LANG["validation_no_client_email"] = "Digite o endereço de e-mail do cliente."; +$LANG["validation_no_client_first_name"] = "Por favor, introduza o primeiro nome do cliente."; +$LANG["validation_no_client_last_name"] = "Por favor, digite o sobrenome do cliente."; +$LANG["validation_no_client_login_page"] = "Por favor, indique qual página o cliente deve ser redirecionado para quando eles log in"; +$LANG["validation_no_client_password"] = "Por favor, digite a senha do cliente."; +$LANG["validation_no_client_theme_swatch"] = "Por favor, selecione uma amostra padrão para as contas de cliente."; +$LANG["validation_no_client_username"] = "Por favor, indique o nome de cliente."; +$LANG["validation_no_column_name"] = "Por favor indicar todos os nomes de coluna, ou clique no botão Preenchimento inteligente para preencher automaticamente eles."; +$LANG["validation_no_column_selected"] = "Selecione pelo menos um campo para aparecer como uma coluna na página de listagem de submissão."; +$LANG["validation_no_custom_from_email"] = "Por favor, indique o 'De' personalizado endereço de email."; +$LANG["validation_no_custom_recipient_email"] = "Por favor, indique o endereço de email personalizado destinatário."; +$LANG["validation_no_custom_reply_to_email"] = "Por favor, indique o costume 'Responder a' e-mail."; +$LANG["validation_no_date_format"] = "Por favor, indique um formato de data."; +$LANG["validation_no_db_column_single"] = "Por favor, insira o nome da coluna do banco de dados."; +$LANG["validation_no_db_hostname"] = "Por favor, informe o nome do banco de dados."; +$LANG["validation_no_db_name"] = "Por favor, digite o nome do banco de dados."; +$LANG["validation_no_db_username"] = "Por favor, indique o nome de conta de banco de dados."; +$LANG["validation_no_default_client_theme"] = "Por favor, selecione o tema padrão para todas as novas contas de clientes."; +$LANG["validation_no_default_language"] = "Por favor, selecione o idioma padrão para a instalação de um formulário Ferramentas."; +$LANG["validation_no_default_sessions_timeout"] = "Por favor, indique o tempo limite de sessão padrão para contas de usuário."; +$LANG["validation_no_display_text"] = "Digite o texto de exibição para cada campo."; +$LANG["validation_no_display_text_single"] = "Por favor, insira o valor de texto de exibição."; +$LANG["validation_no_edit_submission_page_label"] = "Por favor, digite o rótulo Editar página de submissão."; +$LANG["validation_no_email"] = "Por favor digite seu endereço de email."; +$LANG["validation_no_email_config_field"] = "Por favor, especificar qual campo de formulário é o campo e-mail."; +$LANG["validation_no_email_content"] = "Por favor, indique o conteúdo de e-mail, pelo menos, um dos formatos (HTML ou texto)."; +$LANG["validation_no_email_from_field"] = "Por favor, o e-mail 'de' campo."; +$LANG["validation_no_email_template_name"] = "Por favor, indique o e-mail nome do modelo."; +$LANG["validation_no_email_template_view_id"] = "Por favor, selecione o Vista para que este e-mail modelo deve ser mapeado."; +$LANG["validation_no_email_template_view_mapping_value"] = "Por favor indicar quando o e-mail deve ser enviada."; +$LANG["validation_no_enabled_themes"] = "Certifique-se que, pelo menos, um tema é ativado."; +$LANG["validation_no_first_name"] = "Por favor digite seu primeiro nome."; +$LANG["validation_no_form_field_name"] = "Por favor, indique todos os nomes de campo de formulário."; +$LANG["validation_no_form_field_single"] = "Por favor, insira o valor do campo de formulário."; +$LANG["validation_no_form_id"] = "O formulário de identificação não foi especificado. Por favor, saia e tente novamente."; +$LANG["validation_no_form_name"] = "Por favor, digite o nome do formulário."; +$LANG["validation_no_form_url"] = "Por favor, digite a URL do formulário."; +$LANG["validation_no_last_name"] = "Por favor, entre com seu sobrenome."; +$LANG["validation_no_login_page"] = "Por favor, indique qual a página que você gostaria de ser enviado de cada vez que você log in"; +$LANG["validation_no_logout_url"] = "Por favor, digite a URL de logout."; +$LANG["validation_no_main_email_recipient"] = "Por favor, insira pelo menos um destinatário de e-mail principal (ou seja, não CC ou BCC)."; +$LANG["validation_no_menu"] = "Por favor selecione um menu para esta conta de usuário."; +$LANG["validation_no_menu_id"] = "Por favor selecione um menu."; +$LANG["validation_no_num_clients_per_page"] = "Por favor, indique o número de contas de clientes por página."; +$LANG["validation_no_num_emails_per_page"] = "Por favor, indique o número de e-mails para listar por página."; +$LANG["validation_no_num_form_fields"] = "Por favor digite o número de campos para o formulário."; +$LANG["validation_no_num_forms_per_page"] = "Por favor, indique o número de formulários por página."; +$LANG["validation_no_num_menus_per_page"] = "Por favor, indique o número de menus de lista por página."; +$LANG["validation_no_num_modules_per_page"] = "Por favor, indique o número de módulos por página."; +$LANG["validation_no_num_option_lists_per_page"] = "Por favor, insira o número de listas de opção por página."; +$LANG["validation_no_num_submissions_per_page"] = "Por favor, indique o número de submissões para mostrar por página."; +$LANG["validation_no_option_list_name"] = "Por favor, indique o nome da lista de opções."; +$LANG["validation_no_page_titles"] = "Por favor, introduza os títulos de página padrão para as contas de usuário."; +$LANG["validation_no_password"] = "Por favor digite sua senha."; +$LANG["validation_no_program_name"] = "Por favor, digite o nome do programa."; +$LANG["validation_no_second_password"] = "Por favor re-digite sua senha."; +$LANG["validation_no_sessions_timeout"] = "Por favor, indique o tempo limite da sessão."; +$LANG["validation_no_smart_fill_values"] = "Por favor, digite o nome do campo de formulário e URL do formulário."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "No guias definidas"; +$LANG["validation_no_test_email_recipient"] = "Por favor, indique o endereço de email de onde devemos enviar o e-mail de teste."; +$LANG["validation_no_test_email_submission_id"] = "Por favor, indique o número de identificação de apresentação."; +$LANG["validation_no_theme"] = "Por favor selecione um tema."; +$LANG["validation_no_theme_swatch"] = "Por favor, selecione uma amostra para o tema selecionado."; +$LANG["validation_no_timezone_offset"] = "Por favor, indique o deslocamento de fuso horário."; +$LANG["validation_no_titles"] = "Por favor, introduza os títulos da página."; +$LANG["validation_no_two_column_names"] = "Desculpe, você não pode entrar o nome da coluna mesmo banco de dados duas vezes."; +$LANG["validation_no_ui_language"] = "Por favor seleccionar um idioma para a interface."; +$LANG["validation_no_url"] = "Digite um URL."; +$LANG["validation_no_username"] = "Por favor digite seu nome de usuário."; +$LANG["validation_no_username_or_js"] = "Você deve digitar seu nome de usuário. Por favor ativar o JavaScript no seu navegador."; +$LANG["validation_no_view_fields"] = "Sua opinião não contém todos os campos! Você precisa escolher pelo menos um campo para que haja algo para mostrar-se na sua opinião."; +$LANG["validation_no_view_fields_selected"] = "Por favor, selecione um ou mais campos para adicionar à View."; +$LANG["validation_no_view_name"] = "Por favor, indique o nome da sua exibição."; +$LANG["validation_num_rows_to_add"] = "Por favor, indique o número de linhas a acrescentar."; +$LANG["validation_option_list_name_taken"] = "Desculpe, este nome da lista de opção já está tomada. Por favor, escolher um novo nome."; +$LANG["validation_password_in_password_history"] = "Por razões de segurança, você não pode digitar a mesma senha que qualquer um dos passado {\$history_size}. Digite uma senha diferente."; +$LANG["validation_passwords_different"] = "Por favor, certifique-se as senhas são os mesmos."; +$LANG["validation_please_enter_search_date_range"] = "Por favor, selecione o período de pesquisa."; +$LANG["validation_please_enter_search_keyword"] = "Por favor, digite a palavra chave de busca."; +$LANG["validation_select_field_type"] = "Por favor selecione um tipo de campo."; +$LANG["validation_select_submissions_to_copy"] = "Por favor, selecione os envios que você gostaria de copiar."; +$LANG["validation_select_submissions_to_delete"] = "Por favor, selecione os argumentos que você gostaria de apagar."; +$LANG["validation_smart_fill_cannot_fill"] = "Desculpe, não conseguimos preencher este campo."; +$LANG["validation_smart_fill_invalid_field_type"] = "Não foi possível localizar um campo, mas não é um dropdown, caixa ou grupo de rádio."; +$LANG["validation_smart_fill_no_field_found"] = "Desculpe, não conseguimos encontrar um campo de formulário com o nome da página especificada."; +$LANG["validation_smart_fill_no_page"] = "Por favor, localize a página que contém o campo que você deseja Preenchimento inteligente."; +$LANG["validation_smart_fill_upload_all_pages"] = "Faça upload de todas as páginas do formulário."; +$LANG["validation_upload_folder_not_writable"] = "Esta pasta upload temporário especificado por sua instalação do PHP não é gravável. Até que isto seja corrigido, os arquivos não podem ser enviados através de formulário de Ferramentas (ou qualquer outro programa PHP). Por favor, contate seu provedor de hospedagem."; +$LANG["validation_upload_html_files_only"] = "Por favor, só o upload de arquivos HTML."; +$LANG["validation_username_taken"] = "Desculpe, esse nome já está tomada. Por favor, indique outro nome."; +$LANG["validation_wrong_password"] = "Desculpe, a senha não corresponde."; +$LANG["word_about"] = "Sobre"; +$LANG["word_access"] = "Acesso"; +$LANG["word_account"] = "Conta"; +$LANG["word_account_sp"] = "Conta (s)"; +$LANG["word_accounts"] = "Contas"; +$LANG["word_action"] = "Ação"; +$LANG["word_active"] = "Activo"; +$LANG["word_add"] = "Adicionar"; +$LANG["word_add_rightarrow"] = "Adicionar »"; +$LANG["word_add_uc_rightarrow"] = "Adicionar »"; +$LANG["word_administration"] = "Administração"; +$LANG["word_administrator"] = "Administrador"; +$LANG["word_after"] = "Depois"; +$LANG["word_aquamarine"] = "Água-marinha"; +$LANG["word_asc"] = "ASC"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«voltar"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Antes"; +$LANG["word_benefits"] = "Benefícios"; +$LANG["word_blue"] = "Azul"; +$LANG["word_cancel"] = "Cancelar"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Caixas de seleção"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Cliente"; +$LANG["word_client_c"] = "Cliente:"; +$LANG["word_clients"] = "Clientes"; +$LANG["word_close"] = "FECHAR"; +$LANG["word_code"] = "Código"; +$LANG["word_column"] = "Coluna"; +$LANG["word_columns"] = "Colunas"; +$LANG["word_columns_sp"] = "Coluna (s)"; +$LANG["word_complete"] = "COMPLETO"; +$LANG["word_configuration"] = "Configuração"; +$LANG["word_content"] = "Conteúdo"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continue »"; +$LANG["word_copy"] = "cópia de"; +$LANG["word_custom"] = "Personalizado"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Data"; +$LANG["word_debugging_c"] = "Depuração:"; +$LANG["word_delete"] = "Deletar"; +$LANG["word_desc"] = "DECR"; +$LANG["word_direct"] = "Directo"; +$LANG["word_disabled"] = "Desactivado"; +$LANG["word_documentation"] = "Documentação"; +$LANG["word_done"] = "Feito"; +$LANG["word_drawbacks"] = "Inconvenientes"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "EDITAR"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "EMAIL"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Habilitado"; +$LANG["word_equals"] = "Igual a"; +$LANG["word_error"] = "Erro"; +$LANG["word_error_c"] = "Erro:"; +$LANG["word_examples_c"] = "Exemplos:"; +$LANG["word_external"] = "Externo"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Campo"; +$LANG["word_field_sp"] = "Campo(s)"; +$LANG["word_fields"] = "Campos"; +$LANG["word_fields_sp"] = "Campo (s)"; +$LANG["word_file"] = "Ficheiro"; +$LANG["word_file_b_uc"] = "[FICHEIRO]"; +$LANG["word_files"] = "Arquivos"; +$LANG["word_filters"] = "Filtros"; +$LANG["word_filters_sp"] = "Filtro (s)"; +$LANG["word_for"] = "por"; +$LANG["word_form"] = "Formulário"; +$LANG["word_form_c"] = "Formulário:"; +$LANG["word_formatting"] = "Formatação"; +$LANG["word_forms"] = "Formulários"; +$LANG["word_found"] = "Encontrado"; +$LANG["word_from"] = "De"; +$LANG["word_from_c"] = "De:"; +$LANG["word_general"] = "Geral"; +$LANG["word_green"] = "Verde"; +$LANG["word_grey"] = "Cinzento"; +$LANG["word_height"] = "Altura"; +$LANG["word_help"] = "Ajuda"; +$LANG["word_hidden"] = "Escondido"; +$LANG["word_highlight"] = "Realçar"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Hora"; +$LANG["word_hours"] = "Horas"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Imagem"; +$LANG["word_incomplete"] = "Incompleto"; +$LANG["word_install"] = "Instalar"; +$LANG["word_installation"] = "Instalação"; +$LANG["word_internal"] = "Interno"; +$LANG["word_language"] = "Idioma"; +$LANG["word_large"] = "Grande"; +$LANG["word_like"] = "Parecido com"; +$LANG["word_login"] = "ENTRAR"; +$LANG["word_logo"] = "Logotipo"; +$LANG["word_logout"] = "Sair"; +$LANG["word_main"] = "Principal"; +$LANG["word_medium"] = "Médio"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "minutos"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Módulo"; +$LANG["word_modules"] = "Módulos"; +$LANG["word_na"] = "N/D"; +$LANG["word_name"] = "Nome"; +$LANG["word_name_c"] = "Nome:"; +$LANG["word_never"] = "Nunca"; +$LANG["word_next_rightarrow"] = "Próximo »"; +$LANG["word_next_step_rightarrow"] = "PRÓXIMO PASSO »"; +$LANG["word_no"] = "Não"; +$LANG["word_none"] = "Nenhum"; +$LANG["word_notes"] = "Notas"; +$LANG["word_notification"] = "Notificação"; +$LANG["word_number"] = "Número"; +$LANG["word_off"] = "Desligado"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Ok"; +$LANG["word_on"] = "Ligado"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operador"; +$LANG["word_options"] = "Opções"; +$LANG["word_orange"] = "Laranja"; +$LANG["word_order"] = "Ordem"; +$LANG["word_other"] = "Outro"; +$LANG["word_other_c"] = "Outros:"; +$LANG["word_page"] = "Página"; +$LANG["word_page_c"] = "Página:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Senha"; +$LANG["word_password_c"] = "Senha:"; +$LANG["word_pending"] = "Pendente"; +$LANG["word_permissions"] = "Permissões"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«anterior"; +$LANG["word_private"] = "Privado"; +$LANG["word_public"] = "Público"; +$LANG["word_purple"] = "Roxo"; +$LANG["word_recipient"] = "Destinatário"; +$LANG["word_recipient_sp"] = "Destinatário(s)"; +$LANG["word_red"] = "Vermelho"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Remover"; +$LANG["word_remove_uc_leftarrow"] = "«Remover"; +$LANG["word_reply_to"] = "Responder a"; +$LANG["word_reply_to_c"] = "Responder a:"; +$LANG["word_required"] = "Exigido"; +$LANG["word_reset"] = "Limpar"; +$LANG["word_resolved"] = "Resolvidas"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "linha"; +$LANG["word_search"] = "Pesquisar"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Selecione"; +$LANG["word_setting"] = "Ajuste"; +$LANG["word_settings"] = "CONFIGURAÇÕES"; +$LANG["word_show"] = "Mostrar"; +$LANG["word_size"] = "Tamanho"; +$LANG["word_skipped"] = "Ignorado"; +$LANG["word_small"] = "Pequeno"; +$LANG["word_solution"] = "Solução"; +$LANG["word_sortable"] = "Ordenável"; +$LANG["word_start"] = "Começar"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Texto"; +$LANG["word_subject"] = "Assunto"; +$LANG["word_subject_c"] = "Assunto"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Envio"; +$LANG["word_submissions"] = "Envios"; +$LANG["word_system"] = "Sistema"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Guia (s)"; +$LANG["word_test"] = "Teste"; +$LANG["word_text"] = "Texto"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temas"; +$LANG["word_time"] = "Tempo"; +$LANG["word_tiny"] = "Minúsculo"; +$LANG["word_tips"] = "Dicas"; +$LANG["word_today"] = "Hoje"; +$LANG["word_truncate_q"] = "Truncar?"; +$LANG["word_uninstall"] = "Desinstalar"; +$LANG["word_unknown"] = "Desconhecido"; +$LANG["word_update"] = "ACTUALIZAR"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Usuário"; +$LANG["word_username"] = "Nome do Usuário"; +$LANG["word_username_c"] = "Nome do Usuário:"; +$LANG["word_validation"] = "Validação"; +$LANG["word_value"] = "Valor"; +$LANG["word_value_sp"] = "Valor(es)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Verificar"; +$LANG["word_version"] = "Versão"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Visualizar"; +$LANG["word_views"] = "Vistas"; +$LANG["word_warning"] = "Aviso!"; +$LANG["word_warning_c"] = "Atenção:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Bem-vindo!"; +$LANG["word_width_c"] = "width:"; +$LANG["word_words"] = "Palavras"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Amarelo"; +$LANG["word_yes"] = "Sim"; \ No newline at end of file diff --git a/global/lang/pt_br.php b/global/lang/pt_br.php new file mode 100644 index 00000000..50ac596e --- /dev/null +++ b/global/lang/pt_br.php @@ -0,0 +1,1219 @@ +Warning! You have selected {\$num_selected_on_page} submissions on this page and {\$num_selected_on_other_pages} on other pages. Please choose one of the following options:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Warning! You haven't selected any submissions on this page but you've selected {\$num_selected_on_other_pages} on other pages. Please confirm you want to delete these submissions.
    "; +$LANG["confirm_delete_view"] = "Tem certeza que quer apagar esta Visualização?"; +$LANG["confirm_refresh_page"] = "Are you sure you want to refresh the page? This will lose any changes you have made."; +$LANG["confirm_save_change_before_redirect"] = "One or more fields have been updated. Would you like to save your changes before redirecting?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Tem certeza que quer o Preenchimento Inteligente dos nomes das coluna de banco de dados? Isso irá substituir os valores existentes."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "This option auto-generates the database column names based on the Display Text fields, so the contents of the database table are easier to read."; +$LANG["confirm_smart_fill_display_names"] = "Tem certeza que deseja realizar o preenchimento automático dos nomes de exibição? Isto irá sobrescrever seus valores existentes."; +$LANG["confirm_ungroup_option_list"] = "Are you sure you want to ungroup this option list? All options will be lumped into a single, ungrouped list."; +$LANG["confirm_uninstall_module"] = "Tem certeza de que deseja desinstalar esse módulo? Todos os dados do módulo serão perdidos.."; +$LANG["date_AM"] = "am"; +$LANG["date_Fri"] = "Sex"; +$LANG["date_Friday"] = "Sexta"; +$LANG["date_Mon"] = "Seg"; +$LANG["date_Monday"] = "Segunda"; +$LANG["date_PM"] = "pm"; +$LANG["date_Sat"] = "Sab"; +$LANG["date_Saturday"] = "Sábado"; +$LANG["date_Sun"] = "Dom"; +$LANG["date_Sunday"] = "Domingo"; +$LANG["date_Thu"] = "Qui"; +$LANG["date_Thursday"] = "Quinta"; +$LANG["date_Tue"] = "Ter"; +$LANG["date_Tuesday"] = "Terça"; +$LANG["date_Wed"] = "Qua"; +$LANG["date_Wednesday"] = "Quarta"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Abril"; +$LANG["date_month_August"] = "Agosto"; +$LANG["date_month_December"] = "Dezembro"; +$LANG["date_month_February"] = "Fevereiro"; +$LANG["date_month_January"] = "Janeiro"; +$LANG["date_month_July"] = "Julho"; +$LANG["date_month_June"] = "Junho"; +$LANG["date_month_March"] = "Março"; +$LANG["date_month_May"] = "Mai"; +$LANG["date_month_November"] = "Novembro"; +$LANG["date_month_October"] = "Outubro"; +$LANG["date_month_September"] = "Setembro"; +$LANG["date_month_short_Apr"] = "Abr"; +$LANG["date_month_short_Aug"] = "Ago"; +$LANG["date_month_short_Dec"] = "Dez"; +$LANG["date_month_short_Feb"] = "Fev"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "May"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Out"; +$LANG["date_month_short_Sep"] = "Set"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "A conta do usuário foi excluída."; +$LANG["notify_account_updated"] = "Sua conta de usuário foi atualizada com sucesso."; +$LANG["notify_add_display_values"] = "Adicionar Valores a Tela"; +$LANG["notify_admin_menu_updated"] = "O menu de administração foi atualizado."; +$LANG["notify_admin_theme_overridden"] = "O tema do administrador foi manualmente manipulado."; +$LANG["notify_allow_url_fopen_not_set"] = "Desculpe, este teste não pode ser executado no seu servidor web. Exige allow_url_fopen a ser definido para 1 no seu arquivo php.ini. Esta configuração permite o PHP acessar arquivos através de uma URL, que é necessário para executar este teste. Você pode testá-lo manualmente, enviando um arquivo para essa pasta via FTP, em seguida, tentando acessá-lo no endereço que você forneceu."; +$LANG["notify_change_temp_password"] = "You just logged in with a temporary password. You should reset your password now!"; +$LANG["notify_click_to_edit_new_submission"] = "Clique aqui para editar o novo envio."; +$LANG["notify_client_account_menus_updated"] = "A(s) conta(s) de cliente(s) foi(foram) atualizada(s) para o {\$menu_name} menu. Agora você pode excluir o menu que estava anteriormente associado à conta(s)."; +$LANG["notify_client_account_not_updated"] = "A conta de cliente não pôde ser atualizada."; +$LANG["notify_client_account_themes_updated"] = "A(s) conta(s) de cliente(s) foram atualizada(s) para o tema {\$theme}. Agora você pode desativar o tema anteriormente associado à(s) conta(s)."; +$LANG["notify_client_account_updated"] = "A conta de cliente foi atualizada com sucesso."; +$LANG["notify_client_menu_deleted"] = "O menu do cliente foi excluído."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "O menu foi excluído, mas as contas do cliente a seguir já não têm um menu! Você precisa atualizar as seguintes contas:"; +$LANG["notify_client_menu_updated"] = "O menu do cliente foi atualizado."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Desculpe, no menu que você acabou de tentar apagar já está sendo usado pelos clientes listados abaixo. A fim de eliminar o menu você primeiro precisa atribuir aos clientes outros menus. Clique sobre o nome do cliente para editar a conta individual, ou atribuir todas as contas para um menu diferente usando a lista suspensa abaixo."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Desculpe, um dos temas que você acabou de desabilitar está sendo usadas pelas contas dos seguintes cliente. Para desativar o tema terá primeiro de atribuir a cada cliente outro tema. Clique sobre o nome do cliente para editar a conta individual, ou atribuir todas as contas de um tema usando a lista suspensa abaixo."; +$LANG["notify_edit_email_fields_link"] = "Click here to specify which form fields are email fields, so you can target them in your email templates."; +$LANG["notify_edit_field_new_field"] = "This is a new field. You will need to update the main page before being able to fully edit this field."; +$LANG["notify_edit_option_list_after_save"] = "You must select an Option List and then Save Changes before being able to edit it."; +$LANG["notify_email_field_config_deleted"] = "The email configuration has been deleted."; +$LANG["notify_email_fields_not_updated"] = "Desculpe, não foi possível atualizar os campos e-mail."; +$LANG["notify_email_fields_updated"] = "Os campos e-mail foram atualizados."; +$LANG["notify_email_not_sent"] = "O email não pôde ser enviado. Por favor contate o adiministrador do site no endereço abaixo."; +$LANG["notify_email_not_sent_c"] = "Sorry, the email could not be sent: "; +$LANG["notify_email_sent"] = "O(s) e-mail(s) foi(foram) enviado(s)."; +$LANG["notify_email_template_deleted"] = "O modelo de e-mail foi excluído."; +$LANG["notify_email_template_updated"] = "The email template has been updated."; +$LANG["notify_enabled_module_list_updated"] = "A lista dos módulos ativados foi atualizado."; +$LANG["notify_error_saving_fields"] = "There was an error saving the fields."; +$LANG["notify_field_changes_saved"] = "The changes to your field(s) have been saved."; +$LANG["notify_field_options_smart_filled"] = "Your field options have been Smart Filled."; +$LANG["notify_field_selected"] = "O campo foi selecionado. Clique aqui para voltar à lista de campo principal."; +$LANG["notify_field_updated"] = "Este campo foi atualizado."; +$LANG["notify_file_not_uploaded"] = "O arquivo não pôde ser enviado."; +$LANG["notify_file_uploaded"] = "O arquivo foi enviado com sucesso."; +$LANG["notify_filters_not_updated"] = "Houve um erro na atualização de submissão de filtros desse cliente."; +$LANG["notify_filters_updated"] = "Os filtros de envio deste cliente foram atualizados com sucesso."; +$LANG["notify_folder_correct_permissions"] = "Esta pasta tem as permissões corretas."; +$LANG["notify_folder_url_match"] = "A pasta e a URL parecem combinar corretamente."; +$LANG["notify_folder_url_no_access"] = "Este teste não pôde ser realizado pois o PHP não foi capaz de acessar esta URL. Isto é normalmente causado por uma URL sendo protegida por senha por um arquivo de configuração .htaccess."; +$LANG["notify_folder_url_no_match"] = "Esta combinação de pasta/URL não parece estar combinando."; +$LANG["notify_folder_url_unknown_error"] = "Um erro desconhecido ocorreu. Você pode testar manualmente realizando o upload de um arquivo para essa pasta via FTP, então tente acessá-lo na URL que você forneceu."; +$LANG["notify_form_access_type_email_info"] = "This form has administrator access type, so no clients have access to it and are not listed in the dropdown below."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sorry, a form with that ID does not exist."; +$LANG["notify_form_field_not_added"] = "O campo de formulário '{\$fieldname}' não pode ser adicionado."; +$LANG["notify_form_field_options_updated"] = "As opções de campo de formulário foram atualizadas."; +$LANG["notify_form_field_removed"] = "O campo de formulário foi removido com sucesso."; +$LANG["notify_form_fields_removed"] = "Os campos de formulário foram removidos com sucesso."; +$LANG["notify_form_not_updated_notify_admin"] = "Seu formulário não pôde ser atualizado. Por favor contate o administrador do site para relatar este problema."; +$LANG["notify_form_settings_updated"] = "As configurações do seu formulário foram atualizadas com sucesso."; +$LANG["notify_form_submission_updated"] = "O formulário de inscrição foi atualizado."; +$LANG["notify_form_tabs_updated"] = "As guias foram atualizadas."; +$LANG["notify_form_updated"] = "O formulário foi atualizado com sucesso."; +$LANG["notify_form_views_updated"] = "The form Views have been updated."; +$LANG["notify_install_invalid_db_info"] = "Desculpe, não foi possível se conectar ao banco de dados usando as informações fornecidas. A mensagem de erro do banco de dados retornou {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Your form has been created! You can configure your form through these tabs."; +$LANG["notify_invalid_account_information_in_sessions"] = "As informações da conta guardados em sessões não é válido. Faça o login novamente abaixo."; +$LANG["notify_invalid_license_key"] = "Sorry, that does not appear to be a valid license key. Please try entering it again."; +$LANG["notify_invalid_permissions"] = "Você não tem permissão para acessar esta página. Você foi desconectado."; +$LANG["notify_invalid_search_dates"] = "Please use the datepicker to enter a valid date or dates."; +$LANG["notify_invalid_upload_folder"] = "A pasta de upload é inválida ou não é gravável."; +$LANG["notify_lang_list_updated"] = "A lista de idiomas disponíveis foi atualizada."; +$LANG["notify_login_info_emailed"] = "Sua informação de login foi enviada a você por email."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, this module is already installed!"; +$LANG["notify_module_installed"] = "O módulo foi instalado. Clique aqui para selecionar o módulo."; +$LANG["notify_module_list_updated"] = "A lista de módulos foi atualizada."; +$LANG["notify_module_uninstalled"] = "O módulo foi desinstalado."; +$LANG["notify_module_updated"] = "The {\$module} module has been updated to {\$version}. Click here to select the module."; +$LANG["notify_multi_field_selected"] = "O campo foi selecionado. Clique aqui para visualizar e editar as opções de campo."; +$LANG["notify_multi_field_updated"] = "Este campo foi atualizado. Você será capaz de configurar as opções de campo após a criação do formulário."; +$LANG["notify_multiple_fields_found"] = "Vários elementos foram encontrados com esse nome de campo ({\$field_name}). Isso pode ocorrer se a página contiver mais de um formulário ou se você acidentalmente nomear um dos seus formulários igual a outro. Por favor, escolha o que deseja na lista abaixo."; +$LANG["notify_new_default_view_created"] = "A new, default View containing all your form fields has been created."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "Nenhum ID de conta de usuário foi encontrado nas sessões. Faça o login novamente abaixo."; +$LANG["notify_no_api_installed"] = "You don't have the API installed"; +$LANG["notify_no_client_permissions"] = "Não há configurações disponíveis para edição."; +$LANG["notify_no_email_template_selected"] = "Por favor, selecione o modelo de e-mail."; +$LANG["notify_no_emails_defined"] = "Nenhum e-mails foram definidas para este formulário. Para adicionar um novo, clique no botão abaixo."; +$LANG["notify_no_field_settings"] = "This field type doesn't contain any extra settings."; +$LANG["notify_no_fields_in_tab"] = "Esta aba não contém todos os campos."; +$LANG["notify_no_option_lists"] = "There are no option lists defined. Click the button below to create a new one."; +$LANG["notify_no_test_submission"] = "Ferramentas de Formulário não recebeu ainda uma apresentação de teste bem sucedido.."; +$LANG["notify_no_user_email_fields_configured"] = "Note: if you want to send an email to any email address that was included in the form, you first need to configure the form email fields."; +$LANG["notify_no_views"] = "Your form doesn't have any Views set up! You will need at least one View in order to manage your form data."; +$LANG["notify_no_views_assigned_to_client_form"] = "Parece que a sua conta de usuário não foi atribuído qualquer Exibição de formulário, assim você não será capaz de ver os dados. Entre em contato com o administrador para obter mais ajuda."; +$LANG["notify_no_views_defined"] = "You don't have any Views defined. You will not be able to view this form's submissions unless at least one View is created. Click the button below to create the default View."; +$LANG["notify_option_list_deleted"] = "The option list has been deleted."; +$LANG["notify_option_list_updated"] = "The option list has been updated."; +$LANG["notify_public_form_omit_list_updated"] = "O cliente omitir lista para este formulário foi atualizado."; +$LANG["notify_public_view_omit_list_updated"] = "The client omit list for this View has been updated."; +$LANG["notify_required_admin_pages"] = "The following pages are required in the administrator menu: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Sorry, there wasn't any activity for a while so we had to log you out. Please log in again below."; +$LANG["notify_setup_options_updated"] = "As opções de setup foram atualizadas."; +$LANG["notify_smart_fill_field_not_found"] = "Não foi possível localizar um campo com este nome ({\$field_name}) no(s) formulário(s) especificado(s). Você pode definir o tipo de campo abaixo ou clicar no botão Ignorar para editar este campo mais tarde."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Arquivo(s) enviado(s) com sucesso. Clique o botão Smart Fill para tentar novamente. Se este passo falhar, ignore-o e configure os campos do formulário manualmente mais tarde."; +$LANG["notify_smart_fill_submitted"] = "The form has been submitted. Depending on the size of your form and number of field options, this may take some time."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Sorry, one or more of the files you entered could not be uploaded. You will need to skip this step and configure the fields manually."; +$LANG["notify_submission_and_files_deleted"] = "A inscrição e quaisquer arquivos associadas a ela foram excluídas com sucesso."; +$LANG["notify_submission_copied"] = "O envio foi copiado."; +$LANG["notify_submission_copied_edit"] = "O envio foi copiado. Você pode editá-lo abaixo."; +$LANG["notify_submission_deleted"] = "A inscrição foi excluída com sucesso."; +$LANG["notify_submission_deleted_with_problems"] = "A inscrição foi excluída, mas os seguintes problemas foram encontrados quando tentava excluir o(s) seguinte(s) arquivo(s):"; +$LANG["notify_submission_id_not_found"] = "O ID da inscrição não foi encontrado."; +$LANG["notify_submission_not_updated"] = "A inscrição não pôde ser atualizada."; +$LANG["notify_submissions_and_files_deleted"] = "As inscrições e quaisquer arquivos associadas a elas foram excluídas com sucesso."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} submissões foram copiadas."; +$LANG["notify_submissions_deleted"] = "As inscrições foram excluídas com sucesso."; +$LANG["notify_submissions_deleted_with_problems"] = "As inscrições foram excluídas, mas os seguintes problemas foram encontrados quando tentava excluir o(s) seguinte(s) arquivo(s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Seu teste de email não pôde ser enviado."; +$LANG["notify_theme_cache_folder_not_writable"] = "This theme's cache folder is not writable. In order to enable this theme, the {\$folder} folder needs to have full read-write permissions."; +$LANG["notify_theme_list_updated"] = "The theme list has been updated."; +$LANG["notify_themes_settings_updated"] = "Your theme settings have been updated."; +$LANG["notify_view_deleted"] = "The View has been deleted."; +$LANG["notify_view_group_deleted"] = "The View group has been deleted."; +$LANG["notify_view_missing_columns"] = "Oops! Sorry, this View hasn't been fully set up yet."; +$LANG["notify_view_missing_columns_admin_fix"] = "Click here to specify which fields should appear as columns on this page."; +$LANG["notify_view_updated"] = "The View has been updated."; +$LANG["notify_your_email_sent"] = "Seu email foi enviado com sucesso."; +$LANG["phrase_100_per_page"] = "100 per page"; +$LANG["phrase_10_per_page"] = "10 per page"; +$LANG["phrase_15_per_page"] = "15 per page"; +$LANG["phrase_1_direct"] = "1. Direto"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per page"; +$LANG["phrase_25_per_page"] = "25 per page"; +$LANG["phrase_2_code"] = "2. Código"; +$LANG["phrase_2_columns"] = "2 Columns"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 Columns"; +$LANG["phrase_4_columns"] = "4 Columns"; +$LANG["phrase_50_per_page"] = "50 per page"; +$LANG["phrase_accepting_submissions"] = "(aceitando submissões)"; +$LANG["phrase_access_admin_account_c"] = "Você pode acessar sua conta administrativa aqui:"; +$LANG["phrase_access_type"] = "Tipo de Acesso"; +$LANG["phrase_account_info"] = "Informação da Conta"; +$LANG["phrase_account_settings"] = "Configurações da Conta"; +$LANG["phrase_action_needed"] = "Ação Necessária"; +$LANG["phrase_add_client"] = "ADICIONAR CLIENTE"; +$LANG["phrase_add_client_menu"] = "Adicionar Menu de Cliente"; +$LANG["phrase_add_default_settings_rightarrow"] = "Add default settings »"; +$LANG["phrase_add_field"] = "Adicionar Campo"; +$LANG["phrase_add_fields"] = "ADICIONAR CAMPOS"; +$LANG["phrase_add_fields_rightarrow"] = "Add Field(s) »"; +$LANG["phrase_add_form"] = "Adicionar Formulário"; +$LANG["phrase_add_form_external"] = "Add Form - External"; +$LANG["phrase_add_form_internal"] = "Add Form - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Add New Group »"; +$LANG["phrase_add_num_rows"] = "Adicionar {\$number} Linha(s)"; +$LANG["phrase_add_row"] = "Adicionar Linha »"; +$LANG["phrase_add_submission_button"] = "Add Submission Button"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Adicionando um formulário multi-página com o API"; +$LANG["phrase_adding_single_page_form"] = "Adicionando um formulário de uma página com o API"; +$LANG["phrase_admin_menu"] = "Menu do Administrador"; +$LANG["phrase_admin_only"] = "Somente Administrador"; +$LANG["phrase_admin_panel"] = "Painel de Administração"; +$LANG["phrase_administrator_theme"] = "Tema do Administrador"; +$LANG["phrase_advanced_settings_rightarrow"] = "Configurações avançadas »"; +$LANG["phrase_all_X_results_selected"] = "Todos os {\$numresults} Resultados Selecionados"; +$LANG["phrase_all_clients"] = "Todos os clientes"; +$LANG["phrase_all_clients_except_c"] = "Todos os clientes exceto:"; +$LANG["phrase_all_clients_have_access"] = "(todos os clientes possuem acesso)"; +$LANG["phrase_all_fields"] = "Todos os campos"; +$LANG["phrase_all_fields_displayed"] = "Todos os campos são exibidos"; +$LANG["phrase_all_statuses"] = "Todos os status"; +$LANG["phrase_all_submissions"] = "Todas as inscrições"; +$LANG["phrase_allow_fields_edited"] = "Permitir campos serem editados"; +$LANG["phrase_alphanumeric"] = "Alphanumeric (a-Z, 0-9)"; +$LANG["phrase_api_version"] = "Versão da API"; +$LANG["phrase_apply_timezone_offset"] = "Apply Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Atribuir todas as contas de cliente listadas para {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Atribuir todas as contas de cliente listadas para {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "At End"; +$LANG["phrase_at_start"] = "At Start"; +$LANG["phrase_author_link"] = "Link do Autor"; +$LANG["phrase_auto_disable_account"] = "Auto desativar conta após # de tentativas falhas de login"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Clientes Disponíveis"; +$LANG["phrase_available_fields"] = "Available Fields"; +$LANG["phrase_available_option_lists"] = "Available Option Lists"; +$LANG["phrase_available_swatches"] = "Available Swatches"; +$LANG["phrase_available_swatches_c"] = "Available Swatches:"; +$LANG["phrase_available_tabs"] = "Available Tabs"; +$LANG["phrase_available_views"] = "Visualizações Disponíveis"; +$LANG["phrase_awaiting_form_submission"] = "Aguardando envio da inscrição."; +$LANG["phrase_back_to_field_list"] = "« Voltar para a lista de campos"; +$LANG["phrase_back_to_search_results"] = "voltar aos resultados de pesquisa"; +$LANG["phrase_base_view_on"] = "Base View on..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Mudar Informação de Login"; +$LANG["phrase_characters_limit_p"] = "characters limit."; +$LANG["phrase_check_db_settings_try_again"] = "Verifique as configurações do banco de dados e clique no botão Continuar novamente."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Check URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Limpar"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Limpar Lista de Omitidos"; +$LANG["phrase_client_account_settings"] = "Configurações de Conta de Cliente"; +$LANG["phrase_client_field"] = "Campo Cliente"; +$LANG["phrase_client_map_filters"] = "Filtros de Mapa de Cliente »"; +$LANG["phrase_client_may_edit"] = "Cliente pode editar"; +$LANG["phrase_client_menu"] = "Menu Cliente"; +$LANG["phrase_clients_can_access_form"] = "Clientes que podem acessar o formulário"; +$LANG["phrase_clients_can_access_view"] = "Clientes que podem acessar a Visualização"; +$LANG["phrase_clients_cannot_access_form"] = "Clientes que não podem acessar o formulário"; +$LANG["phrase_clients_cannot_access_view"] = "Clientes que não podem acessar a Visualização"; +$LANG["phrase_clients_may_edit"] = "Clientes podem editar"; +$LANG["phrase_code_c"] = "Código do Erro:"; +$LANG["phrase_code_markup_field"] = "Code / Markup Field"; +$LANG["phrase_code_markup_type"] = "Code / Markup Type"; +$LANG["phrase_codes_c"] = "Código de Erros:"; +$LANG["phrase_column_width"] = "Column Width"; +$LANG["phrase_company_name"] = "Nome da Empresa"; +$LANG["phrase_configure_form_email_fields"] = "Configure os campos de Email do Formulário"; +$LANG["phrase_confirm_folder_url_match"] = "Confirme a Pasta/URL"; +$LANG["phrase_connect_rows"] = "Connect rows"; +$LANG["phrase_copy_email_settings_from"] = "Copiar Configurações de Email de..."; +$LANG["phrase_copy_settings_from"] = "Copiar Configurações de..."; +$LANG["phrase_core_fields"] = "Campos Nativos"; +$LANG["phrase_core_version"] = "Versão do Núcleo do Programa"; +$LANG["phrase_create_account"] = "Criar Conta"; +$LANG["phrase_create_admin_account"] = "Criar Conta de Administrador"; +$LANG["phrase_create_config_file"] = "Criar Arquivo de Configuração"; +$LANG["phrase_create_database_tables"] = "Criar Tabelas do Banco de Dados"; +$LANG["phrase_create_default_view"] = "Create Default View"; +$LANG["phrase_create_file"] = "Criar Arquivo"; +$LANG["phrase_create_group"] = "Create Group"; +$LANG["phrase_create_new_email"] = "Criar Novo Email"; +$LANG["phrase_create_new_menu"] = "Criar Novo Menu"; +$LANG["phrase_create_new_option_list"] = "Create New Option List"; +$LANG["phrase_create_new_option_list_group"] = "Create new option list group"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Create New Option List »"; +$LANG["phrase_create_new_view"] = "Criar Nova Visualização"; +$LANG["phrase_create_new_view_group"] = "Create New View Group"; +$LANG["phrase_custom_display_format"] = "Custom Display Format"; +$LANG["phrase_custom_recipient"] = "Recipiente Personalizado"; +$LANG["phrase_custom_url"] = "URL Personalizada"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Tipo de Dados"; +$LANG["phrase_database_hostname"] = "Hostname do Banco de Dados"; +$LANG["phrase_database_name"] = "Nome do Banco de Dados"; +$LANG["phrase_database_password"] = "Senha do Banco de Dados"; +$LANG["phrase_database_settings"] = "Configurações do Banco de Dados"; +$LANG["phrase_database_setup"] = "Configuração do Banco de Dados"; +$LANG["phrase_database_table_prefix"] = "Prefixo de Tabela do Banco de Dados"; +$LANG["phrase_database_username"] = "Usuário do Banco de Dados"; +$LANG["phrase_date_format"] = "Formato de Data"; +$LANG["phrase_db_column"] = "Coluna BD"; +$LANG["phrase_db_setup_page_4"] = "4. Configuração do Banco de Dados"; +$LANG["phrase_default_client_account_theme"] = "Tema Padrão de Conta de Cliente"; +$LANG["phrase_default_date_field_search_value"] = "Default date field search value"; +$LANG["phrase_default_language"] = "Idioma padrão"; +$LANG["phrase_default_menu"] = "Menu Padrão"; +$LANG["phrase_default_sessions_timeout"] = "Tempo Padrão de Expiração de Sessão"; +$LANG["phrase_default_sort_order"] = "Ordenação padrão"; +$LANG["phrase_default_tab_label"] = "Dado"; +$LANG["phrase_default_theme"] = "Tema Padrão"; +$LANG["phrase_default_value"] = "Default value"; +$LANG["phrase_default_values"] = "Default values"; +$LANG["phrase_default_values_new_submissions"] = "Default Values for New Submissions"; +$LANG["phrase_delete_field"] = "Delete Field"; +$LANG["phrase_delete_form"] = "APAGAR FORMULÁRIO"; +$LANG["phrase_delete_row"] = "Delete Row"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Excluir arquivos associados ao excluir uma inscrição"; +$LANG["phrase_delete_view"] = "Delete View"; +$LANG["phrase_disconnect_rows"] = "Disconnect rows"; +$LANG["phrase_display_email"] = "Exibir Email"; +$LANG["phrase_display_name"] = "Visualizar Nome"; +$LANG["phrase_display_text"] = "Visualizar Texto"; +$LANG["phrase_display_value"] = "Valor de Exibição"; +$LANG["phrase_edit_admin_menu"] = "Editar Menu de Administrador"; +$LANG["phrase_edit_client"] = "Editar Cliente"; +$LANG["phrase_edit_client_menu"] = "Editar Menu do Cliente"; +$LANG["phrase_edit_email_template"] = "Editar Modelo do Email"; +$LANG["phrase_edit_field"] = "Editar Campo"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Editar Formulário"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit form access type]"; +$LANG["phrase_edit_option_list"] = "Edit Option List"; +$LANG["phrase_edit_submission"] = "Editar Envio"; +$LANG["phrase_edit_submission_label"] = "Edit Submission Label"; +$LANG["phrase_edit_view"] = "Editar Visualização"; +$LANG["phrase_email_format"] = "Formato do Email"; +$LANG["phrase_email_settings"] = "CONFIGURAÇÃO DE EMAIL"; +$LANG["phrase_email_template"] = "Modelo de Email"; +$LANG["phrase_email_template_name"] = "Nome do Modelo de Email"; +$LANG["phrase_error_learn_more"] = "Saiba mais sobre este erro."; +$LANG["phrase_error_text_intro"] = "Corrija os seguintes erros e envie novamente:"; +$LANG["phrase_errors_learn_more"] = "Clique nos códigos de erro para saber mais."; +$LANG["phrase_event_trigger"] = "Trigger do Evento"; +$LANG["phrase_external_form"] = "External Form"; +$LANG["phrase_external_form_info"] = "External Form Info"; +$LANG["phrase_external_your_own_form"] = "External (your own form)"; +$LANG["phrase_field_comments"] = "Field Comments"; +$LANG["phrase_field_label"] = "Rótulo do campo"; +$LANG["phrase_field_options"] = "Opções do campo"; +$LANG["phrase_field_size"] = "Tamanho do Campo"; +$LANG["phrase_field_skipped"] = "Campo ignorado"; +$LANG["phrase_field_specific_settings"] = "Field-Specific Settings"; +$LANG["phrase_field_type"] = "Tipo de Campo"; +$LANG["phrase_field_type_no_validation"] = "There are no validation rules available for this field type."; +$LANG["phrase_field_types"] = "Tipos de campo"; +$LANG["phrase_field_value"] = "Valor do campo"; +$LANG["phrase_field_values_to_display_values"] = "Valor dos campos » Valores Exibidos"; +$LANG["phrase_final_touches_page_6"] = "6. Toques Finais"; +$LANG["phrase_finalize_form"] = "Finalizar Formulário"; +$LANG["phrase_first_name"] = "Primeiro Nome"; +$LANG["phrase_footer_text"] = "Texto de Rodapé"; +$LANG["phrase_for_any_form_submission"] = "Para qualquer inscrição de formulário"; +$LANG["phrase_for_view_submissions"] = "Only submissions that fit into the following View(s)"; +$LANG["phrase_forgot_password"] = "ESQUECEU SUA SENHA?"; +$LANG["phrase_form_already_selected"] = "Formulário já selecionado"; +$LANG["phrase_form_email_field_b_c"] = "[Campo de email do formulário]:"; +$LANG["phrase_form_email_field_configuration"] = "Configuração de campos de Email de Formulário"; +$LANG["phrase_form_email_fields"] = "Campos de email do formulário"; +$LANG["phrase_form_field"] = "Campo de Formulário"; +$LANG["phrase_form_field_contents"] = "Form Field Contents"; +$LANG["phrase_form_field_name"] = "Nome do Campo de Formulário"; +$LANG["phrase_form_field_placeholders"] = "Form field placeholders"; +$LANG["phrase_form_fields"] = "Campos de Formulário"; +$LANG["phrase_form_info"] = "Informação do Formulário"; +$LANG["phrase_form_info_2"] = "2. Informação do Formulário"; +$LANG["phrase_form_list"] = "Form List"; +$LANG["phrase_form_name"] = "Nome do Formulário"; +$LANG["phrase_form_page"] = "Página do Formulário"; +$LANG["phrase_form_placeholders"] = "CÓDIGOS DO FORMULÁRIO"; +$LANG["phrase_form_submission"] = "ENVIO DE FORMULÁRIO"; +$LANG["phrase_form_submissions"] = "Inscrições do Formulário"; +$LANG["phrase_form_type"] = "Tipo do Formulário"; +$LANG["phrase_form_url"] = "URL do Formulário"; +$LANG["phrase_form_urls"] = "Form URLs"; +$LANG["phrase_forms_assigned_to_any_account"] = "Forms assigned to any account"; +$LANG["phrase_forms_page_default_message"] = "Forms page default message"; +$LANG["phrase_ft_installation"] = "Script de instalação do Form Tools"; +$LANG["phrase_full_width"] = "Full Width"; +$LANG["phrase_getting_started"] = "getting started"; +$LANG["phrase_global_placeholders"] = "CÓDIGOS GLOBAIS"; +$LANG["phrase_group_name"] = "Nome do Grupo"; +$LANG["phrase_group_options_q"] = "Group options?"; +$LANG["phrase_group_rows"] = "Group rows"; +$LANG["phrase_have_fun"] = "Divirta-se!"; +$LANG["phrase_highlight_colour"] = "Highlight Colour"; +$LANG["phrase_html_email"] = "Email em HTML"; +$LANG["phrase_html_template"] = "Modelo HTML"; +$LANG["phrase_images_media"] = "Imagens / Mídia"; +$LANG["phrase_import_option_list_rightarrow"] = "Import Option List »"; +$LANG["phrase_input_length"] = "Input Length"; +$LANG["phrase_installation_help"] = "Installation Help"; +$LANG["phrase_internal_form"] = "Internal Form"; +$LANG["phrase_ip_address"] = "Endereço IP"; +$LANG["phrase_is_multi_page_form_q"] = "Is this a multi-page form?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response Placeholders"; +$LANG["phrase_large_300px"] = "Large (300px)"; +$LANG["phrase_large_400px"] = "Large (400px)"; +$LANG["phrase_last_7_days"] = "Last 7 days"; +$LANG["phrase_last_logged_in"] = "Logado pela última vez em"; +$LANG["phrase_last_modified"] = "Última modificação"; +$LANG["phrase_last_modified_date"] = "Última data de modificação"; +$LANG["phrase_last_name"] = "Sobrenome"; +$LANG["phrase_letters_only"] = "Letters Only"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Limitar conteúdo de email aos campos na visualização"; +$LANG["phrase_loading_ellipsis"] = "Loading..."; +$LANG["phrase_log_in"] = "ENTRAR"; +$LANG["phrase_login_as_user"] = "Log in as this user"; +$LANG["phrase_login_info"] = "Informações de Login"; +$LANG["phrase_login_page"] = "Página de Login"; +$LANG["phrase_login_panel_c"] = "Painel de Login:"; +$LANG["phrase_login_panel_leftarrows"] = "« Painel de Login"; +$LANG["phrase_login_password"] = "Senha para Login"; +$LANG["phrase_login_username"] = "Usuário para Login"; +$LANG["phrase_logo_link_url"] = "URL para Logo"; +$LANG["phrase_logout_url"] = "URL de Logout"; +$LANG["phrase_main_nav"] = "Navegação Principal"; +$LANG["phrase_main_settings"] = "Configurações Principais"; +$LANG["phrase_manage_client"] = "Administrar Cliente"; +$LANG["phrase_manage_client_omit_list"] = "Manage Client Omit List"; +$LANG["phrase_max_file_size"] = "Tamanho máximo de arquivo"; +$LANG["phrase_max_length"] = "Max Length"; +$LANG["phrase_max_length_words_chars"] = "- Max length (words/chars)"; +$LANG["phrase_may_add_submissions"] = "May add Submissions"; +$LANG["phrase_may_copy_submissions"] = "Pode copiar envios"; +$LANG["phrase_may_delete_submissions"] = "May delete Submissions"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Nome do Menu"; +$LANG["phrase_menu_type"] = "Tipo do Menu"; +$LANG["phrase_min_password_length"] = "Comprimento mínimo da senha"; +$LANG["phrase_module_description"] = "Descrição do Módulo"; +$LANG["phrase_module_info"] = "Informação do Módulo"; +$LANG["phrase_module_nav"] = "Navegação do Módulo"; +$LANG["phrase_month_to_date"] = "Month to date"; +$LANG["phrase_multi_select"] = "Caixa de seleção múltipla"; +$LANG["phrase_multi_select_dropdown"] = "Caixa Multi-seleção"; +$LANG["phrase_multiple_fields_found"] = "Múltiplos campos encontrados!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nome / Sobrenome"; +$LANG["phrase_new_blank_email"] = "Novo Email em Branco"; +$LANG["phrase_new_blank_option_list"] = "New Blank Option List"; +$LANG["phrase_new_blank_view"] = "Nova visualização em branco"; +$LANG["phrase_new_ft_installation"] = "Nova instalação do Form Tools"; +$LANG["phrase_new_option_list"] = "New Option List"; +$LANG["phrase_new_password"] = "Nova Senha"; +$LANG["phrase_new_password_reenter"] = "Nova Senha (redigite)"; +$LANG["phrase_new_view"] = "Nova visualização"; +$LANG["phrase_new_view_all_fields"] = "New View - All fields"; +$LANG["phrase_next_client"] = "next client »"; +$LANG["phrase_next_field"] = "próximo campo »"; +$LANG["phrase_next_form"] = "next form »"; +$LANG["phrase_next_view"] = "próxima visualização »"; +$LANG["phrase_no_clients"] = "Sem clientes"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Sem Desvio"; +$LANG["phrase_no_option_lists_available"] = "No options lists available."; +$LANG["phrase_no_views"] = "Sem visualizações"; +$LANG["phrase_no_views_with_filters_p"] = "(No Views with filters defined)"; +$LANG["phrase_none_not_recommended"] = "Nenhum (não recomendado)"; +$LANG["phrase_not_assigned_to_option_list"] = "This field isn't assigned to an Option List."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "NÃO Igual a"; +$LANG["phrase_not_found"] = "Não encontrado!"; +$LANG["phrase_not_like"] = "DIFERENTE de"; +$LANG["phrase_not_visible_to_client"] = "(não visível aos clientes)"; +$LANG["phrase_num_clients_per_page"] = "Número de Clientes por Página"; +$LANG["phrase_num_emails_per_page"] = "Número de Emails por Página"; +$LANG["phrase_num_fields"] = "Number of Fields"; +$LANG["phrase_num_forms_per_page"] = "Número de Formulários por Página"; +$LANG["phrase_num_menus_per_page"] = "Número de menus por página"; +$LANG["phrase_num_modules_per_page"] = "Número de módulos por página"; +$LANG["phrase_num_option_lists_per_page"] = "Num Option Lists Per Page"; +$LANG["phrase_num_options"] = "Num Options"; +$LANG["phrase_num_rows"] = "Num Rows"; +$LANG["phrase_numbers_only"] = "Numbers Only"; +$LANG["phrase_often_localhost"] = "(geralmente \"localhost\")"; +$LANG["phrase_on_form_submission"] = "Na inscrição do formulário"; +$LANG["phrase_one_char_number"] = "Pelo menos um caractere é um número (0-9)"; +$LANG["phrase_one_char_upper"] = "Ao menos um caractere em maiúscula"; +$LANG["phrase_one_special_char"] = "At least one of {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(apenas clientes específicos possuem acesso)"; +$LANG["phrase_open_form_in_dialog"] = "Open form in dialog window"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Open this form in a new tab/window"; +$LANG["phrase_option_list"] = "Option List"; +$LANG["phrase_option_list_name"] = "Option List Name"; +$LANG["phrase_option_list_or_contents"] = "Option List / Contents"; +$LANG["phrase_option_lists"] = "Option Lists"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Titulos da Página"; +$LANG["phrase_pass_on"] = "Passar"; +$LANG["phrase_password_min"] = "Deve ter pelo menos {\$length} caracteres."; +$LANG["phrase_password_one_number"] = "Ela deve conter pelo menos um número (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Ela deve conter pelo menos uma letra maiúscula."; +$LANG["phrase_password_requirements_c"] = "Requisitos de senha:"; +$LANG["phrase_password_reset"] = "Resetar senha"; +$LANG["phrase_password_special_char"] = "Ela deve conter pelo menos um dos seguintes caracteres: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissions / Other Settings"; +$LANG["phrase_permitted_file_types"] = "Tipos de arquivos permitidos"; +$LANG["phrase_phone_number"] = "Phone Number"; +$LANG["phrase_phone_number_format"] = "Phone Number Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "tamanho máximo de arquivo permitido para upload no php.ini"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Versão do PHP"; +$LANG["phrase_please_confirm"] = "Please Confirm"; +$LANG["phrase_please_enter_license_key"] = "Please enter your license key"; +$LANG["phrase_please_select"] = "Por favor Selecione"; +$LANG["phrase_please_select_form"] = "Selecione um formulário"; +$LANG["phrase_prev_client"] = "« prev client"; +$LANG["phrase_prev_form"] = "« prev form"; +$LANG["phrase_prevent_password_reuse"] = "Evite re-utilização das últimas # senhas"; +$LANG["phrase_previous_field"] = "« campo anterior"; +$LANG["phrase_previous_page"] = "Página Anterior"; +$LANG["phrase_previous_view"] = "« prev View"; +$LANG["phrase_program_name"] = "Nome do Programa"; +$LANG["phrase_public_form_omit_list"] = "Lista de omissão de Formulários Públicos"; +$LANG["phrase_public_view_omit_list"] = "Lista de omissão de Visualizações Públicas"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "There was a problem with the following query: "; +$LANG["phrase_radio_buttons"] = "Botões de Rádio"; +$LANG["phrase_random_form_submission"] = "Envio de formulário aleatório"; +$LANG["phrase_re_enter_password"] = "Re-digite a Senha"; +$LANG["phrase_recipient_type"] = "Tipo de Recipiente"; +$LANG["phrase_redirect_url"] = "URL de redirecionamento"; +$LANG["phrase_refresh_list"] = "Recarregar Lista"; +$LANG["phrase_refresh_module_list"] = "Atualizar lista de módulos"; +$LANG["phrase_refresh_page"] = "RECARREGAR PÁGINA"; +$LANG["phrase_refresh_theme_list"] = "Atualizar lista de temas"; +$LANG["phrase_register_new_email"] = "Registrar novo email"; +$LANG["phrase_remaining_characters"] = "remaining characters"; +$LANG["phrase_remaining_words"] = "remaining words"; +$LANG["phrase_remove_tabs"] = "Remover Tabs"; +$LANG["phrase_required_password_chars"] = "Caracteres obrigatórios para senha"; +$LANG["phrase_resend_test_submission"] = "REENVIAR TESTE DE ENVIO"; +$LANG["phrase_return_form_list"] = "VOLTAR À LISTA DE FORMULÁRIOS"; +$LANG["phrase_row_selected"] = "{\$num_rows} linha selecionada"; +$LANG["phrase_rows_selected"] = "{\$num_rows} linhas selecionadas"; +$LANG["phrase_sample_data"] = "Dados de Exemplo"; +$LANG["phrase_save_changes"] = "Save Changes"; +$LANG["phrase_search_keyword"] = "Search keyword"; +$LANG["phrase_security_settings"] = "Configurações de Segurança"; +$LANG["phrase_select_all"] = "Selecionar todos"; +$LANG["phrase_select_all_X_results"] = "Selecionar todos os {\$numresults} resultados"; +$LANG["phrase_select_all_on_page"] = "Selecionar Todos na Página"; +$LANG["phrase_select_date"] = "Select date"; +$LANG["phrase_select_field"] = "Select Field"; +$LANG["phrase_select_swatch"] = "Select swatch"; +$LANG["phrase_selected_clients"] = "Clientes Selecionados"; +$LANG["phrase_selected_views"] = "Selecionar Visualizações"; +$LANG["phrase_send_email"] = "Enviar Email"; +$LANG["phrase_send_test_email"] = "ENVIAR TESTE DE EMAIL"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessão expirada"; +$LANG["phrase_setting_value"] = "Valor de configuração"; +$LANG["phrase_setup_options"] = "Opções de Configuração"; +$LANG["phrase_show_all"] = "Mostrar Todos"; +$LANG["phrase_show_form"] = "Show Form"; +$LANG["phrase_size_large"] = "Grande (TEXT)"; +$LANG["phrase_size_medium"] = "Médio (até 256 caracteres)"; +$LANG["phrase_size_small"] = "Pequeno (até 20 caracteres)"; +$LANG["phrase_size_tiny"] = "Minúsculo (até 5 caracteres)"; +$LANG["phrase_size_very_large"] = "Muito grande (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Pular campo"; +$LANG["phrase_skip_step"] = "Pular passo"; +$LANG["phrase_small_100px"] = "Small (100px)"; +$LANG["phrase_small_80px"] = "Small (80px)"; +$LANG["phrase_smart_fill"] = "PREENCHIMENTO AUTOMÁTICO"; +$LANG["phrase_smart_fill_fields_from_c"] = "Preenchimento inteligente dos campos de:"; +$LANG["phrase_smart_fill_user_documentation"] = "Preenchimento inteligente da Documentação do Usuário »"; +$LANG["phrase_sort_as"] = "Sort As"; +$LANG["phrase_special_fields"] = "Special Fields"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Filtros Padrão »"; +$LANG["phrase_step_1"] = "Passo 1"; +$LANG["phrase_step_2"] = "Passo 2"; +$LANG["phrase_step_3"] = "Passo 3"; +$LANG["phrase_step_4"] = "Passo 4"; +$LANG["phrase_step_5"] = "Passo 5"; +$LANG["phrase_step_6"] = "Passo 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Remover tags HTML nos envios de formulários"; +$LANG["phrase_subject_line"] = "Linha do Assunto"; +$LANG["phrase_submission_date"] = "Data de Envio"; +$LANG["phrase_submission_id"] = "ID de Envio"; +$LANG["phrase_submission_made"] = "Inscrição realizada em:{\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Tipo de Inscrição"; +$LANG["phrase_submissions_per_page"] = "Envios por Página"; +$LANG["phrase_system_check"] = "Checagem do Sistema"; +$LANG["phrase_system_fields_no_validation"] = "You may not add validation to system fields."; +$LANG["phrase_system_time_offset"] = "Fuso horário do Sistema"; +$LANG["phrase_tab_label"] = "Rótulo da Tab"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Testar Permissões de Pasta"; +$LANG["phrase_test_submission"] = "Teste de Envio"; +$LANG["phrase_test_submission_3"] = "3. Teste de inscrição"; +$LANG["phrase_test_submission_received"] = "Teste de inscrição recebido"; +$LANG["phrase_text_and_html"] = "Texto & HTML"; +$LANG["phrase_text_email"] = "Email em Texto"; +$LANG["phrase_text_template"] = "Modelo em Texto"; +$LANG["phrase_the_previous_month"] = "The previous Month"; +$LANG["phrase_theme_description"] = "Theme Description"; +$LANG["phrase_theme_info"] = "Informação do Tema"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Resultados Totais:"; +$LANG["phrase_type_c"] = "Tipo do Erro:"; +$LANG["phrase_unselect_all"] = "Desmarcar Todos"; +$LANG["phrase_update_accounts"] = "Atualizar Contas"; +$LANG["phrase_update_email_template"] = "Atualizar Modelo de Email"; +$LANG["phrase_update_field"] = "Atualizar campo"; +$LANG["phrase_update_order"] = "Update Order"; +$LANG["phrase_update_view"] = "Atualizar visuzalização"; +$LANG["phrase_upload_file"] = "Enviar Arquivo"; +$LANG["phrase_upload_files"] = "Enviar Arquivos"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Caminho da pasta de arquivos"; +$LANG["phrase_upload_folder_url"] = "URL da pasta de arquivos"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Use Default Value?"; +$LANG["phrase_used_by_num_form_fields"] = "Usado por # Campos de Formulário"; +$LANG["phrase_uses_swatches"] = "Uses Swatches"; +$LANG["phrase_valid_email"] = "Valid Email"; +$LANG["phrase_validation_error"] = "Validation Error"; +$LANG["phrase_validation_rule"] = "Validation Rule"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "View Group"; +$LANG["phrase_view_id"] = "View ID"; +$LANG["phrase_view_name"] = "Ver Nome"; +$LANG["phrase_view_placeholders"] = "View Placeholders"; +$LANG["phrase_view_submissions"] = "Ver inscrições"; +$LANG["phrase_view_uploaded_files"] = "ver arquivos enviados"; +$LANG["phrase_viewing_range"] = "[visualizando {\$startnum} a {\$endnum}]"; +$LANG["phrase_when_sent"] = "Quando enviado"; +$LANG["phrase_when_submission_is_deleted"] = "Quando inscrição é excluída"; +$LANG["phrase_when_submission_is_edited"] = "Quando inscrição é editada"; +$LANG["phrase_who_can_access"] = "Quem pode acessar?"; +$LANG["phrase_word_limit_p"] = "word limit."; +$LANG["phrase_year_to_date"] = "Year to date"; +$LANG["phrase_yes_for_all_views"] = "Sim, para todas as visualizações"; +$LANG["phrase_yes_for_specific_views"] = "Sim, para visualizações específicas"; +$LANG["phrase_your_account"] = "Sua conta"; +$LANG["phrase_your_email"] = "O seu Email"; +$LANG["phrase_your_email_address"] = "O seu endereço de email"; +$LANG["processing_form_disabled"] = "Este formulário foi desativado."; +$LANG["processing_form_incomplete"] = "Sorry, this form does not appear to be fully set up from within Form Tools. The most likely cause of this problem is that you removed the \"form_tools_initialize_form\" hidden form field, but didn't complete all the steps of the \"Add Form\" process.

    Please log in and review the form configuration."; +$LANG["processing_init_complete"] = "Thank you! Your test submission has been put through successfully. Please return to the Form Tools Administration panel and click the \"Refresh\" button at the bottom of the Add Form Step 3 page to finish setting up your form."; +$LANG["processing_invalid_form_id"] = "Sorry, this doesn't appear to be a valid form ID."; +$LANG["processing_no_form_id"] = "process.php requires a form ID for processing. Make sure your form contains a hidden field with the name \"form_tools_form_id\" that's passing along the form ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Tools is unable to determine where to redirect when they fail to enter the CAPTCHA properly. Please pass in a hidden field with the name form_tools_form_url containing the URL of the form."; +$LANG["processing_no_post_vars"] = "process.php is not receiving any data. Note: this script cannot be loaded directly in your browser.
    Make sure your form is sending via POST."; +$LANG["processing_no_redirect_url"] = "The submission was processed correctly, but you haven't specified a redirect URL for this form! Edit your form in the Form Tools UI and add the redirect URL."; +$LANG["special_language"] = "Portuguese"; +$LANG["special_language_locale"] = "Brazilian Portuguese"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Todas as novas contas de clientes serão criadas com as configurações e as permissões definidas abaixo. Para substituir uma configuração para um determinado cliente, edite a conta do cliente e visite sua guia Configurações."; +$LANG["text_add_form_choose_integration_method"] = "Choose which method you want to use to integrate your form with Form Tools."; +$LANG["text_add_form_code_submission_benefits"] = "This method uses the Form Tools API, included in the main Form Tools script. The API provides a number of helpful functions to make the job of integrating your form with Form Tools as simple as possible. There are no restrictions to how your form may be submitted when you use the API. You can submit the content in one go, or page by page; you can add your own custom server-side validation, CAPTCHA images; you can choose to submit the information now, but only tell it to display the submission in the Form Tools UI at a later date (see the Finalized Submissions section in the API help documentation)."; +$LANG["text_add_form_code_submission_drawbacks"] = "In order to submit your form data via PHP, your form must be located on the same website as this Form Tools installation. Secondly, for non-technical and novice Form Tools users, this method can be a little intimidating at first. But there's plenty of documentation to help you out, including two simple tutorials for integrating your single- and multi-page forms (these are linked to on a later step)."; +$LANG["text_add_form_direct_submission_benefits"] = "Esta é a maneira mais simples de enviar o formulário para o Form Tools. Ele não requer qualquer conhecimento de PHP e requer apenas uma mudança muito pequena para seu formulário. É ótimo para formulários menores, onde você quiser apenas enviar as informações ao banco de dados, em seguida, redirecionar o usuário para uma página de agradecimento."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Este método de apresentação é muito simples de usar, mas não dá muito controle para as formas mais complicadas. Formulários Multi-page ou formulários que requerem a validação do lado do servidor são mais adequadas para o segundo método: a apresentação através do Form Tools API."; +$LANG["text_add_form_field_types1"] = "Almost done! This page tries to find all your form fields and determine their field types. Click the Smart Fill button on the right to get started. You will be only allowed to proceed when all actions have been resolved - issues that need your attention appear in the \"Action Needed\" column."; +$LANG["text_add_form_field_types2"] = "If your form isn't in HTML, click the Skip Step button to proceed. This can all be configured later."; +$LANG["text_add_form_field_types3"] = "This reloads the contents of your form(s). Note: this will overwrite any changes you have made on this page."; +$LANG["text_add_form_field_types4"] = "In case you run into problems, click here to skip this step. All unresolved fields are set to use the default values. You can customize these fields later."; +$LANG["text_add_form_field_types_manual_upload"] = "If you have been unable to Smart Fill your fields, you may want to try an alternative solution: upload copies of your forms in the fields below."; +$LANG["text_add_form_field_types_manual_upload2"] = "Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML versions. To get this, view and save the page from your web browser."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "There were multiple fields that couldn't be found in the form page you specified. This is mostly likely caused by one of the following:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "You entered one or more of the form URLs of your multi-page form incorrectly."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "One or more pages of your form are password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "You incorrectly entered your form URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Click here to return to the Form Information page to check your settings."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "You changed your form(s) after making the test submission"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Click here to put through another test submission."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Your form is password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "In another tab / window of this browser, log into your form then click the Refresh Page button below to try to re-find the fields."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "If none of the above solutions work, you may also want to try manually uploading your forms for processing."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "There were multiple fields that couldn't be found in the form pages you specified. This is mostly likely caused by one of these:"; +$LANG["text_add_form_help_link"] = "If you run into any trouble during these steps, try reading our user documentation."; +$LANG["text_add_form_step_1_text_1"] = "As páginas seguintes levarão você através dos passos para configurar o Form Tools para armazenar suas submissões do formulário. Antes de continuar, verifique se:"; +$LANG["text_add_form_step_1_text_2"] = "o formulário já foi criado e é acessível através de uma URL (permitido localhost)"; +$LANG["text_add_form_step_1_text_3"] = "são capazes de editar o formulário"; +$LANG["text_add_form_step_2_para_2"] = "Abra seu formulário em um editor de sua escolha (como o Bloco de Notas do windows ou um editor HTML como o Dreamweaver) e troque o código HTML (ou PHP) do formulário para o seguinte, incluindo os dois campos ocultos (hidden)."; +$LANG["text_add_form_step_2_para_3"] = "Em seguida, abra o seu formulário em um navegador web. Preencha todos os campos e envie-o. Após a apresentação, você deve ver uma mensagem de notificação. Uma vez que essa mensagem é exibida, retorne a esta página e clique no botão \"atualizar\" a seguir. Quando esse processo for concluído, você verá um botão continuar abaixo, levando-o para a próxima etapa."; +$LANG["text_add_form_step_2_para_6"] = "Em sua apresentação de formulário, inclua os seguintes valores. Eles podem ser criados diretamente através de PHP ou repassados por meio do próprio formulário. Abaixo estão alguns exemplos de cada um. O {\$varname} é um hash (ou array associativo) de todas as informações de envio de formulário - este é geralmente a variável {\$postvar} ou {\$sessionvar}, mas pode ser personalizada."; +$LANG["text_add_form_step_2_text_2"] = "Enter the URL of your \"thankyou\" page here. This is where you want people to be directed to after the form has been submitted."; +$LANG["text_add_form_step_3_para_1"] = "Esta página lista todos os campos da submissão do formulário. Por favor, examine cada campo e remova qualquer um que você não precisa armazenado para cada apresentação. Se você excluir um campo válido por acidente ou se quiser alterar as informações armazenadas pela seu formulário, retorne à página anterior e envie uma nova inscrição de teste."; +$LANG["text_add_form_step_3_para_2"] = "Observação: se você está enviando vários valores através de caixas de checkbox ou uma caixa de multi-seleção, verifique se o nome dos campos terminaa com os caracteres [] (consulte a documentação do usuário para mais informações)."; +$LANG["text_add_form_step_3_text_1"] = "Here's where the fun starts! At this point, Form Tools is waiting for a test submission from your form. It will use this form submission to know what information should be stored in the database."; +$LANG["text_add_form_step_3_text_2"] = "apontando seu formulário para o Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "usando a API do Form Tools"; +$LANG["text_add_form_step_3_text_4"] = "Para ajudar a integrar seu formulário, nós sugerimos que você leia um dos seguintes tutoriais:"; +$LANG["text_add_form_step_3_text_5"] = "Eles explicam como configurar seu formulário para prepará-lo para a inscrição de teste e incluir outras informações que podem ser de ajuda. A linha de PHP que você precisará é:"; +$LANG["text_add_form_step_3_text_6"] = "Isto assegura que os dados estão sendo enviados para o Form Tools. Quando você acabar de enviar seu formulário, clique no botão abaixo."; +$LANG["text_add_form_step_3_text_7"] = "Na página anterior ao seu final \"agradecimento\", não se esqueça de adicionar o seguinte parâmetro para a variável \$params:"; +$LANG["text_add_form_step_5_para_1"] = "O banco de dados foi criado para para este formulário e o formulário foi ativado para uso. Se você fez a apresentação, apontando o formulário para process.php, volte ao seu formulário e retire o seguinte campo oculto:"; +$LANG["text_add_form_step_5_para_2"] = "Então visite o seu \"agradecimento\" para esvaziar as sessões. Quando isso for feito, todas as submissões novo formulário serão processados e armazenados pelo Form Tools. Tente fazer uma apresentação ou duas para verificar se as informações foram inseridas corretamente."; +$LANG["text_add_form_step_5_para_3"] = "Se quiser ajustar as opções de formulário, tais como e-mail automático, acrescentando um campo extra de formulário ou customizar os tipos de campos de formulário, você pode editar o formulário em qualquer ponto."; +$LANG["text_add_form_step_5_para_4"] = "Desde o formulário contém campos de upload de arquivo, você precisará configurar cada campo para especificar o upload do arquivo da pasta, os formatos de arquivo que são permitidos. Isto pode ser encontrado na guia Exibir da página de edição de formulário."; +$LANG["text_add_form_step_5_para_5"] = "Se a apresentação foi enviada através da API, altere a linha ft_api_init_form_page na primeira página de seu formulário para:"; +$LANG["text_add_submission_button"] = "The Add Submission button only appears for Views that have the \"May add submissions\" option set to \"yes\"."; +$LANG["text_admin_email_placeholder_info"] = "Este é o endereço de email do administrador do Form Tools, definido nas configurações da sua conta. Isso só gera o endereço de email, por isso, se você deseja usar como um link em HTML, você precisará envolvê-la em uma tag <a>, assim: <a href=\"mailto:{\$ADMINEMAIL}\">{\$ADMINEMAIL}</a>"; +$LANG["text_also_default_login_page_theme"] = "(Também o tema padrão página de login)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "First, please choose your form type."; +$LANG["text_client_form_page"] = "Esta página lista todas as formas e modos de exibição atribuídos a este cliente. Dica: para eles verem as visualizações de um formulário, eles precisam ser atribuídos a pelo menos uma Visualização."; +$LANG["text_client_map_filters_desc1"] = "Filtros de Mapa de Clientes permitem limitar as inscrições que aparecem nesta VIsualização mapeando os valores em um campo de formulário para os valores em uma conta de cliente."; +$LANG["text_client_no_forms"] = "Atualmente você não tem formulários para visualizar."; +$LANG["text_client_welcome"] = "Bem-vindo! Este programa armazena todas as informações apresentadas pelos visitantes do seu site. Para ver as inscrições para um formulário específico basta clicar sobre o link VISUALIZAR, ou consulte o menu de navegação à esquerda para outras opções."; +$LANG["text_config_file_created"] = "Seu arquivo config.php foi criado."; +$LANG["text_config_file_not_created"] = "Não foi possível criar o arquivo config.php. Você terá de criá-lo manualmente."; +$LANG["text_config_file_not_created_instructions"] = "Copie e cole o conteúdo da seção abaixo em um arquivo chamado config.php. Faça o upload via FTP para a pasta global folder dentro de sua instalação do form tools (esta pasta também contém alguns outros arquivos e diretórios, um deles chamado library.php)."; +$LANG["text_confirm_delete_form"] = "Sim, eu quero excluir este formulário"; +$LANG["text_create_admin_account"] = "Agora será criada a conta de administrador. Ela é usada para gerenciar todos os aspectos do Form Tools, como adicionar formulários e criar contas de usuários."; +$LANG["text_create_new_client_account"] = "Use o formulário abaixo para criar uma nova conta de cliente. Todos os campos são obrigatórios."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "veja a função PHP {\$datefunctionlink} para opções de formatação"; +$LANG["text_default_file_settings_page"] = "Esta página define as opções de envio de arquivos de sua instalação do Form Tools. As regras se aplicam a todos os arquivos enviados através do Form Tools, exceto quando modificadas para um campo de formulário individual. Nota: se você mudar a pasta de envio depois de ter enviado arquivos, eles serão automaticamente movidos para a nova pasta."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Antes de continuar, atualize a pasta /themes/default/cache com permissão para leitura e escrita total. Feito isto esta mensagem irá desaparecer e você poderá instalar o script"; +$LANG["text_default_values_in_view"] = "This section is optional. All submissions created with this View will contain the default values specified here."; +$LANG["text_delete_all_forms"] = "Eu quero excluir todos os arquivos que foram enviados através deste formulário"; +$LANG["text_delete_form_warning"] = "Você tem certeza que deseja apagar este formulário? Esta ação não poderá ser desfeita. Todos os dados serão perdidos permanentemente!"; +$LANG["text_edit_admin_menu_page"] = "You may edit your menu below. To ensure you always have access to all functionality available within Form Tools, the following pages are required: Forms, Clients, Your Account, Modules, Settings and Logout."; +$LANG["text_edit_client_menu_page"] = "This section lets you customize the left navigation column for each user. You may create as many client menus as you wish and assign any account to one of them. By default there are two menus: one for you, the administrator, and one for all client accounts. The administrator account may be modified but not removed."; +$LANG["text_edit_tab_summary"] = "If you wish to group this View's fields into tabs, just enter the tab names below. After you're done, select the appropriate tab for each field group in the Fields tab."; +$LANG["text_edit_view_list_page"] = "This tab controls which fields appear as columns on the Submission Listing page, and a few additional settings for those fields. Note: we recommend you add no more than 4 or 5 of the most important fields in the View."; +$LANG["text_email_settings_intro"] = "Esta página permite identificar quais campos do formulário contém emails e o nome do campo. Uma vez identificados você pode usá-los em seus templates como destinatários de e-mails. Esta seção é opcional."; +$LANG["text_email_tab_summary"] = "This section lets you construct any number of emails to be sent whenever your form is submitted, and other triggers."; +$LANG["text_email_template_tab"] = "This section lets you determine what content appears in the email. If you wish to send your email as only text or email, only enter a value for that section. If you enter a value for both, the email will be sent in both formats."; +$LANG["text_email_template_text_1"] = "There has been a submission made through your form, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "There has been a submission made through your form, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Obrigado pelo envio das informações!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Error message to show if the field fails the validation"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "External forms are forms that already exist on your website, or somewhere on the web. Select this option if you have your own form which you'd like to integrate with Form Tools."; +$LANG["text_fields_tab_summary"] = "This page lists all of your form fields. To control how they appear when browsing submissions, see the Views tab. Deleting a field on this page will delete it from all submissions, so please be careful!"; +$LANG["text_file_extension_info"] = "Digite as extensões de arquivo separadas por vírgula (ex: jpg,gif,png) ou deixe em branco para permitir qualquer tipo de arquivo."; +$LANG["text_file_field_placeholders_info"] = "Os campos de arquivos possuem dois tipos diferentes: FILEURL e FILENAME. FILEURL é o caminho de internet completo (URL) para o arquivo, assim você pode linkar diretamente os arquivos nos emails; FILENAME exibirá apenas o nome do arquivo."; +$LANG["text_filters_page"] = "Only those submissions that meet the rules you define below will appear in this View."; +$LANG["text_filters_tips"] = "For tips on how to use submission filters, see the User Documentation."; +$LANG["text_forgot_password"] = "No problem. Just enter your username below and your login information will be sent to your email address on file. If you have forgotten your username, please email the site administrator at {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Este formulário contém um ou mais campos de envio de arquivo:"; +$LANG["text_form_placeholder_info"] = "The following placeholders may be used in any email template and language placeholder field, regardless of whatever View the email template is assigned to. The QUESTION placeholders are the specific form question; the ANSWER placeholders are the answers to each question."; +$LANG["text_form_submission_date_placeholder"] = "The date when the submission was made."; +$LANG["text_form_tools_form_url"] = "The full URL of the form. This only has a value for External forms."; +$LANG["text_form_tools_login_url"] = "O URL para a página de login do Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Note: this form currently has Administrator access type, so none of the client accounts will be able to see this View."; +$LANG["text_form_view_permission_info_private"] = "Note: this form currently has Private access type so the Public and Private options here will be limited to that subset of clients."; +$LANG["text_ft_installed"] = "Congratulations, Form Tools has been successfully installed!"; +$LANG["text_global_placeholder_info"] = "Estes códigos podem ser usados em quaisquer templates de quaisquer formulários."; +$LANG["text_group_name_explanation"] = "For fields added through the Add Form process, this value is pre-filled to the display text of whatever field uses the value. You may wish to change it to better characterize the contents."; +$LANG["text_install_create_config_file"] = "Form Tools stores your server and database settings in a file called config.php, found in your /global/ folder. Click the \"Create File\" button to automatically generate the file on your server."; +$LANG["text_install_create_database_tables"] = "Now we're going to create the Form Tools database tables. This step requires the database itself to have already been created. If you're not sure how to do this, please contact your hosting provider."; +$LANG["text_install_db_tables_error_tip_1"] = "\"Unknown MySQL Server Host\" usually means that the hostname you provided is incorrect. Perhaps try setting this to \"localhost\" - this is a common way to refer to the \"local\" database on a web server."; +$LANG["text_install_db_tables_error_tip_2"] = "\"Can't connect to local MySQL server through socket\" means the database hostname field is again incorrect."; +$LANG["text_install_db_tables_error_tip_3"] = "\"Access denied for user:\" means that there is a problem with your username / password combination."; +$LANG["text_install_db_tables_error_tip_4"] = "\"Access denied for user: ... to database ...\" means that although your username and password you supplied is correct, it was unable to connect to that particular database with that account. This can mean that either your database name is incorrect, or that this user account is not associated with that database."; +$LANG["text_install_email_content_text"] = "Há muitos recursos em nosso site para ajudá-lo a começar, incluindo nossa documentação on-line (https://docs.formtools.org) e tutoriais (https://docs.formtools.org/tutorials). Se você achar que ficou preso ou tiver uma pergunta, faça uma pergunta no github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Sorry, Form Tools will not be able to run on your server. Please click here for the minimum requirements."; +$LANG["text_install_system_check"] = "This page runs a few tests on your system to ensure it's able to run Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Internal forms exist only within Form Tools - not elsewhere on your site. Only Form Tools user accounts will have access to the form. Select this option if you don't have an existing form."; +$LANG["text_internal_form_intro"] = "Use the form below to create a new Internal form. All settings, including the number and content of the form fields can be be changed and configured later."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Para entrar e usar o Formtools, você precisa estar com o javascript ativado no seu navegador. Por favor ative agora, e clique em atualizar no seu navegador."; +$LANG["text_last_modified_date_explanation_c"] = "The last time this submission was modified. For new submissions, this is the same as:"; +$LANG["text_limit_email_content_desc"] = "This option only works for HTML and text content generated with Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(only lists Views with one or more filters defined)"; +$LANG["text_log_in_to_ft"] = "Log in to Form Tools"; +$LANG["text_login"] = "Please log in below to access the {\$program_name} Administration Panel. If you have forgotten your password, click here."; +$LANG["text_login_info"] = "Conforme pedido, aqui está sua informação de login."; +$LANG["text_name_of_form"] = "O nome do formulário."; +$LANG["text_no_clients"] = "Atualmente não existe nenhum cliente no banco de dados. Para adicionar a conta de um novo cliente, clique no botão Adicionar Cliente abaixo."; +$LANG["text_no_clients_found"] = "No clients were found. Try broadening your search criteria."; +$LANG["text_no_fields_in_view"] = "This View doesn't have any fields in it. Click the link below."; +$LANG["text_no_forms"] = "Atualmente não existe nenhum formulário no banco de dados. Para adicionar um novo formulário, clique no botão Adicionar Formulário abaixo."; +$LANG["text_no_forms_found"] = "No forms were found."; +$LANG["text_no_forms_found_search"] = "No forms were found. Try broadening your search criteria."; +$LANG["text_no_modules_found"] = "No modules were found. Try broadening your search criteria."; +$LANG["text_no_recipients_added"] = "No recipients have been added."; +$LANG["text_no_search_results"] = "There are no results with this search criteria / View."; +$LANG["text_no_submissions_found"] = "Não existem envios cadastrados."; +$LANG["text_no_themes"] = "You do not have any themes defined. Click the button below to refresh your theme list, or check the Form Tools user documentation for information about adding themes."; +$LANG["text_non_deletable_fields"] = "This field is used by the Core script and cannot be edited or deleted without causing incompatibilities. If you wish to make changes to the field type, make a copy of it and edit the copy."; +$LANG["text_option_list_group_explanation"] = "If this is selected, it lets to group your options. How the groups are displayed depends on the field type using this option list."; +$LANG["text_option_list_page"] = "Radio buttons, checkboxes, dropdowns and multi-select dropdown fields all provide the user with multiple options from which they can select one or more items. In Form Tools, these are known as Option Lists. Generally, these are created automatically by the Add External Form process, but you can manually add or edit your option lists below if your form content changes or you construct fields that are only used internally."; +$LANG["text_option_list_used_by_fields"] = "This Option List is used by multiple form fields. If you update the information below, it will be changed for all of the fields (see the Form Fields tab to see the list of fields). If you wish to update the values for one, or a subset of the fields that are currently assigned, click here to create a new Option List with the same values as this one. Then you can assign the form fields you want to the new group."; +$LANG["text_public_form_omit_list_page"] = "Public forms give you the benefit of letting all client accounts access them without having to manually assign each client to them. This page lets you pinpoint those clients who may not access this form, even though the form is marked as public."; +$LANG["text_public_view_omit_list_page"] = "Public Views give you the benefit of letting all client accounts access them without having to manually assign each client to them. This page lets you pinpoint those clients who may not access this particular View."; +$LANG["text_reference_tab_info"] = "This page lists all placeholders available for your form. Placeholders are strings which can be used in the email templates, and fields marked with a special placeholder icon . When entered into a field, they are dynamically converted to the appropriate value when the field is viewed or the email is sent."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Review the user documentation"; +$LANG["text_send_email_from_edit_submission_page"] = "Include option to send this email from Edit Submission page"; +$LANG["text_smart_fill_option_list_problem"] = "We were unable to Smart Fill your field options. However, as an alternative, you can try uploading a copy of your form page in the field below. Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML version. To get this, view and save the page from your web browser."; +$LANG["text_submission_ip_address"] = "The IP Address of the user who made the submission."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Use the form below to either view or send yourself an email generated from this email template. The email is only sent to the email specified below; the main, cc and bcc email address recipients are ignored while testing."; +$LANG["text_test_email_templates_no_submissions"] = "Para testar seus modelos de email, primeiro você deverá cadastrar ao menos um envio no formulário."; +$LANG["text_theme_page_intro"] = "This page lists all of your themes. Click on a thumbnail to see a larger example of the theme's styles. The \"enabled\" checkbox determines whether or not that theme may be selected by clients. To browse all available themes, visit the Form Tools website."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Adding your first form!"; +$LANG["text_unique_submission_id"] = "O ID único do envio."; +$LANG["text_unused_option_list"] = "This option list is not being used by any form fields."; +$LANG["text_upgraded"] = "Your installation has been upgraded to {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "This Option List is used by the following fields."; +$LANG["text_view_fields_info"] = "This tab controls which fields show up when editing a submission in this View, their order and whether they are editable or not."; +$LANG["text_view_tab_summary"] = "This tab lets you create different ways to group and arrange your data. Views let you create custom subsets of your form data to split it into manageable chunks, and to limit what clients may see or edit."; +$LANG["validation_account_disabled"] = "Sua conta foi desativada."; +$LANG["validation_account_not_recognized"] = "Nome de usuário não existe."; +$LANG["validation_account_not_recognized_info"] = "Nome de usuário não encontrado. Por favor tente novamente ou entre em contato com o administrador do site no endereço abaixo"; +$LANG["validation_account_pending"] = "Your user account is pending approval by an administrator."; +$LANG["validation_check_delete_client"] = "Tem certeza de que deseja excluir esta conta de cliente?"; +$LANG["validation_client_password_missing_number"] = "The client password must contain at least one number (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "The client password must contain at least one of the following characters: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "The client password must contain at least one uppercase letter."; +$LANG["validation_client_password_too_short"] = "The client password needs to be at least {\$number} characters long."; +$LANG["validation_col_name_is_reserved_word"] = "Sorry, this database column name is a reserved work in MySQL. Please rename it!"; +$LANG["validation_db_name"] = "Nomes de bancos de dados não podem conter períodos ou barras."; +$LANG["validation_db_not_updated_invalid_input"] = "O banco de dados não pôde ser atualizado. Verifique se os valores digitados são válidos."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Sorry, the default administrator and client themes must always be enabled."; +$LANG["validation_default_phone_num_required"] = "Please fill in the full telephone number for the <b>{\$field}</b> field - numbers only."; +$LANG["validation_default_rule_alpha"] = "Please only enter letters and numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_letters_only"] = "Please only enter letters for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_numbers_only"] = "Please only enter numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_required"] = "Please enter a value for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_valid_email"] = "Please enter a valid email address for the <b>{\$field}</b> field."; +$LANG["validation_delete_form_confirm"] = "Please check the box to confirm that you wish to delete this form."; +$LANG["validation_delete_non_empty_option_list"] = "Warning! This Option List is used by one or more form fields. Deleting it will make those fields cease to work properly."; +$LANG["validation_display_names_incomplete"] = "Please enter a value for all the Display Names, or click the Smart Fill option to enter them dynamically."; +$LANG["validation_duplicate_form_field_name"] = "You cannot have multiple fields with the same field name."; +$LANG["validation_email_not_found_or_invalid"] = "Sorry, the email associated with your account either doesn't exist or is invalid."; +$LANG["validation_folder_invalid_permissions"] = "Para realizar este teste as permissões precisam estar configuradas na pasta de envio para permitir a leitura e a escrita de arquivos (permissão 777 em servidores Unix / Linux)."; +$LANG["validation_folder_not_writable"] = "Esta pasta não possui permissões para escrita."; +$LANG["validation_internal_form_too_many_fields"] = "Sorry, you can only created forms with 1000 fields or less."; +$LANG["validation_invalid_admin_email"] = "Please enter a valid adminstrator's email address."; +$LANG["validation_invalid_admin_username"] = "Your username may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_invalid_client_username"] = "The client's user name may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_invalid_client_username2"] = "Sorry, username's may only contain letters, numbers and the underscore character. Please enter a new username."; +$LANG["validation_invalid_column_name"] = "Column names may only be alphanumeric (a-Z, 0-9). Please check the column names."; +$LANG["validation_invalid_custom_from_email"] = "Please enter a valid custom 'From' email address."; +$LANG["validation_invalid_custom_reply_to_email"] = "Please enter a valid custom 'Reply-to' email address."; +$LANG["validation_invalid_default_sessions_timeout"] = "Please enter a valid value (a number) for the default sessions timeout."; +$LANG["validation_invalid_email"] = "Digite um endereço de email válido."; +$LANG["validation_invalid_email_id"] = "Sorry, that's an invalid email ID."; +$LANG["validation_invalid_folder"] = "Sorry, this does not appear to be a valid folder."; +$LANG["validation_invalid_form_field_names"] = "Form fields may only be alphanumeric and underscores (a-Z, 0-9, _), with no spaces."; +$LANG["validation_invalid_num_clients_per_page"] = "Digite apenas números no campo de Nº de Clientes por Página."; +$LANG["validation_invalid_num_emails_per_page"] = "Please only enter digits for the emails per page."; +$LANG["validation_invalid_num_form_fields"] = "Please only enter numbers in the Number of Fields field."; +$LANG["validation_invalid_num_forms_per_page"] = "Digite apenas números no campo de Nº de Formulários por Página."; +$LANG["validation_invalid_num_menus_per_page"] = "Por favor insira somente digitos para menus por página."; +$LANG["validation_invalid_num_modules_per_page"] = "Por favor insira somente números no campo \"Num Modules Per Page\"."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Please only enter numbers in the Num Option Lists Per Page field."; +$LANG["validation_invalid_num_submissions_per_page"] = "Digite uma quantidade válida para o número de envios por página."; +$LANG["validation_invalid_sessions_timeout"] = "Please enter a valid session timeout (integers only!)."; +$LANG["validation_invalid_tab_assign_values"] = "Please only enter numbers in the 'from' and 'to' fields."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Your server's installation of PHP has an invalid setting for the upload_tmp_dir value. \"{\$upload_folder}\" is not a valid folder."; +$LANG["validation_invalid_url"] = "Please enter a valid URL."; +$LANG["validation_invalid_username"] = "Your username may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_is_form_active"] = "Indique se o formulário está ativo ou não."; +$LANG["validation_menu_name_taken"] = "Sorry, this menu name is already taken. Please choose a new name."; +$LANG["validation_modules_search_no_status"] = "Please select either the Enabled or Disabled checkboxes."; +$LANG["validation_no_access_type"] = "Please enter the access type."; +$LANG["validation_no_account_logout_url"] = "Please enter your logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Please re-enter your new password."; +$LANG["validation_no_account_password_confirmed2"] = "Please re-enter the new password."; +$LANG["validation_no_admin_email"] = "Please enter the administrator's email address."; +$LANG["validation_no_admin_theme"] = "Please select the theme for the administrator account."; +$LANG["validation_no_admin_theme_swatch"] = "Please select a swatch for the administrator theme."; +$LANG["validation_no_client_email"] = "Please enter the client's email address."; +$LANG["validation_no_client_first_name"] = "Please enter the client's first name."; +$LANG["validation_no_client_last_name"] = "Please enter the client's last name."; +$LANG["validation_no_client_login_page"] = "Please indicate which page the client should be redirected to when they log in."; +$LANG["validation_no_client_password"] = "Please enter the client's password."; +$LANG["validation_no_client_theme_swatch"] = "Please select a default swatch for the client accounts."; +$LANG["validation_no_client_username"] = "Please enter the client's username."; +$LANG["validation_no_column_name"] = "Please enter all column names, or click the Smart Fill button to automatically fill them."; +$LANG["validation_no_column_selected"] = "Please select at least one field to appear as a column on the submission listing page."; +$LANG["validation_no_custom_from_email"] = "Please enter the custom 'From' email address."; +$LANG["validation_no_custom_recipient_email"] = "Please enter the custom recipient email address."; +$LANG["validation_no_custom_reply_to_email"] = "Please enter the custom 'Reply-to' email address."; +$LANG["validation_no_date_format"] = "Digite um formato de data."; +$LANG["validation_no_db_column_single"] = "Please enter the Database Column name."; +$LANG["validation_no_db_hostname"] = "Please enter the database hostname."; +$LANG["validation_no_db_name"] = "Please enter the database name."; +$LANG["validation_no_db_username"] = "Please enter the database account username."; +$LANG["validation_no_default_client_theme"] = "Please select the default theme for all new client accounts."; +$LANG["validation_no_default_language"] = "Selecione o idioma padrão para sua instalação do Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Please enter the default session timeout for user accounts."; +$LANG["validation_no_display_text"] = "Please enter the Display Text for each field."; +$LANG["validation_no_display_text_single"] = "Please enter the Display Text value."; +$LANG["validation_no_edit_submission_page_label"] = "Please enter the Edit Submission page label."; +$LANG["validation_no_email"] = "Digite seu endereço de email."; +$LANG["validation_no_email_config_field"] = "Please specify which form field is the email field."; +$LANG["validation_no_email_content"] = "Please enter the email content for at least one of the formats (HTML or text)."; +$LANG["validation_no_email_from_field"] = "Please the email 'from' field."; +$LANG["validation_no_email_template_name"] = "Please enter the email template name."; +$LANG["validation_no_email_template_view_id"] = "Please select the View to which this email template should be mapped."; +$LANG["validation_no_email_template_view_mapping_value"] = "Please indicate when the email should be sent."; +$LANG["validation_no_enabled_themes"] = "Please ensure that at least one theme is enabled."; +$LANG["validation_no_first_name"] = "Digite seu primeiro nome."; +$LANG["validation_no_form_field_name"] = "Please enter all form field names."; +$LANG["validation_no_form_field_single"] = "Please enter the Form Field value."; +$LANG["validation_no_form_id"] = "O ID do formulário não foi especificado. Por favor faça o logout e tente novamente."; +$LANG["validation_no_form_name"] = "Digite o nome do formulário."; +$LANG["validation_no_form_url"] = "Digite o URL do formulário."; +$LANG["validation_no_last_name"] = "Digite seu sobrenome."; +$LANG["validation_no_login_page"] = "Please indicate which page you would like to be sent each time you log in."; +$LANG["validation_no_logout_url"] = "Digite a URL de saída do sistema."; +$LANG["validation_no_main_email_recipient"] = "Please enter at least one main email recipient (i.e. not a cc or bcc)."; +$LANG["validation_no_menu"] = "Please select a menu for this user account."; +$LANG["validation_no_menu_id"] = "Please select a menu."; +$LANG["validation_no_num_clients_per_page"] = "Digite o número de contas de clientes por página."; +$LANG["validation_no_num_emails_per_page"] = "Please enter the number of emails to list per page."; +$LANG["validation_no_num_form_fields"] = "Please enter the number of fields for your form."; +$LANG["validation_no_num_forms_per_page"] = "Digite o número de formulários por página."; +$LANG["validation_no_num_menus_per_page"] = "Please enter the number of menus to list per page."; +$LANG["validation_no_num_modules_per_page"] = "Please enter the number of modules per page."; +$LANG["validation_no_num_option_lists_per_page"] = "Please enter the number of option lists per page."; +$LANG["validation_no_num_submissions_per_page"] = "Digite o número de formulários enviados a serem exibidos por página."; +$LANG["validation_no_option_list_name"] = "Please enter the option list name."; +$LANG["validation_no_page_titles"] = "Please enter the default page titles for the user accounts."; +$LANG["validation_no_password"] = "Digite sua senha."; +$LANG["validation_no_program_name"] = "Digite o nome do programa."; +$LANG["validation_no_second_password"] = "Please re-enter your password."; +$LANG["validation_no_sessions_timeout"] = "Please enter the session timeout."; +$LANG["validation_no_smart_fill_values"] = "Please enter the form field name and the URL of the form."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "No tabs defined"; +$LANG["validation_no_test_email_recipient"] = "Please enter the email address of where we should send the test email."; +$LANG["validation_no_test_email_submission_id"] = "Please enter the submission ID number."; +$LANG["validation_no_theme"] = "Please select a theme."; +$LANG["validation_no_theme_swatch"] = "Please select a swatch for the selected theme."; +$LANG["validation_no_timezone_offset"] = "Please enter the timezone offset."; +$LANG["validation_no_titles"] = "Digite o título das páginas."; +$LANG["validation_no_two_column_names"] = "Não é permitido o mesmo nome de coluna do banco de dados."; +$LANG["validation_no_ui_language"] = "Please select a language for the interface."; +$LANG["validation_no_url"] = "Please enter a URL."; +$LANG["validation_no_username"] = "Digite seu nome de usuário."; +$LANG["validation_no_username_or_js"] = "Você deve digitar seu nome de usuário. Por favor ative o javascript de seu navegador."; +$LANG["validation_no_view_fields"] = "Your View doesn't contain any fields! You need to assign at least one field for there to be something to show up in your View."; +$LANG["validation_no_view_fields_selected"] = "Please select one or more fields to add to the View."; +$LANG["validation_no_view_name"] = "Please enter the name of your View."; +$LANG["validation_num_rows_to_add"] = "Digite um número de linhas para adicionar."; +$LANG["validation_option_list_name_taken"] = "Sorry, this option list name is already taken. Please choose a new name."; +$LANG["validation_password_in_password_history"] = "For security, you cannot enter the same password as any of the last {\$history_size} passwords. Please enter a different password."; +$LANG["validation_passwords_different"] = "Se assegure de que as senhas são idênticas."; +$LANG["validation_please_enter_search_date_range"] = "Entre com período de busca por datas."; +$LANG["validation_please_enter_search_keyword"] = "Digite uma palavra-chave para buscar."; +$LANG["validation_select_field_type"] = "Please select a field type."; +$LANG["validation_select_submissions_to_copy"] = "Por favor, selecione os envios que você gostaria de copiar."; +$LANG["validation_select_submissions_to_delete"] = "Selecione as inscrições que você gostaria de excluir."; +$LANG["validation_smart_fill_cannot_fill"] = "Sorry, we could not fill this field."; +$LANG["validation_smart_fill_invalid_field_type"] = "We were unable to locate a field, but it is not a dropdown, checkbox or radio group."; +$LANG["validation_smart_fill_no_field_found"] = "Sorry, we couldn't find a form field with that name on the page specified."; +$LANG["validation_smart_fill_no_page"] = "Please locate the page containing the field you wish to Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Please upload all the pages in your form."; +$LANG["validation_upload_folder_not_writable"] = "Esta pasta temporária de envio de arquivos que está especificada pela sua instalação do PHP não possui permissão de escrita. Enquanto as permissões não estiverem corretamente configuradas, os arquivos não poderão ser enviados através do Form Tools (ou qualquer outro programa PHP). Por favor contate o suporte de seu servidor."; +$LANG["validation_upload_html_files_only"] = "Please only upload HTML files."; +$LANG["validation_username_taken"] = "Nome de usuário já existente. Por favor escolha outro nome de usuário."; +$LANG["validation_wrong_password"] = "As senhas não conferem."; +$LANG["word_about"] = "Sobre"; +$LANG["word_access"] = "Acesso"; +$LANG["word_account"] = "Conta"; +$LANG["word_account_sp"] = "Conta(s)"; +$LANG["word_accounts"] = "Contas"; +$LANG["word_action"] = "Ação"; +$LANG["word_active"] = "Ativo"; +$LANG["word_add"] = "Adicionar"; +$LANG["word_add_rightarrow"] = "Add »"; +$LANG["word_add_uc_rightarrow"] = "ADICIONAR »"; +$LANG["word_administration"] = "Administração"; +$LANG["word_administrator"] = "Administrador"; +$LANG["word_after"] = "Depois"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "CRESCENTE"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« voltar"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Antes"; +$LANG["word_benefits"] = "Benefícios"; +$LANG["word_blue"] = "Blue"; +$LANG["word_cancel"] = "Cancel"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Caixas de seleção"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Cliente"; +$LANG["word_client_c"] = "Cliente"; +$LANG["word_clients"] = "Clientes"; +$LANG["word_close"] = "FECHAR"; +$LANG["word_code"] = "Código"; +$LANG["word_column"] = "Coluna"; +$LANG["word_columns"] = "Columns"; +$LANG["word_columns_sp"] = "Column(s)"; +$LANG["word_complete"] = "COMPLETAR"; +$LANG["word_configuration"] = "Configuração"; +$LANG["word_content"] = "Conteúdo"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continuar"; +$LANG["word_copy"] = "Copy"; +$LANG["word_custom"] = "Personalizado"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Data"; +$LANG["word_debugging_c"] = "Depuração:"; +$LANG["word_delete"] = "Deletar"; +$LANG["word_desc"] = "DECRESCENTE"; +$LANG["word_direct"] = "Direto"; +$LANG["word_disabled"] = "Desativado"; +$LANG["word_documentation"] = "Documentation"; +$LANG["word_done"] = "Done"; +$LANG["word_drawbacks"] = "Desvantagens"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "EDITAR"; +$LANG["word_editable"] = "Pode ser editado"; +$LANG["word_email"] = "EMAIL"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Habilitar"; +$LANG["word_equals"] = "Igual a"; +$LANG["word_error"] = "Erro"; +$LANG["word_error_c"] = "Erro:"; +$LANG["word_examples_c"] = "Exemplos:"; +$LANG["word_external"] = "Externo"; +$LANG["word_fail"] = "Falhou"; +$LANG["word_field"] = "Campo"; +$LANG["word_field_sp"] = "Campo(s)"; +$LANG["word_fields"] = "Campos"; +$LANG["word_fields_sp"] = "Field(s)"; +$LANG["word_file"] = "Arquivo"; +$LANG["word_file_b_uc"] = "[ARQUIVO]"; +$LANG["word_files"] = "Arquivos"; +$LANG["word_filters"] = "Filtros"; +$LANG["word_filters_sp"] = "Filter(s)"; +$LANG["word_for"] = "por"; +$LANG["word_form"] = "Formulário"; +$LANG["word_form_c"] = "Formulário:"; +$LANG["word_formatting"] = "Formatting"; +$LANG["word_forms"] = "Formulários"; +$LANG["word_found"] = "Encontrado"; +$LANG["word_from"] = "De"; +$LANG["word_from_c"] = "De:"; +$LANG["word_general"] = "General"; +$LANG["word_green"] = "Green"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Height"; +$LANG["word_help"] = "Help"; +$LANG["word_hidden"] = "Hidden"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Hora"; +$LANG["word_hours"] = "Horas"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Imagem"; +$LANG["word_incomplete"] = "Incompleto"; +$LANG["word_install"] = "Instalar"; +$LANG["word_installation"] = "Installation"; +$LANG["word_internal"] = "Internal"; +$LANG["word_language"] = "Idioma"; +$LANG["word_large"] = "Large"; +$LANG["word_like"] = "Parecido com"; +$LANG["word_login"] = "LOGAR"; +$LANG["word_logo"] = "Logotipo"; +$LANG["word_logout"] = "Sair"; +$LANG["word_main"] = "Principal"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "minutos"; +$LANG["word_misc"] = "misto"; +$LANG["word_module"] = "Módulo"; +$LANG["word_modules"] = "Módulos"; +$LANG["word_na"] = "N/D"; +$LANG["word_name"] = "Nome"; +$LANG["word_name_c"] = "Nome:"; +$LANG["word_never"] = "Never"; +$LANG["word_next_rightarrow"] = "próximo »"; +$LANG["word_next_step_rightarrow"] = "PRÓXIMO PASSO »"; +$LANG["word_no"] = "Não"; +$LANG["word_none"] = "Nenhum"; +$LANG["word_notes"] = "Anotações"; +$LANG["word_notification"] = "Notificação"; +$LANG["word_number"] = "Número"; +$LANG["word_off"] = "Desligado"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "Ligado"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operador"; +$LANG["word_options"] = "Opções"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Ordem"; +$LANG["word_other"] = "Outro"; +$LANG["word_other_c"] = "Outro:"; +$LANG["word_page"] = "Página"; +$LANG["word_page_c"] = "Página:"; +$LANG["word_pass"] = "Passar"; +$LANG["word_password"] = "Senha"; +$LANG["word_password_c"] = "Senha:"; +$LANG["word_pending"] = "Pendente"; +$LANG["word_permissions"] = "Permissões"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« anterior"; +$LANG["word_private"] = "Privado"; +$LANG["word_public"] = "Público"; +$LANG["word_purple"] = "Purple"; +$LANG["word_recipient"] = "Destinatário"; +$LANG["word_recipient_sp"] = "Destinatário(s)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Remover"; +$LANG["word_remove_uc_leftarrow"] = "« REMOVER"; +$LANG["word_reply_to"] = "Responder para"; +$LANG["word_reply_to_c"] = "Responder para:"; +$LANG["word_required"] = "Required"; +$LANG["word_reset"] = "Limpar"; +$LANG["word_resolved"] = "Resolvido"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "row"; +$LANG["word_search"] = "Pesquisar"; +$LANG["word_searchable"] = "Buscável"; +$LANG["word_select"] = "Selecionar"; +$LANG["word_setting"] = "Parâmetro"; +$LANG["word_settings"] = "CONFIGURAÇÕES"; +$LANG["word_show"] = "Mostrar"; +$LANG["word_size"] = "Size"; +$LANG["word_skipped"] = "Omitido"; +$LANG["word_small"] = "Small"; +$LANG["word_solution"] = "Solution"; +$LANG["word_sortable"] = "Ordenável"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Texto"; +$LANG["word_subject"] = "Assunto"; +$LANG["word_subject_c"] = "Assunto"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Envio"; +$LANG["word_submissions"] = "Envios"; +$LANG["word_system"] = "Systema"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab(s)"; +$LANG["word_test"] = "Teste"; +$LANG["word_text"] = "Texto"; +$LANG["word_textarea"] = "Área de texto"; +$LANG["word_textbox"] = "Caixa de texto"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temas"; +$LANG["word_time"] = "Time"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Dicas"; +$LANG["word_today"] = "Today"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Desinstalar"; +$LANG["word_unknown"] = "Unknown"; +$LANG["word_update"] = "ATUALIZAR"; +$LANG["word_upgrade"] = "Atualizar"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Usuário"; +$LANG["word_username"] = "Nome do Usuário"; +$LANG["word_username_c"] = "Nome do Usuário:"; +$LANG["word_validation"] = "Validation"; +$LANG["word_value"] = "Value"; +$LANG["word_value_sp"] = "Valor(es)"; +$LANG["word_verified"] = "Verificado"; +$LANG["word_verify"] = "Verify"; +$LANG["word_version"] = "Versão"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Visualizar"; +$LANG["word_views"] = "Visualizações"; +$LANG["word_warning"] = "Aviso!"; +$LANG["word_warning_c"] = "Aviso:"; +$LANG["word_web"] = "Rede"; +$LANG["word_welcome"] = "Bem-vindo!"; +$LANG["word_width_c"] = "width:"; +$LANG["word_words"] = "Words"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Yellow"; +$LANG["word_yes"] = "Sim"; \ No newline at end of file diff --git a/global/lang/pt_eu.php b/global/lang/pt_eu.php new file mode 100644 index 00000000..d3c8fbf5 --- /dev/null +++ b/global/lang/pt_eu.php @@ -0,0 +1,1219 @@ +Warning! You have selected {\$num_selected_on_page} submissions on this page and {\$num_selected_on_other_pages} on other pages. Please choose one of the following options:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Warning! You haven't selected any submissions on this page but you've selected {\$num_selected_on_other_pages} on other pages. Please confirm you want to delete these submissions.
    "; +$LANG["confirm_delete_view"] = "Are you sure you want to delete this View?"; +$LANG["confirm_refresh_page"] = "Are you sure you want to refresh the page? This will lose any changes you have made."; +$LANG["confirm_save_change_before_redirect"] = "One or more fields have been updated. Would you like to save your changes before redirecting?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Are you sure you want to Smart Fill the database column names? This will overwrite your existing values."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "This option auto-generates the database column names based on the Display Text fields, so the contents of the database table are easier to read."; +$LANG["confirm_smart_fill_display_names"] = "Tem a certeza que deseja realizar o preenchimento automático dos nomes de exibição? Isto irá sobrescrever os valores existentes."; +$LANG["confirm_ungroup_option_list"] = "Are you sure you want to ungroup this option list? All options will be lumped into a single, ungrouped list."; +$LANG["confirm_uninstall_module"] = "Are you sure you want to uninstall this module? All module data will be lost."; +$LANG["date_AM"] = "am"; +$LANG["date_Fri"] = "Sex"; +$LANG["date_Friday"] = "Sexta-feira"; +$LANG["date_Mon"] = "Seg"; +$LANG["date_Monday"] = "Segunda-feira"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sab"; +$LANG["date_Saturday"] = "Sábado"; +$LANG["date_Sun"] = "Dom"; +$LANG["date_Sunday"] = "Domingo"; +$LANG["date_Thu"] = "Qui"; +$LANG["date_Thursday"] = "Quinta-feira"; +$LANG["date_Tue"] = "Ter"; +$LANG["date_Tuesday"] = "Terça-feira"; +$LANG["date_Wed"] = "Qua"; +$LANG["date_Wednesday"] = "Quarta-feira"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Abril"; +$LANG["date_month_August"] = "Agosto"; +$LANG["date_month_December"] = "Dezembro"; +$LANG["date_month_February"] = "Fevereiro"; +$LANG["date_month_January"] = "Janeiro"; +$LANG["date_month_July"] = "Julho"; +$LANG["date_month_June"] = "Junho"; +$LANG["date_month_March"] = "Março"; +$LANG["date_month_May"] = "Mai"; +$LANG["date_month_November"] = "Novembro"; +$LANG["date_month_October"] = "Outubro"; +$LANG["date_month_September"] = "Setembro"; +$LANG["date_month_short_Apr"] = "Abr"; +$LANG["date_month_short_Aug"] = "Ago"; +$LANG["date_month_short_Dec"] = "Dez"; +$LANG["date_month_short_Feb"] = "Fev"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "May"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Out"; +$LANG["date_month_short_Sep"] = "Set"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "A conta do utilizador foi excluída."; +$LANG["notify_account_updated"] = "A sua conta de utilizador foi actualizada com sucesso."; +$LANG["notify_add_display_values"] = "Add Display Values"; +$LANG["notify_admin_menu_updated"] = "The administration menu has been updated."; +$LANG["notify_admin_theme_overridden"] = "The administrator's theme has been manually overridden."; +$LANG["notify_allow_url_fopen_not_set"] = "Sorry, this test cannot be run on your web server. It requires allow_url_fopen to be set to 1 in your php.ini file. This setting allow PHP to access files through a URL, which is needed to execute this test. You can test it manually by uploading a file to that folder via FTP, then trying to access it at the URL you have supplied."; +$LANG["notify_change_temp_password"] = "You just logged in with a temporary password. You should reset your password now!"; +$LANG["notify_click_to_edit_new_submission"] = "Clique aqui para editar o novo envio."; +$LANG["notify_client_account_menus_updated"] = "The client account(s) have been updated to the {\$menu_name} menu. You may now delete the menu that was previously associated with the account(s)."; +$LANG["notify_client_account_not_updated"] = "A conta de cliente não pôde ser actualizada."; +$LANG["notify_client_account_themes_updated"] = "The client account(s) have been updated to the {\$theme} theme. You may now disable the theme previously associated with the account(s)."; +$LANG["notify_client_account_updated"] = "A conta de cliente foi actualizada com sucesso."; +$LANG["notify_client_menu_deleted"] = "The client menu has been deleted."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "The menu has been deleted, but the following client accounts now no longer have a menu! You need to update the following accounts: "; +$LANG["notify_client_menu_updated"] = "The client menu has been updated."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Sorry, the menu you just tried to delete is already being used by the clients listed below. In order to delete the menu you will first need to assign the clients to other menus. Click on the client name to edit that individual account, or assign all accounts to a different menu using the dropdown below."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Sorry, one of the themes you just disabled are already being used by the following client accounts. In order to disable the theme you will first need to assign each client to another theme. Click on the client name to edit that individual account, or assign all accounts to a theme using the dropdown below."; +$LANG["notify_edit_email_fields_link"] = "Click here to specify which form fields are email fields, so you can target them in your email templates."; +$LANG["notify_edit_field_new_field"] = "This is a new field. You will need to update the main page before being able to fully edit this field."; +$LANG["notify_edit_option_list_after_save"] = "You must select an Option List and then Save Changes before being able to edit it."; +$LANG["notify_email_field_config_deleted"] = "The email configuration has been deleted."; +$LANG["notify_email_fields_not_updated"] = "Sorry, we could not update the email fields."; +$LANG["notify_email_fields_updated"] = "The email fields have been updated."; +$LANG["notify_email_not_sent"] = "O email não pôde ser enviado. Por favor contacte o adiministrador do site no endereço abaixo."; +$LANG["notify_email_not_sent_c"] = "Sorry, the email could not be sent: "; +$LANG["notify_email_sent"] = "The email(s) have been sent."; +$LANG["notify_email_template_deleted"] = "The email template has been deleted."; +$LANG["notify_email_template_updated"] = "The email template has been updated."; +$LANG["notify_enabled_module_list_updated"] = "The list of enabled modules has been updated."; +$LANG["notify_error_saving_fields"] = "There was an error saving the fields."; +$LANG["notify_field_changes_saved"] = "The changes to your field(s) have been saved."; +$LANG["notify_field_options_smart_filled"] = "Your field options have been Smart Filled."; +$LANG["notify_field_selected"] = "The field has been selected. Click here to return to the main field list."; +$LANG["notify_field_updated"] = "This field has been updated."; +$LANG["notify_file_not_uploaded"] = "O ficheiro não pôde ser enviado."; +$LANG["notify_file_uploaded"] = "O ficheiro foi enviado com sucesso."; +$LANG["notify_filters_not_updated"] = "There was an error updating this client's submission filters."; +$LANG["notify_filters_updated"] = "Os filtros de envio deste cliente foram actualizados com sucesso."; +$LANG["notify_folder_correct_permissions"] = "Esta pasta tem as permissões correctas."; +$LANG["notify_folder_url_match"] = "A pasta e o URL parecem combinar correctamente."; +$LANG["notify_folder_url_no_access"] = "Este teste não pôde ser realizado porque o PHP não foi capaz de aceder a este URL. Isto é normalmente causado por um URL protegido por palavra passe por um ficheiro de configuração .htaccess."; +$LANG["notify_folder_url_no_match"] = "Esta combinação de pasta/URL não parece estar combinado."; +$LANG["notify_folder_url_unknown_error"] = "Ocorreu um erro desconhecido. Você pode testar manualmente realizando o upload de um ficheiro para essa pasta via FTP, e de seguida tente acedê-lo no URL fornecido."; +$LANG["notify_form_access_type_email_info"] = "This form has administrator access type, so no clients have access to it and are not listed in the dropdown below."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sorry, a form with that ID does not exist."; +$LANG["notify_form_field_not_added"] = "The form field '{\$fieldname}' could not be added."; +$LANG["notify_form_field_options_updated"] = "As opções de campo de formulário foram actualizadas."; +$LANG["notify_form_field_removed"] = "O campo de formulário foi removido com sucesso."; +$LANG["notify_form_fields_removed"] = "Os campos de formulário foram removidos com sucesso."; +$LANG["notify_form_not_updated_notify_admin"] = "O seu formulário não pôde ser actualizado. Por favor contacte o administrador do site para relatar este problema."; +$LANG["notify_form_settings_updated"] = "As configurações do seu formulário foram actualizadas com sucesso."; +$LANG["notify_form_submission_updated"] = "O formulário de inscrição foi actualizado."; +$LANG["notify_form_tabs_updated"] = "The tabs have been updated."; +$LANG["notify_form_updated"] = "O formulário foi actualizado com sucesso."; +$LANG["notify_form_views_updated"] = "The form Views have been updated."; +$LANG["notify_install_invalid_db_info"] = "Sorry, we were unable to connect to the database using the information you supplied. The error message the database returned is: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Your form has been created! You can configure your form through these tabs."; +$LANG["notify_invalid_account_information_in_sessions"] = "The account information stored in sessions is invalid. Please log in again below."; +$LANG["notify_invalid_license_key"] = "Sorry, that does not appear to be a valid license key. Please try entering it again."; +$LANG["notify_invalid_permissions"] = "You do not have the permissions to access this page. You have been logged out."; +$LANG["notify_invalid_search_dates"] = "Please use the datepicker to enter a valid date or dates."; +$LANG["notify_invalid_upload_folder"] = "The upload folder is either invalid or is not writable."; +$LANG["notify_lang_list_updated"] = "A lista de idiomas disponíveis foi actualizada."; +$LANG["notify_login_info_emailed"] = "A sua informação de login foi-lhe por email."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, this module is already installed!"; +$LANG["notify_module_installed"] = "The module has been installed. Click here to select the module."; +$LANG["notify_module_list_updated"] = "The module list has been updated."; +$LANG["notify_module_uninstalled"] = "The module has been uninstalled."; +$LANG["notify_module_updated"] = "The {\$module} module has been updated to {\$version}. Click here to select the module."; +$LANG["notify_multi_field_selected"] = "The field has been selected. Click here to view and edit the field options."; +$LANG["notify_multi_field_updated"] = "This field has been updated. You will be able to configure the field options after setting up the form."; +$LANG["notify_multiple_fields_found"] = "Multiple elements were found with this field name ({\$field_name}). This can occur if your page contains more than one form or if you accidentally named one of your forms the same as another. Please choose the one you want from the list below."; +$LANG["notify_new_default_view_created"] = "A new, default View containing all your form fields has been created."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "No user account ID was found in sessions. Please log in again below."; +$LANG["notify_no_api_installed"] = "You don't have the API installed"; +$LANG["notify_no_client_permissions"] = "There are no settings available to edit."; +$LANG["notify_no_email_template_selected"] = "Please select the email template."; +$LANG["notify_no_emails_defined"] = "No emails have been defined for this form. To add a new one, click the button below."; +$LANG["notify_no_field_settings"] = "This field type doesn't contain any extra settings."; +$LANG["notify_no_fields_in_tab"] = "This tab does not contain any fields."; +$LANG["notify_no_option_lists"] = "There are no option lists defined. Click the button below to create a new one."; +$LANG["notify_no_test_submission"] = "Form Tools hasn't received a successful test submission yet."; +$LANG["notify_no_user_email_fields_configured"] = "Note: if you want to send an email to any email address that was included in the form, you first need to configure the form email fields."; +$LANG["notify_no_views"] = "Your form doesn't have any Views set up! You will need at least one View in order to manage your form data."; +$LANG["notify_no_views_assigned_to_client_form"] = "It appears that your user account hasn't been assigned to any form Views, so you won't be able to see any data. Please contact the administrator for further help."; +$LANG["notify_no_views_defined"] = "You don't have any Views defined. You will not be able to view this form's submissions unless at least one View is created. Click the button below to create the default View."; +$LANG["notify_option_list_deleted"] = "The option list has been deleted."; +$LANG["notify_option_list_updated"] = "The option list has been updated."; +$LANG["notify_public_form_omit_list_updated"] = "The client omit list for this form has been updated."; +$LANG["notify_public_view_omit_list_updated"] = "The client omit list for this View has been updated."; +$LANG["notify_required_admin_pages"] = "The following pages are required in the administrator menu: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Sorry, there wasn't any activity for a while so we had to log you out. Please log in again below."; +$LANG["notify_setup_options_updated"] = "As opções de setup foram actualizadas."; +$LANG["notify_smart_fill_field_not_found"] = "We were unable to find a field with this name ({\$field_name}) in the form(s) specified. You can either manually set the field type below, or click the Skip button to edit this field later."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Your file(s) were successfully uploaded. Try clicking the Smart Fill button to try again. If this step fails, you will need to skip this step and configure your form fields manally later."; +$LANG["notify_smart_fill_submitted"] = "The form has been submitted. Depending on the size of your form and number of field options, this may take some time."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Sorry, one or more of the files you entered could not be uploaded. You will need to skip this step and configure the fields manually."; +$LANG["notify_submission_and_files_deleted"] = "A inscrição e quaisquer ficheiros a ela associados foram excluídas com sucesso."; +$LANG["notify_submission_copied"] = "O envio foi copiado."; +$LANG["notify_submission_copied_edit"] = "O envio foi copiado. Você pode editá-lo abaixo."; +$LANG["notify_submission_deleted"] = "A inscrição foi excluída com sucesso."; +$LANG["notify_submission_deleted_with_problems"] = "A inscrição foi excluída, mas os seguintes problemas foram encontrados quando tentava excluir o(s) seguinte(s) ficheiro(s):"; +$LANG["notify_submission_id_not_found"] = "O ID da inscrição não foi encontrado."; +$LANG["notify_submission_not_updated"] = "A inscrição não pôde ser actualizada."; +$LANG["notify_submissions_and_files_deleted"] = "As inscrições e quaisquer ficheiros a elas associados foram excluídas com sucesso."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} submissões foram copiadas."; +$LANG["notify_submissions_deleted"] = "As inscrições foram excluídas com sucesso."; +$LANG["notify_submissions_deleted_with_problems"] = "As inscrições foram excluídas, mas os seguintes problemas foram encontrados quando tentava excluir o(s) seguinte(s) ficheiro(s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "O seu teste de email não pôde ser enviado."; +$LANG["notify_theme_cache_folder_not_writable"] = "This theme's cache folder is not writable. In order to enable this theme, the {\$folder} folder needs to have full read-write permissions."; +$LANG["notify_theme_list_updated"] = "The theme list has been updated."; +$LANG["notify_themes_settings_updated"] = "Your theme settings have been updated."; +$LANG["notify_view_deleted"] = "The View has been deleted."; +$LANG["notify_view_group_deleted"] = "The View group has been deleted."; +$LANG["notify_view_missing_columns"] = "Oops! Sorry, this View hasn't been fully set up yet."; +$LANG["notify_view_missing_columns_admin_fix"] = "Click here to specify which fields should appear as columns on this page."; +$LANG["notify_view_updated"] = "The View has been updated."; +$LANG["notify_your_email_sent"] = "O seu email foi enviado com sucesso."; +$LANG["phrase_100_per_page"] = "100 per page"; +$LANG["phrase_10_per_page"] = "10 per page"; +$LANG["phrase_15_per_page"] = "15 per page"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per page"; +$LANG["phrase_25_per_page"] = "25 per page"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 Columns"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 Columns"; +$LANG["phrase_4_columns"] = "4 Columns"; +$LANG["phrase_50_per_page"] = "50 per page"; +$LANG["phrase_accepting_submissions"] = "(accepting submissions)"; +$LANG["phrase_access_admin_account_c"] = "You can access your administration account here:"; +$LANG["phrase_access_type"] = "Access Type"; +$LANG["phrase_account_info"] = "Account Information"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Action Needed"; +$LANG["phrase_add_client"] = "ADICIONAR CLIENTE"; +$LANG["phrase_add_client_menu"] = "Add Client Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Add default settings »"; +$LANG["phrase_add_field"] = "Add Field"; +$LANG["phrase_add_fields"] = "ADICIONAR CAMPOS"; +$LANG["phrase_add_fields_rightarrow"] = "Add Field(s) »"; +$LANG["phrase_add_form"] = "Adicionar Formulário"; +$LANG["phrase_add_form_external"] = "Add Form - External"; +$LANG["phrase_add_form_internal"] = "Add Form - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Add New Group »"; +$LANG["phrase_add_num_rows"] = "Add {\$number} Row(s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Add Submission Button"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Adding a multi-page form with the API"; +$LANG["phrase_adding_single_page_form"] = "Adding a single-page form with the API"; +$LANG["phrase_admin_menu"] = "Administrator Menu"; +$LANG["phrase_admin_only"] = "Administrator Only"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Advanced settings »"; +$LANG["phrase_all_X_results_selected"] = "All {\$numresults} Results Selected"; +$LANG["phrase_all_clients"] = "All clients"; +$LANG["phrase_all_clients_except_c"] = "All clients except:"; +$LANG["phrase_all_clients_have_access"] = "(all clients have access)"; +$LANG["phrase_all_fields"] = "Todos os campos"; +$LANG["phrase_all_fields_displayed"] = "All fields are displayed"; +$LANG["phrase_all_statuses"] = "All statuses"; +$LANG["phrase_all_submissions"] = "All submissions"; +$LANG["phrase_allow_fields_edited"] = "Allow fields to be edited"; +$LANG["phrase_alphanumeric"] = "Alphanumeric (a-Z, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Apply Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Assign all listed client accounts to {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Assign all listed client accounts to {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "At End"; +$LANG["phrase_at_start"] = "At Start"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-disable account after # failed login attempts"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Clientes Disponíveis"; +$LANG["phrase_available_fields"] = "Available Fields"; +$LANG["phrase_available_option_lists"] = "Available Option Lists"; +$LANG["phrase_available_swatches"] = "Available Swatches"; +$LANG["phrase_available_swatches_c"] = "Available Swatches:"; +$LANG["phrase_available_tabs"] = "Available Tabs"; +$LANG["phrase_available_views"] = "Available Views"; +$LANG["phrase_awaiting_form_submission"] = "Awaiting form submission."; +$LANG["phrase_back_to_field_list"] = "« back to field list"; +$LANG["phrase_back_to_search_results"] = "voltar aos resultados de pesquisa"; +$LANG["phrase_base_view_on"] = "Base View on..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Change Login Information"; +$LANG["phrase_characters_limit_p"] = "characters limit."; +$LANG["phrase_check_db_settings_try_again"] = "Please double-check your database settings and click the Continue button again."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Check URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Clear Omit List"; +$LANG["phrase_client_account_settings"] = "Client Account Settings"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Client Map Filters »"; +$LANG["phrase_client_may_edit"] = "Client may edit"; +$LANG["phrase_client_menu"] = "Client Menu"; +$LANG["phrase_clients_can_access_form"] = "Clients who can access the form"; +$LANG["phrase_clients_can_access_view"] = "Clients who can access the View"; +$LANG["phrase_clients_cannot_access_form"] = "Clients who cannot access the form"; +$LANG["phrase_clients_cannot_access_view"] = "Clients who cannot access the View"; +$LANG["phrase_clients_may_edit"] = "Clients may edit"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Code / Markup Field"; +$LANG["phrase_code_markup_type"] = "Code / Markup Type"; +$LANG["phrase_codes_c"] = "Error Codes:"; +$LANG["phrase_column_width"] = "Column Width"; +$LANG["phrase_company_name"] = "Nome da Empresa"; +$LANG["phrase_configure_form_email_fields"] = "Configure Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Confirme a Pasta/URL"; +$LANG["phrase_connect_rows"] = "Connect rows"; +$LANG["phrase_copy_email_settings_from"] = "Copy Email Settings From..."; +$LANG["phrase_copy_settings_from"] = "Copy Settings From..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Create Account"; +$LANG["phrase_create_admin_account"] = "Create Admin Account"; +$LANG["phrase_create_config_file"] = "Create Config File"; +$LANG["phrase_create_database_tables"] = "Create Database Tables"; +$LANG["phrase_create_default_view"] = "Create Default View"; +$LANG["phrase_create_file"] = "Create File"; +$LANG["phrase_create_group"] = "Create Group"; +$LANG["phrase_create_new_email"] = "Create New Email"; +$LANG["phrase_create_new_menu"] = "Create New Menu"; +$LANG["phrase_create_new_option_list"] = "Create New Option List"; +$LANG["phrase_create_new_option_list_group"] = "Create new option list group"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Create New Option List »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Create New View Group"; +$LANG["phrase_custom_display_format"] = "Custom Display Format"; +$LANG["phrase_custom_recipient"] = "Custom Recipient"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Tipo de Dados"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Database name"; +$LANG["phrase_database_password"] = "Database password"; +$LANG["phrase_database_settings"] = "Database Settings"; +$LANG["phrase_database_setup"] = "Configuração da Base de Dados"; +$LANG["phrase_database_table_prefix"] = "Database table prefix"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Formato de Data"; +$LANG["phrase_db_column"] = "Coluna BD"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Default Client Account Theme"; +$LANG["phrase_default_date_field_search_value"] = "Default date field search value"; +$LANG["phrase_default_language"] = "Idioma padrão"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Ordenação padrão"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Default value"; +$LANG["phrase_default_values"] = "Default values"; +$LANG["phrase_default_values_new_submissions"] = "Default Values for New Submissions"; +$LANG["phrase_delete_field"] = "Delete Field"; +$LANG["phrase_delete_form"] = "APAGAR FORMULÁRIO"; +$LANG["phrase_delete_row"] = "Delete Row"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Delete associated files when deleting submission"; +$LANG["phrase_delete_view"] = "Delete View"; +$LANG["phrase_disconnect_rows"] = "Disconnect rows"; +$LANG["phrase_display_email"] = "Display Email"; +$LANG["phrase_display_name"] = "Visualizar Nome"; +$LANG["phrase_display_text"] = "Visualizar Texto"; +$LANG["phrase_display_value"] = "Display Value"; +$LANG["phrase_edit_admin_menu"] = "Edit Admin Menu"; +$LANG["phrase_edit_client"] = "Edit Client"; +$LANG["phrase_edit_client_menu"] = "Edit Client Menu"; +$LANG["phrase_edit_email_template"] = "Edit Email Template"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Edit Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit form access type]"; +$LANG["phrase_edit_option_list"] = "Edit Option List"; +$LANG["phrase_edit_submission"] = "Editar Envio"; +$LANG["phrase_edit_submission_label"] = "Edit Submission Label"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "CONFIGURAÇÃO DE EMAIL"; +$LANG["phrase_email_template"] = "Modelo de Email"; +$LANG["phrase_email_template_name"] = "Email template name"; +$LANG["phrase_error_learn_more"] = "Learn more about this error."; +$LANG["phrase_error_text_intro"] = "Please fix the following error(s) and resubmit:"; +$LANG["phrase_errors_learn_more"] = "Click on the error codes to learn more."; +$LANG["phrase_event_trigger"] = "Event Trigger"; +$LANG["phrase_external_form"] = "External Form"; +$LANG["phrase_external_form_info"] = "External Form Info"; +$LANG["phrase_external_your_own_form"] = "External (your own form)"; +$LANG["phrase_field_comments"] = "Field Comments"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Field Options"; +$LANG["phrase_field_size"] = "Tamanho do Campo"; +$LANG["phrase_field_skipped"] = "Field Skipped"; +$LANG["phrase_field_specific_settings"] = "Field-Specific Settings"; +$LANG["phrase_field_type"] = "Tipo de Campo"; +$LANG["phrase_field_type_no_validation"] = "There are no validation rules available for this field type."; +$LANG["phrase_field_types"] = "Field Types"; +$LANG["phrase_field_value"] = "Field Value"; +$LANG["phrase_field_values_to_display_values"] = "Field Values » Display Values"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Touches"; +$LANG["phrase_finalize_form"] = "Finalizar Formulário"; +$LANG["phrase_first_name"] = "Primeiro Nome"; +$LANG["phrase_footer_text"] = "Texto de Rodapé"; +$LANG["phrase_for_any_form_submission"] = "For any form submission"; +$LANG["phrase_for_view_submissions"] = "Only submissions that fit into the following View(s)"; +$LANG["phrase_forgot_password"] = "ESQUECEU A PALAVRA PASSE?"; +$LANG["phrase_form_already_selected"] = "Form already selected"; +$LANG["phrase_form_email_field_b_c"] = "[Form email field]:"; +$LANG["phrase_form_email_field_configuration"] = "Form Email Field Configuration"; +$LANG["phrase_form_email_fields"] = "Form Email Fields"; +$LANG["phrase_form_field"] = "Campo de Formulário"; +$LANG["phrase_form_field_contents"] = "Form Field Contents"; +$LANG["phrase_form_field_name"] = "Nome do Campo de Formulário"; +$LANG["phrase_form_field_placeholders"] = "Form field placeholders"; +$LANG["phrase_form_fields"] = "Form Fields"; +$LANG["phrase_form_info"] = "Form Information"; +$LANG["phrase_form_info_2"] = "2. Form Information"; +$LANG["phrase_form_list"] = "Form List"; +$LANG["phrase_form_name"] = "Nome do Formulário"; +$LANG["phrase_form_page"] = "Form Page"; +$LANG["phrase_form_placeholders"] = "CÓDIGOS DO FORMULÁRIO"; +$LANG["phrase_form_submission"] = "ENVIO DE FORMULÁRIO"; +$LANG["phrase_form_submissions"] = "Form Submissions"; +$LANG["phrase_form_type"] = "Form Type"; +$LANG["phrase_form_url"] = "URL do Formulário"; +$LANG["phrase_form_urls"] = "Form URLs"; +$LANG["phrase_forms_assigned_to_any_account"] = "Forms assigned to any account"; +$LANG["phrase_forms_page_default_message"] = "Forms page default message"; +$LANG["phrase_ft_installation"] = "Form Tools Installation Script"; +$LANG["phrase_full_width"] = "Full Width"; +$LANG["phrase_getting_started"] = "getting started"; +$LANG["phrase_global_placeholders"] = "CÓDIGOS GLOBAIS"; +$LANG["phrase_group_name"] = "Group Name"; +$LANG["phrase_group_options_q"] = "Group options?"; +$LANG["phrase_group_rows"] = "Group rows"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Highlight Colour"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Import Option List »"; +$LANG["phrase_input_length"] = "Input Length"; +$LANG["phrase_installation_help"] = "Installation Help"; +$LANG["phrase_internal_form"] = "Internal Form"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Is this a multi-page form?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response Placeholders"; +$LANG["phrase_large_300px"] = "Large (300px)"; +$LANG["phrase_large_400px"] = "Large (400px)"; +$LANG["phrase_last_7_days"] = "Last 7 days"; +$LANG["phrase_last_logged_in"] = "Last Logged In"; +$LANG["phrase_last_modified"] = "Last modified"; +$LANG["phrase_last_modified_date"] = "Last modified date"; +$LANG["phrase_last_name"] = "Apelido"; +$LANG["phrase_letters_only"] = "Letters Only"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Limit email content to fields in View"; +$LANG["phrase_loading_ellipsis"] = "Loading..."; +$LANG["phrase_log_in"] = "ENTRAR"; +$LANG["phrase_login_as_user"] = "Log in as this user"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Painel de Login:"; +$LANG["phrase_login_panel_leftarrows"] = "« Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Username"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "URL de Logout"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Main Settings"; +$LANG["phrase_manage_client"] = "Administrar Cliente"; +$LANG["phrase_manage_client_omit_list"] = "Manage Client Omit List"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Max Length"; +$LANG["phrase_max_length_words_chars"] = "- Max length (words/chars)"; +$LANG["phrase_may_add_submissions"] = "May add Submissions"; +$LANG["phrase_may_copy_submissions"] = "Pode copiar envios"; +$LANG["phrase_may_delete_submissions"] = "May delete Submissions"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menu Name"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "Minimum password length"; +$LANG["phrase_module_description"] = "Module Description"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Module Nav"; +$LANG["phrase_month_to_date"] = "Month to date"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Caixa Multi-selecção"; +$LANG["phrase_multiple_fields_found"] = "Multiple Fields Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Name / Last Name"; +$LANG["phrase_new_blank_email"] = "New Blank Email"; +$LANG["phrase_new_blank_option_list"] = "New Blank Option List"; +$LANG["phrase_new_blank_view"] = "New Blank View"; +$LANG["phrase_new_ft_installation"] = "New Form Tools Installation"; +$LANG["phrase_new_option_list"] = "New Option List"; +$LANG["phrase_new_password"] = "New Password"; +$LANG["phrase_new_password_reenter"] = "New Password (please re-enter)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "New View - All fields"; +$LANG["phrase_next_client"] = "next client »"; +$LANG["phrase_next_field"] = "next field »"; +$LANG["phrase_next_form"] = "next form »"; +$LANG["phrase_next_view"] = "next View »"; +$LANG["phrase_no_clients"] = "No clients"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Sem Desvio"; +$LANG["phrase_no_option_lists_available"] = "No options lists available."; +$LANG["phrase_no_views"] = "No Views"; +$LANG["phrase_no_views_with_filters_p"] = "(No Views with filters defined)"; +$LANG["phrase_none_not_recommended"] = "None (not recommended)"; +$LANG["phrase_not_assigned_to_option_list"] = "This field isn't assigned to an Option List."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "NÃO Igual a"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "DIFERENTE de"; +$LANG["phrase_not_visible_to_client"] = "(not visible to client)"; +$LANG["phrase_num_clients_per_page"] = "Número de Clientes por Página"; +$LANG["phrase_num_emails_per_page"] = "Num Emails Per Page"; +$LANG["phrase_num_fields"] = "Number of Fields"; +$LANG["phrase_num_forms_per_page"] = "Número de Formulários por Página"; +$LANG["phrase_num_menus_per_page"] = "Num Menus Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Modules Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Num Option Lists Per Page"; +$LANG["phrase_num_options"] = "Num Options"; +$LANG["phrase_num_rows"] = "Num Rows"; +$LANG["phrase_numbers_only"] = "Numbers Only"; +$LANG["phrase_often_localhost"] = "(often \"localhost\")"; +$LANG["phrase_on_form_submission"] = "On form submission"; +$LANG["phrase_one_char_number"] = "At least one character is a number (0-9)"; +$LANG["phrase_one_char_upper"] = "At least one character is uppercase"; +$LANG["phrase_one_special_char"] = "At least one of {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(only specific clients have access)"; +$LANG["phrase_open_form_in_dialog"] = "Open form in dialog window"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Open this form in a new tab/window"; +$LANG["phrase_option_list"] = "Option List"; +$LANG["phrase_option_list_name"] = "Option List Name"; +$LANG["phrase_option_list_or_contents"] = "Option List / Contents"; +$LANG["phrase_option_lists"] = "Option Lists"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Titulos da Página"; +$LANG["phrase_pass_on"] = "Passar"; +$LANG["phrase_password_min"] = "It must be at least {\$length} characters."; +$LANG["phrase_password_one_number"] = "It must contain at least one number (0-9)."; +$LANG["phrase_password_one_uppercase"] = "It must contain at least one uppercase letter."; +$LANG["phrase_password_requirements_c"] = "Password requirements:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "It must contain at least one of the following characters: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissions / Other Settings"; +$LANG["phrase_permitted_file_types"] = "Tipos de ficheiros permitidos"; +$LANG["phrase_phone_number"] = "Phone Number"; +$LANG["phrase_phone_number_format"] = "Phone Number Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max allowed file upload size:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Please Confirm"; +$LANG["phrase_please_enter_license_key"] = "Please enter your license key"; +$LANG["phrase_please_select"] = "Por favor Seleccione"; +$LANG["phrase_please_select_form"] = "Please select a form"; +$LANG["phrase_prev_client"] = "« prev client"; +$LANG["phrase_prev_form"] = "« prev form"; +$LANG["phrase_prevent_password_reuse"] = "Prevent re-use of # last passwords"; +$LANG["phrase_previous_field"] = "« previous field"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "« prev View"; +$LANG["phrase_program_name"] = "Nome do Programa"; +$LANG["phrase_public_form_omit_list"] = "Public Form Omit List"; +$LANG["phrase_public_view_omit_list"] = "Public View Omit List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "There was a problem with the following query: "; +$LANG["phrase_radio_buttons"] = "Botões de Rádio"; +$LANG["phrase_random_form_submission"] = "Envio de formulário aleatório"; +$LANG["phrase_re_enter_password"] = "Re-digite a Palavra Passe"; +$LANG["phrase_recipient_type"] = "Recipient type"; +$LANG["phrase_redirect_url"] = "URL de redireccionamento"; +$LANG["phrase_refresh_list"] = "Recarregar Lista"; +$LANG["phrase_refresh_module_list"] = "Refresh Module List"; +$LANG["phrase_refresh_page"] = "RECARREGAR PÁGINA"; +$LANG["phrase_refresh_theme_list"] = "Refresh Theme List"; +$LANG["phrase_register_new_email"] = "Register New Email"; +$LANG["phrase_remaining_characters"] = "remaining characters"; +$LANG["phrase_remaining_words"] = "remaining words"; +$LANG["phrase_remove_tabs"] = "Remove Tabs"; +$LANG["phrase_required_password_chars"] = "Required password characters"; +$LANG["phrase_resend_test_submission"] = "REENVIAR TESTE DE ENVIO"; +$LANG["phrase_return_form_list"] = "VOLTAR À LISTA DE FORMULÁRIOS"; +$LANG["phrase_row_selected"] = "{\$num_rows} row selected"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rows selected"; +$LANG["phrase_sample_data"] = "Dados de Exemplo"; +$LANG["phrase_save_changes"] = "Save Changes"; +$LANG["phrase_search_keyword"] = "Search keyword"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Select All {\$numresults} Results"; +$LANG["phrase_select_all_on_page"] = "Seleccionar Todos na Página"; +$LANG["phrase_select_date"] = "Select date"; +$LANG["phrase_select_field"] = "Select Field"; +$LANG["phrase_select_swatch"] = "Select swatch"; +$LANG["phrase_selected_clients"] = "Clientes Seleccionados"; +$LANG["phrase_selected_views"] = "Selected Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "ENVIAR TESTE DE EMAIL"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Setting Value"; +$LANG["phrase_setup_options"] = "Opções de Configuração"; +$LANG["phrase_show_all"] = "Show All"; +$LANG["phrase_show_form"] = "Show Form"; +$LANG["phrase_size_large"] = "Large (TEXT)"; +$LANG["phrase_size_medium"] = "Medium (<=256 chars)"; +$LANG["phrase_size_small"] = "Small (<=20 chars)"; +$LANG["phrase_size_tiny"] = "Tiny (<=5 chars)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Skip Step"; +$LANG["phrase_small_100px"] = "Small (100px)"; +$LANG["phrase_small_80px"] = "Small (80px)"; +$LANG["phrase_smart_fill"] = "PREENCHIMENTO AUTOMÁTICO"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fill fields from:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill User Documentation »"; +$LANG["phrase_sort_as"] = "Sort As"; +$LANG["phrase_special_fields"] = "Special Fields"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Standard Filters »"; +$LANG["phrase_step_1"] = "Step 1"; +$LANG["phrase_step_2"] = "Step 2"; +$LANG["phrase_step_3"] = "Step 3"; +$LANG["phrase_step_4"] = "Step 4"; +$LANG["phrase_step_5"] = "Step 5"; +$LANG["phrase_step_6"] = "Step 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Remover tags HTML nos envios de formulários"; +$LANG["phrase_subject_line"] = "Subject Line"; +$LANG["phrase_submission_date"] = "Data de Envio"; +$LANG["phrase_submission_id"] = "ID de Envio"; +$LANG["phrase_submission_made"] = "Submission made: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Submission Type"; +$LANG["phrase_submissions_per_page"] = "Envios por Página"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "You may not add validation to system fields."; +$LANG["phrase_system_time_offset"] = "Fuso horário do Sistema"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Testar Permissões da Pasta"; +$LANG["phrase_test_submission"] = "Teste de Envio"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Received"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "Text Email"; +$LANG["phrase_text_template"] = "Text Template"; +$LANG["phrase_the_previous_month"] = "The previous Month"; +$LANG["phrase_theme_description"] = "Theme Description"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Resultados Totais:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Desmarcar Todos"; +$LANG["phrase_update_accounts"] = "Update Accounts"; +$LANG["phrase_update_email_template"] = "Update Email Template"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Update Order"; +$LANG["phrase_update_view"] = "Update View"; +$LANG["phrase_upload_file"] = "Upload File"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Caminho da pasta de ficheiros"; +$LANG["phrase_upload_folder_url"] = "URL da pasta de ficheiros"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Use Default Value?"; +$LANG["phrase_used_by_num_form_fields"] = "Used by # Form Fields"; +$LANG["phrase_uses_swatches"] = "Uses Swatches"; +$LANG["phrase_valid_email"] = "Valid Email"; +$LANG["phrase_validation_error"] = "Validation Error"; +$LANG["phrase_validation_rule"] = "Validation Rule"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "View Group"; +$LANG["phrase_view_id"] = "View ID"; +$LANG["phrase_view_name"] = "View Name"; +$LANG["phrase_view_placeholders"] = "View Placeholders"; +$LANG["phrase_view_submissions"] = "View Submissions"; +$LANG["phrase_view_uploaded_files"] = "ver ficheiros enviados"; +$LANG["phrase_viewing_range"] = " [viewing {\$startnum} to {\$endnum}]"; +$LANG["phrase_when_sent"] = "When sent"; +$LANG["phrase_when_submission_is_deleted"] = "When submission is deleted"; +$LANG["phrase_when_submission_is_edited"] = "When submission is edited"; +$LANG["phrase_who_can_access"] = "Who can access?"; +$LANG["phrase_word_limit_p"] = "word limit."; +$LANG["phrase_year_to_date"] = "Year to date"; +$LANG["phrase_yes_for_all_views"] = "Yes, for all Views"; +$LANG["phrase_yes_for_specific_views"] = "Yes, for specific Views"; +$LANG["phrase_your_account"] = "Your Account"; +$LANG["phrase_your_email"] = "O seu Email"; +$LANG["phrase_your_email_address"] = "O seu endereço de email"; +$LANG["processing_form_disabled"] = "Este formulário foi desactivado."; +$LANG["processing_form_incomplete"] = "Sorry, this form does not appear to be fully set up from within Form Tools. The most likely cause of this problem is that you removed the \"form_tools_initialize_form\" hidden form field, but didn't complete all the steps of the \"Add Form\" process.

    Please log in and review the form configuration."; +$LANG["processing_init_complete"] = "Thank you! Your test submission has been put through successfully. Please return to the Form Tools Administration panel and click the \"Refresh\" button at the bottom of the Add Form Step 3 page to finish setting up your form."; +$LANG["processing_invalid_form_id"] = "Sorry, this doesn't appear to be a valid form ID."; +$LANG["processing_no_form_id"] = "process.php requires a form ID for processing. Make sure your form contains a hidden field with the name \"form_tools_form_id\" that's passing along the form ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Tools is unable to determine where to redirect when they fail to enter the CAPTCHA properly. Please pass in a hidden field with the name form_tools_form_url containing the URL of the form."; +$LANG["processing_no_post_vars"] = "process.php is not receiving any data. Note: this script cannot be loaded directly in your browser.
    Make sure your form is sending via POST."; +$LANG["processing_no_redirect_url"] = "The submission was processed correctly, but you haven't specified a redirect URL for this form! Edit your form in the Form Tools UI and add the redirect URL."; +$LANG["special_language"] = "Portuguese"; +$LANG["special_language_locale"] = "European Portuguese"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "All new client accounts will be created with the settings and permissions defined below. To override a setting for a particular client, edit the client account and visit their Settings tab."; +$LANG["text_add_form_choose_integration_method"] = "Choose which method you want to use to integrate your form with Form Tools."; +$LANG["text_add_form_code_submission_benefits"] = "This method uses the Form Tools API, included in the main Form Tools script. The API provides a number of helpful functions to make the job of integrating your form with Form Tools as simple as possible. There are no restrictions to how your form may be submitted when you use the API. You can submit the content in one go, or page by page; you can add your own custom server-side validation, CAPTCHA images; you can choose to submit the information now, but only tell it to display the submission in the Form Tools UI at a later date (see the Finalized Submissions section in the API help documentation)."; +$LANG["text_add_form_code_submission_drawbacks"] = "In order to submit your form data via PHP, your form must be located on the same website as this Form Tools installation. Secondly, for non-technical and novice Form Tools users, this method can be a little intimidating at first. But there's plenty of documentation to help you out, including two simple tutorials for integrating your single- and multi-page forms (these are linked to on a later step)."; +$LANG["text_add_form_direct_submission_benefits"] = "This is the simplest way to submit your form to Form Tools. It doesn't require any knowledge of PHP and requires only a very small change to your form. It's great for smaller forms where you want to just submit the information to the database then redirect the user to a \"thankyou\" page."; +$LANG["text_add_form_direct_submission_drawbacks"] = "This submission method is very simple to use, but doesn't provide much control for more complicated forms. Multi-page forms or forms that require server-side validation are better suited to the second method: submitting via the Form Tools API."; +$LANG["text_add_form_field_types1"] = "Almost done! This page tries to find all your form fields and determine their field types. Click the Smart Fill button on the right to get started. You will be only allowed to proceed when all actions have been resolved - issues that need your attention appear in the \"Action Needed\" column."; +$LANG["text_add_form_field_types2"] = "If your form isn't in HTML, click the Skip Step button to proceed. This can all be configured later."; +$LANG["text_add_form_field_types3"] = "This reloads the contents of your form(s). Note: this will overwrite any changes you have made on this page."; +$LANG["text_add_form_field_types4"] = "In case you run into problems, click here to skip this step. All unresolved fields are set to use the default values. You can customize these fields later."; +$LANG["text_add_form_field_types_manual_upload"] = "If you have been unable to Smart Fill your fields, you may want to try an alternative solution: upload copies of your forms in the fields below."; +$LANG["text_add_form_field_types_manual_upload2"] = "Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML versions. To get this, view and save the page from your web browser."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "There were multiple fields that couldn't be found in the form page you specified. This is mostly likely caused by one of the following:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "You entered one or more of the form URLs of your multi-page form incorrectly."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "One or more pages of your form are password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "You incorrectly entered your form URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Click here to return to the Form Information page to check your settings."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "You changed your form(s) after making the test submission"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Click here to put through another test submission."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Your form is password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "In another tab / window of this browser, log into your form then click the Refresh Page button below to try to re-find the fields."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "If none of the above solutions work, you may also want to try manually uploading your forms for processing."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "There were multiple fields that couldn't be found in the form pages you specified. This is mostly likely caused by one of these:"; +$LANG["text_add_form_help_link"] = "If you run into any trouble during these steps, try reading our user documentation."; +$LANG["text_add_form_step_1_text_1"] = "The following pages lead you through the steps to configure Form Tools to store your form submissions. Before continuing, please check that:"; +$LANG["text_add_form_step_1_text_2"] = "your form has already been created and it's accessible via a URL (localhost is fine)"; +$LANG["text_add_form_step_1_text_3"] = "are able to edit your form"; +$LANG["text_add_form_step_2_para_2"] = "Abra o formulário num editor à sua escolha (como o Bloco de Notas do Windows ou um editor HTML como o Dreamweaver) e troque o código HTML (ou PHP) do formulário para o seguinte, incluindo os dois campos ocultos (hidden)."; +$LANG["text_add_form_step_2_para_3"] = "Next, open your form in a web browser. Fill in every field and submit it. After submitting, you should see a notification message. Once this message is displayed, return to this page and click the refresh button below. When this process is complete, you will see a continue button below, taking you to the next step."; +$LANG["text_add_form_step_2_para_6"] = "In your form submission, include the following values. They may be set directly via PHP or passed along through the form itself. Below are examples of each. The {\$varname} is a hash (or associative array) of all form submission information - this is usually the {\$postvar} or {\$sessionvar} variable, but it may be custom built."; +$LANG["text_add_form_step_2_text_2"] = "Enter the URL of your \"thankyou\" page here. This is where you want people to be directed to after the form has been submitted."; +$LANG["text_add_form_step_3_para_1"] = "This page lists all fields in your form submission. Please examine each field and remove any that you don't need stored for every submission. If you delete a valid field by accident, or wish to change the information stored by your form, return to the previous page to send a new test submission."; +$LANG["text_add_form_step_3_para_2"] = "Note: if you're sending multiple values via checkboxes or a multi-select box, make sure your field name ends with the [] characters (see the user documentation for more information)."; +$LANG["text_add_form_step_3_text_1"] = "Here's where the fun starts! At this point, Form Tools is waiting for a test submission from your form. It will use this form submission to know what information should be stored in the database."; +$LANG["text_add_form_step_3_text_2"] = "by pointing your form to Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "using the Form Tools API"; +$LANG["text_add_form_step_3_text_4"] = "To help integrate your form, we suggest you read one of the following tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "They explain how to set up your form in preparation for the test submission, and include other information that may be of help. The line of PHP you will need is:"; +$LANG["text_add_form_step_3_text_6"] = "This ensures the data is actually sent to Form Tools. When you have put through your test submission, click the button below."; +$LANG["text_add_form_step_3_text_7"] = "On the page PRIOR to your final \"thank you\" page, be sure to add the following parameter to the \$params variable:"; +$LANG["text_add_form_step_5_para_1"] = "The database has been set up to for this form and the form has been activated for use. If you made the submission by pointing your form to process.php, please return to your form and remove the following hidden field:"; +$LANG["text_add_form_step_5_para_2"] = "Then visit your \"thank you\" page to empty the sessions. Once this is done, all new form submissions will be processed and stored by Form Tools. Try making a submission or two to verify the information is all uploading correctly."; +$LANG["text_add_form_step_5_para_3"] = "If you wish to fine-tune your form for options such as auto-emailing, adding extra form fields field, or customizing the form field types, you may edit your form at any point."; +$LANG["text_add_form_step_5_para_4"] = "Since your form contains file upload fields, you will need to configure each field to specify the file upload folder, what files are permitted and . This can be found on the Display tab of the edit form page."; +$LANG["text_add_form_step_5_para_5"] = "If the submission was sent via the API, change the ft_api_init_form_page line on the first page of your form to:"; +$LANG["text_add_submission_button"] = "The Add Submission button only appears for Views that have the \"May add submissions\" option set to \"yes\"."; +$LANG["text_admin_email_placeholder_info"] = "This is the email address of the Form Tools administrator, defined in your account settings. This only outputs the email address, so if you wish to use as an HTML link, you will need to wrap it in an <a> tag, like so: <a href=\"mailto:{\$ADMINEMAIL}\">{\$ADMINEMAIL}</a>"; +$LANG["text_also_default_login_page_theme"] = "(Also the default login page theme)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "First, please choose your form type."; +$LANG["text_client_form_page"] = "This page lists all the forms and Views assigned to this client. Tip: in order for them to see a form's submissions, they need to be assigned to at least one View."; +$LANG["text_client_map_filters_desc1"] = "Client Map filters let you limit the submissions that appear in this View by mapping the values in a form field to the values in a client account."; +$LANG["text_client_no_forms"] = "Actualmente não tem formulários para visualizar."; +$LANG["text_client_welcome"] = "Welcome! This program stores all information submitted by your website visitors. To view submissions for a particular form just click on the VIEW link, or see the leftmost navigation menu for other options."; +$LANG["text_config_file_created"] = "Your config.php file has been created."; +$LANG["text_config_file_not_created"] = "We couldn't create your config.php file. You will need to create the file manually."; +$LANG["text_config_file_not_created_instructions"] = "Copy and paste the contents from the section below into a file called config.php and upload it via FTP to the Form Tools /global folder (the folder that also contains a few other files and directories, one file called library.php)."; +$LANG["text_confirm_delete_form"] = "Sim, eu quero excluir este formulário"; +$LANG["text_create_admin_account"] = "Now we're going to create the administrator's account. This is used for managing all aspects of Form Tools, such as adding forms and creating client accounts."; +$LANG["text_create_new_client_account"] = "Use the form below to create a new client account. All fields are required."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "see PHP {\$datefunctionlink} function for formatting options"; +$LANG["text_default_file_settings_page"] = "This page defines the file upload settings for your Form Tools installation. These rules apply to all files uploaded through Form Tools, unless explicitly overridden for an individual form field. Note: if you change the upload folder after files have been uploaded, they will be automatically moved to the new folder."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Before continuing, you will need to update your /themes/default/cache folder to allow full read and write permissions. Once this is done, this message will disappear and you can install the script."; +$LANG["text_default_values_in_view"] = "This section is optional. All submissions created with this View will contain the default values specified here."; +$LANG["text_delete_all_forms"] = "Eu quero excluir todos os ficheiros que foram enviados através deste formulário"; +$LANG["text_delete_form_warning"] = "Tem certeza que deseja apagar este formulário? Esta acção não poderá ser desfeita. Todos os dados serão perdidos permanentemente!"; +$LANG["text_edit_admin_menu_page"] = "You may edit your menu below. To ensure you always have access to all functionality available within Form Tools, the following pages are required: Forms, Clients, Your Account, Modules, Settings and Logout."; +$LANG["text_edit_client_menu_page"] = "This section lets you customize the left navigation column for each user. You may create as many client menus as you wish and assign any account to one of them. By default there are two menus: one for you, the administrator, and one for all client accounts. The administrator account may be modified but not removed."; +$LANG["text_edit_tab_summary"] = "If you wish to group this View's fields into tabs, just enter the tab names below. After you're done, select the appropriate tab for each field group in the Fields tab."; +$LANG["text_edit_view_list_page"] = "This tab controls which fields appear as columns on the Submission Listing page, and a few additional settings for those fields. Note: we recommend you add no more than 4 or 5 of the most important fields in the View."; +$LANG["text_email_settings_intro"] = "This page lets you identify which of your form fields store emails and their corresponding names. Once you define them here, you can use them in your email templates as recipients. This section is entirely optional."; +$LANG["text_email_tab_summary"] = "This section lets you construct any number of emails to be sent whenever your form is submitted, and other triggers."; +$LANG["text_email_template_tab"] = "This section lets you determine what content appears in the email. If you wish to send your email as only text or email, only enter a value for that section. If you enter a value for both, the email will be sent in both formats."; +$LANG["text_email_template_text_1"] = "There has been a submission made through your form, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "There has been a submission made through your form, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Obrigado pelo envio das informações!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Error message to show if the field fails the validation"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "External forms are forms that already exist on your website, or somewhere on the web. Select this option if you have your own form which you'd like to integrate with Form Tools."; +$LANG["text_fields_tab_summary"] = "This page lists all of your form fields. To control how they appear when browsing submissions, see the Views tab. Deleting a field on this page will delete it from all submissions, so please be careful!"; +$LANG["text_file_extension_info"] = "Digite as extensões de ficheiros separadas por vírgula (ex: jpg,gif,png) ou deixe em branco para permitir qualquer tipo de ficheiro."; +$LANG["text_file_field_placeholders_info"] = "Os campos de ficheiros possuem dois tipos diferentes: FILEURL e FILENAME. FILEURL é o caminho de internet completo (URL) para o ficheiro, podendo assim ligar directamente os ficheiros nos emails; FILENAME exibirá apenas o nome do ficheiro."; +$LANG["text_filters_page"] = "Only those submissions that meet the rules you define below will appear in this View."; +$LANG["text_filters_tips"] = "For tips on how to use submission filters, see the User Documentation."; +$LANG["text_forgot_password"] = "No problem. Just enter your username below and your login information will be sent to your email address on file. If you have forgotten your username, please email the site administrator at {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Este formulário contém um ou mais campos de envio de ficheiro:"; +$LANG["text_form_placeholder_info"] = "The following placeholders may be used in any email template and language placeholder field, regardless of whatever View the email template is assigned to. The QUESTION placeholders are the specific form question; the ANSWER placeholders are the answers to each question."; +$LANG["text_form_submission_date_placeholder"] = "The date when the submission was made."; +$LANG["text_form_tools_form_url"] = "The full URL of the form. This only has a value for External forms."; +$LANG["text_form_tools_login_url"] = "O URL para a página de login do Form Tools."; +$LANG["text_form_view_permission_info_admin"] = "Note: this form currently has Administrator access type, so none of the client accounts will be able to see this View."; +$LANG["text_form_view_permission_info_private"] = "Note: this form currently has Private access type so the Public and Private options here will be limited to that subset of clients."; +$LANG["text_ft_installed"] = "Congratulations, Form Tools has been successfully installed!"; +$LANG["text_global_placeholder_info"] = "Estes códigos podem ser usados em quaisquer templates de quaisquer formulários."; +$LANG["text_group_name_explanation"] = "For fields added through the Add Form process, this value is pre-filled to the display text of whatever field uses the value. You may wish to change it to better characterize the contents."; +$LANG["text_install_create_config_file"] = "Form Tools stores your server and database settings in a file called config.php, found in your /global/ folder. Click the \"Create File\" button to automatically generate the file on your server."; +$LANG["text_install_create_database_tables"] = "Now we're going to create the Form Tools database tables. This step requires the database itself to have already been created. If you're not sure how to do this, please contact your hosting provider."; +$LANG["text_install_db_tables_error_tip_1"] = "\"Unknown MySQL Server Host\" usually means that the hostname you provided is incorrect. Perhaps try setting this to \"localhost\" - this is a common way to refer to the \"local\" database on a web server."; +$LANG["text_install_db_tables_error_tip_2"] = "\"Can't connect to local MySQL server through socket\" means the database hostname field is again incorrect."; +$LANG["text_install_db_tables_error_tip_3"] = "\"Access denied for user:\" means that there is a problem with your username / password combination."; +$LANG["text_install_db_tables_error_tip_4"] = "\"Access denied for user: ... to database ...\" means that although your username and password you supplied is correct, it was unable to connect to that particular database with that account. This can mean that either your database name is incorrect, or that this user account is not associated with that database."; +$LANG["text_install_email_content_text"] = "Há muitos recursos em nosso site para ajudá-lo a começar, incluindo nossa documentação on-line (https://docs.formtools.org) e tutoriais (https://docs.formtools.org/tutorials). Se você achar que ficou preso ou tiver uma pergunta, faça uma pergunta no github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Sorry, Form Tools will not be able to run on your server. Please click here for the minimum requirements."; +$LANG["text_install_system_check"] = "This page runs a few tests on your system to ensure it's able to run Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Internal forms exist only within Form Tools - not elsewhere on your site. Only Form Tools user accounts will have access to the form. Select this option if you don't have an existing form."; +$LANG["text_internal_form_intro"] = "Use the form below to create a new Internal form. All settings, including the number and content of the form fields can be be changed and configured later."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Para entrar e usar o Form Tools, precisa de ter o javascript activado no seu browser. Por favor active agora, e clique em actualizar no seu browser."; +$LANG["text_last_modified_date_explanation_c"] = "The last time this submission was modified. For new submissions, this is the same as:"; +$LANG["text_limit_email_content_desc"] = "This option only works for HTML and text content generated with Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(only lists Views with one or more filters defined)"; +$LANG["text_log_in_to_ft"] = "Log in to Form Tools"; +$LANG["text_login"] = "Please log in below to access the {\$program_name} Administration Panel. If you have forgotten your password, click here."; +$LANG["text_login_info"] = "Conforme pedido, aqui está a sua informação de login."; +$LANG["text_name_of_form"] = "O nome do formulário."; +$LANG["text_no_clients"] = "Actualmente não existe nenhum cliente na base de dados. Para adicionar a conta de um novo cliente, clique no botão Adicionar Cliente."; +$LANG["text_no_clients_found"] = "No clients were found. Try broadening your search criteria."; +$LANG["text_no_fields_in_view"] = "This View doesn't have any fields in it. Click the link below."; +$LANG["text_no_forms"] = "Actualmente não existe nenhum formulário na base de dados. Para adicionar um novo formulário, clique no botão Adicionar Formulário."; +$LANG["text_no_forms_found"] = "No forms were found."; +$LANG["text_no_forms_found_search"] = "No forms were found. Try broadening your search criteria."; +$LANG["text_no_modules_found"] = "No modules were found. Try broadening your search criteria."; +$LANG["text_no_recipients_added"] = "No recipients have been added."; +$LANG["text_no_search_results"] = "There are no results with this search criteria / View."; +$LANG["text_no_submissions_found"] = "Não existem envios registados."; +$LANG["text_no_themes"] = "You do not have any themes defined. Click the button below to refresh your theme list, or check the Form Tools user documentation for information about adding themes."; +$LANG["text_non_deletable_fields"] = "This field is used by the Core script and cannot be edited or deleted without causing incompatibilities. If you wish to make changes to the field type, make a copy of it and edit the copy."; +$LANG["text_option_list_group_explanation"] = "If this is selected, it lets to group your options. How the groups are displayed depends on the field type using this option list."; +$LANG["text_option_list_page"] = "Radio buttons, checkboxes, dropdowns and multi-select dropdown fields all provide the user with multiple options from which they can select one or more items. In Form Tools, these are known as Option Lists. Generally, these are created automatically by the Add External Form process, but you can manually add or edit your option lists below if your form content changes or you construct fields that are only used internally."; +$LANG["text_option_list_used_by_fields"] = "This Option List is used by multiple form fields. If you update the information below, it will be changed for all of the fields (see the Form Fields tab to see the list of fields). If you wish to update the values for one, or a subset of the fields that are currently assigned, click here to create a new Option List with the same values as this one. Then you can assign the form fields you want to the new group."; +$LANG["text_public_form_omit_list_page"] = "Public forms give you the benefit of letting all client accounts access them without having to manually assign each client to them. This page lets you pinpoint those clients who may not access this form, even though the form is marked as public."; +$LANG["text_public_view_omit_list_page"] = "Public Views give you the benefit of letting all client accounts access them without having to manually assign each client to them. This page lets you pinpoint those clients who may not access this particular View."; +$LANG["text_reference_tab_info"] = "This page lists all placeholders available for your form. Placeholders are strings which can be used in the email templates, and fields marked with a special placeholder icon . When entered into a field, they are dynamically converted to the appropriate value when the field is viewed or the email is sent."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Review the user documentation"; +$LANG["text_send_email_from_edit_submission_page"] = "Include option to send this email from Edit Submission page"; +$LANG["text_smart_fill_option_list_problem"] = "We were unable to Smart Fill your field options. However, as an alternative, you can try uploading a copy of your form page in the field below. Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML version. To get this, view and save the page from your web browser."; +$LANG["text_submission_ip_address"] = "The IP Address of the user who made the submission."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Use the form below to either view or send yourself an email generated from this email template. The email is only sent to the email specified below; the main, cc and bcc email address recipients are ignored while testing."; +$LANG["text_test_email_templates_no_submissions"] = "Para testar os seus modelos de email, deverá registar pelo menos um envio no formulário."; +$LANG["text_theme_page_intro"] = "This page lists all of your themes. Click on a thumbnail to see a larger example of the theme's styles. The \"enabled\" checkbox determines whether or not that theme may be selected by clients. To browse all available themes, visit the Form Tools website."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Adding your first form!"; +$LANG["text_unique_submission_id"] = "O ID único do envio."; +$LANG["text_unused_option_list"] = "This option list is not being used by any form fields."; +$LANG["text_upgraded"] = "Your installation has been upgraded to {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "This Option List is used by the following fields."; +$LANG["text_view_fields_info"] = "This tab controls which fields show up when editing a submission in this View, their order and whether they are editable or not."; +$LANG["text_view_tab_summary"] = "This tab lets you create different ways to group and arrange your data. Views let you create custom subsets of your form data to split it into manageable chunks, and to limit what clients may see or edit."; +$LANG["validation_account_disabled"] = "A sua conta foi desactivada."; +$LANG["validation_account_not_recognized"] = "Nome de utilizador não existe."; +$LANG["validation_account_not_recognized_info"] = "Nome de utilizador não encontrado. Por favor tente novamente ou entre em contacto com o administrador do site no endereço abaixo."; +$LANG["validation_account_pending"] = "Your user account is pending approval by an administrator."; +$LANG["validation_check_delete_client"] = "Tem certeza de que deseja excluir esta conta de cliente?"; +$LANG["validation_client_password_missing_number"] = "The client password must contain at least one number (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "The client password must contain at least one of the following characters: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "The client password must contain at least one uppercase letter."; +$LANG["validation_client_password_too_short"] = "The client password needs to be at least {\$number} characters long."; +$LANG["validation_col_name_is_reserved_word"] = "Sorry, this database column name is a reserved work in MySQL. Please rename it!"; +$LANG["validation_db_name"] = "Nomes de bancos de dados não podem conter períodos ou barras."; +$LANG["validation_db_not_updated_invalid_input"] = "A base de dados não pôde ser actualizada. Verifique se os valores digitados são válidos."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Sorry, the default administrator and client themes must always be enabled."; +$LANG["validation_default_phone_num_required"] = "Please fill in the full telephone number for the <b>{\$field}</b> field - numbers only."; +$LANG["validation_default_rule_alpha"] = "Please only enter letters and numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_letters_only"] = "Please only enter letters for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_numbers_only"] = "Please only enter numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_required"] = "Please enter a value for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_valid_email"] = "Please enter a valid email address for the <b>{\$field}</b> field."; +$LANG["validation_delete_form_confirm"] = "Please check the box to confirm that you wish to delete this form."; +$LANG["validation_delete_non_empty_option_list"] = "Warning! This Option List is used by one or more form fields. Deleting it will make those fields cease to work properly."; +$LANG["validation_display_names_incomplete"] = "Please enter a value for all the Display Names, or click the Smart Fill option to enter them dynamically."; +$LANG["validation_duplicate_form_field_name"] = "You cannot have multiple fields with the same field name."; +$LANG["validation_email_not_found_or_invalid"] = "Sorry, the email associated with your account either doesn't exist or is invalid."; +$LANG["validation_folder_invalid_permissions"] = "Para realizar este teste as permissões precisam estar configuradas na pasta de envio para permitir a leitura e a escrita de ficheiros (permissão 777 em servidores Unix / Linux)."; +$LANG["validation_folder_not_writable"] = "Esta pasta não possui permissões para escrita."; +$LANG["validation_internal_form_too_many_fields"] = "Sorry, you can only created forms with 1000 fields or less."; +$LANG["validation_invalid_admin_email"] = "Please enter a valid adminstrator's email address."; +$LANG["validation_invalid_admin_username"] = "Your username may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_invalid_client_username"] = "The client's user name may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_invalid_client_username2"] = "Sorry, username's may only contain letters, numbers and the underscore character. Please enter a new username."; +$LANG["validation_invalid_column_name"] = "Column names may only be alphanumeric (a-Z, 0-9). Please check the column names."; +$LANG["validation_invalid_custom_from_email"] = "Please enter a valid custom 'From' email address."; +$LANG["validation_invalid_custom_reply_to_email"] = "Please enter a valid custom 'Reply-to' email address."; +$LANG["validation_invalid_default_sessions_timeout"] = "Please enter a valid value (a number) for the default sessions timeout."; +$LANG["validation_invalid_email"] = "Digite um endereço de email válido."; +$LANG["validation_invalid_email_id"] = "Sorry, that's an invalid email ID."; +$LANG["validation_invalid_folder"] = "Sorry, this does not appear to be a valid folder."; +$LANG["validation_invalid_form_field_names"] = "Form fields may only be alphanumeric and underscores (a-Z, 0-9, _), with no spaces."; +$LANG["validation_invalid_num_clients_per_page"] = "Digite apenas números no campo de Nº de Clientes por Página."; +$LANG["validation_invalid_num_emails_per_page"] = "Please only enter digits for the emails per page."; +$LANG["validation_invalid_num_form_fields"] = "Please only enter numbers in the Number of Fields field."; +$LANG["validation_invalid_num_forms_per_page"] = "Digite apenas números no campo de Nº de Formulários por Página."; +$LANG["validation_invalid_num_menus_per_page"] = "Please only enter digits for the menus per page."; +$LANG["validation_invalid_num_modules_per_page"] = "Please only enter numbers in the Num Modules Per Page field."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Please only enter numbers in the Num Option Lists Per Page field."; +$LANG["validation_invalid_num_submissions_per_page"] = "Digite uma quantidade válida para o número de envios por página."; +$LANG["validation_invalid_sessions_timeout"] = "Please enter a valid session timeout (integers only!)."; +$LANG["validation_invalid_tab_assign_values"] = "Please only enter numbers in the 'from' and 'to' fields."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Your server's installation of PHP has an invalid setting for the upload_tmp_dir value. \"{\$upload_folder}\" is not a valid folder."; +$LANG["validation_invalid_url"] = "Please enter a valid URL."; +$LANG["validation_invalid_username"] = "Your username may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_is_form_active"] = "Indique se o formulário está activo ou não."; +$LANG["validation_menu_name_taken"] = "Sorry, this menu name is already taken. Please choose a new name."; +$LANG["validation_modules_search_no_status"] = "Please select either the Enabled or Disabled checkboxes."; +$LANG["validation_no_access_type"] = "Please enter the access type."; +$LANG["validation_no_account_logout_url"] = "Please enter your logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Please re-enter your new password."; +$LANG["validation_no_account_password_confirmed2"] = "Please re-enter the new password."; +$LANG["validation_no_admin_email"] = "Please enter the administrator's email address."; +$LANG["validation_no_admin_theme"] = "Please select the theme for the administrator account."; +$LANG["validation_no_admin_theme_swatch"] = "Please select a swatch for the administrator theme."; +$LANG["validation_no_client_email"] = "Please enter the client's email address."; +$LANG["validation_no_client_first_name"] = "Please enter the client's first name."; +$LANG["validation_no_client_last_name"] = "Please enter the client's last name."; +$LANG["validation_no_client_login_page"] = "Please indicate which page the client should be redirected to when they log in."; +$LANG["validation_no_client_password"] = "Please enter the client's password."; +$LANG["validation_no_client_theme_swatch"] = "Please select a default swatch for the client accounts."; +$LANG["validation_no_client_username"] = "Please enter the client's username."; +$LANG["validation_no_column_name"] = "Please enter all column names, or click the Smart Fill button to automatically fill them."; +$LANG["validation_no_column_selected"] = "Please select at least one field to appear as a column on the submission listing page."; +$LANG["validation_no_custom_from_email"] = "Please enter the custom 'From' email address."; +$LANG["validation_no_custom_recipient_email"] = "Please enter the custom recipient email address."; +$LANG["validation_no_custom_reply_to_email"] = "Please enter the custom 'Reply-to' email address."; +$LANG["validation_no_date_format"] = "Digite um formato de data."; +$LANG["validation_no_db_column_single"] = "Please enter the Database Column name."; +$LANG["validation_no_db_hostname"] = "Please enter the database hostname."; +$LANG["validation_no_db_name"] = "Please enter the database name."; +$LANG["validation_no_db_username"] = "Please enter the database account username."; +$LANG["validation_no_default_client_theme"] = "Please select the default theme for all new client accounts."; +$LANG["validation_no_default_language"] = "Seleccione o idioma padrão para sua instalação do Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Please enter the default session timeout for user accounts."; +$LANG["validation_no_display_text"] = "Please enter the Display Text for each field."; +$LANG["validation_no_display_text_single"] = "Please enter the Display Text value."; +$LANG["validation_no_edit_submission_page_label"] = "Please enter the Edit Submission page label."; +$LANG["validation_no_email"] = "Digite o seu endereço de email."; +$LANG["validation_no_email_config_field"] = "Please specify which form field is the email field."; +$LANG["validation_no_email_content"] = "Please enter the email content for at least one of the formats (HTML or text)."; +$LANG["validation_no_email_from_field"] = "Please the email 'from' field."; +$LANG["validation_no_email_template_name"] = "Please enter the email template name."; +$LANG["validation_no_email_template_view_id"] = "Please select the View to which this email template should be mapped."; +$LANG["validation_no_email_template_view_mapping_value"] = "Please indicate when the email should be sent."; +$LANG["validation_no_enabled_themes"] = "Please ensure that at least one theme is enabled."; +$LANG["validation_no_first_name"] = "Digite o seu primeiro nome."; +$LANG["validation_no_form_field_name"] = "Please enter all form field names."; +$LANG["validation_no_form_field_single"] = "Please enter the Form Field value."; +$LANG["validation_no_form_id"] = "O ID do formulário não foi especificado. Por favor faça logout e tente novamente."; +$LANG["validation_no_form_name"] = "Digite o nome do formulário."; +$LANG["validation_no_form_url"] = "Digite o URL do formulário."; +$LANG["validation_no_last_name"] = "Digite o seu apelido."; +$LANG["validation_no_login_page"] = "Please indicate which page you would like to be sent each time you log in."; +$LANG["validation_no_logout_url"] = "Digite o URL de saída do sistema."; +$LANG["validation_no_main_email_recipient"] = "Please enter at least one main email recipient (i.e. not a cc or bcc)."; +$LANG["validation_no_menu"] = "Please select a menu for this user account."; +$LANG["validation_no_menu_id"] = "Please select a menu."; +$LANG["validation_no_num_clients_per_page"] = "Digite o número de contas de clientes por página."; +$LANG["validation_no_num_emails_per_page"] = "Please enter the number of emails to list per page."; +$LANG["validation_no_num_form_fields"] = "Please enter the number of fields for your form."; +$LANG["validation_no_num_forms_per_page"] = "Digite o número de formulários por página."; +$LANG["validation_no_num_menus_per_page"] = "Please enter the number of menus to list per page."; +$LANG["validation_no_num_modules_per_page"] = "Please enter the number of modules per page."; +$LANG["validation_no_num_option_lists_per_page"] = "Please enter the number of option lists per page."; +$LANG["validation_no_num_submissions_per_page"] = "Digite o número de formulários enviados a serem exibidos por página."; +$LANG["validation_no_option_list_name"] = "Please enter the option list name."; +$LANG["validation_no_page_titles"] = "Please enter the default page titles for the user accounts."; +$LANG["validation_no_password"] = "Digite a sua palavra passe."; +$LANG["validation_no_program_name"] = "Digite o nome do programa."; +$LANG["validation_no_second_password"] = "Please re-enter your password."; +$LANG["validation_no_sessions_timeout"] = "Please enter the session timeout."; +$LANG["validation_no_smart_fill_values"] = "Please enter the form field name and the URL of the form."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "No tabs defined"; +$LANG["validation_no_test_email_recipient"] = "Please enter the email address of where we should send the test email."; +$LANG["validation_no_test_email_submission_id"] = "Please enter the submission ID number."; +$LANG["validation_no_theme"] = "Please select a theme."; +$LANG["validation_no_theme_swatch"] = "Please select a swatch for the selected theme."; +$LANG["validation_no_timezone_offset"] = "Please enter the timezone offset."; +$LANG["validation_no_titles"] = "Digite o título das páginas."; +$LANG["validation_no_two_column_names"] = "Não é permitido o mesmo nome de coluna da base de dados."; +$LANG["validation_no_ui_language"] = "Please select a language for the interface."; +$LANG["validation_no_url"] = "Please enter a URL."; +$LANG["validation_no_username"] = "Digite o seu nome de utilizador."; +$LANG["validation_no_username_or_js"] = "Deve digitar o seu nome de utilizador. Por favor active o javascript do seu browser."; +$LANG["validation_no_view_fields"] = "Your View doesn't contain any fields! You need to assign at least one field for there to be something to show up in your View."; +$LANG["validation_no_view_fields_selected"] = "Please select one or more fields to add to the View."; +$LANG["validation_no_view_name"] = "Please enter the name of your View."; +$LANG["validation_num_rows_to_add"] = "Digite um número de linhas para adicionar."; +$LANG["validation_option_list_name_taken"] = "Sorry, this option list name is already taken. Please choose a new name."; +$LANG["validation_password_in_password_history"] = "For security, you cannot enter the same password as any of the last {\$history_size} passwords. Please enter a different password."; +$LANG["validation_passwords_different"] = "Assegure-se de que as palavras passe são idênticas."; +$LANG["validation_please_enter_search_date_range"] = "Insira um período de pesquisa por datas."; +$LANG["validation_please_enter_search_keyword"] = "Digite uma palavra-chave para pesquisar."; +$LANG["validation_select_field_type"] = "Please select a field type."; +$LANG["validation_select_submissions_to_copy"] = "Por favor, selecione os envios que você gostaria de copiar."; +$LANG["validation_select_submissions_to_delete"] = "Seleccione as inscrições que gostaria de excluir."; +$LANG["validation_smart_fill_cannot_fill"] = "Sorry, we could not fill this field."; +$LANG["validation_smart_fill_invalid_field_type"] = "We were unable to locate a field, but it is not a dropdown, checkbox or radio group."; +$LANG["validation_smart_fill_no_field_found"] = "Sorry, we couldn't find a form field with that name on the page specified."; +$LANG["validation_smart_fill_no_page"] = "Please locate the page containing the field you wish to Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Please upload all the pages in your form."; +$LANG["validation_upload_folder_not_writable"] = "Esta pasta temporária de envio de ficheiros que está especificada pela sua instalação do PHP não possui permissão de escrita. Enquanto as permissões não estiverem correctamente configuradas, os ficheiros não poderão ser enviados através do Form Tools (ou qualquer outro programa PHP). Por favor contacte o suporte de seu servidor."; +$LANG["validation_upload_html_files_only"] = "Please only upload HTML files."; +$LANG["validation_username_taken"] = "Nome de utilizador já existente. Por favor escolha outro nome de utilizador."; +$LANG["validation_wrong_password"] = "As palavras passe não coincidem."; +$LANG["word_about"] = "About"; +$LANG["word_access"] = "Access"; +$LANG["word_account"] = "Account"; +$LANG["word_account_sp"] = "Account(s)"; +$LANG["word_accounts"] = "Accounts"; +$LANG["word_action"] = "Action"; +$LANG["word_active"] = "Activo"; +$LANG["word_add"] = "Adicionar"; +$LANG["word_add_rightarrow"] = "Add »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Administração"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Depois"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "CRESCENTE"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Author:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« back"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Antes"; +$LANG["word_benefits"] = "Benefits"; +$LANG["word_blue"] = "Blue"; +$LANG["word_cancel"] = "Cancel"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Caixas de selecção"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Cliente"; +$LANG["word_client_c"] = "Client:"; +$LANG["word_clients"] = "Clientes"; +$LANG["word_close"] = "FECHAR"; +$LANG["word_code"] = "Código"; +$LANG["word_column"] = "Coluna"; +$LANG["word_columns"] = "Columns"; +$LANG["word_columns_sp"] = "Column(s)"; +$LANG["word_complete"] = "COMPLETAR"; +$LANG["word_configuration"] = "Configuration"; +$LANG["word_content"] = "Content"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continue »"; +$LANG["word_copy"] = "Copy"; +$LANG["word_custom"] = "Personalizado"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Date"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Apagar"; +$LANG["word_desc"] = "DECRESCENTE"; +$LANG["word_direct"] = "Directo"; +$LANG["word_disabled"] = "Desactivado"; +$LANG["word_documentation"] = "Documentation"; +$LANG["word_done"] = "Done"; +$LANG["word_drawbacks"] = "Drawbacks"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "EDITAR"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "EMAIL"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Enabled"; +$LANG["word_equals"] = "Igual a"; +$LANG["word_error"] = "Erro"; +$LANG["word_error_c"] = "Erro:"; +$LANG["word_examples_c"] = "Examples:"; +$LANG["word_external"] = "External"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Campo"; +$LANG["word_field_sp"] = "Campo(s)"; +$LANG["word_fields"] = "Fields"; +$LANG["word_fields_sp"] = "Field(s)"; +$LANG["word_file"] = "Ficheiro"; +$LANG["word_file_b_uc"] = "[FICHEIRO]"; +$LANG["word_files"] = "Files"; +$LANG["word_filters"] = "Filtros"; +$LANG["word_filters_sp"] = "Filter(s)"; +$LANG["word_for"] = "por"; +$LANG["word_form"] = "Formulário"; +$LANG["word_form_c"] = "Formulário:"; +$LANG["word_formatting"] = "Formatting"; +$LANG["word_forms"] = "Formulários"; +$LANG["word_found"] = "Found"; +$LANG["word_from"] = "De"; +$LANG["word_from_c"] = "De:"; +$LANG["word_general"] = "General"; +$LANG["word_green"] = "Green"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Height"; +$LANG["word_help"] = "Help"; +$LANG["word_hidden"] = "Hidden"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Hora"; +$LANG["word_hours"] = "Horas"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Incompleto"; +$LANG["word_install"] = "Install"; +$LANG["word_installation"] = "Installation"; +$LANG["word_internal"] = "Internal"; +$LANG["word_language"] = "Idioma"; +$LANG["word_large"] = "Large"; +$LANG["word_like"] = "Parecido com"; +$LANG["word_login"] = "ENTRAR"; +$LANG["word_logo"] = "Logotipo"; +$LANG["word_logout"] = "Sair"; +$LANG["word_main"] = "Principal"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "minutes"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N/D"; +$LANG["word_name"] = "Name"; +$LANG["word_name_c"] = "Nome:"; +$LANG["word_never"] = "Never"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "NEXT STEP »"; +$LANG["word_no"] = "Não"; +$LANG["word_none"] = "None"; +$LANG["word_notes"] = "Notes"; +$LANG["word_notification"] = "Notificação"; +$LANG["word_number"] = "Número"; +$LANG["word_off"] = "Off"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "On"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operador"; +$LANG["word_options"] = "Opções"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Ordem"; +$LANG["word_other"] = "Other"; +$LANG["word_other_c"] = "Other:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Página:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Palavra Passe"; +$LANG["word_password_c"] = "Palavra Passe:"; +$LANG["word_pending"] = "Pending"; +$LANG["word_permissions"] = "Permissões"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« previous"; +$LANG["word_private"] = "Private"; +$LANG["word_public"] = "Public"; +$LANG["word_purple"] = "Purple"; +$LANG["word_recipient"] = "Destinatário"; +$LANG["word_recipient_sp"] = "Destinatário(s)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Remove"; +$LANG["word_remove_uc_leftarrow"] = "« REMOVE"; +$LANG["word_reply_to"] = "Responder para"; +$LANG["word_reply_to_c"] = "Responder para:"; +$LANG["word_required"] = "Required"; +$LANG["word_reset"] = "Limpar"; +$LANG["word_resolved"] = "Resolved"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "row"; +$LANG["word_search"] = "Pesquisar"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Select"; +$LANG["word_setting"] = "Setting"; +$LANG["word_settings"] = "CONFIGURAÇÕES"; +$LANG["word_show"] = "Show"; +$LANG["word_size"] = "Size"; +$LANG["word_skipped"] = "Skipped"; +$LANG["word_small"] = "Small"; +$LANG["word_solution"] = "Solution"; +$LANG["word_sortable"] = "Ordenável"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Texto"; +$LANG["word_subject"] = "Assunto"; +$LANG["word_subject_c"] = "Subject"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Envio"; +$LANG["word_submissions"] = "Envios"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab(s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Texto"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Theme"; +$LANG["word_themes"] = "Themes"; +$LANG["word_time"] = "Time"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Today"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Unknown"; +$LANG["word_update"] = "ACTUALIZAR"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Utilizador"; +$LANG["word_username"] = "Nome do Utilizador"; +$LANG["word_username_c"] = "Nome do Utilizador:"; +$LANG["word_validation"] = "Validation"; +$LANG["word_value"] = "Value"; +$LANG["word_value_sp"] = "Valor(es)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Verify"; +$LANG["word_version"] = "Versão"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Visualizar"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Aviso!"; +$LANG["word_warning_c"] = "Warning:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Welcome!"; +$LANG["word_width_c"] = "width:"; +$LANG["word_words"] = "Words"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Yellow"; +$LANG["word_yes"] = "Sim"; \ No newline at end of file diff --git a/global/lang/ro.php b/global/lang/ro.php new file mode 100644 index 00000000..bc676a3e --- /dev/null +++ b/global/lang/ro.php @@ -0,0 +1,1219 @@ +Atenţie! Aţi selectat {\$num_selected_on_page} propunerile pe această pagină şi {\$num_selected_on_other_pages} pe alte pagini. Vă rugăm să alegeţi una din următoarele opţiuni:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Atenţie! Nu ati selectat nici un propunerile pe această pagină, dar le-aţi selectat {\$num_selected_on_other_pages} pe alte pagini. Vă rugăm să confirmaţi că doriţi să ştergeţi aceste cereri.
    "; +$LANG["confirm_delete_view"] = "Sunteţi sigur că doriţi să ştergeţi acest punct de vedere?"; +$LANG["confirm_refresh_page"] = "Sunteţi sigur că doriţi să reîmprospătaţi pagina? Acest lucru va pierde orice modificări pe care le-au făcut."; +$LANG["confirm_save_change_before_redirect"] = "Unul sau mai multe domenii au fost actualizate. Doriţi să salvaţi modificările înainte de redirecţionarea?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Sunteţi sigur că doriţi să Smart Completeaza numele bazei de date coloana? Aceasta va suprascrie valorile tale existente."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Această opţiune de auto-generează numele coloanelor bazei de date bazat pe câmpurile Text Display, astfel încât conţinutul din tabelul bazei de date sunt mai uşor de citit."; +$LANG["confirm_smart_fill_display_names"] = "Sunteţi sigur că doriţi să Smart Completaţi numele de afişare? Aceasta va suprascrie valorile tale existente."; +$LANG["confirm_ungroup_option_list"] = "Sunteţi sigur că doriţi să Anulare grupare această lista de optiuni? Toate opţiunile vor fi concentrate într-o singură listă, negrupate."; +$LANG["confirm_uninstall_module"] = "Sunteţi sigur că doriţi să dezinstalaţi acest modul? Toate datele modul va fi pierdute."; +$LANG["date_AM"] = "PM"; +$LANG["date_Fri"] = "Fri"; +$LANG["date_Friday"] = "Vineri"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "Luni"; +$LANG["date_PM"] = "AM"; +$LANG["date_Sat"] = "Sî"; +$LANG["date_Saturday"] = "Sâmbătă"; +$LANG["date_Sun"] = "Soare"; +$LANG["date_Sunday"] = "Duminică"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Joi"; +$LANG["date_Tue"] = "Tue"; +$LANG["date_Tuesday"] = "Marţi"; +$LANG["date_Wed"] = "Mi"; +$LANG["date_Wednesday"] = "Miercuri"; +$LANG["date_am"] = "AM"; +$LANG["date_month_April"] = "Apr"; +$LANG["date_month_August"] = "Aug"; +$LANG["date_month_December"] = "Dec"; +$LANG["date_month_February"] = "Feb"; +$LANG["date_month_January"] = "Ian"; +$LANG["date_month_July"] = "Iul"; +$LANG["date_month_June"] = "Iun"; +$LANG["date_month_March"] = "March"; +$LANG["date_month_May"] = "Se putea"; +$LANG["date_month_November"] = "Nov"; +$LANG["date_month_October"] = "Oct"; +$LANG["date_month_September"] = "Sept"; +$LANG["date_month_short_Apr"] = "Apr"; +$LANG["date_month_short_Aug"] = "Aug"; +$LANG["date_month_short_Dec"] = "Dec"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Iul"; +$LANG["date_month_short_Jun"] = "Iun"; +$LANG["date_month_short_Mar"] = "Apr"; +$LANG["date_month_short_May"] = "Se putea"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Oct"; +$LANG["date_month_short_Sep"] = "Sept"; +$LANG["date_pm"] = "AM"; +$LANG["notify_account_deleted"] = "Contul de utilizator a fost ştearsă."; +$LANG["notify_account_updated"] = "Contul dvs. a fost actualizat cu succes."; +$LANG["notify_add_display_values"] = "Adauga Display Valori"; +$LANG["notify_admin_menu_updated"] = "Meniul de administrare a fost actualizat."; +$LANG["notify_admin_theme_overridden"] = "Temă de administrator a fost manuală."; +$LANG["notify_allow_url_fopen_not_set"] = "Ne pare rău, acest test nu pot fi rulate pe serverul dvs. de Web. Este nevoie de allow_url_fopen care urmează să fie setat la 1 în fişierul dvs. php.ini. Această setare permite PHP pentru a accesa fişiere printr-un URL-ul, care este necesar pentru a executa acest test. Puteţi testa manual prin încărcarea unui fişier în acest dosar, prin intermediul FTP, apoi încercarea de a accesa de la adresa URL-au furnizat."; +$LANG["notify_change_temp_password"] = "Trebuie doar conectat cu o parolă temporară. Ar trebui să resetaţi parola ta acum!"; +$LANG["notify_click_to_edit_new_submission"] = "Faceți clic aici pentru a edita noua transmisie."; +$LANG["notify_client_account_menus_updated"] = "Contul de client (e) au fost actualizate pentru {\$menu_name} meniu. , Puteţi şterge acum meniul de care a fost asociate anterior cu contul (e)."; +$LANG["notify_client_account_not_updated"] = "Cont client nu a putut fi actualizat."; +$LANG["notify_client_account_themes_updated"] = "Contul de client (e) au fost actualizate pentru {\$theme} temă. Aveţi dreptul să dezactivaţi acum tema asociate anterior cu contul (e)."; +$LANG["notify_client_account_updated"] = "Cont de client a fost actualizate cu succes."; +$LANG["notify_client_menu_deleted"] = "Meniul clientul a fost şters."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Meniul a fost eliminat, dar următoarele conturi de client acum nu mai au un meniu! Ai nevoie de a actualiza următoarele conturi:"; +$LANG["notify_client_menu_updated"] = "Meniul Clientul a fost actualizat."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Ne pare rău, meniul pe care tocmai aţi încercat să ştergeţi este deja utilizat de clienti enumerate mai jos. În scopul de a şterge meniul va trebui mai întâi să se atribuie clientilor la alte meniuri. Faceţi clic pe numele clientului pentru a edita acest cont individual, sau atribuie toate conturile la un meniu diferite, folosind meniul derulant de mai jos."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Ne pare rău, una din temele pe care tocmai aţi cu handicap sunt deja utilizate de conturi de client de mai jos. În scopul de a nu fi de acord cu tema va trebui mai întâi să se atribuie fiecare client la un alt temă. Faceţi clic pe numele clientului pentru a edita acest cont individual, sau toate conturile pentru a atribui o temă folosind dropdown de mai jos."; +$LANG["notify_edit_email_fields_link"] = "Click aici pentru a specifica care câmpurile de formular sunt câmpuri de e-mail, astfel încât aveţi posibilitatea să le ţintă, în şabloane e-mail."; +$LANG["notify_edit_field_new_field"] = "Acesta este un domeniu nou. Veţi avea nevoie pentru a actualiza pagina principală înainte de a fi pe deplin posibilitatea de a modifica acest domeniu."; +$LANG["notify_edit_option_list_after_save"] = "Trebuie să selectaţi o lista de opţiuni şi apoi Save Changes înainte de a fi capabil să-l editaţi."; +$LANG["notify_email_field_config_deleted"] = "De configurare e-mail a fost ştearsă."; +$LANG["notify_email_fields_not_updated"] = "Ne pare rău, nu am putut actualiza câmpurile de e-mail."; +$LANG["notify_email_fields_updated"] = "Câmpurile de e-mail au fost actualizate."; +$LANG["notify_email_not_sent"] = "Ne pare rău, e-mail nu a putut fi trimis. Vă rugăm să contactaţi administratorul site-ului, la adresa de mai jos."; +$LANG["notify_email_not_sent_c"] = "Ne pare rău, e-mail nu a putut fi trimis:"; +$LANG["notify_email_sent"] = "E-mail (e) au fost expediate."; +$LANG["notify_email_template_deleted"] = "Şablon de e-mail a fost ştearsă."; +$LANG["notify_email_template_updated"] = "Şablon de e-mail a fost actualizat."; +$LANG["notify_enabled_module_list_updated"] = "Lista de module permis a fost actualizat."; +$LANG["notify_error_saving_fields"] = "A apărut o eroare la salvarea domeniile."; +$LANG["notify_field_changes_saved"] = "Modificările la domeniul tau (e) au fost salvate."; +$LANG["notify_field_options_smart_filled"] = "Opţiunile dvs. de domeniu au fost umplute inteligent."; +$LANG["notify_field_selected"] = "Domeniu a fost selectat. Click aici pentru a reveni la lista principală domeniu."; +$LANG["notify_field_updated"] = "Acest câmp a fost actualizat."; +$LANG["notify_file_not_uploaded"] = "Fişierul nu a putut fi încărcat."; +$LANG["notify_file_uploaded"] = "Fişierul a fost încărcat cu succes."; +$LANG["notify_filters_not_updated"] = "Nu a fost o eroare la actualizarea filtre de depunerea acestei clientului."; +$LANG["notify_filters_updated"] = "Filtre de depunere au fost actualizate pentru acest client."; +$LANG["notify_folder_correct_permissions"] = "Acest folder are permisiunile corecte."; +$LANG["notify_folder_url_match"] = "Pliant şi URL-ul par să se potrivească în mod corect."; +$LANG["notify_folder_url_no_access"] = "Acest test nu a putut fi efectuate începând cu PHP nu a putut să acceseze această adresă URL. Acest lucru este de obicei cauzată de parolă URL-ul fiind protejat cu un fişier. Htaccess."; +$LANG["notify_folder_url_no_match"] = "Acest folder-combinaţie URL-ul nu pare a fi un meci."; +$LANG["notify_folder_url_unknown_error"] = "Apărut o eroare necunoscută. Puteţi testa manual prin încărcarea unui fişier în acest dosar, prin intermediul FTP, apoi încercarea de a accesa de la adresa URL-au furnizat."; +$LANG["notify_form_access_type_email_info"] = "Acest formular are acces de tip administrator, astfel încât nici un client nu au acces la ea şi nu sunt enumerate în lista verticală de mai jos."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Ne pare rau, un formular cu ID-ul care nu există."; +$LANG["notify_form_field_not_added"] = "Câmp sub forma '{\$fieldname}' nu a putut fi adăugată."; +$LANG["notify_form_field_options_updated"] = "Opţiuni formular domeniu au fost actualizate."; +$LANG["notify_form_field_removed"] = "Câmp formularul de succes a fost eliminat."; +$LANG["notify_form_fields_removed"] = "Toate câmpurile din formular au fost eliminate cu succes."; +$LANG["notify_form_not_updated_notify_admin"] = "Formularul de dvs. nu a putut fi actualizat. Vă rugăm să contactaţi administratorul site-ului pentru a raporta această problemă."; +$LANG["notify_form_settings_updated"] = "Setările de formularul de dvs. au fost actualizate cu succes."; +$LANG["notify_form_submission_updated"] = "Formularul de depunere a fost actualizat."; +$LANG["notify_form_tabs_updated"] = "Filele au fost actualizate."; +$LANG["notify_form_updated"] = "Formularul a fost actualizat cu succes."; +$LANG["notify_form_views_updated"] = "Vizualizări formă au fost actualizate."; +$LANG["notify_install_invalid_db_info"] = "Ne pare rău, nu am putut să se conecteze la baza de date folosind informatiile pe care le furnizate. Mesaj de eroare returnat în baza de date este: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Formularul dvs. a fost creat! Puteţi configura formularul prin intermediul acestor file."; +$LANG["notify_invalid_account_information_in_sessions"] = "Informaţii de cont stocate în sesiuni este invalid. Vă rugăm să vă conecta din nou de mai jos."; +$LANG["notify_invalid_license_key"] = "Ne pare rău, că nu pare a fi o cheie de licenţă valabilă. Vă rugăm să încercaţi să introduceţi-l din nou."; +$LANG["notify_invalid_permissions"] = "Nu aveţi permisiunile pentru a accesa această pagină. Aţi fost deconectat."; +$LANG["notify_invalid_search_dates"] = "Vă rugăm să folosiţi datepicker pentru a introduce o dată validă sau datele."; +$LANG["notify_invalid_upload_folder"] = "Pliant upload este fie invalid sau nu este de inscripţionare."; +$LANG["notify_lang_list_updated"] = "Lista disponibilă limba interfeţei utilizator a fost actualizat."; +$LANG["notify_login_info_emailed"] = "Informaţiile dvs. de conectare a fost trimis prin e pentru tine."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Hopa, acest modul este deja instalat!"; +$LANG["notify_module_installed"] = "Modulul a fost instalat. Click aici pentru a selecta modul."; +$LANG["notify_module_list_updated"] = "Lista Modulul a fost actualizat."; +$LANG["notify_module_uninstalled"] = "Modulul a fost dezinstalat."; +$LANG["notify_module_updated"] = "Modulul {\$module} a fost actualizat la {\$version}. Faceţi clic aici pentru a selecta modul ."; +$LANG["notify_multi_field_selected"] = "Domeniu a fost selectat. Click aici pentru a vizualiza şi edita opţiunile de teren."; +$LANG["notify_multi_field_updated"] = "Acest câmp a fost actualizat. Veţi putea să configuraţi opţiunile de teren, după înfiinţarea formular."; +$LANG["notify_multiple_fields_found"] = "Elemente multiple au fost găsite cu acest nume de domeniu ({\$field_name}). Aceasta se poate întâmpla în cazul în care pagina dvs. conţine mai mult de o formă sau în cazul în care accidental, aţi numit unul dintre formularele dumneavoastră la fel ca altul. Vă rugăm să alegeţi cel dorit din lista de mai jos."; +$LANG["notify_new_default_view_created"] = "O noua viziune, implicit care conţine toate câmpurile de formular a fost creat."; +$LANG["notify_new_submission_created"] = "Prezentarea a fost creat. Aveţi dreptul să editaţi-l de mai jos."; +$LANG["notify_no_account_id_in_sessions"] = "Nu ai un cont de utilizator ID-ul a fost găsit în sesiuni. Vă rugăm să vă conecta din nou de mai jos."; +$LANG["notify_no_api_installed"] = "Nu aveţi instalat API"; +$LANG["notify_no_client_permissions"] = "Nu există setări disponibile pentru a edita."; +$LANG["notify_no_email_template_selected"] = "Vă rugăm să selectaţi de e-mail şablon."; +$LANG["notify_no_emails_defined"] = "Nu e-mailuri au fost definite pentru acest formular. Pentru a adăuga un unul nou, faceţi clic pe butonul de mai jos."; +$LANG["notify_no_field_settings"] = "Acest tip de câmp nu conţine nici o setări suplimentare."; +$LANG["notify_no_fields_in_tab"] = "Aceasta fila nu conţine nici o câmpuri."; +$LANG["notify_no_option_lists"] = "Nu există nici o opţiune liste de definit. Faceţi clic pe butonul de mai jos pentru a crea unul nou."; +$LANG["notify_no_test_submission"] = "Formular de Instrumente nu a primit o prezentare a testat cu succes încă."; +$LANG["notify_no_user_email_fields_configured"] = "Notă: Dacă doriţi să trimiteţi un e-mail la orice adresă de e-mail care a fost inclus în formă, mai întâi trebuie să configuraţi câmpurile formularul de e-mail."; +$LANG["notify_no_views"] = "Formă dvs. nu are nici Vizualizari instituit! Veti avea nevoie de cel putin un Vizualizare în scopul de a gestiona datele de formular."; +$LANG["notify_no_views_assigned_to_client_form"] = "Se pare că contul dvs. de utilizator nu a fost repartizat pe oricare Vizualizari forma, astfel încât nu veţi putea vedea orice date. Vă rugăm să contactaţi administratorul pentru ajutor suplimentar."; +$LANG["notify_no_views_defined"] = "Nu aveţi nici Vizualizari definit. Nu veţi putea vedea observaţiile acest formular cu excepţia cazului în cel puţin una View este creat. Faceţi clic pe butonul de mai jos pentru a crea vizualizarea implicită."; +$LANG["notify_option_list_deleted"] = "Lista de optiuni a fost ştearsă."; +$LANG["notify_option_list_updated"] = "Lista opţiune a fost actualizat."; +$LANG["notify_public_form_omit_list_updated"] = "Clientul a omite lista pentru acest formular a fost actualizat."; +$LANG["notify_public_view_omit_list_updated"] = "Clientul a omite lista pentru acest punct de vedere a fost actualizat."; +$LANG["notify_required_admin_pages"] = "Următoarele pagini sunt necesare în meniul de administrator: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Ne pare rău, nu exista nici o activitate pentru o perioada de timp aşa că a trebuit să te va scoate. Vă rugăm să vă conecta din nou de mai jos."; +$LANG["notify_setup_options_updated"] = "Opţiuni de configurare au fost actualizate."; +$LANG["notify_smart_fill_field_not_found"] = "Noi am fost în imposibilitatea de a găsi un teren cu acest nume ({\$field_name}) sub forma (e) specificate. Puteţi seta manual, fie de tip câmpul de mai jos, sau faceţi clic pe butonul Treci pentru a edita acest domeniu mai târziu."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Your file (s) au fost încărcat cu succes. Încercaţi clic pe butonul Smart Umpleţi pentru a încerca din nou. Dacă acest pas nu reuşeşte, va trebui să săriţi peste acest pas şi să configuraţi câmpurile formularul dvs. de manally mai târziu."; +$LANG["notify_smart_fill_submitted"] = "Formularul a fost depusă. În funcţie de mărimea formular şi numărul de opţiuni de teren, acest lucru poate dura ceva timp."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Ne pare rău, unul sau mai multe dintre fişierele le-aţi introdus nu a putut fi încărcat. Va trebui să săriţi peste acest pas şi să configuraţi câmpurile manual."; +$LANG["notify_submission_and_files_deleted"] = "Prezentarea şi orice fişier (e) asociate cu acesta au fost şterse cu succes."; +$LANG["notify_submission_copied"] = "Trimiterea a fost copiată."; +$LANG["notify_submission_copied_edit"] = "Trimiterea a fost copiată. Puteți să o editați mai jos."; +$LANG["notify_submission_deleted"] = "Prezentarea a fost şters cu succes."; +$LANG["notify_submission_deleted_with_problems"] = "Prezentarea a fost şters, dar următoarele probleme au fost întâmpinate în încercarea de a şterge următorul fişier (e):"; +$LANG["notify_submission_id_not_found"] = "Depunerea ID-ul nu a fost găsit."; +$LANG["notify_submission_not_updated"] = "Depunere nu a putut fi actualizat."; +$LANG["notify_submissions_and_files_deleted"] = "Observaţiile şi orice fişier (e) asociate cu acestea au fost şterse cu succes."; +$LANG["notify_submissions_copied"] = "Au fost copiate {\$num_submissions} trimiteri."; +$LANG["notify_submissions_deleted"] = "Observaţiile au fost şterse cu succes."; +$LANG["notify_submissions_deleted_with_problems"] = "Observaţiile au fost şterse, dar următoarele probleme au fost întâmpinate în încercarea de a şterge următorul fişier (e):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Dvs. de email test nu a putut fi trimis."; +$LANG["notify_theme_cache_folder_not_writable"] = "Pliant Această temă a lui cache-ul nu poate fi scris. În scopul de a permite această temă, {\$folder} dosar trebuie să aibă Read Full-write permissions."; +$LANG["notify_theme_list_updated"] = "Lista tema a fost actualizat."; +$LANG["notify_themes_settings_updated"] = "Setările de tema dvs. au fost actualizate."; +$LANG["notify_view_deleted"] = "Vezi a fost ştearsă."; +$LANG["notify_view_group_deleted"] = "Grupul Vizualizare a fost şters."; +$LANG["notify_view_missing_columns"] = "Hopa! Ne pare rău, această View nu a fost pe deplin instituit încă."; +$LANG["notify_view_missing_columns_admin_fix"] = "Click aici pentru a specifica ce domenii ar trebui să apară ca coloanelor de pe această pagină."; +$LANG["notify_view_updated"] = "Vezi a fost actualizat."; +$LANG["notify_your_email_sent"] = "Dvs. de email a fost trimis cu succes."; +$LANG["phrase_100_per_page"] = "100 pe pagină"; +$LANG["phrase_10_per_page"] = "10 pe pagină"; +$LANG["phrase_15_per_page"] = "15 pe pagină"; +$LANG["phrase_1_direct"] = "1. Directă"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 pe pagină"; +$LANG["phrase_25_per_page"] = "25 pe pagină"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 coloane"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 coloane"; +$LANG["phrase_4_columns"] = "4 coloane"; +$LANG["phrase_50_per_page"] = "50 pe pagină"; +$LANG["phrase_accepting_submissions"] = "(cereri de acceptare)"; +$LANG["phrase_access_admin_account_c"] = "Puteţi accesa contul de administrare aici:"; +$LANG["phrase_access_type"] = "Tip de acces"; +$LANG["phrase_account_info"] = "Informaţii cont"; +$LANG["phrase_account_settings"] = "Setări cont"; +$LANG["phrase_action_needed"] = "Acţiunea necesară"; +$LANG["phrase_add_client"] = "Adăugaţi client"; +$LANG["phrase_add_client_menu"] = "Adauga Client Meniu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Adaugă setările implicite »"; +$LANG["phrase_add_field"] = "Adăugaţi Câmp"; +$LANG["phrase_add_fields"] = "Adauga Domenii"; +$LANG["phrase_add_fields_rightarrow"] = "Adaugă câmp (e) »"; +$LANG["phrase_add_form"] = "Adaugă Formular"; +$LANG["phrase_add_form_external"] = "Adaugă Formular - externă"; +$LANG["phrase_add_form_internal"] = "Adaugă Formular - intern"; +$LANG["phrase_add_new_group_rightarrow"] = "Adaugă un grup nou »"; +$LANG["phrase_add_num_rows"] = "Adauga {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Adaugă buton Prezentarea"; +$LANG["phrase_add_view_rightarrow"] = "Adaugă Vezi »"; +$LANG["phrase_adding_multi_page_form"] = "Adăugarea unui multi-formular de start, cu API"; +$LANG["phrase_adding_single_page_form"] = "Adăugarea unui singur formular de start, cu API"; +$LANG["phrase_admin_menu"] = "Administrator Meniu"; +$LANG["phrase_admin_only"] = "Doar administrator"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Tematica"; +$LANG["phrase_advanced_settings_rightarrow"] = "Avansata »Setări"; +$LANG["phrase_all_X_results_selected"] = "Toate {\$numresults} rezultatele selectate"; +$LANG["phrase_all_clients"] = "Toti clientii"; +$LANG["phrase_all_clients_except_c"] = "Toti clientii, cu excepţia:"; +$LANG["phrase_all_clients_have_access"] = "(toţi clienţii au acces)"; +$LANG["phrase_all_fields"] = "Toate câmpurile"; +$LANG["phrase_all_fields_displayed"] = "Toate câmpurile sunt afişate"; +$LANG["phrase_all_statuses"] = "Toţi statute"; +$LANG["phrase_all_submissions"] = "Toate observaţiile"; +$LANG["phrase_allow_fields_edited"] = "Se lasă câmpurile care urmează să fie editat"; +$LANG["phrase_alphanumeric"] = "Alfanumerice (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Aplicaţi Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Alocaţi listate toate conturile de client pentru a {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Alocaţi listate toate conturile de client pentru a {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "La închiderea"; +$LANG["phrase_at_start"] = "La Start"; +$LANG["phrase_author_link"] = "Link Autor"; +$LANG["phrase_auto_disable_account"] = "Auto-dezactiva contul # eşuat după tentative de conectare"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Clienti Disponibil"; +$LANG["phrase_available_fields"] = "Domenii disponibile"; +$LANG["phrase_available_option_lists"] = "Liste disponibile Opţiunea"; +$LANG["phrase_available_swatches"] = "Specimene disponibile"; +$LANG["phrase_available_swatches_c"] = "Specimene disponibile:"; +$LANG["phrase_available_tabs"] = "Filele disponibile"; +$LANG["phrase_available_views"] = "Vizualizări Disponibile"; +$LANG["phrase_awaiting_form_submission"] = "Aşteaptă trimiterea formularului."; +$LANG["phrase_back_to_field_list"] = "Lista «inapoi la câmp"; +$LANG["phrase_back_to_search_results"] = "Înapoi la rezultatele căutării"; +$LANG["phrase_base_view_on"] = "Vezi de bază privind ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Schimbarea Login Information"; +$LANG["phrase_characters_limit_p"] = "limită de caractere."; +$LANG["phrase_check_db_settings_try_again"] = "Vă rugăm să verificaţi setările de baza de date şi faceţi clic pe butonul Continuare din nou."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Verificaţi URL-ul"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Clear Lista Omiterea"; +$LANG["phrase_client_account_settings"] = "Client Setări cont"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Client Harta Filtre »"; +$LANG["phrase_client_may_edit"] = "Clientul poate edita"; +$LANG["phrase_client_menu"] = "Client Meniu"; +$LANG["phrase_clients_can_access_form"] = "Clientii care pot accesa formularul de"; +$LANG["phrase_clients_can_access_view"] = "Clientii care pot accesa View"; +$LANG["phrase_clients_cannot_access_form"] = "Clientii care nu pot accesa formularul de"; +$LANG["phrase_clients_cannot_access_view"] = "Clientii care nu pot accesa View"; +$LANG["phrase_clients_may_edit"] = "Clientii pot edita"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Cod / Markup câmp"; +$LANG["phrase_code_markup_type"] = "Cod / Tip Markup"; +$LANG["phrase_codes_c"] = "Codurile de eroare:"; +$LANG["phrase_column_width"] = "Coloana Lăţime"; +$LANG["phrase_company_name"] = "Numele Companiei"; +$LANG["phrase_configure_form_email_fields"] = "Configurare email form Domenii"; +$LANG["phrase_confirm_folder_url_match"] = "Confirmaţi Mape-URL-ul de meci"; +$LANG["phrase_connect_rows"] = "Conectaţi rânduri"; +$LANG["phrase_copy_email_settings_from"] = "Copierea email setări de la ..."; +$LANG["phrase_copy_settings_from"] = "Copiere setări de la ..."; +$LANG["phrase_core_fields"] = "Core Domenii"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Create Account"; +$LANG["phrase_create_admin_account"] = "Creaţi Admin Cont"; +$LANG["phrase_create_config_file"] = "Creaţi fişierul de configurare"; +$LANG["phrase_create_database_tables"] = "Creaţi tabelele bazei de date"; +$LANG["phrase_create_default_view"] = "Crearea Afisează"; +$LANG["phrase_create_file"] = "Creaţi fişiere"; +$LANG["phrase_create_group"] = "Creaţi un grup"; +$LANG["phrase_create_new_email"] = "Creaţi un nou e-mail"; +$LANG["phrase_create_new_menu"] = "Creaţi o nouă Meniu"; +$LANG["phrase_create_new_option_list"] = "Creaţi lista de optiuni noi"; +$LANG["phrase_create_new_option_list_group"] = "Creare grup nou lista de optiuni"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Creaţi lista de optiuni noi »"; +$LANG["phrase_create_new_view"] = "Creaţi o nouă View"; +$LANG["phrase_create_new_view_group"] = "Create New Group Vezi"; +$LANG["phrase_custom_display_format"] = "Format afişare particularizate"; +$LANG["phrase_custom_recipient"] = "Custom destinatarului"; +$LANG["phrase_custom_url"] = "Custom URL-ul"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Tip de date"; +$LANG["phrase_database_hostname"] = "Hostname Baza de date"; +$LANG["phrase_database_name"] = "Nume bază de date"; +$LANG["phrase_database_password"] = "Parola Baza de date"; +$LANG["phrase_database_settings"] = "Baza de date Setări"; +$LANG["phrase_database_setup"] = "Baza de date de instalare"; +$LANG["phrase_database_table_prefix"] = "Baza de date prefix de masă"; +$LANG["phrase_database_username"] = "Nume de utilizator Baza de date"; +$LANG["phrase_date_format"] = "Data Format"; +$LANG["phrase_db_column"] = "DB Coloana"; +$LANG["phrase_db_setup_page_4"] = "4. Baza de date de instalare"; +$LANG["phrase_default_client_account_theme"] = "Implicit Cont client Tematica"; +$LANG["phrase_default_date_field_search_value"] = "Data câmpul de căutare implicit valoarea"; +$LANG["phrase_default_language"] = "Limba maternă"; +$LANG["phrase_default_menu"] = "Implicit Meniu"; +$LANG["phrase_default_sessions_timeout"] = "Implicit Sesiuni Timeout"; +$LANG["phrase_default_sort_order"] = "Implicit Ordine de sortare"; +$LANG["phrase_default_tab_label"] = "De date"; +$LANG["phrase_default_theme"] = "Implicit Tematica"; +$LANG["phrase_default_value"] = "Valoarea implicită"; +$LANG["phrase_default_values"] = "Valorile implicite"; +$LANG["phrase_default_values_new_submissions"] = "Valori implicite pentru trimise de noi"; +$LANG["phrase_delete_field"] = "Ştergere câmp"; +$LANG["phrase_delete_form"] = "STERGE FORMULAR"; +$LANG["phrase_delete_row"] = "Ştergere rând"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Ştergerea fişierelor asociate când ştergeţi depunerea"; +$LANG["phrase_delete_view"] = "Vezi Ştergere"; +$LANG["phrase_disconnect_rows"] = "Deconectaţi rânduri"; +$LANG["phrase_display_email"] = "Display-mail"; +$LANG["phrase_display_name"] = "Display Name"; +$LANG["phrase_display_text"] = "Afişarea textului"; +$LANG["phrase_display_value"] = "Valoarea de afişare"; +$LANG["phrase_edit_admin_menu"] = "Editare Admin Menu"; +$LANG["phrase_edit_client"] = "Editaţi de clienţi"; +$LANG["phrase_edit_client_menu"] = "Editare Client Meniu"; +$LANG["phrase_edit_email_template"] = "Editare şablon e-mail"; +$LANG["phrase_edit_field"] = "Câmpul editabil"; +$LANG["phrase_edit_field_c"] = "Editare Rubrica:"; +$LANG["phrase_edit_form"] = "Editare Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Editare tipul de acces formularul]"; +$LANG["phrase_edit_option_list"] = "Editare lista de optiuni"; +$LANG["phrase_edit_submission"] = "Edit Submission"; +$LANG["phrase_edit_submission_label"] = "Editare etichetă Prezentarea"; +$LANG["phrase_edit_view"] = "Edit Vizualizarea"; +$LANG["phrase_email_format"] = "De e-mail Format"; +$LANG["phrase_email_settings"] = "Setări e-mail"; +$LANG["phrase_email_template"] = "De e-mail şablon"; +$LANG["phrase_email_template_name"] = "E-mail nume de şablon"; +$LANG["phrase_error_learn_more"] = "Aflaţi mai multe despre această eroare."; +$LANG["phrase_error_text_intro"] = "Vă rugăm să stabilească următoarea eroare (e) şi retrimiteţi:"; +$LANG["phrase_errors_learn_more"] = "Faceţi clic pe codurile de eroare pentru a afla mai multe."; +$LANG["phrase_event_trigger"] = "Eveniment Trigger"; +$LANG["phrase_external_form"] = "Formular de externe"; +$LANG["phrase_external_form_info"] = "Formular Info externe"; +$LANG["phrase_external_your_own_form"] = "Externe (formularul ta)"; +$LANG["phrase_field_comments"] = "Rubrica Comentarii"; +$LANG["phrase_field_label"] = "Domeniul Casă de discuri"; +$LANG["phrase_field_options"] = "Opţiuni de Câmp"; +$LANG["phrase_field_size"] = "Size Field"; +$LANG["phrase_field_skipped"] = "Field Skipped"; +$LANG["phrase_field_specific_settings"] = "Câmp setări specifice"; +$LANG["phrase_field_type"] = "Tip câmp"; +$LANG["phrase_field_type_no_validation"] = "Nu există reguli de validare disponibile pentru acest tip de câmp."; +$LANG["phrase_field_types"] = "Tipuri de câmp"; +$LANG["phrase_field_value"] = "Câmpul valorii"; +$LANG["phrase_field_values_to_display_values"] = "Câmp Valori »afişează valori"; +$LANG["phrase_final_touches_page_6"] = "6. De finisare Touches"; +$LANG["phrase_finalize_form"] = "Formular de a finaliza"; +$LANG["phrase_first_name"] = "Nume"; +$LANG["phrase_footer_text"] = "Footer text"; +$LANG["phrase_for_any_form_submission"] = "Pentru orice formă depunerea"; +$LANG["phrase_for_view_submissions"] = "Observaţiile numai că se încadrează în următoarele Vezi (e)"; +$LANG["phrase_forgot_password"] = "TI-AI UITAT PAROLA?"; +$LANG["phrase_form_already_selected"] = "Formular deja selectată"; +$LANG["phrase_form_email_field_b_c"] = "[Formular de e-mail domeniul]:"; +$LANG["phrase_form_email_field_configuration"] = "Formular de e-mail Câmp de configurare"; +$LANG["phrase_form_email_fields"] = "Formular de e-mail Domenii"; +$LANG["phrase_form_field"] = "Formular de Câmp"; +$LANG["phrase_form_field_contents"] = "Câmp de formular Cuprins"; +$LANG["phrase_form_field_name"] = "Formular de Nume câmp"; +$LANG["phrase_form_field_placeholders"] = "Câmp de formular substituenţi"; +$LANG["phrase_form_fields"] = "Form Fields"; +$LANG["phrase_form_info"] = "Formular de informare"; +$LANG["phrase_form_info_2"] = "2. Formular de informare"; +$LANG["phrase_form_list"] = "Forma unei liste"; +$LANG["phrase_form_name"] = "Numele Formularului"; +$LANG["phrase_form_page"] = "Forma Pagina"; +$LANG["phrase_form_placeholders"] = "Placeholdere Form"; +$LANG["phrase_form_submission"] = "Formularul de depunere a"; +$LANG["phrase_form_submissions"] = "Completarea de formulare"; +$LANG["phrase_form_type"] = "Formular de tip"; +$LANG["phrase_form_url"] = "Formular de URL-ul"; +$LANG["phrase_form_urls"] = "Formular de URL-uri"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formulare alocate pentru orice cont"; +$LANG["phrase_forms_page_default_message"] = "Formulare pagina implicit mesaj"; +$LANG["phrase_ft_installation"] = "Forma Installation Tools Script-ul de"; +$LANG["phrase_full_width"] = "Full Lăţime"; +$LANG["phrase_getting_started"] = "Noţiuni de bază"; +$LANG["phrase_global_placeholders"] = "Placeholdere globala"; +$LANG["phrase_group_name"] = "Numele grupului"; +$LANG["phrase_group_options_q"] = "Opţiunile de grup?"; +$LANG["phrase_group_rows"] = "Grup de rânduri"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Evidenţiaţi Culoare"; +$LANG["phrase_html_email"] = "HTML e-mail"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Imagini / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Opţiunea de import »Lista"; +$LANG["phrase_input_length"] = "Durata de intrare"; +$LANG["phrase_installation_help"] = "Ajutor de instalare"; +$LANG["phrase_internal_form"] = "Internă Formular"; +$LANG["phrase_ip_address"] = "Adresa IP"; +$LANG["phrase_is_multi_page_form_q"] = "Este aceasta o forma mai multe pagini?"; +$LANG["phrase_label_response_placeholders"] = "Label / Răspuns substituenţi"; +$LANG["phrase_large_300px"] = "Mari (300px)"; +$LANG["phrase_large_400px"] = "Mari (400px)"; +$LANG["phrase_last_7_days"] = "Ultimele 7 zile"; +$LANG["phrase_last_logged_in"] = "Vazut la"; +$LANG["phrase_last_modified"] = "Ultima modificare"; +$LANG["phrase_last_modified_date"] = "Ultima dată modificat"; +$LANG["phrase_last_name"] = "Prenume"; +$LANG["phrase_letters_only"] = "Doar litere"; +$LANG["phrase_light_brown"] = "Şaten"; +$LANG["phrase_limit_email_content"] = "Limită pentru conţinutul de e-mail la câmpuri, având în vedere"; +$LANG["phrase_loading_ellipsis"] = "Se incarca ..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Conectaţi-vă ca acest utilizator"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Parola"; +$LANG["phrase_login_username"] = "Login Nume de utilizator"; +$LANG["phrase_logo_link_url"] = "Logo URL Link"; +$LANG["phrase_logout_url"] = "Logout URL-ul"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Principalele Setări"; +$LANG["phrase_manage_client"] = "Gestionare client"; +$LANG["phrase_manage_client_omit_list"] = "Administreaza clienti Omiteţi Lista"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Durata maxima"; +$LANG["phrase_max_length_words_chars"] = "- Lungime max (cuvinte / caractere)"; +$LANG["phrase_may_add_submissions"] = "Mai adăugaţi trimise"; +$LANG["phrase_may_copy_submissions"] = "Pot copia trimiterile"; +$LANG["phrase_may_delete_submissions"] = "Poate şterge trimise"; +$LANG["phrase_medium_150px"] = "Mediu (150px)"; +$LANG["phrase_medium_200px"] = "Mediu (200px)"; +$LANG["phrase_menu_name"] = "Numele meniului"; +$LANG["phrase_menu_type"] = "Meniul de tip"; +$LANG["phrase_min_password_length"] = "Lungimea minima parola"; +$LANG["phrase_module_description"] = "Modulul Descriere"; +$LANG["phrase_module_info"] = "Modulul de informare"; +$LANG["phrase_module_nav"] = "Modulul Nav"; +$LANG["phrase_month_to_date"] = "Luna până în prezent"; +$LANG["phrase_multi_select"] = "Multi-selecta"; +$LANG["phrase_multi_select_dropdown"] = "Multi-dropdown selectaţi"; +$LANG["phrase_multiple_fields_found"] = "Domenii multiple Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Nume / Prenume"; +$LANG["phrase_new_blank_email"] = "Noua Blank e-mail"; +$LANG["phrase_new_blank_option_list"] = "Lista noi Blank Opţiunea"; +$LANG["phrase_new_blank_view"] = "Nou Blank View"; +$LANG["phrase_new_ft_installation"] = "Noul Formular Installation Tools"; +$LANG["phrase_new_option_list"] = "Opţiunea Lista noi"; +$LANG["phrase_new_password"] = "New Password"; +$LANG["phrase_new_password_reenter"] = "New Password (vă rugăm să re-enter)"; +$LANG["phrase_new_view"] = "Nou Vizualizarea"; +$LANG["phrase_new_view_all_fields"] = "Nou Vezi - Toate domeniile"; +$LANG["phrase_next_client"] = "următoarea client »"; +$LANG["phrase_next_field"] = "next »câmp"; +$LANG["phrase_next_form"] = "următoarea formă »"; +$LANG["phrase_next_view"] = "View Next »"; +$LANG["phrase_no_clients"] = "Nici un client nu"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "No compensate"; +$LANG["phrase_no_option_lists_available"] = "Nr opţiuni listele disponibile."; +$LANG["phrase_no_views"] = "No Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Nr Vizualizări cu filtrele definite)"; +$LANG["phrase_none_not_recommended"] = "Nici unul nu (recomandat)"; +$LANG["phrase_not_assigned_to_option_list"] = "Acest câmp nu este alocat unui lista de opţiuni."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Oare nu este egal"; +$LANG["phrase_not_found"] = "Nu a fost găsit!"; +$LANG["phrase_not_like"] = "Not Like"; +$LANG["phrase_not_visible_to_client"] = "(nu este vizibil pentru client)"; +$LANG["phrase_num_clients_per_page"] = "Clienti Num Per Page"; +$LANG["phrase_num_emails_per_page"] = "Mesaje de poştă electronică Num Per Page"; +$LANG["phrase_num_fields"] = "Numărul de Domenii"; +$LANG["phrase_num_forms_per_page"] = "Formulare Num Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Meniuri Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Module Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Num Liste Opţiunea pe pagină"; +$LANG["phrase_num_options"] = "Num Opţiuni"; +$LANG["phrase_num_rows"] = "Num Rânduri"; +$LANG["phrase_numbers_only"] = "Doar numere"; +$LANG["phrase_often_localhost"] = "(de multe ori "localhost")"; +$LANG["phrase_on_form_submission"] = "La depunerea formularului"; +$LANG["phrase_one_char_number"] = "Cel puţin un caracter este un număr (0-9)"; +$LANG["phrase_one_char_upper"] = "Cel puţin un caracter este majusculă"; +$LANG["phrase_one_special_char"] = "Cel puţin una dintre {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(numai clientii specifice, au acces)"; +$LANG["phrase_open_form_in_dialog"] = "Formularul deschis în fereastră de dialog"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Deschideţi această formă într-o fereastră nouă filă /"; +$LANG["phrase_option_list"] = "Opţiunea Lista"; +$LANG["phrase_option_list_name"] = "Opţiunea Lista Nume"; +$LANG["phrase_option_list_or_contents"] = "Lista Opţiunea / Cuprins"; +$LANG["phrase_option_lists"] = "Opţiunea Liste"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Titlurile paginilor"; +$LANG["phrase_pass_on"] = "Pass pe"; +$LANG["phrase_password_min"] = "Acesta trebuie să fie de cel puţin {\$length} caractere."; +$LANG["phrase_password_one_number"] = "Acesta trebuie să conţină cel puţin un număr (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Acesta trebuie să conţină cel puţin o literă majusculă."; +$LANG["phrase_password_requirements_c"] = "Parola cerinţe:"; +$LANG["phrase_password_reset"] = "Resetare parolă"; +$LANG["phrase_password_special_char"] = "Acesta trebuie să conţină cel puţin una din următoarele caractere: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permisiuni / Alte setări"; +$LANG["phrase_permitted_file_types"] = "Tipuri de fişiere permise"; +$LANG["phrase_phone_number"] = "Număr de telefon"; +$LANG["phrase_phone_number_format"] = "Numărul de telefon Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini Max permis mărime fişier de încărcare:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Vă rugăm să confirmaţi"; +$LANG["phrase_please_enter_license_key"] = "Vă rugăm să introduceţi cheia de licenţă"; +$LANG["phrase_please_select"] = "Selectati va rog"; +$LANG["phrase_please_select_form"] = "Vă rugăm să selectaţi o formă"; +$LANG["phrase_prev_client"] = "«Precedentă client"; +$LANG["phrase_prev_form"] = "«Precedentă formă"; +$LANG["phrase_prevent_password_reuse"] = "Prevenirea re-utilizarea de parole # ultima"; +$LANG["phrase_previous_field"] = "domeniul «precedenta"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "«Vezi precedentă"; +$LANG["phrase_program_name"] = "Numele programului"; +$LANG["phrase_public_form_omit_list"] = "Publică Form Omiterea Lista de"; +$LANG["phrase_public_view_omit_list"] = "View Public Omiterea Lista de"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Nu a fost o problemă cu următoarea interogare:"; +$LANG["phrase_radio_buttons"] = "Butoane Radio"; +$LANG["phrase_random_form_submission"] = "Random trimiterea formularului"; +$LANG["phrase_re_enter_password"] = "Re-introduceţi parola"; +$LANG["phrase_recipient_type"] = "Tip Destinatar"; +$LANG["phrase_redirect_url"] = "Redirect URL-ul"; +$LANG["phrase_refresh_list"] = "Lista de Refresh"; +$LANG["phrase_refresh_module_list"] = "Reîmprospătare listă Modulul"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Reîmprospătare listă Tematica"; +$LANG["phrase_register_new_email"] = "Inregistreaza e-mail nouă"; +$LANG["phrase_remaining_characters"] = "caractere rămase"; +$LANG["phrase_remaining_words"] = "restul cuvintelor"; +$LANG["phrase_remove_tabs"] = "File Eliminare"; +$LANG["phrase_required_password_chars"] = "caractere cerute parola"; +$LANG["phrase_resend_test_submission"] = "Retrimite Test Submission"; +$LANG["phrase_return_form_list"] = "Întoarceţi-vă la forma unei liste"; +$LANG["phrase_row_selected"] = "{\$num_rows} rândul selectat"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rânduri selectat"; +$LANG["phrase_sample_data"] = "Exemplu de date"; +$LANG["phrase_save_changes"] = "Salvaţi Modificările"; +$LANG["phrase_search_keyword"] = "Cautare dupa cuvinte cheie"; +$LANG["phrase_security_settings"] = "Setări de securitate"; +$LANG["phrase_select_all"] = "Selecteaza Tot"; +$LANG["phrase_select_all_X_results"] = "Selecteaza Tot {\$numresults} Rezultate"; +$LANG["phrase_select_all_on_page"] = "Selectaţi toate pe pagina"; +$LANG["phrase_select_date"] = "Selectaţi data"; +$LANG["phrase_select_field"] = "Selectaţi Câmp"; +$LANG["phrase_select_swatch"] = "Selectaţi specimenul"; +$LANG["phrase_selected_clients"] = "Clientii Selectati"; +$LANG["phrase_selected_views"] = "Vizualizari selectate"; +$LANG["phrase_send_email"] = "Trimite e-mail"; +$LANG["phrase_send_test_email"] = "Trimite e-mail de testare"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sesiuni Timeout"; +$LANG["phrase_setting_value"] = "Setarea Valoare"; +$LANG["phrase_setup_options"] = "Opţiuni de instalare"; +$LANG["phrase_show_all"] = "Show All"; +$LANG["phrase_show_form"] = "Arată Formular"; +$LANG["phrase_size_large"] = "Large (text)"; +$LANG["phrase_size_medium"] = "Mediu (<= 256 caractere)"; +$LANG["phrase_size_small"] = "Mici (<= 20 caractere)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 caractere)"; +$LANG["phrase_size_very_large"] = "Foarte mari (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Treci Field"; +$LANG["phrase_skip_step"] = "Pasul Treci"; +$LANG["phrase_small_100px"] = "Mici (100px)"; +$LANG["phrase_small_80px"] = "Mici (80px)"; +$LANG["phrase_smart_fill"] = "Inteligentă de umplere"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart domenii de umplere de la:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Completaţi utilizator Documentaţie »"; +$LANG["phrase_sort_as"] = "După cum"; +$LANG["phrase_special_fields"] = "Domenii speciale"; +$LANG["phrase_standard_fields"] = "Standard Domenii"; +$LANG["phrase_standard_filters"] = "Standard Filtre »"; +$LANG["phrase_step_1"] = "Pasul 1"; +$LANG["phrase_step_2"] = "Pasul 2"; +$LANG["phrase_step_3"] = "Pasul 3"; +$LANG["phrase_step_4"] = "Pasul 4"; +$LANG["phrase_step_5"] = "Pasul 5"; +$LANG["phrase_step_6"] = "Pasul 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Tag-uri Gaza în completarea de formulare"; +$LANG["phrase_subject_line"] = "Subiect Line"; +$LANG["phrase_submission_date"] = "Data Submission"; +$LANG["phrase_submission_id"] = "Prezentarea ID-ul"; +$LANG["phrase_submission_made"] = "Depunerea făcut: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Depunerea de tip"; +$LANG["phrase_submissions_per_page"] = "Subscrieri pe pagina"; +$LANG["phrase_system_check"] = "Sistemul de Check"; +$LANG["phrase_system_fields_no_validation"] = "Nu aveţi dreptul să adăugaţi validare la câmpurile de sistem."; +$LANG["phrase_system_time_offset"] = "Sistemul de Time Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test permisiuni de folder"; +$LANG["phrase_test_submission"] = "Depunerea de testare"; +$LANG["phrase_test_submission_3"] = "3. Depunerea de testare"; +$LANG["phrase_test_submission_received"] = "Test Prezentarea Primit"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "Textul e-mail"; +$LANG["phrase_text_template"] = "Text Format"; +$LANG["phrase_the_previous_month"] = "Faţă de luna precedentă"; +$LANG["phrase_theme_description"] = "Tema Descriere"; +$LANG["phrase_theme_info"] = "Tematica Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Rezultate Total:"; +$LANG["phrase_type_c"] = "Tipul de eroare:"; +$LANG["phrase_unselect_all"] = "Unselect Toţi"; +$LANG["phrase_update_accounts"] = "Conturi Update"; +$LANG["phrase_update_email_template"] = "Actualizare de e-mail Format"; +$LANG["phrase_update_field"] = "Update Field"; +$LANG["phrase_update_order"] = "Actualizarea comenzii"; +$LANG["phrase_update_view"] = "Update Vezi"; +$LANG["phrase_upload_file"] = "Upload File"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Calea de încărcare pliant"; +$LANG["phrase_upload_folder_url"] = "Incarca dosarul URL-ul"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Utilizaţi Valoare implicită?"; +$LANG["phrase_used_by_num_form_fields"] = "Folosit de # Formular Domenii"; +$LANG["phrase_uses_swatches"] = "Utilizeaza Specimene"; +$LANG["phrase_valid_email"] = "E-mail valid"; +$LANG["phrase_validation_error"] = "Eroare de validare"; +$LANG["phrase_validation_rule"] = "Norma de validare"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Vezi Group"; +$LANG["phrase_view_id"] = "Vezi ID-ul"; +$LANG["phrase_view_name"] = "Denumire Vizualizare"; +$LANG["phrase_view_placeholders"] = "Vezi substituenţi"; +$LANG["phrase_view_submissions"] = "Trimiteri Vizualizare"; +$LANG["phrase_view_uploaded_files"] = "Vedere încărcat fişiere"; +$LANG["phrase_viewing_range"] = "[vizionare {\$startnum} pentru {\$endnum}]"; +$LANG["phrase_when_sent"] = "Atunci când sunt trimise"; +$LANG["phrase_when_submission_is_deleted"] = "Atunci când depunerea se elimină"; +$LANG["phrase_when_submission_is_edited"] = "Atunci când prezentarea este editată"; +$LANG["phrase_who_can_access"] = "Cine poate accesa?"; +$LANG["phrase_word_limit_p"] = "limită de cuvânt."; +$LANG["phrase_year_to_date"] = "An până în prezent"; +$LANG["phrase_yes_for_all_views"] = "Da, pentru toate Vizualizari"; +$LANG["phrase_yes_for_specific_views"] = "Da, pentru Vizualizari specifice de"; +$LANG["phrase_your_account"] = "De cont"; +$LANG["phrase_your_email"] = "Email-ul dvs."; +$LANG["phrase_your_email_address"] = "Adresa ta de e-mail"; +$LANG["processing_form_disabled"] = "Ne pare rău, această formă a fost dezactivat."; +$LANG["processing_form_incomplete"] = "Ne pare rău, acest formular nu pare a fi pe deplin constituit din interiorul Formular de Instrumente. Cauza cea mai probabilă a acestei probleme este că aţi îndepărtat form_tools_initialize_form "câmpul" ascunse forma, dar nu au completat toate etapele de "Adaugă formular" proces.

    Va rugam logati-şi revizuirea formularul de configurare."; +$LANG["processing_init_complete"] = "Mulţumesc! Prezentarea dvs. de test a fost pus prin succes. Vă rugăm să reveniţi la Tools Forma Administration Panel şi faceţi clic pe "Refresh" butonul din partea de jos a formularului Adauga Pasul 3 de start, pentru a termina setarea formularul de dumneavoastră."; +$LANG["processing_invalid_form_id"] = "Ne pare rău, acest lucru nu pare a fi un act de identitate valabil formular."; +$LANG["processing_no_form_id"] = "prelucrare.php necesită o forma ID-ul pentru prelucrare. Asiguraţi-vă că formularul conţine un câmp ascuns cu numele de "form_tools_form_id", care a trece de-a lungul forma ID-ul."; +$LANG["processing_no_form_url_for_recaptcha"] = "Formular de Instrumente nu este în măsură să determine în cazul în care să redirecţioneze atunci când nu reuşesc să intre în mod corespunzător CAPTCHA. Vă rugăm să treci într-un câmp ascuns cu form_tools_form_url nume care conţine URL-ul a formularului."; +$LANG["processing_no_post_vars"] = "prelucrare.php nu primeşte nici de date. Notă: acest script nu pot fi încărcate direct în browser-ul dumneavoastră.
    Asiguraţi-vă că formularul este de a trimite prin posta."; +$LANG["processing_no_redirect_url"] = "Prezentarea a fost procesat corect, dar nu aţi specificat o adresă URL de redirecţionare pentru acest formular! Editare forma dvs. în Instrumente Forma UI şi adăugaţi adresa URL de redirecţionare."; +$LANG["special_language"] = "Romanian"; +$LANG["special_language_locale"] = "Romanian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Toate conturile de client nou va fi creat cu setările şi permisiunile definite mai jos. Pentru a trece peste o setare pentru un client special, edita contul clientului şi vizitaţi fila Setări lor."; +$LANG["text_add_form_choose_integration_method"] = "Alegeţi metoda care doriţi să o utilizaţi pentru a integra formular cu Instrumente formular."; +$LANG["text_add_form_code_submission_benefits"] = "Această metodă utilizează formularul Instrumente API , incluse în script-ul principal Formularul de Instrumente. API oferă o serie de funcţii utile pentru a face munca de integrare formular cu Tools formular cât mai simplu posibil. Nu există restricţii la modul în formular pot fi transmise atunci când utilizaţi API. Puteţi trimite conţinutul într-un du-te, sau pagina cu pagina, puteţi adăuga propriile personalizat server-side de validare, imagini CAPTCHA, puteţi alege să prezinte informaţiile acum, ci doar spune pentru a afişa prezentarea în formularul Instrumente UI la o dată ulterioară (a se vedea finalizate trimise secţiune în documentaţia de ajutor API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "În scopul de a transmite datele de formular prin intermediul PHP, formularul trebuie să fie situate pe acelaşi site ca acest formular Instrumente de instalare. În al doilea rând, pentru non-tehnice şi novice Formă Instrumente de utilizatori, aceasta metoda poate fi un pic intimidant la început. Dar exista o multime de documente care sa te ajute, inclusiv două tutoriale simple pentru integrarea formularele single-şi multi-pagina (acestea sunt legate de pe-o etapă ulterioară)."; +$LANG["text_add_form_direct_submission_benefits"] = "Acesta este cel mai simplu mod de a trimite formularul de la formularul Tools. Aceasta nu are nevoie de nici cunostinte de PHP si necesita doar o schimbare foarte mici, pentru a forma dumneavoastră. Este grozav pentru forme mai mici, în cazul în care doriţi să prezinte doar informaţii către baza de date apoi redirecţionaţi utilizatorul la o multumesc "" pagină."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Această metodă de depunere este foarte simplu de folosit, dar nu asigura un control mult pentru mai multe forme complicate. Multi-forme de start, sau alte forme care necesită server-validare secundare sunt mai potrivite pentru a doua metodă: prezentarea, prin intermediul Instrumente Formular API."; +$LANG["text_add_form_field_types1"] = "Aproape gata! Această pagină încearcă să găsească toate câmpurile formular şi să determine tipurile de domeniul lor. Faceţi clic pe butonul inteligent de umplere de pe dreaptă pentru a începe. Veti fi permis numai să procedeze atunci când toate acţiunile au fost rezolvate - probleme care au nevoie de atenţia dvs. să apară în "de acţiune necesare " coloana."; +$LANG["text_add_form_field_types2"] = "Dacă formularul nu este în format HTML, faceţi clic pe butonul Pasul Treci la a continua. Acest lucru poate fi configurat mai târziu."; +$LANG["text_add_form_field_types3"] = "Acest reîncarcă conţinutul formular (e). Notă: acest lucru va suprascrie orice modificări pe care le-au făcut pe această pagină."; +$LANG["text_add_form_field_types4"] = "În cazul în care aveţi o o problemă, faceţi clic aici pentru a săriţi peste acest pas. Toate câmpurile nerezolvate sunt setate pentru a utiliza valorile implicite. Puteţi personaliza aceste domenii mai târziu."; +$LANG["text_add_form_field_types_manual_upload"] = "Dacă aţi fost în imposibilitatea de a inteligent Completaţi câmpurile dumneavoastră, poate doriţi să încercaţi o soluţie alternativă: încărcaţi copii ale formularelor dumneavoastră în câmpurile de mai jos."; +$LANG["text_add_form_field_types_manual_upload2"] = "Notă: Nu încărcaţi pagini brut PHP (sau alt server-side code) - încărcaţi doar versiunile HTML. Pentru a obţine acest lucru, a vizualiza şi salva pagina de browser-ul dumneavoastra."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Au fost mai multe câmpuri care nu au putut fi găsite în pagina de forma le-aţi specificat. Acest lucru se datorează probabil cauzată de una dintre următoarele:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Aţi introdus una sau mai multe dintre URL-urile sub formă de multi-pagina formă incorect."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Una sau mai multe pagini de formular sunt protejate cu parolă şi script-ul nu a putut accesa pagina."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Aţi introdus incorect adresa URL formular."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Click aici pentru a reveni la pagina de informaţii fac pentru a verifica setările."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Ai schimbat formular (e) după efectuarea depunerii de încercare"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Click aici pentru a pune printr-o alta prezentare de testare."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Formularul dumneavoastră este protejată cu parolă şi script-ul nu a putut accesa pagina."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Într-o altă filă / fereastră de acest browser, jurnal în formular, apoi faceţi clic pe butonul de reîmprospătare a paginii de mai jos pentru a încerca să re-găsi domeniile."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Dacă niciuna dintre soluţiile de mai sus de muncă, poate doriţi, de asemenea, să încercaţi încărcarea manual formularele pentru prelucrare ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Au fost mai multe câmpuri care nu au putut fi găsit în paginile să formeze le-aţi specificat. Acest lucru se datorează probabil cauzată de una dintre aceste:"; +$LANG["text_add_form_help_link"] = "Dacă executaţi în orice probleme în timpul acestor paşi, încercaţi să citiţi din documentaţia de utilizare ."; +$LANG["text_add_form_step_1_text_1"] = "Următoarele pagini vă conduc prin paşi pentru a configura Formular de Instrumente pentru a stoca completarea de formulare dumneavoastră. Înainte de a continua, vă rugăm să verificaţi că:"; +$LANG["text_add_form_step_1_text_2"] = "formularul de dvs. a fost deja creat şi este accesibil prin intermediul unui URL (localhost este bine)"; +$LANG["text_add_form_step_1_text_3"] = "sunt capabile să editaţi formularul dvs."; +$LANG["text_add_form_step_2_para_2"] = "Deschideţi formularul de dvs. într-un editor de alegere şi modificaţi tag-ul dvs. de formular pentru a urma, inclusiv cele două domenii ascunse."; +$LANG["text_add_form_step_2_para_3"] = "Apoi, deschideţi formularul într-un browser web. Completaţi în fiecare domeniu şi îl prezintă. După trimiterea, ar trebui să vedeţi un mesaj de notificare. Odată ce acest mesaj este afişat, reveniţi la această pagină şi faceţi clic pe butonul de refresh de mai jos. Atunci când acest proces este completă, veţi vedea o continua butonul de mai jos, ţinându-vă la pasul următor."; +$LANG["text_add_form_step_2_para_6"] = "În formularul de depunere dvs., să includă următoarele valori. Acestea pot fi stabilite în mod direct, prin intermediul PHP, sau de-a lungul a trecut prin formularul de sine. Mai jos sunt exemple de fiecare. \$ (Varname) este un hash (sau tablou asociativ) a tuturor informaţiilor formularul de prezentare - aceasta este, de obicei \$ (postvar) sau (\$ sessionvar) variabilă, dar poate fi personalizat construit."; +$LANG["text_add_form_step_2_text_2"] = "Introduceţi URL-ul dvs. "Multumesc ", pagina aici. Acest lucru este în cazul în care doriţi ca oamenii să fie îndreptate către după formularul a fost depus."; +$LANG["text_add_form_step_3_para_1"] = "Această pagină listează toate câmpurile din formularul de depunere dumneavoastră. Vă rugăm să examineze fiecare domeniu şi de a elimina orice care nu aveţi nevoie de stocate pentru fiecare prezentare. Dacă ştergeţi un câmp valabil de accident, sau doresc să schimbe informaţii stocate de către formular, a reveni la pagina anterioară pentru a trimite o prezentare nouă încercare."; +$LANG["text_add_form_step_3_para_2"] = "Notă: dacă sunteţi trimiterea valori multiple prin intermediul casetele de selectare sau de un sistem multi-cutie selectaţi, asiguraţi-vă că numele dvs. de domeniu se termină cu [] caractere (a se vedea documentaţia pentru utilizator pentru mai multe informaţii)."; +$LANG["text_add_form_step_3_text_1"] = "Iată unde incepe distractia! În acest moment, Instrumente de formular este de aşteptare pentru o prezentare de testare din formular. Acesta va folosi acest formular depunerea să ştie ce informaţii ar trebui să fie stocate în baza de date."; +$LANG["text_add_form_step_3_text_2"] = ", accesând formular la formularul Tools"; +$LANG["text_add_form_step_3_text_3"] = "folosind formularul de Instrumente API"; +$LANG["text_add_form_step_3_text_4"] = "Pentru a ajuta la integrarea formularul dvs., vă sugerăm să citiţi unul din tutoriale următoarele:"; +$LANG["text_add_form_step_3_text_5"] = "Ei explica cum să înfiinţeze forma dumneavoastră în curs de pregătire pentru depunerea de testare, şi să includă alte informaţii care pot fi de ajutor. Linia de PHP veţi avea nevoie este:"; +$LANG["text_add_form_step_3_text_6"] = "Acest lucru asigură de date este, de fapt trimis la formularul Tools. După ce aţi pus prin prezentarea de încercare, faceţi clic pe butonul de mai jos dumneavoastră."; +$LANG["text_add_form_step_3_text_7"] = "Pe PREALABILĂ pagină pentru a-ul final "mulţumesc" pagină, asiguraţi-vă că pentru a adăuga parametrul următor la variabila \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Baza de date a fost stabilit de până la această formă şi forma a fost activat pentru utilizare. Dacă aţi făcut prezentarea de către subliniind formular pentru a prelucrare.php, vă rugăm să reveniţi la forma si elimina domeniul următoarele ascunse:"; +$LANG["text_add_form_step_5_para_2"] = "Apoi, vizita dumneavoastră "mulţumesc" de start, pentru a goli sesiuni. Odată ce se face acest lucru, toate propunerile de noi formular vor fi prelucrate şi depozitate în formularul Tools. Încercaţi a face o prezentare sau două, pentru a verifica informaţiile sunt toate încãrcat în mod corect."; +$LANG["text_add_form_step_5_para_3"] = "Dacă doriţi să ajustaţi formularul pentru opţiuni, cum ar fi auto-email, adăugarea de câmpuri domeniul suplimentare sub formă, sau personalizarea tipuri de formularul de câmp, puteţi edita formularul dumneavoastră în orice punct."; +$LANG["text_add_form_step_5_para_4"] = "Deoarece formularul dvs. conţine fişierul câmpuri de încărcare, va trebui să configuraţi fiecare câmp pentru a specifica folderul de încărcare de fişiere, ce fişiere sunt permise şi. Acest lucru poate fi găsită pe fila Afişare din pagina de editare formular."; +$LANG["text_add_form_step_5_para_5"] = "În cazul în care depunerea a fost trimis, prin intermediul API, schimbaţi linia ft_api_init_form_page pe prima pagină a formularului dvs. de la:"; +$LANG["text_add_submission_button"] = "Butonul Prezentarea Adaugă apare numai pentru Vizualizari care au "mai adăuga observaţiile " opţiunea prevăzută la "da "."; +$LANG["text_admin_email_placeholder_info"] = "Aceasta este adresa de e-mail a Instrumente Formular de administrator, definite în setările contului dumneavoastră. Acest lucru doar rezultatele adresa de e-mail, deci, dacă doriţi să folosiţi ca link-ul HTML, va trebui să-şi încheie într-un tag <a>, astfel:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(De asemenea, implicit de conectare tema pagină)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "În primul rând, vă rugăm să alegeţi tipul de formular."; +$LANG["text_client_form_page"] = "Această pagină afişează toate formele şi Vizualizari alocat pentru acest client. Sfat: pentru ca acestea pentru a vedea observaţiile o formă a lui, ei trebuie să fie alocat pentru cel puţin o vedere."; +$LANG["text_client_map_filters_desc1"] = "Filtre de clienti Harta vă permit să limiteze observaţiile care apar în acest punct de vedere de cartografiere valorile într-un câmp formular pentru a valorilor într-un cont de client."; +$LANG["text_client_no_forms"] = "În prezent nu aveţi formulare disponibile pentru revizuire."; +$LANG["text_client_welcome"] = "Bun venit! Acest program de stochează toate informaţiile furnizate de vizitatorii site-ului dumneavoastră. Pentru a vizualiza cereri pentru o anumită formă doar să faceţi clic pe link-ul vizualiza sau a se vedea meniul de cel mai din stânga de navigare pentru alte opţiuni."; +$LANG["text_config_file_created"] = "Fişierul dvs. config.php a fost creat."; +$LANG["text_config_file_not_created"] = "Nu am putut crea fişierul dvs. config.php. Veţi avea nevoie pentru a crea fisierul manual."; +$LANG["text_config_file_not_created_instructions"] = "Copiaţi şi inseraţi conţinutul din secţiunea de mai jos într-un fişier numit config.php şi încărcaţi-l prin intermediul FTP pentru a Tools Forma / folderul globale (folderul care conţine, de asemenea, alte câteva fişiere şi directoare, un fisier numit library.php)."; +$LANG["text_confirm_delete_form"] = "Da, vreau să ştergeţi acest formular"; +$LANG["text_create_admin_account"] = "Acum vom pentru a crea contul de administrator. Acest lucru este utilizat pentru gestionarea tuturor aspectelor legate de formular Tools, cum ar fi adăugarea forme şi crearea de conturi de client."; +$LANG["text_create_new_client_account"] = "Folosiţi formularul de mai jos pentru a crea un cont de client nou. Toate câmpurile sunt obligatorii."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "a se vedea PHP {\$datefunctionlink} funcţie de opţiuni de formatare a"; +$LANG["text_default_file_settings_page"] = "Această pagină defineşte setările de încărcare de fişiere pentru instalarea dvs. Formular de Instrumente. Aceste norme se aplică la toate fişierele încărcate prin intermediul formularului de Instrumente, cu excepţia cazului în mod explicit suprascrisă pentru un câmp formular individuale. Notă: dacă modificaţi folderul de încărcare după ce fişierele au fost încărcate, acestea vor fi mutate automat în noul folder."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Înainte de a continua, va trebui să actualizaţi teme dvs. / / default / folderul cache pentru a permite plin citească şi să scrie permisiunile. Odată ce se face acest lucru, acest mesaj va dispărea şi puteţi instala script-ul."; +$LANG["text_default_values_in_view"] = "Această secţiune este opţională. Toate observaţiile create cu această Vezi va conţine valorile implicite specificate aici."; +$LANG["text_delete_all_forms"] = "Vreau să ştergeţi toate fişierele care au fost încărcate prin intermediul acestui formular"; +$LANG["text_delete_form_warning"] = "Sunteţi sigur că doriţi să ştergeţi acest formular? Această acţiune nu poate fi anulată. Toate datele vor fi pierdute definitiv!"; +$LANG["text_edit_admin_menu_page"] = "Puteţi edita meniul de mai jos. Pentru a vă asigura că au întotdeauna acces la toate funcţionalitate disponibile în cadrul Formular de Instrumente, paginile sunt necesare următoarele: Forme, Clienti, dvs. de cont, Module, Settings şi Deconectare."; +$LANG["text_edit_client_menu_page"] = "Această secţiune vă permite să particularizaţi coloana din stânga de navigare pentru fiecare utilizator. Puteţi crea cât de multe meniuri client după cum doriţi şi să alocaţi orice cont la unul dintre ei. În mod implicit, există două meniuri: unul pentru tine, de administrator, şi unul pentru toţi conturi de client. Cont de administrator pot fi modificate, dar nu a înlăturat."; +$LANG["text_edit_tab_summary"] = "Dacă doriţi să grupaţi câmpuri acest Vezi în tab-uri, doar să introduceţi numele tab-ul de mai jos. După ce aţi terminat, selectaţi fila corespunzătoare pentru fiecare grup de câmp în fila Domenii ."; +$LANG["text_edit_view_list_page"] = "Acest controale de tab, care apar ca domenii coloane pe pagina Listarea Depunerea, si cateva setari suplimentare pentru acele câmpuri. Notă: vă recomandăm să adăugaţi nu mai mult de 4 sau 5 din cele mai importante domenii în Vizualizare."; +$LANG["text_email_settings_intro"] = "Această pagină vă permite să identifice care dintre e-mailuri formular câmpuri stoca şi numele lor corespunzătoare. Odată ce aţi defini-le aici, aveţi posibilitatea să le utilizeze în adresa dvs. de email şabloane ca destinatari. Această secţiune este în întregime opţională."; +$LANG["text_email_tab_summary"] = "Această secţiune vă permite să construiască orice număr de email-uri pentru a fi trimis ori de câte ori este prezentat formularul dvs., şi alte declanseaza."; +$LANG["text_email_template_tab"] = "Această secţiune vă permite să determine ce conţinut apare în e-mail. Dacă doriţi să trimiteţi un e-mail ca numai text sau e-mail, numai introduceţi o valoare pentru această secţiune. Dacă introduceţi o valoare pentru ambele, e-mail va fi trimis în ambele formate."; +$LANG["text_email_template_text_1"] = "Nu a fost o prezentare făcută prin intermediul formularului de dvs., {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Nu a fost o prezentare făcută prin intermediul formularului de dvs., {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Vă mulţumim pentru depunerea dvs.!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Mesaj de eroare pentru a afişa în cazul în care câmpul nu de validare"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Formele exterioare sunt forme care exista deja pe site-ul dvs., sau undeva pe web. Selectaţi această opţiune dacă aveţi formularul ta pe care doriţi să se integreze cu instrumente formular."; +$LANG["text_fields_tab_summary"] = "Această pagină listează toate câmpurile din formular. Pentru a controla modul în care acestea apar atunci când observaţiile navigare, a se vedea fila Vizualizări . Ştergerea unui câmp de pe aceasta pagina va şterge din toate observaţiile, vă rugăm să fii atent!"; +$LANG["text_file_extension_info"] = "Introduceti dosar extensii separate prin virgule (de exemplu, JPG, GIF, PNG) sau lăsaţi gol pentru a permite oricărui tip de fişier."; +$LANG["text_file_field_placeholders_info"] = "Domeniile de fişiere au două substituenţi speciale: =FILEURL şi numele fişierului. FILEURL este URL-ul complet la dosar, astfel încât să puteţi link-ul direct la ea în mesajele de poştă electronică; FILENAME este doar numele fişierului."; +$LANG["text_filters_page"] = "Numai acele propunerile care îndeplinesc normele pe care o definiţi mai jos vor apărea în această vizualizare."; +$LANG["text_filters_tips"] = "Pentru sfaturi privind modul de utilizare filtre de depunere, a se vedea documentaţia pentru utilizator."; +$LANG["text_forgot_password"] = "Nici o problemă. Doar introduceţi numele dvs. de utilizator de mai jos şi informaţiile dvs. de conectare va fi trimis la adresa dvs. de email pe dosar. Dacă v-aţi uitat numele de utilizator, vă rugăm să e-mail administratorul site-ului de la {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Acest formular conţine unul sau mai multe domenii de încărcare fişier:"; +$LANG["text_form_placeholder_info"] = "Substituenţii următoare pot fi utilizate în orice şablon de e-mail şi domeniul lingvistic substituent, indiferent de orice Vezi şablonul de e-mail este atribuit. Substituenţii cauză sunt la întrebarea forma specifică; substituenţii RĂSPUNS sunt răspunsurile la fiecare întrebare."; +$LANG["text_form_submission_date_placeholder"] = "Data de depunere a fost făcută."; +$LANG["text_form_tools_form_url"] = "URL-ul complet de forma. Acest lucru are doar o valoare pentru forme externe."; +$LANG["text_form_tools_login_url"] = "URL-ul de conectare pentru formularul Tools."; +$LANG["text_form_view_permission_info_admin"] = "Nota: acest formular are în prezent acces de tip administrator, astfel încât nici unul dintre conturile client va putea vedea acest topic."; +$LANG["text_form_view_permission_info_private"] = "Nota: acest formular are în prezent, tipul de acces, astfel privare de opţiunile de publice şi private, aici va fi limitată la faptul că subset de clienti."; +$LANG["text_ft_installed"] = "Felicitări, Forma Tools a fost instalat cu succes!"; +$LANG["text_global_placeholder_info"] = "Aceste substituenţi pot fi utilizate în orice şablon, precum şi orice formă."; +$LANG["text_group_name_explanation"] = "Pentru câmpuri adăugată prin intermediul Adauga in procesul de formular, această valoare este pre-umplută a textului de afişare a oricare ar fi domeniul utilizează valoarea. Aţi putea să îl modificaţi către o mai bună caracteriza conţinutul."; +$LANG["text_install_create_config_file"] = "Formular de magazine Instrumente server-ul dvs. şi setările în baza de date într-un fişier numit config.php, găsite în Global dvs. / / folder. Faceţi clic pe "Creaţi fişiere" buton pentru a genera automat fisierul de pe server."; +$LANG["text_install_create_database_tables"] = "Acum vom crea Formular de tabele Instrumente bază de date. Acest pas necesită o baza de date în sine pentru a au fost deja create. Dacă nu sunteţi sigur cum să faceţi acest lucru, vă rugăm să contactaţi furnizorul dvs. de găzduire."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL server gazdă", de obicei, înseamnă că numele de host-aţi furnizat este incorect. Poate că acest lucru să încercaţi să setaţi "localhost" - aceasta este o cale comună pentru a se referi la "locale" în baza de date pe un server web."; +$LANG["text_install_db_tables_error_tip_2"] = ""Nu se poate conecta la serverul local MySQL prin intermediul socket" înseamnă câmpul nume de gazdă este din nou baza de date incorecte."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" înseamnă că există o problemă cu numele de utilizator / parola combinaţie."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... la baza de date ..." înseamnă că, deşi numele de utilizator şi parola furnizate sunt corecte, nu a putut să se conecteze la baza de date special cu acel cont. Acest lucru poate însemna că, fie numele tău în baza de date este incorect, sau că acest cont de utilizator nu este asociată cu faptul că în baza de date."; +$LANG["text_install_email_content_text"] = "Există o mulțime de resurse pe site-ul nostru pentru a vă ajuta să începeți, inclusiv documentația noastră online (https://docs.formtools.org) și tutoriale (https://docs.formtools.org/tutorials). Dacă găsiți că vă blocați sau aveți o întrebare, adresați-vă o întrebare despre github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Ne pare rău, Instrumente formular nu vor fi capabile să ruleze pe server. Vă rugăm daţi click aici pentru cerinţele minime."; +$LANG["text_install_system_check"] = "Această pagină opereaza un teste de câteva în sistemul dvs. pentru a se asigura este capabil să ruleze Instrumente formular."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Forme de interne există doar în cadrul Unelte Formă - nu în altă parte pe site-ul dvs.. Numai Instrumente Formular conturi de utilizator va avea acces la formularul. Selectaţi această opţiune dacă nu aveţi un formular existent."; +$LANG["text_internal_form_intro"] = "Folosiţi formularul de mai jos pentru a crea o noua forma internă. Toate setările, inclusiv numărul şi conţinutul câmpurilor de formular poate fi configurat fi schimbat şi mai târziu."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "În scopul de a login şi de a folosi instrumente formular, trebuie să aveţi javascript activat în browser-ul dumneavoastră. Vă rugăm să îi permită acum, şi faceţi clic pe Reîmprospătare în browser-ul dumneavoastră."; +$LANG["text_last_modified_date_explanation_c"] = "Ultima dată când această prezentare a fost modificat. Pentru depuneri noi, aceasta este la fel ca:"; +$LANG["text_limit_email_content_desc"] = "Această opţiune funcţionează numai pentru HTML si continutul generat de text cu bucle Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(numai listele de opinii cu unul sau mai multe filtre definite)"; +$LANG["text_log_in_to_ft"] = "Conectaţi-vă la Formular de Instrumente"; +$LANG["text_login"] = "Vă rugăm să intraţi în jos pentru a accesa \$ (Nume_program) Administrare Panel. Dacă aţi uitat parola, click aici."; +$LANG["text_login_info"] = "Aşa cum a solicitat, aici este informaţiile dvs. de conectare."; +$LANG["text_name_of_form"] = "Numele de forma."; +$LANG["text_no_clients"] = "Momentan nu sunt clienti in baza de date. Pentru a adăuga un cont de client nou, faceţi clic pe butonul Add Client de mai jos."; +$LANG["text_no_clients_found"] = "Nici un client nu s-au găsit. Incearca a extinde criteriile de căutare."; +$LANG["text_no_fields_in_view"] = "Acest punct de vedere nu are nici un câmpuri în ea. Faceţi clic pe link-ul de mai jos."; +$LANG["text_no_forms"] = "Momentan nu sunt forme în baza de date. Pentru a adăuga o nouă formă, faceţi clic pe butonul Add formularul de mai jos."; +$LANG["text_no_forms_found"] = "Nu s-au găsit forme."; +$LANG["text_no_forms_found_search"] = "Nu s-au găsit forme. Încercaţi extinderea criteriile de căutare."; +$LANG["text_no_modules_found"] = "Nu module au fost găsite. Incearca a extinde criteriile de căutare."; +$LANG["text_no_recipients_added"] = "Nu destinatarii au fost adăugate."; +$LANG["text_no_search_results"] = "Nu exista rezultate cu acest criteriile de căutare / View."; +$LANG["text_no_submissions_found"] = "Ne pare rău, nu observaţiile s-au găsit."; +$LANG["text_no_themes"] = "Nu aveţi nici un teme definite. Faceţi clic pe butonul de mai jos pentru a actualiza lista de temă, sau verificaţi documentaţia Formular ghidul de Instrumente pentru informaţii despre adăugarea teme."; +$LANG["text_non_deletable_fields"] = "Acest câmp este folosit de către script-ul Core şi nu pot fi editate sau şterse fără a cauza incompatibilităţilor. Dacă doriţi să efectuaţi modificări tip de câmp, faceţi o copie a acesteia şi a edita copia."; +$LANG["text_option_list_group_explanation"] = "Dacă aceasta este selectată, ea permite în grupul opţiunile. Cum grupurile sunt afişate depinde de tipul de teren folosind această listă opţiune."; +$LANG["text_option_list_page"] = "Butoane radio, casetele, dropdowns şi multi-selectaţi câmpurile vertical furnizează toate ghidul cu opţiuni multiple de la care se pot selecta unul sau mai multe elemente. În Instrumente formular, acestea sunt cunoscute ca liste de opţiuni. În general, acestea sunt create automat de către Adaugă forma exterioară proces, dar aveţi posibilitatea să adăugaţi manual sau edita liste de optiunea de mai jos dacă modificările de conţinut formular sau vă construi câmpuri care sunt folosite numai intern."; +$LANG["text_option_list_used_by_fields"] = "Aceasta lista de optiuni este utilizat de mai multe câmpuri de formular. Dacă vă actualizaţi informaţiile de mai jos, acesta va fi schimbat pentru toate domeniile (a se vedea Formularul Domenii fila pentru a vedea lista de câmpuri). Dacă doriţi să vă actualizaţi valorile pentru una, sau un subset dintre domeniile care sunt în prezent alocate, click aici pentru a crea o lista de opţiuni nou cu aceleaşi valori ca aceasta. Apoi, aveţi posibilitatea să atribuiţi câmpurile de formular pe care doriţi să noul grup."; +$LANG["text_public_form_omit_list_page"] = "Forme publică vă oferă avantajul de a lasa toate conturile de client fără a avea acces la ele pentru a atribui manual fiecare client la ele. Această pagină vă permite să cunoască aceşti clienţi, care nu pot accesa acest formular, chiar dacă formularul este marcat ca fiind publice."; +$LANG["text_public_view_omit_list_page"] = "Vizite publică vă oferă avantajul de a lasa toate conturile de client fără a avea acces la ele pentru a atribui manual fiecare client la ele. Această pagină vă permite să cunoască aceşti clienţi, care nu pot accesa acest punct de vedere special."; +$LANG["text_reference_tab_info"] = "Această pagină listează toate substituenţi disponibile pentru formular. Substituenţi sunt siruri de caractere care pot fi utilizate în şabloane de e-mail, şi câmpurile marcate cu o pictogramă substituent de construcţii . Atunci când a intrat într-un câmp, acestea sunt dinamic convertite la valoarea corespunzătoare, atunci când câmpul este vizualizat sau e-mail este trimis."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Recenzie de utilizator documentaţia"; +$LANG["text_send_email_from_edit_submission_page"] = "Includeţi opţiunea de a trimite acest email de la pagina Editare Submission"; +$LANG["text_smart_fill_option_list_problem"] = "Nu am reuşit să inteligent Completaţi opţiunile de câmp. Cu toate acestea, ca o alternativă, puteţi încerca să încărcaţi o copie a paginii formular in campul de mai jos. Notă: Nu încărcaţi pagini brut PHP (sau alt server-side code) - încărca doar versiunea HTML. Pentru a obţine acest lucru, a vizualiza şi salva pagina de browser-ul dumneavoastra."; +$LANG["text_submission_ip_address"] = "Adresa IP a utilizatorului care a facut prezentarea."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Folosiţi formularul de mai jos, fie pentru a vizualiza sau trimite un e-mail-te generate de la acest e-mail şablon. E-mail este trimis doar la adresa de email specificată de mai jos; principal, CC şi CCA destinatarii adresa de e-mail sunt ignorate în timpul testării."; +$LANG["text_test_email_templates_no_submissions"] = "În scopul de a testa un e-mail template-uri, trebuie să vă pună mai întâi prin depunerea formularului de cel puţin unul."; +$LANG["text_theme_page_intro"] = "Această pagină afişează toate de teme dumneavoastră. Faceţi clic pe o miniatură pentru a vedea un exemplu mai mare de stiluri tema lui. "Permis" caseta de selectare determină dacă sunt sau nu această temă poate fi selectate de către clienţi. Pentru a parcurge toate temele disponibile, vizitaţi site-ul web Formular de Instrumente."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Adăugarea formularul de prima ta!"; +$LANG["text_unique_submission_id"] = "Depunerea de identificare unic."; +$LANG["text_unused_option_list"] = "Această listă opţiune nu este utilizat de către orice câmpuri de formular."; +$LANG["text_upgraded"] = "De instalare dvs. a fost actualizat la {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Aceasta lista de optiuni este utilizat de către următoarele domenii."; +$LANG["text_view_fields_info"] = "Această filă controalele care câmpuri arată până la editarea unei cereri în acest topic, ordinea lor şi dacă acestea sunt editabile sau nu."; +$LANG["text_view_tab_summary"] = "Această filă vă permite să creaţi modalităţi diferite de grupare şi a aranja datele. Vizualizări vă permit să creaţi subseturi de date particularizate formular pentru a împărţi în bucăţi de gestionat, şi pentru a limita ceea ce clientii pot vedea sau edita."; +$LANG["validation_account_disabled"] = "Ne pare rău, contul dvs. a fost dezactivat."; +$LANG["validation_account_not_recognized"] = "Ne pare rău, că numele de utilizator nu este recunoscut."; +$LANG["validation_account_not_recognized_info"] = "Ne pare rău, că numele de utilizator nu a fost găsit. Vă rugăm să încercaţi din nou, sau contactati administratorul site-ului, la adresa de mai jos."; +$LANG["validation_account_pending"] = "Contul de utilizator este în aşteptarea aprobării de către un administrator."; +$LANG["validation_check_delete_client"] = "Sunteţi sigur că doriţi să ştergeţi acest cont de client?"; +$LANG["validation_client_password_missing_number"] = "Parola clientului trebuie să conţină cel puţin o cifră (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Parola clientului trebuie să conţină cel puţin una din următoarele caractere: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Parola clientului trebuie să conţină cel puţin o literă majusculă."; +$LANG["validation_client_password_too_short"] = "Parola clientului trebuie să fie de cel puţin ( \$ număr) caractere."; +$LANG["validation_col_name_is_reserved_word"] = "Ne pare rău, acest nume în baza de date coloană este o lucrare rezervată în MySQL. Vă rugăm să redenumiţi-o!"; +$LANG["validation_db_name"] = "Numele de bază de date nu pot conține perioade sau tăieturi."; +$LANG["validation_db_not_updated_invalid_input"] = "Baza de date nu a putut fi actualizat. Vă rugăm să verificaţi pentru a vedea valorile le-aţi introdus sunt valide."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Ne pare rău, administratorul implicit şi teme de clientul trebuie să fie întotdeauna activat."; +$LANG["validation_default_phone_num_required"] = "Vă rugăm să completaţi numărul de telefon complet pentru <b> { \$ domeniul} </ b> - numai numere."; +$LANG["validation_default_rule_alpha"] = "Vă rugăm să introduceţi doar litere şi numere pentru <b> { \$ domeniul} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Vă rugăm să introduceţi doar litere pentru <b> { \$ domeniul} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Vă rugăm să introduceţi numai numere pentru <b> { \$ domeniul} </ b>."; +$LANG["validation_default_rule_required"] = "Vă rugăm să introduceţi o valoare pentru <b> { \$ domeniul} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Vă rugăm să introduceţi o adresă de e-mail validă pentru <b> { \$ domeniul} </ b>."; +$LANG["validation_delete_form_confirm"] = "Vă rugăm să bifaţi caseta pentru a confirma că doriţi să ştergeţi acest formular."; +$LANG["validation_delete_non_empty_option_list"] = "Atenţie! Aceasta lista de optiuni este utilizat de către câmpurile de formular unul sau mai multe. Ştergerea se va face aceste domenii încetează să funcţioneze corect."; +$LANG["validation_display_names_incomplete"] = "Vă rugăm să introduceţi o valoare pentru toate numele de afişare, sau faceţi clic pe Smart Fill opţiunea de a le introduceţi dinamic."; +$LANG["validation_duplicate_form_field_name"] = "Nu poate avea mai multe câmpuri cu nume de acelaşi domeniu."; +$LANG["validation_email_not_found_or_invalid"] = "Ne pare rău, e-mail asociată contului dvs., fie nu există sau este invalidă."; +$LANG["validation_folder_invalid_permissions"] = "Pentru a rula acest test, permisiunile de necesitatea de a fi stabilit pe folderul de încărcare pentru a permite citirea şi scrierea fişierelor (777 pe Unix)."; +$LANG["validation_folder_not_writable"] = "Acest folder nu este inscriptibile."; +$LANG["validation_internal_form_too_many_fields"] = "Ne pare rău, aveţi posibilitatea să creat doar forme cu 1000 intrari sau mai puţin."; +$LANG["validation_invalid_admin_email"] = "Vă rugăm să introduceţi adresa de un adminstrator validă de e-mail."; +$LANG["validation_invalid_admin_username"] = "Numele dvs. de utilizator pot consta numai din caractere alfanumerice (AZ şi 0-9)."; +$LANG["validation_invalid_client_username"] = "Numele clientului de utilizator poate consta numai caractere alfanumerice (AZ şi 0-9)."; +$LANG["validation_invalid_client_username2"] = "Ne pare rău, numele de utilizator poate să conţină doar litere, cifre şi caracterul de subliniere. Vă rugăm să introduceţi un nume de utilizator nou."; +$LANG["validation_invalid_column_name"] = "Numele coloanelor poate fi numai alfanumerice (AZ, 0-9). Vă rugăm să verificaţi numele de coloana."; +$LANG["validation_invalid_custom_from_email"] = "Vă rugăm să introduceţi un obicei valabil 'De la' adresa de e-mail."; +$LANG["validation_invalid_custom_reply_to_email"] = "Vă rugăm să introduceţi un obicei valabil "Reply-la 'adresa de e-mail."; +$LANG["validation_invalid_default_sessions_timeout"] = "Vă rugăm să introduceţi o valoare validă (a) numărul de sesiuni de expirare implicit."; +$LANG["validation_invalid_email"] = "Vă rugăm să introduceţi o adresă de email validă."; +$LANG["validation_invalid_email_id"] = "Ne pare rău, asta-i un e-mail invalidă ID."; +$LANG["validation_invalid_folder"] = "Ne pare rău, acest lucru nu pare a fi un folder valabil."; +$LANG["validation_invalid_form_field_names"] = "Câmpuri formular poate fi doar şi underscoruri alfanumerice (AZ, 0-9, _), fără spaţii."; +$LANG["validation_invalid_num_clients_per_page"] = "Vă rugăm să introduceţi numai numere în Clienti Num Pe câmp Page."; +$LANG["validation_invalid_num_emails_per_page"] = "Vă rugăm să introduceţi doar cifre pentru e-mailuri pe pagină."; +$LANG["validation_invalid_num_form_fields"] = "Vă rugăm să introduceţi numai numerele din Numărul de câmp Domenii."; +$LANG["validation_invalid_num_forms_per_page"] = "Vă rugăm să introduceţi numai numere în formularele de Num Pe câmp Page."; +$LANG["validation_invalid_num_menus_per_page"] = "Vă rugăm să introduceţi doar cifre pentru meniurile de pe pagină."; +$LANG["validation_invalid_num_modules_per_page"] = "Vă rugăm să introduceţi numai numere în modulele Num Pe câmp Page."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Vă rugăm să introduceţi numai numerele din listele opţiunea Num pe câmp pagină."; +$LANG["validation_invalid_num_submissions_per_page"] = "Vă rugăm să introduceţi un număr valid de depuneri pe pagină."; +$LANG["validation_invalid_sessions_timeout"] = "Vă rugăm să introduceţi un timp de expirare valabilă sesiune (numere întregi numai!)."; +$LANG["validation_invalid_tab_assign_values"] = "Vă rugăm să introduceţi numai numere din "de la" şi "câmpuri pentru a"."; +$LANG["validation_invalid_table_prefix"] = "Vă rugăm să introduceţi un prefix bază de date este format din litere şi caracterul de subliniere numai."; +$LANG["validation_invalid_upload_folder"] = "De instalare a serverului dvs. de PHP are o setare incorectă pentru valoarea upload_tmp_dir. "{\$upload_folder}" nu este un folder valabil."; +$LANG["validation_invalid_url"] = "Vă rugăm să introduceţi un URL valabil."; +$LANG["validation_invalid_username"] = "Numele de utilizator poate consta numai caractere alfanumerice (AZ şi 0-9)."; +$LANG["validation_is_form_active"] = "Vă rugăm să indice dacă formularul este activă sau nu."; +$LANG["validation_menu_name_taken"] = "Ne pare rău, acest nume meniu este deja luată. Vă rugăm să alegeţi un nume nou."; +$LANG["validation_modules_search_no_status"] = "Vă rugăm să selectaţi fie căsuţele activat sau dezactivat."; +$LANG["validation_no_access_type"] = "Vă rugăm să introduceţi tipul de acces."; +$LANG["validation_no_account_logout_url"] = "Vă rugăm să introduceţi URL-ul dvs. ieşire."; +$LANG["validation_no_account_password_confirmed"] = "Vă rugăm să re-introduceţi parola nouă."; +$LANG["validation_no_account_password_confirmed2"] = "Vă rugăm să re-introduceţi noua parolă."; +$LANG["validation_no_admin_email"] = "Vă rugăm să introduceţi adresa de e-mail a administratorului."; +$LANG["validation_no_admin_theme"] = "Vă rugăm să selectaţi tema pentru contul de administrator."; +$LANG["validation_no_admin_theme_swatch"] = "Vă rugăm să selectaţi un specimen pentru tema de administrator."; +$LANG["validation_no_client_email"] = "Vă rugăm să introduceţi adresa de e-mail a clientului."; +$LANG["validation_no_client_first_name"] = "Vă rugăm să introduceţi numele clientului primul."; +$LANG["validation_no_client_last_name"] = "Vă rugăm să introduceţi numele clientului ultima."; +$LANG["validation_no_client_login_page"] = "Vă rugăm să indicaţi de start, care clientul ar trebui să fie redirecţionate către atunci când va autentifica"; +$LANG["validation_no_client_password"] = "Vă rugăm să introduceţi parola clientului."; +$LANG["validation_no_client_theme_swatch"] = "Vă rugăm să selectaţi un specimen implicit pentru conturile client."; +$LANG["validation_no_client_username"] = "Vă rugăm să introduceţi numele de utilizator al clientului."; +$LANG["validation_no_column_name"] = "Vă rugăm să introduceţi toate numele de coloană, sau faceţi clic pe butonul Fill inteligent pentru a completa automat le."; +$LANG["validation_no_column_selected"] = "Vă rugăm să selectaţi cel puţin un câmp să apară ca o coloană de pe pagina de prezentare listare."; +$LANG["validation_no_custom_from_email"] = "Vă rugăm să introduceţi Custom 'De la' adresa de e-mail."; +$LANG["validation_no_custom_recipient_email"] = "Vă rugăm să introduceţi adresa de e-mail personalizat destinatarului."; +$LANG["validation_no_custom_reply_to_email"] = "Vă rugăm să introduceţi Custom "Reply-la 'adresa de e-mail."; +$LANG["validation_no_date_format"] = "Vă rugăm să introduceţi un format de dată."; +$LANG["validation_no_db_column_single"] = "Te rugăm să introduci numele de coloană Bază de date."; +$LANG["validation_no_db_hostname"] = "Vă rugăm să introduceţi numele gazdei bazei de date."; +$LANG["validation_no_db_name"] = "Vă rugăm să introduceţi numele bazei de date."; +$LANG["validation_no_db_username"] = "Vă rugăm să introduceţi numele de utilizator de cont baza de date."; +$LANG["validation_no_default_client_theme"] = "Vă rugăm să selectaţi tema implicită pentru toate conturile de client nou."; +$LANG["validation_no_default_language"] = "Vă rugăm să selectaţi limba implicită pentru instalarea dvs. de Formular de Instrumente."; +$LANG["validation_no_default_sessions_timeout"] = "Vă rugăm să introduceţi timpul de expirare implicit de sesiune pentru conturile de utilizator."; +$LANG["validation_no_display_text"] = "Te rugăm să introduci textul de pe ecran pentru fiecare câmp."; +$LANG["validation_no_display_text_single"] = "Vă rugăm să introduceţi valoarea textul afişat."; +$LANG["validation_no_edit_submission_page_label"] = "Vă rugăm să introduceţi Editare Depunerea eticheta de start."; +$LANG["validation_no_email"] = "Vă rugăm să introduceţi adresa dvs. de e-mail."; +$LANG["validation_no_email_config_field"] = "Vă rugăm să specificaţi care câmpul formular este domeniul de e-mail."; +$LANG["validation_no_email_content"] = "Vă rugăm să introduceţi conţinutul de e-mail pentru cel puţin unul din formatele (HTML sau text)."; +$LANG["validation_no_email_from_field"] = "Vă rugăm să de e-mail "de la" câmp."; +$LANG["validation_no_email_template_name"] = "Vă rugăm să introduceţi numele şablonului de e-mail."; +$LANG["validation_no_email_template_view_id"] = "Vă rugăm să selectaţi Vizualizare pentru care acest şablon de e-mail ar trebui să fie mapate."; +$LANG["validation_no_email_template_view_mapping_value"] = "Vă rugăm să indicaţi de e-mail în cazul în care ar trebui să fie trimis."; +$LANG["validation_no_enabled_themes"] = "Vă rugăm să se asigure că cel puţin o temă este activată."; +$LANG["validation_no_first_name"] = "Vă rugăm să introduceţi numele dvs. primul."; +$LANG["validation_no_form_field_name"] = "Vă rugăm să introduceţi toate denumirile sub formă domeniu."; +$LANG["validation_no_form_field_single"] = "Vă rugăm să introduceţi valoarea câmp de formular."; +$LANG["validation_no_form_id"] = "Forma ID-ul nu a fost specificat. Vă rugăm să ieşi şi încercaţi din nou."; +$LANG["validation_no_form_name"] = "Vă rugăm să introduceţi numele de forma."; +$LANG["validation_no_form_url"] = "Vă rugăm să introduceţi URL-ul formular."; +$LANG["validation_no_last_name"] = "Vă rugăm să introduceţi numele tau de familie."; +$LANG["validation_no_login_page"] = "Vă rugăm să indicaţi de start, pe care aţi dori să fi trimis de fiecare dată când va autentifica"; +$LANG["validation_no_logout_url"] = "Vă rugăm să introduceţi URL-ul ieşire."; +$LANG["validation_no_main_email_recipient"] = "Vă rugăm să introduceţi cel puţin un destinatar principal de e-mail (adică nu o Cc sau Cci)."; +$LANG["validation_no_menu"] = "Vă rugăm să selectaţi un meniu pentru acest cont de utilizator."; +$LANG["validation_no_menu_id"] = "Vă rugăm să selectaţi un meniu."; +$LANG["validation_no_num_clients_per_page"] = "Vă rugăm să introduceţi numărul de conturi de client pe pagină."; +$LANG["validation_no_num_emails_per_page"] = "Vă rugăm să introduceţi numărul de email-uri la lista de pe pagină."; +$LANG["validation_no_num_form_fields"] = "Vă rugăm să introduceţi numărul de câmpuri pentru formular."; +$LANG["validation_no_num_forms_per_page"] = "Vă rugăm să introduceţi numărul de formulare pe pagină."; +$LANG["validation_no_num_menus_per_page"] = "Vă rugăm să introduceţi numărul de meniuri pentru a lista de pe pagină."; +$LANG["validation_no_num_modules_per_page"] = "Vă rugăm să introduceţi numărul de module pe pagină."; +$LANG["validation_no_num_option_lists_per_page"] = "Vă rugăm să introduceţi numărul de liste de opţiuni pe pagină."; +$LANG["validation_no_num_submissions_per_page"] = "Vă rugăm să introduceţi numărul de depuneri pentru a afişa pe pagina."; +$LANG["validation_no_option_list_name"] = "Te rugăm să introduci numele de lista de opţiuni."; +$LANG["validation_no_page_titles"] = "Vă rugăm să introduceţi titlurile implicit de pagină pentru conturile de utilizator."; +$LANG["validation_no_password"] = "Vă rugăm să introduceţi parola."; +$LANG["validation_no_program_name"] = "Vă rugăm să introduceţi numele programului."; +$LANG["validation_no_second_password"] = "Vă rugăm să reintroduceţi parola."; +$LANG["validation_no_sessions_timeout"] = "Vă rugăm să introduceţi timeout sesiune."; +$LANG["validation_no_smart_fill_values"] = "Vă rugăm să introduceţi numele formularul de câmp şi URL-ul a formularului."; +$LANG["validation_no_table_prefix"] = "Vă rugăm să introduceţi un prefix de baze de date."; +$LANG["validation_no_tabs_defined"] = "Nr file definit"; +$LANG["validation_no_test_email_recipient"] = "Vă rugăm să introduceţi adresa de e-mail de unde ar trebui să ne trimită e-mail de test."; +$LANG["validation_no_test_email_submission_id"] = "Vă rugăm să introduceţi ID-ul numărul de depunere."; +$LANG["validation_no_theme"] = "Vă rugăm să selectaţi o temă."; +$LANG["validation_no_theme_swatch"] = "Vă rugăm să selectaţi un specimen pentru tema selectată."; +$LANG["validation_no_timezone_offset"] = "Vă rugăm să introduceţi zona de fus orar de offset."; +$LANG["validation_no_titles"] = "Vă rugăm să introduceţi titlurile paginilor."; +$LANG["validation_no_two_column_names"] = "Ne pare rău, nu puteţi introduce numele de aceeaşi bază de date coloană de două ori."; +$LANG["validation_no_ui_language"] = "Vă rugăm să selectaţi o limbă pentru interfaţă."; +$LANG["validation_no_url"] = "Vă rugăm să introduceţi un URL."; +$LANG["validation_no_username"] = "Vă rugăm să introduceţi numele dvs. de utilizator."; +$LANG["validation_no_username_or_js"] = "Trebuie să introduceţi numele dvs. de utilizator. Vă rugăm să activaţi JavaScript din browser-ul."; +$LANG["validation_no_view_fields"] = "View-ul dvs. nu conţine nici un câmpurile! Ai nevoie pentru a aloca cel puţin un câmp pentru a exista pentru a fi ceva să apară în opinia dumneavoastră."; +$LANG["validation_no_view_fields_selected"] = "Vă rugăm să selectaţi unul sau mai multe câmpuri pentru a adăuga la Vizualizare."; +$LANG["validation_no_view_name"] = "Vă rugăm să introduceţi numele dvs. de vizualizare."; +$LANG["validation_num_rows_to_add"] = "Vă rugăm să introduceţi numărul de rânduri pentru a adăuga."; +$LANG["validation_option_list_name_taken"] = "Ne pare rău, această listă nume opţiune este deja luată. Vă rugăm să alegeţi un nume nou."; +$LANG["validation_password_in_password_history"] = "Pentru o securitate, nu puteţi introduce aceeaşi parolă ca oricare dintre ultimele {\$history_size} parole. Vă rugăm să introduceţi o parolă diferită."; +$LANG["validation_passwords_different"] = "Vă rugăm asiguraţi-vă că parolele sunt identice."; +$LANG["validation_please_enter_search_date_range"] = "Vă rugăm să selectaţi intervalul de căutare dată."; +$LANG["validation_please_enter_search_keyword"] = "Vă rugăm să introduceţi cuvinte cheie de căutare."; +$LANG["validation_select_field_type"] = "Vă rugăm să selectaţi un tip de teren."; +$LANG["validation_select_submissions_to_copy"] = "Selectați acele depuneri pe care doriți să le copiați."; +$LANG["validation_select_submissions_to_delete"] = "Vă rugăm să selectaţi acele propunerile pe care doriţi să o ştergeţi."; +$LANG["validation_smart_fill_cannot_fill"] = "Ne pare rău, nu am putut umple acest domeniu."; +$LANG["validation_smart_fill_invalid_field_type"] = "Noi am fost în imposibilitatea de a localiza un câmp, dar nu este un dropdown, caseta de selectare sau un grup de radio."; +$LANG["validation_smart_fill_no_field_found"] = "Ne pare rău, nu am putut găsi un domeniu formular cu acest nume de pe pagina de specificat."; +$LANG["validation_smart_fill_no_page"] = "Vă rugăm să localizaţi pagina care conţine câmpul pe care doriţi să Smart de umplere."; +$LANG["validation_smart_fill_upload_all_pages"] = "Vă rugăm să încărcaţi toate paginile din formular."; +$LANG["validation_upload_folder_not_writable"] = "Acest folder temporar de încărcare specificate de instalarea dvs. PHP nu poate fi scris. Până când acest lucru este fix, fişiere nu pot fi încărcat prin intermediul formularului de Instrumente (sau orice alt program PHP). Vă rugăm să contactaţi furnizorul dvs. de găzduire."; +$LANG["validation_upload_html_files_only"] = "Vă rugăm să încărcaţi doar fişiere HTML."; +$LANG["validation_username_taken"] = "Ne pare rău, că numele de utilizator este deja luat. Vă rugăm să introduceţi un alt nume de utilizator."; +$LANG["validation_wrong_password"] = "Ne pare rău, că parola nu se potrivesc."; +$LANG["word_about"] = "Despre"; +$LANG["word_access"] = "De acces"; +$LANG["word_account"] = "Cont"; +$LANG["word_account_sp"] = "Cont (uri)"; +$LANG["word_accounts"] = "Accounts"; +$LANG["word_action"] = "De acţiune"; +$LANG["word_active"] = "Activ"; +$LANG["word_add"] = "Adăuga"; +$LANG["word_add_rightarrow"] = "Adaugă »"; +$LANG["word_add_uc_rightarrow"] = "Adăugaţi »"; +$LANG["word_administration"] = "Administrare"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Dupa"; +$LANG["word_aquamarine"] = "Acvamarin"; +$LANG["word_asc"] = "Cresc"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«inapoi"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Inainte"; +$LANG["word_benefits"] = "Beneficiile"; +$LANG["word_blue"] = "Albastru"; +$LANG["word_cancel"] = "Anula"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Casetele de selectare"; +$LANG["word_checklist"] = "Lista de verificare"; +$LANG["word_client"] = "Client"; +$LANG["word_client_c"] = "Client:"; +$LANG["word_clients"] = "Clienti"; +$LANG["word_close"] = "Închide"; +$LANG["word_code"] = "Code"; +$LANG["word_column"] = "Coloana"; +$LANG["word_columns"] = "Coloane"; +$LANG["word_columns_sp"] = "Coloana (e)"; +$LANG["word_complete"] = "Complete"; +$LANG["word_configuration"] = "De configurare"; +$LANG["word_content"] = "Conţinut"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Continuare »"; +$LANG["word_copy"] = "Copie"; +$LANG["word_custom"] = "Obicei"; +$LANG["word_data"] = "De date"; +$LANG["word_date"] = "Dată"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Şterge"; +$LANG["word_desc"] = "Descr"; +$LANG["word_direct"] = "Directă"; +$LANG["word_disabled"] = "Cu handicap"; +$LANG["word_documentation"] = "Documentaţie"; +$LANG["word_done"] = "Făcut"; +$LANG["word_drawbacks"] = "Dezavantajele"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Editaţi"; +$LANG["word_editable"] = "Editabile"; +$LANG["word_email"] = "De e-mail"; +$LANG["word_email_c"] = "E-mail:"; +$LANG["word_emails"] = "Mesaje de poştă electronică"; +$LANG["word_enabled"] = "Activat"; +$LANG["word_equals"] = "Egal"; +$LANG["word_error"] = "Eroare"; +$LANG["word_error_c"] = "Eroare:"; +$LANG["word_examples_c"] = "Exemple:"; +$LANG["word_external"] = "Externă"; +$LANG["word_fail"] = "În caz de avarie"; +$LANG["word_field"] = "Câmp"; +$LANG["word_field_sp"] = "Cîmp(Cîmpuri)"; +$LANG["word_fields"] = "Fields"; +$LANG["word_fields_sp"] = "Câmp (e)"; +$LANG["word_file"] = "Fisier"; +$LANG["word_file_b_uc"] = "[FISIER]"; +$LANG["word_files"] = "Fisiere"; +$LANG["word_filters"] = "Filtrele"; +$LANG["word_filters_sp"] = "Filtru (e)"; +$LANG["word_for"] = "pentru"; +$LANG["word_form"] = "FORMULAR"; +$LANG["word_form_c"] = "Formular:"; +$LANG["word_formatting"] = "Formatarea"; +$LANG["word_forms"] = "Formulare"; +$LANG["word_found"] = "Fonda"; +$LANG["word_from"] = "De la"; +$LANG["word_from_c"] = "De la:"; +$LANG["word_general"] = "General"; +$LANG["word_green"] = "Verde"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Înălţime"; +$LANG["word_help"] = "Ajutor"; +$LANG["word_hidden"] = "Ascuns"; +$LANG["word_highlight"] = "Evidenţiaţi"; +$LANG["word_horizontal"] = "Orizontal"; +$LANG["word_hour"] = "Ora"; +$LANG["word_hours"] = "Ore"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID-ul"; +$LANG["word_image"] = "Imaginile"; +$LANG["word_incomplete"] = "Incomplet"; +$LANG["word_install"] = "Instalare"; +$LANG["word_installation"] = "Instalare"; +$LANG["word_internal"] = "Intern"; +$LANG["word_language"] = "Limbă"; +$LANG["word_large"] = "Mare"; +$LANG["word_like"] = "Plăcea"; +$LANG["word_login"] = "Conecta"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Deconectare"; +$LANG["word_main"] = "Principal"; +$LANG["word_medium"] = "Mediu"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "minut"; +$LANG["word_misc"] = "Diverse"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Nume"; +$LANG["word_name_c"] = "Nume:"; +$LANG["word_never"] = "Niciodată"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "Pasul următor »"; +$LANG["word_no"] = "Nu"; +$LANG["word_none"] = "Niciunul"; +$LANG["word_notes"] = "Ia act de"; +$LANG["word_notification"] = "Notification"; +$LANG["word_number"] = "Numar"; +$LANG["word_off"] = "De pe"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Bine"; +$LANG["word_on"] = "Pe"; +$LANG["word_online"] = "On-line"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Optiuni"; +$LANG["word_orange"] = "Portocaliu"; +$LANG["word_order"] = "Comanda"; +$LANG["word_other"] = "Alt"; +$LANG["word_other_c"] = "Altele:"; +$LANG["word_page"] = "Pagină"; +$LANG["word_page_c"] = "Pagina:"; +$LANG["word_pass"] = "Treceti"; +$LANG["word_password"] = "Parola"; +$LANG["word_password_c"] = "Parola:"; +$LANG["word_pending"] = "În aşteptare"; +$LANG["word_permissions"] = "Permissions"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Previous"; +$LANG["word_private"] = "Private"; +$LANG["word_public"] = "Publică"; +$LANG["word_purple"] = "Violet"; +$LANG["word_recipient"] = "Destinatar"; +$LANG["word_recipient_sp"] = "Beneficiar (i)"; +$LANG["word_red"] = "Roşu"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Elimina"; +$LANG["word_remove_uc_leftarrow"] = "«Remove"; +$LANG["word_reply_to"] = "Reply-to"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Necesar"; +$LANG["word_reset"] = "A nu putea suporta"; +$LANG["word_resolved"] = "Rezolvat"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rând"; +$LANG["word_search"] = "Caută"; +$LANG["word_searchable"] = "De căutare"; +$LANG["word_select"] = "Selectati"; +$LANG["word_setting"] = "Setare"; +$LANG["word_settings"] = "Setãri"; +$LANG["word_show"] = "Arăta"; +$LANG["word_size"] = "Dimensiune"; +$LANG["word_skipped"] = "Ignorate"; +$LANG["word_small"] = "Mic"; +$LANG["word_solution"] = "Soluţie"; +$LANG["word_sortable"] = "De seminte"; +$LANG["word_start"] = "Începe"; +$LANG["word_status"] = "Statut"; +$LANG["word_string"] = "Sir de caractere"; +$LANG["word_subject"] = "Subiect"; +$LANG["word_subject_c"] = "Subiect"; +$LANG["word_submenu"] = "Submeniu"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Trimiteri"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Fila"; +$LANG["word_tabs"] = "File"; +$LANG["word_tabs_sp"] = "Tab (e)"; +$LANG["word_test"] = "Testa"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Themes"; +$LANG["word_time"] = "Timp"; +$LANG["word_tiny"] = "Minuscul"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Astăzi"; +$LANG["word_truncate_q"] = "Trunchia?"; +$LANG["word_uninstall"] = "Dezinstalaţi"; +$LANG["word_unknown"] = "Necunoscut"; +$LANG["word_update"] = "Actualiza"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL-ul:"; +$LANG["word_user"] = "Utilizator"; +$LANG["word_username"] = "Utilizator"; +$LANG["word_username_c"] = "Nume Utilizator"; +$LANG["word_validation"] = "Validare"; +$LANG["word_value"] = "Valoare"; +$LANG["word_value_sp"] = "Valoare (s)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Verifica"; +$LANG["word_version"] = "Versiune"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Vedere"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Atentiune!"; +$LANG["word_warning_c"] = "Atenţie:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Bun venit!"; +$LANG["word_width_c"] = "lăţime:"; +$LANG["word_words"] = "Cuvinte"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Galben"; +$LANG["word_yes"] = "Da"; \ No newline at end of file diff --git a/global/lang/ru.php b/global/lang/ru.php new file mode 100644 index 00000000..11cbde17 --- /dev/null +++ b/global/lang/ru.php @@ -0,0 +1,1219 @@ +Внимание! Вы выбрали {\$num_selected_on_page} представленных на этой странице и {\$num_selected_on_other_pages} на других страницах. Пожалуйста, выберите один из следующих вариантов:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Внимание! Вы не выбрали представленных на этой странице, но вы выбрали {\$num_selected_on_other_pages} на других страницах. Пожалуйста, подтвердите, что вы хотите удалить эти материалы.
    "; +$LANG["confirm_delete_view"] = "Вы уверены, что хотите удалить эту точку зрения?"; +$LANG["confirm_refresh_page"] = "Вы уверены, что хотите, чтобы обновить страницу? Это будут потеряны все изменения, сделанные вами."; +$LANG["confirm_save_change_before_redirect"] = "Одно или несколько полей были обновлены. Хотели бы Вы, чтобы сохранить изменения перед перенаправлением?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Вы уверены, что хотите Smart Fill имена столбцов в базе данных? Это будет перезаписывать существующие ценности."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Эта опция автоматически создает базу данных имена столбцов на основе полей Отображение текста, так что содержимое таблицы базы данных являются более удобными для чтения."; +$LANG["confirm_smart_fill_display_names"] = "Вы уверены, что хотите Smart Fill дисплея имена? Это будет перезаписывать существующие ценности."; +$LANG["confirm_ungroup_option_list"] = "Вы уверены, что хотите разгруппировать этот вариант списка? Все варианты будут собраны в единую разгруппирована список."; +$LANG["confirm_uninstall_module"] = "Вы уверены, что хотите удалить этот модуль? Модуль Все данные будут потеряны."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Пт"; +$LANG["date_Friday"] = "Пятница"; +$LANG["date_Mon"] = "Пн"; +$LANG["date_Monday"] = "Понедельник"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Сб"; +$LANG["date_Saturday"] = "Суббота"; +$LANG["date_Sun"] = "Солнце"; +$LANG["date_Sunday"] = "Воскресенье"; +$LANG["date_Thu"] = "Чт"; +$LANG["date_Thursday"] = "Четверг"; +$LANG["date_Tue"] = "Вт"; +$LANG["date_Tuesday"] = "Вторник"; +$LANG["date_Wed"] = "Ср"; +$LANG["date_Wednesday"] = "Среда"; +$LANG["date_am"] = "м."; +$LANG["date_month_April"] = "Апрель"; +$LANG["date_month_August"] = "Август"; +$LANG["date_month_December"] = "Декабрь"; +$LANG["date_month_February"] = "Февраль"; +$LANG["date_month_January"] = "Январь"; +$LANG["date_month_July"] = "Июль"; +$LANG["date_month_June"] = "Июнь"; +$LANG["date_month_March"] = "Март"; +$LANG["date_month_May"] = "Мочь"; +$LANG["date_month_November"] = "Ноябрь"; +$LANG["date_month_October"] = "Октябрь"; +$LANG["date_month_September"] = "Сентябрь"; +$LANG["date_month_short_Apr"] = "Апрель"; +$LANG["date_month_short_Aug"] = "Август"; +$LANG["date_month_short_Dec"] = "Декабрь"; +$LANG["date_month_short_Feb"] = "Февраль"; +$LANG["date_month_short_Jan"] = "Янв"; +$LANG["date_month_short_Jul"] = "Июль"; +$LANG["date_month_short_Jun"] = "Июнь"; +$LANG["date_month_short_Mar"] = "Мар"; +$LANG["date_month_short_May"] = "Мочь"; +$LANG["date_month_short_Nov"] = "Ноябрь"; +$LANG["date_month_short_Oct"] = "Октябрь"; +$LANG["date_month_short_Sep"] = "Сентябрь"; +$LANG["date_pm"] = "м."; +$LANG["notify_account_deleted"] = "Учетная запись была удалена."; +$LANG["notify_account_updated"] = "Ваш аккаунт был успешно обновлен."; +$LANG["notify_add_display_values"] = "Добавить отображения значений"; +$LANG["notify_admin_menu_updated"] = "Администрация меня была обновлена."; +$LANG["notify_admin_theme_overridden"] = "Тема администратором вручную было преодолено."; +$LANG["notify_allow_url_fopen_not_set"] = "К сожалению, этот тест не может быть запущен на вашем веб-сервере. Она требует allow_url_fopen быть установлен в 1 в файле php.ini. Эта настройка позволяет PHP для доступа к файлам через URL, которые необходимы для выполнения данного теста. Вы можете проверить это вручную, загрузив файл в этой папке через FTP, а затем пытается получить к нему доступ на URL Вы поставили."; +$LANG["notify_change_temp_password"] = "Вы просто войти в систему с временным паролем. Вы должны сбросить пароль сейчас!"; +$LANG["notify_click_to_edit_new_submission"] = "Нажмите здесь, чтобы изменить новое представление."; +$LANG["notify_client_account_menus_updated"] = "Счет клиента (ы) были обновлены до {\$menu_name} меню. Теперь Вы можете удалить меня, который ранее был связан с счета (ов)."; +$LANG["notify_client_account_not_updated"] = "Счету клиента не может быть обновлена."; +$LANG["notify_client_account_themes_updated"] = "Клиенту счета (ов), были обновлены с {\$theme} теме. Теперь Вы можете отключить тему, ранее связанных с счета (ов)."; +$LANG["notify_client_account_updated"] = "Учетной записи клиента был успешно обновлен."; +$LANG["notify_client_menu_deleted"] = "Клиент меня была удалена."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Меню был удален, но следующие счета клиент уже не имеют меню! Вам необходимо обновить следующие счета:"; +$LANG["notify_client_menu_updated"] = "Клиент меня была обновлена."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Извините, меня только что пытались удалить уже используется клиентами, перечисленных ниже. Для того, чтобы удалить меню вы в первую очередь необходимо назначить клиентам другие меню. Нажмите на имя клиента, чтобы править, что индивидуальный счет, или присвоить все счета на другой меню с помощью выпадающего ниже."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "К сожалению, одной из тем, вы просто отключена уже используются следующие счета клиента. Для того чтобы отключить тему вы будете в первую очередь необходимо назначить каждому клиенту, чтобы другая тема. Нажмите на имя клиента, чтобы править, что индивидуальный счет, или присвоить все счета на тему, используя выпадающий ниже."; +$LANG["notify_edit_email_fields_link"] = "Нажмите здесь, чтобы указать, какие поля формы электронной почты поля, так что вы можете нацелить их в шаблонах электронной почты."; +$LANG["notify_edit_field_new_field"] = "Это новое поле. Вам нужно будет обновить главную страницу прежде чем он сможет полностью редактировать это поле."; +$LANG["notify_edit_option_list_after_save"] = "Вы должны выбрать вариант списка, а затем Сохранить изменения прежде чем он сможет изменить его."; +$LANG["notify_email_field_config_deleted"] = "Email конфигурация была удалена."; +$LANG["notify_email_fields_not_updated"] = "К сожалению, мы не может обновить поля для письма."; +$LANG["notify_email_fields_updated"] = "Email полях были обновлены."; +$LANG["notify_email_not_sent"] = "К сожалению, письмо не было отправлено. Пожалуйста, свяжитесь с администрацией сайта по указанному ниже адресу."; +$LANG["notify_email_not_sent_c"] = "К сожалению, электронная почта не может быть отправлено:"; +$LANG["notify_email_sent"] = "Email (ы) были отправлены."; +$LANG["notify_email_template_deleted"] = "Электронный шаблон был удален."; +$LANG["notify_email_template_updated"] = "Электронный шаблон был обновлен."; +$LANG["notify_enabled_module_list_updated"] = "Список включены модули были обновлены."; +$LANG["notify_error_saving_fields"] = "Существовал ошибка при сохранении поля."; +$LANG["notify_field_changes_saved"] = "Изменения в поле (я) были спасены."; +$LANG["notify_field_options_smart_filled"] = "Ваши варианты области были Смарт заполнен."; +$LANG["notify_field_selected"] = "Области были выбраны. Нажмите здесь, чтобы вернуться в основной список поля."; +$LANG["notify_field_updated"] = "Эта область была обновлена."; +$LANG["notify_file_not_uploaded"] = "Файл не может быть загружен."; +$LANG["notify_file_uploaded"] = "Файл успешно загружен."; +$LANG["notify_filters_not_updated"] = "Был Ошибка при обновлении представления этого клиента фильтров."; +$LANG["notify_filters_updated"] = "Представление фильтры были обновлены для этого клиента."; +$LANG["notify_folder_correct_permissions"] = "Эта папка имеет правильных разрешений."; +$LANG["notify_folder_url_match"] = "Папки и URL-видимому, правильным матч."; +$LANG["notify_folder_url_no_access"] = "Этот тест не может быть выполнена с PHP не смог получить доступ к этому URL. Обычно это вызвано URL быть защищена паролем. Htaccess файла."; +$LANG["notify_folder_url_no_match"] = "Эта папка-URL комбинация представляется, не будут совпадать."; +$LANG["notify_folder_url_unknown_error"] = "Неизвестная ошибка. Вы можете проверить это вручную, загрузив файл в этой папке через FTP, а затем пытается получить к нему доступ на URL Вы поставили."; +$LANG["notify_form_access_type_email_info"] = "Эта форма имеет тип доступа администратора, так что никаких клиенты имеют доступ к нему и не перечислены в раскрывающемся ниже."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "К сожалению, вид с ID не существует."; +$LANG["notify_form_field_not_added"] = "Полей формы '{\$fieldname}' не может быть добавлен."; +$LANG["notify_form_field_options_updated"] = "Параметры поля формы были обновлены."; +$LANG["notify_form_field_removed"] = "Форма области был успешно удален."; +$LANG["notify_form_fields_removed"] = "Все поля формы были успешно удалены."; +$LANG["notify_form_not_updated_notify_admin"] = "Ваша форма не может быть обновлена. Пожалуйста, свяжитесь с администрацией сайта, чтобы сообщить о данной проблеме."; +$LANG["notify_form_settings_updated"] = "Ваши настройки формы были успешно обновлены."; +$LANG["notify_form_submission_updated"] = "Форма представления была обновлена."; +$LANG["notify_form_tabs_updated"] = "Вкладки были обновлены."; +$LANG["notify_form_updated"] = "Форма была успешно обновлена."; +$LANG["notify_form_views_updated"] = "Просмотров форме были обновлены."; +$LANG["notify_install_invalid_db_info"] = "К сожалению, мы не могли подключиться к базе данных, используя информацию Вы указали. Сообщение об ошибке базы данных возвращаемых: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Ваша форма была создана! Можно настроить форму с помощью этих вкладок."; +$LANG["notify_invalid_account_information_in_sessions"] = "Счет информации, хранящейся в сессиях является недействительным. Пожалуйста, войдите снова ниже."; +$LANG["notify_invalid_license_key"] = "К сожалению, это не кажется, действующий лицензионный ключ. Пожалуйста, попробуйте ввести его снова."; +$LANG["notify_invalid_permissions"] = "У вас нет разрешения на доступ к этой странице. Вы вышли из системы."; +$LANG["notify_invalid_search_dates"] = "Пожалуйста, используйте DatePicker ввести правильную дату или даты."; +$LANG["notify_invalid_upload_folder"] = "Загрузить папки некорректны или не поддерживающий записи."; +$LANG["notify_lang_list_updated"] = "Доступных языков интерфейса список был обновлен."; +$LANG["notify_login_info_emailed"] = "Логин Ваша информация была по электронной почте."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "К сожалению, этот модуль уже установлен!"; +$LANG["notify_module_installed"] = "Этот модуль был установлен. Нажмите здесь, чтобы выбрать модуль."; +$LANG["notify_module_list_updated"] = "Модуль список был обновлен."; +$LANG["notify_module_uninstalled"] = "Этот модуль был удален."; +$LANG["notify_module_updated"] = "{\$module} Модуль обновлен до {\$version}. Нажмите здесь, чтобы выбрать модуль ."; +$LANG["notify_multi_field_selected"] = "Области были выбраны. Нажмите здесь, чтобы просмотреть и отредактировать поле вариантов."; +$LANG["notify_multi_field_updated"] = "Эта область была обновлена. Вы сможете настроить области после создания формы."; +$LANG["notify_multiple_fields_found"] = "Несколько элементов были найдены с этим именем поля ({\$field_name}). Это может произойти, если страница содержит более одной формы, или если вы случайно назван одним из ваших форм такой же, как другой. Пожалуйста, выберите тот, который вы хотите из списка ниже."; +$LANG["notify_new_default_view_created"] = "Новый, вид по умолчанию, содержащий все поля формы был создан."; +$LANG["notify_new_submission_created"] = "Представления был создан. Вы можете редактировать его ниже."; +$LANG["notify_no_account_id_in_sessions"] = "Нет учетной записи пользователя ID была найдена в сессиях. Пожалуйста, войдите снова ниже."; +$LANG["notify_no_api_installed"] = "Вы не API установлен"; +$LANG["notify_no_client_permissions"] = "Есть параметры не доступны для редактирования."; +$LANG["notify_no_email_template_selected"] = "Пожалуйста, выберите шаблон электронной почты."; +$LANG["notify_no_emails_defined"] = "Нет писем были определены для этой формы. Чтобы добавить новый, нажав на кнопку внизу."; +$LANG["notify_no_field_settings"] = "Этот тип поля не содержит каких-либо дополнительных настроек."; +$LANG["notify_no_fields_in_tab"] = "Эта вкладка не содержит полей."; +$LANG["notify_no_option_lists"] = "Есть нет другого выбора, списки определены. Нажмите на кнопку, чтобы создать новый."; +$LANG["notify_no_test_submission"] = "Инсрументы не получило успешное представление испытанием."; +$LANG["notify_no_user_email_fields_configured"] = "Примечание: если вы хотите отправить сообщение на любой адрес электронной почты, который был включен в форме, сначала необходимо настроить поля формы электронной почте."; +$LANG["notify_no_views"] = "Ваша форма не имеет просмотров началось! Вам понадобится по крайней мере одна Просмотр для того, чтобы управлять данными формы."; +$LANG["notify_no_views_assigned_to_client_form"] = "Похоже, что ваша учетная запись не был отнесен к любой форме соображениями, поэтому вы не сможете увидеть все данные. Пожалуйста, обращайтесь к администратору для получения дополнительной помощи."; +$LANG["notify_no_views_defined"] = "У вас нет какой-либо Просмотров определены. Вы не будете в состоянии рассмотреть представленные эту форму, если только по крайней мере одно представление не создается. Нажмите на кнопку, чтобы создать вид по умолчанию."; +$LANG["notify_option_list_deleted"] = "Список опций была удалена."; +$LANG["notify_option_list_updated"] = "Список опций был обновлен."; +$LANG["notify_public_form_omit_list_updated"] = "Клиент опустить список для этой формы был обновлен."; +$LANG["notify_public_view_omit_list_updated"] = "Клиент опустить список этой точки зрения был обновлен."; +$LANG["notify_required_admin_pages"] = "На следующих страницах являются обязательными в меню администратора: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "К сожалению, не было какой-либо деятельности на некоторое время нам пришлось завершать сеанс работы. Пожалуйста, войдите снова ниже."; +$LANG["notify_setup_options_updated"] = "Настройки были обновлены."; +$LANG["notify_smart_fill_field_not_found"] = "Нам не удалось найти поле с таким именем ({\$field_name}) в форме (ы) указаны. Вы можете вручную задавать тип поля ниже, или нажмите кнопку Пропустить, чтобы изменить это поле позже."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Ваш файл (ы) были успешно загружены. Попробуйте нажать кнопку Smart Fill, чтобы повторить попытку. Если этот шаг не удалось, вам придется пропустить этот шаг и настроить поля формы manally позже."; +$LANG["notify_smart_fill_submitted"] = "Форма была представлена. В зависимости от размера вашей форме, и ряд полевых страницу, это может занять некоторое время."; +$LANG["notify_smart_fill_upload_fields_fail"] = "К сожалению, один или несколько файлов, которые вы вступили не может быть загружен. Вам нужно будет пропустить этот шаг и настроить поля вручную."; +$LANG["notify_submission_and_files_deleted"] = "Представление и любого файла (ов), связанных с ним, были успешно удалены."; +$LANG["notify_submission_copied"] = "Представление было скопировано."; +$LANG["notify_submission_copied_edit"] = "Представление было скопировано. Вы можете отредактировать его ниже."; +$LANG["notify_submission_deleted"] = "Представления был успешно удален."; +$LANG["notify_submission_deleted_with_problems"] = "Было удалено представление, но со следующими проблемами пришлось столкнуться при попытке удалить файл (ы):"; +$LANG["notify_submission_id_not_found"] = "ID представления не было найдено."; +$LANG["notify_submission_not_updated"] = "Представления, не может быть обновлена."; +$LANG["notify_submissions_and_files_deleted"] = "Представлениях и любого файла (ов), связанных с ними были успешно удалены."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} копий были скопированы."; +$LANG["notify_submissions_deleted"] = "Материалы были успешно удалены."; +$LANG["notify_submissions_deleted_with_problems"] = "Были удалены материалы, но со следующими проблемами пришлось столкнуться при попытке удалить файл (ы):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Ваше тестовое сообщение не может быть отправлено."; +$LANG["notify_theme_cache_folder_not_writable"] = "Папка кэша Эта тема не является для записи. Для того, чтобы позволить этой теме, {\$folder} папка должна иметь полный доступ на чтение-запись."; +$LANG["notify_theme_list_updated"] = "Тема список был обновлен."; +$LANG["notify_themes_settings_updated"] = "Настройки темы были обновлены."; +$LANG["notify_view_deleted"] = "Открыть была удалена."; +$LANG["notify_view_group_deleted"] = "Посмотреть группа была удалена."; +$LANG["notify_view_missing_columns"] = "Упс! К сожалению, эта точка зрения не была полностью создана еще."; +$LANG["notify_view_missing_columns_admin_fix"] = "Нажмите здесь , чтобы указать, какие поля должны появиться в виде столбцов на этой странице."; +$LANG["notify_view_updated"] = "Открыть был обновлен."; +$LANG["notify_your_email_sent"] = "Ваше сообщение успешно отправлено."; +$LANG["phrase_100_per_page"] = "100 на странице"; +$LANG["phrase_10_per_page"] = "10 результатов на странице"; +$LANG["phrase_15_per_page"] = "15 на страницу"; +$LANG["phrase_1_direct"] = "1. Прямой"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 на странице"; +$LANG["phrase_25_per_page"] = "25 на странице"; +$LANG["phrase_2_code"] = "2. Кодекс"; +$LANG["phrase_2_columns"] = "2 колонки"; +$LANG["phrase_2chars"] = "2 символов"; +$LANG["phrase_3_columns"] = "3 колонки"; +$LANG["phrase_4_columns"] = "4 колонки"; +$LANG["phrase_50_per_page"] = "50 на страницу"; +$LANG["phrase_accepting_submissions"] = "(принимает заявки)"; +$LANG["phrase_access_admin_account_c"] = "Вы можете получить доступ к Администрации счет здесь:"; +$LANG["phrase_access_type"] = "Тип доступа"; +$LANG["phrase_account_info"] = "Информация об аккаунте"; +$LANG["phrase_account_settings"] = "Настройки аккаунта"; +$LANG["phrase_action_needed"] = "Необходимые меры"; +$LANG["phrase_add_client"] = "Добавить клиента"; +$LANG["phrase_add_client_menu"] = "Добавить клиента меню"; +$LANG["phrase_add_default_settings_rightarrow"] = "Добавить настройками по умолчанию »"; +$LANG["phrase_add_field"] = "Добавление поля"; +$LANG["phrase_add_fields"] = "Добавление полей"; +$LANG["phrase_add_fields_rightarrow"] = "Добавить поле (ы) »"; +$LANG["phrase_add_form"] = "Добавить форму"; +$LANG["phrase_add_form_external"] = "Добавить форму - Внешние"; +$LANG["phrase_add_form_internal"] = "Добавить форму - Внутренняя"; +$LANG["phrase_add_new_group_rightarrow"] = "Добавить новую группу »"; +$LANG["phrase_add_num_rows"] = "Добавить {\$number} числом строк (ы)"; +$LANG["phrase_add_row"] = "Добавить Row »"; +$LANG["phrase_add_submission_button"] = "Добавить Представление Кнопка"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Добавление нескольких страницах форму с API"; +$LANG["phrase_adding_single_page_form"] = "Добавление одной странице формы с API"; +$LANG["phrase_admin_menu"] = "Меню Администратора"; +$LANG["phrase_admin_only"] = "Только администратор"; +$LANG["phrase_admin_panel"] = "Администратор группы"; +$LANG["phrase_administrator_theme"] = "Администратор тема"; +$LANG["phrase_advanced_settings_rightarrow"] = "Расширенные настройки »"; +$LANG["phrase_all_X_results_selected"] = "Все {\$numresults} Результаты Закладки"; +$LANG["phrase_all_clients"] = "Все клиенты"; +$LANG["phrase_all_clients_except_c"] = "Всем клиентам, за исключением:"; +$LANG["phrase_all_clients_have_access"] = "(все клиенты имеют доступ)"; +$LANG["phrase_all_fields"] = "Все поля"; +$LANG["phrase_all_fields_displayed"] = "Отображаются все поля"; +$LANG["phrase_all_statuses"] = "Все статусы"; +$LANG["phrase_all_submissions"] = "Все материалы"; +$LANG["phrase_allow_fields_edited"] = "Разрешить полями для редактирования"; +$LANG["phrase_alphanumeric"] = "Буквенно-цифровые (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Применить смещение часового пояса"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Назначение всех перечисленных клиенту счета в {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Назначение всех перечисленных клиенту счета в {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "На краю"; +$LANG["phrase_at_start"] = "На начало"; +$LANG["phrase_author_link"] = "Автор Ссылки"; +$LANG["phrase_auto_disable_account"] = "Автоматическое отключение счета после # Логин попытки не удалось"; +$LANG["phrase_auto_size"] = "Авто-размер"; +$LANG["phrase_available_clients"] = "Доступные клиенты"; +$LANG["phrase_available_fields"] = "Доступные поля"; +$LANG["phrase_available_option_lists"] = "Доступные списки Вариант"; +$LANG["phrase_available_swatches"] = "Доступные Образцы"; +$LANG["phrase_available_swatches_c"] = "Доступные образцы:"; +$LANG["phrase_available_tabs"] = "Доступные вкладки"; +$LANG["phrase_available_views"] = "Доступно Просмотры"; +$LANG["phrase_awaiting_form_submission"] = "Ожидается формы."; +$LANG["phrase_back_to_field_list"] = "«Вернуться к списку полей"; +$LANG["phrase_back_to_search_results"] = "вернуться к результатам поиска"; +$LANG["phrase_base_view_on"] = "Вид на базе ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Изменения Логин информации"; +$LANG["phrase_characters_limit_p"] = "символы предела."; +$LANG["phrase_check_db_settings_try_again"] = "Внимательно проверьте настройки базы данных и нажмите кнопку Продолжить снова."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Проверьте URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Открытый Опустить Список"; +$LANG["phrase_client_account_settings"] = "Параметры учетной записи клиента"; +$LANG["phrase_client_field"] = "Клиент Полевой"; +$LANG["phrase_client_map_filters"] = "Фильтры карты клиента »"; +$LANG["phrase_client_may_edit"] = "Клиент может править"; +$LANG["phrase_client_menu"] = "Клиент Меню"; +$LANG["phrase_clients_can_access_form"] = "Клиенты, которые могут получить доступ к форме"; +$LANG["phrase_clients_can_access_view"] = "Клиенты, которые могут получить доступ к Открыть"; +$LANG["phrase_clients_cannot_access_form"] = "Клиенты, которые не могут получить доступ к форме"; +$LANG["phrase_clients_cannot_access_view"] = "Клиенты, которые не могут получить доступ к Открыть"; +$LANG["phrase_clients_may_edit"] = "Клиенты могут править"; +$LANG["phrase_code_c"] = "Код ошибки:"; +$LANG["phrase_code_markup_field"] = "Код / разметки поля"; +$LANG["phrase_code_markup_type"] = "Код / Тип разметки"; +$LANG["phrase_codes_c"] = "Коды ошибок:"; +$LANG["phrase_column_width"] = "Ширина столбца"; +$LANG["phrase_company_name"] = "Название компании"; +$LANG["phrase_configure_form_email_fields"] = "Настройка формы поля для письма"; +$LANG["phrase_confirm_folder_url_match"] = "Подтвердите Папка-URL Совпадение"; +$LANG["phrase_connect_rows"] = "Подключите строк"; +$LANG["phrase_copy_email_settings_from"] = "Скопировать настройки электронной почты ..."; +$LANG["phrase_copy_settings_from"] = "Скопировать настройки ..."; +$LANG["phrase_core_fields"] = "Основное поле"; +$LANG["phrase_core_version"] = "Версия ядра"; +$LANG["phrase_create_account"] = "Создать профиль"; +$LANG["phrase_create_admin_account"] = "Создание учетная запись администратора"; +$LANG["phrase_create_config_file"] = "Создание файла конфигурации"; +$LANG["phrase_create_database_tables"] = "Создание таблиц базы данных"; +$LANG["phrase_create_default_view"] = "Создание стандартного Посмотреть"; +$LANG["phrase_create_file"] = "Создайте файл"; +$LANG["phrase_create_group"] = "Создать группу"; +$LANG["phrase_create_new_email"] = "Создать новый Email"; +$LANG["phrase_create_new_menu"] = "Создание нового меню"; +$LANG["phrase_create_new_option_list"] = "Создать новый список Вариант"; +$LANG["phrase_create_new_option_list_group"] = "Создать новую группу списке опций"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Создать новый список Вариант »"; +$LANG["phrase_create_new_view"] = "Создать Открыть"; +$LANG["phrase_create_new_view_group"] = "Создать новую группу Просмотреть"; +$LANG["phrase_custom_display_format"] = "Пользовательский формат отображения"; +$LANG["phrase_custom_recipient"] = "Пользовательские Получатель"; +$LANG["phrase_custom_url"] = "Пользовательский URL"; +$LANG["phrase_dark_blue"] = "Темно-синий"; +$LANG["phrase_data_type"] = "Тип данных"; +$LANG["phrase_database_hostname"] = "База данных хоста"; +$LANG["phrase_database_name"] = "Название базы данных"; +$LANG["phrase_database_password"] = "База данных паролей"; +$LANG["phrase_database_settings"] = "Настройки базы данных"; +$LANG["phrase_database_setup"] = "Настройка базы данных"; +$LANG["phrase_database_table_prefix"] = "Префикс таблиц БД"; +$LANG["phrase_database_username"] = "Имя пользователя базы данных"; +$LANG["phrase_date_format"] = "Формат даты"; +$LANG["phrase_db_column"] = "DB Колонка"; +$LANG["phrase_db_setup_page_4"] = "4. Настройка базы данных"; +$LANG["phrase_default_client_account_theme"] = "Счет клиента по умолчанию тема"; +$LANG["phrase_default_date_field_search_value"] = "Дата по умолчанию поле поиска значение"; +$LANG["phrase_default_language"] = "Язык по умолчанию"; +$LANG["phrase_default_menu"] = "Меню по умолчанию"; +$LANG["phrase_default_sessions_timeout"] = "По умолчанию Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Сортировка по умолчанию"; +$LANG["phrase_default_tab_label"] = "Данные"; +$LANG["phrase_default_theme"] = "Тема по умолчанию"; +$LANG["phrase_default_value"] = "Значение по умолчанию"; +$LANG["phrase_default_values"] = "Значения по умолчанию"; +$LANG["phrase_default_values_new_submissions"] = "Значения по умолчанию для новых предложений"; +$LANG["phrase_delete_field"] = "Удалить поле"; +$LANG["phrase_delete_form"] = "Удалить форму"; +$LANG["phrase_delete_row"] = "Удалить строку"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Удалить связанные файлы при удалении представления"; +$LANG["phrase_delete_view"] = "Удалить Посмотреть"; +$LANG["phrase_disconnect_rows"] = "Отключить строк"; +$LANG["phrase_display_email"] = "Дисплей электронной почты"; +$LANG["phrase_display_name"] = "Отображаемое имя"; +$LANG["phrase_display_text"] = "Показать текст"; +$LANG["phrase_display_value"] = "Отображаемое значение"; +$LANG["phrase_edit_admin_menu"] = "Изменить Меню Admin"; +$LANG["phrase_edit_client"] = "Изменить клиента"; +$LANG["phrase_edit_client_menu"] = "Изменить клиента меню"; +$LANG["phrase_edit_email_template"] = "Изменить шаблон электронного сообщения"; +$LANG["phrase_edit_field"] = "Поле ввода"; +$LANG["phrase_edit_field_c"] = "Изменить поле:"; +$LANG["phrase_edit_form"] = "Изменить форму"; +$LANG["phrase_edit_form_access_type_b"] = "[Изменить тип формы доступ]"; +$LANG["phrase_edit_option_list"] = "Редактировать список опций"; +$LANG["phrase_edit_submission"] = "Изменить представление"; +$LANG["phrase_edit_submission_label"] = "Изменить представление этикетки"; +$LANG["phrase_edit_view"] = "Изменить вид"; +$LANG["phrase_email_format"] = "Формат электронной почты"; +$LANG["phrase_email_settings"] = "Настройки электронной почты"; +$LANG["phrase_email_template"] = "Email Template"; +$LANG["phrase_email_template_name"] = "Email название шаблона"; +$LANG["phrase_error_learn_more"] = "Узнайте больше об этой ошибке."; +$LANG["phrase_error_text_intro"] = "Исправьте следующие ошибки (S) и обновить:"; +$LANG["phrase_errors_learn_more"] = "Нажмите на коды ошибок, чтобы узнать больше."; +$LANG["phrase_event_trigger"] = "Триггер события"; +$LANG["phrase_external_form"] = "Внешние формы"; +$LANG["phrase_external_form_info"] = "Внешняя информация Форм"; +$LANG["phrase_external_your_own_form"] = "Внешний (свою собственную форму)"; +$LANG["phrase_field_comments"] = "Поле Комментарии"; +$LANG["phrase_field_label"] = "Полевые Label"; +$LANG["phrase_field_options"] = "Полевые Функции"; +$LANG["phrase_field_size"] = "Размер поля"; +$LANG["phrase_field_skipped"] = "Полевые пропущенный"; +$LANG["phrase_field_specific_settings"] = "Специализированные Настройки"; +$LANG["phrase_field_type"] = "Тип поля"; +$LANG["phrase_field_type_no_validation"] = "Есть нет правила проверки для этого типа поля."; +$LANG["phrase_field_types"] = "Типы полей"; +$LANG["phrase_field_value"] = "Поле Значение"; +$LANG["phrase_field_values_to_display_values"] = "Полевые ценности »отображения значений"; +$LANG["phrase_final_touches_page_6"] = "6. Последние штрихи"; +$LANG["phrase_finalize_form"] = "Завершить форму"; +$LANG["phrase_first_name"] = "Имя"; +$LANG["phrase_footer_text"] = "Колонтитул текст"; +$LANG["phrase_for_any_form_submission"] = "Для любой формы представления"; +$LANG["phrase_for_view_submissions"] = "Только представлений, которые вписываются в следующем Просмотр (ов)"; +$LANG["phrase_forgot_password"] = "Забыли пароль?"; +$LANG["phrase_form_already_selected"] = "Форм уже выбрали"; +$LANG["phrase_form_email_field_b_c"] = "[Форма] электронной области:"; +$LANG["phrase_form_email_field_configuration"] = "Форм Email конфигурация поля"; +$LANG["phrase_form_email_fields"] = "Поля формы Email"; +$LANG["phrase_form_field"] = "Полевая форма"; +$LANG["phrase_form_field_contents"] = "Содержание поля формы"; +$LANG["phrase_form_field_name"] = "Имя поля формы"; +$LANG["phrase_form_field_placeholders"] = "Заполнителей полей формы"; +$LANG["phrase_form_fields"] = "Поля формы"; +$LANG["phrase_form_info"] = "Форма информации"; +$LANG["phrase_form_info_2"] = "2. Форма информации"; +$LANG["phrase_form_list"] = "Форма Список"; +$LANG["phrase_form_name"] = "Форма Имя"; +$LANG["phrase_form_page"] = "Форм страницу"; +$LANG["phrase_form_placeholders"] = "Форм Местозаполнители"; +$LANG["phrase_form_submission"] = "Форма представления"; +$LANG["phrase_form_submissions"] = "Форма представления"; +$LANG["phrase_form_type"] = "Тип формы"; +$LANG["phrase_form_url"] = "Форм URL"; +$LANG["phrase_form_urls"] = "Форма URL-адресов"; +$LANG["phrase_forms_assigned_to_any_account"] = "Формы назначены на любой счет"; +$LANG["phrase_forms_page_default_message"] = "Формы страницы по умолчанию сообщение"; +$LANG["phrase_ft_installation"] = "Инсрументы скрипта установки"; +$LANG["phrase_full_width"] = "Полная ширина"; +$LANG["phrase_getting_started"] = "Приступая к работе"; +$LANG["phrase_global_placeholders"] = "Глобальная Местозаполнители"; +$LANG["phrase_group_name"] = "Название группы"; +$LANG["phrase_group_options_q"] = "Группа варианты?"; +$LANG["phrase_group_rows"] = "Группа строк"; +$LANG["phrase_have_fun"] = "Удачи!"; +$LANG["phrase_highlight_colour"] = "Выделите цвета"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML шаблон"; +$LANG["phrase_images_media"] = "Изображения / Медиа"; +$LANG["phrase_import_option_list_rightarrow"] = "Импорт списка Вариант »"; +$LANG["phrase_input_length"] = "Входная длина"; +$LANG["phrase_installation_help"] = "Установка обоев"; +$LANG["phrase_internal_form"] = "Внутренняя форма"; +$LANG["phrase_ip_address"] = "IP-адрес"; +$LANG["phrase_is_multi_page_form_q"] = "Это многостраничный форму?"; +$LANG["phrase_label_response_placeholders"] = "Этикетка / ответ заполнителей"; +$LANG["phrase_large_300px"] = "Большой (300 пикселей)"; +$LANG["phrase_large_400px"] = "Большой (400 пикселей)"; +$LANG["phrase_last_7_days"] = "Последние 7 дней"; +$LANG["phrase_last_logged_in"] = "Последние посетившие сайт"; +$LANG["phrase_last_modified"] = "Изменен"; +$LANG["phrase_last_modified_date"] = "Последние обновления"; +$LANG["phrase_last_name"] = "Фамилия"; +$LANG["phrase_letters_only"] = "Письма только"; +$LANG["phrase_light_brown"] = "Темно-русый"; +$LANG["phrase_limit_email_content"] = "Предельное содержание электронной почты в поля Открыть"; +$LANG["phrase_loading_ellipsis"] = "Загрузка ..."; +$LANG["phrase_log_in"] = "Войти"; +$LANG["phrase_login_as_user"] = "Войти как этот пользователь"; +$LANG["phrase_login_info"] = "Войти информация"; +$LANG["phrase_login_page"] = "Войти страницу"; +$LANG["phrase_login_panel_c"] = "Войти Группы:"; +$LANG["phrase_login_panel_leftarrows"] = "«Логин Группы"; +$LANG["phrase_login_password"] = "Логин Пароль"; +$LANG["phrase_login_username"] = "Войти Имя пользователя"; +$LANG["phrase_logo_link_url"] = "Ссылка на логотип URL"; +$LANG["phrase_logout_url"] = "Выйти URL"; +$LANG["phrase_main_nav"] = "Главное Nav"; +$LANG["phrase_main_settings"] = "Главные настройки"; +$LANG["phrase_manage_client"] = "Управление клиентов"; +$LANG["phrase_manage_client_omit_list"] = "Управление клиента Пропустить Список"; +$LANG["phrase_max_file_size"] = "Максимальный размер файла"; +$LANG["phrase_max_length"] = "Максимальная длина"; +$LANG["phrase_max_length_words_chars"] = "- Максимальная длина (слов / символов)"; +$LANG["phrase_may_add_submissions"] = "Может добавить Представления"; +$LANG["phrase_may_copy_submissions"] = "Может копировать материалы"; +$LANG["phrase_may_delete_submissions"] = "Материалы могут быть удалены"; +$LANG["phrase_medium_150px"] = "Среднее (150px)"; +$LANG["phrase_medium_200px"] = "Среднее (200px)"; +$LANG["phrase_menu_name"] = "Название меню"; +$LANG["phrase_menu_type"] = "Тип меню"; +$LANG["phrase_min_password_length"] = "Минимальная длина пароля"; +$LANG["phrase_module_description"] = "Описание модуля"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Модуль Nav"; +$LANG["phrase_month_to_date"] = "Месяц на сегодняшний день"; +$LANG["phrase_multi_select"] = "Множественный выбор"; +$LANG["phrase_multi_select_dropdown"] = "Multi-Select выпадающих"; +$LANG["phrase_multiple_fields_found"] = "Несколько полей,!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Имя / Фамилия"; +$LANG["phrase_new_blank_email"] = "Новые пустое письмо"; +$LANG["phrase_new_blank_option_list"] = "Новый пустой список Вариант"; +$LANG["phrase_new_blank_view"] = "Открыть новую пустую"; +$LANG["phrase_new_ft_installation"] = "Новая форма инструментов установке"; +$LANG["phrase_new_option_list"] = "Новый список Вариант"; +$LANG["phrase_new_password"] = "Новый пароль"; +$LANG["phrase_new_password_reenter"] = "Новый пароль (повторно введите)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "Новый взгляд - все поля"; +$LANG["phrase_next_client"] = "следующего клиента »"; +$LANG["phrase_next_field"] = "следующая »поле"; +$LANG["phrase_next_form"] = "Следующая форма »"; +$LANG["phrase_next_view"] = "След »"; +$LANG["phrase_no_clients"] = "Не клиенты"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Нет компенсирована"; +$LANG["phrase_no_option_lists_available"] = "Нет опций списки доступны."; +$LANG["phrase_no_views"] = "Нет просмотров"; +$LANG["phrase_no_views_with_filters_p"] = "(Нет Просмотров с фильтрами определен)"; +$LANG["phrase_none_not_recommended"] = "Нет (не рекомендуется)"; +$LANG["phrase_not_assigned_to_option_list"] = "Это поле не назначены списка опций."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Не равно"; +$LANG["phrase_not_found"] = "Не найдено!"; +$LANG["phrase_not_like"] = "Not Like"; +$LANG["phrase_not_visible_to_client"] = "(не видимые с клиентом)"; +$LANG["phrase_num_clients_per_page"] = "Кол-клиентов за страницу"; +$LANG["phrase_num_emails_per_page"] = "Кол-писем в страницу"; +$LANG["phrase_num_fields"] = "Количество полей"; +$LANG["phrase_num_forms_per_page"] = "Кол-форм на странице"; +$LANG["phrase_num_menus_per_page"] = "Кол-меню на странице"; +$LANG["phrase_num_modules_per_page"] = "Кол-модулей на страницу"; +$LANG["phrase_num_option_lists_per_page"] = "Num Вариант Списки на страницу"; +$LANG["phrase_num_options"] = "Num параметры"; +$LANG["phrase_num_rows"] = "Num Строки"; +$LANG["phrase_numbers_only"] = "Только цифры"; +$LANG["phrase_often_localhost"] = "(часто "Localhost")"; +$LANG["phrase_on_form_submission"] = "По форме представления"; +$LANG["phrase_one_char_number"] = "По крайней мере один символ цифрой (0-9)"; +$LANG["phrase_one_char_upper"] = "По крайней мере один символ верхнего регистра"; +$LANG["phrase_one_special_char"] = "По крайней мере, одна из {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(только конкретные клиенты имеют доступ)"; +$LANG["phrase_open_form_in_dialog"] = "Открыть форму в диалоговом окне"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Открыть форму в новой вкладке / окне"; +$LANG["phrase_option_list"] = "Вариант Список"; +$LANG["phrase_option_list_name"] = "Имя списка опций"; +$LANG["phrase_option_list_or_contents"] = "Список опций / Содержание"; +$LANG["phrase_option_lists"] = "Вариант Списки"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Названия страниц"; +$LANG["phrase_pass_on"] = "Проходи"; +$LANG["phrase_password_min"] = "Он должен быть по крайней мере {\$length} символов."; +$LANG["phrase_password_one_number"] = "Она должна содержать по крайней мере один номер (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Она должна содержать по меньшей мере одну заглавную букву."; +$LANG["phrase_password_requirements_c"] = "Пароль требования:"; +$LANG["phrase_password_reset"] = "Сброс пароля"; +$LANG["phrase_password_special_char"] = "Она должна содержать по крайней мере один из следующих символов: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Разрешения / Другие настройки"; +$LANG["phrase_permitted_file_types"] = "Разрешенные типы файлов"; +$LANG["phrase_phone_number"] = "Номер телефона"; +$LANG["phrase_phone_number_format"] = "Формат номера телефона"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini максимально допустимый размер загружаемых файлов:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Пожалуйста, подтвердите"; +$LANG["phrase_please_enter_license_key"] = "Пожалуйста, введите Ваш лицензионный ключ"; +$LANG["phrase_please_select"] = "Выберите"; +$LANG["phrase_please_select_form"] = "Пожалуйста, выберите форму"; +$LANG["phrase_prev_client"] = "«Предыдущее клиента"; +$LANG["phrase_prev_form"] = "«Предыдущая форма"; +$LANG["phrase_prevent_password_reuse"] = "Предотвращению повторного использования паролей Последнее #"; +$LANG["phrase_previous_field"] = "«предыдущее поле"; +$LANG["phrase_previous_page"] = "Предыдущая страница"; +$LANG["phrase_previous_view"] = "«Предыдущее Посмотреть"; +$LANG["phrase_program_name"] = "Название программы"; +$LANG["phrase_public_form_omit_list"] = "Опустить общественная форма Список"; +$LANG["phrase_public_view_omit_list"] = "Зрения общественности Опустить Список"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Существовал проблемы с помощью следующего запроса:"; +$LANG["phrase_radio_buttons"] = "Переключатели"; +$LANG["phrase_random_form_submission"] = "Случайные форма представления"; +$LANG["phrase_re_enter_password"] = "Повторный ввод пароля"; +$LANG["phrase_recipient_type"] = "Тип получателя"; +$LANG["phrase_redirect_url"] = "Перенаправление URL"; +$LANG["phrase_refresh_list"] = "Обновить список"; +$LANG["phrase_refresh_module_list"] = "Обновить список модулей"; +$LANG["phrase_refresh_page"] = "Обновить страницу"; +$LANG["phrase_refresh_theme_list"] = "Обновить список тем"; +$LANG["phrase_register_new_email"] = "Зарегистрировать новый Email"; +$LANG["phrase_remaining_characters"] = "Остальные символы"; +$LANG["phrase_remaining_words"] = "Остальные слова"; +$LANG["phrase_remove_tabs"] = "Удалить вкладку"; +$LANG["phrase_required_password_chars"] = "Обязательные символы пароля"; +$LANG["phrase_resend_test_submission"] = "Повторно испытания Представление"; +$LANG["phrase_return_form_list"] = "Вернуться к форме Список"; +$LANG["phrase_row_selected"] = "{\$num_rows} ряду выбранных"; +$LANG["phrase_rows_selected"] = "{\$num_rows} выбранных строк"; +$LANG["phrase_sample_data"] = "Пример данных"; +$LANG["phrase_save_changes"] = "Сохранить изменения"; +$LANG["phrase_search_keyword"] = "Поиск ключевых слов"; +$LANG["phrase_security_settings"] = "Настройки безопасности"; +$LANG["phrase_select_all"] = "Выбрать все"; +$LANG["phrase_select_all_X_results"] = "Выделить все {\$numresults} Результаты"; +$LANG["phrase_select_all_on_page"] = "Выбрать все на странице"; +$LANG["phrase_select_date"] = "Выбрать дату"; +$LANG["phrase_select_field"] = "Выберите поле"; +$LANG["phrase_select_swatch"] = "Выберите образец"; +$LANG["phrase_selected_clients"] = "Избранные клиенты"; +$LANG["phrase_selected_views"] = "Выбранный Просмотры"; +$LANG["phrase_send_email"] = "Отправить Email"; +$LANG["phrase_send_test_email"] = "Отправить тестовое сообщение"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Заданное значение"; +$LANG["phrase_setup_options"] = "Параметры установки"; +$LANG["phrase_show_all"] = "Показать все"; +$LANG["phrase_show_form"] = "Показать Формы"; +$LANG["phrase_size_large"] = "Большие (ТЕКСТ)"; +$LANG["phrase_size_medium"] = "Средний (<= 256 символов)"; +$LANG["phrase_size_small"] = "Малые (<= 20 символов)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 символов)"; +$LANG["phrase_size_very_large"] = "Очень большой (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Перейти Полевой"; +$LANG["phrase_skip_step"] = "Пропустите шаг"; +$LANG["phrase_small_100px"] = "Маленький (100 пикселей)"; +$LANG["phrase_small_80px"] = "Маленький (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Заполните поля:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill Документация пользователя »"; +$LANG["phrase_sort_as"] = "Сортировать Как"; +$LANG["phrase_special_fields"] = "Специальные поля"; +$LANG["phrase_standard_fields"] = "Стандартные поля"; +$LANG["phrase_standard_filters"] = "Стандартные фильтры »"; +$LANG["phrase_step_1"] = "Шаг 1"; +$LANG["phrase_step_2"] = "Шаг 2"; +$LANG["phrase_step_3"] = "Шаг 3"; +$LANG["phrase_step_4"] = "Шаг 4"; +$LANG["phrase_step_5"] = "Шаг 5"; +$LANG["phrase_step_6"] = "Шаг 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Газ-теги в форме представления"; +$LANG["phrase_subject_line"] = "Заглавие"; +$LANG["phrase_submission_date"] = "Дата представления"; +$LANG["phrase_submission_id"] = "Представление ID"; +$LANG["phrase_submission_made"] = "Представление сделано: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Представление типа"; +$LANG["phrase_submissions_per_page"] = "Материалы на странице"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Вы не можете добавить проверку системы полей."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Вкладка Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Испытание папкам"; +$LANG["phrase_test_submission"] = "Испытание Представление"; +$LANG["phrase_test_submission_3"] = "3. Испытание Представление"; +$LANG["phrase_test_submission_received"] = "Испытание сообщению, полученному"; +$LANG["phrase_text_and_html"] = "Текст & HTML"; +$LANG["phrase_text_email"] = "Текст электронного письма"; +$LANG["phrase_text_template"] = "Текст шаблона"; +$LANG["phrase_the_previous_month"] = "Предыдущий месяц"; +$LANG["phrase_theme_description"] = "Тема Описание"; +$LANG["phrase_theme_info"] = "Тема информация"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Всего результатов:"; +$LANG["phrase_type_c"] = "Тип ошибки:"; +$LANG["phrase_unselect_all"] = "Снять выделение"; +$LANG["phrase_update_accounts"] = "Обновление счетов"; +$LANG["phrase_update_email_template"] = "Обновление шаблон электронного сообщения"; +$LANG["phrase_update_field"] = "Полевые обновления"; +$LANG["phrase_update_order"] = "Обновление заказ"; +$LANG["phrase_update_view"] = "Update Список"; +$LANG["phrase_upload_file"] = "Загрузить файл"; +$LANG["phrase_upload_files"] = "Загрузить файлы"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Загрузить путь папки"; +$LANG["phrase_upload_folder_url"] = "Загрузить папки URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Используйте значения по умолчанию?"; +$LANG["phrase_used_by_num_form_fields"] = "Используется # поля формы"; +$LANG["phrase_uses_swatches"] = "Использование Образцы"; +$LANG["phrase_valid_email"] = "Действительно Email"; +$LANG["phrase_validation_error"] = "Ошибка проверки"; +$LANG["phrase_validation_rule"] = "Правила проверки"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Посмотреть группы"; +$LANG["phrase_view_id"] = "Просмотр ID"; +$LANG["phrase_view_name"] = "Открыть Имя"; +$LANG["phrase_view_placeholders"] = "Посмотреть заполнителей"; +$LANG["phrase_view_submissions"] = "Просмотр поступлений"; +$LANG["phrase_view_uploaded_files"] = "Просмотр загруженных файлов"; +$LANG["phrase_viewing_range"] = "[Просмотр {\$startnum} на {\$endnum}]"; +$LANG["phrase_when_sent"] = "Когда отправлено"; +$LANG["phrase_when_submission_is_deleted"] = "При удалении представления"; +$LANG["phrase_when_submission_is_edited"] = "При редактировании представления"; +$LANG["phrase_who_can_access"] = "Кто имеет доступ?"; +$LANG["phrase_word_limit_p"] = "максимальное количество слов."; +$LANG["phrase_year_to_date"] = "С начала года"; +$LANG["phrase_yes_for_all_views"] = "Да, для всех соображений"; +$LANG["phrase_yes_for_specific_views"] = "Да, для конкретных мнений"; +$LANG["phrase_your_account"] = "Мой аккаунт"; +$LANG["phrase_your_email"] = "Ваш Email"; +$LANG["phrase_your_email_address"] = "Ваш адрес электронной почты"; +$LANG["processing_form_disabled"] = "К сожалению, эта форма была отключена."; +$LANG["processing_form_incomplete"] = "К сожалению, эта форма как представляется, не в полной мере создана в рамках Инсрументы. Наиболее вероятной причиной этой проблемы является то, что вы удалили "form_tools_initialize_form" скрытые поля формы, но не выполните все шаги "Добавить форму" процесса.

    Пожалуйста, войдите и пересмотреть формы конфигурации."; +$LANG["processing_init_complete"] = "Спасибо! Тестовая представление было поставлено успешным. Пожалуйста, вернитесь к форме инструментов Панель управления и нажмите кнопку "Обновить" в нижней части Add Form Шаг 3 странице, чтобы завершить установку вашей форме."; +$LANG["processing_invalid_form_id"] = "К сожалению, это не кажется, действительное удостоверение личности формы."; +$LANG["processing_no_form_id"] = "process.php требует форма ID для обработки. Убедитесь, что ваша форма содержит скрытое поле с именем "form_tools_form_id" Это проходя по форме ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Инсрументы не в состоянии определить, куда перенаправить когда им не удается войти с искаженным образом. Прошу передать в скрытом поле с именем form_tools_form_url содержащие URL формы."; +$LANG["processing_no_post_vars"] = "process.php не получает никаких данных. Примечание: Этот сценарий не может быть загружен непосредственно в браузере.
    Убедитесь, что ваши формы отправки по почте."; +$LANG["processing_no_redirect_url"] = "Данное представление было обработано правильно, но вы не указали URL переадресации для этой формы! Изменить свою анкету в форме инструментов пользовательского интерфейса и добавить URL переадресации."; +$LANG["special_language"] = "Russian"; +$LANG["special_language_locale"] = "Russian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Все новые счета клиента будет создан с настройками и разрешений, определяемые ниже. Чтобы переопределить настройку для конкретного клиента, изменить учетную запись клиента, и посетить их на вкладку Настройка."; +$LANG["text_add_form_choose_integration_method"] = "Выбор метода, который вы хотите использовать для интеграции форму с формой Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Этот метод использует форму Tools API , включенных в основной форме сценария Tools. API предоставляет ряд полезных функций, чтобы сделать работу по интеграции форму с формой инструменты как можно более простым. Есть никаких ограничений, чтобы, как ваша форма может быть представлена ​​при использовании API. Вы можете представить содержимое в один присест, или страница за страницей, вы можете добавить свои собственные проверки на стороне сервера, CAPTCHA изображений, вы можете представить информацию в настоящее время, но только сказать ему, чтобы отобразить представление в форме инструментов пользовательского интерфейса позднее (см. Окончательные Материалы раздела в справочной документации по API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Для того, чтобы отправить данные формы с помощью PHP, ваша форма должна быть расположена на том же сайте, как эта установка Форма Tools. Во-вторых, для не-технических и начинающих Форма инструменты пользователей, этот метод может быть немного пугающим на первый взгляд. Но есть много документации, чтобы помочь вам, в том числе два простых учебники для интеграции одно-и многостраничные формы (это связано с на более позднем этапе)."; +$LANG["text_add_form_direct_submission_benefits"] = "Это самый простой способ для отправки формы Инсрументы. Она не требует знания PHP и требует лишь очень незначительные изменения в форму. Это здорово для небольших форм, где вы просто хотите представить информацию в базе данных, то перенаправляют пользователя на "благодарить" страницы."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Это представление метода очень проста в использовании, но не дает больше контроля для более сложных формах. Multi-страницу формы или формы, которые требуют серверных проверку лучше подходят для второго метода: Отправка через форму инструменты API."; +$LANG["text_add_form_field_types1"] = "Почти готово! Эта страница пытается найти все поля формы и определить их типов полей. Нажмите Smart Fill кнопку справа, чтобы начать. Вы будете только разрешено продолжить, когда все действия были решены - вопросы, которые нуждаются в вашем внимании появляются в "действия, необходимые " колонки."; +$LANG["text_add_form_field_types2"] = "Если форма не в HTML, нажмите кнопку Пропустить шаг для продолжения. Все это можно настроить позже."; +$LANG["text_add_form_field_types3"] = "Это перезагрузка содержимого вашего вида (ов). Примечание: это приведет к перезаписи любые изменения, сделанные на этой странице."; +$LANG["text_add_form_field_types4"] = "В случае, если вы столкнетесь с проблемами, нажмите здесь, чтобы пропустить этот шаг. Все неразрешенные поля настроены на использование значений по умолчанию. Вы можете настроить эти поля позже."; +$LANG["text_add_form_field_types_manual_upload"] = "Если вы не смогли Smart Fill поля ваши, вы можете попробовать альтернативное решение: загрузить копии форм в поля ниже."; +$LANG["text_add_form_field_types_manual_upload2"] = "Обратите внимание: не загружать сырье PHP страниц (или другой код на стороне сервера) - просто загрузить HTML-версии. Чтобы получить это, просмотреть и сохранить страницу из веб-браузера."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Существовали несколько полей, которые не могут быть найдены в виде страницы, указанный Вами. В основном, это вероятно, вызвана одной из следующих действий:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Вы ввели одну или несколько форм адреса ваших многостраничные формы неправильно."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Один или несколько страниц вашей форме, защищены паролем и скрипт не может получить доступ к странице."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Вы неправильно указали форму URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Нажмите здесь , чтобы вернуться к странице Информация о форме, чтобы проверить настройки."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Вы изменили свой вид (ы) после внесения представления теста"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Нажмите здесь , чтобы положить через еще одно испытание представления."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Ваша форма защищена паролем и скрипт не может получить доступ к странице."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "В другой вкладке / окне этого браузера, войдите в форму затем нажмите кнопку Обновить страницу ниже, чтобы попытаться снова найти полей."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Если ни один из выше работы решения, Вы также можете попытаться вручную загружать формы для обработки ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Существовали несколько полей, которые не могут быть найдены в виде страниц, указанный Вами. В основном, это вероятно, вызвана одной из них:"; +$LANG["text_add_form_help_link"] = "Если у вас возникли какие-либо проблемы во время этих шагов, попробуйте прочитать из пользовательской документации ."; +$LANG["text_add_form_step_1_text_1"] = "Следующие страницы проведут вас через шаги, чтобы настроить инструменты форма для хранения ваших представлениях форме. Прежде чем продолжать, убедитесь, что:"; +$LANG["text_add_form_step_1_text_2"] = "форму уже создана и ее доступной через URL (Localhost отлично)"; +$LANG["text_add_form_step_1_text_3"] = "могут изменить форму"; +$LANG["text_add_form_step_2_para_2"] = "Откройте форму в редакторе и изменить форму теги к следующему, в том числе два скрытых полях."; +$LANG["text_add_form_step_2_para_3"] = "Затем откройте форму в веб-браузере. Заполнить в каждой области и представить его. После отправки заявки, вы должны увидеть сообщение уведомления. После отображения этого сообщения, вернуться на эту страницу и нажмите кнопку "Обновить" ниже. Когда этот процесс завершится, вы будете продолжать видеть ниже кнопку, которая приведет вас к следующему шагу."; +$LANG["text_add_form_step_2_para_6"] = "В форму представления, относятся следующие ценности. Они могут быть установлены непосредственно через PHP или проходя через форму на себя. Ниже приведены примеры каждого из них. (\$ VarName) является хэш (или ассоциативный массив) всех форм представления информации - это, как правило postvar \$ () или (\$) sessionvar переменная, но оно может быть построено Custom."; +$LANG["text_add_form_step_2_text_2"] = "Введите адрес вашего "большое спасибо " страница. Это где вы хотите, чтобы люди быть направлены на после форма была отправлена."; +$LANG["text_add_form_step_3_para_1"] = "На этой странице перечислены все поля в форме представления. Просьба рассмотреть каждое поле и удалить все, что вам не нужно хранить для каждого представления. Если вы удалите действительны области случайно, или хотите изменить информацию, хранящуюся вашей форме, вернуться к предыдущей странице, чтобы отправить новое представление испытаний."; +$LANG["text_add_form_step_3_para_2"] = "Примечание: если вы отправляете несколько значений с помощью флажков или множественного выбора окна, убедитесь, что имя поля заканчивается символов [] (см. Документация пользователя для получения дополнительной информации)."; +$LANG["text_add_form_step_3_text_1"] = "Вот где начинается самое интересное! На данный момент, форма Инструменты ждет испытание представления из формы. Она будет использовать эту форму представления знать, какая информация должна храниться в базе данных."; +$LANG["text_add_form_step_3_text_2"] = ", указав ваше форме Инсрументы"; +$LANG["text_add_form_step_3_text_3"] = "Воспользовавшись формой инструменты API"; +$LANG["text_add_form_step_3_text_4"] = "Чтобы помочь интегрировать вашу форму, мы предлагаем вам прочитать одну из следующих пособий:"; +$LANG["text_add_form_step_3_text_5"] = "Они объясняют, как создать свою анкету в подготовке к испытанию представления, но и другие сведения, которые могут быть полезны. Линия PHP вам понадобится:"; +$LANG["text_add_form_step_3_text_6"] = "Это гарантирует, что данные на самом деле направлены Инсрументы. Когда вы создали через ваши представления теста, нажмите на кнопку ниже."; +$LANG["text_add_form_step_3_text_7"] = "На странице до вашего окончательного "спасибо" страницы, не забудьте добавить следующий параметр в переменную \$ параметры:"; +$LANG["text_add_form_step_5_para_1"] = "База данных была создана для этой формы и формы был активирован для использования. Если вы сделали представление, указав ваше форме process.php, Вы можете вернуться в форму и удалить скрытые следующие области:"; +$LANG["text_add_form_step_5_para_2"] = "Затем перейдите на "спасибо" на пустой странице сессий. После этого, все новые формы представления будут обрабатываться и храниться по форме инструменты. Попробуйте сделать представление или два, чтобы проверить информацию, все загрузки правильно."; +$LANG["text_add_form_step_5_para_3"] = "Если вы хотите точно настроить вашу форму для опций, таких как автоматическое электронной почте, добавление дополнительных полей формы поле, или настройка типа полей формы, Вы можете изменить форму в любой момент."; +$LANG["text_add_form_step_5_para_4"] = "Поскольку ваша форма содержит поле загрузки файла, вам нужно будет настроить каждое поле для указания папки загрузки файлов, какие файлы и разрешается. Это можно найти на вкладке Дисплей формы редактирования страницы."; +$LANG["text_add_form_step_5_para_5"] = "Если представление было направлено через API, изменить ft_api_init_form_page линию на первой странице вашей формы:"; +$LANG["text_add_submission_button"] = "Добавить кнопку Представление отображается только для просмотров, которые "Может добавить представлений " опция установлена ​​в "да "."; +$LANG["text_admin_email_placeholder_info"] = "Это адрес электронной почты администратора Инсрументы, определенный в настройках своей учетной записи. Это выводит только адрес электронной почты, так что если вы хотите использовать в качестве ссылки HTML, вам необходимо упаковать его в теге <a>, вот так:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ AdminEmail) </ A>"; +$LANG["text_also_default_login_page_theme"] = "(А также страницы по умолчанию Логин теме)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Во-первых, пожалуйста, выберите форму типа."; +$LANG["text_client_form_page"] = "На этой странице перечислены все формы и просмотров принадлежащие этому клиенту. Подсказка: для того, чтобы они видели, представленные формы, они должны быть назначены по меньшей мере одно мнение."; +$LANG["text_client_map_filters_desc1"] = "Фильтры клиента карта позволяет ограничить представлений, которые появятся в этом Открыть счет отображения значений в поле формы со значениями в учетной записи клиента."; +$LANG["text_client_no_forms"] = "У вас нет формы доступны для просмотра."; +$LANG["text_client_welcome"] = "Добро пожаловать! Эта программа хранит всю информацию, представленную посетители вашего сайта. Для просмотра материалов для конкретной формы нажмите на ссылку "Просмотреть или см. левое меню навигации для других вариантов."; +$LANG["text_config_file_created"] = "Ваш config.php файл был создан."; +$LANG["text_config_file_not_created"] = "Мы не смогли создать свой config.php. Вам нужно будет создать файл вручную."; +$LANG["text_config_file_not_created_instructions"] = "Скопируйте и вставьте содержимое из раздела ниже в файл config.php и загрузите его через FTP к форме Инструменты / глобальные папки (папки, которая содержит также несколько других файлов и каталогов, один файл с названием library.php)."; +$LANG["text_confirm_delete_form"] = "Да, я хочу, чтобы удалить эту форму"; +$LANG["text_create_admin_account"] = "Сейчас мы собираемся создать аккаунт администратора. Это используется для управления всеми аспектами форма инструменты, такие как добавление форм и создание учетных записей клиентов."; +$LANG["text_create_new_client_account"] = "Используйте форму ниже, чтобы создать новый аккаунт клиента. Все поля являются обязательными."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "см. PHP {\$datefunctionlink} функция для форматирования"; +$LANG["text_default_file_settings_page"] = "Эта страница определяет настройки загрузки файлов для установки Инсрументы. Эти правила распространяются на все файлы, загруженные через Инсрументы, если явно не переопределяется для отдельных полей формы. Примечание: если вы измените папку после загрузки файлов были загружены, они будут автоматически перенесены в новую папку."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Прежде чем продолжать, вам нужно обновить / Темы / Default / папке кэша для обеспечения полного чтение и запись. Как только это будет сделано, это сообщение исчезнет, и вы можете установить скрипт."; +$LANG["text_default_values_in_view"] = "Этот раздел не является обязательным. Все материалы, созданные с этой точки зрения будет содержать значения по умолчанию указан здесь."; +$LANG["text_delete_all_forms"] = "Я хочу, чтобы удалить все файлы, которые были загружены с помощью этой формы"; +$LANG["text_delete_form_warning"] = "Вы уверены, что хотите удалить эту форму? Это действие не может быть отменено. Все данные будут безвозвратно утеряны!"; +$LANG["text_edit_admin_menu_page"] = "Вы можете редактировать меню ниже. Чтобы всегда иметь доступ ко всей функциональности имеющихся в Инсрументы, необходимы следующие страницы: формы, клиенты, ваша учетная запись, модули, Настройки и Выйти."; +$LANG["text_edit_client_menu_page"] = "Этот раздел позволяет настроить левую колонку навигации для каждого пользователя. Вы можете создать столько меня клиент, как вы и хотели присвоить любой счет в одном из них. По умолчанию есть два меню: одно для вас, администратор и один для всех учетных записей клиентов. Учетная запись администратора может быть изменена, но не удаляются."; +$LANG["text_edit_tab_summary"] = "Если вы хотите эту группу полей Посмотреть в виде закладок, просто введите имя вкладки ниже. После того как вы закончите, выберите соответствующую вкладку для каждого поля группы в вкладке Поля ."; +$LANG["text_edit_view_list_page"] = "Эта вкладка определяет, какие поля будут представлены в виде столбцов на странице листинга представление, и несколько дополнительных настроек для этих полей. Внимание: Мы рекомендуем Вам добавить не более 4 или 5 наиболее важных полей в представлении."; +$LANG["text_email_settings_intro"] = "Эта страница позволяет определить, какие из ваших писем полях формы хранения и соответствующие им имена. Как только вы определите их здесь, вы можете использовать их в качестве шаблонов электронной почты получателей. Этот раздел не является обязательным."; +$LANG["text_email_tab_summary"] = "Этот раздел позволяет вам построить любое количество писем будет отправлено, когда представляется форму, а другими методами."; +$LANG["text_email_template_tab"] = "Этот раздел позволяет определить, какое содержание появляется в электронной почте. Если вы хотите отправить Ваше сообщение как только текст или электронной почте, только ввести значения для этого раздела. Если вы вводите значения для обоих, будет отправлено в обоих форматах."; +$LANG["text_email_template_text_1"] = "Там было сделано представление через вашу форму, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Там было сделано представление через вашу форму, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Спасибо за ваше представление!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Сообщение об ошибке, чтобы показать, если поле не проверка"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Внешние формы являются формами, которые уже существуют на вашем сайте, или где-нибудь в Интернете. Выберите эту опцию, если у вас есть собственные формы, которую вы хотели бы интегрироваться с формой Tools."; +$LANG["text_fields_tab_summary"] = "На этой странице перечислены все ваши поля формы. Чтобы контролировать то, как они появляются при просмотре материалов, увидеть Просмотров вкладке . Удаление поля на этой странице, удалить его из всех представленных, так что будьте осторожны!"; +$LANG["text_file_extension_info"] = "Введите расширений файлов, разделенных запятыми (например, JPG, GIF, PNG) или оставить пустым, чтобы позволить любому типу файла."; +$LANG["text_file_field_placeholders_info"] = "Поля файла есть две специальные заполнители: Ссылка файла и имя файла. Ссылка файла является полный путь к файлу, так что вы можете напрямую к нему в ваших писем; имя файла просто по имени файла."; +$LANG["text_filters_page"] = "Только те представления, которые удовлетворяют заданным вами критериям ниже появится в этом представлении."; +$LANG["text_filters_tips"] = "Советы о том, как использовать представление фильтры, см. Документация пользователя."; +$LANG["text_forgot_password"] = "Нет проблем. Просто введите имя пользователя ниже и ваш Логин информация будет отправлена на ваш адрес электронной почты на файле. Если Вы забыли свое имя пользователя, пожалуйста, напишите администратору сайта по адресу {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Эта форма содержит один или несколько файлов загрузить областях:"; +$LANG["text_form_placeholder_info"] = "Следующие заполнители могут быть использованы в любой электронной почты шаблон и язык заполнитель поля, независимо от любой Посмотреть шаблон электронной почты назначен. ВОПРОС заполнители конкретный вопрос формы; ОТВЕТ заполнители ответов на каждый вопрос."; +$LANG["text_form_submission_date_placeholder"] = "Дата представления была сделана."; +$LANG["text_form_tools_form_url"] = "Полный адрес форме. Это только имеет значение для внешних форм."; +$LANG["text_form_tools_login_url"] = "Логин URL для Инсрументы."; +$LANG["text_form_view_permission_info_admin"] = "Обратите внимание: эта форма в настоящее время имеет тип доступа администратора, так что ни один из счетов клиентов смогут увидеть это представление."; +$LANG["text_form_view_permission_info_private"] = "Обратите внимание: эта форма в настоящее время имеет закрытый тип доступа, с тем государственным и частным вариантов здесь будет ограничено, что подмножество клиентов."; +$LANG["text_ft_installed"] = "Поздравляем, форма инструментов была успешно установлена!"; +$LANG["text_global_placeholder_info"] = "Эти заполнители могут быть использованы в любой шаблон и любой формы."; +$LANG["text_group_name_explanation"] = "Для полей, добавили через Add Form процесс, это значение уже заполнены на дисплее текста независимо от пола использует значение. Вы можете изменить его, чтобы лучше охарактеризовать содержание."; +$LANG["text_install_create_config_file"] = "Инсрументы магазинах вашего сервера и настройки базы данных в файл config.php, нашел в вашей / Global / папки. Нажмите кнопку "Создать файл" кнопку, чтобы автоматически генерировать файл на вашем сервере."; +$LANG["text_install_create_database_tables"] = "Сейчас мы собираемся создать форму таблиц и разработки баз данных. Этот шаг требует самой базы данных, уже были созданы. Если вы не уверены, как это сделать, пожалуйста, обратитесь к вашему хостинг-провайдеру."; +$LANG["text_install_db_tables_error_tip_1"] = ""Неизвестный MySQL Server Host" обычно означает, что вы указали имя хоста является неверным. Может быть, попробуйте установить ее в "Localhost" - это обычный способ ссылаться на "локальный" базу данных на веб-сервере."; +$LANG["text_install_db_tables_error_tip_2"] = ""Не могу соединиться с локальным сервером MySQL через сокет" означает базу данных хоста области снова неправильно."; +$LANG["text_install_db_tables_error_tip_3"] = ""Доступ закрыт для пользователя:" означает, что существует проблема с Вашим именем пользователя и паролем."; +$LANG["text_install_db_tables_error_tip_4"] = ""Доступ закрыт для пользователя: ... к базе данных ..." означает, что хотя имя пользователя и пароль, указанные правильно, он не смог подключиться к этой конкретной базе данных с этого счета. Это может означать, что либо базе данных ваше имя неправильно, или что эта учетная запись пользователя не связано с этой базой данных."; +$LANG["text_install_email_content_text"] = "На нашем веб-сайте есть много ресурсов, которые помогут вам начать работу, включая нашу онлайн-документацию (https://docs.formtools.org) и учебные пособия (https://docs.formtools.org/tutorials). Если вы обнаружите, что застряли или задали вопрос, задайте вопрос о github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "К сожалению, форма инструменты не будут иметь возможность запускать на вашем сервере. Пожалуйста, нажмите здесь для минимальных требований."; +$LANG["text_install_system_check"] = "Эта страница проходит несколько тестов на вашей системе, чтобы обеспечить это возможность запускать Инсрументы."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Внутренние формы существуют только в форме Инструменты - не в другом месте на вашем сайте. Только форма счета Инструменты пользователь будет иметь доступ к форме. Выберите эту опцию, если у вас нет существующей форме."; +$LANG["text_internal_form_intro"] = "Используйте форму ниже, чтобы создать новую внутреннюю форму. Все настройки, в том числе количество и содержание полей формы может быть изменен и настроен позже."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "В целях Логин и использовать форму инструментов, вы должны иметь включен JavaScript в вашем браузере. Просьба дать ему сейчас, и нажмите кнопку Обновить в браузере."; +$LANG["text_last_modified_date_explanation_c"] = "В последний раз была изменена этого тезиса. Для новых представлений, это то же самое, как:"; +$LANG["text_limit_email_content_desc"] = "Эта опция работает только для HTML и текстовый контент генерируется с Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(только для списков Просмотров с одним или несколькими фильтрами определен)"; +$LANG["text_log_in_to_ft"] = "Войти в Инсрументы"; +$LANG["text_login"] = "Пожалуйста, войдите для получения доступа в \$ () имя_программы панель администрирования. Если вы забыли свой пароль, нажмите здесь."; +$LANG["text_login_info"] = "В соответствии с просьбой, вот ваша Логин информации."; +$LANG["text_name_of_form"] = "Название формы."; +$LANG["text_no_clients"] = "Есть клиенты в настоящее время нет в базе данных. Для добавления новой учетной записи клиента, нажмите кнопку "Добавить клиента кнопку ниже."; +$LANG["text_no_clients_found"] = "Не найдено ни одного клиента. Попробуйте расширение критериев поиска."; +$LANG["text_no_fields_in_view"] = "Это представление не есть какие-либо поля в нем. Нажмите на ссылку ниже."; +$LANG["text_no_forms"] = "Есть в настоящее время нет формы в базе данных. Чтобы добавить новую форму, нажмите кнопку "Добавить кнопки в форме ниже."; +$LANG["text_no_forms_found"] = "Нет формы были найдены."; +$LANG["text_no_forms_found_search"] = "Нет формы были найдены. Попытайтесь расширить критерии поиска."; +$LANG["text_no_modules_found"] = "Не найдено ни одного модуля. Попробуйте расширение критериев поиска."; +$LANG["text_no_recipients_added"] = "Нет получателей были добавлены."; +$LANG["text_no_search_results"] = "Есть никаких результатов с этим критериям поиска / View."; +$LANG["text_no_submissions_found"] = "К сожалению, было обнаружено каких-либо представлений."; +$LANG["text_no_themes"] = "У вас нет ни одной темы определена. Нажмите на кнопку ниже, чтобы освежить свою тему списке, или проверить пользователя Форма Инструменты документации для получения информации о добавлении темы."; +$LANG["text_non_deletable_fields"] = "Это поле используется за счет базового сценария и не могут быть изменены или удалены без нанесения несовместимости. Если вы хотите внести изменения в типе поля, сделать копию и редактировать копию."; +$LANG["text_option_list_group_explanation"] = "Если выбран этот вариант, он позволяет группировать ваши варианты. Как групп отображаются в зависимости от типа поля с помощью этого списка опций."; +$LANG["text_option_list_page"] = "Радио кнопки, флажки, выпадающие и множественного выбора выпадающих полях все предоставляют пользователю множество вариантов, из которых они могут выбрать один или несколько элементов. В форме Инструменты, они известны как вариант списков. Как правило, они создаются автоматически добавить внешнюю форму процесса, но вы можете вручную добавлять или редактировать свои списки опцию ниже, если ваша форма изменения содержания, либо создают поля, которые используются только внутри страны."; +$LANG["text_option_list_used_by_fields"] = "Этот список опций используется несколько полей формы. При обновлении информации ниже, он будет изменен для всех полей (см. полей формы вкладку, чтобы увидеть список полей). Если вы хотите обновить значения для одного или подмножество полей, которые в настоящее время назначен, нажмите здесь , чтобы создать новый список Вариант с теми же значениями, как этот. Затем можно назначить поля формы вы хотите новую группу."; +$LANG["text_public_form_omit_list_page"] = "Общественные формы дать вам преимущество давая всем клиентским счетам доступ к ним без необходимости вручную присвоить каждому клиенту с ними. На этой странице можно определить те клиенты, которые не могут получить доступ к этой форме, хотя форма помечается как общественность."; +$LANG["text_public_view_omit_list_page"] = "Общественный просмотров дать вам преимущество давая всем клиентским счетам доступ к ним без необходимости вручную присвоить каждому клиенту с ними. На этой странице можно определить те клиенты, которые не могут получить доступ к этой специфическим представлением."; +$LANG["text_reference_tab_info"] = "На этой странице перечислены все доступные заполнители для формы. Заполнители являются строками, которые можно использовать в сообщении шаблоны и поля, отмеченные специальным значком заполнителя . Когда вступил в поле, они динамически преобразуется в соответствующее значение, когда поле просмотра и письмо будет отправлено."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Обзор документации пользователя"; +$LANG["text_send_email_from_edit_submission_page"] = "Включите опцию, чтобы отправить письмо от странице Изменить представление"; +$LANG["text_smart_fill_option_list_problem"] = "Мы не смогли Smart Fill ваши варианты поле. Тем не менее, в качестве альтернативы, вы можете попробовать загрузку копии страницы формы в поле ниже. Обратите внимание: не загружать сырье PHP страниц (или другой код на стороне сервера) - просто загрузить HTML версию. Чтобы получить это, просмотреть и сохранить страницу из веб-браузера."; +$LANG["text_submission_ip_address"] = "IP-адрес пользователя, который сделал представление."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Используйте форму ниже, либо просмотреть или отправить свой адрес электронной почты информации из этой электронный шаблон. Электронная почта посылается только для электронной почты, указанных ниже, основное, CC и BCC Адрес электронной почты получателя игнорируются при тестировании."; +$LANG["text_test_email_templates_no_submissions"] = "Для того чтобы протестировать ваш электронный шаблонов, вы должны сначала положить по крайней мере одну форму представления."; +$LANG["text_theme_page_intro"] = "На этой странице перечислены все ваши темы. Нажмите на изображение, чтобы увидеть больше примеров стилях темы. "Включено" флажок определяет, является ли или нет, что тема может быть выбран клиентом. Для просмотра всех доступных тем, посетите сайт Инсрументы."; +$LANG["text_tutorial_adding_first_form"] = "Учебное пособие: Добавление первой форме!"; +$LANG["text_unique_submission_id"] = "Уникальное представление ID."; +$LANG["text_unused_option_list"] = "Этот вариант списка не используется ни полей формы."; +$LANG["text_upgraded"] = "Ваша установка была обновлена до {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Этот список опций используется следующие поля."; +$LANG["text_view_fields_info"] = "Эта вкладка определяет, какие поля отображаются в режиме редактирования представления этой точки зрения, их порядок и будут ли они доступны для редактирования или нет."; +$LANG["text_view_tab_summary"] = "Эта вкладка позволяет создавать различные способы группы и организовать ваши данные. Просмотров позволяют создавать пользовательские подмножества данных формы, чтобы разделить ее на управляемые части, а также ограничить то, что клиенты могут увидеть или изменить."; +$LANG["validation_account_disabled"] = "К сожалению, ваш аккаунт был отключен."; +$LANG["validation_account_not_recognized"] = "К сожалению, это имя пользователя не распознается."; +$LANG["validation_account_not_recognized_info"] = "К сожалению, это имя пользователя не найдено. Пожалуйста, повторите попытку или обратитесь к администратору сайта по указанному ниже адресу."; +$LANG["validation_account_pending"] = "Ваша учетная запись в ожидании одобрения администратором."; +$LANG["validation_check_delete_client"] = "Вы уверены, что хотите удалить этот счет клиента?"; +$LANG["validation_client_password_missing_number"] = "Клиента пароль должен содержать по крайней мере один номер (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Клиента пароль должен содержать по меньшей мере один из следующих символов: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Клиента пароль должен содержать по меньшей мере одну заглавную букву."; +$LANG["validation_client_password_too_short"] = "Клиента пароль должен быть не менее {\$number} символов."; +$LANG["validation_col_name_is_reserved_word"] = "К сожалению, это имя столбца базы данных, является зарезервированным работу в MySQL. Пожалуйста, переименовать его!"; +$LANG["validation_db_name"] = "Имена базы данных не могут содержать периоды или слэши."; +$LANG["validation_db_not_updated_invalid_input"] = "База данных не может быть обновлена. Пожалуйста, проверьте значения, которые вступили являются действительными."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "К сожалению, администратор и клиент по умолчанию темы должны быть всегда включены."; +$LANG["validation_default_phone_num_required"] = "Пожалуйста, заполните полный телефонный номер для <b> { \$ поле} </ B> поле - только цифры."; +$LANG["validation_default_rule_alpha"] = "Пожалуйста, вводите только буквы и цифры для <b> { \$ поле} </ B> поле."; +$LANG["validation_default_rule_letters_only"] = "Пожалуйста, введите символы только для <b> { \$ поле} </ B> поле."; +$LANG["validation_default_rule_numbers_only"] = "Пожалуйста, вводите только цифры для <b> { \$ поле} </ B> поле."; +$LANG["validation_default_rule_required"] = "Пожалуйста, введите значение <b> { \$ поле} </ B> поле."; +$LANG["validation_default_rule_valid_email"] = "Пожалуйста, введите адрес электронной почты для <b> { \$ поле} </ B> поле."; +$LANG["validation_delete_form_confirm"] = "Пожалуйста, установите флажок, чтобы подтвердить, что вы хотите удалить эту форму."; +$LANG["validation_delete_non_empty_option_list"] = "Внимание! Этот список опций используется одно или несколько полей формы. Удаление это сделает эти поля перестают работать должным образом."; +$LANG["validation_display_names_incomplete"] = "Пожалуйста, введите значения для отображения всех имен, или выберите вариант Smart Fill ввести их динамически."; +$LANG["validation_duplicate_form_field_name"] = "Вы не можете иметь несколько полей с одинаковым именем поля."; +$LANG["validation_email_not_found_or_invalid"] = "К сожалению, электронной почты связан с вашим аккаунтом, либо вообще не существует или является недействительной."; +$LANG["validation_folder_invalid_permissions"] = "Для того чтобы выполнить эту проверку, разрешения должны быть установлены в папке загрузки, чтобы для чтения и записи файлов (777 на Unix)."; +$LANG["validation_folder_not_writable"] = "Эта папка не является доступным для записи."; +$LANG["validation_internal_form_too_many_fields"] = "К сожалению, можно только созданные формы с 1000 месторождений и меньше."; +$LANG["validation_invalid_admin_email"] = "Пожалуйста, введите электронный адрес действительны adminstrator's."; +$LANG["validation_invalid_admin_username"] = "Ваше имя пользователя может состоять только из алфавитно-цифровые символы (AZ и 0-9)."; +$LANG["validation_invalid_client_username"] = "Имя пользователя клиента может состоять только из алфавитно-цифровые символы (AZ и 0-9)."; +$LANG["validation_invalid_client_username2"] = "К сожалению, имя пользователя может содержать только буквы, цифры и знак подчеркивания. Пожалуйста, введите новое имя пользователя."; +$LANG["validation_invalid_column_name"] = "Имена столбцов могут быть только буквенно-цифровые (AZ, 0-9). Пожалуйста, проверьте имена столбцов."; +$LANG["validation_invalid_custom_from_email"] = "Пожалуйста, введите правильный "От" Адрес электронной почты."; +$LANG["validation_invalid_custom_reply_to_email"] = "Пожалуйста, введите правильный пользовательский "Ответить" Адрес электронной почты."; +$LANG["validation_invalid_default_sessions_timeout"] = "Пожалуйста, введите допустимое значение (число) по умолчанию таймаут сессии."; +$LANG["validation_invalid_email"] = "Пожалуйста, введите адрес электронной почты."; +$LANG["validation_invalid_email_id"] = "Извините, это неправильный адрес электронной ID."; +$LANG["validation_invalid_folder"] = "Извините, как представляется, не будет действительным папки."; +$LANG["validation_invalid_form_field_names"] = "Поля формы, может быть только буквенно-цифровые и подчеркивания (AZ, 0-9, _), без пробелов."; +$LANG["validation_invalid_num_clients_per_page"] = "Пожалуйста, введите только цифры в Клиенты на поле Кол-страницу."; +$LANG["validation_invalid_num_emails_per_page"] = "Пожалуйста, введите только цифры по электронной почте на каждой странице."; +$LANG["validation_invalid_num_form_fields"] = "Пожалуйста, вводите только цифры в поле Количество полей."; +$LANG["validation_invalid_num_forms_per_page"] = "Пожалуйста, введите только цифры в Кол-форм на поле страницы."; +$LANG["validation_invalid_num_menus_per_page"] = "Пожалуйста, введите только цифры для меня на каждой странице."; +$LANG["validation_invalid_num_modules_per_page"] = "Пожалуйста, введите только цифры в Кол-модулей в области страницы."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Пожалуйста, вводите только цифры в Num Вариант Списки на страницу поле."; +$LANG["validation_invalid_num_submissions_per_page"] = "Пожалуйста, введите действительное число представленных на странице."; +$LANG["validation_invalid_sessions_timeout"] = "Пожалуйста, введите правильный таймаут сессии (целые только!)."; +$LANG["validation_invalid_tab_assign_values"] = "Пожалуйста, введите только номер в поле "От" и "до" полей."; +$LANG["validation_invalid_table_prefix"] = "Пожалуйста, введите префикс базы данных состоит из буквы и символ подчеркивания только."; +$LANG["validation_invalid_upload_folder"] = "Установка вашего сервера РНР имеет недопустимый настройки для upload_tmp_dir значения. "{\$upload_folder}" не является допустимым папки."; +$LANG["validation_invalid_url"] = "Пожалуйста, введите правильный URL."; +$LANG["validation_invalid_username"] = "Ваше имя пользователя может состоять только из алфавитно-цифровые символы (AZ и 0-9)."; +$LANG["validation_is_form_active"] = "Просьба указать вид активен или нет."; +$LANG["validation_menu_name_taken"] = "К сожалению, это меню имя уже занято. Пожалуйста, выберите новое имя."; +$LANG["validation_modules_search_no_status"] = "Пожалуйста, выберите Включено или Отключено галочки."; +$LANG["validation_no_access_type"] = "Пожалуйста, введите тип доступа."; +$LANG["validation_no_account_logout_url"] = "Пожалуйста, введите Ваш Logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Пожалуйста, введите ваш новый пароль."; +$LANG["validation_no_account_password_confirmed2"] = "Еще раз введите новый пароль."; +$LANG["validation_no_admin_email"] = "Пожалуйста, введите адрес электронной почты администратора."; +$LANG["validation_no_admin_theme"] = "Пожалуйста, выберите тему для учетной записи администратора."; +$LANG["validation_no_admin_theme_swatch"] = "Пожалуйста, выберите образец для администратора тему."; +$LANG["validation_no_client_email"] = "Пожалуйста, введите электронный адрес клиента."; +$LANG["validation_no_client_first_name"] = "Пожалуйста, введите имя клиента."; +$LANG["validation_no_client_last_name"] = "Пожалуйста, введите фамилию клиента."; +$LANG["validation_no_client_login_page"] = "Просьба указать, на какой странице клиент должен быть перенаправлен при входе"; +$LANG["validation_no_client_password"] = "Пожалуйста, введите пароль клиента."; +$LANG["validation_no_client_theme_swatch"] = "Пожалуйста, выберите по умолчанию образец для учетных записей клиентов."; +$LANG["validation_no_client_username"] = "Пожалуйста, введите имя пользователя клиента."; +$LANG["validation_no_column_name"] = "Пожалуйста, введите все имена столбцов, или нажмите кнопку Smart Fill для автоматического заполнения их."; +$LANG["validation_no_column_selected"] = "Пожалуйста, выберите по крайней мере одно поле появляются в колонке на страницу со списком представление."; +$LANG["validation_no_custom_from_email"] = "Пожалуйста, введите адреса "От" адрес электронной почты."; +$LANG["validation_no_custom_recipient_email"] = "Пожалуйста, введите пользовательского адреса получателя."; +$LANG["validation_no_custom_reply_to_email"] = "Пожалуйста, введите обычай "Ответить" Адрес электронной почты."; +$LANG["validation_no_date_format"] = "Пожалуйста, введите дату формата."; +$LANG["validation_no_db_column_single"] = "Пожалуйста, введите имя столбца базы данных."; +$LANG["validation_no_db_hostname"] = "Пожалуйста, введите имя базы данных."; +$LANG["validation_no_db_name"] = "Пожалуйста, введите имя базы данных."; +$LANG["validation_no_db_username"] = "Пожалуйста, введите имя пользователя базы данных учетной записи."; +$LANG["validation_no_default_client_theme"] = "Пожалуйста, выберите тему по умолчанию для всех новых учетных записей клиентов."; +$LANG["validation_no_default_language"] = "Пожалуйста, выберите язык по умолчанию для установки Формы Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Пожалуйста, введите таймаут по умолчанию для учетных записей пользователей."; +$LANG["validation_no_display_text"] = "Пожалуйста, введите Отображение текста для каждого поля."; +$LANG["validation_no_display_text_single"] = "Пожалуйста, введите значение отображения текста."; +$LANG["validation_no_edit_submission_page_label"] = "Пожалуйста, введите на странице Изменить представление этикетке."; +$LANG["validation_no_email"] = "Пожалуйста, введите Ваш адрес электронной почты."; +$LANG["validation_no_email_config_field"] = "Просьба указать, какие поля формы является электронный области."; +$LANG["validation_no_email_content"] = "Пожалуйста, введите содержание электронной почты, по крайней мере один из форматов (HTML или текстовые)."; +$LANG["validation_no_email_from_field"] = "Пожалуйста, электронная почта "от" поля."; +$LANG["validation_no_email_template_name"] = "Пожалуйста, введите электронный шаблон название."; +$LANG["validation_no_email_template_view_id"] = "Пожалуйста, выберите Показать для которых данное сообщение шаблон должен быть отображен."; +$LANG["validation_no_email_template_view_mapping_value"] = "Просьба указать, когда сообщения должны отправляться."; +$LANG["validation_no_enabled_themes"] = "Пожалуйста, убедитесь, что включен по крайней мере одну тему."; +$LANG["validation_no_first_name"] = "Пожалуйста, введите свое имя."; +$LANG["validation_no_form_field_name"] = "Пожалуйста, введите все названия полей форм."; +$LANG["validation_no_form_field_single"] = "Пожалуйста, введите значения полей формы."; +$LANG["validation_no_form_id"] = "Форма ID не был указан. Выйдите из системы и повторите попытку."; +$LANG["validation_no_form_name"] = "Пожалуйста, введите имя формы."; +$LANG["validation_no_form_url"] = "Пожалуйста, введите форме URL."; +$LANG["validation_no_last_name"] = "Пожалуйста, введите свою фамилию."; +$LANG["validation_no_login_page"] = "Просьба указать, какие страницы вы хотели бы быть отправлены при каждом входе"; +$LANG["validation_no_logout_url"] = "Пожалуйста, введите Logout URL."; +$LANG["validation_no_main_email_recipient"] = "Пожалуйста, укажите хотя бы один основной получатель электронной почте (т.е. не CC или BCC)."; +$LANG["validation_no_menu"] = "Пожалуйста, выберите из меню для этой учетной записи пользователя."; +$LANG["validation_no_menu_id"] = "Пожалуйста, выберите в меню."; +$LANG["validation_no_num_clients_per_page"] = "Пожалуйста, введите номер счета клиента на каждой странице."; +$LANG["validation_no_num_emails_per_page"] = "Пожалуйста, введите число сообщений электронной почты в список на странице."; +$LANG["validation_no_num_form_fields"] = "Пожалуйста, введите число полей для формы."; +$LANG["validation_no_num_forms_per_page"] = "Пожалуйста, введите номер формы на странице."; +$LANG["validation_no_num_menus_per_page"] = "Пожалуйста, введите номер меню список на каждой странице."; +$LANG["validation_no_num_modules_per_page"] = "Пожалуйста, введите число модулей на одной странице."; +$LANG["validation_no_num_option_lists_per_page"] = "Пожалуйста, введите число вариант списков на странице."; +$LANG["validation_no_num_submissions_per_page"] = "Пожалуйста, введите количество представленных для показа на странице."; +$LANG["validation_no_option_list_name"] = "Пожалуйста, введите имя списка опций."; +$LANG["validation_no_page_titles"] = "Пожалуйста, введите название страницы по умолчанию для учетных записей пользователей."; +$LANG["validation_no_password"] = "Пожалуйста, введите свой пароль."; +$LANG["validation_no_program_name"] = "Пожалуйста, введите название программы."; +$LANG["validation_no_second_password"] = "Пожалуйста, повторите ввод пароля."; +$LANG["validation_no_sessions_timeout"] = "Пожалуйста, введите тайм-аут сеанса."; +$LANG["validation_no_smart_fill_values"] = "Пожалуйста, введите имя поля формы и URL формы."; +$LANG["validation_no_table_prefix"] = "Пожалуйста, введите префикс базы данных."; +$LANG["validation_no_tabs_defined"] = "Не определено таблеток"; +$LANG["validation_no_test_email_recipient"] = "Пожалуйста, введите электронный адрес, где мы должны отправить тестовое сообщение."; +$LANG["validation_no_test_email_submission_id"] = "Пожалуйста, введите представления идентификационный номер."; +$LANG["validation_no_theme"] = "Пожалуйста, выберите тему."; +$LANG["validation_no_theme_swatch"] = "Пожалуйста, выберите образец для выбранной темы."; +$LANG["validation_no_timezone_offset"] = "Пожалуйста, введите сдвиг часового пояса."; +$LANG["validation_no_titles"] = "Пожалуйста, введите названий страниц."; +$LANG["validation_no_two_column_names"] = "К сожалению, вы не можете ввести то же имя столбца базы данных в два раза."; +$LANG["validation_no_ui_language"] = "Пожалуйста, выберите язык для интерфейса."; +$LANG["validation_no_url"] = "Пожалуйста, введите URL."; +$LANG["validation_no_username"] = "Пожалуйста, введите имя пользователя."; +$LANG["validation_no_username_or_js"] = "Вы должны ввести свое имя пользователя. Пожалуйста, включите JavaScript в вашем браузере."; +$LANG["validation_no_view_fields"] = "Ваше мнение не содержит полей! Вы должны назначить по крайней мере, одно поле для возникновения то появлялся на ваш взгляд."; +$LANG["validation_no_view_fields_selected"] = "Пожалуйста, выберите один или несколько полей, чтобы добавить в представлении."; +$LANG["validation_no_view_name"] = "Пожалуйста, введите имя ваше мнение."; +$LANG["validation_num_rows_to_add"] = "Пожалуйста, введите число строк добавить."; +$LANG["validation_option_list_name_taken"] = "Извините, это имя списка опций уже занято. Пожалуйста, выберите новое имя."; +$LANG["validation_password_in_password_history"] = "В целях обеспечения безопасности, вы не можете ввести тот же пароль, как любой из последних пароли. Пожалуйста, введите другой пароль."; +$LANG["validation_passwords_different"] = "Убедитесь, что пароли совпадают."; +$LANG["validation_please_enter_search_date_range"] = "Пожалуйста, выберите поиск по диапазону дат."; +$LANG["validation_please_enter_search_keyword"] = "Пожалуйста, введите ключевое слово поиска."; +$LANG["validation_select_field_type"] = "Пожалуйста, выберите тип поля."; +$LANG["validation_select_submissions_to_copy"] = "Выберите те материалы, которые вы хотели бы скопировать."; +$LANG["validation_select_submissions_to_delete"] = "Пожалуйста, выберите этих материалов вы хотели бы удалить."; +$LANG["validation_smart_fill_cannot_fill"] = "К сожалению, мы не смогли заполнить этой области."; +$LANG["validation_smart_fill_invalid_field_type"] = "Нам не удалось найти поле, но это не раскрывающийся, флажок или радио-группы."; +$LANG["validation_smart_fill_no_field_found"] = "К сожалению, мы не смогли найти такую форму, что поле с именем на странице указаны."; +$LANG["validation_smart_fill_no_page"] = "Пожалуйста, найдите страница, содержащая поле, которое вы хотели бы Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Пожалуйста, загрузите все страницы в вашей форме."; +$LANG["validation_upload_folder_not_writable"] = "Эта временная папка загрузить указанный вашей установке PHP не поддерживающий записи. До устранения этой ошибки, файлы не могут быть загружены через форму Сервис (или любую другую программу, PHP). Пожалуйста, обратитесь к вашему хостинг-провайдеру."; +$LANG["validation_upload_html_files_only"] = "Загружайте только файлы HTML."; +$LANG["validation_username_taken"] = "К сожалению, это имя пользователя уже занято. Пожалуйста, введите другое имя пользователя."; +$LANG["validation_wrong_password"] = "К сожалению, этот пароль не совпадает."; +$LANG["word_about"] = "О программе"; +$LANG["word_access"] = "Доступ"; +$LANG["word_account"] = "Учетная запись"; +$LANG["word_account_sp"] = "Записей"; +$LANG["word_accounts"] = "Записи"; +$LANG["word_action"] = "Действие"; +$LANG["word_active"] = "Активная"; +$LANG["word_add"] = "Добавить"; +$LANG["word_add_rightarrow"] = "Добавить »"; +$LANG["word_add_uc_rightarrow"] = "Добавить »"; +$LANG["word_administration"] = "Управление"; +$LANG["word_administrator"] = "Администратор"; +$LANG["word_after"] = "После"; +$LANG["word_aquamarine"] = "Аквамарин"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Автор"; +$LANG["word_author_c"] = "Автор:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Назад"; +$LANG["word_bcc_c"] = "СК:"; +$LANG["word_before"] = "Прежде"; +$LANG["word_benefits"] = "Преимущества"; +$LANG["word_blue"] = "Синий"; +$LANG["word_cancel"] = "Отменить"; +$LANG["word_cc_c"] = "Копия:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Флажки"; +$LANG["word_checklist"] = "Контрольный список"; +$LANG["word_client"] = "Клиент"; +$LANG["word_client_c"] = "Клиент:"; +$LANG["word_clients"] = "Клиенты"; +$LANG["word_close"] = "Закрыть"; +$LANG["word_code"] = "Кодекс"; +$LANG["word_column"] = "Колонка"; +$LANG["word_columns"] = "Колонны"; +$LANG["word_columns_sp"] = "Колонка (ы)"; +$LANG["word_complete"] = "Полная"; +$LANG["word_configuration"] = "Конфигурация"; +$LANG["word_content"] = "Содержание"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Продолжение »"; +$LANG["word_copy"] = "копия"; +$LANG["word_custom"] = "Обычай"; +$LANG["word_data"] = "Данные"; +$LANG["word_date"] = "Свидание"; +$LANG["word_debugging_c"] = "Отладка:"; +$LANG["word_delete"] = "Удалить"; +$LANG["word_desc"] = "Описание"; +$LANG["word_direct"] = "Прямой"; +$LANG["word_disabled"] = "Инвалиды"; +$LANG["word_documentation"] = "Документация"; +$LANG["word_done"] = "Сделанный"; +$LANG["word_drawbacks"] = "Недостатки"; +$LANG["word_dropdown"] = "Раскрывающийся"; +$LANG["word_edit"] = "Изменить"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Электронная почта"; +$LANG["word_email_c"] = "Электронная почта:"; +$LANG["word_emails"] = "Письма"; +$LANG["word_enabled"] = "Включено"; +$LANG["word_equals"] = "Equals"; +$LANG["word_error"] = "Ошибка"; +$LANG["word_error_c"] = "Ошибка:"; +$LANG["word_examples_c"] = "Примеры:"; +$LANG["word_external"] = "Внешние"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Поле"; +$LANG["word_field_sp"] = "Полевой (ы)"; +$LANG["word_fields"] = "Полей"; +$LANG["word_fields_sp"] = "Поле (поля)"; +$LANG["word_file"] = "Файл"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Файлы"; +$LANG["word_filters"] = "Фильтры"; +$LANG["word_filters_sp"] = "Фильтр (ы)"; +$LANG["word_for"] = "для"; +$LANG["word_form"] = "%%Форма%%"; +$LANG["word_form_c"] = "%%Форма:%%"; +$LANG["word_formatting"] = "Форматирование"; +$LANG["word_forms"] = "%%Формы%%"; +$LANG["word_found"] = "Основать"; +$LANG["word_from"] = "От"; +$LANG["word_from_c"] = "От:"; +$LANG["word_general"] = "Общий"; +$LANG["word_green"] = "Зеленый"; +$LANG["word_grey"] = "Серый"; +$LANG["word_height"] = "Высота"; +$LANG["word_help"] = "Помощь"; +$LANG["word_hidden"] = "Скрытый"; +$LANG["word_highlight"] = "Выделите"; +$LANG["word_horizontal"] = "Горизонтальная"; +$LANG["word_hour"] = "Час"; +$LANG["word_hours"] = "Часов"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Неполная"; +$LANG["word_install"] = "Установить"; +$LANG["word_installation"] = "Установка"; +$LANG["word_internal"] = "Внутренний"; +$LANG["word_language"] = "Язык"; +$LANG["word_large"] = "Большой"; +$LANG["word_like"] = "Нравиться"; +$LANG["word_login"] = "Войти"; +$LANG["word_logo"] = "Логотип"; +$LANG["word_logout"] = "Выйти"; +$LANG["word_main"] = "Главный"; +$LANG["word_medium"] = "Среда"; +$LANG["word_menu"] = "Меню"; +$LANG["word_menus"] = "Меню"; +$LANG["word_minutes"] = "минуты"; +$LANG["word_misc"] = "Разное"; +$LANG["word_module"] = "Модуль"; +$LANG["word_modules"] = "Модули"; +$LANG["word_na"] = "Не Доступно"; +$LANG["word_name"] = "Имя"; +$LANG["word_name_c"] = "Имя:"; +$LANG["word_never"] = "Никогда"; +$LANG["word_next_rightarrow"] = "Следующая »"; +$LANG["word_next_step_rightarrow"] = "Следующий шаг »"; +$LANG["word_no"] = "Нет"; +$LANG["word_none"] = "Никакой"; +$LANG["word_notes"] = "Заметки"; +$LANG["word_notification"] = "Уведомления"; +$LANG["word_number"] = "Номер"; +$LANG["word_off"] = "Вне"; +$LANG["word_offline"] = "Оффлайн"; +$LANG["word_okay"] = "Все в порядке"; +$LANG["word_on"] = "На"; +$LANG["word_online"] = "Онлайн"; +$LANG["word_operator"] = "Оператор"; +$LANG["word_options"] = "Функции"; +$LANG["word_orange"] = "Оранжевый"; +$LANG["word_order"] = "Заказ"; +$LANG["word_other"] = "Другой"; +$LANG["word_other_c"] = "Другое:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Страница:"; +$LANG["word_pass"] = "Пасс"; +$LANG["word_password"] = "%%Пароль%%"; +$LANG["word_password_c"] = "%%Пароль:%%"; +$LANG["word_pending"] = "Рассматриваемый"; +$LANG["word_permissions"] = "Разрешения"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Предыдущая"; +$LANG["word_private"] = "Частные"; +$LANG["word_public"] = "Общественные"; +$LANG["word_purple"] = "Фиолетовый"; +$LANG["word_recipient"] = "Получатель"; +$LANG["word_recipient_sp"] = "Получатель (и)"; +$LANG["word_red"] = "Красный"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Удалить"; +$LANG["word_remove_uc_leftarrow"] = "«удалить"; +$LANG["word_reply_to"] = "Ответ к"; +$LANG["word_reply_to_c"] = "Ответить:"; +$LANG["word_required"] = "Требуется"; +$LANG["word_reset"] = "Сбросить"; +$LANG["word_resolved"] = "Resolved"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "ряд"; +$LANG["word_search"] = "Поиск"; +$LANG["word_searchable"] = "Поиск"; +$LANG["word_select"] = "Выберите"; +$LANG["word_setting"] = "Установка"; +$LANG["word_settings"] = "Настройка"; +$LANG["word_show"] = "Показывать"; +$LANG["word_size"] = "Размер"; +$LANG["word_skipped"] = "Пропущено"; +$LANG["word_small"] = "Небольшой"; +$LANG["word_solution"] = "Решение"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Начало"; +$LANG["word_status"] = "Статус"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Тема"; +$LANG["word_subject_c"] = "Тема"; +$LANG["word_submenu"] = "Подменю"; +$LANG["word_submission"] = "Представление"; +$LANG["word_submissions"] = "Материалы"; +$LANG["word_system"] = "Система"; +$LANG["word_tab"] = "Вкладка"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (ы)"; +$LANG["word_test"] = "Проверка"; +$LANG["word_text"] = "Текст"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Текстовое поле"; +$LANG["word_theme"] = "Тема"; +$LANG["word_themes"] = "Темы"; +$LANG["word_time"] = "Время"; +$LANG["word_tiny"] = "Крошечный"; +$LANG["word_tips"] = "Советы"; +$LANG["word_today"] = "Сегодня"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Удалите"; +$LANG["word_unknown"] = "Неизвестный"; +$LANG["word_update"] = "Обновление"; +$LANG["word_upgrade"] = "Обновление"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "%%Пользователь%%"; +$LANG["word_username"] = "%%Имя пользователя%%"; +$LANG["word_username_c"] = "%%Имя пользователя:%%"; +$LANG["word_validation"] = "Проверка"; +$LANG["word_value"] = "Значение"; +$LANG["word_value_sp"] = "Соотношение (ы)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Проверить"; +$LANG["word_version"] = "Версии"; +$LANG["word_vertical"] = "Вертикальные"; +$LANG["word_view"] = "Просмотр"; +$LANG["word_views"] = "Просмотры"; +$LANG["word_warning"] = "Внимание!"; +$LANG["word_warning_c"] = "Предупреждение:"; +$LANG["word_web"] = "Веб"; +$LANG["word_welcome"] = "Добро пожаловать!"; +$LANG["word_width_c"] = "ширина:"; +$LANG["word_words"] = "Слова"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Желтый"; +$LANG["word_yes"] = "Да"; \ No newline at end of file diff --git a/global/lang/sk.php b/global/lang/sk.php new file mode 100644 index 00000000..38b433d4 --- /dev/null +++ b/global/lang/sk.php @@ -0,0 +1,1219 @@ +Pozor! Vybrali ste si {\$num_selected_on_page} podania na tejto stránke a {\$num_selected_on_other_pages} na iných stránkach. Prosím, vyberte jednu z nasledujúcich možností:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Pozor! Nezvolili ste žiadne pripomienky na tejto stránke, ale ste si zvolili {\$num_selected_on_other_pages} na iných stránkach. Potvrďte prosím, ktoré chcete odstrániť tieto podania.
    "; +$LANG["confirm_delete_view"] = "Ste si istí, že chcete zmazať tento pohľad?"; +$LANG["confirm_refresh_page"] = "Ste si istí, že chcete obnoviť stránku? Tým sa stratí všetky zmeny, ktoré ste vykonali."; +$LANG["confirm_save_change_before_redirect"] = "Jedno alebo viac polí boli aktualizované. Chcete uložiť zmeny pred presmerovaním?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Ste si istí, že chcete Smart Vyplňte mená stĺpec databázy? Toto prepíše vašej existujúce hodnoty."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Táto voľba automaticky generuje názov stĺpca databázy na poliach zobrazovať text, takže obsah tabuľky databázy sa ľahšie čítajú."; +$LANG["confirm_smart_fill_display_names"] = "Ste si istí, že chcete Smart Fill zobrazenie mena? Toto prepíše vašej existujúce hodnoty."; +$LANG["confirm_ungroup_option_list"] = "Ste si istí, že chcete túto možnosť oddeliť zoznamu? Všetky voľby budú koncentrovaný do jedného, ​​Nezoskupené zoznam."; +$LANG["confirm_uninstall_module"] = "Ste si istí, že chcete odinštalovať tento modul? Všetky modul dáta sa stratia."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Pá."; +$LANG["date_Friday"] = "Piatok"; +$LANG["date_Mon"] = "Po."; +$LANG["date_Monday"] = "Pondelok"; +$LANG["date_PM"] = "AM"; +$LANG["date_Sat"] = "So."; +$LANG["date_Saturday"] = "Sobota"; +$LANG["date_Sun"] = "Slnko"; +$LANG["date_Sunday"] = "Nedeľa"; +$LANG["date_Thu"] = "Št."; +$LANG["date_Thursday"] = "Štvrtok"; +$LANG["date_Tue"] = "Út."; +$LANG["date_Tuesday"] = "Utorok"; +$LANG["date_Wed"] = "St"; +$LANG["date_Wednesday"] = "Streda"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Apríl"; +$LANG["date_month_August"] = "August"; +$LANG["date_month_December"] = "December"; +$LANG["date_month_February"] = "Február"; +$LANG["date_month_January"] = "Január"; +$LANG["date_month_July"] = "Júl"; +$LANG["date_month_June"] = "Jún"; +$LANG["date_month_March"] = "Marec"; +$LANG["date_month_May"] = "Môže"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Október"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Apríl"; +$LANG["date_month_short_Aug"] = "August"; +$LANG["date_month_short_Dec"] = "December"; +$LANG["date_month_short_Feb"] = "Február"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Júl"; +$LANG["date_month_short_Jun"] = "Jún"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Môže"; +$LANG["date_month_short_Nov"] = "November"; +$LANG["date_month_short_Oct"] = "Október"; +$LANG["date_month_short_Sep"] = "September"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Užívateľský účet bol zmazaný."; +$LANG["notify_account_updated"] = "Váš účet bol úspešne aktualizovaný."; +$LANG["notify_add_display_values"] = "Pridať Displej Hodnoty"; +$LANG["notify_admin_menu_updated"] = "Administratíva ponuka bola aktualizovaná."; +$LANG["notify_admin_theme_overridden"] = "Správca motív bol ručne manipulovať."; +$LANG["notify_allow_url_fopen_not_set"] = "Ospravedlňujem sa, ale tento test nemožno spustiť na vašom webovom serveri. To si vyžaduje, aby allow_url_fopen byť nastavený na 1 v súbore php.ini. Toto nastavenie PHP umožňuje prístup k súborom cez URL, ktorá je potrebná na vykonanie tejto skúšky. Môžete vyskúšať ručne nahrať súbor do tejto zložky cez FTP, potom sa snaží pristupovať na URL, ktoré ste dodali."; +$LANG["notify_change_temp_password"] = "Práve ste prihlásení s dočasným heslom. Mali by ste zmenu hesla teraz!"; +$LANG["notify_click_to_edit_new_submission"] = "Ak chcete upraviť nové odoslanie, kliknite sem."; +$LANG["notify_client_account_menus_updated"] = "Účtu klienta (y) boli aktualizované na {\$menu_name} menu. Teraz môžete zmazať ponuku, ktorá bola skôr spojená s účtom (y)."; +$LANG["notify_client_account_not_updated"] = "Klientsky účet môže byť aktualizovaný."; +$LANG["notify_client_account_themes_updated"] = "Účtu klienta (y) boli aktualizované na {\$theme} téme. Teraz môžete vypnúť tému skôr spojené s účtom (y)."; +$LANG["notify_client_account_updated"] = "Klientsky účet bol úspešne aktualizovaný."; +$LANG["notify_client_menu_deleted"] = "Klient menu bola vymazaná."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "V menu bol zrušený, ale tieto účty teraz už nemajú menu! Musíte aktualizovať tieto účty:"; +$LANG["notify_client_menu_updated"] = "Klient ponuka bola aktualizovaná."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Ospravedlňujeme sa, menu, ktoré sa pokúsil odstrániť sa už používajú klienti uvedených nižšie. Pre odstránenie ponuky, budete musieť najprv priradiť klientov do iných ponukách. Kliknite na meno klienta, ktorý chcete upraviť individuálny účet, alebo postúpiť všetky účty na inú pomocou rozbaľovacie menu nižšie."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Je nám ľúto, sú jedným z tém, ktoré ste práve zdravotným postihnutím už používajú takto klientskych účtov. S cieľom oslabiť motív, ktorý bude musieť najprv priradiť každému klientovi k inej téme. Kliknite na meno klienta, ktorý chcete upraviť individuálny účet, alebo postúpiť všetky účty na tému pomocou rozbaľovaciu nižšie."; +$LANG["notify_edit_email_fields_link"] = "Kliknite tu určiť, ktoré polia formulára sú polia e-mail, takže cieľ je vo vašej e-mailovej šablóny."; +$LANG["notify_edit_field_new_field"] = "Jedná sa o novú oblasť. Budete musieť aktualizovať na hlavnú stránku skôr, ako budú môcť plne upraviť túto oblasť."; +$LANG["notify_edit_option_list_after_save"] = "Musíte vybrať možnosť zoznam a potom na Uložiť zmeny, ako budú môcť upraviť."; +$LANG["notify_email_field_config_deleted"] = "Konfiguráciu e-mailu bola vymazaná."; +$LANG["notify_email_fields_not_updated"] = "Ospravedlňujeme sa, ale nemohli sme aktualizovať pole emailu."; +$LANG["notify_email_fields_updated"] = "E-mail oblastiach boli aktualizované."; +$LANG["notify_email_not_sent"] = "Je nám ľúto, e-mail nebude odoslaný. Prosím, kontaktujte správcu stránky na nižšie uvedenú adresu."; +$LANG["notify_email_not_sent_c"] = "Ľutujeme, nemožno odoslať e-mail:"; +$LANG["notify_email_sent"] = "E-mail (y), ktoré boli zaslané."; +$LANG["notify_email_template_deleted"] = "E-mail šablóna bola už odstránená."; +$LANG["notify_email_template_updated"] = "E-mail šablóna má byť aktualizovaný."; +$LANG["notify_enabled_module_list_updated"] = "Zoznam podporovaných modulov bola aktualizovaná."; +$LANG["notify_error_saving_fields"] = "Došlo k chybe pri ukladaní polí."; +$LANG["notify_field_changes_saved"] = "Zmeny v oblasti (s) boli uložené."; +$LANG["notify_field_options_smart_filled"] = "Váš oblasti možnosti boli inteligentný vyplnená."; +$LANG["notify_field_selected"] = "Pozemok bol vybraný. Kliknite tu pre návrat na hlavné pole zoznamu."; +$LANG["notify_field_updated"] = "Tejto oblasti bola aktualizovaná."; +$LANG["notify_file_not_uploaded"] = "Súbor sa nepodarilo nahrať."; +$LANG["notify_file_uploaded"] = "Súbor bol úspešne nahraný."; +$LANG["notify_filters_not_updated"] = "Došlo k chybe pri aktualizácii tohto klienta podania filtre."; +$LANG["notify_filters_updated"] = "Podanie filtre boli aktualizované pre tohto klienta."; +$LANG["notify_folder_correct_permissions"] = "Táto zložka má správne povolenia."; +$LANG["notify_folder_url_match"] = "Zložku a URL môže vyzerať správne zodpovedať."; +$LANG["notify_folder_url_no_access"] = "Táto skúška nemohla byť vykonaná, pretože PHP nemohla, že prístup k URL. Toto je zvyčajne spôsobené tým, že adresy URL chránené heslom sa. Htaccess."; +$LANG["notify_folder_url_no_match"] = "Táto zložka-URL kombinácia nezdá byť zápas."; +$LANG["notify_folder_url_unknown_error"] = "Došlo k neznámej chybe. Môžete vyskúšať ručne nahrať súbor do tejto zložky cez FTP, potom sa snaží pristupovať na URL, ktoré ste dodali."; +$LANG["notify_form_access_type_email_info"] = "Táto forma má prístup správcu typ, takže žiadny klient nemá prístup k nemu, ktoré nie sú uvedené v rozbaľovacej ponuke dole."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Ospravedlňujeme sa, formulár s týmto ID neexistuje."; +$LANG["notify_form_field_not_added"] = "Formulárové pole '{\$fieldname}' sa nepodarilo pridať."; +$LANG["notify_form_field_options_updated"] = "Možnosti poľa formulára boli aktualizované."; +$LANG["notify_form_field_removed"] = "Polia formulára bol úspešne odstránený."; +$LANG["notify_form_fields_removed"] = "Pole formuláre boli úspešne odstránené."; +$LANG["notify_form_not_updated_notify_admin"] = "Formuláre nedá aktualizovať. Kontaktujte prosím správcu webu na správy tohto problému."; +$LANG["notify_form_settings_updated"] = "Formuláre nastavenia bola úspešne aktualizovaná."; +$LANG["notify_form_submission_updated"] = "Odoslanie formulára bol aktualizovaný."; +$LANG["notify_form_tabs_updated"] = "Karty boli aktualizované."; +$LANG["notify_form_updated"] = "Formulár bol úspešne aktualizovaný."; +$LANG["notify_form_views_updated"] = "Zobrazení formulára boli aktualizované."; +$LANG["notify_install_invalid_db_info"] = "Ospravedlňujeme sa, sme neboli schopní sa pripojiť k databáze na základe informácií, ktoré sa dodáva. Chybe databázy vrátil je: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Formulár bol vytvorený! Môžete si nastaviť podobe prostredníctvom týchto kariet."; +$LANG["notify_invalid_account_information_in_sessions"] = "V úvahy informácie uložené v sedenie je neplatný. Prihláste sa opäť nižšie."; +$LANG["notify_invalid_license_key"] = "Je nám ľúto, že sa nezdá byť platný licenčný kľúč. Prosím, skúste zadať znovu."; +$LANG["notify_invalid_permissions"] = "Nemáte oprávnenie pre prístup k tejto stránke. Boli ste odhlásení."; +$LANG["notify_invalid_search_dates"] = "Použite prosím DatePicker uviesť platnú termíny."; +$LANG["notify_invalid_upload_folder"] = "Nahrať zložka je buď neplatné, alebo nedá zapisovať."; +$LANG["notify_lang_list_updated"] = "Jazyk používateľského rozhrania sú k dispozícii zoznam bol aktualizovaný."; +$LANG["notify_login_info_emailed"] = "Svoje prihlasovacie údaje boli zaslané."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Jejda, je tento modul už nainštalovaný!"; +$LANG["notify_module_installed"] = "Modul bol inštalovaný. Kliknite tu pre výber modulu."; +$LANG["notify_module_list_updated"] = "Modul zoznam bol aktualizovaný."; +$LANG["notify_module_uninstalled"] = "Modul has been uninstalled."; +$LANG["notify_module_updated"] = "{\$module} Modul bol aktualizovaný na {\$version}. Kliknite tu pre výber modulu ."; +$LANG["notify_multi_field_selected"] = "Pozemok bol vybraný. Kliknite tu pre zobrazenie a úpravu pole možností."; +$LANG["notify_multi_field_updated"] = "Tejto oblasti bola aktualizovaná. Budete mať možnosť konfigurovať pole možností po nastavení formulára."; +$LANG["notify_multiple_fields_found"] = "Viac prvkov boli zistené u tejto oblasti menom ({\$field_name}). Táto situácia môže nastať, ak vaša stránka obsahuje viac ako jednu formu, alebo ak si náhodou menoval jeden z formulárov rovnaký ako druhý. Prosím, vyberte tú, ktorú chcete zo zoznamu nižšie."; +$LANG["notify_new_default_view_created"] = "Nový, predvolené zobrazenie a obsahuje všetky polia formulára bol vytvorený."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "No user ID účtu bol nájdený v sedenie. Prihláste sa opäť nižšie."; +$LANG["notify_no_api_installed"] = "Nemáte nainštalovaný API"; +$LANG["notify_no_client_permissions"] = "Nie sú k dispozícii žiadne nastavenia upraviť."; +$LANG["notify_no_email_template_selected"] = "Prosím vyberte šablónu e-mailu."; +$LANG["notify_no_emails_defined"] = "Žiadne e-maily, ktoré boli pre tento formulár. Ak chcete pridať nový, kliknite na tlačidlo nižšie."; +$LANG["notify_no_field_settings"] = "Tento typ poľa neobsahuje žiadne ďalšie nastavenia."; +$LANG["notify_no_fields_in_tab"] = "Táto záložka neobsahuje žiadne polia."; +$LANG["notify_no_option_lists"] = "Nie sú žiadne možnosti zoznamy definované. Kliknite na tlačidlo nižšie pre vytvorenie nového."; +$LANG["notify_no_test_submission"] = "Formulár Nástroje nedostal úspešný test podania doteraz."; +$LANG["notify_no_user_email_fields_configured"] = "Poznámka: Ak chcete poslať e-mail na ľubovoľnú e-mailovú adresu, ktorá bola zahrnutá v podobe, musíte najskôr nakonfigurovať poľa formulár e-mail."; +$LANG["notify_no_views"] = "Formulár nemá žiadne Zobrazenie nastavení! Budete potrebovať aspoň jeden pohľad, aby k správe dát formulára."; +$LANG["notify_no_views_assigned_to_client_form"] = "Zdá sa, že váš užívateľský účet nebolo pridelené žiadne forme zobrazenia, takže nebudete mať možnosť vidieť žiadne dáta. Prosím kontaktujte správcu pre ďalšiu pomoc."; +$LANG["notify_no_views_defined"] = "Nemáte nejaké názory, definované. Nebudete môcť prezerať túto formu tvrdenie, ak aspoň jeden pohľad je vytvorený. Kliknite na tlačidlo nižšie pre vytvorenie predvolené zobrazenie."; +$LANG["notify_option_list_deleted"] = "Zoznam voľby bol vymazaný."; +$LANG["notify_option_list_updated"] = "Možnosť zoznam bol aktualizovaný."; +$LANG["notify_public_form_omit_list_updated"] = "Klient vynechať zozname tohto formulára bol aktualizovaný."; +$LANG["notify_public_view_omit_list_updated"] = "Klient vynechať zoznam pre tento názor bol aktualizovaný."; +$LANG["notify_required_admin_pages"] = "Na nasledujúcich stránkach je potrebné v menu Správca: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Ospravedlňujeme sa, nebol žiadnu činnosť nejakú dobu, takže sme museli vás z neho odhlási. Prihláste sa opäť nižšie."; +$LANG["notify_setup_options_updated"] = "Možnosti nastavenia boli aktualizované."; +$LANG["notify_smart_fill_field_not_found"] = "Nepodarilo sa nám nájsť oblasť s týmto názvom ({\$field_name}) vo forme (s) specified. Môžete buď ručne nastaviť typ poľa nižšie, alebo kliknite na tlačidlo Preskočiť na túto oblasť upraviť neskôr."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Váš súbor (y) boli úspešne uložené. Skúste kliknúť na tlačidlo Smart Fill a skúste to znova. Ak sa tento krok nepodarí, bude potrebné tento krok preskočiť a nastaviť polia formulára manally neskôr."; +$LANG["notify_smart_fill_submitted"] = "Formulár bol predložený. V závislosti na veľkosti formy a počtu terénnych možností, môže to chvíľu trvať."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Ospravedlňujeme sa, jeden alebo viac súborov, ktoré ste zadali sa nepodarilo nahrať. Budete musieť tento krok preskočiť a konfigurovať polia ručne."; +$LANG["notify_submission_and_files_deleted"] = "Predkladanie a akýkoľvek súbor (y) s ňou spojené boli úspešne vymazaná."; +$LANG["notify_submission_copied"] = "Podanie bolo skopírované."; +$LANG["notify_submission_copied_edit"] = "Podanie bolo skopírované. Môžete ju upraviť nižšie."; +$LANG["notify_submission_deleted"] = "Podanie bolo úspešne vymazaná."; +$LANG["notify_submission_deleted_with_problems"] = "Odovzdania bol zrušený, ale tieto problémy nastali pri pokuse zmazať nasledujúci súbor (y):"; +$LANG["notify_submission_id_not_found"] = "Predloženie ID nebol nájdený."; +$LANG["notify_submission_not_updated"] = "Podanie nemožno aktualizovať."; +$LANG["notify_submissions_and_files_deleted"] = "Podanie a akýkoľvek súbor (y), ktoré sú s nimi bola úspešne vymazaná."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} príspevkov bolo skopírovaných."; +$LANG["notify_submissions_deleted"] = "Príspevky boli úspešne vymazaná."; +$LANG["notify_submissions_deleted_with_problems"] = "Pripomienky boli zrušené, ale tieto problémy nastali pri pokuse zmazať nasledujúci súbor (y):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Váš e-mail skúška sa nepodarilo odoslať."; +$LANG["notify_theme_cache_folder_not_writable"] = "Táto téma je zložka medzipamäte nemožno zapisovať. K tomu, aby túto tému, {\$folder} zložku, musí mať plnú čítať-písať dovolenie."; +$LANG["notify_theme_list_updated"] = "Téma zoznam bol aktualizovaný."; +$LANG["notify_themes_settings_updated"] = "Vaša téma nastavenia boli aktualizované."; +$LANG["notify_view_deleted"] = "Pohľad bol vymazaný."; +$LANG["notify_view_group_deleted"] = "Zobraziť zostava bola zmazaná."; +$LANG["notify_view_missing_columns"] = "Oops! Ospravedlňujeme sa, ale toto zobrazenie nie je plne nastavený."; +$LANG["notify_view_missing_columns_admin_fix"] = "Kliknite tu určiť, ktoré oblasti by sa mala objaviť ako stĺpce na tejto stránke."; +$LANG["notify_view_updated"] = "Pohľad bol aktualizovaný."; +$LANG["notify_your_email_sent"] = "Váš e-mail bol úspešne odoslaný."; +$LANG["phrase_100_per_page"] = "100 na stránku"; +$LANG["phrase_10_per_page"] = "10 na stránku"; +$LANG["phrase_15_per_page"] = "15 na stránku"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 na stránku"; +$LANG["phrase_25_per_page"] = "25 na stránku"; +$LANG["phrase_2_code"] = "2. Kód"; +$LANG["phrase_2_columns"] = "2 stĺpce"; +$LANG["phrase_2chars"] = "2 znaky"; +$LANG["phrase_3_columns"] = "3 stĺpce"; +$LANG["phrase_4_columns"] = "4 stĺpce"; +$LANG["phrase_50_per_page"] = "50 na stránku"; +$LANG["phrase_accepting_submissions"] = "(prijatie podania)"; +$LANG["phrase_access_admin_account_c"] = "Môžete pristupovať k svojmu účtu správy tu:"; +$LANG["phrase_access_type"] = "Typ prístupu"; +$LANG["phrase_account_info"] = "Informácie o účte"; +$LANG["phrase_account_settings"] = "Nastavenie konta"; +$LANG["phrase_action_needed"] = "Zásah je potrebné vykonať"; +$LANG["phrase_add_client"] = "PRIDAŤ KLIENTA"; +$LANG["phrase_add_client_menu"] = "Pridať klientov Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Add default nastavenie »"; +$LANG["phrase_add_field"] = "Pridať polia"; +$LANG["phrase_add_fields"] = "Pridať Oblasti"; +$LANG["phrase_add_fields_rightarrow"] = "Pridať pole (s) »"; +$LANG["phrase_add_form"] = "Pridať formulár"; +$LANG["phrase_add_form_external"] = "Pridať Formulár - Externé"; +$LANG["phrase_add_form_internal"] = "Pridať Formulár - Vnútorné"; +$LANG["phrase_add_new_group_rightarrow"] = "Pridať novú skupinu »"; +$LANG["phrase_add_num_rows"] = "Pridajte {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Podanie tlačidlo Vložiť"; +$LANG["phrase_add_view_rightarrow"] = "Pridať pohľad »"; +$LANG["phrase_adding_multi_page_form"] = "Pridanie multi-stranový formulár s API"; +$LANG["phrase_adding_single_page_form"] = "Pridanie jediné-stranový formulár s API"; +$LANG["phrase_admin_menu"] = "Správca Menu"; +$LANG["phrase_admin_only"] = "Len správca"; +$LANG["phrase_admin_panel"] = "Admin panel"; +$LANG["phrase_administrator_theme"] = "Správca Téma"; +$LANG["phrase_advanced_settings_rightarrow"] = "Rozšírené nastavenia »"; +$LANG["phrase_all_X_results_selected"] = "Všetky {\$numresults} Vybrané výsledky"; +$LANG["phrase_all_clients"] = "Všetci klienti"; +$LANG["phrase_all_clients_except_c"] = "Všetci klienti s výnimkou:"; +$LANG["phrase_all_clients_have_access"] = "(všetci klienti majú prístup)"; +$LANG["phrase_all_fields"] = "Všetky polia"; +$LANG["phrase_all_fields_displayed"] = "Všetky polia sú zobrazené"; +$LANG["phrase_all_statuses"] = "Všetky stavy"; +$LANG["phrase_all_submissions"] = "Všetky príspevky"; +$LANG["phrase_allow_fields_edited"] = "Povoliť polí, ktoré majú byť upravené"; +$LANG["phrase_alphanumeric"] = "Alfanumerické (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Použiť časové Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Priradiť všetky uvedené klientske účty {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Priradiť všetky uvedené klientske účty {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Na konci"; +$LANG["phrase_at_start"] = "Pri štarte"; +$LANG["phrase_author_link"] = "Autor Link"; +$LANG["phrase_auto_disable_account"] = "Auto-vypnúť účet po tom, čo zlyhala # pokusy o prihlásenie"; +$LANG["phrase_auto_size"] = "Auto veľkosti"; +$LANG["phrase_available_clients"] = "Dostupní klienti"; +$LANG["phrase_available_fields"] = "Dostupné polia"; +$LANG["phrase_available_option_lists"] = "Zoznam dostupných možností"; +$LANG["phrase_available_swatches"] = "K dispozícii Vzorkovník"; +$LANG["phrase_available_swatches_c"] = "K dispozícii Vzorkovník:"; +$LANG["phrase_available_tabs"] = "K dispozícii Záloľky"; +$LANG["phrase_available_views"] = "K dispozícii Views"; +$LANG["phrase_awaiting_form_submission"] = "Čaká na odoslanie formulára."; +$LANG["phrase_back_to_field_list"] = "«Späť na zoznam polí"; +$LANG["phrase_back_to_search_results"] = "späť na výsledky vyhľadávania"; +$LANG["phrase_base_view_on"] = "Pohľad na základňu ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Zmeniť Prihlasovacie údaje"; +$LANG["phrase_characters_limit_p"] = "znakov limit."; +$LANG["phrase_check_db_settings_try_again"] = "Please double-chcete skontrolovať nastavenia databázy a kliknite na tlačidlo Pokračovať znova."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Skontrolujte URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Vynechajte Clear List"; +$LANG["phrase_client_account_settings"] = "Nastavenie účtu klienta"; +$LANG["phrase_client_field"] = "Odbor klienta"; +$LANG["phrase_client_map_filters"] = "Klient Mapa filtre »"; +$LANG["phrase_client_may_edit"] = "Klient môže upraviť"; +$LANG["phrase_client_menu"] = "Klientske menu"; +$LANG["phrase_clients_can_access_form"] = "Klienti, ktorí majú prístup formulár"; +$LANG["phrase_clients_can_access_view"] = "Klienti, ktorí môžu pristupovať k zobrazenie"; +$LANG["phrase_clients_cannot_access_form"] = "Klienti, ktorí nemajú prístup formulár"; +$LANG["phrase_clients_cannot_access_view"] = "Klienti, ktorí nemajú prístup k zobrazenie"; +$LANG["phrase_clients_may_edit"] = "Klienti môžu upravovať"; +$LANG["phrase_code_c"] = "Kód chyby:"; +$LANG["phrase_code_markup_field"] = "Kód / Markup poľa"; +$LANG["phrase_code_markup_type"] = "Kód / Markup Typ"; +$LANG["phrase_codes_c"] = "Error kódy:"; +$LANG["phrase_column_width"] = "Šírka stĺpca"; +$LANG["phrase_company_name"] = "Názov spoločnosti"; +$LANG["phrase_configure_form_email_fields"] = "Konfigurácia Formulár E-mail Oblasti"; +$LANG["phrase_confirm_folder_url_match"] = "Potvrdiť zložiek-URL Match"; +$LANG["phrase_connect_rows"] = "Pripojte riadky"; +$LANG["phrase_copy_email_settings_from"] = "Poslať kópiu nastavenia z ..."; +$LANG["phrase_copy_settings_from"] = "Kopírovať nastavenia ..."; +$LANG["phrase_core_fields"] = "Core Oblasti"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Vytvoriť účet"; +$LANG["phrase_create_admin_account"] = "Vytvoriť účet správcu"; +$LANG["phrase_create_config_file"] = "Vytvoriť konfiguračného súboru"; +$LANG["phrase_create_database_tables"] = "Vytvoriť databázové tabuľky"; +$LANG["phrase_create_default_view"] = "Vytvoriť Predvolené zobrazenie"; +$LANG["phrase_create_file"] = "Vytvoriť súbor"; +$LANG["phrase_create_group"] = "Vytvoriť skupinu"; +$LANG["phrase_create_new_email"] = "Vytvoriť nový email"; +$LANG["phrase_create_new_menu"] = "Vytvoriť nový Menu"; +$LANG["phrase_create_new_option_list"] = "Vytvoriť nový Možnosť zoznam"; +$LANG["phrase_create_new_option_list_group"] = "Vytvoriť nový zoznam možností skupiny"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Vytvoriť nový Možnosť zoznam »"; +$LANG["phrase_create_new_view"] = "Vytvoriť novú Zobraziť"; +$LANG["phrase_create_new_view_group"] = "Vytvoriť nové zobrazenie skupiny"; +$LANG["phrase_custom_display_format"] = "Vlastný formát zobrazenia"; +$LANG["phrase_custom_recipient"] = "Vlastné Príjemca"; +$LANG["phrase_custom_url"] = "Vlastné URL"; +$LANG["phrase_dark_blue"] = "Tmavo modrá"; +$LANG["phrase_data_type"] = "Typ dát"; +$LANG["phrase_database_hostname"] = "Databáza hostname"; +$LANG["phrase_database_name"] = "Databáza meno"; +$LANG["phrase_database_password"] = "Databáza heslo"; +$LANG["phrase_database_settings"] = "Nastavenia databázy"; +$LANG["phrase_database_setup"] = "Nastavenia databázy"; +$LANG["phrase_database_table_prefix"] = "Databáza prefix tabuľky"; +$LANG["phrase_database_username"] = "Databáza meno"; +$LANG["phrase_date_format"] = "Formát dátumu"; +$LANG["phrase_db_column"] = "NR Stĺpec"; +$LANG["phrase_db_setup_page_4"] = "4. Nastavenia databázy"; +$LANG["phrase_default_client_account_theme"] = "Predvolené klientskeho účtu Téma"; +$LANG["phrase_default_date_field_search_value"] = "Východiskový dátum poľa Hľadať hodnotu"; +$LANG["phrase_default_language"] = "Predvolený jazyk"; +$LANG["phrase_default_menu"] = "Predvolené Menu"; +$LANG["phrase_default_sessions_timeout"] = "Predvolenom nastavení vyprší platnosť relácií"; +$LANG["phrase_default_sort_order"] = "Predvolené poradie"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Predvolené tému"; +$LANG["phrase_default_value"] = "Východisková hodnota"; +$LANG["phrase_default_values"] = "Predvolené hodnoty"; +$LANG["phrase_default_values_new_submissions"] = "Predvolené hodnoty pre nové príspevky"; +$LANG["phrase_delete_field"] = "Odstrániť pole"; +$LANG["phrase_delete_form"] = "VYMAZAŤ FORMULÁR"; +$LANG["phrase_delete_row"] = "Zmazať riadok"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Odstrániť asociované súbory pri mazaní podaní"; +$LANG["phrase_delete_view"] = "Zmazať Zobraziť"; +$LANG["phrase_disconnect_rows"] = "Odpojte riadky"; +$LANG["phrase_display_email"] = "Displej E-mail"; +$LANG["phrase_display_name"] = "Display Name"; +$LANG["phrase_display_text"] = "Zobrazenie textu"; +$LANG["phrase_display_value"] = "Displej Hodnota"; +$LANG["phrase_edit_admin_menu"] = "Upraviť Admin Menu"; +$LANG["phrase_edit_client"] = "Upraviť Klient"; +$LANG["phrase_edit_client_menu"] = "Upraviť Klient Menu"; +$LANG["phrase_edit_email_template"] = "Upraviť šablónu Email"; +$LANG["phrase_edit_field"] = "Upraviť pole"; +$LANG["phrase_edit_field_c"] = "Editačné pole:"; +$LANG["phrase_edit_form"] = "Upraviť formulár"; +$LANG["phrase_edit_form_access_type_b"] = "[Upraviť formulár typu prístupu]"; +$LANG["phrase_edit_option_list"] = "Voľbu Edit List"; +$LANG["phrase_edit_submission"] = "Upraviť príspevok"; +$LANG["phrase_edit_submission_label"] = "Upraviť predloženie štítku"; +$LANG["phrase_edit_view"] = "Upraviť zobrazenie"; +$LANG["phrase_email_format"] = "Formát e-mailu"; +$LANG["phrase_email_settings"] = "Nastavenie e-mail"; +$LANG["phrase_email_template"] = "Email šablóny"; +$LANG["phrase_email_template_name"] = "Email Názov šablóny"; +$LANG["phrase_error_learn_more"] = "Ďalšie informácie o tejto chybe."; +$LANG["phrase_error_text_intro"] = "Opravte nasledujúcu chybu (y) a odošlite:"; +$LANG["phrase_errors_learn_more"] = "Kliknite na chybových kódov sa dozviete viac."; +$LANG["phrase_event_trigger"] = "Udalosť Trigger"; +$LANG["phrase_external_form"] = "Vonkajšia forma"; +$LANG["phrase_external_form_info"] = "Vonkajšia forma Info"; +$LANG["phrase_external_your_own_form"] = "Externé (vlastný formulár)"; +$LANG["phrase_field_comments"] = "Komentáre pole"; +$LANG["phrase_field_label"] = "Odbor Label"; +$LANG["phrase_field_options"] = "Možnosti pole"; +$LANG["phrase_field_size"] = "Veľkosť poľa"; +$LANG["phrase_field_skipped"] = "Odbor Preskočených"; +$LANG["phrase_field_specific_settings"] = "Pole nastavenia špecifické"; +$LANG["phrase_field_type"] = "Typ poľa"; +$LANG["phrase_field_type_no_validation"] = "Nie sú žiadne overovacie pravidlá pre tento typ poľa."; +$LANG["phrase_field_types"] = "Typy polí"; +$LANG["phrase_field_value"] = "Pole Hodnota"; +$LANG["phrase_field_values_to_display_values"] = "Hodnoty poľa »Zobraziť Hodnoty"; +$LANG["phrase_final_touches_page_6"] = "6. Záverečné kroky"; +$LANG["phrase_finalize_form"] = "Dokončiť Form"; +$LANG["phrase_first_name"] = "Krstné meno"; +$LANG["phrase_footer_text"] = "Text pätičky"; +$LANG["phrase_for_any_form_submission"] = "Pre všetky formy podania"; +$LANG["phrase_for_view_submissions"] = "Len pre podanie na View:"; +$LANG["phrase_forgot_password"] = "ZABUDLI STE HESLO?"; +$LANG["phrase_form_already_selected"] = "Formulár už vybraná"; +$LANG["phrase_form_email_field_b_c"] = "Formulár [] email poľa:"; +$LANG["phrase_form_email_field_configuration"] = "Formulár E-mail Študijné Konfigurácia"; +$LANG["phrase_form_email_fields"] = "Pole formulára Email"; +$LANG["phrase_form_field"] = "Pole formulára"; +$LANG["phrase_form_field_contents"] = "Obsah poľa formulára"; +$LANG["phrase_form_field_name"] = "Formulár Názov poľa"; +$LANG["phrase_form_field_placeholders"] = "Symboly pole formulára"; +$LANG["phrase_form_fields"] = "Pole formulára"; +$LANG["phrase_form_info"] = "Informačný formulár"; +$LANG["phrase_form_info_2"] = "2. Informačný formulár"; +$LANG["phrase_form_list"] = "Formulár Zoznam"; +$LANG["phrase_form_name"] = "Názov formulára"; +$LANG["phrase_form_page"] = "Formulár Page"; +$LANG["phrase_form_placeholders"] = "Formulár Symboly"; +$LANG["phrase_form_submission"] = "Odoslanie formulára"; +$LANG["phrase_form_submissions"] = "Formulár Podanie"; +$LANG["phrase_form_type"] = "Typ formulára"; +$LANG["phrase_form_url"] = "URL formulára"; +$LANG["phrase_form_urls"] = "Formulár URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formuláre priradená na iný účet"; +$LANG["phrase_forms_page_default_message"] = "Formuláre stránku východiskovú správu"; +$LANG["phrase_ft_installation"] = "Formulár Nástroje Inštalačný skript"; +$LANG["phrase_full_width"] = "V plnej šírke"; +$LANG["phrase_getting_started"] = "Začíname"; +$LANG["phrase_global_placeholders"] = "Global Symboly"; +$LANG["phrase_group_name"] = "Názov skupiny"; +$LANG["phrase_group_options_q"] = "Skupina možnosti?"; +$LANG["phrase_group_rows"] = "Skupina riadkov"; +$LANG["phrase_have_fun"] = "Bavte sa!"; +$LANG["phrase_highlight_colour"] = "Zvýraznenie farieb"; +$LANG["phrase_html_email"] = "HTML email"; +$LANG["phrase_html_template"] = "HTML šablóny"; +$LANG["phrase_images_media"] = "Images / Médiá"; +$LANG["phrase_import_option_list_rightarrow"] = "Možnosť importu zoznamu »"; +$LANG["phrase_input_length"] = "Dĺžka vstupného"; +$LANG["phrase_installation_help"] = "Inštalácia Pomocník"; +$LANG["phrase_internal_form"] = "Interný formulár"; +$LANG["phrase_ip_address"] = "IP adresa"; +$LANG["phrase_is_multi_page_form_q"] = "Je to viacstránkové formulára?"; +$LANG["phrase_label_response_placeholders"] = "Štítok / odpoveď symboly"; +$LANG["phrase_large_300px"] = "Veľký (300px)"; +$LANG["phrase_large_400px"] = "Veľký (400px)"; +$LANG["phrase_last_7_days"] = "Posledných 7 dní"; +$LANG["phrase_last_logged_in"] = "Posledné prihlásenie"; +$LANG["phrase_last_modified"] = "Posledná zmena"; +$LANG["phrase_last_modified_date"] = "Posledná zmena Dátum"; +$LANG["phrase_last_name"] = "Priezvisko"; +$LANG["phrase_letters_only"] = "Písmená"; +$LANG["phrase_light_brown"] = "Svetlo hnedá"; +$LANG["phrase_limit_email_content"] = "Limit obsah e-mailov do polí v zobrazení"; +$LANG["phrase_loading_ellipsis"] = "Nahrávám ..."; +$LANG["phrase_log_in"] = "PRIHLÁSENIE"; +$LANG["phrase_login_as_user"] = "Prihláste sa ako tento užívateľ"; +$LANG["phrase_login_info"] = "Prihlásiť sa Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Prihlasovací panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Heslo"; +$LANG["phrase_login_username"] = "Prihlásiť sa Užívateľské meno"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Odhlásiť URL"; +$LANG["phrase_main_nav"] = "Hlavné Nav"; +$LANG["phrase_main_settings"] = "Hlavné nastavenia"; +$LANG["phrase_manage_client"] = "Správa klientov"; +$LANG["phrase_manage_client_omit_list"] = "Správa klientov Vynechať Zoznam"; +$LANG["phrase_max_file_size"] = "Max Veľkosť súboru"; +$LANG["phrase_max_length"] = "Maximálna dĺžka"; +$LANG["phrase_max_length_words_chars"] = "- Maximálna dĺžka (slová / znakov)"; +$LANG["phrase_may_add_submissions"] = "Podanie môže pridať"; +$LANG["phrase_may_copy_submissions"] = "Môže kopírovať podania"; +$LANG["phrase_may_delete_submissions"] = "Môže odstrániť príspevky"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menu Name"; +$LANG["phrase_menu_type"] = "Typ menu"; +$LANG["phrase_min_password_length"] = "Minimálna dĺžka hesla"; +$LANG["phrase_module_description"] = "Modul Opis"; +$LANG["phrase_module_info"] = "Modul informačnej"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Mesiac, dátum"; +$LANG["phrase_multi_select"] = "Multi-select"; +$LANG["phrase_multi_select_dropdown"] = "Multi-select rozbaľovací"; +$LANG["phrase_multiple_fields_found"] = "Multiple Pole Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Meno / Priezvisko"; +$LANG["phrase_new_blank_email"] = "New Blank E-mail"; +$LANG["phrase_new_blank_option_list"] = "Voľba nového prázdneho zoznamu"; +$LANG["phrase_new_blank_view"] = "New Blank Zobraziť"; +$LANG["phrase_new_ft_installation"] = "Nový formulár Nástroje Inštalácia"; +$LANG["phrase_new_option_list"] = "Nová voľba Zoznam"; +$LANG["phrase_new_password"] = "Nové heslo"; +$LANG["phrase_new_password_reenter"] = "Nové heslo (prosím re-enter)"; +$LANG["phrase_new_view"] = "Nový pohľad"; +$LANG["phrase_new_view_all_fields"] = "Nový pohľad - Všetky položky"; +$LANG["phrase_next_client"] = "Ďalší klient »"; +$LANG["phrase_next_field"] = "ďalšie oblasti »"; +$LANG["phrase_next_form"] = "Ďalšie formulár »"; +$LANG["phrase_next_view"] = "Zobraziť ďalšie »"; +$LANG["phrase_no_clients"] = "No klientov"; +$LANG["phrase_no_limit"] = "Bez obmedzenia"; +$LANG["phrase_no_offset"] = "Žiadny posun"; +$LANG["phrase_no_option_lists_available"] = "Žiadne voľby zoznamy k dispozícii."; +$LANG["phrase_no_views"] = "No Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Žiadne názory s filtrami uvedené)"; +$LANG["phrase_none_not_recommended"] = "Žiadna (neodporúča)"; +$LANG["phrase_not_assigned_to_option_list"] = "Toto pole nie je priradený k zoznamu volieb."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "nerovná sa"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "NOT Like"; +$LANG["phrase_not_visible_to_client"] = "(nie je vidieť na klienta)"; +$LANG["phrase_num_clients_per_page"] = "Num Klienti na stránku"; +$LANG["phrase_num_emails_per_page"] = "Num Emaily na stránku"; +$LANG["phrase_num_fields"] = "Počet polí"; +$LANG["phrase_num_forms_per_page"] = "Num Formuláre na stránku"; +$LANG["phrase_num_menus_per_page"] = "Num Ponuky na stránku"; +$LANG["phrase_num_modules_per_page"] = "Num Moduly na stránku"; +$LANG["phrase_num_option_lists_per_page"] = "Num možnosť Zoznamy na stránku"; +$LANG["phrase_num_options"] = "Možnosti Num"; +$LANG["phrase_num_rows"] = "Num Riadky"; +$LANG["phrase_numbers_only"] = "Len čísla"; +$LANG["phrase_often_localhost"] = "(často "localhost")"; +$LANG["phrase_on_form_submission"] = "O odoslaní formulára"; +$LANG["phrase_one_char_number"] = "Najmenej jeden znak je číslo (0-9)"; +$LANG["phrase_one_char_upper"] = "Najmenej jeden znak je veľké písmeno"; +$LANG["phrase_one_special_char"] = "Aspoň jeden z {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(iba konkrétny klienti majú prístup)"; +$LANG["phrase_open_form_in_dialog"] = "Otvorte formulár v dialógovom okne"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Otvorte formulár v novej záložke / okne"; +$LANG["phrase_option_list"] = "Možnosť Zoznam"; +$LANG["phrase_option_list_name"] = "Možnosť Názov zoznamu"; +$LANG["phrase_option_list_or_contents"] = "Možnosť List / Obsah"; +$LANG["phrase_option_lists"] = "Možnosť Zoznamy"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Nadpisy stránky"; +$LANG["phrase_pass_on"] = "Postúpiť"; +$LANG["phrase_password_min"] = "Je potrebné aspoň {\$length} znaky."; +$LANG["phrase_password_one_number"] = "Musí obsahovať aspoň jedno číslo (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Musí obsahovať aspoň jedno veľké písmeno."; +$LANG["phrase_password_requirements_c"] = "Heslo požiadavky:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "Musí obsahovať aspoň jeden z nasledujúcich znakov: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Oprávnenie / Ďalšie nastavenia"; +$LANG["phrase_permitted_file_types"] = "Povolené typy súborov"; +$LANG["phrase_phone_number"] = "Telefónne číslo"; +$LANG["phrase_phone_number_format"] = "Formát telefónneho čísla"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini Max.povolena nahranie súboru Veľkosť:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Prosím, potvrďte"; +$LANG["phrase_please_enter_license_key"] = "Prosím, zadajte svoje licenčný kľúč"; +$LANG["phrase_please_select"] = "Prosím vyberte"; +$LANG["phrase_please_select_form"] = "Vyberte prosím formu"; +$LANG["phrase_prev_client"] = "«Predchádzajúci klienta"; +$LANG["phrase_prev_form"] = "«Predchádzajúci formy"; +$LANG["phrase_prevent_password_reuse"] = "Predchádzať re-použitie # posledného hesla"; +$LANG["phrase_previous_field"] = "«Predchádzajúce pole"; +$LANG["phrase_previous_page"] = "Predchádzajúca strana"; +$LANG["phrase_previous_view"] = "«Predchádzajúci Zobraziť"; +$LANG["phrase_program_name"] = "Názov programu"; +$LANG["phrase_public_form_omit_list"] = "Forma verejnej Vynechajte Zoznam"; +$LANG["phrase_public_view_omit_list"] = "Zobraziť verejný Vynechajte Zoznam"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Tam bol problém s nasledujúci dotaz:"; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Náhodné odoslania formulára"; +$LANG["phrase_re_enter_password"] = "Zadajte heslo znova"; +$LANG["phrase_recipient_type"] = "Typ príjemcu"; +$LANG["phrase_redirect_url"] = "URL presmerovanie"; +$LANG["phrase_refresh_list"] = "Obnoviť zoznam"; +$LANG["phrase_refresh_module_list"] = "Modul Refresh List"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Refresh Téma List"; +$LANG["phrase_register_new_email"] = "Registrácia nového E-mail"; +$LANG["phrase_remaining_characters"] = "zostávajúcich znakov"; +$LANG["phrase_remaining_words"] = "Zvyšné slová"; +$LANG["phrase_remove_tabs"] = "Odstrániť Záloľky"; +$LANG["phrase_required_password_chars"] = "Požadované heslo znakov"; +$LANG["phrase_resend_test_submission"] = "Resend Test Submission"; +$LANG["phrase_return_form_list"] = "NÁVRAT NA ZOZNAM FORMULÁROV"; +$LANG["phrase_row_selected"] = "{\$num_rows} vybraných riadkov"; +$LANG["phrase_rows_selected"] = "{\$num_rows} vybraných riadkov"; +$LANG["phrase_sample_data"] = "Vzorka dát"; +$LANG["phrase_save_changes"] = "Uložiť zmeny"; +$LANG["phrase_search_keyword"] = "Pre hľadané kľúčové slovo"; +$LANG["phrase_security_settings"] = "Nastavenia zabezpečenia"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Select All {\$numresults} výsledky"; +$LANG["phrase_select_all_on_page"] = "Vybrať všetko Page"; +$LANG["phrase_select_date"] = "Vyberte dátum"; +$LANG["phrase_select_field"] = "Vyberte pole"; +$LANG["phrase_select_swatch"] = "Vyberte Swatch"; +$LANG["phrase_selected_clients"] = "Vybraní klienti"; +$LANG["phrase_selected_views"] = "Vybrané Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Test Send Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Hodnota nastavenia"; +$LANG["phrase_setup_options"] = "Možnosti nastavenia"; +$LANG["phrase_show_all"] = "Zobraziť všetky"; +$LANG["phrase_show_form"] = "Zobraziť formuláre"; +$LANG["phrase_size_large"] = "Veľké (TEXT)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 znakov)"; +$LANG["phrase_size_small"] = "Malý (<= 20 znakov)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 znakov)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Odbor"; +$LANG["phrase_skip_step"] = "Preskočiť krok"; +$LANG["phrase_small_100px"] = "Malý (100px)"; +$LANG["phrase_small_80px"] = "Malý (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Fill poľa z:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill Užívateľská dokumentácia »"; +$LANG["phrase_sort_as"] = "Druhu ako"; +$LANG["phrase_special_fields"] = "Špeciálne pole"; +$LANG["phrase_standard_fields"] = "Štandardné pole"; +$LANG["phrase_standard_filters"] = "Štandardné filtre »"; +$LANG["phrase_step_1"] = "Krok 1"; +$LANG["phrase_step_2"] = "Krok 2"; +$LANG["phrase_step_3"] = "Krok 3"; +$LANG["phrase_step_4"] = "Krok 4"; +$LANG["phrase_step_5"] = "Krok 5"; +$LANG["phrase_step_6"] = "Krok 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Očistiť tagy v zaslanom formulári"; +$LANG["phrase_subject_line"] = "Predmet Line"; +$LANG["phrase_submission_date"] = "Dátum podania žiadosti"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Tvrdenie: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Typ podania"; +$LANG["phrase_submissions_per_page"] = "Podanie na stránku"; +$LANG["phrase_system_check"] = "Kontrola systému"; +$LANG["phrase_system_fields_no_validation"] = "Môžete sa pridať do systému overovania polí."; +$LANG["phrase_system_time_offset"] = "Systém Časový posun"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Folder Permissions"; +$LANG["phrase_test_submission"] = "Test Submission"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Prijaté"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "E-mail Text"; +$LANG["phrase_text_template"] = "Text šablóny"; +$LANG["phrase_the_previous_month"] = "Predchádzajúci mesiac"; +$LANG["phrase_theme_description"] = "Téma Popis"; +$LANG["phrase_theme_info"] = "Téma Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Celkové výsledky:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Zrušiť výber"; +$LANG["phrase_update_accounts"] = "Aktualizácia účtov"; +$LANG["phrase_update_email_template"] = "Aktualizácia Šablóna emailu"; +$LANG["phrase_update_field"] = "Aktualizovať pole"; +$LANG["phrase_update_order"] = "Aktualizácia Order"; +$LANG["phrase_update_view"] = "Aktualizácia Zobraziť"; +$LANG["phrase_upload_file"] = "Nahrať súbor"; +$LANG["phrase_upload_files"] = "Upload súborov"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Upload cestu k priečinku"; +$LANG["phrase_upload_folder_url"] = "Nahrať zložku URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Použiť predvolenú hodnotu?"; +$LANG["phrase_used_by_num_form_fields"] = "Používané # poľa formulára"; +$LANG["phrase_uses_swatches"] = "Používa Vzorkovník"; +$LANG["phrase_valid_email"] = "Platnú e-mailovú"; +$LANG["phrase_validation_error"] = "Chyba overenia"; +$LANG["phrase_validation_rule"] = "Overovacie pravidlo"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Zobraziť skupinu"; +$LANG["phrase_view_id"] = "Zobraziť ID"; +$LANG["phrase_view_name"] = "Zobraziť Name"; +$LANG["phrase_view_placeholders"] = "Zobraziť symboly"; +$LANG["phrase_view_submissions"] = "Zobraziť Podanie"; +$LANG["phrase_view_uploaded_files"] = "zobraziť nahrané súbory"; +$LANG["phrase_viewing_range"] = "[prezeranie {\$startnum} k {\$endnum}]"; +$LANG["phrase_when_sent"] = "Pri zasielaní"; +$LANG["phrase_when_submission_is_deleted"] = "Keď sa ruší podania"; +$LANG["phrase_when_submission_is_edited"] = "Pri úprave podaní"; +$LANG["phrase_who_can_access"] = "Kto má prístup?"; +$LANG["phrase_word_limit_p"] = "Slovo limit."; +$LANG["phrase_year_to_date"] = "Od začiatku roka"; +$LANG["phrase_yes_for_all_views"] = "Áno, pre všetky Views"; +$LANG["phrase_yes_for_specific_views"] = "Áno, pre konkrétnu Views"; +$LANG["phrase_your_account"] = "Váš účet"; +$LANG["phrase_your_email"] = "Váš email"; +$LANG["phrase_your_email_address"] = "Vaša e-mailová adresa"; +$LANG["processing_form_disabled"] = "Ospravedlňujeme sa, ale tento formulár je zakázaný."; +$LANG["processing_form_incomplete"] = "Ospravedlňujeme sa, tento formulár sa nezdá byť správne nastavený v Nástrojoch formulára. Najpravdepodobnejšou príčinou tohto problému je, že ste odobrali \"form_tools_initialize_form\" skryté pole formulára, ale nedokončili všetky kroky procesu \"Pridanie formulára\".

    Prosím prihláste sa, a skontrolujte konfiguráciu formulára."; +$LANG["processing_init_complete"] = "Ďakujeme vám! Vaša skúšobnej podaní bol prejsť úspešne. Vráťte sa prosím na tlačidlo Nástroje na správu formulár a kliknite na tlačidlo "Obnoviť" v dolnej časti formulára Pridať Krok 3 stránky dokončite nastavenia formulára."; +$LANG["processing_invalid_form_id"] = "Ospravedlňujeme sa, ale to sa nezdá byť platným dokladom ID."; +$LANG["processing_no_form_id"] = "process.php vyžaduje ID formuláre na spracovanie. Uistite sa, že formulár obsahuje skryté pole s názvom "form_tools_form_id", ktorý prejde pozdĺž ID formulára."; +$LANG["processing_no_form_url_for_recaptcha"] = "Nástroje forma nie je schopný určiť, kde k presmerovanie, keď sa nedarí vstúpiť KAPITÁN správne. Odovzdajte v skryté pole s názvom form_tools_form_url obsahujúce URL formulára."; +$LANG["processing_no_post_vars"] = "process.php nie je poskytovaná žiadna dáta. Poznámka: tento skript nedá načítať priamo vo vašom prehliadači.
    Uistite sa, že forma je zaslanie poštou."; +$LANG["processing_no_redirect_url"] = "Podanie bolo spracované správne, ale nebola zadaná presmerovanie URL tohto formulára! Upravte si formulár vo formulári Nástroje UI a pridať presmerovanie URL."; +$LANG["special_language"] = "Slovak"; +$LANG["special_language_locale"] = "Slovak"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Všetky nové klientske účty budú vytvorené pomocou nastavenia a povolenia sú uvedené nižšie. Ak chcete prepísať nastavenia pre konkrétneho zákazníka, upraviť účet klienta a navštívte ich kartu Nastavenia."; +$LANG["text_add_form_choose_integration_method"] = "Vyberte si spôsob, ktorý chcete použiť pre integráciu formuláre s formulárom Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Táto metóda používa tvarové nástroje API , ktorá je súčasťou hlavného skriptu tvarové nástroje. API obsahuje mnoho užitočných funkcií, aby pracovné integrácia formulára s formulárom nástroje tak jednoduchá, ako je to možné. Neexistujú žiadne obmedzenia, ako môžu byť predložené formuláre pri použití API. Môžete odoslať obsah na jeden záťah, a stránku po stránke, môžete pridať svoj vlastný server-side validáciu, CAPTCHA obrázky, môžete si vybrať, aby predložila informácie teraz, ale len povedať, že pre zobrazenie podanie vo forme nástrojov UI neskôr (pozri Referenčné príspevky v sekcii Dokumentácia Pomocník API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Pre podanie formulára dáta cez PHP, musí byť formulár umiestnený na tej istej internetovej adrese, pretože inštalácia tvarové nástroje. Po druhé, pre netechnické a začínajúcich užívateľov tvarové nástroje, táto metóda môže byť trochu zastrašujúce na prvom mieste. Ale je tu veľa dokumentácie, aby vám pomohol von, vrátane dva jednoduché návody pre integráciu svoje jedno-i viacstránkové formulára (Tie sú spojené sa v neskoršom kroku)."; +$LANG["text_add_form_direct_submission_benefits"] = "To je najjednoduchší spôsob, ako odoslať formulár Form Tools. Nevyžaduje žiadne znalosti PHP a vyžaduje len veľmi malou zmenou formy. Je to skvelé pre menšie formy, kde chcete len predložiť informácie k databáze, potom presmerovať užívateľa na "Ďakujem" stránku."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Tento spôsob podania je veľmi jednoduchý na používanie, ale neposkytuje veľa ovládanie pre zložitejšie tvary. Multi-strana formulára alebo formuláre, ktoré vyžadujú server-side validáciu sú vhodnejšie pre druhú metódu: predloženie prostredníctvom formulára Nástroje API."; +$LANG["text_add_form_field_types1"] = "Takmer hotovo! Táto stránka sa snaží nájsť všetky polia formulára a stanoviť ich typy polí. Kliknite na tlačidlo Inteligentné výplň na pravej strane, ako začať. Budete smie postupovať pri všetkých akcií boli vyriešené - problémy, ktoré vyžadujú vašu pozornosť sa v "opatrení potrebných " stĺpci."; +$LANG["text_add_form_field_types2"] = "Ak váš formulár nie je v HTML, kliknite na tlačidlo Preskočiť krok pokračovať. To môže byť nakonfigurovaný všetky neskôr."; +$LANG["text_add_form_field_types3"] = "To znovu načíta obsah formulára (s). Poznámka: Táto prepíše všetky zmeny vykonané na tejto stránke."; +$LANG["text_add_form_field_types4"] = "V prípade, že sa dostanete do problémov, kliknite tu pre tento krok preskočte. Všetky polia sú nevyriešené použiť predvolené hodnoty. Môžete si prispôsobiť týchto oblastiach neskôr."; +$LANG["text_add_form_field_types_manual_upload"] = "Ak ste neboli schopní Inteligentné výplň polí, môžete vyskúšať alternatívne riešenie: Upload kópie formulára nižšie uvedené polia."; +$LANG["text_add_form_field_types_manual_upload2"] = "Poznámka: Nepoužívajte Pridať surovín PHP stránky (alebo iný kód na strane servera) - stačí nahrať HTML verzia. Ak si chcete to, zobraziť a uložiť stránku z webového prehliadača."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Tam bolo niekoľko polí, ktoré nemožno nájsť v podobe stránky, ktorú ste zadali. To je väčšinou pravdepodobne spôsobená jednou z nasledujúcich možností:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Zadali ste jeden alebo viac forme URL vašich viacstránkové formulára nesprávne."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Jeden alebo viac stránok formuláre sú chránené heslom a skript nemohol prístup k stránke."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Ste zle zadali do formulára URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Kliknite tu pre návrat na formuláre, informácie pre kontrolu nastavenia."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Vymenili ste formulár (y) po vykonaní testu podaní"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Kliknite tu presadiť ďalší test podania."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Formulár je chránený heslom a skript nemohol prístup k stránke."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "V ďalšej záložke / okne tohto prehliadača, prihláste sa do formulára kliknite na tlačidlo Aktualizovať stránku nižšie, aby sa pokúsili znovu nájsť pole."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Ak žiadny z vyššie uvedených riešení fungujú, môžete tiež skúsiť nahrať ručne formulára na spracovanie ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Tam bolo niekoľko polí, ktoré nemožno nájsť v podobe stránky, ktorú ste zadali. To je väčšinou pravdepodobne spôsobený jedným z nasledujúcich:"; +$LANG["text_add_form_help_link"] = "Ak narazíte na nejaké problémy pri týchto krokoch, skúste si prečítať z užívateľskej dokumentácie ."; +$LANG["text_add_form_step_1_text_1"] = "Nasledujúce stránky vás urobia kroky Nástroje nakonfigurovať Formulár pre ukladanie formulára podanie. Než budeme pokračovať, skontrolujte, že:"; +$LANG["text_add_form_step_1_text_2"] = "Váš formulár už bola vytvorená a je prístupný prostredníctvom URL (localhost je v poriadku)"; +$LANG["text_add_form_step_1_text_3"] = "sú schopní upraviť formuláre"; +$LANG["text_add_form_step_2_para_2"] = "Otvorte si v editore formulár podľa Vášho výberu a zmeniť formu značku na nasledujúce, vrátane dvoch skrytých polí."; +$LANG["text_add_form_step_2_para_3"] = "Ďalšie, otvorte formulár vo webovom prehliadači. Vyplňte v každom odbore a predloží ju. Po odoslaní by sa mala zobraziť správa s oznámením. Akonáhle bude táto správa sa zobrazí, vráťte sa na túto stránku a kliknite na tlačidlo Obnoviť nižšie. Keď tento proces dokončený, uvidíte ďalej tlačidlo nižšie, pričom sa vám ďalší krok."; +$LANG["text_add_form_step_2_para_6"] = "Vo formulári podania obsahovať nasledujúce hodnoty. Môžu byť stanovené priamo cez PHP alebo prešiel pozdĺž prostredníctvom formulára sám. Nižšie sú uvedené príklady každého. (\$ VARNAY) je hash (alebo asociatívne pole) všetkých informácií formou podania - to je zvyčajne postvar \$ () alebo (\$) sessionvar variabilný, ale to môže byť postavená na zákazku."; +$LANG["text_add_form_step_2_text_2"] = "Zadajte adresu URL "Ďakujem " stránky tu. To je miesto, kde chcete, aby ľudia presmerovaný na formulár potom, čo bola podaná."; +$LANG["text_add_form_step_3_para_1"] = "Táto stránka obsahuje zoznam všetkých polí vo formulári podania. Si pri každej poľa a odstráňte všetky, ktoré nepotrebujete skladovať každý podania. Ak odstránite platné polia náhodou, alebo chcú zmeniť údaje uložené svoje formuláre, vráťte sa na predchádzajúcu stránku poslať nové testovacie podania."; +$LANG["text_add_form_step_3_para_2"] = "Poznámka: ak posielate viac hodnôt pomocou začiarkavacích alebo multi-vyberte pole, uistite sa, že názov poľa, končí s [] znaky (pozri užívateľské dokumentáciu pre viac informácií)."; +$LANG["text_add_form_step_3_text_1"] = "Tu začína zábava! V tomto bode, tvarové nástroje čaká test z podania formulára. To sa pomocou tohto formulára podanie vedieť, aké informácie by mali byť uložené v databáze."; +$LANG["text_add_form_step_3_text_2"] = "poukazom na formulári Form Nástroje"; +$LANG["text_add_form_step_3_text_3"] = "pomocou formulára Nástroje API"; +$LANG["text_add_form_step_3_text_4"] = "Ak chcete pomôcť integrovať formulára, odporúčame vám prečítať jeden z nasledujúcich cvičení:"; +$LANG["text_add_form_step_3_text_5"] = "Vysvetľujú, ako nastaviť formu v príprave na skúšky podanie, a obsahujú ďalšie informácie, ktoré môžu byť nápomocné. Riadok PHP, ktoré budete potrebovať, je:"; +$LANG["text_add_form_step_3_text_6"] = "Tým je zaistené, dáta sú v skutočnosti zaslaný formulár Tools. Keď ste sa presadiť svoje testovacie podania, kliknite na tlačidlo nižšie."; +$LANG["text_add_form_step_3_text_7"] = "Na stránke pred vašej konečnej "ďakujem" stránke, je potrebné pridať nasledujúci parameter premenná \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Databáza bola zriadená, aby pre túto formu, a formu bol aktivovaný pre použitie. Ak ste vykonali podanie smeruje formulára na process.php, vráťte sa do formulára a odstrániť tieto skryté pole:"; +$LANG["text_add_form_step_5_para_2"] = "Potom navštívte svojho "poďakovaním", na prázdne relácie. Akonáhle sa tak deje, budú všetky nové formy podania spracované a uložené vo formulári Tools. Skúste vytvoriť podania alebo dva, aby overila všetky informácie nahrávanie správne."; +$LANG["text_add_form_step_5_para_3"] = "Ak chcete jemne doladiť chcete formulár pre možnosti, ako je auto-mailov, pridávať ďalšie polia formulára polia, alebo prispôsobenie druhy polia formulára môžete upravovať svoje forme na akomkoľvek mieste."; +$LANG["text_add_form_step_5_para_4"] = "Pretože váš formulár obsahuje polia pre nahranie súboru, budete musieť nastaviť každej pole stanoviť súbor nahrať priečinok, aké súbory sú povolené a. To možno nájsť na kartu Zobrazenie na stránke upraviť formuláre."; +$LANG["text_add_form_step_5_para_5"] = "Ak je podanie bolo zaslané cez API, zmena ft_api_init_form_page riadok na prvej stránke formulára:"; +$LANG["text_add_submission_button"] = "Pridať Podanie Tlačidlo sa zobrazí len pre zobrazenie, ktoré majú "Môže pridať podanie " voľba nastavená na "áno "."; +$LANG["text_admin_email_placeholder_info"] = "Toto je e-mailová adresa administrátora formulára Nástroje, definované v nastavení vášho konta. To len výstupy e-mailovú adresu, takže ak chcete použiť ako odkaz na HTML, budete musieť zabaliť do <a>, napríklad takto:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Tiež štandardnú prihlasovaciu stránku tému)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Po prvé, vyberte si typ formulára."; +$LANG["text_client_form_page"] = "Táto stránka obsahuje zoznam všetkých formulárov a pohľady na tohto klienta. Tip: k tomu, aby im vidieť formulár, čo tvrdí, musí byť priradený aspoň jeden pohľad."; +$LANG["text_client_map_filters_desc1"] = "Klient Mapa filtre umožňujú obmedziť podania, ktoré sa objavujú v tomto Zobraziť podľa mapovanie hodnôt v podobe poľa hodnôt v účte klienta."; +$LANG["text_client_no_forms"] = "Momentálne nemáte žiadne formuláre sú k dispozícii na kontrolu."; +$LANG["text_client_welcome"] = "Vitajte! Tento program ukladá všetky informácie, ktoré návštevníci vašich webových stránkach. Ak chcete zobraziť podanie na osobitnom formulári stačí kliknúť na odkaz VIEW, alebo sa pozrite nejlevější navigačné menu pre ďalšie možnosti."; +$LANG["text_config_file_created"] = "Váš config.php bol súbor vytvorený."; +$LANG["text_config_file_not_created"] = "Nepodarilo sa nám vytvoriť si súbor config.php. Budete musieť vytvoriť súbor manuálne."; +$LANG["text_config_file_not_created_instructions"] = "Skopírovať a vložiť obsah z časti dole na súbor s názvom config.php a nahrať cez FTP na formulári Nástroje / globálny zložky (zložky, ktorá obsahuje aj niekoľko ďalších súborov a adresárov, jeden súbor s názvom library.php)."; +$LANG["text_confirm_delete_form"] = "Áno, chcem zmazať tento formulár"; +$LANG["text_create_admin_account"] = "Teraz budeme vytvoriť administrátorský účet. Toto sa používa pre správu všetkých aspektov formulára nástroje, ako je pridanie formuláre a vytváranie klientskych účtov."; +$LANG["text_create_new_client_account"] = "Použite nižšie uvedený formulár pre vytvorenie nového účtu klienta. Všetky polia sú povinné."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "pozri PHP {\$datefunctionlink} funkcie pre možnosti formátovania"; +$LANG["text_default_file_settings_page"] = "Táto stránka je určený súbor nastavení pre svoje Form inštalácie nástrojov. Tieto pravidlá platia pre všetky súbory nahrané cez formulár nástroje, pokiaľ nie sú explicitne zmenili na jednotlivé polia formulára. Poznámka: Ak zmeníte priečinok po nahraní súborov ktoré boli nahrané, sa automaticky presunú do novej zložky."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Než budeme pokračovať, budete musieť aktualizovať / themes / default / cache zložky povoliť plný čítanie a zápis. Akonáhle máte hotovo, bude táto správa zmizne a môžete nainštalovať skript."; +$LANG["text_default_values_in_view"] = "Táto sekcia je nepovinná. Všetky návrhy vytvorené s týmto názorom bude obsahovať predvolené hodnoty uvedené tu."; +$LANG["text_delete_all_forms"] = "Chcem zmazať všetky súbory, ktoré boli nahrané pomocou tohto formulára"; +$LANG["text_delete_form_warning"] = "Ste si istí, že chcete zmazať tento formulár? Túto akciu nemožno vrátiť späť. Všetky údaje budú trvalo stratená!"; +$LANG["text_edit_admin_menu_page"] = "Môžete upravovať svoje ponuke nižšie. Aby sa zabezpečilo, vždy budete mať prístup ku všetkým funkcie sú k dispozícii vo formulári Nástroje, tieto stránky sú povinné: Formuláre, klienti, Váš účet, moduly, Nastavenia a odhlásenie."; +$LANG["text_edit_client_menu_page"] = "Táto sekcia vám umožní prispôsobiť ľavom navigačnom stĺpci pre každého užívateľa. Môžete vytvoriť toľko klientov menu, ako budete chcieť a priradiť žiadny účet, aby jeden z nich. V predvolenom nastavení sú dve menu: jeden pre teba, správcu, a jeden pre všetky klientske účty. Administrátorský účet môže byť zmenený, ale nie odstrániť."; +$LANG["text_edit_tab_summary"] = "Ak chcete túto skupinu Pohľad na pole do záložiek, stačí zadať na karte pod menami. Potom, čo ste urobil, vyberte príslušnú kartu pre každé pole skupiny v záložke Pole ."; +$LANG["text_edit_view_list_page"] = "Táto karta kontroly, ktoré polia sa zobrazia ako stĺpce na stránke Submission výpis, a niektoré ďalšie nastavenia týchto polí. Poznámka: Odporúčame pridať maximálne 4 alebo 5 z najdôležitejších oblastí v zobrazení."; +$LANG["text_email_settings_intro"] = "Táto stránka umožňuje určiť, ktorá z vašich e-mailov tvorí oblasti obchodu a im zodpovedajúce mená. Akonáhle definujete je tu, môžete použiť vo vašej e-mailovej šablóny ako príjemcovia. Táto sekcia je úplne dobrovoľné."; +$LANG["text_email_tab_summary"] = "Táto sekcia umožňuje postaviť ľubovoľný počet e-mailov, ktoré majú byť zaslané vždy, keď je predložený formulár, a ďalšie spúšťa."; +$LANG["text_email_template_tab"] = "Táto sekcia vám umožňuje určiť, aký obsah sa zobrazí v e-mailu. Ak budete chcieť poslať vašu e-mailovú iba ako text alebo e-mailom, iba zadajte hodnotu pre daný úsek. Ak zadáte hodnotu pre oboch, bude odoslaný e-mail v oboch formátoch."; +$LANG["text_email_template_text_1"] = "Došlo k podaní uskutočnených prostredníctvom formulára, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Došlo k podaní uskutočnených prostredníctvom formulára, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Vďaka za príspevok!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Chybové hlásenie sa zobrazí, ak pole zlyhá overenie pravosti"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Vonkajšie formy sú formy, ktoré už existujú na svojich webových stránkach, alebo niekde na webe. Túto možnosť vyberte, ak máte svoj vlastný formulár, ktorý chcete integrovať s formulárom Tools."; +$LANG["text_fields_tab_summary"] = "Táto stránka obsahuje zoznam všetkých polí formulára. Kontrolovať, ako sa zdá pri prezeraní príspevkov nájdete na karte Zobrazenie . Odstránenie poľa na tejto stránke sa odstrániť zo všetkých príspevkov, takže buďte opatrní!"; +$LANG["text_file_extension_info"] = "Zadajte prípony súborov oddelené čiarkami (napr. jpg, gif, png), alebo nechajte prázdne, aby akýkoľvek typ súboru."; +$LANG["text_file_field_placeholders_info"] = "Súbor polia dva špeciálne symboly: FILEURL a FILENAME. FILEURL je úplnú adresu URL k súboru, takže sa môžete odkazovať priamo vo vašich e-mailov, FILENAME je len názov súboru."; +$LANG["text_filters_page"] = "Iba tie pripomienky, ktoré spĺňajú pravidlá definovať nižšie sa objaví v tomto zobrazení."; +$LANG["text_filters_tips"] = "Tipy, ako používať podanie filtre, pozri užívateľskú dokumentáciu."; +$LANG["text_forgot_password"] = "Žiadny problém. Stačí zadať svoje užívateľské meno a Vaše prihlasovacie údaje budú zaslané na e-mailovú adresu na súbor. Ak ste zabudli svoje užívateľské meno, prosím, e-mail správcu webu na {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Tento formulár obsahuje jeden alebo viac súborov nahrať oblastiach:"; +$LANG["text_form_placeholder_info"] = "Nasledovné symboly môžu byť použité v akejkoľvek e-mailovej šablóny a jazykové zástupný oblasti, bez ohľadu na akékoľvek zobrazenie e-mailovej šablóny je priradená. OTÁZKA symboly sú špecifickou formou otázku; ODPOVEĎ symboly sú odpovede na každú otázku."; +$LANG["text_form_submission_date_placeholder"] = "Dátum, kedy bola vykonaná podania."; +$LANG["text_form_tools_form_url"] = "Celú adresu URL formulára. To má len hodnotu pre vonkajšie formy."; +$LANG["text_form_tools_login_url"] = "URL pre prihlásenie formulár Tools."; +$LANG["text_form_view_permission_info_admin"] = "Pozn: Tento formulár v súčasnej dobe má prístup správcu typ, takže žiadny z klientskych účtoch, budú mať možnosť vidieť toto zobrazenie."; +$LANG["text_form_view_permission_info_private"] = "Poznámka: Táto forma má v súčasnej dobe súkromný prístup typu, takže verejné a súkromné ​​voľby tu bude obmedzená na túto podmnožinu klientov."; +$LANG["text_ft_installed"] = "Gratulujeme, náradie formulár bol úspešne nainštalovaný!"; +$LANG["text_global_placeholder_info"] = "Tieto symboly môžu byť použité v akejkoľvek šablóny a akákoľvek forma."; +$LANG["text_group_name_explanation"] = "Pre poľa pridané cez formulár Pridať procesu, táto hodnota je pre-naplnené na zobrazenie textu bez ohľadu na pole používa hodnotu. Možno budete chcieť zmeniť, aby lepšie charakterizovať obsah."; +$LANG["text_install_create_config_file"] = "Formulár Nástroje sú uložené server a databázy nastavenia v súbore s názvom config.php, nájsť v súbore / global / zložky. Kliknite na tlačidlo "Vytvoriť súbor" tlačidlo pre automatické vytváranie súborov na serveri."; +$LANG["text_install_create_database_tables"] = "Teraz budeme vytvárať formuláre Nástroje databázové tabuľky. Tento krok si vyžaduje, aby databázy sám už boli vytvorené. Ak si nie ste istí, ako to urobiť, prosím, kontaktujte svojho poskytovateľa hostingu."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" zvyčajne znamená, že názov hostiteľa je ale nesprávne. Možno skúste toto nastavenie na "localhost" - to je obyčajný spôsob, ako sa odkazovať na "miestnej" databázy na webovom serveri."; +$LANG["text_install_db_tables_error_tip_2"] = ""Nedá sa pripojiť k serveru MySQL cez lokálnu socket" znamená databázy hostiteľa poľa je opäť chybný."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access denied for user:" Znamená to, že to je problém s vašim užívateľským menom a heslom kombinácie."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access denied for user: ... do databázy ..." znamená, že aj keď vaše užívateľské meno a vami zadané heslo správne, nebolo možné sa pripojiť ku konkrétnej databáze, s týmto účtom. To môže znamenať, že buď Vaše meno databázy je nesprávne, alebo že tento užívateľský účet, nie je spojená s touto databázou."; +$LANG["text_install_email_content_text"] = "Na našich webových stránkach nájdete množstvo zdrojov, ktoré vám pomôžu začať, vrátane našej online dokumentácie (https://docs.formtools.org) a tutoriálov (https://docs.formtools.org/tutorials). Ak zistíte, že ste uviazli alebo máte otázku, položte otázku na adresu github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Ospravedlňujeme sa, ale budú tvoriť nástroje nebude môcť bežať na serveri. Prosím, kliknite tu pre minimálne požiadavky."; +$LANG["text_install_system_check"] = "Na tejto stránke prebieha niekoľko testov na vašom systéme, aby sa zabezpečilo, že je schopný bežať Form Nástroje."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Vnútorné formy existujú iba v rámci tvarové nástroje - inde na webe. Jediná forma nástroje používateľské účty budú mať prístup k formuláru. Vyberte túto možnosť, ak nemáte súčasnej podobe."; +$LANG["text_internal_form_intro"] = "Použite nižšie uvedený formulár pre vytvorenie novej vnútornej forma. Všetky nastavenia, vrátane počtu a obsah polí formulára je možné meniť a konfigurovať neskôr."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Aby bolo možné prihlásiť a použiť formulár Nástroje, musíte mať povolený JavaScript vo svojom prehliadači. Zapnite ju, prosím teraz, a kliknite na tlačidlo Obnoviť vo svojom prehliadači."; +$LANG["text_last_modified_date_explanation_c"] = "Posledná čas toto podanie bol upravený. Pre nové podanie, to je rovnaký ako:"; +$LANG["text_limit_email_content_desc"] = "Táto voľba funguje len pre HTML a textový obsah vytvorený pomocou Smarty slučky."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(len zoznam Obrázok s jedným alebo viacerými definovaných filtrov)"; +$LANG["text_log_in_to_ft"] = "Prihláste sa do formulára Nástroje"; +$LANG["text_login"] = "Prosím prihláste sa nižšie k prístupu názov_programu \$ () Správa panely. Ak ste zabudli svoje heslo, kliknite tu."; +$LANG["text_login_info"] = "Ako bolo požadované, tady je vaše prihlasovacie údaje."; +$LANG["text_name_of_form"] = "Názov formulára."; +$LANG["text_no_clients"] = "Momentálne tu nie sú žiadne klientov v databáze. Ak chcete pridať nový klientský účet, kliknite na tlačidlo Pridať Klient nižšie."; +$LANG["text_no_clients_found"] = "Neboli nájdené žiadne klientov. Skúste rozšíriť kritériá vyhľadávania."; +$LANG["text_no_fields_in_view"] = "Toto zobrazenie nie je žiadna poľa v ňom. Kliknite na odkaz nižšie."; +$LANG["text_no_forms"] = "V súčasnej dobe neexistujú formulára v databáze. Ak chcete pridať nový formulár, kliknite na tlačidlo Pridať formulár nižšie."; +$LANG["text_no_forms_found"] = "Žiadne formy neboli nájdené."; +$LANG["text_no_forms_found_search"] = "Žiadne formy neboli nájdené. Rozšírte svoje vyhľadávacie kritériá."; +$LANG["text_no_modules_found"] = "Žiadne moduly boli nájdené. Skúste rozšíriť kritériá vyhľadávania."; +$LANG["text_no_recipients_added"] = "Nie príjemcami boli pridané."; +$LANG["text_no_search_results"] = "Nie sú k dispozícii žiadne výsledky s touto vyhľadávacích kritérií / View."; +$LANG["text_no_submissions_found"] = "Ospravedlňujeme sa, neboli nájdené žiadne pripomienky."; +$LANG["text_no_themes"] = "Nemáte žiadne definované témy. Kliknite na tlačidlo nižšie, aby ste si osviežili téme zoznamu alebo sa pozrieť tvarové nástroje užívateľskej dokumentácii pre informácie o pridávaní témy."; +$LANG["text_non_deletable_fields"] = "Toto pole sa používa jadra skript a nedá upraviť ani odstrániť bez toho, aby nekompatibility. Ak chcete zmeniť typ poľa, vytvoriť kópiu, a upraviť nastavenia pre kopírovanie."; +$LANG["text_option_list_group_explanation"] = "Ak je to vybraná, umožňuje, aby skupina svoje možnosti. Ako sú zobrazené skupiny, závisí od typu poľa pomocou tohto zoznamu volieb."; +$LANG["text_option_list_page"] = "Prepínače, zaškrtávacie políčka, rozbaľovacích a multi-select rozbaľovací pole všetky poskytujú užívateľovi viac možností, z ktorých si môžu vybrať jednu alebo viac položiek. Vo formulári nástroje, títo sú známi ako možnosť zoznamy. Všeobecne platí, že sú tieto vytvorené automaticky pridať vonkajšej formy postupu, ale môžete ručne pridať alebo upraviť voľbu zoznamu nižšie, ak zmeny obsahu formulára, alebo si vytvoriť pole, ktoré sa používajú len interne."; +$LANG["text_option_list_used_by_fields"] = "Túto voľbu Zoznam sa používa viac polí formulára. Ak máte aktualizovať informácie nižšie, bude zmenený na všetky polia (pozri pole formulára kartu a zobrazí sa zoznam polí). Ak chcete aktualizovať hodnoty pre jedného, ​​alebo čiastkové oblasti, ktoré sú v súčasnej dobe priradené, kliknite tu vytvoriť novú možnosť List s rovnakými hodnotami, ako je tento. Potom môžete priradiť pole formulára, ktoré chcete do novej skupiny."; +$LANG["text_public_form_omit_list_page"] = "Verejné formulára vám prospech prenájmu všetkých účtoch klienta k nim, bez toho aby museli ručne priradiť každému klientovi k nim. Táto stránka umožňuje určiť tých klientov, ktorí nemôžu prístup k tejto forme, aj keď forma je označená ako verejná."; +$LANG["text_public_view_omit_list_page"] = "Verejné Zobrazenie umožňujú využívať prenájmu všetkých účtoch klienta k nim, bez toho aby museli ručne priradiť každému klientovi k nim. Táto stránka umožňuje určiť tých klientov, ktorí nemôžu prístup k tejto konkrétnej View."; +$LANG["text_reference_tab_info"] = "Táto stránka obsahuje zoznam všetkých dostupných zástupné symboly pre formulár. Symboly sú reťazce, ktoré môžu byť použité v e-mailovej šablóny a položky označené zvláštnym zástupný ikona . Keď vstúpil do poľa, sú dynamicky prevedený na zodpovedajúcu hodnotu, keď je pole pohľadu alebo e-mail odoslaný."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Revízia užívateľskej dokumentácie"; +$LANG["text_send_email_from_edit_submission_page"] = "Zahŕňať možnosť poslať e-mail z Upraviť stránku Submission"; +$LANG["text_smart_fill_option_list_problem"] = "Neboli sme schopní sa Chytrý Vyplňte pole možností. Avšak, ako alternatíva, môžete skúsiť nahrať kópiu formulára stránky do políčka nižšie. Poznámka: Nepoužívajte Pridať surovín PHP stránky (alebo iný kód na strane servera) - stačí nahrať HTML verzia. Ak si chcete to, zobraziť a uložiť stránku z webového prehliadača."; +$LANG["text_submission_ip_address"] = "IP adresa užívateľa, ktorí sa na podanie."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Použite nižšie uvedený formulár pre zobrazenie buď sami, alebo poslať e-mail vyplývajúce z tohto e-mailu šablóny. E-mail je zasielaný len nižšie uvedenú e-mail, hlavné, Kópia a Skrytá e-mailovú adresu príjemcu, sú ignorované pri testovaní."; +$LANG["text_test_email_templates_no_submissions"] = "Za účelom testovania vašej e-mailovej šablóny, musíte najprv prejsť aspoň jednu formu podania."; +$LANG["text_theme_page_intro"] = "Táto stránka obsahuje zoznam všetkých vašich tém. Kliknite na obrázok zobrazíte väčšiu ukážka daného téme štýly. "Enabled" zaškrtávacie políčko určuje, či môže alebo nemôže túto tému, ktoré vyberie klientov. Ak chcete prechádzať všetky dostupné témy, navštívte webovú stránku formulár Nástroje."; +$LANG["text_tutorial_adding_first_form"] = "Konzultačné hodiny: Pridanie prvého ročníka!"; +$LANG["text_unique_submission_id"] = "Unikátny ID podania."; +$LANG["text_unused_option_list"] = "Táto voľba zoznam nie je použitá v žiadnom polí formulára."; +$LANG["text_upgraded"] = "Inštalácia bola modernizovaná na {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Táto možnosť Zoznam používa nasledujúce polia."; +$LANG["text_view_fields_info"] = "Táto karta, ktorá ovláda pole prejaví pri úpravách podaní v tomto pohľade, ich poradie a či sú upraviteľné, alebo nie."; +$LANG["text_view_tab_summary"] = "Táto karta vám umožňuje vytvárať rôzne spôsoby, ako skupinu a usporiadať dáta. Zobrazenie vám umožní vytvoriť vlastný podmnožiny formuláre dát rozdeliť do zvládnuteľných kúsky, a obmedziť to, čo klienti môžu vidieť a upravovať."; +$LANG["validation_account_disabled"] = "Je nám ľúto, bol Váš účet zablokovaný."; +$LANG["validation_account_not_recognized"] = "Ospravedlňujeme sa, že meno nie je rozpoznaný."; +$LANG["validation_account_not_recognized_info"] = "Ospravedlňujeme sa, bolo to, že meno nebolo nájdené. Prosím, skúste to znova, alebo kontaktujte správcu stránky na nižšie uvedenú adresu."; +$LANG["validation_account_pending"] = "Váš užívateľský účet sa čaká na schválenie správcu."; +$LANG["validation_check_delete_client"] = "Ste si istí, že chcete zmazať tento účet klienta?"; +$LANG["validation_client_password_missing_number"] = "Klient Heslo musí obsahovať aspoň jedno číslo (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Klient Heslo musí obsahovať aspoň jeden z nasledujúcich znakov: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Klient Heslo musí obsahovať aspoň jedno veľké písmeno."; +$LANG["validation_client_password_too_short"] = "Klient Heslo musí byť aspoň {\$number} znakov."; +$LANG["validation_col_name_is_reserved_word"] = "Ospravedlňujeme sa, táto databáza názov stĺpca je vyhradené práca v MySQL. Prosím premenujte ho!"; +$LANG["validation_db_name"] = "Názvy databázy nemôžu obsahovať obdobia alebo lomky."; +$LANG["validation_db_not_updated_invalid_input"] = "Databáza by mohla byť aktualizovaná. Prosím, skontrolujte, hodnoty, ktoré ste zadali, sú platné."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Je nám ľúto, musia predvolené správca a klientskych témy vždy povolené."; +$LANG["validation_default_phone_num_required"] = "Vyplňte, prosím, celé telefónne číslo pre <b> { \$ pole} </ b> - iba čísla."; +$LANG["validation_default_rule_alpha"] = "Prosím zadať iba písmená a čísla <b> { \$ pole} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Prosím, zadajte písmená len pre <b> { \$ pole} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Prosím zadať iba čísla <b> { \$ pole} </ b>."; +$LANG["validation_default_rule_required"] = "Prosím, zadajte hodnotu pre <b> { \$ pole} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Zadajte prosím platnú e-mailovú adresu <b> { \$ pole} </ b>."; +$LANG["validation_delete_form_confirm"] = "Prosím zaškrtnite toto políčko pre potvrdenie, že chcete zmazať tento formulár."; +$LANG["validation_delete_non_empty_option_list"] = "VAROVANIE! Táto možnosť List sa používa jeden alebo viac polí formulára. Mazanie sa bude tieto polia prestanú fungovať správne."; +$LANG["validation_display_names_incomplete"] = "Prosím, zadajte pre všetky zobrazované názvy, alebo kliknite Smart Fill možnosť zadať dynamicky."; +$LANG["validation_duplicate_form_field_name"] = "Nemôžete mať viac polí s rovnakým názvom poľa."; +$LANG["validation_email_not_found_or_invalid"] = "Je nám ľúto, email spojený s vašim účtom buď neexistuje alebo je neplatný."; +$LANG["validation_folder_invalid_permissions"] = "Za účelom spustenia tohto testu oprávnenie musí byť stanovený na upload zložku umožňujúce čítanie a zápis dát (777 na Unixe)."; +$LANG["validation_folder_not_writable"] = "Táto zložka nie je zapisovať."; +$LANG["validation_internal_form_too_many_fields"] = "Ospravedlňujeme sa, ale iba vytvorených formulárov s 1000 polí alebo menej."; +$LANG["validation_invalid_admin_email"] = "Zadajte platnú adminstrátora e-mailovú adresu."; +$LANG["validation_invalid_admin_username"] = "Vaše užívateľské meno môže obsahovať len alfanumerické znaky (AZ a 0-9)."; +$LANG["validation_invalid_client_username"] = "Klienta užívateľské meno môže obsahovať len alfanumerické znaky (AZ a 0-9)."; +$LANG["validation_invalid_client_username2"] = "Ospravedlňujeme sa, to meno môže obsahovať len písmená, číslice a znak podčiarknutia. Prosím, zadajte svoje užívateľské meno."; +$LANG["validation_invalid_column_name"] = "Názvy stĺpcov môžu byť alfanumerické (AZ, 0-9). Skontrolujte, prosím, názvy stĺpcov."; +$LANG["validation_invalid_custom_from_email"] = "Prosím, zadajte platné užívateľské 'Z' e-mailovú adresu."; +$LANG["validation_invalid_custom_reply_to_email"] = "Prosím, zadajte platné custom 'Reply-k' e-mailovú adresu."; +$LANG["validation_invalid_default_sessions_timeout"] = "Prosím zadajte platnú hodnotu (číslo) na predvolený čas zasadnutia."; +$LANG["validation_invalid_email"] = "Zadajte prosím platnú e-mailovú adresu."; +$LANG["validation_invalid_email_id"] = "Ospravedlňujeme sa, že je neplatný email ID."; +$LANG["validation_invalid_folder"] = "Sorry, to sa nezdá byť platným zložku."; +$LANG["validation_invalid_form_field_names"] = "Polí formulára môže byť iba alfanumerické a podčiarknutia (aZ, 0-9, _), bez medzier."; +$LANG["validation_invalid_num_clients_per_page"] = "Prosím, zadajte iba čísla Klienti Num Per pole stránku."; +$LANG["validation_invalid_num_emails_per_page"] = "Prosím, zadajte iba číslice pre e-maily na stránku."; +$LANG["validation_invalid_num_form_fields"] = "Prosím, len zadávanie čísiel v mnohých oblastiach odbore."; +$LANG["validation_invalid_num_forms_per_page"] = "Prosím, zadajte iba čísla v Num Formuláre na stránku poľa."; +$LANG["validation_invalid_num_menus_per_page"] = "Prosím, zadajte iba číslice na menu na stránke."; +$LANG["validation_invalid_num_modules_per_page"] = "Prosím, zadajte iba čísla v Num Moduly Per pole stránku."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Prosím, len zadávanie čísiel do zoznamov Num možnosť na stránku pole."; +$LANG["validation_invalid_num_submissions_per_page"] = "Prosím, zadajte platné počtu príspevkov na stránku."; +$LANG["validation_invalid_sessions_timeout"] = "Prosím, zadajte platné časového limitu relácie (iba celé čísla!)."; +$LANG["validation_invalid_tab_assign_values"] = "Prosím, zadajte iba čísla v 'z' a 'až' fields."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Váš server je inštalácia PHP má neplatné nastavenia upload_tmp_dir hodnotu. "{\$upload_folder}" nie je platný priečinok."; +$LANG["validation_invalid_url"] = "Zadajte prosím platnú adresu URL."; +$LANG["validation_invalid_username"] = "Vaše užívateľské meno môže obsahovať len alfanumerické znaky (AZ a 0-9)."; +$LANG["validation_is_form_active"] = "Uveďte, či je aktívna formulár, alebo nie."; +$LANG["validation_menu_name_taken"] = "Ospravedlňujeme sa, je to už názov ponuky. Vyberte si prosím nový názov."; +$LANG["validation_modules_search_no_status"] = "Prosím, vyberte Povolené alebo Zakázané políčka."; +$LANG["validation_no_access_type"] = "Prosím, zadajte typ prístupu."; +$LANG["validation_no_account_logout_url"] = "Prosím, zadajte svoje odhlásenie URL."; +$LANG["validation_no_account_password_confirmed"] = "Prosím, re-zadajte svoje nové heslo."; +$LANG["validation_no_account_password_confirmed2"] = "Prosím re-zadať nové heslo."; +$LANG["validation_no_admin_email"] = "Prosím, zadajte e-mailovú adresu administrátora."; +$LANG["validation_no_admin_theme"] = "Vyberte tému pre účet správcu."; +$LANG["validation_no_admin_theme_swatch"] = "Prosím, vyberte vzorkovník pre správcu témy."; +$LANG["validation_no_client_email"] = "Prosím, zadajte prihlasovací e-mailovú adresu."; +$LANG["validation_no_client_first_name"] = "Prosím, zadajte meno klienta."; +$LANG["validation_no_client_last_name"] = "Prosím, zadajte klienta priezvisko."; +$LANG["validation_no_client_login_page"] = "Uveďte prosím, ktoré stránky zákazník by mal byť presmerovaný, až sa prihlásiť"; +$LANG["validation_no_client_password"] = "Prosím, zadajte heslo klienta."; +$LANG["validation_no_client_theme_swatch"] = "Prosím, vyberte predvolený vzorkovník na klientské účty."; +$LANG["validation_no_client_username"] = "Prosím, zadajte užívateľské meno klienta."; +$LANG["validation_no_column_name"] = "Zadajte prosím všetky názvy stĺpcov, alebo kliknite na tlačidlo Inteligentné výplň, aby sa automaticky vyplní je."; +$LANG["validation_no_column_selected"] = "Vyberte prosím aspoň jedno pole zobraziť ako stĺpce na stránke predloženie výpisu."; +$LANG["validation_no_custom_from_email"] = "Prosím, zadajte užívateľské 'Z' e-mailovú adresu."; +$LANG["validation_no_custom_recipient_email"] = "Prosím, zadajte vlastnú emailovú adresu príjemcu."; +$LANG["validation_no_custom_reply_to_email"] = "Prosím, zadajte vlastný 'Reply-k' e-mailovú adresu."; +$LANG["validation_no_date_format"] = "Prosím, zadajte formát dátumu."; +$LANG["validation_no_db_column_single"] = "Prosím, zadajte databázy názov stĺpca."; +$LANG["validation_no_db_hostname"] = "Prosím, zadajte do databázy hostname."; +$LANG["validation_no_db_name"] = "Prosím, zadajte názov databázy."; +$LANG["validation_no_db_username"] = "Prosím, zadajte do databázy používateľské meno účtu."; +$LANG["validation_no_default_client_theme"] = "Vyberte predvolenú tému pre všetky nové účty."; +$LANG["validation_no_default_language"] = "Prosím, vyberte predvolený jazyk pre inštaláciu Forma Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Prosím, zadajte predvolené relácie, ktorá pre užívateľské účty."; +$LANG["validation_no_display_text"] = "Zadajte prosím zobrazovaný text pre každé pole."; +$LANG["validation_no_display_text_single"] = "Zadajte prosím displeja textové hodnoty."; +$LANG["validation_no_edit_submission_page_label"] = "Prosím, zadajte Upraviť Podanie stránky štítok."; +$LANG["validation_no_email"] = "Prosím, zadajte svoju e-mailovú adresu."; +$LANG["validation_no_email_config_field"] = "Uveďte, ktoré tvoria pole je pole e-mail."; +$LANG["validation_no_email_content"] = "Zadajte e-mailovú obsah aspoň jeden z formátov (HTML alebo text)."; +$LANG["validation_no_email_from_field"] = "Prosím, e-mail 'z' oblasti."; +$LANG["validation_no_email_template_name"] = "Zadajte e-mailovú názov šablóny."; +$LANG["validation_no_email_template_view_id"] = "Prosím, vyberte Zobraziť, na ktoré tento email šablóna by mala byť zmapované."; +$LANG["validation_no_email_template_view_mapping_value"] = "Uveďte, prosím, kedy by mal byť odoslaný e-mail."; +$LANG["validation_no_enabled_themes"] = "Uistite sa, že aspoň jedna téma, je povolené."; +$LANG["validation_no_first_name"] = "Prosím, zadajte svoje krstné meno."; +$LANG["validation_no_form_field_name"] = "Prosím, zadajte všetky názvy polí formulára."; +$LANG["validation_no_form_field_single"] = "Prosím, zadajte hodnotu poľa formulára."; +$LANG["validation_no_form_id"] = "ID formulára nebola špecifikovaná. Prosím, prihláste sa a skúste to znova."; +$LANG["validation_no_form_name"] = "Prosím, zadajte názov formulára."; +$LANG["validation_no_form_url"] = "Prosím, zadajte adresu URL formulára."; +$LANG["validation_no_last_name"] = "Prosím, zadajte svoje priezvisko."; +$LANG["validation_no_login_page"] = "Uveďte, ktoré stránky chcete zasielať pri každom prihlásení"; +$LANG["validation_no_logout_url"] = "Prosím, zadajte adresu URL odhlásenie."; +$LANG["validation_no_main_email_recipient"] = "Zadajte jedno hlavné e-mail príjemcu (tj nielen Kópia alebo Skrytá kópia)."; +$LANG["validation_no_menu"] = "Prosím, vyberte menu pre tento užívateľský účet."; +$LANG["validation_no_menu_id"] = "Prosím, vyberte ponuku."; +$LANG["validation_no_num_clients_per_page"] = "Prosím, zadajte počet klientskych účtov na stránku."; +$LANG["validation_no_num_emails_per_page"] = "Prosím, zadajte počet e-mailov na zozname na stránke."; +$LANG["validation_no_num_form_fields"] = "Zadajte prosím počet polí pre formulár."; +$LANG["validation_no_num_forms_per_page"] = "Prosím, zadajte počet formulárov na stránke."; +$LANG["validation_no_num_menus_per_page"] = "Prosím, zadajte počet ponúk na zozname na stránke."; +$LANG["validation_no_num_modules_per_page"] = "Prosím, zadajte počet modulov na stránke."; +$LANG["validation_no_num_option_lists_per_page"] = "Prosím, zadajte číslo voľby zozname na stránke."; +$LANG["validation_no_num_submissions_per_page"] = "Prosím, zadajte počet príspevkov sa zobrazí na stránke."; +$LANG["validation_no_option_list_name"] = "Prosím, zadajte názov zoznamu možností."; +$LANG["validation_no_page_titles"] = "Prosím, zadajte názov predvolená stránka pre používateľské kontá."; +$LANG["validation_no_password"] = "Prosím, zadajte svoje heslo."; +$LANG["validation_no_program_name"] = "Prosím, zadajte názov programu."; +$LANG["validation_no_second_password"] = "Prosím re-Zadajte svoje heslo."; +$LANG["validation_no_sessions_timeout"] = "Prosím, zadajte časového limitu relácie."; +$LANG["validation_no_smart_fill_values"] = "Prosím, zadajte názov poľa formulára a URL formulára."; +$LANG["validation_no_table_prefix"] = "Zadajte prosím prefix databázy."; +$LANG["validation_no_tabs_defined"] = "Definované žiadne záložky"; +$LANG["validation_no_test_email_recipient"] = "Prosím, zadajte e-mailovú adresu, kde by sme mali poslať skúšobné e-mail."; +$LANG["validation_no_test_email_submission_id"] = "Prosím, zadajte ID číslo podania."; +$LANG["validation_no_theme"] = "Prosím, vyberte tému."; +$LANG["validation_no_theme_swatch"] = "Prosím, vyberte vzorku farby na zvolenú tému."; +$LANG["validation_no_timezone_offset"] = "Prosím, zadajte posun časového pásma."; +$LANG["validation_no_titles"] = "Prosím, zadajte názvy stránok."; +$LANG["validation_no_two_column_names"] = "Ospravedlňujeme sa, nemusíte zadať rovnakú databázu názov stĺpca dvakrát."; +$LANG["validation_no_ui_language"] = "Prosím vyberte jazyk pre rozhranie."; +$LANG["validation_no_url"] = "Prosím, zadajte adresu URL."; +$LANG["validation_no_username"] = "Prosím, zadajte svoje užívateľské meno."; +$LANG["validation_no_username_or_js"] = "Musíte zadať používateľské meno. Aktivujte si javascript vo vašom prehliadači."; +$LANG["validation_no_view_fields"] = "Váš Zobraziť neobsahuje žiadne pole! Musíte vytvorit alespon jednu oblasť pre tam byť niečo, čo sa objaví vo vašej View."; +$LANG["validation_no_view_fields_selected"] = "Prosím, vyberte jednu alebo viac polí pridať do View."; +$LANG["validation_no_view_name"] = "Prosím, zadajte názov vášho zobrazenie."; +$LANG["validation_num_rows_to_add"] = "Prosím, zadajte počet riadkov, ktoré chcete pridať."; +$LANG["validation_option_list_name_taken"] = "Je nám ľúto, táto možnosť už názov zoznamu. Prosím zvoľte iný názov."; +$LANG["validation_password_in_password_history"] = "Z bezpečnostných dôvodov nie je možné zadať rovnaké heslo ako každý z posledných {\$history_size}. Zadajte prosím iné heslo."; +$LANG["validation_passwords_different"] = "Uistite sa, že heslá sú rovnaké."; +$LANG["validation_please_enter_search_date_range"] = "Vyberte časové obdobie hľadania."; +$LANG["validation_please_enter_search_keyword"] = "Prosím, zadajte hľadané slovo."; +$LANG["validation_select_field_type"] = "Vyberte prosím typ poľa."; +$LANG["validation_select_submissions_to_copy"] = "Vyberte tie príspevky, ktoré chcete skopírovať."; +$LANG["validation_select_submissions_to_delete"] = "Prosím, vyberte tie, čo tvrdia, ktorý chcete zmazať."; +$LANG["validation_smart_fill_cannot_fill"] = "Ospravedlňujeme sa, ale nemohli sme vyplnenie tejto oblasti."; +$LANG["validation_smart_fill_invalid_field_type"] = "Nepodarilo sa nám nájsť pole, ale to nie je rozbaľovacej, zaškrtávacie políčko alebo radio skupiny."; +$LANG["validation_smart_fill_no_field_found"] = "Ospravedlňujeme sa, ale nemohli sme nájsť pole formulára s týmto menom na uvedenej stránke."; +$LANG["validation_smart_fill_no_page"] = "Prosím vyhľadajte stránku, ktorá obsahuje polia, ktoré chcete Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Nahrajte prosím všetky stránky vo svojej forme."; +$LANG["validation_upload_folder_not_writable"] = "Tento dočasný presúvať zložky sa uvádza vo vašej inštalácie PHP nie je zapisovateľné. Kým to nie je stanovená, možno súbory nemožno premiestňovať pomocou formulára Nástroje (alebo akýkoľvek iný program, PHP). Obráťte sa na svojho poskytovateľa hostingu."; +$LANG["validation_upload_html_files_only"] = "Prosím nahrať iba súbory HTML."; +$LANG["validation_username_taken"] = "Ospravedlňujeme sa, že užívateľské meno je už prijatá. Prosím zadajte iné meno."; +$LANG["validation_wrong_password"] = "Je nám ľúto, že heslo nesúhlasí."; +$LANG["word_about"] = "O"; +$LANG["word_access"] = "Prístup"; +$LANG["word_account"] = "Účet"; +$LANG["word_account_sp"] = "Účtu (ov)"; +$LANG["word_accounts"] = "Účty"; +$LANG["word_action"] = "Akcia"; +$LANG["word_active"] = "Aktívne"; +$LANG["word_add"] = "Pridať"; +$LANG["word_add_rightarrow"] = "Pridanie »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Administrácia"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Potom"; +$LANG["word_aquamarine"] = "Akvamarín"; +$LANG["word_asc"] = "Vzostupne"; +$LANG["word_author"] = "Autor"; +$LANG["word_author_c"] = "Autor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Späť"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Predtým"; +$LANG["word_benefits"] = "Výhody"; +$LANG["word_blue"] = "Modrý"; +$LANG["word_cancel"] = "Zrušiť"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Zaškrtávacie políčka"; +$LANG["word_checklist"] = "Kontrolný zoznam"; +$LANG["word_client"] = "Klient"; +$LANG["word_client_c"] = "Klient:"; +$LANG["word_clients"] = "Klienti"; +$LANG["word_close"] = "ZATVORIŤ"; +$LANG["word_code"] = "Kód"; +$LANG["word_column"] = "Stĺpec"; +$LANG["word_columns"] = "Stĺpce"; +$LANG["word_columns_sp"] = "Stĺpec (s)"; +$LANG["word_complete"] = "DOKONČENÉ"; +$LANG["word_configuration"] = "Konfigurácia"; +$LANG["word_content"] = "Obsah"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Pokračovať »"; +$LANG["word_copy"] = "Kópie"; +$LANG["word_custom"] = "Vlastné"; +$LANG["word_data"] = "Dáta"; +$LANG["word_date"] = "Dátum"; +$LANG["word_debugging_c"] = "Ladenie:"; +$LANG["word_delete"] = "VYMAZAŤ"; +$LANG["word_desc"] = "Zostupne"; +$LANG["word_direct"] = "Priama"; +$LANG["word_disabled"] = "Neaktívne"; +$LANG["word_documentation"] = "Dokumentácia"; +$LANG["word_done"] = "Hotovo"; +$LANG["word_drawbacks"] = "Nevýhody"; +$LANG["word_dropdown"] = "Rozbaľovacie menu"; +$LANG["word_edit"] = "UPRAVIŤ"; +$LANG["word_editable"] = "Editovateľné"; +$LANG["word_email"] = "EMAIL"; +$LANG["word_email_c"] = "E-mail:"; +$LANG["word_emails"] = "Emaily"; +$LANG["word_enabled"] = "Enabled"; +$LANG["word_equals"] = "Rovná sa"; +$LANG["word_error"] = "Chyba"; +$LANG["word_error_c"] = "Chyba:"; +$LANG["word_examples_c"] = "Príklady:"; +$LANG["word_external"] = "Externé"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Pole"; +$LANG["word_field_sp"] = "Pole/polia"; +$LANG["word_fields"] = "Oblasti"; +$LANG["word_fields_sp"] = "Pole (s)"; +$LANG["word_file"] = "Súbor"; +$LANG["word_file_b_uc"] = "[SÚBOR]"; +$LANG["word_files"] = "Súbory"; +$LANG["word_filters"] = "Filtre"; +$LANG["word_filters_sp"] = "Filter (y)"; +$LANG["word_for"] = "pre"; +$LANG["word_form"] = "Formulár"; +$LANG["word_form_c"] = "Formulár:"; +$LANG["word_formatting"] = "Formátovanie"; +$LANG["word_forms"] = "Formuláre"; +$LANG["word_found"] = "Nájdené"; +$LANG["word_from"] = "Od"; +$LANG["word_from_c"] = "Od:"; +$LANG["word_general"] = "Generálny"; +$LANG["word_green"] = "Zelený"; +$LANG["word_grey"] = "Šedá"; +$LANG["word_height"] = "Výška"; +$LANG["word_help"] = "Pomoc"; +$LANG["word_hidden"] = "Skrytý"; +$LANG["word_highlight"] = "Vyzdvihnúť"; +$LANG["word_horizontal"] = "Horizontálne"; +$LANG["word_hour"] = "Hodina"; +$LANG["word_hours"] = "Hodiny"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Obrázok"; +$LANG["word_incomplete"] = "Nedokončené"; +$LANG["word_install"] = "Inštalovať"; +$LANG["word_installation"] = "Inštalácia"; +$LANG["word_internal"] = "Interné"; +$LANG["word_language"] = "Jazyk"; +$LANG["word_large"] = "Veľké"; +$LANG["word_like"] = "ako/rovný"; +$LANG["word_login"] = "PRIHLÁSENIE"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Odhlásiť"; +$LANG["word_main"] = "Hlavné"; +$LANG["word_medium"] = "Stredná"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menu"; +$LANG["word_minutes"] = "minút"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Moduly"; +$LANG["word_na"] = "bez údajov"; +$LANG["word_name"] = "Meno"; +$LANG["word_name_c"] = "Meno:"; +$LANG["word_never"] = "Nikdy"; +$LANG["word_next_rightarrow"] = "ďalšie »"; +$LANG["word_next_step_rightarrow"] = "Ďalší krok »"; +$LANG["word_no"] = "Nie"; +$LANG["word_none"] = "Žiadny"; +$LANG["word_notes"] = "Notes"; +$LANG["word_notification"] = "Notifikácia"; +$LANG["word_number"] = "Číslo"; +$LANG["word_off"] = "Preč"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Dobre"; +$LANG["word_on"] = "V"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operátor"; +$LANG["word_options"] = "Možnosti"; +$LANG["word_orange"] = "Oranžový"; +$LANG["word_order"] = "Poradie"; +$LANG["word_other"] = "Iný"; +$LANG["word_other_c"] = "Ostatné:"; +$LANG["word_page"] = "Stránka"; +$LANG["word_page_c"] = "Stránka:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Heslo"; +$LANG["word_password_c"] = "Heslo:"; +$LANG["word_pending"] = "Čakajúci"; +$LANG["word_permissions"] = "Oprávnenia"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Predchádzajúce"; +$LANG["word_private"] = "Súkromné"; +$LANG["word_public"] = "Verejnosť"; +$LANG["word_purple"] = "Purpurový"; +$LANG["word_recipient"] = "Príjemca"; +$LANG["word_recipient_sp"] = "Príjemca/príjemcovia"; +$LANG["word_red"] = "Červený"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Odstrániť"; +$LANG["word_remove_uc_leftarrow"] = "«Odstrániť"; +$LANG["word_reply_to"] = "Odpovedať-komu"; +$LANG["word_reply_to_c"] = "Odpovedať-komu:"; +$LANG["word_required"] = "Požadovaný"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Vyriešené"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "riadok"; +$LANG["word_search"] = "Hľadať"; +$LANG["word_searchable"] = "Prehľadávateľný"; +$LANG["word_select"] = "Vybrať"; +$LANG["word_setting"] = "Nastavenie"; +$LANG["word_settings"] = "NASTAVENIA"; +$LANG["word_show"] = "Ukázať"; +$LANG["word_size"] = "Veľkosť"; +$LANG["word_skipped"] = "Preskočil"; +$LANG["word_small"] = "Malé"; +$LANG["word_solution"] = "Riešenie"; +$LANG["word_sortable"] = "Triediteľné"; +$LANG["word_start"] = "Začiatok"; +$LANG["word_status"] = "Stav"; +$LANG["word_string"] = "Reťazec"; +$LANG["word_subject"] = "Predmet"; +$LANG["word_subject_c"] = "Predmet"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Príspevok"; +$LANG["word_submissions"] = "Príspevky"; +$LANG["word_system"] = "Systém"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Kariet"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Téma"; +$LANG["word_themes"] = "Témy"; +$LANG["word_time"] = "Čas"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Tipy"; +$LANG["word_today"] = "Dnes"; +$LANG["word_truncate_q"] = "Skrátiť?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Neznáma"; +$LANG["word_update"] = "AKTUALIZÁCIA"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Užívateľ"; +$LANG["word_username"] = "Užívateľské meno"; +$LANG["word_username_c"] = "Užívateľské meno:"; +$LANG["word_validation"] = "Validácia"; +$LANG["word_value"] = "Hodnota"; +$LANG["word_value_sp"] = "Hodnota(hodnoty)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Skontrolujte, či"; +$LANG["word_version"] = "Verzia"; +$LANG["word_vertical"] = "Vertikálne"; +$LANG["word_view"] = "Zobraziť"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Varovanie!"; +$LANG["word_warning_c"] = "Upozornenie:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Vitajte!"; +$LANG["word_width_c"] = "šírka:"; +$LANG["word_words"] = "Slová"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Žltý"; +$LANG["word_yes"] = "Áno"; \ No newline at end of file diff --git a/global/lang/sl.php b/global/lang/sl.php new file mode 100644 index 00000000..3cd0f8e3 --- /dev/null +++ b/global/lang/sl.php @@ -0,0 +1,1219 @@ +Opozorilo! Izbrali ste {\$num_selected_on_page} vlog na tej strani in {\$num_selected_on_other_pages} na drugih straneh. Prosimo izberite eno od naslednjih možnosti:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Opozorilo! Niste izbrali nobenih pripomb na to stran, vendar ste izbrali {\$num_selected_on_other_pages} na drugih straneh. Prosimo, potrdite, da želite izbrisati te navedbe.
    "; +$LANG["confirm_delete_view"] = "Si prepričan, da želiš izbrisati pa pogled?"; +$LANG["confirm_refresh_page"] = "Ali ste prepričani, da želite osvežiti stran? To bodo izgubili vse spremembe, ki ste jih naredili."; +$LANG["confirm_save_change_before_redirect"] = "Eno ali več polj so bile posodobljene. Želite shraniti spremembe pred preusmeritvijo?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Ali ste prepričani, da želite Smart Izpolnite imena stolpec baze podatkov? To bo prepisali obstoječe vrednosti."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Ta možnost samodejno generira imena stolpca zbirke podatkov, ki temelji na poljih Text Display, zato vsebine baze podatkov tabele, so lažje branje."; +$LANG["confirm_smart_fill_display_names"] = "Ali ste prepričani, da želite Smart Izpolnite Display imena? To bo prepisali obstoječe vrednosti."; +$LANG["confirm_ungroup_option_list"] = "Ali ste prepričani, da želite razdružili ta možnost seznamu? Vse možnosti bodo lumped v eno samo, nerazporejene seznam."; +$LANG["confirm_uninstall_module"] = "Si prepričan, da želiš odstraniti ta modul? Podatki bodo izgubljeni!"; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "pet"; +$LANG["date_Friday"] = "petek"; +$LANG["date_Mon"] = "pon"; +$LANG["date_Monday"] = "ponedeljek"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "sob"; +$LANG["date_Saturday"] = "sobota"; +$LANG["date_Sun"] = "ned"; +$LANG["date_Sunday"] = "nedelja"; +$LANG["date_Thu"] = "čet"; +$LANG["date_Thursday"] = "četrtek"; +$LANG["date_Tue"] = "tor"; +$LANG["date_Tuesday"] = "torek"; +$LANG["date_Wed"] = "sre"; +$LANG["date_Wednesday"] = "sreda"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "april"; +$LANG["date_month_August"] = "avgust"; +$LANG["date_month_December"] = "december"; +$LANG["date_month_February"] = "februar"; +$LANG["date_month_January"] = "januar"; +$LANG["date_month_July"] = "julij"; +$LANG["date_month_June"] = "junij"; +$LANG["date_month_March"] = "marec"; +$LANG["date_month_May"] = "maj"; +$LANG["date_month_November"] = "november"; +$LANG["date_month_October"] = "oktober"; +$LANG["date_month_September"] = "september"; +$LANG["date_month_short_Apr"] = "apr"; +$LANG["date_month_short_Aug"] = "avg"; +$LANG["date_month_short_Dec"] = "dec"; +$LANG["date_month_short_Feb"] = "feb"; +$LANG["date_month_short_Jan"] = "jan"; +$LANG["date_month_short_Jul"] = "jul"; +$LANG["date_month_short_Jun"] = "jun"; +$LANG["date_month_short_Mar"] = "mar"; +$LANG["date_month_short_May"] = "maj"; +$LANG["date_month_short_Nov"] = "nov"; +$LANG["date_month_short_Oct"] = "okt"; +$LANG["date_month_short_Sep"] = "sep"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Uporabiški račun je izbrisan!"; +$LANG["notify_account_updated"] = "Tvoj račun je bil uspešno posodobljen."; +$LANG["notify_add_display_values"] = "Dodaj prikazne vrednosti"; +$LANG["notify_admin_menu_updated"] = "Uprava meni je bil posodobljen."; +$LANG["notify_admin_theme_overridden"] = "Upravitelja tema je bila ročno nastavljivi."; +$LANG["notify_allow_url_fopen_not_set"] = "Žal, tega preskusa ni mogoče zagnati na vaši spletni strežnik. Zahteva allow_url_fopen, ki se določi na 1 v vašem php.ini datoteki. Ta nastavitev omogoča PHP dostop do datotek preko URL, ki je potreben za izvedbo tega preskusa. Lahko test je ročno s prenosom datoteke v to mapo prek FTP-ja, nato pa poskušajo do njega dostop na URL, ki ste jih dobavili."; +$LANG["notify_change_temp_password"] = "Pravkar ste prijavljeni z začasnim geslom. Moral bi ponastavitev gesla zdaj!"; +$LANG["notify_click_to_edit_new_submission"] = "Kliknite tukaj, da uredite novo oddajo."; +$LANG["notify_client_account_menus_updated"] = "Račun stranke (e) so bile posodobljene, da {\$menu_name} menu. Sedaj lahko izbrišete meni, da je bila prej povezana z računa (s)."; +$LANG["notify_client_account_not_updated"] = "Račun stranke ni bilo mogoče posodobiti."; +$LANG["notify_client_account_themes_updated"] = "Račun stranke (e) so bile posodobljene na {\$theme} temo. Sedaj lahko onemogočite tema je bila povezana z računa (s)."; +$LANG["notify_client_account_updated"] = "Uporabniški račun je uspešno posodobljen."; +$LANG["notify_client_menu_deleted"] = "Uporabniški meni je izbrisan."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Meni je bil izbrisan, ampak naslednje račune strank sedaj nimajo več meni! Morate posodobiti naslednje račune:"; +$LANG["notify_client_menu_updated"] = "Uporabniški meni je posodobljen."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Žal, meni, ki ga pravkar poskušali izbrisati že uporabljajo spodaj navedene stranke. Za brisanje meni, ki ga bo najprej treba dodeliti strankam na druge menije. Kliknite na ime stranke, da uredite, da se posamezni račun, ali dodeliti vseh računov za drug meni z uporabo menija spodaj."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Žal mi je, ena od tem, ki ste jo pravkar invalidi se že uporabljajo naslednje račune strank. Da bi onemogočili temo boste morali najprej dodeliti vsaki stranki na drugo temo. Kliknite na ime stranke, da uredite, da se posamezni račun, ali dodeliti vseh računov za temo z uporabo menija spodaj."; +$LANG["notify_edit_email_fields_link"] = "Kliknite tukaj določiti, katere oblike polja email polja, tako da jih lahko ciljno v vaš e-poštni predloge."; +$LANG["notify_edit_field_new_field"] = "To je novo področje. Boste morali posodobiti glavno stran, preden bi lahko v celoti urediti to področje."; +$LANG["notify_edit_option_list_after_save"] = "Izbrati morate Option List in nato Shrani spremembe, preden bi lahko to urejanje."; +$LANG["notify_email_field_config_deleted"] = "Email konfiguracija je bil izbrisan."; +$LANG["notify_email_fields_not_updated"] = "Žal nam je, nismo mogli posodobiti email polja."; +$LANG["notify_email_fields_updated"] = "Email polja so bile posodobljene."; +$LANG["notify_email_not_sent"] = "Oprostite, e-pošte ni bilo mogoče poslati. Obrnite se na skrbnika spletnega mesta na naslovu spodaj."; +$LANG["notify_email_not_sent_c"] = "Oprostite, e-pošte ni bilo mogoče poslati:"; +$LANG["notify_email_sent"] = "Email(i) so bili uspešno poslani."; +$LANG["notify_email_template_deleted"] = "Email predloga je bil izbrisan."; +$LANG["notify_email_template_updated"] = "Email predloga je bil posodobljen."; +$LANG["notify_enabled_module_list_updated"] = "Seznam omogočen modulov je bil posodobljen."; +$LANG["notify_error_saving_fields"] = "Prišlo je do napake pri shranjevanju polja."; +$LANG["notify_field_changes_saved"] = "Spremembe v svojem področju (i) so bile shranjene."; +$LANG["notify_field_options_smart_filled"] = "Vaš področju možnosti so bile Smart Filled."; +$LANG["notify_field_selected"] = "Polje je bil izbran. Kliknite tukaj, da se vrnete na glavni seznam polje."; +$LANG["notify_field_updated"] = "To polje je posodobljeno."; +$LANG["notify_file_not_uploaded"] = "Datoteke ni bilo mogoče naložiti."; +$LANG["notify_file_uploaded"] = "Datoteka je bila uspešno naložena."; +$LANG["notify_filters_not_updated"] = "Prišlo je do napake posodobitve te stranke oddajo filtrov."; +$LANG["notify_filters_updated"] = "Predložitev filtri so bile posodobljene za to stranko."; +$LANG["notify_folder_correct_permissions"] = "Dovoljenja tega imenika so pravilna."; +$LANG["notify_folder_url_match"] = "URL mapo in se zdi, da pravilno tekmo."; +$LANG["notify_folder_url_no_access"] = "Ta preskus ni bilo mogoče opraviti, ker PHP ni mogel, da je dostop do URL-ja. To je ponavadi posledica pa URL zaščiten z geslom. Htaccess datoteko."; +$LANG["notify_folder_url_no_match"] = "Ta mapa-URL kombinacija ne zdi, da je treba tekmo."; +$LANG["notify_folder_url_unknown_error"] = "Neznane napake. Lahko test je ročno s prenosom datoteke v to mapo prek FTP-ja, nato pa poskušajo do njega dostop na URL, ki ste jih dobavili."; +$LANG["notify_form_access_type_email_info"] = "Ta oblika je tip skrbniški dostop, tako da ni stranke imajo dostop do nje in niso navedeni v dropdown spodaj."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Oprostite, obrazec s tem ID ne obstaja."; +$LANG["notify_form_field_not_added"] = "Obrazec polje '{\$fieldname}' ni bilo mogoče dodati."; +$LANG["notify_form_field_options_updated"] = "Možnosti polje obrazca so bile posodobljene."; +$LANG["notify_form_field_removed"] = "Polje je bilo uspešno odstranjeno."; +$LANG["notify_form_fields_removed"] = "Polja so bila uspešno odstranjena."; +$LANG["notify_form_not_updated_notify_admin"] = "Vaša obliki ni bilo mogoče posodobiti. Obrnite se na skrbnika spletnega mesta za prijavo težav."; +$LANG["notify_form_settings_updated"] = "Vaše form nastavitve so bile uspešno posodobljene."; +$LANG["notify_form_submission_updated"] = "Obrazec za oddajo je bil posodobljen."; +$LANG["notify_form_tabs_updated"] = "Kartice so bile posodobljene."; +$LANG["notify_form_updated"] = "Obrazec je bil uspešno posodobljen."; +$LANG["notify_form_views_updated"] = "Obrazec Ogledov so bile posodobljene."; +$LANG["notify_install_invalid_db_info"] = "Oprostite, nismo mogli povezati z bazo podatkov z informacijami, ki ste. Napaki zbirke je vrnil: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Vaš obrazec je bil ustvarjen! Lahko nastavite svoj obrazec s pomočjo teh kartic."; +$LANG["notify_invalid_account_information_in_sessions"] = "Računu informacije, shranjene na sejah, je neveljavna. Znova se prijavite spodaj."; +$LANG["notify_invalid_license_key"] = "Žal mi je, da ne kaže, da je veljaven licenčni ključ. Prosimo, poskusite znova vnesete."; +$LANG["notify_invalid_permissions"] = "Nimate dovoljenja za dostop do te strani. Ste bili odjavljeni."; +$LANG["notify_invalid_search_dates"] = "Prosimo, uporabite datepicker vnesti veljaven datum ali datume."; +$LANG["notify_invalid_upload_folder"] = "Upload mapa je neveljaven ali ni mogoče pisati."; +$LANG["notify_lang_list_updated"] = "Voljo jezik uporabniškega vmesnika seznam je bil posodobljen."; +$LANG["notify_login_info_emailed"] = "Vaše podatke za prijavo je bil po e-pošti vam."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Ups, se ta modul že nameščen!"; +$LANG["notify_module_installed"] = "Modul ni nameščen. Kliknite tukaj, da izberete modul."; +$LANG["notify_module_list_updated"] = "Modul seznam je bil posodobljen."; +$LANG["notify_module_uninstalled"] = "Modul je bil odstranjen."; +$LANG["notify_module_updated"] = "{\$module} modul je bil posodobljen za {\$version}. Kliknite tukaj za izbiro modula ."; +$LANG["notify_multi_field_selected"] = "Polje je bil izbran. Kliknite tukaj, če si želite ogledati in urediti polje možnosti."; +$LANG["notify_multi_field_updated"] = "To polje je bil posodobljen. Boste lahko nastavite polje možnosti, po odprtju obrazca."; +$LANG["notify_multiple_fields_found"] = "Več elementov je bilo ugotovljeno, s tem ime polja ({\$field_name}). To se lahko zgodi, če vaša stran vsebuje več kot eno obliko ali če ste po nesreči ime enega od vaših obrazcev enako kot druge. Prosimo, izberite tistega, ki ga želite na seznamu spodaj."; +$LANG["notify_new_default_view_created"] = "Novo, privzeto View, ki vsebuje vse vaše polja obrazca je bila ustvarjena."; +$LANG["notify_new_submission_created"] = "Oddaja je bila ustvarjena. Lahko ga uredite spodaj."; +$LANG["notify_no_account_id_in_sessions"] = "No uporabniški račun ID je bilo na sejah. Znova se prijavite spodaj."; +$LANG["notify_no_api_installed"] = "Nimate nameščene API"; +$LANG["notify_no_client_permissions"] = "Ni na voljo nastavitev za urejanje."; +$LANG["notify_no_email_template_selected"] = "Prosim izberi email predlogo."; +$LANG["notify_no_emails_defined"] = "No e-poštna sporočila so bili določeni za to obliko. Če želite dodati nove, kliknite spodnji gumb."; +$LANG["notify_no_field_settings"] = "Ta tip polja ne vsebuje nobenih dodatnih nastavitev."; +$LANG["notify_no_fields_in_tab"] = "Ta zavihek ne vsebuje polj."; +$LANG["notify_no_option_lists"] = "Ni možnosti seznami, določeni. Kliknite spodnji gumb, da ustvarite novega."; +$LANG["notify_no_test_submission"] = "Obrazec Tools ni prejela še test uspešno oddajo."; +$LANG["notify_no_user_email_fields_configured"] = "Opomba: če želite poslati e-pošto za katero koli e-poštni naslov, ki je bila vključena v obliki, morate najprej nastaviti polja email obrazca."; +$LANG["notify_no_views"] = "Vaš obrazec nima Views ustanovi! Potrebovali boste vsaj en pogled, da bi upravljanje podatkov obrazca."; +$LANG["notify_no_views_assigned_to_client_form"] = "Zdi se, da je vaš uporabniški račun še ni bil dodeljen v kakršni koli obliki Pogledi, zato ne boste mogli videti nobenih podatkov. Obrnite se na skrbnika za nadaljnjo pomoč."; +$LANG["notify_no_views_defined"] = "Nimate vsa mnenja, opredeljene. Ne boste mogli ogledati ta obrazec za vloge, razen če se ustvari vsaj en pogled. Kliknite na gumb spodaj za privzeti pogled."; +$LANG["notify_option_list_deleted"] = "Možnost seznama je bila izbrisana."; +$LANG["notify_option_list_updated"] = "Možnost seznam je bil posodobljen."; +$LANG["notify_public_form_omit_list_updated"] = "Odjemalec izpustiti seznam za to obliko je bil posodobljen."; +$LANG["notify_public_view_omit_list_updated"] = "Odjemalec izpustiti seznam za to si je bil posodobljen."; +$LANG["notify_required_admin_pages"] = "Na naslednjih straneh so predstavljene v meniju administrator: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Žal, ni bilo nobene dejavnosti za, medtem ko smo imeli tako, da se prijavite na zmenek. Znova se prijavite spodaj."; +$LANG["notify_setup_options_updated"] = "Setup možnosti so bile posodobljene."; +$LANG["notify_smart_fill_field_not_found"] = "Nismo mogli najti polje s tem imenom ({\$field_name}) v obliki (e) določeni. Lahko nastavite ročno tipa polja spodaj, ali kliknite gumb Preskoči na tem področju urediti pozneje."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Vaša datoteka (e) so uspešno prenesli. Preizkusite klikom na gumb Smart Fill, da poskusite znova. Če ta korak ne uspe, boste morali preskočiti ta korak in nastavite polja obrazca manally pozneje."; +$LANG["notify_smart_fill_submitted"] = "Obrazec je bil predložen. Glede na velikost in obliko Število poljskih možnosti, lahko to traja nekaj časa."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Žal mi je, eno ali več datotek, ki ste ga vnesli, ne bi bilo mogoče naložiti. Boste morali preskočiti ta korak in konfigurirate ročno polja."; +$LANG["notify_submission_and_files_deleted"] = "Vnos in datoteke združene z njim so bile uspešno izbrisane."; +$LANG["notify_submission_copied"] = "Predložitev je bila kopirana."; +$LANG["notify_submission_copied_edit"] = "Predložitev je bila kopirana. Spodaj lahko uredite."; +$LANG["notify_submission_deleted"] = "Vnos izbrisan uspešno."; +$LANG["notify_submission_deleted_with_problems"] = "Oddajo je bil izbrisan, ampak so se pojavile naslednje težave, ko se je poskušalo izbrisati datoteko (-a):"; +$LANG["notify_submission_id_not_found"] = "Predložitev ID ni bilo mogoče najti."; +$LANG["notify_submission_not_updated"] = "Oddajo ni bilo treba posodobiti."; +$LANG["notify_submissions_and_files_deleted"] = "Vloge in vseh datotek (e) v zvezi z njimi je bilo uspešno zbrisan."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} prispevkov je bilo kopiranih."; +$LANG["notify_submissions_deleted"] = "Predlogi so bili črtani uspešno."; +$LANG["notify_submissions_deleted_with_problems"] = "Vloge so bile izbrisane, vendar so se pojavile naslednje težave, ko se je poskušalo izbrisati datoteko (-a):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Vaš e-test ni bilo mogoče poslati."; +$LANG["notify_theme_cache_folder_not_writable"] = "Ta tema je cache mapo ni mogoče pisati. Da bi to temo, {\$folder} mapo mora imeti v celoti za branje in pisanje dovoljenja."; +$LANG["notify_theme_list_updated"] = "Tema seznam je bil posodobljen."; +$LANG["notify_themes_settings_updated"] = "Vaše temo nastavitve so bile posodobljene."; +$LANG["notify_view_deleted"] = "Pogled je izbrisan."; +$LANG["notify_view_group_deleted"] = "Poglej Skupina je bila izbrisana."; +$LANG["notify_view_missing_columns"] = "Ups! Oprostite, ta pogled ni bil v celoti ustanovljena še."; +$LANG["notify_view_missing_columns_admin_fix"] = "Kliknite tukaj , da določite, ki naj bi polja prikažejo kot stolpci na tej strani."; +$LANG["notify_view_updated"] = "Pogled je posodobljen."; +$LANG["notify_your_email_sent"] = "Email je uspešno poslan."; +$LANG["phrase_100_per_page"] = "100 na stran"; +$LANG["phrase_10_per_page"] = "10 na stran"; +$LANG["phrase_15_per_page"] = "15 na stran"; +$LANG["phrase_1_direct"] = "1. Direktno"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 na stran"; +$LANG["phrase_25_per_page"] = "25 na stran"; +$LANG["phrase_2_code"] = "2. Koda"; +$LANG["phrase_2_columns"] = "2 stolpcev"; +$LANG["phrase_2chars"] = "2 Zlatovčice"; +$LANG["phrase_3_columns"] = "3 Columns"; +$LANG["phrase_4_columns"] = "Stolpci 4"; +$LANG["phrase_50_per_page"] = "50 na stran"; +$LANG["phrase_accepting_submissions"] = "(vnosi se sprejemajo)"; +$LANG["phrase_access_admin_account_c"] = "Do svojega administratorskega računa lahko dostopiš tukaj:"; +$LANG["phrase_access_type"] = "Tip dostopa"; +$LANG["phrase_account_info"] = "Informacija o računu"; +$LANG["phrase_account_settings"] = "Nastavitve računa"; +$LANG["phrase_action_needed"] = "Potrebno je ukrepanje"; +$LANG["phrase_add_client"] = "Dodaj uporabnika"; +$LANG["phrase_add_client_menu"] = "Dodaj uporabnikov meni"; +$LANG["phrase_add_default_settings_rightarrow"] = "Dodaj privzete nastavitve ""; +$LANG["phrase_add_field"] = "Dodaj polje"; +$LANG["phrase_add_fields"] = "Dodaj polja"; +$LANG["phrase_add_fields_rightarrow"] = "Add Field (s) »"; +$LANG["phrase_add_form"] = "Dodaj obrazec"; +$LANG["phrase_add_form_external"] = "Dodaj Obrazec - Zunanji"; +$LANG["phrase_add_form_internal"] = "Dodaj Obrazec - Notranji"; +$LANG["phrase_add_new_group_rightarrow"] = "Dodaj novo skupino »"; +$LANG["phrase_add_num_rows"] = "Dodaj {\$number} Vrstico/ci/ce"; +$LANG["phrase_add_row"] = "Dodaj vrstico »"; +$LANG["phrase_add_submission_button"] = "Dodaj Oddaja Button"; +$LANG["phrase_add_view_rightarrow"] = "Dodaj View »"; +$LANG["phrase_adding_multi_page_form"] = "Dodajanje več straneh obliki z API"; +$LANG["phrase_adding_single_page_form"] = "Dodajanje enim obrazcem z API"; +$LANG["phrase_admin_menu"] = "Administratorski meni"; +$LANG["phrase_admin_only"] = "Le za administratorje"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Tema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Napredne nastavitve »"; +$LANG["phrase_all_X_results_selected"] = "Vse {\$numresults} Rezultati Izbrane"; +$LANG["phrase_all_clients"] = "Vsi uporabniki"; +$LANG["phrase_all_clients_except_c"] = "Vsi uporabniki razen:"; +$LANG["phrase_all_clients_have_access"] = "(dostop imajo vsi uporabniki)"; +$LANG["phrase_all_fields"] = "Vsa polja"; +$LANG["phrase_all_fields_displayed"] = "Prikazana so vsa polja"; +$LANG["phrase_all_statuses"] = "Vsi statusi"; +$LANG["phrase_all_submissions"] = "Vsi vnosi"; +$LANG["phrase_allow_fields_edited"] = "Dovoli urejanje polj"; +$LANG["phrase_alphanumeric"] = "Alfanumerična (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API različica"; +$LANG["phrase_apply_timezone_offset"] = "Uporabi Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Določi vse našteto račune strank na {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Določi vse našteto račune strank na {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Na koncu"; +$LANG["phrase_at_start"] = "Na začetek"; +$LANG["phrase_author_link"] = "Avtor Link"; +$LANG["phrase_auto_disable_account"] = "Auto-onemogočite račun, potem ko ni uspel # prijavo poskusov"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Uporabniki na voljo"; +$LANG["phrase_available_fields"] = "Na voljo Fields"; +$LANG["phrase_available_option_lists"] = "Na voljo seznami Možnost"; +$LANG["phrase_available_swatches"] = "Na voljo swatches"; +$LANG["phrase_available_swatches_c"] = "Na voljo swatches:"; +$LANG["phrase_available_tabs"] = "Na voljo Tabs"; +$LANG["phrase_available_views"] = "Na voljo Views"; +$LANG["phrase_awaiting_form_submission"] = "Čakam na vnos obrazca."; +$LANG["phrase_back_to_field_list"] = "«nazaj na seznamu polj"; +$LANG["phrase_back_to_search_results"] = "nazaj na rezultate iskanja"; +$LANG["phrase_base_view_on"] = "Osnovni Pogled na ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Spremeni informacije o vpisu"; +$LANG["phrase_characters_limit_p"] = "znakov omejitev."; +$LANG["phrase_check_db_settings_try_again"] = "Preveri nastavitve podatkovne baze in ponovno klikni Nadaljuj."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Preverite URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Pospravi"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Clear piši List"; +$LANG["phrase_client_account_settings"] = "Nastavitve uporabnikovega računa"; +$LANG["phrase_client_field"] = "Client Field"; +$LANG["phrase_client_map_filters"] = "Client Map Filtri »"; +$LANG["phrase_client_may_edit"] = "Uporabnik lahko ureja"; +$LANG["phrase_client_menu"] = "Meni uporabnika"; +$LANG["phrase_clients_can_access_form"] = "Uporabniki ki lahko dostopajo do obrazca"; +$LANG["phrase_clients_can_access_view"] = "Uporabniki ki lahko dostopajo do pogleda"; +$LANG["phrase_clients_cannot_access_form"] = "Uporabniki ki ne morejo dostopati do obrazca"; +$LANG["phrase_clients_cannot_access_view"] = "Uporabniki ki ne morejo dostopati do pogleda"; +$LANG["phrase_clients_may_edit"] = "Uporabnik lahko ureja"; +$LANG["phrase_code_c"] = "Koda napake:"; +$LANG["phrase_code_markup_field"] = "Koda / Markup Field"; +$LANG["phrase_code_markup_type"] = "Koda / Markup Type"; +$LANG["phrase_codes_c"] = "Kode napak:"; +$LANG["phrase_column_width"] = "Širina stolpca"; +$LANG["phrase_company_name"] = "Ime podjetja"; +$LANG["phrase_configure_form_email_fields"] = "Configure Form Email Področja"; +$LANG["phrase_confirm_folder_url_match"] = "Potrdi Folder URL-Match"; +$LANG["phrase_connect_rows"] = "Povežite vrstic"; +$LANG["phrase_copy_email_settings_from"] = "Kopiraj nastavitve emaila iz ..."; +$LANG["phrase_copy_settings_from"] = "Kopiraj nastavitve iz ..."; +$LANG["phrase_core_fields"] = "Core Področja"; +$LANG["phrase_core_version"] = "Različica jedra"; +$LANG["phrase_create_account"] = "Ustvari račun"; +$LANG["phrase_create_admin_account"] = "Ustvari račun administratorja"; +$LANG["phrase_create_config_file"] = "Ustvari datoteko z nastavitvami"; +$LANG["phrase_create_database_tables"] = "Ustvari tabele podatkovne baze"; +$LANG["phrase_create_default_view"] = "Ustvari Privzeto View"; +$LANG["phrase_create_file"] = "Ustvari datoteko"; +$LANG["phrase_create_group"] = "Ustvarite skupino"; +$LANG["phrase_create_new_email"] = "Ustvari nov email"; +$LANG["phrase_create_new_menu"] = "Ustvari nov meni"; +$LANG["phrase_create_new_option_list"] = "Ustvari novo možnost List"; +$LANG["phrase_create_new_option_list_group"] = "Ustvari novo skupino možnost seznam"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Ustvari novo možnost List »"; +$LANG["phrase_create_new_view"] = "Ustvari nov pogled"; +$LANG["phrase_create_new_view_group"] = "Ustvari novo View Group"; +$LANG["phrase_custom_display_format"] = "Meri Display Format"; +$LANG["phrase_custom_recipient"] = "Custom Prejemnik"; +$LANG["phrase_custom_url"] = "Custom URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Podatkovni tip"; +$LANG["phrase_database_hostname"] = "Ime gostitelja podatkovne baze"; +$LANG["phrase_database_name"] = "Ime podatkovne baze"; +$LANG["phrase_database_password"] = "Geslo podatkovne baze"; +$LANG["phrase_database_settings"] = "Nastavitve podatkovne baze"; +$LANG["phrase_database_setup"] = "Nastavi podatkovno bazo"; +$LANG["phrase_database_table_prefix"] = "Predpona podatkovnih tabel"; +$LANG["phrase_database_username"] = "Uporabniško ime podatkovne baze"; +$LANG["phrase_date_format"] = "Format datuma"; +$LANG["phrase_db_column"] = "DB stolpec"; +$LANG["phrase_db_setup_page_4"] = "4. Nastavitve podatkovne baze"; +$LANG["phrase_default_client_account_theme"] = "Default Client Account Theme"; +$LANG["phrase_default_date_field_search_value"] = "Privzeti datum področju iskanja vrednost"; +$LANG["phrase_default_language"] = "Privzeti jezik"; +$LANG["phrase_default_menu"] = "Privzeti meni"; +$LANG["phrase_default_sessions_timeout"] = "Default Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Prednastavljena ureditev"; +$LANG["phrase_default_tab_label"] = "Podatki"; +$LANG["phrase_default_theme"] = "Default Theme"; +$LANG["phrase_default_value"] = "Privzeta vrednost"; +$LANG["phrase_default_values"] = "Privzete vrednosti"; +$LANG["phrase_default_values_new_submissions"] = "Privzete vrednosti za New Predložitve"; +$LANG["phrase_delete_field"] = "Brisanje Field"; +$LANG["phrase_delete_form"] = "Izbriši obrazec"; +$LANG["phrase_delete_row"] = "Delete Row"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Skupaj z izbrisom vnosa, izbriši še povezane datoteke."; +$LANG["phrase_delete_view"] = "Brisanje View"; +$LANG["phrase_disconnect_rows"] = "Odklopite vrstic"; +$LANG["phrase_display_email"] = "Prikaži email"; +$LANG["phrase_display_name"] = "Prikaži ime"; +$LANG["phrase_display_text"] = "Prikaži besedilo"; +$LANG["phrase_display_value"] = "Prikaži vrednost"; +$LANG["phrase_edit_admin_menu"] = "Uredi administratorjev meni"; +$LANG["phrase_edit_client"] = "Uredi uporabnika"; +$LANG["phrase_edit_client_menu"] = "Uredi uporabnikov meni"; +$LANG["phrase_edit_email_template"] = "Uredi email predlogo"; +$LANG["phrase_edit_field"] = "Uredi polje"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Uredi obrazec"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit tip obliki dostopa]"; +$LANG["phrase_edit_option_list"] = "Urejanje Možnost Seznam"; +$LANG["phrase_edit_submission"] = "Uredi vnos"; +$LANG["phrase_edit_submission_label"] = "Urejanje Predložitev Label"; +$LANG["phrase_edit_view"] = "Uredi pogled"; +$LANG["phrase_email_format"] = "Format emaila"; +$LANG["phrase_email_settings"] = "Nastavitve emaila"; +$LANG["phrase_email_template"] = "Predloga emaila"; +$LANG["phrase_email_template_name"] = "Ime predloge emaila"; +$LANG["phrase_error_learn_more"] = "Poišči več informacij o tej napaki."; +$LANG["phrase_error_text_intro"] = "Popravi naslednje napake in ponovno pošlji:"; +$LANG["phrase_errors_learn_more"] = "Za več informacij klikni na kodo napake."; +$LANG["phrase_event_trigger"] = "Sprožilec dogodkov"; +$LANG["phrase_external_form"] = "Zunanji obrazec"; +$LANG["phrase_external_form_info"] = "Zunanjo obliko Info"; +$LANG["phrase_external_your_own_form"] = "Zunanji (svoj obrazec)"; +$LANG["phrase_field_comments"] = "Field Komentarji"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Nastavitve polja"; +$LANG["phrase_field_size"] = "Velikost polja"; +$LANG["phrase_field_skipped"] = "Field preskočena"; +$LANG["phrase_field_specific_settings"] = "Field-Posebni Nastavitve"; +$LANG["phrase_field_type"] = "Field Type"; +$LANG["phrase_field_type_no_validation"] = "Ni pravila za preverjanje veljavnosti na voljo za ta tip polja."; +$LANG["phrase_field_types"] = "Field Types"; +$LANG["phrase_field_value"] = "Field Value"; +$LANG["phrase_field_values_to_display_values"] = "Field Values »Prikaži Vrednote"; +$LANG["phrase_final_touches_page_6"] = "6. Zaključevanje"; +$LANG["phrase_finalize_form"] = "Dokončno izoblikovati Form"; +$LANG["phrase_first_name"] = "Ime"; +$LANG["phrase_footer_text"] = "Footer Text"; +$LANG["phrase_for_any_form_submission"] = "Za vsako obliko oddajo"; +$LANG["phrase_for_view_submissions"] = "Samo za navedbe v Pogled:"; +$LANG["phrase_forgot_password"] = "Si pozabil geslo?"; +$LANG["phrase_form_already_selected"] = "Obrazec že izbran"; +$LANG["phrase_form_email_field_b_c"] = "Obrazec [email področju]:"; +$LANG["phrase_form_email_field_configuration"] = "Obrazec E-pošta Field Configuration"; +$LANG["phrase_form_email_fields"] = "Obrazec E-pošta Področja"; +$LANG["phrase_form_field"] = "Polje obrazca"; +$LANG["phrase_form_field_contents"] = "Obrazec Field Vsebina"; +$LANG["phrase_form_field_name"] = "Ime polja obrazca"; +$LANG["phrase_form_field_placeholders"] = "Obrazec polje ograde"; +$LANG["phrase_form_fields"] = "Polja obrazca"; +$LANG["phrase_form_info"] = "Informacije o obrazcu"; +$LANG["phrase_form_info_2"] = "2. Informacije o obrazcu"; +$LANG["phrase_form_list"] = "Obrazec List"; +$LANG["phrase_form_name"] = "Ime obrazca"; +$LANG["phrase_form_page"] = "Stran obrazca"; +$LANG["phrase_form_placeholders"] = "Obrazec ograd"; +$LANG["phrase_form_submission"] = "Vnos obrazca"; +$LANG["phrase_form_submissions"] = "Vnosi obrazca"; +$LANG["phrase_form_type"] = "Tip obrazca"; +$LANG["phrase_form_url"] = "URL obrazca"; +$LANG["phrase_form_urls"] = "Obrazec URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Obrazci dodeljena na kateri koli račun"; +$LANG["phrase_forms_page_default_message"] = "Obrazci stran privzeto sporočilo"; +$LANG["phrase_ft_installation"] = "Form Tools namestitvena skripta"; +$LANG["phrase_full_width"] = "Polna širina"; +$LANG["phrase_getting_started"] = "kako začeti"; +$LANG["phrase_global_placeholders"] = "Global ograd"; +$LANG["phrase_group_name"] = "Ime skupine"; +$LANG["phrase_group_options_q"] = "Skupina možnosti?"; +$LANG["phrase_group_rows"] = "Skupina vrstic"; +$LANG["phrase_have_fun"] = "Uživaj!"; +$LANG["phrase_highlight_colour"] = "Highlight Colour"; +$LANG["phrase_html_email"] = "HTML email"; +$LANG["phrase_html_template"] = "HTML predloga"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Uvoz Možnost List »"; +$LANG["phrase_input_length"] = "Vhodna dolžina"; +$LANG["phrase_installation_help"] = "Namestitev Pomoč"; +$LANG["phrase_internal_form"] = "Notranja obrazec"; +$LANG["phrase_ip_address"] = "IP naslov"; +$LANG["phrase_is_multi_page_form_q"] = "Ali je to na več straneh obliki?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response Ograde"; +$LANG["phrase_large_300px"] = "Large (300px)"; +$LANG["phrase_large_400px"] = "Large (400px)"; +$LANG["phrase_last_7_days"] = "Zadnjih 7 dni"; +$LANG["phrase_last_logged_in"] = "Nazadnje vpisan"; +$LANG["phrase_last_modified"] = "Nazadnje spremenjeno"; +$LANG["phrase_last_modified_date"] = "Datum zadnje spremembe"; +$LANG["phrase_last_name"] = "Priimek"; +$LANG["phrase_letters_only"] = "Pisma Samo"; +$LANG["phrase_light_brown"] = "Svetlo rjava"; +$LANG["phrase_limit_email_content"] = "Limit vsebine e-pošte na področja, na View"; +$LANG["phrase_loading_ellipsis"] = "Nalaganje ..."; +$LANG["phrase_log_in"] = "Vpiši se"; +$LANG["phrase_login_as_user"] = "Prijavite se kot tega uporabnika"; +$LANG["phrase_login_info"] = "Informacije o vpisu"; +$LANG["phrase_login_page"] = "Vpisna stran"; +$LANG["phrase_login_panel_c"] = "Prijava Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Prijava Uporabniško ime"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Glavne nastavitve"; +$LANG["phrase_manage_client"] = "Upravljanje uporabnika"; +$LANG["phrase_manage_client_omit_list"] = "Upravljanje Izpusti Client List"; +$LANG["phrase_max_file_size"] = "Največja velikost datoteke"; +$LANG["phrase_max_length"] = "Max dolžina"; +$LANG["phrase_max_length_words_chars"] = "- Največja dolžina (besed / znakov)"; +$LANG["phrase_may_add_submissions"] = "Lahko doda Predložitve"; +$LANG["phrase_may_copy_submissions"] = "Lahko kopirate prispevke"; +$LANG["phrase_may_delete_submissions"] = "Maj brisanje oddaj"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Meni Name"; +$LANG["phrase_menu_type"] = "Meni Type"; +$LANG["phrase_min_password_length"] = "Najmanjša dolžina gesla"; +$LANG["phrase_module_description"] = "Modul Opis"; +$LANG["phrase_module_info"] = "Modul Information"; +$LANG["phrase_module_nav"] = "Modul Nav"; +$LANG["phrase_month_to_date"] = "Mesec do danes"; +$LANG["phrase_multi_select"] = "Multi-izbrati"; +$LANG["phrase_multi_select_dropdown"] = "Multi-izberite spustni"; +$LANG["phrase_multiple_fields_found"] = "Multiple Področja Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Ime / Priimek"; +$LANG["phrase_new_blank_email"] = "Nov prazen Email"; +$LANG["phrase_new_blank_option_list"] = "New Blank Možnost Seznam"; +$LANG["phrase_new_blank_view"] = "New Blank View"; +$LANG["phrase_new_ft_installation"] = "New Form Tools Installation"; +$LANG["phrase_new_option_list"] = "New Možnost Seznam"; +$LANG["phrase_new_password"] = "Novo geslo"; +$LANG["phrase_new_password_reenter"] = "Novo geslo (ponovni vnos)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "New View - Vsa polja"; +$LANG["phrase_next_client"] = "Naslednja stranko »"; +$LANG["phrase_next_field"] = "naslednje polje »"; +$LANG["phrase_next_form"] = "Naslednja oblika »"; +$LANG["phrase_next_view"] = "Naslednja View »"; +$LANG["phrase_no_clients"] = "Ni uporabnikov"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Ni odmika"; +$LANG["phrase_no_option_lists_available"] = "Št možnosti seznami na voljo."; +$LANG["phrase_no_views"] = "No Views"; +$LANG["phrase_no_views_with_filters_p"] = "(No Views s filtri določeno)"; +$LANG["phrase_none_not_recommended"] = "None (ni priporočeno)"; +$LANG["phrase_not_assigned_to_option_list"] = "To polje ni dodeljena možnost List."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Ni enaka"; +$LANG["phrase_not_found"] = "Ni najdeno!"; +$LANG["phrase_not_like"] = "NOT Like"; +$LANG["phrase_not_visible_to_client"] = "(ni vidno uporabniku)"; +$LANG["phrase_num_clients_per_page"] = "Število uporabnikov na stran"; +$LANG["phrase_num_emails_per_page"] = "Število email-ov na stran"; +$LANG["phrase_num_fields"] = "Število polj"; +$LANG["phrase_num_forms_per_page"] = "Število obrazcev na stran"; +$LANG["phrase_num_menus_per_page"] = "Število menijev na stran"; +$LANG["phrase_num_modules_per_page"] = "Num Moduli Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Št možnost navaja na stran"; +$LANG["phrase_num_options"] = "Št Options"; +$LANG["phrase_num_rows"] = "Št Rows"; +$LANG["phrase_numbers_only"] = "Samo številke"; +$LANG["phrase_often_localhost"] = "(ponavadi \"localhost\")"; +$LANG["phrase_on_form_submission"] = "Na obrazec za oddajo"; +$LANG["phrase_one_char_number"] = "Vsaj en znak je številka (0-9)"; +$LANG["phrase_one_char_upper"] = "Vsaj ena črka je velike"; +$LANG["phrase_one_special_char"] = "Vsaj eden od {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(le določeni uporabniki lahko dostopajo)"; +$LANG["phrase_open_form_in_dialog"] = "Odprite obrazec, v pogovornem oknu"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Odprite obrazec v novem zavihku / oknu"; +$LANG["phrase_option_list"] = "Možnost Seznam"; +$LANG["phrase_option_list_name"] = "Možnost List Name"; +$LANG["phrase_option_list_or_contents"] = "Možnost List / Contents"; +$LANG["phrase_option_lists"] = "Možnost seznami"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Naslovi strani"; +$LANG["phrase_pass_on"] = "Podaj naprej"; +$LANG["phrase_password_min"] = "To mora biti vsaj {\$length} znakov."; +$LANG["phrase_password_one_number"] = "Vsebovati mora vsaj eno številko (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Vsebovati mora vsaj eno veliko črko."; +$LANG["phrase_password_requirements_c"] = "Geslo zahteve:"; +$LANG["phrase_password_reset"] = "Ponastavi geslo"; +$LANG["phrase_password_special_char"] = "Vsebovati mora vsaj ena od naslednjih znakov: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Dovoljenja / Druge nastavitve"; +$LANG["phrase_permitted_file_types"] = "Dovoljeni tipi datotek"; +$LANG["phrase_phone_number"] = "Telefonska številka"; +$LANG["phrase_phone_number_format"] = "Telefonska številka Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini največna dovoljena velikost datoteke:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP različica"; +$LANG["phrase_please_confirm"] = "Prosimo, potrdite"; +$LANG["phrase_please_enter_license_key"] = "Prosimo, vnesite licenčni ključ"; +$LANG["phrase_please_select"] = "Prosim izberi"; +$LANG["phrase_please_select_form"] = "Prosim izberi obrazec"; +$LANG["phrase_prev_client"] = "«Prejšnja stranke"; +$LANG["phrase_prev_form"] = "«Prejšnji obrazec"; +$LANG["phrase_prevent_password_reuse"] = "Prepreči ponovna uporaba # zadnje gesel"; +$LANG["phrase_previous_field"] = "« prejšnje polje"; +$LANG["phrase_previous_page"] = "Prejšnja stran"; +$LANG["phrase_previous_view"] = "«Prejšnja View"; +$LANG["phrase_program_name"] = "Ime programa"; +$LANG["phrase_public_form_omit_list"] = "Javna Form Izpusti List"; +$LANG["phrase_public_view_omit_list"] = "Javna View piši List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Tam je bil problem z naslednjo poizvedbo:"; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Random obrazec za oddajo"; +$LANG["phrase_re_enter_password"] = "Ponovni vnos gesla"; +$LANG["phrase_recipient_type"] = "Prejemnik tip"; +$LANG["phrase_redirect_url"] = "Preusmeritev URL"; +$LANG["phrase_refresh_list"] = "Osveži seznam"; +$LANG["phrase_refresh_module_list"] = "Osveži Modul List"; +$LANG["phrase_refresh_page"] = "Osveži stran"; +$LANG["phrase_refresh_theme_list"] = "Osveži Theme List"; +$LANG["phrase_register_new_email"] = "Register New Email"; +$LANG["phrase_remaining_characters"] = "Preostali znaki"; +$LANG["phrase_remaining_words"] = "Preostali besede"; +$LANG["phrase_remove_tabs"] = "Odstrani zavihke"; +$LANG["phrase_required_password_chars"] = "Zahtevani znake geslo"; +$LANG["phrase_resend_test_submission"] = "Resend Test Oddaja"; +$LANG["phrase_return_form_list"] = "Nazaj na seznam obrazcev"; +$LANG["phrase_row_selected"] = "{\$num_rows} izbrani vrsti"; +$LANG["phrase_rows_selected"] = "{\$num_rows} izbrane vrstice"; +$LANG["phrase_sample_data"] = "Vzorčni podatki"; +$LANG["phrase_save_changes"] = "Shrani spremembe"; +$LANG["phrase_search_keyword"] = "Išči po ključnih besedah"; +$LANG["phrase_security_settings"] = "Varnostne Nastavitve"; +$LANG["phrase_select_all"] = "Izberi vse"; +$LANG["phrase_select_all_X_results"] = "Izberi vse) {\$numresults} Results"; +$LANG["phrase_select_all_on_page"] = "Izberi vse na strani"; +$LANG["phrase_select_date"] = "Izberi datum"; +$LANG["phrase_select_field"] = "Select Field"; +$LANG["phrase_select_swatch"] = "Izberi swatch"; +$LANG["phrase_selected_clients"] = "Izbrani uporabniki"; +$LANG["phrase_selected_views"] = "Izbrani pogledi"; +$LANG["phrase_send_email"] = "Pošlji email"; +$LANG["phrase_send_test_email"] = "Pošlji testni email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Seje Timeout"; +$LANG["phrase_setting_value"] = "Nastavitev vrednosti"; +$LANG["phrase_setup_options"] = "Setup Options"; +$LANG["phrase_show_all"] = "Prikaži vse"; +$LANG["phrase_show_form"] = "Prikaži obrazec"; +$LANG["phrase_size_large"] = "Large (TEXT)"; +$LANG["phrase_size_medium"] = "Medium (<= 256 znakov)"; +$LANG["phrase_size_small"] = "Mala (<= 20 chars)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 znakov)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Preskoči polje"; +$LANG["phrase_skip_step"] = "Preskoči korak"; +$LANG["phrase_small_100px"] = "Small (100 pik)"; +$LANG["phrase_small_80px"] = "Small (80px)"; +$LANG["phrase_smart_fill"] = "Pametni vnos"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Izpolnite polja:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill User Documentation »"; +$LANG["phrase_sort_as"] = "Razvrsti Kot"; +$LANG["phrase_special_fields"] = "Special Področja"; +$LANG["phrase_standard_fields"] = "Standardna Fields"; +$LANG["phrase_standard_filters"] = "Standard Filtri »"; +$LANG["phrase_step_1"] = "Korak 1"; +$LANG["phrase_step_2"] = "Korak 2"; +$LANG["phrase_step_3"] = "Korak 3"; +$LANG["phrase_step_4"] = "Korak 4"; +$LANG["phrase_step_5"] = "Korak 5"; +$LANG["phrase_step_6"] = "Korak 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip oznake v obliki vlog"; +$LANG["phrase_subject_line"] = "Predmet Line"; +$LANG["phrase_submission_date"] = "Datum vnosa"; +$LANG["phrase_submission_id"] = "ID vnosa"; +$LANG["phrase_submission_made"] = "Vnos vstavljen: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Tip vnosa"; +$LANG["phrase_submissions_per_page"] = "Vnosov na stran"; +$LANG["phrase_system_check"] = "Sistemski pregled"; +$LANG["phrase_system_fields_no_validation"] = "Ne smete dodati, da sistem potrjevanja polj."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Oznaka zavihka"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Testiraj dovoljenja imenika"; +$LANG["phrase_test_submission"] = "Testiraj vnose"; +$LANG["phrase_test_submission_3"] = "3. Testiraj vnose"; +$LANG["phrase_test_submission_received"] = "Test Oddaja Prejeto"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "Besedilo, E-pošta"; +$LANG["phrase_text_template"] = "Besedilo Predloga"; +$LANG["phrase_the_previous_month"] = "Prejšnji mesec"; +$LANG["phrase_theme_description"] = "Tema Description"; +$LANG["phrase_theme_info"] = "Tema Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Tip napake:"; +$LANG["phrase_unselect_all"] = "Odizberi vse"; +$LANG["phrase_update_accounts"] = "Posodobi račune"; +$LANG["phrase_update_email_template"] = "Update Email Template"; +$LANG["phrase_update_field"] = "Posodobi polje"; +$LANG["phrase_update_order"] = "Posodobitev red"; +$LANG["phrase_update_view"] = "Posodobi pogled"; +$LANG["phrase_upload_file"] = "Naloži datoteko"; +$LANG["phrase_upload_files"] = "Naloži datoteke"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Upload mapo pot"; +$LANG["phrase_upload_folder_url"] = "Upload mapo URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Uporaba Privzeta vrednost?"; +$LANG["phrase_used_by_num_form_fields"] = "Used z # Form Področja"; +$LANG["phrase_uses_swatches"] = "Uporaba swatches"; +$LANG["phrase_valid_email"] = "Valid Email"; +$LANG["phrase_validation_error"] = "Validacija Napaka"; +$LANG["phrase_validation_rule"] = "Validacija pravilo"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Poglej Group"; +$LANG["phrase_view_id"] = "Poglej ID"; +$LANG["phrase_view_name"] = "Ime pogleda"; +$LANG["phrase_view_placeholders"] = "Poglej Ograde"; +$LANG["phrase_view_submissions"] = "Prikaži Submissions"; +$LANG["phrase_view_uploaded_files"] = "poglej naložene datoteke"; +$LANG["phrase_viewing_range"] = "[pregledovanje {\$startnum} k {\$endnum}]"; +$LANG["phrase_when_sent"] = "Ko je poslal"; +$LANG["phrase_when_submission_is_deleted"] = "Kadar je predložitev črta"; +$LANG["phrase_when_submission_is_edited"] = "Kadar je predložitev edited"; +$LANG["phrase_who_can_access"] = "Kdo lahko dostopa?"; +$LANG["phrase_word_limit_p"] = "Beseda omejitev."; +$LANG["phrase_year_to_date"] = "Leto do datuma"; +$LANG["phrase_yes_for_all_views"] = "Da, za vse poglede"; +$LANG["phrase_yes_for_specific_views"] = "Da, za določene poglede"; +$LANG["phrase_your_account"] = "Tvoj račun"; +$LANG["phrase_your_email"] = "Tvoj email"; +$LANG["phrase_your_email_address"] = "Tvoj email naslov"; +$LANG["processing_form_disabled"] = "Oprostite, ta obrazec je onemogočen."; +$LANG["processing_form_incomplete"] = "Oprostite, ta obrazec ne zdi, da je treba v celoti vzpostaviti od znotraj Form Tools. Najverjetnejši vzrok za ta problem je, da ste odstranili "form_tools_initialize_form" skrito polje obrazca, vendar ni popolno vse korake "Add Obrazec" proces.

    Prijavite se in pregleda obrazec konfiguracijo."; +$LANG["processing_init_complete"] = "Hvala! Vaš test oddajo ki je bila dana skozi uspešno. Vrnite se na ploščo Form Orodja upravo in kliknite "Osveži" gumb na dnu obrazca Dodaj 3. korak stran, da dokončate nastavitev obrazec."; +$LANG["processing_invalid_form_id"] = "Oprostite, to ne zdi, da je veljaven ID obliki."; +$LANG["processing_no_form_id"] = "process.php zahteva obrazec ID za predelavo. Poskrbite, da vaš obrazec vsebuje skrito polje z imenom "form_tools_form_id", ki je ob prehodu obliko ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Obrazec Tools ne more ugotoviti, kje se preusmeri, ko ne uspe vstopiti kapitan pravilno. Prosimo, ki potujejo v skrito polje z imenom, ki vsebujejo form_tools_form_url URL obrazca."; +$LANG["processing_no_post_vars"] = "process.php ne prejema nobenih podatkov. Opomba: ta scenarij ni mogoče naložiti neposredno v svojem brskalniku.
    Poskrbite, da vaš obrazec se pošilja preko POST."; +$LANG["processing_no_redirect_url"] = "Predložitev je predelano pravilno, vendar ga niso natančno navedli, preusmeritev URL za ta obrazec! Urejanje obliki v obrazcu Orodja vmesnik in dodate preusmeritve URL."; +$LANG["special_language"] = "Slovenian"; +$LANG["special_language_locale"] = "Slovenian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Vsi novi računov strank se bo pojavila z nastavitvami in dovoljenj, opredeljenih v nadaljevanju. Če želite preglasiti nastavitev za določeno stranko, uredite račun stranke, in obiščejo svoje jeziček Nastavitve."; +$LANG["text_add_form_choose_integration_method"] = "Izberite, kateri način želite uporabiti za vključitev obrazec z Obrazec Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Ta metoda uporablja obrazec Tools API , vključeni v glavni scenarij obrazec Tools. API ponuja številne koristne funkcije, da bi delo vključevanja obrazca z Obrazec Tools čim bolj preprost. Ni omejitev, kako se lahko vaš obrazec predložiti pri uporabi API. Lahko predloži vsebine naenkrat, ali stran za stranjo, ki jih lahko dodate lastne prilagojene strani strežnika potrditev, CAPTCHA slike, se lahko odločite, da predloži podatke sedaj, ampak le povedati, da se prikaže oddajo v obrazcu Tools UI kasneje (glej dokončno Predložitve oddelek v dokumentaciji pomoč API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Z namenom, da pošljete svojo obliko podatkov preko PHP, mora biti obrazec se nahaja na isti spletni strani kot je ta namestitev obrazec Tools. Drugič, za ne-tehnične in novice Tools Obrazec za uporabnike, lahko ta metoda je malo zastrašujoče na prvi. Ampak tam je veliko dokumentacije, ki vam pomaga ven, vključno z dveh preprostih vaj za integracijo vaše eno-in multi-strani obrazcev (ti so povezani z na kasnejši korak)."; +$LANG["text_add_form_direct_submission_benefits"] = "To je najenostavnejši način, da pošljete vaše obliki Form Tools. To ne zahteva nobene znanje PHP, in zahteva le zelo majhno spremembo obrazca. To je super za manjše obrazce, kamor želite predložiti podatke samo za zbirko podatkov preusmerite uporabnika na "zahvala" stran."; +$LANG["text_add_form_direct_submission_drawbacks"] = "To oddajo metoda je zelo preprost za uporabo, vendar ne zagotavlja veliko nadzora za bolj zapletene oblike. Multi-page obrazcev ali obrazce, ki zahtevajo strežnik validacije strani so bolj primerni za drugo metodo: predložitev prek obrazca Tools API."; +$LANG["text_add_form_field_types1"] = "Skoraj končano! Ta stran poskuša najti vse svoje polj obrazca in določi njihova vrste polj. Kliknite Smart Izpolnite gumb na desni, da bi začeli. Ti bodo lahko poteka le, ko bodo rešena vsa dejanja - vprašanja, ki potrebujejo vašo pozornost pojavljajo v "ukrepe, potrebne " stolpcu."; +$LANG["text_add_form_field_types2"] = "Če obrazec ni v HTML, kliknite na gumb Step Preskoči na nadaljevanje. To je lahko vse nastavljen kasneje."; +$LANG["text_add_form_field_types3"] = "To polnitve vsebino obrazca (s). Opomba: s tem razveljavite vse spremembe, ki ste jih naredili na tej strani."; +$LANG["text_add_form_field_types4"] = "V primeru, da naletite na težave, kliknite tukaj, da preskočite ta korak. Vsa nerešena polja so določene za uporabo privzete vrednosti. Lahko prilagodite teh področjih kasneje."; +$LANG["text_add_form_field_types_manual_upload"] = "Če ste bili mogli Smart Izpolnite vaša polja, boste morda želeli poskusiti alternativno rešitev: upload kopije obrazcev v spodnja polja."; +$LANG["text_add_form_field_types_manual_upload2"] = "Opomba: ne upload surovo PHP strani (ali drugi server-side koda) - samo upload HTML različice. Da bi dobili to, pogled in shranite stran od svojega spletnega brskalnika."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Bilo je več polj, ki jih ni bilo mogoče najti v obliki strani, ki jo določili. To je najbolj verjetno, ki jo povzroči eno od naslednjih:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Vnesli ste eno ali več v obliki URL vaše multi-strani nepravilno obliko."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Ena ali več strani obrazca so zaščitene z geslom, in scenarij ni mogel dostopati do strani."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Ste napačno vnesli URL obrazec."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Kliknite tukaj za vrnitev na stran obrazca Podatki, preverite nastavitve."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Boste spremenili svoj obrazec (s), potem ko preskusu oddajo"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Kliknite tukaj dati skozi en test oddajo."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Vaš obrazec je zaščitena z geslom in scenarij ni mogel dostopati do strani."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "V drugem zavihku / okna tega brskalnika, se prijavite v svoj obrazec in kliknite gumb Osveži stran spodaj, da poskusite znova našli polja."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Če nobeden od zgoraj navedenih delovnih rešitve, boste morda želeli poskusiti ročno nalaganje obrazce za obdelavo ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Bilo je več polj, ki jih ni bilo mogoče najti v obliki strani, ki ste ga navedli. To je verjetno predvsem zaradi ene od teh:"; +$LANG["text_add_form_help_link"] = "Če naletite na kakršne koli težave v teh korakih, poskusite bral dokumentacijo za uporabnike ."; +$LANG["text_add_form_step_1_text_1"] = "Naslednje strani vas bo vodil skozi korake za konfiguriranje Orodja Obrazec za shranjevanje obrazca vloge. Preden nadaljujete, preverite, da:"; +$LANG["text_add_form_step_1_text_2"] = "obrazec je že bil ustvarjen in je dostopen preko URL (localhost je v redu)"; +$LANG["text_add_form_step_1_text_3"] = "lahko za urejanje obrazca"; +$LANG["text_add_form_step_2_para_2"] = "Odprite obrazec v urejevalniku po vaši izbiri in spremenite svojo obliko oznako naslednje, vključno z dvema skritih poljih."; +$LANG["text_add_form_step_2_para_3"] = "Nato odprete obrazec v spletnem brskalniku. Fill na vseh področjih in ga predložiti. Po oddaji, boste videli obvestilo sporočila. Ko se to sporočilo prikaže, se vrnite na to stran in kliknite na spodnji gumb refresh. Ko je ta postopek končan, boste videli še spodnji gumb, ki vas na naslednji korak."; +$LANG["text_add_form_step_2_para_6"] = "V vašem obrazec za oddajo, vključujejo naslednje vrednosti. Ti se lahko določi neposredno ali prek PHP opravil skupaj z samem obrazcu. Spodaj so primeri za vsako. (\$ Varname) je haše (ali asociativna array) vseh podatkov obrazca - to je ponavadi (\$ postvar) ali (\$ sessionvar) spremenljive, vendar pa se lahko meri zgrajena."; +$LANG["text_add_form_step_2_text_2"] = "Vnesite URL vaše "Hvala " stran tukaj. To je, če želite, lahko dobile po tem, ko je bil predložen obrazec."; +$LANG["text_add_form_step_3_para_1"] = "Na tej strani so vsa polja v obrazec za oddajo. Prosimo, preuči vsako polje, in odstranite tiste, ki vam ga ni treba shraniti za vsako oddajo. Če izbrišete veljavno polja po naključju, ali želijo spremeniti podatke, ki jih hrani vaš obrazec, se vrnite na prejšnjo stran poslati novo oddajo test."; +$LANG["text_add_form_step_3_para_2"] = "Opomba: če ste pošiljanje prek več vrednosti polja ali več, izberite polje, poskrbite, da vaše ime polja konča s [] znakov (glej dokumentacijo za uporabnike za več informacij)."; +$LANG["text_add_form_step_3_text_1"] = "Tukaj je, kjer je zabava začne! Na tej točki, obrazec Tools čaka preizkus pred oddajo obrazca. To bo uporabil ta obrazec oddajo vedeti, katere informacije morajo biti shranjene v bazi podatkov."; +$LANG["text_add_form_step_3_text_2"] = ", ki ga vnesete v obrazec Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "z uporabo obrazca Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Za pomoč pri vključevanju vaš obrazec, vam predlagamo, da preberete enega od naslednjih Tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "Pojasnjujejo, kako vzpostaviti obrazca za pripravo na test oddajo, in tudi druge informacije, ki so lahko pomagali. Line of PHP boste potrebovali, je:"; +$LANG["text_add_form_step_3_text_6"] = "To zagotavlja podatke je dejansko poslala k obrazcu Tools. Ko ste dal skozi test oddaji, kliknite spodnji gumb."; +$LANG["text_add_form_step_3_text_7"] = "Na strani PREDHODNO na končno "hvala" stran, se prepričajte, da dodate naslednje parameter za \$ params spremenljivka:"; +$LANG["text_add_form_step_5_para_1"] = "Baze podatkov je bila ustanovljena, da za ta obrazec in obrazec je bil aktiviran za uporabo. Če ste jih naredili oddajo, ki jih vnesete v obrazec process.php, se vrni na obrazec in odstraniti skrite naslednje polje:"; +$LANG["text_add_form_step_5_para_2"] = "Potem pojdite na "hvala" stran, da prazna zasedanje. Ko je to storjeno, bodo vse nove oblike vloge obdelujejo in shranjujejo v obrazcu Tools. Poskusi, ki predloži ali dva, da se preveri vse informacije uploading pravilno."; +$LANG["text_add_form_step_5_para_3"] = "Če želite prilagoditi vaš obrazec za možnosti, kot so auto-emailing in dodal, extra polja obrazca polje, ali customizing vrste polje obrazca, lahko uredite svoje oblike na kateri koli točki."; +$LANG["text_add_form_step_5_para_4"] = "Ker je vaš obrazec vsebuje file upload polja, boste morali nastaviti za vsako polje določite mapo upload datoteke, kakšne so dovoljene in datoteke. To je mogoče najti na jeziček Zaslon za urejanje oblike strani."; +$LANG["text_add_form_step_5_para_5"] = "Če je bila poslana preko oddajo API, spremembe ft_api_init_form_page črto na prvi strani obrazca, da:"; +$LANG["text_add_submission_button"] = "Dodaj Oddaja gumb se prikaže le za poglede, ki so "Lahko dodate vlog " možnost nastavljena na "yes "."; +$LANG["text_admin_email_placeholder_info"] = "To je e-poštni naslov upravitelja Orodja obrazca, ki je opredeljen v nastavitve vašega računa. To samo real e-poštni naslov, tako da, če boste želeli uporabiti kot povezavo HTML, boste morali zaviti v <a> oznake, kot so:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Tudi strani za prijavo privzeto tema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Najprej izberite vrsto obrazca."; +$LANG["text_client_form_page"] = "Ta stran navaja vse oblike in Pogledi dodeljena tej stranki. Nasvet: da bi jim videti obrazcu vloge, morajo biti dodeljena vsaj en pogled."; +$LANG["text_client_map_filters_desc1"] = "Filtri Map Client vam omejitev vloge, ki se pojavljajo v tem Pogled po kartograf vrednosti v polja obrazca, da vrednosti v račun stranke."; +$LANG["text_client_no_forms"] = "Trenutno ni obrazcev za pregled."; +$LANG["text_client_welcome"] = "Dobrodošli! Ta program hrani vse informacije, ki jih vaše spletne strani obiskovalcev. Če si želite ogledati prijav za posebno obliko samo kliknite na povezavo »Poglej, ali glej skrajno levo menije za druge možnosti."; +$LANG["text_config_file_created"] = "Ustvarjena je bila tvoja config.php datoteka."; +$LANG["text_config_file_not_created"] = "Config.php datoteke ni bilo mogoče ustvariti. Ustvariti jo boš moral račno."; +$LANG["text_config_file_not_created_instructions"] = "Kopirajte in prilepite vsebino iz oddelka spodaj v datoteko z imenom config.php in jih naložite preko FTP na obrazcu Tools / svetovni mapo (mapo, ki vsebuje tudi nekaj drugih datotek in imenikov, eno datoteko z imenom library.php)."; +$LANG["text_confirm_delete_form"] = "Da, želim izbrisati ta obrazec"; +$LANG["text_create_admin_account"] = "Sedaj bomo ustvarili skrbniški račun. To se uporablja za upravljanje vseh vidikov Form orodja, kot je dodajanje oblik in ustvarjanje računa stranke."; +$LANG["text_create_new_client_account"] = "Za dodajanje uporabnika uporabi spodnji obrazec. Izpolniti je potrebno vsa polja."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "Poglej PHP {\$datefunctionlink} funkcijo za možnosti formatiranja"; +$LANG["text_default_file_settings_page"] = "Ta stran določa nastavitve naložite datoteko za svojo namestitev Form Tools. Ta pravila veljajo za vse datoteke, preko obrazca Tools, razen če ni izrecno nastavljivi za posamezno polje obrazca. Opomba: če spremenite upload mapo, potem ko so bile naložene datoteke, bodo samodejno premakne v novo mapo."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Preden nadaljujete, boste morali posodobiti / themes / default / cache mapo, da se omogoči polno brati in pisati dovoljenja. Ko je to storjeno, bo to sporočilo izginejo in lahko namestite skript."; +$LANG["text_default_values_in_view"] = "Ta oddelek je obvezen. Vse vloge, ustvarjene s tem View bo vseboval privzete vrednosti, določene tukaj."; +$LANG["text_delete_all_forms"] = "Izbrisati hočem vse datoteke, ki so bile naložene preko tega obrazca."; +$LANG["text_delete_form_warning"] = "Si prepričan, da želiš izbrisati ta obrazec? Podatki bodo izgubljeni!"; +$LANG["text_edit_admin_menu_page"] = "Lahko urejate menija spodaj. Da imate vedno dostop do vseh funkcij na voljo v okviru Form Orodja naslednjih straneh, so potrebni: Obrazci, odjemalci, Vaš osebni račun, moduli, Nastavitve in Logout."; +$LANG["text_edit_client_menu_page"] = "To poglavje vam omogoča, da prilagodite levi stolpec navigacija za vsakega uporabnika. Ustvarite lahko poljubno število strank meniji, kot želite, in dodeli katero koli račun enega od njiju. Privzeto obstajata dva menija: eden za vas, skrbnik, in eden za vse račune strank. Upravitelj računa se lahko spremenijo, vendar ne odstrani."; +$LANG["text_edit_tab_summary"] = "Če želite tej skupini Poglej na področjih v tabs, samo vpišite jeziček imena spodaj. Ko končate, izberite ustrezen zavihek za vsako polje skupino v zavihku Polja ."; +$LANG["text_edit_view_list_page"] = "Ta kartica kontrole, ki so prikazani kot polja stolpcev na strani Predložitev kotacijo, in nekaj dodatnih nastavitev za tista področja. Opomba: priporočamo, da dodate več kot 4 ali 5 najpomembnejših področij v View."; +$LANG["text_email_settings_intro"] = "Ta stran vam omogoča, da ugotovijo, kateri od vaših polja obrazca shranjevanje e-pošte in njihove ustrezne imena. Ko jih določite tukaj, jih lahko uporabite v vaš e-poštni predlogah kot prejemniki. Ta del je popolnoma neobvezen."; +$LANG["text_email_tab_summary"] = "To poglavje vam omogoča, da zgraditi neomejeno število e-poštnih sporočil, ki se pošljejo, kadar je predložen obrazec in drugih sprožilcev."; +$LANG["text_email_template_tab"] = "To poglavje vam omogoča, da določijo, katere vsebina je v e-pošti. Če želite poslati e-pošto kot samo besedilo ali elektronske pošte, le vnesite vrednost za to področje. Če vnesete vrednost za obe, se bo email poslal v obeh oblikah."; +$LANG["text_email_template_text_1"] = "Preko tvojega obrazca, {\$FORMNAME}, je bil zaznan nov vnos."; +$LANG["text_email_template_text_1_c"] = "Preko tvojega obrazca, {\$FORMNAME}, je bil zaznan nov vnos:"; +$LANG["text_email_template_thanks"] = "Hvala za vnos!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Sporočilo o napaki, da pokažejo, če polja ne validacije"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Zunanje oblike so oblike, ki že obstaja na vašo spletno stran, ali nekje na spletu. Izberite to možnost, če imate svojo obliko, ki jo želite povezati z obrazcem Tools."; +$LANG["text_fields_tab_summary"] = "Ta stran izpiše vse vaše polja obrazca. Za nadzor nad tem, kako se pojavljajo pri brskanju stališča, si oglejte Views kartico . Brisanje polja na tej strani bo izbrisati iz vseh stališč, zato vas prosimo, bodite previdni!"; +$LANG["text_file_extension_info"] = "Vpiši končnice datotek ločene z vejicami (npr. jpg,gif,png) ali pusti prazno (dovoljeni so vsi tipi datotek)."; +$LANG["text_file_field_placeholders_info"] = "File polja sta dva posebna ograde: FILEURL in FILENAME. FILEURL je celoten URL do datoteke, tako da se lahko povežete neposredno v svoje e-pošto, FILENAME je samo ime datoteke."; +$LANG["text_filters_page"] = "V tem pogledu bodo prikazani le vnosi, ki zadoščajo vsem postavljenim pravilom."; +$LANG["text_filters_tips"] = "Za nasvete o uporabi filtrov si oglej Uporabniško Dokumentacijo."; +$LANG["text_forgot_password"] = "Ni problema. Preprosto vpišite vaše uporabniško ime in pod svoje podatke za prijavo bo poslano na vaš e-poštni naslov na datoteki. Če ste pozabili svoje uporabniško ime, prosim email na skrbnika na {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Ta obrazec vsebuje eno ali več polj za nalaganje datotek:"; +$LANG["text_form_placeholder_info"] = "Naslednje ograde se lahko uporabljajo v kateri koli email predlogo in področju jezika ogrado, ne glede na karkoli View je email predlogo dodeljena. VPRAŠANJE Ograde so specifična oblika vprašanje, odgovor ograde so odgovori na vsako vprašanje."; +$LANG["text_form_submission_date_placeholder"] = "Datum, ko je bila narejena oddajo."; +$LANG["text_form_tools_form_url"] = "Celoten URL strani obrazca. To je samo vrednost za zunanje oblike."; +$LANG["text_form_tools_login_url"] = "Naslov vpisa v From Tools."; +$LANG["text_form_view_permission_info_admin"] = "Opomba: ta obrazec ima trenutno vrsto Administrator dostop, tako da nobena od strank računov bodo lahko videli to stališče."; +$LANG["text_form_view_permission_info_private"] = "Opomba: ta obrazec ima trenutno Private vrsto dostopa, da se bodo javne in zasebne možnosti tukaj omejena na to podmnožico strank."; +$LANG["text_ft_installed"] = "Čestitamo, aplikacija Form Tools je bila uspešno nameščena!"; +$LANG["text_global_placeholder_info"] = "Te Ograde lahko uporabijo v katerem koli predlogo in kakršni koli obliki."; +$LANG["text_group_name_explanation"] = "Za področjih se skozi Dodaj Form proces, ta vrednost je napolnjena do prikaza besedila, ne glede na področje uporabe vrednost. Morda boste želeli spremeniti, da bi bolje opredeljuje vsebino."; +$LANG["text_install_create_config_file"] = "Obrazec Orodja shrani vaše nastavitve strežnika in baze podatkov v datoteko z imenom config.php, ki se nahajajo v vašem / svetovni / mapo. Kliknite "Ustvari File" gumb, da samodejno ustvari datoteko na strežniku."; +$LANG["text_install_create_database_tables"] = "Sedaj bomo ustvarili obrazec baze Orodja tabele. Ta korak zahteva baze podatkov samo, da so že bile ustvarjene. Če niste prepričani, kako to storiti, se obrnite na ponudnika gostovanja."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" ponavadi pomeni, da hostname ki ste ga navedli, je napačna. Morda poskusite nastavitev, da je to "localhost" - to je skupna pot za sklicevanje na "lokalno" bazo podatkov na spletni strežnik."; +$LANG["text_install_db_tables_error_tip_2"] = ""Ne morem povezati na MySQL strežnik preko lokalne socket" pomeni zbirko podatkov hostname polja spet napačna."; +$LANG["text_install_db_tables_error_tip_3"] = ""Dostop zavrnjen za uporabnika:" pomeni, da obstaja problem s svojim uporabniškim imenom / geslom kombinacijo."; +$LANG["text_install_db_tables_error_tip_4"] = ""Dostop zavrnjen za uporabnika: ... do baze podatkov ..." pomeni, da čeprav je vaše uporabniško ime in geslo, ki ste, ki je pravilen, ni mogla povezati z bazo podatkov, da zlasti s tem računom. To lahko pomeni, da bodisi vaše ime podatkovne baze je nepravilna, ali da je to uporabniški račun, ni povezana s to bazo podatkov."; +$LANG["text_install_email_content_text"] = "Na naši spletni strani je na voljo veliko virov, ki vam pomagajo pri zagonu, vključno z našo spletno dokumentacijo (https://docs.formtools.org) in vadnicami (https://docs.formtools.org/tutorials). Če ugotovite, da ste zaljubljeni ali imate vprašanje, zastavite vprašanje o githubu (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Oprostite, obrazec Tools ne bo mogel teči na strežniku. Prosimo, kliknite tukaj za minimalne zahteve."; +$LANG["text_install_system_check"] = "Ta stran izvede nekaj testov na vašem sistemu, da preveri če se na njej Form Tools aplikacija lahko izvaja."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Notranja oblike obstajajo samo v obrazec Tools - ne drugje na vaši strani. Le Obrazec Tools uporabniški računi bodo imeli dostop do obrazca. Izberite to možnost, če nimate obstoječi obliki."; +$LANG["text_internal_form_intro"] = "Uporabite spodnji obrazec za ustvarjanje nove notranji obliki. Vse nastavitve, vključno s številom in vsebino obrazca polj je mogoče spremeniti in nastavljen kasneje."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Za obrazec za prijavo in uporabo orodja, morate imeti omogočen javascript v vašem brskalniku. Prosim, da to zdaj, in kliknite Osveži v svojem brskalniku."; +$LANG["text_last_modified_date_explanation_c"] = "V zadnjem času s to trditvijo je bil spremenjen. Za nove navedbe, to je isto kot:"; +$LANG["text_limit_email_content_desc"] = "Ta možnost deluje samo za HTML in besedilo vsebine, ki z Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(samo sezname Pogled z opredeljenimi eno ali več filtri)"; +$LANG["text_log_in_to_ft"] = "Vpiše se v Form Tools"; +$LANG["text_login"] = "Prosimo, prijavite se spodaj za dostop do (\$ ime_programa) Administration Panel. Če ste pozabili geslo, kliknite tukaj."; +$LANG["text_login_info"] = "Kakor je bilo zahtevano, tukaj je vaš podatke za prijavo."; +$LANG["text_name_of_form"] = "Ime obrazca."; +$LANG["text_no_clients"] = "Trenutno ni stranke v bazo podatkov. Če želite dodati nov račun stranke, kliknite Dodaj Client spodnji gumb."; +$LANG["text_no_clients_found"] = "No stranke so bile ugotovljene. Preizkusite razširitev vaše kriterije iskanja."; +$LANG["text_no_fields_in_view"] = "To stališče nima polj v njem. Kliknite na spodnjo povezavo."; +$LANG["text_no_forms"] = "Trenutno ni obrazce v zbirki podatkov. Če želite dodati nov obrazec, kliknite gumb Dodaj obrazca spodaj."; +$LANG["text_no_forms_found"] = "Ni bilo obrazce."; +$LANG["text_no_forms_found_search"] = "Ni bilo obrazce. Poskusite razširitev vaše kriterije iskanja."; +$LANG["text_no_modules_found"] = "Modulov nismo našli. Poskupi zmanjšati število iskalnih kriterijev."; +$LANG["text_no_recipients_added"] = "No prejemniki so bili dodani."; +$LANG["text_no_search_results"] = "Ni rezultatov s tem kriterije iskanja / View."; +$LANG["text_no_submissions_found"] = "Oprosti, vnosov nismo našli."; +$LANG["text_no_themes"] = "Nimate koli določene teme. Kliknite spodnji gumb, da osvežite seznam temo, preverite, ali uporabnik Obrazec Tools dokumentacijo za informacije o dodajanju teme."; +$LANG["text_non_deletable_fields"] = "To polje se uporablja Core scenarij in ga ni mogoče urejati ali izbrisati ne da bi povzročila neskladja. Če želite spremeniti tip polja, naredite kopijo in jo uredite kopijo."; +$LANG["text_option_list_group_explanation"] = "Če je izbrana ta, da omogoča, da skupina vaše možnosti. Kako so prikazane skupine je odvisna od tipa polja z uporabo te možnosti seznama."; +$LANG["text_option_list_page"] = "Radio gumbi, potrditvena polja, dropdowns in multi-izberite dropdown področja vse, da uporabniku omogočijo več možnosti, med katerimi lahko izberete enega ali več predmetov. V obrazec Tools, so ti znani kot možnost navaja. Na splošno so ti ustvari samodejno, ki jih Add zunanja oblika procesa, vendar jih lahko ročno dodate ali uredite vaš možnost navaja v nadaljevanju, če želite spremembe vsebine obrazec ali ste konstrukt polja, ki so namenjeni samo interni uporabi."; +$LANG["text_option_list_used_by_fields"] = "To možnost seznam uporablja več polj obrazca. Če posodobite informacije v nadaljevanju, se bo spremenilo za vsa polja (glej obrazec Polja jeziček videti seznam polj). Če želite posodobiti vrednosti za eno, ali podmnožica polj, ki so trenutno dodeljene, kliknite tukaj , da ustvarite nov seznam Option z istimi vrednostmi, kot je ta. Nato lahko določite polja obrazca, ki ga želite novo skupino."; +$LANG["text_public_form_omit_list_page"] = "Javna obrazcev vam korist dajanje v najem vseh računov strank dostop do njih, ne da bi ročno dodeliti vsaki stranki, do njih. Ta stran vam omogoča, da natančno določiti tiste stranke, ki ne more dostop do te oblike, čeprav je obrazec označene kot javne."; +$LANG["text_public_view_omit_list_page"] = "Javna Pogledi vam korist dajanje v najem vseh računov strank dostop do njih, ne da bi ročno dodeliti vsaki stranki, do njih. Ta stran vam omogoča, da natančno določiti tiste stranke, ki ne sme dostopa do tega posebnega View."; +$LANG["text_reference_tab_info"] = "Ta stran izpiše vse ograde na voljo za vaš obrazec. Ograde so nizi, ki se lahko uporabljajo v email predloge, in polja označena s posebno ikono ogrado . Če so vpisani v polje, se dinamično pretvori v ustrezno vrednost, ko je polje odpreti ali email je poslana."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Preglejte dokumentacijo za uporabnike"; +$LANG["text_send_email_from_edit_submission_page"] = "Vključi možnost za pošiljanje tega e Uredi stran Predložitev"; +$LANG["text_smart_fill_option_list_problem"] = "Nismo mogli Smart Napolnite vaš polje možnosti. Vendar pa, kot alternativo, lahko poskusite uploading kopijo obrazca strani v spodnje polje. Opomba: ne upload surovo PHP strani (ali drugi server-side koda) - samo upload HTML različica. Da bi dobili to, pogled in shranite stran od svojega spletnega brskalnika."; +$LANG["text_submission_ip_address"] = "IP naslov uporabnika ki je dodal vnos."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Uporabite spodnji obrazec, da bodisi zaradi sebe ali pošljite e-pošto ustvarjene iz te predloge e-pošto. Email je samo pošlje email določeno spodaj, glavni, cc in Skp e-poštni naslov prejemnikov se ne upošteva, medtem ko testiranja."; +$LANG["text_test_email_templates_no_submissions"] = "Da bi test vaš e-poštni predloge, morate najprej dal skozi vsaj eno obliko predložitve."; +$LANG["text_theme_page_intro"] = "Ta stran navaja vse vaše teme. Kliknite na sličico za prikaz večje primer tematske sloge. "Nastavljeni" polje določa, ali se lahko ta tema izberejo stranke. Če želite brskati vse teme so na voljo, obiščite spletno stran Form Tools."; +$LANG["text_tutorial_adding_first_form"] = "Vodič: Dodaj svoj prvi obrazec!"; +$LANG["text_unique_submission_id"] = "Unikaten ID vnosa."; +$LANG["text_unused_option_list"] = "Ta možnost seznamu ni v uporabi, ki jih kakršno koli obliko polja."; +$LANG["text_upgraded"] = "Namestitev je bila nadgrajena v različico {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "To možnost Seznam se uporablja na naslednjih področjih."; +$LANG["text_view_fields_info"] = "Ta kartica kontrole, ki pokažejo področja, pri urejanju vlogo na tem View, njihov vrstni red in ali so mogoče urejati ali ne."; +$LANG["text_view_tab_summary"] = "Ta kartica vam omogoča, da ustvarite različne načine za skupino in urediti vaših podatkov. Ogledov omogočajo ustvarjanje po meri dele vaše podatke obrazca je razdeljen na obvladljive kose, in za omejitev, kaj lahko stranke videti ali urejati."; +$LANG["validation_account_disabled"] = "Oprosti, tvoj račun je onemogočen."; +$LANG["validation_account_not_recognized"] = "Oprosti, uporabniškega imena nismo prepoznali."; +$LANG["validation_account_not_recognized_info"] = "Žal mi je, da uporabniško ime ni bilo mogoče najti. Prosimo, poskusite znova, ali pa se obrnite na skrbnika na spodnji naslov."; +$LANG["validation_account_pending"] = "Tvoj uporabniški račun čaka na potrditev administratorja."; +$LANG["validation_check_delete_client"] = "Si prepričan, da želiš izbrisati ta račun?"; +$LANG["validation_client_password_missing_number"] = "Odjemalec Geslo mora vsebovati vsaj eno številko (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Varovanec parola mora vsebovati vsaj enega od naslednjih znakov: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Odjemalec Geslo mora vsebovati vsaj eno veliko črko."; +$LANG["validation_client_password_too_short"] = "Varovanec parola mora biti najmanj {\$number} znakov."; +$LANG["validation_col_name_is_reserved_word"] = "Žal, to ime stolpec baze podatkov je rezervirano delo v MySQL. Please rename it!"; +$LANG["validation_db_name"] = "Imena baze podatkov ne smejo vsebovati obdobij ali poševnic."; +$LANG["validation_db_not_updated_invalid_input"] = "Baze podatkov ni bilo mogoče posodobiti. Prosimo, preverite, vrednosti, ki ste jih vnesli, so veljavne."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Oprostite, mora privzeti upravitelj in teme stranko vedno omogočen."; +$LANG["validation_default_phone_num_required"] = "Prosimo, da izpolnite celotno telefonsko številko za <b> { \$ polje} </ b> - samo številke."; +$LANG["validation_default_rule_alpha"] = "Prosimo, samo vpišite črke in številke za <b> { \$ polje} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Prosimo, vnesite samo črke za <b> { \$ polje} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Prosimo, samo vnesti številke za <b> { \$ polje} </ b>."; +$LANG["validation_default_rule_required"] = "Prosimo, vnesite vrednost za <b> { \$ polje} </ b>."; +$LANG["validation_default_rule_valid_email"] = "Prosimo, vnesite veljaven e-poštni naslov za <b> { \$ polje} </ b>."; +$LANG["validation_delete_form_confirm"] = "Prosimo, preverite polje za potrditev, da želite izbrisati ta obrazec."; +$LANG["validation_delete_non_empty_option_list"] = "Opozorilo! To možnost seznama, uporablja za eno ali več polj obrazca. Brisanje da bo teh področjih preneha pravilno delovati."; +$LANG["validation_display_names_incomplete"] = "Prosimo, vnesite vrednost za vse Prikaži Imena, ali kliknite možnost Smart Fill vstopiti jim dinamično."; +$LANG["validation_duplicate_form_field_name"] = "Ne morete imeti več polj z istim imenom polja."; +$LANG["validation_email_not_found_or_invalid"] = "Oprostite, e-pošte, povezane z vašim računom ali ne obstaja ali pa je neveljaven."; +$LANG["validation_folder_invalid_permissions"] = "Za zagon tega preskusa dovoljenj je treba določiti na upload mapo, ki omogoča branje in pisanje datotek (777 na Unix)."; +$LANG["validation_folder_not_writable"] = "V ta imenik ne morete pisati."; +$LANG["validation_internal_form_too_many_fields"] = "Žal mi je, lahko samo ustvarili oblik s 1000 polji ali manj."; +$LANG["validation_invalid_admin_email"] = "Prosim vnesi veljavni email administratorja."; +$LANG["validation_invalid_admin_username"] = "Uporabniško ime lahko sestavljajo le alfanumerične znake (az in 0-9)."; +$LANG["validation_invalid_client_username"] = "Stranke uporabniško ime lahko sestavljajo le alfanumerične znake (AZ in 0-9)."; +$LANG["validation_invalid_client_username2"] = "Oprostite, uporabniško ime je lahko vsebuje samo črke, številke in podčrtaj značaj. Vnesite novo ime."; +$LANG["validation_invalid_column_name"] = "Imena stolpcev so lahko le alfanumerične (AZ, 0-9). Preverite imena stolpcev."; +$LANG["validation_invalid_custom_from_email"] = "Prosimo, vnesite veljaven po meri, 'Od' e-poštni naslov."; +$LANG["validation_invalid_custom_reply_to_email"] = "Prosimo, vnesite veljaven po meri "odgovor" e-poštni naslov."; +$LANG["validation_invalid_default_sessions_timeout"] = "Prosimo, vnesite veljavno vrednost (število) za časovno omejitev privzeto zasedanje."; +$LANG["validation_invalid_email"] = "Prosim vnesi veljani email naslov."; +$LANG["validation_invalid_email_id"] = "Žal mi je, da je neveljaven e-ID."; +$LANG["validation_invalid_folder"] = "Žal, to ne zdi, da je veljavna mapa."; +$LANG["validation_invalid_form_field_names"] = "Obrazec polja lahko le alfanumerične in poudarja (AZ, 0-9, _), brez presledkov."; +$LANG["validation_invalid_num_clients_per_page"] = "Prosimo, vpišite samo številke v Clients številka Per Page področju."; +$LANG["validation_invalid_num_emails_per_page"] = "Prosimo, vpišite samo številke za e-poštnih sporočil na stran."; +$LANG["validation_invalid_num_form_fields"] = "Prosimo, samo vnesite številke v polje Število polj."; +$LANG["validation_invalid_num_forms_per_page"] = "Prosimo, vpišite samo številke v Num Obrazci Per Page področju."; +$LANG["validation_invalid_num_menus_per_page"] = "Prosimo, vpišite samo številke za menije na stran."; +$LANG["validation_invalid_num_modules_per_page"] = "Prosimo, vpišite samo številke v polje številka Modules Per Page."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Prosimo, samo vnesti številke v seznamih Option Št Per polje stran."; +$LANG["validation_invalid_num_submissions_per_page"] = "Vnesite veljavno število vlog na stran."; +$LANG["validation_invalid_sessions_timeout"] = "Prosimo, vnesite veljaven session timeout (samo cela števila!)."; +$LANG["validation_invalid_tab_assign_values"] = "V polja 'od' in 'do' vnesi le številke."; +$LANG["validation_invalid_table_prefix"] = "Vnesite predpono baze sestavljen iz pisma in podčrtaj samo."; +$LANG["validation_invalid_upload_folder"] = "Vaš strežnika namestitev PHP je invalid nastavitev za upload_tmp_dir vrednost. "{\$upload_folder}" ni veljavna mapa."; +$LANG["validation_invalid_url"] = "Prosim vnesi veljaven URL."; +$LANG["validation_invalid_username"] = "Tvoje uporabniško ime je lahko sestavljeno le iz števk in znakov (a-Z in 0-9)."; +$LANG["validation_is_form_active"] = "Prosim označi ali je obrazec aktiven ali ne."; +$LANG["validation_menu_name_taken"] = "To ime menija je že zasedeno. Prosim izberi novo ime."; +$LANG["validation_modules_search_no_status"] = "Prosimo, izberite Enabled ali Disabled polj."; +$LANG["validation_no_access_type"] = "Prosim vnesi tip dostopa."; +$LANG["validation_no_account_logout_url"] = "Prosim vnesi URL izpisa iz strani."; +$LANG["validation_no_account_password_confirmed"] = "Prosim ponovno vnesi geslo."; +$LANG["validation_no_account_password_confirmed2"] = "Prosimo, ponovno vnesite novo geslo."; +$LANG["validation_no_admin_email"] = "Prosim vnesi administratorjev email naslov."; +$LANG["validation_no_admin_theme"] = "Izberite temo za skrbniški račun."; +$LANG["validation_no_admin_theme_swatch"] = "Izberite Swatch za administrator temo."; +$LANG["validation_no_client_email"] = "Prosim vnesi email naslov klienta."; +$LANG["validation_no_client_first_name"] = "Prosim vnesi ime klienta."; +$LANG["validation_no_client_last_name"] = "Prosim vnesi priimek klienta."; +$LANG["validation_no_client_login_page"] = "Prosimo, navedite, katere strani stranke, je treba preusmeriti na to, kdaj se prijavite"; +$LANG["validation_no_client_password"] = "Prosim vnesi geslo klienta."; +$LANG["validation_no_client_theme_swatch"] = "Izberite privzeto Swatch za račune strank."; +$LANG["validation_no_client_username"] = "Prosim vnesi uporabniško ime klienta."; +$LANG["validation_no_column_name"] = "Prosimo, vnesite vse imena stolpcev, ali pa kliknite Smart Izpolnite gumb za samodejno zapolnitev."; +$LANG["validation_no_column_selected"] = "Prosimo, izberite vsaj eno polje, da se pojavijo kot stolpec na stran, ki navaja oddajo."; +$LANG["validation_no_custom_from_email"] = "Vnesite po meri, 'Od' e-poštni naslov."; +$LANG["validation_no_custom_recipient_email"] = "Prosimo, vnesite e-poštni naslov prejemnika meri."; +$LANG["validation_no_custom_reply_to_email"] = "Vnesite meri "odgovor" e-poštni naslov."; +$LANG["validation_no_date_format"] = "Prosim vnesi format datuma."; +$LANG["validation_no_db_column_single"] = "Prosimo, vnesite ime Database stolpec."; +$LANG["validation_no_db_hostname"] = "Prosimo, vnesite baze podatkov gostitelja."; +$LANG["validation_no_db_name"] = "Prosimo, vnesite ime podatkovne zbirke."; +$LANG["validation_no_db_username"] = "Prosimo, vnesite uporabniško ime podatkovne zbirke račun."; +$LANG["validation_no_default_client_theme"] = "Izberite temo privzeto za vse nove račune strank."; +$LANG["validation_no_default_language"] = "Izberi jezik za namestitev aplikacije Form Tools"; +$LANG["validation_no_default_sessions_timeout"] = "Vnesite session timeout za privzeto uporabniških računov."; +$LANG["validation_no_display_text"] = "Vnesite Display Text za vsako polje."; +$LANG["validation_no_display_text_single"] = "Vnesite vrednost Display Text."; +$LANG["validation_no_edit_submission_page_label"] = "Vnesite strani Urejanje Predložitev etiketo."; +$LANG["validation_no_email"] = "Prosim vnesi svoj email naslov."; +$LANG["validation_no_email_config_field"] = "Navedite, ki tvorijo področju e-poštni polje."; +$LANG["validation_no_email_content"] = "Vpišite e-vsebin za vsaj eno od oblik (HTML ali besedilo)."; +$LANG["validation_no_email_from_field"] = "Prosimo, email "od" polja."; +$LANG["validation_no_email_template_name"] = "Vnesite email imenom predloge."; +$LANG["validation_no_email_template_view_id"] = "Izberite Pogled na katero se ta email predloge bi bilo treba natančno določiti."; +$LANG["validation_no_email_template_view_mapping_value"] = "Prosimo, navedite, kdaj je treba poslati e-pošto."; +$LANG["validation_no_enabled_themes"] = "Prepričajte se, da je omogočen vsaj eno temo."; +$LANG["validation_no_first_name"] = "Prosim vnesi svoje ime."; +$LANG["validation_no_form_field_name"] = "Prosim vnesi vsa imena polj."; +$LANG["validation_no_form_field_single"] = "Vnesite vrednosti polj obrazca."; +$LANG["validation_no_form_id"] = "Obrazec ID ni bila določena. Prosim, odjavite in poskusite znova."; +$LANG["validation_no_form_name"] = "Prosim vnesi ime obrazca."; +$LANG["validation_no_form_url"] = "Prosim vnesi URL obrazca."; +$LANG["validation_no_last_name"] = "Prosim vnesi svoj priimek."; +$LANG["validation_no_login_page"] = "Navedite, katere strani bi radi, da se pošlje vsakič, ko se prijavite palca"; +$LANG["validation_no_logout_url"] = "Prosim vnesi URL izpisa iz strani."; +$LANG["validation_no_main_email_recipient"] = "Prosimo, vnesite vsaj eno glavnih email prejemnika (tj. ne cc ali bcc)."; +$LANG["validation_no_menu"] = "Prosim izberi meni za ta uporabniški račun."; +$LANG["validation_no_menu_id"] = "Prosim izberi meni."; +$LANG["validation_no_num_clients_per_page"] = "Prosim vnesi število uporabniških računov na stran."; +$LANG["validation_no_num_emails_per_page"] = "Prosim vnesi število email-ov na stran."; +$LANG["validation_no_num_form_fields"] = "Prosimo, vnesite število polj za vaš obrazec."; +$LANG["validation_no_num_forms_per_page"] = "Prosim vnesi število obrazcev na stran."; +$LANG["validation_no_num_menus_per_page"] = "Prosim vnesi število menijev na stran."; +$LANG["validation_no_num_modules_per_page"] = "Prosim vnesi število modulov na stran."; +$LANG["validation_no_num_option_lists_per_page"] = "Vnesite število možnost navaja na stran."; +$LANG["validation_no_num_submissions_per_page"] = "Prosim vnesi število vnosov na stran."; +$LANG["validation_no_option_list_name"] = "Prosimo, vnesite ime seznama možnosti."; +$LANG["validation_no_page_titles"] = "Prosim vnesi prednastavljene naslove strani uporabniških računov."; +$LANG["validation_no_password"] = "Prosim vnesi svoje geslo."; +$LANG["validation_no_program_name"] = "Prosim vnesi ime programa."; +$LANG["validation_no_second_password"] = "Prosimo, ponovno vpišite geslo."; +$LANG["validation_no_sessions_timeout"] = "Vnesite session timeout."; +$LANG["validation_no_smart_fill_values"] = "Prosimo, vnesite ime polja obrazca in URL obrazec."; +$LANG["validation_no_table_prefix"] = "Vnesite predpono baze."; +$LANG["validation_no_tabs_defined"] = "Ni definiranih zavihkov."; +$LANG["validation_no_test_email_recipient"] = "Prosim vnesi email naslov od koder se bo poslal testni email."; +$LANG["validation_no_test_email_submission_id"] = "Prosim vnesi ID vnosa."; +$LANG["validation_no_theme"] = "Prosimo, izberite temo."; +$LANG["validation_no_theme_swatch"] = "Izberite Swatch za izbrano temo."; +$LANG["validation_no_timezone_offset"] = "Prosim vnesi odmik časovnega pasu."; +$LANG["validation_no_titles"] = "Prosim vnesi naslove strani."; +$LANG["validation_no_two_column_names"] = "Žal, ne morete vstopiti v istem stolpcu baze ime dvakrat."; +$LANG["validation_no_ui_language"] = "Prosim izberi jezik vmesnika."; +$LANG["validation_no_url"] = "Prosim vnesi URL."; +$LANG["validation_no_username"] = "Prosim vnesi svoje uporabniško ime."; +$LANG["validation_no_username_or_js"] = "Vnesti moraš uporabniško ime. V brskalniku aktiviraj javascript."; +$LANG["validation_no_view_fields"] = "Vaš Prikaži ne vsebuje vseh področjih! Morate dodeliti vsaj eno polje za da mora biti nekaj pokazati v vaš pogled."; +$LANG["validation_no_view_fields_selected"] = "Izberite enega ali več področij dodati View."; +$LANG["validation_no_view_name"] = "Prosim vnesi ime svojega pogleda."; +$LANG["validation_num_rows_to_add"] = "Prosim vnesi število vrstic, ki naj se dodajo."; +$LANG["validation_option_list_name_taken"] = "Oprostite, je ta možnost seznam imenom že sprejeti. Prosimo, izberite novo ime."; +$LANG["validation_password_in_password_history"] = "Za varnost, ne morete vnesti isto geslo kot katera koli od zadnjega {\$history_size} gesla. Prosimo, vnesite drugačno geslo."; +$LANG["validation_passwords_different"] = "Prosim poskrbi, da bosta gesli enaki."; +$LANG["validation_please_enter_search_date_range"] = "Prosimo, izberite časovno obdobje iskanja."; +$LANG["validation_please_enter_search_keyword"] = "Prosim vnesi iskano geslo."; +$LANG["validation_select_field_type"] = "Prosim izberi vrsto polja."; +$LANG["validation_select_submissions_to_copy"] = "Izberite tiste predloge, ki jih želite kopirati."; +$LANG["validation_select_submissions_to_delete"] = "Prosimo, izberite tiste vloge, ki jo želite izbrisati."; +$LANG["validation_smart_fill_cannot_fill"] = "Žal nismo mogli izpolniti to polje."; +$LANG["validation_smart_fill_invalid_field_type"] = "Nismo mogli najti polje, vendar ni dropdown, polje ali skupino radio."; +$LANG["validation_smart_fill_no_field_found"] = "Oprostite, nismo našli polja obrazca s tem imenom na določenih strani."; +$LANG["validation_smart_fill_no_page"] = "Prosimo, poiščite stran, ki vsebuje polja, ki jih želite Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Prosimo, naložite vse strani v obliki."; +$LANG["validation_upload_folder_not_writable"] = "To začasno mapo upload, ki ga boste namestili PHP ni mogoče pisati. Dokler se to ne določi, datotek ni mogoče naložiti preko obrazca Tools (ali kakšen drug program PHP). Obrnite se na ponudnika gostovanja."; +$LANG["validation_upload_html_files_only"] = "Prosimo, samo upload HTML files."; +$LANG["validation_username_taken"] = "Žal mi je, da je uporabniško ime je že zaseden. Prosimo, vnesite drugo ime."; +$LANG["validation_wrong_password"] = "Žal mi je, da se geslo ne ujema."; +$LANG["word_about"] = "O"; +$LANG["word_access"] = "Dostop"; +$LANG["word_account"] = "Račun"; +$LANG["word_account_sp"] = "Račun(i)"; +$LANG["word_accounts"] = "Računi"; +$LANG["word_action"] = "Akcija"; +$LANG["word_active"] = "Aktivno"; +$LANG["word_add"] = "Dodaj"; +$LANG["word_add_rightarrow"] = "Add »"; +$LANG["word_add_uc_rightarrow"] = "DODAJ »"; +$LANG["word_administration"] = "Administracija"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Po"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Avtor"; +$LANG["word_author_c"] = "Avtor:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« nazaj"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Pred"; +$LANG["word_benefits"] = "Prednosti"; +$LANG["word_blue"] = "Blue"; +$LANG["word_cancel"] = "Prekliči"; +$LANG["word_cc_c"] = "Kp:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Čekovna knjižica"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Uporanik"; +$LANG["word_client_c"] = "Uporabnik:"; +$LANG["word_clients"] = "Uporabniki"; +$LANG["word_close"] = "Zapri"; +$LANG["word_code"] = "Koda"; +$LANG["word_column"] = "Stolpec"; +$LANG["word_columns"] = "Stolpci"; +$LANG["word_columns_sp"] = "Column (s)"; +$LANG["word_complete"] = "Dokončaj"; +$LANG["word_configuration"] = "Nastavitve"; +$LANG["word_content"] = "Vsebina"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Naprej »"; +$LANG["word_copy"] = "Kopirati"; +$LANG["word_custom"] = "Navada"; +$LANG["word_data"] = "Podatki"; +$LANG["word_date"] = "Datum"; +$LANG["word_debugging_c"] = "Razhroščevanje:"; +$LANG["word_delete"] = "Izbriši"; +$LANG["word_desc"] = "Padajoče"; +$LANG["word_direct"] = "Direktno"; +$LANG["word_disabled"] = "Onemogočeno"; +$LANG["word_documentation"] = "Dokumentacija"; +$LANG["word_done"] = "Končano"; +$LANG["word_drawbacks"] = "Slabosti"; +$LANG["word_dropdown"] = "Padajoče"; +$LANG["word_edit"] = "Uredi"; +$LANG["word_editable"] = "Urejanje možno"; +$LANG["word_email"] = "E-pošta"; +$LANG["word_email_c"] = "E-pošta:"; +$LANG["word_emails"] = "E-pošta"; +$LANG["word_enabled"] = "Omogočeno"; +$LANG["word_equals"] = "Je enako"; +$LANG["word_error"] = "Napaka"; +$LANG["word_error_c"] = "Napaka:"; +$LANG["word_examples_c"] = "Primeri:"; +$LANG["word_external"] = "Zunanje"; +$LANG["word_fail"] = "Spodletelo"; +$LANG["word_field"] = "Polje"; +$LANG["word_field_sp"] = "Polje/ja"; +$LANG["word_fields"] = "Polja"; +$LANG["word_fields_sp"] = "Field (s)"; +$LANG["word_file"] = "Datoteka"; +$LANG["word_file_b_uc"] = "[DATOTEKA]"; +$LANG["word_files"] = "Datoteke"; +$LANG["word_filters"] = "Filtri"; +$LANG["word_filters_sp"] = "Filter (s)"; +$LANG["word_for"] = "med"; +$LANG["word_form"] = "Obrazec"; +$LANG["word_form_c"] = "Obrazec:"; +$LANG["word_formatting"] = "Oblikovanje"; +$LANG["word_forms"] = "Obrazci"; +$LANG["word_found"] = "Najdeno"; +$LANG["word_from"] = "Od"; +$LANG["word_from_c"] = "Od:"; +$LANG["word_general"] = "Splošno"; +$LANG["word_green"] = "Green"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Višina"; +$LANG["word_help"] = "Pomoč"; +$LANG["word_hidden"] = "Skritih"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Vodoraven"; +$LANG["word_hour"] = "Ura"; +$LANG["word_hours"] = "Ure"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Slika"; +$LANG["word_incomplete"] = "Nepopolno"; +$LANG["word_install"] = "Namesti"; +$LANG["word_installation"] = "Namestitev"; +$LANG["word_internal"] = "Notranja"; +$LANG["word_language"] = "Jezik"; +$LANG["word_large"] = "Large"; +$LANG["word_like"] = "Kot"; +$LANG["word_login"] = "Prijava"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Odjava"; +$LANG["word_main"] = "Glavni"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Meni"; +$LANG["word_menus"] = "Meniji"; +$LANG["word_minutes"] = "minute"; +$LANG["word_misc"] = "Razno"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Moduli"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Ime"; +$LANG["word_name_c"] = "Ime:"; +$LANG["word_never"] = "Nikoli"; +$LANG["word_next_rightarrow"] = "naprej »"; +$LANG["word_next_step_rightarrow"] = "NASLEDNJI KORAK »"; +$LANG["word_no"] = "Ne"; +$LANG["word_none"] = "Nič"; +$LANG["word_notes"] = "Zapiski"; +$LANG["word_notification"] = "Obvestilo"; +$LANG["word_number"] = "Število"; +$LANG["word_off"] = "Izključeno"; +$LANG["word_offline"] = "Brez povezave"; +$LANG["word_okay"] = "Ok"; +$LANG["word_on"] = "Vključeno"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operater"; +$LANG["word_options"] = "Možnost"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Ureditev"; +$LANG["word_other"] = "Drugo"; +$LANG["word_other_c"] = "Drugo:"; +$LANG["word_page"] = "Stran"; +$LANG["word_page_c"] = "Stran:"; +$LANG["word_pass"] = "Podaj"; +$LANG["word_password"] = "Geslo"; +$LANG["word_password_c"] = "Geslo:"; +$LANG["word_pending"] = "Čekajoče"; +$LANG["word_permissions"] = "Dovoljenja:"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« prejšnji"; +$LANG["word_private"] = "Zasebno"; +$LANG["word_public"] = "Javno"; +$LANG["word_purple"] = "Purple"; +$LANG["word_recipient"] = "Prejemnik"; +$LANG["word_recipient_sp"] = "Prejemnik(i)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Odstrani"; +$LANG["word_remove_uc_leftarrow"] = "« ODSTRANI"; +$LANG["word_reply_to"] = "Odgovori"; +$LANG["word_reply_to_c"] = "Odgovori:"; +$LANG["word_required"] = "Zahtevani"; +$LANG["word_reset"] = "Ponastavi"; +$LANG["word_resolved"] = "Rešeno"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "zapored"; +$LANG["word_search"] = "Išči"; +$LANG["word_searchable"] = "Iskanje možno"; +$LANG["word_select"] = "Izberi"; +$LANG["word_setting"] = "Nastavitev"; +$LANG["word_settings"] = "Nastavitve"; +$LANG["word_show"] = "Prikaži"; +$LANG["word_size"] = "Velikost"; +$LANG["word_skipped"] = "Preskočeno"; +$LANG["word_small"] = "Small"; +$LANG["word_solution"] = "Rešitev"; +$LANG["word_sortable"] = "Urejanje omogočeno"; +$LANG["word_start"] = "Začni"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Niz"; +$LANG["word_subject"] = "Predmet"; +$LANG["word_subject_c"] = "Predmet"; +$LANG["word_submenu"] = "Podmenu"; +$LANG["word_submission"] = "Vnos"; +$LANG["word_submissions"] = "Vnosi"; +$LANG["word_system"] = "Sistem"; +$LANG["word_tab"] = "Zavihek"; +$LANG["word_tabs"] = "Zavihki"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Besedilo"; +$LANG["word_textarea"] = "Polje z besedilom"; +$LANG["word_textbox"] = "Okvir"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Teme"; +$LANG["word_time"] = "Čas"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Nasveti"; +$LANG["word_today"] = "Danes"; +$LANG["word_truncate_q"] = "Izrežite?"; +$LANG["word_uninstall"] = "Odstrani"; +$LANG["word_unknown"] = "Neznan"; +$LANG["word_update"] = "Posodobi"; +$LANG["word_upgrade"] = "Nadgradi"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Uporabnik"; +$LANG["word_username"] = "Uporabniško ime"; +$LANG["word_username_c"] = "Uporabniško ime:"; +$LANG["word_validation"] = "Validacija"; +$LANG["word_value"] = "Vrednost"; +$LANG["word_value_sp"] = "Vrednost(i)"; +$LANG["word_verified"] = "Preverjeno"; +$LANG["word_verify"] = "Preverite"; +$LANG["word_version"] = "Različica"; +$LANG["word_vertical"] = "Navpično"; +$LANG["word_view"] = "Pogled"; +$LANG["word_views"] = "Pogledi:"; +$LANG["word_warning"] = "Opozorilo!"; +$LANG["word_warning_c"] = "Opozorilo:"; +$LANG["word_web"] = "Splet"; +$LANG["word_welcome"] = "Dobrodošli!"; +$LANG["word_width_c"] = "širina:"; +$LANG["word_words"] = "Besede"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Yellow"; +$LANG["word_yes"] = "Da"; \ No newline at end of file diff --git a/global/lang/sr.php b/global/lang/sr.php new file mode 100644 index 00000000..3a3082be --- /dev/null +++ b/global/lang/sr.php @@ -0,0 +1,1219 @@ +Упозорење! Сте изабрали {\$num_selected_on_page} поднеске на овој страници и {\$num_selected_on_other_pages на другим страницама. Молимо Вас да изаберете једну од следећих опција:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Упозорење Нисте изабрали поднеске на овој страници, али сте изабрали {\$num_selected_on_other_pages} на другим страницама. Молимо потврдите да желите да избришете ове тврдње.
    "; +$LANG["confirm_delete_view"] = "Јесте ли сигурни да желите да избришете овај приказ?"; +$LANG["confirm_refresh_page"] = "Да ли сте сигурни да желите да освежите страницу? Ово ће изгубити све измене које сте направили."; +$LANG["confirm_save_change_before_redirect"] = "Једно или више поља су ажуриране. Желите ли да сачувате промене пре него што преусмеравање?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Јесте ли сигурни да желите да паметно Попуните базе података колоне имена? Ово ће преписати постојеће вредности."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Ова опција аутоматски генерише базу података имена колона на основу поља приказ текста, тако да садржај базе података табели су лакши за читање."; +$LANG["confirm_smart_fill_display_names"] = "Јесте ли сигурни да желите да паметно Попуните Приказ имена? Ово ће преписати постојеће вредности."; +$LANG["confirm_ungroup_option_list"] = "Да ли сте сигурни да желите да разгруписати овој листи опција? Све опције ће бити несрећно стављене у једну, унгроупед листи."; +$LANG["confirm_uninstall_module"] = "Јесте ли сигурни да желите да деинсталирате овај модул? Сви модул подаци ће бити изгубљени."; +$LANG["date_AM"] = "ПМ"; +$LANG["date_Fri"] = "Пет"; +$LANG["date_Friday"] = "Петак"; +$LANG["date_Mon"] = "Пон"; +$LANG["date_Monday"] = "Понедељак"; +$LANG["date_PM"] = "АМ"; +$LANG["date_Sat"] = "Суб"; +$LANG["date_Saturday"] = "Субота"; +$LANG["date_Sun"] = "Сунце"; +$LANG["date_Sunday"] = "Недеља"; +$LANG["date_Thu"] = "Чет"; +$LANG["date_Thursday"] = "Четвртак"; +$LANG["date_Tue"] = "Уто"; +$LANG["date_Tuesday"] = "Уторак"; +$LANG["date_Wed"] = "Сре"; +$LANG["date_Wednesday"] = "Среда"; +$LANG["date_am"] = "пм"; +$LANG["date_month_April"] = "Април"; +$LANG["date_month_August"] = "Август"; +$LANG["date_month_December"] = "Децембар"; +$LANG["date_month_February"] = "Фебруар"; +$LANG["date_month_January"] = "Јануар"; +$LANG["date_month_July"] = "Јул"; +$LANG["date_month_June"] = "Јун"; +$LANG["date_month_March"] = "Март"; +$LANG["date_month_May"] = "Може"; +$LANG["date_month_November"] = "Новембар"; +$LANG["date_month_October"] = "Октобар"; +$LANG["date_month_September"] = "Септембар"; +$LANG["date_month_short_Apr"] = "Апр"; +$LANG["date_month_short_Aug"] = "Авг"; +$LANG["date_month_short_Dec"] = "Дец"; +$LANG["date_month_short_Feb"] = "Феб"; +$LANG["date_month_short_Jan"] = "Јан"; +$LANG["date_month_short_Jul"] = "Јул"; +$LANG["date_month_short_Jun"] = "Јун"; +$LANG["date_month_short_Mar"] = "Мар"; +$LANG["date_month_short_May"] = "Може"; +$LANG["date_month_short_Nov"] = "Нов"; +$LANG["date_month_short_Oct"] = "Окт"; +$LANG["date_month_short_Sep"] = "Сеп"; +$LANG["date_pm"] = "ам"; +$LANG["notify_account_deleted"] = "Кориснички налог је избрисан."; +$LANG["notify_account_updated"] = "Ваш налог је успешно ажуриран."; +$LANG["notify_add_display_values"] = "Додај Приказ Вредности"; +$LANG["notify_admin_menu_updated"] = "Администрација мени је измењен."; +$LANG["notify_admin_theme_overridden"] = "Администратор тема је ручно Заобиђена."; +$LANG["notify_allow_url_fopen_not_set"] = "Нажалост, овај тест не може да ради на свој уеб сервер. Аллоу_урл_фопен потребно је да буде постављен на 1 у вашој датотеци пхп.ини. Ова поставка омогућава ПХП приступа датотекама преко УРЛ-а, која је потребна за извршавање овог теста. Можете га тестирати ручно учитавање датотека у том фолдеру преко ФТП-а, онда покушавају да приступ на УРЛ који сте добили."; +$LANG["notify_change_temp_password"] = "Само Пријављени сте са привремену лозинку. Ти би сада требало да Ресетуј лозинку!"; +$LANG["notify_click_to_edit_new_submission"] = "Кликните овде да бисте изменили нови поднесак."; +$LANG["notify_client_account_menus_updated"] = "Клијент рачун (е) су ажурирани на {\$menu_name} Сада можете обрисати мени који је претходно био повезан са рачун (е)."; +$LANG["notify_client_account_not_updated"] = "Рачун клијента није могла бити ажурирана."; +$LANG["notify_client_account_themes_updated"] = "Клијент рачун (е) су ажурирани на {\$theme} Сада можете да онемогућите тему раније повезан са рачун (е)."; +$LANG["notify_client_account_updated"] = "Рачун клијента је успешно ажуриран."; +$LANG["notify_client_menu_deleted"] = "Клијент мени је избрисан."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Мени је избрисан, али следеће рачуне клијената сада више не морате мени! Потребно је да ажурирате следећих рачуна:"; +$LANG["notify_client_menu_updated"] = "Клијент мени је измењен."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Нажалост, мени сте управо покушали да избришете већ се користи од стране клијената испод. Како би избрисали мени прво морате доделити клијентима на друге меније. Кликните на име клијента за уређивање да је индивидуалног рачуна, или све рачуне да доделите различите помоћу падајућег менија испод."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Нажалост, једна од тема коју сте управо онемогућено већ се користе следеће рачуне клијената. Како би онемогућили тему прво морате да доделите сваком клијенту на другу тему. Кликните на име клијента за уређивање да је индивидуалног рачуна, или доделити све рачуне на тему користећи падајући испод."; +$LANG["notify_edit_email_fields_link"] = "Кликните овде да одредите ком облику поља су емаил поља, тако да можете да их мета у Вашу е-маил шаблоне."; +$LANG["notify_edit_field_new_field"] = "Ово је ново поље. Мораћете да ажурирате главну страну пре него што буде у могућности да у потпуности уредити ово поље."; +$LANG["notify_edit_option_list_after_save"] = "Морате да изаберете Листа опцију, а затим на Сачувај промене пре него што буде у могућности да га изменили."; +$LANG["notify_email_field_config_deleted"] = "Е конфигурације је избрисана."; +$LANG["notify_email_fields_not_updated"] = "Нажалост, нисмо могли да ажурирате поља за емаил."; +$LANG["notify_email_fields_updated"] = "Е области су ажурирани."; +$LANG["notify_email_not_sent"] = "Жао нам је, е није могао бити послат. Молимо контактирајте администратора сајта на адресу испод."; +$LANG["notify_email_not_sent_c"] = "Жао нам је, е-маил не може бити послата:"; +$LANG["notify_email_sent"] = "Е (и) су послате."; +$LANG["notify_email_template_deleted"] = "Е-маил шаблона је избрисана."; +$LANG["notify_email_template_updated"] = "Е-маил образац је измењен."; +$LANG["notify_enabled_module_list_updated"] = "Списак модула омогућено је измењен."; +$LANG["notify_error_saving_fields"] = "Дошло је до грешке приликом чувања ове области."; +$LANG["notify_field_changes_saved"] = "Промене на свом терену (а) су сачувана."; +$LANG["notify_field_options_smart_filled"] = "Вашем пољу опције су Паметне попуњен."; +$LANG["notify_field_selected"] = "Поље је изабран Кликните овде да бисте се вратили у главној листи, поље.."; +$LANG["notify_field_updated"] = "Ово поље је измењен."; +$LANG["notify_file_not_uploaded"] = "Датотека није могла бити учитани."; +$LANG["notify_file_uploaded"] = "Датотека је успешно отпремљена."; +$LANG["notify_filters_not_updated"] = "Дошло је до грешке у исправци подношење овог клијента филтера."; +$LANG["notify_filters_updated"] = "Подношење филтери су ажурирани за овог клијента."; +$LANG["notify_folder_correct_permissions"] = "Ова фасцикла има исправне дозволе."; +$LANG["notify_folder_url_match"] = "Фолдер и УРЛ адресу да бисте се правилно одговара."; +$LANG["notify_folder_url_no_access"] = "Овај тест није могла бити извршена јер је ПХП-у могућности да приступи том УРЛ. Ово је обично изазвано УРЛ адресе биће заштићена лозинком са хтаццесс датотеку.."; +$LANG["notify_folder_url_no_match"] = "Овај директоријум УРЛ комбинација не изгледа да се подударају."; +$LANG["notify_folder_url_unknown_error"] = "До непознате грешке. Можете га тестирати ручно учитавање датотека у том фолдеру преко ФТП-а, онда покушавају да приступ на УРЛ који сте добили."; +$LANG["notify_form_access_type_email_info"] = "Овај облик има администраторски приступ типа, тако да ниједан клијент нема приступ до ње и нису наведени у падајућем испод."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Жао нам је, формулар са тим ИД не постоји."; +$LANG["notify_form_field_not_added"] = "Поље обрасца '{\$fieldname}' није могао бити додат."; +$LANG["notify_form_field_options_updated"] = "Поље обрасца опције су ажурирани."; +$LANG["notify_form_field_removed"] = "Облик поља је успешно уклоњен."; +$LANG["notify_form_fields_removed"] = "Поља обрасца су успешно уклоњени."; +$LANG["notify_form_not_updated_notify_admin"] = "Свом облику не може да се ажурира. Молимо Вас да контактирате администратора да о том проблему."; +$LANG["notify_form_settings_updated"] = "Образац Подешавања су успешно ажурирани."; +$LANG["notify_form_submission_updated"] = "Подношење формулара је измењен."; +$LANG["notify_form_tabs_updated"] = "Картице су ажуриране."; +$LANG["notify_form_updated"] = "Форма је успешно ажуриран."; +$LANG["notify_form_views_updated"] = "Форма Погледано су ажуриране."; +$LANG["notify_install_invalid_db_info"] = "Нажалост, нисмо могли да се повежете на базу података користећи информације које сте добили. Поруку о грешци вратио базе података је: {\$db_connection_error}/i>"; +$LANG["notify_internal_form_created"] = "Ваш облик је створен! Можете да конфигуришете облик кроз ове табулаторе."; +$LANG["notify_invalid_account_information_in_sessions"] = "Информације о налогу се налазе на седницама није исправан. Молимо пријавите се поново испод."; +$LANG["notify_invalid_license_key"] = "Жао нам је, не изгледа да важи лиценцни кључ. Покушајте поново улази."; +$LANG["notify_invalid_permissions"] = "Немате дозволу за приступ овој страници. Сте одјављени."; +$LANG["notify_invalid_search_dates"] = "Молимо Вас да користите датепицкер да унесете исправан датум или датуме."; +$LANG["notify_invalid_upload_folder"] = "Уплоад фолдеру је или неважећи или не може писати."; +$LANG["notify_lang_list_updated"] = "Доступна језика интерфејса листа је измењен."; +$LANG["notify_login_info_emailed"] = "Своје податке за пријављивање је путем емаила."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Упс, овај модул већ инсталиран!"; +$LANG["notify_module_installed"] = "Модул је инсталиран Кликните овде да бисте изабрали модул.."; +$LANG["notify_module_list_updated"] = "Модул листа је измењен."; +$LANG["notify_module_uninstalled"] = "Модул је деинсталиран."; +$LANG["notify_module_updated"] = "{\$module} модул је ажуриран на {\$version}. Кликните овде да бисте изабрали модул ."; +$LANG["notify_multi_field_selected"] = "Поље је изабран Кликните овде да видите и измените опције поље.."; +$LANG["notify_multi_field_updated"] = "Ово поље је измењен. Моћи ћете да подесите поље опције након постављања форме."; +$LANG["notify_multiple_fields_found"] = "Вишеструки елементи су пронађене са поља име ({\$field_name}). То се може десити ако ваша страница садржи више од једног облика или ако сте случајно име једног од образаца исти као други. Молимо Вас да одаберете онај који желите из листе испод."; +$LANG["notify_new_default_view_created"] = "Нов, подразумевани приказ који садржи све ваше поља у обрасцима је направљен."; +$LANG["notify_new_submission_created"] = "Подношење је направљен. Можете га измене у наставку."; +$LANG["notify_no_account_id_in_sessions"] = "Нема кориснички ИД налога је пронађена у сеанси. Молимо пријавите се поново испод."; +$LANG["notify_no_api_installed"] = "Немате инсталиран АПИ-ја"; +$LANG["notify_no_client_permissions"] = "Нема подешавања доступни за уређивање."; +$LANG["notify_no_email_template_selected"] = "Молимо изаберите е-маил шаблона."; +$LANG["notify_no_emails_defined"] = "Е-Маилс су дефинисани за ову форму. Да додате нови, кликните на дугме испод."; +$LANG["notify_no_field_settings"] = "Овај тип поља не садржи никакве додатне поставке."; +$LANG["notify_no_fields_in_tab"] = "Ова картица не садржи поља."; +$LANG["notify_no_option_lists"] = "Не постоје опције листе дефинисане. Кликните на дугме испод да створи нови."; +$LANG["notify_no_test_submission"] = "Образац Алати није добио још увек успешног тестирања подношења."; +$LANG["notify_no_user_email_fields_configured"] = "Напомена: ако желите да пошаљете поруку на било коју адресу која је укључена у образац, прво морате да подесите облик поља за емаил."; +$LANG["notify_no_views"] = "Формулар нема Прегледа поставили! Биће вам потребна најмање једна Погледај како да управљате својим податке из обрасца."; +$LANG["notify_no_views_assigned_to_client_form"] = "Изгледа да ваш кориснички налог није додељен било ком облику гоогле, тако да нећете моћи да видите све податке. Молимо контактирајте администратора за даљу помоћ."; +$LANG["notify_no_views_defined"] = "Не морате било Погледано дефинисани. Нећете моћи да видите поднесака ову форму ако не барем један Виев је створио. Кликните на дугме испод за стварање подразумевани приказ."; +$LANG["notify_option_list_deleted"] = "Опција листа је обрисана."; +$LANG["notify_option_list_updated"] = "Опција листа је ажурирана."; +$LANG["notify_public_form_omit_list_updated"] = "Клијент изоставите листу за овај образац је измењен."; +$LANG["notify_public_view_omit_list_updated"] = "Клијент изоставите листу за овај преглед је измењен."; +$LANG["notify_required_admin_pages"] = "Следеће странице су потребни у администраторски мени: {\$remaining_pages}"; +$LANG["notify_sessions_timeout"] = "Нажалост, није било активности за време тако да смо морали да се одјавите. Молимо пријавите се поново испод."; +$LANG["notify_setup_options_updated"] = "Подешавање опције су ажурирани."; +$LANG["notify_smart_fill_field_not_found"] = "Нисмо успели да пронађу поље са овим именом ({\$field_name}) у облику (и) наведен. Или можете да ручно подесите тип поља испод, и кликните на дугме Прескочи да бисте уредили ову област касније."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Датотеку (е) су успешно отпремљене. Пробајте кликом на дугме Попуни паметно да покушате поново. Ако се овај корак не успе, мораћете да прескочите овај корак и подесите поља обрасца маналлы касније."; +$LANG["notify_smart_fill_submitted"] = "Образац је достављен. У зависности од величине и облика броја опција области, то може потрајати неко време."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Нажалост, једну или више датотека које сте унели нису могли бити учитани. Мораћете да прескочите овај корак и ручно подесите поља."; +$LANG["notify_submission_and_files_deleted"] = "Подношење и било који фајл (ове) у вези са њим су успешно обрисана."; +$LANG["notify_submission_copied"] = "Поднесак је копиран."; +$LANG["notify_submission_copied_edit"] = "Поднесак је копиран. Можете га изменити испод."; +$LANG["notify_submission_deleted"] = "Подношење је успешно обрисана."; +$LANG["notify_submission_deleted_with_problems"] = "Подношење је избрисана, али је наишао на следећи проблем када покушате да обришете следеће датотеке (а):"; +$LANG["notify_submission_id_not_found"] = "Подношење идентификатор није пронађен."; +$LANG["notify_submission_not_updated"] = "Подношење не може да се ажурира."; +$LANG["notify_submissions_and_files_deleted"] = "Поднесака и било који фајл (ове) везане за њих су успешно обрисана."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} поднесака су копирани."; +$LANG["notify_submissions_deleted"] = "Поднесци су успешно обрисана."; +$LANG["notify_submissions_deleted_with_problems"] = "Поднесци су избрисане, али се није појавио следећих проблема када покушате да обришете следеће датотеке (а):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Ваш е-маил теста није могао бити послат."; +$LANG["notify_theme_cache_folder_not_writable"] = "Кеш фолдеру Ова тема је не може писати. Како би омогућили ову тему, {\$folder} фолдеру треба да има пуну писање и читање дозволе."; +$LANG["notify_theme_list_updated"] = "Тема Листа је ажурирана."; +$LANG["notify_themes_settings_updated"] = "Ваш тема подешавања су ажурирани."; +$LANG["notify_view_deleted"] = "Погледајте је избрисан."; +$LANG["notify_view_group_deleted"] = "Погледај група је избрисана."; +$LANG["notify_view_missing_columns"] = "Упс! Извините, овај приказ није у потпуности постављена још."; +$LANG["notify_view_missing_columns_admin_fix"] = "Кликните овде да одредите која поља би требало да се појави као колона на овој страници."; +$LANG["notify_view_updated"] = "Погледајте је измењен."; +$LANG["notify_your_email_sent"] = "Ваш емаил је успешно послат."; +$LANG["phrase_100_per_page"] = "100 по страни"; +$LANG["phrase_10_per_page"] = "10 на страни"; +$LANG["phrase_15_per_page"] = "15 по страници"; +$LANG["phrase_1_direct"] = "1. Директан"; +$LANG["phrase_1char"] = "1 Знак"; +$LANG["phrase_20_per_page"] = "20 на страни"; +$LANG["phrase_25_per_page"] = "25 по страници"; +$LANG["phrase_2_code"] = "2. Шифра"; +$LANG["phrase_2_columns"] = "2 колоне"; +$LANG["phrase_2chars"] = "2 Цхарс"; +$LANG["phrase_3_columns"] = "3 колоне"; +$LANG["phrase_4_columns"] = "4 колоне"; +$LANG["phrase_50_per_page"] = "50 по страни"; +$LANG["phrase_accepting_submissions"] = "(прихватања пријаве)"; +$LANG["phrase_access_admin_account_c"] = "Овде можете да приступите свом налогу управе:"; +$LANG["phrase_access_type"] = "Тип приступа"; +$LANG["phrase_account_info"] = "Информације о рачуну"; +$LANG["phrase_account_settings"] = "Подешавања налога"; +$LANG["phrase_action_needed"] = "Акција Потребно"; +$LANG["phrase_add_client"] = "Додај клијенте"; +$LANG["phrase_add_client_menu"] = "Додај Клијент Мени"; +$LANG["phrase_add_default_settings_rightarrow"] = "Додај подешавања »"; +$LANG["phrase_add_field"] = "Додајте поља"; +$LANG["phrase_add_fields"] = "Додај Поља"; +$LANG["phrase_add_fields_rightarrow"] = "Адд фиелд (с) »"; +$LANG["phrase_add_form"] = "Додај Облик"; +$LANG["phrase_add_form_external"] = "Додај Формулар - Спољни"; +$LANG["phrase_add_form_internal"] = "Додај Формулар - Интерна"; +$LANG["phrase_add_new_group_rightarrow"] = "Додај нову групу »"; +$LANG["phrase_add_num_rows"] = "Додајте {\$number} ред (е)"; +$LANG["phrase_add_row"] = "Додај Ред »"; +$LANG["phrase_add_submission_button"] = "Дугме Адд Подношење"; +$LANG["phrase_add_view_rightarrow"] = "Додај Погледај »"; +$LANG["phrase_adding_multi_page_form"] = "Додавање више страница образац са АПИ"; +$LANG["phrase_adding_single_page_form"] = "Додавање једне стране образац са АПИ"; +$LANG["phrase_admin_menu"] = "Администратор Мени"; +$LANG["phrase_admin_only"] = "Само администратор"; +$LANG["phrase_admin_panel"] = "Админ панел"; +$LANG["phrase_administrator_theme"] = "Тема администратор"; +$LANG["phrase_advanced_settings_rightarrow"] = "Напредна подешавања »"; +$LANG["phrase_all_X_results_selected"] = "Све {\$numresults} Резултати Одабране"; +$LANG["phrase_all_clients"] = "Сви клијенти"; +$LANG["phrase_all_clients_except_c"] = "Сви клијенти, изузев:"; +$LANG["phrase_all_clients_have_access"] = "(сви клијенти имају приступ)"; +$LANG["phrase_all_fields"] = "Сва поља"; +$LANG["phrase_all_fields_displayed"] = "Сва поља су приказане"; +$LANG["phrase_all_statuses"] = "Сви статуси"; +$LANG["phrase_all_submissions"] = "Сви поднесци"; +$LANG["phrase_allow_fields_edited"] = "Дозволи поља да се уређивати"; +$LANG["phrase_alphanumeric"] = "Алфанумерички (АЗ, 0-9)"; +$LANG["phrase_api_version"] = "Верзија АПИ-ја"; +$LANG["phrase_apply_timezone_offset"] = "Примените зону Офсет"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Додели све наведене рачуне клијената за {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Додели све наведене рачуне клијената за {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "На Крај"; +$LANG["phrase_at_start"] = "На Почетак"; +$LANG["phrase_author_link"] = "Аутор линк"; +$LANG["phrase_auto_disable_account"] = "Ауто-онемогућите налог после # пријаву покушаја није успео"; +$LANG["phrase_auto_size"] = "Ауто-величина"; +$LANG["phrase_available_clients"] = "Клијенти на располагању"; +$LANG["phrase_available_fields"] = "Доступна поља"; +$LANG["phrase_available_option_lists"] = "Доступно Опција Листе"; +$LANG["phrase_available_swatches"] = "Доступно Сватцхес"; +$LANG["phrase_available_swatches_c"] = "Доступно Сватцхес:"; +$LANG["phrase_available_tabs"] = "Доступним картицама"; +$LANG["phrase_available_views"] = "Погледано аваилабле"; +$LANG["phrase_awaiting_form_submission"] = "Чека подношење обрасца."; +$LANG["phrase_back_to_field_list"] = "«назад на листи поља"; +$LANG["phrase_back_to_search_results"] = "назад на резултате претраге"; +$LANG["phrase_base_view_on"] = "База Поглед на ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Промена Информације за пријављивање"; +$LANG["phrase_characters_limit_p"] = "карактера граница."; +$LANG["phrase_check_db_settings_try_again"] = "Молимо Вас да поново проверите подешавања базе података и кликните на дугме Настави."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Проверите УРЛ адресе"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Поспремити"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Јасна Изоставите Листа"; +$LANG["phrase_client_account_settings"] = "Подешавања налога клијента"; +$LANG["phrase_client_field"] = "Подручје за клијенте"; +$LANG["phrase_client_map_filters"] = "Клијент Мапа Филтери »"; +$LANG["phrase_client_may_edit"] = "Клијент може да уреди"; +$LANG["phrase_client_menu"] = "Клијент Мени"; +$LANG["phrase_clients_can_access_form"] = "Клијенти који могу приступити обрасцу"; +$LANG["phrase_clients_can_access_view"] = "Клијенти који могу да приступе преглед"; +$LANG["phrase_clients_cannot_access_form"] = "Клијенти који не могу да приступе образац"; +$LANG["phrase_clients_cannot_access_view"] = "Клијенти који не могу да приступе преглед"; +$LANG["phrase_clients_may_edit"] = "Клијенти могу да мењају"; +$LANG["phrase_code_c"] = "Шифра грешке:"; +$LANG["phrase_code_markup_field"] = "Код / ХТМЛ терену"; +$LANG["phrase_code_markup_type"] = "Код / ХТМЛ Тип"; +$LANG["phrase_codes_c"] = "Кодова грешака:"; +$LANG["phrase_column_width"] = "Ширину колоне"; +$LANG["phrase_company_name"] = "Назив предузећа"; +$LANG["phrase_configure_form_email_fields"] = "Конфигурисање Облик поља за емаил"; +$LANG["phrase_confirm_folder_url_match"] = "Потврди фасцикле УРЛ Победник"; +$LANG["phrase_connect_rows"] = "Повезивање редова"; +$LANG["phrase_copy_email_settings_from"] = "Пошаљите копију подешавања из ..."; +$LANG["phrase_copy_settings_from"] = "Копирање подешавања из ..."; +$LANG["phrase_core_fields"] = "Цоре Поља"; +$LANG["phrase_core_version"] = "Цоре верзија"; +$LANG["phrase_create_account"] = "Направите налог"; +$LANG["phrase_create_admin_account"] = "Администратор Направите налог"; +$LANG["phrase_create_config_file"] = "Направите цонфиг филе"; +$LANG["phrase_create_database_tables"] = "Креирање табела базе података"; +$LANG["phrase_create_default_view"] = "Креирај приказ Подразумевано"; +$LANG["phrase_create_file"] = "Креирање датотеке"; +$LANG["phrase_create_group"] = "Креирај групу"; +$LANG["phrase_create_new_email"] = "Креирај нову емаил"; +$LANG["phrase_create_new_menu"] = "Направите нови мени"; +$LANG["phrase_create_new_option_list"] = "Креирајте нову листу опција"; +$LANG["phrase_create_new_option_list_group"] = "Креирај нову групу опција листу"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Креирајте нову листу опција »"; +$LANG["phrase_create_new_view"] = "Направите нови преглед"; +$LANG["phrase_create_new_view_group"] = "Направи нову групу Погледај"; +$LANG["phrase_custom_display_format"] = "Цустом формат приказа"; +$LANG["phrase_custom_recipient"] = "Прилагођена Прималац"; +$LANG["phrase_custom_url"] = "Цустом УРЛ адреса"; +$LANG["phrase_dark_blue"] = "Тамно плава"; +$LANG["phrase_data_type"] = "Тип података"; +$LANG["phrase_database_hostname"] = "Базе података домаћина"; +$LANG["phrase_database_name"] = "Име базе"; +$LANG["phrase_database_password"] = "Базе података лозинку"; +$LANG["phrase_database_settings"] = "Подешавања базе"; +$LANG["phrase_database_setup"] = "Подешавање базе података"; +$LANG["phrase_database_table_prefix"] = "Префикс табела базе података"; +$LANG["phrase_database_username"] = "Име базе података"; +$LANG["phrase_date_format"] = "Формат датума"; +$LANG["phrase_db_column"] = "ДБ-Колона"; +$LANG["phrase_db_setup_page_4"] = "4. Подешавање базе података"; +$LANG["phrase_default_client_account_theme"] = "Подразумевани клијент рачуна Тема"; +$LANG["phrase_default_date_field_search_value"] = "Почетни датум поље за претрагу вредност"; +$LANG["phrase_default_language"] = "Подразумевани језик"; +$LANG["phrase_default_menu"] = "Дефаулт Мени"; +$LANG["phrase_default_sessions_timeout"] = "Седнице дефаулт Временско ограничење"; +$LANG["phrase_default_sort_order"] = "Дефаулт Сортирања"; +$LANG["phrase_default_tab_label"] = "Подаци"; +$LANG["phrase_default_theme"] = "Дефаулт Тема"; +$LANG["phrase_default_value"] = "Подразумевана вредност"; +$LANG["phrase_default_values"] = "Подразумеване вредности"; +$LANG["phrase_default_values_new_submissions"] = "Подразумеване вредности за нове представке"; +$LANG["phrase_delete_field"] = "Делете фиелд"; +$LANG["phrase_delete_form"] = "Избриши формулар"; +$LANG["phrase_delete_row"] = "Обриши ред"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Избришите повезане датотеке приликом брисања подношење"; +$LANG["phrase_delete_view"] = "Обриши Погледај"; +$LANG["phrase_disconnect_rows"] = "Искључите редова"; +$LANG["phrase_display_email"] = "Екран Е-маил"; +$LANG["phrase_display_name"] = "Име за приказ"; +$LANG["phrase_display_text"] = "Приказ текста"; +$LANG["phrase_display_value"] = "Приказ Вредност"; +$LANG["phrase_edit_admin_menu"] = "Измени Администратор Мени"; +$LANG["phrase_edit_client"] = "Измени Клијент"; +$LANG["phrase_edit_client_menu"] = "Измени Клијент Мени"; +$LANG["phrase_edit_email_template"] = "Измени Пошаљите Шаблон"; +$LANG["phrase_edit_field"] = "Едит поља"; +$LANG["phrase_edit_field_c"] = "Поље:"; +$LANG["phrase_edit_form"] = "Измени Облик"; +$LANG["phrase_edit_form_access_type_b"] = "[Измена типа облик приступа]"; +$LANG["phrase_edit_option_list"] = "Уреди листу Опција"; +$LANG["phrase_edit_submission"] = "Измени Подношење"; +$LANG["phrase_edit_submission_label"] = "Измени назив Подношење"; +$LANG["phrase_edit_view"] = "Измени преглед"; +$LANG["phrase_email_format"] = "Форма е-маил"; +$LANG["phrase_email_settings"] = "Е-маил подешавања"; +$LANG["phrase_email_template"] = "Е-маил шаблона"; +$LANG["phrase_email_template_name"] = "Е-маил шаблона"; +$LANG["phrase_error_learn_more"] = "Сазнајте више о овој грешци."; +$LANG["phrase_error_text_intro"] = "Молимо исправите следеће грешке (с) и поново:"; +$LANG["phrase_errors_learn_more"] = "Кликните на кодовима грешака да бисте сазнали више."; +$LANG["phrase_event_trigger"] = "Догађај окидач"; +$LANG["phrase_external_form"] = "Спољни облик"; +$LANG["phrase_external_form_info"] = "Спољни облик инфо"; +$LANG["phrase_external_your_own_form"] = "Спољни (сопствени облик)"; +$LANG["phrase_field_comments"] = "Коментари области"; +$LANG["phrase_field_label"] = "Поље Ознака"; +$LANG["phrase_field_options"] = "Поље Опције"; +$LANG["phrase_field_size"] = "Величина поља"; +$LANG["phrase_field_skipped"] = "Поље прескочени"; +$LANG["phrase_field_specific_settings"] = "Области подешавања специфична"; +$LANG["phrase_field_type"] = "Тип поља"; +$LANG["phrase_field_type_no_validation"] = "Не постоје правила за валидацију за овај тип поља."; +$LANG["phrase_field_types"] = "Врсте поља"; +$LANG["phrase_field_value"] = "Вредност поља"; +$LANG["phrase_field_values_to_display_values"] = "Вредности поља »Приказ вредности"; +$LANG["phrase_final_touches_page_6"] = "6. Завршава се дотакне"; +$LANG["phrase_finalize_form"] = "Завршити Облик"; +$LANG["phrase_first_name"] = "Име"; +$LANG["phrase_footer_text"] = "Фоотер Текст"; +$LANG["phrase_for_any_form_submission"] = "За било који облик подношење"; +$LANG["phrase_for_view_submissions"] = "Само пријаве која се уклапају у следеће Виев (с)"; +$LANG["phrase_forgot_password"] = "Заборавили сте лозинку?"; +$LANG["phrase_form_already_selected"] = "Образац већ изабрано"; +$LANG["phrase_form_email_field_b_c"] = "[Облик поље емаил]:"; +$LANG["phrase_form_email_field_configuration"] = "Пошаљите образац Поље Конфигурација"; +$LANG["phrase_form_email_fields"] = "Е-маил формулар Поља"; +$LANG["phrase_form_field"] = "Образац Поље"; +$LANG["phrase_form_field_contents"] = "Поље Обрасца Садржај"; +$LANG["phrase_form_field_name"] = "Форма Име поља"; +$LANG["phrase_form_field_placeholders"] = "Поље у обрасцу чувара места"; +$LANG["phrase_form_fields"] = "Поља обрасца"; +$LANG["phrase_form_info"] = "Образац Информације"; +$LANG["phrase_form_info_2"] = "2. Образац Информације"; +$LANG["phrase_form_list"] = "Формулар Листа"; +$LANG["phrase_form_name"] = "Форма Име"; +$LANG["phrase_form_page"] = "Образац Страна"; +$LANG["phrase_form_placeholders"] = "Образац Текст чувара места"; +$LANG["phrase_form_submission"] = "Формулар за пријаву"; +$LANG["phrase_form_submissions"] = "Образац Пријава"; +$LANG["phrase_form_type"] = "Тип обрасца"; +$LANG["phrase_form_url"] = "Облику УРЛ адреса"; +$LANG["phrase_form_urls"] = "Формулар УРЛ"; +$LANG["phrase_forms_assigned_to_any_account"] = "Облици додељена на било који рачун"; +$LANG["phrase_forms_page_default_message"] = "Облици Дефаулт поруку"; +$LANG["phrase_ft_installation"] = "Образац Алати Инсталација скрипте"; +$LANG["phrase_full_width"] = "Пуна ширина"; +$LANG["phrase_getting_started"] = "почетак"; +$LANG["phrase_global_placeholders"] = "Глобална Текст чувара места"; +$LANG["phrase_group_name"] = "Назив групе"; +$LANG["phrase_group_options_q"] = "Групи Опције?"; +$LANG["phrase_group_rows"] = "Група редова"; +$LANG["phrase_have_fun"] = "Забавите се!"; +$LANG["phrase_highlight_colour"] = "Истакните боји"; +$LANG["phrase_html_email"] = "ХТМЛ емаил"; +$LANG["phrase_html_template"] = "ХТМЛ-шаблона"; +$LANG["phrase_images_media"] = "Имагес / Медији"; +$LANG["phrase_import_option_list_rightarrow"] = "Увоз Опција Листа »"; +$LANG["phrase_input_length"] = "Улаз Дужина"; +$LANG["phrase_installation_help"] = "Инсталација Помоћ"; +$LANG["phrase_internal_form"] = "Интерни Формулар"; +$LANG["phrase_ip_address"] = "ИП адреса"; +$LANG["phrase_is_multi_page_form_q"] = "Да ли је ово више страница облику?"; +$LANG["phrase_label_response_placeholders"] = "Етикета / одговор Места"; +$LANG["phrase_large_300px"] = "Велика (300пк)"; +$LANG["phrase_large_400px"] = "Велика (400пк)"; +$LANG["phrase_last_7_days"] = "Последњих 7 дана"; +$LANG["phrase_last_logged_in"] = "Ласт логгед ин"; +$LANG["phrase_last_modified"] = "Последњи пут"; +$LANG["phrase_last_modified_date"] = "Ласт Модифиед Дате"; +$LANG["phrase_last_name"] = "Презиме"; +$LANG["phrase_letters_only"] = "Слова из само"; +$LANG["phrase_light_brown"] = "Светло браон"; +$LANG["phrase_limit_email_content"] = "Е да лимит садржај поља на преглед"; +$LANG["phrase_loading_ellipsis"] = "Лоадинг ..."; +$LANG["phrase_log_in"] = "Пријава"; +$LANG["phrase_login_as_user"] = "Пријавите као овог корисника"; +$LANG["phrase_login_info"] = "Логин инфо"; +$LANG["phrase_login_page"] = "Логин странице"; +$LANG["phrase_login_panel_c"] = "Логин Учествују:"; +$LANG["phrase_login_panel_leftarrows"] = "«Пријава табла"; +$LANG["phrase_login_password"] = "Пријава Лозинка"; +$LANG["phrase_login_username"] = "Пријава Корисничко име"; +$LANG["phrase_logo_link_url"] = "Лого УРЛ везе"; +$LANG["phrase_logout_url"] = "Логоут УРЛ адреса"; +$LANG["phrase_main_nav"] = "Главни нав"; +$LANG["phrase_main_settings"] = "Главни Подешавања"; +$LANG["phrase_manage_client"] = "Управљање Клијент"; +$LANG["phrase_manage_client_omit_list"] = "Управљање Клијент Изоставити Листа"; +$LANG["phrase_max_file_size"] = "Максимална величина датотеке"; +$LANG["phrase_max_length"] = "Максимална дужина"; +$LANG["phrase_max_length_words_chars"] = "- Максимална дужина (речи / карактера)"; +$LANG["phrase_may_add_submissions"] = "Могу додати Поднесци"; +$LANG["phrase_may_copy_submissions"] = "Може копирати поднеске"; +$LANG["phrase_may_delete_submissions"] = "Може брисати Поднесци"; +$LANG["phrase_medium_150px"] = "Средњи (150пк)"; +$LANG["phrase_medium_200px"] = "Средњи (200пк)"; +$LANG["phrase_menu_name"] = "Мени Име"; +$LANG["phrase_menu_type"] = "Мени Тип"; +$LANG["phrase_min_password_length"] = "Минимална дужина лозинке"; +$LANG["phrase_module_description"] = "Опис модула"; +$LANG["phrase_module_info"] = "Информације о модулу"; +$LANG["phrase_module_nav"] = "Модул нав"; +$LANG["phrase_month_to_date"] = "Месец до сада"; +$LANG["phrase_multi_select"] = "Мулти-изаберите"; +$LANG["phrase_multi_select_dropdown"] = "Мулти-падајућег менија изаберите"; +$LANG["phrase_multiple_fields_found"] = "Пронађено више поља!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Име / Презиме"; +$LANG["phrase_new_blank_email"] = "Нова Празно Е-маил"; +$LANG["phrase_new_blank_option_list"] = "Нови Празно Опција Листа"; +$LANG["phrase_new_blank_view"] = "Нова Празно Погледај"; +$LANG["phrase_new_ft_installation"] = "Нова Форма Алати инсталације"; +$LANG["phrase_new_option_list"] = "Нова опција Листа"; +$LANG["phrase_new_password"] = "Нова лозинка"; +$LANG["phrase_new_password_reenter"] = "Нова лозинка (Плеасе ре-ентер)"; +$LANG["phrase_new_view"] = "Нови Прикажи"; +$LANG["phrase_new_view_all_fields"] = "Нови Виев - Сва поља"; +$LANG["phrase_next_client"] = "следећег клијента »"; +$LANG["phrase_next_field"] = "следеће поље »"; +$LANG["phrase_next_form"] = "следећи формулар »"; +$LANG["phrase_next_view"] = "Погледај следећи »"; +$LANG["phrase_no_clients"] = "Нема клијената"; +$LANG["phrase_no_limit"] = "Без лимита"; +$LANG["phrase_no_offset"] = "Нема помака"; +$LANG["phrase_no_option_lists_available"] = "Нема опције листе на располагању."; +$LANG["phrase_no_views"] = "Нема Погледано"; +$LANG["phrase_no_views_with_filters_p"] = "(Но Виевс са филтерима дефинисано)"; +$LANG["phrase_none_not_recommended"] = "Ништа (не препоручује се)"; +$LANG["phrase_not_assigned_to_option_list"] = "Ово поље није додељена опција листу."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "НЕ једнаке"; +$LANG["phrase_not_found"] = "Није пронађен!"; +$LANG["phrase_not_like"] = "Не волим"; +$LANG["phrase_not_visible_to_client"] = "(није видљиво да клијент)"; +$LANG["phrase_num_clients_per_page"] = "Нум Клијенти по страници"; +$LANG["phrase_num_emails_per_page"] = "Нум регистрација по страници"; +$LANG["phrase_num_fields"] = "Број поља"; +$LANG["phrase_num_forms_per_page"] = "Нум Обрасци по страници"; +$LANG["phrase_num_menus_per_page"] = "Нум менус по страници"; +$LANG["phrase_num_modules_per_page"] = "Нум Модули по страници"; +$LANG["phrase_num_option_lists_per_page"] = "Број Опција листе по страни"; +$LANG["phrase_num_options"] = "Број Опције"; +$LANG["phrase_num_rows"] = "Број редова"; +$LANG["phrase_numbers_only"] = "Само бројеве"; +$LANG["phrase_often_localhost"] = "(често "лоцалхост")"; +$LANG["phrase_on_form_submission"] = "Форма на подношење"; +$LANG["phrase_one_char_number"] = "Најмање један лик је број (0-9)"; +$LANG["phrase_one_char_upper"] = "Најмање један лик је велико"; +$LANG["phrase_one_special_char"] = "Најмање један од {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(само одређене клијенти имају приступ)"; +$LANG["phrase_open_form_in_dialog"] = "Отворени облик у дијалог прозору"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Отворите ову форму у новој картици / прозору"; +$LANG["phrase_option_list"] = "Опција Листа"; +$LANG["phrase_option_list_name"] = "Опција Име листе"; +$LANG["phrase_option_list_or_contents"] = "Опција Листа / Садржај"; +$LANG["phrase_option_lists"] = "Опција Листе"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Добављено паге"; +$LANG["phrase_pass_on"] = "Предати"; +$LANG["phrase_password_min"] = "То мора бити најмање {\$length} знакова."; +$LANG["phrase_password_one_number"] = "Она мора да садржи бар један број (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Она мора да садржи најмање једно слово велико."; +$LANG["phrase_password_requirements_c"] = "Лозинка захтеви:"; +$LANG["phrase_password_reset"] = "Поништавање лозинке"; +$LANG["phrase_password_special_char"] = "Она мора да садржи најмање један од следећих знакова: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Дозволе / остала подешавања"; +$LANG["phrase_permitted_file_types"] = "Дозвољене типове датотека"; +$LANG["phrase_phone_number"] = "Број телефона"; +$LANG["phrase_phone_number_format"] = "Број телефона формат"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "пхп.ини максимално дозвољене величине фајла:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "ПХП-верзија"; +$LANG["phrase_please_confirm"] = "Молим вас Потврди"; +$LANG["phrase_please_enter_license_key"] = "Молимо унесите вашу лиценцу"; +$LANG["phrase_please_select"] = "Изаберите"; +$LANG["phrase_please_select_form"] = "Молимо Вас да одаберете образац"; +$LANG["phrase_prev_client"] = "«Претходна клијент"; +$LANG["phrase_prev_form"] = "«Претходна облику"; +$LANG["phrase_prevent_password_reuse"] = "Спречити поновно коришћење # последњих лозинке"; +$LANG["phrase_previous_field"] = "«претходна пољу"; +$LANG["phrase_previous_page"] = "Претходна страна"; +$LANG["phrase_previous_view"] = "«Претходна Погледај"; +$LANG["phrase_program_name"] = "Назив програма"; +$LANG["phrase_public_form_omit_list"] = "Образац јавне Изоставите Листа"; +$LANG["phrase_public_view_omit_list"] = "Погледајте јавни Изоставите Листа"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Дошло је до проблема са следећим упитом:"; +$LANG["phrase_radio_buttons"] = "Радио дугмад"; +$LANG["phrase_random_form_submission"] = "Рандом форма подношење"; +$LANG["phrase_re_enter_password"] = "Поново унесите лозинку"; +$LANG["phrase_recipient_type"] = "Тип примаоца"; +$LANG["phrase_redirect_url"] = "УРЛ адресу за преусмеравање"; +$LANG["phrase_refresh_list"] = "Освежи листу"; +$LANG["phrase_refresh_module_list"] = "Освежи Модул Листа"; +$LANG["phrase_refresh_page"] = "Освежи страну"; +$LANG["phrase_refresh_theme_list"] = "Освежи Тема Листа"; +$LANG["phrase_register_new_email"] = "Регистровати нову емаил"; +$LANG["phrase_remaining_characters"] = "преосталих карактера"; +$LANG["phrase_remaining_words"] = "преостале речи"; +$LANG["phrase_remove_tabs"] = "Уклони Картице"; +$LANG["phrase_required_password_chars"] = "Обавезно лозинка ликова"; +$LANG["phrase_resend_test_submission"] = "Понови тест за подношење"; +$LANG["phrase_return_form_list"] = "Повратак на листу Облик"; +$LANG["phrase_row_selected"] = "{\$num_rows} изабраних редова"; +$LANG["phrase_rows_selected"] = "{\$num_rows} изабраних редова"; +$LANG["phrase_sample_data"] = "Узорак података"; +$LANG["phrase_save_changes"] = "Сачувај промене"; +$LANG["phrase_search_keyword"] = "Кључна реч за претрагу"; +$LANG["phrase_security_settings"] = "Безбедносне поставке"; +$LANG["phrase_select_all"] = "Изабери све"; +$LANG["phrase_select_all_X_results"] = "Изабери све {\$numresults} Резултати"; +$LANG["phrase_select_all_on_page"] = "Изабери све на страни"; +$LANG["phrase_select_date"] = "Изаберите датум"; +$LANG["phrase_select_field"] = "Одаберите поља"; +$LANG["phrase_select_swatch"] = "Изаберите узорак"; +$LANG["phrase_selected_clients"] = "Изабрана Клијенти"; +$LANG["phrase_selected_views"] = "Изабрана Погледано"; +$LANG["phrase_send_email"] = "Пошаљи Е-маил"; +$LANG["phrase_send_test_email"] = "Пошаљи тест Е-маил"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Седнице Временско ограничење"; +$LANG["phrase_setting_value"] = "Постављање вредности"; +$LANG["phrase_setup_options"] = "Подешавање опције"; +$LANG["phrase_show_all"] = "Прикажи све"; +$LANG["phrase_show_form"] = "Прикажи формулар"; +$LANG["phrase_size_large"] = "Велика (текст)"; +$LANG["phrase_size_medium"] = "Средња (<= 256 знакова)"; +$LANG["phrase_size_small"] = "Мале (<= 20 знакова)"; +$LANG["phrase_size_tiny"] = "Тины (<= 5 знакова)"; +$LANG["phrase_size_very_large"] = "Веома велики (МЕДИУМТЕКСТ)"; +$LANG["phrase_skip_field"] = "Прескочите Поље"; +$LANG["phrase_skip_step"] = "Прескочите корак"; +$LANG["phrase_small_100px"] = "Мала (100пк)"; +$LANG["phrase_small_80px"] = "Мала (80пк)"; +$LANG["phrase_smart_fill"] = "Попуните смарт"; +$LANG["phrase_smart_fill_fields_from_c"] = "Смарт Попуните поља из:"; +$LANG["phrase_smart_fill_user_documentation"] = "Смарт Попуните Корисник Документација »"; +$LANG["phrase_sort_as"] = "Сортирај Као"; +$LANG["phrase_special_fields"] = "Специјална Поља"; +$LANG["phrase_standard_fields"] = "Стандардни Поља"; +$LANG["phrase_standard_filters"] = "Стандардни Филтери »"; +$LANG["phrase_step_1"] = "Корак 1"; +$LANG["phrase_step_2"] = "Корак 2"; +$LANG["phrase_step_3"] = "Корак 3"; +$LANG["phrase_step_4"] = "Корак 4"; +$LANG["phrase_step_5"] = "Корак 5"; +$LANG["phrase_step_6"] = "Корак 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Ознаке у облику трака поднесака"; +$LANG["phrase_subject_line"] = "Наслов линија"; +$LANG["phrase_submission_date"] = "Датум подношења"; +$LANG["phrase_submission_id"] = "Подношења Број"; +$LANG["phrase_submission_made"] = "Подношење је: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Подношење Тип"; +$LANG["phrase_submissions_per_page"] = "Поднесака по Страна"; +$LANG["phrase_system_check"] = "Проверите систем"; +$LANG["phrase_system_fields_no_validation"] = "Ви не можете додати проверу система поља."; +$LANG["phrase_system_time_offset"] = "Систем Време Офсет"; +$LANG["phrase_tab_label"] = "Картицу ознаке"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Тест фасцикле Дозволе"; +$LANG["phrase_test_submission"] = "Подношење тест"; +$LANG["phrase_test_submission_3"] = "3. Подношење тест"; +$LANG["phrase_test_submission_received"] = "Подношење тест Примљени"; +$LANG["phrase_text_and_html"] = "Текст и ХТМЛ -"; +$LANG["phrase_text_email"] = "Пошаљи текст"; +$LANG["phrase_text_template"] = "Текст шаблона"; +$LANG["phrase_the_previous_month"] = "Претходни месец"; +$LANG["phrase_theme_description"] = "Тема Опис"; +$LANG["phrase_theme_info"] = "Тема инфо"; +$LANG["phrase_tiny_30px"] = "Мали (30пк)"; +$LANG["phrase_tiny_50px"] = "Мали (50пк)"; +$LANG["phrase_total_results_c"] = "Резултати укупно:"; +$LANG["phrase_type_c"] = "Грешка Тип:"; +$LANG["phrase_unselect_all"] = "Све Унселецт"; +$LANG["phrase_update_accounts"] = "Упдате Рачуни"; +$LANG["phrase_update_email_template"] = "Ажурирајте емаил Шаблон"; +$LANG["phrase_update_field"] = "Ажурирај поље"; +$LANG["phrase_update_order"] = "Упдате Ордер"; +$LANG["phrase_update_view"] = "Упдате преглед"; +$LANG["phrase_upload_file"] = "Отпреми датотеке"; +$LANG["phrase_upload_files"] = "Отпреми датотеке"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Уплоад путању фасцикле"; +$LANG["phrase_upload_folder_url"] = "Уплоад фолдеру УРЛ адреса"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Користите подразумевану вредност?"; +$LANG["phrase_used_by_num_form_fields"] = "Користи # поља обрасца"; +$LANG["phrase_uses_swatches"] = "Користи Сватцхес"; +$LANG["phrase_valid_email"] = "Исправну е-маил"; +$LANG["phrase_validation_error"] = "Валидација Грешка"; +$LANG["phrase_validation_rule"] = "Валидација Правило"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Погледај група"; +$LANG["phrase_view_id"] = "Погледај ИД"; +$LANG["phrase_view_name"] = "Погледај Име"; +$LANG["phrase_view_placeholders"] = "Погледај Местодржачи"; +$LANG["phrase_view_submissions"] = "Погледај Поднесци"; +$LANG["phrase_view_uploaded_files"] = "приказ учитаних података"; +$LANG["phrase_viewing_range"] = "[прегледа {\$startnum} {\$endnum}]"; +$LANG["phrase_when_sent"] = "Када је послата"; +$LANG["phrase_when_submission_is_deleted"] = "Када је избрисана подношење"; +$LANG["phrase_when_submission_is_edited"] = "Када се уређује подношење"; +$LANG["phrase_who_can_access"] = "Ко може да приступи?"; +$LANG["phrase_word_limit_p"] = "Реч граница."; +$LANG["phrase_year_to_date"] = "Године до данас"; +$LANG["phrase_yes_for_all_views"] = "Да, за све Погледано"; +$LANG["phrase_yes_for_specific_views"] = "Да, за одређене Погледано"; +$LANG["phrase_your_account"] = "Ваш налог"; +$LANG["phrase_your_email"] = "Ваш Е-маил"; +$LANG["phrase_your_email_address"] = "Ваша емаил адреса"; +$LANG["processing_form_disabled"] = "Нажалост, овај облик је онемогућен."; +$LANG["processing_form_incomplete"] = "Нажалост, овај облик не изгледа да се у потпуности подесити из Формулар Алатке. Највероватнији узрок овог проблема је да сте уклонили "форм_тоолс_инитиализе_форм" скривена поља форми, али није потпуна све кораке "Додај Форма" процес.

    Молимо Вас да се пријавите и преглед конфигурација форму."; +$LANG["processing_init_complete"] = "Хвала! Пробне подношење је стављен преко успешно. Молимо Вас да се вратите образац Алатке Администрација панел и кликните на "Освежи" дугме на дну Додај Корак 3. Формулар страницу да завршите постављање формулара."; +$LANG["processing_invalid_form_id"] = "Нажалост, ово не изгледа да ваљаном облику личну карту."; +$LANG["processing_no_form_id"] = "процесс.пхп захтева образац ИД за обраду. Проверите да ли образац садржи скривене поље са именом "форм_тоолс_форм_ид" да је доношење дуж облик идентификације."; +$LANG["processing_no_form_url_for_recaptcha"] = "Алатке за образац није у стању да одреди где да преусмере када не успеју да правилно унесете ЦАПТЦХА. Молимо Вас да у скривене пролазе поље са именом форм_тоолс_форм_урл садржи УРЛ образац."; +$LANG["processing_no_post_vars"] = "процесс.пхп не прима никакве податке. Напомена: ово писмо се не може учитати директно у вашем претраживачу.
    Постарајте се да ваш формулар слање преко пост."; +$LANG["processing_no_redirect_url"] = "Подношење је обрађен коректно, али нисте навели преусмеравање УРЛ за овај облик! Уредите свој облик у формулару Алатке корисничког интерфејса и додати УРЛ адресу за преусмеравање."; +$LANG["special_language"] = "Serbian"; +$LANG["special_language_locale"] = "Serbian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Све нове рачуне клијената ће бити креиран са подешавањима и дозволе дефинисано испод. Да бисте заменили за поставку одређеног клијента, измените рачун клијента и посетите њихову картицу Поставке."; +$LANG["text_add_form_choose_integration_method"] = "Изаберите који метод желите да користите за интеграцију формулар са формом Алатке."; +$LANG["text_add_form_code_submission_benefits"] = "Овај метод користи формулар Алати АПИ-ја , су у главном Алати Формулар писмо. АПИ обезбеђује бројне корисне функције да би посао интегрисања формулар са Формулар Алати што је могуће једноставнија. Не постоје ограничења за то како се ваша формулар бити предат када користите АПИ-ја. Можете да пошаљете садржај у једном потезу, или страна по страна, ви можете да додате сопствене прилагођене страни сервера валидацију, ЦАПТЦХА слике; можете да изаберете да сада поднесе информацију, али само да кажем да би се приказао поднесак у Обрасцу Алати корисничког интерфејса неког каснијег датума (видети завршен Поднеске одељак у АПИ-ја помогне документације)."; +$LANG["text_add_form_code_submission_drawbacks"] = "У циљу да доставе своје податке начин путем ПХП-у, ваш формулар мора да се налази на истом сајту као овај Алати Формулар инсталације. Друго, за не-техничке и искушеник Формулар Алати корисника, овај метод може бити мало застрашујуће у почетку. Али постоји доста документације да вам помогне, укључујући и два једноставна упутства за помоћ интеграције Једно-и више-страница форме (то су повезани са на корак касније)."; +$LANG["text_add_form_direct_submission_benefits"] = "Ово је најједноставнији начин да пошаљете образац образац Алатке. То не захтева никакво познавање ПХП-а и захтева само веома мале промене у свој образац. То је одлично за мање форме у којој желите да само поднесе информације за базу података онда преусмери корисника "хвала" стране."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Овај метод је подношење врло једноставан за коришћење, али не даје много контроле за сложеније облике. Мулти-страници облика или форме који захтевају страни сервера валидација боље одговара да други начин: путем подношења обрасца Алатке АПИ-ја."; +$LANG["text_add_form_field_types1"] = "Скоро готов! Ова страница покушава да пронађе све ваше поља формулара и утврде њихове врсте области. Кликните Смарт Попуните тастер са десне стране да бисте почели. Ће бити само дозвољено да наставе када су све радње решено - питања која треба да обратите пажњу појављују у "акцију која би требало " колоне."; +$LANG["text_add_form_field_types2"] = "Ако ваш форма није у ХТМЛ-у, кликните на дугме Прескочи корак да бисте наставили. Ово се све касније бити конфигурисан."; +$LANG["text_add_form_field_types3"] = "Ово поново учитава садржај формулара (е). Напомена: ово ће преписати све измене које сте направили на овој страници."; +$LANG["text_add_form_field_types4"] = "У случају да наиђете на проблеме, кликните овде да прескочите овај корак. Све нерешених поља су постављени да користе подразумеване вредности. Ви касније могу да прилагођавају овим пољима."; +$LANG["text_add_form_field_types_manual_upload"] = "Ако сте били у могућности да смарт Попуните поља, можда ћете желети да покушате алтернативно решење: Уплоад копије форми у поља испод."; +$LANG["text_add_form_field_types_manual_upload2"] = "Напомена: не отпремите сирове ПХП страница (или неки други страни сервера код) - само отпремите ХТМЛ-верзије. Да бисте добили овај, Приказивање и меморисање страница из вашег веб претраживача."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Било је више поља који се не може наћи у облику странице коју сте навели. То је углавном вероватно изазвана једну од следећих опција:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Унели сте један или више облика УРЛ адресе вашег више страна форма погрешно."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Једној или више страница Вашег облику лозинком заштићеним и сценарио није могао да приступи страници."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Ви погрешно унели облик УРЛ-а."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Кликните овде за повратак на страницу Формулар Информације Провери подешавања."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Сте променили форму (е) након што теста предаје"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Кликните овде да ставе преко неког другог теста подношења."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Ваш облик је заштићен лозинком и сценарио није могао да приступи страници."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "У другом картицу / прозор овог претраживача, пријавите се на форму а затим кликните Освежи страницу дугме испод да покушају да поново пронађе поља."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Ако ништа од горе наведеног рада решења, можда ћете желети да испробате ручно учитавање форме за обраду ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Било је више поља који се не може наћи у облику странице коју сте навели. То је углавном вероватно изазвана један од ових:"; +$LANG["text_add_form_help_link"] = "Ако наиђете на било какве проблеме током ове кораке, покушајте очитавање корисничке документације ."; +$LANG["text_add_form_step_1_text_1"] = "Следеће странице су вас водити кроз кораке да бисте конфигурисали Алатке Формулар за чување своје поднеске образац. Пре него што наставите, проверите да:"; +$LANG["text_add_form_step_1_text_2"] = "образац је већ направљен и да је доступна преко УРЛ-а (лоцалхост је у реду)"; +$LANG["text_add_form_step_1_text_3"] = "су у стању да измените свој облик"; +$LANG["text_add_form_step_2_para_2"] = "Отворите образац у едитору по свом избору и промени свој надимак образац за следеће, укључујући и два скривена поља."; +$LANG["text_add_form_step_2_para_3"] = "Затим, отворите образац у Уеб прегледачу. Попуните у свакој области и доставља га. Након подношења, требало би да видите поруку обавештења. Када се ова порука приказује се вратите на ову страницу и кликните "рефресх" дугме испод. Када се овај процес заврши, видећете дугме испод наставити, водећи вас да следећи корак."; +$LANG["text_add_form_step_2_para_6"] = "У образац подношења захтева, укључују следеће вредности. Они се могу поставити директно преко ПХП или заједно прошли кроз сама форма. Испод су примери за сваку од њих. (\$) Варнаме је хеш (или асоцијативни низ) свих облика достављање информација - ово је обицно (\$ поствар) или (\$) сессионвар променљива, али може да буде прилагођена изграђен."; +$LANG["text_add_form_step_2_text_2"] = "Унесите УРЛ вашег "Хвала " страница овде. Ово је место где желите да људи буду усмерени на форму након поднет."; +$LANG["text_add_form_step_3_para_1"] = "Следи листа свих поља у форми предају. Молимо Вас да се испита свако поље и уклоните све што вам не треба за сваки уписани подношења. Ако избришете важеће поље случајно, или бисте желели да промените податке који се налазе по свом облику, вратите се на претходну страницу за слање новог подношење теста."; +$LANG["text_add_form_step_3_para_2"] = "Напомена: уколико шаљете више вредности помоћу поља за потврду или више изаберите поље, уверите се да поље за име завршава са [] карактери (види корисничкој документацији за више информација)."; +$LANG["text_add_form_step_3_text_1"] = "Ево где забава почиње! У овом тренутку, Форма Алати чека тестирање подношење из форме. Она ће користити овај формулар достављање да знате које информације треба да буду сачуване у бази података."; +$LANG["text_add_form_step_3_text_2"] = "које упућују на образац образац Алатке"; +$LANG["text_add_form_step_3_text_3"] = "користећи образац АПИ-Алатке"; +$LANG["text_add_form_step_3_text_4"] = "Да бисте лакше интегришу свој начин, предлажемо вам да прочитате један од наредних туториала:"; +$LANG["text_add_form_step_3_text_5"] = "Они су објаснили како да подесите свој облик у припреми за тест подношења захтева, укључују и друге информације које могу бити од помоћи. Линија ПХП потребно је:"; +$LANG["text_add_form_step_3_text_6"] = "Ово осигурава податке је заправо шаље образац Алатке. Када сте ставили преко теста подношење, кликните на дугме испод."; +$LANG["text_add_form_step_3_text_7"] = "На страници ПРЕТХОДНЕ свој коначни "тханк ыоу" страницу, будите сигурни да додате следећи параметар променљива \$ параметри:"; +$LANG["text_add_form_step_5_para_1"] = "База података је подешен да за ову форму и облик је активиран за коришћење. Ако сте направили подношење усмеравањем образац за процесс.пхп, вратите се на образац и уклоните скривене следеће области:"; +$LANG["text_add_form_step_5_para_2"] = "Затим посетите своју "тханк ыоу" страницу да испразните сесија. Када се то догодило, сви нови облик пријаве биће обрађене и обрасца чувају од Алатке. Покушајте што предају или два да провери све податке исправно учитавање."; +$LANG["text_add_form_step_5_para_3"] = "Ако желите да фино подесите ваш образац за опције као што су аутоматско слање е-поште, додавање додатних поља обрасца поље или прилагођавање облику поље врсте, можете уредити облику у било ком тренутку."; +$LANG["text_add_form_step_5_para_4"] = "Од свог обрасца садржи поља за учитавање датотека, мораћете да конфигуришете свако поље да бисте навели фасциклу датотеку учитате, шта је дозвољено и датотеке. Ово се може наћи на картици Приказ на страници измени образац."; +$LANG["text_add_form_step_5_para_5"] = "Ако је достављање послата путем АПИ-ја, промените фт_апи_инит_форм_паге линије на првој страници вашег формулар:"; +$LANG["text_add_submission_button"] = "Додај Подношење дугме појављује се само за приказе који су "може да дода поднеске " опција подешена на "Да "."; +$LANG["text_admin_email_placeholder_info"] = "Ово је е-маил адресу Образац Алатке администратора, дефинисана подешавања Вашег налога. То само излази е-маил адресу, па ако желите да користите као ХТМЛ веза, мораћете да га замотати у <а> команду, као што су то:
    <а хреф="маилто:{\$АДМИНЕМАИЛ}"> (\$ АДМИНЕМАИЛ) </>"; +$LANG["text_also_default_login_page_theme"] = "(Такође, подразумевано пријављивање тема)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Прво, молимо Вас да бирате тип форме."; +$LANG["text_client_form_page"] = "Ова страница приказује све форме и Гледања додељене овог клијента. Савет: да би за њих да виде поднесци облику, они треба да буду додељене најмање један преглед."; +$LANG["text_client_map_filters_desc1"] = "Клијент Мапа филтере вам ограничава поднеске који се појављују у овом Преглед по мапирање вредности у облику поља за вредности у налогу клијента."; +$LANG["text_client_no_forms"] = "Тренутно нема образаца за преглед."; +$LANG["text_client_welcome"] = "Добро дошли! Овај програм чува све информације поднела Вашем сајту посетилаца. Да бисте видели пријаве за одређени образац само кликните на везу ПОГЛЕД, или види са леве стране мени за навигацију и друге опције."; +$LANG["text_config_file_created"] = "Свој цонфиг.пхп фајл је направљен."; +$LANG["text_config_file_not_created"] = "Нисмо могли да направите фајл цонфиг.пхп. Мораћете да ручно направите датотеку."; +$LANG["text_config_file_not_created_instructions"] = "Копирајте и налепите садржај са одељку испод у датотеци под називом цонфиг.пхп и стави га преко ФТП-а на образац Алатке / глобални директоријум (фолдер који садржи још неколико других датотека и директоријума, једну датотеку под називом library.php)."; +$LANG["text_confirm_delete_form"] = "Да, желим да обришете овај образац"; +$LANG["text_create_admin_account"] = "Сада идемо да направите налог администратора. Ово се користи за управљање свим аспектима Образац алатке, као што је додавање форме и стварање корисничке рачуне клијената."; +$LANG["text_create_new_client_account"] = "Користите доњи образац да бисте креирали нови налог клијента. Сва поља су обавезна."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "ПХП-видимо {\$datefunctionlink} функцију опцијама за форматирање"; +$LANG["text_default_file_settings_page"] = "Ова страница дефинише датотеку учитате поставке Образац Алатке инсталације. Ова правила важе за све датотеке уплоад преко обрасца Алати, осим ако изричито Заобиђена за индивидуални облик поља. Напомена: Ако промените директоријум након учитавања датотеке су отпремљене, они ће бити аутоматски премештена у нови фолдер."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Пре него што наставите, морате да ажурирате / теме / подразумевано / фолдеру кеш да би пуном читају и пишу дозволе. Када се то уради, ова порука ће нестати и можете да инсталирате скрипту."; +$LANG["text_default_values_in_view"] = "Овај одељак је опциони. Сви поднесци створио са овим ставом ће садржати подразумеване вредности наведене овде."; +$LANG["text_delete_all_forms"] = "Желим да обриа̨ете све датотеке које су отпремили путем овог формулара"; +$LANG["text_delete_form_warning"] = "Јесте ли сигурни да желите да обришете овај образац? Ова радња не може поништити. Сви подаци ће бити трајно изгубљена!"; +$LANG["text_edit_admin_menu_page"] = "Можете мењати своје менију испод. Да ли би увек имати увид у све функције доступне у оквиру алатке образац, потребно следеће странице: Обрасци, Клијенти, Форуми, модули, Подеа̨авања, па Одјава."; +$LANG["text_edit_client_menu_page"] = "Овај одељак вам омогућава да прилагодите навигацију левој колони за сваког корисника. Можете креирати колико год клијент меније као и желите да доделите било који рачун једног од њих. По дефаулту постоје два менија: један за вас, администратора, а један за све корисничке рачуне клијената. Администраторски налог се могу мењати, али не уклањају."; +$LANG["text_edit_tab_summary"] = "Ако желите да групу поља овај приказ је у картице, само унесите имена картицу. Када завршите, изаберите одговарајућу картицу за свако поље групе у картицу Поља ."; +$LANG["text_edit_view_list_page"] = "Ова картица контролише која поља се појављују као колона на страници Подношење листинг, и неколико додатних подешавања за тим областима. Напомена: Препоручујемо да додате више од 4 или 5 од најважнијих поља у приказу."; +$LANG["text_email_settings_intro"] = "Ова страница вам омогућава да одредите који од свог поља обрасца е-поште и њихово одговарајуће чување имена. Када их дефинисати овде, можете их користити у вашем е-маил шаблона, као примаоци. Овај одељак је у потпуности опционална."; +$LANG["text_email_tab_summary"] = "Овај одељак вам омогућава да изгради било који број е-порука слати кад год се подноси образац и других тригера."; +$LANG["text_email_template_tab"] = "Овај одељак вам омогућава да одредите који садржај се појављује у е-маил. Ако желите да пошаљете као е-маил само текст или е-маил, само унесите вредност за тај део. Ако унесете вредност за обе, емаил ће бити послат на оба формата."; +$LANG["text_email_template_text_1"] = "Дошло је достављање врши преко формулара, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Дошло је достављање врши преко формулара, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Хвала за подношење!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Порука о грешци да покаже да ли терену не валидацију"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Спољни облици су облици који већ постоје на вашем сајту, или негде на вебу. Изаберите ову опцију ако имате сопствени облик који желите да се интегрише са формом Алатке."; +$LANG["text_fields_tab_summary"] = "Ова страница приказује све ваше поља формулара. Да контролишу како се појављују приликом претраживања поднесцима, погледајте Погледано картицу . Брисање поља на овој страни ће га избрисати из свих поднесака, па будите пажљиви!"; +$LANG["text_file_extension_info"] = "Унесите ознаке типа датотеке раздвојене зарезима (нпр. ЈПГ, ГИФ, ПНГ) или оставите празно да би било који тип датотеке."; +$LANG["text_file_field_placeholders_info"] = "Филе поља имају две посебне чуваре места: ФИЛЕУРЛ а филенаме. ФИЛЕУРЛ је пуни УРЛ фајла, тако да можете директно да га везу у е-поруке, само име датотеке име датотеке."; +$LANG["text_filters_page"] = "Само оне пријаве које испуњавају правила ви одредите испод ће се појавити у овом приказу."; +$LANG["text_filters_tips"] = "За савете о томе како да користите филтере подношења захтева, видите корисника документацију."; +$LANG["text_forgot_password"] = "Нема проблема. Само унесите своје корисничко име испод и своје податке за пријављивање ће бити послата на вашу емаил адресу на фајл. Ако сте заборавили ваше корисничко име, пошаљите емаил администратору сајта на {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Овај образац садржи једну или више датотека отпремање поља:"; +$LANG["text_form_placeholder_info"] = "Следећи чуваре места се може користити у било ком маил шаблон и језик чувар места пољу, без обзира на било Преглед е-маил шаблон је додељен. ПИТАЊЕ Чувари места су специфична форма питање; ОДГОВОР чуваре места се одговори на свако питање."; +$LANG["text_form_submission_date_placeholder"] = "Датум када је поднесак је направљен."; +$LANG["text_form_tools_form_url"] = "Пун УРЛ форму. Ово има само вредност за спољне облике."; +$LANG["text_form_tools_login_url"] = "УРЛ за пријаву Образац Алатке."; +$LANG["text_form_view_permission_info_admin"] = "Напомена: овај образац тренутно има администратор приступ типа, тако да ниједан од клијента рачуна ће моћи да виде овај приказ."; +$LANG["text_form_view_permission_info_private"] = "Напомена: овај образац тренутно има Приватне тип приступа тако јавном и приватном Опције ће овде бити ограничена на тај подскуп клијената."; +$LANG["text_ft_installed"] = "Честитамо, Форма Алатке успешно инсталиран!"; +$LANG["text_global_placeholder_info"] = "Ови чувари места се могу користити у било шаблон и било ком облику."; +$LANG["text_group_name_explanation"] = "За поља додаје кроз процес Додај образац, ова вредност је Попуњена да приказује текст поље било какве користи вредност. Можда ћете желети да га мењају како би се боље описали садржаја."; +$LANG["text_install_create_config_file"] = "Образац Алатке чува свој сервер базе података и подешавања у датотеци под називом цонфиг.пхп, нашао у свом / глобалном / фолдеру. Кликните на "Креирај Датотека" и дугме за аутоматско генерисање датотека на свом серверу."; +$LANG["text_install_create_database_tables"] = "Сада идемо да креирате образац Алатке табела базе података. Овај корак захтева саме базе података за већ креиран. Ако нисте сигурни како то да урадите, обратите се свом добављачу услуге хостинга."; +$LANG["text_install_db_tables_error_tip_1"] = ""Непозната МыСКЛ-сервер хост" обично значи да је хоста коју сте навели нетачне. Можда пробати поставку то "лоцалхост" - ово је уобичајен начин да се односи на "локалне" базе података на Уеб серверу."; +$LANG["text_install_db_tables_error_tip_2"] = ""Не може да се повеже са локалним МыСКЛ серверу кроз утичницу" подразумева базе података хоста поље је опет нетачно."; +$LANG["text_install_db_tables_error_tip_3"] = ""Приступ одбијен за корисника:" значи да постоји проблем са ваше корисничко име / лозинку комбинацију."; +$LANG["text_install_db_tables_error_tip_4"] = ""Приступ одбијен за корисника: ... за базе података ..." значи да, иако је ваше корисничко име и лозинку коју сте добили је исправна, да је у могућности да повежете одређену базу података са тог налога. Ово може да значи да је или ваше име базе података нетачан, или да је овај кориснички налог који није повезан са том базе података."; +$LANG["text_install_email_content_text"] = "На нашој веб страници има пуно ресурса који вам помажу да започнете, укључујући нашу онлине документацију (хттпс://доцс.формтоолс.орг) и туторијале (хттпс://доцс.формтоолс.орг/туториалс). Ако утврдите да сте заглављени или имате питање, поставите питање о гитхуб-у (хттпс://гитхуб.цом/формтоолс/цоре/иссуес/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Извините, образац Алати неће моћи да се извршавају на вашем серверу. Кликните овде за минималне услове."; +$LANG["text_install_system_check"] = "Ова страница ради мало тестове на свом систему како би то могли да покренете алатке формулар."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Интерни облици постоје само у оквиру Форма Алати - нису на другом месту на вашем сајту. Само Алати Формулар корисничких налога ће имати приступ форму. Изаберите ову опцију ако немате постојећи образац."; +$LANG["text_internal_form_intro"] = "Користите форму испод да бисте креирали нову Интерна облику. Сва подешавања, укључујући и број и садржај обрасца поља могу бити да се промени и конфигурисан касније."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Да би се пријавити и користити формулар Алатке, морате да имате омогућен ЈаваСцрипт у свом прегледачу. Молимо Вас да омогућите га сада, и кликните на дугме Освежи у прегледачу."; +$LANG["text_last_modified_date_explanation_c"] = "Последњи пут ово је подношење пут. За нове пријаве, то је исто као:"; +$LANG["text_limit_email_content_desc"] = "Ова опција ради само за ХТМЛ и текст садржаја генерисане са Смарти петљи."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(само листе Погледи са једном или више филтера дефинисаних образаца)"; +$LANG["text_log_in_to_ft"] = "Пријавите се на образац Алатке"; +$LANG["text_login"] = "Молимо пријавите се испод да бисте приступили (\$) Име_програма Администрација табли. Ако сте заборавили лозинку, кликните овде."; +$LANG["text_login_info"] = "Као што је захтевао, овде је ваше информације за пријављивање."; +$LANG["text_name_of_form"] = "Назив обрасца."; +$LANG["text_no_clients"] = "Тренутно нема коментара о клијентима у бази података. Да бисте додали нови налог клијента, кликните на дугме Додај клијенте."; +$LANG["text_no_clients_found"] = "Ниједан клијент није пронађена. Пробајте ширење критеријуме претраге."; +$LANG["text_no_fields_in_view"] = "Ово гледиште нема поља у њему. Кликните на линк испод."; +$LANG["text_no_forms"] = "Тренутно не постоје форме у базу података. Да додате нови образац, кликните на дугме Додај формулар испод."; +$LANG["text_no_forms_found"] = "Нема облици су пронађени."; +$LANG["text_no_forms_found_search"] = "Нема облици су пронађени. Покушајте ширење Вашим критеријумима."; +$LANG["text_no_modules_found"] = "Нема модули су пронађена. Пробајте ширење критеријуме претраге."; +$LANG["text_no_recipients_added"] = "Нема примаоци имају додат."; +$LANG["text_no_search_results"] = "Не постоје резултати за овај критеријум претраге / преглед."; +$LANG["text_no_submissions_found"] = "Нажалост, нема пријаве су пронађени."; +$LANG["text_no_themes"] = "Не морате све теме дефинисане. Кликните на дугме испод да освежите своју листу тема, или проверите Алати документацију Формулар корисника за информације о додавању теме."; +$LANG["text_non_deletable_fields"] = "Ово поље се користи од стране Цоре скрипту и не могу се мењати или избрисани без изазивања некомпатибилности. Ако желите да извршите промене на тип поља, направите копију и изменити копију."; +$LANG["text_option_list_group_explanation"] = "Ако је то изабран, омогућава да се група опције. Како групе се приказују зависи од тип поља користећи ову опцију листе."; +$LANG["text_option_list_page"] = "Радио дугмад, поља за потврђивање, падајућим листама, и мулти-избор Падајућа листа унутар поља све пружају кориснику више опција од којих они могу изабрати један или више ставки. На Обрасцу Алати, они су познати као Опција листе. Генерално, то су аутоматски креира Додај спољни облик процеса, али можете ручно да додате или уредите листе опција доле ако ваш садржај формулар промене или вам конструисати поља која се користе само интерно."; +$LANG["text_option_list_used_by_fields"] = "Ова опција Листа се користи од стране више поља формулара. Ако ажурирате испод информација, то ће бити промењена за све области (видети поља формулара да бисте видели листу поља). Ако желите да ажурирате вредности за једну или подскуп поља која су тренутно додељене, кликните овде да креирате нову листу опција са истим вредностима као што је ова. Тада можете да доделите поља формулара желите да се новој групи."; +$LANG["text_public_form_omit_list_page"] = "Јавни облици дати корист свих рачуна клијента пустити им приступ без потребе да ручно доделити сваком клијенту на њих. Ова страница вам омогућава означавање оне клијенте који не могу да приступите овој форми, иако је означена као јавни формулар."; +$LANG["text_public_view_omit_list_page"] = "Јавни прикази дају предност пустити свих рачуна клијента им приступ без потребе да ручно доделити сваком клијенту на њих. Ова страница вам омогућава означавање оне клијенте који не могу приступити овом конкретном преглед."; +$LANG["text_reference_tab_info"] = "Ова страница приказује све чуваре места на располагању за ваш образац. Чувари места су стрингови који се могу користити у емаил шаблона, и поља означена са посебним чувар места икона . Када је ступио на терену, они су динамички конвертовани у одговарајуће вредности када је поље посматра или е-маил је послат."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Прегледајте корисника документацију"; +$LANG["text_send_email_from_edit_submission_page"] = "Укључите ову опцију за слање е-маил из Измени Подношење странице"; +$LANG["text_smart_fill_option_list_problem"] = "Нисмо били у могућности да смарт Попуните опције области. Међутим, као алтернатива, можете покушати да отпремите копију облику странице у поље испод. Напомена: не отпремите сирове ПХП страница (или неки други страни сервера код) - само отпремите ХТМЛ верзија. Да бисте добили овај, Приказивање и меморисање страница из вашег веб претраживача."; +$LANG["text_submission_ip_address"] = "ИП адресе корисника који су подношење."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Користите формулар испод да видите или сами или пошаљите е-маил генерисан из овог шаблона. Е је само послат на е-маил наведен у наставку, главни, ЦЦ и Бцц примаоцима е-маил адреса се занемарују приликом тестирања."; +$LANG["text_test_email_templates_no_submissions"] = "У циљу провере свој е-маил шаблона, прво морате да ставите преко најмање једног облика потчињености."; +$LANG["text_theme_page_intro"] = "Следи листа свих ваших тема. Кликните на сличицу да бисте видели већу пример стилова тему'с. "Омогућио" одређује да ли је поље за потврду или не ту тему могу бити изабрани од стране клијената. Да бисте прегледали све доступне теме, посетите сајт Алатке образац."; +$LANG["text_tutorial_adding_first_form"] = "Туториал: Додавање своју прву форму!"; +$LANG["text_unique_submission_id"] = "Подношење јединствени идентификатор."; +$LANG["text_unused_option_list"] = "Ова опција списак се не користи од стране било ког облика поља."; +$LANG["text_upgraded"] = "Инсталације је надограђен на {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Ова опција Листа се користи од стране следећих поља."; +$LANG["text_view_fields_info"] = "Ова картица контролише која поља се појавити када мењате поднесак у овом приказу, њихов редослед и да ли су променљивих или не."; +$LANG["text_view_tab_summary"] = "Ова картица вам омогућава да направите различите начине за груписање и организовати податке. Прегледи вам омогућавају да креирате прилагођене подскупове ваше податке обрасца да га поделите на комаде управљати, као и да ограничи оно што клијенти могу видети или мењати."; +$LANG["validation_account_disabled"] = "Жао нам је, ваш налог је онемогућен."; +$LANG["validation_account_not_recognized"] = "Нажалост, то име није препознат."; +$LANG["validation_account_not_recognized_info"] = "Нажалост, то име није пронађено. Молимо покушајте поново, или контактирајте администратора сајта на адресу испод."; +$LANG["validation_account_pending"] = "Ваш кориснички налог чека одобрење од стране администратора."; +$LANG["validation_check_delete_client"] = "Јесте ли сигурни да желите да обришете овај налог клијента?"; +$LANG["validation_client_password_missing_number"] = "Клијент лозинка мора садржати најмање један број (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Клијент лозинка мора да садржи најмање један од следећих знакова: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Клијент лозинка мора да садржи најмање једно слово велико."; +$LANG["validation_client_password_too_short"] = "Клијент лозинка треба да буде најмање {\$number} знакова."; +$LANG["validation_col_name_is_reserved_word"] = "Нажалост, ова база података име колоне је резервисан рад у МыСКЛ. Молимо преименујте га!"; +$LANG["validation_db_name"] = "Имена база података не могу садржавати периоде или косе."; +$LANG["validation_db_not_updated_invalid_input"] = "Базе података није могла бити ажурирана. Молимо проверите да ли сте унели вредности су валидне."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Жао нам је, подразумевани администратор и клијент теме мора увек да буде омогућен."; +$LANG["validation_default_phone_num_required"] = "Молимо Вас да попуните телефонски број за <б> { \$ области} </ б> - само бројеви."; +$LANG["validation_default_rule_alpha"] = "Молим вас само унесете слова и бројеве за <б> { \$ области} </ б>."; +$LANG["validation_default_rule_letters_only"] = "Молимо Вас да унесете само слова за <б> { \$ области} </ б>."; +$LANG["validation_default_rule_numbers_only"] = "Молим вас само унос бројева за <б> { \$ области} </ б>."; +$LANG["validation_default_rule_required"] = "Молимо Вас да унесете вредност за <б> { \$ области} </ б>."; +$LANG["validation_default_rule_valid_email"] = "Унесите важећу адресу е-поште за <б> { \$ области} </ б>."; +$LANG["validation_delete_form_confirm"] = "Молимо Вас да потврдите поље да бисте потврдили да желите да обришете овај образац."; +$LANG["validation_delete_non_empty_option_list"] = "Упозорење! Ова опција Листа се користи од стране једног или више поља формулара. Брисање ће учинити тим областима престаје да ради исправно."; +$LANG["validation_display_names_incomplete"] = "Молимо Вас да унесете вредност за све Приказ имена, или кликните на опцију Попуни паметно да их унесете динамички."; +$LANG["validation_duplicate_form_field_name"] = "Не можете имати више поља са истим име поља."; +$LANG["validation_email_not_found_or_invalid"] = "Жао нам је, е повезана са вашим налогом или не постоји или је неважећа."; +$LANG["validation_folder_invalid_permissions"] = "Како би покренули овај тест, дозвола треба да буду постављена на учитавање фолдера да би за читање и писање фајлове (777 на Уникс)."; +$LANG["validation_folder_not_writable"] = "Ова фасцикла није уритеабле."; +$LANG["validation_internal_form_too_many_fields"] = "Нажалост, можете само створио форме са пољима 1000 или мање."; +$LANG["validation_invalid_admin_email"] = "Молимо унесите адресу е-поште важећа админстратор'с."; +$LANG["validation_invalid_admin_username"] = "Ваше корисничко име може састојати само од алфанумеричких знакова (АЗ и 0-9)."; +$LANG["validation_invalid_client_username"] = "Корисничко име клијента може да се састоји само од алфанумеричких карактера (АЗ и 0-9)."; +$LANG["validation_invalid_client_username2"] = "Нажалост, име може да садржи само слова, бројеве и доњу карактер. Молимо Вас унесите ново корисничко име."; +$LANG["validation_invalid_column_name"] = "Имена колона може бити само алфанумеричке (аз, 0-9). Молимо проверите имена колона."; +$LANG["validation_invalid_custom_from_email"] = "Молимо Вас да унесете важећи обичај 'Од' адресу."; +$LANG["validation_invalid_custom_reply_to_email"] = "Молимо Вас да унесете важећи обичај 'одговор' е-маил адресу."; +$LANG["validation_invalid_default_sessions_timeout"] = "Молимо Вас да унесете важећу вредност (број) за подразумевана сесија тајмаут."; +$LANG["validation_invalid_email"] = "Молимо Вас да унесете исправну емаил адресу."; +$LANG["validation_invalid_email_id"] = "Нажалост, то је исправан е-маил ИД-а."; +$LANG["validation_invalid_folder"] = "Нажалост, ово не изгледа да важи фасциклу."; +$LANG["validation_invalid_form_field_names"] = "Поља обрасца може бити само алфанумеричке и доња (аз, 0-9, _), без размака."; +$LANG["validation_invalid_num_clients_per_page"] = "Молимо унесите само бројеве у НУМ Клијенти по страници поље."; +$LANG["validation_invalid_num_emails_per_page"] = "Молимо унесите само цифре за е-маил по страници."; +$LANG["validation_invalid_num_form_fields"] = "Молим вас само унос бројева у Број поља поља."; +$LANG["validation_invalid_num_forms_per_page"] = "Молимо унесите само бројеве у НУМ Обрасци по страници поље."; +$LANG["validation_invalid_num_menus_per_page"] = "Молимо унесите само цифре за меније на страници."; +$LANG["validation_invalid_num_modules_per_page"] = "Молимо унесите само бројеве у НУМ модула по страници поље."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Молим вас само унос бројева у листама Број Опција по страни поља."; +$LANG["validation_invalid_num_submissions_per_page"] = "Молимо Вас да унесете важећи број поднесака по страници."; +$LANG["validation_invalid_sessions_timeout"] = "Молимо Вас да унесете важећу тајмаут сесије (само цели бројеви)."; +$LANG["validation_invalid_tab_assign_values"] = "Молимо унесите само бројеве у 'са' и 'да' поља."; +$LANG["validation_invalid_table_prefix"] = "Молимо Вас да унесете префикс базе података се састоји од слова и подвлаку само."; +$LANG["validation_invalid_upload_folder"] = "Сервер је инсталација ПХП има опцију за неважеће уплоад_тмп_дир вредност. "{\$upload_folder}" није исправан директоријум."; +$LANG["validation_invalid_url"] = "Молимо Вас да унесете важећу адресу."; +$LANG["validation_invalid_username"] = "Ваше корисничко име може да садржи само алфанумеричке знакове (АЗ и 0-9)."; +$LANG["validation_is_form_active"] = "Наведите да ли је форма активна или не."; +$LANG["validation_menu_name_taken"] = "Нажалост, овај мени име је већ заузето. Молимо Вас да изаберете ново име."; +$LANG["validation_modules_search_no_status"] = "Молимо Вас да одаберете било омогуће или онемогуће поља за потврду."; +$LANG["validation_no_access_type"] = "Молимо Вас да унесете врсту приступа."; +$LANG["validation_no_account_logout_url"] = "Молимо Вас унесите Ваше Логоут УРЛ-а."; +$LANG["validation_no_account_password_confirmed"] = "Молимо Вас да поново унесете своју нову лозинку."; +$LANG["validation_no_account_password_confirmed2"] = "Молимо Вас да поново унесете нову лозинку."; +$LANG["validation_no_admin_email"] = "Молимо Вас да унесете емаил адресу администратора."; +$LANG["validation_no_admin_theme"] = "Молимо Вас да изаберете тему за администраторски налог."; +$LANG["validation_no_admin_theme_swatch"] = "Молимо изаберите узорак за администратора тему."; +$LANG["validation_no_client_email"] = "Молимо Вас да унесете емаил адресу клијента."; +$LANG["validation_no_client_first_name"] = "Молимо Вас да унесете име клијента."; +$LANG["validation_no_client_last_name"] = "Молимо унесите презиме клијента."; +$LANG["validation_no_client_login_page"] = "Наведите које стране клијента треба да буду преусмерени када се пријавите"; +$LANG["validation_no_client_password"] = "Молимо Вас да унесете лозинку клијента."; +$LANG["validation_no_client_theme_swatch"] = "Молимо Вас да одаберете подразумевани узорак за клијентске налоге."; +$LANG["validation_no_client_username"] = "Молимо Вас да унесете корисничко име клијента."; +$LANG["validation_no_column_name"] = "Молимо Вас да унесете сва имена колона, или кликните Смарт Филл дугме како би аутоматски да их попуни."; +$LANG["validation_no_column_selected"] = "Молимо Вас да изаберете најмање једно поље да се појави као колона на страници подношење унос."; +$LANG["validation_no_custom_from_email"] = "Молимо Вас да унесете прилагођену "Од 'адресу."; +$LANG["validation_no_custom_recipient_email"] = "Молимо Вас да унесете прилагођени адресу примаоца."; +$LANG["validation_no_custom_reply_to_email"] = "Молимо Вас да унесете прилагођени 'одговор' е-маил адресу."; +$LANG["validation_no_date_format"] = "Молимо Вас да унесете формату датума."; +$LANG["validation_no_db_column_single"] = "Унесите назив базе података колону."; +$LANG["validation_no_db_hostname"] = "Молимо Вас да унесете хостнаме базе података."; +$LANG["validation_no_db_name"] = "Молимо Вас да унесете име базе података."; +$LANG["validation_no_db_username"] = "Молимо Вас да унесете корисничко име базе података рачун."; +$LANG["validation_no_default_client_theme"] = "Молимо Вас да изаберете подразумевану тему за све нове рачуне клијената."; +$LANG["validation_no_default_language"] = "Молимо Вас да изаберете подразумевани језик за инсталацију Образац Алатке."; +$LANG["validation_no_default_sessions_timeout"] = "Молимо Вас да унесете подразумевана сесија тајмаут за корисничких налога."; +$LANG["validation_no_display_text"] = "Молимо Вас да унесете Текст Прикажи за свако поље."; +$LANG["validation_no_display_text_single"] = "Молимо Вас да унесете вредност приказ текста."; +$LANG["validation_no_edit_submission_page_label"] = "Молимо Вас да унесете Измени субмиссион страници налепницу."; +$LANG["validation_no_email"] = "Молимо унесите Вашу емаил адресу."; +$LANG["validation_no_email_config_field"] = "Молимо вас да наведете који облик поља је поље емаил."; +$LANG["validation_no_email_content"] = "Молимо Вас да унесете е-маил садржај за бар један од формата (ХТМЛ или текст)."; +$LANG["validation_no_email_from_field"] = "Молимо Вас е-маил 'од' поље."; +$LANG["validation_no_email_template_name"] = "Молимо Вас да унесете емаил шаблона."; +$LANG["validation_no_email_template_view_id"] = "Молимо одаберите Види да овај емаил шаблона које би требало да буде мапирана."; +$LANG["validation_no_email_template_view_mapping_value"] = "Молимо Вас да наведете е-маил када би требало да буде послата."; +$LANG["validation_no_enabled_themes"] = "Проверите да је омогућена барем једну тему."; +$LANG["validation_no_first_name"] = "Молимо Вас да унесете своје име."; +$LANG["validation_no_form_field_name"] = "Молимо Вас да унесете имена свих поља обрасца."; +$LANG["validation_no_form_field_single"] = "Молимо Вас да унесете вредност на Поље Обрасца."; +$LANG["validation_no_form_id"] = "Број облик није био наведен. Молимо Вас пријавите се и покушајте поново."; +$LANG["validation_no_form_name"] = "Молимо Вас да унесете назив обрасца."; +$LANG["validation_no_form_url"] = "Молимо Вас да унесете УРЛ адресу облика."; +$LANG["validation_no_last_name"] = "Молимо Вас унесите Ваше презиме."; +$LANG["validation_no_login_page"] = "Молимо Вас да наведете које странице желите да буде послат сваки пут када се пријавим?"; +$LANG["validation_no_logout_url"] = "Молимо Вас да унесете УРЛ адресу за одјаву."; +$LANG["validation_no_main_email_recipient"] = "Молимо Вас да унесете најмање један главни е-маил примаоца (тј. не Цц или Бцц)."; +$LANG["validation_no_menu"] = "Молимо Вас да изаберете мени за овај кориснички налог."; +$LANG["validation_no_menu_id"] = "Молимо изаберите мени."; +$LANG["validation_no_num_clients_per_page"] = "Молимо Вас да унесете број рачуна клијента по страници."; +$LANG["validation_no_num_emails_per_page"] = "Молимо Вас унесите број е-порука на листи по страници."; +$LANG["validation_no_num_form_fields"] = "Молимо Вас да унесете број поља за ваш образац."; +$LANG["validation_no_num_forms_per_page"] = "Молимо Вас унесите број облика по страни."; +$LANG["validation_no_num_menus_per_page"] = "Молимо Вас унесите број менија на листи по страници."; +$LANG["validation_no_num_modules_per_page"] = "Молимо Вас унесите број модула по страници."; +$LANG["validation_no_num_option_lists_per_page"] = "Молимо Вас да унесете број опција листи по страни."; +$LANG["validation_no_num_submissions_per_page"] = "Молимо Вас унесите број поднесака за приказ по страници."; +$LANG["validation_no_option_list_name"] = "Унесите назив опције листе."; +$LANG["validation_no_page_titles"] = "Молимо Вас да унесете подразумевано наслова странице за корисничких налога."; +$LANG["validation_no_password"] = "Молимо Вас да унесете лозинку."; +$LANG["validation_no_program_name"] = "Молимо Вас да унесете име програма."; +$LANG["validation_no_second_password"] = "Молимо Вас да поново унесете лозинку."; +$LANG["validation_no_sessions_timeout"] = "Молимо Вас да унесете временски период заседања."; +$LANG["validation_no_smart_fill_values"] = "Молимо Вас да унесете име поља обрасца и УРЛ образац."; +$LANG["validation_no_table_prefix"] = "Молимо Вас да унесете префикс базе података."; +$LANG["validation_no_tabs_defined"] = "Нема дефинисаних картице"; +$LANG["validation_no_test_email_recipient"] = "Молимо Вас да унесете е-адресу где треба послати е-теста."; +$LANG["validation_no_test_email_submission_id"] = "Молимо Вас да унесете ИД број подношења."; +$LANG["validation_no_theme"] = "Молимо изаберите тему."; +$LANG["validation_no_theme_swatch"] = "Молимо изаберите узорак за изабрану тему."; +$LANG["validation_no_timezone_offset"] = "Молимо Вас да унесете временску зону офсет."; +$LANG["validation_no_titles"] = "Молимо Вас да унесете наслова странице."; +$LANG["validation_no_two_column_names"] = "Жао нам је, не можете да унесете два пута исти назив колоне базе података."; +$LANG["validation_no_ui_language"] = "Молимо Вас да одаберете језик за интерфејс."; +$LANG["validation_no_url"] = "Молимо Вас да унесете УРЛ адресу."; +$LANG["validation_no_username"] = "Молимо Вас унесите ваше корисничко име."; +$LANG["validation_no_username_or_js"] = "Морате да унесете корисничко име. Молимо да активирате ЈаваСцрипт у свом прегледачу."; +$LANG["validation_no_view_fields"] = "Ваш Приказ не садржи никакве поља! Морате да доделите најмање једно поље да постоји нешто да се појаве у ите."; +$LANG["validation_no_view_fields_selected"] = "Молимо Вас да изаберете једно или више поља за додавање на преглед."; +$LANG["validation_no_view_name"] = "Молимо Вас да унесете назив вашег преглед."; +$LANG["validation_num_rows_to_add"] = "Молимо Вас унесите број редова да додате."; +$LANG["validation_option_list_name_taken"] = "Нажалост, ова опција Име листе је већ предузете. Молимо Вас да одаберете ново име."; +$LANG["validation_password_in_password_history"] = "Из сигурносних разлога, не можете унети исту лозинку као и било који од последњих {\$history_size} лозинке. Молимо Вас да унесете лозинку."; +$LANG["validation_passwords_different"] = "Проверите да ли су исте лозинке."; +$LANG["validation_please_enter_search_date_range"] = "Молимо изаберите опсег датума за претрагу."; +$LANG["validation_please_enter_search_keyword"] = "Молимо унесите кључну реч за претрагу."; +$LANG["validation_select_field_type"] = "Молимо изаберите тип поља."; +$LANG["validation_select_submissions_to_copy"] = "Молимо да одаберете оне поднеске које желите да копирате."; +$LANG["validation_select_submissions_to_delete"] = "Молимо Вас да изаберете оне пријаве које желите да избришете."; +$LANG["validation_smart_fill_cannot_fill"] = "Нажалост, нисмо могли да попуните ово поље."; +$LANG["validation_smart_fill_invalid_field_type"] = "Нисмо успели да пронађемо пољу, али није падајуће, поље за потврду или радио групи."; +$LANG["validation_smart_fill_no_field_found"] = "Нажалост, нисмо могли пронаћи образац поље са тим именом на страници навели."; +$LANG["validation_smart_fill_no_page"] = "Молимо Вас пронађите страницу која садржи поље које желите да попуне паметно."; +$LANG["validation_smart_fill_upload_all_pages"] = "Отпреми све странице у форми."; +$LANG["validation_upload_folder_not_writable"] = "Ова привремена Уплоад фасциклу одредио Ваш ПХП-инсталација не може писати. Док не решите овај, фајлови се не могу уплоад преко обрасца Алати (или било коју другу ПХП-програма). Обратите се свом добављачу услуге хостинга."; +$LANG["validation_upload_html_files_only"] = "Отпремајте само ХТМЛ датотеке."; +$LANG["validation_username_taken"] = "Жао нам је, корисничко име је већ заузето. Молимо Вас да унесете друго корисничко име."; +$LANG["validation_wrong_password"] = "Жао нам је, да се лозинка не одговара."; +$LANG["word_about"] = "О"; +$LANG["word_access"] = "Приступ"; +$LANG["word_account"] = "Налог"; +$LANG["word_account_sp"] = "Рачун (е)"; +$LANG["word_accounts"] = "Рачуни"; +$LANG["word_action"] = "Акција"; +$LANG["word_active"] = "Активно"; +$LANG["word_add"] = "Додати"; +$LANG["word_add_rightarrow"] = "Додај »"; +$LANG["word_add_uc_rightarrow"] = "ДОДАЈ »"; +$LANG["word_administration"] = "Администрација"; +$LANG["word_administrator"] = "Администратор"; +$LANG["word_after"] = "Након"; +$LANG["word_aquamarine"] = "Аквамарин"; +$LANG["word_asc"] = "Асц"; +$LANG["word_author"] = "Аутор"; +$LANG["word_author_c"] = "Аутор:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«назад"; +$LANG["word_bcc_c"] = "Бцц:"; +$LANG["word_before"] = "Пре"; +$LANG["word_benefits"] = "Предности"; +$LANG["word_blue"] = "Плава"; +$LANG["word_cancel"] = "Отказати"; +$LANG["word_cc_c"] = "Цц:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Поља за потврду"; +$LANG["word_checklist"] = "Цхецклист"; +$LANG["word_client"] = "Клијент"; +$LANG["word_client_c"] = "Клијент:"; +$LANG["word_clients"] = "Клијенти"; +$LANG["word_close"] = "Затворити"; +$LANG["word_code"] = "Шифра"; +$LANG["word_column"] = "Колона"; +$LANG["word_columns"] = "Колоне"; +$LANG["word_columns_sp"] = "Колона (а)"; +$LANG["word_complete"] = "Комплетан"; +$LANG["word_configuration"] = "Конфигурација"; +$LANG["word_content"] = "Садржај"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Настави »"; +$LANG["word_copy"] = "Копирај"; +$LANG["word_custom"] = "Прилагођен"; +$LANG["word_data"] = "Подаци"; +$LANG["word_date"] = "Датум"; +$LANG["word_debugging_c"] = "Дебуггинг:"; +$LANG["word_delete"] = "Избрисати"; +$LANG["word_desc"] = "Десц"; +$LANG["word_direct"] = "Директан"; +$LANG["word_disabled"] = "Онемогућен"; +$LANG["word_documentation"] = "Документација"; +$LANG["word_done"] = "Сачињено"; +$LANG["word_drawbacks"] = "Мане"; +$LANG["word_dropdown"] = "Дропдоун"; +$LANG["word_edit"] = "Измени"; +$LANG["word_editable"] = "Едитабле"; +$LANG["word_email"] = "Е-маил"; +$LANG["word_email_c"] = "Емаил:"; +$LANG["word_emails"] = "Е-маил"; +$LANG["word_enabled"] = "Омогућено"; +$LANG["word_equals"] = "Једнако"; +$LANG["word_error"] = "Грешка"; +$LANG["word_error_c"] = "Грешка:"; +$LANG["word_examples_c"] = "Примери:"; +$LANG["word_external"] = "Екстерни"; +$LANG["word_fail"] = "Фаил"; +$LANG["word_field"] = "Поље"; +$LANG["word_field_sp"] = "Поље (а)"; +$LANG["word_fields"] = "Поља"; +$LANG["word_fields_sp"] = "Поља (а)"; +$LANG["word_file"] = "Датотека"; +$LANG["word_file_b_uc"] = "[Филе]"; +$LANG["word_files"] = "Датотека"; +$LANG["word_filters"] = "Филтери"; +$LANG["word_filters_sp"] = "Филтер (е)"; +$LANG["word_for"] = "за"; +$LANG["word_form"] = "Облик"; +$LANG["word_form_c"] = "Облик:"; +$LANG["word_formatting"] = "Форматирање"; +$LANG["word_forms"] = "Обрасци"; +$LANG["word_found"] = "Пронађен / а"; +$LANG["word_from"] = "Од"; +$LANG["word_from_c"] = "Од:"; +$LANG["word_general"] = "Општи"; +$LANG["word_green"] = "Зелена"; +$LANG["word_grey"] = "Сива"; +$LANG["word_height"] = "Висина"; +$LANG["word_help"] = "Помоћи"; +$LANG["word_hidden"] = "Сакривен"; +$LANG["word_highlight"] = "Истаћи"; +$LANG["word_horizontal"] = "Хоризонтална"; +$LANG["word_hour"] = "Сат"; +$LANG["word_hours"] = "Сати"; +$LANG["word_html"] = "ХТМЛ -"; +$LANG["word_id"] = "Број"; +$LANG["word_image"] = "Имаге"; +$LANG["word_incomplete"] = "Непотпун"; +$LANG["word_install"] = "Инсталирајте"; +$LANG["word_installation"] = "Инсталација"; +$LANG["word_internal"] = "Интерни"; +$LANG["word_language"] = "Језик"; +$LANG["word_large"] = "Велики"; +$LANG["word_like"] = "Волети"; +$LANG["word_login"] = "Пријављивање"; +$LANG["word_logo"] = "Лого"; +$LANG["word_logout"] = "Одјава"; +$LANG["word_main"] = "Главни"; +$LANG["word_medium"] = "Средњи"; +$LANG["word_menu"] = "Мени"; +$LANG["word_menus"] = "Јеловници"; +$LANG["word_minutes"] = "минута"; +$LANG["word_misc"] = "Остало"; +$LANG["word_module"] = "Модул"; +$LANG["word_modules"] = "Модули"; +$LANG["word_na"] = "Н / А"; +$LANG["word_name"] = "Име"; +$LANG["word_name_c"] = "Име:"; +$LANG["word_never"] = "Никад"; +$LANG["word_next_rightarrow"] = "следећи »"; +$LANG["word_next_step_rightarrow"] = "Следећи корак »"; +$LANG["word_no"] = "Не"; +$LANG["word_none"] = "Ниједан"; +$LANG["word_notes"] = "Белешке"; +$LANG["word_notification"] = "Обавештење"; +$LANG["word_number"] = "Број"; +$LANG["word_off"] = "Искључено"; +$LANG["word_offline"] = "Оффлине"; +$LANG["word_okay"] = "У реду"; +$LANG["word_on"] = "Укључено"; +$LANG["word_online"] = "Онлине"; +$LANG["word_operator"] = "Оператор"; +$LANG["word_options"] = "Опције"; +$LANG["word_orange"] = "Поморанџа"; +$LANG["word_order"] = "Поруџбина"; +$LANG["word_other"] = "Остало"; +$LANG["word_other_c"] = "Остало:"; +$LANG["word_page"] = "Страна"; +$LANG["word_page_c"] = "Страница:"; +$LANG["word_pass"] = "Пасс"; +$LANG["word_password"] = "Лозинка"; +$LANG["word_password_c"] = "Лозинка:"; +$LANG["word_pending"] = "На чекању"; +$LANG["word_permissions"] = "Дозволе"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«претходни"; +$LANG["word_private"] = "Приватни"; +$LANG["word_public"] = "Јавни"; +$LANG["word_purple"] = "Љубичаста"; +$LANG["word_recipient"] = "Прималац"; +$LANG["word_recipient_sp"] = "Примаоца (е)"; +$LANG["word_red"] = "Црвена"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Уклонити"; +$LANG["word_remove_uc_leftarrow"] = "«уклони"; +$LANG["word_reply_to"] = "Одговор на"; +$LANG["word_reply_to_c"] = "Реплы-То:"; +$LANG["word_required"] = "Потребан"; +$LANG["word_reset"] = "Ресет"; +$LANG["word_resolved"] = "Решен"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "ред"; +$LANG["word_search"] = "Претраживати"; +$LANG["word_searchable"] = "Претраживање"; +$LANG["word_select"] = "Изаберите"; +$LANG["word_setting"] = "Поставка"; +$LANG["word_settings"] = "Подешавања"; +$LANG["word_show"] = "Приказивати"; +$LANG["word_size"] = "Величина"; +$LANG["word_skipped"] = "Прескочен"; +$LANG["word_small"] = "Мали"; +$LANG["word_solution"] = "Решење"; +$LANG["word_sortable"] = "Сортабле"; +$LANG["word_start"] = "Старт"; +$LANG["word_status"] = "Статус"; +$LANG["word_string"] = "Стринг"; +$LANG["word_subject"] = "Предмет"; +$LANG["word_subject_c"] = "Предмет"; +$LANG["word_submenu"] = "Подмени"; +$LANG["word_submission"] = "Подношење"; +$LANG["word_submissions"] = "Субмиссионс"; +$LANG["word_system"] = "Систем"; +$LANG["word_tab"] = "Таб"; +$LANG["word_tabs"] = "Табс"; +$LANG["word_tabs_sp"] = "Картицу (е)"; +$LANG["word_test"] = "Тест"; +$LANG["word_text"] = "Текст"; +$LANG["word_textarea"] = "Текстареа"; +$LANG["word_textbox"] = "Оквир"; +$LANG["word_theme"] = "Тема"; +$LANG["word_themes"] = "Теме"; +$LANG["word_time"] = "Време"; +$LANG["word_tiny"] = "Сићушни"; +$LANG["word_tips"] = "Савети"; +$LANG["word_today"] = "Данас"; +$LANG["word_truncate_q"] = "Окрњити?"; +$LANG["word_uninstall"] = "Деинсталација"; +$LANG["word_unknown"] = "Непознат"; +$LANG["word_update"] = "Ажурирати"; +$LANG["word_upgrade"] = "Надоградња"; +$LANG["word_url_c"] = "УРЛ адреса:"; +$LANG["word_user"] = "Корисник"; +$LANG["word_username"] = "Корисничко име"; +$LANG["word_username_c"] = "Корисничко име:"; +$LANG["word_validation"] = "Валидација"; +$LANG["word_value"] = "Вредност"; +$LANG["word_value_sp"] = "Вредност (и)"; +$LANG["word_verified"] = "Потврдити"; +$LANG["word_verify"] = "Верификовати"; +$LANG["word_version"] = "Верзија"; +$LANG["word_vertical"] = "Вертикална"; +$LANG["word_view"] = "Погледати"; +$LANG["word_views"] = "Прегледи"; +$LANG["word_warning"] = "Упозорење!"; +$LANG["word_warning_c"] = "Упозорење:"; +$LANG["word_web"] = "Уеб"; +$LANG["word_welcome"] = "Добро дошли!"; +$LANG["word_width_c"] = "ширина:"; +$LANG["word_words"] = "Речи"; +$LANG["word_wysiwyg"] = "УЫСИУЫГ"; +$LANG["word_yellow"] = "Жута"; +$LANG["word_yes"] = "Да"; \ No newline at end of file diff --git a/global/lang/sv.php b/global/lang/sv.php new file mode 100644 index 00000000..284792ff --- /dev/null +++ b/global/lang/sv.php @@ -0,0 +1,1219 @@ +Varning!Du har valt {\$num_selected_on_page} inskick på den här sidan och {\$num_selected_on_other_pages} på andra sidor. Välj ett av följande alternativ:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Varning! Du har inte valt några inskick på den här sidan, men du har valt {\$num_selected_on_other_pages} på andra sidor. Du behöver bekräfta att du vill ta bort dessa inskick.
    "; +$LANG["confirm_delete_view"] = "Är du säker på att du vill ta bort denna vy?"; +$LANG["confirm_refresh_page"] = "Är du säker på att du vill ladda om sidan? Detta innebär att du tappar bort alla ev ändringar som du har gjort på sidan."; +$LANG["confirm_save_change_before_redirect"] = "Ett eller flera fält har uppdaterats. Vill du spara ändringarna innan omdirigering?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Är du säker på att du vill låta funktionen Smart Fill (smart ifyllning) fylla i databasens kolumnnamn? Detta kommer att skriva över det du ev redan fyllt i."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Detta alternativ genererar automatiskt namnen på databaskolumnerna baserat på fälten för visningstext, så att innehållet i databasens tabeller blir lättare att läsa."; +$LANG["confirm_smart_fill_display_names"] = "Är du säker på att du vill låta Smart Fill (Smart ifyllning) fylla i alla visningsnamnen? Det kommer att skriva över de värden som redan finns där."; +$LANG["confirm_ungroup_option_list"] = "Är du säker på att du vill dela upp denna alternativlista? Alla alternativ kommer att klumpas ihop i en enda ogrupperad, lista."; +$LANG["confirm_uninstall_module"] = "Är du säker på att du vill avinstallera denna modul? All moduldata kommer att gå förlorad."; +$LANG["date_AM"] = "fm"; +$LANG["date_Fri"] = "Fre"; +$LANG["date_Friday"] = "Fredag"; +$LANG["date_Mon"] = "Mån"; +$LANG["date_Monday"] = "Måndag"; +$LANG["date_PM"] = "em"; +$LANG["date_Sat"] = "Lör"; +$LANG["date_Saturday"] = "Lördag"; +$LANG["date_Sun"] = "Sön"; +$LANG["date_Sunday"] = "Söndag"; +$LANG["date_Thu"] = "Tor"; +$LANG["date_Thursday"] = "Torsdag"; +$LANG["date_Tue"] = "Tis"; +$LANG["date_Tuesday"] = "Tisdag"; +$LANG["date_Wed"] = "Ons"; +$LANG["date_Wednesday"] = "Onsdag"; +$LANG["date_am"] = "är"; +$LANG["date_month_April"] = "April"; +$LANG["date_month_August"] = "Augusti"; +$LANG["date_month_December"] = "December"; +$LANG["date_month_February"] = "Februari"; +$LANG["date_month_January"] = "Januari"; +$LANG["date_month_July"] = "Juli"; +$LANG["date_month_June"] = "Juni"; +$LANG["date_month_March"] = "Mars"; +$LANG["date_month_May"] = "Maj"; +$LANG["date_month_November"] = "November"; +$LANG["date_month_October"] = "Oktober"; +$LANG["date_month_September"] = "September"; +$LANG["date_month_short_Apr"] = "Apr"; +$LANG["date_month_short_Aug"] = "Aug"; +$LANG["date_month_short_Dec"] = "Dec"; +$LANG["date_month_short_Feb"] = "Feb"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Jul"; +$LANG["date_month_short_Jun"] = "Jun"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Maj"; +$LANG["date_month_short_Nov"] = "Nov"; +$LANG["date_month_short_Oct"] = "Okt"; +$LANG["date_month_short_Sep"] = "Sep"; +$LANG["date_pm"] = "f.m."; +$LANG["notify_account_deleted"] = "Användarkontot har tagits bort."; +$LANG["notify_account_updated"] = "Ditt konto har uppdaterats!"; +$LANG["notify_add_display_values"] = "Lägg till visningsvärden"; +$LANG["notify_admin_menu_updated"] = "Adminstrationsmenyn har uppdaterats."; +$LANG["notify_admin_theme_overridden"] = "Administratörstemat har ändrats manuellt."; +$LANG["notify_allow_url_fopen_not_set"] = "Tyvärr så kan inte detta test köras på din webbserver. allow_url_fopen måste vara inställt på 1 i serverns php.ini-fil. Denna inställning gör det möjligt för PHP att komma åt filer genom URL vilket behövs för detta test. Du kan testa det manuellt genom att ladda upp en fil till den katalogen via FTP och sen försöka nå den via den URL som du har angett."; +$LANG["notify_change_temp_password"] = "Du loggade nyss in med ett tillfälligt lösenord. Du bör återställa ditt lösenord nu!"; +$LANG["notify_click_to_edit_new_submission"] = "Klicka här för att redigera det nya inlägget."; +$LANG["notify_client_account_menus_updated"] = "Klientkontot/kontona har uppdaterats med menyn {\$menu_name}. Nu kan du ta bort den meny som tidigare var kopplad till dessa konton."; +$LANG["notify_client_account_not_updated"] = "Klientkontot kunde inte uppdateras."; +$LANG["notify_client_account_themes_updated"] = "Klientkontot/kontona har uppdaterats med temat {\$theme}. Nu kan du stänga av temat som tidigare var kopplat till detta/dessa konton."; +$LANG["notify_client_account_updated"] = "Klientkontot har uppdaterats!"; +$LANG["notify_client_menu_deleted"] = "Klientmenyn har tagits bort."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Menyn har tagits bort, men följande klientkonton har inte längre någon meny! Du behöver uppdatera följande konton:"; +$LANG["notify_client_menu_updated"] = "Klientmenyn har uppdaterats."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Tyvärr så används den meny du försöker ta bort av andra klienter som listas nedan. För att ta bort menyn måste du först koppla dessa klienter till andra menyer. Klicka på en klients namn för att ändra det kontot, eller tilldela alla konton en annan meny samtidigt via rullgardinsmenyn nedan."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Tyvärr så används ett av de teman du vill ta bort av andra klientkonton. Du ser dem listade nedan. För att stänga av temat för dem måste du först koppla ett annat tema till dem. Antingen individuellt genom att klicka på klientnamnet eller alla på en gång med samma tema genom att välja ett från rullgardinsmenyn nedan."; +$LANG["notify_edit_email_fields_link"] = "Klicka här för att ange vilka formulärfält som är e-postfält, så att du kan använda dig av dem i dina e-postmallar."; +$LANG["notify_edit_field_new_field"] = "Detta är ett nytt fält. Du behöver uppdatera huvudsidan innan du helt kan redigera detta fält."; +$LANG["notify_edit_option_list_after_save"] = "Du måste välja en Alternativlista och sedan Spara ändringarna innan du kan redigera den."; +$LANG["notify_email_field_config_deleted"] = "E-postkonfigurationen har tagits bort."; +$LANG["notify_email_fields_not_updated"] = "Tyvärr så kunde vi inte uppdatera fälten för e-post."; +$LANG["notify_email_fields_updated"] = "E-postfälten har uppdaterats."; +$LANG["notify_email_not_sent"] = "Tyvärr så kunde e-brevet inte skickas iväg."; +$LANG["notify_email_not_sent_c"] = "Tyvärr kunde inte e-posten skickas:"; +$LANG["notify_email_sent"] = "E-brevet(n) har skickats."; +$LANG["notify_email_template_deleted"] = "E-postmallen har tagits bort."; +$LANG["notify_email_template_updated"] = "E-postmallen har uppdaterats."; +$LANG["notify_enabled_module_list_updated"] = "Listan över avstängda moduler har uppdaterats."; +$LANG["notify_error_saving_fields"] = "Det uppstod ett fel vid sparandet av fälten."; +$LANG["notify_field_changes_saved"] = "Ändringarna i dina fält har sparats."; +$LANG["notify_field_options_smart_filled"] = "Dina fältalternativ har fyllts i med hjälp av Smart ifyllning."; +$LANG["notify_field_selected"] = "Fältet har valts. Klicka här för att återgå till fältlistan."; +$LANG["notify_field_updated"] = "Fältet har uppdaterats."; +$LANG["notify_file_not_uploaded"] = "Filen kunde inte laddas upp."; +$LANG["notify_file_uploaded"] = "Filen har laddats upp!"; +$LANG["notify_filters_not_updated"] = "Ett fel uppstod när vi försökte uppdatera den här klientens inskicksfilter."; +$LANG["notify_filters_updated"] = "Inskickningsfiltren har uppdaterats för denna klient."; +$LANG["notify_folder_correct_permissions"] = "Denna katalog har korrekta rättigheter."; +$LANG["notify_folder_url_match"] = "Katalogen och URL:en verkar matcha som de skall."; +$LANG["notify_folder_url_no_access"] = "Detta test kunde inte utföras eftersom PHP inte kunde nå URL:en. Orsaken är oftast att URL:en är lösenordsskyddad med en .htaccess-fil."; +$LANG["notify_folder_url_no_match"] = "Den här katalog-URL-kombinationen verkar inte matcha varandra."; +$LANG["notify_folder_url_unknown_error"] = "Ett okänt fel har uppstått. Du kan testa det manuellt genom att ladda upp en fil till den katalogen via FPT och att sedan försöka nå filen via den URL som du angett."; +$LANG["notify_form_access_type_email_info"] = "Detta formulär har behörigheten satt till administratör så inga klienter har tillgång till den och listas därför inte i rullgardinsmenyn nedan."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Tyvärr, det finns inget formulär med detta ID."; +$LANG["notify_form_field_not_added"] = "Formulärfältet '{\$fieldname}' kunde inte läggas till."; +$LANG["notify_form_field_options_updated"] = "Alternativen för formulärfälten har uppdaterats."; +$LANG["notify_form_field_removed"] = "Formulärfältet har tagits bort."; +$LANG["notify_form_fields_removed"] = "Formulärfälten har tagits bort."; +$LANG["notify_form_not_updated_notify_admin"] = "Ditt formulär kunde inte uppdateras. Kontakta webbplatsens administratör och rapportera detta problem."; +$LANG["notify_form_settings_updated"] = "Dina formulärinställningar har uppdaterats."; +$LANG["notify_form_submission_updated"] = "Formulärinskicket har uppdaterats."; +$LANG["notify_form_tabs_updated"] = "Flikarna har uppdaterats."; +$LANG["notify_form_updated"] = "Formuläret har uppdaterats!"; +$LANG["notify_form_views_updated"] = "Formulärvyerna har uppdaterats."; +$LANG["notify_install_invalid_db_info"] = "Tyvärr så kunde vi inte koppla upp oss mot databasen med den information du angav. Felmeddelandet vi fick tillbaka var: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Formuläret har skapats! Du kan konfigurera ditt formulär genom dessa flikar."; +$LANG["notify_invalid_account_information_in_sessions"] = "Kontoinformationen som lagrats i sessioner är ogiltig. Vänligen logga in igen här nedan."; +$LANG["notify_invalid_license_key"] = "Tyvärr verkar det inte vara en giltig licensnyckel. Försök skriva in den igen."; +$LANG["notify_invalid_permissions"] = "Du har inte tillräckliga rättigheter för att komma åt denna sida. Du har därför loggats ut!"; +$LANG["notify_invalid_search_dates"] = "Använd datumväljaren för att ange ett giltigt datum."; +$LANG["notify_invalid_upload_folder"] = "Uppladdningskatalogen är antingen ogiltig eller så är den inte skrivbar."; +$LANG["notify_lang_list_updated"] = "Listan över tillgängliga språk för användargränssnittet har uppdaterats."; +$LANG["notify_login_info_emailed"] = "Din inloggningsinformation har skickats till dig."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oj, den här modulen är redan installerad!"; +$LANG["notify_module_installed"] = "Modulen har installerats. Klicka här för att välja modulen."; +$LANG["notify_module_list_updated"] = "Modullistan har uppdaterats."; +$LANG["notify_module_uninstalled"] = "Modulen har avinstallerats."; +$LANG["notify_module_updated"] = "Modulen {\$module} har uppdaterats till version {\$version}. Klicka här för att välja modulen ."; +$LANG["notify_multi_field_selected"] = "Fältet har valts. Klicka här för att se och ändra dess alternativ."; +$LANG["notify_multi_field_updated"] = "Fältet har uppdaterats. Du kommer att kunna konfigurera fältets alternativ efter att du satt upp ditt formulär."; +$LANG["notify_multiple_fields_found"] = "Ett flertal element hittades med detta fältnamn ({\$field_name}). Det kan inträffa om din sida innehåller mer än ett formulär eller om du oavsiktligt råkat döpa ett av dina formulär till samma namn som det andra. Vänligen välj vilket du ha från nedanstående lista."; +$LANG["notify_new_default_view_created"] = "En ny standardvy, innehållande alla dina formulärfält, har skapats."; +$LANG["notify_new_submission_created"] = "Inskicket har skapats. Du kan redigera den nedan."; +$LANG["notify_no_account_id_in_sessions"] = "Inget användarkonto-ID hittades i sessioner. Vänligen logga in igen nedan."; +$LANG["notify_no_api_installed"] = "Du har inte API:et installerat"; +$LANG["notify_no_client_permissions"] = "Det finns inga inställningar att ändra."; +$LANG["notify_no_email_template_selected"] = "Välj e-postmallen."; +$LANG["notify_no_emails_defined"] = "Ingen e-post har definierats för detta formulär. För att lägga till en ny, klicka på knappen nedan."; +$LANG["notify_no_field_settings"] = "Denna fälttyp innehåller inga extra inställningar."; +$LANG["notify_no_fields_in_tab"] = "Denna flik innehåller inga fält."; +$LANG["notify_no_option_lists"] = "Det finns inga alternativlistor definierade. Klicka på knappen nedan för att skapa en ny."; +$LANG["notify_no_test_submission"] = "Form Tools har ännu inte tagit emot något lyckat testinskick."; +$LANG["notify_no_user_email_fields_configured"] = "Obs: Om du vill skicka ett e-brev till en e-postadress som ingick i formuläret, måste du först konfigurera formulärets e-postfält."; +$LANG["notify_no_views"] = "Formuläret har inga Vyer inställda! Du behöver minst en vy för att kunna hantera dina formulärdata."; +$LANG["notify_no_views_assigned_to_client_form"] = "Det verkar inte som att ditt användarkonto har blivit tilldelat någon formulärvy än, och därför kan du inte se någon data. Vänligen kontakta administratören för hjälp."; +$LANG["notify_no_views_defined"] = "Du har inga Vyer definierade. Du kommer inte att kunna se detta formulärs inskick om inte minst en vy skapas. Klicka på knappen här nere för att skapa standardvyn."; +$LANG["notify_option_list_deleted"] = "Alternativlistan har tagits bort."; +$LANG["notify_option_list_updated"] = "Alternativlistan har uppdaterats."; +$LANG["notify_public_form_omit_list_updated"] = "Listan över utelämnade klienter för detta formulär har uppdaterats."; +$LANG["notify_public_view_omit_list_updated"] = "Listan över utelämnade klienter för denna vy har uppdaterats."; +$LANG["notify_required_admin_pages"] = "Följande sidor krävs i adminstratörsmenyn: {\$remaining_pages}"; +$LANG["notify_sessions_timeout"] = "Det har inte varit någon aktivitet från dig på ett tag så vi loggade ut dig för säkerhets skull. Logga in igen här nedan."; +$LANG["notify_setup_options_updated"] = "Inställningsalternativen har uppdaterats."; +$LANG["notify_smart_fill_field_not_found"] = "Vi kunde inte hitta ett fält med namnet ({\$field_name}) i de angivna formulären. Du kan antingen ange fälttypen själv nedan, eller klicka på Hoppa över för att ändra detta fält senare."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Dina filer har nu laddats upp. Prova att klicka på knappen Smart ifyllning för att försöka igen. Om detta steg misslyckas så behöver du hoppa över det och konfigurera dina formulärfält manuellt senare."; +$LANG["notify_smart_fill_submitted"] = "Formuläret har skickats in. Beroende på storleken på ditt formulär och antalet fältalternativ så kan det ta en stund."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Tyvärr så kunde inte en eller flera av dina filer laddas upp. Du behöver hoppa över det här steget just nu och konfigurera fälten manuellt."; +$LANG["notify_submission_and_files_deleted"] = "Inskicket, och eventuella filer som associeras med det, har tagits bort."; +$LANG["notify_submission_copied"] = "Inlämningen har kopierats."; +$LANG["notify_submission_copied_edit"] = "Inlämningen har kopierats. Du kan redigera det nedan."; +$LANG["notify_submission_deleted"] = "Inskicket har tagits bort."; +$LANG["notify_submission_deleted_with_problems"] = "Inskicket togs bort, men följande problem uppstod vid försöket att ta bort de här filerna:"; +$LANG["notify_submission_id_not_found"] = "Inskicknings-ID:t kunde inte hittas."; +$LANG["notify_submission_not_updated"] = "Inskicket kunde inte uppdateras."; +$LANG["notify_submissions_and_files_deleted"] = "Inskicken och de eventuella filer som associeras med dem har tagits bort."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} inlagor har kopierats."; +$LANG["notify_submissions_deleted"] = "Inskicken har tagits bort."; +$LANG["notify_submissions_deleted_with_problems"] = "Inskicken har tagits bort men följande problem uppstod vid försöket att ta bort följande fil(-er):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Ditt testbrev kunde inte skickas."; +$LANG["notify_theme_cache_folder_not_writable"] = "Detta temats cachekatalog är inte skrivbar. För att kunna aktivera temat så måste katalogen {\$folder} ha fulla läs- och skrivrättigheter."; +$LANG["notify_theme_list_updated"] = "Temalistan har uppdaterats."; +$LANG["notify_themes_settings_updated"] = "Dina temainställningar har uppdaterats."; +$LANG["notify_view_deleted"] = "Vyn har tagits bort."; +$LANG["notify_view_group_deleted"] = "Vy-gruppen har tagits bort."; +$LANG["notify_view_missing_columns"] = "Oops! Tyvärr har denna vy inte helt ställts in ännu."; +$LANG["notify_view_missing_columns_admin_fix"] = "Klicka här för att ange vilka fält som ska visas som kolumner på denna sida."; +$LANG["notify_view_updated"] = "Vyn har uppdaterats."; +$LANG["notify_your_email_sent"] = "Ditt e-brev har skickats iväg som det skulle."; +$LANG["phrase_100_per_page"] = "100 per sida"; +$LANG["phrase_10_per_page"] = "10 per sida"; +$LANG["phrase_15_per_page"] = "15 per sida"; +$LANG["phrase_1_direct"] = "1. Direkt"; +$LANG["phrase_1char"] = "1 tecken"; +$LANG["phrase_20_per_page"] = "20 per sida"; +$LANG["phrase_25_per_page"] = "25 per sida"; +$LANG["phrase_2_code"] = "2. Kod"; +$LANG["phrase_2_columns"] = "2 kolumner"; +$LANG["phrase_2chars"] = "2 tecken"; +$LANG["phrase_3_columns"] = "3 kolumner"; +$LANG["phrase_4_columns"] = "4 kolumner"; +$LANG["phrase_50_per_page"] = "50 per sida"; +$LANG["phrase_accepting_submissions"] = "(accepterar inskick)"; +$LANG["phrase_access_admin_account_c"] = "Du kan nå ditt administrationskonto här:"; +$LANG["phrase_access_type"] = "Åtkomsttyp"; +$LANG["phrase_account_info"] = "Kontoinformation"; +$LANG["phrase_account_settings"] = "Kontoinställningar"; +$LANG["phrase_action_needed"] = "Behövd åtgärd"; +$LANG["phrase_add_client"] = "Lägg till klient"; +$LANG["phrase_add_client_menu"] = "Lägg till klientmeny"; +$LANG["phrase_add_default_settings_rightarrow"] = "Lägg till standardinställningar »"; +$LANG["phrase_add_field"] = "Lägg till fält"; +$LANG["phrase_add_fields"] = "Lägg till fält"; +$LANG["phrase_add_fields_rightarrow"] = "Lägg till fält »"; +$LANG["phrase_add_form"] = "Lägg till formulär"; +$LANG["phrase_add_form_external"] = "Lägg till formulär - Externt"; +$LANG["phrase_add_form_internal"] = "Lägg till formulär - Internt"; +$LANG["phrase_add_new_group_rightarrow"] = "Lägg till ny grupp »"; +$LANG["phrase_add_num_rows"] = "Lägg till {\$number} rader"; +$LANG["phrase_add_row"] = "Lägg till rad »"; +$LANG["phrase_add_submission_button"] = "Lägg till skicka-in knapp"; +$LANG["phrase_add_view_rightarrow"] = "Lägg till vy »"; +$LANG["phrase_adding_multi_page_form"] = "Att lägga till ett flersidigt formulär med API:et"; +$LANG["phrase_adding_single_page_form"] = "Att lägga till ett enkelsidigt formulär med API:et"; +$LANG["phrase_admin_menu"] = "Administratörsmeny"; +$LANG["phrase_admin_only"] = "Endast administratörer"; +$LANG["phrase_admin_panel"] = "Administrationspanel"; +$LANG["phrase_administrator_theme"] = "Administratörstema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Avancerade inställningar »"; +$LANG["phrase_all_X_results_selected"] = "Alla {\$numresults} resultat valda"; +$LANG["phrase_all_clients"] = "Alla klienter"; +$LANG["phrase_all_clients_except_c"] = "Alla klienter förutom:"; +$LANG["phrase_all_clients_have_access"] = "(alla klienter har åtkomst)"; +$LANG["phrase_all_fields"] = "Alla fält"; +$LANG["phrase_all_fields_displayed"] = "Alla fält visas"; +$LANG["phrase_all_statuses"] = "All status"; +$LANG["phrase_all_submissions"] = "Alla inskick"; +$LANG["phrase_allow_fields_edited"] = "Tillåt ändring av fält"; +$LANG["phrase_alphanumeric"] = "Alfanumeriskt (a-Z, 0-9)"; +$LANG["phrase_api_version"] = "API-version"; +$LANG["phrase_apply_timezone_offset"] = "Applicera tidszonsskillnad"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Koppla alla listade klientkonton till {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Koppla alla listade klientkonton till {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "I slutet"; +$LANG["phrase_at_start"] = "I början"; +$LANG["phrase_author_link"] = "Författarlänk"; +$LANG["phrase_auto_disable_account"] = "Automatiskt avaktivera konton efter # misslyckade inloggningsförsök"; +$LANG["phrase_auto_size"] = "Automatisk storlek"; +$LANG["phrase_available_clients"] = "Tillgängliga klienter"; +$LANG["phrase_available_fields"] = "Tillgängliga fält"; +$LANG["phrase_available_option_lists"] = "Tillgängliga alternativlistor"; +$LANG["phrase_available_swatches"] = "Tillgängliga färgpaletter"; +$LANG["phrase_available_swatches_c"] = "Tillgängliga färgpaletter:"; +$LANG["phrase_available_tabs"] = "Tillgängliga flikar"; +$LANG["phrase_available_views"] = "Tillgängliga vyer"; +$LANG["phrase_awaiting_form_submission"] = "Väntar på formulärinskick"; +$LANG["phrase_back_to_field_list"] = "« tillbaka till fältlistan"; +$LANG["phrase_back_to_search_results"] = "tillbaka till sökresultatet"; +$LANG["phrase_base_view_on"] = "Basera vy på..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Ändra inloggningsinformation"; +$LANG["phrase_characters_limit_p"] = "teckengräns."; +$LANG["phrase_check_db_settings_try_again"] = "Kontrollera dina databasinställningar en gång till och klicka därefter på knappen Fortsätt igen."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Kontrollera URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Städa upp"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Rensa undantagslista"; +$LANG["phrase_client_account_settings"] = "Inställningar för klientkonton"; +$LANG["phrase_client_field"] = "Klientfält"; +$LANG["phrase_client_map_filters"] = "Klients filtermappning »"; +$LANG["phrase_client_may_edit"] = "Klienten kan ändra"; +$LANG["phrase_client_menu"] = "Klientmeny"; +$LANG["phrase_clients_can_access_form"] = "Klienter som kan komma åt formuläret"; +$LANG["phrase_clients_can_access_view"] = "Klienter som kan komma åt vyn"; +$LANG["phrase_clients_cannot_access_form"] = "Klienter som INTE kan komma åt formuläret"; +$LANG["phrase_clients_cannot_access_view"] = "Klienter som INTE kan komma åt vyn"; +$LANG["phrase_clients_may_edit"] = "Klienter kan ändra"; +$LANG["phrase_code_c"] = "Felkod:"; +$LANG["phrase_code_markup_field"] = "Kod / Uppmärkningsfält"; +$LANG["phrase_code_markup_type"] = "Kod / Märktyp"; +$LANG["phrase_codes_c"] = "Felkoder:"; +$LANG["phrase_column_width"] = "Kolumnbredd"; +$LANG["phrase_company_name"] = "Företagsnamn"; +$LANG["phrase_configure_form_email_fields"] = "Ställ in formulärets e-postfält"; +$LANG["phrase_confirm_folder_url_match"] = "Bekräfta matchning av katalog-URL"; +$LANG["phrase_connect_rows"] = "Anslut rader"; +$LANG["phrase_copy_email_settings_from"] = "Kopiera e-postinställningarna från..."; +$LANG["phrase_copy_settings_from"] = "Kopiera inställningarna från..."; +$LANG["phrase_core_fields"] = "Kärnfält"; +$LANG["phrase_core_version"] = "Kärnversion"; +$LANG["phrase_create_account"] = "Skapa konto"; +$LANG["phrase_create_admin_account"] = "Skapa administratörskonto"; +$LANG["phrase_create_config_file"] = "Skapa konfigurationsfil"; +$LANG["phrase_create_database_tables"] = "Skapa databastabeller"; +$LANG["phrase_create_default_view"] = "Skapa standardvy"; +$LANG["phrase_create_file"] = "Skapa fil"; +$LANG["phrase_create_group"] = "Skapa grupp"; +$LANG["phrase_create_new_email"] = "Skapa ny e-post"; +$LANG["phrase_create_new_menu"] = "Skapa ny meny"; +$LANG["phrase_create_new_option_list"] = "Skapa ny alternativlista"; +$LANG["phrase_create_new_option_list_group"] = "Skapa ny alternativlistegrupp"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Skapa ny alternativlista »"; +$LANG["phrase_create_new_view"] = "Skapa ny vy"; +$LANG["phrase_create_new_view_group"] = "Skapa ny vygrupp"; +$LANG["phrase_custom_display_format"] = "Anpassat visningsformat"; +$LANG["phrase_custom_recipient"] = "Anpassad mottagare"; +$LANG["phrase_custom_url"] = "Anpassad URL"; +$LANG["phrase_dark_blue"] = "Mörkblå"; +$LANG["phrase_data_type"] = "Datatyp"; +$LANG["phrase_database_hostname"] = "Databasens värdnamn"; +$LANG["phrase_database_name"] = "Databasens namn"; +$LANG["phrase_database_password"] = "Databasens lösenord"; +$LANG["phrase_database_settings"] = "Databasinställningar"; +$LANG["phrase_database_setup"] = "Databasinställning"; +$LANG["phrase_database_table_prefix"] = "Databasens tabellprefix"; +$LANG["phrase_database_username"] = "Databasens användarnamn"; +$LANG["phrase_date_format"] = "Datumformat"; +$LANG["phrase_db_column"] = "DB-kolumn"; +$LANG["phrase_db_setup_page_4"] = "4. Databasinställningar"; +$LANG["phrase_default_client_account_theme"] = "Förvalt tema för klientkonton"; +$LANG["phrase_default_date_field_search_value"] = "Förvalt sökvärde för datumfältet"; +$LANG["phrase_default_language"] = "Förvalt språk"; +$LANG["phrase_default_menu"] = "Förvald meny"; +$LANG["phrase_default_sessions_timeout"] = "Förvald timeout för sessioner"; +$LANG["phrase_default_sort_order"] = "Förvald sorteringsordning"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Förvalt tema"; +$LANG["phrase_default_value"] = "Standardvärde"; +$LANG["phrase_default_values"] = "Standardvärden"; +$LANG["phrase_default_values_new_submissions"] = "Standardvärden för nya inskick"; +$LANG["phrase_delete_field"] = "Ta bort fält"; +$LANG["phrase_delete_form"] = "Ta bort formulär"; +$LANG["phrase_delete_row"] = "Ta bort rad"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Ta bort associerade filer när inskick tas bort"; +$LANG["phrase_delete_view"] = "Ta bort vy"; +$LANG["phrase_disconnect_rows"] = "Koppla bort rader"; +$LANG["phrase_display_email"] = "Visa e-post"; +$LANG["phrase_display_name"] = "Visningsnamn"; +$LANG["phrase_display_text"] = "Visningstext"; +$LANG["phrase_display_value"] = "Visningsvärde"; +$LANG["phrase_edit_admin_menu"] = "Ändra administratörsmenyn"; +$LANG["phrase_edit_client"] = "Ändra klient"; +$LANG["phrase_edit_client_menu"] = "Ändra klientmenyn"; +$LANG["phrase_edit_email_template"] = "Ändra e-postmallen"; +$LANG["phrase_edit_field"] = "Ändra fält"; +$LANG["phrase_edit_field_c"] = "Redigera fält:"; +$LANG["phrase_edit_form"] = "Ändra formulär"; +$LANG["phrase_edit_form_access_type_b"] = "[Redigera typ av formuläråtkomst]"; +$LANG["phrase_edit_option_list"] = "Redigera alternativlista"; +$LANG["phrase_edit_submission"] = "Redigera inskick"; +$LANG["phrase_edit_submission_label"] = "Redigera inskicksetikett"; +$LANG["phrase_edit_view"] = "Ändra vy"; +$LANG["phrase_email_format"] = "E-postformat"; +$LANG["phrase_email_settings"] = "E-postinställningar"; +$LANG["phrase_email_template"] = "E-brevsmall"; +$LANG["phrase_email_template_name"] = "E-postmallens namn"; +$LANG["phrase_error_learn_more"] = "Lär mer om det här felet."; +$LANG["phrase_error_text_intro"] = "Fixa följande fel och skicka om på nytt:"; +$LANG["phrase_errors_learn_more"] = "Klicka på felkoderna för att lära dig mer."; +$LANG["phrase_event_trigger"] = "Händelseutlösare"; +$LANG["phrase_external_form"] = "Externt formulär"; +$LANG["phrase_external_form_info"] = "Info om externt formulär"; +$LANG["phrase_external_your_own_form"] = "Externt (ditt eget formulär)"; +$LANG["phrase_field_comments"] = "Fältkommentarer"; +$LANG["phrase_field_label"] = "Fältetikett"; +$LANG["phrase_field_options"] = "Fältalternativ"; +$LANG["phrase_field_size"] = "Fältstorlek"; +$LANG["phrase_field_skipped"] = "Överhoppade fält"; +$LANG["phrase_field_specific_settings"] = "Fältinställningar"; +$LANG["phrase_field_type"] = "Fälttyp"; +$LANG["phrase_field_type_no_validation"] = "Det finns inga valideringsregler tillgängliga för denna fälttyp."; +$LANG["phrase_field_types"] = "Fälttyper"; +$LANG["phrase_field_value"] = "Fältvärde"; +$LANG["phrase_field_values_to_display_values"] = "Fältvärden » Visningsvärden"; +$LANG["phrase_final_touches_page_6"] = "6. Avslutande småjusteringar"; +$LANG["phrase_finalize_form"] = "Slutför formuläret"; +$LANG["phrase_first_name"] = "Förnamn"; +$LANG["phrase_footer_text"] = "Fotsidestext"; +$LANG["phrase_for_any_form_submission"] = "För alla sorters formulärinskick"; +$LANG["phrase_for_view_submissions"] = "Endast inskick som passar in i följande vyer"; +$LANG["phrase_forgot_password"] = "Glömt ditt lösenord?"; +$LANG["phrase_form_already_selected"] = "Formulär är redan valt"; +$LANG["phrase_form_email_field_b_c"] = "[Form email field]:"; +$LANG["phrase_form_email_field_configuration"] = "Konfigurering av formulärets e-postfält"; +$LANG["phrase_form_email_fields"] = "Formulärfält för e-post"; +$LANG["phrase_form_field"] = "Formulärfält"; +$LANG["phrase_form_field_contents"] = "Innehåll i formulärfält"; +$LANG["phrase_form_field_name"] = "Formulärfältsnamn"; +$LANG["phrase_form_field_placeholders"] = "Platshållare för formulärfält"; +$LANG["phrase_form_fields"] = "Formulärfält"; +$LANG["phrase_form_info"] = "Formulärinformation"; +$LANG["phrase_form_info_2"] = "2. Formulärinformation"; +$LANG["phrase_form_list"] = "Formulärlista"; +$LANG["phrase_form_name"] = "Formulärnamn"; +$LANG["phrase_form_page"] = "Formulärsida"; +$LANG["phrase_form_placeholders"] = "Formulärs platshållare"; +$LANG["phrase_form_submission"] = "Formulärinskick"; +$LANG["phrase_form_submissions"] = "Formulärinskick"; +$LANG["phrase_form_type"] = "Formulärtyp"; +$LANG["phrase_form_url"] = "URL till formulärsidan"; +$LANG["phrase_form_urls"] = "Formulärs webbadresser"; +$LANG["phrase_forms_assigned_to_any_account"] = "Formulär som kopplats till något konto"; +$LANG["phrase_forms_page_default_message"] = "Formulärsidans standardmeddelande"; +$LANG["phrase_ft_installation"] = "Form Tools installationsscript"; +$LANG["phrase_full_width"] = "Full bredd"; +$LANG["phrase_getting_started"] = "komma igång"; +$LANG["phrase_global_placeholders"] = "Globala platshållare"; +$LANG["phrase_group_name"] = "Gruppnamn"; +$LANG["phrase_group_options_q"] = "Gruppalternativ?"; +$LANG["phrase_group_rows"] = "Gruppera rader"; +$LANG["phrase_have_fun"] = "Ha så skoj!"; +$LANG["phrase_highlight_colour"] = "Markera färg"; +$LANG["phrase_html_email"] = "HTML e-post"; +$LANG["phrase_html_template"] = "HTML-mall"; +$LANG["phrase_images_media"] = "Bilder/Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Importera alternativlista »"; +$LANG["phrase_input_length"] = "Inmatningslängd"; +$LANG["phrase_installation_help"] = "Installationshjälp"; +$LANG["phrase_internal_form"] = "Internt formulär"; +$LANG["phrase_ip_address"] = "IP-adress"; +$LANG["phrase_is_multi_page_form_q"] = "Är detta ett flersidigt formulär?"; +$LANG["phrase_label_response_placeholders"] = "Etikett / Platshållare för svar"; +$LANG["phrase_large_300px"] = "Stor (300px)"; +$LANG["phrase_large_400px"] = "Stor (400px)"; +$LANG["phrase_last_7_days"] = "Senaste 7 dagarna"; +$LANG["phrase_last_logged_in"] = "Senast inloggad"; +$LANG["phrase_last_modified"] = "Senast ändrad"; +$LANG["phrase_last_modified_date"] = "Senaste ändringsdatum"; +$LANG["phrase_last_name"] = "Efternamn"; +$LANG["phrase_letters_only"] = "Endast bokstäver"; +$LANG["phrase_light_brown"] = "Ljusbrun"; +$LANG["phrase_limit_email_content"] = "Begränsa e-postinnehåll till fält i vyn"; +$LANG["phrase_loading_ellipsis"] = "Laddar..."; +$LANG["phrase_log_in"] = "Logga in"; +$LANG["phrase_login_as_user"] = "Logga in som denna användare"; +$LANG["phrase_login_info"] = "Inloggningsinformation"; +$LANG["phrase_login_page"] = "Inloggningssida"; +$LANG["phrase_login_panel_c"] = "Inloggningspanel:"; +$LANG["phrase_login_panel_leftarrows"] = "« Inloggningspanel"; +$LANG["phrase_login_password"] = "Lösenord för inloggning"; +$LANG["phrase_login_username"] = "Användarnamn för inloggning"; +$LANG["phrase_logo_link_url"] = "URL till logotyplänk"; +$LANG["phrase_logout_url"] = "URL för utloggning"; +$LANG["phrase_main_nav"] = "Huvudnavigering"; +$LANG["phrase_main_settings"] = "Huvudinställningar"; +$LANG["phrase_manage_client"] = "Hantera klient"; +$LANG["phrase_manage_client_omit_list"] = "Hantera lista med uteslutna kunder"; +$LANG["phrase_max_file_size"] = "Maximal filstorlek"; +$LANG["phrase_max_length"] = "Maxlängd"; +$LANG["phrase_max_length_words_chars"] = "- Maxlängd (ord/tecken)"; +$LANG["phrase_may_add_submissions"] = "Kan lägga till inskick"; +$LANG["phrase_may_copy_submissions"] = "Kan kopiera inlägg"; +$LANG["phrase_may_delete_submissions"] = "Kan radera inskick"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menynamn"; +$LANG["phrase_menu_type"] = "Menytyp"; +$LANG["phrase_min_password_length"] = "Minsta längd på lösenord"; +$LANG["phrase_module_description"] = "Modulbeskrivning"; +$LANG["phrase_module_info"] = "Modulinformation"; +$LANG["phrase_module_nav"] = "Modulnavigering"; +$LANG["phrase_month_to_date"] = "Hittills i månaden"; +$LANG["phrase_multi_select"] = "Flerval"; +$LANG["phrase_multi_select_dropdown"] = "Flervals rullgardinsmeny"; +$LANG["phrase_multiple_fields_found"] = "Flera fält funna!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Namn / Efternamn"; +$LANG["phrase_new_blank_email"] = "Nytt, tomt, e-brev"; +$LANG["phrase_new_blank_option_list"] = "Ny tom alternativlista"; +$LANG["phrase_new_blank_view"] = "Ny vy"; +$LANG["phrase_new_ft_installation"] = "Ny installation av Form Tools"; +$LANG["phrase_new_option_list"] = "Ny alternativlista"; +$LANG["phrase_new_password"] = "Nytt lösenord"; +$LANG["phrase_new_password_reenter"] = "Skriv nytt lösenord en gång till"; +$LANG["phrase_new_view"] = "Ny vy"; +$LANG["phrase_new_view_all_fields"] = "Ny vy - Alla fält"; +$LANG["phrase_next_client"] = "nästa klient »"; +$LANG["phrase_next_field"] = "nästa fält »"; +$LANG["phrase_next_form"] = "nästa formulär »"; +$LANG["phrase_next_view"] = "nästa vy »"; +$LANG["phrase_no_clients"] = "Inga klienter"; +$LANG["phrase_no_limit"] = "Ingen begränsning"; +$LANG["phrase_no_offset"] = "Ingen anpassning"; +$LANG["phrase_no_option_lists_available"] = "Inga alternativlistor finns."; +$LANG["phrase_no_views"] = "Inga vyer"; +$LANG["phrase_no_views_with_filters_p"] = "(Inga vyer med filter definierade)"; +$LANG["phrase_none_not_recommended"] = "Ingen (rekommenderas inte)"; +$LANG["phrase_not_assigned_to_option_list"] = "Detta fält är inte kopplat till någon alternativlista."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "INTE är lika med"; +$LANG["phrase_not_found"] = "Hittades inte!"; +$LANG["phrase_not_like"] = "INTE liknar"; +$LANG["phrase_not_visible_to_client"] = "(osynligt för klienten)"; +$LANG["phrase_num_clients_per_page"] = "Antal klienter per sida"; +$LANG["phrase_num_emails_per_page"] = "Antal e-brev per sida"; +$LANG["phrase_num_fields"] = "Antal fält"; +$LANG["phrase_num_forms_per_page"] = "Antal formulär per sida"; +$LANG["phrase_num_menus_per_page"] = "Antal menyer per sida"; +$LANG["phrase_num_modules_per_page"] = "Antal moduler per sida"; +$LANG["phrase_num_option_lists_per_page"] = "Antal Alternativlistor per sida"; +$LANG["phrase_num_options"] = "Antal alternativ"; +$LANG["phrase_num_rows"] = "Antal rader"; +$LANG["phrase_numbers_only"] = "Endast siffror"; +$LANG["phrase_often_localhost"] = "(oftast \"localhost\")"; +$LANG["phrase_on_form_submission"] = "Vid formulärinskick"; +$LANG["phrase_one_char_number"] = "Minst ett tecken är ett nummer (0-9)"; +$LANG["phrase_one_char_upper"] = "Minst ett tecken är en versal"; +$LANG["phrase_one_special_char"] = "Minst ett av {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(endast specifika klienter har åtkomst)"; +$LANG["phrase_open_form_in_dialog"] = "Öppna formulär i dialogfönster"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Öppna detta formulär i en ny flik/fönster"; +$LANG["phrase_option_list"] = "Alternativlista"; +$LANG["phrase_option_list_name"] = "Alternativlistas namn"; +$LANG["phrase_option_list_or_contents"] = "Alternativlista / Innehåll"; +$LANG["phrase_option_lists"] = "Alternativlistor"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Sidotitlar"; +$LANG["phrase_pass_on"] = "Skicka vidare"; +$LANG["phrase_password_min"] = "Det måste vara minst {\$length} tecken."; +$LANG["phrase_password_one_number"] = "Det måste innehålla minst en siffra (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Det måste innehålla minst en stor bokstav."; +$LANG["phrase_password_requirements_c"] = "Lösenordskrav:"; +$LANG["phrase_password_reset"] = "Återställning av lösenord"; +$LANG["phrase_password_special_char"] = "Det måste innehålla minst ett av följande tecken: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Behörigheter / Andra inställningar"; +$LANG["phrase_permitted_file_types"] = "Tillåtna filtyper"; +$LANG["phrase_phone_number"] = "Telefonnummer"; +$LANG["phrase_phone_number_format"] = "Telefonnummers format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "Maximalt tillåten filstorlek vid uppladdning enligt php.ini"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP-version"; +$LANG["phrase_please_confirm"] = "Vänligen bekräfta"; +$LANG["phrase_please_enter_license_key"] = "Skriv in din licensnyckel"; +$LANG["phrase_please_select"] = "Vänligen välj"; +$LANG["phrase_please_select_form"] = "Välj ett formulär"; +$LANG["phrase_prev_client"] = "« Föregående klient"; +$LANG["phrase_prev_form"] = "« Föregående formulär"; +$LANG["phrase_prevent_password_reuse"] = "Förhindra återanvändning av # senaste lösenord"; +$LANG["phrase_previous_field"] = "« föregående fält"; +$LANG["phrase_previous_page"] = "Föregående sida"; +$LANG["phrase_previous_view"] = "« Föregående vy"; +$LANG["phrase_program_name"] = "Programnamn"; +$LANG["phrase_public_form_omit_list"] = "Publik lista över utelämnade formulär"; +$LANG["phrase_public_view_omit_list"] = "Publik lista över utelämnade vyer"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Det uppstod ett problem med följande förfrågan:"; +$LANG["phrase_radio_buttons"] = "Radioknappar"; +$LANG["phrase_random_form_submission"] = "Slumpmässigt formulärinskick"; +$LANG["phrase_re_enter_password"] = "Skriv lösenordet en gång till"; +$LANG["phrase_recipient_type"] = "Typ av mottagare"; +$LANG["phrase_redirect_url"] = "URL till omdirigeringssida"; +$LANG["phrase_refresh_list"] = "Ladda om listan"; +$LANG["phrase_refresh_module_list"] = "Ladda om modullistan"; +$LANG["phrase_refresh_page"] = "Ladda om sida"; +$LANG["phrase_refresh_theme_list"] = "Ladda om temalistan"; +$LANG["phrase_register_new_email"] = "Registrera ny e-post"; +$LANG["phrase_remaining_characters"] = "återstående tecken"; +$LANG["phrase_remaining_words"] = "resterande ord"; +$LANG["phrase_remove_tabs"] = "Ta bort flikar"; +$LANG["phrase_required_password_chars"] = "Lösenordstecken som krävs"; +$LANG["phrase_resend_test_submission"] = "Skicka in testinskicket igen"; +$LANG["phrase_return_form_list"] = "Tillbaka till formulärlistan"; +$LANG["phrase_row_selected"] = "{\$num_rows} rad vald"; +$LANG["phrase_rows_selected"] = "{\$num_rows} rader valda"; +$LANG["phrase_sample_data"] = "Exempeldata"; +$LANG["phrase_save_changes"] = "Spara ändringar"; +$LANG["phrase_search_keyword"] = "Sökord"; +$LANG["phrase_security_settings"] = "Säkerhetsinställningar"; +$LANG["phrase_select_all"] = "Välj alla"; +$LANG["phrase_select_all_X_results"] = "Välj alla {\$numresults} resultat"; +$LANG["phrase_select_all_on_page"] = "Välj alla på sidan"; +$LANG["phrase_select_date"] = "Välj datum"; +$LANG["phrase_select_field"] = "Välj fält"; +$LANG["phrase_select_swatch"] = "Välj färgpalett"; +$LANG["phrase_selected_clients"] = "Valda klienter"; +$LANG["phrase_selected_views"] = "Valda vyer"; +$LANG["phrase_send_email"] = "Skicka e-brev"; +$LANG["phrase_send_test_email"] = "Skicka testbrev"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Timeout för sessioner"; +$LANG["phrase_setting_value"] = "Inställningsvärde"; +$LANG["phrase_setup_options"] = "Inställningsalternativ"; +$LANG["phrase_show_all"] = "Visa alla"; +$LANG["phrase_show_form"] = "Visa formulär"; +$LANG["phrase_size_large"] = "Större (TEXT)"; +$LANG["phrase_size_medium"] = "Medel (<=256 tecken)"; +$LANG["phrase_size_small"] = "Mindre (<=20 tecken)"; +$LANG["phrase_size_tiny"] = "Liten (<=5 tecken)"; +$LANG["phrase_size_very_large"] = "Väldigt stor (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Hoppa över fält"; +$LANG["phrase_skip_step"] = "Hoppa över steg"; +$LANG["phrase_small_100px"] = "Liten (100px)"; +$LANG["phrase_small_80px"] = "Liten (80px)"; +$LANG["phrase_smart_fill"] = "Smart ifyllning"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart ifyllning av fält från:"; +$LANG["phrase_smart_fill_user_documentation"] = "Användardokumentation för Smart ifyllning »"; +$LANG["phrase_sort_as"] = "Sortera som"; +$LANG["phrase_special_fields"] = "Specialfält"; +$LANG["phrase_standard_fields"] = "Standardfält"; +$LANG["phrase_standard_filters"] = "Standardfilter"; +$LANG["phrase_step_1"] = "Steg 1"; +$LANG["phrase_step_2"] = "Steg 2"; +$LANG["phrase_step_3"] = "Steg 3"; +$LANG["phrase_step_4"] = "Steg 4"; +$LANG["phrase_step_5"] = "Steg 5"; +$LANG["phrase_step_6"] = "Steg 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Rensa taggar i inskick från formulär"; +$LANG["phrase_subject_line"] = "Ärenderad"; +$LANG["phrase_submission_date"] = "Inskickningsdatum"; +$LANG["phrase_submission_id"] = "Inskicknings-ID"; +$LANG["phrase_submission_made"] = "Inskick gjort: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Typ av inskick"; +$LANG["phrase_submissions_per_page"] = "Inskick per sida"; +$LANG["phrase_system_check"] = "Systemkontroll"; +$LANG["phrase_system_fields_no_validation"] = "Du kan inte lägga till validering på systemfält."; +$LANG["phrase_system_time_offset"] = "Tidsanpassning för systemtid"; +$LANG["phrase_tab_label"] = "Fliketikett"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Testa katalogrättigheterna"; +$LANG["phrase_test_submission"] = "Testinskick"; +$LANG["phrase_test_submission_3"] = "3. Testa inskick"; +$LANG["phrase_test_submission_received"] = "Testinskick mottaget"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "E-brev textversion"; +$LANG["phrase_text_template"] = "Textmall"; +$LANG["phrase_the_previous_month"] = "Föregående månad"; +$LANG["phrase_theme_description"] = "Temabeskrivning"; +$LANG["phrase_theme_info"] = "Temainfo"; +$LANG["phrase_tiny_30px"] = "Pytteliten (30px)"; +$LANG["phrase_tiny_50px"] = "Pytteliten (50px)"; +$LANG["phrase_total_results_c"] = "Totalt resultat:"; +$LANG["phrase_type_c"] = "Feltyp:"; +$LANG["phrase_unselect_all"] = "Välj bort alla"; +$LANG["phrase_update_accounts"] = "Uppdatera konton"; +$LANG["phrase_update_email_template"] = "Uppdatera e-postmallen"; +$LANG["phrase_update_field"] = "Uppdatera fält"; +$LANG["phrase_update_order"] = "Uppdatera ordning"; +$LANG["phrase_update_view"] = "Uppdatera vyn"; +$LANG["phrase_upload_file"] = "Ladda upp fil"; +$LANG["phrase_upload_files"] = "Ladda upp filer"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Sökväg för uppladdningskatalog"; +$LANG["phrase_upload_folder_url"] = "URL för uppladdningskatalog"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Använda standardvärde?"; +$LANG["phrase_used_by_num_form_fields"] = "Används av # formulärfält"; +$LANG["phrase_uses_swatches"] = "Använder färgpaletter"; +$LANG["phrase_valid_email"] = "Giltig e-post"; +$LANG["phrase_validation_error"] = "Valideringsfel"; +$LANG["phrase_validation_rule"] = "Valideringsregel"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Visa grupp"; +$LANG["phrase_view_id"] = "Granska ID"; +$LANG["phrase_view_name"] = "Se namn"; +$LANG["phrase_view_placeholders"] = "Visa platshållare"; +$LANG["phrase_view_submissions"] = "Granska inskick"; +$LANG["phrase_view_uploaded_files"] = "granska uppladdade filer"; +$LANG["phrase_viewing_range"] = "[granskar {\$startnum} till {\$endnum}]"; +$LANG["phrase_when_sent"] = "Vid skickat"; +$LANG["phrase_when_submission_is_deleted"] = "När inskick är borttaget"; +$LANG["phrase_when_submission_is_edited"] = "När inskicket ändras"; +$LANG["phrase_who_can_access"] = "Vem ska ha åtkomst?"; +$LANG["phrase_word_limit_p"] = "ordgräns."; +$LANG["phrase_year_to_date"] = "Hittills i år"; +$LANG["phrase_yes_for_all_views"] = "Ja, för alla vyer"; +$LANG["phrase_yes_for_specific_views"] = "Ja, för specifika vyer"; +$LANG["phrase_your_account"] = "Ditt konto"; +$LANG["phrase_your_email"] = "Din e-post"; +$LANG["phrase_your_email_address"] = "Din e-postadress"; +$LANG["processing_form_disabled"] = "Tyvärr, detta formulär har stängts av."; +$LANG["processing_form_incomplete"] = "Tyvärr så verkar inte detta formulär vara helt och hållet inställt inifrån Form Tools. Troligtvis beror detta på att du tagit bort det gömda formulärfältet \"form_tools_initialize_form\" från webbsidans formulärkod, men utan att fullfölja alla stegen i processen \"Lägg till formulär\".

    Logga in igen och granska formulärets konfiguration."; +$LANG["processing_init_complete"] = "Tack! Ditt testinskick har passerat igenom systemet som det ska. Gå nu tillbaka till Form Tools administrationspanel och klicka på knappen \"Ladda om\" på sidan Lägg till formulär, steg 3, för att färdigställa inställningen av ditt formulär."; +$LANG["processing_invalid_form_id"] = "Tyvärr verkar inte detta vara ett giltigt formulärID."; +$LANG["processing_no_form_id"] = "process.php kräver ett formulär-ID för sina processer. Kontrollera därför att ditt formulär innehåller ett gömt fält med namnet \"form_tools_form_id\" som skickar vidare formulärets ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Tools kan inte bestämma vart den ska omdirigera när ett misslyckat försök att ange CAPTCHA sker. Du behöver lägga till ett gömt (hidden) fält med namnet form_tools_form_url som innehåller URL till formuläret."; +$LANG["processing_no_post_vars"] = "process.php tar inte emot någon data. Observera att detta script inte kan laddas direkt i din webbläsare.
    Se till så att ditt formulär verkligen skickar data med hjälp av POST."; +$LANG["processing_no_redirect_url"] = "Inskicket processades som det skulle men du har inte angett ett omdirigerings-URL för formuläret! Ändra ditt formulär i Form Tools gränssnitt och lägg till en omdirigeringsadress."; +$LANG["special_language"] = "Swedish"; +$LANG["special_language_locale"] = "Swedish"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Alla nya klientkonton skapas med de inställningar och rättigheter som definieras här nedan. För att ändra dessa inställningar för en speciell klient så får du ändra i klientkontot direkt via dess inställningsflik."; +$LANG["text_add_form_choose_integration_method"] = "Välj vilken metod du vill använda för att integrera ditt formulär med Form Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Denna metod använder Form Tools API , som ingår i Form Tools huvudscript. APIn ger tillgång till ett antal användbara funktioner som gör jobbet med att integrera ditt formulär med Form Tools så enkelt som möjligt. Det finns inga begränsningar för hur formuläret kan skickas in när du använder API:et. Du kan skicka in innehållet på en gång, eller sida för sida, du kan lägga till dina egna server-side valideringar, CAPTCHA-bilder, du kan välja att skicka in information nu, men bara visa den i Form Tools användargränssnitt vid en senare tidpunkt (se avsnittetFinalized Submissions i API-hjälpdokumentation)."; +$LANG["text_add_form_code_submission_drawbacks"] = "För att skicka in din formulärdata via PHP, måste formuläret finnas på samma webbplats som denna Form Tools installation. För icke-tekniska och oerfarna Form Tools-användare, kan denna metod vara lite skrämmande i början. Men det finns gott om dokumentation för att hjälpa dig, inklusive två enkla steg-för-steg-beskrivningar för att integrera dina en-och flersidiga formulär (dessa kopplas på i ett senare skede)."; +$LANG["text_add_form_direct_submission_benefits"] = "Det här är det enklaste sättet att skicka in dina formulärdata till Form Tools. Det kräver ingen förkunskap om PHP och innebär bara en väldigt liten förändring i din formulärkod. Det passar utmärkt för mindre formulär där du bara vill att besökaren ska skicka in sina data till databasen och därefter slussas vidare till en tacksida."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Denna inskickningsmetod är väldigt enkel att använda men ger inte mycket kontroll för mer komplicerade formulär. Formulär som sträcker sig över flera sidor eller som kräver serverbaserad validering passar bättre med den andra metoden: att skicka formulären via Form Tools API."; +$LANG["text_add_form_field_types1"] = "Nästan klart! Denna sida försöker hitta alla dina formulärfält och bestämma deras fälttyper. Klicka på Smart ifyllningsknappen till höger för att komma igång. Du kommer att endast tillåtas att gå vidare när alla åtgärder har genomförts. Saker som behöver din uppmärksamhet visas i kolumnen \"Åtgärder krävs \"."; +$LANG["text_add_form_field_types2"] = "Om formuläret inte är i HTML, klicka på knappen Hoppa över steg för att fortsätta. Allt detta kan konfigureras senare."; +$LANG["text_add_form_field_types3"] = "Detta laddar om innehållet i dina formulär. Obs: detta kommer att skriva över alla ändringar du har gjort på denna sida."; +$LANG["text_add_form_field_types4"] = "Om du stöter på problem, klicka här för att hoppa över detta steg. Alla olösta fält är inställda för att använda standardvärden. Du kan anpassa dessa fält senare."; +$LANG["text_add_form_field_types_manual_upload"] = "Om du inte har kunnat använda Smart ifyllning av dina fält, kanske du vill prova en alternativ lösning: ladda upp kopior av dina formulär via fälten nedan."; +$LANG["text_add_form_field_types_manual_upload2"] = "Observera: ladda inte upp rena PHP-sidor (eller annan serversideskod) - ladda bara upp HTML-versionerna. För att komma åt HTML-versionerna kan du granska och spara sidorna direkt från din webbläsare."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Det fanns flera fält som inte kunde hittas i formulärsidan du angav. Troligtvis beror det på något av följande:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Du har angett en eller flera webbadresser till ditt flersidiga formulär felaktigt."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "En eller flera sidor på ditt formulär är skyddade med lösenord och scriptet kunde inte komma åt sidan."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Du har angett fel webbadress till formuläret."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Klicka här för att återgå till Formulärsinformationssidan för att kontrollera dina inställningar."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Du har ändrat ditt/dina formulär efter att ha gjort testinskicket."; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Klicka här för att skicka igenom ett nytt testinskick."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Ditt formulär är lösenordsskyddat och scriptet kunde inte komma åt sidan."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "I en annan flik eller ett nytt fönster i den här webbläsaren, logga in till ditt formulär och klicka sedan på Ladda om sida -knappen nedan för att försöka återfinna fälten."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Om ingen av ovanstående lösningar fungerar kan du också prova att manuellt lägga upp dina formulär för bearbetning ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Det fanns flera fält som inte kunde hittas i formulärsidorna du angav. Troligtvis beror det på något av följande:"; +$LANG["text_add_form_help_link"] = "Om du stöter på några problem under dessa steg, läs gärna vår användardokumentation ."; +$LANG["text_add_form_step_1_text_1"] = "De följande sidorna guidar dig genom de olika stegen som krävs för att ställa in Form Tools så att det lagrar dina formulärinskick på rätt sätt. Innan du börjar, försäkra dig om att:"; +$LANG["text_add_form_step_1_text_2"] = "ditt formulär är färdigt och nåbart via en webbadress (URL) (localhost funkar bra)"; +$LANG["text_add_form_step_1_text_3"] = "du kan ändra i din formulärkod"; +$LANG["text_add_form_step_2_para_2"] = "Öppna ditt formulär i en valfri kodredigerare och ändra din formulärtagg till följande, inklusive de två gömda (hidden) fälten."; +$LANG["text_add_form_step_2_para_3"] = "Härnäst så öppnar du ditt formulär i ett nytt webbläsarfönster. Fyll i alla fält och skicka in det. Efter inskicket så bör du se ett meddelande från systemet. När du sett meddelandet ska du återvända till den här sidan och klicka på knappen \"Ladda om sidan\" här nedan. När omladdningen av sidan är klar så kommer du att se en \"Fortsätt\"-knapp nedan som tar dig till nästa steg."; +$LANG["text_add_form_step_2_para_6"] = "I ditt formulärinskick, inkludera följande värden. De kan ställas in direkt via PHP eller skickas vidare genom formuläret i sig. Här nedan ser du olika exempel på båda sätten. {\$varname} är en \"hash\" (också kallad associativ array) över all information om formulärinskicken. Detta är vanligtvis variablerna {\$postvar} eller {\$sessionvar} men kan även vara individuellt anpassade."; +$LANG["text_add_form_step_2_text_2"] = "Skriv in adressen till din \"tacksida \" här. Det är sidan du vill att folk ska skickas till efter att formuläret har lämnats in."; +$LANG["text_add_form_step_3_para_1"] = "Denna sida listar alla fält från ditt formulärinskick. Kontrollera varje fält så att inget saknas och ta bort de eventuella fält som du inte anser dig behöva lagra från inskicken (t ex värdet från knappen Skicka i formuläret). Om du råkar ta bort ett fält av misstag, eller vill ändra informationen som lagras från ditt formulär kan du gå tillbaka till föregående sida och göra ett nytt testinskick."; +$LANG["text_add_form_step_3_para_2"] = "VIKTIGT: om du skickar in flervalsalternativ via kryssrutor eller en flervalsruta bör du kontrollera att fältnamnet slutar med tecknen [] (se användardokumentationen för mer information)."; +$LANG["text_add_form_step_3_text_1"] = "Det är nu det roliga börjar! Just nu väntar Form Tools på ett testinskick från ditt formulär. Det kommer att använda detta formulärinskick för att lära sig vilken information som ska lagras i databasen."; +$LANG["text_add_form_step_3_text_2"] = "genom att peka ditt formulär till Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "använda dig av Form Tools API"; +$LANG["text_add_form_step_3_text_4"] = "För hjälp med att integrera ditt formulär rekommenderar vi dig att läsa en av följande handledningar:"; +$LANG["text_add_form_step_3_text_5"] = "De förklarar hur du ställer in ditt formulär för att förbereda ett testinskick och innehåller även annan information som kan vara till hjälp. Den PHP-rad du kommer att behöva är:"; +$LANG["text_add_form_step_3_text_6"] = "Detta försäkrar att data verkligen skickas vidare till Form Tools. När du har skickat igenom ditt testinskick så klickar du på knappen nedan."; +$LANG["text_add_form_step_3_text_7"] = "På sidan INNAN din slutliga \"tacksida\" bör du försäkra dig om att lägga till följande parameter till variabeln \$params:"; +$LANG["text_add_form_step_5_para_1"] = "Databasen har ställts in för detta formulär och formuläret har aktiverats för användning. Om du gjorde inskicket genom att peka till process.php via ditt formulär ska du nu gå tillbaka till formulärkoden och ta bort följande gömda fält:"; +$LANG["text_add_form_step_5_para_2"] = "Gå därefter till din \"tacksida\" för att tömma sessionen. När detta väl är gjort så kommer alla nya formulärinskick att processas och lagras av Form Tools. Testa ett par inskick för att försäkra dig om att allt fungerar som det ska."; +$LANG["text_add_form_step_5_para_3"] = "Om du vill finjustera ditt formulär med alternativ som automatisk e-post, lägga till extra formulärfält eller anpassa formulärfältstyperna så kan du ändra ditt formulär när du vill."; +$LANG["text_add_form_step_5_para_4"] = "Eftersom ditt formulär innehåller filuppladdningsfält så behöver du ställa in varje fält för att specificera uppladdningskatalogen, vilka filer som tillåts och maxstorleken. Detta kan göras via e Visningsfliken på formulärets redigeringssida."; +$LANG["text_add_form_step_5_para_5"] = "Om inskicket gjordes med hjälp av API:et så ska du nu ändra raden ft_api_init_form_page på första sidan av ditt formulär till:"; +$LANG["text_add_submission_button"] = "Knappen Lägg till inskick visas bara i vyer som har alternativet \"Kan lägga till inskick\" angivet som \"Ja \"."; +$LANG["text_admin_email_placeholder_info"] = "Detta är e-postadressen till Form Tools administratör som definierats i kontoinställningarna. E-postadressen visas bara som text så om du vill göra en HTML-länk av den behöver du baka in den i en -tagg på det här viset:
    <a href=\"mailto:{\$ADMINEMAIL}\">{\$ADMINEMAIL}</a>"; +$LANG["text_also_default_login_page_theme"] = "(också förvalt tema för inloggningssidan)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the
    instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Först, välj din formulärtyp."; +$LANG["text_client_form_page"] = "Den här sidan listar alla formulär och vyer som associeras till denna klient. Ett tips: för att klienten ska kunna se inskicken från ett formulär så måste de associeras till minst en vy."; +$LANG["text_client_map_filters_desc1"] = "Mappningsfilter för klienter låter dig begränsa inskicken som visas i denna vy genom att mappa värden i ett formulärfält mot värden i ett klientkonto."; +$LANG["text_client_no_forms"] = "Just nu har du inga formulär tillgängliga för granskning."; +$LANG["text_client_welcome"] = "Välkommen! Det här programmet lagrar all information som skickats in från din webbsidas besökare. För att se inskicken från ett formulär så klickar du bara på länken Granska eller går till vänster navigeringsmeny för andra alternativ."; +$LANG["text_config_file_created"] = "Din config.php-fil har skapats."; +$LANG["text_config_file_not_created"] = "Vi kunde inte skapa din config.php-fil, så du måste skapa den för hand."; +$LANG["text_config_file_not_created_instructions"] = "Kopiera och klistra in innehållet från nedanstående text i en ny fil som du döper till config.php. Ladda sedan upp den via FTP till din installation av Form Tools, katalogen /global (den katalogen innehåller också några andra filer och underkataloger samt library.php)."; +$LANG["text_confirm_delete_form"] = "Ja, jag vill ta bort detta formulär"; +$LANG["text_create_admin_account"] = "Nu ska vi skapa administratörskontot. Det används för att hantera ALLA aspekter av Form Tools som t ex att lägga till formulär och skapa klientkonton."; +$LANG["text_create_new_client_account"] = "Använd formuläret nedan för att skapa ett nytt klientkonto. Alla fält måste fyllas i."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "se php-funktionen {\$datefunctionlink} för formateringsalternativ"; +$LANG["text_default_file_settings_page"] = "Den här sidan definierar inställningarna för filuppladdning i din Form Tools installation. Dessa regler gäller för alla filer som laddas upp genom Form Tools om du inte explicit har undantagit ett speciellt formulärfält någonstans. Observera att om du ändrar uppladdningskatalog efter det att filer har börjat laddas upp så kommer de filerna automatiskt att flyttas till den nya katalogen."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Innan du fortsätter behöver du uppdatera din katalog /themes/default/cache till att tillåta fulla läs- och skrivrättigheter. När det väl är gjort kommer detta meddelande att försvinna och du kan installera scriptet."; +$LANG["text_default_values_in_view"] = "Denna del är valfri. Alla inskick som skapas med den här vyn kommer att innehålla de standardvärden som anges här."; +$LANG["text_delete_all_forms"] = "Jag vill ta bort alla filer som har laddats upp via detta formulär"; +$LANG["text_delete_form_warning"] = "Är du säker på att du vill ta bort detta formulär? Denna åtgärd kan inte ångras och ALL data kommer att försvinna för alltid!"; +$LANG["text_edit_admin_menu_page"] = "Du kan ändra din meny här nedan. För att försäkra dig om att du alltid har åtkomst till tillgänglig funktionalitet inom Form Tools så behövs följande sidori din meny: Formulär, Klienter, Ditt konto, Moduler, Inställningar och Logga ut."; +$LANG["text_edit_client_menu_page"] = "Den här sektionen låter dig anpassa den vänstra navigationskolumnen för varje användare/klient. Du kan skapa så många olika klientmenyer som du vill och tilldela vilket konto som helst till dem. Till att börja med så finns det två menyer; en för dig som administratör och en för alla dina klientkonton. Administratörskontot kan ändras men inte tas bort."; +$LANG["text_edit_tab_summary"] = "Om du vill gruppera denna vys fält i flikar, ange bara fliknamnen nedan. Efter att du är klar, välj lämplig flik för varje fältgrupp i Fältfliken ."; +$LANG["text_edit_view_list_page"] = "Den här fliken styr vilka fält som visas som kolumner på sidan för listning av inskick och några ytterligare inställningar för dessa fält. Obs: Vi rekommenderar att du inte lägger mer än 4 eller 5 av de viktigaste fälten i vyn."; +$LANG["text_email_settings_intro"] = "Denna sida låter dig identifiera vilka av dina formulärfält som lagrar e-postadresser och deras motsvarande namn. När du väl har definierat dem kan du använda dem i dina e-postmallar som mottagare. Detta avsnitt är helt valfritt."; +$LANG["text_email_tab_summary"] = "Den här sektionen låter dig konstruera valfritt antal e-brev som skickas när ditt formulär skickas in (eller ev andra händelser)."; +$LANG["text_email_template_tab"] = "Den här sektionen låter dig bestämma vad som ska stå i e-brevet. Om du vill skicka ditt brev som antingen vanlig text eller HTML så anger du värden för det alternativet. Om du anger ett värde för både vanlig text och HTML så skickas brevet i båda formaten."; +$LANG["text_email_template_text_1"] = "Det har kommit ett inskick via ditt formulär {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Det har kommit ett inskick via ditt formulär {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Tack för ditt inskick! "; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Felmeddelande att visa om fältets validering misslyckas"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Externa formulär är formulär som redan finns på din webbplats, eller någon annanstans på webben. Välj detta alternativ om du har ett eget formulär som du vill integrera med Form Tools."; +$LANG["text_fields_tab_summary"] = "Denna sida listar alla dina formulärfält. För att kontrollera hur de visas när du bläddrar runt bland inskicken, se Vyfliken . Att ta bort ett fält på denna sida kommer att ta bort det från alla inskick, så var försiktig!"; +$LANG["text_file_extension_info"] = "Ange filnamntilläggen separerade med kommatecken (t ex: jpg,gif,doc,png) eller lämna fältet blankt för att tillåta ALLA filtyper."; +$LANG["text_file_field_placeholders_info"] = "Filfält har två speciella placeringshållare: FILEURL och FILENAME. FILEURL är den fulla URL-adressen till filen så du kan länka till den direkt i dina e-brev; FILENAME är just precis filnamnet."; +$LANG["text_filters_page"] = "Endast de inskick som stämmer in på dina filterregler som du definierar här kommer att synas i denna vy."; +$LANG["text_filters_tips"] = "För tips om hur du använder inskicksfilter, se Användardokumentationen."; +$LANG["text_forgot_password"] = "Inga problem, ange bara ditt användarnamn här nedan så kommer din inloggningsinformation att skickas till den e-postadress som vi har lagrad om dig. Om du har glömt även ditt användarnamn, kontakta webbplatsens administratör på {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Detta formulär innehåller ett eller flera fält för filuppladdning:"; +$LANG["text_form_placeholder_info"] = "Följande platshållare kan användas i alla e-brevsmallar och språks platshållarfält , oavsett vilken vy som e-postmallen är kopplad till. Platshållarna som börjar med QUESTION representerar det specifika formulärets frågor och platshållarna ANSWER representerar det inskickade värdet på frågorna."; +$LANG["text_form_submission_date_placeholder"] = "Det datum då inskicket gjordes."; +$LANG["text_form_tools_form_url"] = "Den fullständiga webbadressen till formuläret. Detta är bara viktigt för externa formulär."; +$LANG["text_form_tools_login_url"] = "URL för inloggning till Form Tools"; +$LANG["text_form_view_permission_info_admin"] = "Obs: detta formulär har för närvarande åtkomsttypen satt till Administratör, så inget av klientkontona kommer att kunna se denna vy."; +$LANG["text_form_view_permission_info_private"] = "Obs: detta formulär har för närvarande åtkomsttypen satt till Privat vilket innebär att de publika och privata alternativen här kommer att begränsas till den delmängden av klenter."; +$LANG["text_ft_installed"] = "Gratulerar! Form Tools har nu installerats."; +$LANG["text_global_placeholder_info"] = "Dessa placeringshållare kan användas i valfri mall och valfritt formulär."; +$LANG["text_group_name_explanation"] = "För fält som lagts till genom processen \"Lägg till formulär\" har detta värde fyllts i i förväg med text från det fält som använder värdet. Du kanske vill ändra det för att bättre motsvara innehållet."; +$LANG["text_install_create_config_file"] = "Form Tools lagrar dina server- och databasinställningar i en fil kallad config.php som du hittar i katalogen /global/. Klicka på knappen \"Skapa fil\" för att automatiskt skapa denna fil på din server."; +$LANG["text_install_create_database_tables"] = "Nu ska vi skapa Form Tools databastabeller. Detta steg kräver att databasen i sig redan är skapad. Om du inte är säker på hur du ska göra detta, kontakta din webbplatsleverantör."; +$LANG["text_install_db_tables_error_tip_1"] = "\"Unknown MYSQL Server Host\" betyder vanligtvis att värdnamnet du angett är felaktigt. Försök kanske att ange detta till \"localhost\" istället. Det är ett vanligt sätt att referera till den \"lokala\" databasen på servern där du har din webbplats."; +$LANG["text_install_db_tables_error_tip_2"] = "\"Can't connect to local MySQL server through socket\" innebär även det att värdnamnet för databasen är felaktigt, eller att sökvägen till MYSQL är felaktig (kan t ex hända vid installation på egen dator)."; +$LANG["text_install_db_tables_error_tip_3"] = "\"Access denied for user:\" innebär att något är fel på kombinationen användarnamn/lösenord."; +$LANG["text_install_db_tables_error_tip_4"] = "\"Access denied for user: ... to database ...\" innebär att även om ditt användarnamn och lösenord är korrekt så kunde inte systemet koppla upp sig mot just den specifika databasen med det kontot. Detta kan bero på att antingen databasnamnet är felaktigt eller att detta konto inte är associerat med denna databas."; +$LANG["text_install_email_content_text"] = "Det finns många resurser på vår hemsida för att hjälpa dig att komma igång, inklusive vår online dokumentation (https://docs.formtools.org) och handledning (https://docs.formtools.org/tutorials). Om du tycker att du fastnar eller har en fråga, ställ en fråga på github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Tyvärr så kommer inte Form Tools att kunna köras på din server. Läs om minimikraven här."; +$LANG["text_install_system_check"] = "Den här sidan kör några tester av ditt system för att försäkra att det kan använda sig av Form Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Interna formulär existerar endast inom Form Tools - inte någon annanstans på din webbplats. Endast Form Tools användarkonton kommer att ha tillgång till formuläret. Välj detta alternativ om du inte har ett befintligt formulär."; +$LANG["text_internal_form_intro"] = "Använd formuläret nedan för att skapa ett nytt internt formulär. Alla inställningar, inklusive antalet och innehållet i formulärfälten kan ändras och konfigureras senare."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "För att du ska kunna logga in och använda Form Tools måste du ha aktiverat tillåtelse att köra Javascript i din webbläsare. Aktivera det nu och ladda sedan om denna sidan."; +$LANG["text_last_modified_date_explanation_c"] = "Senast det här inskicket ändrades. För nya inskick är detta detsamma som:"; +$LANG["text_limit_email_content_desc"] = "Det här alternativet fungerar bara för HTML och textinnehåll som genereras med Smarty loopar."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(lista bara vyer med ett eller flera filter definierade)"; +$LANG["text_log_in_to_ft"] = "Logga in till Form Tools"; +$LANG["text_login"] = "Logga in nedan för att komma åt {\$program_name} Administrationspanel. Om du har glömt ditt lösenord, klicka här."; +$LANG["text_login_info"] = "Här är inloggningsinformationen du begärde."; +$LANG["text_name_of_form"] = "Namnet på formuläret."; +$LANG["text_no_clients"] = "Det finns just nu inga klienter i databasen. För att lägga till ett nytt klientkonto så klickar du på knappen Lägg till klient här nedan."; +$LANG["text_no_clients_found"] = "Inga klienter kunde hittas. Försök att vidga din sökning något."; +$LANG["text_no_fields_in_view"] = "Denna vy har inga fält i sig. Klicka på länken nedan."; +$LANG["text_no_forms"] = "Det finns just nu inga formulär i databasen. För att lägga till ett nytt formulär så klickar du på knappen Lägg till formulär här nedan."; +$LANG["text_no_forms_found"] = "Inga formulär hittades."; +$LANG["text_no_forms_found_search"] = "Inga formulär hittades. Försök att utvidga dina sökkriterier."; +$LANG["text_no_modules_found"] = "Inga moduler kunde hittas. Försök vidga sökningen lite."; +$LANG["text_no_recipients_added"] = "Inga mottagare har lagts till."; +$LANG["text_no_search_results"] = "Det finns inga resultat med dessa sökkriterier/vyer."; +$LANG["text_no_submissions_found"] = "Tyvärr, inga inskick kan hittas."; +$LANG["text_no_themes"] = "Du har inga definierade teman. Klicka på knappen nedan för att uppdatera din temalista eller läs mer i Form Tools användardokumentation kring hur du gör för att lägga till teman."; +$LANG["text_non_deletable_fields"] = "Det här fältet används av Core-skriptet och kan inte ändras eller tas bort utan att orsaka kompatibilitetsproblem. Om du vill göra ändringar av fälttypen, gör en kopia av den och redigera kopian."; +$LANG["text_option_list_group_explanation"] = "Om detta är valt kan du gruppera dina alternativ. Hur grupperna visas beror på fälttypen som använder denna alternativlista."; +$LANG["text_option_list_page"] = "Fält med radioknappar, kryssrutor, rullgardinsmenyer och flervalsmenyer förser alla användaren med olika typer av alternativ där han eller hon kan välja ett eller flera på en gång. I Form Tools är de här kända som Alternativlistor. Generellt sett så skapas de automatiskt av processen Lägg till externt formulär , men du kan manuellt lägga till eller ändra dina alternativlistor här nedan om ditt formulärinnehåll ändras eller om du konstruerar fält som bara används internt."; +$LANG["text_option_list_used_by_fields"] = "Denna alternativlista används av flera formulärfält. Om du uppdaterar informationen nedan, kommer den att ändras för alla fält (se fliken Formulärfält för att se listan med fält). Om du vill uppdatera värden för ett eller en delmängd av de fält som för närvarande tilldelats, klicka här för att skapa en ny Alternativlista med samma värden som denna. Sedan kan du tilldela de formulärfält som du vill den nya gruppen."; +$LANG["text_public_form_omit_list_page"] = "Publika formulär ger fördelen att alla dina klientkonton kan nå dem utan att du manuellt behöver tilldela varje klient till dem. Den här sidan låter dig peka ut exakt vilka klienter som INTE ska komma åt detta formulär, trots att det är angett som publikt."; +$LANG["text_public_view_omit_list_page"] = "Publika vyer ger dig fördelen att låta alla klientkonton komma åt dem utan du manuellt behöver tilldela varje klient till dem. Den här sidan låter dig ange exakt vilka klienter som INTE ska ha åtkomst till just denna vy."; +$LANG["text_reference_tab_info"] = "Denna sida listar alla platshållare för ditt formulär. Platshållare är textsträngar som kan användas i e-postmallarna och fält märkta med en speciell platshållarikon . När de anges i ett fält omvandlas de dynamiskt till rätt värde när fältet visas eller när e-brevet skickas."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Läs igenom användardokumentationen."; +$LANG["text_send_email_from_edit_submission_page"] = "Inkludera alternativet att skicka detta e-brev via sidan \"Ändra inskick\"."; +$LANG["text_smart_fill_option_list_problem"] = "Vi kunde inte använda Smart ifyllning för dina fältalternativ. Men du kan istället försöka ladda upp en kopia av din formulärsida i fältet nedan. Observera: ladda inteupp rena PHP-sidor (eller annan serversideskod) - ladda bara upp HTML-versionerna. För att komma åt HTML-versionerna kan du granska och spara sidorna direkt från din webbläsare."; +$LANG["text_submission_ip_address"] = "IP-adressen till besökaren som skickade in formuläret."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Använd formuläret nedan för att antingen granska eller skicka dig själv ett e-brev som skapats från denna brevmall. Brevet skickas endast till e-postadressen som anges här nedan. Huvudmottagare, kopia-till och dold kopia-till ignoreras medan du testar."; +$LANG["text_test_email_templates_no_submissions"] = "För att testa e-brevsmallarna måste du först skicka igenom minst ett formulärinskick."; +$LANG["text_theme_page_intro"] = "Den här sidan listar alla dina teman. Klicka på en tumnagelbild för att se en större version av temats design. Kryssrutan \"På\" avgör huruvida temat kan väljas av en klient eller inte. För att bläddra mellan alla tillgängliga teman, besök Form Tools webbsida."; +$LANG["text_tutorial_adding_first_form"] = "Guide: Att lägga till ditt första formulär!"; +$LANG["text_unique_submission_id"] = "Det unika inskicknings-ID:t"; +$LANG["text_unused_option_list"] = "Denna alternativlista används inte av något formulärfält."; +$LANG["text_upgraded"] = "Din installation har uppgraderats till version {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Denna alternativlista används av följande fält."; +$LANG["text_view_fields_info"] = "Den här fliken styr vilka fält som dyker upp när du redigerar ett inskick i den här vyn, deras ordning och om de är redigerbara eller inte."; +$LANG["text_view_tab_summary"] = "Den här fliken låter dig skapa olika sätt att gruppera och ordna dina data. Vyer låter dig skapa anpassade delmängder av dina formulärdata för att dela upp det i hanterbara bitar, och att begränsa vad kunderna kan se eller redigera."; +$LANG["validation_account_disabled"] = "Tyvärr så har ditt konto stängts av."; +$LANG["validation_account_not_recognized"] = "Tyvärr så känns inte det användarnamnet igen."; +$LANG["validation_account_not_recognized_info"] = "Tyvärr så kunde inte det användarnamnet hittas. Försök igen eller kontakta webbplatsens administratör på adressen här nedan."; +$LANG["validation_account_pending"] = "Ditt användarkonto väntar på att godkännas av en administratör."; +$LANG["validation_check_delete_client"] = "Är du säker på att du vill ta bort denna klients konto?"; +$LANG["validation_client_password_missing_number"] = "Kundens lösenord måste innehålla minst ett nummer (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Kundens lösenord måste innehålla minst ett av följande tecken: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Kundens lösenord måste innehålla minst en stor bokstav."; +$LANG["validation_client_password_too_short"] = "Kundens lösenord måste minst innehålla {\$number} tecken."; +$LANG["validation_col_name_is_reserved_word"] = "Tyvärr, det här kolumnnamnet i databasen är reserverat för MySQL. Välj ett annat i stället!"; +$LANG["validation_db_name"] = "Databasnamn kan inte innehålla perioder eller snedstreck."; +$LANG["validation_db_not_updated_invalid_input"] = "Databasen kunde inte uppdateras. Kontrollera att värdena du angav är giltiga."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Tyvärr, de förvalda administratörs- och klientteman måste alltid vara påslaget."; +$LANG["validation_default_phone_num_required"] = "Fyll i det fullständiga telefonnumret i fältet {\$field} - endast siffror."; +$LANG["validation_default_rule_alpha"] = "Du kan bara skriva bokstäver och siffror i fältet {\$field}."; +$LANG["validation_default_rule_letters_only"] = "Du kan bara skriva bokstäver i fältet {\$field}."; +$LANG["validation_default_rule_numbers_only"] = "Du kan bara ange siffror i fältet {\$field}."; +$LANG["validation_default_rule_required"] = "Ange ett värde för fältet {\$field}."; +$LANG["validation_default_rule_valid_email"] = "Ange en giltig e-postadress för fältet {\$field}."; +$LANG["validation_delete_form_confirm"] = "Kryssa i rutan för att bekräfta att du vill ta bort det här formuläret."; +$LANG["validation_delete_non_empty_option_list"] = "Varning! Denna alternativlista används av ett eller flera formulärfält. Att ta bort det kommer att innebära att dessa fält slutar att fungera som de skall."; +$LANG["validation_display_names_incomplete"] = "Ange ett värde för alla Visningsnamn, eller klicka på alternativet Smart ifyllning för att fylla i dem dynamiskt."; +$LANG["validation_duplicate_form_field_name"] = "Du kan inte ha flera fält med samma fältnamn."; +$LANG["validation_email_not_found_or_invalid"] = "Tyvärr så existerar inte e-postadressen kopplad till ditt konto eller så är det ogiltigt."; +$LANG["validation_folder_invalid_permissions"] = "För att köra detta test så måste rättigheterna på uppladdningskatalogen ställas in för att tillåta läsning och skrivning till fil (777 på unix)."; +$LANG["validation_folder_not_writable"] = "Katalogen är inte skrivbar."; +$LANG["validation_internal_form_too_many_fields"] = "Tyvärr kan du bara skapa formulär med 1000 fält eller mindre."; +$LANG["validation_invalid_admin_email"] = "Ange en giltig e-postadress till administratören."; +$LANG["validation_invalid_admin_username"] = "Ditt användarnamn kan endast bestå av alfanumeriska tecken (a-Z och 0-9)."; +$LANG["validation_invalid_client_username"] = "Klientens användarnamn kan bara innehålla alfanumeriska tecken (a-Z och 0-9)."; +$LANG["validation_invalid_client_username2"] = "Tyvärr så kan användarnamnet bara innehålla bokstäver, siffror och understrykningstecknet. Ange ett nytt användarnamn."; +$LANG["validation_invalid_column_name"] = "Kolumnnamn kan endast bestå av alfanumeriska tecken (a-Z, 0-9). Kontrollera kolumnnamnen."; +$LANG["validation_invalid_custom_from_email"] = "Ange en giltig, anpassad, Från-adress."; +$LANG["validation_invalid_custom_reply_to_email"] = "Ange en giltig anpassad e-postadress för 'Svar till'."; +$LANG["validation_invalid_default_sessions_timeout"] = "Ange ett giltigt värde (ett nummer) för den förvalda timeouten av sessioner."; +$LANG["validation_invalid_email"] = "Fyll i en giltig e-postadress."; +$LANG["validation_invalid_email_id"] = "Tyvärr så är det inte ett giltigt ID för e-postadress."; +$LANG["validation_invalid_folder"] = "Tyvärr så verkar inte det vara en giltig katalog."; +$LANG["validation_invalid_form_field_names"] = "Formulärfält kan bara innehålla alfanumeriska tecken och understrykningstecken (a-Z, 0-9, _) utan mellanrum."; +$LANG["validation_invalid_num_clients_per_page"] = "Du kan bara fylla i siffror i fältet för antal klienter per sida."; +$LANG["validation_invalid_num_emails_per_page"] = "Skriv bara siffror i rutan för antalet e-brev per sida."; +$LANG["validation_invalid_num_form_fields"] = "Skriv bara siffror i antalet fält."; +$LANG["validation_invalid_num_forms_per_page"] = "Du kan bara fylla i siffror i fältet för antal formulär per sida."; +$LANG["validation_invalid_num_menus_per_page"] = "Skriv bara siffror vid antalet menyer per sida."; +$LANG["validation_invalid_num_modules_per_page"] = "Skriv bara siffror i fältet för antal moduler per sida."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Skriv bara siffror i fältet för antal alternativlistor per sida."; +$LANG["validation_invalid_num_submissions_per_page"] = "Ange ett giltigt nummer för antal inskick per sida."; +$LANG["validation_invalid_sessions_timeout"] = "Timeout av sessioner kan bara skrivas som siffror!"; +$LANG["validation_invalid_tab_assign_values"] = "Skriv bara siffror i fälten för 'Från' och 'till'."; +$LANG["validation_invalid_table_prefix"] = "Ange ett databasprefix som bara består av bokstäver (a-Z) och understrykningsstreck."; +$LANG["validation_invalid_upload_folder"] = "Din servinstallation av PHP har ett ogiltig inställningsvärde för upload_tmp_dir. \"{\$upload_folder}\" är inte en giltig katalog."; +$LANG["validation_invalid_url"] = "Ange ett giltigt URL."; +$LANG["validation_invalid_username"] = "Ditt användarnamn kan endast bestå av alfanumeriska tecken och understrykningsstreck (a-Z 0-9 _)."; +$LANG["validation_is_form_active"] = "Ange om formuläret är aktivt eller inte."; +$LANG["validation_menu_name_taken"] = "Tyvärr så är det menynamnet redan upptaget. Välj ett annat."; +$LANG["validation_modules_search_no_status"] = "Välj antingen kryssrutan för Aktiverad eller Inaktiverad."; +$LANG["validation_no_access_type"] = "Ange åtkomsttypen."; +$LANG["validation_no_account_logout_url"] = "Ange URL till din logga."; +$LANG["validation_no_account_password_confirmed"] = "Fyll i ditt lösenord en gång till."; +$LANG["validation_no_account_password_confirmed2"] = "Skriv in det nya lösenordet igen."; +$LANG["validation_no_admin_email"] = "Ange administratörens e-postadress."; +$LANG["validation_no_admin_theme"] = "Välj tema för administratörskontot."; +$LANG["validation_no_admin_theme_swatch"] = "Välj en färgpalett för administratörstemat."; +$LANG["validation_no_client_email"] = "Ange klientens e-postadress."; +$LANG["validation_no_client_first_name"] = "Ange klientens förnamn"; +$LANG["validation_no_client_last_name"] = "Ange klientens efternamn."; +$LANG["validation_no_client_login_page"] = "Ange vilken sida som klienten ska omdirigeras till när han/hon loggat in."; +$LANG["validation_no_client_password"] = "Ange klientens lösenord."; +$LANG["validation_no_client_theme_swatch"] = "Välj en standardfärgpalett för kundkonton."; +$LANG["validation_no_client_username"] = "Ange klientens användarnamn."; +$LANG["validation_no_column_name"] = "Fyll i alla kolumnnamn, eller klicka på knappen Smart ifyllning för att automatiskt fylla i dem."; +$LANG["validation_no_column_selected"] = "Välj minst ett fält som ska visas som en kolumn på sidan som listar inskicken."; +$LANG["validation_no_custom_from_email"] = "Skriv en anpassad e-postadress i 'Från'."; +$LANG["validation_no_custom_recipient_email"] = "Ange en anpassad mottagningsadress."; +$LANG["validation_no_custom_reply_to_email"] = "Fyll i den anpassade 'Svara till' adressen."; +$LANG["validation_no_date_format"] = "Ange ett datumformat."; +$LANG["validation_no_db_column_single"] = "Ange Databaskolumnens namn."; +$LANG["validation_no_db_hostname"] = "Fyll i databasens värdnamn."; +$LANG["validation_no_db_name"] = "Ange databasens namn."; +$LANG["validation_no_db_username"] = "Fyll i användarnamnet för databasens konto."; +$LANG["validation_no_default_client_theme"] = "Välj vilket tema som ska vara förvalt för alla nya klientkonton."; +$LANG["validation_no_default_language"] = "Välj förvalt språk för din installation av Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Fyll i förvald timeout för användarsessioner."; +$LANG["validation_no_display_text"] = "Ange visningstexten för varje fält."; +$LANG["validation_no_display_text_single"] = "Ange Visningstextens värde."; +$LANG["validation_no_edit_submission_page_label"] = "Ange etiketten för sidan Ändra inskick."; +$LANG["validation_no_email"] = "Fyll i din e-postadress."; +$LANG["validation_no_email_config_field"] = "Specificera vilket formulärfält som är e-postfältet."; +$LANG["validation_no_email_content"] = "Skriv e-brevets innehåll för åtminstone ett av formaten (HTML eller text)."; +$LANG["validation_no_email_from_field"] = "Fyll i e-posten vid 'från' fältet."; +$LANG["validation_no_email_template_name"] = "Skriv e-postmallens namn."; +$LANG["validation_no_email_template_view_id"] = "Välj den vy som e-postmallen ska kopplas till."; +$LANG["validation_no_email_template_view_mapping_value"] = "Ange när du vill att brevet ska skickas."; +$LANG["validation_no_enabled_themes"] = "Försäkra dig om att minst ett tema är påslaget."; +$LANG["validation_no_first_name"] = "Skriv ditt förnamn."; +$LANG["validation_no_form_field_name"] = "Fyll i namnen på alla formulärfält."; +$LANG["validation_no_form_field_single"] = "Ange formulärfältets värde."; +$LANG["validation_no_form_id"] = "Formulär-ID har inte specificerats. Logga ut och försök igen."; +$LANG["validation_no_form_name"] = "Fyll i formulärnamnet."; +$LANG["validation_no_form_url"] = "Fyll i formulärets URL."; +$LANG["validation_no_last_name"] = "Skriv ditt efternamn."; +$LANG["validation_no_login_page"] = "Ange vilken sida du vill skickas till varje gång du loggar in."; +$LANG["validation_no_logout_url"] = "Fyll i utloggnings-URL."; +$LANG["validation_no_main_email_recipient"] = "Ange åtminstone en e-postmottagare (inte som kopia, cc eller dold kopia, bcc)."; +$LANG["validation_no_menu"] = "Välj en meny för detta användarkonto."; +$LANG["validation_no_menu_id"] = "Välj en meny."; +$LANG["validation_no_num_clients_per_page"] = "Ange antal klientkonton per sida."; +$LANG["validation_no_num_emails_per_page"] = "Ange antal e-brev att lista per sida."; +$LANG["validation_no_num_form_fields"] = "Ange antal fält i ditt formulär."; +$LANG["validation_no_num_forms_per_page"] = "Ange antal formulär per sida."; +$LANG["validation_no_num_menus_per_page"] = "Ange antal menyer som ska listas per sida."; +$LANG["validation_no_num_modules_per_page"] = "Ange antal moduler per sida."; +$LANG["validation_no_num_option_lists_per_page"] = "Ange antal alternativlistor per sida."; +$LANG["validation_no_num_submissions_per_page"] = "Ange antal inskick som ska visas per sida."; +$LANG["validation_no_option_list_name"] = "Ange namnet på alternativlistan."; +$LANG["validation_no_page_titles"] = "Ange de förinställda sidotitlarna för användarkonton."; +$LANG["validation_no_password"] = "Fyll i ditt lösenord."; +$LANG["validation_no_program_name"] = "Ange programmets namn"; +$LANG["validation_no_second_password"] = "Skriv in ditt lösenord igen."; +$LANG["validation_no_sessions_timeout"] = "Ange timeout för sessionen."; +$LANG["validation_no_smart_fill_values"] = "Ange formulärfältets namn och URL:en till formuläret."; +$LANG["validation_no_table_prefix"] = "Ange ett databasprefix."; +$LANG["validation_no_tabs_defined"] = "Inga flikar definierade."; +$LANG["validation_no_test_email_recipient"] = "Skriv e-postadressen dit vi ska skicka testbrevet."; +$LANG["validation_no_test_email_submission_id"] = "Ange inskickets ID-nummer."; +$LANG["validation_no_theme"] = "Välj ett tema."; +$LANG["validation_no_theme_swatch"] = "Välj en färgpalett för det valda temat."; +$LANG["validation_no_timezone_offset"] = "Välj tidszonsanpassning."; +$LANG["validation_no_titles"] = "Fyll i sidotitlarna."; +$LANG["validation_no_two_column_names"] = "Tyvärr, du kan inte ange samma namn på en databaskolumn två gånger."; +$LANG["validation_no_ui_language"] = "Välj ett språk för gränssnittet."; +$LANG["validation_no_url"] = "Ange en URL."; +$LANG["validation_no_username"] = "Fyll i ditt användarnamn."; +$LANG["validation_no_username_or_js"] = "Du måste ange ditt användarnamn. Aktivera javascript i din webbläsare."; +$LANG["validation_no_view_fields"] = "Din vy innehåller inga fält! Du måste koppla minst ett fält för att där ska finnas något att visa i vyn."; +$LANG["validation_no_view_fields_selected"] = "Välj ett eller flera fält du vill lägga till i vyn."; +$LANG["validation_no_view_name"] = "Döp din vy."; +$LANG["validation_num_rows_to_add"] = "Ange antal rader att lägga till."; +$LANG["validation_option_list_name_taken"] = "Tyvärr är detta namn på alternativlista redan taget. Välj ett nytt namn."; +$LANG["validation_password_in_password_history"] = "Av säkerhetsskäl kan du inte ange samma lösenord som något av de senaste {\$history_size} lösenorden. Ange ett annat lösenord."; +$LANG["validation_passwords_different"] = "Var noga med att båda lösenorden skrivs likadant."; +$LANG["validation_please_enter_search_date_range"] = "Ange datumområde för sökningen."; +$LANG["validation_please_enter_search_keyword"] = "Ange nyckelordet för sökningen."; +$LANG["validation_select_field_type"] = "Välj en fälttyp."; +$LANG["validation_select_submissions_to_copy"] = "Var god välj de inlägg som du vill kopiera."; +$LANG["validation_select_submissions_to_delete"] = "Välj de inskick som du vill ta bort."; +$LANG["validation_smart_fill_cannot_fill"] = "Tyvärr så kunde vi inte fylla i detta fält."; +$LANG["validation_smart_fill_invalid_field_type"] = "Vi kunde inte lokalisera ett fält, men det är inte en rullgardinsmeny, kryssruta eller radiogrupp."; +$LANG["validation_smart_fill_no_field_found"] = "Tyvärr så kunde vi inte hitta ett formulärfält med det namnet på sidan som du specificerat."; +$LANG["validation_smart_fill_no_page"] = "Lokalisera sidan som innehåller fältet du vill ska fyllas i med hjälp av Smart ifyllning."; +$LANG["validation_smart_fill_upload_all_pages"] = "Ladda upp alla sidorna i ditt formulär."; +$LANG["validation_upload_folder_not_writable"] = "Denna tillfälliga uppladdningskatalog som specificerats av din PHP-installation är inte skrivbar. Tills dess att detta problem fixats så kan inte filer laddas upp via Form Tools (eller något annat PHP-program heller för den delen). Kontakta din webbplatsvärd."; +$LANG["validation_upload_html_files_only"] = "Ladda bara upp HTML-filer."; +$LANG["validation_username_taken"] = "Tyvärr så är det användarnamnet redan taget. Försök igen med ett annat användarnamn."; +$LANG["validation_wrong_password"] = "Tyvärr så matchar inte det lösenordet."; +$LANG["word_about"] = "Om"; +$LANG["word_access"] = "Åtkomst"; +$LANG["word_account"] = "Konto"; +$LANG["word_account_sp"] = "Konton"; +$LANG["word_accounts"] = "Konton"; +$LANG["word_action"] = "Åtgärd"; +$LANG["word_active"] = "Aktiv"; +$LANG["word_add"] = "Lägg till"; +$LANG["word_add_rightarrow"] = "Lägg till »"; +$LANG["word_add_uc_rightarrow"] = "Lägg till »"; +$LANG["word_administration"] = "Administration"; +$LANG["word_administrator"] = "Administratör"; +$LANG["word_after"] = "Efter"; +$LANG["word_aquamarine"] = "Akvamarin"; +$LANG["word_asc"] = "Stigande"; +$LANG["word_author"] = "Författare"; +$LANG["word_author_c"] = "Författare:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "« tillbaka"; +$LANG["word_bcc_c"] = "Dold kopia till:"; +$LANG["word_before"] = "Före"; +$LANG["word_benefits"] = "Fördelar"; +$LANG["word_blue"] = "Blå"; +$LANG["word_cancel"] = "Avbryt"; +$LANG["word_cc_c"] = "Kopia till:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Kryssrutor"; +$LANG["word_checklist"] = "Checklista"; +$LANG["word_client"] = "Klient"; +$LANG["word_client_c"] = "Klient:"; +$LANG["word_clients"] = "Klienter"; +$LANG["word_close"] = "Stäng"; +$LANG["word_code"] = "Kod"; +$LANG["word_column"] = "Kolumnnamn"; +$LANG["word_columns"] = "Kolumner"; +$LANG["word_columns_sp"] = "Kolumn(er)"; +$LANG["word_complete"] = "Klar"; +$LANG["word_configuration"] = "Inställning"; +$LANG["word_content"] = "Innehåll"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Fortsätt »"; +$LANG["word_copy"] = "Kopiera"; +$LANG["word_custom"] = "Anpassad"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Datum"; +$LANG["word_debugging_c"] = "Avlusning:"; +$LANG["word_delete"] = "Ta bort"; +$LANG["word_desc"] = "Fallande"; +$LANG["word_direct"] = "Direkt"; +$LANG["word_disabled"] = "Avstängd"; +$LANG["word_documentation"] = "Dokumentation"; +$LANG["word_done"] = "Klar"; +$LANG["word_drawbacks"] = "Nackdelar"; +$LANG["word_dropdown"] = "Rullgardinsmeny"; +$LANG["word_edit"] = "Redigera"; +$LANG["word_editable"] = "Ändringsbar"; +$LANG["word_email"] = "E-post"; +$LANG["word_email_c"] = "E-post:"; +$LANG["word_emails"] = "E-post"; +$LANG["word_enabled"] = "Påslagen"; +$LANG["word_equals"] = "Är lika med"; +$LANG["word_error"] = "Fel"; +$LANG["word_error_c"] = "Fel:"; +$LANG["word_examples_c"] = "Exempel:"; +$LANG["word_external"] = "Extern"; +$LANG["word_fail"] = "Misslyckades"; +$LANG["word_field"] = "Fält"; +$LANG["word_field_sp"] = "Fält"; +$LANG["word_fields"] = "Fält"; +$LANG["word_fields_sp"] = "Fält"; +$LANG["word_file"] = "Fil"; +$LANG["word_file_b_uc"] = "[FIL]"; +$LANG["word_files"] = "Filer"; +$LANG["word_filters"] = "Filter"; +$LANG["word_filters_sp"] = "Filter"; +$LANG["word_for"] = "efter"; +$LANG["word_form"] = "Formulär"; +$LANG["word_form_c"] = "Formulär:"; +$LANG["word_formatting"] = "Formatering"; +$LANG["word_forms"] = "Formulär"; +$LANG["word_found"] = "Hittade"; +$LANG["word_from"] = "Från"; +$LANG["word_from_c"] = "Från:"; +$LANG["word_general"] = "Allmänt"; +$LANG["word_green"] = "Grön"; +$LANG["word_grey"] = "Grå"; +$LANG["word_height"] = "Höjd"; +$LANG["word_help"] = "Hjälp"; +$LANG["word_hidden"] = "Dolda"; +$LANG["word_highlight"] = "Markera"; +$LANG["word_horizontal"] = "Horisontell"; +$LANG["word_hour"] = "Timmar"; +$LANG["word_hours"] = "Timmar"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Bild"; +$LANG["word_incomplete"] = "Ofullständig"; +$LANG["word_install"] = "Installera"; +$LANG["word_installation"] = "Installation"; +$LANG["word_internal"] = "Intern"; +$LANG["word_language"] = "Språk"; +$LANG["word_large"] = "Stor"; +$LANG["word_like"] = "Liknar"; +$LANG["word_login"] = "Logga in"; +$LANG["word_logo"] = "Logga"; +$LANG["word_logout"] = "Utloggning"; +$LANG["word_main"] = "Basfakta"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Meny"; +$LANG["word_menus"] = "Menyer"; +$LANG["word_minutes"] = "minuter"; +$LANG["word_misc"] = "Blandat"; +$LANG["word_module"] = "Modul"; +$LANG["word_modules"] = "Moduler"; +$LANG["word_na"] = "Ej applicerbart"; +$LANG["word_name"] = "Namn"; +$LANG["word_name_c"] = "Namn:"; +$LANG["word_never"] = "Aldrig"; +$LANG["word_next_rightarrow"] = "nästa »"; +$LANG["word_next_step_rightarrow"] = "Nästa steg »"; +$LANG["word_no"] = "Nej"; +$LANG["word_none"] = "Ingen"; +$LANG["word_notes"] = "Anteckningar"; +$LANG["word_notification"] = "Meddelande"; +$LANG["word_number"] = "Antal"; +$LANG["word_off"] = "Av"; +$LANG["word_offline"] = "Nedkopplad"; +$LANG["word_okay"] = "Okej"; +$LANG["word_on"] = "På"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operatör"; +$LANG["word_options"] = "Alternativ"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Ordning"; +$LANG["word_other"] = "Annan"; +$LANG["word_other_c"] = "Annan:"; +$LANG["word_page"] = "Sida"; +$LANG["word_page_c"] = "Sida:"; +$LANG["word_pass"] = "Släppa igenom"; +$LANG["word_password"] = "Lösenord"; +$LANG["word_password_c"] = "Lösenord:"; +$LANG["word_pending"] = "Under uppföljning"; +$LANG["word_permissions"] = "Rättigheter"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "« föregående"; +$LANG["word_private"] = "Privat"; +$LANG["word_public"] = "Publik"; +$LANG["word_purple"] = "Lila"; +$LANG["word_recipient"] = "Mottagare"; +$LANG["word_recipient_sp"] = "Mottagare"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Ta bort"; +$LANG["word_remove_uc_leftarrow"] = "« Ta bort"; +$LANG["word_reply_to"] = "Svar till"; +$LANG["word_reply_to_c"] = "Svar till:"; +$LANG["word_required"] = "Krävs"; +$LANG["word_reset"] = "Återställ"; +$LANG["word_resolved"] = "Löst"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "rad"; +$LANG["word_search"] = "Sök"; +$LANG["word_searchable"] = "Sökbar"; +$LANG["word_select"] = "Välj"; +$LANG["word_setting"] = "Inställning"; +$LANG["word_settings"] = "Inställningar"; +$LANG["word_show"] = "Visa"; +$LANG["word_size"] = "Storlek"; +$LANG["word_skipped"] = "Överhoppad"; +$LANG["word_small"] = "Liten"; +$LANG["word_solution"] = "Lösning"; +$LANG["word_sortable"] = "Sorteringsbar"; +$LANG["word_start"] = "Starta"; +$LANG["word_status"] = "Status"; +$LANG["word_string"] = "Sträng"; +$LANG["word_subject"] = "Ämne"; +$LANG["word_subject_c"] = "Ämne"; +$LANG["word_submenu"] = "Undermeny"; +$LANG["word_submission"] = "Inskick"; +$LANG["word_submissions"] = "Inskickat"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Flik"; +$LANG["word_tabs"] = "Flikar"; +$LANG["word_tabs_sp"] = "Flikar"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textområde"; +$LANG["word_textbox"] = "Textruta"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Teman"; +$LANG["word_time"] = "Tid"; +$LANG["word_tiny"] = "Pytteliten"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "I dag"; +$LANG["word_truncate_q"] = "Kapa?"; +$LANG["word_uninstall"] = "Avinstallera"; +$LANG["word_unknown"] = "Okänd"; +$LANG["word_update"] = "Uppdatera"; +$LANG["word_upgrade"] = "Uppgradera"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Användare"; +$LANG["word_username"] = "Användarnamn"; +$LANG["word_username_c"] = "Användarnamn:"; +$LANG["word_validation"] = "Validering"; +$LANG["word_value"] = "Värde"; +$LANG["word_value_sp"] = "Värden"; +$LANG["word_verified"] = "Verifierad"; +$LANG["word_verify"] = "Bekräfta"; +$LANG["word_version"] = "Version"; +$LANG["word_vertical"] = "Vertikalt"; +$LANG["word_view"] = "Granska"; +$LANG["word_views"] = "Vyer"; +$LANG["word_warning"] = "Varning!"; +$LANG["word_warning_c"] = "Varning:"; +$LANG["word_web"] = "Webb"; +$LANG["word_welcome"] = "Välkommen"; +$LANG["word_width_c"] = "bredd:"; +$LANG["word_words"] = "Ord"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Gul"; +$LANG["word_yes"] = "Ja"; \ No newline at end of file diff --git a/global/lang/sw.php b/global/lang/sw.php new file mode 100644 index 00000000..bb516f65 --- /dev/null +++ b/global/lang/sw.php @@ -0,0 +1,1219 @@ +Onyo! You have selected {\$num_selected_on_page} redovisningar kwenye ukurasa huu na {\$num_selected_on_other_pages} tarehe kurasa nyingine. Tafadhali kuchagua moja ya chaguzi zifuatazo:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Onyo! You have not selected redovisningar yoyote kwenye ukurasa huu lakini you've selected {\$num_selected_on_other_pages} tarehe kurasa nyingine. Tafadhali kuthibitisha unataka kufuta hizi redovisningar.
    "; +$LANG["confirm_delete_view"] = "Una uhakika unataka kufuta hii View?"; +$LANG["confirm_refresh_page"] = "Are you sure you want to refresh the page? This will lose any changes you have made."; +$LANG["confirm_save_change_before_redirect"] = "One or more fields have been updated. Would you like to save your changes before redirecting?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Una uhakika unataka Smart Jaza column Mbegu majina? Hii itakuwa overwrite zilizopo yako maadili."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "This option auto-generates the database column names based on the Display Text fields, so the contents of the database table are easier to read."; +$LANG["confirm_smart_fill_display_names"] = "Una uhakika unataka Smart Jaza Display majina? Hii itakuwa overwrite zilizopo yako maadili."; +$LANG["confirm_ungroup_option_list"] = "Are you sure you want to ungroup this option list? All options will be lumped into a single, ungrouped list."; +$LANG["confirm_uninstall_module"] = "Una uhakika unataka Futa Kibao moduli hii? Data moduli wote watakuwa waliopotea."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Mon"; +$LANG["date_Friday"] = "Ijumaa"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "Jumatatu"; +$LANG["date_PM"] = "AM"; +$LANG["date_Sat"] = "Sat"; +$LANG["date_Saturday"] = "Jumamosi"; +$LANG["date_Sun"] = "Jua"; +$LANG["date_Sunday"] = "Jumapili"; +$LANG["date_Thu"] = "Fri"; +$LANG["date_Thursday"] = "Alhamisi"; +$LANG["date_Tue"] = "Tue"; +$LANG["date_Tuesday"] = "Jumanne"; +$LANG["date_Wed"] = "Fri"; +$LANG["date_Wednesday"] = "Jumatano"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Aprili"; +$LANG["date_month_August"] = "Agosti"; +$LANG["date_month_December"] = "Desemba"; +$LANG["date_month_February"] = "Februari"; +$LANG["date_month_January"] = "Januari"; +$LANG["date_month_July"] = "Julai"; +$LANG["date_month_June"] = "Juni"; +$LANG["date_month_March"] = "Machi"; +$LANG["date_month_May"] = "Mei"; +$LANG["date_month_November"] = "Novemba"; +$LANG["date_month_October"] = "Oktoba"; +$LANG["date_month_September"] = "Septemba"; +$LANG["date_month_short_Apr"] = "Aprili"; +$LANG["date_month_short_Aug"] = "Agosti"; +$LANG["date_month_short_Dec"] = "Desemba"; +$LANG["date_month_short_Feb"] = "Februari"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Julai"; +$LANG["date_month_short_Jun"] = "Juni"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Mei"; +$LANG["date_month_short_Nov"] = "Novemba"; +$LANG["date_month_short_Oct"] = "Oktoba"; +$LANG["date_month_short_Sep"] = "Septemba"; +$LANG["date_pm"] = "am"; +$LANG["notify_account_deleted"] = "Akaunti ya mtumiaji imekuwa ilifutwa."; +$LANG["notify_account_updated"] = "Akaunti yako imekuwa mafanikio updated."; +$LANG["notify_add_display_values"] = "Add Display Maadili"; +$LANG["notify_admin_menu_updated"] = "Utawala menu imekuwa updated."; +$LANG["notify_admin_theme_overridden"] = "The administrator's mandhari overridden imekuwa manually."; +$LANG["notify_allow_url_fopen_not_set"] = "Sorry, mtihani huu hauwezi kuendesha web server yako. Inahitaji kuwa allow_url_fopen kuweka na 1 faili php.ini yako. Hii kuweka PHP kuruhusu upatikanaji files kupitia URL, ambayo ni zinahitajika nitafanya mtihani huu. Unaweza mtihani it manually by uploading a file ili kwamba folder via FTP, basi kujaribu kupata hiyo katika una URL levereras."; +$LANG["notify_change_temp_password"] = "You just logged in with a temporary password. You should reset your password now!"; +$LANG["notify_click_to_edit_new_submission"] = "Bonyeza hapa ili uhariri kuwasilisha mpya."; +$LANG["notify_client_account_menus_updated"] = "Akaunti ya mteja (s) wamekuwa updated ya {\$menu_name} menu. Unaweza sasa delete the menu ambayo ilikuwa hapo awali yanayohusiana na akaunti (s)."; +$LANG["notify_client_account_not_updated"] = "Akaunti ya mteja hakuweza uppdateras."; +$LANG["notify_client_account_themes_updated"] = "Akaunti ya mteja (s) wamekuwa updated ya {\$theme} temat. Unaweza sasa Disable temat awali yanayohusiana na akaunti (s)."; +$LANG["notify_client_account_updated"] = "Akaunti ya mteja imekuwa mafanikio updated."; +$LANG["notify_client_menu_deleted"] = "Menu mteja imekuwa ilifutwa."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "The menu imekuwa kuchapa lakini mteja zifuatazo akaunti sasa hawana orodha! Unahitaji update akaunti zifuatazo:"; +$LANG["notify_client_menu_updated"] = "Menu mteja imekuwa updated."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Samahani, menu wewe tu walijaribu delete tayari kutumiwa na wateja zilizoorodheshwa hapa chini. Ili delete the menu wewe kwanza hawawajui haja ya wateja wengine menus. Bonyeza kwenye jina mteja hariri kwamba akaunti ya mtu binafsi, au hawawajui akaunti yote tofauti kutumia dropdown menu chini."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Sorry, mmoja wa walemavu mandhari wewe tu tayari zinatumiwa na mteja zifuatazo akaunti. Ili Disable temat utakuwa unahitaji kwanza hawawajui kila mteja mwingine temat. Bonyeza kwenye jina mteja hariri kwamba akaunti ya mtu binafsi, au hawawajui akaunti wote kwa kutumia kaulimbiu dropdown chini."; +$LANG["notify_edit_email_fields_link"] = "Click here to specify which form fields are email fields, so you can target them in your email templates."; +$LANG["notify_edit_field_new_field"] = "This is a new field. You will need to update the main page before being able to fully edit this field."; +$LANG["notify_edit_option_list_after_save"] = "You must select an Option List and then Save Changes before being able to edit it."; +$LANG["notify_email_field_config_deleted"] = "Configuration ya barua pepe imekuwa ilifutwa."; +$LANG["notify_email_fields_not_updated"] = "Sorry, sisi hakuweza uppdatera email mashamba."; +$LANG["notify_email_fields_updated"] = "Mashamba ya barua pepe wamekuwa updated."; +$LANG["notify_email_not_sent"] = "Samahani, email haungetumwa. Tafadhali wasiliana na tovuti administrator katika anuani hapo chini."; +$LANG["notify_email_not_sent_c"] = "Sorry, the email could not be sent: "; +$LANG["notify_email_sent"] = "Ya barua pepe (s) tumwa."; +$LANG["notify_email_template_deleted"] = "The email template imekuwa ilifutwa."; +$LANG["notify_email_template_updated"] = "The email template imekuwa updated."; +$LANG["notify_enabled_module_list_updated"] = "Orodha ya kuwezeshwa modules imekuwa updated."; +$LANG["notify_error_saving_fields"] = "There was an error saving the fields."; +$LANG["notify_field_changes_saved"] = "The changes to your field(s) have been saved."; +$LANG["notify_field_options_smart_filled"] = "Your field options have been Smart Filled."; +$LANG["notify_field_selected"] = "Shamba imekuwa kuchaguliwa. Bonyeza hapa kurudi shamba kuu orodha."; +$LANG["notify_field_updated"] = "Uwanja huu umekuwa updated."; +$LANG["notify_file_not_uploaded"] = "Faili usingeweza uploaded."; +$LANG["notify_file_uploaded"] = "Faili mara mafanikio uploaded."; +$LANG["notify_filters_not_updated"] = "Kulikuwa na kosa hili uppdatering mteja's kuwasilisha filters."; +$LANG["notify_filters_updated"] = "Filters ya utii wamekuwa updated kwa mteja."; +$LANG["notify_folder_correct_permissions"] = "Hii ina sahihi folder permissions."; +$LANG["notify_folder_url_match"] = "The folder na URL kuonekana kwa usahihi match."; +$LANG["notify_folder_url_no_access"] = "Mtihani huu usingeweza PHP alikuwa akifanya tangu hawawezi kupata kwamba URL. Hii ni mara nyingi unasababishwa na URL kuwa password zinalindwa kwa. Htaccess file."; +$LANG["notify_folder_url_no_match"] = "This folder-URL macho haionekani kuwa match."; +$LANG["notify_folder_url_unknown_error"] = "Hitilafu isiyojulikana ilitokea. Unaweza mtihani it manually by uploading a file ili kwamba folder via FTP, basi kujaribu kupata hiyo katika una URL levereras."; +$LANG["notify_form_access_type_email_info"] = "This form has administrator access type, so no clients have access to it and are not listed in the dropdown below."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sorry, fomu na kwamba ID haipo."; +$LANG["notify_form_field_not_added"] = "Fomu shamba '{\$fieldname}' usingeweza aliongeza."; +$LANG["notify_form_field_options_updated"] = "Fomu shamba chaguzi yamekuwa updated."; +$LANG["notify_form_field_removed"] = "Fomu shamba mara kwa mafanikio kuondolewa."; +$LANG["notify_form_fields_removed"] = "Fomu mashamba yalikuwa mafanikio kuondolewa."; +$LANG["notify_form_not_updated_notify_admin"] = "Fomu yako hakuweza uppdateras. Tafadhali wasiliana na tovuti administrator kuripoti tatizo hili."; +$LANG["notify_form_settings_updated"] = "Fomu yako settings wamekuwa updated mafanikio."; +$LANG["notify_form_submission_updated"] = "Kuwasilisha fomu imekuwa updated."; +$LANG["notify_form_tabs_updated"] = "Ya tabs wamekuwa updated."; +$LANG["notify_form_updated"] = "Fomu imekuwa mafanikio updated."; +$LANG["notify_form_views_updated"] = "The form Views have been updated."; +$LANG["notify_install_invalid_db_info"] = "Sorry, sisi hawakuweza kuwaunganisha na kutumia habari Mbegu wewe hutolewa. Ujumbe wa kosa database akarudi ni: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Your form has been created! You can configure your form through these tabs."; +$LANG["notify_invalid_account_information_in_sessions"] = "Akaunti kuhifadhiwa katika vikao vya habari ni invalid. Please log in tena chini."; +$LANG["notify_invalid_license_key"] = "Sorry, that does not appear to be a valid license key. Please try entering it again."; +$LANG["notify_invalid_permissions"] = "Huna ya permissions kupata ukurasa huu. Umekuwa watumiaji nje."; +$LANG["notify_invalid_search_dates"] = "Please use the datepicker to enter a valid date or dates."; +$LANG["notify_invalid_upload_folder"] = "The upload folder aidha ni batili au si writable."; +$LANG["notify_lang_list_updated"] = "Lugha ya inapatikana UI orodha imekuwa updated."; +$LANG["notify_login_info_emailed"] = "Habari login yako imekuwa Emailed kwenu."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, this module is already installed!"; +$LANG["notify_module_installed"] = "Ya moduli imewekwa. Bonyeza hapa kuchagua moduli."; +$LANG["notify_module_list_updated"] = "Orodha ya moduli imekuwa updated."; +$LANG["notify_module_uninstalled"] = "Ya moduli imekuwa uninstalled."; +$LANG["notify_module_updated"] = "The {\$module} module has been updated to {\$version}. Click here to select the module."; +$LANG["notify_multi_field_selected"] = "Shamba imekuwa kuchaguliwa. Bonyeza hapa kuangalia na hariri shambani chaguzi."; +$LANG["notify_multi_field_updated"] = "Uwanja huu umekuwa updated. Utaweza kwa chaguzi configure shambani baada ya kuanzisha fomu."; +$LANG["notify_multiple_fields_found"] = "Multiple vipengele walikuwa kupatikana kwa shamba hili jina ({\$field_name}). Hii inaweza kutokea kama page yako ina zaidi namna moja au ikiwa ajali jina moja ya fomu yako sawa na mwingine. Tafadhali kuchagua unataka moja kutoka kwenye orodha hapo chini."; +$LANG["notify_new_default_view_created"] = "A new, default View containing all your form fields has been created."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "No user akaunti ID lilipatikana katika vikao. Please log in tena chini."; +$LANG["notify_no_api_installed"] = "Huna ya API installed"; +$LANG["notify_no_client_permissions"] = "Hakuna settings inapatikana kwa edit."; +$LANG["notify_no_email_template_selected"] = "Tafadhali chagua email template."; +$LANG["notify_no_emails_defined"] = "No emails wamekuwa defined kwa fomu hii. Kuongeza moja mpya, bonyeza kifungo chini."; +$LANG["notify_no_field_settings"] = "This field type doesn't contain any extra settings."; +$LANG["notify_no_fields_in_tab"] = "Tab hii haina zina nyanja yoyote."; +$LANG["notify_no_option_lists"] = "There are no option lists defined. Click the button below to create a new one."; +$LANG["notify_no_test_submission"] = "Fomu Tools har inte alipata mtihani kufanikiwa kuwasilisha bado."; +$LANG["notify_no_user_email_fields_configured"] = "Angalia: kama unataka kutuma barua pepe email address yoyote kwamba alikuwa included katika fomu, unaweza kwanza haja configure fomu email mashamba."; +$LANG["notify_no_views"] = "Your form doesn't have any Views set up! You will need at least one View in order to manage your form data."; +$LANG["notify_no_views_assigned_to_client_form"] = "Inaonekana kwamba user akaunti yako haijawahi kupewa fomu Views yoyote, hivyo hawataweza kuona data yoyote. Tafadhali wasiliana na msimamizi kwa msaada zaidi."; +$LANG["notify_no_views_defined"] = "You don't have any Views defined. You will not be able to view this form's submissions unless at least one View is created. Click the button below to create the default View."; +$LANG["notify_option_list_deleted"] = "The option list has been deleted."; +$LANG["notify_option_list_updated"] = "The option list has been updated."; +$LANG["notify_public_form_omit_list_updated"] = "Omit mteja orodha ya fomu hii imekuwa updated."; +$LANG["notify_public_view_omit_list_updated"] = "Omit orodha ya mteja kwa mtazamo huu umekuwa updated."; +$LANG["notify_required_admin_pages"] = "Kurasa zifuatazo zinahitajika katika administrator menu: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Samahani, kulikuwa na si shughuli yoyote kwa muda ili sisi ilibidi logi wewe nje. Please log in tena chini."; +$LANG["notify_setup_options_updated"] = "Chaguzi kuanzisha wamekuwa updated."; +$LANG["notify_smart_fill_field_not_found"] = "Sisi walikuwa hawawezi kupata shamba kwa jina hili ({\$field_name}) katika fomu (s) maalum. Unaweza aidha manually kuweka shamba aina chini, au bonyeza kifungo kwa Skip hariri shambani baadaye."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Your file (s) walikuwa uploaded successfully. Jaribu kubonyeza button ya Smart Jaza kujaribu tena. Kama hatua hii inashindwa, utahitaji skip hatua hii na mashamba configure fomu yako manally baadaye."; +$LANG["notify_smart_fill_submitted"] = "Fomu imekuwa lade. Kutegemeana na ukubwa wa fomu yako na idadi ya uwanja chaguzi, hii inaweza kuchukua muda."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Sorry, moja au zaidi ya aliingia files wewe usingeweza uploaded. Utahitaji skip hatua hii na mashamba configure manually."; +$LANG["notify_submission_and_files_deleted"] = "Yoyote ya utii na file (s) yanayohusiana na ilikuwa ilifutwa mafanikio."; +$LANG["notify_submission_copied"] = "Uwasilishaji umechapishwa."; +$LANG["notify_submission_copied_edit"] = "Uwasilishaji umechapishwa. Unaweza kuhariri hapa chini."; +$LANG["notify_submission_deleted"] = "Ilifutwa mara ya kuwasilisha mafanikio."; +$LANG["notify_submission_deleted_with_problems"] = "Ilifutwa mara ya utii, lakini matatizo yafuatayo walikuwa wamekutana alipojaribu kufuta zifuatazo file (s):"; +$LANG["notify_submission_id_not_found"] = "ID ya utii hakuonekana."; +$LANG["notify_submission_not_updated"] = "Ya utii hakuweza uppdateras."; +$LANG["notify_submissions_and_files_deleted"] = "Na yeyote ya redovisningar file (s) yanayohusiana na mafanikio yao walikuwa ilifutwa."; +$LANG["notify_submissions_copied"] = "Mawasilisho {\$num_submissions} yamekosa."; +$LANG["notify_submissions_deleted"] = "Redovisningar walikuwa ilifutwa ya mafanikio."; +$LANG["notify_submissions_deleted_with_problems"] = "The redovisningar walikuwa kuchapa lakini matatizo yafuatayo walikuwa wamekutana alipojaribu kufuta zifuatazo file (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Email mtihani wako haungetumwa."; +$LANG["notify_theme_cache_folder_not_writable"] = "Hii mandhari's cache folder si writable. Ili kuwawezesha mada hii, ya {\$folder} folder mahitaji kuwa kamili soma-andika permissions."; +$LANG["notify_theme_list_updated"] = "Orodha ya kaulimbiu imekuwa updated."; +$LANG["notify_themes_settings_updated"] = "Mandhari yako settings wamekuwa updated."; +$LANG["notify_view_deleted"] = "The View imekuwa ilifutwa."; +$LANG["notify_view_group_deleted"] = "The View group has been deleted."; +$LANG["notify_view_missing_columns"] = "Oops! Sorry, this View hasn't been fully set up yet."; +$LANG["notify_view_missing_columns_admin_fix"] = "Click here to specify which fields should appear as columns on this page."; +$LANG["notify_view_updated"] = "The View imekuwa updated."; +$LANG["notify_your_email_sent"] = "Your email has been sucessfully sent."; +$LANG["phrase_100_per_page"] = "100 per page"; +$LANG["phrase_10_per_page"] = "10 per page"; +$LANG["phrase_15_per_page"] = "15 per page"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 per page"; +$LANG["phrase_25_per_page"] = "25 per page"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 Columns"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 Columns"; +$LANG["phrase_4_columns"] = "4 Columns"; +$LANG["phrase_50_per_page"] = "50 per page"; +$LANG["phrase_accepting_submissions"] = "(kukubali redovisningar)"; +$LANG["phrase_access_admin_account_c"] = "Unaweza kupata akaunti ya utawala wako hapa:"; +$LANG["phrase_access_type"] = "Access Type"; +$LANG["phrase_account_info"] = "Account Information"; +$LANG["phrase_account_settings"] = "Account Settings"; +$LANG["phrase_action_needed"] = "Action NEEDED"; +$LANG["phrase_add_client"] = "Add Client"; +$LANG["phrase_add_client_menu"] = "Add Mteja Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Add default settings »"; +$LANG["phrase_add_field"] = "Add Field"; +$LANG["phrase_add_fields"] = "Add Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Add Field(s) »"; +$LANG["phrase_add_form"] = "Add Fomu"; +$LANG["phrase_add_form_external"] = "Add Form - External"; +$LANG["phrase_add_form_internal"] = "Add Form - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Add New Group »"; +$LANG["phrase_add_num_rows"] = "Ongeza {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Add Row »"; +$LANG["phrase_add_submission_button"] = "Add Submission Button"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Adding a multi-page fomu kwa API"; +$LANG["phrase_adding_single_page_form"] = "Adding a single-umebadilisha fomu kwa API"; +$LANG["phrase_admin_menu"] = "Administrator Menu"; +$LANG["phrase_admin_only"] = "Administrator Only"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Administrator Mandhari"; +$LANG["phrase_advanced_settings_rightarrow"] = "Advanced settings »"; +$LANG["phrase_all_X_results_selected"] = "Tafsiri {\$numresults} Results Selected"; +$LANG["phrase_all_clients"] = "Wateja wote"; +$LANG["phrase_all_clients_except_c"] = "Wateja wote isipokuwa:"; +$LANG["phrase_all_clients_have_access"] = "(wateja wote wanapata)"; +$LANG["phrase_all_fields"] = "Mashamba yote"; +$LANG["phrase_all_fields_displayed"] = "All fields are visas"; +$LANG["phrase_all_statuses"] = "Wote statuses"; +$LANG["phrase_all_submissions"] = "Tafsiri redovisningar"; +$LANG["phrase_allow_fields_edited"] = "Ruhusu mashamba kuwa mwisho"; +$LANG["phrase_alphanumeric"] = "Alphanumeric (a-Z, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Apply Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Mpe wote waliotajwa akaunti ya mteja kwa {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Mpe wote waliotajwa akaunti ya mteja kwa {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "At End"; +$LANG["phrase_at_start"] = "At Start"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-disable account after # failed login attempts"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Available Clients"; +$LANG["phrase_available_fields"] = "Available Fields"; +$LANG["phrase_available_option_lists"] = "Available Option Lists"; +$LANG["phrase_available_swatches"] = "Available Swatches"; +$LANG["phrase_available_swatches_c"] = "Available Swatches:"; +$LANG["phrase_available_tabs"] = "Available Tabs"; +$LANG["phrase_available_views"] = "Available Views"; +$LANG["phrase_awaiting_form_submission"] = "Fomu wanasubiri ut'iifu."; +$LANG["phrase_back_to_field_list"] = "«back to shamba orodha"; +$LANG["phrase_back_to_search_results"] = "nyuma search results"; +$LANG["phrase_base_view_on"] = "Base View on..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Change Login Habari"; +$LANG["phrase_characters_limit_p"] = "characters limit."; +$LANG["phrase_check_db_settings_try_again"] = "Tafadhali double-check your database settings na bonyeza button Kuendelea tena."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Check URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Safi Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Orodha wazi Omit"; +$LANG["phrase_client_account_settings"] = "Mteja Account Settings"; +$LANG["phrase_client_field"] = "Mteja Field"; +$LANG["phrase_client_map_filters"] = "Mteja Map Filters »"; +$LANG["phrase_client_may_edit"] = "Mteja huweza hariri"; +$LANG["phrase_client_menu"] = "Mteja Menu"; +$LANG["phrase_clients_can_access_form"] = "Wateja ambao wanaweza kupata fomu"; +$LANG["phrase_clients_can_access_view"] = "Wateja ambao wanaweza kupata View"; +$LANG["phrase_clients_cannot_access_form"] = "Wateja ambao hawawezi kupata fomu"; +$LANG["phrase_clients_cannot_access_view"] = "Wateja ambao hawawezi kupata View"; +$LANG["phrase_clients_may_edit"] = "Wateja wanaweza hariri"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Code / Markup Field"; +$LANG["phrase_code_markup_type"] = "Code / Markup Type"; +$LANG["phrase_codes_c"] = "Error Codes:"; +$LANG["phrase_column_width"] = "Column Width"; +$LANG["phrase_company_name"] = "Company Name"; +$LANG["phrase_configure_form_email_fields"] = "Configure Fomu Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Confirm Folder-URL Match"; +$LANG["phrase_connect_rows"] = "Connect rows"; +$LANG["phrase_copy_email_settings_from"] = "Nakala Email Settings Kutoka ..."; +$LANG["phrase_copy_settings_from"] = "Nakala Settings Kutoka ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Create Account"; +$LANG["phrase_create_admin_account"] = "Admin Create Account"; +$LANG["phrase_create_config_file"] = "Create Config Picha"; +$LANG["phrase_create_database_tables"] = "Create Database Tables"; +$LANG["phrase_create_default_view"] = "Create Default View"; +$LANG["phrase_create_file"] = "Create Picha"; +$LANG["phrase_create_group"] = "Create Group"; +$LANG["phrase_create_new_email"] = "Create New Email"; +$LANG["phrase_create_new_menu"] = "Create New Menu"; +$LANG["phrase_create_new_option_list"] = "Create New Option List"; +$LANG["phrase_create_new_option_list_group"] = "Create new option list group"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Create New Option List »"; +$LANG["phrase_create_new_view"] = "Create New View"; +$LANG["phrase_create_new_view_group"] = "Create New View Group"; +$LANG["phrase_custom_display_format"] = "Custom Display Format"; +$LANG["phrase_custom_recipient"] = "Desturi Recipient"; +$LANG["phrase_custom_url"] = "Desturi URL"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Data Type"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Database jina"; +$LANG["phrase_database_password"] = "Database password"; +$LANG["phrase_database_settings"] = "Database Settings"; +$LANG["phrase_database_setup"] = "Database Setup"; +$LANG["phrase_database_table_prefix"] = "Database meza kiambishi awali"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Date Format"; +$LANG["phrase_db_column"] = "DB Column"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Default Mteja Akaunti Mandhari"; +$LANG["phrase_default_date_field_search_value"] = "Default date field search value"; +$LANG["phrase_default_language"] = "Default Language"; +$LANG["phrase_default_menu"] = "Default Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default Vikao Timeout"; +$LANG["phrase_default_sort_order"] = "Default Sort Order"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default Mandhari"; +$LANG["phrase_default_value"] = "Default value"; +$LANG["phrase_default_values"] = "Default values"; +$LANG["phrase_default_values_new_submissions"] = "Default Values for New Submissions"; +$LANG["phrase_delete_field"] = "Delete Field"; +$LANG["phrase_delete_form"] = "Delete Fomu"; +$LANG["phrase_delete_row"] = "Delete Row"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Delete kuhusishwa files wakati deleting utii"; +$LANG["phrase_delete_view"] = "Delete View"; +$LANG["phrase_disconnect_rows"] = "Disconnect rows"; +$LANG["phrase_display_email"] = "Display Email"; +$LANG["phrase_display_name"] = "Display Name"; +$LANG["phrase_display_text"] = "Display Nakala"; +$LANG["phrase_display_value"] = "Display Thamani"; +$LANG["phrase_edit_admin_menu"] = "Edit Admin Menu"; +$LANG["phrase_edit_client"] = "Edit Client"; +$LANG["phrase_edit_client_menu"] = "Edit Mteja Menu"; +$LANG["phrase_edit_email_template"] = "Edit Email Kigezo"; +$LANG["phrase_edit_field"] = "Edit Field"; +$LANG["phrase_edit_field_c"] = "Edit Field:"; +$LANG["phrase_edit_form"] = "Edit Fomu"; +$LANG["phrase_edit_form_access_type_b"] = "[Edit form access type]"; +$LANG["phrase_edit_option_list"] = "Edit Option List"; +$LANG["phrase_edit_submission"] = "Edit Submission"; +$LANG["phrase_edit_submission_label"] = "Edit Submission Label"; +$LANG["phrase_edit_view"] = "Edit View"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "Email Settings"; +$LANG["phrase_email_template"] = "Email template"; +$LANG["phrase_email_template_name"] = "Email template jina"; +$LANG["phrase_error_learn_more"] = "Jifunze zaidi kuhusu kosa hili."; +$LANG["phrase_error_text_intro"] = "Tafadhali fix zifuatazo upotofu (s) na resubmit:"; +$LANG["phrase_errors_learn_more"] = "Bonyeza kosa codes kujifunza zaidi."; +$LANG["phrase_event_trigger"] = "Tukio Trigger"; +$LANG["phrase_external_form"] = "External Form"; +$LANG["phrase_external_form_info"] = "External Form Info"; +$LANG["phrase_external_your_own_form"] = "External (your own form)"; +$LANG["phrase_field_comments"] = "Field Comments"; +$LANG["phrase_field_label"] = "Field Label"; +$LANG["phrase_field_options"] = "Field Options"; +$LANG["phrase_field_size"] = "Field Size"; +$LANG["phrase_field_skipped"] = "Field Skipped"; +$LANG["phrase_field_specific_settings"] = "Field-Specific Settings"; +$LANG["phrase_field_type"] = "Field Type"; +$LANG["phrase_field_type_no_validation"] = "There are no validation rules available for this field type."; +$LANG["phrase_field_types"] = "Field Types"; +$LANG["phrase_field_value"] = "Field Thamani"; +$LANG["phrase_field_values_to_display_values"] = "Field Maadili »Display Maadili"; +$LANG["phrase_final_touches_page_6"] = "6. Finishing Touches"; +$LANG["phrase_finalize_form"] = "Kukamilisha maandalizi Fomu"; +$LANG["phrase_first_name"] = "Jina la kwanza"; +$LANG["phrase_footer_text"] = "Footer Nakala"; +$LANG["phrase_for_any_form_submission"] = "Kwa namna yoyote utii"; +$LANG["phrase_for_view_submissions"] = "Tu kwa redovisningar katika View:"; +$LANG["phrase_forgot_password"] = "Forgot your password?"; +$LANG["phrase_form_already_selected"] = "Fomu tayari ut"; +$LANG["phrase_form_email_field_b_c"] = "[Kidato email shamba]:"; +$LANG["phrase_form_email_field_configuration"] = "Fomu Email Field Configuration"; +$LANG["phrase_form_email_fields"] = "Fomu Email Fields"; +$LANG["phrase_form_field"] = "Fomu Field"; +$LANG["phrase_form_field_contents"] = "Form Field Contents"; +$LANG["phrase_form_field_name"] = "Fomu Field Jina"; +$LANG["phrase_form_field_placeholders"] = "Form field placeholders"; +$LANG["phrase_form_fields"] = "Fomu Fields"; +$LANG["phrase_form_info"] = "Fomu ya Taarifa"; +$LANG["phrase_form_info_2"] = "2. Fomu ya Taarifa"; +$LANG["phrase_form_list"] = "Form List"; +$LANG["phrase_form_name"] = "Fomu Jina"; +$LANG["phrase_form_page"] = "Fomu Page"; +$LANG["phrase_form_placeholders"] = "Fomu Placeholders"; +$LANG["phrase_form_submission"] = "Fomu Submission"; +$LANG["phrase_form_submissions"] = "Fomu Submissions"; +$LANG["phrase_form_type"] = "Fomu Type"; +$LANG["phrase_form_url"] = "Fomu URL"; +$LANG["phrase_form_urls"] = "Form URLs"; +$LANG["phrase_forms_assigned_to_any_account"] = "Forms assigned to any account"; +$LANG["phrase_forms_page_default_message"] = "Forms page default message"; +$LANG["phrase_ft_installation"] = "Fomu Tools Installation Script"; +$LANG["phrase_full_width"] = "Full Width"; +$LANG["phrase_getting_started"] = "getting started"; +$LANG["phrase_global_placeholders"] = "Global Placeholders"; +$LANG["phrase_group_name"] = "Kikundi Jina"; +$LANG["phrase_group_options_q"] = "Group options?"; +$LANG["phrase_group_rows"] = "Group rows"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Highlight Colour"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Kigezo"; +$LANG["phrase_images_media"] = "Images / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "Import Option List »"; +$LANG["phrase_input_length"] = "Input Length"; +$LANG["phrase_installation_help"] = "Installation Help"; +$LANG["phrase_internal_form"] = "Internal Form"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Is this a multi-page form?"; +$LANG["phrase_label_response_placeholders"] = "Label / Response Placeholders"; +$LANG["phrase_large_300px"] = "Large (300px)"; +$LANG["phrase_large_400px"] = "Large (400px)"; +$LANG["phrase_last_7_days"] = "Last 7 days"; +$LANG["phrase_last_logged_in"] = "Last Logged Katika"; +$LANG["phrase_last_modified"] = "Iliyopita"; +$LANG["phrase_last_modified_date"] = "Iliyopita tarehe"; +$LANG["phrase_last_name"] = "Jina la mwisho"; +$LANG["phrase_letters_only"] = "Letters Only"; +$LANG["phrase_light_brown"] = "Light Brown"; +$LANG["phrase_limit_email_content"] = "Limit email maudhui ya mashamba katika View"; +$LANG["phrase_loading_ellipsis"] = "Loading..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Log in as this user"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Jopo:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Username"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout URL"; +$LANG["phrase_main_nav"] = "Kuu Halijapimwa"; +$LANG["phrase_main_settings"] = "Main Settings"; +$LANG["phrase_manage_client"] = "Kusimamia Client"; +$LANG["phrase_manage_client_omit_list"] = "Manage Client Omit List"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Max Length"; +$LANG["phrase_max_length_words_chars"] = "- Max length (words/chars)"; +$LANG["phrase_may_add_submissions"] = "May add Submissions"; +$LANG["phrase_may_copy_submissions"] = "Inaweza kunakili maoni"; +$LANG["phrase_may_delete_submissions"] = "May delete Submissions"; +$LANG["phrase_medium_150px"] = "Medium (150px)"; +$LANG["phrase_medium_200px"] = "Medium (200px)"; +$LANG["phrase_menu_name"] = "Menu Jina"; +$LANG["phrase_menu_type"] = "Menu Type"; +$LANG["phrase_min_password_length"] = "Minimum password length"; +$LANG["phrase_module_description"] = "Module Description"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Module Halijapimwa"; +$LANG["phrase_month_to_date"] = "Month to date"; +$LANG["phrase_multi_select"] = "Multi-chagua"; +$LANG["phrase_multi_select_dropdown"] = "Multi-teua dropdown"; +$LANG["phrase_multiple_fields_found"] = "Multiple Fields Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Jina / Mwisho Jina"; +$LANG["phrase_new_blank_email"] = "Mpya Blank Email"; +$LANG["phrase_new_blank_option_list"] = "New Blank Option List"; +$LANG["phrase_new_blank_view"] = "Mpya Blank View"; +$LANG["phrase_new_ft_installation"] = "Fomu mpya Tools Installation"; +$LANG["phrase_new_option_list"] = "New Option List"; +$LANG["phrase_new_password"] = "Mpya Password"; +$LANG["phrase_new_password_reenter"] = "Nywila mpya (tafadhali re-kuingia)"; +$LANG["phrase_new_view"] = "Mpya View"; +$LANG["phrase_new_view_all_fields"] = "New View - All fields"; +$LANG["phrase_next_client"] = "next client »"; +$LANG["phrase_next_field"] = "shamba next »"; +$LANG["phrase_next_form"] = "next form »"; +$LANG["phrase_next_view"] = "ijayo View »"; +$LANG["phrase_no_clients"] = "Hakuna wateja"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Hakuna kompenserat"; +$LANG["phrase_no_option_lists_available"] = "No options lists available."; +$LANG["phrase_no_views"] = "Hakuna Views"; +$LANG["phrase_no_views_with_filters_p"] = "(No Views with filters defined)"; +$LANG["phrase_none_not_recommended"] = "Hakuna (si ilipendekeza)"; +$LANG["phrase_not_assigned_to_option_list"] = "This field isn't assigned to an Option List."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Je NOT lika"; +$LANG["phrase_not_found"] = "Not Found!"; +$LANG["phrase_not_like"] = "Si kama"; +$LANG["phrase_not_visible_to_client"] = "(not visible kwa mteja)"; +$LANG["phrase_num_clients_per_page"] = "Num Clients Per Page"; +$LANG["phrase_num_emails_per_page"] = "Num Emails Per Page"; +$LANG["phrase_num_fields"] = "Number of Fields"; +$LANG["phrase_num_forms_per_page"] = "Num Fomu Per Page"; +$LANG["phrase_num_menus_per_page"] = "Num Menus Per Page"; +$LANG["phrase_num_modules_per_page"] = "Num Modules Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Num Option Lists Per Page"; +$LANG["phrase_num_options"] = "Num Options"; +$LANG["phrase_num_rows"] = "Num Rows"; +$LANG["phrase_numbers_only"] = "Numbers Only"; +$LANG["phrase_often_localhost"] = "(mara nyingi "localhost")"; +$LANG["phrase_on_form_submission"] = "Kwenye fomu ya utii"; +$LANG["phrase_one_char_number"] = "At least one character is a number (0-9)"; +$LANG["phrase_one_char_upper"] = "At least one character is uppercase"; +$LANG["phrase_one_special_char"] = "At least one of {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(tu wanapata wateja maalumu)"; +$LANG["phrase_open_form_in_dialog"] = "Open form in dialog window"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Open this form in a new tab/window"; +$LANG["phrase_option_list"] = "Option List"; +$LANG["phrase_option_list_name"] = "Option List Name"; +$LANG["phrase_option_list_or_contents"] = "Option List / Contents"; +$LANG["phrase_option_lists"] = "Option Lists"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Page Titles"; +$LANG["phrase_pass_on"] = "Kupitisha"; +$LANG["phrase_password_min"] = "It must be at least {\$length} characters."; +$LANG["phrase_password_one_number"] = "It must contain at least one number (0-9)."; +$LANG["phrase_password_one_uppercase"] = "It must contain at least one uppercase letter."; +$LANG["phrase_password_requirements_c"] = "Password requirements:"; +$LANG["phrase_password_reset"] = "Password Reset"; +$LANG["phrase_password_special_char"] = "It must contain at least one of the following characters: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Permissions / Other Settings"; +$LANG["phrase_permitted_file_types"] = "Inaruhusiwa faili aina"; +$LANG["phrase_phone_number"] = "Phone Number"; +$LANG["phrase_phone_number_format"] = "Phone Number Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "max kuruhusiwa php.ini faili upload faili:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Please Confirm"; +$LANG["phrase_please_enter_license_key"] = "Please enter your license key"; +$LANG["phrase_please_select"] = "Please Select"; +$LANG["phrase_please_select_form"] = "Tafadhali chagua fomu"; +$LANG["phrase_prev_client"] = "« prev client"; +$LANG["phrase_prev_form"] = "« prev form"; +$LANG["phrase_prevent_password_reuse"] = "Prevent re-use of # last passwords"; +$LANG["phrase_previous_field"] = "«previous shamba"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "« prev View"; +$LANG["phrase_program_name"] = "Programu Jina"; +$LANG["phrase_public_form_omit_list"] = "Fomu Omit Orodha ya umma"; +$LANG["phrase_public_view_omit_list"] = "Umma View Omit List"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "There was a problem with the following query: "; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Random kuwasilisha fomu"; +$LANG["phrase_re_enter_password"] = "Re-kuingia Password"; +$LANG["phrase_recipient_type"] = "Mpokeaji aina"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "Refresh List"; +$LANG["phrase_refresh_module_list"] = "Refresh Module Orodha"; +$LANG["phrase_refresh_page"] = "Refresh Page"; +$LANG["phrase_refresh_theme_list"] = "Refresh Mandhari Orodha"; +$LANG["phrase_register_new_email"] = "Register Mpya Email"; +$LANG["phrase_remaining_characters"] = "remaining characters"; +$LANG["phrase_remaining_words"] = "remaining words"; +$LANG["phrase_remove_tabs"] = "Ondoa Tabs"; +$LANG["phrase_required_password_chars"] = "Required password characters"; +$LANG["phrase_resend_test_submission"] = "Resend Test Submission"; +$LANG["phrase_return_form_list"] = "Fomu Orodha kurudi"; +$LANG["phrase_row_selected"] = "{\$num_rows} kunyongwa ut"; +$LANG["phrase_rows_selected"] = "{\$num_rows} safu ut"; +$LANG["phrase_sample_data"] = "Sample Data"; +$LANG["phrase_save_changes"] = "Save Changes"; +$LANG["phrase_search_keyword"] = "Search keyword"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Select All"; +$LANG["phrase_select_all_X_results"] = "Select All (\$ numresults) Results"; +$LANG["phrase_select_all_on_page"] = "Select All On Page"; +$LANG["phrase_select_date"] = "Select date"; +$LANG["phrase_select_field"] = "Select Field"; +$LANG["phrase_select_swatch"] = "Select swatch"; +$LANG["phrase_selected_clients"] = "Selected Clients"; +$LANG["phrase_selected_views"] = "Selected Views"; +$LANG["phrase_send_email"] = "Send Email"; +$LANG["phrase_send_test_email"] = "Send Test Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Vikao Timeout"; +$LANG["phrase_setting_value"] = "Kuweka Thamani"; +$LANG["phrase_setup_options"] = "Setup Options"; +$LANG["phrase_show_all"] = "Show All"; +$LANG["phrase_show_form"] = "Show Form"; +$LANG["phrase_size_large"] = "Kubwa (TEXT)"; +$LANG["phrase_size_medium"] = "Kati (<= 256 Chars)"; +$LANG["phrase_size_small"] = "Ndogo (<= 20 Chars)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 Chars)"; +$LANG["phrase_size_very_large"] = "Very Large (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Skip Field"; +$LANG["phrase_skip_step"] = "Skip Hatua"; +$LANG["phrase_small_100px"] = "Small (100px)"; +$LANG["phrase_small_80px"] = "Small (80px)"; +$LANG["phrase_smart_fill"] = "Smart Jaza"; +$LANG["phrase_smart_fill_fields_from_c"] = "Jaza smart mashamba kutoka:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Jaza Mtumiaji Documentation »"; +$LANG["phrase_sort_as"] = "Sort As"; +$LANG["phrase_special_fields"] = "Special Fields"; +$LANG["phrase_standard_fields"] = "Standard Fields"; +$LANG["phrase_standard_filters"] = "Standard Filters »"; +$LANG["phrase_step_1"] = "Hatua ya 1"; +$LANG["phrase_step_2"] = "Hatua ya 2"; +$LANG["phrase_step_3"] = "Hatua ya 3"; +$LANG["phrase_step_4"] = "Hatua ya 4"; +$LANG["phrase_step_5"] = "Hatua ya 5"; +$LANG["phrase_step_6"] = "Hatua ya 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tags katika fomu redovisningar"; +$LANG["phrase_subject_line"] = "Subject Line"; +$LANG["phrase_submission_date"] = "Submission tarehe"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Submission yaliyotolewa: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Submission Type"; +$LANG["phrase_submissions_per_page"] = "Submissions per Page"; +$LANG["phrase_system_check"] = "Mfumo Check"; +$LANG["phrase_system_fields_no_validation"] = "You may not add validation to system fields."; +$LANG["phrase_system_time_offset"] = "Mfumo Time Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Folder mtihani Permissions"; +$LANG["phrase_test_submission"] = "Mtihani Submission"; +$LANG["phrase_test_submission_3"] = "3. Mtihani Submission"; +$LANG["phrase_test_submission_received"] = "Mtihani Submission Missada"; +$LANG["phrase_text_and_html"] = "Nakala & HTML"; +$LANG["phrase_text_email"] = "Nakala Email"; +$LANG["phrase_text_template"] = "Nakala Kigezo"; +$LANG["phrase_the_previous_month"] = "The previous Month"; +$LANG["phrase_theme_description"] = "Theme Description"; +$LANG["phrase_theme_info"] = "Mandhari Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Unselect Tafsiri"; +$LANG["phrase_update_accounts"] = "Mwisho Accounts"; +$LANG["phrase_update_email_template"] = "Mwisho Email Kigezo"; +$LANG["phrase_update_field"] = "Mwisho Field"; +$LANG["phrase_update_order"] = "Update Order"; +$LANG["phrase_update_view"] = "Mwisho View"; +$LANG["phrase_upload_file"] = "Weka Picha"; +$LANG["phrase_upload_files"] = "Upload Files"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Njia upload folder"; +$LANG["phrase_upload_folder_url"] = "Upload folder URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Use Default Value?"; +$LANG["phrase_used_by_num_form_fields"] = "Kutumiwa na # Fomu Fields"; +$LANG["phrase_uses_swatches"] = "Uses Swatches"; +$LANG["phrase_valid_email"] = "Valid Email"; +$LANG["phrase_validation_error"] = "Validation Error"; +$LANG["phrase_validation_rule"] = "Validation Rule"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "View Group"; +$LANG["phrase_view_id"] = "View ID"; +$LANG["phrase_view_name"] = "View Jina"; +$LANG["phrase_view_placeholders"] = "View Placeholders"; +$LANG["phrase_view_submissions"] = "View Submissions"; +$LANG["phrase_view_uploaded_files"] = "view uploaded files"; +$LANG["phrase_viewing_range"] = "[viewing {\$startnum} na {\$endnum}]"; +$LANG["phrase_when_sent"] = "Wakati alimtuma"; +$LANG["phrase_when_submission_is_deleted"] = "Wakati utii ni kuchapa"; +$LANG["phrase_when_submission_is_edited"] = "Wakati utii ni mwisho"; +$LANG["phrase_who_can_access"] = "Ambao wanaweza kupata?"; +$LANG["phrase_word_limit_p"] = "word limit."; +$LANG["phrase_year_to_date"] = "Year to date"; +$LANG["phrase_yes_for_all_views"] = "Ndiyo, kwa wote Views"; +$LANG["phrase_yes_for_specific_views"] = "Ndiyo, kwa mahususi Views"; +$LANG["phrase_your_account"] = "Your Account"; +$LANG["phrase_your_email"] = "Your Email"; +$LANG["phrase_your_email_address"] = "Your email address"; +$LANG["processing_form_disabled"] = "Sorry, fomu hii imekuwa walemavu."; +$LANG["processing_form_incomplete"] = "Sorry, fomu hii haionekani kikamilifu kuanzisha kutoka ndani Fomu Tools. Kusababisha uwezekano zaidi wa tatizo hili ni kuwa wewe kuondolewa ya "form_tools_initialize_form" fomu yaliyofichika uwanja, lakini hakuwa kukamilisha hatua zote za "Add Fomu" mchakato.

    Please log in na mapitio ya fomu Configuration."; +$LANG["processing_init_complete"] = "Asante! Mtihani wako umekuwa kuweka utii kwa mafanikio. Tafadhali kurudi Fomu Tools Administration jopo na bonyeza "Refresh" hapo chini ya kidato Ongeza Hatua ya 3 ukurasa kumaliza kuanzisha fomu yako."; +$LANG["processing_invalid_form_id"] = "Sorry, this doesn't appear to be a valid form ID."; +$LANG["processing_no_form_id"] = "process.php inahitaji ID fomu kwa ajili ya usindikaji. Hakikisha fomu yako ya siri ina shamba kwa jina "form_tools_form_id" kwamba's anapita kando ya fomu ya ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Fomu Tools hawawezi kuamua ni wapi walipo redirect kushindwa kuingia captcha vizuri. Tafadhali kupita katika shamba siri kwa jina URL form_tools_form_url containing ya fomu."; +$LANG["processing_no_post_vars"] = "process.php si kupokea data yoyote. Note: this script hayawezi kubeba moja kwa moja katika browser yako.
    Hakikisha fomu yako ni kutuma via POST."; +$LANG["processing_no_redirect_url"] = "Mara ya kuwasilisha processed usahihi, lakini una si a redirect URL maalum kwa ajili ya fomu hii! Edit fomu yako katika Fomu Tools UI na kuongeza redirect URL."; +$LANG["special_language"] = "Swahili"; +$LANG["special_language_locale"] = "Swahili"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Tafsiri mpya ya akaunti ya mteja itakuwa umba na mazingira na permissions defined chini. To override ya kuweka mteja fulani, hariri akaunti ya mteja na Ziara yao Settings tab."; +$LANG["text_add_form_choose_integration_method"] = "Choose which method you want to use to integrate your form with Form Tools."; +$LANG["text_add_form_code_submission_benefits"] = "This method uses the Form Tools API, included in the main Form Tools script. The API provides a number of helpful functions to make the job of integrating your form with Form Tools as simple as possible. There are no restrictions to how your form may be submitted when you use the API. You can submit the content in one go, or page by page; you can add your own custom server-side validation, CAPTCHA images; you can choose to submit the information now, but only tell it to display the submission in the Form Tools UI at a later date (see the Finalized Submissions section in the API help documentation)."; +$LANG["text_add_form_code_submission_drawbacks"] = "In order to submit your form data via PHP, your form must be located on the same website as this Form Tools installation. Secondly, for non-technical and novice Form Tools users, this method can be a little intimidating at first. But there's plenty of documentation to help you out, including two simple tutorials for integrating your single- and multi-page forms (these are linked to on a later step)."; +$LANG["text_add_form_direct_submission_benefits"] = "Hii ni njia rahisi kuwasilisha fomu yako Fomu Tools. Ni hauhitaji elimu ya PHP yoyote na inahitaji tu ndogo sana kubadilisha fomu yako. Ni kubwa kwa fomu vidogo ambako unataka tu kuwasilisha taarifa kwa redirect kisha database ya mtumiaji hadi "ThankYou" page."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Hii ni mbinu kuwasilisha rahisi sana kutumia, lakini haitoi kudhibiti kwa kiasi ngumu zaidi fomu. Multi-page fomu au fomu ambazo zinahitaji server-side validation ni bora inafaa kwa njia ya pili: kuwasilisha via Fomu Tools API."; +$LANG["text_add_form_field_types1"] = "Almost done! This page tries to find all your form fields and determine their field types. Click the Smart Fill button on the right to get started. You will be only allowed to proceed when all actions have been resolved - issues that need your attention appear in the \"Action Needed\" column."; +$LANG["text_add_form_field_types2"] = "If your form isn't in HTML, click the Skip Step button to proceed. This can all be configured later."; +$LANG["text_add_form_field_types3"] = "This reloads the contents of your form(s). Note: this will overwrite any changes you have made on this page."; +$LANG["text_add_form_field_types4"] = "In case you run into problems, click here to skip this step. All unresolved fields are set to use the default values. You can customize these fields later."; +$LANG["text_add_form_field_types_manual_upload"] = "If you have been unable to Smart Fill your fields, you may want to try an alternative solution: upload copies of your forms in the fields below."; +$LANG["text_add_form_field_types_manual_upload2"] = "Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML versions. To get this, view and save the page from your web browser."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "There were multiple fields that couldn't be found in the form page you specified. This is mostly likely caused by one of the following:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "You entered one or more of the form URLs of your multi-page form incorrectly."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "One or more pages of your form are password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "You incorrectly entered your form URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Click here to return to the Form Information page to check your settings."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "You changed your form(s) after making the test submission"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Click here to put through another test submission."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Your form is password protected and the script couldn't access the page."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "In another tab / window of this browser, log into your form then click the Refresh Page button below to try to re-find the fields."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "If none of the above solutions work, you may also want to try manually uploading your forms for processing."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "There were multiple fields that couldn't be found in the form pages you specified. This is mostly likely caused by one of these:"; +$LANG["text_add_form_help_link"] = "If you run into any trouble during these steps, try reading our user documentation."; +$LANG["text_add_form_step_1_text_1"] = "Kurasa zifuatazo itakuongoza kupitia hatua configure Fomu Tools kuhifadhi fomu yako redovisningar. Kabla ya kuendelea, tafadhali hakikisha kwamba:"; +$LANG["text_add_form_step_1_text_2"] = "fomu yako tayari imekuwa umba na ni kupatikana kupitia URL (localhost ni laini)"; +$LANG["text_add_form_step_1_text_3"] = "wanaweza hariri fomu yako"; +$LANG["text_add_form_step_2_para_2"] = "Wazi fomu yako katika mhariri wa uchaguzi wako na mabadiliko tag fomu yako ya zifuatazo, pamoja yaliyofichika mbili mashamba."; +$LANG["text_add_form_step_2_para_3"] = "Next, wazi fomu yako katika web browser. Jaza katika kila uwanja na kuwasilisha yake. Baada ya kuwasilisha, unapaswa kuona notification ujumbe. Mara ujumbe huu visas, kurudi ukurasa huu na kunawirisha bonyeza kifungo chini. Wakati mchakato huu ni kamili, utaona ya kuendelea button chini, wewe kuchukua hatua inayofuata."; +$LANG["text_add_form_step_2_para_6"] = "Katika kuwasilisha fomu yako, ni pamoja na zifuatazo maadili. Wanaweza kuwekwa moja kwa moja via PHP au kupita pamoja kupitia fomu yenyewe. Chini ni mifano ya kila mmoja. The (\$ varname) ni hash (au safu associative) ya kuwasilisha fomu ya taarifa zote - hii ni kawaida ya (\$ postvar) au (\$ sessionvar) variable, lakini inaweza kuwa desturi kujengwa."; +$LANG["text_add_form_step_2_text_2"] = "Enter the URL of your \"thankyou\" page here. This is where you want people to be directed to after the form has been submitted."; +$LANG["text_add_form_step_3_para_1"] = "Ukurasa huu unaorodhesha nyanja zote katika kuwasilisha fomu yako. Tafadhali kuchunguza kila shamba na kuondoa yoyote kwamba huna haja kuhifadhiwa kwa kila ut'iifu. Ikiwa delete shamba halali kwa ajali, au unataka kubadilisha habari kuhifadhiwa kwa fomu yako, kurudi ukurasa uliopita kutuma mtihani mpya ut'iifu."; +$LANG["text_add_form_step_3_para_2"] = "Note: kama you're kutuma multiple maadili via checkboxes au multi-chagua kisanduku, hakikisha shamba lako jina inaishia katika [] characters (tazama user nyaraka kwa maelezo zaidi)."; +$LANG["text_add_form_step_3_text_1"] = "Here's where the fun starts! At this point, Form Tools is waiting for a test submission from your form. It will use this form submission to know what information should be stored in the database."; +$LANG["text_add_form_step_3_text_2"] = "kwa akizungumzia fomu yako Fomu Tools"; +$LANG["text_add_form_step_3_text_3"] = "kutumia Fomu Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Kusaidia kuunganisha fomu yako, sisi kupendekeza usome moja ya tutorials zifuatazo:"; +$LANG["text_add_form_step_3_text_5"] = "Wao kueleza jinsi kuanzisha fomu yako katika maandalizi kwa mtihani utii, na ni pamoja na taarifa nyingine ambayo inaweza kuwa ya msaada. Mstari wa PHP utahitaji ni:"; +$LANG["text_add_form_step_3_text_6"] = "Hii inahakikisha takwimu ni kweli waliotumwa Fomu Tools. Wakati una kuweka kupitia utii mtihani wako, bonyeza kifungo chini."; +$LANG["text_add_form_step_3_text_7"] = "Kwenye ukurasa wako kabla ya mwisho "asante" ukurasa, hakikisha kuongeza parameter zifuatazo ya \$ params variable:"; +$LANG["text_add_form_step_5_para_1"] = "Ya Mbegu umeanzishwa kwa ajili ya fomu hii na fomu imekuwa aktiverat kwa matumizi. Ikiwa alifanya utii kwa akizungumzia process.php fomu yako, tafadhali kurudi fomu yako na kuondoa shamba yaliyofichika zifuatazo:"; +$LANG["text_add_form_step_5_para_2"] = "Kisha kutembelea yako "asante" ukurasa tupu wa vikao. Mara hii ni kufanyika, kila aina mpya redovisningar itakuwa processed na kuhifadhiwa kwa Fomu Tools. Jaribu kufanya utii au mbili ili kuthibitisha habari uploading wote ni sawa."; +$LANG["text_add_form_step_5_para_3"] = "Ikiwa unataka fine-tune fomu yako kwa chaguzi kama vile auto-emailing, akiongeza fomu mashamba ya ziada shamba, au shamba customizing fomu za aina, unaweza hariri fomu yako wakati wowote uhakika."; +$LANG["text_add_form_step_5_para_4"] = "Tangu fomu yako ina faili upload mashamba, utahitaji configure kila fani kwa specify faili upload folder, nini files wanaruhusiwa na. Hii inaweza kupatikana kwenye tab Display fomu ya hariri ukurasa huu."; +$LANG["text_add_form_step_5_para_5"] = "Kama kuwasilisha alitumwa via API, kubadilisha line ft_api_init_form_page kwenye ukurasa wa kwanza wa fomu yako kwa:"; +$LANG["text_add_submission_button"] = "The Add Submission button only appears for Views that have the \"May add submissions\" option set to \"yes\"."; +$LANG["text_admin_email_placeholder_info"] = "Hii ni barua pepe ya kidato Tools administrator, defined katika akaunti yako settings. Hii matokeo tu ya barua pepe, hivyo kama unataka kutumia kama HTML Link, utahitaji wrap ni katika <a> tag, kama hivyo:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Pia the default login umebadilisha mandhari)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "First, please choose your form type."; +$LANG["text_client_form_page"] = "Ukarasa huu umebadilisha orodha yote ya fomu na Views kupewa kwa mteja hii. Tip: ili kwa wao kuona fomu's redovisningar, wanahitaji kuwa na kupewa kwa angalau moja View."; +$LANG["text_client_map_filters_desc1"] = "Mteja Map filters hebu wewe kikomo redovisningar kwamba kuonekana katika ramani hii View kwa maadili katika shamba fomu ya maadili katika akaunti ya mteja."; +$LANG["text_client_no_forms"] = "Wewe sasa hawana fomu inapatikana kwa marekebisho."; +$LANG["text_client_welcome"] = "Karibu! Mpango huu maduka taarifa zote iliombwa na tovuti yako wageni. To view redovisningar kwa namna fulani tu VIEW bonyeza link, au kuona leftmost urambazaji menu kwa chaguzi nyingine."; +$LANG["text_config_file_created"] = "Yako faili imekuwa config.php waumba."; +$LANG["text_config_file_not_created"] = "Tusingeweza kuunda faili config.php yako. Utahitaji kuunda faili manually."; +$LANG["text_config_file_not_created_instructions"] = "Nakili na kuweka yaliyomo kutoka sehemu ya chini kwenye faili inayoitwa config.php na upload it via FTP na kidato Tools / global folder (the folder ambayo pia ina nyingine chache files na telefonkataloger, faili mmoja aitwaye library.php)."; +$LANG["text_confirm_delete_form"] = "Ndiyo, nataka delete fomu hii"; +$LANG["text_create_admin_account"] = "Now we're going kujenga administrator's akaunti. Hii ni kutumiwa kwa kusimamia masuala yote ya kidato Tools, kama akiongeza fomu na kujenga akaunti ya mteja."; +$LANG["text_create_new_client_account"] = "Tumia fomu hapo chini ili kujenga mteja mpya akaunti. All fields are required."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "se PHP {\$datefunctionlink} kazi formatting options"; +$LANG["text_default_file_settings_page"] = "This page amefafanua faili upload settings Fomu yako Tools installation. Hizi zinahusu all files uploaded kupitia Fomu Tools, isipokuwa uttryckligen overridden fomu kwa mtu binafsi shamba. Angalia: ikiwa kubadilisha baada files upload folder wamekuwa uploaded watakuwa automatiskt walihamia folder mpya."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Kabla ya kuendelea, utahitaji update yako / themes / default / cache folder kuruhusu full permissions kusoma na kuandika. Mara hii ni kufanyika, ujumbe huu kutoweka mapenzi na unaweza kufunga ya script."; +$LANG["text_default_values_in_view"] = "This section is optional. All submissions created with this View will contain the default values specified here."; +$LANG["text_delete_all_forms"] = "Nataka delete all files kwamba walikuwa uploaded via fomu hii"; +$LANG["text_delete_form_warning"] = "Una uhakika unataka kufuta fomu hii? Hii action cannot be undone. Data zote itakuwa permanent waliopotea!"; +$LANG["text_edit_admin_menu_page"] = "Unaweza hariri menu yako chini. Ninyi daima kuhakikisha wanapata funktionalitet wote inapatikana ndani ya kidato Tools, kurasa zifuatazo zinahitajika: Fomu, wateja, Your Account, Modules, Settings na Logout."; +$LANG["text_edit_client_menu_page"] = "Sehemu hii inakuwezesha Customize kushoto urambazaji column kwa kila user. Unaweza kujenga kama mteja menus wengi kama unataka na hawawajui akaunti yoyote mmoja wao. By default kuna menus wawili: mmoja kwa ajili yenu, msimamizi, na mmoja kwa kila mteja akaunti. The administrator akaunti inaweza kuwa iliyopita lakini siyo kuondolewa."; +$LANG["text_edit_tab_summary"] = "If you wish to group this View's fields into tabs, just enter the tab names below. After you're done, select the appropriate tab for each field group in the Fields tab."; +$LANG["text_edit_view_list_page"] = "This tab controls which fields appear as columns on the Submission Listing page, and a few additional settings for those fields. Note: we recommend you add no more than 4 or 5 of the most important fields in the View."; +$LANG["text_email_settings_intro"] = "Huu ambayo inakuwezesha kutambua fomu yako ya barua pepe kuhifadhi mashamba motsvarande zao na majina. Mara wewe define yao hapa, unaweza kutumia barua pepe yako nao katika templates kama wapokeaji. Sehemu hii ni hiari kabisa."; +$LANG["text_email_tab_summary"] = "Sehemu hii inakuwezesha kujenga idadi yoyote ya barua pepe kutumwa kila fomu yako ni fram, na kuchochea wengine."; +$LANG["text_email_template_tab"] = "Sehemu hii inakuwezesha kuamua nini inaonekana yaliyomo katika email. Ikiwa unataka kutuma email yako kama Nakala tu au barua pepe kuingia thamani tu kwa sehemu. Kama wewe kuingia thamani kwa wote, ya email watapelekwa katika wawili format."; +$LANG["text_email_template_text_1"] = "Kumekuwa utii kufanywa kupitia fomu yako, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Kumekuwa utii kufanywa kupitia fomu yako, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Thanks for your kuwasilisha!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Error message to show if the field fails the validation"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "External forms are forms that already exist on your website, or somewhere on the web. Select this option if you have your own form which you'd like to integrate with Form Tools."; +$LANG["text_fields_tab_summary"] = "This page lists all of your form fields. To control how they appear when browsing submissions, see the Views tab. Deleting a field on this page will delete it from all submissions, so please be careful!"; +$LANG["text_file_extension_info"] = "Kuingia faili upanuzi kutengana na koma (km jpg, gif, png) au kuondoka blank kuruhusu aina ya faili yoyote."; +$LANG["text_file_field_placeholders_info"] = "Picha mashamba placeholders maalum wawili: FILEURL na Filename. FILEURL ni URL kamili ya SVG, hivyo unaweza zilizounganishwa moja kwa moja katika barua pepe yako; Filename ni faili jina tu."; +$LANG["text_filters_page"] = "Redovisningar wale tu kwamba kufikia wewe define chini ya sheria itaonekana katika hii View."; +$LANG["text_filters_tips"] = "Kwa vidokezo juu ya jinsi ya kutumia filters utii, angalia Documentation mtumiaji."; +$LANG["text_forgot_password"] = "Hakuna tatizo. Tu kuingia username yako chini na habari login wako watapelekwa kwa barua pepe yako kwenye faili. Kama una wamesahau username yako, tafadhali email tovuti administrator saa {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Fomu hii ina faili moja au zaidi upload mashamba:"; +$LANG["text_form_placeholder_info"] = "The following placeholders may be used in any email template and language placeholder field, regardless of whatever View the email template is assigned to. The QUESTION placeholders are the specific form question; the ANSWER placeholders are the answers to each question."; +$LANG["text_form_submission_date_placeholder"] = "The date when the submission was made."; +$LANG["text_form_tools_form_url"] = "The full URL of the form. This only has a value for External forms."; +$LANG["text_form_tools_login_url"] = "The login URL kwa Fomu Tools."; +$LANG["text_form_view_permission_info_admin"] = "Note: this form currently has Administrator access type, so none of the client accounts will be able to see this View."; +$LANG["text_form_view_permission_info_private"] = "Note: this form currently has Private access type so the Public and Private options here will be limited to that subset of clients."; +$LANG["text_ft_installed"] = "Congratulations, Form Tools imekuwa mafanikio installed!"; +$LANG["text_global_placeholder_info"] = "Placeholders hizi inaweza kutumika katika template yoyote na aina yoyote."; +$LANG["text_group_name_explanation"] = "Mashamba aliongeza kwa kupitia mchakato wa kidato Ongeza, hii ni kabla ya thamani ya kujazwa kwa Nakala ya chochote display shamba anatumia thamani. Unaweza ukataka kwa kubadili tabia bora yaliyomo."; +$LANG["text_install_create_config_file"] = "Fomu Tools maduka na database server yako katika mazingira faili inayoitwa config.php, hupatikana katika yako / global / folder. Click the "Create Picha" button kwa kuzalisha automatiskt faili yako server."; +$LANG["text_install_create_database_tables"] = "Now we're going kujenga database Tools Fomu meza. Hatua hii inahitaji database yenyewe kuwa tayari waumba. Kama huna uhakika jinsi ya kufanya hili, tafadhali wasiliana na mtoa mwenyeji wako."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" kawaida inamaanisha kwamba wewe hostname zinazotolewa ni sahihi. Labda jaribu kuweka hili "localhost" - hii ni njia ya kawaida rejea kwa "mtaa" database kwenye web server."; +$LANG["text_install_db_tables_error_tip_2"] = ""Can't connect to mitaa MySQL server kupitia Socket" maana ya Mbegu tena hostname shamba ni sahihi."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access kukataliwa kwa user:" ina maana kwamba kuna tatizo na username yako / password mchanganyiko."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access kukataliwa kwa user: ... na database ..." inamaanisha kuwa ingawa username na password yako wewe waliopata ni sahihi, ilikuwa kushindwa kuwaunganisha na kwamba database hasa kwa kuwa akaunti. Hii inaweza kumaanisha kwamba aidha jina Mbegu yako ni sahihi, au kwamba user akaunti hii si yanayohusiana na kwamba database."; +$LANG["text_install_email_content_text"] = "Kuna rasilimali nyingi kwenye tovuti yetu ili kukusaidia kuanza, ikiwa ni pamoja na nyaraka zetu za mtandaoni (https://docs.formtools.org) na mafunzo (https://docs.formtools.org/tutorials). Ikiwa utakuta kukataa au kuwa na swali, uulize swali kwenye github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Sorry, Form Tools will not be able to run on your server. Please click here for the minimum requirements."; +$LANG["text_install_system_check"] = "This page anaendesha vipimo chache mfumo wako kuhakikisha ni kuweza kukimbia Fomu Tools."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Internal forms exist only within Form Tools - not elsewhere on your site. Only Form Tools user accounts will have access to the form. Select this option if you don't have an existing form."; +$LANG["text_internal_form_intro"] = "Use the form below to create a new Internal form. All settings, including the number and content of the form fields can be be changed and configured later."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Ili login na kutumia Fomu Tools, lazima uwe na javascript enabled in your browser. Tafadhali kuwawezesha sasa, na bonyeza kunawirisha katika browser yako."; +$LANG["text_last_modified_date_explanation_c"] = "Wakati huu wa mwisho kuwasilisha mara iliyopita. Kwa mwezi redovisningar, hii ni sawa kama:"; +$LANG["text_limit_email_content_desc"] = "This option only works for HTML and text content generated with Smarty loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(tu orodha Views na moja au zaidi filters defined)"; +$LANG["text_log_in_to_ft"] = "Log in to Form Tools"; +$LANG["text_login"] = "Please log in chini kupata (\$ program_name) Administration Jopo. Kama una wamesahau password yako, bonyeza hapa."; +$LANG["text_login_info"] = "Kama requested, hapa ni login yako habari."; +$LANG["text_name_of_form"] = "Jina la fomu."; +$LANG["text_no_clients"] = "Sasa kuna hakuna wateja katika database. Kuongeza akaunti ya mteja mpya, bonyeza Add Mteja button chini."; +$LANG["text_no_clients_found"] = "Hakuna wateja walikuwa found. Kujaribu kupanua vigezo utafutaji wako."; +$LANG["text_no_fields_in_view"] = "This View doesn't have any fields in it. Click the link below."; +$LANG["text_no_forms"] = "Sasa kuna aina yoyote katika database. Kuongeza aina mpya, bonyeza Add Fomu button chini."; +$LANG["text_no_forms_found"] = "No forms were found."; +$LANG["text_no_forms_found_search"] = "No forms were found. Try broadening your search criteria."; +$LANG["text_no_modules_found"] = "Hakuna modules walikuwa found. Kujaribu kupanua vigezo utafutaji wako."; +$LANG["text_no_recipients_added"] = "Hakuna wapokeaji wamekuwa aliongeza."; +$LANG["text_no_search_results"] = "Hakuna matokeo na hili tafuta vigezo / View."; +$LANG["text_no_submissions_found"] = "Sorry, no redovisningar walikuwa found."; +$LANG["text_no_themes"] = "You do not have any themes defined. Click the button below to refresh your theme list, or check the Form Tools user documentation for information about adding themes."; +$LANG["text_non_deletable_fields"] = "This field is used by the Core script and cannot be edited or deleted without causing incompatibilities. If you wish to make changes to the field type, make a copy of it and edit the copy."; +$LANG["text_option_list_group_explanation"] = "If this is selected, it lets to group your options. How the groups are displayed depends on the field type using this option list."; +$LANG["text_option_list_page"] = "Radio buttons, checkboxes, dropdowns and multi-select dropdown fields all provide the user with multiple options from which they can select one or more items. In Form Tools, these are known as Option Lists. Generally, these are created automatically by the Add External Form process, but you can manually add or edit your option lists below if your form content changes or you construct fields that are only used internally."; +$LANG["text_option_list_used_by_fields"] = "This Option List is used by multiple form fields. If you update the information below, it will be changed for all of the fields (see the Form Fields tab to see the list of fields). If you wish to update the values for one, or a subset of the fields that are currently assigned, click here to create a new Option List with the same values as this one. Then you can assign the form fields you want to the new group."; +$LANG["text_public_form_omit_list_page"] = "Fomu za umma kukupa faida ya wote kumuachilia mteja upatikanaji akaunti yao bila manually hawawajui kila mteja wao. Ukurasa huu inakuwezesha pinpoint wale wateja ambao wanaweza kupata fomu hii, hata fomu ni markant kama umma."; +$LANG["text_public_view_omit_list_page"] = "Umma Views kukupa faida ya wote kumuachilia mteja upatikanaji akaunti yao bila manually hawawajui kila mteja wao. Ukurasa huu inakuwezesha pinpoint wale wateja ambao wanaweza kupata hii si hasa View."; +$LANG["text_reference_tab_info"] = "This page lists all placeholders available for your form. Placeholders are strings which can be used in the email templates, and fields marked with a special placeholder icon . When entered into a field, they are dynamically converted to the appropriate value when the field is viewed or the email is sent."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Upya user nyaraka"; +$LANG["text_send_email_from_edit_submission_page"] = "Chaguo ni pamoja na kutuma barua pepe hii kutoka Edit Submission ukurasa"; +$LANG["text_smart_fill_option_list_problem"] = "We were unable to Smart Fill your field options. However, as an alternative, you can try uploading a copy of your form page in the field below. Note: do not upload raw PHP pages (or other server-side code) - just upload the HTML version. To get this, view and save the page from your web browser."; +$LANG["text_submission_ip_address"] = "Ya IP Address ya mtumiaji ambaye alifanya utii."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Kutumia fomu chini aidha view au kutuma barua pepe generated mwenyewe kutoka template email hii. Ya barua pepe ni tu alimtuma maalum ya barua pepe hapa chini; kuu, cc na bcc wapokeaji barua pepe ni kupuuzwa wakati kupima."; +$LANG["text_test_email_templates_no_submissions"] = "Ili mtihani templates email yako, lazima kwanza kuweka kupitia angalau kuwasilisha fomu moja."; +$LANG["text_theme_page_intro"] = "Ukurasa huu unaorodhesha mandhari yako yote. Click on a thumbnail kubwa kuona mfano wa mandhari ya mitindo. Ya "kuwezesha" checkbox huamua iwapo au si kwamba mandhari inaweza kuwa kuchaguliwa kwa wateja. To browse wote inapatikana mandhari, tembelea tovuti ya kidato Tools."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Adding fomu yako ya kwanza!"; +$LANG["text_unique_submission_id"] = "ID utii ya kipekee."; +$LANG["text_unused_option_list"] = "This option list is not being used by any form fields."; +$LANG["text_upgraded"] = "Ufungaji yako imekuwa uppdaterade kwa {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "This Option List is used by the following fields."; +$LANG["text_view_fields_info"] = "This tab controls which fields show up when editing a submission in this View, their order and whether they are editable or not."; +$LANG["text_view_tab_summary"] = "This tab lets you create different ways to group and arrange your data. Views let you create custom subsets of your form data to split it into manageable chunks, and to limit what clients may see or edit."; +$LANG["validation_account_disabled"] = "Sorry, akaunti yako imekuwa walemavu."; +$LANG["validation_account_not_recognized"] = "Sorry, kwamba si alitambua username."; +$LANG["validation_account_not_recognized_info"] = "Sorry, kwamba username hakuonekana. Tafadhali jaribu tena, au wasiliana na tovuti administrator katika anuani hapo chini."; +$LANG["validation_account_pending"] = "User account yako ni inasubiri kupitishwa na an administrator."; +$LANG["validation_check_delete_client"] = "Una uhakika unataka kufuta hii akaunti ya mteja?"; +$LANG["validation_client_password_missing_number"] = "The client password must contain at least one number (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "The client password must contain at least one of the following characters: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "The client password must contain at least one uppercase letter."; +$LANG["validation_client_password_too_short"] = "The client password needs to be at least {\$number} characters long."; +$LANG["validation_col_name_is_reserved_word"] = "Sorry, this database column jina ni kazi reserved MySQL. Please rename it!"; +$LANG["validation_db_name"] = "Majina ya data haziwezi kuwa na vipindi au kupungua."; +$LANG["validation_db_not_updated_invalid_input"] = "The database hakuweza uppdateras. Tafadhali kuangalia kuona maadili wewe aliingia ni halali."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Sorry, the default administrator na mteja mandhari lazima iwe enabled."; +$LANG["validation_default_phone_num_required"] = "Please fill in the full telephone number for the <b>{\$field}</b> field - numbers only."; +$LANG["validation_default_rule_alpha"] = "Please only enter letters and numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_letters_only"] = "Please only enter letters for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_numbers_only"] = "Please only enter numbers for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_required"] = "Please enter a value for the <b>{\$field}</b> field."; +$LANG["validation_default_rule_valid_email"] = "Please enter a valid email address for the <b>{\$field}</b> field."; +$LANG["validation_delete_form_confirm"] = "Tafadhali angalia sanduku kuthibitisha kwamba unataka kufuta fomu hii."; +$LANG["validation_delete_non_empty_option_list"] = "Warning! This Option List is used by one or more form fields. Deleting it will make those fields cease to work properly."; +$LANG["validation_display_names_incomplete"] = "Tafadhali kuingia thamani kwa Display Majina yote, au bonyeza Smart Jaza kuingia kwao chaguo dynamically."; +$LANG["validation_duplicate_form_field_name"] = "You cannot have multiple fields with the same field name."; +$LANG["validation_email_not_found_or_invalid"] = "Samahani, email zinazohusiana na akaunti yako aidha haipo, au ni invalid."; +$LANG["validation_folder_invalid_permissions"] = "Ili kukimbia mtihani huu, haja ya permissions kuwekwa kwenye folder upload kuruhusu kwa kusoma na kuandika files (777 on Unix)."; +$LANG["validation_folder_not_writable"] = "Hii si writeable folder."; +$LANG["validation_internal_form_too_many_fields"] = "Sorry, you can only created forms with 1000 fields or less."; +$LANG["validation_invalid_admin_email"] = "Tafadhali ingiza halali adminstrator's email address."; +$LANG["validation_invalid_admin_username"] = "Your username may only consist of alphanumeric characters (a-Z and 0-9)."; +$LANG["validation_invalid_client_username"] = "Mteja's user jina huweza tu omfattar alphanumeric herufi (az na 0-9)."; +$LANG["validation_invalid_client_username2"] = "Sorry, username's huweza tu vyenye barua, idadi na underscore tabia. Tafadhali ingiza username mpya."; +$LANG["validation_invalid_column_name"] = "Column names may only be alphanumeric (a-Z, 0-9). Please check the column names."; +$LANG["validation_invalid_custom_from_email"] = "Tafadhali ingiza desturi halali 'Kutoka' email address."; +$LANG["validation_invalid_custom_reply_to_email"] = "Tafadhali ingiza desturi halali 'Reply-na' email address."; +$LANG["validation_invalid_default_sessions_timeout"] = "Tafadhali kuingia halali thamani (idadi) kwa ajili ya vikao vya default Timeout."; +$LANG["validation_invalid_email"] = "Tafadhali ingiza anwani ya barua pepe halali."; +$LANG["validation_invalid_email_id"] = "Sorry, that's an invalid email ID."; +$LANG["validation_invalid_folder"] = "Sorry, hii haionekani kuwa ni halali folder."; +$LANG["validation_invalid_form_field_names"] = "Fomu mashamba zinaweza alphanumeric na underscores (AZ, 0-9, _), na hakuna liko chinichini."; +$LANG["validation_invalid_num_clients_per_page"] = "Tafadhali tu idadi kuingia katika Hes Clients Per Page shamba."; +$LANG["validation_invalid_num_emails_per_page"] = "Tafadhali ingiza tarakimu tu kwa barua pepe kwa kila ukurasa."; +$LANG["validation_invalid_num_form_fields"] = "Please only enter numbers in the Number of Fields field."; +$LANG["validation_invalid_num_forms_per_page"] = "Tafadhali tu idadi kuingia katika Fomu Hes Per Page shamba."; +$LANG["validation_invalid_num_menus_per_page"] = "Tafadhali ingiza tarakimu tu kwa menus per page."; +$LANG["validation_invalid_num_modules_per_page"] = "Tafadhali tu idadi kuingia katika Hes Per Page Modules shamba."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Please only enter numbers in the Num Option Lists Per Page field."; +$LANG["validation_invalid_num_submissions_per_page"] = "Tafadhali ingiza idadi halali redovisningar per page."; +$LANG["validation_invalid_sessions_timeout"] = "Tafadhali ingiza kikao halali Timeout (integers tu!)."; +$LANG["validation_invalid_tab_assign_values"] = "Tafadhali tu idadi kuingia katika 'kutoka' na 'kwa' mashamba."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "Yako server's ufungaji wa PHP has an invalid upload_tmp_dir kuweka kwa thamani. "{\$upload_folder}", si halali folder."; +$LANG["validation_invalid_url"] = "Tafadhali ingiza halali URL."; +$LANG["validation_invalid_username"] = "Your username huweza tu omfattar alphanumeric herufi (az na 0-9)."; +$LANG["validation_is_form_active"] = "Tafadhali ainisha kama fomu ni kazi au la."; +$LANG["validation_menu_name_taken"] = "Sorry, hii jina menu tayari kuchukuliwa. Tafadhali chagua jina jipya."; +$LANG["validation_modules_search_no_status"] = "Please select either the Enabled or Disabled checkboxes."; +$LANG["validation_no_access_type"] = "Tafadhali kuingia upatikanaji aina."; +$LANG["validation_no_account_logout_url"] = "Tafadhali ingiza logout URL yako."; +$LANG["validation_no_account_password_confirmed"] = "Tafadhali re-ingiza nywila yako."; +$LANG["validation_no_account_password_confirmed2"] = "Please re-enter the new password."; +$LANG["validation_no_admin_email"] = "Tafadhali kuingia administrator's email address."; +$LANG["validation_no_admin_theme"] = "Tafadhali chagua administrator mandhari kwa akaunti."; +$LANG["validation_no_admin_theme_swatch"] = "Please select a swatch for the administrator theme."; +$LANG["validation_no_client_email"] = "Tafadhali kuingia mteja's email address."; +$LANG["validation_no_client_first_name"] = "Tafadhali kuingia mteja ya kwanza ya jina lake."; +$LANG["validation_no_client_last_name"] = "Tafadhali kuingia mteja wa mwisho wa jina lake."; +$LANG["validation_no_client_login_page"] = "Tafadhali ainisha ambayo ukurasa mteja anapaswa omdirigerat kwa wakati wao log in"; +$LANG["validation_no_client_password"] = "Tafadhali kuingia mteja's password."; +$LANG["validation_no_client_theme_swatch"] = "Please select a default swatch for the client accounts."; +$LANG["validation_no_client_username"] = "Tafadhali kuingia mteja's username."; +$LANG["validation_no_column_name"] = "Please enter all column names, or click the Smart Fill button to automatically fill them."; +$LANG["validation_no_column_selected"] = "Tafadhali chagua uwanja angalau mmoja kuonekana kama column juu ya utii listing page."; +$LANG["validation_no_custom_from_email"] = "Tafadhali kuingia desturi 'Kutoka' email address."; +$LANG["validation_no_custom_recipient_email"] = "Tafadhali kuingia desturi mpokeaji email address."; +$LANG["validation_no_custom_reply_to_email"] = "Tafadhali kuingia desturi 'Reply-na' email address."; +$LANG["validation_no_date_format"] = "Tafadhali kuingia date format."; +$LANG["validation_no_db_column_single"] = "Please enter the Database Column name."; +$LANG["validation_no_db_hostname"] = "Please enter the database hostname."; +$LANG["validation_no_db_name"] = "Please enter the database name."; +$LANG["validation_no_db_username"] = "Please enter the database account username."; +$LANG["validation_no_default_client_theme"] = "Tafadhali chagua default mandhari kwa wote akaunti mteja mpya."; +$LANG["validation_no_default_language"] = "Tafadhali chagua lugha default yako ufungaji wa kidato Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Tafadhali kuingia default kikao user Timeout kwa akaunti."; +$LANG["validation_no_display_text"] = "Please enter the Display Text for each field."; +$LANG["validation_no_display_text_single"] = "Please enter the Display Text value."; +$LANG["validation_no_edit_submission_page_label"] = "Tafadhali kuingia Edit Submission umebadilisha studio."; +$LANG["validation_no_email"] = "Tafadhali ingiza anwani yako ya barua pepe."; +$LANG["validation_no_email_config_field"] = "Tafadhali taja ambayo fomu email shamba ni shamba."; +$LANG["validation_no_email_content"] = "Tafadhali ingiza maudhui ya barua pepe kwa angalau moja ya format (HTML au asilia)."; +$LANG["validation_no_email_from_field"] = "Tafadhali ya barua pepe 'kutoka' shamba."; +$LANG["validation_no_email_template_name"] = "Tafadhali kuingia template email jina."; +$LANG["validation_no_email_template_view_id"] = "Tafadhali chagua ambayo View template email hii lazima mapped."; +$LANG["validation_no_email_template_view_mapping_value"] = "Tafadhali ainisha wakati email upelekwe."; +$LANG["validation_no_enabled_themes"] = "Tafadhali kuhakikisha kwamba angalau moja ni mandhari enabled."; +$LANG["validation_no_first_name"] = "Tafadhali ingiza jina yako ya kwanza."; +$LANG["validation_no_form_field_name"] = "Tafadhali kuingia shambani fomu wote majina."; +$LANG["validation_no_form_field_single"] = "Please enter the Form Field value."; +$LANG["validation_no_form_id"] = "ID fomu haikuwa maalum. Tafadhali logi nje na jaribu tena."; +$LANG["validation_no_form_name"] = "Tafadhali kuingia form jina."; +$LANG["validation_no_form_url"] = "Tafadhali kuingia fomu URL."; +$LANG["validation_no_last_name"] = "Tafadhali ingiza jina yako ya mwisho."; +$LANG["validation_no_login_page"] = "Tafadhali ainisha ambayo ukurasa ungependa kuwa alimtuma kila wakati wewe log in"; +$LANG["validation_no_logout_url"] = "Tafadhali kuingia logout URL."; +$LANG["validation_no_main_email_recipient"] = "Tafadhali ingiza angalau moja email kuu mpokeaji (yaani si cc au bcc)."; +$LANG["validation_no_menu"] = "Please select a menu for this user akaunti."; +$LANG["validation_no_menu_id"] = "Please select a menu."; +$LANG["validation_no_num_clients_per_page"] = "Tafadhali ingiza namba ya akaunti ya mteja kwa kila ukurasa."; +$LANG["validation_no_num_emails_per_page"] = "Tafadhali ingiza idadi ya barua pepe kwa orodha per page."; +$LANG["validation_no_num_form_fields"] = "Please enter the number of fields for your form."; +$LANG["validation_no_num_forms_per_page"] = "Tafadhali ingiza namba ya aina per page."; +$LANG["validation_no_num_menus_per_page"] = "Tafadhali ingiza idadi ya menus kuorodhesha per page."; +$LANG["validation_no_num_modules_per_page"] = "Tafadhali ingiza idadi ya modules per page."; +$LANG["validation_no_num_option_lists_per_page"] = "Please enter the number of option lists per page."; +$LANG["validation_no_num_submissions_per_page"] = "Tafadhali ingiza idadi ya redovisningar kuonyesha per page."; +$LANG["validation_no_option_list_name"] = "Please enter the option list name."; +$LANG["validation_no_page_titles"] = "Tafadhali kuingia default umebadilisha vyeo kwa user akaunti."; +$LANG["validation_no_password"] = "Tafadhali ingiza nywila yako."; +$LANG["validation_no_program_name"] = "Tafadhali ingiza jina mpango."; +$LANG["validation_no_second_password"] = "Please re-enter your password."; +$LANG["validation_no_sessions_timeout"] = "Tafadhali kuingia katika kikao Timeout."; +$LANG["validation_no_smart_fill_values"] = "Tafadhali kuingia shambani fomu jina na URL ya fomu."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "Hakuna tabs defined"; +$LANG["validation_no_test_email_recipient"] = "Tafadhali ingiza anwani ya barua pepe ya wapi tunapaswa kutuma mtihani email."; +$LANG["validation_no_test_email_submission_id"] = "Tafadhali kuingia ID kuwasilisha idadi."; +$LANG["validation_no_theme"] = "Tafadhali chagua temat."; +$LANG["validation_no_theme_swatch"] = "Please select a swatch for the selected theme."; +$LANG["validation_no_timezone_offset"] = "Tafadhali kuingia TimeZone kompenserat."; +$LANG["validation_no_titles"] = "Tafadhali kuingia katika ukurasa vyeo."; +$LANG["validation_no_two_column_names"] = "Sorry, unaweza iingie sawa column Mbegu jina mara mbili."; +$LANG["validation_no_ui_language"] = "Tafadhali chagua lugha kwa interface."; +$LANG["validation_no_url"] = "Tafadhali kuingia URL."; +$LANG["validation_no_username"] = "Tafadhali ingiza your username."; +$LANG["validation_no_username_or_js"] = "Lazima iingie your username. Tafadhali aktivera javascript katika browser yako."; +$LANG["validation_no_view_fields"] = "View yako haina vyenye mashamba yoyote! Unahitaji hawawajui angalau shamba moja kwa kuwa kuna kitu show up in your View."; +$LANG["validation_no_view_fields_selected"] = "Tafadhali teua mmoja au zaidi ya mashamba kwa kuongeza katika View."; +$LANG["validation_no_view_name"] = "Tafadhali ingiza jina yako View."; +$LANG["validation_num_rows_to_add"] = "Tafadhali ingiza idadi ya mistari kuongeza."; +$LANG["validation_option_list_name_taken"] = "Sorry, this option list name is already taken. Please choose a new name."; +$LANG["validation_password_in_password_history"] = "For security, you cannot enter the same password as any of the last {\$history_size} passwords. Please enter a different password."; +$LANG["validation_passwords_different"] = "Tafadhali hakikisha ya lösenord ni sawa."; +$LANG["validation_please_enter_search_date_range"] = "Tafadhali chagua tarehe tafuta mbalimbali."; +$LANG["validation_please_enter_search_keyword"] = "Tafadhali kuingia search keyword."; +$LANG["validation_select_field_type"] = "Tafadhali chagua aina shamba."; +$LANG["validation_select_submissions_to_copy"] = "Tafadhali chagua maoni hayo ungependa kuipiga."; +$LANG["validation_select_submissions_to_delete"] = "Tafadhali chagua wale redovisningar ungependa delete."; +$LANG["validation_smart_fill_cannot_fill"] = "Sorry, sisi hakuweza kujaza uwanja huu."; +$LANG["validation_smart_fill_invalid_field_type"] = "Sisi walikuwa hawawezi Locate shamba, lakini siyo dropdown, redio checkbox au kikundi."; +$LANG["validation_smart_fill_no_field_found"] = "Sorry, sisi hakuweza kupata fomu shamba kwa jina kwenye ukurasa maalum."; +$LANG["validation_smart_fill_no_page"] = "Tafadhali Locate ukurasa containing shamba unataka Smart Jaza."; +$LANG["validation_smart_fill_upload_all_pages"] = "Tafadhali upload kurasa wote katika fomu yako."; +$LANG["validation_upload_folder_not_writable"] = "Hii upload folder muda maalum kwa ufungaji PHP yako si writable. Mpaka hii ni fasta, files hawezi kuwa uploaded kupitia Fomu Tools (au programu yoyote PHP). Tafadhali wasiliana na mtoa mwenyeji wako."; +$LANG["validation_upload_html_files_only"] = "Tafadhali tu HTML upload files."; +$LANG["validation_username_taken"] = "Sorry, kwamba username tayari kuchukuliwa. Tafadhali kuingia mwingine username."; +$LANG["validation_wrong_password"] = "Sorry, kwamba password doesn't match."; +$LANG["word_about"] = "Kuhusu"; +$LANG["word_access"] = "Access"; +$LANG["word_account"] = "Akaunti"; +$LANG["word_account_sp"] = "Account (s)"; +$LANG["word_accounts"] = "Accounts"; +$LANG["word_action"] = "Action"; +$LANG["word_active"] = "Active"; +$LANG["word_add"] = "Ongeza"; +$LANG["word_add_rightarrow"] = "Add »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "bulisdf"; +$LANG["word_administrator"] = "Administrator"; +$LANG["word_after"] = "Baada"; +$LANG["word_aquamarine"] = "Aquamarine"; +$LANG["word_asc"] = "ASC"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Author:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«back"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Kabla"; +$LANG["word_benefits"] = "Faida"; +$LANG["word_blue"] = "Blue"; +$LANG["word_cancel"] = "Cancel"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Orodha"; +$LANG["word_client"] = "Mteja"; +$LANG["word_client_c"] = "Mteja:"; +$LANG["word_clients"] = "Wateja"; +$LANG["word_close"] = "Funga"; +$LANG["word_code"] = "Code"; +$LANG["word_column"] = "Column"; +$LANG["word_columns"] = "Columns"; +$LANG["word_columns_sp"] = "Column(s)"; +$LANG["word_complete"] = "Complete"; +$LANG["word_configuration"] = "Configuration"; +$LANG["word_content"] = "Yaliyomo"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Kuendelea »"; +$LANG["word_copy"] = "Nakala"; +$LANG["word_custom"] = "Desturi"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Tarehe"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Futa"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "Walemavu"; +$LANG["word_documentation"] = "Documentation"; +$LANG["word_done"] = "Done"; +$LANG["word_drawbacks"] = "Drawbacks"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "Edit"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Emails"; +$LANG["word_enabled"] = "Kuwezeshwa"; +$LANG["word_equals"] = "Usawa"; +$LANG["word_error"] = "Error"; +$LANG["word_error_c"] = "Error:"; +$LANG["word_examples_c"] = "Mifano:"; +$LANG["word_external"] = "Nje"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Uwanja"; +$LANG["word_field_sp"] = "Shamba (s)"; +$LANG["word_fields"] = "Mashamba"; +$LANG["word_fields_sp"] = "Field(s)"; +$LANG["word_file"] = "Picha"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Files"; +$LANG["word_filters"] = "Filters"; +$LANG["word_filters_sp"] = "Filter(s)"; +$LANG["word_for"] = "kwa"; +$LANG["word_form"] = "soidfjosidfj"; +$LANG["word_form_c"] = "owifjosidf"; +$LANG["word_formatting"] = "Formatting"; +$LANG["word_forms"] = "sodifjsoidfj"; +$LANG["word_found"] = "Pata"; +$LANG["word_from"] = "Kutoka"; +$LANG["word_from_c"] = "Kutoka:"; +$LANG["word_general"] = "General"; +$LANG["word_green"] = "Green"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Height"; +$LANG["word_help"] = "Help"; +$LANG["word_hidden"] = "Hidden"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Horizontal"; +$LANG["word_hour"] = "Saa"; +$LANG["word_hours"] = "Masaa"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Incomplete"; +$LANG["word_install"] = "Install"; +$LANG["word_installation"] = "Installation"; +$LANG["word_internal"] = "Internal"; +$LANG["word_language"] = "Lugha"; +$LANG["word_large"] = "Large"; +$LANG["word_like"] = "Kama"; +$LANG["word_login"] = "Kuingia"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Kuu"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Menus"; +$LANG["word_minutes"] = "dakika"; +$LANG["word_misc"] = "Ziada"; +$LANG["word_module"] = "Moduli"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Jina"; +$LANG["word_name_c"] = "Jina:"; +$LANG["word_never"] = "Never"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "NEXT STEP »"; +$LANG["word_no"] = "Hapana"; +$LANG["word_none"] = "Hamna"; +$LANG["word_notes"] = "Vidokezo"; +$LANG["word_notification"] = "Notification"; +$LANG["word_number"] = "Idadi"; +$LANG["word_off"] = "Puuza"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okay"; +$LANG["word_on"] = "Mnamo"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Options"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Amri"; +$LANG["word_other"] = "Nyingine"; +$LANG["word_other_c"] = "Mengine:"; +$LANG["word_page"] = "Kwanza"; +$LANG["word_page_c"] = "Page:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "sodfijsdoifj"; +$LANG["word_password_c"] = "sodifjsdoifj"; +$LANG["word_pending"] = "Pending"; +$LANG["word_permissions"] = "Permissions"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«previous"; +$LANG["word_private"] = "Binafsi"; +$LANG["word_public"] = "Umma"; +$LANG["word_purple"] = "Purple"; +$LANG["word_recipient"] = "Mpokeaji"; +$LANG["word_recipient_sp"] = "Mpokeaji (s)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Ondoa"; +$LANG["word_remove_uc_leftarrow"] = "«REMOVE"; +$LANG["word_reply_to"] = "Reply-to"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Required"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Kutatuliwa"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "row"; +$LANG["word_search"] = "Tafuta"; +$LANG["word_searchable"] = "Searchable"; +$LANG["word_select"] = "Chagua"; +$LANG["word_setting"] = "Mipangilio"; +$LANG["word_settings"] = "Settings"; +$LANG["word_show"] = "Onyesha"; +$LANG["word_size"] = "Size"; +$LANG["word_skipped"] = "Skipped"; +$LANG["word_small"] = "Small"; +$LANG["word_solution"] = "Solution"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Start"; +$LANG["word_status"] = "Hali"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Mada"; +$LANG["word_subject_c"] = "Mada"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "Mfumo"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab(s)"; +$LANG["word_test"] = "Mtihani"; +$LANG["word_text"] = "Nakala"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Mandhari"; +$LANG["word_themes"] = "Mandhari"; +$LANG["word_time"] = "Time"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Today"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Futa Kibao"; +$LANG["word_unknown"] = "Unknown"; +$LANG["word_update"] = "Mwisho"; +$LANG["word_upgrade"] = "Upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "User"; +$LANG["word_username"] = "sodfijsodfij"; +$LANG["word_username_c"] = "woifjsoidfjsdo"; +$LANG["word_validation"] = "Validation"; +$LANG["word_value"] = "Value"; +$LANG["word_value_sp"] = "Thamani (s)"; +$LANG["word_verified"] = "Verifierade"; +$LANG["word_verify"] = "Verify"; +$LANG["word_version"] = "Programme"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Maoni"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Onyo!"; +$LANG["word_warning_c"] = "Warning:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Karibu!"; +$LANG["word_width_c"] = "width:"; +$LANG["word_words"] = "Words"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Yellow"; +$LANG["word_yes"] = "Ndio"; \ No newline at end of file diff --git a/global/lang/th.php b/global/lang/th.php new file mode 100644 index 00000000..b43c77b6 --- /dev/null +++ b/global/lang/th.php @@ -0,0 +1,1219 @@ +คำ เตือน!
    คุณ ได้ เลือก {\$num_selected_on_page} ส่ง หน้า นี้ และ {\$num_selected_on_other_pages} ใน หน้า อื่น ๆ. โปรด เลือก ตัว เลือก ต่อ ไป นี้
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "คำ เตือน! คุณ ยัง ไม่ ได้ เลือก ส่ง ใด ๆ ใน หน้า นี้ แต่ คุณ ได้ เลือก {\$num_selected_on_other_pages} ใน หน้า อื่น ๆ. กรุณา ยืนยัน ว่า คุณ ต้องการ ลบ ส่ง เหล่า นี้.
    "; +$LANG["confirm_delete_view"] = "คุณแน่ใจหรือ ว่าต้องการลบความเห็นนี้"; +$LANG["confirm_refresh_page"] = "คุณแน่ใจหรือว่าคุณต้องการรีเฟรชหน้าได้หรือไม่ นี้จะสูญเสียการเปลี่ยนแปลงใด ๆ ที่คุณได้ทำ"; +$LANG["confirm_save_change_before_redirect"] = "ฟิลด์หนึ่งหรือมากกว่าได้รับการปรับปรุง คุณต้องการที่จะบันทึกการเปลี่ยนแปลงของคุณก่อนเปลี่ยนเส้นทาง?"; +$LANG["confirm_smart_fill_db_column_fields"] = "คุณแน่ใจหรือ ว่าต้องการเิติมชื่อคอลัมน์ของฐานข้อมูล? การกระทำนี้ จะเขียนทับแทนที่ค่าเดิมที่มีอยู่."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "ตัวเลือกนี้จะอัตโนมัติสร้างชื่อคอลัมน์ฐานข้อมูลขึ้นอยู่กับเขตข้อมูลของข้อความที่แสดงเพื่อให้เนื้อหาของตารางฐานข้อมูลที่มีให้อ่านง่ายขึ้น"; +$LANG["confirm_smart_fill_display_names"] = "คุณแน่ใจหรือ ว่าต้องการเติมชื่อที่ปรากฏ? การกระทำนี้จะเขียนทับแทนที่ค่าเดิมที่มีอยู่."; +$LANG["confirm_ungroup_option_list"] = "คุณแน่ใจหรือว่าต้องการที่จะยกเลิกการจัดกลุ่มรายการตัวเลือกนี้หรือไม่ ตัวเลือกทั้งหมดจะถูก lumped เป็นหนึ่งรายการที่ไม่ได้จัดกลุ่ม,"; +$LANG["confirm_uninstall_module"] = "คุณแน่ใจหรือ ว่าต้องการถอนการติดตั้งโมดูล? ข้อมูลทั้งหมดของโมดูลนี้จะสูญหายไปด้วย."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "ศ."; +$LANG["date_Friday"] = "วัน ศุกร์"; +$LANG["date_Mon"] = "จันทร์"; +$LANG["date_Monday"] = "วัน จันทร์"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "นั่ง"; +$LANG["date_Saturday"] = "เสาร์"; +$LANG["date_Sun"] = "ดวง อาทิตย์"; +$LANG["date_Sunday"] = "วัน อาทิตย์"; +$LANG["date_Thu"] = "พฤ."; +$LANG["date_Thursday"] = "วัน พฤหัสบดี"; +$LANG["date_Tue"] = "อ."; +$LANG["date_Tuesday"] = "วัน อังคาร"; +$LANG["date_Wed"] = "แต่งงาน"; +$LANG["date_Wednesday"] = "พุธ"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "เมษายน"; +$LANG["date_month_August"] = "สิงหาคม"; +$LANG["date_month_December"] = "ธันวาคม"; +$LANG["date_month_February"] = "กุมภาพันธ์"; +$LANG["date_month_January"] = "มกราคม"; +$LANG["date_month_July"] = "กรกฎาคม"; +$LANG["date_month_June"] = "มิถุนายน"; +$LANG["date_month_March"] = "เดือน มีนาคม"; +$LANG["date_month_May"] = "อาจ"; +$LANG["date_month_November"] = "พฤศจิกายน"; +$LANG["date_month_October"] = "ตุลาคม"; +$LANG["date_month_September"] = "กันยายน"; +$LANG["date_month_short_Apr"] = "เมษายน"; +$LANG["date_month_short_Aug"] = "สิงหาคม"; +$LANG["date_month_short_Dec"] = "ธันวาคม"; +$LANG["date_month_short_Feb"] = "กุมภาพันธ์"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "กรกฎาคม"; +$LANG["date_month_short_Jun"] = "มิถุนายน"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "อาจ"; +$LANG["date_month_short_Nov"] = "พฤศจิกายน"; +$LANG["date_month_short_Oct"] = "ตุลาคม"; +$LANG["date_month_short_Sep"] = "กันยายน"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "บัญชีผู้ใช้ถูกลบแล้ว"; +$LANG["notify_account_updated"] = "บัญชีของคุณ ปรับปรุงข้อมูลเสร็จแล้ว."; +$LANG["notify_add_display_values"] = "เพิ่มการแสดงค่า"; +$LANG["notify_admin_menu_updated"] = "การตั้งค่าเมนูผู้ดูแลระบบ ปรับปรุงเรียบร้อยแล้ว."; +$LANG["notify_admin_theme_overridden"] = "ธีมของผู้ดูแลระบบ ถูก แทนที่ด้วยตนเอง."; +$LANG["notify_allow_url_fopen_not_set"] = "ขออภัย การทดสอบนี้ ไม่สามารถทำงานบนเว็บเซิร์ฟเวอร์ของคุณได้. คำสั่งallow_url_fopen ต้องตั้งค่าเป็น 1 ในไฟล์ php.ini ของคุณ. การตั้งค่านี้ อนุญาตให้ PHP ในการเข้าถึงไฟล์ ผ่าน URL ซึ่ง จำเป็นต้องรันการทดสอบนี้. คุณ สามารถทดสอบได้ด้วยตนเอง โดยการอัปโหลดไฟล์ไปยังโฟลเดอร์ ผ่านทาง FTP จากนั้นให้ลองไปที่ URL ที่คุณต้องการเปิด."; +$LANG["notify_change_temp_password"] = "คุณเพียงเข้าสู่ในที่มีรหัสผ่านชั่วคราว คุณควรจะรีเซ็ตรหัสผ่านของคุณตอนนี้!"; +$LANG["notify_click_to_edit_new_submission"] = "คลิกที่นี่เพื่อแก้ไขการส่งใหม่"; +$LANG["notify_client_account_menus_updated"] = "บัญชีลูกข่ายได้ทำการเปลี่ยนแปลงเป็นเมนู {\$menu_name}แล้ว. คุณสามารถลบเมนูที่ใช้งานเมื่อก่อนหน้าของบัญชีนี้ได้."; +$LANG["notify_client_account_not_updated"] = "บัญชีลูกข่าย ไม่สามารถปรับปรุงได้."; +$LANG["notify_client_account_themes_updated"] = "บัญชีลูกข่าย ได้ทำการเปลี่ยนเป็นธีม {\$theme}แล้ว. คุณสามารถปิดธีมที่ใช้งานก่อนหน้าของบัญชีนี้ได้."; +$LANG["notify_client_account_updated"] = "บัญชีลูกข่าย ทำการปรับปรุงเรียบร้อยแล้ว."; +$LANG["notify_client_menu_deleted"] = "เมนูลูกข่ายถูกลบแล้ว."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "เมนูถูกลบแล้ว แต่บัญชีลูกข่ายต่อไปนี้ ไม่มีเมนู! คุณต้องปรับปรุงบัญชีดังต่อไปนี้:"; +$LANG["notify_client_menu_updated"] = "เมนูลูกข่าย ทำการปรับปรุงเรียบร้อยแล้ว."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "ขออภัยเมนูที่คุณพยายามลบ กำลังใช้งานโดยลูกข่ายที่มีรายชื่อปรากฏด้านล่าง. หากต้องการลบเมนูดังกล่าว คุณจะต้อง กำหนดให้ลูกข่ายนั้นย้ายไปอยู่ที่เมนูอื่น. คลิกที่ชื่อลูกข่าย เพื่อแก้ไขในแต่ละชื่อบัญชีนั้น หรือเลือกทุกบัญชีให้ย้ายไปที่เมนูอื่น โดยใช้แถบเลื่อนลง(dropdown)ที่ด้านล่าง."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "ขออภัย ธีมที่คุณต้องการยกเลิกนั้น กำลังใช้งานโดยลูกข่าย. หากต้องการยกเลิกธีม คุณจะต้องกำหนดให้แต่ละลูกข่ายย้ายไปใช้ธีมอื่น. คลิกที่ชื่อลูกข่าย เพื่อแก้ไขในแต่ละบัญชี หรือเลือกทุกบัญชี ให้เปลี่ยนเป็นธีมที่กำหนด โดยใช้แถบเลื่อนลง(dropdown) ที่ด้านล่าง."; +$LANG["notify_edit_email_fields_link"] = "คลิกที่นี่ เพื่อระบุฟิลด์ในฟอร์มนี้ช่องอีเมล์เพื่อให้คุณสามารถกำหนดเป้าหมายไว้ในแม่แบบอีเมลของคุณ"; +$LANG["notify_edit_field_new_field"] = "นี้เป็นเขตข้อมูลใหม่ คุณจะต้องปรับปรุงที่หน้าหลักก่อนจึงจะสามารถแก้ไขข้อมูลได้อย่างเต็มที่นี้"; +$LANG["notify_edit_option_list_after_save"] = "คุณต้องเลือกรายการตัวเลือกและจากนั้นบันทึกการเปลี่ยนแปลงก่อนที่จะสามารถแก้ไขได้"; +$LANG["notify_email_field_config_deleted"] = "การ ตั้ง ค่า อีเมล์ ได้ ถูก ลบ."; +$LANG["notify_email_fields_not_updated"] = "ขออภัย เราไม่สามารถอัพเดตฟิลด์อีเมล์ได้."; +$LANG["notify_email_fields_updated"] = "ฟิลด์อีเมล์ ได้ทำการอัพเดตแล้ว."; +$LANG["notify_email_not_sent"] = "ขออภัย ไม่สามารถส่งอีเมล์ได้. กรุณาติดต่อผู้ดูแลเว็บไซต์ตามที่อยู่ด้านล่าง."; +$LANG["notify_email_not_sent_c"] = "ขออภัยอีเมลที่ไม่สามารถส่ง :"; +$LANG["notify_email_sent"] = "อีเมล์นั้น ได้ส่งไปแล้ว."; +$LANG["notify_email_template_deleted"] = "แม่แบบอีเมล์ ถูกลบแล้ว."; +$LANG["notify_email_template_updated"] = "อีเมล์ แม่ ได้ รับ การ ปรับปรุง."; +$LANG["notify_enabled_module_list_updated"] = "รายการโมดูลที่ใช้งาน ได้รับการปรับปรุงแล้ว."; +$LANG["notify_error_saving_fields"] = "มีข้อผิดพลาดการบันทึกข้อมูลในฟิลด์ที่ถูก"; +$LANG["notify_field_changes_saved"] = "การเปลี่ยนแปลงไปยังเขตข้อมูลของคุณ (s) ได้รับการบันทึก"; +$LANG["notify_field_options_smart_filled"] = "ตัวเลือกเขตข้อมูลของคุณได้เต็มสมาร์ท"; +$LANG["notify_field_selected"] = "ฟิลด์ได้กำหนดเลือกแล้ว. คลิกที่นี่ เพื่อกลับไปที่หน้าหลักรายการฟิลด์."; +$LANG["notify_field_updated"] = "ฟิลด์ นี้ ได้ รับ การ ปรับปรุง."; +$LANG["notify_file_not_uploaded"] = "ไฟล์ ไม่ สามารถ อัพโหลด."; +$LANG["notify_file_uploaded"] = "ไฟล์ อัป โหลด สำเร็จ."; +$LANG["notify_filters_not_updated"] = "มี ข้อ ผิด พลาด ใน การ ปรับปรุง ตัว กรอง ส่ง ลูกค้า นี้ ถูก."; +$LANG["notify_filters_updated"] = "ตัว กรอง การ ส่ง ได้ รับ การ ปรับปรุง สำหรับ ลูกค้า ราย นี้."; +$LANG["notify_folder_correct_permissions"] = "โฟลเดอร์ นี้ มี สิทธิ์ ถูก ต้อง."; +$LANG["notify_folder_url_match"] = "โฟลเดอร์ และ URL จะ ปรากฏ ให้ ถูก ต้อง ตรง กับ."; +$LANG["notify_folder_url_no_access"] = "การ ทดสอบ นี้ ไม่ สามารถ ดำเนิน การ ตั้งแต่ PHP ไม่ สามารถ เข้าถึง ที่ URL. นี้ มัก จะ เกิด ขึ้น โดย ผ่าน การ URL ป้องกัน ด้วย ไฟล์ htaccess.."; +$LANG["notify_folder_url_no_match"] = "โฟลเดอร์ นี้ ผสม URL จะ ไม่ ปรากฏ ให้ ตรง กับ."; +$LANG["notify_folder_url_unknown_error"] = "ข้อ ผิด พลาด ที่ ไม่ ทราบ สาเหตุ. คุณ สามารถ ทดสอบ ได้ ด้วย ตนเอง โดย การ อัป โหลด ไฟล์ ไป ยัง โฟลเดอร์ ผ่าน ทาง FTP ที่ แล้ว พยายาม เข้า ที่ URL ที่ คุณ ได้ จัด."; +$LANG["notify_form_access_type_email_info"] = "แบบนี้มีประเภทของผู้ดูแลระบบเพื่อลูกค้าไม่สามารถเข้าถึงได้และไม่ได้อยู่ในรายการแบบหล่นลงด้านล่าง"; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Sorry, แบบฟอร์มที่ ID ไม่พบ"; +$LANG["notify_form_field_not_added"] = "ฟิลด์ รูป แบบ '{\$fieldname}' ไม่ สามารถ เพิ่ม."; +$LANG["notify_form_field_options_updated"] = "ตัว เลือก ช่อง ฟอร์ม ได้ รับ การ ปรับปรุง."; +$LANG["notify_form_field_removed"] = "ฟิลด์ รูป แบบ ถูก ลบ สำเร็จ."; +$LANG["notify_form_fields_removed"] = "ฟิลด์ ใน ฟอร์ม ถูก ลบ สำเร็จ."; +$LANG["notify_form_not_updated_notify_admin"] = "รูป แบบ ของ คุณ ไม่ ได้ รับ การ ปรับปรุง. กรุณา ติดต่อ ผู้ ดูแล เว็บไซต์ เพื่อ รายงาน ปัญหา นี้."; +$LANG["notify_form_settings_updated"] = "การ ตั้ง ค่า รูป แบบ ของ คุณ ได้ รับ การ ปรับปรุง เรียบร้อย แล้ว."; +$LANG["notify_form_submission_updated"] = "ส่ง แบบ ฟอร์ม ได้ รับ การ ปรับปรุง."; +$LANG["notify_form_tabs_updated"] = "แท็ บ ได้ รับ การ ปรับปรุง."; +$LANG["notify_form_updated"] = "แบบ ฟอร์ม ได้ รับ การ ปรับปรุง เรียบร้อย แล้ว."; +$LANG["notify_form_views_updated"] = "มุมมองแบบฟอร์มได้รับการปรับปรุง"; +$LANG["notify_install_invalid_db_info"] = "ขออภัย เรา ไม่ สามารถ เชื่อม ต่อ กับ ฐาน ข้อมูล โดย ใช้ ข้อมูล ที่ คุณ จัดหา. ข้อความ แสดง ข้อ ผิด ฐาน ข้อมูล กลับ เป็น: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "แบบฟอร์มของคุณได้ถูกสร้างขึ้น! คุณสามารถกำหนดค่ารูปแบบของคุณผ่านทางแท็บเหล่านี้"; +$LANG["notify_invalid_account_information_in_sessions"] = "ข้อมูล บัญชี ที่ เก็บ ไว้ ใน ช่วง ไม่ ถูก ต้อง. กรุณา เข้า สู่ ระบบ อีก ครั้ง ด้าน ล่าง."; +$LANG["notify_invalid_license_key"] = "ขออภัยที่ไม่ปรากฏที่จะเป็นคีย์ใบอนุญาตที่ถูกต้อง โปรดลองป้อนอีกครั้ง"; +$LANG["notify_invalid_permissions"] = "คุณ ไม่มี สิทธิ์ เข้าถึง หน้า นี้. คุณ ได้ ออก จาก ระบบ."; +$LANG["notify_invalid_search_dates"] = "กรุณาใช้ datepicker ที่จะใส่วันที่ถูกต้องหรือวันที่"; +$LANG["notify_invalid_upload_folder"] = "โฟลเดอร์ อัพโหลด มี ทั้ง ถูก ต้อง หรือ ไม่ สามารถ เขียน ได้."; +$LANG["notify_lang_list_updated"] = "ที่ มี ราย ชื่อ ภาษา UI ได้ รับ การ ปรับปรุง."; +$LANG["notify_login_info_emailed"] = "ข้อมูล การ เข้า สู่ ระบบ ของ คุณ ไป ถึง คุณ."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "โอ๊ะโมดูลนี้ติดตั้งอยู่แล้ว!"; +$LANG["notify_module_installed"] = "โมดูล ได้ รับ การ ติด ตั้ง. คลิก ที่ นี่ เพื่อ เลือก โมดูล."; +$LANG["notify_module_list_updated"] = "รายการ โมดูล ที่ ได้ รับ การ ปรับปรุง."; +$LANG["notify_module_uninstalled"] = "โมดูล ได้ รับ การ ยกเลิก การ ติด ตั้ง."; +$LANG["notify_module_updated"] = "โมดูลโมดูล {\$module ได้รับการปรับปรุง {\$version} คลิกที่นี่เพื่อเลือกโมดูล ."; +$LANG["notify_multi_field_selected"] = "ฟิลด์ ที่ ถูก เลือก. คลิก ที่ นี่ เพื่อ ดู และ แก้ไข ตัว เลือก ฟิลด์."; +$LANG["notify_multi_field_updated"] = "ฟิลด์ นี้ ได้ รับ การ ปรับปรุง. คุณ จะ สามารถ กำหนด ค่า ตัว เลือก ฟิลด์ หลังจาก ตั้ง ค่า รูป แบบ."; +$LANG["notify_multiple_fields_found"] = "องค์ประกอบ หลาย พบ กับ ชื่อ ฟิลด์ นี้ ({\$field_name}). นี้ อาจ เกิด ขึ้น หาก หน้า ของ คุณ มี มากกว่า หนึ่ง รูป แบบ หรือ หาก คุณ ตั้งใจ ตั้ง ชื่อ หนึ่ง ใน รูป แบบ เดียว กับ ที่ อื่น ของ. กรุณา เลือก ที่ คุณ ต้องการ จาก รายการ ด้าน ล่าง."; +$LANG["notify_new_default_view_created"] = "ใหม่มุมมองเริ่มต้นที่มีเขตข้อมูลแบบฟอร์มของคุณทั้งหมดได้ถูกสร้างขึ้น"; +$LANG["notify_new_submission_created"] = "ส่งได้ถูกสร้างขึ้น คุณสามารถแก้ไขรายละเอียดด้านล่าง"; +$LANG["notify_no_account_id_in_sessions"] = "ไม่มี บัญชี ผู้ ใช้ ID พบ ใน ช่วง. กรุณา เข้า สู่ ระบบ อีก ครั้ง ด้าน ล่าง."; +$LANG["notify_no_api_installed"] = "คุณ ไม่ ได้ ติด ตั้ง API"; +$LANG["notify_no_client_permissions"] = "มี การ ตั้ง ค่า ไม่มี การ แก้ไข เป็น."; +$LANG["notify_no_email_template_selected"] = "โปรด เลือก อีเมล เทมเพลท."; +$LANG["notify_no_emails_defined"] = "อีเมล ไม่มี การ กำหนด ไว้ สำหรับ แบบ ฟอร์ม นี้. เพิ่ม ใหม่ ให้ คลิก ที่ ปุ่ม ด้าน ล่าง."; +$LANG["notify_no_field_settings"] = "ชนิดของเขตข้อมูลนี้ไม่ได้มีการตั้งค่าพิเศษใด ๆ"; +$LANG["notify_no_fields_in_tab"] = "แท็ บ นี้ ไม่มี ช่อง ใด."; +$LANG["notify_no_option_lists"] = "มีตัวเลือกไม่มีรายการที่กำหนดคือ คลิกที่ปุ่มด้านล่างนี้เพื่อสร้างใหม่"; +$LANG["notify_no_test_submission"] = "รูป แบบ เครื่องมือ ยัง ไม่ ได้ รับ การ ส่ง ทดสอบ ที่ ประสบ ความ สำเร็จ ยัง."; +$LANG["notify_no_user_email_fields_configured"] = "หมายเหตุ: ถ้า คุณ ต้องการ ส่ง อีเมล ไป ที่ ที่ อยู่ อีเมล ที่ มา ใน รูป แบบ ที่ คุณ ต้อง กำหนด ค่า ช่อง อีเมล์ แบบ ฟอร์ม."; +$LANG["notify_no_views"] = "แบบฟอร์มของคุณไม่ได้มีมุมมองใด ๆ ตั้งค่า! คุณจะต้องอย่างน้อยหนึ่งที่ดูในคำสั่งในการจัดการข้อมูลแบบฟอร์มของคุณ"; +$LANG["notify_no_views_assigned_to_client_form"] = "ปรากฏ ว่า บัญชี ผู้ ใช้ ของ คุณ ยัง ไม่ ได้ มอบหมาย ให้ ทุก มุม มอง แบบ ดังนั้น คุณ จะ ไม่ สามารถ ดู ข้อมูล ใด ๆ. โปรด ติดต่อ ผู้ ดูแล ช่วยเหลือ เพิ่มเติม."; +$LANG["notify_no_views_defined"] = "คุณไม่ได้มีมุมมองใด ๆ ที่กำหนดไว้ คุณจะไม่สามารถดูการส่งแบบฟอร์มนี้ยกเว้นอย่างน้อยหนึ่งที่ดูจะถูกสร้างขึ้น คลิกที่ปุ่มด้านล่างเพื่อสร้างมุมมองเริ่มต้น"; +$LANG["notify_option_list_deleted"] = "รายการตัวเลือกที่มีถูกลบไปแล้ว"; +$LANG["notify_option_list_updated"] = "รายการตัวเลือกที่ได้รับการปรับปรุง"; +$LANG["notify_public_form_omit_list_updated"] = "ลูกค้า ตกหล่น รายการ แบบ ฟอร์ม นี้ ได้ รับ การ ปรับปรุง."; +$LANG["notify_public_view_omit_list_updated"] = "ลูกค้า ตกหล่น รายการ สำหรับ มุม มอง นี้ ได้ รับ การ ปรับปรุง."; +$LANG["notify_required_admin_pages"] = "หน้า ต่อ ไป นี้ จะ ต้อง มี ใน เมนู ผู้ ดูแล: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "ขออภัย ไม่ กิจกรรม ใน ขณะ ใด เรา จึง ต้อง เข้า สู่ out. กรุณา เข้า สู่ ระบบ อีก ครั้ง ด้าน ล่าง."; +$LANG["notify_setup_options_updated"] = "ตัว เลือก การ ตั้ง ค่า ได้ รับ การ ปรับปรุง."; +$LANG["notify_smart_fill_field_not_found"] = "เรา ไม่ สามารถ หา ช่อง ชื่อ นี้ ({\$field_name}) แบบ ฟอร์ม (s) ระบุ. คุณ สามารถ กำหนด เอง ได้ ทั้ง ประเภท ช่อง ด้าน ล่าง หรือ คลิก ที่ ปุ่ม ข้าม แก้ไข ฟิลด์ นี้ ภายหลัง."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "(แฟ้ม s) อัป โหลด สำเร็จ ของ คุณ. ลอง คลิก ที่ ปุ่ม Smart Fill เพื่อ ลอง อีก ครั้ง. หาก ขั้น ตอน นี้ ไม่ คุณ จะ ต้อง ข้าม ขั้น ตอน นี้ และ กำหนด ค่า ฟิลด์ ของ ฟอร์ม ที่ คุณ manally ภายหลัง."; +$LANG["notify_smart_fill_submitted"] = "แบบ ฟอร์ม ถูก ส่ง. ขึ้น อยู่ กับ ขนาด ของ รูป แบบ และ จำนวน ตัว เลือก ฟิลด์ ของ คุณ อาจ จะ ต้อง ใช้ เวลา."; +$LANG["notify_smart_fill_upload_fields_fail"] = "ขออภัย อย่าง น้อย หนึ่ง ไฟล์ ที่ คุณ ป้อน ไม่ สามารถ อัป โหลด. คุณ จะ ต้อง ข้าม ขั้น ตอน นี้ และ กำหนด ค่า ฟิลด์ ด้วย ตนเอง."; +$LANG["notify_submission_and_files_deleted"] = "การ ส่ง และ ใด ๆ (ไฟล์) ที่ เกี่ยวข้อง ได้ ถูก ลบ แล้ว."; +$LANG["notify_submission_copied"] = "การคัดลอกได้รับการคัดลอกแล้ว"; +$LANG["notify_submission_copied_edit"] = "การคัดลอกได้รับการคัดลอกแล้ว คุณสามารถแก้ไขได้ด้านล่าง"; +$LANG["notify_submission_deleted"] = "ส่ง แล้ว เรียบร้อย."; +$LANG["notify_submission_deleted_with_problems"] = "ส่ง แล้ว แต่ ปัญหา ต่อ ไป นี้ พบ เมื่อ พยายาม ลบ ไฟล์ ต่อ ไป นี้ (s):"; +$LANG["notify_submission_id_not_found"] = "ส่ง ID ไม่ พบ."; +$LANG["notify_submission_not_updated"] = "ส่ง ไม่ สามารถ ปรับปรุง."; +$LANG["notify_submissions_and_files_deleted"] = "การ ส่ง และ ๆ (แฟ้ม s) เกี่ยวข้อง กับ พวก เขา ได้ ถูก ลบ แล้ว."; +$LANG["notify_submissions_copied"] = "คัดลอก {\$num_submissions} รายการแล้ว"; +$LANG["notify_submissions_deleted"] = "ส่ง ถูก ลบ แล้ว."; +$LANG["notify_submissions_deleted_with_problems"] = "ส่ง ถูก ลบ แต่ ปัญหา ต่อ ไป นี้ พบ เมื่อ พยายาม ลบ ไฟล์ ต่อ ไป นี้ (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "อีเมล์ ทดสอบ ของ คุณ ไม่ สามารถ ส่ง."; +$LANG["notify_theme_cache_folder_not_writable"] = "โฟลเดอร์ แคช ของ theme นี้ ไม่ สามารถ เขียน ได้. เพื่อ ให้ ชุด รูป แบบ นี้ {\$folder} โฟลเดอร์ ต้อง ได้ อ่าน เต็ม เขียน สิทธิ์."; +$LANG["notify_theme_list_updated"] = "รายการ theme ได้ รับ การ ปรับปรุง."; +$LANG["notify_themes_settings_updated"] = "การ ตั้ง ค่า ชุด รูป แบบ ของ คุณ ได้ รับ การ ปรับปรุง."; +$LANG["notify_view_deleted"] = "ดู ถูก ลบ."; +$LANG["notify_view_group_deleted"] = "ดูกลุ่มที่ได้รับการลบ"; +$LANG["notify_view_missing_columns"] = "โอ๊ะ! Sorry, ดูนี้ไม่ได้รับการติดตั้งอย่างเต็มที่ขึ้นไปยัง"; +$LANG["notify_view_missing_columns_admin_fix"] = "คลิกที่นี่ เพื่อระบุเขตข้อมูลที่ควรจะปรากฏเป็นคอลัมน์ในหน้านี้"; +$LANG["notify_view_updated"] = "ดู ได้ รับ การ ปรับปรุง."; +$LANG["notify_your_email_sent"] = "อีเมล ของ คุณ ถูก ส่ง เรียบร้อย แล้ว."; +$LANG["phrase_100_per_page"] = "100 ต่อหนึ่งหน้า"; +$LANG["phrase_10_per_page"] = "10 ต่อหน้า"; +$LANG["phrase_15_per_page"] = "15 หน้าต่อ"; +$LANG["phrase_1_direct"] = "1. Direct"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 หน้าต่อ"; +$LANG["phrase_25_per_page"] = "25 ต่อหน้า"; +$LANG["phrase_2_code"] = "2. รหัส"; +$LANG["phrase_2_columns"] = "2 คอลัมน์"; +$LANG["phrase_2chars"] = "2 ตัวอักษร"; +$LANG["phrase_3_columns"] = "3 คอลัมน์"; +$LANG["phrase_4_columns"] = "4 คอลัมน์"; +$LANG["phrase_50_per_page"] = "50 ต่อหน้า"; +$LANG["phrase_accepting_submissions"] = "(รับ ส่ง)"; +$LANG["phrase_access_admin_account_c"] = "คุณ สามารถ เข้า สู่ บัญชี บริหาร ของ คุณ ที่ นี่:"; +$LANG["phrase_access_type"] = "ประเภท การ เข้าถึง"; +$LANG["phrase_account_info"] = "ข้อมูล บัญชี"; +$LANG["phrase_account_settings"] = "การ ตั้ง ค่า บัญชี"; +$LANG["phrase_action_needed"] = "จำเป็น ต้อง ดำเนิน การ"; +$LANG["phrase_add_client"] = "เพิ่ม ลูกค้า"; +$LANG["phrase_add_client_menu"] = "เพิ่ม ลูกค้า Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "เพิ่มการตั้งค่าเริ่มต้น »"; +$LANG["phrase_add_field"] = "เพิ่ม ฟิลด์"; +$LANG["phrase_add_fields"] = "เพิ่ม ฟิลด์"; +$LANG["phrase_add_fields_rightarrow"] = "เพิ่มเขตข้อมูล (s) »"; +$LANG["phrase_add_form"] = "เพิ่ม แบบ"; +$LANG["phrase_add_form_external"] = "เพิ่มฟอร์ม -- ภายนอก"; +$LANG["phrase_add_form_internal"] = "เพิ่มฟอร์ม -- ภายใน"; +$LANG["phrase_add_new_group_rightarrow"] = "เพิ่มกลุ่มใหม่ »"; +$LANG["phrase_add_num_rows"] = "เพิ่ม {\$number} Row (s)"; +$LANG["phrase_add_row"] = "เพิ่ม แถว »"; +$LANG["phrase_add_submission_button"] = "เพิ่มปุ่มส่ง"; +$LANG["phrase_add_view_rightarrow"] = "ดูเพิ่ม »"; +$LANG["phrase_adding_multi_page_form"] = "เพิ่ม หลาย แบบ ฟอร์ม หน้า กับ API"; +$LANG["phrase_adding_single_page_form"] = "เพิ่ม รูป แบบ หน้า เดียว กับ API"; +$LANG["phrase_admin_menu"] = "เมนู ผู้ ดูแล ระบบ"; +$LANG["phrase_admin_only"] = "ผู้ ดูแล ระบบ เท่านั้น"; +$LANG["phrase_admin_panel"] = "แผง Admin"; +$LANG["phrase_administrator_theme"] = "Theme Administrator"; +$LANG["phrase_advanced_settings_rightarrow"] = "Advanced »การ ตั้ง ค่า"; +$LANG["phrase_all_X_results_selected"] = "ทั้งหมด {\$numresults} ผลลัพธ์ ที่ เลือก"; +$LANG["phrase_all_clients"] = "ลูกค้า ทั้งหมด"; +$LANG["phrase_all_clients_except_c"] = "ลูกค้า ทั้งหมด ยกเว้น"; +$LANG["phrase_all_clients_have_access"] = "(ลูกค้า ทุก คน สามารถ เข้าถึง)"; +$LANG["phrase_all_fields"] = "ช่อง ทั้งหมด"; +$LANG["phrase_all_fields_displayed"] = "ฟิลด์ ทั้งหมด ที่ แสดง"; +$LANG["phrase_all_statuses"] = "สถานะ ทั้งหมด"; +$LANG["phrase_all_submissions"] = "ส่ง ทั้งหมด"; +$LANG["phrase_allow_fields_edited"] = "ช่อง อนุญาต ให้ แก้ไข"; +$LANG["phrase_alphanumeric"] = "และตัวเลข (AZ, 0-9)"; +$LANG["phrase_api_version"] = "รุ่น API"; +$LANG["phrase_apply_timezone_offset"] = "สมัครเขตออฟเซ็ท"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "กำหนด ทุก รายการ บัญชี ลูกค้า ไป {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "กำหนด ทุก รายการ บัญชี ลูกค้า ไป {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "ในตอนท้าย"; +$LANG["phrase_at_start"] = "ที่เริ่มต้น"; +$LANG["phrase_author_link"] = "ลิงค์ ผู้ แต่ง"; +$LANG["phrase_auto_disable_account"] = "บัญชี Auto - ปิดหลังจาก # ไม่พยายามเข้าสู่ระบบ"; +$LANG["phrase_auto_size"] = "ออโต้ขนาด"; +$LANG["phrase_available_clients"] = "ลูกค้า Available"; +$LANG["phrase_available_fields"] = "เขตข้อมูลที่มี"; +$LANG["phrase_available_option_lists"] = "รายการตัวเลือก"; +$LANG["phrase_available_swatches"] = "Swatches ใช้ได้"; +$LANG["phrase_available_swatches_c"] = "Swatches ที่มีจำหน่าย :"; +$LANG["phrase_available_tabs"] = "แท็บ"; +$LANG["phrase_available_views"] = "มุม มอง Available"; +$LANG["phrase_awaiting_form_submission"] = "รอ ส่ง ฟอร์ม."; +$LANG["phrase_back_to_field_list"] = "รายการ «กลับ ไป ที่ ช่อง"; +$LANG["phrase_back_to_search_results"] = "ผลลัพธ์ กลับ ไป ที่ ค้นหา"; +$LANG["phrase_base_view_on"] = "ดูฐานใน ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "ข้อมูล Change Login"; +$LANG["phrase_characters_limit_p"] = "อักขระขีด จำกัด"; +$LANG["phrase_check_db_settings_try_again"] = "โปรด ตรวจ สอบ การ ตั้ง ค่า ฐาน ข้อมูล ของ คุณ และ คลิก ที่ ปุ่ม ดำเนิน การ ต่อ อีก ครั้ง."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "ตรวจสอบ URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "รายการ Clear ตกหล่น"; +$LANG["phrase_client_account_settings"] = "การ ตั้ง ค่า บัญชี ลูกค้า"; +$LANG["phrase_client_field"] = "ช่อง ลูกค้า"; +$LANG["phrase_client_map_filters"] = "»Client Map กรอง"; +$LANG["phrase_client_may_edit"] = "ลูกค้า สามารถ แก้ไข"; +$LANG["phrase_client_menu"] = "เมนู ลูกค้า"; +$LANG["phrase_clients_can_access_form"] = "ลูกค้า ที่ สามารถ เข้าถึง แบบ ฟอร์ม"; +$LANG["phrase_clients_can_access_view"] = "ลูกค้า ที่ สามารถ เข้า ดู"; +$LANG["phrase_clients_cannot_access_form"] = "ลูกค้า ที่ ไม่ สามารถ เข้า ใช้ แบบ ฟอร์ม"; +$LANG["phrase_clients_cannot_access_view"] = "ลูกค้า ที่ ไม่ สามารถ เข้า ดู"; +$LANG["phrase_clients_may_edit"] = "ลูกค้า สามารถ แก้ไข"; +$LANG["phrase_code_c"] = "รหัส ข้อ ผิด พลาด:"; +$LANG["phrase_code_markup_field"] = "เขตข้อมูลรหัส / มาร์กอัป"; +$LANG["phrase_code_markup_type"] = "พิมพ์รหัส / มาร์กอัป"; +$LANG["phrase_codes_c"] = "รหัส ข้อ ผิด พลาด:"; +$LANG["phrase_column_width"] = "ความกว้างของคอลัมน์"; +$LANG["phrase_company_name"] = "ชื่อ บริษัท"; +$LANG["phrase_configure_form_email_fields"] = "ช่อง กำหนด ค่า Form Email"; +$LANG["phrase_confirm_folder_url_match"] = "ยืนยัน Folder-URL จับ คู่"; +$LANG["phrase_connect_rows"] = "เชื่อมต่อแถว"; +$LANG["phrase_copy_email_settings_from"] = "สำเนา Email การ ตั้ง ค่า จาก ..."; +$LANG["phrase_copy_settings_from"] = "คัด ลอก การ ตั้ง ค่า จาก ..."; +$LANG["phrase_core_fields"] = "ฟิลด์ Core"; +$LANG["phrase_core_version"] = "รุ่น Core"; +$LANG["phrase_create_account"] = "สร้าง บัญชี"; +$LANG["phrase_create_admin_account"] = "สร้าง บัญชี ผู้ ดูแล ระบบ"; +$LANG["phrase_create_config_file"] = "สร้าง Config File"; +$LANG["phrase_create_database_tables"] = "สร้าง ตาราง ฐาน ข้อมูล"; +$LANG["phrase_create_default_view"] = "สร้างมุมมองเริ่มต้น"; +$LANG["phrase_create_file"] = "สร้าง ไฟล์"; +$LANG["phrase_create_group"] = "กลุ่มสร้างกลุ่มใหม่"; +$LANG["phrase_create_new_email"] = "สร้าง อีเมล ใหม่"; +$LANG["phrase_create_new_menu"] = "สร้าง เมนู ใหม่"; +$LANG["phrase_create_new_option_list"] = "สร้างรายการตัวเลือกใหม่"; +$LANG["phrase_create_new_option_list_group"] = "สร้างกลุ่มตัวเลือกใหม่ในรายการ"; +$LANG["phrase_create_new_option_list_rightarrow"] = "สร้างรายการตัวเลือกใหม่ »"; +$LANG["phrase_create_new_view"] = "สร้าง ใหม่ ดู"; +$LANG["phrase_create_new_view_group"] = "กลุ่มสร้างกลุ่มมุมมองใหม่"; +$LANG["phrase_custom_display_format"] = "รูปแบบการแสดงผลที่กำหนดเอง"; +$LANG["phrase_custom_recipient"] = "รับ Custom"; +$LANG["phrase_custom_url"] = "URL ที่ กำหนด เอง"; +$LANG["phrase_dark_blue"] = "กาฬ"; +$LANG["phrase_data_type"] = "พิมพ์ ข้อมูล"; +$LANG["phrase_database_hostname"] = "ชื่อ โฮสต์ ฐาน ข้อมูล"; +$LANG["phrase_database_name"] = "ชื่อ ฐาน ข้อมูล"; +$LANG["phrase_database_password"] = "รหัส ผ่าน ฐาน ข้อมูล"; +$LANG["phrase_database_settings"] = "การ ตั้ง ค่า ฐาน ข้อมูล"; +$LANG["phrase_database_setup"] = "การ ติด ตั้ง ฐาน ข้อมูล"; +$LANG["phrase_database_table_prefix"] = "คำนำ หน้า ตาราง ฐาน ข้อมูล"; +$LANG["phrase_database_username"] = "ชื่อ ผู้ ใช้ ฐาน ข้อมูล"; +$LANG["phrase_date_format"] = "รูป แบบ วัน ที่"; +$LANG["phrase_db_column"] = "คอลัมน์ DB"; +$LANG["phrase_db_setup_page_4"] = "4. การ ติด ตั้ง ฐาน ข้อมูล"; +$LANG["phrase_default_client_account_theme"] = "Theme Default บัญชี ลูกค้า"; +$LANG["phrase_default_date_field_search_value"] = "วันที่ฟิลด์ค่าเริ่มต้นการค้นหา"; +$LANG["phrase_default_language"] = "ภาษา เริ่ม ต้น"; +$LANG["phrase_default_menu"] = "เมนู เริ่ม ต้น"; +$LANG["phrase_default_sessions_timeout"] = "หมด เวลา เริ่ม ต้น เซสชัน"; +$LANG["phrase_default_sort_order"] = "เพื่อ เรียง Default"; +$LANG["phrase_default_tab_label"] = "ข้อมูล"; +$LANG["phrase_default_theme"] = "Theme Default"; +$LANG["phrase_default_value"] = "ค่าเริ่มต้น"; +$LANG["phrase_default_values"] = "ค่าเริ่มต้น"; +$LANG["phrase_default_values_new_submissions"] = "ค่าเริ่มต้นสำหรับส่งใหม่"; +$LANG["phrase_delete_field"] = "ลบเขตข้อมูล"; +$LANG["phrase_delete_form"] = "แบบ ลบ"; +$LANG["phrase_delete_row"] = "ลบแถว"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "ลบ ไฟล์ ที่ เกี่ยวข้อง เมื่อ ลบ ส่ง"; +$LANG["phrase_delete_view"] = "ลบดู"; +$LANG["phrase_disconnect_rows"] = "ถอดแถว"; +$LANG["phrase_display_email"] = "อีเมล แสดง"; +$LANG["phrase_display_name"] = "ชื่อ ที่ แสดง"; +$LANG["phrase_display_text"] = "ข้อความ แสดง"; +$LANG["phrase_display_value"] = "ค่า การ แสดง ผล"; +$LANG["phrase_edit_admin_menu"] = "เมนู แก้ไข Admin"; +$LANG["phrase_edit_client"] = "ลูกค้า แก้ไข"; +$LANG["phrase_edit_client_menu"] = "เมนู แก้ไข ลูกค้า"; +$LANG["phrase_edit_email_template"] = "แก้ไข เทมเพลท Email"; +$LANG["phrase_edit_field"] = "ช่อง แก้ไข"; +$LANG["phrase_edit_field_c"] = "แก้ไขข้อมูล :"; +$LANG["phrase_edit_form"] = "แบบ ฟอร์ม การ แก้ไข"; +$LANG["phrase_edit_form_access_type_b"] = "[แก้ไขประเภทการเข้าถึงแบบฟอร์ม]"; +$LANG["phrase_edit_option_list"] = "แก้ไขรายการตัวเลือก"; +$LANG["phrase_edit_submission"] = "ยื่น แก้ไข"; +$LANG["phrase_edit_submission_label"] = "แก้ไขป้ายโฆษณา"; +$LANG["phrase_edit_view"] = "ดู แก้ไข"; +$LANG["phrase_email_format"] = "รูป แบบ อีเมล์"; +$LANG["phrase_email_settings"] = "การ ตั้ง ค่า อีเมล์"; +$LANG["phrase_email_template"] = "อีเมล์ แม่"; +$LANG["phrase_email_template_name"] = "อีเมล์ ชื่อ เทมเพลท"; +$LANG["phrase_error_learn_more"] = "เรียน รู้ เพิ่มเติม เกี่ยว กับ ข้อ ผิด พลาด นี้."; +$LANG["phrase_error_text_intro"] = "กรุณา แก้ไข ข้อ ผิด พลาด ต่อ ไป นี้ (s) และ ส่ง:"; +$LANG["phrase_errors_learn_more"] = "คลิก ที่ รหัส ข้อ ผิด พลาด เพื่อ เรียน รู้ เพิ่มเติม."; +$LANG["phrase_event_trigger"] = "เรียก Event"; +$LANG["phrase_external_form"] = "แบบฟอร์มภายนอก"; +$LANG["phrase_external_form_info"] = "ข้อมูลแบบฟอร์มภายนอก"; +$LANG["phrase_external_your_own_form"] = "ภายนอก (แบบฟอร์มของคุณเอง)"; +$LANG["phrase_field_comments"] = "ความคิดเห็นฟิลด์"; +$LANG["phrase_field_label"] = "ป้าย ฟิลด์"; +$LANG["phrase_field_options"] = "ตัว เลือก ฟิลด์"; +$LANG["phrase_field_size"] = "ขนาด ฟิลด์"; +$LANG["phrase_field_skipped"] = "ข้าม ฟิลด์"; +$LANG["phrase_field_specific_settings"] = "การตั้งค่าเขตข้อมูลเฉพาะ"; +$LANG["phrase_field_type"] = "ประเภท ฟิลด์"; +$LANG["phrase_field_type_no_validation"] = "ไม่มีกฎระเบียบสำหรับการตรวจสอบชนิดของเขตข้อมูลนี้"; +$LANG["phrase_field_types"] = "ประเภท ฟิลด์"; +$LANG["phrase_field_value"] = "ค่า ฟิลด์"; +$LANG["phrase_field_values_to_display_values"] = "Field Values Values »แสดง"; +$LANG["phrase_final_touches_page_6"] = "6. สิ้นสุด Touches"; +$LANG["phrase_finalize_form"] = "รูป แบบ เสร็จ สิ้น"; +$LANG["phrase_first_name"] = "ชื่อ"; +$LANG["phrase_footer_text"] = "ข้อความ ส่วน ท้าย"; +$LANG["phrase_for_any_form_submission"] = "สำหรับ รูป แบบ การ ส่ง ใด ๆ"; +$LANG["phrase_for_view_submissions"] = "ส่งเท่านั้นที่เหมาะสมในดูต่อไปนี้ (s)"; +$LANG["phrase_forgot_password"] = "ลืม รหัส ผ่าน"; +$LANG["phrase_form_already_selected"] = "รูป แบบ แล้ว เลือก"; +$LANG["phrase_form_email_field_b_c"] = "รูปแบบ email [] เขต :"; +$LANG["phrase_form_email_field_configuration"] = "ค่า Form Email ฟิลด์"; +$LANG["phrase_form_email_fields"] = "เขต Email Form"; +$LANG["phrase_form_field"] = "ช่อง Form"; +$LANG["phrase_form_field_contents"] = "เนื้อหาของเขตข้อมูลแบบฟอร์ม"; +$LANG["phrase_form_field_name"] = "ชื่อ Form Field"; +$LANG["phrase_form_field_placeholders"] = "ตัวยึดเขตข้อมูลฟอร์ม"; +$LANG["phrase_form_fields"] = "ช่อง Form"; +$LANG["phrase_form_info"] = "ข้อมูล แบบ"; +$LANG["phrase_form_info_2"] = "2. ข้อมูล แบบ"; +$LANG["phrase_form_list"] = "รายการแบบฟอร์ม"; +$LANG["phrase_form_name"] = "ชื่อ แบบ ฟอร์ม"; +$LANG["phrase_form_page"] = "หน้า แบบ ฟอร์ม"; +$LANG["phrase_form_placeholders"] = "Placeholders Form"; +$LANG["phrase_form_submission"] = "ส่ง แบบ ฟอร์ม"; +$LANG["phrase_form_submissions"] = "ส่ง แบบ ฟอร์ม"; +$LANG["phrase_form_type"] = "พิมพ์ แบบ ฟอร์ม"; +$LANG["phrase_form_url"] = "URL แบบ"; +$LANG["phrase_form_urls"] = "URL ที่แบบฟอร์ม"; +$LANG["phrase_forms_assigned_to_any_account"] = "แบบฟอร์มที่กำหนดให้กับบัญชีใด ๆ"; +$LANG["phrase_forms_page_default_message"] = "รูปแบบข้อความเริ่มต้นหน้า"; +$LANG["phrase_ft_installation"] = "การ ติด ตั้ง แบบ Tools Script"; +$LANG["phrase_full_width"] = "ความกว้างเต็ม"; +$LANG["phrase_getting_started"] = "การเริ่มต้น"; +$LANG["phrase_global_placeholders"] = "Placeholders Global"; +$LANG["phrase_group_name"] = "ชื่อ กลุ่ม"; +$LANG["phrase_group_options_q"] = "ตัวเลือกกลุ่มได้หรือไม่"; +$LANG["phrase_group_rows"] = "แถวกลุ่ม"; +$LANG["phrase_have_fun"] = "สนุก!"; +$LANG["phrase_highlight_colour"] = "สีไฮไลท์"; +$LANG["phrase_html_email"] = "อีเมล์ HTML"; +$LANG["phrase_html_template"] = "แม่ แบบ HTML"; +$LANG["phrase_images_media"] = "ภาพ / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "รายการตัวเลือกนำเข้า »"; +$LANG["phrase_input_length"] = "ป้อนยาว"; +$LANG["phrase_installation_help"] = "ช่วยเหลือในการติดตั้ง"; +$LANG["phrase_internal_form"] = "รูปแบบภายใน"; +$LANG["phrase_ip_address"] = "ที่ อยู่ IP"; +$LANG["phrase_is_multi_page_form_q"] = "นี้เป็นแบบหลายหน้า?"; +$LANG["phrase_label_response_placeholders"] = "Placeholders ป้ายกำกับ / การตอบสนอง"; +$LANG["phrase_large_300px"] = "ขนาดใหญ่ (300px)"; +$LANG["phrase_large_400px"] = "ขนาดใหญ่ (400px)"; +$LANG["phrase_last_7_days"] = "7 วันสุดท้าย"; +$LANG["phrase_last_logged_in"] = "ที่ ผ่าน เข้า สู่ ระบบ"; +$LANG["phrase_last_modified"] = "แก้ไข ล่าสุด"; +$LANG["phrase_last_modified_date"] = "วัน ที่ แก้ไข ล่าสุด"; +$LANG["phrase_last_name"] = "นามสกุล"; +$LANG["phrase_letters_only"] = "ตัวอักษร"; +$LANG["phrase_light_brown"] = "สีชา"; +$LANG["phrase_limit_email_content"] = "จำกัด เนื้อหา อีเมล์ ใน ช่อง ดู"; +$LANG["phrase_loading_ellipsis"] = "กำลังโหลด ..."; +$LANG["phrase_log_in"] = "เข้า สู่ ระบบ"; +$LANG["phrase_login_as_user"] = "เข้าสู่ระบบในฐานะผู้ใช้นี้"; +$LANG["phrase_login_info"] = "ข้อมูล การ เข้า สู่ ระบบ"; +$LANG["phrase_login_page"] = "หน้า เข้า สู่ ระบบ"; +$LANG["phrase_login_panel_c"] = "แผง Login:"; +$LANG["phrase_login_panel_leftarrows"] = "แผง «Login"; +$LANG["phrase_login_password"] = "รหัส ผ่าน เข้า สู่ ระบบ"; +$LANG["phrase_login_username"] = "Login ชื่อ ผู้ ใช้"; +$LANG["phrase_logo_link_url"] = "โลโก้ URL Link"; +$LANG["phrase_logout_url"] = "URL ออก จาก ระบบ"; +$LANG["phrase_main_nav"] = "การนำ หลัก"; +$LANG["phrase_main_settings"] = "การ ตั้ง ค่า หลัก"; +$LANG["phrase_manage_client"] = "ลูกค้า จัดการ"; +$LANG["phrase_manage_client_omit_list"] = "ละเว้นการจัดการลูกค้ารายการ"; +$LANG["phrase_max_file_size"] = "ขนาด ไฟล์ สูงสุด"; +$LANG["phrase_max_length"] = "ยาวสูงสุด"; +$LANG["phrase_max_length_words_chars"] = "-- ความยาวสูงสุด (คำ / ตัวอักษร)"; +$LANG["phrase_may_add_submissions"] = "อาจมีการเพิ่มการส่ง"; +$LANG["phrase_may_copy_submissions"] = "สามารถคัดลอกการส่ง"; +$LANG["phrase_may_delete_submissions"] = "อาจลบส่ง"; +$LANG["phrase_medium_150px"] = "ขนาดกลาง (150px)"; +$LANG["phrase_medium_200px"] = "ขนาดกลาง (200px)"; +$LANG["phrase_menu_name"] = "ชื่อ เมนู"; +$LANG["phrase_menu_type"] = "พิมพ์ เมนู"; +$LANG["phrase_min_password_length"] = "ความยาวรหัสผ่านขั้นต่ำ"; +$LANG["phrase_module_description"] = "คำ อธิบาย Module"; +$LANG["phrase_module_info"] = "ข้อมูล Module"; +$LANG["phrase_module_nav"] = "การนำ Module"; +$LANG["phrase_month_to_date"] = "เดือนถึงวันที่"; +$LANG["phrase_multi_select"] = "Multi-เลือก"; +$LANG["phrase_multi_select_dropdown"] = "หลาย แบบ เลื่อน ลง เลือก"; +$LANG["phrase_multiple_fields_found"] = "หลาย พบ ฟิลด์!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "ชื่อ / นามสกุล"; +$LANG["phrase_new_blank_email"] = "อีเมล ใหม่ ที่ ว่าง เปล่า"; +$LANG["phrase_new_blank_option_list"] = "รายการตัวเลือกใหม่ที่ว่างเปล่า"; +$LANG["phrase_new_blank_view"] = "ดู ใหม่ ว่าง"; +$LANG["phrase_new_ft_installation"] = "ใหม่ แบบ เครื่องมือ ติด ตั้ง"; +$LANG["phrase_new_option_list"] = "รายการตัวเลือกใหม่"; +$LANG["phrase_new_password"] = "รหัส ผ่าน ใหม่"; +$LANG["phrase_new_password_reenter"] = "รหัส ผ่าน ใหม่ (อีก ครั้ง โปรด ป้อน)"; +$LANG["phrase_new_view"] = "ดู ใหม่"; +$LANG["phrase_new_view_all_fields"] = "ใหม่ดู -- เขตทั้งหมด"; +$LANG["phrase_next_client"] = "ลูกค้าต่อไป »"; +$LANG["phrase_next_field"] = "»ช่อง ถัด ไป"; +$LANG["phrase_next_form"] = "แบบฟอร์มต่อไป »"; +$LANG["phrase_next_view"] = "»ไป ดู"; +$LANG["phrase_no_clients"] = "ลูกค้า No"; +$LANG["phrase_no_limit"] = "ไม่มีขีด จำกัด"; +$LANG["phrase_no_offset"] = "ไม่มี ชดเชย"; +$LANG["phrase_no_option_lists_available"] = "ไม่มีตัวเลือกรายการที่ใช้ได้"; +$LANG["phrase_no_views"] = "ไม่มี ความ คิดเห็น"; +$LANG["phrase_no_views_with_filters_p"] = "(Views ไม่มีกับตัวกรองที่กำหนด)"; +$LANG["phrase_none_not_recommended"] = "ไม่มี (ไม่ แนะนำ)"; +$LANG["phrase_not_assigned_to_option_list"] = "ฟิลด์นี้จะไม่ได้กำหนดให้รายการตัวเลือก"; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "จะ ไม่ เท่า กัน"; +$LANG["phrase_not_found"] = "ไม่ พบ!"; +$LANG["phrase_not_like"] = "ไม่ ชอบ"; +$LANG["phrase_not_visible_to_client"] = "(ไม่ แสดง แก่ ลูกค้า)"; +$LANG["phrase_num_clients_per_page"] = "ลูกค้า หมายเลข Per Page"; +$LANG["phrase_num_emails_per_page"] = "NUM อีเมล Per Page"; +$LANG["phrase_num_fields"] = "จำนวนของเขตข้อมูล"; +$LANG["phrase_num_forms_per_page"] = "NUM แบบ Per Page"; +$LANG["phrase_num_menus_per_page"] = "NUM เมนู Per Page"; +$LANG["phrase_num_modules_per_page"] = "NUM Modules Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "หนุ่มตัวเลือกรายการต่อเพจ"; +$LANG["phrase_num_options"] = "ตัวเลือกหนุ่ม"; +$LANG["phrase_num_rows"] = "แถว Num"; +$LANG["phrase_numbers_only"] = "ตัวเลขเท่านั้น"; +$LANG["phrase_often_localhost"] = "(มัก จะ "localhost")"; +$LANG["phrase_on_form_submission"] = "ใน การ ส่ง ฟอร์ม"; +$LANG["phrase_one_char_number"] = "อย่างน้อยหนึ่งตัวเป็นตัวเลข (0-9)"; +$LANG["phrase_one_char_upper"] = "อย่างน้อยหนึ่งตัวอักษรเป็นตัวพิมพ์ใหญ่"; +$LANG["phrase_one_special_char"] = "อย่างน้อยหนึ่ง {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(เฉพาะ ลูกค้า เฉพาะ เข้าถึง)"; +$LANG["phrase_open_form_in_dialog"] = "รูปแบบเปิดในหน้าต่างโต้ตอบ"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "เปิดฟอร์มนี้ในหน้าต่างแท็บใหม่ / a"; +$LANG["phrase_option_list"] = "รายการตัวเลือก"; +$LANG["phrase_option_list_name"] = "ชื่อรายการตัวเลือก"; +$LANG["phrase_option_list_or_contents"] = "รายการตัวเลือก / เนื้อหา"; +$LANG["phrase_option_lists"] = "รายการตัวเลือก"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "ชื่อ หน้า"; +$LANG["phrase_pass_on"] = "คาบ"; +$LANG["phrase_password_min"] = "มันต้องมีอย่างน้อย {\$length} อักขระ."; +$LANG["phrase_password_one_number"] = "ต้องมีอย่างน้อยหนึ่งตัวเลข (0-9)"; +$LANG["phrase_password_one_uppercase"] = "มันต้องมีตัวอักษรอย่างน้อยหนึ่งตัวพิมพ์ใหญ่"; +$LANG["phrase_password_requirements_c"] = "ข้อกำหนด Password :"; +$LANG["phrase_password_reset"] = "รีเซ็ต รหัส ผ่าน"; +$LANG["phrase_password_special_char"] = "มันต้องมีอย่างน้อยหนึ่งตัวอักษรต่อไปนี้ {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "สิทธิ์ / ตั้งค่าอื่น ๆ"; +$LANG["phrase_permitted_file_types"] = "ประเภท ไฟล์ อนุมัติ"; +$LANG["phrase_phone_number"] = "หมายเลขโทรศัพท์"; +$LANG["phrase_phone_number_format"] = "รูปแบบหมายเลขโทรศัพท์"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini สูงสุด ที่ อนุญาต ขนาด ไฟล์ อัพโหลด:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "รุ่น PHP"; +$LANG["phrase_please_confirm"] = "กรุณายืนยัน"; +$LANG["phrase_please_enter_license_key"] = "กรุณาใส่คีย์ใบอนุญาตของคุณ"; +$LANG["phrase_please_select"] = "กรุณา เลือก"; +$LANG["phrase_please_select_form"] = "โปรด เลือก แบบ ฟอร์ม"; +$LANG["phrase_prev_client"] = "« ย้อนกลับของลูกค้า"; +$LANG["phrase_prev_form"] = "« รูปก่อนหน้า"; +$LANG["phrase_prevent_password_reuse"] = "ป้องกันไม่ให้กลับมาใช้รหัสผ่านล่าสุด #"; +$LANG["phrase_previous_field"] = "ฟิลด์ ก่อน «"; +$LANG["phrase_previous_page"] = "หน้า ก่อน หน้า"; +$LANG["phrase_previous_view"] = "« ดูย้อนกลับ"; +$LANG["phrase_program_name"] = "ชื่อ โครงการ"; +$LANG["phrase_public_form_omit_list"] = "ประชาชน Form ราย ชื่อ ตกหล่น"; +$LANG["phrase_public_view_omit_list"] = "ประชาชน ดู ราย ชื่อ ตกหล่น"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "มีปัญหาเกี่ยวกับแบบสอบถามต่อไปนี้คือ :"; +$LANG["phrase_radio_buttons"] = "ปุ่ม Radio"; +$LANG["phrase_random_form_submission"] = "ส่ง ฟอร์ม แบบ สุ่ม"; +$LANG["phrase_re_enter_password"] = "ป้อน รหัส ผ่าน"; +$LANG["phrase_recipient_type"] = "ประเภท ผู้รับ"; +$LANG["phrase_redirect_url"] = "URL การ เปลี่ยน เส้นทาง"; +$LANG["phrase_refresh_list"] = "รีเฟรช รายการ"; +$LANG["phrase_refresh_module_list"] = "รีเฟรช รายการ Module"; +$LANG["phrase_refresh_page"] = "หน้า รีเฟรช"; +$LANG["phrase_refresh_theme_list"] = "รีเฟรช รายการ Theme"; +$LANG["phrase_register_new_email"] = "อีเมล์ ลง ทะเบียน ใหม่"; +$LANG["phrase_remaining_characters"] = "ตัวอักษรที่เหลือ"; +$LANG["phrase_remaining_words"] = "คำที่เหลือ"; +$LANG["phrase_remove_tabs"] = "แท็ บ ลบ"; +$LANG["phrase_required_password_chars"] = "ต้องมีตัวอักษรรหัสผ่าน"; +$LANG["phrase_resend_test_submission"] = "ส่ง อีก ครั้ง Test"; +$LANG["phrase_return_form_list"] = "กลับ ไป แบบ รายการ"; +$LANG["phrase_row_selected"] = "แถว {\$num_rows} เลือก"; +$LANG["phrase_rows_selected"] = "{\$num_rows} แถว ที่ เลือก"; +$LANG["phrase_sample_data"] = "ข้อมูล ตัวอย่าง"; +$LANG["phrase_save_changes"] = "บันทึกการเปลี่ยนแปลง"; +$LANG["phrase_search_keyword"] = "คำที่ใช้ค้นหา"; +$LANG["phrase_security_settings"] = "การตั้งค่าความปลอดภัย"; +$LANG["phrase_select_all"] = "เลือก ทั้งหมด"; +$LANG["phrase_select_all_X_results"] = "เลือก ทั้งหมด {\$numresults} ผลลัพธ์"; +$LANG["phrase_select_all_on_page"] = "เลือก ทั้งหมด ใน หน้า"; +$LANG["phrase_select_date"] = "เลือกวันที่"; +$LANG["phrase_select_field"] = "เลือกเขตข้อมูล"; +$LANG["phrase_select_swatch"] = "เลือกแถบ"; +$LANG["phrase_selected_clients"] = "ลูกค้า ที่ เลือก"; +$LANG["phrase_selected_views"] = "ความ คิดเห็น ที่ เลือก"; +$LANG["phrase_send_email"] = "ส่ง Email"; +$LANG["phrase_send_test_email"] = "ส่ง Email Test"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "หมด เวลา ช่วง"; +$LANG["phrase_setting_value"] = "การ ตั้ง ค่า"; +$LANG["phrase_setup_options"] = "ตัว เลือก การ ติด ตั้ง"; +$LANG["phrase_show_all"] = "แสดง ทั้งหมด"; +$LANG["phrase_show_form"] = "แสดงแบบฟอร์ม"; +$LANG["phrase_size_large"] = "ขนาด ใหญ่ (ข้อความ)"; +$LANG["phrase_size_medium"] = "กลาง (<= 256 chars)"; +$LANG["phrase_size_small"] = "ขนาด เล็ก (<= 20 chars)"; +$LANG["phrase_size_tiny"] = "เล็ก (<= 5 chars)"; +$LANG["phrase_size_very_large"] = "มาก ขนาด ใหญ่ (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "ฟิลด์ ข้าม"; +$LANG["phrase_skip_step"] = "ข้าม ขั้น ตอน"; +$LANG["phrase_small_100px"] = "ขนาดเล็ก (100px)"; +$LANG["phrase_small_80px"] = "ขนาดเล็ก (80px)"; +$LANG["phrase_smart_fill"] = "กรอก Smart"; +$LANG["phrase_smart_fill_fields_from_c"] = "ช่อง Smart Fill จาก:"; +$LANG["phrase_smart_fill_user_documentation"] = "»Smart กรอก User เอกสาร"; +$LANG["phrase_sort_as"] = "เรียงเป็น"; +$LANG["phrase_special_fields"] = "เขตพิเศษ"; +$LANG["phrase_standard_fields"] = "เขตข้อมูลมาตรฐาน"; +$LANG["phrase_standard_filters"] = "»Standard กรอง"; +$LANG["phrase_step_1"] = "ขั้น ตอน ที่ 1"; +$LANG["phrase_step_2"] = "ขั้น ที่ 2"; +$LANG["phrase_step_3"] = "ขั้น ที่ 3"; +$LANG["phrase_step_4"] = "ขั้น ที่ 4"; +$LANG["phrase_step_5"] = "ขั้น ที่ 5"; +$LANG["phrase_step_6"] = "ขั้น ที่ 6"; +$LANG["phrase_strip_tags_in_submissions"] = "แท็ ก Strip ใน การ ส่ง แบบ ฟอร์ม"; +$LANG["phrase_subject_line"] = "หัวเรื่อง"; +$LANG["phrase_submission_date"] = "วัน ที่ ส่ง"; +$LANG["phrase_submission_id"] = "ID ส่ง"; +$LANG["phrase_submission_made"] = "ส่ง ได้: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "ประเภท การ ส่ง"; +$LANG["phrase_submissions_per_page"] = "ส่ง ต่อ Page"; +$LANG["phrase_system_check"] = "ตรวจ สอบ ระบบ"; +$LANG["phrase_system_fields_no_validation"] = "คุณอาจจะไม่เพิ่มการตรวจสอบไปยังเขตข้อมูลระบบ"; +$LANG["phrase_system_time_offset"] = "ชดเชย System Time"; +$LANG["phrase_tab_label"] = "ป้าย แท็ บ"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "สิทธิ Test Folder"; +$LANG["phrase_test_submission"] = "ส่ง Test"; +$LANG["phrase_test_submission_3"] = "3. ส่ง Test"; +$LANG["phrase_test_submission_received"] = "ได้ รับ การ ทดสอบ การ ส่ง"; +$LANG["phrase_text_and_html"] = "ข้อความ และ HTML"; +$LANG["phrase_text_email"] = "อีเมล ข้อความ"; +$LANG["phrase_text_template"] = "แม่ แบบ Text"; +$LANG["phrase_the_previous_month"] = "ในเดือนก่อนหน้า"; +$LANG["phrase_theme_description"] = "คำอธิบายรูปแบบ"; +$LANG["phrase_theme_info"] = "ข้อมูล Theme"; +$LANG["phrase_tiny_30px"] = "เล็ก (30px)"; +$LANG["phrase_tiny_50px"] = "เล็ก (50px)"; +$LANG["phrase_total_results_c"] = "ผล รวม:"; +$LANG["phrase_type_c"] = "ประเภท ข้อ ผิด พลาด:"; +$LANG["phrase_unselect_all"] = "ยกเลิก ทั้งหมด"; +$LANG["phrase_update_accounts"] = "บัญชี Update"; +$LANG["phrase_update_email_template"] = "แม่ Update Email"; +$LANG["phrase_update_field"] = "ช่อง Update"; +$LANG["phrase_update_order"] = "Order ปรับปรุง"; +$LANG["phrase_update_view"] = "ดู Update"; +$LANG["phrase_upload_file"] = "อัพโหลด ไฟล์"; +$LANG["phrase_upload_files"] = "อัป โหลด ไฟล์"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "เส้นทาง โฟลเดอร์ อัพโหลด"; +$LANG["phrase_upload_folder_url"] = "โฟลเดอร์ URL อัพโหลด"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "ใช้ค่าเริ่มต้น?"; +$LANG["phrase_used_by_num_form_fields"] = "ใช้ # แบบ ฟิลด์"; +$LANG["phrase_uses_swatches"] = "ใช้ Swatches"; +$LANG["phrase_valid_email"] = "อีเมลที่ถูกต้อง"; +$LANG["phrase_validation_error"] = "ข้อผิดพลาดในการตรวจสอบ"; +$LANG["phrase_validation_rule"] = "กฎการตรวจสอบ"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "กลุ่มดู"; +$LANG["phrase_view_id"] = "รหัสดู"; +$LANG["phrase_view_name"] = "ชื่อ ดู"; +$LANG["phrase_view_placeholders"] = "Placeholders ดู"; +$LANG["phrase_view_submissions"] = "ส่ง View"; +$LANG["phrase_view_uploaded_files"] = "ดู อัพโหลด ไฟล์"; +$LANG["phrase_viewing_range"] = "[ดู {\$startnum} เพื่อ {\$endnum}]"; +$LANG["phrase_when_sent"] = "เมื่อ ส่ง"; +$LANG["phrase_when_submission_is_deleted"] = "เมื่อ ส่ง จะ ถูก ลบ"; +$LANG["phrase_when_submission_is_edited"] = "เมื่อ มี การ ยื่น แก้ไข"; +$LANG["phrase_who_can_access"] = "ผู้ ที่ สามารถ เข้าถึง?"; +$LANG["phrase_word_limit_p"] = "จำกัด คำ"; +$LANG["phrase_year_to_date"] = "ปีถึงวันที่"; +$LANG["phrase_yes_for_all_views"] = "ใช่ สำหรับ มุม มอง ทั้งหมด"; +$LANG["phrase_yes_for_specific_views"] = "ใช่ สำหรับ มุม มอง เฉพาะ"; +$LANG["phrase_your_account"] = "ของ บัญชี"; +$LANG["phrase_your_email"] = "อีเมล ของ คุณ"; +$LANG["phrase_your_email_address"] = "ที่ อยู่ อีเมล ของ คุณ"; +$LANG["processing_form_disabled"] = "ขออภัย รูป นี้ ถูก ปิด."; +$LANG["processing_form_incomplete"] = "ขออภัย รูป นี้ ไม่ ปรากฏ ที่ จะ ตั้ง เต็มที่ จาก ภายใน Form Tools. สาเหตุ ส่วน ใหญ่ ของ ปัญหา นี้ คือ คุณ ลบ form_tools_initialize_form "" ช่อง แบบ ฟอร์ม ที่ ซ่อน ไว้ แต่ ไม่ ได้ ทำ ตาม ขั้น ตอน ทั้งหมด ของ "เพิ่ม แบบ กระบวนการ".

    กรุณา เข้า สู่ ระบบ และ ตรวจ สอบ การ กำหนด ค่า แบบ ฟอร์ม."; +$LANG["processing_init_complete"] = "ขอบคุณ! ส่ง ทดสอบ ของ คุณ ถูก วาง ผ่าน สำเร็จ. โปรด กลับ ไป ที่ แผง แบบ เครื่องมือ บริหาร และ คลิก ปุ่ม "Refresh" ที่ ด้าน ล่าง ของ การ เพิ่ม ขั้น ตอน แบบ ฟอร์ม 3 หน้า เพื่อ เสร็จ สิ้น การ ตั้ง ค่า รูป แบบ ของ."; +$LANG["processing_invalid_form_id"] = "ขออภัยนี้ไม่ปรากฏขึ้นเพื่อเป็นรหัสแบบฟอร์มที่ถูกต้อง"; +$LANG["processing_no_form_id"] = "process.php ต้อง ใช้ แบบ ฟอร์ม ID สำหรับ การ ประมวล ผล. ตรวจ สอบ ว่า แบบ ฟอร์ม ของ คุณ มี ช่อง ซ่อน มี ชื่อ "form_tools_form_id" ที่ ผ่าน ตาม แบบ ฟอร์ม ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "รูป แบบ เครื่องมือ ไม่ สามารถ ตรวจ สอบ ที่ เปลี่ยน เส้นทาง เมื่อ พวก เขา ไม่ เข้า captcha ที่ ถูก ต้อง. โปรด ส่ง ใน ช่อง ซ่อน มี form_tools_form_url ชื่อ ที่ มี URL ของ รูป แบบ."; +$LANG["processing_no_post_vars"] = "process.php ไม่ ได้ รับ ข้อมูล ใด ๆ. หมายเหตุ: สคริปต์ ไม่ สามารถ โหลด ได้ โดยตรง ใน เบ รา ว์ เซอร์ นี้.
    ตรวจ สอบ ว่า แบบ ฟอร์ม ของ คุณ ส่ง ทาง POST."; +$LANG["processing_no_redirect_url"] = "ส่ง ประมวล ผล ได้ อย่าง ถูก ต้อง แต่ คุณ ไม่ ได้ ระบุ URL ที่ เปลี่ยน เส้นทาง สำหรับ รูป แบบ นี้ แก้ไข รูป แบบ ใน แบบ ฟอร์ม Tools UI และ เพิ่ม URL ที่ เปลี่ยน เส้นทาง."; +$LANG["special_language"] = "Thai"; +$LANG["special_language_locale"] = "Thai"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "ทุก บัญชี ลูกค้า ใหม่ จะ ถูก สร้าง ขึ้น ด้วย การ ตั้ง ค่า และ สิทธิ ที่ กำหนด ไว้ ด้าน ล่าง. เพื่อ แทนที่ การ ตั้ง ค่า สำหรับ ลูกค้า ที่ ต้องการ แก้ไข บัญชี ของ ลูกค้า และ ไป ที่ การ ตั้ง ค่า แท็ บ."; +$LANG["text_add_form_choose_integration_method"] = "เลือกวิธีการที่คุณต้องการใช้เพื่อบูรณาการแบบฟอร์มของคุณด้วยเครื่องมือแบบฟอร์ม"; +$LANG["text_add_form_code_submission_benefits"] = "วิธีการนี้จะใช้ แบบฟอร์มเครื่องมือ API รวมอยู่ในสคริปต์หลักแบบฟอร์มเครื่องมือ API ที่ให้จำนวนของฟังก์ชั่นที่เป็นประโยชน์จะทำให้งานของการบูรณาการแบบฟอร์มของคุณด้วยเครื่องมือแบบฟอร์มที่ง่ายที่สุดเท่าที่ทำได้ มีไม่ จำกัด วิธีการแบบฟอร์มของคุณอาจจะถูกยื่นเมื่อคุณใช้ API ที่มีการ คุณสามารถส่งเนื้อหาที่ได้ในครั้งเดียวหรือหน้าโดยหน้า; คุณสามารถเพิ่มตัวเองตรวจสอบของคุณด้านเซิร์ฟเวอร์ที่กำหนดเอง, ภาพ CAPTCHA; คุณสามารถเลือกที่จะส่งข้อมูลในขณะนี้ แต่เพียงบอกว่าเพื่อแสดงการส่งในแบบฟอร์มเครื่องมือ UI ที่ ในภายหลังได้ (โปรดดูที่ การส่งสรุป ส่วนในเอกสารความช่วยเหลือ API)"; +$LANG["text_add_form_code_submission_drawbacks"] = "เพื่อส่งข้อมูลแบบฟอร์มของคุณผ่านทาง PHP, แบบฟอร์มของคุณจะต้องอยู่ในเว็บไซต์เดียวกันนี้เป็นแบบฟอร์มการติดตั้งเครื่องมือ ประการที่สองสำหรับผู้ใช้ที่ไม่ใช่ทางด้านเทคนิคและสามเณรแบบฟอร์มเครื่องมือวิธีการนี​​้สามารถข่มขู่เล็กน้อยในครั้งแรก แต่มีความอุดมสมบูรณ์ของเอกสารที่จะช่วยคุณออกของทั้งสองบทเรียนที่ง่ายสำหรับการบูรณาการในรูปแบบเดียวและหลายหน้าของคุณ (เหล่านี้จะเชื่อมโยงไปยังเกี่ยวกับขั้นตอนในภายหลัง)"; +$LANG["text_add_form_direct_submission_benefits"] = "นี้ เป็น วิธี ที่ ง่าย ที่สุด ใน การ ส่ง แบบ ฟอร์ม ของ คุณ เพื่อ Form Tools. มัน ไม่ จำเป็น ต้อง รู้ PHP ใด ๆ และ ต้อง มี เพียง เล็ก ๆ ว่า จะ รูป แบบ. มัน เหมาะ สำหรับ รูป แบบ ขนาด เล็ก ที่ คุณ ต้องการ เพียง แค่ ส่ง ข้อมูล ไป ยัง ฐาน ข้อมูล แล้ว เปลี่ยน เส้นทาง ผู้ ใช้ ไป thankyou "หน้า"."; +$LANG["text_add_form_direct_submission_drawbacks"] = "วิธี การ ส่ง นี้ ใช้ ง่าย มาก แต่ ไม่มี การ ควบคุม มาก สำหรับ รูป แบบ ซับซ้อน more. หลาย รูป แบบ หน้า หรือ รูป แบบ ที่ ต้องการ เซิร์ฟเวอร์ การ ตรวจ สอบ ด้าน จะ เหมาะ กับ วิธี ที่ สอง: การ ส่ง ผ่าน ทาง แบบ ฟอร์ม Tools API."; +$LANG["text_add_form_field_types1"] = "เกือบเสร็จแล้ว! หน้านี้จะพยายามหารูปแบบเขตข้อมูลทั้งหมดของคุณและกำหนดประเภทฟิลด์ของพวกเขา คลิกที่ปุ่มสมาร์ทเติมเกี่ยวกับสิทธิในการรับเริ่มต้นที่ คุณจะได้รับอนุญาตเท่านั้นที่จะดำเนินการต่อเมื่อการกระทำทั้งหมดได้รับการแก้ไข -- ปัญหาที่ต้องให้ความสนใจของคุณปรากฏใน "การดำเนินการที่จำเป็น "คอลัมน์"; +$LANG["text_add_form_field_types2"] = "ถ้าฟอร์มของคุณไม่ได้ใน HTML ให้คลิกปุ่มขั้นตอนที่ข้ามไปดำเนินการต่อไป ทั้งหมดนี้สามารถกำหนดค่าในภายหลัง"; +$LANG["text_add_form_field_types3"] = "โหลดนี้เนื้อหาของแบบฟอร์มของคุณ (s) หมายเหตุ : นี้จะเขียนทับการเปลี่ยนแปลงใด ๆ ที่คุณได้ทำในหน้านี้"; +$LANG["text_add_form_field_types4"] = "ในกรณีที่คุณทำงานเป็นปัญหาคลิกที่นี่เพื่อข้ามขั้นตอนนี้ ยังไม่ได้แก้ไขทุกเขตข้อมูลถูกตั้งค่าให้ใช้ค่าเริ่มต้น คุณสามารถกำหนดเขตข้อมูลเหล่านี้ในภายหลัง"; +$LANG["text_add_form_field_types_manual_upload"] = "ถ้าคุณได้รับไม่สามารถที่จะกรอกฟิลด์สมาร์ทของคุณคุณอาจต้องการลองใช้โซลูชันทางเลือก : อัปโหลดสำเนาของฟอร์มของคุณในช่องด้านล่าง"; +$LANG["text_add_form_field_types_manual_upload2"] = "หมายเหตุ : ไม่ต้องอัปโหลดหน้า PHP ดิบ (หรือโค้ดด้านเซิร์ฟเวอร์อื่น ๆ ) -- เพียงแค่อัปโหลดรุ่น HTML ที่ ที่จะได้รับนี้ดูและบันทึกหน้าเว็บจากเว็บเบราเซอร์ของคุณ"; +$LANG["text_add_form_field_types_multiple_fields_found"] = "มีหลายเขตข้อมูลที่ไม่สามารถพบได้ในหน้าแบบฟอร์มที่คุณระบุไว้ถูก นี้เป็นส่วนใหญ่ที่เกิดจากแนวโน้มโดยหนึ่งในต่อไปนี้ :"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "ที่คุณป้อนหนึ่งหรือมากกว่าหนึ่งของ URL ที่รูปแบบของรูปแบบหลายหน้าของคุณไม่ถูกต้อง"; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "หนึ่งหรือมากกว่าหนึ่งหน้าของแบบฟอร์มของคุณมีรหัสผ่านป้องกันและสคริปต์ที่ไม่สามารถเข้าถึงหน้าเว็บ"; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "คุณไม่ถูกต้องป้อน URL แบบฟอร์มของคุณ"; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "คลิกที่นี่ เพื่อกลับไปที่หน้าแบบฟอร์มข้อมูลเพื่อตรวจสอบการตั้งค่าของคุณ"; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "คุณได้เปลี่ยนรูปแบบของคุณ (s) หลังจากการทดสอบการส่ง"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "คลิกที่นี่ ที่จะนำส่งผ่านการทดสอบอื่น"; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "แบบฟอร์มของคุณมีรหัสผ่านป้องกันและสคริปต์ที่ไม่สามารถเข้าถึงหน้าเว็บ"; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "ในแท็บอื่น / หน้าต่างของเบราว์เซอร์นี้เข้าสู่แบบฟอร์มของคุณแล้วคลิกที่ปุ่มรีเฟรชหน้าเว็บด้านล่างนี้เพื่อพยายามที่จะเขตข้อมูลอีกครั้งพบว่า"; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "ถ้าไม่มีงานแก้ปัญหาข้างต้นคุณอาจต้องการที่จะลอง ด้วยตนเองอัพโหลดรูปแบบของคุณสำหรับการประมวลผล ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "มีหลายเขตข้อมูลที่ไม่สามารถพบได้ในหน้ารูปแบบที่คุณระบุถูก นี้เป็นส่วนใหญ่ที่เกิดจากแนวโน้มโดยหนึ่งในนี้"; +$LANG["text_add_form_help_link"] = "หากคุณทำงานเป็นปัญหาใด ๆ ในระหว่างขั้นตอนเหล่านี้ให้ลองอ่านออก เอกสารสำหรับผู้ใช้ ."; +$LANG["text_add_form_step_1_text_1"] = "หน้า ต่อ ไป นี้ นำ คุณ ผ่าน ขั้น ตอน ใน การ เครื่องมือ แบบ ฟอร์ม การ กำหนด ค่า ร้าน ค้า ส่ง รูป แบบ. ก่อน ดำเนิน การ ต่อ โปรด ตรวจ สอบ ว่า:"; +$LANG["text_add_form_step_1_text_2"] = "รูป แบบ ของ คุณ ได้ ถูก สร้าง ขึ้น และ จะ สามารถ เข้าถึง ได้ ผ่าน ทาง URL (localhost ใช้ได้)"; +$LANG["text_add_form_step_1_text_3"] = "สามารถ แก้ไข รูป แบบ"; +$LANG["text_add_form_step_2_para_2"] = "เปิด รูป แบบ ใน การ แก้ไข ที่ คุณ เลือก และ เปลี่ยน แท็ ก รูป แบบ ต่อ ไป นี้ รวม ถึง สอง ช่อง ซ่อน."; +$LANG["text_add_form_step_2_para_3"] = "ถัด ไป เปิด แบบ ฟอร์ม ใน เว็บ เบ รา เซอร์. กรอก ทุก ช่อง และ ส่ง. หลังจาก ส่ง คุณ จะ เห็น ข้อความ แจ้ง เตือน. เมื่อ ข้อความ นี้ ปรากฏ กลับ ไป ที่ หน้า นี้ และ คลิก ปุ่ม รีเฟรช ด้าน ล่าง. เมื่อ กระบวนการ นี้ เสร็จ สมบูรณ์ คุณ จะ เห็น ต่อ ปุ่ม ด้าน ล่าง การ คุณ ขั้น ตอน ถัด ไป."; +$LANG["text_add_form_step_2_para_6"] = "ใน การ ส่ง แบบ ฟอร์ม ของ คุณ มี ค่า ต่อ ไป นี้. พวก เขา อาจ ตั้ง โดยตรง หรือ ผ่าน ทาง PHP พร้อม ผ่าน แบบ ฟอร์ม ตัว เอง. ด้าน ล่าง ตัวอย่าง ของ แต่ละ. (\$ Varname) เป็น สับ (หรือ แถว สมาคม) ของ ข้อมูล ทั้งหมด ที่ ส่ง ฟอร์ม - นี้ มัก (\$ postvar) หรือ (\$ sessionvar) ตัวแปร แต่ อาจ กำหนด จะ สร้าง."; +$LANG["text_add_form_step_2_text_2"] = "ป้อน URL ของ หน้าของคุณ"ขอบคุณ "ที่นี่ ซึ่งเป็นที่ที่คุณต้องการคนที่ถูกนำไปหลังจากฟอร์มที่ได้รับการแสดงความคิดเห็น"; +$LANG["text_add_form_step_3_para_1"] = "หน้า นี้ แสดง ฟิลด์ ทั้งหมด ใน การ ส่ง รูป แบบ. กรุณา ตรวจ สอบ ข้อมูล ที่ แต่ละ ฟิลด์ และ ลบ ใด ๆ ที่ คุณ ไม่ จำเป็น ต้อง เก็บ ไว้ สำหรับ การ ส่ง ทุก. ถ้า คุณ ลบ ฟิลด์ ที่ ถูก ต้อง โดย อุบัติเหตุ หรือ ต้องการ แก้ไข ข้อมูล ที่ จัด เก็บ ตาม แบบ ฟอร์ม ให้ กลับ ไป ที่ หน้า ก่อน หน้า นี้ เพื่อ ส่ง การ ส่ง ทดสอบ ใหม่."; +$LANG["text_add_form_step_3_para_2"] = "หมายเหตุ: ถ้า คุณ ส่ง หลาย ค่า ผ่าน ทาง ช่อง หรือ multi-box เลือก ให้ ตรวจ สอบ ชื่อ ฟิลด์ ของ คุณ ลงท้าย ด้วย [] ตัว อักษร (ดู เอกสาร ผู้ ใช้ สำหรับ ข้อมูล เพิ่มเติม)."; +$LANG["text_add_form_step_3_text_1"] = "ที่นี่สนุกจะเริ่ม! ณ จุดนี้, เครื่องมือแบบฟอร์มที่กำลังรอสำหรับการส่งทดสอบจากแบบฟอร์มของคุณ มันจะใช้การส่งแบบฟอร์มนี้เพื่อทราบข้อมูลอะไรที่ควรจะเก็บไว้ในฐานข้อมูล"; +$LANG["text_add_form_step_3_text_2"] = "โดย กำหนด รูป แบบ ของ คุณ เพื่อ Form Tools"; +$LANG["text_add_form_step_3_text_3"] = "โดย ใช้ แบบ ฟอร์ม Tools API"; +$LANG["text_add_form_step_3_text_4"] = "เพื่อ ช่วย รวม รูป แบบ ของ คุณ เรา ขอ แนะนำ ให้ คุณ อ่าน หนึ่ง tutorials ต่อ ไป นี้"; +$LANG["text_add_form_step_3_text_5"] = "พวก เขา อธิบาย วิธี การ ตั้ง ค่า รูป แบบ ใน การ เตรียม การ ส่ง ทดสอบ และ มี ข้อมูล อื่น ๆ ที่ อาจ จะ ช่วย. บรรทัด PHP คุณ จะ ต้อง อยู่:"; +$LANG["text_add_form_step_3_text_6"] = "นี้ มั่นใจ ข้อมูล ถูก ส่ง จริง ใน แบบ ฟอร์ม Tools. เมื่อ คุณ ได้ นำ ส่ง ผ่าน การ ทดสอบ ของ คุณ ให้ คลิก ที่ ปุ่ม ด้าน ล่าง."; +$LANG["text_add_form_step_3_text_7"] = "ที่ ก่อน หน้า ไป สุดท้าย "ของ หน้า ขอบคุณ" โปรด เพิ่ม พารามิเตอร์ ต่อ ไป นี้ ใน ตัวแปร \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "ฐาน ข้อมูล ถูก ตั้ง ค่า ให้ สำหรับ รูป แบบ นี้ และ แบบ ฟอร์ม ได้ ถูก เปิด ใช้ งาน สำหรับ การ ใช้. ถ้า คุณ ได้ ส่ง เอกสาร โดย กำหนด รูป แบบ ของ คุณ process.php กรุณา กลับ ไป ที่ รูป แบบ และ ลบ ฟิลด์ ซ่อน ต่อ ไป นี้"; +$LANG["text_add_form_step_5_para_2"] = "แล้ว ไป "ขอบคุณ ของ คุณ หน้า" เพื่อ ว่าง ภาค. ครั้ง นี้ จะ กระทำ ทุก การ ส่ง รูป แบบ ใหม่ จะ ดำเนิน การ และ จัด เก็บ โดย แบบ ฟอร์ม Tools. พยายาม ทำให้ การ ส่ง หรือ สอง เพื่อ ตรวจ สอบ ข้อมูล ที่ ถูก อัพโหลด ทุก อย่าง ถูก ต้อง."; +$LANG["text_add_form_step_5_para_3"] = "หาก คุณ ต้องการ ปรับ แต่ง รูป แบบ ของ ตัว เลือก เช่น การ ส่ง อีเมล อัตโนมัติ เพิ่ม รูป แบบ ช่อง เพิ่ม ช่อง หรือ กำหนด ประเภท ฟิลด์ รูป แบบ คุณ สามารถ แก้ไข รูป แบบ ที่ จุด ใด."; +$LANG["text_add_form_step_5_para_4"] = "เนื่องจาก รูป แบบ ของ คุณ มี ไฟล์ ฟิลด์ อัพโหลด คุณ จะ ต้อง กำหนด ค่า แต่ละ ฟิลด์ เพื่อ ระบุ โฟลเดอร์ อัป โหลด ไฟล์, ไฟล์ ต่างๆ ได้ รับ อนุญาต และ. นี้ สามารถ พบ ได้ ใน แท็ บ ของ หน้า แก้ไข แบบ ฟอร์ม."; +$LANG["text_add_form_step_5_para_5"] = "หาก ส่ง ถูก ส่ง ผ่าน ทาง API ที่ เปลี่ยน สาย ft_api_init_form_page ใน หน้า แรก ของ รูป แบบ ของ คุณ:"; +$LANG["text_add_submission_button"] = "ปุ่มเพิ่มการส่งจะปรากฏขึ้นเฉพาะสำหรับมุมมองที่มี "อาจจะเพิ่มการส่ง "เลือกการตั้งค่า "ใช่ ""; +$LANG["text_admin_email_placeholder_info"] = "นี่ คือ ที่ อยู่ อีเมล ของ ผู้ ดูแล แบบ เครื่องมือ ที่ กำหนด ไว้ ใน การ ตั้ง ค่า บัญชี ของ คุณ. นี้ เฉพาะ ผล ที่ อยู่ อีเมล ดังนั้น ถ้า คุณ ต้องการ ใช้ เป็น ลิงค์ HTML คุณ จะ ต้อง ห่อ ไว้ ใน แท็ ก <a> เช่น โดย:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(นอกจาก เริ่ม ต้น การ เข้า สู่ ระบบ theme หน้า)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "ครั้งแรกโปรดเลือกประเภทแบบฟอร์มของคุณ"; +$LANG["text_client_form_page"] = "หน้า นี้ แสดง รูป แบบ และ มุม มอง ที่ ระบุ ให้ กับ ลูกค้า ราย นี้. คำ แนะนำ: เพื่อ ให้ พวก เขา เห็น การ ส่ง แบบ ฟอร์ม ของ พวก เขา ต้อง กำหนด ให้ อย่าง น้อย หนึ่ง View."; +$LANG["text_client_map_filters_desc1"] = "กรอง Map ลูกค้า ช่วย ให้ คุณ สามารถ จำกัด การ ส่ง ที่ ปรากฏ ใน มุม มอง นี้ ได้ โดย การ ทำ แผนที่ ค่า ใน ช่อง ฟอร์ม ค่า ใน บัญชี ลูกค้า."; +$LANG["text_client_no_forms"] = "ขณะ นี้ ท่าน มี รูป แบบ ไม่มี การ ตรวจ สอบ."; +$LANG["text_client_welcome"] = "ยินดี ต้อนรับ! โปรแกรม นี้ เก็บ ข้อมูล ที่ ส่ง โดย ผู้ เข้า ชม เว็บไซต์ ของ คุณ ทั้งหมด. เพื่อ ดู การ ส่ง สำหรับ รูป แบบ ใด เพียง คลิก ที่ ลิงค์ ดู หรือ ดู เมนู นำทาง leftmost สำหรับ ตัว เลือก อื่น ๆ."; +$LANG["text_config_file_created"] = "ไฟล์ config.php ของ คุณ ถูก สร้าง."; +$LANG["text_config_file_not_created"] = "เรา ไม่ สามารถ สร้าง ไฟล์ config.php ของ คุณ. คุณ จะ ต้อง สร้าง ไฟล์ เอง."; +$LANG["text_config_file_not_created_instructions"] = "คัด ลอก และ วาง เนื้อหา จาก ส่วน ด้าน ล่าง ลง ใน ไฟล์ ที่ เรียก ว่า config.php และ อัพโหลด ผ่าน ทาง FTP ไป Form Tools / โฟลเดอร์ โลก (โฟลเดอร์ ที่ ยัง มี ไฟล์ อื่น ๆ บาง และ ไดเรกทอรี หนึ่ง เรียก ว่า ไฟล์ library.php)."; +$LANG["text_confirm_delete_form"] = "ใช่ ฉัน ต้องการ ลบ แบบ ฟอร์ม นี้"; +$LANG["text_create_admin_account"] = "ตอน นี้ เรา จะ สร้าง บัญชี ผู้ ดูแล ระบบ. นี้ จะ ใช้ สำหรับ การ จัดการ ทุก ด้าน Form Tools เช่น การ เพิ่ม รูป แบบ และ การ สร้าง บัญชี ลูกค้า."; +$LANG["text_create_new_client_account"] = "ใช้ แบบ ฟอร์ม ด้าน ล่าง เพื่อ สร้าง บัญชี ลูกค้า ใหม่. ช่อง ทั้งหมด ต้อง."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "ดู PHP {\$datefunctionlink} ฟังก์ชัน สำหรับ การ จัด รูป แบบ ตัว เลือก"; +$LANG["text_default_file_settings_page"] = "หน้า นี้ กำหนด ตั้ง ค่า การ อัป โหลด ไฟล์ สำหรับ แบบ ติด ตั้ง เครื่องมือ. กฎ นี้ ใช้ กับ ไฟล์ ทั้งหมด ที่ อัป โหลด ผ่าน ทาง แบบ ฟอร์ม เครื่องมือ ยกเว้น อย่าง ชัดเจน แทนที่ สำหรับ ฟิลด์ แบบ บุคคล. หมายเหตุ: หาก คุณ เปลี่ยน โฟลเดอร์ อัพโหลด ไฟล์ หลังจาก ได้ รับ การ อัป โหลด จะ ถูก ย้าย โดย อัตโนมัติ ไป ยัง โฟลเดอร์ ใหม่."; +$LANG["text_default_theme_cache_folder_not_writable"] = "ก่อน ดำเนิน การ ต่อ คุณ จะ ต้อง ปรับปรุง รูป แบบ / ท่าน / ค่า เริ่ม ต้น โฟลเดอร์ แคช / ให้ เต็ม อ่าน และ เขียน สิทธิ์. ครั้ง นี้ เสร็จ ข้อความ นี้ จะ หาย ไป และ คุณ สามารถ ติด ตั้ง สคริปต์."; +$LANG["text_default_values_in_view"] = "ส่วนนี้จะเป็นตัวเลือก ส่งทั้งหมดที่สร้างขึ้นด้วยมุมมองนี้จะมีค่าเริ่มต้นที่ระบุที่นี่"; +$LANG["text_delete_all_forms"] = "ฉัน ต้องการ ลบ ไฟล์ ทั้งหมด ที่ อัป โหลด ผ่าน ทาง แบบ ฟอร์ม นี้"; +$LANG["text_delete_form_warning"] = "คุณ แน่ใจ หรือ ว่า ต้องการ ลบ รูป แบบ นี้ การ กระทำ นี้ ไม่ สามารถ ยกเลิก. ข้อมูล ทั้งหมด จะ สูญหาย อย่าง ถาวร!"; +$LANG["text_edit_admin_menu_page"] = "คุณ สามารถ แก้ไข เมนู ด้าน ล่าง. เพื่อ ให้ แน่ใจ ว่า คุณ ก็ สามารถ เข้าถึง ฟังก์ชัน การ ทำงาน ที่ มี ใน แบบ ฟอร์ม เครื่องมือ หน้า ต่อ ไป นี้ จะ ต้อง: แบบ ฟอร์ม ลูกค้า ทุก บัญชี Modules ตั้ง ค่า และ ออก จาก ระบบ. ของ คุณ"; +$LANG["text_edit_client_menu_page"] = "ส่วน นี้ จะ ช่วย ให้ คุณ สามารถ ปรับ แต่ง คอลัมน์ นำทาง ที่ ด้าน ซ้าย สำหรับ ผู้ ใช้ แต่ละ. คุณ สามารถ สร้าง เป็น เมนู ลูกค้า มาก เท่า ที่ คุณ ต้องการ และ กำหนด บัญชี ใด หนึ่ง ของ พวก เขา. โดย เริ่ม ต้น มี สอง เมนู: สำหรับ ท่าน ผู้ ดูแล ระบบ หนึ่ง สำหรับ บัญชี ลูกค้า เป็น. บัญชี ผู้ ดูแล ระบบ อาจ มี การ แก้ไข แต่ ไม่ ลบ."; +$LANG["text_edit_tab_summary"] = "หากคุณต้องการให้กับกลุ่มเขตข้อมูลที่ดูนี้เป็นแท็บเพียงแค่ใส่ชื่อแท็บด้านล่าง หลังจากที่คุณทำเสร็จแล้วให้เลือกแท็บที่เหมาะสมสำหรับกลุ่มแต่ละเขตข้อมูลใน แท็บฟิลด์ ."; +$LANG["text_edit_view_list_page"] = "นี้ตัวควบคุมแท็บที่เขตข้อมูลที่ปรากฏเป็นคอลัมน์ในหน้าการส่งรายชื่อและการตั้งค่าเพิ่มเติมบางอย่างสำหรับเขตข้อมูลเหล่านั้น หมายเหตุ : เราขอแนะนำให้คุณเพิ่มไม่เกิน 4 หรือ 5 ของเขตข้อมูลที่สำคัญที่สุดในการดู"; +$LANG["text_email_settings_intro"] = "หน้า นี้ จะ ช่วย ให้ คุณ ระบุ ใน ฟิลด์ ของ ฟอร์ม อีเมล และ ชื่อ ร้าน ที่ ตรงกัน ของ พวก เขา. เมื่อ คุณ กำหนด ที่ นี่ คุณ สามารถ ใช้ พวก เขา ใน อีเมล์ ของ คุณ แม่ เป็น ผู้รับ. ส่วน นี้ จะ เลือก ทั้งหมด."; +$LANG["text_email_tab_summary"] = "ส่วน นี้ จะ ช่วย ให้ คุณ สามารถ สร้าง จำนวน ของ อีเมล์ ที่ จะ ถูก ส่ง เมื่อ มี การ ส่ง แบบ ฟอร์ม ของ คุณ และ อื่น ๆ เรียก."; +$LANG["text_email_template_tab"] = "ส่วน นี้ จะ ช่วย ให้ คุณ สามารถ กำหนด เนื้อหา ที่ ปรากฏ ใน อีเมล์. หาก คุณ ต้องการ ส่ง อีเมล ของ คุณ เป็น ข้อความ เฉพาะ หรือ อีเมล เพียง ป้อน ค่า สำหรับ ส่วน ที่. ถ้า คุณ ป้อน ค่า สำหรับ ทั้ง อีเมล จะ ถูก ส่ง ใน รูป แบบ ทั้ง."; +$LANG["text_email_template_text_1"] = "มี การ ส่ง ผ่าน แบบ ฟอร์ม ของ คุณ {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "มี การ ส่ง ผ่าน แบบ ฟอร์ม ของ คุณ {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "ขอบคุณ สำหรับ การ ส่ง ของ คุณ"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "เกิดข้อผิดพลาดที่จะแสดงถ้าเขตข้อมูลที่ล้มเหลวในการตรวจสอบ"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "รูปแบบภายนอกเป็นรูปแบบที่มีอยู่แล้วบนเว็บไซต์ของคุณหรือที่อื่นบนเว็บ เลือกตัวเลือกนี้ถ้าคุณมีรูปของคุณเองที่คุณต้องการเพื่อทำงานร่วมกับเครื่องมือแบบฟอร์ม"; +$LANG["text_fields_tab_summary"] = "หน้านี้แสดงรายการทั้งหมดของเขตข้อมูลฟอร์มของคุณ เพื่อควบคุมวิธีการที่พวกเขาปรากฏขึ้นเมื่อการส่งกำลังให้ดูที่ แท็บชม . การลบเขตข้อมูลในหน้านี้จะลบออกจากการส่งทั้งหมดดังนั้นโปรดระมัดระวัง!"; +$LANG["text_file_extension_info"] = "ใส่ ไฟล์ นามสกุล คั่น ด้วย จุลภาค (เช่น JPG, GIF, png) หรือ ปล่อย ว่าง ไว้ เพื่อ ให้ ไฟล์ ประเภท ใด."; +$LANG["text_file_field_placeholders_info"] = "ช่อง File มี สอง Placeholders พิเศษ FILEURL และ ชื่อ ไฟล์. FILEURL เป็น URL แบบ เต็ม ไฟล์ เพื่อ ให้ คุณ สามารถ เชื่อม โยง โดยตรง ใน อีเมล ของ คุณ เป็น เพียง ชื่อ ไฟล์ ชื่อ ไฟล์."; +$LANG["text_filters_page"] = "เพียง ส่ง ที่ ตรง ตาม กฎ ที่ คุณ กำหนด นี้ จะ ปรากฏ ใน มุม มอง นี้."; +$LANG["text_filters_tips"] = "สำหรับ เคล็ด ลับ ใน การ ใช้ ตัว กรอง ส่ง ให้ ดู ที่ ผู้ ใช้ เอกสาร."; +$LANG["text_forgot_password"] = "ปัญหา No. เพียง แค่ ใส่ ชื่อ ด้าน ล่าง และ ข้อมูล เข้า สู่ ระบบ ของ คุณ จะ ถูก ส่ง ไป ยัง ที่ อยู่ อีเมล ของ คุณ ใน ไฟล์. หาก คุณ ลืม ชื่อ ผู้ ใช้ ของ คุณ โปรด ส่ง อีเมล ถึง ผู้ ดูแล เว็บไซต์ ใน {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "แบบ นี้ มี อย่าง น้อย หนึ่ง ฟิลด์ อัพโหลด ไฟล์:"; +$LANG["text_form_placeholder_info"] = "ตัวยึดต่อไปนี้อาจจะใช้ในแม่แบบอีเมลและเขตข้อมูลตัวยึดภาษาโดยไม่คำนึงถึงสิ่งที่ดูแม่แบบอีเมลที่ถูกกำหนดให้กับ ตัวยึดคำถามที่คำถามแบบฟอร์มที่เฉพาะเจาะจงตัวยึดตอบคือคำตอบของแต่ละคำถาม"; +$LANG["text_form_submission_date_placeholder"] = "เมื่อวันที่ยื่นที่ทำ"; +$LANG["text_form_tools_form_url"] = "URL แบบเต็มของแบบฟอร์ม นี้เท่านั้นที่มีค่าสำหรับรูปแบบภายนอก"; +$LANG["text_form_tools_login_url"] = "URL เข้า สู่ ระบบ สำหรับ แบบ ฟอร์ม Tools."; +$LANG["text_form_view_permission_info_admin"] = "หมายเหตุ : แบบฟอร์มนี้ขณะนี้มีประเภทการเข้าถึงของผู้ดูแลระบบเพื่อไม่มีบัญชีลูกค้าจะสามารถที่จะดูที่การดูนี้"; +$LANG["text_form_view_permission_info_private"] = "หมายเหตุ : แบบฟอร์มนี้ขณะนี้มีภาคเอกชนประเภทการเข้าถึงตัวเลือกเพื่อให้ภาครัฐและเอกชนที่นี่จะถูก จำกัด ให้เซตย่อยของลูกค้าที่"; +$LANG["text_ft_installed"] = "ขอ แสดง ความ ยินดี แบบ เครื่องมือ ได้ รับ การ ติด ตั้ง สำเร็จ!"; +$LANG["text_global_placeholder_info"] = "Placeholders เหล่า นี้ อาจ ใช้ แม่ แบบ ใด และ รูป แบบ ใด ๆ."; +$LANG["text_group_name_explanation"] = "สำหรับ ช่อง เพิ่ม ผ่าน กระบวนการ แบบ เพิ่ม ค่า นี้ ก่อน เต็ม กับ ข้อความ ที่ ปรากฏ ของ ฟิลด์ ใด ใช้ ค่า. คุณ อาจ ต้องการ เปลี่ยน ให้ ดี ขึ้น ลักษณะ เนื้อหา."; +$LANG["text_install_create_config_file"] = "ร้าน Form Tools เซิร์ฟเวอร์ และ การ ตั้ง ค่า ฐาน ข้อมูล ของ คุณ ใน ไฟล์ ที่ เรียก ว่า config.php พบ ใน / โลก ของ คุณ / โฟลเดอร์. คลิก ที่ "สร้าง ปุ่ม" File โดย อัตโนมัติ สร้าง ไฟล์ บน เซิร์ฟเวอร์ ของ คุณ."; +$LANG["text_install_create_database_tables"] = "ตอน นี้ เรา จะ สร้าง ตาราง ฐาน ข้อมูล แบบ Tools. ขั้น ตอน นี้ ต้อง ใช้ ฐาน ข้อมูล ตัว เอง ไป แล้ว สร้าง. หาก คุณ ไม่ แน่ใจ ว่า วิธี การ ทำ เช่น นี้ กรุณา ติดต่อ ผู้ ให้ บริการ โฮสต์ ของ คุณ."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" มัก จะ หมาย ถึง ชื่อ โฮสต์ ที่ คุณ ระบุ ไม่ ถูก ต้อง. อาจ ลอง ตั้ง ค่า นี้ เพื่อ localhost "" - นี้ เป็น วิธี ทั่วไป จะ ดู ที่ ฐาน ข้อมูล "" พื้นที่ บน เว็บ เซิร์ฟเวอร์."; +$LANG["text_install_db_tables_error_tip_2"] = ""ไม่ สามารถ เชื่อม ต่อ กับ เซิร์ฟเวอร์ MySQL ท้องถิ่น ผ่าน socket" หมาย ถึง ฐาน ข้อมูล ที่ ฟิลด์ ชื่อ โฮสต์ ไม่ ถูก ต้อง อีก ครั้ง."; +$LANG["text_install_db_tables_error_tip_3"] = "เข้า "ปฏิเสธ สำหรับ ผู้ ใช้:" หมายความ ว่า มี ปัญหา กับ ชื่อ ผู้ ใช้ / ชุด รหัส ผ่าน."; +$LANG["text_install_db_tables_error_tip_4"] = "เข้า "ปฏิเสธ สำหรับ ผู้ ใช้ ... ฐาน ข้อมูล ..." หมายความ ว่า แม้ว่า ชื่อ ผู้ ใช้ และ รหัส ผ่าน ที่ คุณ จัดหา ถูก ต้อง ก็ ไม่ สามารถ เชื่อม ต่อ ไป ที่ ฐาน ข้อมูล โดย เฉพาะ กับ บัญชี นั้น. นี้ ก็ หมายความ ว่า ทั้ง ชื่อ ฐาน ข้อมูล ของ คุณ ไม่ ถูก ต้อง หรือ ว่า บัญชี ผู้ ใช้ นี้ ไม่ เกี่ยวข้อง กับ ฐาน ข้อมูล ที่."; +$LANG["text_install_email_content_text"] = "มีแหล่งข้อมูลมากมายในเว็บไซต์ของเราเพื่อช่วยให้คุณเริ่มต้นใช้งานรวมทั้งเอกสารออนไลน์ของเรา (https://docs.formtools.org) และบทแนะนำ (https://docs.formtools.org/tutorials) หากคุณพบว่าคุณติดค้างหรือมีคำถามถามคำถามเกี่ยวกับ github (https://github.com/formtools/core/issues/)"; +$LANG["text_install_form_tools_server_not_supported"] = "ขออภัยเครื่องมือแบบฟอร์มจะไม่สามารถที่จะทำงานบนเซิร์ฟเวอร์ของคุณ กรุณาคลิกที่นี่ สำหรับข้อกำหนดขั้นต่ำที่"; +$LANG["text_install_system_check"] = "หน้า นี้ ใช้ การ ทดสอบ สอง สาม ใน ระบบ ของ คุณ เพื่อ ให้ แน่ใจ ว่า จะ สามารถ ใช้ เครื่องมือ แบบ."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "รูปแบบภายในที่มีอยู่เฉพาะภายในเครื่องมือแบบฟอร์ม -- ไม่อื่น ๆ บนเว็บไซต์ของคุณ เพียง แต่เป็นเครื่องมือแบบฟอร์มบัญชีผู้ใช้จะสามารถเข้าถึงแบบฟอร์มที่ เลือกตัวเลือกนี้ถ้าคุณไม่ได้มีฟอร์มที่มีอยู่"; +$LANG["text_internal_form_intro"] = "ใช้ฟอร์มด้านล่างเพื่อสร้างรูปแบบใหม่ภายใน การตั้งค่าทั้งหมดรวมทั้งจำนวนและเนื้อหาของเขตข้อมูลฟอร์มที่สามารถจะมีการเปลี่ยนแปลงและการกำหนดค่าในภายหลัง"; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "เพื่อ เข้า สู่ ระบบ และ ใช้ เครื่องมือ แบบ คุณ ต้อง เปิด ใช้ จาวา สคริปต์ ใน เบ รา เซอร์. กรุณา เปิด ใช้ งาน ได้ ใน ขณะ นี้ คลิก รีเฟรช ใน เบ รา ว์ เซอร์ ของ คุณ."; +$LANG["text_last_modified_date_explanation_c"] = "ครั้ง สุดท้าย ส่ง นี้ แก้ไข. สำหรับ การ ส่ง ใหม่ นี้ เช่น เดียว กับ:"; +$LANG["text_limit_email_content_desc"] = "ตัวเลือกนี้ทำงานเฉพาะสำหรับ HTML และเนื้อหาข้อความที่สร้างขึ้นด้วย Smarty ลูป"; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(เฉพาะ รายการ มุม มอง ที่ มี มากกว่า หนึ่ง ตัว กรอง ที่ กำหนด)"; +$LANG["text_log_in_to_ft"] = "เข้า สู่ แบบ ฟอร์ม Tools"; +$LANG["text_login"] = "กรุณา เข้า สู่ ระบบ ด้าน ล่าง เพื่อ เข้าถึง (\$ Program_Name) Administration Panel. หาก คุณ ลืม รหัส ผ่าน คลิก ที่ นี่ ของ คุณ."; +$LANG["text_login_info"] = "เป็น ที่ ต้องการ และ นี่ คือ ข้อมูล การ เข้า สู่ ระบบ ของ คุณ."; +$LANG["text_name_of_form"] = "ชื่อ ของ แบบ ฟอร์ม."; +$LANG["text_no_clients"] = "ขณะ นี้ มี ลูกค้า ที่ ไม่มี ใน ระบบ ฐาน ข้อมูล. เพื่อ เพิ่ม บัญชี ลูกค้า ใหม่ คลิก ที่ เพิ่ม ปุ่ม ด้าน ล่าง Client."; +$LANG["text_no_clients_found"] = "ลูกค้า ไม่ พบ. ลอง ขยาย เกณฑ์ การ ค้นหา ของ คุณ."; +$LANG["text_no_fields_in_view"] = "ดูนี้ไม่ได้มีเขตข้อมูลใด ๆ ในนั้น คลิกลิงค์ด้านล่าง"; +$LANG["text_no_forms"] = "ขณะ นี้ มี รูป แบบ ใด ใน ระบบ ฐาน ข้อมูล. เพื่อ เพิ่ม รูป แบบ ใหม่ ให้ คลิก ที่ ปุ่ม เพิ่ม แบบ ฟอร์ม ด้าน ล่าง."; +$LANG["text_no_forms_found"] = "แบบฟอร์มไม่พบ"; +$LANG["text_no_forms_found_search"] = "แบบฟอร์มไม่พบ ลองขยายเกณฑ์การค้นหาของคุณ"; +$LANG["text_no_modules_found"] = "โมดูล ไม่ พบ. ลอง ขยาย เกณฑ์ การ ค้นหา ของ คุณ."; +$LANG["text_no_recipients_added"] = "ผู้รับ ไม่มี การ เพิ่ม."; +$LANG["text_no_search_results"] = "มี ไม่มี ผลลัพธ์ กับ เกณฑ์ การ ค้นหา / ดู เป็น."; +$LANG["text_no_submissions_found"] = "ขออภัย ส่ง ไม่ พบ."; +$LANG["text_no_themes"] = "คุณไม่ได้มีรูปแบบใด ๆ ที่กำหนด คลิกที่ปุ่มด้านล่างเพื่อฟื้นฟูรายการรูปแบบของคุณหรือตรวจสอบ แบบฟอร์มเอกสารสำหรับผู้ใช้เครื่องมือ สำหรับข้อมูลเกี่ยวกับการเพิ่มชุดรูปแบบ"; +$LANG["text_non_deletable_fields"] = "ฟิลด์นี้จะใช้โดยสคริปต์หลักและจะไม่สามารถแก้ไขหรือลบได้โดยไม่ก่อให้กันไม่ได้ ถ้าคุณต้องการที่จะทำการเปลี่ยนแปลงชนิดของเขตข้อมูลให้ทำสำเนาของมันและแก้ไขการคัดลอก"; +$LANG["text_option_list_group_explanation"] = "ในกรณีนี้คือเลือกที่จะช่วยให้กลุ่มตัวเลือกของคุณ วิธีการกลุ่มที่มีการแสดงขึ้นอยู่กับชนิดของเขตข้อมูลโดยใช้รายการตัวเลือกนี้"; +$LANG["text_option_list_page"] = "ปุ่มเช็คบ็อกซ์, dropdowns และหลายแบบเลื่อนลงเลือกเขตข้อมูลทั้งหมดให้ผู้ใช้ที่มีหลายตัวเลือกจากที่พวกเขาสามารถเลือกอย่างใดอย่างหนึ่งหรือหลายรายการ ในเครื่องมือแบบฟอร์มเหล่านี้เป็นที่รู้จักกันเป็นรายการตัวเลือก โดยทั่วไปเหล่านี้ถูกสร้างขึ้นโดยอัตโนมัติโดย เพิ่มรูปแบบภายนอก กระบวนการ แต่คุณสามารถเพิ่มหรือแก้ไขรายการตัวเลือกของคุณด้านล่างหากมีการเปลี่ยนแปลงเนื้อหาของฟอร์มของคุณหรือคุณสร้างเขตข้อมูลที่ใช้ภายในเท่านั้น"; +$LANG["text_option_list_used_by_fields"] = "รายการตัวเลือกนี้ถูกใช้โดยรูปแบบเขตข้อมูลหลาย ถ้าคุณปรับปรุงข้อมูลด้านล่างก็จะมีการเปลี่ยนแปลงสำหรับเขตข้อมูลทั้งหมด (โปรดดู แบบฟอร์มข้อมูล แท็บเพื่อดูรายการของเขตข้อมูล) หากคุณต้องการปรับปรุงค่าสำหรับหนึ่งหรือส่วนย่อยของเขตข้อมูลที่กำหนดในปัจจุบันเป็น คลิกที่นี่ เพื่อสร้างรายการตัวเลือกใหม่ที่มีค่าเดียวกันเป็นแบบนี้ จากนั้นคุณสามารถกำหนดเขตข้อมูลฟอร์มที่คุณต้องการลงในกลุ่มใหม่"; +$LANG["text_public_form_omit_list_page"] = "รูป แบบ สาธารณะ ให้ คุณ ประโยชน์ ของ การ ให้ ทุก บัญชี ลูกค้า เข้าถึง ได้ โดย ไม่ ต้อง กำหนด เอง ลูกค้า แต่ละ พวก เขา. หน้า นี้ ช่วย ให้ คุณ สามารถ หา ลูกค้า ผู้ ที่ ไม่ สามารถ เข้า ใช้ แบบ ฟอร์ม นี้ แม้ว่า รูป แบบ จะ ถูก ระบุ ว่า เป็น สาธารณะ."; +$LANG["text_public_view_omit_list_page"] = "มุม มอง สาธารณะ ให้ คุณ ประโยชน์ ของ การ ให้ ทุก บัญชี ลูกค้า เข้าถึง ได้ โดย ไม่ ต้อง กำหนด เอง ลูกค้า แต่ละ พวก เขา. หน้า นี้ ช่วย ให้ คุณ สามารถ หา ลูกค้า ผู้ ที่ ไม่ สามารถ เข้าถึง นี้ ดู เฉพาะ."; +$LANG["text_reference_tab_info"] = "หน้านี้จะแสดงรายการตัวยึดตำแหน่งทั้งหมดที่ใช้ได้สำหรับแบบฟอร์มของคุณ ตัวยึดเป็นสตริงซึ่งสามารถใช้ในแม่แบบของอีเมลและเขตข้อมูลที่มีเครื่องหมายไอคอนตัวยึดพิเศษ . เมื่อป้อนลงในเขตข้อมูลที่พวกเขาจะถูกแปลงเป็นแบบไดนามิกที่ค่าที่เหมาะสมเมื่อเขตข้อมูลถูกเข้าชมหรืออีเมลที่ถูกส่ง"; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "ตรวจ สอบ เอกสาร ของ ผู้ ใช้"; +$LANG["text_send_email_from_edit_submission_page"] = "ตัว รวม ส่ง อีเมล จาก หน้า แก้ไข การ ส่ง นี้"; +$LANG["text_smart_fill_option_list_problem"] = "เราไม่สามารถสมาร์ทเติมตัวเลือกเขตข้อมูลของคุณ แต่เป็นทางเลือกที่คุณสามารถลองอัปโหลดสำเนาของเพจแบบฟอร์มของคุณในฟิลด์ด้านล่าง หมายเหตุ : ไม่ต้องอัปโหลดหน้า PHP ดิบ (หรือโค้ดด้านเซิร์ฟเวอร์อื่น ๆ ) -- เพียงแค่อัปโหลดรุ่น HTML ที่จะได้รับนี้ดูและบันทึกหน้าเว็บจากเว็บเบราเซอร์ของคุณ"; +$LANG["text_submission_ip_address"] = "IP Address ของ ผู้ ใช้ ที่ ได้ ส่ง เอกสาร."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "ใช้ แบบ ฟอร์ม ด้าน ล่าง เพื่อ ดู ตัว เอง หรือ ส่ง อีเมล ได้ จาก อีเมล นี้ แม่. อีเมล ถูก ส่ง เฉพาะ อีเมล์ ระบุ ไว้ ด้าน ล่าง นั้น หลัก ซี ซี และ ผู้รับ สำเนา ลับ ที่ อยู่ อีเมล ที่ ไม่มี การ ทดสอบ ขณะ."; +$LANG["text_test_email_templates_no_submissions"] = "เพื่อ ทดสอบ อีเมล ของ คุณ แม่ คุณ ต้อง ใส่ ผ่าน การ ส่ง ฟอร์ม อย่าง น้อย หนึ่ง."; +$LANG["text_theme_page_intro"] = "หน้า นี้ แสดง ทุก รูป แบบ ของ. คลิก ที่ ภาพ เพื่อ ดู ตัวอย่าง ขนาด ใหญ่ สไตล์ ชุด รูป แบบ ของ. "ใช้" ช่อง ทำ เครื่องหมาย กำหนด หรือ ไม่ theme ที่ อาจ เลือก จาก ลูกค้า. เพื่อ ดู รูป ทั้งหมด โปรด เยี่ยม ชม เว็บไซต์ Form Tools."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: การ เพิ่ม รูป แบบ ครั้ง แรก ของ คุณ"; +$LANG["text_unique_submission_id"] = "ส่ง เฉพาะ ID."; +$LANG["text_unused_option_list"] = "รายการตัวเลือกนี้จะไม่ถูกใช้โดยรูปแบบเขตข้อมูลใด ๆ"; +$LANG["text_upgraded"] = "การ ติด ตั้ง ของ คุณ ถูก ปรับ เพิ่ม {\$version})"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "รายการตัวเลือกนี้ถูกใช้โดยสาขาต่อไปนี้"; +$LANG["text_view_fields_info"] = "แท็บนี้จะควบคุมการที่เขตข้อมูลที่แสดงขึ้นเมื่อมีการแก้ไขการส่งในมุมมองนี้คำสั่งของพวกเขาและไม่ว่าจะเป็นที่สามารถแก้ไขได้หรือไม่"; +$LANG["text_view_tab_summary"] = "แท็บนี้จะช่วยให้คุณสามารถสร้างวิธีการที่แตกต่างกันไปยังกลุ่มและจัดเรียงข้อมูลของคุณ อ่านช่วยให้คุณสร้างกลุ่มย่อยที่กำหนดเองของข้อมูลในแบบฟอร์มของคุณเพื่อให้แยกมันเป็นชิ้นจัดการและเพื่อ จำกัด สิ่งที่ลูกค้าอาจจะเห็นหรือแก้ไข"; +$LANG["validation_account_disabled"] = "ขออภัย บัญชี ของ คุณ ถูก ปิด."; +$LANG["validation_account_not_recognized"] = "ขออภัย ชื่อ ผู้ ใช้ ที่ ไม่ เป็น ที่ รู้จัก."; +$LANG["validation_account_not_recognized_info"] = "ขออภัย ชื่อ ผู้ ใช้ ที่ ไม่ พบ. โปรด ลอง อีก ครั้ง หรือ ติดต่อ ผู้ ดูแล เว็บไซต์ ที่ อยู่ ด้าน ล่าง."; +$LANG["validation_account_pending"] = "บัญชี ผู้ ใช้ ของ คุณ รอ การ อนุมัติ โดย ผู้ ดูแล."; +$LANG["validation_check_delete_client"] = "คุณ แน่ใจ หรือ ว่า ต้องการ ลบ บัญชี ของ ลูกค้า นี้"; +$LANG["validation_client_password_missing_number"] = "รหัสผ่านของลูกค้าจะต้องมีอย่างน้อยหนึ่งตัวเลข (0-9)"; +$LANG["validation_client_password_missing_special_char"] = "รหัสผ่านของลูกค้าจะต้องมีอย่างน้อยหนึ่งตัวอักษรต่อไปนี้ : {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "รหัสผ่านของลูกค้าจะต้องมีหนังสืออย่างน้อยหนึ่งตัวพิมพ์ใหญ่"; +$LANG["validation_client_password_too_short"] = "รหัสผ่านลูกค้าต้องมีอย่างน้อย {\$number} ตัวอักษร"; +$LANG["validation_col_name_is_reserved_word"] = "ขออภัย ชื่อ คอลัมน์ ฐาน ข้อมูล งาน reserved ใน MySQL เป็น. โปรด เปลี่ยน ชื่อ มัน"; +$LANG["validation_db_name"] = "ชื่อฐานข้อมูลต้องไม่มีเครื่องหมายจุดหรือเครื่องหมายทับ"; +$LANG["validation_db_not_updated_invalid_input"] = "ฐาน ข้อมูล ไม่ สามารถ ปรับปรุง. โปรด ตรวจ สอบ ว่า ค่า ที่ คุณ ป้อน ถูก ต้อง."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "ขออภัย ผู้ ดูแล เริ่ม ต้น และ รูป แบบ ของ ลูกค้า ต้อง ใช้ งาน ตลอด เวลา."; +$LANG["validation_default_phone_num_required"] = "กรุณากรอกข้อมูลในหมายเลขโทรศัพท์ที่เต็มรูปแบบสำหรับที่ <b> { \$ เขต} </ b> -- ตัวเลขเท่านั้น"; +$LANG["validation_default_rule_alpha"] = "กรุณาเพียงป้อนตัวอักษรและตัวเลขสำหรับ <b> {เขต \$} </ b>"; +$LANG["validation_default_rule_letters_only"] = "กรุณาป้อนตัวอักษรเพียงอย่างเดียวสำหรับการ <b> เขต { \$} </ b>"; +$LANG["validation_default_rule_numbers_only"] = "กรุณาเพียงใส่ตัวเลขสำหรับ <b> {เขต \$} </ b>"; +$LANG["validation_default_rule_required"] = "กรุณาป้อนค่าสำหรับเขตข้อมูล <b> { \$} </ b>"; +$LANG["validation_default_rule_valid_email"] = "กรุณาใส่ที่อยู่อีเมลที่ถูกต้องสำหรับเขตข้อมูล <b> { \$} </ b>"; +$LANG["validation_delete_form_confirm"] = "โปรด ทำ เครื่องหมาย ที่ ช่อง เพื่อ ยืนยัน ว่า คุณ ต้องการ ลบ แบบ ฟอร์ม นี้."; +$LANG["validation_delete_non_empty_option_list"] = "คำเตือน! รายการตัวเลือกนี้ถูกใช้โดยหนึ่งหรือมากกว่าหนึ่งเขตข้อมูลฟอร์ม การลบมันจะทำให้เขตข้อมูลเหล่านั้นยุติการทำงานอย่างถูกต้อง"; +$LANG["validation_display_names_incomplete"] = "โปรด ป้อน ค่า สำหรับ แสดง ชื่อ หรือ คลิก ตัว เลือก Smart กรอก ใส่ พวก เขา แบบ ไดนามิก."; +$LANG["validation_duplicate_form_field_name"] = "คุณไม่สามารถมีเขตข้อมูลหลายเขตที่มีชื่อเขตข้อมูลเดียวกัน"; +$LANG["validation_email_not_found_or_invalid"] = "ขออภัย อีเมล ที่ เกี่ยวข้อง กับ บัญชี ของ คุณ อาจ ไม่มี อยู่ หรือ ไม่ ถูก ต้อง."; +$LANG["validation_folder_invalid_permissions"] = "เพื่อ ใช้ ทดสอบ นี้ สิทธิ จะ ต้อง มี การ ตั้ง ใน โฟลเดอร์ อัป โหลด เพื่อ ให้ สามารถ อ่าน และ เขียน ไฟล์ (777 ใน Unix)."; +$LANG["validation_folder_not_writable"] = "โฟลเดอร์ นี้ ไม่ writeable."; +$LANG["validation_internal_form_too_many_fields"] = "ขออภัย, คุณสามารถสร้างฟอร์มที่มีเพียง 1,000 สาขาหรือน้อยกว่า"; +$LANG["validation_invalid_admin_email"] = "โปรด ป้อน ที่ อยู่ อีเมล ที่ ถูก ต้อง ของ adminstrator."; +$LANG["validation_invalid_admin_username"] = "ชื่อผู้ใช้ของคุณเท่านั้นที่อาจประกอบด้วยตัวอักษร (az และ 0-9)"; +$LANG["validation_invalid_client_username"] = "ชื่อ ผู้ ใช้ ของ ลูกค้า อาจ ประกอบด้วย ตัว อักษร และ ตัวเลข (az และ 0-9)."; +$LANG["validation_invalid_client_username2"] = "ขออภัย ชื่อ ผู้ ใช้ ของ เฉพาะ อาจ จะ มี ตัว อักษร ตัวเลข และ ตัว อักษร ขีด เส้น ใต้. กรุณา กรอก ชื่อ ผู้ ใช้ ใหม่."; +$LANG["validation_invalid_column_name"] = "ชื่อคอลัมน์อาจเป็นเพียงตัวเลขและตัวอักษร (az, 0-9) กรุณาตรวจสอบชื่อคอลัมน์"; +$LANG["validation_invalid_custom_from_email"] = "โปรด ป้อน เอง ถูก ต้อง 'จาก' ที่ อยู่ อีเมล."; +$LANG["validation_invalid_custom_reply_to_email"] = "โปรด ป้อน เอง ถูก ต้อง 'ตอบ กลับ' ที่ อยู่ อีเมล."; +$LANG["validation_invalid_default_sessions_timeout"] = "กรุณา ป้อน ค่า ที่ ถูก ต้อง (จำนวน) สำหรับ เริ่ม ต้น การ หยุด พัก ชั่วคราว ช่วง."; +$LANG["validation_invalid_email"] = "โปรด ป้อน ที่ อยู่ อีเมล ที่ ถูก ต้อง."; +$LANG["validation_invalid_email_id"] = "ขออภัย ที่ อีเมล ที่ ไม่ ถูก ต้อง ID."; +$LANG["validation_invalid_folder"] = "ขออภัย นี้ ไม่ ปรากฏ เป็น โฟลเดอร์ ที่ ถูก ต้อง."; +$LANG["validation_invalid_form_field_names"] = "ช่อง แบบ ฟอร์ม ได้ เฉพาะ ตัวเลข และ underscores (az, 0-9, _) มี ช่อง ว่าง no."; +$LANG["validation_invalid_num_clients_per_page"] = "กรุณา เพียง ใส่ ตัวเลข ใน ช่อง ลูกค้า หมายเลข Per Page."; +$LANG["validation_invalid_num_emails_per_page"] = "กรุณา เพียง ใส่ ตัวเลข สำหรับ อีเมล ต่อ หน้า."; +$LANG["validation_invalid_num_form_fields"] = "กรุณาใส่เฉพาะตัวเลขในจำนวนของเขตข้อมูลที่เขตข้อมูลที่"; +$LANG["validation_invalid_num_forms_per_page"] = "กรุณา เพียง ใส่ ตัวเลข ใน แบบ หมายเลข ต่อ ฟิลด์ Page."; +$LANG["validation_invalid_num_menus_per_page"] = "กรุณา เพียง ใส่ ตัวเลข สำหรับ เมนู ต่อ หน้า."; +$LANG["validation_invalid_num_modules_per_page"] = "กรุณา เพียง ใส่ ตัวเลข ใน ช่อง หมายเลข Modules Per Page."; +$LANG["validation_invalid_num_option_lists_per_page"] = "กรุณาใส่เฉพาะตัวเลขในตัวเลือกของ Num ต่อรายการเขตข้อมูลหน้า"; +$LANG["validation_invalid_num_submissions_per_page"] = "กรุณา กรอก หมายเลข ที่ ถูก ต้อง ของ การ ส่ง ต่อ หน้า."; +$LANG["validation_invalid_sessions_timeout"] = "โปรด ป้อน การ หยุด พัก ชั่วคราว งาน ที่ ถูก ต้อง (integers เท่านั้น)."; +$LANG["validation_invalid_tab_assign_values"] = "กรุณา เพียง ใส่ หมายเลข ใน 'จาก' และ 'ช่อง ให้'."; +$LANG["validation_invalid_table_prefix"] = "กรุณาใส่คำนำหน้าฐานข้อมูลที่ประกอบด้วยตัวอักษรและเครื่องหมายขีดล่างเท่านั้น"; +$LANG["validation_invalid_upload_folder"] = "การ ติด ตั้ง เซิร์ฟเวอร์ ของ คุณ ใน PHP มี การ ตั้ง ค่า ที่ ไม่ ถูก ต้อง สำหรับ ค่า upload_tmp_dir. "{\$upload_folder}" ไม่ใช่ โฟลเดอร์ ที่ ถูก ต้อง."; +$LANG["validation_invalid_url"] = "โปรด ป้อน URL ที่ ถูก ต้อง."; +$LANG["validation_invalid_username"] = "ชื่อ ผู้ ใช้ ของ คุณ อาจ ประกอบด้วย ตัว อักษร และ ตัวเลข (az และ 0-9)."; +$LANG["validation_is_form_active"] = "โปรด ระบุ ว่า รูป แบบ ใช้ งาน ได้ หรือ ไม่."; +$LANG["validation_menu_name_taken"] = "ขออภัย ชื่อ เมนู นี้ เอา ไว้ แล้ว. กรุณา เลือก ชื่อ ใหม่."; +$LANG["validation_modules_search_no_status"] = "กรุณาเลือกช่องทำเครื่องหมายทั้งเปิดหรือปิด"; +$LANG["validation_no_access_type"] = "กรุณา กรอก แบบ เข้าถึง."; +$LANG["validation_no_account_logout_url"] = "โปรด ใส่ URL ออก จาก ระบบ ของ คุณ."; +$LANG["validation_no_account_password_confirmed"] = "โปรด ป้อน รหัส ผ่าน ใหม่."; +$LANG["validation_no_account_password_confirmed2"] = "โปรดป้อนรหัสผ่านใหม่"; +$LANG["validation_no_admin_email"] = "โปรด ป้อน ที่ อยู่ อีเมล ผู้ ดูแล ระบบ."; +$LANG["validation_no_admin_theme"] = "โปรด เลือก theme สำหรับ บัญชี ผู้ ดูแล."; +$LANG["validation_no_admin_theme_swatch"] = "กรุณาเลือกแถบสำหรับรูปแบบของผู้ดูแลระบบ"; +$LANG["validation_no_client_email"] = "โปรด ป้อน ที่ อยู่ อีเมล ของ ลูกค้า."; +$LANG["validation_no_client_first_name"] = "กรุณา ใส่ ชื่อ ของ ลูกค้า."; +$LANG["validation_no_client_last_name"] = "กรุณา กรอก นามสกุล ของ ลูกค้า."; +$LANG["validation_no_client_login_page"] = "โปรด ระบุ ที่ หน้า client ควร จะ เปลี่ยน เส้นทาง ไป เมื่อ พวก เขา ได้ เข้า สู่ ระบบ"; +$LANG["validation_no_client_password"] = "กรุณา ใส่ รหัส ผ่าน ของ ลูกค้า."; +$LANG["validation_no_client_theme_swatch"] = "กรุณาเลือกแถบเริ่มต้นสำหรับบัญชีลูกค้า"; +$LANG["validation_no_client_username"] = "กรุณา ใส่ ชื่อ ของ ลูกค้า."; +$LANG["validation_no_column_name"] = "กรุณาใส่ชื่อคอลัมน์ทั้งหมดหรือคลิกที่ปุ่มสมาร์ทเติมโดยอัตโนมัติกรอกพวกเขา"; +$LANG["validation_no_column_selected"] = "โปรด เลือก อย่าง น้อย หนึ่ง ฟิลด์ จะ ปรากฏ เป็น คอลัมน์ ใน หน้า รายการ ส่ง."; +$LANG["validation_no_custom_from_email"] = "โปรด ป้อน ที่ กำหนด เอง 'จาก' ที่ อยู่ อีเมล."; +$LANG["validation_no_custom_recipient_email"] = "โปรด ป้อน ที่ อยู่ อีเมล ที่ กำหนด เอง รับ."; +$LANG["validation_no_custom_reply_to_email"] = "กรุณา ใส่ เอง 'ตอบ กลับ' ที่ อยู่ อีเมล."; +$LANG["validation_no_date_format"] = "กรุณา ใส่ รูป แบบ วัน."; +$LANG["validation_no_db_column_single"] = "กรุณากรอกชื่อคอลัมน์ฐานข้อมูล"; +$LANG["validation_no_db_hostname"] = "กรุณากรอกชื่อโฮสต์ฐานข้อมูล"; +$LANG["validation_no_db_name"] = "กรุณากรอกชื่อฐานข้อมูล"; +$LANG["validation_no_db_username"] = "ใส่ชื่อบัญชีฐานข้อมูล"; +$LANG["validation_no_default_client_theme"] = "กรุณา เลือก ธีม เริ่ม ต้น สำหรับ ทุก บัญชี ลูกค้า ใหม่."; +$LANG["validation_no_default_language"] = "โปรด เลือก ภาษา เริ่ม ต้น สำหรับ การ ติด ตั้ง ของ แบบ ฟอร์ม Tools."; +$LANG["validation_no_default_sessions_timeout"] = "โปรด ป้อน การ หยุด พัก ชั่วคราว ช่วง เริ่ม ต้น สำหรับ บัญชี ผู้ ใช้."; +$LANG["validation_no_display_text"] = "กรุณาใส่ข้อความที่แสดงสำหรับแต่ละเขตข้อมูล"; +$LANG["validation_no_display_text_single"] = "โปรดป้อนค่าการแสดงผลข้อความ"; +$LANG["validation_no_edit_submission_page_label"] = "กรุณา กรอก ฉลาก แก้ไข หน้า ส่ง."; +$LANG["validation_no_email"] = "โปรด ป้อน ที่ อยู่ อีเมล ของ คุณ."; +$LANG["validation_no_email_config_field"] = "โปรด ระบุ ด้าน รูป แบบ ซึ่ง เป็น ช่อง อีเมล."; +$LANG["validation_no_email_content"] = "โปรด ใส่ เนื้อหา ที่ อีเมล สำหรับ อย่าง น้อย หนึ่ง รูป แบบ (HTML หรือ ข้อความ)."; +$LANG["validation_no_email_from_field"] = "กรุณา อีเมล 'จาก ช่อง'."; +$LANG["validation_no_email_template_name"] = "กรุณา ใส่ อีเมล ชื่อ เทมเพลท."; +$LANG["validation_no_email_template_view_id"] = "โปรด เลือก ดู ที่ อีเมล นี้ แม่ ควร จะ แม ป."; +$LANG["validation_no_email_template_view_mapping_value"] = "โปรด ระบุ เมื่อ อีเมล ที่ จะ ส่ง."; +$LANG["validation_no_enabled_themes"] = "โปรด ตรวจ สอบ ว่า อย่าง น้อย หนึ่ง เรื่อง ใช้."; +$LANG["validation_no_first_name"] = "กรุณา ใส่ ชื่อ ของ คุณ."; +$LANG["validation_no_form_field_name"] = "กรุณา ป้อน ชื่อ ฟิลด์ แบบ ฟอร์ม."; +$LANG["validation_no_form_field_single"] = "โปรดป้อนค่าเขตข้อมูลฟอร์ม"; +$LANG["validation_no_form_id"] = "แบบ ฟอร์ม ID ไม่ ได้ ระบุ. กรุณา ออก และ ลอง อีก ครั้ง."; +$LANG["validation_no_form_name"] = "กรุณา ใส่ ชื่อ ฟอร์ม."; +$LANG["validation_no_form_url"] = "โปรด ป้อน URL แบบ ฟอร์ม."; +$LANG["validation_no_last_name"] = "กรุณา กรอก นามสกุล ของ คุณ."; +$LANG["validation_no_login_page"] = "โปรด ระบุ หน้าที่ คุณ ต้องการ ที่ จะ ถูก ส่ง แต่ละ ครั้ง ที่ คุณ เข้า สู่ ระบบ"; +$LANG["validation_no_logout_url"] = "โปรด ป้อน URL ออก จาก ระบบ."; +$LANG["validation_no_main_email_recipient"] = "กรุณา กรอก อีเมล์ ผู้รับ อย่าง น้อย หนึ่ง หลัก (กล่าว คือ ไม่ใช่ ซี ซี หรือ สำเนา ลับ)."; +$LANG["validation_no_menu"] = "โปรด เลือก เมนู สำหรับ บัญชี ผู้ ใช้ นี้."; +$LANG["validation_no_menu_id"] = "โปรด เลือก เมนู."; +$LANG["validation_no_num_clients_per_page"] = "กรุณา กรอก จำนวน บัญชี ลูกค้า ต่อ หน้า."; +$LANG["validation_no_num_emails_per_page"] = "โปรด ป้อน หมายเลข ของ อีเมล์ ใน รายการ ต่อ หน้า."; +$LANG["validation_no_num_form_fields"] = "กรุณากรอกหมายเลขของเขตข้อมูลสำหรับฟอร์มของคุณ"; +$LANG["validation_no_num_forms_per_page"] = "โปรด ป้อน หมายเลข ของ รูป แบบ ต่อ หน้า."; +$LANG["validation_no_num_menus_per_page"] = "โปรด ป้อน หมายเลข ของ เมนู รายการ ต่อ หน้า."; +$LANG["validation_no_num_modules_per_page"] = "โปรด ป้อน หมายเลข ของ โมดูล ต่อ หน้า."; +$LANG["validation_no_num_option_lists_per_page"] = "กรุณากรอกหมายเลขที่ตัวเลือกของรายการต่อหน้า"; +$LANG["validation_no_num_submissions_per_page"] = "กรุณา กรอก จำนวน การ ส่ง ที่ จะ แสดง ต่อหน้า."; +$LANG["validation_no_option_list_name"] = "กรุณาใส่ชื่อของรายการตัวเลือก"; +$LANG["validation_no_page_titles"] = "โปรด ป้อน ชื่อ หน้า เริ่ม ต้น สำหรับ บัญชี ผู้ ใช้."; +$LANG["validation_no_password"] = "กรุณา ใส่ รหัส ผ่าน."; +$LANG["validation_no_program_name"] = "กรุณา ใส่ ชื่อ โปรแกรม."; +$LANG["validation_no_second_password"] = "โปรดป้อนรหัสผ่าน"; +$LANG["validation_no_sessions_timeout"] = "กรุณา ใส่ หมด เวลา เซสชัน."; +$LANG["validation_no_smart_fill_values"] = "กรุณา ใส่ ชื่อ ฟิลด์ รูป แบบ และ URL ของ รูป แบบ."; +$LANG["validation_no_table_prefix"] = "กรุณาใส่คำนำหน้าฐานข้อมูล"; +$LANG["validation_no_tabs_defined"] = "แท็ บ ไม่มี กำหนด"; +$LANG["validation_no_test_email_recipient"] = "โปรด ป้อน ที่ อยู่ อีเมล ของ ที่ เรา จะ ส่ง อีเมล์ ทดสอบ."; +$LANG["validation_no_test_email_submission_id"] = "โปรด ป้อน การ ส่ง รหัส."; +$LANG["validation_no_theme"] = "กรุณา เลือก ธีม."; +$LANG["validation_no_theme_swatch"] = "กรุณาเลือกแถบสำหรับรูปแบบที่เลือกไว้"; +$LANG["validation_no_timezone_offset"] = "กรุณา กรอก เขต เวลา ชดเชย."; +$LANG["validation_no_titles"] = "กรุณา กรอก ชื่อ หน้า."; +$LANG["validation_no_two_column_names"] = "ขออภัย คุณ ไม่ สามารถ เข้า สู่ ฐาน ข้อมูล ชื่อ เดียวกัน สอง คอลัมน์."; +$LANG["validation_no_ui_language"] = "โปรด เลือก ภาษา สำหรับ อินเตอร์เฟส."; +$LANG["validation_no_url"] = "โปรด ใส่ URL."; +$LANG["validation_no_username"] = "กรุณา ใส่ ชื่อ ของ คุณ."; +$LANG["validation_no_username_or_js"] = "คุณ ต้อง ป้อน ชื่อ ผู้ ใช้ ของ คุณ. กรุณา เปิด ใช้ งาน จาวา สคริปต์ ใน เบ รา เซอร์."; +$LANG["validation_no_view_fields"] = "ดู ของ คุณ ไม่มี ช่อง ใด ๆ คุณ ต้อง กำหนด อย่าง น้อย หนึ่ง ฟิลด์ เพื่อ จะ มี บาง อย่าง ที่ จะ แสดง ใน มุม มอง ของ คุณ."; +$LANG["validation_no_view_fields_selected"] = "โปรด เลือก อย่าง น้อย หนึ่ง ช่อง เพื่อ เพิ่ม ดู."; +$LANG["validation_no_view_name"] = "กรุณา ใส่ ชื่อ ของ ดู ของ คุณ."; +$LANG["validation_num_rows_to_add"] = "กรุณา ป้อน จำนวน แถว ที่ จะ เพิ่ม."; +$LANG["validation_option_list_name_taken"] = "ขออภัยนี้ชื่อรายการตัวเลือกถูกใช้ไปแล้ว กรุณาเลือกชื่อใหม่"; +$LANG["validation_password_in_password_history"] = "เพื่อความปลอดภัยคุณจะไม่สามารถป้อนรหัสผ่านเดียวกันใด {\$history_size} รหัส กรุณาใส่รหัสผ่านที่แตกต่างกัน"; +$LANG["validation_passwords_different"] = "โปรด ตรวจ สอบ ว่า มี รหัส ผ่าน เดียวกัน."; +$LANG["validation_please_enter_search_date_range"] = "โปรด เลือก ช่วง วัน ที่ ค้นหา."; +$LANG["validation_please_enter_search_keyword"] = "กรุณา ป้อน คำ ค้นหา."; +$LANG["validation_select_field_type"] = "กรุณา เลือก ประเภท ฟิลด์."; +$LANG["validation_select_submissions_to_copy"] = "โปรดเลือกการส่งที่คุณต้องการคัดลอก"; +$LANG["validation_select_submissions_to_delete"] = "กรุณา เลือก การ ส่ง ที่ คุณ ต้องการ ลบ."; +$LANG["validation_smart_fill_cannot_fill"] = "ขออภัย เรา ไม่ สามารถ กรอก ฟิลด์ นี้."; +$LANG["validation_smart_fill_invalid_field_type"] = "เรา ไม่ สามารถ หา ช่อง แต่ ไม่ ได้ แบบ เลื่อน ลง หนึ่ง ช่อง หรือ กลุ่ม วิทยุ."; +$LANG["validation_smart_fill_no_field_found"] = "ขออภัย เรา ไม่ พบ ฟิลด์ ฟอร์ม ที่ มี ชื่อ ใน หน้า ระบุ ว่า."; +$LANG["validation_smart_fill_no_page"] = "โปรด หา เพจ ที่ มี ช่อง ที่ คุณ ต้องการ Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "โปรด อัป โหลด หน้า ทั้งหมด ใน รูป แบบ ของ."; +$LANG["validation_upload_folder_not_writable"] = "อัป โหลด โฟลเดอร์ นี้ ชั่วคราว ระบุ โดย การ ติด ตั้ง PHP ของ คุณ ไม่ สามารถ เขียน ได้. จนกว่า นี้ คง ไฟล์ ไม่ สามารถ อัพโหลด ผ่าน แบบ ฟอร์ม Tools (หรือ โปรแกรม PHP อื่น ๆ). โปรด ติดต่อ ผู้ ให้ บริการ โฮสต์ ของ คุณ."; +$LANG["validation_upload_html_files_only"] = "โปรด อัป โหลด เฉพาะ ไฟล์ HTML."; +$LANG["validation_username_taken"] = "ขออภัย ชื่อ ผู้ ใช้ ที่ เป็น งาน แล้ว. กรุณา ป้อน ชื่อ ผู้ อื่น."; +$LANG["validation_wrong_password"] = "ขออภัย ที่ รหัส ผ่าน ไม่ ตรง กับ."; +$LANG["word_about"] = "เกี่ยวกับ"; +$LANG["word_access"] = "เข้าถึง"; +$LANG["word_account"] = "บัญชี"; +$LANG["word_account_sp"] = "บัญชีผู้ใช้"; +$LANG["word_accounts"] = "บัญชีผู้ใช้"; +$LANG["word_action"] = "ดำเนินการ"; +$LANG["word_active"] = "ใช้งาน"; +$LANG["word_add"] = "เพิ่ม"; +$LANG["word_add_rightarrow"] = "เพิ่ม »"; +$LANG["word_add_uc_rightarrow"] = "»เพิ่ม"; +$LANG["word_administration"] = "การจัดการระบบ"; +$LANG["word_administrator"] = "ผู้ดูแลระบบ"; +$LANG["word_after"] = "หลังจาก"; +$LANG["word_aquamarine"] = "พลอยสีฟ้า"; +$LANG["word_asc"] = "น้อยไปมาก"; +$LANG["word_author"] = "ผู้เขียน"; +$LANG["word_author_c"] = "ผู้เขียน:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«กลับ"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "ก่อน"; +$LANG["word_benefits"] = "สิทธิประโยชน์"; +$LANG["word_blue"] = "สีน้ำเงิน"; +$LANG["word_cancel"] = "ยกเลิก"; +$LANG["word_cc_c"] = "สำเนา:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "ช่องทำเครื่องหมาย"; +$LANG["word_checklist"] = "รายการตรวจสอบ"; +$LANG["word_client"] = "ลูกข่าย"; +$LANG["word_client_c"] = "ลูกข่าย:"; +$LANG["word_clients"] = "ลูกข่าย"; +$LANG["word_close"] = "ปิด"; +$LANG["word_code"] = "รหัส"; +$LANG["word_column"] = "คอลัมน์"; +$LANG["word_columns"] = "คอลัมน์"; +$LANG["word_columns_sp"] = "คอลัมน์ (s)"; +$LANG["word_complete"] = "เสร็จสมบูรณ์"; +$LANG["word_configuration"] = "การกำหนดค่า"; +$LANG["word_content"] = "เนื้อหา"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "»ต่อไป"; +$LANG["word_copy"] = "สำเนา"; +$LANG["word_custom"] = "กำหนดเอง"; +$LANG["word_data"] = "ข้อมูล"; +$LANG["word_date"] = "วันที่"; +$LANG["word_debugging_c"] = "แก้จุดบกพร่อง:"; +$LANG["word_delete"] = "ลบ"; +$LANG["word_desc"] = "มากไปน้อย"; +$LANG["word_direct"] = "Direct"; +$LANG["word_disabled"] = "ปิดการใช้งาน"; +$LANG["word_documentation"] = "เอกสารประกอบ"; +$LANG["word_done"] = "ทำได้"; +$LANG["word_drawbacks"] = "Drawbacks"; +$LANG["word_dropdown"] = "แบบเลื่อนลง"; +$LANG["word_edit"] = "แก้ไข"; +$LANG["word_editable"] = "สามารถแก้ไขได้"; +$LANG["word_email"] = "อีเมล์"; +$LANG["word_email_c"] = "อีเมล์:"; +$LANG["word_emails"] = "อีเมล์"; +$LANG["word_enabled"] = "เปิดใช้งาน"; +$LANG["word_equals"] = "เท่ากับ"; +$LANG["word_error"] = "ข้อผิดพลาด"; +$LANG["word_error_c"] = "ข้อผิดพลาด:"; +$LANG["word_examples_c"] = "ตัวอย่าง:"; +$LANG["word_external"] = "ภายนอก"; +$LANG["word_fail"] = "ล้มเหลว"; +$LANG["word_field"] = "ฟิลด์"; +$LANG["word_field_sp"] = "ฟิลด์"; +$LANG["word_fields"] = "ฟิลด์"; +$LANG["word_fields_sp"] = "เขต (s)"; +$LANG["word_file"] = "ไฟล์"; +$LANG["word_file_b_uc"] = "[ไฟล์]"; +$LANG["word_files"] = "ไฟล์"; +$LANG["word_filters"] = "กรอง"; +$LANG["word_filters_sp"] = "กรอง (s)"; +$LANG["word_for"] = "สำหรับ"; +$LANG["word_form"] = "แบบฟอร์ม"; +$LANG["word_form_c"] = "รูปแบบ:"; +$LANG["word_formatting"] = "การจัดรูปแบบ"; +$LANG["word_forms"] = "แบบฟอร์ม"; +$LANG["word_found"] = "พบ"; +$LANG["word_from"] = "จาก"; +$LANG["word_from_c"] = "จาก:"; +$LANG["word_general"] = "ทั่วไป"; +$LANG["word_green"] = "สีเขียว"; +$LANG["word_grey"] = "สีเทา"; +$LANG["word_height"] = "ความสูง"; +$LANG["word_help"] = "ช่วยเหลือ"; +$LANG["word_hidden"] = "ซ่อน"; +$LANG["word_highlight"] = "จุดเด่น"; +$LANG["word_horizontal"] = "แนวนอน"; +$LANG["word_hour"] = "ชั่วโมง"; +$LANG["word_hours"] = "ชั่วโมง"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "รูปภาพ"; +$LANG["word_incomplete"] = "ไม่สมบูรณ์"; +$LANG["word_install"] = "ติดตั้ง"; +$LANG["word_installation"] = "การติดตั้ง"; +$LANG["word_internal"] = "ภายใน"; +$LANG["word_language"] = "ภาษา"; +$LANG["word_large"] = "ขนาดใหญ่"; +$LANG["word_like"] = "ชอบ"; +$LANG["word_login"] = "ล็อกอิน"; +$LANG["word_logo"] = "โลโก้"; +$LANG["word_logout"] = "ออกจากระบบ"; +$LANG["word_main"] = "ค่าหลัก"; +$LANG["word_medium"] = "กลาง"; +$LANG["word_menu"] = "เมนู"; +$LANG["word_menus"] = "เมนู"; +$LANG["word_minutes"] = "นาที"; +$LANG["word_misc"] = "อื่นๆ"; +$LANG["word_module"] = "โมดูล"; +$LANG["word_modules"] = "โมดูล"; +$LANG["word_na"] = "ไม่มีข้อมูล"; +$LANG["word_name"] = "ชื่อ"; +$LANG["word_name_c"] = "ชื่อ:"; +$LANG["word_never"] = "ไม่เคย"; +$LANG["word_next_rightarrow"] = "ต่อไป »"; +$LANG["word_next_step_rightarrow"] = "ขั้นต่อไป »"; +$LANG["word_no"] = "ไม่ใช่"; +$LANG["word_none"] = "ไม่มี"; +$LANG["word_notes"] = "บันทึกย่อ"; +$LANG["word_notification"] = "แจ้งเตือน"; +$LANG["word_number"] = "หมายเลข"; +$LANG["word_off"] = "ปิด"; +$LANG["word_offline"] = "ออฟไลน์"; +$LANG["word_okay"] = "ถูก"; +$LANG["word_on"] = "บน"; +$LANG["word_online"] = "ออนไลน์"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "ตัวเลือก"; +$LANG["word_orange"] = "สีส้ม"; +$LANG["word_order"] = "จัดเรียง"; +$LANG["word_other"] = "อื่น ๆ"; +$LANG["word_other_c"] = "อื่น ๆ:"; +$LANG["word_page"] = "หน้า"; +$LANG["word_page_c"] = "หน้า:"; +$LANG["word_pass"] = "ผ่าน"; +$LANG["word_password"] = "รหัสผ่าน"; +$LANG["word_password_c"] = "รหัสผ่าน:"; +$LANG["word_pending"] = "กำลังดำเนินการ"; +$LANG["word_permissions"] = "สิทธิ"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«ย้อนกลับ"; +$LANG["word_private"] = "ส่วนตัว"; +$LANG["word_public"] = "สาธารณะ"; +$LANG["word_purple"] = "สีม่วง"; +$LANG["word_recipient"] = "ผู้รับ"; +$LANG["word_recipient_sp"] = "ผู้รับ"; +$LANG["word_red"] = "สีแดง"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "เอาออก"; +$LANG["word_remove_uc_leftarrow"] = "« เอาออก"; +$LANG["word_reply_to"] = "ตอบกลับไปยัง"; +$LANG["word_reply_to_c"] = "ตอบกลับไปยัง:"; +$LANG["word_required"] = "ที่จำเป็น"; +$LANG["word_reset"] = "ตั้งค่าใหม่"; +$LANG["word_resolved"] = "แก้ไขแล้ว"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "แถว"; +$LANG["word_search"] = "ค้นหา"; +$LANG["word_searchable"] = "ค้นหา"; +$LANG["word_select"] = "เลือก"; +$LANG["word_setting"] = "การตั้งค่า"; +$LANG["word_settings"] = "การตั้งค่า"; +$LANG["word_show"] = "แสดง"; +$LANG["word_size"] = "ขนาด"; +$LANG["word_skipped"] = "ข้าม"; +$LANG["word_small"] = "ขนาดเล็ก"; +$LANG["word_solution"] = "สารละลาย"; +$LANG["word_sortable"] = "จัดเรียง"; +$LANG["word_start"] = "เริ่ม"; +$LANG["word_status"] = "สถานะ"; +$LANG["word_string"] = "สตริง"; +$LANG["word_subject"] = "หัวข้อ"; +$LANG["word_subject_c"] = "หัวข้อ"; +$LANG["word_submenu"] = "เมนูย่อย"; +$LANG["word_submission"] = "การส่ง"; +$LANG["word_submissions"] = "การส่ง"; +$LANG["word_system"] = "ระบบ"; +$LANG["word_tab"] = "แท็บ"; +$LANG["word_tabs"] = "แท็บ"; +$LANG["word_tabs_sp"] = "แท็บ (s)"; +$LANG["word_test"] = "ทดสอบ"; +$LANG["word_text"] = "ข้อความ"; +$LANG["word_textarea"] = "พื้นที่ข้อความ"; +$LANG["word_textbox"] = "กล่องข้อความ"; +$LANG["word_theme"] = "ธีม"; +$LANG["word_themes"] = "ธีม"; +$LANG["word_time"] = "เวลา"; +$LANG["word_tiny"] = "จิ๋ว"; +$LANG["word_tips"] = "เคล็ดลับ"; +$LANG["word_today"] = "วันนี้"; +$LANG["word_truncate_q"] = "ตัด?"; +$LANG["word_uninstall"] = "ถอนการติดตั้ง"; +$LANG["word_unknown"] = "ไม่ทราบ"; +$LANG["word_update"] = "อัพเดต"; +$LANG["word_upgrade"] = "อัพเกรด"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "ผู้ใช้งาน"; +$LANG["word_username"] = "ชื่อผู้ใช้งาน"; +$LANG["word_username_c"] = "ชื่อผู้ใช้งาน:"; +$LANG["word_validation"] = "การตรวจสอบ"; +$LANG["word_value"] = "คุ้มค่า"; +$LANG["word_value_sp"] = "Value (s)"; +$LANG["word_verified"] = "การยืนยัน"; +$LANG["word_verify"] = "ตรวจสอบ"; +$LANG["word_version"] = "รุ่น"; +$LANG["word_vertical"] = "แนวตั้ง"; +$LANG["word_view"] = "ดู"; +$LANG["word_views"] = "ดู"; +$LANG["word_warning"] = "คำเตือน!"; +$LANG["word_warning_c"] = "คำเตือน:"; +$LANG["word_web"] = "เว็บ"; +$LANG["word_welcome"] = "ยินดีต้อนรับ!"; +$LANG["word_width_c"] = "กว้าง :"; +$LANG["word_words"] = "คำ"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "สีเหลือง"; +$LANG["word_yes"] = "ใช่"; \ No newline at end of file diff --git a/global/lang/tl.php b/global/lang/tl.php new file mode 100644 index 00000000..f6760cc2 --- /dev/null +++ b/global/lang/tl.php @@ -0,0 +1,1219 @@ +Babala!
    Ikaw ay napiling {\$ num_selected_on_page} submissions sa pahinang ito at {\$num_selected_on_other_page} sa iba pang mga pahina. Mangyaring pumili ng isa sa mga sumusunod na opsyon:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Babala! Ikaw ay hindi pinili ang anumang mga submissions sa pahinang ito ngunit ang napili mo {\$num_selected_on_other_pages} sa iba pang mga pahina. Mangyaring kumpirmahin na nais mong tanggalin ang mga submissions.
    "; +$LANG["confirm_delete_view"] = "Sigurado ka bang gusto mong burahin ang Tingnan?"; +$LANG["confirm_refresh_page"] = "Sigurado ka bang gusto mong i-refresh ang pahina? Ito ay mawawala ang anumang mga pagbabago na iyong ginawa."; +$LANG["confirm_save_change_before_redirect"] = "Ay na-update na ang isa o higit pang mga patlang. Nais mo bang i-save ang iyong mga pagbabago bago redirect?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Sigurado ka bang gusto mong Smart Punan ang mga database ng mga pangalan ng haligi? Ito ay papatungan ang inyong mga umiiral na halaga."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Pagpipiliang ito ang auto-bumubuo ng database pangalan sa hanay na batay sa sa Teksto ng mga patlang ng Display, kaya ang mga nilalaman ng talahanayan ng database ay mas madaling basahin."; +$LANG["confirm_smart_fill_display_names"] = "Sigurado ka bang gusto mong Smart Punan ang mga pangalan ng Display? Ito ay papatungan ang inyong mga umiiral na halaga."; +$LANG["confirm_ungroup_option_list"] = "Sigurado ka bang gusto mong ungroup ang opsyon na ito listahan? Lahat ng mga pagpipilian ay lumped sa isang solong, ungrouped listahan."; +$LANG["confirm_uninstall_module"] = "Sigurado ka bang gusto mong i-uninstall ang module na ito? Lahat ng mga module ng data ay mawawala."; +$LANG["date_AM"] = "PM"; +$LANG["date_Fri"] = "Fri"; +$LANG["date_Friday"] = "Biyernes"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "Lunes"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Sat"; +$LANG["date_Saturday"] = "Sabado"; +$LANG["date_Sun"] = "Araw"; +$LANG["date_Sunday"] = "Linggo"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Huwebes"; +$LANG["date_Tue"] = "Tue"; +$LANG["date_Tuesday"] = "Martes"; +$LANG["date_Wed"] = "Wed"; +$LANG["date_Wednesday"] = "Miyerkules"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Abril"; +$LANG["date_month_August"] = "Agosto"; +$LANG["date_month_December"] = "Disyembre"; +$LANG["date_month_February"] = "Pebrero"; +$LANG["date_month_January"] = "Enero"; +$LANG["date_month_July"] = "Hulyo"; +$LANG["date_month_June"] = "Hunyo"; +$LANG["date_month_March"] = "March"; +$LANG["date_month_May"] = "Maaaring"; +$LANG["date_month_November"] = "Nobyembre"; +$LANG["date_month_October"] = "Oktubre"; +$LANG["date_month_September"] = "Septiyembre"; +$LANG["date_month_short_Apr"] = "Abril"; +$LANG["date_month_short_Aug"] = "Agosto"; +$LANG["date_month_short_Dec"] = "Disyembre"; +$LANG["date_month_short_Feb"] = "Pebrero"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Hulyo"; +$LANG["date_month_short_Jun"] = "Hunyo"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Maaaring"; +$LANG["date_month_short_Nov"] = "Nobyembre"; +$LANG["date_month_short_Oct"] = "Oktubre"; +$LANG["date_month_short_Sep"] = "Septiyembre"; +$LANG["date_pm"] = "pm"; +$LANG["notify_account_deleted"] = "Ang user account ay tinanggal na."; +$LANG["notify_account_updated"] = "Ang iyong account ay matagumpay na na-update."; +$LANG["notify_add_display_values"] = "Magdagdag ng Display Halaga"; +$LANG["notify_admin_menu_updated"] = "Ang Pangangasiwa ng menu ay na-update."; +$LANG["notify_admin_theme_overridden"] = "Tema Ang tagapangasiwa ay mano-mano ang binigay nang importansiya."; +$LANG["notify_allow_url_fopen_not_set"] = "Paumanhin, ang pagsubok na ito ay hindi maaaring tumakbo sa inyong web server. Ito ay nangangailangan ng allow_url_fopen na naka-set sa 1 sa inyong php.ini file. Ang setting na ito payagan PHP upang ma-access ng mga file sa pamamagitan ng isang URL, na kung saan ay kinakailangan upang pugutan ng ulo sa pagsusulit na ito. Maaari mong pagsubok ito ng mano-mano sa pamamagitan ng pag-upload ng isang file sa folder na iyon sa pamamagitan ng FTP, at pagkatapos ay sinusubukan na ma-access ito sa URL na binigay."; +$LANG["notify_change_temp_password"] = "Log ka lang sa sa isang pansamantalang password. Dapat mong i-reset ang iyong password ngayon!"; +$LANG["notify_click_to_edit_new_submission"] = "Mag-click dito upang i-edit ang bagong pagsusumite."; +$LANG["notify_client_account_menus_updated"] = "Ang client account (s) ay na-update sa {\$menu_name} menu. Maaari na ninyong tanggalin ang mga menu na dating kaugnay sa ang account (s)."; +$LANG["notify_client_account_not_updated"] = "Ang client account ay hindi ma-update."; +$LANG["notify_client_account_themes_updated"] = "Ang client account (s) ay na-update sa {\$theme} tema. Maaari na ninyong i-disable ang tema na dating kaugnay sa ang account (s)."; +$LANG["notify_client_account_updated"] = "Ang client account ay matagumpay na na-update."; +$LANG["notify_client_menu_deleted"] = "Ang client menu ay tinanggal na."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Ang menu ay tinanggal na, ngunit ang mga sumusunod na mga client account na ngayon hindi na magkaroon ng isang menu! Kailangan mong i-update ang mga sumusunod na account:"; +$LANG["notify_client_menu_updated"] = "Ang client menu ay na-update."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Paumanhin, menu ng ka makatarungan tried tanggalin ay ginagamit na ng mga kliyente na nakalista sa ibaba. Upang tanggalin ang menu ay kailangan mo munang magtalaga ng mga kliyente sa iba pang mga menu. I-click ang pangalan ng client na i-edit na ang indibidwal na mga account, o magtalaga ng lahat ng mga account sa isang iba't ibang mga menu ng paggamit ng dropdown sa ibaba."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Paumanhin, isa sa mga themes ka na lamang ng kapansanan ay ginagamit na sa pamamagitan ng mga sumusunod na mga client account. Upang hindi paganahin ang tema ay kailangan mo munang magtalaga ng bawat isa nang client sa ibang tema. I-click ang pangalan ng client na i-edit na ang indibidwal na mga account, o magtalaga ng lahat ng mga account sa isang tema gamit ang dropdown sa ibaba."; +$LANG["notify_edit_email_fields_link"] = "Mag- click dito upang tukuyin kung aling mga form na mga patlang ang mga email na patlang, kaya maaari mong i-target ang mga ito sa iyong mga template ng email."; +$LANG["notify_edit_field_new_field"] = "Ito ay isang bagong patlang. Kailangan mong i-update ang pangunahing pahina bago magagawang ganap na i-edit ang patlang na ito."; +$LANG["notify_edit_option_list_after_save"] = "Kailangan mong pumili ng isang Listahan ng Pagpipilian at pagkatapos ay I-save ang mga Pagbabago bago magawang i-edit ito."; +$LANG["notify_email_field_config_deleted"] = "Ang email configuration ay tinanggal na."; +$LANG["notify_email_fields_not_updated"] = "Paumanhin, hindi namin magagawang i-update ang email na larangan."; +$LANG["notify_email_fields_updated"] = "Ang email na patlang na ito ay na-update."; +$LANG["notify_email_not_sent"] = "Paumanhin, ang email ay hindi naipadala. Mangyaring makipag-ugnayan sa administrator ng site sa address sa ibaba."; +$LANG["notify_email_not_sent_c"] = "Paumanhin, ang email ay hindi maipadala:"; +$LANG["notify_email_sent"] = "Ang email (s) ay naipadala na."; +$LANG["notify_email_template_deleted"] = "Ang email template ay tinanggal na."; +$LANG["notify_email_template_updated"] = "Ang email template ay na-update."; +$LANG["notify_enabled_module_list_updated"] = "Ang listahan ng mga naka-enable ang modules ay na-update."; +$LANG["notify_error_saving_fields"] = "Nagkaroon ng isang error sa pag-save ang mga patlang na."; +$LANG["notify_field_changes_saved"] = "Ang mga pagbabago sa iyong (mga) field ay nai-save."; +$LANG["notify_field_options_smart_filled"] = "Ang iyong mga patlang pagpipilian ay Smart napuno."; +$LANG["notify_field_selected"] = "Ang patlang ay napili. Mag-click dito upang makabalik sa pangunahing listahan ng mga patlang."; +$LANG["notify_field_updated"] = "Ang patlang na ito ay nai-update."; +$LANG["notify_file_not_uploaded"] = "Ang file ay hindi mai-upload."; +$LANG["notify_file_uploaded"] = "Ang file ay matagumpay na nai-upload."; +$LANG["notify_filters_not_updated"] = "Mayroong mali sa pag-update ng filter na ito ang pagsumite ng kliyente."; +$LANG["notify_filters_updated"] = "Ang pagsumite ng mga filter ay na-update na ito para sa mga kliyente."; +$LANG["notify_folder_correct_permissions"] = "Ang folder na ito ay may pahintulot ng tama."; +$LANG["notify_folder_url_match"] = "Ang mga folder at URL lalabas sa tama ang tumutugma."; +$LANG["notify_folder_url_no_access"] = "Ang pagsusuring ito ay hindi maaaring gumanap since PHP ay hindi ma-access na URL. Ito ay karaniwang sanhi ng password URL ay protektado ng isang. Htaccess file."; +$LANG["notify_folder_url_no_match"] = "Ang folder na ito-URL na kumbinasyon ay hindi lilitaw upang maging isang match."; +$LANG["notify_folder_url_unknown_error"] = "Isang hindi kilalang error na nangyari. Maaari mong pagsubok ito ng mano-mano sa pamamagitan ng pag-upload ng isang file sa folder na iyon sa pamamagitan ng FTP, at pagkatapos ay sinusubukan na ma-access ito sa URL na binigay."; +$LANG["notify_form_access_type_email_info"] = "Ang form na ito ay may access ng uri administrator, kaya walang kliente ay may access dito at hindi nakalista sa dropdown sa ibaba."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Paumanhin, ang isang form na may ID ay hindi umiiral."; +$LANG["notify_form_field_not_added"] = "Ang form na patlang ng '{\$fieldname}' ay hindi maaaring naidagdag."; +$LANG["notify_form_field_options_updated"] = "Ang form na pagpipilian sa patlang na ito ay na-update."; +$LANG["notify_form_field_removed"] = "Ang form na field ay matagumpay na natanggal."; +$LANG["notify_form_fields_removed"] = "Ang patlang ng dokumento ay matagumpay na tinanggal."; +$LANG["notify_form_not_updated_notify_admin"] = "Ang iyong form ay hindi maaaring-update. Mangyaring makipag-ugnayan sa administrator ng site upang iulat ang problema."; +$LANG["notify_form_settings_updated"] = "Ang iyong form ng mga setting ay matagumpay na na-update."; +$LANG["notify_form_submission_updated"] = "Ang form submission ay na-update."; +$LANG["notify_form_tabs_updated"] = "Ang mga tab na ito ay na-update."; +$LANG["notify_form_updated"] = "Ang form ay matagumpay na na-update."; +$LANG["notify_form_views_updated"] = "Ang mga form Pananaw ay na-update."; +$LANG["notify_install_invalid_db_info"] = "Paumanhin, hindi namin nagawang kumonekta sa database ng paggamit ng impormasyon na iyong ibinibigay. Ang mensahe ng error ang database ng bumalik ay: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Ang iyong form ay nagawa na! Maaari mong i-configure ang iyong form sa pamamagitan ng mga tab na ito."; +$LANG["notify_invalid_account_information_in_sessions"] = "Ang impormasyon sa account na naka-imbak sa mga sesyon ay hindi wasto. Mangyaring mag-log in muli sa ibaba."; +$LANG["notify_invalid_license_key"] = "Paumanhin, iyon ay hindi lumitaw na maging isang wastong license key. Mangyaring subukan ang pagpasok ng ito muli."; +$LANG["notify_invalid_permissions"] = "Hindi mo ay may pahintulot upang ma-access ang pahina na ito. Ikaw ay nakapag-log out na."; +$LANG["notify_invalid_search_dates"] = "Mangyaring gamitin ang datepicker upang magpasok ng isang may-bisang petsa o mga petsa."; +$LANG["notify_invalid_upload_folder"] = "Ang mga mag-upload ng folder ay alinman sa mga hindi balidong o hindi writable."; +$LANG["notify_lang_list_updated"] = "Ang mga magagamit na UI listahan ng mga wika ay na-update."; +$LANG["notify_login_info_emailed"] = "Ang iyong login impormasyon ay ipinadala sa iyo."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Oops, ang module na ito ay naka-install na!"; +$LANG["notify_module_installed"] = "Ang module ay na-install. Mag-click dito upang piliin ang module."; +$LANG["notify_module_list_updated"] = "Ang module na listahan ay na-update."; +$LANG["notify_module_uninstalled"] = "Ang module ay maa-uninstall."; +$LANG["notify_module_updated"] = "Ang {\$module} module ay na-update sa {\$version}. Mag-click dito upang piliin ang mga module."; +$LANG["notify_multi_field_selected"] = "Ang patlang ay napili. Mag-click dito upang tingnan at i-edit ang mga opsyon na patlang."; +$LANG["notify_multi_field_updated"] = "Ang patlang na ito ay nai-update. Ikaw ay maaaring ma-i-configure ang patlang na opsiyon pagkatapos set up ng form."; +$LANG["notify_multiple_fields_found"] = "Maramihang mga sangkap ay natagpuan sa patlang na ito ang pangalan ({\$field_name}). Ito ay maaaring mangyari kung ang iyong pahina ay naglalaman ng higit sa isang form o kung hindi ninyo sinasadyang pinangalanan ng isa sa iyong mga form sa katulad ng iba. Mangyaring pumili ng gusto mo mula sa listahan sa ibaba."; +$LANG["notify_new_default_view_created"] = "Ang isang bagong, View ng default na naglalaman ng lahat ng iyong mga patlang ng form ay nalikha na."; +$LANG["notify_new_submission_created"] = "Ang pagsumite Ang ay nalikha na. Maaari mong i-edit ito sa ibaba."; +$LANG["notify_no_account_id_in_sessions"] = "Walang mga user account ID ay natagpuan sa session. Mangyaring mag-log in muli sa ibaba."; +$LANG["notify_no_api_installed"] = "Wala kang API na naka-install"; +$LANG["notify_no_client_permissions"] = "Walang mga setting ng magagamit na i-edit."; +$LANG["notify_no_email_template_selected"] = "Mangyari lamang na piliin ang mga email na template."; +$LANG["notify_no_emails_defined"] = "Walang mga email ay tinukoy para sa form na ito. Upang magdagdag ng isang bagong isa, i-click ang button sa ibaba."; +$LANG["notify_no_field_settings"] = "Uri ng patlang na ito ay hindi naglalaman ng anumang karagdagang mga setting."; +$LANG["notify_no_fields_in_tab"] = "Ang tab na ito ay hindi naglalaman ng anumang larangan."; +$LANG["notify_no_option_lists"] = "May ay walang pagpipilian listahan tinukoy. I-click ang pindutan sa ibaba upang lumikha ng isang bagong isa."; +$LANG["notify_no_test_submission"] = "Form Kasangkapan ay hindi natanggap ang isang matagumpay na ang pagsumite ng pagsubok pa."; +$LANG["notify_no_user_email_fields_configured"] = "Tandaan: kung nais mong magpadala ng email sa anumang email address na iyon ay kasama sa form, kailangan mo munang i-configure ang form sa mga patlang ng email."; +$LANG["notify_no_views"] = "Ang iyong form ay hindi anumang Views set up! Kakailanganin mo ang hindi bababa sa isang View upang pamahalaan ang iyong data sa form."; +$LANG["notify_no_views_assigned_to_client_form"] = "Lumalabas na ang iyong user account ay hindi pa naka-assign sa anumang Views form, kaya hindi mo magagawang makita ang anumang data. Mangyaring makipag-ugnay sa administrator para sa karagdagang tulong."; +$LANG["notify_no_views_defined"] = "Wala kang anumang Views tinukoy. Ikaw ay hindi magagawang upang tingnan ang mga submissions ang form na ito maliban kung hindi bababa sa isa View ay nilikha. I-click ang pindutan sa ibaba upang lumikha ng default Tingnan."; +$LANG["notify_option_list_deleted"] = "Ang opsyon list ay tinanggal na."; +$LANG["notify_option_list_updated"] = "Ang listahan ng pagpipilian ay na-update."; +$LANG["notify_public_form_omit_list_updated"] = "Ang client ligtaan listahan para sa mga form na ito ay nai-update."; +$LANG["notify_public_view_omit_list_updated"] = "Client ligtaan Ang listahan na ito para Tingnan ay na-update."; +$LANG["notify_required_admin_pages"] = "Ang mga sumusunod na mga pahina ay hingin sa menu administrator: ({\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Paumanhin, nagkaroon ng hindi ng anumang aktibidad para sa isang habang kaya kami ay mag-log out ka. Mangyaring mag-log in muli sa ibaba."; +$LANG["notify_setup_options_updated"] = "Ang setup na mga opsyon ay na-update."; +$LANG["notify_smart_fill_field_not_found"] = "Hindi namin nagawang matagpuan ng isang patlang na may pangalan na ito ({\$field_name}) sa form (s) na tinukoy. Maaari mong alinman sa mano-manong i-set ang uri ng patlang sa ibaba, o i-click ang Laktawan ang pindutan upang i-edit ang patlang na ito mamaya."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Ang iyong file (s) ay matagumpay na nai-upload. Subukan ang pag-click sa pindutan ng Smart Punan para subukang muli. Kung ang hakbang na ito ay hindi, kailangan mong laktawan ang hakbang na ito at i-configure ang iyong form sa larangan manally mamaya."; +$LANG["notify_smart_fill_submitted"] = "Ang form ay naisumite na. Depende sa laki ng iyong form at bilang ng mga opsyon na larangan, ito ay maaaring tumagal ng ilang panahon."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Paumanhin, isa o higit pa ang mga file na ipinasok mo ay hindi mai-upload. Kailangan mong laktawan ang hakbang na ito at i-configure ang mga patlang sa mano-mano."; +$LANG["notify_submission_and_files_deleted"] = "Ang pagsumite at ang anumang mga file (s) na kaugnay nang ito ay tinanggal na matagumpay."; +$LANG["notify_submission_copied"] = "Ang pagsumite ay kinopya."; +$LANG["notify_submission_copied_edit"] = "Ang pagsumite ay kinopya. Maaari mo itong i-edit sa ibaba."; +$LANG["notify_submission_deleted"] = "Ang pagsumite ay tinanggal matagumpay."; +$LANG["notify_submission_deleted_with_problems"] = "Submission ay nabura na, ngunit ang mga sumusunod na problema ay nakaranas kapag sinusubukang tanggalin ang mga sumusunod na file (s):"; +$LANG["notify_submission_id_not_found"] = "Ang pagsumite ng ID ay hindi natagpuan."; +$LANG["notify_submission_not_updated"] = "Submission ay hindi na-update."; +$LANG["notify_submissions_and_files_deleted"] = "Ang mga submissions at ang anumang mga file (s) na kaugnay sa mga ito ay tinanggal na matagumpay."; +$LANG["notify_submissions_copied"] = "Ang {\$num_submissions} pagsusumite ay kinopya."; +$LANG["notify_submissions_deleted"] = "Ang pagsusumite ay Matagumpay na nabura."; +$LANG["notify_submissions_deleted_with_problems"] = "Ang pagsusumite ay nabura na, ngunit ang mga sumusunod na problema ay nakaranas kapag sinusubukang tanggalin ang mga sumusunod na file (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Ang iyong panubok na email ay hindi naipadala."; +$LANG["notify_theme_cache_folder_not_writable"] = "Cache folder ng tema na ito ay hindi writable. Upang paganahin ang tema, ang {\$folder} folder ng pangangailangan na magkaroon ng ganap na read-isulat ang mga pahintulot."; +$LANG["notify_theme_list_updated"] = "Ang tema ng listahan ay na-update."; +$LANG["notify_themes_settings_updated"] = "Ang iyong tema ng mga setting ay nai-update."; +$LANG["notify_view_deleted"] = "Ang Tingnan ay tinanggal na."; +$LANG["notify_view_group_deleted"] = "Ang Tingnan group ay tinanggal na."; +$LANG["notify_view_missing_columns"] = "Oops! Paumanhin, View na ito ay hindi ganap na set up pa."; +$LANG["notify_view_missing_columns_admin_fix"] = "Mag- click dito upang tukuyin kung aling mga patlang ay dapat na lumitaw bilang mga haligi sa pahinang ito."; +$LANG["notify_view_updated"] = "Ang Tingnan ay na-update."; +$LANG["notify_your_email_sent"] = "Ang iyong email ay matagumpay na naipadala na."; +$LANG["phrase_100_per_page"] = "100 sa bawat pahina"; +$LANG["phrase_10_per_page"] = "10 sa bawat pahina"; +$LANG["phrase_15_per_page"] = "15 sa bawat pahina"; +$LANG["phrase_1_direct"] = "1. Direktang"; +$LANG["phrase_1char"] = "1 magpasinda"; +$LANG["phrase_20_per_page"] = "20 sa bawat pahina"; +$LANG["phrase_25_per_page"] = "25 sa bawat pahina"; +$LANG["phrase_2_code"] = "2. Code"; +$LANG["phrase_2_columns"] = "2 Haligi"; +$LANG["phrase_2chars"] = "2 karakter"; +$LANG["phrase_3_columns"] = "3 Haligi"; +$LANG["phrase_4_columns"] = "4 Haligi"; +$LANG["phrase_50_per_page"] = "50 sa bawat pahina"; +$LANG["phrase_accepting_submissions"] = "(tumatanggap ng mga submissions)"; +$LANG["phrase_access_admin_account_c"] = "Maaari mong ma-access ang iyong Pangangasiwa ng account dito:"; +$LANG["phrase_access_type"] = "Uri ng Access"; +$LANG["phrase_account_info"] = "Impormasyon sa Account"; +$LANG["phrase_account_settings"] = "Mga Setting ng Account"; +$LANG["phrase_action_needed"] = "Aksyon Kinakailangan"; +$LANG["phrase_add_client"] = "Magdagdag ng Client"; +$LANG["phrase_add_client_menu"] = "Magdagdag ng Client ang Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Magdagdag ng mga default na setting »"; +$LANG["phrase_add_field"] = "Magdagdag ng Patlang"; +$LANG["phrase_add_fields"] = "Magdagdag ng mga Patlang"; +$LANG["phrase_add_fields_rightarrow"] = "Magdagdag ng (mga) Field »"; +$LANG["phrase_add_form"] = "Magdagdag ng Form"; +$LANG["phrase_add_form_external"] = "Magdagdag ng Form - Panlabas"; +$LANG["phrase_add_form_internal"] = "Magdagdag ng Form - Internal"; +$LANG["phrase_add_new_group_rightarrow"] = "Magdagdag ng Bagong Grupo »"; +$LANG["phrase_add_num_rows"] = "Magdagdag {\$number} Hilera (s)"; +$LANG["phrase_add_row"] = "Magdagdag ng Hilera »"; +$LANG["phrase_add_submission_button"] = "Magdagdag ng Pagsusumite ng Pindutan"; +$LANG["phrase_add_view_rightarrow"] = "Magdagdag Tingnan »"; +$LANG["phrase_adding_multi_page_form"] = "Pagdaragdag ng isang multi-pahina ng form kasama ang API"; +$LANG["phrase_adding_single_page_form"] = "Pagdaragdag ng isang solong-pahina na form kasama ang API"; +$LANG["phrase_admin_menu"] = "Tagapangasiwa ng Menu"; +$LANG["phrase_admin_only"] = "Tagapangasiwa Lamang"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Tagapangasiwa ng Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Mga Advanced na setting »"; +$LANG["phrase_all_X_results_selected"] = "Lahat {\$numresults} Napiling Resulta"; +$LANG["phrase_all_clients"] = "Lahat ng mga kliyente"; +$LANG["phrase_all_clients_except_c"] = "Lahat ng mga kliyente maliban sa:"; +$LANG["phrase_all_clients_have_access"] = "(lahat ng mga kliyente ay may access)"; +$LANG["phrase_all_fields"] = "Lahat ng mga patlang"; +$LANG["phrase_all_fields_displayed"] = "Lahat ng mga patlang ay ipapakita"; +$LANG["phrase_all_statuses"] = "Lahat ng mga katayuan ng"; +$LANG["phrase_all_submissions"] = "Lahat ng mga submissions"; +$LANG["phrase_allow_fields_edited"] = "Payagan ang mga patlang na na-edit"; +$LANG["phrase_alphanumeric"] = "Alphanumeric (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Ilapat Timezone Offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Magtalaga ng lahat ng mga nakalista sa client account sa {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Magtalaga ng lahat ng mga nakalista sa client account sa {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Sa Pagtatapos"; +$LANG["phrase_at_start"] = "Sa Start"; +$LANG["phrase_author_link"] = "Author Link"; +$LANG["phrase_auto_disable_account"] = "Auto-disable account matapos na # nabigo pagtatangka login"; +$LANG["phrase_auto_size"] = "Auto-size"; +$LANG["phrase_available_clients"] = "Magagamit na mga Kliyente"; +$LANG["phrase_available_fields"] = "Magagamit na mga Patlang"; +$LANG["phrase_available_option_lists"] = "Magagamit na mga Pagpipilian Listahan"; +$LANG["phrase_available_swatches"] = "Magagamit Swatches"; +$LANG["phrase_available_swatches_c"] = "Magagamit Swatches:"; +$LANG["phrase_available_tabs"] = "Magagamit na mga tab"; +$LANG["phrase_available_views"] = "Magagamit Views"; +$LANG["phrase_awaiting_form_submission"] = "Hinihintay ang form submission."; +$LANG["phrase_back_to_field_list"] = "«bumalik sa listahan ng mga patlang"; +$LANG["phrase_back_to_search_results"] = "balik sa mga resulta ng paghahanap"; +$LANG["phrase_base_view_on"] = "Base Tingnan sa ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Baguhin ang Login Impormasyon"; +$LANG["phrase_characters_limit_p"] = "character limit."; +$LANG["phrase_check_db_settings_try_again"] = "Paki-double check ang iyong mga setting ng database at i-click ang pindutan ng Ituloy muli."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Suriin ang URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Maaliwalas na ligtaan Listahan"; +$LANG["phrase_client_account_settings"] = "Client Mga Setting ng Account"; +$LANG["phrase_client_field"] = "Client Patlang"; +$LANG["phrase_client_map_filters"] = "Client Mapa Filter »"; +$LANG["phrase_client_may_edit"] = "Client ay maaaring i-edit"; +$LANG["phrase_client_menu"] = "Client ang Menu"; +$LANG["phrase_clients_can_access_form"] = "Mga kliyente na maaaring ma-access ang form"; +$LANG["phrase_clients_can_access_view"] = "Mga kliyente na maaaring ma-access ang Tingnan"; +$LANG["phrase_clients_cannot_access_form"] = "Mga kliyente na hindi maaaring ma-access ang form"; +$LANG["phrase_clients_cannot_access_view"] = "Mga kliyente na hindi maaaring ma-access ang Tingnan"; +$LANG["phrase_clients_may_edit"] = "Kliyente ay maaaring i-edit"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Patlang ng Code / Markup"; +$LANG["phrase_code_markup_type"] = "Uri ng Code / Markup"; +$LANG["phrase_codes_c"] = "Error Code:"; +$LANG["phrase_column_width"] = "Haligi Lapad"; +$LANG["phrase_company_name"] = "Pangalan ng Kumpanya"; +$LANG["phrase_configure_form_email_fields"] = "Itakda ang Form Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Kumpirmahin ang Folder-URL Pareha"; +$LANG["phrase_connect_rows"] = "Connect hilera"; +$LANG["phrase_copy_email_settings_from"] = "Kopyahin ang Mga Setting ng Email Mula sa ..."; +$LANG["phrase_copy_settings_from"] = "Kopyahin ang mga setting mula sa ..."; +$LANG["phrase_core_fields"] = "Core Fields"; +$LANG["phrase_core_version"] = "Core Version"; +$LANG["phrase_create_account"] = "Gumawa ng Account"; +$LANG["phrase_create_admin_account"] = "Gumawa ng Account sa Admin"; +$LANG["phrase_create_config_file"] = "Gumawa ng config ng File"; +$LANG["phrase_create_database_tables"] = "Gumawa ng Database Tables"; +$LANG["phrase_create_default_view"] = "Gumawa ng Default View"; +$LANG["phrase_create_file"] = "Gumawa ng File"; +$LANG["phrase_create_group"] = "Lumikha ng Grupo"; +$LANG["phrase_create_new_email"] = "Gumawa ng Bagong Email"; +$LANG["phrase_create_new_menu"] = "Gumawa ng Bagong Menu"; +$LANG["phrase_create_new_option_list"] = "Lumikha ng Bagong Listahan ng Pagpipilian"; +$LANG["phrase_create_new_option_list_group"] = "Lumikha ng bagong group ng listahan ng pagpipilian"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Lumikha ng Bagong Listahan ng Pagpipilian »"; +$LANG["phrase_create_new_view"] = "Gumawa ng Bagong View"; +$LANG["phrase_create_new_view_group"] = "Lumikha ng Bagong View Group"; +$LANG["phrase_custom_display_format"] = "Pasadyang Display Format"; +$LANG["phrase_custom_recipient"] = "Pasadyang Padadalhan"; +$LANG["phrase_custom_url"] = "Pasadyang URL"; +$LANG["phrase_dark_blue"] = "Madilim Blue"; +$LANG["phrase_data_type"] = "Uri ng Data"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Database ng pangalan"; +$LANG["phrase_database_password"] = "Database password"; +$LANG["phrase_database_settings"] = "Database ng Mga Setting"; +$LANG["phrase_database_setup"] = "Database Setup"; +$LANG["phrase_database_table_prefix"] = "Database mesa prefix"; +$LANG["phrase_database_username"] = "Database username"; +$LANG["phrase_date_format"] = "Date Format"; +$LANG["phrase_db_column"] = "DB Column"; +$LANG["phrase_db_setup_page_4"] = "4. Database Setup"; +$LANG["phrase_default_client_account_theme"] = "Default Client Account Theme"; +$LANG["phrase_default_date_field_search_value"] = "Halaga ng paghahanap ng patlang ng Default petsa"; +$LANG["phrase_default_language"] = "Default Wika"; +$LANG["phrase_default_menu"] = "Default na ang Menu"; +$LANG["phrase_default_sessions_timeout"] = "Default na session ng timeout"; +$LANG["phrase_default_sort_order"] = "Default Pagsunud-sunurin ayon Order"; +$LANG["phrase_default_tab_label"] = "Data"; +$LANG["phrase_default_theme"] = "Default na Tema"; +$LANG["phrase_default_value"] = "Default na halaga"; +$LANG["phrase_default_values"] = "Default na halaga"; +$LANG["phrase_default_values_new_submissions"] = "Halaga ng Default para sa New Pagsusumite"; +$LANG["phrase_delete_field"] = "Tanggalin ang Patlang"; +$LANG["phrase_delete_form"] = "Burahin ang Form"; +$LANG["phrase_delete_row"] = "Tanggalin ang Hilera"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Tanggalin na kaugnay ng mga file habang nagbubura ng pagsumite ng"; +$LANG["phrase_delete_view"] = "Tanggalin View"; +$LANG["phrase_disconnect_rows"] = "Idiskonekta hilera"; +$LANG["phrase_display_email"] = "Ipakita ang Email"; +$LANG["phrase_display_name"] = "Ipakita ang Pangalan"; +$LANG["phrase_display_text"] = "Ipakita ang mga Text"; +$LANG["phrase_display_value"] = "Ipakita ang Halaga"; +$LANG["phrase_edit_admin_menu"] = "I-edit ang Admin ang Menu"; +$LANG["phrase_edit_client"] = "I-edit ang Client"; +$LANG["phrase_edit_client_menu"] = "I-edit ang Client ang Menu"; +$LANG["phrase_edit_email_template"] = "I-edit ang Email Template"; +$LANG["phrase_edit_field"] = "I-edit ang Patlang"; +$LANG["phrase_edit_field_c"] = "I-edit ang Patlang:"; +$LANG["phrase_edit_form"] = "I-edit ang Form"; +$LANG["phrase_edit_form_access_type_b"] = "[I-edit ang Uri ng form access]"; +$LANG["phrase_edit_option_list"] = "I-edit ang Pagpipilian List"; +$LANG["phrase_edit_submission"] = "I-edit ang Submission"; +$LANG["phrase_edit_submission_label"] = "I-edit ang Isinumite Label"; +$LANG["phrase_edit_view"] = "Tingnan ang I-edit"; +$LANG["phrase_email_format"] = "Email Format"; +$LANG["phrase_email_settings"] = "Mga Setting ng Email"; +$LANG["phrase_email_template"] = "Email ng template"; +$LANG["phrase_email_template_name"] = "Email pangalan ng template"; +$LANG["phrase_error_learn_more"] = "Dagdagan ang nalalaman tungkol sa error na ito."; +$LANG["phrase_error_text_intro"] = "Paki-ayos ang mga sumusunod na (mga) pagkakamali at muling ipadala ang:"; +$LANG["phrase_errors_learn_more"] = "I-click ang mga code error para sa karagdagang kaalaman."; +$LANG["phrase_event_trigger"] = "Puntiryang mga Kaganapan"; +$LANG["phrase_external_form"] = "Panlabas na Form"; +$LANG["phrase_external_form_info"] = "Panlabas na Form Info"; +$LANG["phrase_external_your_own_form"] = "Panlabas (sa iyong sariling form)"; +$LANG["phrase_field_comments"] = "Patlang Komento"; +$LANG["phrase_field_label"] = "Patlang Tatak"; +$LANG["phrase_field_options"] = "Patlang Opsyon"; +$LANG["phrase_field_size"] = "Patlang ng Sukat"; +$LANG["phrase_field_skipped"] = "Patlang Nilaktawan"; +$LANG["phrase_field_specific_settings"] = "Patlang-Tukoy na Mga Setting"; +$LANG["phrase_field_type"] = "Uri ng Patlang"; +$LANG["phrase_field_type_no_validation"] = "Walang magagamit na mga patakaran ng pagpapatunay para sa ganitong uri field."; +$LANG["phrase_field_types"] = "Uri ng Patlang"; +$LANG["phrase_field_value"] = "Patlang ng Halaga ng"; +$LANG["phrase_field_values_to_display_values"] = "Patlang Values »Ipakita ang Halaga"; +$LANG["phrase_final_touches_page_6"] = "6. Tinatapos Touches"; +$LANG["phrase_finalize_form"] = "I-finalize ang Form"; +$LANG["phrase_first_name"] = "Pangalan"; +$LANG["phrase_footer_text"] = "Footer ng Text"; +$LANG["phrase_for_any_form_submission"] = "Para sa anumang form submission"; +$LANG["phrase_for_view_submissions"] = "Tanging ang mga submissions na angkop sa mga sumusunod na View (s)"; +$LANG["phrase_forgot_password"] = "Nakalimutan mo ang iyong Password?"; +$LANG["phrase_form_already_selected"] = "Form na napili"; +$LANG["phrase_form_email_field_b_c"] = "[Form email patlang]:"; +$LANG["phrase_form_email_field_configuration"] = "Form Email Patlang Configuration"; +$LANG["phrase_form_email_fields"] = "Email Form Fields"; +$LANG["phrase_form_field"] = "Form Patlang"; +$LANG["phrase_form_field_contents"] = "Form Field Nilalaman"; +$LANG["phrase_form_field_name"] = "Form ng Patlang ng Pangalan"; +$LANG["phrase_form_field_placeholders"] = "Form patlang placeholder"; +$LANG["phrase_form_fields"] = "Form Fields"; +$LANG["phrase_form_info"] = "Form Impormasyon"; +$LANG["phrase_form_info_2"] = "2. Form Impormasyon"; +$LANG["phrase_form_list"] = "Form List"; +$LANG["phrase_form_name"] = "Pangalan ng Form"; +$LANG["phrase_form_page"] = "Form Pahina"; +$LANG["phrase_form_placeholders"] = "Form Placeholders"; +$LANG["phrase_form_submission"] = "Form Submission"; +$LANG["phrase_form_submissions"] = "Form submissions"; +$LANG["phrase_form_type"] = "Uri ng Form"; +$LANG["phrase_form_url"] = "URL form"; +$LANG["phrase_form_urls"] = "Form URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Forms na itinalaga sa anumang account"; +$LANG["phrase_forms_page_default_message"] = "Forms pahina ng default mensahe"; +$LANG["phrase_ft_installation"] = "Form Kasangkapan sa Pag-install Script"; +$LANG["phrase_full_width"] = "Full Lapad"; +$LANG["phrase_getting_started"] = "pagsisimula"; +$LANG["phrase_global_placeholders"] = "Global Placeholders"; +$LANG["phrase_group_name"] = "Pangalan ng Grupo"; +$LANG["phrase_group_options_q"] = "Group pagpipilian?"; +$LANG["phrase_group_rows"] = "Group hilera"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Highlight Colour"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML ng Template"; +$LANG["phrase_images_media"] = "Mga imahe / Media"; +$LANG["phrase_import_option_list_rightarrow"] = "-Import ang Pagpipilian List »"; +$LANG["phrase_input_length"] = "Input Length"; +$LANG["phrase_installation_help"] = "Install Tulong"; +$LANG["phrase_internal_form"] = "Panloob na Form"; +$LANG["phrase_ip_address"] = "IP Address"; +$LANG["phrase_is_multi_page_form_q"] = "Ito isang multi-pahina na form?"; +$LANG["phrase_label_response_placeholders"] = "Placeholder ng Label / Tugon"; +$LANG["phrase_large_300px"] = "Malaki (300px)"; +$LANG["phrase_large_400px"] = "Malaki (400px)"; +$LANG["phrase_last_7_days"] = "Huling 7 araw"; +$LANG["phrase_last_logged_in"] = "Huling Logged Sa"; +$LANG["phrase_last_modified"] = "Huling binago"; +$LANG["phrase_last_modified_date"] = "Huling binago ang petsa"; +$LANG["phrase_last_name"] = "Huling pangalan"; +$LANG["phrase_letters_only"] = "Sulat lamang"; +$LANG["phrase_light_brown"] = "Banayad Brown"; +$LANG["phrase_limit_email_content"] = "Hangganan ng nilalaman ng email sa patlang sa View"; +$LANG["phrase_loading_ellipsis"] = "Naglo-load ..."; +$LANG["phrase_log_in"] = "Log In"; +$LANG["phrase_login_as_user"] = "Mag-log in bilang ang gumagamit na ito"; +$LANG["phrase_login_info"] = "Login Info"; +$LANG["phrase_login_page"] = "Login Page"; +$LANG["phrase_login_panel_c"] = "Login Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Login Password"; +$LANG["phrase_login_username"] = "Login Username"; +$LANG["phrase_logo_link_url"] = "Logo Link URL"; +$LANG["phrase_logout_url"] = "Logout na URL"; +$LANG["phrase_main_nav"] = "Main Nav"; +$LANG["phrase_main_settings"] = "Pangunahing Setting"; +$LANG["phrase_manage_client"] = "Pamahalaan ang Client"; +$LANG["phrase_manage_client_omit_list"] = "Pamahalaan Client ligtaan List"; +$LANG["phrase_max_file_size"] = "Max File Size"; +$LANG["phrase_max_length"] = "Max Length"; +$LANG["phrase_max_length_words_chars"] = "- Max haba (mga salita / karakter)"; +$LANG["phrase_may_add_submissions"] = "Maaari idagdag Pagsusumite"; +$LANG["phrase_may_copy_submissions"] = "Maaaring kopyahin ang mga pagsusumite"; +$LANG["phrase_may_delete_submissions"] = "Mayo tanggalin Pagsusumite"; +$LANG["phrase_medium_150px"] = "Katamtaman (150px)"; +$LANG["phrase_medium_200px"] = "Katamtaman (200px)"; +$LANG["phrase_menu_name"] = "Ang Menu Pangalan"; +$LANG["phrase_menu_type"] = "Uri ng Menu"; +$LANG["phrase_min_password_length"] = "Pinakamababang password haba"; +$LANG["phrase_module_description"] = "Module Paglalarawan"; +$LANG["phrase_module_info"] = "Module na Impormasyon"; +$LANG["phrase_module_nav"] = "Module Nav"; +$LANG["phrase_month_to_date"] = "Buwan sa petsa"; +$LANG["phrase_multi_select"] = "Multi-piliin ang"; +$LANG["phrase_multi_select_dropdown"] = "Multi-piliin ang dropdown"; +$LANG["phrase_multiple_fields_found"] = "Maramihang mga patlang na Found!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Name / Last Name"; +$LANG["phrase_new_blank_email"] = "Bagong Blangkong Email"; +$LANG["phrase_new_blank_option_list"] = "Bagong Blangkong Pagpipilian List"; +$LANG["phrase_new_blank_view"] = "Bagong Blangkong View"; +$LANG["phrase_new_ft_installation"] = "Bagong Form Kasangkapan sa Pag-install"; +$LANG["phrase_new_option_list"] = "Bagong Pagpipilian List"; +$LANG["phrase_new_password"] = "Bagong Password"; +$LANG["phrase_new_password_reenter"] = "Bagong Password (mangyaring ipasok muli)"; +$LANG["phrase_new_view"] = "Bago Tingnan ang"; +$LANG["phrase_new_view_all_fields"] = "Bagong View - Lahat ng mga patlang"; +$LANG["phrase_next_client"] = "susunod na client »"; +$LANG["phrase_next_field"] = "susunod na field »"; +$LANG["phrase_next_form"] = "susunod na form »"; +$LANG["phrase_next_view"] = "Tingnan ang susunod na »"; +$LANG["phrase_no_clients"] = "Walang mga kliyente"; +$LANG["phrase_no_limit"] = "Walang limitasyon"; +$LANG["phrase_no_offset"] = "Walang ginalaw"; +$LANG["phrase_no_option_lists_available"] = "Walang pagpipilian listahan ng magagamit."; +$LANG["phrase_no_views"] = "Walang Views"; +$LANG["phrase_no_views_with_filters_p"] = "(Walang mga Pananaw sa mga filter na tinukoy)"; +$LANG["phrase_none_not_recommended"] = "Wala (hindi inirerekomenda)"; +$LANG["phrase_not_assigned_to_option_list"] = "Ang patlang na ito ay hindi na nakatalaga sa isang Listahan ng Pagpipilian."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "HINDI ba pantay"; +$LANG["phrase_not_found"] = "Hindi Natagpuan!"; +$LANG["phrase_not_like"] = "HINDI Tulad ng"; +$LANG["phrase_not_visible_to_client"] = "(hindi makikita ng client)"; +$LANG["phrase_num_clients_per_page"] = "Num Kliyente Bawat Pahina"; +$LANG["phrase_num_emails_per_page"] = "Num Email Bawat Pahina"; +$LANG["phrase_num_fields"] = "Bilang ng mga patlang"; +$LANG["phrase_num_forms_per_page"] = "Num Forms Bawat Pahina"; +$LANG["phrase_num_menus_per_page"] = "Num menu Bawat Pahina"; +$LANG["phrase_num_modules_per_page"] = "Num Modules Bawat Pahina"; +$LANG["phrase_num_option_lists_per_page"] = "Num Pagpipilian Listahan Bawat Pahina"; +$LANG["phrase_num_options"] = "Num Opsyon"; +$LANG["phrase_num_rows"] = "Num hilera"; +$LANG["phrase_numbers_only"] = "Numero lamang"; +$LANG["phrase_often_localhost"] = "(madalas "localhost")"; +$LANG["phrase_on_form_submission"] = "Sa form submission"; +$LANG["phrase_one_char_number"] = "Hindi bababa sa isang character ay isang numero (0-9)"; +$LANG["phrase_one_char_upper"] = "Hindi bababa sa isang karakter ay uppercase"; +$LANG["phrase_one_special_char"] = "Hindi bababa sa isa ng {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(lamang sa mga tiyak na mga kliyente ay may access)"; +$LANG["phrase_open_form_in_dialog"] = "Buksan ang form sa dialog window"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Buksan ang form na ito sa isang bagong tab / window"; +$LANG["phrase_option_list"] = "Pagpipilian List"; +$LANG["phrase_option_list_name"] = "Pangalan ng Pagpipilian List"; +$LANG["phrase_option_list_or_contents"] = "Listahan ng Pagpipilian / mga Nilalaman"; +$LANG["phrase_option_lists"] = "Pagpipilian Listahan"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Pahina ng Pamagat"; +$LANG["phrase_pass_on"] = "Pass on"; +$LANG["phrase_password_min"] = "Ito dapat hindi bababa sa {\$length} mga character."; +$LANG["phrase_password_one_number"] = "Ito ay dapat maglaman ng hindi bababa sa isang numero (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Ito ay dapat maglaman ng hindi bababa sa isang uppercase sulat."; +$LANG["phrase_password_requirements_c"] = "Password na kinakailangan:"; +$LANG["phrase_password_reset"] = "I-reset ang password"; +$LANG["phrase_password_special_char"] = "Ito ay dapat maglaman ng hindi bababa sa isa sa mga sumusunod na mga karakter: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Pahintulot / Iba pang mga Setting"; +$LANG["phrase_permitted_file_types"] = "Pinapayagan ang mga uri ng file"; +$LANG["phrase_phone_number"] = "Numero ng Telepono"; +$LANG["phrase_phone_number_format"] = "Numero ng Telepono Format"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini max pinapayagang mag-upload ng file size:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Mangyaring Kumpirmahin"; +$LANG["phrase_please_enter_license_key"] = "Mangyaring ipasok ang iyong license key"; +$LANG["phrase_please_select"] = "Mangyaring Piliin ang"; +$LANG["phrase_please_select_form"] = "Mangyaring pumili ng isang form na"; +$LANG["phrase_prev_client"] = "«Nkrn client"; +$LANG["phrase_prev_form"] = "«Nkrn form"; +$LANG["phrase_prevent_password_reuse"] = "Maiwasan ang muling-paggamit ng # huling password"; +$LANG["phrase_previous_field"] = "«nakaraang field"; +$LANG["phrase_previous_page"] = "Previous Page"; +$LANG["phrase_previous_view"] = "«Nkrn View"; +$LANG["phrase_program_name"] = "Pangalan ng Programa"; +$LANG["phrase_public_form_omit_list"] = "Pampublikong Form ligtaan Listahan"; +$LANG["phrase_public_view_omit_list"] = "Pampublikong View ligtaan Listahan"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Nagkaroon ng problema sa ang mga sumusunod na tanong:"; +$LANG["phrase_radio_buttons"] = "Radio Pindutan"; +$LANG["phrase_random_form_submission"] = "Random form submission"; +$LANG["phrase_re_enter_password"] = "Muling ipasok ang Password"; +$LANG["phrase_recipient_type"] = "Padadalhan uri ng"; +$LANG["phrase_redirect_url"] = "Redirect URL"; +$LANG["phrase_refresh_list"] = "I-refresh ang Listahan"; +$LANG["phrase_refresh_module_list"] = "I-refresh ang Module Listahan"; +$LANG["phrase_refresh_page"] = "I-refresh ang Page"; +$LANG["phrase_refresh_theme_list"] = "I-refresh ang Theme Listahan"; +$LANG["phrase_register_new_email"] = "Register Bagong Email"; +$LANG["phrase_remaining_characters"] = "natitirang mga character"; +$LANG["phrase_remaining_words"] = "natitirang mga salita"; +$LANG["phrase_remove_tabs"] = "Tanggalin Tabs"; +$LANG["phrase_required_password_chars"] = "Kinakailangan password karakter"; +$LANG["phrase_resend_test_submission"] = "Muling ipadala ang Test Submission"; +$LANG["phrase_return_form_list"] = "Bumalik sa Form Listahan"; +$LANG["phrase_row_selected"] = "{\$num_rows} hilera pinili"; +$LANG["phrase_rows_selected"] = "{\$num_rows} napiling mga hilera"; +$LANG["phrase_sample_data"] = "Halimbawang Data"; +$LANG["phrase_save_changes"] = "I-save ang mga Pagbabago"; +$LANG["phrase_search_keyword"] = "Search keyword"; +$LANG["phrase_security_settings"] = "Security Setting"; +$LANG["phrase_select_all"] = "Piliin ang Lahat"; +$LANG["phrase_select_all_X_results"] = "Piliin Lahat {\$numresults} Resulta"; +$LANG["phrase_select_all_on_page"] = "Piliin Lahat Sa Pahina"; +$LANG["phrase_select_date"] = "Pumili ng petsa"; +$LANG["phrase_select_field"] = "Piliin ang Patlang"; +$LANG["phrase_select_swatch"] = "Pumili ng pakita ng kayo"; +$LANG["phrase_selected_clients"] = "Napiling Mga Kliyente"; +$LANG["phrase_selected_views"] = "Napiling Views"; +$LANG["phrase_send_email"] = "Magpadala ng Email"; +$LANG["phrase_send_test_email"] = "Magpadala ng Email Test"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Session Naubusan ng oras"; +$LANG["phrase_setting_value"] = "Pagse-set na Halaga"; +$LANG["phrase_setup_options"] = "I-setup ang Opsyon"; +$LANG["phrase_show_all"] = "Ipakita ang Lahat"; +$LANG["phrase_show_form"] = "Ipakita ang Form"; +$LANG["phrase_size_large"] = "Malaki (TEXT)"; +$LANG["phrase_size_medium"] = "Daluyan (<= 256 karakter)"; +$LANG["phrase_size_small"] = "Maliit (<= 20 karakter)"; +$LANG["phrase_size_tiny"] = "Maliit na maliit (<= 5 karakter)"; +$LANG["phrase_size_very_large"] = "Very Malaki (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Laktawan ang Patlang"; +$LANG["phrase_skip_step"] = "Laktawan Hakbang"; +$LANG["phrase_small_100px"] = "Maliit (100px)"; +$LANG["phrase_small_80px"] = "Maliit (80px)"; +$LANG["phrase_smart_fill"] = "Smart Punan"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Punan ang mga patlang mula sa:"; +$LANG["phrase_smart_fill_user_documentation"] = "Punan ang Smart User Documentation »"; +$LANG["phrase_sort_as"] = "Pagsunud-sunurin ayon Bilang"; +$LANG["phrase_special_fields"] = "Espesyal na mga patlang"; +$LANG["phrase_standard_fields"] = "Standard na mga patlang"; +$LANG["phrase_standard_filters"] = "Standard na mga filter »"; +$LANG["phrase_step_1"] = "Hakbang 1"; +$LANG["phrase_step_2"] = "Hakbang 2"; +$LANG["phrase_step_3"] = "Hakbang 3"; +$LANG["phrase_step_4"] = "Hakbang 4"; +$LANG["phrase_step_5"] = "Hakbang 5"; +$LANG["phrase_step_6"] = "Hakbang 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Strip tags sa pagsusumite ng form"; +$LANG["phrase_subject_line"] = "Paksa Line"; +$LANG["phrase_submission_date"] = "Submission ng petsa"; +$LANG["phrase_submission_id"] = "Submission ID"; +$LANG["phrase_submission_made"] = "Submission na ginawa: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Uri ng Submission"; +$LANG["phrase_submissions_per_page"] = "Submissions bawat Pahina"; +$LANG["phrase_system_check"] = "System Suriin"; +$LANG["phrase_system_fields_no_validation"] = "Hindi mo maaaring idagdag ang pagpapatunay sa mga patlang ng sistema."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Tab Tatak"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Folder Pahintulot"; +$LANG["phrase_test_submission"] = "Test Submission"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Test Submission Natanggap"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "Teksto ng Email"; +$LANG["phrase_text_template"] = "Text Template"; +$LANG["phrase_the_previous_month"] = "Sa nakaraang buwan"; +$LANG["phrase_theme_description"] = "Tema Paglalarawan"; +$LANG["phrase_theme_info"] = "Theme Info"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Total Results:"; +$LANG["phrase_type_c"] = "Error Type:"; +$LANG["phrase_unselect_all"] = "Tanggalin ang pagkapili Lahat"; +$LANG["phrase_update_accounts"] = "I-update ang Account"; +$LANG["phrase_update_email_template"] = "I-update ang Email Template"; +$LANG["phrase_update_field"] = "I-update ang Patlang"; +$LANG["phrase_update_order"] = "Update Order"; +$LANG["phrase_update_view"] = "Tingnan ang I-update"; +$LANG["phrase_upload_file"] = "Mag-upload ng file"; +$LANG["phrase_upload_files"] = "Mag-upload ng file"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Mag-upload ng folder ng landas"; +$LANG["phrase_upload_folder_url"] = "Mag-upload ng folder na URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Gamitin ang Default na Halaga?"; +$LANG["phrase_used_by_num_form_fields"] = "Ginamit sa pamamagitan ng Form # Fields"; +$LANG["phrase_uses_swatches"] = "Gumagamit Swatches"; +$LANG["phrase_valid_email"] = "Valid Email"; +$LANG["phrase_validation_error"] = "Pagpapatunay Error"; +$LANG["phrase_validation_rule"] = "Pagpapatunay Rule"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Tingnan ang Group"; +$LANG["phrase_view_id"] = "Tingnan ang ID"; +$LANG["phrase_view_name"] = "Tingnan ang Pangalan"; +$LANG["phrase_view_placeholders"] = "Tingnan ang mga placeholder"; +$LANG["phrase_view_submissions"] = "Tingnan ang mga submissions"; +$LANG["phrase_view_uploaded_files"] = "makita-upload ng mga file"; +$LANG["phrase_viewing_range"] = "[tumitingin sa {\$startnum} sa {\$endnum}]"; +$LANG["phrase_when_sent"] = "Kapag nagpadala ng"; +$LANG["phrase_when_submission_is_deleted"] = "Kapag ang pagsumite ay tinanggal"; +$LANG["phrase_when_submission_is_edited"] = "Kapag ang pagsumite ay na-edit"; +$LANG["phrase_who_can_access"] = "Sino ang maaaring ma-access?"; +$LANG["phrase_word_limit_p"] = "salita limitasyon."; +$LANG["phrase_year_to_date"] = "Taon sa petsa"; +$LANG["phrase_yes_for_all_views"] = "Oo, para sa lahat ng Views"; +$LANG["phrase_yes_for_specific_views"] = "Oo, para sa mga mismong Views"; +$LANG["phrase_your_account"] = "Iyong Account"; +$LANG["phrase_your_email"] = "Ang iyong Email"; +$LANG["phrase_your_email_address"] = "Ang iyong email address"; +$LANG["processing_form_disabled"] = "Paumanhin, ang form na ito ay hindi pinagana."; +$LANG["processing_form_incomplete"] = "Paumanhin, ang form na ito ay hindi lilitaw upang maging ganap na-set up mula sa loob ng Form Tools. Ang pinaka-malamang na sanhi ng problemang ito ay na tinanggal na ang "form_tools_initialize_form" nakatagong form na larangan, ngunit hindi kumpleto ang lahat ng hakbang ng "Magdagdag ng Form" na proseso.

    Mangyaring mag-log in at repasuhin ang mga form ng pagsasaayos."; +$LANG["processing_init_complete"] = "Salamat! Ang iyong panubok na submission ay ilagay sa pamamagitan ng matagumpay. Mangyaring bumalik sa Form panel Administration Tools at i-click ang "I-refresh" button sa ibaba ng Magdagdag ng Form Hakbang 3 pahina upang tapusin ang set up ng iyong form."; +$LANG["processing_invalid_form_id"] = "Paumanhin, ito ay hindi lumitaw na maging isang wastong ID form."; +$LANG["processing_no_form_id"] = "process.php ay nangangailangan ng isang form ng ID para sa processing. Siguraduhin na ang iyong form na naglalaman ng isang nakatagong patlang na may pangalan na "form_tools_form_id" na paglipas kasama ang form sa ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Kasangkapan ay hindi upang matukoy kung saan ang mga mag-redirect kapag mabibigo sila upang ipasok ang CAPTCHA ng maayos. Mangyari lamang na pumasa sa isang nakatagong patlang na may pangalan na form_tools_form_url na naglalaman ng mga URL ng form."; +$LANG["processing_no_post_vars"] = "process.php ay hindi makatanggap ng anumang data. Tandaan: Ang script na ito ay hindi maaaring puno ng direkta sa iyong browser.
    Siguraduhin na ang iyong form ay sa pamamagitan ng pagpapadala ng POST."; +$LANG["processing_no_redirect_url"] = "Pagsumite Ang proseso ay tama, ngunit hindi na tinukoy mo ang isang redirect na URL para sa form na ito! I-edit ang iyong form sa Form Tools UI at idagdag ang redirect na URL."; +$LANG["special_language"] = "Filipino"; +$LANG["special_language_locale"] = "Filipino"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Lahat ng mga bagong client account ay nilikha sa pamamagitan ng mga setting at pahintulot ng tinukoy sa ibaba. Upang override ng setting para sa isang partikular na client, i-edit ang account nang kliente at bisitahin ang kanilang mga Setting ng tab."; +$LANG["text_add_form_choose_integration_method"] = "Piliin kung aling pamamaraan ang nais mong gamitin upang pagsamahin ang iyong mga form sa Tools Form."; +$LANG["text_add_form_code_submission_benefits"] = "Ang pamamaraang ito ay gumagamit ng Form Tools API, na kasama sa pangunahing script Tools Form. Ang API ay nagbibigay ng isang bilang ng mga helpful mga function upang gawin ang trabaho ng pagsasama ng iyong form sa Form Tools na simple hangga't maaari. May ay walang mga paghihigpit sa kung paano ang iyong mga form ay maaaring isumite kapag ginamit mo ang API. Maaari mong isumite ang nilalaman sa isa pumunta, o pahina sa pamamagitan ng pahina, maaari kang magdagdag ng iyong sariling pasadyang server-side pagpapatunay, CAPTCHA imahe, maaari kang pumili upang isumite ang impormasyon sa ngayon, ngunit lamang sabihin ang mga ito upang ipakita ang pagsumite sa Form Tools UI sa ibang araw (tingnan ang Finalized Pagsusumite ng seksyon sa papeles ng tulong ng API )."; +$LANG["text_add_form_code_submission_drawbacks"] = "Upang isumite ang iyong data sa form sa pamamagitan ng PHP, ang iyong mga form ay dapat na matatagpuan sa parehong website na ito install Form Tools. Pangalawa, para sa mga di-teknikal at baguhan mga gumagamit sa Form Tools, ang pamamaraang ito ay maaaring maging isang maliit na intimidating sa una. Ngunit may maraming ng mga papeles upang makatulong sa iyo, kabilang ang dalawang simpleng tutorial para sa pagsasama sa iyong mga single-at multi-pahina na form (ang mga ito ay na naka-link sa sa isang mamaya na hakbang)."; +$LANG["text_add_form_direct_submission_benefits"] = "Ito ay ang pinakamadaling paraan upang isumite ang iyong form sa Form ng Tools. Hindi ito nangangailangan ng anumang kaalaman ng PHP at nangangailangan lamang ng isang napakaliit na pagbabago sa iyong form. Ito ay mahalaga para sa mas maliit na form na kung saan nais mong ipadala lamang ang mga impormasyon sa database at pagkatapos ay ang redirect user sa isang "thankyou" na pahina."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Ito ang pagsumite ng paraan ay napaka-simple gamitin, ngunit ay hindi nagbibigay ng maraming kontrol para sa mas kumplikadong anyo. Multi-pahina ng paraan o anyo na nangangailangan ng server-side ng pagpapatunay ay mas mahusay na angkop sa ikalawang paraan: sa pamamagitan ng pagsusumite ng Form Tools API."; +$LANG["text_add_form_field_types1"] = "Halos tapos! Ang pahinang ito ay sinusubukan upang mahanap ang lahat ng iyong mga patlang ng form at matukoy ang kanilang mga uri ng patlang. I-click ang Smart Punan ang button sa kanan upang makapagsimula. Mo lamang ay pinapahintulutan upang magpatuloy kapag ang lahat ng mga aksyon sa malutas ang mga isyu na kailangan ng iyong pansin na lumitaw sa ang "Action Kinakailangan " haligi."; +$LANG["text_add_form_field_types2"] = "Kung ang iyong form ay hindi sa HTML, i-click ang pindutan ng Laktawan ang Hakbang upang magpatuloy. Ito ay maaaring lahat ay isinaayos mamaya."; +$LANG["text_add_form_field_types3"] = "Ito muling pagkarga sa mga nilalaman ng iyong form (s). Tandaan: ito ay patungan ng anumang mga pagbabago na iyong ginawa sa pahinang ito."; +$LANG["text_add_form_field_types4"] = "Sa kaso na patakbuhin mo ang sa problema, i-click dito upang laktawan ang hakbang na ito. Lahat ng mga hindi malutas na mga patlang ay nakatakda upang gamitin ang mga default na halaga. Maaari mong ipasadya ang mga patlang na ito mamaya."; +$LANG["text_add_form_field_types_manual_upload"] = "Kung ikaw ay hindi Smart Punan ang iyong mga patlang, maaari mong nais na subukan ang isang alternatibong solusyon: mag-upload ng mga kopya ng iyong mga form sa mga patlang sa ibaba."; +$LANG["text_add_form_field_types_manual_upload2"] = "Tandaan: huwag mag-upload ng mga raw PHP na pahina (o iba pang mga na server-side na code) - i-upload ang HTML na mga bersyon. Upang makakuha ng ito, tingnan at i-save ang pahina mula sa iyong web browser."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Mayroong maramihang mga patlang na ay hindi matagpuan sa ang form sa pahina na iyong tinukoy. Ito ay kadalasang malamang na dulot ng isa sa mga sumusunod:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Nagpasok ka ng isa o higit pa ang form sa URL ng iyong mga multi-pahina na form mali."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Isa o higit pang mga pahina ng iyong mga form ay protektado ng password at ang script ay hindi ma-access ang pahina."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Mali ang ipinasok mong URL ng iyong form."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Mag- click dito upang bumalik sa pahina ng Impormasyon ng Form upang suriin ang iyong mga setting."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Nagbago ka ng iyong form (s) matapos ang pagsubok pagsusumite"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Mag- click dito upang ilagay sa pamamagitan ng isa pang pagsumite ng pagsubok."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Ang iyong form ay protektado ng password at ang script ay hindi ma-access ang pahina."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Sa ibang tab / window ng browser na ito, mag-log in sa iyong form pagkatapos ay i-click ang pindutan ng I-refresh ang Page sa ibaba upang subukan upang muling hanapin ang mga patlang."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Kung wala sa itaas na mga solusyon ng trabaho, maaari mo ring gusto mong subukan ang mano-mano-upload ang iyong mga form para sa pagproseso."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Mayroong maramihang mga patlang na ay hindi matagpuan sa mga pahina ng form na iyong tinukoy. Ito ay halos malamang na dulot ng isa sa mga:"; +$LANG["text_add_form_help_link"] = "Kung nagpapatakbo ka sa anumang mga problema sa panahon ng mga hakbang na ito, subukan ang pagbabasa gumagamit papeles."; +$LANG["text_add_form_step_1_text_1"] = "Ang mga sumusunod na mga pahina humantong inyo sa pamamagitan ng mga hakbang upang maisaayos ang Tools Form sa tindahan ng iyong mga pagsusumite sa form. Bago magpatuloy, mangyaring tiyakin na:"; +$LANG["text_add_form_step_1_text_2"] = "iyong form ang nai-nilikha at itong mapuntahan sa pamamagitan ng isang URL (localhost ay pagmultahin)"; +$LANG["text_add_form_step_1_text_3"] = "ay ma-edit ang iyong form"; +$LANG["text_add_form_step_2_para_2"] = "Buksan ang iyong form sa loob ng isang editor na iyong pinili at palitan ang iyong form ng tag ang mga sumusunod, kasama na ang dalawang mga nakatagong mga patlang."; +$LANG["text_add_form_step_2_para_3"] = "Sunod, buksan ang iyong form sa isang web browser. Punan ang mga patlang ng bawat at isumite ito. Pagkatapos ng pagsumite, dapat mong makita ang isang abiso mensahe. Kapag ang mensaheng ito ay ipinakita, bumalik sa pahinang ito at i-click ang refresh button sa ibaba. Kapag ang prosesong ito ay kumpleto, makikita mo ang isang patuloy na button sa ibaba, ang pagkuha mo sa susunod na hakbang."; +$LANG["text_add_form_step_2_para_6"] = "Sa iyong mga form submission, isama ang sumusunod na halaga. Maaari silang maaaring itakda ng direkta sa pamamagitan ng PHP o dumaan sa pamamagitan ng kasama ang form sa kanyang sarili. Sa ibaba ay mga halimbawa ng bawat isa. Ang \$ (varname) ay isang sumira (o associative array) ng lahat ng impormasyon sa form submission - ito ay karaniwang ang (\$ postvar) o (\$) sessionvar variable, ngunit maaaring ito ay binuo ng mga pasadyang."; +$LANG["text_add_form_step_2_text_2"] = "Ipasok ang URL ng iyong pahina "thankyou " dito. Ito ay kung saan mo nais mga tao na mapupunta sa matapos ang form ay naisumite na."; +$LANG["text_add_form_step_3_para_1"] = "Ang pahinang ito ay naglilista ng lahat ng mga patlang sa iyong mga form submission. Mangyaring suriin ang bawat patlang at alisin ang anumang na hindi mo na kailangan na naka-imbak para sa bawat pagsumite. Kung tinanggal mo ang isang may-bisang patlang sa pamamagitan ng aksidente, o hilingin na baguhin ang impormasyon na naka-imbak sa iyong form, bumalik sa nakaraang pahina upang magpadala ng isang bagong pagsumite ng pagsubok."; +$LANG["text_add_form_step_3_para_2"] = "Tandaan: kung ikaw ay ang pagpapadala ng maramihang halaga sa pamamagitan ng mga kahon ng tsek o isang multi-piliin ang kahon, siguraduhin na ang iyong pangalan patlang na nagtatapos sa [] mga character (tingnan ang mga gumagamit ng mga babasahin para sa karagdagang impormasyon)."; +$LANG["text_add_form_step_3_text_1"] = "Narito kung saan masaya ang mga pagsisimula! Sa puntong ito, ang Form Tools ay naghihintay para sa pagsusumite ng isang pagsubok mula sa iyong form. Ito ay gamitin ang form pagsumite na ito upang malaman kung anong impormasyon ang dapat na naka-imbak sa database."; +$LANG["text_add_form_step_3_text_2"] = "pamamagitan ng pagturo ng iyong form sa Form Kasangkapan"; +$LANG["text_add_form_step_3_text_3"] = "gamit ang Form sa Tools API"; +$LANG["text_add_form_step_3_text_4"] = "Upang makatulong na isama ang iyong form, iminumungkahi namin na basahin mo ang isa sa mga sumusunod na mga Tutorials:"; +$LANG["text_add_form_step_3_text_5"] = "Ipaliwanag nila kung paano mag-set up ang iyong form sa paghahanda para sa pagsumite ng pagsubok, at isama ang iba pang impormasyon na maaring ng tulong. Ang linya ng PHP kakailanganin mo ay:"; +$LANG["text_add_form_step_3_text_6"] = "Tinitiyak nito ang data ay aktwal na naipadala sa Form ng Tools. Kapag kayo ay inilagay sa pamamagitan ng iyong panubok na submission, i-click ang button sa ibaba."; +$LANG["text_add_form_step_3_text_7"] = "Sa pahina ng NAUNANG sa iyong huling "pahina ng pasasalamat", siguraduhin na idagdag ang sumusunod na parameter sa \$ params variable:"; +$LANG["text_add_form_step_5_para_1"] = "Ang database ay nai-set up na para sa mga form na ito at ang form ay aktibo para gamitin. Kung ginawa mo ang pagsumite pamamagitan ng pagturo ng iyong form sa process.php, bumalik lamang sa iyong form at alisin ang mga sumusunod na nakatago patlang:"; +$LANG["text_add_form_step_5_para_2"] = "Pagkatapos bisitahin ang iyong "pahina ng pasasalamat" sa mga walang laman ang mga session. Kapag ito ay tapos na, lahat ng mga bagong form ng pagsusumite ay na-proseso at naka-imbak sa pamamagitan ng Form Tools. Subukan ang paggawa ng pagsumite ng isang o dalawang upang mapatunayan ang impormasyon ay ang lahat ng mag-upload ng tama."; +$LANG["text_add_form_step_5_para_3"] = "Kung nais mong pinuhin ang iyong mga form para sa mga opsyon tulad ng awtomatikong pagta-email, pagdagdag ng karagdagang form na mga patlang patlang, o sa pagpapasadya ng mga uri ng form field, maaari mong i-edit ang iyong form sa anumang point."; +$LANG["text_add_form_step_5_para_4"] = "Sapagkat ang iyong form na naglalaman ng mga file na mag-upload ng mga larangan, kailangan mong i-configure ang bawat patlang upang tukuyin ang file folder na mag-upload, ano ang mga file ay pinahihintulutan at. Ito ay matatagpuan sa Display tab ng i-edit ang form na pahina."; +$LANG["text_add_form_step_5_para_5"] = "Kung ang pagsumite ay ipinadala sa pamamagitan ng API, baguhin ang ft_api_init_form_page linya sa unang pahina ng iyong form sa:"; +$LANG["text_add_submission_button"] = "Ang Magdagdag Isinumite sa pindutan ay lumilitaw lamang para sa Pananaw na ang "Mayo magdagdag ng mga submissions " pagpipilian na set sa "oo "."; +$LANG["text_admin_email_placeholder_info"] = "Ito ay ang email address ng administrator Form Tools, na tinukoy sa mga setting ng iyong account. Ito lamang outputs ang email address, kaya kung gusto mong gamitin bilang isang link sa HTML, kailangan mong ibalot ito sa isang tag ng <a>, tulad ng ito:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Din ang default na login page tema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Una, mangyaring pumili ng uri ng iyong form."; +$LANG["text_client_form_page"] = "Ang pahinang ito ay naglilista ng lahat ng mga forms at Views itinalaga sa client na ito. Tip: in order para sa kanila upang makita ang pagsusumite ng isang form, ang kailangan nila na itinalaga sa hindi bababa sa isang View."; +$LANG["text_client_map_filters_desc1"] = "Client Mapa ng mga filter sa inyo na limitahan ang mga submissions na lumilitaw sa mga ito Tingnan sa pamamagitan ng paggawa ng mga mapa ang mga halaga sa patlang ng isang form na ito upang ang mga halaga sa isang account ng kliyente."; +$LANG["text_client_no_forms"] = "Kayo ay kasalukuyang walang paraan na magagamit para sa pagsusuri."; +$LANG["text_client_welcome"] = "Maligayang pagdating! Ang programa ng mga tindahan na ang lahat ng impormasyon na isinumite sa pamamagitan ng iyong mga bisita sa website. Upang tingnan ang mga submissions para sa isang partikular na form na i-click lamang sa link TINGNAN, o tingnan ang pinakakaliwa navigation menu para sa iba pang mga pagpipilian."; +$LANG["text_config_file_created"] = "Ang iyong config.php file ay nalikha na."; +$LANG["text_config_file_not_created"] = "Hindi namin mai-lumikha ng iyong config.php file. Ikaw ay kailangan na gumawa ng file mano-mano."; +$LANG["text_config_file_not_created_instructions"] = "Kopyahin at idikit ang mga nilalaman mula sa seksyon sa ibaba sa isang file na tinatawag na config.php at i-upload ito sa pamamagitan ng FTP sa Form Hanapin / global na folder (ang folder na naglalaman din ng ilang mga iba pang mga file at direktoryo, isang file na tinatawag na library.php)."; +$LANG["text_confirm_delete_form"] = "Oo, gusto kong tanggalin ang form na ito"; +$LANG["text_create_admin_account"] = "Ngayon kami ay pagpunta sa gumawa ng account ng tagapangasiwa. Ito ay ginamit para sa pamamahala ng lahat ng aspeto ng Form Tools, tulad ng pagdadagdag ng mga form at paggawa ng account ng kliyente."; +$LANG["text_create_new_client_account"] = "Gamitin ang form sa ibaba para lumikha ng isang bagong account ng kliyente. Lahat ng mga patlang ay kinakailangan."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "makita PHP {\$datefunctionlink} function para sa formatting mga opsyon"; +$LANG["text_default_file_settings_page"] = "Ang pahinang ito ay naglalarawan sa mga file na i-upload ang mga setting para sa iyong pag-install Form Tools. Ang mga patakaran ng mag-apply sa lahat ng mga file na nai-upload sa pamamagitan ng Form Tools, maliban kung malinaw na binigay nang importansiya para sa isang indibidwal na larangan form. Tandaan: kung baguhin mo ang pag-upload ng folder pagkatapos ng mga file na na-upload na, sila ay awtomatikong inilipat na sa bagong folder."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Bago magpatuloy, kailangan mong i-update ang iyong / themes / default / cache folder upang payagan ang buong basahin at isulat ang mga pahintulot. Kapag ito ay tapos na, ang mensahe na ito ay nawawala at maaari mong i-install ang script."; +$LANG["text_default_values_in_view"] = "Ang seksyon na ito ay opsyonal. Lahat ng mga submissions na nilikha sa View na ito ay naglalaman ng ang mga halaga ng default na tinukoy dito."; +$LANG["text_delete_all_forms"] = "Gusto kong tanggalin ang lahat ng mga file na na-upload sa pamamagitan ng form na ito"; +$LANG["text_delete_form_warning"] = "Sigurado ka bang gusto mong burahin ang form na ito? Ang aksyon na ito ay hindi maaaring bawiin. Ang lahat ng data ay mawawala ng tuluyan!"; +$LANG["text_edit_admin_menu_page"] = "Maaari mong i-edit ang iyong mga menu sa ibaba. Upang masiguro na palagi mong magkaroon ng access sa lahat ng mga pag-andar na magagamit sa loob ng Form Tools, ang mga sumusunod na mga pahina ay kailangan: Forms, Kliyente, ang iyong Account, Modules, setting at Logout."; +$LANG["text_edit_client_menu_page"] = "Ang bahaging ito ay nagbibigay-daan customize mo sa kaliwang column nabigasyon para sa bawat user. Maaari kang gumawa ng iba't ibang client mga menu na gusto mo at magtalaga ng anumang mga account sa isa sa kanila. Ayon sa default mayroong dalawang menu: isa para sa iyo, ang administrator, at isa para sa lahat ng mga account kliyente. Ang mga administrator account ay maaaring baguhin ngunit hindi tinanggal."; +$LANG["text_edit_tab_summary"] = "Kung nais mong group ang mga patlang na ito Tingnan sa mga tab, ipasok lamang ang mga pangalan ng tab sa ibaba. Pagkatapos kayo ay tapos na, piliin ang naaangkop na tab para sa bawat grupo ng patlang sa tab Patlang."; +$LANG["text_edit_view_list_page"] = "Ang tab na ito kontrol kung aling mga patlang ang lilitaw bilang mga haligi sa pahina ng Listahan ng Isinumite, at ang ilang karagdagang mga setting para sa mga patlang. Tandaan: Inirerekumenda namin sa iyo na magdagdag ng hindi hihigit sa 4 o 5 ng mga pinaka-mahalagang mga patlang sa View."; +$LANG["text_email_settings_intro"] = "Ang pahinang ito ay nagbibigay-daan sa iyo na makilala kung alin sa inyong mga patlang ng form sa tindahan ng mga email at sa kanilang mga kaukulang pangalan. Matapos mong itakda ang mga ito dito, maaari mong gamitin ang mga ito sa iyong email ng mga template ng tatanggap. Ang bahaging ito ay nasa opsyonal."; +$LANG["text_email_tab_summary"] = "Seksyon na ito ang nagpapahintulot sa inyo na makagawa ng anumang bilang ng mga email na ipapadala tuwing ang iyong form ay isinumite, at iba pang nag-trigger."; +$LANG["text_email_template_tab"] = "Seksyon na ito ang nagbibigay-daan sa malaman ninyo kung ano ang nilalaman ay lilitaw sa email. Kung nais mong ipadala ang iyong email bilang lamang ng text o email, lamang ipasok ang isang halaga para sa section na iyon. Kapag nagpasok ka ng isang halaga para sa pareho, ang email ang ipapadala sa parehong format."; +$LANG["text_email_template_text_1"] = "Nagkaroon ng isang pagsumite ng ginawa sa pamamagitan ng iyong form, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Nagkaroon ng isang pagsumite ng ginawa sa pamamagitan ng iyong form, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Salamat sa inyong pagsumite!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Error na mensahe upang ipakita kung ang patlang na nabigo sa pagpapatunay"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Panlabas na form ay ang mga forms na umiiral na sa iyong website, o kahit saan sa web. Piliin ang pagpipiliang ito kung mayroon kang ang iyong sariling form kung saan mo nais na isama sa mga tool ng Form."; +$LANG["text_fields_tab_summary"] = "Inililista ng pahinang ito ang lahat ng iyong mga patlang sa form. Upang kontrolin kung paano lumilitaw ang mga ito kapag nagba-browse pagsusumite, makita ang tab na Mga Pananaw. Ang pagtatanggal ng isang patlang sa pahinang ito ay tanggalin ito mula sa lahat ng pagsusumite, kaya't mangyaring maging maingat!"; +$LANG["text_file_extension_info"] = "Ipasok ang file extension na pinaghihiwalay ng mga kuwit (hal. jpg, gif, png) o iwanang blangko upang pahintulutan ang anumang uri ng file."; +$LANG["text_file_field_placeholders_info"] = "File na larangan ay may dalawang espesyal na placeholders: FILEURL at FILENAME. FILEURL ay ang buong URL sa file, kaya maaari mong i-link nang direkta sa ito sa iyong email; FILENAME ay lamang ang pangalan ng file."; +$LANG["text_filters_page"] = "Tanging ang mga submissions na nakakatugon sa mga tuntunin mong tukuyin sa ibaba ay lalabas sa mga ito View."; +$LANG["text_filters_tips"] = "Para sa mga tips sa kung paano gamitin ang mga filter pagsumite, tingnan ang User Documentation."; +$LANG["text_forgot_password"] = "Walang problema. Ilagay lamang ang iyong username sa ibaba at ang iyong login impormasyon ay ipapadala sa iyong email address sa file. Kung nakalimutan mo ang iyong username, mangyaring mag-email sa administrator ng site sa {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Ang form na ito ay naglalaman ng isa o higit pa-upload ng file na patlang:"; +$LANG["text_form_placeholder_info"] = "Ang mga sumusunod na mga placeholder ay maaaring gamitin sa anumang email na template at patlang ng wika placeholder, hindi alintana ng anumang Tingnan ang email template ay itinalaga sa. Ang mga Tanong placeholder ay ang tiyak na katanungan form; ang kasagutan placeholder ay ang mga sagot sa bawat tanong."; +$LANG["text_form_submission_date_placeholder"] = "Ang petsa kapag ang pagsumite ng ginawa."; +$LANG["text_form_tools_form_url"] = "Ang buong URL ng ang form. Lamang ito ay may halaga para sa mga Panlabas na form."; +$LANG["text_form_tools_login_url"] = "Ang pag-login URL para sa Form ng Tools."; +$LANG["text_form_view_permission_info_admin"] = "Tandaan: ang form na ito ay kasalukuyang may Administrator access ng uri, kaya wala ng client account ay upang makita ang Tingnan."; +$LANG["text_form_view_permission_info_private"] = "Tandaan: ang form na ito ay kasalukuyang ay Pribado uri ng access kaya sa Public at Private pagpipilian dito ay limitado sa na subset ng mga kliyente."; +$LANG["text_ft_installed"] = "Maligayang bati, na Form Kasangkapan ay matagumpay na na-install!"; +$LANG["text_global_placeholder_info"] = "Ang mga ito placeholders na maaaring gamitin sa anumang mga template at anumang form."; +$LANG["text_group_name_explanation"] = "Para sa dagdag na mga patlang sa pamamagitan ng mga Magdagdag ng Form na proseso, ang halagang ito ay pre-filled na ang display text ng kahit anong patlang na gumagamit ng halaga. Maaari mong hilingin na baguhin ito sa mas mahusay na makilala ang mga nilalaman."; +$LANG["text_install_create_config_file"] = "Form Tools mga tindahan ng iyong server at database ng mga setting sa isang file na tinatawag na config.php, natagpuan sa iyong / global / folder. I-click ang "Lumikha ng File" na pindutan upang awtomatikong mabuo ang file sa iyong server."; +$LANG["text_install_create_database_tables"] = "Ngayon kami ay pagpunta sa gumawa ng Form Tools mga talahanayan ng database. Ang hakbang na ito ay nangangailangan ng database ng kanyang sarili upang magkaroon na nalikha. Kung hindi ka sigurado kung paano gawin ito, mangyaring makipag-ugnayan sa iyong hosting provider."; +$LANG["text_install_db_tables_error_tip_1"] = ""Hindi kilalang MySQL Server Host" ay karaniwang nangangahulugan na ang mga hostname na iyong ibinigay ay hindi tama. Siguro subukan ang setting na ito sa "localhost" - ito ay isang karaniwang paraan upang sumangguni sa "lokal" database sa isang web server."; +$LANG["text_install_db_tables_error_tip_2"] = ""Hindi makakonekta sa mga lokal na MySQL server sa pamamagitan ng socket" ay nangangahulugan na ang database ng hostname patlang na muli ay hindi tama."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access tinanggihan para sa user:" ay nangangahulugan na may isang problema sa iyong username / password na kumbinasyon."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access tinanggihan para sa user: ... sa database ..." ay nangangahulugan na bagaman ang iyong username at password na iyong ibinigay ay tama, ito ay hindi makakonekta sa mga partikular na database sa account na iyon. Ito ay maaaring nangangahulugan na ang database ng alinman sa iyong pangalan ay hindi tama, o ang user na ito account ay hindi kaugnay na database."; +$LANG["text_install_email_content_text"] = "Mayroong maraming mga mapagkukunan sa aming website upang matulungan kang makapagsimula, kabilang ang aming online na dokumentasyon (https://docs.formtools.org) at mga tutorial (https://docs.formtools.org/tutorials). Kung natuklasan kang natigil o may tanong, magtanong sa github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Paumanhin, ang Form Tools ay hindi mapapatakbo sa iyong server . Paki-click dito para sa minimum na mga kinakailangan ."; +$LANG["text_install_system_check"] = "Ang pahinang ito ay nagpapatakbo ng ilang pagsusulit sa inyong sistema upang matiyak na ito ay mapapatakbo Tools Form."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Panloob na mga form umiiral lamang sa loob ng Tools Form - hindi sa ibang lugar sa iyong site. Lamang Form Tools account ng gumagamit ay may access sa form. Piliin ang pagpipiliang ito kung wala kang isang umiiral na form."; +$LANG["text_internal_form_intro"] = "Gamitin ang form sa ibaba upang lumikha ng isang bagong Internal form. Lahat ng mga setting, kabilang ang numero at nilalaman ng form ang mga patlang ay maaaring nagbago at isinaayos mamaya."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Upang makapag-login at gamitin ang Hanapin Form, kailangang mayroon ka ng javascript sa iyong browser. Mangyaring paganahin ang mga ito ngayon, at i-click ang refresh sa iyong browser."; +$LANG["text_last_modified_date_explanation_c"] = "Ang huling pagsumite ng oras na ito ay binago. Para sa mga bagong submissions, ito ay ang parehong bilang:"; +$LANG["text_limit_email_content_desc"] = "Ang pagpipiliang ito ay gumagana lamang para sa HTML at teksto ng nilalaman na binuo sa Smarty mga loop."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(tanging mga listahan ng Views sa isa o maraming natukoy na mga filter)"; +$LANG["text_log_in_to_ft"] = "Mag-log in sa Form Kasangkapan"; +$LANG["text_login"] = "Mangyaring mag-log in sa ibaba upang ma-access ang (\$) program_name Administration Panel. Kung nakalimutan mo ang iyong password, i-click dito."; +$LANG["text_login_info"] = "Tulad ng hiniling, dito ay ang inyong login impormasyon."; +$LANG["text_name_of_form"] = "Ang pangalan ng form."; +$LANG["text_no_clients"] = "Sa kasalukuyan ay may walang mga kliyente sa database. Upang magdagdag ng bagong account ng kliyente, i-click ang Magdagdag ng Client button sa ibaba."; +$LANG["text_no_clients_found"] = "Walang kliyente ang natagpuan. Subukan broadening sa iyong mga pamantayan sa paghahanap."; +$LANG["text_no_fields_in_view"] = "Tingnan ang mga ito ay walang anumang mga patlang sa ito. I-click ang link sa ibaba."; +$LANG["text_no_forms"] = "Sa kasalukuyan, walang paraan sa database. Upang magdagdag ng isang bagong form, i-click ang Magdagdag ng Form button sa ibaba."; +$LANG["text_no_forms_found"] = "Walang mga form ay natagpuan."; +$LANG["text_no_forms_found_search"] = "Walang mga form ay natagpuan. Subukan broadening ang iyong pamantayan sa paghahanap."; +$LANG["text_no_modules_found"] = "Walang mga module ang natagpuan. Subukan broadening sa iyong mga pamantayan sa paghahanap."; +$LANG["text_no_recipients_added"] = "Walang mga tatanggap ay idinagdag."; +$LANG["text_no_search_results"] = "Walang mga resulta na ito ng pamantayan sa paghahanap / View."; +$LANG["text_no_submissions_found"] = "Paumanhin, walang submissions ang natagpuan."; +$LANG["text_no_themes"] = "Wala kang anumang mga tema tinukoy. I-click ang pindutan sa ibaba upang i-refresh ang listahan ng iyong tema , o suriin ang Form Tools user papeles para sa impormasyon tungkol sa pagdaragdag ng mga tema."; +$LANG["text_non_deletable_fields"] = "Ang patlang na ito ay ginagamit sa pamamagitan ng Core ang script at hindi maaaring ma-edit o tinanggal nang hindi nagdudulot incompatibilities. Kung nais mong gumawa ng mga pagbabago sa patlang ng uri, gumawa ng kopya nito at i-edit ang kopya."; +$LANG["text_option_list_group_explanation"] = "Kung ito ay napili, ito ay nagbibigay-daan sa group ng iyong mga pagpipilian. Paano ang mga grupo ay ipinapakita depende sa patlang ng uri na gamit ang listahan ang pagpipiliang ito."; +$LANG["text_option_list_page"] = "Radio ng mga pindutan, mga checkbox, dropdowns at multi-piliin ang dropdown patlang lahat magbigay ng user na may maramihang mga pagpipilian mula sa kung saan maaari nilang piliin ang isa o higit pang mga item. Sa Tools Form, ang mga ito ay kilala bilang mga Listahan ng Pagpipilian. Sa pangkalahatan, ang mga ito ay nilikha nang awtomatiko ng Magdagdag ng Panlabas na proseso ng Form, ngunit maaari mong mano-manong magdagdag o i-edit ang iyong mga listahan ng pagpipilian sa ibaba kung ang iyong mga pagbabago ng form ng nilalaman o tayuan ng mga patlang na ginagamit lamang sa loob."; +$LANG["text_option_list_used_by_fields"] = "Pagpipilian List na ito ay ginagamit sa pamamagitan ng maramihang mga patlang ng form. Kung i-update ang impormasyon sa ibaba, ito ay nabago para sa lahat ng mga patlang ( makita ang Form Fields tab upang makita ang listahan ng mga patlang ). Kung nais mong i-update ang mga halaga para sa isa, o isang subset ng mga patlang na kasalukuyang nakatalaga , mag-click dito upang lumikha ng isang bagong List Pagpipilian na may parehong halaga bilang isang ito. Pagkatapos ay maaari mong italaga ang mga patlang ng form na gusto mo sa bagong grupo."; +$LANG["text_public_form_omit_list_page"] = "Pampublikong forms magbibigay sa iyo ng benepisyo ng pagpapaalam sa lahat ng mga account nang kliente access sa mga ito nang hindi na kinakailangan upang magtalaga ng mano-mano ang bawat isa nang client sa kanila. Ang pahinang ito ay nagpapahintulot sa iyo na ituro ang mga kliyente na maaaring hindi ma-access ang form na ito, kahit na ang form na ito ay minarkahan bilang publiko."; +$LANG["text_public_view_omit_list_page"] = "Pampublikong Views magbibigay sa iyo ng benepisyo ng pagpapaalam sa lahat ng mga account nang kliente access sa mga ito nang hindi na kinakailangan upang magtalaga ng mano-mano ang bawat isa nang client sa kanila. Ang pahinang ito ay nagpapahintulot sa iyo na ituro ang mga kliyente na maaaring hindi ma-access ang mga partikular View."; +$LANG["text_reference_tab_info"] = "Inililista ng pahinang ito ang lahat ng mga placeholder na magagamit para sa iyong form. Placeholder ay mga string na maaaring ginagamit sa mga template ng email, at mga patlang na minarkahan ng isang espesyal na icon placeholder . Kapag ipinasok sa isang patlang, dynamic na sila ay na-convert ng naaangkop na halaga kapag ang patlang na ay tiningnan o ang email ay naipadala."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Repasuhin ang mga user na babasahin"; +$LANG["text_send_email_from_edit_submission_page"] = "Isama ang opsyon na ipadala ito sa email mula sa I-edit ang Submission pahina"; +$LANG["text_smart_fill_option_list_problem"] = "Hindi namin nagawang upang Smart Punan ang iyong mga pagpipilian sa patlang. Gayunpaman, bilang isang kahalili, maaari mong subukang mag-upload ng isang kopya ng iyong mga pahina ng form sa patlang sa ibaba. Tandaan: huwag mag-upload ng mga raw PHP na pahina (o iba pang mga na server-side na code) - lamang i-upload ang HTML na bersyon. Upang makakuha ng ito, tingnan at i-save ang pahina mula sa iyong web browser."; +$LANG["text_submission_ip_address"] = "Ang IP Address ng gumagamit na ginawa ang submission."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Gamitin ang form sa ibaba upang tingnan ang alinman o ipadala ang inyong sarili ng isang email na nabuo mula sa email na ito template. Ang email ay ipinadala lamang sa email na tinukoy sa ibaba, ang main, cc at Bcc email address ng mga tatanggap ay hindi pinansin habang testing."; +$LANG["text_test_email_templates_no_submissions"] = "Upang makapag-test ang iyong email template, dapat mo munang ilagay sa pamamagitan ng hindi bababa sa isang form submission."; +$LANG["text_theme_page_intro"] = "Ang pahinang ito ay naglilista ng lahat ng iyong mga tema. Mag-click sa isang thumbnail para makita ang mas malaking halimbawa ng mga estilo sa tema's. Ang mga "naka-enable" na checkbox nagtatakda kung o hindi ang tema na maaaring piliin ng mga kliyente. Upang mag-browse sa lahat ng mga magagamit na tema, bisitahin ang website ng Form Tools."; +$LANG["text_tutorial_adding_first_form"] = "Tutorial: Pagdaragdag ng iyong unang form!"; +$LANG["text_unique_submission_id"] = "Ang pagsumite ng mga natatanging ID."; +$LANG["text_unused_option_list"] = "Ang pagpipilian listahan na ito ay hindi ginagamit sa pamamagitan ng anumang form ng mga patlang."; +$LANG["text_upgraded"] = "Ang iyong pag-install ay na-upgrade na sa {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Pagpipilian List na ito ay ginagamit sa pamamagitan ng mga sumusunod na patlang."; +$LANG["text_view_fields_info"] = "Ang tab na ito ay kontrol kung aling mga patlang ipakita up kapag nag-e-edit ng isang pagsumite ng sa View, ang kanilang mga pagkakasunod-sunod at kung sila ay mae-edit o hindi."; +$LANG["text_view_tab_summary"] = "Ang tab na ito ay nagbibigay-daan sa kang lumikha ng iba't ibang mga paraan upang group at ayusin ang iyong data. Views hayaan mong lumikha ng mga pasadyang mga subset ng iyong data sa form sa split ito sa pamahalaang chunks, at sa limitasyon kung ano ang mga kliyente ay maaaring makita o mag-edit ng."; +$LANG["validation_account_disabled"] = "Paumanhin, ang iyong account ay hindi pinagana."; +$LANG["validation_account_not_recognized"] = "Paumanhin, ang username na ito ay hindi kinikilala."; +$LANG["validation_account_not_recognized_info"] = "Paumanhin, ang username na ay hindi natagpuan. Mangyaring subukan muli, o makipag-ugnayan sa administrator ng site sa address sa ibaba."; +$LANG["validation_account_pending"] = "Ang iyong user account ay nakabinbin sa pamamagitan ng pag-apruba ng isang administrator."; +$LANG["validation_check_delete_client"] = "Sigurado ka bang gusto mong burahin ang account nang kliente?"; +$LANG["validation_client_password_missing_number"] = "Ang client password ay dapat maglaman ng hindi bababa sa isang numero (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Ang client password ay dapat maglaman ng hindi bababa sa isa sa mga sumusunod na mga karakter: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Ang client password ay dapat maglaman ng hindi bababa sa isang uppercase sulat."; +$LANG["validation_client_password_too_short"] = "Ang client password ay kailangang hindi bababa sa {\$number} character ang haba."; +$LANG["validation_col_name_is_reserved_word"] = "Paumanhin, ang database ng pangalan ng hanay ay isang reserved trabaho sa MySQL. Mangyari lamang na palitan ang pangalan nito!"; +$LANG["validation_db_name"] = "Ang mga pangalan ng database ay hindi maaaring maglaman ng mga panahon o slashes."; +$LANG["validation_db_not_updated_invalid_input"] = "Ang database ay hindi maaaring-update. Mangyaring suriin upang makita ang halaga na iyong ipinasok ay balido."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Paumanhin, ang default na administrador at client tema na dapat palaging naka-enable."; +$LANG["validation_default_phone_num_required"] = "Mangyaring punan ang buong numero ng telepono para sa <b> { \$ patlang} </ b> na patlang - numero lamang."; +$LANG["validation_default_rule_alpha"] = "Mangyaring lamang ipasok ang mga titik at numero para sa <b> { \$ patlang} </ b> patlang."; +$LANG["validation_default_rule_letters_only"] = "Mangyaring lamang ipasok ang mga titik para sa <b> { \$ patlang} </ b> patlang."; +$LANG["validation_default_rule_numbers_only"] = "Mangyari lamang na lamang na ipasok ang mga numero para sa <b> { \$ patlang} </ b> patlang."; +$LANG["validation_default_rule_required"] = "Mangyaring magpasok ng halaga para sa <b> { \$ patlang} </ b> na patlang."; +$LANG["validation_default_rule_valid_email"] = "Mangyaring magpasok ng isang wastong email address para sa <b> { \$ patlang} </ b> na patlang."; +$LANG["validation_delete_form_confirm"] = "Paki-check ang kahon upang kumpirmahin na nais mong tanggalin ang form na ito."; +$LANG["validation_delete_non_empty_option_list"] = "Babala! Pagpipilian List na ito ay ginagamit sa pamamagitan ng isa o higit pang mga patlang sa form. Tinatanggal ito ay gumawa ng mga patlang itigil upang gumana nang maayos."; +$LANG["validation_display_names_incomplete"] = "Mangyaring ipasok ang isang halaga para sa lahat ng mga Ipakita ang Pangalan, o i-click ang opsyon na Smart Punan na ipasok ang mga ito dynamic."; +$LANG["validation_duplicate_form_field_name"] = "Ikaw ay hindi maaring magkaroon ng maramihang mga patlang na may parehong pangalan ng patlang."; +$LANG["validation_email_not_found_or_invalid"] = "Paumanhin, ang email na kaugnay sa iyong account alinman ay hindi umiiral o hindi."; +$LANG["validation_folder_invalid_permissions"] = "Upang patakbuhin ang pagsusuri, ang pahintulot ay kailangang itakda sa mga mag-upload ng folder na payagan para sa pagbabasa at pagsusulat ng mga file (777 on Unix)."; +$LANG["validation_folder_not_writable"] = "Ang folder na ito ay hindi writeable."; +$LANG["validation_internal_form_too_many_fields"] = "Paumanhin, maaari ka lamang nilikha form sa 1000 patlang o mas mababa."; +$LANG["validation_invalid_admin_email"] = "Mangyaring ipasok ang email address ng isang may-bisang adminstrator's."; +$LANG["validation_invalid_admin_username"] = "Ang iyong username ay maaari lamang na binubuo ng mga alphanumeric character (az at 0-9)."; +$LANG["validation_invalid_client_username"] = "Pangalan ng user ang client ay maaari lamang ay binubuo ng mga alphanumeric characters (az at 0-9)."; +$LANG["validation_invalid_client_username2"] = "Paumanhin, ang username ay maaari lamang maglaman ng mga titik, numero at ang salungguhit na karakter. Mangyaring ipasok ang isang bagong username."; +$LANG["validation_invalid_column_name"] = "Ang pangalan Haligi ay maaari lamang alphanumeric (AZ, 0-9). Paki-check ang mga pangalan ng haligi."; +$LANG["validation_invalid_custom_from_email"] = "Mangyaring magpasok ng isang may-bisang pasadyang 'Mula sa' email address."; +$LANG["validation_invalid_custom_reply_to_email"] = "Mangyaring ipasok Sumagot isang may-bisang pasadyang '-sa' email address."; +$LANG["validation_invalid_default_sessions_timeout"] = "Mangyaring magpasok ng isang may-bisang halaga (isang numero) para sa mga session ng timeout ng default."; +$LANG["validation_invalid_email"] = "Mangyaring magpasok ng isang wastong email address."; +$LANG["validation_invalid_email_id"] = "Paumanhin, na ang isang balidong email ID."; +$LANG["validation_invalid_folder"] = "Paumanhin, ito ay hindi lilitaw upang maging isang may-bisang folder."; +$LANG["validation_invalid_form_field_names"] = "Form ng mga patlang ay maaari lamang alphanumeric at underscore (AZ, 0-9, _), na walang puwang."; +$LANG["validation_invalid_num_clients_per_page"] = "Mangyari lamang na ipasok ang mga numero sa mga Kliyente Num Per Page patlang."; +$LANG["validation_invalid_num_emails_per_page"] = "Mangyari lamang na ipasok ang numero para sa mga email na sa bawat pahina."; +$LANG["validation_invalid_num_form_fields"] = "Mangyari lamang na lamang na ipasok ang mga numero sa Bilang ng mga Patlang patlang."; +$LANG["validation_invalid_num_forms_per_page"] = "Mangyari lamang na ipasok ang numero sa Num Forms Per Page patlang."; +$LANG["validation_invalid_num_menus_per_page"] = "Mangyari lamang na ipasok ang numero para sa mga menu sa bawat pahina."; +$LANG["validation_invalid_num_modules_per_page"] = "Mangyari lamang na ipasok ang numero sa Num Modules Per Page patlang."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Mangyaring ipasok lamang ang mga numero sa mga Listahan ng Num Pagpipilian Per Page patlang."; +$LANG["validation_invalid_num_submissions_per_page"] = "Mangyaring magpasok ng isang balidong numero ng pagsusumite sa bawat pahina."; +$LANG["validation_invalid_sessions_timeout"] = "Mangyaring magpasok ng isang may-bisang session ng timeout (integers lamang!)."; +$LANG["validation_invalid_tab_assign_values"] = "Mangyari lamang na ipasok ang numero sa ang 'mula sa' at 'sa' na larangan."; +$LANG["validation_invalid_table_prefix"] = "Mangyaring ipasok ang isang database prefix ay binubuo ng mga titik at ang salungguhit character lamang."; +$LANG["validation_invalid_upload_folder"] = "Ang iyong pag-install ng server ng PHP ay isang hindi wastong setting para sa upload_tmp_dir halaga. "{\$upload_folder}" ay hindi isang wastong folder."; +$LANG["validation_invalid_url"] = "Mangyaring magpasok ng isang wastong URL."; +$LANG["validation_invalid_username"] = "Ang iyong username ay maaari lamang ay binubuo ng mga alphanumeric characters (az at 0-9)."; +$LANG["validation_is_form_active"] = "Mangyaring ipahiwatig kung ang form ay aktibo o hindi."; +$LANG["validation_menu_name_taken"] = "Paumanhin, ang menu na ito ang pangalan ay nakuha na. Mangyaring pumili ng isang bagong pangalan."; +$LANG["validation_modules_search_no_status"] = "Mangyaring piliin ang alinman sa Pinagana o Disabled checkbox."; +$LANG["validation_no_access_type"] = "Mangyaring ipasok ang mga uri ng access."; +$LANG["validation_no_account_logout_url"] = "Mangyaring ipasok ang iyong logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Mangyaring muling ipasok ang iyong bagong password."; +$LANG["validation_no_account_password_confirmed2"] = "Mangyaring muling ipasok ang bagong password."; +$LANG["validation_no_admin_email"] = "Mangyaring ipasok ang email address ng tagapangasiwa."; +$LANG["validation_no_admin_theme"] = "Mangyari lamang na piliin ang mga tema para sa mga tagapangasiwa ng account."; +$LANG["validation_no_admin_theme_swatch"] = "Mangyaring pumili ng isang pakita ng kayo para sa tema ng administrator."; +$LANG["validation_no_client_email"] = "Mangyaring ipasok ang email address ng kliyente."; +$LANG["validation_no_client_first_name"] = "Mangyaring ipasok ang unang pangalan ng kliyente."; +$LANG["validation_no_client_last_name"] = "Mangyaring ipasok ang huling pangalan ng kliyente."; +$LANG["validation_no_client_login_page"] = "Mangyari lamang na ipaalam kung aling pahina ng client ay dapat na-redirect sa kapag sila ay nag-log in"; +$LANG["validation_no_client_password"] = "Mangyaring ipasok ang password ng kliyente."; +$LANG["validation_no_client_theme_swatch"] = "Mangyaring pumili ng isang default na pakita ng kayo para sa mga account ng kliyente."; +$LANG["validation_no_client_username"] = "Mangyaring ipasok ang username ng kliyente."; +$LANG["validation_no_column_name"] = "Mangyaring ipasok ang lahat ng mga pangalan ng haligi, o i-click ang Smart Punan button para awtomatikong punan ang mga ito."; +$LANG["validation_no_column_selected"] = "Mangyaring pumili ng hindi bababa sa isang field na lumitaw bilang isang haligi sa pahina sa pagsumite ng listahan."; +$LANG["validation_no_custom_from_email"] = "Mangyaring ipasok ang mga pasadyang 'Mula sa' email address."; +$LANG["validation_no_custom_recipient_email"] = "Mangyaring ipasok ang mga pasadyang tatanggap ng email address."; +$LANG["validation_no_custom_reply_to_email"] = "Mangyaring ipasok Sumagot ang pasadyang '-sa' email address."; +$LANG["validation_no_date_format"] = "Mangyaring ipasok ang isang format ng petsa."; +$LANG["validation_no_db_column_single"] = "Mangyaring ipasok ang pangalan Haligi ng Database."; +$LANG["validation_no_db_hostname"] = "Mangyaring ipasok ang hostname database."; +$LANG["validation_no_db_name"] = "Mangyaring ipasok ang database ng pangalan."; +$LANG["validation_no_db_username"] = "Mangyaring ipasok ang username sa database account."; +$LANG["validation_no_default_client_theme"] = "Mangyaring piliin ang default na tema para sa lahat ng mga bagong account nang kliente."; +$LANG["validation_no_default_language"] = "Mangyaring piliin ang default na wika para sa iyong pag-install ng Form Tools."; +$LANG["validation_no_default_sessions_timeout"] = "Mangyaring ipasok ang mga default na session ng timeout para sa mga user account."; +$LANG["validation_no_display_text"] = "Mangyaring ipasok ang Ipakita ang Teksto para sa bawat patlang."; +$LANG["validation_no_display_text_single"] = "Mangyaring ipasok ang halaga Teksto ng Display."; +$LANG["validation_no_edit_submission_page_label"] = "Mangyaring ipasok ang pahina ng I-edit ang Submission label."; +$LANG["validation_no_email"] = "Mangyaring ipasok ang iyong email address."; +$LANG["validation_no_email_config_field"] = "Mangyaring tukuyin kung saan ang form na field ay ang email na patlang."; +$LANG["validation_no_email_content"] = "Mangyaring ipasok ang mga nilalaman ng email para sa hindi bababa sa isa sa mga format (HTML o teksto)."; +$LANG["validation_no_email_from_field"] = "Paki-email na 'mula sa' field."; +$LANG["validation_no_email_template_name"] = "Mangyaring magpasok ng email ang mga pangalan ng template."; +$LANG["validation_no_email_template_view_id"] = "Mangyaring piliin ang View sa email na ang template na ito ay dapat nakamapang."; +$LANG["validation_no_email_template_view_mapping_value"] = "Mangyaring ipahiwatig kapag ang email ay dapat na naipadala na."; +$LANG["validation_no_enabled_themes"] = "Mangyaring siguraduhin na hindi bababa sa isang tema ay pinagana."; +$LANG["validation_no_first_name"] = "Mangyaring ipasok ang iyong unang pangalan."; +$LANG["validation_no_form_field_name"] = "Mangyaring ipasok ang lahat ng mga pangalan ng form sa patlang."; +$LANG["validation_no_form_field_single"] = "Mangyaring ipasok ang halaga Patlang ng Form."; +$LANG["validation_no_form_id"] = "Ang form na ID ay hindi tinukoy. Mangyaring mag-log out at subukan muli."; +$LANG["validation_no_form_name"] = "Mangyaring ipasok ang mga form ng pangalan."; +$LANG["validation_no_form_url"] = "Mangyaring ipasok ang mga URL form."; +$LANG["validation_no_last_name"] = "Mangyaring ipasok ang iyong huling pangalan."; +$LANG["validation_no_login_page"] = "Mangyaring ipahiwatig ang pahina na kung saan nais mong maipadala sa bawat oras na mag-log ka"; +$LANG["validation_no_logout_url"] = "Mangyaring ipasok ang mga logout URL."; +$LANG["validation_no_main_email_recipient"] = "Mangyaring magpasok ng hindi bababa sa isang pangunahing email tatanggap (ibig sabihin, hindi isang cc o Bcc)."; +$LANG["validation_no_menu"] = "Mangyaring pumili ng isang menu para sa account ng user."; +$LANG["validation_no_menu_id"] = "Mangyaring pumili ng isang menu."; +$LANG["validation_no_num_clients_per_page"] = "Mangyaring ipasok ang numero ng mga account nang kliente sa bawat pahina."; +$LANG["validation_no_num_emails_per_page"] = "Mangyaring ipasok ang numero ng mga email na sa listahan ng bawat pahina."; +$LANG["validation_no_num_form_fields"] = "Mangyaring ipasok ang numero ng mga patlang para sa iyong form."; +$LANG["validation_no_num_forms_per_page"] = "Mangyaring ipasok ang numero ng mga dokumento sa bawat pahina."; +$LANG["validation_no_num_menus_per_page"] = "Mangyaring ipasok ang numero ng mga menu sa listahan ng bawat pahina."; +$LANG["validation_no_num_modules_per_page"] = "Mangyaring ipasok ang numero ng mga module sa bawat pahina."; +$LANG["validation_no_num_option_lists_per_page"] = "Mangyaring ipasok ang numero ng mga listahan ng pagpipilian sa bawat pahina."; +$LANG["validation_no_num_submissions_per_page"] = "Mangyaring ipasok ang numero ng mga submissions na ipapakita sa bawat pahina."; +$LANG["validation_no_option_list_name"] = "Mangyari lamang na ipasok ang listahan ng pangalan ng opsyon."; +$LANG["validation_no_page_titles"] = "Mangyaring ipasok ang mga pamagat ng default na pahina para sa mga user account."; +$LANG["validation_no_password"] = "Mangyaring ipasok ang iyong password."; +$LANG["validation_no_program_name"] = "Mangyaring ipasok ang mga programa ng pangalan."; +$LANG["validation_no_second_password"] = "Mangyaring muling ipasok ang inyong password."; +$LANG["validation_no_sessions_timeout"] = "Mangyaring ipasok ang mga session ng timeout."; +$LANG["validation_no_smart_fill_values"] = "Mangyaring ipasok ang mga form ng pangalan ng patlang at ang URL ng form."; +$LANG["validation_no_table_prefix"] = "Mangyaring magpasok ng isang database prefix."; +$LANG["validation_no_tabs_defined"] = "Walang mga tab na tinukoy"; +$LANG["validation_no_test_email_recipient"] = "Mangyaring ipasok ang email address kung saan dapat kaming magpadala ng pagsubok ng email."; +$LANG["validation_no_test_email_submission_id"] = "Mangyaring ipasok ang pagsumite ng ID number."; +$LANG["validation_no_theme"] = "Mangyaring pumili ng isang tema."; +$LANG["validation_no_theme_swatch"] = "Mangyaring pumili ng isang pakita ng kayo para sa napiling tema."; +$LANG["validation_no_timezone_offset"] = "Mangyaring ipasok ang timezone ginalaw."; +$LANG["validation_no_titles"] = "Mangyaring ipasok ang mga pamagat ng pahina."; +$LANG["validation_no_two_column_names"] = "Paumanhin, hindi mo maaaring ipasok ang parehong database haligi ng pangalan ng dalawang beses."; +$LANG["validation_no_ui_language"] = "Mangyaring pumili ng isang wika para sa interface."; +$LANG["validation_no_url"] = "Mangyaring ipasok ang isang URL."; +$LANG["validation_no_username"] = "Mangyaring ipasok ang iyong username."; +$LANG["validation_no_username_or_js"] = "Kailangan mong ipasok ang iyong username. Mangyari lamang na buhayin ang javascript sa iyong browser."; +$LANG["validation_no_view_fields"] = "Ang iyong Tingnan ay hindi naglalaman ng anumang larangan! Kailangan mong maglaan ng hindi bababa sa isang field para sa mga may na bagay upang ipakita sa iyong View."; +$LANG["validation_no_view_fields_selected"] = "Mangyaring pumili ng isa o higit pa na mga patlang upang idagdag sa View."; +$LANG["validation_no_view_name"] = "Mangyaring ipasok ang pangalan ng iyong View."; +$LANG["validation_num_rows_to_add"] = "Mangyaring ipasok ang numero ng mga hilera idagdag."; +$LANG["validation_option_list_name_taken"] = "Paumanhin, ang listahan ng pangalan ng opsyon na ito ay nakuha na. Mangyaring pumili ng isang bagong pangalan."; +$LANG["validation_password_in_password_history"] = "Para sa seguridad, hindi ka maaaring ipasok ang parehong password sa anumang bilang ng huling {\$history_size} password. Mangyaring magpasok ng isang iba't ibang mga password."; +$LANG["validation_passwords_different"] = "Mangyaring siguraduhin na ang mga password ay pareho."; +$LANG["validation_please_enter_search_date_range"] = "Mangyaring piliin ang paghahanap na saklaw ng petsa."; +$LANG["validation_please_enter_search_keyword"] = "Mangyaring ipasok ang mga search keyword na ito."; +$LANG["validation_select_field_type"] = "Mangyaring pumili ng isang uri ng larangan."; +$LANG["validation_select_submissions_to_copy"] = "Pakipili ang mga pagsusumite na nais mong kopyahin."; +$LANG["validation_select_submissions_to_delete"] = "Mangyaring pumili ng mga submissions na nais mong tanggalin."; +$LANG["validation_smart_fill_cannot_fill"] = "Paumanhin, hindi namin maaaring punan ang patlang na ito."; +$LANG["validation_smart_fill_invalid_field_type"] = "Hindi namin nagawang hanapin ng isang patlang, ngunit ito ay hindi isang dropdown, checkbox sa radyo o grupo."; +$LANG["validation_smart_fill_no_field_found"] = "Paumanhin, hindi namin mahanap ang isang form na patlang na may pangalan na sa pahina sa tinukoy."; +$LANG["validation_smart_fill_no_page"] = "Mangyari lamang na hanapin ang pahina na nilalaman ang field na gusto mo sa Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Mangyaring i-upload ang lahat ng mga pahina sa iyong form."; +$LANG["validation_upload_folder_not_writable"] = "Na ito ay pansamantalang folder na mag-upload ng tinukoy sa pamamagitan ng iyong pag-install PHP ay hindi writable. Hanggang ito ay maayos, mga file ay hindi maaaring-upload sa pamamagitan ng Form Tools (o anumang ibang programa sa PHP). Mangyaring makipag-ugnayan sa iyong hosting provider."; +$LANG["validation_upload_html_files_only"] = "Mangyari lamang na mag-upload ng HTML files."; +$LANG["validation_username_taken"] = "Paumanhin, ang username na ay nakuha na. Mangyaring magpasok ng ibang username."; +$LANG["validation_wrong_password"] = "Paumanhin, na password ay hindi tumutugma."; +$LANG["word_about"] = "Tungkol sa"; +$LANG["word_access"] = "Access"; +$LANG["word_account"] = "Account"; +$LANG["word_account_sp"] = "Account (s)"; +$LANG["word_accounts"] = "Accounts"; +$LANG["word_action"] = "Aksyon"; +$LANG["word_active"] = "Aktibo"; +$LANG["word_add"] = "Magdagdag"; +$LANG["word_add_rightarrow"] = "Idagdag »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Pangangasiwa ng"; +$LANG["word_administrator"] = "Tagapangasiwa"; +$LANG["word_after"] = "Matapos ang"; +$LANG["word_aquamarine"] = "Akwamarin"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Author"; +$LANG["word_author_c"] = "Author:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«bumalik"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Bago maging / dati"; +$LANG["word_benefits"] = "Mga Benepisyo"; +$LANG["word_blue"] = "Asul"; +$LANG["word_cancel"] = "Kanselahin"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Checkboxes"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Client"; +$LANG["word_client_c"] = "Client:"; +$LANG["word_clients"] = "Kliyente"; +$LANG["word_close"] = "Isara / malapit"; +$LANG["word_code"] = "Code"; +$LANG["word_column"] = "Column"; +$LANG["word_columns"] = "Mga Haligi"; +$LANG["word_columns_sp"] = "Haligi (s)"; +$LANG["word_complete"] = "Kumpletuhin"; +$LANG["word_configuration"] = "Pagsasaayos"; +$LANG["word_content"] = "Nilalaman"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Magpatuloy »"; +$LANG["word_copy"] = "Kopya"; +$LANG["word_custom"] = "Pasadya"; +$LANG["word_data"] = "Data"; +$LANG["word_date"] = "Petsa"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "Tanggalin"; +$LANG["word_desc"] = "Desc"; +$LANG["word_direct"] = "Direktang"; +$LANG["word_disabled"] = "Nahinto"; +$LANG["word_documentation"] = "Dokumentasyon"; +$LANG["word_done"] = "Tapos"; +$LANG["word_drawbacks"] = "Drawbacks"; +$LANG["word_dropdown"] = "Dropdown"; +$LANG["word_edit"] = "I-edit"; +$LANG["word_editable"] = "Maaaring mai-edit"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Email"; +$LANG["word_enabled"] = "Pinagana"; +$LANG["word_equals"] = "Ay katumbas ng"; +$LANG["word_error"] = "Error"; +$LANG["word_error_c"] = "Error:"; +$LANG["word_examples_c"] = "Mga halimbawa:"; +$LANG["word_external"] = "Panlabas"; +$LANG["word_fail"] = "Mabibigo"; +$LANG["word_field"] = "Patlang / bukirin"; +$LANG["word_field_sp"] = "Patlang (s)"; +$LANG["word_fields"] = "Fields"; +$LANG["word_fields_sp"] = "Patlang (s)"; +$LANG["word_file"] = "File"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Mga file"; +$LANG["word_filters"] = "Ang mga filter"; +$LANG["word_filters_sp"] = "Filter (s)"; +$LANG["word_for"] = "para sa"; +$LANG["word_form"] = "Form"; +$LANG["word_form_c"] = "Form:"; +$LANG["word_formatting"] = "Formatting"; +$LANG["word_forms"] = "Forms"; +$LANG["word_found"] = "Natagpuan"; +$LANG["word_from"] = "Mula"; +$LANG["word_from_c"] = "Mula:"; +$LANG["word_general"] = "Pangkalahatan"; +$LANG["word_green"] = "Berde"; +$LANG["word_grey"] = "Grey"; +$LANG["word_height"] = "Taas"; +$LANG["word_help"] = "Tulong"; +$LANG["word_hidden"] = "Nakatago"; +$LANG["word_highlight"] = "Highlight"; +$LANG["word_horizontal"] = "Pahalang"; +$LANG["word_hour"] = "Oras"; +$LANG["word_hours"] = "Oras"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Hindi kumpleto"; +$LANG["word_install"] = "I-install ang"; +$LANG["word_installation"] = "Instalasyon"; +$LANG["word_internal"] = "Panloob"; +$LANG["word_language"] = "Wika"; +$LANG["word_large"] = "Malaki"; +$LANG["word_like"] = "Gusto"; +$LANG["word_login"] = "Login"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Logout"; +$LANG["word_main"] = "Pangunahin"; +$LANG["word_medium"] = "Medium"; +$LANG["word_menu"] = "Ang Menu"; +$LANG["word_menus"] = "Menu"; +$LANG["word_minutes"] = "minuto"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Pangalan"; +$LANG["word_name_c"] = "Pangalan:"; +$LANG["word_never"] = "Hindi kailanman"; +$LANG["word_next_rightarrow"] = "next »"; +$LANG["word_next_step_rightarrow"] = "SUSUNOD HAKBANG »"; +$LANG["word_no"] = "Hindi"; +$LANG["word_none"] = "Wala"; +$LANG["word_notes"] = "Notes"; +$LANG["word_notification"] = "Pagbibigay-alam"; +$LANG["word_number"] = "Numero"; +$LANG["word_off"] = "Off"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Okey"; +$LANG["word_on"] = "On"; +$LANG["word_online"] = "Online"; +$LANG["word_operator"] = "Operator"; +$LANG["word_options"] = "Ang Opsyon"; +$LANG["word_orange"] = "Dalandan"; +$LANG["word_order"] = "Pagkakasunud-sunod"; +$LANG["word_other"] = "Iba pa"; +$LANG["word_other_c"] = "Iba pa:"; +$LANG["word_page"] = "Pahina"; +$LANG["word_page_c"] = "Pahina:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Password"; +$LANG["word_password_c"] = "Password:"; +$LANG["word_pending"] = "Nakabinbin"; +$LANG["word_permissions"] = "Pahintulot"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«nakaraang"; +$LANG["word_private"] = "Pribadong"; +$LANG["word_public"] = "Pampublikong"; +$LANG["word_purple"] = "Marangal"; +$LANG["word_recipient"] = "Padadalhan"; +$LANG["word_recipient_sp"] = "Padadalhan (s)"; +$LANG["word_red"] = "Pula"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Alisin"; +$LANG["word_remove_uc_leftarrow"] = "«TANGGALIN"; +$LANG["word_reply_to"] = "Reply-to"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Kailangan"; +$LANG["word_reset"] = "I-reset"; +$LANG["word_resolved"] = "Nalutas na"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "hilera"; +$LANG["word_search"] = "Maghanap"; +$LANG["word_searchable"] = "Mahahanap"; +$LANG["word_select"] = "Piliin ang"; +$LANG["word_setting"] = "Setting"; +$LANG["word_settings"] = "Mga Setting"; +$LANG["word_show"] = "Ipakita / palabas"; +$LANG["word_size"] = "Laki"; +$LANG["word_skipped"] = "Nilaktawan"; +$LANG["word_small"] = "Maliit"; +$LANG["word_solution"] = "Solusyon"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Simulan"; +$LANG["word_status"] = "Katayuan"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Paksa"; +$LANG["word_subject_c"] = "Paksa"; +$LANG["word_submenu"] = "Submenu"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "System"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Subukan"; +$LANG["word_text"] = "Text"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Theme"; +$LANG["word_themes"] = "Mga tema"; +$LANG["word_time"] = "Oras"; +$LANG["word_tiny"] = "Napakaliit"; +$LANG["word_tips"] = "Tips"; +$LANG["word_today"] = "Ngayon"; +$LANG["word_truncate_q"] = "Pungusan?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Hindi kilala"; +$LANG["word_update"] = "Mag-update"; +$LANG["word_upgrade"] = "I-upgrade"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "User"; +$LANG["word_username"] = "Username"; +$LANG["word_username_c"] = "Username:"; +$LANG["word_validation"] = "Patunay"; +$LANG["word_value"] = "Halaga"; +$LANG["word_value_sp"] = "Halaga (s)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Patunayan"; +$LANG["word_version"] = "Bersyon"; +$LANG["word_vertical"] = "Vertical"; +$LANG["word_view"] = "Tingnan"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Babala!"; +$LANG["word_warning_c"] = "Babala:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Maligayang pagdating!"; +$LANG["word_width_c"] = "lapad:"; +$LANG["word_words"] = "Words"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Dilaw"; +$LANG["word_yes"] = "Oo"; \ No newline at end of file diff --git a/global/lang/tr.php b/global/lang/tr.php new file mode 100644 index 00000000..88bc0268 --- /dev/null +++ b/global/lang/tr.php @@ -0,0 +1,1219 @@ +Uyarı!
    Sen {\$num_selected_on_page} bu sayfada gönderimler ve {\$num_selected_on_other_pages} diğer sayfalarda seçtiniz. Lütfen aşağıdaki seçeneklerden birini seçin:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Uyarı! Bu sayfada herhangi gönderimler seçmediniz fakat seçtiğiniz {\$num_selected_on_other_pages} diğer sayfalarında. Lütfen bu gönderimleri silmek istediğinizi onaylayın.
    "; +$LANG["confirm_delete_view"] = "Bunu Profili silmek istediğinizden emin misiniz?"; +$LANG["confirm_refresh_page"] = "Sayfayı yenilemek istediğiniz emin misiniz? Bu yaptığınız tüm değişiklikleri kaybedersiniz."; +$LANG["confirm_save_change_before_redirect"] = "Bir ya da daha fazla alan güncellendi. Yönlendirmeden önce yaptığınız değişiklikleri kaydetmek ister misiniz?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Size Akıllı Dolgusu'nun veritabanı sütun isimleri istediğinizden emin misiniz? Bu mevcut değerleri üzerine yazar."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Bu seçenek Ekran Metin alanları dayalı veritabanı sütun adlarını otomatik üretir, veritabanı tablosunun içeriğini daha kolay okunur."; +$LANG["confirm_smart_fill_display_names"] = "Size Akıllı Dolgusu'nun Ekran adları istediğinizden emin misiniz? Bu mevcut değerleri üzerine yazar."; +$LANG["confirm_ungroup_option_list"] = "Bu seçenek listesi ungroup istediğiniz emin misiniz? Tüm seçenekleri tek bir gruplanmamış liste halinde toplu olacaktır."; +$LANG["confirm_uninstall_module"] = "Sen bu modülü kaldırmak istediğinizden emin misiniz? Modülü tüm veriler kaybolur."; +$LANG["date_AM"] = "am"; +$LANG["date_Fri"] = "Cum"; +$LANG["date_Friday"] = "Cuma"; +$LANG["date_Mon"] = "Pzt"; +$LANG["date_Monday"] = "Pazartesi"; +$LANG["date_PM"] = "pm"; +$LANG["date_Sat"] = "Cts"; +$LANG["date_Saturday"] = "Cumartesi"; +$LANG["date_Sun"] = "Pzr"; +$LANG["date_Sunday"] = "Pazar"; +$LANG["date_Thu"] = "Prş"; +$LANG["date_Thursday"] = "Perşembe"; +$LANG["date_Tue"] = "Salı"; +$LANG["date_Tuesday"] = "Salı"; +$LANG["date_Wed"] = "Çrş"; +$LANG["date_Wednesday"] = "Çarşamba"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Nisan"; +$LANG["date_month_August"] = "Ağustos"; +$LANG["date_month_December"] = "Aralık"; +$LANG["date_month_February"] = "Şubat"; +$LANG["date_month_January"] = "Ocak"; +$LANG["date_month_July"] = "Temmuz"; +$LANG["date_month_June"] = "Haziran"; +$LANG["date_month_March"] = "Mart"; +$LANG["date_month_May"] = "May"; +$LANG["date_month_November"] = "Kasım"; +$LANG["date_month_October"] = "Ekim"; +$LANG["date_month_September"] = "Eylül"; +$LANG["date_month_short_Apr"] = "Nis"; +$LANG["date_month_short_Aug"] = "Ağu"; +$LANG["date_month_short_Dec"] = "Ara"; +$LANG["date_month_short_Feb"] = "Şub"; +$LANG["date_month_short_Jan"] = "Oca"; +$LANG["date_month_short_Jul"] = "Tem"; +$LANG["date_month_short_Jun"] = "Haz"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "Yapabilir"; +$LANG["date_month_short_Nov"] = "Kas"; +$LANG["date_month_short_Oct"] = "Eki"; +$LANG["date_month_short_Sep"] = "Eyl"; +$LANG["date_pm"] = "am"; +$LANG["notify_account_deleted"] = "Kullanıcı hesabı silindi."; +$LANG["notify_account_updated"] = "Hesabınız başarılı bir şekilde güncellendi."; +$LANG["notify_add_display_values"] = "Ekran Değerler ekle"; +$LANG["notify_admin_menu_updated"] = "Yönetim Menüsü güncellendi."; +$LANG["notify_admin_theme_overridden"] = "Yöneticinin tema el geçersiz olmuştur."; +$LANG["notify_allow_url_fopen_not_set"] = "Üzgünüz, bu test, web sunucu üzerinde çalışan olamaz. O 1 için php.ini dosyasında ayarlanacaktır için allow_url_fopen gerektirir. Bu ayar, PHP bir URL, bu testi çalıştırmak için gereken dosyaları üzerinden erişmenize olanak sağlar. El FTP üzerinden bu klasöre bir dosya yükleyerek, sonra URL'de sağladığınız bu erişmeye çalışırken bunu test edebilirsiniz."; +$LANG["notify_change_temp_password"] = "Sadece geçici bir şifre ile giriş. Artık parola sıfırlama!"; +$LANG["notify_click_to_edit_new_submission"] = "Yeni gönderimi düzenlemek için buraya tıklayın."; +$LANG["notify_client_account_menus_updated"] = "S) {\$menu_name} menüsüne güncellendi müşteri hesabı (. Şimdi), daha önce hesap (lar ile ilişkili menü silebilir."; +$LANG["notify_client_account_not_updated"] = "Müşteri hesabı güncellendi olamazdı."; +$LANG["notify_client_account_themes_updated"] = "S) {\$theme} temaya güncellendi müşteri hesabı (. Şimdi) tema önceden hesap (lar ilişkili devre dışı bırakabilir."; +$LANG["notify_client_account_updated"] = "Müşteri hesabı başarıyla güncellendi."; +$LANG["notify_client_menu_deleted"] = "Istemci menüsü silindi."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Menü, ancak silindi aşağıdaki müşteri hesaplarını şimdi artık bir menü var! Aşağıdaki hesaplar güncellemeniz gerekir:"; +$LANG["notify_client_menu_updated"] = "Istemci menüsü güncellendi."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Üzgünüz, menü sadece silmek için çalıştı zaten müşteriler aşağıda listelenen tarafından kullanılıyor. Amacıyla öncelikle diğer menülere müşterilerine atamak gerekir menü silmek için. Müşteri adına tıklayın tek tek hesabı düzenlemek için veya farklı bir menü altında açılan kullanarak tüm hesapları atayın."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Üzgünüz, bir sadece özürlü temalar zaten şu müşteri hesaplarını tarafından kullanılmaktadır. Amacıyla öncelikle başka bir temaya her istemci atamak gerekecektir tema devre dışı bırakmak için. Müşteri adına tıklayın tek tek hesap, düzenlemek veya bir tema altında açılan kullanarak tüm hesapları atayın."; +$LANG["notify_edit_email_fields_link"] = "Tıklayın form alanlarını e-posta alanlarını, bu nedenle e-posta şablonları onları hedef belirtmek için."; +$LANG["notify_edit_field_new_field"] = "Bu yeni bir alan. Tam bu alanı düzenlemek önce ana sayfa güncellemeniz gerekir."; +$LANG["notify_edit_option_list_after_save"] = "Bir Seçenek Listesi seçin ve daha sonra düzenlemek için önce Değişiklikleri Kaydet gerekir."; +$LANG["notify_email_field_config_deleted"] = "E-posta yapılandırma silindi."; +$LANG["notify_email_fields_not_updated"] = "Üzgünüz, e-posta alanlarını güncelleştirmek couldn't."; +$LANG["notify_email_fields_updated"] = "E-posta alanları güncellendi."; +$LANG["notify_email_not_sent"] = "Üzgünüz, e-posta gönderilemedi. Lütfen aşağıdaki adresten site yöneticisine başvurun."; +$LANG["notify_email_not_sent_c"] = "Üzgünüz, e-posta gönderilir olamazdı:"; +$LANG["notify_email_sent"] = "S) gönderilen e-posta (."; +$LANG["notify_email_template_deleted"] = "E-posta silindi şablonu."; +$LANG["notify_email_template_updated"] = "E-posta güncellendi şablonu."; +$LANG["notify_enabled_module_list_updated"] = "Etkin modüllerin listesi güncellendi."; +$LANG["notify_error_saving_fields"] = "Alanları kaydederek bir hata vardı."; +$LANG["notify_field_changes_saved"] = "Alan (lar) değişiklikler kaydedildi."; +$LANG["notify_field_options_smart_filled"] = "Alanı seçenekleri Akıllı Dolgulu olmuştur."; +$LANG["notify_field_selected"] = "Alanı seçildi. Tıklayınız temel alan listesine dönmek için."; +$LANG["notify_field_updated"] = "Bu alan güncellendi."; +$LANG["notify_file_not_uploaded"] = "Dosya yüklenememiştir."; +$LANG["notify_file_uploaded"] = "Dosya başarıyla yüklenmiştir."; +$LANG["notify_filters_not_updated"] = "Bir hata bu istemci gönderme filtreleri güncellenirken."; +$LANG["notify_filters_updated"] = "Teslim filtreleri bu müşteri için güncellendi."; +$LANG["notify_folder_correct_permissions"] = "Bu klasörün doğru izinleri vardır."; +$LANG["notify_folder_url_match"] = "Klasörü ve düzgün maç görünür URL."; +$LANG["notify_folder_url_no_access"] = "PHP'nin erişim alamadığını Bu test yapılamadı bu URL. Bu genellikle URL olmanın parolası. Htaccess dosyası ile korunan kaynaklanır."; +$LANG["notify_folder_url_no_match"] = "Bu klasör URL kombinasyonu bir maç olarak görünmüyor."; +$LANG["notify_folder_url_unknown_error"] = "Bilinmeyen bir hata oluştu. El FTP üzerinden bu klasöre bir dosya yükleyerek, sonra URL'de sağladığınız bu erişmeye çalışırken bunu test edebilirsiniz."; +$LANG["notify_form_access_type_email_info"] = "Bu form yönetici erişim türü, hiçbir istemci erişim ve açılan aşağıda listelenmiştir."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Üzgünüz, kimliği yok bir form."; +$LANG["notify_form_field_not_added"] = "Form alanı '{\$fieldname}' yüklenemedi."; +$LANG["notify_form_field_options_updated"] = "Form alanı seçenekleri güncellendi."; +$LANG["notify_form_field_removed"] = "Form alanı başarılı bir şekilde çıkarılmıştır."; +$LANG["notify_form_fields_removed"] = "Formdaki alanlar başarılı bir şekilde çıkarılmıştır."; +$LANG["notify_form_not_updated_notify_admin"] = "Form güncellendi olamazdı. Lütfen bu sorunu bildirmek için site yöneticinize başvurun."; +$LANG["notify_form_settings_updated"] = "Form ayarları başarıyla güncellendi."; +$LANG["notify_form_submission_updated"] = "Form kaydı güncellenmiştir."; +$LANG["notify_form_tabs_updated"] = "Sekmeler güncellendi."; +$LANG["notify_form_updated"] = "Form başarıyla güncellendi."; +$LANG["notify_form_views_updated"] = "Formu Görüntüleme güncellendi."; +$LANG["notify_install_invalid_db_info"] = "Üzgünüz, veritabanı size verilen bilgileri kullanarak bağlanmak için koyamadık. Veritabanı geri hata mesajı: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Formunuz yaratıldı! Bu sekmeler aracılığıyla formu yapılandırabilirsiniz."; +$LANG["notify_invalid_account_information_in_sessions"] = "Hesap bilgileri oturumları saklanır geçersiz. Lütfen tekrar aşağıda giriş yapın."; +$LANG["notify_invalid_license_key"] = "Üzgünüz, geçerli bir lisans anahtarı görünmüyor. Lütfen tekrar girmeyi deneyin."; +$LANG["notify_invalid_permissions"] = "Bu sayfaya erişmek için izinleri yok. Dışarı çıktınız."; +$LANG["notify_invalid_search_dates"] = "Lütfen geçerli bir tarih veya tarihler girmek için datepicker."; +$LANG["notify_invalid_upload_folder"] = "Upload klasörü ya geçersiz ya da yazılabilir değil."; +$LANG["notify_lang_list_updated"] = "Mevcut UI dil listesinden güncellendi."; +$LANG["notify_login_info_emailed"] = "Giriş bilgilerinizi size e-postayla olmuştur."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Üzgünüz, bu modül zaten yüklü!"; +$LANG["notify_module_installed"] = "Modülü yüklendi. Tıklayınız modülü seçin."; +$LANG["notify_module_list_updated"] = "Modül listesi güncellendi."; +$LANG["notify_module_uninstalled"] = "Modülü kaldırıldı."; +$LANG["notify_module_updated"] = "{\$module} {\$version} modülü güncellendi. modülü seçmek için burayı tıklayın ."; +$LANG["notify_multi_field_selected"] = "Alanı seçildi. Burayı görmek ve alan seçenekleri düzenleyin."; +$LANG["notify_multi_field_updated"] = "Bu alan güncellendi. Yapılandırmak edebilecektir formu oluşturduktan sonra alan seçenekleri."; +$LANG["notify_multiple_fields_found"] = "Birden çok element bu alan adı ({\$field_name}) ile bulundu. Eğer sayfanın bir formu fazla veya varsa yanlışlıkla birbirlerine olarak formları aynı adlı oluşabilir. Seç birini istiyorsanız aşağıdaki listeden."; +$LANG["notify_new_default_view_created"] = "Tüm form alanları içeren bir yeni, varsayılan Profil yaratılmıştır."; +$LANG["notify_new_submission_created"] = "The submission has been created. You may edit it below."; +$LANG["notify_no_account_id_in_sessions"] = "Kullanıcı hesabı kimliği oturumlarında bulundu. Lütfen tekrar aşağıda giriş yapın."; +$LANG["notify_no_api_installed"] = "Sen API yüklü değilse"; +$LANG["notify_no_client_permissions"] = "Hiçbir ayarlarını düzenlemek için kullanılabilir."; +$LANG["notify_no_email_template_selected"] = "Lütfen e-posta şablonu seçin."; +$LANG["notify_no_emails_defined"] = "No e-postalar bu form için tanımlanmıştır. Yeni bir tane düğmesini tıklayın eklemek için."; +$LANG["notify_no_field_settings"] = "Bu alan türü herhangi bir ekstra ayarları içermez."; +$LANG["notify_no_fields_in_tab"] = "Bu sekme tüm alanları içermez."; +$LANG["notify_no_option_lists"] = "Tanımlanan herhangi bir seçenek listeleri vardır. Yeni bir tane oluşturmak için aşağıdaki butona tıklayın."; +$LANG["notify_no_test_submission"] = "Form Araçlar henüz başarılı bir sınav teslim almamış."; +$LANG["notify_no_user_email_fields_configured"] = "Not: Eğer bu formu dahil olan herhangi bir e-posta adresine bir e-posta göndermek isterseniz, öncelikle yapılandırmak için e-posta formu alanlar gerekir."; +$LANG["notify_no_views"] = "Formunuz herhangi bir Görüntüleme kadar yok! Form verilerini yönetmek için en az bir Görünüm gerekecektir."; +$LANG["notify_no_views_assigned_to_client_form"] = "Bu kullanıcı hesabını herhangi bir biçimde Views, böylece herhangi bir veri görmek mümkün olmayacaktır atanmış görünüyor. Daha fazla yardım için yöneticinize başvurun."; +$LANG["notify_no_views_defined"] = "Herhangi bir Görüntüleme tanımlanan sahip değilsiniz. Bu sürece en az bir Görünüm oluşturulan bu formu görüşleri görüntülemek mümkün olmayacaktır. Varsayılan Görünümü oluşturmak için aşağıdaki butona tıklayın."; +$LANG["notify_option_list_deleted"] = "Seçenek listesi silindi."; +$LANG["notify_option_list_updated"] = "Seçenek listesi güncellendi."; +$LANG["notify_public_form_omit_list_updated"] = "Istemci güncellendi bu form listesini çıkarabilirsiniz."; +$LANG["notify_public_view_omit_list_updated"] = "Istemci güncellendi bu iş için listesini çıkarabilirsiniz."; +$LANG["notify_required_admin_pages"] = "Aşağıdaki sayfalarda yönetici menüsünde gereklidir: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Bu nedenle oturumu zorunda Üzgünüz, bir süre için herhangi bir etkinlik değildi. Lütfen tekrar aşağıda giriş yapın."; +$LANG["notify_setup_options_updated"] = "Kurulum seçenekleri güncellendi."; +$LANG["notify_smart_fill_field_not_found"] = "Bu ad ({\$field_name}) ile) s belirttiği) formu (bir alan bulamadık. Ya el altında alan türünü tıklatın veya geç düğmesini daha sonra bu alanı düzenlemek için ayarlayabilirsiniz."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Ler) başarıyla yükledi edildi Dosyanız (. Tekrar denemek için Akıllı doldurun düğmesini deneyin. Eğer bu adım başarısız olursa, manally daha sonra bu adımı ve yapılandırmak için form alanları atlamak gerekir."; +$LANG["notify_smart_fill_submitted"] = "Formu gönderildi. Form ve alan seçenekleri sayısı boyutuna bağlı olarak, bu biraz zaman alabilir."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Üzgünüm, bir veya girdiğiniz daha fazla dosya yüklenemedi. Bu adımı ve yapılandırma alanları el atlamak gerekir."; +$LANG["notify_submission_and_files_deleted"] = "Teslim ve herhangi bir (lar) ilişkili dosya başarıyla silindi."; +$LANG["notify_submission_copied"] = "Gönderme kopyalandı."; +$LANG["notify_submission_copied_edit"] = "Gönderme kopyalandı. Aşağıda düzenleyebilirsiniz."; +$LANG["notify_submission_deleted"] = "Başvuru başarılı bir şekilde silinmiştir."; +$LANG["notify_submission_deleted_with_problems"] = "Gönderme, ancak silindi aşağıdaki sorunları Aşağıdaki dosya (lar) silmek için çalışırken karşılaşıldı:"; +$LANG["notify_submission_id_not_found"] = "Kayıt ID'si bulunamadı."; +$LANG["notify_submission_not_updated"] = "Kayıt güncellenememiştir."; +$LANG["notify_submissions_and_files_deleted"] = "Gönderimler ve herhangi bir (lar) onlarla ilişkili dosya başarıyla silindi."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} başvuru kopyalandı."; +$LANG["notify_submissions_deleted"] = "Başvurular başarılı bir şekilde silinmiştir."; +$LANG["notify_submissions_deleted_with_problems"] = "Gönderimler, ancak silinmiş aşağıdaki sorunları Aşağıdaki dosya (lar) silmek için çalışırken karşılaşıldı:"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Test-posta gönderilemedi."; +$LANG["notify_theme_cache_folder_not_writable"] = "Bu tema önbelleğini klasörü yazılabilir değil. Amacıyla, {\$folder} klasör var okuma ihtiyacı-yazma izinlerini Bu temayı etkinleştirin."; +$LANG["notify_theme_list_updated"] = "Tema listesi güncellendi."; +$LANG["notify_themes_settings_updated"] = "Temanızı ayarları güncellendi."; +$LANG["notify_view_deleted"] = "Profili silindi."; +$LANG["notify_view_group_deleted"] = "Görünüm grubunda silinmiştir."; +$LANG["notify_view_missing_columns"] = "Oops! Üzgünüz, Bu Görünümü henüz tam olarak ayarlamak edilmiş değil."; +$LANG["notify_view_missing_columns_admin_fix"] = "Tıklayınız alanlar bu sayfada sütun gibi görünmelidir belirtmek için."; +$LANG["notify_view_updated"] = "Profili güncellendi."; +$LANG["notify_your_email_sent"] = "E-postanız başarı ile gönderildi."; +$LANG["phrase_100_per_page"] = "Sayfa başına 100"; +$LANG["phrase_10_per_page"] = "Sayfa başına 10"; +$LANG["phrase_15_per_page"] = "15 sayfa başı"; +$LANG["phrase_1_direct"] = "1. Doğrudan"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 sayfa başı"; +$LANG["phrase_25_per_page"] = "Sayfa başına 25"; +$LANG["phrase_2_code"] = "2. Kodu"; +$LANG["phrase_2_columns"] = "2 sütun"; +$LANG["phrase_2chars"] = "2 Karakter"; +$LANG["phrase_3_columns"] = "3: Sütunlar"; +$LANG["phrase_4_columns"] = "4 Sütun"; +$LANG["phrase_50_per_page"] = "Sayfa başına 50"; +$LANG["phrase_accepting_submissions"] = "(kabul gönderimler)"; +$LANG["phrase_access_admin_account_c"] = "Buraya yönetim hesabına erişebilir:"; +$LANG["phrase_access_type"] = "Erişim Türü"; +$LANG["phrase_account_info"] = "Hesap Bilgileri"; +$LANG["phrase_account_settings"] = "Hesap Ayarları"; +$LANG["phrase_action_needed"] = "Eylem Gerekli"; +$LANG["phrase_add_client"] = "MÜŞTERİ EKLE"; +$LANG["phrase_add_client_menu"] = "Müşteri Menü ekle"; +$LANG["phrase_add_default_settings_rightarrow"] = "Varsayılan ayarları Ekle »"; +$LANG["phrase_add_field"] = "Alan ekle"; +$LANG["phrase_add_fields"] = "ALAN EKLE"; +$LANG["phrase_add_fields_rightarrow"] = "Alan (lar) »"; +$LANG["phrase_add_form"] = "Form Ekle"; +$LANG["phrase_add_form_external"] = "Formu Ekle - Harici"; +$LANG["phrase_add_form_internal"] = "Formu Ekle - Dahili"; +$LANG["phrase_add_new_group_rightarrow"] = "Yeni Grup Ekle »"; +$LANG["phrase_add_num_rows"] = "{\$number} Row (s) Numara ekle"; +$LANG["phrase_add_row"] = "Satır ekle »"; +$LANG["phrase_add_submission_button"] = "Gönderme Düğme Ekle"; +$LANG["phrase_add_view_rightarrow"] = "Profil ekle »"; +$LANG["phrase_adding_multi_page_form"] = "API ile çok sayfalı bir formu ekleme"; +$LANG["phrase_adding_single_page_form"] = "API ile bir tek sayfa formu ekleme"; +$LANG["phrase_admin_menu"] = "Yönetici Menü"; +$LANG["phrase_admin_only"] = "Sadece yönetici"; +$LANG["phrase_admin_panel"] = "Yönetici Paneli"; +$LANG["phrase_administrator_theme"] = "Yönetici Tema"; +$LANG["phrase_advanced_settings_rightarrow"] = "Gelişmiş ayarları »"; +$LANG["phrase_all_X_results_selected"] = "All {\$numresults} Sonuçları Seçilen"; +$LANG["phrase_all_clients"] = "Tüm müşteriler"; +$LANG["phrase_all_clients_except_c"] = "Hariç tüm istemcileri:"; +$LANG["phrase_all_clients_have_access"] = "(tüm istemciler) erişebilir"; +$LANG["phrase_all_fields"] = "Tüm Alanlar"; +$LANG["phrase_all_fields_displayed"] = "Tüm alanlar görüntülenir"; +$LANG["phrase_all_statuses"] = "Tüm durumları"; +$LANG["phrase_all_submissions"] = "Tüm haberlerin"; +$LANG["phrase_allow_fields_edited"] = "Izin alanları düzenlenecek"; +$LANG["phrase_alphanumeric"] = "Alfanümerik (aZ, 0-9)"; +$LANG["phrase_api_version"] = "API Sürüm"; +$LANG["phrase_apply_timezone_offset"] = "Bölge Ofset uygulayın"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Atamak Listelenen tüm müşteri hesapları {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Atamak Listelenen tüm müşteri hesapları {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Sonu"; +$LANG["phrase_at_start"] = "Ile başlayın"; +$LANG["phrase_author_link"] = "Yazar Bağlantı"; +$LANG["phrase_auto_disable_account"] = "sonra Auto-sakatlar hesap # giriş girişimi başarısız"; +$LANG["phrase_auto_size"] = "Otomatik boyutu"; +$LANG["phrase_available_clients"] = "Kullanılabilir Hesaplar"; +$LANG["phrase_available_fields"] = "Kullanılabilir alanlar"; +$LANG["phrase_available_option_lists"] = "Mevcut Seçenek Listesi"; +$LANG["phrase_available_swatches"] = "Kullanılabilir Örnekleri"; +$LANG["phrase_available_swatches_c"] = "Örnekleri:"; +$LANG["phrase_available_tabs"] = "Kullanılabilir Sekmeler"; +$LANG["phrase_available_views"] = "Mevcut Görüntüler"; +$LANG["phrase_awaiting_form_submission"] = "Form gönderme bekleniyor."; +$LANG["phrase_back_to_field_list"] = "«geri alana listesi"; +$LANG["phrase_back_to_search_results"] = "arama sonuçlarına dön"; +$LANG["phrase_base_view_on"] = "Base göster ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Değiştirmek Giriş Bilgileri"; +$LANG["phrase_characters_limit_p"] = "karakterle sınırlayın."; +$LANG["phrase_check_db_settings_try_again"] = "Lütfen çift yeniden veritabanı ayarlarını tıklayın Devam düğmesini kontrol edin."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "URL'yi kontrol edin"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Net Gözardı Listesi"; +$LANG["phrase_client_account_settings"] = "Müşteri Hesap Ayarları"; +$LANG["phrase_client_field"] = "Müşteri Alanı"; +$LANG["phrase_client_map_filters"] = "Müşteri Harita Filtreler »"; +$LANG["phrase_client_may_edit"] = "Müşteri düzenleyebilirsiniz"; +$LANG["phrase_client_menu"] = "Müşteri Menü"; +$LANG["phrase_clients_can_access_form"] = "Müşteriler kim formu erişebilirsiniz"; +$LANG["phrase_clients_can_access_view"] = "Müşteriler kim ulaşmak için"; +$LANG["phrase_clients_cannot_access_form"] = "Müşteriler kim formu erişemiyorum"; +$LANG["phrase_clients_cannot_access_view"] = "Müşteriler kim Profili erişemiyorum"; +$LANG["phrase_clients_may_edit"] = "Müşteriler düzenleyebilirsiniz"; +$LANG["phrase_code_c"] = "Hata Kodu:"; +$LANG["phrase_code_markup_field"] = "Kodu / Biçimlendirme Alan"; +$LANG["phrase_code_markup_type"] = "Kodu / Biçimlendirme Tipi"; +$LANG["phrase_codes_c"] = "Hata Kodları:"; +$LANG["phrase_column_width"] = "Sütun Genişliği"; +$LANG["phrase_company_name"] = "Şirket Adı"; +$LANG["phrase_configure_form_email_fields"] = "Yapılandırmak Formu Email Alanlar"; +$LANG["phrase_confirm_folder_url_match"] = "Klasör-URL eşleşmesini onayla"; +$LANG["phrase_connect_rows"] = "Satır bağlayın"; +$LANG["phrase_copy_email_settings_from"] = "Kopya E-posta Ayarlar ..."; +$LANG["phrase_copy_settings_from"] = "Kopya Ayarlar ..."; +$LANG["phrase_core_fields"] = "Core Alanları"; +$LANG["phrase_core_version"] = "Core Sürüm"; +$LANG["phrase_create_account"] = "Hesap Aç"; +$LANG["phrase_create_admin_account"] = "Admin Hesap Aç"; +$LANG["phrase_create_config_file"] = "Config Dosyası Oluşturma"; +$LANG["phrase_create_database_tables"] = "Veritabanı oluşturmak Tablolar"; +$LANG["phrase_create_default_view"] = "Varsayılan Görünüm"; +$LANG["phrase_create_file"] = "Dosya yaratın"; +$LANG["phrase_create_group"] = "Grup Oluştur"; +$LANG["phrase_create_new_email"] = "Yeni E-posta oluşturma"; +$LANG["phrase_create_new_menu"] = "Yeni Menü oluşturma"; +$LANG["phrase_create_new_option_list"] = "Yeni Seçenek listesi oluşturma"; +$LANG["phrase_create_new_option_list_group"] = "Yeni bir seçenek listesi grup oluşturun"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Yeni Seçenek Listesi Oluştur »"; +$LANG["phrase_create_new_view"] = "Yeni Görünüm oluşturma"; +$LANG["phrase_create_new_view_group"] = "Yeni Grup Oluştur"; +$LANG["phrase_custom_display_format"] = "Özel Görüntü Formatı"; +$LANG["phrase_custom_recipient"] = "Özel Alıcı"; +$LANG["phrase_custom_url"] = "Özel URL"; +$LANG["phrase_dark_blue"] = "Lacivert"; +$LANG["phrase_data_type"] = "Veri Tipi"; +$LANG["phrase_database_hostname"] = "Database hostname"; +$LANG["phrase_database_name"] = "Veritabanı ismi"; +$LANG["phrase_database_password"] = "Veritabanı şifresi"; +$LANG["phrase_database_settings"] = "Veritabanı Ayarları"; +$LANG["phrase_database_setup"] = "Veritabanı Ayarı"; +$LANG["phrase_database_table_prefix"] = "Veritabanı tablo öneki"; +$LANG["phrase_database_username"] = "Veritabanı kullanıcı adı"; +$LANG["phrase_date_format"] = "Tarih Formatı"; +$LANG["phrase_db_column"] = "DB Sütunu"; +$LANG["phrase_db_setup_page_4"] = "4. Veritabanı Kurulumu"; +$LANG["phrase_default_client_account_theme"] = "Varsayılan Müşteri Hesabı Tema"; +$LANG["phrase_default_date_field_search_value"] = "Varsayılan tarih alanı arama değeri"; +$LANG["phrase_default_language"] = "Varsayılan dil"; +$LANG["phrase_default_menu"] = "Varsayılan Menü"; +$LANG["phrase_default_sessions_timeout"] = "Varsayılan Sessions Zaman Aşımı"; +$LANG["phrase_default_sort_order"] = "Varsayılan Diziliş Sıralaması"; +$LANG["phrase_default_tab_label"] = "Veri"; +$LANG["phrase_default_theme"] = "Varsayılan Tema"; +$LANG["phrase_default_value"] = "Varsayılan değer"; +$LANG["phrase_default_values"] = "Varsayılan değerler"; +$LANG["phrase_default_values_new_submissions"] = "Yeni Gönderiler için Varsayılan Değerler"; +$LANG["phrase_delete_field"] = "Alan silme"; +$LANG["phrase_delete_form"] = "FORMU SİL"; +$LANG["phrase_delete_row"] = "Satır Sil'i"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Sil ilişkili dosyaları teslim silme"; +$LANG["phrase_delete_view"] = "Profil Sil"; +$LANG["phrase_disconnect_rows"] = "Satır çıkarın"; +$LANG["phrase_display_email"] = "Ekran E-posta"; +$LANG["phrase_display_name"] = "Görünen İsim"; +$LANG["phrase_display_text"] = "Görünen Metin"; +$LANG["phrase_display_value"] = "Ekran Fiyat"; +$LANG["phrase_edit_admin_menu"] = "Değiştir Yönetici Menü"; +$LANG["phrase_edit_client"] = "Müşteri değiştir"; +$LANG["phrase_edit_client_menu"] = "Değiştir Müşteri Menü"; +$LANG["phrase_edit_email_template"] = "Değiştir E-posta Şablonu"; +$LANG["phrase_edit_field"] = "Değiştir Alan"; +$LANG["phrase_edit_field_c"] = "Alan Düzenle:"; +$LANG["phrase_edit_form"] = "Değiştir Formu"; +$LANG["phrase_edit_form_access_type_b"] = "[Form erişim türü Düzenle]"; +$LANG["phrase_edit_option_list"] = "Seçenek Listesi Düzenleme"; +$LANG["phrase_edit_submission"] = "Gönderileri Düzenle"; +$LANG["phrase_edit_submission_label"] = "Gönderme Etiket Düzenle"; +$LANG["phrase_edit_view"] = "Düzenle Profili"; +$LANG["phrase_email_format"] = "E-posta Biçim"; +$LANG["phrase_email_settings"] = "EMAIL AYARLARI"; +$LANG["phrase_email_template"] = "E-posta şablonu"; +$LANG["phrase_email_template_name"] = "E-posta şablon adı"; +$LANG["phrase_error_learn_more"] = "Bu hata hakkında daha fazla bilgi edinin."; +$LANG["phrase_error_text_intro"] = "Lütfen ler) ve yeniden aşağıdaki hata (fix:"; +$LANG["phrase_errors_learn_more"] = "Hata kodları hakkında daha fazla bilgi için tıklayınız."; +$LANG["phrase_event_trigger"] = "Olay Tetikleme"; +$LANG["phrase_external_form"] = "Harici Formu"; +$LANG["phrase_external_form_info"] = "Harici Formu Bilgi"; +$LANG["phrase_external_your_own_form"] = "Harici (kendi)"; +$LANG["phrase_field_comments"] = "Alan Yorumlar"; +$LANG["phrase_field_label"] = "Alan Label"; +$LANG["phrase_field_options"] = "Alan Seçenek"; +$LANG["phrase_field_size"] = "Alan Büyüklüğü"; +$LANG["phrase_field_skipped"] = "Alan Atlandı"; +$LANG["phrase_field_specific_settings"] = "Alan-Özel Ayarlar"; +$LANG["phrase_field_type"] = "Alan Tipi"; +$LANG["phrase_field_type_no_validation"] = "Bu alan türü için doğrulama kuralları vardır."; +$LANG["phrase_field_types"] = "Alan Türleri"; +$LANG["phrase_field_value"] = "Alan Fiyat"; +$LANG["phrase_field_values_to_display_values"] = "Alan Değerler »Ekran Değerler"; +$LANG["phrase_final_touches_page_6"] = "6. Son rötuşları"; +$LANG["phrase_finalize_form"] = "Formu Sonlandır"; +$LANG["phrase_first_name"] = "Ad"; +$LANG["phrase_footer_text"] = "Altbilgi Metni"; +$LANG["phrase_for_any_form_submission"] = "Herhangi bir biçimde sunulması için"; +$LANG["phrase_for_view_submissions"] = "Görünümünde gönderimler Sadece:"; +$LANG["phrase_forgot_password"] = "ŞİFREMİ UNUTTUM"; +$LANG["phrase_form_already_selected"] = "Form zaten seçili"; +$LANG["phrase_form_email_field_b_c"] = "[Formu e-posta alanı]:"; +$LANG["phrase_form_email_field_configuration"] = "Formu Email Alan Yapılandırma"; +$LANG["phrase_form_email_fields"] = "Form Email Alanlar"; +$LANG["phrase_form_field"] = "Form Alanları"; +$LANG["phrase_form_field_contents"] = "Form Alanı İçeriği"; +$LANG["phrase_form_field_name"] = "Form Alan Adı"; +$LANG["phrase_form_field_placeholders"] = "Form alanı yer tutucuları"; +$LANG["phrase_form_fields"] = "Form alanları"; +$LANG["phrase_form_info"] = "Form Bilgileri"; +$LANG["phrase_form_info_2"] = "2. Form Bilgileri"; +$LANG["phrase_form_list"] = "Formu Listesi"; +$LANG["phrase_form_name"] = "Form Adı"; +$LANG["phrase_form_page"] = "Formu Sayfa"; +$LANG["phrase_form_placeholders"] = "FORM ALAN TANIMLAMALARI"; +$LANG["phrase_form_submission"] = "FORM GÖNDERME"; +$LANG["phrase_form_submissions"] = "Formu Gönderimi"; +$LANG["phrase_form_type"] = "Form Tipi"; +$LANG["phrase_form_url"] = "Formun URL si (adresi)"; +$LANG["phrase_form_urls"] = "Formu URL'ler"; +$LANG["phrase_forms_assigned_to_any_account"] = "Herhangi bir hesap için atanan Formlar"; +$LANG["phrase_forms_page_default_message"] = "Formlar sayfa varsayılan mesaj"; +$LANG["phrase_ft_installation"] = "Form Araçlar Kurulum Script"; +$LANG["phrase_full_width"] = "Tam Genişlik"; +$LANG["phrase_getting_started"] = "başlarken"; +$LANG["phrase_global_placeholders"] = "GENEL ALAN TANIMLAMALARI"; +$LANG["phrase_group_name"] = "Grup Adı"; +$LANG["phrase_group_options_q"] = "Grup seçenekleri?"; +$LANG["phrase_group_rows"] = "Grup satır"; +$LANG["phrase_have_fun"] = "İyi eğlenceler!"; +$LANG["phrase_highlight_colour"] = "Vurgulayın Renk"; +$LANG["phrase_html_email"] = "HTML E-posta"; +$LANG["phrase_html_template"] = "HTML Şablonu"; +$LANG["phrase_images_media"] = "Images / Medya"; +$LANG["phrase_import_option_list_rightarrow"] = "İthalat Seçenek Listesi »"; +$LANG["phrase_input_length"] = "Giriş Uzunluğu"; +$LANG["phrase_installation_help"] = "Kurulum Yardımı"; +$LANG["phrase_internal_form"] = "İç Formu"; +$LANG["phrase_ip_address"] = "IP Adresi"; +$LANG["phrase_is_multi_page_form_q"] = "Bu çok sayfalı bir form var mı?"; +$LANG["phrase_label_response_placeholders"] = "Etiket / Tepki yer tutucular"; +$LANG["phrase_large_300px"] = "Büyük (300px)"; +$LANG["phrase_large_400px"] = "Büyük (400px)"; +$LANG["phrase_last_7_days"] = "Son 7 gün"; +$LANG["phrase_last_logged_in"] = "Last Logged In"; +$LANG["phrase_last_modified"] = "Son olarak"; +$LANG["phrase_last_modified_date"] = "Son olarak tarih"; +$LANG["phrase_last_name"] = "Soyad"; +$LANG["phrase_letters_only"] = "Mektuplar sadece"; +$LANG["phrase_light_brown"] = "Açık Kahverengi"; +$LANG["phrase_limit_email_content"] = "Görünümünde alanlar Sadece e-posta içeriği"; +$LANG["phrase_loading_ellipsis"] = "Yükleniyor ..."; +$LANG["phrase_log_in"] = "OTURUM AÇ"; +$LANG["phrase_login_as_user"] = "Bu kullanıcı olarak oturum açın"; +$LANG["phrase_login_info"] = "Giriş Bilgileri"; +$LANG["phrase_login_page"] = "Giriş Sayfası"; +$LANG["phrase_login_panel_c"] = "Giriş Paneli:"; +$LANG["phrase_login_panel_leftarrows"] = "«Giriş Paneli"; +$LANG["phrase_login_password"] = "Giriş Şifre"; +$LANG["phrase_login_username"] = "Giriş Kullanıcı Adı"; +$LANG["phrase_logo_link_url"] = "Logo Bağlantı URL"; +$LANG["phrase_logout_url"] = "Çıkış URL si"; +$LANG["phrase_main_nav"] = "Ana Nav"; +$LANG["phrase_main_settings"] = "Ana Ayarlar"; +$LANG["phrase_manage_client"] = "Hesap Yönetimi"; +$LANG["phrase_manage_client_omit_list"] = "Yönet Müşteri Listesi Gözardı"; +$LANG["phrase_max_file_size"] = "Max Dosya Boyutu"; +$LANG["phrase_max_length"] = "Max Uzunluk"; +$LANG["phrase_max_length_words_chars"] = "- Max uzunluk (kelime / karakter)"; +$LANG["phrase_may_add_submissions"] = "May Gönderimler eklemek"; +$LANG["phrase_may_copy_submissions"] = "Gönderimleri kopyalayabilir"; +$LANG["phrase_may_delete_submissions"] = "May Gönderimler silmek"; +$LANG["phrase_medium_150px"] = "Orta (150px)"; +$LANG["phrase_medium_200px"] = "Orta (200px)"; +$LANG["phrase_menu_name"] = "Menü Adı"; +$LANG["phrase_menu_type"] = "Menü Tipi"; +$LANG["phrase_min_password_length"] = "En kısa parola uzunluğu"; +$LANG["phrase_module_description"] = "Modülü Açıklama"; +$LANG["phrase_module_info"] = "Bilgi modülü"; +$LANG["phrase_module_nav"] = "Modülü Nav"; +$LANG["phrase_month_to_date"] = "Bugüne kadar Ay"; +$LANG["phrase_multi_select"] = "Multi-seçin"; +$LANG["phrase_multi_select_dropdown"] = "Çoklu seçmeli açılır menü"; +$LANG["phrase_multiple_fields_found"] = "Birden fazla Alanları Bulunamadı!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Ad / Soyad"; +$LANG["phrase_new_blank_email"] = "Yeni Boş E-posta"; +$LANG["phrase_new_blank_option_list"] = "Yeni Boş Seçenek Listesi"; +$LANG["phrase_new_blank_view"] = "Yeni Boş Profili"; +$LANG["phrase_new_ft_installation"] = "Yeni Formu Araçları Kurulum"; +$LANG["phrase_new_option_list"] = "Yeni Seçenek Listesi"; +$LANG["phrase_new_password"] = "Yeni Şifre"; +$LANG["phrase_new_password_reenter"] = "Yeni Şifre (tekrar girin) lütfen"; +$LANG["phrase_new_view"] = "Yeni Görünüm"; +$LANG["phrase_new_view_all_fields"] = "Yeni Görünüm - Tüm alanlar"; +$LANG["phrase_next_client"] = "bir sonraki istemciye »"; +$LANG["phrase_next_field"] = "sonraki alana »"; +$LANG["phrase_next_form"] = "sonraki formu »"; +$LANG["phrase_next_view"] = "sonraki Profili »"; +$LANG["phrase_no_clients"] = "Hiçbir istemci"; +$LANG["phrase_no_limit"] = "Limitsiz"; +$LANG["phrase_no_offset"] = "Öteleme yok"; +$LANG["phrase_no_option_lists_available"] = "Hiç bir seçenek yok listeler."; +$LANG["phrase_no_views"] = "No Görüntüler"; +$LANG["phrase_no_views_with_filters_p"] = "(Yok filtreleri ile Görüntüleme tanımlanan)"; +$LANG["phrase_none_not_recommended"] = "Yok (önerilmez)"; +$LANG["phrase_not_assigned_to_option_list"] = "Bu alanda bir seçenek listesi atanmaz."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Eşit değil"; +$LANG["phrase_not_found"] = "Bulunamadı!"; +$LANG["phrase_not_like"] = "Benzer değil"; +$LANG["phrase_not_visible_to_client"] = "(müşteriye) görünür değil"; +$LANG["phrase_num_clients_per_page"] = "Her sayfadaki hesap sayısı"; +$LANG["phrase_num_emails_per_page"] = "Num Emails Per Page"; +$LANG["phrase_num_fields"] = "Alanların Sayısı"; +$LANG["phrase_num_forms_per_page"] = "Her sayfadaki form sayısı"; +$LANG["phrase_num_menus_per_page"] = "Num Menüler Sayfa Başına"; +$LANG["phrase_num_modules_per_page"] = "Num Modüller Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Sayfa başına Num Seçenek Listesi"; +$LANG["phrase_num_options"] = "Num Seçenekleri"; +$LANG["phrase_num_rows"] = "Num Satırlar"; +$LANG["phrase_numbers_only"] = "Sayılar sadece"; +$LANG["phrase_often_localhost"] = "(genellikle "") localhost"; +$LANG["phrase_on_form_submission"] = "Form gönderme Açık"; +$LANG["phrase_one_char_number"] = "En az bir karakteri bir rakam (0-9) olan"; +$LANG["phrase_one_char_upper"] = "En az bir karakter büyük harf olduğunu"; +$LANG["phrase_one_special_char"] = "En azından bir { \$ karakter}"; +$LANG["phrase_only_specific_clients_have_access"] = "(sadece özel müşteriler) erişebilir"; +$LANG["phrase_open_form_in_dialog"] = "Iletişim penceresini açın formu"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Bu formu yeni bir sekme / pencere açın."; +$LANG["phrase_option_list"] = "Seçenek Listesi"; +$LANG["phrase_option_list_name"] = "Seçenek Listesi Adı"; +$LANG["phrase_option_list_or_contents"] = "Seçenek Listesi / İçerik"; +$LANG["phrase_option_lists"] = "Seçenek Listesi"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Sayfa Başlığı"; +$LANG["phrase_pass_on"] = "Pas geç"; +$LANG["phrase_password_min"] = "O karakter en az {\$length} olmalıdır."; +$LANG["phrase_password_one_number"] = "En azından bir sayı (0-9) içermelidir."; +$LANG["phrase_password_one_uppercase"] = "En azından bir büyük harf içermelidir."; +$LANG["phrase_password_requirements_c"] = "Şifre gereksinimleri:"; +$LANG["phrase_password_reset"] = "Parola Sıfırlama"; +$LANG["phrase_password_special_char"] = "En azından bir sonraki karakter: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "İzinler / Diğer Ayarlar"; +$LANG["phrase_permitted_file_types"] = "İzin verilen dosya türleri"; +$LANG["phrase_phone_number"] = "Telefon Numarası"; +$LANG["phrase_phone_number_format"] = "Telefon Numarası Biçimi"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini upload dosya boyutu izin max:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Sürümü"; +$LANG["phrase_please_confirm"] = "Lütfen Onaylayın"; +$LANG["phrase_please_enter_license_key"] = "Lisans anahtarını giriniz"; +$LANG["phrase_please_select"] = "Lütfen Seçiniz"; +$LANG["phrase_please_select_form"] = "Lütfen bir form seçin"; +$LANG["phrase_prev_client"] = "«Önceki istemci"; +$LANG["phrase_prev_form"] = "«Önceki formu"; +$LANG["phrase_prevent_password_reuse"] = "# Son şifre önlemek yeniden kullanım"; +$LANG["phrase_previous_field"] = "«önceki alana"; +$LANG["phrase_previous_page"] = "Önceki Sayfa"; +$LANG["phrase_previous_view"] = "«Önceki Görünümü"; +$LANG["phrase_program_name"] = "Program Adı"; +$LANG["phrase_public_form_omit_list"] = "Kamu Formu Gözardı Listesi"; +$LANG["phrase_public_view_omit_list"] = "Kamu Profili Gözardı Listesi"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Aşağıdaki sorgu ile ilgili bir sorun vardı:"; +$LANG["phrase_radio_buttons"] = "Yuvarlak Seçim Bütonu"; +$LANG["phrase_random_form_submission"] = "Rastgele form başvurusu"; +$LANG["phrase_re_enter_password"] = "Şifre Tekrar"; +$LANG["phrase_recipient_type"] = "Alıcı tipi"; +$LANG["phrase_redirect_url"] = "Yönlendirilecek URL"; +$LANG["phrase_refresh_list"] = "Listeyi yenile"; +$LANG["phrase_refresh_module_list"] = "Refresh Modül Listesi"; +$LANG["phrase_refresh_page"] = "SAYFAYI YENİLE"; +$LANG["phrase_refresh_theme_list"] = "Refresh Tema Listesi"; +$LANG["phrase_register_new_email"] = "Kayıt Yeni E-posta"; +$LANG["phrase_remaining_characters"] = "kalan karakterleri"; +$LANG["phrase_remaining_words"] = "kalan bir deyişle"; +$LANG["phrase_remove_tabs"] = "Kaldır Sekmeler"; +$LANG["phrase_required_password_chars"] = "Gerekli şifre karakterleri"; +$LANG["phrase_resend_test_submission"] = "TEST GÖNDERİSİNİ TEKRARLA"; +$LANG["phrase_return_form_list"] = "FORM LİSTESİNE DÖN"; +$LANG["phrase_row_selected"] = "{\$num_rows} satır seçili"; +$LANG["phrase_rows_selected"] = "{\$num_rows} satırlar seçilir"; +$LANG["phrase_sample_data"] = "Örnek Veri"; +$LANG["phrase_save_changes"] = "Değişiklikleri Kaydet"; +$LANG["phrase_search_keyword"] = "Arama anahtar"; +$LANG["phrase_security_settings"] = "Güvenlik Ayarları"; +$LANG["phrase_select_all"] = "Tümünü Seç"; +$LANG["phrase_select_all_X_results"] = "Tümünü Seç {\$numresults} Sonuçları"; +$LANG["phrase_select_all_on_page"] = "Sayafadaki Tümünü Seç"; +$LANG["phrase_select_date"] = "Tarih seçin"; +$LANG["phrase_select_field"] = "Alan seçin"; +$LANG["phrase_select_swatch"] = "Örneğini seçin"; +$LANG["phrase_selected_clients"] = "Seçilmiş Hesaplar"; +$LANG["phrase_selected_views"] = "Seçilen Görüntüler"; +$LANG["phrase_send_email"] = "Email"; +$LANG["phrase_send_test_email"] = "TEST E-POSTASI GÖNDER"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Oturumları Zaman Aşımı"; +$LANG["phrase_setting_value"] = "Değer Ayarı"; +$LANG["phrase_setup_options"] = "Seçenkeleri Ayarla"; +$LANG["phrase_show_all"] = "Tüm"; +$LANG["phrase_show_form"] = "Formu göster"; +$LANG["phrase_size_large"] = "Büyük (metin)"; +$LANG["phrase_size_medium"] = "Orta (<= 256 karakter)"; +$LANG["phrase_size_small"] = "Küçük (<= 20 karakter)"; +$LANG["phrase_size_tiny"] = "Küçük (<= 5 karakter)"; +$LANG["phrase_size_very_large"] = "Çok Büyük (mediumtext)"; +$LANG["phrase_skip_field"] = "Atlamak Alan"; +$LANG["phrase_skip_step"] = "Atlamak Adım"; +$LANG["phrase_small_100px"] = "Küçük (100px)"; +$LANG["phrase_small_80px"] = "Küçük (80px)"; +$LANG["phrase_smart_fill"] = "AKILLI DOLDURMA"; +$LANG["phrase_smart_fill_fields_from_c"] = "Den Akıllı alanları doldurun:"; +$LANG["phrase_smart_fill_user_documentation"] = "Akıllı Dolgu Kullanıcı Belgeleri »"; +$LANG["phrase_sort_as"] = "Sıralama olarak"; +$LANG["phrase_special_fields"] = "Özel Alanlar"; +$LANG["phrase_standard_fields"] = "Standart Alanları"; +$LANG["phrase_standard_filters"] = "Standart Filtreler »"; +$LANG["phrase_step_1"] = "Adım 1"; +$LANG["phrase_step_2"] = "Adım 2"; +$LANG["phrase_step_3"] = "Adım 3"; +$LANG["phrase_step_4"] = "Adım 4"; +$LANG["phrase_step_5"] = "Adım 5"; +$LANG["phrase_step_6"] = "Adım 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Form gönderiminde etiketleri kaldır"; +$LANG["phrase_subject_line"] = "Konu Hattı"; +$LANG["phrase_submission_date"] = "Gönderim tarihi"; +$LANG["phrase_submission_id"] = "Gönderi ID"; +$LANG["phrase_submission_made"] = "Gönderme yaptı: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Gönderi Türü"; +$LANG["phrase_submissions_per_page"] = "Her sayfa için Gönderim"; +$LANG["phrase_system_check"] = "Sistemi kontrol edin"; +$LANG["phrase_system_fields_no_validation"] = "Sistem alanlarına doğrulama ekleyemezsiniz."; +$LANG["phrase_system_time_offset"] = "Sistem Saati Öteleme"; +$LANG["phrase_tab_label"] = "Sekmesi Etiket"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Klasör İzinlerini Test Et"; +$LANG["phrase_test_submission"] = "Gönderi Testi"; +$LANG["phrase_test_submission_3"] = "3. Test Gönderme"; +$LANG["phrase_test_submission_received"] = "Alınan test Gönderme"; +$LANG["phrase_text_and_html"] = "Metin & HTML"; +$LANG["phrase_text_email"] = "Metin E-posta"; +$LANG["phrase_text_template"] = "Metin Şablonu"; +$LANG["phrase_the_previous_month"] = "Önceki Ay"; +$LANG["phrase_theme_description"] = "Tema Açıklama"; +$LANG["phrase_theme_info"] = "Tema Bilgisi"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Tüm Sonuçlar:"; +$LANG["phrase_type_c"] = "Hata Türü:"; +$LANG["phrase_unselect_all"] = "Tüm Seçimleri Kaldır"; +$LANG["phrase_update_accounts"] = "Güncelleme Hesapları"; +$LANG["phrase_update_email_template"] = "Güncelleme E-posta Şablonu"; +$LANG["phrase_update_field"] = "Güncelleme Alan"; +$LANG["phrase_update_order"] = "Güncelleme Sipariş"; +$LANG["phrase_update_view"] = "Güncelleme Profili"; +$LANG["phrase_upload_file"] = "Dosya Yükle"; +$LANG["phrase_upload_files"] = "Upload Dosya"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Yükleme Klasörü Yolu"; +$LANG["phrase_upload_folder_url"] = "Yükleme Klasörü URL si"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Varsayılan Değer kullan?"; +$LANG["phrase_used_by_num_form_fields"] = "# Form alanları tarafından kullanılmış"; +$LANG["phrase_uses_swatches"] = "Örnekleri kullanır."; +$LANG["phrase_valid_email"] = "Geçerli E-posta"; +$LANG["phrase_validation_error"] = "Doğrulama Hatası"; +$LANG["phrase_validation_rule"] = "Doğrulama Kuralı"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Grubu Görüntüle"; +$LANG["phrase_view_id"] = "Profil ID"; +$LANG["phrase_view_name"] = "View Adı"; +$LANG["phrase_view_placeholders"] = "Profil Yer tutucular"; +$LANG["phrase_view_submissions"] = "Profili Gönderimi"; +$LANG["phrase_view_uploaded_files"] = "yüklenmiş dosyaları gör"; +$LANG["phrase_viewing_range"] = "[inceleyen {\$startnum} {\$endnum} için]"; +$LANG["phrase_when_sent"] = "Ne zaman gönderildi"; +$LANG["phrase_when_submission_is_deleted"] = "Ne zaman teslim silinir"; +$LANG["phrase_when_submission_is_edited"] = "Ne zaman teslim düzenlenir"; +$LANG["phrase_who_can_access"] = "Kim erişebilir?"; +$LANG["phrase_word_limit_p"] = "kelime sınırı."; +$LANG["phrase_year_to_date"] = "Yılbaşından bugüne kadar"; +$LANG["phrase_yes_for_all_views"] = "Evet, tüm Görüntüler için"; +$LANG["phrase_yes_for_specific_views"] = "Evet, özel Görüntüler için"; +$LANG["phrase_your_account"] = "Hesap"; +$LANG["phrase_your_email"] = "Email Adresiniz"; +$LANG["phrase_your_email_address"] = "E-posta adresiniz"; +$LANG["processing_form_disabled"] = "Üzgünüz, bu form kapatılmıştır."; +$LANG["processing_form_incomplete"] = "Üzgünüz, bu formu görünmüyor tamamen Formu Araçlar içinden ayarlamak gerekir. Bu sorunun en olası nedeni, size "form_tools_initialize_form" gizli form alanı kaldırıldı, ancak "süreci Formu ekle tüm adımları tamamlanamadı.

    Lütfen giriş yapın ve formu yapılandırma inceleyin."; +$LANG["processing_init_complete"] = "Teşekkür ederiz! Test sunulması başarılı girmiştir. Form Araçları Yönetim paneline dönün ve form kurma bitirmek için Ekle Form Adım 3 sayfanın altındaki "Yenile" düğmesine tıklayın."; +$LANG["processing_invalid_form_id"] = "Üzgünüz, bu geçerli bir form kimliği olması görünmüyor."; +$LANG["processing_no_form_id"] = "process.php işleme için bir form kimliği gerektirir. Form şeklinde kimliği boyunca geçen "form_tools_form_id" adı ile gizli bir alan içerdiğinden emin olun."; +$LANG["processing_no_form_url_for_recaptcha"] = "Form Araçlar nerede ne zaman düzgün kaptan girmek için başarısız yönlendirmek için tespit edemiyor. Lütfen gizli bir alanda adını form_tools_form_url form URL içeren geçmektedir."; +$LANG["processing_no_post_vars"] = "process.php herhangi bir veri almıyordur. Not: Bu komut dosyası, tarayıcınızdan direkt olarak yüklenemez.
    Form POST üzerinden gönderme olduğundan emin olun."; +$LANG["processing_no_redirect_url"] = "Sunulması doğru bir şekilde işlenmiş, ancak bu form için bir yönlendirme URL belirtilen! Form Araçları UI formu düzenleyin ve yönlendirme URL'sini ekleyin."; +$LANG["special_language"] = "Turkish"; +$LANG["special_language_locale"] = "Turkish"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Tüm yeni müşteri hesaplarına ayarları ve izinleri aşağıda tanımlanan ile oluşturulur. Belirli bir müşteri için, müşteri hesabı düzenlemek ve Ayarlar sekmesine gidin bir ayarı geçersiz kılmak için."; +$LANG["text_add_form_choose_integration_method"] = "Form Araçları ile form entegre etmek için kullanmak istediğiniz yöntemi seçin."; +$LANG["text_add_form_code_submission_benefits"] = "Bu yöntemi kullanan Form Araçları API ana Formu Araçlar komut dosyası dahil. API mümkün olduğunca basit form Form Araçları ile entegre bir iş yapmak için bir çok yararlı fonksiyonları sağlar. API kullanan form nasıl sunulabilir herhangi bir kısıtlama yoktur. Sayfa gidin, tek ya da sayfa içeriği göndermek; kendi özel sunucu tarafında doğrulama, CAPTCHA görüntüler ekleyebilirsiniz; bilgi sunmayı tercih, ancak Form Araçlar UI teslim görüntülemek için söyleyebilirim Daha sonraki bir tarihte (bkz. Kesinleşen Gönderimler API yardım belgelerine bölümünde)."; +$LANG["text_add_form_code_submission_drawbacks"] = "PHP üzerinden form verilerini göndermek için, formu Bu formu Araçlar yükleme olarak aynı web sitesinde yer almalıdır. İkincisi, teknik olmayan ve acemi Form Araçları kullanıcılar için, bu yöntem ilk bakışta biraz korkutucu olabilir. Ancak, tek ve çok sayfalı formları (bunlar daha sonra bir adım bağlı) entegre etmek için iki basit öğreticiler de dahil olmak üzere, size yardımcı belgeler bol var."; +$LANG["text_add_form_direct_submission_benefits"] = "Bu formu Araçlar form göndermek için basit bir yoldur. PHP'den herhangi bir bilgi gerektirmez ve form sadece çok küçük bir değişiklik yapmak gerekmektedir. Daha küçük formlarda sadece veritabanına daha sonra bilgi vermek için bir "teşekkür" sayfasına yönlendirir istiyorum harika."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Bu teslim yöntemi kullanımı çok ama basit daha karmaşık formlar için çok kontrolü sağlamaz. Çok sayfalı formlar veya sunucu tarafında doğrulama gerektiren formları iyi ikinci yöntem için uygundur: Formu Araçlar API ilettiğiniz."; +$LANG["text_add_form_field_types1"] = "Çok az kaldı! Bu sayfa tüm form alanları bulmak ve kendi alanında türlerini belirlemek için çalışıyor. Başlamak için sağ tarafta Akıllı Dolgu düğmesini tıklatın. Dikkat etmeniz gereken konular, "Eylem Gerekli " sütununda görünür sadece tüm eylemler çözüldü devam etmek için izin olacaktır."; +$LANG["text_add_form_field_types2"] = "HTML form değilse, devam etmek için geç Adım düğmesini tıklatın. Bu, tüm sonra yapılandırılabilir."; +$LANG["text_add_form_field_types3"] = "Bu yeniden form içeriğini (ler). Not: Bu sayfada yaptığınız değişiklikleri üzerine yazılır."; +$LANG["text_add_form_field_types4"] = "Sorun haline çalıştırırsanız durumda, bu adımı atlamak için buraya tıklayın. Çözülmeyen tüm alanları varsayılan değerleri kullanmak için ayarlanır. Daha sonra bu alanları özelleştirebilirsiniz."; +$LANG["text_add_form_field_types_manual_upload"] = "Alanları doldurun Smart olamadı varsa, alternatif bir çözüm denemek isteyebilirsiniz: Aşağıdaki alanlara formlarının kopyalarını karşıya."; +$LANG["text_add_form_field_types_manual_upload2"] = "Not: ham PHP sayfaları (veya başka bir sunucu tarafı kod) karşıya değilsiniz - sadece HTML sürümleri yükleyin. Bunu almak için, web tarayıcınızda sayfa görüntülemek ve kaydetmek."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Belirtilen form sayfa bulunamadı birden çok alan vardı. Bu büyük olasılıkla aşağıdakilerden birini neden olur:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Yanlış, çok sayfalı bir form form URL'leri bir veya daha fazla girdi."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Bir veya daha fazla form sayfaları şifre korumalı ve script erişemedi."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Yanlış form URL girdi."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Tıklayınız ayarlarınızı kontrol etmek için Form Bilgileri sayfasına geri dönmek için."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Test sunulması yaptıktan sonra form değiştirmiştir (ler)"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Tıklayınız başka bir test sunulması yoluyla koymak."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Formunuz parola korumalı ve script erişemedi."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Bu tarayıcının başka bir sekmeye / pencere, form alanları yeniden denemek için Yenile düğmesini tıklatın oturum."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Yukarıdaki çözüm hiçbiri varsa, siz de denemek isteyebilirsiniz formları işleme için manuel yükleme ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Belirtilen form sayfalarında bulunamadı birden çok alan vardı. Bu büyük olasılıkla bunlardan biri neden olur:"; +$LANG["text_add_form_help_link"] = "Bu adımları sırasında herhangi bir sorun yaşarsanız, okuma deneyin kullanıcı belgeleri ."; +$LANG["text_add_form_step_1_text_1"] = "Aşağıdaki sayfalarda yapılandırmak Formu Araçlar adımları boyunca form tabanlı gönderimleri saklamak için size yol gösterir. Devam etmeden önce, lütfen kontrol edin:"; +$LANG["text_add_form_step_1_text_2"] = "Form zaten oluşturulmuş ve URL (localhost üzerinden erişilebilir ince is)"; +$LANG["text_add_form_step_1_text_3"] = "Form değiştir edebiliyoruz"; +$LANG["text_add_form_step_2_para_2"] = "Seçtiğiniz bir düzenleyicide form açın ve aşağıdakine, iki gizli alanlar dahil form etiketini değiştirin."; +$LANG["text_add_form_step_2_para_3"] = "Sonra, bir web tarayıcısından formunu açmak. Her alanda doldurun ve gönderin. Gönderdikten sonra, bir uyarı mesajı göreceksiniz. Bu, bu mesajı, bu sayfayı tıklayın aşağıdaki yenile düğmesi dönmek görüntülenir. Bu süreç tamamlandığında, bir düğme altında devam, sonraki adıma alıyorum göreceksiniz."; +$LANG["text_add_form_step_2_para_6"] = "Form gönderme olarak, aşağıdaki değerleri içerir. Doğrudan PHP ile ayarlanmış olabilir veya kendisi formu ile birlikte geçti. Aşağıda her örnekleridir. (\$ Varname) hash tüm form gönderme bilgi (veya ilişkili dizi) - Bu genellikle (\$ postvar) veya (\$ sessionvar) değişkendir, ama olabilir özel yapılmış."; +$LANG["text_add_form_step_2_text_2"] = "Burada "thankyou " sayfa URL'sini girin. Bu formu teslim edildiği tarihten itibaren insanlar yönlendirilmesini istediğiniz yere."; +$LANG["text_add_form_step_3_para_1"] = "Bu sayfa, form gönderme tüm alanları listeler. Lütfen her alanda incelemek ve herhangi kaldırmak istediğiniz her teslimi için saklanan gerekmez. Eğer kazara, geçerli bir alanı silmek ya da form, önceki sayfaya dönmek için yeni bir test teslim göndermek için depolanan bilgileri değiştirmek istiyoruz."; +$LANG["text_add_form_step_3_para_2"] = "Not: Eğer onay kutularını veya çok aracılığıyla alan adı [] karakterleri (Daha fazla bilgi için kullanıcı belgelerine bakın ile biter emin olun-seçin kutusunda, birden çok değer gönderiyoruz)."; +$LANG["text_add_form_step_3_text_1"] = "Eğlence başlar burada! Bu noktada, Form Araçları form bir test sunulmak üzere bekliyor. Bu veritabanında hangi bilgilerin muhafaza edilmelidir bilmek için bu formu teslim kullanabilirsiniz."; +$LANG["text_add_form_step_3_text_2"] = "form Araçlar form yönlendirerek"; +$LANG["text_add_form_step_3_text_3"] = "Formu Araçlar API kullanılarak"; +$LANG["text_add_form_step_3_text_4"] = "Form entegre yardımcı olmak için, bir tane aşağıdaki eğiticileri okumak öneririz:"; +$LANG["text_add_form_step_3_text_5"] = "Onlar nasıl test teslim için hazırlık form kurmak, anlatmak ve yardımcı olabilecek diğer bilgileri içerir. PHP ihtiyacınız irade satırı:"; +$LANG["text_add_form_step_3_text_6"] = "Bu aslında Formu Araçları gönderilen veri sağlar. Ne zaman test teslim tıklayın butonu ile aşağıda koydum."; +$LANG["text_add_form_step_3_text_7"] = "Için sayfa ÖNCE günü son "sayfa, \$ params değişkeni için aşağıdaki parametreyi eklemeyi unutmayın thank you:"; +$LANG["text_add_form_step_5_para_1"] = "Veritabanı formu Bu formu ve kullanmak için etkinleştirildi kurulmuştur. Eğer formu process.php işaret ederek, forma geri lütfen aşağıdaki gizli alanını kaldırmak gönderme yaptı:"; +$LANG["text_add_form_step_5_para_2"] = "Sonra ziyaret edin "sayfa oturumları boşaltmak için teşekkür ederim. Bu yapıldıktan sonra, tüm yeni form tabanlı gönderimleri işlenecek ve Form Araçları saklanır. Veya iki bilgileri doğrulamak için bir başvuru yaparak deneyin tüm yükleyerek doğru olduğunu."; +$LANG["text_add_form_step_5_para_3"] = "Eğer, ince istiyorsanız, ekstra form alanları alanına veya form alanı türleri özelleştirme ekleyerek, size herhangi bir noktada form düzenlemek olabilir otomatik e-posta gönderme gibi seçenekler için form tune."; +$LANG["text_add_form_step_5_para_4"] = "Yana form yüklemek alanlar dosyası içeriyorsa, yapılandırmak için dosya yükleme klasörünü belirtmek için, dosyaları ve ne izin verilen her alanı gerekir. Bu formu sayfası düzenleme Ekran sekmesinde bulunabilir."; +$LANG["text_add_form_step_5_para_5"] = "Eğer teslim API yoluyla için formun ilk sayfasında ft_api_init_form_page satırı gönderildi:"; +$LANG["text_add_submission_button"] = "Gönderme Ekle düğmesine sadece Views görünür "gönderimler eklemek Mayıs " evet "" seçeneği."; +$LANG["text_admin_email_placeholder_info"] = "Bu Formu Araçlar yönetici, hesap ayarlarında tanımlanan e-posta adresi. Bu sadece, eğer bir HTML bağlantısı olarak kullanmak istediğiniz e-posta adresi çıkışları, bir <a> etiketi, bu nedenle gibi sarmak gerekir:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Ayrıca varsayılan giriş sayfası tema)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "İlk olarak, form tipi seçiniz."; +$LANG["text_client_form_page"] = "Bu sayfa, formlar ve Görüntüler bu istemci atanmış listeler. İpucu: sırada onları bir formun gönderimleri görmek için, ihtiyaç duydukları en az bir iş atanacak."; +$LANG["text_client_map_filters_desc1"] = "Müşteri Harita filtreleri bu iş bir form alanında bir müşteri hesabında değerlerine değerler haritalama tarafından görünür gönderimler sınırı sağlar."; +$LANG["text_client_no_forms"] = "Şu anda herhangi bir form Düzeltilmesi için mevcuttur."; +$LANG["text_client_welcome"] = "Hoş geldiniz! Bu program saklar tüm bilgileri web sitenize ziyaretçiler tarafından gönderilmektedir. Belirli bir formu VIEW bağlantı veya diğer seçenekleri için soldaki navigasyon menüsü tıklamanız için gönderimler görüntülemek için."; +$LANG["text_config_file_created"] = "Your config.php dosyası oluşturuldu."; +$LANG["text_config_file_not_created"] = "Sizin config.php dosyası oluşturamadı. El dosyası oluşturmak gerekir."; +$LANG["text_config_file_not_created_instructions"] = "Kopyalayıp aşağıdaki bölümde bir dosya içine config.php adlı içeriğini yapıştırın ve FTP yoluyla Formu Araçlar yükleyin / küresel klasörü (klasör aynı zamanda birkaç diğer dosyaları ve dizinleri içerir, bir library.php) olarak adlandırılan dosya."; +$LANG["text_confirm_delete_form"] = "Evet, bu formu silmek istiyorum"; +$LANG["text_create_admin_account"] = "Şimdi yönetici hesabı oluşturmak için gidiyoruz. Bu tür formları eklenmesi ve müşteri hesapları oluşturma olarak Formu Araçları, tüm yönleriyle yönetme için kullanılır."; +$LANG["text_create_new_client_account"] = "Aşağıdaki formu kullanarak yeni bir müşteri hesabı oluşturmak için. Tüm alanlar gereklidir."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "biçimlendirme seçenekleri PHP {\$datefunctionlink} işlevi görmek"; +$LANG["text_default_file_settings_page"] = "Bu sayfa Formu Araçlar kurulum için dosya yükleme ayarlarını tanımlar. Bu kurallar tüm dosyaları Formu Araçları aracılığıyla yüklenen için, açıkça bağımsız bir form alanı için geçersiz geçerlidir. Not: Eğer yüklemek klasör sonra dosyalar yüklendikten değiştirdiğinizde, otomatik olarak yeni klasöre taşınır."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Devam etmeden önce, / default / cache klasörüne / temalar güncellemek için tam okuma ve yazma izinleri izin gerekir. Bu kez, bu mesajı kaybolur yapılır ve komut dosyası yükleyebilirsiniz."; +$LANG["text_default_values_in_view"] = "Bu bölüm isteğe bağlıdır. Bu Görünümü ile oluşturulan tüm gönderimler burada belirtilen varsayılan değerleri içerir."; +$LANG["text_delete_all_forms"] = "Ben bu formu aracılığıyla yüklenmiş olan tüm dosyaları silmek istiyorum"; +$LANG["text_delete_form_warning"] = "Sen bu formu silmek istediğinizden emin misiniz? Bu eylem geri alınamaz. Tüm veriler kalıcı olarak kaybolur!"; +$LANG["text_edit_admin_menu_page"] = "Aşağıdaki menü düzenleyebilirsiniz. Size sağlamak için her zaman tüm işlevselliği Formu Araçları, aşağıdaki sayfalara gereklidir: Formlar, Müşteriler, içinde kullanılabilir erişebilir Hesabınız, Modülleri, Ayarlar ve Çıkış."; +$LANG["text_edit_client_menu_page"] = "Bu bölümde, her kullanıcı için sol gezinti sütunu özelleştirebilirsiniz sağlar. Sen oluşturabilir kadar müşteri menüleri istediğiniz gibi atamak ve herhangi bir hesabı onlardan biri için. Varsayılan olarak iki menüleri: biri sizin için, yönetici ve bir bütün müşteri hesapları içindir. Yönetici hesabı olarak ama olabilir kaldırılmaz."; +$LANG["text_edit_tab_summary"] = "Sekmelere Bu Görünümü alanları grubuna isterseniz, sadece aşağıdaki sekmesini adlarını girin. Yaptıktan sonra, her alanda grup için uygun sekmeyi seçin Alanlar sekmesini ."; +$LANG["text_edit_view_list_page"] = "Bu sekme, alanlar Gönderme Listeleme sayfası sütunlar ve bu alanlar için bir kaç ek ayarlar olarak görünür kontrol eder. Not: size Görünüm en önemli alanların en fazla 5 4 veya daha eklemenizi öneririz."; +$LANG["text_email_settings_intro"] = "Bu sayfayı tanımlamak sağlar hangi bunlara karşılık gelen isimleri form alanları mağaza e-posta ve. Bir kez burada onları tanımlamak, e-posta bunları kullanabilirsiniz alıcıları olarak şablonları. Bu bölüm tamamen isteğe bağlıdır."; +$LANG["text_email_tab_summary"] = "Bu bölümde, her form gönderildiğinde gönderilecek e-postalar, herhangi bir sayıda yapı sağlar ve diğer tetikler."; +$LANG["text_email_template_tab"] = "Bu bölümde içerik e-posta ne görünür belirlemesini sağlıyor. Eğer yalnızca metin veya e-posta olarak e-posta göndermek için, yalnızca o bölüm için bir değer girmek isterdim. Eğer her ikisi için bir değer girin, e-posta her iki formatta gönderilecektir."; +$LANG["text_email_template_text_1"] = "Bir gönderme form {\$FORMNAME} üzerinden yapıldı."; +$LANG["text_email_template_text_1_c"] = "Bir başvuru form aracılığıyla yapılmış, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Kayıt olduğunuz için teşekkürler"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Hata mesajı alan doğrulama başarısız olmadığını göstermek için"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Harici formları web siteniz ya da web üzerinde yere zaten mevcut biçimleridir. Form Araçları ile entegre etmek istiyorum kendi formu varsa, bu seçeneği seçin."; +$LANG["text_fields_tab_summary"] = "Bu sayfa tüm form alanları listeler. Tarama sırasında gönderimler nasıl göründüğünü kontrol etmek için, bkz. Görüntüleme sekmesi . Bu sayfada bir alan silme, tüm gönderimler silecektir, bu nedenle dikkatli olun lütfen!"; +$LANG["text_file_extension_info"] = "Uzantıları virgülle ayrılmış dosya girin (gif, png) jpg gibi veya boş bir dosya türü izin bırakın."; +$LANG["text_file_field_placeholders_info"] = "Dosya alan iki özel tutucular: FILEURL ve FILENAME var. FILEURL dosyaya tam URL, bu nedenle, doğrudan e-postalarınızı bağlantısı olabilir; FILENAME sadece dosya adıdır."; +$LANG["text_filters_page"] = "Yalnızca gönderimler ki bu iş görünecektir altında define kurallara uygundur."; +$LANG["text_filters_tips"] = "Nasıl Kullanıcı Belgeleri görmek teslim filtreler, kullanımı hakkında ipuçları için."; +$LANG["text_forgot_password"] = "No problem. Hemen altında kullanıcı adınızı ve giriş bilgilerinizi girin dosyayı e-posta adresinize gönderilecektir. Eğer, de site yöneticisi {\$site_admin_email} e-posta lütfen adınızı unuttum."; +$LANG["text_form_contains_file_fields"] = "Bu form, bir veya daha fazla dosya yükleme alanları içerir:"; +$LANG["text_form_placeholder_info"] = "Aşağıdaki yertutucuları, e-posta şablonu atanan ne olursa olsun Profil ne olursa olsun, herhangi bir e-posta şablonu ve dil yer tutucu alanında kullanılıyor olabilir. SORU yer tutucular belirli bir form soru; CEVAP yer tutucular her soruya cevaplar."; +$LANG["text_form_submission_date_placeholder"] = "Gönderme yapıldığı tarih."; +$LANG["text_form_tools_form_url"] = "Formun tam URL. Bu sadece Dış formları için bir değeri vardır."; +$LANG["text_form_tools_login_url"] = "Form Tools giriş URL'si"; +$LANG["text_form_view_permission_info_admin"] = "Not: Bu formu şu anda yönetici erişim türü vardır, bu nedenle müşteri hesaplarına hiçbiri bu görüntüleme mümkün olacak ."; +$LANG["text_form_view_permission_info_private"] = "Not: Bu formu şu anda, burada genel ve özel seçenekleri müşterilerin bu alt sınırlı olacak şekilde özel bir erişim türü vardır."; +$LANG["text_ft_installed"] = "Tebrikler, Form Araçları başarıyla yüklendi!"; +$LANG["text_global_placeholder_info"] = "Bu herhangi bir yer tutucuları ve herhangi bir şablon kullanılabilir."; +$LANG["text_group_name_explanation"] = "Alanları için Formu süreci Ekle aracılığıyla, bu değer önceden ne alanın ekran metni doldurulur değeri kullanır ekledi. Bunu değiştirmek için iyi içeriği karakterize isteyebilirsiniz."; +$LANG["text_install_create_config_file"] = "Dosyadaki sunucu ve veritabanı ayarları config.php adlı Formu Araçlar mağazalar, sizin / küresel bulunan / klasör. "Otomatik olarak sunucu üzerinde dosya oluşturmak için Dosya Create" tuşuna tıklayın."; +$LANG["text_install_create_database_tables"] = "Şimdi Formu Araçlar veritabanı tablolarını oluşturmak için gidiyoruz. Bu adım, zaten oluşturulmuş olduğu veritabanının kendisi gerektirir. Bunu nasıl yapacağınızdan emin değilseniz, lütfen barındırma sağlayıcınıza başvurun."; +$LANG["text_install_db_tables_error_tip_1"] = ""Bilinmeyen MySQL Server Host" genellikle, sağlanan hostname yanlış olduğu anlamına gelir. Belki de "localhost" - bu "yerel" veritabanına bir web sunucusuna başvurmak için ortak bir yoludur bu ayarı deneyin."; +$LANG["text_install_db_tables_error_tip_2"] = ""Yerel MySQL sunucusu için soket" ile bağlamak Can't veritabanı hostname alanına anlamına tekrar yanlış."; +$LANG["text_install_db_tables_error_tip_3"] = ""Access kullanıcı için reddedildi:" Bu oraya kullanıcı adı / şifre kombinasyonu ile bir sorunu var demektir."; +$LANG["text_install_db_tables_error_tip_4"] = ""Access kullanıcı için reddedildi: ... veritabanına ..." rağmen kullanıcı adınızı ve doğru olduğunu verilen şifre, bu hesapla o veritabanına bağlanamıyor anlamına gelir. Bu ya sizin veritabanı adı, veya yanlıştır, bu kullanıcı hesabını veritabanı ile ilişkili değildir anlamına gelebilir."; +$LANG["text_install_email_content_text"] = "İnternet sitemizde (https://docs.formtools.org) ve derslerimiz (https://docs.formtools.org/tutorials) dahil olmak üzere, web sitemize başlamanıza yardımcı olacak birçok kaynak var. Eğer takılıp kaldığınızı veya bir sorunuz varsa, github (https://github.com/formtools/core/issues/) adresinden bir soru sorun."; +$LANG["text_install_form_tools_server_not_supported"] = "Üzgünüz, Form Araçları sunucu üzerinde çalıştırmak mümkün olmaz. lütfen tıklayınız minimum gereksinimleri için."; +$LANG["text_install_system_check"] = "Bu sayfa sistem o Formu Araçlar çalıştırabilir emin olmak için birkaç test eder."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Başka yerde sitenizde - İç formları Form Araçları içinde bulunmaktadır. Form Araçları kullanıcı hesapları oluşturmak için erişim olacaktır. Varolan bir form yoksa, bu seçeneği seçin."; +$LANG["text_internal_form_intro"] = "İç yeni bir form oluşturmak için aşağıdaki formu kullanın. Form alanlarının sayısı ve içerik dahil olmak üzere tüm ayarları değişti ve daha sonra yapılandırılmış olması olabilir."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Amacıyla giriş ve Form Araçları kullanıyorsanız, tarayıcınızda JavaScript'in etkin olması gerekir. Lütfen tarayıcınızın şimdi, ve tıkırtı yenileme sağlar."; +$LANG["text_last_modified_date_explanation_c"] = "Son kez bu gönderme güncellenmiştir. Yeni gönderimler için, bu aynıdır:"; +$LANG["text_limit_email_content_desc"] = "Bu seçenek, sadece HTML ve metin içeriği Smarty Döngüler ile oluşturulan için çalışır."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(sadece bir veya daha fazla filtre tanımlanan) Görüntüler listeleri"; +$LANG["text_log_in_to_ft"] = "Formu Araçları giriş"; +$LANG["text_login"] = "Lütfen aşağıdaki (\$ program_adı) Yönetim Paneli erişmek için oturum açın. Eğer şifrenizi, buraya tıklayın unuttuysanız."; +$LANG["text_login_info"] = "Olarak istenen, burada giriş bilgilerdir."; +$LANG["text_name_of_form"] = "Formun adı"; +$LANG["text_no_clients"] = "Şu anda veritabanında bir istemci olsun. Aşağıdaki Müşteri Ekle düğmesini yeni bir müşteri hesabı eklemek için tıklayın."; +$LANG["text_no_clients_found"] = "Hiçbir istemci bulunamadı. Arama kriterlerinizi genişletmeyi deneyin."; +$LANG["text_no_fields_in_view"] = "Bu Görünüm içinde herhangi bir alan yoktur. Aşağıdaki linke tıklayın."; +$LANG["text_no_forms"] = "Şu anda veritabanında hiç biçimleridir. Yeni bir form, aşağıdaki formu düğmesini tıklayın eklemek için."; +$LANG["text_no_forms_found"] = "Formları bulunamadı."; +$LANG["text_no_forms_found_search"] = "Formları bulunamadı. Arama kriterinizi genişletmeyi deneyin."; +$LANG["text_no_modules_found"] = "No modülleri bulunamadı. Arama kriterlerinizi genişletmeyi deneyin."; +$LANG["text_no_recipients_added"] = "No alıcıların eklendi."; +$LANG["text_no_search_results"] = "Bu arama kriterleri ile sonuç / görünümü."; +$LANG["text_no_submissions_found"] = "Üzgünüz, hiç kayıt bulunamadı"; +$LANG["text_no_themes"] = "Tanımlanmış herhangi bir temalar zorunda değilsiniz. Tema listesini yenilemek ya da kontrol etmek için aşağıdaki butona Form Araçları kullanıcı belgelerine ekleyerek temaları hakkında bilgi almak için tıklayın ."; +$LANG["text_non_deletable_fields"] = "Bu alan Core komut dosyası tarafından kullanılan ve uyumsuzlukları neden olmadan düzenlenemez veya silinemez. Alan türü değişiklik yapmak istiyorsanız, bunun bir kopyasını yapmak ve kopya düzenleyin."; +$LANG["text_option_list_group_explanation"] = "Bu seçilirse, bu seçenekleri grubuna sağlar. Grupları nasıl görüntülenir Bu seçenek listesini kullanarak alan türü bağlıdır."; +$LANG["text_option_list_page"] = "Radyo düğmeleri, onay kutuları, dropdowns ve çoklu seçim açılır alanları, onlar bir veya daha fazla öğe seçebilirsiniz birden fazla seçenekleri ile kullanıcıya sunar. Form Araçları, bu Seçenek Listesi olarak bilinir. Genellikle, bu tarafından otomatik olarak oluşturulur Ekle Başka Formu işleminin, ancak form içerik değişiklikleri veya sadece dahili olarak kullanılan alanlar inşa eğer elle aşağıdaki seçenek listeleri ekleyebilir veya düzenleyebilirsiniz."; +$LANG["text_option_list_used_by_fields"] = "Bu Seçenek Listesi birden fazla form alanları tarafından kullanılır. Aşağıda bilgilerini güncellemek, tüm alanları (bkz. değişmiş olacak Form Alanlar sekmesini alanların listesini görmek için). Biri için değerleri, ya da şu anda atanır alanların bir alt kümesini güncellemek istiyorsanız , bu aynı değerleri ile yeni bir Seçenek Listesi oluşturmak için buraya tıklayın . Sonra yeni bir grup istediğiniz form alanları atayabilirsiniz."; +$LANG["text_public_form_omit_list_page"] = "Kamu formları tüm müşteri hesaplarına el onlara her istemci atamak zorunda kalmadan onlara erişim sağlamak fayda verir. Bu sayfa, bu formu erişim olmayabilir bu istemciler olsa bile, kamu formu olarak işaretlenir pinpoint sağlar."; +$LANG["text_public_view_omit_list_page"] = "Halk, tüm müşteri hesaplarına el onlara her istemci atamak zorunda kalmadan onlara erişim sağlamak fayda verir. Bu sayfa, bu belirli ulaşmak olmayabilir bu müşteriler pinpoint sağlar."; +$LANG["text_reference_tab_info"] = "Bu sayfa formunuz için mevcut tüm yer tutucular listeler. Yer tutucular, e-posta şablonları kullanılabilir dizeleri, özel bir yer tutucu simgesi ile işaretlenmiş alanlar . Bir alana girdiğinde, dinamik, alanında görülüyor ya da e-posta gönderilir uygun bir değere dönüştürülür."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Gözden kullanıcı belgeleri"; +$LANG["text_send_email_from_edit_submission_page"] = "Değiştir Gönderme sayfadan bu e-posta göndermek için Include seçeneği"; +$LANG["text_smart_fill_option_list_problem"] = "Akıllı alanı seçenekleri doldurun koyamadık. Ancak, alternatif olarak, aşağıdaki alana form sayfasının bir kopyasını yükleyerek deneyebilirsiniz. Not: ham PHP sayfaları (veya başka bir sunucu tarafı kod) karşıya değilsiniz - sadece HTML sürümünü yüklemek. Bunu almak için, web tarayıcınızda sayfa görüntülemek ve kaydetmek."; +$LANG["text_submission_ip_address"] = "IP Adresi kim gönderme yapılan kullanıcı."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Ya görüntülemek veya kendiniz bir bu e-posta şablonunu oluşturulan e-posta göndermek için aşağıdaki formu kullanın. Yalnızca e-posta e-posta aşağıda belirtilen gönderilir; cc, ana ve bcc e-posta adresi alıcıları ise test yok sayılır."; +$LANG["text_test_email_templates_no_submissions"] = "Sizi e-posta test şablonları, ilk önce en az bir form gönderme yoluyla koymak gerekir."; +$LANG["text_theme_page_intro"] = "Bu sayfa, temalar tüm listeler. Küçük tıklayınız tema's stilleri daha büyük bir örnek görmek için. "" Onay kutusunun olsun veya olmasın bu tema istemcileri tarafından seçilebilir belirler sağladı. , Formu Araçları web sitesini ziyaret tüm temalar taramak için."; +$LANG["text_tutorial_adding_first_form"] = "Eğitimi: İlk form ekleme!"; +$LANG["text_unique_submission_id"] = "Özgün başvuru ID'si"; +$LANG["text_unused_option_list"] = "Bu seçenek listesi, herhangi bir form alanları tarafından kullanılan varlık değildir."; +$LANG["text_upgraded"] = "Yükleme {\$version} yükseltilmiştir"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Bu Seçenek Listesi aşağıdaki alanlarda kullanılır."; +$LANG["text_view_fields_info"] = "Bu sekme Bu Görünümü teslim düzenleme alanları sırasına göstermek ve onlar düzenlenebilir olup olmadığını kontrol eder."; +$LANG["text_view_tab_summary"] = "Bu sekme, grup için farklı yollar oluşturmak ve verilerinizi düzenlemek sağlar. Görüntüleme yönetilebilir parçalara bölmek ve istemcilerini görmek veya düzenlemek ne sınırlamak için özel form veri alt kümeleri oluşturmak sağlar."; +$LANG["validation_account_disabled"] = "Üzgünüz, hesabınız kapatılmıştır."; +$LANG["validation_account_not_recognized"] = "Üzgünüz, bu kullanıcı adı tanınmadı."; +$LANG["validation_account_not_recognized_info"] = "Üzgünüz, bu kullanıcı adı bulunamadı. Lütfen tekrar deneyin veya aşağıdaki adresten site yöneticisine başvurun."; +$LANG["validation_account_pending"] = "Kullanıcı hesabınız bir yönetici tarafından onay bekleyen."; +$LANG["validation_check_delete_client"] = "Bunu müşteri hesabı silmek istediğinizden emin misiniz?"; +$LANG["validation_client_password_missing_number"] = "İstemci şifre en az bir sayı (0-9) içermelidir."; +$LANG["validation_client_password_missing_special_char"] = "İstemci şifre içermelidir olarak en az biri şu karakterleri: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "İstemci şifre en az bir büyük harf içermelidir."; +$LANG["validation_client_password_too_short"] = "Müşteri şifresini uzun karakterler){\$number} olmak en az."; +$LANG["validation_col_name_is_reserved_word"] = "Maalesef, bu veritabanı sütun adı MySQL ayrılmış bir çalışmadır. Lütfen yeniden adlandırın!"; +$LANG["validation_db_name"] = "Veritabanı adları periyot veya eğik çizgi içeremez."; +$LANG["validation_db_not_updated_invalid_input"] = "Veritabanı güncellendi olamazdı. Lütfen girdiğiniz değerleri kontrol edin geçerlidir."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Üzgünüz, varsayılan yönetici ve istemci temalar her zaman etkin olmalıdır."; +$LANG["validation_default_phone_num_required"] = "Numaraları sadece <b> { \$ alan} </ b> alanına tam telefon numarasını doldurunuz."; +$LANG["validation_default_rule_alpha"] = "Lütfen sadece <b> { \$ alan} </ b> alanına harf ve sayı girmek."; +$LANG["validation_default_rule_letters_only"] = "Lütfen sadece <b> { \$ alan} </ b> alanına harf girmek."; +$LANG["validation_default_rule_numbers_only"] = "<b> { \$ Alan} </ b> alanına sadece sayı giriniz."; +$LANG["validation_default_rule_required"] = "<b> { \$ Alan} </ b> alanı için bir değer giriniz."; +$LANG["validation_default_rule_valid_email"] = "<b> { \$ Alan} </ b> alanı için geçerli bir e-posta adresi giriniz."; +$LANG["validation_delete_form_confirm"] = "Lütfen bu formu silmek istediğiniz onaylamak için kutuyu işaretleyin."; +$LANG["validation_delete_non_empty_option_list"] = "Uyarı! Bu Seçenek Listesi, bir veya daha fazla form alanları tarafından kullanılır. Silmeden bu alanlar düzgün çalışması için son yapacaktır."; +$LANG["validation_display_names_incomplete"] = "Lütfen tüm Görünen Adlar tıklatın veya Akıllı Dolgu seçeneği dinamik olarak girmek için bir değer girin."; +$LANG["validation_duplicate_form_field_name"] = "Aynı alan adı ile birden fazla alan olamaz."; +$LANG["validation_email_not_found_or_invalid"] = "Üzgünüz, e-posta hesabı ya yok veya geçersiz ilişkili."; +$LANG["validation_folder_invalid_permissions"] = "Bunun testi çalıştırmak için, yetki gerekebilir yükleme klasörü okuma ve dosyalar (777 Unix) yazılı izin vermek için ayarlamak gerekir."; +$LANG["validation_folder_not_writable"] = "Bu klasör yazılabilir değildir"; +$LANG["validation_internal_form_too_many_fields"] = "Üzgünüz, sadece 1000 alanları veya daha az olan formları oluşturulan yapabilirsiniz."; +$LANG["validation_invalid_admin_email"] = "Lütfen geçerli adminstrator e-posta adresini girin."; +$LANG["validation_invalid_admin_username"] = "Kullanıcı adınız sadece alfasayısal karakterler (AZ, 0-9) oluşabilir."; +$LANG["validation_invalid_client_username"] = "Istemci kullanıcı adı sadece alfanümerik karakterler (AZ ve 0-9) oluşabilir."; +$LANG["validation_invalid_client_username2"] = "Üzgünüz, kullanıcı adı sadece harf, rakam ve alt çizgi karakteri içerebilir. Lütfen yeni bir kullanıcı adı girin."; +$LANG["validation_invalid_column_name"] = "Sütun adları yalnızca (AZ, 0-9) alfasayısal olabilir. Sütun adlarını kontrol edin."; +$LANG["validation_invalid_custom_from_email"] = "Lütfen e-posta adresi 'Kimden geçerli özel' girin."; +$LANG["validation_invalid_custom_reply_to_email"] = "Lütfen girmek geçerli özel 'Yanıt' e-posta adresi."; +$LANG["validation_invalid_default_sessions_timeout"] = "Lütfen geçerli bir değer varsayılan oturum zaman aşımı için (bir sayı) girin."; +$LANG["validation_invalid_email"] = "Lütfen geçerli bir e-posta adresi giriniz."; +$LANG["validation_invalid_email_id"] = "Üzgünüz, bu geçersiz bir e-posta kimliği."; +$LANG["validation_invalid_folder"] = "Maalesef, bu geçerli bir klasör olarak görünmüyor."; +$LANG["validation_invalid_form_field_names"] = "Form alanlarının sadece alfasayısal olabilir ve (AZ, 0-9, çizgiler _) olmasına."; +$LANG["validation_invalid_num_clients_per_page"] = "Lütfen sadece sayfa alanı Başına Num İstemciler sayı girin."; +$LANG["validation_invalid_num_emails_per_page"] = "Lütfen sadece sayfa başına e-postalar için rakam girin."; +$LANG["validation_invalid_num_form_fields"] = "Lütfen sadece Alanlar alan sayısı numaraları girmek."; +$LANG["validation_invalid_num_forms_per_page"] = "Lütfen sadece sayfa alanı Num Formlar Per numaraları girin."; +$LANG["validation_invalid_num_menus_per_page"] = "Lütfen sadece sayfa başına menüler için rakam girin."; +$LANG["validation_invalid_num_modules_per_page"] = "Lütfen sadece Num Modüller Page alan Başına numaraları girin."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Sayfa alanını Başına Num Seçenek Listesi numaraları sadece girmek için lütfen."; +$LANG["validation_invalid_num_submissions_per_page"] = "Lütfen sayfa başına gönderimler geçerli bir numara girin."; +$LANG["validation_invalid_sessions_timeout"] = "Lütfen geçerli bir oturum zaman aşımı süresini girin (tamsayılar sadece!)."; +$LANG["validation_invalid_tab_assign_values"] = "Lütfen sadece sayı girmek 've' alanlar."; +$LANG["validation_invalid_table_prefix"] = "Please enter a database prefix consists of letter and the underscore character only."; +$LANG["validation_invalid_upload_folder"] = "PHP Sunucu kurulum upload_tmp_dir değeri için geçersiz bir ayarı vardır. "{\$upload_folder}" geçerli bir klasörü değildir."; +$LANG["validation_invalid_url"] = "Lütfen geçerli bir URL girin."; +$LANG["validation_invalid_username"] = "Kullanıcı adınız sadece alfanümerik karakterler (AZ ve 0-9) oluşabilir."; +$LANG["validation_is_form_active"] = "Lütfen olup form veya etkin olduğunu gösterir."; +$LANG["validation_menu_name_taken"] = "Üzgünüz, bu menü adı alınmıştır. Lütfen yeni bir ad seçin."; +$LANG["validation_modules_search_no_status"] = "Lütfen ya Etkin veya Devre Dışı onay kutularını seçin."; +$LANG["validation_no_access_type"] = "Lütfen erişim tipi."; +$LANG["validation_no_account_logout_url"] = "Lütfen logout URL girin."; +$LANG["validation_no_account_password_confirmed"] = "Lütfen yeni şifrenizi girin."; +$LANG["validation_no_account_password_confirmed2"] = "Lütfen tekrar yeni şifrenizi girin."; +$LANG["validation_no_admin_email"] = "Lütfen yönetici e-posta adresini girin."; +$LANG["validation_no_admin_theme"] = "Lütfen yönetici hesabı için tema seçin."; +$LANG["validation_no_admin_theme_swatch"] = "Lütfen yönetici tema için bir örneğini seçin."; +$LANG["validation_no_client_email"] = "Lütfen müşteri e-posta adresini girin."; +$LANG["validation_no_client_first_name"] = "Lütfen müşteri ilk isim girin."; +$LANG["validation_no_client_last_name"] = "Lütfen müşteri soyadını girin."; +$LANG["validation_no_client_login_page"] = "Lütfen hangi sayfa istemci zaman oturum yönlendiriliyorsunuz olması gerektiğini belirtir"; +$LANG["validation_no_client_password"] = "Lütfen müşteri şifrenizi girin."; +$LANG["validation_no_client_theme_swatch"] = "Lütfen müşteri hesapları için varsayılan bir örneğini seçin."; +$LANG["validation_no_client_username"] = "Lütfen müşteri adınızı girin."; +$LANG["validation_no_column_name"] = "Lütfen tüm sütun adlarını girin veya bunları otomatik olarak doldurmak için Akıllı Dolgu düğmesini tıklatın."; +$LANG["validation_no_column_selected"] = "Lütfen teslim liste sayfasında bir sütun olarak görünmesi için en az bir alanı seçin."; +$LANG["validation_no_custom_from_email"] = "Lütfen e-posta adresi girin 'Kimden özel'."; +$LANG["validation_no_custom_recipient_email"] = "Lütfen özel alıcı e-posta adresinizi girin."; +$LANG["validation_no_custom_reply_to_email"] = "Lütfen girin Özel 'Yanıt' e-posta adresi."; +$LANG["validation_no_date_format"] = "Lütfen tarih formatını giriniz."; +$LANG["validation_no_db_column_single"] = "Veritabanı Sütun adını yazınız."; +$LANG["validation_no_db_hostname"] = "Lütfen veritabanı hostname girin."; +$LANG["validation_no_db_name"] = "Lütfen veritabanı adını girin."; +$LANG["validation_no_db_username"] = "Lütfen veritabanı hesap kullanıcı adı girin."; +$LANG["validation_no_default_client_theme"] = "Lütfen tüm yeni müşteri hesapları için varsayılan tema seçin."; +$LANG["validation_no_default_language"] = "Lütfen Formu Araçları yükleme için varsayılan dili seçin."; +$LANG["validation_no_default_sessions_timeout"] = "Lütfen kullanıcı hesapları için varsayılan oturum zaman aşımı süresini girin."; +$LANG["validation_no_display_text"] = "Her alan için Ekran Metin giriniz."; +$LANG["validation_no_display_text_single"] = "Ekran metin değeri giriniz."; +$LANG["validation_no_edit_submission_page_label"] = "Lütfen Düzenle Submission sayfa etiket girin."; +$LANG["validation_no_email"] = "Lütfen e-posta adresinizi giriniz."; +$LANG["validation_no_email_config_field"] = "Lütfen form alanında belirttiğiniz e-posta alandır."; +$LANG["validation_no_email_content"] = "Lütfen en az bir biçimleri için e-posta içeriğini girmek (HTML veya metin)."; +$LANG["validation_no_email_from_field"] = "Lütfen alan 'dan e-posta'."; +$LANG["validation_no_email_template_name"] = "Lütfen e-posta şablon adını girin."; +$LANG["validation_no_email_template_view_id"] = "Lütfen bu e-posta aktarılması gerektiğini şablon Profili seçin."; +$LANG["validation_no_email_template_view_mapping_value"] = "Lütfen belirtiniz zaman e-posta gönderilmesi gerekmektedir."; +$LANG["validation_no_enabled_themes"] = "Lütfen en az bir tema etkin olduğundan emin olun."; +$LANG["validation_no_first_name"] = "Lütfen adınızı giriniz."; +$LANG["validation_no_form_field_name"] = "Lütfen tüm form alan adlarını girin."; +$LANG["validation_no_form_field_single"] = "Form Alanı değerini girin."; +$LANG["validation_no_form_id"] = "Formu kimliği belirtilmedi. Lütfen çıkın ve yeniden deneyin."; +$LANG["validation_no_form_name"] = "Lütfen form adını giriniz."; +$LANG["validation_no_form_url"] = "Lütfen form URL'sini giriniz."; +$LANG["validation_no_last_name"] = "Lütfen soyadınızı giriniz."; +$LANG["validation_no_login_page"] = "Lütfen istediğiniz hangi sayfa göstermek Oturumunuz her zaman gönderilmesini"; +$LANG["validation_no_logout_url"] = "Lütfen çıkış (logout) URL'sini giriniz."; +$LANG["validation_no_main_email_recipient"] = "Lütfen en az bir ana e-posta alıcı girin (değil yani bir cc veya bcc)."; +$LANG["validation_no_menu"] = "Lütfen bu kullanıcı hesabı için bir menü seçin."; +$LANG["validation_no_menu_id"] = "Lütfen bir menü seçin."; +$LANG["validation_no_num_clients_per_page"] = "Lütfen sayfa başına müşteri hesap numarasını girin."; +$LANG["validation_no_num_emails_per_page"] = "Lütfen sayfa başına listesine e-postaların sayısını girin."; +$LANG["validation_no_num_form_fields"] = "Form alanlarının sayısını giriniz."; +$LANG["validation_no_num_forms_per_page"] = "Lütfen sayfa başına formlarının numarasını girin."; +$LANG["validation_no_num_menus_per_page"] = "Lütfen sayfa başına listesine menülerin numarasını girin."; +$LANG["validation_no_num_modules_per_page"] = "Lütfen sayfa başına modüllerinin numarasını girin."; +$LANG["validation_no_num_option_lists_per_page"] = "Sayfa başına seçenek listeleri sayısını yazınız."; +$LANG["validation_no_num_submissions_per_page"] = "Lütfen sayfa başına görüntülemek başvuruların sayısını girin."; +$LANG["validation_no_option_list_name"] = "Seçenek listesi adını yazınız."; +$LANG["validation_no_page_titles"] = "Lütfen kullanıcı hesapları için varsayılan sayfa başlıklarını girin."; +$LANG["validation_no_password"] = "Lütfen şifrenizi giriniz."; +$LANG["validation_no_program_name"] = "Lütfen program adını giriniz."; +$LANG["validation_no_second_password"] = "Lütfen şifrenizi tekrar girin."; +$LANG["validation_no_sessions_timeout"] = "Lütfen oturum zaman aşımı süresini girin."; +$LANG["validation_no_smart_fill_values"] = "Lütfen formun URL form alanı adını girin."; +$LANG["validation_no_table_prefix"] = "Please enter a database prefix."; +$LANG["validation_no_tabs_defined"] = "No sekmeleri tanımlı"; +$LANG["validation_no_test_email_recipient"] = "Lütfen nerede test e-posta göndermek gerektiği e-posta adresini girin."; +$LANG["validation_no_test_email_submission_id"] = "Lütfen başvuru numaranızı girin."; +$LANG["validation_no_theme"] = "Lütfen bir tema seçin."; +$LANG["validation_no_theme_swatch"] = "Lütfen seçilen tema için bir örneğini seçin."; +$LANG["validation_no_timezone_offset"] = "Lütfen dilimi ofset girin."; +$LANG["validation_no_titles"] = "Lütfen sayfa başlıklarını giriniz."; +$LANG["validation_no_two_column_names"] = "Maalesef, iki kez aynı veritabanı sütun adını giremezsiniz."; +$LANG["validation_no_ui_language"] = "Lütfen arayüzü için bir dil seçin."; +$LANG["validation_no_url"] = "Lütfen bir URL girin."; +$LANG["validation_no_username"] = "Lütfen kullanıcı adınızı giriniz."; +$LANG["validation_no_username_or_js"] = "Kullanıcı adınızı girmeniz gerekir. Lütfen tarayıcınızda JavaScript'i etkinleştirin."; +$LANG["validation_no_view_fields"] = "Görünüm tüm alanları içermez! Orada en az bir alanı atamak Görünüm görünür bir şey gerekmektedir."; +$LANG["validation_no_view_fields_selected"] = "Lütfen Profili eklemek için bir veya daha fazla alanları seçin."; +$LANG["validation_no_view_name"] = "Lütfen View adını girin."; +$LANG["validation_num_rows_to_add"] = "Lütfen eklemek için satır numarasını girin."; +$LANG["validation_option_list_name_taken"] = "Üzgünüz, bu seçeneği listesinde adı zaten alınır. Lütfen yeni bir ad seçin."; +$LANG["validation_password_in_password_history"] = "Güvenlik için, şifreleri herhangi bir son {\$history_size} ile aynı şifreyi history_size) giremezsiniz. Lütfen farklı bir şifre girin."; +$LANG["validation_passwords_different"] = "Lütfen şifreler aynı olduğundan emin olun."; +$LANG["validation_please_enter_search_date_range"] = "Lütfen arama tarih aralığını giriniz."; +$LANG["validation_please_enter_search_keyword"] = "Lütfen arama anahtar kelimesini giriniz."; +$LANG["validation_select_field_type"] = "Lütfen bir alan türü seçin."; +$LANG["validation_select_submissions_to_copy"] = "Lütfen kopyalamak istediğiniz gönderileri seçin."; +$LANG["validation_select_submissions_to_delete"] = "Lütfen silmek istiyorsunuz o gönderimler seçin."; +$LANG["validation_smart_fill_cannot_fill"] = "Maalesef, bu alanı doldurmak couldn't."; +$LANG["validation_smart_fill_invalid_field_type"] = "Bir alan bulmak koyamadık, ama açılan, onay kutusu veya radyo grubu değildir."; +$LANG["validation_smart_fill_no_field_found"] = "Üzgünüz, sayfa belirtilen aynı adlı bir form alanı bulamadı."; +$LANG["validation_smart_fill_no_page"] = "Lütfen sayfa Akıllı doldurun istediğiniz alanı içeren bulun."; +$LANG["validation_smart_fill_upload_all_pages"] = "Lütfen formu tüm sayfalarını yükleyebilir."; +$LANG["validation_upload_folder_not_writable"] = "Bu geçici yükleme klasörü PHP kurulum tarafından belirtilen yazılabilir değil. Bu kadar sabittir, dosyalar Formu Araçları (veya başka bir PHP programı) aracılığıyla yükledi olamaz. Lütfen barındırma sağlayıcınıza başvurun."; +$LANG["validation_upload_html_files_only"] = "Lütfen sadece HTML dosyaları yükleyin."; +$LANG["validation_username_taken"] = "Üzgünüz, bu kullanıcı adı zaten alınmış. Lütfen başka bir kullanıcı adı girin."; +$LANG["validation_wrong_password"] = "Üzgünüz, bu şifre kullanıcı adınız ile uyuşmadı."; +$LANG["word_about"] = "hakkında"; +$LANG["word_access"] = "grngrngiriş"; +$LANG["word_account"] = "Hesap"; +$LANG["word_account_sp"] = "Hesap (lar)"; +$LANG["word_accounts"] = "Hesapları"; +$LANG["word_action"] = "Eylem"; +$LANG["word_active"] = "Aktif"; +$LANG["word_add"] = "Ekle"; +$LANG["word_add_rightarrow"] = "Ekle »"; +$LANG["word_add_uc_rightarrow"] = "ekle »"; +$LANG["word_administration"] = "Yönetici"; +$LANG["word_administrator"] = "Yönetici"; +$LANG["word_after"] = "Sonra"; +$LANG["word_aquamarine"] = "Akuamarin"; +$LANG["word_asc"] = "Artan"; +$LANG["word_author"] = "Yazar"; +$LANG["word_author_c"] = "Author:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«geri"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Önce"; +$LANG["word_benefits"] = "Yararları"; +$LANG["word_blue"] = "Mavi"; +$LANG["word_cancel"] = "Iptal"; +$LANG["word_cc_c"] = "Cc:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "İşaret Kutusu"; +$LANG["word_checklist"] = "Checklist"; +$LANG["word_client"] = "Müşteri"; +$LANG["word_client_c"] = "İşveren:"; +$LANG["word_clients"] = "Müşteriler"; +$LANG["word_close"] = "KAPAT"; +$LANG["word_code"] = "Kod"; +$LANG["word_column"] = "Sütun"; +$LANG["word_columns"] = "Sütunlar"; +$LANG["word_columns_sp"] = "Sütun (lar)"; +$LANG["word_complete"] = "TAMAMLANMIŞ"; +$LANG["word_configuration"] = "Yapılandırma"; +$LANG["word_content"] = "Içerik"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Devam »"; +$LANG["word_copy"] = "Kopya"; +$LANG["word_custom"] = "Özel"; +$LANG["word_data"] = "Veri"; +$LANG["word_date"] = "Tarih"; +$LANG["word_debugging_c"] = "Debugging:"; +$LANG["word_delete"] = "SİL"; +$LANG["word_desc"] = "Azalan"; +$LANG["word_direct"] = "Doğrudan"; +$LANG["word_disabled"] = "Etkin Değil"; +$LANG["word_documentation"] = "Belgeleme"; +$LANG["word_done"] = "Yapılmış"; +$LANG["word_drawbacks"] = "Sakıncaları"; +$LANG["word_dropdown"] = "Aşağı Açılan"; +$LANG["word_edit"] = "DÜZENLE"; +$LANG["word_editable"] = "Düzenlenebilir"; +$LANG["word_email"] = "EMAIL"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "E-postalar"; +$LANG["word_enabled"] = "Etkin"; +$LANG["word_equals"] = "Eşit"; +$LANG["word_error"] = "Hata"; +$LANG["word_error_c"] = "Hata:"; +$LANG["word_examples_c"] = "Örnekler:"; +$LANG["word_external"] = "Harici"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Alan"; +$LANG["word_field_sp"] = "Alan(lar)"; +$LANG["word_fields"] = "Alanlar"; +$LANG["word_fields_sp"] = "Alan (lar)"; +$LANG["word_file"] = "Dosya"; +$LANG["word_file_b_uc"] = "[DOSYA]"; +$LANG["word_files"] = "Dosyalar"; +$LANG["word_filters"] = "Filtreler"; +$LANG["word_filters_sp"] = "Filtre (ler)"; +$LANG["word_for"] = "için"; +$LANG["word_form"] = "Form"; +$LANG["word_form_c"] = "Form:"; +$LANG["word_formatting"] = "Biçimlendirme"; +$LANG["word_forms"] = "Formlar"; +$LANG["word_found"] = "Bulundu"; +$LANG["word_from"] = "Kimden"; +$LANG["word_from_c"] = "Kimden:"; +$LANG["word_general"] = "Genel"; +$LANG["word_green"] = "Yeşil"; +$LANG["word_grey"] = "Gri"; +$LANG["word_height"] = "Yükseklik"; +$LANG["word_help"] = "Yardım"; +$LANG["word_hidden"] = "Gizli"; +$LANG["word_highlight"] = "Vurgulayın"; +$LANG["word_horizontal"] = "Yatay"; +$LANG["word_hour"] = "Saat"; +$LANG["word_hours"] = "Saatler"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "KİMLİK"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Tamamlanmamış"; +$LANG["word_install"] = "Yüklemek"; +$LANG["word_installation"] = "Montaj"; +$LANG["word_internal"] = "Iç"; +$LANG["word_language"] = "Dil"; +$LANG["word_large"] = "Büyük"; +$LANG["word_like"] = "Gibi"; +$LANG["word_login"] = "OTURUM AÇMA"; +$LANG["word_logo"] = "Amblem"; +$LANG["word_logout"] = "Çıkış"; +$LANG["word_main"] = "Ana"; +$LANG["word_medium"] = "Orta"; +$LANG["word_menu"] = "Menü"; +$LANG["word_menus"] = "Menüler"; +$LANG["word_minutes"] = "dakika"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Modülü"; +$LANG["word_modules"] = "Modüller"; +$LANG["word_na"] = "BOŞ"; +$LANG["word_name"] = "Ad"; +$LANG["word_name_c"] = "Ad:"; +$LANG["word_never"] = "Asla"; +$LANG["word_next_rightarrow"] = "sonraki »"; +$LANG["word_next_step_rightarrow"] = "SONRAKİ ADIM »"; +$LANG["word_no"] = "Hayır"; +$LANG["word_none"] = "Hiçbiri"; +$LANG["word_notes"] = "Notlar"; +$LANG["word_notification"] = "Bilgiler"; +$LANG["word_number"] = "Rakam"; +$LANG["word_off"] = "Kapalı"; +$LANG["word_offline"] = "Çevrimdışı"; +$LANG["word_okay"] = "Tamam"; +$LANG["word_on"] = "Üzerinde"; +$LANG["word_online"] = "Çevrimiçi"; +$LANG["word_operator"] = "Operatör"; +$LANG["word_options"] = "Seçenekler"; +$LANG["word_orange"] = "Turuncu"; +$LANG["word_order"] = "Sipariş"; +$LANG["word_other"] = "Diğer"; +$LANG["word_other_c"] = "Diğer:"; +$LANG["word_page"] = "Sayfa"; +$LANG["word_page_c"] = "Sayfa:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Şifre"; +$LANG["word_password_c"] = "Şifre:"; +$LANG["word_pending"] = "Beklemede"; +$LANG["word_permissions"] = "İzinler"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«previous"; +$LANG["word_private"] = "Özel"; +$LANG["word_public"] = "Kamu"; +$LANG["word_purple"] = "Mor"; +$LANG["word_recipient"] = "Alıcı"; +$LANG["word_recipient_sp"] = "Alıcı(lar)"; +$LANG["word_red"] = "Kırmızı"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Çıkarmak"; +$LANG["word_remove_uc_leftarrow"] = "«KALDIR"; +$LANG["word_reply_to"] = "Cevapla"; +$LANG["word_reply_to_c"] = "Cevapla:"; +$LANG["word_required"] = "Gereken"; +$LANG["word_reset"] = "Sıfırla"; +$LANG["word_resolved"] = "Çözüldü"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "sıra"; +$LANG["word_search"] = "Arama"; +$LANG["word_searchable"] = "Aranabilir"; +$LANG["word_select"] = "Seçin"; +$LANG["word_setting"] = "Ayar"; +$LANG["word_settings"] = "AYARLAR"; +$LANG["word_show"] = "Göstermek"; +$LANG["word_size"] = "Boyut"; +$LANG["word_skipped"] = "Atlanır"; +$LANG["word_small"] = "Küçük"; +$LANG["word_solution"] = "Çözüm"; +$LANG["word_sortable"] = "Sıralanabilir"; +$LANG["word_start"] = "Başlangıç"; +$LANG["word_status"] = "Durum"; +$LANG["word_string"] = "Dizi"; +$LANG["word_subject"] = "Konu"; +$LANG["word_subject_c"] = "Konu"; +$LANG["word_submenu"] = "Alt"; +$LANG["word_submission"] = "Üyelik"; +$LANG["word_submissions"] = "Üyelikler"; +$LANG["word_system"] = "Sistem"; +$LANG["word_tab"] = "Sekmesi"; +$LANG["word_tabs"] = "Sekmeleri"; +$LANG["word_tabs_sp"] = "Sekme (lar)"; +$LANG["word_test"] = "Deneme"; +$LANG["word_text"] = "Yazı"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Tema"; +$LANG["word_themes"] = "Temalar"; +$LANG["word_time"] = "Zaman"; +$LANG["word_tiny"] = "Küçücük"; +$LANG["word_tips"] = "İpuçları"; +$LANG["word_today"] = "Bugün"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Uninstall"; +$LANG["word_unknown"] = "Bilinmeyen"; +$LANG["word_update"] = "GÜNCELLEME"; +$LANG["word_upgrade"] = "Yükseltme"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Kullanıcı"; +$LANG["word_username"] = "Kullanıcı Adı"; +$LANG["word_username_c"] = "Kullanıcı Adı:"; +$LANG["word_validation"] = "Onaylama"; +$LANG["word_value"] = "Değer"; +$LANG["word_value_sp"] = "Değer(ler)"; +$LANG["word_verified"] = "Doğrulanmadı"; +$LANG["word_verify"] = "Doğrulamak"; +$LANG["word_version"] = "Sürüm"; +$LANG["word_vertical"] = "Dikey"; +$LANG["word_view"] = "Görüntüle"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Tehlike!"; +$LANG["word_warning_c"] = "Uyarı:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Hoş geldiniz!"; +$LANG["word_width_c"] = "genişlik:"; +$LANG["word_words"] = "Sözler"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Sarı"; +$LANG["word_yes"] = "Evet"; \ No newline at end of file diff --git a/global/lang/uk.php b/global/lang/uk.php new file mode 100644 index 00000000..063e6264 --- /dev/null +++ b/global/lang/uk.php @@ -0,0 +1,1219 @@ +Увага!
    Ви вибрали {\$num_selected_on_page} представлених на цій сторінці і {\$num_selected_on_other_pages} на інших сторінках. Будь ласка, виберіть один з наступних варіантів:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Увага! Ви не вибрали представлених на цій сторінці, але ви вибрали {\$num_selected_on_other_pages} на інших сторінках. Будь ласка, підтвердіть, що ви бажаєте видалити ці матеріали.
    "; +$LANG["confirm_delete_view"] = "Ви впевнені, що хочете видалити цю точку зору?"; +$LANG["confirm_refresh_page"] = "Ви впевнені, що хочете, щоб оновити сторінку? Це будуть втрачені всі зміни, зроблені вами."; +$LANG["confirm_save_change_before_redirect"] = "Одне або кілька полів були оновлені. Хотіли б Ви, щоб зберегти зміни перед перенаправленням?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Ви впевнені, що хочете Smart Fill імена стовпців в базі даних? Це буде перезаписувати існуючі цінності."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Ця опція автоматично створює базу даних імена стовпців на основі полів Відображення тексту, так що вміст таблиці бази даних є більш зручними для читання."; +$LANG["confirm_smart_fill_display_names"] = "Ви впевнені, що хочете Smart Fill дисплея імена? Це буде перезаписувати існуючі цінності."; +$LANG["confirm_ungroup_option_list"] = "Ви впевнені, що хочете розгрупувати цей варіант списку? Всі варіанти будуть зібрані в єдину Розгрупувати список."; +$LANG["confirm_uninstall_module"] = "Ви впевнені, що хочете вилучити цей модуль? Модуль Всі дані будуть втрачені."; +$LANG["date_AM"] = "AM"; +$LANG["date_Fri"] = "Пт"; +$LANG["date_Friday"] = "П'ятниця"; +$LANG["date_Mon"] = "Пн"; +$LANG["date_Monday"] = "Понеділок"; +$LANG["date_PM"] = "PM"; +$LANG["date_Sat"] = "Сб"; +$LANG["date_Saturday"] = "Субота"; +$LANG["date_Sun"] = "Сонце"; +$LANG["date_Sunday"] = "Неділя"; +$LANG["date_Thu"] = "Чт"; +$LANG["date_Thursday"] = "Четвер"; +$LANG["date_Tue"] = "Вт"; +$LANG["date_Tuesday"] = "Вівторок"; +$LANG["date_Wed"] = "Ср"; +$LANG["date_Wednesday"] = "Середа"; +$LANG["date_am"] = "м."; +$LANG["date_month_April"] = "Квітень"; +$LANG["date_month_August"] = "Серпень"; +$LANG["date_month_December"] = "Грудень"; +$LANG["date_month_February"] = "Лютий"; +$LANG["date_month_January"] = "Січень"; +$LANG["date_month_July"] = "Липень"; +$LANG["date_month_June"] = "Червень"; +$LANG["date_month_March"] = "Березень"; +$LANG["date_month_May"] = "Травень"; +$LANG["date_month_November"] = "Листопад"; +$LANG["date_month_October"] = "Жовтень"; +$LANG["date_month_September"] = "Вересень"; +$LANG["date_month_short_Apr"] = "Квітень"; +$LANG["date_month_short_Aug"] = "Серпень"; +$LANG["date_month_short_Dec"] = "Грудень"; +$LANG["date_month_short_Feb"] = "Лютий"; +$LANG["date_month_short_Jan"] = "Січень"; +$LANG["date_month_short_Jul"] = "Липень"; +$LANG["date_month_short_Jun"] = "Червень"; +$LANG["date_month_short_Mar"] = "Березень"; +$LANG["date_month_short_May"] = "Травень"; +$LANG["date_month_short_Nov"] = "Листопад"; +$LANG["date_month_short_Oct"] = "Жовтень"; +$LANG["date_month_short_Sep"] = "Вересень"; +$LANG["date_pm"] = "м."; +$LANG["notify_account_deleted"] = "Обліковий запис відсутній."; +$LANG["notify_account_updated"] = "Ваш обліковий запис успішно оновлений."; +$LANG["notify_add_display_values"] = "Додати відображення значень"; +$LANG["notify_admin_menu_updated"] = "Адміністрація мене була поновлена."; +$LANG["notify_admin_theme_overridden"] = "Тема адміністратором вручну було подолано."; +$LANG["notify_allow_url_fopen_not_set"] = "На жаль, цей тест не може бути запущений на вашому веб-сервері. Вона вимагає allow_url_fopen бути встановлений в 1 у файлі php.ini. Ця установка дозволяє PHP для доступу до файлів через URL, які необхідні для виконання даного тесту. Ви можете перевірити це вручну, завантаживши файл у цій папці через FTP, а потім намагається отримати до нього доступ на URL Ви поставили."; +$LANG["notify_change_temp_password"] = "Ви просто увійти в систему з тимчасовим паролем. Ви повинні скинути пароль зараз!"; +$LANG["notify_click_to_edit_new_submission"] = "Натисніть тут, щоб відредагувати нове подання."; +$LANG["notify_client_account_menus_updated"] = "Рахунок клієнта (и) були оновлені до {\$menu_name} меню. Тепер Ви можете видалити мене, який раніше був пов'язаний з рахунку (ів)."; +$LANG["notify_client_account_not_updated"] = "Рахунку клієнта не може бути оновлена."; +$LANG["notify_client_account_themes_updated"] = "Клієнту рахунки (ів), були оновлені з {\$theme} теми. Тепер Ви можете відключити тему, раніше пов'язаних з рахунку (ів)."; +$LANG["notify_client_account_updated"] = "Облікового запису клієнта був успішно змінено."; +$LANG["notify_client_menu_deleted"] = "Клієнт мене відсутній."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Меню був видалений, але наступні рахунку клієнт вже не мають меню! Вам необхідно оновити такі рахунки:"; +$LANG["notify_client_menu_updated"] = "Клієнт мене була поновлена."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Вибачте, мене тільки що намагалися видалити вже використовується клієнтами, перерахованих нижче. Для того, щоб видалити меню ви в першу чергу необхідно призначити клієнтам інші меню. Натисніть на ім'я клієнта, щоб правити, що індивідуальний рахунок, або присвоїти все рахунку на інший меню за допомогою випадаючого нижче."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "На жаль, однією з тем, ви просто відключена вже використовуються такі рахунки клієнта. Для того щоб відключити тему ви будете в першу чергу необхідно призначити кожного клієнта, щоб інша тема. Натисніть на ім'я клієнта, щоб правити, що індивідуальний рахунок, або присвоїти всі рахунки на тему, використовуючи що випадає, нижче."; +$LANG["notify_edit_email_fields_link"] = "Натисніть тут, щоб вказати, які поля форми електронної пошти поля, так що ви можете націлити їх в шаблонах електронної пошти."; +$LANG["notify_edit_field_new_field"] = "Це нове поле. Вам потрібно буде оновити головну сторінку перш ніж він зможе повністю редагувати це поле."; +$LANG["notify_edit_option_list_after_save"] = "Ви повинні вибрати варіант списку, а потім Зберегти зміни перш ніж він зможе змінити його."; +$LANG["notify_email_field_config_deleted"] = "Email конфігурація відсутній."; +$LANG["notify_email_fields_not_updated"] = "На жаль, ми не може оновити поля для письма."; +$LANG["notify_email_fields_updated"] = "Email полях були поновлені."; +$LANG["notify_email_not_sent"] = "На жаль, лист не було надіслано. Будь-ласка, звертайтеся до адміністратора за вказаною нижче адресою."; +$LANG["notify_email_not_sent_c"] = "На жаль, електронна пошта не може бути надіслано:"; +$LANG["notify_email_sent"] = "Email (и) були відправлені."; +$LANG["notify_email_template_deleted"] = "Електронний шаблон був знищений."; +$LANG["notify_email_template_updated"] = "Електронний шаблон був поновлений."; +$LANG["notify_enabled_module_list_updated"] = "Список включені модулі були поновлені."; +$LANG["notify_error_saving_fields"] = "Існував помилка при збереженні поля."; +$LANG["notify_field_changes_saved"] = "Зміни в полі (я) були врятовані."; +$LANG["notify_field_options_smart_filled"] = "Ваші варіанти області були Смарт заповнений."; +$LANG["notify_field_selected"] = "Області були обрані. Натисніть тут, щоб повернутися до основного списку поля."; +$LANG["notify_field_updated"] = "Ця область була поновлена."; +$LANG["notify_file_not_uploaded"] = "Файл не може бути завантажений."; +$LANG["notify_file_uploaded"] = "Файл успішно завантажено."; +$LANG["notify_filters_not_updated"] = "Був Помилка при оновленні подання цього клієнта фільтрів."; +$LANG["notify_filters_updated"] = "Представлення фільтри були оновлені для цього клієнта."; +$LANG["notify_folder_correct_permissions"] = "Ця папка має правильних дозволів."; +$LANG["notify_folder_url_match"] = "Папки та URL мабуть, правильним матч."; +$LANG["notify_folder_url_no_access"] = "Цей тест не може бути виконана з PHP не зміг отримати доступ до цього URL. Це може бути викликано URL бути захищена паролем. Htaccess файлу."; +$LANG["notify_folder_url_no_match"] = "Ця папка-URL комбінація видається, не будуть збігатися."; +$LANG["notify_folder_url_unknown_error"] = "Невідома помилка. Ви можете перевірити це вручну, завантаживши файл у цій папці через FTP, а потім намагається отримати до нього доступ на URL Ви поставили."; +$LANG["notify_form_access_type_email_info"] = "Ця форма має тип доступу адміністратора, так що ніяких клієнти мають доступ до нього і не перераховані у спадному нижче."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "На жаль, вигляд з ID не існує."; +$LANG["notify_form_field_not_added"] = "Полів форми '{\$fieldname}' не може бути додано."; +$LANG["notify_form_field_options_updated"] = "Параметри поля форми були поновлені."; +$LANG["notify_form_field_removed"] = "Форма області успішно вилучено."; +$LANG["notify_form_fields_removed"] = "Всі поля форми, успішно вилучено."; +$LANG["notify_form_not_updated_notify_admin"] = "Ваша форма не може бути оновлена. Будь-ласка, звертайтеся до адміністратора, щоб повідомити про дану проблему."; +$LANG["notify_form_settings_updated"] = "Ваші налаштування форми були успішно оновлені."; +$LANG["notify_form_submission_updated"] = "Форма подання була оновлена."; +$LANG["notify_form_tabs_updated"] = "Вкладки були поновлені."; +$LANG["notify_form_updated"] = "Форма успішно оновлено."; +$LANG["notify_form_views_updated"] = "Переглядів формі були оновлені."; +$LANG["notify_install_invalid_db_info"] = "На жаль, ми не могли підключитися до бази даних, використовуючи інформацію Ви вказали. Повідомлення про помилку бази даних повертаються: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Ваша форма була створена! Можна налаштувати форму за допомогою цих вкладок."; +$LANG["notify_invalid_account_information_in_sessions"] = "Рахунок інформації, що зберігається у сесіях є недійсним. Будь ласка, увійдіть знову нижче."; +$LANG["notify_invalid_license_key"] = "На жаль, це не здається, що діє ліцензійний ключ. Будь ласка, спробуйте ввести його знову."; +$LANG["notify_invalid_permissions"] = "У вас немає права на доступ до цієї сторінки. Ви вийшли з системи."; +$LANG["notify_invalid_search_dates"] = "Будь ласка, використовуйте DatePicker ввести правильну дату або дати."; +$LANG["notify_invalid_upload_folder"] = "Завантажити папки некоректні або не підтримує запису."; +$LANG["notify_lang_list_updated"] = "Доступних мов інтерфейсу список був поновлений."; +$LANG["notify_login_info_emailed"] = "Логін Ваша інформація була по електронній пошті."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "На жаль, цей модуль вже встановлено!"; +$LANG["notify_module_installed"] = "Цей модуль був встановлений. Натисніть тут, щоб вибрати модуль."; +$LANG["notify_module_list_updated"] = "Модуль список був поновлений."; +$LANG["notify_module_uninstalled"] = "Цей модуль був вилучений."; +$LANG["notify_module_updated"] = "{\$module} Модуль оновлений до {\$version}. Натисніть тут, щоб вибрати модуль ."; +$LANG["notify_multi_field_selected"] = "Області були обрані. Натисніть тут, щоб переглянути і відредагувати поле варіантів."; +$LANG["notify_multi_field_updated"] = "Ця область була поновлена. Ви зможете налаштувати області після створення форми."; +$LANG["notify_multiple_fields_found"] = "Кілька елементів були знайдені з цим іменем поля ({\$field_name}). Це може статися, якщо сторінка містить більше однієї форми, або якщо ви випадково названий одним з ваших форм такий же, як інший. Будь ласка, виберіть той, який ви хочете зі списку нижче."; +$LANG["notify_new_default_view_created"] = "Новий, стандартний вигляд, що містить всі поля форми був створений."; +$LANG["notify_new_submission_created"] = "Уявлення було створено. Ви можете редагувати його нижче."; +$LANG["notify_no_account_id_in_sessions"] = "Немає облікового запису користувача ID була знайдена в сесіях. Будь ласка, увійдіть знову нижче."; +$LANG["notify_no_api_installed"] = "Ви не API встановлений"; +$LANG["notify_no_client_permissions"] = "Є параметри не доступні для редагування."; +$LANG["notify_no_email_template_selected"] = "Будь ласка, виберіть шаблон електронної пошти."; +$LANG["notify_no_emails_defined"] = "Жодних повідомлень були визначені для цієї форми. Щоб додати новий, натиснувши на кнопку внизу."; +$LANG["notify_no_field_settings"] = "Цей тип поля не містить будь-яких додаткових налаштувань."; +$LANG["notify_no_fields_in_tab"] = "Ця вкладка не містить полів."; +$LANG["notify_no_option_lists"] = "Є немає іншого вибору, списки визначені. Натисніть на кнопку, щоб створити новий."; +$LANG["notify_no_test_submission"] = "Інсрументи не отримало успішне представлення випробуванням."; +$LANG["notify_no_user_email_fields_configured"] = "Примітка: якщо ви хочете відправити повідомлення на будь-яку адресу електронної пошти, який був включений у формі, спочатку необхідно налаштувати поля форми електронною поштою."; +$LANG["notify_no_views"] = "Ваша форма не має переглядів почалося! Вам знадобиться принаймні одна Перегляд для того, щоб керувати даними форми."; +$LANG["notify_no_views_assigned_to_client_form"] = "Схоже, що ви допустили помилку не була віднесена до будь-якій формі міркуваннями, тому ви не зможете побачити всі дані. Будь-ласка, звертайтеся до адміністратора для отримання додаткової допомоги."; +$LANG["notify_no_views_defined"] = "У вас немає будь-якої Переглядів визначені. Ви не будете в змозі розглянути подані цю форму, якщо тільки принаймні одне подання не створюється. Натисніть на кнопку, щоб створити вигляд за замовчуванням."; +$LANG["notify_option_list_deleted"] = "Список опцій була вилучена."; +$LANG["notify_option_list_updated"] = "Список опцій був поновлений."; +$LANG["notify_public_form_omit_list_updated"] = "Клієнт опустити список для цієї форми був поновлений."; +$LANG["notify_public_view_omit_list_updated"] = "Клієнт опустити список цієї точки зору був поновлений."; +$LANG["notify_required_admin_pages"] = "На наступних сторінках є обов'язковими в меню адміністратора: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "На жаль, не було будь-якої діяльності на деякий час нам довелося завершувати сеанс роботи. Будь ласка, увійдіть знову нижче."; +$LANG["notify_setup_options_updated"] = "Настройки були поновлені."; +$LANG["notify_smart_fill_field_not_found"] = "Нам не вдалося знайти поле з таким ім'ям ({\$field_name}) у формі (и) вказані. Ви можете вручну задавати тип поля нижче, або натисніть кнопку Підтвердити, щоб змінити це поле пізніше."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Ваш файл (и) були успішно завантажені. Спробуйте натиснути кнопку Smart Fill, щоб повторити спробу. Якщо цей крок не вдалося, вам доведеться пропустити цей крок і налаштувати поля форми manally пізніше."; +$LANG["notify_smart_fill_submitted"] = "Форма була представлена. Залежно від розміру вашої формі, і ряд польових сторінку, це може зайняти деякий час."; +$LANG["notify_smart_fill_upload_fields_fail"] = "На жаль, один або декілька файлів, які ви вступили не може бути завантажений. Вам потрібно буде пропустити цей крок і налаштувати поля вручну."; +$LANG["notify_submission_and_files_deleted"] = "Представлення і будь-якого файлу (ів), пов'язаних з ним, успішно вилучено."; +$LANG["notify_submission_copied"] = "Уявлення було скопійовано."; +$LANG["notify_submission_copied_edit"] = "Уявлення було скопійовано. Ви можете редагувати його нижче."; +$LANG["notify_submission_deleted"] = "Подання успішно вилучено."; +$LANG["notify_submission_deleted_with_problems"] = "Було вилучено подання, але з наступними проблемами довелося зіткнутися при спробі видалити файл (и):"; +$LANG["notify_submission_id_not_found"] = "ID подання не було знайдено."; +$LANG["notify_submission_not_updated"] = "Подання, не може бути оновлена."; +$LANG["notify_submissions_and_files_deleted"] = "Уявленнях і будь-якого файлу (ів), пов'язаних з ними, успішно вилучено."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} матеріалів було скопійовано."; +$LANG["notify_submissions_deleted"] = "Матеріали, успішно вилучено."; +$LANG["notify_submissions_deleted_with_problems"] = "Були вилучені матеріали, але з наступними проблемами довелося зіткнутися при спробі видалити файл (и):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Ваше тестове повідомлення не може бути надіслано."; +$LANG["notify_theme_cache_folder_not_writable"] = "Папка кешу Ця тема не є для запису. Для того, щоб дозволити цій темі, {\$folder} папка повинна мати повний доступ на читання-запис."; +$LANG["notify_theme_list_updated"] = "Тема список був поновлений."; +$LANG["notify_themes_settings_updated"] = "Установки теми були поновлені."; +$LANG["notify_view_deleted"] = "Відкрити відсутній."; +$LANG["notify_view_group_deleted"] = "Переглянути група була вилучена."; +$LANG["notify_view_missing_columns"] = "Упс! На жаль, ця точка зору не була повністю створена ще."; +$LANG["notify_view_missing_columns_admin_fix"] = "Натисніть тут , щоб вказати, які поля повинні з'явитися у вигляді стовпців на цій сторінці."; +$LANG["notify_view_updated"] = "Відкрити був поновлений."; +$LANG["notify_your_email_sent"] = "Ваше повідомлення успішно відправлено."; +$LANG["phrase_100_per_page"] = "100 на сторінці"; +$LANG["phrase_10_per_page"] = "10 результатів на сторінці"; +$LANG["phrase_15_per_page"] = "15 на сторінку"; +$LANG["phrase_1_direct"] = "1. Прямий"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 на сторінці"; +$LANG["phrase_25_per_page"] = "25 на сторінці"; +$LANG["phrase_2_code"] = "2. Кодекс"; +$LANG["phrase_2_columns"] = "2 колонки"; +$LANG["phrase_2chars"] = "2 символів"; +$LANG["phrase_3_columns"] = "3 колонки"; +$LANG["phrase_4_columns"] = "4 колонки"; +$LANG["phrase_50_per_page"] = "50 на сторінку"; +$LANG["phrase_accepting_submissions"] = "(приймає заявки)"; +$LANG["phrase_access_admin_account_c"] = "Ви можете отримати доступ до Адміністрації рахунок тут:"; +$LANG["phrase_access_type"] = "Тип доступу"; +$LANG["phrase_account_info"] = "Інформація про акаунт"; +$LANG["phrase_account_settings"] = "Налаштування облікового запису"; +$LANG["phrase_action_needed"] = "Необхідні заходи"; +$LANG["phrase_add_client"] = "Додати клієнта"; +$LANG["phrase_add_client_menu"] = "Додати клієнта меню"; +$LANG["phrase_add_default_settings_rightarrow"] = "Додати налаштуваннями за замовчуванням »"; +$LANG["phrase_add_field"] = "Додавання поля"; +$LANG["phrase_add_fields"] = "Додавання полів"; +$LANG["phrase_add_fields_rightarrow"] = "Додати поле (и) »"; +$LANG["phrase_add_form"] = "Додати форму"; +$LANG["phrase_add_form_external"] = "Додати форму - Зовнішні"; +$LANG["phrase_add_form_internal"] = "Додати форму - Внутрішня"; +$LANG["phrase_add_new_group_rightarrow"] = "Додати нову групу »"; +$LANG["phrase_add_num_rows"] = "Додати {\$number} числом строк (и)"; +$LANG["phrase_add_row"] = "Додати Row »"; +$LANG["phrase_add_submission_button"] = "Додати Подання Кнопка"; +$LANG["phrase_add_view_rightarrow"] = "Add View »"; +$LANG["phrase_adding_multi_page_form"] = "Додавання декількох сторінках форму з API"; +$LANG["phrase_adding_single_page_form"] = "Додавання одній сторінці форми з API"; +$LANG["phrase_admin_menu"] = "Меню Адміністратора"; +$LANG["phrase_admin_only"] = "Тільки адміністратор"; +$LANG["phrase_admin_panel"] = "Адміністратор групи"; +$LANG["phrase_administrator_theme"] = "Адміністратор тема"; +$LANG["phrase_advanced_settings_rightarrow"] = "Розширені налаштування »"; +$LANG["phrase_all_X_results_selected"] = "Всі {\$numresults} Результати Закладки"; +$LANG["phrase_all_clients"] = "Всі клієнти"; +$LANG["phrase_all_clients_except_c"] = "Всім клієнтам, за винятком:"; +$LANG["phrase_all_clients_have_access"] = "(всі клієнти мають доступ)"; +$LANG["phrase_all_fields"] = "Всі поля"; +$LANG["phrase_all_fields_displayed"] = "Відображаються всі поля"; +$LANG["phrase_all_statuses"] = "Усі статусі"; +$LANG["phrase_all_submissions"] = "Всі матеріали"; +$LANG["phrase_allow_fields_edited"] = "Дозволити полями для редагування"; +$LANG["phrase_alphanumeric"] = "Буквено-цифрові (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Застосувати зміщення часового поясу"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Призначення всіх перерахованих клієнту рахунку в {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Призначення всіх перерахованих клієнту рахунку в {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "На краю"; +$LANG["phrase_at_start"] = "На початок"; +$LANG["phrase_author_link"] = "Автор Посилання"; +$LANG["phrase_auto_disable_account"] = "Автоматичне відключення рахунку після # Логін спроби не вдалося"; +$LANG["phrase_auto_size"] = "Авто-розмір"; +$LANG["phrase_available_clients"] = "Доступні клієнти"; +$LANG["phrase_available_fields"] = "Доступні поля"; +$LANG["phrase_available_option_lists"] = "Доступні списки Варіант"; +$LANG["phrase_available_swatches"] = "Доступні Зразки"; +$LANG["phrase_available_swatches_c"] = "Доступні зразки:"; +$LANG["phrase_available_tabs"] = "Доступні вкладки"; +$LANG["phrase_available_views"] = "Доступно Перегляди"; +$LANG["phrase_awaiting_form_submission"] = "Очікується форми."; +$LANG["phrase_back_to_field_list"] = "«Повернутися до списку полів"; +$LANG["phrase_back_to_search_results"] = "повернутися до результатів пошуку"; +$LANG["phrase_base_view_on"] = "Вид на базі ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Зміни Логін інформації"; +$LANG["phrase_characters_limit_p"] = "символи межі."; +$LANG["phrase_check_db_settings_try_again"] = "Уважно перевірте налаштування бази даних і натисніть кнопку Продовжити знову."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Перевірте URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Відкритий Опустити Список"; +$LANG["phrase_client_account_settings"] = "Параметри облікового запису клієнта"; +$LANG["phrase_client_field"] = "Клієнт Польовий"; +$LANG["phrase_client_map_filters"] = "Фільтри картки клієнта »"; +$LANG["phrase_client_may_edit"] = "Клієнт може правити"; +$LANG["phrase_client_menu"] = "Клієнт Меню"; +$LANG["phrase_clients_can_access_form"] = "Клієнти, які можуть отримати доступ до форми"; +$LANG["phrase_clients_can_access_view"] = "Клієнти, які можуть отримати доступ до Відкрити"; +$LANG["phrase_clients_cannot_access_form"] = "Клієнти, які не можуть отримати доступ до форми"; +$LANG["phrase_clients_cannot_access_view"] = "Клієнти, які не можуть отримати доступ до Відкрити"; +$LANG["phrase_clients_may_edit"] = "Клієнти можуть правити"; +$LANG["phrase_code_c"] = "Код помилки:"; +$LANG["phrase_code_markup_field"] = "Код / розмітки поля"; +$LANG["phrase_code_markup_type"] = "Код / Тип розмітки"; +$LANG["phrase_codes_c"] = "Коди помилок:"; +$LANG["phrase_column_width"] = "Ширина стовпця"; +$LANG["phrase_company_name"] = "Назва компанії"; +$LANG["phrase_configure_form_email_fields"] = "Налаштування форми поля для письма"; +$LANG["phrase_confirm_folder_url_match"] = "Підтвердіть Папка-URL Режим пошуку"; +$LANG["phrase_connect_rows"] = "Підключіть рядків"; +$LANG["phrase_copy_email_settings_from"] = "Копіювати налаштування електронної пошти ..."; +$LANG["phrase_copy_settings_from"] = "Копіювати налаштування ..."; +$LANG["phrase_core_fields"] = "Основне поле"; +$LANG["phrase_core_version"] = "Версія ядра"; +$LANG["phrase_create_account"] = "Створити профіль"; +$LANG["phrase_create_admin_account"] = "Створення обліковий запис адміністратора"; +$LANG["phrase_create_config_file"] = "Створення файлу конфігурації"; +$LANG["phrase_create_database_tables"] = "Створення таблиць бази даних"; +$LANG["phrase_create_default_view"] = "Створення стандартного Переглянути"; +$LANG["phrase_create_file"] = "Створіть файл"; +$LANG["phrase_create_group"] = "Створити групу"; +$LANG["phrase_create_new_email"] = "Створити новий Email"; +$LANG["phrase_create_new_menu"] = "Створення нового меню"; +$LANG["phrase_create_new_option_list"] = "Створити новий список Варіант"; +$LANG["phrase_create_new_option_list_group"] = "Створити нову групу списку опцій"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Створити новий список Варіант »"; +$LANG["phrase_create_new_view"] = "Створити Відкрити"; +$LANG["phrase_create_new_view_group"] = "Створити нову групу Переглянути"; +$LANG["phrase_custom_display_format"] = "Користувальницький формат відображення"; +$LANG["phrase_custom_recipient"] = "Користувальницькі Одержувач"; +$LANG["phrase_custom_url"] = "Користувальницький URL"; +$LANG["phrase_dark_blue"] = "Темно-синій"; +$LANG["phrase_data_type"] = "Тип даних"; +$LANG["phrase_database_hostname"] = "База даних хоста"; +$LANG["phrase_database_name"] = "Назва бази даних"; +$LANG["phrase_database_password"] = "База даних паролів"; +$LANG["phrase_database_settings"] = "Налаштування бази даних"; +$LANG["phrase_database_setup"] = "Налаштування бази даних"; +$LANG["phrase_database_table_prefix"] = "Префікс таблиць БД"; +$LANG["phrase_database_username"] = "Ім'я користувача бази даних"; +$LANG["phrase_date_format"] = "Формат дати"; +$LANG["phrase_db_column"] = "DB Колонка"; +$LANG["phrase_db_setup_page_4"] = "4. Налаштування бази даних"; +$LANG["phrase_default_client_account_theme"] = "Рахунок клієнта за замовчуванням тема"; +$LANG["phrase_default_date_field_search_value"] = "Дата за замовчуванням поле пошуку значення"; +$LANG["phrase_default_language"] = "Мова за замовчуванням"; +$LANG["phrase_default_menu"] = "Меню за замовчуванням"; +$LANG["phrase_default_sessions_timeout"] = "За замовчуванням Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Сортування за замовчуванням"; +$LANG["phrase_default_tab_label"] = "Дані"; +$LANG["phrase_default_theme"] = "Типова тема"; +$LANG["phrase_default_value"] = "Значення за замовчуванням"; +$LANG["phrase_default_values"] = "Значення за замовчуванням"; +$LANG["phrase_default_values_new_submissions"] = "Значення за замовчуванням для нових пропозицій"; +$LANG["phrase_delete_field"] = "Видалити поле"; +$LANG["phrase_delete_form"] = "Видалити форму"; +$LANG["phrase_delete_row"] = "Видалити рядок"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Видалити пов'язані файли при видаленні подання"; +$LANG["phrase_delete_view"] = "Видалити Переглянути"; +$LANG["phrase_disconnect_rows"] = "Вимкнути рядків"; +$LANG["phrase_display_email"] = "Дисплей електронної пошти"; +$LANG["phrase_display_name"] = "Коротке ім'я"; +$LANG["phrase_display_text"] = "Показати текст"; +$LANG["phrase_display_value"] = "Коротке значення"; +$LANG["phrase_edit_admin_menu"] = "Змінити Меню Admin"; +$LANG["phrase_edit_client"] = "Змінити клієнта"; +$LANG["phrase_edit_client_menu"] = "Змінити клієнта меню"; +$LANG["phrase_edit_email_template"] = "Змінити шаблон електронного повідомлення"; +$LANG["phrase_edit_field"] = "Поле вводу"; +$LANG["phrase_edit_field_c"] = "Змінити поле:"; +$LANG["phrase_edit_form"] = "Змінити форму"; +$LANG["phrase_edit_form_access_type_b"] = "[Змінити тип форми доступ]"; +$LANG["phrase_edit_option_list"] = "Редагувати список опцій"; +$LANG["phrase_edit_submission"] = "Змінити подання"; +$LANG["phrase_edit_submission_label"] = "Змінити уявлення етикетки"; +$LANG["phrase_edit_view"] = "Змінити вигляд"; +$LANG["phrase_email_format"] = "Формат електронної пошти"; +$LANG["phrase_email_settings"] = "Установки електронної пошти"; +$LANG["phrase_email_template"] = "Email Template"; +$LANG["phrase_email_template_name"] = "Email назва шаблону"; +$LANG["phrase_error_learn_more"] = "Дізнайтеся більше про цю помилку."; +$LANG["phrase_error_text_intro"] = "Виправте такі помилки (S) і оновити:"; +$LANG["phrase_errors_learn_more"] = "Натисніть на коди помилок, щоб дізнатися більше."; +$LANG["phrase_event_trigger"] = "Тригер події"; +$LANG["phrase_external_form"] = "Зовнішні форми"; +$LANG["phrase_external_form_info"] = "Зовнішня інформація Форм"; +$LANG["phrase_external_your_own_form"] = "Зовнішній (свою власну форму)"; +$LANG["phrase_field_comments"] = "Поле Коментарі"; +$LANG["phrase_field_label"] = "Польові Label"; +$LANG["phrase_field_options"] = "Польові Опції"; +$LANG["phrase_field_size"] = "Розмір поля"; +$LANG["phrase_field_skipped"] = "Польові пропущений"; +$LANG["phrase_field_specific_settings"] = "Спеціалізовані Настройки"; +$LANG["phrase_field_type"] = "Тип поля"; +$LANG["phrase_field_type_no_validation"] = "Є немає правила перевірки для цього типу поля."; +$LANG["phrase_field_types"] = "Типи полів"; +$LANG["phrase_field_value"] = "Поле Значення"; +$LANG["phrase_field_values_to_display_values"] = "Польові цінності »відображення значень"; +$LANG["phrase_final_touches_page_6"] = "6. Останні штрихи"; +$LANG["phrase_finalize_form"] = "Завершити форму"; +$LANG["phrase_first_name"] = "Назва"; +$LANG["phrase_footer_text"] = "Колонтитул текст"; +$LANG["phrase_for_any_form_submission"] = "Для будь-якої форми подання"; +$LANG["phrase_for_view_submissions"] = "Тільки уявлень, які вписуються в наступному Перегляд (ів)"; +$LANG["phrase_forgot_password"] = "Забули пароль?"; +$LANG["phrase_form_already_selected"] = "Форм вже вибрали"; +$LANG["phrase_form_email_field_b_c"] = "[Форма] електронної області:"; +$LANG["phrase_form_email_field_configuration"] = "Форм Email конфігурація поля"; +$LANG["phrase_form_email_fields"] = "Поля форми Email"; +$LANG["phrase_form_field"] = "Польова форма"; +$LANG["phrase_form_field_contents"] = "Зміст поля форми"; +$LANG["phrase_form_field_name"] = "Ім'я поля форми"; +$LANG["phrase_form_field_placeholders"] = "Заповнювачів полів форми"; +$LANG["phrase_form_fields"] = "Поля форми"; +$LANG["phrase_form_info"] = "Форма інформації"; +$LANG["phrase_form_info_2"] = "2. Форма інформації"; +$LANG["phrase_form_list"] = "Форма Список"; +$LANG["phrase_form_name"] = "Форма Ім'я"; +$LANG["phrase_form_page"] = "Форм сторінку"; +$LANG["phrase_form_placeholders"] = "Форм Местозаполнітелі"; +$LANG["phrase_form_submission"] = "Форма представлення"; +$LANG["phrase_form_submissions"] = "Форма представлення"; +$LANG["phrase_form_type"] = "Тип форми"; +$LANG["phrase_form_url"] = "Форм URL"; +$LANG["phrase_form_urls"] = "Форма URL-адрес"; +$LANG["phrase_forms_assigned_to_any_account"] = "Форми призначені на будь-який рахунок"; +$LANG["phrase_forms_page_default_message"] = "Форми сторінки за замовчуванням повідомлення"; +$LANG["phrase_ft_installation"] = "Інсрументи скрипта установки"; +$LANG["phrase_full_width"] = "Повна ширина"; +$LANG["phrase_getting_started"] = "Приступаючи до роботи"; +$LANG["phrase_global_placeholders"] = "Глобальна Местозаполнітелі"; +$LANG["phrase_group_name"] = "Назва групи"; +$LANG["phrase_group_options_q"] = "Група варіанти?"; +$LANG["phrase_group_rows"] = "Група рядків"; +$LANG["phrase_have_fun"] = "Удачи!"; +$LANG["phrase_highlight_colour"] = "Виділіть кольору"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML шаблон"; +$LANG["phrase_images_media"] = "Зображення / Медіа"; +$LANG["phrase_import_option_list_rightarrow"] = "Імпорт списку Варіант »"; +$LANG["phrase_input_length"] = "Вхідна довжина"; +$LANG["phrase_installation_help"] = "Установка шпалер"; +$LANG["phrase_internal_form"] = "Внутрішня форма"; +$LANG["phrase_ip_address"] = "IP-адреса"; +$LANG["phrase_is_multi_page_form_q"] = "Це багатосторінковий форму?"; +$LANG["phrase_label_response_placeholders"] = "Етикетка / відповідь заповнювачів"; +$LANG["phrase_large_300px"] = "Великий (300 пікселів)"; +$LANG["phrase_large_400px"] = "Великий (400 пікселів)"; +$LANG["phrase_last_7_days"] = "Останні 7 днів"; +$LANG["phrase_last_logged_in"] = "Останні останні відвідування"; +$LANG["phrase_last_modified"] = "Змінено"; +$LANG["phrase_last_modified_date"] = "Останні оновлення"; +$LANG["phrase_last_name"] = "Прізвище"; +$LANG["phrase_letters_only"] = "Листи тільки"; +$LANG["phrase_light_brown"] = "Темно-русявий"; +$LANG["phrase_limit_email_content"] = "Ліміт зміст електронної пошти в поля Відкрити"; +$LANG["phrase_loading_ellipsis"] = "Завантаження ..."; +$LANG["phrase_log_in"] = "Увійти"; +$LANG["phrase_login_as_user"] = "Увійти як цей користувач"; +$LANG["phrase_login_info"] = "Увійти інформація"; +$LANG["phrase_login_page"] = "Увійти сторінку"; +$LANG["phrase_login_panel_c"] = "Увійти Групи:"; +$LANG["phrase_login_panel_leftarrows"] = "«Логін Групи"; +$LANG["phrase_login_password"] = "Логін Пароль"; +$LANG["phrase_login_username"] = "Увійти Ім'я користувача"; +$LANG["phrase_logo_link_url"] = "Посилання на логотип URL"; +$LANG["phrase_logout_url"] = "Вийти URL"; +$LANG["phrase_main_nav"] = "Головне Nav"; +$LANG["phrase_main_settings"] = "Головні налаштування"; +$LANG["phrase_manage_client"] = "Управління клієнтів"; +$LANG["phrase_manage_client_omit_list"] = "Управління клієнта Пропустити Список"; +$LANG["phrase_max_file_size"] = "Максимальний розмір файлу"; +$LANG["phrase_max_length"] = "Максимальна довжина"; +$LANG["phrase_max_length_words_chars"] = "- Максимальна довжина (слів / символів)"; +$LANG["phrase_may_add_submissions"] = "Може додати Подання"; +$LANG["phrase_may_copy_submissions"] = "Gönderimleri kopyalayabilir"; +$LANG["phrase_may_delete_submissions"] = "Матеріали можуть бути вилучені"; +$LANG["phrase_medium_150px"] = "Середнє (150px)"; +$LANG["phrase_medium_200px"] = "Середнє (200px)"; +$LANG["phrase_menu_name"] = "Назва меню"; +$LANG["phrase_menu_type"] = "Тип меню"; +$LANG["phrase_min_password_length"] = "Мінімальна довжина пароля"; +$LANG["phrase_module_description"] = "Опис модуля"; +$LANG["phrase_module_info"] = "Module Information"; +$LANG["phrase_module_nav"] = "Модуль Nav"; +$LANG["phrase_month_to_date"] = "Місяць на сьогоднішній день"; +$LANG["phrase_multi_select"] = "Множинний вибір"; +$LANG["phrase_multi_select_dropdown"] = "Multi-Select що випадають"; +$LANG["phrase_multiple_fields_found"] = "Кілька полів,!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Ім'я / Прізвище"; +$LANG["phrase_new_blank_email"] = "Нові порожній лист"; +$LANG["phrase_new_blank_option_list"] = "Новий порожній список Варіант"; +$LANG["phrase_new_blank_view"] = "Відкрити нову порожню"; +$LANG["phrase_new_ft_installation"] = "Нова форма інструментів установці"; +$LANG["phrase_new_option_list"] = "Новий список Варіант"; +$LANG["phrase_new_password"] = "Новий пароль"; +$LANG["phrase_new_password_reenter"] = "Новий пароль (повторно введіть)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "Новий погляд - все поля"; +$LANG["phrase_next_client"] = "наступного клієнта »"; +$LANG["phrase_next_field"] = "наступна »поле"; +$LANG["phrase_next_form"] = "Наступна форма »"; +$LANG["phrase_next_view"] = "Слід »"; +$LANG["phrase_no_clients"] = "Чи не клієнти"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Ні компенсована"; +$LANG["phrase_no_option_lists_available"] = "Ні опцій списки доступні."; +$LANG["phrase_no_views"] = "Ні переглядів"; +$LANG["phrase_no_views_with_filters_p"] = "(Немає Переглядів з фільтрами визначений)"; +$LANG["phrase_none_not_recommended"] = "Ні (не рекомендується)"; +$LANG["phrase_not_assigned_to_option_list"] = "Це поле не призначені списку опцій."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "Чи не так само"; +$LANG["phrase_not_found"] = "Не знайдено!"; +$LANG["phrase_not_like"] = "Not Like"; +$LANG["phrase_not_visible_to_client"] = "(не видимі з клієнтом)"; +$LANG["phrase_num_clients_per_page"] = "Кількість клієнтів за сторінку"; +$LANG["phrase_num_emails_per_page"] = "Кількість листів на сторінку"; +$LANG["phrase_num_fields"] = "Кількість полів"; +$LANG["phrase_num_forms_per_page"] = "Кількість форм на сторінці"; +$LANG["phrase_num_menus_per_page"] = "Кількість меню на сторінці"; +$LANG["phrase_num_modules_per_page"] = "Кількість модулів на сторінку"; +$LANG["phrase_num_option_lists_per_page"] = "Num Варіант Списки на сторінку"; +$LANG["phrase_num_options"] = "Num параметри"; +$LANG["phrase_num_rows"] = "Num Рядки"; +$LANG["phrase_numbers_only"] = "Тільки цифри"; +$LANG["phrase_often_localhost"] = "(часто "Localhost")"; +$LANG["phrase_on_form_submission"] = "За формою подання"; +$LANG["phrase_one_char_number"] = "Принаймні один символ цифрою (0-9)"; +$LANG["phrase_one_char_upper"] = "Принаймні один символ верхнього регістру"; +$LANG["phrase_one_special_char"] = "Принаймні, одна з {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(тільки конкретні клієнти мають доступ)"; +$LANG["phrase_open_form_in_dialog"] = "Відкрити форму в діалоговому вікні"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Відкрити форму в новій вкладці / вікні"; +$LANG["phrase_option_list"] = "Варіант Список"; +$LANG["phrase_option_list_name"] = "Ім'я списку опцій"; +$LANG["phrase_option_list_or_contents"] = "Список опцій / Зміст"; +$LANG["phrase_option_lists"] = "Варіант Списки"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Назви сторінок"; +$LANG["phrase_pass_on"] = "Проходи"; +$LANG["phrase_password_min"] = "Він повинен бути принаймні {\$length} символів."; +$LANG["phrase_password_one_number"] = "Вона повинна містити принаймні один номер (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Вона повинна мати хоча б одну велику літеру."; +$LANG["phrase_password_requirements_c"] = "Пароль вимоги:"; +$LANG["phrase_password_reset"] = "Скидання пароля"; +$LANG["phrase_password_special_char"] = "Вона повинна містити принаймні один з наступних символів: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Дозволи / Інші настройки"; +$LANG["phrase_permitted_file_types"] = "Дозволені типи файлів"; +$LANG["phrase_phone_number"] = "Номер телефону"; +$LANG["phrase_phone_number_format"] = "Формат номера телефону"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini максимально допустимий розмір завантажених файлів:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP Version"; +$LANG["phrase_please_confirm"] = "Будь ласка, підтвердіть"; +$LANG["phrase_please_enter_license_key"] = "Будь ласка, введіть Ваш ліцензійний ключ"; +$LANG["phrase_please_select"] = "Виберіть"; +$LANG["phrase_please_select_form"] = "Будь ласка, виберіть форму"; +$LANG["phrase_prev_client"] = "«Попереднє клієнта"; +$LANG["phrase_prev_form"] = "«Попередня форма"; +$LANG["phrase_prevent_password_reuse"] = "Запобіганню повторного використання паролів Остання #"; +$LANG["phrase_previous_field"] = "«Попереднє поле"; +$LANG["phrase_previous_page"] = "Попередня сторінка"; +$LANG["phrase_previous_view"] = "«Попереднє Переглянути"; +$LANG["phrase_program_name"] = "Назва програми"; +$LANG["phrase_public_form_omit_list"] = "Опустити громадська форма Список"; +$LANG["phrase_public_view_omit_list"] = "Бачення громадськості Опустити Список"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Існував проблеми за допомогою наступного запиту:"; +$LANG["phrase_radio_buttons"] = "Перемикачі"; +$LANG["phrase_random_form_submission"] = "Випадкові форма подання"; +$LANG["phrase_re_enter_password"] = "Повторне введення пароля"; +$LANG["phrase_recipient_type"] = "Тип одержувача"; +$LANG["phrase_redirect_url"] = "Перенаправлення URL"; +$LANG["phrase_refresh_list"] = "Оновити список"; +$LANG["phrase_refresh_module_list"] = "Оновити список модулів"; +$LANG["phrase_refresh_page"] = "Оновити сторінку"; +$LANG["phrase_refresh_theme_list"] = "Оновити список тем"; +$LANG["phrase_register_new_email"] = "Зареєструвати новий Email"; +$LANG["phrase_remaining_characters"] = "Решта символів"; +$LANG["phrase_remaining_words"] = "Решта слів"; +$LANG["phrase_remove_tabs"] = "Видалити вкладку"; +$LANG["phrase_required_password_chars"] = "Обов'язкові символи пароля"; +$LANG["phrase_resend_test_submission"] = "Повторно випробування Представлення"; +$LANG["phrase_return_form_list"] = "Повернутися до форми Список"; +$LANG["phrase_row_selected"] = "{\$num_rows} ряду вибраних"; +$LANG["phrase_rows_selected"] = "{\$num_rows} вибраних стрічок"; +$LANG["phrase_sample_data"] = "Приклад даних"; +$LANG["phrase_save_changes"] = "Зберегти зміни"; +$LANG["phrase_search_keyword"] = "Пошук ключових слів"; +$LANG["phrase_security_settings"] = "Установки безпеки"; +$LANG["phrase_select_all"] = "Обрати всіх"; +$LANG["phrase_select_all_X_results"] = "Виділити все {\$numresults} Результати"; +$LANG["phrase_select_all_on_page"] = "Обрати всіх на сторінці"; +$LANG["phrase_select_date"] = "Вибрати дату"; +$LANG["phrase_select_field"] = "Виберіть поле"; +$LANG["phrase_select_swatch"] = "Виберіть зразок"; +$LANG["phrase_selected_clients"] = "Вибрані клієнти"; +$LANG["phrase_selected_views"] = "Обраний Перегляди"; +$LANG["phrase_send_email"] = "Відправити Email"; +$LANG["phrase_send_test_email"] = "Відправити тестове повідомлення"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Задане значення"; +$LANG["phrase_setup_options"] = "Параметри встановлення"; +$LANG["phrase_show_all"] = "Показати все"; +$LANG["phrase_show_form"] = "Показати Форми"; +$LANG["phrase_size_large"] = "Великі (ТЕКСТ)"; +$LANG["phrase_size_medium"] = "Середній (<= 256 символів)"; +$LANG["phrase_size_small"] = "Малі (<= 20 символів)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 символів)"; +$LANG["phrase_size_very_large"] = "Дуже великий (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Перейти Польовий"; +$LANG["phrase_skip_step"] = "Пропустіть крок"; +$LANG["phrase_small_100px"] = "Маленький (100 пікселів)"; +$LANG["phrase_small_80px"] = "Маленький (80px)"; +$LANG["phrase_smart_fill"] = "Smart Fill"; +$LANG["phrase_smart_fill_fields_from_c"] = "Smart Заповніть поля:"; +$LANG["phrase_smart_fill_user_documentation"] = "Smart Fill Документація користувача »"; +$LANG["phrase_sort_as"] = "Сортувати Як"; +$LANG["phrase_special_fields"] = "Спеціальні поля"; +$LANG["phrase_standard_fields"] = "Стандартні поля"; +$LANG["phrase_standard_filters"] = "Стандартні фільтри »"; +$LANG["phrase_step_1"] = "Крок 1"; +$LANG["phrase_step_2"] = "Крок 2"; +$LANG["phrase_step_3"] = "Крок 3"; +$LANG["phrase_step_4"] = "Крок 4"; +$LANG["phrase_step_5"] = "Крок 5"; +$LANG["phrase_step_6"] = "Крок 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Газ-теги у формі подання"; +$LANG["phrase_subject_line"] = "Заголовок"; +$LANG["phrase_submission_date"] = "Дата подання"; +$LANG["phrase_submission_id"] = "Представлення ID"; +$LANG["phrase_submission_made"] = "Представлення зроблено: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Представлення типу"; +$LANG["phrase_submissions_per_page"] = "Матеріали на сторінці"; +$LANG["phrase_system_check"] = "System Check"; +$LANG["phrase_system_fields_no_validation"] = "Ви не можете додати перевірку системи полів."; +$LANG["phrase_system_time_offset"] = "System Time Offset"; +$LANG["phrase_tab_label"] = "Вкладка Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Випробування папок"; +$LANG["phrase_test_submission"] = "Випробування Представлення"; +$LANG["phrase_test_submission_3"] = "3. Випробування Представлення"; +$LANG["phrase_test_submission_received"] = "Випробування повідомлення, отриманого"; +$LANG["phrase_text_and_html"] = "Текст & HTML"; +$LANG["phrase_text_email"] = "Текст електронного листа"; +$LANG["phrase_text_template"] = "Текст шаблону"; +$LANG["phrase_the_previous_month"] = "Попередній місяць"; +$LANG["phrase_theme_description"] = "Тема Опис"; +$LANG["phrase_theme_info"] = "Тема інформація"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Всього результатів:"; +$LANG["phrase_type_c"] = "Тип помилки:"; +$LANG["phrase_unselect_all"] = "Зняти виділення"; +$LANG["phrase_update_accounts"] = "Оновлення рахунків"; +$LANG["phrase_update_email_template"] = "Оновлення шаблон електронного повідомлення"; +$LANG["phrase_update_field"] = "Польові оновлення"; +$LANG["phrase_update_order"] = "Оновлення замовлення"; +$LANG["phrase_update_view"] = "Update Список"; +$LANG["phrase_upload_file"] = "Завантажити файл"; +$LANG["phrase_upload_files"] = "Завантажити файли"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Завантажити шлях папки"; +$LANG["phrase_upload_folder_url"] = "Завантажити папки URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Використовуйте значення за замовчуванням?"; +$LANG["phrase_used_by_num_form_fields"] = "Використовується # поля форми"; +$LANG["phrase_uses_swatches"] = "Використання Зразки"; +$LANG["phrase_valid_email"] = "Дійсно Email"; +$LANG["phrase_validation_error"] = "Помилка перевірки"; +$LANG["phrase_validation_rule"] = "Правила перевірки"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Переглянути групи"; +$LANG["phrase_view_id"] = "Перегляд ID"; +$LANG["phrase_view_name"] = "Відкрити Назва"; +$LANG["phrase_view_placeholders"] = "Переглянути заповнювачів"; +$LANG["phrase_view_submissions"] = "Перегляд надходжень"; +$LANG["phrase_view_uploaded_files"] = "Перегляд завантажених файлів"; +$LANG["phrase_viewing_range"] = "[Перегляд {\$startnum} на {\$endnum}]"; +$LANG["phrase_when_sent"] = "Коли надіслано"; +$LANG["phrase_when_submission_is_deleted"] = "Під час видалення подання"; +$LANG["phrase_when_submission_is_edited"] = "Під час редагування подання"; +$LANG["phrase_who_can_access"] = "Хто має доступ?"; +$LANG["phrase_word_limit_p"] = "максимальна кількість слів."; +$LANG["phrase_year_to_date"] = "З початку року"; +$LANG["phrase_yes_for_all_views"] = "Так, для всіх міркувань"; +$LANG["phrase_yes_for_specific_views"] = "Так, для конкретних думок"; +$LANG["phrase_your_account"] = "Мій обліковий запис"; +$LANG["phrase_your_email"] = "Ваш Email"; +$LANG["phrase_your_email_address"] = "Вашу адресу електронної пошти"; +$LANG["processing_form_disabled"] = "На жаль, ця форма була відключена."; +$LANG["processing_form_incomplete"] = "На жаль, ця форма як видається, не в повній мірі створена в рамках Інсрументи. Найбільш імовірною причиною цієї проблеми є те, що ви видалили "form_tools_initialize_form" приховані поля форми, але не виконаєте всі кроки "Додати форму" процесу.

    Будь ласка, увійдіть і переглянути форми конфігурації."; +$LANG["processing_init_complete"] = "Спасибо! Тестова подання було поставлено успішним. Будь ласка, поверніться до форми інструментів Панель керування та натисніть кнопку "Оновити" в нижній частині Add Form Крок 3 сторінці, щоб завершити установку вашої формі."; +$LANG["processing_invalid_form_id"] = "На жаль, це не здається, дійсне посвідчення особи форми."; +$LANG["processing_no_form_id"] = "process.php вимагає форма ID для обробки. Переконайтеся, що ваша форма містить приховане поле з іменем "form_tools_form_id" Це проходячи за формою ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Інсрументи не в змозі визначити, куди перенаправити коли їм не вдається увійти з спотвореним чином. Прошу передати в прихованому поле з ім'ям form_tools_form_url що містять URL форми."; +$LANG["processing_no_post_vars"] = "process.php не отримує ніяких даних. Примітка: Цей сценарій не може бути завантажений безпосередньо в браузері.
    Переконайтеся, що ваші форми відправки поштою."; +$LANG["processing_no_redirect_url"] = "Це подання було оброблено правильно, але ви не вказали URL переадресації для цієї форми! Изменить свою анкету у формі інструментів для користувача інтерфейсу і додати URL переадресації."; +$LANG["special_language"] = "Ukrainian"; +$LANG["special_language_locale"] = "Ukrainian"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Всі нові рахунки клієнта буде створений з настройками та дозволів, що визначаються нижче. Щоб перевизначити налаштування для конкретного клієнта, змінити обліковий запис клієнта, і відвідати їх на вкладку Настройка."; +$LANG["text_add_form_choose_integration_method"] = "Вибір методу, який ви хочете використовувати для інтеграції форму з формою Tools."; +$LANG["text_add_form_code_submission_benefits"] = "Цей метод використовує форму Tools API , включених в основній формі сценарію Tools. API надає ряд корисних функцій, щоб зробити роботу з інтеграції форму з формою інструменти якомога простішим. Є ніяких обмежень, щоб, як ваша форма може бути представлена ​​при використанні API. Ви можете представити вміст в один присід, або сторінка за сторінкою, ви можете додати свої власні перевірки на стороні сервера, CAPTCHA зображень, ви можете представити інформацію в даний час, але тільки сказати йому, щоб відобразити подання у формі інструментів для користувача інтерфейсу пізніше (див. Остаточні Матеріали розділу в довідковій документації по API)."; +$LANG["text_add_form_code_submission_drawbacks"] = "Для того, щоб відправити дані форми за допомогою PHP, ваша форма повинна бути розташована на тому ж сайті, як ця установка Форма Tools. По-друге, для не-технічних і початківців Форма інструменти користувачів, цей метод може бути трохи лякає на перший погляд. Але є багато документації, щоб допомогти вам, в тому числі два простих підручники для інтеграції одно-і багатосторінкові форми (це пов'язано з на більш пізньому етапі)."; +$LANG["text_add_form_direct_submission_benefits"] = "Це найпростіший спосіб для відправки форми Інсрументи. Вона не вимагає знання PHP і вимагає лише дуже незначні зміни до форми. Це здорово для невеликих форм, де ви просто хочете представити інформацію в базі даних, то перенаправляють користувача на "дякувати" сторінки."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Це подання методу дуже проста у використанні, але не дає більше контролю для більш складних формах. Multi-сторінку форми або форми, які вимагають серверних перевірку краще підходять для другого методу: Відправлення через форму інструменти API."; +$LANG["text_add_form_field_types1"] = "Майже готово! Ця сторінка намагається знайти всі поля форми і визначити їх типів полів. Натисніть Smart Fill кнопку праворуч, щоб почати. Ви будете тільки дозволено продовжити, коли всі дії були вирішені - питання, які потребують вашої уваги з'являються в "дії, необхідні " колонки."; +$LANG["text_add_form_field_types2"] = "Якщо форма не в HTML, натисніть кнопку Пропустити крок для продовження. Все це можна налаштувати пізніше."; +$LANG["text_add_form_field_types3"] = "Це перезавантаження вмісту вашого виду (ів). Примітка: це призведе до перезапису будь-які зміни, зроблені на цій сторінці."; +$LANG["text_add_form_field_types4"] = "У випадку, якщо ви зіштовхнетеся з проблемами, натисніть сюди, щоб пропустити цей крок. Всі недозволені поля налаштовані на використання значень. Ви можете налаштувати ці поля пізніше."; +$LANG["text_add_form_field_types_manual_upload"] = "Якщо ви не змогли Smart Fill поля ваші, ви можете спробувати альтернативне рішення: завантажити копії форм в поля нижче."; +$LANG["text_add_form_field_types_manual_upload2"] = "Зверніть увагу: не завантажувати сировину PHP сторінок (або інший код на стороні сервера) - просто завантажити HTML-версії. Щоб отримати це, переглянути і зберегти сторінку з веб-браузера."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Існували кілька полів, які не можуть бути знайдені у вигляді сторінки, вказаний Вами. В основному, це ймовірно, викликана однією з наступних дій:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Ви ввели одну або декілька форм адреси ваших багатосторінкові форми неправильно."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Один або кілька сторінок вашої формі, захищені паролем і скрипт не може отримати доступ до сторінки."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Ви неправильно вказали форму URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Натисніть тут , щоб повернутися до сторінки Інформація про форму, щоб перевірити настройки."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Ви змінили свій вигляд (и) після внесення подання тесту"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Натисніть тут , щоб покласти через ще одне випробування подання."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Ваша форма захищена паролем і скрипт не може отримати доступ до сторінки."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "В іншій вкладці / вікні цього браузера, увійдіть в форму та натисніть кнопку Оновити сторінку нижче, щоб спробувати знову знайти полів."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Якщо жоден з вище роботи рішення, Ви також можете спробувати вручну завантажувати форми для обробки ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Існували кілька полів, які не можуть бути знайдені у вигляді сторінок, зазначений Вами. В основному, це ймовірно, викликана однією з них:"; +$LANG["text_add_form_help_link"] = "Якщо у вас виникли будь-які проблеми під час цих кроків, спробуйте прочитати з користувацької документації ."; +$LANG["text_add_form_step_1_text_1"] = "Наступні сторінки проведуть вас через кроки, щоб налаштувати інструменти форма для зберігання ваших уявленнях формі. Перш ніж продовжувати, переконайтеся, що:"; +$LANG["text_add_form_step_1_text_2"] = "форму вже створена і її доступною через URL (Localhost відмінно)"; +$LANG["text_add_form_step_1_text_3"] = "можуть змінити форму"; +$LANG["text_add_form_step_2_para_2"] = "Відкрийте форму в редакторі і змінити форму теги до наступного, в тому числі два прихованих полях."; +$LANG["text_add_form_step_2_para_3"] = "Потім відкрийте форму в веб-браузері. Заповнити в кожній області і представити його. Після відправлення заявки, ви повинні побачити повідомлення повідомлення. Після відображення цього повідомлення, повернутися на цю сторінку та натисніть кнопку "Оновити" нижче. Коли цей процес завершиться, ви будете продовжувати бачити нижче кнопку, яка приведе вас до наступного кроку."; +$LANG["text_add_form_step_2_para_6"] = "У форму подання, відносяться наступні цінності. Вони можуть бути встановлені безпосередньо через PHP або проходячи через форму на себе. Нижче наведено приклади кожного з них. (\$ VarName) є хеш (або асоціативний масив) усіх форм представлення інформації - це, як правило postvar \$ () або (\$) sessionvar змінна, але воно може бути побудоване Custom."; +$LANG["text_add_form_step_2_text_2"] = "Введіть адресу вашого "велике спасибі " сторінка. Це де ви хочете, щоб люди бути спрямовані на після форма була відправлена."; +$LANG["text_add_form_step_3_para_1"] = "На цій сторінці перераховані всі поля у формі подання. Прохання розглянути кожне поле і видалити все, що вам не потрібно зберігати для кожного подання. Якщо ви вилучили дійсні області випадково, або хочете змінити інформацію, що зберігається ваша форма, повернутися до попередньої сторінки, щоб відправити нове подання випробувань."; +$LANG["text_add_form_step_3_para_2"] = "Примітка: якщо ви додаєте кілька значень за допомогою прапорців або множинного вибору вікна, переконайтеся, що ім'я поля закінчується символів [] (див. Документація користувача для отримання додаткової інформації)."; +$LANG["text_add_form_step_3_text_1"] = "Ось де починається найцікавіше! На даний момент, форма Інструменти чекає випробування подання з форми. Вона буде використовувати цю форму подання знати, яка інформація повинна зберігатися в базі даних."; +$LANG["text_add_form_step_3_text_2"] = ", Вказавши ваше формі Інсрументи"; +$LANG["text_add_form_step_3_text_3"] = "За допомогою форми інструменти API"; +$LANG["text_add_form_step_3_text_4"] = "Щоб допомогти інтегрувати вашу форму, ми пропонуємо вам прочитати одну з наступних посібників:"; +$LANG["text_add_form_step_3_text_5"] = "Вони пояснюють, як створити свою анкету в підготовці до випробування подання, але й інші відомості, які можуть бути корисні. Лінія PHP вам знадобиться:"; +$LANG["text_add_form_step_3_text_6"] = "Це гарантує, що дані насправді спрямовані Інсрументи. Коли ви створили через ваші уявлення тесту, натисніть на кнопку нижче."; +$LANG["text_add_form_step_3_text_7"] = "На сторінці до вашого остаточного "дякую" сторінки, не забудьте додати наступний параметр в змінну \$ параметри:"; +$LANG["text_add_form_step_5_para_1"] = "База даних була створена для цієї форми та форми активовано для використання. Якщо ви зробили подання, вказавши ваше формі process.php, Ви можете повернутися у форму і видалити приховані наступні області:"; +$LANG["text_add_form_step_5_para_2"] = "Потім перейдіть на "дякую" на порожній сторінці сесій. Після цього, всі нові форми представлення будуть оброблятися та зберігатися за формою інструменти. Спробуйте зробити подання або два, щоб перевірити інформацію, всі завантаження правильно."; +$LANG["text_add_form_step_5_para_3"] = "Якщо ви хочете точно налаштувати вашу форму для опцій, таких як автоматичне електронній пошті, додавання додаткових полів форми поле, або настроювання типу полів форми, Ви можете змінити форму в будь-який момент."; +$LANG["text_add_form_step_5_para_4"] = "Оскільки ваша форма містить поле завантаження файлу, вам потрібно буде налаштувати кожне поле для зазначення папки завантаження файлів, які файли і дозволяється. Це можна знайти на вкладці Дисплей форми редагування сторінки."; +$LANG["text_add_form_step_5_para_5"] = "Якщо подання було направлено через API, змінити ft_api_init_form_page лінію на першій сторінці вашої форми:"; +$LANG["text_add_submission_button"] = "Додати кнопку Подання відображається лише для переглядів, які "Може додати уявлень " опція встановлена ​​в "так "."; +$LANG["text_admin_email_placeholder_info"] = "Це адреса електронної пошти адміністратора Інсрументи, визначений в налаштуваннях вашого профілю. Це виводить тільки адресу електронної пошти, так що якщо ви хочете використовувати в якості посилання HTML, вам необхідно упакувати його в тезі <a>, ось так:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ AdminEmail) </ A>"; +$LANG["text_also_default_login_page_theme"] = "(А також сторінки за замовчуванням Логін темі)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "По-перше, будь ласка, виберіть форму типу."; +$LANG["text_client_form_page"] = "На цій сторінці перераховані всі форми і переглядів що належать цьому клієнтові. Підказка: для того, щоб вони бачили, представлені форми, вони повинні бути призначені щонайменше одна думка."; +$LANG["text_client_map_filters_desc1"] = "Фільтри клієнта карта дозволяє обмежити уявлень, які з'являться в цьому Відкрити рахунок відображення значень в полі форми зі значеннями в обліковий запис клієнта."; +$LANG["text_client_no_forms"] = "У вас немає форми доступні для перегляду."; +$LANG["text_client_welcome"] = "Ласкаво просимо! Ця програма зберігає всю інформацію, представлену відвідувачі вашого сайту. Для перегляду матеріалів для конкретної форми натисніть на посилання "Переглянути або см. ліве меню навігації для інших варіантів."; +$LANG["text_config_file_created"] = "Ваш config.php файл був створений."; +$LANG["text_config_file_not_created"] = "Ми не змогли створити свій config.php. Вам потрібно буде створити файл вручну."; +$LANG["text_config_file_not_created_instructions"] = "Скопіюйте та вставте вміст з розділу нижче в файл config.php і завантажте його через FTP до форми Інструменти / глобальні папки (папки, яка містить також кілька інших файлів і каталогів, один файл з назвою library.php)."; +$LANG["text_confirm_delete_form"] = "Так, я хочу, щоб видалити цю форму"; +$LANG["text_create_admin_account"] = "Зараз ми збираємося створити обліковий запис адміністратора. Це використовується для управління всіма аспектами форма інструменти, такі як додавання форм і створення облікових записів клієнтів."; +$LANG["text_create_new_client_account"] = "Використовуйте форму нижче, щоб створити новий акаунт клієнта. Усі поля є обов'язковими."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "см. PHP {\$datefunctionlink} функція для форматування"; +$LANG["text_default_file_settings_page"] = "Ця сторінка визначає налаштування завантаження файлів для установки Інсрументи. Ці правила поширюються на всі файли, завантажені через Інсрументи, якщо явно не перевизначається для окремих полів форми. Примітка: якщо ви зміните теку після завантаження файлів були завантажені, вони будуть автоматично перенесені в нову папку."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Перш ніж продовжувати, вам потрібно відновити / Теми / Default / папці кешу для забезпечення повного читання і запис. Як тільки це буде зроблено, це повідомлення зникне, і ви можете встановити скрипт."; +$LANG["text_default_values_in_view"] = "Цей розділ не є обов'язковим. Всі матеріали, створені з цієї точки зору буде містити значення за замовчуванням вказано тут."; +$LANG["text_delete_all_forms"] = "Я хочу, щоб видалити всі файли, які були завантажені за допомогою цієї форми"; +$LANG["text_delete_form_warning"] = "Ви впевнені, що хочете видалити цю форму? Ця дія не може бути скасовано. Всі дані будуть безповоротно втрачено!"; +$LANG["text_edit_admin_menu_page"] = "Ви можете редагувати меню нижче. Щоб завжди мати доступ до всієї функціональності, що є в Інсрументи, необхідні наступні сторінки: форми, клієнти, ви допустили помилку, модулі, Установки і Вихід."; +$LANG["text_edit_client_menu_page"] = "Цей розділ дозволяє налаштувати ліву колонку навігації для кожного користувача. Ви можете створити стільки мене клієнт, як ви і хотіли привласнити будь-який рахунок в одному з них. За замовчуванням є два меню: одне для вас, адміністратор і один для всіх облікових записів клієнтів. Обліковий запис адміністратора може бути змінена, але не видаляються."; +$LANG["text_edit_tab_summary"] = "Якщо ви хочете цю групу полів Переглянути як закладки, просто введіть ім'я вкладки нижче. Після того як ви закінчите, виберіть відповідну вкладку для кожного поля групи в вкладці Поля ."; +$LANG["text_edit_view_list_page"] = "Ця вкладка визначає, які поля будуть представлені у вигляді стовпців на сторінці лістингу уявлення, і кілька додаткових налаштувань для цих полів. Увага: Ми рекомендуємо Вам додати не більше 4 або 5 найбільш важливих полів у поданні."; +$LANG["text_email_settings_intro"] = "Ця сторінка дозволяє визначити, які з ваших листів полях форми зберігання і відповідні їм імена. Як тільки ви визначите їх тут, ви можете використовувати їх як шаблони електронної пошти одержувачів. Цей розділ не є обов'язковим."; +$LANG["text_email_tab_summary"] = "Цей розділ дозволяє вам побудувати будь-яку кількість листів буде відправлено, коли представляється форму, а іншими методами."; +$LANG["text_email_template_tab"] = "Цей розділ дозволяє визначити, який зміст з'являється в електронній пошті. Якщо ви хочете відправити Ваше повідомлення як тільки текст або електронною поштою, тільки ввести значення для цього розділу. Якщо ви вводите значення для обох, буде відправлено в обох форматах."; +$LANG["text_email_template_text_1"] = "Там було зроблено подання через вашу форму, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Там було зроблено подання через вашу форму, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Дякуємо за ваше уявлення!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Повідомлення про помилку, щоб показати, якщо поле не перевірка"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Зовнішні форми є формами, які вже існують на вашому сайті, або де-небудь в Інтернеті. Виберіть цю опцію, якщо у вас є власні форми, яку ви хотіли б інтегруватися з формою Tools."; +$LANG["text_fields_tab_summary"] = "На цій сторінці перераховані всі ваші поля форми. Щоб контролювати те, як вони з'являються при перегляді матеріалів, побачити Переглядів вкладці . Видалення поля на цій сторінці, видалити його з усіх представлених, так що будьте обережні!"; +$LANG["text_file_extension_info"] = "Введіть розширень файлів, розділених комами (наприклад, JPG, GIF, PNG) або залишити порожнім, щоб дозволити будь-якого типу файлу."; +$LANG["text_file_field_placeholders_info"] = "Поля файлу є дві спеціальні наповнювачі: Посилання файлу і ім'я файлу. Посилання файлу є повний шлях до файлу, так що ви можете безпосередньо до нього у ваших листів; назва файлу просто на ім'я файлу."; +$LANG["text_filters_page"] = "Тільки ті подання, які задовольняють заданим вами критеріям нижче з'явиться в цьому поданні."; +$LANG["text_filters_tips"] = "Поради про те, як використовувати подання фільтри, см. Документація користувача."; +$LANG["text_forgot_password"] = "Немає проблем. Просто введіть ім'я користувача нижче і ваш Логін інформація буде відправлена на вашу адресу електронної пошти на файлі. Якщо Ви забули своє ім'я користувача, будь ласка, напишіть адміністратору сайту за адресою {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Ця форма містить один або декілька файлів завантажити областях:"; +$LANG["text_form_placeholder_info"] = "Наступні заповнювачі можуть бути використані в будь електронної пошти шаблон і мова заповнювач поля, незалежно від будь Переглянути шаблон електронної пошти призначено. ПИТАННЯ заповнювачі конкретне питання форми; ВІДПОВІДЬ заповнювачі відповідей на кожне питання."; +$LANG["text_form_submission_date_placeholder"] = "Дата подання була зроблена."; +$LANG["text_form_tools_form_url"] = "Повна адреса формі. Це тільки має значення для зовнішніх форм."; +$LANG["text_form_tools_login_url"] = "Логін URL для Інсрументи."; +$LANG["text_form_view_permission_info_admin"] = "Зверніть увагу: ця форма в даний час має тип доступу адміністратора, так що жоден з рахунків клієнтів зможуть побачити це уявлення."; +$LANG["text_form_view_permission_info_private"] = "Зверніть увагу: ця форма в даний час має закритий тип доступу, з тим державним і приватним варіантів тут буде обмежена, що підмножина клієнтів."; +$LANG["text_ft_installed"] = "Вітаємо, форма інструментів була успішно встановлено!"; +$LANG["text_global_placeholder_info"] = "Ці заповнювачі можуть бути використані в будь-який шаблон і будь-якої форми."; +$LANG["text_group_name_explanation"] = "Для полів, додали через Add Form процес, це значення вже заповнені на дисплеї тексту незалежно від статі використовує значення. Ви можете змінити його, щоб краще охарактеризувати зміст."; +$LANG["text_install_create_config_file"] = "Інсрументи магазинах вашого сервера та налаштування бази даних у файл config.php, знайшов у вашій / Global / папки. Натисніть кнопку "Створити файл" кнопку, щоб автоматично генерувати файл на вашому сервері."; +$LANG["text_install_create_database_tables"] = "Зараз ми збираємося створити форму таблиць і розробки баз даних. Цей крок вимагає самої бази даних, вже були створені. Якщо ви не впевнені, як це зробити, будь ласка, зверніться до свого хостинг-провайдера."; +$LANG["text_install_db_tables_error_tip_1"] = ""Невідомий MySQL Server Host" зазвичай означає, що ви вказали ім'я хоста є невірним. Може бути, спробуйте встановити її в "Localhost" - це звичайний спосіб посилатися на "локальний" базу даних на веб-сервері."; +$LANG["text_install_db_tables_error_tip_2"] = ""Не можу з'єднатися з локальним сервером MySQL через сокет" означає базу даних хоста області знову неправильно."; +$LANG["text_install_db_tables_error_tip_3"] = ""Доступ заборонено для користувача:" означає, що існує проблема з Вашим іменем користувача та паролем."; +$LANG["text_install_db_tables_error_tip_4"] = ""Доступ заборонено для користувача: ... до бази даних ..." означає, що хоча ім'я користувача і пароль, зазначені правильно, він не зміг підключитися до цієї конкретної бази даних з цього рахунку. Це може означати, що або базі даних ваше ім'я неправильно, або що ця обліковий запис користувача не пов'язано з цією базою даних."; +$LANG["text_install_email_content_text"] = "На нашому веб-сайті є велика кількість ресурсів, які допоможуть вам розпочати роботу, включаючи нашу онлайн-документацію (https://docs.formtools.org) та навчальні посібники (https://docs.formtools.org/tutorials). Якщо ви виявите, що ви застрягли або виникли запитання, задайте питання щодо github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "На жаль, форма інструменти не будуть мати можливість запускати на вашому сервері. Будь ласка, натисніть тут для мінімальних вимог."; +$LANG["text_install_system_check"] = "Ця сторінка проходить декілька тестів на вашій системі, щоб забезпечити цю можливість запускати Інсрументи."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Внутрішні форми існують тільки у формі Інструменти - не в іншому місці на вашому сайті. Тільки форма рахунки Інструменти користувач матиме доступ до форми. Виберіть цю опцію, якщо у вас немає існуючій формі."; +$LANG["text_internal_form_intro"] = "Використовуйте форму нижче, щоб створити нову внутрішню форму. Всі налаштування, в тому числі кількість і зміст полів форми може бути змінений і налаштований пізніше."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "З метою Логін і використовувати форму інструментів, ви повинні мати включений JavaScript у Вашому браузері. Прохання дати йому зараз, і натисніть кнопку Оновити у браузері."; +$LANG["text_last_modified_date_explanation_c"] = "Востаннє була змінена цієї тези. Для нових уявлень, це те ж саме, як:"; +$LANG["text_limit_email_content_desc"] = "Ця опція працює тільки для HTML та текстовий контент генерується за Smarty Loops."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(тільки для списків Переглядів з одним або декількома фільтрами визначено)"; +$LANG["text_log_in_to_ft"] = "Увійти в Інсрументи"; +$LANG["text_login"] = "Будь ласка, увійдіть для отримання доступу в \$ () назва програми панель адміністрування. Якщо ви забули свій пароль, натисніть тут."; +$LANG["text_login_info"] = "У відповідності з проханням, ось ваша Логін інформації."; +$LANG["text_name_of_form"] = "Назва форми."; +$LANG["text_no_clients"] = "Є клієнти в даний час немає в базі даних. Щоб додати новий обліковий запис клієнта, натисніть кнопку "Додати клієнта кнопку нижче."; +$LANG["text_no_clients_found"] = "Не знайдено жодного клієнта. Спробуйте розширення критеріїв пошуку."; +$LANG["text_no_fields_in_view"] = "Це уявлення не є будь-які поля в ньому. Натисніть на посилання нижче."; +$LANG["text_no_forms"] = "Є в даний час немає форми в базі даних. Щоб додати нову форму, натисніть кнопку "Додати кнопки у формі нижче."; +$LANG["text_no_forms_found"] = "Ні форми були знайдені."; +$LANG["text_no_forms_found_search"] = "Ні форми були знайдені. Спробуйте розширити критерії пошуку."; +$LANG["text_no_modules_found"] = "Не знайдено жодного модуля. Спробуйте розширення критеріїв пошуку."; +$LANG["text_no_recipients_added"] = "Ні одержувачів були додані."; +$LANG["text_no_search_results"] = "Є жодних результатів з цим критеріям пошуку / View."; +$LANG["text_no_submissions_found"] = "На жаль, було виявлено будь-яких уявлень."; +$LANG["text_no_themes"] = "У вас немає жодної теми визначена. Натисніть на кнопку нижче, щоб освіжити свою тему списку, або перевірити користувача Форма Інструменти документації для отримання інформації про додавання теми."; +$LANG["text_non_deletable_fields"] = "Це поле використовується за рахунок базового сценарію і не можуть бути змінені або видалені без нанесення несумісності. Якщо ви хочете внести зміни в типі поля, зробити копію і редагувати копію."; +$LANG["text_option_list_group_explanation"] = "Якщо вибрати цей варіант, він дозволяє групувати ваші варіанти. Як груп відображаються в залежності від типу поля за допомогою цього списку опцій."; +$LANG["text_option_list_page"] = "Радіо кнопки, прапорці, що випадають і множинного вибору випадаючих полях все надають користувачеві безліч варіантів, з яких вони можуть вибрати один або декілька елементів. У формі Інструменти, вони відомі як варіант списків. Як правило, вони створюються автоматично додати зовнішню форму процесу, але ви можете вручну додавати або редагувати свої списки опцію нижче, якщо ваша форма зміни змісту, або створюють поля, які використовуються тільки всередині країни."; +$LANG["text_option_list_used_by_fields"] = "Цей список опцій використовується кілька полів форми. При оновленні інформації нижче, він буде змінений для всіх полів (див. полів форми вкладку, щоб побачити список полів). Якщо ви хочете оновити значення для одного або підмножина полів, які в даний час призначений, натисніть тут , щоб створити новий список Варіант з тими ж значеннями, як цей. Потім можна призначити поля форми ви хочете нову групу."; +$LANG["text_public_form_omit_list_page"] = "Громадські форми дати вам перевагу даючи всім клієнтських рахунків доступ до них без необхідності вручну привласнити кожного клієнта з ними. На цій сторінці можна визначити ті клієнти, які не можуть отримати доступ до цієї форми, хоча форма позначається як громадськість."; +$LANG["text_public_view_omit_list_page"] = "Громадський переглядів дати вам перевагу даючи всім клієнтських рахунків доступ до них без необхідності вручну привласнити кожного клієнта з ними. На цій сторінці можна визначити ті клієнти, які не можуть отримати доступ до цієї специфічним уявленням."; +$LANG["text_reference_tab_info"] = "На цій сторінці перераховані всі доступні заповнювачі для форми. Заповнювачі є рядками, які можна використовувати в повідомленні шаблони і поля, відмічені спеціальним значком заповнювача . Коли вступив в полі, вони динамічно перетворюється на відповідне значення, коли поле перегляду і лист буде надіслано."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Огляд документації користувача"; +$LANG["text_send_email_from_edit_submission_page"] = "Увімкніть опцію, щоб відправити лист від сторінці Змінити подання"; +$LANG["text_smart_fill_option_list_problem"] = "Ми не змогли Smart Fill ваші варіанти поле. Тим не менш, як альтернатива, ви можете спробувати завантаження копії сторінки форми в полі нижче. Зверніть увагу: не завантажувати сировину PHP сторінок (або інший код на стороні сервера) - просто завантажити HTML версію. Щоб отримати це, переглянути і зберегти сторінку з веб-браузера."; +$LANG["text_submission_ip_address"] = "IP-адресу користувача, який зробив подання."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Використовуйте форму нижче, або переглянути або відправити свою адресу електронної пошти інформації з цієї електронний шаблон. Електронна пошта надсилається тільки для електронної пошти, зазначених нижче, основне, CC і BCC Адреса електронної пошти одержувача ігноруються при тестуванні."; +$LANG["text_test_email_templates_no_submissions"] = "Для того, щоб протестувати ваш електронний шаблонів, ви повинні спочатку покласти принаймні одну форму подання."; +$LANG["text_theme_page_intro"] = "На цій сторінці перераховані всі ваші теми. Натисніть на зображення, щоб побачити більше прикладів стилях теми. "Включено" прапорець визначає, чи є чи ні, що тема може бути обраний клієнтом. Для перегляду всіх доступних тим, відвідайте сайт Інсрументи."; +$LANG["text_tutorial_adding_first_form"] = "Навчальний посібник: Додавання перший формі!"; +$LANG["text_unique_submission_id"] = "Унікальне подання ID."; +$LANG["text_unused_option_list"] = "Цей варіант списку не використовується ні полів форми."; +$LANG["text_upgraded"] = "Ваша установка була оновлена до {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Цей список опцій використовується наступні поля."; +$LANG["text_view_fields_info"] = "Ця вкладка визначає, які поля відображаються в режимі редагування подання цієї точки зору, їх порядок і чи будуть вони доступні для редагування чи ні."; +$LANG["text_view_tab_summary"] = "Ця вкладка дозволяє створювати різні способи групи і організувати ваші дані. Переглядів дозволяють створювати власні підмножини даних форми, щоб розділити її на керовані частини, а також обмежити те, що клієнти можуть побачити або змінити."; +$LANG["validation_account_disabled"] = "На жаль, ваш обліковий запис був відключений."; +$LANG["validation_account_not_recognized"] = "На жаль, це ім'я користувача не розпізнається."; +$LANG["validation_account_not_recognized_info"] = "На жаль, це ім'я користувача не знайдено. Будь ласка, спробуйте ще раз або зверніться до адміністратора сайту за вказаною нижче адресою."; +$LANG["validation_account_pending"] = "Ваш обліковий запис в очікуванні схвалення адміністратором."; +$LANG["validation_check_delete_client"] = "Ви впевнені, що хочете видалити цей рахунок клієнта?"; +$LANG["validation_client_password_missing_number"] = "Клієнта пароль повинен містити принаймні один номер (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Клієнта пароль повинен містити щонайменше один з наступних символів: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Клієнта пароль повинен містити щонайменше одну велику літеру."; +$LANG["validation_client_password_too_short"] = "Клієнта пароль повинен бути не менше {\$number} символів."; +$LANG["validation_col_name_is_reserved_word"] = "На жаль, це ім'я стовпця бази даних, є зарезервованим роботу в MySQL. Будь ласка, перейменувати його!"; +$LANG["validation_db_name"] = "Імена бази даних не можуть містити періоди або косу риси."; +$LANG["validation_db_not_updated_invalid_input"] = "База даних не може бути оновлена. Будь ласка, перевірте значення, які вступили є дійсними."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "На жаль, адміністратор і клієнт за замовчуванням теми повинні бути завжди включені."; +$LANG["validation_default_phone_num_required"] = "Будь ласка, заповніть повний телефонний номер для <b> { \$ поле} </ B> поле - тільки цифри."; +$LANG["validation_default_rule_alpha"] = "Будь ласка, вводите тільки букви і цифри для <b> { \$ поле} </ B> поле."; +$LANG["validation_default_rule_letters_only"] = "Будь ласка, введіть символи тільки для <b> { \$ поле} </ B> поле."; +$LANG["validation_default_rule_numbers_only"] = "Будь ласка, вводите тільки цифри для <b> { \$ поле} </ B> поле."; +$LANG["validation_default_rule_required"] = "Будь ласка, введіть значення <b> { \$ поле} </ B> поле."; +$LANG["validation_default_rule_valid_email"] = "Будь ласка, введіть адресу електронної пошти для <b> { \$ поле} </ B> поле."; +$LANG["validation_delete_form_confirm"] = "Будь ласка, встановіть прапорець, щоб підтвердити, що ви хочете вилучити цю форму."; +$LANG["validation_delete_non_empty_option_list"] = "Увага! Цей список опцій використовується одне або кілька полів форми. Видалення це зробить ці поля перестають працювати належним чином."; +$LANG["validation_display_names_incomplete"] = "Будь ласка, введіть значення для відображення всіх імен, або виберіть варіант Smart Fill ввести їх динамічно."; +$LANG["validation_duplicate_form_field_name"] = "Ви не можете мати кілька полів з однаковим ім'ям поля."; +$LANG["validation_email_not_found_or_invalid"] = "На жаль, електронної пошти пов'язана з обліковим записом, або взагалі не існує або є недійсною."; +$LANG["validation_folder_invalid_permissions"] = "Для того щоб виконати цю перевірку, дозволи повинні бути встановлені в папці завантаження, щоб для читання і запису файлів (777 на Unix)."; +$LANG["validation_folder_not_writable"] = "Ця папка не є доступним для запису."; +$LANG["validation_internal_form_too_many_fields"] = "На жаль, лише створені форми з 1000 родовищ і менше."; +$LANG["validation_invalid_admin_email"] = "Будь ласка, введіть електронну адресу дійсні adminstrator's."; +$LANG["validation_invalid_admin_username"] = "Ваше ім'я користувача може складатися тільки з алфавітно-цифрові символи (AZ і 0-9)."; +$LANG["validation_invalid_client_username"] = "Ім'я користувача клієнта може складатися тільки з алфавітно-цифрові символи (AZ і 0-9)."; +$LANG["validation_invalid_client_username2"] = "На жаль, ім'я користувача може містити тільки букви, цифри та знак підкреслення. Будь ласка, введіть нове ім'я користувача."; +$LANG["validation_invalid_column_name"] = "Імена стовпців можуть бути тільки буквено-цифрові (AZ, 0-9). Будь ласка, перевірте імена стовпців."; +$LANG["validation_invalid_custom_from_email"] = "Будь ласка, введіть правильний "Від" Адреса електронної пошти."; +$LANG["validation_invalid_custom_reply_to_email"] = "Будь ласка, введіть правильний користувальницький "Відповісти" Адреса електронної пошти."; +$LANG["validation_invalid_default_sessions_timeout"] = "Будь ласка, введіть припустиме значення (число) за тайм-аут за замовчуванням сесій."; +$LANG["validation_invalid_email"] = "Будь ласка, введіть адресу електронної пошти."; +$LANG["validation_invalid_email_id"] = "Вибачте, це неправильний адресу електронної ID."; +$LANG["validation_invalid_folder"] = "Вибачте, як видається, не буде дійсним папки."; +$LANG["validation_invalid_form_field_names"] = "Поля форми, може бути тільки буквено-цифрові та підкреслення (AZ, 0-9, _), без пробілів."; +$LANG["validation_invalid_num_clients_per_page"] = "Будь ласка, введіть лише цифри в Клієнти на полі Кількість сторінку."; +$LANG["validation_invalid_num_emails_per_page"] = "Будь ласка, введіть лише цифри по електронній пошті на кожній сторінці."; +$LANG["validation_invalid_num_form_fields"] = "Будь ласка, вводите тільки цифри в поле Кількість полів."; +$LANG["validation_invalid_num_forms_per_page"] = "Прохання ввести тільки цифри в Кількість форм на поле сторінки."; +$LANG["validation_invalid_num_menus_per_page"] = "Будь ласка, введіть лише цифри для мене на кожній сторінці."; +$LANG["validation_invalid_num_modules_per_page"] = "Будь ласка, введіть лише цифри в Кількість модулів в області сторінки."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Будь ласка, вводите тільки цифри в Num Варіант Списки на сторінку поле."; +$LANG["validation_invalid_num_submissions_per_page"] = "Будь ласка, введіть дійсне число представлених на сторінці."; +$LANG["validation_invalid_sessions_timeout"] = "Будь ласка, введіть правильний таймаут сесії (цілі тільки!)."; +$LANG["validation_invalid_tab_assign_values"] = "Будь ласка, введіть тільки номер у полі "Від" і "до" полів."; +$LANG["validation_invalid_table_prefix"] = "Будь ласка, введіть префікс бази даних складається з літери та символ підкреслення тільки."; +$LANG["validation_invalid_upload_folder"] = "Установка вашого сервера РНР має неприпустимий налаштування для upload_tmp_dir значення. "(\$ Upload_folder)" не є допустимим папки."; +$LANG["validation_invalid_url"] = "Будь ласка, введіть правильний URL."; +$LANG["validation_invalid_username"] = "Ваше ім'я користувача може складатися тільки з алфавітно-цифрові символи (AZ і 0-9)."; +$LANG["validation_is_form_active"] = "Прохання вказати вид активний чи ні."; +$LANG["validation_menu_name_taken"] = "На жаль, це меню ім'я вже зайняте. Будь ласка, виберіть нове ім'я."; +$LANG["validation_modules_search_no_status"] = "Будь ласка, виберіть Увімкнено або Вимкнено галочки."; +$LANG["validation_no_access_type"] = "Будь ласка, введіть тип доступу."; +$LANG["validation_no_account_logout_url"] = "Будь ласка, введіть Ваш Logout URL."; +$LANG["validation_no_account_password_confirmed"] = "Будь ласка, введіть ваш новий пароль."; +$LANG["validation_no_account_password_confirmed2"] = "Ще раз введіть новий пароль."; +$LANG["validation_no_admin_email"] = "Введіть адресу електронної пошти адміністратора."; +$LANG["validation_no_admin_theme"] = "Будь ласка, виберіть тему для облікового запису адміністратора."; +$LANG["validation_no_admin_theme_swatch"] = "Будь ласка, виберіть зразок для адміністратора тему."; +$LANG["validation_no_client_email"] = "Будь ласка, введіть електронну адресу клієнта."; +$LANG["validation_no_client_first_name"] = "Введіть ім'я клієнта."; +$LANG["validation_no_client_last_name"] = "Будь ласка, введіть прізвище клієнта."; +$LANG["validation_no_client_login_page"] = "Прохання вказати, на якій сторінці клієнт повинен бути перенаправлено при вході"; +$LANG["validation_no_client_password"] = "Будь ласка, введіть пароль клієнта."; +$LANG["validation_no_client_theme_swatch"] = "Будь ласка, виберіть за замовчуванням зразок для облікових записів клієнтів."; +$LANG["validation_no_client_username"] = "Введіть ім'я користувача клієнта."; +$LANG["validation_no_column_name"] = "Будь ласка, введіть всі імена стовпців, або натисніть кнопку Smart Fill для автоматичного заповнення їх."; +$LANG["validation_no_column_selected"] = "Будь ласка, виберіть принаймні одне поле з'являються в колонці на сторінку зі списком подання."; +$LANG["validation_no_custom_from_email"] = "Введіть адреси "Від" адреса електронної пошти."; +$LANG["validation_no_custom_recipient_email"] = "Будь ласка, введіть користувальницького адреси одержувача."; +$LANG["validation_no_custom_reply_to_email"] = "Будь ласка, введіть звичай "Відповісти" Адреса електронної пошти."; +$LANG["validation_no_date_format"] = "Будь ласка, введіть дату формату."; +$LANG["validation_no_db_column_single"] = "Будь ласка, введіть ім'я стовпця бази даних."; +$LANG["validation_no_db_hostname"] = "Будь ласка, введіть ім'я бази даних."; +$LANG["validation_no_db_name"] = "Будь ласка, введіть ім'я бази даних."; +$LANG["validation_no_db_username"] = "Будь ласка, введіть ім'я користувача бази даних облікового запису."; +$LANG["validation_no_default_client_theme"] = "Будь ласка, виберіть тему за замовчуванням для всіх нових облікових записів клієнтів."; +$LANG["validation_no_default_language"] = "Будь ласка, виберіть мову за замовчуванням для установки в Інсрументи."; +$LANG["validation_no_default_sessions_timeout"] = "Будь ласка, введіть таймаут за замовчуванням для облікових записів користувачів."; +$LANG["validation_no_display_text"] = "Будь ласка, введіть Відображення тексту для кожного поля."; +$LANG["validation_no_display_text_single"] = "Будь ласка, введіть значення відображення тексту."; +$LANG["validation_no_edit_submission_page_label"] = "Будь ласка, введіть на сторінці Змінити подання етикетці."; +$LANG["validation_no_email"] = "Будь ласка, введіть Вашу адресу електронної пошти."; +$LANG["validation_no_email_config_field"] = "Прохання вказати, які поля форми є електронний області."; +$LANG["validation_no_email_content"] = "Будь ласка, введіть зміст електронної пошти, принаймні один з форматів (HTML або текстові)."; +$LANG["validation_no_email_from_field"] = "Будь ласка, електронна пошта "від" поля."; +$LANG["validation_no_email_template_name"] = "Будь ласка, введіть електронний шаблон назву."; +$LANG["validation_no_email_template_view_id"] = "Будь ласка, виберіть Показати для яких дане повідомлення шаблон повинен бути відображений."; +$LANG["validation_no_email_template_view_mapping_value"] = "Прохання вказати, коли повідомлення рушать найперше."; +$LANG["validation_no_enabled_themes"] = "Будь ласка, переконайтеся, що включений принаймні одну тему."; +$LANG["validation_no_first_name"] = "Введіть своє ім'я."; +$LANG["validation_no_form_field_name"] = "Будь ласка, введіть усі назви полів форм."; +$LANG["validation_no_form_field_single"] = "Будь ласка, введіть значення полів форми."; +$LANG["validation_no_form_id"] = "Форма ID не вказано. Вийдіть із системи і повторіть спробу."; +$LANG["validation_no_form_name"] = "Введіть ім'я форми."; +$LANG["validation_no_form_url"] = "Будь ласка, введіть формі URL."; +$LANG["validation_no_last_name"] = "Будь ласка, введіть своє прізвище."; +$LANG["validation_no_login_page"] = "Прохання вказати, які сторінки ви хотіли б бути відправлені під час кожного входу"; +$LANG["validation_no_logout_url"] = "Будь ласка, введіть Logout URL."; +$LANG["validation_no_main_email_recipient"] = "Будь ласка, вкажіть хоча б один основний одержувач електронною поштою (тобто не CC чи BCC)."; +$LANG["validation_no_menu"] = "Будь ласка, виберіть з меню для цього облікового запису користувача."; +$LANG["validation_no_menu_id"] = "Будь ласка, виберіть у меню."; +$LANG["validation_no_num_clients_per_page"] = "Будь ласка, введіть номер рахунку клієнта на кожній сторінці."; +$LANG["validation_no_num_emails_per_page"] = "Будь ласка, введіть число повідомлень електронної пошти в список на сторінці."; +$LANG["validation_no_num_form_fields"] = "Будь ласка, введіть число полів для форми."; +$LANG["validation_no_num_forms_per_page"] = "Введіть число форм на сторінці."; +$LANG["validation_no_num_menus_per_page"] = "Будь ласка, введіть номер меню список на кожній сторінці."; +$LANG["validation_no_num_modules_per_page"] = "Будь ласка, введіть число модулів на одній сторінці."; +$LANG["validation_no_num_option_lists_per_page"] = "Будь ласка, введіть число варіант списків на сторінці."; +$LANG["validation_no_num_submissions_per_page"] = "Будь ласка, введіть кількість поданих для показу на сторінці."; +$LANG["validation_no_option_list_name"] = "Будь ласка, введіть ім'я списку опцій."; +$LANG["validation_no_page_titles"] = "Будь ласка, введіть назву сторінки за замовчуванням для облікових записів користувачів."; +$LANG["validation_no_password"] = "Будь ласка, введіть свій пароль."; +$LANG["validation_no_program_name"] = "Будь ласка, введіть назву програми."; +$LANG["validation_no_second_password"] = "Будь ласка, повторіть введення пароля."; +$LANG["validation_no_sessions_timeout"] = "Будь ласка, введіть тайм-аут сеансу."; +$LANG["validation_no_smart_fill_values"] = "Введіть ім'я поля форми і URL форми."; +$LANG["validation_no_table_prefix"] = "Будь ласка, введіть префікс бази даних."; +$LANG["validation_no_tabs_defined"] = "Не визначено таблеток"; +$LANG["validation_no_test_email_recipient"] = "Будь ласка, введіть електронну адресу, де ми повинні надіслати тестове повідомлення."; +$LANG["validation_no_test_email_submission_id"] = "Будь ласка, введіть подання ідентифікаційний номер."; +$LANG["validation_no_theme"] = "Будь ласка, виберіть тему."; +$LANG["validation_no_theme_swatch"] = "Будь ласка, виберіть зразок для вибраної теми."; +$LANG["validation_no_timezone_offset"] = "Будь ласка, введіть зсув часового поясу."; +$LANG["validation_no_titles"] = "Будь ласка, введіть назв сторінок."; +$LANG["validation_no_two_column_names"] = "На жаль, ви не можете ввести те ж ім'я стовпця бази даних у два рази."; +$LANG["validation_no_ui_language"] = "Будь ласка, виберіть мову для інтерфейсу."; +$LANG["validation_no_url"] = "Будь ласка, введіть URL."; +$LANG["validation_no_username"] = "Введіть ім'я користувача."; +$LANG["validation_no_username_or_js"] = "Ви повинні ввести своє ім'я користувача. Будь ласка, увімкніть JavaScript у Вашому браузері."; +$LANG["validation_no_view_fields"] = "Ваша думка не містить полів! Ви повинні призначити принаймні, одне поле для виникнення то з'являвся на ваш погляд."; +$LANG["validation_no_view_fields_selected"] = "Будь ласка, виберіть один або кілька полів, щоб додати в поданні."; +$LANG["validation_no_view_name"] = "Введіть ім'я вашу думку."; +$LANG["validation_num_rows_to_add"] = "Будь ласка, введіть число строк додати."; +$LANG["validation_option_list_name_taken"] = "Вибачте, це ім'я списку опцій вже зайнято. Будь ласка, виберіть нове ім'я."; +$LANG["validation_password_in_password_history"] = "З метою забезпечення безпеки, ви не можете ввести той же пароль, як будь-який з останніх {\$history_size} паролі B. Будь ласка, введіть інший пароль."; +$LANG["validation_passwords_different"] = "Переконайтеся, що паролі збігаються."; +$LANG["validation_please_enter_search_date_range"] = "Будь ласка, виберіть пошук по діапазону дат."; +$LANG["validation_please_enter_search_keyword"] = "Будь ласка, введіть ключове слово пошуку."; +$LANG["validation_select_field_type"] = "Будь ласка, виберіть тип поля."; +$LANG["validation_select_submissions_to_copy"] = "Будь ласка, виберіть ті матеріали, котрі ви хотіли б скопіювати."; +$LANG["validation_select_submissions_to_delete"] = "Будь ласка, виберіть цих матеріалів ви хотіли б видалити."; +$LANG["validation_smart_fill_cannot_fill"] = "На жаль, ми не змогли заповнити цій галузі."; +$LANG["validation_smart_fill_invalid_field_type"] = "Нам не вдалося знайти полі, але це не розкривається, прапорець або радіо-групи."; +$LANG["validation_smart_fill_no_field_found"] = "На жаль, ми не змогли знайти таку форму, що поле з ім'ям на сторінці вказані."; +$LANG["validation_smart_fill_no_page"] = "Будь ласка, знайдіть сторінка, що містить поле, яке ви хотіли б Smart Fill."; +$LANG["validation_smart_fill_upload_all_pages"] = "Будь ласка, завантажте всі сторінки у вашій формі."; +$LANG["validation_upload_folder_not_writable"] = "Ця папка завантажити обраний вашій установці PHP не підтримує запису. До усунення цієї помилки, файли не можуть бути завантажені через форму Сервіс (або будь-яку іншу програму, PHP). Будь ласка, зверніться до Вашого хостинг-провайдера."; +$LANG["validation_upload_html_files_only"] = "Завантажуйте тільки файли HTML."; +$LANG["validation_username_taken"] = "На жаль, це ім'я користувача вже зайнято. Будь ласка, введіть інше ім'я користувача."; +$LANG["validation_wrong_password"] = "На жаль, цей пароль не збігається."; +$LANG["word_about"] = "Про"; +$LANG["word_access"] = "Доступ"; +$LANG["word_account"] = "Обліковий запис"; +$LANG["word_account_sp"] = "Рахунки (ів)"; +$LANG["word_accounts"] = "Рахунки"; +$LANG["word_action"] = "Дія"; +$LANG["word_active"] = "Активна"; +$LANG["word_add"] = "Додати"; +$LANG["word_add_rightarrow"] = "Додати »"; +$LANG["word_add_uc_rightarrow"] = "Додати »"; +$LANG["word_administration"] = "Адміністрація"; +$LANG["word_administrator"] = "Адміністратор"; +$LANG["word_after"] = "Після"; +$LANG["word_aquamarine"] = "Аквамарин"; +$LANG["word_asc"] = "Asc"; +$LANG["word_author"] = "Автор"; +$LANG["word_author_c"] = "Автор:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«Назад"; +$LANG["word_bcc_c"] = "СК:"; +$LANG["word_before"] = "Перш"; +$LANG["word_benefits"] = "Переваги"; +$LANG["word_blue"] = "Синій"; +$LANG["word_cancel"] = "Скасувати"; +$LANG["word_cc_c"] = "Копія:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Прапорці"; +$LANG["word_checklist"] = "Контрольний список"; +$LANG["word_client"] = "Клієнт"; +$LANG["word_client_c"] = "Клієнт:"; +$LANG["word_clients"] = "Клієнти"; +$LANG["word_close"] = "Закрити"; +$LANG["word_code"] = "Кодекс"; +$LANG["word_column"] = "Колонка"; +$LANG["word_columns"] = "Колони"; +$LANG["word_columns_sp"] = "Колонка (и)"; +$LANG["word_complete"] = "Повна"; +$LANG["word_configuration"] = "Конфігурація"; +$LANG["word_content"] = "Зміст"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Продовження »"; +$LANG["word_copy"] = "Скопіювати"; +$LANG["word_custom"] = "Звичай"; +$LANG["word_data"] = "Дані"; +$LANG["word_date"] = "Побачення"; +$LANG["word_debugging_c"] = "Налагодження:"; +$LANG["word_delete"] = "Видалити"; +$LANG["word_desc"] = "Опис"; +$LANG["word_direct"] = "Прямий"; +$LANG["word_disabled"] = "Інваліди"; +$LANG["word_documentation"] = "Документація"; +$LANG["word_done"] = "Зроблений"; +$LANG["word_drawbacks"] = "Недоліки"; +$LANG["word_dropdown"] = "Розкривний"; +$LANG["word_edit"] = "Змінити"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Електронна пошта"; +$LANG["word_email_c"] = "Електронна пошта:"; +$LANG["word_emails"] = "Листи"; +$LANG["word_enabled"] = "Включено"; +$LANG["word_equals"] = "Equals"; +$LANG["word_error"] = "Помилка"; +$LANG["word_error_c"] = "Помилка:"; +$LANG["word_examples_c"] = "Приклади:"; +$LANG["word_external"] = "Зовнішні"; +$LANG["word_fail"] = "Fail"; +$LANG["word_field"] = "Поле"; +$LANG["word_field_sp"] = "Польовий (и)"; +$LANG["word_fields"] = "Полів"; +$LANG["word_fields_sp"] = "Поле (поля)"; +$LANG["word_file"] = "Файл"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Файли"; +$LANG["word_filters"] = "Фільтри"; +$LANG["word_filters_sp"] = "Фільтр (и)"; +$LANG["word_for"] = "для"; +$LANG["word_form"] = "Форм"; +$LANG["word_form_c"] = "Форма:"; +$LANG["word_formatting"] = "Форматування"; +$LANG["word_forms"] = "Форми"; +$LANG["word_found"] = "Заснувати"; +$LANG["word_from"] = "Від"; +$LANG["word_from_c"] = "Від:"; +$LANG["word_general"] = "Загальний"; +$LANG["word_green"] = "Зелений"; +$LANG["word_grey"] = "Сірий"; +$LANG["word_height"] = "Підйом"; +$LANG["word_help"] = "Допомога"; +$LANG["word_hidden"] = "Прихований"; +$LANG["word_highlight"] = "Виділіть"; +$LANG["word_horizontal"] = "Горизонтальна"; +$LANG["word_hour"] = "Час"; +$LANG["word_hours"] = "Часів"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Image"; +$LANG["word_incomplete"] = "Неповна"; +$LANG["word_install"] = "Встановити"; +$LANG["word_installation"] = "Установка"; +$LANG["word_internal"] = "Внутрішній"; +$LANG["word_language"] = "Мова"; +$LANG["word_large"] = "Великий"; +$LANG["word_like"] = "Нравиться"; +$LANG["word_login"] = "Увійти"; +$LANG["word_logo"] = "Логотип"; +$LANG["word_logout"] = "Вийти"; +$LANG["word_main"] = "Головний"; +$LANG["word_medium"] = "Середа"; +$LANG["word_menu"] = "Меню"; +$LANG["word_menus"] = "Меню"; +$LANG["word_minutes"] = "хвилини"; +$LANG["word_misc"] = "Різне"; +$LANG["word_module"] = "Модуль"; +$LANG["word_modules"] = "Модулі"; +$LANG["word_na"] = "Не доступно"; +$LANG["word_name"] = "Назва"; +$LANG["word_name_c"] = "Ім'я:"; +$LANG["word_never"] = "Ніколи"; +$LANG["word_next_rightarrow"] = "Наступна »"; +$LANG["word_next_step_rightarrow"] = "Наступний крок »"; +$LANG["word_no"] = "Ні"; +$LANG["word_none"] = "Ніякої"; +$LANG["word_notes"] = "Нотатки"; +$LANG["word_notification"] = "Повідомлення"; +$LANG["word_number"] = "Номер"; +$LANG["word_off"] = "Поза"; +$LANG["word_offline"] = "Оффлайн"; +$LANG["word_okay"] = "Все в порядку"; +$LANG["word_on"] = "На"; +$LANG["word_online"] = "Онлайн"; +$LANG["word_operator"] = "Оператор"; +$LANG["word_options"] = "Опції"; +$LANG["word_orange"] = "Помаранчевий"; +$LANG["word_order"] = "Замовлення"; +$LANG["word_other"] = "Інший"; +$LANG["word_other_c"] = "Інше:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "Сторінка:"; +$LANG["word_pass"] = "Пас"; +$LANG["word_password"] = "Пароль"; +$LANG["word_password_c"] = "Пароль:"; +$LANG["word_pending"] = "Розглянутий"; +$LANG["word_permissions"] = "Дозволи"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«Попередня"; +$LANG["word_private"] = "Приватні"; +$LANG["word_public"] = "Громадські"; +$LANG["word_purple"] = "Фіолетовий"; +$LANG["word_recipient"] = "Одержувач"; +$LANG["word_recipient_sp"] = "Одержувач (і)"; +$LANG["word_red"] = "Червоний"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Видалити"; +$LANG["word_remove_uc_leftarrow"] = "«Видалити"; +$LANG["word_reply_to"] = "Відповідь до"; +$LANG["word_reply_to_c"] = "Відповісти:"; +$LANG["word_required"] = "Потрібен"; +$LANG["word_reset"] = "Скинути"; +$LANG["word_resolved"] = "Resolved"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "ряд"; +$LANG["word_search"] = "Пошук"; +$LANG["word_searchable"] = "Пошук"; +$LANG["word_select"] = "Виберіть"; +$LANG["word_setting"] = "Установка"; +$LANG["word_settings"] = "Налаштування"; +$LANG["word_show"] = "Показувати"; +$LANG["word_size"] = "Розмір"; +$LANG["word_skipped"] = "Пропущено"; +$LANG["word_small"] = "Невеликий"; +$LANG["word_solution"] = "Рішення"; +$LANG["word_sortable"] = "Sortable"; +$LANG["word_start"] = "Початок"; +$LANG["word_status"] = "Статус"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Тема"; +$LANG["word_subject_c"] = "Тема"; +$LANG["word_submenu"] = "Підменю"; +$LANG["word_submission"] = "Представлення"; +$LANG["word_submissions"] = "Матеріали"; +$LANG["word_system"] = "Система"; +$LANG["word_tab"] = "Вкладка"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (и)"; +$LANG["word_test"] = "Перевірка"; +$LANG["word_text"] = "Текст"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Текстове поле"; +$LANG["word_theme"] = "Тема"; +$LANG["word_themes"] = "Теми"; +$LANG["word_time"] = "Час"; +$LANG["word_tiny"] = "Крихітний"; +$LANG["word_tips"] = "Поради"; +$LANG["word_today"] = "Сьогодні"; +$LANG["word_truncate_q"] = "Truncate?"; +$LANG["word_uninstall"] = "Видаліть"; +$LANG["word_unknown"] = "Невідомий"; +$LANG["word_update"] = "Оновлення"; +$LANG["word_upgrade"] = "Оновлення"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Користувач"; +$LANG["word_username"] = "Ім'я користувача"; +$LANG["word_username_c"] = "Ім'я користувача:"; +$LANG["word_validation"] = "Перевірка"; +$LANG["word_value"] = "Значення"; +$LANG["word_value_sp"] = "Співвідношення (и)"; +$LANG["word_verified"] = "Verified"; +$LANG["word_verify"] = "Перевірити"; +$LANG["word_version"] = "Версії"; +$LANG["word_vertical"] = "Вертикальні"; +$LANG["word_view"] = "Перегляд"; +$LANG["word_views"] = "Перегляди"; +$LANG["word_warning"] = "Увага!"; +$LANG["word_warning_c"] = "Попередження:"; +$LANG["word_web"] = "Веб"; +$LANG["word_welcome"] = "Ласкаво просимо!"; +$LANG["word_width_c"] = "ширина:"; +$LANG["word_words"] = "Слова"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Жовтий"; +$LANG["word_yes"] = "Так"; \ No newline at end of file diff --git a/global/lang/vi.php b/global/lang/vi.php new file mode 100644 index 00000000..576eacb8 --- /dev/null +++ b/global/lang/vi.php @@ -0,0 +1,1219 @@ +Cảnh báo!
    Bạn đã chọn {\$ num_selected_on_page) gửi trên trang này và {\$num_selected_on_other_pages} trên các trang khác. Vui lòng chọn một trong những lựa chọn sau:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "Cảnh báo Bạn chưa chọn bất kỳ bài nộp trên trang này, nhưng bạn đã chọn {\$num_selected_on_other_pages} trên các trang khác.! Vui lòng xác nhận bạn muốn xóa các bản đệ trình.
    "; +$LANG["confirm_delete_view"] = "Bạn có chắc chắn muốn xóa này xem?"; +$LANG["confirm_refresh_page"] = "Bạn có chắc chắn muốn để làm mới trang? Điều này sẽ mất bất kỳ thay đổi bạn đã thực hiện."; +$LANG["confirm_save_change_before_redirect"] = "Một hoặc nhiều lĩnh vực đã được cập nhật. Bạn có muốn lưu các thay đổi của bạn trước khi chuyển hướng?"; +$LANG["confirm_smart_fill_db_column_fields"] = "Bạn có chắc chắn muốn Smart Điền tên cột cơ sở dữ liệu? Điều này sẽ ghi đè giá trị hiện tại của bạn."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "Tùy chọn này tự động tạo ra các tên cột cơ sở dữ liệu dựa trên các lĩnh vực hiển thị văn bản, vì vậy các nội dung của bảng cơ sở dữ liệu dễ dàng hơn để đọc."; +$LANG["confirm_smart_fill_display_names"] = "Bạn có chắc chắn muốn Smart Điền tên hiển thị? Điều này sẽ ghi đè giá trị hiện tại của bạn."; +$LANG["confirm_ungroup_option_list"] = "Bạn có chắc chắn bạn muốn tách các danh sách tùy chọn này? Tất cả các tùy chọn này sẽ được gộp thành một danh sách duy nhất ungrouped."; +$LANG["confirm_uninstall_module"] = "Bạn có chắc là bạn muốn bỏ cài đặt mô-đun này? Mọi dữ liệu mô đun sẽ bị mất."; +$LANG["date_AM"] = "PM"; +$LANG["date_Fri"] = "Thứ Sáu"; +$LANG["date_Friday"] = "Thứ sáu"; +$LANG["date_Mon"] = "Mon"; +$LANG["date_Monday"] = "Thứ hai"; +$LANG["date_PM"] = "AM"; +$LANG["date_Sat"] = "Thứ bảy"; +$LANG["date_Saturday"] = "Thứ Bảy"; +$LANG["date_Sun"] = "Mặt trời"; +$LANG["date_Sunday"] = "Chủ nhật"; +$LANG["date_Thu"] = "Thu"; +$LANG["date_Thursday"] = "Thứ năm"; +$LANG["date_Tue"] = "Thứ ba"; +$LANG["date_Tuesday"] = "Thứ ba"; +$LANG["date_Wed"] = "Thứ tư"; +$LANG["date_Wednesday"] = "Thứ tư"; +$LANG["date_am"] = "am"; +$LANG["date_month_April"] = "Tháng Tư"; +$LANG["date_month_August"] = "Tháng Tám"; +$LANG["date_month_December"] = "Tháng Mười Hai"; +$LANG["date_month_February"] = "Tháng Hai"; +$LANG["date_month_January"] = "Tháng Một"; +$LANG["date_month_July"] = "Tháng Bảy"; +$LANG["date_month_June"] = "Tháng Sáu"; +$LANG["date_month_March"] = "Tháng ba"; +$LANG["date_month_May"] = "Có thể"; +$LANG["date_month_November"] = "Tháng Mười Một"; +$LANG["date_month_October"] = "Tháng Mười"; +$LANG["date_month_September"] = "Tháng Chín"; +$LANG["date_month_short_Apr"] = "Tháng Tư"; +$LANG["date_month_short_Aug"] = "Tháng Tám"; +$LANG["date_month_short_Dec"] = "Tháng Mười Hai"; +$LANG["date_month_short_Feb"] = "Tháng Hai"; +$LANG["date_month_short_Jan"] = "Jan"; +$LANG["date_month_short_Jul"] = "Tháng Bảy"; +$LANG["date_month_short_Jun"] = "Tháng Sáu"; +$LANG["date_month_short_Mar"] = "Tháng Ba"; +$LANG["date_month_short_May"] = "Có thể"; +$LANG["date_month_short_Nov"] = "Tháng Mười Một"; +$LANG["date_month_short_Oct"] = "Tháng Mười"; +$LANG["date_month_short_Sep"] = "Tháng Chín"; +$LANG["date_pm"] = "am"; +$LANG["notify_account_deleted"] = "Các tài khoản người dùng đã bị xóa."; +$LANG["notify_account_updated"] = "Tài khoản của bạn đã được cập nhật thành công."; +$LANG["notify_add_display_values"] = "Thêm Hiển thị giá trị"; +$LANG["notify_admin_menu_updated"] = "Trình đơn hành chính đã được cập nhật."; +$LANG["notify_admin_theme_overridden"] = "Các quản trị viên của chủ đề đã được ghi đè bằng tay."; +$LANG["notify_allow_url_fopen_not_set"] = "Xin lỗi, thử nghiệm này không thể được chạy trên máy chủ web của bạn. Nó đòi hỏi allow_url_fopen được đặt thành 1 trong tập tin php.ini của bạn. Điều này cho phép thiết lập PHP để truy cập các tập tin thông qua một URL, đó là cần thiết để thực hiện kiểm tra này. Bạn có thể kiểm tra nó bằng tay bằng cách tải lên một tập tin vào thư mục đó qua FTP, sau đó cố gắng để truy cập nó tại URL mà bạn đã cung cấp."; +$LANG["notify_change_temp_password"] = "Bạn chỉ cần đăng nhập với một mật khẩu tạm thời. Bạn nên thiết lập lại mật khẩu của bạn ngay bây giờ!"; +$LANG["notify_click_to_edit_new_submission"] = "Nhấp vào đây để chỉnh sửa bài gửi mới."; +$LANG["notify_client_account_menus_updated"] = "Các tài khoản khách hàng (s) đã được cập nhật đến {\$menu_name} menu. Bây giờ bạn có thể xóa các menu trước đây liên kết với các tài khoản (s)."; +$LANG["notify_client_account_not_updated"] = "Các tài khoản khách hàng không có thể được cập nhật."; +$LANG["notify_client_account_themes_updated"] = "Các tài khoản khách hàng (s) đã được cập nhật đến {\$theme} chủ đề. Bây giờ bạn có thể vô hiệu hóa những chủ đề trước đó được liên kết với các tài khoản (s)."; +$LANG["notify_client_account_updated"] = "Các tài khoản khách hàng đã được cập nhật thành công."; +$LANG["notify_client_menu_deleted"] = "Trình đơn khách hàng đã bị xóa."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "Menu này đã bị xoá, nhưng các tài khoản khách hàng sau đây bây giờ không còn có một trình đơn! Bạn cần phải cập nhật các tài khoản sau đây:"; +$LANG["notify_client_menu_updated"] = "Trình đơn khách hàng đã được cập nhật."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "Xin lỗi, trình đơn bạn chỉ cố gắng để xóa đang được sử dụng bởi các khách hàng được liệt kê dưới đây. Để xóa menu trước tiên bạn sẽ cần phải chỉ định các khách hàng đến các menu khác. Nhấp vào tên của khách hàng để chỉnh sửa tài khoản cá nhân, hoặc chỉ định tất cả các tài khoản khác nhau vào một trình đơn thả xuống bằng cách sử dụng dưới đây."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "Xin lỗi, một trong những chủ đề mà bạn vừa bị vô hiệu hoá đã được sử dụng bởi các tài khoản khách hàng sau đây. Để vô hiệu hóa những chủ đề trước tiên bạn sẽ cần phải chỉ định mỗi khách hàng đến chủ đề khác. Nhấp vào tên của khách hàng để chỉnh sửa tài khoản cá nhân, hoặc chỉ định tất cả tài khoản cho một chủ đề bằng cách sử dụng thả xuống dưới đây."; +$LANG["notify_edit_email_fields_link"] = "Click vào đây để xác định các lĩnh vực hình thức là những lĩnh vực email, vì vậy bạn có thể nhắm mục tiêu trong các mẫu email của bạn."; +$LANG["notify_edit_field_new_field"] = "Đây là một lĩnh vực mới. Bạn sẽ cần phải cập nhật trang chính trước khi có thể hoàn toàn chỉnh sửa trường này."; +$LANG["notify_edit_option_list_after_save"] = "Bạn phải chọn một danh sách lựa chọn và sau đó Lưu Thay đổi trước khi có thể chỉnh sửa nó."; +$LANG["notify_email_field_config_deleted"] = "Cấu hình thư điện tử đã bị xóa."; +$LANG["notify_email_fields_not_updated"] = "Xin lỗi, chúng tôi không thể cập nhật các trường email."; +$LANG["notify_email_fields_updated"] = "Các lĩnh vực thư điện tử đã được cập nhật."; +$LANG["notify_email_not_sent"] = "Xin lỗi, email không thể được gửi đi. Vui lòng liên hệ với quản lý tại địa chỉ dưới đây."; +$LANG["notify_email_not_sent_c"] = "Xin lỗi, email không thể được gửi:"; +$LANG["notify_email_sent"] = "Email (s) đã được gửi."; +$LANG["notify_email_template_deleted"] = "Các email mẫu đã bị xóa."; +$LANG["notify_email_template_updated"] = "Email này đã được cập nhật bản mẫu."; +$LANG["notify_enabled_module_list_updated"] = "Danh sách các mô-đun cho phép đã được cập nhật."; +$LANG["notify_error_saving_fields"] = "Có một lỗi khi lưu các lĩnh vực."; +$LANG["notify_field_changes_saved"] = "Những thay đổi về lĩnh vực của bạn (s) đã được lưu."; +$LANG["notify_field_options_smart_filled"] = "Lựa chọn lĩnh vực của bạn có được thông minh tràn đầy."; +$LANG["notify_field_selected"] = "Lĩnh vực này đã được chọn Click vào đây để trở về danh sách các lĩnh vực chính.."; +$LANG["notify_field_updated"] = "Trường này đã được cập nhật."; +$LANG["notify_file_not_uploaded"] = "Các tập tin không thể được tải lên."; +$LANG["notify_file_uploaded"] = "Tập tin được tải lên thành công."; +$LANG["notify_filters_not_updated"] = "Có một lỗi cập nhật các bộ lọc trình này của khách hàng."; +$LANG["notify_filters_updated"] = "Các bộ lọc trình đã được cập nhật cho khách hàng này."; +$LANG["notify_folder_correct_permissions"] = "Thư mục này có quyền truy cập chính xác."; +$LANG["notify_folder_url_match"] = "Các thư mục và URL xuất hiện cho đúng cách phù hợp."; +$LANG["notify_folder_url_no_access"] = "Kiểm tra này không thể được thực hiện từ PHP không thể truy cập URL đó. Điều này thường được gây ra bởi các mật khẩu được URL được bảo vệ với một tập tin htaccess.."; +$LANG["notify_folder_url_no_match"] = "Thư mục này-URL sự kết hợp này không xuất hiện như một trận đấu."; +$LANG["notify_folder_url_unknown_error"] = "Một lỗi không rõ đã xảy ra. Bạn có thể kiểm tra nó bằng tay bằng cách tải lên một tập tin vào thư mục đó qua FTP, sau đó cố gắng để truy cập nó tại URL mà bạn đã cung cấp."; +$LANG["notify_form_access_type_email_info"] = "Hình thức này có kiểu truy cập quản trị viên, vì vậy không có khách hàng đã truy cập vào nó và không được liệt kê dưới đây thả xuống."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "Xin lỗi, một hình thức với ID không tồn tại."; +$LANG["notify_form_field_not_added"] = "Trường mẫu '{\$fieldname}' không thể được thêm vào."; +$LANG["notify_form_field_options_updated"] = "Các hình thức lựa chọn trường đã được cập nhật."; +$LANG["notify_form_field_removed"] = "Trường mẫu đã thành công gỡ bỏ."; +$LANG["notify_form_fields_removed"] = "Các trường mẫu đã thành công gỡ bỏ."; +$LANG["notify_form_not_updated_notify_admin"] = "Mẫu của bạn không thể được cập nhật. Vui lòng liên hệ với quản lý để báo cáo vấn đề này."; +$LANG["notify_form_settings_updated"] = "Cài đặt của bạn mẫu đã được cập nhật thành công."; +$LANG["notify_form_submission_updated"] = "Việc nộp mẫu đơn đã được cập nhật."; +$LANG["notify_form_tabs_updated"] = "Các tab đã được cập nhật."; +$LANG["notify_form_updated"] = "Hình thức này đã được cập nhật thành công."; +$LANG["notify_form_views_updated"] = "Lượt xem mẫu đã được cập nhật."; +$LANG["notify_install_invalid_db_info"] = "Xin lỗi, chúng tôi không thể kết nối với cơ sở dữ liệu bằng cách sử dụng những thông tin bạn cung cấp. Các thông báo lỗi cơ sở dữ liệu trả về là: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "Hình thức của bạn đã được tạo ra! Bạn có thể cấu hình mẫu của bạn thông qua các tab này."; +$LANG["notify_invalid_account_information_in_sessions"] = "Các thông tin tài khoản được lưu giữ trong các buổi là không hợp lệ. Xin đăng nhập ngay dưới đây."; +$LANG["notify_invalid_license_key"] = "Xin lỗi, không xuất hiện để được một key bản quyền hợp lệ. Xin hãy thử nhập lại một lần nữa."; +$LANG["notify_invalid_permissions"] = "Bạn không có quyền truy cập trang này. Bạn đã được đăng xuất."; +$LANG["notify_invalid_search_dates"] = "Xin vui lòng sử dụng datepicker để nhập một ngày hợp lệ hoặc ngày."; +$LANG["notify_invalid_upload_folder"] = "Thư mục tải lên là hoặc không hợp lệ hoặc không ghi."; +$LANG["notify_lang_list_updated"] = "Các giao diện có sẵn danh sách ngôn ngữ đã được cập nhật."; +$LANG["notify_login_info_emailed"] = "Thông tin đăng nhập của bạn đã được gửi đến bạn."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "Rất tiếc, mô-đun này đã được cài đặt!"; +$LANG["notify_module_installed"] = "Module này đã được cài đặt Click vào đây để chọn mô-đun.."; +$LANG["notify_module_list_updated"] = "Danh sách mô-đun đã được cập nhật."; +$LANG["notify_module_uninstalled"] = "Module này đã được gỡ cài đặt."; +$LANG["notify_module_updated"] = "Các mô-đun {\$module} đã được cập nhật {\$version}. Click vào đây để lựa chọn các mô- đun ."; +$LANG["notify_multi_field_selected"] = "Lĩnh vực này đã được chọn. Click vào đây để xem và chỉnh sửa các tuỳ chọn trường."; +$LANG["notify_multi_field_updated"] = "Trường này đã được cập nhật. Bạn sẽ có thể cấu hình các trường tùy chọn sau khi thiết lập các biểu mẫu."; +$LANG["notify_multiple_fields_found"] = "Nhiều yếu tố đã được tìm thấy với tên này trường ({\$field_name}). Điều này có thể xảy ra nếu trang của bạn chứa nhiều hình thức, hoặc nếu bạn vô tình đặt tên là một trong các hình thức tương tự như của bạn khác. Vui lòng chọn một trong những bạn muốn từ danh sách dưới đây."; +$LANG["notify_new_default_view_created"] = "A, mới mặc định chứa tất cả các lĩnh vực hình thức của bạn đã được tạo ra."; +$LANG["notify_new_submission_created"] = "Trình đã được tạo ra. Bạn có thể chỉnh sửa dưới đây."; +$LANG["notify_no_account_id_in_sessions"] = "Không có ID người dùng tài khoản đã được tìm thấy trong phiên. Xin đăng nhập ngay dưới đây."; +$LANG["notify_no_api_installed"] = "Bạn không phải cài đặt API"; +$LANG["notify_no_client_permissions"] = "Không có cài đặt sẵn để chỉnh sửa."; +$LANG["notify_no_email_template_selected"] = "Hãy lựa chọn các email mẫu."; +$LANG["notify_no_emails_defined"] = "Không có email đã được xác định cho mẫu này. Để thêm một hình mới, bấm vào nút dưới đây."; +$LANG["notify_no_field_settings"] = "Đây là loại trường này không chứa bất kỳ cài đặt thêm."; +$LANG["notify_no_fields_in_tab"] = "Tab này không chứa bất kỳ lĩnh vực."; +$LANG["notify_no_option_lists"] = "Có không có lựa chọn danh sách được xác định. Nhấp vào nút bên dưới để tạo ra một cái mới."; +$LANG["notify_no_test_submission"] = "Mẫu cụ đã không nhận được một trình thử nghiệm thành công được nêu ra."; +$LANG["notify_no_user_email_fields_configured"] = "Lưu ý: nếu bạn muốn gửi email đến bất kỳ địa chỉ email mà đã được bao gồm trong các biểu mẫu, trước tiên bạn cần phải cấu hình các trường email mẫu."; +$LANG["notify_no_views"] = "Hình thức của bạn không có bất kỳ lần xem! Bạn sẽ cần ít nhất một Xem để quản lý dữ liệu hình thức của bạn."; +$LANG["notify_no_views_assigned_to_client_form"] = "Nó xuất hiện rằng tài khoản người dùng của bạn chưa được ấn định cho bất kỳ lần xem hình thức, vì vậy bạn sẽ không thể xem bất kỳ dữ liệu. Xin vui lòng liên hệ với người quản trị để được giúp đỡ thêm."; +$LANG["notify_no_views_defined"] = "Bạn không có bất kỳ Xem được xác định. Bạn sẽ không thể xem bản đệ trình này dưới hình thức trừ khi Xem ít nhất một được tạo ra. Nhấp vào nút bên dưới để tạo ra xem mặc định."; +$LANG["notify_option_list_deleted"] = "Danh sách tùy chọn đã được xóa."; +$LANG["notify_option_list_updated"] = "Danh sách tùy chọn đã được cập nhật."; +$LANG["notify_public_form_omit_list_updated"] = "Các khách hàng bỏ qua danh sách cho mẫu này đã được cập nhật."; +$LANG["notify_public_view_omit_list_updated"] = "Các khách hàng bỏ qua danh sách này xem đã được cập nhật."; +$LANG["notify_required_admin_pages"] = "Các trang sau được yêu cầu trong menu Quản trị viên: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "Xin lỗi, không có bất kỳ hoạt động trong một thời gian vì vậy chúng tôi đã có để đăng nhập bạn ra ngoài. Xin đăng nhập ngay dưới đây."; +$LANG["notify_setup_options_updated"] = "Các tùy chọn thiết lập đã được cập nhật."; +$LANG["notify_smart_fill_field_not_found"] = "Chúng tôi không thể tìm thấy một lĩnh vực với tên này ({\$field_name}) dưới dạng (s) chỉ định. Bạn có thể hoặc tự thiết lập các loại trường dưới đây, hoặc nhấp vào nút Bỏ qua để chỉnh sửa trường này sau đó."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "Tập tin của bạn (s) đã được tải lên thành công. Hãy thử cách nhấn vào nút Điền thông minh để thử lại. Nếu bước này không thành công, bạn sẽ cần phải bỏ qua bước này và cấu hình các lĩnh vực của bạn mẫu manally sau."; +$LANG["notify_smart_fill_submitted"] = "Mẫu đã được gửi. Tùy theo kích thước của hình của bạn và số lựa chọn lĩnh vực, điều này có thể mất một thời gian."; +$LANG["notify_smart_fill_upload_fields_fail"] = "Xin lỗi, một hoặc nhiều các tập tin bạn đã nhập không thể được tải lên. Bạn sẽ cần phải bỏ qua bước này và cấu hình các lĩnh vực thủ công."; +$LANG["notify_submission_and_files_deleted"] = "Việc trình và bất kỳ file (s) liên kết với nó đã được xóa thành công."; +$LANG["notify_submission_copied"] = "Nội dung gửi đã được sao chép."; +$LANG["notify_submission_copied_edit"] = "Nội dung gửi đã được sao chép. Bạn có thể chỉnh sửa nó bên dưới."; +$LANG["notify_submission_deleted"] = "Trình đã được xóa thành công."; +$LANG["notify_submission_deleted_with_problems"] = "Trình đã được xoá, nhưng những vấn đề sau đây đã gặp phải khi cố gắng xóa các tập tin sau đây (s):"; +$LANG["notify_submission_id_not_found"] = "ID trình không tìm thấy."; +$LANG["notify_submission_not_updated"] = "Trình này có thể không được cập nhật."; +$LANG["notify_submissions_and_files_deleted"] = "Các bài nộp và bất kỳ file (s) liên kết với chúng đã được xóa thành công."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} bản đệ trình đã được sao chép."; +$LANG["notify_submissions_deleted"] = "Các bài nộp đã được xóa thành công."; +$LANG["notify_submissions_deleted_with_problems"] = "Các bài nộp đã được xoá, nhưng những vấn đề sau đây đã gặp phải khi cố gắng xóa các tập tin sau đây (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "Kiểm tra email của bạn không thể gửi đi được."; +$LANG["notify_theme_cache_folder_not_writable"] = "Thư mục cache của chủ đề này không ghi. Để kích hoạt chủ đề này, các {\$folder} thư mục cần phải có đầy đủ quyền đọc-ghi."; +$LANG["notify_theme_list_updated"] = "Danh sách chủ đề đã được cập nhật."; +$LANG["notify_themes_settings_updated"] = "Cài đặt chủ đề của bạn đã được cập nhật."; +$LANG["notify_view_deleted"] = "The View đã bị xóa."; +$LANG["notify_view_group_deleted"] = "Nhóm View đã bị xoá."; +$LANG["notify_view_missing_columns"] = "Oops! Xin lỗi, View này đã không được hoàn toàn thiết lập được nêu ra."; +$LANG["notify_view_missing_columns_admin_fix"] = "Click vào đây để xác định các lĩnh vực nên xuất hiện như là cột trên trang này."; +$LANG["notify_view_updated"] = "The View đã được cập nhật."; +$LANG["notify_your_email_sent"] = "Email của bạn đã được gửi thành công."; +$LANG["phrase_100_per_page"] = "100 mỗi trang"; +$LANG["phrase_10_per_page"] = "10 mỗi trang"; +$LANG["phrase_15_per_page"] = "15 mỗi trang"; +$LANG["phrase_1_direct"] = "1. Trực tiếp"; +$LANG["phrase_1char"] = "1 Char"; +$LANG["phrase_20_per_page"] = "20 mỗi trang"; +$LANG["phrase_25_per_page"] = "25 mỗi trang"; +$LANG["phrase_2_code"] = "2. Mã số"; +$LANG["phrase_2_columns"] = "2 cột"; +$LANG["phrase_2chars"] = "2 Chars"; +$LANG["phrase_3_columns"] = "3 cột"; +$LANG["phrase_4_columns"] = "4 Cột"; +$LANG["phrase_50_per_page"] = "50 trên trang"; +$LANG["phrase_accepting_submissions"] = "(nhận xét)"; +$LANG["phrase_access_admin_account_c"] = "Bạn có thể truy cập tài khoản quản trị của bạn ở đây:"; +$LANG["phrase_access_type"] = "Loại truy cập"; +$LANG["phrase_account_info"] = "Thông tin tài khoản"; +$LANG["phrase_account_settings"] = "Cài đặt Tài khoản"; +$LANG["phrase_action_needed"] = "Hành động cần thiết"; +$LANG["phrase_add_client"] = "Thêm Khách hàng"; +$LANG["phrase_add_client_menu"] = "Thêm Khách hàng Menu"; +$LANG["phrase_add_default_settings_rightarrow"] = "Thêm các thiết lập mặc định »"; +$LANG["phrase_add_field"] = "Thêm Field"; +$LANG["phrase_add_fields"] = "Thêm Fields"; +$LANG["phrase_add_fields_rightarrow"] = "Thêm trường (s) »"; +$LANG["phrase_add_form"] = "Thêm Mẫu"; +$LANG["phrase_add_form_external"] = "Thêm Mẫu - bên ngoài"; +$LANG["phrase_add_form_internal"] = "Thêm Mẫu - nội bộ"; +$LANG["phrase_add_new_group_rightarrow"] = "Thêm nhóm mới »"; +$LANG["phrase_add_num_rows"] = "Thêm {\$number} Row (s)"; +$LANG["phrase_add_row"] = "Thêm Row »"; +$LANG["phrase_add_submission_button"] = "Thêm gửi nút bấm"; +$LANG["phrase_add_view_rightarrow"] = "Thêm Xem »"; +$LANG["phrase_adding_multi_page_form"] = "Thêm một trang đa dạng với các API"; +$LANG["phrase_adding_single_page_form"] = "Thêm một mẫu-trang duy nhất với API"; +$LANG["phrase_admin_menu"] = "Quản trị Menu"; +$LANG["phrase_admin_only"] = "Chỉ có quản trị viên"; +$LANG["phrase_admin_panel"] = "Admin Panel"; +$LANG["phrase_administrator_theme"] = "Quản trị viên Theme"; +$LANG["phrase_advanced_settings_rightarrow"] = "Cài đặt nâng cao »"; +$LANG["phrase_all_X_results_selected"] = "Mọi {\$numresults} Kết quả chọn lọc"; +$LANG["phrase_all_clients"] = "Tất cả các khách hàng"; +$LANG["phrase_all_clients_except_c"] = "Tất cả các khách hàng ngoại trừ:"; +$LANG["phrase_all_clients_have_access"] = "(tất cả các khách hàng có thể truy cập)"; +$LANG["phrase_all_fields"] = "Tất cả các trường"; +$LANG["phrase_all_fields_displayed"] = "Tất cả các trường được hiển thị"; +$LANG["phrase_all_statuses"] = "Tất cả các trạng thái"; +$LANG["phrase_all_submissions"] = "Tất cả các bài nộp"; +$LANG["phrase_allow_fields_edited"] = "Cho phép các trường được edited"; +$LANG["phrase_alphanumeric"] = "Chữ và số (AZ, 0-9)"; +$LANG["phrase_api_version"] = "API Version"; +$LANG["phrase_apply_timezone_offset"] = "Áp dụng múi giờ offset"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "Chỉ định liệt kê tất cả các tài khoản khách hàng để {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "Chỉ định liệt kê tất cả các tài khoản khách hàng để {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "Khi kết thúc"; +$LANG["phrase_at_start"] = "Tại Start"; +$LANG["phrase_author_link"] = "Tác giả Liên kết"; +$LANG["phrase_auto_disable_account"] = "vô hiệu hóa tài khoản tự động sau khi # không cố gắng đăng nhập"; +$LANG["phrase_auto_size"] = "Auto-kích thước"; +$LANG["phrase_available_clients"] = "Khách hàng có sẵn"; +$LANG["phrase_available_fields"] = "Có sẵn Fields"; +$LANG["phrase_available_option_lists"] = "Có sẵn lựa chọn Danh sách"; +$LANG["phrase_available_swatches"] = "Có sẵn Swatches"; +$LANG["phrase_available_swatches_c"] = "Các Swatches:"; +$LANG["phrase_available_tabs"] = "Có sẵn Tabs"; +$LANG["phrase_available_views"] = "Sẵn xem"; +$LANG["phrase_awaiting_form_submission"] = "Chờ nộp mẫu đơn."; +$LANG["phrase_back_to_field_list"] = "«trở lại danh sách các lĩnh vực"; +$LANG["phrase_back_to_search_results"] = "trở lại kết quả tìm kiếm"; +$LANG["phrase_base_view_on"] = "Cơ sở Xem ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "Thay đổi thông tin đăng nhập"; +$LANG["phrase_characters_limit_p"] = "giới hạn ký tự."; +$LANG["phrase_check_db_settings_try_again"] = "Xin vui lòng kiểm tra các thiết lập cơ sở dữ liệu của bạn và nhấn vào nút Tiếp tục lại."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "Kiểm tra URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "Clean Up"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "Xoá bỏ danh sách"; +$LANG["phrase_client_account_settings"] = "Cài đặt Tài khoản khách hàng"; +$LANG["phrase_client_field"] = "Khách hàng Field"; +$LANG["phrase_client_map_filters"] = "Khách hàng đồ lọc »"; +$LANG["phrase_client_may_edit"] = "Khách hàng có thể sửa"; +$LANG["phrase_client_menu"] = "Khách hàng Menu"; +$LANG["phrase_clients_can_access_form"] = "Khách hàng có thể truy cập vào các mẫu đơn"; +$LANG["phrase_clients_can_access_view"] = "Khách hàng có thể truy cập vào xem"; +$LANG["phrase_clients_cannot_access_form"] = "Khách hàng đã không thể truy cập vào mẫu"; +$LANG["phrase_clients_cannot_access_view"] = "Khách hàng người không thể truy cập vào xem"; +$LANG["phrase_clients_may_edit"] = "Khách hàng có thể sửa"; +$LANG["phrase_code_c"] = "Error Code:"; +$LANG["phrase_code_markup_field"] = "Mã số / Markup trường"; +$LANG["phrase_code_markup_type"] = "Mã / Loại Markup"; +$LANG["phrase_codes_c"] = "Error Codes:"; +$LANG["phrase_column_width"] = "Column Width"; +$LANG["phrase_company_name"] = "Tên công ty"; +$LANG["phrase_configure_form_email_fields"] = "Cấu hình mẫu Email Fields"; +$LANG["phrase_confirm_folder_url_match"] = "Xác nhận thư mục-URL Phù hợp nhất"; +$LANG["phrase_connect_rows"] = "Kết nối hàng"; +$LANG["phrase_copy_email_settings_from"] = "Copy Email Cài đặt Từ ..."; +$LANG["phrase_copy_settings_from"] = "Copy Settings Từ ..."; +$LANG["phrase_core_fields"] = "Những lĩnh vực cốt lõi"; +$LANG["phrase_core_version"] = "Phiên bản lõi"; +$LANG["phrase_create_account"] = "Tạo tài khoản"; +$LANG["phrase_create_admin_account"] = "Tạo tài khoản quản trị"; +$LANG["phrase_create_config_file"] = "Tạo cấu hình File"; +$LANG["phrase_create_database_tables"] = "Tạo cơ sở dữ liệu Bàn"; +$LANG["phrase_create_default_view"] = "Tạo Xem Mặc định"; +$LANG["phrase_create_file"] = "Tạo tệp"; +$LANG["phrase_create_group"] = "Tạo nhóm"; +$LANG["phrase_create_new_email"] = "Tạo Email"; +$LANG["phrase_create_new_menu"] = "Tạo Menu"; +$LANG["phrase_create_new_option_list"] = "Tạo Danh sách lựa chọn mới"; +$LANG["phrase_create_new_option_list_group"] = "Tạo nhóm danh sách tùy chọn mới"; +$LANG["phrase_create_new_option_list_rightarrow"] = "Tạo Danh sách lựa chọn mới »"; +$LANG["phrase_create_new_view"] = "Tạo View"; +$LANG["phrase_create_new_view_group"] = "Tạo mới Xem Nhóm"; +$LANG["phrase_custom_display_format"] = "Custom Định dạng hiển thị"; +$LANG["phrase_custom_recipient"] = "Tuỳ Người nhận"; +$LANG["phrase_custom_url"] = "URL Tuỳ chỉnh"; +$LANG["phrase_dark_blue"] = "Dark Blue"; +$LANG["phrase_data_type"] = "Loại dữ liệu"; +$LANG["phrase_database_hostname"] = "Cơ sở dữ liệu tên máy"; +$LANG["phrase_database_name"] = "Tên cơ sở dữ liệu"; +$LANG["phrase_database_password"] = "Cơ sở dữ liệu mật khẩu"; +$LANG["phrase_database_settings"] = "Cài đặt cơ sở dữ liệu"; +$LANG["phrase_database_setup"] = "Thiết lập cơ sở dữ liệu"; +$LANG["phrase_database_table_prefix"] = "Cơ sở dữ liệu bảng tiền tố"; +$LANG["phrase_database_username"] = "Cơ sở dữ liệu tên người dùng"; +$LANG["phrase_date_format"] = "Ngày Định dạng"; +$LANG["phrase_db_column"] = "DB Cột"; +$LANG["phrase_db_setup_page_4"] = "4. Thiết lập cơ sở dữ liệu"; +$LANG["phrase_default_client_account_theme"] = "Tài khoản mặc định Khách hàng đề"; +$LANG["phrase_default_date_field_search_value"] = "Giá trị lĩnh vực tìm kiếm mặc định ngày"; +$LANG["phrase_default_language"] = "Ngôn ngữ mặc định"; +$LANG["phrase_default_menu"] = "Mặc định Menu"; +$LANG["phrase_default_sessions_timeout"] = "Mặc định Sessions Timeout"; +$LANG["phrase_default_sort_order"] = "Phân loại mặc định đặt hàng"; +$LANG["phrase_default_tab_label"] = "Dữ liệu"; +$LANG["phrase_default_theme"] = "Chủ đề mặc định"; +$LANG["phrase_default_value"] = "Giá trị mặc định"; +$LANG["phrase_default_values"] = "Giá trị mặc định"; +$LANG["phrase_default_values_new_submissions"] = "Giá trị mặc định nộp bài viết mới"; +$LANG["phrase_delete_field"] = "Xóa trường"; +$LANG["phrase_delete_form"] = "Xóa Mẫu"; +$LANG["phrase_delete_row"] = "Xóa Row"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "Xoá liên quan khi xóa các tập tin trình"; +$LANG["phrase_delete_view"] = "Xóa Xem"; +$LANG["phrase_disconnect_rows"] = "Ngắt kết nối hàng"; +$LANG["phrase_display_email"] = "Hiển thị Email"; +$LANG["phrase_display_name"] = "Tên hiển thị"; +$LANG["phrase_display_text"] = "Hiển thị văn bản"; +$LANG["phrase_display_value"] = "Hiển thị giá trị gia tăng"; +$LANG["phrase_edit_admin_menu"] = "Sửa Admin Menu"; +$LANG["phrase_edit_client"] = "Khách hàng sửa"; +$LANG["phrase_edit_client_menu"] = "Khách hàng sửa Menu"; +$LANG["phrase_edit_email_template"] = "Chỉnh sửa email Tiêu bản"; +$LANG["phrase_edit_field"] = "Sửa Field"; +$LANG["phrase_edit_field_c"] = "Chỉnh sửa Lĩnh vực:"; +$LANG["phrase_edit_form"] = "Hiệu chỉnh Form"; +$LANG["phrase_edit_form_access_type_b"] = "[Chỉnh sửa loại truy cập hình thức]"; +$LANG["phrase_edit_option_list"] = "Chỉnh sửa Danh sách lựa chọn"; +$LANG["phrase_edit_submission"] = "Sửa Submission"; +$LANG["phrase_edit_submission_label"] = "Chỉnh sửa Label thông tin"; +$LANG["phrase_edit_view"] = "Chỉnh sửa Xem"; +$LANG["phrase_email_format"] = "Định dạng email"; +$LANG["phrase_email_settings"] = "Email Settings"; +$LANG["phrase_email_template"] = "Email mẫu"; +$LANG["phrase_email_template_name"] = "Email mẫu tên"; +$LANG["phrase_error_learn_more"] = "Tìm hiểu thêm về lỗi này."; +$LANG["phrase_error_text_intro"] = "Xin vui lòng sửa các lỗi sau (s) và gửi lại:"; +$LANG["phrase_errors_learn_more"] = "Click vào mã lỗi để tìm hiểu thêm."; +$LANG["phrase_event_trigger"] = "Sự kiện Trigger"; +$LANG["phrase_external_form"] = "Bên ngoài Mẫu"; +$LANG["phrase_external_form_info"] = "Thông tin bên ngoài Mẫu"; +$LANG["phrase_external_your_own_form"] = "Bên ngoài (hình thức của riêng bạn)"; +$LANG["phrase_field_comments"] = "Trường Comments"; +$LANG["phrase_field_label"] = "Lĩnh vực Label"; +$LANG["phrase_field_options"] = "Tùy chọn trường"; +$LANG["phrase_field_size"] = "Field Size"; +$LANG["phrase_field_skipped"] = "Lĩnh vực bỏ qua"; +$LANG["phrase_field_specific_settings"] = "Cài đặt lĩnh vực, cụ thể"; +$LANG["phrase_field_type"] = "Loại trường"; +$LANG["phrase_field_type_no_validation"] = "Không có quy tắc xác nhận có sẵn cho loại hình này trường."; +$LANG["phrase_field_types"] = "Lĩnh vực Các Loại"; +$LANG["phrase_field_value"] = "Giá trị trường"; +$LANG["phrase_field_values_to_display_values"] = "Lĩnh vực giá trị »Hiển thị giá trị"; +$LANG["phrase_final_touches_page_6"] = "6. Đòn kết liễu"; +$LANG["phrase_finalize_form"] = "Hoàn Form"; +$LANG["phrase_first_name"] = "Tên"; +$LANG["phrase_footer_text"] = "Chân Text"; +$LANG["phrase_for_any_form_submission"] = "Đối với bất kỳ hình thức nộp hồ sơ"; +$LANG["phrase_for_view_submissions"] = "Chỉ đệ trình phù hợp với View (s)"; +$LANG["phrase_forgot_password"] = "Quên mật khẩu?"; +$LANG["phrase_form_already_selected"] = "Mẫu được chọn"; +$LANG["phrase_form_email_field_b_c"] = "[Mẫu email lĩnh vực]:"; +$LANG["phrase_form_email_field_configuration"] = "Mẫu Email Field Configuration"; +$LANG["phrase_form_email_fields"] = "Mẫu Email Fields"; +$LANG["phrase_form_field"] = "Mẫu Field"; +$LANG["phrase_form_field_contents"] = "Mẫu Lĩnh vực Nội dung"; +$LANG["phrase_form_field_name"] = "Trường mẫu Tên"; +$LANG["phrase_form_field_placeholders"] = "Mẫu lĩnh vực giữ chỗ"; +$LANG["phrase_form_fields"] = "Mẫu Fields"; +$LANG["phrase_form_info"] = "Hình thức thông tin"; +$LANG["phrase_form_info_2"] = "2. Hình thức thông tin"; +$LANG["phrase_form_list"] = "Mẫu Danh sách"; +$LANG["phrase_form_name"] = "Tên mẫu"; +$LANG["phrase_form_page"] = "Mẫu Trang"; +$LANG["phrase_form_placeholders"] = "Mẫu placeholders"; +$LANG["phrase_form_submission"] = "Mẫu Submission"; +$LANG["phrase_form_submissions"] = "Mẫu Submissions"; +$LANG["phrase_form_type"] = "Loại mẫu"; +$LANG["phrase_form_url"] = "Mẫu URL"; +$LANG["phrase_form_urls"] = "Mẫu URL"; +$LANG["phrase_forms_assigned_to_any_account"] = "Các hình thức được giao vào tài khoản bất kỳ"; +$LANG["phrase_forms_page_default_message"] = "Các hình thức trang mặc định tin nhắn"; +$LANG["phrase_ft_installation"] = "Cài đặt hình thức cụ Script"; +$LANG["phrase_full_width"] = "Full Width"; +$LANG["phrase_getting_started"] = "bắt đầu"; +$LANG["phrase_global_placeholders"] = "Toàn cầu placeholders"; +$LANG["phrase_group_name"] = "Group Name"; +$LANG["phrase_group_options_q"] = "Lựa chọn nhóm?"; +$LANG["phrase_group_rows"] = "Nhóm hàng"; +$LANG["phrase_have_fun"] = "Have fun!"; +$LANG["phrase_highlight_colour"] = "Làm nổi bật màu"; +$LANG["phrase_html_email"] = "HTML Email"; +$LANG["phrase_html_template"] = "HTML Template"; +$LANG["phrase_images_media"] = "Hình ảnh / Truyền thông"; +$LANG["phrase_import_option_list_rightarrow"] = "Danh sách lựa chọn nhập khẩu »"; +$LANG["phrase_input_length"] = "Đầu vào Length"; +$LANG["phrase_installation_help"] = "Cài đặt Trợ giúp"; +$LANG["phrase_internal_form"] = "Nội bộ Mẫu"; +$LANG["phrase_ip_address"] = "Địa chỉ IP"; +$LANG["phrase_is_multi_page_form_q"] = "Đây có phải là một hình thức nhiều trang?"; +$LANG["phrase_label_response_placeholders"] = "Placeholders Label / đáp ứng"; +$LANG["phrase_large_300px"] = "Lớn (300px)"; +$LANG["phrase_large_400px"] = "Lớn (400px)"; +$LANG["phrase_last_7_days"] = "7 ngày gần đây"; +$LANG["phrase_last_logged_in"] = "P cu Trong"; +$LANG["phrase_last_modified"] = "Đổi lần cuối:"; +$LANG["phrase_last_modified_date"] = "Thay đổi lần cuối ngày"; +$LANG["phrase_last_name"] = "Họ"; +$LANG["phrase_letters_only"] = "Chỉ có chữ cái"; +$LANG["phrase_light_brown"] = "Nâu sáng"; +$LANG["phrase_limit_email_content"] = "Hạn chế thư điện tử trong lĩnh vực nội dung để xem"; +$LANG["phrase_loading_ellipsis"] = "Loading ..."; +$LANG["phrase_log_in"] = "Đăng nhập"; +$LANG["phrase_login_as_user"] = "Đăng nhập như là người dùng này"; +$LANG["phrase_login_info"] = "Thông tin đăng nhập"; +$LANG["phrase_login_page"] = "Đăng nhập Trang"; +$LANG["phrase_login_panel_c"] = "Đăng nhập Panel:"; +$LANG["phrase_login_panel_leftarrows"] = "«Login Panel"; +$LANG["phrase_login_password"] = "Đăng nhập khẩu"; +$LANG["phrase_login_username"] = "Đăng nhập Tên đăng nhập"; +$LANG["phrase_logo_link_url"] = "Logo Liên kết URL"; +$LANG["phrase_logout_url"] = "Thoát URL"; +$LANG["phrase_main_nav"] = "Chính Nav"; +$LANG["phrase_main_settings"] = "Cài đặt chính"; +$LANG["phrase_manage_client"] = "Quản lý Khách hàng"; +$LANG["phrase_manage_client_omit_list"] = "Quản lý Khách hàng Bỏ qua Danh sách"; +$LANG["phrase_max_file_size"] = "Kích thước tối đa"; +$LANG["phrase_max_length"] = "Độ dài"; +$LANG["phrase_max_length_words_chars"] = "- Max length (từ / ký tự)"; +$LANG["phrase_may_add_submissions"] = "Có thể thêm bao gồm cả những phản hồi và những đề nghị, gợi ý"; +$LANG["phrase_may_copy_submissions"] = "Có thể sao chép nội dung gửi"; +$LANG["phrase_may_delete_submissions"] = "Có thể xóa bao gồm cả những phản hồi và những đề nghị, gợi ý"; +$LANG["phrase_medium_150px"] = "Trung bình (150px)"; +$LANG["phrase_medium_200px"] = "Trung bình (200px)"; +$LANG["phrase_menu_name"] = "Menu Tên"; +$LANG["phrase_menu_type"] = "Loại thực đơn"; +$LANG["phrase_min_password_length"] = "Chiều dài mật khẩu tối thiểu"; +$LANG["phrase_module_description"] = "Module mô tả"; +$LANG["phrase_module_info"] = "Module thông tin"; +$LANG["phrase_module_nav"] = "Module Nav"; +$LANG["phrase_month_to_date"] = "Tháng nay"; +$LANG["phrase_multi_select"] = "Đa chọn"; +$LANG["phrase_multi_select_dropdown"] = "Đa chọn thả xuống"; +$LANG["phrase_multiple_fields_found"] = "Những lĩnh vực tìm thấy nhiều!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "Tên / Last Name"; +$LANG["phrase_new_blank_email"] = "New Blank Email"; +$LANG["phrase_new_blank_option_list"] = "Lựa chọn Danh sách trống mới"; +$LANG["phrase_new_blank_view"] = "New Blank Xem"; +$LANG["phrase_new_ft_installation"] = "Mẫu mới cụ cài đặt"; +$LANG["phrase_new_option_list"] = "Lựa chọn Danh sách mới"; +$LANG["phrase_new_password"] = "Mật khẩu mới"; +$LANG["phrase_new_password_reenter"] = "Mật khẩu mới (xin nhập lại)"; +$LANG["phrase_new_view"] = "New View"; +$LANG["phrase_new_view_all_fields"] = "View - Tất cả các lĩnh vực"; +$LANG["phrase_next_client"] = "tiếp theo khách hàng »"; +$LANG["phrase_next_field"] = "tiếp theo lĩnh vực »"; +$LANG["phrase_next_form"] = "tiếp theo hình thức »"; +$LANG["phrase_next_view"] = "Xem tiếp »"; +$LANG["phrase_no_clients"] = "Không có khách hàng"; +$LANG["phrase_no_limit"] = "No Limit"; +$LANG["phrase_no_offset"] = "Không bù đắp"; +$LANG["phrase_no_option_lists_available"] = "Lựa chọn không có danh sách có sẵn."; +$LANG["phrase_no_views"] = "Số lần xem"; +$LANG["phrase_no_views_with_filters_p"] = "(Không có lần xem với các bộ lọc được xác định)"; +$LANG["phrase_none_not_recommended"] = "None (không khuyến khích)"; +$LANG["phrase_not_assigned_to_option_list"] = "Trường này không phải là giao cho một danh sách lựa chọn."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "KHÔNG Bình Đẳng"; +$LANG["phrase_not_found"] = "Không tìm thấy!"; +$LANG["phrase_not_like"] = "Không giống như"; +$LANG["phrase_not_visible_to_client"] = "(không hiển thị cho khách hàng)"; +$LANG["phrase_num_clients_per_page"] = "Số lần Khách hàng Per Page"; +$LANG["phrase_num_emails_per_page"] = "Số lần email Per Page"; +$LANG["phrase_num_fields"] = "Số lĩnh vực"; +$LANG["phrase_num_forms_per_page"] = "Số lần Forms Per Page"; +$LANG["phrase_num_menus_per_page"] = "Số lần Menus Per Page"; +$LANG["phrase_num_modules_per_page"] = "Số lần Modules Per Page"; +$LANG["phrase_num_option_lists_per_page"] = "Số Lựa chọn Danh sách Mỗi trang"; +$LANG["phrase_num_options"] = "Số lần Tùy chọn"; +$LANG["phrase_num_rows"] = "Số lần Hàng"; +$LANG["phrase_numbers_only"] = "Số Chỉ"; +$LANG["phrase_often_localhost"] = "(thường là "localhost")"; +$LANG["phrase_on_form_submission"] = "Ngày nộp đơn"; +$LANG["phrase_one_char_number"] = "Ít nhất một nhân vật là một con số (0-9)"; +$LANG["phrase_one_char_upper"] = "Ít nhất một nhân vật có hoa"; +$LANG["phrase_one_special_char"] = "Ít nhất một {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(chỉ có khách hàng cụ thể có quyền truy cập)"; +$LANG["phrase_open_form_in_dialog"] = "Mở hình thành trong cửa sổ hộp thoại"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "Mở hình thức này trong một cửa sổ tab mới /"; +$LANG["phrase_option_list"] = "Lựa chọn Danh sách"; +$LANG["phrase_option_list_name"] = "Tên tùy chọn Danh sách"; +$LANG["phrase_option_list_or_contents"] = "Danh sách tùy chọn / Nội dung"; +$LANG["phrase_option_lists"] = "Lựa chọn Danh sách"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Trang Nhan đề"; +$LANG["phrase_pass_on"] = "Qua ngày"; +$LANG["phrase_password_min"] = "Nó phải có ít nhất {\$length} ký tự."; +$LANG["phrase_password_one_number"] = "Nó phải có ít nhất một số (0-9)."; +$LANG["phrase_password_one_uppercase"] = "Nó phải có ít nhất một ký tự hoa."; +$LANG["phrase_password_requirements_c"] = "Mật khẩu yêu cầu:"; +$LANG["phrase_password_reset"] = "Đặt lại mật khẩu"; +$LANG["phrase_password_special_char"] = "Nó phải có ít nhất một trong các ký tự sau đây: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "Quyền / Cài đặt khác"; +$LANG["phrase_permitted_file_types"] = "Các kiểu tập tin được cho phép"; +$LANG["phrase_phone_number"] = "Số điện thoại"; +$LANG["phrase_phone_number_format"] = "Định dạng số điện thoại"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini kích thước tối đa được phép tải lên:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "Phiên bản PHP"; +$LANG["phrase_please_confirm"] = "Vui lòng Xác nhận"; +$LANG["phrase_please_enter_license_key"] = "Xin vui lòng nhập key bản quyền của bạn"; +$LANG["phrase_please_select"] = "Hãy chọn"; +$LANG["phrase_please_select_form"] = "Hãy lựa chọn một hình thức"; +$LANG["phrase_prev_client"] = "«Trước của khách hàng"; +$LANG["phrase_prev_form"] = "«Trước hình thức"; +$LANG["phrase_prevent_password_reuse"] = "Ngăn chặn tái sử dụng mật khẩu mới #"; +$LANG["phrase_previous_field"] = "«trước trường"; +$LANG["phrase_previous_page"] = "Trước Trang"; +$LANG["phrase_previous_view"] = "«Trước Xem"; +$LANG["phrase_program_name"] = "Tên chương trình"; +$LANG["phrase_public_form_omit_list"] = "Hình thức bỏ qua Danh sách công cộng"; +$LANG["phrase_public_view_omit_list"] = "Xem danh sách bỏ qua công cộng"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "Có một vấn đề với các truy vấn sau đây:"; +$LANG["phrase_radio_buttons"] = "Radio Buttons"; +$LANG["phrase_random_form_submission"] = "Ngẫu nhiên các hình thức nộp hồ sơ"; +$LANG["phrase_re_enter_password"] = "Nhập lại mật khẩu"; +$LANG["phrase_recipient_type"] = "Loại người nhận"; +$LANG["phrase_redirect_url"] = "Chuyển URL"; +$LANG["phrase_refresh_list"] = "Làm mới Danh sách"; +$LANG["phrase_refresh_module_list"] = "Làm mới Module Danh sách"; +$LANG["phrase_refresh_page"] = "Làm mới Trang"; +$LANG["phrase_refresh_theme_list"] = "Làm mới đề Danh sách"; +$LANG["phrase_register_new_email"] = "Đăng ký Email Mới"; +$LANG["phrase_remaining_characters"] = "còn lại nhân vật"; +$LANG["phrase_remaining_words"] = "còn lại từ"; +$LANG["phrase_remove_tabs"] = "Hủy bỏ Tabs"; +$LANG["phrase_required_password_chars"] = "Bắt buộc các ký tự mật khẩu"; +$LANG["phrase_resend_test_submission"] = "Gửi lại thử Submission"; +$LANG["phrase_return_form_list"] = "Trở về Mẫu Danh sách"; +$LANG["phrase_row_selected"] = "{\$num_rows} dòng được chọn"; +$LANG["phrase_rows_selected"] = "{\$num_rows} dòng được chọn"; +$LANG["phrase_sample_data"] = "Mẫu dữ liệu"; +$LANG["phrase_save_changes"] = "Lưu Thay đổi"; +$LANG["phrase_search_keyword"] = "Từ khóa tìm kiếm"; +$LANG["phrase_security_settings"] = "Security Settings"; +$LANG["phrase_select_all"] = "Chọn Tất cả"; +$LANG["phrase_select_all_X_results"] = "Select All {\$numresults} Kết quả"; +$LANG["phrase_select_all_on_page"] = "Chọn Tất cả Trên Trang"; +$LANG["phrase_select_date"] = "Chọn ngày"; +$LANG["phrase_select_field"] = "Chọn trường"; +$LANG["phrase_select_swatch"] = "Chọn mẫu màu"; +$LANG["phrase_selected_clients"] = "Khách hàng được lựa chọn"; +$LANG["phrase_selected_views"] = "Chọn xem"; +$LANG["phrase_send_email"] = "Gửi Email"; +$LANG["phrase_send_test_email"] = "Soạn Test Email"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "Sessions Timeout"; +$LANG["phrase_setting_value"] = "Thiết lập giá trị gia tăng"; +$LANG["phrase_setup_options"] = "Thiết lập Tùy chọn"; +$LANG["phrase_show_all"] = "Hiển thị tất cả"; +$LANG["phrase_show_form"] = "Hiện mẫu"; +$LANG["phrase_size_large"] = "Lớn (TEXT)"; +$LANG["phrase_size_medium"] = "Trung (<= 256 ký tự)"; +$LANG["phrase_size_small"] = "Nhỏ (<= 20 ký tự)"; +$LANG["phrase_size_tiny"] = "Tiny (<= 5 ký tự)"; +$LANG["phrase_size_very_large"] = "Rất lớn (MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "Bỏ qua Field"; +$LANG["phrase_skip_step"] = "Bỏ qua Bước"; +$LANG["phrase_small_100px"] = "Nhỏ (100px)"; +$LANG["phrase_small_80px"] = "Nhỏ (80px)"; +$LANG["phrase_smart_fill"] = "Smart Điền"; +$LANG["phrase_smart_fill_fields_from_c"] = "Điền vào các lĩnh vực thông minh từ:"; +$LANG["phrase_smart_fill_user_documentation"] = "Điền thông minh của người dùng Tài liệu »"; +$LANG["phrase_sort_as"] = "Sắp xếp Như"; +$LANG["phrase_special_fields"] = "Đặc biệt Fields"; +$LANG["phrase_standard_fields"] = "Tiêu chuẩn Fields"; +$LANG["phrase_standard_filters"] = "Bộ lọc tiêu chuẩn »"; +$LANG["phrase_step_1"] = "Bước 1"; +$LANG["phrase_step_2"] = "Bước 2"; +$LANG["phrase_step_3"] = "Bước 3"; +$LANG["phrase_step_4"] = "Bước 4"; +$LANG["phrase_step_5"] = "Bước 5"; +$LANG["phrase_step_6"] = "Bước 6"; +$LANG["phrase_strip_tags_in_submissions"] = "Dải thẻ trong bản đệ trình mẫu"; +$LANG["phrase_subject_line"] = "Tiêu đề Line"; +$LANG["phrase_submission_date"] = "Nộp ngày"; +$LANG["phrase_submission_id"] = "Nộp ID"; +$LANG["phrase_submission_made"] = "Trình thực hiện: {\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "Nộp Loại"; +$LANG["phrase_submissions_per_page"] = "Nộp mỗi Trang"; +$LANG["phrase_system_check"] = "Hệ thống Kiểm tra"; +$LANG["phrase_system_fields_no_validation"] = "Bạn không có thể xác nhận để các lĩnh vực hệ thống."; +$LANG["phrase_system_time_offset"] = "Hệ thống Thời Offset"; +$LANG["phrase_tab_label"] = "Tab Label"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test Folder Permissions"; +$LANG["phrase_test_submission"] = "Test Submission"; +$LANG["phrase_test_submission_3"] = "3. Test Submission"; +$LANG["phrase_test_submission_received"] = "Thử nghiệm nộp Đã nhận"; +$LANG["phrase_text_and_html"] = "Text & HTML"; +$LANG["phrase_text_email"] = "Văn bản Email"; +$LANG["phrase_text_template"] = "Mẫu văn bản"; +$LANG["phrase_the_previous_month"] = "Trong tháng trước"; +$LANG["phrase_theme_description"] = "Chủ đề Mô tả"; +$LANG["phrase_theme_info"] = "Chủ đề tin"; +$LANG["phrase_tiny_30px"] = "Tiny (30px)"; +$LANG["phrase_tiny_50px"] = "Tiny (50px)"; +$LANG["phrase_total_results_c"] = "Tổng Kết quả:"; +$LANG["phrase_type_c"] = "Lỗi Type:"; +$LANG["phrase_unselect_all"] = "Bỏ chọn Mọi"; +$LANG["phrase_update_accounts"] = "Cập nhật Tài khoản"; +$LANG["phrase_update_email_template"] = "Tiêu bản cập nhật Email"; +$LANG["phrase_update_field"] = "Cập nhật Field"; +$LANG["phrase_update_order"] = "Cập nhật thứ tự"; +$LANG["phrase_update_view"] = "Cập nhật Xem"; +$LANG["phrase_upload_file"] = "Upload file"; +$LANG["phrase_upload_files"] = "Tải lên tập tin"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "Tải lên đường dẫn thư mục"; +$LANG["phrase_upload_folder_url"] = "Tải lên thư mục URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "Giá trị mặc định?"; +$LANG["phrase_used_by_num_form_fields"] = "Được sử dụng bởi # Mẫu Fields"; +$LANG["phrase_uses_swatches"] = "Sử dụng Swatches"; +$LANG["phrase_valid_email"] = "Hợp lệ Email"; +$LANG["phrase_validation_error"] = "Xác Nhận Lỗi"; +$LANG["phrase_validation_rule"] = "Validation Rule"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "Xem Nhóm"; +$LANG["phrase_view_id"] = "Xem ID"; +$LANG["phrase_view_name"] = "Xem Tên"; +$LANG["phrase_view_placeholders"] = "Xem Placeholders"; +$LANG["phrase_view_submissions"] = "Xem Submissions"; +$LANG["phrase_view_uploaded_files"] = "xem tập tin được tải lên"; +$LANG["phrase_viewing_range"] = "[xem {\$startnum} vào {\$endnum}]"; +$LANG["phrase_when_sent"] = "Khi đã gửi"; +$LANG["phrase_when_submission_is_deleted"] = "Khi nộp hồ sơ sẽ bị xóa"; +$LANG["phrase_when_submission_is_edited"] = "Khi nộp hồ sơ là edited"; +$LANG["phrase_who_can_access"] = "Ai có thể truy cập?"; +$LANG["phrase_word_limit_p"] = "từ giới hạn."; +$LANG["phrase_year_to_date"] = "Năm nay"; +$LANG["phrase_yes_for_all_views"] = "Có, cho tất cả các lần xem"; +$LANG["phrase_yes_for_specific_views"] = "Có, cho xem cụ thể"; +$LANG["phrase_your_account"] = "Tài khoản của bạn"; +$LANG["phrase_your_email"] = "Email của bạn"; +$LANG["phrase_your_email_address"] = "Địa chỉ email"; +$LANG["processing_form_disabled"] = "Xin lỗi, hình thức này đã bị vô hiệu."; +$LANG["processing_form_incomplete"] = "Xin lỗi, mẫu đơn này không xuất hiện được đầy đủ các thiết lập từ trong Mẫu Công cụ. Rất có thể là nguyên nhân của vấn đề này là bạn gỡ bỏ các form_tools_initialize_form "" trường mẫu ẩn, nhưng đã không hoàn thành tất cả các bước của "Thêm Mẫu" quá trình.

    Hãy đăng nhập và xem xét các cấu hình mẫu."; +$LANG["processing_init_complete"] = "Cảm ơn bạn! Trình thử nghiệm của bạn đã được đưa qua thành công. Xin hãy trở về bảng mẫu cụ hành chính và nhấn vào "Làm mới" nút ở dưới cùng của Thêm Bước Mẫu 3 trang để kết thúc việc thiết lập mẫu của bạn."; +$LANG["processing_invalid_form_id"] = "Xin lỗi, điều này không xuất hiện được một ID hình thức hợp lệ."; +$LANG["processing_no_form_id"] = "process.php đòi hỏi một hình thức ID cho chế biến. Hãy chắc chắn rằng mẫu của bạn chứa một lĩnh vực tiềm ẩn với tên gọi "form_tools_form_id" đó là đi dọc theo dạng ID."; +$LANG["processing_no_form_url_for_recaptcha"] = "Mẫu cụ không thể xác định nơi để chuyển hướng khi họ không nhập CAPTCHA đúng. Vui lòng vượt qua trong một lĩnh vực tiềm ẩn với tên form_tools_form_url có chứa URL của biểu mẫu."; +$LANG["processing_no_post_vars"] = "process.php là không nhận được bất kỳ dữ liệu. Lưu ý: kịch bản này không thể được tải trực tiếp trong trình duyệt của bạn.
    Hãy chắc chắn rằng mẫu của bạn được gửi qua POST."; +$LANG["processing_no_redirect_url"] = "Trình này được xử lý đúng, nhưng bạn chưa chỉ định một URL chuyển hướng cho các hình thức này! Hiệu chỉnh hình thức của bạn trong Tools Mẫu giao diện và thêm URL chuyển hướng."; +$LANG["special_language"] = "Vietnamese"; +$LANG["special_language_locale"] = "Vietnamese"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "Tất cả các tài khoản khách hàng mới sẽ được tạo ra với các thiết lập và điều khoản quy định dưới đây. Để ghi đè lên một thiết lập cho một khách hàng cụ thể, chỉnh sửa các tài khoản khách hàng và vào tab Thiết lập của họ."; +$LANG["text_add_form_choose_integration_method"] = "Chọn phương pháp nào bạn muốn sử dụng để tích hợp hình thức của bạn với Công cụ Form."; +$LANG["text_add_form_code_submission_benefits"] = "Phương pháp này sử dụng Mẫu Công cụ API, bao gồm trong kịch bản chính Mẫu Công cụ . API cung cấp một số chức năng hữu ích để làm cho công việc tích hợp các hình thức của bạn với Công cụ Form như đơn giản càng tốt. Không có hạn chế cách hình thức của bạn có thể được đệ trình khi bạn sử dụng các API. Bạn có thể gửi nội dung trong một đi, hoặc trang của trang, bạn có thể thêm tùy chỉnh của riêng bạn phía máy chủ xác nhận, hình ảnh CAPTCHA, bạn có thể chọn để gửi thông tin ngay bây giờ, nhưng chỉ nói với nó để hiển thị trình trong Mẫu Công cụ giao diện người dùng vào một ngày sau đó ( xem phần hoàn chỉnh bao gồm cả những phản hồi và những đề nghị, gợi ý trong tài liệu trợ giúp API) ."; +$LANG["text_add_form_code_submission_drawbacks"] = "Để gửi dữ liệu hình thức của bạn thông qua PHP, hình thức của bạn phải được đặt trên cùng một trang web như thế này cài đặt công cụ Form. Thứ hai, đối với người sử dụng công cụ Form không có kỹ thuật và người mới, phương pháp này có thể được một chút đáng sợ lúc đầu. Nhưng có rất nhiều tài liệu để giúp bạn ra ngoài, trong đó có hai hướng dẫn đơn giản để kết hợp các hình thức duy nhất của bạn và nhiều trang (đây là những liên kết trên một bước sau đó)."; +$LANG["text_add_form_direct_submission_benefits"] = "Đây là cách đơn giản nhất để gửi mẫu của bạn Mẫu Công cụ. Nó không cần bất kỳ kiến thức về PHP và chỉ đòi hỏi một sự thay đổi rất nhỏ để hình của bạn. It's tuyệt vời cho các hình thức nhỏ, nơi bạn muốn chỉ cần gửi thông tin tới cơ sở dữ liệu sau đó chuyển hướng người dùng đến một thankyou "" trang."; +$LANG["text_add_form_direct_submission_drawbacks"] = "Phương pháp này trình rất đơn giản để sử dụng, nhưng không cung cấp kiểm soát nhiều hơn đối với các hình thức phức tạp. Đa dạng trang hoặc các hình thức đó có yêu cầu server-side được xác nhận phù hợp hơn với phương pháp thứ hai: nộp thông qua Công cụ Form API."; +$LANG["text_add_form_field_types1"] = "Gần xong rồi! Trang này cố gắng để tìm tất cả các lĩnh vực hình thức của bạn và xác định các loại lĩnh vực của họ. Nhấp vào nút Smart Fill trên bên phải để bắt đầu. Bạn sẽ chỉ được tiến hành khi tất cả các hành động đã được giải quyết các vấn đề cần được quan tâm của bạn xuất hiện trong "Hành động cần thiết " cột."; +$LANG["text_add_form_field_types2"] = "Nếu hình thức của bạn không có trong HTML, nhấp vào nút Bước Bỏ qua để tiến hành. Điều này tất cả có thể được cấu hình sau đó."; +$LANG["text_add_form_field_types3"] = "Điều này tải lại các nội dung hình thức của bạn (s). Lưu ý: điều này sẽ ghi đè lên bất kỳ thay đổi bạn đã thực hiện trên trang này."; +$LANG["text_add_form_field_types4"] = "Trong trường hợp bạn chạy vào vấn đề, bấm vào đây để bỏ qua bước này. Tất cả các lĩnh vực chưa được giải quyết được thiết lập để sử dụng các giá trị mặc định. Bạn có thể tùy chỉnh các lĩnh vực này sau đó."; +$LANG["text_add_form_field_types_manual_upload"] = "Nếu bạn không thể thông minh Điền vào các lĩnh vực của bạn, bạn có thể muốn thử một giải pháp thay thế: tải lên bản sao của các hình thức của bạn trong các lĩnh vực dưới đây."; +$LANG["text_add_form_field_types_manual_upload2"] = "Lưu ý: không tải lên các trang liệu PHP (server-side code) - chỉ cần tải lên các phiên bản HTML. Để có được điều này, xem và lưu các trang từ trình duyệt web của bạn."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "Có nhiều lĩnh vực mà không thể được tìm thấy trong trang mẫu mà bạn chỉ định. Điều này chủ yếu là có thể gây ra bởi một trong những điều sau đây:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "Bạn đã nhập một hoặc nhiều các URL hình thức dưới nhiều hình thức trang web của bạn không chính xác."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "Một hoặc nhiều trang hình thức của bạn là mật khẩu bảo vệ và kịch bản không thể truy cập trang."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "Bạn không chính xác vào URL mẫu của bạn."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "Click vào đây để trở lại trang thông tin mẫu để kiểm tra các thiết lập của bạn."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "Bạn thay đổi hình thức của bạn (s) sau khi thực hiện việc trình thử nghiệm"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "Click vào đây để đặt thông qua một trình thử nghiệm."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "Hình thức của bạn là mật khẩu bảo vệ và kịch bản không thể truy cập trang."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "Trong một tab / cửa sổ của trình duyệt này, đăng nhập vào hình thức của bạn sau đó nhấn nút Refresh dưới đây để cố gắng tìm lại các lĩnh vực."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "Nếu không có các công việc giải pháp trên, bạn cũng có thể muốn thử tải lên các hình thức của bạn để xử lý ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "Có nhiều lĩnh vực mà không thể được tìm thấy trong các trang dưới hình thức mà bạn chỉ định. Điều này chủ yếu là có thể gây ra bởi một trong những:"; +$LANG["text_add_form_help_link"] = "Nếu bạn chạy vào bất kỳ rắc rối trong các bước sau, hãy thử đọc tài liệu hướng dẫn người sử dụng ."; +$LANG["text_add_form_step_1_text_1"] = "Các trang sau dẫn bạn qua các bước vào Tools Mẫu cấu hình để lưu trữ nộp mẫu của bạn. Trước khi tiếp tục, hãy kiểm tra xem:"; +$LANG["text_add_form_step_1_text_2"] = "mẫu của bạn đã được tạo ra và nó có thể truy cập thông qua một URL (localhost là tốt)"; +$LANG["text_add_form_step_1_text_3"] = "có khả năng sửa mẫu của bạn"; +$LANG["text_add_form_step_2_para_2"] = "Mở hình của bạn trong một biên tập viên của sự lựa chọn của bạn và thay đổi thẻ hình thức của bạn để sau, bao gồm cả hai lĩnh vực ẩn."; +$LANG["text_add_form_step_2_para_3"] = "Tiếp theo, mở hình của bạn trong một trình duyệt web. Điền vào mọi lĩnh vực và gửi nó. Sau khi nộp, bạn sẽ thấy một tin nhắn thông báo. Sau khi tin này được hiển thị, trở về trang này và bấm vào nút refresh bên dưới. Khi quá trình này hoàn tất, bạn sẽ thấy một nút tiếp tục dưới đây, bạn tham gia vào các bước tiếp theo."; +$LANG["text_add_form_step_2_para_6"] = "Trong trình đơn của bạn, bao gồm các giá trị sau. Họ có thể được đặt trực tiếp qua PHP hoặc được thông qua cùng thông qua các hình thức chính nó. Dưới đây là những ví dụ của mỗi. The \$ (varname) là một thăng (hoặc kết hợp mảng) của tất cả các thông tin về hình thức trình - điều này thường là \$ (postvar) hay (\$ sessionvar) biến, nhưng nó có thể được tùy chỉnh xây dựng."; +$LANG["text_add_form_step_2_text_2"] = "Nhập URL của trang của bạn "thankyou " ở đây. Đây là nơi bạn muốn mọi người được hướng dẫn sau khi hình thức đã được đệ trình."; +$LANG["text_add_form_step_3_para_1"] = "Trang này liệt kê tất cả các lĩnh vực trong trình đơn của bạn. Xin vui lòng kiểm tra môi trường và loại bỏ bất kỳ mà bạn không cần phải được lưu trữ cho mỗi trình. Nếu bạn xóa một trường hợp lệ do tai nạn, hoặc muốn thay đổi những thông tin được lưu trữ bằng hình thức của mình, trở về trang trước để gửi một trình thử nghiệm mới."; +$LANG["text_add_form_step_3_para_2"] = "Lưu ý: nếu bạn đang gửi nhiều giá trị thông qua một hộp kiểm tra hoặc nhiều hộp chọn, hãy chắc chắn tên trường của bạn kết thúc với [] ký tự (xem tài liệu người dùng cho biết thêm thông tin)."; +$LANG["text_add_form_step_3_text_1"] = "Đây là nơi vui vẻ bắt đầu! Tại thời điểm này, Công cụ Form là chờ đợi cho một trình thử nghiệm từ mẫu của bạn. Nó sẽ sử dụng hình thức trình để biết những thông tin được lưu trữ trong cơ sở dữ liệu."; +$LANG["text_add_form_step_3_text_2"] = "bằng cách trỏ mẫu của bạn Mẫu Tools"; +$LANG["text_add_form_step_3_text_3"] = "bằng cách sử dụng mẫu cụ API"; +$LANG["text_add_form_step_3_text_4"] = "Để giúp tích hợp các hình thức của bạn, chúng tôi đề nghị bạn đọc một trong những hướng dẫn sau đây:"; +$LANG["text_add_form_step_3_text_5"] = "Họ giải thích làm thế nào để thiết lập mẫu của bạn để chuẩn bị cho việc trình thử nghiệm, và bao gồm các thông tin khác có thể sẽ được trợ giúp. Các dòng của PHP, bạn sẽ cần là:"; +$LANG["text_add_form_step_3_text_6"] = "Điều này đảm bảo các dữ liệu được thực sự được gửi đến Mẫu Công cụ. Khi bạn đã đặt thông qua trình kiểm tra của bạn, nút bấm vào dưới đây."; +$LANG["text_add_form_step_3_text_7"] = "Trên TRƯỚC trang để bạn cuối cùng "cảm ơn" trang, hãy chắc chắn để thêm các tham số sau vào biến \$ params:"; +$LANG["text_add_form_step_5_para_1"] = "Cơ sở dữ liệu đã được thiết lập để cho mẫu này và mẫu đơn đã được kích hoạt để sử dụng. Nếu bạn thực hiện bằng cách trỏ trình mẫu của bạn để process.php, hãy trở về hình thức của bạn và loại bỏ các lĩnh vực sau đây ẩn:"; +$LANG["text_add_form_step_5_para_2"] = "Sau đó, chuyến thăm của bạn "cảm ơn" trang để có sản phẩm nào trong phiên. Một khi điều này được thực hiện, tất cả các bài nộp đơn mới sẽ được xử lý và lưu trữ bởi Mẫu Công cụ. Hãy thử làm một hoặc hai trình để xác minh thông tin là tất cả các tải lên một cách chính xác."; +$LANG["text_add_form_step_5_para_3"] = "Nếu bạn muốn tinh chỉnh hình thức của mình cho các tùy chọn như: tự động gửi email, bổ sung thêm hình thức lĩnh vực lĩnh vực, hay tùy biến các loại hình trường, bạn có thể sửa mẫu của bạn tại bất kỳ điểm nào."; +$LANG["text_add_form_step_5_para_4"] = "Kể từ khi mẫu của bạn có chứa tập tin tải lên các lĩnh vực, bạn sẽ cần phải cấu hình mỗi trường để xác định thư mục tải lên tập tin, những tập tin được phép và. Điều này có thể được tìm thấy trên tab hiển thị các trang sửa đổi hình thức."; +$LANG["text_add_form_step_5_para_5"] = "Nếu nộp hồ sơ đã được gửi qua API, thay đổi dòng ft_api_init_form_page trên trang đầu tiên của mẫu của bạn:"; +$LANG["text_add_submission_button"] = "Nút Add thông tin chỉ xuất hiện lần xem có các "Có thể thêm đệ trình " tùy chọn thiết lập để "có "."; +$LANG["text_admin_email_placeholder_info"] = "Đây là địa chỉ email của người quản trị Mẫu cụ, được xác định trong cài đặt tài khoản của bạn. Điều này chỉ ra địa chỉ email, do đó, nếu bạn muốn sử dụng như là một liên kết HTML, bạn sẽ cần phải bọc nó trong một thẻ <a>, như vậy:
    <a href="mailto:{\$ADMINEMAIL}"> (\$ ADMINEMAIL) </ a>"; +$LANG["text_also_default_login_page_theme"] = "(Còn tên đăng nhập mặc định trang chủ đề)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "Trước tiên, hãy chọn loại hình thức của bạn."; +$LANG["text_client_form_page"] = "Trang này liệt kê tất cả các hình thức và xem được giao cho khách hàng này. Mẹo: để cho họ để xem bản đệ trình của một người mẫu, họ cần phải được giao cho ít nhất một View."; +$LANG["text_client_map_filters_desc1"] = "Khách hàng lọc đồ cho phép bạn giới hạn đệ trình xuất hiện trong View này bằng cách lập bản đồ các giá trị trong một trường mẫu để các giá trị trong một tài khoản khách hàng."; +$LANG["text_client_no_forms"] = "Hiện tại bạn không có hình thức có sẵn để xem xét."; +$LANG["text_client_welcome"] = "Chào mừng! Chương trình này lưu tất cả các thông tin được gửi bởi khách truy cập website của bạn. Để xem các bài nộp cho một hình thức cụ thể chỉ cần nhấp vào liên kết VIEW, hoặc xem trình đơn menu tận cùng bên trái cho các tùy chọn khác."; +$LANG["text_config_file_created"] = "File config.php của bạn đã được tạo ra."; +$LANG["text_config_file_not_created"] = "Chúng tôi không thể tạo tập tin config.php của bạn. Bạn sẽ cần phải tạo tập tin bằng tay."; +$LANG["text_config_file_not_created_instructions"] = "Sao chép và dán nội dung từ phần dưới đây vào tập tin có tên là config.php và tải lên qua FTP tới Tools Mẫu / thư mục trên toàn cầu (các thư mục đó cũng có một vài tập tin và thư mục khác, một trong những tập tin gọi là library.php)."; +$LANG["text_confirm_delete_form"] = "Có, tôi muốn xoá mẫu này"; +$LANG["text_create_admin_account"] = "Bây giờ chúng ta sẽ tạo ra tài khoản của quản trị viên. Này được sử dụng để quản lý tất cả các khía cạnh của mẫu cụ, như thêm hình thức và tạo ra các tài khoản khách hàng."; +$LANG["text_create_new_client_account"] = "Sử dụng mẫu dưới đây để tạo một tài khoản khách hàng mới. Tất cả các trường là bắt buộc."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "xem PHP {\$datefunctionlink} chức năng cho các tùy chọn định dạng"; +$LANG["text_default_file_settings_page"] = "Sửa đổi định nghĩa các thiết lập tải lên tập tin để cài đặt cụ mẫu của bạn. Những quy tắc áp dụng cho tất cả các tập tin được tải lên thông qua mẫu cụ, trừ khi rõ ràng ghi đe đối với một lĩnh vực hình thức cá nhân. Lưu ý: nếu bạn thay đổi thư mục tải lên sau khi các tập tin đã tải lên, chúng sẽ được tự động chuyển vào thư mục mới."; +$LANG["text_default_theme_cache_folder_not_writable"] = "Trước khi tiếp tục, bạn sẽ cần phải cập nhật thông tin / themes / default thư mục cache / đầy đủ để cho phép đọc và ghi các điều khoản. Một khi điều này được thực hiện, thông báo này sẽ biến mất và bạn có thể cài đặt các tập lệnh."; +$LANG["text_default_values_in_view"] = "Phần này là tùy chọn. Các bài nộp được tạo ra bằng cách View này sẽ chứa các giá trị mặc định quy định ở đây."; +$LANG["text_delete_all_forms"] = "Tôi muốn xóa tất cả các tập tin được tải lên thông qua hình thức này"; +$LANG["text_delete_form_warning"] = "Bạn có chắc chắn muốn xoá mẫu này? Hành động này không thể được hoàn tác. Tất cả dữ liệu sẽ vĩnh viễn mất!"; +$LANG["text_edit_admin_menu_page"] = "Bạn có thể sửa trình đơn của bạn dưới đây. Để đảm bảo bạn luôn có quyền truy cập vào tất cả các chức năng có sẵn trong mẫu cụ, các trang sau được yêu cầu: Các hình thức, khách hàng, tài khoản của bạn, Modules, Cài đặt và Thoát."; +$LANG["text_edit_client_menu_page"] = "Phần này cho phép bạn tuỳ chỉnh các cột hướng trái cho mỗi người dùng. Bạn có thể tạo bao nhiêu khách hàng thực đơn như bạn muốn, và gán cho bất kỳ tài khoản cho một trong số họ. Theo mặc định, có hai đơn: một cho bạn, người quản trị, và một cho tất cả các tài khoản khách hàng. Các tài khoản quản trị có thể được sửa đổi nhưng không được gỡ bỏ."; +$LANG["text_edit_tab_summary"] = "Nếu bạn muốn nhóm các lĩnh vực này Xem vào các tab, chỉ cần nhập tên tab dưới đây. Sau khi thực hiện xong, bạn chọn tab thích hợp cho từng nhóm lĩnh vực trong các tab Fields ."; +$LANG["text_edit_view_list_page"] = "Tab này điều khiển các trường xuất hiện như là cột trên trang liệt kê những thông tin, và một vài cài đặt thêm cho những lĩnh vực. Lưu ý: chúng tôi khuyên bạn thêm không quá 4 hoặc 5 trong các lĩnh vực quan trọng nhất trong View."; +$LANG["text_email_settings_intro"] = "Trang này cho phép bạn xác định được các email mẫu lưu trữ của bạn và những lĩnh vực tương ứng của họ. Một khi bạn xác định chúng ở đây, bạn có thể sử dụng chúng trong email của bạn là mẫu người nhận. Phần này là hoàn toàn tùy chọn."; +$LANG["text_email_tab_summary"] = "Phần này cho phép bạn xây dựng bất kỳ số lượng các email được gửi đi bất cứ khi nào mẫu của bạn được gửi, và khác gây nên."; +$LANG["text_email_template_tab"] = "Phần này cho phép bạn xác định những nội dung xuất hiện trong email. Nếu bạn muốn gửi thư điện tử của bạn như văn bản chỉ hoặc email, chỉ nhập một giá trị cho các phần đó. Nếu bạn nhập một giá trị cho cả hai, email sẽ được gửi trong cả hai định dạng."; +$LANG["text_email_template_text_1"] = "Đã có một trình thực hiện thông qua hình thức của bạn, {\$FORMNAME}."; +$LANG["text_email_template_text_1_c"] = "Đã có một trình thực hiện thông qua hình thức của bạn, {\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "Cảm ơn bạn đã nộp hồ sơ của bạn!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "Thông báo lỗi để hiển thị nếu trường không xác nhận"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "Hình thức bên ngoài là hình thức đã tồn tại trên trang web của bạn, hoặc một nơi nào đó trên web. Chọn tùy chọn này nếu bạn có hình thức riêng của bạn mà bạn muốn để tích hợp với các Công cụ Form."; +$LANG["text_fields_tab_summary"] = "Trang này liệt kê tất cả các lĩnh vực hình thức của bạn. Để kiểm soát làm thế nào họ xuất hiện khi đệ trình duyệt web, xem tab Xem . Xóa một lĩnh vực trên trang này sẽ xóa nó từ tất cả các đệ trình, vì vậy hãy cẩn thận!"; +$LANG["text_file_extension_info"] = "Nhập tập tin mở rộng tách bằng dấu phẩy (ví dụ jpg, gif, png) hoặc để trống để cho phép bất cứ loại tập tin."; +$LANG["text_file_field_placeholders_info"] = "Các lĩnh vực File có hai placeholders đặc biệt: FILEURL và FILENAME. FILEURL là URL đầy đủ đến tập tin, do đó bạn có thể liên kết trực tiếp với nó trong email của bạn; FILENAME chỉ là tên tập tin."; +$LANG["text_filters_page"] = "Chỉ những đệ trình đáp ứng các quy tắc bạn định nghĩa dưới đây sẽ xuất hiện trong này xem."; +$LANG["text_filters_tips"] = "Cho lời khuyên về cách sử dụng bộ lọc trình, xem tài liệu của người dùng."; +$LANG["text_forgot_password"] = "Không có vấn đề. Chỉ cần nhập tên đăng nhập của bạn dưới đây và thông tin đăng nhập của bạn sẽ được gửi đến địa chỉ email của bạn trong hồ sơ. Nếu bạn đã quên tên đăng nhập của bạn, hãy gửi email với quản lý ở {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "Mẫu này có chứa một hay nhiều tập tin tải lên các lĩnh vực:"; +$LANG["text_form_placeholder_info"] = "Giữ chỗ sau đây có thể được sử dụng trong bất kỳ mẫu email và các lĩnh vực giữ chỗ ngôn ngữ, không phân biệt bất cứ điều gì Xem các mẫu email này đang được phân công. Giữ chỗ CÂU HỎI câu hỏi hình thức cụ thể, giữ chỗ ĐÁP được câu trả lời cho mỗi câu hỏi."; +$LANG["text_form_submission_date_placeholder"] = "Ngày khi bài nộp đã được thực hiện."; +$LANG["text_form_tools_form_url"] = "URL của biểu mẫu. Điều này chỉ có một giá trị cho hình thức bên ngoài."; +$LANG["text_form_tools_login_url"] = "URL đăng nhập cho Mẫu Công cụ."; +$LANG["text_form_view_permission_info_admin"] = "Lưu ý: Hình thức này hiện nay đã có loại quyền truy cập Quản trị viên, do đó, không ai trong số các tài khoản khách hàng sẽ có thể thấy điều này Xem."; +$LANG["text_form_view_permission_info_private"] = "Lưu ý: Hình thức này hiện đang có kiểu truy cập cá nhân để lựa chọn công cộng và tư nhân ở đây sẽ được giới hạn trong đó tập hợp con của khách hàng."; +$LANG["text_ft_installed"] = "Xin chúc mừng, mẫu cụ đã được cài đặt thành công!"; +$LANG["text_global_placeholder_info"] = "Những placeholders có thể được sử dụng trong bất kỳ mẫu và các hình thức."; +$LANG["text_group_name_explanation"] = "Đối với lĩnh vực được gửi thông qua quá trình Thêm Mẫu, giá trị này là đã điền sẵn để hiển thị văn bản của các lĩnh vực sử dụng bất kỳ giá trị. Bạn có thể muốn thay đổi nó tốt hơn các nội dung riêng biệt."; +$LANG["text_install_create_config_file"] = "Mẫu cụ cửa hàng máy chủ của bạn và thiết lập cơ sở dữ liệu trong tập tin có tên là config.php, tìm thấy trong / toàn cầu của bạn / thư mục. Nhấp vào "Tạo File" nút để tự động tạo ra các tập tin trên máy chủ của bạn."; +$LANG["text_install_create_database_tables"] = "Bây giờ chúng ta sẽ tạo ra các mẫu bảng cơ sở dữ liệu Công cụ. Bước này đòi hỏi các cơ sở dữ liệu tự nó đã được tạo ra. Nếu bạn không chắc chắn làm thế nào để làm điều này, xin vui lòng liên hệ với nhà cung cấp hosting."; +$LANG["text_install_db_tables_error_tip_1"] = ""Unknown MySQL Server Host" thường có nghĩa là tên máy bạn cung cấp là không chính xác. Có lẽ cố gắng thiết lập này để "localhost" - đây là một cách phổ biến để chỉ các cơ sở dữ liệu "" cục bộ trên một máy chủ web."; +$LANG["text_install_db_tables_error_tip_2"] = ""Không thể kết nối với máy chủ MySQL địa phương thông qua ổ cắm" có nghĩa là lĩnh vực cơ sở dữ liệu tên máy là một lần nữa không chính xác."; +$LANG["text_install_db_tables_error_tip_3"] = ""Truy cập bị từ chối cho người sử dụng:" có nghĩa là có một vấn đề với tên đăng nhập / mật khẩu kết hợp."; +$LANG["text_install_db_tables_error_tip_4"] = ""Truy cập bị từ chối cho người sử dụng: ... đến cơ sở dữ liệu ..." có nghĩa là mặc dù tên đăng nhập và mật khẩu bạn cung cấp là chính xác, nó đã không thể kết nối với cơ sở dữ liệu mà cụ thể với tài khoản đó. Điều này có nghĩa là một trong hai tên cơ sở dữ liệu của bạn là không chính xác, hoặc là tài khoản người dùng này không phải là liên kết với cơ sở dữ liệu đó."; +$LANG["text_install_email_content_text"] = "Có rất nhiều tài nguyên trên trang web của chúng tôi để giúp bạn bắt đầu, bao gồm tài liệu trực tuyến của chúng tôi (https://docs.formtools.org) và hướng dẫn (https://docs.formtools.org/tutorials). Nếu bạn thấy bạn gặp khó khăn hoặc có câu hỏi, hãy đặt câu hỏi về github (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "Xin lỗi, công cụ Form không sẽ có thể chạy trên máy chủ của bạn . Xin vui lòng bấm vào đây để yêu cầu tối thiểu ."; +$LANG["text_install_system_check"] = "Trang này chạy một vài thử nghiệm trên hệ thống của bạn để đảm bảo nó có thể chạy cụ Form."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "Hình thức nội bộ chỉ tồn tại trong Công cụ Form - không phải ở đâu đó trên trang web của bạn. Chỉ Mẫu Công cụ tài khoản người dùng sẽ có quyền truy cập để hình thành. Chọn tùy chọn này nếu bạn không có một hình thức hiện tại."; +$LANG["text_internal_form_intro"] = "Sử dụng mẫu dưới đây để tạo ra một hình thức mới nội bộ. Tất cả các thiết lập, bao gồm cả số lượng và nội dung của các lĩnh vực hình thức có thể được thay đổi và cấu hình sau."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "Để đăng nhập và sử dụng cụ mẫu, bạn phải có kích hoạt javascript trong trình duyệt của bạn. Vui lòng kích hoạt nó bây giờ, và nhấp vào làm mới trong trình duyệt của bạn."; +$LANG["text_last_modified_date_explanation_c"] = "Thời gian qua trình này đã được sửa đổi. Đối với bản đệ trình mới này giống như là:"; +$LANG["text_limit_email_content_desc"] = "Tùy chọn này chỉ hoạt động cho HTML và nội dung văn bản được tạo ra với các vòng lặp Smarty."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(chỉ liệt kê xem với một hoặc nhiều bộ lọc được xác định)"; +$LANG["text_log_in_to_ft"] = "Đăng nhập vào Form Tools"; +$LANG["text_login"] = "Vui lòng đăng nhập dưới đây để truy cập program_name \$ () Administration Panel. Nếu bạn quên mật khẩu, nhấn vào đây."; +$LANG["text_login_info"] = "Theo yêu cầu, đây là thông tin đăng nhập của bạn."; +$LANG["text_name_of_form"] = "Tên của biểu mẫu."; +$LANG["text_no_clients"] = "Hiện tại không có khách hàng trong cơ sở dữ liệu. Để thêm một tài khoản khách hàng mới, bấm vào nút Add Khách hàng dưới đây."; +$LANG["text_no_clients_found"] = "Không có khách hàng đã được tìm thấy. Hãy thử mở rộng các tiêu chí tìm kiếm của bạn."; +$LANG["text_no_fields_in_view"] = "Xem không có bất kỳ lĩnh vực trong đó. Nhấp vào liên kết dưới đây."; +$LANG["text_no_forms"] = "Hiện tại không có hình thức trong cơ sở dữ liệu. Để thêm một hình thức mới, bấm vào nút Add Form dưới đây."; +$LANG["text_no_forms_found"] = "Không có hình thức nào được tìm thấy."; +$LANG["text_no_forms_found_search"] = "Không có hình thức nào được tìm thấy. Hãy thử mở rộng tiêu chí tìm kiếm của bạn."; +$LANG["text_no_modules_found"] = "Không có mô-đun đã được tìm thấy. Hãy thử mở rộng các tiêu chí tìm kiếm của bạn."; +$LANG["text_no_recipients_added"] = "Không có người nhận đã được thêm vào."; +$LANG["text_no_search_results"] = "Không có kết quả với tiêu chí tìm kiếm / View."; +$LANG["text_no_submissions_found"] = "Xin lỗi, không gửi được tìm thấy."; +$LANG["text_no_themes"] = "Bạn không có bất kỳ chủ đề được xác định. Nhấp vào nút dưới đây để làm mới danh sách chủ đề của bạn, hoặc kiểm tra các tài liệu hướng dẫn Mẫu người sử dụng công cụ cho các thông tin về việc thêm các chủ đề."; +$LANG["text_non_deletable_fields"] = "Trường này được sử dụng bởi Core kịch bản và không thể được chỉnh sửa hoặc xóa mà không gây ra sự không tương thích. Nếu bạn muốn thay đổi loại lĩnh vực, tạo một bản sao của nó và chỉnh sửa các bản sao."; +$LANG["text_option_list_group_explanation"] = "Nếu được chọn, nó cho phép nhóm các tùy chọn của bạn. Làm thế nào các nhóm được hiển thị phụ thuộc vào loại trường bằng cách sử dụng danh sách tùy chọn này."; +$LANG["text_option_list_page"] = "Nút radio, hộp kiểm tra, Dropdowns và đa lĩnh vực chọn thả xuống cung cấp cho người sử dụng với nhiều lựa chọn mà từ đó họ có thể chọn một hoặc nhiều mục. Công cụ Form, chúng được gọi là danh sách lựa chọn. Nói chung, được tạo ra tự động bởi Mẫu Thêm bên ngoài quá trình, nhưng bạn có thể thêm hoặc chỉnh sửa danh sách lựa chọn dưới đây, nếu thay đổi hình thức hay nội dung của bạn, bạn xây dựng các lĩnh vực chỉ được sử dụng nội bộ."; +$LANG["text_option_list_used_by_fields"] = "Danh sách lựa chọn này được sử dụng bởi nhiều lĩnh vực hình thức. Nếu bạn cập nhật các thông tin dưới đây, nó sẽ được thay đổi cho tất cả các trường (xem mẫu Fields tab để xem danh sách các lĩnh vực) . Nếu bạn muốn cập nhật các giá trị cho một, hoặc một tập hợp con của các lĩnh vực hiện đang được giao, bấm vào đây để tạo ra một danh sách lựa chọn mới với các giá trị tương tự như một trong những điều này . Sau đó, bạn có thể gán các trường mẫu mà bạn muốn vào nhóm mới."; +$LANG["text_public_form_omit_list_page"] = "Công khai các hình thức cung cấp cho bạn những lợi ích của việc cho phép tất cả các tài khoản khách hàng truy cập chúng mà không cần phải tự ấn định mỗi khách hàng với họ. Trang này cho phép bạn xác định những khách hàng những người có thể không truy cập vào biểu mẫu này, ngay cả khi biểu mẫu được đánh dấu là công cộng."; +$LANG["text_public_view_omit_list_page"] = "Views công cộng cung cấp cho bạn những lợi ích của việc cho phép tất cả các tài khoản khách hàng truy cập chúng mà không cần phải tự ấn định mỗi khách hàng với họ. Trang này cho phép bạn xác định những khách hàng những người có thể không truy cập vào xem cụ thể."; +$LANG["text_reference_tab_info"] = "Trang này liệt kê tất cả các giữ chỗ cho hình thức của bạn. Placeholders là chuỗi có thể được sử dụng trong các mẫu email, và các lĩnh vực được đánh dấu với một biểu tượng giữ chỗ đặc biệt . Khi nhập vào một lĩnh vực, họ được tự động chuyển đổi giá trị thích hợp khi từ trường được xem hoặc email được gửi."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "Xem xét các tài liệu hướng dẫn người sử dụng"; +$LANG["text_send_email_from_edit_submission_page"] = "Bao gồm các tùy chọn để gửi email từ trang Chỉnh sửa Submission"; +$LANG["text_smart_fill_option_list_problem"] = "Chúng tôi không thể để Smart Fill lựa chọn lĩnh vực của bạn. Tuy nhiên, như một thay thế, bạn có thể thử tải lên một bản sao của trang mẫu của bạn trong lĩnh vực dưới đây. Lưu ý: không tải lên các trang liệu PHP (server-side code) - chỉ cần tải phiên bản HTML. Để có được điều này, xem và lưu các trang từ trình duyệt web của bạn."; +$LANG["text_submission_ip_address"] = "Các Địa chỉ IP của người dùng thực hiện việc trình."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "Sử dụng mẫu dưới đây để xem hoặc gửi hoặc là tự mình tạo ra được một email từ email mẫu này. Email này chỉ được gửi đến các email được chỉ định dưới đây; chính, cc và bcc địa chỉ email người nhận sẽ được bỏ qua trong khi thử nghiệm."; +$LANG["text_test_email_templates_no_submissions"] = "Để kiểm tra email của bạn mẫu, trước tiên bạn phải đặt qua ít nhất một trình đơn."; +$LANG["text_theme_page_intro"] = "Trang này liệt kê tất cả các chủ đề của bạn. Click vào hình nhỏ để xem một ví dụ lớn hơn của phong cách của chủ đề. Những "bật" hộp kiểm xác định có hay không chủ đề có thể sẽ được lựa chọn bởi khách hàng. Để trình duyệt tất cả các chủ đề có sẵn, truy cập vào trang web mẫu cụ."; +$LANG["text_tutorial_adding_first_form"] = "Hướng dẫn: Thêm hình thức đầu tiên của bạn!"; +$LANG["text_unique_submission_id"] = "Việc trình duy nhất ID."; +$LANG["text_unused_option_list"] = "Danh sách này lựa chọn là không được sử dụng bởi bất kỳ lĩnh vực hình thức."; +$LANG["text_upgraded"] = "Cài đặt của bạn đã được nâng cấp lên {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "Danh sách lựa chọn được sử dụng bởi các lĩnh vực sau đây."; +$LANG["text_view_fields_info"] = "Tab này điều khiển các trường hiển thị khi chỉnh sửa một trình Xem này, trình tự của họ hay không và họ có thể chỉnh sửa hoặc không."; +$LANG["text_view_tab_summary"] = "Tab này cho phép bạn tạo ra những cách khác nhau để nhóm và sắp xếp dữ liệu của bạn. Xem cho phép bạn tạo ra các tập con tùy chỉnh các dữ liệu mẫu của bạn để chia nó thành nhiều phần quản lý, và để hạn chế những gì khách hàng có thể xem hoặc chỉnh sửa."; +$LANG["validation_account_disabled"] = "Xin lỗi, tài khoản của bạn đã bị vô hiệu hoá."; +$LANG["validation_account_not_recognized"] = "Xin lỗi, tên người dùng mà không được công nhận."; +$LANG["validation_account_not_recognized_info"] = "Xin lỗi, tên người dùng mà không tìm thấy. Hãy thử lại, hoặc liên hệ với quản lý tại địa chỉ dưới đây."; +$LANG["validation_account_pending"] = "Tài khoản người dùng của bạn đang chờ phê duyệt bởi một quản trị viên."; +$LANG["validation_check_delete_client"] = "Bạn có chắc chắn muốn xoá tài khoản khách hàng?"; +$LANG["validation_client_password_missing_number"] = "Các mật khẩu khách hàng phải có ít nhất một số (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "Các mật khẩu khách hàng phải có ít nhất một trong các ký tự sau đây: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "Các mật khẩu khách hàng phải có ít nhất một ký tự hoa."; +$LANG["validation_client_password_too_short"] = "Các mật khẩu khách hàng cần phải được ít nhất {\$number} ký tự."; +$LANG["validation_col_name_is_reserved_word"] = "Xin lỗi, tên này cột cơ sở dữ liệu là một việc làm thuộc vào MySQL. Xin hãy đổi tên nó!"; +$LANG["validation_db_name"] = "Tên cơ sở dữ liệu không được chứa dấu chấm hoặc dấu gạch chéo."; +$LANG["validation_db_not_updated_invalid_input"] = "Cơ sở dữ liệu có thể không được cập nhật. Xin hãy kiểm tra xem các giá trị bạn nhập vào là hợp lệ."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "Xin lỗi, người quản trị mặc định và chủ đề của khách hàng luôn luôn phải được kích hoạt."; +$LANG["validation_default_phone_num_required"] = "Xin vui lòng điền vào số điện thoại đầy đủ <b> { \$ lĩnh vực} </ b> - số."; +$LANG["validation_default_rule_alpha"] = "Xin vui lòng chỉ nhập các chữ cái và số <b> { \$ lĩnh vực} </ b>."; +$LANG["validation_default_rule_letters_only"] = "Xin vui lòng chỉ nhập các chữ cái <b> { \$ lĩnh vực} </ b>."; +$LANG["validation_default_rule_numbers_only"] = "Xin vui lòng chỉ nhập số <b> { \$ lĩnh vực} </ b>."; +$LANG["validation_default_rule_required"] = "Xin vui lòng nhập một giá trị cho {lĩnh vực \$} <b> </ b>."; +$LANG["validation_default_rule_valid_email"] = "Xin vui lòng nhập địa chỉ email hợp lệ cho {lĩnh vực \$} <b> </ b>."; +$LANG["validation_delete_form_confirm"] = "Hãy kiểm tra hộp để xác nhận rằng bạn muốn xoá mẫu này."; +$LANG["validation_delete_non_empty_option_list"] = "Cảnh báo! Danh sách lựa chọn được sử dụng bởi một hoặc nhiều lĩnh vực hình thức. Xóa nó sẽ làm cho các lĩnh vực này không còn hoạt động đúng."; +$LANG["validation_display_names_incomplete"] = "Xin vui lòng nhập một giá trị cho tất cả các Tên Hiển thị, hoặc nhấp vào Smart Điền tùy chọn để nhập chúng năng động."; +$LANG["validation_duplicate_form_field_name"] = "Bạn không thể có nhiều lĩnh vực với cùng một tên trường."; +$LANG["validation_email_not_found_or_invalid"] = "Xin lỗi, email liên kết với tài khoản của bạn, hoặc không tồn tại hoặc không hợp lệ."; +$LANG["validation_folder_invalid_permissions"] = "Để chạy kiểm tra này, các điều khoản cần phải được đặt trên thư mục tải lên cho phép đọc và viết các tập tin (777 trên Unix)."; +$LANG["validation_folder_not_writable"] = "Thư mục này không phải là writeable."; +$LANG["validation_internal_form_too_many_fields"] = "Xin lỗi, bạn chỉ có thể tạo ra các hình thức với 1000 lĩnh vực hoặc ít hơn."; +$LANG["validation_invalid_admin_email"] = "Xin vui lòng nhập địa chỉ email hợp lệ của một adminstrator."; +$LANG["validation_invalid_admin_username"] = "Tên người dùng của bạn chỉ có thể bao gồm các ký tự (AZ, 0-9)."; +$LANG["validation_invalid_client_username"] = "Tên người sử dụng của khách hàng chỉ có thể bao gồm các ký tự (AZ và 0-9)."; +$LANG["validation_invalid_client_username2"] = "Xin lỗi, tên người dùng chỉ có thể chứa chữ cái, chữ số và ký tự gạch dưới. Hãy nhập tên người dùng mới."; +$LANG["validation_invalid_column_name"] = "Tên cột chỉ có thể được chữ và số (AZ, 0-9). Hãy kiểm tra các tên cột."; +$LANG["validation_invalid_custom_from_email"] = "Xin vui lòng nhập một tuỳ chỉnh hợp lệ 'Từ' địa chỉ email."; +$LANG["validation_invalid_custom_reply_to_email"] = "Xin vui lòng nhập một tuỳ chỉnh hợp lệ 'Reply-to' địa chỉ email."; +$LANG["validation_invalid_default_sessions_timeout"] = "Xin vui lòng nhập một giá trị hợp lệ (một số) cho các phiên timeout mặc định."; +$LANG["validation_invalid_email"] = "Xin vui lòng nhập một địa chỉ email hợp lệ."; +$LANG["validation_invalid_email_id"] = "Xin lỗi, đó là một email không hợp lệ ID."; +$LANG["validation_invalid_folder"] = "Xin lỗi, điều này không xuất hiện như một thư mục hợp lệ."; +$LANG["validation_invalid_form_field_names"] = "Các trường mẫu chỉ có thể được chữ số và gạch dưới (AZ, 0-9, _), không có dấu cách."; +$LANG["validation_invalid_num_clients_per_page"] = "Xin vui lòng chỉ nhập số trong các khách hàng Số lần Per Page lĩnh vực."; +$LANG["validation_invalid_num_emails_per_page"] = "Xin vui lòng chỉ nhập chữ số cho các email trên một trang."; +$LANG["validation_invalid_num_form_fields"] = "Xin vui lòng chỉ nhập số trong số lĩnh vực lĩnh vực."; +$LANG["validation_invalid_num_forms_per_page"] = "Xin vui lòng chỉ nhập số trong Forms Số lần Per Page lĩnh vực."; +$LANG["validation_invalid_num_menus_per_page"] = "Xin vui lòng chỉ nhập chữ số cho các trình đơn trên một trang."; +$LANG["validation_invalid_num_modules_per_page"] = "Xin vui lòng chỉ nhập số trong các module Số lần Per Page lĩnh vực."; +$LANG["validation_invalid_num_option_lists_per_page"] = "Xin vui lòng chỉ nhập số trong Danh mục Tùy chọn Num mỗi lĩnh vực trang."; +$LANG["validation_invalid_num_submissions_per_page"] = "Xin vui lòng nhập một số hợp lệ của đệ trình trên một trang."; +$LANG["validation_invalid_sessions_timeout"] = "Xin vui lòng nhập một thời gian chờ phiên hợp lệ (số nguyên duy nhất!)."; +$LANG["validation_invalid_tab_assign_values"] = "Xin vui lòng chỉ nhập số trong 'từ' và 'đến' lĩnh vực."; +$LANG["validation_invalid_table_prefix"] = "Xin vui lòng nhập một tiền tố cơ sở dữ liệu bao gồm chữ cái và ký tự gạch dưới chỉ."; +$LANG["validation_invalid_upload_folder"] = "Máy chủ của bạn cài đặt của PHP có một cài đặt không hợp lệ cho các giá trị upload_tmp_dir. "{\$upload_folder}" không phải là một thư mục hợp lệ."; +$LANG["validation_invalid_url"] = "Xin vui lòng nhập một URL hợp lệ."; +$LANG["validation_invalid_username"] = "Tên đăng nhập của bạn chỉ có thể bao gồm các ký tự (AZ và 0-9)."; +$LANG["validation_is_form_active"] = "Xin vui lòng chỉ ra cho dù dưới hình thức là hoạt động hay không."; +$LANG["validation_menu_name_taken"] = "Xin lỗi, tên này đã được sử dụng trình đơn. Xin vui lòng chọn một tên mới."; +$LANG["validation_modules_search_no_status"] = "Xin vui lòng chọn một trong hai hộp kiểm Enabled hoặc Disabled."; +$LANG["validation_no_access_type"] = "Xin vui lòng nhập các loại truy cập."; +$LANG["validation_no_account_logout_url"] = "Xin nhập vào URL đăng xuất của bạn."; +$LANG["validation_no_account_password_confirmed"] = "Vui lòng nhập lại mật khẩu mới của bạn."; +$LANG["validation_no_account_password_confirmed2"] = "Vui lòng nhập lại mật khẩu mới."; +$LANG["validation_no_admin_email"] = "Xin vui lòng nhập địa chỉ email của quản trị viên."; +$LANG["validation_no_admin_theme"] = "Hãy chọn chủ đề cho tài khoản quản trị viên."; +$LANG["validation_no_admin_theme_swatch"] = "Vui lòng chọn một mẫu màu cho chủ đề quản trị viên."; +$LANG["validation_no_client_email"] = "Xin vui lòng nhập địa chỉ email của khách hàng."; +$LANG["validation_no_client_first_name"] = "Hãy nhập tên của khách hàng."; +$LANG["validation_no_client_last_name"] = "Hãy nhập tên họ của khách hàng."; +$LANG["validation_no_client_login_page"] = "Xin cho biết trang mà khách hàng sẽ được chuyển đến khi họ đăng nhập"; +$LANG["validation_no_client_password"] = "Xin vui lòng nhập mật khẩu của khách hàng."; +$LANG["validation_no_client_theme_swatch"] = "Hãy chọn một mẫu màu mặc định cho các tài khoản khách hàng."; +$LANG["validation_no_client_username"] = "Hãy nhập tên người dùng của khách hàng."; +$LANG["validation_no_column_name"] = "Xin vui lòng nhập tất cả các tên cột, hoặc bấm nút Smart Fill để tự động điền chúng."; +$LANG["validation_no_column_selected"] = "Vui lòng chọn ít nhất một trường để xuất hiện như một cột trên trang danh sách trình."; +$LANG["validation_no_custom_from_email"] = "Xin nhập vào các tuỳ chỉnh 'Từ' địa chỉ email."; +$LANG["validation_no_custom_recipient_email"] = "Xin vui lòng nhập địa chỉ email của người nhận tùy chỉnh."; +$LANG["validation_no_custom_reply_to_email"] = "Hãy nhập 'tuỳ chỉnh Reply-to' địa chỉ email."; +$LANG["validation_no_date_format"] = "Xin nhập vào một định dạng ngày."; +$LANG["validation_no_db_column_single"] = "Xin vui lòng nhập vào tên cột cơ sở dữ liệu."; +$LANG["validation_no_db_hostname"] = "Xin vui lòng nhập tên máy cơ sở dữ liệu."; +$LANG["validation_no_db_name"] = "Xin vui lòng nhập tên cơ sở dữ liệu."; +$LANG["validation_no_db_username"] = "Xin vui lòng nhập tên người dùng tài khoản của cơ sở dữ liệu."; +$LANG["validation_no_default_client_theme"] = "Hãy lựa chọn các chủ đề mặc định cho tất cả các tài khoản khách hàng mới."; +$LANG["validation_no_default_language"] = "Hãy chọn ngôn ngữ mặc định cho trình cài đặt của bạn của Mẫu Công cụ."; +$LANG["validation_no_default_sessions_timeout"] = "Hãy nhập thời gian chờ phiên mặc định cho tài khoản người dùng."; +$LANG["validation_no_display_text"] = "Xin vui lòng nhập Văn bản hiển thị cho từng lĩnh vực."; +$LANG["validation_no_display_text_single"] = "Xin vui lòng nhập giá trị hiển thị văn bản."; +$LANG["validation_no_edit_submission_page_label"] = "Xin nhập vào nhãn chỉnh trang nộp."; +$LANG["validation_no_email"] = "Xin vui lòng nhập địa chỉ email của bạn."; +$LANG["validation_no_email_config_field"] = "Xin vui lòng ghi rõ lĩnh vực hình thức đó là trường email."; +$LANG["validation_no_email_content"] = "Xin nhập nội dung email cho ít nhất một trong các định dạng (HTML hoặc văn bản)."; +$LANG["validation_no_email_from_field"] = "Xin vui lòng email 'từ' trường."; +$LANG["validation_no_email_template_name"] = "Hãy nhập email của tên mẫu."; +$LANG["validation_no_email_template_view_id"] = "Vui lòng chọn xem mà email này mẫu nên được ánh xạ."; +$LANG["validation_no_email_template_view_mapping_value"] = "Xin cho biết khi nào email được gửi đến."; +$LANG["validation_no_enabled_themes"] = "Xin vui lòng đảm bảo rằng ít nhất một chủ đề được kích hoạt."; +$LANG["validation_no_first_name"] = "Hãy nhập tên đầu tiên của bạn."; +$LANG["validation_no_form_field_name"] = "Xin nhập vào tất cả các tên trường mẫu."; +$LANG["validation_no_form_field_single"] = "Xin vui lòng nhập các giá trị trường mẫu."; +$LANG["validation_no_form_id"] = "Các mẫu ID đã không được chỉ định. Xin vui lòng đăng xuất và thử lại."; +$LANG["validation_no_form_name"] = "Hãy nhập tên mẫu."; +$LANG["validation_no_form_url"] = "Xin vui lòng nhập URL mẫu."; +$LANG["validation_no_last_name"] = "Hãy nhập tên cuối cùng của bạn."; +$LANG["validation_no_login_page"] = "Xin vui lòng chỉ ra trang nào bạn muốn được gửi mỗi khi bạn đăng nhập"; +$LANG["validation_no_logout_url"] = "Xin vui lòng nhập URL logout."; +$LANG["validation_no_main_email_recipient"] = "Hãy nhập ít nhất một người nhận email chính (tức là không phải là một cc hay bcc)."; +$LANG["validation_no_menu"] = "Hãy chọn một trình đơn cho tài khoản người dùng."; +$LANG["validation_no_menu_id"] = "Hãy chọn một trình đơn."; +$LANG["validation_no_num_clients_per_page"] = "Xin vui lòng nhập số tài khoản khách hàng trên mỗi trang."; +$LANG["validation_no_num_emails_per_page"] = "Xin vui lòng nhập số lượng email vào danh sách trên một trang."; +$LANG["validation_no_num_form_fields"] = "Xin vui lòng nhập các số lĩnh vực về hình thức của bạn."; +$LANG["validation_no_num_forms_per_page"] = "Xin vui lòng nhập số lượng các hình thức trên một trang."; +$LANG["validation_no_num_menus_per_page"] = "Xin vui lòng nhập số lượng đơn vào danh sách trên một trang."; +$LANG["validation_no_num_modules_per_page"] = "Xin vui lòng nhập số lượng các module trên một trang."; +$LANG["validation_no_num_option_lists_per_page"] = "Xin vui lòng nhập số của danh sách lựa chọn trên một trang."; +$LANG["validation_no_num_submissions_per_page"] = "Xin vui lòng nhập số lượng các bản đệ trình để hiển thị trên một trang."; +$LANG["validation_no_option_list_name"] = "Xin vui lòng nhập vào tên danh sách tùy chọn."; +$LANG["validation_no_page_titles"] = "Hãy nhập tên trang mặc định cho các tài khoản người dùng."; +$LANG["validation_no_password"] = "Xin vui lòng nhập mật khẩu của bạn."; +$LANG["validation_no_program_name"] = "Vui lòng nhập vào tên chương trình."; +$LANG["validation_no_second_password"] = "Vui lòng nhập lại mật khẩu của bạn."; +$LANG["validation_no_sessions_timeout"] = "Hãy nhập thời gian chờ phiên."; +$LANG["validation_no_smart_fill_values"] = "Hãy nhập tên và trường mẫu URL của biểu mẫu."; +$LANG["validation_no_table_prefix"] = "Xin vui lòng nhập một tiền tố cơ sở dữ liệu."; +$LANG["validation_no_tabs_defined"] = "Không có các tab được định nghĩa"; +$LANG["validation_no_test_email_recipient"] = "Xin vui lòng nhập địa chỉ email của nơi mà chúng tôi cần gửi email thử nghiệm."; +$LANG["validation_no_test_email_submission_id"] = "Xin nhập vào việc trình số ID."; +$LANG["validation_no_theme"] = "Hãy chọn một chủ đề."; +$LANG["validation_no_theme_swatch"] = "Hãy chọn một mẫu màu cho các chủ đề được lựa chọn."; +$LANG["validation_no_timezone_offset"] = "Xin nhập vào các múi giờ bù đắp."; +$LANG["validation_no_titles"] = "Hãy nhập tên trang."; +$LANG["validation_no_two_column_names"] = "Xin lỗi, bạn không thể nhập tên cơ sở dữ liệu cùng một cột hai lần."; +$LANG["validation_no_ui_language"] = "Hãy lựa chọn một ngôn ngữ cho giao diện."; +$LANG["validation_no_url"] = "Xin vui lòng nhập một URL."; +$LANG["validation_no_username"] = "Hãy nhập tên người dùng của bạn."; +$LANG["validation_no_username_or_js"] = "Bạn phải nhập tên người dùng của bạn. Xin vui lòng kích hoạt javascript trong trình duyệt của bạn."; +$LANG["validation_no_view_fields"] = "Xem của bạn không chứa bất kỳ lĩnh vực! Bạn cần phải gán ít nhất một trường để có được một cái gì đó để hiển thị trong View của bạn."; +$LANG["validation_no_view_fields_selected"] = "Hãy lựa chọn một hoặc nhiều lĩnh vực để thêm vào xem."; +$LANG["validation_no_view_name"] = "Hãy nhập tên của xem của bạn."; +$LANG["validation_num_rows_to_add"] = "Xin vui lòng nhập số hàng để thêm."; +$LANG["validation_option_list_name_taken"] = "Xin lỗi, danh sách tùy chọn tên này đã được thực hiện. Vui lòng chọn một tên mới."; +$LANG["validation_password_in_password_history"] = "Để bảo mật, bạn không thể nhập mật khẩu giống như bất kỳ các <b> cuối {\$history_size} mật khẩu. Xin vui lòng nhập một mật khẩu khác nhau."; +$LANG["validation_passwords_different"] = "Hãy bảo đảm rằng mật khẩu là như nhau."; +$LANG["validation_please_enter_search_date_range"] = "Vui lòng chọn phạm vi ngày tìm kiếm."; +$LANG["validation_please_enter_search_keyword"] = "Hãy nhập từ khóa tìm kiếm."; +$LANG["validation_select_field_type"] = "Hãy lựa chọn một loại trường."; +$LANG["validation_select_submissions_to_copy"] = "Vui lòng chọn những nội dung gửi mà bạn muốn sao chép."; +$LANG["validation_select_submissions_to_delete"] = "Hãy lựa chọn những bản đệ trình mà bạn muốn xóa."; +$LANG["validation_smart_fill_cannot_fill"] = "Xin lỗi, chúng tôi không thể điền vào trường này."; +$LANG["validation_smart_fill_invalid_field_type"] = "Chúng tôi không thể xác định vị trí một lĩnh vực, nhưng nó không phải là một thả xuống, hộp hoặc nhóm phát thanh."; +$LANG["validation_smart_fill_no_field_found"] = "Xin lỗi, chúng tôi không thể tìm thấy một trường mẫu với tên trên trang được chỉ định."; +$LANG["validation_smart_fill_no_page"] = "Xin vui lòng xác định vị trí trang chứa các lĩnh vực mà bạn muốn Smart Điền."; +$LANG["validation_smart_fill_upload_all_pages"] = "Xin vui lòng tải lên tất cả các trang trong các mẫu của bạn."; +$LANG["validation_upload_folder_not_writable"] = "Tải lên thư mục này tạm thời chỉ định bởi trình cài đặt PHP của bạn không được phép ghi. Cho đến khi điều này là cố định, các tập tin không thể được tải lên thông qua mẫu cụ (hoặc bất kỳ chương trình PHP khác). Xin vui lòng liên hệ với nhà cung cấp hosting."; +$LANG["validation_upload_html_files_only"] = "Xin vui lòng chỉ tải lên các tập tin HTML."; +$LANG["validation_username_taken"] = "Xin lỗi, tên người dùng đó đã được sử dụng. Hãy nhập tên người dùng khác."; +$LANG["validation_wrong_password"] = "Xin lỗi, rằng mật khẩu không khớp."; +$LANG["word_about"] = "Về"; +$LANG["word_access"] = "Truy cập"; +$LANG["word_account"] = "Tài khoản"; +$LANG["word_account_sp"] = "Tài khoản (s)"; +$LANG["word_accounts"] = "Tài khoản"; +$LANG["word_action"] = "Hành động"; +$LANG["word_active"] = "Active"; +$LANG["word_add"] = "Thêm"; +$LANG["word_add_rightarrow"] = "Thêm »"; +$LANG["word_add_uc_rightarrow"] = "ADD »"; +$LANG["word_administration"] = "Hành chính"; +$LANG["word_administrator"] = "Quản trị viên"; +$LANG["word_after"] = "Sau khi"; +$LANG["word_aquamarine"] = "Lục ngọc"; +$LANG["word_asc"] = "Tăng dần"; +$LANG["word_author"] = "Tác giả"; +$LANG["word_author_c"] = "Tác giả:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«trở lại"; +$LANG["word_bcc_c"] = "Bcc:"; +$LANG["word_before"] = "Trước khi"; +$LANG["word_benefits"] = "Lợi ích"; +$LANG["word_blue"] = "Màu xanh"; +$LANG["word_cancel"] = "Hủy bỏ"; +$LANG["word_cc_c"] = "Đồng gửi:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "Hộp kiểm tra"; +$LANG["word_checklist"] = "Danh sách kiểm tra"; +$LANG["word_client"] = "Khách hàng"; +$LANG["word_client_c"] = "Khách hàng:"; +$LANG["word_clients"] = "Khách hàng"; +$LANG["word_close"] = "Đóng"; +$LANG["word_code"] = "Mã số"; +$LANG["word_column"] = "Cột"; +$LANG["word_columns"] = "Cột"; +$LANG["word_columns_sp"] = "Cột (s)"; +$LANG["word_complete"] = "Hoàn thành"; +$LANG["word_configuration"] = "Cấu hình"; +$LANG["word_content"] = "Nội dung"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "Tiếp tục »"; +$LANG["word_copy"] = "Sao chép"; +$LANG["word_custom"] = "Phong tục"; +$LANG["word_data"] = "Dữ liệu"; +$LANG["word_date"] = "Ngày"; +$LANG["word_debugging_c"] = "Gỡ lỗi:"; +$LANG["word_delete"] = "Xoá"; +$LANG["word_desc"] = "Giảm dần"; +$LANG["word_direct"] = "Trực tiếp"; +$LANG["word_disabled"] = "Đình chỉ"; +$LANG["word_documentation"] = "Tài liệu"; +$LANG["word_done"] = "Thực hiện"; +$LANG["word_drawbacks"] = "Hạn chế"; +$LANG["word_dropdown"] = "Thả xuống"; +$LANG["word_edit"] = "Chỉnh sửa"; +$LANG["word_editable"] = "Editable"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "Email"; +$LANG["word_enabled"] = "Bật"; +$LANG["word_equals"] = "Bằng"; +$LANG["word_error"] = "Lỗi"; +$LANG["word_error_c"] = "Lỗi:"; +$LANG["word_examples_c"] = "Ví dụ:"; +$LANG["word_external"] = "Bên ngoài"; +$LANG["word_fail"] = "Thất bại"; +$LANG["word_field"] = "Cánh đồng"; +$LANG["word_field_sp"] = "Lĩnh vực (s)"; +$LANG["word_fields"] = "Các lĩnh vực"; +$LANG["word_fields_sp"] = "Field ()"; +$LANG["word_file"] = "Tệp"; +$LANG["word_file_b_uc"] = "[FILE]"; +$LANG["word_files"] = "Tệp tin"; +$LANG["word_filters"] = "Bộ lọc"; +$LANG["word_filters_sp"] = "Filter ()"; +$LANG["word_for"] = "vì"; +$LANG["word_form"] = "Mẫu"; +$LANG["word_form_c"] = "Mẫu:"; +$LANG["word_formatting"] = "Định dạng"; +$LANG["word_forms"] = "Hình thức"; +$LANG["word_found"] = "Được tìm ra"; +$LANG["word_from"] = "Từ"; +$LANG["word_from_c"] = "Từ:"; +$LANG["word_general"] = "Tổng"; +$LANG["word_green"] = "Xanh"; +$LANG["word_grey"] = "Màu xám"; +$LANG["word_height"] = "Cao"; +$LANG["word_help"] = "Trợ giúp"; +$LANG["word_hidden"] = "Ẩn"; +$LANG["word_highlight"] = "Đánh dấu"; +$LANG["word_horizontal"] = "Ngang"; +$LANG["word_hour"] = "Giờ"; +$LANG["word_hours"] = "Giờ"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "Hình"; +$LANG["word_incomplete"] = "Không đầy đủ"; +$LANG["word_install"] = "Cài đặt"; +$LANG["word_installation"] = "Cài đặt"; +$LANG["word_internal"] = "Nội bộ"; +$LANG["word_language"] = "Ngôn ngữ"; +$LANG["word_large"] = "Lớn"; +$LANG["word_like"] = "Thích"; +$LANG["word_login"] = "Đăng nhập"; +$LANG["word_logo"] = "Logo"; +$LANG["word_logout"] = "Thoát"; +$LANG["word_main"] = "Chính"; +$LANG["word_medium"] = "Trung bình"; +$LANG["word_menu"] = "Menu"; +$LANG["word_menus"] = "Thực đơn"; +$LANG["word_minutes"] = "phút"; +$LANG["word_misc"] = "Misc"; +$LANG["word_module"] = "Module"; +$LANG["word_modules"] = "Modules"; +$LANG["word_na"] = "N / A"; +$LANG["word_name"] = "Tên"; +$LANG["word_name_c"] = "Tên:"; +$LANG["word_never"] = "Không bao giờ"; +$LANG["word_next_rightarrow"] = "kế tiếp »"; +$LANG["word_next_step_rightarrow"] = "NEXT STEP »"; +$LANG["word_no"] = "Không"; +$LANG["word_none"] = "Không cái nào"; +$LANG["word_notes"] = "Ghi chú"; +$LANG["word_notification"] = "Thông báo"; +$LANG["word_number"] = "Số"; +$LANG["word_off"] = "Khỏi"; +$LANG["word_offline"] = "Offline"; +$LANG["word_okay"] = "Được rồi"; +$LANG["word_on"] = "Trên"; +$LANG["word_online"] = "Trực tuyến"; +$LANG["word_operator"] = "Điều Hành"; +$LANG["word_options"] = "Tùy chọn"; +$LANG["word_orange"] = "Orange"; +$LANG["word_order"] = "Sắp xếp"; +$LANG["word_other"] = "Khác"; +$LANG["word_other_c"] = "Other:"; +$LANG["word_page"] = "Trang"; +$LANG["word_page_c"] = "Trang:"; +$LANG["word_pass"] = "Pass"; +$LANG["word_password"] = "Mật khẩu"; +$LANG["word_password_c"] = "Mật khẩu:"; +$LANG["word_pending"] = "Đang treo"; +$LANG["word_permissions"] = "Permissions"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«trước"; +$LANG["word_private"] = "Tư nhân"; +$LANG["word_public"] = "Công cộng"; +$LANG["word_purple"] = "Màu tím"; +$LANG["word_recipient"] = "Người nhận"; +$LANG["word_recipient_sp"] = "Người nhận (s)"; +$LANG["word_red"] = "Red"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "Loại bỏ"; +$LANG["word_remove_uc_leftarrow"] = "«BỎ"; +$LANG["word_reply_to"] = "Reply-to"; +$LANG["word_reply_to_c"] = "Reply-to:"; +$LANG["word_required"] = "Yêu cầu"; +$LANG["word_reset"] = "Reset"; +$LANG["word_resolved"] = "Giải quyết"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "hàng"; +$LANG["word_search"] = "Tìm kiếm"; +$LANG["word_searchable"] = "Tìm kiếm"; +$LANG["word_select"] = "Chọn"; +$LANG["word_setting"] = "Cài đặt"; +$LANG["word_settings"] = "Cài đặt"; +$LANG["word_show"] = "Chỉ ra"; +$LANG["word_size"] = "Kích thước"; +$LANG["word_skipped"] = "Bỏ qua"; +$LANG["word_small"] = "Nhỏ"; +$LANG["word_solution"] = "Giải pháp"; +$LANG["word_sortable"] = "Sắp xếp"; +$LANG["word_start"] = "Bắt đầu"; +$LANG["word_status"] = "Tình trạng"; +$LANG["word_string"] = "String"; +$LANG["word_subject"] = "Chủ ngữ"; +$LANG["word_subject_c"] = "Chủ ngữ"; +$LANG["word_submenu"] = "Menu con"; +$LANG["word_submission"] = "Submission"; +$LANG["word_submissions"] = "Submissions"; +$LANG["word_system"] = "Hệ thống"; +$LANG["word_tab"] = "Tab"; +$LANG["word_tabs"] = "Tabs"; +$LANG["word_tabs_sp"] = "Tab (s)"; +$LANG["word_test"] = "Kiểm tra"; +$LANG["word_text"] = "Văn bản"; +$LANG["word_textarea"] = "Textarea"; +$LANG["word_textbox"] = "Textbox"; +$LANG["word_theme"] = "Chủ đề"; +$LANG["word_themes"] = "Chủ đề"; +$LANG["word_time"] = "Thời gian"; +$LANG["word_tiny"] = "Tiny"; +$LANG["word_tips"] = "Mẹo"; +$LANG["word_today"] = "Hôm nay"; +$LANG["word_truncate_q"] = "Cắt?"; +$LANG["word_uninstall"] = "Gỡ bỏ"; +$LANG["word_unknown"] = "Không biết"; +$LANG["word_update"] = "Cập nhật"; +$LANG["word_upgrade"] = "Nâng cấp"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "Người dùng"; +$LANG["word_username"] = "Tên đăng nhập"; +$LANG["word_username_c"] = "Tên đăng nhập:"; +$LANG["word_validation"] = "Xác nhận"; +$LANG["word_value"] = "Giá trị"; +$LANG["word_value_sp"] = "Value (s)"; +$LANG["word_verified"] = "Xác minh"; +$LANG["word_verify"] = "Xác minh"; +$LANG["word_version"] = "Phiên bản"; +$LANG["word_vertical"] = "Dọc"; +$LANG["word_view"] = "Xem"; +$LANG["word_views"] = "Views"; +$LANG["word_warning"] = "Cảnh báo!"; +$LANG["word_warning_c"] = "Cảnh báo:"; +$LANG["word_web"] = "Web"; +$LANG["word_welcome"] = "Chào mừng!"; +$LANG["word_width_c"] = "chiều rộng:"; +$LANG["word_words"] = "Words"; +$LANG["word_wysiwyg"] = "WYSIWYG"; +$LANG["word_yellow"] = "Vàng"; +$LANG["word_yes"] = "Có"; \ No newline at end of file diff --git a/global/lang/yi.php b/global/lang/yi.php new file mode 100644 index 00000000..630cea0d --- /dev/null +++ b/global/lang/yi.php @@ -0,0 +1,1219 @@ +ווארענונג! איר האָט סעלעקטעד {\$num_selected_on_page} סאַבמישאַנז אויף דעם בלאַט און {\$num_selected_on_other_pages} אויף אנדערע בלעטער. ביטע קלייַבן איינער פון די ווייַטערדיקע אָפּציעס:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "ווארענונג! איר האָט נישט סעלעקטעד קיין סאַבמישאַנז אויף דעם בלאַט אָבער איר'ווע סעלעקטעד {\$num_selected_on_other_pages} אויף אנדערע בלעטער. ביטע באַשטעטיקן איר ווילן צו ויסמעקן די סאַבמישאַנז.
    "; +$LANG["confirm_delete_view"] = "זענט איר זיכער איר ווילן צו ויסמעקן דעם View?"; +$LANG["confirm_refresh_page"] = "ביסט איר זיכער איר ווילן צו דערפרישן די בלאַט? דעם וועט פאַרלירן קיין ענדערונגען איר האָבן געמאכט."; +$LANG["confirm_save_change_before_redirect"] = "איינער אָדער מער פעלדער האָבן שוין דערהייַנטיקט. וואָלט איר ווי צו ראַטעווען דיין ענדערונגען איידער רידערעקטינג?"; +$LANG["confirm_smart_fill_db_column_fields"] = "זענט איר זיכער איר ווילן צו סמאַרט פיל די דאַטאַבייס זייל נעמען? דאָס וועט אָווועררייט דיין יגזיסטינג וואַלועס."; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "דעם אָפּציע אַוטאָ-דזשענערייץ די דייטאַבייס זייַל נעמען באזירט אויף דער ווייַז טעקסט פעלדער, אַזוי די תּוכן פון די דייטאַבייס טיש זענען גרינגער צו לייענען."; +$LANG["confirm_smart_fill_display_names"] = "זענט איר זיכער איר ווילן צו סמאַרט פיל דעם ווייַז נעמען? דאָס וועט אָווועררייט דיין יגזיסטינג וואַלועס."; +$LANG["confirm_ungroup_option_list"] = "ביסט איר זיכער איר ווילן צו ונגראָופּ דעם אָפּציע רשימה? אַלע אָפּציעס וועט זיין לאַמפּט אין אַ איין, ונגראָופּעד רשימה."; +$LANG["confirm_uninstall_module"] = "זענט איר זיכער איר ווילן צו נעם אַוועק דעם מאָדולע? כל מאָדולע דאַטן וועט זיין פאַרלאָרן."; +$LANG["date_AM"] = "בין"; +$LANG["date_Fri"] = "פרי"; +$LANG["date_Friday"] = "פרייטיק"; +$LANG["date_Mon"] = "מאָן"; +$LANG["date_Monday"] = "מאנטאג"; +$LANG["date_PM"] = "פּם"; +$LANG["date_Sat"] = "סאַט"; +$LANG["date_Saturday"] = "שבת"; +$LANG["date_Sun"] = "זון"; +$LANG["date_Sunday"] = "זונטיק"; +$LANG["date_Thu"] = "טהו"; +$LANG["date_Thursday"] = "דאנערשטיק"; +$LANG["date_Tue"] = "טו"; +$LANG["date_Tuesday"] = "דינסטאג"; +$LANG["date_Wed"] = "וועד"; +$LANG["date_Wednesday"] = "מיטוואך"; +$LANG["date_am"] = "בין"; +$LANG["date_month_April"] = "אפריל"; +$LANG["date_month_August"] = "אויגוסט"; +$LANG["date_month_December"] = "דעצעמבער"; +$LANG["date_month_February"] = "פעברואר"; +$LANG["date_month_January"] = "יאנואר"; +$LANG["date_month_July"] = "יולי"; +$LANG["date_month_June"] = "יוני"; +$LANG["date_month_March"] = "מאַרץ"; +$LANG["date_month_May"] = "מיי"; +$LANG["date_month_November"] = "נאוועמבער"; +$LANG["date_month_October"] = "אקטאבער"; +$LANG["date_month_September"] = "סעפטעמבער"; +$LANG["date_month_short_Apr"] = "אפריל"; +$LANG["date_month_short_Aug"] = "אויגוסט"; +$LANG["date_month_short_Dec"] = "דעצעמבער"; +$LANG["date_month_short_Feb"] = "פעברואר"; +$LANG["date_month_short_Jan"] = "יאַן"; +$LANG["date_month_short_Jul"] = "יולי"; +$LANG["date_month_short_Jun"] = "יוני"; +$LANG["date_month_short_Mar"] = "Mar"; +$LANG["date_month_short_May"] = "מיי"; +$LANG["date_month_short_Nov"] = "נאוועמבער"; +$LANG["date_month_short_Oct"] = "אקטאבער"; +$LANG["date_month_short_Sep"] = "סעפטעמבער"; +$LANG["date_pm"] = "פּם"; +$LANG["notify_account_deleted"] = "דער באַניצער קאָנטע איז געווארן אויסגעמעקט."; +$LANG["notify_account_updated"] = "דיין אקאונט איז געווארן הצלחה אפדעיטעד."; +$LANG["notify_add_display_values"] = "לייג ווייַז וואַלועס"; +$LANG["notify_admin_menu_updated"] = "די אַדמיניסטראַציע מעניו איז געווארן אפדעיטעד."; +$LANG["notify_admin_theme_overridden"] = "דער אַדמיניסטראַטאָר ס טעמע האט שוין מאַניואַלי אָווועררידאַן."; +$LANG["notify_allow_url_fopen_not_set"] = "אנטשולדיגט, דאָס פּרובירן קען נישט זיין לויפן אויף דיין וועב סערווער. עס ריקוויירז אַללאָוו_ורל_פאָפּען צו ווערן באַשטימט צו 1 אין דיין פפּ.יני טעקע. דאָס באַשטעטיקן לאָזן פפּ צו אַקסעס טעקעס דורך אַ URL, וואָס איז נעעדעד צו ויספירן די פּראָבע. איר קענט פּרובירן דאָס מאַניואַלי דורך ופּלאָאַדינג אַ טעקע צו אַז טעקע דורך פטפּ, דאַן טריינג צו אַקסעס עס ביי די URL איר האָט סאַפּלייד."; +$LANG["notify_change_temp_password"] = "איר פּונקט לאָגד אין מיט אַ צייַטווייַליק פּאַראָל. איר זאָל באַשטעטיק אייער פּאַראָל איצט!"; +$LANG["notify_click_to_edit_new_submission"] = "דריקט דאָ צו רעדאַגירן די נייַ סאַבמישאַן."; +$LANG["notify_client_account_menus_updated"] = "דער קליענט רעגיסטרירן (s) האָבן שוין דערהייַנטיקט צו דעם {\$menu_name} מעניו. מעגט איר איצט ויסמעקן די מעניו וואָס איז געווען ביז אַהער אַסאָושיייטאַד מיט דער קאָנטע (s)."; +$LANG["notify_client_account_not_updated"] = "דער קליענט רעגיסטרירן קען נישט ווערן אפדעיטעד."; +$LANG["notify_client_account_themes_updated"] = "דער קליענט רעגיסטרירן (s) האָבן שוין דערהייַנטיקט צו דעם {\$theme} טעמע. מעגט איר איצט דיסייבאַל די טעמע ביז אַהער אַסאָושיייטאַד מיט דער קאָנטע (s)."; +$LANG["notify_client_account_updated"] = "דער קליענט קאָנטע איז געווארן הצלחה אפדעיטעד."; +$LANG["notify_client_menu_deleted"] = "דער קליענט מעניו איז געווארן אויסגעמעקט."; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "די מעניו איז געווארן אויסגעמעקט, אָבער די פאלגענדע קליענט אַקאַונץ איצט קיין לאָנגער האָבן אַ מעניו! איר דאַרפֿן צו דערהייַנטיקן די פאלגענדע אַקאַונץ:"; +$LANG["notify_client_menu_updated"] = "דער קליענט מעניו איז געווארן אפדעיטעד."; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "אנטשולדיגט, "די מעניו איר פּונקט טרייד צו ויסמעקן איז שוין בעינג גענוצט דורך די קלייאַנץ ליסטעד אונטן. אויף כּדי צו ויסמעקן די מעניו איר וועט ערשט דאַרפֿן צו באַשטימען דעם קלייאַנץ צו אנדערע מעניוז. קליקט אויף דעם קליענט נאָמען צו ענדערן אַז פּערזענלעך אקאונט, אָדער באַשטימען אַלע אַקאַונץ צו אַ אַנדערע מעניו מיט די דראָפּדאָוון אונטן."; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "אנטשולדיגט, איינער פון די טימז איר פּונקט פאַרקריפּלט זענען שוין בעינג גענוצט דורך די פאלגענדע קליענט אַקאַונץ. אויף כּדי צו דיסייבאַל די טעמע איר וועט ערשט דאַרפֿן צו באַשטימען יעדער קליענט צו אַנדערער טעמע. קליקט אויף דעם קליענט נאָמען צו ענדערן אַז פּערזענלעך אקאונט, אָדער באַשטימען אַלע אַקאַונץ צו אַ טעמע ניצן די דראָפּדאָוון אונטן."; +$LANG["notify_edit_email_fields_link"] = "דריקט דאָ צו ספּעציפיצירן וועלכע פֿאָרמירן פעלדער זענען email פעלדער, אַזוי איר קענען ציל זיי אין אייער email טעמפּלאַטעס."; +$LANG["notify_edit_field_new_field"] = "דעם איז אַ נייע פעלד. איר וועט דאַרפֿן צו דערהייַנטיקן די הויפּט בלאַט איידער זייַענדיק קענען צו גאָר רעדאַגירן דעם פעלד."; +$LANG["notify_edit_option_list_after_save"] = "איר מוזן אויסקלייַבן אַ אַפּשאַן ליסטע און דערנאך היט טשאַנגעס איידער זייַענדיק קענען צו רעדאַגירן עס."; +$LANG["notify_email_field_config_deleted"] = "דער בליצפּאָסט קאַנפיגיעריישאַן האט שוין אויסגעמעקט."; +$LANG["notify_email_fields_not_updated"] = "זייַט מוחל, מיר קען נישט דערהייַנטיקן דעם בליצפּאָסט פיעלדס."; +$LANG["notify_email_fields_updated"] = "דער בליצפּאָסט פיעלדס האָבן שוין אפדעיטעד."; +$LANG["notify_email_not_sent"] = "אנטשולדיגט, דער בליצפּאָסט קען נישט ווערן געשיקט. ביטע קאָנטאַקט די מאַפּע אַדמיניסטראַטאָר ביי די אַדרעס אונטן."; +$LANG["notify_email_not_sent_c"] = "אנטשולדיגט, דער email קען ניט ווערן געשיקט:"; +$LANG["notify_email_sent"] = "דער בליצפּאָסט (s) האָבן שוין געשיקט."; +$LANG["notify_email_template_deleted"] = "דער בליצפּאָסט מוסטער איז געווארן אויסגעמעקט."; +$LANG["notify_email_template_updated"] = "דער בליצפּאָסט מוסטער איז געווארן אפדעיטעד."; +$LANG["notify_enabled_module_list_updated"] = "די רשימה פון ינייבאַלד מאַדזשולז איז געווארן אפדעיטעד."; +$LANG["notify_error_saving_fields"] = "עס איז געווען אַ טעות שפּאָרן די פעלדער."; +$LANG["notify_field_changes_saved"] = "די ענדערונגען צו דיין פעלד (s) האָבן שוין געהאלפן."; +$LANG["notify_field_options_smart_filled"] = "דיין פעלד אָפּציעס האָבן שוין סמאַרט פילד."; +$LANG["notify_field_selected"] = "די פעלד איז געווארן סעלעקטעד. דריקט דאָ צו צוריק צו די ערשטע פעלד רשימה."; +$LANG["notify_field_updated"] = "דאָס פעלד איז געווארן אפדעיטעד."; +$LANG["notify_file_not_uploaded"] = "די פייל קען נישט זיין ופּלאָאַדעד."; +$LANG["notify_file_uploaded"] = "די פייל איז הצלחה ופּלאָאַדעד."; +$LANG["notify_filters_not_updated"] = "עס איז געווען אַ טעות אַפּדייטינג דעם קליענט ס סאַבמישאַן פילטערס."; +$LANG["notify_filters_updated"] = "די סאַבמישאַן פילטערס האָבן שוין דערהייַנטיקט פֿאַר דעם קליענט."; +$LANG["notify_folder_correct_permissions"] = "דער טעקע האט דער ריכטיק פּערמישאַנז."; +$LANG["notify_folder_url_match"] = "דער טעקע און URL ווייזן צו ריכטיקן געטראָפֿן."; +$LANG["notify_folder_url_no_access"] = "דאָס פּרובירן קען נישט זיין פּערפאָרמד זינט פפּ איז ניט געקענט צו אַקסעס אַז URL. דאָס איז יוזשאַוואַלי גורם ביי די URL בעינג שפּריכוואָרט פּראָטעקטעד מיט אַ. הטאַקסעסס טעקע."; +$LANG["notify_folder_url_no_match"] = "דער טעקע-URL קאָמבינאַציע קען נישט באַווייזן צו זיין אַ גלייכן."; +$LANG["notify_folder_url_unknown_error"] = "אַן אומבאַקאַנט טעות אַקערד. איר קענט פּרובירן דאָס מאַניואַלי דורך ופּלאָאַדינג אַ טעקע צו אַז טעקע דורך פטפּ, דאַן טריינג צו אַקסעס עס ביי די URL איר האָט סאַפּלייד."; +$LANG["notify_form_access_type_email_info"] = "דעם פאָרעם האט אַדמיניסטראַטאָר צוטריט טיפּ, אַזוי ניט קלייאַנץ האָבן צוטריט צו עס און זענען ניט ליסטעד אין די דראָפּדאָוון ונטער."; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "אנטשולדיגט, אַ פאָרעם מיט וואָס שייַן טוט ניט עקזיסטירן."; +$LANG["notify_form_field_not_added"] = "די פאָרעם פעלד '{\$fieldname}'קען נישט זיין צוגעלייגט."; +$LANG["notify_form_field_options_updated"] = "די פאָרעם פעלד אָפּציעס האָבן שוין אפדעיטעד."; +$LANG["notify_form_field_removed"] = "די פאָרעם פעלד איז געווען א הצלחה אראפגענומען."; +$LANG["notify_form_fields_removed"] = "די פאָרעם פיעלדס געווען הצלחה אראפגענומען."; +$LANG["notify_form_not_updated_notify_admin"] = "דיין פאָרמע קען נישט ווערן אפדעיטעד. ביטע קאָנטאַקט די מאַפּע אַדמיניסטראַטאָר צו באַריכט דעם פּראָבלעם."; +$LANG["notify_form_settings_updated"] = "דיין פאָרמע סעטטינגס האָבן שוין דערהייַנטיקט הצלחה."; +$LANG["notify_form_submission_updated"] = "די פאָרעם סאַבמישאַן איז געווארן אפדעיטעד."; +$LANG["notify_form_tabs_updated"] = "די טאַבס דאַרפן געווארן אפדעיטעד."; +$LANG["notify_form_updated"] = "די פאָרעם איז געווארן הצלחה אפדעיטעד."; +$LANG["notify_form_views_updated"] = "די פאָרעם קוקן האָבן שוין דערהייַנטיקט."; +$LANG["notify_install_invalid_db_info"] = "זייַט מוחל, מיר האָט ניט געקענט צו פאַרבינדן צו די דאַטאַבייס ניצן די אינפֿאָרמאַציע איר סאַפּלייד. דער טעות אָנזאָג די דאַטאַבייס אומגעקערט איז: {\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "דיין פאָרמע האט באשאפן געווארן! איר קענען קאַנפיגיער אייער פאָרמע דורך די טאַבס."; +$LANG["notify_invalid_account_information_in_sessions"] = "די אקאונט אינפֿאָרמאַציע סטאָרד אין סעשאַנז איז פאַרקריפּלט. ביטע אַרייַנלאָגירן אין ווידער אונטן."; +$LANG["notify_invalid_license_key"] = "אנטשולדיגט, וואס טוט ניט דערשייַנען צו ווערן אַ גילטיק דערלויבעניש שליסל. ביטע פּרובירן קומט עס ווידער."; +$LANG["notify_invalid_permissions"] = "איר טאָן ניט האָבן דעם פּערמישאַנז צו אַקסעס דעם בלאַט. איר האָט שוין לאָגד זיך."; +$LANG["notify_invalid_search_dates"] = "ביטע ניצן די דאַטעפּיקקער צו אַרייַן אַ גילטיק דאַטע אָדער דאַטעס."; +$LANG["notify_invalid_upload_folder"] = "די צופֿעליקער טעקע איז אָדער פאַרקריפּלט אָדער איז נישט ווריטאַבלע."; +$LANG["notify_lang_list_updated"] = "די בארעכטיגט וי שפּראַך רשימה איז געווארן אפדעיטעד."; +$LANG["notify_login_info_emailed"] = "דיין לאָגין אינפֿאָרמאַציע איז געווארן ימיילד צו איר."; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "אָאָפּס, דעם מאָדולע איז שוין אינסטאַלירן!"; +$LANG["notify_module_installed"] = "די מאָדולע האט מען אינסטאַלירן. דריקט דאָ צו סעלעקטירן דעם מאָדולע."; +$LANG["notify_module_list_updated"] = "די מאָדולע רשימה איז געווארן אפדעיטעד."; +$LANG["notify_module_uninstalled"] = "די מאָדולע איז געווארן ונינסטאַללעד."; +$LANG["notify_module_updated"] = "די {\$module} מאָדולע איז דערהייַנטיקט צו {\$version}. דריקט דאָ צו אויסקלייַבן דעם מאָדולע ."; +$LANG["notify_multi_field_selected"] = "די פעלד איז געווארן סעלעקטעד. דריקט דאָ צו זען און רעדאַגירן דעם פעלד אָפּציעס."; +$LANG["notify_multi_field_updated"] = "דאָס פעלד איז געווארן אפדעיטעד. איר וועט זיין קענען צו קאַנפיגיער דעם פעלד אָפּציעס נאָך באַשטעטיקן זיך די פאָרעם."; +$LANG["notify_multiple_fields_found"] = "קייפל עלאַמאַנץ האָט געפֿונען מיט דעם פעלד נאָמען ({\$field_name}). דאָס קען פּאַסירן אויב דיין בלאַט כּולל מער ווי איין פאָרעם אָדער אויב איר אַקסאַדענטאַלי ניימד איינער פון דיין פאָרמס דער זעלביקער ווי נאָך. ביטע קלייַבן די איין איר ווילט פֿון דער רשימה אונטן."; +$LANG["notify_new_default_view_created"] = "א נייַ, ניט ויסצאָלן View מיט אַלע אייערע פאָרמע פעלדער האט באשאפן געווארן."; +$LANG["notify_new_submission_created"] = "די סאַבמישאַן האט באשאפן געווארן. איר זאלט ​​רעדאַגירן עס ווייטער."; +$LANG["notify_no_account_id_in_sessions"] = "ניט קיין באַניצער רעגיסטרירן שיין איז געפֿונען אין סעשאַנז. ביטע אַרייַנלאָגירן אין ווידער אונטן."; +$LANG["notify_no_api_installed"] = "איר טאָן ניט האָבן דעם אַפּי אינסטאַלירן"; +$LANG["notify_no_client_permissions"] = "עס זענען נישט סעטטינגס בארעכטיגט צו ענדערן."; +$LANG["notify_no_email_template_selected"] = "ביטע סעלעקטירן דעם בליצפּאָסט מוסטער."; +$LANG["notify_no_emails_defined"] = "ניט קיין ימיילז האָבן שוין דיפיינד פֿאַר דעם פאָרעם. צו לייגן אַ נייַע איין, דריקט דעם קנעפּל אונטן."; +$LANG["notify_no_field_settings"] = "דעם פעלד טיפּ טוט ניט אַנטהאַלטן קיין עקסטרע סעטטינגס."; +$LANG["notify_no_fields_in_tab"] = "דער קוויטל קען ניט אַנטהאַלטן קיין פיעלדס."; +$LANG["notify_no_option_lists"] = "עס זענען קיין אָפּציע רשימות דיפיינד. גיט די קנעפּל אונטן צו שאַפֿן אַ נייַ איינער."; +$LANG["notify_no_test_submission"] = "פאָרמירן מכשירים איז נישט באַקומען אַ געראָטן test סאַבמישאַן נאָך."; +$LANG["notify_no_user_email_fields_configured"] = "באַמערקונג: אויב איר ווילט צו שיקן אַ בליצבריוו צו קיין בליצפּאָסט אַדרעס וואָס איז געווען אַרייַנגערעכנט אין די פאָרעם, איר ערשט דאַרפֿן צו קאַנפיגיער די פאָרעם בליצפּאָסט פיעלדס."; +$LANG["notify_no_views"] = "דיין פאָרמע טוט ניט האָבן קיין קוקן שטעלן אַרויף! איר וועט דאַרפֿן לפּחות איינער View אין סדר צו פירן אייער פאָרעם דאַטע."; +$LANG["notify_no_views_assigned_to_client_form"] = "עס אַפּפּעאַרס אַז דיין באַניצער קאָנטע איז נישט געווארן אַסיינד צו קיין פאָרעם קוקן, אַזוי איר וועט נישט זיין קענען צו זען קיין דאַטן. ביטע קאָנטאַקט דער אַדמיניסטראַטאָר פֿאַר ווייטער העלפֿן."; +$LANG["notify_no_views_defined"] = "איר טאָן ניט האָבן קיין קוקן דיפיינד. איר וועט ניט קענען צו קוק דעם פאָרעם ס סאַבמישאַנז סייַדן לפּחות איינער View איז באשאפן. גיט די קנעפּל אונטן צו מאַכן די פעליקייַט View."; +$LANG["notify_option_list_deleted"] = "די אָפּציע רשימה האט אויסגעמעקט."; +$LANG["notify_option_list_updated"] = "די אָפּציע רשימה איז דערהייַנטיקט."; +$LANG["notify_public_form_omit_list_updated"] = "דער קליענט דורכלאָזן רשימה פֿאַר דעם פאָרעם איז געווארן אפדעיטעד."; +$LANG["notify_public_view_omit_list_updated"] = "דער קליענט דורכלאָזן רשימה פֿאַר דעם View איז געווארן אפדעיטעד."; +$LANG["notify_required_admin_pages"] = "די פאלגענדע בלעטער זענען פארלאנגט אין דער אַדמיניסטראַטאָר מעניו: {\$remaining_pages}."; +$LANG["notify_sessions_timeout"] = "אנטשולדיגט, עס איז נישט קיין אַקטיוויטעט פֿאַר אַ וויילע אַזוי מיר ביי צו אַרייַנלאָגירן איר זיך. ביטע אַרייַנלאָגירן אין ווידער אונטן."; +$LANG["notify_setup_options_updated"] = "די סעטאַפּ אָפּציעס האָבן שוין אפדעיטעד."; +$LANG["notify_smart_fill_field_not_found"] = "מיר האָט ניט געקענט צו געפֿינען אַ פעלד מיט דעם נאָמען ({\$field_name}) אין די פאָרעם (s) ספעציפישער. איר קענט אָדער מאַניואַלי שטעלן דעם פעלד טיפּ אונטן, אָדער גיט די סקיפּ קנעפּל צו ענדערן דעם פעלד שפּעטער."; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "דיין בילד (s) געווען הצלחה ופּלאָאַדעד. פּרוּווט קליקינג די סמאַרט פיל קנעפּל צו פּרובירן נאכאמאל. אויב דאָס טרעטן פיילז, איר וועט דאַרפֿן צו האָפּקען דאָס טרעטן און קאַנפיגיער דיין פאָרמע פיעלדס מאַנאַללי שפּעטער."; +$LANG["notify_smart_fill_submitted"] = "די פאָרעם איז געווארן סאַבמיטאַד. דעפּענדינג אויף די גרייס פון דיין פאָרעם און נומער פון פעלד אָפּציעס, דאָס קען נעמען עטלעכע מאָל."; +$LANG["notify_smart_fill_upload_fields_fail"] = "אנטשולדיגט, איינס אָדער מער פון די טעקעס איר ענטערד קען נישט זיין ופּלאָאַדעד. איר וועט דאַרפֿן צו האָפּקען דאָס טרעטן און קאַנפיגיער די פיעלדס מאַניואַלי."; +$LANG["notify_submission_and_files_deleted"] = "די סאַבמישאַן און קיין טעקע (s) אַסאָושיייטאַד מיט דאָס האָט אויסגעמעקט הצלחה."; +$LANG["notify_submission_copied"] = "די סובמיססיאָן איז קאַפּיד."; +$LANG["notify_submission_copied_edit"] = "די סובמיססיאָן איז קאַפּיד. איר קען רעדאַגירן עס ונטער."; +$LANG["notify_submission_deleted"] = "די סאַבמישאַן איז אויסגעמעקט הצלחה."; +$LANG["notify_submission_deleted_with_problems"] = "די סאַבמישאַן איז אויסגעמעקט, אָבער די פאלגענדע ןעמעלבארפ האָט געפּלאָנטערט אויף ווען אַטעמפּטינג צו ויסמעקן די פאלגענדע טעקע (s):"; +$LANG["notify_submission_id_not_found"] = "די סאַבמישאַן שיין איז געווען ניט געפֿונען."; +$LANG["notify_submission_not_updated"] = "די סאַבמישאַן קען נישט ווערן אפדעיטעד."; +$LANG["notify_submissions_and_files_deleted"] = "די סאַבמישאַנז און קיין טעקע (s) אַסאָושיייטאַד מיט זיי האָט אויסגעמעקט הצלחה."; +$LANG["notify_submissions_copied"] = "{\$num_submissions} סאַבמישאַנז זענען קאַפּיד."; +$LANG["notify_submissions_deleted"] = "די סאַבמישאַנז האָט אויסגעמעקט הצלחה."; +$LANG["notify_submissions_deleted_with_problems"] = "די סאַבמישאַנז האָט אויסגעמעקט, אָבער די פאלגענדע ןעמעלבארפ האָט געפּלאָנטערט אויף ווען אַטעמפּטינג צו ויסמעקן די פאלגענדע טעקע (s):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "דיין test בליצפּאָסט קען נישט ווערן געשיקט."; +$LANG["notify_theme_cache_folder_not_writable"] = "די טעמע ס קאַש טעקע איז נישט ווריטאַבלע. אויף כּדי צו געבן דעם טעמע, די {\$folder}טעקע נידז צו האָבן גאַנץ לייענען, שרייבן פּערמישאַנז."; +$LANG["notify_theme_list_updated"] = "די טעמע רשימה איז געווארן אפדעיטעד."; +$LANG["notify_themes_settings_updated"] = "דיין טעמע סעטטינגס האָבן שוין אפדעיטעד."; +$LANG["notify_view_deleted"] = "דער View האט שוין אויסגעמעקט."; +$LANG["notify_view_group_deleted"] = "דער View גרופּע האט אויסגעמעקט."; +$LANG["notify_view_missing_columns"] = "אָאָפּס! אנטשולדיגט, דעם View האט ניט געווען גאָר שטעלן אַרויף נאָך."; +$LANG["notify_view_missing_columns_admin_fix"] = "דריקט דאָ צו ספּעציפיצירן וואָס פעלדער זאָל דערשייַנען ווי שפאלטן אויף דעם בלאַט."; +$LANG["notify_view_updated"] = "דער View איז געווארן אפדעיטעד."; +$LANG["notify_your_email_sent"] = "אייער בליצפּאָסט איז געווארן הצלחה געשיקט."; +$LANG["phrase_100_per_page"] = "100 פּער בלאַט"; +$LANG["phrase_10_per_page"] = "10 פּער בלאַט"; +$LANG["phrase_15_per_page"] = "15 פּער בלאַט"; +$LANG["phrase_1_direct"] = "1. גלייך"; +$LANG["phrase_1char"] = "1 טשאַר"; +$LANG["phrase_20_per_page"] = "20 פּער בלאַט"; +$LANG["phrase_25_per_page"] = "25 פּער בלאַט"; +$LANG["phrase_2_code"] = "2. קאָד"; +$LANG["phrase_2_columns"] = "2 קאָלומנס"; +$LANG["phrase_2chars"] = "2 טשאַרס"; +$LANG["phrase_3_columns"] = "3 קאָלומנס"; +$LANG["phrase_4_columns"] = "4 קאָלומנס"; +$LANG["phrase_50_per_page"] = "50 פּער בלאַט"; +$LANG["phrase_accepting_submissions"] = "(אַקסעפּטינג סאַבמישאַנז)"; +$LANG["phrase_access_admin_account_c"] = "איר קענט אַקסעס דיין אַדמיניסטראַציע רעגיסטרירן דאָ:"; +$LANG["phrase_access_type"] = "אַקסעס טיפּע"; +$LANG["phrase_account_info"] = "אקאונט אינפֿאָרמאַציע"; +$LANG["phrase_account_settings"] = "באַריכט סעטטינגס"; +$LANG["phrase_action_needed"] = "קאַמף נעעדעד"; +$LANG["phrase_add_client"] = "לייג קליענט"; +$LANG["phrase_add_client_menu"] = "לייג קליענט מעניו"; +$LANG["phrase_add_default_settings_rightarrow"] = "לייג ניט ויסצאָלן סעטטינגס »"; +$LANG["phrase_add_field"] = "לייג פיעלד"; +$LANG["phrase_add_fields"] = "לייג פיעלדס"; +$LANG["phrase_add_fields_rightarrow"] = "לייג פיעלד (s) »"; +$LANG["phrase_add_form"] = "לייג פאָרם"; +$LANG["phrase_add_form_external"] = "לייג פאָרם - עקסטערנאַל"; +$LANG["phrase_add_form_internal"] = "לייג פאָרם - אינערלעכער"; +$LANG["phrase_add_new_group_rightarrow"] = "לייג New גרופע »"; +$LANG["phrase_add_num_rows"] = "לייג {\$number} ראָוו (s)"; +$LANG["phrase_add_row"] = "לייג צו ראָו »"; +$LANG["phrase_add_submission_button"] = "לייג סובמיססיאָן קנעפּל"; +$LANG["phrase_add_view_rightarrow"] = "לייג View »"; +$LANG["phrase_adding_multi_page_form"] = "אַדדינג אַ מולטי-בלאַט פאָרעם מיט די אַפּי"; +$LANG["phrase_adding_single_page_form"] = "אַדדינג אַ איין-בלאַט פאָרעם מיט די אַפּי"; +$LANG["phrase_admin_menu"] = "אַדמיניסטראַטאָר מעניו"; +$LANG["phrase_admin_only"] = "אַדמיניסטראַטאָר בלויז"; +$LANG["phrase_admin_panel"] = "אַדמין פּאַנעל"; +$LANG["phrase_administrator_theme"] = "אַדמיניסטראַטאָר טים"; +$LANG["phrase_advanced_settings_rightarrow"] = "אַוואַנסירטע סעטטינגס »"; +$LANG["phrase_all_X_results_selected"] = "כל {\$numresults} רעזולטאַטן סעלעקטעד"; +$LANG["phrase_all_clients"] = "כל קלייאַנץ"; +$LANG["phrase_all_clients_except_c"] = "כל קלייאַנץ אַחוץ:"; +$LANG["phrase_all_clients_have_access"] = "(אַלע קלייאַנץ האָבן אַקסעס)"; +$LANG["phrase_all_fields"] = "אַלע פיעלדס"; +$LANG["phrase_all_fields_displayed"] = "אַלע פיעלדס זענען געוויזן"; +$LANG["phrase_all_statuses"] = "כל סטאַטוסעס"; +$LANG["phrase_all_submissions"] = "כל סאַבמישאַנז"; +$LANG["phrase_allow_fields_edited"] = "לאָזן פיעלדס צו זיין עדיטיד"; +$LANG["phrase_alphanumeric"] = "אַלפאַנומעריק (אַז, 0-9)"; +$LANG["phrase_api_version"] = "אַפּי ווערסיע"; +$LANG["phrase_apply_timezone_offset"] = "צולייגן טימעזאָנע אָפסעט"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "באַשטימען אַלע ליסטעד קליענט אַקאַונץ צו {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "באַשטימען אַלע ליסטעד קליענט אַקאַונץ צוסובמיט_בוטטאָן {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "אין סוף"; +$LANG["phrase_at_start"] = "אין אָנהייב"; +$LANG["phrase_author_link"] = "מחבר לינק"; +$LANG["phrase_auto_disable_account"] = "אַוטאָ-דיסייבאַל חשבון נאָך # דורכפֿאַל לאָגין פרווון"; +$LANG["phrase_auto_size"] = "אַוטאָ-פאָרמאַט"; +$LANG["phrase_available_clients"] = "בארעכטיגט קליענץ"; +$LANG["phrase_available_fields"] = "פאַראַנען פיעלדס"; +$LANG["phrase_available_option_lists"] = "פאַראַנען אָפּשאַן ליס"; +$LANG["phrase_available_swatches"] = "פאַראַנען סוואַטטשעס"; +$LANG["phrase_available_swatches_c"] = "פאַראַנען סוואַטטשעס:"; +$LANG["phrase_available_tabs"] = "פאַראַנען טאַבס"; +$LANG["phrase_available_views"] = "בארעכטיגט קוקן"; +$LANG["phrase_awaiting_form_submission"] = "אַוואַיטינג פאָרמע סאַבמישאַן."; +$LANG["phrase_back_to_field_list"] = "«צוריק צו פעלד רשימה"; +$LANG["phrase_back_to_search_results"] = "צוריק צו זוכן רעזולטאַטן"; +$LANG["phrase_base_view_on"] = "יקער View אויף ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "ענדערן לאָגין אינפֿאָרמאַציע"; +$LANG["phrase_characters_limit_p"] = "אותיות שיעור."; +$LANG["phrase_check_db_settings_try_again"] = "ביטע טאָפּל, טשעק דיין דאַטאַבייס סעטטינגס און גיט די קאַנטיניו קנעפּל ווידער."; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "קוק URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "ריין אַרויף"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "קלאָר אָמיט רשימה"; +$LANG["phrase_client_account_settings"] = "קליענט אַקאַונט סעטטינגס"; +$LANG["phrase_client_field"] = "קליענט פיעלד"; +$LANG["phrase_client_map_filters"] = "קליענט מאפע פילטערס »"; +$LANG["phrase_client_may_edit"] = "קליענט מאַי ענדערן"; +$LANG["phrase_client_menu"] = "קליענט מעניו"; +$LANG["phrase_clients_can_access_form"] = "קליענץ וואָס קענען אַקסעס די פאָרעם"; +$LANG["phrase_clients_can_access_view"] = "קליענץ וואָס קענען אַקסעס דער View"; +$LANG["phrase_clients_cannot_access_form"] = "קליענץ וואָס קענען נישט אַקסעס די פאָרעם"; +$LANG["phrase_clients_cannot_access_view"] = "קליענץ וואָס קענען נישט אַקסעס דער View"; +$LANG["phrase_clients_may_edit"] = "קליענץ מאַי ענדערן"; +$LANG["phrase_code_c"] = "טעות קאָד:"; +$LANG["phrase_code_markup_field"] = "קאָדעקס / מאַרקאַפּ פיעלד"; +$LANG["phrase_code_markup_type"] = "קאָדעקס / מאַרקאַפּ טיפּע"; +$LANG["phrase_codes_c"] = "טעות קאָדעס:"; +$LANG["phrase_column_width"] = "זייַל ווידטה"; +$LANG["phrase_company_name"] = "פֿירמע נאמען"; +$LANG["phrase_configure_form_email_fields"] = "קאָנפיגורע פאָרם עמאַיל פיעלדס"; +$LANG["phrase_confirm_folder_url_match"] = "באַשטעטיקן פאָלדער-URL איינפאסן"; +$LANG["phrase_connect_rows"] = "פאַרבינדן ראָוז"; +$LANG["phrase_copy_email_settings_from"] = "קאָפּיע עמאַיל סעטטינגס פֿון ..."; +$LANG["phrase_copy_settings_from"] = "קאָפּיע סעטטינגס פֿון ..."; +$LANG["phrase_core_fields"] = "האַרץ פיעלדס"; +$LANG["phrase_core_version"] = "האַרץ ווערסיע"; +$LANG["phrase_create_account"] = "זיך רעגיסטרירן"; +$LANG["phrase_create_admin_account"] = "שאַפֿן אַדמין אַקאַונט"; +$LANG["phrase_create_config_file"] = "שאַפֿן קאָנפיג טעקע"; +$LANG["phrase_create_database_tables"] = "שאַפֿן דאַטאַבאַסע טאַבלעס"; +$LANG["phrase_create_default_view"] = "שאַפֿן דיפאָלט View"; +$LANG["phrase_create_file"] = "שאַפֿן טעקע"; +$LANG["phrase_create_group"] = "שאַפֿן גרופע"; +$LANG["phrase_create_new_email"] = "שאַפֿן ניו עמאַיל"; +$LANG["phrase_create_new_menu"] = "שאַפֿן ניו מעניו"; +$LANG["phrase_create_new_option_list"] = "שאַפֿן New אַפּשאַן ליסטע"; +$LANG["phrase_create_new_option_list_group"] = "שאַפֿן נייַ אָפּציע רשימה גרופּע"; +$LANG["phrase_create_new_option_list_rightarrow"] = "שאַפֿן New אַפּשאַן ליסטע »"; +$LANG["phrase_create_new_view"] = "שאַפֿן ניו View"; +$LANG["phrase_create_new_view_group"] = "שאַפֿן New View גרופע"; +$LANG["phrase_custom_display_format"] = "מנהג ווייַז פֿאָרמאַטירונג"; +$LANG["phrase_custom_recipient"] = "פירונג רעסיפּיענט"; +$LANG["phrase_custom_url"] = "פירונג URL"; +$LANG["phrase_dark_blue"] = "טונקל בלו"; +$LANG["phrase_data_type"] = "דאַטן טיפּע"; +$LANG["phrase_database_hostname"] = "דאַטאַבאַסע האָסטנאַמע"; +$LANG["phrase_database_name"] = "דאַטאַבאַסע נאָמען"; +$LANG["phrase_database_password"] = "דאַטאַבאַסע שפּריכוואָרט"; +$LANG["phrase_database_settings"] = "דאַטאַבאַסע סעטטינגס"; +$LANG["phrase_database_setup"] = "דאַטאַבאַסע סעטאַפּ"; +$LANG["phrase_database_table_prefix"] = "דאַטאַבאַסע טיש פּרעפיקס"; +$LANG["phrase_database_username"] = "דאַטאַבאַסע נאמען"; +$LANG["phrase_date_format"] = "טאָג פֿאָרמאַטירונג"; +$LANG["phrase_db_column"] = "דב קאַלאַם"; +$LANG["phrase_db_setup_page_4"] = "4. דאַטאַבאַסע סעטאַפּ"; +$LANG["phrase_default_client_account_theme"] = "פעליקייט קליענט אַקאַונט טים"; +$LANG["phrase_default_date_field_search_value"] = "פעליקייַט דאַטע פעלד זוכן ווערט"; +$LANG["phrase_default_language"] = "פעליקייט שפּראַך"; +$LANG["phrase_default_menu"] = "פעליקייט מעניו"; +$LANG["phrase_default_sessions_timeout"] = "פעליקייט סעססיאָנס טיימאַוט"; +$LANG["phrase_default_sort_order"] = "פעליקייט סאָרטיר אָרדער"; +$LANG["phrase_default_tab_label"] = "דאַטן"; +$LANG["phrase_default_theme"] = "פעליקייט טים"; +$LANG["phrase_default_value"] = "פעליקייַט ווערט"; +$LANG["phrase_default_values"] = "פעליקייַט וואַלועס"; +$LANG["phrase_default_values_new_submissions"] = "פעליקייַט וואַלועס פֿאַר New סובמיססיאָנס"; +$LANG["phrase_delete_field"] = "ויסמעקן פיעלד"; +$LANG["phrase_delete_form"] = "ויסמעקן פאָרם"; +$LANG["phrase_delete_row"] = "ויסמעקן ראָוו"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "ויסמעקן אַסאָושיייטאַד טעקעס ווען דיליטינג סאַבמישאַן"; +$LANG["phrase_delete_view"] = "ויסמעקן View"; +$LANG["phrase_disconnect_rows"] = "דיסקאָננעקט ראָוז"; +$LANG["phrase_display_email"] = "ווייַז עמאַיל"; +$LANG["phrase_display_name"] = "ווייַז נאמען"; +$LANG["phrase_display_text"] = "ווייַז טעקסט"; +$LANG["phrase_display_value"] = "ווייַז וואַליו"; +$LANG["phrase_edit_admin_menu"] = "רעדאַקטירן אַדמין מעניו"; +$LANG["phrase_edit_client"] = "רעדאַקטירן קליענט"; +$LANG["phrase_edit_client_menu"] = "רעדאַקטירן קליענט מעניו"; +$LANG["phrase_edit_email_template"] = "רעדאַקטירן עמאַיל מוסטער"; +$LANG["phrase_edit_field"] = "רעדאַקטירן פיעלד"; +$LANG["phrase_edit_field_c"] = "רעדאַגירן פיעלד:"; +$LANG["phrase_edit_form"] = "רעדאַקטירן פאָרם"; +$LANG["phrase_edit_form_access_type_b"] = "[עדיט פאָרמע צוטריט דרוקן]"; +$LANG["phrase_edit_option_list"] = "רעדאַגירן אַפּשאַן ליסטע"; +$LANG["phrase_edit_submission"] = "רעדאַקטירן סובמיססיאָן"; +$LANG["phrase_edit_submission_label"] = "רעדאַגירן סובמיססיאָן לאַבעל"; +$LANG["phrase_edit_view"] = "רעדאַקטירן View"; +$LANG["phrase_email_format"] = "Email פֿאָרמאַטירונג"; +$LANG["phrase_email_settings"] = "Email סעטטינגס"; +$LANG["phrase_email_template"] = "Email מוסטער"; +$LANG["phrase_email_template_name"] = "Email מוסטער נאָמען"; +$LANG["phrase_error_learn_more"] = "לערנט נאָך וועגן דעם טעות."; +$LANG["phrase_error_text_intro"] = "ביטע פאַרריכטן די פאלגענדע טעות (s) און ריסאַבמיט:"; +$LANG["phrase_errors_learn_more"] = "קליקט אויף די טעות קאָודז צו לערנען נאָך."; +$LANG["phrase_event_trigger"] = "געשעעניש טריגגער"; +$LANG["phrase_external_form"] = "פונדרויסנדיק פאָרם"; +$LANG["phrase_external_form_info"] = "פונדרויסנדיק פאָרם אינפֿאָרמאַציע"; +$LANG["phrase_external_your_own_form"] = "פונדרויסנדיק (דיין אייגן פאָרעם)"; +$LANG["phrase_field_comments"] = "פעלד קאָממענץ"; +$LANG["phrase_field_label"] = "פעלד לאַבעל"; +$LANG["phrase_field_options"] = "פעלד אָפּציעס"; +$LANG["phrase_field_size"] = "פעלד גרייס"; +$LANG["phrase_field_skipped"] = "פעלד סקיפּפּעד"; +$LANG["phrase_field_specific_settings"] = "פעלד-ספּעסיפיק סעטטינגס"; +$LANG["phrase_field_type"] = "פעלד טיפּע"; +$LANG["phrase_field_type_no_validation"] = "עס זענען ניט וואַלאַדיישאַן כּללים פאַראַנען פֿאַר דעם פעלד טיפּ."; +$LANG["phrase_field_types"] = "פעלד טייפּס"; +$LANG["phrase_field_value"] = "פעלד וואַליו"; +$LANG["phrase_field_values_to_display_values"] = "פעלד וואַלועס »ווייַז וואַלועס"; +$LANG["phrase_final_touches_page_6"] = "6. פינישינג טאָוטשעס"; +$LANG["phrase_finalize_form"] = "פינאַליזע פאָרם"; +$LANG["phrase_first_name"] = "ערשטער נאמען"; +$LANG["phrase_footer_text"] = "פוטער טעקסט"; +$LANG["phrase_for_any_form_submission"] = "פאר קיין פאָרעם סאַבמישאַן"; +$LANG["phrase_for_view_submissions"] = "בלויז פֿאַר סאַבמישאַנז אין View:"; +$LANG["phrase_forgot_password"] = "פֿאַרגעסן אייער שפּריכוואָרט?"; +$LANG["phrase_form_already_selected"] = "פאָרמירן שוין סעלעקטעד"; +$LANG["phrase_form_email_field_b_c"] = "[פאָרם בליצפּאָסט פעלד]:"; +$LANG["phrase_form_email_field_configuration"] = "פאָרמירן עמאַיל פיעלד קאָנפיגוראַטיאָן"; +$LANG["phrase_form_email_fields"] = "פאָרעם עמאַיל פיעלדס"; +$LANG["phrase_form_field"] = "פאָרמירן פיעלד"; +$LANG["phrase_form_field_contents"] = "פאָרעם פיעלד קאָנטענץ"; +$LANG["phrase_form_field_name"] = "פאָרמירן פיעלד נאמען"; +$LANG["phrase_form_field_placeholders"] = "פאָרעם פעלד פּלאַסעהאָלדערס"; +$LANG["phrase_form_fields"] = "פאָרמירן פיעלדס"; +$LANG["phrase_form_info"] = "פאָרמירן אינפֿאָרמאַציע"; +$LANG["phrase_form_info_2"] = "2. פאָרמירן אינפֿאָרמאַציע"; +$LANG["phrase_form_list"] = "פאָרעם ליסטע"; +$LANG["phrase_form_name"] = "פאָרמירן נאמען"; +$LANG["phrase_form_page"] = "פאָרמירן Page"; +$LANG["phrase_form_placeholders"] = "פאָרמירן פּלאַסעהאָלדערס"; +$LANG["phrase_form_submission"] = "פאָרמירן סובמיססיאָן"; +$LANG["phrase_form_submissions"] = "פאָרמירן סובמיססיאָנס"; +$LANG["phrase_form_type"] = "פאָרמירן טיפּע"; +$LANG["phrase_form_url"] = "פאָרמירן URL"; +$LANG["phrase_form_urls"] = "פאָרעם URL ס"; +$LANG["phrase_forms_assigned_to_any_account"] = "פארמען אַסיינד צו קיין חשבון"; +$LANG["phrase_forms_page_default_message"] = "פארמען בלאַט פעליקייַט אָנזאָג"; +$LANG["phrase_ft_installation"] = "פאָרמירן מכשירים ינסטאַללאַטיאָן סקריפּט"; +$LANG["phrase_full_width"] = "גאַנץ ווידטה"; +$LANG["phrase_getting_started"] = "געטינג סטאַרטעד"; +$LANG["phrase_global_placeholders"] = "גלאבאלע פּלאַסעהאָלדערס"; +$LANG["phrase_group_name"] = "גרופּע נאמען"; +$LANG["phrase_group_options_q"] = "גרופּע אָפּציעס?"; +$LANG["phrase_group_rows"] = "גרופּע ראָוז"; +$LANG["phrase_have_fun"] = "האָבן שפּאַס!"; +$LANG["phrase_highlight_colour"] = "הויכפּונקט קאָלאָור"; +$LANG["phrase_html_email"] = "HTML עמאַיל"; +$LANG["phrase_html_template"] = "HTML מוסטער"; +$LANG["phrase_images_media"] = "בילדער / מעדיע"; +$LANG["phrase_import_option_list_rightarrow"] = "אַרייַנפיר אַפּשאַן ליסטע »"; +$LANG["phrase_input_length"] = "אַרייַנשרייַב לענגטה"; +$LANG["phrase_installation_help"] = "ייַנמאָנטירונג הילף"; +$LANG["phrase_internal_form"] = "אינערלעכער פאָרם"; +$LANG["phrase_ip_address"] = "IP אדרעס"; +$LANG["phrase_is_multi_page_form_q"] = "איז דאָס אַ מאַלטי-בלאַט פאָרמע?"; +$LANG["phrase_label_response_placeholders"] = "פירמע / רעספּאָנסע פּלאַסעהאָלדערס"; +$LANG["phrase_large_300px"] = "גרויס (300פּקס)"; +$LANG["phrase_large_400px"] = "גרויס (400פּקס)"; +$LANG["phrase_last_7_days"] = "לעצטע 7 טעג"; +$LANG["phrase_last_logged_in"] = "לעצטע לאָגד אין"; +$LANG["phrase_last_modified"] = "לעצט געווארן מאדיפיצירט"; +$LANG["phrase_last_modified_date"] = "לעצט געווארן מאדיפיצירט טאָג"; +$LANG["phrase_last_name"] = "לעצטע נאמען"; +$LANG["phrase_letters_only"] = "בריוו בלויז"; +$LANG["phrase_light_brown"] = "ליכט בראַון"; +$LANG["phrase_limit_email_content"] = "באַגרענעצן בליצפּאָסט אינהאַלט צום פיעלדס אין View"; +$LANG["phrase_loading_ellipsis"] = "לאָודינג ..."; +$LANG["phrase_log_in"] = "אַרייַנלאָגירן"; +$LANG["phrase_login_as_user"] = "קלאָץ אין ווי דעם באַניצער"; +$LANG["phrase_login_info"] = "לאָגין אינפֿאָרמאַציע"; +$LANG["phrase_login_page"] = "לאָגין Page"; +$LANG["phrase_login_panel_c"] = "לאָגין פּאַנעל:"; +$LANG["phrase_login_panel_leftarrows"] = "«לאָגין פּאַנעל"; +$LANG["phrase_login_password"] = "לאָגין שפּריכוואָרט"; +$LANG["phrase_login_username"] = "לאָגין נאמען"; +$LANG["phrase_logo_link_url"] = "לאָגאָ לינק URL"; +$LANG["phrase_logout_url"] = "לאָגאָוט URL"; +$LANG["phrase_main_nav"] = "הויפט נאַוו"; +$LANG["phrase_main_settings"] = "הויפט סעטטינגס"; +$LANG["phrase_manage_client"] = "אויפֿפּאַסן קליענט"; +$LANG["phrase_manage_client_omit_list"] = "אויפֿפּאַסן קליענט אָמיט ליסטע"; +$LANG["phrase_max_file_size"] = "מאַקס טעקע גרייס"; +$LANG["phrase_max_length"] = "מאקס לענגטה"; +$LANG["phrase_max_length_words_chars"] = "- מאקס לענג (ווערטער / טשאַרס)"; +$LANG["phrase_may_add_submissions"] = "מייַ לייגן סובמיססיאָנס"; +$LANG["phrase_may_copy_submissions"] = "קענען נאָכמאַכן סאַבמישאַנז"; +$LANG["phrase_may_delete_submissions"] = "מייַ ויסמעקן סובמיססיאָנס"; +$LANG["phrase_medium_150px"] = "מיטל (150פּקס)"; +$LANG["phrase_medium_200px"] = "מיטל (200פּקס)"; +$LANG["phrase_menu_name"] = "מעניו נאמען"; +$LANG["phrase_menu_type"] = "מעניו טיפּע"; +$LANG["phrase_min_password_length"] = "מינימום שפּריכוואָרט לענג"; +$LANG["phrase_module_description"] = "מאָדולע דיסקריפּשאַן"; +$LANG["phrase_module_info"] = "מאָדולע אינפֿאָרמאַציע"; +$LANG["phrase_module_nav"] = "מאָדולע נאַוו"; +$LANG["phrase_month_to_date"] = "חודש צו דאַטע"; +$LANG["phrase_multi_select"] = "מולטי-אויסקלייַבן"; +$LANG["phrase_multi_select_dropdown"] = "מולטי-סעלעקטירן דראָפּדאָוון"; +$LANG["phrase_multiple_fields_found"] = "קייפל פיעלדס פאָונד!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "נאָמען / לעצטע נאמען"; +$LANG["phrase_new_blank_email"] = "ניו בלאַנק עמאַיל"; +$LANG["phrase_new_blank_option_list"] = "New בלאַנק אַפּשאַן ליסטע"; +$LANG["phrase_new_blank_view"] = "ניו בלאַנק View"; +$LANG["phrase_new_ft_installation"] = "ניו פאָרם מכשירים ינסטאַללאַטיאָן"; +$LANG["phrase_new_option_list"] = "New אַפּשאַן ליסטע"; +$LANG["phrase_new_password"] = "ניו שפּריכוואָרט"; +$LANG["phrase_new_password_reenter"] = "ניו שפּריכוואָרט (ביטע שייעך-קומען)"; +$LANG["phrase_new_view"] = "ניו View"; +$LANG["phrase_new_view_all_fields"] = "New View - אלע פעלדער"; +$LANG["phrase_next_client"] = "ווייַטער קליענט »"; +$LANG["phrase_next_field"] = "ווייטער פעלד »"; +$LANG["phrase_next_form"] = "ווייַטער פאָרמע »"; +$LANG["phrase_next_view"] = "ווייטער View »"; +$LANG["phrase_no_clients"] = "ניט קיין קלייאַנץ"; +$LANG["phrase_no_limit"] = "קיין לימיט"; +$LANG["phrase_no_offset"] = "ניט קיין פאָטאָ"; +$LANG["phrase_no_option_lists_available"] = "ניט אָפּציעס רשימות בנימצא."; +$LANG["phrase_no_views"] = "ניט קיין קוקן"; +$LANG["phrase_no_views_with_filters_p"] = "(נישט קוקן מיט פילטערס דיפיינד)"; +$LANG["phrase_none_not_recommended"] = "קיין (נישט רעקאַמענדיד)"; +$LANG["phrase_not_assigned_to_option_list"] = "דעם פעלד איז ניט אַסיינד צו אַ אַפּשאַן ליסטע."; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "קען נישט עקוואַל"; +$LANG["phrase_not_found"] = "ניט פאָונד!"; +$LANG["phrase_not_like"] = "ניט ליקע"; +$LANG["phrase_not_visible_to_client"] = "(נישט קענטיק צו קליענט)"; +$LANG["phrase_num_clients_per_page"] = "NUM קליענץ פּער זייַט"; +$LANG["phrase_num_emails_per_page"] = "NUM עמאַילס פּער זייַט"; +$LANG["phrase_num_fields"] = "נומער פון פיעלדס"; +$LANG["phrase_num_forms_per_page"] = "NUM פאָרמס פּער זייַט"; +$LANG["phrase_num_menus_per_page"] = "NUM מענוס פּער זייַט"; +$LANG["phrase_num_modules_per_page"] = "NUM מאָדולעס פּער זייַט"; +$LANG["phrase_num_option_lists_per_page"] = "NUM אַפּשאַן ליס פּער Page"; +$LANG["phrase_num_options"] = "NUM אָפּציעס"; +$LANG["phrase_num_rows"] = "NUM ראָוז"; +$LANG["phrase_numbers_only"] = "נומערן בלויז"; +$LANG["phrase_often_localhost"] = "(אָפט "לאָקאַלהאָסט")"; +$LANG["phrase_on_form_submission"] = "אויף פאָרמע סאַבמישאַן"; +$LANG["phrase_one_char_number"] = "אין מינדסטער איין כאַראַקטער איז אַ נומער (0-9)"; +$LANG["phrase_one_char_upper"] = "אין מינדסטער איין כאַראַקטער איז ופּפּערקאַסע"; +$LANG["phrase_one_special_char"] = "לפּחות איינער פון {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(נאָר ספּעציפיש קלייאַנץ האָבן אַקסעס)"; +$LANG["phrase_open_form_in_dialog"] = "עפענען פאָרעם אין דיאַלאָג פֿענצטער"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "עפענען דעם פאָרעם אין אַ נייַ קוויטל / פֿענצטער"; +$LANG["phrase_option_list"] = "אָפּציע ליסטע"; +$LANG["phrase_option_list_name"] = "אָפּציע ליסטע נעמען"; +$LANG["phrase_option_list_or_contents"] = "אָפּציע רשימה / קאָנטענץ"; +$LANG["phrase_option_lists"] = "אָפּציע ליס"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "Page טיטלעס"; +$LANG["phrase_pass_on"] = "וועג אויף"; +$LANG["phrase_password_min"] = "עס דארף זייַן בייַ מינדסטער {\$length} אותיות."; +$LANG["phrase_password_one_number"] = "עס מוז אַנטהאַלטן בייַ מינדסטער איין נומער (0-9)."; +$LANG["phrase_password_one_uppercase"] = "עס מוז אַנטהאַלטן בייַ מינדסטער איין ופּפּערקאַסע בריוו."; +$LANG["phrase_password_requirements_c"] = "שפּריכוואָרט באדערפענישן:"; +$LANG["phrase_password_reset"] = "שפּריכוואָרט באַשטעטיק"; +$LANG["phrase_password_special_char"] = "עס מוז אַנטהאַלטן בייַ מינדסטער איין פון די דאָזיקע אותיות: {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "פּערמיססיאָנס / אנדערע סעטטינגס"; +$LANG["phrase_permitted_file_types"] = "דערלויבט טעקע טייפּס"; +$LANG["phrase_phone_number"] = "טעלעפאָנ - נומער"; +$LANG["phrase_phone_number_format"] = "טעלעפאָנ - נומער פֿאָרמאַטירונג"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "פפּ.יני מאַקס ערלויבט טעקע צופֿעליקער גרייס:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "פפּ ווערסיע"; +$LANG["phrase_please_confirm"] = "ביטע קאָנפירם"; +$LANG["phrase_please_enter_license_key"] = "ביטע אַרייַן אייער דערלויבעניש שליסל"; +$LANG["phrase_please_select"] = "ביטע סעלעקט"; +$LANG["phrase_please_select_form"] = "ביטע סעלעקטירן אַ פאָרעם"; +$LANG["phrase_prev_client"] = "«פֿריִערדיקע קליענט"; +$LANG["phrase_prev_form"] = "«פֿריִערדיקע פאָרעם"; +$LANG["phrase_prevent_password_reuse"] = "פאַרהיטן שייַעך-נוצן פון # לעצטע פּאַסווערדז"; +$LANG["phrase_previous_field"] = "«פֿריִער פעלד"; +$LANG["phrase_previous_page"] = "פֿריִער Page"; +$LANG["phrase_previous_view"] = "«פֿריִערדיקע View"; +$LANG["phrase_program_name"] = "פּראָגראַם נעמען"; +$LANG["phrase_public_form_omit_list"] = "פובליק פאָרם אָמיט רשימה"; +$LANG["phrase_public_view_omit_list"] = "פובליק View אָמיט רשימה"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "עס איז געווען אַ פּראָבלעם מיט די ווייַטערדיק אָנפֿרעג:"; +$LANG["phrase_radio_buttons"] = "ראַדיאָ בוטטאָנס"; +$LANG["phrase_random_form_submission"] = "קאַווע פאָרמע סאַבמישאַן"; +$LANG["phrase_re_enter_password"] = "שייעך-אַרייַן שפּריכוואָרט"; +$LANG["phrase_recipient_type"] = "באַקומער טיפּ"; +$LANG["phrase_redirect_url"] = "רעדירעקט URL"; +$LANG["phrase_refresh_list"] = "דערפרישן רשימה"; +$LANG["phrase_refresh_module_list"] = "דערפרישן מאָדולע רשימה"; +$LANG["phrase_refresh_page"] = "דערפרישן Page"; +$LANG["phrase_refresh_theme_list"] = "דערפרישן טים רשימה"; +$LANG["phrase_register_new_email"] = "רעגיסטרירן ניו עמאַיל"; +$LANG["phrase_remaining_characters"] = "רוען אותיות"; +$LANG["phrase_remaining_words"] = "רוען ווערטער"; +$LANG["phrase_remove_tabs"] = "נעם טאַבס"; +$LANG["phrase_required_password_chars"] = "פארלאנגט שפּריכוואָרט אותיות"; +$LANG["phrase_resend_test_submission"] = "רעסענד טעסט סובמיססיאָן"; +$LANG["phrase_return_form_list"] = "ווייַזן צו פאָרם רשימה"; +$LANG["phrase_row_selected"] = "{\$num_rows} רודערן סעלעקטעד"; +$LANG["phrase_rows_selected"] = "{\$num_rows} ראָוז סעלעקטעד"; +$LANG["phrase_sample_data"] = "מוסטער דאַטאַ"; +$LANG["phrase_save_changes"] = "היט טשאַנגעס"; +$LANG["phrase_search_keyword"] = "זוכן קיווערד"; +$LANG["phrase_security_settings"] = "סעקוריטי סעטטינגס"; +$LANG["phrase_select_all"] = "סעלעקטירן אלע"; +$LANG["phrase_select_all_X_results"] = "סעלעקטירן כל {\$numresults} רעזולטאַטן"; +$LANG["phrase_select_all_on_page"] = "סעלעקטירן אלע אויף זייַט"; +$LANG["phrase_select_date"] = "אויסקלייַבן דאַטע"; +$LANG["phrase_select_field"] = "אויסקלייַבן פיעלד"; +$LANG["phrase_select_swatch"] = "אויסקלייַבן סוואַטש"; +$LANG["phrase_selected_clients"] = "סעלעקטעד קליענץ"; +$LANG["phrase_selected_views"] = "סעלעקטעד קוקן"; +$LANG["phrase_send_email"] = "שיק עמאַיל"; +$LANG["phrase_send_test_email"] = "שיקן טעסט עמאַיל"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "סעססיאָנס טיימאַוט"; +$LANG["phrase_setting_value"] = "באַשטעטיקן וואַליו"; +$LANG["phrase_setup_options"] = "סעטאַפּ אָפּציעס"; +$LANG["phrase_show_all"] = "ווייַז אלע"; +$LANG["phrase_show_form"] = "ווייַזן פאָרם"; +$LANG["phrase_size_large"] = "גרויס (טעקסט)"; +$LANG["phrase_size_medium"] = "מיטל (<= 256 טשאַרס)"; +$LANG["phrase_size_small"] = "קליין (<= 20 טשאַרס)"; +$LANG["phrase_size_tiny"] = "קליינטשיק (<= 5 טשאַרס)"; +$LANG["phrase_size_very_large"] = "זייער גרויס (מעדיומטעקסט)"; +$LANG["phrase_skip_field"] = "האָפּקען פיעלד"; +$LANG["phrase_skip_step"] = "האָפּקען סטעפּ"; +$LANG["phrase_small_100px"] = "קליין (100פּקס)"; +$LANG["phrase_small_80px"] = "קליין (80פּקס)"; +$LANG["phrase_smart_fill"] = "קלוג פיל"; +$LANG["phrase_smart_fill_fields_from_c"] = "קלוג פיל פיעלדס פֿון:"; +$LANG["phrase_smart_fill_user_documentation"] = "קלוג פיל באַניצער Documentation »"; +$LANG["phrase_sort_as"] = "סאָרט ווי"; +$LANG["phrase_special_fields"] = "ספּעציעלע פיעלדס"; +$LANG["phrase_standard_fields"] = "נאָרמאַל פיעלדס"; +$LANG["phrase_standard_filters"] = "נאָרמאַל פילטערס »"; +$LANG["phrase_step_1"] = "טרעטן 1"; +$LANG["phrase_step_2"] = "טרעטן 2"; +$LANG["phrase_step_3"] = "טרעטן 3"; +$LANG["phrase_step_4"] = "טרעטן 4"; +$LANG["phrase_step_5"] = "טרעטן 5"; +$LANG["phrase_step_6"] = "טרעטן 6"; +$LANG["phrase_strip_tags_in_submissions"] = "פּאַס טאַגס אין פאָרעם סאַבמישאַנז"; +$LANG["phrase_subject_line"] = "ענין ליניע"; +$LANG["phrase_submission_date"] = "סובמיססיאָן טאָג"; +$LANG["phrase_submission_id"] = "סובמיססיאָן שיין"; +$LANG["phrase_submission_made"] = "{\$SUBMISSIONDATE} סובמיססיאָנדאַטע"; +$LANG["phrase_submission_type"] = "סובמיססיאָן טיפּע"; +$LANG["phrase_submissions_per_page"] = "סובמיססיאָנס פּער זייַט"; +$LANG["phrase_system_check"] = "סיסטעם קאָנטראָליר"; +$LANG["phrase_system_fields_no_validation"] = "איר זאלט ​​ניט שטעלן וואַלאַדיישאַן צו סיסטעם פעלדער."; +$LANG["phrase_system_time_offset"] = "סיסטעם צייט אָפסעט"; +$LANG["phrase_tab_label"] = "קוויטל לאַבעל"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "Test פאָלדער פּערמיססיאָנס"; +$LANG["phrase_test_submission"] = "Test סובמיססיאָן"; +$LANG["phrase_test_submission_3"] = "3. Test סובמיססיאָן"; +$LANG["phrase_test_submission_received"] = "Test סובמיססיאָן ריסיווד"; +$LANG["phrase_text_and_html"] = "טעקסט & HTML"; +$LANG["phrase_text_email"] = "טעקסט עמאַיל"; +$LANG["phrase_text_template"] = "טעקסט מוסטער"; +$LANG["phrase_the_previous_month"] = "די פריערדיקע חודש"; +$LANG["phrase_theme_description"] = "טעמע דיסקריפּשאַן"; +$LANG["phrase_theme_info"] = "טעמע אינפֿאָרמאַציע"; +$LANG["phrase_tiny_30px"] = "קליינטשיק (30פּקס)"; +$LANG["phrase_tiny_50px"] = "קליינטשיק (50פּקס)"; +$LANG["phrase_total_results_c"] = "גאַנץ רעזולטאַטן:"; +$LANG["phrase_type_c"] = "טעות טיפּע:"; +$LANG["phrase_unselect_all"] = "ונסעלעקט אלע"; +$LANG["phrase_update_accounts"] = "דערהייַנטיקן אַקקאָונץ"; +$LANG["phrase_update_email_template"] = "דערהייַנטיקן עמאַיל מוסטער"; +$LANG["phrase_update_field"] = "דערהייַנטיקן פיעלד"; +$LANG["phrase_update_order"] = "דערהייַנטיקן אָרדער"; +$LANG["phrase_update_view"] = "דערהייַנטיקן View"; +$LANG["phrase_upload_file"] = "צופֿעליקער אַרטיקל"; +$LANG["phrase_upload_files"] = "צופֿעליקער פילעס"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "צופֿעליקער טעקע שטעג"; +$LANG["phrase_upload_folder_url"] = "צופֿעליקער טעקע URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "ניצן דיפאָלט וואַליו?"; +$LANG["phrase_used_by_num_form_fields"] = "געניצט דורך # פאָרם פיעלדס"; +$LANG["phrase_uses_swatches"] = "ניצט סוואַטטשעס"; +$LANG["phrase_valid_email"] = "גילטיק עמאַיל"; +$LANG["phrase_validation_error"] = "וואַלידאַטיאָן פֿעלער"; +$LANG["phrase_validation_rule"] = "וואַלידאַטיאָן רול"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "View גרופע"; +$LANG["phrase_view_id"] = "View שייַן"; +$LANG["phrase_view_name"] = "View נאמען"; +$LANG["phrase_view_placeholders"] = "View פּלאַסעהאָלדערס"; +$LANG["phrase_view_submissions"] = "View סובמיססיאָנס"; +$LANG["phrase_view_uploaded_files"] = "View ופּלאָאַדעד וויקיפּעדיע"; +$LANG["phrase_viewing_range"] = "[וויוינג {\$endnum} צו {\$startnum})]"; +$LANG["phrase_when_sent"] = "ווען געשיקט"; +$LANG["phrase_when_submission_is_deleted"] = "ווען סאַבמישאַן איז אויסגעמעקט"; +$LANG["phrase_when_submission_is_edited"] = "ווען סאַבמישאַן איז עדיטיד"; +$LANG["phrase_who_can_access"] = "וואָס קענען אַקסעס?"; +$LANG["phrase_word_limit_p"] = "וואָרט שיעור."; +$LANG["phrase_year_to_date"] = "יאָר צו דאַטע"; +$LANG["phrase_yes_for_all_views"] = "יאָ, פֿאַר אַלע קוקן"; +$LANG["phrase_yes_for_specific_views"] = "יאָ, פֿאַר ספּעציפיש קוקן"; +$LANG["phrase_your_account"] = "אייער קאנטע"; +$LANG["phrase_your_email"] = "דיין עמאַיל"; +$LANG["phrase_your_email_address"] = "אייער בליצפּאָסט אַדרעס"; +$LANG["processing_form_disabled"] = "אנטשולדיגט, "די פאָרעם איז געווארן אויסגעלאָשן."; +$LANG["processing_form_incomplete"] = "אנטשולדיגט, דער פאָרעם קען נישט באַווייזן צו זיין גאָר שטעלן זיך פֿון אונטער פאָרם מכשירים. די מערסט מסתּמא גרונט פון די פּראָבלעם איז אַז איר אראפגענומען די "פאָרמ_טאָאָלס_יניטיאַליזע_פאָרם" למד פאָרמע פעלד, אָבער האָט נישט גאַנץ אַלע די סטעפּס פון די "לייג פאָרם" פּראָצעס.

    ביטע אַרייַנלאָגירן אין און פּאַראַד די פאָרעם קאַנפיגיעריישאַן."; +$LANG["processing_init_complete"] = "א דאנק! דיין test סאַבמישאַן האט שוין שטעלן דורך הצלחה. ביטע צוריק צו דער פאָרם מכשירים אַדמיניסטראַטיאָן טאַפליע און גיט דעם "ריפרעש" קנעפּל ביי די דנאָ פון דער לייג פאָרם סטעפּ 3 בלאַט צו ענדיקן דאָס באַשטעטיקן זיך דיין פאָרעם."; +$LANG["processing_invalid_form_id"] = "אנטשולדיגט, דאָס טוט ניט דערשייַנען צו ווערן אַ גילטיק פאָרמע שייַן."; +$LANG["processing_no_form_id"] = "פּראָסעסס.פפּ ריקוויירז אַ פאָרעם שיין פֿאַר פּראַסעסינג. מאַכט זיכער דיין פאָרמע כּולל אַ למד פעלד מיט די נאָמען "פאָרמ_טאָאָלס_פאָרמ_יד" אַז ס 'פּאַסינג זיין די פאָרעם שיין."; +$LANG["processing_no_form_url_for_recaptcha"] = "פאָרמירן מכשירים איז ניט געקענט צו באַשליסן וועלכע צו רידערעקט ווען זיי פאַרפעלן צו אַרייַן די קאַפּטטשאַ רעכט. ביטע פאָרן אין אַ למד פעלד מיט דעם נאָמען פאָרמ_טאָאָלס_פאָרמ_ורל מיט די URL פון דעם פאָרעם."; +$LANG["processing_no_post_vars"] = "פּראָסעסס.פפּ איז נישט ריסיווינג קיין דאַטן. באַמערקונג: די שריפט קען נישט זיין לאָודיד גלייך אין אייער בלעטערער.
    מאַכט זיכער דיין פאָרעם איז שיקט דורך פּאָסטן."; +$LANG["processing_no_redirect_url"] = "די סאַבמישאַן איז פּראַסעסט ריכטיק, אָבער איר האָט נישט ספעציפישער אַ רידערעקט URL פֿאַר דעם פאָרעם! רעדאַקטירן דיין פאָרעם אין די פאָרם מכשירים וי און לייגן די רידערעקט URL."; +$LANG["special_language"] = "Yiddish"; +$LANG["special_language_locale"] = "Yiddish"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "אַלע נייַע קליענט אַקאַונץ וועט זיין באשאפן מיט די סעטטינגס און פּערמישאַנז דיפיינד אונטן. צו אָווועררייד אַ באַשטעטיקן פֿאַר אַ באַזונדער קליענט, ענדערן דעם קליענט קאָנטע און באַזוכן זייער סעטטינגס קוויטל."; +$LANG["text_add_form_choose_integration_method"] = "קלייַבן וואָס אופֿן איר ווילן צו נוצן צו ויסשטימען אייער פאָרעם מיט פאָרם מכשירים."; +$LANG["text_add_form_code_submission_benefits"] = "דעם אופֿן ניצט די פאָרם מכשירים אַפּי , אַרייַנגערעכנט אין די הויפּט פאָרם מכשירים שריפט. די אַפּי גיט אַ נומער פון נוציק פאַנגקשאַנז צו מאַכן די אַרבעט פון ינטאַגרייטינג אייער פאָרעם מיט פאָרם מכשירים ווי פּשוט ווי מעגלעך. עס זענען ניט ריסטריקשאַנז צו ווי דיין פאָרמע זאל זיין דערלאנגט ווען איר ניצן די אַפּי. איר קענען פאָרלייגן די אינהאלט אין איין גיין, אָדער בלאַט דורך בלאַט, איר קענען שטעלן אייער אייגן מנהג סערווער-זייַט וואַלאַדיישאַן, קאַפּטטשאַ בילדער, איר קענען קלייַבן צו פאָרלייגן די אינפֿאָרמאַציע איצט, אָבער בלויז זאָגן עס צו אַרויסווייַזן די סאַבמישאַן אין דער פארעם מכשירים וי בייַ אַ שפּעטער דאַטע (זען דעם פינאַליזעד סובמיססיאָנס אָפּטיילונג אין די אַפּי הילף דאַקיומענטיישאַן)."; +$LANG["text_add_form_code_submission_drawbacks"] = "אין סדר צו פאָרלייגן אייער פאָרעם דאַטע דורך פפּ, דיין פאָרמע מוזן ליגן אויף דער זעלביקער וועבזייַטל ווי דעם פאָרם מכשירים ייַנמאָנטירונג. צווייטנס, פֿאַר ניט-טעכניש און אָנהייבער פאָרם מכשירים ניצערס, דעם אופֿן קענען זיין אַ קליין ינטימידייטינג בייַ ערשטער. אבער עס ס שעפע פון ​​דאַקיומענטיישאַן צו העלפן איר אויס, אַרייַנגערעכנט צוויי פּשוט טוטאָריאַלז פֿאַר ינטאַגרייטינג אייער איין-און מאַלטי-בלאַט פארמען (די ביסט לינגקט צו אויף אַ שפּעטער שריט)."; +$LANG["text_add_form_direct_submission_benefits"] = "דאָס איז די סימפּלאַסט וועג צו פאָרלייגן דיין פאָרעם צו פאָרם מכשירים. עס קען נישט דאַרפן קיין וויסן פון פפּ און ריקוויירז בלויז אַ זייער קליין טוישן צו דיין פאָרעם. ס גרויס פֿאַר סמאָלער פאָרמס וווּ איר ווילן צו פּונקט פאָרלייגן די אינפֿאָרמאַציע צו דער דאַטאַבייס דאַן רידערעקט די באַניצער צו אַ "טאַנגקיו" בלאַט."; +$LANG["text_add_form_direct_submission_drawbacks"] = "דער סאַבמישאַן מעטאָד איז זייער פּשוט צו נוצן, אָבער קען נישט צושטעלן פיל קאָנטראָל פֿאַר מער קאָמפּליצירט פאָרמס. מולטי-בלאַט פאָרמס אָדער פאָרמס וואָס דאַרפן סערווירער-זייַט וואַלאַדיישאַן זענען בעסער סוטיד צו דער רגע מעטאָד: סאַבמיטינג דורך די פאָרם מכשירים אַפּי."; +$LANG["text_add_form_field_types1"] = "כּמעט געשען! דעם בלאַט פרוווט צו געפינען אַלע אייער פאָרמע פעלדער און באַשטימען זייער פעלד טייפּס. גיט דער סמאַרט פיל קנעפּל אויף די רעכט צו באַקומען סטאַרטעד. איר וועט זיין נאָר ערלויבט צו גיינ ווייַטער ווען אַלע אַקשאַנז האָבן שוין ריזאַלווד - ישוז אַז דאַרפֿן אייער אויפמערק דערשייַנען אין דעם "אַקשאַן נעעדעד " קאָלאָנע."; +$LANG["text_add_form_field_types2"] = "אויב אייער פאָרעם איז ניט אין HTML, דריקט דעם סקיפּ סטעפּ קנעפּל צו גיינ ווייַטער. דעם קענען אַלע זיין קאַנפיגיערד שפּעטער."; +$LANG["text_add_form_field_types3"] = "דעם רילאָודז די תּוכן פון אייער פאָרעם (s). באַמערקונג: דאָס וועט אָווועררייט קיין ענדערונגען איר האָבן געמאכט אויף דעם בלאַט."; +$LANG["text_add_form_field_types4"] = "אין פאַל איר לויפן אין פּראָבלעמס, דריקט דאָ צו האָפּקען דעם שריט. אַלע אַנריזאַלווד פעלדער זענען באַשטימט צו נוצן די פעליקייַט וואַלועס. איר קענען קאַסטאַמייז די פעלדער שפּעטער."; +$LANG["text_add_form_field_types_manual_upload"] = "אויב איר האָבן שוין געקענט צו סמאַרט פיל דיין פעלדער, איר זאלט ​​ווילן צו פּרובירן אַן אנדער ברירה באַשייד: ופּלאָאַד קאפיעס פון אייער פארמען אין די פעלדער ונטער."; +$LANG["text_add_form_field_types_manual_upload2"] = "באַמערקונג: טאָן ניט ופּלאָאַד רוי פפּ בלעטער (אָדער אנדערע סערווער-זייַט קאָד) - פּונקט ופּלאָאַד דעם HTML ווערסיעס. צו באַקומען דעם, קוק און אויפֿהיטן דעם בלאַט פון אייער וועב בלעטער."; +$LANG["text_add_form_field_types_multiple_fields_found"] = "עס זענען קייפל פעלדער וואס קען נישט ווערן געפונען אין דער פאָרעם בלאַט איר ספּעסאַפייד. דעם איז מערסטנס מסתּמא געפֿירט דורך איינער פון די ווייַטערדיק:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "איר אריין איינער אָדער מער פון די פאָרעם URL ס פון דיין מאַלטי-בלאַט פאָרמע ינקערעקטלי."; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "איינער אָדער מער זייַטלעך פון אייער פאָרמע זענען פּאַראָל פּראָטעקטעד און דער שריפט קען נישט צוטריט דעם בלאַט."; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "איר ינקערעקטלי אריין אייער פאָרמע URL."; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "דריקט דאָ צו צוריקקער צו דער פארעם אינפארמאציע בלאַט צו קאָנטראָלירן אייער סעטטינגס."; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "איר פארביטן אייער פאָרעם (s) נאָך מאכן די פּראָבע סאַבמישאַן"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "דריקט דאָ צו לייגן דורך אנדערן פּרובירן סאַבמישאַן."; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "דיין פאָרעם איז פּאַראָל פּראָטעקטעד און דער שריפט קען נישט צוטריט דעם בלאַט."; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "אין אן אנדער קוויטל / פֿענצטער פון דעם בלעטערער, ​​קלאָץ אין אייער פאָרמע דעמאָלט גיט די רעפרעש Page קנעפּל אונטן צו פּרובירן צו שייַעך-געפינען די פעלדער."; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "אויב גאָרניט פון די אויבן סאַלושאַנז אַרבעט, איר זאלט אויך ווילן צו פּרובירן מאַניואַלי ופּלאָאַדינג אייער פארמען פֿאַר פּראַסעסינג ."; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "עס זענען קייפל פעלדער וואס קען נישט ווערן געפונען אין דער פאָרעם בלעטער איר ספּעסאַפייד. דעם איז מערסטנס מסתּמא געפֿירט דורך איינער פון די:"; +$LANG["text_add_form_help_link"] = "אויב איר לויפן אין קיין קאָנפליקט בעשאַס די טרעפ, פּרובירן לייענען אויס באַניצער דאַקיומענטיישאַן ."; +$LANG["text_add_form_step_1_text_1"] = "די פאלגענדע בלעטער פירן איר דורך די סטעפּס צו קאַנפיגיער פאָרם מכשירים צו קראָם דיין פאָרמע סאַבמישאַנז. איידער קאַנטיניוינג, ביטע טשעק וואָס:"; +$LANG["text_add_form_step_1_text_2"] = "דיין פאָרעם איז שוין געווארן באשאפן און עס ס 'אַקסעסאַבאַל דורך אַ URL (לאָקאַלהאָסט איז פיין)"; +$LANG["text_add_form_step_1_text_3"] = "זענען קענען צו ענדערן דיין פאָרעם"; +$LANG["text_add_form_step_2_para_2"] = "עפֿן דיין פאָרעם אין אַ רעדאַקטאָר פון דיין ברירה און טוישן דיין פאָרמע פאַרבינדן צו די ווייַטערדיקע, מיט די צוויי למד פיעלדס."; +$LANG["text_add_form_step_2_para_3"] = "ווייַטער, עפֿענען דיין פאָרעם אין אַ נעץ בלעטערער. אָנעסן אין יעדער פעלד און פאָרלייגן עס. נאָך סאַבמיטינג, איר זאָל זען אַ אָנזאָג אָנזאָג. אַמאָל דעם אָנזאָג איז געוויזן, צוריק צו די זייַטל און גיט די דערפרישן קנעפּל אונטן. ווען דער פּראָצעס איז גאַנץ, איר וועט זען אַ פאָרזעצן קנעפּל אונטן, טאַקינג איר צו דעם לעבן טרעטן."; +$LANG["text_add_form_step_2_para_6"] = "אין דיין פאָרמע סאַבמישאַן, אַרייננעמען די פאלגענדע וואַלועס. זיי קען זיין גאַנג גלייך דורך פפּ אָדער פּאַסט זיין דורך די פאָרעם זיך. אונטן זייַנען יגזאַמפּאַלז פון יעדער. די (\$ וואַרנאַמע) איז אַ כאַש (אָדער אַססאָסיאַטיווע מענגע) פון אַלע פאָרעם סאַבמישאַן אינפֿאָרמאַציע - דאָס איז יוזשאַוואַלי די (\$ פּאָסטוואַר) אָדער (\$ סעססיאָנוואַר) בייטעוודיק, אָבער עס קען זיין פירונג בילט."; +$LANG["text_add_form_step_2_text_2"] = "אַרייַן די URL פון אייער "טאַנגקיו " בלאַט דאָ. דעם איז ווו איר ווילן מענטשן צו זיין דירעקטעד צו נאָך די פאָרעם איז דערלאנגט."; +$LANG["text_add_form_step_3_para_1"] = "דער בלאַט ליס אַלע פיעלדס אין דיין פאָרמע סאַבמישאַן. ביטע ונטערזוכן יעדער פעלד און צונעמען קיין אַז איר טאָן ניט דאַרפֿן סטאָרד פֿאַר אַלע סאַבמישאַן. אויב איר ויסמעקן אַ גילטיק פעלד דורך צופאַל, אָדער וועלן צו טוישן די אינפֿאָרמאַציע סטאָרד דורך דיין פאָרעם, צוריק צו די פֿריִערדיקע בלאַט צו שיקן אַ נייַע test סאַבמישאַן."; +$LANG["text_add_form_step_3_para_2"] = "באַמערקונג: אויב איר'רע שיקט קייפל וואַלועס דורך טשעקקבאָקסעס אָדער אַ מולטי-סעלעקטירן קעסטל, מאַכן זיכער דיין פעלד נאָמען ענדס מיט די [] אותיות (זען דעם באַניצער Documentation פֿאַר מער אינפֿאָרמאַציע)."; +$LANG["text_add_form_step_3_text_1"] = "דאָ ס ווו דער שפּאַס סטאַרץ! בייַ דעם פונט, פאָרם מכשירים איז ווארטן פֿאַר אַ פּראָבע סאַבמישאַן פון אייער פאָרעם. עס וועט נוצן דעם פאָרעם סאַבמישאַן צו וויסן וואָס אינפֿאָרמאַציע זאָל זיין סטאָרד אין די דייטאַבייס."; +$LANG["text_add_form_step_3_text_2"] = "דורך פּוינטינג דיין פאָרעם צו פאָרם מכשירים"; +$LANG["text_add_form_step_3_text_3"] = "ניצן די פאָרם מכשירים אַפּי"; +$LANG["text_add_form_step_3_text_4"] = "צו הילף ויסשטימען דיין פאָרעם, מיר פֿאָרשלאָגן איר לייענען איינער פון די ווייַטערדיקע טוטאָריאַלז:"; +$LANG["text_add_form_step_3_text_5"] = "זיי פאַרענטפערן ווי צו שטעלן זיך דיין פאָרעם אין צוגרייטונג פֿאַר די פּראָבע סאַבמישאַן, און אַרייננעמען אנדערע אינפֿאָרמאַציע וואָס קען זיין פון הילף. די שורה פון פפּ איר וועט דאַרפֿן איז:"; +$LANG["text_add_form_step_3_text_6"] = "דער ינשורז די דאַטן איז אַקשלי געשיקט צו פאָרם מכשירים. ווען איר האָט שטעלן דורך דיין test סאַבמישאַן, דריקט דעם קנעפּל אונטן."; +$LANG["text_add_form_step_3_text_7"] = "אויף דעם בלאַט פריערדיק צו דיין לעצט "דאַנקען איר" בלאַט, זיין זיכער צו לייגן די פאלגענדע פּאַראַמעטער צו די \$ פּאַראַמס בייטעוודיק:"; +$LANG["text_add_form_step_5_para_1"] = "די דאַטאַבייס האט שוין שטעלן זיך צו פֿאַר דעם פאָרעם און די פאָרעם איז געווארן אַקטיווייטיד פֿאַר נוצן. אויב איר נייע דער סאַבמישאַן דורך פּוינטינג דיין פאָרעם צו פּראָסעסס.פפּ, ביטע צוריק צו דיין פאָרעם און צונעמען די פאלגענדע למד פעלד:"; +$LANG["text_add_form_step_5_para_2"] = "דערנאָך באַזוכן דיין "דאַנקען איר" בלאַט צו ליידיק די סעשאַנז. אַמאָל דעם איז דורכגעקאָכט, אַלע נייַע פאָרעם סאַבמישאַנז וועט זיין פּראַסעסט און סטאָרד דורך פאָרם מכשירים. פּרוּווט מייקינג אַ סאַבמישאַן אָדער צוויי צו באַשטעטיקן די אינפֿאָרמאַציע איז אַלע ופּלאָאַדינג ריכטיק."; +$LANG["text_add_form_step_5_para_3"] = "אויב איר ווילט צו פיין-ניגן דיין פאָרעם פֿאַר אָפּציעס אַזאַ ווי אַוטאָ-ימיילינג, אַדינג עקסטרע פאָרמע פיעלדס פעלד, אָדער קאַסטאַמייזינג די פאָרעם פעלד טייפּס, איר מאַי ענדערן דיין פאָרמע ביי קיין פונט."; +$LANG["text_add_form_step_5_para_4"] = "זינט דיין פאָרמע כּולל טעקע צופֿעליקער פיעלדס, איר וועט דאַרפֿן צו קאַנפיגיער יעדער פעלד צו ספּעציפיצירן דער טעקע צופֿעליקער טעקע, וואָס טעקעס זייַנען דערלויבט און. דאָס קען זיין געפֿונען אויף דער ווייַז קוויטל פון די ענדערן פאָרמע בלאַט."; +$LANG["text_add_form_step_5_para_5"] = "אויב די סאַבמישאַן איז געשיקט דורך דער אַפּי, ענדערן די פט_אַפּי_יניט_פאָרמ_פּאַגע שורה אויף די ערשטע בלאַט פון דיין פאָרעם צו:"; +$LANG["text_add_submission_button"] = "דער לייג סובמיססיאָן קנעפּל נאָר אויס פֿאַר קוקן וואס האָבן די "מייַ לייגן סאַבמישאַנז " אָפּציע שטעלן צו "יאָ "."; +$LANG["text_admin_email_placeholder_info"] = "דאָס איז דעם בליצפּאָסט אַדרעס פון די פאָרם מכשירים אַדמיניסטראַטאָר, דיפיינד אין דיין אקאונט סעטטינגס. דער בלויז אַוטפּוץ דעם בליצפּאָסט אַדרעס, אַזוי אויב איר ווילט צו ניצן ווי אַ HTML לינק, איר וועט דאַרפֿן צו יינוויקלען עס אין אַן <אַ> צעטל, ווי אַזוי:
    <אַ הרעפ="מאַילטאָ:{\$אַדמינעמאַיל}"> (\$ אַדמינעמאַיל) </ אַ>"; +$LANG["text_also_default_login_page_theme"] = "(אַלסאָ די פעליקייט לאָגין בלאַט טעמע)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "ערשטער, ביטע קלייַבן אייער פאָרמע טיפּ."; +$LANG["text_client_form_page"] = "דער בלאַט ליס אַלע די פאָרמס און קוקן אַסיינד צו דעם קליענט. עצה: אין באַפעל פֿאַר זיי צו זען אַ פאָרעם 'ס סאַבמישאַנז, זיי דאַרפֿן צו זיין אַסיינד צו ביי מינדסטער מען זען."; +$LANG["text_client_map_filters_desc1"] = "קליענט מאפע פילטערס לאָזן איר באַגרענעצן די סאַבמישאַנז וואָס ווייזן זיך אין דעם View דורך מאַפּינג די וואַלועס אין אַ פאָרעם פעלד צו די וואַלועס אין אַ קליענט קאָנטע."; +$LANG["text_client_no_forms"] = "איר דערווייַל האָבן קיין פאָרמס בארעכטיגט פֿאַר רעצענזיע."; +$LANG["text_client_welcome"] = "ברוכים הבאים! דער פּראָגראַם סטאָרז אַלע אינפֿאָרמאַציע סאַבמיטאַד דורך דיין וועבזייטל וויזיטערז. צו זעהן סאַבמישאַנז פֿאַר אַ באַזונדער פאָרמע פּונקט דריקט אויף די מיינונג לינק, אָדער זעט דעם לעפטמאָסט נאוויגאציע מעניו פֿאַר אנדערע אָפּציעס."; +$LANG["text_config_file_created"] = "דיין קאָנפיג.פפּ פייל איז שוין באשאפן."; +$LANG["text_config_file_not_created"] = "מיר קען נישט מאַכן דיין קאָנפיג.פפּ טעקע. איר וועט דאַרפֿן צו זיך די פייל מאַניואַלי."; +$LANG["text_config_file_not_created_instructions"] = "נאָכמאַכן און פּאַפּ די אינהאַלט פֿון די אָפּטיילונג אונטן אין אַ טעקע גערופֿן קאָנפיג.פפּ און צופֿעליקער עס דורך פטפּ צו די פאָרם מכשירים / גלאבאלע טעקע (דער טעקע אַז אויך כּולל אַ ביסל אנדערע טעקעס און דיירעקטעריז, איין טעקע גערופֿן ליסענסע.טקסט)."; +$LANG["text_confirm_delete_form"] = "יאָ, איך וועלן צו ויסמעקן דעם פאָרעם"; +$LANG["text_create_admin_account"] = "איצט מיר'רע גאָוינג צו זיך דעם אַדמיניסטראַטאָר ס 'באַריכט. דאָס איז גענוצט פֿאַר אָנפירונג אַלע אַספּעקץ פון פאָרם מכשירים, אַזאַ ווי אַדינג פאָרמס און קריייטינג קליענט אַקאַונץ."; +$LANG["text_create_new_client_account"] = "ניצן די פאָרעם אונטן צו באַשאַפן אַ נייַע קליענט קאָנטע. אַלע פיעלדס זענען פארלאנגט."; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "זען פפּ {\$datefunctionlink}פונקציע פֿאַר פאָרמאַטטינג אָפּציעס"; +$LANG["text_default_file_settings_page"] = "דער בלאַט דיפיינז דער טעקע צופֿעליקער סעטטינגס פֿאַר דיין פאָרם מכשירים ינסטאַלירונג. די רולז צולייגן צו אַלע וויקיפּעדיע ופּלאָאַדעד דורך פאָרם מכשירים, סיידן יקספּליסאַטלי אָווועררידאַן פֿאַר אַ יחיד פאָרמע פעלד. באַמערקונג: אויב איר טוישן די צופֿעליקער טעקע נאָך טעקעס האָבן שוין ופּלאָאַדעד, זיי וועלן ווערן אויטאָמאַטיש מוווד צו די נייַע טעקע."; +$LANG["text_default_theme_cache_folder_not_writable"] = "איידער קאַנטיניוינג, איר וועט דאַרפֿן צו דערהייַנטיקן דיין / טימז / פעליקייט / קאַש טעקע צו לאָזן פול לייענען און שרייבן פּערמישאַנז. אַמאָל דעם איז דורכגעקאָכט, דער אַרטיקל וועט ווערן און איר קענען ינסטאַלירן דער שריפט."; +$LANG["text_default_values_in_view"] = "דעם אָפּטיילונג איז אַפּשאַנאַל. אַלע סאַבמישאַנז באשאפן מיט דעם View וועט אַנטהאַלטן די פעליקייַט וואַלועס ספּעסאַפייד דאָ."; +$LANG["text_delete_all_forms"] = "איך וועלן צו ויסמעקן אַלע וויקיפּעדיע וואָס האָט ופּלאָאַדעד דורך די פאָרעם"; +$LANG["text_delete_form_warning"] = "זענט איר זיכער איר ווילן צו ויסמעקן דעם פאָרעם? דער קאַמף קענען ניט זיין אַנדאַן. כל דאַטן וועט זיין פּערמאַנאַנטלי פאַרפאַלן!"; +$LANG["text_edit_admin_menu_page"] = "איר קען ענדערן דיין מעניו אונטן. צו ינשור איר שטענדיק האָבן אַקסעס צו אַלע פאַנגקשאַנאַליטי בארעכטיגט אונטער פאָרם מכשירים, די פאלגענדע בלעטער זענען פארלאנגט: פאָרמס, קליענץ, דיין אקאונט, מאָדולעס, סעטטינגס און לאָגאָוט."; +$LANG["text_edit_client_menu_page"] = "דער אָפּטיילונג לעץ איר קאַסטאַמייז די לינקס נאוויגאציע זייל פֿאַר יעדער באַניצער. איר מעגט זיך ווי פילע קליענט מעניוז ווי איר ווילט און באַשטימען קיין אקאונט צו איינער פון זיי. לויט פעליקייט עס זענען צוויי מעניוז: איין פֿאַר איר, דער אַדמיניסטראַטאָר, און איינער פֿאַר אַלע קליענט אַקאַונץ. דער אַדמיניסטראַטאָר רעגיסטרירן קען זיין געווארן מאדיפיצירט אָבער נישט אראפגענומען."; +$LANG["text_edit_tab_summary"] = "אויב איר ווילט צו גרופּע דעם View ס פעלדער אין טאַבס, פּונקט אַרייַן די קוויטל נעמען ונטער. נאָך איר ניטאָ געטאן, אויסקלייַבן די צונעמען קוויטל פֿאַר יעדער פעלד גרופּע אין די פיעלדס קוויטל ."; +$LANG["text_edit_view_list_page"] = "דעם קוויטל קאָנטראָלס וואָס פעלדער דערשייַנען ווי שפאלטן אויף די סובמיססיאָן ליסטינג בלאַט, און אַ ביסל נאָך סעטטינגס פֿאַר די פעלדער. באַמערקונג: מיר רעקאָמענדירן איר שטעלן ניט מער ווי 4 אָדער 5 פון די מערסט וויכטיק פעלדער אין דער View."; +$LANG["text_email_settings_intro"] = "דער בלאַט לעץ איר ידענטיפיצירן וואָס פון דיין פאָרמע פיעלדס קראָם ימיילז און זייער קאָראַספּאַנדינג נעמען. אַמאָל איר דעפינירן זיי דאָ, איר קענט ניצן זיי אין אייער בליצפּאָסט טעמפּלאַטעס ווי ריסיפּיאַנץ. די שניט איז לעגאַמרע אָפּשאַנאַל."; +$LANG["text_email_tab_summary"] = "דער אָפּטיילונג לעץ איר בויען קיין נומער פון ימיילז צו ווערן געשיקט ווען דיין פאָרעם איז סאַבמיטאַד, און אנדערע טריגערז."; +$LANG["text_email_template_tab"] = "דער אָפּטיילונג לעץ איר באַשליסן וואָס דער אינהאַלט אַפּפּעאַרס אין דער בליצפּאָסט. אויב איר ווילט צו שיקן אייער בליצפּאָסט ווי בלויז טעקסט אָדער בליצפּאָסט, בלויז אַרייַן אַ ווערט פֿאַר אַז אָפּטיילונג. אויב איר אַרייַן אַ ווערט פֿאַר ביידע, דער בליצפּאָסט וועט ווערן געשיקט אין ביידע פאָרמאַץ."; +$LANG["text_email_template_text_1"] = "עס איז געווארן אַ סאַבמישאַן נייע דורך דיין {\$FORMNAME} פאָרמנאַמע."; +$LANG["text_email_template_text_1_c"] = "עס איז געווארן אַ סאַבמישאַן נייע דורך דיין {\$FORMNAME}, פאָרמנאַמע:"; +$LANG["text_email_template_thanks"] = "אַ דאַנק פֿאַר דיין סאַבמישאַן!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "טעות אָנזאָג צו ווייַזן אויב די פעלד פיילז די וואַלאַדיישאַן"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "פונדרויסנדיק פארמען זענען פארמען אַז שוין עקסיסטירן אויף דיין וועבזייַטל, אָדער ערגעץ אויף די וועב. סעלעקטירן דעם אָפּציע אויב איר האָבן אייער אייגן פאָרעם וואָס איר'ד ווי צו ויסשטימען מיט פאָרם מכשירים."; +$LANG["text_fields_tab_summary"] = "דעם בלאַט רשימות אַלע פון ​​אייער פאָרמע פעלדער. צו קאָנטראָלירן ווי זיי דערשייַנען ווען בראַוזינג סאַבמישאַנז, זען דעם קוקן קוויטל . דעלעטינג אַ פעלד אויף דעם בלאַט וועט ויסמעקן עס פון אַלע סאַבמישאַנז, אַזוי ביטע ווערן אָפּגעהיט!"; +$LANG["text_file_extension_info"] = "שרייַבט אַרייַן טעקע יקסטענשאַנז צעשיידט מיט קאַמאַז (למשל דזשפּג, גיף, פּנג) אָדער לאָזן ליידיק צו לאָזן קיין טעקע טיפּ."; +$LANG["text_file_field_placeholders_info"] = "בילד פיעלדס האָבן צוויי ספּעציעלע פּלאַסעהאָלדערס: פילעורל און פילענאַמע. פילעורל איז די פול URL צו די פייל, אַזוי איר קענט לינק גלייך צו עס אין דיין ימיילז; פילענאַמע איז פּונקט די פייל נאָמען."; +$LANG["text_filters_page"] = "נאָר יענע סאַבמישאַנז וואָס טרעפן די רולז איר דעפינירן אונטן וועט דערשיינען אין דעם זע."; +$LANG["text_filters_tips"] = "פאר עצות אויף ווי צו ניצן סאַבמישאַן פילטערס, זען דעם באַניצער Documentation."; +$LANG["text_forgot_password"] = "נישט קיין פּראָבלעם. פּונקט אַרייַן דיין נאמען אונטן און דיין לאָגין אינפֿאָרמאַציע וועט ווערן געשיקט צו אייער בליצפּאָסט אַדרעס אויף טעקע. אויב איר האָט פערגאַטאַן דיין נאמען, ביטע בליצפּאָסט די מאַפּע אַדמיניסטראַטאָר ביי סיטע_אַדמינ_עמאַיל {\$site_admin_email}."; +$LANG["text_form_contains_file_fields"] = "דער פאָרעם כּולל איין אָדער מער טעקע צופֿעליקער פיעלדס:"; +$LANG["text_form_placeholder_info"] = "די ווייַטערדיק פּלאַסעהאָלדערס זאל ווערן געניצט אין קיין email טעמפּלאַטע און שפּראַך פּלאַסעהאָלדער פעלד, ראַגאַרדלאַס פון וועלכער View די email טעמפּלאַטע איז אַסיינד צו. די קשיא פּלאַסעהאָלדערס זענען די ספּעציפיש פאָרמע קשיא, די ענטפער פּלאַסעהאָלדערס זענען די ענטפֿערס צו יעדער פרעגן."; +$LANG["text_form_submission_date_placeholder"] = "דער דאַטע ווען די סאַבמישאַן איז געווען געמאכט."; +$LANG["text_form_tools_form_url"] = "די פול URL פון דער פאָרעם. דעם נאָר האט אַ ווערט פֿאַר עקסטערנאַל פארמען."; +$LANG["text_form_tools_login_url"] = "די לאָגין URL פֿאַר פאָרם מכשירים."; +$LANG["text_form_view_permission_info_admin"] = "באַמערקונג: דאָס פֿאָרמירן דערווייַל האט אַדמיניסטראַטאָר צוטריט טיפּ, אַזוי גאָרניט פון דעם קליענט אַקאַונץ וועט קענען צו זען דעם View."; +$LANG["text_form_view_permission_info_private"] = "באַמערקונג: דאָס פֿאָרמירן דערווייַל האט פּריוואַטע צוטריט טיפּ אַזוי די פּובליק און פּריוואַטע אָפּציעס דאָ וועט זיין באגרענעצט צו אַז סאַבסעט פון קלייאַנץ."; +$LANG["text_ft_installed"] = "קאָנגראַטולאַטיאָנס, פאָרם מכשירים איז געווארן הצלחה אינסטאַלירן!"; +$LANG["text_global_placeholder_info"] = "די פּלאַסעהאָלדערס קען ווערן גענוצט אין קיין מוסטער און קיין פאָרעם."; +$LANG["text_group_name_explanation"] = "פאר פיעלדס צוגעלייגט דורך דעם לייג פאָרם פּראָצעס, "דעם ווערט איז פאַר, אָנגעפילט צו דער ווייַז טעקסט פון וועלכער פעלד ניצט דעם ווערט. איר מאַי ווינטשן צו טוישן דאָס צו בעסער קעראַקטערייז דעם אינהאַלט."; +$LANG["text_install_create_config_file"] = "פאָרמירן מכשירים סטאָרז דיין סערווירער און דאַטאַבייס סעטטינגס אין אַ טעקע גערופֿן קאָנפיג.פפּ, געפֿונען אין דיין / גלאבאלע / טעקע. גיט דער "שאַפֿן טעקע" קנעפּל צו אויטאָמאַטיש דזשענערייט דעם פייל אויף דיין סערווער."; +$LANG["text_install_create_database_tables"] = "איצט מיר'רע גאָוינג צו זיך די פאָרם מכשירים דאַטאַבייס טאַבלעס. דאָס טרעטן ריקוויירז די דאַטאַבייס זיך צו האָבן שוין שוין באשאפן. אויב איר'רע נישט זיכער ווי צו טאָן דאָס, ביטע קאָנטאַקט דיין האָסטינג שפּייזער."; +$LANG["text_install_db_tables_error_tip_1"] = ""ונקנאָוון מיסקל סערווירער האָסט" יוזשאַוואַלי מעאַנס אַז די האָסטנאַמע איר צוגעשטעלט איז פאַלש. טאָמער פּרווו באַשטעטיקן דעם צו "לאָקאַלהאָסט" - דאָס איז אַ פּראָסט וועג צו אָפּשיקן צו די "לאקאל" דאַטאַבייס אויף אַ וועב סערווער."; +$LANG["text_install_db_tables_error_tip_2"] = ""Can נישט פאַרבינדן צו היגע מיסקל סערווירער דורך כאָלעל" מעאַנס די דאַטאַבייס האָסטנאַמע פעלד איז ווידער פאַלש."; +$LANG["text_install_db_tables_error_tip_3"] = ""אַקסעס דינייד פֿאַר באַניצער:" מעאַנס אַז עס איז אַ פּראָבלעם מיט דיין נאמען / שפּריכוואָרט קאָמבינאַציע."; +$LANG["text_install_db_tables_error_tip_4"] = ""אַקסעס דינייד פֿאַר באַניצער: ... צו דאַטאַבייס ..." מעאַנס אַז כאָטש דיין נאמען און שפּריכוואָרט איר סאַפּלייד איז ריכטיק, עס איז געווען ניט געקענט צו פאַרבינדן צו אַז באַזונדער דאַטאַבייס מיט וואָס קאָנטע. דאָס קען מיינען אַז אָדער דיין דאַטאַבייס נאָמען איז פאַלש, אָדער אַז די באנוצער קאָנטע איז נישט אַסאָושיייטאַד מיט וואָס דאַטאַבייס."; +$LANG["text_install_email_content_text"] = "עס זענען פילע רעסורסן אויף אונדזער וועבזייטל צו העלפן איר באַקומען סטאַרטעד, אַרייַנגערעכנט אונדזער אָנליין דאַקיומענטיישאַן (https://docs.formtools.org) און טוטאָריאַלז (https://docs.formtools.org/tutorials). אויב איר געפֿינען איר באַקומען סטאַק אָדער האָבן אַ קשיא, פרעגן אַ קשיא אויף גהיטאַב (https://github.com/formtools/core/issues/)."; +$LANG["text_install_form_tools_server_not_supported"] = "אנטשולדיגט, פאָרם מכשירים וועט נישט קענען צו לויפן אויף דיין סערווער. ביטע גיט דאָ פֿאַר די מינימום באדערפענישן."; +$LANG["text_install_system_check"] = "דער בלאַט ראַנז אַ ביסל טעסץ אויף דיין סיסטעם צו ינשור עס ס 'קענען צו לויפן פאָרם מכשירים."; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "אינערלעכער פארמען עקסיסטירן בלויז אין פאָרם מכשירים - ניט אנדערש אויף דיין פּלאַץ. בלויז פאָרם מכשירים באַניצער אַקאַונץ וועט האָבן צוטריט צו די פאָרעם. סעלעקטירן דעם אָפּציע אויב איר טאָן ניט האָבן אַ יגזיסטינג פאָרעם."; +$LANG["text_internal_form_intro"] = "ניצן די פאָרעם ונטער צו שאַפֿן אַ נייַ אינערלעכער פאָרעם. אַלע סעטטינגס, אַרייַנגערעכנט דעם נומער און צופרידן פון די פאָרעם פעלדער קענען זיין ווערן פארענדערט און קאַנפיגיערד שפּעטער."; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "אויף כּדי צו לאָגין און נוצן פאָרם מכשירים, איר מוזט האָבן דזשאַוואַסקריפּט ינייבאַלד אין אייער בלעטערער. ביטע געבן עס איצט, און גיט דערפרישן אין אייער בלעטערער."; +$LANG["text_last_modified_date_explanation_c"] = "די לעצטע מאָל די סאַבמישאַן איז געווארן מאדיפיצירט. פאר נייַע סאַבמישאַנז, דאָס איז דער זעלביקער ווי:"; +$LANG["text_limit_email_content_desc"] = "דעם אָפּציע בלויז אַרבעט פֿאַר HTML און טעקסט צופרידן דזשענערייטאַד מיט סמאַרטי לופּס."; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(נאָר ליס קוקן מיט איינס אָדער מער פילטערס דיפיינד)"; +$LANG["text_log_in_to_ft"] = "אַרייַנלאָגירן אין צו פאָרם מכשירים"; +$LANG["text_login"] = "ביטע אַרייַנלאָגירן אין אונטן צו אַקסעס די (\$ פּראָגראַמ_נאַמע) אַדמיניסטראַטיאָן פּאַנעל. אויב איר האָט פערגאַטאַן דיין שפּריכוואָרט, דריקט דאָ."; +$LANG["text_login_info"] = "ווי פארלאנגט, דאָ איז דיין לאָגין אינפֿאָרמאַציע."; +$LANG["text_name_of_form"] = "די נאָמען פון די פאָרעם."; +$LANG["text_no_clients"] = "עס זייַנען דערווייַל ניט קלייאַנץ אין די דאַטאַבייס. צו לייגן אַ נייַע קליענט קאָנטע, גיט דער לייג קליענט קנעפּל אונטן."; +$LANG["text_no_clients_found"] = "ניט קיין קלייאַנץ האָט געפֿונען. פּרוּווט בראָדאַנינג דיין זוכן קרייטיריאַ."; +$LANG["text_no_fields_in_view"] = "דעם View טוט ניט האָבן קיין פעלדער אין עס. גיט דער לינק ונטער."; +$LANG["text_no_forms"] = "עס זייַנען דערווייַל ניט פאָרמס אין דער דאַטאַבייס. צו לייגן אַ נייַע פאָרעם, גיט דער לייג פאָרם קנעפּל אונטן."; +$LANG["text_no_forms_found"] = "ניט פארמען זענען געפונען."; +$LANG["text_no_forms_found_search"] = "ניט פארמען זענען געפונען. פרובירט בראָדנינג אייער זוכן קרייטיריאַ."; +$LANG["text_no_modules_found"] = "ניט קיין מאַדזשולז האָט געפֿונען. פּרוּווט בראָדאַנינג דיין זוכן קרייטיריאַ."; +$LANG["text_no_recipients_added"] = "ניט קיין ריסיפּיאַנץ האָבן שוין צוגעלייגט."; +$LANG["text_no_search_results"] = "עס זענען קיין רעזולטאַטן מיט די זוך קרייטיריאַ / זען."; +$LANG["text_no_submissions_found"] = "אנטשולדיגט, קיין סאַבמישאַנז האָט געפֿונען."; +$LANG["text_no_themes"] = "איר טאָן ניט האָבן קיין טעמעס דיפיינד. גיט די קנעפּל אונטן צו דערפרישן דיין טעמע רשימה, אָדער קאָנטראָל דעם פאָרם מכשירים באַניצער דאַקיומענטיישאַן פֿאַר אינפֿאָרמאַציע וועגן אַדינג טעמעס."; +$LANG["text_non_deletable_fields"] = "דעם פעלד איז געניצט דורך די קאָר שריפט און קענען ניט זיין עדיטיד אָדער אויסגעמעקט אָן קאָזינג ינקאָמפּאַטיביליטיעס. אויב איר ווילט צו מאַכן ענדערונגן צו די פעלד טיפּ, מאַכן אַ קאָפּיע פון ​​עס און רעדאַגירן די קאָפּיע."; +$LANG["text_option_list_group_explanation"] = "אויב דאָס איז אויסגעקליבן, עס לעץ צו גרופּע אייער אָפּציעס. ווי די גרופּעס זענען געוויזן דעפּענדס אויף די פעלד טיפּ ניצן דעם אָפּציע רשימה."; +$LANG["text_option_list_page"] = "Radio קנעפּלעך, טשעקקבאָקסעס, דראָפּדאָוונס און מאַלטי-אויסקלייַבן דראָפּדאָוון פעלדער אַלע צושטעלן דעם באַניצער מיט קייפל אָפּציעס פון וואָס זיי קענען אויסקלייַבן איינער אָדער מער זאכן. אין פאָרם מכשירים, די ביסט באַוווסט ווי אַפּשאַן ליס. בכלל, די זענען באשאפן אויטאָמאַטיש דורך די לייגט עקסטערנאַל פאָרם פּראָצעס, אָבער איר קענען מאַניואַלי צוגעבן אָדער רעדאַגירן אייער אָפּציע רשימות ונטער אויב אייער פאָרמע צופרידן ענדערונגען אָדער איר בויען פעלדער וואס זענען נאָר געניצט ינעווייניק."; +$LANG["text_option_list_used_by_fields"] = "דעם אַפּשאַן ליסטע איז געניצט דורך קייפל פאָרמע פעלדער. אויב איר דערהייַנטיקן די אינפֿאָרמאַציע ונטער, עס וועט זיין פארענדערט פֿאַר אַלע פון די פעלדער (זען דעם פאָרם פיעלדס קוויטל צו זען די רשימה פון פעלדער). אויב איר ווילט צו דערהייַנטיקן די וואַלועס פֿאַר איין, אָדער אַ סאַבסעט פון די פעלדער וואס זענען איצט אַסיינד, דריקט דאָ צו שאַפֿן אַ נייַ אַפּשאַן ליסטע מיט דער זעלביקער וואַלועס ווי דעם איין. און איר קענען באַשטימען די פאָרעם פעלדער איר ווילן צו די נייע גרופּע."; +$LANG["text_public_form_omit_list_page"] = "פובליק פאָרמס געבן איר די נוץ פון לעטינג אַלע קליענט אַקאַונץ אַקסעס זיי אָן האַווינג צו מאַניואַלי באַשטימען יעדער קליענט צו זיי. דער בלאַט לעץ איר פּינפּוינט יענע קלייאַנץ וואָס קען נישט אַקסעס דעם פאָרעם, אפילו כאָטש די פאָרעם איז אנגעצייכנט ווי עפנטלעך."; +$LANG["text_public_view_omit_list_page"] = "פובליק קוקן געבן איר די נוץ פון לעטינג אַלע קליענט אַקאַונץ אַקסעס זיי אָן האַווינג צו מאַניואַלי באַשטימען יעדער קליענט צו זיי. דער בלאַט לעץ איר פּינפּוינט יענע קלייאַנץ וואָס קען נישט אַקסעס דעם באַזונדער זעה."; +$LANG["text_reference_tab_info"] = "דעם בלאַט רשימות אַלע פּלאַסעהאָלדערס פאַראַנען פֿאַר דיין פאָרעם. פּלאַסעהאָלדערס זענען סטרינגס וועלכע קענען ווערן גענוצט אין די email טעמפּלאַטעס, און פעלדער אנגעצייכנט מיט אַ ספּעציעל פּלאַסעהאָלדער ייקאַן . ווען אריין אין אַ פעלד, זיי זענען דינאַמיקאַללי קאָנווערטעד צו די געהעריק אָפּשאַצן ווען די פעלד איז וויוד אָדער די email איז געשיקט."; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "איבערבליק דער באַניצער Documentation"; +$LANG["text_send_email_from_edit_submission_page"] = "אַרייננעמען אָפּציע צו שיקן דעם בליצפּאָסט פֿון קוקן סובמיססיאָן בלאַט"; +$LANG["text_smart_fill_option_list_problem"] = "מיר האבן געקענט צו סמאַרט פיל דיין פעלד אָפּציעס. אָבער, ווי אַן אנדער ברירה, איר קענען פּרובירן ופּלאָאַדינג אַ קאָפּיע פון ​​אייער פאָרמע בלאַט אין דעם פעלד ונטער. באַמערקונג: טאָן ניט ופּלאָאַד רוי פפּ בלעטער (אָדער אנדערע סערווער-זייַט קאָד) - פּונקט ופּלאָאַד דעם HTML ווערסיע. צו באַקומען דעם, קוק און אויפֿהיטן דעם בלאַט פון אייער וועב בלעטער."; +$LANG["text_submission_ip_address"] = "די IP אדרעס פון דעם באַניצער וואָס נייע דער סאַבמישאַן."; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "ניצן די פאָרעם אונטן צו אָדער View אָדער שיקן זיך אַן בליצפּאָסט דזשענערייטאַד פֿון דעם בליצפּאָסט מוסטער. דער בליצפּאָסט איז בלויז געשיקט צו דעם בליצפּאָסט ספעציפישער אונטן; די הויפּט, סיסי און בקק בליצפּאָסט אַדרעס ריסיפּיאַנץ זענען איגנאָרירט בשעת טעסטינג."; +$LANG["text_test_email_templates_no_submissions"] = "אויף כּדי צו פּרובירן אייער בליצפּאָסט טעמפּלאַטעס, איר מוזן ערשט שטעלן דורך אין מינדסטער איין פאָרעם סאַבמישאַן."; +$LANG["text_theme_page_intro"] = "דער בלאַט ליס אַלע פון דיין טימז. קליקט אויף אַ געמינערטע בילד צו זען אַ גרעסערע ביישפּיל פון דער טעמע ס סטיילז. די "ינייבאַלד" טשעקקבאָקס דאַטערמאַנז צי אָדער נישט אַז טעמע מאַי ווערן סעלעקטעד ביי קלייאַנץ. צו בלעטער אַלע בארעכטיגט טימז, באַזוכן דעם פאָרם מכשירים וועבזייטל."; +$LANG["text_tutorial_adding_first_form"] = "טוטאָריאַל: אַדדינג דיין ערשטער פאָרמע!"; +$LANG["text_unique_submission_id"] = "די יינציק סאַבמישאַן שיין."; +$LANG["text_unused_option_list"] = "דעם אָפּציע רשימה איז ניט זייַענדיק געניצט דורך קיין פאָרעם פעלדער."; +$LANG["text_upgraded"] = "דיין ינסטאַלירונג איז געווארן אַפּגריידיד צו {\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "דעם אַפּשאַן ליסטע איז געניצט דורך די ווייַטערדיק פעלדער."; +$LANG["text_view_fields_info"] = "דעם קוויטל קאָנטראָלס וואָס פעלדער ווייַזן אַרויף ווען עדיטינג אַ סאַבמישאַן אין דעם View, זייער סדר און צי זיי זענען עדיטאַבלע אָדער ניט."; +$LANG["text_view_tab_summary"] = "דעם קוויטל לעץ איר מאַכן פאַרשידענע וועגן צו גרופּע און צולייגן אייער דאַטע. קוקן לאָזן איר מאַכן מנהג סובסעץ פון אייער פאָרעם דאַטע צו שפּאַלטן עס אין מאַנידזשאַבאַל טשאַנגקס, און צו שיעור וואָס קלייאַנץ קען זען אָדער רעדאַגירן."; +$LANG["validation_account_disabled"] = "אנטשולדיגט, דיין אקאונט איז געווארן אויסגעלאָשן."; +$LANG["validation_account_not_recognized"] = "אנטשולדיגט, וואָס נאמען איז ניט דערקענען."; +$LANG["validation_account_not_recognized_info"] = "אנטשולדיגט, וואָס נאמען איז ניט געפֿונען. ביטע פרובירט נאכאמאל, אָדער קאָנטאַקט די מאַפּע אַדמיניסטראַטאָר ביי די אַדרעס אונטן."; +$LANG["validation_account_pending"] = "דיין באנוצער קאָנטע איז פּענדינג האַסקאָמע דורך אַן אַדמיניסטראַטאָר."; +$LANG["validation_check_delete_client"] = "זענט איר זיכער איר ווילן צו ויסמעקן דעם קליענט קאָנטע?"; +$LANG["validation_client_password_missing_number"] = "דער קליענט שפּריכוואָרט מוזן אַנטהאַלטן בייַ מינדסטער איין נומער (0-9)."; +$LANG["validation_client_password_missing_special_char"] = "דער קליענט שפּריכוואָרט מוזן אַנטהאַלטן בייַ מינדסטער איין פון די דאָזיקע אותיות: {\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "דער קליענט שפּריכוואָרט מוזן אַנטהאַלטן בייַ מינדסטער איין ופּפּערקאַסע בריוו."; +$LANG["validation_client_password_too_short"] = "דער קליענט שפּריכוואָרט דאַרף צו זייַן בייַ מינדסטער {\$number} אותיות לאַנג."; +$LANG["validation_col_name_is_reserved_word"] = "אנטשולדיגט, דער דאַטאַבייס זייל נאָמען איז אַ אייַזען אַרבעט אין מיסקל. ביטע רענאַמע עס!"; +$LANG["validation_db_name"] = "דאַטאַבאַסע נעמען קענען נישט אַנטהאַלטן פּיריאַדז אָדער סלאַשעס."; +$LANG["validation_db_not_updated_invalid_input"] = "די דאַטאַבייס קען נישט ווערן אפדעיטעד. ביטע טשעק צו זען די וואַלועס איר ענטערד זייַנען גילטיק."; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "אנטשולדיגט, דער פעליקייט אַדמיניסטראַטאָר און קליענט טימז דאַרף שטענדיק זיין ינייבאַלד."; +$LANG["validation_default_phone_num_required"] = "ביטע פּלאָמבירן אין די פול טעלעפאָן נומער פֿאַר די <b> { \$ פעלד} </ b> פעלד - נומערן נאָר."; +$LANG["validation_default_rule_alpha"] = "ביטע נאָר אַרייַן אותיות און נומערן פֿאַר די <b> { \$ פעלד} </ b> פעלד."; +$LANG["validation_default_rule_letters_only"] = "ביטע נאָר אַרייַן אותיות פֿאַר די <b> { \$ פעלד} </ b> פעלד."; +$LANG["validation_default_rule_numbers_only"] = "ביטע נאָר אַרייַן נומערן פֿאַר די <b> { \$ פעלד} </ b> פעלד."; +$LANG["validation_default_rule_required"] = "ביטע אַרייַן אַ ווערט פֿאַר די <b> { \$ פעלד} </ b> פעלד."; +$LANG["validation_default_rule_valid_email"] = "ביטע אַרייַן אַ גילטיק email אַדרעס פֿאַר די <b> { \$ פעלד} </ b> פעלד."; +$LANG["validation_delete_form_confirm"] = "ביטע טשעק די קעסטל צו באַשטעטיקן אַז איר ווילט צו ויסמעקן דעם פאָרעם."; +$LANG["validation_delete_non_empty_option_list"] = "ווארענונג! דעם אַפּשאַן ליסטע איז געניצט דורך איין אָדער מער פאָרמע פעלדער. דעלעטינג עס וועט מאַכן די פעלדער אויפהערן צו אַרבעט רעכט."; +$LANG["validation_display_names_incomplete"] = "ביטע אַרייַן אַ ווערט פֿאַר אַלע דעם ווייַז נאַמעס, אָדער גיט די סמאַרט פיל אָפּציע צו קומען זיי דינאַמיקאַללי."; +$LANG["validation_duplicate_form_field_name"] = "איר קענען ניט האָבן קייפל פעלדער מיט די זעלבע פעלד נאָמען."; +$LANG["validation_email_not_found_or_invalid"] = "אנטשולדיגט, דער בליצפּאָסט אַסאָושיייטאַד מיט דיין אקאונט אָדער קען נישט עקסיסטירן אָדער איז פאַרקריפּלט."; +$LANG["validation_folder_invalid_permissions"] = "אויף כּדי צו לויפן די פּראָבע, די פּערמישאַנז דאַרפֿן צו ווערן באַשטימט אויף די צופֿעליקער טעקע צו לאָזן פֿאַר לייענען און רייטינג טעקעס (777 אויף יוניקס)."; +$LANG["validation_folder_not_writable"] = "דער טעקע איז נישט ווריטעאַבלע."; +$LANG["validation_internal_form_too_many_fields"] = "אנטשולדיגט, איר קענען בלויז באשאפן פארמען מיט 1000 פעלדער אָדער ווייניקער."; +$LANG["validation_invalid_admin_email"] = "ביטע אַרייַן אַ גילטיק אַדמינסטראַטאָר ס 'בליצפּאָסט אַדרעס."; +$LANG["validation_invalid_admin_username"] = "אייער נאמען זאל נאָר צונויפשטעלנ זיך פון אַלפאַנומעריק אותיות (אַז און 0-9)."; +$LANG["validation_invalid_client_username"] = "דער קליענט ס 'באַניצער נאָמען קען נאָר צונויפשטעלן פון אַלפאַנומעריק אותיות (אַז און 0-9)."; +$LANG["validation_invalid_client_username2"] = "אנטשולדיגט, נאמען ס 'קען נאָר אַנטהאַלטן לעטטערס, נומערן און די אַנדערסקאָר כאַראַקטער. ביטע אַרייַן אַ נייַע נאמען."; +$LANG["validation_invalid_column_name"] = "זייַל נעמען קען נאָר זיין אַלפאַנומעריק (אַז, 0-9). ביטע טשעק דעם זייַל נעמען."; +$LANG["validation_invalid_custom_from_email"] = "ביטע אַרייַן אַ גילטיק פירונג 'פֿון' בליצפּאָסט אַדרעס."; +$LANG["validation_invalid_custom_reply_to_email"] = "ביטע אַרייַן אַ גילטיק פירונג 'ענטפֿערן-צו' בליצפּאָסט אַדרעס."; +$LANG["validation_invalid_default_sessions_timeout"] = "ביטע אַרייַן אַ גילטיק ווערט (אַ נומער) פֿאַר די פעליקייט סעשאַנז טיימאַוט."; +$LANG["validation_invalid_email"] = "ביטע אַרייַן אַ גילטיק בליצפּאָסט אַדרעס."; +$LANG["validation_invalid_email_id"] = "אנטשולדיגט, וואָס ס 'אַן פאַרקריפּלט בליצפּאָסט שיין."; +$LANG["validation_invalid_folder"] = "אנטשולדיגט, דאָס קען נישט באַווייזן צו זיין אַ גילטיק טעקע."; +$LANG["validation_invalid_form_field_names"] = "פאָרמירן פיעלדס קען נאָר זיין אַלפאַנומעריק און אַנדערסקאָרז (אַז, 0-9, _), מיט קיין ספּייסיז."; +$LANG["validation_invalid_num_clients_per_page"] = "ביטע נאָר אַרייַן נומערן אין די NUM קליענץ פּער זייַט פעלד."; +$LANG["validation_invalid_num_emails_per_page"] = "ביטע נאָר אַרייַן דידזשאַץ פֿאַר די ימיילז פּער בלאַט."; +$LANG["validation_invalid_num_form_fields"] = "ביטע נאָר אַרייַן נומערן אין די מספר פון פיעלדס פעלד."; +$LANG["validation_invalid_num_forms_per_page"] = "ביטע נאָר אַרייַן נומערן אין די NUM פאָרמס פּער זייַט פעלד."; +$LANG["validation_invalid_num_menus_per_page"] = "ביטע נאָר אַרייַן דידזשאַץ פֿאַר די מעניוז פּער בלאַט."; +$LANG["validation_invalid_num_modules_per_page"] = "ביטע נאָר אַרייַן נומערן אין די NUM מאָדולעס פּער זייַט פעלד."; +$LANG["validation_invalid_num_option_lists_per_page"] = "ביטע נאָר אַרייַן נומערן אין די NUM אַפּשאַן ליס פּער Page פעלד."; +$LANG["validation_invalid_num_submissions_per_page"] = "ביטע אַרייַן אַ גילטיק נומער פון סאַבמישאַנז פּער בלאַט."; +$LANG["validation_invalid_sessions_timeout"] = "ביטע אַרייַן אַ גילטיק סעסיע טיימאַוט (ינטאַדזשערז בלויז!)."; +$LANG["validation_invalid_tab_assign_values"] = "ביטע נאָר אַרייַן נומערן אין דער 'פֿון' און 'צו' פיעלדס."; +$LANG["validation_invalid_table_prefix"] = "ביטע אַרייַן אַ דייטאַבייס פּרעפֿיקס באשטייט פון בריוו און די אַנדערסקאָר כאַראַקטער נאָר."; +$LANG["validation_invalid_upload_folder"] = "דיין סערווירער ס ינסטאַלירונג פון פפּ איז אַן אינוואליד באַשטעטיקן פֿאַר די ופּלאָאַד_טמפּ_דיר ווערט. "{\$upload_folder}" איז נישט אַ גילטיק טעקע."; +$LANG["validation_invalid_url"] = "ביטע אַרייַן אַ גילטיק URL."; +$LANG["validation_invalid_username"] = "דיין נאמען קען נאָר צונויפשטעלן פון אַלפאַנומעריק אותיות (אַז און 0-9)."; +$LANG["validation_is_form_active"] = "ביטע אָנווייזן צי די פאָרעם איז אַקטיוו אָדער נישט."; +$LANG["validation_menu_name_taken"] = "אנטשולדיגט, "די מעניו נאָמען איז שוין טאַקען. ביטע קלייַבן אַ נייַע נאָמען."; +$LANG["validation_modules_search_no_status"] = "ביטע אויסקלייַבן אָדער די ענאַבלעד אָדער דיסאַבלעד טשעקקבאָקסעס."; +$LANG["validation_no_access_type"] = "ביטע אַרייַן די אַקסעס טיפּ."; +$LANG["validation_no_account_logout_url"] = "ביטע אַרייַן דיין לאָגאָוט URL."; +$LANG["validation_no_account_password_confirmed"] = "ביטע שייעך-אַרייַן דיין נייַע פּאַראָל."; +$LANG["validation_no_account_password_confirmed2"] = "ביטע שייַעך-אַרייַן די ניו שפּריכוואָרט."; +$LANG["validation_no_admin_email"] = "ביטע אַרייַן דעם אַדמיניסטראַטאָר ס 'בליצפּאָסט אַדרעס."; +$LANG["validation_no_admin_theme"] = "ביטע אויסקלייַבן די טעמע פֿאַר דעם אַדמיניסטראַטאָר קאָנטע."; +$LANG["validation_no_admin_theme_swatch"] = "ביטע אויסקלייַבן אַ סוואַטש פֿאַר דעם אַדמיניסטראַטאָר טעמע."; +$LANG["validation_no_client_email"] = "ביטע אַרייַן דעם קליענט ס 'בליצפּאָסט אַדרעס."; +$LANG["validation_no_client_first_name"] = "ביטע אַרייַן דעם קליענט ס ערשטער נאָמען."; +$LANG["validation_no_client_last_name"] = "ביטע אַרייַן דעם קליענט ס 'לעצטע נאָמען."; +$LANG["validation_no_client_login_page"] = "ביטע אָנווייזן וואָס בלאַט דער קליענט זאָל זיין רידערעקטיד צו ווען זיי אַרייַנלאָגירן ין"; +$LANG["validation_no_client_password"] = "ביטע אַרייַן דעם קליענט ס 'שפּריכוואָרט."; +$LANG["validation_no_client_theme_swatch"] = "ביטע אויסקלייַבן אַ פעליקייַט סוואַטש פֿאַר דעם קליענט אַקאַונץ."; +$LANG["validation_no_client_username"] = "ביטע אַרייַן דעם קליענט 'ס נאמען."; +$LANG["validation_no_column_name"] = "ביטע אַרייַן אַלע זייַל נעמען, אָדער געב די סמאַרט פיל קנעפּל צו אויטאָמאַטיש פּלאָמבירן זיי."; +$LANG["validation_no_column_selected"] = "ביטע סעלעקטירן ביי מינדסטער איין פעלד צו ווייזן ווי אַ זייל אויף דעם סאַבמישאַן ליסטינג בלאַט."; +$LANG["validation_no_custom_from_email"] = "ביטע אַרייַן די פירונג 'פֿון' בליצפּאָסט אַדרעס."; +$LANG["validation_no_custom_recipient_email"] = "ביטע אַרייַן די פירונג באַקומער בליצפּאָסט אַדרעס."; +$LANG["validation_no_custom_reply_to_email"] = "ביטע אַרייַן די פירונג 'ענטפֿערן-צו' בליצפּאָסט אַדרעס."; +$LANG["validation_no_date_format"] = "ביטע קומען אַ טאָג פֿאָרמאַט."; +$LANG["validation_no_db_column_single"] = "ביטע אַרייַן די דאַטאַבאַסע קאַלאַם נאָמען."; +$LANG["validation_no_db_hostname"] = "ביטע אַרייַן די דאַטאַבאַסע האָסטנאַמע."; +$LANG["validation_no_db_name"] = "ביטע אַרייַן די דאַטאַבאַסע נאָמען."; +$LANG["validation_no_db_username"] = "ביטע אַרייַן די דאַטאַבאַסע חשבון נאמען."; +$LANG["validation_no_default_client_theme"] = "ביטע סעלעקטירן דעם פעליקייט טעמע פֿאַר אַלע נייַע קליענט אַקאַונץ."; +$LANG["validation_no_default_language"] = "ביטע סעלעקטירן דעם פעליקייט שפּראַך פֿאַר דיין ינסטאַלירונג פון פאָרם מכשירים."; +$LANG["validation_no_default_sessions_timeout"] = "ביטע אַרייַן די פעליקייט סעסיע טיימאַוט פֿאַר באַניצער אַקאַונץ."; +$LANG["validation_no_display_text"] = "ביטע אַרייַן די ווייַז טעקסט פֿאַר יעדער פעלד."; +$LANG["validation_no_display_text_single"] = "ביטע אַרייַן די ווייַז טעקסט ווערט."; +$LANG["validation_no_edit_submission_page_label"] = "ביטע אַרייַן די רעדאַקטירן סובמיססיאָן בלאַט פירמע."; +$LANG["validation_no_email"] = "ביטע אַרייַן אייער בליצפּאָסט אַדרעס."; +$LANG["validation_no_email_config_field"] = "ביטע ספּעציפיצירן וואָס פורעמען פעלד איז דער בליצפּאָסט פעלד."; +$LANG["validation_no_email_content"] = "ביטע אַרייַן די בליצפּאָסט אינהאַלט פֿאַר ביי מינדסטער איינער פון די פאָרמאַץ (HTML אָדער טעקסט)."; +$LANG["validation_no_email_from_field"] = "ביטע דעם בליצפּאָסט 'פֿון' פעלד."; +$LANG["validation_no_email_template_name"] = "ביטע אַרייַן די בליצפּאָסט מוסטער נאָמען."; +$LANG["validation_no_email_template_view_id"] = "ביטע סעלעקטירן דעם זען צו וואָס דער בליצפּאָסט מוסטער זאָל זיין מאַפּט."; +$LANG["validation_no_email_template_view_mapping_value"] = "ביטע אָנווייזן ווען די בליצפּאָסט זאָל ווערן געשיקט."; +$LANG["validation_no_enabled_themes"] = "ביטע ינשור אַז ביי מינדסטער איין טעמע איז ינייבאַלד."; +$LANG["validation_no_first_name"] = "ביטע אַרייַן דיין ערשטע נאָמען."; +$LANG["validation_no_form_field_name"] = "ביטע אַרייַן אַלע פאָרעם פעלד נעמען."; +$LANG["validation_no_form_field_single"] = "ביטע אַרייַן דער פארעם פיעלד ווערט."; +$LANG["validation_no_form_id"] = "די פאָרעם שיין איז נישט ספעציפישער. ביטע אַרייַנלאָגירן זיך און פּרובירן נאכאמאל."; +$LANG["validation_no_form_name"] = "ביטע אַרייַן די פאָרעם נאָמען."; +$LANG["validation_no_form_url"] = "ביטע אַרייַן די פאָרעם URL."; +$LANG["validation_no_last_name"] = "ביטע אַרייַן דיין לעצטע נאָמען."; +$LANG["validation_no_login_page"] = "ביטע אָנווייזן וואָס בלאַט איר וואָלט ווי צו ווערן געשיקט יעדער צייט איר אַרייַנלאָגירן ין"; +$LANG["validation_no_logout_url"] = "ביטע אַרייַן די לאָגאָוט URL."; +$LANG["validation_no_main_email_recipient"] = "ביטע אַריינגיין אין מינדסטער איין הויפּט בליצפּאָסט באַקומער (יע נישט אַ קק אָדער בקק)."; +$LANG["validation_no_menu"] = "ביטע סעלעקטירן אַ מעניו פֿאַר דעם באַניצער קאָנטע."; +$LANG["validation_no_menu_id"] = "ביטע סעלעקטירן אַ מעניו."; +$LANG["validation_no_num_clients_per_page"] = "ביטע אַרייַן די נומער פון קליענט אַקאַונץ פּער בלאַט."; +$LANG["validation_no_num_emails_per_page"] = "ביטע אַרייַן די נומער פון ימיילז צו רשימה פּער בלאַט."; +$LANG["validation_no_num_form_fields"] = "ביטע אַרייַן די נומער פון פעלדער פֿאַר דיין פאָרעם."; +$LANG["validation_no_num_forms_per_page"] = "ביטע אַרייַן די נומער פון פאָרמס פּער בלאַט."; +$LANG["validation_no_num_menus_per_page"] = "ביטע אַרייַן די נומער פון מעניוז צו רשימה פּער בלאַט."; +$LANG["validation_no_num_modules_per_page"] = "ביטע אַרייַן די נומער פון מאַדזשולז פּער בלאַט."; +$LANG["validation_no_num_option_lists_per_page"] = "ביטע אַרייַן די נומער פון אָפּציע רשימות פּער בלאַט."; +$LANG["validation_no_num_submissions_per_page"] = "ביטע אַרייַן די נומער פון סאַבמישאַנז צו ווייַז פּער בלאַט."; +$LANG["validation_no_option_list_name"] = "ביטע אַרייַן די אָפּציע רשימה נאָמען."; +$LANG["validation_no_page_titles"] = "ביטע אַרייַן די פעליקייט בלאַט טייטאַלז פֿאַר דעם באַניצער אַקאַונץ."; +$LANG["validation_no_password"] = "ביטע אַרייַן דיין פּאַראָל."; +$LANG["validation_no_program_name"] = "ביטע אַרייַן די פּראָגראַם נאָמען."; +$LANG["validation_no_second_password"] = "ביטע שייַעך-אַרייַן אייער שפּריכוואָרט."; +$LANG["validation_no_sessions_timeout"] = "ביטע אַרייַן די סעסיע טיימאַוט."; +$LANG["validation_no_smart_fill_values"] = "ביטע אַרייַן די פאָרעם פעלד נאָמען און די URL פון דעם פאָרעם."; +$LANG["validation_no_table_prefix"] = "ביטע אַרייַן אַ דייטאַבייס פּרעפֿיקס."; +$LANG["validation_no_tabs_defined"] = "ניט קיין טאַבס דיפיינד"; +$LANG["validation_no_test_email_recipient"] = "ביטע אַרייַן דעם בליצפּאָסט אַדרעס פון וווּ מיר זאָלן שיק די פּראָבע בליצפּאָסט."; +$LANG["validation_no_test_email_submission_id"] = "ביטע אַרייַן די סאַבמישאַן שיין נומער."; +$LANG["validation_no_theme"] = "ביטע סעלעקטירן אַ טעמע."; +$LANG["validation_no_theme_swatch"] = "ביטע אויסקלייַבן אַ סוואַטש פֿאַר די אויסגעקליבן טעמע."; +$LANG["validation_no_timezone_offset"] = "ביטע אַרייַן די טימעזאָנע פאָטאָ."; +$LANG["validation_no_titles"] = "ביטע אַרייַן דעם בלאַט טייטאַלז."; +$LANG["validation_no_two_column_names"] = "אנטשולדיגט, איר קען נישט קומען דער זעלביקער דאַטאַבייס זייל נאָמען צוויי מאָל."; +$LANG["validation_no_ui_language"] = "ביטע סעלעקטירן אַ שפּראַך פֿאַר די צובינד."; +$LANG["validation_no_url"] = "ביטע אַרייַן אַ URL."; +$LANG["validation_no_username"] = "ביטע אַרייַן דיין נאמען."; +$LANG["validation_no_username_or_js"] = "איר מוזט קומען דיין נאמען. ביטע אַקטאַווייט דזשאַוואַסקריפּט אין אייער בלעטערער."; +$LANG["validation_no_view_fields"] = "דיין View קען ניט אַנטהאַלטן קיין פיעלדס! איר דאַרפֿן צו באַשטימען אין מינדסטער איין פעלד פֿאַר עס צו זיין עפּעס צו ווייַזן זיך אין דיין געשטאַלט."; +$LANG["validation_no_view_fields_selected"] = "ביטע אויסקלייַבן איין אָדער מער פיעלדס צו לייגן צו די זען."; +$LANG["validation_no_view_name"] = "ביטע אַרייַן די נאָמען פון דיין געשטאַלט."; +$LANG["validation_num_rows_to_add"] = "ביטע אַרייַן די נומער פון ראָוז צו לייגן."; +$LANG["validation_option_list_name_taken"] = "אנטשולדיגט, דעם אָפּציע רשימה נאָמען איז שוין גענומען. ביטע קלייַבן אַ נייַ נאָמען."; +$LANG["validation_password_in_password_history"] = "פֿאַר זיכערהייַט, איר קענען ניט אַרייַן די זעלבע שפּריכוואָרט ווי עפעס פון די לעצטע {\$history_size}פּאַסווערדז. ביטע אַרייַן אַ אַנדערש שפּריכוואָרט."; +$LANG["validation_passwords_different"] = "ביטע מאַכן זיכער די פּאַסווערדז זענען דער זעלביקער."; +$LANG["validation_please_enter_search_date_range"] = "ביטע סעלעקטירן דעם זוכן טאָג קייט."; +$LANG["validation_please_enter_search_keyword"] = "ביטע אַרייַן די זוך קיווערד."; +$LANG["validation_select_field_type"] = "ביטע סעלעקטירן אַ פעלד טיפּ."; +$LANG["validation_select_submissions_to_copy"] = "ביטע אויסקלייַבן די סאַבמישאַנז איר וואָלט ווי צו צייכענען."; +$LANG["validation_select_submissions_to_delete"] = "ביטע סעלעקטירן יענע סאַבמישאַנז איר וואָלט ווי צו ויסמעקן."; +$LANG["validation_smart_fill_cannot_fill"] = "זייַט מוחל, מיר קען נישט אָנהערן דעם פעלד."; +$LANG["validation_smart_fill_invalid_field_type"] = "מיר האָט ניט געקענט צו געפינען אַ פעלד, אָבער דאָס איז נישט אַ דראָפּדאָוון, טשעקקבאָקס אָדער ראַדיאָ גרופּע."; +$LANG["validation_smart_fill_no_field_found"] = "זייַט מוחל, מיר קען נישט געפֿינען אַ פאָרעם פעלד מיט וואָס נאָמען אויף דעם בלאַט ספעציפישער."; +$LANG["validation_smart_fill_no_page"] = "ביטע געפינען דעם בלאַט מיט דעם פעלד איר ווילט צו סמאַרט פיל."; +$LANG["validation_smart_fill_upload_all_pages"] = "ביטע צופֿעליקער אַלע די בלעטער אין דיין פאָרעם."; +$LANG["validation_upload_folder_not_writable"] = "דער צייטווייליק צופֿעליקער טעקע ספעציפישער דורך דיין פפּ ינסטאַלירונג איז נישט ווריטאַבלע. ביז דעם איז פאַרפעסטיקט, וויקיפּעדיע קען נישט זיין ופּלאָאַדעד דורך פאָרם מכשירים (אָדער קיין אנדערע פפּ פּראָגראַם). ביטע קאָנטאַקט דיין האָסטינג שפּייזער."; +$LANG["validation_upload_html_files_only"] = "ביטע נאָר צופֿעליקער HTML וויקיפּעדיע."; +$LANG["validation_username_taken"] = "אנטשולדיגט, וואָס נאמען איז שוין טאַקען. ביטע אַרייַן נאָך אַ נאמען."; +$LANG["validation_wrong_password"] = "זייַט מוחל, וואָס שפּריכוואָרט קען נישט געטראָפֿן."; +$LANG["word_about"] = "וועגן"; +$LANG["word_access"] = "אַקסעס"; +$LANG["word_account"] = "קאָנטע"; +$LANG["word_account_sp"] = "באַריכט (s)"; +$LANG["word_accounts"] = "אַקקאָונץ"; +$LANG["word_action"] = "אַקציע"; +$LANG["word_active"] = "אַקטיוו"; +$LANG["word_add"] = "לייג צו"; +$LANG["word_add_rightarrow"] = "לייג »"; +$LANG["word_add_uc_rightarrow"] = "לייגן »"; +$LANG["word_administration"] = "אַדמיניסטראַציע"; +$LANG["word_administrator"] = "אַדמיניסטראַטאָר"; +$LANG["word_after"] = "נאָך"; +$LANG["word_aquamarine"] = "אַקוואַמאַרינע"; +$LANG["word_asc"] = "אַסק"; +$LANG["word_author"] = "מחבר"; +$LANG["word_author_c"] = "מחבר:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«צוריק"; +$LANG["word_bcc_c"] = "בקק:"; +$LANG["word_before"] = "איידער"; +$LANG["word_benefits"] = "בענעפיץ"; +$LANG["word_blue"] = "בלוי"; +$LANG["word_cancel"] = "באָטל מאַכן"; +$LANG["word_cc_c"] = "סיסי:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "טשעקקבאָקסעס"; +$LANG["word_checklist"] = "טשעקליסט"; +$LANG["word_client"] = "קליענט"; +$LANG["word_client_c"] = "קליענט:"; +$LANG["word_clients"] = "קליענץ"; +$LANG["word_close"] = "פאַרמאַכן"; +$LANG["word_code"] = "קאָד"; +$LANG["word_column"] = "זייל"; +$LANG["word_columns"] = "שפאלטן"; +$LANG["word_columns_sp"] = "זייַל (s)"; +$LANG["word_complete"] = "גאַנץ"; +$LANG["word_configuration"] = "קאָנפיגוראַטיאָן"; +$LANG["word_content"] = "אינהאַלט"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "געדויערן »"; +$LANG["word_copy"] = "Copy"; +$LANG["word_custom"] = "פירונג"; +$LANG["word_data"] = "דאַטן"; +$LANG["word_date"] = "טאָג"; +$LANG["word_debugging_c"] = "דיבאַגינג:"; +$LANG["word_delete"] = "ויסמעקן"; +$LANG["word_desc"] = "דעסק"; +$LANG["word_direct"] = "גלייך"; +$LANG["word_disabled"] = "פאַרקריפּלט"; +$LANG["word_documentation"] = "דאָקומענטאַטיאָן"; +$LANG["word_done"] = "געטאן"; +$LANG["word_drawbacks"] = "דראַוובאַקקס"; +$LANG["word_dropdown"] = "דראָפּדאָוון"; +$LANG["word_edit"] = "רעדאַקטירן"; +$LANG["word_editable"] = "עדיטאַבלע"; +$LANG["word_email"] = "Email"; +$LANG["word_email_c"] = "Email:"; +$LANG["word_emails"] = "עמאַילס"; +$LANG["word_enabled"] = "ענאַבלעד"; +$LANG["word_equals"] = "עקוואַלס"; +$LANG["word_error"] = "פֿעלער"; +$LANG["word_error_c"] = "טעות:"; +$LANG["word_examples_c"] = "עקסאַמפּלעס:"; +$LANG["word_external"] = "פונדרויסנדיק"; +$LANG["word_fail"] = "פאַרלאָזן"; +$LANG["word_field"] = "פעלד"; +$LANG["word_field_sp"] = "פעלד (s)"; +$LANG["word_fields"] = "פיעלדס"; +$LANG["word_fields_sp"] = "פעלד (s)"; +$LANG["word_file"] = "פייל"; +$LANG["word_file_b_uc"] = "[אַרטיקל]"; +$LANG["word_files"] = "טעקעס"; +$LANG["word_filters"] = "פילטערס"; +$LANG["word_filters_sp"] = "פילטער (s)"; +$LANG["word_for"] = "פֿאַר"; +$LANG["word_form"] = "פאָרמע"; +$LANG["word_form_c"] = "פאָרמירן:"; +$LANG["word_formatting"] = "פאָרמאַטטינג"; +$LANG["word_forms"] = "פאָרמס"; +$LANG["word_found"] = "געפֿונען"; +$LANG["word_from"] = "פֿון"; +$LANG["word_from_c"] = "פֿון:"; +$LANG["word_general"] = "אַלגעמיין"; +$LANG["word_green"] = "גרין"; +$LANG["word_grey"] = "גריי"; +$LANG["word_height"] = "הייך"; +$LANG["word_help"] = "הילף"; +$LANG["word_hidden"] = "פאַרבאָרגן"; +$LANG["word_highlight"] = "הויכפּונקט"; +$LANG["word_horizontal"] = "האָריזאָנטאַל"; +$LANG["word_hour"] = "שעה"; +$LANG["word_hours"] = "שעה"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "שיין"; +$LANG["word_image"] = "בילד"; +$LANG["word_incomplete"] = "ינקאָמפּלעטע"; +$LANG["word_install"] = "ינסטאַלירן"; +$LANG["word_installation"] = "ייַנמאָנטירונג"; +$LANG["word_internal"] = "ינערלעך"; +$LANG["word_language"] = "שפּראַך"; +$LANG["word_large"] = "גרויס"; +$LANG["word_like"] = "ווי"; +$LANG["word_login"] = "לאָגין"; +$LANG["word_logo"] = "לאָגאָ"; +$LANG["word_logout"] = "לאָגאָוט"; +$LANG["word_main"] = "הויפט"; +$LANG["word_medium"] = "מיטל"; +$LANG["word_menu"] = "מעניו"; +$LANG["word_menus"] = "מענוס"; +$LANG["word_minutes"] = "מינוט"; +$LANG["word_misc"] = "מיסק"; +$LANG["word_module"] = "מאָדולע"; +$LANG["word_modules"] = "מאָדולעס"; +$LANG["word_na"] = "ען / א"; +$LANG["word_name"] = "נאָמען"; +$LANG["word_name_c"] = "נאמען:"; +$LANG["word_never"] = "קיינ מאָל ניט"; +$LANG["word_next_rightarrow"] = "ווייטער »"; +$LANG["word_next_step_rightarrow"] = "ווייטער טרעטן »"; +$LANG["word_no"] = "קיין"; +$LANG["word_none"] = "קיין"; +$LANG["word_notes"] = "נאָטעס"; +$LANG["word_notification"] = "אָנזאָג"; +$LANG["word_number"] = "נומער"; +$LANG["word_off"] = "אַוועק"; +$LANG["word_offline"] = "אָפפלינע"; +$LANG["word_okay"] = "אָוקיי"; +$LANG["word_on"] = "אויף"; +$LANG["word_online"] = "אָנליין"; +$LANG["word_operator"] = "אָפּעראַטאָר"; +$LANG["word_options"] = "אָפּציעס"; +$LANG["word_orange"] = "מאַראַנץ"; +$LANG["word_order"] = "כּדי"; +$LANG["word_other"] = "אנדערע"; +$LANG["word_other_c"] = "אנדערע:"; +$LANG["word_page"] = "Page"; +$LANG["word_page_c"] = "זייַט:"; +$LANG["word_pass"] = "וועג"; +$LANG["word_password"] = "שפּריכוואָרט"; +$LANG["word_password_c"] = "שפּריכוואָרט:"; +$LANG["word_pending"] = "פּענדינג"; +$LANG["word_permissions"] = "פּערמיססיאָנס"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«פֿריִער"; +$LANG["word_private"] = "פּריוואַט"; +$LANG["word_public"] = "פובליק"; +$LANG["word_purple"] = "לילאַ"; +$LANG["word_recipient"] = "באַקומער"; +$LANG["word_recipient_sp"] = "באַקומער (s)"; +$LANG["word_red"] = "רויט"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "נעם"; +$LANG["word_remove_uc_leftarrow"] = "«באַזייטיקן"; +$LANG["word_reply_to"] = "ענטפער-צו"; +$LANG["word_reply_to_c"] = "ענטפער-צו:"; +$LANG["word_required"] = "פארלאנגט"; +$LANG["word_reset"] = "באַשטעטיק"; +$LANG["word_resolved"] = "רעסאָלוועד"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "שורע"; +$LANG["word_search"] = "זוכן"; +$LANG["word_searchable"] = "סעאַרטשאַבלע"; +$LANG["word_select"] = "אויסקלייַבן"; +$LANG["word_setting"] = "באַשטעטיקן"; +$LANG["word_settings"] = "סעטטינגס"; +$LANG["word_show"] = "ווייַזן"; +$LANG["word_size"] = "נומער"; +$LANG["word_skipped"] = "סקיפּפּעד"; +$LANG["word_small"] = "קליין"; +$LANG["word_solution"] = "באַשייד"; +$LANG["word_sortable"] = "סאָרטאַבלע"; +$LANG["word_start"] = "אָנהייב"; +$LANG["word_status"] = "סטאטוס"; +$LANG["word_string"] = "שטריקל"; +$LANG["word_subject"] = "ענין"; +$LANG["word_subject_c"] = "ענין"; +$LANG["word_submenu"] = "סובמענו"; +$LANG["word_submission"] = "סובמיססיאָן"; +$LANG["word_submissions"] = "סובמיססיאָנס"; +$LANG["word_system"] = "סיסטעם"; +$LANG["word_tab"] = "קוויטל"; +$LANG["word_tabs"] = "טאַבס"; +$LANG["word_tabs_sp"] = "קוויטל (s)"; +$LANG["word_test"] = "Test"; +$LANG["word_text"] = "טעקסט"; +$LANG["word_textarea"] = "טעקסטאַרעאַ"; +$LANG["word_textbox"] = "טעקסטבאָקס"; +$LANG["word_theme"] = "טעמע"; +$LANG["word_themes"] = "טהעמעס"; +$LANG["word_time"] = "צייַט"; +$LANG["word_tiny"] = "קליינטשיק"; +$LANG["word_tips"] = "עצות"; +$LANG["word_today"] = "הייַנט"; +$LANG["word_truncate_q"] = "טרונקאַטע?"; +$LANG["word_uninstall"] = "נעם אַוועק"; +$LANG["word_unknown"] = "ומבאַקאַנט"; +$LANG["word_update"] = "דערהייַנטיקן"; +$LANG["word_upgrade"] = "ופּגראַדע"; +$LANG["word_url_c"] = "URL:"; +$LANG["word_user"] = "באַניצער"; +$LANG["word_username"] = "נאמען"; +$LANG["word_username_c"] = "נאמען:"; +$LANG["word_validation"] = "וואַלידאַטיאָן"; +$LANG["word_value"] = "ווערט"; +$LANG["word_value_sp"] = "ווערט (s)"; +$LANG["word_verified"] = "וועריפיעד"; +$LANG["word_verify"] = "באַשטעטיקן"; +$LANG["word_version"] = "ווערסיע"; +$LANG["word_vertical"] = "ווערטיקאַל"; +$LANG["word_view"] = "View"; +$LANG["word_views"] = "קוקן"; +$LANG["word_warning"] = "ווארענונג!"; +$LANG["word_warning_c"] = "ווארענונג:"; +$LANG["word_web"] = "וועב"; +$LANG["word_welcome"] = "ברוכים הבאים!"; +$LANG["word_width_c"] = "ברייט:"; +$LANG["word_words"] = "ווערטער"; +$LANG["word_wysiwyg"] = "וויסיוויג"; +$LANG["word_yellow"] = "געל"; +$LANG["word_yes"] = "יאָ"; \ No newline at end of file diff --git a/global/lang/zh_cn.php b/global/lang/zh_cn.php new file mode 100644 index 00000000..0af70a17 --- /dev/null +++ b/global/lang/zh_cn.php @@ -0,0 +1,1219 @@ +警告!您选择了{\$num_selected_on_page}在此页的意见书和其他网页{\$num_selected_on_other_pages}。请选择下列选项之一:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "警告:您没有选择在此页面的任何意见,但您选择的{\$num_selected_on_other_pages}在其他网页)。请确认您要删除这些意见。
    "; +$LANG["confirm_delete_view"] = "您确定要删除这个观点呢?"; +$LANG["confirm_refresh_page"] = "你肯定要刷新页面?这会失去你所做的任何更改。"; +$LANG["confirm_save_change_before_redirect"] = "已更新的一个或多个领域。你想重定向前保存所做的更改?"; +$LANG["confirm_smart_fill_db_column_fields"] = "你确定要智能填充的数据库列名?这将覆盖现有的值。"; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "此选项将自动生成基于数据库列上显示文本字段名称,这样的数据库表的内容更容易阅读。"; +$LANG["confirm_smart_fill_display_names"] = "您确定要使用智能填充吗?这将会覆盖您的原有显示名称。"; +$LANG["confirm_ungroup_option_list"] = "你确定,你要取消组合此选项列表吗?所有的选项将被集中到一个单一的,未分组列表。"; +$LANG["confirm_uninstall_module"] = "您确定要卸载该模块?所有模块的数据都将丢失。"; +$LANG["date_AM"] = "上午"; +$LANG["date_Fri"] = "星期五"; +$LANG["date_Friday"] = "星期五"; +$LANG["date_Mon"] = "星期一"; +$LANG["date_Monday"] = "星期一"; +$LANG["date_PM"] = "下午"; +$LANG["date_Sat"] = "星期六"; +$LANG["date_Saturday"] = "星期六"; +$LANG["date_Sun"] = "星期日"; +$LANG["date_Sunday"] = "星期日"; +$LANG["date_Thu"] = "星期四"; +$LANG["date_Thursday"] = "星期四"; +$LANG["date_Tue"] = "星期二"; +$LANG["date_Tuesday"] = "星期二"; +$LANG["date_Wed"] = "星期三"; +$LANG["date_Wednesday"] = "星期三"; +$LANG["date_am"] = "上午"; +$LANG["date_month_April"] = "四月"; +$LANG["date_month_August"] = "八月"; +$LANG["date_month_December"] = "十二月"; +$LANG["date_month_February"] = "二月"; +$LANG["date_month_January"] = "一月"; +$LANG["date_month_July"] = "七月"; +$LANG["date_month_June"] = "六月"; +$LANG["date_month_March"] = "三月"; +$LANG["date_month_May"] = "五月"; +$LANG["date_month_November"] = "十一月"; +$LANG["date_month_October"] = "十月"; +$LANG["date_month_September"] = "九月"; +$LANG["date_month_short_Apr"] = "星期五"; +$LANG["date_month_short_Aug"] = "八月"; +$LANG["date_month_short_Dec"] = "十二月"; +$LANG["date_month_short_Feb"] = "二月"; +$LANG["date_month_short_Jan"] = "一月"; +$LANG["date_month_short_Jul"] = "七月"; +$LANG["date_month_short_Jun"] = "六月"; +$LANG["date_month_short_Mar"] = "三月"; +$LANG["date_month_short_May"] = "可能"; +$LANG["date_month_short_Nov"] = "十一月"; +$LANG["date_month_short_Oct"] = "十月"; +$LANG["date_month_short_Sep"] = "九月"; +$LANG["date_pm"] = "下午"; +$LANG["notify_account_deleted"] = "此帐号已被删除。"; +$LANG["notify_account_updated"] = "您的帐号已成功更新。"; +$LANG["notify_add_display_values"] = "新增显示值"; +$LANG["notify_admin_menu_updated"] = "布什政府菜单已被更新。"; +$LANG["notify_admin_theme_overridden"] = "管理员的主题已被手动覆盖。"; +$LANG["notify_allow_url_fopen_not_set"] = "很抱歉,这个测试不能运行在Web服务器上。它要求allow_url_fopen选项被设置在php.ini文件1。此设置允许PHP来访问通过一个网址,这是需要执行这个测试文件。你可以手动测试它上传到该文件通过FTP文件夹,然后试图访问的网址是您所提供的。"; +$LANG["notify_change_temp_password"] = "您只需登录一个临时密码。现在,你应该重置您的密码!"; +$LANG["notify_click_to_edit_new_submission"] = "点击此处编辑新的提交。"; +$LANG["notify_client_account_menus_updated"] = "在客户账户()已更新到{\$menu_name}菜单。您现在可以删除了以前与该帐户(菜单相关联)。"; +$LANG["notify_client_account_not_updated"] = "客户户口不能更新。"; +$LANG["notify_client_account_themes_updated"] = "在客户账户(等)已被更新为主题{\$theme}主题。现在您可以禁用与以前账户(相关的主题)。"; +$LANG["notify_client_account_updated"] = "客户户口已成功更新。"; +$LANG["notify_client_menu_deleted"] = "客户端菜单已被删除。"; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "菜单已被删除,但下面的客户帐户已不再拥有一个菜单!您需要更新以下帐户:"; +$LANG["notify_client_menu_updated"] = "客户端菜单已被更新。"; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "对不起,刚才的菜单试图删除已经被使用下面列出的客户。为了删除菜单中,您首先需要客户指定的其他菜单。在客户端上的名称点击编辑,个人帐户,所有帐户或指定一个不同的菜单使用下面的下拉。"; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "对不起,你的主题只是一位残疾已用于下列客户帐户。要禁用的主题你首先需要每个客户端分配到另一个主题。在客户端上的名称点击编辑,个人帐户,或分配到所有帐户使用一个主题下面的下拉清单。"; +$LANG["notify_edit_email_fields_link"] = "点击这里指定的表单域的电子邮件领域,所以你可以在您的电子邮件模板,他们的目标。"; +$LANG["notify_edit_field_new_field"] = "这是一个新的领域 。您将需要更新才能够充分编辑这一领域的主要页面。"; +$LANG["notify_edit_option_list_after_save"] = "你必须选择一个选项列表,然后能够编辑它之前保存更改。"; +$LANG["notify_email_field_config_deleted"] = "该电子邮件配置已被删除。"; +$LANG["notify_email_fields_not_updated"] = "很抱歉,我们无法更新电子邮件字段。"; +$LANG["notify_email_fields_updated"] = "该电子邮件领域已更新。"; +$LANG["notify_email_not_sent"] = "对不起,电子邮件不能发送。请用以下地址联络管理员。"; +$LANG["notify_email_not_sent_c"] = "很抱歉,无法发送电子邮件:"; +$LANG["notify_email_sent"] = "该电子邮件(拧)已发送。"; +$LANG["notify_email_template_deleted"] = "该电子邮件模板已被删除。"; +$LANG["notify_email_template_updated"] = "该电子邮件模板已更新。"; +$LANG["notify_enabled_module_list_updated"] = "在启用的模块列表已经更新。"; +$LANG["notify_error_saving_fields"] = "节能领域的一个错误。"; +$LANG["notify_field_changes_saved"] = "已经保存到你的领域(S)的变化。"; +$LANG["notify_field_options_smart_filled"] = "你的领域选项已经被智能填充。"; +$LANG["notify_field_selected"] = "该油田已被选中。 点击这里返回主字段列表。"; +$LANG["notify_field_updated"] = "该字段已更新。"; +$LANG["notify_file_not_uploaded"] = "文件不能上传。"; +$LANG["notify_file_uploaded"] = "文件已成功上传。"; +$LANG["notify_filters_not_updated"] = "有一个错误更新此客户端的提交过滤器。"; +$LANG["notify_filters_updated"] = "此客户的提交过滤已更新。"; +$LANG["notify_folder_correct_permissions"] = "这文件夹有正确的许可。"; +$LANG["notify_folder_url_match"] = "文件夹和网址相称。"; +$LANG["notify_folder_url_no_access"] = "测试不能进行。可能是因为 .htaccess 此文件被密码保护中。"; +$LANG["notify_folder_url_no_match"] = "文件夹和网址不相称。"; +$LANG["notify_folder_url_unknown_error"] = "发生不知名的错误。您可手动经FTP上传文件来测试您所提供的网址是否能够使用。"; +$LANG["notify_form_access_type_email_info"] = "这种形式具有管理员访问类型,因此,没有客户访问它并没有列在下面的下拉。"; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "对不起,与该ID不存在的形式。"; +$LANG["notify_form_field_not_added"] = "窗体字段'{\$fieldname}'不能添加。"; +$LANG["notify_form_field_options_updated"] = "表格栏目选项已被更新。"; +$LANG["notify_form_field_removed"] = "表格栏目已成功移除。"; +$LANG["notify_form_fields_removed"] = "表格栏目已成功移除。"; +$LANG["notify_form_not_updated_notify_admin"] = "您的表格不能成功更新。请通知网站管理员。"; +$LANG["notify_form_settings_updated"] = "您的表格设置已成功更新。"; +$LANG["notify_form_submission_updated"] = "您的表格提交已成功更新。"; +$LANG["notify_form_tabs_updated"] = "该标签已更新。"; +$LANG["notify_form_updated"] = "您的表格已成功更新。"; +$LANG["notify_form_views_updated"] = "窗体视图已更新。"; +$LANG["notify_install_invalid_db_info"] = "很抱歉,我们无法连接到数据库使用您提供的资料。此错误信息的数据库返回的是:{\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "你的形式已建立!通过这些选项卡,您可以配置您的表单。"; +$LANG["notify_invalid_account_information_in_sessions"] = "该帐户的信息存储在会议上是无效的。请再次登录以下。"; +$LANG["notify_invalid_license_key"] = "很抱歉,这似乎并没有被有效的许可证密钥。请尝试再次输入。"; +$LANG["notify_invalid_permissions"] = "您没有权限访问此页面。您已登出。"; +$LANG["notify_invalid_search_dates"] = "请使用日期选择器输入一个有效的日期或日期。"; +$LANG["notify_invalid_upload_folder"] = "上载文件夹是无效或不可写。"; +$LANG["notify_lang_list_updated"] = "语系表单已更新。"; +$LANG["notify_login_info_emailed"] = "您的登录资料已经电邮给您。"; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "哎呀,这个模块已经安装!"; +$LANG["notify_module_installed"] = "该模块已经安装。 点击这里选择的模块 。"; +$LANG["notify_module_list_updated"] = "该模块名单已更新。"; +$LANG["notify_module_uninstalled"] = "该模块已卸载。"; +$LANG["notify_module_updated"] = "{\$module}模块已更新{\$version}。 点击这里选择的模块 。"; +$LANG["notify_multi_field_selected"] = "该油田已被选中。 点击这里查看和编辑领域的选择。"; +$LANG["notify_multi_field_updated"] = "该字段已更新。您将可以配置后成立的形式在外地选择。"; +$LANG["notify_multiple_fields_found"] = "多个元素被发现与这一领域的名称({\$field_name})。可能发生这种情况如果网页中包含不止一种形式,或者如果您不小心被任命为您形式的另一个相同的。请选择你想要从下面的列表。"; +$LANG["notify_new_default_view_created"] = "一个新的,包含所有表单字段的默认视图已创建。"; +$LANG["notify_new_submission_created"] = "提交已经创建.您可以在下面选择编辑."; +$LANG["notify_no_account_id_in_sessions"] = "没有用户的帐户ID被发现在会议。请再次登录以下。"; +$LANG["notify_no_api_installed"] = "您没有安装的API"; +$LANG["notify_no_client_permissions"] = "没有设置可以进行编辑。"; +$LANG["notify_no_email_template_selected"] = "请选择电子邮件模板。"; +$LANG["notify_no_emails_defined"] = "没有邮件,已确定了这种形式。要添加一个新的,请点击以下按钮。"; +$LANG["notify_no_field_settings"] = "此字段类型不包含任何额外的设置。"; +$LANG["notify_no_fields_in_tab"] = "此标签不包含任何字段。"; +$LANG["notify_no_option_lists"] = "有没有定义的选项列出。点击下面的按钮来创建一个新的。"; +$LANG["notify_no_test_submission"] = "表格工具还没有收到提交的尚未成功的测试。"; +$LANG["notify_no_user_email_fields_configured"] = "注意:如果你想发送电子邮件到任何电子邮件地址是在形式列入其中,您首先需要配置形式的电子邮件域 。"; +$LANG["notify_no_views"] = "你的表单没有设立任何意见!您将需要至少有一个视图,以管理您的表单数据。"; +$LANG["notify_no_views_assigned_to_client_form"] = "看来,您的用户帐户没有被分配到任何形式的意见,所以你将无法看到任何数据。请向管理员进一步帮助。"; +$LANG["notify_no_views_defined"] = "您没有定义任何意见。您将无法查看这种形式的意见书,除非至少有一个视图创建。点击下面的按钮来创建默认视图。"; +$LANG["notify_option_list_deleted"] = "选项​​列表中已被删除。"; +$LANG["notify_option_list_updated"] = "已更新的选项列表。"; +$LANG["notify_public_form_omit_list_updated"] = "客户端省略此表的名单已更新。"; +$LANG["notify_public_view_omit_list_updated"] = "客户端省略这种看法的名单已更新。"; +$LANG["notify_required_admin_pages"] = "以下页都需要在管理员菜单{\$remaining_pages}"; +$LANG["notify_sessions_timeout"] = "很抱歉,没有任何活动了一段时间,所以我们不得不记录你。请再次登录以下。"; +$LANG["notify_setup_options_updated"] = "设定选项已经更新。"; +$LANG["notify_smart_fill_field_not_found"] = "我们无法找到这个名字 ({\$field_name}) 中的一个字段表(拧)指定)。您可以在下面手动设置字段类型,或按一下按钮来编辑跳过这一领域的更高版本。"; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "您的文件(S)的成功上载。尝试一下智能填充按钮,再试一次。如果此步骤失败,您需要跳过此步骤和配置您的表单字段manally以后。"; +$LANG["notify_smart_fill_submitted"] = "该表格已提交。根据您的形式和领域的多项选择的大小,这可能需要一些时间。"; +$LANG["notify_smart_fill_upload_fields_fail"] = "很抱歉,一个或多个文件,您输入的无法上传。您需要跳过此步骤并配置手动等领域。"; +$LANG["notify_submission_and_files_deleted"] = "提交和相关的文件已经成功删除。"; +$LANG["notify_submission_copied"] = "提交已被复制。"; +$LANG["notify_submission_copied_edit"] = "提交已被复制。 您可以在下面进行编辑。"; +$LANG["notify_submission_deleted"] = "提交已经成功删除。"; +$LANG["notify_submission_deleted_with_problems"] = "提交已被删除,但在删除相关的文件时遇到以下的问题:"; +$LANG["notify_submission_id_not_found"] = "提交 ID 未被找到。"; +$LANG["notify_submission_not_updated"] = "提交不能被更新。"; +$LANG["notify_submissions_and_files_deleted"] = "提交和相关的文件已经成功删除。"; +$LANG["notify_submissions_copied"] = "{\$num_submissions}份意见书已被复制。"; +$LANG["notify_submissions_deleted"] = "提交已经成功移除。"; +$LANG["notify_submissions_deleted_with_problems"] = "提交已被删除,但在删除相关的文件时遇到以下的问题:"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "您的测试电邮不能发送。"; +$LANG["notify_theme_cache_folder_not_writable"] = "这一主题的缓存文件夹不可写。为了使这一主题{\$folder}文件夹必须具有完全的读写权限。"; +$LANG["notify_theme_list_updated"] = "的主题名单已更新。"; +$LANG["notify_themes_settings_updated"] = "您的主题设置已更新。"; +$LANG["notify_view_deleted"] = "视图已被删除。"; +$LANG["notify_view_group_deleted"] = "查看组已被删除。"; +$LANG["notify_view_missing_columns"] = "哎呀!很抱歉,这个观点还没有得到充分的成立还没有。"; +$LANG["notify_view_missing_columns_admin_fix"] = "点击这里来指定哪些领域应该会出现此页面上的列。"; +$LANG["notify_view_updated"] = "视图已更新。"; +$LANG["notify_your_email_sent"] = "您的电邮已经成功发送。"; +$LANG["phrase_100_per_page"] = "每页100个"; +$LANG["phrase_10_per_page"] = "每页10"; +$LANG["phrase_15_per_page"] = "15每页"; +$LANG["phrase_1_direct"] = "1。直接"; +$LANG["phrase_1char"] = "1字符"; +$LANG["phrase_20_per_page"] = "每页20"; +$LANG["phrase_25_per_page"] = "25每页"; +$LANG["phrase_2_code"] = "2。代码"; +$LANG["phrase_2_columns"] = "2列"; +$LANG["phrase_2chars"] = "2个字符"; +$LANG["phrase_3_columns"] = "3列"; +$LANG["phrase_4_columns"] = "4列"; +$LANG["phrase_50_per_page"] = "每页50"; +$LANG["phrase_accepting_submissions"] = "(接受意见书)"; +$LANG["phrase_access_admin_account_c"] = "您可以访问您的管理帐户:"; +$LANG["phrase_access_type"] = "访问类型"; +$LANG["phrase_account_info"] = "帐户信息"; +$LANG["phrase_account_settings"] = "帐户设置"; +$LANG["phrase_action_needed"] = "需要采取的行动"; +$LANG["phrase_add_client"] = "添加客户"; +$LANG["phrase_add_client_menu"] = "添加客户端菜单"; +$LANG["phrase_add_default_settings_rightarrow"] = "添加默认设置»"; +$LANG["phrase_add_field"] = "添加字段"; +$LANG["phrase_add_fields"] = "添加栏目"; +$LANG["phrase_add_fields_rightarrow"] = "添加字段(S)»"; +$LANG["phrase_add_form"] = "添加表格"; +$LANG["phrase_add_form_external"] = "添加表格“ - ”外部“"; +$LANG["phrase_add_form_internal"] = "添加表格“ - ”内部“"; +$LANG["phrase_add_new_group_rightarrow"] = "添加新组»"; +$LANG["phrase_add_num_rows"] = "添加 {\$number} 行(拧)"; +$LANG["phrase_add_row"] = "添加行»"; +$LANG["phrase_add_submission_button"] = "添加提交按钮"; +$LANG["phrase_add_view_rightarrow"] = "添加视图»"; +$LANG["phrase_adding_multi_page_form"] = "添加与API的多页表格"; +$LANG["phrase_adding_single_page_form"] = "添加一个API的单页表格"; +$LANG["phrase_admin_menu"] = "管理员菜单"; +$LANG["phrase_admin_only"] = "只有管理员"; +$LANG["phrase_admin_panel"] = "管理小组"; +$LANG["phrase_administrator_theme"] = "管理员主题"; +$LANG["phrase_advanced_settings_rightarrow"] = "高级设置»"; +$LANG["phrase_all_X_results_selected"] = "所有 {\$numresults} 结果选择"; +$LANG["phrase_all_clients"] = "所有客户"; +$LANG["phrase_all_clients_except_c"] = "客户除外:"; +$LANG["phrase_all_clients_have_access"] = "(所有的客户端访问)"; +$LANG["phrase_all_fields"] = "全部栏目"; +$LANG["phrase_all_fields_displayed"] = "显示所有字段"; +$LANG["phrase_all_statuses"] = "所有状态"; +$LANG["phrase_all_submissions"] = "所有参赛作品"; +$LANG["phrase_allow_fields_edited"] = "允许领域进行编辑"; +$LANG["phrase_alphanumeric"] = "字母数字(AZ,0-9)"; +$LANG["phrase_api_version"] = "API版本"; +$LANG["phrase_apply_timezone_offset"] = "应用时区偏移"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "所有上市的客户指定帐户 {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "所有上市的客户指定帐户 {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "年底"; +$LANG["phrase_at_start"] = "在启动"; +$LANG["phrase_author_link"] = "作者链接"; +$LANG["phrase_auto_disable_account"] = "自动禁用帐户的登录尝试失败后#"; +$LANG["phrase_auto_size"] = "自动调整大小"; +$LANG["phrase_available_clients"] = "目前客户"; +$LANG["phrase_available_fields"] = "可用字段"; +$LANG["phrase_available_option_lists"] = "可用的选项列表"; +$LANG["phrase_available_swatches"] = "可用色板"; +$LANG["phrase_available_swatches_c"] = "可用色板:"; +$LANG["phrase_available_tabs"] = "可用的选项卡"; +$LANG["phrase_available_views"] = "可点击"; +$LANG["phrase_awaiting_form_submission"] = "等待的形式提交。"; +$LANG["phrase_back_to_field_list"] = "«返回字段列表"; +$LANG["phrase_back_to_search_results"] = "回到搜查结果"; +$LANG["phrase_base_view_on"] = "基本视图... ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "更改登录信息"; +$LANG["phrase_characters_limit_p"] = "字符的限制。"; +$LANG["phrase_check_db_settings_try_again"] = "请仔细检查您的数据库设置,点击继续按钮。"; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "检查URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "清理"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "清除忽略列表"; +$LANG["phrase_client_account_settings"] = "客户帐户设置"; +$LANG["phrase_client_field"] = "客户现场"; +$LANG["phrase_client_map_filters"] = "客户地图过滤器»"; +$LANG["phrase_client_may_edit"] = "客户可以编辑"; +$LANG["phrase_client_menu"] = "客户端菜单"; +$LANG["phrase_clients_can_access_form"] = "客户谁可以访问的形式"; +$LANG["phrase_clients_can_access_view"] = "客户谁可以访问视图"; +$LANG["phrase_clients_cannot_access_form"] = "客户谁不能访问的形式"; +$LANG["phrase_clients_cannot_access_view"] = "客户谁不能进入查看"; +$LANG["phrase_clients_may_edit"] = "客户可以编辑"; +$LANG["phrase_code_c"] = "错误代码:"; +$LANG["phrase_code_markup_field"] = "代码/标记领域"; +$LANG["phrase_code_markup_type"] = "代码/标记类型"; +$LANG["phrase_codes_c"] = "错误代码:"; +$LANG["phrase_column_width"] = "列宽"; +$LANG["phrase_company_name"] = "公司名称"; +$LANG["phrase_configure_form_email_fields"] = "配置表单电子邮件域"; +$LANG["phrase_confirm_folder_url_match"] = "文件夹-URL确定吻合"; +$LANG["phrase_connect_rows"] = "连接行"; +$LANG["phrase_copy_email_settings_from"] = "复制电子邮件设置者..."; +$LANG["phrase_copy_settings_from"] = "复制设置从..."; +$LANG["phrase_core_fields"] = "核心领域"; +$LANG["phrase_core_version"] = "核心版本"; +$LANG["phrase_create_account"] = "创建帐户"; +$LANG["phrase_create_admin_account"] = "创建管理员帐户"; +$LANG["phrase_create_config_file"] = "创建配置文件"; +$LANG["phrase_create_database_tables"] = "创建数据库表"; +$LANG["phrase_create_default_view"] = "创建默认视图"; +$LANG["phrase_create_file"] = "创建文件"; +$LANG["phrase_create_group"] = "创建组"; +$LANG["phrase_create_new_email"] = "创建新的电子邮件"; +$LANG["phrase_create_new_menu"] = "创建新菜单"; +$LANG["phrase_create_new_option_list"] = "创建新的选项列表"; +$LANG["phrase_create_new_option_list_group"] = "创建新的选项列表中的组"; +$LANG["phrase_create_new_option_list_rightarrow"] = "创建新的选项列表»"; +$LANG["phrase_create_new_view"] = "创建新视图"; +$LANG["phrase_create_new_view_group"] = "创建新视图集团"; +$LANG["phrase_custom_display_format"] = "自定义显示格式"; +$LANG["phrase_custom_recipient"] = "自定义收件人"; +$LANG["phrase_custom_url"] = "自定义网址"; +$LANG["phrase_dark_blue"] = "深蓝色"; +$LANG["phrase_data_type"] = "数据类型"; +$LANG["phrase_database_hostname"] = "数据库主机名"; +$LANG["phrase_database_name"] = "数据库名称"; +$LANG["phrase_database_password"] = "数据库密码"; +$LANG["phrase_database_settings"] = "数据库设置"; +$LANG["phrase_database_setup"] = "数据设置"; +$LANG["phrase_database_table_prefix"] = "数据库表前缀"; +$LANG["phrase_database_username"] = "数据库用户名"; +$LANG["phrase_date_format"] = "日期格式"; +$LANG["phrase_db_column"] = "数据分栏"; +$LANG["phrase_db_setup_page_4"] = "4。数据库安装"; +$LANG["phrase_default_client_account_theme"] = "默认客户帐户主题"; +$LANG["phrase_default_date_field_search_value"] = "默认日期字段搜索值"; +$LANG["phrase_default_language"] = "默认语言"; +$LANG["phrase_default_menu"] = "默认的菜单"; +$LANG["phrase_default_sessions_timeout"] = "默认的会话超时"; +$LANG["phrase_default_sort_order"] = "默认排序"; +$LANG["phrase_default_tab_label"] = "数据"; +$LANG["phrase_default_theme"] = "默认主题"; +$LANG["phrase_default_value"] = "默认值"; +$LANG["phrase_default_values"] = "默认值"; +$LANG["phrase_default_values_new_submissions"] = "新提交的默认值"; +$LANG["phrase_delete_field"] = "删除字段"; +$LANG["phrase_delete_form"] = "删除表格"; +$LANG["phrase_delete_row"] = "删除行"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "删除相关的文件提交时删除"; +$LANG["phrase_delete_view"] = "删除查看"; +$LANG["phrase_disconnect_rows"] = "断开行"; +$LANG["phrase_display_email"] = "显示电子邮件"; +$LANG["phrase_display_name"] = "显示名称"; +$LANG["phrase_display_text"] = "显示文本"; +$LANG["phrase_display_value"] = "显示值"; +$LANG["phrase_edit_admin_menu"] = "编辑Admin菜单"; +$LANG["phrase_edit_client"] = "修改客户端"; +$LANG["phrase_edit_client_menu"] = "修改客户端菜单"; +$LANG["phrase_edit_email_template"] = "编辑电子邮件模板"; +$LANG["phrase_edit_field"] = "编辑字段"; +$LANG["phrase_edit_field_c"] = "编辑字段:"; +$LANG["phrase_edit_form"] = "编辑表格"; +$LANG["phrase_edit_form_access_type_b"] = "[编辑表单访问类型]"; +$LANG["phrase_edit_option_list"] = "编辑选项列表"; +$LANG["phrase_edit_submission"] = "编辑提交"; +$LANG["phrase_edit_submission_label"] = "编辑提交标签"; +$LANG["phrase_edit_view"] = "编辑视图"; +$LANG["phrase_email_format"] = "电子邮件格式"; +$LANG["phrase_email_settings"] = "电邮设置"; +$LANG["phrase_email_template"] = "电邮模板"; +$LANG["phrase_email_template_name"] = "电子邮件模板名称"; +$LANG["phrase_error_learn_more"] = "了解更多有关此错误的。"; +$LANG["phrase_error_text_intro"] = "请更正以下错误(s)和重新提交:"; +$LANG["phrase_errors_learn_more"] = "对错误代码点击了解更多信息。"; +$LANG["phrase_event_trigger"] = "事件触发"; +$LANG["phrase_external_form"] = "外在形式"; +$LANG["phrase_external_form_info"] = "外在形式的资讯"; +$LANG["phrase_external_your_own_form"] = "外部(你自己的形式)"; +$LANG["phrase_field_comments"] = "现场评论"; +$LANG["phrase_field_label"] = "场标签"; +$LANG["phrase_field_options"] = "域选项"; +$LANG["phrase_field_size"] = "栏目长度"; +$LANG["phrase_field_skipped"] = "场跳过"; +$LANG["phrase_field_specific_settings"] = "特定领域设置"; +$LANG["phrase_field_type"] = "栏目类型"; +$LANG["phrase_field_type_no_validation"] = "有没有可用于这一领域的类型的验证规则。"; +$LANG["phrase_field_types"] = "字段类型"; +$LANG["phrase_field_value"] = "字段值"; +$LANG["phrase_field_values_to_display_values"] = "字段值»显示值"; +$LANG["phrase_final_touches_page_6"] = "6。最后润色"; +$LANG["phrase_finalize_form"] = "完结表格"; +$LANG["phrase_first_name"] = "名字"; +$LANG["phrase_footer_text"] = "页脚信息"; +$LANG["phrase_for_any_form_submission"] = "对于任何形式提交"; +$LANG["phrase_for_view_submissions"] = "只有在提交意见:"; +$LANG["phrase_forgot_password"] = "遗失您的密码?"; +$LANG["phrase_form_already_selected"] = "表格已选定"; +$LANG["phrase_form_email_field_b_c"] = "[形式的电子邮件领域]:"; +$LANG["phrase_form_email_field_configuration"] = "表单电子邮件域配置"; +$LANG["phrase_form_email_fields"] = "电子邮件字段表"; +$LANG["phrase_form_field"] = "表格栏目"; +$LANG["phrase_form_field_contents"] = "表格字段内容"; +$LANG["phrase_form_field_name"] = "表格栏目名称"; +$LANG["phrase_form_field_placeholders"] = "表单域占位符"; +$LANG["phrase_form_fields"] = "表单域"; +$LANG["phrase_form_info"] = "表格信息"; +$LANG["phrase_form_info_2"] = "2。表格信息"; +$LANG["phrase_form_list"] = "表格列表"; +$LANG["phrase_form_name"] = "表格名称"; +$LANG["phrase_form_page"] = "表格Page"; +$LANG["phrase_form_placeholders"] = "表格占位符"; +$LANG["phrase_form_submission"] = "表格提交"; +$LANG["phrase_form_submissions"] = "表单提交"; +$LANG["phrase_form_type"] = "表型"; +$LANG["phrase_form_url"] = "表格 URL"; +$LANG["phrase_form_urls"] = "表格的网址"; +$LANG["phrase_forms_assigned_to_any_account"] = "分配给任何帐户的表格"; +$LANG["phrase_forms_page_default_message"] = "窗体页的默认消息"; +$LANG["phrase_ft_installation"] = "表格工具安装脚本"; +$LANG["phrase_full_width"] = "全宽"; +$LANG["phrase_getting_started"] = "入门"; +$LANG["phrase_global_placeholders"] = "表格占位符"; +$LANG["phrase_group_name"] = "集团名称"; +$LANG["phrase_group_options_q"] = "组选项?"; +$LANG["phrase_group_rows"] = "组行"; +$LANG["phrase_have_fun"] = "玩得开心!"; +$LANG["phrase_highlight_colour"] = "突出显示颜色"; +$LANG["phrase_html_email"] = "HTML电子邮件"; +$LANG["phrase_html_template"] = "HTML模板"; +$LANG["phrase_images_media"] = "图片/媒体"; +$LANG["phrase_import_option_list_rightarrow"] = "导入选项列表»"; +$LANG["phrase_input_length"] = "输入长度"; +$LANG["phrase_installation_help"] = "安装帮助"; +$LANG["phrase_internal_form"] = "内部形式"; +$LANG["phrase_ip_address"] = "IP地址"; +$LANG["phrase_is_multi_page_form_q"] = "这是一个多页的形式呢?"; +$LANG["phrase_label_response_placeholders"] = "标签/响应占位符"; +$LANG["phrase_large_300px"] = "大(300像素)"; +$LANG["phrase_large_400px"] = "大(400像素)"; +$LANG["phrase_last_7_days"] = "最近7天"; +$LANG["phrase_last_logged_in"] = "最后登录"; +$LANG["phrase_last_modified"] = "最后修改"; +$LANG["phrase_last_modified_date"] = "最后修改日期"; +$LANG["phrase_last_name"] = "姓氏"; +$LANG["phrase_letters_only"] = "英皇只有"; +$LANG["phrase_light_brown"] = "浅棕色"; +$LANG["phrase_limit_email_content"] = "电子邮件的内容限制在查看领域"; +$LANG["phrase_loading_ellipsis"] = "载入中..."; +$LANG["phrase_log_in"] = "登录"; +$LANG["phrase_login_as_user"] = "作为此用户登录"; +$LANG["phrase_login_info"] = "登录信息"; +$LANG["phrase_login_page"] = "登录页"; +$LANG["phrase_login_panel_c"] = "登录面板:"; +$LANG["phrase_login_panel_leftarrows"] = "«登录面板"; +$LANG["phrase_login_password"] = "登录密码"; +$LANG["phrase_login_username"] = "登录用户名"; +$LANG["phrase_logo_link_url"] = "标志连结网址"; +$LANG["phrase_logout_url"] = "登出URL"; +$LANG["phrase_main_nav"] = "主要资产净值"; +$LANG["phrase_main_settings"] = "主要设置"; +$LANG["phrase_manage_client"] = "客户管理"; +$LANG["phrase_manage_client_omit_list"] = "管理客户端省略名单"; +$LANG["phrase_max_file_size"] = "最大文件大小"; +$LANG["phrase_max_length"] = "最大长度"; +$LANG["phrase_max_length_words_chars"] = "- 最大长度(文字/字符)"; +$LANG["phrase_may_add_submissions"] = "可能添加意见书"; +$LANG["phrase_may_copy_submissions"] = "可以复制提交"; +$LANG["phrase_may_delete_submissions"] = "可能删除意见书"; +$LANG["phrase_medium_150px"] = "中(150像素)"; +$LANG["phrase_medium_200px"] = "中(200像素)"; +$LANG["phrase_menu_name"] = "菜单名称"; +$LANG["phrase_menu_type"] = "菜单式"; +$LANG["phrase_min_password_length"] = "最小密码长度"; +$LANG["phrase_module_description"] = "模块描述"; +$LANG["phrase_module_info"] = "模块信息"; +$LANG["phrase_module_nav"] = "模块资产净值"; +$LANG["phrase_month_to_date"] = "月初至今"; +$LANG["phrase_multi_select"] = "多选"; +$LANG["phrase_multi_select_dropdown"] = "多选下拉菜单"; +$LANG["phrase_multiple_fields_found"] = "多领域找到!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "姓/名"; +$LANG["phrase_new_blank_email"] = "新建空白电子邮件"; +$LANG["phrase_new_blank_option_list"] = "新的空白选项列表"; +$LANG["phrase_new_blank_view"] = "新建空白查看"; +$LANG["phrase_new_ft_installation"] = "新形式工具安装"; +$LANG["phrase_new_option_list"] = "新的选项列表"; +$LANG["phrase_new_password"] = "新密码"; +$LANG["phrase_new_password_reenter"] = "新的密码(请重新输入)"; +$LANG["phrase_new_view"] = "新视角"; +$LANG["phrase_new_view_all_fields"] = "新景 - 所有领域"; +$LANG["phrase_next_client"] = "下一个客户端»"; +$LANG["phrase_next_field"] = "下一个栏»"; +$LANG["phrase_next_form"] = "下一个表格»"; +$LANG["phrase_next_view"] = "下查看»"; +$LANG["phrase_no_clients"] = "没有客户端"; +$LANG["phrase_no_limit"] = "没有限制"; +$LANG["phrase_no_offset"] = "没有抵销"; +$LANG["phrase_no_option_lists_available"] = "无选项列出了可用的的。"; +$LANG["phrase_no_views"] = "没意见"; +$LANG["phrase_no_views_with_filters_p"] = "(定义带过滤器没有意见)"; +$LANG["phrase_none_not_recommended"] = "无(不推荐)"; +$LANG["phrase_not_assigned_to_option_list"] = "该字段没有被分配到一个选项列表。"; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "不等于"; +$LANG["phrase_not_found"] = "未找到!"; +$LANG["phrase_not_like"] = "添加表格"; +$LANG["phrase_not_visible_to_client"] = "(不可见的客户端)"; +$LANG["phrase_num_clients_per_page"] = "每页客户显示数"; +$LANG["phrase_num_emails_per_page"] = "数量电子邮件每页"; +$LANG["phrase_num_fields"] = "字段数"; +$LANG["phrase_num_forms_per_page"] = "每页表格显示数"; +$LANG["phrase_num_menus_per_page"] = "数菜单每页"; +$LANG["phrase_num_modules_per_page"] = "数模块每页"; +$LANG["phrase_num_option_lists_per_page"] = "每页数的选项列表"; +$LANG["phrase_num_options"] = "数选项"; +$LANG["phrase_num_rows"] = "数行"; +$LANG["phrase_numbers_only"] = "号码只能"; +$LANG["phrase_often_localhost"] = "(常“本地主机”)"; +$LANG["phrase_on_form_submission"] = "提交表单"; +$LANG["phrase_one_char_number"] = "至少有一个字符是一个数字(0-9)"; +$LANG["phrase_one_char_upper"] = "至少有一个字符是大写"; +$LANG["phrase_one_special_char"] = "至少有一个 {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(只有特定的客户端访问)"; +$LANG["phrase_open_form_in_dialog"] = "开放的形式在对话窗口"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "这种形式打开一个新的标签/窗口"; +$LANG["phrase_option_list"] = "选项​​列表"; +$LANG["phrase_option_list_name"] = "选项​​列表名称"; +$LANG["phrase_option_list_or_contents"] = "选项​​列表/目录"; +$LANG["phrase_option_lists"] = "选项​​列表"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "页面主题"; +$LANG["phrase_pass_on"] = "传递"; +$LANG["phrase_password_min"] = "它必须是至少的 {\$length} 乙>字符。"; +$LANG["phrase_password_one_number"] = "它必须至少包含一个数字(0-9)。"; +$LANG["phrase_password_one_uppercase"] = "它必须至少包含一个大写字母。"; +$LANG["phrase_password_requirements_c"] = "密码要求:"; +$LANG["phrase_password_reset"] = "密码重置"; +$LANG["phrase_password_special_char"] = "它必须包含至少一个下列字符:的 {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "权限/其他设置"; +$LANG["phrase_permitted_file_types"] = "允许文件类型"; +$LANG["phrase_phone_number"] = "电话号码"; +$LANG["phrase_phone_number_format"] = "电话号码格式"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini的最大允许文件上载大小:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP版本"; +$LANG["phrase_please_confirm"] = "请确认"; +$LANG["phrase_please_enter_license_key"] = "请输入您的许可证密钥"; +$LANG["phrase_please_select"] = "请选择"; +$LANG["phrase_please_select_form"] = "请选择一个窗体"; +$LANG["phrase_prev_client"] = "«之前客户端"; +$LANG["phrase_prev_form"] = "«之前表格"; +$LANG["phrase_prevent_password_reuse"] = "防止再次使用的#最后密码"; +$LANG["phrase_previous_field"] = "«前场"; +$LANG["phrase_previous_page"] = "上一页"; +$LANG["phrase_previous_view"] = "«之前查看"; +$LANG["phrase_program_name"] = "系统名称"; +$LANG["phrase_public_form_omit_list"] = "公布形式省略名单"; +$LANG["phrase_public_view_omit_list"] = "公众的视野省略名单"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "有一个与下面的查询问题:"; +$LANG["phrase_radio_buttons"] = "单选按钮"; +$LANG["phrase_random_form_submission"] = "随意表格提交"; +$LANG["phrase_re_enter_password"] = "重新输入密码"; +$LANG["phrase_recipient_type"] = "收件人类型"; +$LANG["phrase_redirect_url"] = "网址转发"; +$LANG["phrase_refresh_list"] = "刷新"; +$LANG["phrase_refresh_module_list"] = "刷新模块列表"; +$LANG["phrase_refresh_page"] = "刷新页面"; +$LANG["phrase_refresh_theme_list"] = "刷新主题列表"; +$LANG["phrase_register_new_email"] = "注册新的电子邮件"; +$LANG["phrase_remaining_characters"] = "其余的字符"; +$LANG["phrase_remaining_words"] = "余下的字"; +$LANG["phrase_remove_tabs"] = "删除标签"; +$LANG["phrase_required_password_chars"] = "需要密码字符"; +$LANG["phrase_resend_test_submission"] = "重新发送测试提交"; +$LANG["phrase_return_form_list"] = "回到表格列表"; +$LANG["phrase_row_selected"] = "{\$num_rows} 行选择"; +$LANG["phrase_rows_selected"] = "{\$num_rows} 行选择"; +$LANG["phrase_sample_data"] = "数据样本"; +$LANG["phrase_save_changes"] = "保存更改"; +$LANG["phrase_search_keyword"] = "搜寻关键字"; +$LANG["phrase_security_settings"] = "安全设置"; +$LANG["phrase_select_all"] = "选择所有"; +$LANG["phrase_select_all_X_results"] = "选择所有 {\$numresults} 结果"; +$LANG["phrase_select_all_on_page"] = "选择全部"; +$LANG["phrase_select_date"] = "选择日期"; +$LANG["phrase_select_field"] = "选择字段"; +$LANG["phrase_select_swatch"] = "选择样本"; +$LANG["phrase_selected_clients"] = "经选客户"; +$LANG["phrase_selected_views"] = "选择次数"; +$LANG["phrase_send_email"] = "发送电子邮件"; +$LANG["phrase_send_test_email"] = "发送测试电邮"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "会话超时"; +$LANG["phrase_setting_value"] = "设定值"; +$LANG["phrase_setup_options"] = "设置选项"; +$LANG["phrase_show_all"] = "显示所有"; +$LANG["phrase_show_form"] = "显示窗体"; +$LANG["phrase_size_large"] = "大(文字)"; +$LANG["phrase_size_medium"] = "中等“(<= 256个字符)"; +$LANG["phrase_size_small"] = "小“(<= 20字符)"; +$LANG["phrase_size_tiny"] = "小“(<= 5个字符)"; +$LANG["phrase_size_very_large"] = "非常大(MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "跳过场"; +$LANG["phrase_skip_step"] = "跳过步骤"; +$LANG["phrase_small_100px"] = "小(100px的)"; +$LANG["phrase_small_80px"] = "小(80px)"; +$LANG["phrase_smart_fill"] = "智能输入"; +$LANG["phrase_smart_fill_fields_from_c"] = "智能填充领域的:"; +$LANG["phrase_smart_fill_user_documentation"] = "智能填充用户文档»"; +$LANG["phrase_sort_as"] = "排序作为"; +$LANG["phrase_special_fields"] = "特殊领域"; +$LANG["phrase_standard_fields"] = "标准字段"; +$LANG["phrase_standard_filters"] = "标准过滤器»"; +$LANG["phrase_step_1"] = "第1步"; +$LANG["phrase_step_2"] = "第2步"; +$LANG["phrase_step_3"] = "第3步"; +$LANG["phrase_step_4"] = "第4步"; +$LANG["phrase_step_5"] = "第5步"; +$LANG["phrase_step_6"] = "第6步"; +$LANG["phrase_strip_tags_in_submissions"] = "去除表格提交的标签"; +$LANG["phrase_subject_line"] = "主题行"; +$LANG["phrase_submission_date"] = "提交日期"; +$LANG["phrase_submission_id"] = "提交 ID"; +$LANG["phrase_submission_made"] = "递交了:{\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "提交类型"; +$LANG["phrase_submissions_per_page"] = "每页提交数目"; +$LANG["phrase_system_check"] = "系统检查"; +$LANG["phrase_system_fields_no_validation"] = "你可能不验证系统领域。"; +$LANG["phrase_system_time_offset"] = "时差设置"; +$LANG["phrase_tab_label"] = "标签标签"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "文件权限检查"; +$LANG["phrase_test_submission"] = "测试提交"; +$LANG["phrase_test_submission_3"] = "3。测试提交"; +$LANG["phrase_test_submission_received"] = "测试提交日期"; +$LANG["phrase_text_and_html"] = "文本和HTML"; +$LANG["phrase_text_email"] = "文本邮箱"; +$LANG["phrase_text_template"] = "文本模板"; +$LANG["phrase_the_previous_month"] = "前一个月"; +$LANG["phrase_theme_description"] = "主题说明"; +$LANG["phrase_theme_info"] = "主题信息"; +$LANG["phrase_tiny_30px"] = "小(30px)"; +$LANG["phrase_tiny_50px"] = "小(50像素)"; +$LANG["phrase_total_results_c"] = "全部结果:"; +$LANG["phrase_type_c"] = "错误类型:"; +$LANG["phrase_unselect_all"] = "取消所有选择"; +$LANG["phrase_update_accounts"] = "更新帐户"; +$LANG["phrase_update_email_template"] = "更新电子邮件模板"; +$LANG["phrase_update_field"] = "更新域"; +$LANG["phrase_update_order"] = "更新订购"; +$LANG["phrase_update_view"] = "更新视图"; +$LANG["phrase_upload_file"] = "上传文件"; +$LANG["phrase_upload_files"] = "上传文件"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "上传文件夹路径"; +$LANG["phrase_upload_folder_url"] = "上传文件夹 URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "使用默认值吗?"; +$LANG["phrase_used_by_num_form_fields"] = "使用#窗体域"; +$LANG["phrase_uses_swatches"] = "使用色板"; +$LANG["phrase_valid_email"] = "有效的电子邮件"; +$LANG["phrase_validation_error"] = "验证错误"; +$LANG["phrase_validation_rule"] = "验证规则"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "查看组"; +$LANG["phrase_view_id"] = "查看编号"; +$LANG["phrase_view_name"] = "视图名称"; +$LANG["phrase_view_placeholders"] = "查看占位符"; +$LANG["phrase_view_submissions"] = "提交意见"; +$LANG["phrase_view_uploaded_files"] = "检视上传文件"; +$LANG["phrase_viewing_range"] = "[查看{\$startnum}到{\$endnum}]"; +$LANG["phrase_when_sent"] = "当发送"; +$LANG["phrase_when_submission_is_deleted"] = "当提交被删除"; +$LANG["phrase_when_submission_is_edited"] = "当被编辑提交"; +$LANG["phrase_who_can_access"] = "谁可以访问?"; +$LANG["phrase_word_limit_p"] = "字数限制。"; +$LANG["phrase_year_to_date"] = "年初至今"; +$LANG["phrase_yes_for_all_views"] = "是的,所有意见"; +$LANG["phrase_yes_for_specific_views"] = "是的,具体的意见"; +$LANG["phrase_your_account"] = "您的帐户"; +$LANG["phrase_your_email"] = "您的电邮"; +$LANG["phrase_your_email_address"] = "您的电邮"; +$LANG["processing_form_disabled"] = "对不起,此表格已被停用。"; +$LANG["processing_form_incomplete"] = "很抱歉,这似乎并未完全从内部设立表格工具。这个问题的最可能的原因是你删除了“form_tools_initialize_form”隐藏的表单字段,但没有完成所有的“添加窗体”进程的步骤。

    请登录并审查的形式配置。"; +$LANG["processing_init_complete"] = "谢谢!提交您的测试已经通过成功。请交回表格工具管理面板,并点击“刷新”按钮,在添加窗体的步骤3页底部完成设置表单。"; +$LANG["processing_invalid_form_id"] = "对不起,这不会出现,是一个有效的形式的ID。"; +$LANG["processing_no_form_id"] = "process.php需要进行处理的表格ID。确保您的表单包含一个隐藏的字段的名称“form_tools_form_id”的沿的形式ID传递。"; +$LANG["processing_no_form_url_for_recaptcha"] = "表格工具是无法确定在何处时,他们没有重定向进入的captcha正确。请传递一个隐藏字段的名称载有表单网址form_tools_form_url。"; +$LANG["processing_no_post_vars"] = "process.php没有收到任何数据。注意:这个脚本不能直接在浏览器中加载。
    确保您的表单通过POST发送。"; +$LANG["processing_no_redirect_url"] = "提交正确处理,但你有没有这种形式指定重定向URL!编辑表单,在“表格工具的用户界面和添加重定向​​URL。"; +$LANG["special_language"] = "Chinese"; +$LANG["special_language_locale"] = "Simplified Chinese"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "所有新客户帐户将被创建的设置和定义如下权限。要覆盖特定客户端的设置,修改客户帐户和访问的设置选项卡。"; +$LANG["text_add_form_choose_integration_method"] = "选择要使用哪种方法,整合与表格工具形式。"; +$LANG["text_add_form_code_submission_benefits"] = "这种方法使用的表格 ,包括在主窗体的工具脚本的工具 API 。该API提供了一些有用的功能,使您尽可能简单的形式整合与表格工具的工作。当您使用API​​时,可以提交表单如何有没有限制。您可以提交一气呵成,或逐页的内容;您可以添加您自己的自定义的服务器端验证,CAPTCHA图像,您可以选择现在提交的信息,但只告诉它要显示在表格工具的用户界面提交在稍后的日期(见API帮助文档提交的文件定稿节)。"; +$LANG["text_add_form_code_submission_drawbacks"] = "为了通过PHP提交表单数据,表单必须位于同一个网站作为本表格工具安装。其次,对于非技术和新手的表格工具的用户,这种方法可首先一点恐吓。但也有大量的文件来帮助你,包括两个简单的教程,结合您的单页和多页的形式(这些都是与后面的步骤)。"; +$LANG["text_add_form_direct_submission_benefits"] = "这是最简单的方式提交您的表格,表格工具。它不需要任何PHP知识,只需要一个非常小的改动,您的窗体。它非常适合于小型的形式在您要提交的信息只到数据库,然后将用户重定向到“三江源”页面。"; +$LANG["text_add_form_direct_submission_drawbacks"] = "这次提交方法非常简单易用,但不提供更复杂的形式的控制权。多页表格或形式,需要服务器端验证更适合第二种方法:通过表单提交的API工具。"; +$LANG["text_add_form_field_types1"] = "快完成了!这页试图找到所有表单字段,并确定其字段类型。点击马上开始的智能填充“按钮。您将只允许进行时,所有的行动已经解决 - 需要你注意的问题出现在“行动需要”列。"; +$LANG["text_add_form_field_types2"] = "如果您的表单在HTML中,按一下垫步按钮,进行。这都可以稍后配置。"; +$LANG["text_add_form_field_types3"] = "这重新载入您的表单(S)的内容。注:这将覆盖您在此页面上的任何变化。"; +$LANG["text_add_form_field_types4"] = "如果您遇到问题,请点击这里跳过这一步。所有悬而未决的字段设置,使用默认值。您可以自定义这些字段后。"; +$LANG["text_add_form_field_types_manual_upload"] = "如果你一直无法智能填充字段,你可能想尝试一种替代解决方案在以下领域:上传你的表格的副本。"; +$LANG["text_add_form_field_types_manual_upload2"] = "注: 上传原始的PHP页面(或其它的服务器端代码) -刚刚上传的HTML版本。要获得此,查看和保存从Web浏览器的页面。"; +$LANG["text_add_form_field_types_multiple_fields_found"] = "有等多个领域,无法在您指定的表单页面发现。这主要是可能造成以下:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "您输入您的多页的形式形式的URL或多个错误。"; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "有密码保护的一个或多个页面的表单,脚本无法访问该网页。"; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "您没有正确输入您的表单的URL。"; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "点击这里返回到表单信息“页面,检查您的设置。"; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "您更改后的测试提交表单(S)"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "点击这里通过提交另一项测试。"; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "你的形式是密码保护和脚本无法访问该网页。"; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "在另一个选项卡/此浏览器窗口,登录到您的表单,然后单击刷新页面下面的按钮,尝试重新找到字段。"; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "如果没有上述解决方案的工作,你可能也想尝试手动上传你的形式进行处理。"; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "有等多个领域,无法在您指定的网页形式。这是最有可能造成这些:"; +$LANG["text_add_form_help_link"] = "如果遇到任何麻烦,在这些步骤中运行,尝试读出用户文档。"; +$LANG["text_add_form_step_1_text_1"] = "以下页面带领的配置表格工具的步骤来存储您的表单提交。在继续之前,请检查:"; +$LANG["text_add_form_step_1_text_2"] = "您的窗体已创建和它的通过网址(本地主机访问的罚款)"; +$LANG["text_add_form_step_1_text_3"] = "可以编辑表单"; +$LANG["text_add_form_step_2_para_2"] = "打开在您选择的编辑器的形式和改变你的形式标记以下,包括两个隐藏字段。"; +$LANG["text_add_form_step_2_para_3"] = "接下来, 打开一个网页浏览器的形式各个领域的填写并提交。提交后,您应该看到一个通知消息。一旦此消息显示,返回此页,然后点击刷新按钮。当此过程完成后,你会看到一个继续按钮,考虑你的下一个步骤。"; +$LANG["text_add_form_step_2_para_6"] = "在您的表单提交,包括下面的值。他们可能是通过直接设置PHP或通过窗体本身一起。以下是一些例子。在(\$ varname的)是一个哈希(或关联数组)提交的所有形式的信息 - 这通常是(\$ postvar)或(\$ sessionvar)变量,但它可能是客户化定制的。"; +$LANG["text_add_form_step_2_text_2"] = "输入“三江源”页的URL。这是你想要人定向到后已提交的形式。"; +$LANG["text_add_form_step_3_para_1"] = "此页面列出了在您的表单提交的所有领域。每个字段,请予审议,并移除任何你不需要为每一个提交保存。如果您删除了一个有效的事故现场,或希望更改您的资料表格,返回到前一页存储派遣一个新的测试提交。"; +$LANG["text_add_form_step_3_para_2"] = "注意:如果你要发送通过复选框或多个值多,选择框,请确保您的域的名称与[]字符(见更多信息的用户文档结束)。"; +$LANG["text_add_form_step_3_text_1"] = "这里的乐趣开始的地方!在这一点上,表格工具正在等待从形式的测试提交。它会使用这个表单提交知道什么样的信息应该存储在数据库中。"; +$LANG["text_add_form_step_3_text_2"] = "通过指向您的表格,表格工具"; +$LANG["text_add_form_step_3_text_3"] = "使用表格工具的API"; +$LANG["text_add_form_step_3_text_4"] = "为了帮助整合您的方式,我们建议您阅读以下教程之一:"; +$LANG["text_add_form_step_3_text_5"] = "他们解释如何设置为测试准备的形式提交,并包括其他信息,可能会有帮助。 PHP的你需要行是:"; +$LANG["text_add_form_step_3_text_6"] = "这就确保了数据的实际发送到窗体工具。当您并通过您,请点击下面的按钮提交测试。"; +$LANG["text_add_form_step_3_text_7"] = "在网页上之前,您的最终的“感谢您”页面,请务必将以下参数添加到\$ params变量:"; +$LANG["text_add_form_step_5_para_1"] = "该数据库已经成立,并为这种形式的形式使用已激活。如果你在通过指向您形式process.php提交,请返回表单并删除以下隐藏字段:"; +$LANG["text_add_form_step_5_para_2"] = "然后访问你的“谢谢”页面空白的会议。一旦做到这一点,所有新的形式将处理意见和表格工具中。尝试提交划界案或两个,核实所有资料上传正确。"; +$LANG["text_add_form_step_5_para_3"] = "如果你想精确地调整自己,例如自动电子邮件发送选项的形式,添加额外的表单域字段,或自定义窗体字段类型,你可以编辑在任何时候您形式 。"; +$LANG["text_add_form_step_5_para_4"] = "由于您的窗体包含的文件上传字段,您将需要配置每个字段指定文件上传文件夹,允许哪些文件和。这可以上找到的编辑窗体页显示选项卡 。"; +$LANG["text_add_form_step_5_para_5"] = "如果提交被送往通过API,更改在您的表格的第一页ft_api_init_form_page行:"; +$LANG["text_add_submission_button"] = "添加提交按钮只出现“选项设置为”是“视图有”可能会增加意见书。"; +$LANG["text_admin_email_placeholder_info"] = "这是表格工具管理员帐户设置定义,电子邮件地址。这只能输出的电子邮件地址,所以如果你想使用一个HTML链接,您需要包裹在一个<a>标记它,如下所示:
    <a href="mailto:{\$ADMINEMAIL}">(\$ ADMINEMAIL)“/ 1”"; +$LANG["text_also_default_login_page_theme"] = "(也是默认登录页的主题)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "首先,请选择你的表单类型。"; +$LANG["text_client_form_page"] = "本页面列出了所有形式和分配给此客户的意见。提示:为了让他们看到窗体的意见,他们需要被分配到至少一个视图。"; +$LANG["text_client_map_filters_desc1"] = "客户地图过滤器,让您限制的意见,在此视图中显示的映射在表单字段的值,在客户帐户的价值。"; +$LANG["text_client_no_forms"] = "您目前没有任何表格可预览。"; +$LANG["text_client_welcome"] = "欢迎!这个程序储存您的网站访问者提交的所有资料。要查看特定形式只是在视图链接,或看到其他选择最左边的导航菜单中单击意见书。"; +$LANG["text_config_file_created"] = "您的config.php文件已创建。"; +$LANG["text_config_file_not_created"] = "我们无法创建您的config.php文件。您需要手动创建该文件。"; +$LANG["text_config_file_not_created_instructions"] = "复制并粘贴到下面一节的内容到一个文件名为config.php和通过FTP上传到窗体工具/全球文件夹(该文件夹还包含其他一些文件和目录,一个文件名为library.php)。"; +$LANG["text_confirm_delete_form"] = "我确定要删除此表格"; +$LANG["text_create_admin_account"] = "现在,我们要创建管理员帐户。这是用于管理,如添加的形式,创造客户帐户表格工具,所有方面。"; +$LANG["text_create_new_client_account"] = "使用下面的表单创建一个新的客户帐户。所有字段是必需的。"; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "看到PHP的格式化选项 {\$datefunctionlink} 功能"; +$LANG["text_default_file_settings_page"] = "本页面为表单定义工具安装文件上传设置。本规则适用于通过表格工具上载的所有文件,除非明确为个人窗体域覆盖。注意:如果您更改上载文件夹后,文件已被上传,他们将自动移到新文件夹。"; +$LANG["text_default_theme_cache_folder_not_writable"] = "在继续之前,您需要更新您的/主题/默认/缓存文件夹,以便充分读写权限。一旦这样做,该消息便会消失,你可以安装脚本。"; +$LANG["text_default_values_in_view"] = "这部分是可选的的。与此视图中创建的所有参赛作品将包含此处指定的默认​​值。"; +$LANG["text_delete_all_forms"] = "我要删除所有在此表格上传的文件"; +$LANG["text_delete_form_warning"] = "您确定要删除此表格?一旦删除,所有相关数据将被彻底删除!"; +$LANG["text_edit_admin_menu_page"] = "您可以修改您的菜单如下。为了确保您总能获得所有功能在表格工具,下面的页面是必需的:表格,客户,提供您的帐户,模块,设置和注销。"; +$LANG["text_edit_client_menu_page"] = "这部分允许您自定义每个用户左侧导航栏。您可以创建任意多的客户端菜单你的意愿,指定任何帐户其中之一。默认情况下有两个菜单:为你一,管理员,和所有客户帐户之一。管理员帐户可能被修改,但并未消除。"; +$LANG["text_edit_tab_summary"] = "如果你想分组到这个视图的字段选项卡,只需要输入下面的标签名称。大功告成后,选择相应的选项卡为每个字段组Fields标签 。"; +$LANG["text_edit_view_list_page"] = "此标签控制哪些领域出现提交上市页的列,并为这些领域的一些额外的设置。注:我们建议您添加不超过4个或视图中的最重要领域5。"; +$LANG["text_email_settings_intro"] = "这个页面可以让您确定你的表单字段存储电子邮件和相应的名称。一旦你定义它们在这里,你可以使用它们在您的电子邮件模板作为收件人。本节完全是可选的。"; +$LANG["text_email_tab_summary"] = "这部分允许您构建任何数量的电子邮件发送每当您提交表单时,和其他触发器。"; +$LANG["text_email_template_tab"] = "本节允许您确定哪些内容的电子邮件中出现。如果你希望只发送您的文字或电子邮件电子邮件,只能输入该节的价值。如果你输入两个值,电子邮件将被发送两种格式。"; +$LANG["text_email_template_text_1"] = "目前已通过您的窗体, {\$FORMNAME} 提交了文件。"; +$LANG["text_email_template_text_1_c"] = "目前已通过您的形式提出的意见书,{\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "谢谢您的提交!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "错误消息显示,如果字段验证失败"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "外在形式是您的网站上,或某处在网络上已经存在的形式。如果你有自己的的形式,你想整合与表格工具,选择此选项。"; +$LANG["text_fields_tab_summary"] = "此页面列出了所有表单字段。为了控制他们如何时出现浏览意见书,看到“ 视图 “选项卡。此页面上删除一个字段,将删除所有提交的,所以请一定要小心!"; +$LANG["text_file_extension_info"] = "输入用逗号分隔的文件扩展名(例如JPG,GIF和PNG)或留空以允许任何文件类型。"; +$LANG["text_file_field_placeholders_info"] = "文件领域有两个特殊的占位符:FILEURL和文件名。 FILEURL是完整的URL文件,所以你可以直接链接到它的电子邮件,文件名仅仅是文件名。"; +$LANG["text_filters_page"] = "只有那些提交符合您定义的规则将出现在下面的这个观点。"; +$LANG["text_filters_tips"] = "有关如何使用提交过滤器,请用户文档提示。"; +$LANG["text_forgot_password"] = "没问题。只要输入您的用户名,您的登录信息将发送到您在文件的电子邮件地址。如果您忘记您的用户名,请发送电子邮件在{\$site_admin_email}。"; +$LANG["text_form_contains_file_fields"] = "本表包含一个或多个文件上传字段:"; +$LANG["text_form_placeholder_info"] = "以下占位符,可用于在任何电子邮件模板和语言的占位符领域,无论查看电子邮件模板被分配到。问题占位符的具体形式问题的答案占位符对每个问题的答案。"; +$LANG["text_form_submission_date_placeholder"] = "时提交的日期。"; +$LANG["text_form_tools_form_url"] = "完整的URL的形式。这只是一个外在形式的价值。"; +$LANG["text_form_tools_login_url"] = "Form Tools 登录的 URL。"; +$LANG["text_form_view_permission_info_admin"] = "注:目前这种形式具有管理员访问类型,所以没有任何的客户帐户将能够看到这个视图。"; +$LANG["text_form_view_permission_info_private"] = "注:这种形式目前拥有私人的访问类型,使公共和私人的选择这里将是有限的,客户端的一个子集。"; +$LANG["text_ft_installed"] = "恭喜,表格工具已成功安装!"; +$LANG["text_global_placeholder_info"] = "这些占位符可用于任何模板和表格。"; +$LANG["text_group_name_explanation"] = "添加的字段通过添加表格的过程中,此值是预先充满对任何领域的显示文本使用的价值。您可能希望改变它,以更好地特征的内容。"; +$LANG["text_install_create_config_file"] = "表格工具的服务器和存储在数据库设置一个文件名为config.php中 ,在你的/全球发现/文件夹中。点击“创建文件”按钮,自动生成您的服务器上的文件。"; +$LANG["text_install_create_database_tables"] = "现在,我们要创建的表格工具数据库表。这一步需要数据库本身已创建。如果您不知道如何做到这一点,请联系您的托管服务提供商。"; +$LANG["text_install_db_tables_error_tip_1"] = "“未知的MySQL服务器主机”,通常意味着您所提供的主机名是不正确的。这也许尝试设置为“本地主机” - 这是一种常见的方式是指在Web服务器上的“本地”数据库。"; +$LANG["text_install_db_tables_error_tip_2"] = "“无法连接插座通过”本地MySQL服务器意味着数据库主机领域再次不正确。"; +$LANG["text_install_db_tables_error_tip_3"] = "“访问用户被拒绝:”意思是指您的用户名/密码组合的问题。"; +$LANG["text_install_db_tables_error_tip_4"] = "“访问用户被拒绝:数据库... ...”的意思是,虽然您的用户名和密码,您提供的是正确的,它无法连接到该帐户与特定的数据库。这意味着,要么你的数据库的名称不正确,或该用户帐户不与该数据库关联的。"; +$LANG["text_install_email_content_text"] = "我们的网站上有大量资源可以帮助您入门,包括我们的在线文档(https://docs.formtools.org)和教程(https://docs.formtools.org/tutorials)。 如果您发现卡住或有疑问,请在github上提问(https://github.com/formtools/core/issues/)。"; +$LANG["text_install_form_tools_server_not_supported"] = "对不起,表格工具将不能够运行您的服务器上,请点击这里的最低要求。"; +$LANG["text_install_system_check"] = "这页你的系统上运行,以确保它能够运行中一些测试工具。"; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "内部形式只存在于表工具 - 而不是在您网站上的其他地方。唯一的形式工具的用户帐户将访问的形式。选择此选项,如果你没有现成的形式。"; +$LANG["text_internal_form_intro"] = "使用下面的表格,以创建一个新的内部形式。所有设置,包括表单字段的数量和内容,可以改变和配置后。"; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "为了登入并使用表格工具,您必须在浏览器中启用JavaScript。现在请启用,并在浏览器中单击刷新。"; +$LANG["text_last_modified_date_explanation_c"] = "最后一次提交的修改。对于新的意见,这是一样的:"; +$LANG["text_limit_email_content_desc"] = "此选项仅适用于HTML和文本的内容与Smarty循环中产生的。"; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(只列出与一个或多个定义的过滤器点击)"; +$LANG["text_log_in_to_ft"] = "登录到表格工具"; +$LANG["text_login"] = "请在下面登录访问)(\$程序program_name管理小组。如果您忘记了密码, 请点击这里 。"; +$LANG["text_login_info"] = "按照要求,这是您的登录资料。"; +$LANG["text_name_of_form"] = "表格名称。"; +$LANG["text_no_clients"] = "您目前尚未添加任何客户。请按以下按钮继续。"; +$LANG["text_no_clients_found"] = "没有找到客户。扩大您的搜索条件。"; +$LANG["text_no_fields_in_view"] = "这个观点并没有在任何领域。点击下面的链接。"; +$LANG["text_no_forms"] = "您目前尚未添加任何表格。请按以下按钮继续。"; +$LANG["text_no_forms_found"] = "没有发现任何形式。"; +$LANG["text_no_forms_found_search"] = "没有发现任何形式。尝试扩大您的搜索条件。"; +$LANG["text_no_modules_found"] = "没有模块被发现。扩大您的搜索条件。"; +$LANG["text_no_recipients_added"] = "任何人已被添加。"; +$LANG["text_no_search_results"] = "没有与该搜索条件的结果/查看。"; +$LANG["text_no_submissions_found"] = "对不起,没有找到任何提交。"; +$LANG["text_no_themes"] = "您没有任何主题定义。点击下面的按钮来刷新你的主题列表,或检查的表格工具,用户文档,有关加入主题的信息。"; +$LANG["text_non_deletable_fields"] = "此字段是核心脚本和使用而造成的不兼容,不能编辑或删除。如果你想使字段类型的变化,它的一个副本,并编辑副本。"; +$LANG["text_option_list_group_explanation"] = "如果选择此选项,它可以让组您的选择。如何显示组取决于字段类型使用此选项列表。"; +$LANG["text_option_list_page"] = "单选按钮,复选框,下拉列表和多选下拉领域的所有用户提供多个选项,从中他们可以选择一个或多个项目。在表格工具,这些被称为选项列表。一般来说,这些都是自动创建添加的外在形式的过程,但您可以手动添加或编辑以下选项列出,如果您的表单内容的变化,或者您构造,仅供内部使用的领域。"; +$LANG["text_option_list_used_by_fields"] = "使用此选项列表是由多个表单域。如果你更新了以下信息,这将是改变了所有的领域(见“ 表单域 “选项卡上看到的字段列表)。如果您想更新一个值,或当前分配领域的一个子集,请点击这里与这一个相同的值创建一个新的选项列表。然后,您可以指定您想要到新组的表单字段。"; +$LANG["text_public_form_omit_list_page"] = "公用表格给你的好处,让所有的客户帐户访问,而不必手动分配每个客户端他们。这个页面可以让您针对这些客户谁可能无法访问此表格,即使形式是公共标记。"; +$LANG["text_public_view_omit_list_page"] = "公众意见给你的好处,让所有的客户帐户访问,而不必手动分配每个客户端他们。这个页面可以让您针对这些客户谁不能访问这个特定视图。"; +$LANG["text_reference_tab_info"] = "此页面列出了所有表单的占位符。占位符是可以在电子邮件模板中使用的字符串,与一个特殊的占位符图标标记和领域 。当进入到一个字段,它们是动态转换为适当的值时,该字段是浏览或发送电子邮件。"; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "审查用户文档"; +$LANG["text_send_email_from_edit_submission_page"] = "包括选择从编辑发送此页的电子邮件提交"; +$LANG["text_smart_fill_option_list_problem"] = "我们无法智能填充字段选项。然而,作为替代,你可以尝试在下面的字段上传您的表单页面的副本。注: 上传原始的PHP页面(或其它的服务器端代码) -刚刚上传的HTML版本。要获得此,查看和保存从Web浏览器的页面。"; +$LANG["text_submission_ip_address"] = "在谁的用户提交的划界案的IP地址。"; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "使用下面的表单来查看或自己发送一封电子邮件,这封电子邮件的生成模板。 唯一的电子邮件发送到以下指定的电子邮件,主要的,CC和密件副本收件人的电子邮件地址被忽略,而测试。"; +$LANG["text_test_email_templates_no_submissions"] = "为了测试您的电子邮件模板,您必须首先将通过至少一种形式提交。"; +$LANG["text_theme_page_intro"] = "此页面列出了所有的你的主题。点击缩略图看到这个主题的风格更大的示例。 “启用”复选框,确定是否这个主题可能会被客户选中。若要浏览所有可用的主题,请访问网站表格工具 。"; +$LANG["text_tutorial_adding_first_form"] = "教程:添加您的第一个表格!"; +$LANG["text_unique_submission_id"] = "独特的提交身份证。"; +$LANG["text_unused_option_list"] = "此选项列表不被用于任何形式的领域。"; +$LANG["text_upgraded"] = "您的安装已经升级到{\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "使用此选项列表是由以下领域。"; +$LANG["text_view_fields_info"] = "此标签控制哪些字段显示在此视图中编辑提交时,其顺序以及它们是否可编辑或。"; +$LANG["text_view_tab_summary"] = "此标签可让您创建不同的方式来分组,并安排您的数据。视图允许您创建自定义表单数据的子集分割成可管理的块,并限制哪些客户可能会看到或编辑。"; +$LANG["validation_account_disabled"] = "对不起,您的户口被停用。"; +$LANG["validation_account_not_recognized"] = "对不起,您的用户名不能识别。"; +$LANG["validation_account_not_recognized_info"] = "对不起,您的用户名不存在。请重新登录,或用以下地址。"; +$LANG["validation_account_pending"] = "您的用户帐户正在等待管理员批准。"; +$LANG["validation_check_delete_client"] = "您确定要删除此客户帐号?"; +$LANG["validation_client_password_missing_number"] = "客户端的密码必须至少包含一个数字(0-9)。"; +$LANG["validation_client_password_missing_special_char"] = "客户端的密码必须至少包含下列字符之一:{\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "客户端的密码必须至少包含一个大写字母。"; +$LANG["validation_client_password_too_short"] = "客户端的密码需要至少{\$number}个字符。"; +$LANG["validation_col_name_is_reserved_word"] = "很抱歉,此数据库列名称是在MySQL中保留工作。请重命名它!"; +$LANG["validation_db_name"] = "数据库名称不能包含句点或斜杠。"; +$LANG["validation_db_not_updated_invalid_input"] = "数据库无法更新。请检查您的数值是否有效。"; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "很抱歉,默认的管理员和客户端的主题必须始终启用。"; +$LANG["validation_default_phone_num_required"] = "请填写完整的电话号码<B> { \$ FIELD} </ b>栏 - 数字。"; +$LANG["validation_default_rule_alpha"] = "请只的<b> { \$领域} </ b>字段输入字母和数字。"; +$LANG["validation_default_rule_letters_only"] = "请<B> { \$领域} </ b>栏只能输入字母。"; +$LANG["validation_default_rule_numbers_only"] = "请只输入数字<B> { \$领域} </ b>栏。"; +$LANG["validation_default_rule_required"] = "请输入一个<B> { \$字段} </ b>栏位。"; +$LANG["validation_default_rule_valid_email"] = "的<b> { \$字段} </ b>栏位,请输入一个有效的电子邮件地址。"; +$LANG["validation_delete_form_confirm"] = "请检查框,以确认您要删除此表格。"; +$LANG["validation_delete_non_empty_option_list"] = "警告!使用此选项列表是由一个或多个表单字段。删除它将使这些领域停止正常工作。"; +$LANG["validation_display_names_incomplete"] = "请输入所有的显示名称,或单击智能填充选项,进入他们的动态值。"; +$LANG["validation_duplicate_form_field_name"] = "你不能有相同的字段名的多个领域。"; +$LANG["validation_email_not_found_or_invalid"] = "对不起,您的帐户不存在或无效的电子邮件。"; +$LANG["validation_folder_invalid_permissions"] = "为了运行这个测试,权限需要设置的上传文件夹,以便读取和写入文件(在Unix 777)。"; +$LANG["validation_folder_not_writable"] = "此文件夹无法写入。"; +$LANG["validation_internal_form_too_many_fields"] = "对不起,您只能创建与1000领域或更少形式。"; +$LANG["validation_invalid_admin_email"] = "请输入有效的adminstrator的电子邮件地址。"; +$LANG["validation_invalid_admin_username"] = "您的用户名只能由字母数字字符(AZ和0-9)。"; +$LANG["validation_invalid_client_username"] = "客户端的用户名只能由(AZ和0-9)字母数字字符。"; +$LANG["validation_invalid_client_username2"] = "对不起,用户名的可能只包含字母,数字和下划线字符。请输入新的用户名。"; +$LANG["validation_invalid_column_name"] = "列名,只能是字母,数字,(AZ,0-9)。请检查列名。"; +$LANG["validation_invalid_custom_from_email"] = "请输入者的电子邮件地址有效的自定义'。"; +$LANG["validation_invalid_custom_reply_to_email"] = "请输入有效的自定义'回复到的电子邮件地址。"; +$LANG["validation_invalid_default_sessions_timeout"] = "请输入有效的值(默认的会话超时数)。"; +$LANG["validation_invalid_email"] = "请输入正确的电子邮件。"; +$LANG["validation_invalid_email_id"] = "对不起,这是一个无效的电子邮件ID。"; +$LANG["validation_invalid_folder"] = "很抱歉,这似乎不是一个有效的文件夹。"; +$LANG["validation_invalid_form_field_names"] = "表单域可能只是字母和下划线(宰,0-9,_),没有空格。"; +$LANG["validation_invalid_num_clients_per_page"] = "请仅在每页客户显示数栏目里填入数字。"; +$LANG["validation_invalid_num_emails_per_page"] = "请只输入每页的电子邮件数字。"; +$LANG["validation_invalid_num_form_fields"] = "请只输入数字字段的字段数。"; +$LANG["validation_invalid_num_forms_per_page"] = "请仅在每页表格显示数栏目里填入数字。"; +$LANG["validation_invalid_num_menus_per_page"] = "请只输入每页菜单数字。"; +$LANG["validation_invalid_num_modules_per_page"] = "请只输入模块的数量每页外地号码。"; +$LANG["validation_invalid_num_option_lists_per_page"] = "请只输入数字NUM选项列表每页领域。"; +$LANG["validation_invalid_num_submissions_per_page"] = "请仅在每页提交显示数栏目里填入有效的数字。"; +$LANG["validation_invalid_sessions_timeout"] = "请输入有效的会话超时(整数仅!)。"; +$LANG["validation_invalid_tab_assign_values"] = "请输入数字只有在'从'和'到'领域。"; +$LANG["validation_invalid_table_prefix"] = "请输入数据库前缀,仅包含字母和下划线."; +$LANG["validation_invalid_upload_folder"] = "您的服务器的PHP安装有一个价值的中的upload_tmp_dir设置无效。 “{\$upload_folder}”不是一个有效的文件夹。"; +$LANG["validation_invalid_url"] = "请输入有效的网址。"; +$LANG["validation_invalid_username"] = "您的用户名只能由(AZ和0-9)字母数字字符。"; +$LANG["validation_is_form_active"] = "请指示表格是否启用。"; +$LANG["validation_menu_name_taken"] = "很抱歉,此菜单名称已被使用。请选择一个新名称。"; +$LANG["validation_modules_search_no_status"] = "请选择启用或禁用的复选框。"; +$LANG["validation_no_access_type"] = "请输入访问类型。"; +$LANG["validation_no_account_logout_url"] = "请输入您的注销网址。"; +$LANG["validation_no_account_password_confirmed"] = "请重新输入您的新密码。"; +$LANG["validation_no_account_password_confirmed2"] = "请重新输入新的密码。"; +$LANG["validation_no_admin_email"] = "请输入管理员的电子邮件地址。"; +$LANG["validation_no_admin_theme"] = "请选择为管理员帐户的主题。"; +$LANG["validation_no_admin_theme_swatch"] = "请选择一个主题为管理员的样本。"; +$LANG["validation_no_client_email"] = "请输入客户端的电子邮件地址。"; +$LANG["validation_no_client_first_name"] = "请输入客户的名字。"; +$LANG["validation_no_client_last_name"] = "请输入客户端的姓氏。"; +$LANG["validation_no_client_login_page"] = "请说明哪些页面的客户端应该重定向到登录时,"; +$LANG["validation_no_client_password"] = "请输入客户的密码。"; +$LANG["validation_no_client_theme_swatch"] = "请选择一个客户帐户的默认色板。"; +$LANG["validation_no_client_username"] = "请输入客户端的用户名。"; +$LANG["validation_no_column_name"] = "请输入所有的列名,或按一下“智能填充”按钮,自动填充。"; +$LANG["validation_no_column_selected"] = "请至少选择一个字段显示为一上市就提交页的列。"; +$LANG["validation_no_custom_from_email"] = "请输入的电子邮件地址的自定义'。"; +$LANG["validation_no_custom_recipient_email"] = "请输入自定义收件人的电子邮件地址。"; +$LANG["validation_no_custom_reply_to_email"] = "请输入自定义'回复到的电子邮件地址。"; +$LANG["validation_no_date_format"] = "请输入日期格式。"; +$LANG["validation_no_db_column_single"] = "请输入数据库列名称。"; +$LANG["validation_no_db_hostname"] = "请输入数据库的主机名。"; +$LANG["validation_no_db_name"] = "请输入数据库的名称。"; +$LANG["validation_no_db_username"] = "请输入数据库帐户的用户名。"; +$LANG["validation_no_default_client_theme"] = "请选择所有新客户帐户的默认主题。"; +$LANG["validation_no_default_language"] = "请选择安装表格工具的默认语系。"; +$LANG["validation_no_default_sessions_timeout"] = "请输入用户帐户的默认会话超时。"; +$LANG["validation_no_display_text"] = "请输入显示文本的每个字段。"; +$LANG["validation_no_display_text_single"] = "请输入显示的文本值。"; +$LANG["validation_no_edit_submission_page_label"] = "请输入编辑提交页面标签。"; +$LANG["validation_no_email"] = "请输入您的电邮地址。"; +$LANG["validation_no_email_config_field"] = "请指定构成领域是电子邮件领域。"; +$LANG["validation_no_email_content"] = "请输入至少一种格式的电子邮件内容(HTML或文本)。"; +$LANG["validation_no_email_from_field"] = "请从'字段的电子邮件'。"; +$LANG["validation_no_email_template_name"] = "请输入电子邮件模板名称。"; +$LANG["validation_no_email_template_view_id"] = "请选择视图本电子邮件模板应映射。"; +$LANG["validation_no_email_template_view_mapping_value"] = "请说明何时应发送电子邮件。"; +$LANG["validation_no_enabled_themes"] = "请确保至少有一个主题是启用。"; +$LANG["validation_no_first_name"] = "请输入您的名字。"; +$LANG["validation_no_form_field_name"] = "请输入所有形式的字段名称。"; +$LANG["validation_no_form_field_single"] = "请输入表单字段的值。"; +$LANG["validation_no_form_id"] = "表格 ID 没有列明。请登录,并再次尝试。"; +$LANG["validation_no_form_name"] = "请输入表格名称。"; +$LANG["validation_no_form_url"] = "请输入表格 URL。"; +$LANG["validation_no_last_name"] = "请输入您的姓氏。"; +$LANG["validation_no_login_page"] = "请指出哪个网页您想发送您每次登录"; +$LANG["validation_no_logout_url"] = "请输入登出 URL。"; +$LANG["validation_no_main_email_recipient"] = "请输入至少一个主要的电子邮件收件人(即不是抄送或密件抄送)。"; +$LANG["validation_no_menu"] = "请为这个用户帐户菜单。"; +$LANG["validation_no_menu_id"] = "请选择菜单。"; +$LANG["validation_no_num_clients_per_page"] = "请输入每页客户显示数。"; +$LANG["validation_no_num_emails_per_page"] = "请输入电子邮件的数量在每个页面上的列表。"; +$LANG["validation_no_num_form_fields"] = "请输入您的表单中的字段数。"; +$LANG["validation_no_num_forms_per_page"] = "请输入每页表格显示数。"; +$LANG["validation_no_num_menus_per_page"] = "请输入菜单数量每页清单。"; +$LANG["validation_no_num_modules_per_page"] = "请输入每页模块。"; +$LANG["validation_no_num_option_lists_per_page"] = "请输入每一页的选项列表。"; +$LANG["validation_no_num_submissions_per_page"] = "请输入每页提交显示数。"; +$LANG["validation_no_option_list_name"] = "请进入选项列表的名称。"; +$LANG["validation_no_page_titles"] = "请输入该用户帐户的默认页面标题。"; +$LANG["validation_no_password"] = "请输入您的密码。"; +$LANG["validation_no_program_name"] = "请输入程式名称。"; +$LANG["validation_no_second_password"] = "请重新输入您的密码。"; +$LANG["validation_no_sessions_timeout"] = "请输入会话超时。"; +$LANG["validation_no_smart_fill_values"] = "请输入窗体域的名称和形式的URL。"; +$LANG["validation_no_table_prefix"] = "请输入数据库缀"; +$LANG["validation_no_tabs_defined"] = "无标签的定义"; +$LANG["validation_no_test_email_recipient"] = "请输入我们要测试电子邮件发送的电子邮件地址。"; +$LANG["validation_no_test_email_submission_id"] = "请输入提交身份证号码。"; +$LANG["validation_no_theme"] = "请选择一个主题。"; +$LANG["validation_no_theme_swatch"] = "请选择选定的主题斯沃琪。"; +$LANG["validation_no_timezone_offset"] = "请输入时区偏移量。"; +$LANG["validation_no_titles"] = "请输入页面标题。"; +$LANG["validation_no_two_column_names"] = "对不起,您不能输入已存在的数据分栏名称。"; +$LANG["validation_no_ui_language"] = "请选择一个界面语言。"; +$LANG["validation_no_url"] = "请输入网址。"; +$LANG["validation_no_username"] = "请输入您的帐号。"; +$LANG["validation_no_username_or_js"] = "您必须输入您的帐号。请启动浏览器的javascript。"; +$LANG["validation_no_view_fields"] = "您的观点并不包含任何领域!您需要转让,至少有一个领域是东西出现在你的视图了。"; +$LANG["validation_no_view_fields_selected"] = "请选择一个或多个字段添加到视图。"; +$LANG["validation_no_view_name"] = "请输入您的视图名称。"; +$LANG["validation_num_rows_to_add"] = "请输入要添加的分列数目。"; +$LANG["validation_option_list_name_taken"] = "对不起,此选项列表的名称已被使用。请选择一个新名称。"; +$LANG["validation_password_in_password_history"] = "为了安全,您不能进入作为 {\$history_size}。请输入不同的密码。"; +$LANG["validation_passwords_different"] = "请确定密码是一致的。"; +$LANG["validation_please_enter_search_date_range"] = "请输入要查找的时间范围。"; +$LANG["validation_please_enter_search_keyword"] = "请输入查找的关键字串。"; +$LANG["validation_select_field_type"] = "请选择一个字段类型。"; +$LANG["validation_select_submissions_to_copy"] = "请选择您想要复制的提交内容。"; +$LANG["validation_select_submissions_to_delete"] = "请选择要删除的提交。"; +$LANG["validation_smart_fill_cannot_fill"] = "很抱歉,我们无法填补这一领域。"; +$LANG["validation_smart_fill_invalid_field_type"] = "我们无法找到一个领域,但它不是一个下拉,复选框或单选按钮组。"; +$LANG["validation_smart_fill_no_field_found"] = "很抱歉,我们找不到与该网页上指定名称的窗体域。"; +$LANG["validation_smart_fill_no_page"] = "请找到该网页包含字段您想智能填充。"; +$LANG["validation_smart_fill_upload_all_pages"] = "请在表单上载的所有网页。"; +$LANG["validation_upload_folder_not_writable"] = "此临时文件夹无法写入。请联络您的空间商。"; +$LANG["validation_upload_html_files_only"] = "请只上传HTML文件。"; +$LANG["validation_username_taken"] = "对不起,此帐号已被使用。请输入其他的帐号名称。"; +$LANG["validation_wrong_password"] = "对不起,您的帐号或密码错误。"; +$LANG["word_about"] = "大约"; +$LANG["word_access"] = "访问"; +$LANG["word_account"] = "帐户"; +$LANG["word_account_sp"] = "账户(等)"; +$LANG["word_accounts"] = "帐户"; +$LANG["word_action"] = "行动"; +$LANG["word_active"] = "启动"; +$LANG["word_add"] = "添加"; +$LANG["word_add_rightarrow"] = "新增»"; +$LANG["word_add_uc_rightarrow"] = "地址»"; +$LANG["word_administration"] = "管理"; +$LANG["word_administrator"] = "管理员"; +$LANG["word_after"] = "之後"; +$LANG["word_aquamarine"] = "海蓝宝石"; +$LANG["word_asc"] = "升序"; +$LANG["word_author"] = "作者"; +$LANG["word_author_c"] = "作者:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«返回"; +$LANG["word_bcc_c"] = "密件抄送:"; +$LANG["word_before"] = "之前"; +$LANG["word_benefits"] = "优点"; +$LANG["word_blue"] = "蓝"; +$LANG["word_cancel"] = "取消"; +$LANG["word_cc_c"] = "抄送:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "复选框"; +$LANG["word_checklist"] = "清单"; +$LANG["word_client"] = "客户"; +$LANG["word_client_c"] = "客户:"; +$LANG["word_clients"] = "客户"; +$LANG["word_close"] = "关闭"; +$LANG["word_code"] = "代码"; +$LANG["word_column"] = "列"; +$LANG["word_columns"] = "列"; +$LANG["word_columns_sp"] = "列(S)"; +$LANG["word_complete"] = "完成"; +$LANG["word_configuration"] = "配置"; +$LANG["word_content"] = "内容"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "继续»"; +$LANG["word_copy"] = "复制"; +$LANG["word_custom"] = "自定义"; +$LANG["word_data"] = "数据"; +$LANG["word_date"] = "日期"; +$LANG["word_debugging_c"] = "调试:"; +$LANG["word_delete"] = "删除"; +$LANG["word_desc"] = "逆序"; +$LANG["word_direct"] = "直接"; +$LANG["word_disabled"] = "禁用"; +$LANG["word_documentation"] = "文档"; +$LANG["word_done"] = "完成"; +$LANG["word_drawbacks"] = "缺点"; +$LANG["word_dropdown"] = "下拉菜单"; +$LANG["word_edit"] = "编辑"; +$LANG["word_editable"] = "可编辑"; +$LANG["word_email"] = "电子邮件"; +$LANG["word_email_c"] = "电子邮件:"; +$LANG["word_emails"] = "电子邮件"; +$LANG["word_enabled"] = "启用"; +$LANG["word_equals"] = "等于"; +$LANG["word_error"] = "错误"; +$LANG["word_error_c"] = "错误:"; +$LANG["word_examples_c"] = "例如:"; +$LANG["word_external"] = "外部"; +$LANG["word_fail"] = "失败"; +$LANG["word_field"] = "字段"; +$LANG["word_field_sp"] = "字段"; +$LANG["word_fields"] = "字段"; +$LANG["word_fields_sp"] = "现场(S)"; +$LANG["word_file"] = "档案"; +$LANG["word_file_b_uc"] = "[档案]"; +$LANG["word_files"] = "文件"; +$LANG["word_filters"] = "过滤"; +$LANG["word_filters_sp"] = "过滤器(S)"; +$LANG["word_for"] = "for"; +$LANG["word_form"] = "表格"; +$LANG["word_form_c"] = "表格:"; +$LANG["word_formatting"] = "格式化"; +$LANG["word_forms"] = "表格"; +$LANG["word_found"] = "发现"; +$LANG["word_from"] = "来自"; +$LANG["word_from_c"] = "表格:"; +$LANG["word_general"] = "一般"; +$LANG["word_green"] = "绿"; +$LANG["word_grey"] = "灰色"; +$LANG["word_height"] = "高度"; +$LANG["word_help"] = "帮助"; +$LANG["word_hidden"] = "隐藏"; +$LANG["word_highlight"] = "突出"; +$LANG["word_horizontal"] = "水平"; +$LANG["word_hour"] = "小时"; +$LANG["word_hours"] = "小时"; +$LANG["word_html"] = "HTML"; +$LANG["word_id"] = "ID"; +$LANG["word_image"] = "图像"; +$LANG["word_incomplete"] = "未完成"; +$LANG["word_install"] = "安装"; +$LANG["word_installation"] = "安装"; +$LANG["word_internal"] = "内部"; +$LANG["word_language"] = "语言选择"; +$LANG["word_large"] = "大"; +$LANG["word_like"] = "近似"; +$LANG["word_login"] = "登录"; +$LANG["word_logo"] = "商标"; +$LANG["word_logout"] = "退出"; +$LANG["word_main"] = "基本设置"; +$LANG["word_medium"] = "中等"; +$LANG["word_menu"] = "菜单"; +$LANG["word_menus"] = "菜单"; +$LANG["word_minutes"] = "分钟"; +$LANG["word_misc"] = "船务"; +$LANG["word_module"] = "模块"; +$LANG["word_modules"] = "模块"; +$LANG["word_na"] = "N/A"; +$LANG["word_name"] = "名字"; +$LANG["word_name_c"] = "名字"; +$LANG["word_never"] = "从未"; +$LANG["word_next_rightarrow"] = "下一个»"; +$LANG["word_next_step_rightarrow"] = "下一步»"; +$LANG["word_no"] = "否"; +$LANG["word_none"] = "毫无"; +$LANG["word_notes"] = "注释"; +$LANG["word_notification"] = "通告"; +$LANG["word_number"] = "号码"; +$LANG["word_off"] = "远的"; +$LANG["word_offline"] = "离线"; +$LANG["word_okay"] = "好"; +$LANG["word_on"] = "论"; +$LANG["word_online"] = "在线"; +$LANG["word_operator"] = "工作人员"; +$LANG["word_options"] = "选项"; +$LANG["word_orange"] = "橙色"; +$LANG["word_order"] = "次序"; +$LANG["word_other"] = "其他"; +$LANG["word_other_c"] = "其他:"; +$LANG["word_page"] = "页"; +$LANG["word_page_c"] = "页码:"; +$LANG["word_pass"] = "通行证"; +$LANG["word_password"] = "密码"; +$LANG["word_password_c"] = "密码:"; +$LANG["word_pending"] = "紧迫的"; +$LANG["word_permissions"] = "权限"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«上一页"; +$LANG["word_private"] = "私人"; +$LANG["word_public"] = "公共"; +$LANG["word_purple"] = "紫色"; +$LANG["word_recipient"] = "接收者"; +$LANG["word_recipient_sp"] = "接收者"; +$LANG["word_red"] = "红"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "删除"; +$LANG["word_remove_uc_leftarrow"] = "«删除"; +$LANG["word_reply_to"] = "回复"; +$LANG["word_reply_to_c"] = "回复:"; +$LANG["word_required"] = "要求"; +$LANG["word_reset"] = "重置"; +$LANG["word_resolved"] = "解决"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "行"; +$LANG["word_search"] = "搜查"; +$LANG["word_searchable"] = "可搜索"; +$LANG["word_select"] = "选择"; +$LANG["word_setting"] = "设置"; +$LANG["word_settings"] = "设定"; +$LANG["word_show"] = "显示"; +$LANG["word_size"] = "尺寸"; +$LANG["word_skipped"] = "跳过"; +$LANG["word_small"] = "小"; +$LANG["word_solution"] = "解决方案"; +$LANG["word_sortable"] = "可排列"; +$LANG["word_start"] = "开始"; +$LANG["word_status"] = "状态"; +$LANG["word_string"] = "字串"; +$LANG["word_subject"] = "主题"; +$LANG["word_subject_c"] = "题目"; +$LANG["word_submenu"] = "子菜单"; +$LANG["word_submission"] = "提交"; +$LANG["word_submissions"] = "提交"; +$LANG["word_system"] = "系统"; +$LANG["word_tab"] = "标签"; +$LANG["word_tabs"] = "标签"; +$LANG["word_tabs_sp"] = "标签(S)"; +$LANG["word_test"] = "测试"; +$LANG["word_text"] = "文本"; +$LANG["word_textarea"] = "多行文本"; +$LANG["word_textbox"] = "文本框"; +$LANG["word_theme"] = "主题"; +$LANG["word_themes"] = "主题"; +$LANG["word_time"] = "时间"; +$LANG["word_tiny"] = "小"; +$LANG["word_tips"] = "提示"; +$LANG["word_today"] = "今天"; +$LANG["word_truncate_q"] = "截断?"; +$LANG["word_uninstall"] = "卸载"; +$LANG["word_unknown"] = "未知"; +$LANG["word_update"] = "更新"; +$LANG["word_upgrade"] = "升级"; +$LANG["word_url_c"] = "网址:"; +$LANG["word_user"] = "会员"; +$LANG["word_username"] = "用户名"; +$LANG["word_username_c"] = "用户名:"; +$LANG["word_validation"] = "验证"; +$LANG["word_value"] = "价值"; +$LANG["word_value_sp"] = "数值"; +$LANG["word_verified"] = "验证"; +$LANG["word_verify"] = "验证"; +$LANG["word_version"] = "版本"; +$LANG["word_vertical"] = "垂直"; +$LANG["word_view"] = "查看"; +$LANG["word_views"] = "点击"; +$LANG["word_warning"] = "警告!"; +$LANG["word_warning_c"] = "警告:"; +$LANG["word_web"] = "网络"; +$LANG["word_welcome"] = "欢迎!"; +$LANG["word_width_c"] = "宽度:"; +$LANG["word_words"] = "字"; +$LANG["word_wysiwyg"] = "所见即所得"; +$LANG["word_yellow"] = "黄河"; +$LANG["word_yes"] = "是"; \ No newline at end of file diff --git a/global/lang/zh_tw.php b/global/lang/zh_tw.php new file mode 100644 index 00000000..95bcf47e --- /dev/null +++ b/global/lang/zh_tw.php @@ -0,0 +1,1219 @@ +警告!您選擇了{\$num_selected_on_page}在此頁的意見書和{\$num_selected_on_other_pages}在其他網頁。請選擇下列其中一個選項:
    "; +$LANG["confirm_delete_submissions_on_other_pages2"] = "警告:您沒有選擇任何意見,但在此頁面您選擇的{\$num_selected_on_other_pages}在其他網頁。請確認您要刪除這些意見。
    "; +$LANG["confirm_delete_view"] = "您確定要刪除這個觀點呢?"; +$LANG["confirm_refresh_page"] = "你確定要刷新頁面?這將失去您所做的任何更改。"; +$LANG["confirm_save_change_before_redirect"] = "一個或多個領域得到了更新。您想保存更改之前重定向?"; +$LANG["confirm_smart_fill_db_column_fields"] = "你確定要智能填充的數據庫列名?這將覆蓋現有的值。"; +$LANG["confirm_smart_fill_db_column_fields_desc"] = "此選項自動生成數據庫列名的基礎上,顯示文本字段,因此內容的數據庫表更容易閱讀。"; +$LANG["confirm_smart_fill_display_names"] = "你確定要智能填充的顯示名稱?這將覆蓋現有的值。"; +$LANG["confirm_ungroup_option_list"] = "你確定要取消組合該選項列表?所有選項將被集中到一個單一的,不分組名單。"; +$LANG["confirm_uninstall_module"] = "您確定要卸載該模塊?所有模塊的數據都將丟失。"; +$LANG["date_AM"] = "上午"; +$LANG["date_Fri"] = "星期五"; +$LANG["date_Friday"] = "星期五"; +$LANG["date_Mon"] = "星期一"; +$LANG["date_Monday"] = "星期一"; +$LANG["date_PM"] = "下午"; +$LANG["date_Sat"] = "星期六"; +$LANG["date_Saturday"] = "星期六"; +$LANG["date_Sun"] = "星期日"; +$LANG["date_Sunday"] = "星期日"; +$LANG["date_Thu"] = "星期四"; +$LANG["date_Thursday"] = "星期四"; +$LANG["date_Tue"] = "星期二"; +$LANG["date_Tuesday"] = "星期二"; +$LANG["date_Wed"] = "星期三"; +$LANG["date_Wednesday"] = "星期三"; +$LANG["date_am"] = "上午"; +$LANG["date_month_April"] = "四月"; +$LANG["date_month_August"] = "八月"; +$LANG["date_month_December"] = "十二月"; +$LANG["date_month_February"] = "二月"; +$LANG["date_month_January"] = "一月"; +$LANG["date_month_July"] = "七月"; +$LANG["date_month_June"] = "六月"; +$LANG["date_month_March"] = "三月"; +$LANG["date_month_May"] = "五月"; +$LANG["date_month_November"] = "十一月"; +$LANG["date_month_October"] = "十月"; +$LANG["date_month_September"] = "九月"; +$LANG["date_month_short_Apr"] = "四月"; +$LANG["date_month_short_Aug"] = "八月"; +$LANG["date_month_short_Dec"] = "十二月"; +$LANG["date_month_short_Feb"] = "二月"; +$LANG["date_month_short_Jan"] = "一月"; +$LANG["date_month_short_Jul"] = "七月"; +$LANG["date_month_short_Jun"] = "六月"; +$LANG["date_month_short_Mar"] = "三月"; +$LANG["date_month_short_May"] = "可能"; +$LANG["date_month_short_Nov"] = "十一月"; +$LANG["date_month_short_Oct"] = "十月"; +$LANG["date_month_short_Sep"] = "九月"; +$LANG["date_pm"] = "下午"; +$LANG["notify_account_deleted"] = "用戶帳戶已被刪除。"; +$LANG["notify_account_updated"] = "您的帳戶已成功更新。"; +$LANG["notify_add_display_values"] = "新增顯示值"; +$LANG["notify_admin_menu_updated"] = "布什政府菜單已被更新。"; +$LANG["notify_admin_theme_overridden"] = "管理員的主題已被手動覆蓋。"; +$LANG["notify_allow_url_fopen_not_set"] = "很抱歉,這個測試不能運行在Web服務器上。它要求allow_url_fopen選項被設置為1在php.ini文件。此設置允許 PHP來訪問文件,通過一個網址,這是需要執行這個測試。你可以測試手動上傳文件到該文件夾通過 FTP,然後試圖訪問它在您提供的網址。"; +$LANG["notify_change_temp_password"] = "你只需登錄一個臨時密碼。您應該重置您的密碼吧!"; +$LANG["notify_click_to_edit_new_submission"] = "點擊此處編輯新的提交。"; +$LANG["notify_client_account_menus_updated"] = "在客戶賬戶()已更新到{\$menu_name}菜單。您現在可以刪除以前的菜單與賬戶(等)。"; +$LANG["notify_client_account_not_updated"] = "客戶的帳戶無法更新。"; +$LANG["notify_client_account_themes_updated"] = "在客戶賬戶(等)已被更新為主題{\$theme}主題。現在您可以禁用與以前的主題賬戶(等)。"; +$LANG["notify_client_account_updated"] = "在客戶帳戶已成功更新。"; +$LANG["notify_client_menu_deleted"] = "客戶端菜單已被刪除。"; +$LANG["notify_client_menu_deleted_orphaned_accounts"] = "菜單已被刪除,但下面的客戶帳戶已不再擁有一個菜單!您需要更新以下帳戶:"; +$LANG["notify_client_menu_updated"] = "客戶端菜單已被更新。"; +$LANG["notify_conflicts_detected"] = "The data for these fields changed while you were editing the submission. Please select the value you would like to use."; +$LANG["notify_create_form_failure"] = "The SQL query to create the form has failed. The most common cause is that your form has exceeded the maximum row size permitted by MySQL for VARCHAR fields. If the database error displayed below indicates this, try changing some of your \"Medium\" fields to \"Large\". On most environments, you can have no more than 50 or so fields with \"Medium\" size."; +$LANG["notify_deleted_menu_already_assigned"] = "對不起,剛才的菜單試圖刪除已經被客戶使用下面列出。為了刪除菜單中,您首先需要客戶指定的其他菜單。點擊客戶端的名稱修改,個人帳戶,所有帳戶或指定一個不同的使用下拉菜單下面。"; +$LANG["notify_differences_resolved"] = "The differences have been resolved."; +$LANG["notify_disabled_theme_already_assigned"] = "很抱歉,其中一個主題,您只需殘疾人士已被用於下列客戶帳戶。要禁用的主題你首先需要每個客戶端分配到另一個主題。點擊客戶端的名稱修改,個人帳戶,或分配到所有帳戶使用下拉主題下面。"; +$LANG["notify_edit_email_fields_link"] = "點擊這裡可以指定哪些表單域是電子郵件領域,所以你可以針對他們在您的電子郵件模板。"; +$LANG["notify_edit_field_new_field"] = "這是一個新的領域 。您將需要更新的主頁,然後才能充分編輯此字段。"; +$LANG["notify_edit_option_list_after_save"] = "你必須選擇一個選項列表,然後保存更改,然後才能進行編輯。"; +$LANG["notify_email_field_config_deleted"] = "該電子郵件配置已被刪除。"; +$LANG["notify_email_fields_not_updated"] = "很抱歉,我們無法更新電子郵件字段。"; +$LANG["notify_email_fields_updated"] = "該電子郵件領域已更新。"; +$LANG["notify_email_not_sent"] = "很抱歉,郵件無法發送。請與網站管理員聯繫的地址如下。"; +$LANG["notify_email_not_sent_c"] = "很抱歉,無法發送電子郵件:"; +$LANG["notify_email_sent"] = "該電子郵件(擰)已發送。"; +$LANG["notify_email_template_deleted"] = "該電子郵件模板已被刪除。"; +$LANG["notify_email_template_updated"] = "該電子郵件模板已更新。"; +$LANG["notify_enabled_module_list_updated"] = "該清單已啟用的模塊已更新。"; +$LANG["notify_error_saving_fields"] = "有一個錯誤保存等領域。"; +$LANG["notify_field_changes_saved"] = "這些變化對你的領域(S)已被保存。"; +$LANG["notify_field_options_smart_filled"] = "你的領域選擇了智能填充。"; +$LANG["notify_field_selected"] = "該油田已被選中。 點擊這裡返回主字段列表。"; +$LANG["notify_field_updated"] = "該字段已更新。"; +$LANG["notify_file_not_uploaded"] = "該文件無法上傳。"; +$LANG["notify_file_uploaded"] = "該文件已成功上傳。"; +$LANG["notify_filters_not_updated"] = "有一個錯誤更新此客戶端的提交過濾器。"; +$LANG["notify_filters_updated"] = "該意見書過濾器已更新為這個客戶端。"; +$LANG["notify_folder_correct_permissions"] = "此文件夾具有正確的權限。"; +$LANG["notify_folder_url_match"] = "該文件夾和URL似乎正確地匹配。"; +$LANG["notify_folder_url_no_access"] = "這個測試不能執行自PHP無法訪問該網址。這通常是由URL被密碼保護的。htaccess文件。"; +$LANG["notify_folder_url_no_match"] = "此文件夾,網址的結合似乎並沒有被匹配。"; +$LANG["notify_folder_url_unknown_error"] = "發生未知的錯誤。你可以測試手動上傳文件到該文件夾通過 FTP,然後試圖訪問它在您提供的網址。"; +$LANG["notify_form_access_type_email_info"] = "這種形式具有管理員訪問類型,所以沒有客戶端訪問,並沒有列在下面的下拉。"; +$LANG["notify_form_deleted"] = "The form has been deleted."; +$LANG["notify_form_does_not_exist"] = "對不起,形式與該 ID不存在。"; +$LANG["notify_form_field_not_added"] = "窗體字段'{\$fieldname}'不能添加。"; +$LANG["notify_form_field_options_updated"] = "該窗體域選項已被更新。"; +$LANG["notify_form_field_removed"] = "場的形式成功刪除。"; +$LANG["notify_form_fields_removed"] = "該窗體域已成功拆除。"; +$LANG["notify_form_not_updated_notify_admin"] = "表單無法更新。請與網站管理員聯繫,報告這一問題。"; +$LANG["notify_form_settings_updated"] = "表單設置已成功更新。"; +$LANG["notify_form_submission_updated"] = "表單提交已更新。"; +$LANG["notify_form_tabs_updated"] = "該標籤已更新。"; +$LANG["notify_form_updated"] = "有關表格已成功更新。"; +$LANG["notify_form_views_updated"] = "該表格的觀點一直在更新。"; +$LANG["notify_install_invalid_db_info"] = "很抱歉,我們無法連接到數據庫使用您提供的資料。此錯誤信息的數據庫返回的是:{\$db_connection_error}"; +$LANG["notify_internal_form_created"] = "你的形式已建立!您可以配置形式,通過這些選項卡。"; +$LANG["notify_invalid_account_information_in_sessions"] = "該帳戶的信息存儲在會議上是無效的。請再次登錄以下。"; +$LANG["notify_invalid_license_key"] = "對不起,這似乎不是一個有效的許可證密鑰。請嘗試再次輸入。"; +$LANG["notify_invalid_permissions"] = "您沒有權限訪問此頁面。您已登出。"; +$LANG["notify_invalid_search_dates"] = "請使用日期選擇器輸入一個有效的日期或日期。"; +$LANG["notify_invalid_upload_folder"] = "上載文件夾是無效或不可寫。"; +$LANG["notify_lang_list_updated"] = "現有的用戶界面語言的名單已更新。"; +$LANG["notify_login_info_emailed"] = "您的登錄信息已發送給您。"; +$LANG["notify_max_forms_reached"] = "Sorry, you've reached the maximum number of forms you are permitted to store with this account ({\$max_forms}). In order to store other forms, you will need to delete one of the existing ones."; +$LANG["notify_module_already_installed"] = "哎呀,這個模塊已經安裝!"; +$LANG["notify_module_installed"] = "該模塊已經安裝。 點擊這裡選擇的模塊 。"; +$LANG["notify_module_list_updated"] = "該模塊名單已更新。"; +$LANG["notify_module_uninstalled"] = "該模塊已卸載。"; +$LANG["notify_module_updated"] = "在{\$module}模塊已更新為{\$version}。 點擊這裡選擇的模塊 。"; +$LANG["notify_multi_field_selected"] = "該油田已被選中。 點擊這裡查看和編輯領域的選擇。"; +$LANG["notify_multi_field_updated"] = "該字段已更新。您將可以配置實地查看後成立的表格。"; +$LANG["notify_multiple_fields_found"] = "多個元素被發現與這一領域的名稱({\$field_name})。可能發生這種情況如果網頁中包含不止一種形式,或者如果您不小心命名您的一個形式相同的另一個。請選擇一個你想從下面的列表。"; +$LANG["notify_new_default_view_created"] = "一個新的,默認的視圖包含所有表單域已創建。"; +$LANG["notify_new_submission_created"] = "該意見書已創建。您可以編輯它下面。"; +$LANG["notify_no_account_id_in_sessions"] = "沒有用戶的帳戶 ID被發現在會議。請再次登錄以下。"; +$LANG["notify_no_api_installed"] = "您沒有安裝的API"; +$LANG["notify_no_client_permissions"] = "沒有設置可以進行編輯。"; +$LANG["notify_no_email_template_selected"] = "請選擇電子郵件模板。"; +$LANG["notify_no_emails_defined"] = "沒有郵件,已確定了這種形式。要添加一個新的,點擊下面的按鈕。"; +$LANG["notify_no_field_settings"] = "此字段類型不包含任何額外的設置。"; +$LANG["notify_no_fields_in_tab"] = "此標籤不包含任何字段。"; +$LANG["notify_no_option_lists"] = "有沒有選項列表定義。點擊下面的按鈕來創建一個新的。"; +$LANG["notify_no_test_submission"] = "表格工具還沒有收到提交的尚未成功的測試。"; +$LANG["notify_no_user_email_fields_configured"] = "注意:如果你想發送電子郵件到任何電子郵件地址被列入表格,您首先需要配置形式的電子郵件域 。"; +$LANG["notify_no_views"] = "您的窗體不會有任何意見成立了!您將需要至少一個 View,以管理您的表單數據。"; +$LANG["notify_no_views_assigned_to_client_form"] = "看來,您的用戶帳戶沒有被分配到任何形式的意見,所以你將無法看到任何數據。請聯繫管理員進一步幫助。"; +$LANG["notify_no_views_defined"] = "您沒有任何意見確定。您將無法查看這種形式的意見,除非至少有一個創建視圖。點擊下面的按鈕創建默認視圖。"; +$LANG["notify_option_list_deleted"] = "選項列表已被刪除。"; +$LANG["notify_option_list_updated"] = "選項列表已更新。"; +$LANG["notify_public_form_omit_list_updated"] = "客戶端忽略列表這種形式已被更新。"; +$LANG["notify_public_view_omit_list_updated"] = "客戶端忽略列表這種觀點已被更新。"; +$LANG["notify_required_admin_pages"] = "以下頁都需要在管理員菜單:{\$remaining_pages}。"; +$LANG["notify_sessions_timeout"] = "很抱歉,沒有任何活動了一段時間,所以我們不得不記錄你。請再次登錄以下。"; +$LANG["notify_setup_options_updated"] = "在設置選項已更新。"; +$LANG["notify_smart_fill_field_not_found"] = "我們無法找到一個領域與此名稱 ({\$field_name}) 的形式(擰)指定。您可以手動設置字段類型下面,或按一下按鈕來編輯跳過這一領域的更高版本。"; +$LANG["notify_smart_fill_files_uploaded_successfully"] = "您的文件(S)的成功上載。嘗試一下智能填充按鈕,再試一次。如果此步驟失敗,您需要跳過此步驟和配置您的表單字段manally以後。"; +$LANG["notify_smart_fill_submitted"] = "該表格已提交。根據您的規模形式和數量方面的選擇,這可能需要一些時間。"; +$LANG["notify_smart_fill_upload_fields_fail"] = "很抱歉,一個或多個您輸入的文件無法上傳。您需要跳過此步驟並配置手動等領域。"; +$LANG["notify_submission_and_files_deleted"] = "提交和任何文件(擰)與已被刪除成功。"; +$LANG["notify_submission_copied"] = "提交已被複製。"; +$LANG["notify_submission_copied_edit"] = "提交已被複製。 您可以在下面進行編輯。"; +$LANG["notify_submission_deleted"] = "這些意見是刪除成功。"; +$LANG["notify_submission_deleted_with_problems"] = "這些意見是刪除,但遇到下列問題時,試圖刪除以下文件(補):"; +$LANG["notify_submission_id_not_found"] = "該意見書編號沒有找到。"; +$LANG["notify_submission_not_updated"] = "該意見書無法更新。"; +$LANG["notify_submissions_and_files_deleted"] = "提交的材料和任何文件(擰)與他們被刪除成功。"; +$LANG["notify_submissions_copied"] = "{\$num_submissions}份意見書已被複製。"; +$LANG["notify_submissions_deleted"] = "提交的材料被成功刪除。"; +$LANG["notify_submissions_deleted_with_problems"] = "提交的材料被刪除,但遇到下列問題時,試圖刪除以下文件(補):"; +$LANG["notify_suhosin_installed"] = "Warning: the Suhosin PHP extension is installed on your server. This may cause problems with your forms on your site. Click here for more information."; +$LANG["notify_test_email_not_sent"] = "您的測試郵件無法發送。"; +$LANG["notify_theme_cache_folder_not_writable"] = "這一主題的緩存文件夾不可寫。為了使這一主題{\$folder}文件夾必須具有完全的讀寫權限。"; +$LANG["notify_theme_list_updated"] = "的主題名單已更新。"; +$LANG["notify_themes_settings_updated"] = "您的主題設置已更新。"; +$LANG["notify_view_deleted"] = "視圖已被刪除。"; +$LANG["notify_view_group_deleted"] = "視圖組已被刪除。"; +$LANG["notify_view_missing_columns"] = "哎呀!對不起,這種觀點還沒有完全建立起來呢。"; +$LANG["notify_view_missing_columns_admin_fix"] = "點擊這裡可以指定哪些字段應顯示為列在此頁。"; +$LANG["notify_view_updated"] = "視圖已更新。"; +$LANG["notify_your_email_sent"] = "您的電子郵件已成功發送。"; +$LANG["phrase_100_per_page"] = "100頁"; +$LANG["phrase_10_per_page"] = "10每頁"; +$LANG["phrase_15_per_page"] = "15每頁"; +$LANG["phrase_1_direct"] = "1。直接"; +$LANG["phrase_1char"] = "1字符"; +$LANG["phrase_20_per_page"] = "20每頁"; +$LANG["phrase_25_per_page"] = "25每頁"; +$LANG["phrase_2_code"] = "2。代碼"; +$LANG["phrase_2_columns"] = "2列"; +$LANG["phrase_2chars"] = "2個字符"; +$LANG["phrase_3_columns"] = "3列"; +$LANG["phrase_4_columns"] = "4列"; +$LANG["phrase_50_per_page"] = "50頁"; +$LANG["phrase_accepting_submissions"] = "(接受意見書)"; +$LANG["phrase_access_admin_account_c"] = "您可以訪問您的管理帳戶:"; +$LANG["phrase_access_type"] = "訪問類型"; +$LANG["phrase_account_info"] = "帳戶信息"; +$LANG["phrase_account_settings"] = "帳戶設置"; +$LANG["phrase_action_needed"] = "需要採取的行動"; +$LANG["phrase_add_client"] = "加入客戶"; +$LANG["phrase_add_client_menu"] = "添加客戶端菜單"; +$LANG["phrase_add_default_settings_rightarrow"] = "添加默認設置 »"; +$LANG["phrase_add_field"] = "添加字段"; +$LANG["phrase_add_fields"] = "添加字段"; +$LANG["phrase_add_fields_rightarrow"] = "添加字段(S)»"; +$LANG["phrase_add_form"] = "添加窗體"; +$LANG["phrase_add_form_external"] = "添加窗體 - 外部"; +$LANG["phrase_add_form_internal"] = "添加窗體 - 內部"; +$LANG["phrase_add_new_group_rightarrow"] = "添加新集團 »"; +$LANG["phrase_add_num_rows"] = "添加 {\$number} 行(擰)"; +$LANG["phrase_add_row"] = "添加行»"; +$LANG["phrase_add_submission_button"] = "添加提交按鈕"; +$LANG["phrase_add_view_rightarrow"] = "添加視圖 »"; +$LANG["phrase_adding_multi_page_form"] = "添加多頁表格,空氣污染指數"; +$LANG["phrase_adding_single_page_form"] = "增加了單頁的表格,空氣污染指數"; +$LANG["phrase_admin_menu"] = "管理員菜單"; +$LANG["phrase_admin_only"] = "只有管理員"; +$LANG["phrase_admin_panel"] = "管理小組"; +$LANG["phrase_administrator_theme"] = "管理員主題"; +$LANG["phrase_advanced_settings_rightarrow"] = "高級設置 »"; +$LANG["phrase_all_X_results_selected"] = "所有 {\$numresults} 結果選擇"; +$LANG["phrase_all_clients"] = "所有客戶"; +$LANG["phrase_all_clients_except_c"] = "所有客戶的除外:"; +$LANG["phrase_all_clients_have_access"] = "(所有的客戶端訪問)"; +$LANG["phrase_all_fields"] = "所有字段"; +$LANG["phrase_all_fields_displayed"] = "顯示所有字段"; +$LANG["phrase_all_statuses"] = "所有狀態"; +$LANG["phrase_all_submissions"] = "所有參賽作品"; +$LANG["phrase_allow_fields_edited"] = "允許領域進行編輯"; +$LANG["phrase_alphanumeric"] = "字母數字(AZ,0-9)"; +$LANG["phrase_api_version"] = "API版本"; +$LANG["phrase_apply_timezone_offset"] = "應用時區偏移"; +$LANG["phrase_assign_all_listed_client_accounts_to_menu"] = "所有上市的客戶指定帳戶 {\$menu_dropdown} {\$submit_button}"; +$LANG["phrase_assign_all_listed_client_accounts_to_theme"] = "所有上市的客戶指定帳戶 {\$theme_dropdown} {\$submit_button}"; +$LANG["phrase_at_end"] = "在結束"; +$LANG["phrase_at_start"] = "在開始"; +$LANG["phrase_author_link"] = "作者鏈接"; +$LANG["phrase_auto_disable_account"] = "自動禁用帳戶的登錄嘗試失敗後#"; +$LANG["phrase_auto_size"] = "自動尺寸"; +$LANG["phrase_available_clients"] = "現有客戶"; +$LANG["phrase_available_fields"] = "可用字段"; +$LANG["phrase_available_option_lists"] = "可用的選項列表"; +$LANG["phrase_available_swatches"] = "可用色板"; +$LANG["phrase_available_swatches_c"] = "可用色板:"; +$LANG["phrase_available_tabs"] = "可用標籤"; +$LANG["phrase_available_views"] = "可點擊"; +$LANG["phrase_awaiting_form_submission"] = "等待的形式提交。"; +$LANG["phrase_back_to_field_list"] = "«返回字段列表"; +$LANG["phrase_back_to_search_results"] = "返回搜索結果"; +$LANG["phrase_base_view_on"] = "基地觀看 ..."; +$LANG["phrase_cache_folder"] = "Cache folder"; +$LANG["phrase_change_login_info"] = "更改登錄信息"; +$LANG["phrase_characters_limit_p"] = "字符的限制。"; +$LANG["phrase_check_db_settings_try_again"] = "請仔細檢查您的數據庫設置,點擊繼續按鈕。"; +$LANG["phrase_check_file_exists"] = "Check file exists"; +$LANG["phrase_check_url"] = "檢查 URL"; +$LANG["phrase_choose_new_table_prefix"] = "Choose New Table Prefix"; +$LANG["phrase_clean_up"] = "清理"; +$LANG["phrase_clear_cache_folder"] = "Clear cache folder"; +$LANG["phrase_clear_omit_list"] = "清除忽略列表"; +$LANG["phrase_client_account_settings"] = "客戶帳戶設置"; +$LANG["phrase_client_field"] = "客戶現場"; +$LANG["phrase_client_map_filters"] = "客戶地圖過濾器»"; +$LANG["phrase_client_may_edit"] = "客戶可以編輯"; +$LANG["phrase_client_menu"] = "客戶端菜單"; +$LANG["phrase_clients_can_access_form"] = "客戶誰可以訪問的形式"; +$LANG["phrase_clients_can_access_view"] = "客戶誰可以訪問視圖"; +$LANG["phrase_clients_cannot_access_form"] = "客戶誰不能訪問的形式"; +$LANG["phrase_clients_cannot_access_view"] = "客戶誰不能進入查看"; +$LANG["phrase_clients_may_edit"] = "客戶可以編輯"; +$LANG["phrase_code_c"] = "錯誤代碼:"; +$LANG["phrase_code_markup_field"] = "代碼 /標記場"; +$LANG["phrase_code_markup_type"] = "代碼 /標記類型"; +$LANG["phrase_codes_c"] = "錯誤代碼:"; +$LANG["phrase_column_width"] = "列寬"; +$LANG["phrase_company_name"] = "公司名稱"; +$LANG["phrase_configure_form_email_fields"] = "配置表單電子郵件域"; +$LANG["phrase_confirm_folder_url_match"] = "確認文件夾,網址匹配"; +$LANG["phrase_connect_rows"] = "連接行"; +$LANG["phrase_copy_email_settings_from"] = "複製電子郵件設置者..."; +$LANG["phrase_copy_settings_from"] = "複製設置從 ..."; +$LANG["phrase_core_fields"] = "核心領域"; +$LANG["phrase_core_version"] = "核心版本"; +$LANG["phrase_create_account"] = "創建帳戶"; +$LANG["phrase_create_admin_account"] = "創建管理員帳戶"; +$LANG["phrase_create_config_file"] = "創建配置文件"; +$LANG["phrase_create_database_tables"] = "創建數據庫表"; +$LANG["phrase_create_default_view"] = "創建默認視圖"; +$LANG["phrase_create_file"] = "創建文件"; +$LANG["phrase_create_group"] = "創建組"; +$LANG["phrase_create_new_email"] = "創建新的電子郵件"; +$LANG["phrase_create_new_menu"] = "創建新菜單"; +$LANG["phrase_create_new_option_list"] = "創建新的選項列表"; +$LANG["phrase_create_new_option_list_group"] = "創建新的選項列表中的組"; +$LANG["phrase_create_new_option_list_rightarrow"] = "創建新的選項列表»"; +$LANG["phrase_create_new_view"] = "創建新視圖"; +$LANG["phrase_create_new_view_group"] = "創建新視圖集團"; +$LANG["phrase_custom_display_format"] = "自定義顯示格式"; +$LANG["phrase_custom_recipient"] = "自定義收件人"; +$LANG["phrase_custom_url"] = "自定義網址"; +$LANG["phrase_dark_blue"] = "深藍色"; +$LANG["phrase_data_type"] = "數據類型"; +$LANG["phrase_database_hostname"] = "數據庫主機名"; +$LANG["phrase_database_name"] = "數據庫名稱"; +$LANG["phrase_database_password"] = "數據庫密碼"; +$LANG["phrase_database_settings"] = "數據庫設置"; +$LANG["phrase_database_setup"] = "數據庫安裝"; +$LANG["phrase_database_table_prefix"] = "數據庫表前綴"; +$LANG["phrase_database_username"] = "數據庫用戶名"; +$LANG["phrase_date_format"] = "日期格式"; +$LANG["phrase_db_column"] = "數據庫列"; +$LANG["phrase_db_setup_page_4"] = "4。數據庫安裝"; +$LANG["phrase_default_client_account_theme"] = "默認客戶帳戶主題"; +$LANG["phrase_default_date_field_search_value"] = "默認日期字段搜索的價值"; +$LANG["phrase_default_language"] = "默認語言"; +$LANG["phrase_default_menu"] = "默認的菜單"; +$LANG["phrase_default_sessions_timeout"] = "默認的會話超時"; +$LANG["phrase_default_sort_order"] = "默認的排序次序"; +$LANG["phrase_default_tab_label"] = "數據"; +$LANG["phrase_default_theme"] = "默認主題"; +$LANG["phrase_default_value"] = "默認值"; +$LANG["phrase_default_values"] = "默認值"; +$LANG["phrase_default_values_new_submissions"] = "新提交的默認值"; +$LANG["phrase_delete_field"] = "刪除字段"; +$LANG["phrase_delete_form"] = "刪除表"; +$LANG["phrase_delete_row"] = "刪除行"; +$LANG["phrase_delete_uploaded_fields_with_submission"] = "刪除相關的文件提交時刪除"; +$LANG["phrase_delete_view"] = "刪除查看"; +$LANG["phrase_disconnect_rows"] = "斷開行"; +$LANG["phrase_display_email"] = "顯示電子郵件"; +$LANG["phrase_display_name"] = "顯示名稱"; +$LANG["phrase_display_text"] = "顯示文本"; +$LANG["phrase_display_value"] = "顯示值"; +$LANG["phrase_edit_admin_menu"] = "編輯 Admin菜單"; +$LANG["phrase_edit_client"] = "修改客戶端"; +$LANG["phrase_edit_client_menu"] = "修改客戶端菜單"; +$LANG["phrase_edit_email_template"] = "編輯電子郵件模板"; +$LANG["phrase_edit_field"] = "編輯字段"; +$LANG["phrase_edit_field_c"] = "編輯領域:"; +$LANG["phrase_edit_form"] = "編輯表格"; +$LANG["phrase_edit_form_access_type_b"] = "[編輯表單的訪問類型]"; +$LANG["phrase_edit_option_list"] = "編輯選項列表"; +$LANG["phrase_edit_submission"] = "編輯投稿"; +$LANG["phrase_edit_submission_label"] = "編輯標籤提交"; +$LANG["phrase_edit_view"] = "編輯視圖"; +$LANG["phrase_email_format"] = "電子郵件格式"; +$LANG["phrase_email_settings"] = "電子郵件設置"; +$LANG["phrase_email_template"] = "電子郵件模板"; +$LANG["phrase_email_template_name"] = "電子郵件模板名稱"; +$LANG["phrase_error_learn_more"] = "了解更多有關此錯誤的。"; +$LANG["phrase_error_text_intro"] = "請更正以下錯誤(s)和重新提交:"; +$LANG["phrase_errors_learn_more"] = "點擊錯誤代碼以了解詳情。"; +$LANG["phrase_event_trigger"] = "事件觸發"; +$LANG["phrase_external_form"] = "外在形式"; +$LANG["phrase_external_form_info"] = "外在形式信息"; +$LANG["phrase_external_your_own_form"] = "外部(你自己的形式)"; +$LANG["phrase_field_comments"] = "現場評論"; +$LANG["phrase_field_label"] = "場標籤"; +$LANG["phrase_field_options"] = "域選項"; +$LANG["phrase_field_size"] = "字段大小"; +$LANG["phrase_field_skipped"] = "場跳過"; +$LANG["phrase_field_specific_settings"] = "現場特定的設置"; +$LANG["phrase_field_type"] = "字段類型"; +$LANG["phrase_field_type_no_validation"] = "有沒有可用於這一領域的類型的驗證規則。"; +$LANG["phrase_field_types"] = "字段類型"; +$LANG["phrase_field_value"] = "字段值"; +$LANG["phrase_field_values_to_display_values"] = "字段值»顯示值"; +$LANG["phrase_final_touches_page_6"] = "6。最後潤色"; +$LANG["phrase_finalize_form"] = "最後確定表"; +$LANG["phrase_first_name"] = "姓氏"; +$LANG["phrase_footer_text"] = "頁腳文本"; +$LANG["phrase_for_any_form_submission"] = "對於任何形式提交"; +$LANG["phrase_for_view_submissions"] = "提交意見書,只有在瀏覽:"; +$LANG["phrase_forgot_password"] = "忘記密碼?"; +$LANG["phrase_form_already_selected"] = "表格已選定"; +$LANG["phrase_form_email_field_b_c"] = "[形式的電子郵件領域]:"; +$LANG["phrase_form_email_field_configuration"] = "表單電子郵件域配置"; +$LANG["phrase_form_email_fields"] = "電子郵件字段表"; +$LANG["phrase_form_field"] = "表單域"; +$LANG["phrase_form_field_contents"] = "表格字段內容"; +$LANG["phrase_form_field_name"] = "表字段名稱"; +$LANG["phrase_form_field_placeholders"] = "表單域佔位符"; +$LANG["phrase_form_fields"] = "表單域"; +$LANG["phrase_form_info"] = "表格信息"; +$LANG["phrase_form_info_2"] = "2。表格信息"; +$LANG["phrase_form_list"] = "表格清單"; +$LANG["phrase_form_name"] = "表格名稱"; +$LANG["phrase_form_page"] = "表格Page"; +$LANG["phrase_form_placeholders"] = "表框"; +$LANG["phrase_form_submission"] = "表單提交"; +$LANG["phrase_form_submissions"] = "表單提交"; +$LANG["phrase_form_type"] = "表型"; +$LANG["phrase_form_url"] = "表格網址"; +$LANG["phrase_form_urls"] = "表網址"; +$LANG["phrase_forms_assigned_to_any_account"] = "形式分配給任何帳戶"; +$LANG["phrase_forms_page_default_message"] = "窗體頁的默認消息"; +$LANG["phrase_ft_installation"] = "表格工具安裝腳本"; +$LANG["phrase_full_width"] = "全寬"; +$LANG["phrase_getting_started"] = "入門"; +$LANG["phrase_global_placeholders"] = "全球佔位符"; +$LANG["phrase_group_name"] = "集團名稱"; +$LANG["phrase_group_options_q"] = "集團選擇?"; +$LANG["phrase_group_rows"] = "集團行"; +$LANG["phrase_have_fun"] = "玩得開心!"; +$LANG["phrase_highlight_colour"] = "突出顯示顏色"; +$LANG["phrase_html_email"] = "HTML電子郵件"; +$LANG["phrase_html_template"] = "HTML模板"; +$LANG["phrase_images_media"] = "圖片 /媒體"; +$LANG["phrase_import_option_list_rightarrow"] = "導入選項列表»"; +$LANG["phrase_input_length"] = "輸入長度"; +$LANG["phrase_installation_help"] = "安裝幫助"; +$LANG["phrase_internal_form"] = "內部形式"; +$LANG["phrase_ip_address"] = "IP地址"; +$LANG["phrase_is_multi_page_form_q"] = "這是一個多頁的形式?"; +$LANG["phrase_label_response_placeholders"] = "標籤 /響應佔位符"; +$LANG["phrase_large_300px"] = "大(300像素)"; +$LANG["phrase_large_400px"] = "大(400像素)"; +$LANG["phrase_last_7_days"] = "最近7天"; +$LANG["phrase_last_logged_in"] = "最後登錄"; +$LANG["phrase_last_modified"] = "最後修改"; +$LANG["phrase_last_modified_date"] = "最後修改日期"; +$LANG["phrase_last_name"] = "名字"; +$LANG["phrase_letters_only"] = "英皇只有"; +$LANG["phrase_light_brown"] = "淺棕色"; +$LANG["phrase_limit_email_content"] = "電子郵件的內容限制在視圖的字段"; +$LANG["phrase_loading_ellipsis"] = "載入中... ..."; +$LANG["phrase_log_in"] = "登入"; +$LANG["phrase_login_as_user"] = "該用戶身份登錄"; +$LANG["phrase_login_info"] = "登錄信息"; +$LANG["phrase_login_page"] = "登錄頁"; +$LANG["phrase_login_panel_c"] = "登錄面板:"; +$LANG["phrase_login_panel_leftarrows"] = "«登錄面板"; +$LANG["phrase_login_password"] = "登錄密碼"; +$LANG["phrase_login_username"] = "登錄用戶名"; +$LANG["phrase_logo_link_url"] = "標誌連結網址"; +$LANG["phrase_logout_url"] = "註銷網址"; +$LANG["phrase_main_nav"] = "主要資產淨值"; +$LANG["phrase_main_settings"] = "主要設置"; +$LANG["phrase_manage_client"] = "管理客戶端"; +$LANG["phrase_manage_client_omit_list"] = "管理客戶端忽略列表"; +$LANG["phrase_max_file_size"] = "最大文件大小"; +$LANG["phrase_max_length"] = "最大長度"; +$LANG["phrase_max_length_words_chars"] = "- 最大長度(文字/字符)"; +$LANG["phrase_may_add_submissions"] = "五月加入意見書"; +$LANG["phrase_may_copy_submissions"] = "可以復制提交"; +$LANG["phrase_may_delete_submissions"] = "可以刪除意見書"; +$LANG["phrase_medium_150px"] = "中(150像素)"; +$LANG["phrase_medium_200px"] = "中(200像素)"; +$LANG["phrase_menu_name"] = "菜單名稱"; +$LANG["phrase_menu_type"] = "菜單式"; +$LANG["phrase_min_password_length"] = "最小密碼長度"; +$LANG["phrase_module_description"] = "模塊描述"; +$LANG["phrase_module_info"] = "模塊信息"; +$LANG["phrase_module_nav"] = "模塊資產淨值"; +$LANG["phrase_month_to_date"] = "月初至今"; +$LANG["phrase_multi_select"] = "多選"; +$LANG["phrase_multi_select_dropdown"] = "多下拉菜單中選擇"; +$LANG["phrase_multiple_fields_found"] = "多領域找到!"; +$LANG["phrase_mysql_available"] = "MySQL available"; +$LANG["phrase_name_or_last_name"] = "姓/名"; +$LANG["phrase_new_blank_email"] = "新建空白電子郵件"; +$LANG["phrase_new_blank_option_list"] = "新建空白選項列表"; +$LANG["phrase_new_blank_view"] = "新建空白查看"; +$LANG["phrase_new_ft_installation"] = "新形式工具安裝"; +$LANG["phrase_new_option_list"] = "新購清單"; +$LANG["phrase_new_password"] = "新密碼"; +$LANG["phrase_new_password_reenter"] = "新的密碼(請重新輸入)"; +$LANG["phrase_new_view"] = "新視角"; +$LANG["phrase_new_view_all_fields"] = "新視角 - 所有領域"; +$LANG["phrase_next_client"] = "下一個客戶端»"; +$LANG["phrase_next_field"] = "下一個欄 »"; +$LANG["phrase_next_form"] = "下表»"; +$LANG["phrase_next_view"] = "下查看»"; +$LANG["phrase_no_clients"] = "沒有客戶端"; +$LANG["phrase_no_limit"] = "沒有限制"; +$LANG["phrase_no_offset"] = "無偏移"; +$LANG["phrase_no_option_lists_available"] = "無選項列出了可用的的。"; +$LANG["phrase_no_views"] = "沒意見"; +$LANG["phrase_no_views_with_filters_p"] = "(定義帶過濾器沒有意見)"; +$LANG["phrase_none_not_recommended"] = "無(不推薦)"; +$LANG["phrase_not_assigned_to_option_list"] = "該字段沒有分配到一個選項列表。"; +$LANG["phrase_not_available"] = "Not Available"; +$LANG["phrase_not_equal"] = "不等於"; +$LANG["phrase_not_found"] = "未找到!"; +$LANG["phrase_not_like"] = "不喜歡"; +$LANG["phrase_not_visible_to_client"] = "(不可見的客戶端)"; +$LANG["phrase_num_clients_per_page"] = "數量客戶每頁"; +$LANG["phrase_num_emails_per_page"] = "數量電子郵件每頁"; +$LANG["phrase_num_fields"] = "數場"; +$LANG["phrase_num_forms_per_page"] = "數形式每頁"; +$LANG["phrase_num_menus_per_page"] = "數菜單每頁"; +$LANG["phrase_num_modules_per_page"] = "數模塊每頁"; +$LANG["phrase_num_option_lists_per_page"] = "數選項列表每頁"; +$LANG["phrase_num_options"] = "編號選項"; +$LANG["phrase_num_rows"] = "數行"; +$LANG["phrase_numbers_only"] = "號碼只能"; +$LANG["phrase_often_localhost"] = "(常“本地主機”)"; +$LANG["phrase_on_form_submission"] = "提交表單"; +$LANG["phrase_one_char_number"] = "至少有一個字符是一個數字(0-9)"; +$LANG["phrase_one_char_upper"] = "至少有一個字符是大寫"; +$LANG["phrase_one_special_char"] = "至少有一個 {\$chars}"; +$LANG["phrase_only_specific_clients_have_access"] = "(只有特定的客戶端訪問)"; +$LANG["phrase_open_form_in_dialog"] = "在對話窗口的形式打開"; +$LANG["phrase_open_form_in_new_tab_or_win"] = "打開此形成一個新的標籤 /窗口"; +$LANG["phrase_option_list"] = "選項列表"; +$LANG["phrase_option_list_name"] = "選項列表名稱"; +$LANG["phrase_option_list_or_contents"] = "選項列表/目錄"; +$LANG["phrase_option_lists"] = "選項列表"; +$LANG["phrase_overwrite_tables"] = "Overwrite Tables"; +$LANG["phrase_page_titles"] = "頁面標題"; +$LANG["phrase_pass_on"] = "傳遞"; +$LANG["phrase_password_min"] = "它必須是至少的 {\$length} 字符。"; +$LANG["phrase_password_one_number"] = "它必須至少包含一個數字(0-9)。"; +$LANG["phrase_password_one_uppercase"] = "它必須至少包含一個大寫字母。"; +$LANG["phrase_password_requirements_c"] = "密碼要求:"; +$LANG["phrase_password_reset"] = "密碼重置"; +$LANG["phrase_password_special_char"] = "它必須包含至少一個下列字符:的 {\$chars}"; +$LANG["phrase_pdo_available"] = "PDO available"; +$LANG["phrase_permissions_other_settings"] = "權限 /其他設置"; +$LANG["phrase_permitted_file_types"] = "允許的文件類型"; +$LANG["phrase_phone_number"] = "電話號碼"; +$LANG["phrase_phone_number_format"] = "電話號碼格式"; +$LANG["phrase_php_ini_max_allowed_upload_size_c"] = "php.ini的最大允許文件上載大小:"; +$LANG["phrase_php_sessions"] = "PHP Sessions"; +$LANG["phrase_php_version"] = "PHP版本"; +$LANG["phrase_please_confirm"] = "請確認"; +$LANG["phrase_please_enter_license_key"] = "請輸入您的許可證密鑰"; +$LANG["phrase_please_select"] = "請選擇"; +$LANG["phrase_please_select_form"] = "請選擇一個窗體"; +$LANG["phrase_prev_client"] = "«之前的客戶端"; +$LANG["phrase_prev_form"] = "«之前形成"; +$LANG["phrase_prevent_password_reuse"] = "防止再次使用的#最後密碼"; +$LANG["phrase_previous_field"] = "«前場"; +$LANG["phrase_previous_page"] = "上一頁"; +$LANG["phrase_previous_view"] = "«之前查看"; +$LANG["phrase_program_name"] = "程序名稱"; +$LANG["phrase_public_form_omit_list"] = "公佈形式省略名單"; +$LANG["phrase_public_view_omit_list"] = "公眾的視野省略名單"; +$LANG["phrase_pwd_installation_script_created"] = "(as you created in the installation script)"; +$LANG["phrase_query_problem"] = "有一個問題,使用以下查詢:"; +$LANG["phrase_radio_buttons"] = "單選按鈕"; +$LANG["phrase_random_form_submission"] = "隨機表單提交"; +$LANG["phrase_re_enter_password"] = "重新輸入密碼"; +$LANG["phrase_recipient_type"] = "收件人類型"; +$LANG["phrase_redirect_url"] = "重定向網址"; +$LANG["phrase_refresh_list"] = "刷新列表"; +$LANG["phrase_refresh_module_list"] = "刷新模塊列表"; +$LANG["phrase_refresh_page"] = "刷新頁面"; +$LANG["phrase_refresh_theme_list"] = "刷新主題列表"; +$LANG["phrase_register_new_email"] = "註冊新的電子郵件"; +$LANG["phrase_remaining_characters"] = "其餘的字符"; +$LANG["phrase_remaining_words"] = "餘下的話"; +$LANG["phrase_remove_tabs"] = "刪除標籤"; +$LANG["phrase_required_password_chars"] = "需要密碼字符"; +$LANG["phrase_resend_test_submission"] = "重新發送測試提交"; +$LANG["phrase_return_form_list"] = "返回到窗體列表"; +$LANG["phrase_row_selected"] = "{\$num_rows} 行選擇"; +$LANG["phrase_rows_selected"] = "{\$num_rows} 行選擇"; +$LANG["phrase_sample_data"] = "示例數據"; +$LANG["phrase_save_changes"] = "保存更改"; +$LANG["phrase_search_keyword"] = "搜索關鍵字"; +$LANG["phrase_security_settings"] = "安全設置"; +$LANG["phrase_select_all"] = "選擇所有"; +$LANG["phrase_select_all_X_results"] = "選擇所有 {\$numresults} 結果"; +$LANG["phrase_select_all_on_page"] = "全選頁"; +$LANG["phrase_select_date"] = "選擇日期"; +$LANG["phrase_select_field"] = "選擇字段"; +$LANG["phrase_select_swatch"] = "選擇樣本"; +$LANG["phrase_selected_clients"] = "選擇客戶"; +$LANG["phrase_selected_views"] = "選擇次數"; +$LANG["phrase_send_email"] = "發送電子郵件"; +$LANG["phrase_send_test_email"] = "發送測試電子郵件"; +$LANG["phrase_session_expired"] = "Session expired"; +$LANG["phrase_sessions_timeout"] = "會話超時"; +$LANG["phrase_setting_value"] = "設定值"; +$LANG["phrase_setup_options"] = "設置選項"; +$LANG["phrase_show_all"] = "顯示所有"; +$LANG["phrase_show_form"] = "顯示表"; +$LANG["phrase_size_large"] = "大(文字)"; +$LANG["phrase_size_medium"] = "中等“(<= 256個字符)"; +$LANG["phrase_size_small"] = "小“(<= 20字符)"; +$LANG["phrase_size_tiny"] = "小“(<= 5個字符)"; +$LANG["phrase_size_very_large"] = "非常大(MEDIUMTEXT)"; +$LANG["phrase_skip_field"] = "跳過場"; +$LANG["phrase_skip_step"] = "跳過步驟"; +$LANG["phrase_small_100px"] = "小(100px的)"; +$LANG["phrase_small_80px"] = "小(80px)"; +$LANG["phrase_smart_fill"] = "智能填充"; +$LANG["phrase_smart_fill_fields_from_c"] = "智能填充領域的:"; +$LANG["phrase_smart_fill_user_documentation"] = "智能填充用戶文檔 »"; +$LANG["phrase_sort_as"] = "排序為"; +$LANG["phrase_special_fields"] = "特殊領域"; +$LANG["phrase_standard_fields"] = "標準字段"; +$LANG["phrase_standard_filters"] = "標準過濾器»"; +$LANG["phrase_step_1"] = "第1步"; +$LANG["phrase_step_2"] = "第2步"; +$LANG["phrase_step_3"] = "第3步"; +$LANG["phrase_step_4"] = "第4步"; +$LANG["phrase_step_5"] = "第5步"; +$LANG["phrase_step_6"] = "第6步"; +$LANG["phrase_strip_tags_in_submissions"] = "帶標籤的形式提交"; +$LANG["phrase_subject_line"] = "主題行"; +$LANG["phrase_submission_date"] = "提交日期"; +$LANG["phrase_submission_id"] = "提交ID"; +$LANG["phrase_submission_made"] = "遞交了:{\$SUBMISSIONDATE}"; +$LANG["phrase_submission_type"] = "提交類型"; +$LANG["phrase_submissions_per_page"] = "每頁意見書"; +$LANG["phrase_system_check"] = "系統檢查"; +$LANG["phrase_system_fields_no_validation"] = "你可能不驗證系統領域。"; +$LANG["phrase_system_time_offset"] = "系統時間偏移"; +$LANG["phrase_tab_label"] = "標籤標籤"; +$LANG["phrase_tables_already_exist"] = "Tables already exist!"; +$LANG["phrase_test_folder_permissions"] = "測試文件夾權限"; +$LANG["phrase_test_submission"] = "測試提交"; +$LANG["phrase_test_submission_3"] = "3。測試提交"; +$LANG["phrase_test_submission_received"] = "測試提交日期"; +$LANG["phrase_text_and_html"] = "文本和HTML"; +$LANG["phrase_text_email"] = "文本郵箱"; +$LANG["phrase_text_template"] = "文本模板"; +$LANG["phrase_the_previous_month"] = "前一個月"; +$LANG["phrase_theme_description"] = "主題說明"; +$LANG["phrase_theme_info"] = "主題信息"; +$LANG["phrase_tiny_30px"] = "小(30px)"; +$LANG["phrase_tiny_50px"] = "小(50像素)"; +$LANG["phrase_total_results_c"] = "合計結果:"; +$LANG["phrase_type_c"] = "錯誤類型:"; +$LANG["phrase_unselect_all"] = "取消選擇所有"; +$LANG["phrase_update_accounts"] = "更新帳戶"; +$LANG["phrase_update_email_template"] = "更新電子郵件模板"; +$LANG["phrase_update_field"] = "更新域"; +$LANG["phrase_update_order"] = "更新訂購"; +$LANG["phrase_update_view"] = "更新視圖"; +$LANG["phrase_upload_file"] = "上傳文件"; +$LANG["phrase_upload_files"] = "上傳文件"; +$LANG["phrase_upload_folder"] = "Upload folder"; +$LANG["phrase_upload_folder_path"] = "上傳文件夾路徑"; +$LANG["phrase_upload_folder_url"] = "上傳文件夾的URL"; +$LANG["phrase_use_custom_cache_folder"] = "Use custom cache folder"; +$LANG["phrase_use_default_value_q"] = "使用默認值?"; +$LANG["phrase_used_by_num_form_fields"] = "使用#窗體域"; +$LANG["phrase_uses_swatches"] = "使用色板"; +$LANG["phrase_valid_email"] = "有效的電子郵件"; +$LANG["phrase_validation_error"] = "驗證錯誤"; +$LANG["phrase_validation_rule"] = "驗證規則"; +$LANG["phrase_view_field_group"] = "View Field Group"; +$LANG["phrase_view_group"] = "查看組"; +$LANG["phrase_view_id"] = "查看ID"; +$LANG["phrase_view_name"] = "視圖名稱"; +$LANG["phrase_view_placeholders"] = "查看佔位符"; +$LANG["phrase_view_submissions"] = "提交意見"; +$LANG["phrase_view_uploaded_files"] = "查看上傳的文件"; +$LANG["phrase_viewing_range"] = "[查看( \$ startnum)到( \$ endnum)]"; +$LANG["phrase_when_sent"] = "當發送"; +$LANG["phrase_when_submission_is_deleted"] = "當提交被刪除"; +$LANG["phrase_when_submission_is_edited"] = "當被編輯提交"; +$LANG["phrase_who_can_access"] = "誰可以訪問?"; +$LANG["phrase_word_limit_p"] = "字數限制。"; +$LANG["phrase_year_to_date"] = "年初至今"; +$LANG["phrase_yes_for_all_views"] = "是的,所有意見"; +$LANG["phrase_yes_for_specific_views"] = "是的,具體的意見"; +$LANG["phrase_your_account"] = "您的帳戶"; +$LANG["phrase_your_email"] = "您的電郵地址"; +$LANG["phrase_your_email_address"] = "您的電子郵件地址"; +$LANG["processing_form_disabled"] = "對不起,這種形式已被禁用。"; +$LANG["processing_form_incomplete"] = "很抱歉,這似乎並未完全從內部設立表格工具。最可能的原因此問題是,你刪除了“form_tools_initialize_form”隱藏的表單字段,但沒有完成所有的步驟“添加表”的過程。

    請登錄並審查的形式配置。"; +$LANG["processing_init_complete"] = "謝謝您!您的測試申請,已由接通成功。請返回到窗體工具管理面板,並點擊“刷新”按鈕底部添加窗體步驟 3頁,完成設定您的形式。"; +$LANG["processing_invalid_form_id"] = "Sorry, this doesn't appear to be a valid form ID."; +$LANG["processing_no_form_id"] = "process.php需要一個表格ID處理。請確保您的表單包含一個隱藏字段的名稱為“form_tools_form_id”,指的形式傳遞著身份證。"; +$LANG["processing_no_form_url_for_recaptcha"] = "表格工具是無法確定在何處時,他們沒有重定向進入的captcha正確。請傳遞一個隱藏字段的名稱form_tools_form_url包含的URL的形式。"; +$LANG["processing_no_post_vars"] = "process.php未收到任何數據。注意:此腳本不能直接加載在瀏覽器中。
    確保您的形式是通過 POST發送。"; +$LANG["processing_no_redirect_url"] = "這些意見是正確處理,但您還沒有指定一個重定向的URL這種形式!編輯您的形式在表格工具的用戶界面和添加重定向URL。"; +$LANG["special_language"] = "Chinese"; +$LANG["special_language_locale"] = "Traditional Chinese"; +$LANG["special_text_direction"] = "ltr"; +$LANG["text_account_settings_page"] = "所有新客戶帳戶將被創建的設置和權限定義如下。要覆蓋一個設置為特定的客戶,請編輯該客戶帳戶和訪問的設置選項卡。"; +$LANG["text_add_form_choose_integration_method"] = "選擇哪種方法要使用整合表單與表格工具。"; +$LANG["text_add_form_code_submission_benefits"] = "此方法使用表格工具API ,包括在主窗體工具腳本。該 API提供了一個數字的有用功能,使工作相結合的形式與表格工具盡可能簡單。沒有任何限制,如何可以提交表單當您使用API​​。您可以提交的內容一氣呵成,或逐頁,你可以添加自己的自定義的服務器端驗證,CAPTCHA圖像,你可以選擇現在提交信息,但只告訴它顯示在Form提交工具UI在以後的日子(見提交的文件定稿節的API幫助文檔)。"; +$LANG["text_add_form_code_submission_drawbacks"] = "為了提交表單數據通過 PHP,您的表單必須位於同一網站,本表格工具的安裝。第二,非技術性和新手表格工具的用戶,這種方法可能有點嚇人第一。但有大量的文件來幫助你,包括兩個簡單的教程整合您的單頁和多頁形式(這些都是鏈接到後面的步驟)。"; +$LANG["text_add_form_direct_submission_benefits"] = "這是最簡單的方式提交您的表格,表格工具。它不需要任何知識的PHP,只需要一個非常小的改動,您的窗體。它非常適合於小型的形式在您要提交的信息只到數據庫,然後將用戶重定向到“三江源”頁面。"; +$LANG["text_add_form_direct_submission_drawbacks"] = "這次提交方法非常簡單易用,但沒有提供多少控制更為複雜的形式。多頁表格或形式,需要服務器端驗證更適合第二種方法:通過表單提交工具的API。"; +$LANG["text_add_form_field_types1"] = "快完成了!這頁試圖​​找到所有的表單域,並確定其字段類型。點擊智能填充按鈕右側的開始。您將只允許時進行的一切行動都得到了解決 - 問題需要你注意出現在“行動起來 ”一欄。"; +$LANG["text_add_form_field_types2"] = "如果您的表單中沒有 HTML,點擊跳過步驟按鈕繼續。這都是可以配置的版本。"; +$LANG["text_add_form_field_types3"] = "這重新加載內容的形式(S)。注:這將覆蓋您所做的任何更改在此頁面。"; +$LANG["text_add_form_field_types4"] = "如果您遇到問題,請點擊這裡跳過這一步。所有未解決的字段都設置為使用默認值。您可以自定義這些字段後。"; +$LANG["text_add_form_field_types_manual_upload"] = "如果你一直無法智能填充你的領域,你可能想嘗試另一種解決辦法:上傳你的表格複製在下面的字段。"; +$LANG["text_add_form_field_types_manual_upload2"] = "注意: 不要上傳原始PHP頁面(或其他服務器端代碼) -剛剛上傳的HTML版本。要獲得此,查看和保存網頁從您的Web瀏覽器。"; +$LANG["text_add_form_field_types_multiple_fields_found"] = "有多個字段不能被發現,在你指定的表單頁面。這主要是有可能造成下列操作之一:"; +$LANG["text_add_form_field_types_multiple_fields_found10"] = "您輸入的一個或多個網址的形式對您的多頁的形式不正確。"; +$LANG["text_add_form_field_types_multiple_fields_found11"] = "一個或多個頁面的表單的密碼保護和腳本無法訪問該網頁。"; +$LANG["text_add_form_field_types_multiple_fields_found2"] = "您沒有正確輸入表單的URL。"; +$LANG["text_add_form_field_types_multiple_fields_found3"] = "點擊這裡返回表格信息頁,檢查您的設置。"; +$LANG["text_add_form_field_types_multiple_fields_found4"] = "你改變你的形式(S)進行測試後提交"; +$LANG["text_add_form_field_types_multiple_fields_found5"] = "點擊這裡把通過另一項測試提交。"; +$LANG["text_add_form_field_types_multiple_fields_found6"] = "你的密碼保護形式和腳本無法訪問該網頁。"; +$LANG["text_add_form_field_types_multiple_fields_found7"] = "在另一個標籤 /窗口的這個瀏覽器,登錄到您的窗體,然後單擊刷新頁面下面的按鈕嘗試重新找到的字段。"; +$LANG["text_add_form_field_types_multiple_fields_found8"] = "如果沒有上述解決方案的工作,你可能也想嘗試手動上傳的形式進行處理 。"; +$LANG["text_add_form_field_types_multiple_fields_found9"] = "有多個字段無法找到網頁的形式指定。這主要是有可能造成其中一個:"; +$LANG["text_add_form_help_link"] = "如果您遇到任何麻煩在這些步驟中,嘗試讀出用戶文件 。"; +$LANG["text_add_form_step_1_text_1"] = "以下頁面帶領您通過步驟來配置表格工具來儲存您的表單提交。在繼續之前,請檢查:"; +$LANG["text_add_form_step_1_text_2"] = "您的窗體已創建和它可以通過一個 URL(localhost是罰款)"; +$LANG["text_add_form_step_1_text_3"] = "可以編輯表單"; +$LANG["text_add_form_step_2_para_2"] = "打開您在編輯器中形成你的選擇和改變你的形式標記以下,包括兩個隱藏字段。"; +$LANG["text_add_form_step_2_para_3"] = "下一步, 打開您的形式在網頁瀏覽器各個領域的填寫並提交。提交後,您應該看到一個通知消息。一旦此消息顯示,返回此頁,然後點擊刷新按鈕。當此過程完成後,你會看到一個繼續按鈕,考慮你的下一個步驟。"; +$LANG["text_add_form_step_2_para_6"] = "在您的表單提交,包括下面的值。他們可能是通過直接設置 PHP或轉嫁給通過窗體本身。以下是每個例子。在(\$ varname的)是一個哈希(或關聯數組)提交的所有形式的信息 - 這通常是(\$ postvar)或(\$ sessionvar)變量,但它可能是客戶化定制的。"; +$LANG["text_add_form_step_2_text_2"] = "輸入你的網址 “三江源”頁面在這裡。這是你希望人們被引導到後已提交的表格。"; +$LANG["text_add_form_step_3_para_1"] = "此頁面列出了所有領域,你的表單提交。每個字段,請予審議,並移除任何不需要儲存每個提交。如果您刪除一個有效的實地事故,或希望更改信息存儲的形式,返回到前一頁派遣一個新的測試提交。"; +$LANG["text_add_form_step_3_para_2"] = "注意:如果你要發送多個值通過複選框或一個多選擇框,請確保您的域的名稱結尾的[]字符(見用戶文檔獲取更多信息)。"; +$LANG["text_add_form_step_3_text_1"] = "下面是其中的樂趣的開始!在這一點上,表格工具正在等待測試提交的表單。它將使用這種形式提交知道什麼樣的信息應該存儲在數據庫中。"; +$LANG["text_add_form_step_3_text_2"] = "通過指向您的表格,表格工具"; +$LANG["text_add_form_step_3_text_3"] = "使用表格工具的API"; +$LANG["text_add_form_step_3_text_4"] = "為了幫助整合您的方式,我們建議您閱讀下列其中一個教程:"; +$LANG["text_add_form_step_3_text_5"] = "他們解釋如何設置您的形式在準備提交的測試,包括其他信息,可能會有幫助。該生產線的PHP你需要的是:"; +$LANG["text_add_form_step_3_text_6"] = "這就確保了數據的實際發送到窗體工具。當您並通過您提交的測試,點擊下面的按鈕。"; +$LANG["text_add_form_step_3_text_7"] = "在網頁上之前,您的最終的“感謝您”頁面,請務必將以下參數添加到\$ params變量:"; +$LANG["text_add_form_step_5_para_1"] = "數據庫已成立了這一形式和表已被激活使用。如果您提出的意見,指出您形式process.php,請返回表單並刪除以下隱藏字段:"; +$LANG["text_add_form_step_5_para_2"] = "然後訪問你的“謝謝”頁面空白的會議。一旦做到這一點,所有新的形式提交的將被處理並存儲的表格工具。嘗試提交劃界案或兩個,核實所有資料上傳正確。"; +$LANG["text_add_form_step_5_para_3"] = "如果你想微調您的形式選擇,如自動收發電子郵件,添加額外的表單域字段,或自定義窗體字段類型,你可以編輯您的形式在任何時候。"; +$LANG["text_add_form_step_5_para_4"] = "由於您的窗體包含的文件上傳字段,您將需要配置每個字段指定文件上傳文件夾,允許哪些文件和。這可在顯示選項卡上的編輯窗體頁。"; +$LANG["text_add_form_step_5_para_5"] = "如果提交被送往通過API,更改ft_api_init_form_page行的第一頁上您的形式:"; +$LANG["text_add_submission_button"] = "添加提交按鈕才會出現的次數是有“可能增加意見書 ”選項設置為 “是”。"; +$LANG["text_admin_email_placeholder_info"] = "這是電子郵件地址的表格工具管理員,確定在您的帳戶設置。這只能輸出的電子郵件地址,所以如果你想使用一個 HTML鏈接,您將需要在包裝它<a>標記,如下所示:
    <a href="mailto:{\$ADMINEMAIL}">(\$ ADMINEMAIL)“/ 1”"; +$LANG["text_also_default_login_page_theme"] = "(也是默認登錄頁的主題)"; +$LANG["text_cache_folder_cleared"] = "Cache folder cleared."; +$LANG["text_cache_folder_invalid_permissions"] = "The cache folder needs to have full read-write permissions."; +$LANG["text_cache_folder_not_writable"] = "Cache folder is not valid or writable."; +$LANG["text_cache_folder_problem"] = "Warning: your cache folder is not writable. To remove this message, please follow the instructions here."; +$LANG["text_cannot_clear_cache_folder"] = "We were unable to delete all files in your cache folder."; +$LANG["text_choose_form_type"] = "首先,請選擇你的表單類型。"; +$LANG["text_client_form_page"] = "本頁面列出了所有意見的形式和分配給此客戶端。提示:為了讓他們看到窗體的意見,他們需要被分配到至少一個視圖。"; +$LANG["text_client_map_filters_desc1"] = "客戶地圖過濾讓你限制意見書,顯示在此查看所映射的值在表單字段的值在客戶帳戶。"; +$LANG["text_client_no_forms"] = "您目前沒有表格供審查。"; +$LANG["text_client_welcome"] = "歡迎!這個程序儲存的所有信息提交您的網站訪問者。要查看提交的特定形式,只要按一下,在視圖鏈接,或看到最左邊的導航菜單的其他選項。"; +$LANG["text_config_file_created"] = "您的config.php文件已創建。"; +$LANG["text_config_file_not_created"] = "我們無法創建您的config.php文件。您需要手動創建該文件。"; +$LANG["text_config_file_not_created_instructions"] = "複製和粘貼的內容,從下面一節到一個文件名為 config.php和通過 FTP上傳到窗體工具/全球文件夾(該文件夾還包含其他一些文件和目錄,一個文件名為 library.php)。"; +$LANG["text_confirm_delete_form"] = "是的,我要刪除此表"; +$LANG["text_create_admin_account"] = "現在,我們要創建管理員帳戶。這是用於管理各個方面的表格工具,如添加的形式,創造客戶帳戶。"; +$LANG["text_create_new_client_account"] = "使用以下表格,以創建一個新的客戶帳戶。所有字段是必需的。"; +$LANG["text_custom_cache_folder_invalid_permissions"] = "The custom cache folder you entered needs to have full read-write permissions."; +$LANG["text_date_formatting_link"] = "參見 PHP {\$datefunctionlink} 函數格式化選項"; +$LANG["text_default_file_settings_page"] = "本頁面定義文件上傳設置為您的表格工具的安裝。這些規則適用於所有文件上傳通過表格工具,除非明確覆蓋為個人窗體域。注意:如果您更改上載文件夾後,文件已被上傳,他們將自動移到新文件夾。"; +$LANG["text_default_theme_cache_folder_not_writable"] = "在繼續之前,您需要更新您的/主題/默認/緩存文件夾,以便充分讀寫權限。一旦這樣做,該消息便會消失,你可以安裝腳本。"; +$LANG["text_default_values_in_view"] = "這部分是可選的。所有參賽作品創造了這種觀點將包含此處指定的默認值。"; +$LANG["text_delete_all_forms"] = "我要刪除的所有文件,上傳通過這種形式"; +$LANG["text_delete_form_warning"] = "您確定要刪除此表格?此操作無法撤消。所有數據都將永久丟失!"; +$LANG["text_edit_admin_menu_page"] = "您可以修改您的菜單如下。為了確保您始終可以訪問所有的功能表內提供工具,下面的頁面是必需的:表格,客戶,您的帳戶,模塊,設置和註銷。"; +$LANG["text_edit_client_menu_page"] = "本節可以讓你定制左側導航欄為每個用戶。您可以創建任意多的客戶端菜單你的意願,指定任何帳戶,其中的一個。默認情況下有兩個菜單:一個是你,管理員,和一個對所有客戶帳戶。管理員帳戶可能被修改,但並未消除。"; +$LANG["text_edit_tab_summary"] = "如果你想查看本組的字段到標籤,只要輸入標籤名稱如下。大功告成後,選擇相應的選項卡組中的每個字段的字段選項卡 。"; +$LANG["text_edit_view_list_page"] = "此標籤控制哪些字段顯示為列在提交上市頁,以及一些額外的設置,為這些領域。注:我們建議您添加不超過 4或5的最重要領域的視圖。"; +$LANG["text_email_settings_intro"] = "這個頁面可以讓您確定你的表單字段存儲電子郵件和相應的名稱。一旦你定義它們在這裡,你可以使用它們在電子郵件模板作為收件人。本節完全是可選的。"; +$LANG["text_email_tab_summary"] = "這部分允許您構建任意數量的電子郵件,只要您發送表單提交和其他觸發器。"; +$LANG["text_email_template_tab"] = "本節允許您確定哪些內容顯示在電子郵件。如果你想發送電子郵件,因為只有文本或電子郵件,只輸入一個值,該節。如果您輸入的值為,該電子郵件將被發送兩種格式。"; +$LANG["text_email_template_text_1"] = "有一種通過提交表單,{\$FORMNAME}。"; +$LANG["text_email_template_text_1_c"] = "有一種通過提交表單,{\$FORMNAME}:"; +$LANG["text_email_template_thanks"] = "感謝您的提交!"; +$LANG["text_error_installing"] = "There was a problem installing this module."; +$LANG["text_error_message_to_show"] = "錯誤消息顯示,如果字段驗證失敗"; +$LANG["text_error_still_no_exists"] = "Sorry, the config.php file still does not exist."; +$LANG["text_external_form_desc"] = "外部表格形式,已經存在於您的網站,或網站上的某個地方。選擇此選項,如果你有自己的形式,你想融入表格工具。"; +$LANG["text_fields_tab_summary"] = "此頁面列出了所有的表單域。為了控制它們出現在瀏覽意見,請點擊標籤 。刪除一個字段在此頁面將刪除所有提交的,所以請小心!"; +$LANG["text_file_extension_info"] = "輸入文件擴展名之間用逗號分隔(例如JPG,GIF和PNG)或留空以允許任何文件類型。"; +$LANG["text_file_field_placeholders_info"] = "文件領域有兩個特殊的佔位符:FILEURL和文件名。 FILEURL是完整的URL文件,所以你可以直接鏈接到它在你的電子郵件,文件名僅僅是文件名。"; +$LANG["text_filters_page"] = "只有那些提交符合您定義的規則將出現在下面的這個觀點。"; +$LANG["text_filters_tips"] = "如需提示如何使用提交過濾器,請用戶文檔 。"; +$LANG["text_forgot_password"] = "沒問題。只要輸入您的用戶名,您的登錄信息將發送到您的電子郵件地址的文件。如果您忘記您的用戶名,請發送電子郵件與網站管理員在{\$site_admin_email}。"; +$LANG["text_form_contains_file_fields"] = "本表包含一個或多個文件上傳字段:"; +$LANG["text_form_placeholder_info"] = "以下佔位符可以用於任何電子郵件模板和語言佔位領域,無論什麼查看電子郵件模板被分配到。佔位符的問題的具體形式問題,答案佔位符對每個問題的答案。"; +$LANG["text_form_submission_date_placeholder"] = "當提交的日期作出。"; +$LANG["text_form_tools_form_url"] = "完整的URL形式。這只能有一個值的外在形式。"; +$LANG["text_form_tools_login_url"] = "在登錄網址為表格工具。"; +$LANG["text_form_view_permission_info_admin"] = "注:此表目前有管理員權限的類型,所以沒有任何的客戶帳戶將可以看到這一觀點。"; +$LANG["text_form_view_permission_info_private"] = "注:此表目前有私人的訪問類型,這樣的公共及私人選擇這裡將被限制在該子集的客戶。"; +$LANG["text_ft_installed"] = "恭喜,表格工具已成功安裝!"; +$LANG["text_global_placeholder_info"] = "這些佔位符,可用於任何模板,任何形式。"; +$LANG["text_group_name_explanation"] = "添加的字段通過添加表格的過程中,此值是預先充滿的顯示文本的任何領域使用的價值。您可能希望改變它,以更好地特徵的內容。"; +$LANG["text_install_create_config_file"] = "表格工具存儲您的服務器和數據庫設置一個名為config.php中發現,在你的/全球/文件夾中。點擊“創建文件”按鈕,自動生成該文件在您的服務器。"; +$LANG["text_install_create_database_tables"] = "現在,我們要創建的表格工具數據庫表。這一步需要數據庫本身已創建。如果您不知道如何做到這一點,請聯繫您的託管服務提供商。"; +$LANG["text_install_db_tables_error_tip_1"] = "“未知的MySQL服務器主機”,通常意味著您所提供的主機名是不正確的。這也許嘗試設置為“本地主機” - 這是一種常見的方式提及“本地”數據庫,Web服務器上。"; +$LANG["text_install_db_tables_error_tip_2"] = "“無法連接到本地MySQL服務器通過插座”是指數據庫主機領域再次不正確。"; +$LANG["text_install_db_tables_error_tip_3"] = "“拒絕訪問用戶:”是指有一個問題,您的用戶名/密碼組合。"; +$LANG["text_install_db_tables_error_tip_4"] = "“拒絕訪問用戶:數據庫... ...”的意思是,雖然您的用戶名和密碼,您提供的是正確的,它無法連接到特定的數據庫,該帳戶。這意味著,要么你的數據庫的名稱不正確,或該用戶帳戶不關聯的數據庫。"; +$LANG["text_install_email_content_text"] = "我們的網站上有大量資源可以幫助您入門,包括我們的在線文檔(https://docs.formtools.org)和教程(https://docs.formtools.org/tutorials)。 如果您發現卡住或有疑問,請在github上提問(https://github.com/formtools/core/issues/)。"; +$LANG["text_install_form_tools_server_not_supported"] = "對不起,表格工具將無法在服務器上運行。 請點擊這裡的最低要求。"; +$LANG["text_install_system_check"] = "本頁面運行幾個測試你的系統,以確保它能夠運行表格工具。"; +$LANG["text_installation_intro"] = "Select your language and let's get started."; +$LANG["text_installation_session_expired"] = "Sorry, your session has expired. You will need to begin the installation process again. Click the button below."; +$LANG["text_internal_form_desc"] = "內部形式只存在於表工具 - 其他未在您的網站。唯一的形式工具的用戶帳戶將有機會獲得的形式。選擇此選項,如果您沒有現有的形式。"; +$LANG["text_internal_form_intro"] = "使用下面的表格來創建一個新的內部形式。所有設置,包括數量和內容的表格字段,可以改變和配置以後。"; +$LANG["text_invalid_cache_folder"] = "The custom cache folder you entered does not exist."; +$LANG["text_js_required"] = "為了登入並使用表格工具,您必須啟用 JavaScript在瀏覽器中。現在請啟用,然後點擊瀏覽器中刷新。"; +$LANG["text_last_modified_date_explanation_c"] = "最後一次提交的修改。對於新的意見,這是相同的:"; +$LANG["text_limit_email_content_desc"] = "此選項僅適用於 HTML和文本內容生成Smarty的循環。"; +$LANG["text_limit_fields_info"] = "You have used of permitted fields."; +$LANG["text_list_views_with_filters"] = "(只列出次數與一個或多個過濾器的定義)"; +$LANG["text_log_in_to_ft"] = "登錄到表格工具"; +$LANG["text_login"] = "請在下面登錄訪問)(\$程序program_name管理小組。如果您忘記了密碼, 請點擊這裡 。"; +$LANG["text_login_info"] = "按照要求,這是你的登錄信息。"; +$LANG["text_name_of_form"] = "這個名字的形式。"; +$LANG["text_no_clients"] = "目前有沒有客戶在數據庫中。要添加新的客戶帳戶,單擊添加客戶端按鈕。"; +$LANG["text_no_clients_found"] = "沒有找到客戶。擴大您的搜索條件。"; +$LANG["text_no_fields_in_view"] = "這個觀點並沒有任何領域它。點擊下面的鏈接。"; +$LANG["text_no_forms"] = "目前有沒有表格,在數據庫中。要添加新的形式,請點擊以下按鈕添加窗體。"; +$LANG["text_no_forms_found"] = "沒有形式被發現。"; +$LANG["text_no_forms_found_search"] = "沒有形式被發現。嘗試擴大搜索條件。"; +$LANG["text_no_modules_found"] = "沒有模塊被發現。擴大您的搜索條件。"; +$LANG["text_no_recipients_added"] = "任何人已被添加。"; +$LANG["text_no_search_results"] = "沒有結果與此搜索條件 /查看。"; +$LANG["text_no_submissions_found"] = "對不起,沒有發現意見書。"; +$LANG["text_no_themes"] = "您沒有任何主題的定義。點擊下面的按鈕來刷新你的主題列表,或檢查表格工具用戶文檔信息有關添加主題。"; +$LANG["text_non_deletable_fields"] = "此字段所使用的核心腳本,不能編輯或刪除,而不會造成不兼容。如果您想更改字段類型,使複製並編輯該副本。"; +$LANG["text_option_list_group_explanation"] = "如果被選中,它可以讓你的選擇進行分組。如何組顯示取決於字段類型使用此選項列表。"; +$LANG["text_option_list_page"] = "單選按鈕,複選框,下拉列表和多選下拉領域的所有用戶提供多種選擇,他們可以從中選擇一個或多個項目。在表格工具,這些被稱為選項列表。一般來說,這些自動創建的添加外在形式的過程,但你可以手動添加或編輯您的選擇,如果你的形式列出了以下內容更改或者構造域僅在內部使用。"; +$LANG["text_option_list_used_by_fields"] = "此選項列表用於多個表單域。如果更新下面的信息,這將是改變了所有的領域(見表格字段 ​​標籤查看列表字段)。如果您想更新的值,或者一個子集的字段當前分配, 點擊這裡創建一個新的選項列出具有相同的價值觀,這一個。然後,你可以指定你想要的表單域到新組。"; +$LANG["text_public_form_omit_list_page"] = "公用表格給你的好處,讓所有的客戶帳戶訪問它們,而不必手動分配每個客戶端給他們。這個頁面可以讓您針對這些客戶誰可能無法訪問此表格,即使表格標記為 public。"; +$LANG["text_public_view_omit_list_page"] = "公眾意見給你的好處,讓所有的客戶帳戶訪問它們,而不必手動分配每個客戶端給他們。這個頁面可以讓您針對這些客戶誰不能訪問這個特定視圖。"; +$LANG["text_reference_tab_info"] = "此頁面列出了所有可用的佔位符為表單。佔位符的字符串,可用於在電子郵件模板和字段標有一個特殊的佔位符圖標 。當進入一個領域,他們是動態轉換為適當的值時,該字段查看或發送電子郵件。"; +$LANG["text_required_folders_need_write_permissions"] = "Please ensure the required folders have write permissions. See the help documentation for further information."; +$LANG["text_review_user_doc"] = "審查用戶文檔"; +$LANG["text_send_email_from_edit_submission_page"] = "包括選擇是否發送這封電子郵件提交頁面的編輯"; +$LANG["text_smart_fill_option_list_problem"] = "我們無法智能填充你的領域選擇。然而,作為替代,你可以嘗試上傳一個副本的形式在外地頁以下。注意: 不要上傳原始PHP頁面(或其他服務器端代碼) -剛剛上傳的HTML版本。要獲得此,查看和保存網頁從您的Web瀏覽器。"; +$LANG["text_submission_ip_address"] = "IP地址的用戶誰提出的意見書。"; +$LANG["text_system_check_passed"] = "Your system is able to run Form Tools."; +$LANG["text_tables_exist_desc"] = "Sorry, it appears that some tables already exist with the table prefix that you entered. You can either choose to overwrite these tables or pick a new table prefix."; +$LANG["text_test_email"] = "使用以下表格,以查看或自己發送一封電子郵件,這封電子郵件產生的模板。 唯一的電子郵件發送到以下指定的電子郵件,主要的,CC和密件副本收件人的電子郵件地址被忽略,而測試。"; +$LANG["text_test_email_templates_no_submissions"] = "為了測試您的電子郵件模板,您必須首先將通過至少一種形式提交。"; +$LANG["text_theme_page_intro"] = "本頁面列出了所有你的主題。點擊縮略圖看到一個更大的例子主題的風格。 “啟用”複選框,確定是否該主題可以由客戶選擇。若要瀏覽所有可用的主題,請訪問網站表格工具 。"; +$LANG["text_tutorial_adding_first_form"] = "教程:添加您的第一個表格!"; +$LANG["text_unique_submission_id"] = "獨特的提交身份證。"; +$LANG["text_unused_option_list"] = "此選項列表不被用於任何形式的領域。"; +$LANG["text_upgraded"] = "您的安裝已經升級到{\$version}"; +$LANG["text_upload_folder_invalid_permissions"] = "The upload folder needs to have full read-write permissions."; +$LANG["text_used_option_list"] = "此選項列表用於以下領域。"; +$LANG["text_view_fields_info"] = "此標籤控制時顯示的字段編輯提交這種觀點認為,它們的順序以及他們是否是可編輯與否。"; +$LANG["text_view_tab_summary"] = "此標籤可讓您建立不同的方式進行分組,並安排您的數據。點擊讓你創建自定義的子集的表單數據拆分成可管理的塊,並限制哪些客戶可能會看到或編輯。"; +$LANG["validation_account_disabled"] = "對不起,您的帳戶已被禁用。"; +$LANG["validation_account_not_recognized"] = "對不起,該用戶名無法識別。"; +$LANG["validation_account_not_recognized_info"] = "對不起,該用戶名沒有被發現。請再試一次,或與網站管理員聯繫的地址如下。"; +$LANG["validation_account_pending"] = "您的用戶帳戶尚待批准由管理員。"; +$LANG["validation_check_delete_client"] = "您確定要刪除此客戶帳戶?"; +$LANG["validation_client_password_missing_number"] = "客戶端的密碼必須至少包含一個數字(0-9)。"; +$LANG["validation_client_password_missing_special_char"] = "客戶端的密碼必須至少包含下列字符之一:{\$chars}"; +$LANG["validation_client_password_missing_uppercase"] = "客戶端的密碼必須至少包含一個大寫字母。"; +$LANG["validation_client_password_too_short"] = "客戶端的密碼需要至少{\$number}個字符。"; +$LANG["validation_col_name_is_reserved_word"] = "很抱歉,此數據庫列名稱是在MySQL中保留工作。請重命名它!"; +$LANG["validation_db_name"] = "數據庫名稱不能包含句點或斜杠。"; +$LANG["validation_db_not_updated_invalid_input"] = "該數據庫無法更新。請檢查您輸入的值是有效的。"; +$LANG["validation_default_admin_and_client_themes_not_enabled"] = "很抱歉,默認的管理員和客戶端的主題必須始終啟用。"; +$LANG["validation_default_phone_num_required"] = "請填寫完整的電話號碼 <B> { \$ FIELD} </ b>欄 - 數字。"; +$LANG["validation_default_rule_alpha"] = "請只的<b> { \$領域} </ b>字段輸入字母和數字。"; +$LANG["validation_default_rule_letters_only"] = "請 <B> { \$領域} </ b>欄只能輸入字母。"; +$LANG["validation_default_rule_numbers_only"] = "請只輸入數字 <B> { \$領域} </ b>欄。"; +$LANG["validation_default_rule_required"] = "請輸入一個 <B> { \$字段} </ b>欄位。"; +$LANG["validation_default_rule_valid_email"] = "的<b> { \$字段} </ b>欄位,請輸入一個有效的電子郵件地址。"; +$LANG["validation_delete_form_confirm"] = "請檢查框,以確認您要刪除此表格。"; +$LANG["validation_delete_non_empty_option_list"] = "警告!使用此選項列表由一個或多個表單域。刪除它將使這些領域停止正常工作。"; +$LANG["validation_display_names_incomplete"] = "請輸入一個值為所有的顯示名稱,或單擊智能填充選項,進入他們的動態。"; +$LANG["validation_duplicate_form_field_name"] = "你不能有多個字段具有相同的字段名稱。"; +$LANG["validation_email_not_found_or_invalid"] = "很抱歉,電子郵件與您的帳戶不存在或無效。"; +$LANG["validation_folder_invalid_permissions"] = "為了運行這個測試,權限需要設置的上傳文件夾,以便讀取和寫入文件(777在Unix)。"; +$LANG["validation_folder_not_writable"] = "此文件夾不可寫。"; +$LANG["validation_internal_form_too_many_fields"] = "對不起,您只能創建的形式與 1000域或更少。"; +$LANG["validation_invalid_admin_email"] = "請輸入有效的adminstrator的電子郵件地址。"; +$LANG["validation_invalid_admin_username"] = "您的用戶名只能由字母數字字符(AZ和0-9)。"; +$LANG["validation_invalid_client_username"] = "客戶端的用戶名只能由字母數字字符(AZ和0-9)。"; +$LANG["validation_invalid_client_username2"] = "對不起,用戶名的可能只包含字母,數字和下劃線字符。請輸入新的用戶名。"; +$LANG["validation_invalid_column_name"] = "列名只能是字母數字(AZ,0-9)。請檢查列名。"; +$LANG["validation_invalid_custom_from_email"] = "請輸入有效的自定義'者的電子郵件地址。"; +$LANG["validation_invalid_custom_reply_to_email"] = "請輸入有效的自定義'回复到的電子郵件地址。"; +$LANG["validation_invalid_default_sessions_timeout"] = "請輸入有效的值(數字)為默認的會話超時。"; +$LANG["validation_invalid_email"] = "請輸入有效的電子郵件地址。"; +$LANG["validation_invalid_email_id"] = "對不起,這是一個無效的電子郵件 ID。"; +$LANG["validation_invalid_folder"] = "很抱歉,這似乎不是一個有效的文件夾。"; +$LANG["validation_invalid_form_field_names"] = "表單域可能只是字母和下劃線(宰,0-9,_),沒有空格。"; +$LANG["validation_invalid_num_clients_per_page"] = "請只輸入數字,在客戶數量每頁領域。"; +$LANG["validation_invalid_num_emails_per_page"] = "請只輸入數字的電子郵件每頁。"; +$LANG["validation_invalid_num_form_fields"] = "請只輸入數字,在數場場。"; +$LANG["validation_invalid_num_forms_per_page"] = "請只輸入數字的編號形式每頁領域。"; +$LANG["validation_invalid_num_menus_per_page"] = "請只輸入數字的菜單每頁。"; +$LANG["validation_invalid_num_modules_per_page"] = "請只輸入數字模塊的數量每頁領域。"; +$LANG["validation_invalid_num_option_lists_per_page"] = "請只輸入數字的序號選項列表每頁領域。"; +$LANG["validation_invalid_num_submissions_per_page"] = "請輸入有效的若干意見每頁。"; +$LANG["validation_invalid_sessions_timeout"] = "請輸入有效的會話超時(整數僅!)。"; +$LANG["validation_invalid_tab_assign_values"] = "請輸入數字只有在'從'和'到'領域。"; +$LANG["validation_invalid_table_prefix"] = "請輸入數據庫的前綴由字母和下劃線字符。"; +$LANG["validation_invalid_upload_folder"] = "您的服務器的安裝PHP有一個無效的中的upload_tmp_dir設置值。 “{\$upload_folder}”不是一個有效的文件夾。"; +$LANG["validation_invalid_url"] = "請輸入有效的網址。"; +$LANG["validation_invalid_username"] = "您的用戶名只能由字母數字字符(AZ和0-9)。"; +$LANG["validation_is_form_active"] = "請說明是否是活動的形式或不。"; +$LANG["validation_menu_name_taken"] = "很抱歉,此菜單名稱已被使用。請選擇一個新名稱。"; +$LANG["validation_modules_search_no_status"] = "請選擇啟用或禁用複選框。"; +$LANG["validation_no_access_type"] = "請輸入訪問類型。"; +$LANG["validation_no_account_logout_url"] = "請輸入您的註銷網址。"; +$LANG["validation_no_account_password_confirmed"] = "請重新輸入您的新密碼。"; +$LANG["validation_no_account_password_confirmed2"] = "請重新輸入新的密碼。"; +$LANG["validation_no_admin_email"] = "請輸入管理員的電子郵件地址。"; +$LANG["validation_no_admin_theme"] = "請選擇主題的管理員帳戶。"; +$LANG["validation_no_admin_theme_swatch"] = "請選擇一個主題為管理員的樣本。"; +$LANG["validation_no_client_email"] = "請輸入客戶端的電子郵件地址。"; +$LANG["validation_no_client_first_name"] = "請輸入客戶的名字。"; +$LANG["validation_no_client_last_name"] = "請輸入客戶端的姓氏。"; +$LANG["validation_no_client_login_page"] = "請說明哪些頁面的客戶端應該重定向到登錄時,"; +$LANG["validation_no_client_password"] = "請輸入客戶的密碼。"; +$LANG["validation_no_client_theme_swatch"] = "請選擇一個客戶帳戶的默認色板。"; +$LANG["validation_no_client_username"] = "請輸入客戶端的用戶名。"; +$LANG["validation_no_column_name"] = "請輸入所有的列名,或單擊智能填充按鈕,自動填充它們。"; +$LANG["validation_no_column_selected"] = "請至少選擇一個字段顯示為一列就提交登錄頁面。"; +$LANG["validation_no_custom_from_email"] = "請輸入自定義'者的電子郵件地址。"; +$LANG["validation_no_custom_recipient_email"] = "請輸入自定義收件人的電子郵件地址。"; +$LANG["validation_no_custom_reply_to_email"] = "請輸入自定義'回复到的電子郵件地址。"; +$LANG["validation_no_date_format"] = "請輸入日期格式。"; +$LANG["validation_no_db_column_single"] = "請輸入數據庫列的名稱。"; +$LANG["validation_no_db_hostname"] = "請輸入數據庫的主機名。"; +$LANG["validation_no_db_name"] = "請輸入數據庫的名稱。"; +$LANG["validation_no_db_username"] = "請輸入數據庫帳戶的用戶名。"; +$LANG["validation_no_default_client_theme"] = "請選擇默認的主題,對所有新客戶帳戶。"; +$LANG["validation_no_default_language"] = "請選擇默認語言為您的安裝表格工具。"; +$LANG["validation_no_default_sessions_timeout"] = "請輸入默認的會話超時用戶帳戶。"; +$LANG["validation_no_display_text"] = "請輸入顯示文本的每個字段。"; +$LANG["validation_no_display_text_single"] = "請輸入顯示的文本值。"; +$LANG["validation_no_edit_submission_page_label"] = "請輸入編輯提交頁面標籤。"; +$LANG["validation_no_email"] = "請輸入您的電子郵件地址。"; +$LANG["validation_no_email_config_field"] = "請指定構成領域是電子郵件領域。"; +$LANG["validation_no_email_content"] = "請輸入電子郵件的內容最少的格式(HTML或文本)。"; +$LANG["validation_no_email_from_field"] = "請電子郵件'的'領域。"; +$LANG["validation_no_email_template_name"] = "請輸入電子郵件模板名稱。"; +$LANG["validation_no_email_template_view_id"] = "請選擇視圖本電子郵件模板應映射。"; +$LANG["validation_no_email_template_view_mapping_value"] = "請說明何時應發送電子郵件。"; +$LANG["validation_no_enabled_themes"] = "請確保至少有一個主題是啟用。"; +$LANG["validation_no_first_name"] = "請輸入您的名字。"; +$LANG["validation_no_form_field_name"] = "請輸入所有形式的字段名稱。"; +$LANG["validation_no_form_field_single"] = "請輸入表單字段值。"; +$LANG["validation_no_form_id"] = "該表格識別碼未指定。請先登出,然後再試一次。"; +$LANG["validation_no_form_name"] = "請輸入窗體的名稱。"; +$LANG["validation_no_form_url"] = "請輸入表單網址。"; +$LANG["validation_no_last_name"] = "請輸入您的姓氏。"; +$LANG["validation_no_login_page"] = "請指出哪個網頁您想發送您每次登錄"; +$LANG["validation_no_logout_url"] = "請輸入網址註銷。"; +$LANG["validation_no_main_email_recipient"] = "請輸入至少一個主要的電子郵件收件人(即不是抄送或密件抄送)。"; +$LANG["validation_no_menu"] = "請選擇菜單此用戶的帳戶。"; +$LANG["validation_no_menu_id"] = "請選擇菜單。"; +$LANG["validation_no_num_clients_per_page"] = "請輸入號碼的客戶帳戶每頁。"; +$LANG["validation_no_num_emails_per_page"] = "請輸入號碼列出的電子郵件每頁。"; +$LANG["validation_no_num_form_fields"] = "請輸入您的字段數形式。"; +$LANG["validation_no_num_forms_per_page"] = "請輸入號碼的形式每頁。"; +$LANG["validation_no_num_menus_per_page"] = "請輸入號碼的菜單列表每頁。"; +$LANG["validation_no_num_modules_per_page"] = "請輸入號碼每頁的模塊。"; +$LANG["validation_no_num_option_lists_per_page"] = "請輸入數字的選項列出每頁。"; +$LANG["validation_no_num_submissions_per_page"] = "請輸入號碼的意見書顯示每頁。"; +$LANG["validation_no_option_list_name"] = "請輸入選項列表的名稱。"; +$LANG["validation_no_page_titles"] = "請輸入默認的頁面標題為用戶帳戶。"; +$LANG["validation_no_password"] = "請輸入你的密碼。"; +$LANG["validation_no_program_name"] = "請輸入程序的名稱。"; +$LANG["validation_no_second_password"] = "請重新輸入您的密碼。"; +$LANG["validation_no_sessions_timeout"] = "請輸入會話超時。"; +$LANG["validation_no_smart_fill_values"] = "請輸入窗體域的名稱和URL的形式。"; +$LANG["validation_no_table_prefix"] = "請輸入數據庫前綴。"; +$LANG["validation_no_tabs_defined"] = "無標籤的定義"; +$LANG["validation_no_test_email_recipient"] = "請輸入電子郵件地址,我們應該發送測試電子郵件。"; +$LANG["validation_no_test_email_submission_id"] = "請輸入提交身份證號碼。"; +$LANG["validation_no_theme"] = "請選擇一個主題。"; +$LANG["validation_no_theme_swatch"] = "請選擇選定的主題斯沃琪。"; +$LANG["validation_no_timezone_offset"] = "請輸入時區偏移量。"; +$LANG["validation_no_titles"] = "請輸入頁面標題。"; +$LANG["validation_no_two_column_names"] = "對不起,您可能不會進入同一個數據庫中的列名兩次。"; +$LANG["validation_no_ui_language"] = "請選擇語言的界面。"; +$LANG["validation_no_url"] = "請輸入網址。"; +$LANG["validation_no_username"] = "請輸入你的用戶名。"; +$LANG["validation_no_username_or_js"] = "您必須輸入您的用戶名。請允許執行 Javascript在瀏覽器中。"; +$LANG["validation_no_view_fields"] = "您的觀點並不包含任何領域!您需要指定至少一個領域,要有東西出現在你的看法。"; +$LANG["validation_no_view_fields_selected"] = "請選擇一個或多個字段添加到視圖。"; +$LANG["validation_no_view_name"] = "請輸入您的視圖名稱。"; +$LANG["validation_num_rows_to_add"] = "請輸入行數的補充。"; +$LANG["validation_option_list_name_taken"] = "對不起,此選項列表的名稱已被使用。請選擇一個新名稱。"; +$LANG["validation_password_in_password_history"] = "為了安全,您不能輸入相同的密碼,任何最後的 {\$history_size} 密碼。請輸入不同的密碼。"; +$LANG["validation_passwords_different"] = "請確保密碼是相同的。"; +$LANG["validation_please_enter_search_date_range"] = "請選擇日期範圍搜索。"; +$LANG["validation_please_enter_search_keyword"] = "請輸入搜索關鍵字。"; +$LANG["validation_select_field_type"] = "請選擇一個字段類型。"; +$LANG["validation_select_submissions_to_copy"] = "請選擇您想要復制的提交內容。"; +$LANG["validation_select_submissions_to_delete"] = "請選擇你的意見要刪除。"; +$LANG["validation_smart_fill_cannot_fill"] = "很抱歉,我們無法填補這一領域。"; +$LANG["validation_smart_fill_invalid_field_type"] = "我們無法找到一個領域,但它不是一個下拉,複選框或單選按鈕組。"; +$LANG["validation_smart_fill_no_field_found"] = "很抱歉,我們找不到與該窗體域的名稱在頁面上指定的。"; +$LANG["validation_smart_fill_no_page"] = "請找到該網頁包含字段您想智能填充。"; +$LANG["validation_smart_fill_upload_all_pages"] = "請上載的所有網頁中的形式。"; +$LANG["validation_upload_folder_not_writable"] = "這種臨時指定的文件夾上傳你的PHP安裝不可寫。直到這個是固定的,文件不能上傳通過表格工具(或任何其他PHP程序)。請與您的託管服務提供商。"; +$LANG["validation_upload_html_files_only"] = "請只上傳 HTML文件。"; +$LANG["validation_username_taken"] = "對不起,該用戶名已被使用。請輸入其他用戶名。"; +$LANG["validation_wrong_password"] = "很抱歉,密碼不匹配。"; +$LANG["word_about"] = "大約"; +$LANG["word_access"] = "訪問"; +$LANG["word_account"] = "帳戶"; +$LANG["word_account_sp"] = "賬戶(等)"; +$LANG["word_accounts"] = "帳戶"; +$LANG["word_action"] = "行動"; +$LANG["word_active"] = "啟用"; +$LANG["word_add"] = "添加"; +$LANG["word_add_rightarrow"] = "添加»"; +$LANG["word_add_uc_rightarrow"] = "地址»"; +$LANG["word_administration"] = "管理"; +$LANG["word_administrator"] = "管理員"; +$LANG["word_after"] = "之後"; +$LANG["word_aquamarine"] = "海藍寶石"; +$LANG["word_asc"] = "升序"; +$LANG["word_author"] = "作者"; +$LANG["word_author_c"] = "作者:"; +$LANG["word_available"] = "Available"; +$LANG["word_back_leftarrow"] = "«返回"; +$LANG["word_bcc_c"] = "密件抄送:"; +$LANG["word_before"] = "之前"; +$LANG["word_benefits"] = "優點"; +$LANG["word_blue"] = "藍"; +$LANG["word_cancel"] = "取消"; +$LANG["word_cc_c"] = "抄送:"; +$LANG["word_characters"] = "Characters"; +$LANG["word_checkboxes"] = "複選框"; +$LANG["word_checklist"] = "清單"; +$LANG["word_client"] = "客戶"; +$LANG["word_client_c"] = "客戶:"; +$LANG["word_clients"] = "客戶"; +$LANG["word_close"] = "關閉"; +$LANG["word_code"] = "代碼"; +$LANG["word_column"] = "列"; +$LANG["word_columns"] = "列"; +$LANG["word_columns_sp"] = "列(S)"; +$LANG["word_complete"] = "完成"; +$LANG["word_configuration"] = "配置"; +$LANG["word_content"] = "內容"; +$LANG["word_continue"] = "Continue"; +$LANG["word_continue_rightarrow"] = "繼續 »"; +$LANG["word_copy"] = "複製"; +$LANG["word_custom"] = "風俗"; +$LANG["word_data"] = "數據"; +$LANG["word_date"] = "日期"; +$LANG["word_debugging_c"] = "調試:"; +$LANG["word_delete"] = "刪除"; +$LANG["word_desc"] = "實價"; +$LANG["word_direct"] = "直接"; +$LANG["word_disabled"] = "殘疾人"; +$LANG["word_documentation"] = "文檔"; +$LANG["word_done"] = "完成"; +$LANG["word_drawbacks"] = "缺點"; +$LANG["word_dropdown"] = "下拉"; +$LANG["word_edit"] = "更改"; +$LANG["word_editable"] = "可編輯"; +$LANG["word_email"] = "電郵"; +$LANG["word_email_c"] = "電子郵件:"; +$LANG["word_emails"] = "電子郵件"; +$LANG["word_enabled"] = "啟用"; +$LANG["word_equals"] = "等如"; +$LANG["word_error"] = "錯誤"; +$LANG["word_error_c"] = "錯誤:"; +$LANG["word_examples_c"] = "例如:"; +$LANG["word_external"] = "外部"; +$LANG["word_fail"] = "失敗"; +$LANG["word_field"] = "項目"; +$LANG["word_field_sp"] = "場(擰)"; +$LANG["word_fields"] = "字段"; +$LANG["word_fields_sp"] = "現場(S)"; +$LANG["word_file"] = "文件"; +$LANG["word_file_b_uc"] = "[檔案]"; +$LANG["word_files"] = "文件"; +$LANG["word_filters"] = "過濾器"; +$LANG["word_filters_sp"] = "過濾器(S)"; +$LANG["word_for"] = "為了"; +$LANG["word_form"] = "表格"; +$LANG["word_form_c"] = "表格:"; +$LANG["word_formatting"] = "格式化"; +$LANG["word_forms"] = "表格"; +$LANG["word_found"] = "創立"; +$LANG["word_from"] = "自"; +$LANG["word_from_c"] = "來自:"; +$LANG["word_general"] = "一般"; +$LANG["word_green"] = "綠"; +$LANG["word_grey"] = "灰色"; +$LANG["word_height"] = "高度"; +$LANG["word_help"] = "幫助"; +$LANG["word_hidden"] = "隱藏"; +$LANG["word_highlight"] = "突出"; +$LANG["word_horizontal"] = "水平"; +$LANG["word_hour"] = "小時"; +$LANG["word_hours"] = "小時"; +$LANG["word_html"] = "的HTML"; +$LANG["word_id"] = "編號"; +$LANG["word_image"] = "圖像"; +$LANG["word_incomplete"] = "不完整"; +$LANG["word_install"] = "安裝"; +$LANG["word_installation"] = "安裝"; +$LANG["word_internal"] = "內部"; +$LANG["word_language"] = "語言"; +$LANG["word_large"] = "大"; +$LANG["word_like"] = "近似"; +$LANG["word_login"] = "登入"; +$LANG["word_logo"] = "標認"; +$LANG["word_logout"] = "註銷"; +$LANG["word_main"] = "主要的"; +$LANG["word_medium"] = "中等"; +$LANG["word_menu"] = "菜單"; +$LANG["word_menus"] = "菜單"; +$LANG["word_minutes"] = "分鐘"; +$LANG["word_misc"] = "船務"; +$LANG["word_module"] = "模塊"; +$LANG["word_modules"] = "模塊"; +$LANG["word_na"] = "ñ /阿"; +$LANG["word_name"] = "名字"; +$LANG["word_name_c"] = "名字:"; +$LANG["word_never"] = "從未"; +$LANG["word_next_rightarrow"] = "下一個 »"; +$LANG["word_next_step_rightarrow"] = "下一步»"; +$LANG["word_no"] = "否"; +$LANG["word_none"] = "毫無"; +$LANG["word_notes"] = "註釋"; +$LANG["word_notification"] = "通知"; +$LANG["word_number"] = "編號"; +$LANG["word_off"] = "遠的"; +$LANG["word_offline"] = "離線"; +$LANG["word_okay"] = "好"; +$LANG["word_on"] = "論"; +$LANG["word_online"] = "在線"; +$LANG["word_operator"] = "工作人員"; +$LANG["word_options"] = "選項"; +$LANG["word_orange"] = "橙色"; +$LANG["word_order"] = "命令"; +$LANG["word_other"] = "其他"; +$LANG["word_other_c"] = "其他:"; +$LANG["word_page"] = "頁"; +$LANG["word_page_c"] = "頁:"; +$LANG["word_pass"] = "通行證"; +$LANG["word_password"] = "密碼"; +$LANG["word_password_c"] = "密碼:"; +$LANG["word_pending"] = "緊迫的"; +$LANG["word_permissions"] = "許可"; +$LANG["word_port"] = "Port"; +$LANG["word_previous_leftarrow"] = "«上一頁"; +$LANG["word_private"] = "私人"; +$LANG["word_public"] = "公共"; +$LANG["word_purple"] = "紫色"; +$LANG["word_recipient"] = "收件人"; +$LANG["word_recipient_sp"] = "收件人(擰)"; +$LANG["word_red"] = "紅"; +$LANG["word_refresh"] = "Refresh"; +$LANG["word_remove"] = "刪除"; +$LANG["word_remove_uc_leftarrow"] = "«刪除"; +$LANG["word_reply_to"] = "回覆至"; +$LANG["word_reply_to_c"] = "回覆至:"; +$LANG["word_required"] = "要求"; +$LANG["word_reset"] = "復位"; +$LANG["word_resolved"] = "解決"; +$LANG["word_restart"] = "Restart"; +$LANG["word_row"] = "一行"; +$LANG["word_search"] = "搜索"; +$LANG["word_searchable"] = "可搜索"; +$LANG["word_select"] = "選擇"; +$LANG["word_setting"] = "設置"; +$LANG["word_settings"] = "設定"; +$LANG["word_show"] = "顯示"; +$LANG["word_size"] = "尺寸"; +$LANG["word_skipped"] = "跳過"; +$LANG["word_small"] = "小"; +$LANG["word_solution"] = "解決方案"; +$LANG["word_sortable"] = "排序"; +$LANG["word_start"] = "開始"; +$LANG["word_status"] = "狀態"; +$LANG["word_string"] = "字符串"; +$LANG["word_subject"] = "主題"; +$LANG["word_subject_c"] = "題目"; +$LANG["word_submenu"] = "子菜單"; +$LANG["word_submission"] = "提交"; +$LANG["word_submissions"] = "提交"; +$LANG["word_system"] = "系統"; +$LANG["word_tab"] = "標籤"; +$LANG["word_tabs"] = "標籤"; +$LANG["word_tabs_sp"] = "標籤(S)"; +$LANG["word_test"] = "測試"; +$LANG["word_text"] = "文本"; +$LANG["word_textarea"] = "多行文本"; +$LANG["word_textbox"] = "文本框"; +$LANG["word_theme"] = "主題"; +$LANG["word_themes"] = "主題"; +$LANG["word_time"] = "時間"; +$LANG["word_tiny"] = "小"; +$LANG["word_tips"] = "提示"; +$LANG["word_today"] = "今天"; +$LANG["word_truncate_q"] = "截斷?"; +$LANG["word_uninstall"] = "卸載"; +$LANG["word_unknown"] = "未知"; +$LANG["word_update"] = "更新"; +$LANG["word_upgrade"] = "升級"; +$LANG["word_url_c"] = "網址:"; +$LANG["word_user"] = "會員"; +$LANG["word_username"] = "用戶名"; +$LANG["word_username_c"] = "用戶名:"; +$LANG["word_validation"] = "驗證"; +$LANG["word_value"] = "價值"; +$LANG["word_value_sp"] = "數值"; +$LANG["word_verified"] = "驗證"; +$LANG["word_verify"] = "驗證"; +$LANG["word_version"] = "版本"; +$LANG["word_vertical"] = "垂直"; +$LANG["word_view"] = "查看"; +$LANG["word_views"] = "點擊"; +$LANG["word_warning"] = "警告!"; +$LANG["word_warning_c"] = "警告:"; +$LANG["word_web"] = "網絡"; +$LANG["word_welcome"] = "歡迎!"; +$LANG["word_width_c"] = "寬度:"; +$LANG["word_words"] = "字"; +$LANG["word_wysiwyg"] = "所見即所得"; +$LANG["word_yellow"] = "黃河"; +$LANG["word_yes"] = "是"; \ No newline at end of file diff --git a/global/library.php b/global/library.php new file mode 100644 index 00000000..a1d2b44f --- /dev/null +++ b/global/library.php @@ -0,0 +1,65 @@ + "account_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "setting_name", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "setting_value", + "Type" => "mediumtext", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["accounts"] = array( + array( + "Field" => "account_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "account_type", + "Type" => "enum('admin','client')", + "Null" => "NO", + "Key" => "", + "Default" => "client" + ), + array( + "Field" => "account_status", + "Type" => "enum('active','disabled','pending')", + "Null" => "NO", + "Key" => "", + "Default" => "disabled" + ), + array( + "Field" => "last_logged_in", + "Type" => "datetime", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "ui_language", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "en_us" + ), + array( + "Field" => "timezone_offset", + "Type" => "varchar(4)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "sessions_timeout", + "Type" => "varchar(10)", + "Null" => "NO", + "Key" => "", + "Default" => "30" + ), + array( + "Field" => "date_format", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "M jS, g:i A" + ), + array( + "Field" => "login_page", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "client_forms" + ), + array( + "Field" => "logout_url", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "theme", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "default" + ), + array( + "Field" => "swatch", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "menu_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "first_name", + "Type" => "varchar(100)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "last_name", + "Type" => "varchar(100)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email", + "Type" => "varchar(200)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "username", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "password", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "temp_reset_password", + "Type" => "varchar(50)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["client_forms"] = array( + array( + "Field" => "account_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "form_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ) +); +$STRUCTURE["tables"]["client_views"] = array( + array( + "Field" => "account_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "view_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ) +); +$STRUCTURE["tables"]["email_template_edit_submission_views"] = array( + array( + "Field" => "email_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "view_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ) +); +$STRUCTURE["tables"]["email_template_recipients"] = array( + array( + "Field" => "recipient_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "email_template_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "recipient_user_type", + "Type" => "enum('admin','client','form_email_field','custom')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "recipient_type", + "Type" => "enum('main','cc','bcc')", + "Null" => "NO", + "Key" => "", + "Default" => "main" + ), + array( + "Field" => "account_id", + "Type" => "mediumint(9)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "form_email_id", + "Type" => "mediumint(8) unsigned", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_recipient_name", + "Type" => "varchar(200)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_recipient_email", + "Type" => "varchar(200)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["email_template_when_sent_views"] = array( + array( + "Field" => "email_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "view_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["email_templates"] = array( + array( + "Field" => "email_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "form_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_template_name", + "Type" => "varchar(100)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_status", + "Type" => "enum('enabled','disabled')", + "Null" => "NO", + "Key" => "", + "Default" => "enabled" + ), + array( + "Field" => "view_mapping_type", + "Type" => "enum('all','specific')", + "Null" => "NO", + "Key" => "", + "Default" => "all" + ), + array( + "Field" => "view_mapping_view_id", + "Type" => "mediumint(9)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "limit_email_content_to_fields_in_view", + "Type" => "mediumint(9)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_event_trigger", + "Type" => "set('on_submission','on_edit','on_delete')", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "include_on_edit_submission_page", + "Type" => "enum('no','all_views','specific_views')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "subject", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_from", + "Type" => "enum('admin','client','form_email_field','custom','none')", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_from_account_id", + "Type" => "mediumint(8) unsigned", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_from_form_email_id", + "Type" => "mediumint(8) unsigned", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_from_name", + "Type" => "varchar(100)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_from_email", + "Type" => "varchar(100)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_reply_to", + "Type" => "enum('admin','client','form_email_field','custom','none')", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_reply_to_account_id", + "Type" => "mediumint(8) unsigned", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_reply_to_form_email_id", + "Type" => "mediumint(8) unsigned", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_reply_to_name", + "Type" => "varchar(100)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_reply_to_email", + "Type" => "varchar(100)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "html_template", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "text_template", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["field_options"] = array( + array( + "Field" => "list_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "list_group_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "option_order", + "Type" => "smallint(4)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "option_value", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "option_name", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_new_sort_group", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["field_settings"] = array( + array( + "Field" => "field_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "setting_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "setting_value", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["field_type_setting_options"] = array( + array( + "Field" => "setting_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "option_text", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "option_value", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "option_order", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "is_new_sort_group", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["field_type_settings"] = array( + array( + "Field" => "setting_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "field_type_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "field_label", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "field_setting_identifier", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "field_type", + "Type" => "enum('textbox','textarea','radios','checkboxes','select','multi-select','option_list_or_form_field')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "field_orientation", + "Type" => "enum('horizontal','vertical','na')", + "Null" => "NO", + "Key" => "", + "Default" => "na" + ), + array( + "Field" => "default_value_type", + "Type" => "enum('static','dynamic')", + "Null" => "NO", + "Key" => "", + "Default" => "static" + ), + array( + "Field" => "default_value", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "list_order", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["field_types"] = array( + array( + "Field" => "field_type_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "is_editable", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_enabled", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "non_editable_info", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "managed_by_module_id", + "Type" => "mediumint(9)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "field_type_name", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "field_type_identifier", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "group_id", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_file_field", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "is_date_field", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "raw_field_type_map", + "Type" => "varchar(50)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "raw_field_type_map_multi_select_id", + "Type" => "mediumint(9)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "list_order", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "compatible_field_sizes", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "view_field_rendering_type", + "Type" => "enum('none','php','smarty')", + "Null" => "NO", + "Key" => "", + "Default" => "none" + ), + array( + "Field" => "view_field_php_function_source", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "view_field_php_function", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "view_field_smarty_markup", + "Type" => "mediumtext", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "edit_field_smarty_markup", + "Type" => "mediumtext", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "php_processing", + "Type" => "mediumtext", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "resources_css", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "resources_js", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["field_type_validation_rules"] = array( + array( + "Field" => "rule_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "field_type_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "rsv_rule", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "rule_label", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "rsv_field_name", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_function", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_function_required", + "Type" => "enum('yes','no','na')", + "Null" => "NO", + "Key" => "", + "Default" => "na" + ), + array( + "Field" => "default_error_message", + "Type" => "mediumtext", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "list_order", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["field_validation"] = array( + array( + "Field" => "rule_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "field_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "error_message", + "Type" => "mediumtext", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["form_email_fields"] = array( + array( + "Field" => "form_email_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "form_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "email_field_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "first_name_field_id", + "Type" => "mediumint(9)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "last_name_field_id", + "Type" => "mediumint(9)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["form_fields"] = array( + array( + "Field" => "field_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "form_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "0" + ), + array( + "Field" => "field_name", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "field_test_value", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "field_size", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "medium" + ), + array( + "Field" => "field_type_id", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "1" + ), + array( + "Field" => "is_system_field", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "data_type", + "Type" => "enum('string','number','date')", + "Null" => "NO", + "Key" => "", + "Default" => "string" + ), + array( + "Field" => "field_title", + "Type" => "varchar(100)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "col_name", + "Type" => "varchar(100)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "list_order", + "Type" => "smallint(5) unsigned", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_new_sort_group", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "include_on_redirect", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ) +); +$STRUCTURE["tables"]["forms"] = array( + array( + "Field" => "form_id", + "Type" => "mediumint(9) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "form_type", + "Type" => "enum('internal','external','form_builder')", + "Null" => "NO", + "Key" => "", + "Default" => "external" + ), + array( + "Field" => "access_type", + "Type" => "enum('admin','public','private')", + "Null" => "NO", + "Key" => "", + "Default" => "public" + ), + array( + "Field" => "submission_type", + "Type" => "enum('code','direct')", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "date_created", + "Type" => "datetime", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_active", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "is_initialized", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "is_complete", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "is_multi_page_form", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "form_name", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "form_url", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "redirect_url", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "auto_delete_submission_files", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "submission_strip_tags", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "edit_submission_page_label", + "Type" => "text", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "add_submission_button_label", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["hook_calls"] = array( + array( + "Field" => "hook_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "hook_type", + "Type" => "enum('code','template')", + "Null" => "NO", + "Key" => "", + "Default" => "code" + ), + array( + "Field" => "action_location", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "module_folder", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "function_name", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "hook_function", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "priority", + "Type" => "tinyint(4)", + "Null" => "NO", + "Key" => "", + "Default" => "50" + ) +); +$STRUCTURE["tables"]["hooks"] = array( + array( + "Field" => "id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "hook_type", + "Type" => "enum('code','template')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "component", + "Type" => "enum('core','api','module')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "filepath", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "action_location", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "function_name", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "params", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "overridable", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["list_groups"] = array( + array( + "Field" => "group_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "group_type", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "group_name", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_data", + "Type" => "text", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "list_order", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["menu_items"] = array( + array( + "Field" => "menu_item_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "menu_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "display_text", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "page_identifier", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "custom_options", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "url", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_submenu", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "is_new_sort_group", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "list_order", + "Type" => "smallint(5) unsigned", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["menus"] = array( + array( + "Field" => "menu_id", + "Type" => "smallint(5) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "menu", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "menu_type", + "Type" => "enum('admin','client')", + "Null" => "NO", + "Key" => "", + "Default" => "client" + ) +); +$STRUCTURE["tables"]["modules"] = array( + array( + "Field" => "module_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "is_installed", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "is_enabled", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "origin_language", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "module_name", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "module_folder", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "version", + "Type" => "varchar(50)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "author", + "Type" => "varchar(200)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "author_email", + "Type" => "varchar(200)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "author_link", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "module_date", + "Type" => "datetime", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["module_menu_items"] = array( + array( + "Field" => "menu_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "module_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "display_text", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "url", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_submenu", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "list_order", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["multi_page_form_urls"] = array( + array( + "Field" => "form_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "form_url", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "page_num", + "Type" => "tinyint(4)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "2" + ) +); +$STRUCTURE["tables"]["new_view_submission_defaults"] = array( + array( + "Field" => "view_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "field_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "default_value", + "Type" => "text", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "list_order", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["option_lists"] = array( + array( + "Field" => "list_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "option_list_name", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_grouped", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "original_form_id", + "Type" => "mediumint(8) unsigned", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["public_form_omit_list"] = array( + array( + "Field" => "form_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "account_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ) +); +$STRUCTURE["tables"]["public_view_omit_list"] = array( + array( + "Field" => "view_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "account_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ) +); +$STRUCTURE["tables"]["sessions"] = array( + array( + "Field" => "session_id", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "session_data", + "Type" => "text", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "expires", + "Type" => "int(11)", + "Null" => "NO", + "Key" => "", + "Default" => "0" + ) +); +$STRUCTURE["tables"]["settings"] = array( + array( + "Field" => "setting_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "setting_name", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "setting_value", + "Type" => "text", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "module", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "core" + ) +); +$STRUCTURE["tables"]["themes"] = array( + array( + "Field" => "theme_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "theme_folder", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "theme_name", + "Type" => "varchar(50)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "uses_swatches", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "swatches", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "author", + "Type" => "varchar(200)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "author_email", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "author_link", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "theme_link", + "Type" => "varchar(255)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "description", + "Type" => "mediumtext", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_enabled", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "theme_version", + "Type" => "varchar(50)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["views"] = array( + array( + "Field" => "view_id", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "form_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "access_type", + "Type" => "enum('admin','public','private','hidden')", + "Null" => "NO", + "Key" => "", + "Default" => "public" + ), + array( + "Field" => "view_name", + "Type" => "varchar(100)", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "view_order", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "1" + ), + array( + "Field" => "is_new_sort_group", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "group_id", + "Type" => "smallint(6)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "num_submissions_per_page", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "", + "Default" => "10" + ), + array( + "Field" => "default_sort_field", + "Type" => "varchar(255)", + "Null" => "NO", + "Key" => "", + "Default" => "submission_date" + ), + array( + "Field" => "default_sort_field_order", + "Type" => "enum('asc','desc')", + "Null" => "NO", + "Key" => "", + "Default" => "desc" + ), + array( + "Field" => "may_add_submissions", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "may_edit_submissions", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "may_delete_submissions", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "has_client_map_filter", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ), + array( + "Field" => "has_standard_filter", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "no" + ) +); +$STRUCTURE["tables"]["view_columns"] = array( + array( + "Field" => "view_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "field_id", + "Type" => "mediumint(9)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "list_order", + "Type" => "smallint(6)", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "is_sortable", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "auto_size", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "custom_width", + "Type" => "varchar(10)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "truncate", + "Type" => "enum('truncate','no_truncate')", + "Null" => "NO", + "Key" => "", + "Default" => "truncate" + ) +); +$STRUCTURE["tables"]["view_fields"] = array( + array( + "Field" => "view_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "field_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "group_id", + "Type" => "mediumint(9)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_editable", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "is_searchable", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "yes" + ), + array( + "Field" => "list_order", + "Type" => "smallint(5) unsigned", + "Null" => "YES", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "is_new_sort_group", + "Type" => "enum('yes','no')", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["view_filters"] = array( + array( + "Field" => "filter_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "view_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "filter_type", + "Type" => "enum('standard','client_map')", + "Null" => "NO", + "Key" => "", + "Default" => "standard" + ), + array( + "Field" => "field_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "operator", + "Type" => "enum('equals','not_equals','like','not_like','before','after')", + "Null" => "NO", + "Key" => "", + "Default" => "equals" + ), + array( + "Field" => "filter_values", + "Type" => "mediumtext", + "Null" => "NO", + "Key" => "", + "Default" => "" + ), + array( + "Field" => "filter_sql", + "Type" => "mediumtext", + "Null" => "NO", + "Key" => "", + "Default" => "" + ) +); +$STRUCTURE["tables"]["view_tabs"] = array( + array( + "Field" => "view_id", + "Type" => "mediumint(8) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "tab_number", + "Type" => "tinyint(3) unsigned", + "Null" => "NO", + "Key" => "PRI", + "Default" => "" + ), + array( + "Field" => "tab_label", + "Type" => "varchar(50)", + "Null" => "YES", + "Key" => "", + "Default" => "" + ) +); + +$FILES = array( + "LICENSE.txt", + "admin/account/index.php", + "admin/clients/add.php", + "admin/clients/edit.php", + "admin/clients/index.php", + "admin/clients/page_forms.php", + "admin/clients/page_main.php", + "admin/clients/page_settings.php", + "admin/forms/add/index.php", + "admin/forms/add/internal.php", + "admin/forms/add/step1.php", + "admin/forms/add/step2.php", + "admin/forms/add/step3.php", + "admin/forms/add/step4.php", + "admin/forms/add/step5.php", + "admin/forms/add/step6.php", + "admin/forms/delete_form.php", + "admin/forms/edit/index.php", + "admin/forms/edit/page_edit_email.php", + "admin/forms/edit/page_edit_view.php", + "admin/forms/edit/page_email_settings.php", + "admin/forms/edit/page_emails.php", + "admin/forms/edit/page_fields.php", + "admin/forms/edit/page_main.php", + "admin/forms/edit/page_public_form_omit_list.php", + "admin/forms/edit/page_public_view_omit_list.php", + "admin/forms/edit/page_views.php", + "admin/forms/edit_submission.php", + "admin/forms/index.php", + "admin/forms/option_lists/edit.php", + "admin/forms/option_lists/index.php", + "admin/forms/option_lists/page_form_fields.php", + "admin/forms/option_lists/page_main.php", + "admin/forms/submissions.php", + "admin/index.php", + "admin/modules/about.php", + "admin/modules/index.php", + "admin/settings/index.php", + "admin/settings/page_accounts.php", + "admin/settings/page_edit_admin_menu.php", + "admin/settings/page_edit_client_menu.php", + "admin/settings/page_files.php", + "admin/settings/page_main.php", + "admin/settings/page_menus.php", + "admin/themes/about.php", + "admin/themes/index.php", + "cache/index.html", + "clients/account/index.php", + "clients/account/page_main.php", + "clients/account/page_settings.php", + "clients/forms/edit_submission.php", + "clients/forms/index.php", + "clients/index.php", + "error.php", + "forget_password.php", + "global/code/Accounts.class.php", + "global/code/Administrator.class.php", + "global/code/Clients.class.php", + "global/code/Constants.class.php", + "global/code/Core.class.php", + "global/code/CoreFieldTypes.class.php", + "global/code/Database.class.php", + "global/code/DatabaseSessions.class.php", + "global/code/Emails.class.php", + "global/code/Errors.class.php", + "global/code/FieldOptions.class.php", + "global/code/FieldSettings.class.php", + "global/code/FieldSizes.class.php", + "global/code/FieldTypes.class.php", + "global/code/FieldValidation.class.php", + "global/code/Fields.class.php", + "global/code/Files.class.php", + "global/code/Forms.class.php", + "global/code/General.class.php", + "global/code/Hooks.class.php", + "global/code/Installation.class.php", + "global/code/ListGroups.class.php", + "global/code/Menus.class.php", + "global/code/Module.abstract.class.php", + "global/code/ModuleMenu.class.php", + "global/code/Modules.class.php", + "global/code/OmitLists.class.php", + "global/code/OptionLists.class.php", + "global/code/Pages.class.php", + "global/code/SecureSmarty.class.php", + "global/code/Sessions.class.php", + "global/code/Settings.class.php", + "global/code/Submissions.class.php", + "global/code/Templates.class.php", + "global/code/Themes.class.php", + "global/code/Translations.class.php", + "global/code/Upgrade.class.php", + "global/code/User.class.php", + "global/code/ViewColumns.class.php", + "global/code/ViewFields.class.php", + "global/code/ViewFilters.class.php", + "global/code/ViewTabs.class.php", + "global/code/Views.class.php", + "global/code/actions.php", + "global/code/field_types/Checkbox.class.php", + "global/code/field_types/Code.class.php", + "global/code/field_types/Date.class.php", + "global/code/field_types/Dropdown.class.php", + "global/code/field_types/MultiSelect.class.php", + "global/code/field_types/Password.class.php", + "global/code/field_types/Phone.class.php", + "global/code/field_types/Radio.class.php", + "global/code/field_types/Textarea.class.php", + "global/code/field_types/Textbox.class.php", + "global/code/field_types/Time.class.php", + "global/code/index.php", + "global/code/polyfills.php", + "global/code/validation.php", + "global/codemirror/AUTHORS", + "global/codemirror/CHANGELOG.md", + "global/codemirror/CONTRIBUTING.md", + "global/codemirror/LICENSE", + "global/codemirror/README.md", + "global/codemirror/addon/comment/comment.js", + "global/codemirror/addon/comment/continuecomment.js", + "global/codemirror/addon/dialog/dialog.css", + "global/codemirror/addon/dialog/dialog.js", + "global/codemirror/addon/display/autorefresh.js", + "global/codemirror/addon/display/fullscreen.css", + "global/codemirror/addon/display/fullscreen.js", + "global/codemirror/addon/display/panel.js", + "global/codemirror/addon/display/placeholder.js", + "global/codemirror/addon/display/rulers.js", + "global/codemirror/addon/edit/closebrackets.js", + "global/codemirror/addon/edit/closetag.js", + "global/codemirror/addon/edit/continuelist.js", + "global/codemirror/addon/edit/matchbrackets.js", + "global/codemirror/addon/edit/matchtags.js", + "global/codemirror/addon/edit/trailingspace.js", + "global/codemirror/addon/fold/brace-fold.js", + "global/codemirror/addon/fold/comment-fold.js", + "global/codemirror/addon/fold/foldcode.js", + "global/codemirror/addon/fold/foldgutter.css", + "global/codemirror/addon/fold/foldgutter.js", + "global/codemirror/addon/fold/indent-fold.js", + "global/codemirror/addon/fold/markdown-fold.js", + "global/codemirror/addon/fold/xml-fold.js", + "global/codemirror/addon/hint/anyword-hint.js", + "global/codemirror/addon/hint/css-hint.js", + "global/codemirror/addon/hint/html-hint.js", + "global/codemirror/addon/hint/javascript-hint.js", + "global/codemirror/addon/hint/show-hint.css", + "global/codemirror/addon/hint/show-hint.js", + "global/codemirror/addon/hint/sql-hint.js", + "global/codemirror/addon/hint/xml-hint.js", + "global/codemirror/addon/lint/coffeescript-lint.js", + "global/codemirror/addon/lint/css-lint.js", + "global/codemirror/addon/lint/html-lint.js", + "global/codemirror/addon/lint/javascript-lint.js", + "global/codemirror/addon/lint/json-lint.js", + "global/codemirror/addon/lint/lint.css", + "global/codemirror/addon/lint/lint.js", + "global/codemirror/addon/lint/yaml-lint.js", + "global/codemirror/addon/merge/merge.css", + "global/codemirror/addon/merge/merge.js", + "global/codemirror/addon/mode/loadmode.js", + "global/codemirror/addon/mode/multiplex.js", + "global/codemirror/addon/mode/multiplex_test.js", + "global/codemirror/addon/mode/overlay.js", + "global/codemirror/addon/mode/simple.js", + "global/codemirror/addon/runmode/colorize.js", + "global/codemirror/addon/runmode/runmode-standalone.js", + "global/codemirror/addon/runmode/runmode.js", + "global/codemirror/addon/runmode/runmode.node.js", + "global/codemirror/addon/scroll/annotatescrollbar.js", + "global/codemirror/addon/scroll/scrollpastend.js", + "global/codemirror/addon/scroll/simplescrollbars.css", + "global/codemirror/addon/scroll/simplescrollbars.js", + "global/codemirror/addon/search/jump-to-line.js", + "global/codemirror/addon/search/match-highlighter.js", + "global/codemirror/addon/search/matchesonscrollbar.css", + "global/codemirror/addon/search/matchesonscrollbar.js", + "global/codemirror/addon/search/search.js", + "global/codemirror/addon/search/searchcursor.js", + "global/codemirror/addon/selection/active-line.js", + "global/codemirror/addon/selection/mark-selection.js", + "global/codemirror/addon/selection/selection-pointer.js", + "global/codemirror/addon/tern/tern.css", + "global/codemirror/addon/tern/tern.js", + "global/codemirror/addon/tern/worker.js", + "global/codemirror/addon/wrap/hardwrap.js", + "global/codemirror/bin/authors.sh", + "global/codemirror/bin/compress", + "global/codemirror/bin/lint", + "global/codemirror/bin/release", + "global/codemirror/bin/source-highlight", + "global/codemirror/bin/upload-release.js", + "global/codemirror/demo/activeline.html", + "global/codemirror/demo/anywordhint.html", + "global/codemirror/demo/bidi.html", + "global/codemirror/demo/btree.html", + "global/codemirror/demo/buffers.html", + "global/codemirror/demo/changemode.html", + "global/codemirror/demo/closebrackets.html", + "global/codemirror/demo/closetag.html", + "global/codemirror/demo/complete.html", + "global/codemirror/demo/emacs.html", + "global/codemirror/demo/folding.html", + "global/codemirror/demo/fullscreen.html", + "global/codemirror/demo/hardwrap.html", + "global/codemirror/demo/html5complete.html", + "global/codemirror/demo/indentwrap.html", + "global/codemirror/demo/lint.html", + "global/codemirror/demo/loadmode.html", + "global/codemirror/demo/marker.html", + "global/codemirror/demo/markselection.html", + "global/codemirror/demo/matchhighlighter.html", + "global/codemirror/demo/matchtags.html", + "global/codemirror/demo/merge.html", + "global/codemirror/demo/multiplex.html", + "global/codemirror/demo/mustache.html", + "global/codemirror/demo/panel.html", + "global/codemirror/demo/placeholder.html", + "global/codemirror/demo/preview.html", + "global/codemirror/demo/requirejs.html", + "global/codemirror/demo/resize.html", + "global/codemirror/demo/rulers.html", + "global/codemirror/demo/runmode.html", + "global/codemirror/demo/search.html", + "global/codemirror/demo/simplemode.html", + "global/codemirror/demo/simplescrollbars.html", + "global/codemirror/demo/spanaffectswrapping_shim.html", + "global/codemirror/demo/sublime.html", + "global/codemirror/demo/tern.html", + "global/codemirror/demo/theme.html", + "global/codemirror/demo/trailingspace.html", + "global/codemirror/demo/variableheight.html", + "global/codemirror/demo/vim.html", + "global/codemirror/demo/visibletabs.html", + "global/codemirror/demo/widget.html", + "global/codemirror/demo/xmlcomplete.html", + "global/codemirror/doc/activebookmark.js", + "global/codemirror/doc/docs.css", + "global/codemirror/doc/internals.html", + "global/codemirror/doc/logo.png", + "global/codemirror/doc/logo.svg", + "global/codemirror/doc/manual.html", + "global/codemirror/doc/realworld.html", + "global/codemirror/doc/releases.html", + "global/codemirror/doc/reporting.html", + "global/codemirror/doc/upgrade_v2.2.html", + "global/codemirror/doc/upgrade_v3.html", + "global/codemirror/doc/upgrade_v4.html", + "global/codemirror/doc/yinyang.png", + "global/codemirror/index.html", + "global/codemirror/keymap/emacs.js", + "global/codemirror/keymap/sublime.js", + "global/codemirror/keymap/vim.js", + "global/codemirror/lib/codemirror.css", + "global/codemirror/lib/codemirror.js", + "global/codemirror/mode/apl/apl.js", + "global/codemirror/mode/apl/index.html", + "global/codemirror/mode/asciiarmor/asciiarmor.js", + "global/codemirror/mode/asciiarmor/index.html", + "global/codemirror/mode/asn.1/asn.1.js", + "global/codemirror/mode/asn.1/index.html", + "global/codemirror/mode/asterisk/asterisk.js", + "global/codemirror/mode/asterisk/index.html", + "global/codemirror/mode/brainfuck/brainfuck.js", + "global/codemirror/mode/brainfuck/index.html", + "global/codemirror/mode/clike/clike.js", + "global/codemirror/mode/clike/index.html", + "global/codemirror/mode/clike/scala.html", + "global/codemirror/mode/clike/test.js", + "global/codemirror/mode/clojure/clojure.js", + "global/codemirror/mode/clojure/index.html", + "global/codemirror/mode/cmake/cmake.js", + "global/codemirror/mode/cmake/index.html", + "global/codemirror/mode/cobol/cobol.js", + "global/codemirror/mode/cobol/index.html", + "global/codemirror/mode/coffeescript/coffeescript.js", + "global/codemirror/mode/coffeescript/index.html", + "global/codemirror/mode/commonlisp/commonlisp.js", + "global/codemirror/mode/commonlisp/index.html", + "global/codemirror/mode/crystal/crystal.js", + "global/codemirror/mode/crystal/index.html", + "global/codemirror/mode/css/css.js", + "global/codemirror/mode/css/gss.html", + "global/codemirror/mode/css/gss_test.js", + "global/codemirror/mode/css/index.html", + "global/codemirror/mode/css/less.html", + "global/codemirror/mode/css/less_test.js", + "global/codemirror/mode/css/scss.html", + "global/codemirror/mode/css/scss_test.js", + "global/codemirror/mode/css/test.js", + "global/codemirror/mode/cypher/cypher.js", + "global/codemirror/mode/cypher/index.html", + "global/codemirror/mode/cypher/test.js", + "global/codemirror/mode/d/d.js", + "global/codemirror/mode/d/index.html", + "global/codemirror/mode/d/test.js", + "global/codemirror/mode/dart/dart.js", + "global/codemirror/mode/dart/index.html", + "global/codemirror/mode/diff/diff.js", + "global/codemirror/mode/diff/index.html", + "global/codemirror/mode/django/django.js", + "global/codemirror/mode/django/index.html", + "global/codemirror/mode/dockerfile/dockerfile.js", + "global/codemirror/mode/dockerfile/index.html", + "global/codemirror/mode/dtd/dtd.js", + "global/codemirror/mode/dtd/index.html", + "global/codemirror/mode/dylan/dylan.js", + "global/codemirror/mode/dylan/index.html", + "global/codemirror/mode/dylan/test.js", + "global/codemirror/mode/ebnf/ebnf.js", + "global/codemirror/mode/ebnf/index.html", + "global/codemirror/mode/ecl/ecl.js", + "global/codemirror/mode/ecl/index.html", + "global/codemirror/mode/eiffel/eiffel.js", + "global/codemirror/mode/eiffel/index.html", + "global/codemirror/mode/elm/elm.js", + "global/codemirror/mode/elm/index.html", + "global/codemirror/mode/erlang/erlang.js", + "global/codemirror/mode/erlang/index.html", + "global/codemirror/mode/factor/factor.js", + "global/codemirror/mode/factor/index.html", + "global/codemirror/mode/fcl/fcl.js", + "global/codemirror/mode/fcl/index.html", + "global/codemirror/mode/forth/forth.js", + "global/codemirror/mode/forth/index.html", + "global/codemirror/mode/fortran/fortran.js", + "global/codemirror/mode/fortran/index.html", + "global/codemirror/mode/gas/gas.js", + "global/codemirror/mode/gas/index.html", + "global/codemirror/mode/gfm/gfm.js", + "global/codemirror/mode/gfm/index.html", + "global/codemirror/mode/gfm/test.js", + "global/codemirror/mode/gherkin/gherkin.js", + "global/codemirror/mode/gherkin/index.html", + "global/codemirror/mode/go/go.js", + "global/codemirror/mode/go/index.html", + "global/codemirror/mode/groovy/groovy.js", + "global/codemirror/mode/groovy/index.html", + "global/codemirror/mode/haml/haml.js", + "global/codemirror/mode/haml/index.html", + "global/codemirror/mode/haml/test.js", + "global/codemirror/mode/handlebars/handlebars.js", + "global/codemirror/mode/handlebars/index.html", + "global/codemirror/mode/haskell-literate/haskell-literate.js", + "global/codemirror/mode/haskell-literate/index.html", + "global/codemirror/mode/haskell/haskell.js", + "global/codemirror/mode/haskell/index.html", + "global/codemirror/mode/haxe/haxe.js", + "global/codemirror/mode/haxe/index.html", + "global/codemirror/mode/htmlembedded/htmlembedded.js", + "global/codemirror/mode/htmlembedded/index.html", + "global/codemirror/mode/htmlmixed/htmlmixed.js", + "global/codemirror/mode/htmlmixed/index.html", + "global/codemirror/mode/http/http.js", + "global/codemirror/mode/http/index.html", + "global/codemirror/mode/idl/idl.js", + "global/codemirror/mode/idl/index.html", + "global/codemirror/mode/index.html", + "global/codemirror/mode/javascript/index.html", + "global/codemirror/mode/javascript/javascript.js", + "global/codemirror/mode/javascript/json-ld.html", + "global/codemirror/mode/javascript/test.js", + "global/codemirror/mode/javascript/typescript.html", + "global/codemirror/mode/jinja2/index.html", + "global/codemirror/mode/jinja2/jinja2.js", + "global/codemirror/mode/jsx/index.html", + "global/codemirror/mode/jsx/jsx.js", + "global/codemirror/mode/jsx/test.js", + "global/codemirror/mode/julia/index.html", + "global/codemirror/mode/julia/julia.js", + "global/codemirror/mode/livescript/index.html", + "global/codemirror/mode/livescript/livescript.js", + "global/codemirror/mode/lua/index.html", + "global/codemirror/mode/lua/lua.js", + "global/codemirror/mode/markdown/index.html", + "global/codemirror/mode/markdown/markdown.js", + "global/codemirror/mode/markdown/test.js", + "global/codemirror/mode/mathematica/index.html", + "global/codemirror/mode/mathematica/mathematica.js", + "global/codemirror/mode/mbox/index.html", + "global/codemirror/mode/mbox/mbox.js", + "global/codemirror/mode/meta.js", + "global/codemirror/mode/mirc/index.html", + "global/codemirror/mode/mirc/mirc.js", + "global/codemirror/mode/mllike/index.html", + "global/codemirror/mode/mllike/mllike.js", + "global/codemirror/mode/modelica/index.html", + "global/codemirror/mode/modelica/modelica.js", + "global/codemirror/mode/mscgen/index.html", + "global/codemirror/mode/mscgen/mscgen.js", + "global/codemirror/mode/mscgen/mscgen_test.js", + "global/codemirror/mode/mscgen/msgenny_test.js", + "global/codemirror/mode/mscgen/xu_test.js", + "global/codemirror/mode/mumps/index.html", + "global/codemirror/mode/mumps/mumps.js", + "global/codemirror/mode/nginx/index.html", + "global/codemirror/mode/nginx/nginx.js", + "global/codemirror/mode/nsis/index.html", + "global/codemirror/mode/nsis/nsis.js", + "global/codemirror/mode/ntriples/index.html", + "global/codemirror/mode/ntriples/ntriples.js", + "global/codemirror/mode/octave/index.html", + "global/codemirror/mode/octave/octave.js", + "global/codemirror/mode/oz/index.html", + "global/codemirror/mode/oz/oz.js", + "global/codemirror/mode/pascal/index.html", + "global/codemirror/mode/pascal/pascal.js", + "global/codemirror/mode/pegjs/index.html", + "global/codemirror/mode/pegjs/pegjs.js", + "global/codemirror/mode/perl/index.html", + "global/codemirror/mode/perl/perl.js", + "global/codemirror/mode/php/index.html", + "global/codemirror/mode/php/php.js", + "global/codemirror/mode/php/test.js", + "global/codemirror/mode/pig/index.html", + "global/codemirror/mode/pig/pig.js", + "global/codemirror/mode/powershell/index.html", + "global/codemirror/mode/powershell/powershell.js", + "global/codemirror/mode/powershell/test.js", + "global/codemirror/mode/properties/index.html", + "global/codemirror/mode/properties/properties.js", + "global/codemirror/mode/protobuf/index.html", + "global/codemirror/mode/protobuf/protobuf.js", + "global/codemirror/mode/pug/index.html", + "global/codemirror/mode/pug/pug.js", + "global/codemirror/mode/puppet/index.html", + "global/codemirror/mode/puppet/puppet.js", + "global/codemirror/mode/python/index.html", + "global/codemirror/mode/python/python.js", + "global/codemirror/mode/python/test.js", + "global/codemirror/mode/q/index.html", + "global/codemirror/mode/q/q.js", + "global/codemirror/mode/r/index.html", + "global/codemirror/mode/r/r.js", + "global/codemirror/mode/rpm/changes/index.html", + "global/codemirror/mode/rpm/index.html", + "global/codemirror/mode/rpm/rpm.js", + "global/codemirror/mode/rst/index.html", + "global/codemirror/mode/rst/rst.js", + "global/codemirror/mode/ruby/index.html", + "global/codemirror/mode/ruby/ruby.js", + "global/codemirror/mode/ruby/test.js", + "global/codemirror/mode/rust/index.html", + "global/codemirror/mode/rust/rust.js", + "global/codemirror/mode/rust/test.js", + "global/codemirror/mode/sas/index.html", + "global/codemirror/mode/sas/sas.js", + "global/codemirror/mode/sass/index.html", + "global/codemirror/mode/sass/sass.js", + "global/codemirror/mode/sass/test.js", + "global/codemirror/mode/scheme/index.html", + "global/codemirror/mode/scheme/scheme.js", + "global/codemirror/mode/shell/index.html", + "global/codemirror/mode/shell/shell.js", + "global/codemirror/mode/shell/test.js", + "global/codemirror/mode/sieve/index.html", + "global/codemirror/mode/sieve/sieve.js", + "global/codemirror/mode/slim/index.html", + "global/codemirror/mode/slim/slim.js", + "global/codemirror/mode/slim/test.js", + "global/codemirror/mode/smalltalk/index.html", + "global/codemirror/mode/smalltalk/smalltalk.js", + "global/codemirror/mode/smarty/index.html", + "global/codemirror/mode/smarty/smarty.js", + "global/codemirror/mode/solr/index.html", + "global/codemirror/mode/solr/solr.js", + "global/codemirror/mode/soy/index.html", + "global/codemirror/mode/soy/soy.js", + "global/codemirror/mode/soy/test.js", + "global/codemirror/mode/sparql/index.html", + "global/codemirror/mode/sparql/sparql.js", + "global/codemirror/mode/spreadsheet/index.html", + "global/codemirror/mode/spreadsheet/spreadsheet.js", + "global/codemirror/mode/sql/index.html", + "global/codemirror/mode/sql/sql.js", + "global/codemirror/mode/stex/index.html", + "global/codemirror/mode/stex/stex.js", + "global/codemirror/mode/stex/test.js", + "global/codemirror/mode/stylus/index.html", + "global/codemirror/mode/stylus/stylus.js", + "global/codemirror/mode/swift/index.html", + "global/codemirror/mode/swift/swift.js", + "global/codemirror/mode/swift/test.js", + "global/codemirror/mode/tcl/index.html", + "global/codemirror/mode/tcl/tcl.js", + "global/codemirror/mode/textile/index.html", + "global/codemirror/mode/textile/test.js", + "global/codemirror/mode/textile/textile.js", + "global/codemirror/mode/tiddlywiki/index.html", + "global/codemirror/mode/tiddlywiki/tiddlywiki.css", + "global/codemirror/mode/tiddlywiki/tiddlywiki.js", + "global/codemirror/mode/tiki/index.html", + "global/codemirror/mode/tiki/tiki.css", + "global/codemirror/mode/tiki/tiki.js", + "global/codemirror/mode/toml/index.html", + "global/codemirror/mode/toml/toml.js", + "global/codemirror/mode/tornado/index.html", + "global/codemirror/mode/tornado/tornado.js", + "global/codemirror/mode/troff/index.html", + "global/codemirror/mode/troff/troff.js", + "global/codemirror/mode/ttcn-cfg/index.html", + "global/codemirror/mode/ttcn-cfg/ttcn-cfg.js", + "global/codemirror/mode/ttcn/index.html", + "global/codemirror/mode/ttcn/ttcn.js", + "global/codemirror/mode/turtle/index.html", + "global/codemirror/mode/turtle/turtle.js", + "global/codemirror/mode/twig/index.html", + "global/codemirror/mode/twig/twig.js", + "global/codemirror/mode/vb/index.html", + "global/codemirror/mode/vb/vb.js", + "global/codemirror/mode/vbscript/index.html", + "global/codemirror/mode/vbscript/vbscript.js", + "global/codemirror/mode/velocity/index.html", + "global/codemirror/mode/velocity/velocity.js", + "global/codemirror/mode/verilog/index.html", + "global/codemirror/mode/verilog/test.js", + "global/codemirror/mode/verilog/verilog.js", + "global/codemirror/mode/vhdl/index.html", + "global/codemirror/mode/vhdl/vhdl.js", + "global/codemirror/mode/vue/index.html", + "global/codemirror/mode/vue/vue.js", + "global/codemirror/mode/webidl/index.html", + "global/codemirror/mode/webidl/webidl.js", + "global/codemirror/mode/xml/index.html", + "global/codemirror/mode/xml/test.js", + "global/codemirror/mode/xml/xml.js", + "global/codemirror/mode/xquery/index.html", + "global/codemirror/mode/xquery/test.js", + "global/codemirror/mode/xquery/xquery.js", + "global/codemirror/mode/yacas/index.html", + "global/codemirror/mode/yacas/yacas.js", + "global/codemirror/mode/yaml-frontmatter/index.html", + "global/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js", + "global/codemirror/mode/yaml/index.html", + "global/codemirror/mode/yaml/yaml.js", + "global/codemirror/mode/z80/index.html", + "global/codemirror/mode/z80/z80.js", + "global/codemirror/package.json", + "global/codemirror/rollup.config.js", + "global/codemirror/src/codemirror.js", + "global/codemirror/src/display/Display.js", + "global/codemirror/src/display/focus.js", + "global/codemirror/src/display/gutters.js", + "global/codemirror/src/display/highlight_worker.js", + "global/codemirror/src/display/line_numbers.js", + "global/codemirror/src/display/mode_state.js", + "global/codemirror/src/display/operations.js", + "global/codemirror/src/display/scroll_events.js", + "global/codemirror/src/display/scrollbars.js", + "global/codemirror/src/display/scrolling.js", + "global/codemirror/src/display/selection.js", + "global/codemirror/src/display/update_display.js", + "global/codemirror/src/display/update_line.js", + "global/codemirror/src/display/update_lines.js", + "global/codemirror/src/display/view_tracking.js", + "global/codemirror/src/edit/CodeMirror.js", + "global/codemirror/src/edit/commands.js", + "global/codemirror/src/edit/deleteNearSelection.js", + "global/codemirror/src/edit/drop_events.js", + "global/codemirror/src/edit/fromTextArea.js", + "global/codemirror/src/edit/global_events.js", + "global/codemirror/src/edit/key_events.js", + "global/codemirror/src/edit/legacy.js", + "global/codemirror/src/edit/main.js", + "global/codemirror/src/edit/methods.js", + "global/codemirror/src/edit/mouse_events.js", + "global/codemirror/src/edit/options.js", + "global/codemirror/src/edit/utils.js", + "global/codemirror/src/input/ContentEditableInput.js", + "global/codemirror/src/input/TextareaInput.js", + "global/codemirror/src/input/indent.js", + "global/codemirror/src/input/input.js", + "global/codemirror/src/input/keymap.js", + "global/codemirror/src/input/keynames.js", + "global/codemirror/src/input/movement.js", + "global/codemirror/src/line/highlight.js", + "global/codemirror/src/line/line_data.js", + "global/codemirror/src/line/pos.js", + "global/codemirror/src/line/saw_special_spans.js", + "global/codemirror/src/line/spans.js", + "global/codemirror/src/line/utils_line.js", + "global/codemirror/src/measurement/position_measurement.js", + "global/codemirror/src/measurement/widgets.js", + "global/codemirror/src/model/Doc.js", + "global/codemirror/src/model/change_measurement.js", + "global/codemirror/src/model/changes.js", + "global/codemirror/src/model/chunk.js", + "global/codemirror/src/model/document_data.js", + "global/codemirror/src/model/history.js", + "global/codemirror/src/model/line_widget.js", + "global/codemirror/src/model/mark_text.js", + "global/codemirror/src/model/selection.js", + "global/codemirror/src/model/selection_updates.js", + "global/codemirror/src/modes.js", + "global/codemirror/src/util/StringStream.js", + "global/codemirror/src/util/bidi.js", + "global/codemirror/src/util/browser.js", + "global/codemirror/src/util/dom.js", + "global/codemirror/src/util/event.js", + "global/codemirror/src/util/feature_detection.js", + "global/codemirror/src/util/misc.js", + "global/codemirror/src/util/operation_group.js", + "global/codemirror/test/comment_test.js", + "global/codemirror/test/contenteditable_test.js", + "global/codemirror/test/doc_test.js", + "global/codemirror/test/driver.js", + "global/codemirror/test/emacs_test.js", + "global/codemirror/test/index.html", + "global/codemirror/test/lint.js", + "global/codemirror/test/mode_test.css", + "global/codemirror/test/mode_test.js", + "global/codemirror/test/multi_test.js", + "global/codemirror/test/phantom_driver.js", + "global/codemirror/test/run.js", + "global/codemirror/test/scroll_test.js", + "global/codemirror/test/search_test.js", + "global/codemirror/test/sql-hint-test.js", + "global/codemirror/test/sublime_test.js", + "global/codemirror/test/test.js", + "global/codemirror/test/vim_test.js", + "global/codemirror/theme/3024-day.css", + "global/codemirror/theme/3024-night.css", + "global/codemirror/theme/abcdef.css", + "global/codemirror/theme/ambiance-mobile.css", + "global/codemirror/theme/ambiance.css", + "global/codemirror/theme/base16-dark.css", + "global/codemirror/theme/base16-light.css", + "global/codemirror/theme/bespin.css", + "global/codemirror/theme/blackboard.css", + "global/codemirror/theme/cobalt.css", + "global/codemirror/theme/colorforth.css", + "global/codemirror/theme/dracula.css", + "global/codemirror/theme/duotone-dark.css", + "global/codemirror/theme/duotone-light.css", + "global/codemirror/theme/eclipse.css", + "global/codemirror/theme/elegant.css", + "global/codemirror/theme/erlang-dark.css", + "global/codemirror/theme/hopscotch.css", + "global/codemirror/theme/icecoder.css", + "global/codemirror/theme/isotope.css", + "global/codemirror/theme/lesser-dark.css", + "global/codemirror/theme/liquibyte.css", + "global/codemirror/theme/material.css", + "global/codemirror/theme/mbo.css", + "global/codemirror/theme/mdn-like.css", + "global/codemirror/theme/midnight.css", + "global/codemirror/theme/monokai.css", + "global/codemirror/theme/neat.css", + "global/codemirror/theme/neo.css", + "global/codemirror/theme/night.css", + "global/codemirror/theme/panda-syntax.css", + "global/codemirror/theme/paraiso-dark.css", + "global/codemirror/theme/paraiso-light.css", + "global/codemirror/theme/pastel-on-dark.css", + "global/codemirror/theme/railscasts.css", + "global/codemirror/theme/rubyblue.css", + "global/codemirror/theme/seti.css", + "global/codemirror/theme/solarized.css", + "global/codemirror/theme/the-matrix.css", + "global/codemirror/theme/tomorrow-night-bright.css", + "global/codemirror/theme/tomorrow-night-eighties.css", + "global/codemirror/theme/ttcn.css", + "global/codemirror/theme/twilight.css", + "global/codemirror/theme/vibrant-ink.css", + "global/codemirror/theme/xq-dark.css", + "global/codemirror/theme/xq-light.css", + "global/codemirror/theme/yeti.css", + "global/codemirror/theme/zenburn.css", + "global/css/field_types.php", + "global/css/main.css", + "global/css/ui.daterangepicker.css", + "global/emails/forget_password.tpl", + "global/emails/forget_password_subject.tpl", + "global/emails/installed.tpl", + "global/emails/installed_subject.tpl", + "global/emails/patterns/html_admin.tpl", + "global/emails/patterns/html_admin_loop.tpl", + "global/emails/patterns/html_admin_loop_omit_empty.tpl", + "global/emails/patterns/html_admin_notification.tpl", + "global/emails/patterns/html_admin_omit_empty.tpl", + "global/emails/patterns/html_programming_example.tpl", + "global/emails/patterns/html_user.tpl", + "global/emails/patterns/html_user_loop.tpl", + "global/emails/patterns/html_user_loop_omit_empty.tpl", + "global/emails/patterns/html_user_notification.tpl", + "global/emails/patterns/html_user_omit_empty.tpl", + "global/emails/patterns/index.php", + "global/emails/patterns/patterns.ini", + "global/emails/patterns/text_admin.tpl", + "global/emails/patterns/text_admin_loop.tpl", + "global/emails/patterns/text_admin_loop_omit_empty.tpl", + "global/emails/patterns/text_admin_notification.tpl", + "global/emails/patterns/text_admin_omit_empty.tpl", + "global/emails/patterns/text_programming_example.tpl", + "global/emails/patterns/text_user.tpl", + "global/emails/patterns/text_user_loop.tpl", + "global/emails/patterns/text_user_loop_omit_empty.tpl", + "global/emails/patterns/text_user_notification.tpl", + "global/emails/patterns/text_user_omit_empty.tpl", + "global/fancybox/blank.gif", + "global/fancybox/fancy_close.png", + "global/fancybox/fancy_loading.png", + "global/fancybox/fancy_nav_left.png", + "global/fancybox/fancy_nav_right.png", + "global/fancybox/fancy_shadow_e.png", + "global/fancybox/fancy_shadow_n.png", + "global/fancybox/fancy_shadow_ne.png", + "global/fancybox/fancy_shadow_nw.png", + "global/fancybox/fancy_shadow_s.png", + "global/fancybox/fancy_shadow_se.png", + "global/fancybox/fancy_shadow_sw.png", + "global/fancybox/fancy_shadow_w.png", + "global/fancybox/fancy_title_left.png", + "global/fancybox/fancy_title_main.png", + "global/fancybox/fancy_title_over.png", + "global/fancybox/fancy_title_right.png", + "global/fancybox/fancybox-x.png", + "global/fancybox/fancybox-y.png", + "global/fancybox/fancybox.png", + "global/fancybox/jquery.easing-1.3.pack.js", + "global/fancybox/jquery.fancybox-1.3.4.css", + "global/fancybox/jquery.fancybox-1.3.4.pack.js", + "global/fancybox/jquery.mousewheel-3.0.4.pack.js", + "global/images/alert.png", + "global/images/calendar.png", + "global/images/clock.png", + "global/images/error.png", + "global/images/group_block.png", + "global/images/group_block_connect.png", + "global/images/group_block_disconnect.png", + "global/images/index.php", + "global/images/info.png", + "global/images/info_small.png", + "global/images/lang_placeholder_field_icon.gif", + "global/images/lang_placeholder_field_icon.png", + "global/images/loading.gif", + "global/images/loading_small.gif", + "global/images/open_new_window.png", + "global/index.php", + "global/lang/README.md", + "global/lang/af.php", + "global/lang/ar.php", + "global/lang/az.php", + "global/lang/be.php", + "global/lang/bg.php", + "global/lang/ca.php", + "global/lang/cs.php", + "global/lang/cy.php", + "global/lang/da.php", + "global/lang/de.php", + "global/lang/el.php", + "global/lang/en_us.php", + "global/lang/es.php", + "global/lang/et.php", + "global/lang/fa.php", + "global/lang/fi.php", + "global/lang/fr.php", + "global/lang/ga.php", + "global/lang/gl.php", + "global/lang/hi.php", + "global/lang/hr.php", + "global/lang/hu.php", + "global/lang/id.php", + "global/lang/index.html", + "global/lang/is.php", + "global/lang/it.php", + "global/lang/ja.php", + "global/lang/ko.php", + "global/lang/la.php", + "global/lang/lt.php", + "global/lang/manifest.json", + "global/lang/mk.php", + "global/lang/ms.php", + "global/lang/mt.php", + "global/lang/nl.php", + "global/lang/no.php", + "global/lang/pl.php", + "global/lang/pt.php", + "global/lang/pt_br.php", + "global/lang/pt_eu.php", + "global/lang/ro.php", + "global/lang/ru.php", + "global/lang/sk.php", + "global/lang/sl.php", + "global/lang/sr.php", + "global/lang/sv.php", + "global/lang/sw.php", + "global/lang/th.php", + "global/lang/tl.php", + "global/lang/tr.php", + "global/lang/uk.php", + "global/lang/vi.php", + "global/lang/yi.php", + "global/lang/zh_cn.php", + "global/lang/zh_tw.php", + "global/library.php", + "global/misc/config_core.php", + "global/misc/index.php", + "global/scripts/daterangepicker.jquery.js", + "global/scripts/external_form_smart_fill.js", + "global/scripts/field_types.php", + "global/scripts/general.js", + "global/scripts/index.html", + "global/scripts/jquery-ui-timepicker-addon.js", + "global/scripts/jquery.js", + "global/scripts/manage_client_forms.js", + "global/scripts/manage_email_templates.js", + "global/scripts/manage_fields.js", + "global/scripts/manage_fields.min.js", + "global/scripts/manage_forms.js", + "global/scripts/manage_menus.js", + "global/scripts/manage_modules.js", + "global/scripts/manage_option_lists.js", + "global/scripts/manage_submissions.js", + "global/scripts/manage_views.js", + "global/scripts/rsv.js", + "global/scripts/sortable.js", + "global/smarty_plugins/eval.tpl", + "global/smarty_plugins/function.clients_dropdown.php", + "global/smarty_plugins/function.css_files.php", + "global/smarty_plugins/function.display_account_name.php", + "global/smarty_plugins/function.display_custom_field.php", + "global/smarty_plugins/function.display_edit_submission_view_dropdown.php", + "global/smarty_plugins/function.display_email_template_dropdown.php", + "global/smarty_plugins/function.display_field_type_name.php", + "global/smarty_plugins/function.display_field_type_settings_dropdown.php", + "global/smarty_plugins/function.display_field_types_dropdown.php", + "global/smarty_plugins/function.display_file_field.php", + "global/smarty_plugins/function.display_form_name.php", + "global/smarty_plugins/function.display_multi_select_field_values.php", + "global/smarty_plugins/function.display_num_form_submissions.php", + "global/smarty_plugins/function.display_option_list.php", + "global/smarty_plugins/function.display_view_name.php", + "global/smarty_plugins/function.dropdown.php", + "global/smarty_plugins/function.edit_custom_field.php", + "global/smarty_plugins/function.edit_phone_field.php", + "global/smarty_plugins/function.email_patterns_dropdown.php", + "global/smarty_plugins/function.eval_smarty_string.php", + "global/smarty_plugins/function.field_sizes_dropdown.php", + "global/smarty_plugins/function.form_fields_dropdown.php", + "global/smarty_plugins/function.form_view_fields_dropdown.php", + "global/smarty_plugins/function.forms_dropdown.php", + "global/smarty_plugins/function.ft_include.php", + "global/smarty_plugins/function.js_files.php", + "global/smarty_plugins/function.languages_dropdown.php", + "global/smarty_plugins/function.menus_dropdown.php", + "global/smarty_plugins/function.module_function.php", + "global/smarty_plugins/function.option_list_dropdown.php", + "global/smarty_plugins/function.pages_dropdown.php", + "global/smarty_plugins/function.show_page_load_time.php", + "global/smarty_plugins/function.submission_dropdown.php", + "global/smarty_plugins/function.submission_dropdown_multiple.php", + "global/smarty_plugins/function.submission_listing_quicklinks.php", + "global/smarty_plugins/function.template_hook.php", + "global/smarty_plugins/function.themes_dropdown.php", + "global/smarty_plugins/function.timezone_offset_dropdown.php", + "global/smarty_plugins/function.view_fields.php", + "global/smarty_plugins/function.view_phone_field.php", + "global/smarty_plugins/function.views_dropdown.php", + "global/smarty_plugins/modifier.custom_format_date.php", + "global/smarty_plugins/modifier.hook_call_defined.php", + "index.php", + "install/files/main.css", + "install/index.php", + "install/step2.php", + "install/step3.php", + "install/step4.php", + "install/step5.php", + "install/step6.php", + "install/templates/index.tpl", + "install/templates/install_footer.tpl", + "install/templates/install_header.tpl", + "install/templates/step2.tpl", + "install/templates/step3.tpl", + "install/templates/step4.tpl", + "install/templates/step5.tpl", + "install/templates/step6.tpl", + "modules/index.html", + "process.php", + "themes/default/about/screenshot.gif", + "themes/default/about/theme.php", + "themes/default/about/thumbnail.gif", + "themes/default/admin/account/index.tpl", + "themes/default/admin/clients/add.tpl", + "themes/default/admin/clients/edit.tpl", + "themes/default/admin/clients/index.tpl", + "themes/default/admin/clients/tab_forms.tpl", + "themes/default/admin/clients/tab_main.tpl", + "themes/default/admin/clients/tab_settings.tpl", + "themes/default/admin/forms/add/index.tpl", + "themes/default/admin/forms/add/internal.tpl", + "themes/default/admin/forms/add/step1.tpl", + "themes/default/admin/forms/add/step2.tpl", + "themes/default/admin/forms/add/step3.tpl", + "themes/default/admin/forms/add/step4.tpl", + "themes/default/admin/forms/add/step5.tpl", + "themes/default/admin/forms/add/step6.tpl", + "themes/default/admin/forms/delete_form.tpl", + "themes/default/admin/forms/edit/index.tpl", + "themes/default/admin/forms/edit/tab_edit_email.tpl", + "themes/default/admin/forms/edit/tab_edit_email_tab1.tpl", + "themes/default/admin/forms/edit/tab_edit_email_tab2.tpl", + "themes/default/admin/forms/edit/tab_edit_email_tab3.tpl", + "themes/default/admin/forms/edit/tab_edit_email_tab4.tpl", + "themes/default/admin/forms/edit/tab_edit_view.tpl", + "themes/default/admin/forms/edit/tab_edit_view__fields.tpl", + "themes/default/admin/forms/edit/tab_edit_view__filters.tpl", + "themes/default/admin/forms/edit/tab_edit_view__list_page.tpl", + "themes/default/admin/forms/edit/tab_edit_view__main.tpl", + "themes/default/admin/forms/edit/tab_edit_view__tabs.tpl", + "themes/default/admin/forms/edit/tab_email_settings.tpl", + "themes/default/admin/forms/edit/tab_emails.tpl", + "themes/default/admin/forms/edit/tab_fields.tpl", + "themes/default/admin/forms/edit/tab_main.tpl", + "themes/default/admin/forms/edit/tab_public_form_omit_list.tpl", + "themes/default/admin/forms/edit/tab_public_view_omit_list.tpl", + "themes/default/admin/forms/edit/tab_views.tpl", + "themes/default/admin/forms/edit_submission.tpl", + "themes/default/admin/forms/form_placeholders.tpl", + "themes/default/admin/forms/index.tpl", + "themes/default/admin/forms/option_lists/edit.tpl", + "themes/default/admin/forms/option_lists/index.tpl", + "themes/default/admin/forms/option_lists/tab_form_fields.tpl", + "themes/default/admin/forms/option_lists/tab_main.tpl", + "themes/default/admin/forms/submissions.tpl", + "themes/default/admin/index.html", + "themes/default/admin/modules/about.tpl", + "themes/default/admin/modules/index.tpl", + "themes/default/admin/settings/index.tpl", + "themes/default/admin/settings/tab_accounts.tpl", + "themes/default/admin/settings/tab_edit_admin_menu.tpl", + "themes/default/admin/settings/tab_edit_client_menu.tpl", + "themes/default/admin/settings/tab_files.tpl", + "themes/default/admin/settings/tab_main.tpl", + "themes/default/admin/settings/tab_menus.tpl", + "themes/default/admin/themes/about.tpl", + "themes/default/admin/themes/index.tpl", + "themes/default/clients/account/index.tpl", + "themes/default/clients/account/tab_main.tpl", + "themes/default/clients/account/tab_settings.tpl", + "themes/default/clients/forms/edit_submission.tpl", + "themes/default/clients/forms/index.tpl", + "themes/default/clients/index.tpl", + "themes/default/css/index.html", + "themes/default/css/smoothness/images/ui-bg_flat_0_000000_40x100.png", + "themes/default/css/smoothness/images/ui-bg_flat_0_444444_40x100.png", + "themes/default/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png", + "themes/default/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png", + "themes/default/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png", + "themes/default/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png", + "themes/default/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png", + "themes/default/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png", + "themes/default/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png", + "themes/default/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png", + "themes/default/css/smoothness/images/ui-icons_222222_256x240.png", + "themes/default/css/smoothness/images/ui-icons_2e83ff_256x240.png", + "themes/default/css/smoothness/images/ui-icons_454545_256x240.png", + "themes/default/css/smoothness/images/ui-icons_888888_256x240.png", + "themes/default/css/smoothness/images/ui-icons_cd0a0a_256x240.png", + "themes/default/css/smoothness/jquery-ui-1.8.6.custom.css", + "themes/default/css/smoothness/jquery-ui.css", + "themes/default/css/styles.css", + "themes/default/css/swatch_aquamarine.css", + "themes/default/css/swatch_blue.css", + "themes/default/css/swatch_dark_blue.css", + "themes/default/css/swatch_green.css", + "themes/default/css/swatch_grey.css", + "themes/default/css/swatch_light_brown.css", + "themes/default/css/swatch_orange.css", + "themes/default/css/swatch_purple.css", + "themes/default/css/swatch_red.css", + "themes/default/css/swatch_yellow.css", + "themes/default/js_pagination.tpl", + "themes/default/error.tpl", + "themes/default/footer.tpl", + "themes/default/forget_password.tpl", + "themes/default/header.tpl", + "themes/default/images/account_section_left_aquamarine2x.png", + "themes/default/images/account_section_left_blue2x.png", + "themes/default/images/account_section_left_dark_blue2x.png", + "themes/default/images/account_section_left_green2x.png", + "themes/default/images/account_section_left_grey2x.png", + "themes/default/images/account_section_left_light_brown2x.png", + "themes/default/images/account_section_left_orange2x.png", + "themes/default/images/account_section_left_purple2x.png", + "themes/default/images/account_section_left_red2x.png", + "themes/default/images/account_section_left_yellow2x.png", + "themes/default/images/account_section_right_aquamarine2x.png", + "themes/default/images/account_section_right_blue2x.png", + "themes/default/images/account_section_right_dark_blue2x.png", + "themes/default/images/account_section_right_green2x.png", + "themes/default/images/account_section_right_grey2x.png", + "themes/default/images/account_section_right_light_brown2x.png", + "themes/default/images/account_section_right_orange2x.png", + "themes/default/images/account_section_right_purple2x.png", + "themes/default/images/account_section_right_red2x.png", + "themes/default/images/account_section_right_yellow2x.png", + "themes/default/images/admin_edit.png", + "themes/default/images/admin_view.png", + "themes/default/images/ajax_activity.gif", + "themes/default/images/ajax_activity_grey.gif", + "themes/default/images/ajax_activity_light_grey.gif", + "themes/default/images/ajax_activity_yellow.gif", + "themes/default/images/ajax_no_activity.gif", + "themes/default/images/ajax_no_activity_grey.gif", + "themes/default/images/ajax_no_activity_light_grey.gif", + "themes/default/images/ajax_no_activity_yellow.gif", + "themes/default/images/columns.png", + "themes/default/images/delete.png", + "themes/default/images/delete_bg.jpg", + "themes/default/images/delete_group.png", + "themes/default/images/edit.png", + "themes/default/images/edit_form.png", + "themes/default/images/edit_small.gif", + "themes/default/images/favicon.ico", + "themes/default/images/fields.png", + "themes/default/images/fields_table_bg.png", + "themes/default/images/filter.png", + "themes/default/images/icon_accounts.gif", + "themes/default/images/icon_forms.gif", + "themes/default/images/icon_login.gif", + "themes/default/images/icon_modules.gif", + "themes/default/images/icon_option_lists.gif", + "themes/default/images/icon_settings.gif", + "themes/default/images/icon_themes.gif", + "themes/default/images/index.php", + "themes/default/images/left_bg.jpg", + "themes/default/images/left_nav_bg.jpg", + "themes/default/images/list_table_heading.jpg", + "themes/default/images/list_table_heading_over.jpg", + "themes/default/images/login.png", + "themes/default/images/logo_aquamarine2x.png", + "themes/default/images/logo_blue2x.png", + "themes/default/images/logo_dark_blue2x.png", + "themes/default/images/logo_green2x.png", + "themes/default/images/logo_grey2x.png", + "themes/default/images/logo_light_brown2x.png", + "themes/default/images/logo_orange2x.png", + "themes/default/images/logo_purple2x.png", + "themes/default/images/logo_red2x.png", + "themes/default/images/logo_yellow2x.png", + "themes/default/images/main_bg.jpg", + "themes/default/images/nav_down.jpg", + "themes/default/images/nav_row_bg.jpg", + "themes/default/images/page_content_bg.jpg", + "themes/default/images/placeholders.png", + "themes/default/images/popup_bg.jpg", + "themes/default/images/popup_header_bg_green.png", + "themes/default/images/popup_header_bg_grey.png", + "themes/default/images/sort.png", + "themes/default/images/sort_down.gif", + "themes/default/images/sort_up.gif", + "themes/default/images/submenu_item.gif", + "themes/default/images/tab_not_selected_bg.gif", + "themes/default/images/tabs.png", + "themes/default/images/top_banner_bg.jpg", + "themes/default/images/top_row_aquamarine2x.png", + "themes/default/images/top_row_blue2x.png", + "themes/default/images/top_row_dark_blue2x.png", + "themes/default/images/top_row_green2x.png", + "themes/default/images/top_row_grey2x.png", + "themes/default/images/top_row_light_brown2x.png", + "themes/default/images/top_row_orange2x.png", + "themes/default/images/top_row_purple2x.png", + "themes/default/images/top_row_red2x.png", + "themes/default/images/top_row_yellow2x.png", + "themes/default/images/up.jpg", + "themes/default/images/up_down.png", + "themes/default/images/utilities.png", + "themes/default/images/utilities_small.png", + "themes/default/images/view.png", + "themes/default/index.tpl", + "themes/default/menu.tpl", + "themes/default/messages.tpl", + "themes/default/module_menu.tpl", + "themes/default/modules_footer.tpl", + "themes/default/modules_header.tpl", + "themes/default/pagination.tpl", + "themes/default/scripts/jquery-ui-1.8.6.custom.min.js", + "themes/default/scripts/jquery-ui.js", + "themes/default/tabset_close.tpl", + "themes/default/tabset_open.tpl", + "themes/index.html", + "upload/index.html", + "vendor/autoload.php", + "vendor/composer/ClassLoader.php", + "vendor/composer/LICENSE", + "vendor/composer/autoload_classmap.php", + "vendor/composer/autoload_files.php", + "vendor/composer/autoload_namespaces.php", + "vendor/composer/autoload_psr4.php", + "vendor/composer/autoload_real.php", + "vendor/composer/autoload_static.php", + "vendor/composer/installed.json", + "vendor/smarty/smarty/COMPOSER_RELEASE_NOTES.txt", + "vendor/smarty/smarty/INHERITANCE_RELEASE_NOTES.txt", + "vendor/smarty/smarty/LICENSE", + "vendor/smarty/smarty/NEW_FEATURES.txt", + "vendor/smarty/smarty/README", + "vendor/smarty/smarty/README.md", + "vendor/smarty/smarty/SMARTY_2_BC_NOTES.txt", + "vendor/smarty/smarty/SMARTY_3.0_BC_NOTES.txt", + "vendor/smarty/smarty/SMARTY_3.1_NOTES.txt", + "vendor/smarty/smarty/change_log.txt", + "vendor/smarty/smarty/demo/configs/test.conf", + "vendor/smarty/smarty/demo/index.php", + "vendor/smarty/smarty/demo/plugins/cacheresource.apc.php", + "vendor/smarty/smarty/demo/plugins/cacheresource.memcache.php", + "vendor/smarty/smarty/demo/plugins/cacheresource.mysql.php", + "vendor/smarty/smarty/demo/plugins/cacheresource.pdo.php", + "vendor/smarty/smarty/demo/plugins/cacheresource.pdo_gzip.php", + "vendor/smarty/smarty/demo/plugins/resource.extendsall.php", + "vendor/smarty/smarty/demo/plugins/resource.mysql.php", + "vendor/smarty/smarty/demo/plugins/resource.mysqls.php", + "vendor/smarty/smarty/demo/templates/footer.tpl", + "vendor/smarty/smarty/demo/templates/header.tpl", + "vendor/smarty/smarty/demo/templates/index.tpl", + "vendor/smarty/smarty/libs/Autoloader.php", + "vendor/smarty/smarty/libs/Smarty.class.php", + "vendor/smarty/smarty/libs/SmartyBC.class.php", + "vendor/smarty/smarty/libs/bootstrap.php", + "vendor/smarty/smarty/libs/debug.tpl", + "vendor/smarty/smarty/libs/plugins/block.textformat.php", + "vendor/smarty/smarty/libs/plugins/function.counter.php", + "vendor/smarty/smarty/libs/plugins/function.cycle.php", + "vendor/smarty/smarty/libs/plugins/function.fetch.php", + "vendor/smarty/smarty/libs/plugins/function.html_checkboxes.php", + "vendor/smarty/smarty/libs/plugins/function.html_image.php", + "vendor/smarty/smarty/libs/plugins/function.html_options.php", + "vendor/smarty/smarty/libs/plugins/function.html_radios.php", + "vendor/smarty/smarty/libs/plugins/function.html_select_date.php", + "vendor/smarty/smarty/libs/plugins/function.html_select_time.php", + "vendor/smarty/smarty/libs/plugins/function.html_table.php", + "vendor/smarty/smarty/libs/plugins/function.mailto.php", + "vendor/smarty/smarty/libs/plugins/function.math.php", + "vendor/smarty/smarty/libs/plugins/modifier.capitalize.php", + "vendor/smarty/smarty/libs/plugins/modifier.date_format.php", + "vendor/smarty/smarty/libs/plugins/modifier.debug_print_var.php", + "vendor/smarty/smarty/libs/plugins/modifier.escape.php", + "vendor/smarty/smarty/libs/plugins/modifier.regex_replace.php", + "vendor/smarty/smarty/libs/plugins/modifier.replace.php", + "vendor/smarty/smarty/libs/plugins/modifier.spacify.php", + "vendor/smarty/smarty/libs/plugins/modifier.truncate.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.cat.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.count_characters.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.count_paragraphs.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.count_sentences.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.count_words.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.default.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.escape.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.from_charset.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.indent.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.lower.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.noprint.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.string_format.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.strip.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.strip_tags.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.to_charset.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.unescape.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.upper.php", + "vendor/smarty/smarty/libs/plugins/modifiercompiler.wordwrap.php", + "vendor/smarty/smarty/libs/plugins/outputfilter.trimwhitespace.php", + "vendor/smarty/smarty/libs/plugins/shared.escape_special_chars.php", + "vendor/smarty/smarty/libs/plugins/shared.literal_compiler_param.php", + "vendor/smarty/smarty/libs/plugins/shared.make_timestamp.php", + "vendor/smarty/smarty/libs/plugins/shared.mb_str_replace.php", + "vendor/smarty/smarty/libs/plugins/shared.mb_unicode.php", + "vendor/smarty/smarty/libs/plugins/shared.mb_wordwrap.php", + "vendor/smarty/smarty/libs/plugins/variablefilter.htmlspecialchars.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_custom.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_cacheresource_keyvaluestore.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_data.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_block.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_cacheresource_file.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_append.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_assign.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_child.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_block_parent.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_break.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_call.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_capture.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_config_load.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_continue.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_debug.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_eval.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_extends.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_for.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_foreach.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_function.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_if.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_include_php.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_insert.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_ldelim.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_make_nocache.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_nocache.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_block_plugin.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_foreachsection.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_function_plugin.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_modifier.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_block_function.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_object_function.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_php.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_print_expression.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_block.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_registered_function.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_private_special_variable.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_rdelim.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_section.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_setfilter.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_shared_inheritance.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compile_while.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_compilebase.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_config_file_compiler.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfilelexer.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_configfileparser.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_data.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_debug.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_extension_handler.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_addautoloadfilters.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_adddefaultmodifiers.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_append.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_appendbyref.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignbyref.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_assignglobal.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallassign.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearallcache.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearassign.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcache.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearcompiledtemplate.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_clearconfig.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compileallconfig.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_compilealltemplates.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_configload.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_createdata.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getautoloadfilters.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvariable.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getconfigvars.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdebugtemplate.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getdefaultmodifiers.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getglobal.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getregisteredobject.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_getstreamvariable.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettags.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_gettemplatevars.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadfilter.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_loadplugin.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_mustcompile.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registercacheresource.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerclass.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultconfighandler.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaultpluginhandler.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerdefaulttemplatehandler.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerfilter.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerobject.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerplugin.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_registerresource.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setautoloadfilters.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdebugtemplate.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_setdefaultmodifiers.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unloadfilter.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregistercacheresource.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterfilter.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterobject.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterplugin.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_method_unregisterresource.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_nocache_insert.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_code.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dqcontent.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_tag.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_template.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_text.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_eval.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_extends.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_file.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_php.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_registered.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_stream.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_resource_string.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cachemodify.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_cacheresourcefile.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_capture.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_codeframe.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_filterhandler.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_foreach.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_getincludepath.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_inheritance.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_make_nocache.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_tplfunction.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatecache.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_updatescope.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_runtime_writefile.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_template.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatebase.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_templatelexer.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_templateparser.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_testinstall.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_internal_undefined.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_resource.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_resource_custom.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_resource_recompiled.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_resource_uncompiled.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_security.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_template_cached.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_template_compiled.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_template_config.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_template_resource_base.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_template_source.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_undefined_variable.php", + "vendor/smarty/smarty/libs/sysplugins/smarty_variable.php", + "vendor/smarty/smarty/libs/sysplugins/smartycompilerexception.php", + "vendor/smarty/smarty/libs/sysplugins/smartyexception.php" +); diff --git a/global/misc/index.php b/global/misc/index.php new file mode 100644 index 00000000..c8868d4c --- /dev/null +++ b/global/misc/index.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/global/scripts/daterangepicker.jquery.js b/global/scripts/daterangepicker.jquery.js new file mode 100644 index 00000000..0274c82c --- /dev/null +++ b/global/scripts/daterangepicker.jquery.js @@ -0,0 +1,734 @@ +/** + * -------------------------------------------------------------------- + * jQuery-Plugin "daterangepicker.jQuery.js" + * by Scott Jehl, scott@filamentgroup.com + * http://www.filamentgroup.com + * reference article: http://www.filamentgroup.com/lab/update_date_range_picker_with_jquery_ui/ + * demo page: http://www.filamentgroup.com/examples/daterangepicker/ + * + * Copyright (c) 2008 Filament Group, Inc + * Dual licensed under the MIT (filamentgroup.com/examples/mit-license.txt) and GPL (filamentgroup.com/examples/gpl-license.txt) licenses. + * + * Dependencies: jquery, jquery UI datepicker, date.js library (included at bottom), jQuery UI CSS Framework + * Changelog: + * 10.23.2008 initial Version + * 11.12.2008 changed dateFormat option to allow custom date formatting (credit: http://alexgoldstone.com/) + * 01.04.09 updated markup to new jQuery UI CSS Framework + * 01.19.2008 changed presets hash to support different text + * -------------------------------------------------------------------- + */ +jQuery.fn.daterangepicker = function(settings){ + var rangeInput = jQuery(this); + + //defaults + var options = jQuery.extend({ + presetRanges: [ + {text: 'Today', dateStart: 'today', dateEnd: 'today' }, + {text: 'Last 7 days', dateStart: 'today-7days', dateEnd: 'today' }, + {text: 'Month to date', dateStart: function(){ return Date.parse('today').moveToFirstDayOfMonth(); }, dateEnd: 'today' }, + {text: 'Year to date', dateStart: function(){ var x= Date.parse('today'); x.setMonth(0); x.setDate(1); return x; }, dateEnd: 'today' }, + //extras: + {text: 'The previous Month', dateStart: function(){ return Date.parse('1 month ago').moveToFirstDayOfMonth(); }, dateEnd: function(){ return Date.parse('1 month ago').moveToLastDayOfMonth(); } } + //{text: 'Tomorrow', dateStart: 'Tomorrow', dateEnd: 'Tomorrow' }, + //{text: 'Ad Campaign', dateStart: '03/07/08', dateEnd: 'Today' }, + //{text: 'Last 30 Days', dateStart: 'Today-30', dateEnd: 'Today' }, + //{text: 'Next 30 Days', dateStart: 'Today', dateEnd: 'Today+30' }, + //{text: 'Our Ad Campaign', dateStart: '03/07/08', dateEnd: '07/08/08' } + ], + //presetRanges: array of objects for each menu preset. + //Each obj must have text, dateStart, dateEnd. dateStart, dateEnd accept date.js string or a function which returns a date object + presets: { + specificDate: 'Specific Date', + allDatesBefore: 'All Dates Before', + allDatesAfter: 'All Dates After', + dateRange: 'Date Range' + }, + rangeStartTitle: 'Start date', + rangeEndTitle: 'End date', + nextLinkText: 'Next', + prevLinkText: 'Prev', + doneButtonText: 'Done', + earliestDate: Date.parse('-15years'), //earliest date allowed + latestDate: Date.parse('+15years'), //latest date allowed + rangeSplitter: '-', //string to use between dates in single input + dateFormat: 'm/d/yy', // date formatting. Available formats: http://docs.jquery.com/UI/Datepicker/%24.datepicker.formatDate + closeOnSelect: true, //if a complete selection is made, close the menu + arrows: false, + posX: rangeInput.offset().left, // x position + posY: rangeInput.offset().top + rangeInput.outerHeight(), // y position + appendTo: 'body', + onClose: function(){}, + onOpen: function(){}, + onChange: function(){}, + datepickerOptions: null //object containing native UI datepicker API options + }, settings); + + + //custom datepicker options, extended by options + var datepickerOptions = { + onSelect: function() { + if(rp.find('.ui-daterangepicker-specificDate').is('.ui-state-active')){ + rp.find('.range-end').datepicker('setDate', rp.find('.range-start').datepicker('getDate') ); + } + var rangeA = fDate( rp.find('.range-start').datepicker('getDate') ); + var rangeB = fDate( rp.find('.range-end').datepicker('getDate') ); + + //send back to input or inputs + if(rangeInput.length == 2){ + rangeInput.eq(0).val(rangeA); + rangeInput.eq(1).val(rangeB); + } + else{ + rangeInput.val((rangeA != rangeB) ? rangeA+' '+ options.rangeSplitter +' '+rangeB : rangeA); + } + //if closeOnSelect is true + if(options.closeOnSelect){ + if(!rp.find('li.ui-state-active').is('.ui-daterangepicker-dateRange') && !rp.is(':animated') ){ + hideRP(); + } + } + options.onChange(); + }, + defaultDate: +0 + }; + + //change event fires both when a calendar is updated or a change event on the input is triggered + rangeInput.change(options.onChange); + + + //datepicker options from options + options.datepickerOptions = (settings) ? jQuery.extend(datepickerOptions, settings.datepickerOptions) : datepickerOptions; + + //Capture Dates from input(s) + var inputDateA, inputDateB = Date.parse('today'); + var inputDateAtemp, inputDateBtemp; + if(rangeInput.size() == 2){ + inputDateAtemp = Date.parse( rangeInput.eq(0).val() ); + inputDateBtemp = Date.parse( rangeInput.eq(1).val() ); + if(inputDateAtemp == null){inputDateAtemp = inputDateBtemp;} + if(inputDateBtemp == null){inputDateBtemp = inputDateAtemp;} + } + else { + inputDateAtemp = Date.parse( rangeInput.val().split(options.rangeSplitter)[0] ); + inputDateBtemp = Date.parse( rangeInput.val().split(options.rangeSplitter)[1] ); + if(inputDateBtemp == null){inputDateBtemp = inputDateAtemp;} //if one date, set both + } + if(inputDateAtemp != null){inputDateA = inputDateAtemp;} + if(inputDateBtemp != null){inputDateB = inputDateBtemp;} + + + //build picker and + var rp = jQuery('
    '); + var rpPresets = (function(){ + var ul = jQuery('
      ').appendTo(rp); + + // added for Form Tools + var presetRangeIndex = 0; + jQuery.each(options.presetRanges,function(){ + jQuery('
    • '+ this.text +'
    • ') + .data('dateStart', this.dateStart) + .data('dateEnd', this.dateEnd) + .appendTo(ul); + presetRangeIndex++; + }); + var x=0; + jQuery.each(options.presets, function(key, value) { + jQuery('
    • '+ value +'
    • ') + .appendTo(ul); + x++; + }); + + ul.find('li').hover( + function(){ + jQuery(this).addClass('ui-state-hover'); + }, + function(){ + jQuery(this).removeClass('ui-state-hover'); + }) + .click(function(){ + rp.find('.ui-state-active').removeClass('ui-state-active'); + jQuery(this).addClass('ui-state-active').clickActions(rp, rpPickers, doneBtn); + return false; + }); + return ul; + })(); + + //function to format a date string + function fDate(date){ + if(!date.getDate()){return '';} + var day = date.getDate(); + var month = date.getMonth(); + var year = date.getFullYear(); + month++; // adjust javascript month + var dateFormat = options.dateFormat; + return jQuery.datepicker.formatDate( dateFormat, date ); + } + + + jQuery.fn.restoreDateFromData = function(){ + if(jQuery(this).data('saveDate')){ + jQuery(this).datepicker('setDate', jQuery(this).data('saveDate')).removeData('saveDate'); + } + return this; + } + jQuery.fn.saveDateToData = function(){ + if(!jQuery(this).data('saveDate')){ + jQuery(this).data('saveDate', jQuery(this).datepicker('getDate') ); + } + return this; + } + + //show, hide, or toggle rangepicker + /* + function showRP(){ + if(rp.data('state') == 'closed'){ + rp.data('state', 'open'); + rp.fadeIn(100); + options.onOpen(); + } + }*/ + + function showRP(){ + if(rp.data('state') == 'closed') { + var promX = rangeInput.offset().left; + var promY = rangeInput.offset().top + rangeInput.outerHeight(); + rp.data("posX",promX); // x position + rp.data("posY",promY); // y position + rp.parent().css({left: promX, top: promY}); + rp.data('state','open'); + rp.fadeIn(300); + options.onOpen(); + } + } + + function hideRP(){ + if(rp.data('state') == 'open'){ + rp.data('state', 'closed'); + rp.fadeOut(100); + options.onClose(); + } + } + function toggleRP(){ + if( rp.data('state') == 'open' ){ hideRP(); } + else { showRP(); } + } + rp.data('state', 'closed'); + + //preset menu click events + jQuery.fn.clickActions = function(rp, rpPickers, doneBtn){ + + if(jQuery(this).is('.ui-daterangepicker-specificDate')){ + doneBtn.hide(); + rpPickers.show(); + rp.find('.title-start').text( options.presets.specificDate ); + rp.find('.range-start').restoreDateFromData().show(400); + rp.find('.range-end').restoreDateFromData().hide(400); + setTimeout(function(){doneBtn.fadeIn();}, 400); + } + else if(jQuery(this).is('.ui-daterangepicker-allDatesBefore')){ + doneBtn.hide(); + rpPickers.show(); + rp.find('.title-end').text( options.presets.allDatesBefore ); + rp.find('.range-start').saveDateToData().datepicker('setDate', options.earliestDate).hide(400); + rp.find('.range-end').restoreDateFromData().show(400); + setTimeout(function(){doneBtn.fadeIn();}, 400); + } + else if(jQuery(this).is('.ui-daterangepicker-allDatesAfter')){ + doneBtn.hide(); + rpPickers.show(); + rp.find('.title-start').text( options.presets.allDatesAfter ); + rp.find('.range-start').restoreDateFromData().show(400); + rp.find('.range-end').saveDateToData().datepicker('setDate', options.latestDate).hide(400); + setTimeout(function(){doneBtn.fadeIn();}, 400); + } + else if(jQuery(this).is('.ui-daterangepicker-dateRange')){ + doneBtn.hide(); + rpPickers.show(); + rp.find('.title-start').text(options.rangeStartTitle); + rp.find('.title-end').text(options.rangeEndTitle); + rp.find('.range-start').restoreDateFromData().show(400); + rp.find('.range-end').restoreDateFromData().show(400); + setTimeout(function(){doneBtn.fadeIn();}, 400); + } + else { + //custom date range + doneBtn.hide(); + rp.find('.range-start, .range-end').hide(400, function(){ + rpPickers.hide(); + }); + var dateStart = (typeof jQuery(this).data('dateStart') == 'string') ? Date.parse(jQuery(this).data('dateStart')) : jQuery(this).data('dateStart')(); + var dateEnd = (typeof jQuery(this).data('dateEnd') == 'string') ? Date.parse(jQuery(this).data('dateEnd')) : jQuery(this).data('dateEnd')(); + rp.find('.range-start').datepicker('setDate', dateStart).find('.ui-datepicker-current-day').trigger('click'); + rp.find('.range-end').datepicker('setDate', dateEnd).find('.ui-datepicker-current-day').trigger('click'); + } + + return false; + } + + + //picker divs + var rpPickers = jQuery('
      Start Date
      End Date
      ').appendTo(rp); + rpPickers.find('.range-start, .range-end').datepicker(options.datepickerOptions); + rpPickers.find('.range-start').datepicker('setDate', inputDateA); + rpPickers.find('.range-end').datepicker('setDate', inputDateB); + var doneBtn = jQuery('') + .click(function(){ + rp.find('.ui-datepicker-current-day').trigger('click'); + hideRP(); + }) + .hover( + function(){ + jQuery(this).addClass('ui-state-hover'); + }, + function(){ + jQuery(this).removeClass('ui-state-hover'); + } + ) + .appendTo(rpPickers); + + + + + //inputs toggle rangepicker visibility + jQuery(this).click(function(){ + toggleRP(); + return false; + }); + //hide em all + rpPickers.css('display', 'none').find('.range-start, .range-end, .btnDone').css('display', 'none'); + + //inject rp + jQuery(options.appendTo).append(rp); + + //wrap and position + rp.wrap('
      '); + if(options.posX){ + rp.parent().css('left', options.posX); + } + if(options.posY){ + rp.parent().css('top', options.posY); + } + + //add arrows (only available on one input) + if(options.arrows && rangeInput.size()==1){ + var prevLink = jQuery(''+ options.prevLinkText +''); + var nextLink = jQuery(''+ options.nextLinkText +''); + jQuery(this) + .addClass('ui-rangepicker-input ui-widget-content') + .wrap('
      ') + .before( prevLink ) + .before( nextLink ) + .parent().find('a').click(function(){ + var dateA = rpPickers.find('.range-start').datepicker('getDate'); + var dateB = rpPickers.find('.range-end').datepicker('getDate'); + var diff = Math.abs( new TimeSpan(dateA - dateB).getTotalMilliseconds() ) + 86400000; //difference plus one day + if(jQuery(this).is('.ui-daterangepicker-prev')){ diff = -diff; } + + rpPickers.find('.range-start, .range-end ').each(function(){ + var thisDate = jQuery(this).datepicker( "getDate"); + if(thisDate == null){return false;} + jQuery(this).datepicker( "setDate", thisDate.add({milliseconds: diff}) ).find('.ui-datepicker-current-day').trigger('click'); + }); + + return false; + }) + .hover( + function(){ + jQuery(this).addClass('ui-state-hover'); + }, + function(){ + jQuery(this).removeClass('ui-state-hover'); + }) + ; + } + + + jQuery(document).click(function(){ + if (rp.is(':visible')) { + hideRP(); + } + }); + + rp.click(function(){return false;}).hide(); + return this; +} + + + + + +/** + * Version: 1.0 Alpha-1 + * Build Date: 13-Nov-2007 + * Copyright (c) 2006-2007, Coolite Inc. (http://www.coolite.com/). All rights reserved. + * License: Licensed under The MIT License. See license.txt and http://www.datejs.com/license/. + * Website: http://www.datejs.com/ or http://www.coolite.com/datejs/ + */ +Date.CultureInfo={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\+|after|from)/i,subtract:/^(\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\.?m?\.?|p\.?m?\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\s*(\+|\-)\s*\d\d\d\d?)|gmt)/i,ordinalSuffix:/^\s*(st|nd|rd|th)/i,timeContext:/^\s*(\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; +Date.getMonthNumberFromName=function(name){var n=Date.CultureInfo.monthNames,m=Date.CultureInfo.abbreviatedMonthNames,s=name.toLowerCase();for(var i=0;idate)?1:(this=start.getTime()&&t<=end.getTime();};Date.prototype.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};Date.prototype.addSeconds=function(value){return this.addMilliseconds(value*1000);};Date.prototype.addMinutes=function(value){return this.addMilliseconds(value*60000);};Date.prototype.addHours=function(value){return this.addMilliseconds(value*3600000);};Date.prototype.addDays=function(value){return this.addMilliseconds(value*86400000);};Date.prototype.addWeeks=function(value){return this.addMilliseconds(value*604800000);};Date.prototype.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,this.getDaysInMonth()));return this;};Date.prototype.addYears=function(value){return this.addMonths(value*12);};Date.prototype.add=function(config){if(typeof config=="number"){this._orient=config;return this;} +var x=config;if(x.millisecond||x.milliseconds){this.addMilliseconds(x.millisecond||x.milliseconds);} +if(x.second||x.seconds){this.addSeconds(x.second||x.seconds);} +if(x.minute||x.minutes){this.addMinutes(x.minute||x.minutes);} +if(x.hour||x.hours){this.addHours(x.hour||x.hours);} +if(x.month||x.months){this.addMonths(x.month||x.months);} +if(x.year||x.years){this.addYears(x.year||x.years);} +if(x.day||x.days){this.addDays(x.day||x.days);} +return this;};Date._validate=function(value,min,max,name){if(typeof value!="number"){throw new TypeError(value+" is not a Number.");}else if(valuemax){throw new RangeError(value+" is not a valid value for "+name+".");} +return true;};Date.validateMillisecond=function(n){return Date._validate(n,0,999,"milliseconds");};Date.validateSecond=function(n){return Date._validate(n,0,59,"seconds");};Date.validateMinute=function(n){return Date._validate(n,0,59,"minutes");};Date.validateHour=function(n){return Date._validate(n,0,23,"hours");};Date.validateDay=function(n,year,month){return Date._validate(n,1,Date.getDaysInMonth(year,month),"days");};Date.validateMonth=function(n){return Date._validate(n,0,11,"months");};Date.validateYear=function(n){return Date._validate(n,1,9999,"seconds");};Date.prototype.set=function(config){var x=config;if(!x.millisecond&&x.millisecond!==0){x.millisecond=-1;} +if(!x.second&&x.second!==0){x.second=-1;} +if(!x.minute&&x.minute!==0){x.minute=-1;} +if(!x.hour&&x.hour!==0){x.hour=-1;} +if(!x.day&&x.day!==0){x.day=-1;} +if(!x.month&&x.month!==0){x.month=-1;} +if(!x.year&&x.year!==0){x.year=-1;} +if(x.millisecond!=-1&&Date.validateMillisecond(x.millisecond)){this.addMilliseconds(x.millisecond-this.getMilliseconds());} +if(x.second!=-1&&Date.validateSecond(x.second)){this.addSeconds(x.second-this.getSeconds());} +if(x.minute!=-1&&Date.validateMinute(x.minute)){this.addMinutes(x.minute-this.getMinutes());} +if(x.hour!=-1&&Date.validateHour(x.hour)){this.addHours(x.hour-this.getHours());} +if(x.month!==-1&&Date.validateMonth(x.month)){this.addMonths(x.month-this.getMonth());} +if(x.year!=-1&&Date.validateYear(x.year)){this.addYears(x.year-this.getFullYear());} +if(x.day!=-1&&Date.validateDay(x.day,this.getFullYear(),this.getMonth())){this.addDays(x.day-this.getDate());} +if(x.timezone){this.setTimezone(x.timezone);} +if(x.timezoneOffset){this.setTimezoneOffset(x.timezoneOffset);} +return this;};Date.prototype.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};Date.prototype.isLeapYear=function(){var y=this.getFullYear();return(((y%4===0)&&(y%100!==0))||(y%400===0));};Date.prototype.isWeekday=function(){return!(this.is().sat()||this.is().sun());};Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth());};Date.prototype.moveToFirstDayOfMonth=function(){return this.set({day:1});};Date.prototype.moveToLastDayOfMonth=function(){return this.set({day:this.getDaysInMonth()});};Date.prototype.moveToDayOfWeek=function(day,orient){var diff=(day-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};Date.prototype.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};Date.prototype.getDayOfYear=function(){return Math.floor((this-new Date(this.getFullYear(),0,1))/86400000);};Date.prototype.getWeekOfYear=function(firstDayOfWeek){var y=this.getFullYear(),m=this.getMonth(),d=this.getDate();var dow=firstDayOfWeek||Date.CultureInfo.firstDayOfWeek;var offset=7+1-new Date(y,0,1).getDay();if(offset==8){offset=1;} +var daynum=((Date.UTC(y,m,d,0,0,0)-Date.UTC(y,0,1,0,0,0))/86400000)+1;var w=Math.floor((daynum-offset+7)/7);if(w===dow){y--;var prevOffset=7+1-new Date(y,0,1).getDay();if(prevOffset==2||prevOffset==8){w=53;}else{w=52;}} +return w;};Date.prototype.isDST=function(){return this.toString().match(/(E|C|M|P)(S|D)T/)[2]=="D";};Date.prototype.getTimezone=function(){return Date.getTimezoneAbbreviation(this.getUTCOffset,this.isDST());};Date.prototype.setTimezoneOffset=function(s){var here=this.getTimezoneOffset(),there=Number(s)*-6/10;this.addMinutes(there-here);return this;};Date.prototype.setTimezone=function(s){return this.setTimezoneOffset(Date.getTimezoneOffset(s));};Date.prototype.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r[0]+r.substr(2);}else{r=(n+10000).toString();return"+"+r.substr(1);}};Date.prototype.getDayName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedDayNames[this.getDay()]:Date.CultureInfo.dayNames[this.getDay()];};Date.prototype.getMonthName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedMonthNames[this.getMonth()]:Date.CultureInfo.monthNames[this.getMonth()];};Date.prototype._toString=Date.prototype.toString;Date.prototype.toString=function(format){var self=this;var p=function p(s){return(s.toString().length==1)?"0"+s:s;};return format?format.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?/g,function(format){switch(format){case"hh":return p(self.getHours()<13?self.getHours():(self.getHours()-12));case"h":return self.getHours()<13?self.getHours():(self.getHours()-12);case"HH":return p(self.getHours());case"H":return self.getHours();case"mm":return p(self.getMinutes());case"m":return self.getMinutes();case"ss":return p(self.getSeconds());case"s":return self.getSeconds();case"yyyy":return self.getFullYear();case"yy":return self.getFullYear().toString().substring(2,4);case"dddd":return self.getDayName();case"ddd":return self.getDayName(true);case"dd":return p(self.getDate());case"d":return self.getDate().toString();case"MMMM":return self.getMonthName();case"MMM":return self.getMonthName(true);case"MM":return p((self.getMonth()+1));case"M":return self.getMonth()+1;case"t":return self.getHours()<12?Date.CultureInfo.amDesignator.substring(0,1):Date.CultureInfo.pmDesignator.substring(0,1);case"tt":return self.getHours()<12?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;case"zzz":case"zz":case"z":return"";}}):this._toString();}; +Date.now=function(){return new Date();};Date.today=function(){return Date.now().clearTime();};Date.prototype._orient=+1;Date.prototype.next=function(){this._orient=+1;return this;};Date.prototype.last=Date.prototype.prev=Date.prototype.previous=function(){this._orient=-1;return this;};Date.prototype._is=false;Date.prototype.is=function(){this._is=true;return this;};Number.prototype._dateElement="day";Number.prototype.fromNow=function(){var c={};c[this._dateElement]=this;return Date.now().add(c);};Number.prototype.ago=function(){var c={};c[this._dateElement]=this*-1;return Date.now().add(c);};(function(){var $D=Date.prototype,$N=Number.prototype;var dx=("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),mx=("january february march april may june july august september october november december").split(/\s/),px=("Millisecond Second Minute Hour Day Week Month Year").split(/\s/),de;var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;} +return this.moveToDayOfWeek(n,this._orient);};};for(var i=0;i0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;} +if(!last&&q[1].length===0){last=true;} +if(!last){var qx=[];for(var j=0;j0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}} +if(rx[1].length1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];} +if(args){for(var i=0,px=args.shift();i2)?n:(n+(((n+2000)Date.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.");} +var r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});} +return r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;} +for(var i=0;i t2) ? 1 : 0; + }; + + this.equals = function (time) { + return (this.compareTo(time) === 0); + }; + + this.add = function (time) { + return (time === null) ? this : this.addSeconds(time.getTotalMilliseconds() / 1000); + }; + + this.subtract = function (time) { + return (time === null) ? this : this.addSeconds(-time.getTotalMilliseconds() / 1000); + }; + + this.addDays = function (n) { + return new TimeSpan(this.getTotalMilliseconds() + (n * 86400000)); + }; + + this.addHours = function (n) { + return new TimeSpan(this.getTotalMilliseconds() + (n * 3600000)); + }; + + this.addMinutes = function (n) { + return new TimeSpan(this.getTotalMilliseconds() + (n * 60000)); + }; + + this.addSeconds = function (n) { + return new TimeSpan(this.getTotalMilliseconds() + (n * 1000)); + }; + + this.addMilliseconds = function (n) { + return new TimeSpan(this.getTotalMilliseconds() + n); + }; + + this.get12HourHour = function () { + return (this.getHours() > 12) ? this.getHours() - 12 : (this.getHours() === 0) ? 12 : this.getHours(); + }; + + this.getDesignator = function () { + return (this.getHours() < 12) ? Date.CultureInfo.amDesignator : Date.CultureInfo.pmDesignator; + }; + + this.toString = function (format) { + this._toString = function () { + if (this.getDays() !== null && this.getDays() > 0) { + return this.getDays() + "." + this.getHours() + ":" + this.p(this.getMinutes()) + ":" + this.p(this.getSeconds()); + } + else { + return this.getHours() + ":" + this.p(this.getMinutes()) + ":" + this.p(this.getSeconds()); + } + }; + + this.p = function (s) { + return (s.toString().length < 2) ? "0" + s : s; + }; + + var me = this; + + return format ? format.replace(/dd?|HH?|hh?|mm?|ss?|tt?/g, + function (format) { + switch (format) { + case "d": + return me.getDays(); + case "dd": + return me.p(me.getDays()); + case "H": + return me.getHours(); + case "HH": + return me.p(me.getHours()); + case "h": + return me.get12HourHour(); + case "hh": + return me.p(me.get12HourHour()); + case "m": + return me.getMinutes(); + case "mm": + return me.p(me.getMinutes()); + case "s": + return me.getSeconds(); + case "ss": + return me.p(me.getSeconds()); + case "t": + return ((me.getHours() < 12) ? Date.CultureInfo.amDesignator : Date.CultureInfo.pmDesignator).substring(0, 1); + case "tt": + return (me.getHours() < 12) ? Date.CultureInfo.amDesignator : Date.CultureInfo.pmDesignator; + } + } + ) : this._toString(); + }; + return this; +}; + +/** + * Gets the time of day for this date instances. + * @return {TimeSpan} TimeSpan + */ +Date.prototype.getTimeOfDay = function () { + return new TimeSpan(0, this.getHours(), this.getMinutes(), this.getSeconds(), this.getMilliseconds()); +}; + +/* + * TimePeriod(startDate, endDate); + * TimePeriod(years, months, days, hours, minutes, seconds, milliseconds); + */ +var TimePeriod = function (years, months, days, hours, minutes, seconds, milliseconds) { + var attrs = "years months days hours minutes seconds milliseconds".split(/\s+/); + + var gFn = function (attr) { + return function () { + return this[attr]; + }; + }; + + var sFn = function (attr) { + return function (val) { + this[attr] = val; + return this; + }; + }; + + for (var i = 0; i < attrs.length ; i++) { + var $a = attrs[i], $b = $a.slice(0, 1).toUpperCase() + $a.slice(1); + TimePeriod.prototype[$a] = 0; + TimePeriod.prototype["get" + $b] = gFn($a); + TimePeriod.prototype["set" + $b] = sFn($a); + } + + if (arguments.length == 7) { + this.years = years; + this.months = months; + this.setDays(days); + this.setHours(hours); + this.setMinutes(minutes); + this.setSeconds(seconds); + this.setMilliseconds(milliseconds); + } else if (arguments.length == 2 && arguments[0] instanceof Date && arguments[1] instanceof Date) { + // startDate and endDate as arguments + + var d1 = years.clone(); + var d2 = months.clone(); + + var temp = d1.clone(); + var orient = (d1 > d2) ? -1 : +1; + + this.years = d2.getFullYear() - d1.getFullYear(); + temp.addYears(this.years); + + if (orient == +1) { + if (temp > d2) { + if (this.years !== 0) { + this.years--; + } + } + } else { + if (temp < d2) { + if (this.years !== 0) { + this.years++; + } + } + } + + d1.addYears(this.years); + + if (orient == +1) { + while (d1 < d2 && d1.clone().addDays(Date.getDaysInMonth(d1.getYear(), d1.getMonth()) ) < d2) { + d1.addMonths(1); + this.months++; + } + } + else { + while (d1 > d2 && d1.clone().addDays(-d1.getDaysInMonth()) > d2) { + d1.addMonths(-1); + this.months--; + } + } + + var diff = d2 - d1; + + if (diff !== 0) { + var ts = new TimeSpan(diff); + this.setDays(ts.getDays()); + this.setHours(ts.getHours()); + this.setMinutes(ts.getMinutes()); + this.setSeconds(ts.getSeconds()); + this.setMilliseconds(ts.getMilliseconds()); + } + } + return this; +}; diff --git a/global/scripts/external_form_smart_fill.js b/global/scripts/external_form_smart_fill.js new file mode 100644 index 00000000..42ef8f59 --- /dev/null +++ b/global/scripts/external_form_smart_fill.js @@ -0,0 +1,1299 @@ +/** + * Smart Fill Fields + * ----------------- + * + * This function handles the "Smart Filling" of the form fields in the Add Form process. It works + * by having the form page(s) loaded in hidden iframes in the page, which is then available for parsing. + * For forms that are off-server, copies are made and created locally for the duration of the + * Add Form, allowing the JS access to read them. + */ + +var sf_ns = { + is_busy: true, + smart_filled: false, + itemize_form_fields_complete: false, + itemized_fields: [], // temporary storage for the raw data + fields: [], // final location of "clean" data + current_field_id: null, + current_page_id: "main_field_table", + all_fields_complete: false, + tmp_deleted_field_option_rows: [], + duplicate_fields: {}, + log_files_as_uploaded_page_loaded: false, + manual_file_upload_attempted: false, + refresh_page_dialog: $("
      ") +}; + + +/** + * This function smart fills ALL fields in the form - even for multi-page forms. It relies on the form data + * already having been loaded into sf_ns.itemized_fields. This function cleans up the info and stores the + * fields info that the user is interested in in the sf_ns.fields object. Each field contains two special + * properties: + * status: a flag string, indicating where the field setup is at: "found", "not_found", "duplicate_found", + * "resolved" + * is_complete: a boolean. This is either set automatically to TRUE if there were no problems & no further + * attention is needed on behalf of the user (e.g. with textboxes), or FALSE. For elements like + * radios, checkboxes & dropdowns, once the user approves the dropdown lists this setting is + * set to TRUE. For problems that can't be resolved, the user still has the option to manually + * set it to TRUE, on the understanding that they can always edit the field later. + */ +sf_ns.smart_fill = function () { + if (sf_ns.check_all_pages_loaded() && sf_ns.itemize_form_fields_complete) { + return false; + } + + sf_ns.log_activity(true); + + // now loop through each and every form field and see if we can identify it in the forms + var num_not_found_elements = 0; + + for (var i = 0; i < page_ns.field_ids.length; i++) { + var field_id = page_ns.field_ids[i]; + var field_name = $("#field_" + field_id + "_name").val(); + + sf_ns.fields["f" + field_id] = { + field_name: field_name, + status: null, + is_complete: false + }; + + var found_element_index = null; + for (var j = 0; j < sf_ns.itemized_fields.length; j++) { + if (sf_ns.itemized_fields[j].element_name == field_name || sf_ns.itemized_fields[j].element_name == field_name + "[]") { + found_element_index = j; + break; + } + } + + // no field was found with this field name + if (found_element_index == null) { + sf_ns.fields["f" + field_id].status = "not_found"; + $("#field_" + field_id + "_action").html("" + g.messages["phrase_not_found"] + ""); + $("#field_" + field_id + "_options").html(""); + num_not_found_elements++; + } else { + var curr_field_info = sf_ns.itemized_fields[found_element_index]; + var field_type = curr_field_info.field_type; + sf_ns.fields["f" + field_id].status = "found"; + sf_ns.fields["f" + field_id].field_type = field_type; + + // display the field type dropdown with whatever custom fields are mapped to this raw field type + sf_ns.update_field_type(field_id, field_type); + + switch (field_type) { + case "file": + case "textbox": + case "password": + case "textarea": + sf_ns.fields["f" + field_id].is_complete = true; + $("#field_" + field_id + "_action").html("" + g.messages["word_none"] + ""); + $("#field_" + field_id + "_options").html("" + g.messages["word_na"] + ""); + break; + + // note that these aren't marked as complete - the user needs to manally approve the field option + // display values + case "radio-buttons": + case "checkboxes": + sf_ns.fields["f" + field_id].status = "add_display_values"; + var num_options = curr_field_info.option_list.length; + sf_ns.fields["f" + field_id].option_list = curr_field_info.option_list; + $("#field_" + field_id + "_action").html("" + g.messages["notify_add_display_values"] + ""); + $("#field_" + field_id + "_options").html("" + g.messages["word_options"] + " (" + num_options + ")"); + break; + + case "multi-select": + case "select": + sf_ns.fields["f" + field_id].is_complete = true; + var num_options = curr_field_info.option_list.length; + sf_ns.fields["f" + field_id].option_list = curr_field_info.option_list; + $("#field_" + field_id + "_action").html("" + g.messages["word_none"] + ""); + $("#field_" + field_id + "_options").html("" + g.messages["word_options"] + " (" + num_options + ")"); + break; + + // here, more than one field with this name was found (and it wasn't a series of radio-buttons or checkboxes) + case "mixed": + sf_ns.fields["f" + field_id].status = "multiple_fields_found"; + $("#field_" + field_id + "_action").html("" + g.messages["phrase_multiple_fields_found"] + ""); + $("#field_" + field_id + "_options").html(""); + break; + } + } + } + + sf_ns.log_activity(false); + + // disable the Smart Fill button. This is done because if the user is wanting to re-Smart fill the fields, + // chances are they've tweaked one of their form pages - and in that case, re-Smart filling won't help: the iframe + // contents need to be refreshed, which requires them to have clicked the "Refresh Page" button. + $("#smart_fill_button").attr("disabled", true).removeClass("blue").addClass("light_grey"); + sf_ns.smart_filled = true; + + // if there were more than one fields not found, display the appropriate error message + if (num_not_found_elements > 1) { + var message = (page_ns.num_pages == 1) ? $("#multiple_fields_not_found_single_page_form").html() : $("#multiple_fields_not_found_multi_page_form").html(); + ft.display_message("ft_message", false, message); + } + + sf_ns.check_all_fields_complete(); +} + + +/** + * Called by smart_fill() above. This is called on every field found; it updates the Field Type dropdown + * to show an appropriate list of field types (those mapped to the raw field type) and updates the Field Size + * dropdown to show all appropriate field sizes. + * + * @param integer field_id + * @param string field_type + */ +sf_ns.update_field_type = function (field_id, field_type) { + var found = []; + $.each(page_ns.raw_field_types, function (raw_field_type, field_types) { + if (raw_field_type != field_type) { + return; + } + found = field_types; + }); + + // if none were found, this probably means that the user was messing around with the Custom Fields module + // and deleted the field types. Ignore the row. + if (found.length == 0) { + + } else if (found.length == 1) { + var item = found[0]; + html = "" + + item.field_type_name; + $("#field_" + field_id + "_type_div").removeClass("light_grey").html(html); + + // update the field size column for this field. This assumes that the custom fields module requires the user + // to select at least one field size + sf_ns.create_field_size_dropdown(field_id, item.compatible_field_sizes); + } else { + var field_type_html = ""; + $("#field_" + field_id + "_type_div").html(field_type_html); + + sf_ns.create_field_size_dropdown(field_id, found[0].compatible_field_sizes); + } +} + + +sf_ns.create_field_size_dropdown = function (field_id, compatible_field_sizes) { + var ordered_defaults = ["medium", "small", "tiny"]; + var sizes = compatible_field_sizes.split(","); + if (sizes.length == 1) { + var size_html = "" + + page_ns.field_sizes[sizes[0]]; + $("#field_" + field_id + "_size_div").removeClass("light_grey").html(size_html); + } else { + var default_value = null; + for (var i = 0; i < ordered_defaults.length; i++) { + for (var j = 0; j < sizes.length; j++) { + if (ordered_defaults[i] == sizes[j]) { + default_value = sizes[j]; + break; + } + } + if (default_value) { + break; + } + } + + var size_html = ""; + $("#field_" + field_id + "_size_div").html(size_html); + } +} + + +/** + * Displays any of the JS "pages". + */ +sf_ns.show_page = function (page_id, field_id) { + // reset the temporary page values, just in case + sf_ns.tmp_deleted_field_option_rows = []; + $("#" + sf_ns.current_page_id).fadeOut(400); + + switch (page_id) { + case "review_field_options": + sf_ns.log_activity(true); // closed in sf_ns.load_field_options_page + sf_ns.generate_next_prev_links(field_id, + ["review_field_options_previous_field_link", "review_field_options_previous_field_link2"], + ["review_field_options_next_field_link", "review_field_options_next_field_link2"]); + + setTimeout(function () { + sf_ns.load_field_options_page(field_id) + }, 400); + break; + + case "multiple_fields_found": + sf_ns.generate_next_prev_links(field_id, + ["multiple_fields_found_previous_field_link", "multiple_fields_found_previous_field_link2"], + ["multiple_fields_found_next_field_link", "multiple_fields_found_next_field_link2"]); + + // if the previous page was ALSO a field option page, load the new page content in a timeout so it + // doesn't get set before the old page has fully faded out + setTimeout(function () { + sf_ns.load_multiple_fields_found_page(field_id); + }, 400); + break; + + case "not_found": + sf_ns.generate_next_prev_links(field_id, + ["not_found_previous_field_link", "not_found_previous_field_link2"], + ["not_found_next_field_link", "not_found_next_field_link2"]); + + // if the previous page was ALSO a field option page, load the new page content in a timeout so it + // doesn't get set before the old page has fully faded out + setTimeout(function () { + sf_ns.load_not_found_page(field_id); + }, 400); + break; + + case "main_field_table": + setTimeout(function () { + $("#main_field_table").fadeIn(400); + }, 400); + break; + } + + sf_ns.current_page_id = page_id; + + return false; +} + + +/** + * When the contents of the iframe is fully loaded (and, namely, the content is now available to JS), this + * function is called. It logs the page as loaded. Once all form pages are loaded, it loads all the form + * field information into memory for analyzing by the Smart Fill function. + */ +sf_ns.log_form_page_as_loaded = function (page) { + page_ns["form_" + page + "_loaded"] = true; + + if (sf_ns.check_all_pages_loaded()) { + sf_ns.log_activity(false); + $("#smart_fill_button").attr("disabled", false) + $("#smart_fill_button").addClass("blue"); + $("#smart_fill_button").removeClass("light_grey"); + sf_ns.itemize_form_fields(); + + // if a manual file upload was just attempted, inform the user that they can now try to Smart Fill + // the fields, based on the uploaded files + if (sf_ns.manual_file_upload_attempted) { + ft.display_message("ft_message", 1, g.messages["notify_smart_fill_files_uploaded_successfully"]); + } + } +} + + +/** + * This is called whenever the user explicitly clicks the "Refresh Page" button. It reloads the contents + * of the iframes and empties the. + */ +sf_ns.refresh_page = function () { + ft.create_dialog({ + dialog: sf_ns.refresh_page_dialog, + title: g.messages["phrase_please_confirm"], + popup_type: "warning", + content: g.messages["confirm_refresh_page"], + buttons: [{ + text: g.messages["word_yes"], + click: function () { + sf_ns._confirm_refresh_page(); + $(this).dialog("close"); + } + }, + { + text: g.messages["word_no"], + click: function () { + $(this).dialog("close"); + } + }] + }); +} + +sf_ns._confirm_refresh_page = function () { + for (var i = 0; i < page_ns.field_ids.length; i++) { + var field_id = page_ns.field_ids[i]; + $("#field_" + field_id + "_type").val(""); + $("#field_" + field_id + "_action").html("—"); + $("#field_" + field_id + "_options").html("—"); + } + + // reset all the field values + sf_ns.itemized_fields = []; + sf_ns.itemize_form_fields_complete = false; + sf_ns.fields = []; + sf_ns.current_field_id = null; + sf_ns.current_page_id = "main_field_table"; + sf_ns.all_fields_complete = false; + sf_ns.tmp_deleted_field_option_rows = []; + + // reload the iframe contents + for (var i = 1; i <= page_ns.num_pages; i++) { + page_ns["form_" + i + "_loaded"] = false; + $("#form_" + i + "_iframe").attr("src", $("#form_" + i + "_iframe").attr("src")); + } + + $("#smart_fill_button").attr("disabled", false).addClass("blue").removeClass("light_grey"); +} + + +/** + * This is called whenever starting or ending any potentially lengthy JS operation. It hides/shows the + * ajax loading icon. + */ +sf_ns.log_activity = function (is_busy) { + sf_ns.is_busy = is_busy; + + if (is_busy) { + $("#ajax_activity").show(); + $("#ajax_no_activity").hide(); + } else { + $("#ajax_activity").hide(); + $("#ajax_no_activity").show(); + } +} + + +sf_ns.load_multiple_fields_found_page = function (field_id) { + var field_name = sf_ns.fields["f" + field_id].field_name; + var field_title = $("#field_" + field_id + "_title").html(); + $("#multiple_fields_found_field_title").html(field_title); + setTimeout(function () { + $("#multiple_fields_found").fadeIn(400); + }, 400); + + $("#multiple_fields_found_action_needed").addClass("error"); + var notify_multiple_fields_found = g.messages["notify_multiple_fields_found"].replace(/\{\$field_name\}/, field_name); + $("#multiple_fields_found_action_needed").html("
      " + notify_multiple_fields_found + "
      "); + + // create and populate the table listing the fields found + var row = $(""); + var th1 = $(""); + var th2 = $("" + g.messages["phrase_field_type"] + ""); + var th3 = $("" + g.messages["phrase_form_page"] + ""); + var th4 = $("" + g.messages["word_options"] + ""); + var th5 = $("" + g.messages["word_select"].toUpperCase() + ""); + + row.append(th1); + row.append(th2); + row.append(th3); + row.append(th4); + row.append(th5); + + $("#multiple_fields_found_table tbody").html(row); + + // find the duplicate elements for this field + var field_name_index = null; + for (var i = 0; i < sf_ns.itemized_fields.length; i++) { + if (sf_ns.itemized_fields[i].element_name == field_name) { + field_name_index = i; + } + } + + for (var i = 0; i < sf_ns.itemized_fields[field_name_index].elements.length; i++) { + var field_info = sf_ns.itemized_fields[field_name_index].elements[i]; + var field_type = field_info.element_type; + var page_num = field_info.form_page; + var row_number = i + 1; + + var row = document.createElement("tr"); + var td1 = document.createElement("td"); + td1.setAttribute("width", "50"); + td1.setAttribute("align", "center"); + td1.appendChild(document.createTextNode(row_number)); + + var td2 = document.createElement("td"); + + var field_type_string = ""; + switch (field_type) { + case "textbox": + field_type_string = g.messages["word_textbox"]; + break; + case "password": + field_type_string = g.messages["word_password"]; + break; + case "file": + field_type_string = g.messages["word_file"]; + break; + case "radio-buttons": + field_type_string = g.messages["phrase_radio_buttons"]; + break; + case "checkboxes": + field_type_string = g.messages["word_checkboxes"]; + break; + case "textarea": + field_type_string = g.messages["word_textarea"]; + break; + case "select": + field_type_string = g.messages["word_select"]; + break; + case "multi-select": + field_type_string = g.messages["phrase_multi_select"]; + break; + } + + td2.appendChild(document.createTextNode(field_type_string)); + td2.setAttribute("width", "150"); + $(td2).addClass("pad_left_small"); + + var td3 = document.createElement("td"); + var a = document.createElement("a"); + a.setAttribute("href", page_ns["form_" + page_num + "_url"]); + a.setAttribute("target", "_blank"); + a.appendChild(document.createTextNode(g.messages["word_page"] + " " + page_num)); + td3.appendChild(a); + + var td4 = document.createElement("td"); + $(td4).addClass("pad_left_small"); + + if (field_info.option_list) { + td4.appendChild(document.createTextNode(field_info.option_list.toString().truncate(40))); + } else { + td4.appendChild(document.createTextNode(g.messages["word_na"])); + } + + var td5 = document.createElement("td"); + td5.setAttribute("align", "center"); + var a = document.createElement("a"); + a.setAttribute("href", "#"); + $(a).bind("click", { + field_id: field_id, + info: sf_ns.itemized_fields[field_name_index].elements[i] + }, function (e) { + sf_ns.choose_field(e.data.field_id, e.data.info); + }); + + a.appendChild(document.createTextNode(g.messages["word_select"].toUpperCase())); + td5.appendChild(a); + + row.appendChild(td1); + row.appendChild(td2); + row.appendChild(td3); + row.appendChild(td4); + row.appendChild(td5); + + $("#multiple_fields_found_table tbody").append(row); + } +} + + +sf_ns.load_not_found_page = function (field_id) { + sf_ns.current_field_id = field_id; + + var field_title = $("#field_" + field_id + "_title").html(); + var field_name = sf_ns.fields["f" + field_id].field_name; + $("#not_found_field_type").val(""); + $("#not_found_field_title").html(field_title); + setTimeout(function () { + $("#not_found").fadeIn(400); + }, 400); + + $("#not_found_action_needed").removeClass("notify"); + $("#not_found_action_needed").addClass("error"); + + var notify_smart_fill_field_not_found = g.messages["notify_smart_fill_field_not_found"].replace(/\{\$field_name\}/, field_name); + $("#not_found_action_needed").html("
      " + notify_smart_fill_field_not_found + "
      "); +} + + +/** + * Called on the Not Found page after the user selects a form type. It saves the value & displays the + * appropriate message. + */ +sf_ns.choose_field_type = function () { + var selected_field_type = $("#not_found_field_type").val(); + if (!selected_field_type) { + alert(g.messages["validation_select_field_type"]); + return; + } + + sf_ns.fields["f" + sf_ns.current_field_id].is_complete = true; + sf_ns.fields["f" + sf_ns.current_field_id].status = "resolved"; + sf_ns.fields["f" + sf_ns.current_field_id].field_type = selected_field_type; + + $("#field_" + sf_ns.current_field_id + "_action").html("" + g.messages["word_resolved"] + ""); + $("#field_" + sf_ns.current_field_id + "_options").html(""); + + $("#not_found_action_needed").removeClass("error"); + $("#not_found_action_needed").addClass("notify"); + + if (selected_field_type == "radio-buttons" || selected_field_type == "checkboxes" || + selected_field_type == "select" || selected_field_type == "multi-select") { + $("not_found_action_needed").html("
      " + g.messages["notify_multi_field_updated"] + "
      "); + } else { + $("not_found_action_needed").html("
      " + g.messages["notify_field_updated"] + "
      "); + } + + sf_ns.check_all_fields_complete(); +} + + +/** + * This can be called on the Not Found page, letting a user skip setting it up for now. + */ +sf_ns.skip_field = function () { + sf_ns.fields["f" + sf_ns.current_field_id].is_complete = true; + sf_ns.fields["f" + sf_ns.current_field_id].status = "skipped"; + + $("#field_" + sf_ns.current_field_id + "_action").html("" + g.messages["word_skipped"] + ""); + $("#field_" + sf_ns.current_field_id + "_options").html(""); + + $("#not_found_action_needed").removeClass("error").addClass("notify").html("
      " + g.messages["phrase_field_skipped"] + "
      "); + + sf_ns.check_all_fields_complete(); +} + + +/** + * This is called by the user after clicking on one of the SELECT links on the "Multiple fields found" page. + * It updates the info stored in memory and displays the appropriate message on the page. + */ +sf_ns.choose_field = function (field_id, itemized_field_info) { + sf_ns.fields["f" + field_id].field_type = itemized_field_info.element_type; + $("#field_" + field_id + "_type").val(itemized_field_info.element_type); + + sf_ns.fields["f" + field_id].status = "resolved"; + sf_ns.fields["f" + field_id].is_complete = true; + $("#field_" + field_id + "_action").html("" + g.messages["word_none"] + ""); + + // if this chosen field has an option list, copy that over too + if (itemized_field_info.option_list) { + sf_ns.fields["f" + field_id].option_list = itemized_field_info.option_list; + var num_options = sf_ns.fields["f" + field_id].option_list.length; + $("#field_" + field_id + "_options").html("" + g.messages["word_options"] + " (" + num_options + ")"); + } else { + $("#field_" + field_id + "_options").html("" + g.messages["word_na"] + ""); + } + + $("#multiple_fields_found_action_needed").removeClass("error"); + $("#multiple_fields_found_action_needed").addClass("notify"); + + if (itemized_field_info.option_list) { + var notify_multi_field_selected = g.messages["notify_multi_field_selected"].replace(/\{\$onclick\}/, "return sf_ns.show_page('review_field_options', '" + field_id + "')"); + $("#multiple_fields_found_action_needed").html("
      " + notify_multi_field_selected + "
      "); + } else { + var notify_field_selected = g.messages["notify_field_selected"].replace(/\{\$onclick\}/, "return sf_ns.show_page('main_field_table', null)"); + $("#multiple_fields_found_action_needed").html("
      " + notify_field_selected + "
      "); + } + + sf_ns.check_all_fields_complete(); +} + + +/** + * This populates the Field Option page. This page is used for radio buttons, checkboxes, select and + * multi-select elements to display the option list and notify the user of any actions that need to be + * performed on it. + * + * This was updated a little in 2.1.0 to use a sortable list and to drop the orientation requirement, but + * it still doesn't support optgroups. + * + * @param integer the unique field ID + */ +sf_ns.load_field_options_page = function (field_id) { + sf_ns.current_field_id = field_id; + + // display the appropriate "action needed" message for this item (there can be only one) + sf_ns.display_action_needed_message(field_id, "review_field_options_action_needed"); + + var field_info = sf_ns.fields["f" + field_id]; + var field_type = sf_ns.fields["f" + field_id].field_type; + var field_title = $("#field_" + field_id + "_title").html(); + $("#review_field_options_field_title").html(field_title); + + // clear our any options for previous fields + $(".review_field_options .rows").html(""); + + // now add the custom options + var num_fields = sf_ns.fields["f" + field_id].option_list.length; + for (var i = 0; i < num_fields; i++) { + var option_info = sf_ns.fields["f" + field_id].option_list[i]; + sf_ns.add_field_option({ + default_value: option_info[0], + default_text: option_info[1], + reorder: false + }); + } + + // only bother ordering the rows after adding them all + sortable_ns.reorder_rows($(".review_field_options")); + + // when the last row that has been inserted is now accessible by JS, that means it's visible in the page + $("#review_field_options").fadeIn(400); + sf_ns.log_activity(false); +} + + +sf_ns.set_display_values_from_field_values = function () { + $(".review_field_options .sortable_row").each(function () { + var curr_display_value = $(this).find(".field_option_value").val(); + $(this).find(".field_option_text").val(curr_display_value); + }); +} + + +/** + * This is called on all the pages that focus on an individual field. It generates an appropriate + * message, informing the user of the status of the field. + */ +sf_ns.display_action_needed_message = function (field_id, target_id) { + var field_info = sf_ns.fields["f" + field_id]; + + if (field_info.is_complete) { + $("#" + target_id).removeClass("error notify").html("" + g.messages["word_none"] + ""); + } else { + switch (field_info.status) { + case "add_display_values": + $("#" + target_id).addClass("error margin_bottom_large").html("
      " + g.messages["notify_add_display_values"] + "
      "); + break; + } + } +} + + +/** + * Confirms that all pages are loaded. + */ +sf_ns.check_all_pages_loaded = function () { + var all_pages_loaded = true; + for (var i = 1; i <= page_ns.num_pages; i++) { + if (!page_ns["form_" + i + "_loaded"]) { + all_pages_loaded = false; + } + } + + return all_pages_loaded; +} + + +/** + * Our storage function. This examines all the forms and itemizes all the form fields for examination + * by the Smart Fill function. The field data is organized in the sf_ns.itemized_fields array. + * + * Each index is an object containing information about the field. It has the following properties: + * info.element_name: the name of the form field. Note: for groups of checkboxes using the same + * name and multi-select fields, this value contains the [] suffix (which is + * NOT stored in the FT database - it gets dropped in transit to the server). + * info.elements: an array of all elements with this name attribute. Each element has the + * following info stored: + * element_type: "textbox", "file", "password", "radio-buttons", "checkboxes", + * "multi-select", "select" + * + * option_list: this is filled with option lists for multi-select options. The content is + * slightly different based on the type. + * 1. checkbox groups / radio buttons + * - an array of values (since we won't hazard a guess at the (possibly + * non-existent) label for these field types. + * + * 2. dropdowns / multi-select dropdowns + * - an array of objects. For
      " + g.messages["word_options"] + " (" + num_options + ")"); +} + + +/** + * This function generates and inserts the << previous field + next field >> links at the appropriate + * spots. + * + * @param field_id the current field ID + * @param prev_link_id an array of IDs of the page element(s) where the previous links should be inserted + * @param next_link_id an array of IDs of the page element(s) where the next link should be inserted + */ +sf_ns.generate_next_prev_links = function (field_id, prev_link_ids, next_link_ids) { + var links = sf_ns.get_next_prev_field_ids(field_id); + previous_field_id = links[0]; + next_field_id = links[1]; + + // PREVIOUS link + var prev_link_html = ""; + if (previous_field_id == null) { + prev_link_html = "" + g.messages["phrase_previous_field"] + ""; + } else { + var previous_field_type = sf_ns.fields["f" + previous_field_id].field_type; + + var page = "review_field_options"; + if (previous_field_type == "mixed") { + page = "multiple_fields_found"; + } + if (sf_ns.fields["f" + previous_field_id].status == "not_found") { + page = "not_found"; + } + prev_link_html = "" + g.messages["phrase_previous_field"] + ""; + } + + for (var i = 0; i < prev_link_ids.length; i++) { + $("#" + prev_link_ids[i]).html(prev_link_html); + } + + var next_link_html = ""; + if (next_field_id == null) { + next_link_html = "" + g.messages["phrase_next_field"] + ""; + } else { + var next_field_type = sf_ns.fields["f" + next_field_id].field_type; + var page = "review_field_options"; + if (next_field_type == "mixed") { + page = "multiple_fields_found"; + } + if (sf_ns.fields["f" + next_field_id].status == "not_found") { + page = "not_found"; + } + next_link_html = "" + g.messages["phrase_next_field"] + ""; + } + + for (var i = 0; i < next_link_ids.length; i++) { + $("#" + next_link_ids[i]).html(next_link_html); + } +} + + +/** + * Figures out what IDs should be linked to in the << previous and next >> links. This is "smart" in that + * it only links to fields that need the attention of the user. + */ +sf_ns.get_next_prev_field_ids = function (field_id) { + var previous_field_id = null; + var next_field_id = null; + + var field_index = null; + for (var i = 0; i < page_ns.field_ids.length; i++) { + if (page_ns.field_ids[i] == field_id) { + field_index = i; + } + } + + if (field_index > 0) { + for (var i = field_index - 1; i >= 0; i--) { + var curr_field_id = page_ns.field_ids[i]; + if (!sf_ns.fields["f" + curr_field_id].is_complete) { + previous_field_id = curr_field_id; + break; + } + } + } + + if (field_index < page_ns.field_ids.length - 1) { + for (var i = field_index + 1; i < page_ns.field_ids.length; i++) { + var curr_field_id = page_ns.field_ids[i]; + if (!sf_ns.fields["f" + curr_field_id].is_complete) { + next_field_id = curr_field_id; + break; + } + } + } + + return [previous_field_id, next_field_id]; +} + + +/** + * This function overrides any problems that arose and/or fields that haven't had their action + * resolved. + */ +sf_ns.skip_step = function () { + // loop through all incomplete fields and mark them as complete + for (var i = 0; i < page_ns.field_ids.length; i++) { + var field_id = page_ns.field_ids[i]; + + if (!sf_ns.smart_filled) { + sf_ns.fields["f" + field_id] = { status: "skipped" } + $("#field_" + field_id + "_action").html("" + g.messages["word_skipped"] + ""); + sf_ns.fields["f" + field_id].is_complete = true; + } else if (!sf_ns.fields["f" + field_id].is_complete) { + sf_ns.fields["f" + field_id].status = "skipped"; + $("#field_" + field_id + "_action").html("" + g.messages["word_skipped"] + ""); + sf_ns.fields["f" + field_id].is_complete = true; + } + } + + sf_ns.check_all_fields_complete(); +} + + +/** + * This function can be optionally called by the user if the Smart Fill couldn't read the web pages. It + * uploads copies of the forms to the server. The + */ +sf_ns.validate_upload_files = function (f) { + var error = null; + for (var i = 1; i <= page_ns.num_pages; i++) { + // check all the fields have been entered + if (!f["form_page_" + i].value) { + error = g.messages["validation_smart_fill_upload_all_pages"]; + break; + } + // check it has a .html or .htm file + if (!f["form_page_" + i].value.match(/(\.htm|\.html)$/)) { + error = g.messages["validation_upload_html_files_only"]; + break; + } + } + + if (error != null) { + ft.create_dialog({ + title: g.messages["word_error"], + popup_type: "warning", + content: error, + buttons: [ + { + text: g.messages["word_okay"], + click: function () { + $(this).dialog("close") + } + } + ] + }); + return false; + } + // show the processing icon; this is turned off when the custom onload handler is executed for the + // upload_files_iframe + sf_ns.log_activity(true); + + return true; +} + + +/** + * This is called when the files have been uploaded to the server to be Smart Filled. If all + * went well, the iframe should now contain a JSON string listing the files (and paths). + */ +sf_ns.log_files_as_uploaded = function () { + // this prevents anything being (unnecessarily) fired on the initial page load + if (!sf_ns.log_files_as_uploaded_page_loaded) { + sf_ns.log_files_as_uploaded_page_loaded = true; + return; + } + + sf_ns.log_activity(false); + + var response = $("#upload_files_iframe")[0].contentWindow.document.body.innerHTML; + try { + var info = eval("(" + response + ")"); + + if (info.success) { + // so far so good! Here, the files have been uploaded to the server and should be accessible + // to the JS. Get the file URLs from response and load the iframes. When that's done, a message + // is displayed to the user telling them to try Smart Filling now. Since the + sf_ns.manual_file_upload_attempted = true; + for (var i = 1; i <= page_ns.num_pages; i++) { + page_ns["form_" + i + "_loaded"] = false; + $("#form_" + i + "_iframe").attr("src", info["url_" + i]); + } + } else { + ft.display_message("ft_message", false, info.message); + } + } + // should never occur, but... + catch (err) { + ft.display_message("ft_message", false, g.messages["notify_smart_fill_upload_fields_fail"]); + } +} + + +/** + * Helper function to determine if a field type has been mapped to an option list. This is a little kludgy... + */ +sf_ns.is_option_list_field = function (field_type_id) { + + var is_option_list_field = false; + $.each(page_ns.raw_field_types, function (key, info) { + for (var i = 0; i < info.length; i++) { + if (parseInt(info[i].field_type_id) != parseInt(field_type_id)) { + continue; + } + + if (info[i].raw_field_type_map_multi_select_id !== null) { + is_option_list_field = true; + return false; + } + } + }); + + return is_option_list_field; +} + + +/** + * This function handles the all-important form submit. It sends all the form data to the server via + * an Ajax call, and redirects to the final page when complete. + */ +sf_ns.submit_form = function () { + var params = { + action: "process_smart_fill_contents" + }; + + for (var i = 0; i < page_ns.field_ids.length; i++) { + var field_id = page_ns.field_ids[i]; + var field_info = sf_ns.fields["f" + field_id]; + var field_type_id = $("#field_" + field_id + "_type").val(); + params["field_" + field_id + "_type"] = field_type_id; + params["field_" + field_id + "_size"] = $("#field_" + field_id + "_size").val(); + + if (sf_ns.is_option_list_field(field_type_id)) { + var num_options = field_info.option_list.length; + params["field_" + field_id + "_num_options"] = num_options; + for (var j = 0; j < num_options; j++) { + var row_num = j + 1; + params["field_" + field_id + "_opt" + row_num + "_val"] = field_info.option_list[j][0]; + params["field_" + field_id + "_opt" + row_num + "_txt"] = field_info.option_list[j][1]; + } + } + } + + // display the "please be patient" message + ft.display_message("next_step_message", 1, g.messages["notify_smart_fill_submitted"]); + $("#next_step").attr("disabled", true); + $("#ajax_activity_bottom").show(); + $("#ajax_no_activity_bottom").hide(); + + $.ajax({ + url: g.root_url + "/global/code/actions.php", + type: "POST", + dataType: "json", + data: params, + success: sf_ns.submit_form_response, + error: ft.error_handler + }); +} + + +sf_ns.submit_form_response = function (info) { + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(info)) { + return; + } + + try { + if (info.success == 1) { + window.location = "step6.php"; + } else { + // the most likely reason we'd get here is with very large forms & the SQL query to create the table failed + $("#next_step").attr("disabled", false); + $("#ajax_activity_bottom").hide(); + $("#ajax_no_activity_bottom").show(); + + var message = info.message; + if (info.sql_error) { + message += "

      SQL Error: " + info.sql_error + ""; + } + ft.display_message("next_step_message", false, message); + } + } catch (err) { + ft.display_message("next_step_message", false, info.responseText); + } +} diff --git a/global/scripts/field_types.php b/global/scripts/field_types.php new file mode 100644 index 00000000..bfa1ce12 --- /dev/null +++ b/global/scripts/field_types.php @@ -0,0 +1,13 @@ +").css({ "left": width }) + $(this).before(iframe); + + var form_id = $("#form_id").val(); + var ifrm = $("#placeholder_field_overlay" + counter)[0]; + ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument; + ifrm.document.open(); + ifrm.document.write(''); + ifrm.document.close(); + counter++; + }); + + $(window).resize(function () { + ft.re_init_placeholder_field_overlays(); + }); +}); + + +// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +// the main Form Tools namespace +var ft = { + urls: [], + check_url_dialog: $("
      "), + show_form_dialog: $("
      "), + form_field_placeholders_dialog: $("
      ") +} + + +/** + * Display DHTML page navigation for lists. This function hides/shows the current page - all of + * which exist in the page but are hidden with CSS. It also updates other aspects of the pagination: + * the "viewing X-Y" section, the >> and << links. + * + * The assumption if that the PHP counterpart function with the same name has been called in the + * calling page - that function creates the HTML & JS to interact with this function. + * + * @param integer num_results the total number of results + * @param integer num_per_page the number of listings that should appear per page + * @param integer current_page the current page + */ +ft.display_dhtml_page_nav = function (num_results, num_per_page, current_page) { + total_pages = Math.ceil(num_results / num_per_page); + + // hide/show the appropriate pages + for (var i = 1; i <= total_pages; i++) { + if (current_page == i) { + if (!$("#page_" + i)) { + alert("#page " + i + " doesn't exist"); + } + $("#page_" + i).show(); + $("#nav_page_" + i).html("" + i + " "); + } else { + $("#page_" + i).hide(); + $("#nav_page_" + i).html("" + i + " "); + } + } + + // update the "Viewing X-Y" text + var tmp = (current_page - 1) * num_per_page; + var max_end = tmp + num_per_page; + var end = (max_end > num_results) ? num_results : max_end; + var start = tmp + 1; + + $("#nav_viewing_num_start").html(start); + $("#nav_viewing_num_end").html(end); + + // update the navigation links: << + if (current_page > 1) { + previous_page = current_page - 1; + $("#nav_previous_page").html("« "); + } else { + $("#nav_previous_page").html("«"); + } + + // >> + if (current_page < total_pages) { + next_page = current_page + 1; + $("#nav_next_page").html("» "); + } else { + $("#nav_next_page").html("»"); + } +} + + +/** + * Selects all options in a multi-select dropdown field. + */ +ft.select_all_multi_dropdown_options = function (dd_field_id) { + for (var i = 0, len = $(dd_field_id).options.length; i < len; i++) { + $(dd_field_id).options[i].selected = true; + } +} + + +/** + * Selects all options in a multi-select dropdown field. + */ +ft.unselect_all_multi_dropdown_options = function (dd_field_id) { + for (var i = 0, len = $(dd_field_id).options.length; i < len; i++) { + $(dd_field_id).options[i].selected = false; + } +} + + +/** + * Adds a new option to a select dropdown box. + * + * @param object selectbox the select box object + * @param string text_val the display text of the select box + * @param string value the value of the select box + */ +ft.add_option = function (selectbox, text_val, value) { + var new_option = new Option(text_val, value); + var sel_length = selectbox.length; + selectbox.options[sel_length] = new_option; +} + + +/** + * Deletes an option from a select box. + * + * @param object selectbox the select box element + * @param integer ind the index of the item to remove + */ +ft.delete_option = function (selectbox, ind) { + var sel_length = selectbox.length; + if (sel_length > 0) { + selectbox.options[ind] = null; + } +} + + +/** + * Moves selected option(s) from one select box to another. This generally is used for multi-select + * boxes to transfer options from one to the other. + * + * @param object sel_from the source select box element, it's ID or a jQuery element + * @param object sel_to the target select box element, it's ID or a jQuery element + */ +ft.move_options = function (sel_from, sel_to) { + sel_from = ft.get_dom_el(sel_from); + sel_to = ft.get_dom_el(sel_to); + + var sel_length = sel_from.length; + var sel_texts = []; + var sel_vals = []; + var sel_count = 0; + + // find the selected Options in reverse order and delete them from the 'from' Select + for (var i = sel_length - 1; i >= 0; i--) { + if (sel_from.options[i].selected) { + // if there's no value, that means the lawyer is away. Don't move them. + if (sel_from.options[i].value == "") { + continue; + } + sel_texts[sel_count] = sel_from.options[i].text; + sel_vals[sel_count] = sel_from.options[i].value; + ft.delete_option(sel_from, i); + sel_count++; + } + } + + // add the selected text/values in reverse order. This will add the Options to the 'to' Select + // in the same order as they were in the 'from' Select + for (var i = sel_count - 1; i >= 0; i--) { + ft.add_option(sel_to, sel_texts[i], sel_vals[i]); + } +} + + +/** + * Helper function used to select all options in a multi-select dropdown. This is used on form submit + * to ensure the contents are passed along to the server. + */ +ft.select_all = function (el) { + el = ft.get_dom_el(el); + for (var i = 0; i < el.length; i++) { + el[i].selected = true; + } + return true; +} + + +/** + * This is a helper function introduced after migrating to jQuery. I found that a lot of the functions expected + * either the ID (string) of a node, or the plain DOM node. But now we also introduced jQuery nodes being + * thrown around. So, this function takes any of the three as a param and always returns the appropriate DOM node. + * + * @param mixed string/DOM element/jQuery element + */ +ft.get_dom_el = function (mixed) { + var el = null; + if (typeof mixed == "string") { + el = document.getElementById(mixed); + } else if (typeof mixed.jquery != 'undefined') { + el = mixed[0]; + } else { + el = mixed; + } + return el; +} + + +/** + * Changes the currently displayed tab. Used for "inner-tabs" - tabs within a particular page / tab. + * It also makes an Ajax call to pass the tabset name and current tab values to the server. + */ +ft.change_inner_tab = function (tab, tabset_name) { + $("#" + tabset_name + " .tab_row div").removeClass("selected"); + $("#" + tabset_name + " .tab_row div.inner_tab" + tab).addClass("selected"); + $("#" + tabset_name + " .inner_tab_content>div").hide(); + $("#" + tabset_name + " .inner_tab_content>div.inner_tab_content" + tab).show(); + + // store the value in memory on the server + if (tabset_name) { + var page_url = g.root_url + "/global/code/actions.php"; + $.ajax({ + url: page_url, + data: { action: "remember_inner_tab", tabset: tabset_name, tab: tab }, + type: "POST", + error: ft.error_handler + }); + } + + ft.re_init_placeholder_field_overlays(); + + return false; +} + + +/** + * This should be explicitly called on any page that uses JS inner tabs. It initializes the + * components, adding the appropriate JS events. + */ +ft.init_inner_tabs = function (callback) { + $(".inner_tabset").each(function () { + var tabset_name = $(this).attr("id"); + var row = 1; + $(this).find(".tab_row div").each(function () { + $(this).bind("click", { tab: row, tabset_name: tabset_name }, function (e) { + var tab = e.data.tab; + ft.change_inner_tab(e.data.tab, e.data.tabset_name); + if (callback) { + callback(tab); + } + }); + row++; + }); + }); +} + + +/** + * Can be used whenever you want to open up a form in a dialog window. Just add a show_form class to the link. + */ +ft.init_show_form_links = function () { + $(".show_form").each(function () { + var url = $(this).attr("href"); + $(this).bind("click", { url: url }, function (e) { + ft.create_dialog({ + dialog: ft.show_form_dialog, + title: g.messages["phrase_show_form"], + min_width: 800, + min_height: 500, + content: "", + buttons: [{ + text: g.messages["phrase_open_form_in_new_tab_or_win"], + click: function () { + window.open(url); + $(this).dialog("close"); + } + }, + { + text: g.messages["word_close"], + click: function () { + $(this).dialog("close"); + } + }] + }); + return false; + }); + }); +} + + +/** + * Curious little function. This is a generic helper for adding event handlers to elements. It's passed a list of stuff + * to do: what elements trigger which elements to be hidden/shown/enabled/disabled. A single event can trigger multiple + * actions. The function can be called at any point (even before the DOM is ready). + * + * The hide/show lacks pizazz: it just instantly hides/shows the required sections. But I made the second function + * param an object so down the road it can extended. + * + * @param array an array of objects. Each object has the following structure + * { + * el: the element that is clicked/blurred/whatevered (ID, DOM node or jQuery node) + * targets: an array of element info. Each index is itself an object: + * { + * el: the element to show / hide (ID, DOM node or jQuery node) + * action: "show" / "hide" / "disable" / "enable" (string) + * } + * } + * @param object options. Right now this object may contain a single property: "event" (defaults to click). + */ +ft.click = function (info) { + $(function () { + for (var i = 0, j = info.length; i < j; i++) { + var el = ft.get_dom_el(info[i].el); + + $(el).bind("click", { targets: info[i].targets }, function (e) { + for (var m = 0, n = e.data.targets.length; m < n; m++) { + var curr_target = e.data.targets[m]; + var target_el = ft.get_dom_el(curr_target.el); + if (curr_target.action == "show") { + $(target_el).show(); + } else if (curr_target.action == "hide") { + $(target_el).hide(); + } else if (curr_target.action == "disable") { + $(target_el).attr("disabled", "disabled") + } else if (curr_target.action == "enable") { + $(target_el).attr("disabled", ""); + } + } + }); + } + }); +} + + +/** + * The error handler for the RSV validation library. This overrides the built-in error handler. + */ +function g_rsvErrors (f, errorInfo) { + var errorHTML = ""; + var problemFields = []; + var problemStrings = []; + + for (var i = 0; i < errorInfo.length; i++) { + if ($.inArray(errorInfo[i][1], problemStrings) == -1) { + errorHTML += rsv.errorHTMLItemBullet + errorInfo[i][1] + "
      "; + problemStrings.push(errorInfo[i][1]); + } + if (errorInfo[i][0].length) { + $(errorInfo[i][0][0]).addClass("rsvErrorField"); + if (i == 0) { + try { + $(errorInfo[i][0][0]).focus(); + } catch (e) { + } + } + } else { + $(errorInfo[i][0]).addClass("rsvErrorField"); + if (i == 0) { + try { + $(errorInfo[i][0]).focus(); + } catch (e) { + } + } + } + problemFields.push(errorInfo[i][0]); + } + + if (errorInfo.length > 0) { + ft.display_message(rsv.errorTargetElementId, 0, errorHTML); + return false; + } + + // a hack-like solution to get around the fact that by overriding RSV's built-in error handler + // any defined onCompleteHandler will be ignored + if (rsv.onCompleteHandler) { + return rsv.onCompleteHandler(); + } + + return true; +} + + +/** + * Generic function for displaying a message in the UI, as returned from an Ajax response handler. + * + * There's one weirdness about this function. The main messages.tpl file outputs a div#ft_message + * element that contains an empty 8px high div followed by a div#ft_message_inner element. The idea + * was that it would always provide an 8px-high empty space to pad things out properly on the screen. + * Other message elements don't contain that padding. + * + * This was a dumb decision, made early on. It should be simplified by moving the padding out of the + * element. + * + * @param string target_id the HTML target element + * @param boolean success whether this is an error or a notification: 1 or 0 + * @param string message the message to display + */ +ft.display_message = function (target_id, success, message) { + + // TODO. What on EARTH was I thinking here? I think I may need to lay off the smack. + success = parseInt(success); + var messageClass = (success == 1) ? "notify" : "error"; + + // if target_id is the main "ft_message" id string, we do something a little special + var inner_target_id = (target_id == "ft_message") ? "ft_message_inner" : target_id; + + // remove all old class names and add the new one + var colour; + if (success == 1) { + $("#" + inner_target_id).removeClass("error"); + colour = g.notify_colours[1]; + } else { + $("#" + inner_target_id).removeClass("notify"); + colour = g.error_colours[1]; + } + + if ($("#" + target_id).length) { + $("#" + inner_target_id).addClass(messageClass); + $("#" + inner_target_id).html("
      " + + "X" + + message + "
      "); + $("#" + target_id).show(); + + // add the nice highlight effect for the notification message + $(function () { + $("#" + inner_target_id).effect("highlight", { color: "#" + colour }, 1200); + }); + } +} + + +/** + * With 2.1.0, the "Check URL" functionality is greatly simplified. Instead of opening a separate popup + * where the user can confirm/deny the URL, it opens a dialog window containing the page in an iframe. + * There is no approve / deny functionality - it's left to the discretion of the user. + * + * This function needs to be called on page load. It maps all Check URL buttons to the corresponding + */ +ft.init_check_url_buttons = function () { + $(".check_url").live("click", function () { + var check_url_id = $(this).attr("id"); + var url_field_id = check_url_id.replace(/^check_url__/, ""); + + // if there's no URL, just output a message + var url = $.trim($("#" + url_field_id).val()); + if (url == "") { + ft.display_message("ft_message", false, g.messages["validation_no_url"]); + $("#" + url_field_id).focus(); + return false; + } + + if (!ft.is_valid_url(url)) { + ft.display_message("ft_message", false, g.messages["validation_invalid_url"]); + $("#" + url_field_id).select().focus(); + return false; + } + + ft.create_dialog({ + dialog: ft.check_url_dialog, + title: g.messages["phrase_check_url"] + " - " + url + "", + min_width: 800, + min_height: 500, + content: "", + buttons: [{ + text: g.messages["word_close"], + click: function () { + $(this).dialog("close"); + $("#" + url_field_id).focus(); + } + }] + }); + }); +} + +/** + * This handles all dialog window creation in Form Tools. Dialogs take two forms: + * 1. The markup for the dialog already exists in the page. This is handy for dialogs for adding/editing stuff, + * where by and large the markup is pre-defined + * 2. dialogs that change all the time - like errors & notifications. Here, there's not much point pre-creating + * a hidden element containing the dialog content, since the content is always different. + * + * This function handles both scenarios. + * + * [jQuery settings like to be in camel; Form Tools uses underscore. Hence the oddity of switching here] + */ +ft.create_dialog = function (info) { + var settings = $.extend({ + + // a reference to the dialog window itself. If this isn't included, the dialog is a one-off + dialog: "
      ", + + // there are two ways to create a dialog. Either specify the ID of the element in the page + // containing the markup, or just pass the HTML here. + content: "", + title: "", + auto_open: true, + modal: true, + min_width: 400, + min_height: 100, + buttons: [], + popup_type: null, + open: function () { + }, + close: function () { + $(this).dialog("destroy"); + }, + resize: function () { + }, + resize_stop: function () { + } + }, info); + + // if there's a popup_type specified and we want to add in an icon + if (settings.popup_type) { + var content = ""; + switch (settings.popup_type) { + case "warning": + content += ""; + break; + case "error": + content += ""; + break; + case "info": + content += ""; + break; + } + content += "
      " + settings.content + "
      "; + } else { + content = settings.content; + } + + var dialog_content = ""; + if (settings.content) { + dialog_content = $(settings.dialog).html(content); + } else { + dialog_content = $(settings.dialog); + } + + var final_settings = { + title: settings.title, + modal: settings.modal, + autoOpen: settings.auto_open, + minWidth: settings.min_width, + minHeight: settings.min_height, + maxHeight: settings.max_height, + buttons: settings.buttons, + open: settings.open, + close: settings.close, + resize: settings.resize, + resizeStop: settings.resize_stop + }; + + if (settings.width) { + final_settings.width = settings.width; + } + if (settings.width) { + final_settings.height = settings.height; + } + + return dialog_content.dialog(final_settings); +}; + + +/** + * Simple helper function to show / hide an Ajax loading icon. + */ +ft.dialog_activity_icon = function (popup, action) { + var dialog = $(popup).closest(".ui-dialog"); + if (action == "show") { + if ($(dialog).find(".ajax_activity").length == 0) { + $(dialog).find(".ui-dialog-buttonpane").append("
      "); + } + } else { + $(dialog).find(".ajax_activity").remove(); + } +} + + +/** + * Disables a button (by label) in a dialog window. + */ +ft.dialog_disable_button = function (popup, label) { + $(popup).closest(".ui-dialog").find(".ui-dialog-buttonpane button:contains(" + label + ")").button("disable"); +} + + +/** + * Hides a message on the screen by by blinding it up. + */ +ft.hide_message = function (target_id) { + $("#" + target_id).hide("blind"); + return false; +}; + + +/** + * Used in any pages that need to display the placeholder page. + */ +ft.show_form_field_placeholders_dialog = function (options) { + var dialog = ft.create_dialog({ + title: g.messages["phrase_form_field_placeholders"], + dialog: ft.form_field_placeholders_dialog, + min_width: 800, + min_height: 500, + max_height: 500, + content: "
      ", + open: function () { + $.ajax({ + url: g.root_url + "/global/code/actions.php", + data: { + action: "get_form_field_placeholders", + form_id: options.form_id + }, + dataType: "json", + success: function (result) { + if (result.success) { + $("#placeholders_dialog_content").html(result.html); + } else { + dialog.dialog("close"); + ft.show_logout_dialog(); + } + } + }) + }, + buttons: { + "Close": function () { + $(this).dialog("close"); + } + } + }); +} + +/** + * Checks that a folder has both read and write permissions, and displays the result in an element + * in the page. + */ +ft.test_folder_permissions = function (folder, target_message_id) { + $.ajax({ + url: g.root_url + "/global/code/actions.php", + data: { + action: 'test_folder_permissions', + file_upload_dir: folder, + return_vars: { + target_message_id: target_message_id + } + }, + dataType: "json", + type: "POST", + success: ft.response_handler, + error: ft.error_handler + }); +}; + + +/** + * Checks that a folder and a URL are both referring to the same location. + */ +ft.test_folder_url_match = function (folder, url, target_message_id) { + $.ajax({ + url: g.root_url + "/global/code/actions.php", + data: "file_upload_dir=" + folder + "&file_upload_url=" + url + "&action=test_folder_url_match" + "&return_vals[]=target_message_id:" + target_message_id, + dataType: "json", + type: "POST", + success: ft.response_handler, + error: ft.error_handler + }); +}; + +ft.clear_cache_folder = function (target_message_id) { + $.ajax({ + url: g.root_url + "/global/code/actions.php", + data: "action=clear_cache_folder&return_vals[]=target_message_id:" + target_message_id, + dataType: "json", + type: "POST", + success: ft.response_handler, + error: ft.error_handler + }); +}; + +/** + * Different field types allow different field sizes. It wouldn't make sense for textareas or file fields, for + * instance, to have a storage size of 1 character. This function is called whenever a user changes a field's + * type: it updates the list of available field sizes. Since some fields may only have a single field size, + * the second target_el parameter is the element CONTAINING the field size dropdown. It re-creates the + * dropdown (or single field size string) in that element. + * + * If the new available field sizes contain the currently selected field size, it just sets the new size + * to the same value. + * + * @param node the field type dropdown that the user just changed + * @param string the ID of the element where the new field size dropdown will be updated + * @param object options assorted, configurable options + */ +ft.update_field_size_dropdown = function (el, target_el, options) { + var field_type_id = $(el).val(); + + var opts = $.extend({ + name: null, + id: null, + selected: null, + html_class: null, + field_type_size_list: page_ns.field_types["field_type_" + field_type_id], + field_size_labels: page_ns.field_sizes + }, options); + + var field_type_sizes = opts.field_type_size_list.split(","); + var dd_options = []; + for (var i = 0; i < field_type_sizes.length; i++) { + dd_options.push({ + value: field_type_sizes[i], + text: opts.field_size_labels[field_type_sizes[i]], + selected: (field_type_sizes[i] == opts.selected) ? " selected" : "" + }); + } + + var html = ""; + + // if there are no options, the admin made a boo-boo and didn't assign any field sizes to the field type + if (dd_options.length == 0) { + + } else if (dd_options.length == 1) { + html = "" + dd_options[0].text; + } else { + html = "" + dd_options[i].text + "\n"; + } + html += ""; + } + + $(target_el).html(html); +} + + +/** + * This is the main, generic Ajax response handler for all successful (i.e. successfully processed) Ajax + * calls. This function expects the Ajax function to have passed a "target_message_id" parameter to the + * actions.php script - which is passed back to here - identifying the page element ID to insert the + * error/success message. + */ +ft.response_handler = function (data) { + + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(data)) { + return; + } + + ft.display_message(data.target_message_id, data.success, data.message); +} + + +/** + * TODO expand this to work with dialogs. It should close all open dialogs and hide their loading + * images, if shown. + */ +ft.error_handler = function (xml_http_request, text_status, error_thrown) { + ft.display_message("ft_message", false, "Error: " + error_thrown); +} + + +/** + * Called when the administrator clicks on the "Update" link - it gets the upgrade info form + * from the server, inserts it into the page and submits it. + */ +ft.check_updates = function () { + if ($("#upgrade_form").length) { + $("#upgrade_form").submit(); + } else { + $.ajax({ + url: g.root_url + "/global/code/actions.php", + data: "action=get_upgrade_form_html", + dataType: "html", + type: "POST", + success: ft.embed_and_submit_upgrade_form, + + // bit of an assumption here: it assumes that every page has the default ft_message notification + // element. If it doesn't, the error just won't show + error: ft.error_handler + }); + } + + return false; +} + + +ft.embed_and_submit_upgrade_form = function (data) { + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(data)) { + return; + } + + $("body").append(data); + ft.queue.push([ + function () { + $("#upgrade_form").submit(); + }, + function () { + return ($("#upgrade_form").length > 0); + } + ]); + ft.process_queue(); +} + + +/** + * Helper function to toggle between any number of classes that can be applied to a single element + * at one time. The idea is that often an element needs a different class at a different time, e.g. + * "red", "blue", green" but cannot have more than one at once. This function ensures it's correct. + * + * @param object el a node + * @param string class the class name to apply + * @param array all_classes. All class that may + */ +ft.toggle_unique_class = function (el, new_class, all_classes) { + for (var i = 0; i < all_classes.length; i++) { + if ($(el).hasClass(all_classes[i])) { + $(el).removeClass(all_classes[i]); + } + } + $(el).addClass(new_class); +} + + +/** + * This function is used to bundle together a sequential group of nodes into a Document Fragment + * so it may be inserted into the DOM with a single action. The node_list param may be a mixed + * array of jQuery nodes or plain DOM nodes. + * + * @param array node_list + * @return node a document fragment + */ +ft.group_nodes = function (node_list) { + var fragment = document.createDocumentFragment(); + for (var i = 0, j = node_list.length; i < j; i++) { + fragment.appendChild(node_list[i][0]); + } + return fragment; +} + +/** + * A generic JS queuing function. For purpose and usage, see post: + * http://www.benjaminkeen.com/?p=136 + * + * [0] : code to execute - (function) + * [1] : boolean test to determine completion - (function) + * [2] : interval ID (managed internally by script) - (integer) + */ +ft.queue = []; +ft.process_queue = function () { + if (!ft.queue.length) + return; + + // if this code hasn't begun being executed, start 'er up + if (!ft.queue[0][2]) { + ft.queue[0][0](); + timeout_id = window.setInterval("ft.check_queue_item_complete()", 50); + ft.queue[0][2] = timeout_id; + } +} + +ft.check_queue_item_complete = function () { + if (ft.queue[0][1]()) { + window.clearInterval(ft.queue[0][2]); + ft.queue.shift(); + ft.process_queue(); + } +} + +ft.is_valid_url = function (url) { + var RegExp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ + return RegExp.test(url); +} + + +ft.check_ajax_response_permissions = function (json) { + try { + json = JSON.parse(json); + if (typeof json.ft_logout != undefined && json.ft_logout == 1) { + ft.show_logout_dialog(); + return false; + } + } catch (e) { + } + + return true; +}; + + +/** + * Helper function to find the value for a field name, serialized with jQuery serializeArray(). + * + * @param array arr each index is a hash with two keys: name and value + * @param string name + */ +ft._extract_array_val = function (arr, name) { + var value = ""; + for (var i = 0, j = arr.length; i < j; i++) { + if (arr[i].name == name) { + value = arr[i].value; + break; + } + } + return value; +}; + +ft.re_init_placeholder_field_overlays = function () { + $(".lang_placeholder_field").each(function () { + var pos = $(this).offset(); + var width = pos.left + $(this).width(); + $(this).parent().find(".placeholder_field_overlay").css({ "left": width }) + }); +}; + +ft.show_logout_dialog = function () { + ft.create_dialog({ + title: "Sessions expired", + content: "Sorry, your session has expired. Please click the button below to log back in.", + popup_type: "error", + buttons: [ + { + text: "Return to login screen", + click: function () { + window.location = g.root_url; + } + } + ] + }); +}; diff --git a/global/scripts/index.html b/global/scripts/index.html new file mode 100644 index 00000000..94fe28ac --- /dev/null +++ b/global/scripts/index.html @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/global/scripts/jquery-ui-timepicker-addon.js b/global/scripts/jquery-ui-timepicker-addon.js new file mode 100644 index 00000000..3afc894e --- /dev/null +++ b/global/scripts/jquery-ui-timepicker-addon.js @@ -0,0 +1,911 @@ +/* +* jQuery timepicker addon +* By: Trent Richardson [http://trentrichardson.com] +* Version 0.9.3 +* Last Modified: 02/05/2011 +* +* Copyright 2010 Trent Richardson +* Dual licensed under the MIT and GPL licenses. +* http://trentrichardson.com/Impromptu/GPL-LICENSE.txt +* http://trentrichardson.com/Impromptu/MIT-LICENSE.txt +* +* HERES THE CSS: +* .ui-timepicker-div .ui-widget-header{ margin-bottom: 8px; } +* .ui-timepicker-div dl{ text-align: left; } +* .ui-timepicker-div dl dt{ height: 25px; } +* .ui-timepicker-div dl dd{ margin: -25px 0 10px 65px; } +* .ui-timepicker-div td { font-size: 90%; } +*/ + +(function($) { + +$.extend($.ui, { timepicker: { version: "0.9.3" } }); + +/* Time picker manager. + Use the singleton instance of this class, $.timepicker, to interact with the time picker. + Settings for (groups of) time pickers are maintained in an instance object, + allowing multiple different settings on the same page. */ + +function Timepicker() { + this.regional = []; // Available regional settings, indexed by language code + this.regional[''] = { // Default regional settings + currentText: 'Now', + closeText: 'Done', + ampm: false, + timeFormat: 'hh:mm tt', + timeOnlyTitle: 'Choose Time', + timeText: 'Time', + hourText: 'Hour', + minuteText: 'Minute', + secondText: 'Second' + }; + this._defaults = { // Global defaults for all the datetime picker instances + showButtonPanel: true, + timeOnly: false, + showHour: true, + showMinute: true, + showSecond: false, + showTime: true, + stepHour: 0.05, + stepMinute: 0.05, + stepSecond: 0.05, + hour: 0, + minute: 0, + second: 0, + hourMin: 0, + minuteMin: 0, + secondMin: 0, + hourMax: 23, + minuteMax: 59, + secondMax: 59, + minDateTime: null, + maxDateTime: null, + hourGrid: 0, + minuteGrid: 0, + secondGrid: 0, + alwaysSetTime: true, + separator: ' ', + altFieldTimeOnly: true, + showTimepicker: true + }; + $.extend(this._defaults, this.regional['']); +} + +$.extend(Timepicker.prototype, { + $input: null, + $altInput: null, + $timeObj: null, + inst: null, + hour_slider: null, + minute_slider: null, + second_slider: null, + hour: 0, + minute: 0, + second: 0, + hourMinOriginal: null, + minuteMinOriginal: null, + secondMinOriginal: null, + hourMaxOriginal: null, + minuteMaxOriginal: null, + secondMaxOriginal: null, + ampm: '', + formattedDate: '', + formattedTime: '', + formattedDateTime: '', + + /* Override the default settings for all instances of the time picker. + @param settings object - the new settings to use as defaults (anonymous object) + @return the manager object */ + setDefaults: function(settings) { + extendRemove(this._defaults, settings || {}); + return this; + }, + + //######################################################################## + // Create a new Timepicker instance + //######################################################################## + _newInst: function($input, o) { + var tp_inst = new Timepicker(), + inlineSettings = {}; + + tp_inst.hour = tp_inst._defaults.hour; + tp_inst.minute = tp_inst._defaults.minute; + tp_inst.second = tp_inst._defaults.second; + tp_inst.ampm = ''; + tp_inst.$input = $input; + + + for (var attrName in this._defaults) { + var attrValue = $input.attr('time:' + attrName); + if (attrValue) { + try { + inlineSettings[attrName] = eval(attrValue); + } catch (err) { + inlineSettings[attrName] = attrValue; + } + } + } + tp_inst._defaults = $.extend({}, this._defaults, inlineSettings, o, { + beforeShow: function(input, dp_inst) { + if ($.isFunction(o.beforeShow)) + o.beforeShow(input, dp_inst, tp_inst); + }, + onChangeMonthYear: function(year, month, dp_inst) { + // Update the time as well : this prevents the time from disappearing from the $input field. + tp_inst._updateDateTime(dp_inst); + if ($.isFunction(o.onChangeMonthYear)) + o.onChangeMonthYear(year, month, dp_inst, tp_inst); + }, + onClose: function(dateText, dp_inst) { + if (tp_inst.timeDefined === true && $input.val() != '') + tp_inst._updateDateTime(dp_inst); + if ($.isFunction(o.onClose)) + o.onClose(dateText, dp_inst, tp_inst); + }, + timepicker: tp_inst // add timepicker as a property of datepicker: $.datepicker._get(dp_inst, 'timepicker'); + }); + + if (o.altField) + tp_inst.$altInput = $(o.altField) + .css({ cursor: 'pointer' }) + .focus(function(){ $input.trigger("focus"); }); + + // datepicker needs minDate/maxDate, timepicker needs minDateTime/maxDateTime.. + if(tp_inst._defaults.minDate !== undefined && tp_inst._defaults.minDate instanceof Date) + tp_inst._defaults.minDateTime = new Date(tp_inst._defaults.minDate.getTime()); + if(tp_inst._defaults.minDateTime !== undefined && tp_inst._defaults.minDateTime instanceof Date) + tp_inst._defaults.minDate = new Date(tp_inst._defaults.minDateTime.getTime()); + if(tp_inst._defaults.maxDate !== undefined && tp_inst._defaults.maxDate instanceof Date) + tp_inst._defaults.maxDateTime = new Date(tp_inst._defaults.maxDate.getTime()); + if(tp_inst._defaults.maxDateTime !== undefined && tp_inst._defaults.maxDateTime instanceof Date) + tp_inst._defaults.maxDate = new Date(tp_inst._defaults.maxDateTime.getTime()); + + return tp_inst; + }, + + //######################################################################## + // add our sliders to the calendar + //######################################################################## + _addTimePicker: function(dp_inst) { + var currDT = (this.$altInput && this._defaults.altFieldTimeOnly) ? + this.$input.val() + ' ' + this.$altInput.val() : + this.$input.val(); + + this.timeDefined = this._parseTime(currDT); + this._limitMinMaxDateTime(dp_inst, false); + this._injectTimePicker(); + }, + + //######################################################################## + // parse the time string from input value or _setTime + //######################################################################## + _parseTime: function(timeString, withDate) { + var regstr = this._defaults.timeFormat.toString() + .replace(/h{1,2}/ig, '(\\d?\\d)') + .replace(/m{1,2}/ig, '(\\d?\\d)') + .replace(/s{1,2}/ig, '(\\d?\\d)') + .replace(/t{1,2}/ig, '(am|pm|a|p)?') + .replace(/\s/g, '\\s?') + '$', + order = this._getFormatPositions(), + treg; + + if (!this.inst) this.inst = $.datepicker._getInst(this.$input[0]); + + if (withDate || !this._defaults.timeOnly) { + // the time should come after x number of characters and a space. + // x = at least the length of text specified by the date format + var dp_dateFormat = $.datepicker._get(this.inst, 'dateFormat'); + regstr = '.{' + dp_dateFormat.length + ',}' + this._defaults.separator + regstr; + } + + treg = timeString.match(new RegExp(regstr, 'i')); + + if (treg) { + if (order.t !== -1) + this.ampm = ((treg[order.t] === undefined || treg[order.t].length === 0) ? + '' : + (treg[order.t].charAt(0).toUpperCase() == 'A') ? 'AM' : 'PM').toUpperCase(); + + if (order.h !== -1) { + if (this.ampm == 'AM' && treg[order.h] == '12') + this.hour = 0; // 12am = 0 hour + else if (this.ampm == 'PM' && treg[order.h] != '12') + this.hour = (parseFloat(treg[order.h]) + 12).toFixed(0); // 12pm = 12 hour, any other pm = hour + 12 + else this.hour = Number(treg[order.h]); + } + + if (order.m !== -1) this.minute = Number(treg[order.m]); + if (order.s !== -1) this.second = Number(treg[order.s]); + + return true; + + } + return false; + }, + + //######################################################################## + // figure out position of time elements.. cause js cant do named captures + //######################################################################## + _getFormatPositions: function() { + var finds = this._defaults.timeFormat.toLowerCase().match(/(h{1,2}|m{1,2}|s{1,2}|t{1,2})/g), + orders = { h: -1, m: -1, s: -1, t: -1 }; + + if (finds) + for (var i = 0; i < finds.length; i++) + if (orders[finds[i].toString().charAt(0)] == -1) + orders[finds[i].toString().charAt(0)] = i + 1; + + return orders; + }, + + //######################################################################## + // generate and inject html for timepicker into ui datepicker + //######################################################################## + _injectTimePicker: function() { + var $dp = this.inst.dpDiv, + o = this._defaults, + tp_inst = this, + // Added by Peter Medeiros: + // - Figure out what the hour/minute/second max should be based on the step values. + // - Example: if stepMinute is 15, then minMax is 45. + hourMax = (o.hourMax - (o.hourMax % o.stepHour)).toFixed(0), + minMax = (o.minuteMax - (o.minuteMax % o.stepMinute)).toFixed(0), + secMax = (o.secondMax - (o.secondMax % o.stepSecond)).toFixed(0), + dp_id = this.inst.id.toString().replace(/([^A-Za-z0-9_])/g, ''); + + // Prevent displaying twice + //if ($dp.find("div#ui-timepicker-div-"+ dp_id).length === 0) { + if ($dp.find("div#ui-timepicker-div-"+ dp_id).length === 0 && o.showTimepicker) { + var noDisplay = ' style="display:none;"', + html = '
      ' + + '
      ' + o.timeText + '
      ' + + '
      ' + + '
      ' + o.hourText + '
      ', + hourGridSize = 0, + minuteGridSize = 0, + secondGridSize = 0, + size; + + if (o.showHour && o.hourGrid > 0) { + html += '
      ' + + '
      ' + + '
      '; + + for (var h = o.hourMin; h < hourMax; h += o.hourGrid) { + hourGridSize++; + var tmph = (o.ampm && h > 12) ? h-12 : h; + if (tmph < 10) tmph = '0' + tmph; + if (o.ampm) { + if (h == 0) tmph = 12 +'a'; + else if (h < 12) tmph += 'a'; + else tmph += 'p'; + } + html += ''; + } + + html += '
      ' + tmph + '
      ' + + '
      '; + } else html += '
      '; + + html += '
      ' + o.minuteText + '
      '; + + if (o.showMinute && o.minuteGrid > 0) { + html += '
      ' + + '
      ' + + '
      '; + + for (var m = o.minuteMin; m < minMax; m += o.minuteGrid) { + minuteGridSize++; + html += ''; + } + + html += '
      ' + ((m < 10) ? '0' : '') + m + '
      ' + + '
      '; + } else html += '
      '; + + html += '
      ' + o.secondText + '
      '; + + if (o.showSecond && o.secondGrid > 0) { + html += '
      ' + + '
      ' + + '
      '; + + for (var s = o.secondMin; s < secMax; s += o.secondGrid) { + secondGridSize++; + html += ''; + } + + html += '
      ' + ((s < 10) ? '0' : '') + s + '
      ' + + '
      '; + } else html += '
      '; + + html += '
      '; + $tp = $(html); + + // if we only want time picker... + if (o.timeOnly === true) { + $tp.prepend( + '
      ' + + '
      ' + o.timeOnlyTitle + '
      ' + + '
      '); + $dp.find('.ui-datepicker-header, .ui-datepicker-calendar').hide(); + } + + this.hour_slider = $tp.find('#ui_tpicker_hour_'+ dp_id).slider({ + orientation: "horizontal", + value: this.hour, + min: o.hourMin, + max: hourMax, + step: o.stepHour, + slide: function(event, ui) { + tp_inst.hour_slider.slider( "option", "value", ui.value); + tp_inst._onTimeChange(); + } + }); + + // Updated by Peter Medeiros: + // - Pass in Event and UI instance into slide function + this.minute_slider = $tp.find('#ui_tpicker_minute_'+ dp_id).slider({ + orientation: "horizontal", + value: this.minute, + min: o.minuteMin, + max: minMax, + step: o.stepMinute, + slide: function(event, ui) { + // update the global minute slider instance value with the current slider value + tp_inst.minute_slider.slider( "option", "value", ui.value); + tp_inst._onTimeChange(); + } + }); + + this.second_slider = $tp.find('#ui_tpicker_second_'+ dp_id).slider({ + orientation: "horizontal", + value: this.second, + min: o.secondMin, + max: secMax, + step: o.stepSecond, + slide: function(event, ui) { + tp_inst.second_slider.slider( "option", "value", ui.value); + tp_inst._onTimeChange(); + } + }); + + // Add grid functionality + if (o.showHour && o.hourGrid > 0) { + size = 100 * hourGridSize * o.hourGrid / (hourMax - o.hourMin); + + $tp.find(".ui_tpicker_hour table").css({ + width: size + "%", + marginLeft: (size / (-2 * hourGridSize)) + "%", + borderCollapse: 'collapse' + }).find("td").each( function(index) { + $(this).click(function() { + var h = $(this).html(); + if(o.ampm) { + var ap = h.substring(2).toLowerCase(), + aph = parseInt(h.substring(0,2)); + if (ap == 'a') { + if (aph == 12) h = 0; + else h = aph; + } else if (aph == 12) h = 12; + else h = aph + 12; + } + tp_inst.hour_slider.slider("option", "value", h); + tp_inst._onTimeChange(); + }).css({ + cursor: 'pointer', + width: (100 / hourGridSize) + '%', + textAlign: 'center', + overflow: 'hidden' + }); + }); + } + + if (o.showMinute && o.minuteGrid > 0) { + size = 100 * minuteGridSize * o.minuteGrid / (minMax - o.minuteMin); + $tp.find(".ui_tpicker_minute table").css({ + width: size + "%", + marginLeft: (size / (-2 * minuteGridSize)) + "%", + borderCollapse: 'collapse' + }).find("td").each(function(index) { + $(this).click(function() { + tp_inst.minute_slider.slider("option", "value", $(this).html()); + tp_inst._onTimeChange(); + }).css({ + cursor: 'pointer', + width: (100 / minuteGridSize) + '%', + textAlign: 'center', + overflow: 'hidden' + }); + }); + } + + if (o.showSecond && o.secondGrid > 0) { + $tp.find(".ui_tpicker_second table").css({ + width: size + "%", + marginLeft: (size / (-2 * secondGridSize)) + "%", + borderCollapse: 'collapse' + }).find("td").each(function(index) { + $(this).click(function() { + tp_inst.second_slider.slider("option", "value", $(this).html()); + tp_inst._onTimeChange(); + }).css({ + cursor: 'pointer', + width: (100 / secondGridSize) + '%', + textAlign: 'center', + overflow: 'hidden' + }); + }); + } + + var $buttonPanel = $dp.find('.ui-datepicker-buttonpane'); + if ($buttonPanel.length) $buttonPanel.before($tp); + else $dp.append($tp); + + this.$timeObj = $('#ui_tpicker_time_'+ dp_id); + + if (this.inst !== null) { + var timeDefined = this.timeDefined; + this._onTimeChange(); + this.timeDefined = timeDefined; + } + + //Emulate datepicker onSelect behavior. Call on slidestop. + var onSelect = tp_inst._defaults['onSelect']; + if (onSelect) { + var inputEl = tp_inst.$input ? tp_inst.$input[0] : null; + var onSelectHandler = function() { + onSelect.apply(inputEl, [tp_inst.formattedDateTime, tp_inst]); // trigger custom callback*/ + } + this.hour_slider.bind('slidestop',onSelectHandler); + this.minute_slider.bind('slidestop',onSelectHandler); + this.second_slider.bind('slidestop',onSelectHandler); + } + } + }, + + //######################################################################## + // This function tries to limit the ability to go outside the + // min/max date range + //######################################################################## + _limitMinMaxDateTime: function(dp_inst, adjustSliders){ + var o = this._defaults, + dp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay), + tp_date = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay, this.hour, this.minute, this.second, 0); + + if(this._defaults.minDateTime !== null && dp_date){ + var minDateTime = this._defaults.minDateTime, + minDateTimeDate = new Date(minDateTime.getFullYear(), minDateTime.getMonth(), minDateTime.getDate(), 0, 0, 0, 0); + + if(this.hourMinOriginal === null || this.minuteMinOriginal === null || this.secondMinOriginal === null){ + this.hourMinOriginal = o.hourMin; + this.minuteMinOriginal = o.minuteMin; + this.secondMinOriginal = o.secondMin; + } + + if(minDateTimeDate.getTime() == dp_date.getTime()){ + this._defaults.hourMin = minDateTime.getHours(); + this._defaults.minuteMin = minDateTime.getMinutes(); + this._defaults.secondMin = minDateTime.getSeconds(); + + if(this.hour < this._defaults.hourMin) this.hour = this._defaults.hourMin; + if(this.minute < this._defaults.minuteMin) this.minute = this._defaults.minuteMin; + if(this.second < this._defaults.secondMin) this.second = this._defaults.secondMin; + }else{ + this._defaults.hourMin = this.hourMinOriginal; + this._defaults.minuteMin = this.minuteMinOriginal; + this._defaults.secondMin = this.secondMinOriginal; + } + } + + if(this._defaults.maxDateTime !== null && dp_date){ + var maxDateTime = this._defaults.maxDateTime, + maxDateTimeDate = new Date(maxDateTime.getFullYear(), maxDateTime.getMonth(), maxDateTime.getDate(), 0, 0, 0, 0); + + if(this.hourMaxOriginal === null || this.minuteMaxOriginal === null || this.secondMaxOriginal === null){ + this.hourMaxOriginal = o.hourMax; + this.minuteMaxOriginal = o.minuteMax; + this.secondMaxOriginal = o.secondMax; + } + + if(maxDateTimeDate.getTime() == dp_date.getTime()){ + this._defaults.hourMax = maxDateTime.getHours(); + this._defaults.minuteMax = maxDateTime.getMinutes(); + this._defaults.secondMax = maxDateTime.getSeconds(); + + if(this.hour > this._defaults.hourMax){ this.hour = this._defaults.hourMax; } + if(this.minute > this._defaults.minuteMax) this.minute = this._defaults.minuteMax; + if(this.second > this._defaults.secondMax) this.second = this._defaults.secondMax; + }else{ + this._defaults.hourMax = this.hourMaxOriginal; + this._defaults.minuteMax = this.minuteMaxOriginal; + this._defaults.secondMax = this.secondMaxOriginal; + } + } + + if(adjustSliders !== undefined && adjustSliders === true){ + this.hour_slider.slider("option", { min: this._defaults.hourMin, max: this._defaults.hourMax }).slider('value', this.hour); + this.minute_slider.slider("option", { min: this._defaults.minuteMin, max: this._defaults.minuteMax }).slider('value', this.minute); + this.second_slider.slider("option", { min: this._defaults.secondMin, max: this._defaults.secondMax }).slider('value', this.second); + } + + }, + + //######################################################################## + // when a slider moves, set the internal time... + // on time change is also called when the time is updated in the text field + //######################################################################## + _onTimeChange: function() { + var hour = (this.hour_slider) ? this.hour_slider.slider('value') : false, + minute = (this.minute_slider) ? this.minute_slider.slider('value') : false, + second = (this.second_slider) ? this.second_slider.slider('value') : false; + + if (hour !== false) hour = parseInt(hour,10); + if (minute !== false) minute = parseInt(minute,10); + if (second !== false) second = parseInt(second,10); + + var ampm = (hour < 12) ? 'AM' : 'PM'; + + // If the update was done in the input field, the input field should not be updated. + // If the update was done using the sliders, update the input field. + var hasChanged = (hour != this.hour || minute != this.minute || second != this.second || (this.ampm.length > 0 && this.ampm != ampm)); + + if (hasChanged) { + + if (hour !== false)this.hour = hour; + if (minute !== false) this.minute = minute; + if (second !== false) this.second = second; + } + if (this._defaults.ampm) this.ampm = ampm; + + this._formatTime(); + if (this.$timeObj) this.$timeObj.text(this.formattedTime); + this.timeDefined = true; + if (hasChanged) this._updateDateTime(); + }, + + //######################################################################## + // format the time all pretty... + //######################################################################## + _formatTime: function(time, format, ampm) { + if (ampm == undefined) ampm = this._defaults.ampm; + time = time || { hour: this.hour, minute: this.minute, second: this.second, ampm: this.ampm }; + var tmptime = format || this._defaults.timeFormat.toString(); + + if (ampm) { + var hour12 = ((time.ampm == 'AM') ? (time.hour) : (time.hour % 12)); + hour12 = (Number(hour12) === 0) ? 12 : hour12; + tmptime = tmptime.toString() + .replace(/hh/g, ((hour12 < 10) ? '0' : '') + hour12) + .replace(/h/g, hour12) + .replace(/mm/g, ((time.minute < 10) ? '0' : '') + time.minute) + .replace(/m/g, time.minute) + .replace(/ss/g, ((time.second < 10) ? '0' : '') + time.second) + .replace(/s/g, time.second) + .replace(/TT/g, time.ampm.toUpperCase()) + .replace(/tt/g, time.ampm.toLowerCase()) + .replace(/T/g, time.ampm.charAt(0).toUpperCase()) + .replace(/t/g, time.ampm.charAt(0).toLowerCase()); + } else { + tmptime = tmptime.toString() + .replace(/hh/g, ((time.hour < 10) ? '0' : '') + time.hour) + .replace(/h/g, time.hour) + .replace(/mm/g, ((time.minute < 10) ? '0' : '') + time.minute) + .replace(/m/g, time.minute) + .replace(/ss/g, ((time.second < 10) ? '0' : '') + time.second) + .replace(/s/g, time.second); + tmptime = $.trim(tmptime.replace(/t/gi, '')); + } + + if (arguments.length) return tmptime; + else this.formattedTime = tmptime; + }, + + //######################################################################## + // update our input with the new date time.. + //######################################################################## + _updateDateTime: function(dp_inst) { + dp_inst = this.inst || dp_inst, + dt = new Date(dp_inst.selectedYear, dp_inst.selectedMonth, dp_inst.selectedDay), + dateFmt = $.datepicker._get(dp_inst, 'dateFormat'), + formatCfg = $.datepicker._getFormatConfig(dp_inst), + timeAvailable = dt !== null && this.timeDefined; + this.formattedDate = $.datepicker.formatDate(dateFmt, (dt === null ? new Date() : dt), formatCfg); + var formattedDateTime = this.formattedDate; + if (dp_inst.lastVal !== undefined && (dp_inst.lastVal.length > 0 && this.$input.val().length === 0)) + return; + + if (this._defaults.timeOnly === true) { + formattedDateTime = this.formattedTime; + } else if (this._defaults.timeOnly !== true && (this._defaults.alwaysSetTime || timeAvailable)) { + formattedDateTime += this._defaults.separator + this.formattedTime; + } + + this.formattedDateTime = formattedDateTime; + + if(!this._defaults.showTimepicker) { + this.$input.val(this.formattedDate); + } else if (this.$altInput && this._defaults.altFieldTimeOnly === true) { + this.$altInput.val(this.formattedTime); + this.$input.val(this.formattedDate); + } else if(this.$altInput) { + this.$altInput.val(formattedDateTime); + this.$input.val(formattedDateTime); + } else { + this.$input.val(formattedDateTime); + } + + this.$input.trigger("change"); + } + +}); + +$.fn.extend({ + //######################################################################## + // shorthand just to use timepicker.. + //######################################################################## + timepicker: function(o) { + o = o || {}; + var tmp_args = arguments; + + if (typeof o == 'object') tmp_args[0] = $.extend(o, { timeOnly: true }); + + return $(this).each(function() { + $.fn.datetimepicker.apply($(this), tmp_args); + }); + }, + + //######################################################################## + // extend timepicker to datepicker + //######################################################################## + datetimepicker: function(o) { + o = o || {}; + var $input = this, + tmp_args = arguments; + + if (typeof(o) == 'string'){ + if(o == 'getDate') + return $.fn.datepicker.apply($(this[0]), tmp_args); + else + return this.each(function() { + var $t = $(this); + $t.datepicker.apply($t, tmp_args); + }); + } + else + return this.each(function() { + var $t = $(this); + $t.datepicker($.timepicker._newInst($t, o)._defaults); + }); + } +}); + +//######################################################################## +// the bad hack :/ override datepicker so it doesnt close on select +// inspired: http://stackoverflow.com/questions/1252512/jquery-datepicker-prevent-closing-picker-when-clicking-a-date/1762378#1762378 +//######################################################################## +$.datepicker._base_selectDate = $.datepicker._selectDate; +$.datepicker._selectDate = function (id, dateStr) { + var inst = this._getInst($(id)[0]), + tp_inst = this._get(inst, 'timepicker'); + + if (tp_inst) { + tp_inst._limitMinMaxDateTime(inst, true); + inst.inline = inst.stay_open = true; + //This way the onSelect handler called from calendarpicker get the full dateTime + this._base_selectDate(id, dateStr + tp_inst._defaults.separator + tp_inst.formattedTime); + inst.inline = inst.stay_open = false; + this._notifyChange(inst); + this._updateDatepicker(inst); + } + else this._base_selectDate(id, dateStr); +}; + +//############################################################################################# +// second bad hack :/ override datepicker so it triggers an event when changing the input field +// and does not redraw the datepicker on every selectDate event +//############################################################################################# +$.datepicker._base_updateDatepicker = $.datepicker._updateDatepicker; +$.datepicker._updateDatepicker = function(inst) { + if (typeof(inst.stay_open) !== 'boolean' || inst.stay_open === false) { + + this._base_updateDatepicker(inst); + + // Reload the time control when changing something in the input text field. + var tp_inst = this._get(inst, 'timepicker'); + if(tp_inst) tp_inst._addTimePicker(inst); + } +}; + +//####################################################################################### +// third bad hack :/ override datepicker so it allows spaces and colan in the input field +//####################################################################################### +$.datepicker._base_doKeyPress = $.datepicker._doKeyPress; +$.datepicker._doKeyPress = function(event) { + var inst = $.datepicker._getInst(event.target), + tp_inst = $.datepicker._get(inst, 'timepicker'); + + if (tp_inst) { + if ($.datepicker._get(inst, 'constrainInput')) { + var ampm = tp_inst._defaults.ampm, + datetimeChars = tp_inst._defaults.timeFormat.toString() + .replace(/[hms]/g, '') + .replace(/TT/g, ampm ? 'APM' : '') + .replace(/T/g, ampm ? 'AP' : '') + .replace(/tt/g, ampm ? 'apm' : '') + .replace(/t/g, ampm ? 'ap' : '') + + " " + + tp_inst._defaults.separator + + $.datepicker._possibleChars($.datepicker._get(inst, 'dateFormat')), + chr = String.fromCharCode(event.charCode === undefined ? event.keyCode : event.charCode); + return event.ctrlKey || (chr < ' ' || !datetimeChars || datetimeChars.indexOf(chr) > -1); + } + } + + return $.datepicker._base_doKeyPress(event); +}; + +//####################################################################################### +// Override key up event to sync manual input changes. +//####################################################################################### +$.datepicker._base_doKeyUp = $.datepicker._doKeyUp; +$.datepicker._doKeyUp = function (event) { + var inst = $.datepicker._getInst(event.target), + tp_inst = $.datepicker._get(inst, 'timepicker'); + + if (tp_inst) { + if (tp_inst._defaults.timeOnly && (inst.input.val() != inst.lastVal)) { + try { + $.datepicker._updateDatepicker(inst); + } + catch (err) { + $.datepicker.log(err); + } + } + } + + return $.datepicker._base_doKeyUp(event); +}; + +//####################################################################################### +// override "Today" button to also grab the time. +//####################################################################################### +$.datepicker._base_gotoToday = $.datepicker._gotoToday; +$.datepicker._gotoToday = function(id) { + this._base_gotoToday(id); + this._setTime(this._getInst($(id)[0]), new Date()); +}; + +//####################################################################################### +// Disable & enable the Time in the datetimepicker +//####################################################################################### +$.datepicker._disableTimepickerDatepicker = function(target, date, withDate) { + var inst = this._getInst(target), + tp_inst = this._get(inst, 'timepicker'); + if (tp_inst) { + tp_inst._defaults.showTimepicker = false; + tp_inst._onTimeChange(); + tp_inst._updateDateTime(inst); + } +}; + +$.datepicker._enableTimepickerDatepicker = function(target, date, withDate) { + var inst = this._getInst(target), + tp_inst = this._get(inst, 'timepicker'); + if (tp_inst) { + tp_inst._defaults.showTimepicker = true; + tp_inst._onTimeChange(); + tp_inst._updateDateTime(inst); + } +}; + +//####################################################################################### +// Create our own set time function +//####################################################################################### +$.datepicker._setTime = function(inst, date) { + var tp_inst = this._get(inst, 'timepicker'); + if (tp_inst) { + var defaults = tp_inst._defaults, + // calling _setTime with no date sets time to defaults + hour = date ? date.getHours() : defaults.hour, + minute = date ? date.getMinutes() : defaults.minute, + second = date ? date.getSeconds() : defaults.second; + + //check if within min/max times.. + if ((hour < defaults.hourMin || hour > defaults.hourMax) || (minute < defaults.minuteMin || minute > defaults.minuteMax) || (second < defaults.secondMin || second > defaults.secondMax)) { + hour = defaults.hourMin; + minute = defaults.minuteMin; + second = defaults.secondMin; + } + + if (tp_inst.hour_slider) tp_inst.hour_slider.slider('value', hour); + else tp_inst.hour = hour; + if (tp_inst.minute_slider) tp_inst.minute_slider.slider('value', minute); + else tp_inst.minute = minute; + if (tp_inst.second_slider) tp_inst.second_slider.slider('value', second); + else tp_inst.second = second; + + tp_inst._onTimeChange(); + tp_inst._updateDateTime(inst); + } +}; + +//####################################################################################### +// Create new public method to set only time, callable as $().datepicker('setTime', date) +//####################################################################################### +$.datepicker._setTimeDatepicker = function(target, date, withDate) { + var inst = this._getInst(target), + tp_inst = this._get(inst, 'timepicker'); + + if (tp_inst) { + this._setDateFromField(inst); + var tp_date; + if (date) { + if (typeof date == "string") { + tp_inst._parseTime(date, withDate); + tp_date = new Date(); + tp_date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second); + } + else tp_date = new Date(date.getTime()); + if (tp_date.toString() == 'Invalid Date') tp_date = undefined; + } + this._setTime(inst, tp_date); + } + +}; + +//####################################################################################### +// override setDate() to allow setting time too within Date object +//####################################################################################### +$.datepicker._base_setDateDatepicker = $.datepicker._setDateDatepicker; +$.datepicker._setDateDatepicker = function(target, date) { + var inst = this._getInst(target), + tp_date = (date instanceof Date) ? new Date(date.getTime()) : date; + + this._updateDatepicker(inst); + this._base_setDateDatepicker.apply(this, arguments); + this._setTimeDatepicker(target, tp_date, true); +}; + +//####################################################################################### +// override getDate() to allow getting time too within Date object +//####################################################################################### +$.datepicker._base_getDateDatepicker = $.datepicker._getDateDatepicker; +$.datepicker._getDateDatepicker = function(target, noDefault) { + var inst = this._getInst(target), + tp_inst = this._get(inst, 'timepicker'); + + if (tp_inst) { + this._setDateFromField(inst, noDefault); + var date = this._getDate(inst); + if (date && tp_inst._parseTime($(target).val(), true)) date.setHours(tp_inst.hour, tp_inst.minute, tp_inst.second); + return date; + } + return this._base_getDateDatepicker(target, noDefault); +}; + +//####################################################################################### +// jQuery extend now ignores nulls! +//####################################################################################### +function extendRemove(target, props) { + $.extend(target, props); + for (var name in props) + if (props[name] === null || props[name] === undefined) + target[name] = props[name]; + return target; +} + +$.timepicker = new Timepicker(); // singleton instance +$.timepicker.version = "0.9.3"; + +})(jQuery); diff --git a/global/scripts/jquery.js b/global/scripts/jquery.js new file mode 100644 index 00000000..14fd6470 --- /dev/null +++ b/global/scripts/jquery.js @@ -0,0 +1,16 @@ +/*! + * jQuery JavaScript Library v1.5.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Wed Feb 23 13:55:29 2011 -0500 + */ +(function(a,b){function cg(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cd(a){if(!bZ[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bZ[a]=c}return bZ[a]}function cc(a,b){var c={};d.each(cb.concat.apply([],cb.slice(0,b)),function(){c[this]=a});return c}function bY(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bX(){try{return new a.XMLHttpRequest}catch(b){}}function bW(){d(a).unload(function(){for(var a in bU)bU[a](0,1)})}function bQ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(r,"`").replace(s,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,q=[],r=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function w(){return!0}function v(){return!1}function g(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.1",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1){var f=E.call(arguments,0),g=b,h=function(a){return function(b){f[a]=arguments.length>1?E.call(arguments,0):b,--g||c.resolveWith(e,f)}};while(b--)a=f[b],a&&d.isFunction(a.promise)?a.promise().then(h(b),c.reject):--g;g||c.resolveWith(e,f)}else c!==a&&c.resolve(a);return e},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML="
      a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e),b=e=f=null}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
      ",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
      t
      ";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function"),b=null;return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}})();var e=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!g(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,h=b.nodeType,i=h?d.cache:b,j=h?b[d.expando]:d.expando;if(!i[j])return;if(c){var k=e?i[j][f]:i[j];if(k){delete k[c];if(!g(k))return}}if(e){delete i[j][f];if(!g(i[j]))return}var l=i[j][f];d.support.deleteExpando||i!=a?delete i[j]:i[j]=null,l?(i[j]={},h||(i[j].toJSON=d.noop),i[j][f]=l):h&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var g=this[0].attributes,h;for(var i=0,j=g.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var k=i?f:0,l=i?f+1:h.length;k=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=k.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&l.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var o=a.getAttributeNode("tabIndex");return o&&o.specified?o.value:m.test(a.nodeName)||n.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var p=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return p===null?b:p}h&&(a[c]=e);return a[c]}});var p=/\.(.*)$/,q=/^(?:textarea|input|select)$/i,r=/\./g,s=/ /g,t=/[^\w\s.|`]/g,u=function(a){return a.replace(t,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=v;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=v);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),u).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(p,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=!0,l[m]())}catch(q){}k&&(l["on"+m]=k),d.event.triggered=!1}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},B=function B(a){var c=a.target,e,f;if(q.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=A(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:B,beforedeactivate:B,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&B.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&B.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",A(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in z)d.event.add(this,c+".specialChange",z[c]);return q.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return q.test(this.nodeName)}},z=d.event.special.change.filters,z.focus=z.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function c(a){a=d.event.fix(a),a.type=b;return d.event.handle.call(this,a)}d.event.special[b]={setup:function(){this.addEventListener(a,c,!0)},teardown:function(){this.removeEventListener(a,c,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.getAttribute("type")},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

      ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector,d=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(e){d=!0}b&&(k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(d||!l.match.PSEUDO.test(c)&&!/!=/.test(c))return b.call(a,c)}catch(e){}return k(c,null,null,[a]).length>0})}(),function(){var a=c.createElement("div");a.innerHTML="
      ";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=L.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(N(c[0])||N(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=K.call(arguments);G.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!M[a]?d.unique(f):f,(this.length>1||I.test(e))&&H.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var P=/ jQuery\d+="(?:\d+|null)"/g,Q=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,S=/<([\w:]+)/,T=/",""],legend:[1,"
      ","
      "],thead:[1,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],col:[2,"","
      "],area:[1,"",""],_default:[0,"",""]};X.optgroup=X.option,X.tbody=X.tfoot=X.colgroup=X.caption=X.thead,X.th=X.td,d.support.htmlSerialize||(X._default=[1,"div
      ","
      "]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(P,""):null;if(typeof a!=="string"||V.test(a)||!d.support.leadingWhitespace&&Q.test(a)||X[(S.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(R,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){$(a,e),f=_(a),g=_(e);for(h=0;f[h];++h)$(f[h],g[h])}if(b){Z(a,e);if(c){f=_(a),g=_(e);for(h=0;f[h];++h)Z(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||U.test(i)){if(typeof i==="string"){i=i.replace(R,"<$1>");var j=(S.exec(i)||["",""])[1].toLowerCase(),k=X[j]||X._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=T.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&Q.test(i)&&m.insertBefore(b.createTextNode(Q.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bb=/alpha\([^)]*\)/i,bc=/opacity=([^)]*)/,bd=/-([a-z])/ig,be=/([A-Z])/g,bf=/^-?\d+(?:px)?$/i,bg=/^-?\d/,bh={position:"absolute",visibility:"hidden",display:"block"},bi=["Left","Right"],bj=["Top","Bottom"],bk,bl,bm,bn=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bk(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bk)return bk(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bd,bn)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bo(a,b,e):d.swap(a,bh,function(){f=bo(a,b,e)});if(f<=0){f=bk(a,b,b),f==="0px"&&bm&&(f=bm(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bf.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return bc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bb.test(f)?f.replace(bb,e):c.filter+" "+e}}),c.defaultView&&c.defaultView.getComputedStyle&&(bl=function(a,c,e){var f,g,h;e=e.replace(be,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bm=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bf.test(d)&&bg.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bk=bl||bm,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var bp=/%20/g,bq=/\[\]$/,br=/\r?\n/g,bs=/#.*$/,bt=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bu=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bv=/(?:^file|^widget|\-extension):$/,bw=/^(?:GET|HEAD)$/,bx=/^\/\//,by=/\?/,bz=/)<[^<]*)*<\/script>/gi,bA=/^(?:select|textarea)/i,bB=/\s+/,bC=/([?&])_=[^&]*/,bD=/(^|\-)([a-z])/g,bE=function(a,b,c){return b+c.toUpperCase()},bF=/^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/,bG=d.fn.load,bH={},bI={},bJ,bK;try{bJ=c.location.href}catch(bL){bJ=c.createElement("a"),bJ.href="",bJ=bJ.href}bK=bF.exec(bJ.toLowerCase()),d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bG)return bG.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("
      ").append(c.replace(bz,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bA.test(this.nodeName)||bu.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(br,"\r\n")}}):{name:b.name,value:c.replace(br,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bJ,isLocal:bv.test(bK[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bM(bH),ajaxTransport:bM(bI),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bP(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bQ(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bD,bE)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bt.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bs,"").replace(bx,bK[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bB),e.crossDomain||(q=bF.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bK[1]||q[2]!=bK[2]||(q[3]||(q[1]==="http:"?80:443))!=(bK[3]||(bK[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bN(bH,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!bw.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(by.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bC,"$1_="+w);e.url=x+(x===e.url?(by.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bN(bI,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bO(g,a[g],c,f);return e.join("&").replace(bp,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bR=d.now(),bS=/(\=)\?(&|$)|()\?\?()/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bR++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bS.test(b.url)||f&&bS.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bS,l),b.url===j&&(f&&(k=k.replace(bS,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bT=d.now(),bU,bV;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bX()||bY()}:bX,bV=d.ajaxSettings.xhr(),d.support.ajax=!!bV,d.support.cors=bV&&"withCredentials"in bV,bV=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),(!a.crossDomain||a.hasContent)&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bU[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bU||(bU={},bW()),h=bT++,g.onreadystatechange=bU[h]=c):c()},abort:function(){c&&c(0,1)}}}});var bZ={},b$=/^(?:toggle|show|hide)$/,b_=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,ca,cb=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(cc("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:cc("show",1),slideUp:cc("hide",1),slideToggle:cc("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!ca&&(ca=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
      ";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),a=b=e=f=g=h=null,d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=e==="absolute"&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=cf.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!cf.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=cg(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=cg(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window); \ No newline at end of file diff --git a/global/scripts/manage_client_forms.js b/global/scripts/manage_client_forms.js new file mode 100644 index 00000000..7aaf2bb5 --- /dev/null +++ b/global/scripts/manage_client_forms.js @@ -0,0 +1,173 @@ +/** + * manage_client_forms.js + * + * This file handles all functions for the Forms tab of the Edit Client administration page. It + * provides the functionality for adding and removing forms and form Views to a client account. + */ + + +var cf_ns = {} +cf_ns.num_rows = 0; // the total number of forms (overridden by calling page) + + +/** + * Adds a new row to the forms table, letting the administrator control what forms & what form Views + * the client has access to. + * + * Assumption: the calling page has defined the data structures for the form list and form Views. + */ +cf_ns.add_form_row = function () { + var curr_row = ++cf_ns.num_rows; + + var row = $(""); + var td1 = $(""); + + var sel = $(""); + sel.bind("change", { curr_row: curr_row }, function (e) { + cf_ns.select_form(e.data.curr_row, $(this).val()); + }); + sel.append(""); + + for (var i = 0, j = page_ns.forms.length; i < j; i++) { + var form_id = page_ns.forms[i][0]; + var form_name = page_ns.forms[i][1]; + sel.append(""); + } + td1.append(sel); + + var td2 = $("" + g.messages["phrase_please_select_form"] + ""); + var td3 = $(""); + var td4 = $(""); + var td5 = $(""); + td5.bind("click", { curr_row: curr_row }, function (e) { + cf_ns.delete_row(e.data.curr_row); + }); + + // add the table data cells to the row + var cells = ft.group_nodes([td1, td2, td3, td4, td5]); + row.append(cells); + + // add the row to the table + $("#client_forms_table tbody").append(row); + + // update the form count + document.client_forms.num_forms.value = cf_ns.num_rows; + + return false; +} + + +/** + * Called when the user selects a form from one of the dropdowns in the first column. It shows + * the appropriate View content in the second column. + */ +cf_ns.select_form = function (row, form_id) { + + // if the user just selected the default option + if (form_id == "") { + $("#row_" + row + "_available_views_span").html("" + g.messages["phrase_please_select_form"] + ""); + $("#row_" + row + "_actions, #row_" + row + "_selected_views_span").html(""); + return; + } + + // if the form has already been selected + if (cf_ns.form_is_selected(form_id)) { + $("#row_" + row + "_available_views_span").html("" + g.messages["phrase_form_already_selected"] + ""); + $("#row_" + row + "_actions, #row_" + row + "_selected_views_span").html(""); + return; + } + + // build and add the available Views + var available_dd = $(""); + var form_index = null; + for (var i = 0; i < page_ns.form_views.length; i++) { + if (form_id == page_ns.form_views[i][0]) { + form_index = i; + break; + } + } + + for (var i = 0, j = page_ns.form_views[form_index][1].length; i < j; i++) { + var view_id = page_ns.form_views[form_index][1][i][0]; + var view_name = page_ns.form_views[form_index][1][i][1]; + available_dd.append($("")); + } + $("#row_" + row + "_available_views_span").html(""); + $("#row_" + row + "_available_views_span").removeClass("medium_grey pad_left"); + $("#row_" + row + "_available_views_span").append(available_dd); + + + // add the << >> nav for the row + var add = $(""); + add.bind("click", function (e) { + ft.move_options("row_" + row + "_available_views", "row_" + row + "_selected_views"); + }); + var remove = $(""); + add.bind("click", function (e) { + ft.move_options("row_" + row + "_selected_views", "row_" + row + "_available_views"); + }); + + $("#row_" + row + "_actions").html(ft.group_nodes([add, remove])); + + var selected_dd = $(""); + + $("#row_" + row + "_selected_views_span").html(""); + $("#row_" + row + "_selected_views_span").removeClass("medium_grey pad_left"); + $("#row_" + row + "_selected_views_span").append(selected_dd); + + return false; +} + + +/** + * Deletes an individual row. Note that this does NOT re-id all the other fields (e.g. after deleting + * row 5, row 6 still has an id of row_6) nor does it decrement the global row counter "g_num_rows". + * This is done for simplicity. The PHP function that handles the update discards any rows without a + * FORM specified, so the absent row is not important. The num_filters hidden field (which is based on + * the g_num_rows value) IS important, though - that lets the PHP function know how many rows (or the + * MAX rows) that the form is sending. So again, it's fine that the actual number of rows passed is less. + * + * @param integer row + */ +cf_ns.delete_row = function (row) { + $("#client_forms_table tbody #row_" + row).fadeOut(400); + setTimeout(function () { + $("#client_forms_table tbody #row_" + row).remove(); + }, 450); +} + + +/** + * Called on form submit. + * + * @param object the form + */ +cf_ns.check_fields = function (f) { + // ensures that everything is selected in the Selected Views column to pas salong to the server + for (var i = 1; i <= cf_ns.num_rows; i++) { + if ($("#row_" + i + "_selected_views").length > 0) { + ft.select_all("row_" + i + "_selected_views"); + } + } + $("#num_forms").val(cf_ns.num_rows); + return true; +} + + +/** + * A helper function to find if a form has already been selected on the page. It's a bit weird since it detects for + * > 1 items (since the newly selected row will have the same form_id value as an existing field). + * + * @return boolean + */ +cf_ns.form_is_selected = function (form_id) { + var select_count = 0; + + $(".selected_form").each(function () { + if (this.value == form_id) { + select_count++; + } + }); + + return (select_count > 1); +} \ No newline at end of file diff --git a/global/scripts/manage_email_templates.js b/global/scripts/manage_email_templates.js new file mode 100644 index 00000000..e39bf27e --- /dev/null +++ b/global/scripts/manage_email_templates.js @@ -0,0 +1,505 @@ +var emails_ns = {} +emails_ns.num_recipients = null; + +// the purpose of this is purely to provide a unique number for each dynamically added email recipient. +// It's initialized by the onload handler to be num_recipients+1 +emails_ns.recipient_num = null; + + +/** + * Selects an email pattern from the available email template dropdown. + */ +emails_ns.select_template = function (format_type, row) { + if (!row) { + return; + } + if (format_type == "html") { + html_editor.setValue($("#" + format_type + "_" + row).val()); + } + if (format_type == "text") { + text_editor.setValue($("#" + format_type + "_" + row).val()); + } +}; + + +/** + * Hides / shows the custom From, Reply-to and Recipient elements. These allow the administrator + * to choose whoever they want should receive, etc. the emails. + */ +emails_ns.show_custom_email_field = function (target, val) { + if (val == "custom") { + $("#custom_" + target).show(); + } else { + $("#custom_" + target).hide(); + } +} + + +/** + * Adds a recipient for this email template. + */ +emails_ns.add_recipient = function (f) { + var recipient_target = $("#recipient_options").val(); + if (recipient_target == "") { + return; + } + + var is_email_field = /^form_email_id/; + var is_client = /^client_account_id/; + + var rtype = recipient_target; + if (is_email_field.test(recipient_target)) { + rtype = "form_email_field"; + } + if (is_client.test(recipient_target)) { + rtype = "client"; + } + + var recipient_str = emails_ns._get_recipient_string(recipient_target); + + switch (rtype) { + case "admin": + emails_ns._add_recipient({ + full_display_string: recipient_str, + recipient_type: $("#recipient_type").val(), + recipient_user_type: "admin" + }); + break; + + case "client": + var info = recipient_target.match(/client_account_id_(\d+)/); + var cid = info[1]; + emails_ns._add_recipient({ + full_display_string: recipient_str, + client_id: cid, + recipient_type: $("#recipient_type").val(), + recipient_user_type: "client" + }); + break; + + case "form_email_field": + var info = recipient_target.match(/form_email_id_(\d+)/); + var feid = info[1]; + emails_ns._add_recipient({ + full_display_string: g.messages["phrase_form_email_field_b_c"] + " " + recipient_str, + recipient_type: $("#recipient_type").val(), + recipient_user_type: "form_email_field", + form_email_id: feid + }); + break; + + case "custom": + emails_ns.add_custom_recipient(f); + break; + + default: + alert("Unknown recipient type!"); + break; + } +} + + +// get the recipient string (e.g. "Ben Keen ") +emails_ns._get_recipient_string = function (option_val) { + var dd = $("#recipient_options")[0]; + var recipient_str = null; + for (var i = 0; i < dd.options.length; i++) { + if (dd.options[i].value == option_val) { + recipient_str = dd.options[i].text; + break; + } + } + return recipient_str; +} + + +emails_ns.add_custom_recipient = function (f) { + // check at least the email is entered + var rules = [ + "required,custom_recipient_email," + g.messages["validation_no_custom_recipient_email"], + "valid_email,custom_recipient_email," + g.messages["validation_invalid_email"] + ]; + + var error = null; + if (rsv.validate(f, rules)) { + emails_ns._add_recipient({ + name: $("#custom_recipient_name").val(), + email: $("#custom_recipient_email").val(), + recipient_type: $("#custom_recipient_type").val(), + recipient_user_type: "custom" + }); + } +} + + +/** + * Removes a recipient from the page. Note: it still requires an update to update the database. + */ +emails_ns.remove_recipient = function (num) { + emails_ns.num_recipients--; + + // if necessary, show the "No recipients" text + if (emails_ns.num_recipients == 0) { + $("#no_recipients").show(); + } + + $("#recipient_" + num).html("").hide(); + return false; +}; + + +/** + * Helper function to add a new recipient to the page. It also creates and appends hidden fields + * which are passed to the server on update. + * + * @param object info this object can contain any of the following properties: + * name - the name of the person being added (custom recipient) + * email - the email of the person (custom recipients) + * full_display_string - the name + email (administrators & clients) + * recipient_type - "" (for main), "cc" or "bcc" (this field is required) + * client_id - the client ID (clients only) + * form_email_id - the form email ID (form email fields only) + * recipient_type - "client", "custom" or "admin" (required) + */ +emails_ns._add_recipient = function (info) { + $("#no_recipients").hide(); + var num = ++emails_ns.recipient_num; // our unique num (always incremented) + + var recipient_type_str = ""; + if (info.recipient_type == "cc") { + recipient_type_str = " [cc]"; + } else if (info.recipient_type == "bcc") { + recipient_type_str = " [bcc]"; + } + + switch (info.recipient_user_type) { + case "admin": + var str = "
      " + $("
      ").text(info.full_display_string).html() + + recipient_type_str + + "  [x]" + + "" + + "" + + "" + + "
      "; + break; + + case "form_email_field": + var str = "
      " + $("
      ").text(info.full_display_string).html() + + recipient_type_str + + "  [x]" + + "" + + "" + + "" + + "" + + "
      "; + break; + + case "client": + var str = "
      " + $("
      ").text(info.full_display_string).html() + + recipient_type_str + + "  [x]" + + "" + + "" + + "" + + "" + + "
      "; + break; + + case "custom": + if (info.name) { + recipient = info.name + " <" + info.email + ">"; + } else { + recipient = info.email; + } + var str = "
      " + recipient + + recipient_type_str + + "  [x]" + + "" + + "" + + "" + + "" + + "" + + "
      "; + break; + + default: + alert("Unknown recipient type!"); + break; + } + + $("#email_recipients").append(str); + + // increment the num_recipients count + emails_ns.num_recipients++; +} + + +/** + * Sends a test email, via Ajax. + * + * @param the DOM form node + * @param string the action to take: "send" or "display" + */ +emails_ns.send_test_email = function (f, action) { + var rules = []; + rules.push("required,test_email_recipient," + g.messages["validation_no_test_email_recipient"]); + rules.push("valid_email,test_email_recipient," + g.messages["validation_valid_email"]); + rules.push("if:test_email_data_source=submission_id,required,test_email_submission_id," + g.messages["validation_no_test_email_submission_id"]); + + if (rsv.validate(f, rules)) { + var query_str = "test_email_format=" + $("#test_email_format").val() + + "&test_email_recipient=" + $("#test_email_recipient").val() + + "&test_email_data_source=" + $(f).find("input:radio[name=test_email_data_source]:checked").val() + + "&test_email_submission_id=" + f.test_email_submission_id.value + + if (action == "display") { + emails_ns.log_activity(true); + $.ajax({ + url: g.root_url + "/global/code/actions.php?action=display_test_email&" + query_str, + type: "GET", + dataType: "json", + success: emails_ns.display_test_email, + error: function (a, b, c) { + ft.error_handler(a, b, c); + } + }); + } else if (action == "send") { + emails_ns.log_activity(true); + $.ajax({ + url: g.root_url + "/global/code/actions.php?action=send_test_email&" + query_str, + type: "GET", + dataType: "json", + success: emails_ns.send_test_email_response, + error: ft.error_handler, + }); + } + } + + return false; +} + + +/** + * This function is the response function from an Ajax request to the server, requesting a test + * email. It gets passed the entire email content via the single transport parameter as a JSON + * array. It displays the text and/or HTML email in the page, for the user to examine. + * + * @param array The array has two indexes: [0] true/false, [1] if false, this is a string containing + * the error message. If true, this is an object containing the various elements of the email (subject, + * cc, bcc, etc) as properties. + */ +emails_ns.display_test_email = function (data) { + + emails_ns.log_activity(false); + + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(data)) { + return; + } + + var success = data[0]; + + if (success) { + var email_info = data[1]; + var from = email_info.from; + var reply_to = email_info.reply_to; + var subject = email_info.subject; // unescapeHTML + + var to = email_info.to; + var to_html = ""; + for (var i = 0; i < to.length; i++) { + to_html += to[i].recipient_line + "
      "; + } + + var cc = email_info.cc; + var cc_html = ""; + for (var i = 0; i < cc.length; i++) { + cc_html += cc[i].recipient_line + "
      "; + } + + var bcc = email_info.bcc; + var bcc_html = ""; + for (var i = 0; i < bcc.length; i++) { + bcc_html += bcc[i].recipient_line + "
      "; + } + + // build the header table + var table = "" + + "" + + "" + + ""; + + if (cc_html) { + table += ""; + } + if (bcc_html) { + table += ""; + } + if (from && typeof from == "object" && typeof from.recipient_line != "undefined" && from.recipient_line != "") { + table += ""; + } + if (reply_to && typeof reply_to == "object" && typeof reply_to.recipient_line != "undefined" && reply_to.recipient_line != "") { + table += ""; + } + if (subject) { + table += ""; + } + + if (email_info.html_content) { + html_table = table + "
      To:" + to_html + "
      " + g.messages["word_cc_c"] + "" + cc_html + "
      " + g.messages["word_bcc_c"] + "" + bcc_html + "
      " + g.messages["word_from_c"] + "" + from.recipient_line + "
      " + g.messages["word_reply_to_c"] + "" + reply_to.recipient_line + "
      " + g.messages["word_subject_c"] + "" + subject + "
      Content:" + email_info.html_content + "
      "; + $("#display_html_content").html(html_table); + $("#display_html").removeClass("hidden"); + } else { + $("#display_html").addClass("hidden"); + $("#display_html_content").html(""); + } + + if (email_info.text_content) { + text_table = table + "Content:" + email_info.text_content.replace(/\n/g, "
      ") + ""; + $("#display_text_content").html(text_table); + $("#display_text").removeClass("hidden"); + } else { + $("#display_text_content").html(""); + $("#display_text").addClass("hidden"); + } + } +} + + +/** + * Called after sending a test email. Displays the appropriate message. + */ +emails_ns.send_test_email_response = function (data) { + emails_ns.log_activity(false); + + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(data)) { + return; + } + + ft.display_message("ft_message", data.success, data.message); +} + + +/** + * This is called whenever starting or ending any potentially lengthy JS operation. It hides/shows the + * ajax loading icon. + */ +emails_ns.log_activity = function (is_busy) { + if (is_busy) { + $("#ajax_activity").show(); + $("#ajax_no_activity").hide(); + } else { + $("#ajax_activity").hide(); + $("#ajax_no_activity").show(); + } +} + + +emails_ns.delete_form_email_field_config = function (form_email_id) { + ft.create_dialog({ + title: g.messages["phrase_please_confirm"], + content: g.messages["confirm_delete_email_field_config"], + popup_type: "warning", + buttons: [ + { + text: g.messages["word_yes"], + click: function () { + window.location = "./?page=email_settings&delete_form_email_id=" + form_email_id; + } + }, + { + text: g.messages["word_no"], + click: function () { + $(this).dialog("close"); + } + } + ] + }); + return false; +} + + +emails_ns.toggle_advanced_settings = function () { + var display_setting = $('#advanced_settings').css("display"); + + var is_visible = false; + if (display_setting == 'none' || display_setting == "") { + $("#advanced_settings").show("blind"); + is_visible = true; + } else { + $("#advanced_settings").hide("blind"); + } + $.ajax({ + url: g.root_url + "/global/code/actions.php", + data: { action: "remember_edit_email_advanced_settings", edit_email_advanced_settings: is_visible }, + type: "POST", + error: ft.error_handler + }); +} + + +emails_ns.check_one_main_recipient = function () { + if (emails_ns.num_recipients == 0) { + return [[$('#recipient_options')[0], g.messages["validation_no_main_email_recipient"]]]; + } else { + var has_one_main_recipient = false; + for (var i = 0; i <= emails_ns.recipient_num; i++) { + if ($("#recipient_" + i + "_type").length > 0 && + ($("#recipient_" + i + "_type").val() == '' || $("#recipient_" + i + "_type").val() == 'main')) { + var has_one_main_recipient = true; + } + } + if (!has_one_main_recipient) { + return [[$('#recipient_options')[0], g.messages["validation_no_main_email_recipient"]]]; + } + } + return true; +} + + +/** + * This confirms that the user has entered at least one of the HTML and text templates. + */ +emails_ns.check_one_template_defined = function () { + var html_template = html_editor.getValue(); + html_template = $.trim(html_template); + var text_template = text_editor.getValue(); + text_template = $.trim(text_template); + if (html_template == "" && text_template == "") { + return [[$('#html_template'), g.messages["validation_no_email_content"]]]; + } + return true; +}; + + +emails_ns.onsubmit_check_email_settings = function (f) { + // configuration tab + var rules = []; + rules.push("required,email_template_name," + g.messages["validation_no_email_template_name"]); + rules.push("required,view_mapping_type," + g.messages["validation_no_email_template_view_mapping_value"]); + if (!rsv.validate(f, rules)) { + return ft.change_inner_tab(1, "edit_email_template"); // this always returns false; + } + + // recipients tab + var rules = []; + rules.push("function,emails_ns.check_one_main_recipient"); + rules.push("required,email_from," + g.messages["validation_no_email_from_field"]); + rules.push("if:email_from=custom,required,custom_from_email," + g.messages["validation_no_custom_from_email"]); + rules.push("if:email_from=custom,valid_email,custom_from_email," + g.messages["validation_invalid_custom_from_email"]); + rules.push("if:email_reply_to=custom,required,custom_reply_to_email," + g.messages["validation_no_custom_reply_to_email"]); + rules.push("if:email_reply_to=custom,valid_email,custom_reply_to_email," + g.messages["validation_invalid_custom_reply_to_email"]); + if (!rsv.validate(f, rules)) { + return ft.change_inner_tab(2, "edit_email_template"); + } + + var rules = []; + rules.push("function,emails_ns.check_one_template_defined"); + if (!rsv.validate(f, rules)) { + return ft.change_inner_tab(3, "edit_email_template"); + } + + return true; +} + diff --git a/global/scripts/manage_fields.js b/global/scripts/manage_fields.js new file mode 100644 index 00000000..3e21a4e8 --- /dev/null +++ b/global/scripts/manage_fields.js @@ -0,0 +1,1929 @@ +$(function () { + var scroll_panes = $(".scroll-pane"); + var scroll_content = $(".scroll-content"); + + // update slider to slide all elements with .scroll-content class currently on page + fields_ns.init_sliders({ + scroll_panes: scroll_panes, + scroll_content: scroll_content + }); + + // append icon to handles + var handleHelper = fields_ns.scrollbars.find(".ui-slider-handle").mousedown(function () { + fields_ns.scrollbars.width(handleHelper.width()); + }) + .mouseup(function () { + fields_ns.scrollbars.width("100%"); + }) + .append("").wrap("
      ").parent(); + + // change overflow to hidden now that sliders handles the scrolling + scroll_panes.css("overflow", "hidden"); + + // size scrollbars and handle proportionally to scroll distance + function size_scrollbars () { + var remainder = scroll_content.width() - scroll_panes.width(); + var proportion = remainder / scroll_content.width(); + var handle_size = scroll_panes.width() - (proportion * scroll_panes.width()); + fields_ns.scrollbars.find(".ui-slider-handle").css({ + width: handle_size, + "margin-left": -handle_size / 2 + }); + handleHelper.width("").width(fields_ns.scrollbars.width() - handle_size); + } + + // init scrollbar size + setTimeout(size_scrollbars, 10); // safari wants a timeout + + $("#display_form").bind("submit", function (e) { + var rules = []; + rules.push("function,fields_ns.check_fields"); + fields_ns.__disable_focusin = true; + if (!rsv.validate(this, rules)) { + e.preventDefault(); + fields_ns.__disable_focusin = false; + } + }); + + // add some event-delegated logic to only bother updating the fields dropdown with the latest content + // after a field title actually changes + $(".rows").bind("focusin", function (e) { + if (fields_ns.__disable_focusin) { + return; + } + var currentField = e.target; + if ($(currentField).hasClass("display_text")) { + fields_ns.__onfocus_display_text_value = $(currentField).val(); + } + var parent_scrollable = $(currentField).closest(".scrollable"); + if (parent_scrollable.hasClass("col3")) { + var scrollLeft = parent_scrollable.attr("scrollLeft"); + var marginLeft = parseInt($(currentField).closest(".scroll-content").css("marginLeft")); + if (scrollLeft != 0) { + var left_percentage = (marginLeft <= 0 && marginLeft > -238) ? 50 : 100; + fields_ns.change_scroll_area(left_percentage); + } + } + }); + + $(".rows").bind("focusout", function (e) { + if (!$(e.target).hasClass("display_text")) { + return; + } + if ($(e.target).val() != fields_ns.__onfocus_display_text_value) { + fields_ns.update_fields_dropdown(); + } + }); + + $(".rows").live("click", function (e) { + if ($(e.target).hasClass("edit")) { + fields_ns.edit_field($(e.target).closest(".row_group")); + } + }); + + $("#edit_field_template .prev_field").bind("click", function (e) { + fields_ns.edit_prev_field(); + }); + $("#edit_field_template .next_field").bind("click", function (e) { + fields_ns.edit_next_field(); + }); + + // this handles all the "Use Default Value?" checkboxes. It enables/disables the custom setting for the row + // and places focus on the customizable option, if Use Default Value is disabled + $(".use_default").live("click", function () { + fields_ns.click_use_default(this); + }); + + // called whenever the user changes a field type in the Edit Field popup + $("#edit_field__field_type").live("change keyup", function () { + ft.update_field_size_dropdown(this, $("#edit_field__field_size_div"), { + id: "edit_field__field_size", + name: "edit_field__field_size", + selected: $('#edit_field__field_size').val() + }); + + var field_type_id = $(this).val(); + var field_settings = page_ns.field_settings["field_type_" + field_type_id]; + var field_type_label = $("#edit_field__field_type option[value=" + field_type_id + "]").text(); + if (field_settings == undefined) { + $("#edit_field_template .inner_tab2").html(field_type_label + " " + g.messages["word_settings"] + " (0)"); + $("#edit_field__field_settings").html("
      " + g.messages["notify_no_field_settings"] + "
      "); + } else { + $("#edit_field_template .inner_tab2").html(field_type_label + " " + g.messages["word_settings"] + " (" + field_settings.length + ")"); + var html = fields_ns.generate_field_type_markup(fields_ns.__current_field_id, field_type_id, field_settings); + $("#edit_field__field_settings").html(html); + } + $("#edit_field__field_settings_loading").hide(); + $(".use_default").each(function () { + $(this).attr("disabled", ""); + }); + + // recreate the validation tab + var html = fields_ns.generate_field_type_validation_table(field_type_id); + fields_ns.update_validation_tab_label(field_type_id); + $("#validation_table").html(html); + }); + + $("#edit_field__field_type").live("blur", function () { + fields_ns.__last_field_type_id = fields_ns.__current_field_type_id; + fields_ns.__current_field_type_id = this.value; + fields_ns.__check_shared_characteristics_cond1 = true; + fields_ns.check_shared_characteristics(); + + // here we empty the memory cache for tab 2. This ensures that when the user clicks Save Changes, any orphaned + // field settings aren't incorrectly passed along to the server + if (fields_ns.memory["field_" + fields_ns.__current_field_id]) { + delete fields_ns.memory["field_" + fields_ns.__current_field_id].tab2; + } + }); + + + // any time the user changes a value in any of the field in the Edit Field dialog, it stores the changes in + // fields_ns.memory. When they click Save Changes all changes are sent to the server for updating. This + // was simplified in 2.1.4 so that any change ANYWHERE, resubmits everything. It was getting absurdly complicated. + $(".inner_tab_content").bind("change", function (e) { + if (typeof fields_ns.memory["field_" + fields_ns.__current_field_id] == 'undefined') { + fields_ns.memory["field_" + fields_ns.__current_field_id] = { tab1: null, tab2: null, tab3: null }; + fields_ns.memory.changed_field_ids.push(fields_ns.__current_field_id); + } + fields_ns.memory["field_" + fields_ns.__current_field_id].tab1 = $("#edit_field_form_tab1").serializeArray(); + fields_ns.memory["field_" + fields_ns.__current_field_id].tab2 = $("#edit_field_form_tab2").serializeArray(); + fields_ns.memory["field_" + fields_ns.__current_field_id].tab3 = $("#edit_field_form_tab3").serializeArray(); + }); + + // this updates the list of field sizes in the page whenever the user changes the type + $(".field_types").live("change keyup", function (e) { + var tmp = $(this).attr("name").match(/field_(.+)_type_id/); + var curr_field_id = tmp[1]; + var field_sizes_div = $(this).closest(".scroll-content").find(".field_sizes_div"); + var curr_value = field_sizes_div.find("[name=field_" + curr_field_id + "_size]").val(); + ft.update_field_size_dropdown(this, field_sizes_div, { + name: "field_" + curr_field_id + "_size", + html_class: "field_sizes", + selected: curr_value + }); + }); + + $(".option_list_or_form_field").live("change", function () { + if ($(this).find(":selected").closest("optgroup").is("#edit_field__option_lists")) { + $("#edit_field__option_list_options").show(); + $("#edit_field__form_options").hide(); + } else if ($(this).find(":selected").closest("optgroup").is("#edit_field__forms")) { + var form_id = this.value.replace(/^ft/, ""); + $("#edit_field__option_list_options").hide(); + $("#edit_field__form_options").show(); + + if (fields_ns.form_fields["form_" + form_id] == undefined) { + fields_ns.load_form_fields({ form_id: form_id }); + } else { + fields_ns.generate_form_fields_section({ form_id: form_id }); + } + } + }); + + $(".check_areas").live("click", function (e) { + if (!$(e.target).hasClass("check_area")) { + return; + } + var field = $(e.target).find("input")[0]; + fields_ns.click_use_default(field); + }); + + // load all option lists into memory + $.ajax({ + url: g.root_url + "/global/code/actions.php", + type: "POST", + dataType: "json", + data: { action: "get_option_lists" }, + success: fields_ns.get_option_lists_response, + error: ft.error_handler + }); + + // load all forms into memory + $.ajax({ + url: g.root_url + "/global/code/actions.php", + type: "POST", + dataType: "json", + data: { action: "get_form_list" }, + success: fields_ns.get_form_list_response, + error: ft.error_handler + }); + + // for the Edit Field validation tab + $("#validation_table").bind("change", function (e) { + if (!$(e.target).hasClass("v_checked")) { + return; + } + var error_str_field = $(e.target).closest("tr").find(".validation_error_message"); + if (e.target.checked) { + var rule_id = $(e.target).attr("id").replace(/edit_field__v_/, ""); + error_str_field.removeClass("light_grey").attr("disabled", ""); + if (error_str_field.val() == "") { + error_str_field.val(fields_ns._get_default_error_message(fields_ns.__current_field_type_id, rule_id)); + } + } else { + error_str_field.addClass("light_grey").attr("disabled", "disabled"); + } + }); +}); + + +// sadly, this fires multiple times when resizing by dragging the mouse +$(window).resize(function () { + fields_ns.reinit_sliders(); +}); + + +var fields_ns = { + num_new_rows: 0, + add_field_dialog: $("
      "), + smart_fill_dialog: $("
      "), + confirm_redirect_dialog: $("
      "), + + edit_field_dialog_opened: false, + cached_field_settings_markup: [], + cached_loaded_extended_field: [], + limit_fields_enabled: false, + max_fields: null, + num_fields: null, // initiated on page load, and contains the TOTAL number of fields in the form, regardless of the current page + + // this is used to store the contents of the Edit Field popup as the user navigates from field to field. It + // works by keeping track of ALL changed fields, and only when the user clicks the "Save Changes" field + // does it actually do an Ajax request to save the contents & update the main page + memory: { changed_field_ids: [] }, + + // used to solve a nagging asynchronous problem on page load: when a user clicks from the Option Lists page (or other pages) + // to edit the field immediately on page load. In that scenario, the extended field setting info can load before to the + // Option List and form requests having been loaded. This variable is used to store the values after they've been initially + // returned from the server so the fields are displayed & populated properly + onload_field_setting_values: [], + + // these are loaded dynamically on page load. The option lists is just the list of available option lists + // that the user can choose from; the forms are all forms OTHER than the current one + option_lists: null, + forms: null, + form_fields: {}, // stores form_X: [fields] + + __current_field_id: null, + __current_field_type_id: null, + __last_field_type_id: null, + __disable_focusin: false, + + // when the user changes a field type in the Edit Field dialog, we check to see if any of the old + // settings should be copied across. These two conditions both need to be met in order for that code to + // run + __check_shared_characteristics_cond1: false, // the onblur event of the field type + __check_shared_characteristics_cond2: false // the settings page is actually loaded +}; + + +fields_ns.reinit_sliders = function () { + fields_ns.init_sliders({ + scroll_panes: $(".scroll-pane"), + scroll_content: $(".scroll-content") + }); +} + + +fields_ns.get_option_lists_response = function (data) { + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(data)) { + return; + } + fields_ns.option_lists = data; +} + +fields_ns.get_form_list_response = function (data) { + fields_ns.forms = data; +} + + +/** + * Called on page load, window resize and after adding rows to (re)initialize the top and bottom sliders. + */ +fields_ns.init_sliders = function (info) { + var max_rows_on_page = fields_ns._get_max_rows_on_page(); + var top_rows_to_scroll = info.scroll_content.slice(0, max_rows_on_page); + var bottom_rows_to_scroll = info.scroll_content.slice(-max_rows_on_page); + + fields_ns.scrollbars = $(".scroll-bar-top, .scroll-bar-bottom").slider({ + slide: function (event, ui) { + var rows_to_scroll = null; + var other_scrollbar = null; + if ($(this).hasClass("scroll-bar-top")) { + rows_to_scroll = top_rows_to_scroll; + other_scrollbar = ".scroll-bar-bottom"; + } else { + rows_to_scroll = bottom_rows_to_scroll; + other_scrollbar = ".scroll-bar-top"; + } + + var rows_to_scroll_width = rows_to_scroll.width(); + if (rows_to_scroll_width > info.scroll_panes.width()) { + rows_to_scroll.css("margin-left", Math.round(ui.value / 100 * (info.scroll_panes.width() - rows_to_scroll_width)) + "px"); + } else { + rows_to_scroll.css("margin-left", 0); + } + + // always update the other scrollbar, too (even if it's off screen) + $(other_scrollbar + " .ui-slider-handle").css("left", Math.round(ui.value) + "%"); + }, + + // this is called after the user finishes dragging the slider. It gives the appropriate margin-left to + // all off-screen items that weren't just dragged + change: function (event, ui) { + var margin_left = null; + var rows_to_update = null; + var max_rows_on_page = fields_ns._get_max_rows_on_page(); + if ($(this).hasClass("scroll-bar-top")) { + margin_left = $(".scroll-content:first").css("marginLeft"); + rows_to_update = $(".scroll-content").slice(max_rows_on_page); + } else { + margin_left = $(".scroll-content:last").css("marginLeft"); + rows_to_update = $(".scroll-content").slice(0, $(".scroll-content").length - max_rows_on_page); + } + rows_to_update.each(function () { + $(this).css("marginLeft", margin_left); + }); + } + }); +} + + +fields_ns.add_fields = function (e) { + var num_fields = $.trim($("#add_num_fields").val()); + + // check num_rows is an integer + if (num_fields.match(/\D/) || num_fields == 0 || num_fields == "") { + ft.create_dialog({ + dialog: fields_ns.add_field_dialog, + popup_type: "error", + title: g.messages["word_error"], + content: g.messages["validation_num_rows_to_add"], + buttons: [{ + "text": g.messages["word_okay"], + "click": function () { + $(this).dialog("close"); + $("#add_num_fields").focus().select(); + } + }] + }); + $("#add_num_fields").focus().select(); + return false; + } + + // if the max number of fields is in place, check they're not adding more than they're allowed + if (fields_ns.limit_fields_enabled) { + var num_fields_on_page = fields_ns.get_num_fields_on_page(); + var remaining_num_fields = fields_ns.max_fields - num_fields_on_page; + fields_ns.update_max_field_count(); + if (remaining_num_fields <= 0) { + return false; + } + + if (num_fields > remaining_num_fields) { + num_fields = remaining_num_fields; + } + } + + var group = $("#group_new_fields").attr("checked"); + var new_row_template = $("#new_row_template").html(); + var fragment = document.createDocumentFragment(); + var html = ""; + + for (var i = 0; i < num_fields; i++) { + fields_ns.num_new_rows++; + var field = "NEW" + fields_ns.num_new_rows; + var new_row_html = new_row_template.replace(/%%ROW%%/g, field); + + if (group) { + html += new_row_html; + } else { + var new_row_node = sortable_ns.get_sortable_row_markup({ row_group: new_row_html }); + fragment.appendChild(new_row_node[0]); + } + } + + if (group) { + var grouped_row_nodes = sortable_ns.get_sortable_row_markup({ row_group: html }); + fragment = grouped_row_nodes[0]; + } + + var new_field_position = $("#new_field_position").val(); + + // jQuery's append and prepend are too slow for this situation, hence the DOM scripting + if (new_field_position == "start") { + var rows = $("#rows")[0]; + var first_row = null; + for (var i = 0; i < rows.childNodes.length; i++) { + if (rows.childNodes[i].nodeType == Node.ELEMENT_NODE) { + first_row = rows.childNodes[i]; + break; + } + } + if (first_row == null) { + document.getElementById("rows").appendChild(fragment); + } else { + rows.insertBefore(fragment, first_row); + } + } else if (new_field_position == "end") { + document.getElementById("rows").appendChild(fragment); + } else { + var row_group = $(".row_group").has("input.sr_order[value=" + new_field_position + "]"); + + // if there are later .row_group siblings, separate them into a new group + var has_next_grouped_row = row_group.next().length != 0; + if (has_next_grouped_row) { + sortable_ns._disconnect_row(row_group); + } + $(row_group).closest(".sortable_row").after(fragment); + } + + sortable_ns.reorder_rows($("#rows"), true); + fields_ns.update_fields_dropdown(); + + // update slider to slide all elements with .scroll-content class currently on page + fields_ns.init_sliders({ + scroll_panes: $(".scroll-pane"), + scroll_content: $(".scroll-content") + }); + + fields_ns.num_fields++; + fields_ns.update_max_field_count(); + + return false; +} + + +/** + * Helper function to find out the maximum number of rows that can be visible on the page, as determined + * by the user's window height. This is used for a little visual trickery: scrolling the field columns actually + * only scrolls the visible ones - not others. This significantly improves the responsiveness of the UI for + * forms with large numbers of fields. + */ +fields_ns._get_max_rows_on_page = function () { + var max_row_height = 23; + return parseInt($(window).height() / 23); +} + + +/** + * Any time the field content changes (fields are added, removed or re-sorted), the fields dropdown + * at the bottom right needs to be updated. + */ +fields_ns.update_fields_dropdown = function () { + var curr_value = $("#new_field_position").val(); + var options = ""; + $(".sortable .display_text").each(function () { + var field_id = $(this).closest(".row_group").find(".sr_order").val(); + var display_text = $(this).val(); + if (display_text == "") { + display_text = "[" + g.messages["word_row"] + " " + $(this).closest(".row_group").find(".col1").text() + "]"; + } + var selected = (field_id == curr_value) ? " selected" : ""; + options += "\n"; + }); + + $("#add_fields_list").html(options); +} + + +/** + * This smart-fills the DB Column field, by converting the display text to a simplified DB-friendly + * string. + */ +fields_ns.smart_fill = function () { + ft.create_dialog({ + dialog: fields_ns.smart_fill_dialog, + popup_type: "warning", + min_width: 450, + title: g.messages["phrase_smart_fill"], + content: "
      " + g.messages["confirm_smart_fill_db_column_fields_desc"] + "
      " + + g.messages["confirm_smart_fill_db_column_fields"], + buttons: [{ + "text": g.messages["word_okay"], + "click": function () { + var inserted_db_col_names = []; + $(".sortable .db_column").each(function () { + // the field ID is either a single integer, or an integer with the NEW prefix, to signify the + // user just added the field + var field_id_info = $(this).attr("id").match(/col_(NEW)?(\d+)_name/); + if (field_id_info[1] != undefined) { + field_id = "NEW" + field_id_info[2]; + } else { + field_id = field_id_info[2]; + } + + var display_text = $.trim($("#field_" + field_id + "_display_name").val()); + var new_db_col_name = display_text.replace(/\s+/g, "_"); + new_db_col_name = new_db_col_name.replace(/[^a-zA-Z0-9_]/g, "").toLowerCase(); + + // if it's a reserved word, or already taken, add an numeric suffix + var is_invalid = $.inArray(new_db_col_name.toUpperCase(), page_ns.reserved_words) != -1 || + $.inArray(new_db_col_name, inserted_db_col_names) != -1; + var suffix = 2; + var test_name = null; + while (is_invalid) { + test_name = new_db_col_name + suffix; + is_invalid = $.inArray(test_name.toUpperCase(), page_ns.reserved_words) != -1 || + $.inArray(test_name, inserted_db_col_names) != -1; + if (!is_invalid) { + break; + } + suffix++; + } + ; + + if (test_name != null) { + new_db_col_name = test_name; + } + + // lastly, if the display name consisted entirely of non a-Z0-9 chars, it'll be empty at this point. + // just set it to a default col_X value - it's all we can do + if (new_db_col_name == "") { + var prefix = "col_"; + var suffix = 1; + is_invalid = true; + var test_name = null; + while (is_invalid) { + test_name = prefix + suffix; + is_invalid = $.inArray(test_name, inserted_db_col_names) != -1; + if (!is_invalid) { + break; + } + suffix++; + } + ; + new_db_col_name = test_name; + } + + $(this).val(new_db_col_name); + + // make a note of this database column name, so we don't generate another column with the same name + inserted_db_col_names.push(new_db_col_name); + }); + $(this).dialog("close"); + } + }, + { + "text": g.messages["word_cancel"], + "click": function () { + $(this).dialog("close"); + } + }] + }); + + return false; +}; + + +/* + * Called on form submit: validates the entire page. + * + * @param object the form + */ +fields_ns.check_fields = function (f) { + var errors = []; + var field_name_list = []; + var col_name_list = []; + var errors_by_col = [0, 0, 0]; + + $(".sortable .display_text").each(function () { + var row_group = $(this).closest(".row_group"); + var field_id = row_group.find(".sr_order").val(); + var is_new_row = /^NEW/.test(field_id); + var display_text_field = row_group.find(".display_text"); + var display_text = $.trim(display_text_field.val()); + + if (display_text == "") { + // if it's a NEW row, ignore the entire row + if (is_new_row) { + return; + } + errors.push([this, g.messages["validation_no_display_text"]]); + errors_by_col[0]++; + } else { + $(display_text_field).removeClass("rsvErrorField"); + } + + // check the form name field isn't empty or invalid + var field_name_field = row_group.find(".field_names"); + if (field_name_field.length) { + var field_name = $.trim(field_name_field.val()); + if (!field_name) { + errors.push([$(field_name_field)[0], g.messages["validation_no_form_field_name"]]); + errors_by_col[0]++; + } else if (field_name.match(/[^0-9a-zA-Z_]/)) { + errors.push([$(field_name_field)[0], g.messages["validation_invalid_form_field_names"]]); + errors_by_col[0]++; + } else if ($.inArray(field_name, field_name_list) != -1) { + errors.push([$(field_name_field)[0], g.messages["validation_duplicate_form_field_name"]]); + errors_by_col[0]++; + } else { + field_name_field.removeClass("rsvErrorField"); + } + + field_name_list.push(field_name); + } + + // check the db_column + var db_column_field = row_group.find(".db_column"); + if (db_column_field.length) { + var db_column_name = $.trim(db_column_field.val()); + var return_info = fields_ns._is_valid_db_column_name(db_column_name, col_name_list); + if (!return_info.success) { + errors.push([$(db_column_field)[0], return_info.error]); + errors_by_col[2]++; + } else { + db_column_field.removeClass("rsvErrorField"); + } + + col_name_list.push(db_column_name); + } + }); + + // now scroll the region to the appropriate section, based on what cols had the errors + if (errors_by_col[0] > 0) { + fields_ns.change_scroll_area(0); + } else if (errors_by_col[1] > 0) { + fields_ns.change_scroll_area(50); + } else if (errors_by_col[2] > 0) { + fields_ns.change_scroll_area(100); + } + + return errors; +} + + +/** + * Helper function to determine if a database column name is valid or not. If success, + * + * @param col_name the column name to test + * @param col_name_list an optional param containing a list of existing columns. If this is + * defined, it will throw an error if the column name is already taken + * @return object { success: true/false, error: "string" } + */ +fields_ns._is_valid_db_column_name = function (col_name, col_name_list) { + + // tack on the core fields + col_name_list.push("submission_id"); + col_name_list.push("submission_date"); + col_name_list.push("last_submission_date"); + col_name_list.push("ip_address"); + col_name_list.push("is_finalized"); + + var return_info = { success: true, error: "" } + var db_column_name = $.trim(col_name); + if (db_column_name == "") { + return_info = { success: false, error: g.messages["validation_no_column_name"] }; + } else if (db_column_name.match(/\W/)) { + return_info = { success: false, error: g.messages["validation_invalid_column_name"] }; + } else if ($.inArray(db_column_name.toUpperCase(), page_ns.reserved_words) != -1) { + return_info = { success: false, error: g.messages["validation_col_name_is_reserved_word"] }; + } else if ($.inArray(db_column_name, col_name_list) != -1) { + return_info = { success: false, error: g.messages["validation_no_two_column_names"] }; + } + + return return_info; +} + + +fields_ns.change_scroll_area = function (percentage, ignore) { + var new_margin_left = 0; + if (percentage == 50) { + new_margin_left = -238; + } else if (percentage == 100) { + new_margin_left = -477; + } + $(".scrollable").attr("scrollLeft", 0); + $(".ui-slider-handle").css("left", percentage + "%"); + $(".sortable").find(".scrollable").each(function () { + $(this).find(".scroll-content").css("marginLeft", new_margin_left); + }); +} + + +/** + * Called whenever the user edits a field. This opens a dialog window containing all appropriate options + * for this field type. Note: the field type is found by looking at the current value in the page - not + * from the server. This ensures it gets the latest appropriate value. + * + * @param node row_group - the row_group node, containing the entire row of data already in the page. + */ +fields_ns.edit_field = function (row_group) { + $("#edit_field_template_message").addClass("hidden"); + var is_system_field = $(row_group).hasClass("system_field"); + + // keep track of the row group currently being edited + fields_ns.__current_editing_row_group = row_group; + var field_id = $(row_group).find(".sr_order").val(); + var is_new_field = (field_id.match(/^NEW/) != null) ? true : false; + + // if we're here, then we just started editing a field: the user hasn't changed the field type ID + fields_ns.__last_field_type_id = null; + fields_ns.__check_shared_characteristics = false; + + // find out if this field has already been edited and has values in memory + var field_values_cached = ($.inArray(field_id, fields_ns.memory.changed_field_ids) != -1) ? true : false; + + var tab1_fields = null; + if (field_values_cached) { + if (typeof fields_ns.memory["field_" + field_id].tab1 != "undefined") { + tab1_fields = fields_ns.memory["field_" + field_id].tab1; + } + } + + // if this field hasn't been added to the database yet, force it to show the first page + if (is_new_field) { + $("#edit_field_template_new_field").removeClass("hidden"); + $(".tab_row").hide(); + ft.change_inner_tab(1, "edit_field"); + } else { + $("#edit_field_template_new_field").addClass("hidden"); + $(".tab_row").show(); + } + + var display_text = ""; + if (tab1_fields) { + display_text = ft._extract_array_val(tab1_fields, "edit_field__display_text"); + } else { + display_text = row_group.find(".display_text").val(); + } + $("#edit_field__display_text").val(display_text); + + var field_type_id = null; + fields_ns.__current_field_id = field_id; + fields_ns.__current_field_is_system_field = is_system_field; + + var field_type_str = null; + + // system fields only allow the display text and pass-on fields to be edited + if (is_system_field) { + $(".edit_field__non_system").hide(); + $(".edit_field__system").show(); + field_type_id = row_group.find(".system_field_type_id").val(); + $("#edit_field__field_type_system").html(row_group.find(".system_field_type_label").html()); + $("#edit_field__db_column_div_system").html(row_group.find(".system_field_db_column").html()); + $("#edit_field__pass_on").attr("checked", row_group.find(".pass_on").attr("checked")); + field_type_str = $("#edit_field__field_type option[value=" + field_type_id + "]").text(); + } else { + $(".edit_field__non_system").show(); + $(".edit_field__system").hide(); + var field_type = row_group.find(".field_types"); + field_type_id = field_type.val(); + + // display all the various values for this field + if (tab1_fields) { + $("#edit_field__field_name").val(ft._extract_array_val(tab1_fields, "edit_field__field_name")); + $("#edit_field__field_type").val(ft._extract_array_val(tab1_fields, "edit_field__field_type")); + + ft.update_field_size_dropdown(field_type, $("#edit_field__field_size_div"), { + selected: ft._extract_array_val(tab1_fields, "edit_field__field_size"), + name: "edit_field__field_size", + id: "edit_field__field_size" + }); + + var pass_on = ft._extract_array_val(tab1_fields, "edit_field__pass_on"); + $("#edit_field__pass_on").attr("checked", ((pass_on == "") ? "" : "checked")); + $("#edit_field__data_type").val(ft._extract_array_val(tab1_fields, "edit_field__data_type")); + $("#edit_field__db_column").val(ft._extract_array_val(tab1_fields, "edit_field__db_column")); + } else { + $("#edit_field__field_name").val(row_group.find(".field_names").val()); + $("#edit_field__field_type").val(field_type_id); + + ft.update_field_size_dropdown(field_type, $("#edit_field__field_size_div"), { + selected: row_group.find(".field_sizes").val(), + name: "edit_field__field_size", + id: "edit_field__field_size" + }); + + $("#edit_field__pass_on").attr("checked", row_group.find(".pass_on").attr("checked")); + $("#edit_field__data_type").val(row_group.find(".data_types").val()); + $("#edit_field__db_column").val(row_group.find(".db_column").val()); + } + + // the string version of the field type + field_type_str = $("#edit_field__field_type :selected").text(); + } + + fields_ns.__current_field_type_id = field_type_id; + fields_ns.__last_field_type_id = field_type_id; + + fields_ns.update_validation_tab_label(field_type_id); + + // load the Field-Specific Settings tab + var has_field_settings = fields_ns.init_field_settings_tab(field_type_id, field_id); + + // update the previous/next links (grey them out if one or both aren't relevant) + if (sortable_ns._has_previous_field(row_group)) { + $("#edit_field_template .prev_field").removeClass("disabled"); + } else { + $("#edit_field_template .prev_field").addClass("disabled"); + } + if (sortable_ns._has_next_field(row_group)) { + $("#edit_field_template .next_field").removeClass("disabled"); + } else { + $("#edit_field_template .next_field").addClass("disabled"); + } + + var title = display_text + "(" + field_type_str + ")"; + + // finally, if the Edit Field dialog isn't already open, open it + if (!fields_ns.edit_field_dialog_opened) { + ft.create_dialog({ + dialog: $("#edit_field_template"), + title: title, + min_width: 720, + + // this fires the first time the dialog is opened - not when the user clicks from field to field + open: function () { + fields_ns.edit_field_dialog_opened = true; + }, + close: function () { + fields_ns.edit_field_dialog_opened = false; + }, + + buttons: [ + { + text: g.messages["phrase_save_changes"], + click: function () { + fields_ns.save_changes(); + } + }, + { + text: g.messages["word_close"], + click: function () { + fields_ns.memory = {}; + fields_ns.memory.changed_field_ids = []; + $(this).dialog("close"); + } + } + ] + }); + } else { + $("#edit_field_template").dialog({ title: title }); + } +} + + +/** + * Called whenever a field is loaded in the Edit Field dialog: regardless of what tab is currently being + * displayed. This constructs the appropriate markup on the Field-Specific Settings tab (i.e. the setting + * fields for the particular field type) and loads it in the page - but HIDDEN. It then does an Ajax + * call to retrieve the extended field info. When that's completed the settings are displayed in the page. + * + * The other scenario is when a user is editing one field to the next, then returns to a field that they've + * already edited. In that case, the updated values are stored in fields_ns.memory["field_X"].tab2. If that + * contains values, the field settings are loaded from there. Lastly: the Field Type field on the first tab + * changes the contents of the field settings tab. As such...? TODO + * + * @return boolean true if the field type has settings, false otherwise + */ +fields_ns.init_field_settings_tab = function (field_type_id, field_id) { + var field_settings = page_ns.field_settings["field_type_" + field_type_id]; + + // get the string name of the second tab. To make it totally clear, we give the second tab a label like + // "Textbox Settings" or "Phone Number Settings" + var field_type_label = $("#edit_field__field_type option[value=" + field_type_id + "]").text(); + + // no extended settings + if (field_settings == undefined) { + $("#edit_field_template .inner_tab2").html(field_type_label + " " + g.messages["word_settings"] + " (0)"); + $("#edit_field__field_settings").html("
      " + g.messages["notify_no_field_settings"] + "
      "); + $("#edit_field__field_settings_loading").hide(); + return false; + } else { + $("#edit_field_template .inner_tab2").html(field_type_label + " " + g.messages["word_settings"] + " (" + field_settings.length + ")"); + } + + // generate the field settings markup and embed it in the page + var html = fields_ns.generate_field_type_markup(field_id, field_type_id, field_settings); + $("#edit_field__field_settings").html(html); + + // now load the actual settings for this field from the server. If this information is already loaded (or is + // currently loading), use that. Otherwise do a fresh Ajax request + if (fields_ns.cached_loaded_extended_field["field_id_" + field_id] == undefined) { + fields_ns.cached_loaded_extended_field["field_id_" + field_id] = { + loaded: false, + settings: [], + validation: [] + }; + $("#edit_field__field_settings_loading").show(); + $("#edit_field__field_settings").hide(); + ft.dialog_activity_icon($("#edit_field_template"), "show"); + + if (!/^NEW/.test(field_id)) { + $.ajax({ + url: g.root_url + "/global/code/actions.php", + type: "POST", + dataType: "json", + data: { field_id: field_id, field_type_id: field_type_id, action: "get_extended_field_settings" }, + success: fields_ns.load_field_settings_response, + error: ft.error_handler + }); + } + } else { + // if the request has already been returned from the server, display the data. Otherwise, + // the Ajax response method will handle the loading of the data appropriately + if (fields_ns.cached_loaded_extended_field["field_id_" + field_id].loaded) { + var data = fields_ns.cached_loaded_extended_field["field_id_" + field_id]; + fields_ns.display_field_settings(field_type_id, data.settings, data.validation); + } + } + + return true; +} + + +/** + * This is called whenever the user opens the Edit Field dialog on a field that has a field type with + * extended settings - that includes going from field to field with the "prev/next" nav. It constructs the + * markup and if all the markup was available, stores it in cache (fields_ns.cached_field_setting_markup). + * This function also checks shared characteristics to map over as much shared data as possible. + * + * @param integer field_id + * @param integer field_type_id + * @param array settings + */ +fields_ns.generate_field_type_markup = function (field_id, field_type_id, field_settings) { + var html = ""; + if (fields_ns.cached_field_settings_markup["field_type_" + field_type_id] !== undefined) { + html = fields_ns.cached_field_settings_markup["field_type_" + field_type_id]; + fields_ns.__check_shared_characteristics_cond2 = true; + fields_ns.check_shared_characteristics(); + } else { + // the assumption is that we can cache the markup we're about to generate. However, some field types rely on + // other requests: namely, option lists and form fields. At the time this function is called, those requests + // may not have returned. In those instances, we don't want to cache the markup since it would be incomplete + var may_cache = true; + + // all fields are disabled by default. Once the Ajax call to load the values for the actual field + // has completed, they are enabled & the Ajax loading icon is hidden to signify readiness + html = "" + + "" + + "" + + "" + + "" + + ""; + + for (var i = 0; i < field_settings.length; i++) { + var info = field_settings[i]; + html += "" + + "" + + ""; + } + html += "
      " + g.messages["word_setting"] + "" + g.messages["phrase_use_default_value_q"] + "" + g.messages["word_value"] + "
      " + info.field_label + ""; + + var display_use_default_checkbox = true; + if (info.field_type == "option_list_or_form_field") { + display_use_default_checkbox = false; + } + + // Note we don't add a name attribute to the checkbox. The server-side code doesn't actually need that info: in the + // absence of a custom value, it will use the default + if (display_use_default_checkbox) { + html += ""; + } else { + html += ""; + } + + html += ""; + + switch (info.field_type) { + case "textbox": + html += ""; + break; + + case "textarea": + html += ""; + break; + + case "select": + html += ""; + break; + + case "checkboxes": + for (var j = 0; j < info.options.length; j++) { + if (j > 0) { + html += (info.field_orientation == "vertical") ? "
      " : " "; + } + var opt = info.options[j]; + var checked = (opt.value == info.default_value) ? "checked" : ""; + html += "" + + ""; + } + break; + + case "radios": + for (var j = 0; j < info.options.length; j++) { + if (j > 0) { + html += (info.field_orientation == "vertical") ? "
      " : " "; + } + var opt = info.options[j]; + var checked = (opt.value == info.default_value) ? "checked" : ""; + html += "" + + ""; + } + break; + + case "multi-select": + html += ""; + break; + + case "option_list_or_form_field": + html += "
      "; + + // if either of the requests for the option lists or forms haven't returned yet, queue the job of updating + // the markup in this page. That will fire once that data has become available. Also, we make a note NOT to + // cache this field's markup. N.B. if the user has gone to a new page, nothing happens + if (fields_ns.option_lists == null || fields_ns.forms == null) { + may_cache = false; + (function (setting_id, default_value) { + ft.queue.push([ + function () { + }, + function () { + var option_lists_ready = (fields_ns.option_lists != null); + var forms_ready = (fields_ns.forms != null); + if (option_lists_ready && forms_ready) { + $("#option_list_div_" + setting_id).html(fields_ns._generate_option_list_markup(setting_id, default_value)); + fields_ns.__check_shared_characteristics_cond2 = true; + fields_ns.check_shared_characteristics(); + } + + // here, the Option List markup has been loaded, but the value hasn't been set. This can occur because at + // the time that this function was called, the extended fields weren't loaded. See comment above for the + // definition of onload_field_setting_values + for (var j = 0; j < fields_ns.onload_field_setting_values.length; j++) { + if (fields_ns.onload_field_setting_values[j].setting_id == setting_id) { + $("#option_list_div_" + setting_id).html(fields_ns._generate_option_list_markup(setting_id, fields_ns.onload_field_setting_values[j].setting_value)); + } + } + + // no emptying of onload_field_setting_values? + + return option_lists_ready; + } + ]); + ft.process_queue(); + })(info.setting_id, info.default_value); + } else { + html += fields_ns._generate_option_list_markup(info.setting_id, info.default_value); + } + + html += "
      "; + break; + } + html += "
      "; + + // if we can cache it, we do + if (may_cache) { + fields_ns.cached_field_settings_markup["field_type_" + field_type_id] = html; + fields_ns.__check_shared_characteristics_cond2 = true; + fields_ns.check_shared_characteristics(); + } + } + + return html; +} + + +/** + * This is called once fields_ns.option_lists AND fields_ns.forms are populated with the appropriate info. + * It generates the markup for the main select box, which the user can choose to pick an Option List or map the + * field to another form's field. + * + * Kind of a klutzy function. Only ever used to load the Option List markup on page load - not the Form Field markup. + */ +fields_ns._generate_option_list_markup = function (setting_id, default_value) { + var option_list_selected = false; + var option_list_html = ""; + $.each(fields_ns.option_lists, function (value, text) { + var selected = ""; + if (value == default_value) { + selected = " selected"; + option_list_selected = true; + } + option_list_html += ""; + }); + + var forms_selected = false; + var forms_html = ""; + $.each(fields_ns.forms, function (value, text) { + // never output the CURRENT form + if (value == page_ns.form_id) { + return; + } + // note the "ft" field type prefix! + forms_html += ""; + }); + + if (option_list_html == "" && forms_html == "") { + return g.messages["phrase_no_option_lists_available"] + + ""; + } + + var html = "" + + ""; + + var forms_hidden = (forms_selected) ? "" : " style=\"display:none\""; + + // the contents of this section (the form field dropdown & order options) are loaded dynamically + html += "
      "; + + return html; +} + + +/** + * For now, this just does a quick check to confirm that the user doesn't have unsaved changes, then + * redirects to the Option List page. It would be very nice, however, to integrate the Option Lists better + * so that the user can edit the option list details right in the dialog. + */ +fields_ns.edit_option_list = function (setting_id) { + var list_id = $("#edit_field__setting_" + setting_id).val(); + + if (!list_id) { + $("#edit_field_template_message").removeClass("hidden"); + ft.display_message("edit_field_template_message", 0, g.messages["notify_edit_option_list_after_save"]); + return false; + } + + var edit_option_list_url = g.root_url + "/admin/forms/option_lists/edit.php?page=main&list_id=" + list_id; + + if (fields_ns.memory.changed_field_ids.length == 0) { + window.location = edit_option_list_url; + } else { + // hide the main parent dialog. We'll re-show it if the user cancels + $("#edit_field_template").closest(".ui-dialog").hide(); + ft.create_dialog({ + dialog: fields_ns.confirm_redirect_dialog, + popup_type: "warning", + content: g.messages["confirm_save_change_before_redirect"], + title: g.messages["phrase_please_confirm"], + buttons: [ + { + text: g.messages["word_yes"], + click: function () { + $.ajax({ + url: g.root_url + "/global/code/actions.php", + data: { + form_id: page_ns.form_id, + action: "update_form_fields", + data: fields_ns.memory, + return_vars: { url: edit_option_list_url } + }, + type: "POST", + dataType: "json", + success: function (data) { + if (data.success == 1) { + window.location = data.url; + } + }, + error: function (xhr, text_status, error_thrown) { + ft.dialog_activity_icon($("#confirm_before_redirect_dialog"), "hide"); + $("#confirm_before_redirect_dialog").dialog("close"); + $("#edit_field_template").dialog("close"); + ft.error_handler(xhr, text_status, error_thrown); + } + }); + + ft.dialog_activity_icon($("#confirm_before_redirect_dialog"), "show"); + } + }, + { + text: g.messages["word_no"], + click: function () { + ft.dialog_activity_icon($("#confirm_before_redirect_dialog"), "show"); + window.location = edit_option_list_url; + } + }, + { + text: g.messages["word_cancel"], + click: function () { + $(this).dialog("close"); + $("#edit_field_template").closest(".ui-dialog").show(); + } + } + ] + }); + } + return false; +} + + +/** + * Called when the user clicks on the "Create New Option List" link. All it does is redirect to the Option List page + * and tell it to create a new Option List & assign it to the current field ID. + */ +fields_ns.create_new_option_list = function () { + window.location = "../option_lists/index.php?add_option_list=1&field_id=" + fields_ns.__current_field_id; + return false; +} + + +/** + * This is called for fields that have types with one or more (possible) extended fields. + */ +fields_ns.load_field_settings_response = function (data) { + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(data)) { + return; + } + + // store the info in memory. This memory is invalidated anytime the user changes the field type + // for the field + fields_ns.cached_loaded_extended_field["field_id_" + data.field_id] = { + loaded: true, + field_type_id: data.field_type_id, + settings: data.settings, + validation: data.validation + }; + + // if the user is currently editing the same field as the info returned in this request, + // display the data + if (data.field_id == fields_ns.__current_field_id) { + fields_ns.display_field_settings(data.field_type_id, data.settings, data.validation); + } + + // check to see if there are any open requests to the server. If none, hide the loading icon + var has_open_thread = false; + for (var item in fields_ns.cached_loaded_extended_field) { + if (fields_ns.cached_loaded_extended_field[item].loading === false) { + has_open_thread = true; + break; + } + } + if (!has_open_thread) { + ft.dialog_activity_icon($("#edit_field_template"), "hide"); + } +} + + +/** + * This updates the HTML to show a field's settings. This is loaded after the settings have become available. + * Note: it's possible that the option list or forms request hasn't been returned yet. + */ +fields_ns.display_field_settings = function (field_type_id, settings, validation) { + + // see if there's already some values stashed in memory for this field. If there IS, we use those + // values rather that what's being passed via the settings param. This is klutzy. + var load_validation_from_memory = false; + if (typeof fields_ns.memory["field_" + fields_ns.__current_field_id] != 'undefined') { + + // tab 2 + if (typeof fields_ns.memory["field_" + fields_ns.__current_field_id].tab2 != 'undefined' && + fields_ns.memory["field_" + fields_ns.__current_field_id].tab2 != null) { + var unsaved_changes = fields_ns.memory["field_" + fields_ns.__current_field_id].tab2; + var updated_settings = []; + for (var i = 0; i < settings.length; i++) { + var curr_setting_id = settings[i].setting_id; + var curr_setting = settings[i]; + for (var j = 0; j < unsaved_changes.length; j++) { + var setting_name = "edit_field__setting_" + curr_setting_id; + if (unsaved_changes[j].name == setting_name) { + curr_setting.setting_value = unsaved_changes[j].value; + curr_setting.uses_default = false; + } + } + updated_settings.push(curr_setting); + } + settings = updated_settings; + } + + // tab 3 + if (typeof fields_ns.memory["field_" + fields_ns.__current_field_id].tab3 != 'undefined') { + load_validation_from_memory = true; + } + } + + for (var i = 0, j = settings.length; i < j; i++) { + var curr_setting_id = settings[i].setting_id; + $("#edit_field__use_default_value_" + curr_setting_id).attr("disabled", ""); + $("#edit_field__use_default_value_" + curr_setting_id).attr("checked", (settings[i].uses_default) ? "checked" : ""); + + var field_type_info = {}; + var field_settings = page_ns.field_settings["field_type_" + field_type_id]; + for (var k = 0; k < field_settings.length; k++) { + if (field_settings[k].setting_id == curr_setting_id) { + field_type_info = field_settings[k]; + break; + } + } + + switch (field_type_info.field_type) { + case "textbox": + case "textarea": + case "select": + $("#edit_field__setting_" + curr_setting_id).val(settings[i].setting_value); + if (!settings[i].uses_default) { + $("#edit_field__setting_" + curr_setting_id).removeClass("light_grey").attr("disabled", ""); + } + break; + case "radios": + var radios = $("input[name=edit_field__setting_" + curr_setting_id + "]"); + radios.filter("[value=" + settings[i].setting_value + "]").attr("checked", "checked"); + if (!settings[i].uses_default) { + radios.removeClass("light_grey").attr("disabled", ""); + } + break; + case "option_list_or_form_field": + var is_form_field = settings[i].setting_value.toString().match(/^form_field/); + + // we can't just set the form field values because we have a few asyncronous dependencies: we need + // to ensure that both the Option Lists and the form list has been loaded + if (is_form_field) { + (function (setting_id, setting_value) { + ft.queue.push([ + function () { + }, + function () { + var option_lists_ready = (fields_ns.option_lists != null); + var forms_ready = (fields_ns.forms != null); + if (option_lists_ready && forms_ready) { + var parts = setting_value.replace(/form_field:/, "").split("|"); + var form_id = parts[0]; + var field_id = parts[1]; + var field_order = parts[2]; + $("#edit_field__setting_" + setting_id).val("ft" + parts[0]); + + // now request the form fields + if (fields_ns.form_fields["form_" + form_id] == undefined) { + fields_ns.load_form_fields({ + form_id: form_id, + field_id: field_id, + field_order: field_order + }); + } else { + fields_ns.generate_form_fields_section({ + form_id: form_id, + field_id: field_id, + field_order: field_order + }); + } + } + return (option_lists_ready && forms_ready); + } + ]); + ft.process_queue(); + })(curr_setting_id, settings[i].setting_value); + } else { + if (fields_ns.option_lists == null) { + + } else { + $("#edit_field__setting_" + curr_setting_id).val(settings[i].setting_value); + $("#edit_field__option_list_options").show(); + $("#edit_field__form_options").hide(); + + // in case the Option List section wasn't loaded yet, store it in memory + fields_ns.onload_field_setting_values.push({ + setting_id: curr_setting_id, + setting_value: settings[i].setting_value + }); + } + } + break; + + default: + //console.log(field_type_info); + break; + } + } + + // now create the validation table + var html = fields_ns.generate_field_type_validation_table(field_type_id); + $("#validation_table").html(html); + + // now display the validation rules + var num_rules = 0; + if (load_validation_from_memory) { + var rules = fields_ns.memory["field_" + fields_ns.__current_field_id].tab3; + for (var i = 0; i < rules.length; i++) { + var match = rules[i].name.match(/^edit_field__v_(.*)_message$/); + if (match) { + var rule_id = match[1]; + $("#edit_field__v_" + rule_id).attr("checked", "checked"); + $("#edit_field__v_" + rule_id + "_message").removeClass("light_grey").attr("disabled", "").val(rules[i].value); + } + } + } else { + for (var i = 0; i < validation.length; i++) { + var rule_id = validation[i].rule_id; + var message = validation[i].error_message.replace(/\\/g, ""); + $("#edit_field__v_" + rule_id).attr("checked", "checked"); + $("#edit_field__v_" + rule_id + "_message").removeClass("light_grey").attr("disabled", "").val(message); + } + } + + fields_ns.update_validation_tab_label(field_type_id); + + // now show the markup + $("#edit_field__field_settings_loading").hide(); + $("#edit_field__field_settings").show(); +} + + +fields_ns.update_validation_tab_label = function (field_type_id) { + var num_rules = 0; + if (typeof page_ns.field_validation["field_type_" + field_type_id] != "undefined") { + num_rules = page_ns.field_validation["field_type_" + field_type_id].length; + } + if (fields_ns.__current_field_is_system_field) { + num_rules = 0; + } + $("#edit_field_template .inner_tab3").html(g.messages["word_validation"] + " (" + num_rules + ")"); +} + + +/** + * Called when the user clicks on the "<< previous field" link in the Edit Field dialog. + */ +fields_ns.edit_prev_field = function () { + if ($("#edit_field_template .prev_field").hasClass("disabled")) { + return false; + } + + // only let the user change fields if this page passes validation + if (!fields_ns.validate_field()) { + return false; + } + + // get the previous field and update the Edit Field dialog + var previous_row_group = sortable_ns._get_previous_row_group(fields_ns.__current_editing_row_group); + fields_ns.edit_field(previous_row_group); +} + + +/** + * Called when the user clicks on the "next field >>" link in the Edit Field dialog. + */ +fields_ns.edit_next_field = function () { + if ($("#edit_field_template .next_field").hasClass("disabled")) { + return false; + } + + // only let the user change fields if this page passes validation + if (!fields_ns.validate_field()) { + return false; + } + + // get the next field and update the Edit Field dialog + var next_row_group = sortable_ns._get_next_row_group(fields_ns.__current_editing_row_group); + fields_ns.edit_field(next_row_group); +} + + +fields_ns.save_changes = function () { + // 1. call Ajax query to save it + // 2. if successful, update the parent page + // 3. display message in page saying "saved!" + + // if nothing's been changed, just close the popup. We also show a "saved!" message because it feels + // more natural to the user that way + if (fields_ns.memory.changed_field_ids.length == 0) { + $("#edit_field_template").dialog("close"); + ft.display_message("ft_message", 1, g.messages["notify_field_changes_saved"]); + return; + } + + // only let the user change fields if this page passes validation + if (!fields_ns.validate_field()) { + return false; + } + + $.ajax({ + url: g.root_url + "/global/code/actions.php", + data: { form_id: page_ns.form_id, action: "update_form_fields", data: fields_ns.memory }, + type: "POST", + dataType: "json", + success: fields_ns.save_changes_response, + error: function (xhr, text_status, error_thrown) { + ft.dialog_activity_icon($("#edit_field_template"), "hide"); + $("#edit_field_template").dialog("close"); + ft.error_handler(xhr, text_status, error_thrown); + } + }); + + ft.dialog_activity_icon($("#edit_field_template"), "show"); +} + + +fields_ns.save_changes_response = function (data) { + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(data)) { + return; + } + + // if there were no problems updating the fields, we just update the parent page with the latest values + // and close the dialog + if (data.success == 1) { + for (var i = 0; i < fields_ns.memory.changed_field_ids.length; i++) { + var field_id = fields_ns.memory.changed_field_ids[i]; + + if (typeof fields_ns.memory["field_" + field_id].tab1 != "undefined" && fields_ns.memory["field_" + field_id].tab1 != null) { + $("#field_" + field_id + "_include_on_redirect").attr("checked", ""); + $.each(fields_ns.memory["field_" + field_id].tab1, function (index, info) { + switch (info.name) { + case "edit_field__display_text": + $("#field_" + field_id + "_display_name").val(info.value); + break; + case "edit_field__field_name": + $("#field_" + field_id + "_name").val(info.value); + break; + case "edit_field__field_type": + $("#field_" + field_id + "_type_id").val(info.value); + // we also update the old field_type_id value. So, if the user ends up clicking "save" from the main + // page, the server doesn't try to do any extra clean-up work to delete the old field type-dependent settings + $("#old_field_" + field_id + "_type_id").val(info.value); + break; + case "edit_field__pass_on": + $("#field_" + field_id + "_include_on_redirect").attr("checked", "checked"); + break; + case "edit_field__field_size": + $("#old_field_" + field_id + "_size").val(info.value); + $("#field_" + field_id + "_size").val(info.value); + break; + case "edit_field__data_type": + $("#field_" + field_id + "_data_type").val(info.value); + break; + case "edit_field__db_column": + $("#old_col_" + field_id + "_name").val(info.value); + $("#col_" + field_id + "_name").val(info.value); + break; + } + }); + } + } + + ft.dialog_activity_icon($("#edit_field_template"), "hide"); + $("#edit_field_template").dialog("close"); + ft.display_message("ft_message", 1, g.messages["notify_field_changes_saved"]); + fields_ns.memory = {}; + fields_ns.memory.changed_field_ids = []; + + // we ALSO empty the cache here. Strictly speaking, this isn't necessary: we could just be smart and update the + // cache with the updated values, but (a) this keeps it simple and (b) ensures that one re-editing we get + // the latest content + fields_ns.cached_loaded_extended_field = []; + } else { + ft.display_message("ft_message", 0, g.messages["notify_error_saving_fields"]); + } +} + + +/** + * This is called any time a user clicks from one field to the next in the Edit Field dialog, or clicks + * Save Changes. It checks that the values entered in the current field are valid. Namely: + * - all required fields are filled in (tab 1) + * - if an option list or form field setting is defined, it's also filled in + * + * @return boolean passes validation or not + */ +fields_ns.validate_field = function () { + var errors = []; + var first_tab_with_error = 1; + + var is_system_field = $(".sr_order[value=" + fields_ns.__current_field_id + "]").closest(".row_group").hasClass("system_field"); + var display_text = $.trim($("#edit_field__display_text").val()); + if (display_text == "") { + errors.push(["#edit_field__display_text", "validation_no_display_text_single"]); + } + + if (!is_system_field) { + var form_field = $.trim($("#edit_field__field_name").val()); + if (form_field == "") { + errors.push(["#edit_field__field_name", "validation_no_form_field_single"]); + } else if (form_field.match(/[^0-9a-zA-Z_]/)) { + errors.push(["#edit_field__field_name", "validation_invalid_form_field_names"]); + } + var db_column = $.trim($("#edit_field__db_column").val()); + if (db_column == "") { + errors.push(["#edit_field__db_column", "validation_no_db_column_single"]); + } + + // TODO: intelligently validate database column name here + } + + if (errors.length > 0) { + $("#edit_field_template_message").removeClass("hidden"); + ft.change_inner_tab(first_tab_with_error, "edit_field"); + $(errors[0][0]).focus(); + + var error_str = ""; + if (errors.length == 1) { + error_str = g.messages[errors[0][1]]; + } else { + for (var i = 0; i < errors.length; i++) { + error_str += "• " + g.messages[errors[i][1]] + "
      "; + } + } + ft.display_message("edit_field_template_message", 0, error_str); + } + + return errors.length == 0; +} + + +fields_ns.load_form_fields = function (params) { + var params = $.extend({ + // required + form_id: null, + + // optional + field_id: null, + field_order: null + }, params); + + // always remove the ft prefix + params.form_id = params.form_id.replace(/^ft/, ""); + + $("#edit_field__form_options").html("
      "); + $.ajax({ + url: g.root_url + "/global/code/actions.php", + type: "POST", + dataType: "json", + data: { + action: "get_form_fields", + form_id: params.form_id, + field_id: params.field_id, + field_order: params.field_order + }, + success: fields_ns.get_form_fields_response, + error: ft.error_handler + }); +} + + +fields_ns.get_form_fields_response = function (data) { + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(data)) { + return; + } + + fields_ns.form_fields["form_" + data.form_id] = data.fields; + + // if the user still has this form selected in the Edit Field dialog, load the info into a dropdown + if ($(".option_list_or_form_field :selected").val() == "ft" + data.form_id.toString()) { + fields_ns.generate_form_fields_section({ + form_id: data.form_id, + field_id: data.field_id, + field_order: data.field_order + }); + } +} + +// this is called once we know that a form's fields have been loaded. It populates the section in the +// Edit Field dialog that allows the user to select a form field to be the source data of a dropdown +fields_ns.generate_form_fields_section = function (params) { + params = $.extend({ + // required + form_id: null, + + // optional + field_id: "", + field_order: "" + }, params); + + var fields = fields_ns.form_fields["form_" + params.form_id]; + + // to create the name attribute of these fields, we do something a little fussy. The name is requires so that + // this value will be stored by the automatic serializer which fires whenever the tab content changes. Since + // (in theory) a field type can have any number of Option Lists, we want to give each form field dropdown + + // form field order dropdown their own unique name so that the server-side code can figure out what's stored + // by what field. But we only have the current field ID + form_id at our disposal. So, we find it by parsing + // the DOM. + var setting_id = null; + $("#edit_field__form_options").parent().find(".option_list_or_form_field").each(function () { + setting_id = $(this).attr("id").replace(/edit_field__setting_/, ""); + }); + + var field_dd = ""; + + var html = "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""; + + $("#edit_field__form_options").html(html); +} + + +fields_ns.click_use_default = function (el) { + var is_checked = $(el).attr("checked"); + var setting_id = $(el).attr("id").replace(/^edit_field__use_default_value_/, ""); + var settings_selectors = '#edit_field__setting_' + setting_id + ',[id^="edit_field__setting_' + setting_id + '_"]'; + if (is_checked) { + $(settings_selectors).attr("disabled", "disabled").addClass("light_grey"); + } else { + $(settings_selectors).attr("disabled", "").removeClass("light_grey"); + $("#edit_field__setting_" + setting_id).focus(); + } + $(el).trigger("change"); +} + + +/** + * This is called onblur after the user changed a field type AND after the actual field settings are returned and loaded + * for a field. It checks for both conditions; when they're both completed, it + */ +fields_ns.check_shared_characteristics = function () { + var curr_ft_id = fields_ns.__current_field_type_id; + var last_ft_id = fields_ns.__last_field_type_id; + + if (curr_ft_id == last_ft_id) { + return; + } + if (!fields_ns.__check_shared_characteristics_cond1 || !fields_ns.__check_shared_characteristics_cond2) { + return; + } + if (typeof page_ns.field_settings["field_type_" + curr_ft_id] == "undefined" || + typeof page_ns.field_settings["field_type_" + last_ft_id] == "undefined") { + return; + } + + var curr_setting_ids = []; + for (var i = 0; i < page_ns.field_settings["field_type_" + curr_ft_id].length; i++) { + var curr_setting_id = page_ns.field_settings["field_type_" + curr_ft_id][i].setting_id; + if (page_ns.shared_characteristics["s" + curr_setting_id] != undefined) { + curr_setting_ids.push(curr_setting_id); + } + } + var last_setting_ids = []; + for (var i = 0; i < page_ns.field_settings["field_type_" + last_ft_id].length; i++) { + var last_setting_id = page_ns.field_settings["field_type_" + last_ft_id][i].setting_id; + if (page_ns.shared_characteristics["s" + last_setting_id] != undefined) { + last_setting_ids.push(last_setting_id); + } + } + + if (!curr_setting_ids.length || !last_setting_ids.length) { + return; + } + + // So. We have the subset of all setting IDs of both the PREVIOUS and CURRENT field types that have + // associated shared characteristics. Now we need to determine which are actually shared so we can copy over the old + // setting values + + var found_map = []; + for (var i = 0; i < last_setting_ids.length; i++) { + var last_shared_characteristic_ids = page_ns.shared_characteristics["s" + last_setting_ids[i]]; + + for (var j = 0; j < curr_setting_ids.length; j++) { + var curr_shared_characteristic_ids = page_ns.shared_characteristics["s" + curr_setting_ids[j]]; + for (var k = 0; k < curr_shared_characteristic_ids.length; k++) { + // FINALLY, we know there's a map. Make a note of the old & new setting IDs + if ($.inArray(curr_shared_characteristic_ids[k], last_shared_characteristic_ids) != -1) { + found_map.push([last_setting_ids[i], curr_setting_ids[j]]); + } + } + } + } + + var old_values = fields_ns.memory["field_" + fields_ns.__current_field_id].tab2; + for (var i = 0; i < found_map.length; i++) { + var old_setting_id = found_map[i][0]; + var new_setting_id = found_map[i][1]; + + for (var j = 0; j < old_values.length; j++) { + if (old_values[j].name == undefined || old_values[j].value == undefined) { + continue; + } + if (old_values[j].name != "edit_field__setting_" + old_setting_id) { + continue; + } + $("#edit_field__use_default_value_" + new_setting_id).attr("checked", ""); + $("#edit_field__setting_" + new_setting_id).val(old_values[j].value).removeClass("light_grey").attr("disabled", ""); + } + } + + fields_ns.__check_shared_characteristics_cond1 = false; + fields_ns.__check_shared_characteristics_cond2 = false; +} + + +fields_ns.generate_field_type_validation_table = function (field_type_id) { + var html = ""; + if (typeof page_ns.field_validation["field_type_" + field_type_id] == "undefined") { + html = "" + g.messages["phrase_field_type_no_validation"] + ""; + } else { + html += "
      " + g.messages["phrase_select_field"] + "" + field_dd + "
      " + g.messages["word_order"] + "
      " + + "" + + "" + + "" + + "" + + ""; + + var rules = page_ns.field_validation["field_type_" + field_type_id]; + for (var i = 0; i < rules.length; i++) { + var rule_id = rules[i].rule_id; + var label = rules[i].label; + html += "" + + "" + + "" + + "" + + "" + } + + html += "
      " + g.messages["phrase_validation_rule"] + "" + g.messages["text_error_message_to_show"] + "
      "; + } + + return html; +} + + +fields_ns._get_default_error_message = function (field_type_id, rule_id) { + var error = ""; + var rules = page_ns.field_validation["field_type_" + field_type_id]; + for (var i = 0; i < rules.length; i++) { + if (rules[i].rule_id == rule_id) { + error = rules[i].error; + break; + } + } + return error; +} + + +/** + * Helper function to return the number of fields on the page. + */ +fields_ns.get_num_fields_on_page = function () { + return $("#rows .row_group").length; +} + + +/** + * Added in 2.2.3. This is used when the $g_max_ft_form_fields global is set, which limits the number of + * fields that a form may contain. This is called on page load and any time a user adds/deletes a field. + */ +fields_ns.update_max_field_count = function () { + if (!fields_ns.limit_fields_enabled) { + return; + } + + var remaining_fields = fields_ns.max_fields - fields_ns.num_fields; + $("#max_field_count").html(fields_ns.max_fields); + $("#curr_field_count").html(fields_ns.num_fields); + + if (remaining_fields <= 0) { + $("#add_num_fields,#new_field_position,#group_new_fields,#add_field").attr("disabled", "disabled"); + } else { + $("#add_num_fields,#new_field_position,#group_new_fields,#add_field").removeAttr("disabled"); + } +} + + +fields_ns.delete_field = function (el) { + sortable_ns.delete_row("edit_fields", el); + fields_ns.num_fields--; + setTimeout(function () { + fields_ns.update_max_field_count(); + }, 500); +} diff --git a/global/scripts/manage_fields.min.js b/global/scripts/manage_fields.min.js new file mode 100644 index 00000000..2cb0570f --- /dev/null +++ b/global/scripts/manage_fields.min.js @@ -0,0 +1 @@ +;$(function(){var scroll_panes=$(".scroll-pane");var scroll_content=$(".scroll-content");fields_ns.init_sliders({scroll_panes:scroll_panes,scroll_content:scroll_content});var handleHelper=fields_ns.scrollbars.find(".ui-slider-handle").mousedown(function(){fields_ns.scrollbars.width(handleHelper.width())}).mouseup(function(){fields_ns.scrollbars.width("100%")}).append("").wrap("
      ").parent();scroll_panes.css("overflow","hidden");function size_scrollbars(){var remainder=scroll_content.width()-scroll_panes.width();var proportion=remainder/scroll_content.width();var handle_size=scroll_panes.width()-(proportion*scroll_panes.width());fields_ns.scrollbars.find(".ui-slider-handle").css({width:handle_size,"margin-left":-handle_size/2});handleHelper.width("").width(fields_ns.scrollbars.width()-handle_size)}setTimeout(size_scrollbars,10);$("#display_form").bind("submit",function(e){var rules=[];rules.push("function,fields_ns.check_fields");fields_ns.__disable_focusin=true;if(!rsv.validate(this,rules)){e.preventDefault();fields_ns.__disable_focusin=false}});$(".rows").bind("focusin",function(e){if(fields_ns.__disable_focusin){return}var currentField=e.target;if($(currentField).hasClass("display_text")){fields_ns.__onfocus_display_text_value=$(currentField).val()}var parent_scrollable=$(currentField).closest(".scrollable");if(parent_scrollable.hasClass("col3")){var scrollLeft=parent_scrollable.attr("scrollLeft");var marginLeft=parseInt($(currentField).closest(".scroll-content").css("marginLeft"));if(scrollLeft!=0){var left_percentage=(marginLeft<=0&&marginLeft>-238)?50:100;fields_ns.change_scroll_area(left_percentage)}}});$(".rows").bind("focusout",function(e){if(!$(e.target).hasClass("display_text")){return}if($(e.target).val()!=fields_ns.__onfocus_display_text_value){fields_ns.update_fields_dropdown()}});$(".rows").live("click",function(e){if($(e.target).hasClass("edit")){fields_ns.edit_field($(e.target).closest(".row_group"))}});$("#edit_field_template .prev_field").bind("click",function(e){fields_ns.edit_prev_field()});$("#edit_field_template .next_field").bind("click",function(e){fields_ns.edit_next_field()});$(".use_default").live("click",function(){fields_ns.click_use_default(this)});$("#edit_field__field_type").live("change keyup",function(){ft.update_field_size_dropdown(this,$("#edit_field__field_size_div"),{id:"edit_field__field_size",name:"edit_field__field_size",selected:$('#edit_field__field_size').val()});var field_type_id=$(this).val();var field_settings=page_ns.field_settings["field_type_"+field_type_id];var field_type_label=$("#edit_field__field_type option[value="+field_type_id+"]").text();if(field_settings==undefined){$("#edit_field_template .inner_tab2").html(field_type_label+" "+g.messages["word_settings"]+" (0)");$("#edit_field__field_settings").html("
      "+g.messages["notify_no_field_settings"]+"
      ")}else{$("#edit_field_template .inner_tab2").html(field_type_label+" "+g.messages["word_settings"]+" ("+field_settings.length+")");var html=fields_ns.generate_field_type_markup(fields_ns.__current_field_id,field_type_id,field_settings);$("#edit_field__field_settings").html(html)}$("#edit_field__field_settings_loading").hide();$(".use_default").each(function(){$(this).attr("disabled","")});var html=fields_ns.generate_field_type_validation_table(field_type_id);fields_ns.update_validation_tab_label(field_type_id);$("#validation_table").html(html)});$("#edit_field__field_type").live("blur",function(){fields_ns.__last_field_type_id=fields_ns.__current_field_type_id;fields_ns.__current_field_type_id=this.value;fields_ns.__check_shared_characteristics_cond1=true;fields_ns.check_shared_characteristics();delete fields_ns.memory["field_"+fields_ns.__current_field_id].tab2});$(".inner_tab_content").bind("change",function(e){if(typeof fields_ns.memory["field_"+fields_ns.__current_field_id]=='undefined'){fields_ns.memory["field_"+fields_ns.__current_field_id]={tab1:null,tab2:null,tab3:null};fields_ns.memory.changed_field_ids.push(fields_ns.__current_field_id)}fields_ns.memory["field_"+fields_ns.__current_field_id].tab1=$("#edit_field_form_tab1").serializeArray();fields_ns.memory["field_"+fields_ns.__current_field_id].tab2=$("#edit_field_form_tab2").serializeArray();fields_ns.memory["field_"+fields_ns.__current_field_id].tab3=$("#edit_field_form_tab3").serializeArray()});$(".field_types").live("change keyup",function(e){var tmp=$(this).attr("name").match(/field_(.+)_type_id/);var curr_field_id=tmp[1];var field_sizes_div=$(this).closest(".scroll-content").find(".field_sizes_div");var curr_value=field_sizes_div.find("[name=field_"+curr_field_id+"_size]").val();ft.update_field_size_dropdown(this,field_sizes_div,{name:"field_"+curr_field_id+"_size",html_class:"field_sizes",selected:curr_value})});$(".option_list_or_form_field").live("change",function(){if($(this).find(":selected").closest("optgroup").is("#edit_field__option_lists")){$("#edit_field__option_list_options").show();$("#edit_field__form_options").hide()}else if($(this).find(":selected").closest("optgroup").is("#edit_field__forms")){var form_id=this.value.replace(/^ft/,"");$("#edit_field__option_list_options").hide();$("#edit_field__form_options").show();if(fields_ns.form_fields["form_"+form_id]==undefined){fields_ns.load_form_fields({form_id:form_id})}else{fields_ns.generate_form_fields_section({form_id:form_id})}}});$(".check_areas").live("click",function(e){if(!$(e.target).hasClass("check_area")){return}var field=$(e.target).find("input")[0];fields_ns.click_use_default(field)});$.ajax({url:g.root_url+"/global/code/actions.php",type:"POST",dataType:"json",data:{action:"get_option_lists"},success:fields_ns.get_option_lists_response,error:ft.error_handler});$.ajax({url:g.root_url+"/global/code/actions.php",type:"POST",dataType:"json",data:{action:"get_form_list"},success:fields_ns.get_form_list_response,error:ft.error_handler});$("#validation_table").bind("change",function(e){if(!$(e.target).hasClass("v_checked")){return}var error_str_field=$(e.target).closest("tr").find(".validation_error_message");if(e.target.checked){var rule_id=$(e.target).attr("id").replace(/edit_field__v_/,"");error_str_field.removeClass("light_grey").attr("disabled","");if(error_str_field.val()==""){error_str_field.val(fields_ns._get_default_error_message(fields_ns.__current_field_type_id,rule_id))}}else{error_str_field.addClass("light_grey").attr("disabled","disabled")}})});$(window).resize(function(){fields_ns.reinit_sliders()});var fields_ns={num_new_rows:0,add_field_dialog:$("
      "),smart_fill_dialog:$("
      "),confirm_redirect_dialog:$("
      "),edit_field_dialog_opened:false,cached_field_settings_markup:[],cached_loaded_extended_field:[],limit_fields_enabled:false,max_fields:null,num_fields:null,memory:{changed_field_ids:[]},onload_field_setting_values:[],option_lists:null,forms:null,form_fields:{},__current_field_id:null,__current_field_type_id:null,__last_field_type_id:null,__disable_focusin:false,__check_shared_characteristics_cond1:false,__check_shared_characteristics_cond2:false};fields_ns.reinit_sliders=function(){fields_ns.init_sliders({scroll_panes:$(".scroll-pane"),scroll_content:$(".scroll-content")})}fields_ns.get_option_lists_response=function(data){if(!ft.check_ajax_response_permissions(data)){return}fields_ns.option_lists=data}fields_ns.get_form_list_response=function(data){fields_ns.forms=data}fields_ns.init_sliders=function(info){var max_rows_on_page=fields_ns._get_max_rows_on_page();var top_rows_to_scroll=info.scroll_content.slice(0,max_rows_on_page);var bottom_rows_to_scroll=info.scroll_content.slice(-max_rows_on_page);fields_ns.scrollbars=$(".scroll-bar-top, .scroll-bar-bottom").slider({slide:function(event,ui){var rows_to_scroll=null;var other_scrollbar=null;if($(this).hasClass("scroll-bar-top")){rows_to_scroll=top_rows_to_scroll;other_scrollbar=".scroll-bar-bottom"}else{rows_to_scroll=bottom_rows_to_scroll;other_scrollbar=".scroll-bar-top"}var rows_to_scroll_width=rows_to_scroll.width();if(rows_to_scroll_width>info.scroll_panes.width()){rows_to_scroll.css("margin-left",Math.round(ui.value/100*(info.scroll_panes.width()-rows_to_scroll_width))+"px")}else{rows_to_scroll.css("margin-left",0)}$(other_scrollbar+" .ui-slider-handle").css("left",Math.round(ui.value)+"%")},change:function(event,ui){var margin_left=null;var rows_to_update=null;var max_rows_on_page=fields_ns._get_max_rows_on_page();if($(this).hasClass("scroll-bar-top")){margin_left=$(".scroll-content:first").css("marginLeft");rows_to_update=$(".scroll-content").slice(max_rows_on_page)}else{margin_left=$(".scroll-content:last").css("marginLeft");rows_to_update=$(".scroll-content").slice(0,$(".scroll-content").length-max_rows_on_page)}rows_to_update.each(function(){$(this).css("marginLeft",margin_left)})}})}fields_ns.add_fields=function(e){var num_fields=$.trim($("#add_num_fields").val());if(num_fields.match(/\D/)||num_fields==0||num_fields==""){ft.create_dialog({dialog:fields_ns.add_field_dialog,popup_type:"error",title:g.messages["word_error"],content:g.messages["validation_num_rows_to_add"],buttons:[{"text":g.messages["word_okay"],"click":function(){$(this).dialog("close");$("#add_num_fields").focus().select()}}]});$("#add_num_fields").focus().select();return false}if(fields_ns.limit_fields_enabled){var num_fields_on_page=fields_ns.get_num_fields_on_page();var remaining_num_fields=fields_ns.max_fields-num_fields_on_page;fields_ns.update_max_field_count();if(remaining_num_fields<=0){return false}if(num_fields>remaining_num_fields){num_fields=remaining_num_fields}}var group=$("#group_new_fields").attr("checked");var new_row_template=$("#new_row_template").html();var fragment=document.createDocumentFragment();var html="";for(var i=0;i"+display_text+"\n"});$("#add_fields_list").html(options)}fields_ns.smart_fill=function(){ft.create_dialog({dialog:fields_ns.smart_fill_dialog,popup_type:"warning",min_width:450,title:g.messages["phrase_smart_fill"],content:"
      "+g.messages["confirm_smart_fill_db_column_fields_desc"]+"
      "+g.messages["confirm_smart_fill_db_column_fields"],buttons:[{"text":g.messages["word_okay"],"click":function(){var inserted_db_col_names=[];$(".sortable .db_column").each(function(){var field_id_info=$(this).attr("id").match(/col_(NEW)?(\d+)_name/);if(field_id_info[1]!=undefined){field_id="NEW"+field_id_info[2]}else{field_id=field_id_info[2]}var display_text=$.trim($("#field_"+field_id+"_display_name").val());var new_db_col_name=display_text.replace(/\s+/g,"_");new_db_col_name=new_db_col_name.replace(/[^a-zA-Z0-9_]/g,"").toLowerCase();var is_invalid=$.inArray(new_db_col_name.toUpperCase(),page_ns.reserved_words)!=-1||$.inArray(new_db_col_name,inserted_db_col_names)!=-1;var suffix=2;var test_name=null;while(is_invalid){test_name=new_db_col_name+suffix;is_invalid=$.inArray(test_name.toUpperCase(),page_ns.reserved_words)!=-1||$.inArray(test_name,inserted_db_col_names)!=-1;if(!is_invalid){break}suffix++};if(test_name!=null){new_db_col_name=test_name}if(new_db_col_name==""){var prefix="col_";var suffix=1;is_invalid=true;var test_name=null;while(is_invalid){test_name=prefix+suffix;is_invalid=$.inArray(test_name,inserted_db_col_names)!=-1;if(!is_invalid){break}suffix++};new_db_col_name=test_name}$(this).val(new_db_col_name);inserted_db_col_names.push(new_db_col_name)});$(this).dialog("close")}},{"text":g.messages["word_cancel"],"click":function(){$(this).dialog("close")}}]});return false};fields_ns.check_fields=function(f){var errors=[];var field_name_list=[];var col_name_list=[];var errors_by_col=[0,0,0];$(".sortable .display_text").each(function(){var row_group=$(this).closest(".row_group");var field_id=row_group.find(".sr_order").val();var is_new_row=/^NEW/.test(field_id);var display_text_field=row_group.find(".display_text");var display_text=$.trim(display_text_field.val());if(display_text==""){if(is_new_row){return}errors.push([this,g.messages["validation_no_display_text"]]);errors_by_col[0]++}else{$(display_text_field).removeClass("rsvErrorField")}var field_name_field=row_group.find(".field_names");if(field_name_field.length){var field_name=$.trim(field_name_field.val());if(!field_name){errors.push([$(field_name_field)[0],g.messages["validation_no_form_field_name"]]);errors_by_col[0]++}else if(field_name.match(/[^0-9a-zA-Z_]/)){errors.push([$(field_name_field)[0],g.messages["validation_invalid_form_field_names"]]);errors_by_col[0]++}else if($.inArray(field_name,field_name_list)!=-1){errors.push([$(field_name_field)[0],g.messages["validation_duplicate_form_field_name"]]);errors_by_col[0]++}else{field_name_field.removeClass("rsvErrorField")}field_name_list.push(field_name)}var db_column_field=row_group.find(".db_column");if(db_column_field.length){var db_column_name=$.trim(db_column_field.val());var return_info=fields_ns._is_valid_db_column_name(db_column_name,col_name_list);if(!return_info.success){errors.push([$(db_column_field)[0],return_info.error]);errors_by_col[2]++}else{db_column_field.removeClass("rsvErrorField")}col_name_list.push(db_column_name)}});if(errors_by_col[0]>0){fields_ns.change_scroll_area(0)}else if(errors_by_col[1]>0){fields_ns.change_scroll_area(50)}else if(errors_by_col[2]>0){fields_ns.change_scroll_area(100)}return errors}fields_ns._is_valid_db_column_name=function(col_name,col_name_list){col_name_list.push("submission_id");col_name_list.push("submission_date");col_name_list.push("last_submission_date");col_name_list.push("ip_address");col_name_list.push("is_finalized");var return_info={success:true,error:""}var db_column_name=$.trim(col_name);if(db_column_name==""){return_info={success:false,error:g.messages["validation_no_column_name"]}}else if(db_column_name.match(/\W/)){return_info={success:false,error:g.messages["validation_invalid_column_name"]}}else if($.inArray(db_column_name.toUpperCase(),page_ns.reserved_words)!=-1){return_info={success:false,error:g.messages["validation_col_name_is_reserved_word"]}}else if($.inArray(db_column_name,col_name_list)!=-1){return_info={success:false,error:g.messages["validation_no_two_column_names"]}}return return_info}fields_ns.change_scroll_area=function(percentage,ignore){var new_margin_left=0;if(percentage==50){new_margin_left=-238}else if(percentage==100){new_margin_left=-477}$(".scrollable").attr("scrollLeft",0);$(".ui-slider-handle").css("left",percentage+"%");$(".sortable").find(".scrollable").each(function(){$(this).find(".scroll-content").css("marginLeft",new_margin_left)})}fields_ns.edit_field=function(row_group){$("#edit_field_template_message").addClass("hidden");var is_system_field=$(row_group).hasClass("system_field");fields_ns.__current_editing_row_group=row_group;var field_id=$(row_group).find(".sr_order").val();var is_new_field=(field_id.match(/^NEW/)!=null)?true:false;fields_ns.__last_field_type_id=null;fields_ns.__check_shared_characteristics=false;var field_values_cached=($.inArray(field_id,fields_ns.memory.changed_field_ids)!=-1)?true:false;var tab1_fields=null;if(field_values_cached){if(typeof fields_ns.memory["field_"+field_id].tab1!="undefined"){tab1_fields=fields_ns.memory["field_"+field_id].tab1}}if(is_new_field){$("#edit_field_template_new_field").removeClass("hidden");$(".tab_row").hide();ft.change_inner_tab(1,"edit_field")}else{$("#edit_field_template_new_field").addClass("hidden");$(".tab_row").show()}var display_text="";if(tab1_fields){display_text=ft._extract_array_val(tab1_fields,"edit_field__display_text")}else{display_text=row_group.find(".display_text").val()}$("#edit_field__display_text").val(display_text);var field_type_id=null;fields_ns.__current_field_id=field_id;fields_ns.__current_field_is_system_field=is_system_field;var field_type_str=null;if(is_system_field){$(".edit_field__non_system").hide();$(".edit_field__system").show();field_type_id=row_group.find(".system_field_type_id").val();$("#edit_field__field_type_system").html(row_group.find(".system_field_type_label").html());$("#edit_field__db_column_div_system").html(row_group.find(".system_field_db_column").html());$("#edit_field__pass_on").attr("checked",row_group.find(".pass_on").attr("checked"));field_type_str=$("#edit_field__field_type option[value="+field_type_id+"]").text()}else{$(".edit_field__non_system").show();$(".edit_field__system").hide();var field_type=row_group.find(".field_types");field_type_id=field_type.val();if(tab1_fields){$("#edit_field__field_name").val(ft._extract_array_val(tab1_fields,"edit_field__field_name"));$("#edit_field__field_type").val(ft._extract_array_val(tab1_fields,"edit_field__field_type"));ft.update_field_size_dropdown(field_type,$("#edit_field__field_size_div"),{selected:ft._extract_array_val(tab1_fields,"edit_field__field_size"),name:"edit_field__field_size",id:"edit_field__field_size"});var pass_on=ft._extract_array_val(tab1_fields,"edit_field__pass_on");$("#edit_field__pass_on").attr("checked",((pass_on=="")?"":"checked"));$("#edit_field__data_type").val(ft._extract_array_val(tab1_fields,"edit_field__data_type"));$("#edit_field__db_column").val(ft._extract_array_val(tab1_fields,"edit_field__db_column"))}else{$("#edit_field__field_name").val(row_group.find(".field_names").val());$("#edit_field__field_type").val(field_type_id);ft.update_field_size_dropdown(field_type,$("#edit_field__field_size_div"),{selected:row_group.find(".field_sizes").val(),name:"edit_field__field_size",id:"edit_field__field_size"});$("#edit_field__pass_on").attr("checked",row_group.find(".pass_on").attr("checked"));$("#edit_field__data_type").val(row_group.find(".data_types").val());$("#edit_field__db_column").val(row_group.find(".db_column").val())}field_type_str=$("#edit_field__field_type :selected").text()}fields_ns.__current_field_type_id=field_type_id;fields_ns.__last_field_type_id=field_type_id;fields_ns.update_validation_tab_label(field_type_id);var has_field_settings=fields_ns.init_field_settings_tab(field_type_id,field_id);if(sortable_ns._has_previous_field(row_group)){$("#edit_field_template .prev_field").removeClass("disabled")}else{$("#edit_field_template .prev_field").addClass("disabled")}if(sortable_ns._has_next_field(row_group)){$("#edit_field_template .next_field").removeClass("disabled")}else{$("#edit_field_template .next_field").addClass("disabled")}var title=display_text+"("+field_type_str+")";if(!fields_ns.edit_field_dialog_opened){ft.create_dialog({dialog:$("#edit_field_template"),title:title,min_width:720,open:function(){fields_ns.edit_field_dialog_opened=true},close:function(){fields_ns.edit_field_dialog_opened=false},buttons:[{text:g.messages["phrase_save_changes"],click:function(){fields_ns.save_changes()}},{text:g.messages["word_close"],click:function(){fields_ns.memory={};fields_ns.memory.changed_field_ids=[];$(this).dialog("close")}}]})}else{$("#edit_field_template").dialog({title:title})}}fields_ns.init_field_settings_tab=function(field_type_id,field_id){var field_settings=page_ns.field_settings["field_type_"+field_type_id];var field_type_label=$("#edit_field__field_type option[value="+field_type_id+"]").text();if(field_settings==undefined){$("#edit_field_template .inner_tab2").html(field_type_label+" "+g.messages["word_settings"]+" (0)");$("#edit_field__field_settings").html("
      "+g.messages["notify_no_field_settings"]+"
      ");$("#edit_field__field_settings_loading").hide();return false}else{$("#edit_field_template .inner_tab2").html(field_type_label+" "+g.messages["word_settings"]+" ("+field_settings.length+")")}var html=fields_ns.generate_field_type_markup(field_id,field_type_id,field_settings);$("#edit_field__field_settings").html(html);if(fields_ns.cached_loaded_extended_field["field_id_"+field_id]==undefined){fields_ns.cached_loaded_extended_field["field_id_"+field_id]={loaded:false,settings:[],validation:[]};$("#edit_field__field_settings_loading").show();$("#edit_field__field_settings").hide();ft.dialog_activity_icon($("#edit_field_template"),"show");if(!/^NEW/.test(field_id)){$.ajax({url:g.root_url+"/global/code/actions.php",type:"POST",dataType:"json",data:{field_id:field_id,field_type_id:field_type_id,action:"get_extended_field_settings"},success:fields_ns.load_field_settings_response,error:ft.error_handler})}}else{if(fields_ns.cached_loaded_extended_field["field_id_"+field_id].loaded){var data=fields_ns.cached_loaded_extended_field["field_id_"+field_id];fields_ns.display_field_settings(field_type_id,data.settings,data.validation)}}return true}fields_ns.generate_field_type_markup=function(field_id,field_type_id,field_settings){var html="";if(fields_ns.cached_field_settings_markup["field_type_"+field_type_id]!==undefined){html=fields_ns.cached_field_settings_markup["field_type_"+field_type_id];fields_ns.__check_shared_characteristics_cond2=true;fields_ns.check_shared_characteristics()}else{var may_cache=true;html=""+""+""+""+""+"";for(var i=0;i"+""+""}html+="
      "+g.messages["word_setting"]+""+g.messages["phrase_use_default_value_q"]+""+g.messages["word_value"]+"
      "+info.field_label+"";var display_use_default_checkbox=true;if(info.field_type=="option_list_or_form_field"){display_use_default_checkbox=false}if(display_use_default_checkbox){html+=""}else{html+=""}html+="";switch(info.field_type){case"textbox":html+="";break;case"textarea":html+="";break;case"select":html+="";break;case"checkboxes":for(var j=0;j0){html+=(info.field_orientation=="vertical")?"
      ":" "}var opt=info.options[j];var checked=(opt.value==info.default_value)?"checked":"";html+=""+""}break;case"radios":for(var j=0;j0){html+=(info.field_orientation=="vertical")?"
      ":" "}var opt=info.options[j];var checked=(opt.value==info.default_value)?"checked":"";html+=""+""}break;case"multi-select":html+="";break;case"option_list_or_form_field":html+="
      ";if(fields_ns.option_lists==null||fields_ns.forms==null){may_cache=false;(function(setting_id,default_value){ft.queue.push([function(){},function(){var option_lists_ready=(fields_ns.option_lists!=null);var forms_ready=(fields_ns.forms!=null);if(option_lists_ready&&forms_ready){$("#option_list_div_"+setting_id).html(fields_ns._generate_option_list_markup(setting_id,default_value));fields_ns.__check_shared_characteristics_cond2=true;fields_ns.check_shared_characteristics()}for(var j=0;j";break}html+="
      ";if(may_cache){fields_ns.cached_field_settings_markup["field_type_"+field_type_id]=html;fields_ns.__check_shared_characteristics_cond2=true;fields_ns.check_shared_characteristics()}}return html}fields_ns._generate_option_list_markup=function(setting_id,default_value){var option_list_selected=false;var option_list_html="";$.each(fields_ns.option_lists,function(value,text){var selected="";if(value==default_value){selected=" selected";option_list_selected=true}option_list_html+=""});var forms_selected=false;var forms_html="";$.each(fields_ns.forms,function(value,text){if(value==page_ns.form_id){return}forms_html+=""});if(option_list_html==""&&forms_html==""){return g.messages["phrase_no_option_lists_available"]+""}var html=""+"";var forms_hidden=(forms_selected)?"":" style=\"display:none\"";html+="
      ";return html}fields_ns.edit_option_list=function(setting_id){var list_id=$("#edit_field__setting_"+setting_id).val();if(!list_id){$("#edit_field_template_message").removeClass("hidden");ft.display_message("edit_field_template_message",0,g.messages["notify_edit_option_list_after_save"]);return false}var edit_option_list_url=g.root_url+"/admin/forms/option_lists/edit.php?page=main&list_id="+list_id;if(fields_ns.memory.changed_field_ids.length==0){window.location=edit_option_list_url}else{$("#edit_field_template").closest(".ui-dialog").hide();ft.create_dialog({dialog:fields_ns.confirm_redirect_dialog,popup_type:"warning",content:g.messages["confirm_save_change_before_redirect"],title:g.messages["phrase_please_confirm"],buttons:[{text:g.messages["word_yes"],click:function(){$.ajax({url:g.root_url+"/global/code/actions.php",data:{form_id:page_ns.form_id,action:"update_form_fields",data:fields_ns.memory,return_vars:{url:edit_option_list_url}},type:"POST",dataType:"json",success:function(data){if(data.success==1){window.location=data.url}},error:function(xhr,text_status,error_thrown){ft.dialog_activity_icon($("#confirm_before_redirect_dialog"),"hide");$("#confirm_before_redirect_dialog").dialog("close");$("#edit_field_template").dialog("close");ft.error_handler(xhr,text_status,error_thrown)}});ft.dialog_activity_icon($("#confirm_before_redirect_dialog"),"show")}},{text:g.messages["word_no"],click:function(){ft.dialog_activity_icon($("#confirm_before_redirect_dialog"),"show");window.location=edit_option_list_url}},{text:g.messages["word_cancel"],click:function(){$(this).dialog("close");$("#edit_field_template").closest(".ui-dialog").show()}}]})}return false}fields_ns.create_new_option_list=function(){window.location="./option_lists/index.php?add_option_list=1&field_id="+fields_ns.__current_field_id;return false}fields_ns.load_field_settings_response=function(data){if(!ft.check_ajax_response_permissions(data)){return}fields_ns.cached_loaded_extended_field["field_id_"+data.field_id]={loaded:true,field_type_id:data.field_type_id,settings:data.settings,validation:data.validation};if(data.field_id==fields_ns.__current_field_id){fields_ns.display_field_settings(data.field_type_id,data.settings,data.validation)}var has_open_thread=false;for(var item in fields_ns.cached_loaded_extended_field){if(fields_ns.cached_loaded_extended_field[item].loading===false){has_open_thread=true;break}}if(!has_open_thread){ft.dialog_activity_icon($("#edit_field_template"),"hide")}}fields_ns.display_field_settings=function(field_type_id,settings,validation){var load_validation_from_memory=false;if(typeof fields_ns.memory["field_"+fields_ns.__current_field_id]!='undefined'){if(typeof fields_ns.memory["field_"+fields_ns.__current_field_id].tab2!='undefined'&&fields_ns.memory["field_"+fields_ns.__current_field_id].tab2!=null){var unsaved_changes=fields_ns.memory["field_"+fields_ns.__current_field_id].tab2;var updated_settings=[];for(var i=0;i0){$("#edit_field_template_message").removeClass("hidden");ft.change_inner_tab(first_tab_with_error,"edit_field");$(errors[0][0]).focus();var error_str="";if(errors.length==1){error_str=g.messages[errors[0][1]]}else{for(var i=0;i"}}ft.display_message("edit_field_template_message",0,error_str)}return errors.length==0}fields_ns.load_form_fields=function(params){var params=$.extend({form_id:null,field_id:null,field_order:null},params);params.form_id=params.form_id.replace(/^ft/,"");$("#edit_field__form_options").html("
      ");$.ajax({url:g.root_url+"/global/code/actions.php",type:"POST",dataType:"json",data:{action:"get_form_fields",form_id:params.form_id,field_id:params.field_id,field_order:params.field_order},success:fields_ns.get_form_fields_response,error:ft.error_handler})}fields_ns.get_form_fields_response=function(data){if(!ft.check_ajax_response_permissions(data)){return}fields_ns.form_fields["form_"+data.form_id]=data.fields;if($(".option_list_or_form_field :selected").val()=="ft"+data.form_id.toString()){fields_ns.generate_form_fields_section({form_id:data.form_id,field_id:data.field_id,field_order:data.field_order})}}fields_ns.generate_form_fields_section=function(params){params=$.extend({form_id:null,field_id:"",field_order:""},params);var fields=fields_ns.form_fields["form_"+params.form_id];var setting_id=null;$("#edit_field__form_options").parent().find(".option_list_or_form_field").each(function(){setting_id=$(this).attr("id").replace(/edit_field__setting_/,"")});var field_dd="";var html=""+""+""+""+""+""+""+""+"";$("#edit_field__form_options").html(html)}fields_ns.click_use_default=function(el){var is_checked=$(el).attr("checked");var setting_id=$(el).attr("id").replace(/^edit_field__use_default_value_/,"");var settings_selectors='#edit_field__setting_'+setting_id+',[id^="edit_field__setting_'+setting_id+'_"]';if(is_checked){$(settings_selectors).attr("disabled","disabled").addClass("light_grey")}else{$(settings_selectors).attr("disabled","").removeClass("light_grey");$("#edit_field__setting_"+setting_id).focus()}$(el).trigger("change")}fields_ns.check_shared_characteristics=function(){var curr_ft_id=fields_ns.__current_field_type_id;var last_ft_id=fields_ns.__last_field_type_id;if(curr_ft_id==last_ft_id){return}if(!fields_ns.__check_shared_characteristics_cond1||!fields_ns.__check_shared_characteristics_cond2){return}if(typeof page_ns.field_settings["field_type_"+curr_ft_id]=="undefined"||typeof page_ns.field_settings["field_type_"+last_ft_id]=="undefined"){return}var curr_setting_ids=[];for(var i=0;i"+g.messages["phrase_field_type_no_validation"]+""}else{html+="
      "+g.messages["phrase_select_field"]+""+field_dd+"
      "+g.messages["word_order"]+"
      "+""+""+""+""+"";var rules=page_ns.field_validation["field_type_"+field_type_id];for(var i=0;i"+""+""+""+""}html+="
      "+g.messages["phrase_validation_rule"]+""+g.messages["text_error_message_to_show"]+"
      "}return html}fields_ns._get_default_error_message=function(field_type_id,rule_id){var error="";var rules=page_ns.field_validation["field_type_"+field_type_id];for(var i=0;i main tab. It dynamically + * adds rows to the "Form URLs" section, letting the user add as many page URLs as their form contains. + */ +mf_ns.add_multi_page_form_page = function () { + var curr_row = ++mf_ns.num_multi_page_form_pages; + + var li1 = $("
    • "); + var li2 = $("
    • "); + var li3 = $("
    • "); + var li4 = $("
    • "); + var ul = $("
        ").append(ft.group_nodes([li1, li2, li3, li4])); + + var hidden_sort_field = $(""); + var clr = $("
        "); + var row_group = $("
        ").append(ft.group_nodes([hidden_sort_field, ul, clr])); + + var html = sortable_ns.get_sortable_row_markup({ row_group: row_group, is_grouped: false }); + + $(".multi_page_form_list .rows").append(html); + sortable_ns.reorder_rows($(".multi_page_form_list"), true); + + return false; +} + + +/** + * Used in validation to check that at least one URL has been entered. In 2.1.0 we no longer force the + * user to ensure it's a valid URL (it was too annoying). Instead, the onus is on them to enter the + * correct URL and click the "Check URL" button to validate it. + * + * This is used on both the Add External Form step 2 page and the Edit Form main tab. Assumptions: + * - the page contains two elements with IDs: "form_type" and "submission_type" containing the appropriate + * values. + */ +mf_ns.check_first_form_url = function () { + if ($("#form_type").val() != "external") { + return true; + } + + var is_multi_page_form = $(".is_multi_page_form:checked").val(); + + if ($("#submission_type").val() == "direct" || is_multi_page_form == "no") { + var form_url = $.trim($("#form_url").val()); + if (!form_url) { + return [[$("#form_url")[0], g.messages["validation_no_form_url"]]]; + } else { + $("#form_url").removeClass("rsvErrorField"); + } + } else if (is_multi_page_form == "yes") { + var rows = $(".multi_page_form_list .rows"); + if (rows.find(".sortable_row").length == 0) { + mf_ns.add_multi_page_form_page(); + return [[$(".is_multi_page_form")[0], g.messages["validation_no_form_url"]]]; + } else { + var first_field = rows.find(".sortable_row:first [name^=multi_page_urls]"); + var first_form_page_url = $.trim(first_field.val()); + if (!first_form_page_url) { + return [[first_field[0], g.messages["validation_no_form_url"]]]; + } else { + first_field.removeClass("rsvErrorField"); + } + } + } + + return true; +} diff --git a/global/scripts/manage_menus.js b/global/scripts/manage_menus.js new file mode 100644 index 00000000..a6d6472a --- /dev/null +++ b/global/scripts/manage_menus.js @@ -0,0 +1,155 @@ +/** + * File: manage_menus.js + * + * Used for managing both the administrator and client menus pages. + */ + +// our namespace for the menu management functionality +if (typeof mm == 'undefined') + mm = {}; + +mm.num_rows = 0; + + +$(".sortable .col2 select").live("change keyup", function () { + var row = $(this).closest(".row_group").find(".sr_order").val(); + mm.change_page(row, $(this).val()); +}); + +/** + * Adds a new menu item row. + */ +mm.add_menu_item_row = function () { + var currRow = ++mm.num_rows; + + var li0 = $("
      • "); + var li1 = $("
      • " + currRow + "
      • "); + + var pages_dd = $("#menu_options").html().replace(/%%X%%/gi, currRow); + var li2 = $("
      • " + pages_dd + "
      • "); + var li3 = $("
      • "); + var li4 = $("
      • " + g.messages["word_na"] + "
      • "); + var li5 = $("
      • "); + var li6 = $("
      • "); + + var ul = $("
          "); + ul.append(li0); + ul.append(li1); + ul.append(li2); + ul.append(li3); + ul.append(li4); + ul.append(li5); + ul.append(li6); + + var main_div = $("
          "); + main_div.append(ul); + main_div.append("
          "); + + $(".rows").append(sortable_ns.get_sortable_row_markup({ row_group: main_div })); + sortable_ns.reorder_rows($(".edit_menu"), false); + + return false; +} + + +mm.change_page = function (row, page) { + // first, if the Display Text field is empty, set its value to the same as the display text + // in the dropdown menu + $("#page_identifier_" + row + " option").each(function () { + if ($(this).val() == page) { + if ($(this).val()) { + $("#display_text_" + row).val($(this).html()); + } else { + $("#display_text_" + row).val(""); + } + return; + } + }); + + // show / hide the appropriate options for this page + switch (page) { + case "custom_url": + var html = g.messages["word_url_c"] + " "; + $("#row_" + row + "_options").html(html); + break; + + case "client_form_submissions": + case "form_submissions": + case "edit_form": + case "edit_form_main": + case "edit_form_fields": + case "edit_form_views": + case "edit_form_emails": + var form_dd = $("#form_dropdown_template").html().replace(/%%X%%/gi, row); + $("#row_" + row + "_options").html(form_dd); + break; + + case "edit_client": + var client_dd = $("#client_dropdown_template").html().replace(/%%X%%/gi, row); + $("#row_" + row + "_options").html(client_dd); + break; + + default: + $("#row_" + row + "_options").html("" + g.messages["word_na"] + ""); + break; + } +} + + +/** + * The onsubmit handler for the update admin menu form. This runs a little validation on the + * values to confirm all required fields are entered, and there's nothing missing. + */ +mm.update_admin_menu_submit = function (f) { + // [page identifier, page label, is included] + var required_pages = [ + ["admin_forms", g.messages["word_forms"], false], + ["clients", g.messages["word_clients"], false], + ["your_account", g.messages["phrase_your_account"], false], + ["modules", g.messages["word_modules"], false], + ["settings", g.messages["word_settings"], false], + ["logout", g.messages["word_logout"], false] + ]; + + $(".page_type").each(function () { + for (var j = 0; j < required_pages.length; j++) { + var curr_page_identifier = required_pages[j][0]; + if ($(this).val() == curr_page_identifier) { + required_pages[j][2] = true; + } + } + }); + + // now check to see if all required pages were included + var pages = []; + for (var j = 0; j < required_pages.length; j++) { + if (!required_pages[j][2]) { + pages.push(required_pages[j][1]); + } + } + + if (pages.length) { + var pages_str = pages.join(", "); + var message = g.messages["notify_required_admin_pages"].replace(/\{\$remaining_pages\}/, pages_str); + ft.display_message("ft_message", false, message); + return false; + } + + return true; +} + + +/** + * The onsubmit handler for the update client menu form. + */ +mm.update_client_menu_submit = function (f) { + // check the menu name isn't already taken + var menu_name = $("#menu_name").val(); + for (var i = 0; i < page_ns.menu_names.length; i++) { + if (menu_name == page_ns.menu_names[i]) { + ft.display_message("ft_message", false, g.messages["validation_menu_name_taken"]); + return false; + } + } + return true; +} diff --git a/global/scripts/manage_modules.js b/global/scripts/manage_modules.js new file mode 100644 index 00000000..31e066c4 --- /dev/null +++ b/global/scripts/manage_modules.js @@ -0,0 +1,37 @@ +$(function () { + $("#search_form form").bind("submit", function () { + if (!$("#status_enabled").attr("checked") && !$("#status_disabled").attr("checked")) { + ft.display_message("ft_message", 0, g.messages["validation_modules_search_no_status"]); + return false; + } + }); +}); + + +var mm = { + uninstall_module_dialog: $("
          "), + curr_module_id: null, + key: null +}; + +mm.uninstall_module = function (module_id) { + ft.create_dialog({ + dialog: mm.uninstall_module_dialog, + title: g.messages["phrase_please_confirm"], + content: g.messages["confirm_uninstall_module"], + popup_type: "warning", + buttons: [{ + text: g.messages["word_yes"], + click: function () { + window.location = "index.php?uninstall=" + module_id; + }, + }, + { + text: g.messages["word_no"], + click: function () { + $(this).dialog("close"); + } + }] + }); + return false; +} diff --git a/global/scripts/manage_option_lists.js b/global/scripts/manage_option_lists.js new file mode 100644 index 00000000..51e4a326 --- /dev/null +++ b/global/scripts/manage_option_lists.js @@ -0,0 +1,461 @@ +/** + * This code is used for managing the Edit Option List pages; most notably, it contains the Smart + * Fill code for parsing HTML files (and uploading them, if need be). + */ + +sf_ns = {}; // Smart Fill namespace... (old naming scheme) +sf_ns.num_rows = null; // set by onload function +sf_ns.tmp_deleted_field_option_rows = []; +sf_ns.manual_file_upload_attempted = false; +sf_ns.error_dialog = $("
          "); +sf_ns.delete_option_list_dialog = $("
          "); +sf_ns.delete_group_dialog = $("
          "); +sf_ns.num_new_groups = 0; // keeps track of the number of new groups added to the page + + +/** + * Deletes an Option List. The second "may_delete" boolean parameter is determined by whether this + * field option group is used by any fields. If it is, they can't delete it: they need to re-assign the fields + * to other option groups or change the field types. + * + * @param integer list_id + * @param boolean may_delete + */ +sf_ns.delete_option_list = function (list_id, may_delete) { + var content = g.messages["confirm_delete_option_list"]; + if (!may_delete) { + content = "
          " + g.messages["validation_delete_non_empty_option_list"] + "
          " + content; + } + + ft.create_dialog({ + dialog: sf_ns.delete_option_list_dialog, + popup_type: "warning", + title: g.messages["phrase_please_confirm"], + content: content, + buttons: [{ + "text": g.messages["word_yes"], + "click": function () { + ft.dialog_activity_icon(this, "show"); + window.location = "index.php?delete=" + list_id; + } + }, + { + "text": g.messages["word_no"], + "click": function () { + $(this).dialog("close"); + } + }] + }); + + return false; +} + + +/** + * Called during Smart Fill. It removes the entire content of the page. + */ +sf_ns.delete_all_rows = function () { + $(".sortable_group").remove(); + sf_ns.num_rows = 0; +} + + +/** + * Adds a field option for the currently selected field (dropdown, radio or checkbox). + */ +sf_ns.add_field_options = function (num_rows, target_el) { + var num_rows = $.trim(num_rows); + + // check num_rows is an integer + if (num_rows.match(/\D/) || num_rows == 0 || num_rows == "") { + ft.create_dialog({ + dialog: sf_ns.error_dialog, + popup_type: "error", + title: g.messages["word_error"], + content: g.messages["validation_num_rows_to_add"], + buttons: [{ + "text": g.messages["word_okay"], + "click": function () { + $(this).dialog("close"); + $("#num_rows_to_add").focus().select(); + } + }] + }); + $("#num_rows_to_add").focus().select(); + return false; + } + + var num_rows = parseInt(num_rows); + + for (var i = 0; i < num_rows; i++) { + var curr_row = ++sf_ns.num_rows; + + var li0 = $("
        • "); + var li1 = $("
        • " + curr_row + "
        • "); + var li2 = $("
        • "); + var li3 = $("
        • "); + var li4 = $("
        • "); + + var ul = $("
            "); + ul.append(li0); + ul.append(li1); + ul.append(li2); + ul.append(li3); + ul.append(li4); + + var main_div = $("
            "); + main_div.append(ul); + main_div.append("
            "); + + $(target_el).append(sortable_ns.get_sortable_row_markup({ row_group: main_div })); + sortable_ns.reorder_rows(target_el, false); + } + + // always hide the empty group item + $(target_el).find(".empty_group").hide(); + + return false; +} + + +/** + * This attempts to smart fill a single field, based on a form field name and a website page. It + * assumes the page_ns.scrape_page value has been set ("file_get_contents", "curl" or "redirect") to + * indicate the method by which the Smart Fill will be used. This is determined automatically by + * system compatibility. + */ +sf_ns.smart_fill_field = function () { + var smart_fill_source_form_field = $("#smart_fill_source_form_field").val(); + var smart_fill_source_url = $("#smart_fill_source_url").val(); + + if (smart_fill_source_form_field == "" || smart_fill_source_url == "") { + ft.display_message("smart_fill_messages", false, g.messages["validation_no_smart_fill_values"]); + return false; + } + + if (!ft.is_valid_url(smart_fill_source_url)) { + ft.display_message("smart_fill_messages", false, g.messages["validation_invalid_url"]); + return false; + } + + // find out the appropriate scrape method to extract this field's contents + sf_ns.log_activity(true); + $.ajax({ + url: g.root_url + "/global/code/actions.php", + data: { action: "get_js_webpage_parse_method", url: smart_fill_source_url }, + type: 'POST', + dataType: "json", + success: sf_ns.process_js_webpage_parse_method_response, + error: ft.error_handler + }); +} + + +sf_ns.process_js_webpage_parse_method_response = function (data) { + + // check the user wasn't logged out / denied permissions + if (!ft.check_ajax_response_permissions(data)) { + return; + } + + // if their server doesn't support any of the page scraping methods, offer them the option + // of uploading the file manually + if (data.scrape_method == "") { + ft.display_message("smart_fill_messages", false, $("#upload_files_text").html()); + sf_ns.log_activity(false); + } else { + var page_url = g.root_url + "/global/code/actions.php?action=smart_fill&scrape_method=" + data.scrape_method + + "&url=" + $("#smart_fill_source_url").val(); + $("#hidden_iframe").attr("src", page_url); + } +} + + +/** + * When the contents of the iframe are fully loaded (and, namely, the content is now available to JS), this + * function is called. It logs the page as loaded. Once all form pages are loaded, it loads all the form + * field information into memory for analyzing by the Smart Fill function. + */ +sf_ns.log_form_page_as_loaded = function () { + sf_ns.log_activity(false); + if (!page_ns.page_initialized) { + page_ns.page_initialized = true; + return; + } + + // try to smart fill the field requested + var iframe_element = hidden_iframe.window.document; + var field_name = $("#smart_fill_source_form_field").val(); + var num_forms = iframe_element.forms.length; + + var form_index = null; + for (var i = 0; i < num_forms; i++) { + if (iframe_element.forms[i][field_name] || iframe_element.forms[i][field_name + "[]"]) { + form_index = i; + } + } + + if (form_index == null) { + ft.display_message("smart_fill_messages", false, g.messages["validation_smart_fill_no_field_found"]); + return; + } + + // if this was the result of manually uploading a file, be optimistic and tell them it worked (this is + // overwritten if anything fails) + if (sf_ns.manual_file_upload_attempted) { + ft.display_message("smart_fill_messages", true, g.messages["notify_field_options_smart_filled"]); + } + + sf_ns.delete_all_rows(); + + + // get our field (checks for myField[] syntax, too) + if (iframe_element.forms[form_index][field_name]) { + var field = iframe_element.forms[form_index][field_name]; + } else { + var field = iframe_element.forms[form_index][field_name + "[]"]; + } + + // if field.type is undefined, it's probably an array + if (field.type == undefined) { + field.type = field[0].type; + } + + // if field.type is still undefined, Smart Fill won't work. Alert the user + if (field.type == undefined) { + ft.display_message("smart_fill_messages", false, g.messages["validation_smart_fill_cannot_fill"]); + return; + } + + // okay! We're about to add in all the default items. Tot them all up here. We'll add them to the page + // at the end + var has_option_lists = false; + var grouped_fields = []; + + switch (field.type) { + case "select-one": + case "select-multiple": + has_option_lists = ($(field).find("optgroup").length > 0) ? true : false; + if (has_option_lists) { + $(field).find("optgroup").each(function () { + var group_name = $(this).attr("label"); + var fields = []; + $(this).find("option").each(function () { + fields.push({ "value": this.value, "label": $(this).html() }); + }); + grouped_fields.push({ + "group_name": group_name, + "fields": fields + }); + }); + } else { + var fields = []; + for (var i = 0; i < field.length; i++) { + fields.push({ "value": field[i].value, "label": field[i].text }); + } + grouped_fields.push({ + "group_name": "", + "fields": fields + }); + } + break; + + case "checkbox": + case "radio": + is_single = true; + if (field.length != undefined) { + is_single = false; + } + + // single checkbox + if (is_single) { + grouped_fields.push({ + "group_name": "", + "fields": [{ "value": field.value, "label": "" }] + }); + + // multiple checkboxes + } else { + var fields = []; + for (var i = 0; i < field.length; i++) { + fields.push({ "value": field[i].value, "label": "" }); + } + grouped_fields.push({ + "group_name": "", + "fields": fields + }); + } + break; + + default: + ft.display_message("smart_fill_messages", false, g.messages["validation_smart_fill_invalid_field_type"]); + break; + } + + if (grouped_fields[0].fields.length == 0) { + alert("no fields found!"); // ...! + } else { + // create the groups + // *** bit concerned about timing issues here, but haven't encountered problems in FF 3.6 *** + var row_count = 1; + for (var i = 0; i < grouped_fields.length; i++) { + sf_ns.num_new_groups++; + var info = { + group_id: "NEW" + sf_ns.num_new_groups, + group_name: grouped_fields[i].group_name + } + sortable_ns.insert_new_group(info); + + // add the right number of blank rows + sf_ns.add_field_options(grouped_fields[i].fields.length, $(".sortable_group:last .rows")); + + // now add the actual items. This relies on sf_ns.num_rows having being reset to 0 earlier on + for (var j = 0; j < grouped_fields[i].fields.length; j++) { + $("input[name=field_option_value_" + row_count + "]").val(grouped_fields[i].fields[j].value); + $("input[name=field_option_text_" + row_count + "]").val(grouped_fields[i].fields[j].label); + row_count++; + } + } + + if (has_option_lists) { + $(".add_ungrouped_rows").hide(); + $(".sortable_group_header, .sortable_group_footer").removeClass("hidden"); + $(".add_group_section").removeClass("hidden"); + $("#go1").attr("checked", "checked"); + } else { + $(".add_ungrouped_rows").show(); + $(".sortable_group_header, .sortable_group_footer").addClass("hidden"); + $(".add_group_section").removeClass("hidden"); + $("#go2").attr("checked", "checked"); + } + } +} + + +/** + * This is called whenever starting or ending any potentially lengthy JS operation. It hides/shows the + * ajax loading icon. + */ +sf_ns.log_activity = function (is_busy) { + sf_ns.is_busy = is_busy; + + if (is_busy) { + $("#ajax_activity").show(); + $("#ajax_no_activity").hide(); + } else { + $("#ajax_activity").hide(); + $("#ajax_no_activity").show(); + } +} + + +/** + * This function can be optionally called by the user if the Smart Fill couldn't read the web pages. It + * uploads copies of the forms to the server. + */ +sf_ns.validate_upload_file = function (f) { + // check all the fields have been entered + if (!f["form_page_1"].value) { + alert(g.messages["validation_smart_fill_no_page"]); + return false; + } + + // check it's a .html or .htm file + if (!f["form_page_1"].value.match(/(\.htm|\.html)$/)) { + alert(g.messages["validation_upload_html_files_only"]); + return false; + } + + // show the processing icon; this is turned off when the custom onload handler is executed for the + // upload_files_iframe + sf_ns.log_activity(true); + sf_ns.manual_file_upload_attempted = true; + + return true; +} + + +/** + * Called when submitting the Edit Field Option Group main tab. It just + * ensures the option list name is valid. + */ +sf_ns.submit_update_field_option_group_page = function () { + var option_list_field = $("#option_list_name"); + var group_name = $.trim(option_list_field.val()); + if (group_name == "") { + $("#delete_group_dialog").dialog("close"); // just in case + ft.create_dialog({ + dialog: sf_ns.error_dialog, + popup_type: "error", + title: g.messages["word_error"], + content: g.messages["validation_no_option_list_name"], + buttons: [{ + "text": g.messages["word_okay"], + "click": function () { + $(this).dialog("close"); + option_list_field.focus().select(); + } + }] + }); + option_list_field.focus().select(); + return false; + } + + // check to see if the list group name is already taken + for (var i = 0; i < page_ns.option_list_names.length; i++) { + if (group_name == page_ns.option_list_names[i]) { + $("#delete_group_dialog").dialog("close"); // just in case + ft.create_dialog({ + dialog: sf_ns.error_dialog, + popup_type: "error", + title: g.messages["word_error"], + content: g.messages["validation_option_list_name_taken"], + buttons: [{ + "text": g.messages["word_okay"], + "click": function () { + $(this).dialog("close"); + option_list_field.focus().select(); + } + }] + }); + option_list_field.focus().select(); + return false; + } + } + + return true; +} + + +sf_ns.add_group = function () { + sf_ns.num_new_groups++; + var info = { + group_id: "NEW" + sf_ns.num_new_groups, + group_name: $(".new_group_name").val() + } + sortable_ns.insert_new_group(info); + $("#add_group_popup").dialog("close"); +} + + +/** + * For option lists, it's very possible that the user wants to delete an entire option list - including + * the contents - in one click. The default behaviour of the grouped sortables is to only permit it + * if the group is empty. This custom delete handler overrides the default behaviour. + * + * @param node the delete group icon that was clicked + */ +sf_ns.delete_group = function (el) { + $(el).closest(".sortable_group").remove(); +} + +sf_ns.toggle_advanced_settings = function () { + var display_setting = $("#option_lists_advanced_settings").css("display"); + if (display_setting == "none") { + $("#option_lists_advanced_settings").slideDown(200); + $("#smart_fill_source_form_field").focus(); + } else { + $("#option_lists_advanced_settings").slideUp(200); + } + return false; +} diff --git a/global/scripts/manage_submissions.js b/global/scripts/manage_submissions.js new file mode 100644 index 00000000..b67108ff --- /dev/null +++ b/global/scripts/manage_submissions.js @@ -0,0 +1,619 @@ +/** + * File: manage_submissions.js + * + * Contains assorted javascript functions used in the administrator and client Submission Listing + * and edit submission pages. + */ + +// our namespace for manage submission functions +if (typeof ms == "undefined") { + var ms = {}; +} + + +/** + * Validation function called when the user clicks the "download" or "view" buttons for the Excel + * download and Printer-Friendly page. If the "selected" option is selected, it checks that the + * user has selected at least one submission. + * + * TODO + * + * @param string action what to do: "print_preview" / "" + * @param string select_option + * @return boolean + */ +ms.check_selected = function (action, select_option) { + var selected_ids = ms.get_selected_submissions(); + if (select_option == "all") { + return true; + } + if (!selected_ids.length) { + if (action == "print_preview") { + alert(g.messages["validation_select_rows_to_view"]); + } else { + alert(g.messages["validation_select_rows_to_download"]); + } + return false; + } + + return true; +}; + + +/** + * Helper function which returns an array of the submission rows that have been selected ON + * THE PAGE. All submission IDs, regardless of page are stored in ms.selected_submission_ids + * + * @return array selected_ids + */ +ms.get_selected_submissions = function () { + var selected_ids = []; + $(".select_row_cb:checked").each(function () { + selected_ids.push(parseInt(this.value)); + }); + return selected_ids; +}; + + +/** + * Checks that the user has selected at least one submission and confirms they really want + * to delete them. + */ +ms.delete_submissions = function () { + var selected_ids_on_page = ms.get_selected_submissions(); + var num_selected_on_other_pages = ms._get_num_selected_on_other_pages(selected_ids_on_page); + + // if there are none selected, alert the user and return + if (!ms.selected_submission_ids.length && !num_selected_on_other_pages) { + ft.display_message("ft_message", false, g.messages["validation_select_submissions_to_delete"]); + return; + } + + if (num_selected_on_other_pages > 0) { + // if the user has submissions selected on this page AND other pages, give them + // the option to either delete ALL submissions or just those selected on this page. + if (selected_ids_on_page.length) { + var message = g.messages["confirm_delete_submissions_on_other_pages"].replace(/\{\$num_selected_on_page\}/, selected_ids_on_page.length); + message = message.replace(/\{\$num_selected_on_other_pages\}/, num_selected_on_other_pages); + message = message.replace(/\{\$delete_all_submissions_onclick\}/, "onclick=\"window.location='?delete'\""); + var id_string = selected_ids_on_page.join(","); + message = message.replace(/\{\$delete_submissions_on_page_onclick\}/, "onclick=\"window.location='?delete=" + id_string + "'\""); + ft.display_message("ft_message", false, message); + return; + } else { + var message = g.messages["confirm_delete_submissions_on_other_pages2"].replace(/\{\$num_selected_on_page\}/, selected_ids_on_page.length); + message = message.replace(/\{\$num_selected_on_other_pages\}/, num_selected_on_other_pages); + message = message.replace(/\{\$delete_all_submissions_onclick\}/, "onclick=\"window.location='?delete'\""); + ft.display_message("ft_message", false, message); + return; + } + } + + var message = ""; + if (ms.selected_submission_ids.length == 1) { + message = g.messages["confirm_delete_submission"]; + } else { + message = g.messages["confirm_delete_submissions"]; + } + + ft.create_dialog({ + dialog: ft.check_url_dialog, + title: g.messages["phrase_please_confirm"], + content: message, + popup_type: "warning", + buttons: [{ + text: g.messages["word_yes"], + click: function () { + window.location = "?delete"; + } + }, + { + text: g.messages["word_no"], + click: function () { + $(this).dialog("close"); + } + }] + }); +}; + + +/** + * Called on the edit submission page; lets a user delete the submission. + * + * @param integer submission_id + * @param string target_webpage where to link to after deleting the submission + */ +ms.delete_submission = function (submission_id, target_webpage) { + ft.create_dialog({ + dialog: ft.check_url_dialog, + title: g.messages["phrase_please_confirm"], + content: g.messages["confirm_delete_submission"], + popup_type: "warning", + buttons: [{ + text: g.messages["word_yes"], + click: function () { + window.location = target_webpage + "?delete=" + submission_id; + } + }, + { + text: g.messages["word_no"], + click: function () { + $(this).dialog("close"); + } + }] + }); + + return false; +}; + +ms.copy_submissions = function () { + var selected_ids_on_page = ms.get_selected_submissions(); + var num_selected_on_other_pages = ms._get_num_selected_on_other_pages(selected_ids_on_page); + + // if there are none selected, alert the user and return + if (!ms.selected_submission_ids.length && !num_selected_on_other_pages) { + ft.display_message("ft_message", false, g.messages["validation_select_submissions_to_copy"]); + return; + } + + window.location = '?copy_submissions'; +}; + +// called on the Edit Submission page +ms.copy_submission = function (submission_id) { + window.location = '?copy_submissions'; +}; + + +/** + * Called on page load, it ensures that the selected / unselected rows have the appropriate class, + * and adds the appropriate event handlers to the rows. + */ +ms.init_submissions_page = function () { + if (ms.page_submission_ids.length == 0) { + return; + } + + if ($("#search_field").length) { + ms.change_search_field($("#search_field").val()); + } + + // check the selected rows and make sure they have the appropriate class + var all_checked = true; + $(".select_row_cb").each(function () { + if (this.checked) { + $(this).closest("tr").addClass("selected_row_color").removeClass("unselected_row_color"); + } else { + all_checked = false; + } + }); + + // if all the rows are selected + if (all_checked) { + if (ms.all_submissions_in_result_set_selected) { + if (ms.all_submissions_selected_omit_list.length == 0) { + ms._update_select_all_button("all_in_result_set_selected"); + } else { + ms._update_select_all_button("all_on_page_selected"); + } + } else { + if (ms.selected_submission_ids.length == ms.search_num_results) { + ms._update_select_all_button("all_in_result_set_selected"); + } else { + ms._update_select_all_button("all_on_page_selected"); + } + } + } + + ms.update_display_row_count(); + + + $(".select_row_cb").bind("click", function () { + ms.select_row(this, ms.num_results_per_page); + }); + + $("#submissions_table tr:gt(0)").bind("click", function (e) { + if (e.target.nodeName == "INPUT" || e.target.nodeName == "A") + return; + + var select_row_cb = $(this).find(".select_row_cb"); + select_row_cb.attr("checked", select_row_cb.attr("checked") ? false : true); + ms.select_row(select_row_cb[0], ms.num_results_per_page); + }); +} + + +/** + * Selects / unselects an individual submission row, and changes the row colour to clearly show + * what's selected and what isn't. It keep a log of all selected rows - REGARDLESS OF PAGE - + * in the ms.selected_submission_ids array. It also updates the "X row(s) selected" display text. + * + * @param element the checkbox + * @param integer results_per_page the number of results in the page + */ +ms.select_row = function (cb, results_per_page) { + var submission_id = cb.value; + if (cb.checked) { + ft.toggle_unique_class($(cb).closest("tr")[0], "selected_row_color", ["selected_row_color", "unselected_row_color"]); + + if (ms.all_submissions_in_result_set_selected) { + ms.all_submissions_selected_omit_list = $.grep(ms.all_submissions_selected_omit_list, function (i) { + return i != submission_id; + }); + } else { + ms.selected_submission_ids.push(submission_id); + } + var selected_ids = ms.get_selected_submissions(); + + // all submissions in result set are selected + if (ms.all_submissions_in_result_set_selected) { + // if the user just selected the only row that wasn't selected on the page, update the select all button + // based on whether all results are now selected or not + if (ms.all_submissions_selected_omit_list.length == 0) { + ms._update_select_all_button("all_in_result_set_selected"); + } else { + // case 1: multiple pages, and all on page are selected + if (ms.page_submission_ids.length == selected_ids.length) { + ms._update_select_all_button("all_on_page_selected"); + // case 2: single page (total results <= max num on page) and all are selected + } else if (ms.search_num_results == selected_ids.length) { + ms._update_select_all_button("all_on_page_selected"); + } + } + } else { + if (ms.selected_submission_ids.length == ms.search_num_results) { + ms._update_select_all_button("all_in_result_set_selected"); + // case 2: multiple pages, and all on page are selected + } else if (ms.page_submission_ids.length == selected_ids.length) { + ms._update_select_all_button("all_on_page_selected"); + // case 3: single page (total results <= max num on page) and all are selected + } else if (ms.search_num_results == selected_ids.length) { + ms._update_select_all_button("all_on_page_selected"); + } + } + + // pass this individual submission ID to the server for storage + $.ajax({ + url: g.root_url + "/global/code/actions.php?action=select_submission&form_id=" + ms.form_id + "&submission_id=" + submission_id, + type: "GET", + error: function () { + alert("Couldn't load page: " + page_url); + } + }); + } else { + ft.toggle_unique_class($(cb).closest("tr")[0], "unselected_row_color", ["selected_row_color", "unselected_row_color"]); + + if (ms.all_submissions_in_result_set_selected) { + if ($.inArray(submission_id, ms.all_submissions_selected_omit_list) == -1) { + ms.all_submissions_selected_omit_list.push(submission_id); + } + } else { + ms.selected_submission_ids = $.grep(ms.selected_submission_ids, function (i) { + return i != submission_id; + }); + } + + ms._update_select_all_button("all_on_page_not_selected"); + + // remove this row from sessions + $.ajax({ + url: g.root_url + "/global/code/actions.php?action=unselect_submission&form_id=" + ms.form_id + "&submission_id=" + submission_id, + type: "GET", + error: function () { + alert("Couldn't load page: " + page_url); + } + }); + } + + ms.update_display_row_count(); +}; + + +/** + * Updated the "X row(s) displayed" text. + * + * @return num_selected returns the number of currently selected rows. + */ +ms.update_display_row_count = function () { + var num_selected = 0; + if (ms.all_submissions_in_result_set_selected) { + num_selected = ms.search_num_results - ms.all_submissions_selected_omit_list.length; + } else { + num_selected = ms.selected_submission_ids.length; + } + + if (num_selected == 0) { + ft.toggle_unique_class($("#display_num_selected_rows")[0], "light_grey", ["green", "light_grey"]); + $("#display_num_selected_rows").html(g.messages["phrase_rows_selected"].replace(/\{\$num_rows\}/, "0")); + } else if (ms.selected_submission_ids.length == 1 && !ms.all_submissions_in_result_set_selected) { + ft.toggle_unique_class($("#display_num_selected_rows")[0], "green", ["green", "light_grey"]); + $("#display_num_selected_rows").html(g.messages["phrase_row_selected"].replace(/\{\$num_rows\}/, "1")); + } else { + ft.toggle_unique_class($("#display_num_selected_rows")[0], "green", ["green", "light_grey"]); + $("#display_num_selected_rows").html(g.messages["phrase_rows_selected"].replace(/\{\$num_rows\}/, num_selected)); + } + + return num_selected; +}; + + +/** + * Selects all submission rows on the page. This is called ONLY when the user clicks on the "Select All" button. + */ +ms.select_all_on_page = function () { + $(".select_row_cb").each(function () { + $(this).attr("checked", "checked").closest("tr").addClass("selected_row_color").removeClass("unselected_row_color"); + + var curr_id = this.value; + ms.all_submissions_selected_omit_list = $.grep(ms.all_submissions_selected_omit_list, function (i) { + return i != curr_id; + }); + if ($.inArray(curr_id, ms.selected_submission_ids) == -1) { + ms.selected_submission_ids.push(curr_id); + } + }); + + if (ms.all_submissions_in_result_set_selected) { + // if the user just selected the only row that wasn't selected on the page, update the select all button + // based on whether all results are now selected or not + if (ms.all_submissions_selected_omit_list.length == 0) { + ms._update_select_all_button("all_in_result_set_selected"); + } else { + ms._update_select_all_button("all_on_page_selected"); + } + } else { + if (ms.selected_submission_ids.length == ms.search_num_results) { + ms._update_select_all_button("all_in_result_set_selected"); + } else { + ms._update_select_all_button("all_on_page_selected"); + } + } + + // pass these submission IDs to the server to store in sessions + $.ajax({ + url: g.root_url + "/global/code/actions.php?action=select_submissions&form_id=" + ms.form_id + + "&submission_ids=" + ms.page_submission_ids.join(","), + type: "GET", + error: function () { + alert("Couldn't load page: " + page_url); + } + }); + + ms.update_display_row_count(); +}; + + +/** + * Selects all submissions in the current result set. + */ +ms.select_all_in_result_set = function () { + ms._update_select_all_button("all_in_result_set_selected"); + ms.all_submissions_selected_omit_list = []; + + // pass these submission IDs to the server to store in sessions + $.ajax({ + url: g.root_url + "/global/code/actions.php?action=select_all_submissions&form_id=" + ms.form_id, + type: "GET", + error: function () { + alert("Couldn't load page: " + page_url); + } + }); + + ms.update_display_row_count(); +}; + + +/** + * Unselects all submission rows on the page. + */ +ms.unselect_all = function () { + $(".select_row_cb").each(function () { + $(this).attr("checked", "").closest("tr").addClass("unselected_row_color").removeClass("selected_row_color"); + }); + + ms._update_select_all_button("unselect_all"); + ms.all_submissions_in_result_set_selected = false; + + // pass this to the server to store in sessions + $.ajax({ + url: g.root_url + "/global/code/actions.php?action=unselect_all_submissions&form_id=" + ms.form_id, + type: "GET" + }); + + ms.selected_submission_ids = []; + ms.update_display_row_count(); +}; + + +/** + * Used to hide/show the additional date search options. With 2.1.0, any field can be a date field. We identify + * them via a "date" class on the
            "; + } + + foreach ($group["options"] as $option_info) { + $value = htmlspecialchars($option_info["option_value"]); + $display_text = $option_info["option_name"]; + $checked = ($option_info["option_value"] == $default_value) ? "checked" : ""; + + echo <<< END + +
            +END; + $count++; + } + } + break; + + case "checkboxes": + $count = 1; + foreach ($option_list_info["options"] as $group) { + if (!empty($group["group_info"]["group_name"])) { + echo "
            {$group["group_info"]["group_name"]}
            "; + } + + foreach ($group["options"] as $option_info) { + $value = htmlspecialchars($option_info["option_value"]); + $display_text = $option_info["option_name"]; + $checked = ""; + if (is_array($default_value) && in_array($option_info["option_value"], $default_value)) { + $checked = "checked"; + } else if ($option_info["option_value"] == $default_value) { + $checked = "checked"; + } + echo <<< END + +
            +END; + $count++; + } + } + break; + + case "select": + $count = 1; + + echo ""; + break; + + case "multi-select": + $count = 1; + + echo ""; + break; + } +} diff --git a/global/smarty_plugins/function.display_view_name.php b/global/smarty_plugins/function.display_view_name.php new file mode 100644 index 00000000..bf0ee3d5 --- /dev/null +++ b/global/smarty_plugins/function.display_view_name.php @@ -0,0 +1,23 @@ + isset($params["id"]) ? $params["id"] : "", + "name" => isset($params["name"]) ? $params["name"] : "", + "tabindex" => isset($params["tabindex"]) ? $params["tabindex"] : "" + ); + + $attribute_str = ""; + foreach ($attributes as $key => $value) { + if (!empty($value)) { + $attribute_str .= " $key=\"$value\""; + } + } + + $rows = array(); + $rows[] = ""; + + foreach ($options as $value => $text) { + $rows[] = ""; + } + + $dd = ""; + + return $dd; +} diff --git a/global/smarty_plugins/function.edit_custom_field.php b/global/smarty_plugins/function.edit_custom_field.php new file mode 100644 index 00000000..69018ecc --- /dev/null +++ b/global/smarty_plugins/function.edit_custom_field.php @@ -0,0 +1,116 @@ + $form_id, + "VIEW_ID" => $field_info["view_id"], + "SUBMISSION_ID" => $submission_id, + "FIELD_ID" => $field_info["field_id"], + "NAME" => $field_info["field_name"], + "COLNAME" => $field_info["col_name"], + "VALUE" => isset($field_info["submission_value"]) ? $field_info["submission_value"] : "", + "SETTINGS" => $settings, + "CONTEXTPAGE" => "edit_submission", + "ACCOUNT_INFO" => Sessions::getWithFallback("account", array()), + "g_root_url" => $root_url, + "g_root_dir" => $root_dir, + "g_multi_val_delimiter" => $multi_val_delimiter + ); + + // add in all field type settings and their replacements + + foreach ($field_type_info["settings"] as $setting_info) { + $curr_setting_id = $setting_info["setting_id"]; + $curr_setting_field_type = $setting_info["field_type"]; + $default_value_type = $setting_info["default_value_type"]; + $value = $setting_info["default_value"]; + $identifier = $setting_info["field_setting_identifier"]; + + // what does THIS do? + foreach ($field_info["field_settings"] as $setting) { + $found = false; + foreach ($setting as $setting_id => $setting_value) { + if ($setting_id == $curr_setting_id) { + $value = $setting_value; + break; + } + } + reset($setting); + if ($found) { + break; + } + } + + // next, if the setting is dynamic, convert the stored value + if ($default_value_type == "dynamic") { + // dynamic setting values should ALWAYS be of the form "setting_name,module_folder/'core'". If they're not, just ignore it + $parts = explode(",", $value); + if (count($parts) == 2) { + $value = Settings::get($parts[0], $parts[1]); + } + } + + // if this setting type is a dropdown list and $value is non-empty, get the list of options + if ($curr_setting_field_type == "option_list_or_form_field" && !empty($value)) { + if (preg_match("/^form_field/", $value)) { + $value = Submissions::getMappedFormFieldData($value); + } else { + $value = OptionLists::getOptionList($value); + } + } + + $placeholders[$identifier] = $value; + } + + echo General::evalSmartyString($markup_with_placeholders, $placeholders); +} diff --git a/global/smarty_plugins/function.edit_phone_field.php b/global/smarty_plugins/function.edit_phone_field.php new file mode 100644 index 00000000..49710927 --- /dev/null +++ b/global/smarty_plugins/function.edit_phone_field.php @@ -0,0 +1,32 @@ +getTemplateVars("phone_number_format"); + $comments = $smarty->getTemplateVars("comments"); + $values = explode("|", $smarty->getTemplateVars("VALUE")); + $name = $smarty->getTemplateVars("NAME"); + $pieces = preg_split("/(x+)/", $format, 0, PREG_SPLIT_DELIM_CAPTURE); + $counter = 1; + + $html = ""; + foreach ($pieces as $piece) { + if (strlen($piece) == 0) { + continue; + } + if ($piece[0] == "x") { + $size = strlen($piece); + $value = htmlspecialchars((isset($values[$counter-1])) ? $values[$counter-1] : ""); + $html .= ""; + $counter++; + } else { + $html .= $piece; + } + } + + if ($comments) { + $html .= "
            $comments
            "; + } + + return $html; +} diff --git a/global/smarty_plugins/function.email_patterns_dropdown.php b/global/smarty_plugins/function.email_patterns_dropdown.php new file mode 100644 index 00000000..20b78eac --- /dev/null +++ b/global/smarty_plugins/function.email_patterns_dropdown.php @@ -0,0 +1,68 @@ + + "; + + $count = 1; + foreach ($optgroups as $key => $patterns) { + $html .= ""; + + foreach ($patterns as $pattern_info) { + $html .= ""; + $content .= ""; + $count++; + } + + $html .= ""; + } + + $html .= ""; + + // add the content in a hidden div + $html .= "
            $content
            "; + + return $html; +} + diff --git a/global/smarty_plugins/function.eval_smarty_string.php b/global/smarty_plugins/function.eval_smarty_string.php new file mode 100644 index 00000000..9310d958 --- /dev/null +++ b/global/smarty_plugins/function.eval_smarty_string.php @@ -0,0 +1,32 @@ +"; + } else { + $html = ""; + reset($field_sizes); + } + } else { + $html = ""; + reset($field_sizes); + } + + return $html; +} + + diff --git a/global/smarty_plugins/function.form_fields_dropdown.php b/global/smarty_plugins/function.form_fields_dropdown.php new file mode 100644 index 00000000..465f9f97 --- /dev/null +++ b/global/smarty_plugins/function.form_fields_dropdown.php @@ -0,0 +1,64 @@ + $params["name_id"], + "name" => $params["name_id"], + "onchange" => $onchange, + "style" => $style, + "tabindex" => $tabindex + ); + + $attribute_str = ""; + foreach ($attributes as $key => $value) { + if (!empty($value)) { + $attribute_str .= " $key=\"$value\""; + } + } + + $column_info = Forms::getFormColumnNames($params["form_id"]); + $rows = array(); + + if (!empty($blank_option_value) && !empty($blank_option_text)) { + $rows[] = ""; + } + + foreach ($column_info as $col_name => $display_text) { + if ($display_column_names) { + $display_text = $col_name; + } + + $rows[] = ""; + } + + $dd = ""; + + return $dd; +} + diff --git a/global/smarty_plugins/function.form_view_fields_dropdown.php b/global/smarty_plugins/function.form_view_fields_dropdown.php new file mode 100644 index 00000000..fb2f5c43 --- /dev/null +++ b/global/smarty_plugins/function.form_view_fields_dropdown.php @@ -0,0 +1,87 @@ + $params["name_id"], + "name" => $params["name_id"], + "onchange" => $onchange, + "style" => $style + ); + + $attribute_str = ""; + foreach ($attributes as $key => $value) { + if (!empty($value)) { + $attribute_str .= " $key=\"$value\""; + } + } + + $view_fields = ViewFields::getViewFields($view_id); + $rows = array(); + + // find out which field type IDs are date fields + $date_field_type_ids = array(); + foreach ($field_types as $field_type_info) { + if ($field_type_info["is_date_field"] == "yes") { + $date_field_type_ids[] = $field_type_info["field_type_id"]; + } + } + + if (!empty($blank_option_value) && !empty($blank_option_text)) { + $rows[] = ""; + } + + foreach ($view_fields as $field_info) { + if ($field_info["is_searchable"] != "yes") { + continue; + } + + $col_name = $field_info["col_name"]; + $field_title = $field_info["field_title"]; + + $is_date_field = in_array($field_info["field_type_id"], $date_field_type_ids); + $suffix = ""; + if ($is_date_field) { + $suffix = "|date"; + $selected = ($default_value == "$col_name|date") ? "selected" : ""; + } else { + $selected = ($default_value == $col_name) ? "selected" : ""; + } + + $rows[] = ""; + } + + $dd = ""; + + return $dd; +} diff --git a/global/smarty_plugins/function.forms_dropdown.php b/global/smarty_plugins/function.forms_dropdown.php new file mode 100644 index 00000000..6002c114 --- /dev/null +++ b/global/smarty_plugins/function.forms_dropdown.php @@ -0,0 +1,115 @@ + true, + "status" => $form_status + )); + + $rows = array(); + + foreach ($forms as $form_info) { + if ($form_info["is_complete"] == "no" && $hide_incomplete_forms) { + continue; + } + + $form_id = $form_info["form_id"]; + $form_name = $form_info["form_name"]; + + if (in_array($form_id, $omit_forms)) { + continue; + } + + if (!empty($only_show_forms) && !in_array($form_id, $only_show_forms)) { + continue; + } + + $rows[] = array("form_id" => $form_id, "form_name" => $form_name); + } + + if (count($rows) == 1 && $display_single_form_as_text) { + $html = $rows[0]["form_name"]; + } else { + $options = array(); + + if ($include_blank_option) { + if ($blank_option_is_optgroup) { + $options[] = ""; + } else { + $options[] = ""; + } + } + + foreach ($rows as $row_info) { + $selected = ""; + if (is_array($default_value) && in_array($row_info["form_id"], $default_value)) { + $selected = "selected"; + } else if ($default_value == $row_info["form_id"]) { + $selected = "selected"; + } + $options[] = ""; + } + + if ($include_blank_option && $blank_option_is_optgroup) { + $options[] = ""; + } + + $html = ""; + } + + return $html; +} + diff --git a/global/smarty_plugins/function.ft_include.php b/global/smarty_plugins/function.ft_include.php new file mode 100644 index 00000000..b1570e7a --- /dev/null +++ b/global/smarty_plugins/function.ft_include.php @@ -0,0 +1,32 @@ +getTheme(); + + return Core::$smarty->fetch(Themes::getSmartyTemplateWithFallback($theme, $template)); +} + diff --git a/global/smarty_plugins/function.js_files.php b/global/smarty_plugins/function.js_files.php new file mode 100644 index 00000000..156710e7 --- /dev/null +++ b/global/smarty_plugins/function.js_files.php @@ -0,0 +1,10 @@ +\n"; + } + return $html; +} diff --git a/global/smarty_plugins/function.languages_dropdown.php b/global/smarty_plugins/function.languages_dropdown.php new file mode 100644 index 00000000..25f5d0bf --- /dev/null +++ b/global/smarty_plugins/function.languages_dropdown.php @@ -0,0 +1,54 @@ + $params["name_id"], + "name" => $params["name_id"], + "onchange" => $onchange + ); + + $attribute_str = ""; + foreach ($attributes as $key => $value) { + if (!empty($value)) { + $attribute_str .= " $key=\"$value\""; + } + } + + $available_language_info = Settings::get("available_languages"); + $available_language_arr = explode("|", $available_language_info); + + $html = ""; + + return $html; +} diff --git a/global/smarty_plugins/function.menus_dropdown.php b/global/smarty_plugins/function.menus_dropdown.php new file mode 100644 index 00000000..39e36827 --- /dev/null +++ b/global/smarty_plugins/function.menus_dropdown.php @@ -0,0 +1,55 @@ + $params["name_id"], + "name" => $params["name_id"], + ); + + $attribute_str = ""; + foreach ($attributes as $key => $value) { + if (!empty($value)) { + $attribute_str .= " $key=\"$value\""; + } + } + + $menus = Menus::getMenuList(); + $rows = array(""); + foreach ($menus as $menu_info) { + $menu_id = $menu_info["menu_id"]; + $menu = $menu_info["menu"]; + $menu_type = $menu_info["menu_type"]; + + if (!empty($type) && $menu_type != $type) { + continue; + } + + $rows[] = ""; + } + + $dd = ""; + + return $dd; +} diff --git a/global/smarty_plugins/function.module_function.php b/global/smarty_plugins/function.module_function.php new file mode 100644 index 00000000..345c21d3 --- /dev/null +++ b/global/smarty_plugins/function.module_function.php @@ -0,0 +1,24 @@ +_get_plugin_filepath("function", $function_name); + @include_once $plugin_file; + + $function_name ="smarty_function_$function_name"; + if (function_exists($function_name)) { + eval('$var = $function_name($params, $smarty);'); + echo $var; + } +} diff --git a/global/smarty_plugins/function.option_list_dropdown.php b/global/smarty_plugins/function.option_list_dropdown.php new file mode 100644 index 00000000..72d92785 --- /dev/null +++ b/global/smarty_plugins/function.option_list_dropdown.php @@ -0,0 +1,58 @@ + $params["name_id"], + "name" => $params["name_id"], + "onchange" => $onchange, + "style" => $style + ); + + $attribute_str = ""; + foreach ($attributes as $key => $value) { + if (!empty($value)) { + $attribute_str .= " $key=\"$value\""; + } + } + + $groups = OptionLists::getList(); + + $rows = array(); + $rows[] = ""; + + foreach ($groups["results"] as $group_info) { + $list_id = $group_info["list_id"]; + $option_list_name = $group_info["option_list_name"]; + $selected = ($default_value == $list_id) ? "selected" : ""; + $rows[] = "\n"; + } + + $html = ""; + + return $html; +} + diff --git a/global/smarty_plugins/function.pages_dropdown.php b/global/smarty_plugins/function.pages_dropdown.php new file mode 100644 index 00000000..ef4bd216 --- /dev/null +++ b/global/smarty_plugins/function.pages_dropdown.php @@ -0,0 +1,53 @@ + $params["name_id"], + "class" => $class, + "name" => $params["name_id"], + "onchange" => $onchange, + "onkeyup" => $onkeyup + ); + + $dropdown_str = ""; + if ($menu_type == "admin") { + $dropdown_str = Menus::getAdminMenuPagesDropdown($default_value, $attributes, $is_building_menu, $omit_pages); + } + if ($menu_type == "client") { + $dropdown_str = Menus::getClientMenuPagesDropdown($default_value, $attributes, $omit_pages); + } + + return $dropdown_str; +} + diff --git a/global/smarty_plugins/function.show_page_load_time.php b/global/smarty_plugins/function.show_page_load_time.php new file mode 100644 index 00000000..cdebf623 --- /dev/null +++ b/global/smarty_plugins/function.show_page_load_time.php @@ -0,0 +1,15 @@ +Page load time: $difference seconds
            "; +} diff --git a/global/smarty_plugins/function.submission_dropdown.php b/global/smarty_plugins/function.submission_dropdown.php new file mode 100644 index 00000000..f18fd504 --- /dev/null +++ b/global/smarty_plugins/function.submission_dropdown.php @@ -0,0 +1,47 @@ +"; + foreach ($option_info as $option) { + $dd_str .= ""; + } + + foreach ($view_fields as $field_info) { + $field_title = $field_info["field_title"]; + $field_id = $field_info["field_id"]; + $selected = ($default_value == $field_id) ? "selected" : ""; + $rows[] = ""; + } + + $dd = ""; + + return $dd; +} diff --git a/global/smarty_plugins/function.view_phone_field.php b/global/smarty_plugins/function.view_phone_field.php new file mode 100644 index 00000000..b5312c73 --- /dev/null +++ b/global/smarty_plugins/function.view_phone_field.php @@ -0,0 +1,29 @@ +getTemplateVars("phone_number_format"); + $values = explode("|", $smarty->getTemplateVars("VALUE")); + $pieces = preg_split("/(x+)/", $format, 0, PREG_SPLIT_DELIM_CAPTURE); + $counter = 1; + $output = ""; + $has_content = false; + + foreach ($pieces as $piece) { + if (empty($piece)) { + continue; + } + if ($piece[0] == "x") { + $value = (isset($values[$counter-1])) ? $values[$counter-1] : ""; + $output .= $value; + if (!empty($value)) { + $has_content = true; + } + $counter++; + } else { + $output .= $piece; + } + } + + return (!empty($output) && $has_content) ? $output : ""; +} diff --git a/global/smarty_plugins/function.views_dropdown.php b/global/smarty_plugins/function.views_dropdown.php new file mode 100644 index 00000000..1faedb3e --- /dev/null +++ b/global/smarty_plugins/function.views_dropdown.php @@ -0,0 +1,115 @@ + $omit_hidden_views)); + + $attributes = array( + "id" => $name_id, + "name" => $name_id, + "onchange" => $onchange, + "class" => $class + ); + + $attribute_str = ""; + foreach ($attributes as $key => $value) { + if (!empty($value)) { + $attribute_str .= " $key=\"$value\""; + } + } + + $num_views = 0; + $class_str = (empty($class)) ? "" : " class=\"$class\""; + $dd = ""; + + if ($num_views <= 1 && $hide_single_view) { + // do nothing! + $dd = ""; + } else { + $dd = $open_html . $dd . $close_html; + } + + return $dd; +} + diff --git a/global/smarty_plugins/modifier.custom_format_date.php b/global/smarty_plugins/modifier.custom_format_date.php new file mode 100644 index 00000000..09fab268 --- /dev/null +++ b/global/smarty_plugins/modifier.custom_format_date.php @@ -0,0 +1,19 @@ + + * Name: lower
            + * @param string + * @param string + * @param string + * @return string + */ +function smarty_modifier_custom_format_date($date_str, $timezone_offset, $date_format) +{ + return General::getDate($timezone_offset, $date_str, $date_format); +} diff --git a/global/smarty_plugins/modifier.hook_call_defined.php b/global/smarty_plugins/modifier.hook_call_defined.php new file mode 100644 index 00000000..c78178b7 --- /dev/null +++ b/global/smarty_plugins/modifier.hook_call_defined.php @@ -0,0 +1,16 @@ +GitHub icon \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 00000000..5a10f77c --- /dev/null +++ b/index.php @@ -0,0 +1,71 @@ +isLoggedIn()) { + Core::$user->redirectToLoginPage(); +} + +$settings = Settings::get(); +$id = General::getLoginOverrideId(); + +$error = ""; +if (isset($_POST["username"]) && !empty($_POST["username"])) { + $error = Core::$user->login($_POST); +} + +$username = General::stripChars((isset($_POST["username"]) && !empty($_POST["username"])) ? $_POST["username"] : ""); + +$replacements = array( + "program_name" => $settings["program_name"], + "forgot_password_link" => "forget_password.php" . (!empty($id) ? "?id={$id}" : "") +); + + +// compile the variables for use in the templates +$page = array( + "page" => "login", + "page_url" => Pages::getPageUrl("login"), + "settings" => Settings::get(), + "head_title" => $LANG["phrase_admin_panel"], + "error" => $error, + "text_login" => General::evalSmartyString($LANG["text_login"], $replacements), + "program_name" => $settings["program_name"], + "login_heading" => sprintf("%s %s", $settings['program_name'], $LANG["word_administration"]), + "username" => $username, + "is_logged_in" => false, + "head_string" => "" +); + +if ($upgrade_info["upgraded"]) { + $replacements = array("version" => Core::getVersionString()); + $page["upgrade_notification"] = General::evalSmartyString($LANG["text_upgraded"], $replacements); +} else { + if (!$upgrade_info["success"]) { + $page["success"] = false; + $page["message"] = $upgrade_info["error_msg"]; + } +} + +Themes::displayPage("index.tpl", $page, Core::$user->getTheme(), Core::$user->getSwatch()); diff --git a/install/actions-installation.php b/install/actions-installation.php new file mode 100644 index 00000000..1c67efc9 --- /dev/null +++ b/install/actions-installation.php @@ -0,0 +1,281 @@ + "unknown_action" +); + +// if the user isn't on hitting the first or second page and they don't have sessions. The reason we allow the second +// page is that it contains important info about their environment and what +$missingPageParam = !isset($request["page"]) || !is_numeric($request["page"]); +if ($missingPageParam || (!Sessions::exists("fti.installing") && $request["page"] > 1)) { + General::returnJsonResponse($data, 403); + exit; +} + +$coreTables = Core::getCoreTables(); + +$statusCode = 200; +switch ($request["action"]) { + case "init": + + $defaultCacheFolder = realpath("../cache/"); + $selectedCacheFolder = Sessions::getWithFallback("fti.folderSettings.customCacheFolder", $defaultCacheFolder); + + // the init request is called on every page refresh, returning all data in sessions. We store everything we need to + // track for the whole installation process here. Individual page requests to update this info are handled + // separately + $data = array( + "isAuthenticated" => false, + "i18n" => Core::$L, + "availableLanguages" => Core::$translations->getList(), + "language" => $currentLang, + + "constants" => array( + "rootDir" => realpath(__DIR__ . "/../"), + "rootUrl" => "../", + "coreVersion" => Core::getCoreVersion() + ), + + "dbSettings" => array( + "dbHostname" => Sessions::getWithFallback("fti.dbSettings.dbHostname", "localhost"), + "dbName" => Sessions::getWithFallback("fti.dbSettings.dbName", ""), + "dbPort" => Sessions::getWithFallback("fti.dbSettings.dbPort", "3306"), + "dbUsername" => Sessions::getWithFallback("fti.dbSettings.dbUsername", ""), + "dbPassword" => Sessions::getWithFallback("fti.dbSettings.dbPassword", ""), + "dbTablePrefix" => Sessions::getWithFallback("fti.dbSettings.dbTablePrefix", "ft_"), + "dbTablesCreated" => Sessions::getWithFallback("fti.dbSettings.dbTablesCreated", false), + "dbTablesExist" => Sessions::getWithFallback("fti.dbSettings.dbTablesExist", false) + ), + + "folderSettings" => array( + "uploadFolder" => realpath("../upload/"), + "useCustomCacheFolder" => Sessions::getWithFallback("fti.folderSettings.useCustomCacheFolder", false), + "defaultCacheFolder" => $defaultCacheFolder, + "customCacheFolder" => $selectedCacheFolder + ), + + "systemInfo" => array( + "phpVersion" => phpversion(), + "validPhpVersion" => Core::isValidPHPVersion(), + "pdoAvailable" => extension_loaded("PDO"), + "pdoMysqlAvailable" => extension_loaded("pdo_mysql"), + "suhosinLoaded" => extension_loaded("suhosin"), + "sessionsLoaded" => extension_loaded("session"), + "uploadFolderWritable" => is_writable(realpath("../upload")), + "defaultCacheFolderWritable" => is_writable($defaultCacheFolder), + "cacheFolderWritable" => is_writable($selectedCacheFolder) + ), + + "adminAccount" => array( + "firstName" => Sessions::getWithFallback("fti.adminAccount.firstName", ""), + "lastName" => Sessions::getWithFallback("fti.adminAccount.lastName", ""), + "email" => Sessions::getWithFallback("fti.adminAccount.email", ""), + "username" => Sessions::getWithFallback("fti.adminAccount.username", ""), + "password" => Sessions::getWithFallback("fti.adminAccount.password", "") + ), + + "systemCheckPassed" => Sessions::getWithFallback("fti.systemCheckPassed", false), + "configFileCreated" => file_exists(realpath("../global/config.php")), + "accountCreated" => Sessions::getWithFallback("fti.accountCreated", false) + ); + break; + + case "selectLanguage": + $list = Core::$translations->getList(); + $found = false; + foreach ($list as $item) { + if ($item->code === $_GET["lang"]) { + $found = true; + break; + } + } + if (!$found) { + $data["error"] = "invalid_language"; + $statusCode = 500; + } else { + Core::setCurrentLang($_GET["lang"]); + Sessions::set("lang", $_GET["lang"]); + $data = array( + "i18n" => Core::$L + ); + } + break; + + case "saveCacheFolderSettings": + if ($request["useCustomCacheFolder"] == "true") { + Sessions::set("fti.folderSettings.useCustomCacheFolder", true); + list($data, $statusCode) = Installation::verifyCustomCacheFolder($request["customCacheFolder"]); + } else { + if (!is_writable(realpath("../cache/"))) { + $data["error"] = "invalid_cache_folder_permissions"; + $data["cacheFolderWritable"] = false; + $statusCode = 400; + } else { + Sessions::set("fti.systemCheckPassed", true); + Sessions::set("fti.folderSettings.useCustomCacheFolder", false); + Sessions::set("fti.folderSettings.customCacheFolder", ""); + $data = array( + "cacheFolderWritable" => true + ); + } + } + + if (!is_writable(realpath("../upload"))) { + $data["error"] = "invalid_upload_folder_permissions"; + $data["uploadFolderWritable"] = false; + $statusCode = 400; + } else { + $data["uploadFolderWritable"] = true; + } + break; + + case "saveDbSettings": + $dbHostname = $request["dbHostname"]; + $dbName = $request["dbName"]; + $dbPort = $request["dbPort"]; + $dbUsername = $request["dbUsername"]; + $dbPassword = $request["dbPassword"]; + $dbTablePrefix = $request["dbTablePrefix"]; + $overwriteExistingTables = $request["overwrite"]; + + Sessions::set("fti.dbSettings.dbHostname", $dbHostname); + Sessions::set("fti.dbSettings.dbName", $dbName); + Sessions::set("fti.dbSettings.dbPort", $dbPort); + Sessions::set("fti.dbSettings.dbUsername", $dbUsername); + Sessions::set("fti.dbSettings.dbPassword", $dbPassword); + Sessions::set("fti.dbSettings.dbTablePrefix", $dbTablePrefix); + + list($success, $errorMsg) = Installation::checkConnection($dbHostname, $dbName, $dbPort, $dbUsername, $dbPassword); + if ($success) { + $db = new Database($dbHostname, $dbName, $dbPort, $dbUsername, $dbPassword, $dbTablePrefix); + + if ($overwriteExistingTables == "true") { + Installation::deleteTables($db, $coreTables); + } + + $existingTables = General::getExistingTables($db, $coreTables, $dbTablePrefix); + + if (empty($existingTables)) { + list($success, $error) = Installation::createDatabase($db); + + // any time the user progresses from this step dole up the latest + if ($success) { + $data = array(); + Sessions::set("fti.dbSettings.dbTablesCreated", true); + Sessions::set("fti.dbSettings.dbTablesExist", true); + } else { + $data = array( + "error" => "db_creation_error", + "response" => $error + ); + $statusCode = 400; + } + } else { + $data = array( + "error" => "db_tables_already_exist", + "tables" => $existingTables + ); + $statusCode = 400; + } + } else { + $data = array( + "error" => "db_connection_error", + "response" => $errorMsg + ); + $statusCode = 400; + } + break; + + case "createConfigFile": + $configFileGenerated = Installation::generateConfigFile($request["configFile"]); + if ($configFileGenerated) { + $data = array(); + Sessions::set("fti.configFileCreated", true); + } else { + $data = array( + "error" => "error_creating_config_file" + ); + $statusCode = 400; + } + break; + + case "checkConfigFileExists": + if (file_exists(realpath("../global/config.php"))) { + Sessions::set("fti.configFileCreated", true); + } else { + $data["error"] = "config_file_still_no_exists"; + $statusCode = 400; + } + break; + + case "saveAdminAccount": + $lang = Core::getCurrentLang(); + Core::init(array( + "init_user" => false, + "auto_logout" => false + )); + list($success, $error) = Installation::setAdminAccount($request, $lang); + + if ($success) { + Core::init(array("auto_logout" => false)); + + $data = array(); + Sessions::set("fti.accountCreated", true); + + // now set up the remainder of the script + Hooks::updateAvailableHooks(); + Modules::updateModuleList(); + Themes::updateThemeList(); + Installation::installCoreFieldTypes(); + Modules::installModules(); + Settings::set(array( + "installation_complete" => "yes", + "default_language" => $lang + ), "core"); + + // send "Welcome to Form Tools!" email + $email = Sessions::get("fti.adminAccount.email"); + $username = Sessions::get("fti.adminAccount.username"); + Installation::sendWelcomeEmail($email, $username); + } else { + $data = array( + "error" => $error + ); + } + break; +} + +Sessions::set("fti.installing", true); + +General::returnJsonResponse($data, $statusCode); + + + + diff --git a/install/index.php b/install/index.php new file mode 100644 index 00000000..d833b808 --- /dev/null +++ b/install/index.php @@ -0,0 +1,33 @@ + + + + + <?php echo $LANG["phrase_ft_installation"]; ?> + + + +
            + + + diff --git a/modules/index.html b/modules/index.html new file mode 100644 index 00000000..17071824 --- /dev/null +++ b/modules/index.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/process.php b/process.php new file mode 100644 index 00000000..3819d733 --- /dev/null +++ b/process.php @@ -0,0 +1,52 @@ + + * + * Once the form has been added through the Form Tools UI, this script parses the form contents + * and adds it to the database then redirects the user to whatever page is required. In addition, + * this script is used to initially set up the form within the database, to map input fields to + * database columns and types. + */ + +use FormTools\Core; +use FormTools\Forms; +use FormTools\Submissions; +use FormTools\Themes; + + +// always include the core library functions +require_once(__DIR__ . "/global/library.php"); + +// if the API is supplied, include it as well +@include_once(__DIR__ . "/global/api/api.php"); + +Core::init(); +$LANG = Core::$L; + + +// check we're receiving something +if (empty($_POST)) { + $page_vars = array("message_type" => "error", "message" => $LANG["processing_no_post_vars"]); + Themes::displayPage("error.tpl", $page_vars); + exit; + +// check there's a form ID included +} else if (empty($_POST["form_tools_form_id"])) { + $page_vars = array("message_type" => "error", "message" => $LANG["processing_no_form_id"]); + Themes::displayPage("error.tpl", $page_vars); + exit; + +// is this an initialization submission? +} else if (isset($_POST["form_tools_initialize_form"])) { + Forms::initializeForm($_POST); + +// otherwise, it's a regular form submission. Process it! +} else { + Submissions::processFormSubmission($_POST); +} diff --git a/react/main.bundle.js b/react/main.bundle.js new file mode 100644 index 00000000..93fa3f16 --- /dev/null +++ b/react/main.bundle.js @@ -0,0 +1,96 @@ +!function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="./dist/",n(n.s=179)}([function(e,t,n){"use strict";e.exports=n(180)},function(e,t,n){(function(e){e.exports=function(){"use strict";var t,r;function i(){return t.apply(null,arguments)}function a(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e){return void 0===e}function l(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function c(e,t){var n,r=[];for(n=0;n>>0,r=0;r0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var I=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,W=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,z={},U={};function B(e,t,n,r){var i=r;"string"==typeof r&&(i=function(){return this[r]()}),e&&(U[e]=i),t&&(U[t[0]]=function(){return R(i.apply(this,arguments),t[1],t[2])}),n&&(U[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function V(e,t){return e.isValid()?(t=q(t,e.localeData()),z[t]=z[t]||function(e){var t,n,r,i=e.match(I);for(t=0,n=i.length;t=0&&W.test(e);)e=e.replace(W,r),W.lastIndex=0,n-=1;return e}var G=/\d/,$=/\d\d/,J=/\d{3}/,K=/\d{4}/,X=/[+-]?\d{6}/,Q=/\d\d?/,Z=/\d\d\d\d?/,ee=/\d\d\d\d\d\d?/,te=/\d{1,3}/,ne=/\d{1,4}/,re=/[+-]?\d{1,6}/,ie=/\d+/,ae=/[+-]?\d+/,oe=/Z|[+-]\d\d:?\d\d/gi,se=/Z|[+-]\d\d(?::?\d\d)?/gi,le=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ue={};function ce(e,t,n){ue[e]=Y(t)?t:function(e,r){return e&&n?n:t}}function de(e,t){return d(ue,e)?ue[e](t._strict,t._locale):new RegExp(fe(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,r,i){return t||n||r||i})))}function fe(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var pe={};function he(e,t){var n,r=t;for("string"==typeof e&&(e=[e]),l(t)&&(r=function(e,n){n[t]=k(e)}),n=0;n68?1900:2e3)};var De,Ee=Ye("FullYear",!0);function Ye(e,t){return function(n){return null!=n?(Oe(this,e,n),i.updateOffset(this,t),this):Ce(this,e)}}function Ce(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function Oe(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&Se(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,r=(t%(n=12)+n)%n;return e+=(t-r)/12,1===r?Se(e)?29:28:31-r%7%2}De=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t=0?(s=new Date(e+400,t,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,t,n,r,i,a,o),s}function Be(e){var t;if(e<100&&e>=0){var n=Array.prototype.slice.call(arguments);n[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)}else t=new Date(Date.UTC.apply(null,arguments));return t}function Ve(e,t,n){var r=7+t-n;return-(7+Be(e,0,r).getUTCDay()-t)%7+r-1}function qe(e,t,n,r,i){var a,o,s=1+7*(t-1)+(7+n-r)%7+Ve(e,r,i);return s<=0?o=Te(a=e-1)+s:s>Te(e)?(a=e+1,o=s-Te(e)):(a=e,o=s),{year:a,dayOfYear:o}}function Ge(e,t,n){var r,i,a=Ve(e.year(),t,n),o=Math.floor((e.dayOfYear()-a-1)/7)+1;return o<1?r=o+$e(i=e.year()-1,t,n):o>$e(e.year(),t,n)?(r=o-$e(e.year(),t,n),i=e.year()+1):(i=e.year(),r=o),{week:r,year:i}}function $e(e,t,n){var r=Ve(e,t,n),i=Ve(e+1,t,n);return(Te(e)-r+i)/7}function Je(e,t){return e.slice(t,7).concat(e.slice(0,t))}B("w",["ww",2],"wo","week"),B("W",["WW",2],"Wo","isoWeek"),j("week","w"),j("isoWeek","W"),N("week",5),N("isoWeek",5),ce("w",Q),ce("ww",Q,$),ce("W",Q),ce("WW",Q,$),me(["w","ww","W","WW"],function(e,t,n,r){t[r.substr(0,1)]=k(e)}),B("d",0,"do","day"),B("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),B("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),B("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),B("e",0,0,"weekday"),B("E",0,0,"isoWeekday"),j("day","d"),j("weekday","e"),j("isoWeekday","E"),N("day",11),N("weekday",11),N("isoWeekday",11),ce("d",Q),ce("e",Q),ce("E",Q),ce("dd",function(e,t){return t.weekdaysMinRegex(e)}),ce("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ce("dddd",function(e,t){return t.weekdaysRegex(e)}),me(["dd","ddd","dddd"],function(e,t,n,r){var i=n._locale.weekdaysParse(e,r,n._strict);null!=i?t.d=i:h(n).invalidWeekday=e}),me(["d","e","E"],function(e,t,n,r){t[r]=k(e)});var Ke="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Xe="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Qe="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function Ze(e,t,n){var r,i,a,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=p([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=De.call(this._weekdaysParse,o))?i:null:"ddd"===t?-1!==(i=De.call(this._shortWeekdaysParse,o))?i:null:-1!==(i=De.call(this._minWeekdaysParse,o))?i:null:"dddd"===t?-1!==(i=De.call(this._weekdaysParse,o))?i:-1!==(i=De.call(this._shortWeekdaysParse,o))?i:-1!==(i=De.call(this._minWeekdaysParse,o))?i:null:"ddd"===t?-1!==(i=De.call(this._shortWeekdaysParse,o))?i:-1!==(i=De.call(this._weekdaysParse,o))?i:-1!==(i=De.call(this._minWeekdaysParse,o))?i:null:-1!==(i=De.call(this._minWeekdaysParse,o))?i:-1!==(i=De.call(this._weekdaysParse,o))?i:-1!==(i=De.call(this._shortWeekdaysParse,o))?i:null}var et=le,tt=le,nt=le;function rt(){function e(e,t){return t.length-e.length}var t,n,r,i,a,o=[],s=[],l=[],u=[];for(t=0;t<7;t++)n=p([2e3,1]).day(t),r=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(r),s.push(i),l.push(a),u.push(r),u.push(i),u.push(a);for(o.sort(e),s.sort(e),l.sort(e),u.sort(e),t=0;t<7;t++)s[t]=fe(s[t]),l[t]=fe(l[t]),u[t]=fe(u[t]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function it(){return this.hours()%12||12}function at(e,t){B(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function ot(e,t){return t._meridiemParse}B("H",["HH",2],0,"hour"),B("h",["hh",2],0,it),B("k",["kk",2],0,function(){return this.hours()||24}),B("hmm",0,0,function(){return""+it.apply(this)+R(this.minutes(),2)}),B("hmmss",0,0,function(){return""+it.apply(this)+R(this.minutes(),2)+R(this.seconds(),2)}),B("Hmm",0,0,function(){return""+this.hours()+R(this.minutes(),2)}),B("Hmmss",0,0,function(){return""+this.hours()+R(this.minutes(),2)+R(this.seconds(),2)}),at("a",!0),at("A",!1),j("hour","h"),N("hour",13),ce("a",ot),ce("A",ot),ce("H",Q),ce("h",Q),ce("k",Q),ce("HH",Q,$),ce("hh",Q,$),ce("kk",Q,$),ce("hmm",Z),ce("hmmss",ee),ce("Hmm",Z),ce("Hmmss",ee),he(["H","HH"],be),he(["k","kk"],function(e,t,n){var r=k(e);t[be]=24===r?0:r}),he(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),he(["h","hh"],function(e,t,n){t[be]=k(e),h(n).bigHour=!0}),he("hmm",function(e,t,n){var r=e.length-2;t[be]=k(e.substr(0,r)),t[we]=k(e.substr(r)),h(n).bigHour=!0}),he("hmmss",function(e,t,n){var r=e.length-4,i=e.length-2;t[be]=k(e.substr(0,r)),t[we]=k(e.substr(r,2)),t[Me]=k(e.substr(i)),h(n).bigHour=!0}),he("Hmm",function(e,t,n){var r=e.length-2;t[be]=k(e.substr(0,r)),t[we]=k(e.substr(r))}),he("Hmmss",function(e,t,n){var r=e.length-4,i=e.length-2;t[be]=k(e.substr(0,r)),t[we]=k(e.substr(r,2)),t[Me]=k(e.substr(i))});var st,lt=Ye("Hours",!0),ut={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ae,monthsShort:He,week:{dow:0,doy:6},weekdays:Ke,weekdaysMin:Qe,weekdaysShort:Xe,meridiemParse:/[ap]\.?m?\.?/i},ct={},dt={};function ft(e){return e?e.toLowerCase().replace("_","-"):e}function pt(t){var r=null;if(!ct[t]&&void 0!==e&&e&&e.exports)try{r=st._abbr,n(204)("./"+t),ht(r)}catch(e){}return ct[t]}function ht(e,t){var n;return e&&((n=s(t)?_t(e):mt(e,t))?st=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),st._abbr}function mt(e,t){if(null!==t){var n,r=ut;if(t.abbr=e,null!=ct[e])E("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=ct[e]._config;else if(null!=t.parentLocale)if(null!=ct[t.parentLocale])r=ct[t.parentLocale]._config;else{if(null==(n=pt(t.parentLocale)))return dt[t.parentLocale]||(dt[t.parentLocale]=[]),dt[t.parentLocale].push({name:e,config:t}),null;r=n._config}return ct[e]=new O(C(r,t)),dt[e]&&dt[e].forEach(function(e){mt(e.name,e.config)}),ht(e),ct[e]}return delete ct[e],null}function _t(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return st;if(!a(e)){if(t=pt(e))return t;e=[e]}return function(e){for(var t,n,r,i,a=0;a0;){if(r=pt(i.slice(0,t).join("-")))return r;if(n&&n.length>=t&&L(i,n,!0)>=t-1)break;t--}a++}return st}(e)}function gt(e){var t,n=e._a;return n&&-2===h(e).overflow&&(t=n[ye]<0||n[ye]>11?ye:n[ve]<1||n[ve]>Pe(n[ge],n[ye])?ve:n[be]<0||n[be]>24||24===n[be]&&(0!==n[we]||0!==n[Me]||0!==n[ke])?be:n[we]<0||n[we]>59?we:n[Me]<0||n[Me]>59?Me:n[ke]<0||n[ke]>999?ke:-1,h(e)._overflowDayOfYear&&(tve)&&(t=ve),h(e)._overflowWeeks&&-1===t&&(t=Le),h(e)._overflowWeekday&&-1===t&&(t=xe),h(e).overflow=t),e}function yt(e,t,n){return null!=e?e:null!=t?t:n}function vt(e){var t,n,r,a,o,s=[];if(!e._d){for(r=function(e){var t=new Date(i.now());return e._useUTC?[t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate()]:[t.getFullYear(),t.getMonth(),t.getDate()]}(e),e._w&&null==e._a[ve]&&null==e._a[ye]&&function(e){var t,n,r,i,a,o,s,l;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)a=1,o=4,n=yt(t.GG,e._a[ge],Ge(jt(),1,4).year),r=yt(t.W,1),((i=yt(t.E,1))<1||i>7)&&(l=!0);else{a=e._locale._week.dow,o=e._locale._week.doy;var u=Ge(jt(),a,o);n=yt(t.gg,e._a[ge],u.year),r=yt(t.w,u.week),null!=t.d?((i=t.d)<0||i>6)&&(l=!0):null!=t.e?(i=t.e+a,(t.e<0||t.e>6)&&(l=!0)):i=a}r<1||r>$e(n,a,o)?h(e)._overflowWeeks=!0:null!=l?h(e)._overflowWeekday=!0:(s=qe(n,r,i,a,o),e._a[ge]=s.year,e._dayOfYear=s.dayOfYear)}(e),null!=e._dayOfYear&&(o=yt(e._a[ge],r[ge]),(e._dayOfYear>Te(o)||0===e._dayOfYear)&&(h(e)._overflowDayOfYear=!0),n=Be(o,0,e._dayOfYear),e._a[ye]=n.getUTCMonth(),e._a[ve]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=s[t]=r[t];for(;t<7;t++)e._a[t]=s[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[be]&&0===e._a[we]&&0===e._a[Me]&&0===e._a[ke]&&(e._nextDay=!0,e._a[be]=0),e._d=(e._useUTC?Be:Ue).apply(null,s),a=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[be]=24),e._w&&void 0!==e._w.d&&e._w.d!==a&&(h(e).weekdayMismatch=!0)}}var bt=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,wt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,Mt=/Z|[+-]\d\d(?::?\d\d)?/,kt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Lt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],xt=/^\/?Date\((\-?\d+)/i;function Tt(e){var t,n,r,i,a,o,s=e._i,l=bt.exec(s)||wt.exec(s);if(l){for(h(e).iso=!0,t=0,n=kt.length;t0&&h(e).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),u+=n.length),U[a]?(n?h(e).empty=!1:h(e).unusedTokens.push(a),_e(a,n,e)):e._strict&&!n&&h(e).unusedTokens.push(a);h(e).charsLeftOver=l-u,s.length>0&&h(e).unusedInput.push(s),e._a[be]<=12&&!0===h(e).bigHour&&e._a[be]>0&&(h(e).bigHour=void 0),h(e).parsedDateParts=e._a.slice(0),h(e).meridiem=e._meridiem,e._a[be]=function(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}(e._locale,e._a[be],e._meridiem),vt(e),gt(e)}else Yt(e);else Tt(e)}function Ot(e){var t=e._i,n=e._f;return e._locale=e._locale||_t(e._l),null===t||void 0===n&&""===t?_({nullInput:!0}):("string"==typeof t&&(e._i=t=e._locale.preparse(t)),w(t)?new b(gt(t)):(u(t)?e._d=t:a(n)?function(e){var t,n,r,i,a;if(0===e._f.length)return h(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;ithis?this:e:_()});function Ft(e,t){var n,r;if(1===t.length&&a(t[0])&&(t=t[0]),!t.length)return jt();for(n=t[0],r=1;r=0?new Date(e+400,t,n)-dn:new Date(e,t,n).valueOf()}function hn(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-dn:Date.UTC(e,t,n)}function mn(e,t){B(0,[e,e.length],0,t)}function _n(e,t,n,r,i){var a;return null==e?Ge(this,r,i).year:(t>(a=$e(e,r,i))&&(t=a),gn.call(this,e,t,n,r,i))}function gn(e,t,n,r,i){var a=qe(e,t,n,r,i),o=Be(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}B(0,["gg",2],0,function(){return this.weekYear()%100}),B(0,["GG",2],0,function(){return this.isoWeekYear()%100}),mn("gggg","weekYear"),mn("ggggg","weekYear"),mn("GGGG","isoWeekYear"),mn("GGGGG","isoWeekYear"),j("weekYear","gg"),j("isoWeekYear","GG"),N("weekYear",1),N("isoWeekYear",1),ce("G",ae),ce("g",ae),ce("GG",Q,$),ce("gg",Q,$),ce("GGGG",ne,K),ce("gggg",ne,K),ce("GGGGG",re,X),ce("ggggg",re,X),me(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,r){t[r.substr(0,2)]=k(e)}),me(["gg","GG"],function(e,t,n,r){t[r]=i.parseTwoDigitYear(e)}),B("Q",0,"Qo","quarter"),j("quarter","Q"),N("quarter",7),ce("Q",G),he("Q",function(e,t){t[ye]=3*(k(e)-1)}),B("D",["DD",2],"Do","date"),j("date","D"),N("date",9),ce("D",Q),ce("DD",Q,$),ce("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),he(["D","DD"],ve),he("Do",function(e,t){t[ve]=k(e.match(Q)[0])});var yn=Ye("Date",!0);B("DDD",["DDDD",3],"DDDo","dayOfYear"),j("dayOfYear","DDD"),N("dayOfYear",4),ce("DDD",te),ce("DDDD",J),he(["DDD","DDDD"],function(e,t,n){n._dayOfYear=k(e)}),B("m",["mm",2],0,"minute"),j("minute","m"),N("minute",14),ce("m",Q),ce("mm",Q,$),he(["m","mm"],we);var vn=Ye("Minutes",!1);B("s",["ss",2],0,"second"),j("second","s"),N("second",15),ce("s",Q),ce("ss",Q,$),he(["s","ss"],Me);var bn,wn=Ye("Seconds",!1);for(B("S",0,0,function(){return~~(this.millisecond()/100)}),B(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),B(0,["SSS",3],0,"millisecond"),B(0,["SSSS",4],0,function(){return 10*this.millisecond()}),B(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),B(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),B(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),B(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),B(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),j("millisecond","ms"),N("millisecond",16),ce("S",te,G),ce("SS",te,$),ce("SSS",te,J),bn="SSSS";bn.length<=9;bn+="S")ce(bn,ie);function Mn(e,t){t[ke]=k(1e3*("0."+e))}for(bn="S";bn.length<=9;bn+="S")he(bn,Mn);var kn=Ye("Milliseconds",!1);B("z",0,0,"zoneAbbr"),B("zz",0,0,"zoneName");var Ln=b.prototype;function xn(e){return e}Ln.add=tn,Ln.calendar=function(e,t){var n=e||jt(),r=Vt(n,this).startOf("day"),a=i.calendarFormat(this,r)||"sameElse",o=t&&(Y(t[a])?t[a].call(this,n):t[a]);return this.format(o||this.localeData().calendar(a,this,jt(n)))},Ln.clone=function(){return new b(this)},Ln.diff=function(e,t,n){var r,i,a;if(!this.isValid())return NaN;if(!(r=Vt(e,this)).isValid())return NaN;switch(i=6e4*(r.utcOffset()-this.utcOffset()),t=A(t)){case"year":a=rn(this,r)/12;break;case"month":a=rn(this,r);break;case"quarter":a=rn(this,r)/3;break;case"second":a=(this-r)/1e3;break;case"minute":a=(this-r)/6e4;break;case"hour":a=(this-r)/36e5;break;case"day":a=(this-r-i)/864e5;break;case"week":a=(this-r-i)/6048e5;break;default:a=this-r}return n?a:M(a)},Ln.endOf=function(e){var t;if(void 0===(e=A(e))||"millisecond"===e||!this.isValid())return this;var n=this._isUTC?hn:pn;switch(e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=cn-fn(t+(this._isUTC?0:this.utcOffset()*un),cn)-1;break;case"minute":t=this._d.valueOf(),t+=un-fn(t,un)-1;break;case"second":t=this._d.valueOf(),t+=ln-fn(t,ln)-1}return this._d.setTime(t),i.updateOffset(this,!0),this},Ln.format=function(e){e||(e=this.isUtc()?i.defaultFormatUtc:i.defaultFormat);var t=V(this,e);return this.localeData().postformat(t)},Ln.from=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||jt(e).isValid())?Kt({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Ln.fromNow=function(e){return this.from(jt(),e)},Ln.to=function(e,t){return this.isValid()&&(w(e)&&e.isValid()||jt(e).isValid())?Kt({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},Ln.toNow=function(e){return this.to(jt(),e)},Ln.get=function(e){return Y(this[e=A(e)])?this[e]():this},Ln.invalidAt=function(){return h(this).overflow},Ln.isAfter=function(e,t){var n=w(e)?e:jt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=A(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()9999?V(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):Y(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(n,"Z")):V(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},Ln.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',r=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+r+"-MM-DD[T]HH:mm:ss.SSS"+i)},Ln.toJSON=function(){return this.isValid()?this.toISOString():null},Ln.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},Ln.unix=function(){return Math.floor(this.valueOf()/1e3)},Ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},Ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},Ln.year=Ee,Ln.isLeapYear=function(){return Se(this.year())},Ln.weekYear=function(e){return _n.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},Ln.isoWeekYear=function(e){return _n.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},Ln.quarter=Ln.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},Ln.month=Re,Ln.daysInMonth=function(){return Pe(this.year(),this.month())},Ln.week=Ln.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},Ln.isoWeek=Ln.isoWeeks=function(e){var t=Ge(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},Ln.weeksInYear=function(){var e=this.localeData()._week;return $e(this.year(),e.dow,e.doy)},Ln.isoWeeksInYear=function(){return $e(this.year(),1,4)},Ln.date=yn,Ln.day=Ln.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=function(e,t){return"string"!=typeof e?e:isNaN(e)?"number"==typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}(e,this.localeData()),this.add(e-t,"d")):t},Ln.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},Ln.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=function(e,t){return"string"==typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7},Ln.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},Ln.hour=Ln.hours=lt,Ln.minute=Ln.minutes=vn,Ln.second=Ln.seconds=wn,Ln.millisecond=Ln.milliseconds=kn,Ln.utcOffset=function(e,t,n){var r,a=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null!=e){if("string"==typeof e){if(null===(e=Bt(se,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(r=qt(this)),this._offset=e,this._isUTC=!0,null!=r&&this.add(r,"m"),a!==e&&(!t||this._changeInProgress?en(this,Kt(e-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,i.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?a:qt(this)},Ln.utc=function(e){return this.utcOffset(0,e)},Ln.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(qt(this),"m")),this},Ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Bt(oe,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},Ln.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?jt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},Ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},Ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},Ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},Ln.isUtc=Gt,Ln.isUTC=Gt,Ln.zoneAbbr=function(){return this._isUTC?"UTC":""},Ln.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},Ln.dates=T("dates accessor is deprecated. Use date instead.",yn),Ln.months=T("months accessor is deprecated. Use month instead",Re),Ln.years=T("years accessor is deprecated. Use year instead",Ee),Ln.zone=T("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),Ln.isDSTShifted=T("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var e={};if(y(e,this),(e=Ot(e))._a){var t=e._isUTC?p(e._a):jt(e._a);this._isDSTShifted=this.isValid()&&L(e._a,t.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted});var Tn=O.prototype;function Sn(e,t,n,r){var i=_t(),a=p().set(r,t);return i[n](a,e)}function Dn(e,t,n){if(l(e)&&(t=e,e=void 0),e=e||"",null!=t)return Sn(e,t,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=Sn(e,r,n,"month");return i}function En(e,t,n,r){"boolean"==typeof e?(l(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,l(t)&&(n=t,t=void 0),t=t||"");var i,a=_t(),o=e?a._week.dow:0;if(null!=n)return Sn(t,(n+o)%7,r,"day");var s=[];for(i=0;i<7;i++)s[i]=Sn(t,(i+o)%7,r,"day");return s}Tn.calendar=function(e,t,n){var r=this._calendar[e]||this._calendar.sameElse;return Y(r)?r.call(t,n):r},Tn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},Tn.invalidDate=function(){return this._invalidDate},Tn.ordinal=function(e){return this._ordinal.replace("%d",e)},Tn.preparse=xn,Tn.postformat=xn,Tn.relativeTime=function(e,t,n,r){var i=this._relativeTime[n];return Y(i)?i(e,t,n,r):i.replace(/%d/i,e)},Tn.pastFuture=function(e,t){var n=this._relativeTime[e>0?"future":"past"];return Y(n)?n(t):n.replace(/%s/i,t)},Tn.set=function(e){var t,n;for(n in e)Y(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},Tn.months=function(e,t){return e?a(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||je).test(t)?"format":"standalone"][e.month()]:a(this._months)?this._months:this._months.standalone},Tn.monthsShort=function(e,t){return e?a(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[je.test(t)?"format":"standalone"][e.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},Tn.monthsParse=function(e,t,n){var r,i,a;if(this._monthsParseExact)return Fe.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),r=0;r<12;r++){if(i=p([2e3,r]),n&&!this._longMonthsParse[r]&&(this._longMonthsParse[r]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[r]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[r]||(a="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[r]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[r].test(e))return r;if(n&&"MMM"===t&&this._shortMonthsParse[r].test(e))return r;if(!n&&this._monthsParse[r].test(e))return r}},Tn.monthsRegex=function(e){return this._monthsParseExact?(d(this,"_monthsRegex")||ze.call(this),e?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=We),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},Tn.monthsShortRegex=function(e){return this._monthsParseExact?(d(this,"_monthsRegex")||ze.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Ie),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},Tn.week=function(e){return Ge(e,this._week.dow,this._week.doy).week},Tn.firstDayOfYear=function(){return this._week.doy},Tn.firstDayOfWeek=function(){return this._week.dow},Tn.weekdays=function(e,t){var n=a(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Je(n,this._week.dow):e?n[e.day()]:n},Tn.weekdaysMin=function(e){return!0===e?Je(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin},Tn.weekdaysShort=function(e){return!0===e?Je(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort},Tn.weekdaysParse=function(e,t,n){var r,i,a;if(this._weekdaysParseExact)return Ze.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=p([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}},Tn.weekdaysRegex=function(e){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||rt.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=et),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},Tn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||rt.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=tt),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},Tn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||rt.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=nt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},Tn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},Tn.meridiem=function(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"},ht("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===k(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),i.lang=T("moment.lang is deprecated. Use moment.locale instead.",ht),i.langData=T("moment.langData is deprecated. Use moment.localeData instead.",_t);var Yn=Math.abs;function Cn(e,t,n,r){var i=Kt(t,n);return e._milliseconds+=r*i._milliseconds,e._days+=r*i._days,e._months+=r*i._months,e._bubble()}function On(e){return e<0?Math.floor(e):Math.ceil(e)}function Pn(e){return 4800*e/146097}function jn(e){return 146097*e/4800}function An(e){return function(){return this.as(e)}}var Hn=An("ms"),Fn=An("s"),Nn=An("m"),Rn=An("h"),In=An("d"),Wn=An("w"),zn=An("M"),Un=An("Q"),Bn=An("y");function Vn(e){return function(){return this.isValid()?this._data[e]:NaN}}var qn=Vn("milliseconds"),Gn=Vn("seconds"),$n=Vn("minutes"),Jn=Vn("hours"),Kn=Vn("days"),Xn=Vn("months"),Qn=Vn("years"),Zn=Math.round,er={ss:44,s:45,m:45,h:22,d:26,M:11};function tr(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}var nr=Math.abs;function rr(e){return(e>0)-(e<0)||+e}function ir(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=nr(this._milliseconds)/1e3,r=nr(this._days),i=nr(this._months);e=M(n/60),t=M(e/60),n%=60,e%=60;var a=M(i/12),o=i%=12,s=r,l=t,u=e,c=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var f=d<0?"-":"",p=rr(this._months)!==rr(d)?"-":"",h=rr(this._days)!==rr(d)?"-":"",m=rr(this._milliseconds)!==rr(d)?"-":"";return f+"P"+(a?p+a+"Y":"")+(o?p+o+"M":"")+(s?h+s+"D":"")+(l||u||c?"T":"")+(l?m+l+"H":"")+(u?m+u+"M":"")+(c?m+c+"S":"")}var ar=Rt.prototype;return ar.isValid=function(){return this._isValid},ar.abs=function(){var e=this._data;return this._milliseconds=Yn(this._milliseconds),this._days=Yn(this._days),this._months=Yn(this._months),e.milliseconds=Yn(e.milliseconds),e.seconds=Yn(e.seconds),e.minutes=Yn(e.minutes),e.hours=Yn(e.hours),e.months=Yn(e.months),e.years=Yn(e.years),this},ar.add=function(e,t){return Cn(this,e,t,1)},ar.subtract=function(e,t){return Cn(this,e,t,-1)},ar.as=function(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=A(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+Pn(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(jn(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}},ar.asMilliseconds=Hn,ar.asSeconds=Fn,ar.asMinutes=Nn,ar.asHours=Rn,ar.asDays=In,ar.asWeeks=Wn,ar.asMonths=zn,ar.asQuarters=Un,ar.asYears=Bn,ar.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},ar._bubble=function(){var e,t,n,r,i,a=this._milliseconds,o=this._days,s=this._months,l=this._data;return a>=0&&o>=0&&s>=0||a<=0&&o<=0&&s<=0||(a+=864e5*On(jn(s)+o),o=0,s=0),l.milliseconds=a%1e3,e=M(a/1e3),l.seconds=e%60,t=M(e/60),l.minutes=t%60,n=M(t/60),l.hours=n%24,o+=M(n/24),i=M(Pn(o)),s+=i,o-=On(jn(i)),r=M(s/12),s%=12,l.days=o,l.months=s,l.years=r,this},ar.clone=function(){return Kt(this)},ar.get=function(e){return e=A(e),this.isValid()?this[e+"s"]():NaN},ar.milliseconds=qn,ar.seconds=Gn,ar.minutes=$n,ar.hours=Jn,ar.days=Kn,ar.weeks=function(){return M(this.days()/7)},ar.months=Xn,ar.years=Qn,ar.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t=this.localeData(),n=function(e,t,n){var r=Kt(e).abs(),i=Zn(r.as("s")),a=Zn(r.as("m")),o=Zn(r.as("h")),s=Zn(r.as("d")),l=Zn(r.as("M")),u=Zn(r.as("y")),c=i<=er.ss&&["s",i]||i0,c[4]=n,tr.apply(null,c)}(this,!e,t);return e&&(n=t.pastFuture(+this,n)),t.postformat(n)},ar.toISOString=ir,ar.toString=ir,ar.toJSON=ir,ar.locale=an,ar.localeData=sn,ar.toIsoString=T("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ir),ar.lang=on,B("X",0,0,"unix"),B("x",0,0,"valueOf"),ce("x",ae),ce("X",/[+-]?\d+(\.\d{1,3})?/),he("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),he("x",function(e,t,n){n._d=new Date(k(e))}),i.version="2.24.0",t=jt,i.fn=Ln,i.min=function(){return Ft("isBefore",[].slice.call(arguments,0))},i.max=function(){return Ft("isAfter",[].slice.call(arguments,0))},i.now=function(){return Date.now?Date.now():+new Date},i.utc=p,i.unix=function(e){return jt(1e3*e)},i.months=function(e,t){return Dn(e,t,"months")},i.isDate=u,i.locale=ht,i.invalid=_,i.duration=Kt,i.isMoment=w,i.weekdays=function(e,t,n){return En(e,t,n,"weekdays")},i.parseZone=function(){return jt.apply(null,arguments).parseZone()},i.localeData=_t,i.isDuration=It,i.monthsShort=function(e,t){return Dn(e,t,"monthsShort")},i.weekdaysMin=function(e,t,n){return En(e,t,n,"weekdaysMin")},i.defineLocale=mt,i.updateLocale=function(e,t){if(null!=t){var n,r,i=ut;null!=(r=pt(e))&&(i=r._config),t=C(i,t),(n=new O(t)).parentLocale=ct[e],ct[e]=n,ht(e)}else null!=ct[e]&&(null!=ct[e].parentLocale?ct[e]=ct[e].parentLocale:null!=ct[e]&&delete ct[e]);return ct[e]},i.locales=function(){return S(ct)},i.weekdaysShort=function(e,t,n){return En(e,t,n,"weekdaysShort")},i.normalizeUnits=A,i.relativeTimeRounding=function(e){return void 0===e?Zn:"function"==typeof e&&(Zn=e,!0)},i.relativeTimeThreshold=function(e,t){return void 0!==er[e]&&(void 0===t?er[e]:(er[e]=t,"s"===e&&(er.ss=t-1),!0))},i.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},i.prototype=Ln,i.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},i}()}).call(this,n(41)(e))},function(e,t,n){var r=n(209);"string"==typeof r&&(r=[[e.i,r,""]]);var i={insert:"head",singleton:!1};n(12)(r,i);r.locals&&(e.exports=r.locals)},function(e,t,n){e.exports=n(184)()},function(e,t,n){"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE){0;try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}}(),e.exports=n(181)},function(e,t,n){"use strict";var r=function(){};e.exports=r},function(e,t,n){"use strict";var r=n(32),i=n(189),a=Object.prototype.toString;function o(e){return"[object Array]"===a.call(e)}function s(e){return null!==e&&"object"==typeof e}function l(e){return"[object Function]"===a.call(e)}function u(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),o(e))for(var n=0,r=e.length;n=15&&(d=!1,l=!0);var M=y&&(u||d&&(null==w||w<12.11)),k=n||o&&s>=9;function L(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}var x,T=function(e,t){var n=e.className,r=L(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}};function S(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function D(e,t){return S(e).appendChild(t)}function E(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var a=0;a=t)return o+(t-a);o+=s-a,o+=n-o%n,a=s+1}}m?A=function(e){e.selectionStart=0,e.selectionEnd=e.value.length}:o&&(A=function(e){try{e.select()}catch(e){}});var R=function(){this.id=null};function I(e,t){for(var n=0;n=t)return r+Math.min(o,t-i);if(i+=a-r,r=a+1,(i+=n-i%n)>=t)return r}}var G=[""];function $(e){for(;G.length<=e;)G.push(J(G)+" ");return G[e]}function J(e){return e[e.length-1]}function K(e,t){for(var n=[],r=0;r"€"&&(e.toUpperCase()!=e.toLowerCase()||Z.test(e))}function te(e,t){return t?!!(t.source.indexOf("\\w")>-1&&ee(e))||t.test(e):ee(e)}function ne(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}var re=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function ie(e){return e.charCodeAt(0)>=768&&re.test(e)}function ae(e,t,n){for(;(n<0?t>0:tn?-1:1;;){if(t==n)return t;var i=(t+n)/2,a=r<0?Math.ceil(i):Math.floor(i);if(a==t)return e(a)?t:n;e(a)?n=a:t=a+r}}var se=null;function le(e,t,n){var r;se=null;for(var i=0;it)return i;a.to==t&&(a.from!=a.to&&"before"==n?r=i:se=i),a.from==t&&(a.from!=a.to&&"before"!=n?r=i:se=i)}return null!=r?r:se}var ue=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111",n=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,r=/[stwN]/,i=/[LRr]/,a=/[Lb1n]/,o=/[1n]/;function s(e,t,n){this.level=e,this.from=t,this.to=n}return function(l,u){var c="ltr"==u?"L":"R";if(0==l.length||"ltr"==u&&!n.test(l))return!1;for(var d,f=l.length,p=[],h=0;h-1&&(r[t]=i.slice(0,a).concat(i.slice(a+1)))}}}function me(e,t){var n=pe(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i0}function ve(e){e.prototype.on=function(e,t){fe(this,e,t)},e.prototype.off=function(e,t){he(this,e,t)}}function be(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function we(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function Me(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function ke(e){be(e),we(e)}function Le(e){return e.target||e.srcElement}function xe(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),y&&e.ctrlKey&&1==t&&(t=3),t}var Te,Se,De=function(){if(o&&s<9)return!1;var e=E("div");return"draggable"in e||"dragDrop"in e}();function Ee(e){if(null==Te){var t=E("span","​");D(e,E("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Te=t.offsetWidth<=1&&t.offsetHeight>2&&!(o&&s<8))}var n=Te?E("span","​"):E("span"," ",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function Ye(e){if(null!=Se)return Se;var t=D(e,document.createTextNode("AخA")),n=x(t,0,1).getBoundingClientRect(),r=x(t,1,2).getBoundingClientRect();return S(e),!(!n||n.left==n.right)&&(Se=r.right-n.right<3)}var Ce,Oe=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,n=[],r=e.length;t<=r;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var a=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),o=a.indexOf("\r");-1!=o?(n.push(a.slice(0,o)),t+=o+1):(n.push(a),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},Pe=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(e){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(e){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},je="oncopy"in(Ce=E("div"))||(Ce.setAttribute("oncopy","return;"),"function"==typeof Ce.oncopy),Ae=null,He={},Fe={};function Ne(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),He[e]=t}function Re(e){if("string"==typeof e&&Fe.hasOwnProperty(e))e=Fe[e];else if(e&&"string"==typeof e.name&&Fe.hasOwnProperty(e.name)){var t=Fe[e.name];"string"==typeof t&&(t={name:t}),(e=Q(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Re("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Re("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Ie(e,t){t=Re(t);var n=He[t.name];if(!n)return Ie(e,"text/plain");var r=n(e,t);if(We.hasOwnProperty(t.name)){var i=We[t.name];for(var a in i)i.hasOwnProperty(a)&&(r.hasOwnProperty(a)&&(r["_"+a]=r[a]),r[a]=i[a])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var o in t.modeProps)r[o]=t.modeProps[o];return r}var We={};function ze(e,t){F(t,We.hasOwnProperty(e)?We[e]:We[e]={})}function Ue(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n}function Be(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t=n.state,e=n.mode;return n||{mode:e,state:t}}function Ve(e,t,n){return!e.startState||e.startState(t,n)}var qe=function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n};function Ge(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],a=i.chunkSize();if(t=e.first&&tn?tt(n,Ge(e,n).text.length):function(e,t){var n=e.ch;return null==n||n>t?tt(e.line,t):n<0?tt(e.line,0):e}(t,Ge(e,t.line).text.length)}function ut(e,t){for(var n=[],r=0;r=this.string.length},qe.prototype.sol=function(){return this.pos==this.lineStart},qe.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},qe.prototype.next=function(){if(this.post},qe.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},qe.prototype.skipToEnd=function(){this.pos=this.string.length},qe.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},qe.prototype.backUp=function(e){this.pos-=e},qe.prototype.column=function(){return this.lastColumnPos0?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}var i=function(e){return n?e.toLowerCase():e};if(i(this.string.substr(this.pos,e.length))==i(e))return!1!==t&&(this.pos+=e.length),!0},qe.prototype.current=function(){return this.string.slice(this.start,this.pos)},qe.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},qe.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},qe.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)};var ct=function(e,t){this.state=e,this.lookAhead=t},dt=function(e,t,n,r){this.state=t,this.doc=e,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1};function ft(e,t,n,r){var i=[e.state.modeGen],a={};wt(e,t.text,e.doc.mode,n,function(e,t){return i.push(e,t)},a,r);for(var o=n.state,s=function(r){n.baseTokens=i;var s=e.state.overlays[r],l=1,u=0;n.state=!0,wt(e,t.text,s.mode,n,function(e,t){for(var n=l;ue&&i.splice(l,1,e,i[l+1],r),l+=2,u=Math.min(e,r)}if(t)if(s.opaque)i.splice(n,l-n,e,"overlay "+t),l=n+2;else for(;ne.options.maxHighlightLength&&Ue(e.doc.mode,r.state),a=ft(e,t,r);i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=a.styles,a.classes?t.styleClasses=a.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function ht(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return new dt(r,!0,t);var a=function(e,t,n){for(var r,i,a=e.doc,o=n?-1:t-(e.doc.mode.innerMode?1e3:100),s=t;s>o;--s){if(s<=a.first)return a.first;var l=Ge(a,s-1),u=l.stateAfter;if(u&&(!n||s+(u instanceof ct?u.lookAhead:0)<=a.modeFrontier))return s;var c=N(l.text,null,e.options.tabSize);(null==i||r>c)&&(i=s-1,r=c)}return i}(e,t,n),o=a>r.first&&Ge(r,a-1).stateAfter,s=o?dt.fromSaved(r,o,a):new dt(r,Ve(r.mode),a);return r.iter(a,t,function(n){mt(e,n.text,s);var r=s.line;n.stateAfter=r==t-1||r%5==0||r>=i.viewFrom&&rt.start)return a}throw new Error("Mode "+e.name+" failed to advance stream.")}dt.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},dt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},dt.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},dt.fromSaved=function(e,t,n){return t instanceof ct?new dt(e,Ue(e.mode,t.state),n,t.lookAhead):new dt(e,Ue(e.mode,t),n)},dt.prototype.save=function(e){var t=!1!==e?Ue(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new ct(t,this.maxLookAhead):t};var yt=function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n};function vt(e,t,n,r){var i,a,o=e.doc,s=o.mode,l=Ge(o,(t=lt(o,t)).line),u=ht(e,t.line,n),c=new qe(l.text,e.options.tabSize,u);for(r&&(a=[]);(r||c.pose.options.maxHighlightLength?(s=!1,o&&mt(e,t,r,d.pos),d.pos=t.length,l=null):l=bt(gt(n,d,r.state,f),a),f){var p=f[0].name;p&&(l="m-"+(l?p+" "+l:p))}if(!s||c!=l){for(;u=t:a.to>t);(r||(r=[])).push(new Lt(o,a.from,s?null:a.to))}}return r}(n,i,o),l=function(e,t,n){var r;if(e)for(var i=0;i=t:a.to>t)||a.from==t&&"bookmark"==o.type&&(!n||a.marker.insertLeft)){var s=null==a.from||(o.inclusiveLeft?a.from<=t:a.from0&&s)for(var v=0;vt)&&(!n||Pt(n,a.marker)<0)&&(n=a.marker)}return n}function Nt(e,t,n,r,i){var a=Ge(e,t),o=kt&&a.markedSpans;if(o)for(var s=0;s=0&&d<=0||c<=0&&d>=0)&&(c<=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?nt(u.to,n)>=0:nt(u.to,n)>0)||c>=0&&(l.marker.inclusiveRight&&i.inclusiveLeft?nt(u.from,r)<=0:nt(u.from,r)<0)))return!0}}}function Rt(e){for(var t;t=At(e);)e=t.find(-1,!0).line;return e}function It(e,t){var n=Ge(e,t),r=Rt(n);return n==r?t:Xe(r)}function Wt(e,t){if(t>e.lastLine())return t;var n,r=Ge(e,t);if(!zt(e,r))return t;for(;n=Ht(r);)r=n.find(1,!0).line;return Xe(r)+1}function zt(e,t){var n=kt&&t.markedSpans;if(n)for(var r=void 0,i=0;it.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)})}var Gt=function(e,t,n){this.text=e,Yt(this,t),this.height=n?n(this):1};function $t(e){e.parent=null,Et(e)}Gt.prototype.lineNo=function(){return Xe(this)},ve(Gt);var Jt={},Kt={};function Xt(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?Kt:Jt;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function Qt(e,t){var n=Y("span",null,null,l?"padding-right: .1px":null),r={pre:Y("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var a=i?t.rest[i-1]:t.line,o=void 0;r.pos=0,r.addToken=en,Ye(e.display.measure)&&(o=ce(a,e.doc.direction))&&(r.addToken=tn(r.addToken,o)),r.map=[],rn(a,r,pt(e,a,t!=e.display.externalMeasured&&Xe(a))),a.styleClasses&&(a.styleClasses.bgClass&&(r.bgClass=j(a.styleClasses.bgClass,r.bgClass||"")),a.styleClasses.textClass&&(r.textClass=j(a.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(Ee(e.display.measure))),0==i?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(l){var s=r.content.lastChild;(/\bcm-tab\b/.test(s.className)||s.querySelector&&s.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return me(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=j(r.pre.className,r.textClass||"")),r}function Zt(e){var t=E("span","•","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function en(e,t,n,r,i,a,l){if(t){var u,c=e.splitSpaces?function(e,t){if(e.length>1&&!/ /.test(e))return e;for(var n=t,r="",i=0;iu&&d.from<=u);f++);if(d.to>=c)return e(n,r,i,a,o,s,l);e(n,r.slice(0,d.to-u),i,a,null,s,l),a=null,r=r.slice(d.to-u),u=d.to}}}function nn(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function rn(e,t,n){var r=e.markedSpans,i=e.text,a=0;if(r)for(var o,s,l,u,c,d,f,p=i.length,h=0,m=1,_="",g=0;;){if(g==h){l=u=c=s="",f=null,d=null,g=1/0;for(var y=[],v=void 0,b=0;bh||M.collapsed&&w.to==h&&w.from==h)){if(null!=w.to&&w.to!=h&&g>w.to&&(g=w.to,u=""),M.className&&(l+=" "+M.className),M.css&&(s=(s?s+";":"")+M.css),M.startStyle&&w.from==h&&(c+=" "+M.startStyle),M.endStyle&&w.to==g&&(v||(v=[])).push(M.endStyle,w.to),M.title&&((f||(f={})).title=M.title),M.attributes)for(var k in M.attributes)(f||(f={}))[k]=M.attributes[k];M.collapsed&&(!d||Pt(d.marker,M)<0)&&(d=w)}else w.from>h&&g>w.from&&(g=w.from)}if(v)for(var L=0;L=p)break;for(var T=Math.min(p,g);;){if(_){var S=h+_.length;if(!d){var D=S>T?_.slice(0,T-h):_;t.addToken(t,D,o?o+l:l,c,h+D.length==g?u:"",s,f)}if(S>=T){_=_.slice(T-h),h=T;break}h=S,c=""}_=i.slice(a,a=n[m++]),o=Xt(n[m++],t.cm.options)}}else for(var E=1;En)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}function Cn(e,t,n,r){return jn(e,Pn(e,t),n,r)}function On(e,t){if(t>=e.display.viewFrom&&t=n.lineN&&t2&&a.push((l.bottom+u.top)/2-n.top)}}a.push(n.bottom-n.top)}}(e,t.view,t.rect),t.hasHeights=!0),(a=function(e,t,n,r){var i,a=Fn(t.map,n,r),l=a.node,u=a.start,c=a.end,d=a.collapse;if(3==l.nodeType){for(var f=0;f<4;f++){for(;u&&ie(t.line.text.charAt(a.coverStart+u));)--u;for(;a.coverStart+c1}(e))return t;var n=screen.logicalXDPI/screen.deviceXDPI,r=screen.logicalYDPI/screen.deviceYDPI;return{left:t.left*n,right:t.right*n,top:t.top*r,bottom:t.bottom*r}}(e.display.measure,i))}else{var p;u>0&&(d=r="right"),i=e.options.lineWrapping&&(p=l.getClientRects()).length>1?p["right"==r?p.length-1:0]:l.getBoundingClientRect()}if(o&&s<9&&!u&&(!i||!i.left&&!i.right)){var h=l.parentNode.getClientRects()[0];i=h?{left:h.left,right:h.left+ar(e.display),top:h.top,bottom:h.bottom}:Hn}for(var m=i.top-t.rect.top,_=i.bottom-t.rect.top,g=(m+_)/2,y=t.view.measure.heights,v=0;vt)&&(i=(a=l-s)-1,t>=l&&(o="right")),null!=i){if(r=e[u+2],s==l&&n==(r.insertLeft?"left":"right")&&(o=n),"left"==n&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)r=e[2+(u-=3)],o="left";if("right"==n&&i==l-s)for(;u=0&&(n=e[i]).left==n.right;i--);return n}function Rn(e){if(e.measure&&(e.measure.cache={},e.measure.heights=null,e.rest))for(var t=0;t=r.text.length?(l=r.text.length,u="before"):l<=0&&(l=0,u="after"),!s)return o("before"==u?l-1:l,"before"==u);function c(e,t,n){return o(n?e-1:e,1==s[t].level!=n)}var d=le(s,l,u),f=se,p=c(l,d,"before"==u);return null!=f&&(p.other=c(l,f,"before"!=u)),p}function Jn(e,t){var n=0;t=lt(e.doc,t),e.options.lineWrapping||(n=ar(e.display)*t.ch);var r=Ge(e.doc,t.line),i=Bt(r)+Ln(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function Kn(e,t,n,r,i){var a=tt(e,t,n);return a.xRel=i,r&&(a.outside=r),a}function Xn(e,t,n){var r=e.doc;if((n+=e.display.viewOffset)<0)return Kn(r.first,0,null,-1,-1);var i=Qe(r,n),a=r.first+r.size-1;if(i>a)return Kn(r.first+r.size-1,Ge(r,a).text.length,null,1,1);t<0&&(t=0);for(var o=Ge(r,i);;){var s=tr(e,o,i,t,n),l=Ft(o,s.ch+(s.xRel>0||s.outside>0?1:0));if(!l)return s;var u=l.find(1);if(u.line==i)return u;o=Ge(r,i=u.line)}}function Qn(e,t,n,r){r-=Bn(t);var i=t.text.length,a=oe(function(t){return jn(e,n,t-1).bottom<=r},i,0);return{begin:a,end:i=oe(function(t){return jn(e,n,t).top>r},a,i)}}function Zn(e,t,n,r){return n||(n=Pn(e,t)),Qn(e,t,n,Vn(e,t,jn(e,n,r),"line").top)}function er(e,t,n,r){return!(e.bottom<=n)&&(e.top>n||(r?e.left:e.right)>t)}function tr(e,t,n,r,i){i-=Bt(t);var a=Pn(e,t),o=Bn(t),s=0,l=t.text.length,u=!0,c=ce(t,e.doc.direction);if(c){var d=(e.options.lineWrapping?rr:nr)(e,t,n,a,c,r,i);s=(u=1!=d.level)?d.from:d.to-1,l=u?d.to:d.from-1}var f,p,h=null,m=null,_=oe(function(t){var n=jn(e,a,t);return n.top+=o,n.bottom+=o,!!er(n,r,i,!1)&&(n.top<=i&&n.left<=r&&(h=t,m=n),!0)},s,l),g=!1;if(m){var y=r-m.left=b.bottom?1:0}return Kn(n,_=ae(t.text,_,1),p,g,r-f)}function nr(e,t,n,r,i,a,o){var s=oe(function(s){var l=i[s],u=1!=l.level;return er($n(e,tt(n,u?l.to:l.from,u?"before":"after"),"line",t,r),a,o,!0)},0,i.length-1),l=i[s];if(s>0){var u=1!=l.level,c=$n(e,tt(n,u?l.from:l.to,u?"after":"before"),"line",t,r);er(c,a,o,!0)&&c.top>o&&(l=i[s-1])}return l}function rr(e,t,n,r,i,a,o){var s=Qn(e,t,r,o),l=s.begin,u=s.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,d=null,f=0;f=u||p.to<=l)){var h=jn(e,r,1!=p.level?Math.min(u,p.to)-1:Math.max(l,p.from)).right,m=hm)&&(c=p,d=m)}}return c||(c=i[i.length-1]),c.fromu&&(c={from:c.from,to:u,level:c.level}),c}function ir(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==An){An=E("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)An.appendChild(document.createTextNode("x")),An.appendChild(E("br"));An.appendChild(document.createTextNode("x"))}D(e.measure,An);var n=An.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),S(e.measure),n||1}function ar(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=E("span","xxxxxxxxxx"),n=E("pre",[t],"CodeMirror-line-like");D(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function or(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,a=t.gutters.firstChild,o=0;a;a=a.nextSibling,++o){var s=e.display.gutterSpecs[o].className;n[s]=a.offsetLeft+a.clientLeft+i,r[s]=a.clientWidth}return{fixedPos:sr(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function sr(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function lr(e){var t=ir(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/ar(e.display)-3);return function(i){if(zt(e.doc,i))return 0;var a=0;if(i.widgets)for(var o=0;o=e.display.viewTo)return null;if((t-=e.display.viewFrom)<0)return null;for(var n=e.display.view,r=0;rt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)kt&&It(e.doc,t)i.viewFrom?hr(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)hr(e);else if(t<=i.viewFrom){var a=mr(e,n,n+r,1);a?(i.view=i.view.slice(a.index),i.viewFrom=a.lineN,i.viewTo+=r):hr(e)}else if(n>=i.viewTo){var o=mr(e,t,t,-1);o?(i.view=i.view.slice(0,o.index),i.viewTo=o.lineN):hr(e)}else{var s=mr(e,t,t,-1),l=mr(e,n,n+r,1);s&&l?(i.view=i.view.slice(0,s.index).concat(on(e,s.lineN,l.lineN)).concat(i.view.slice(l.index)),i.viewTo+=r):hr(e)}var u=i.externalMeasured;u&&(n=i.lineN&&t=r.viewTo)){var a=r.view[dr(e,t)];if(null!=a.node){var o=a.changes||(a.changes=[]);-1==I(o,n)&&o.push(n)}}}function hr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function mr(e,t,n,r){var i,a=dr(e,t),o=e.display.view;if(!kt||n==e.doc.first+e.doc.size)return{index:a,lineN:n};for(var s=e.display.viewFrom,l=0;l0){if(a==o.length-1)return null;i=s+o[a].size-t,a++}else i=s-t;t+=i,n+=i}for(;It(e.doc,n)!=n;){if(a==(r<0?0:o.length-1))return null;n+=r*o[a-(r<0?1:0)].size,a+=r}return{index:a,lineN:n}}function _r(e){for(var t=e.display.view,n=0,r=0;r=e.display.viewTo||s.to().linet||t==n&&o.to==t)&&(r(Math.max(o.from,t),Math.min(o.to,n),1==o.level?"rtl":"ltr",a),i=!0)}i||r(t,n,"ltr")}(m,n||0,null==r?f:r,function(e,t,i,d){var _="ltr"==i,g=p(e,_?"left":"right"),y=p(t-1,_?"right":"left"),v=null==n&&0==e,b=null==r&&t==f,w=0==d,M=!m||d==m.length-1;if(y.top-g.top<=3){var k=(u?b:v)&&M,L=(u?v:b)&&w?s:(_?g:y).left,x=k?l:(_?y:g).right;c(L,g.top,x-L,g.bottom)}else{var T,S,D,E;_?(T=u&&v&&w?s:g.left,S=u?l:h(e,i,"before"),D=u?s:h(t,i,"after"),E=u&&b&&M?l:y.right):(T=u?h(e,i,"before"):s,S=!u&&v&&w?l:g.right,D=!u&&b&&M?s:y.left,E=u?h(t,i,"after"):l),c(T,g.top,S-T,g.bottom),g.bottom0?t.blinker=setInterval(function(){return t.cursorDiv.style.visibility=(n=!n)?"":"hidden"},e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function kr(e){e.state.focused||(e.display.input.focus(),xr(e))}function Lr(e){e.state.delayingBlurEvent=!0,setTimeout(function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,Tr(e))},100)}function xr(e,t){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(me(e,"focus",e,t),e.state.focused=!0,P(e.display.wrapper,"CodeMirror-focused"),e.curOp||e.display.selForContextMenu==e.doc.sel||(e.display.input.reset(),l&&setTimeout(function(){return e.display.input.reset(!0)},20)),e.display.input.receivedFocus()),Mr(e))}function Tr(e,t){e.state.delayingBlurEvent||(e.state.focused&&(me(e,"blur",e,t),e.state.focused=!1,T(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout(function(){e.state.focused||(e.display.shift=!1)},150))}function Sr(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=0;r.005||f<-.005)&&(Ke(i.line,l),Dr(i.line),i.rest))for(var p=0;pe.display.sizerWidth){var h=Math.ceil(u/ar(e.display));h>e.display.maxLineLength&&(e.display.maxLineLength=h,e.display.maxLine=i.line,e.display.maxLineChanged=!0)}}}}function Dr(e){if(e.widgets)for(var t=0;t=o&&(a=Qe(t,Bt(Ge(t,l))-e.wrapper.clientHeight),o=l)}return{from:a,to:Math.max(o,a+1)}}function Yr(e,t){var n=e.display,r=ir(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:n.scroller.scrollTop,a=En(e),o={};t.bottom-t.top>a&&(t.bottom=t.top+a);var s=e.doc.height+xn(n),l=t.tops-r;if(t.topi+a){var c=Math.min(t.top,(u?s:t.bottom)-a);c!=i&&(o.scrollTop=c)}var d=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft,f=Dn(e)-(e.options.fixedGutter?n.gutters.offsetWidth:0),p=t.right-t.left>f;return p&&(t.right=t.left+f),t.left<10?o.scrollLeft=0:t.leftf+d-3&&(o.scrollLeft=t.right+(p?0:10)-f),o}function Cr(e,t){null!=t&&(jr(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function Or(e){jr(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function Pr(e,t,n){null==t&&null==n||jr(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function jr(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,Ar(e,Jn(e,t.from),Jn(e,t.to),t.margin))}function Ar(e,t,n,r){var i=Yr(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});Pr(e,i.scrollLeft,i.scrollTop)}function Hr(e,t){Math.abs(e.doc.scrollTop-t)<2||(n||li(e,{top:t}),Fr(e,t,!0),n&&li(e),ri(e,100))}function Fr(e,t,n){t=Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t),(e.display.scroller.scrollTop!=t||n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function Nr(e,t,n,r){t=Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth),(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)&&!r||(e.doc.scrollLeft=t,di(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function Rr(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+xn(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+Sn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}var Ir=function(e,t,n){this.cm=n;var r=this.vert=E("div",[E("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=E("div",[E("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=i.tabIndex=-1,e(r),e(i),fe(r,"scroll",function(){r.clientHeight&&t(r.scrollTop,"vertical")}),fe(i,"scroll",function(){i.clientWidth&&t(i.scrollLeft,"horizontal")}),this.checkedZeroWidth=!1,o&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")};Ir.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var i=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var a=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+a)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},Ir.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},Ir.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},Ir.prototype.zeroWidthHack=function(){var e=y&&!p?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new R,this.disableVert=new R},Ir.prototype.enableZeroWidthBar=function(e,t,n){e.style.pointerEvents="auto",t.set(1e3,function r(){var i=e.getBoundingClientRect();("vert"==n?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,r)})},Ir.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var Wr=function(){};function zr(e,t){t||(t=Rr(e));var n=e.display.barWidth,r=e.display.barHeight;Ur(e,t);for(var i=0;i<4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&Sr(e),Ur(e,Rr(e)),n=e.display.barWidth,r=e.display.barHeight}function Ur(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}Wr.prototype.update=function(){return{bottom:0,right:0}},Wr.prototype.setScrollLeft=function(){},Wr.prototype.setScrollTop=function(){},Wr.prototype.clear=function(){};var Br={native:Ir,null:Wr};function Vr(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&T(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new Br[e.options.scrollbarStyle](function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),fe(t,"mousedown",function(){e.state.focused&&setTimeout(function(){return e.display.input.focus()},0)}),t.setAttribute("cm-not-content","true")},function(t,n){"horizontal"==n?Nr(e,t):Hr(e,t)},e),e.display.scrollbars.addClass&&P(e.display.wrapper,e.display.scrollbars.addClass)}var qr=0;function Gr(e){var t;e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++qr},t=e.curOp,sn?sn.ops.push(t):t.ownsGroup=sn={ops:[t],delayedCallbacks:[]}}function $r(e){var t=e.curOp;t&&function(e,t){var n=e.ownsGroup;if(n)try{!function(e){var t=e.delayedCallbacks,n=0;do{for(;n=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new ai(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Kr(e){var t=e.cm,n=t.display;e.updatedDisplay&&Sr(t),e.barMeasure=Rr(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Cn(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+Sn(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-Dn(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function Xr(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!h){var a=E("div","​",null,"position: absolute;\n top: "+(t.top-n.viewOffset-Ln(e.display))+"px;\n height: "+(t.bottom-t.top+Sn(e)+n.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(a),a.scrollIntoView(i),e.display.lineSpace.removeChild(a)}}}(t,function(e,t,n,r){var i;null==r&&(r=0),e.options.lineWrapping||t!=n||(n="before"==(t=t.ch?tt(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t).sticky?tt(t.line,t.ch+1,"before"):t);for(var a=0;a<5;a++){var o=!1,s=$n(e,t),l=n&&n!=t?$n(e,n):s,u=Yr(e,i={left:Math.min(s.left,l.left),top:Math.min(s.top,l.top)-r,right:Math.max(s.left,l.left),bottom:Math.max(s.bottom,l.bottom)+r}),c=e.doc.scrollTop,d=e.doc.scrollLeft;if(null!=u.scrollTop&&(Hr(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(o=!0)),null!=u.scrollLeft&&(Nr(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-d)>1&&(o=!0)),!o)break}return i}(t,lt(r,e.scrollToPos.from),lt(r,e.scrollToPos.to),e.scrollToPos.margin));var i=e.maybeHiddenMarkers,a=e.maybeUnhiddenMarkers;if(i)for(var o=0;o=e.display.viewTo)){var n=+new Date+e.options.workTime,r=ht(e,t.highlightFrontier),i=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),function(a){if(r.line>=e.display.viewFrom){var o=a.styles,s=a.text.length>e.options.maxHighlightLength?Ue(t.mode,r.state):null,l=ft(e,a,r,!0);s&&(r.state=s),a.styles=l.styles;var u=a.styleClasses,c=l.classes;c?a.styleClasses=c:u&&(a.styleClasses=null);for(var d=!o||o.length!=a.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),f=0;!d&&fn)return ri(e,e.options.workDelay),!0}),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),i.length&&Zr(e,function(){for(var t=0;t=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==_r(e))return!1;fi(e)&&(hr(e),t.dims=or(e));var i=r.first+r.size,a=Math.max(t.visible.from-e.options.viewportMargin,r.first),o=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFromo&&n.viewTo-o<20&&(o=Math.min(i,n.viewTo)),kt&&(a=It(e.doc,a),o=Wt(e.doc,o));var s=a!=n.viewFrom||o!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;!function(e,t,n){var r=e.display;0==r.view.length||t>=r.viewTo||n<=r.viewFrom?(r.view=on(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=on(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,dr(e,n)))),r.viewTo=n}(e,a,o),n.viewOffset=Bt(Ge(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var u=_r(e);if(!s&&0==u&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var c=function(e){if(e.hasFocus())return null;var t=O();if(!t||!C(e.display.lineDiv,t))return null;var n={activeElt:t};if(window.getSelection){var r=window.getSelection();r.anchorNode&&r.extend&&C(e.display.lineDiv,r.anchorNode)&&(n.anchorNode=r.anchorNode,n.anchorOffset=r.anchorOffset,n.focusNode=r.focusNode,n.focusOffset=r.focusOffset)}return n}(e);return u>4&&(n.lineDiv.style.display="none"),function(e,t,n){var r=e.display,i=e.options.lineNumbers,a=r.lineDiv,o=a.firstChild;function s(t){var n=t.nextSibling;return l&&y&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}for(var u=r.view,c=r.viewFrom,d=0;d-1&&(p=!1),dn(e,f,c,n)),p&&(S(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(et(e.options,c)))),o=f.node.nextSibling}else{var h=yn(e,f,c,n);a.insertBefore(h,o)}c+=f.size}for(;o;)o=s(o)}(e,n.updateLineNumbers,t.dims),u>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,function(e){if(e&&e.activeElt&&e.activeElt!=O()&&(e.activeElt.focus(),e.anchorNode&&C(document.body,e.anchorNode)&&C(document.body,e.focusNode))){var t=window.getSelection(),n=document.createRange();n.setEnd(e.anchorNode,e.anchorOffset),n.collapse(!1),t.removeAllRanges(),t.addRange(n),t.extend(e.focusNode,e.focusOffset)}}(c),S(n.cursorDiv),S(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,s&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,ri(e,400)),n.updateLineNumbers=null,!0}function si(e,t){for(var n=t.viewport,r=!0;(r&&e.options.lineWrapping&&t.oldDisplayWidth!=Dn(e)||(n&&null!=n.top&&(n={top:Math.min(e.doc.height+xn(e.display)-En(e),n.top)}),t.visible=Er(e.display,e.doc,n),!(t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)))&&oi(e,t);r=!1){Sr(e);var i=Rr(e);gr(e),zr(e,i),ci(e,i),t.force=!1}t.signal(e,"update",e),e.display.viewFrom==e.display.reportedViewFrom&&e.display.viewTo==e.display.reportedViewTo||(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function li(e,t){var n=new ai(e,t);if(oi(e,n)){Sr(e),si(e,n);var r=Rr(e);gr(e),zr(e,r),ci(e,r),n.finish()}}function ui(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px"}function ci(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Sn(e)+"px"}function di(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=sr(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,a=r+"px",o=0;os.clientWidth,c=s.scrollHeight>s.clientHeight;if(i&&u||a&&c){if(a&&y&&l)e:for(var f=t.target,p=o.view;f!=s;f=f.parentNode)for(var h=0;h=0&&nt(e,r.to())<=0)return n}return-1};var ki=function(e,t){this.anchor=e,this.head=t};function Li(e,t,n){var r=e&&e.options.selectionsMayTouch,i=t[n];t.sort(function(e,t){return nt(e.from(),t.from())}),n=I(t,i);for(var a=1;a0:l>=0){var u=ot(s.from(),o.from()),c=at(s.to(),o.to()),d=s.empty()?o.from()==o.head:s.from()==s.head;a<=n&&--n,t.splice(--a,2,new ki(d?c:u,d?u:c))}}return new Mi(t,n)}function xi(e,t){return new Mi([new ki(e,t||e)],0)}function Ti(e){return e.text?tt(e.from.line+e.text.length-1,J(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function Si(e,t){if(nt(e,t.from)<0)return e;if(nt(e,t.to)<=0)return Ti(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=Ti(t).ch-t.to.ch),tt(n,r)}function Di(e,t){for(var n=[],r=0;r1&&e.remove(s.line+1,h-1),e.insert(s.line+1,g)}un(e,"change",e,t)}function ji(e,t,n){!function e(r,i,a){if(r.linked)for(var o=0;os-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(a=function(e,t){return t?(Ri(e.done),J(e.done)):e.done.length&&!J(e.done).ranges?J(e.done):e.done.length>1&&!e.done[e.done.length-2].ranges?(e.done.pop(),J(e.done)):void 0}(i,i.lastOp==r)))o=J(a.changes),0==nt(t.from,t.to)&&0==nt(t.from,o.to)?o.to=Ti(t):a.changes.push(Ni(e,t));else{var l=J(i.done);for(l&&l.ranges||zi(e.sel,i.done),a={changes:[Ni(e,t)],generation:i.generation},i.done.push(a);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=s,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,o||me(e,"historyAdded")}function Wi(e,t,n,r){var i=e.history,a=r&&r.origin;n==i.lastSelOp||a&&i.lastSelOrigin==a&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==a||function(e,t,n,r){var i=t.charAt(0);return"*"==i||"+"==i&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}(e,a,J(i.done),t))?i.done[i.done.length-1]=t:zi(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=a,i.lastSelOp=n,r&&!1!==r.clearRedo&&Ri(i.undone)}function zi(e,t){var n=J(t);n&&n.ranges&&n.equals(e)||t.push(e)}function Ui(e,t,n,r){var i=t["spans_"+e.id],a=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),function(n){n.markedSpans&&((i||(i=t["spans_"+e.id]={}))[a]=n.markedSpans),++a})}function Bi(e){if(!e)return null;for(var t,n=0;n-1&&(J(s)[d]=u[d],delete u[d])}}}return r}function Gi(e,t,n,r){if(r){var i=e.anchor;if(n){var a=nt(t,i)<0;a!=nt(n,i)<0?(i=t,t=n):a!=nt(t,n)<0&&(t=n)}return new ki(i,t)}return new ki(n||t,t)}function $i(e,t,n,r,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),Zi(e,new Mi([Gi(e.sel.primary(),t,n,i)],0),r)}function Ji(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),a=0;a=t.ch:s.to>t.ch))){if(i&&(me(l,"beforeCursorEnter"),l.explicitlyCleared)){if(a.markedSpans){--o;continue}break}if(!l.atomic)continue;if(n){var d=l.find(r<0?1:-1),f=void 0;if((r<0?c:u)&&(d=oa(e,d,-r,d&&d.line==t.line?a:null)),d&&d.line==t.line&&(f=nt(d,n))&&(r<0?f<0:f>0))return ia(e,d,t,r,i)}var p=l.find(r<0?-1:1);return(r<0?u:c)&&(p=oa(e,p,r,p.line==t.line?a:null)),p?ia(e,p,t,r,i):null}}return t}function aa(e,t,n,r,i){var a=r||1,o=ia(e,t,n,a,i)||!i&&ia(e,t,n,a,!0)||ia(e,t,n,-a,i)||!i&&ia(e,t,n,-a,!0);return o||(e.cantEdit=!0,tt(e.first,0))}function oa(e,t,n,r){return n<0&&0==t.ch?t.line>e.first?lt(e,tt(t.line-1)):null:n>0&&t.ch==(r||Ge(e,t.line)).text.length?t.line0)){var c=[l,1],d=nt(u.from,s.from),f=nt(u.to,s.to);(d<0||!o.inclusiveLeft&&!d)&&c.push({from:u.from,to:s.from}),(f>0||!o.inclusiveRight&&!f)&&c.push({from:s.to,to:u.to}),i.splice.apply(i,c),l+=c.length-3}}return i}(e,t.from,t.to);if(r)for(var i=r.length-1;i>=0;--i)ca(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text,origin:t.origin});else ca(e,t)}}function ca(e,t){if(1!=t.text.length||""!=t.text[0]||0!=nt(t.from,t.to)){var n=Di(e,t);Ii(e,t,n,e.cm?e.cm.curOp.id:NaN),pa(e,t,n,St(e,t));var r=[];ji(e,function(e,n){n||-1!=I(r,e.history)||(ga(e.history,t),r.push(e.history)),pa(e,t,null,St(e,t))})}}function da(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!r||n){for(var i,a=e.history,o=e.sel,s="undo"==t?a.done:a.undone,l="undo"==t?a.undone:a.done,u=0;u=0;--p){var h=f(p);if(h)return h.v}}}}function fa(e,t){if(0!=t&&(e.first+=t,e.sel=new Mi(K(e.sel.ranges,function(e){return new ki(tt(e.anchor.line+t,e.anchor.ch),tt(e.head.line+t,e.head.ch))}),e.sel.primIndex),e.cm)){fr(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.linea&&(t={from:t.from,to:tt(a,Ge(e,a).text.length),text:[t.text[0]],origin:t.origin}),t.removed=$e(e,t.from,t.to),n||(n=Di(e,t)),e.cm?function(e,t,n){var r=e.doc,i=e.display,a=t.from,o=t.to,s=!1,l=a.line;e.options.lineWrapping||(l=Xe(Rt(Ge(r,a.line))),r.iter(l,o.line+1,function(e){if(e==i.maxLine)return s=!0,!0})),r.sel.contains(t.from,t.to)>-1&&ge(e),Pi(r,t,n,lr(e)),e.options.lineWrapping||(r.iter(l,a.line+t.text.length,function(e){var t=Vt(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,s=!1)}),s&&(e.curOp.updateMaxLine=!0)),function(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontiern;r--){var i=Ge(e,r).stateAfter;if(i&&(!(i instanceof ct)||r+i.lookAhead1||!(this.children[0]instanceof va))){var s=[];this.collapse(s),this.children=[new va(s)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var o=i.lines.length%25+25,s=o;s10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r0||0==o&&!1!==a.clearWhenEmpty)return a;if(a.replacedWith&&(a.collapsed=!0,a.widgetNode=Y("span",[a.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||a.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(a.widgetNode.insertLeft=!0)),a.collapsed){if(Nt(e,t.line,t,n,a)||t.line!=n.line&&Nt(e,n.line,t,n,a))throw new Error("Inserting collapsed marker partially overlapping an existing one");kt=!0}a.addToHistory&&Ii(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var s,l=t.line,u=e.cm;if(e.iter(l,n.line+1,function(e){u&&a.collapsed&&!u.options.lineWrapping&&Rt(e)==u.display.maxLine&&(s=!0),a.collapsed&&l!=t.line&&Ke(e,0),function(e,t){e.markedSpans=e.markedSpans?e.markedSpans.concat([t]):[t],t.marker.attachLine(e)}(e,new Lt(a,l==t.line?t.ch:null,l==n.line?n.ch:null)),++l}),a.collapsed&&e.iter(t.line,n.line+1,function(t){zt(e,t)&&Ke(t,0)}),a.clearOnEnter&&fe(a,"beforeCursorEnter",function(){return a.clear()}),a.readOnly&&(Mt=!0,(e.history.done.length||e.history.undone.length)&&e.clearHistory()),a.collapsed&&(a.id=++ka,a.atomic=!0),u){if(s&&(u.curOp.updateMaxLine=!0),a.collapsed)fr(u,t.line,n.line+1);else if(a.className||a.startStyle||a.endStyle||a.css||a.attributes||a.title)for(var c=t.line;c<=n.line;c++)pr(u,c,"text");a.atomic&&na(u.doc),un(u,"markerAdded",u,a)}return a}La.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Gr(e),ye(this,"clear")){var n=this.find();n&&un(this,"clear",n.from,n.to)}for(var r=null,i=null,a=0;ae.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=c,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&fr(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&na(e.doc)),e&&un(e,"markerCleared",e,this,r,i),t&&$r(e),this.parent&&this.parent.clear()}},La.prototype.find=function(e,t){var n,r;null==e&&"bookmark"==this.type&&(e=1);for(var i=0;i=0;l--)ua(this,r[l]);s?Qi(this,s):this.cm&&Or(this.cm)}),undo:ni(function(){da(this,"undo")}),redo:ni(function(){da(this,"redo")}),undoSelection:ni(function(){da(this,"undo",!0)}),redoSelection:ni(function(){da(this,"redo",!0)}),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=lt(this,e),t=lt(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,function(a){var o=a.markedSpans;if(o)for(var s=0;s=l.to||null==l.from&&i!=e.line||null!=l.from&&i==t.line&&l.from>=t.ch||n&&!n(l.marker)||r.push(l.marker.parent||l.marker)}++i}),r},getAllMarks:function(){var e=[];return this.iter(function(t){var n=t.markedSpans;if(n)for(var r=0;re)return t=e,!0;e-=a,++n}),lt(this,tt(n,t))},indexFromPos:function(e){var t=(e=lt(this,e)).ch;if(e.linet&&(t=e.from),null!=e.to&&e.to-1)return t.state.draggingText(e),void setTimeout(function(){return t.display.input.focus()},20);try{var c=e.dataTransfer.getData("Text");if(c){var d;if(t.state.draggingText&&!t.state.draggingText.copy&&(d=t.listSelections()),ea(t.doc,xi(n,n)),d)for(var f=0;f=0;t--)ha(e.doc,"",r[t].from,r[t].to,"+delete");Or(e)})}function Xa(e,t,n){var r=ae(e.text,t+n,n);return r<0||r>e.text.length?null:r}function Qa(e,t,n){var r=Xa(e,t.ch,n);return null==r?null:new tt(t.line,r,n<0?"after":"before")}function Za(e,t,n,r,i){if(e){var a=ce(n,t.doc.direction);if(a){var o,s=i<0?J(a):a[0],l=i<0==(1==s.level)?"after":"before";if(s.level>0||"rtl"==t.doc.direction){var u=Pn(t,n);o=i<0?n.text.length-1:0;var c=jn(t,u,o).top;o=oe(function(e){return jn(t,u,e).top==c},i<0==(1==s.level)?s.from:s.to-1,o),"before"==l&&(o=Xa(n,o,1))}else o=i<0?s.to:s.from;return new tt(r,o,l)}}return new tt(r,i<0?n.text.length:0,i<0?"before":"after")}za.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},za.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},za.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},za.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},za.default=y?za.macDefault:za.pcDefault;var eo={selectAll:sa,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),U)},killLine:function(e){return Ka(e,function(t){if(t.empty()){var n=Ge(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line0)i=new tt(i.line,i.ch+1),e.replaceRange(a.charAt(i.ch-1)+a.charAt(i.ch-2),tt(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var o=Ge(e.doc,i.line-1).text;o&&(i=new tt(i.line,1),e.replaceRange(a.charAt(0)+e.doc.lineSeparator()+o.charAt(o.length-1),tt(i.line-1,o.length-1),i,"+transpose"))}n.push(new ki(i,i))}e.setSelections(n)})},newlineAndIndent:function(e){return Zr(e,function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,"+input");t=e.listSelections();for(var r=0;r-1&&(nt((i=u.ranges[i]).from(),t)<0||t.xRel>0)&&(nt(i.to(),t)>0||t.xRel<0)?function(e,t,n,r){var i=e.display,a=!1,u=ei(e,function(t){l&&(i.scroller.draggable=!1),e.state.draggingText=!1,he(i.wrapper.ownerDocument,"mouseup",u),he(i.wrapper.ownerDocument,"mousemove",c),he(i.scroller,"dragstart",d),he(i.scroller,"drop",u),a||(be(t),r.addNew||$i(e.doc,n,null,null,r.extend),l||o&&9==s?setTimeout(function(){i.wrapper.ownerDocument.body.focus(),i.input.focus()},20):i.input.focus())}),c=function(e){a=a||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10},d=function(){return a=!0};l&&(i.scroller.draggable=!0),e.state.draggingText=u,u.copy=!r.moveOnDrag,i.scroller.dragDrop&&i.scroller.dragDrop(),fe(i.wrapper.ownerDocument,"mouseup",u),fe(i.wrapper.ownerDocument,"mousemove",c),fe(i.scroller,"dragstart",d),fe(i.scroller,"drop",u),Lr(e),setTimeout(function(){return i.input.focus()},20)}(e,r,t,a):function(e,t,n,r){var i=e.display,a=e.doc;be(t);var o,s,l=a.sel,u=l.ranges;if(r.addNew&&!r.extend?(s=a.sel.contains(n),o=s>-1?u[s]:new ki(n,n)):(o=a.sel.primary(),s=a.sel.primIndex),"rectangle"==r.unit)r.addNew||(o=new ki(n,n)),n=cr(e,t,!0,!0),s=-1;else{var c=go(e,n,r.unit);o=r.extend?Gi(o,c.anchor,c.head,r.extend):c}r.addNew?-1==s?(s=u.length,Zi(a,Li(e,u.concat([o]),s),{scroll:!1,origin:"*mouse"})):u.length>1&&u[s].empty()&&"char"==r.unit&&!r.extend?(Zi(a,Li(e,u.slice(0,s).concat(u.slice(s+1)),0),{scroll:!1,origin:"*mouse"}),l=a.sel):Ki(a,s,o,B):(s=0,Zi(a,new Mi([o],0),B),l=a.sel);var d=n;function f(t){if(0!=nt(d,t))if(d=t,"rectangle"==r.unit){for(var i=[],u=e.options.tabSize,c=N(Ge(a,n.line).text,n.ch,u),f=N(Ge(a,t.line).text,t.ch,u),p=Math.min(c,f),h=Math.max(c,f),m=Math.min(n.line,t.line),_=Math.min(e.lastLine(),Math.max(n.line,t.line));m<=_;m++){var g=Ge(a,m).text,y=q(g,p,u);p==h?i.push(new ki(tt(m,y),tt(m,y))):g.length>y&&i.push(new ki(tt(m,y),tt(m,q(g,h,u))))}i.length||i.push(new ki(n,n)),Zi(a,Li(e,l.ranges.slice(0,s).concat(i),s),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var v,b=o,w=go(e,t,r.unit),M=b.anchor;nt(w.anchor,M)>0?(v=w.head,M=ot(b.from(),w.anchor)):(v=w.anchor,M=at(b.to(),w.head));var k=l.ranges.slice(0);k[s]=function(e,t){var n=t.anchor,r=t.head,i=Ge(e.doc,n.line);if(0==nt(n,r)&&n.sticky==r.sticky)return t;var a=ce(i);if(!a)return t;var o=le(a,n.ch,n.sticky),s=a[o];if(s.from!=n.ch&&s.to!=n.ch)return t;var l,u=o+(s.from==n.ch==(1!=s.level)?0:1);if(0==u||u==a.length)return t;if(r.line!=n.line)l=(r.line-n.line)*("ltr"==e.doc.direction?1:-1)>0;else{var c=le(a,r.ch,r.sticky),d=c-o||(r.ch-n.ch)*(1==s.level?-1:1);l=c==u-1||c==u?d<0:d>0}var f=a[u+(l?-1:0)],p=l==(1==f.level),h=p?f.from:f.to,m=p?"after":"before";return n.ch==h&&n.sticky==m?t:new ki(new tt(n.line,h,m),r)}(e,new ki(lt(a,M),v)),Zi(a,Li(e,k,s),B)}}var p=i.wrapper.getBoundingClientRect(),h=0;function m(t){e.state.selectingText=!1,h=1/0,t&&(be(t),i.input.focus()),he(i.wrapper.ownerDocument,"mousemove",_),he(i.wrapper.ownerDocument,"mouseup",g),a.history.lastSelOrigin=null}var _=ei(e,function(t){0!==t.buttons&&xe(t)?function t(n){var o=++h,s=cr(e,n,!0,"rectangle"==r.unit);if(s)if(0!=nt(s,d)){e.curOp.focus=O(),f(s);var l=Er(i,a);(s.line>=l.to||s.linep.bottom?20:0;u&&setTimeout(ei(e,function(){h==o&&(i.scroller.scrollTop+=u,t(n))}),50)}}(t):m(t)}),g=ei(e,m);e.state.selectingText=g,fe(i.wrapper.ownerDocument,"mousemove",_),fe(i.wrapper.ownerDocument,"mouseup",g)}(e,r,t,a)}(t,r,a,e):Le(e)==n.scroller&&be(e):2==i?(r&&$i(t.doc,r),setTimeout(function(){return n.input.focus()},20)):3==i&&(k?t.display.input.onContextMenu(e):Lr(t)))}}function go(e,t,n){if("char"==n)return new ki(t,t);if("word"==n)return e.findWordAt(t);if("line"==n)return new ki(tt(t.line,0),lt(e.doc,tt(t.line+1,0)));var r=n(e,t);return new ki(r.from,r.to)}function yo(e,t,n,r){var i,a;if(t.touches)i=t.touches[0].clientX,a=t.touches[0].clientY;else try{i=t.clientX,a=t.clientY}catch(t){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&be(t);var o=e.display,s=o.lineDiv.getBoundingClientRect();if(a>s.bottom||!ye(e,n))return Me(t);a-=s.top-o.viewOffset;for(var l=0;l=i)return me(e,n,e,Qe(e.doc,a),e.display.gutterSpecs[l].className,t),Me(t)}}function vo(e,t){return yo(e,t,"gutterClick",!0)}function bo(e,t){kn(e.display,t)||function(e,t){return!!ye(e,"gutterContextMenu")&&yo(e,t,"gutterContextMenu",!1)}(e,t)||_e(e,t,"contextmenu")||k||e.display.input.onContextMenu(t)}function wo(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),Wn(e)}mo.prototype.compare=function(e,t,n){return this.time+400>e&&0==nt(t,this.pos)&&n==this.button};var Mo={toString:function(){return"CodeMirror.Init"}},ko={},Lo={};function xo(e,t,n){if(!t!=!(n&&n!=Mo)){var r=e.display.dragFunctions,i=t?fe:he;i(e.display.scroller,"dragstart",r.start),i(e.display.scroller,"dragenter",r.enter),i(e.display.scroller,"dragover",r.over),i(e.display.scroller,"dragleave",r.leave),i(e.display.scroller,"drop",r.drop)}}function To(e){e.options.lineWrapping?(P(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(T(e.display.wrapper,"CodeMirror-wrap"),qt(e)),ur(e),fr(e),Wn(e),setTimeout(function(){return zr(e)},100)}function So(e,t){var n=this;if(!(this instanceof So))return new So(e,t);this.options=t=t?F(t):{},F(ko,t,!1);var r=t.value;"string"==typeof r?r=new Ya(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var i=new So.inputStyles[t.inputStyle](this),a=this.display=new _i(e,r,i,t);for(var u in a.wrapper.CodeMirror=this,wo(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),Vr(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new R,keySeq:null,specialChars:null},t.autofocus&&!g&&a.input.focus(),o&&s<11&&setTimeout(function(){return n.display.input.reset(!0)},20),function(e){var t=e.display;fe(t.scroller,"mousedown",ei(e,_o)),fe(t.scroller,"dblclick",o&&s<11?ei(e,function(t){if(!_e(e,t)){var n=cr(e,t);if(n&&!vo(e,t)&&!kn(e.display,t)){be(t);var r=e.findWordAt(n);$i(e.doc,r.anchor,r.head)}}}):function(t){return _e(e,t)||be(t)}),fe(t.scroller,"contextmenu",function(t){return bo(e,t)});var n,r={end:0};function i(){t.activeTouch&&(n=setTimeout(function(){return t.activeTouch=null},1e3),(r=t.activeTouch).end=+new Date)}function a(e,t){if(null==t.left)return!0;var n=t.left-e.left,r=t.top-e.top;return n*n+r*r>400}fe(t.scroller,"touchstart",function(i){if(!_e(e,i)&&!function(e){if(1!=e.touches.length)return!1;var t=e.touches[0];return t.radiusX<=1&&t.radiusY<=1}(i)&&!vo(e,i)){t.input.ensurePolled(),clearTimeout(n);var a=+new Date;t.activeTouch={start:a,moved:!1,prev:a-r.end<=300?r:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}}),fe(t.scroller,"touchmove",function(){t.activeTouch&&(t.activeTouch.moved=!0)}),fe(t.scroller,"touchend",function(n){var r=t.activeTouch;if(r&&!kn(t,n)&&null!=r.left&&!r.moved&&new Date-r.start<300){var o,s=e.coordsChar(t.activeTouch,"page");o=!r.prev||a(r,r.prev)?new ki(s,s):!r.prev.prev||a(r,r.prev.prev)?e.findWordAt(s):new ki(tt(s.line,0),lt(e.doc,tt(s.line+1,0))),e.setSelection(o.anchor,o.head),e.focus(),be(n)}i()}),fe(t.scroller,"touchcancel",i),fe(t.scroller,"scroll",function(){t.scroller.clientHeight&&(Hr(e,t.scroller.scrollTop),Nr(e,t.scroller.scrollLeft,!0),me(e,"scroll",e))}),fe(t.scroller,"mousewheel",function(t){return wi(e,t)}),fe(t.scroller,"DOMMouseScroll",function(t){return wi(e,t)}),fe(t.wrapper,"scroll",function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0}),t.dragFunctions={enter:function(t){_e(e,t)||ke(t)},over:function(t){_e(e,t)||(function(e,t){var n=cr(e,t);if(n){var r=document.createDocumentFragment();vr(e,n,r),e.display.dragCursor||(e.display.dragCursor=E("div",null,"CodeMirror-cursors CodeMirror-dragcursors"),e.display.lineSpace.insertBefore(e.display.dragCursor,e.display.cursorDiv)),D(e.display.dragCursor,r)}}(e,t),ke(t))},start:function(t){return function(e,t){if(o&&(!e.state.draggingText||+new Date-Ca<100))ke(t);else if(!_e(e,t)&&!kn(e.display,t)&&(t.dataTransfer.setData("Text",e.getSelection()),t.dataTransfer.effectAllowed="copyMove",t.dataTransfer.setDragImage&&!f)){var n=E("img",null,null,"position: fixed; left: 0; top: 0;");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",d&&(n.width=n.height=1,e.display.wrapper.appendChild(n),n._top=n.offsetTop),t.dataTransfer.setDragImage(n,0,0),d&&n.parentNode.removeChild(n)}}(e,t)},drop:ei(e,Oa),leave:function(t){_e(e,t)||Pa(e)}};var l=t.input.getField();fe(l,"keyup",function(t){return co.call(e,t)}),fe(l,"keydown",ei(e,uo)),fe(l,"keypress",ei(e,fo)),fe(l,"focus",function(t){return xr(e,t)}),fe(l,"blur",function(t){return Tr(e,t)})}(this),Ha(),Gr(this),this.curOp.forceUpdate=!0,Ai(this,r),t.autofocus&&!g||this.hasFocus()?setTimeout(H(xr,this),20):Tr(this),Lo)Lo.hasOwnProperty(u)&&Lo[u](n,t[u],Mo);fi(this),t.finishInit&&t.finishInit(this);for(var c=0;c150)){if(!r)return;n="prev"}}else u=0,n="not";"prev"==n?u=t>a.first?N(Ge(a,t-1).text,null,o):0:"add"==n?u=l+e.options.indentUnit:"subtract"==n?u=l-e.options.indentUnit:"number"==typeof n&&(u=l+n),u=Math.max(0,u);var d="",f=0;if(e.options.indentWithTabs)for(var p=Math.floor(u/o);p;--p)f+=o,d+="\t";if(fo,l=Oe(t),u=null;if(s&&r.ranges.length>1)if(Yo&&Yo.text.join("\n")==t){if(r.ranges.length%Yo.text.length==0){u=[];for(var c=0;c=0;f--){var p=r.ranges[f],h=p.from(),m=p.to();p.empty()&&(n&&n>0?h=tt(h.line,h.ch-n):e.state.overwrite&&!s?m=tt(m.line,Math.min(Ge(a,m.line).text.length,m.ch+J(l).length)):s&&Yo&&Yo.lineWise&&Yo.text.join("\n")==t&&(h=m=tt(h.line,0)));var _={from:h,to:m,text:u?u[f%u.length]:l,origin:i||(s?"paste":e.state.cutIncoming>o?"cut":"+input")};ua(e.doc,_),un(e,"inputRead",e,_)}t&&!s&&jo(e,t),Or(e),e.curOp.updateInput<2&&(e.curOp.updateInput=d),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Po(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");if(n)return e.preventDefault(),t.isReadOnly()||t.options.disableInput||Zr(t,function(){return Oo(t,n,0,null,"paste")}),!0}function jo(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var a=e.getModeAt(i.head),o=!1;if(a.electricChars){for(var s=0;s-1){o=Eo(e,i.head.line,"smart");break}}else a.electricInput&&a.electricInput.test(Ge(e.doc,i.head.line).text.slice(0,i.head.ch))&&(o=Eo(e,i.head.line,"smart"));o&&un(e,"electricInput",e,i.head.line)}}}function Ao(e){for(var t=[],n=[],r=0;r=t.text.length?(n.ch=t.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var a=le(i,n.ch,n.sticky),o=i[a];if("ltr"==e.doc.direction&&o.level%2==0&&(r>0?o.to>n.ch:o.from=o.from&&f>=c.begin)){var p=d?"before":"after";return new tt(n.line,f,p)}}var h=function(e,t,r){for(var a=function(e,t){return t?new tt(n.line,l(e,1),"before"):new tt(n.line,e,"after")};e>=0&&e0==(1!=o.level),u=s?r.begin:l(r.end,-1);if(o.from<=u&&u0?c.end:l(c.begin,-1);return null==_||r>0&&_==t.text.length||!(m=h(r>0?0:i.length-1,r,u(_)))?null:m}(e.cm,s,t,n):Qa(s,t,n))){if(r||(o=t.line+n)=e.first+e.size||(t=new tt(o,t.ch,t.sticky),!(s=Ge(e,o))))return!1;t=Za(i,e.cm,s,t.line,n)}else t=a;return!0}if("char"==r)l();else if("column"==r)l(!0);else if("word"==r||"group"==r)for(var u=null,c="group"==r,d=e.cm&&e.cm.getHelper(t,"wordChars"),f=!0;!(n<0)||l(!f);f=!1){var p=s.text.charAt(t.ch)||"\n",h=te(p,d)?"w":c&&"\n"==p?"n":!c||/\s/.test(p)?null:"p";if(!c||f||h||(h="s"),u&&u!=h){n<0&&(n=1,l(),t.sticky="after");break}if(h&&(u=h),n>0&&!l(!f))break}var m=aa(e,t,a,o,!0);return rt(a,m)&&(m.hitSide=!0),m}function Ro(e,t,n,r){var i,a,o=e.doc,s=t.left;if("page"==r){var l=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(l-.5*ir(e.display),3);i=(n>0?t.bottom:t.top)+n*u}else"line"==r&&(i=n>0?t.bottom+3:t.top-3);for(;(a=Xn(e,s,i)).outside;){if(n<0?i<=0:i>=o.height){a.hitSide=!0;break}i+=5*n}return a}var Io=function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new R,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null};function Wo(e,t){var n=On(e,t.line);if(!n||n.hidden)return null;var r=Ge(e.doc,t.line),i=Yn(n,r,t.line),a=ce(r,e.doc.direction),o="left";a&&(o=le(a,t.ch)%2?"right":"left");var s=Fn(i.map,t.ch,o);return s.offset="right"==s.collapse?s.end:s.start,s}function zo(e,t){return t&&(e.bad=!0),e}function Uo(e,t,n){var r;if(t==e.display.lineDiv){if(!(r=e.display.lineDiv.childNodes[n]))return zo(e.clipPos(tt(e.display.viewTo-1)),!0);t=null,n=0}else for(r=t;;r=r.parentNode){if(!r||r==e.display.lineDiv)return null;if(r.parentNode&&r.parentNode==e.display.lineDiv)break}for(var i=0;i=t.display.viewTo||a.line=t.display.viewFrom&&Wo(t,i)||{node:l[0].measure.map[2],offset:0},c=a.liner.firstLine()&&(o=tt(o.line-1,Ge(r.doc,o.line-1).length)),s.ch==Ge(r.doc,s.line).text.length&&s.linei.viewTo-1)return!1;o.line==i.viewFrom||0==(e=dr(r,o.line))?(t=Xe(i.view[0].line),n=i.view[0].node):(t=Xe(i.view[e].line),n=i.view[e-1].node.nextSibling);var l,u,c=dr(r,s.line);if(c==i.view.length-1?(l=i.viewTo-1,u=i.lineDiv.lastChild):(l=Xe(i.view[c+1].line)-1,u=i.view[c+1].node.previousSibling),!n)return!1;for(var d=r.doc.splitLines(function(e,t,n,r,i){var a="",o=!1,s=e.doc.lineSeparator(),l=!1;function u(){o&&(a+=s,l&&(a+=s),o=l=!1)}function c(e){e&&(u(),a+=e)}function d(t){if(1==t.nodeType){var n=t.getAttribute("cm-text");if(n)return void c(n);var a,f=t.getAttribute("cm-marker");if(f){var p=e.findMarks(tt(r,0),tt(i+1,0),(_=+f,function(e){return e.id==_}));return void(p.length&&(a=p[0].find(0))&&c($e(e.doc,a.from,a.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var h=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;h&&u();for(var m=0;m1&&f.length>1;)if(J(d)==J(f))d.pop(),f.pop(),l--;else{if(d[0]!=f[0])break;d.shift(),f.shift(),t++}for(var p=0,h=0,m=d[0],_=f[0],g=Math.min(m.length,_.length);po.ch&&y.charCodeAt(y.length-h-1)==v.charCodeAt(v.length-h-1);)p--,h++;d[d.length-1]=y.slice(0,y.length-h).replace(/^\u200b+/,""),d[0]=d[0].slice(p).replace(/\u200b+$/,"");var w=tt(t,p),M=tt(l,f.length?J(f).length-h:0);return d.length>1||d[0]||nt(w,M)?(ha(r.doc,d,w,M,"+input"),!0):void 0},Io.prototype.ensurePolled=function(){this.forceCompositionEnd()},Io.prototype.reset=function(){this.forceCompositionEnd()},Io.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Io.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout(function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()},80))},Io.prototype.updateFromDOM=function(){var e=this;!this.cm.isReadOnly()&&this.pollContent()||Zr(this.cm,function(){return fr(e.cm)})},Io.prototype.setUneditable=function(e){e.contentEditable="false"},Io.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||ei(this.cm,Oo)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Io.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Io.prototype.onContextMenu=function(){},Io.prototype.resetPosition=function(){},Io.prototype.needsContentAttribute=!0;var Vo=function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new R,this.hasSelection=!1,this.composing=null};Vo.prototype.init=function(e){var t=this,n=this,r=this.cm;this.createField(e);var i=this.textarea;function a(e){if(!_e(r,e)){if(r.somethingSelected())Co({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var t=Ao(r);Co({lineWise:!0,text:t.text}),"cut"==e.type?r.setSelections(t.ranges,null,U):(n.prevInput="",i.value=t.text.join("\n"),A(i))}"cut"==e.type&&(r.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),m&&(i.style.width="0px"),fe(i,"input",function(){o&&s>=9&&t.hasSelection&&(t.hasSelection=null),n.poll()}),fe(i,"paste",function(e){_e(r,e)||Po(e,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())}),fe(i,"cut",a),fe(i,"copy",a),fe(e.scroller,"paste",function(t){if(!kn(e,t)&&!_e(r,t)){if(!i.dispatchEvent)return r.state.pasteIncoming=+new Date,void n.focus();var a=new Event("paste");a.clipboardData=t.clipboardData,i.dispatchEvent(a)}}),fe(e.lineSpace,"selectstart",function(t){kn(e,t)||be(t)}),fe(i,"compositionstart",function(){var e=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:e,range:r.markText(e,r.getCursor("to"),{className:"CodeMirror-composing"})}}),fe(i,"compositionend",function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)})},Vo.prototype.createField=function(e){this.wrapper=Fo(),this.textarea=this.wrapper.firstChild},Vo.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,r=yr(e);if(e.options.moveInputWithCursor){var i=$n(e,n.sel.primary().head,"div"),a=t.wrapper.getBoundingClientRect(),o=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+o.top-a.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+o.left-a.left))}return r},Vo.prototype.showSelection=function(e){var t=this.cm.display;D(t.cursorDiv,e.cursors),D(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},Vo.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var n=t.getSelection();this.textarea.value=n,t.state.focused&&A(this.textarea),o&&s>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value="",o&&s>=9&&(this.hasSelection=null))}},Vo.prototype.getField=function(){return this.textarea},Vo.prototype.supportsTouch=function(){return!1},Vo.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!g||O()!=this.textarea))try{this.textarea.focus()}catch(e){}},Vo.prototype.blur=function(){this.textarea.blur()},Vo.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},Vo.prototype.receivedFocus=function(){this.slowPoll()},Vo.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,function(){e.poll(),e.cm.state.focused&&e.slowPoll()})},Vo.prototype.fastPoll=function(){var e=!1,t=this;t.pollingFast=!0,t.polling.set(20,function n(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,n))})},Vo.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||Pe(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=n.value;if(i==r&&!t.somethingSelected())return!1;if(o&&s>=9&&this.hasSelection===i||y&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var a=i.charCodeAt(0);if(8203!=a||r||(r="​"),8666==a)return this.reset(),this.cm.execCommand("undo")}for(var l=0,u=Math.min(r.length,i.length);l1e3||i.indexOf("\n")>-1?n.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))}),!0},Vo.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},Vo.prototype.onKeyPress=function(){o&&s>=9&&(this.hasSelection=null),this.fastPoll()},Vo.prototype.onContextMenu=function(e){var t=this,n=t.cm,r=n.display,i=t.textarea;t.contextMenuPending&&t.contextMenuPending();var a=cr(n,e),u=r.scroller.scrollTop;if(a&&!d){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(a)&&ei(n,Zi)(n.doc,xi(a),U);var c,f=i.style.cssText,p=t.wrapper.style.cssText,h=t.wrapper.offsetParent.getBoundingClientRect();if(t.wrapper.style.cssText="position: static",i.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-h.top-5)+"px; left: "+(e.clientX-h.left-5)+"px;\n z-index: 1000; background: "+(o?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",l&&(c=window.scrollY),r.input.focus(),l&&window.scrollTo(null,c),r.input.reset(),n.somethingSelected()||(i.value=t.prevInput=" "),t.contextMenuPending=g,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll),o&&s>=9&&_(),k){ke(e);var m=function(){he(window,"mouseup",m),setTimeout(g,20)};fe(window,"mouseup",m)}else setTimeout(g,50)}function _(){if(null!=i.selectionStart){var e=n.somethingSelected(),a="​"+(e?i.value:"");i.value="⇚",i.value=a,t.prevInput=e?"":"​",i.selectionStart=1,i.selectionEnd=a.length,r.selForContextMenu=n.doc.sel}}function g(){if(t.contextMenuPending==g&&(t.contextMenuPending=!1,t.wrapper.style.cssText=p,i.style.cssText=f,o&&s<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=u),null!=i.selectionStart)){(!o||o&&s<9)&&_();var e=0,a=function(){r.selForContextMenu==n.doc.sel&&0==i.selectionStart&&i.selectionEnd>0&&"​"==t.prevInput?ei(n,sa)(n):e++<10?r.detectingSelectAll=setTimeout(a,500):(r.selForContextMenu=null,r.input.reset())};r.detectingSelectAll=setTimeout(a,200)}}},Vo.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e},Vo.prototype.setUneditable=function(){},Vo.prototype.needsContentAttribute=!1,function(e){var t=e.optionHandlers;function n(n,r,i,a){e.defaults[n]=r,i&&(t[n]=a?function(e,t,n){n!=Mo&&i(e,t,n)}:i)}e.defineOption=n,e.Init=Mo,n("value","",function(e,t){return e.setValue(t)},!0),n("mode",null,function(e,t){e.doc.modeOption=t,Yi(e)},!0),n("indentUnit",2,Yi,!0),n("indentWithTabs",!1),n("smartIndent",!0),n("tabSize",4,function(e){Ci(e),Wn(e),fr(e)},!0),n("lineSeparator",null,function(e,t){if(e.doc.lineSep=t,t){var n=[],r=e.doc.first;e.doc.iter(function(e){for(var i=0;;){var a=e.text.indexOf(t,i);if(-1==a)break;i=a+t.length,n.push(tt(r,a))}r++});for(var i=n.length-1;i>=0;i--)ha(e.doc,t,n[i],tt(n[i].line,n[i].ch+t.length))}}),n("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b-\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),n!=Mo&&e.refresh()}),n("specialCharPlaceholder",Zt,function(e){return e.refresh()},!0),n("electricChars",!0),n("inputStyle",g?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},!0),n("spellcheck",!1,function(e,t){return e.getInputField().spellcheck=t},!0),n("autocorrect",!1,function(e,t){return e.getInputField().autocorrect=t},!0),n("autocapitalize",!1,function(e,t){return e.getInputField().autocapitalize=t},!0),n("rtlMoveVisually",!b),n("wholeLineUpdateBefore",!0),n("theme","default",function(e){wo(e),mi(e)},!0),n("keyMap","default",function(e,t,n){var r=Ja(t),i=n!=Mo&&Ja(n);i&&i.detach&&i.detach(e,r),r.attach&&r.attach(e,i||null)}),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,To,!0),n("gutters",[],function(e,t){e.display.gutterSpecs=pi(t,e.options.lineNumbers),mi(e)},!0),n("fixedGutter",!0,function(e,t){e.display.gutters.style.left=t?sr(e.display)+"px":"0",e.refresh()},!0),n("coverGutterNextToScrollbar",!1,function(e){return zr(e)},!0),n("scrollbarStyle","native",function(e){Vr(e),zr(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)},!0),n("lineNumbers",!1,function(e,t){e.display.gutterSpecs=pi(e.options.gutters,t),mi(e)},!0),n("firstLineNumber",1,mi,!0),n("lineNumberFormatter",function(e){return e},mi,!0),n("showCursorWhenSelecting",!1,gr,!0),n("resetSelectionOnContextMenu",!0),n("lineWiseCopyCut",!0),n("pasteLinesPerSelection",!0),n("selectionsMayTouch",!1),n("readOnly",!1,function(e,t){"nocursor"==t&&(Tr(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)}),n("disableInput",!1,function(e,t){t||e.display.input.reset()},!0),n("dragDrop",!0,xo),n("allowDropFileTypes",null),n("cursorBlinkRate",530),n("cursorScrollMargin",0),n("cursorHeight",1,gr,!0),n("singleCursorHeightPerLine",!0,gr,!0),n("workTime",100),n("workDelay",100),n("flattenSpans",!0,Ci,!0),n("addModeClass",!1,Ci,!0),n("pollInterval",100),n("undoDepth",200,function(e,t){return e.doc.history.undoDepth=t}),n("historyEventDelay",1250),n("viewportMargin",10,function(e){return e.refresh()},!0),n("maxHighlightLength",1e4,Ci,!0),n("moveInputWithCursor",!0,function(e,t){t||e.display.input.resetPosition()}),n("tabindex",null,function(e,t){return e.display.input.getField().tabIndex=t||""}),n("autofocus",null),n("direction","ltr",function(e,t){return e.doc.setDirection(t)},!0),n("phrases",null)}(So),function(e){var t=e.optionHandlers,n=e.helpers={};e.prototype={constructor:e,focus:function(){window.focus(),this.display.input.focus()},setOption:function(e,n){var r=this.options,i=r[e];r[e]==n&&"mode"!=e||(r[e]=n,t.hasOwnProperty(e)&&ei(this,t[e])(this,n,i),me(this,"optionChange",this,e))},getOption:function(e){return this.options[e]},getDoc:function(){return this.doc},addKeyMap:function(e,t){this.state.keyMaps[t?"push":"unshift"](Ja(e))},removeKeyMap:function(e){for(var t=this.state.keyMaps,n=0;nn&&(Eo(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&Or(this));else{var a=i.from(),o=i.to(),s=Math.max(n,a.line);n=Math.min(this.lastLine(),o.line-(o.ch?0:1))+1;for(var l=s;l0&&Ki(this.doc,r,new ki(a,u[r].to()),U)}}}),getTokenAt:function(e,t){return vt(this,e,t)},getLineTokens:function(e,t){return vt(this,tt(e),t,!0)},getTokenTypeAt:function(e){e=lt(this.doc,e);var t,n=pt(this,Ge(this.doc,e.line)),r=0,i=(n.length-1)/2,a=e.ch;if(0==a)t=n[2];else for(;;){var o=r+i>>1;if((o?n[2*o-1]:0)>=a)i=o;else{if(!(n[2*o+1]a&&(e=a,i=!0),r=Ge(this.doc,e)}else r=e;return Vn(this,r,{top:0,left:0},t||"page",n||i).top+(i?this.doc.height-Bt(r):0)},defaultTextHeight:function(){return ir(this.display)},defaultCharWidth:function(){return ar(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var a,o,s,l=this.display,u=(e=$n(this,lt(this.doc,e))).bottom,c=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),l.sizer.appendChild(t),"over"==r)u=e.top;else if("above"==r||"near"==r){var d=Math.max(l.wrapper.clientHeight,this.doc.height),f=Math.max(l.sizer.clientWidth,l.lineSpace.clientWidth);("above"==r||e.bottom+t.offsetHeight>d)&&e.top>t.offsetHeight?u=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=d&&(u=e.bottom),c+t.offsetWidth>f&&(c=f-t.offsetWidth)}t.style.top=u+"px",t.style.left=t.style.right="","right"==i?(c=l.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?c=0:"middle"==i&&(c=(l.sizer.clientWidth-t.offsetWidth)/2),t.style.left=c+"px"),n&&(a=this,o={left:c,top:u,right:c+t.offsetWidth,bottom:u+t.offsetHeight},null!=(s=Yr(a,o)).scrollTop&&Hr(a,s.scrollTop),null!=s.scrollLeft&&Nr(a,s.scrollLeft))},triggerOnKeyDown:ti(uo),triggerOnKeyPress:ti(fo),triggerOnKeyUp:co,triggerOnMouseDown:ti(_o),execCommand:function(e){if(eo.hasOwnProperty(e))return eo[e].call(null,this)},triggerElectric:ti(function(e){jo(this,e)}),findPosH:function(e,t,n,r){var i=1;t<0&&(i=-1,t=-t);for(var a=lt(this.doc,e),o=0;o0&&o(t.charAt(n-1));)--n;for(;r.5)&&ur(this),me(this,"refresh",this)}),swapDoc:ti(function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),Ai(this,e),Wn(this),this.display.input.reset(),Pr(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,un(this,"swapDoc",this,t),t}),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},ve(e),e.registerHelper=function(t,r,i){n.hasOwnProperty(t)||(n[t]=e[t]={_global:[]}),n[t][r]=i},e.registerGlobalHelper=function(t,r,i,a){e.registerHelper(t,r,a),n[t]._global.push({pred:i,val:a})}}(So);var qo="iter insert remove copy getEditor constructor".split(" ");for(var Go in Ya.prototype)Ya.prototype.hasOwnProperty(Go)&&I(qo,Go)<0&&(So.prototype[Go]=function(e){return function(){return e.apply(this.doc,arguments)}}(Ya.prototype[Go]));return ve(Ya),So.inputStyles={textarea:Vo,contenteditable:Io},So.defineMode=function(e){So.defaults.mode||"null"==e||(So.defaults.mode=e),Ne.apply(this,arguments)},So.defineMIME=function(e,t){Fe[e]=t},So.defineMode("null",function(){return{token:function(e){return e.skipToEnd()}}}),So.defineMIME("text/plain","null"),So.defineExtension=function(e,t){So.prototype[e]=t},So.defineDocExtension=function(e,t){Ya.prototype[e]=t},So.fromTextArea=function(e,t){if((t=t?F(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var n=O();t.autofocus=n==e||null!=e.getAttribute("autofocus")&&n==document.body}function r(){e.value=s.getValue()}var i;if(e.form&&(fe(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var a=e.form;i=a.submit;try{var o=a.submit=function(){r(),a.submit=i,a.submit(),a.submit=o}}catch(e){}}t.finishInit=function(t){t.save=r,t.getTextArea=function(){return e},t.toTextArea=function(){t.toTextArea=isNaN,r(),e.parentNode.removeChild(t.getWrapperElement()),e.style.display="",e.form&&(he(e.form,"submit",r),"function"==typeof e.form.submit&&(e.form.submit=i))}},e.style.display="none";var s=So(function(t){return e.parentNode.insertBefore(t,e.nextSibling)},t);return s},function(e){e.off=he,e.on=fe,e.wheelEventPixels=bi,e.Doc=Ya,e.splitLines=Oe,e.countColumn=N,e.findColumn=q,e.isWordChar=ee,e.Pass=z,e.signal=me,e.Line=Gt,e.changeEnd=Ti,e.scrollbarModel=Br,e.Pos=tt,e.cmpPos=nt,e.modes=He,e.mimeModes=Fe,e.resolveMode=Re,e.getMode=Ie,e.modeExtensions=We,e.extendMode=ze,e.copyState=Ue,e.startState=Ve,e.innerMode=Be,e.commands=eo,e.keyMap=za,e.keyName=$a,e.isModifierKey=qa,e.lookupKey=Va,e.normalizeKeyMap=Ba,e.StringStream=qe,e.SharedTextMarker=Ta,e.TextMarker=La,e.LineWidget=wa,e.e_preventDefault=be,e.e_stopPropagation=we,e.e_stop=ke,e.addClass=P,e.contains=C,e.rmClass=T,e.keyNames=Na}(So),So.version="5.48.4",So}()},function(e,t,n){"use strict";var r=n(18),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?o:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0};var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var i=p(n);i&&i!==h&&e(t,i,r)}var o=c(n);d&&(o=o.concat(d(n)));for(var s=l(t),m=l(n),_=0;_=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(this.props,[]);return function(e){c.forEach(function(t){return delete e[t]})}(i),i.className=this.props.inputClassName,i.id=this.state.inputId,i.style=n,o.default.createElement("div",{className:this.props.className,style:t},this.renderStyles(),o.default.createElement("input",r({},i,{ref:this.inputRef})),o.default.createElement("div",{ref:this.sizerRef,style:u},e),this.props.placeholder?o.default.createElement("div",{ref:this.placeHolderSizerRef,style:u},this.props.placeholder):null)}}]),t}();h.propTypes={className:s.default.string,defaultValue:s.default.any,extraWidth:s.default.oneOfType([s.default.number,s.default.string]),id:s.default.string,injectStyles:s.default.bool,inputClassName:s.default.string,inputRef:s.default.func,inputStyle:s.default.object,minWidth:s.default.oneOfType([s.default.number,s.default.string]),onAutosize:s.default.func,onChange:s.default.func,placeholder:s.default.string,placeholderIsMinWidth:s.default.bool,style:s.default.object,value:s.default.any},h.defaultProps={minWidth:1,injectStyles:!0},t.default=h},function(e,t,n){"use strict";(function(e,r){var i,a=n(169);i="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:r;var o=Object(a.a)(i);t.a=o}).call(this,n(16),n(187)(e))},function(e,t){e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}},function(e,t,n){var r=n(208);e.exports=p,e.exports.parse=a,e.exports.compile=function(e,t){return s(a(e,t))},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=f;var i=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,o=0,s="",c=t&&t.delimiter||"/";null!=(n=i.exec(e));){var d=n[0],f=n[1],p=n.index;if(s+=e.slice(o,p),o=p+d.length,f)s+=f[1];else{var h=e[o],m=n[2],_=n[3],g=n[4],y=n[5],v=n[6],b=n[7];s&&(r.push(s),s="");var w=null!=m&&null!=h&&h!==m,M="+"===v||"*"===v,k="?"===v||"*"===v,L=n[2]||c,x=g||y;r.push({name:_||a++,prefix:m||"",delimiter:L,optional:k,repeat:M,partial:w,asterisk:!!b,pattern:x?u(x):b?".*":"[^"+l(L)+"]+?"})}}return o=200&&e<300}};l.headers={common:{Accept:"application/json, text/plain, */*"}},r.forEach(["delete","get","head"],function(e){l.headers[e]={}}),r.forEach(["post","put","patch"],function(e){l.headers[e]=r.merge(a)}),e.exports=l}).call(this,n(36))},function(e,t){var n,r,i=e.exports={};function a(){throw new Error("setTimeout has not been defined")}function o(){throw new Error("clearTimeout has not been defined")}function s(e){if(n===setTimeout)return setTimeout(e,0);if((n===a||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:a}catch(e){n=a}try{r="function"==typeof clearTimeout?clearTimeout:o}catch(e){r=o}}();var l,u=[],c=!1,d=-1;function f(){c&&l&&(c=!1,l.length?u=l.concat(u):d=-1,u.length&&p())}function p(){if(!c){var e=s(f);c=!0;for(var t=u.length;t;){for(l=u,u=[];++d1)for(var n=1;n=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},r=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},i={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},a=function(e){return function(t,n,a,o){var s=r(t),l=i[e][r(t)];return 2===s&&(l=l[n?0:1]),l.replace(/%d/i,t)}},o=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar",{months:o,monthsShort:o,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return n[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-dz",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"أح_إث_ثلا_أر_خم_جم_سب".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-kw",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:0,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(e){return 0===e?0:1===e?1:2===e?2:e%100>=3&&e%100<=10?3:e%100>=11?4:5},r={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},i=function(e){return function(t,i,a,o){var s=n(t),l=r[e][n(t)];return 2===s&&(l=l[i?0:1]),l.replace(/%d/i,t)}},a=["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"];e.defineLocale("ar-ly",{months:a,monthsShort:a,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/‏M/‏YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:i("s"),ss:i("s"),m:i("m"),mm:i("m"),h:i("h"),hh:i("h"),d:i("d"),dd:i("d"),M:i("M"),MM:i("M"),y:i("y"),yy:i("y")},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"};e.defineLocale("ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(e){return"م"===e},meridiem:function(e,t,n){return e<12?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return n[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",ss:"%d ثانية",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-üncü",4:"-üncü",100:"-üncü",6:"-ncı",9:"-uncu",10:"-uncu",30:"-uncu",60:"-ıncı",90:"-ıncı"};e.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə".split("_"),weekdaysShort:"Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən".split("_"),weekdaysMin:"Bz_BE_ÇA_Çə_CA_Cü_Şə".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[gələn həftə] dddd [saat] LT",lastDay:"[dünən] LT",lastWeek:"[keçən həftə] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s əvvəl",s:"birneçə saniyə",ss:"%d saniyə",m:"bir dəqiqə",mm:"%d dəqiqə",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gecə|səhər|gündüz|axşam/,isPM:function(e){return/^(gündüz|axşam)$/.test(e)},meridiem:function(e,t,n){return e<4?"gecə":e<12?"səhər":e<17?"gündüz":"axşam"},dayOfMonthOrdinalParse:/\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,ordinal:function(e){if(0===e)return e+"-ıncı";var n=e%10;return e+(t[n]||t[e%100-n]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r,i;return"m"===n?t?"хвіліна":"хвіліну":"h"===n?t?"гадзіна":"гадзіну":e+" "+(r=+e,i={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"хвіліна_хвіліны_хвілін":"хвіліну_хвіліны_хвілін",hh:t?"гадзіна_гадзіны_гадзін":"гадзіну_гадзіны_гадзін",dd:"дзень_дні_дзён",MM:"месяц_месяцы_месяцаў",yy:"год_гады_гадоў"}[n].split("_"),r%10==1&&r%100!=11?i[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?i[1]:i[2])}e.defineLocale("be",{months:{format:"студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня".split("_"),standalone:"студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань".split("_")},monthsShort:"студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж".split("_"),weekdays:{format:"нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу".split("_"),standalone:"нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота".split("_"),isFormat:/\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/},weekdaysShort:"нд_пн_ат_ср_чц_пт_сб".split("_"),weekdaysMin:"нд_пн_ат_ср_чц_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сёння ў] LT",nextDay:"[Заўтра ў] LT",lastDay:"[Учора ў] LT",nextWeek:function(){return"[У] dddd [ў] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[У мінулую] dddd [ў] LT";case 1:case 2:case 4:return"[У мінулы] dddd [ў] LT"}},sameElse:"L"},relativeTime:{future:"праз %s",past:"%s таму",s:"некалькі секунд",m:t,mm:t,h:t,hh:t,d:"дзень",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночы|раніцы|дня|вечара/,isPM:function(e){return/^(дня|вечара)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночы":e<12?"раніцы":e<17?"дня":"вечара"},dayOfMonthOrdinalParse:/\d{1,2}-(і|ы|га)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-ы":e+"-і";case"D":return e+"-га";default:return e}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des".split("_"),weekdays:"Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm"},calendar:{sameDay:"[Bi lɛrɛ] LT",nextDay:"[Sini lɛrɛ] LT",nextWeek:"dddd [don lɛrɛ] LT",lastDay:"[Kunu lɛrɛ] LT",lastWeek:"dddd [tɛmɛnen lɛrɛ] LT",sameElse:"L"},relativeTime:{future:"%s kɔnɔ",past:"a bɛ %s bɔ",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"lɛrɛ kelen",hh:"lɛrɛ %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"১",2:"২",3:"৩",4:"৪",5:"৫",6:"৬",7:"৭",8:"৮",9:"৯",0:"০"},n={"১":"1","২":"2","৩":"3","৪":"4","৫":"5","৬":"6","৭":"7","৮":"8","৯":"9","০":"0"};e.defineLocale("bn",{months:"জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর".split("_"),monthsShort:"জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে".split("_"),weekdays:"রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার".split("_"),weekdaysShort:"রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি".split("_"),weekdaysMin:"রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি".split("_"),longDateFormat:{LT:"A h:mm সময়",LTS:"A h:mm:ss সময়",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm সময়",LLLL:"dddd, D MMMM YYYY, A h:mm সময়"},calendar:{sameDay:"[আজ] LT",nextDay:"[আগামীকাল] LT",nextWeek:"dddd, LT",lastDay:"[গতকাল] LT",lastWeek:"[গত] dddd, LT",sameElse:"L"},relativeTime:{future:"%s পরে",past:"%s আগে",s:"কয়েক সেকেন্ড",ss:"%d সেকেন্ড",m:"এক মিনিট",mm:"%d মিনিট",h:"এক ঘন্টা",hh:"%d ঘন্টা",d:"এক দিন",dd:"%d দিন",M:"এক মাস",MM:"%d মাস",y:"এক বছর",yy:"%d বছর"},preparse:function(e){return e.replace(/[১২৩৪৫৬৭৮৯০]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/রাত|সকাল|দুপুর|বিকাল|রাত/,meridiemHour:function(e,t){return 12===e&&(e=0),"রাত"===t&&e>=4||"দুপুর"===t&&e<5||"বিকাল"===t?e+12:e},meridiem:function(e,t,n){return e<4?"রাত":e<10?"সকাল":e<17?"দুপুর":e<20?"বিকাল":"রাত"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"༡",2:"༢",3:"༣",4:"༤",5:"༥",6:"༦",7:"༧",8:"༨",9:"༩",0:"༠"},n={"༡":"1","༢":"2","༣":"3","༤":"4","༥":"5","༦":"6","༧":"7","༨":"8","༩":"9","༠":"0"};e.defineLocale("bo",{months:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),monthsShort:"ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ".split("_"),weekdays:"གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་".split("_"),weekdaysShort:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),weekdaysMin:"ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[དི་རིང] LT",nextDay:"[སང་ཉིན] LT",nextWeek:"[བདུན་ཕྲག་རྗེས་མ], LT",lastDay:"[ཁ་སང] LT",lastWeek:"[བདུན་ཕྲག་མཐའ་མ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ལ་",past:"%s སྔན་ལ",s:"ལམ་སང",ss:"%d སྐར་ཆ།",m:"སྐར་མ་གཅིག",mm:"%d སྐར་མ",h:"ཆུ་ཚོད་གཅིག",hh:"%d ཆུ་ཚོད",d:"ཉིན་གཅིག",dd:"%d ཉིན་",M:"ཟླ་བ་གཅིག",MM:"%d ཟླ་བ",y:"ལོ་གཅིག",yy:"%d ལོ"},preparse:function(e){return e.replace(/[༡༢༣༤༥༦༧༨༩༠]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,meridiemHour:function(e,t){return 12===e&&(e=0),"མཚན་མོ"===t&&e>=4||"ཉིན་གུང"===t&&e<5||"དགོང་དག"===t?e+12:e},meridiem:function(e,t,n){return e<4?"མཚན་མོ":e<10?"ཞོགས་ཀས":e<17?"ཉིན་གུང":e<20?"དགོང་དག":"མཚན་མོ"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){return e+" "+function(e,t){return 2===t?function(e){var t={m:"v",b:"v",d:"z"};return void 0===t[e.charAt(0)]?e:t[e.charAt(0)]+e.substring(1)}(e):e}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],e)}e.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondennoù",ss:"%d eilenn",m:"ur vunutenn",mm:t,h:"un eur",hh:"%d eur",d:"un devezh",dd:t,M:"ur miz",MM:t,y:"ur bloaz",yy:function(e){switch(function e(t){return t>9?e(t%10):t}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(añ|vet)/,ordinal:function(e){return e+(1===e?"añ":"vet")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ca",{months:{standalone:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aquí %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(e,t){var n=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"è";return"w"!==t&&"W"!==t||(n="a"),e+n},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),n="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),r=[/^led/i,/^úno/i,/^bře/i,/^dub/i,/^kvě/i,/^(čvn|červen$|června)/i,/^(čvc|červenec|července)/i,/^srp/i,/^zář/i,/^říj/i,/^lis/i,/^pro/i],i=/^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;function a(e){return e>1&&e<5&&1!=~~(e/10)}function o(e,t,n,r){var i=e+" ";switch(n){case"s":return t||r?"pár sekund":"pár sekundami";case"ss":return t||r?i+(a(e)?"sekundy":"sekund"):i+"sekundami";case"m":return t?"minuta":r?"minutu":"minutou";case"mm":return t||r?i+(a(e)?"minuty":"minut"):i+"minutami";case"h":return t?"hodina":r?"hodinu":"hodinou";case"hh":return t||r?i+(a(e)?"hodiny":"hodin"):i+"hodinami";case"d":return t||r?"den":"dnem";case"dd":return t||r?i+(a(e)?"dny":"dní"):i+"dny";case"M":return t||r?"měsíc":"měsícem";case"MM":return t||r?i+(a(e)?"měsíce":"měsíců"):i+"měsíci";case"y":return t||r?"rok":"rokem";case"yy":return t||r?i+(a(e)?"roky":"let"):i+"lety"}}e.defineLocale("cs",{months:t,monthsShort:n,monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,monthsShortStrictRegex:/^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:o,ss:o,m:o,mm:o,h:o,hh:o,d:o,dd:o,M:o,MM:o,y:o,yy:o},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("cv",{months:"кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав".split("_"),monthsShort:"кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш".split("_"),weekdays:"вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун".split("_"),weekdaysShort:"выр_тун_ытл_юн_кӗҫ_эрн_шӑм".split("_"),weekdaysMin:"вр_тн_ыт_юн_кҫ_эр_шм".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]",LLL:"YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm",LLLL:"dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm"},calendar:{sameDay:"[Паян] LT [сехетре]",nextDay:"[Ыран] LT [сехетре]",lastDay:"[Ӗнер] LT [сехетре]",nextWeek:"[Ҫитес] dddd LT [сехетре]",lastWeek:"[Иртнӗ] dddd LT [сехетре]",sameElse:"L"},relativeTime:{future:function(e){return e+(/сехет$/i.exec(e)?"рен":/ҫул$/i.exec(e)?"тан":"ран")},past:"%s каялла",s:"пӗр-ик ҫеккунт",ss:"%d ҫеккунт",m:"пӗр минут",mm:"%d минут",h:"пӗр сехет",hh:"%d сехет",d:"пӗр кун",dd:"%d кун",M:"пӗр уйӑх",MM:"%d уйӑх",y:"пӗр ҫул",yy:"%d ҫул"},dayOfMonthOrdinalParse:/\d{1,2}-мӗш/,ordinal:"%d-мӗш",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn ôl",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var t="";return e>20?t=40===e||50===e||60===e||80===e||100===e?"fed":"ain":e>0&&(t=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+t},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"på dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var i={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?i[n][0]:i[n][1]}e.defineLocale("de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var i={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?i[n][0]:i[n][1]}e.defineLocale("de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var i={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return t?i[n][0]:i[n][1]}e.defineLocale("de-ch",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:t,mm:"%d Minuten",h:t,hh:"%d Stunden",d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t=["ޖެނުއަރީ","ފެބްރުއަރީ","މާރިޗު","އޭޕްރީލު","މޭ","ޖޫން","ޖުލައި","އޯގަސްޓު","ސެޕްޓެމްބަރު","އޮކްޓޯބަރު","ނޮވެމްބަރު","ޑިސެމްބަރު"],n=["އާދިއްތަ","ހޯމަ","އަންގާރަ","ބުދަ","ބުރާސްފަތި","ހުކުރު","ހޮނިހިރު"];e.defineLocale("dv",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:"އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/މކ|މފ/,isPM:function(e){return"މފ"===e},meridiem:function(e,t,n){return e<12?"މކ":"މފ"},calendar:{sameDay:"[މިއަދު] LT",nextDay:"[މާދަމާ] LT",nextWeek:"dddd LT",lastDay:"[އިއްޔެ] LT",lastWeek:"[ފާއިތުވި] dddd LT",sameElse:"L"},relativeTime:{future:"ތެރޭގައި %s",past:"ކުރިން %s",s:"ސިކުންތުކޮޅެއް",ss:"d% ސިކުންތު",m:"މިނިޓެއް",mm:"މިނިޓު %d",h:"ގަޑިއިރެއް",hh:"ގަޑިއިރު %d",d:"ދުވަހެއް",dd:"ދުވަސް %d",M:"މަހެއް",MM:"މަސް %d",y:"އަހަރެއް",yy:"އަހަރު %d"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:7,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(e,t){return e?"string"==typeof t&&/D/.test(t.substring(0,t.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(e,t,n){return e>11?n?"μμ":"ΜΜ":n?"πμ":"ΠΜ"},isPM:function(e){return"μ"===(e+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,t){var n,r=this._calendarEl[e],i=t&&t.hours();return((n=r)instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(r=r.apply(t)),r.replace("{}",i%12==1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",ss:"%d δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},dayOfMonthOrdinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-SG",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aŭg_sep_okt_nov_dec".split("_"),weekdays:"dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_ĵaŭ_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_ĵa_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,t,n){return e>11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodiaŭ je] LT",nextDay:"[Morgaŭ je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hieraŭ je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"antaŭ %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],i=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],i=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),r=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],i=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;e.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var i={s:["mõne sekundi","mõni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["ühe minuti","üks minut"],mm:[e+" minuti",e+" minutit"],h:["ühe tunni","tund aega","üks tund"],hh:[e+" tunni",e+" tundi"],d:["ühe päeva","üks päev"],M:["kuu aja","kuu aega","üks kuu"],MM:[e+" kuu",e+" kuud"],y:["ühe aasta","aasta","üks aasta"],yy:[e+" aasta",e+" aastat"]};return t?i[n][2]?i[n][2]:i[n][1]:r?i[n][0]:i[n][1]}e.defineLocale("et",{months:"jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[Täna,] LT",nextDay:"[Homme,] LT",nextWeek:"[Järgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s pärast",past:"%s tagasi",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:"%d päeva",M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},n={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"};e.defineLocale("fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysShort:"یک‌شنبه_دوشنبه_سه‌شنبه_چهارشنبه_پنج‌شنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(e){return/بعد از ظهر/.test(e)},meridiem:function(e,t,n){return e<12?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چند ثانیه",ss:"ثانیه d%",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(e){return e.replace(/[۰-۹]/g,function(e){return n[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},dayOfMonthOrdinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),n=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",t[7],t[8],t[9]];function r(e,r,i,a){var o="";switch(i){case"s":return a?"muutaman sekunnin":"muutama sekunti";case"ss":return a?"sekunnin":"sekuntia";case"m":return a?"minuutin":"minuutti";case"mm":o=a?"minuutin":"minuuttia";break;case"h":return a?"tunnin":"tunti";case"hh":o=a?"tunnin":"tuntia";break;case"d":return a?"päivän":"päivä";case"dd":o=a?"päivän":"päivää";break;case"M":return a?"kuukauden":"kuukausi";case"MM":o=a?"kuukauden":"kuukautta";break;case"y":return a?"vuoden":"vuosi";case"yy":o=a?"vuoden":"vuotta"}return o=function(e,r){return e<10?r?n[e]:t[e]:e}(e,a)+" "+o}e.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fo",{months:"januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur".split("_"),weekdaysShort:"sun_mán_týs_mik_hós_frí_ley".split("_"),weekdaysMin:"su_má_tý_mi_hó_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[Í dag kl.] LT",nextDay:"[Í morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[Í gjár kl.] LT",lastWeek:"[síðstu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s síðani",s:"fá sekund",ss:"%d sekundir",m:"ein minuttur",mm:"%d minuttir",h:"ein tími",hh:"%d tímar",d:"ein dagur",dd:"%d dagar",M:"ein mánaður",MM:"%d mánaðir",y:"eitt ár",yy:"%d ár"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,t){switch(t){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd’hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,t){switch(t){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),n="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");e.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[ôfrûne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien minút",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ga",{months:["Eanáir","Feabhra","Márta","Aibreán","Bealtaine","Méitheamh","Iúil","Lúnasa","Meán Fómhair","Deaireadh Fómhair","Samhain","Nollaig"],monthsShort:["Eaná","Feab","Márt","Aibr","Beal","Méit","Iúil","Lúna","Meán","Deai","Samh","Noll"],monthsParseExact:!0,weekdays:["Dé Domhnaigh","Dé Luain","Dé Máirt","Dé Céadaoin","Déardaoin","Dé hAoine","Dé Satharn"],weekdaysShort:["Dom","Lua","Mái","Céa","Déa","hAo","Sat"],weekdaysMin:["Do","Lu","Má","Ce","Dé","hA","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Inniu ag] LT",nextDay:"[Amárach ag] LT",nextWeek:"dddd [ag] LT",lastDay:"[Inné aig] LT",lastWeek:"dddd [seo caite] [ag] LT",sameElse:"L"},relativeTime:{future:"i %s",past:"%s ó shin",s:"cúpla soicind",ss:"%d soicind",m:"nóiméad",mm:"%d nóiméad",h:"uair an chloig",hh:"%d uair an chloig",d:"lá",dd:"%d lá",M:"mí",MM:"%d mí",y:"bliain",yy:"%d bliain"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am Màrt","An Giblean","An Cèitean","An t-Ògmhios","An t-Iuchar","An Lùnastal","An t-Sultain","An Dàmhair","An t-Samhain","An Dùbhlachd"],monthsShort:["Faoi","Gear","Màrt","Gibl","Cèit","Ògmh","Iuch","Lùn","Sult","Dàmh","Samh","Dùbh"],monthsParseExact:!0,weekdays:["Didòmhnaich","Diluain","Dimàirt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["Dò","Lu","Mà","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-màireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-dè aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"mìos",MM:"%d mìosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_mércores_xoves_venres_sábado".split("_"),weekdaysShort:"dom._lun._mar._mér._xov._ven._sáb.".split("_"),weekdaysMin:"do_lu_ma_mé_xo_ve_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"ás":"á")+"] LT"},nextDay:function(){return"[mañá "+(1!==this.hours()?"ás":"á")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"ás":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"á":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"ás":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var i={s:["thodde secondanim","thodde second"],ss:[e+" secondanim",e+" second"],m:["eka mintan","ek minute"],mm:[e+" mintanim",e+" mintam"],h:["eka voran","ek vor"],hh:[e+" voranim",e+" voram"],d:["eka disan","ek dis"],dd:[e+" disanim",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineanim",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsanim",e+" vorsam"]};return t?i[n][0]:i[n][1]}e.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,t){switch(t){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(e,t){return 12===e&&(e=0),"rati"===t?e<4?e:e+12:"sokalli"===t?e:"donparam"===t?e>12?e:e+12:"sanje"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"૧",2:"૨",3:"૩",4:"૪",5:"૫",6:"૬",7:"૭",8:"૮",9:"૯",0:"૦"},n={"૧":"1","૨":"2","૩":"3","૪":"4","૫":"5","૬":"6","૭":"7","૮":"8","૯":"9","૦":"0"};e.defineLocale("gu",{months:"જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર".split("_"),monthsShort:"જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.".split("_"),monthsParseExact:!0,weekdays:"રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર".split("_"),weekdaysShort:"રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ".split("_"),weekdaysMin:"ર_સો_મં_બુ_ગુ_શુ_શ".split("_"),longDateFormat:{LT:"A h:mm વાગ્યે",LTS:"A h:mm:ss વાગ્યે",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm વાગ્યે",LLLL:"dddd, D MMMM YYYY, A h:mm વાગ્યે"},calendar:{sameDay:"[આજ] LT",nextDay:"[કાલે] LT",nextWeek:"dddd, LT",lastDay:"[ગઇકાલે] LT",lastWeek:"[પાછલા] dddd, LT",sameElse:"L"},relativeTime:{future:"%s મા",past:"%s પેહલા",s:"અમુક પળો",ss:"%d સેકંડ",m:"એક મિનિટ",mm:"%d મિનિટ",h:"એક કલાક",hh:"%d કલાક",d:"એક દિવસ",dd:"%d દિવસ",M:"એક મહિનો",MM:"%d મહિનો",y:"એક વર્ષ",yy:"%d વર્ષ"},preparse:function(e){return e.replace(/[૧૨૩૪૫૬૭૮૯૦]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/રાત|બપોર|સવાર|સાંજ/,meridiemHour:function(e,t){return 12===e&&(e=0),"રાત"===t?e<4?e:e+12:"સવાર"===t?e:"બપોર"===t?e>=10?e:e+12:"સાંજ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"રાત":e<10?"સવાર":e<17?"બપોર":e<20?"સાંજ":"રાત"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",ss:"%d שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(e){return 2===e?"שעתיים":e+" שעות"},d:"יום",dd:function(e){return 2===e?"יומיים":e+" ימים"},M:"חודש",MM:function(e){return 2===e?"חודשיים":e+" חודשים"},y:"שנה",yy:function(e){return 2===e?"שנתיים":e%10==0&&10!==e?e+" שנה":e+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(e){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(e)},meridiem:function(e,t,n){return e<5?"לפנות בוקר":e<10?"בבוקר":e<12?n?'לפנה"צ':"לפני הצהריים":e<18?n?'אחה"צ':"אחרי הצהריים":"בערב"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",ss:"%d सेकंड",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात"===t?e<4?e:e+12:"सुबह"===t?e:"दोपहर"===t?e>=10?e:e+12:"शाम"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात":e<10?"सुबह":e<17?"दोपहर":e<20?"शाम":"रात"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r=e+" ";switch(n){case"ss":return r+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return t?"jedna minuta":"jedne minute";case"mm":return r+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return t?"jedan sat":"jednog sata";case"hh":return r+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return r+=1===e?"dan":"dana";case"MM":return r+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return r+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}e.defineLocale("hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:t,m:t,mm:t,h:t,hh:t,d:"dan",dd:t,M:"mjesec",MM:t,y:"godinu",yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" ");function n(e,t,n,r){var i=e;switch(n){case"s":return r||t?"néhány másodperc":"néhány másodperce";case"ss":return i+(r||t)?" másodperc":" másodperce";case"m":return"egy"+(r||t?" perc":" perce");case"mm":return i+(r||t?" perc":" perce");case"h":return"egy"+(r||t?" óra":" órája");case"hh":return i+(r||t?" óra":" órája");case"d":return"egy"+(r||t?" nap":" napja");case"dd":return i+(r||t?" nap":" napja");case"M":return"egy"+(r||t?" hónap":" hónapja");case"MM":return i+(r||t?" hónap":" hónapja");case"y":return"egy"+(r||t?" év":" éve");case"yy":return i+(r||t?" év":" éve")}return""}function r(e){return(e?"":"[múlt] ")+"["+t[this.day()]+"] LT[-kor]"}e.defineLocale("hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,t,n){return e<12?!0===n?"de":"DE":!0===n?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return r.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return r.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:n,ss:n,m:n,mm:n,h:n,hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("hy-am",{months:{format:"հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի".split("_"),standalone:"հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր".split("_")},monthsShort:"հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ".split("_"),weekdays:"կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ".split("_"),weekdaysShort:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),weekdaysMin:"կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY թ.",LLL:"D MMMM YYYY թ., HH:mm",LLLL:"dddd, D MMMM YYYY թ., HH:mm"},calendar:{sameDay:"[այսօր] LT",nextDay:"[վաղը] LT",lastDay:"[երեկ] LT",nextWeek:function(){return"dddd [օրը ժամը] LT"},lastWeek:function(){return"[անցած] dddd [օրը ժամը] LT"},sameElse:"L"},relativeTime:{future:"%s հետո",past:"%s առաջ",s:"մի քանի վայրկյան",ss:"%d վայրկյան",m:"րոպե",mm:"%d րոպե",h:"ժամ",hh:"%d ժամ",d:"օր",dd:"%d օր",M:"ամիս",MM:"%d ամիս",y:"տարի",yy:"%d տարի"},meridiemParse:/գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,isPM:function(e){return/^(ցերեկվա|երեկոյան)$/.test(e)},meridiem:function(e){return e<4?"գիշերվա":e<12?"առավոտվա":e<17?"ցերեկվա":"երեկոյան"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(ին|րդ)/,ordinal:function(e,t){switch(t){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-ին":e+"-րդ";default:return e}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"siang"===t?e>=11?e:e+12:"sore"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e){return e%100==11||e%10!=1}function n(e,n,r,i){var a=e+" ";switch(r){case"s":return n||i?"nokkrar sekúndur":"nokkrum sekúndum";case"ss":return t(e)?a+(n||i?"sekúndur":"sekúndum"):a+"sekúnda";case"m":return n?"mínúta":"mínútu";case"mm":return t(e)?a+(n||i?"mínútur":"mínútum"):n?a+"mínúta":a+"mínútu";case"hh":return t(e)?a+(n||i?"klukkustundir":"klukkustundum"):a+"klukkustund";case"d":return n?"dagur":i?"dag":"degi";case"dd":return t(e)?n?a+"dagar":a+(i?"daga":"dögum"):n?a+"dagur":a+(i?"dag":"degi");case"M":return n?"mánuður":i?"mánuð":"mánuði";case"MM":return t(e)?n?a+"mánuðir":a+(i?"mánuði":"mánuðum"):n?a+"mánuður":a+(i?"mánuð":"mánuði");case"y":return n||i?"ár":"ári";case"yy":return t(e)?a+(n||i?"ár":"árum"):a+(n||i?"ár":"ári")}}e.defineLocale("is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:n,ss:n,m:n,mm:n,h:"klukkustund",hh:n,d:n,dd:n,M:n,MM:n,y:n,yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("it-ch",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ja",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日(ddd) HH:mm"},meridiemParse:/午前|午後/i,isPM:function(e){return"午後"===e},meridiem:function(e,t,n){return e<12?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:function(e){return e.week()=11?e:e+12:"sonten"===t||"ndalu"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ka",{months:{standalone:"იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი".split("_"),format:"იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს".split("_")},monthsShort:"იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ".split("_"),weekdays:{standalone:"კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი".split("_"),format:"კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს".split("_"),isFormat:/(წინა|შემდეგ)/},weekdaysShort:"კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ".split("_"),weekdaysMin:"კვ_ორ_სა_ოთ_ხუ_პა_შა".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[დღეს] LT[-ზე]",nextDay:"[ხვალ] LT[-ზე]",lastDay:"[გუშინ] LT[-ზე]",nextWeek:"[შემდეგ] dddd LT[-ზე]",lastWeek:"[წინა] dddd LT-ზე",sameElse:"L"},relativeTime:{future:function(e){return/(წამი|წუთი|საათი|წელი)/.test(e)?e.replace(/ი$/,"ში"):e+"ში"},past:function(e){return/(წამი|წუთი|საათი|დღე|თვე)/.test(e)?e.replace(/(ი|ე)$/,"ის წინ"):/წელი/.test(e)?e.replace(/წელი$/,"წლის წინ"):void 0},s:"რამდენიმე წამი",ss:"%d წამი",m:"წუთი",mm:"%d წუთი",h:"საათი",hh:"%d საათი",d:"დღე",dd:"%d დღე",M:"თვე",MM:"%d თვე",y:"წელი",yy:"%d წელი"},dayOfMonthOrdinalParse:/0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,ordinal:function(e){return 0===e?e:1===e?e+"-ლი":e<20||e<=100&&e%20==0||e%100==0?"მე-"+e:e+"-ე"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={0:"-ші",1:"-ші",2:"-ші",3:"-ші",4:"-ші",5:"-ші",6:"-шы",7:"-ші",8:"-ші",9:"-шы",10:"-шы",20:"-шы",30:"-шы",40:"-шы",50:"-ші",60:"-шы",70:"-ші",80:"-ші",90:"-шы",100:"-ші"};e.defineLocale("kk",{months:"қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан".split("_"),monthsShort:"қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел".split("_"),weekdays:"жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі".split("_"),weekdaysShort:"жек_дүй_сей_сәр_бей_жұм_сен".split("_"),weekdaysMin:"жк_дй_сй_ср_бй_жм_сн".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгін сағат] LT",nextDay:"[Ертең сағат] LT",nextWeek:"dddd [сағат] LT",lastDay:"[Кеше сағат] LT",lastWeek:"[Өткен аптаның] dddd [сағат] LT",sameElse:"L"},relativeTime:{future:"%s ішінде",past:"%s бұрын",s:"бірнеше секунд",ss:"%d секунд",m:"бір минут",mm:"%d минут",h:"бір сағат",hh:"%d сағат",d:"бір күн",dd:"%d күн",M:"бір ай",MM:"%d ай",y:"бір жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(ші|шы)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"១",2:"២",3:"៣",4:"៤",5:"៥",6:"៦",7:"៧",8:"៨",9:"៩",0:"០"},n={"១":"1","២":"2","៣":"3","៤":"4","៥":"5","៦":"6","៧":"7","៨":"8","៩":"9","០":"0"};e.defineLocale("km",{months:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),monthsShort:"មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ".split("_"),weekdays:"អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍".split("_"),weekdaysShort:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysMin:"អា_ច_អ_ព_ព្រ_សុ_ស".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ព្រឹក|ល្ងាច/,isPM:function(e){return"ល្ងាច"===e},meridiem:function(e,t,n){return e<12?"ព្រឹក":"ល្ងាច"},calendar:{sameDay:"[ថ្ងៃនេះ ម៉ោង] LT",nextDay:"[ស្អែក ម៉ោង] LT",nextWeek:"dddd [ម៉ោង] LT",lastDay:"[ម្សិលមិញ ម៉ោង] LT",lastWeek:"dddd [សប្តាហ៍មុន] [ម៉ោង] LT",sameElse:"L"},relativeTime:{future:"%sទៀត",past:"%sមុន",s:"ប៉ុន្មានវិនាទី",ss:"%d វិនាទី",m:"មួយនាទី",mm:"%d នាទី",h:"មួយម៉ោង",hh:"%d ម៉ោង",d:"មួយថ្ងៃ",dd:"%d ថ្ងៃ",M:"មួយខែ",MM:"%d ខែ",y:"មួយឆ្នាំ",yy:"%d ឆ្នាំ"},dayOfMonthOrdinalParse:/ទី\d{1,2}/,ordinal:"ទី%d",preparse:function(e){return e.replace(/[១២៣៤៥៦៧៨៩០]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"೧",2:"೨",3:"೩",4:"೪",5:"೫",6:"೬",7:"೭",8:"೮",9:"೯",0:"೦"},n={"೧":"1","೨":"2","೩":"3","೪":"4","೫":"5","೬":"6","೭":"7","೮":"8","೯":"9","೦":"0"};e.defineLocale("kn",{months:"ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್".split("_"),monthsShort:"ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ".split("_"),monthsParseExact:!0,weekdays:"ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ".split("_"),weekdaysShort:"ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ".split("_"),weekdaysMin:"ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[ಇಂದು] LT",nextDay:"[ನಾಳೆ] LT",nextWeek:"dddd, LT",lastDay:"[ನಿನ್ನೆ] LT",lastWeek:"[ಕೊನೆಯ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ನಂತರ",past:"%s ಹಿಂದೆ",s:"ಕೆಲವು ಕ್ಷಣಗಳು",ss:"%d ಸೆಕೆಂಡುಗಳು",m:"ಒಂದು ನಿಮಿಷ",mm:"%d ನಿಮಿಷ",h:"ಒಂದು ಗಂಟೆ",hh:"%d ಗಂಟೆ",d:"ಒಂದು ದಿನ",dd:"%d ದಿನ",M:"ಒಂದು ತಿಂಗಳು",MM:"%d ತಿಂಗಳು",y:"ಒಂದು ವರ್ಷ",yy:"%d ವರ್ಷ"},preparse:function(e){return e.replace(/[೧೨೩೪೫೬೭೮೯೦]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ರಾತ್ರಿ"===t?e<4?e:e+12:"ಬೆಳಿಗ್ಗೆ"===t?e:"ಮಧ್ಯಾಹ್ನ"===t?e>=10?e:e+12:"ಸಂಜೆ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ರಾತ್ರಿ":e<10?"ಬೆಳಿಗ್ಗೆ":e<17?"ಮಧ್ಯಾಹ್ನ":e<20?"ಸಂಜೆ":"ರಾತ್ರಿ"},dayOfMonthOrdinalParse:/\d{1,2}(ನೇ)/,ordinal:function(e){return e+"ನೇ"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h:mm",LLLL:"YYYY년 MMMM D일 dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY년 MMMM D일",lll:"YYYY년 MMMM D일 A h:mm",llll:"YYYY년 MMMM D일 dddd A h:mm"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"1분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},dayOfMonthOrdinalParse:/\d{1,2}(일|월|주)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"일";case"M":return e+"월";case"w":case"W":return e+"주";default:return e}},meridiemParse:/오전|오후/,isPM:function(e){return"오후"===e},meridiem:function(e,t,n){return e<12?"오전":"오후"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},n={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},r=["کانونی دووەم","شوبات","ئازار","نیسان","ئایار","حوزەیران","تەمموز","ئاب","ئەیلوول","تشرینی یەكەم","تشرینی دووەم","كانونی یەکەم"];e.defineLocale("ku",{months:r,monthsShort:r,weekdays:"یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌".split("_"),weekdaysShort:"یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌".split("_"),weekdaysMin:"ی_د_س_چ_پ_ه_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/ئێواره‌|به‌یانی/,isPM:function(e){return/ئێواره‌/.test(e)},meridiem:function(e,t,n){return e<12?"به‌یانی":"ئێواره‌"},calendar:{sameDay:"[ئه‌مرۆ كاتژمێر] LT",nextDay:"[به‌یانی كاتژمێر] LT",nextWeek:"dddd [كاتژمێر] LT",lastDay:"[دوێنێ كاتژمێر] LT",lastWeek:"dddd [كاتژمێر] LT",sameElse:"L"},relativeTime:{future:"له‌ %s",past:"%s",s:"چه‌ند چركه‌یه‌ك",ss:"چركه‌ %d",m:"یه‌ك خوله‌ك",mm:"%d خوله‌ك",h:"یه‌ك كاتژمێر",hh:"%d كاتژمێر",d:"یه‌ك ڕۆژ",dd:"%d ڕۆژ",M:"یه‌ك مانگ",MM:"%d مانگ",y:"یه‌ك ساڵ",yy:"%d ساڵ"},preparse:function(e){return e.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(e){return n[e]}).replace(/،/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]}).replace(/,/g,"،")},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={0:"-чү",1:"-чи",2:"-чи",3:"-чү",4:"-чү",5:"-чи",6:"-чы",7:"-чи",8:"-чи",9:"-чу",10:"-чу",20:"-чы",30:"-чу",40:"-чы",50:"-чү",60:"-чы",70:"-чи",80:"-чи",90:"-чу",100:"-чү"};e.defineLocale("ky",{months:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_"),monthsShort:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_"),weekdays:"Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби".split("_"),weekdaysShort:"Жек_Дүй_Шей_Шар_Бей_Жум_Ише".split("_"),weekdaysMin:"Жк_Дй_Шй_Шр_Бй_Жм_Иш".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Бүгүн саат] LT",nextDay:"[Эртең саат] LT",nextWeek:"dddd [саат] LT",lastDay:"[Кечээ саат] LT",lastWeek:"[Өткөн аптанын] dddd [күнү] [саат] LT",sameElse:"L"},relativeTime:{future:"%s ичинде",past:"%s мурун",s:"бирнече секунд",ss:"%d секунд",m:"бир мүнөт",mm:"%d мүнөт",h:"бир саат",hh:"%d саат",d:"бир күн",dd:"%d күн",M:"бир ай",MM:"%d ай",y:"бир жыл",yy:"%d жыл"},dayOfMonthOrdinalParse:/\d{1,2}-(чи|чы|чү|чу)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var i={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return t?i[n][0]:i[n][1]}function n(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var t=e%10;return n(0===t?e/10:t)}if(e<1e4){for(;e>=10;)e/=10;return n(e)}return n(e/=1e3)}e.defineLocale("lb",{months:"Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._Mé._Dë._Më._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mé_Dë_Më_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[Gëschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return n(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return n(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:t,mm:"%d Minutten",h:t,hh:"%d Stonnen",d:t,dd:"%d Deeg",M:t,MM:"%d Méint",y:t,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("lo",{months:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),monthsShort:"ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ".split("_"),weekdays:"ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysShort:"ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ".split("_"),weekdaysMin:"ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"ວັນdddd D MMMM YYYY HH:mm"},meridiemParse:/ຕອນເຊົ້າ|ຕອນແລງ/,isPM:function(e){return"ຕອນແລງ"===e},meridiem:function(e,t,n){return e<12?"ຕອນເຊົ້າ":"ຕອນແລງ"},calendar:{sameDay:"[ມື້ນີ້ເວລາ] LT",nextDay:"[ມື້ອື່ນເວລາ] LT",nextWeek:"[ວັນ]dddd[ໜ້າເວລາ] LT",lastDay:"[ມື້ວານນີ້ເວລາ] LT",lastWeek:"[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT",sameElse:"L"},relativeTime:{future:"ອີກ %s",past:"%sຜ່ານມາ",s:"ບໍ່ເທົ່າໃດວິນາທີ",ss:"%d ວິນາທີ",m:"1 ນາທີ",mm:"%d ນາທີ",h:"1 ຊົ່ວໂມງ",hh:"%d ຊົ່ວໂມງ",d:"1 ມື້",dd:"%d ມື້",M:"1 ເດືອນ",MM:"%d ເດືອນ",y:"1 ປີ",yy:"%d ປີ"},dayOfMonthOrdinalParse:/(ທີ່)\d{1,2}/,ordinal:function(e){return"ທີ່"+e}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={ss:"sekundė_sekundžių_sekundes",m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"};function n(e,t,n,r){return t?i(n)[0]:r?i(n)[1]:i(n)[2]}function r(e){return e%10==0||e>10&&e<20}function i(e){return t[e].split("_")}function a(e,t,a,o){var s=e+" ";return 1===e?s+n(0,t,a[0],o):t?s+(r(e)?i(a)[1]:i(a)[0]):o?s+i(a)[1]:s+(r(e)?i(a)[1]:i(a)[2])}e.defineLocale("lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:function(e,t,n,r){return t?"kelios sekundės":r?"kelių sekundžių":"kelias sekundes"},ss:a,m:n,mm:a,h:n,hh:a,d:n,dd:a,M:n,MM:a,y:n,yy:a},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={ss:"sekundes_sekundēm_sekunde_sekundes".split("_"),m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(e,t,n){return n?t%10==1&&t%100!=11?e[2]:e[3]:t%10==1&&t%100!=11?e[0]:e[1]}function r(e,r,i){return e+" "+n(t[i],e,r)}function i(e,r,i){return n(t[i],e,r)}e.defineLocale("lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:function(e,t){return t?"dažas sekundes":"dažām sekundēm"},ss:r,m:i,mm:r,h:i,hh:r,d:i,dd:r,M:i,MM:r,y:i,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var i=t.words[r];return 1===r.length?n?i[0]:i[1]:e+" "+t.correctGrammaticalCase(e,i)}};e.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedjelje] [u] LT","[prošlog] [ponedjeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srijede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mjesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("mi",{months:"Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei".split("_"),weekdaysShort:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),weekdaysMin:"Ta_Ma_Tū_We_Tāi_Pa_Hā".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te hēkona ruarua",ss:"%d hēkona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("mk",{months:"јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември".split("_"),monthsShort:"јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек".split("_"),weekdays:"недела_понеделник_вторник_среда_четврток_петок_сабота".split("_"),weekdaysShort:"нед_пон_вто_сре_чет_пет_саб".split("_"),weekdaysMin:"нe_пo_вт_ср_че_пе_сa".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Денес во] LT",nextDay:"[Утре во] LT",nextWeek:"[Во] dddd [во] LT",lastDay:"[Вчера во] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[Изминатата] dddd [во] LT";case 1:case 2:case 4:case 5:return"[Изминатиот] dddd [во] LT"}},sameElse:"L"},relativeTime:{future:"после %s",past:"пред %s",s:"неколку секунди",ss:"%d секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дена",M:"месец",MM:"%d месеци",y:"година",yy:"%d години"},dayOfMonthOrdinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(e){var t=e%10,n=e%100;return 0===e?e+"-ев":0===n?e+"-ен":n>10&&n<20?e+"-ти":1===t?e+"-ви":2===t?e+"-ри":7===t||8===t?e+"-ми":e+"-ти"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ml",{months:"ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ".split("_"),monthsShort:"ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.".split("_"),monthsParseExact:!0,weekdays:"ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച".split("_"),weekdaysShort:"ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി".split("_"),weekdaysMin:"ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ".split("_"),longDateFormat:{LT:"A h:mm -നു",LTS:"A h:mm:ss -നു",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -നു",LLLL:"dddd, D MMMM YYYY, A h:mm -നു"},calendar:{sameDay:"[ഇന്ന്] LT",nextDay:"[നാളെ] LT",nextWeek:"dddd, LT",lastDay:"[ഇന്നലെ] LT",lastWeek:"[കഴിഞ്ഞ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s കഴിഞ്ഞ്",past:"%s മുൻപ്",s:"അൽപ നിമിഷങ്ങൾ",ss:"%d സെക്കൻഡ്",m:"ഒരു മിനിറ്റ്",mm:"%d മിനിറ്റ്",h:"ഒരു മണിക്കൂർ",hh:"%d മണിക്കൂർ",d:"ഒരു ദിവസം",dd:"%d ദിവസം",M:"ഒരു മാസം",MM:"%d മാസം",y:"ഒരു വർഷം",yy:"%d വർഷം"},meridiemParse:/രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,meridiemHour:function(e,t){return 12===e&&(e=0),"രാത്രി"===t&&e>=4||"ഉച്ച കഴിഞ്ഞ്"===t||"വൈകുന്നേരം"===t?e+12:e},meridiem:function(e,t,n){return e<4?"രാത്രി":e<12?"രാവിലെ":e<17?"ഉച്ച കഴിഞ്ഞ്":e<20?"വൈകുന്നേരം":"രാത്രി"}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){switch(n){case"s":return t?"хэдхэн секунд":"хэдхэн секундын";case"ss":return e+(t?" секунд":" секундын");case"m":case"mm":return e+(t?" минут":" минутын");case"h":case"hh":return e+(t?" цаг":" цагийн");case"d":case"dd":return e+(t?" өдөр":" өдрийн");case"M":case"MM":return e+(t?" сар":" сарын");case"y":case"yy":return e+(t?" жил":" жилийн");default:return e}}e.defineLocale("mn",{months:"Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар".split("_"),monthsShort:"1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар".split("_"),monthsParseExact:!0,weekdays:"Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба".split("_"),weekdaysShort:"Ням_Дав_Мяг_Лха_Пүр_Баа_Бям".split("_"),weekdaysMin:"Ня_Да_Мя_Лх_Пү_Ба_Бя".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY оны MMMMын D",LLL:"YYYY оны MMMMын D HH:mm",LLLL:"dddd, YYYY оны MMMMын D HH:mm"},meridiemParse:/ҮӨ|ҮХ/i,isPM:function(e){return"ҮХ"===e},meridiem:function(e,t,n){return e<12?"ҮӨ":"ҮХ"},calendar:{sameDay:"[Өнөөдөр] LT",nextDay:"[Маргааш] LT",nextWeek:"[Ирэх] dddd LT",lastDay:"[Өчигдөр] LT",lastWeek:"[Өнгөрсөн] dddd LT",sameElse:"L"},relativeTime:{future:"%s дараа",past:"%s өмнө",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2} өдөр/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+" өдөр";default:return e}}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};function r(e,t,n,r){var i="";if(t)switch(n){case"s":i="काही सेकंद";break;case"ss":i="%d सेकंद";break;case"m":i="एक मिनिट";break;case"mm":i="%d मिनिटे";break;case"h":i="एक तास";break;case"hh":i="%d तास";break;case"d":i="एक दिवस";break;case"dd":i="%d दिवस";break;case"M":i="एक महिना";break;case"MM":i="%d महिने";break;case"y":i="एक वर्ष";break;case"yy":i="%d वर्षे"}else switch(n){case"s":i="काही सेकंदां";break;case"ss":i="%d सेकंदां";break;case"m":i="एका मिनिटा";break;case"mm":i="%d मिनिटां";break;case"h":i="एका तासा";break;case"hh":i="%d तासां";break;case"d":i="एका दिवसा";break;case"dd":i="%d दिवसां";break;case"M":i="एका महिन्या";break;case"MM":i="%d महिन्यां";break;case"y":i="एका वर्षा";break;case"yy":i="%d वर्षां"}return i.replace(/%d/i,e)}e.defineLocale("mr",{months:"जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर".split("_"),monthsShort:"जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm वाजता",LTS:"A h:mm:ss वाजता",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm वाजता",LLLL:"dddd, D MMMM YYYY, A h:mm वाजता"},calendar:{sameDay:"[आज] LT",nextDay:"[उद्या] LT",nextWeek:"dddd, LT",lastDay:"[काल] LT",lastWeek:"[मागील] dddd, LT",sameElse:"L"},relativeTime:{future:"%sमध्ये",past:"%sपूर्वी",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/रात्री|सकाळी|दुपारी|सायंकाळी/,meridiemHour:function(e,t){return 12===e&&(e=0),"रात्री"===t?e<4?e:e+12:"सकाळी"===t?e:"दुपारी"===t?e>=10?e:e+12:"सायंकाळी"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"रात्री":e<10?"सकाळी":e<17?"दुपारी":e<20?"सायंकाळी":"रात्री"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,t){return 12===e&&(e=0),"pagi"===t?e:"tengahari"===t?e>=11?e:e+12:"petang"===t||"malam"===t?e+12:void 0},meridiem:function(e,t,n){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ".split("_"),weekdays:"Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt".split("_"),weekdaysShort:"Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib".split("_"),weekdaysMin:"Ħa_Tn_Tl_Er_Ħa_Ġi_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[Għada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-bieraħ fil-]LT",lastWeek:"dddd [li għadda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f’ %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"siegħa",hh:"%d siegħat",d:"ġurnata",dd:"%d ġranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"၁",2:"၂",3:"၃",4:"၄",5:"၅",6:"၆",7:"၇",8:"၈",9:"၉",0:"၀"},n={"၁":"1","၂":"2","၃":"3","၄":"4","၅":"5","၆":"6","၇":"7","၈":"8","၉":"9","၀":"0"};e.defineLocale("my",{months:"ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ".split("_"),monthsShort:"ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ".split("_"),weekdays:"တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ".split("_"),weekdaysShort:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),weekdaysMin:"နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ယနေ.] LT [မှာ]",nextDay:"[မနက်ဖြန်] LT [မှာ]",nextWeek:"dddd LT [မှာ]",lastDay:"[မနေ.က] LT [မှာ]",lastWeek:"[ပြီးခဲ့သော] dddd LT [မှာ]",sameElse:"L"},relativeTime:{future:"လာမည့် %s မှာ",past:"လွန်ခဲ့သော %s က",s:"စက္ကန်.အနည်းငယ်",ss:"%d စက္ကန့်",m:"တစ်မိနစ်",mm:"%d မိနစ်",h:"တစ်နာရီ",hh:"%d နာရီ",d:"တစ်ရက်",dd:"%d ရက်",M:"တစ်လ",MM:"%d လ",y:"တစ်နှစ်",yy:"%d နှစ်"},preparse:function(e){return e.replace(/[၁၂၃၄၅၆၇၈၉၀]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},n={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"};e.defineLocale("ne",{months:"जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर".split("_"),monthsShort:"जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.".split("_"),monthsParseExact:!0,weekdays:"आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार".split("_"),weekdaysShort:"आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.".split("_"),weekdaysMin:"आ._सो._मं._बु._बि._शु._श.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"Aको h:mm बजे",LTS:"Aको h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, Aको h:mm बजे",LLLL:"dddd, D MMMM YYYY, Aको h:mm बजे"},preparse:function(e){return e.replace(/[१२३४५६७८९०]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/राति|बिहान|दिउँसो|साँझ/,meridiemHour:function(e,t){return 12===e&&(e=0),"राति"===t?e<4?e:e+12:"बिहान"===t?e:"दिउँसो"===t?e>=10?e:e+12:"साँझ"===t?e+12:void 0},meridiem:function(e,t,n){return e<3?"राति":e<12?"बिहान":e<16?"दिउँसो":e<20?"साँझ":"राति"},calendar:{sameDay:"[आज] LT",nextDay:"[भोलि] LT",nextWeek:"[आउँदो] dddd[,] LT",lastDay:"[हिजो] LT",lastWeek:"[गएको] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%sमा",past:"%s अगाडि",s:"केही क्षण",ss:"%d सेकेण्ड",m:"एक मिनेट",mm:"%d मिनेट",h:"एक घण्टा",hh:"%d घण्टा",d:"एक दिन",dd:"%d दिन",M:"एक महिना",MM:"%d महिना",y:"एक बर्ष",yy:"%d बर्ष"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),r=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],i=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),r=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],i=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;e.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,r){return e?/-MMM-/.test(r)?n[e.month()]:t[e.month()]:t},monthsRegex:i,monthsShortRegex:i,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:r,longMonthsParse:r,shortMonthsParse:r,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||e>=20?"ste":"de")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_mån_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_må_ty_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I går klokka] LT",lastWeek:"[Føregåande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein månad",MM:"%d månader",y:"eit år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"੧",2:"੨",3:"੩",4:"੪",5:"੫",6:"੬",7:"੭",8:"੮",9:"੯",0:"੦"},n={"੧":"1","੨":"2","੩":"3","੪":"4","੫":"5","੬":"6","੭":"7","੮":"8","੯":"9","੦":"0"};e.defineLocale("pa-in",{months:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),monthsShort:"ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ".split("_"),weekdays:"ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ".split("_"),weekdaysShort:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),weekdaysMin:"ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ".split("_"),longDateFormat:{LT:"A h:mm ਵਜੇ",LTS:"A h:mm:ss ਵਜੇ",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm ਵਜੇ",LLLL:"dddd, D MMMM YYYY, A h:mm ਵਜੇ"},calendar:{sameDay:"[ਅਜ] LT",nextDay:"[ਕਲ] LT",nextWeek:"[ਅਗਲਾ] dddd, LT",lastDay:"[ਕਲ] LT",lastWeek:"[ਪਿਛਲੇ] dddd, LT",sameElse:"L"},relativeTime:{future:"%s ਵਿੱਚ",past:"%s ਪਿਛਲੇ",s:"ਕੁਝ ਸਕਿੰਟ",ss:"%d ਸਕਿੰਟ",m:"ਇਕ ਮਿੰਟ",mm:"%d ਮਿੰਟ",h:"ਇੱਕ ਘੰਟਾ",hh:"%d ਘੰਟੇ",d:"ਇੱਕ ਦਿਨ",dd:"%d ਦਿਨ",M:"ਇੱਕ ਮਹੀਨਾ",MM:"%d ਮਹੀਨੇ",y:"ਇੱਕ ਸਾਲ",yy:"%d ਸਾਲ"},preparse:function(e){return e.replace(/[੧੨੩੪੫੬੭੮੯੦]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,meridiemHour:function(e,t){return 12===e&&(e=0),"ਰਾਤ"===t?e<4?e:e+12:"ਸਵੇਰ"===t?e:"ਦੁਪਹਿਰ"===t?e>=10?e:e+12:"ਸ਼ਾਮ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"ਰਾਤ":e<10?"ਸਵੇਰ":e<17?"ਦੁਪਹਿਰ":e<20?"ਸ਼ਾਮ":"ਰਾਤ"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_");function r(e){return e%10<5&&e%10>1&&~~(e/10)%10!=1}function i(e,t,n){var i=e+" ";switch(n){case"ss":return i+(r(e)?"sekundy":"sekund");case"m":return t?"minuta":"minutę";case"mm":return i+(r(e)?"minuty":"minut");case"h":return t?"godzina":"godzinę";case"hh":return i+(r(e)?"godziny":"godzin");case"MM":return i+(r(e)?"miesiące":"miesięcy");case"yy":return i+(r(e)?"lata":"lat")}}e.defineLocale("pl",{months:function(e,r){return e?""===r?"("+n[e.month()]+"|"+t[e.month()]+")":/D MMMM/.test(r)?n[e.month()]:t[e.month()]:t},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_śr_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedzielę o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W środę o] LT";case 6:return"[W sobotę o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:i,m:i,mm:i,h:i,hh:i,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:i,y:"rok",yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Do_2ª_3ª_4ª_5ª_6ª_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}º/,ordinal:"%dº"})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r=" ";return(e%100>=20||e>=100&&e%100==0)&&(r=" de "),e+r+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}e.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",ss:t,m:"un minut",mm:t,h:"o oră",hh:t,d:"o zi",dd:t,M:"o lună",MM:t,y:"un an",yy:t},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r,i;return"m"===n?t?"минута":"минуту":e+" "+(r=+e,i={ss:t?"секунда_секунды_секунд":"секунду_секунды_секунд",mm:t?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"}[n].split("_"),r%10==1&&r%100!=11?i[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?i[1]:i[2])}var n=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i];e.defineLocale("ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsShortRegex:/^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,monthsStrictRegex:/^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,monthsShortStrictRegex:/^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., H:mm",LLLL:"dddd, D MMMM YYYY г., H:mm"},calendar:{sameDay:"[Сегодня, в] LT",nextDay:"[Завтра, в] LT",lastDay:"[Вчера, в] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В следующее] dddd, [в] LT";case 1:case 2:case 4:return"[В следующий] dddd, [в] LT";case 3:case 5:case 6:return"[В следующую] dddd, [в] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[Во] dddd, [в] LT":"[В] dddd, [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd, [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd, [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd, [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",ss:t,m:t,mm:t,h:"час",hh:t,d:"день",dd:t,M:"месяц",MM:t,y:"год",yy:t},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(e){return/^(дня|вечера)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночи":e<12?"утра":e<17?"дня":"вечера"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":return e+"-й";case"D":return e+"-го";case"w":case"W":return e+"-я";default:return e}},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t=["جنوري","فيبروري","مارچ","اپريل","مئي","جون","جولاءِ","آگسٽ","سيپٽمبر","آڪٽوبر","نومبر","ڊسمبر"],n=["آچر","سومر","اڱارو","اربع","خميس","جمع","ڇنڇر"];e.defineLocale("sd",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[اڄ] LT",nextDay:"[سڀاڻي] LT",nextWeek:"dddd [اڳين هفتي تي] LT",lastDay:"[ڪالهه] LT",lastWeek:"[گزريل هفتي] dddd [تي] LT",sameElse:"L"},relativeTime:{future:"%s پوء",past:"%s اڳ",s:"چند سيڪنڊ",ss:"%d سيڪنڊ",m:"هڪ منٽ",mm:"%d منٽ",h:"هڪ ڪلاڪ",hh:"%d ڪلاڪ",d:"هڪ ڏينهن",dd:"%d ڏينهن",M:"هڪ مهينو",MM:"%d مهينا",y:"هڪ سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("se",{months:"ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu".split("_"),monthsShort:"ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov".split("_"),weekdays:"sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat".split("_"),weekdaysShort:"sotn_vuos_maŋ_gask_duor_bear_láv".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s geažes",past:"maŋit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta mánnu",MM:"%d mánut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("si",{months:"ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්".split("_"),monthsShort:"ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ".split("_"),weekdays:"ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා".split("_"),weekdaysShort:"ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන".split("_"),weekdaysMin:"ඉ_ස_අ_බ_බ්‍ර_සි_සෙ".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [වැනි] dddd, a h:mm:ss"},calendar:{sameDay:"[අද] LT[ට]",nextDay:"[හෙට] LT[ට]",nextWeek:"dddd LT[ට]",lastDay:"[ඊයේ] LT[ට]",lastWeek:"[පසුගිය] dddd LT[ට]",sameElse:"L"},relativeTime:{future:"%sකින්",past:"%sකට පෙර",s:"තත්පර කිහිපය",ss:"තත්පර %d",m:"මිනිත්තුව",mm:"මිනිත්තු %d",h:"පැය",hh:"පැය %d",d:"දිනය",dd:"දින %d",M:"මාසය",MM:"මාස %d",y:"වසර",yy:"වසර %d"},dayOfMonthOrdinalParse:/\d{1,2} වැනි/,ordinal:function(e){return e+" වැනි"},meridiemParse:/පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,isPM:function(e){return"ප.ව."===e||"පස් වරු"===e},meridiem:function(e,t,n){return e>11?n?"ප.ව.":"පස් වරු":n?"පෙ.ව.":"පෙර වරු"}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),n="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_");function r(e){return e>1&&e<5}function i(e,t,n,i){var a=e+" ";switch(n){case"s":return t||i?"pár sekúnd":"pár sekundami";case"ss":return t||i?a+(r(e)?"sekundy":"sekúnd"):a+"sekundami";case"m":return t?"minúta":i?"minútu":"minútou";case"mm":return t||i?a+(r(e)?"minúty":"minút"):a+"minútami";case"h":return t?"hodina":i?"hodinu":"hodinou";case"hh":return t||i?a+(r(e)?"hodiny":"hodín"):a+"hodinami";case"d":return t||i?"deň":"dňom";case"dd":return t||i?a+(r(e)?"dni":"dní"):a+"dňami";case"M":return t||i?"mesiac":"mesiacom";case"MM":return t||i?a+(r(e)?"mesiace":"mesiacov"):a+"mesiacmi";case"y":return t||i?"rok":"rokom";case"yy":return t||i?a+(r(e)?"roky":"rokov"):a+"rokmi"}}e.defineLocale("sk",{months:t,monthsShort:n,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var i=e+" ";switch(n){case"s":return t||r?"nekaj sekund":"nekaj sekundami";case"ss":return i+=1===e?t?"sekundo":"sekundi":2===e?t||r?"sekundi":"sekundah":e<5?t||r?"sekunde":"sekundah":"sekund";case"m":return t?"ena minuta":"eno minuto";case"mm":return i+=1===e?t?"minuta":"minuto":2===e?t||r?"minuti":"minutama":e<5?t||r?"minute":"minutami":t||r?"minut":"minutami";case"h":return t?"ena ura":"eno uro";case"hh":return i+=1===e?t?"ura":"uro":2===e?t||r?"uri":"urama":e<5?t||r?"ure":"urami":t||r?"ur":"urami";case"d":return t||r?"en dan":"enim dnem";case"dd":return i+=1===e?t||r?"dan":"dnem":2===e?t||r?"dni":"dnevoma":t||r?"dni":"dnevi";case"M":return t||r?"en mesec":"enim mesecem";case"MM":return i+=1===e?t||r?"mesec":"mesecem":2===e?t||r?"meseca":"mesecema":e<5?t||r?"mesece":"meseci":t||r?"mesecev":"meseci";case"y":return t||r?"eno leto":"enim letom";case"yy":return i+=1===e?t||r?"leto":"letom":2===e?t||r?"leti":"letoma":e<5?t||r?"leta":"leti":t||r?"let":"leti"}}e.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj".split("_"),weekdays:"E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë".split("_"),weekdaysShort:"Die_Hën_Mar_Mër_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_Më_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,t,n){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot në] LT",nextDay:"[Nesër në] LT",nextWeek:"dddd [në] LT",lastDay:"[Dje në] LT",lastWeek:"dddd [e kaluar në] LT",sameElse:"L"},relativeTime:{future:"në %s",past:"%s më parë",s:"disa sekonda",ss:"%d sekonda",m:"një minutë",mm:"%d minuta",h:"një orë",hh:"%d orë",d:"një ditë",dd:"%d ditë",M:"një muaj",MM:"%d muaj",y:"një vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var i=t.words[r];return 1===r.length?n?i[0]:i[1]:e+" "+t.correctGrammaticalCase(e,i)}};e.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){return["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"dan",dd:t.translate,M:"mesec",MM:t.translate,y:"godinu",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={words:{ss:["секунда","секунде","секунди"],m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(e,t){return 1===e?t[0]:e>=2&&e<=4?t[1]:t[2]},translate:function(e,n,r){var i=t.words[r];return 1===r.length?n?i[0]:i[1]:e+" "+t.correctGrammaticalCase(e,i)}};e.defineLocale("sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){return["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",ss:t.translate,m:t.translate,mm:t.translate,h:t.translate,hh:t.translate,d:"дан",dd:t.translate,M:"месец",MM:t.translate,y:"годину",yy:t.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,t,n){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,t){return 12===e&&(e=0),"ekuseni"===t?e:"emini"===t?e>=11?e:e+12:"entsambama"===t||"ebusuku"===t?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"e":1===t?"a":2===t?"a":"e")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"௧",2:"௨",3:"௩",4:"௪",5:"௫",6:"௬",7:"௭",8:"௮",9:"௯",0:"௦"},n={"௧":"1","௨":"2","௩":"3","௪":"4","௫":"5","௬":"6","௭":"7","௮":"8","௯":"9","௦":"0"};e.defineLocale("ta",{months:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),monthsShort:"ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்".split("_"),weekdays:"ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை".split("_"),weekdaysShort:"ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி".split("_"),weekdaysMin:"ஞா_தி_செ_பு_வி_வெ_ச".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[இன்று] LT",nextDay:"[நாளை] LT",nextWeek:"dddd, LT",lastDay:"[நேற்று] LT",lastWeek:"[கடந்த வாரம்] dddd, LT",sameElse:"L"},relativeTime:{future:"%s இல்",past:"%s முன்",s:"ஒரு சில விநாடிகள்",ss:"%d விநாடிகள்",m:"ஒரு நிமிடம்",mm:"%d நிமிடங்கள்",h:"ஒரு மணி நேரம்",hh:"%d மணி நேரம்",d:"ஒரு நாள்",dd:"%d நாட்கள்",M:"ஒரு மாதம்",MM:"%d மாதங்கள்",y:"ஒரு வருடம்",yy:"%d ஆண்டுகள்"},dayOfMonthOrdinalParse:/\d{1,2}வது/,ordinal:function(e){return e+"வது"},preparse:function(e){return e.replace(/[௧௨௩௪௫௬௭௮௯௦]/g,function(e){return n[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return t[e]})},meridiemParse:/யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,meridiem:function(e,t,n){return e<2?" யாமம்":e<6?" வைகறை":e<10?" காலை":e<14?" நண்பகல்":e<18?" எற்பாடு":e<22?" மாலை":" யாமம்"},meridiemHour:function(e,t){return 12===e&&(e=0),"யாமம்"===t?e<2?e:e+12:"வைகறை"===t||"காலை"===t?e:"நண்பகல்"===t&&e>=10?e:e+12},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("te",{months:"జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్".split("_"),monthsShort:"జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.".split("_"),monthsParseExact:!0,weekdays:"ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం".split("_"),weekdaysShort:"ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని".split("_"),weekdaysMin:"ఆ_సో_మం_బు_గు_శు_శ".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[నేడు] LT",nextDay:"[రేపు] LT",nextWeek:"dddd, LT",lastDay:"[నిన్న] LT",lastWeek:"[గత] dddd, LT",sameElse:"L"},relativeTime:{future:"%s లో",past:"%s క్రితం",s:"కొన్ని క్షణాలు",ss:"%d సెకన్లు",m:"ఒక నిమిషం",mm:"%d నిమిషాలు",h:"ఒక గంట",hh:"%d గంటలు",d:"ఒక రోజు",dd:"%d రోజులు",M:"ఒక నెల",MM:"%d నెలలు",y:"ఒక సంవత్సరం",yy:"%d సంవత్సరాలు"},dayOfMonthOrdinalParse:/\d{1,2}వ/,ordinal:"%dవ",meridiemParse:/రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,meridiemHour:function(e,t){return 12===e&&(e=0),"రాత్రి"===t?e<4?e:e+12:"ఉదయం"===t?e:"మధ్యాహ్నం"===t?e>=10?e:e+12:"సాయంత్రం"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"రాత్రి":e<10?"ఉదయం":e<17?"మధ్యాహ్నం":e<20?"సాయంత్రం":"రాత్రి"},week:{dow:0,doy:6}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={0:"-ум",1:"-ум",2:"-юм",3:"-юм",4:"-ум",5:"-ум",6:"-ум",7:"-ум",8:"-ум",9:"-ум",10:"-ум",12:"-ум",13:"-ум",20:"-ум",30:"-юм",40:"-ум",50:"-ум",60:"-ум",70:"-ум",80:"-ум",90:"-ум",100:"-ум"};e.defineLocale("tg",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе".split("_"),weekdaysShort:"яшб_дшб_сшб_чшб_пшб_ҷум_шнб".split("_"),weekdaysMin:"яш_дш_сш_чш_пш_ҷм_шб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Имрӯз соати] LT",nextDay:"[Пагоҳ соати] LT",lastDay:"[Дирӯз соати] LT",nextWeek:"dddd[и] [ҳафтаи оянда соати] LT",lastWeek:"dddd[и] [ҳафтаи гузашта соати] LT",sameElse:"L"},relativeTime:{future:"баъди %s",past:"%s пеш",s:"якчанд сония",m:"як дақиқа",mm:"%d дақиқа",h:"як соат",hh:"%d соат",d:"як рӯз",dd:"%d рӯз",M:"як моҳ",MM:"%d моҳ",y:"як сол",yy:"%d сол"},meridiemParse:/шаб|субҳ|рӯз|бегоҳ/,meridiemHour:function(e,t){return 12===e&&(e=0),"шаб"===t?e<4?e:e+12:"субҳ"===t?e:"рӯз"===t?e>=11?e:e+12:"бегоҳ"===t?e+12:void 0},meridiem:function(e,t,n){return e<4?"шаб":e<11?"субҳ":e<16?"рӯз":e<19?"бегоҳ":"шаб"},dayOfMonthOrdinalParse:/\d{1,2}-(ум|юм)/,ordinal:function(e){return e+(t[e]||t[e%10]||t[e>=100?100:null])},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H:mm",LLLL:"วันddddที่ D MMMM YYYY เวลา H:mm"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(e){return"หลังเที่ยง"===e},meridiem:function(e,t,n){return e<12?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",ss:"%d วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t="pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(e,n,r,i){var a=function(e){var n=Math.floor(e%1e3/100),r=Math.floor(e%100/10),i=e%10,a="";return n>0&&(a+=t[n]+"vatlh"),r>0&&(a+=(""!==a?" ":"")+t[r]+"maH"),i>0&&(a+=(""!==a?" ":"")+t[i]),""===a?"pagh":a}(e);switch(r){case"ss":return a+" lup";case"mm":return a+" tup";case"hh":return a+" rep";case"dd":return a+" jaj";case"MM":return a+" jar";case"yy":return a+" DIS"}}e.defineLocale("tlh",{months:"tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’".split("_"),monthsShort:"jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa’leS] LT",nextWeek:"LLL",lastDay:"[wa’Hu’] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"leS":-1!==e.indexOf("jar")?t.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?t.slice(0,-3)+"nem":t+" pIq"},past:function(e){var t=e;return t=-1!==e.indexOf("jaj")?t.slice(0,-3)+"Hu’":-1!==e.indexOf("jar")?t.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?t.slice(0,-3)+"ben":t+" ret"},s:"puS lup",ss:n,m:"wa’ tup",mm:n,h:"wa’ rep",hh:n,d:"wa’ jaj",dd:n,M:"wa’ jar",MM:n,y:"wa’ DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";var t={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"};e.defineLocale("tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinal:function(e,n){switch(n){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'ıncı";var r=e%10;return e+(t[r]||t[e%100-r]||t[e>=100?100:null])}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n,r){var i={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n míut","'iens míut"],mm:[e+" míuts",e+" míuts"],h:["'n þora","'iensa þora"],hh:[e+" þoras",e+" þoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return r?i[n][0]:t?i[n][0]:i[n][1]}e.defineLocale("tzl",{months:"Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi".split("_"),weekdaysShort:"Súl_Lún_Mai_Már_Xhú_Vié_Sát".split("_"),weekdaysMin:"Sú_Lú_Ma_Má_Xh_Vi_Sá".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,t,n){return e>11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi à] LT",nextDay:"[demà à] LT",nextWeek:"dddd [à] LT",lastDay:"[ieiri à] LT",lastWeek:"[sür el] dddd [lasteu à] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:t,ss:t,m:t,mm:t,h:t,hh:t,d:t,dd:t,M:t,MM:t,y:t,yy:t},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tzm",{months:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),monthsShort:"ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ".split("_"),weekdays:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysShort:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),weekdaysMin:"ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[ⴰⵙⴷⵅ ⴴ] LT",nextDay:"[ⴰⵙⴽⴰ ⴴ] LT",nextWeek:"dddd [ⴴ] LT",lastDay:"[ⴰⵚⴰⵏⵜ ⴴ] LT",lastWeek:"dddd [ⴴ] LT",sameElse:"L"},relativeTime:{future:"ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s",past:"ⵢⴰⵏ %s",s:"ⵉⵎⵉⴽ",ss:"%d ⵉⵎⵉⴽ",m:"ⵎⵉⵏⵓⴺ",mm:"%d ⵎⵉⵏⵓⴺ",h:"ⵙⴰⵄⴰ",hh:"%d ⵜⴰⵙⵙⴰⵄⵉⵏ",d:"ⴰⵙⵙ",dd:"%d oⵙⵙⴰⵏ",M:"ⴰⵢoⵓⵔ",MM:"%d ⵉⵢⵢⵉⵔⵏ",y:"ⴰⵙⴳⴰⵙ",yy:"%d ⵉⵙⴳⴰⵙⵏ"},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("tzm-latn",{months:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minuḍ",mm:"%d minuḍ",h:"saɛa",hh:"%d tassaɛin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("ug-cn",{months:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),monthsShort:"يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر".split("_"),weekdays:"يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە".split("_"),weekdaysShort:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),weekdaysMin:"يە_دۈ_سە_چا_پە_جۈ_شە".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-يىلىM-ئاينىڭD-كۈنى",LLL:"YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm",LLLL:"dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm"},meridiemParse:/يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,meridiemHour:function(e,t){return 12===e&&(e=0),"يېرىم كېچە"===t||"سەھەر"===t||"چۈشتىن بۇرۇن"===t?e:"چۈشتىن كېيىن"===t||"كەچ"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var r=100*e+t;return r<600?"يېرىم كېچە":r<900?"سەھەر":r<1130?"چۈشتىن بۇرۇن":r<1230?"چۈش":r<1800?"چۈشتىن كېيىن":"كەچ"},calendar:{sameDay:"[بۈگۈن سائەت] LT",nextDay:"[ئەتە سائەت] LT",nextWeek:"[كېلەركى] dddd [سائەت] LT",lastDay:"[تۆنۈگۈن] LT",lastWeek:"[ئالدىنقى] dddd [سائەت] LT",sameElse:"L"},relativeTime:{future:"%s كېيىن",past:"%s بۇرۇن",s:"نەچچە سېكونت",ss:"%d سېكونت",m:"بىر مىنۇت",mm:"%d مىنۇت",h:"بىر سائەت",hh:"%d سائەت",d:"بىر كۈن",dd:"%d كۈن",M:"بىر ئاي",MM:"%d ئاي",y:"بىر يىل",yy:"%d يىل"},dayOfMonthOrdinalParse:/\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"-كۈنى";case"w":case"W":return e+"-ھەپتە";default:return e}},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";function t(e,t,n){var r,i;return"m"===n?t?"хвилина":"хвилину":"h"===n?t?"година":"годину":e+" "+(r=+e,i={ss:t?"секунда_секунди_секунд":"секунду_секунди_секунд",mm:t?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:t?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"}[n].split("_"),r%10==1&&r%100!=11?i[0]:r%10>=2&&r%10<=4&&(r%100<10||r%100>=20)?i[1]:i[2])}function n(e){return function(){return e+"о"+(11===this.hours()?"б":"")+"] LT"}}e.defineLocale("uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:function(e,t){var n={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")};return!0===e?n.nominative.slice(1,7).concat(n.nominative.slice(0,1)):e?n[/(\[[ВвУу]\]) ?dddd/.test(t)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(t)?"genitive":"nominative"][e.day()]:n.nominative},weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:n("[Сьогодні "),nextDay:n("[Завтра "),lastDay:n("[Вчора "),nextWeek:n("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[Минулої] dddd [").call(this);case 1:case 2:case 4:return n("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",ss:t,m:t,mm:t,h:"годину",hh:t,d:"день",dd:t,M:"місяць",MM:t,y:"рік",yy:t},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(e){return/^(дня|вечора)$/.test(e)},meridiem:function(e,t,n){return e<4?"ночі":e<12?"ранку":e<17?"дня":"вечора"},dayOfMonthOrdinalParse:/\d{1,2}-(й|го)/,ordinal:function(e,t){switch(t){case"M":case"d":case"DDD":case"w":case"W":return e+"-й";case"D":return e+"-го";default:return e}},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";var t=["جنوری","فروری","مارچ","اپریل","مئی","جون","جولائی","اگست","ستمبر","اکتوبر","نومبر","دسمبر"],n=["اتوار","پیر","منگل","بدھ","جمعرات","جمعہ","ہفتہ"];e.defineLocale("ur",{months:t,monthsShort:t,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd، D MMMM YYYY HH:mm"},meridiemParse:/صبح|شام/,isPM:function(e){return"شام"===e},meridiem:function(e,t,n){return e<12?"صبح":"شام"},calendar:{sameDay:"[آج بوقت] LT",nextDay:"[کل بوقت] LT",nextWeek:"dddd [بوقت] LT",lastDay:"[گذشتہ روز بوقت] LT",lastWeek:"[گذشتہ] dddd [بوقت] LT",sameElse:"L"},relativeTime:{future:"%s بعد",past:"%s قبل",s:"چند سیکنڈ",ss:"%d سیکنڈ",m:"ایک منٹ",mm:"%d منٹ",h:"ایک گھنٹہ",hh:"%d گھنٹے",d:"ایک دن",dd:"%d دن",M:"ایک ماہ",MM:"%d ماہ",y:"ایک سال",yy:"%d سال"},preparse:function(e){return e.replace(/،/g,",")},postformat:function(e){return e.replace(/,/g,"،")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("uz",{months:"январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр".split("_"),monthsShort:"янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек".split("_"),weekdays:"Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба".split("_"),weekdaysShort:"Якш_Душ_Сеш_Чор_Пай_Жум_Шан".split("_"),weekdaysMin:"Як_Ду_Се_Чо_Па_Жу_Ша".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Бугун соат] LT [да]",nextDay:"[Эртага] LT [да]",nextWeek:"dddd [куни соат] LT [да]",lastDay:"[Кеча соат] LT [да]",lastWeek:"[Утган] dddd [куни соат] LT [да]",sameElse:"L"},relativeTime:{future:"Якин %s ичида",past:"Бир неча %s олдин",s:"фурсат",ss:"%d фурсат",m:"бир дакика",mm:"%d дакика",h:"бир соат",hh:"%d соат",d:"бир кун",dd:"%d кун",M:"бир ой",MM:"%d ой",y:"бир йил",yy:"%d йил"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,t,n){return e<12?n?"sa":"SA":n?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",ss:"%d giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("x-pseudo",{months:"J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér".split("_"),monthsShort:"J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc".split("_"),monthsParseExact:!0,weekdays:"S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý".split("_"),weekdaysShort:"S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát".split("_"),weekdaysMin:"S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~ódá~ý át] LT",nextDay:"[T~ómó~rró~w át] LT",nextWeek:"dddd [át] LT",lastDay:"[Ý~ést~érdá~ý át] LT",lastWeek:"[L~ást] dddd [át] LT",sameElse:"L"},relativeTime:{future:"í~ñ %s",past:"%s á~gó",s:"á ~féw ~sécó~ñds",ss:"%d s~écóñ~ds",m:"á ~míñ~úté",mm:"%d m~íñú~tés",h:"á~ñ hó~úr",hh:"%d h~óúrs",d:"á ~dáý",dd:"%d d~áýs",M:"á ~móñ~th",MM:"%d m~óñt~hs",y:"á ~ýéár",yy:"%d ý~éárs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1==~~(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("yo",{months:"Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀".split("_"),monthsShort:"Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀".split("_"),weekdays:"Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta".split("_"),weekdaysShort:"Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá".split("_"),weekdaysMin:"Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Ònì ni] LT",nextDay:"[Ọ̀la ni] LT",nextWeek:"dddd [Ọsẹ̀ tón'bọ] [ni] LT",lastDay:"[Àna ni] LT",lastWeek:"dddd [Ọsẹ̀ tólọ́] [ni] LT",sameElse:"L"},relativeTime:{future:"ní %s",past:"%s kọjá",s:"ìsẹjú aayá die",ss:"aayá %d",m:"ìsẹjú kan",mm:"ìsẹjú %d",h:"wákati kan",hh:"wákati %d",d:"ọjọ́ kan",dd:"ọjọ́ %d",M:"osù kan",MM:"osù %d",y:"ọdún kan",yy:"ọdún %d"},dayOfMonthOrdinalParse:/ọjọ́\s\d{1,2}/,ordinal:"ọjọ́ %d",week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"下午"===t||"晚上"===t?e+12:e>=11?e:e+12},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|周)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"周";default:return e}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",ss:"%d 秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("zh-hk",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(1))},function(e,t,n){!function(e){"use strict";e.defineLocale("zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日 HH:mm",LLLL:"YYYY年M月D日dddd HH:mm",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(e,t){return 12===e&&(e=0),"凌晨"===t||"早上"===t||"上午"===t?e:"中午"===t?e>=11?e:e+12:"下午"===t||"晚上"===t?e+12:void 0},meridiem:function(e,t,n){var r=100*e+t;return r<600?"凌晨":r<900?"早上":r<1130?"上午":r<1230?"中午":r<1800?"下午":"晚上"},calendar:{sameDay:"[今天] LT",nextDay:"[明天] LT",nextWeek:"[下]dddd LT",lastDay:"[昨天] LT",lastWeek:"[上]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(日|月|週)/,ordinal:function(e,t){switch(t){case"d":case"D":case"DDD":return e+"日";case"M":return e+"月";case"w":case"W":return e+"週";default:return e}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",ss:"%d 秒",m:"1 分鐘",mm:"%d 分鐘",h:"1 小時",hh:"%d 小時",d:"1 天",dd:"%d 天",M:"1 個月",MM:"%d 個月",y:"1 年",yy:"%d 年"}})}(n(1))},function(e,t,n){"use strict";function r(e){var t,n=e.Symbol;return"function"==typeof n?n.observable?t=n.observable:(t=n("observable"),n.observable=t):t="@@observable",t}n.d(t,"a",function(){return r})},function(e,t,n){"use strict";function r(e,t){return e===t}function i(e,t,n){if(null===t||null===n||t.length!==n.length)return!1;for(var r=t.length,i=0;i1&&void 0!==arguments[1]?arguments[1]:r,n=null,a=null;return function(){return i(t,n,arguments)||(a=e.apply(null,arguments)),n=arguments,a}}function o(e){var t=Array.isArray(e[0])?e[0]:e;if(!t.every(function(e){return"function"==typeof e})){var n=t.map(function(e){return typeof e}).join(", ");throw new Error("Selector creators expect all input-selectors to be functions, instead received the following types: ["+n+"]")}return t}function s(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:l;if("object"!=typeof e)throw new Error("createStructuredSelector expects first argument to be an object where each property is a selector, instead received a "+typeof e);var n=Object.keys(e);return t(n.map(function(t){return e[t]}),function(){for(var e=arguments.length,t=Array(e),r=0;r=0){i=1;break}var o=n&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},i))}};function s(e){return e&&"[object Function]"==={}.toString.call(e)}function l(e,t){if(1!==e.nodeType)return[];var n=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?n[t]:n}function u(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function c(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=l(e),n=t.overflow,r=t.overflowX,i=t.overflowY;return/(auto|scroll|overlay)/.test(n+i+r)?e:c(u(e))}var d=n&&!(!window.MSInputMethodContext||!document.documentMode),f=n&&/MSIE 10/.test(navigator.userAgent);function p(e){return 11===e?d:10===e?f:d||f}function h(e){if(!e)return document.documentElement;for(var t=p(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var r=n&&n.nodeName;return r&&"BODY"!==r&&"HTML"!==r?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===l(n,"position")?h(n):n:e?e.ownerDocument.documentElement:document.documentElement}function m(e){return null!==e.parentNode?m(e.parentNode):e}function _(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?e:t,i=n?t:e,a=document.createRange();a.setStart(r,0),a.setEnd(i,0);var o,s,l=a.commonAncestorContainer;if(e!==l&&t!==l||r.contains(i))return"BODY"===(s=(o=l).nodeName)||"HTML"!==s&&h(o.firstElementChild)!==o?h(l):l;var u=m(e);return u.host?_(u.host,t):_(e,m(t).host)}function g(e){var t="top"===(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top")?"scrollTop":"scrollLeft",n=e.nodeName;if("BODY"===n||"HTML"===n){var r=e.ownerDocument.documentElement;return(e.ownerDocument.scrollingElement||r)[t]}return e[t]}function y(e,t){var n="x"===t?"Left":"Top",r="Left"===n?"Right":"Bottom";return parseFloat(e["border"+n+"Width"],10)+parseFloat(e["border"+r+"Width"],10)}function v(e,t,n,r){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],p(10)?parseInt(n["offset"+e])+parseInt(r["margin"+("Height"===e?"Top":"Left")])+parseInt(r["margin"+("Height"===e?"Bottom":"Right")]):0)}function b(e){var t=e.body,n=e.documentElement,r=p(10)&&getComputedStyle(n);return{height:v("Height",t,n,r),width:v("Width",t,n,r)}}var w=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},M=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],r=p(10),i="HTML"===t.nodeName,a=T(e),o=T(t),s=c(e),u=l(t),d=parseFloat(u.borderTopWidth,10),f=parseFloat(u.borderLeftWidth,10);n&&i&&(o.top=Math.max(o.top,0),o.left=Math.max(o.left,0));var h=x({top:a.top-o.top-d,left:a.left-o.left-f,width:a.width,height:a.height});if(h.marginTop=0,h.marginLeft=0,!r&&i){var m=parseFloat(u.marginTop,10),_=parseFloat(u.marginLeft,10);h.top-=d-m,h.bottom-=d-m,h.left-=f-_,h.right-=f-_,h.marginTop=m,h.marginLeft=_}return(r&&!n?t.contains(s):t===s&&"BODY"!==s.nodeName)&&(h=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=g(t,"top"),i=g(t,"left"),a=n?-1:1;return e.top+=r*a,e.bottom+=r*a,e.left+=i*a,e.right+=i*a,e}(h,t)),h}function D(e){if(!e||!e.parentElement||p())return document.documentElement;for(var t=e.parentElement;t&&"none"===l(t,"transform");)t=t.parentElement;return t||document.documentElement}function E(e,t,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4],a={top:0,left:0},o=i?D(e):_(e,t);if("viewport"===r)a=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.ownerDocument.documentElement,r=S(e,n),i=Math.max(n.clientWidth,window.innerWidth||0),a=Math.max(n.clientHeight,window.innerHeight||0),o=t?0:g(n),s=t?0:g(n,"left");return x({top:o-r.top+r.marginTop,left:s-r.left+r.marginLeft,width:i,height:a})}(o,i);else{var s=void 0;"scrollParent"===r?"BODY"===(s=c(u(t))).nodeName&&(s=e.ownerDocument.documentElement):s="window"===r?e.ownerDocument.documentElement:r;var d=S(s,o,i);if("HTML"!==s.nodeName||function e(t){var n=t.nodeName;if("BODY"===n||"HTML"===n)return!1;if("fixed"===l(t,"position"))return!0;var r=u(t);return!!r&&e(r)}(o))a=d;else{var f=b(e.ownerDocument),p=f.height,h=f.width;a.top+=d.top-d.marginTop,a.bottom=p+d.top,a.left+=d.left-d.marginLeft,a.right=h+d.left}}var m="number"==typeof(n=n||0);return a.left+=m?n:n.left||0,a.top+=m?n:n.top||0,a.right-=m?n:n.right||0,a.bottom-=m?n:n.bottom||0,a}function Y(e,t,n,r,i){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var o=E(n,r,a,i),s={top:{width:o.width,height:t.top-o.top},right:{width:o.right-t.right,height:o.height},bottom:{width:o.width,height:o.bottom-t.bottom},left:{width:t.left-o.left,height:o.height}},l=Object.keys(s).map(function(e){return L({key:e},s[e],{area:(t=s[e],t.width*t.height)});var t}).sort(function(e,t){return t.area-e.area}),u=l.filter(function(e){var t=e.width,r=e.height;return t>=n.clientWidth&&r>=n.clientHeight}),c=u.length>0?u[0].key:l[0].key,d=e.split("-")[1];return c+(d?"-"+d:"")}function C(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return S(n,r?D(t):_(t,n),r)}function O(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),n=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),r=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+r,height:e.offsetHeight+n}}function P(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function j(e,t,n){n=n.split("-")[0];var r=O(e),i={width:r.width,height:r.height},a=-1!==["right","left"].indexOf(n),o=a?"top":"left",s=a?"left":"top",l=a?"height":"width",u=a?"width":"height";return i[o]=t[o]+t[l]/2-r[l]/2,i[s]=n===s?t[s]-r[u]:t[P(s)],i}function A(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function H(e,t,n){return(void 0===n?e:e.slice(0,function(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===n});var r=A(e,function(e){return e[t]===n});return e.indexOf(r)}(e,"name",n))).forEach(function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&s(n)&&(t.offsets.popper=x(t.offsets.popper),t.offsets.reference=x(t.offsets.reference),t=n(t,e))}),t}function F(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=C(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=Y(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=j(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=H(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function N(e,t){return e.some(function(e){var n=e.name;return e.enabled&&n===t})}function R(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),r=0;r1&&void 0!==arguments[1]&&arguments[1],n=K.indexOf(e),r=K.slice(n+1).concat(K.slice(0,n));return t?r.reverse():r}var Q={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Z(e,t,n,r){var i=[0,0],a=-1!==["right","left"].indexOf(r),o=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=o.indexOf(A(o,function(e){return-1!==e.search(/,|\s/)}));o[s]&&-1===o[s].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=-1!==s?[o.slice(0,s).concat([o[s].split(l)[0]]),[o[s].split(l)[1]].concat(o.slice(s+1))]:[o];return(u=u.map(function(e,r){var i=(1===r?!a:a)?"height":"width",o=!1;return e.reduce(function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,o=!0,e):o?(e[e.length-1]+=t,o=!1,e):e.concat(t)},[]).map(function(e){return function(e,t,n,r){var i=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),a=+i[1],o=i[2];if(!a)return e;if(0===o.indexOf("%")){var s=void 0;switch(o){case"%p":s=n;break;case"%":case"%r":default:s=r}return x(s)[t]/100*a}if("vh"===o||"vw"===o){return("vh"===o?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*a}return a}(e,i,t,n)})})).forEach(function(e,t){e.forEach(function(n,r){V(n)&&(i[t]+=n*("-"===e[r-1]?-1:1))})}),i}var ee={placement:"bottom",positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,n=t.split("-")[0],r=t.split("-")[1];if(r){var i=e.offsets,a=i.reference,o=i.popper,s=-1!==["bottom","top"].indexOf(n),l=s?"left":"top",u=s?"width":"height",c={start:k({},l,a[l]),end:k({},l,a[l]+a[u]-o[u])};e.offsets.popper=L({},o,c[r])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var n=t.offset,r=e.placement,i=e.offsets,a=i.popper,o=i.reference,s=r.split("-")[0],l=void 0;return l=V(+n)?[+n,0]:Z(n,a,o,s),"left"===s?(a.top+=l[0],a.left-=l[1]):"right"===s?(a.top+=l[0],a.left+=l[1]):"top"===s?(a.left+=l[0],a.top-=l[1]):"bottom"===s&&(a.left+=l[0],a.top+=l[1]),e.popper=a,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var n=t.boundariesElement||h(e.instance.popper);e.instance.reference===n&&(n=h(n));var r=R("transform"),i=e.instance.popper.style,a=i.top,o=i.left,s=i[r];i.top="",i.left="",i[r]="";var l=E(e.instance.popper,e.instance.reference,t.padding,n,e.positionFixed);i.top=a,i.left=o,i[r]=s,t.boundaries=l;var u=t.priority,c=e.offsets.popper,d={primary:function(e){var n=c[e];return c[e]l[e]&&!t.escapeWithReference&&(r=Math.min(c[n],l[e]-("right"===e?c.width:c.height))),k({},n,r)}};return u.forEach(function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";c=L({},c,d[t](e))}),e.offsets.popper=c,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,r=t.reference,i=e.placement.split("-")[0],a=Math.floor,o=-1!==["top","bottom"].indexOf(i),s=o?"right":"bottom",l=o?"left":"top",u=o?"width":"height";return n[s]a(r[s])&&(e.offsets.popper[l]=a(r[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!$(e.instance.modifiers,"arrow","keepTogether"))return e;var r=t.element;if("string"==typeof r){if(!(r=e.instance.popper.querySelector(r)))return e}else if(!e.instance.popper.contains(r))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var i=e.placement.split("-")[0],a=e.offsets,o=a.popper,s=a.reference,u=-1!==["left","right"].indexOf(i),c=u?"height":"width",d=u?"Top":"Left",f=d.toLowerCase(),p=u?"left":"top",h=u?"bottom":"right",m=O(r)[c];s[h]-mo[h]&&(e.offsets.popper[f]+=s[f]+m-o[h]),e.offsets.popper=x(e.offsets.popper);var _=s[f]+s[c]/2-m/2,g=l(e.instance.popper),y=parseFloat(g["margin"+d],10),v=parseFloat(g["border"+d+"Width"],10),b=_-e.offsets.popper[f]-y-v;return b=Math.max(Math.min(o[c]-m,b),0),e.arrowElement=r,e.offsets.arrow=(k(n={},f,Math.round(b)),k(n,p,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(e,t){if(N(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=E(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),r=e.placement.split("-")[0],i=P(r),a=e.placement.split("-")[1]||"",o=[];switch(t.behavior){case Q.FLIP:o=[r,i];break;case Q.CLOCKWISE:o=X(r);break;case Q.COUNTERCLOCKWISE:o=X(r,!0);break;default:o=t.behavior}return o.forEach(function(s,l){if(r!==s||o.length===l+1)return e;r=e.placement.split("-")[0],i=P(r);var u=e.offsets.popper,c=e.offsets.reference,d=Math.floor,f="left"===r&&d(u.right)>d(c.left)||"right"===r&&d(u.left)d(c.top)||"bottom"===r&&d(u.top)d(n.right),m=d(u.top)d(n.bottom),g="left"===r&&p||"right"===r&&h||"top"===r&&m||"bottom"===r&&_,y=-1!==["top","bottom"].indexOf(r),v=!!t.flipVariations&&(y&&"start"===a&&p||y&&"end"===a&&h||!y&&"start"===a&&m||!y&&"end"===a&&_),b=!!t.flipVariationsByContent&&(y&&"start"===a&&h||y&&"end"===a&&p||!y&&"start"===a&&_||!y&&"end"===a&&m),w=v||b;(f||g||w)&&(e.flipped=!0,(f||g)&&(r=o[l+1]),w&&(a=function(e){return"end"===e?"start":"start"===e?"end":e}(a)),e.placement=r+(a?"-"+a:""),e.offsets.popper=L({},e.offsets.popper,j(e.instance.popper,e.offsets.reference,e.placement)),e=H(e.instance.modifiers,e,"flip"))}),e},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],r=e.offsets,i=r.popper,a=r.reference,o=-1!==["left","right"].indexOf(n),s=-1===["top","left"].indexOf(n);return i[o?"left":"top"]=a[n]-(s?i[o?"width":"height"]:0),e.placement=P(t),e.offsets.popper=x(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!$(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=A(e.instance.modifiers,function(e){return"preventOverflow"===e.name}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right2&&void 0!==arguments[2]?arguments[2]:{};w(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=o(this.update.bind(this)),this.options=L({},e.Defaults,i),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(L({},e.Defaults.modifiers,i.modifiers)).forEach(function(t){r.options.modifiers[t]=L({},e.Defaults.modifiers[t]||{},i.modifiers?i.modifiers[t]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return L({name:e},r.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(e){e.enabled&&s(e.onLoad)&&e.onLoad(r.reference,r.popper,r.options,e,r.state)}),this.update();var a=this.options.eventsEnabled;a&&this.enableEventListeners(),this.state.eventsEnabled=a}return M(e,[{key:"update",value:function(){return F.call(this)}},{key:"destroy",value:function(){return I.call(this)}},{key:"enableEventListeners",value:function(){return U.call(this)}},{key:"disableEventListeners",value:function(){return B.call(this)}}]),e}();te.Utils=("undefined"!=typeof window?window:e).PopperUtils,te.placements=J,te.Defaults=ee,t.a=te}).call(this,n(16))},,,,function(e,t,n){e.exports=n(228)},function(e,t,n){"use strict"; +/** @license React v16.9.0 + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var r=n(23),i="function"==typeof Symbol&&Symbol.for,a=i?Symbol.for("react.element"):60103,o=i?Symbol.for("react.portal"):60106,s=i?Symbol.for("react.fragment"):60107,l=i?Symbol.for("react.strict_mode"):60108,u=i?Symbol.for("react.profiler"):60114,c=i?Symbol.for("react.provider"):60109,d=i?Symbol.for("react.context"):60110,f=i?Symbol.for("react.forward_ref"):60112,p=i?Symbol.for("react.suspense"):60113,h=i?Symbol.for("react.suspense_list"):60120,m=i?Symbol.for("react.memo"):60115,_=i?Symbol.for("react.lazy"):60116;i&&Symbol.for("react.fundamental"),i&&Symbol.for("react.responder");var g="function"==typeof Symbol&&Symbol.iterator;function y(e){for(var t=e.message,n="https://reactjs.org/docs/error-decoder.html?invariant="+t,r=1;rP.length&&P.push(e)}function H(e,t,n){return null==e?0:function e(t,n,r,i){var s=typeof t;"undefined"!==s&&"boolean"!==s||(t=null);var l=!1;if(null===t)l=!0;else switch(s){case"string":case"number":l=!0;break;case"object":switch(t.$$typeof){case a:case o:l=!0}}if(l)return r(i,t,""===n?"."+F(t,0):n),1;if(l=0,n=""===n?".":n+":",Array.isArray(t))for(var u=0;uthis.eventPool.length&&this.eventPool.push(e)}function fe(e){e.eventPool=[],e.getPooled=ce,e.release=de}i(ue.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():"unknown"!=typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=se)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():"unknown"!=typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=se)},persist:function(){this.isPersistent=se},isPersistent:le,destructor:function(){var e,t=this.constructor.Interface;for(e in t)this[e]=null;this.nativeEvent=this._targetInst=this.dispatchConfig=null,this.isPropagationStopped=this.isDefaultPrevented=le,this._dispatchInstances=this._dispatchListeners=null}}),ue.Interface={type:null,target:null,currentTarget:function(){return null},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:null,isTrusted:null},ue.extend=function(e){function t(){}function n(){return r.apply(this,arguments)}var r=this;t.prototype=r.prototype;var a=new t;return i(a,n.prototype),n.prototype=a,n.prototype.constructor=n,n.Interface=i({},r.Interface,e),n.extend=r.extend,fe(n),n},fe(ue);var pe=ue.extend({data:null}),he=ue.extend({data:null}),me=[9,13,27,32],_e=q&&"CompositionEvent"in window,ge=null;q&&"documentMode"in document&&(ge=document.documentMode);var ye=q&&"TextEvent"in window&&!ge,ve=q&&(!_e||ge&&8=ge),be=String.fromCharCode(32),we={beforeInput:{phasedRegistrationNames:{bubbled:"onBeforeInput",captured:"onBeforeInputCapture"},dependencies:["compositionend","keypress","textInput","paste"]},compositionEnd:{phasedRegistrationNames:{bubbled:"onCompositionEnd",captured:"onCompositionEndCapture"},dependencies:"blur compositionend keydown keypress keyup mousedown".split(" ")},compositionStart:{phasedRegistrationNames:{bubbled:"onCompositionStart",captured:"onCompositionStartCapture"},dependencies:"blur compositionstart keydown keypress keyup mousedown".split(" ")},compositionUpdate:{phasedRegistrationNames:{bubbled:"onCompositionUpdate",captured:"onCompositionUpdateCapture"},dependencies:"blur compositionupdate keydown keypress keyup mousedown".split(" ")}},Me=!1;function ke(e,t){switch(e){case"keyup":return-1!==me.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"blur":return!0;default:return!1}}function Le(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var xe=!1;var Te={eventTypes:we,extractEvents:function(e,t,n,r){var i=void 0,a=void 0;if(_e)e:{switch(e){case"compositionstart":i=we.compositionStart;break e;case"compositionend":i=we.compositionEnd;break e;case"compositionupdate":i=we.compositionUpdate;break e}i=void 0}else xe?ke(e,n)&&(i=we.compositionEnd):"keydown"===e&&229===n.keyCode&&(i=we.compositionStart);return i?(ve&&"ko"!==n.locale&&(xe||i!==we.compositionStart?i===we.compositionEnd&&xe&&(a=oe()):(ie="value"in(re=r)?re.value:re.textContent,xe=!0)),i=pe.getPooled(i,t,n,r),a?i.data=a:null!==(a=Le(n))&&(i.data=a),V(i),a=i):a=null,(e=ye?function(e,t){switch(e){case"compositionend":return Le(t);case"keypress":return 32!==t.which?null:(Me=!0,be);case"textInput":return(e=t.data)===be&&Me?null:e;default:return null}}(e,n):function(e,t){if(xe)return"compositionend"===e||!_e&&ke(e,t)?(e=oe(),ae=ie=re=null,xe=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1